<?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>30091</bug_id>
          
          <creation_ts>2009-10-05 13:13:33 -0700</creation_ts>
          <short_desc>Change get... calls to latest spec</short_desc>
          <delta_ts>2009-11-26 12:22:39 -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>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Marrin">cmarrin</reporter>
          <assigned_to name="Kenneth Russell">kbr</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>kbr</cc>
    
    <cc>oliver</cc>
    
    <cc>petersont</cc>
    
    <cc>rlp</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>152424</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2009-10-05 13:13:33 -0700</bug_when>
    <thetext>We&apos;ve changed the get API to return &apos;any&apos; in many cases to reduce the number of call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165177</commentid>
    <comment_count>1</comment_count>
      <attachid>43541</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-11-19 19:30:57 -0800</bug_when>
    <thetext>Created attachment 43541
Proposed patch

Removed old versions of get calls on WebGLRenderingContext and added new ones per spec returning &quot;any&quot;. New code simplifies GraphicsContext3D and fixes previously unimplemented routines. Added custom JS and V8 bindings. Added exhaustive test case exercising all new code paths. Updated preexisting test cases for new APIs. Fixed preexisting bugs in WebKit&apos;s and Chrome&apos;s WebGL implementations. Cleaned up a couple of areas from recent Canvas -&gt; WebGL renaming and deleted obsolete CanvasNumberArray.

Ran WebGL layout tests in WebKit (clean) and Chrome (couple of preexisting known failures) and manual WebGL tests in both browsers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165198</commentid>
    <comment_count>2</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-11-19 21:44:19 -0800</bug_when>
    <thetext>Ken these huge patches are really hard to review, in general we only accept patches this large from people who have been involved in webkit for considerable periods (like hyatt for instance) -- could you please split this up into separate patches.

Renames should be limited as much as possible to just the rename and no other changes, they should also be done in terms of the do-webcore-rename script.

The additional mixing of tidying and the addition of new code is equally irksome, but while the renames are present it&apos;s difficult to determine how much of the refactoring is noise due to the rename vs. actual changes so the sooner we split those remaining renames out the better.  The renames should probably go into a separate bug, that blocks this one.

If you want I can do the appropriate rename-fu with do-webcore-rename</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165252</commentid>
    <comment_count>3</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-11-20 01:13:12 -0800</bug_when>
    <thetext>There aren&apos;t any renames in this patch. Three now-bogus files were deleted -- CanvasNumberArray.cpp, CanvasNumberArray.h, and CanvasNumberArray.idl. The only other cleanups in this patch were moving around of some #includes and files in the WebCore.gypi / project.pbxproj.

The rest of the changes are what were needed to implement the new semantics of the get methods. Yes, the patch is large, but it is precisely what is needed and has been very well tested. It will be very painful for me to split it up into multiple patches since in the intermediate stages some of the get methods will have the correct (new) semantics and some of them will be incorrect. This is the last large patch that will be needed to bring the WebKit WebGL implementation in line with the current spec. Please review it as is.

I will be out of the office tomorrow, Friday, November 20.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165324</commentid>
    <comment_count>4</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-11-20 09:16:36 -0800</bug_when>
    <thetext>This does look like a chunky patch.

But in all fairness, most of it does seem fairly mechanical, aside from minor prettification (like CleanupHelper). And since Ken and Chris are collaborating on this code, perhaps maybe Chris could take a look and weigh in on the patch?

I am all for small, digestible patches, but these guys did write this code, so I am willing to consider them the &quot;hyatts&quot; of WebGL in WebKit :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165341</commentid>
    <comment_count>5</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-11-20 09:56:05 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; There aren&apos;t any renames in this patch. Three now-bogus files were deleted --
&gt; CanvasNumberArray.cpp, CanvasNumberArray.h, and CanvasNumberArray.idl. The only
&gt; other cleanups in this patch were moving around of some #includes and files in
&gt; the WebCore.gypi / project.pbxproj.

Why does the removal of CanvasNumberArray* have to go in this patch?  There are no dependencies that I can see -- as far as i can tell they could be removed before, or they could be removed after this patch lands.

There is absolutely no reason for it to be part of this patch.

&gt; The rest of the changes are what were needed to implement the new semantics of
&gt; the get methods. Yes, the patch is large, but it is precisely what is needed
&gt; and has been very well tested. It will be very painful for me to split it up
&gt; into multiple patches since in the intermediate stages some of the get methods
&gt; will have the correct (new) semantics and some of them will be incorrect. This
&gt; is the last large patch that will be needed to bring the WebKit WebGL
&gt; implementation in line with the current spec. Please review it as is.
No.  At the very least you should drop the removal of CanvasNumberArray files

I&apos;m sorry if this seems harsh, but you need to understand that large patches are _not_ good.  You should always favour incremental patches over large do-everything-at-once style patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165384</commentid>
    <comment_count>6</comment_count>
      <attachid>43541</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2009-11-20 11:42:15 -0800</bug_when>
    <thetext>Comment on attachment 43541
Proposed patch

I leave the final review to Ollie, but here is my take:

&gt; Index: WebCore/WebCore.gypi
&gt; ===================================================================
&gt; --- WebCore/WebCore.gypi	(revision 51226)
&gt; +++ WebCore/WebCore.gypi	(working copy)
&gt; @@ -1271,6 +1271,20 @@
&gt;              &apos;history/HistoryItem.h&apos;,
&gt;              &apos;history/PageCache.cpp&apos;,
&gt;              &apos;history/PageCache.h&apos;,
&gt; +            &apos;html/canvas/CanvasGradient.cpp&apos;,
&gt; +            &apos;html/canvas/CanvasGradient.h&apos;,
&gt; +            &apos;html/canvas/CanvasObject.cpp&apos;,
&gt; +            &apos;html/canvas/CanvasObject.h&apos;,
&gt; +            &apos;html/canvas/CanvasPattern.cpp&apos;,
&gt; +            &apos;html/canvas/CanvasPattern.h&apos;,
&gt; +            &apos;html/canvas/CanvasPixelArray.cpp&apos;,
&gt; +            &apos;html/canvas/CanvasPixelArray.h&apos;,
&gt; +            &apos;html/canvas/CanvasRenderingContext.cpp&apos;,
&gt; +            &apos;html/canvas/CanvasRenderingContext.h&apos;,
&gt; +            &apos;html/canvas/CanvasRenderingContext2D.cpp&apos;,
&gt; +            &apos;html/canvas/CanvasRenderingContext2D.h&apos;,
&gt; +            &apos;html/canvas/CanvasStyle.cpp&apos;,
&gt; +            &apos;html/canvas/CanvasStyle.h&apos;,
&gt;              &apos;html/canvas/WebGLArray.cpp&apos;,
&gt;              &apos;html/canvas/WebGLArray.h&apos;,
&gt;              &apos;html/canvas/WebGLArrayBuffer.cpp&apos;,
&gt; @@ -1283,32 +1297,20 @@
&gt;              &apos;html/canvas/WebGLFloatArray.h&apos;,
&gt;              &apos;html/canvas/WebGLFramebuffer.cpp&apos;,
&gt;              &apos;html/canvas/WebGLFramebuffer.h&apos;,
&gt; -            &apos;html/canvas/CanvasGradient.cpp&apos;,
&gt; -            &apos;html/canvas/CanvasGradient.h&apos;,
&gt; +            &apos;html/canvas/WebGLGetInfo.cpp&apos;,
&gt; +            &apos;html/canvas/WebGLGetInfo.h&apos;,
&gt;              &apos;html/canvas/WebGLIntArray.cpp&apos;,
&gt;              &apos;html/canvas/WebGLIntArray.h&apos;,
&gt; -            &apos;html/canvas/CanvasObject.cpp&apos;,
&gt; -            &apos;html/canvas/CanvasObject.h&apos;,
&gt; -            &apos;html/canvas/CanvasPattern.cpp&apos;,
&gt; -            &apos;html/canvas/CanvasPattern.h&apos;,
&gt; -            &apos;html/canvas/CanvasPixelArray.cpp&apos;,
&gt; -            &apos;html/canvas/CanvasPixelArray.h&apos;,
&gt;              &apos;html/canvas/WebGLProgram.cpp&apos;,
&gt;              &apos;html/canvas/WebGLProgram.h&apos;,
&gt;              &apos;html/canvas/WebGLRenderbuffer.cpp&apos;,
&gt;              &apos;html/canvas/WebGLRenderbuffer.h&apos;,
&gt; -            &apos;html/canvas/CanvasRenderingContext.cpp&apos;,
&gt; -            &apos;html/canvas/CanvasRenderingContext.h&apos;,
&gt; -            &apos;html/canvas/CanvasRenderingContext2D.cpp&apos;,
&gt; -            &apos;html/canvas/CanvasRenderingContext2D.h&apos;,
&gt;              &apos;html/canvas/WebGLRenderingContext.cpp&apos;,
&gt;              &apos;html/canvas/WebGLRenderingContext.h&apos;,
&gt;              &apos;html/canvas/WebGLShader.cpp&apos;,
&gt;              &apos;html/canvas/WebGLShader.h&apos;,
&gt;              &apos;html/canvas/WebGLShortArray.cpp&apos;,
&gt;              &apos;html/canvas/WebGLShortArray.h&apos;,
&gt; -            &apos;html/canvas/CanvasStyle.cpp&apos;,
&gt; -            &apos;html/canvas/CanvasStyle.h&apos;,
&gt;              &apos;html/canvas/WebGLTexture.cpp&apos;,
&gt;              &apos;html/canvas/WebGLTexture.h&apos;,
&gt;              &apos;html/canvas/WebGLUnsignedByteArray.cpp&apos;,

There are many files being added or removed from this file that seem to have nothing to do with the patch. I think the only thing that should be in this file is the addition of WebGLGetInfo


&gt; Index: WebCore/WebCore.xcodeproj/project.pbxproj
&gt; ===================================================================
&gt; --- WebCore/WebCore.xcodeproj/project.pbxproj	(revision 51226)
&gt; +++ WebCore/WebCore.xcodeproj/project.pbxproj	(working copy)
&gt; @@ -1199,6 +1199,8 @@
&gt;  		65DF323C09D1DE65000BE325 /* JSCanvasPattern.h in Headers */ = {isa = PBXBuildFile; fileRef = 65DF323609D1DE65000BE325 /* JSCanvasPattern.h */; };
&gt;  		65DF326109D1E199000BE325 /* UserAgentStyleSheetsData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 656581AF09D14EE6000E61D7 /* UserAgentStyleSheetsData.cpp */; };
&gt;  		65FEA86909833ADE00BED4AB /* Page.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 65FEA86809833ADE00BED4AB /* Page.cpp */; };
&gt; +		6E51D61C10B23CC200FDE74A /* WebGLGetInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6E51D61A10B23CC200FDE74A /* WebGLGetInfo.cpp */; };
&gt; +		6E51D61D10B23CC200FDE74A /* WebGLGetInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E51D61B10B23CC200FDE74A /* WebGLGetInfo.h */; };
&gt;  		72626E020EF022FE00A07E20 /* FontFastPath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 72626E010EF022FE00A07E20 /* FontFastPath.cpp */; };
&gt;  		754133A8102E00E800075D00 /* InspectorTimelineAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = 754133A7102E00E800075D00 /* InspectorTimelineAgent.h */; };
&gt;  		754133AA102E00F400075D00 /* InspectorTimelineAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 754133A9102E00F400075D00 /* InspectorTimelineAgent.cpp */; };
&gt; @@ -6507,6 +6509,8 @@
&gt;  		65DF323609D1DE65000BE325 /* JSCanvasPattern.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSCanvasPattern.h; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt;  		65F80697054D9F86008BF776 /* BlockExceptions.mm */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = BlockExceptions.mm; sourceTree = &quot;&lt;group&gt;&quot;; tabWidth = 8; usesTabs = 0; };
&gt;  		65FEA86809833ADE00BED4AB /* Page.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Page.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt; +		6E51D61A10B23CC200FDE74A /* WebGLGetInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebGLGetInfo.cpp; path = canvas/WebGLGetInfo.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt; +		6E51D61B10B23CC200FDE74A /* WebGLGetInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebGLGetInfo.h; path = canvas/WebGLGetInfo.h; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt;  		72626E010EF022FE00A07E20 /* FontFastPath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FontFastPath.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt;  		754133A7102E00E800075D00 /* InspectorTimelineAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorTimelineAgent.h; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt;  		754133A9102E00F400075D00 /* InspectorTimelineAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorTimelineAgent.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt; @@ -10620,6 +10624,25 @@
&gt;  		49484FAE102CF01E00187DD3 /* canvas */ = {
&gt;  			isa = PBXGroup;
&gt;  			children = (
&gt; +				49484FB3102CF23C00187DD3 /* CanvasGradient.cpp */,
&gt; +				49484FB4102CF23C00187DD3 /* CanvasGradient.h */,
&gt; +				49484FB5102CF23C00187DD3 /* CanvasGradient.idl */,
&gt; +				49C7B9B41042D32F0009D447 /* CanvasObject.cpp */,
&gt; +				49C7B9B51042D32F0009D447 /* CanvasObject.h */,
&gt; +				49484FB6102CF23C00187DD3 /* CanvasPattern.cpp */,
&gt; +				49484FB7102CF23C00187DD3 /* CanvasPattern.h */,
&gt; +				49484FB8102CF23C00187DD3 /* CanvasPattern.idl */,
&gt; +				49484FB9102CF23C00187DD3 /* CanvasPixelArray.cpp */,
&gt; +				49484FBA102CF23C00187DD3 /* CanvasPixelArray.h */,
&gt; +				49484FBB102CF23C00187DD3 /* CanvasPixelArray.idl */,
&gt; +				49C7B9BC1042D32F0009D447 /* CanvasRenderingContext.cpp */,
&gt; +				49C7B9BD1042D32F0009D447 /* CanvasRenderingContext.h */,
&gt; +				49C7B9BE1042D32F0009D447 /* CanvasRenderingContext.idl */,
&gt; +				49484FBC102CF23C00187DD3 /* CanvasRenderingContext2D.cpp */,
&gt; +				49484FBD102CF23C00187DD3 /* CanvasRenderingContext2D.h */,
&gt; +				49484FBE102CF23C00187DD3 /* CanvasRenderingContext2D.idl */,
&gt; +				49484FBF102CF23C00187DD3 /* CanvasStyle.cpp */,
&gt; +				49484FC0102CF23C00187DD3 /* CanvasStyle.h */,

Same here. Why all these added files?


&gt; Index: WebCore/bindings/js/JSCanvasNumberArrayCustom.cpp
&gt; ===================================================================
&gt; --- WebCore/bindings/js/JSCanvasNumberArrayCustom.cpp	(revision 51226)
&gt; +++ WebCore/bindings/js/JSCanvasNumberArrayCustom.cpp	(working copy)
...
&gt; Index: WebCore/html/canvas/CanvasNumberArray.cpp
&gt; ===================================================================
&gt; --- WebCore/html/canvas/CanvasNumberArray.cpp	(revision 51226)
&gt; +++ WebCore/html/canvas/CanvasNumberArray.cpp	(working copy)
...
&gt; -#endif // ENABLE(3D_CANVAS)
&gt; Index: WebCore/html/canvas/CanvasNumberArray.h
&gt; ===================================================================
&gt; --- WebCore/html/canvas/CanvasNumberArray.h	(revision 51226)
&gt; +++ WebCore/html/canvas/CanvasNumberArray.h	(working copy)
...
&gt; Index: WebCore/html/canvas/CanvasNumberArray.idl
&gt; ===================================================================
&gt; --- WebCore/html/canvas/CanvasNumberArray.idl	(revision 51226)
&gt; +++ WebCore/html/canvas/CanvasNumberArray.idl	(working copy)

These files are unrelated to this patch


&gt; Index: WebCore/html/canvas/CanvasObject.cpp
&gt; ===================================================================
&gt; --- WebCore/html/canvas/CanvasObject.cpp	(revision 51226)
&gt; +++ WebCore/html/canvas/CanvasObject.cpp	(working copy)
&gt; @@ -34,6 +34,7 @@ namespace WebCore {
&gt;      
&gt;  CanvasObject::CanvasObject(WebGLRenderingContext* context)
&gt;      : m_object(0)
&gt; +    , m_shouldDeleteObject(true)
&gt;      , m_context(context)
&gt;  {
&gt;  }
&gt; @@ -44,24 +45,26 @@ CanvasObject::~CanvasObject()
&gt;          m_context-&gt;removeObject(this);
&gt;  }
&gt;  
&gt; -void CanvasObject::setObject(Platform3DObject object)
&gt; +void CanvasObject::setObject(Platform3DObject object, bool shouldDeleteObject)
&gt;  {
&gt;      if (object == m_object)
&gt;          return;
&gt; -        
&gt;      deleteObject();
&gt;      m_object = object;
&gt; +    m_shouldDeleteObject = shouldDeleteObject;
&gt;  }

I&apos;d like to see some comment about why shouldDeleteObject is needed.


&gt;  void WebGLBuffer::_deleteObject(Platform3DObject object)
&gt; Index: WebCore/html/canvas/WebGLBuffer.h
&gt; ===================================================================
&gt; --- WebCore/html/canvas/WebGLBuffer.h	(revision 51226)
&gt; +++ WebCore/html/canvas/WebGLBuffer.h	(working copy)
&gt; @@ -32,19 +32,24 @@
&gt;  #include &lt;wtf/RefCounted.h&gt;
&gt;  
&gt;  namespace WebCore {
&gt; -    
&gt; +

It would make the patch less confusing if you avoided deleting whitespace like this


&gt; Index: WebCore/html/canvas/WebGLFramebuffer.cpp
&gt; ===================================================================
&gt; --- WebCore/html/canvas/WebGLFramebuffer.cpp	(revision 51226)
&gt; +++ WebCore/html/canvas/WebGLFramebuffer.cpp	(working copy)
&gt; @@ -40,7 +40,7 @@ PassRefPtr&lt;WebGLFramebuffer&gt; WebGLFrameb
&gt;  WebGLFramebuffer::WebGLFramebuffer(WebGLRenderingContext* ctx)
&gt;      : CanvasObject(ctx)
&gt;  {
&gt; -    setObject(context()-&gt;graphicsContext3D()-&gt;createFramebuffer());
&gt; +    setObject(context()-&gt;graphicsContext3D()-&gt;createFramebuffer(), true);
&gt;  }

A default value on the second parameter would avoid these changes.


&gt;  
&gt;  void WebGLFramebuffer::_deleteObject(Platform3DObject object)
&gt; Index: WebCore/html/canvas/WebGLGetInfo.cpp
&gt; ===================================================================
&gt; 
&gt; Property changes on: WebCore/html/canvas/WebGLGetInfo.cpp
&gt; ___________________________________________________________________
&gt; Name: svn:eol-style
&gt;    + LF

Why is this property needed? (elsewhere as well)


&gt; Index: WebCore/html/canvas/WebGLRenderingContext.cpp
&gt; ===================================================================
&gt; --- WebCore/html/canvas/WebGLRenderingContext.cpp	(revision 51226)
&gt; +++ WebCore/html/canvas/WebGLRenderingContext.cpp	(working copy)
&gt; @@ -39,17 +39,210 @@
&gt;  #include &quot;HTMLCanvasElement.h&quot;
&gt;  #include &quot;HTMLImageElement.h&quot;
&gt;  #include &quot;ImageBuffer.h&quot;
&gt; +#include &quot;NotImplemented.h&quot;
&gt;  #include &quot;RenderBox.h&quot;
&gt;  #include &quot;RenderLayer.h&quot;
&gt;  
&gt;  namespace WebCore {
&gt;  
&gt; +// OpenGL constants needed for bindBuffer (and, implicitly, getParameter)
&gt; +#define GL_ARRAY_BUFFER                     0x8892
&gt; +#define GL_ELEMENT_ARRAY_BUFFER             0x8893
&gt; +
&gt; +// OpenGL constants needed for bindFramebuffer (and, implicitly, getParameter)
&gt; +#define GL_FRAMEBUFFER                      0x8D40

I have a patch (https://bugs.webkit.org/show_bug.cgi?id=31239) which places all these into an enum in GraphicsContext3D.h. That&apos;s where they should go, so please lift that code instead.


&gt; +class CleanupHelper {
&gt; +public:
&gt; +    CleanupHelper(WebGLRenderingContext* context,
&gt; +                  bool changed)
&gt; +        : m_context(context)
&gt; +        , m_changed(changed)
&gt; +    {
&gt; +    }
&gt; +
&gt; +    ~CleanupHelper()
&gt; +    {
&gt; +        m_context-&gt;cleanupAfterGraphicsCall(m_changed);
&gt; +    }

This is a nice idea. But it concerns me because it will take local storage in every function and will generally be more expensive in every call. Plus a change like this doesn&apos;t belong in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165543</commentid>
    <comment_count>7</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-11-20 19:03:48 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt;  At the very least you should drop the removal of CanvasNumberArray files

OK, I&apos;ll revert these files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165551</commentid>
    <comment_count>8</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-11-20 19:18:59 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 43541 [details])
&gt; I leave the final review to Ollie, but here is my take:
&gt; 
&gt; &gt; Index: WebCore/WebCore.gypi
&gt; &gt; ===================================================================
&gt; &gt; --- WebCore/WebCore.gypi	(revision 51226)
&gt; &gt; +++ WebCore/WebCore.gypi	(working copy)
&gt; &gt; @@ -1271,6 +1271,20 @@
&gt; &gt;              &apos;history/HistoryItem.h&apos;,
&gt; &gt;              &apos;history/PageCache.cpp&apos;,
&gt; &gt;              &apos;history/PageCache.h&apos;,
&gt; &gt; +            &apos;html/canvas/CanvasGradient.cpp&apos;,
&gt; &gt; +            &apos;html/canvas/CanvasGradient.h&apos;,
&gt; &gt; +            &apos;html/canvas/CanvasObject.cpp&apos;,
&gt; &gt; +            &apos;html/canvas/CanvasObject.h&apos;,
&gt; &gt; +            &apos;html/canvas/CanvasPattern.cpp&apos;,
&gt; &gt; +            &apos;html/canvas/CanvasPattern.h&apos;,
&gt; &gt; +            &apos;html/canvas/CanvasPixelArray.cpp&apos;,
&gt; &gt; +            &apos;html/canvas/CanvasPixelArray.h&apos;,
&gt; &gt; +            &apos;html/canvas/CanvasRenderingContext.cpp&apos;,
&gt; &gt; +            &apos;html/canvas/CanvasRenderingContext.h&apos;,
&gt; &gt; +            &apos;html/canvas/CanvasRenderingContext2D.cpp&apos;,
&gt; &gt; +            &apos;html/canvas/CanvasRenderingContext2D.h&apos;,
&gt; &gt; +            &apos;html/canvas/CanvasStyle.cpp&apos;,
&gt; &gt; +            &apos;html/canvas/CanvasStyle.h&apos;,
&gt; &gt;              &apos;html/canvas/WebGLArray.cpp&apos;,
&gt; &gt;              &apos;html/canvas/WebGLArray.h&apos;,
&gt; &gt;              &apos;html/canvas/WebGLArrayBuffer.cpp&apos;,
&gt; &gt; @@ -1283,32 +1297,20 @@
&gt; &gt;              &apos;html/canvas/WebGLFloatArray.h&apos;,
&gt; &gt;              &apos;html/canvas/WebGLFramebuffer.cpp&apos;,
&gt; &gt;              &apos;html/canvas/WebGLFramebuffer.h&apos;,
&gt; &gt; -            &apos;html/canvas/CanvasGradient.cpp&apos;,
&gt; &gt; -            &apos;html/canvas/CanvasGradient.h&apos;,
&gt; &gt; +            &apos;html/canvas/WebGLGetInfo.cpp&apos;,
&gt; &gt; +            &apos;html/canvas/WebGLGetInfo.h&apos;,
&gt; &gt;              &apos;html/canvas/WebGLIntArray.cpp&apos;,
&gt; &gt;              &apos;html/canvas/WebGLIntArray.h&apos;,
&gt; &gt; -            &apos;html/canvas/CanvasObject.cpp&apos;,
&gt; &gt; -            &apos;html/canvas/CanvasObject.h&apos;,
&gt; &gt; -            &apos;html/canvas/CanvasPattern.cpp&apos;,
&gt; &gt; -            &apos;html/canvas/CanvasPattern.h&apos;,
&gt; &gt; -            &apos;html/canvas/CanvasPixelArray.cpp&apos;,
&gt; &gt; -            &apos;html/canvas/CanvasPixelArray.h&apos;,
&gt; &gt;              &apos;html/canvas/WebGLProgram.cpp&apos;,
&gt; &gt;              &apos;html/canvas/WebGLProgram.h&apos;,
&gt; &gt;              &apos;html/canvas/WebGLRenderbuffer.cpp&apos;,
&gt; &gt;              &apos;html/canvas/WebGLRenderbuffer.h&apos;,
&gt; &gt; -            &apos;html/canvas/CanvasRenderingContext.cpp&apos;,
&gt; &gt; -            &apos;html/canvas/CanvasRenderingContext.h&apos;,
&gt; &gt; -            &apos;html/canvas/CanvasRenderingContext2D.cpp&apos;,
&gt; &gt; -            &apos;html/canvas/CanvasRenderingContext2D.h&apos;,
&gt; &gt;              &apos;html/canvas/WebGLRenderingContext.cpp&apos;,
&gt; &gt;              &apos;html/canvas/WebGLRenderingContext.h&apos;,
&gt; &gt;              &apos;html/canvas/WebGLShader.cpp&apos;,
&gt; &gt;              &apos;html/canvas/WebGLShader.h&apos;,
&gt; &gt;              &apos;html/canvas/WebGLShortArray.cpp&apos;,
&gt; &gt;              &apos;html/canvas/WebGLShortArray.h&apos;,
&gt; &gt; -            &apos;html/canvas/CanvasStyle.cpp&apos;,
&gt; &gt; -            &apos;html/canvas/CanvasStyle.h&apos;,
&gt; &gt;              &apos;html/canvas/WebGLTexture.cpp&apos;,
&gt; &gt;              &apos;html/canvas/WebGLTexture.h&apos;,
&gt; &gt;              &apos;html/canvas/WebGLUnsignedByteArray.cpp&apos;,
&gt; 
&gt; There are many files being added or removed from this file that seem to have
&gt; nothing to do with the patch. I think the only thing that should be in this
&gt; file is the addition of WebGLGetInfo

All I was doing was re-alphabetizing the files after the Canvas -&gt; WebGL rename, but I&apos;ll undo these changes.

&gt; &gt; Index: WebCore/WebCore.xcodeproj/project.pbxproj
&gt; &gt; ===================================================================
&gt; &gt; --- WebCore/WebCore.xcodeproj/project.pbxproj	(revision 51226)
&gt; &gt; +++ WebCore/WebCore.xcodeproj/project.pbxproj	(working copy)
&gt; &gt; @@ -1199,6 +1199,8 @@
&gt; &gt;  		65DF323C09D1DE65000BE325 /* JSCanvasPattern.h in Headers */ = {isa = PBXBuildFile; fileRef = 65DF323609D1DE65000BE325 /* JSCanvasPattern.h */; };
&gt; &gt;  		65DF326109D1E199000BE325 /* UserAgentStyleSheetsData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 656581AF09D14EE6000E61D7 /* UserAgentStyleSheetsData.cpp */; };
&gt; &gt;  		65FEA86909833ADE00BED4AB /* Page.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 65FEA86809833ADE00BED4AB /* Page.cpp */; };
&gt; &gt; +		6E51D61C10B23CC200FDE74A /* WebGLGetInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6E51D61A10B23CC200FDE74A /* WebGLGetInfo.cpp */; };
&gt; &gt; +		6E51D61D10B23CC200FDE74A /* WebGLGetInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E51D61B10B23CC200FDE74A /* WebGLGetInfo.h */; };
&gt; &gt;  		72626E020EF022FE00A07E20 /* FontFastPath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 72626E010EF022FE00A07E20 /* FontFastPath.cpp */; };
&gt; &gt;  		754133A8102E00E800075D00 /* InspectorTimelineAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = 754133A7102E00E800075D00 /* InspectorTimelineAgent.h */; };
&gt; &gt;  		754133AA102E00F400075D00 /* InspectorTimelineAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 754133A9102E00F400075D00 /* InspectorTimelineAgent.cpp */; };
&gt; &gt; @@ -6507,6 +6509,8 @@
&gt; &gt;  		65DF323609D1DE65000BE325 /* JSCanvasPattern.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSCanvasPattern.h; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt; &gt;  		65F80697054D9F86008BF776 /* BlockExceptions.mm */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = BlockExceptions.mm; sourceTree = &quot;&lt;group&gt;&quot;; tabWidth = 8; usesTabs = 0; };
&gt; &gt;  		65FEA86809833ADE00BED4AB /* Page.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Page.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt; &gt; +		6E51D61A10B23CC200FDE74A /* WebGLGetInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebGLGetInfo.cpp; path = canvas/WebGLGetInfo.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt; &gt; +		6E51D61B10B23CC200FDE74A /* WebGLGetInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebGLGetInfo.h; path = canvas/WebGLGetInfo.h; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt; &gt;  		72626E010EF022FE00A07E20 /* FontFastPath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FontFastPath.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt; &gt;  		754133A7102E00E800075D00 /* InspectorTimelineAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorTimelineAgent.h; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt; &gt;  		754133A9102E00F400075D00 /* InspectorTimelineAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorTimelineAgent.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt; &gt; @@ -10620,6 +10624,25 @@
&gt; &gt;  		49484FAE102CF01E00187DD3 /* canvas */ = {
&gt; &gt;  			isa = PBXGroup;
&gt; &gt;  			children = (
&gt; &gt; +				49484FB3102CF23C00187DD3 /* CanvasGradient.cpp */,
&gt; &gt; +				49484FB4102CF23C00187DD3 /* CanvasGradient.h */,
&gt; &gt; +				49484FB5102CF23C00187DD3 /* CanvasGradient.idl */,
&gt; &gt; +				49C7B9B41042D32F0009D447 /* CanvasObject.cpp */,
&gt; &gt; +				49C7B9B51042D32F0009D447 /* CanvasObject.h */,
&gt; &gt; +				49484FB6102CF23C00187DD3 /* CanvasPattern.cpp */,
&gt; &gt; +				49484FB7102CF23C00187DD3 /* CanvasPattern.h */,
&gt; &gt; +				49484FB8102CF23C00187DD3 /* CanvasPattern.idl */,
&gt; &gt; +				49484FB9102CF23C00187DD3 /* CanvasPixelArray.cpp */,
&gt; &gt; +				49484FBA102CF23C00187DD3 /* CanvasPixelArray.h */,
&gt; &gt; +				49484FBB102CF23C00187DD3 /* CanvasPixelArray.idl */,
&gt; &gt; +				49C7B9BC1042D32F0009D447 /* CanvasRenderingContext.cpp */,
&gt; &gt; +				49C7B9BD1042D32F0009D447 /* CanvasRenderingContext.h */,
&gt; &gt; +				49C7B9BE1042D32F0009D447 /* CanvasRenderingContext.idl */,
&gt; &gt; +				49484FBC102CF23C00187DD3 /* CanvasRenderingContext2D.cpp */,
&gt; &gt; +				49484FBD102CF23C00187DD3 /* CanvasRenderingContext2D.h */,
&gt; &gt; +				49484FBE102CF23C00187DD3 /* CanvasRenderingContext2D.idl */,
&gt; &gt; +				49484FBF102CF23C00187DD3 /* CanvasStyle.cpp */,
&gt; &gt; +				49484FC0102CF23C00187DD3 /* CanvasStyle.h */,
&gt; 
&gt; Same here. Why all these added files?

Just re-alphabetizing. I&apos;ll undo these changes.

&gt; &gt; Index: WebCore/bindings/js/JSCanvasNumberArrayCustom.cpp
&gt; &gt; ===================================================================
&gt; &gt; --- WebCore/bindings/js/JSCanvasNumberArrayCustom.cpp	(revision 51226)
&gt; &gt; +++ WebCore/bindings/js/JSCanvasNumberArrayCustom.cpp	(working copy)
&gt; ...
&gt; &gt; Index: WebCore/html/canvas/CanvasNumberArray.cpp
&gt; &gt; ===================================================================
&gt; &gt; --- WebCore/html/canvas/CanvasNumberArray.cpp	(revision 51226)
&gt; &gt; +++ WebCore/html/canvas/CanvasNumberArray.cpp	(working copy)
&gt; ...
&gt; &gt; -#endif // ENABLE(3D_CANVAS)
&gt; &gt; Index: WebCore/html/canvas/CanvasNumberArray.h
&gt; &gt; ===================================================================
&gt; &gt; --- WebCore/html/canvas/CanvasNumberArray.h	(revision 51226)
&gt; &gt; +++ WebCore/html/canvas/CanvasNumberArray.h	(working copy)
&gt; ...
&gt; &gt; Index: WebCore/html/canvas/CanvasNumberArray.idl
&gt; &gt; ===================================================================
&gt; &gt; --- WebCore/html/canvas/CanvasNumberArray.idl	(revision 51226)
&gt; &gt; +++ WebCore/html/canvas/CanvasNumberArray.idl	(working copy)
&gt; 
&gt; These files are unrelated to this patch

I&apos;ll revert them.

&gt; &gt; Index: WebCore/html/canvas/CanvasObject.cpp
&gt; &gt; ===================================================================
&gt; &gt; --- WebCore/html/canvas/CanvasObject.cpp	(revision 51226)
&gt; &gt; +++ WebCore/html/canvas/CanvasObject.cpp	(working copy)
&gt; &gt; @@ -34,6 +34,7 @@ namespace WebCore {
&gt; &gt;      
&gt; &gt;  CanvasObject::CanvasObject(WebGLRenderingContext* context)
&gt; &gt;      : m_object(0)
&gt; &gt; +    , m_shouldDeleteObject(true)
&gt; &gt;      , m_context(context)
&gt; &gt;  {
&gt; &gt;  }
&gt; &gt; @@ -44,24 +45,26 @@ CanvasObject::~CanvasObject()
&gt; &gt;          m_context-&gt;removeObject(this);
&gt; &gt;  }
&gt; &gt;  
&gt; &gt; -void CanvasObject::setObject(Platform3DObject object)
&gt; &gt; +void CanvasObject::setObject(Platform3DObject object, bool shouldDeleteObject)
&gt; &gt;  {
&gt; &gt;      if (object == m_object)
&gt; &gt;          return;
&gt; &gt; -        
&gt; &gt;      deleteObject();
&gt; &gt;      m_object = object;
&gt; &gt; +    m_shouldDeleteObject = shouldDeleteObject;
&gt; &gt;  }
&gt; 
&gt; I&apos;d like to see some comment about why shouldDeleteObject is needed.

I&apos;ll add a comment.

&gt; &gt;  void WebGLBuffer::_deleteObject(Platform3DObject object)
&gt; &gt; Index: WebCore/html/canvas/WebGLBuffer.h
&gt; &gt; ===================================================================
&gt; &gt; --- WebCore/html/canvas/WebGLBuffer.h	(revision 51226)
&gt; &gt; +++ WebCore/html/canvas/WebGLBuffer.h	(working copy)
&gt; &gt; @@ -32,19 +32,24 @@
&gt; &gt;  #include &lt;wtf/RefCounted.h&gt;
&gt; &gt;  
&gt; &gt;  namespace WebCore {
&gt; &gt; -    
&gt; &gt; +
&gt; 
&gt; It would make the patch less confusing if you avoided deleting whitespace like
&gt; this

I&apos;ll undo the whitespace changes.

&gt; &gt; Index: WebCore/html/canvas/WebGLFramebuffer.cpp
&gt; &gt; ===================================================================
&gt; &gt; --- WebCore/html/canvas/WebGLFramebuffer.cpp	(revision 51226)
&gt; &gt; +++ WebCore/html/canvas/WebGLFramebuffer.cpp	(working copy)
&gt; &gt; @@ -40,7 +40,7 @@ PassRefPtr&lt;WebGLFramebuffer&gt; WebGLFrameb
&gt; &gt;  WebGLFramebuffer::WebGLFramebuffer(WebGLRenderingContext* ctx)
&gt; &gt;      : CanvasObject(ctx)
&gt; &gt;  {
&gt; &gt; -    setObject(context()-&gt;graphicsContext3D()-&gt;createFramebuffer());
&gt; &gt; +    setObject(context()-&gt;graphicsContext3D()-&gt;createFramebuffer(), true);
&gt; &gt;  }
&gt; 
&gt; A default value on the second parameter would avoid these changes.

I thought it would be better to have the parameter more explicit, but I&apos;ll add a default of true.

&gt; &gt;  void WebGLFramebuffer::_deleteObject(Platform3DObject object)
&gt; &gt; Index: WebCore/html/canvas/WebGLGetInfo.cpp
&gt; &gt; ===================================================================
&gt; &gt; 
&gt; &gt; Property changes on: WebCore/html/canvas/WebGLGetInfo.cpp
&gt; &gt; ___________________________________________________________________
&gt; &gt; Name: svn:eol-style
&gt; &gt;    + LF
&gt; 
&gt; Why is this property needed? (elsewhere as well)

I have this set in my Subversion properties for the Chromium coding guidelines. I&apos;ll remove it.

&gt; &gt; Index: WebCore/html/canvas/WebGLRenderingContext.cpp
&gt; &gt; ===================================================================
&gt; &gt; --- WebCore/html/canvas/WebGLRenderingContext.cpp	(revision 51226)
&gt; &gt; +++ WebCore/html/canvas/WebGLRenderingContext.cpp	(working copy)
&gt; &gt; @@ -39,17 +39,210 @@
&gt; &gt;  #include &quot;HTMLCanvasElement.h&quot;
&gt; &gt;  #include &quot;HTMLImageElement.h&quot;
&gt; &gt;  #include &quot;ImageBuffer.h&quot;
&gt; &gt; +#include &quot;NotImplemented.h&quot;
&gt; &gt;  #include &quot;RenderBox.h&quot;
&gt; &gt;  #include &quot;RenderLayer.h&quot;
&gt; &gt;  
&gt; &gt;  namespace WebCore {
&gt; &gt;  
&gt; &gt; +// OpenGL constants needed for bindBuffer (and, implicitly, getParameter)
&gt; &gt; +#define GL_ARRAY_BUFFER                     0x8892
&gt; &gt; +#define GL_ELEMENT_ARRAY_BUFFER             0x8893
&gt; &gt; +
&gt; &gt; +// OpenGL constants needed for bindFramebuffer (and, implicitly, getParameter)
&gt; &gt; +#define GL_FRAMEBUFFER                      0x8D40
&gt; 
&gt; I have a patch (https://bugs.webkit.org/show_bug.cgi?id=31239) which places all
&gt; these into an enum in GraphicsContext3D.h. That&apos;s where they should go, so
&gt; please lift that code instead.

I&apos;ll do that.

&gt; &gt; +class CleanupHelper {
&gt; &gt; +public:
&gt; &gt; +    CleanupHelper(WebGLRenderingContext* context,
&gt; &gt; +                  bool changed)
&gt; &gt; +        : m_context(context)
&gt; &gt; +        , m_changed(changed)
&gt; &gt; +    {
&gt; &gt; +    }
&gt; &gt; +
&gt; &gt; +    ~CleanupHelper()
&gt; &gt; +    {
&gt; &gt; +        m_context-&gt;cleanupAfterGraphicsCall(m_changed);
&gt; &gt; +    }
&gt; 
&gt; This is a nice idea. But it concerns me because it will take local storage in
&gt; every function and will generally be more expensive in every call. Plus a
&gt; change like this doesn&apos;t belong in this patch.

This is an essential part of the patch. Without it all of the get routines are significantly more complex and error-prone since they can not just return a value as their last statement. The local storage requirements, if the compiler doesn&apos;t completely eliminate them, are negligible and the cost is exactly the same as the previous code structure. Please let&apos;s leave this as is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165564</commentid>
    <comment_count>9</comment_count>
      <attachid>43641</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-11-20 20:41:08 -0800</bug_when>
    <thetext>Created attachment 43641
Revised patch

Addressed all review feedback above. See ChangeLogs for revised descriptions. Re-tested WebKit and Chromium.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165875</commentid>
    <comment_count>10</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-11-23 10:17:29 -0800</bug_when>
    <thetext>Any comments on the revised patch? Would like to land this to start updating demos.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165879</commentid>
    <comment_count>11</comment_count>
      <attachid>43641</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-11-23 10:41:55 -0800</bug_when>
    <thetext>Comment on attachment 43641
Revised patch

The WebGLGetInfo::Type enum does not match the webkit style guidelines -- http://webkit.org/coding/coding-style.html -- They should be camel cased, with Type as a prefix rather than T_

I don&apos;t like the CleanupHelper class changes -- i believe they can be made in an independent patch the preceeds the main fix.  Currently there is a lot of noise due to your updating every cleanupAfterGraphicsCall call site despite those sites not actually being involved in what the patch is meant to be doing.

I really like the changes to GraphicsContext3D -- anything that removes DOM objects from the platform layer is a good thing.  It&apos;s something of a mistake that they were there to begin with.

I&apos;d like to make those methods that depend on WebGLGetInfo to be automatically generated, but i believe doing so would be to involved to require you to do.

Unfortunately you&apos;ll have to resolve the two issues i mentioned before i can r+ this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165889</commentid>
    <comment_count>12</comment_count>
      <attachid>43722</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-11-23 11:31:18 -0800</bug_when>
    <thetext>Created attachment 43722
Revised patch

Changed WebGLGetInfo enums to camel case. Removed use of CleanupHelper from all non-get methods. Rebuilt and retested WebKit and Chromium.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165892</commentid>
    <comment_count>13</comment_count>
      <attachid>43722</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-11-23 11:42:42 -0800</bug_when>
    <thetext>Comment on attachment 43722
Revised patch

r=me, only concern is that the more i think about it, the less i like the name CleanupHelper -- WebGLStateRestorer maybe?  I&apos;d like the WebGL prefix at least so it&apos;s not just sitting around with the generic &quot;CleanupHelper&quot; name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165910</commentid>
    <comment_count>14</comment_count>
      <attachid>43728</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-11-23 13:25:11 -0800</bug_when>
    <thetext>Created attachment 43728
Revised patch

Renamed CleanupHelper to WebGLStateRestorer as suggested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165912</commentid>
    <comment_count>15</comment_count>
      <attachid>43728</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-11-23 13:26:35 -0800</bug_when>
    <thetext>Comment on attachment 43728
Revised patch

Cheers Ken :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165925</commentid>
    <comment_count>16</comment_count>
      <attachid>43728</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-23 13:52:30 -0800</bug_when>
    <thetext>Comment on attachment 43728
Revised patch

Rejecting patch 43728 from commit-queue.

Failed to run &quot;[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--quiet&apos;, &apos;--exit-after-n-failures=1&apos;]&quot; exit_code: 1
Running build-dumprendertree
Running tests from /Users/eseidel/Projects/CommitQueue/LayoutTests
Testing 11657 test cases.
fast/canvas/webgl/gl-object-get-calls.html -&gt; failed

Exiting early after 1 failures. 4967 tests run.
85.57s total testing time

4966 test cases (99%) succeeded
1 test case (&lt;1%) had incorrect layout
1 test case (&lt;1%) had stderr output</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165927</commentid>
    <comment_count>17</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-11-23 13:59:39 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 43728 [details])
&gt; Rejecting patch 43728 from commit-queue.
&gt; 
&gt; Failed to run &quot;[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;,
&gt; &apos;--quiet&apos;, &apos;--exit-after-n-failures=1&apos;]&quot; exit_code: 1
&gt; Running build-dumprendertree
&gt; Running tests from /Users/eseidel/Projects/CommitQueue/LayoutTests
&gt; Testing 11657 test cases.
&gt; fast/canvas/webgl/gl-object-get-calls.html -&gt; failed
&gt; 
&gt; Exiting early after 1 failures. 4967 tests run.
&gt; 85.57s total testing time
&gt; 
&gt; 4966 test cases (99%) succeeded
&gt; 1 test case (&lt;1%) had incorrect layout
&gt; 1 test case (&lt;1%) had stderr output

How can I get more information about why this patch failed the commit queue? This test is one whose expected output is changed by this patch. I&apos;ve run it locally and it works fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165929</commentid>
    <comment_count>18</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-11-23 14:02:27 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #16)
&gt; &gt; (From update of attachment 43728 [details] [details])
&gt; &gt; Rejecting patch 43728 from commit-queue.
&gt; &gt; 
&gt; &gt; Failed to run &quot;[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;,
&gt; &gt; &apos;--quiet&apos;, &apos;--exit-after-n-failures=1&apos;]&quot; exit_code: 1
&gt; &gt; Running build-dumprendertree
&gt; &gt; Running tests from /Users/eseidel/Projects/CommitQueue/LayoutTests
&gt; &gt; Testing 11657 test cases.
&gt; &gt; fast/canvas/webgl/gl-object-get-calls.html -&gt; failed
&gt; &gt; 
&gt; &gt; Exiting early after 1 failures. 4967 tests run.
&gt; &gt; 85.57s total testing time
&gt; &gt; 
&gt; &gt; 4966 test cases (99%) succeeded
&gt; &gt; 1 test case (&lt;1%) had incorrect layout
&gt; &gt; 1 test case (&lt;1%) had stderr output
&gt; 
&gt; How can I get more information about why this patch failed the commit queue?
&gt; This test is one whose expected output is changed by this patch. I&apos;ve run it
&gt; locally and it works fine.

Oops, I misread the name of the test case. This is the new one associated with this patch. Regardless, it runs fine on my machine so I would need the stderr output from the run on the commit bot to diagnose the failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165930</commentid>
    <comment_count>19</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-11-23 14:03:55 -0800</bug_when>
    <thetext>&gt; &gt; How can I get more information about why this patch failed the commit queue?
&gt; &gt; This test is one whose expected output is changed by this patch. I&apos;ve run it
&gt; &gt; locally and it works fine.
&gt; 
&gt; Oops, I misread the name of the test case. This is the new one associated with
&gt; this patch. Regardless, it runs fine on my machine so I would need the stderr
&gt; output from the run on the commit bot to diagnose the failure.

I&apos;d recommend talking to eric seidel</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165957</commentid>
    <comment_count>20</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-11-23 16:01:22 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; &gt; &gt; How can I get more information about why this patch failed the commit queue?
&gt; &gt; &gt; This test is one whose expected output is changed by this patch. I&apos;ve run it
&gt; &gt; &gt; locally and it works fine.
&gt; &gt; 
&gt; &gt; Oops, I misread the name of the test case. This is the new one associated with
&gt; &gt; this patch. Regardless, it runs fine on my machine so I would need the stderr
&gt; &gt; output from the run on the commit bot to diagnose the failure.
&gt; 
&gt; I&apos;d recommend talking to eric seidel

Emailed him; still waiting for reply.

I&apos;ve run this test on two machines with very different graphics cards so far and it passes on both. Is there any chance that the bot didn&apos;t apply all the changes, in particular LayoutTests/fast/js/resources/js-test-pre.js?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165959</commentid>
    <comment_count>21</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-11-23 16:04:51 -0800</bug_when>
    <thetext>&gt; Emailed him; still waiting for reply.

I think he&apos;s on an airplane.  You can try committing and see what the buildbot thinks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165965</commentid>
    <comment_count>22</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-11-23 16:55:58 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; &gt; Emailed him; still waiting for reply.
&gt; 
&gt; I think he&apos;s on an airplane.  You can try committing and see what the buildbot
&gt; thinks.

Oliver, Chris, what would you think about landing this patch manually?

I certainly don&apos;t want to introduce a failing layout test but we really need these API changes in place to finalize demos for the initial public release of the spec. If it turns out the layout test is failing on many machines I&apos;ll file a bug to comment out its body and adjust the expected output.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165966</commentid>
    <comment_count>23</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2009-11-23 17:00:06 -0800</bug_when>
    <thetext>I will try landing it manually. It will have to wait till tomorrow though</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165978</commentid>
    <comment_count>24</comment_count>
      <attachid>43728</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-23 19:58:00 -0800</bug_when>
    <thetext>Comment on attachment 43728
Revised patch

Sorry for the delay.  Here is the diff:

--- /tmp/layout-test-results/fast/canvas/webgl/gl-object-get-calls-expected.txt	2009-11-23 13:52:23.000000000 -0800
+++ /tmp/layout-test-results/fast/canvas/webgl/gl-object-get-calls-actual.txt	2009-11-23 13:52:23.000000000 -0800
@@ -7,7 +7,7 @@
 PASS gl.getError() is 0
 PASS gl.getError() is 0
 PASS gl.getError() is 0
-PASS gl.checkFramebufferStatus(gl.FRAMEBUFFER) is gl.FRAMEBUFFER_COMPLETE
+FAIL gl.checkFramebufferStatus(gl.FRAMEBUFFER) should be 36053. Was 36061.
 PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE) is gl.TEXTURE
 PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME) is non-null.
 PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL) is 0

The lack of commit-queue support for uploading failure diffs is sorta covered by bug 28286.  I can look into fixing that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165981</commentid>
    <comment_count>25</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-11-23 20:06:44 -0800</bug_when>
    <thetext>Oddly that&apos;s indicating it&apos;s getting the error code FRAMEBUFFER_UNSUPPORTED from checkFramebufferStatus -- any ideas as to why that may be?

--Oliver

(In reply to comment #24)
&gt; (From update of attachment 43728 [details])
&gt; Sorry for the delay.  Here is the diff:
&gt; 
&gt; --- /tmp/layout-test-results/fast/canvas/webgl/gl-object-get-calls-expected.txt
&gt;    2009-11-23 13:52:23.000000000 -0800
&gt; +++ /tmp/layout-test-results/fast/canvas/webgl/gl-object-get-calls-actual.txt  
&gt;  2009-11-23 13:52:23.000000000 -0800
&gt; @@ -7,7 +7,7 @@
&gt;  PASS gl.getError() is 0
&gt;  PASS gl.getError() is 0
&gt;  PASS gl.getError() is 0
&gt; -PASS gl.checkFramebufferStatus(gl.FRAMEBUFFER) is gl.FRAMEBUFFER_COMPLETE
&gt; +FAIL gl.checkFramebufferStatus(gl.FRAMEBUFFER) should be 36053. Was 36061.
&gt;  PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER,
&gt; gl.COLOR_ATTACHMENT0, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE) is gl.TEXTURE
&gt;  PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER,
&gt; gl.COLOR_ATTACHMENT0, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME) is non-null.
&gt;  PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER,
&gt; gl.COLOR_ATTACHMENT0, gl.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL) is 0
&gt; 
&gt; The lack of commit-queue support for uploading failure diffs is sorta covered
&gt; by bug 28286.  I can look into fixing that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165985</commentid>
    <comment_count>26</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-11-23 20:12:11 -0800</bug_when>
    <thetext>@Eric: thanks for the diff. Fixing 28286 would be really helpful.

@Oliver: yes, I think it&apos;s because I forgot to initialize the minification and magnification filters on the framebuffer&apos;s texture to disable the use of mipmaps. I have another fix to the new code, plus merging with Chris&apos;s changes from today, and will upload a new patch shortly.

(In reply to comment #25)
&gt; Oddly that&apos;s indicating it&apos;s getting the error code FRAMEBUFFER_UNSUPPORTED
&gt; from checkFramebufferStatus -- any ideas as to why that may be?
&gt; 
&gt; --Oliver
&gt; 
&gt; (In reply to comment #24)
&gt; &gt; (From update of attachment 43728 [details] [details])
&gt; &gt; Sorry for the delay.  Here is the diff:
&gt; &gt; 
&gt; &gt; --- /tmp/layout-test-results/fast/canvas/webgl/gl-object-get-calls-expected.txt
&gt; &gt;    2009-11-23 13:52:23.000000000 -0800
&gt; &gt; +++ /tmp/layout-test-results/fast/canvas/webgl/gl-object-get-calls-actual.txt  
&gt; &gt;  2009-11-23 13:52:23.000000000 -0800
&gt; &gt; @@ -7,7 +7,7 @@
&gt; &gt;  PASS gl.getError() is 0
&gt; &gt;  PASS gl.getError() is 0
&gt; &gt;  PASS gl.getError() is 0
&gt; &gt; -PASS gl.checkFramebufferStatus(gl.FRAMEBUFFER) is gl.FRAMEBUFFER_COMPLETE
&gt; &gt; +FAIL gl.checkFramebufferStatus(gl.FRAMEBUFFER) should be 36053. Was 36061.
&gt; &gt;  PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER,
&gt; &gt; gl.COLOR_ATTACHMENT0, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE) is gl.TEXTURE
&gt; &gt;  PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER,
&gt; &gt; gl.COLOR_ATTACHMENT0, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME) is non-null.
&gt; &gt;  PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER,
&gt; &gt; gl.COLOR_ATTACHMENT0, gl.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL) is 0
&gt; &gt; 
&gt; &gt; The lack of commit-queue support for uploading failure diffs is sorta covered
&gt; &gt; by bug 28286.  I can look into fixing that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165987</commentid>
    <comment_count>27</comment_count>
      <attachid>43747</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-11-23 20:22:44 -0800</bug_when>
    <thetext>Created attachment 43747
Revised patch

Merged with WebGL changes from earlier today.

Fixed problem in new test case where minification and magnification filters on FBO&apos;s texture were not initialized. This is probably why the patch failed the commit queue the first time.

Fixed bug in bounds checking logic in WebGLRenderingContext::activeTexture uncovered by Google&apos;s WebGL demos. Made activeTexture raise DOMException per spec and actually throw an exception to prevent this kind of error from being silently squelched.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165988</commentid>
    <comment_count>28</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-11-23 20:24:17 -0800</bug_when>
    <thetext>Also rebuilt and retested WebKit and Chromium.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165989</commentid>
    <comment_count>29</comment_count>
      <attachid>43747</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-11-23 20:31:46 -0800</bug_when>
    <thetext>Comment on attachment 43747
Revised patch

Any idea what&apos;s caused the 10k change in patch size?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165991</commentid>
    <comment_count>30</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-11-23 20:37:25 -0800</bug_when>
    <thetext>(In reply to comment #29)
&gt; (From update of attachment 43747 [details])
&gt; Any idea what&apos;s caused the 10k change in patch size?

Chris incorporated the enums into GraphicsContext3D.h which I had previously copied from his patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165993</commentid>
    <comment_count>31</comment_count>
      <attachid>43747</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-11-23 20:38:58 -0800</bug_when>
    <thetext>Comment on attachment 43747
Revised patch

awesome!

Let&apos;s see if we can get this landed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165995</commentid>
    <comment_count>32</comment_count>
      <attachid>43747</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-23 20:52:37 -0800</bug_when>
    <thetext>Comment on attachment 43747
Revised patch

Rejecting patch 43747 from commit-queue.

Failed to run &quot;[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--quiet&apos;, &apos;--exit-after-n-failures=1&apos;]&quot; exit_code: 1
Running build-dumprendertree
Running tests from /Users/eseidel/Projects/CommitQueue/LayoutTests
Testing 11663 test cases.
fast/canvas/webgl/gl-object-get-calls.html -&gt; failed

Exiting early after 1 failures. 4970 tests run.
89.07s total testing time

4969 test cases (99%) succeeded
1 test case (&lt;1%) had incorrect layout
1 test case (&lt;1%) had stderr output</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165996</commentid>
    <comment_count>33</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-23 21:00:23 -0800</bug_when>
    <thetext>commit-queue shows the same exact failure diff again this time:
--- /tmp/layout-test-results/fast/canvas/webgl/gl-object-get-calls-expected.txt	2009-11-23 20:52:29.000000000 -0800
+++ /tmp/layout-test-results/fast/canvas/webgl/gl-object-get-calls-actual.txt	2009-11-23 20:52:29.000000000 -0800
@@ -7,7 +7,7 @@
 PASS gl.getError() is 0
 PASS gl.getError() is 0
 PASS gl.getError() is 0
-PASS gl.checkFramebufferStatus(gl.FRAMEBUFFER) is gl.FRAMEBUFFER_COMPLETE
+FAIL gl.checkFramebufferStatus(gl.FRAMEBUFFER) should be 36053. Was 36061.
 PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE) is gl.TEXTURE
 PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME) is non-null.
 PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL) is 0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>165999</commentid>
    <comment_count>34</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-11-23 21:54:36 -0800</bug_when>
    <thetext>My best guess at this point is that the graphics driver on the commit bots is buggy and does not support GL_DEPTH_COMPONENT16 as it must per the OpenGL spec. We&apos;ll need to work around this in the WebGL implementation, but that will probably require some iterative hacking. I propose we comment out the affected portion of the test case, update the expected file, and check in the rest of the patch, filing a follow-on bug to do this workaround and enable the rest of the test. Comments? If we&apos;re in agreement, I&apos;ll resubmit the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166147</commentid>
    <comment_count>35</comment_count>
      <attachid>43781</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-11-24 10:24:05 -0800</bug_when>
    <thetext>Created attachment 43781
Revised patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166151</commentid>
    <comment_count>36</comment_count>
      <attachid>43783</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-11-24 10:26:41 -0800</bug_when>
    <thetext>Created attachment 43783
Revised patch

Commented out portion of test case failing on commit bots and regenerated expected.txt. Will work around this in a follow-on bug. Rest of the code is unchanged.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166233</commentid>
    <comment_count>37</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2009-11-24 12:12:31 -0800</bug_when>
    <thetext>Landed: http://trac.webkit.org/changeset/51348

There were 3 problems:

1) The toJS function in JSWebGLRenderingContextCustom.cpp needed to be made
static

2) gl-get-calls.html was failing. I commented out the tests and opened
https://bugs.webkit.org/show_bug.cgi?id=31842

3) gl-object-get-calls.html will fail on some drivers (as pointed out in a
previous post), so I changed it to use DEPTH_ATTACHMENT rather than
DEPTH_ATTACHMENT16 and opened https://bugs.webkit.org/show_bug.cgi?id=31843</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166235</commentid>
    <comment_count>38</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2009-11-24 12:15:25 -0800</bug_when>
    <thetext>Ken, we collided. I landed the patch from 2009-11-23 20:22 PST. Please let me know what changes you made in the last two patches. If they have to do with the failing tests, I believe I fixed those. See the comments and the newly posted bugs and let me know if there is more you feel is needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166239</commentid>
    <comment_count>39</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-11-24 12:20:23 -0800</bug_when>
    <thetext>(In reply to comment #38)
&gt; Ken, we collided. I landed the patch from 2009-11-23 20:22 PST. Please let me
&gt; know what changes you made in the last two patches. If they have to do with the
&gt; failing tests, I believe I fixed those. See the comments and the newly posted
&gt; bugs and let me know if there is more you feel is needed.

The patch from 2009-11-24 10:24 PST was an accident.

The only difference between the one you landed and 2009-11-24 10:26 PST was the removal of the check for FRAMEBUFFER_COMPLETE in the gl-object-get-calls test. I&apos;m surprised gl-get-calls was failing; let&apos;s talk offline about which graphics card you ran on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166273</commentid>
    <comment_count>40</comment_count>
      <attachid>43783</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2009-11-24 14:18:21 -0800</bug_when>
    <thetext>Comment on attachment 43783
Revised patch

Obsoleting patch and canceling review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166775</commentid>
    <comment_count>41</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-11-26 12:22:39 -0800</bug_when>
    <thetext>Sadly the same failures we saw trying to get this landed, still occurred after the final patch was landed.  See bug 31919.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43541</attachid>
            <date>2009-11-19 19:30:57 -0800</date>
            <delta_ts>2009-11-20 20:41:08 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>get-calls.patch</filename>
            <type>text/plain</type>
            <size>259926</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MTIyNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQ1IEBACisyMDA5LTExLTE5ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBD
aGFuZ2UgZ2V0Li4uIGNhbGxzIHRvIGxhdGVzdCBzcGVjCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDA5MQorCisgICAgICAgIFJlbW92ZWQgb2xkIHZl
cnNpb25zIG9mIGdldCBjYWxscyBvbiBXZWJHTFJlbmRlcmluZ0NvbnRleHQgYW5kCisgICAgICAg
IGFkZGVkIG5ldyBvbmVzIHBlciBzcGVjIHJldHVybmluZyAiYW55Ii4gTmV3IGNvZGUgc2ltcGxp
ZmllcworICAgICAgICBHcmFwaGljc0NvbnRleHQzRCBhbmQgZml4ZXMgcHJldmlvdXNseSB1bmlt
cGxlbWVudGVkIHJvdXRpbmVzLgorICAgICAgICBBZGRlZCBjdXN0b20gSlMgYW5kIFY4IGJpbmRp
bmdzLiBBZGRlZCBleGhhdXN0aXZlIHRlc3QgY2FzZQorICAgICAgICBleGVyY2lzaW5nIGFsbCBu
ZXcgY29kZSBwYXRocy4gVXBkYXRlZCBwcmVleGlzdGluZyB0ZXN0IGNhc2VzIGZvcgorICAgICAg
ICBuZXcgQVBJcy4gRml4ZWQgcHJlZXhpc3RpbmcgYnVncyBpbiBXZWJLaXQncyBhbmQgQ2hyb21l
J3MgV2ViR0wKKyAgICAgICAgaW1wbGVtZW50YXRpb25zLiBDbGVhbmVkIHVwIGEgY291cGxlIG9m
IGFyZWFzIGZyb20gcmVjZW50IENhbnZhcworICAgICAgICAtPiBXZWJHTCByZW5hbWluZyBhbmQg
ZGVsZXRlZCBvYnNvbGV0ZSBDYW52YXNOdW1iZXJBcnJheS4KKworICAgICAgICBSYW4gV2ViR0wg
bGF5b3V0IHRlc3RzIGluIFdlYktpdCAoY2xlYW4pIGFuZCBDaHJvbWUgKGNvdXBsZSBvZgorICAg
ICAgICBwcmVleGlzdGluZyBrbm93biBmYWlsdXJlcykgYW5kIG1hbnVhbCBXZWJHTCB0ZXN0cyBp
biBib3RoCisgICAgICAgIGJyb3dzZXJzLgorCisgICAgICAgIFRlc3Q6IGZhc3QvY2FudmFzL3dl
YmdsL2dsLW9iamVjdC1nZXQtY2FsbHMuaHRtbAorCisgICAgICAgICogV2ViQ29yZS5neXBpOgor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0NhbnZhc051bWJlckFycmF5Q3VzdG9tLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKFdlYkNvcmU6Oik6CisgICAgICAgIChXZWJD
b3JlOjpnZXRPYmplY3RQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UHJvZ3JhbVBh
cmFtZXRlckhlbHBlcik6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Z2V0QnVmZmVyUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFBhcmFtZXRlcik6CisgICAgICAg
IChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UHJvZ3JhbVBhcmFtZXRlcik6
CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UmVuZGVyYnVm
ZmVyUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpnZXRTaGFkZXJQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmdldFRleFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6Z2V0VW5pZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6Z2V0VmVydGV4QXR0cmliKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhDdXN0b21CaW5kaW5nLmg6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4
V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjgp
OgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKFdlYkNvcmU6OmdldE9iamVjdFBhcmFt
ZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpnZXRQcm9ncmFtUGFyYW1ldGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkNBTExCQUNLX0ZVTkNfREVDTCk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2Fu
dmFzTnVtYmVyQXJyYXkuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZh
c051bWJlckFycmF5Lmg6IFJlbW92ZWQuCisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzTnVt
YmVyQXJyYXkuaWRsOiBSZW1vdmVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc09iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNPYmplY3Q6OkNhbnZhc09iamVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDYW52YXNPYmplY3Q6OnNldE9iamVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpDYW52YXNPYmplY3Q6OmRlbGV0ZU9iamVjdCk6CisgICAgICAgICogaHRtbC9jYW52YXMv
Q2FudmFzT2JqZWN0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTEJ1ZmZlcjo6V2ViR0xCdWZmZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
QnVmZmVyLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjpXZWJHTEZyYW1lYnVmZmVyKToKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEdldEluZm8uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMR2V0SW5mbzo6V2ViR0xHZXRJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMR2V0SW5mbzo6fldlYkdMR2V0SW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEdldElu
Zm86OmdldFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZvOjpnZXRCb29sKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMR2V0SW5mbzo6Z2V0RmxvYXQpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xHZXRJbmZvOjpnZXRMb25nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMR2V0
SW5mbzo6Z2V0U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMR2V0SW5mbzo6Z2V0VW5z
aWduZWRMb25nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMR2V0SW5mbzo6Z2V0V2ViR0xCdWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZvOjpnZXRXZWJHTEZsb2F0QXJyYXkp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZvOjpnZXRXZWJHTEZyYW1lYnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMR2V0SW5mbzo6Z2V0V2ViR0xJbnRBcnJheSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTEdldEluZm86OmdldFdlYkdMUHJvZ3JhbSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTEdldEluZm86OmdldFdlYkdMUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMR2V0SW5mbzo6Z2V0V2ViR0xUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMR2V0SW5mbzo6Z2V0V2ViR0xVbnNpZ25lZEJ5dGVBcnJheSk6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0xHZXRJbmZvLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xH
ZXRJbmZvOjopOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFByb2dyYW06OldlYkdMUHJvZ3JhbSk6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJidWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmJ1ZmZl
cjo6V2ViR0xSZW5kZXJidWZmZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVy
YnVmZmVyLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNsZWFudXBIZWxwZXI6OkNsZWFudXBIZWxwZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xlYW51cEhlbHBlcjo6fkNsZWFudXBIZWxwZXIpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpyZXNoYXBlKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6YWN0aXZlVGV4dHVyZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmF0dGFjaFNoYWRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJpbmRBdHRyaWJMb2NhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJpbmRCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpiaW5kRnJhbWVidWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpiaW5kUmVuZGVyYnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmluZFRleHR1cmUpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpibGVuZENvbG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmxlbmRFcXVhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJsZW5kRXF1YXRpb25TZXBh
cmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJsZW5kRnVu
Yyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJsZW5kRnVuY1Nl
cGFyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVy
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZlclN1
YkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpjaGVja0Zy
YW1lYnVmZmVyU3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpjbGVh
ckNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y2xlYXJE
ZXB0aCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNsZWFyU3Rl
bmNpbCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNvbG9yTWFz
ayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNvbXBpbGVTaGFk
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpjb3B5VGV4SW1h
Z2UyRCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNvcHlUZXhT
dWJJbWFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y3Jl
YXRlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y3Vs
bEZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkZWxldGVC
dWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkZWxldGVG
cmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRl
bGV0ZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpk
ZWxldGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpkZWxldGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpkZWxldGVUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6ZGVwdGhGdW5jKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dDo6ZGVwdGhNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6
ZGVwdGhSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRl
dGFjaFNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRp
c2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkaXNhYmxl
VmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpkcmF3QXJyYXlzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dDo6ZHJhd0VsZW1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZW5h
YmxlVmVydGV4QXR0cmliQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpmaW5pc2gpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpmbHVzaCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmZyYW1l
YnVmZmVyUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6ZnJhbWVidWZmZXJUZXh0dXJlMkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0Ojpmcm9udEZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpnZW5lcmF0ZU1pcG1hcCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmdldEJ1ZmZlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFBhcmFtZXRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFByb2dyYW1QYXJhbWV0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQcm9ncmFt
SW5mb0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFJl
bmRlcmJ1ZmZlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmdldFNoYWRlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmdldFNoYWRlckluZm9Mb2cpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpnZXRTaGFkZXJTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpnZXRUZXhQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpnZXRVbmlmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dDo6Z2V0VmVydGV4QXR0cmliKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dDo6aGludCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmxpbmVXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmxpbmtQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dDo6cGl4ZWxTdG9yZWkpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojpwb2x5Z29uT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dDo6cmVhZFBpeGVscyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnJlbGVhc2VTaGFkZXJDb21waWxlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OnJlbmRlcmJ1ZmZlclN0b3JhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpzYW1wbGVDb3ZlcmFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnNjaXNzb3IpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpzaGFkZXJTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpzdGVuY2lsRnVuYyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OnN0ZW5jaWxGdW5jU2VwYXJhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpzdGVuY2lsTWFzayk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnN0ZW5jaWxNYXNrU2VwYXJhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpzdGVuY2lsT3ApOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpzdGVuY2lsT3BTZXBhcmF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleEltYWdlMkQpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhQYXJhbWV0ZXJmKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4UGFyYW1ldGVyaSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleFN1YkltYWdlMkQpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMWYpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMWZ2KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTFpKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTFpdik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0yZik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0yZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMmkpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMml2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6dW5pZm9ybTNmKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dDo6dW5pZm9ybTNmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OnVuaWZvcm0zaSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnVuaWZvcm0zaXYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0Ojp1bmlmb3JtNGYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
Ojp1bmlmb3JtNGZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6
dW5pZm9ybTRpKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5p
Zm9ybTRpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZv
cm1NYXRyaXgyZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1
bmlmb3JtTWF0cml4M2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dDo6dW5pZm9ybU1hdHJpeDRmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnVzZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0Ojp2YWxpZGF0ZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp2ZXJ0ZXhBdHRyaWIxZik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OnZlcnRleEF0dHJpYjFmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYjJmKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliMmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliM2YpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWIzZnYpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWI0Zik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYjRmdik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYlBvaW50ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2aWV3cG9ydCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRldGFjaEFuZFJlbW92ZUFsbE9iamVjdHMp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRCb29sZWFuUGFy
YW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0Rmxv
YXRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRJbnRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpnZXRMb25nUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6Z2V0VW5zaWduZWRMb25nUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dDo6Z2V0V2ViR0xGbG9hdEFycmF5UGFyYW1ldGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0V2ViR0xJbnRBcnJheVBhcmFtZXRl
cik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFdlYkdMVW5z
aWduZWRCeXRlQXJyYXlQYXJhbWV0ZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xTaGFkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xTaGFkZXI6OldlYkdMU2hhZGVyKToKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9XZWJHTFRleHR1cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xUZXh0dXJlOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xUZXh0dXJlOjpXZWJHTFRleHR1cmUpOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5oOgorICAgICAgICAqIG1hbnVhbC10
ZXN0cy93ZWJnbC9yZXNvdXJjZXMvdXRpbHMzZC5qczoKKyAgICAgICAgKGluaXRXZWJHTCk6Cisg
ICAgICAgIChsb2FkU2hhZGVyKToKKyAgICAgICAgKEZyYW1lcmF0ZS5wcm90b3R5cGUuc25hcHNo
b3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpiaW5kUmVuZGVyYnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRCb29sZWFudik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0QnVmZmVyUGFyYW1ldGVyaXYpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEZsb2F0dik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFy
YW1ldGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEludGVn
ZXJ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtaXYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFJlbmRlcmJ1ZmZlclBh
cmFtZXRlcml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFk
ZXJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VGV4UGFyYW1l
dGVyZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFRleFBhcmFt
ZXRlcml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3Jt
ZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1pdik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliZnYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYml2
KToKKwogMjAwOS0xMS0xOSAgQnJpYW4gV2VpbnN0ZWluICA8YndlaW5zdGVpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBXZWJDb3JlL1dlYkNv
cmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gNTEy
MjYpCisrKyBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMTI3MSw2ICsx
MjcxLDIwIEBACiAgICAgICAgICAgICAnaGlzdG9yeS9IaXN0b3J5SXRlbS5oJywKICAgICAgICAg
ICAgICdoaXN0b3J5L1BhZ2VDYWNoZS5jcHAnLAogICAgICAgICAgICAgJ2hpc3RvcnkvUGFnZUNh
Y2hlLmgnLAorICAgICAgICAgICAgJ2h0bWwvY2FudmFzL0NhbnZhc0dyYWRpZW50LmNwcCcsCisg
ICAgICAgICAgICAnaHRtbC9jYW52YXMvQ2FudmFzR3JhZGllbnQuaCcsCisgICAgICAgICAgICAn
aHRtbC9jYW52YXMvQ2FudmFzT2JqZWN0LmNwcCcsCisgICAgICAgICAgICAnaHRtbC9jYW52YXMv
Q2FudmFzT2JqZWN0LmgnLAorICAgICAgICAgICAgJ2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4u
Y3BwJywKKyAgICAgICAgICAgICdodG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmgnLAorICAgICAg
ICAgICAgJ2h0bWwvY2FudmFzL0NhbnZhc1BpeGVsQXJyYXkuY3BwJywKKyAgICAgICAgICAgICdo
dG1sL2NhbnZhcy9DYW52YXNQaXhlbEFycmF5LmgnLAorICAgICAgICAgICAgJ2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwJywKKyAgICAgICAgICAgICdodG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0LmgnLAorICAgICAgICAgICAgJ2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5oJywKKyAgICAgICAgICAgICdodG1sL2NhbnZhcy9DYW52YXNT
dHlsZS5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmgnLAogICAg
ICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMQXJyYXkuY3BwJywKICAgICAgICAgICAgICdodG1s
L2NhbnZhcy9XZWJHTEFycmF5LmgnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMQXJy
YXlCdWZmZXIuY3BwJywKQEAgLTEyODMsMzIgKzEyOTcsMjAgQEAKICAgICAgICAgICAgICdodG1s
L2NhbnZhcy9XZWJHTEZsb2F0QXJyYXkuaCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2Vi
R0xGcmFtZWJ1ZmZlci5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMRnJhbWVi
dWZmZXIuaCcsCi0gICAgICAgICAgICAnaHRtbC9jYW52YXMvQ2FudmFzR3JhZGllbnQuY3BwJywK
LSAgICAgICAgICAgICdodG1sL2NhbnZhcy9DYW52YXNHcmFkaWVudC5oJywKKyAgICAgICAgICAg
ICdodG1sL2NhbnZhcy9XZWJHTEdldEluZm8uY3BwJywKKyAgICAgICAgICAgICdodG1sL2NhbnZh
cy9XZWJHTEdldEluZm8uaCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xJbnRBcnJh
eS5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMSW50QXJyYXkuaCcsCi0gICAg
ICAgICAgICAnaHRtbC9jYW52YXMvQ2FudmFzT2JqZWN0LmNwcCcsCi0gICAgICAgICAgICAnaHRt
bC9jYW52YXMvQ2FudmFzT2JqZWN0LmgnLAotICAgICAgICAgICAgJ2h0bWwvY2FudmFzL0NhbnZh
c1BhdHRlcm4uY3BwJywKLSAgICAgICAgICAgICdodG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmgn
LAotICAgICAgICAgICAgJ2h0bWwvY2FudmFzL0NhbnZhc1BpeGVsQXJyYXkuY3BwJywKLSAgICAg
ICAgICAgICdodG1sL2NhbnZhcy9DYW52YXNQaXhlbEFycmF5LmgnLAogICAgICAgICAgICAgJ2h0
bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dl
YkdMUHJvZ3JhbS5oJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZl
ci5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmgnLAot
ICAgICAgICAgICAgJ2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuY3BwJywKLSAg
ICAgICAgICAgICdodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgnLAotICAgICAg
ICAgICAgJ2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAnLAotICAgICAg
ICAgICAgJ2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oJywKICAgICAgICAg
ICAgICdodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwJywKICAgICAgICAgICAg
ICdodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaCcsCiAgICAgICAgICAgICAnaHRt
bC9jYW52YXMvV2ViR0xTaGFkZXIuY3BwJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJH
TFNoYWRlci5oJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTFNob3J0QXJyYXkuY3Bw
JywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTFNob3J0QXJyYXkuaCcsCi0gICAgICAg
ICAgICAnaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwJywKLSAgICAgICAgICAgICdodG1sL2Nh
bnZhcy9DYW52YXNTdHlsZS5oJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTFRleHR1
cmUuY3BwJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTFRleHR1cmUuaCcsCiAgICAg
ICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xVbnNpZ25lZEJ5dGVBcnJheS5jcHAnLApJbmRleDog
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDUxMjI2
KQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTExOTksNiArMTE5OSw4IEBACiAJCTY1REYzMjNDMDlEMURFNjUwMDBCRTMyNSAv
KiBKU0NhbnZhc1BhdHRlcm4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDY1REYzMjM2MDlEMURFNjUwMDBCRTMyNSAvKiBKU0NhbnZhc1BhdHRlcm4uaCAq
LzsgfTsKIAkJNjVERjMyNjEwOUQxRTE5OTAwMEJFMzI1IC8qIFVzZXJBZ2VudFN0eWxlU2hlZXRz
RGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
NTY1ODFBRjA5RDE0RUU2MDAwRTYxRDcgLyogVXNlckFnZW50U3R5bGVTaGVldHNEYXRhLmNwcCAq
LzsgfTsKIAkJNjVGRUE4NjkwOTgzM0FERTAwQkVENEFCIC8qIFBhZ2UuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVGRUE4NjgwOTgzM0FERTAwQkVE
NEFCIC8qIFBhZ2UuY3BwICovOyB9OworCQk2RTUxRDYxQzEwQjIzQ0MyMDBGREU3NEEgLyogV2Vi
R0xHZXRJbmZvLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDZFNTFENjFBMTBCMjNDQzIwMEZERTc0QSAvKiBXZWJHTEdldEluZm8uY3BwICovOyB9Owor
CQk2RTUxRDYxRDEwQjIzQ0MyMDBGREU3NEEgLyogV2ViR0xHZXRJbmZvLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTUxRDYxQjEwQjIzQ0MyMDBGREU3
NEEgLyogV2ViR0xHZXRJbmZvLmggKi87IH07CiAJCTcyNjI2RTAyMEVGMDIyRkUwMEEwN0UyMCAv
KiBGb250RmFzdFBhdGguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzI2MjZFMDEwRUYwMjJGRTAwQTA3RTIwIC8qIEZvbnRGYXN0UGF0aC5jcHAgKi87
IH07CiAJCTc1NDEzM0E4MTAyRTAwRTgwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTQxMzNB
NzEwMkUwMEU4MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oICovOyB9OwogCQk3
NTQxMzNBQTEwMkUwMEY0MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTQxMzNBOTEwMkUw
MEY0MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgKi87IH07CkBAIC02NTA3
LDYgKzY1MDksOCBAQAogCQk2NURGMzIzNjA5RDFERTY1MDAwQkUzMjUgLyogSlNDYW52YXNQYXR0
ZXJuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NhbnZhc1BhdHRlcm4u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVGODA2OTcwNTREOUY4NjAwOEJGNzc2
IC8qIEJsb2NrRXhjZXB0aW9ucy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEJsb2NrRXhjZXB0aW9ucy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTY1RkVBODY4MDk4
MzNBREUwMEJFRDRBQiAvKiBQYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBQYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkU1MUQ2MUEx
MEIyM0NDMjAwRkRFNzRBIC8qIFdlYkdMR2V0SW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBXZWJHTEdldEluZm8uY3BwOyBwYXRoID0gY2FudmFzL1dlYkdMR2V0
SW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZFNTFENjFCMTBCMjNDQzIw
MEZERTc0QSAvKiBXZWJHTEdldEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gV2ViR0xHZXRJbmZvLmg7IHBhdGggPSBjYW52YXMvV2ViR0xHZXRJbmZvLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNjI2RTAxMEVGMDIyRkUwMEEwN0UyMCAvKiBGb250RmFz
dFBhdGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udEZhc3RQ
YXRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzU0MTMzQTcxMDJFMDBFODAw
MDc1RDAwIC8qIEluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3NTQxMzNBOTEwMkUwMEY0MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxpbmVB
Z2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JU
aW1lbGluZUFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNjIwLDYg
KzEwNjI0LDI1IEBACiAJCTQ5NDg0RkFFMTAyQ0YwMUUwMDE4N0REMyAvKiBjYW52YXMgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTQ5NDg0RkIzMTAyQ0Yy
M0MwMDE4N0REMyAvKiBDYW52YXNHcmFkaWVudC5jcHAgKi8sCisJCQkJNDk0ODRGQjQxMDJDRjIz
QzAwMTg3REQzIC8qIENhbnZhc0dyYWRpZW50LmggKi8sCisJCQkJNDk0ODRGQjUxMDJDRjIzQzAw
MTg3REQzIC8qIENhbnZhc0dyYWRpZW50LmlkbCAqLywKKwkJCQk0OUM3QjlCNDEwNDJEMzJGMDAw
OUQ0NDcgLyogQ2FudmFzT2JqZWN0LmNwcCAqLywKKwkJCQk0OUM3QjlCNTEwNDJEMzJGMDAwOUQ0
NDcgLyogQ2FudmFzT2JqZWN0LmggKi8sCisJCQkJNDk0ODRGQjYxMDJDRjIzQzAwMTg3REQzIC8q
IENhbnZhc1BhdHRlcm4uY3BwICovLAorCQkJCTQ5NDg0RkI3MTAyQ0YyM0MwMDE4N0REMyAvKiBD
YW52YXNQYXR0ZXJuLmggKi8sCisJCQkJNDk0ODRGQjgxMDJDRjIzQzAwMTg3REQzIC8qIENhbnZh
c1BhdHRlcm4uaWRsICovLAorCQkJCTQ5NDg0RkI5MTAyQ0YyM0MwMDE4N0REMyAvKiBDYW52YXNQ
aXhlbEFycmF5LmNwcCAqLywKKwkJCQk0OTQ4NEZCQTEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFz
UGl4ZWxBcnJheS5oICovLAorCQkJCTQ5NDg0RkJCMTAyQ0YyM0MwMDE4N0REMyAvKiBDYW52YXNQ
aXhlbEFycmF5LmlkbCAqLywKKwkJCQk0OUM3QjlCQzEwNDJEMzJGMDAwOUQ0NDcgLyogQ2FudmFz
UmVuZGVyaW5nQ29udGV4dC5jcHAgKi8sCisJCQkJNDlDN0I5QkQxMDQyRDMyRjAwMDlENDQ3IC8q
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCAqLywKKwkJCQk0OUM3QjlCRTEwNDJEMzJGMDAwOUQ0
NDcgLyogQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5pZGwgKi8sCisJCQkJNDk0ODRGQkMxMDJDRjIz
QzAwMTg3REQzIC8qIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgKi8sCisJCQkJNDk0ODRG
QkQxMDJDRjIzQzAwMTg3REQzIC8qIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oICovLAorCQkJ
CTQ5NDg0RkJFMTAyQ0YyM0MwMDE4N0REMyAvKiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRs
ICovLAorCQkJCTQ5NDg0RkJGMTAyQ0YyM0MwMDE4N0REMyAvKiBDYW52YXNTdHlsZS5jcHAgKi8s
CisJCQkJNDk0ODRGQzAxMDJDRjIzQzAwMTg3REQzIC8qIENhbnZhc1N0eWxlLmggKi8sCiAJCQkJ
QTdEMjBGNkIxMDdGNDM4QjAwQTgwMzkyIC8qIFdlYkdMQWN0aXZlSW5mby5oICovLAogCQkJCUE3
RDIwRjNCMTA3RjM3MzgwMEE4MDM5MiAvKiBXZWJHTEFjdGl2ZUluZm8uaWRsICovLAogCQkJCTQ5
RUVDREM3MTA1MDNDMjMwMDA5OUZBQiAvKiBXZWJHTEFycmF5LmNwcCAqLywKQEAgLTEwNjQwLDMy
ICsxMDY2MywxNyBAQAogCQkJCTQ5QzdCOUFFMTA0MkQzMkUwMDA5RDQ0NyAvKiBXZWJHTEZyYW1l
YnVmZmVyLmNwcCAqLywKIAkJCQk0OUM3QjlBRjEwNDJEMzJFMDAwOUQ0NDcgLyogV2ViR0xGcmFt
ZWJ1ZmZlci5oICovLAogCQkJCTQ5QzdCOUIwMTA0MkQzMkUwMDA5RDQ0NyAvKiBXZWJHTEZyYW1l
YnVmZmVyLmlkbCAqLywKLQkJCQk0OTQ4NEZCMzEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzR3Jh
ZGllbnQuY3BwICovLAotCQkJCTQ5NDg0RkI0MTAyQ0YyM0MwMDE4N0REMyAvKiBDYW52YXNHcmFk
aWVudC5oICovLAotCQkJCTQ5NDg0RkI1MTAyQ0YyM0MwMDE4N0REMyAvKiBDYW52YXNHcmFkaWVu
dC5pZGwgKi8sCisJCQkJNkU1MUQ2MUExMEIyM0NDMjAwRkRFNzRBIC8qIFdlYkdMR2V0SW5mby5j
cHAgKi8sCisJCQkJNkU1MUQ2MUIxMEIyM0NDMjAwRkRFNzRBIC8qIFdlYkdMR2V0SW5mby5oICov
LAogCQkJCTQ5RUVDREQwMTA1MDNDMjMwMDA5OUZBQiAvKiBXZWJHTEludEFycmF5LmNwcCAqLywK
IAkJCQk0OUVFQ0REMTEwNTAzQzIzMDAwOTlGQUIgLyogV2ViR0xJbnRBcnJheS5oICovLAogCQkJ
CTQ5RUVDREQyMTA1MDNDMjMwMDA5OUZBQiAvKiBXZWJHTEludEFycmF5LmlkbCAqLywKLQkJCQk0
OUM3QjlCNDEwNDJEMzJGMDAwOUQ0NDcgLyogQ2FudmFzT2JqZWN0LmNwcCAqLywKLQkJCQk0OUM3
QjlCNTEwNDJEMzJGMDAwOUQ0NDcgLyogQ2FudmFzT2JqZWN0LmggKi8sCi0JCQkJNDk0ODRGQjYx
MDJDRjIzQzAwMTg3REQzIC8qIENhbnZhc1BhdHRlcm4uY3BwICovLAotCQkJCTQ5NDg0RkI3MTAy
Q0YyM0MwMDE4N0REMyAvKiBDYW52YXNQYXR0ZXJuLmggKi8sCi0JCQkJNDk0ODRGQjgxMDJDRjIz
QzAwMTg3REQzIC8qIENhbnZhc1BhdHRlcm4uaWRsICovLAotCQkJCTQ5NDg0RkI5MTAyQ0YyM0Mw
MDE4N0REMyAvKiBDYW52YXNQaXhlbEFycmF5LmNwcCAqLywKLQkJCQk0OTQ4NEZCQTEwMkNGMjND
MDAxODdERDMgLyogQ2FudmFzUGl4ZWxBcnJheS5oICovLAotCQkJCTQ5NDg0RkJCMTAyQ0YyM0Mw
MDE4N0REMyAvKiBDYW52YXNQaXhlbEFycmF5LmlkbCAqLywKIAkJCQk0OUM3QjlCNjEwNDJEMzJG
MDAwOUQ0NDcgLyogV2ViR0xQcm9ncmFtLmNwcCAqLywKIAkJCQk0OUM3QjlCNzEwNDJEMzJGMDAw
OUQ0NDcgLyogV2ViR0xQcm9ncmFtLmggKi8sCiAJCQkJNDlDN0I5QjgxMDQyRDMyRjAwMDlENDQ3
IC8qIFdlYkdMUHJvZ3JhbS5pZGwgKi8sCiAJCQkJNDlDN0I5QjkxMDQyRDMyRjAwMDlENDQ3IC8q
IFdlYkdMUmVuZGVyYnVmZmVyLmNwcCAqLywKIAkJCQk0OUM3QjlCQTEwNDJEMzJGMDAwOUQ0NDcg
LyogV2ViR0xSZW5kZXJidWZmZXIuaCAqLywKIAkJCQk0OUM3QjlCQjEwNDJEMzJGMDAwOUQ0NDcg
LyogV2ViR0xSZW5kZXJidWZmZXIuaWRsICovLAotCQkJCTQ5QzdCOUJDMTA0MkQzMkYwMDA5RDQ0
NyAvKiBDYW52YXNSZW5kZXJpbmdDb250ZXh0LmNwcCAqLywKLQkJCQk0OUM3QjlCRDEwNDJEMzJG
MDAwOUQ0NDcgLyogQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oICovLAotCQkJCTQ5QzdCOUJFMTA0
MkQzMkYwMDA5RDQ0NyAvKiBDYW52YXNSZW5kZXJpbmdDb250ZXh0LmlkbCAqLywKLQkJCQk0OTQ4
NEZCQzEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCAqLywK
LQkJCQk0OTQ4NEZCRDEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmggKi8sCi0JCQkJNDk0ODRGQkUxMDJDRjIzQzAwMTg3REQzIC8qIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5pZGwgKi8sCiAJCQkJNDlDN0I5QkYxMDQyRDMyRjAwMDlENDQ3IC8qIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dC5jcHAgKi8sCiAJCQkJNDlDN0I5QzAxMDQyRDMyRjAwMDlENDQ3IC8qIFdl
YkdMUmVuZGVyaW5nQ29udGV4dC5oICovLAogCQkJCTQ5QzdCOUMxMTA0MkQzMkYwMDA5RDQ0NyAv
KiBXZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRsICovLApAQCAtMTA2NzUsOCArMTA2ODMsNiBAQAog
CQkJCTQ5RUVDREQzMTA1MDNDMjMwMDA5OUZBQiAvKiBXZWJHTFNob3J0QXJyYXkuY3BwICovLAog
CQkJCTQ5RUVDREQ0MTA1MDNDMjMwMDA5OUZBQiAvKiBXZWJHTFNob3J0QXJyYXkuaCAqLywKIAkJ
CQk0OUVFQ0RENTEwNTAzQzIzMDAwOTlGQUIgLyogV2ViR0xTaG9ydEFycmF5LmlkbCAqLywKLQkJ
CQk0OTQ4NEZCRjEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzU3R5bGUuY3BwICovLAotCQkJCTQ5
NDg0RkMwMTAyQ0YyM0MwMDE4N0REMyAvKiBDYW52YXNTdHlsZS5oICovLAogCQkJCTQ5QzdCOUM1
MTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJHTFRleHR1cmUuY3BwICovLAogCQkJCTQ5QzdCOUM2MTA0
MkQzMkYwMDA5RDQ0NyAvKiBXZWJHTFRleHR1cmUuaCAqLywKIAkJCQk0OUM3QjlDNzEwNDJEMzJG
MDAwOUQ0NDcgLyogV2ViR0xUZXh0dXJlLmlkbCAqLywKQEAgLTE4MTM0LDYgKzE4MTQwLDcgQEAK
IAkJCQlFMTI0NzQ4NDEwQUExNjFEMDBCNzk0OTMgLyogQXV0aGVudGljYXRpb25DbGllbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTkzODJERjU4MTBBOEQ1QzkwMDkyNTY1MiAvKiBDb2xvclNwYWNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBQjMxQzkxRTEwQUUxQjhFMDAwQzdCOTIgLyogTGluZUNs
YW1wVmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTZFNTFENjFEMTBCMjNDQzIwMEZERTc0QSAv
KiBXZWJHTEdldEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjAyNzcsNiArMjAyODQsNyBAQAog
CQkJCTE0NzlGQUVGMTA5QUUzNzUwMERFRDY1NSAvKiBSZW5kZXJSdWJ5QmFzZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxNDc5RkFGMTEwOUFFMzc1MDBERUQ2NTUgLyogUmVuZGVyUnVieVJ1bi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDc5RkFGMzEwOUFFMzc1MDBERUQ2NTUgLyogUmVuZGVy
UnVieVRleHQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNkU1MUQ2MUMxMEIyM0NDMjAwRkRFNzRB
IC8qIFdlYkdMR2V0SW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNDYW52YXNOdW1iZXJBcnJheUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0NhbnZhc051bWJlckFycmF5Q3VzdG9tLmNwcAkocmV2aXNpb24gNTEy
MjYpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzTnVtYmVyQXJyYXlDdXN0b20uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0KLSNpZiBFTkFCTEUoM0RfQ0FOVkFTKQotCi0jaW5jbHVkZSAiSlNDYW52YXNOdW1i
ZXJBcnJheS5oIgotCi0jaW5jbHVkZSAiQ2FudmFzTnVtYmVyQXJyYXkuaCIKLQotdXNpbmcgbmFt
ZXNwYWNlIEpTQzsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1KU1ZhbHVlIEpTQ2FudmFzTnVt
YmVyQXJyYXk6OmdldEJ5SW5kZXgoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGludCBp
bmRleCkKLXsKLSAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoZXhlYywgaW1wbCgp
LT5pdGVtKGluZGV4KSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKDNEX0NBTlZBUykKSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCShy
ZXZpc2lvbiA1MTIyNikKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0Nv
bnRleHRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMSArMzMsMjUgQEAKICNpbmNs
dWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNp
bmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCi0jaW5jbHVkZSAiSlNXZWJHTEZsb2F0QXJyYXku
aCIKLSNpbmNsdWRlICJKU1dlYkdMSW50QXJyYXkuaCIKICNpbmNsdWRlICJKU0hUTUxDYW52YXNF
bGVtZW50LmgiCiAjaW5jbHVkZSAiSlNIVE1MSW1hZ2VFbGVtZW50LmgiCisjaW5jbHVkZSAiSlNX
ZWJHTEJ1ZmZlci5oIgorI2luY2x1ZGUgIkpTV2ViR0xGbG9hdEFycmF5LmgiCisjaW5jbHVkZSAi
SlNXZWJHTEZyYW1lYnVmZmVyLmgiCisjaW5jbHVkZSAiSlNXZWJHTEludEFycmF5LmgiCisjaW5j
bHVkZSAiSlNXZWJHTFByb2dyYW0uaCIKKyNpbmNsdWRlICJKU1dlYkdMUmVuZGVyYnVmZmVyLmgi
CisjaW5jbHVkZSAiSlNXZWJHTFNoYWRlci5oIgorI2luY2x1ZGUgIkpTV2ViR0xUZXh0dXJlLmgi
CisjaW5jbHVkZSAiSlNXZWJHTFVuc2lnbmVkQnl0ZUFycmF5LmgiCiAjaW5jbHVkZSAiSlNXZWJL
aXRDU1NNYXRyaXguaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIldl
YkdMQnVmZmVyLmgiCisjaW5jbHVkZSAiV2ViR0xHZXRJbmZvLmgiCisjaW5jbHVkZSAiV2ViR0xG
bG9hdEFycmF5LmgiCisjaW5jbHVkZSAiV2ViR0xGcmFtZWJ1ZmZlci5oIgorI2luY2x1ZGUgIldl
YkdMSW50QXJyYXkuaCIKKyNpbmNsdWRlICJXZWJHTFByb2dyYW0uaCIKICNpbmNsdWRlIDxydW50
aW1lL0Vycm9yLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYv
T3duRmFzdE1hbGxvY1B0ci5oPgpAQCAtODEsNiArOTUsMjE0IEBAIEpTVmFsdWUgSlNXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmJ1ZmZlclMKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIAor
SlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgY29uc3QgV2ViR0xHZXRJbmZvJiBpbmZvKQoreworICAgIHN3aXRjaCAoaW5mby5nZXRU
eXBlKCkpIHsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6VF9CT09MOgorICAgICAgICByZXR1cm4g
anNCb29sZWFuKGluZm8uZ2V0Qm9vbCgpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6VF9GTE9B
VDoKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMsIGluZm8uZ2V0RmxvYXQoKSk7CisgICAg
Y2FzZSBXZWJHTEdldEluZm86OlRfTE9ORzoKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMs
IGluZm8uZ2V0TG9uZygpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6VF9OVUxMOgorICAgICAg
ICByZXR1cm4ganNOdWxsKCk7CisgICAgY2FzZSBXZWJHTEdldEluZm86OlRfU1RSSU5HOgorICAg
ICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgaW5mby5nZXRTdHJpbmcoKSk7CisgICAgY2FzZSBX
ZWJHTEdldEluZm86OlRfVU5TSUdORURfTE9ORzoKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGV4
ZWMsIGluZm8uZ2V0VW5zaWduZWRMb25nKCkpOworICAgIGNhc2UgV2ViR0xHZXRJbmZvOjpUX1dF
QkdMQlVGRkVSOgorICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIGluZm8u
Z2V0V2ViR0xCdWZmZXIoKSk7CisgICAgY2FzZSBXZWJHTEdldEluZm86OlRfV0VCR0xGTE9BVEFS
UkFZOgorICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIGluZm8uZ2V0V2Vi
R0xGbG9hdEFycmF5KCkpOworICAgIGNhc2UgV2ViR0xHZXRJbmZvOjpUX1dFQkdMRlJBTUVCVUZG
RVI6CisgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgaW5mby5nZXRXZWJH
TEZyYW1lYnVmZmVyKCkpOworICAgIGNhc2UgV2ViR0xHZXRJbmZvOjpUX1dFQkdMSU5UQVJSQVk6
CisgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgaW5mby5nZXRXZWJHTElu
dEFycmF5KCkpOworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgV2ViR0xPYmplY3RBcnJheQorICAg
IC8vIGNhc2UgV2ViR0xHZXRJbmZvOjpUX1dFQkdMT0JKRUNUQVJSQVk6CisgICAgY2FzZSBXZWJH
TEdldEluZm86OlRfV0VCR0xQUk9HUkFNOgorICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9i
YWxPYmplY3QsIGluZm8uZ2V0V2ViR0xQcm9ncmFtKCkpOworICAgIGNhc2UgV2ViR0xHZXRJbmZv
OjpUX1dFQkdMUkVOREVSQlVGRkVSOgorICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxP
YmplY3QsIGluZm8uZ2V0V2ViR0xSZW5kZXJidWZmZXIoKSk7CisgICAgY2FzZSBXZWJHTEdldElu
Zm86OlRfV0VCR0xURVhUVVJFOgorICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmpl
Y3QsIGluZm8uZ2V0V2ViR0xUZXh0dXJlKCkpOworICAgIGNhc2UgV2ViR0xHZXRJbmZvOjpUX1dF
QkdMVU5TSUdORURCWVRFQVJSQVk6CisgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9i
amVjdCwgaW5mby5nZXRXZWJHTFVuc2lnbmVkQnl0ZUFycmF5KCkpOworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwor
ICAgIH0KK30KKworZW51bSBPYmplY3RUeXBlIHsKKyAgICBrQnVmZmVyLCBrUmVuZGVyYnVmZmVy
LCBrVGV4dHVyZSwga1ZlcnRleEF0dHJpYgorfTsKKworc3RhdGljIEpTVmFsdWUgZ2V0T2JqZWN0
UGFyYW1ldGVyKEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBvYmosIEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgQXJnTGlzdCYgYXJncywgT2JqZWN0VHlwZSBvYmplY3RUeXBlKQoreworICAgIGlmIChh
cmdzLnNpemUoKSAhPSAyKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBTeW50YXhF
cnJvcik7CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHQqPihvYmot
PmltcGwoKSk7CisgICAgdW5zaWduZWQgdGFyZ2V0ID0gYXJncy5hdCgwKS50b0ludDMyKGV4ZWMp
OworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CisgICAgdW5zaWduZWQgcG5hbWUgPSBhcmdzLmF0KDEpLnRvSW50MzIoZXhlYyk7Cisg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKKyAgICBXZWJHTEdldEluZm8gaW5mbzsKKyAgICBzd2l0Y2ggKG9iamVjdFR5cGUpIHsKKyAg
ICBjYXNlIGtCdWZmZXI6CisgICAgICAgIGluZm8gPSBjb250ZXh0LT5nZXRCdWZmZXJQYXJhbWV0
ZXIodGFyZ2V0LCBwbmFtZSwgZWMpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIGtSZW5kZXJi
dWZmZXI6CisgICAgICAgIGluZm8gPSBjb250ZXh0LT5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIo
dGFyZ2V0LCBwbmFtZSwgZWMpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIGtUZXh0dXJlOgor
ICAgICAgICBpbmZvID0gY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyKHRhcmdldCwgcG5hbWUsIGVj
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBrVmVydGV4QXR0cmliOgorICAgICAgICAvLyB0
YXJnZXQgPT4gaW5kZXgKKyAgICAgICAgaW5mbyA9IGNvbnRleHQtPmdldFZlcnRleEF0dHJpYih0
YXJnZXQsIHBuYW1lLCBlYyk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBpZiAoZWMpIHsK
KyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKyAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CisgICAgfQorICAgIHJldHVybiB0b0pTKGV4ZWMsIG9iai0+Z2xvYmFsT2JqZWN0
KCksIGluZm8pOworfQorCitlbnVtIFdoaWNoUHJvZ3JhbUNhbGwgeworICAgIGtQcm9ncmFtUGFy
YW1ldGVyLCBrVW5pZm9ybQorfTsKKworc3RhdGljIEpTVmFsdWUgZ2V0UHJvZ3JhbVBhcmFtZXRl
ckhlbHBlcihKU1dlYkdMUmVuZGVyaW5nQ29udGV4dCogb2JqLCBFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IEFyZ0xpc3QmIGFyZ3MsIFdoaWNoUHJvZ3JhbUNhbGwgcHJvZ3JhbUNhbGwpCit7CisgICAg
aWYgKGFyZ3Muc2l6ZSgpICE9IDIpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFN5
bnRheEVycm9yKTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkdMUmVuZGVy
aW5nQ29udGV4dCogY29udGV4dCA9IHN0YXRpY19jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dCo+
KG9iai0+aW1wbCgpKTsKKyAgICBXZWJHTFByb2dyYW0qIHByb2dyYW0gPSB0b1dlYkdMUHJvZ3Jh
bShhcmdzLmF0KDApKTsKKyAgICB1bnNpZ25lZCBwbmFtZSA9IGFyZ3MuYXQoMSkudG9JbnQzMihl
eGVjKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOworICAgIFdlYkdMR2V0SW5mbyBpbmZvOworICAgIHN3aXRjaCAocHJvZ3JhbUNh
bGwpIHsKKyAgICBjYXNlIGtQcm9ncmFtUGFyYW1ldGVyOgorICAgICAgICBpbmZvID0gY29udGV4
dC0+Z2V0UHJvZ3JhbVBhcmFtZXRlcihwcm9ncmFtLCBwbmFtZSwgZWMpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIGtVbmlmb3JtOgorICAgICAgICAvLyBwbmFtZSAtPiBsb2NhdGlvbgorICAg
ICAgICBpbmZvID0gY29udGV4dC0+Z2V0VW5pZm9ybShwcm9ncmFtLCBwbmFtZSwgZWMpOworICAg
ICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgaWYgKGVjKSB7CisgICAgICAgIHNldERPTUV4Y2VwdGlv
bihleGVjLCBlYyk7CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIH0KKyAgICBy
ZXR1cm4gdG9KUyhleGVjLCBvYmotPmdsb2JhbE9iamVjdCgpLCBpbmZvKTsKK30KKworSlNWYWx1
ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0QnVmZmVyUGFyYW1ldGVyKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICByZXR1cm4gZ2V0T2JqZWN0UGFyYW1l
dGVyKHRoaXMsIGV4ZWMsIGFyZ3MsIGtCdWZmZXIpOworfQorCitKU1ZhbHVlIEpTV2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreworICAgIGlmIChhcmdzLnNpemUoKSAhPSAz
KQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBTeW50YXhFcnJvcik7CisKKyAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQg
PSBzdGF0aWNfY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHQqPihpbXBsKCkpOworICAgIHVuc2ln
bmVkIHRhcmdldCA9IGFyZ3MuYXQoMCkudG9JbnQzMihleGVjKTsKKyAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIHVuc2lnbmVk
IGF0dGFjaG1lbnQgPSBhcmdzLmF0KDEpLnRvSW50MzIoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB1bnNpZ25l
ZCBwbmFtZSA9IGFyZ3MuYXQoMikudG9JbnQzMihleGVjKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIFdlYkdMR2V0SW5m
byBpbmZvID0gY29udGV4dC0+Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKHRhcmdl
dCwgYXR0YWNobWVudCwgcG5hbWUsIGVjKTsKKyAgICBpZiAoZWMpIHsKKyAgICAgICAgc2V0RE9N
RXhjZXB0aW9uKGV4ZWMsIGVjKTsKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAg
fQorICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBpbmZvKTsKK30KKworSlNW
YWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICBpZiAoYXJncy5zaXplKCkgIT0gMSkKKyAg
ICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgU3ludGF4RXJyb3IpOworCisgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CisgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0ID0gc3Rh
dGljX2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0Kj4oaW1wbCgpKTsKKyAgICB1bnNpZ25lZCBw
bmFtZSA9IGFyZ3MuYXQoMCkudG9JbnQzMihleGVjKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIFdlYkdMR2V0SW5mbyBp
bmZvID0gY29udGV4dC0+Z2V0UGFyYW1ldGVyKHBuYW1lLCBlYyk7CisgICAgaWYgKGVjKSB7Cisg
ICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOworICAgIH0KKyAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QoKSwgaW5m
byk7Cit9CisKK0pTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFByb2dyYW1QYXJh
bWV0ZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreworICAgIHJldHVy
biBnZXRQcm9ncmFtUGFyYW1ldGVySGVscGVyKHRoaXMsIGV4ZWMsIGFyZ3MsIGtQcm9ncmFtUGFy
YW1ldGVyKTsKK30KKworSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UmVuZGVy
YnVmZmVyUGFyYW1ldGVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sK
KyAgICByZXR1cm4gZ2V0T2JqZWN0UGFyYW1ldGVyKHRoaXMsIGV4ZWMsIGFyZ3MsIGtSZW5kZXJi
dWZmZXIpOworfQorCitKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTaGFkZXJQ
YXJhbWV0ZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreworICAgIGlm
IChhcmdzLnNpemUoKSAhPSAyKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBTeW50
YXhFcnJvcik7CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHQqPihp
bXBsKCkpOworICAgIFdlYkdMU2hhZGVyKiBzaGFkZXIgPSB0b1dlYkdMU2hhZGVyKGFyZ3MuYXQo
MCkpOworICAgIHVuc2lnbmVkIHBuYW1lID0gYXJncy5hdCgxKS50b0ludDMyKGV4ZWMpOworICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CisgICAgV2ViR0xHZXRJbmZvIGluZm8gPSBjb250ZXh0LT5nZXRTaGFkZXJQYXJhbWV0ZXIoc2hh
ZGVyLCBwbmFtZSwgZWMpOworICAgIGlmIChlYykgeworICAgICAgICBzZXRET01FeGNlcHRpb24o
ZXhlYywgZWMpOworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisgICAgcmV0
dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksIGluZm8pOworfQorCitKU1ZhbHVlIEpTV2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpnZXRUZXhQYXJhbWV0ZXIoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBBcmdMaXN0JiBhcmdzKQoreworICAgIHJldHVybiBnZXRPYmplY3RQYXJhbWV0ZXIodGhpcywg
ZXhlYywgYXJncywga1RleHR1cmUpOworfQorCitKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpnZXRVbmlmb3JtKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sK
KyAgICByZXR1cm4gZ2V0UHJvZ3JhbVBhcmFtZXRlckhlbHBlcih0aGlzLCBleGVjLCBhcmdzLCBr
VW5pZm9ybSk7Cit9CisKK0pTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFZlcnRl
eEF0dHJpYihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCit7CisgICAgcmV0
dXJuIGdldE9iamVjdFBhcmFtZXRlcih0aGlzLCBleGVjLCBhcmdzLCBrVmVydGV4QXR0cmliKTsK
K30KKwogLy8gdm9pZCB0ZXhJbWFnZTJESFRNTChpbiB1bnNpZ25lZCBsb25nIHRhcmdldCwgaW4g
dW5zaWduZWQgbG9uZyBsZXZlbCwgaW4gSFRNTEltYWdlRWxlbWVudCBpbWFnZSk7CiBKU1ZhbHVl
IEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhJbWFnZTJEKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgQXJnTGlzdCYgYXJncykKIHsgCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEN1c3RvbUJpbmRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEN1c3RvbUJpbmRpbmcuaAkocmV2aXNpb24gNTEyMjYpCisrKyBXZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMzY1LDcgKzM2
NSwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjaWYgRU5BQkxFKDNEX0NBTlZBUykKICAgICAg
ICAgREVDTEFSRV9DQUxMQkFDSyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCdWZmZXJEYXRhKTsKICAg
ICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCdWZmZXJTdWJEYXRh
KTsKLSAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJHTFJlbmRlcmluZ0NvbnRleHRTaXplb2Yp
OworICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdMUmVuZGVyaW5nQ29udGV4dEdldEJ1ZmZl
clBhcmFtZXRlcik7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xSZW5kZXJpbmdDb250
ZXh0R2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKTsKKyAgICAgICAgREVDTEFSRV9D
QUxMQkFDSyhXZWJHTFJlbmRlcmluZ0NvbnRleHRHZXRQYXJhbWV0ZXIpOworICAgICAgICBERUNM
QVJFX0NBTExCQUNLKFdlYkdMUmVuZGVyaW5nQ29udGV4dEdldFByb2dyYW1QYXJhbWV0ZXIpOwor
ICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdMUmVuZGVyaW5nQ29udGV4dEdldFJlbmRlcmJ1
ZmZlclBhcmFtZXRlcik7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xSZW5kZXJpbmdD
b250ZXh0R2V0U2hhZGVyUGFyYW1ldGVyKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJH
TFJlbmRlcmluZ0NvbnRleHRHZXRUZXhQYXJhbWV0ZXIpOworICAgICAgICBERUNMQVJFX0NBTExC
QUNLKFdlYkdMUmVuZGVyaW5nQ29udGV4dEdldFVuaWZvcm0pOworICAgICAgICBERUNMQVJFX0NB
TExCQUNLKFdlYkdMUmVuZGVyaW5nQ29udGV4dEdldFZlcnRleEF0dHJpYik7CiAgICAgICAgIERF
Q0xBUkVfQ0FMTEJBQ0soV2ViR0xSZW5kZXJpbmdDb250ZXh0VGV4SW1hZ2UyRCk7CiAgICAgICAg
IERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xSZW5kZXJpbmdDb250ZXh0VGV4U3ViSW1hZ2UyRCk7CiAg
ICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xSZW5kZXJpbmdDb250ZXh0VW5pZm9ybTFmdik7
CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4
dEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhX
ZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCShyZXZpc2lvbiA1MTIyNikKKysrIFdlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsOCBAQAogI2luY2x1ZGUgIlY4V2ViR0xCeXRlQXJy
YXkuaCIKICNpbmNsdWRlICJWOFdlYkdMRmxvYXRBcnJheS5oIgogI2luY2x1ZGUgIlY4V2ViR0xJ
bnRBcnJheS5oIgorI2luY2x1ZGUgIlY4V2ViR0xQcm9ncmFtLmgiCisjaW5jbHVkZSAiVjhXZWJH
TFNoYWRlci5oIgogI2luY2x1ZGUgIlY4V2ViR0xTaG9ydEFycmF5LmgiCiAjaW5jbHVkZSAiVjhX
ZWJHTFVuc2lnbmVkQnl0ZUFycmF5LmgiCiAjaW5jbHVkZSAiVjhXZWJHTFVuc2lnbmVkSW50QXJy
YXkuaCIKQEAgLTE2Nyw2ICsxNjksMjYzIEBAIENBTExCQUNLX0ZVTkNfREVDTChXZWJHTFJlbmRl
cmluZ0NvbnRleHQKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCitzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoY29uc3QgV2ViR0xHZXRJbmZvJiBpbmZvKQoreworICAg
IHN3aXRjaCAoaW5mby5nZXRUeXBlKCkpIHsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6VF9CT09M
OgorICAgICAgICByZXR1cm4gdjg6OkJvb2xlYW46Ok5ldyhpbmZvLmdldEJvb2woKSk7CisgICAg
Y2FzZSBXZWJHTEdldEluZm86OlRfRkxPQVQ6CisgICAgICAgIHJldHVybiB2ODo6TnVtYmVyOjpO
ZXcoaW5mby5nZXRGbG9hdCgpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6VF9MT05HOgorICAg
ICAgICByZXR1cm4gdjg6OkludGVnZXI6Ok5ldyhpbmZvLmdldExvbmcoKSk7CisgICAgY2FzZSBX
ZWJHTEdldEluZm86OlRfTlVMTDoKKyAgICAgICAgcmV0dXJuIHY4OjpOdWxsKCk7CisgICAgY2Fz
ZSBXZWJHTEdldEluZm86OlRfU1RSSU5HOgorICAgICAgICByZXR1cm4gdjg6OlN0cmluZzo6TmV3
KGZyb21XZWJDb3JlU3RyaW5nKGluZm8uZ2V0U3RyaW5nKCkpLCBpbmZvLmdldFN0cmluZygpLmxl
bmd0aCgpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6VF9VTlNJR05FRF9MT05HOgorICAgICAg
ICByZXR1cm4gdjg6OkludGVnZXI6Ok5ld0Zyb21VbnNpZ25lZChpbmZvLmdldFVuc2lnbmVkTG9u
ZygpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6VF9XRUJHTEJVRkZFUjoKKyAgICAgICAgcmV0
dXJuIFY4RE9NV3JhcHBlcjo6Y29udmVydFRvVjhPYmplY3QoVjhDbGFzc0luZGV4OjpXRUJHTEJV
RkZFUiwgaW5mby5nZXRXZWJHTEJ1ZmZlcigpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6VF9X
RUJHTEZMT0FUQVJSQVk6CisgICAgICAgIHJldHVybiBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb1Y4
T2JqZWN0KFY4Q2xhc3NJbmRleDo6V0VCR0xGTE9BVEFSUkFZLCBpbmZvLmdldFdlYkdMRmxvYXRB
cnJheSgpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6VF9XRUJHTEZSQU1FQlVGRkVSOgorICAg
ICAgICByZXR1cm4gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9WOE9iamVjdChWOENsYXNzSW5kZXg6
OldFQkdMRlJBTUVCVUZGRVIsIGluZm8uZ2V0V2ViR0xGcmFtZWJ1ZmZlcigpKTsKKyAgICBjYXNl
IFdlYkdMR2V0SW5mbzo6VF9XRUJHTElOVEFSUkFZOgorICAgICAgICByZXR1cm4gVjhET01XcmFw
cGVyOjpjb252ZXJ0VG9WOE9iamVjdChWOENsYXNzSW5kZXg6OldFQkdMSU5UQVJSQVksIGluZm8u
Z2V0V2ViR0xJbnRBcnJheSgpKTsKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50IFdlYkdMT2JqZWN0
QXJyYXkKKyAgICAvLyBjYXNlIFdlYkdMR2V0SW5mbzo6VF9XRUJHTE9CSkVDVEFSUkFZOgorICAg
IGNhc2UgV2ViR0xHZXRJbmZvOjpUX1dFQkdMUFJPR1JBTToKKyAgICAgICAgcmV0dXJuIFY4RE9N
V3JhcHBlcjo6Y29udmVydFRvVjhPYmplY3QoVjhDbGFzc0luZGV4OjpXRUJHTFBST0dSQU0sIGlu
Zm8uZ2V0V2ViR0xQcm9ncmFtKCkpOworICAgIGNhc2UgV2ViR0xHZXRJbmZvOjpUX1dFQkdMUkVO
REVSQlVGRkVSOgorICAgICAgICByZXR1cm4gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9WOE9iamVj
dChWOENsYXNzSW5kZXg6OldFQkdMUkVOREVSQlVGRkVSLCBpbmZvLmdldFdlYkdMUmVuZGVyYnVm
ZmVyKCkpOworICAgIGNhc2UgV2ViR0xHZXRJbmZvOjpUX1dFQkdMVEVYVFVSRToKKyAgICAgICAg
cmV0dXJuIFY4RE9NV3JhcHBlcjo6Y29udmVydFRvVjhPYmplY3QoVjhDbGFzc0luZGV4OjpXRUJH
TFRFWFRVUkUsIGluZm8uZ2V0V2ViR0xUZXh0dXJlKCkpOworICAgIGNhc2UgV2ViR0xHZXRJbmZv
OjpUX1dFQkdMVU5TSUdORURCWVRFQVJSQVk6CisgICAgICAgIHJldHVybiBWOERPTVdyYXBwZXI6
OmNvbnZlcnRUb1Y4T2JqZWN0KFY4Q2xhc3NJbmRleDo6V0VCR0xVTlNJR05FREJZVEVBUlJBWSwg
aW5mby5nZXRXZWJHTFVuc2lnbmVkQnl0ZUFycmF5KCkpOworICAgIGRlZmF1bHQ6CisgICAgICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAg
fQorfQorCitlbnVtIE9iamVjdFR5cGUgeworICAgIGtCdWZmZXIsIGtSZW5kZXJidWZmZXIsIGtU
ZXh0dXJlLCBrVmVydGV4QXR0cmliCit9OworCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IGdldE9iamVjdFBhcmFtZXRlcihjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzLCBPYmplY3RUeXBl
IG9iamVjdFR5cGUpCit7CisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgIT0gMikgeworICAgICAgICBW
OFByb3h5OjpzZXRET01FeGNlcHRpb24oU1lOVEFYX0VSUik7CisgICAgICAgIHJldHVybiBub3RI
YW5kbGVkQnlJbnRlcmNlcHRvcigpOworICAgIH0KKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCA9CisgICAgICAgIFY4RE9NV3Jh
cHBlcjo6Y29udmVydERPTVdyYXBwZXJUb05hdGl2ZTxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+KGFy
Z3MuSG9sZGVyKCkpOworICAgIGJvb2wgb2s7CisgICAgdW5zaWduZWQgdGFyZ2V0ID0gdG9JbnQz
MihhcmdzWzBdLCBvayk7CisgICAgaWYgKCFvaykgeworICAgICAgICBWOFByb3h5OjpzZXRET01F
eGNlcHRpb24oU1lOVEFYX0VSUik7CisgICAgICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNl
cHRvcigpOworICAgIH0KKyAgICB1bnNpZ25lZCBwbmFtZSA9IHRvSW50MzIoYXJnc1sxXSwgb2sp
OworICAgIGlmICghb2spIHsKKyAgICAgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKFNZTlRB
WF9FUlIpOworICAgICAgICByZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsKKyAgICB9
CisgICAgV2ViR0xHZXRJbmZvIGluZm87CisgICAgc3dpdGNoIChvYmplY3RUeXBlKSB7CisgICAg
Y2FzZSBrQnVmZmVyOgorICAgICAgICBpbmZvID0gY29udGV4dC0+Z2V0QnVmZmVyUGFyYW1ldGVy
KHRhcmdldCwgcG5hbWUsIGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBrUmVuZGVyYnVm
ZmVyOgorICAgICAgICBpbmZvID0gY29udGV4dC0+Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKHRh
cmdldCwgcG5hbWUsIGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBrVGV4dHVyZToKKyAg
ICAgICAgaW5mbyA9IGNvbnRleHQtPmdldFRleFBhcmFtZXRlcih0YXJnZXQsIHBuYW1lLCBlYyk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2Uga1ZlcnRleEF0dHJpYjoKKyAgICAgICAgLy8gdGFy
Z2V0ID0+IGluZGV4CisgICAgICAgIGluZm8gPSBjb250ZXh0LT5nZXRWZXJ0ZXhBdHRyaWIodGFy
Z2V0LCBwbmFtZSwgZWMpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgaWYgKGVjKSB7Cisg
ICAgICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYyk7CisgICAgICAgIHJldHVybiB2ODo6
VW5kZWZpbmVkKCk7CisgICAgfQorICAgIHJldHVybiB0b1Y4KGluZm8pOworfQorCitlbnVtIFdo
aWNoUHJvZ3JhbUNhbGwgeworICAgIGtQcm9ncmFtUGFyYW1ldGVyLCBrVW5pZm9ybQorfTsKKwor
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBnZXRQcm9ncmFtUGFyYW1ldGVyKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MsIFdoaWNoUHJvZ3JhbUNhbGwgcHJvZ3JhbUNhbGwpCit7CisgICAg
aWYgKGFyZ3MuTGVuZ3RoKCkgIT0gMikgeworICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRp
b24oU1lOVEFYX0VSUik7CisgICAgICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigp
OworICAgIH0KKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkdMUmVuZGVyaW5n
Q29udGV4dCogY29udGV4dCA9CisgICAgICAgIFY4RE9NV3JhcHBlcjo6Y29udmVydERPTVdyYXBw
ZXJUb05hdGl2ZTxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+KGFyZ3MuSG9sZGVyKCkpOworICAgIFdl
YkdMUHJvZ3JhbSogcHJvZ3JhbSA9IFY4V2ViR0xQcm9ncmFtOjpIYXNJbnN0YW5jZShhcmdzWzBd
KSA/IHY4RE9NV3JhcHBlclRvPFdlYkdMUHJvZ3JhbT4oVjhDbGFzc0luZGV4OjpXRUJHTFBST0dS
QU0sIHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMDsKKyAgICBib29s
IG9rOworICAgIHVuc2lnbmVkIHBuYW1lID0gdG9JbnQzMihhcmdzWzFdLCBvayk7CisgICAgaWYg
KCFvaykgeworICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oU1lOVEFYX0VSUik7Cisg
ICAgICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOworICAgIH0KKyAgICBXZWJH
TEdldEluZm8gaW5mbzsKKyAgICBzd2l0Y2ggKHByb2dyYW1DYWxsKSB7CisgICAgY2FzZSBrUHJv
Z3JhbVBhcmFtZXRlcjoKKyAgICAgICAgaW5mbyA9IGNvbnRleHQtPmdldFByb2dyYW1QYXJhbWV0
ZXIocHJvZ3JhbSwgcG5hbWUsIGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBrVW5pZm9y
bToKKyAgICAgICAgLy8gcG5hbWUgLT4gbG9jYXRpb24KKyAgICAgICAgaW5mbyA9IGNvbnRleHQt
PmdldFVuaWZvcm0ocHJvZ3JhbSwgcG5hbWUsIGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIGlmIChlYykgeworICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oZWMpOworICAg
ICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgIH0KKyAgICByZXR1cm4gdG9WOChpbmZv
KTsKK30KKworCitDQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xSZW5kZXJpbmdDb250ZXh0R2V0QnVm
ZmVyUGFyYW1ldGVyKQoreworICAgIElOQ19TVEFUUygiRE9NLldlYkdMUmVuZGVyaW5nQ29udGV4
dC5nZXRCdWZmZXJQYXJhbWV0ZXIoKSIpOworICAgIHJldHVybiBnZXRPYmplY3RQYXJhbWV0ZXIo
YXJncywga0J1ZmZlcik7Cit9CisKK0NBTExCQUNLX0ZVTkNfREVDTChXZWJHTFJlbmRlcmluZ0Nv
bnRleHRHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIpCit7CisgICAgSU5DX1NUQVRT
KCJET00uV2ViR0xSZW5kZXJpbmdDb250ZXh0LmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcigpIik7CisKKyAgICBpZiAoYXJncy5MZW5ndGgoKSAhPSAzKSB7CisgICAgICAgIFY4UHJv
eHk6OnNldERPTUV4Y2VwdGlvbihTWU5UQVhfRVJSKTsKKyAgICAgICAgcmV0dXJuIG5vdEhhbmRs
ZWRCeUludGVyY2VwdG9yKCk7CisgICAgfQorCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Cisg
ICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0ID0KKyAgICAgICAgVjhET01XcmFwcGVy
Ojpjb252ZXJ0RE9NV3JhcHBlclRvTmF0aXZlPFdlYkdMUmVuZGVyaW5nQ29udGV4dD4oYXJncy5I
b2xkZXIoKSk7CisgICAgYm9vbCBvazsKKyAgICB1bnNpZ25lZCB0YXJnZXQgPSB0b0ludDMyKGFy
Z3NbMF0sIG9rKTsKKyAgICBpZiAoIW9rKSB7CisgICAgICAgIFY4UHJveHk6OnNldERPTUV4Y2Vw
dGlvbihTWU5UQVhfRVJSKTsKKyAgICAgICAgcmV0dXJuIG5vdEhhbmRsZWRCeUludGVyY2VwdG9y
KCk7CisgICAgfQorICAgIHVuc2lnbmVkIGF0dGFjaG1lbnQgPSB0b0ludDMyKGFyZ3NbMV0sIG9r
KTsKKyAgICBpZiAoIW9rKSB7CisgICAgICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihTWU5U
QVhfRVJSKTsKKyAgICAgICAgcmV0dXJuIG5vdEhhbmRsZWRCeUludGVyY2VwdG9yKCk7CisgICAg
fQorICAgIHVuc2lnbmVkIHBuYW1lID0gdG9JbnQzMihhcmdzWzJdLCBvayk7CisgICAgaWYgKCFv
aykgeworICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oU1lOVEFYX0VSUik7CisgICAg
ICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOworICAgIH0KKyAgICBXZWJHTEdl
dEluZm8gaW5mbyA9IGNvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcih0
YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCBlYyk7CisgICAgaWYgKGVjKSB7CisgICAgICAgIFY4
UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYyk7CisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVk
KCk7CisgICAgfQorICAgIHJldHVybiB0b1Y4KGluZm8pOworfQorCitDQUxMQkFDS19GVU5DX0RF
Q0woV2ViR0xSZW5kZXJpbmdDb250ZXh0R2V0UGFyYW1ldGVyKQoreworICAgIElOQ19TVEFUUygi
RE9NLldlYkdMUmVuZGVyaW5nQ29udGV4dC5nZXRQYXJhbWV0ZXIoKSIpOworCisgICAgaWYgKGFy
Z3MuTGVuZ3RoKCkgIT0gMSkgeworICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oU1lO
VEFYX0VSUik7CisgICAgICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOworICAg
IH0KKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4
dCogY29udGV4dCA9CisgICAgICAgIFY4RE9NV3JhcHBlcjo6Y29udmVydERPTVdyYXBwZXJUb05h
dGl2ZTxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+KGFyZ3MuSG9sZGVyKCkpOworICAgIGJvb2wgb2s7
CisgICAgdW5zaWduZWQgcG5hbWUgPSB0b0ludDMyKGFyZ3NbMF0sIG9rKTsKKyAgICBpZiAoIW9r
KSB7CisgICAgICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihTWU5UQVhfRVJSKTsKKyAgICAg
ICAgcmV0dXJuIG5vdEhhbmRsZWRCeUludGVyY2VwdG9yKCk7CisgICAgfQorICAgIFdlYkdMR2V0
SW5mbyBpbmZvID0gY29udGV4dC0+Z2V0UGFyYW1ldGVyKHBuYW1lLCBlYyk7CisgICAgaWYgKGVj
KSB7CisgICAgICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYyk7CisgICAgICAgIHJldHVy
biB2ODo6VW5kZWZpbmVkKCk7CisgICAgfQorICAgIHJldHVybiB0b1Y4KGluZm8pOworfQorCitD
QUxMQkFDS19GVU5DX0RFQ0woV2ViR0xSZW5kZXJpbmdDb250ZXh0R2V0UHJvZ3JhbVBhcmFtZXRl
cikKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRlcmluZ0NvbnRleHQuZ2V0UHJvZ3Jh
bVBhcmFtZXRlcigpIik7CisgICAgcmV0dXJuIGdldFByb2dyYW1QYXJhbWV0ZXIoYXJncywga1By
b2dyYW1QYXJhbWV0ZXIpOworfQorCitDQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xSZW5kZXJpbmdD
b250ZXh0R2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKQoreworICAgIElOQ19TVEFUUygiRE9NLldl
YkdMUmVuZGVyaW5nQ29udGV4dC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoKSIpOworICAgIHJl
dHVybiBnZXRPYmplY3RQYXJhbWV0ZXIoYXJncywga1JlbmRlcmJ1ZmZlcik7Cit9CisKK0NBTExC
QUNLX0ZVTkNfREVDTChXZWJHTFJlbmRlcmluZ0NvbnRleHRHZXRTaGFkZXJQYXJhbWV0ZXIpCit7
CisgICAgSU5DX1NUQVRTKCJET00uV2ViR0xSZW5kZXJpbmdDb250ZXh0LmdldFNoYWRlclBhcmFt
ZXRlcigpIik7CisKKyAgICBpZiAoYXJncy5MZW5ndGgoKSAhPSAyKSB7CisgICAgICAgIFY4UHJv
eHk6OnNldERPTUV4Y2VwdGlvbihTWU5UQVhfRVJSKTsKKyAgICAgICAgcmV0dXJuIG5vdEhhbmRs
ZWRCeUludGVyY2VwdG9yKCk7CisgICAgfQorCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Cisg
ICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0ID0KKyAgICAgICAgVjhET01XcmFwcGVy
Ojpjb252ZXJ0RE9NV3JhcHBlclRvTmF0aXZlPFdlYkdMUmVuZGVyaW5nQ29udGV4dD4oYXJncy5I
b2xkZXIoKSk7CisgICAgV2ViR0xTaGFkZXIqIHNoYWRlciA9IFY4V2ViR0xTaGFkZXI6Okhhc0lu
c3RhbmNlKGFyZ3NbMF0pID8gdjhET01XcmFwcGVyVG88V2ViR0xTaGFkZXI+KFY4Q2xhc3NJbmRl
eDo6V0VCR0xTSEFERVIsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDog
MDsKKyAgICBib29sIG9rOworICAgIHVuc2lnbmVkIHBuYW1lID0gdG9JbnQzMihhcmdzWzFdLCBv
ayk7CisgICAgaWYgKCFvaykgeworICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oU1lO
VEFYX0VSUik7CisgICAgICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOworICAg
IH0KKyAgICBXZWJHTEdldEluZm8gaW5mbyA9IGNvbnRleHQtPmdldFNoYWRlclBhcmFtZXRlcihz
aGFkZXIsIHBuYW1lLCBlYyk7CisgICAgaWYgKGVjKSB7CisgICAgICAgIFY4UHJveHk6OnNldERP
TUV4Y2VwdGlvbihlYyk7CisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgfQor
ICAgIHJldHVybiB0b1Y4KGluZm8pOworfQorCitDQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xSZW5k
ZXJpbmdDb250ZXh0R2V0VGV4UGFyYW1ldGVyKQoreworICAgIElOQ19TVEFUUygiRE9NLldlYkdM
UmVuZGVyaW5nQ29udGV4dC5nZXRUZXhQYXJhbWV0ZXIoKSIpOworICAgIHJldHVybiBnZXRPYmpl
Y3RQYXJhbWV0ZXIoYXJncywga1RleHR1cmUpOworfQorCitDQUxMQkFDS19GVU5DX0RFQ0woV2Vi
R0xSZW5kZXJpbmdDb250ZXh0R2V0VW5pZm9ybSkKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5XZWJH
TFJlbmRlcmluZ0NvbnRleHQuZ2V0VW5pZm9ybSgpIik7CisgICAgcmV0dXJuIGdldFByb2dyYW1Q
YXJhbWV0ZXIoYXJncywga1VuaWZvcm0pOworfQorCitDQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xS
ZW5kZXJpbmdDb250ZXh0R2V0VmVydGV4QXR0cmliKQoreworICAgIElOQ19TVEFUUygiRE9NLldl
YkdMUmVuZGVyaW5nQ29udGV4dC5nZXRWZXJ0ZXhBdHRyaWIoKSIpOworICAgIHJldHVybiBnZXRP
YmplY3RQYXJhbWV0ZXIoYXJncywga1ZlcnRleEF0dHJpYik7Cit9CisKIENBTExCQUNLX0ZVTkNf
REVDTChXZWJHTFJlbmRlcmluZ0NvbnRleHRUZXhJbWFnZTJEKQogewogICAgIElOQ19TVEFUUygi
RE9NLldlYkdMUmVuZGVyaW5nQ29udGV4dC50ZXhJbWFnZTJEKCkiKTsKSW5kZXg6IFdlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzTnVtYmVyQXJyYXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzTnVtYmVyQXJyYXkuY3BwCShyZXZpc2lvbiA1MTIyNikKKysrIFdl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzTnVtYmVyQXJyYXkuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFC
TEUoM0RfQ0FOVkFTKQotCi0jaW5jbHVkZSAiQ2FudmFzTnVtYmVyQXJyYXkuaCIKLSNpbmNsdWRl
ICJQbGF0Zm9ybVN0cmluZy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCi1QYXNzUmVm
UHRyPENhbnZhc051bWJlckFycmF5PiBDYW52YXNOdW1iZXJBcnJheTo6Y3JlYXRlKHVuc2lnbmVk
IGxlbmd0aCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IENhbnZhc051bWJlckFycmF5KGxl
bmd0aCkpOwotfQotCi1DYW52YXNOdW1iZXJBcnJheTo6Q2FudmFzTnVtYmVyQXJyYXkodW5zaWdu
ZWQgbGVuZ3RoKQotICAgIDogbV9kYXRhKGxlbmd0aCkKLXsKLX0KLQotfQotCi0jZW5kaWYgLy8g
RU5BQkxFKDNEX0NBTlZBUykKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzTnVtYmVy
QXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc051bWJlckFy
cmF5LmgJKHJldmlzaW9uIDUxMjI2KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNOdW1i
ZXJBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDU1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZu
ZGVmIENhbnZhc051bWJlckFycmF5X2gKLSNkZWZpbmUgQ2FudmFzTnVtYmVyQXJyYXlfaAotCi0j
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgot
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDxsaW1pdHM+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotICAgIGNsYXNzIFN0cmluZzsKLSAgICAKLSAgICBjbGFzcyBDYW52YXNOdW1i
ZXJBcnJheSA6IHB1YmxpYyBSZWZDb3VudGVkPENhbnZhc051bWJlckFycmF5PiB7Ci0gICAgcHVi
bGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXNOdW1iZXJBcnJheT4gY3JlYXRl
KHVuc2lnbmVkIGxlbmd0aCk7Ci0gICAgICAgIAotICAgICAgICBWZWN0b3I8ZmxvYXQ+JiBkYXRh
KCkgeyByZXR1cm4gbV9kYXRhOyB9Ci0gICAgICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIGRhdGEo
KSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KLQotICAgICAgICB1bnNpZ25lZCBsZW5ndGgoKSBj
b25zdCB7IHJldHVybiBtX2RhdGEuc2l6ZSgpOyB9Ci0gICAgICAgIGZsb2F0IGl0ZW0odW5zaWdu
ZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIChpbmRleCA+PSBtX2RhdGEuc2l6ZSgpKSA/IDAgOiBt
X2RhdGFbaW5kZXhdOyB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBDYW52YXNOdW1iZXJBcnJh
eSh1bnNpZ25lZCBsZW5ndGgpOwotICAgICAgICBWZWN0b3I8ZmxvYXQ+IG1fZGF0YTsKLSAgICB9
OwotICAgIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gQ2FudmFzTnVtYmVy
QXJyYXlfaApJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNOdW1iZXJBcnJheS5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNOdW1iZXJBcnJheS5pZGwJ
KHJldmlzaW9uIDUxMjI2KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNOdW1iZXJBcnJh
eS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEsMzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLW1vZHVsZSBo
dG1sIHsKLSAgICBpbnRlcmZhY2UgWwotICAgICAgICBDb25kaXRpb25hbD0zRF9DQU5WQVMsCi0g
ICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3IsCi0gICAgICAgIEhhc0N1c3RvbUluZGV4R2V0dGVy
Ci0gICAgXSBDYW52YXNOdW1iZXJBcnJheSB7Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1
bnNpZ25lZCBsb25nIGxlbmd0aDsKLSAgICB9OwotfQpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzT2JqZWN0LmNwcAkocmV2aXNpb24gNTEyMjYpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIAogQ2FudmFzT2JqZWN0OjpDYW52YXNPYmplY3QoV2ViR0xSZW5kZXJp
bmdDb250ZXh0KiBjb250ZXh0KQogICAgIDogbV9vYmplY3QoMCkKKyAgICAsIG1fc2hvdWxkRGVs
ZXRlT2JqZWN0KHRydWUpCiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKIHsKIH0KQEAgLTQ0LDI0
ICs0NSwyNiBAQCBDYW52YXNPYmplY3Q6On5DYW52YXNPYmplY3QoKQogICAgICAgICBtX2NvbnRl
eHQtPnJlbW92ZU9iamVjdCh0aGlzKTsKIH0KIAotdm9pZCBDYW52YXNPYmplY3Q6OnNldE9iamVj
dChQbGF0Zm9ybTNET2JqZWN0IG9iamVjdCkKK3ZvaWQgQ2FudmFzT2JqZWN0OjpzZXRPYmplY3Qo
UGxhdGZvcm0zRE9iamVjdCBvYmplY3QsIGJvb2wgc2hvdWxkRGVsZXRlT2JqZWN0KQogewogICAg
IGlmIChvYmplY3QgPT0gbV9vYmplY3QpCiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCiAgICAg
ZGVsZXRlT2JqZWN0KCk7CiAgICAgbV9vYmplY3QgPSBvYmplY3Q7CisgICAgbV9zaG91bGREZWxl
dGVPYmplY3QgPSBzaG91bGREZWxldGVPYmplY3Q7CiB9CiAKIHZvaWQgQ2FudmFzT2JqZWN0Ojpk
ZWxldGVPYmplY3QoKQogewogICAgIGlmIChtX29iamVjdCkgewotICAgICAgICBpZiAobV9jb250
ZXh0KSB7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dDNEKCktPm1ha2VD
b250ZXh0Q3VycmVudCgpOwotICAgICAgICAgICAgX2RlbGV0ZU9iamVjdChtX29iamVjdCk7Ci0g
ICAgICAgIH0KKyAgICAgICAgaWYgKG1fc2hvdWxkRGVsZXRlT2JqZWN0KQorICAgICAgICAgICAg
aWYgKG1fY29udGV4dCkgeworICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Z3JhcGhpY3NDb250
ZXh0M0QoKS0+bWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgICAgICAgICAgICAgX2RlbGV0ZU9i
amVjdChtX29iamVjdCk7CisgICAgICAgICAgICB9CiAgICAgICAgIG1fb2JqZWN0ID0gMDsKICAg
ICB9CisgICAgbV9zaG91bGREZWxldGVPYmplY3QgPSB0cnVlOwogfQogCiB9CkluZGV4OiBXZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzT2JqZWN0LmgJKHJldmlzaW9uIDUxMjI2KQorKysgV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgfkNhbnZhc09iamVjdCgpOwogICAg
ICAgICAKICAgICAgICAgUGxhdGZvcm0zRE9iamVjdCBvYmplY3QoKSBjb25zdCB7IHJldHVybiBt
X29iamVjdDsgfQotICAgICAgICB2b2lkIHNldE9iamVjdChQbGF0Zm9ybTNET2JqZWN0KTsKKyAg
ICAgICAgdm9pZCBzZXRPYmplY3QoUGxhdGZvcm0zRE9iamVjdCwgYm9vbCBzaG91bGREZWxldGVP
YmplY3QpOwogICAgICAgICB2b2lkIGRlbGV0ZU9iamVjdCgpOwogICAgICAgICAKICAgICAgICAg
dm9pZCBkZXRhY2hDb250ZXh0KCkKQEAgLTU3LDYgKzU3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIAogICAgIHByaXZhdGU6CiAgICAgICAgIFBsYXRmb3JtM0RPYmplY3QgbV9vYmplY3Q7
CisgICAgICAgIGJvb2wgbV9zaG91bGREZWxldGVPYmplY3Q7CiAgICAgICAgIFdlYkdMUmVuZGVy
aW5nQ29udGV4dCogbV9jb250ZXh0OwogICAgIH07CiAgICAgCkluZGV4OiBXZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMQnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMQnVmZmVyLmNwcAkocmV2aXNpb24gNTEyMjYpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMQnVmZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTYgKzMxLDI3IEBACiAjaW5j
bHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAg
ICAKKwogUGFzc1JlZlB0cjxXZWJHTEJ1ZmZlcj4gV2ViR0xCdWZmZXI6OmNyZWF0ZShXZWJHTFJl
bmRlcmluZ0NvbnRleHQqIGN0eCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdMQnVm
ZmVyKGN0eCkpOwogfQogCitQYXNzUmVmUHRyPFdlYkdMQnVmZmVyPiBXZWJHTEJ1ZmZlcjo6Y3Jl
YXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY3R4LCBQbGF0Zm9ybTNET2JqZWN0IG9iaikKK3sK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdMQnVmZmVyKGN0eCwgb2JqKSk7Cit9CisKIFdl
YkdMQnVmZmVyOjpXZWJHTEJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGN0eCkKICAgICA6
IENhbnZhc09iamVjdChjdHgpCiB7Ci0gICAgc2V0T2JqZWN0KGNvbnRleHQoKS0+Z3JhcGhpY3ND
b250ZXh0M0QoKS0+Y3JlYXRlQnVmZmVyKCkpOworICAgIHNldE9iamVjdChjb250ZXh0KCktPmdy
YXBoaWNzQ29udGV4dDNEKCktPmNyZWF0ZUJ1ZmZlcigpLCB0cnVlKTsKK30KKworV2ViR0xCdWZm
ZXI6OldlYkdMQnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY3R4LCBQbGF0Zm9ybTNET2Jq
ZWN0IG9iaikKKyAgICA6IENhbnZhc09iamVjdChjdHgpCit7CisgICAgc2V0T2JqZWN0KG9iaiwg
ZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMQnVmZmVyOjpfZGVsZXRlT2JqZWN0KFBsYXRmb3JtM0RP
YmplY3Qgb2JqZWN0KQpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaAkocmV2aXNpb24g
NTEyMjYpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDE5ICszMiwyNCBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKKwogICAgIGNsYXNzIFdlYkdMQnVmZmVyIDogcHVibGlj
IENhbnZhc09iamVjdCB7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5XZWJHTEJ1ZmZl
cigpIHsgZGVsZXRlT2JqZWN0KCk7IH0KLSAgICAgICAgCisKICAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8V2ViR0xCdWZmZXI+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqKTsKLSAgICAg
ICAgCisKKyAgICAgICAgLy8gRm9yIHF1ZXJ5aW5nIHByZXZpb3VzbHkgY3JlYXRlZCBvYmplY3Rz
IHZpYSBlLmcuIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcgorICAgICAgICAvLyBG
SVhNRTogc2hvdWxkIGNvbnNpZGVyIGNhbm9uaWNhbGl6aW5nIHRoZXNlIG9iamVjdHMKKyAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViR0xCdWZmZXI+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0Nv
bnRleHQqLCBQbGF0Zm9ybTNET2JqZWN0KTsKKwogICAgIHByb3RlY3RlZDoKICAgICAgICAgV2Vi
R0xCdWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0Kik7Ci0gICAgICAgIAorICAgICAgICBXZWJH
TEJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHQqLCBQbGF0Zm9ybTNET2JqZWN0IG9iaik7CisK
ICAgICAgICAgdmlydHVhbCB2b2lkIF9kZWxldGVPYmplY3QoUGxhdGZvcm0zRE9iamVjdCBvKTsK
ICAgICB9OwotICAgIAorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBXZWJH
TEJ1ZmZlcl9oCkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAJ
KHJldmlzaW9uIDUxMjI2KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBQYXNzUmVmUHRyPFdlYkdMRnJh
bWVidWZmZXI+IFdlYkdMRnJhbWViCiBXZWJHTEZyYW1lYnVmZmVyOjpXZWJHTEZyYW1lYnVmZmVy
KFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY3R4KQogICAgIDogQ2FudmFzT2JqZWN0KGN0eCkKIHsK
LSAgICBzZXRPYmplY3QoY29udGV4dCgpLT5ncmFwaGljc0NvbnRleHQzRCgpLT5jcmVhdGVGcmFt
ZWJ1ZmZlcigpKTsKKyAgICBzZXRPYmplY3QoY29udGV4dCgpLT5ncmFwaGljc0NvbnRleHQzRCgp
LT5jcmVhdGVGcmFtZWJ1ZmZlcigpLCB0cnVlKTsKIH0KIAogdm9pZCBXZWJHTEZyYW1lYnVmZmVy
OjpfZGVsZXRlT2JqZWN0KFBsYXRmb3JtM0RPYmplY3Qgb2JqZWN0KQpJbmRleDogV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTEdldEluZm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xHZXRJbmZvLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xHZXRJbmZvLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMTUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2lmIEVOQUJMRSgzRF9DQU5WQVMpCisKKyNpbmNsdWRlICJXZWJHTEdldEluZm8uaCIK
KyNpbmNsdWRlICJXZWJHTEJ1ZmZlci5oIgorI2luY2x1ZGUgIldlYkdMRmxvYXRBcnJheS5oIgor
I2luY2x1ZGUgIldlYkdMRnJhbWVidWZmZXIuaCIKKyNpbmNsdWRlICJXZWJHTEludEFycmF5Lmgi
CisjaW5jbHVkZSAiV2ViR0xQcm9ncmFtLmgiCisjaW5jbHVkZSAiV2ViR0xSZW5kZXJidWZmZXIu
aCIKKyNpbmNsdWRlICJXZWJHTFRleHR1cmUuaCIKKyNpbmNsdWRlICJXZWJHTFVuc2lnbmVkQnl0
ZUFycmF5LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV2ViR0xHZXRJbmZvOjpXZWJHTEdl
dEluZm8oYm9vbCB2YWx1ZSkKKyAgICA6IG1fdHlwZShUX0JPT0wpCisgICAgLCBtX2Jvb2wodmFs
dWUpCit7Cit9CisKK1dlYkdMR2V0SW5mbzo6V2ViR0xHZXRJbmZvKGZsb2F0IHZhbHVlKQorICAg
IDogbV90eXBlKFRfRkxPQVQpCisgICAgLCBtX2Zsb2F0KHZhbHVlKQoreworfQorCitXZWJHTEdl
dEluZm86OldlYkdMR2V0SW5mbyhsb25nIHZhbHVlKQorICAgIDogbV90eXBlKFRfTE9ORykKKyAg
ICAsIG1fbG9uZyh2YWx1ZSkKK3sKK30KKworV2ViR0xHZXRJbmZvOjpXZWJHTEdldEluZm8oKQor
ICAgIDogbV90eXBlKFRfTlVMTCkKK3sKK30KKworV2ViR0xHZXRJbmZvOjpXZWJHTEdldEluZm8o
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKKyAgICA6IG1fdHlwZShUX1NUUklORykKKyAgICAsIG1fc3Ry
aW5nKHZhbHVlKQoreworfQorCitXZWJHTEdldEluZm86OldlYkdMR2V0SW5mbyh1bnNpZ25lZCBs
b25nIHZhbHVlKQorICAgIDogbV90eXBlKFRfVU5TSUdORURfTE9ORykKKyAgICAsIG1fdW5zaWdu
ZWRMb25nKHZhbHVlKQoreworfQorCitXZWJHTEdldEluZm86OldlYkdMR2V0SW5mbyhQYXNzUmVm
UHRyPFdlYkdMQnVmZmVyPiB2YWx1ZSkKKyAgICA6IG1fdHlwZShUX1dFQkdMQlVGRkVSKQorICAg
ICwgbV93ZWJnbEJ1ZmZlcih2YWx1ZSkKK3sKK30KKworV2ViR0xHZXRJbmZvOjpXZWJHTEdldElu
Zm8oUGFzc1JlZlB0cjxXZWJHTEZsb2F0QXJyYXk+IHZhbHVlKQorICAgIDogbV90eXBlKFRfV0VC
R0xGTE9BVEFSUkFZKQorICAgICwgbV93ZWJnbEZsb2F0QXJyYXkodmFsdWUpCit7Cit9CisKK1dl
YkdMR2V0SW5mbzo6V2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xGcmFtZWJ1ZmZlcj4gdmFs
dWUpCisgICAgOiBtX3R5cGUoVF9XRUJHTEZSQU1FQlVGRkVSKQorICAgICwgbV93ZWJnbEZyYW1l
YnVmZmVyKHZhbHVlKQoreworfQorCitXZWJHTEdldEluZm86OldlYkdMR2V0SW5mbyhQYXNzUmVm
UHRyPFdlYkdMSW50QXJyYXk+IHZhbHVlKQorICAgIDogbV90eXBlKFRfV0VCR0xJTlRBUlJBWSkK
KyAgICAsIG1fd2ViZ2xJbnRBcnJheSh2YWx1ZSkKK3sKK30KKworV2ViR0xHZXRJbmZvOjpXZWJH
TEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTFByb2dyYW0+IHZhbHVlKQorICAgIDogbV90eXBlKFRf
V0VCR0xQUk9HUkFNKQorICAgICwgbV93ZWJnbFByb2dyYW0odmFsdWUpCit7Cit9CisKK1dlYkdM
R2V0SW5mbzo6V2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xSZW5kZXJidWZmZXI+IHZhbHVl
KQorICAgIDogbV90eXBlKFRfV0VCR0xSRU5ERVJCVUZGRVIpCisgICAgLCBtX3dlYmdsUmVuZGVy
YnVmZmVyKHZhbHVlKQoreworfQorCitXZWJHTEdldEluZm86OldlYkdMR2V0SW5mbyhQYXNzUmVm
UHRyPFdlYkdMVGV4dHVyZT4gdmFsdWUpCisgICAgOiBtX3R5cGUoVF9XRUJHTFRFWFRVUkUpCisg
ICAgLCBtX3dlYmdsVGV4dHVyZSh2YWx1ZSkKK3sKK30KKworV2ViR0xHZXRJbmZvOjpXZWJHTEdl
dEluZm8oUGFzc1JlZlB0cjxXZWJHTFVuc2lnbmVkQnl0ZUFycmF5PiB2YWx1ZSkKKyAgICA6IG1f
dHlwZShUX1dFQkdMVU5TSUdORURCWVRFQVJSQVkpCisgICAgLCBtX3dlYmdsVW5zaWduZWRCeXRl
QXJyYXkodmFsdWUpCit7Cit9CisKK1dlYkdMR2V0SW5mbzo6fldlYkdMR2V0SW5mbygpCit7Cit9
CisKK1dlYkdMR2V0SW5mbzo6VHlwZSBXZWJHTEdldEluZm86OmdldFR5cGUoKSBjb25zdAorewor
ICAgIHJldHVybiBtX3R5cGU7Cit9CisKK2Jvb2wgV2ViR0xHZXRJbmZvOjpnZXRCb29sKCkgY29u
c3QKK3sKKyAgICBBU1NFUlQoZ2V0VHlwZSgpID09IFRfQk9PTCk7CisgICAgcmV0dXJuIG1fYm9v
bDsKK30KKworZmxvYXQgV2ViR0xHZXRJbmZvOjpnZXRGbG9hdCgpIGNvbnN0Cit7CisgICAgQVNT
RVJUKGdldFR5cGUoKSA9PSBUX0ZMT0FUKTsKKyAgICByZXR1cm4gbV9mbG9hdDsKK30KKworbG9u
ZyBXZWJHTEdldEluZm86OmdldExvbmcoKSBjb25zdAoreworICAgIEFTU0VSVChnZXRUeXBlKCkg
PT0gVF9MT05HKTsKKyAgICByZXR1cm4gbV9sb25nOworfQorCitjb25zdCBTdHJpbmcmIFdlYkdM
R2V0SW5mbzo6Z2V0U3RyaW5nKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZ2V0VHlwZSgpID09IFRf
U1RSSU5HKTsKKyAgICByZXR1cm4gbV9zdHJpbmc7Cit9CisKK3Vuc2lnbmVkIGxvbmcgV2ViR0xH
ZXRJbmZvOjpnZXRVbnNpZ25lZExvbmcoKSBjb25zdAoreworICAgIEFTU0VSVChnZXRUeXBlKCkg
PT0gVF9VTlNJR05FRF9MT05HKTsKKyAgICByZXR1cm4gbV91bnNpZ25lZExvbmc7Cit9CisKK1Bh
c3NSZWZQdHI8V2ViR0xCdWZmZXI+IFdlYkdMR2V0SW5mbzo6Z2V0V2ViR0xCdWZmZXIoKSBjb25z
dAoreworICAgIEFTU0VSVChnZXRUeXBlKCkgPT0gVF9XRUJHTEJVRkZFUik7CisgICAgcmV0dXJu
IG1fd2ViZ2xCdWZmZXI7Cit9CisKK1Bhc3NSZWZQdHI8V2ViR0xGbG9hdEFycmF5PiBXZWJHTEdl
dEluZm86OmdldFdlYkdMRmxvYXRBcnJheSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGdldFR5cGUo
KSA9PSBUX1dFQkdMRkxPQVRBUlJBWSk7CisgICAgcmV0dXJuIG1fd2ViZ2xGbG9hdEFycmF5Owor
fQorCitQYXNzUmVmUHRyPFdlYkdMRnJhbWVidWZmZXI+IFdlYkdMR2V0SW5mbzo6Z2V0V2ViR0xG
cmFtZWJ1ZmZlcigpIGNvbnN0Cit7CisgICAgQVNTRVJUKGdldFR5cGUoKSA9PSBUX1dFQkdMRlJB
TUVCVUZGRVIpOworICAgIHJldHVybiBtX3dlYmdsRnJhbWVidWZmZXI7Cit9CisKK1Bhc3NSZWZQ
dHI8V2ViR0xJbnRBcnJheT4gV2ViR0xHZXRJbmZvOjpnZXRXZWJHTEludEFycmF5KCkgY29uc3QK
K3sKKyAgICBBU1NFUlQoZ2V0VHlwZSgpID09IFRfV0VCR0xJTlRBUlJBWSk7CisgICAgcmV0dXJu
IG1fd2ViZ2xJbnRBcnJheTsKK30KKworUGFzc1JlZlB0cjxXZWJHTFByb2dyYW0+IFdlYkdMR2V0
SW5mbzo6Z2V0V2ViR0xQcm9ncmFtKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZ2V0VHlwZSgpID09
IFRfV0VCR0xQUk9HUkFNKTsKKyAgICByZXR1cm4gbV93ZWJnbFByb2dyYW07Cit9CisKK1Bhc3NS
ZWZQdHI8V2ViR0xSZW5kZXJidWZmZXI+IFdlYkdMR2V0SW5mbzo6Z2V0V2ViR0xSZW5kZXJidWZm
ZXIoKSBjb25zdAoreworICAgIEFTU0VSVChnZXRUeXBlKCkgPT0gVF9XRUJHTFJFTkRFUkJVRkZF
Uik7CisgICAgcmV0dXJuIG1fd2ViZ2xSZW5kZXJidWZmZXI7Cit9CisKK1Bhc3NSZWZQdHI8V2Vi
R0xUZXh0dXJlPiBXZWJHTEdldEluZm86OmdldFdlYkdMVGV4dHVyZSgpIGNvbnN0Cit7CisgICAg
QVNTRVJUKGdldFR5cGUoKSA9PSBUX1dFQkdMVEVYVFVSRSk7CisgICAgcmV0dXJuIG1fd2ViZ2xU
ZXh0dXJlOworfQorCitQYXNzUmVmUHRyPFdlYkdMVW5zaWduZWRCeXRlQXJyYXk+IFdlYkdMR2V0
SW5mbzo6Z2V0V2ViR0xVbnNpZ25lZEJ5dGVBcnJheSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGdl
dFR5cGUoKSA9PSBUX1dFQkdMVU5TSUdORURCWVRFQVJSQVkpOworICAgIHJldHVybiBtX3dlYmds
VW5zaWduZWRCeXRlQXJyYXk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRSgzRF9DQU5WQVMpCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMR2V0SW5mby5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46ZW9sLXN0eWxlCiAg
ICsgTEYKCkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmgJKHJldmlzaW9uIDApCisr
KyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDEzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBXZWJHTEdldEluZm9faAorI2RlZmluZSBXZWJHTEdldEluZm9faAorCisjaW5jbHVk
ZSAid3RmL1Bhc3NSZWZQdHIuaCIKKyNpbmNsdWRlICJ3dGYvUmVmUHRyLmgiCisjaW5jbHVkZSAi
UGxhdGZvcm1TdHJpbmcuaCIKKworI2luY2x1ZGUgIldlYkdMQnVmZmVyLmgiCisjaW5jbHVkZSAi
V2ViR0xGbG9hdEFycmF5LmgiCisjaW5jbHVkZSAiV2ViR0xGcmFtZWJ1ZmZlci5oIgorI2luY2x1
ZGUgIldlYkdMSW50QXJyYXkuaCIKKy8vIEZJWE1FOiBpbXBsZW1lbnQgV2ViR0xPYmplY3RBcnJh
eQorLy8jaW5jbHVkZSAiV2ViR0xPYmplY3RBcnJheS5oIgorI2luY2x1ZGUgIldlYkdMUHJvZ3Jh
bS5oIgorI2luY2x1ZGUgIldlYkdMUmVuZGVyYnVmZmVyLmgiCisjaW5jbHVkZSAiV2ViR0xUZXh0
dXJlLmgiCisjaW5jbHVkZSAiV2ViR0xVbnNpZ25lZEJ5dGVBcnJheS5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKKy8vIEEgdGFnZ2VkIHVuaW9uIHJlcHJlc2VudGluZyB0aGUgcmVzdWx0IG9m
IGdldCBxdWVyaWVzIGxpa2UKKy8vIGdldFBhcmFtZXRlciAoZW5jb21wYXNzaW5nIGdldEJvb2xl
YW52LCBnZXRJbnRlZ2VydiwgZ2V0RmxvYXR2KSBhbmQKKy8vIHNpbWlsYXIgdmFyaWFudHMuIEZv
ciByZWZlcmVuY2UgY291bnRlZCB0eXBlcywgaW5jcmVtZW50cyBhbmQKKy8vIGRlY3JlbWVudHMg
dGhlIHJlZmVyZW5jZSBjb3VudCBvZiB0aGUgdGFyZ2V0IG9iamVjdC4KKworY2xhc3MgV2ViR0xH
ZXRJbmZvIHsKK3B1YmxpYzoKKyAgICBlbnVtIFR5cGUgeworICAgICAgICBUX0JPT0wsCisgICAg
ICAgIFRfRkxPQVQsCisgICAgICAgIFRfTE9ORywKKyAgICAgICAgVF9OVUxMLAorICAgICAgICBU
X1NUUklORywKKyAgICAgICAgVF9VTlNJR05FRF9MT05HLAorICAgICAgICBUX1dFQkdMQlVGRkVS
LAorICAgICAgICBUX1dFQkdMRkxPQVRBUlJBWSwKKyAgICAgICAgVF9XRUJHTEZSQU1FQlVGRkVS
LAorICAgICAgICBUX1dFQkdMSU5UQVJSQVksCisgICAgICAgIFRfV0VCR0xPQkpFQ1RBUlJBWSwK
KyAgICAgICAgVF9XRUJHTFBST0dSQU0sCisgICAgICAgIFRfV0VCR0xSRU5ERVJCVUZGRVIsCisg
ICAgICAgIFRfV0VCR0xURVhUVVJFLAorICAgICAgICBUX1dFQkdMVU5TSUdORURCWVRFQVJSQVkK
KyAgICB9OworCisgICAgV2ViR0xHZXRJbmZvKGJvb2wgdmFsdWUpOworICAgIFdlYkdMR2V0SW5m
byhmbG9hdCB2YWx1ZSk7CisgICAgV2ViR0xHZXRJbmZvKGxvbmcgdmFsdWUpOworICAgIC8vIFJl
cHJlc2VudHMgdGhlIE5VTEwgdmFsdWUgYW5kIHR5cGUKKyAgICBXZWJHTEdldEluZm8oKTsKKyAg
ICBXZWJHTEdldEluZm8oY29uc3QgU3RyaW5nJiB2YWx1ZSk7CisgICAgV2ViR0xHZXRJbmZvKHVu
c2lnbmVkIGxvbmcgdmFsdWUpOworICAgIFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMQnVm
ZmVyPiB2YWx1ZSk7CisgICAgV2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xGbG9hdEFycmF5
PiB2YWx1ZSk7CisgICAgV2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xGcmFtZWJ1ZmZlcj4g
dmFsdWUpOworICAgIFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IHZhbHVl
KTsKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50IFdlYkdMT2JqZWN0QXJyYXkKKyAgICAvLyBXZWJH
TEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTE9iamVjdEFycmF5PiB2YWx1ZSk7CisgICAgV2ViR0xH
ZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xQcm9ncmFtPiB2YWx1ZSk7CisgICAgV2ViR0xHZXRJbmZv
KFBhc3NSZWZQdHI8V2ViR0xSZW5kZXJidWZmZXI+IHZhbHVlKTsKKyAgICBXZWJHTEdldEluZm8o
UGFzc1JlZlB0cjxXZWJHTFRleHR1cmU+IHZhbHVlKTsKKyAgICBXZWJHTEdldEluZm8oUGFzc1Jl
ZlB0cjxXZWJHTFVuc2lnbmVkQnl0ZUFycmF5PiB2YWx1ZSk7CisKKyAgICB2aXJ0dWFsIH5XZWJH
TEdldEluZm8oKTsKKworICAgIFR5cGUgZ2V0VHlwZSgpIGNvbnN0OworCisgICAgYm9vbCBnZXRC
b29sKCkgY29uc3Q7CisgICAgZmxvYXQgZ2V0RmxvYXQoKSBjb25zdDsKKyAgICBsb25nIGdldExv
bmcoKSBjb25zdDsKKyAgICBjb25zdCBTdHJpbmcmIGdldFN0cmluZygpIGNvbnN0OworICAgIHVu
c2lnbmVkIGxvbmcgZ2V0VW5zaWduZWRMb25nKCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxXZWJH
TEJ1ZmZlcj4gZ2V0V2ViR0xCdWZmZXIoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPFdlYkdMRmxv
YXRBcnJheT4gZ2V0V2ViR0xGbG9hdEFycmF5KCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxXZWJH
TEZyYW1lYnVmZmVyPiBnZXRXZWJHTEZyYW1lYnVmZmVyKCkgY29uc3Q7CisgICAgUGFzc1JlZlB0
cjxXZWJHTEludEFycmF5PiBnZXRXZWJHTEludEFycmF5KCkgY29uc3Q7CisgICAgLy8gRklYTUU6
IGltcGxlbWVudCBXZWJHTE9iamVjdEFycmF5CisgICAgLy8gUGFzc1JlZlB0cjxXZWJHTE9iamVj
dEFycmF5PiBnZXRXZWJHTE9iamVjdEFycmF5KCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxXZWJH
TFByb2dyYW0+IGdldFdlYkdMUHJvZ3JhbSgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8V2ViR0xS
ZW5kZXJidWZmZXI+IGdldFdlYkdMUmVuZGVyYnVmZmVyKCkgY29uc3Q7CisgICAgUGFzc1JlZlB0
cjxXZWJHTFRleHR1cmU+IGdldFdlYkdMVGV4dHVyZSgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8
V2ViR0xVbnNpZ25lZEJ5dGVBcnJheT4gZ2V0V2ViR0xVbnNpZ25lZEJ5dGVBcnJheSgpIGNvbnN0
OworCitwcml2YXRlOgorICAgIFR5cGUgbV90eXBlOworICAgIGJvb2wgbV9ib29sOworICAgIGZs
b2F0IG1fZmxvYXQ7CisgICAgbG9uZyBtX2xvbmc7CisgICAgU3RyaW5nIG1fc3RyaW5nOworICAg
IHVuc2lnbmVkIGxvbmcgbV91bnNpZ25lZExvbmc7CisgICAgUmVmUHRyPFdlYkdMQnVmZmVyPiBt
X3dlYmdsQnVmZmVyOworICAgIFJlZlB0cjxXZWJHTEZsb2F0QXJyYXk+IG1fd2ViZ2xGbG9hdEFy
cmF5OworICAgIFJlZlB0cjxXZWJHTEZyYW1lYnVmZmVyPiBtX3dlYmdsRnJhbWVidWZmZXI7Cisg
ICAgUmVmUHRyPFdlYkdMSW50QXJyYXk+IG1fd2ViZ2xJbnRBcnJheTsKKyAgICAvLyBGSVhNRTog
aW1wbGVtZW50IFdlYkdMT2JqZWN0QXJyYXkKKyAgICAvLyBSZWZQdHI8V2ViR0xPYmplY3RBcnJh
eT4gbV93ZWJnbE9iamVjdEFycmF5OworICAgIFJlZlB0cjxXZWJHTFByb2dyYW0+IG1fd2ViZ2xQ
cm9ncmFtOworICAgIFJlZlB0cjxXZWJHTFJlbmRlcmJ1ZmZlcj4gbV93ZWJnbFJlbmRlcmJ1ZmZl
cjsKKyAgICBSZWZQdHI8V2ViR0xUZXh0dXJlPiBtX3dlYmdsVGV4dHVyZTsKKyAgICBSZWZQdHI8
V2ViR0xVbnNpZ25lZEJ5dGVBcnJheT4gbV93ZWJnbFVuc2lnbmVkQnl0ZUFycmF5OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgIC8vIFdlYkdMR2V0SW5mb19oCgpQcm9w
ZXJ0eSBjaGFuZ2VzIG9uOiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5oCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KTmFtZTogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFByb2dyYW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xQcm9ncmFtLmNwcAkocmV2aXNpb24gNTEyMjYpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUHJvZ3JhbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgUGFzc1Jl
ZlB0cjxXZWJHTFByb2dyYW0+IFdlYkdMUHJvZ3JhbTo6YwogV2ViR0xQcm9ncmFtOjpXZWJHTFBy
b2dyYW0oV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjdHgpCiAgICAgOiBDYW52YXNPYmplY3QoY3R4
KQogewotICAgIHNldE9iamVjdChjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dDNEKCktPmNyZWF0
ZVByb2dyYW0oKSk7CisgICAgc2V0T2JqZWN0KGNvbnRleHQoKS0+Z3JhcGhpY3NDb250ZXh0M0Qo
KS0+Y3JlYXRlUHJvZ3JhbSgpLCB0cnVlKTsKIH0KIAogdm9pZCBXZWJHTFByb2dyYW06Ol9kZWxl
dGVPYmplY3QoUGxhdGZvcm0zRE9iamVjdCBvYmplY3QpCkluZGV4OiBXZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyYnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyYnVmZmVyLmNwcAkocmV2aXNpb24gNTEyMjYpCisrKyBXZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTAg
KzM3LDIxIEBAIFBhc3NSZWZQdHI8V2ViR0xSZW5kZXJidWZmZXI+IFdlYkdMUmVuZGUKICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdMUmVuZGVyYnVmZmVyKGN0eCkpOwogfQogCitQYXNzUmVm
UHRyPFdlYkdMUmVuZGVyYnVmZmVyPiBXZWJHTFJlbmRlcmJ1ZmZlcjo6Y3JlYXRlKFdlYkdMUmVu
ZGVyaW5nQ29udGV4dCogY3R4LCBQbGF0Zm9ybTNET2JqZWN0IG9iaikKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFdlYkdMUmVuZGVyYnVmZmVyKGN0eCwgb2JqKSk7Cit9CisKIFdlYkdMUmVu
ZGVyYnVmZmVyOjpXZWJHTFJlbmRlcmJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGN0eCkK
ICAgICA6IENhbnZhc09iamVjdChjdHgpCiB7Ci0gICAgc2V0T2JqZWN0KGNvbnRleHQoKS0+Z3Jh
cGhpY3NDb250ZXh0M0QoKS0+Y3JlYXRlUmVuZGVyYnVmZmVyKCkpOworICAgIHNldE9iamVjdChj
b250ZXh0KCktPmdyYXBoaWNzQ29udGV4dDNEKCktPmNyZWF0ZVJlbmRlcmJ1ZmZlcigpLCB0cnVl
KTsKK30KKworV2ViR0xSZW5kZXJidWZmZXI6OldlYkdMUmVuZGVyYnVmZmVyKFdlYkdMUmVuZGVy
aW5nQ29udGV4dCogY3R4LCBQbGF0Zm9ybTNET2JqZWN0IG9iaikKKyAgICA6IENhbnZhc09iamVj
dChjdHgpCit7CisgICAgc2V0T2JqZWN0KG9iaiwgZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVu
ZGVyYnVmZmVyOjpfZGVsZXRlT2JqZWN0KFBsYXRmb3JtM0RPYmplY3Qgb2JqZWN0KQpJbmRleDog
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuaAkocmV2aXNpb24gNTEyMjYpCisr
KyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMyLDE5ICszMiwyNCBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKLSAgICAKKwogICAgIGNsYXNzIFdlYkdMUmVuZGVyYnVmZmVyIDogcHVi
bGljIENhbnZhc09iamVjdCB7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5XZWJHTFJl
bmRlcmJ1ZmZlcigpIHsgZGVsZXRlT2JqZWN0KCk7IH0KLSAgICAgICAgCisKICAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8V2ViR0xSZW5kZXJidWZmZXI+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0Nv
bnRleHQqKTsKLSAgICAgICAgCisKKyAgICAgICAgLy8gRm9yIHF1ZXJ5aW5nIHByZXZpb3VzbHkg
Y3JlYXRlZCBvYmplY3RzIHZpYSBlLmcuIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRl
cgorICAgICAgICAvLyBGSVhNRTogc2hvdWxkIGNvbnNpZGVyIGNhbm9uaWNhbGl6aW5nIHRoZXNl
IG9iamVjdHMKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViR0xSZW5kZXJidWZmZXI+IGNy
ZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqLCBQbGF0Zm9ybTNET2JqZWN0IHJlbmRlcmJ1ZmZl
cik7CisKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIFdlYkdMUmVuZGVyYnVmZmVyKFdlYkdMUmVu
ZGVyaW5nQ29udGV4dCopOwotICAgICAgICAKKyAgICAgICAgV2ViR0xSZW5kZXJidWZmZXIoV2Vi
R0xSZW5kZXJpbmdDb250ZXh0KiwgUGxhdGZvcm0zRE9iamVjdCk7CisKICAgICAgICAgdmlydHVh
bCB2b2lkIF9kZWxldGVPYmplY3QoUGxhdGZvcm0zRE9iamVjdCk7CiAgICAgfTsKLSAgICAKKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gV2ViR0xSZW5kZXJidWZmZXJfaApJ
bmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAko
cmV2aXNpb24gNTEyMjYpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDE3ICszOSwyMTAgQEAKICNpbmNsdWRlICJI
VE1MQ2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNs
dWRlICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCisvLyBPcGVuR0wgY29uc3RhbnRzIG5lZWRlZCBmb3IgYmluZEJ1ZmZlciAoYW5k
LCBpbXBsaWNpdGx5LCBnZXRQYXJhbWV0ZXIpCisjZGVmaW5lIEdMX0FSUkFZX0JVRkZFUiAgICAg
ICAgICAgICAgICAgICAgIDB4ODg5MgorI2RlZmluZSBHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUiAg
ICAgICAgICAgICAweDg4OTMKKworLy8gT3BlbkdMIGNvbnN0YW50cyBuZWVkZWQgZm9yIGJpbmRG
cmFtZWJ1ZmZlciAoYW5kLCBpbXBsaWNpdGx5LCBnZXRQYXJhbWV0ZXIpCisjZGVmaW5lIEdMX0ZS
QU1FQlVGRkVSICAgICAgICAgICAgICAgICAgICAgIDB4OEQ0MAorCisvLyBPcGVuR0wgY29uc3Rh
bnRzIG5lZWRlZCBmb3IgYmluZFJlbmRlcmJ1ZmZlciwKKy8vIGdldEZyYW1lYnVmZmVyQXR0YWNo
bWVudFBhcmFtZXRlciwgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyIGFuZCBvdGhlcnMKKyNkZWZp
bmUgR0xfUkVOREVSQlVGRkVSICAgICAgICAgICAgICAgICAgICAgMHg4RDQxCisKKy8vIE9wZW5H
TCBjb25zdGFudHMgbmVlZGVkIGZvciBiaW5kVGV4dHVyZSAoYW5kLCBpbXBsaWNpdGx5LCBnZXRQ
YXJhbWV0ZXIpCisjZGVmaW5lIEdMX1RFWFRVUkVfMkQgICAgICAgICAgICAgICAgICAgICAgIDB4
MERFMQorI2RlZmluZSBHTF9URVhUVVJFX0NVQkVfTUFQICAgICAgICAgICAgICAgICAweDg1MTMK
KworLy8gT3BlbkdMIGNvbnN0YW50cyBuZWVkZWQgZm9yIGdldEJ1ZmZlclBhcmFtZXRlcgorI2Rl
ZmluZSBHTF9CVUZGRVJfU0laRSAgICAgICAgICAgICAgICAgICAgMHg4NzY0CisjZGVmaW5lIEdM
X0JVRkZFUl9VU0FHRSAgICAgICAgICAgICAgICAgICAweDg3NjUKKworLy8gT3BlbkdMIGNvbnN0
YW50cyBuZWVkZWQgZm9yIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcgorI2RlZmlu
ZSBHTF9DT0xPUl9BVFRBQ0hNRU5UMCAgICAgICAgICAgICAgMHg4Q0UwCisjZGVmaW5lIEdMX0RF
UFRIX0FUVEFDSE1FTlQgICAgICAgICAgICAgICAweDhEMDAKKyNkZWZpbmUgR0xfU1RFTkNJTF9B
VFRBQ0hNRU5UICAgICAgICAgICAgIDB4OEQyMAorI2RlZmluZSBHTF9GUkFNRUJVRkZFUl9BVFRB
Q0hNRU5UX09CSkVDVF9UWVBFICAgICAgICAgICAweDhDRDAKKyNkZWZpbmUgR0xfRlJBTUVCVUZG
RVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRSAgICAgICAgICAgMHg4Q0QxCisjZGVmaW5lIEdMX0ZS
QU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MRVZFTCAgICAgICAgIDB4OENEMgorI2RlZmlu
ZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfQ1VCRV9NQVBfRkFDRSAweDhDRDMK
KyNkZWZpbmUgR0xfVEVYVFVSRSAgICAgICAgICAgICAgICAgICAgICAgIDB4MTcwMgorCisvLyBP
cGVuR0wgY29uc3RhbnRzIG5lZWRlZCBmb3IgZ2V0UGFyYW1ldGVyCisjZGVmaW5lIEdMX0FDVElW
RV9URVhUVVJFICAgICAgICAgICAgICAgICAgIDB4ODRFMAorI2RlZmluZSBHTF9BTElBU0VEX0xJ
TkVfV0lEVEhfUkFOR0UgICAgICAgICAweDg0NkUKKyNkZWZpbmUgR0xfQUxJQVNFRF9QT0lOVF9T
SVpFX1JBTkdFICAgICAgICAgMHg4NDZECisjZGVmaW5lIEdMX0FMUEhBX0JJVFMgICAgICAgICAg
ICAgICAgICAgICAgIDB4MEQ1NQorI2RlZmluZSBHTF9BUlJBWV9CVUZGRVJfQklORElORyAgICAg
ICAgICAgICAweDg4OTQKKyNkZWZpbmUgR0xfQkxFTkQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMHgwQkUyCisjZGVmaW5lIEdMX0JMRU5EX0NPTE9SICAgICAgICAgICAgICAgICAgICAgIDB4
ODAwNQorI2RlZmluZSBHTF9CTEVORF9EU1RfQUxQSEEgICAgICAgICAgICAgICAgICAweDgwQ0EK
KyNkZWZpbmUgR0xfQkxFTkRfRFNUX1JHQiAgICAgICAgICAgICAgICAgICAgMHg4MEM4CisjZGVm
aW5lIEdMX0JMRU5EX0VRVUFUSU9OX0FMUEhBICAgICAgICAgICAgIDB4ODgzRAorI2RlZmluZSBH
TF9CTEVORF9FUVVBVElPTl9SR0IgICAgICAgICAgICAgICAweDgwMDkgICAgLyogc2FtZSBhcyBC
TEVORF9FUVVBVElPTiAqLworI2RlZmluZSBHTF9CTEVORF9TUkNfQUxQSEEgICAgICAgICAgICAg
ICAgICAweDgwQ0IKKyNkZWZpbmUgR0xfQkxFTkRfU1JDX1JHQiAgICAgICAgICAgICAgICAgICAg
MHg4MEM5CisjZGVmaW5lIEdMX0JMVUVfQklUUyAgICAgICAgICAgICAgICAgICAgICAgIDB4MEQ1
NAorI2RlZmluZSBHTF9DT0xPUl9DTEVBUl9WQUxVRSAgICAgICAgICAgICAgICAweDBDMjIKKyNk
ZWZpbmUgR0xfQ09MT1JfV1JJVEVNQVNLICAgICAgICAgICAgICAgICAgMHgwQzIzCisjZGVmaW5l
IEdMX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTICAgICAgIDB4ODZBMworI2RlZmluZSBHTF9D
VUxMX0ZBQ0UgICAgICAgICAgICAgICAgICAgICAgICAweDBCNDQKKyNkZWZpbmUgR0xfQ1VMTF9G
QUNFX01PREUgICAgICAgICAgICAgICAgICAgMHgwQjQ1CisjZGVmaW5lIEdMX0NVUlJFTlRfUFJP
R1JBTSAgICAgICAgICAgICAgICAgIDB4OEI4RAorI2RlZmluZSBHTF9ERVBUSF9CSVRTICAgICAg
ICAgICAgICAgICAgICAgICAweDBENTYKKyNkZWZpbmUgR0xfREVQVEhfQ0xFQVJfVkFMVUUgICAg
ICAgICAgICAgICAgMHgwQjczCisjZGVmaW5lIEdMX0RFUFRIX0ZVTkMgICAgICAgICAgICAgICAg
ICAgICAgIDB4MEI3NAorI2RlZmluZSBHTF9ERVBUSF9SQU5HRSAgICAgICAgICAgICAgICAgICAg
ICAweDBCNzAKKyNkZWZpbmUgR0xfREVQVEhfVEVTVCAgICAgICAgICAgICAgICAgICAgICAgMHgw
QjcxCisjZGVmaW5lIEdMX0RFUFRIX1dSSVRFTUFTSyAgICAgICAgICAgICAgICAgIDB4MEI3Mgor
I2RlZmluZSBHTF9ESVRIRVIgICAgICAgICAgICAgICAgICAgICAgICAgICAweDBCRDAKKyNkZWZp
bmUgR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElORyAgICAgMHg4ODk1CisjZGVmaW5lIEdM
X0ZSQU1FQlVGRkVSX0JJTkRJTkcgICAgICAgICAgICAgIDB4OENBNgorI2RlZmluZSBHTF9GUk9O
VF9GQUNFICAgICAgICAgICAgICAgICAgICAgICAweDBCNDYKKyNkZWZpbmUgR0xfR0VORVJBVEVf
TUlQTUFQX0hJTlQgICAgICAgICAgICAgMHg4MTkyCisjZGVmaW5lIEdMX0dSRUVOX0JJVFMgICAg
ICAgICAgICAgICAgICAgICAgIDB4MEQ1MworI2RlZmluZSBHTF9MSU5FX1dJRFRIICAgICAgICAg
ICAgICAgICAgICAgICAweDBCMjEKKyNkZWZpbmUgR0xfTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1B
R0VfVU5JVFMgMHg4QjRECisjZGVmaW5lIEdMX01BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUgICAg
ICAgIDB4ODUxQworI2RlZmluZSBHTF9NQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTICAgICAw
eDhERkQKKyNkZWZpbmUgR0xfTUFYX1JFTkRFUkJVRkZFUl9TSVpFICAgICAgICAgICAgMHg4NEU4
CisjZGVmaW5lIEdMX01BWF9URVhUVVJFX0lNQUdFX1VOSVRTICAgICAgICAgIDB4ODg3MgorI2Rl
ZmluZSBHTF9NQVhfVEVYVFVSRV9TSVpFICAgICAgICAgICAgICAgICAweDBEMzMKKyNkZWZpbmUg
R0xfTUFYX1ZBUllJTkdfVkVDVE9SUyAgICAgICAgICAgICAgMHg4REZDCisjZGVmaW5lIEdMX01B
WF9WRVJURVhfQVRUUklCUyAgICAgICAgICAgICAgIDB4ODg2OQorI2RlZmluZSBHTF9NQVhfVkVS
VEVYX1RFWFRVUkVfSU1BR0VfVU5JVFMgICAweDhCNEMKKyNkZWZpbmUgR0xfTUFYX1ZFUlRFWF9V
TklGT1JNX1ZFQ1RPUlMgICAgICAgMHg4REZCCisjZGVmaW5lIEdMX01BWF9WSUVXUE9SVF9ESU1T
ICAgICAgICAgICAgICAgIDB4MEQzQQorI2RlZmluZSBHTF9OVU1fQ09NUFJFU1NFRF9URVhUVVJF
X0ZPUk1BVFMgICAweDg2QTIKKyNkZWZpbmUgR0xfTlVNX1NIQURFUl9CSU5BUllfRk9STUFUUyAg
ICAgICAgMHg4REY5CisjZGVmaW5lIEdMX1BBQ0tfQUxJR05NRU5UICAgICAgICAgICAgICAgICAg
IDB4MEQwNQorI2RlZmluZSBHTF9QT0xZR09OX09GRlNFVF9GQUNUT1IgICAgICAgICAgICAweDgw
MzgKKyNkZWZpbmUgR0xfUE9MWUdPTl9PRkZTRVRfRklMTCAgICAgICAgICAgICAgMHg4MDM3Cisj
ZGVmaW5lIEdMX1BPTFlHT05fT0ZGU0VUX1VOSVRTICAgICAgICAgICAgIDB4MkEwMAorI2RlZmlu
ZSBHTF9SRURfQklUUyAgICAgICAgICAgICAgICAgICAgICAgICAweDBENTIKKyNkZWZpbmUgR0xf
UkVOREVSQlVGRkVSX0JJTkRJTkcgICAgICAgICAgICAgMHg4Q0E3CisjZGVmaW5lIEdMX1NBTVBM
RV9CVUZGRVJTICAgICAgICAgICAgICAgICAgIDB4ODBBOAorI2RlZmluZSBHTF9TQU1QTEVfQ09W
RVJBR0VfSU5WRVJUICAgICAgICAgICAweDgwQUIKKyNkZWZpbmUgR0xfU0FNUExFX0NPVkVSQUdF
X1ZBTFVFICAgICAgICAgICAgMHg4MEFBCisjZGVmaW5lIEdMX1NBTVBMRVMgICAgICAgICAgICAg
ICAgICAgICAgICAgIDB4ODBBOQorI2RlZmluZSBHTF9TQ0lTU09SX0JPWCAgICAgICAgICAgICAg
ICAgICAgICAweDBDMTAKKyNkZWZpbmUgR0xfU0NJU1NPUl9URVNUICAgICAgICAgICAgICAgICAg
ICAgMHgwQzExCisjZGVmaW5lIEdMX1NURU5DSUxfQkFDS19GQUlMICAgICAgICAgICAgICAgIDB4
ODgwMQorI2RlZmluZSBHTF9TVEVOQ0lMX0JBQ0tfRlVOQyAgICAgICAgICAgICAgICAweDg4MDAK
KyNkZWZpbmUgR0xfU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfRkFJTCAgICAgMHg4ODAyCisjZGVm
aW5lIEdMX1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX1BBU1MgICAgIDB4ODgwMworI2RlZmluZSBH
TF9TVEVOQ0lMX0JBQ0tfUkVGICAgICAgICAgICAgICAgICAweDhDQTMKKyNkZWZpbmUgR0xfU1RF
TkNJTF9CQUNLX1ZBTFVFX01BU0sgICAgICAgICAgMHg4Q0E0CisjZGVmaW5lIEdMX1NURU5DSUxf
QkFDS19XUklURU1BU0sgICAgICAgICAgIDB4OENBNQorI2RlZmluZSBHTF9TVEVOQ0lMX0JJVFMg
ICAgICAgICAgICAgICAgICAgICAweDBENTcKKyNkZWZpbmUgR0xfU1RFTkNJTF9DTEVBUl9WQUxV
RSAgICAgICAgICAgICAgMHgwQjkxCisjZGVmaW5lIEdMX1NURU5DSUxfRkFJTCAgICAgICAgICAg
ICAgICAgICAgIDB4MEI5NAorI2RlZmluZSBHTF9TVEVOQ0lMX0ZVTkMgICAgICAgICAgICAgICAg
ICAgICAweDBCOTIKKyNkZWZpbmUgR0xfU1RFTkNJTF9QQVNTX0RFUFRIX0ZBSUwgICAgICAgICAg
MHgwQjk1CisjZGVmaW5lIEdMX1NURU5DSUxfUEFTU19ERVBUSF9QQVNTICAgICAgICAgIDB4MEI5
NgorI2RlZmluZSBHTF9TVEVOQ0lMX1JFRiAgICAgICAgICAgICAgICAgICAgICAweDBCOTcKKyNk
ZWZpbmUgR0xfU1RFTkNJTF9URVNUICAgICAgICAgICAgICAgICAgICAgMHgwQjkwCisjZGVmaW5l
IEdMX1NURU5DSUxfVkFMVUVfTUFTSyAgICAgICAgICAgICAgIDB4MEI5MworI2RlZmluZSBHTF9T
VEVOQ0lMX1dSSVRFTUFTSyAgICAgICAgICAgICAgICAweDBCOTgKKyNkZWZpbmUgR0xfU1VCUElY
RUxfQklUUyAgICAgICAgICAgICAgICAgICAgMHgwRDUwCisjZGVmaW5lIEdMX1RFWFRVUkVfQklO
RElOR18yRCAgICAgICAgICAgICAgIDB4ODA2OQorI2RlZmluZSBHTF9URVhUVVJFX0JJTkRJTkdf
Q1VCRV9NQVAgICAgICAgICAweDg1MTQKKyNkZWZpbmUgR0xfVU5QQUNLX0FMSUdOTUVOVCAgICAg
ICAgICAgICAgICAgMHgwQ0Y1CisjZGVmaW5lIEdMX1ZJRVdQT1JUICAgICAgICAgICAgICAgICAg
ICAgICAgIDB4MEJBMgorCisvLyBPcGVuR0wgY29uc3RhbnRzIG5lZWRlZCBmb3IgZ2V0UHJvZ3Jh
bVBhcmFtZXRlciAoYW5kIGEgZmV3IGZvcgorLy8gZ2V0U2hhZGVyUGFyYW1ldGVyKQorI2RlZmlu
ZSBHTF9ERUxFVEVfU1RBVFVTICAgICAgICAgICAgICAgICAgICAweDhCODAKKyNkZWZpbmUgR0xf
TElOS19TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgMHg4QjgyCisjZGVmaW5lIEdMX1ZBTElE
QVRFX1NUQVRVUyAgICAgICAgICAgICAgICAgIDB4OEI4MworI2RlZmluZSBHTF9JTkZPX0xPR19M
RU5HVEggICAgICAgICAgICAgICAgICAweDhCODQKKyNkZWZpbmUgR0xfQVRUQUNIRURfU0hBREVS
UyAgICAgICAgICAgICAgICAgMHg4Qjg1CisjZGVmaW5lIEdMX0FDVElWRV9BVFRSSUJVVEVTICAg
ICAgICAgICAgICAgIDB4OEI4OQorI2RlZmluZSBHTF9BQ1RJVkVfQVRUUklCVVRFX01BWF9MRU5H
VEggICAgICAweDhCOEEKKyNkZWZpbmUgR0xfQUNUSVZFX1VOSUZPUk1TICAgICAgICAgICAgICAg
ICAgMHg4Qjg2CisjZGVmaW5lIEdMX0FDVElWRV9VTklGT1JNX01BWF9MRU5HVEggICAgICAgIDB4
OEI4NworCisvLyBPcGVuR0wgY29uc3RhbnRzIG5lZWRlZCBmb3IgZ2V0UmVuZGVyYnVmZmVyUGFy
YW1ldGVyCisjZGVmaW5lIEdMX1JFTkRFUkJVRkZFUl9XSURUSCAgICAgICAgICAgICAweDhENDIK
KyNkZWZpbmUgR0xfUkVOREVSQlVGRkVSX0hFSUdIVCAgICAgICAgICAgIDB4OEQ0MworI2RlZmlu
ZSBHTF9SRU5ERVJCVUZGRVJfSU5URVJOQUxfRk9STUFUICAgMHg4RDQ0CisjZGVmaW5lIEdMX1JF
TkRFUkJVRkZFUl9SRURfU0laRSAgICAgICAgICAweDhENTAKKyNkZWZpbmUgR0xfUkVOREVSQlVG
RkVSX0dSRUVOX1NJWkUgICAgICAgIDB4OEQ1MQorI2RlZmluZSBHTF9SRU5ERVJCVUZGRVJfQkxV
RV9TSVpFICAgICAgICAgMHg4RDUyCisjZGVmaW5lIEdMX1JFTkRFUkJVRkZFUl9BTFBIQV9TSVpF
ICAgICAgICAweDhENTMKKyNkZWZpbmUgR0xfUkVOREVSQlVGRkVSX0RFUFRIX1NJWkUgICAgICAg
IDB4OEQ1NAorI2RlZmluZSBHTF9SRU5ERVJCVUZGRVJfU1RFTkNJTF9TSVpFICAgICAgMHg4RDU1
CisKKy8vIE9wZW5HTCBjb25zdGFudHMgbmVlZGVkIGZvciBnZXRTaGFkZXJQYXJhbWV0ZXIKKyNk
ZWZpbmUgR0xfU0hBREVSX1RZUEUgICAgICAgICAgICAgICAgICAgIDB4OEI0RgorI2RlZmluZSBH
TF9DT01QSUxFX1NUQVRVUyAgICAgICAgICAgICAgICAgMHg4QjgxCisjZGVmaW5lIEdMX1NIQURF
Ul9TT1VSQ0VfTEVOR1RIICAgICAgICAgICAweDhCODgKKworLy8gT3BlbkdMIGNvbnN0YW50cyBu
ZWVkZWQgZm9yIGdldFRleFBhcmFtZXRlcgorI2RlZmluZSBHTF9URVhUVVJFX01BR19GSUxURVIg
ICAgICAgICAgICAgMHgyODAwCisjZGVmaW5lIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiAgICAgICAg
ICAgICAweDI4MDEKKyNkZWZpbmUgR0xfVEVYVFVSRV9XUkFQX1MgICAgICAgICAgICAgICAgIDB4
MjgwMgorI2RlZmluZSBHTF9URVhUVVJFX1dSQVBfVCAgICAgICAgICAgICAgICAgMHgyODAzCisK
Ky8vIE9wZW5HTCBjb25zdGFudHMgbmVlZGVkIGZvciBnZXRVbmlmb3JtCisjZGVmaW5lIEdMX0ZM
T0FUICAgICAgICAgICAgICAgICAgICAgICAgICAweDE0MDYKKyNkZWZpbmUgR0xfRkxPQVRfVkVD
MiAgICAgICAgICAgICAgICAgICAgIDB4OEI1MAorI2RlZmluZSBHTF9GTE9BVF9WRUMzICAgICAg
ICAgICAgICAgICAgICAgMHg4QjUxCisjZGVmaW5lIEdMX0ZMT0FUX1ZFQzQgICAgICAgICAgICAg
ICAgICAgICAweDhCNTIKKyNkZWZpbmUgR0xfSU5UICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDB4MTQwNAorI2RlZmluZSBHTF9JTlRfVkVDMiAgICAgICAgICAgICAgICAgICAgICAgMHg4QjUz
CisjZGVmaW5lIEdMX0lOVF9WRUMzICAgICAgICAgICAgICAgICAgICAgICAweDhCNTQKKyNkZWZp
bmUgR0xfSU5UX1ZFQzQgICAgICAgICAgICAgICAgICAgICAgIDB4OEI1NQorI2RlZmluZSBHTF9C
T09MICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4QjU2CisjZGVmaW5lIEdMX0JPT0xfVkVD
MiAgICAgICAgICAgICAgICAgICAgICAweDhCNTcKKyNkZWZpbmUgR0xfQk9PTF9WRUMzICAgICAg
ICAgICAgICAgICAgICAgIDB4OEI1OAorI2RlZmluZSBHTF9CT09MX1ZFQzQgICAgICAgICAgICAg
ICAgICAgICAgMHg4QjU5CisjZGVmaW5lIEdMX0ZMT0FUX01BVDIgICAgICAgICAgICAgICAgICAg
ICAweDhCNUEKKyNkZWZpbmUgR0xfRkxPQVRfTUFUMyAgICAgICAgICAgICAgICAgICAgIDB4OEI1
QgorI2RlZmluZSBHTF9GTE9BVF9NQVQ0ICAgICAgICAgICAgICAgICAgICAgMHg4QjVDCisjZGVm
aW5lIEdMX1NBTVBMRVJfMkQgICAgICAgICAgICAgICAgICAgICAweDhCNUUKKyNkZWZpbmUgR0xf
U0FNUExFUl9DVUJFICAgICAgICAgICAgICAgICAgIDB4OEI2MAorCisvLyBPcGVuR0wgY29uc3Rh
bnRzIG5lZWRlZCBmb3IgZ2V0VmVydGV4QXR0cmliCisjZGVmaW5lIEdMX1ZFUlRFWF9BVFRSSUJf
QVJSQVlfQlVGRkVSX0JJTkRJTkcgMHg4ODlGCisjZGVmaW5lIEdMX1ZFUlRFWF9BVFRSSUJfQVJS
QVlfRU5BQkxFRCAgICAgICAgMHg4NjIyCisjZGVmaW5lIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlf
U0laRSAgICAgICAgICAgMHg4NjIzCisjZGVmaW5lIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfU1RS
SURFICAgICAgICAgMHg4NjI0CisjZGVmaW5lIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRSAg
ICAgICAgICAgMHg4NjI1CisjZGVmaW5lIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfTk9STUFMSVpF
RCAgICAgMHg4ODZBCisjZGVmaW5lIEdMX0NVUlJFTlRfVkVSVEVYX0FUVFJJQiAgICAgICAgICAg
ICAgMHg4NjI2CisKK2NsYXNzIENsZWFudXBIZWxwZXIgeworcHVibGljOgorICAgIENsZWFudXBI
ZWxwZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LAorICAgICAgICAgICAgICAgICAg
Ym9vbCBjaGFuZ2VkKQorICAgICAgICA6IG1fY29udGV4dChjb250ZXh0KQorICAgICAgICAsIG1f
Y2hhbmdlZChjaGFuZ2VkKQorICAgIHsKKyAgICB9CisKKyAgICB+Q2xlYW51cEhlbHBlcigpCisg
ICAgeworICAgICAgICBtX2NvbnRleHQtPmNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChtX2NoYW5n
ZWQpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQqIG1fY29u
dGV4dDsKKyAgICBib29sIG1fY2hhbmdlZDsKK307CisKIFBhc3NPd25QdHI8V2ViR0xSZW5kZXJp
bmdDb250ZXh0PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZShIVE1MQ2FudmFzRWxlbWVu
dCogY2FudmFzKQogewogICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dChHcmFw
aGljc0NvbnRleHQzRDo6Y3JlYXRlKCkpOwogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0
dXJuIDA7Ci0gICAgICAgIAorCiAgICAgcmV0dXJuIG5ldyBXZWJHTFJlbmRlcmluZ0NvbnRleHQo
Y2FudmFzLCBjb250ZXh0LnJlbGVhc2UoKSk7CiB9CiAKQEAgLTU4LDYgKzI1MSw3IEBAIFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6V2ViR0xSZW5kZXJpbmdDb24KICAgICAsIG1fY29udGV4dChjb250
ZXh0KQogICAgICwgbV9uZWVkc1VwZGF0ZSh0cnVlKQogICAgICwgbV9tYXJrZWRDYW52YXNEaXJ0
eShmYWxzZSkKKyAgICAsIG1fYWN0aXZlVGV4dHVyZVVuaXQoMCkKIHsKICAgICBBU1NFUlQobV9j
b250ZXh0KTsKICAgICBtX2NvbnRleHQtPnJlc2hhcGUoY2FudmFzKCktPndpZHRoKCksIGNhbnZh
cygpLT5oZWlnaHQoKSk7CkBAIC0xMTAsNyArMzA0LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnJlc2hhcGUoaW50IAogI2VuZGlmCiAgICAgICAgIG1fbmVlZHNVcGRhdGUgPSBmYWxz
ZTsKICAgICB9Ci0gICAgCisKICAgICBtX2NvbnRleHQtPnJlc2hhcGUod2lkdGgsIGhlaWdodCk7
CiB9CiAKQEAgLTEyNSw4ICszMTksMTMgQEAgaW50IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6c2l6
ZUluQnl0ZXMoaQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YWN0aXZlVGV4dHVyZSh1
bnNpZ25lZCBsb25nIHRleHR1cmUpCiB7CisgICAgaWYgKHRleHR1cmUgPiBzaXplb2YobV90ZXh0
dXJlVW5pdHMpIC8gc2l6ZW9mKFRleHR1cmVVbml0U3RhdGUpKSB7CisgICAgICAgIC8vIEZJWE1F
OiByYWlzZSBHTF9JTlZBTElEX0VOVU0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBDbGVh
bnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKKyAgICBtX2FjdGl2ZVRleHR1cmVVbml0ID0gdGV4dHVy
ZTsKICAgICBtX2NvbnRleHQtPmFjdGl2ZVRleHR1cmUodGV4dHVyZSk7Ci0gICAgY2xlYW51cEFm
dGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmF0dGFjaFNoYWRlcihXZWJHTFByb2dyYW0qIHByb2dyYW0sIFdlYkdMU2hhZGVyKiBzaGFkZXIs
IEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMTM1LDggKzMzNCw4IEBAIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0OjphdHRhY2hTaGFkZXIKICAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBDbGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsK
ICAgICBtX2NvbnRleHQtPmF0dGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXIpOwotICAgIGNsZWFu
dXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpiaW5kQXR0cmliTG9jYXRpb24oV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCB1bnNpZ25lZCBs
b25nIGluZGV4LCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMTQ1
LDggKzM0NCw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpiaW5kQXR0cmliTG8KICAg
ICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAg
ICBDbGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKICAgICBtX2NvbnRleHQtPmJpbmRBdHRyaWJM
b2NhdGlvbihwcm9ncmFtLCBpbmRleCwgbmFtZSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3ND
YWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJpbmRCdWZmZXIo
dW5zaWduZWQgbG9uZyB0YXJnZXQsIFdlYkdMQnVmZmVyKiBidWZmZXIsIEV4Y2VwdGlvbkNvZGUm
IGVjKQpAQCAtMTU1LDggKzM1NCwxNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Ymlu
ZEJ1ZmZlcih1CiAgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CisgICAgaWYgKHRhcmdldCA9PSBHTF9BUlJBWV9CVUZGRVIpCisgICAgICAgIG1f
YXJyYXlCdWZmZXJCaW5kaW5nID0gYnVmZmVyOworICAgIGVsc2UgaWYgKHRhcmdldCA9PSBHTF9F
TEVNRU5UX0FSUkFZX0JVRkZFUikKKyAgICAgICAgbV9lbGVtZW50QXJyYXlCdWZmZXJCaW5kaW5n
ID0gYnVmZmVyOworICAgIGVsc2UgeworICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJ
RF9FTlVNIGVycm9yCisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBDbGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKICAgICBtX2NvbnRleHQtPmJp
bmRCdWZmZXIodGFyZ2V0LCBidWZmZXIpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChm
YWxzZSk7CiB9CiAKIApAQCAtMTY2LDggKzM3NCwxNCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6YmluZEZyYW1lYnVmCiAgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CisgICAgaWYgKHRhcmdldCAhPSBHTF9GUkFNRUJVRkZFUikgewor
ICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9FTlVNIGVycm9yCisgICAgICAgIGVj
ID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBDbGVhbnVwSGVscGVy
KHRoaXMsIGZhbHNlKTsKKyAgICBtX2ZyYW1lYnVmZmVyQmluZGluZyA9IGJ1ZmZlcjsKICAgICBt
X2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcih0YXJnZXQsIGJ1ZmZlcik7Ci0gICAgY2xlYW51cEFm
dGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmJpbmRSZW5kZXJidWZmZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIFdlYkdMUmVuZGVyYnVmZmVy
KiByZW5kZXJCdWZmZXIsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMTc2LDggKzM5MCwxNCBAQCB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmluZFJlbmRlcmJ1CiAgICAgICAgIGVjID0gVFlQ
RV9NSVNNQVRDSF9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgaWYgKHRhcmdldCAh
PSBHTF9SRU5ERVJCVUZGRVIpIHsKKyAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURf
RU5VTSBlcnJvcgorICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CisgICAgbV9yZW5kZXJidWZmZXJC
aW5kaW5nID0gcmVuZGVyQnVmZmVyOwogICAgIG1fY29udGV4dC0+YmluZFJlbmRlcmJ1ZmZlcih0
YXJnZXQsIHJlbmRlckJ1ZmZlcik7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNl
KTsKIH0KIAogCkBAIC0xODcsNzMgKzQwNyw4MyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6YmluZFRleHR1cmUoCiAgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CiAgICAgICAg
IHJldHVybjsKICAgICB9CisgICAgaWYgKHRhcmdldCA9PSBHTF9URVhUVVJFXzJEKQorICAgICAg
ICBtX3RleHR1cmVVbml0c1ttX2FjdGl2ZVRleHR1cmVVbml0XS5tX3RleHR1cmUyREJpbmRpbmcg
PSB0ZXh0dXJlOworICAgIGVsc2UgaWYgKHRhcmdldCA9PSBHTF9URVhUVVJFX0NVQkVfTUFQKQor
ICAgICAgICBtX3RleHR1cmVVbml0c1ttX2FjdGl2ZVRleHR1cmVVbml0XS5tX3RleHR1cmVDdWJl
TWFwQmluZGluZyA9IHRleHR1cmU7CisgICAgZWxzZSB7CisgICAgICAgIC8vIEZJWE1FOiByYWlz
ZSBHTF9JTlZBTElEX0VOVU0gZXJyb3IKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwogICAgIG1f
Y29udGV4dC0+YmluZFRleHR1cmUodGFyZ2V0LCB0ZXh0dXJlKTsKLSAgICBjbGVhbnVwQWZ0ZXJH
cmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Ymxl
bmRDb2xvcihkb3VibGUgcmVkLCBkb3VibGUgZ3JlZW4sIGRvdWJsZSBibHVlLCBkb3VibGUgYWxw
aGEpCiB7CisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CiAgICAgbV9jb250ZXh0LT5i
bGVuZENvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFw
aGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmxlbmRF
cXVhdGlvbiggdW5zaWduZWQgbG9uZyBtb2RlICkKIHsKKyAgICBDbGVhbnVwSGVscGVyKHRoaXMs
IGZhbHNlKTsKICAgICBtX2NvbnRleHQtPmJsZW5kRXF1YXRpb24obW9kZSk7Ci0gICAgY2xlYW51
cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmJsZW5kRXF1YXRpb25TZXBhcmF0ZSh1bnNpZ25lZCBsb25nIG1vZGVSR0IsIHVuc2lnbmVk
IGxvbmcgbW9kZUFscGhhKQogeworICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwogICAg
IG1fY29udGV4dC0+YmxlbmRFcXVhdGlvblNlcGFyYXRlKG1vZGVSR0IsIG1vZGVBbHBoYSk7Ci0g
ICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogCiB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6YmxlbmRGdW5jKHVuc2lnbmVkIGxvbmcgc2ZhY3RvciwgdW5zaWduZWQg
bG9uZyBkZmFjdG9yKQogeworICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwogICAgIG1f
Y29udGV4dC0+YmxlbmRGdW5jKHNmYWN0b3IsIGRmYWN0b3IpOwotICAgIGNsZWFudXBBZnRlckdy
YXBoaWNzQ2FsbChmYWxzZSk7Ci19ICAgICAgIAorfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6YmxlbmRGdW5jU2VwYXJhdGUodW5zaWduZWQgbG9uZyBzcmNSR0IsIHVuc2lnbmVkIGxv
bmcgZHN0UkdCLCB1bnNpZ25lZCBsb25nIHNyY0FscGhhLCB1bnNpZ25lZCBsb25nIGRzdEFscGhh
KQogeworICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwogICAgIG1fY29udGV4dC0+Ymxl
bmRGdW5jU2VwYXJhdGUoc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhhLCBkc3RBbHBoYSk7Ci0gICAg
Y2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmJ1ZmZlckRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQsIGludCBzaXplLCB1bnNp
Z25lZCBsb25nIHVzYWdlKQogeworICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwogICAg
IG1fY29udGV4dC0+YnVmZmVyRGF0YSh0YXJnZXQsIHNpemUsIHVzYWdlKTsKLSAgICBjbGVhbnVw
QWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6YnVmZmVyRGF0YSh1bnNpZ25lZCBsb25nIHRhcmdldCwgV2ViR0xBcnJheSogZGF0YSwgdW5z
aWduZWQgbG9uZyB1c2FnZSkKIHsKKyAgICBDbGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKICAg
ICBtX2NvbnRleHQtPmJ1ZmZlckRhdGEodGFyZ2V0LCBkYXRhLCB1c2FnZSk7Ci0gICAgY2xlYW51
cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmJ1ZmZlclN1YkRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQsIGxvbmcgb2Zmc2V0LCBXZWJH
TEFycmF5KiBkYXRhKQogeworICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwogICAgIG1f
Y29udGV4dC0+YnVmZmVyU3ViRGF0YSh0YXJnZXQsIG9mZnNldCwgZGF0YSk7Ci0gICAgY2xlYW51
cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdW5zaWduZWQgbG9uZyBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXModW5zaWduZWQgbG9uZyB0YXJnZXQp
CiB7CisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CiAgICAgcmV0dXJuIG1fY29udGV4
dC0+Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh0YXJnZXQpOwotICAgIGNsZWFudXBBZnRlckdyYXBo
aWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpjbGVhcih1
bnNpZ25lZCBsb25nIG1hc2spCiB7CisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCB0cnVlKTsKICAg
ICBtX2NvbnRleHQtPmNsZWFyKG1hc2spOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbCh0
cnVlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNsZWFyQ29sb3IoZG91Ymxl
IHIsIGRvdWJsZSBnLCBkb3VibGUgYiwgZG91YmxlIGEpCiB7CisgICAgQ2xlYW51cEhlbHBlcih0
aGlzLCBmYWxzZSk7CiAgICAgaWYgKGlzbmFuKHIpKQogICAgICAgICByID0gMDsKICAgICBpZiAo
aXNuYW4oZykpCkBAIC0yNjMsNDcgKzQ5Myw0NiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Y2xlYXJDb2xvcihkCiAgICAgaWYgKGlzbmFuKGEpKQogICAgICAgICBhID0gMTsKICAgICBt
X2NvbnRleHQtPmNsZWFyQ29sb3IociwgZywgYiwgYSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhp
Y3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNsZWFyRGVw
dGgoZG91YmxlIGRlcHRoKQogeworICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwogICAg
IG1fY29udGV4dC0+Y2xlYXJEZXB0aChkZXB0aCk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3ND
YWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNsZWFyU3RlbmNp
bChsb25nIHMpCiB7CisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CiAgICAgbV9jb250
ZXh0LT5jbGVhclN0ZW5jaWwocyk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNl
KTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNvbG9yTWFzayhib29sIHJlZCwg
Ym9vbCBncmVlbiwgYm9vbCBibHVlLCBib29sIGFscGhhKQogeworICAgIENsZWFudXBIZWxwZXIo
dGhpcywgZmFsc2UpOwogICAgIG1fY29udGV4dC0+Y29sb3JNYXNrKHJlZCwgZ3JlZW4sIGJsdWUs
IGFscGhhKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y29tcGlsZVNoYWRlcihXZWJHTFNoYWRlciogc2hhZGVy
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBDbGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsK
ICAgICBpZiAoIXNoYWRlciB8fCBzaGFkZXItPmNvbnRleHQoKSAhPSB0aGlzKSB7CiAgICAgICAg
IGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9j
b250ZXh0LT5jb21waWxlU2hhZGVyKHNoYWRlcik7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3ND
YWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNvcHlUZXhJbWFn
ZTJEKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBsb25nIGxldmVsLCB1bnNpZ25lZCBsb25nIGludGVy
bmFsZm9ybWF0LCBsb25nIHgsIGxvbmcgeSwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQg
bG9uZyBoZWlnaHQsIGxvbmcgYm9yZGVyKQogeworICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFs
c2UpOwogICAgIG1fY29udGV4dC0+Y29weVRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJu
YWxmb3JtYXQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGJvcmRlcik7Ci0gICAgY2xlYW51cEFmdGVy
R3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNv
cHlUZXhTdWJJbWFnZTJEKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBsb25nIGxldmVsLCBsb25nIHhv
ZmZzZXQsIGxvbmcgeW9mZnNldCwgbG9uZyB4LCBsb25nIHksIHVuc2lnbmVkIGxvbmcgd2lkdGgs
IHVuc2lnbmVkIGxvbmcgaGVpZ2h0KQogeworICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2Up
OwogICAgIG1fY29udGV4dC0+Y29weVRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNl
dCwgeW9mZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhp
Y3NDYWxsKGZhbHNlKTsKIH0KIAogUGFzc1JlZlB0cjxXZWJHTEJ1ZmZlcj4gV2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpjcmVhdGVCdWZmZXIoKQpAQCAtMzEyLDcgKzU0MSw3IEBAIFBhc3NSZWZQdHI8
V2ViR0xCdWZmZXI+IFdlYkdMUmVuZGVyaW5nQ28KICAgICBhZGRPYmplY3Qoby5nZXQoKSk7CiAg
ICAgcmV0dXJuIG87CiB9Ci0gICAgICAgIAorCiBQYXNzUmVmUHRyPFdlYkdMRnJhbWVidWZmZXI+
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlRnJhbWVidWZmZXIoKQogewogICAgIFJlZlB0
cjxXZWJHTEZyYW1lYnVmZmVyPiBvID0gV2ViR0xGcmFtZWJ1ZmZlcjo6Y3JlYXRlKHRoaXMpOwpA
QCAtMzQ4LDcgKzU3Nyw3IEBAIFBhc3NSZWZQdHI8V2ViR0xTaGFkZXI+IFdlYkdMUmVuZGVyaW5n
Q28KICAgICBHcmFwaGljc0NvbnRleHQzRDo6U2hhZGVyVHlwZSBzaGFkZXJUeXBlID0gR3JhcGhp
Y3NDb250ZXh0M0Q6OlZFUlRFWF9TSEFERVI7CiAgICAgaWYgKHR5cGUgPT0gMHg4QjMwKSAvLyBH
TF9GUkFHTUVOVF9TSEFERVIKICAgICAgICAgc2hhZGVyVHlwZSA9IEdyYXBoaWNzQ29udGV4dDNE
OjpGUkFHTUVOVF9TSEFERVI7Ci0gICAgICAgIAorCiAgICAgUmVmUHRyPFdlYkdMU2hhZGVyPiBv
ID0gV2ViR0xTaGFkZXI6OmNyZWF0ZSh0aGlzLCBzaGFkZXJUeXBlKTsKICAgICBhZGRPYmplY3Qo
by5nZXQoKSk7CiAgICAgcmV0dXJuIG87CkBAIC0zNTYsMTUgKzU4NSwxNSBAQCBQYXNzUmVmUHRy
PFdlYkdMU2hhZGVyPiBXZWJHTFJlbmRlcmluZ0NvCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpjdWxsRmFjZSh1bnNpZ25lZCBsb25nIG1vZGUpCiB7CisgICAgQ2xlYW51cEhlbHBlcih0
aGlzLCBmYWxzZSk7CiAgICAgbV9jb250ZXh0LT5jdWxsRmFjZShtb2RlKTsKLSAgICBjbGVhbnVw
QWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6ZGVsZXRlQnVmZmVyKFdlYkdMQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgaWYgKCFidWZmZXIp
CiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIGJ1ZmZlci0+ZGVsZXRlT2JqZWN0KCk7CiB9
CiAKQEAgLTM3Miw3ICs2MDEsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZGVsZXRl
RnJhbWViCiB7CiAgICAgaWYgKCFmcmFtZWJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwotICAgIAor
CiAgICAgZnJhbWVidWZmZXItPmRlbGV0ZU9iamVjdCgpOwogfQogCkBAIC0zODAsNyArNjA5LDcg
QEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZVByb2dyYQogewogICAgIGlmICgh
cHJvZ3JhbSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgcHJvZ3JhbS0+ZGVsZXRlT2Jq
ZWN0KCk7CiB9CiAKQEAgLTM4OCw3ICs2MTcsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6ZGVsZXRlUmVuZGVyCiB7CiAgICAgaWYgKCFyZW5kZXJidWZmZXIpCiAgICAgICAgIHJldHVy
bjsKLSAgICAKKwogICAgIHJlbmRlcmJ1ZmZlci0+ZGVsZXRlT2JqZWN0KCk7CiB9CiAKQEAgLTM5
Niw3ICs2MjUsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZGVsZXRlU2hhZGVyCiB7
CiAgICAgaWYgKCFzaGFkZXIpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIHNoYWRlci0+
ZGVsZXRlT2JqZWN0KCk7CiB9CiAKQEAgLTQwNCwyNiArNjMzLDI2IEBAIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpkZWxldGVUZXh0dXIKIHsKICAgICBpZiAoIXRleHR1cmUpCiAgICAgICAg
IHJldHVybjsKLSAgICAKKwogICAgIHRleHR1cmUtPmRlbGV0ZU9iamVjdCgpOwogfQogCiB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZGVwdGhGdW5jKHVuc2lnbmVkIGxvbmcgZnVuYykKIHsK
KyAgICBDbGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKICAgICBtX2NvbnRleHQtPmRlcHRoRnVu
YyhmdW5jKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZGVwdGhNYXNrKGJvb2wgZmxhZykKIHsKKyAgICBDbGVh
bnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKICAgICBtX2NvbnRleHQtPmRlcHRoTWFzayhmbGFnKTsK
LSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6ZGVwdGhSYW5nZShkb3VibGUgek5lYXIsIGRvdWJsZSB6RmFyKQogewor
ICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwogICAgIG1fY29udGV4dC0+ZGVwdGhSYW5n
ZSh6TmVhciwgekZhcik7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0K
IAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRldGFjaFNoYWRlcihXZWJHTFByb2dyYW0q
IHByb2dyYW0sIFdlYkdMU2hhZGVyKiBzaGFkZXIsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtNDMy
LDU5ICs2NjEsNTkgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRldGFjaFNoYWRlcgog
ICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQor
ICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwogICAgIG1fY29udGV4dC0+ZGV0YWNoU2hh
ZGVyKHByb2dyYW0sIHNoYWRlcik7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNl
KTsKIH0KIAogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZGlzYWJsZSh1bnNpZ25lZCBs
b25nIGNhcCkKIHsKKyAgICBDbGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKICAgICBtX2NvbnRl
eHQtPmRpc2FibGUoY2FwKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwog
fQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5
KHVuc2lnbmVkIGxvbmcgaW5kZXgpCiB7CisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7
CiAgICAgbV9jb250ZXh0LT5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgpOwotICAgIGNs
ZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIAogdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmRyYXdBcnJheXModW5zaWduZWQgbG9uZyBtb2RlLCBsb25nIGZpcnN0LCBsb25n
IGNvdW50KQogeworICAgIENsZWFudXBIZWxwZXIodGhpcywgdHJ1ZSk7CiAgICAgbV9jb250ZXh0
LT5kcmF3QXJyYXlzKG1vZGUsIGZpcnN0LCBjb3VudCk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhp
Y3NDYWxsKHRydWUpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZHJhd0VsZW1l
bnRzKHVuc2lnbmVkIGxvbmcgbW9kZSwgdW5zaWduZWQgbG9uZyBjb3VudCwgdW5zaWduZWQgbG9u
ZyB0eXBlLCBsb25nIG9mZnNldCkKIHsKKyAgICBDbGVhbnVwSGVscGVyKHRoaXMsIHRydWUpOwog
ICAgIG1fY29udGV4dC0+ZHJhd0VsZW1lbnRzKG1vZGUsIGNvdW50LCB0eXBlLCBvZmZzZXQpOwot
ICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbCh0cnVlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmVuYWJsZSh1bnNpZ25lZCBsb25nIGNhcCkKIHsKKyAgICBDbGVhbnVwSGVs
cGVyKHRoaXMsIGZhbHNlKTsKICAgICBtX2NvbnRleHQtPmVuYWJsZShjYXApOwotICAgIGNsZWFu
dXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0OjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh1bnNpZ25lZCBsb25nIGluZGV4KQogeworICAg
IENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwogICAgIG1fY29udGV4dC0+ZW5hYmxlVmVydGV4
QXR0cmliQXJyYXkoaW5kZXgpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7
CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpmaW5pc2goKQogeworICAgIENsZWFu
dXBIZWxwZXIodGhpcywgdHJ1ZSk7CiAgICAgbV9jb250ZXh0LT5maW5pc2goKTsKLSAgICBjbGVh
bnVwQWZ0ZXJHcmFwaGljc0NhbGwodHJ1ZSk7CiB9CiAKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmZsdXNoKCkKIHsKKyAgICBDbGVhbnVwSGVscGVyKHRoaXMsIHRydWUpOwogICAgIG1f
Y29udGV4dC0+Zmx1c2goKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwodHJ1ZSk7CiB9
CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih1
bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCB1bnNpZ25lZCBs
b25nIHJlbmRlcmJ1ZmZlcnRhcmdldCwgV2ViR0xSZW5kZXJidWZmZXIqIGJ1ZmZlciwgRXhjZXB0
aW9uQ29kZSYgZWMpCkBAIC00OTIsOSArNzIxLDkgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmZyYW1lYnVmZmVyUgogICAgIGlmIChidWZmZXIgJiYgYnVmZmVyLT5jb250ZXh0KCkgIT0g
dGhpcykgewogICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOwogICAgICAgICByZXR1cm47
Ci0gICAgfSAgICAgICAKKyAgICB9CisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CiAg
ICAgbV9jb250ZXh0LT5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0YXJnZXQsIGF0dGFjaG1lbnQs
IHJlbmRlcmJ1ZmZlcnRhcmdldCwgYnVmZmVyKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0Nh
bGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZnJhbWVidWZmZXJU
ZXh0dXJlMkQodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwg
dW5zaWduZWQgbG9uZyB0ZXh0YXJnZXQsIFdlYkdMVGV4dHVyZSogdGV4dHVyZSwgbG9uZyBsZXZl
bCwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC01MDMsMjAgKzczMiwyMCBAQCB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6ZnJhbWVidWZmZXJUCiAgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9F
UlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxz
ZSk7CiAgICAgbV9jb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmUyRCh0YXJnZXQsIGF0dGFjaG1l
bnQsIHRleHRhcmdldCwgdGV4dHVyZSwgbGV2ZWwpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNz
Q2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpmcm9udEZhY2Uo
dW5zaWduZWQgbG9uZyBtb2RlKQogeworICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwog
ICAgIG1fY29udGV4dC0+ZnJvbnRGYWNlKG1vZGUpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNz
Q2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZW5lcmF0ZU1p
cG1hcCh1bnNpZ25lZCBsb25nIHRhcmdldCkKIHsKKyAgICBDbGVhbnVwSGVscGVyKHRoaXMsIGZh
bHNlKTsKICAgICBtX2NvbnRleHQtPmdlbmVyYXRlTWlwbWFwKHRhcmdldCk7Ci0gICAgY2xlYW51
cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogUGFzc1JlZlB0cjxXZWJHTEFjdGl2ZUlu
Zm8+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0QWN0aXZlQXR0cmliKFdlYkdMUHJvZ3JhbSog
cHJvZ3JhbSwgdW5zaWduZWQgbG9uZyBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC01NDQs
MzIgKzc3MywyNyBAQCBpbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRBdHRyaWJMb2NhCiAg
ICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgbmFtZSk7CiB9
CiAKLWJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRCb29sZWFuKHVuc2lnbmVkIGxvbmcg
cG5hbWUpCi17Ci0gICAgYm9vbCByZXN1bHQgPSBtX2NvbnRleHQtPmdldEJvb2xlYW4ocG5hbWUp
OwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLQotUGFzc1JlZlB0cjxXZWJHTFVuc2lnbmVkQnl0ZUFycmF5PiBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmdldEJvb2xlYW52KHVuc2lnbmVkIGxvbmcgcG5hbWUpCitXZWJHTEdldEluZm8g
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRCdWZmZXJQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyB0
YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIFJl
ZlB0cjxXZWJHTFVuc2lnbmVkQnl0ZUFycmF5PiBhcnJheSA9IG1fY29udGV4dC0+Z2V0Qm9vbGVh
bnYocG5hbWUpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci0gICAgcmV0
dXJuIGFycmF5OwotfQorICAgIGlmICh0YXJnZXQgIT0gR0xfQVJSQVlfQlVGRkVSICYmIHRhcmdl
dCAhPSBHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUikgeworICAgICAgICAvLyBGSVhNRTogcmFpc2Ug
R0xfSU5WQUxJRF9FTlVNIGVycm9yCisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAg
cmV0dXJuIFdlYkdMR2V0SW5mbygpOworICAgIH0KIAotaW50IFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Z2V0QnVmZmVyUGFyYW1ldGVyaSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9u
ZyBwbmFtZSkKLXsKLSAgICBpbnQgcmVzdWx0ID0gbV9jb250ZXh0LT5nZXRCdWZmZXJQYXJhbWV0
ZXJpKHRhcmdldCwgcG5hbWUpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KKyAgICBpZiAocG5hbWUgIT0gR0xfQlVGRkVSX1NJWkUg
JiYgcG5hbWUgIT0gR0xfQlVGRkVSX1VTQUdFKSB7CisgICAgICAgIC8vIEZJWE1FOiByYWlzZSBH
TF9JTlZBTElEX0VOVU0gZXJyb3IKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICBy
ZXR1cm4gV2ViR0xHZXRJbmZvKCk7CisgICAgfQogCi1QYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0QnVmZmVyUGFyYW1ldGVyaXYodW5zaWduZWQgbG9u
ZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgUmVmUHRyPFdlYkdMSW50QXJy
YXk+IGFycmF5ID0gbV9jb250ZXh0LT5nZXRCdWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1l
KTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwotICAgIHJldHVybiBhcnJh
eTsKKyAgICBDbGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKKyAgICBpbnQgdmFsdWU7CisgICAg
bV9jb250ZXh0LT5nZXRCdWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUpOwor
ICAgIGlmIChwbmFtZSA9PSBHTF9CVUZGRVJfU0laRSkKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0
SW5mbyhzdGF0aWNfY2FzdDxsb25nPih2YWx1ZSkpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJu
IFdlYkdMR2V0SW5mbyhzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPih2YWx1ZSkpOwogfQogCiB1
bnNpZ25lZCBsb25nIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXJyb3IoKQpAQCAtNTc3LDEx
NiArODAxLDMyNyBAQCB1bnNpZ25lZCBsb25nIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0CiAg
ICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0RXJyb3IoKTsKIH0KIAotZmxvYXQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpnZXRGbG9hdCh1bnNpZ25lZCBsb25nIHBuYW1lKQorV2ViR0xHZXRJbmZvIFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKHVu
c2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIHVuc2lnbmVkIGxv
bmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGZsb2F0IHJlc3VsdCA9IG1fY29u
dGV4dC0+Z2V0RmxvYXQocG5hbWUpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxz
ZSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotUGFzc1JlZlB0cjxXZWJHTEZsb2F0QXJyYXk+
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RmxvYXR2KHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17
Ci0gICAgUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gYXJyYXkgPSBtX2NvbnRleHQtPmdldEZsb2F0
dihwbmFtZSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKLSAgICByZXR1
cm4gYXJyYXk7Ci19Ci0KLWludCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcmkodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcg
YXR0YWNobWVudCwgdW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICBpbnQgcmVzdWx0ID0gbV9j
b250ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKHRhcmdldCwgYXR0YWNo
bWVudCwgcG5hbWUpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHVuc2lnbmVk
IGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIHVuc2lnbmVkIGxvbmcgcG5h
bWUpCi17Ci0gICAgUmVmUHRyPFdlYkdMSW50QXJyYXk+IGFycmF5ID0gbV9jb250ZXh0LT5nZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdih0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1l
KTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwotICAgIHJldHVybiBhcnJh
eTsKLX0KKyAgICBpZiAodGFyZ2V0ICE9IEdMX0ZSQU1FQlVGRkVSCisgICAgICAgIHx8IChhdHRh
Y2htZW50ICE9IEdMX0NPTE9SX0FUVEFDSE1FTlQwCisgICAgICAgICAgICAmJiBhdHRhY2htZW50
ICE9IEdMX0RFUFRIX0FUVEFDSE1FTlQKKyAgICAgICAgICAgICYmIGF0dGFjaG1lbnQgIT0gR0xf
U1RFTkNJTF9BVFRBQ0hNRU5UKQorICAgICAgICB8fCAocG5hbWUgIT0gR0xfRlJBTUVCVUZGRVJf
QVRUQUNITUVOVF9PQkpFQ1RfVFlQRQorICAgICAgICAgICAgJiYgcG5hbWUgIT0gR0xfRlJBTUVC
VUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRQorICAgICAgICAgICAgJiYgcG5hbWUgIT0gR0xf
RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xFVkVMCisgICAgICAgICAgICAmJiBwbmFt
ZSAhPSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfQ1VCRV9NQVBfRkFDRSkpIHsK
KyAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfRU5VTSBlcnJvcgorICAgICAgICBl
YyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKKyAgICB9CiAK
LWludCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEludGVnZXIodW5zaWduZWQgbG9uZyBwbmFt
ZSkKLXsKLSAgICBmbG9hdCByZXN1bHQgPSBtX2NvbnRleHQtPmdldEludGVnZXIocG5hbWUpOwot
ICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
KyAgICBpZiAocG5hbWUgIT0gR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRSkg
eworICAgICAgICBDbGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKKyAgICAgICAgaW50IHZhbHVl
OworICAgICAgICBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2
KHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsICZ2YWx1ZSk7CisgICAgICAgIGlmIChwbmFtZSA9
PSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFKQorICAgICAgICAgICAgcmV0
dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPih2YWx1ZSkpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0PGxv
bmc+KHZhbHVlKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBm
YWxzZSk7CisgICAgICAgIGludCB0eXBlID0gMDsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdih0YXJnZXQsIGF0dGFjaG1lbnQsIEdMX0ZSQU1F
QlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEUsICZ0eXBlKTsKKyAgICAgICAgaW50IHZhbHVl
ID0gMDsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0
ZXJpdih0YXJnZXQsIGF0dGFjaG1lbnQsIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNU
X05BTUUsICZ2YWx1ZSk7CisgICAgICAgIC8vIEZJWE1FOiBzaG91bGQgY29uc2lkZXIgY2Fub25p
Y2FsaXppbmcgdGhlc2Ugb2JqZWN0cworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAg
Y2FzZSBHTF9SRU5ERVJCVUZGRVI6IHsKKyAgICAgICAgICAgIFJlZlB0cjxXZWJHTFJlbmRlcmJ1
ZmZlcj4gdG1wID0gV2ViR0xSZW5kZXJidWZmZXI6OmNyZWF0ZSh0aGlzLCB2YWx1ZSk7CisgICAg
ICAgICAgICBhZGRPYmplY3QodG1wLmdldCgpKTsKKyAgICAgICAgICAgIHJldHVybiBXZWJHTEdl
dEluZm8oUGFzc1JlZlB0cjxXZWJHTFJlbmRlcmJ1ZmZlcj4odG1wKSk7CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBHTF9URVhUVVJFOiB7CisgICAgICAgICAgICBSZWZQdHI8V2ViR0xUZXh0dXJl
PiB0bXAgPSBXZWJHTFRleHR1cmU6OmNyZWF0ZSh0aGlzLCB2YWx1ZSk7CisgICAgICAgICAgICBh
ZGRPYmplY3QodG1wLmdldCgpKTsKKyAgICAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oUGFz
c1JlZlB0cjxXZWJHTFRleHR1cmU+KHRtcCkpOworICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAvLyBGSVhNRTogcmFpc2UgZXhjZXB0aW9uPworICAgICAgICAgICAgcmV0
dXJuIFdlYkdMR2V0SW5mbygpOworICAgICAgICB9CisgICAgfQogfQogCi1QYXNzUmVmUHRyPFdl
YkdMSW50QXJyYXk+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0SW50ZWdlcnYodW5zaWduZWQg
bG9uZyBwbmFtZSkKK1dlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFBhcmFt
ZXRlcih1bnNpZ25lZCBsb25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBSZWZQ
dHI8V2ViR0xJbnRBcnJheT4gYXJyYXkgPSBtX2NvbnRleHQtPmdldEludGVnZXJ2KHBuYW1lKTsK
LSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwotICAgIHJldHVybiBhcnJheTsK
KyAgICBDbGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKKyAgICBzd2l0Y2ggKHBuYW1lKSB7Cisg
ICAgY2FzZSBHTF9BQ1RJVkVfVEVYVFVSRToKKyAgICAgICAgcmV0dXJuIGdldFVuc2lnbmVkTG9u
Z1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHTF9BTElBU0VEX0xJTkVfV0lEVEhfUkFOR0U6
CisgICAgICAgIHJldHVybiBnZXRXZWJHTEZsb2F0QXJyYXlQYXJhbWV0ZXIocG5hbWUpOworICAg
IGNhc2UgR0xfQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFOgorICAgICAgICByZXR1cm4gZ2V0V2Vi
R0xGbG9hdEFycmF5UGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdMX0FMUEhBX0JJVFM6Cisg
ICAgICAgIHJldHVybiBnZXRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdMX0FSUkFZ
X0JVRkZFUl9CSU5ESU5HOgorICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8
V2ViR0xCdWZmZXI+KG1fYXJyYXlCdWZmZXJCaW5kaW5nKSk7CisgICAgY2FzZSBHTF9CTEVORDoK
KyAgICAgICAgcmV0dXJuIGdldEJvb2xlYW5QYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR0xf
QkxFTkRfQ09MT1I6CisgICAgICAgIHJldHVybiBnZXRXZWJHTEZsb2F0QXJyYXlQYXJhbWV0ZXIo
cG5hbWUpOworICAgIGNhc2UgR0xfQkxFTkRfRFNUX0FMUEhBOgorICAgICAgICByZXR1cm4gZ2V0
VW5zaWduZWRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdMX0JMRU5EX0RTVF9SR0I6
CisgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNh
c2UgR0xfQkxFTkRfRVFVQVRJT05fQUxQSEE6CisgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZExv
bmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR0xfQkxFTkRfRVFVQVRJT05fUkdCOgorICAg
ICAgICByZXR1cm4gZ2V0VW5zaWduZWRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdM
X0JMRU5EX1NSQ19BTFBIQToKKyAgICAgICAgcmV0dXJuIGdldFVuc2lnbmVkTG9uZ1BhcmFtZXRl
cihwbmFtZSk7CisgICAgY2FzZSBHTF9CTEVORF9TUkNfUkdCOgorICAgICAgICByZXR1cm4gZ2V0
VW5zaWduZWRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdMX0JMVUVfQklUUzoKKyAg
ICAgICAgcmV0dXJuIGdldExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR0xfQ09MT1Jf
Q0xFQVJfVkFMVUU6CisgICAgICAgIHJldHVybiBnZXRXZWJHTEZsb2F0QXJyYXlQYXJhbWV0ZXIo
cG5hbWUpOworICAgIGNhc2UgR0xfQ09MT1JfV1JJVEVNQVNLOgorICAgICAgICByZXR1cm4gZ2V0
V2ViR0xVbnNpZ25lZEJ5dGVBcnJheVBhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHTF9DT01Q
UkVTU0VEX1RFWFRVUkVfRk9STUFUUzoKKyAgICAgICAgLy8gRGVmaW5lZCBhcyBudWxsIGluIHRo
ZSBzcGVjCisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKKyAgICBjYXNlIEdMX0NVTExf
RkFDRToKKyAgICAgICAgcmV0dXJuIGdldEJvb2xlYW5QYXJhbWV0ZXIocG5hbWUpOworICAgIGNh
c2UgR0xfQ1VMTF9GQUNFX01PREU6CisgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZExvbmdQYXJh
bWV0ZXIocG5hbWUpOworICAgIGNhc2UgR0xfQ1VSUkVOVF9QUk9HUkFNOgorICAgICAgICByZXR1
cm4gV2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xQcm9ncmFtPihtX2N1cnJlbnRQcm9ncmFt
KSk7CisgICAgY2FzZSBHTF9ERVBUSF9CSVRTOgorICAgICAgICByZXR1cm4gZ2V0TG9uZ1BhcmFt
ZXRlcihwbmFtZSk7CisgICAgY2FzZSBHTF9ERVBUSF9DTEVBUl9WQUxVRToKKyAgICAgICAgcmV0
dXJuIGdldEZsb2F0UGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdMX0RFUFRIX0ZVTkM6Cisg
ICAgICAgIHJldHVybiBnZXRVbnNpZ25lZExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2Ug
R0xfREVQVEhfUkFOR0U6CisgICAgICAgIHJldHVybiBnZXRXZWJHTEZsb2F0QXJyYXlQYXJhbWV0
ZXIocG5hbWUpOworICAgIGNhc2UgR0xfREVQVEhfVEVTVDoKKyAgICAgICAgcmV0dXJuIGdldEJv
b2xlYW5QYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR0xfREVQVEhfV1JJVEVNQVNLOgorICAg
ICAgICByZXR1cm4gZ2V0Qm9vbGVhblBhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHTF9ESVRI
RVI6CisgICAgICAgIHJldHVybiBnZXRCb29sZWFuUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNl
IEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkc6CisgICAgICAgIHJldHVybiBXZWJHTEdl
dEluZm8oUGFzc1JlZlB0cjxXZWJHTEJ1ZmZlcj4obV9lbGVtZW50QXJyYXlCdWZmZXJCaW5kaW5n
KSk7CisgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9CSU5ESU5HOgorICAgICAgICByZXR1cm4gV2Vi
R0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xGcmFtZWJ1ZmZlcj4obV9mcmFtZWJ1ZmZlckJpbmRp
bmcpKTsKKyAgICBjYXNlIEdMX0ZST05UX0ZBQ0U6CisgICAgICAgIHJldHVybiBnZXRVbnNpZ25l
ZExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR0xfR0VORVJBVEVfTUlQTUFQX0hJTlQ6
CisgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNh
c2UgR0xfR1JFRU5fQklUUzoKKyAgICAgICAgcmV0dXJuIGdldExvbmdQYXJhbWV0ZXIocG5hbWUp
OworICAgIGNhc2UgR0xfTElORV9XSURUSDoKKyAgICAgICAgcmV0dXJuIGdldEZsb2F0UGFyYW1l
dGVyKHBuYW1lKTsKKyAgICBjYXNlIEdMX01BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRT
OgorICAgICAgICByZXR1cm4gZ2V0TG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHTF9N
QVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFOgorICAgICAgICByZXR1cm4gZ2V0TG9uZ1BhcmFtZXRl
cihwbmFtZSk7CisgICAgY2FzZSBHTF9NQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTOgorICAg
ICAgICByZXR1cm4gZ2V0TG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHTF9NQVhfUkVO
REVSQlVGRkVSX1NJWkU6CisgICAgICAgIHJldHVybiBnZXRMb25nUGFyYW1ldGVyKHBuYW1lKTsK
KyAgICBjYXNlIEdMX01BWF9URVhUVVJFX0lNQUdFX1VOSVRTOgorICAgICAgICByZXR1cm4gZ2V0
TG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHTF9NQVhfVEVYVFVSRV9TSVpFOgorICAg
ICAgICByZXR1cm4gZ2V0TG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHTF9NQVhfVkFS
WUlOR19WRUNUT1JTOgorICAgICAgICByZXR1cm4gZ2V0TG9uZ1BhcmFtZXRlcihwbmFtZSk7Cisg
ICAgY2FzZSBHTF9NQVhfVkVSVEVYX0FUVFJJQlM6CisgICAgICAgIHJldHVybiBnZXRMb25nUGFy
YW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdMX01BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklU
UzoKKyAgICAgICAgcmV0dXJuIGdldExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR0xf
TUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlM6CisgICAgICAgIHJldHVybiBnZXRMb25nUGFyYW1l
dGVyKHBuYW1lKTsKKyAgICBjYXNlIEdMX01BWF9WSUVXUE9SVF9ESU1TOgorICAgICAgICByZXR1
cm4gZ2V0V2ViR0xJbnRBcnJheVBhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHTF9OVU1fQ09N
UFJFU1NFRF9URVhUVVJFX0ZPUk1BVFM6CisgICAgICAgIHJldHVybiBnZXRMb25nUGFyYW1ldGVy
KHBuYW1lKTsKKyAgICBjYXNlIEdMX05VTV9TSEFERVJfQklOQVJZX0ZPUk1BVFM6CisgICAgICAg
IC8vIEZJWE1FOiBzaG91bGQgd2UgYWx3YXlzIHJldHVybiAwIGZvciB0aGlzPworICAgICAgICBy
ZXR1cm4gZ2V0TG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHTF9QQUNLX0FMSUdOTUVO
VDoKKyAgICAgICAgcmV0dXJuIGdldExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR0xf
UE9MWUdPTl9PRkZTRVRfRkFDVE9SOgorICAgICAgICByZXR1cm4gZ2V0RmxvYXRQYXJhbWV0ZXIo
cG5hbWUpOworICAgIGNhc2UgR0xfUE9MWUdPTl9PRkZTRVRfRklMTDoKKyAgICAgICAgcmV0dXJu
IGdldEJvb2xlYW5QYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR0xfUE9MWUdPTl9PRkZTRVRf
VU5JVFM6CisgICAgICAgIHJldHVybiBnZXRGbG9hdFBhcmFtZXRlcihwbmFtZSk7CisgICAgY2Fz
ZSBHTF9SRURfQklUUzoKKyAgICAgICAgcmV0dXJuIGdldExvbmdQYXJhbWV0ZXIocG5hbWUpOwor
ICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX0JJTkRJTkc6CisgICAgICAgIHJldHVybiBXZWJHTEdl
dEluZm8oUGFzc1JlZlB0cjxXZWJHTFJlbmRlcmJ1ZmZlcj4obV9yZW5kZXJidWZmZXJCaW5kaW5n
KSk7CisgICAgY2FzZSBHTF9TQU1QTEVfQlVGRkVSUzoKKyAgICAgICAgcmV0dXJuIGdldExvbmdQ
YXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR0xfU0FNUExFX0NPVkVSQUdFX0lOVkVSVDoKKyAg
ICAgICAgcmV0dXJuIGdldEJvb2xlYW5QYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR0xfU0FN
UExFX0NPVkVSQUdFX1ZBTFVFOgorICAgICAgICByZXR1cm4gZ2V0RmxvYXRQYXJhbWV0ZXIocG5h
bWUpOworICAgIGNhc2UgR0xfU0FNUExFUzoKKyAgICAgICAgcmV0dXJuIGdldExvbmdQYXJhbWV0
ZXIocG5hbWUpOworICAgIGNhc2UgR0xfU0NJU1NPUl9CT1g6CisgICAgICAgIHJldHVybiBnZXRX
ZWJHTEludEFycmF5UGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdMX1NDSVNTT1JfVEVTVDoK
KyAgICAgICAgcmV0dXJuIGdldEJvb2xlYW5QYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR0xf
U1RFTkNJTF9CQUNLX0ZBSUw6CisgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZExvbmdQYXJhbWV0
ZXIocG5hbWUpOworICAgIGNhc2UgR0xfU1RFTkNJTF9CQUNLX0ZVTkM6CisgICAgICAgIHJldHVy
biBnZXRVbnNpZ25lZExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR0xfU1RFTkNJTF9C
QUNLX1BBU1NfREVQVEhfRkFJTDoKKyAgICAgICAgcmV0dXJuIGdldFVuc2lnbmVkTG9uZ1BhcmFt
ZXRlcihwbmFtZSk7CisgICAgY2FzZSBHTF9TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9QQVNTOgor
ICAgICAgICByZXR1cm4gZ2V0VW5zaWduZWRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNl
IEdMX1NURU5DSUxfQkFDS19SRUY6CisgICAgICAgIHJldHVybiBnZXRMb25nUGFyYW1ldGVyKHBu
YW1lKTsKKyAgICBjYXNlIEdMX1NURU5DSUxfQkFDS19WQUxVRV9NQVNLOgorICAgICAgICByZXR1
cm4gZ2V0VW5zaWduZWRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdMX1NURU5DSUxf
QkFDS19XUklURU1BU0s6CisgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZExvbmdQYXJhbWV0ZXIo
cG5hbWUpOworICAgIGNhc2UgR0xfU1RFTkNJTF9CSVRTOgorICAgICAgICByZXR1cm4gZ2V0TG9u
Z1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHTF9TVEVOQ0lMX0NMRUFSX1ZBTFVFOgorICAg
ICAgICByZXR1cm4gZ2V0TG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHTF9TVEVOQ0lM
X0ZBSUw6CisgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZExvbmdQYXJhbWV0ZXIocG5hbWUpOwor
ICAgIGNhc2UgR0xfU1RFTkNJTF9GVU5DOgorICAgICAgICByZXR1cm4gZ2V0VW5zaWduZWRMb25n
UGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdMX1NURU5DSUxfUEFTU19ERVBUSF9GQUlMOgor
ICAgICAgICByZXR1cm4gZ2V0VW5zaWduZWRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNl
IEdMX1NURU5DSUxfUEFTU19ERVBUSF9QQVNTOgorICAgICAgICByZXR1cm4gZ2V0VW5zaWduZWRM
b25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdMX1NURU5DSUxfUkVGOgorICAgICAgICBy
ZXR1cm4gZ2V0TG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHTF9TVEVOQ0lMX1RFU1Q6
CisgICAgICAgIHJldHVybiBnZXRCb29sZWFuUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdM
X1NURU5DSUxfVkFMVUVfTUFTSzoKKyAgICAgICAgcmV0dXJuIGdldFVuc2lnbmVkTG9uZ1BhcmFt
ZXRlcihwbmFtZSk7CisgICAgY2FzZSBHTF9TVEVOQ0lMX1dSSVRFTUFTSzoKKyAgICAgICAgcmV0
dXJuIGdldFVuc2lnbmVkTG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHTF9TVUJQSVhF
TF9CSVRTOgorICAgICAgICByZXR1cm4gZ2V0TG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2Fz
ZSBHTF9URVhUVVJFX0JJTkRJTkdfMkQ6CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oUGFz
c1JlZlB0cjxXZWJHTFRleHR1cmU+KG1fdGV4dHVyZVVuaXRzW21fYWN0aXZlVGV4dHVyZVVuaXRd
Lm1fdGV4dHVyZTJEQmluZGluZykpOworICAgIGNhc2UgR0xfVEVYVFVSRV9CSU5ESU5HX0NVQkVf
TUFQOgorICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xUZXh0dXJl
PihtX3RleHR1cmVVbml0c1ttX2FjdGl2ZVRleHR1cmVVbml0XS5tX3RleHR1cmVDdWJlTWFwQmlu
ZGluZykpOworICAgIGNhc2UgR0xfVU5QQUNLX0FMSUdOTUVOVDoKKyAgICAgICAgLy8gRklYTUU6
IHNob3VsZCB0aGlzIGJlICJsb25nIiBpbiB0aGUgc3BlYz8KKyAgICAgICAgcmV0dXJuIGdldElu
dFBhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHTF9WSUVXUE9SVDoKKyAgICAgICAgcmV0dXJu
IGdldFdlYkdMSW50QXJyYXlQYXJhbWV0ZXIocG5hbWUpOworICAgIGRlZmF1bHQ6CisgICAgICAg
IC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX0VOVU0gZXJyb3IKKyAgICAgICAgZWMgPSBTWU5U
QVhfRVJSOworICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CisgICAgfQogfQogCi1pbnQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQcm9ncmFtaShXZWJHTFByb2dyYW0qIHByb2dyYW0s
IHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorV2ViR0xHZXRJbmZvIFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UHJvZ3JhbVBhcmFtZXRlcihXZWJHTFByb2dyYW0qIHBy
b2dyYW0sIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlm
ICghcHJvZ3JhbSB8fCBwcm9ncmFtLT5jb250ZXh0KCkgIT0gdGhpcykgeworICAgICAgICAvLyBG
SVhNRTogcmFpc2UgR0xfSU5WQUxJRF9WQUxVRSBlcnJvcgogICAgICAgICBlYyA9IFRZUEVfTUlT
TUFUQ0hfRVJSOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5m
bygpOwogICAgIH0KIAotICAgIGludCByZXN1bHQgPSBtX2NvbnRleHQtPmdldFByb2dyYW1pKHBy
b2dyYW0sIHBuYW1lKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci0KLVBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gV2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpnZXRQcm9ncmFtaXYoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCB1bnNpZ25l
ZCBsb25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBpZiAoIXByb2dyYW0gfHwg
cHJvZ3JhbS0+Y29udGV4dCgpICE9IHRoaXMpIHsKLSAgICAgICAgZWMgPSBUWVBFX01JU01BVENI
X0VSUjsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7
CisgICAgaW50IHZhbHVlID0gMDsKKyAgICBzd2l0Y2ggKHBuYW1lKSB7CisgICAgY2FzZSBHTF9E
RUxFVEVfU1RBVFVTOgorICAgIGNhc2UgR0xfTElOS19TVEFUVVM6CisgICAgY2FzZSBHTF9WQUxJ
REFURV9TVEFUVVM6CisgICAgICAgIG1fY29udGV4dC0+Z2V0UHJvZ3JhbWl2KHByb2dyYW0sIHBu
YW1lLCAmdmFsdWUpOworICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0PGJv
b2w+KHZhbHVlKSk7CisgICAgY2FzZSBHTF9JTkZPX0xPR19MRU5HVEg6CisgICAgY2FzZSBHTF9B
VFRBQ0hFRF9TSEFERVJTOgorICAgIGNhc2UgR0xfQUNUSVZFX0FUVFJJQlVURVM6CisgICAgY2Fz
ZSBHTF9BQ1RJVkVfQVRUUklCVVRFX01BWF9MRU5HVEg6CisgICAgY2FzZSBHTF9BQ1RJVkVfVU5J
Rk9STVM6CisgICAgY2FzZSBHTF9BQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RIOgorICAgICAgICBt
X2NvbnRleHQtPmdldFByb2dyYW1pdihwcm9ncmFtLCBwbmFtZSwgJnZhbHVlKTsKKyAgICAgICAg
cmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNfY2FzdDxsb25nPih2YWx1ZSkpOworICAgIGRlZmF1
bHQ6CisgICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX0VOVU0gZXJyb3IKKyAgICAg
ICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CiAgICAg
fQotICAgIFJlZlB0cjxXZWJHTEludEFycmF5PiBhcnJheSA9IG1fY29udGV4dC0+Z2V0UHJvZ3Jh
bWl2KHByb2dyYW0sIHBuYW1lKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2Up
OwotICAgIHJldHVybiBhcnJheTsKIH0KIAogU3RyaW5nIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
Z2V0UHJvZ3JhbUluZm9Mb2coV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKICAgICBpZiAoIXByb2dyYW0gfHwgcHJvZ3JhbS0+Y29udGV4dCgpICE9IHRoaXMpIHsK
KyAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfVkFMVUUgZXJyb3IKICAgICAgICAg
ZWMgPSBUWVBFX01JU01BVENIX0VSUjsKICAgICAgICAgcmV0dXJuICIiOwogICAgIH0KLSAgICBT
dHJpbmcgcyA9IG1fY29udGV4dC0+Z2V0UHJvZ3JhbUluZm9Mb2cocHJvZ3JhbSk7Ci0gICAgY2xl
YW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKLSAgICByZXR1cm4gczsKLX0KLQotaW50IFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSh1bnNpZ25lZCBs
b25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICBpbnQgcmVzdWx0ID0gbV9j
b250ZXh0LT5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpOwotICAgIGNs
ZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBD
bGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKKyAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRQcm9n
cmFtSW5mb0xvZyhwcm9ncmFtKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KHVuc2lnbmVkIGxv
bmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKQorV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcgdGFyZ2V0
LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBSZWZQdHI8
V2ViR0xJbnRBcnJheT4gYXJyYXkgPSBtX2NvbnRleHQtPmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRl
cml2KHRhcmdldCwgcG5hbWUpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7
Ci0gICAgcmV0dXJuIGFycmF5OwotfQorICAgIGlmICh0YXJnZXQgIT0gR0xfUkVOREVSQlVGRkVS
KSB7CisgICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX0VOVU0gZXJyb3IKKyAgICAg
ICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CisgICAg
fQogCi1pbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTaGFkZXJpKFdlYkdMU2hhZGVyKiBz
aGFkZXIsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGlm
ICghc2hhZGVyIHx8IHNoYWRlci0+Y29udGV4dCgpICE9IHRoaXMpIHsKLSAgICAgICAgZWMgPSBU
WVBFX01JU01BVENIX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgQ2xlYW51cEhlbHBlcih0
aGlzLCBmYWxzZSk7CisgICAgaW50IHZhbHVlID0gMDsKKyAgICBzd2l0Y2ggKHBuYW1lKSB7Cisg
ICAgY2FzZSBHTF9SRU5ERVJCVUZGRVJfV0lEVEg6CisgICAgY2FzZSBHTF9SRU5ERVJCVUZGRVJf
SEVJR0hUOgorICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX1JFRF9TSVpFOgorICAgIGNhc2UgR0xf
UkVOREVSQlVGRkVSX0dSRUVOX1NJWkU6CisgICAgY2FzZSBHTF9SRU5ERVJCVUZGRVJfQkxVRV9T
SVpFOgorICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX0FMUEhBX1NJWkU6CisgICAgY2FzZSBHTF9S
RU5ERVJCVUZGRVJfREVQVEhfU0laRToKKyAgICBjYXNlIEdMX1JFTkRFUkJVRkZFUl9TVEVOQ0lM
X1NJWkU6CisgICAgICAgIG1fY29udGV4dC0+Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYodGFy
Z2V0LCBwbmFtZSwgJnZhbHVlKTsKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNf
Y2FzdDxsb25nPih2YWx1ZSkpOworICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZP
Uk1BVDoKKyAgICAgICAgbV9jb250ZXh0LT5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdih0YXJn
ZXQsIHBuYW1lLCAmdmFsdWUpOworICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19j
YXN0PHVuc2lnbmVkIGxvbmc+KHZhbHVlKSk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgLy8gRklY
TUU6IHJhaXNlIEdMX0lOVkFMSURfRU5VTSBlcnJvcgorICAgICAgICBlYyA9IFNZTlRBWF9FUlI7
CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKICAgICB9Ci0gICAgaW50IHJlc3VsdCA9
IG1fY29udGV4dC0+Z2V0U2hhZGVyaShzaGFkZXIsIHBuYW1lKTsKLSAgICBjbGVhbnVwQWZ0ZXJH
cmFwaGljc0NhbGwoZmFsc2UpOwotICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVBhc3NSZWZQdHI8
V2ViR0xJbnRBcnJheT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTaGFkZXJpdihXZWJHTFNo
YWRlciogc2hhZGVyLCB1bnNpZ25lZCBsb25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKK1dl
YkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFNoYWRlclBhcmFtZXRlcihXZWJH
TFNoYWRlciogc2hhZGVyLCB1bnNpZ25lZCBsb25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKICAgICBpZiAoIXNoYWRlciB8fCBzaGFkZXItPmNvbnRleHQoKSAhPSB0aGlzKSB7CisgICAg
ICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX1ZBTFVFIGVycm9yCiAgICAgICAgIGVjID0g
VFlQRV9NSVNNQVRDSF9FUlI7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gV2Vi
R0xHZXRJbmZvKCk7CisgICAgfQorICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOworICAg
IGludCB2YWx1ZSA9IDA7CisgICAgc3dpdGNoIChwbmFtZSkgeworICAgIGNhc2UgR0xfREVMRVRF
X1NUQVRVUzoKKyAgICBjYXNlIEdMX0NPTVBJTEVfU1RBVFVTOgorICAgICAgICBtX2NvbnRleHQt
PmdldFNoYWRlcml2KHNoYWRlciwgcG5hbWUsICZ2YWx1ZSk7CisgICAgICAgIHJldHVybiBXZWJH
TEdldEluZm8oc3RhdGljX2Nhc3Q8Ym9vbD4odmFsdWUpKTsKKyAgICBjYXNlIEdMX1NIQURFUl9U
WVBFOgorICAgICAgICBtX2NvbnRleHQtPmdldFNoYWRlcml2KHNoYWRlciwgcG5hbWUsICZ2YWx1
ZSk7CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9u
Zz4odmFsdWUpKTsKKyAgICBjYXNlIEdMX0lORk9fTE9HX0xFTkdUSDoKKyAgICBjYXNlIEdMX1NI
QURFUl9TT1VSQ0VfTEVOR1RIOgorICAgICAgICBtX2NvbnRleHQtPmdldFNoYWRlcml2KHNoYWRl
ciwgcG5hbWUsICZ2YWx1ZSk7CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oc3RhdGljX2Nh
c3Q8bG9uZz4odmFsdWUpKTsKKyAgICBkZWZhdWx0OgorICAgICAgICAvLyBGSVhNRTogcmFpc2Ug
R0xfSU5WQUxJRF9FTlVNIGVycm9yCisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAg
cmV0dXJuIFdlYkdMR2V0SW5mbygpOwogICAgIH0KLSAgICBSZWZQdHI8V2ViR0xJbnRBcnJheT4g
YXJyYXkgPSBtX2NvbnRleHQtPmdldFNoYWRlcml2KHNoYWRlciwgcG5hbWUpOwotICAgIGNsZWFu
dXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci0gICAgcmV0dXJuIGFycmF5OwogfQogCiBTdHJp
bmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTaGFkZXJJbmZvTG9nKFdlYkdMU2hhZGVyKiBz
aGFkZXIsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtNjk1LDkgKzExMzAsOCBAQCBTdHJpbmcgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTaGFkZXJJCiAgICAgICAgIGVjID0gVFlQRV9NSVNNQVRD
SF9FUlI7CiAgICAgICAgIHJldHVybiAiIjsKICAgICB9Ci0gICAgU3RyaW5nIHMgPSBtX2NvbnRl
eHQtPmdldFNoYWRlckluZm9Mb2coc2hhZGVyKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0Nh
bGwoZmFsc2UpOwotICAgIHJldHVybiBzOworICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2Up
OworICAgIHJldHVybiBtX2NvbnRleHQtPmdldFNoYWRlckluZm9Mb2coc2hhZGVyKTsKIH0KIAog
U3RyaW5nIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2hhZGVyU291cmNlKFdlYkdMU2hhZGVy
KiBzaGFkZXIsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtNzA2LDg2ICsxMTQwLDE2NiBAQCBTdHJp
bmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTaGFkZXJTCiAgICAgICAgIGVjID0gVFlQRV9N
SVNNQVRDSF9FUlI7CiAgICAgICAgIHJldHVybiAiIjsKICAgICB9Ci0gICAgU3RyaW5nIHMgPSBt
X2NvbnRleHQtPmdldFNoYWRlclNvdXJjZShzaGFkZXIpOwotICAgIGNsZWFudXBBZnRlckdyYXBo
aWNzQ2FsbChmYWxzZSk7Ci0gICAgcmV0dXJuIHM7CisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBm
YWxzZSk7CisgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0U2hhZGVyU291cmNlKHNoYWRlcik7CiB9
CiAKIFN0cmluZyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN0cmluZyh1bnNpZ25lZCBsb25n
IG5hbWUpCiB7CisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CiAgICAgcmV0dXJuIG1f
Y29udGV4dC0+Z2V0U3RyaW5nKG5hbWUpOwogfQogCi1mbG9hdCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmdldFRleFBhcmFtZXRlcmYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcg
cG5hbWUpCi17Ci0gICAgZmxvYXQgcmVzdWx0ID0gbV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJm
KHRhcmdldCwgcG5hbWUpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotUGFzc1JlZlB0cjxXZWJHTEZsb2F0QXJyYXk+IFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6Z2V0VGV4UGFyYW1ldGVyZnYodW5zaWduZWQgbG9uZyB0YXJnZXQs
IHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gYXJy
YXkgPSBtX2NvbnRleHQtPmdldFRleFBhcmFtZXRlcmZ2KHRhcmdldCwgcG5hbWUpOwotICAgIGNs
ZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci0gICAgcmV0dXJuIGFycmF5OwotfQotCi1p
bnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRUZXhQYXJhbWV0ZXJpKHVuc2lnbmVkIGxvbmcg
dGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKQotewotICAgIGludCByZXN1bHQgPSBtX2NvbnRl
eHQtPmdldFRleFBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSk7Ci0gICAgY2xlYW51cEFmdGVyR3Jh
cGhpY3NDYWxsKGZhbHNlKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1QYXNzUmVmUHRyPFdl
YkdMSW50QXJyYXk+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VGV4UGFyYW1ldGVyaXYodW5z
aWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCitXZWJHTEdldEluZm8gV2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpnZXRUZXhQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyB0YXJnZXQs
IHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIFJlZlB0cjxX
ZWJHTEludEFycmF5PiBhcnJheSA9IG1fY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyaXYodGFyZ2V0
LCBwbmFtZSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKLSAgICByZXR1
cm4gYXJyYXk7Ci19Ci0KLWZsb2F0IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VW5pZm9ybWYo
V2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykK
LXsKLSAgICBpZiAoIXByb2dyYW0gfHwgcHJvZ3JhbS0+Y29udGV4dCgpICE9IHRoaXMpIHsKLSAg
ICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgaWYg
KHRhcmdldCAhPSBHTF9URVhUVVJFXzJECisgICAgICAgICYmIHRhcmdldCAhPSBHTF9URVhUVVJF
X0NVQkVfTUFQKSB7CisgICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX0VOVU0gZXJy
b3IKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZv
KCk7CiAgICAgfQotICAgIGZsb2F0IHJlc3VsdCA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybWYocHJv
Z3JhbSwgbG9jYXRpb24pOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotUGFzc1JlZlB0cjxXZWJHTEZsb2F0QXJyYXk+IFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6Z2V0VW5pZm9ybWZ2KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9u
ZyBsb2NhdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgaWYgKCFwcm9ncmFtIHx8IHBy
b2dyYW0tPmNvbnRleHQoKSAhPSB0aGlzKSB7Ci0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9F
UlI7Ci0gICAgICAgIHJldHVybiAwOworICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwor
ICAgIGludCB2YWx1ZSA9IDA7CisgICAgc3dpdGNoIChwbmFtZSkgeworICAgIGNhc2UgR0xfVEVY
VFVSRV9NQUdfRklMVEVSOgorICAgIGNhc2UgR0xfVEVYVFVSRV9NSU5fRklMVEVSOgorICAgIGNh
c2UgR0xfVEVYVFVSRV9XUkFQX1M6CisgICAgY2FzZSBHTF9URVhUVVJFX1dSQVBfVDoKKyAgICAg
ICAgbV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUpOwor
ICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KHZh
bHVlKSk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURf
RU5VTSBlcnJvcgorICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybiBXZWJH
TEdldEluZm8oKTsKICAgICB9Ci0gICAgUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gYXJyYXkgPSBt
X2NvbnRleHQtPmdldFVuaWZvcm1mdihwcm9ncmFtLCBsb2NhdGlvbik7Ci0gICAgY2xlYW51cEFm
dGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKLSAgICByZXR1cm4gYXJyYXk7CiB9CiAKLWxvbmcgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpnZXRVbmlmb3JtaShXZWJHTFByb2dyYW0qIHByb2dyYW0sIGxv
bmcgbG9jYXRpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQorV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6Z2V0VW5pZm9ybShXZWJHTFByb2dyYW0qIHByb2dyYW0sIGxvbmcgbG9jYXRp
b24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICghcHJvZ3JhbSB8fCBwcm9ncmFtLT5j
b250ZXh0KCkgIT0gdGhpcykgeworICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9W
QUxVRSBlcnJvcgogICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOwotICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOwogICAgIH0KLSAgICBsb25nIHJl
c3VsdCA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybWkocHJvZ3JhbSwgbG9jYXRpb24pOwotICAgIGNs
ZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
UGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFVuaWZv
cm1pdihXZWJHTFByb2dyYW0qIHByb2dyYW0sIGxvbmcgbG9jYXRpb24sIEV4Y2VwdGlvbkNvZGUm
IGVjKQotewotICAgIGlmICghcHJvZ3JhbSB8fCBwcm9ncmFtLT5jb250ZXh0KCkgIT0gdGhpcykg
ewotICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOwotICAgICAgICByZXR1cm4gMDsKKyAg
ICBDbGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKKyAgICAvLyBGSVhNRTogbWFrZSB0aGlzIG1v
cmUgZWZmaWNpZW50IHVzaW5nIFdlYkdMVW5pZm9ybUxvY2F0aW9uIGFuZCBjYWNoaW5nIHR5cGVz
IGluIGl0CisgICAgaW50IGFjdGl2ZVVuaWZvcm1zID0gMDsKKyAgICBtX2NvbnRleHQtPmdldFBy
b2dyYW1pdihwcm9ncmFtLCBHTF9BQ1RJVkVfVU5JRk9STVMsICZhY3RpdmVVbmlmb3Jtcyk7Cisg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhY3RpdmVVbmlmb3JtczsgaSsrKSB7CisgICAgICAgIEFj
dGl2ZUluZm8gaW5mbzsKKyAgICAgICAgaWYgKCFtX2NvbnRleHQtPmdldEFjdGl2ZVVuaWZvcm0o
cHJvZ3JhbSwgaSwgaW5mbykpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiByYWlzZSBzb21lIEdM
IGVycm9yCisgICAgICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICAgICAg
cmV0dXJuIFdlYkdMR2V0SW5mbygpOworICAgICAgICB9CisgICAgICAgIC8vIE5vdyBuZWVkIHRv
IGxvb2sgdGhpcyB1cCBieSBuYW1lIGFnYWluIHRvIGZpbmQgaXRzIGxvY2F0aW9uCisgICAgICAg
IGxvbmcgbG9jID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgaW5mby5u
YW1lKTsKKyAgICAgICAgaWYgKGxvYyA9PSBsb2NhdGlvbikgeworICAgICAgICAgICAgLy8gRm91
bmQgaXQuIFVzZSB0aGUgdHlwZSBpbiB0aGUgQWN0aXZlSW5mbyB0byBkZXRlcm1pbmUgdGhlIHJl
dHVybiB0eXBlLgorICAgICAgICAgICAgdW5zaWduZWQgYmFzZVR5cGU7CisgICAgICAgICAgICB1
bnNpZ25lZCBsZW5ndGg7CisgICAgICAgICAgICBzd2l0Y2ggKGluZm8udHlwZSkgeworICAgICAg
ICAgICAgICAgIGNhc2UgR0xfQk9PTDoKKyAgICAgICAgICAgICAgICAgICAgYmFzZVR5cGUgPSBH
TF9CT09MOworICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSAxOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX0JPT0xfVkVDMjoKKyAgICAgICAg
ICAgICAgICAgICAgYmFzZVR5cGUgPSBHTF9CT09MOworICAgICAgICAgICAgICAgICAgICBsZW5n
dGggPSAyOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNl
IEdMX0JPT0xfVkVDMzoKKyAgICAgICAgICAgICAgICAgICAgYmFzZVR5cGUgPSBHTF9CT09MOwor
ICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSAzOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX0JPT0xfVkVDNDoKKyAgICAgICAgICAgICAgICAg
ICAgYmFzZVR5cGUgPSBHTF9CT09MOworICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSA0Owor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX0lOVDoK
KyAgICAgICAgICAgICAgICAgICAgYmFzZVR5cGUgPSBHTF9JTlQ7CisgICAgICAgICAgICAgICAg
ICAgIGxlbmd0aCA9IDE7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIGNhc2UgR0xfSU5UX1ZFQzI6CisgICAgICAgICAgICAgICAgICAgIGJhc2VUeXBlID0gR0xf
SU5UOworICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSAyOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX0lOVF9WRUMzOgorICAgICAgICAgICAg
ICAgICAgICBiYXNlVHlwZSA9IEdMX0lOVDsKKyAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0g
MzsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9J
TlRfVkVDNDoKKyAgICAgICAgICAgICAgICAgICAgYmFzZVR5cGUgPSBHTF9JTlQ7CisgICAgICAg
ICAgICAgICAgICAgIGxlbmd0aCA9IDQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIGNhc2UgR0xfRkxPQVQ6CisgICAgICAgICAgICAgICAgICAgIGJhc2VUeXBl
ID0gR0xfRkxPQVQ7CisgICAgICAgICAgICAgICAgICAgIGxlbmd0aCA9IDE7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgR0xfRkxPQVRfVkVDMjoKKyAg
ICAgICAgICAgICAgICAgICAgYmFzZVR5cGUgPSBHTF9GTE9BVDsKKyAgICAgICAgICAgICAgICAg
ICAgbGVuZ3RoID0gMjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgY2FzZSBHTF9GTE9BVF9WRUMzOgorICAgICAgICAgICAgICAgICAgICBiYXNlVHlwZSA9IEdM
X0ZMT0FUOworICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSAzOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzQ6CisgICAgICAg
ICAgICAgICAgICAgIGJhc2VUeXBlID0gR0xfRkxPQVQ7CisgICAgICAgICAgICAgICAgICAgIGxl
bmd0aCA9IDQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNh
c2UgR0xfRkxPQVRfTUFUMjoKKyAgICAgICAgICAgICAgICAgICAgYmFzZVR5cGUgPSBHTF9GTE9B
VDsKKyAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0gNDsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9GTE9BVF9NQVQzOgorICAgICAgICAgICAg
ICAgICAgICBiYXNlVHlwZSA9IEdMX0ZMT0FUOworICAgICAgICAgICAgICAgICAgICBsZW5ndGgg
PSA5OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEdM
X0ZMT0FUX01BVDQ6CisgICAgICAgICAgICAgICAgICAgIGJhc2VUeXBlID0gR0xfRkxPQVQ7Cisg
ICAgICAgICAgICAgICAgICAgIGxlbmd0aCA9IDE2OworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAvLyBDYW4n
dCBoYW5kbGUgdGhpcyB0eXBlCisgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiB3aGF0IHRv
IGRvIGFib3V0IHNhbXBsZXJzPworICAgICAgICAgICAgICAgICAgICByZXR1cm4gV2ViR0xHZXRJ
bmZvKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzd2l0Y2ggKGJhc2VUeXBlKSB7Cisg
ICAgICAgICAgICBjYXNlIEdMX0ZMT0FUOiB7CisgICAgICAgICAgICAgICAgZmxvYXQgdmFsdWVb
MTZdID0gezB9OworICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybWZ2KHByb2dy
YW0sIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKGxlbmd0aCA9PSAxKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKHZhbHVlWzBdKTsKKyAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8o
V2ViR0xGbG9hdEFycmF5OjpjcmVhdGUodmFsdWUsIGxlbmd0aCkpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgY2FzZSBHTF9JTlQ6IHsKKyAgICAgICAgICAgICAgICBpbnQgdmFsdWVbMTZd
ID0gezB9OworICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybWl2KHByb2dyYW0s
IGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKGxlbmd0aCA9PSAxKQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0PGxvbmc+KHZh
bHVlWzBdKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gV2ViR0xHZXRJbmZvKFdlYkdMSW50QXJyYXk6OmNyZWF0ZSh2YWx1ZSwgbGVuZ3RoKSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIEdMX0JPT0w6IHsKKyAgICAgICAgICAgICAg
ICBpbnQgdmFsdWVbMTZdID0gezB9OworICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0VW5p
Zm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKGxl
bmd0aCA9PSAxKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKHN0YXRp
Y19jYXN0PGJvb2w+KHZhbHVlWzBdKSk7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYm9vbFZhbHVlWzE2XSA9IHswfTsKKyAgICAgICAg
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IGxlbmd0aDsgaisrKQorICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbFZhbHVlW2pdID0gc3RhdGljX2Nhc3Q8Ym9vbD4odmFsdWVb
al0pOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKFdlYkdMVW5zaWdu
ZWRCeXRlQXJyYXk6OmNyZWF0ZShib29sVmFsdWUsIGxlbmd0aCkpOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KLSAgICBS
ZWZQdHI8V2ViR0xJbnRBcnJheT4gYXJyYXkgPSBtX2NvbnRleHQtPmdldFVuaWZvcm1pdihwcm9n
cmFtLCBsb2NhdGlvbik7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKLSAg
ICByZXR1cm4gYXJyYXk7CisgICAgLy8gSWYgd2UgZ2V0IGhlcmUsIHNvbWV0aGluZyB3ZW50IHdy
b25nIGluIG91ciB1bmZvcnR1bmF0ZWx5IGNvbXBsZXggbG9naWMgYWJvdmUKKyAgICByZXR1cm4g
V2ViR0xHZXRJbmZvKCk7CiB9CiAKIGxvbmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRVbmlm
b3JtTG9jYXRpb24oV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4
Y2VwdGlvbkNvZGUmIGVjKQpAQCAtNzk3LDMyICsxMzExLDQ3IEBAIGxvbmcgV2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpnZXRVbmlmb3JtTG8KICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRVbmlmb3Jt
TG9jYXRpb24ocHJvZ3JhbSwgbmFtZSk7CiB9CiAKLWZsb2F0IFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Z2V0VmVydGV4QXR0cmliZih1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBu
YW1lKQotewotICAgIGZsb2F0IHJlc3VsdCA9IG1fY29udGV4dC0+Z2V0VmVydGV4QXR0cmliZihp
bmRleCwgcG5hbWUpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotUGFzc1JlZlB0cjxXZWJHTEZsb2F0QXJyYXk+IFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6Z2V0VmVydGV4QXR0cmliZnYodW5zaWduZWQgbG9uZyBpbmRleCwgdW5z
aWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICBSZWZQdHI8V2ViR0xGbG9hdEFycmF5PiBhcnJheSA9
IG1fY29udGV4dC0+Z2V0VmVydGV4QXR0cmliZnYoaW5kZXgsIHBuYW1lKTsKLSAgICBjbGVhbnVw
QWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwotICAgIHJldHVybiBhcnJheTsKLX0KLQotbG9uZyBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFZlcnRleEF0dHJpYmkodW5zaWduZWQgbG9uZyBpbmRl
eCwgdW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICBsb25nIHJlc3VsdCA9IG1fY29udGV4dC0+
Z2V0VmVydGV4QXR0cmliaShpbmRleCwgcG5hbWUpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNz
Q2FsbChmYWxzZSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotUGFzc1JlZlB0cjxXZWJHTElu
dEFycmF5PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFZlcnRleEF0dHJpYml2KHVuc2lnbmVk
IGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCitXZWJHTEdldEluZm8gV2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpnZXRWZXJ0ZXhBdHRyaWIodW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWdu
ZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgUmVmUHRyPFdlYkdMSW50
QXJyYXk+IGFycmF5ID0gbV9jb250ZXh0LT5nZXRWZXJ0ZXhBdHRyaWJpdihpbmRleCwgcG5hbWUp
OwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci0gICAgcmV0dXJuIGFycmF5
OworICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOworICAgIHN3aXRjaCAocG5hbWUpIHsK
KyAgICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkc6IHsKKyAgICAg
ICAgaW50IG5hbWUgPSAwOworICAgICAgICBtX2NvbnRleHQtPmdldFZlcnRleEF0dHJpYml2KGlu
ZGV4LCBwbmFtZSwgJm5hbWUpOworICAgICAgICBpZiAobmFtZSA9PSAwKQorICAgICAgICAgICAg
cmV0dXJuIFdlYkdMR2V0SW5mbygpOworICAgICAgICBSZWZQdHI8V2ViR0xCdWZmZXI+IHRtcCA9
IFdlYkdMQnVmZmVyOjpjcmVhdGUodGhpcywgbmFtZSk7CisgICAgICAgIGFkZE9iamVjdCh0bXAu
Z2V0KCkpOworICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xCdWZm
ZXI+KHRtcCkpOworICAgIH0KKyAgICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxF
RDoKKyAgICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfTk9STUFMSVpFRDogeworICAgICAg
ICBpbnQgdmFsdWUgPSAwOworICAgICAgICBtX2NvbnRleHQtPmdldFZlcnRleEF0dHJpYml2KGlu
ZGV4LCBwbmFtZSwgJnZhbHVlKTsKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNf
Y2FzdDxib29sPih2YWx1ZSkpOworICAgIH0KKyAgICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJS
QVlfU0laRToKKyAgICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfU1RSSURFOiB7CisgICAg
ICAgIGludCB2YWx1ZSA9IDA7CisgICAgICAgIG1fY29udGV4dC0+Z2V0VmVydGV4QXR0cmliaXYo
aW5kZXgsIHBuYW1lLCAmdmFsdWUpOworICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKHN0YXRp
Y19jYXN0PGxvbmc+KHZhbHVlKSk7CisgICAgfQorICAgIGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9B
UlJBWV9UWVBFOiB7CisgICAgICAgIGludCB2YWx1ZSA9IDA7CisgICAgICAgIG1fY29udGV4dC0+
Z2V0VmVydGV4QXR0cmliaXYoaW5kZXgsIHBuYW1lLCAmdmFsdWUpOworICAgICAgICByZXR1cm4g
V2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KHZhbHVlKSk7CisgICAgfQor
ICAgIGNhc2UgR0xfQ1VSUkVOVF9WRVJURVhfQVRUUklCOiB7CisgICAgICAgIGZsb2F0IHZhbHVl
WzRdID0gezB9OworICAgICAgICBtX2NvbnRleHQtPmdldFZlcnRleEF0dHJpYmZ2KGluZGV4LCBw
bmFtZSwgdmFsdWUpOworICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKFdlYkdMRmxvYXRBcnJh
eTo6Y3JlYXRlKHZhbHVlLCA0KSk7CisgICAgfQorICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgLy8g
RklYTUU6IHJhaXNlIEdMX0lOVkFMSURfRU5VTSBlcnJvcgorICAgICAgICBlYyA9IFNZTlRBWF9F
UlI7CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKKyAgICB9CisgICAgfQogfQogCiBs
b25nIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0KHVuc2lnbmVk
IGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCkBAIC04MzQsOCArMTM2Myw4IEBAIGxv
bmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRWZXJ0ZXhBdHQKIAogdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmhpbnQodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgbW9k
ZSkKIHsKKyAgICBDbGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKICAgICBtX2NvbnRleHQtPmhp
bnQodGFyZ2V0LCBtb2RlKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwog
fQogCiBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6aXNCdWZmZXIoV2ViR0xCdWZmZXIqIGJ1
ZmZlcikKQEAgLTg3OCw4ICsxNDA3LDggQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omlz
VGV4dHVyZShXZQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6bGluZVdpZHRoKGRvdWJs
ZSB3aWR0aCkKIHsKKyAgICBDbGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKICAgICBtX2NvbnRl
eHQtPmxpbmVXaWR0aCgoZmxvYXQpIHdpZHRoKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0Nh
bGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6bGlua1Byb2dyYW0o
V2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTg4OCw1MiArMTQx
Nyw1MSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6bGlua1Byb2dyYW0oCiAgICAgICAg
IGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgICAg
IAorCisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CiAgICAgbV9jb250ZXh0LT5saW5r
UHJvZ3JhbShwcm9ncmFtKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwog
fQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6cGl4ZWxTdG9yZWkodW5zaWduZWQgbG9u
ZyBwbmFtZSwgbG9uZyBwYXJhbSkKIHsKKyAgICBDbGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsK
ICAgICBtX2NvbnRleHQtPnBpeGVsU3RvcmVpKHBuYW1lLCBwYXJhbSk7Ci0gICAgY2xlYW51cEFm
dGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OnBvbHlnb25PZmZzZXQoZG91YmxlIGZhY3RvciwgZG91YmxlIHVuaXRzKQogeworICAgIENsZWFu
dXBIZWxwZXIodGhpcywgZmFsc2UpOwogICAgIG1fY29udGV4dC0+cG9seWdvbk9mZnNldCgoZmxv
YXQpIGZhY3RvciwgKGZsb2F0KSB1bml0cyk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxs
KGZhbHNlKTsKIH0KIAogUGFzc1JlZlB0cjxXZWJHTEFycmF5PiBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OnJlYWRQaXhlbHMobG9uZyB4LCBsb25nIHksIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2ln
bmVkIGxvbmcgaGVpZ2h0LCB1bnNpZ25lZCBsb25nIGZvcm1hdCwgdW5zaWduZWQgbG9uZyB0eXBl
KQogewotICAgIFJlZlB0cjxXZWJHTEFycmF5PiBhcnJheSA9IG1fY29udGV4dC0+cmVhZFBpeGVs
cyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUpOwotICAgIGNsZWFudXBBZnRlckdy
YXBoaWNzQ2FsbChmYWxzZSk7Ci0gICAgcmV0dXJuIGFycmF5OworICAgIENsZWFudXBIZWxwZXIo
dGhpcywgZmFsc2UpOworICAgIHJldHVybiBtX2NvbnRleHQtPnJlYWRQaXhlbHMoeCwgeSwgd2lk
dGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OnJlbGVhc2VTaGFkZXJDb21waWxlcigpCiB7CisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBm
YWxzZSk7CiAgICAgbV9jb250ZXh0LT5yZWxlYXNlU2hhZGVyQ29tcGlsZXIoKTsKLSAgICBjbGVh
bnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6cmVuZGVyYnVmZmVyU3RvcmFnZSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQg
bG9uZyBpbnRlcm5hbGZvcm1hdCwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBo
ZWlnaHQpCiB7CisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CiAgICAgbV9jb250ZXh0
LT5yZW5kZXJidWZmZXJTdG9yYWdlKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpzYW1wbGVDb3ZlcmFnZShkb3VibGUgdmFsdWUsIGJvb2wgaW52
ZXJ0KQogeworICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwogICAgIG1fY29udGV4dC0+
c2FtcGxlQ292ZXJhZ2UoKGZsb2F0KSB2YWx1ZSwgaW52ZXJ0KTsKLSAgICBjbGVhbnVwQWZ0ZXJH
cmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6c2Np
c3Nvcihsb25nIHgsIGxvbmcgeSwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBo
ZWlnaHQpCiB7CisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CiAgICAgbV9jb250ZXh0
LT5zY2lzc29yKHgsIHksIHdpZHRoLCBoZWlnaHQpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNz
Q2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpzaGFkZXJTb3Vy
Y2UoV2ViR0xTaGFkZXIqIHNoYWRlciwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQpAQCAtOTQyLDY2ICsxNDcwLDY2IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpzaGFkZXJTb3VyY2UKICAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KKyAgICBDbGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKICAgICBtX2Nv
bnRleHQtPnNoYWRlclNvdXJjZShzaGFkZXIsIHN0cmluZyk7Ci0gICAgY2xlYW51cEFmdGVyR3Jh
cGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnN0ZW5j
aWxGdW5jKHVuc2lnbmVkIGxvbmcgZnVuYywgbG9uZyByZWYsIHVuc2lnbmVkIGxvbmcgbWFzaykK
IHsKKyAgICBDbGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKICAgICBtX2NvbnRleHQtPnN0ZW5j
aWxGdW5jKGZ1bmMsIHJlZiwgbWFzayk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZh
bHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnN0ZW5jaWxGdW5jU2VwYXJh
dGUodW5zaWduZWQgbG9uZyBmYWNlLCB1bnNpZ25lZCBsb25nIGZ1bmMsIGxvbmcgcmVmLCB1bnNp
Z25lZCBsb25nIG1hc2spCiB7CisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CiAgICAg
bV9jb250ZXh0LT5zdGVuY2lsRnVuY1NlcGFyYXRlKGZhY2UsIGZ1bmMsIHJlZiwgbWFzayk7Ci0g
ICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OnN0ZW5jaWxNYXNrKHVuc2lnbmVkIGxvbmcgbWFzaykKIHsKKyAgICBDbGVh
bnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKICAgICBtX2NvbnRleHQtPnN0ZW5jaWxNYXNrKG1hc2sp
OwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpzdGVuY2lsTWFza1NlcGFyYXRlKHVuc2lnbmVkIGxvbmcgZmFjZSwg
dW5zaWduZWQgbG9uZyBtYXNrKQogeworICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwog
ICAgIG1fY29udGV4dC0+c3RlbmNpbE1hc2tTZXBhcmF0ZShmYWNlLCBtYXNrKTsKLSAgICBjbGVh
bnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6c3RlbmNpbE9wKHVuc2lnbmVkIGxvbmcgZmFpbCwgdW5zaWduZWQgbG9uZyB6ZmFpbCwg
dW5zaWduZWQgbG9uZyB6cGFzcykKIHsKKyAgICBDbGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsK
ICAgICBtX2NvbnRleHQtPnN0ZW5jaWxPcChmYWlsLCB6ZmFpbCwgenBhc3MpOwotICAgIGNsZWFu
dXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpzdGVuY2lsT3BTZXBhcmF0ZSh1bnNpZ25lZCBsb25nIGZhY2UsIHVuc2lnbmVkIGxvbmcg
ZmFpbCwgdW5zaWduZWQgbG9uZyB6ZmFpbCwgdW5zaWduZWQgbG9uZyB6cGFzcykKIHsKKyAgICBD
bGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKICAgICBtX2NvbnRleHQtPnN0ZW5jaWxPcFNlcGFy
YXRlKGZhY2UsIGZhaWwsIHpmYWlsLCB6cGFzcyk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3ND
YWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleEltYWdlMkQo
dW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZlbCwgdW5zaWduZWQgaW50ZXJuYWxmb3JtYXQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCB3aWR0
aCwgdW5zaWduZWQgaGVpZ2h0LCB1bnNpZ25lZCBib3JkZXIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBmb3JtYXQsIHVuc2lnbmVkIHR5cGUsIFdl
YkdMQXJyYXkqIHBpeGVscywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgQ2xlYW51cEhlbHBl
cih0aGlzLCBmYWxzZSk7CiAgICAgLy8gRklYTUU6IEZvciBub3cgd2UgaWdub3JlIGFueSBlcnJv
cnMgcmV0dXJuZWQKICAgICBlYyA9IDA7CiAgICAgbV9jb250ZXh0LT50ZXhJbWFnZTJEKHRhcmdl
dCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOwotICAgIGNsZWFudXBBZnRl
ckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0
ZXhJbWFnZTJEKHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIHVuc2lnbmVkIGludGVy
bmFsZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCwgdW5zaWduZWQgYm9yZGVyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZm9ybWF0LCB1bnNpZ25l
ZCB0eXBlLCBJbWFnZURhdGEqIHBpeGVscywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgQ2xl
YW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CiAgICAgLy8gRklYTUU6IEZvciBub3cgd2UgaWdub3Jl
IGFueSBlcnJvcnMgcmV0dXJuZWQKICAgICBlYyA9IDA7CiAgICAgbV9jb250ZXh0LT50ZXhJbWFn
ZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvcmRlciwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOwotICAgIGNs
ZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp0ZXhJbWFnZTJEKHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIEhUTUxJ
bWFnZUVsZW1lbnQqIGltYWdlLApAQCAtMTAxNyw5ICsxNTQ1LDkgQEAgdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OnRleEltYWdlMkQodQogICAgIGlmICghY2FjaGVkSW1hZ2UpCiAgICAgICAg
IHJldHVybjsKIAorICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwogICAgIC8vIEZJWE1F
OiBGb3Igbm93IHdlIGlnbm9yZSBhbnkgZXJyb3JzIHJldHVybmVkCiAgICAgbV9jb250ZXh0LT50
ZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGNhY2hlZEltYWdlLT5pbWFnZSgpLCBmbGlwWSwgcHJl
bXVsdGlwbHlBbHBoYSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0K
IAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleEltYWdlMkQodW5zaWduZWQgdGFyZ2V0
LCB1bnNpZ25lZCBsZXZlbCwgSFRNTENhbnZhc0VsZW1lbnQqIGNhbnZhcywKQEAgLTEwMzUsNTAg
KzE1NjMsNTAgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleEltYWdlMkQodQogICAg
IGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm47CiAKKyAgICBDbGVhbnVwSGVscGVyKHRoaXMs
IGZhbHNlKTsKICAgICAvLyBGSVhNRTogRm9yIG5vdyB3ZSBpZ25vcmUgYW55IGVycm9ycyByZXR1
cm5lZAogICAgIG1fY29udGV4dC0+dGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBidWZmZXItPmlt
YWdlKCksIGZsaXBZLCBwcmVtdWx0aXBseUFscGhhKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGlj
c0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4SW1hZ2Uy
RCh1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIGxldmVsLCBIVE1MVmlkZW9FbGVtZW50KiB2aWRl
bywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZmxpcFks
IGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgQ2xlYW51
cEhlbHBlcih0aGlzLCBmYWxzZSk7CiAgICAgLy8gRklYTUU6IEZvciBub3cgd2UgaWdub3JlIGFu
eSBlcnJvcnMgcmV0dXJuZWQKICAgICBlYyA9IDA7CiAgICAgbV9jb250ZXh0LT50ZXhJbWFnZTJE
KHRhcmdldCwgbGV2ZWwsIHZpZGVvLCBmbGlwWSwgcHJlbXVsdGlwbHlBbHBoYSk7Ci0gICAgY2xl
YW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnRleFBhcmFtZXRlcmYodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBwbmFtZSwgZmxv
YXQgcGFyYW0pCiB7CisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CiAgICAgbV9jb250
ZXh0LT50ZXhQYXJhbWV0ZXJmKHRhcmdldCwgcG5hbWUsIHBhcmFtKTsKLSAgICBjbGVhbnVwQWZ0
ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
dGV4UGFyYW1ldGVyaSh1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIHBuYW1lLCBpbnQgcGFyYW0p
CiB7CisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CiAgICAgbV9jb250ZXh0LT50ZXhQ
YXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUsIHBhcmFtKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGlj
c0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1h
Z2UyRCh1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIGxldmVsLCB1bnNpZ25lZCB4b2Zmc2V0LCB1
bnNpZ25lZCB5b2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZvcm1hdCwgdW5zaWduZWQgdHlw
ZSwgV2ViR0xBcnJheSogcGl4ZWxzLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBDbGVhbnVw
SGVscGVyKHRoaXMsIGZhbHNlKTsKICAgICAvLyBGSVhNRTogRm9yIG5vdyB3ZSBpZ25vcmUgYW55
IGVycm9ycyByZXR1cm5lZAogICAgIGVjID0gMDsKICAgICBtX2NvbnRleHQtPnRleFN1YkltYWdl
MkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0
LCB0eXBlLCBwaXhlbHMpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9
CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTJEKHVuc2lnbmVkIHRh
cmdldCwgdW5zaWduZWQgbGV2ZWwsIHVuc2lnbmVkIHhvZmZzZXQsIHVuc2lnbmVkIHlvZmZzZXQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCB3
aWR0aCwgdW5zaWduZWQgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgZm9ybWF0LCB1bnNpZ25lZCB0eXBlLCBJbWFnZURhdGEqIHBp
eGVscywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxz
ZSk7CiAgICAgLy8gRklYTUU6IEZvciBub3cgd2UgaWdub3JlIGFueSBlcnJvcnMgcmV0dXJuZWQK
ICAgICBlYyA9IDA7CiAgICAgbV9jb250ZXh0LT50ZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWws
IHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsK
LSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UyRCh1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIGxl
dmVsLCB1bnNpZ25lZCB4b2Zmc2V0LCB1bnNpZ25lZCB5b2Zmc2V0LApAQCAtMTA5MSwxMyArMTYx
OSwxMyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UyCiAgICAgICAg
IGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisK
ICAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBpbWFnZS0+Y2FjaGVkSW1hZ2UoKTsKICAg
ICBpZiAoIWNhY2hlZEltYWdlKQogICAgICAgICByZXR1cm47CiAKKyAgICBDbGVhbnVwSGVscGVy
KHRoaXMsIGZhbHNlKTsKICAgICBtX2NvbnRleHQtPnRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZl
bCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgY2FjaGVkSW1hZ2UtPmltYWdlKCks
IGZsaXBZLCBwcmVtdWx0aXBseUFscGhhKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwo
ZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UyRCh1
bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIGxldmVsLCB1bnNpZ25lZCB4b2Zmc2V0LCB1bnNpZ25l
ZCB5b2Zmc2V0LApAQCAtMTEwOSwzMCArMTYzNywzMCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6dGV4U3ViSW1hZ2UyCiAgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBJbWFnZUJ1ZmZlciogYnVmZmVyID0gY2Fu
dmFzLT5idWZmZXIoKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwotICAgIAor
CisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CiAgICAgLy8gRklYTUU6IEZvciBub3cg
d2UgaWdub3JlIGFueSBlcnJvcnMgcmV0dXJuZWQKICAgICBtX2NvbnRleHQtPnRleFN1YkltYWdl
MkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgYnVmZmVy
LT5pbWFnZSgpLCBmbGlwWSwgcHJlbXVsdGlwbHlBbHBoYSk7Ci0gICAgY2xlYW51cEFmdGVyR3Jh
cGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleFN1
YkltYWdlMkQodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZlbCwgdW5zaWduZWQgeG9mZnNl
dCwgdW5zaWduZWQgeW9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsIEhUTUxWaWRlb0VsZW1l
bnQqIHZpZGVvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBmbGlwWSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
KyAgICBDbGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKICAgICAvLyBGSVhNRTogRm9yIG5vdyB3
ZSBpZ25vcmUgYW55IGVycm9ycyByZXR1cm5lZAogICAgIGVjID0gMDsKICAgICBtX2NvbnRleHQt
PnRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhl
aWdodCwgdmlkZW8sIGZsaXBZLCBwcmVtdWx0aXBseUFscGhhKTsKLSAgICBjbGVhbnVwQWZ0ZXJH
cmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5p
Zm9ybTFmKGxvbmcgbG9jYXRpb24sIGZsb2F0IHgpCiB7CisgICAgQ2xlYW51cEhlbHBlcih0aGlz
LCBmYWxzZSk7CiAgICAgbV9jb250ZXh0LT51bmlmb3JtMWYobG9jYXRpb24sIHgpOwotICAgIGNs
ZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp1bmlmb3JtMWZ2KGxvbmcgbG9jYXRpb24sIFdlYkdMRmxvYXRBcnJheSogdikKQEAg
LTExNDAsOSArMTY2OCw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMWZ2
KGwKICAgICAvLyBGSVhNRTogd2UgbmVlZCB0byB0aHJvdyBpZiBubyBhcnJheSBwYXNzZWQgaW4K
ICAgICBpZiAoIXYpCiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisgICAgQ2xlYW51cEhlbHBl
cih0aGlzLCBmYWxzZSk7CiAgICAgbV9jb250ZXh0LT51bmlmb3JtMWZ2KGxvY2F0aW9uLCB2LT5k
YXRhKCksIHYtPmxlbmd0aCgpKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2Up
OwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTFmdihsb25nIGxvY2F0
aW9uLCBmbG9hdCogdiwgaW50IHNpemUpCkBAIC0xMTUwLDE1ICsxNjc3LDE0IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMWZ2KGwKICAgICAvLyBGSVhNRTogd2UgbmVlZCB0
byB0aHJvdyBpZiBubyBhcnJheSBwYXNzZWQgaW4KICAgICBpZiAoIXYpCiAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgCisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CiAgICAgbV9jb250
ZXh0LT51bmlmb3JtMWZ2KGxvY2F0aW9uLCB2LCBzaXplKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFw
aGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9y
bTFpKGxvbmcgbG9jYXRpb24sIGludCB4KQogeworICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFs
c2UpOwogICAgIG1fY29udGV4dC0+dW5pZm9ybTFpKGxvY2F0aW9uLCB4KTsKLSAgICBjbGVhbnVw
QWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6dW5pZm9ybTFpdihsb25nIGxvY2F0aW9uLCBXZWJHTEludEFycmF5KiB2KQpAQCAtMTE2Niw5
ICsxNjkyLDggQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0xaXYobAogICAg
IC8vIEZJWE1FOiB3ZSBuZWVkIHRvIHRocm93IGlmIG5vIGFycmF5IHBhc3NlZCBpbgogICAgIGlm
ICghdikKICAgICAgICAgcmV0dXJuOwotICAgICAgICAKKyAgICBDbGVhbnVwSGVscGVyKHRoaXMs
IGZhbHNlKTsKICAgICBtX2NvbnRleHQtPnVuaWZvcm0xaXYobG9jYXRpb24sIHYtPmRhdGEoKSwg
di0+bGVuZ3RoKCkpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAK
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMWl2KGxvbmcgbG9jYXRpb24sIGlu
dCogdiwgaW50IHNpemUpCkBAIC0xMTc2LDE1ICsxNzAxLDE0IEBAIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0Ojp1bmlmb3JtMWl2KGwKICAgICAvLyBGSVhNRTogd2UgbmVlZCB0byB0aHJvdyBp
ZiBubyBhcnJheSBwYXNzZWQgaW4KICAgICBpZiAoIXYpCiAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgCisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CiAgICAgbV9jb250ZXh0LT51bmlm
b3JtMWl2KGxvY2F0aW9uLCB2LCBzaXplKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwo
ZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJmKGxvbmcg
bG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHkpCiB7CisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBm
YWxzZSk7CiAgICAgbV9jb250ZXh0LT51bmlmb3JtMmYobG9jYXRpb24sIHgsIHkpOwotICAgIGNs
ZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp1bmlmb3JtMmZ2KGxvbmcgbG9jYXRpb24sIFdlYkdMRmxvYXRBcnJheSogdikKQEAg
LTExOTIsMTAgKzE3MTYsOSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJm
dihsCiAgICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gdGhyb3cgaWYgbm8gYXJyYXkgcGFzc2VkIGlu
CiAgICAgaWYgKCF2KQogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorICAgIENsZWFudXBIZWxw
ZXIodGhpcywgZmFsc2UpOwogICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0
aXBsZSBvZiAyCiAgICAgbV9jb250ZXh0LT51bmlmb3JtMmZ2KGxvY2F0aW9uLCB2LT5kYXRhKCks
IHYtPmxlbmd0aCgpIC8gMik7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsK
IH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0yZnYobG9uZyBsb2NhdGlv
biwgZmxvYXQqIHYsIGludCBzaXplKQpAQCAtMTIwMywxNiArMTcyNiwxNSBAQCB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJmdihsCiAgICAgLy8gRklYTUU6IHdlIG5lZWQgdG8g
dGhyb3cgaWYgbm8gYXJyYXkgcGFzc2VkIGluCiAgICAgaWYgKCF2KQogICAgICAgICByZXR1cm47
Ci0gICAgICAgIAorICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwogICAgIC8vIEZJWE1F
OiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAyCiAgICAgbV9jb250ZXh0LT51bmlm
b3JtMmZ2KGxvY2F0aW9uLCB2LCBzaXplIC8gMik7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3ND
YWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0yaShs
b25nIGxvY2F0aW9uLCBpbnQgeCwgaW50IHkpCiB7CisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBm
YWxzZSk7CiAgICAgbV9jb250ZXh0LT51bmlmb3JtMmkobG9jYXRpb24sIHgsIHkpOwotICAgIGNs
ZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp1bmlmb3JtMml2KGxvbmcgbG9jYXRpb24sIFdlYkdMSW50QXJyYXkqIHYpCkBAIC0x
MjIwLDEwICsxNzQyLDkgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0yaXYo
bAogICAgIC8vIEZJWE1FOiB3ZSBuZWVkIHRvIHRocm93IGlmIG5vIGFycmF5IHBhc3NlZCBpbgog
ICAgIGlmICghdikKICAgICAgICAgcmV0dXJuOwotICAgICAgICAKKyAgICBDbGVhbnVwSGVscGVy
KHRoaXMsIGZhbHNlKTsKICAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlw
bGUgb2YgMgogICAgIG1fY29udGV4dC0+dW5pZm9ybTJpdihsb2NhdGlvbiwgdi0+ZGF0YSgpLCB2
LT5sZW5ndGgoKSAvIDIpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9
CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMml2KGxvbmcgbG9jYXRpb24s
IGludCogdiwgaW50IHNpemUpCkBAIC0xMjMxLDE2ICsxNzUyLDE1IEBAIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0Ojp1bmlmb3JtMml2KGwKICAgICAvLyBGSVhNRTogd2UgbmVlZCB0byB0aHJv
dyBpZiBubyBhcnJheSBwYXNzZWQgaW4KICAgICBpZiAoIXYpCiAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgCisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CiAgICAgLy8gRklYTUU6IGxl
bmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDIKICAgICBtX2NvbnRleHQtPnVuaWZvcm0y
aXYobG9jYXRpb24sIHYsIHNpemUgLyAyKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwo
ZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTNmKGxvbmcg
bG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopCiB7CisgICAgQ2xlYW51cEhlbHBl
cih0aGlzLCBmYWxzZSk7CiAgICAgbV9jb250ZXh0LT51bmlmb3JtM2YobG9jYXRpb24sIHgsIHks
IHopOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2Z2KGxvbmcgbG9jYXRpb24sIFdlYkdMRmxvYXRB
cnJheSogdikKQEAgLTEyNDgsMTAgKzE3NjgsOSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6dW5pZm9ybTNmdihsCiAgICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gdGhyb3cgaWYgbm8gYXJy
YXkgcGFzc2VkIGluCiAgICAgaWYgKCF2KQogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorICAg
IENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwogICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMg
dG8gYmUgYSBtdWx0aXBsZSBvZiAzCiAgICAgbV9jb250ZXh0LT51bmlmb3JtM2Z2KGxvY2F0aW9u
LCB2LT5kYXRhKCksIHYtPmxlbmd0aCgpIC8gMyk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3ND
YWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0zZnYo
bG9uZyBsb2NhdGlvbiwgZmxvYXQqIHYsIGludCBzaXplKQpAQCAtMTI1OSwxNiArMTc3OCwxNSBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTNmdihsCiAgICAgLy8gRklYTUU6
IHdlIG5lZWQgdG8gdGhyb3cgaWYgbm8gYXJyYXkgcGFzc2VkIGluCiAgICAgaWYgKCF2KQogICAg
ICAgICByZXR1cm47Ci0gICAgICAgIAorICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwog
ICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAzCiAgICAgbV9j
b250ZXh0LT51bmlmb3JtM2Z2KGxvY2F0aW9uLCB2LCBzaXplIC8gMyk7Ci0gICAgY2xlYW51cEFm
dGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OnVuaWZvcm0zaShsb25nIGxvY2F0aW9uLCBpbnQgeCwgaW50IHksIGludCB6KQogeworICAgIENs
ZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwogICAgIG1fY29udGV4dC0+dW5pZm9ybTNpKGxvY2F0
aW9uLCB4LCB5LCB6KTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQog
CiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTNpdihsb25nIGxvY2F0aW9uLCBX
ZWJHTEludEFycmF5KiB2KQpAQCAtMTI3NiwxMCArMTc5NCw5IEBAIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0Ojp1bmlmb3JtM2l2KGwKICAgICAvLyBGSVhNRTogd2UgbmVlZCB0byB0aHJvdyBp
ZiBubyBhcnJheSBwYXNzZWQgaW4KICAgICBpZiAoIXYpCiAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgCisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CiAgICAgLy8gRklYTUU6IGxlbmd0
aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDMKICAgICBtX2NvbnRleHQtPnVuaWZvcm0zaXYo
bG9jYXRpb24sIHYtPmRhdGEoKSwgdi0+bGVuZ3RoKCkgLyAzKTsKLSAgICBjbGVhbnVwQWZ0ZXJH
cmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5p
Zm9ybTNpdihsb25nIGxvY2F0aW9uLCBpbnQqIHYsIGludCBzaXplKQpAQCAtMTI4NywxNiArMTgw
NCwxNSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTNpdihsCiAgICAgLy8g
RklYTUU6IHdlIG5lZWQgdG8gdGhyb3cgaWYgbm8gYXJyYXkgcGFzc2VkIGluCiAgICAgaWYgKCF2
KQogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFs
c2UpOwogICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAzCiAg
ICAgbV9jb250ZXh0LT51bmlmb3JtM2l2KGxvY2F0aW9uLCB2LCBzaXplIC8gMyk7Ci0gICAgY2xl
YW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnVuaWZvcm00Zihsb25nIGxvY2F0aW9uLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6
LCBmbG9hdCB3KQogeworICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwogICAgIG1fY29u
dGV4dC0+dW5pZm9ybTRmKGxvY2F0aW9uLCB4LCB5LCB6LCB3KTsKLSAgICBjbGVhbnVwQWZ0ZXJH
cmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5p
Zm9ybTRmdihsb25nIGxvY2F0aW9uLCBXZWJHTEZsb2F0QXJyYXkqIHYpCkBAIC0xMzA0LDEwICsx
ODIwLDkgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00ZnYobAogICAgIC8v
IEZJWE1FOiB3ZSBuZWVkIHRvIHRocm93IGlmIG5vIGFycmF5IHBhc3NlZCBpbgogICAgIGlmICgh
dikKICAgICAgICAgcmV0dXJuOwotICAgICAgICAKKyAgICBDbGVhbnVwSGVscGVyKHRoaXMsIGZh
bHNlKTsKICAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgNAog
ICAgIG1fY29udGV4dC0+dW5pZm9ybTRmdihsb2NhdGlvbiwgdi0+ZGF0YSgpLCB2LT5sZW5ndGgo
KSAvIDQpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNGZ2KGxvbmcgbG9jYXRpb24sIGZsb2F0KiB2
LCBpbnQgc2l6ZSkKQEAgLTEzMTUsMTYgKzE4MzAsMTUgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnVuaWZvcm00ZnYobAogICAgIC8vIEZJWE1FOiB3ZSBuZWVkIHRvIHRocm93IGlmIG5v
IGFycmF5IHBhc3NlZCBpbgogICAgIGlmICghdikKICAgICAgICAgcmV0dXJuOwotICAgICAgICAK
KyAgICBDbGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKICAgICAvLyBGSVhNRTogbGVuZ3RoIG5l
ZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgNAogICAgIG1fY29udGV4dC0+dW5pZm9ybTRmdihsb2Nh
dGlvbiwgdiwgc2l6ZSAvIDQpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7
CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNGkobG9uZyBsb2NhdGlv
biwgaW50IHgsIGludCB5LCBpbnQgeiwgaW50IHcpCiB7CisgICAgQ2xlYW51cEhlbHBlcih0aGlz
LCBmYWxzZSk7CiAgICAgbV9jb250ZXh0LT51bmlmb3JtNGkobG9jYXRpb24sIHgsIHksIHosIHcp
OwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNGl2KGxvbmcgbG9jYXRpb24sIFdlYkdMSW50QXJyYXkq
IHYpCkBAIC0xMzMyLDEwICsxODQ2LDkgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVu
aWZvcm00aXYobAogICAgIC8vIEZJWE1FOiB3ZSBuZWVkIHRvIHRocm93IGlmIG5vIGFycmF5IHBh
c3NlZCBpbgogICAgIGlmICghdikKICAgICAgICAgcmV0dXJuOwotICAgICAgICAKKyAgICBDbGVh
bnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKICAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJl
IGEgbXVsdGlwbGUgb2YgNAogICAgIG1fY29udGV4dC0+dW5pZm9ybTRpdihsb2NhdGlvbiwgdi0+
ZGF0YSgpLCB2LT5sZW5ndGgoKSAvIDQpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChm
YWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtNGl2KGxvbmcg
bG9jYXRpb24sIGludCogdiwgaW50IHNpemUpCkBAIC0xMzQzLDEwICsxODU2LDkgQEAgdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00aXYobAogICAgIC8vIEZJWE1FOiB3ZSBuZWVk
IHRvIHRocm93IGlmIG5vIGFycmF5IHBhc3NlZCBpbgogICAgIGlmICghdikKICAgICAgICAgcmV0
dXJuOwotICAgICAgICAKKyAgICBDbGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKICAgICAvLyBG
SVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgNAogICAgIG1fY29udGV4dC0+
dW5pZm9ybTRpdihsb2NhdGlvbiwgdiwgc2l6ZSAvIDQpOwotICAgIGNsZWFudXBBZnRlckdyYXBo
aWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3Jt
TWF0cml4MmZ2KGxvbmcgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBXZWJHTEZsb2F0QXJyYXkq
IHYpCkBAIC0xMzU0LDEwICsxODY2LDkgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVu
aWZvcm1NYXRyaQogICAgIC8vIEZJWE1FOiB3ZSBuZWVkIHRvIHRocm93IGlmIG5vIGFycmF5IHBh
c3NlZCBpbgogICAgIGlmICghdikKICAgICAgICAgcmV0dXJuOwotICAgICAgICAKKyAgICBDbGVh
bnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKICAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJl
IGEgbXVsdGlwbGUgb2YgNAogICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDJmdihsb2NhdGlv
biwgdHJhbnNwb3NlLCB2LT5kYXRhKCksIHYtPmxlbmd0aCgpIC8gNCk7Ci0gICAgY2xlYW51cEFm
dGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OnVuaWZvcm1NYXRyaXgyZnYobG9uZyBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIGZsb2F0KiB2
LCBpbnQgc2l6ZSkKQEAgLTEzNjUsMTAgKzE4NzYsOSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6dW5pZm9ybU1hdHJpCiAgICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gdGhyb3cgaWYgbm8g
YXJyYXkgcGFzc2VkIGluCiAgICAgaWYgKCF2KQogICAgICAgICByZXR1cm47Ci0gICAgICAgIAor
ICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwogICAgIC8vIEZJWE1FOiBsZW5ndGggbmVl
ZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA0CiAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4MmZ2
KGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIHNpemUgLyA0KTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFw
aGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9y
bU1hdHJpeDNmdihsb25nIGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgV2ViR0xGbG9hdEFycmF5
KiB2KQpAQCAtMTM3NiwxMCArMTg4Niw5IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1
bmlmb3JtTWF0cmkKICAgICAvLyBGSVhNRTogd2UgbmVlZCB0byB0aHJvdyBpZiBubyBhcnJheSBw
YXNzZWQgaW4KICAgICBpZiAoIXYpCiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisgICAgQ2xl
YW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CiAgICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBi
ZSBhIG11bHRpcGxlIG9mIDkKICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXgzZnYobG9jYXRp
b24sIHRyYW5zcG9zZSwgdi0+ZGF0YSgpLCB2LT5sZW5ndGgoKSAvIDkpOwotICAgIGNsZWFudXBB
ZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
Ojp1bmlmb3JtTWF0cml4M2Z2KGxvbmcgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBmbG9hdCog
diwgaW50IHNpemUpCkBAIC0xMzg3LDEwICsxODk2LDkgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnVuaWZvcm1NYXRyaQogICAgIC8vIEZJWE1FOiB3ZSBuZWVkIHRvIHRocm93IGlmIG5v
IGFycmF5IHBhc3NlZCBpbgogICAgIGlmICghdikKICAgICAgICAgcmV0dXJuOwotICAgICAgICAK
KyAgICBDbGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKICAgICAvLyBGSVhNRTogbGVuZ3RoIG5l
ZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgOQogICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDNm
dihsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCBzaXplIC8gOSk7Ci0gICAgY2xlYW51cEFmdGVyR3Jh
cGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZv
cm1NYXRyaXg0ZnYobG9uZyBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIFdlYkdMRmxvYXRBcnJh
eSogdikKQEAgLTEzOTgsMTAgKzE5MDYsOSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
dW5pZm9ybU1hdHJpCiAgICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gdGhyb3cgaWYgbm8gYXJyYXkg
cGFzc2VkIGluCiAgICAgaWYgKCF2KQogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorICAgIENs
ZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwogICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8g
YmUgYSBtdWx0aXBsZSBvZiAxNgogICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDRmdihsb2Nh
dGlvbiwgdHJhbnNwb3NlLCB2LT5kYXRhKCksIHYtPmxlbmd0aCgpIC8gMTYpOwotICAgIGNsZWFu
dXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0Ojp1bmlmb3JtTWF0cml4NGZ2KGxvbmcgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBmbG9h
dCogdiwgaW50IHNpemUpCkBAIC0xNDA5LDEyMCArMTkxNiwxMjEgQEAgdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaQogICAgIC8vIEZJWE1FOiB3ZSBuZWVkIHRvIHRocm93
IGlmIG5vIGFycmF5IHBhc3NlZCBpbgogICAgIGlmICghdikKICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAKKyAgICBDbGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKICAgICAvLyBGSVhNRTogbGVu
Z3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgMTYKICAgICBtX2NvbnRleHQtPnVuaWZvcm1N
YXRyaXg0ZnYobG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgc2l6ZSAvIDE2KTsKLSAgICBjbGVhbnVw
QWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6dXNlUHJvZ3JhbShXZWJHTFByb2dyYW0qIHByb2dyYW0pCiB7CisgICAgQ2xlYW51cEhlbHBl
cih0aGlzLCBmYWxzZSk7CisgICAgbV9jdXJyZW50UHJvZ3JhbSA9IHByb2dyYW07CiAgICAgbV9j
b250ZXh0LT51c2VQcm9ncmFtKHByb2dyYW0pOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2Fs
bChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxpZGF0ZVByb2dy
YW0oV2ViR0xQcm9ncmFtKiBwcm9ncmFtKQogeworICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFs
c2UpOwogICAgIG1fY29udGV4dC0+dmFsaWRhdGVQcm9ncmFtKHByb2dyYW0pOwotICAgIGNsZWFu
dXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0Ojp2ZXJ0ZXhBdHRyaWIxZih1bnNpZ25lZCBsb25nIGluZHgsIGZsb2F0IHYwKQogeworICAg
IENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwogICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmli
MWYoaW5keCwgdjApOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAK
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWIxZnYodW5zaWduZWQgbG9u
ZyBpbmR4LCBXZWJHTEZsb2F0QXJyYXkqIHYpCiB7CisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBm
YWxzZSk7CiAgICAgLy8gRklYTUU6IE5lZWQgdG8gbWFrZSBzdXJlIGFycmF5IGlzIGJpZyBlbm91
Z2ggZm9yIGF0dHJpYnV0ZSBiZWluZyBzZXQKICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjFm
dihpbmR4LCB2LT5kYXRhKCkpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7
CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWIxZnYodW5zaWdu
ZWQgbG9uZyBpbmR4LCBmbG9hdCogdiwgaW50IHNpemUpCiB7CisgICAgQ2xlYW51cEhlbHBlcih0
aGlzLCBmYWxzZSk7CiAgICAgLy8gRklYTUU6IE5lZWQgdG8gbWFrZSBzdXJlIGFycmF5IGlzIGJp
ZyBlbm91Z2ggZm9yIGF0dHJpYnV0ZSBiZWluZyBzZXQKICAgICBVTlVTRURfUEFSQU0oc2l6ZSk7
Ci0gICAgCisKICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjFmdihpbmR4LCB2KTsKLSAgICBj
bGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6dmVydGV4QXR0cmliMmYodW5zaWduZWQgbG9uZyBpbmR4LCBmbG9hdCB2MCwgZmxv
YXQgdjEpCiB7CisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CiAgICAgbV9jb250ZXh0
LT52ZXJ0ZXhBdHRyaWIyZihpbmR4LCB2MCwgdjEpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNz
Q2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRy
aWIyZnYodW5zaWduZWQgbG9uZyBpbmR4LCBXZWJHTEZsb2F0QXJyYXkqIHYpCiB7CisgICAgQ2xl
YW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CiAgICAgLy8gRklYTUU6IE5lZWQgdG8gbWFrZSBzdXJl
IGFycmF5IGlzIGJpZyBlbm91Z2ggZm9yIGF0dHJpYnV0ZSBiZWluZyBzZXQKICAgICBtX2NvbnRl
eHQtPnZlcnRleEF0dHJpYjJmdihpbmR4LCB2LT5kYXRhKCkpOwotICAgIGNsZWFudXBBZnRlckdy
YXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0
ZXhBdHRyaWIyZnYodW5zaWduZWQgbG9uZyBpbmR4LCBmbG9hdCogdiwgaW50IHNpemUpCiB7Cisg
ICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CiAgICAgLy8gRklYTUU6IE5lZWQgdG8gbWFr
ZSBzdXJlIGFycmF5IGlzIGJpZyBlbm91Z2ggZm9yIGF0dHJpYnV0ZSBiZWluZyBzZXQKICAgICBV
TlVTRURfUEFSQU0oc2l6ZSk7Ci0gICAgCisKICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjJm
dihpbmR4LCB2KTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliM2YodW5zaWduZWQgbG9uZyBp
bmR4LCBmbG9hdCB2MCwgZmxvYXQgdjEsIGZsb2F0IHYyKQogeworICAgIENsZWFudXBIZWxwZXIo
dGhpcywgZmFsc2UpOwogICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliM2YoaW5keCwgdjAsIHYx
LCB2Mik7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYjNmdih1bnNpZ25lZCBsb25nIGluZHgs
IFdlYkdMRmxvYXRBcnJheSogdikKIHsKKyAgICBDbGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsK
ICAgICAvLyBGSVhNRTogTmVlZCB0byBtYWtlIHN1cmUgYXJyYXkgaXMgYmlnIGVub3VnaCBmb3Ig
YXR0cmlidXRlIGJlaW5nIHNldAogICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliM2Z2KGluZHgs
IHYtPmRhdGEoKSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAog
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYjNmdih1bnNpZ25lZCBsb25n
IGluZHgsIGZsb2F0KiB2LCBpbnQgc2l6ZSkKIHsKKyAgICBDbGVhbnVwSGVscGVyKHRoaXMsIGZh
bHNlKTsKICAgICAvLyBGSVhNRTogTmVlZCB0byBtYWtlIHN1cmUgYXJyYXkgaXMgYmlnIGVub3Vn
aCBmb3IgYXR0cmlidXRlIGJlaW5nIHNldAogICAgIFVOVVNFRF9QQVJBTShzaXplKTsKLSAgICAK
KwogICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliM2Z2KGluZHgsIHYpOwotICAgIGNsZWFudXBB
ZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
Ojp2ZXJ0ZXhBdHRyaWI0Zih1bnNpZ25lZCBsb25nIGluZHgsIGZsb2F0IHYwLCBmbG9hdCB2MSwg
ZmxvYXQgdjIsIGZsb2F0IHYzKQogeworICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwog
ICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliNGYoaW5keCwgdjAsIHYxLCB2MiwgdjMpOwotICAg
IGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWI0ZnYodW5zaWduZWQgbG9uZyBpbmR4LCBXZWJHTEZsb2F0
QXJyYXkqIHYpCiB7CisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CiAgICAgLy8gRklY
TUU6IE5lZWQgdG8gbWFrZSBzdXJlIGFycmF5IGlzIGJpZyBlbm91Z2ggZm9yIGF0dHJpYnV0ZSBi
ZWluZyBzZXQKICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjRmdihpbmR4LCB2LT5kYXRhKCkp
OwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWI0ZnYodW5zaWduZWQgbG9uZyBpbmR4LCBmbG9h
dCogdiwgaW50IHNpemUpCiB7CisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CiAgICAg
Ly8gRklYTUU6IE5lZWQgdG8gbWFrZSBzdXJlIGFycmF5IGlzIGJpZyBlbm91Z2ggZm9yIGF0dHJp
YnV0ZSBiZWluZyBzZXQKICAgICBVTlVTRURfUEFSQU0oc2l6ZSk7Ci0gICAgCisKICAgICBtX2Nv
bnRleHQtPnZlcnRleEF0dHJpYjRmdihpbmR4LCB2KTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGlj
c0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0
cmliUG9pbnRlcih1bnNpZ25lZCBsb25nIGluZHgsIGxvbmcgc2l6ZSwgdW5zaWduZWQgbG9uZyB0
eXBlLCBib29sIG5vcm1hbGl6ZWQsIHVuc2lnbmVkIGxvbmcgc3RyaWRlLCB1bnNpZ25lZCBsb25n
IG9mZnNldCkKIHsKKyAgICBDbGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKICAgICBtX2NvbnRl
eHQtPnZlcnRleEF0dHJpYlBvaW50ZXIoaW5keCwgc2l6ZSwgdHlwZSwgbm9ybWFsaXplZCwgc3Ry
aWRlLCBvZmZzZXQpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAK
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2aWV3cG9ydChsb25nIHgsIGxvbmcgeSwgdW5z
aWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpCiB7CisgICAgQ2xlYW51cEhl
bHBlcih0aGlzLCBmYWxzZSk7CiAgICAgaWYgKGlzbmFuKHgpKQogICAgICAgICB4ID0gMDsKICAg
ICBpZiAoaXNuYW4oeSkpCkBAIC0xNTMyLDcgKzIwNDAsNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6dmlld3BvcnQobG9uCiAgICAgaWYgKGlzbmFuKGhlaWdodCkpCiAgICAgICAgIGhl
aWdodCA9IDEwMDsKICAgICBtX2NvbnRleHQtPnZpZXdwb3J0KHgsIHksIHdpZHRoLCBoZWlnaHQp
OwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpyZW1vdmVPYmplY3QoQ2FudmFzT2JqZWN0KiBvYmplY3QpCkBAIC0x
NTQ4LDE0ICsyMDU1LDExMCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YWRkT2JqZWN0
KENhCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkZXRhY2hBbmRSZW1vdmVBbGxPYmpl
Y3RzKCkKIHsKKyAgICBtX2FycmF5QnVmZmVyQmluZGluZyA9IDA7CisgICAgbV9jdXJyZW50UHJv
Z3JhbSA9IDA7CisgICAgbV9lbGVtZW50QXJyYXlCdWZmZXJCaW5kaW5nID0gMDsKKyAgICBtX2Zy
YW1lYnVmZmVyQmluZGluZyA9IDA7CisgICAgbV9yZW5kZXJidWZmZXJCaW5kaW5nID0gMDsKKyAg
ICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHNpemVvZihtX3RleHR1cmVVbml0cykgLyBz
aXplb2YoVGV4dHVyZVVuaXRTdGF0ZSk7IGkrKykgeworICAgICAgICBtX3RleHR1cmVVbml0c1tp
XS5tX3RleHR1cmUyREJpbmRpbmcgPSAwOworICAgICAgICBtX3RleHR1cmVVbml0c1tpXS5tX3Rl
eHR1cmVDdWJlTWFwQmluZGluZyA9IDA7CisgICAgfQogICAgIEhhc2hTZXQ8Q2FudmFzT2JqZWN0
Kj46Oml0ZXJhdG9yIHBlbmQgPSBtX2NhbnZhc09iamVjdHMuZW5kKCk7CiAgICAgZm9yIChIYXNo
U2V0PENhbnZhc09iamVjdCo+OjppdGVyYXRvciBpdCA9IG1fY2FudmFzT2JqZWN0cy5iZWdpbigp
OyBpdCAhPSBwZW5kOyArK2l0KQogICAgICAgICAoKml0KS0+ZGV0YWNoQ29udGV4dCgpOwotICAg
ICAgICAKKwogICAgIG1fY2FudmFzT2JqZWN0cy5jbGVhcigpOwogfQogCitXZWJHTEdldEluZm8g
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRCb29sZWFuUGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcg
cG5hbWUpCit7CisgICAgdW5zaWduZWQgY2hhciB2YWx1ZTsKKyAgICBtX2NvbnRleHQtPmdldEJv
b2xlYW52KHBuYW1lLCAmdmFsdWUpOworICAgIHJldHVybiBXZWJHTEdldEluZm8oc3RhdGljX2Nh
c3Q8Ym9vbD4odmFsdWUpKTsKK30KKworV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Z2V0RmxvYXRQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyBwbmFtZSkKK3sKKyAgICBmbG9hdCB2
YWx1ZTsKKyAgICBtX2NvbnRleHQtPmdldEZsb2F0dihwbmFtZSwgJnZhbHVlKTsKKyAgICByZXR1
cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0PGZsb2F0Pih2YWx1ZSkpOworfQorCitXZWJHTEdl
dEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRJbnRQYXJhbWV0ZXIodW5zaWduZWQgbG9u
ZyBwbmFtZSkKK3sKKyAgICByZXR1cm4gZ2V0TG9uZ1BhcmFtZXRlcihwbmFtZSk7Cit9CisKK1dl
YkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldExvbmdQYXJhbWV0ZXIodW5zaWdu
ZWQgbG9uZyBwbmFtZSkKK3sKKyAgICBpbnQgdmFsdWU7CisgICAgbV9jb250ZXh0LT5nZXRJbnRl
Z2VydihwbmFtZSwgJnZhbHVlKTsKKyAgICByZXR1cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0
PGxvbmc+KHZhbHVlKSk7Cit9CisKK1dlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmdldFVuc2lnbmVkTG9uZ1BhcmFtZXRlcih1bnNpZ25lZCBsb25nIHBuYW1lKQoreworICAgIGlu
dCB2YWx1ZTsKKyAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KHBuYW1lLCAmdmFsdWUpOworICAg
IHJldHVybiBXZWJHTEdldEluZm8oc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4odmFsdWUpKTsK
K30KKworV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0V2ViR0xGbG9hdEFy
cmF5UGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcgcG5hbWUpCit7CisgICAgZmxvYXQgdmFsdWVbNF0g
PSB7MH07CisgICAgbV9jb250ZXh0LT5nZXRGbG9hdHYocG5hbWUsIHZhbHVlKTsKKyAgICB1bnNp
Z25lZCBsZW5ndGggPSAwOworICAgIHN3aXRjaCAocG5hbWUpIHsKKyAgICBjYXNlIEdMX0FMSUFT
RURfUE9JTlRfU0laRV9SQU5HRToKKyAgICBjYXNlIEdMX0FMSUFTRURfTElORV9XSURUSF9SQU5H
RToKKyAgICBjYXNlIEdMX0RFUFRIX1JBTkdFOgorICAgICAgICBsZW5ndGggPSAyOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEdMX0JMRU5EX0NPTE9SOgorICAgIGNhc2UgR0xfQ09MT1JfQ0xF
QVJfVkFMVUU6CisgICAgICAgIGxlbmd0aCA9IDQ7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1
bHQ6CisgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgfQorICAgIHJldHVybiBXZWJHTEdl
dEluZm8oV2ViR0xGbG9hdEFycmF5OjpjcmVhdGUodmFsdWUsIGxlbmd0aCkpOworfQorCitXZWJH
TEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRXZWJHTEludEFycmF5UGFyYW1ldGVy
KHVuc2lnbmVkIGxvbmcgcG5hbWUpCit7CisgICAgaW50IHZhbHVlWzRdID0gezB9OworICAgIG1f
Y29udGV4dC0+Z2V0SW50ZWdlcnYocG5hbWUsIHZhbHVlKTsKKyAgICB1bnNpZ25lZCBsZW5ndGgg
PSAwOworICAgIHN3aXRjaCAocG5hbWUpIHsKKyAgICBjYXNlIEdMX01BWF9WSUVXUE9SVF9ESU1T
OgorICAgICAgICBsZW5ndGggPSAyOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdMX1NDSVNT
T1JfQk9YOgorICAgIGNhc2UgR0xfVklFV1BPUlQ6CisgICAgICAgIGxlbmd0aCA9IDQ7CisgICAg
ICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
fQorICAgIHJldHVybiBXZWJHTEdldEluZm8oV2ViR0xJbnRBcnJheTo6Y3JlYXRlKHZhbHVlLCBs
ZW5ndGgpKTsKK30KKworV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0V2Vi
R0xVbnNpZ25lZEJ5dGVBcnJheVBhcmFtZXRlcih1bnNpZ25lZCBsb25nIHBuYW1lKQoreworICAg
IHVuc2lnbmVkIGNoYXIgdmFsdWVbNF0gPSB7MH07CisgICAgbV9jb250ZXh0LT5nZXRCb29sZWFu
dihwbmFtZSwgdmFsdWUpOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IDA7CisgICAgc3dpdGNoIChw
bmFtZSkgeworICAgIGNhc2UgR0xfQ09MT1JfV1JJVEVNQVNLOgorICAgICAgICBsZW5ndGggPSA0
OworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIH0KKyAgICByZXR1cm4gV2ViR0xHZXRJbmZvKFdlYkdMVW5zaWduZWRCeXRlQXJyYXk6
OmNyZWF0ZSh2YWx1ZSwgbGVuZ3RoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIEVOQUJMRSgzRF9DQU5WQVMpCi0KSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAkocmV2aXNpb24gNTEyMjYpCisrKyBXZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2
ICsyOSw3IEBACiAjaW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUg
IkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJXZWJHTEZsb2F0QXJyYXkuaCIKKyNpbmNsdWRl
ICJXZWJHTEdldEluZm8uaCIKICNpbmNsdWRlICJXZWJHTEludEFycmF5LmgiCiAjaW5jbHVkZSAi
V2ViR0xVbnNpZ25lZEJ5dGVBcnJheS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgi
CkBAIC0xMzAsMjYgKzEzMSwyMSBAQCBjbGFzcyBXZWJLaXRDU1NNYXRyaXg7CiAKICAgICAgICAg
aW50ICBnZXRBdHRyaWJMb2NhdGlvbihXZWJHTFByb2dyYW0qLCBjb25zdCBTdHJpbmcmIG5hbWUp
OwogCi0gICAgICAgIGJvb2wgZ2V0Qm9vbGVhbih1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAg
ICAgUGFzc1JlZlB0cjxXZWJHTFVuc2lnbmVkQnl0ZUFycmF5PiBnZXRCb29sZWFudih1bnNpZ25l
ZCBsb25nIHBuYW1lKTsKLSAgICAgICAgaW50IGdldEJ1ZmZlclBhcmFtZXRlcmkodW5zaWduZWQg
bG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBQYXNzUmVmUHRyPFdl
YkdMSW50QXJyYXk+IGdldEJ1ZmZlclBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1
bnNpZ25lZCBsb25nIHBuYW1lKTsKKyAgICAgICAgV2ViR0xHZXRJbmZvIGdldEJ1ZmZlclBhcmFt
ZXRlcih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9u
Q29kZSYpOwogCiAgICAgICAgIHVuc2lnbmVkIGxvbmcgZ2V0RXJyb3IoKTsKIAotICAgICAgICBm
bG9hdCBnZXRGbG9hdCh1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgUGFzc1JlZlB0cjxX
ZWJHTEZsb2F0QXJyYXk+IGdldEZsb2F0dih1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAg
aW50IGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkodW5zaWduZWQgbG9uZyB0YXJn
ZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAg
ICAgIFBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFy
YW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwg
dW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIGludCBnZXRJbnRlZ2VyKHVuc2lnbmVkIGxv
bmcgcG5hbWUpOwotICAgICAgICBQYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IGdldEludGVnZXJ2
KHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBpbnQgZ2V0UHJvZ3JhbWkoV2ViR0xQcm9n
cmFtKiwgdW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpOwotICAgICAgICBQ
YXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IGdldFByb2dyYW1pdihXZWJHTFByb2dyYW0qLCB1bnNp
Z25lZCBsb25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYyk7CisgICAgICAgIFdlYkdMR2V0SW5m
byBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyB0YXJnZXQs
IHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9u
Q29kZSYpOworCisgICAgICAgIFdlYkdMR2V0SW5mbyBnZXRQYXJhbWV0ZXIodW5zaWduZWQgbG9u
ZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYpOworCisgICAgICAgIFdlYkdMR2V0SW5mbyBnZXRQcm9n
cmFtUGFyYW1ldGVyKFdlYkdMUHJvZ3JhbSosIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlv
bkNvZGUmKTsKKwogICAgICAgICBTdHJpbmcgZ2V0UHJvZ3JhbUluZm9Mb2coV2ViR0xQcm9ncmFt
KiwgRXhjZXB0aW9uQ29kZSYgZWMpOwotICAgICAgICBpbnQgZ2V0UmVuZGVyYnVmZmVyUGFyYW1l
dGVyaSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAg
IFBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYodW5z
aWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBpbnQgZ2V0
U2hhZGVyaShXZWJHTFNoYWRlciosIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUm
IGVjKTsKLSAgICAgICAgUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBnZXRTaGFkZXJpdihXZWJH
TFNoYWRlciosIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKTsKKworICAg
ICAgICBXZWJHTEdldEluZm8gZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcg
dGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJik7CisKKyAgICAgICAg
V2ViR0xHZXRJbmZvIGdldFNoYWRlclBhcmFtZXRlcihXZWJHTFNoYWRlciosIHVuc2lnbmVkIGxv
bmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKTsKIAogICAgICAgICBTdHJpbmcgZ2V0U2hhZGVy
SW5mb0xvZyhXZWJHTFNoYWRlciosIEV4Y2VwdGlvbkNvZGUmIGVjKTsKIApAQCAtMTU5LDEwICsx
NTUsOSBAQCBjbGFzcyBXZWJLaXRDU1NNYXRyaXg7CiAgICAgICAgIFN0cmluZyBnZXRTaGFkZXJT
b3VyY2UoV2ViR0xTaGFkZXIqLCBFeGNlcHRpb25Db2RlJiBlYyk7CiAgICAgICAgIFN0cmluZyBn
ZXRTdHJpbmcodW5zaWduZWQgbG9uZyBuYW1lKTsKIAotICAgICAgICBmbG9hdCBnZXRUZXhQYXJh
bWV0ZXJmKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAg
ICAgUGFzc1JlZlB0cjxXZWJHTEZsb2F0QXJyYXk+IGdldFRleFBhcmFtZXRlcmZ2KHVuc2lnbmVk
IGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgaW50IGdldFRleFBh
cmFtZXRlcmkodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAg
ICAgICBQYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IGdldFRleFBhcmFtZXRlcml2KHVuc2lnbmVk
IGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKTsKKyAgICAgICAgV2ViR0xHZXRJbmZv
IGdldFRleFBhcmFtZXRlcih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFt
ZSwgRXhjZXB0aW9uQ29kZSYpOworCisgICAgICAgIFdlYkdMR2V0SW5mbyBnZXRVbmlmb3JtKFdl
YkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBsb2NhdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpOwog
CiAgICAgICAgIGZsb2F0IGdldFVuaWZvcm1mKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBs
b2NhdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpOwogICAgICAgICBQYXNzUmVmUHRyPFdlYkdMRmxv
YXRBcnJheT4gZ2V0VW5pZm9ybWZ2KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBsb2NhdGlv
biwgRXhjZXB0aW9uQ29kZSYgZWMpOwpAQCAtMTcxLDEwICsxNjYsNyBAQCBjbGFzcyBXZWJLaXRD
U1NNYXRyaXg7CiAKICAgICAgICAgbG9uZyBnZXRVbmlmb3JtTG9jYXRpb24oV2ViR0xQcm9ncmFt
KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYyk7CiAKLSAgICAgICAgZmxv
YXQgZ2V0VmVydGV4QXR0cmliZih1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBu
YW1lKTsKLSAgICAgICAgUGFzc1JlZlB0cjxXZWJHTEZsb2F0QXJyYXk+IGdldFZlcnRleEF0dHJp
YmZ2KHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBs
b25nIGdldFZlcnRleEF0dHJpYmkodW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQgbG9uZyBw
bmFtZSk7Ci0gICAgICAgIFBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gZ2V0VmVydGV4QXR0cmli
aXYodW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQgbG9uZyBwbmFtZSk7CisgICAgICAgIFdl
YkdMR2V0SW5mbyBnZXRWZXJ0ZXhBdHRyaWIodW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQg
bG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgICAgIGxvbmcgZ2V0VmVydGV4QXR0
cmliT2Zmc2V0KHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwogCkBA
IC0zMjAsNiArMzEyLDMxIEBAIGNsYXNzIFdlYktpdENTU01hdHJpeDsKICAgICAgICAgLy8gRklY
TUU6IEkgdGhpbmsgdGhpcyBpcyBicm9rZW4gLS0gaXQgZG9lcyBub3QgaW5jcmVtZW50IGFueQog
ICAgICAgICAvLyByZWZlcmVuY2UgY291bnRzLCBzbyBtYXkgcmVmZXIgdG8gZGVzdHJveWVkIG9i
amVjdHMuCiAgICAgICAgIEhhc2hTZXQ8Q2FudmFzT2JqZWN0Kj4gbV9jYW52YXNPYmplY3RzOwor
CisgICAgICAgIFJlZlB0cjxXZWJHTEJ1ZmZlcj4gbV9hcnJheUJ1ZmZlckJpbmRpbmc7CisgICAg
ICAgIFJlZlB0cjxXZWJHTFByb2dyYW0+IG1fY3VycmVudFByb2dyYW07CisgICAgICAgIFJlZlB0
cjxXZWJHTEJ1ZmZlcj4gbV9lbGVtZW50QXJyYXlCdWZmZXJCaW5kaW5nOworICAgICAgICBSZWZQ
dHI8V2ViR0xGcmFtZWJ1ZmZlcj4gbV9mcmFtZWJ1ZmZlckJpbmRpbmc7CisgICAgICAgIFJlZlB0
cjxXZWJHTFJlbmRlcmJ1ZmZlcj4gbV9yZW5kZXJidWZmZXJCaW5kaW5nOworICAgICAgICBjbGFz
cyBUZXh0dXJlVW5pdFN0YXRlIHsKKyAgICAgICAgcHVibGljOgorICAgICAgICAgICAgUmVmUHRy
PFdlYkdMVGV4dHVyZT4gbV90ZXh0dXJlMkRCaW5kaW5nOworICAgICAgICAgICAgUmVmUHRyPFdl
YkdMVGV4dHVyZT4gbV90ZXh0dXJlQ3ViZU1hcEJpbmRpbmc7CisgICAgICAgIH07CisgICAgICAg
IFRleHR1cmVVbml0U3RhdGUgbV90ZXh0dXJlVW5pdHNbMzJdOworICAgICAgICB1bnNpZ25lZCBs
b25nIG1fYWN0aXZlVGV4dHVyZVVuaXQ7CisKKyAgICAgICAgLy8gSGVscGVycyBmb3IgZ2V0UGFy
YW1ldGVyIGFuZCBvdGhlcnMKKyAgICAgICAgV2ViR0xHZXRJbmZvIGdldEJvb2xlYW5QYXJhbWV0
ZXIodW5zaWduZWQgbG9uZyBwbmFtZSk7CisgICAgICAgIFdlYkdMR2V0SW5mbyBnZXRGbG9hdFBh
cmFtZXRlcih1bnNpZ25lZCBsb25nIHBuYW1lKTsKKyAgICAgICAgV2ViR0xHZXRJbmZvIGdldElu
dFBhcmFtZXRlcih1bnNpZ25lZCBsb25nIHBuYW1lKTsKKyAgICAgICAgV2ViR0xHZXRJbmZvIGdl
dExvbmdQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyBwbmFtZSk7CisgICAgICAgIFdlYkdMR2V0SW5m
byBnZXRVbnNpZ25lZExvbmdQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyBwbmFtZSk7CisgICAgICAg
IFdlYkdMR2V0SW5mbyBnZXRXZWJHTEZsb2F0QXJyYXlQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyBw
bmFtZSk7CisgICAgICAgIFdlYkdMR2V0SW5mbyBnZXRXZWJHTEludEFycmF5UGFyYW1ldGVyKHVu
c2lnbmVkIGxvbmcgcG5hbWUpOworICAgICAgICBXZWJHTEdldEluZm8gZ2V0V2ViR0xVbnNpZ25l
ZEJ5dGVBcnJheVBhcmFtZXRlcih1bnNpZ25lZCBsb25nIHBuYW1lKTsKKworICAgICAgICBmcmll
bmQgY2xhc3MgQ2xlYW51cEhlbHBlcjsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRs
CShyZXZpc2lvbiA1MTIyNikKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNTI5LDcgKzUyOSw2IEBAIG1vZHVsZSBodG1s
IHsKICAgICAgICAgdm9pZCAgICAgICAgIGZyb250RmFjZShpbiB1bnNpZ25lZCBsb25nIG1vZGUp
OwogICAgICAgICB2b2lkICAgICAgICAgZ2VuZXJhdGVNaXBtYXAoaW4gdW5zaWduZWQgbG9uZyB0
YXJnZXQpOwogICAgICAgICAKLSAgICAgICAgLy8gRklYTUU6IHRoZXNlIG5lZWQgdG8gYmUgYWRk
ZWQgcGVyIHRoZSBXZWJHTCBzcGVjCiAgICAgICAgIFdlYkdMQWN0aXZlSW5mbyBnZXRBY3RpdmVB
dHRyaWIoaW4gV2ViR0xQcm9ncmFtIHByb2dyYW0sIGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpCiAg
ICAgICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIFdlYkdMQWN0aXZlSW5m
byBnZXRBY3RpdmVVbmlmb3JtKGluIFdlYkdMUHJvZ3JhbSBwcm9ncmFtLCBpbiB1bnNpZ25lZCBs
b25nIGluZGV4KQpAQCAtNTM5LDI2ICs1MzgsMjIgQEAgbW9kdWxlIGh0bWwgewogCiAgICAgICAg
IGludCAgICAgICAgICBnZXRBdHRyaWJMb2NhdGlvbihpbiBXZWJHTFByb2dyYW0gcHJvZ3JhbSwg
aW4gRE9NU3RyaW5nIG5hbWUpOwogCi0gICAgICAgIGJvb2xlYW4gZ2V0Qm9vbGVhbihpbiB1bnNp
Z25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgV2ViR0xVbnNpZ25lZEJ5dGVBcnJheSBnZXRCb29s
ZWFudihpbiB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgbG9uZyBnZXRCdWZmZXJQYXJh
bWV0ZXJpKGluIHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBpbiB1bnNpZ25lZCBsb25nIHBuYW1lKTsK
LSAgICAgICAgV2ViR0xJbnRBcnJheSBnZXRCdWZmZXJQYXJhbWV0ZXJpdihpbiB1bnNpZ25lZCBs
b25nIHRhcmdldCwgaW4gdW5zaWduZWQgbG9uZyBwbmFtZSk7CisgICAgICAgIC8vIGFueSBnZXRC
dWZmZXJQYXJhbWV0ZXIoaW4gdW5zaWduZWQgbG9uZyB0YXJnZXQsIGluIHVuc2lnbmVkIGxvbmcg
cG5hbWUpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICBbQ3VzdG9tXSB2b2lkIGdldEJ1
ZmZlclBhcmFtZXRlcigpOwogCiAgICAgICAgIHVuc2lnbmVkIGxvbmcgZ2V0RXJyb3IoKTsKIAot
ICAgICAgICBmbG9hdCBnZXRGbG9hdChpbiB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAg
V2ViR0xGbG9hdEFycmF5IGdldEZsb2F0dihpbiB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAg
ICAgbG9uZyBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKGluIHVuc2lnbmVkIGxv
bmcgdGFyZ2V0LCBpbiB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIGluIHVuc2lnbmVkIGxvbmcg
cG5hbWUpOwotICAgICAgICBXZWJHTEludEFycmF5IGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcml2KGluIHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBpbiB1bnNpZ25lZCBsb25nIGF0dGFj
aG1lbnQsIGluIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBsb25nIGdldEludGVnZXIo
aW4gdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFdlYkdMSW50QXJyYXkgZ2V0SW50ZWdl
cnYoaW4gdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIGxvbmcgZ2V0UHJvZ3JhbWkoaW4g
V2ViR0xQcm9ncmFtIHByb2dyYW0sIGluIHVuc2lnbmVkIGxvbmcgcG5hbWUpIHJhaXNlcyhET01F
eGNlcHRpb24pOwotICAgICAgICBXZWJHTEludEFycmF5IGdldFByb2dyYW1pdihpbiBXZWJHTFBy
b2dyYW0gcHJvZ3JhbSwgaW4gdW5zaWduZWQgbG9uZyBwbmFtZSkgcmFpc2VzKERPTUV4Y2VwdGlv
bik7CisgICAgICAgIC8vIGFueSBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoaW4g
dW5zaWduZWQgbG9uZyB0YXJnZXQsIGluIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgaW4gdW5z
aWduZWQgbG9uZyBwbmFtZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIFtDdXN0b21d
IHZvaWQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKCk7CisgICAgICAgIC8vIGFu
eSBnZXRQYXJhbWV0ZXIoaW4gdW5zaWduZWQgbG9uZyBwbmFtZSkgcmFpc2VzKERPTUV4Y2VwdGlv
bik7CisgICAgICAgIFtDdXN0b21dIHZvaWQgZ2V0UGFyYW1ldGVyKCk7CisgICAgICAgIC8vIGFu
eSBnZXRQcm9ncmFtUGFyYW1ldGVyKGluIFdlYkdMUHJvZ3JhbSBwcm9ncmFtLCBpbiB1bnNpZ25l
ZCBsb25nIHBuYW1lKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgW0N1c3RvbV0gdm9p
ZCBnZXRQcm9ncmFtUGFyYW1ldGVyKCk7CiAgICAgICAgIERPTVN0cmluZyBnZXRQcm9ncmFtSW5m
b0xvZyhpbiBXZWJHTFByb2dyYW0gcHJvZ3JhbSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7Ci0gICAg
ICAgIGxvbmcgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaShpbiB1bnNpZ25lZCBsb25nIHRhcmdl
dCwgaW4gdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFdlYkdMSW50QXJyYXkgZ2V0UmVu
ZGVyYnVmZmVyUGFyYW1ldGVyaXYoaW4gdW5zaWduZWQgbG9uZyB0YXJnZXQsIGluIHVuc2lnbmVk
IGxvbmcgcG5hbWUpOwotICAgICAgICBsb25nIGdldFNoYWRlcmkoaW4gV2ViR0xTaGFkZXIgc2hh
ZGVyLCBpbiB1bnNpZ25lZCBsb25nIHBuYW1lKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKLSAgICAg
ICAgV2ViR0xJbnRBcnJheSBnZXRTaGFkZXJpdihpbiBXZWJHTFNoYWRlciBzaGFkZXIsIGluIHVu
c2lnbmVkIGxvbmcgcG5hbWUpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICAvLyBhbnkg
Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKGluIHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBpbiB1bnNp
Z25lZCBsb25nIHBuYW1lKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgW0N1c3RvbV0g
dm9pZCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoKTsKKyAgICAgICAgLy8gYW55IGdldFNoYWRl
clBhcmFtZXRlcihpbiBXZWJHTFNoYWRlciBzaGFkZXIsIGluIHVuc2lnbmVkIGxvbmcgcG5hbWUp
IHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICBbQ3VzdG9tXSB2b2lkIGdldFNoYWRlclBh
cmFtZXRlcigpIHJhaXNlcyhET01FeGNlcHRpb24pOwogCiAgICAgICAgIERPTVN0cmluZyAgICBn
ZXRTaGFkZXJJbmZvTG9nKGluIFdlYkdMU2hhZGVyIHNoYWRlcikgcmFpc2VzKERPTUV4Y2VwdGlv
bik7CiAKQEAgLTU2OCwyMiArNTYzLDE2IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgRE9NU3Ry
aW5nICAgIGdldFNoYWRlclNvdXJjZShpbiBXZWJHTFNoYWRlciBzaGFkZXIpIHJhaXNlcyhET01F
eGNlcHRpb24pOwogICAgICAgICBET01TdHJpbmcgICAgZ2V0U3RyaW5nKGluIHVuc2lnbmVkIGxv
bmcgbmFtZSk7CiAKLSAgICAgICAgZmxvYXQgZ2V0VGV4UGFyYW1ldGVyZihpbiB1bnNpZ25lZCBs
b25nIHRhcmdldCwgaW4gdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFdlYkdMRmxvYXRB
cnJheSBnZXRUZXhQYXJhbWV0ZXJmdihpbiB1bnNpZ25lZCBsb25nIHRhcmdldCwgaW4gdW5zaWdu
ZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIGxvbmcgZ2V0VGV4UGFyYW1ldGVyaShpbiB1bnNpZ25l
ZCBsb25nIHRhcmdldCwgaW4gdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFdlYkdMSW50
QXJyYXkgZ2V0VGV4UGFyYW1ldGVyaXYoaW4gdW5zaWduZWQgbG9uZyB0YXJnZXQsIGluIHVuc2ln
bmVkIGxvbmcgcG5hbWUpOwotCi0gICAgICAgIGZsb2F0IGdldFVuaWZvcm1mKGluIFdlYkdMUHJv
Z3JhbSBwcm9ncmFtLCBpbiBsb25nIGxvY2F0aW9uKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKLSAg
ICAgICAgV2ViR0xGbG9hdEFycmF5IGdldFVuaWZvcm1mdihpbiBXZWJHTFByb2dyYW0gcHJvZ3Jh
bSwgaW4gbG9uZyBsb2NhdGlvbikgcmFpc2VzKERPTUV4Y2VwdGlvbik7Ci0gICAgICAgIGxvbmcg
Z2V0VW5pZm9ybWkoaW4gV2ViR0xQcm9ncmFtIHByb2dyYW0sIGluIGxvbmcgbG9jYXRpb24pIHJh
aXNlcyhET01FeGNlcHRpb24pOwotICAgICAgICBXZWJHTEludEFycmF5IGdldFVuaWZvcm1pdihp
biBXZWJHTFByb2dyYW0gcHJvZ3JhbSwgaW4gbG9uZyBsb2NhdGlvbikgcmFpc2VzKERPTUV4Y2Vw
dGlvbik7CisgICAgICAgIC8vIGFueSBnZXRUZXhQYXJhbWV0ZXIoaW4gdW5zaWduZWQgbG9uZyB0
YXJnZXQsIGluIHVuc2lnbmVkIGxvbmcgcG5hbWUpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAg
ICAgICBbQ3VzdG9tXSB2b2lkIGdldFRleFBhcmFtZXRlcigpOworCisgICAgICAgIC8vIGFueSBn
ZXRVbmlmb3JtKGluIFdlYkdMUHJvZ3JhbSBwcm9ncmFtLCBpbiBsb25nIGxvY2F0aW9uKSByYWlz
ZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgW0N1c3RvbV0gdm9pZCBnZXRVbmlmb3JtKCk7CiAg
ICAgICAgIAogICAgICAgICBsb25nIGdldFVuaWZvcm1Mb2NhdGlvbihpbiBXZWJHTFByb2dyYW0g
cHJvZ3JhbSwgaW4gRE9NU3RyaW5nIG5hbWUpIHJhaXNlcyhET01FeGNlcHRpb24pOwogCi0gICAg
ICAgIGZsb2F0IGdldFZlcnRleEF0dHJpYmYoaW4gdW5zaWduZWQgbG9uZyBpbmRleCwgaW4gdW5z
aWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFdlYkdMRmxvYXRBcnJheSBnZXRWZXJ0ZXhBdHRy
aWJmdihpbiB1bnNpZ25lZCBsb25nIGluZGV4LCBpbiB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAg
ICAgICAgbG9uZyBnZXRWZXJ0ZXhBdHRyaWJpKGluIHVuc2lnbmVkIGxvbmcgaW5kZXgsIGluIHVu
c2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBXZWJHTEludEFycmF5IGdldFZlcnRleEF0dHJp
Yml2KGluIHVuc2lnbmVkIGxvbmcgaW5kZXgsIGluIHVuc2lnbmVkIGxvbmcgcG5hbWUpOworICAg
ICAgICAvLyBhbnkgZ2V0VmVydGV4QXR0cmliKGluIHVuc2lnbmVkIGxvbmcgaW5kZXgsIGluIHVu
c2lnbmVkIGxvbmcgcG5hbWUpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICBbQ3VzdG9t
XSB2b2lkIGdldFZlcnRleEF0dHJpYigpOwogCiAgICAgICAgIGxvbmcgZ2V0VmVydGV4QXR0cmli
T2Zmc2V0KGluIHVuc2lnbmVkIGxvbmcgaW5kZXgsIGluIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwog
CkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmNwcAkocmV2aXNpb24gNTEyMjYpCisr
KyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDAsNyArNDAsNyBAQCBQYXNzUmVmUHRyPFdlYkdMU2hhZGVyPiBXZWJHTFNoYWRlcjo6Y3JlCiBX
ZWJHTFNoYWRlcjo6V2ViR0xTaGFkZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjdHgsIEdyYXBo
aWNzQ29udGV4dDNEOjpTaGFkZXJUeXBlIHR5cGUpCiAgICAgOiBDYW52YXNPYmplY3QoY3R4KQog
ewotICAgIHNldE9iamVjdChjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dDNEKCktPmNyZWF0ZVNo
YWRlcih0eXBlKSk7CisgICAgc2V0T2JqZWN0KGNvbnRleHQoKS0+Z3JhcGhpY3NDb250ZXh0M0Qo
KS0+Y3JlYXRlU2hhZGVyKHR5cGUpLCB0cnVlKTsKIH0KIAogdm9pZCBXZWJHTFNoYWRlcjo6X2Rl
bGV0ZU9iamVjdChQbGF0Zm9ybTNET2JqZWN0IG9iamVjdCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xUZXh0dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMVGV4dHVyZS5jcHAJKHJldmlzaW9uIDUxMjI2KQorKysgV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFRleHR1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMSArMzcsMjMgQEAgUGFz
c1JlZlB0cjxXZWJHTFRleHR1cmU+IFdlYkdMVGV4dHVyZTo6YwogICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgV2ViR0xUZXh0dXJlKGN0eCkpOwogfQogCitQYXNzUmVmUHRyPFdlYkdMVGV4dHVyZT4g
V2ViR0xUZXh0dXJlOjpjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjdHgsIFBsYXRmb3Jt
M0RPYmplY3Qgb2JqKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViR0xUZXh0dXJlKGN0
eCwgb2JqKSk7Cit9CisKIFdlYkdMVGV4dHVyZTo6V2ViR0xUZXh0dXJlKFdlYkdMUmVuZGVyaW5n
Q29udGV4dCogY3R4KQogICAgIDogQ2FudmFzT2JqZWN0KGN0eCkKICAgICAsIGN1YmVNYXBSV3Jh
cE1vZGVJbml0aWFsaXplZChmYWxzZSkKIHsKLSAgICBzZXRPYmplY3QoY29udGV4dCgpLT5ncmFw
aGljc0NvbnRleHQzRCgpLT5jcmVhdGVUZXh0dXJlKCkpOworICAgIHNldE9iamVjdChjb250ZXh0
KCktPmdyYXBoaWNzQ29udGV4dDNEKCktPmNyZWF0ZVRleHR1cmUoKSwgdHJ1ZSk7Cit9CisKK1dl
YkdMVGV4dHVyZTo6V2ViR0xUZXh0dXJlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY3R4LCBQbGF0
Zm9ybTNET2JqZWN0IG9iaikKKyAgICA6IENhbnZhc09iamVjdChjdHgpCisgICAgLCBjdWJlTWFw
UldyYXBNb2RlSW5pdGlhbGl6ZWQoZmFsc2UpCit7CisgICAgc2V0T2JqZWN0KG9iaiwgZmFsc2Up
OwogfQogCiB2b2lkIFdlYkdMVGV4dHVyZTo6X2RlbGV0ZU9iamVjdChQbGF0Zm9ybTNET2JqZWN0
IG9iamVjdCkKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRleHR1cmUuaAkocmV2aXNpb24gNTEy
MjYpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiwxMyArMzIsMTcgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7Ci0gICAgCisKICAgICBjbGFzcyBXZWJHTFRleHR1cmUgOiBwdWJsaWMg
Q2FudmFzT2JqZWN0IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfldlYkdMVGV4dHVy
ZSgpIHsgZGVsZXRlT2JqZWN0KCk7IH0KLSAgICAgICAgCisKICAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8V2ViR0xUZXh0dXJlPiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0Kik7Ci0gICAg
CisKKyAgICAgICAgLy8gRm9yIHF1ZXJ5aW5nIHByZXZpb3VzbHkgY3JlYXRlZCBvYmplY3RzIHZp
YSBlLmcuIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcgorICAgICAgICAvLyBGSVhN
RTogc2hvdWxkIGNvbnNpZGVyIGNhbm9uaWNhbGl6aW5nIHRoZXNlIG9iamVjdHMKKyAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8V2ViR0xUZXh0dXJlPiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250
ZXh0KiwgUGxhdGZvcm0zRE9iamVjdCk7CisKICAgICAgICAgYm9vbCBpc0N1YmVNYXBSV3JhcE1v
ZGVJbml0aWFsaXplZCgpIHsKICAgICAgICAgICAgIHJldHVybiBjdWJlTWFwUldyYXBNb2RlSW5p
dGlhbGl6ZWQ7CiAgICAgICAgIH0KQEAgLTQ5LDEzICs1MywxNCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIFdlYkdMVGV4dHVyZShXZWJHTFJlbmRlcmlu
Z0NvbnRleHQqKTsKKyAgICAgICAgV2ViR0xUZXh0dXJlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCos
IFBsYXRmb3JtM0RPYmplY3QpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBfZGVsZXRlT2JqZWN0
KFBsYXRmb3JtM0RPYmplY3QpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBjdWJlTWFw
UldyYXBNb2RlSW5pdGlhbGl6ZWQ7CiAgICAgfTsKLSAgICAKKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gV2ViR0xUZXh0dXJlX2gKSW5kZXg6IFdlYkNvcmUvbWFudWFsLXRl
c3RzL3dlYmdsL3Jlc291cmNlcy91dGlsczNkLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbWFu
dWFsLXRlc3RzL3dlYmdsL3Jlc291cmNlcy91dGlsczNkLmpzCShyZXZpc2lvbiA1MTIyNikKKysr
IFdlYkNvcmUvbWFudWFsLXRlc3RzL3dlYmdsL3Jlc291cmNlcy91dGlsczNkLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIGZ1bmN0aW9uIGluaXRXZWJHTChjYW52YXNOYW1lLCB2
c2hhZGVyLCAKICAgICBnbC5saW5rUHJvZ3JhbShnbC5wcm9ncmFtKTsKIAogICAgIC8vIENoZWNr
IHRoZSBsaW5rIHN0YXR1cwotICAgIHZhciBsaW5rZWQgPSBnbC5nZXRQcm9ncmFtaShnbC5wcm9n
cmFtLCBnbC5MSU5LX1NUQVRVUyk7CisgICAgdmFyIGxpbmtlZCA9IGdsLmdldFByb2dyYW1QYXJh
bWV0ZXIoZ2wucHJvZ3JhbSwgZ2wuTElOS19TVEFUVVMpOwogICAgIGlmICghbGlua2VkKSB7CiAg
ICAgICAgIC8vIHNvbWV0aGluZyB3ZW50IHdyb25nIHdpdGggdGhlIGxpbmsKICAgICAgICAgdmFy
IGVycm9yID0gZ2wuZ2V0UHJvZ3JhbUluZm9Mb2cgKGdsLnByb2dyYW0pOwpAQCAtMTA1LDcgKzEw
NSw3IEBAIGZ1bmN0aW9uIGxvYWRTaGFkZXIoY3R4LCBzaGFkZXJJZCkKICAgICBjdHguY29tcGls
ZVNoYWRlcihzaGFkZXIpOwogCiAgICAgLy8gQ2hlY2sgdGhlIGNvbXBpbGUgc3RhdHVzCi0gICAg
dmFyIGNvbXBpbGVkID0gY3R4LmdldFNoYWRlcmkoc2hhZGVyLCBjdHguQ09NUElMRV9TVEFUVVMp
OworICAgIHZhciBjb21waWxlZCA9IGN0eC5nZXRTaGFkZXJQYXJhbWV0ZXIoc2hhZGVyLCBjdHgu
Q09NUElMRV9TVEFUVVMpOwogICAgIGlmICghY29tcGlsZWQpIHsKICAgICAgICAgLy8gU29tZXRo
aW5nIHdlbnQgd3JvbmcgZHVyaW5nIGNvbXBpbGF0aW9uOyBnZXQgdGhlIGVycm9yCiAgICAgICAg
IHZhciBlcnJvciA9IGN0eC5nZXRTaGFkZXJJbmZvTG9nKHNoYWRlcik7CkBAIC01MjgsNCArNTI4
LDMgQEAgRnJhbWVyYXRlLnByb3RvdHlwZS5zbmFwc2hvdCA9IGZ1bmN0aW9uKAogICAgICAgICB0
aGlzLnJlbmRlclRpbWUgPSBuZXdUaW1lOwogICAgIH0KIH0KLQpJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAkocmV2aXNpb24gNTEyMjYpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE1MiwyNiArMTUyLDI1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAg
ICBpbnQgIGdldEF0dHJpYkxvY2F0aW9uKFdlYkdMUHJvZ3JhbSosIGNvbnN0IFN0cmluZyYgbmFt
ZSk7CiAKLSAgICAgICAgYm9vbCBnZXRCb29sZWFuKHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAg
ICAgICBQYXNzUmVmUHRyPFdlYkdMVW5zaWduZWRCeXRlQXJyYXk+IGdldEJvb2xlYW52KHVuc2ln
bmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBpbnQgZ2V0QnVmZmVyUGFyYW1ldGVyaSh1bnNpZ25l
ZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFBhc3NSZWZQdHI8
V2ViR0xJbnRBcnJheT4gZ2V0QnVmZmVyUGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQs
IHVuc2lnbmVkIGxvbmcgcG5hbWUpOworICAgICAgICB2b2lkIGdldEJvb2xlYW52KHVuc2lnbmVk
IGxvbmcgcG5hbWUsIHVuc2lnbmVkIGNoYXIqIHZhbHVlKTsKKworICAgICAgICB2b2lkIGdldEJ1
ZmZlclBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1l
LCBpbnQqIHZhbHVlKTsKIAogICAgICAgICB1bnNpZ25lZCBsb25nIGdldEVycm9yKCk7CiAKLSAg
ICAgICAgZmxvYXQgZ2V0RmxvYXQodW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFBhc3NS
ZWZQdHI8V2ViR0xGbG9hdEFycmF5PiBnZXRGbG9hdHYodW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0g
ICAgICAgIGludCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKHVuc2lnbmVkIGxv
bmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIHVuc2lnbmVkIGxvbmcgcG5hbWUp
OwotICAgICAgICBQYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IGdldEZyYW1lYnVmZmVyQXR0YWNo
bWVudFBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGF0dGFj
aG1lbnQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBpbnQgZ2V0SW50ZWdlcih1bnNp
Z25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBnZXRJ
bnRlZ2Vydih1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgaW50IGdldFByb2dyYW1pKFdl
YkdMUHJvZ3JhbSosIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBQYXNzUmVmUHRyPFdl
YkdMSW50QXJyYXk+IGdldFByb2dyYW1pdihXZWJHTFByb2dyYW0qLCB1bnNpZ25lZCBsb25nIHBu
YW1lKTsKKyAgICAgICAgdm9pZCBnZXRGbG9hdHYodW5zaWduZWQgbG9uZyBwbmFtZSwgZmxvYXQq
IHZhbHVlKTsKKworICAgICAgICB2b2lkIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRl
cml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIHVuc2ln
bmVkIGxvbmcgcG5hbWUsIGludCogdmFsdWUpOworCisgICAgICAgIHZvaWQgZ2V0SW50ZWdlcnYo
dW5zaWduZWQgbG9uZyBwbmFtZSwgaW50KiB2YWx1ZSk7CisKKyAgICAgICAgdm9pZCBnZXRQcm9n
cmFtaXYoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCB1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZh
bHVlKTsKKwogICAgICAgICBTdHJpbmcgZ2V0UHJvZ3JhbUluZm9Mb2coV2ViR0xQcm9ncmFtKik7
Ci0gICAgICAgIGludCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKHVuc2lnbmVkIGxvbmcgdGFy
Z2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgUGFzc1JlZlB0cjxXZWJHTEludEFy
cmF5PiBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5z
aWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIGludCBnZXRTaGFkZXJpKFdlYkdMU2hhZGVyKiwg
dW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4g
Z2V0U2hhZGVyaXYoV2ViR0xTaGFkZXIqLCB1bnNpZ25lZCBsb25nIHBuYW1lKTsKKworICAgICAg
ICB2b2lkIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1
bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKTsKKworICAgICAgICB2b2lkIGdldFNoYWRl
cml2KFdlYkdMU2hhZGVyKiwgdW5zaWduZWQgbG9uZyBwbmFtZSwgaW50KiB2YWx1ZSk7CiAKICAg
ICAgICAgU3RyaW5nIGdldFNoYWRlckluZm9Mb2coV2ViR0xTaGFkZXIqKTsKIApAQCAtMTgwLDI0
ICsxNzksMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIFN0cmluZyBnZXRTaGFk
ZXJTb3VyY2UoV2ViR0xTaGFkZXIqKTsKICAgICAgICAgU3RyaW5nIGdldFN0cmluZyh1bnNpZ25l
ZCBsb25nIG5hbWUpOwotICAgICAgICAKLSAgICAgICAgZmxvYXQgZ2V0VGV4UGFyYW1ldGVyZih1
bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFBhc3NS
ZWZQdHI8V2ViR0xGbG9hdEFycmF5PiBnZXRUZXhQYXJhbWV0ZXJmdih1bnNpZ25lZCBsb25nIHRh
cmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIGludCBnZXRUZXhQYXJhbWV0ZXJp
KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgUGFz
c1JlZlB0cjxXZWJHTEludEFycmF5PiBnZXRUZXhQYXJhbWV0ZXJpdih1bnNpZ25lZCBsb25nIHRh
cmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0KLSAgICAgICAgZmxvYXQgZ2V0VW5pZm9ybWYo
V2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uKTsKLSAgICAgICAgUGFzc1JlZlB0
cjxXZWJHTEZsb2F0QXJyYXk+IGdldFVuaWZvcm1mdihXZWJHTFByb2dyYW0qIHByb2dyYW0sIGxv
bmcgbG9jYXRpb24pOwotICAgICAgICBpbnQgZ2V0VW5pZm9ybWkoV2ViR0xQcm9ncmFtKiBwcm9n
cmFtLCBsb25nIGxvY2F0aW9uKTsKLSAgICAgICAgUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBn
ZXRVbmlmb3JtaXYoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uKTsKKworICAg
ICAgICB2b2lkIGdldFRleFBhcmFtZXRlcmZ2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25l
ZCBsb25nIHBuYW1lLCBmbG9hdCogdmFsdWUpOworICAgICAgICB2b2lkIGdldFRleFBhcmFtZXRl
cml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVl
KTsKKworICAgICAgICB2b2lkIGdldFVuaWZvcm1mdihXZWJHTFByb2dyYW0qIHByb2dyYW0sIGxv
bmcgbG9jYXRpb24sIGZsb2F0KiB2YWx1ZSk7CisgICAgICAgIHZvaWQgZ2V0VW5pZm9ybWl2KFdl
YkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBsb2NhdGlvbiwgaW50KiB2YWx1ZSk7CiAKICAgICAg
ICAgbG9uZyBnZXRVbmlmb3JtTG9jYXRpb24oV2ViR0xQcm9ncmFtKiwgY29uc3QgU3RyaW5nJiBu
YW1lKTsKIAotICAgICAgICBmbG9hdCBnZXRWZXJ0ZXhBdHRyaWJmKHVuc2lnbmVkIGxvbmcgaW5k
ZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBQYXNzUmVmUHRyPFdlYkdMRmxvYXRB
cnJheT4gZ2V0VmVydGV4QXR0cmliZnYodW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQgbG9u
ZyBwbmFtZSk7Ci0gICAgICAgIGludCBnZXRWZXJ0ZXhBdHRyaWJpKHVuc2lnbmVkIGxvbmcgaW5k
ZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBQYXNzUmVmUHRyPFdlYkdMSW50QXJy
YXk+IGdldFZlcnRleEF0dHJpYml2KHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcg
cG5hbWUpOwotICAgICAgICAKKyAgICAgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdih1bnNpZ25l
ZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBmbG9hdCogdmFsdWUpOworICAgICAg
ICB2b2lkIGdldFZlcnRleEF0dHJpYml2KHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxv
bmcgcG5hbWUsIGludCogdmFsdWUpOworCiAgICAgICAgIGxvbmcgZ2V0VmVydGV4QXR0cmliT2Zm
c2V0KHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwogCiAgICAgICAg
IHZvaWQgaGludCh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBtb2RlKTsKQEAg
LTMzNyw0ICszMzAsMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBHcmFwaGljc0NvbnRleHQzRF9oCi0KSW5kZXg6IFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5jcHAJ
KHJldmlzaW9uIDUxMjI2KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhp
Y3NDb250ZXh0M0RNYWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzcsNyArMjc3LDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6YmluZEZyYW1lYnVmZmVyKAogdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6YmluZFJlbmRlcmJ1ZmZlcih1bnNpZ25lZCBsb25nIHRhcmdldCwgV2ViR0xSZW5kZXJi
dWZmZXIqIHJlbmRlcmJ1ZmZlcikKIHsKICAgICBlbnN1cmVDb250ZXh0KG1fY29udGV4dE9iaik7
Ci0gICAgOjpnbEJpbmRCdWZmZXIodGFyZ2V0LCByZW5kZXJidWZmZXIgPyAoR0x1aW50KSByZW5k
ZXJidWZmZXItPm9iamVjdCgpIDogMCk7CisgICAgOjpnbEJpbmRSZW5kZXJidWZmZXJFWFQodGFy
Z2V0LCByZW5kZXJidWZmZXIgPyAoR0x1aW50KSByZW5kZXJidWZmZXItPm9iamVjdCgpIDogMCk7
CiB9CiAKIApAQCAtOTUyLDMyMSArOTUyLDQwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZp
ZXdwb3J0KGxvbmcgeCwKICAgICA6OmdsVmlld3BvcnQoc3RhdGljX2Nhc3Q8R0xpbnQ+KHgpLCBz
dGF0aWNfY2FzdDxHTGludD4oeSksIHN0YXRpY19jYXN0PEdMc2l6ZWk+KHdpZHRoKSwgc3RhdGlj
X2Nhc3Q8R0xzaXplaT4oaGVpZ2h0KSk7CiB9CiAKLXN0YXRpYyBpbnQgc2l6ZUZvckdldFBhcmFt
KHVuc2lnbmVkIGxvbmcgcG5hbWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRCb29sZWFu
dih1bnNpZ25lZCBsb25nIHBuYW1lLCB1bnNpZ25lZCBjaGFyKiB2YWx1ZSkKIHsKLSAgICBzd2l0
Y2gocG5hbWUpIHsKLSAgICAgICAgY2FzZSBHTF9BQ1RJVkVfVEVYVFVSRTogICAgICAgICAgICAg
ICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9BTElBU0VEX0xJTkVfV0lEVEhfUkFOR0U6
ICAgICAgICByZXR1cm4gMjsKLSAgICAgICAgY2FzZSBHTF9BTElBU0VEX1BPSU5UX1NJWkVfUkFO
R0U6ICAgICAgICByZXR1cm4gMjsKLSAgICAgICAgY2FzZSBHTF9BTFBIQV9CSVRTOiAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9BUlJBWV9CVUZGRVJfQklO
RElORzogICAgICAgICAgICByZXR1cm4gMTsgLy8gKCogYWN0dWFsbHkgYSBXZWJHTEJ1ZmZlciop
Ci0gICAgICAgIGNhc2UgR0xfQkxFTkQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IDE7Ci0gICAgICAgIGNhc2UgR0xfQkxFTkRfQ09MT1I6ICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIDQ7Ci0gICAgICAgIGNhc2UgR0xfQkxFTkRfRFNUX0FMUEhBOiAgICAgICAgICAgICAgICAg
cmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfQkxFTkRfRFNUX1JHQjogICAgICAgICAgICAgICAg
ICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfQkxFTkRfRVFVQVRJT05fQUxQSEE6ICAgICAg
ICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfQkxFTkRfRVFVQVRJT05fUkdCOiAgICAg
ICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfQkxFTkRfU1JDX0FMUEhBOiAgICAg
ICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfQkxFTkRfU1JDX1JHQjogICAg
ICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfQkxVRV9CSVRTOiAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfQ09MT1JfQ0xFQVJf
VkFMVUU6ICAgICAgICAgICAgICAgcmV0dXJuIDQ7Ci0gICAgICAgIGNhc2UgR0xfQ09MT1JfV1JJ
VEVNQVNLOiAgICAgICAgICAgICAgICAgcmV0dXJuIDQ7Ci0gICAgICAgIGNhc2UgR0xfQ09NUFJF
U1NFRF9URVhUVVJFX0ZPUk1BVFM6ICAgICAgcmV0dXJuIEdMX05VTV9DT01QUkVTU0VEX1RFWFRV
UkVfRk9STUFUUzsKLSAgICAgICAgY2FzZSBHTF9DVUxMX0ZBQ0U6ICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9DVUxMX0ZBQ0VfTU9ERTogICAgICAgICAg
ICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9DVVJSRU5UX1BST0dSQU06ICAgICAg
ICAgICAgICAgICByZXR1cm4gMTsgLy8gKCogYWN0dWFsbHkgYSBXZWJHTFByb2dyYW0qKQotICAg
ICAgICBjYXNlIEdMX0RFUFRIX0JJVFM6ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwot
ICAgICAgICBjYXNlIEdMX0RFUFRIX0NMRUFSX1ZBTFVFOiAgICAgICAgICAgICAgIHJldHVybiAx
OwotICAgICAgICBjYXNlIEdMX0RFUFRIX0ZVTkM6ICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biAxOwotICAgICAgICBjYXNlIEdMX0RFUFRIX1JBTkdFOiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAyOwotICAgICAgICBjYXNlIEdMX0RFUFRIX1RFU1Q6ICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX0RFUFRIX1dSSVRFTUFTSzogICAgICAgICAgICAg
ICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX0RJVEhFUjogICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSX0JJ
TkRJTkc6ICAgIHJldHVybiAxOyAvLyAoKiBhY3R1YWxseSBhIFdlYkdMQnVmZmVyKikKLSAgICAg
ICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9CSU5ESU5HX0VYVDogICAgICAgICByZXR1cm4gMTsgLy8g
KCogYWN0dWFsbHkgYSBXZWJHTEZyYW1lYnVmZmVyKikKLSAgICAgICAgY2FzZSBHTF9GUk9OVF9G
QUNFOiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9HRU5F
UkFURV9NSVBNQVBfSElOVDogICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9H
UkVFTl9CSVRTOiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgIC8v
Y2FzZSBHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX0ZPUk1BVDpyZXR1cm4gMTsKLSAgICAg
ICAgICAgIC8vY2FzZSBHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX1RZUEU6ICByZXR1cm4g
MTsKLSAgICAgICAgY2FzZSBHTF9MSU5FX1dJRFRIOiAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gMTsKLSAgICAgICAgY2FzZSBHTF9NQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUUzpy
ZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9NQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFOiAgICAg
ICByZXR1cm4gMTsKLSAgICAgICAgICAgIC8vY2FzZSBHTF9NQVhfRlJBR01FTlRfVU5JRk9STV9W
RUNUT1JTOiAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9NQVhfUkVOREVSQlVGRkVSX1NJ
WkVfRVhUOiAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9NQVhfVEVYVFVSRV9JTUFH
RV9VTklUUzogICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9NQVhfVEVYVFVSRV9T
SVpFOiAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgIC8vY2FzZSBHTF9NQVhf
VkFSWUlOR19WRUNUT1JTOiAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9N
QVhfVkVSVEVYX0FUVFJJQlM6ICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBH
TF9NQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFM6ICByZXR1cm4gMTsKLSAgICAgICAgICAg
IC8vY2FzZSBHTF9NQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUzogICAgICByZXR1cm4gMTsKLSAg
ICAgICAgY2FzZSBHTF9NQVhfVklFV1BPUlRfRElNUzogICAgICAgICAgICAgICByZXR1cm4gMjsK
LSAgICAgICAgY2FzZSBHTF9OVU1fQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFM6ICByZXR1cm4g
MTsKLSAgICAgICAgICAgIC8vY2FzZSBHTF9OVU1fU0hBREVSX0JJTkFSWV9GT1JNQVRTOiAgICAg
ICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9QQUNLX0FMSUdOTUVOVDogICAgICAgICAgICAg
ICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9QT0xZR09OX09GRlNFVF9GQUNUT1I6ICAg
ICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9QT0xZR09OX09GRlNFVF9GSUxMOiAg
ICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9QT0xZR09OX09GRlNFVF9VTklU
UzogICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9SRURfQklUUzogICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9SRU5ERVJCVUZGRVJf
QklORElOR19FWFQ6ICAgICAgICByZXR1cm4gMTsgLy8gKCogYWN0dWFsbHkgYSBXZWJHTFJlbmRl
cmJ1ZmZlciopCi0gICAgICAgIGNhc2UgR0xfU0FNUExFX0JVRkZFUlM6ICAgICAgICAgICAgICAg
ICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU0FNUExFX0NPVkVSQUdFX0lOVkVSVDogICAg
ICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU0FNUExFX0NPVkVSQUdFX1ZBTFVFOiAg
ICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU0FNUExFUzogICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU0NJU1NPUl9CT1g6ICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIDQ7Ci0gICAgICAgIGNhc2UgR0xfU0NJU1NPUl9URVNUOiAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICAvL2Nhc2UgR0xfU0hBREVS
X0JJTkFSWV9GT1JNQVRTOiAgICAgICAgICAgcmV0dXJuIEdMX05VTV9TSEFERVJfQklOQVJZX0ZP
Uk1BVFM7Ci0gICAgICAgICAgICAvL2Nhc2UgR0xfU0hBREVSX0NPTVBJTEVSOiAgICAgICAgICAg
ICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJTF9CQUNLX0ZBSUw6ICAgICAg
ICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJTF9CQUNLX0ZVTkM6ICAg
ICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJTF9CQUNLX1BBU1Nf
REVQVEhfRkFJTDogICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJTF9CQUNLX1BB
U1NfREVQVEhfUEFTUzogICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJTF9CQUNL
X1JFRjogICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJTF9C
QUNLX1ZBTFVFX01BU0s6ICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJ
TF9CQUNLX1dSSVRFTUFTSzogICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1RF
TkNJTF9CSVRTOiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xf
U1RFTkNJTF9DTEVBUl9WQUxVRTogICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2Ug
R0xfU1RFTkNJTF9GQUlMOiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNh
c2UgR0xfU1RFTkNJTF9GVU5DOiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAg
IGNhc2UgR0xfU1RFTkNJTF9QQVNTX0RFUFRIX0ZBSUw6ICAgICAgICAgcmV0dXJuIDE7Ci0gICAg
ICAgIGNhc2UgR0xfU1RFTkNJTF9QQVNTX0RFUFRIX1BBU1M6ICAgICAgICAgcmV0dXJuIDE7Ci0g
ICAgICAgIGNhc2UgR0xfU1RFTkNJTF9SRUY6ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7
Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJTF9URVNUOiAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IDE7Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJTF9WQUxVRV9NQVNLOiAgICAgICAgICAgICAgcmV0
dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJTF9XUklURU1BU0s6ICAgICAgICAgICAgICAg
cmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1VCUElYRUxfQklUUzogICAgICAgICAgICAgICAg
ICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfVEVYVFVSRV9CSU5ESU5HXzJEOiAgICAgICAg
ICAgICAgcmV0dXJuIDE7IC8vICgqIGFjdHVhbGx5IGEgV2ViR0xUZXh0dXJlKikKLSAgICAgICAg
Y2FzZSBHTF9URVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVA6ICAgICAgICByZXR1cm4gMTsgLy8gKCog
YWN0dWFsbHkgYSBXZWJHTFRleHR1cmUqKQotICAgICAgICBjYXNlIEdMX1VOUEFDS19BTElHTk1F
TlQ6ICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX1ZJRVdQT1JUOiAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA0OwotICAgIH0KLSAgICAKLSAgICByZXR1cm4g
LTE7Ci19Ci0KLWJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEJvb2xlYW4odW5zaWduZWQgbG9u
ZyBwbmFtZSkKLXsKLSAgICBpbnQgc2l6ZSA9IHNpemVGb3JHZXRQYXJhbShwbmFtZSk7Ci0gICAg
aWYgKHNpemUgPCAxKSAKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCiAgICAgZW5zdXJlQ29udGV4
dChtX2NvbnRleHRPYmopOwotICAgIAotICAgIGJvb2wgaXNBbGxvY2VkID0gZmFsc2U7Ci0gICAg
R0xib29sZWFuIGJ1Zls0XTsKLSAgICBHTGJvb2xlYW4qIHBidWYgPSBidWY7Ci0gICAgICAgICAg
ICAKLSAgICBpZiAoc2l6ZSA+IDQpIHsKLSAgICAgICAgcGJ1ZiA9IChHTGJvb2xlYW4qKSBtYWxs
b2Moc2l6ZSAqIHNpemVvZihHTGJvb2xlYW4pKTsKLSAgICAgICAgaXNBbGxvY2VkID0gdHJ1ZTsK
LSAgICB9Ci0gICAgICAgICAgICAKLSAgICA6OmdsR2V0Qm9vbGVhbnYocG5hbWUsIHBidWYpOwot
ICAgIAotICAgIGJvb2wgdmFsdWUgPSBwYnVmWzBdOwotCi0gICAgaWYgKGlzQWxsb2NlZCkKLSAg
ICAgICAgZnJlZShwYnVmKTsKLSAgICAKLSAgICByZXR1cm4gdmFsdWU7CisgICAgOjpnbEdldEJv
b2xlYW52KHBuYW1lLCB2YWx1ZSk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViR0xVbnNpZ25lZEJ5dGVB
cnJheT4gR3JhcGhpY3NDb250ZXh0M0Q6OmdldEJvb2xlYW52KHVuc2lnbmVkIGxvbmcgcG5hbWUp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRCdWZmZXJQYXJhbWV0ZXJpdih1bnNpZ25lZCBs
b25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgaW50KiB2YWx1ZSkKIHsKLSAgICBpbnQg
c2l6ZSA9IHNpemVGb3JHZXRQYXJhbShwbmFtZSk7Ci0gICAgaWYgKHNpemUgPCAxKSAKLSAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgCiAgICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwotICAg
IAotICAgIFJlZlB0cjxXZWJHTFVuc2lnbmVkQnl0ZUFycmF5PiBhcnJheSA9IFdlYkdMVW5zaWdu
ZWRCeXRlQXJyYXk6OmNyZWF0ZShzaXplKTsKLSAgICBib29sIGlzQWxsb2NlZCA9IGZhbHNlOwot
ICAgIEdMYm9vbGVhbiBidWZbNF07Ci0gICAgR0xib29sZWFuKiBwYnVmID0gYnVmOwotICAgICAg
ICAgICAgCi0gICAgaWYgKHNpemUgPiA0KSB7Ci0gICAgICAgIHBidWYgPSAoR0xib29sZWFuKikg
bWFsbG9jKHNpemUgKiBzaXplb2YoR0xib29sZWFuKSk7Ci0gICAgICAgIGlzQWxsb2NlZCA9IHRy
dWU7Ci0gICAgfQotICAgICAgICAgICAgCi0gICAgOjpnbEdldEJvb2xlYW52KHBuYW1lLCBwYnVm
KTsKLSAgICAgICAgICAgIAotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAg
ICAgICBhcnJheS0+c2V0KGksIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHBidWZbaV0pKTsK
LSAgICAgICAgICAgIAotICAgIGlmIChpc0FsbG9jZWQpCi0gICAgICAgIGZyZWUocGJ1Zik7Ci0g
ICAgCi0gICAgcmV0dXJuIGFycmF5OworICAgIDo6Z2xHZXRCdWZmZXJQYXJhbWV0ZXJpdih0YXJn
ZXQsIHBuYW1lLCB2YWx1ZSk7CiB9CiAKLWZsb2F0IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRGbG9h
dCh1bnNpZ25lZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RmxvYXR2
KHVuc2lnbmVkIGxvbmcgcG5hbWUsIGZsb2F0KiB2YWx1ZSkKIHsKLSAgICBpbnQgc2l6ZSA9IHNp
emVGb3JHZXRQYXJhbShwbmFtZSk7Ci0gICAgaWYgKHNpemUgPCAxKSAKLSAgICAgICAgcmV0dXJu
IDA7Ci0gICAgCiAgICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwotICAgIAotICAgIGJv
b2wgaXNBbGxvY2VkID0gZmFsc2U7Ci0gICAgR0xmbG9hdCBidWZbNF07Ci0gICAgR0xmbG9hdCog
cGJ1ZiA9IGJ1ZjsKLSAgICAgICAgICAgIAotICAgIGlmIChzaXplID4gNCkgewotICAgICAgICBw
YnVmID0gKEdMZmxvYXQqKSBtYWxsb2Moc2l6ZSAqIHNpemVvZihHTGZsb2F0KSk7Ci0gICAgICAg
IGlzQWxsb2NlZCA9IHRydWU7Ci0gICAgfQotICAgICAgICAgICAgCi0gICAgOjpnbEdldEZsb2F0
dihwbmFtZSwgcGJ1Zik7Ci0gICAgCi0gICAgZmxvYXQgdmFsdWUgPSBwYnVmWzBdOwotCi0gICAg
aWYgKGlzQWxsb2NlZCkKLSAgICAgICAgZnJlZShwYnVmKTsKLSAgICAKLSAgICByZXR1cm4gdmFs
dWU7CisgICAgOjpnbEdldEZsb2F0dihwbmFtZSwgdmFsdWUpOwogfQogCi1QYXNzUmVmUHRyPFdl
YkdMRmxvYXRBcnJheT4gR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZsb2F0dih1bnNpZ25lZCBsb25n
IHBuYW1lKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50
UGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVu
dCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgaW50KiB2YWx1ZSkKIHsKLSAgICBpbnQgc2l6ZSA9IHNp
emVGb3JHZXRQYXJhbShwbmFtZSk7Ci0gICAgaWYgKHNpemUgPCAxKSAKLSAgICAgICAgcmV0dXJu
IDA7Ci0gICAgCiAgICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwotICAgIAotICAgIFJl
ZlB0cjxXZWJHTEZsb2F0QXJyYXk+IGFycmF5ID0gV2ViR0xGbG9hdEFycmF5OjpjcmVhdGUoc2l6
ZSk7Ci0gICAgYm9vbCBpc0FsbG9jZWQgPSBmYWxzZTsKLSAgICBHTGZsb2F0IGJ1Zls0XTsKLSAg
ICBHTGZsb2F0KiBwYnVmID0gYnVmOwotICAgICAgICAgICAgCi0gICAgaWYgKHNpemUgPiA0KSB7
Ci0gICAgICAgIHBidWYgPSAoR0xmbG9hdCopIG1hbGxvYyhzaXplICogc2l6ZW9mKEdMZmxvYXQp
KTsKLSAgICAgICAgaXNBbGxvY2VkID0gdHJ1ZTsKLSAgICB9Ci0gICAgICAgICAgICAKLSAgICA6
OmdsR2V0RmxvYXR2KHBuYW1lLCBwYnVmKTsKLSAgICAgICAgICAgIAotICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBhcnJheS0+c2V0KGksIHN0YXRpY19jYXN0PGZs
b2F0PihwYnVmW2ldKSk7Ci0gICAgICAgICAgICAKLSAgICBpZiAoaXNBbGxvY2VkKQotICAgICAg
ICBmcmVlKHBidWYpOwotICAgIAotICAgIHJldHVybiBhcnJheTsKKyAgICA6OmdsR2V0RnJhbWVi
dWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZFWFQodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSwg
dmFsdWUpOwogfQogCi1pbnQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEludGVnZXIodW5zaWduZWQg
bG9uZyBwbmFtZSkKLXsKLSAgICBpbnQgc2l6ZSA9IHNpemVGb3JHZXRQYXJhbShwbmFtZSk7Ci0g
ICAgaWYgKHNpemUgPCAxKSAKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgZW5zdXJlQ29u
dGV4dChtX2NvbnRleHRPYmopOwotICAgIAotICAgIGJvb2wgaXNBbGxvY2VkID0gZmFsc2U7Ci0g
ICAgR0xpbnQgYnVmWzRdOwotICAgIEdMaW50KiBwYnVmID0gYnVmOwotICAgICAgICAgICAgCi0g
ICAgaWYgKHNpemUgPiA0KSB7Ci0gICAgICAgIHBidWYgPSAoR0xpbnQqKSBtYWxsb2Moc2l6ZSAq
IHNpemVvZihHTGludCkpOwotICAgICAgICBpc0FsbG9jZWQgPSB0cnVlOwotICAgIH0KLSAgICAg
ICAgICAgIAotICAgIDo6Z2xHZXRJbnRlZ2VydihwbmFtZSwgcGJ1Zik7Ci0gICAgCi0gICAgaW50
IHZhbHVlID0gcGJ1ZlswXTsKLQotICAgIGlmIChpc0FsbG9jZWQpCi0gICAgICAgIGZyZWUocGJ1
Zik7Ci0gICAgCi0gICAgcmV0dXJuIHZhbHVlOwotfQotCi1QYXNzUmVmUHRyPFdlYkdMSW50QXJy
YXk+IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbnRlZ2Vydih1bnNpZ25lZCBsb25nIHBuYW1lKQot
ewotICAgIGludCBzaXplID0gc2l6ZUZvckdldFBhcmFtKHBuYW1lKTsKLSAgICBpZiAoc2l6ZSA8
IDEpIAotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBlbnN1cmVDb250ZXh0KG1fY29udGV4
dE9iaik7Ci0gICAgCi0gICAgUmVmUHRyPFdlYkdMSW50QXJyYXk+IGFycmF5ID0gV2ViR0xJbnRB
cnJheTo6Y3JlYXRlKHNpemUpOwotICAgIGJvb2wgaXNBbGxvY2VkID0gZmFsc2U7Ci0gICAgR0xp
bnQgYnVmWzRdOwotICAgIEdMaW50KiBwYnVmID0gYnVmOwotICAgICAgICAgICAgCi0gICAgaWYg
KHNpemUgPiA0KSB7Ci0gICAgICAgIHBidWYgPSAoR0xpbnQqKSBtYWxsb2Moc2l6ZSAqIHNpemVv
ZihHTGludCkpOwotICAgICAgICBpc0FsbG9jZWQgPSB0cnVlOwotICAgIH0KLSAgICAgICAgICAg
IAotICAgIDo6Z2xHZXRJbnRlZ2VydihwbmFtZSwgcGJ1Zik7Ci0gICAgICAgICAgICAKLSAgICBm
b3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgYXJyYXktPnNldChpLCBzdGF0
aWNfY2FzdDxpbnQ+KHBidWZbaV0pKTsKLSAgICAgICAgICAgIAotICAgIGlmIChpc0FsbG9jZWQp
Ci0gICAgICAgIGZyZWUocGJ1Zik7Ci0gICAgCi0gICAgcmV0dXJuIGFycmF5OwotfQotCi1pbnQg
R3JhcGhpY3NDb250ZXh0M0Q6OmdldEJ1ZmZlclBhcmFtZXRlcmkodW5zaWduZWQgbG9uZyB0YXJn
ZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbnRl
Z2Vydih1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKQogewogICAgIGVuc3VyZUNvbnRl
eHQobV9jb250ZXh0T2JqKTsKLSAgICBHTGludCBkYXRhOwotICAgIDo6Z2xHZXRCdWZmZXJQYXJh
bWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmZGF0YSk7Ci0gICAgcmV0dXJuIGRhdGE7CisgICAgOjpn
bEdldEludGVnZXJ2KHBuYW1lLCB2YWx1ZSk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViR0xJbnRBcnJh
eT4gR3JhcGhpY3NDb250ZXh0M0Q6OmdldEJ1ZmZlclBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcg
dGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
UHJvZ3JhbWl2KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgdW5zaWduZWQgbG9uZyBwbmFtZSwgaW50
KiB2YWx1ZSkKIHsKICAgICBlbnN1cmVDb250ZXh0KG1fY29udGV4dE9iaik7Ci0gICAgUmVmUHRy
PFdlYkdMSW50QXJyYXk+IGFycmF5ID0gV2ViR0xJbnRBcnJheTo6Y3JlYXRlKDEpOwotICAgIEdM
aW50IGRhdGE7Ci0gICAgOjpnbEdldEJ1ZmZlclBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsICZk
YXRhKTsKLSAgICBhcnJheS0+c2V0KDAsIHN0YXRpY19jYXN0PGludD4oZGF0YSkpOwotICAgIAot
ICAgIHJldHVybiBhcnJheTsKLX0KLQotaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRGcmFtZWJ1
ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBs
b25nIGF0dGFjaG1lbnQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgZW5zdXJlQ29udGV4
dChtX2NvbnRleHRPYmopOwotICAgIEdMaW50IGRhdGE7Ci0gICAgOjpnbEdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcml2RVhUKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsICZkYXRh
KTsKLSAgICByZXR1cm4gZGF0YTsKLX0KLQotUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBHcmFw
aGljc0NvbnRleHQzRDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYodW5zaWdu
ZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgdW5zaWduZWQgbG9uZyBw
bmFtZSkKLXsKLSAgICBlbnN1cmVDb250ZXh0KG1fY29udGV4dE9iaik7Ci0gICAgUmVmUHRyPFdl
YkdMSW50QXJyYXk+IGFycmF5ID0gV2ViR0xJbnRBcnJheTo6Y3JlYXRlKDEpOwotICAgIEdMaW50
IGRhdGE7Ci0gICAgOjpnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2RVhUKHRh
cmdldCwgYXR0YWNobWVudCwgcG5hbWUsICZkYXRhKTsKLSAgICBhcnJheS0+c2V0KDAsIHN0YXRp
Y19jYXN0PGludD4oZGF0YSkpOwotICAgIAotICAgIHJldHVybiBhcnJheTsKLX0KLQotaW50IEdy
YXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtaShXZWJHTFByb2dyYW0qIHByb2dyYW0sIHVuc2ln
bmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwotICAg
IEdMaW50IGRhdGE7Ci0gICAgOjpnbEdldFByb2dyYW1pdigoR0x1aW50KSBwcm9ncmFtLT5vYmpl
Y3QoKSwgcG5hbWUsICZkYXRhKTsKLSAgICByZXR1cm4gZGF0YTsKLX0KLQotUGFzc1JlZlB0cjxX
ZWJHTEludEFycmF5PiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbWl2KFdlYkdMUHJvZ3Jh
bSogcHJvZ3JhbSwgdW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICBlbnN1cmVDb250ZXh0KG1f
Y29udGV4dE9iaik7Ci0gICAgUmVmUHRyPFdlYkdMSW50QXJyYXk+IGFycmF5ID0gV2ViR0xJbnRB
cnJheTo6Y3JlYXRlKDEpOwotICAgIEdMaW50IGRhdGE7Ci0gICAgOjpnbEdldFByb2dyYW1pdigo
R0x1aW50KSBwcm9ncmFtLT5vYmplY3QoKSwgcG5hbWUsICZkYXRhKTsKLSAgICBhcnJheS0+c2V0
KDAsIHN0YXRpY19jYXN0PGludD4oZGF0YSkpOwotICAgIAotICAgIHJldHVybiBhcnJheTsKKyAg
ICA6OmdsR2V0UHJvZ3JhbWl2KChHTHVpbnQpIHByb2dyYW0tPm9iamVjdCgpLCBwbmFtZSwgdmFs
dWUpOwogfQogCiBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1JbmZvTG9nKFdl
YkdMUHJvZ3JhbSogcHJvZ3JhbSkKQEAgLTEyODUsNDYgKzEwMDQsMTggQEAgU3RyaW5nIEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtSW5mbwogICAgIHJldHVybiBzOwogfQogCi1pbnQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodW5zaWduZWQgbG9uZyB0
YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgZW5zdXJlQ29udGV4dChtX2NvbnRl
eHRPYmopOwotICAgIEdMaW50IGRhdGE7Ci0gICAgOjpnbEdldEJ1ZmZlclBhcmFtZXRlcml2KHRh
cmdldCwgcG5hbWUsICZkYXRhKTsKLSAgICByZXR1cm4gZGF0YTsKLX0KLQotUGFzc1JlZlB0cjxX
ZWJHTEludEFycmF5PiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVy
aXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgZW5z
dXJlQ29udGV4dChtX2NvbnRleHRPYmopOwotICAgIFJlZlB0cjxXZWJHTEludEFycmF5PiBhcnJh
eSA9IFdlYkdMSW50QXJyYXk6OmNyZWF0ZSgxKTsKLSAgICBHTGludCBkYXRhOwotICAgIDo6Z2xH
ZXRCdWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmZGF0YSk7Ci0gICAgYXJyYXktPnNl
dCgwLCBzdGF0aWNfY2FzdDxpbnQ+KGRhdGEpKTsKLSAgICAKLSAgICByZXR1cm4gYXJyYXk7Ci19
Ci0KLWludCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyaShXZWJHTFNoYWRlciogc2hhZGVy
LCB1bnNpZ25lZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UmVuZGVy
YnVmZmVyUGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5h
bWUsIGludCogdmFsdWUpCiB7Ci0gICAgQVNTRVJUKHNoYWRlcik7Ci0gICAgCiAgICAgZW5zdXJl
Q29udGV4dChtX2NvbnRleHRPYmopOwotICAgIEdMaW50IGRhdGE7Ci0gICAgOjpnbEdldFNoYWRl
cml2KChHTHVpbnQpIHNoYWRlci0+b2JqZWN0KCksIHBuYW1lLCAmZGF0YSk7Ci0gICAgcmV0dXJu
IGRhdGE7CisgICAgOjpnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2RVhUKHRhcmdldCwgcG5h
bWUsIHZhbHVlKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0U2hhZGVyaXYoV2ViR0xTaGFkZXIqIHNoYWRlciwgdW5zaWduZWQgbG9uZyBwbmFt
ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlcml2KFdlYkdMU2hhZGVyKiBzaGFk
ZXIsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIGludCogdmFsdWUpCiB7CiAgICAgQVNTRVJUKHNoYWRl
cik7CiAgICAgCiAgICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwotICAgIFJlZlB0cjxX
ZWJHTEludEFycmF5PiBhcnJheSA9IFdlYkdMSW50QXJyYXk6OmNyZWF0ZSgxKTsKLSAgICBHTGlu
dCBkYXRhOwotICAgIDo6Z2xHZXRTaGFkZXJpdigoR0x1aW50KSBzaGFkZXItPm9iamVjdCgpLCBw
bmFtZSwgJmRhdGEpOwotICAgIGFycmF5LT5zZXQoMCwgc3RhdGljX2Nhc3Q8aW50PihkYXRhKSk7
Ci0gICAgCi0gICAgcmV0dXJuIGFycmF5OworICAgIDo6Z2xHZXRTaGFkZXJpdigoR0x1aW50KSBz
aGFkZXItPm9iamVjdCgpLCBwbmFtZSwgdmFsdWUpOwogfQogCiBTdHJpbmcgR3JhcGhpY3NDb250
ZXh0M0Q6OmdldFNoYWRlckluZm9Mb2coV2ViR0xTaGFkZXIqIHNoYWRlcikKQEAgLTEzNjAsNzgg
KzEwNTEsMjggQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJTb3VyYwogfQog
CiAKLWZsb2F0IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRUZXhQYXJhbWV0ZXJmKHVuc2lnbmVkIGxv
bmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
Z2V0VGV4UGFyYW1ldGVyZnYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5h
bWUsIGZsb2F0KiB2YWx1ZSkKIHsKICAgICBlbnN1cmVDb250ZXh0KG1fY29udGV4dE9iaik7Ci0g
ICAgR0xmbG9hdCBkYXRhOwotICAgIDo6Z2xHZXRUZXhQYXJhbWV0ZXJmdih0YXJnZXQsIHBuYW1l
LCAmZGF0YSk7Ci0gICAgcmV0dXJuIGRhdGE7CisgICAgOjpnbEdldFRleFBhcmFtZXRlcmZ2KHRh
cmdldCwgcG5hbWUsIHZhbHVlKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJHTEZsb2F0QXJyYXk+IEdy
YXBoaWNzQ29udGV4dDNEOjpnZXRUZXhQYXJhbWV0ZXJmdih1bnNpZ25lZCBsb25nIHRhcmdldCwg
dW5zaWduZWQgbG9uZyBwbmFtZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFRleFBhcmFt
ZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZh
bHVlKQogewogICAgIGVuc3VyZUNvbnRleHQobV9jb250ZXh0T2JqKTsKLSAgICBSZWZQdHI8V2Vi
R0xGbG9hdEFycmF5PiBhcnJheSA9IFdlYkdMRmxvYXRBcnJheTo6Y3JlYXRlKDEpOwotICAgIEdM
ZmxvYXQgZGF0YTsKLSAgICA6OmdsR2V0VGV4UGFyYW1ldGVyZnYodGFyZ2V0LCBwbmFtZSwgJmRh
dGEpOwotICAgIGFycmF5LT5zZXQoMCwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRhdGEpKTsKLSAgICAK
LSAgICByZXR1cm4gYXJyYXk7CisgICAgOjpnbEdldFRleFBhcmFtZXRlcml2KHRhcmdldCwgcG5h
bWUsIHZhbHVlKTsKIH0KIAotaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRUZXhQYXJhbWV0ZXJp
KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0VW5pZm9ybWZ2KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBsb2Nh
dGlvbiwgZmxvYXQqIHZhbHVlKQogewogICAgIGVuc3VyZUNvbnRleHQobV9jb250ZXh0T2JqKTsK
LSAgICBHTGludCBkYXRhOwotICAgIDo6Z2xHZXRUZXhQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1l
LCAmZGF0YSk7Ci0gICAgcmV0dXJuIGRhdGE7CisgICAgOjpnbEdldFVuaWZvcm1mdigoR0x1aW50
KSBwcm9ncmFtLT5vYmplY3QoKSwgbG9jYXRpb24sIHZhbHVlKTsKIH0KIAotUGFzc1JlZlB0cjxX
ZWJHTEludEFycmF5PiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VGV4UGFyYW1ldGVyaXYodW5zaWdu
ZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCit2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRVbmlmb3JtaXYoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uLCBp
bnQqIHZhbHVlKQogewogICAgIGVuc3VyZUNvbnRleHQobV9jb250ZXh0T2JqKTsKLSAgICBSZWZQ
dHI8V2ViR0xJbnRBcnJheT4gYXJyYXkgPSBXZWJHTEludEFycmF5OjpjcmVhdGUoMSk7Ci0gICAg
R0xpbnQgZGF0YTsKLSAgICA6OmdsR2V0VGV4UGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgJmRh
dGEpOwotICAgIGFycmF5LT5zZXQoMCwgc3RhdGljX2Nhc3Q8aW50PihkYXRhKSk7Ci0gICAgCi0g
ICAgcmV0dXJuIGFycmF5OwotfQotCi1mbG9hdCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9y
bWYoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uKQotewotICAgIC8vIEZJWE1F
OiBXZSBuZWVkIHRvIHF1ZXJ5IGdsR2V0VW5pZm9ybUxvY2F0aW9uIHRvIGRldGVybWluZSB0aGUg
c2l6ZSBuZWVkZWQKLSAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7Ci0gICAgVU5VU0VEX1BBUkFN
KGxvY2F0aW9uKTsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOwotfQotCi1Q
YXNzUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gR3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1m
dihXZWJHTFByb2dyYW0qIHByb2dyYW0sIGxvbmcgbG9jYXRpb24pCi17Ci0gICAgLy8gRklYTUU6
IFdlIG5lZWQgdG8gcXVlcnkgZ2xHZXRVbmlmb3JtTG9jYXRpb24gdG8gZGV0ZXJtaW5lIHRoZSBz
aXplIG5lZWRlZAotICAgIFVOVVNFRF9QQVJBTShwcm9ncmFtKTsKLSAgICBVTlVTRURfUEFSQU0o
bG9jYXRpb24pOwotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWlu
dCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWkoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBs
b25nIGxvY2F0aW9uKQotewotICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIHF1ZXJ5IGdsR2V0VW5p
Zm9ybUxvY2F0aW9uIHRvIGRldGVybWluZSB0aGUgc2l6ZSBuZWVkZWQKLSAgICBVTlVTRURfUEFS
QU0ocHJvZ3JhbSk7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotICAgIHJldHVybiAwOwotfQotCi1QYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IEdy
YXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtaXYoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBsb25n
IGxvY2F0aW9uKQotewotICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIHF1ZXJ5IGdsR2V0VW5pZm9y
bUxvY2F0aW9uIHRvIGRldGVybWluZSB0aGUgc2l6ZSBuZWVkZWQKLSAgICBVTlVTRURfUEFSQU0o
cHJvZ3JhbSk7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotICAgIHJldHVybiAwOworICAgIDo6Z2xHZXRVbmlmb3JtaXYoKEdMdWludCkgcHJvZ3Jh
bS0+b2JqZWN0KCksIGxvY2F0aW9uLCB2YWx1ZSk7CiB9CiAKIGxvbmcgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldFVuaWZvcm1Mb2NhdGlvbihXZWJHTFByb2dyYW0qIHByb2dyYW0sIGNvbnN0IFN0cmlu
ZyYgbmFtZSkKQEAgLTE0NDIsNzEgKzEwODMsMTYgQEAgbG9uZyBHcmFwaGljc0NvbnRleHQzRDo6
Z2V0VW5pZm9ybUxvY2F0aQogICAgIHJldHVybiA6OmdsR2V0VW5pZm9ybUxvY2F0aW9uKChHTHVp
bnQpIHByb2dyYW0tPm9iamVjdCgpLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwogfQogCi1zdGF0aWMg
aW50IHNpemVGb3JHZXRWZXJ0ZXhBdHRyaWJQYXJhbSh1bnNpZ25lZCBsb25nIHBuYW1lKQotewot
ICAgIHN3aXRjaChwbmFtZSkgewotICAgICAgICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlf
QlVGRkVSX0JJTkRJTkc6ICAgICByZXR1cm4gMTsgLy8gKCogYWN0dWFsbHkgYSBXZWJHTEJ1ZmZl
ciopCi0gICAgICAgIGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVEOiAgICAgICAg
ICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfU0laRTog
ICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9WRVJURVhfQVRUUklCX0FS
UkFZX1NUUklERTogICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfVkVSVEVY
X0FUVFJJQl9BUlJBWV9UWVBFOiAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNl
IEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfTk9STUFMSVpFRDogICAgICAgICByZXR1cm4gMTsKLSAg
ICAgICAgY2FzZSBHTF9DVVJSRU5UX1ZFUlRFWF9BVFRSSUI6ICAgICAgICAgICAgICAgICAgcmV0
dXJuIDQ7Ci0gICAgfQotICAgIAotICAgIHJldHVybiAtMTsKLX0KLQotZmxvYXQgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYmYodW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQg
bG9uZyBwbmFtZSkKLXsKLSAgICBlbnN1cmVDb250ZXh0KG1fY29udGV4dE9iaik7Ci0gICAgR0xm
bG9hdCBidWZbNF07Ci0gICAgOjpnbEdldFZlcnRleEF0dHJpYmZ2KGluZGV4LCBwbmFtZSwgYnVm
KTsKLSAgICByZXR1cm4gYnVmWzBdOwotfQotCi1QYXNzUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4g
R3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYmZ2KHVuc2lnbmVkIGxvbmcgaW5kZXgs
IHVuc2lnbmVkIGxvbmcgcG5hbWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhB
dHRyaWJmdih1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBmbG9hdCog
dmFsdWUpCiB7Ci0gICAgaW50IHNpemUgPSBzaXplRm9yR2V0VmVydGV4QXR0cmliUGFyYW0ocG5h
bWUpOwotICAgIGlmIChzaXplIDwgMSkgCi0gICAgICAgIHJldHVybiAwOwotICAgIAogICAgIGVu
c3VyZUNvbnRleHQobV9jb250ZXh0T2JqKTsKLSAgICAKLSAgICBSZWZQdHI8V2ViR0xGbG9hdEFy
cmF5PiBhcnJheSA9IFdlYkdMRmxvYXRBcnJheTo6Y3JlYXRlKHNpemUpOwotICAgIEdMZmxvYXQg
YnVmWzRdOwotICAgIDo6Z2xHZXRWZXJ0ZXhBdHRyaWJmdihpbmRleCwgcG5hbWUsIGJ1Zik7Ci0g
ICAgICAgICAgICAKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAg
YXJyYXktPnNldChpLCBzdGF0aWNfY2FzdDxmbG9hdD4oYnVmW2ldKSk7Ci0gICAgCi0gICAgcmV0
dXJuIGFycmF5OworICAgIDo6Z2xHZXRWZXJ0ZXhBdHRyaWJmdihpbmRleCwgcG5hbWUsIHZhbHVl
KTsKIH0KIAotaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJpKHVuc2lnbmVk
IGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpnZXRWZXJ0ZXhBdHRyaWJpdih1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBu
YW1lLCBpbnQqIHZhbHVlKQogewogICAgIGVuc3VyZUNvbnRleHQobV9jb250ZXh0T2JqKTsKLSAg
ICBHTGludCBidWZbNF07Ci0gICAgOjpnbEdldFZlcnRleEF0dHJpYml2KGluZGV4LCBwbmFtZSwg
YnVmKTsKLSAgICByZXR1cm4gYnVmWzBdOwotfQotCi1QYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+
IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJpdih1bnNpZ25lZCBsb25nIGluZGV4
LCB1bnNpZ25lZCBsb25nIHBuYW1lKQotewotICAgIGludCBzaXplID0gc2l6ZUZvckdldFZlcnRl
eEF0dHJpYlBhcmFtKHBuYW1lKTsKLSAgICBpZiAoc2l6ZSA8IDEpIAotICAgICAgICByZXR1cm4g
MDsKLSAgICAKLSAgICBlbnN1cmVDb250ZXh0KG1fY29udGV4dE9iaik7Ci0gICAgCi0gICAgUmVm
UHRyPFdlYkdMSW50QXJyYXk+IGFycmF5ID0gV2ViR0xJbnRBcnJheTo6Y3JlYXRlKHNpemUpOwot
ICAgIEdMaW50IGJ1Zls0XTsKLSAgICA6OmdsR2V0VmVydGV4QXR0cmliaXYoaW5kZXgsIHBuYW1l
LCBidWYpOwotICAgICAgICAgICAgCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyArK2kp
Ci0gICAgICAgIGFycmF5LT5zZXQoaSwgc3RhdGljX2Nhc3Q8aW50PihidWZbaV0pKTsKLSAgICAK
LSAgICByZXR1cm4gYXJyYXk7CisgICAgOjpnbEdldFZlcnRleEF0dHJpYml2KGluZGV4LCBwbmFt
ZSwgdmFsdWUpOwogfQogCiBsb25nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJP
ZmZzZXQodW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQgbG9uZyBwbmFtZSkKSW5kZXg6IFdl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwkocmV2aXNpb24gNTEyMjYpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDggQEAKKzIwMDktMTEtMTkgIEtlbm5ldGggUnVzc2Vs
bCAgPGtickBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIENoYW5nZSBnZXQuLi4gY2FsbHMgdG8gbGF0ZXN0IHNwZWMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMDkxCisKKyAgICAgICAg
UmVtb3ZlZCBvbGQgdmVyc2lvbnMgb2YgZ2V0IGNhbGxzIG9uIFdlYkdMUmVuZGVyaW5nQ29udGV4
dCBhbmQKKyAgICAgICAgYWRkZWQgbmV3IG9uZXMgcGVyIHNwZWMgcmV0dXJuaW5nICJhbnkiLiBO
ZXcgY29kZSBzaW1wbGlmaWVzCisgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEIGFuZCBmaXhlcyBw
cmV2aW91c2x5IHVuaW1wbGVtZW50ZWQgcm91dGluZXMuCisgICAgICAgIEFkZGVkIGN1c3RvbSBK
UyBhbmQgVjggYmluZGluZ3MuIEFkZGVkIGV4aGF1c3RpdmUgdGVzdCBjYXNlCisgICAgICAgIGV4
ZXJjaXNpbmcgYWxsIG5ldyBjb2RlIHBhdGhzLiBVcGRhdGVkIHByZWV4aXN0aW5nIHRlc3QgY2Fz
ZXMgZm9yCisgICAgICAgIG5ldyBBUElzLiBGaXhlZCBwcmVleGlzdGluZyBidWdzIGluIFdlYktp
dCdzIGFuZCBDaHJvbWUncyBXZWJHTAorICAgICAgICBpbXBsZW1lbnRhdGlvbnMuIENsZWFuZWQg
dXAgYSBjb3VwbGUgb2YgYXJlYXMgZnJvbSByZWNlbnQgQ2FudmFzCisgICAgICAgIC0+IFdlYkdM
IHJlbmFtaW5nIGFuZCBkZWxldGVkIG9ic29sZXRlIENhbnZhc051bWJlckFycmF5LgorCisgICAg
ICAgIFJhbiBXZWJHTCBsYXlvdXQgdGVzdHMgaW4gV2ViS2l0IChjbGVhbikgYW5kIENocm9tZSAo
Y291cGxlIG9mCisgICAgICAgIHByZWV4aXN0aW5nIGtub3duIGZhaWx1cmVzKSBhbmQgbWFudWFs
IFdlYkdMIHRlc3RzIGluIGJvdGgKKyAgICAgICAgYnJvd3NlcnMuCisKKyAgICAgICAgVGVzdDog
ZmFzdC9jYW52YXMvd2ViZ2wvZ2wtb2JqZWN0LWdldC1jYWxscy5odG1sCisKKyAgICAgICAgKiBz
cmMvR3JhcGhpY3NDb250ZXh0M0QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OmNyZWF0ZUZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpjcmVhdGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmRlbGV0ZUZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpkZWxldGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OmdldEJvb2xlYW52KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpnZXRCdWZmZXJQYXJhbWV0ZXJpdik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6Z2V0RmxvYXR2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW50ZWdlcnYpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1pdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlcml2KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRUZXhQYXJhbWV0ZXJmdik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VGV4UGFyYW1ldGVyaXYpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1mdik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWl2KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJmdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliaXYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmlzRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OmlzUmVuZGVyYnVmZmVyKToKKwogMjAwOS0xMS0xOSAgWWFhciBT
Y2huaXRtYW4gIDx5YWFyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBGaXNoZXIuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNELmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNELmNw
cAkocmV2aXNpb24gNTEyMjYpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4
dDNELmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzc0LDE5ICs3NzQsNiBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6OmJlZ2luUGFpCiAjZW5kaWYgIC8vIFJFTkRFUl9UT19ERUJVR0dJ
TkdfV0lORE9XCiB9CiAKLWJvb2wgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dmFsaWRhdGVU
ZXh0dXJlVGFyZ2V0KGludCB0YXJnZXQpCi17Ci0gICAgcmV0dXJuICh0YXJnZXQgPT0gR0xfVEVY
VFVSRV8yRCB8fCB0YXJnZXQgPT0gR0xfVEVYVFVSRV9DVUJFX01BUCk7Ci19Ci0KLWJvb2wgR3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dmFsaWRhdGVUZXh0dXJlUGFyYW1ldGVyKGludCBwYXJh
bSkKLXsKLSAgICByZXR1cm4gKHBhcmFtID09IEdMX1RFWFRVUkVfTUFHX0ZJTFRFUgotICAgICAg
ICAgfHwgcGFyYW0gPT0gR0xfVEVYVFVSRV9NSU5fRklMVEVSCi0gICAgICAgICB8fCBwYXJhbSA9
PSBHTF9URVhUVVJFX1dSQVBfUwotICAgICAgICAgfHwgcGFyYW0gPT0gR0xfVEVYVFVSRV9XUkFQ
X1QpOwotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmFjdGl2ZVRleHR1cmUo
dW5zaWduZWQgbG9uZyB0ZXh0dXJlKQogewogICAgIC8vIEZJWE1FOiBxdWVyeSBudW1iZXIgb2Yg
dGV4dHVyZXMgYXZhaWxhYmxlLgpAQCAtMTEwNSw4ICsxMDkyLDggQEAgdW5zaWduZWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmNyZWF0ZUJ1ZmZlcgogdW5zaWduZWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNy
ZWF0ZUZyYW1lYnVmZmVyKCkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICBHTHVp
bnQgbzsKLSAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAmbyk7CisgICAgR0x1aW50IG8gPSAwOwor
ICAgIGdsR2VuRnJhbWVidWZmZXJzRVhUKDEsICZvKTsKICAgICByZXR1cm4gbzsKIH0KIApAQCAt
MTEyMCw3ICsxMTA3LDcgQEAgdW5zaWduZWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVJlbmRl
cgogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIEdMdWludCBvOwotICAgIGdsR2Vu
UmVuZGVyYnVmZmVycygxLCAmbyk7CisgICAgZ2xHZW5SZW5kZXJidWZmZXJzRVhUKDEsICZvKTsK
ICAgICByZXR1cm4gbzsKIH0KIApAQCAtMTE0Nyw3ICsxMTM0LDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6ZGVsZXRlQnVmZmVyKHVucwogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRl
RnJhbWVidWZmZXIodW5zaWduZWQgZnJhbWVidWZmZXIpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7Ci0gICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJmZyYW1lYnVmZmVyKTsKKyAgICBn
bERlbGV0ZUZyYW1lYnVmZmVyc0VYVCgxLCAmZnJhbWVidWZmZXIpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpkZWxldGVQcm9ncmFtKHVuc2lnbmVkIHByb2dyYW0pCkBAIC0xMTU5LDcg
KzExNDYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVQcm9ncmFtKHVuCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVSZW5kZXJidWZmZXIodW5zaWduZWQgcmVuZGVyYnVm
ZmVyKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIGdsRGVsZXRlUmVuZGVyYnVm
ZmVycygxLCAmcmVuZGVyYnVmZmVyKTsKKyAgICBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnNFWFQoMSwg
JnJlbmRlcmJ1ZmZlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVNoYWRl
cih1bnNpZ25lZCBzaGFkZXIpCkBAIC0xMTk3LDkgKzExODQsOSBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpiaW5kQnVmZmVyKHVuc2lnCiAgICAgbV9pbnRlcm5hbC0+YmluZEJ1ZmZlcih0YXJn
ZXQsIGJ1ZmZlcik7CiB9CiAKLUdMX1NBTUVfTUVUSE9EXzJfWDIoQmluZEZyYW1lYnVmZmVyLCBi
aW5kRnJhbWVidWZmZXIsIHVuc2lnbmVkIGxvbmcsIFdlYkdMRnJhbWVidWZmZXIqKQorR0xfU0FN
RV9NRVRIT0RfMl9YMihCaW5kRnJhbWVidWZmZXJFWFQsIGJpbmRGcmFtZWJ1ZmZlciwgdW5zaWdu
ZWQgbG9uZywgV2ViR0xGcmFtZWJ1ZmZlciopCiAKLUdMX1NBTUVfTUVUSE9EXzJfWDIoQmluZFJl
bmRlcmJ1ZmZlciwgYmluZFJlbmRlcmJ1ZmZlciwgdW5zaWduZWQgbG9uZywgV2ViR0xSZW5kZXJi
dWZmZXIqKQorR0xfU0FNRV9NRVRIT0RfMl9YMihCaW5kUmVuZGVyYnVmZmVyRVhULCBiaW5kUmVu
ZGVyYnVmZmVyLCB1bnNpZ25lZCBsb25nLCBXZWJHTFJlbmRlcmJ1ZmZlciopCiAKIC8vIElmIHdl
IGRpZG4ndCBoYXZlIHRvIGhhY2sgR0xfVEVYVFVSRV9XUkFQX1IgZm9yIGN1YmUgbWFwcywKIC8v
IHdlIGNvdWxkIGp1c3QgdXNlOgpAQCAtMTI1Myw3ICsxMjQwLDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6YnVmZmVyU3ViRGF0YSh1bgogdW5zaWduZWQgbG9uZyBHcmFwaGljc0NvbnRleHQz
RDo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh1bnNpZ25lZCBsb25nIHRhcmdldCkKIHsKICAgICBt
YWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICByZXR1cm4gZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVz
KHRhcmdldCk7CisgICAgcmV0dXJuIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1c0VYVCh0YXJnZXQp
OwogfQogCiBHTF9TQU1FX01FVEhPRF8xKENsZWFyLCBjbGVhciwgdW5zaWduZWQgbG9uZykKQEAg
LTEzNTYsOSArMTM0Myw5IEBAIEdMX1NBTUVfTUVUSE9EXzAoRmluaXNoLCBmaW5pc2gpCiAKIEdM
X1NBTUVfTUVUSE9EXzAoRmx1c2gsIGZsdXNoKQogCi1HTF9TQU1FX01FVEhPRF80X1g0KEZyYW1l
YnVmZmVyUmVuZGVyYnVmZmVyLCBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciwgdW5zaWduZWQgbG9u
ZywgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgV2ViR0xSZW5kZXJidWZmZXIqKQorR0xf
U0FNRV9NRVRIT0RfNF9YNChGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVCwgZnJhbWVidWZmZXJS
ZW5kZXJidWZmZXIsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcs
IFdlYkdMUmVuZGVyYnVmZmVyKikKIAotR0xfU0FNRV9NRVRIT0RfNV9YNChGcmFtZWJ1ZmZlclRl
eHR1cmUyRCwgZnJhbWVidWZmZXJUZXh0dXJlMkQsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxv
bmcsIHVuc2lnbmVkIGxvbmcsIFdlYkdMVGV4dHVyZSosIGxvbmcpCitHTF9TQU1FX01FVEhPRF81
X1g0KEZyYW1lYnVmZmVyVGV4dHVyZTJERVhULCBmcmFtZWJ1ZmZlclRleHR1cmUyRCwgdW5zaWdu
ZWQgbG9uZywgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgV2ViR0xUZXh0dXJlKiwgbG9u
ZykKIAogR0xfU0FNRV9NRVRIT0RfMShGcm9udEZhY2UsIGZyb250RmFjZSwgdW5zaWduZWQgbG9u
ZykKIApAQCAtMTQzNSwzNSArMTQyMiwxNiBAQCBpbnQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEF0
dHJpYkxvY2F0aW9uCiAgICAgcmV0dXJuIGdsR2V0QXR0cmliTG9jYXRpb24oRVhUUkFDVChwcm9n
cmFtKSwgbmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIAotYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6
Z2V0Qm9vbGVhbih1bnNpZ25lZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
Z2V0Qm9vbGVhbnYodW5zaWduZWQgbG9uZyBwbmFtZSwgdW5zaWduZWQgY2hhciogdmFsdWUpCiB7
CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgR0xib29sZWFuIHZhbDsKLSAgICAvLyBG
SVhNRTogdmFsaWRhdGUgcG5hbWUgdG8gZW5zdXJlIGl0IHJldHVybnMgb25seSBhIHNpbmdsZSB2
YWx1ZS4KLSAgICBnbEdldEJvb2xlYW52KHBuYW1lLCAmdmFsKTsKLSAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Ym9vbD4odmFsKTsKKyAgICBnbEdldEJvb2xlYW52KHBuYW1lLCB2YWx1ZSk7CiB9CiAK
LVBhc3NSZWZQdHI8V2ViR0xVbnNpZ25lZEJ5dGVBcnJheT4gR3JhcGhpY3NDb250ZXh0M0Q6Omdl
dEJvb2xlYW52KHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVu
dC4KLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOwotfQotCi1pbnQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmdldEJ1ZmZlclBhcmFtZXRlcmkodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVu
c2lnbmVkIGxvbmcgcG5hbWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRCdWZmZXJQYXJh
bWV0ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgaW50KiB2
YWx1ZSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICBHTGludCBkYXRhOwotICAg
IGdsR2V0QnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgJmRhdGEpOwotICAgIHJldHVy
biBzdGF0aWNfY2FzdDxpbnQ+KGRhdGEpOwotfQotCi1QYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+
IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRCdWZmZXJQYXJhbWV0ZXJpdih1bnNpZ25lZCBsb25nIHRh
cmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50Lgot
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgZ2xHZXRCdWZmZXJQYXJh
bWV0ZXJpdih0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgR3JhcGhp
Y3NDb250ZXh0M0Q6OmdldEVycm9yKCkKQEAgLTE0NzIsNzIgKzE0NDAsMzMgQEAgdW5zaWduZWQg
bG9uZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXJybwogICAgIHJldHVybiBnbEdldEVycm9yKCk7
CiB9CiAKLWZsb2F0IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRGbG9hdCh1bnNpZ25lZCBsb25nIHBu
YW1lKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RmxvYXR2KHVuc2lnbmVkIGxvbmcgcG5h
bWUsIGZsb2F0KiB2YWx1ZSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICBHTGZs
b2F0IHZhbDsKLSAgICAvLyBGSVhNRTogdmFsaWRhdGUgcG5hbWUgdG8gZW5zdXJlIGl0IHJldHVy
bnMgb25seSBhIHNpbmdsZSB2YWx1ZS4KLSAgICBnbEdldEZsb2F0dihwbmFtZSwgJnZhbCk7Ci0g
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0Pih2YWwpOworICAgIGdsR2V0RmxvYXR2KHBuYW1l
LCB2YWx1ZSk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViR0xGbG9hdEFycmF5PiBHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0RmxvYXR2KHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgLy8gRklYTUU6IGlt
cGxlbWVudC4KLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOwotfQotCi1pbnQg
R3JhcGhpY3NDb250ZXh0M0Q6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkodW5z
aWduZWQgbG9uZyB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBhdHRhY2htZW50LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGxvbmcgcG5hbWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRGcmFtZWJ1ZmZlckF0dGFj
aG1lbnRQYXJhbWV0ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdldCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcg
YXR0YWNobWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgcG5hbWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIHZhbHVlKQogewog
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIEdMaW50IGRhdGE7Ci0gICAgZ2xHZXRGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdih0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCAm
ZGF0YSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oZGF0YSk7Ci19Ci0KLVBhc3NSZWZQ
dHI8V2ViR0xJbnRBcnJheT4gR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZyYW1lYnVmZmVyQXR0YWNo
bWVudFBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBsb25nIHBuYW1lKQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQuCi0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICBnbEdldEZyYW1lYnVmZmVyQXR0
YWNobWVudFBhcmFtZXRlcml2RVhUKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsIHZhbHVlKTsK
IH0KIAotaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbnRlZ2VyKHVuc2lnbmVkIGxvbmcgcG5h
bWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbnRlZ2Vydih1bnNpZ25lZCBsb25nIHBu
YW1lLCBpbnQqIHZhbHVlKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIEdMaW50
IHZhbDsKLSAgICAvLyBGSVhNRTogdmFsaWRhdGUgcG5hbWUgdG8gZW5zdXJlIGl0IHJldHVybnMg
b25seSBhIHNpbmdsZSB2YWx1ZS4KLSAgICBnbEdldEludGVnZXJ2KHBuYW1lLCAmdmFsKTsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pih2YWwpOwotfQotCi1QYXNzUmVmUHRyPFdlYkdMSW50
QXJyYXk+IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbnRlZ2Vydih1bnNpZ25lZCBsb25nIHBuYW1l
KQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQuCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAg
ICByZXR1cm4gMDsKKyAgICBnbEdldEludGVnZXJ2KHBuYW1lLCB2YWx1ZSk7CiB9CiAKLWludCBH
cmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbWkoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHBuYW1lKQordm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbWl2KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHBuYW1l
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCogdmFsdWUpCiB7CiAg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgR0xpbnQgcGFyYW07Ci0gICAgZ2xHZXRQcm9n
cmFtaXYoRVhUUkFDVChwcm9ncmFtKSwgcG5hbWUsICZwYXJhbSk7Ci0gICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGludD4ocGFyYW0pOwotfQotCi1QYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtaXYoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBsb25nIHBuYW1lKQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQuCi0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICBnbEdldFByb2dyYW1pdihFWFRSQUNUKHBy
b2dyYW0pLCBwbmFtZSwgdmFsdWUpOwogfQogCiBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6Omdl
dFByb2dyYW1JbmZvTG9nKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSkKQEAgLTE1NTksMzggKzE0ODgs
MjAgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtSW5mbwogICAgIHJldHVy
biByZXM7CiB9CiAKLWludCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1l
dGVyaSh1bnNpZ25lZCBsb25nIHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBsb25nIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50KiB2YWx1ZSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAg
ICBHTGludCBwYXJhbTsKLSAgICBnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KHRhcmdldCwg
cG5hbWUsICZwYXJhbSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocGFyYW0pOwotfQot
Ci1QYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRSZW5kZXJi
dWZmZXJQYXJhbWV0ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdldCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBsb25nIHBuYW1lKQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQuCi0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICBnbEdldFJlbmRlcmJ1ZmZlclBhcmFt
ZXRlcml2RVhUKHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKIH0KIAotaW50IEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRTaGFkZXJpKFdlYkdMU2hhZGVyKiBzaGFkZXIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBwbmFtZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldFNoYWRlcml2KFdlYkdMU2hhZGVyKiBzaGFkZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHBuYW1lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50KiB2YWx1ZSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKLSAgICBHTGludCBwYXJhbTsKLSAgICBnbEdldFNoYWRlcml2KEVYVFJBQ1Qoc2hhZGVyKSwg
cG5hbWUsICZwYXJhbSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocGFyYW0pOwotfQot
Ci1QYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJp
dihXZWJHTFNoYWRlciogc2hhZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgLy8g
RklYTUU6IGltcGxlbWVudC4KLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOwor
ICAgIGdsR2V0U2hhZGVyaXYoRVhUUkFDVChzaGFkZXIpLCBwbmFtZSwgdmFsdWUpOwogfQogCiBT
dHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlckluZm9Mb2coV2ViR0xTaGFkZXIqIHNo
YWRlcikKQEAgLTE2MzcsODIgKzE1NDgsMjggQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRTdHJpbmcodW5zaQogICAgIHJldHVybiBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
aGFyKj4oZ2xHZXRTdHJpbmcobmFtZSkpKTsKIH0KIAotZmxvYXQgR3JhcGhpY3NDb250ZXh0M0Q6
OmdldFRleFBhcmFtZXRlcmYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5h
bWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRUZXhQYXJhbWV0ZXJmdih1bnNpZ25lZCBs
b25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgZmxvYXQqIHZhbHVlKQogewogICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOwotICAgIGlmICghbV9pbnRlcm5hbC0+dmFsaWRhdGVUZXh0dXJl
VGFyZ2V0KHRhcmdldCkpIHsKLSAgICAgICAgLy8gRklYTUU6IHRocm93IGV4Y2VwdGlvbi4KLSAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgaWYgKCFtX2ludGVybmFsLT52YWxpZGF0ZVRl
eHR1cmVQYXJhbWV0ZXIocG5hbWUpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiB0aHJvdyBleGNlcHRp
b24uCi0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIEdMZmxvYXQgcGFyYW07Ci0gICAg
Z2xHZXRUZXhQYXJhbWV0ZXJmdih0YXJnZXQsIHBuYW1lLCAmcGFyYW0pOwotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxmbG9hdD4ocGFyYW0pOwotfQotCi1QYXNzUmVmUHRyPFdlYkdMRmxvYXRBcnJh
eT4gR3JhcGhpY3NDb250ZXh0M0Q6OmdldFRleFBhcmFtZXRlcmZ2KHVuc2lnbmVkIGxvbmcgdGFy
Z2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQuCi0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICBnbEdldFRleFBhcmFtZXRl
cmZ2KHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKIH0KIAotaW50IEdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRUZXhQYXJhbWV0ZXJpKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1l
KQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VGV4UGFyYW1ldGVyaXYodW5zaWduZWQgbG9u
ZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIGludCogdmFsdWUpCiB7CiAgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7Ci0gICAgaWYgKCFtX2ludGVybmFsLT52YWxpZGF0ZVRleHR1cmVUYXJn
ZXQodGFyZ2V0KSkgewotICAgICAgICAvLyBGSVhNRTogdGhyb3cgZXhjZXB0aW9uLgotICAgICAg
ICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBpZiAoIW1faW50ZXJuYWwtPnZhbGlkYXRlVGV4dHVy
ZVBhcmFtZXRlcihwbmFtZSkpIHsKLSAgICAgICAgLy8gRklYTUU6IHRocm93IGV4Y2VwdGlvbi4K
LSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgR0xpbnQgcGFyYW07Ci0gICAgZ2xHZXRU
ZXhQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmcGFyYW0pOwotICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxpbnQ+KHBhcmFtKTsKLX0KLQotUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0VGV4UGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2ln
bmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudC4KLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAgIGdsR2V0VGV4UGFyYW1ldGVyaXYodGFyZ2V0
LCBwbmFtZSwgdmFsdWUpOwogfQogCi1mbG9hdCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9y
bWYoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uKQordm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0VW5pZm9ybWZ2KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBsb2NhdGlv
biwgZmxvYXQqIHZhbHVlKQogewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQuCi0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotUGFzc1JlZlB0cjxXZWJHTEZsb2F0QXJy
YXk+IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtZnYoV2ViR0xQcm9ncmFtKiBwcm9ncmFt
LCBsb25nIGxvY2F0aW9uKQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQuCi0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotaW50IEdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRVbmlmb3JtaShXZWJHTFByb2dyYW0qIHByb2dyYW0sIGxvbmcgbG9jYXRpb24pCi17Ci0gICAg
Ly8gRklYTUU6IGltcGxlbWVudC4KLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAw
OworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIGdsR2V0VW5pZm9ybWZ2KEVYVFJBQ1Qo
cHJvZ3JhbSksIGxvY2F0aW9uLCB2YWx1ZSk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViR0xJbnRBcnJh
eT4gR3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1pdihXZWJHTFByb2dyYW0qIHByb2dyYW0s
IGxvbmcgbG9jYXRpb24pCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtaXYoV2Vi
R0xQcm9ncmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uLCBpbnQqIHZhbHVlKQogewotICAgIC8v
IEZJWE1FOiBpbXBsZW1lbnQuCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsK
KyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBnbEdldFVuaWZvcm1pdihFWFRSQUNUKHBy
b2dyYW0pLCBsb2NhdGlvbiwgdmFsdWUpOwogfQogCiBsb25nIEdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRVbmlmb3JtTG9jYXRpb24oV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIG5h
bWUpCkBAIC0xNzI0LDM2ICsxNTgxLDIwIEBAIGxvbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFVu
aWZvcm1Mb2NhdGkKICAgICByZXR1cm4gZ2xHZXRVbmlmb3JtTG9jYXRpb24oRVhUUkFDVChwcm9n
cmFtKSwgbmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIAotZmxvYXQgR3JhcGhpY3NDb250ZXh0M0Q6
OmdldFZlcnRleEF0dHJpYmYodW5zaWduZWQgbG9uZyBpbmRleCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgLy8g
RklYTUU6IGltcGxlbWVudC4KLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOwot
fQotCi1QYXNzUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gR3JhcGhpY3NDb250ZXh0M0Q6OmdldFZl
cnRleEF0dHJpYmZ2KHVuc2lnbmVkIGxvbmcgaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25n
IHBuYW1lKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliZnYodW5zaWdu
ZWQgbG9uZyBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGxvbmcgcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmbG9hdCogdmFsdWUpCiB7Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudC4KLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOwotfQotCi1pbnQgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldFZlcnRleEF0dHJpYmkodW5zaWduZWQgbG9uZyBpbmRleCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHBuYW1lKQotewotICAgIC8v
IEZJWE1FOiBpbXBsZW1lbnQuCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsK
KyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBnbEdldFZlcnRleEF0dHJpYmZ2KGluZGV4
LCBwbmFtZSwgdmFsdWUpOwogfQogCi1QYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IEdyYXBoaWNz
Q29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJpdih1bnNpZ25lZCBsb25nIGluZGV4LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGxvbmcgcG5hbWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhB
dHRyaWJpdih1bnNpZ25lZCBsb25nIGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCogdmFsdWUpCiB7Ci0gICAgLy8gRklYTUU6IGltcGxl
bWVudC4KLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOworICAgIGdsR2V0VmVydGV4QXR0cmliaXYoaW5kZXgsIHBuYW1lLCB2YWx1
ZSk7CiB9CiAKIGxvbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYk9mZnNldCh1
bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBuYW1lKQpAQCAtMTc4MCw3ICsxNjIx
LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6aXNFbmFibGVkKHVuc2lnbgogYm9vbCBHcmFw
aGljc0NvbnRleHQzRDo6aXNGcmFtZWJ1ZmZlcihXZWJHTEZyYW1lYnVmZmVyKiBmcmFtZWJ1ZmZl
cikKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICByZXR1cm4gZ2xJc0ZyYW1lYnVm
ZmVyKEVYVFJBQ1QoZnJhbWVidWZmZXIpKTsKKyAgICByZXR1cm4gZ2xJc0ZyYW1lYnVmZmVyRVhU
KEVYVFJBQ1QoZnJhbWVidWZmZXIpKTsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6aXNQ
cm9ncmFtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSkKQEAgLTE3OTIsNyArMTYzMyw3IEBAIGJvb2wg
R3JhcGhpY3NDb250ZXh0M0Q6OmlzUHJvZ3JhbShXZWJHTFAKIGJvb2wgR3JhcGhpY3NDb250ZXh0
M0Q6OmlzUmVuZGVyYnVmZmVyKFdlYkdMUmVuZGVyYnVmZmVyKiByZW5kZXJidWZmZXIpCiB7CiAg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgcmV0dXJuIGdsSXNSZW5kZXJidWZmZXIoRVhU
UkFDVChyZW5kZXJidWZmZXIpKTsKKyAgICByZXR1cm4gZ2xJc1JlbmRlcmJ1ZmZlckVYVChFWFRS
QUNUKHJlbmRlcmJ1ZmZlcikpOwogfQogCiBib29sIEdyYXBoaWNzQ29udGV4dDNEOjppc1NoYWRl
cihXZWJHTFNoYWRlciogc2hhZGVyKQpAQCAtMTg0MSw3ICsxNjgyLDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6cmVsZWFzZVNoYWRlckNvbQogewogfQogCi1HTF9TQU1FX01FVEhPRF80KFJl
bmRlcmJ1ZmZlclN0b3JhZ2UsIHJlbmRlcmJ1ZmZlclN0b3JhZ2UsIHVuc2lnbmVkIGxvbmcsIHVu
c2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpCitHTF9TQU1FX01FVEhP
RF80KFJlbmRlcmJ1ZmZlclN0b3JhZ2VFWFQsIHJlbmRlcmJ1ZmZlclN0b3JhZ2UsIHVuc2lnbmVk
IGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpCiAKIEdM
X1NBTUVfTUVUSE9EXzIoU2FtcGxlQ292ZXJhZ2UsIHNhbXBsZUNvdmVyYWdlLCBkb3VibGUsIGJv
b2wpCiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDUxMjI2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTQgQEAKKzIwMDktMTEtMTkgIEtlbm5ldGggUnVz
c2VsbCAgPGtickBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIENoYW5nZSBnZXQuLi4gY2FsbHMgdG8gbGF0ZXN0IHNwZWMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMDkxCisKKyAgICAg
ICAgUmVtb3ZlZCBvbGQgdmVyc2lvbnMgb2YgZ2V0IGNhbGxzIG9uIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dCBhbmQKKyAgICAgICAgYWRkZWQgbmV3IG9uZXMgcGVyIHNwZWMgcmV0dXJuaW5nICJhbnki
LiBOZXcgY29kZSBzaW1wbGlmaWVzCisgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEIGFuZCBmaXhl
cyBwcmV2aW91c2x5IHVuaW1wbGVtZW50ZWQgcm91dGluZXMuCisgICAgICAgIEFkZGVkIGN1c3Rv
bSBKUyBhbmQgVjggYmluZGluZ3MuIEFkZGVkIGV4aGF1c3RpdmUgdGVzdCBjYXNlCisgICAgICAg
IGV4ZXJjaXNpbmcgYWxsIG5ldyBjb2RlIHBhdGhzLiBVcGRhdGVkIHByZWV4aXN0aW5nIHRlc3Qg
Y2FzZXMgZm9yCisgICAgICAgIG5ldyBBUElzLiBGaXhlZCBwcmVleGlzdGluZyBidWdzIGluIFdl
YktpdCdzIGFuZCBDaHJvbWUncyBXZWJHTAorICAgICAgICBpbXBsZW1lbnRhdGlvbnMuIENsZWFu
ZWQgdXAgYSBjb3VwbGUgb2YgYXJlYXMgZnJvbSByZWNlbnQgQ2FudmFzCisgICAgICAgIC0+IFdl
YkdMIHJlbmFtaW5nIGFuZCBkZWxldGVkIG9ic29sZXRlIENhbnZhc051bWJlckFycmF5LgorCisg
ICAgICAgIFJhbiBXZWJHTCBsYXlvdXQgdGVzdHMgaW4gV2ViS2l0IChjbGVhbikgYW5kIENocm9t
ZSAoY291cGxlIG9mCisgICAgICAgIHByZWV4aXN0aW5nIGtub3duIGZhaWx1cmVzKSBhbmQgbWFu
dWFsIFdlYkdMIHRlc3RzIGluIGJvdGgKKyAgICAgICAgYnJvd3NlcnMuCisKKyAgICAgICAgVGVz
dDogZmFzdC9jYW52YXMvd2ViZ2wvZ2wtb2JqZWN0LWdldC1jYWxscy5odG1sCisKKyAgICAgICAg
KiBmYXN0L2NhbnZhcy93ZWJnbC9nbC1nZXQtY2FsbHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGZhc3QvY2FudmFzL3dlYmdsL2dsLWdldC1jYWxscy5odG1sOgorICAgICAgICAqIGZhc3QvY2Fu
dmFzL3dlYmdsL2dsLW9iamVjdC1nZXQtY2FsbHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9nbC1vYmplY3QtZ2V0LWNhbGxzLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2luY29ycmVjdC1jb250ZXh0LW9iamVjdC1iZWhh
dmlvdXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL251bGwtb2Jq
ZWN0LWJlaGF2aW91ci1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wv
cmVzb3VyY2VzL2Jvb2xVbmlmb3JtU2hhZGVyLnZlcnQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
Y2FudmFzL3dlYmdsL3Jlc291cmNlcy9mbG9hdFVuaWZvcm1TaGFkZXIudmVydDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL2ludFVuaWZvcm1TaGFkZXIudmVy
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL21hdFVuaWZv
cm1TaGFkZXIudmVydDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3Vy
Y2VzL25vb3BVbmlmb3JtU2hhZGVyLmZyYWc6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFz
L3dlYmdsL3Jlc291cmNlcy91dGlsczNkLmpzOgorICAgICAgICAoaW5pdFdlYkdMKToKKyAgICAg
ICAgKGxvYWRTaGFkZXIpOgorICAgICAgICAoRnJhbWVyYXRlLnByb3RvdHlwZS5zbmFwc2hvdCk6
CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsLXRlc3QuanM6Cisg
ICAgICAgIChsb2FkUHJvZ3JhbSk6CisgICAgICAgIChsb2FkU3RhbmRhcmRWZXJ0ZXhTaGFkZXIp
OgorICAgICAgICAobG9hZFZlcnRleFNoYWRlcik6CisgICAgICAgIChsb2FkU3RhbmRhcmRGcmFn
bWVudFNoYWRlcik6CisgICAgICAgIChsb2FkRnJhZ21lbnRTaGFkZXIpOgorICAgICAgICAqIGZh
c3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9nbC1vYmplY3QtZ2V0LWNhbGxzLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvaW5jb3JyZWN0LWNv
bnRleHQtb2JqZWN0LWJlaGF2aW91ci5qczoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9z
Y3JpcHQtdGVzdHMvbnVsbC1vYmplY3QtYmVoYXZpb3VyLmpzOgorICAgICAgICAqIGZhc3QvY2Fu
dmFzL3dlYmdsL3RyaWFuZ2xlLmh0bWw6CisgICAgICAgICogZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanM6CisgICAgICAgIChzaG91bGRCZU5vblplcm8pOgorICAgICAgICAoc2hvdWxk
QmVOb25OdWxsKToKKwogMjAwOS0xMS0xOSAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy93ZWJnbC9nbC1nZXQtY2FsbHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLWdldC1jYWxscy1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDUxMjI2KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtZ2V0
LWNhbGxzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTMsNjAgKzEzLDYxIEBAIENv
bnRleHQgY29udGFpbnMgZ2V0RXJyb3IKIFBBU1MgY29udGV4dCBjb250YWlucyBnZXRFcnJvcgog
CiBDaGVjayBkZWZhdWx0IHZhbHVlcwotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5B
Q1RJVkVfVEVYVFVSRSkgaXMgY29udGV4dC5URVhUVVJFMAotUEFTUyBjb250ZXh0LmdldEludGVn
ZXIoY29udGV4dC5BTElBU0VEX0xJTkVfV0lEVEhfUkFOR0UpIGlzIDEKLVBBU1MgY29udGV4dC5n
ZXRJbnRlZ2VyKGNvbnRleHQuQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFKSBpcyAxCi1QQVNTIGNv
bnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkFSUkFZX0JVRkZFUl9CSU5ESU5HKSBpcyAwCi1QQVNT
IGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkJMRU5EKSBpcyAwCi1QQVNTIGNvbnRleHQuZ2V0
SW50ZWdlcihjb250ZXh0LkJMRU5EX0NPTE9SKSBpcyAwCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdl
cihjb250ZXh0LkJMRU5EX0RTVF9BTFBIQSkgaXMgMAotUEFTUyBjb250ZXh0LmdldEludGVnZXIo
Y29udGV4dC5CTEVORF9EU1RfUkdCKSBpcyAwCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250
ZXh0LkJMRU5EX0VRVUFUSU9OX0FMUEhBKSBpcyBjb250ZXh0LkZVTkNfQURECi1QQVNTIGNvbnRl
eHQuZ2V0SW50ZWdlcihjb250ZXh0LkJMRU5EX0VRVUFUSU9OX1JHQikgaXMgY29udGV4dC5GVU5D
X0FERAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5CTEVORF9TUkNfQUxQSEEpIGlz
IDEKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuQkxFTkRfU1JDX1JHQikgaXMgMQot
UEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5DT0xPUl9DTEVBUl9WQUxVRSkgaXMgMAot
UEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5DT0xPUl9XUklURU1BU0spIGlzIDEKLVBB
U1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuQ1VMTF9GQUNFKSBpcyAwCi1QQVNTIGNvbnRl
eHQuZ2V0SW50ZWdlcihjb250ZXh0LkNVTExfRkFDRV9NT0RFKSBpcyBjb250ZXh0LkJBQ0sKLVBB
U1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuQ1VSUkVOVF9QUk9HUkFNKSBpcyAwCi1QQVNT
IGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkRFUFRIX0ZVTkMpIGlzIGNvbnRleHQuTEVTUwot
UEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5ERVBUSF9SQU5HRSkgaXMgMAotUEFTUyBj
b250ZXh0LmdldEludGVnZXIoY29udGV4dC5ERVBUSF9URVNUKSBpcyAwCi1QQVNTIGNvbnRleHQu
Z2V0SW50ZWdlcihjb250ZXh0LkRFUFRIX1dSSVRFTUFTSykgaXMgMQotUEFTUyBjb250ZXh0Lmdl
dEludGVnZXIoY29udGV4dC5ESVRIRVIpIGlzIDEKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNv
bnRleHQuRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElORykgaXMgMAotUEFTUyBjb250ZXh0Lmdl
dEludGVnZXIoY29udGV4dC5GUk9OVF9GQUNFKSBpcyBjb250ZXh0LkNDVwotUEFTUyBjb250ZXh0
LmdldEludGVnZXIoY29udGV4dC5HRU5FUkFURV9NSVBNQVBfSElOVCkgaXMgY29udGV4dC5ET05U
X0NBUkUKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuTElORV9XSURUSCkgaXMgMQot
UEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5QT0xZR09OX09GRlNFVF9GQUNUT1IpIGlz
IDAKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuUE9MWUdPTl9PRkZTRVRfRklMTCkg
aXMgMAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5QT0xZR09OX09GRlNFVF9VTklU
UykgaXMgMAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5SRU5ERVJCVUZGRVJfQklO
RElOR19FWFQpIGlzIDAKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuU0FNUExFX0NP
VkVSQUdFX0lOVkVSVCkgaXMgMAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TQU1Q
TEVfQ09WRVJBR0VfVkFMVUUpIGlzIDEKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQu
U0NJU1NPUl9CT1gpIGlzIDAKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuU0NJU1NP
Ul9URVNUKSBpcyAwCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlNURU5DSUxfQkFD
S19GQUlMKSBpcyBjb250ZXh0LktFRVAKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQu
U1RFTkNJTF9CQUNLX0ZVTkMpIGlzIGNvbnRleHQuQUxXQVlTCi1QQVNTIGNvbnRleHQuZ2V0SW50
ZWdlcihjb250ZXh0LlNURU5DSUxfQkFDS19QQVNTX0RFUFRIX0ZBSUwpIGlzIGNvbnRleHQuS0VF
UAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVOQ0lMX0JBQ0tfUEFTU19ERVBU
SF9QQVNTKSBpcyBjb250ZXh0LktFRVAKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQu
U1RFTkNJTF9CQUNLX1JFRikgaXMgMAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5T
VEVOQ0lMX0JBQ0tfVkFMVUVfTUFTSykgaXMgLTEKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNv
bnRleHQuU1RFTkNJTF9CQUNLX1dSSVRFTUFTSykgaXMgLTEKLVBBU1MgY29udGV4dC5nZXRJbnRl
Z2VyKGNvbnRleHQuU1RFTkNJTF9CSVRTKSBpcyAwCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihj
b250ZXh0LlNURU5DSUxfQ0xFQVJfVkFMVUUpIGlzIDAKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2Vy
KGNvbnRleHQuU1RFTkNJTF9GQUlMKSBpcyBjb250ZXh0LktFRVAKLVBBU1MgY29udGV4dC5nZXRJ
bnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9GVU5DKSBpcyBjb250ZXh0LkFMV0FZUwotUEFTUyBjb250
ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVOQ0lMX1BBU1NfREVQVEhfRkFJTCkgaXMgY29udGV4
dC5LRUVQCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlNURU5DSUxfUEFTU19ERVBU
SF9QQVNTKSBpcyBjb250ZXh0LktFRVAKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQu
U1RFTkNJTF9SRUYpIGlzIDAKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJ
TF9URVNUKSBpcyAwCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlNURU5DSUxfVkFM
VUVfTUFTSykgaXMgLTEKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9X
UklURU1BU0spIGlzIC0xCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlRFWFRVUkVf
QklORElOR18yRCkgaXMgMAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5URVhUVVJF
X0JJTkRJTkdfQ1VCRV9NQVApIGlzIDAKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQu
VklFV1BPUlQpIGlzIDAKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5BQ1RJVkVf
VEVYVFVSRSkgaXMgY29udGV4dC5URVhUVVJFMAorUEFTUyAoY29udGV4dC5nZXRQYXJhbWV0ZXIo
Y29udGV4dC5BTElBU0VEX0xJTkVfV0lEVEhfUkFOR0UpWzBdID09IDEpIHx8IChjb250ZXh0Lmdl
dFBhcmFtZXRlcihjb250ZXh0LkFMSUFTRURfTElORV9XSURUSF9SQU5HRSlbMV0gPT0gMSkgaXMg
dHJ1ZQorUEFTUyAoY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5BTElBU0VEX1BPSU5UX1NJ
WkVfUkFOR0UpWzBdID09IDEpIHx8IChjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkFMSUFT
RURfUE9JTlRfU0laRV9SQU5HRSlbMV0gPT0gMSkgaXMgdHJ1ZQorUEFTUyBjb250ZXh0LmdldFBh
cmFtZXRlcihjb250ZXh0LkFSUkFZX0JVRkZFUl9CSU5ESU5HKSBpcyBudWxsCitQQVNTIGNvbnRl
eHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQkxFTkQpIGlzIGZhbHNlCitQQVNTIGNvbnRleHQuZ2V0
UGFyYW1ldGVyKGNvbnRleHQuQkxFTkRfQ09MT1IpIGlzIFswLCAwLCAwLCAwXQorUEFTUyBjb250
ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkJMRU5EX0RTVF9BTFBIQSkgaXMgMAorUEFTUyBjb250
ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkJMRU5EX0RTVF9SR0IpIGlzIDAKK1BBU1MgY29udGV4
dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5CTEVORF9FUVVBVElPTl9BTFBIQSkgaXMgY29udGV4dC5G
VU5DX0FERAorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkJMRU5EX0VRVUFUSU9O
X1JHQikgaXMgY29udGV4dC5GVU5DX0FERAorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250
ZXh0LkJMRU5EX1NSQ19BTFBIQSkgaXMgMQorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250
ZXh0LkJMRU5EX1NSQ19SR0IpIGlzIDEKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4
dC5DT0xPUl9DTEVBUl9WQUxVRSkgaXMgWzAsIDAsIDAsIDBdCitQQVNTIGNvbnRleHQuZ2V0UGFy
YW1ldGVyKGNvbnRleHQuQ09MT1JfV1JJVEVNQVNLKSBpcyBbMSwgMSwgMSwgMV0KK1BBU1MgY29u
dGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5DVUxMX0ZBQ0UpIGlzIGZhbHNlCitQQVNTIGNvbnRl
eHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQ1VMTF9GQUNFX01PREUpIGlzIGNvbnRleHQuQkFDSwor
UEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkNVUlJFTlRfUFJPR1JBTSkgaXMgbnVs
bAorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkRFUFRIX0ZVTkMpIGlzIGNvbnRl
eHQuTEVTUworUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkRFUFRIX1JBTkdFKSBp
cyBbMCwgMV0KK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5ERVBUSF9URVNUKSBp
cyBmYWxzZQorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkRFUFRIX1dSSVRFTUFT
SykgaXMgdHJ1ZQorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkRJVEhFUikgaXMg
dHJ1ZQorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkVMRU1FTlRfQVJSQVlfQlVG
RkVSX0JJTkRJTkcpIGlzIG51bGwKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5G
Uk9OVF9GQUNFKSBpcyBjb250ZXh0LkNDVworUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250
ZXh0LkdFTkVSQVRFX01JUE1BUF9ISU5UKSBpcyBjb250ZXh0LkRPTlRfQ0FSRQorUEFTUyBjb250
ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkxJTkVfV0lEVEgpIGlzIDEKK1BBU1MgY29udGV4dC5n
ZXRQYXJhbWV0ZXIoY29udGV4dC5QT0xZR09OX09GRlNFVF9GQUNUT1IpIGlzIDAKK1BBU1MgY29u
dGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5QT0xZR09OX09GRlNFVF9GSUxMKSBpcyBmYWxzZQor
UEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlBPTFlHT05fT0ZGU0VUX1VOSVRTKSBp
cyAwCitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuUkVOREVSQlVGRkVSX0JJTkRJ
TkcpIGlzIG51bGwKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TQU1QTEVfQ09W
RVJBR0VfSU5WRVJUKSBpcyBmYWxzZQorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0
LlNBTVBMRV9DT1ZFUkFHRV9WQUxVRSkgaXMgMQorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihj
b250ZXh0LlNDSVNTT1JfQk9YKVswXSBpcyAwCitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNv
bnRleHQuU0NJU1NPUl9CT1gpWzFdIGlzIDAKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29u
dGV4dC5TQ0lTU09SX1RFU1QpIGlzIGZhbHNlCitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNv
bnRleHQuU1RFTkNJTF9CQUNLX0ZBSUwpIGlzIGNvbnRleHQuS0VFUAorUEFTUyBjb250ZXh0Lmdl
dFBhcmFtZXRlcihjb250ZXh0LlNURU5DSUxfQkFDS19GVU5DKSBpcyBjb250ZXh0LkFMV0FZUwor
UEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5DSUxfQkFDS19QQVNTX0RFUFRI
X0ZBSUwpIGlzIGNvbnRleHQuS0VFUAorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0
LlNURU5DSUxfQkFDS19QQVNTX0RFUFRIX1BBU1MpIGlzIGNvbnRleHQuS0VFUAorUEFTUyBjb250
ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5DSUxfQkFDS19SRUYpIGlzIDAKK1BBU1MgY29u
dGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX0JBQ0tfVkFMVUVfTUFTSykgaXMgMHhG
RkZGRkZGRgorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5DSUxfQkFDS19X
UklURU1BU0spIGlzIDB4RkZGRkZGRkYKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4
dC5TVEVOQ0lMX0JJVFMpIGlzIDAKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5T
VEVOQ0lMX0NMRUFSX1ZBTFVFKSBpcyAwCitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRl
eHQuU1RFTkNJTF9GQUlMKSBpcyBjb250ZXh0LktFRVAKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0
ZXIoY29udGV4dC5TVEVOQ0lMX0ZVTkMpIGlzIGNvbnRleHQuQUxXQVlTCitQQVNTIGNvbnRleHQu
Z2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9QQVNTX0RFUFRIX0ZBSUwpIGlzIGNvbnRleHQu
S0VFUAorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5DSUxfUEFTU19ERVBU
SF9QQVNTKSBpcyBjb250ZXh0LktFRVAKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4
dC5TVEVOQ0lMX1JFRikgaXMgMAorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNU
RU5DSUxfVEVTVCkgaXMgZmFsc2UKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5T
VEVOQ0lMX1ZBTFVFX01BU0spIGlzIDB4RkZGRkZGRkYKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0
ZXIoY29udGV4dC5TVEVOQ0lMX1dSSVRFTUFTSykgaXMgMHhGRkZGRkZGRgorUEFTUyBjb250ZXh0
LmdldFBhcmFtZXRlcihjb250ZXh0LlRFWFRVUkVfQklORElOR18yRCkgaXMgbnVsbAorUEFTUyBj
b250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlRFWFRVUkVfQklORElOR19DVUJFX01BUCkgaXMg
bnVsbAorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlZJRVdQT1JUKSBpcyBbMCwg
MCwgMiwgMl0KIAogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC1nZXQtY2FsbHMuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC1nZXQtY2FsbHMuaHRtbAkocmV2aXNp
b24gNTEyMjYpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC1nZXQtY2FsbHMu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtNyw3ICs3LDcgQEAKIDxib2R5PgogPGRpdiBpZD0iZGVz
Y3JpcHRpb24iPjwvZGl2PgogPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08Y2FudmFzIGlkPSJj
YW52YXMiPiA8L2NhbnZhcz4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9IjIiIGhlaWdodD0i
MiI+IDwvY2FudmFzPgogCiA8c2NyaXB0PgogCkBAIC0zOCw2MCArMzgsNjEgQEAgZWxzZSB7CiAK
ICAgICBkZWJ1ZygiIik7CiAgICAgZGVidWcoIkNoZWNrIGRlZmF1bHQgdmFsdWVzIik7Ci0gICAg
c2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkFDVElWRV9URVhUVVJFKScsICdj
b250ZXh0LlRFWFRVUkUwJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250
ZXh0LkFMSUFTRURfTElORV9XSURUSF9SQU5HRSknLCAnMScpOwotICAgIHNob3VsZEJlKCdjb250
ZXh0LmdldEludGVnZXIoY29udGV4dC5BTElBU0VEX1BPSU5UX1NJWkVfUkFOR0UpJywgJzEnKTsK
LSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuQVJSQVlfQlVGRkVSX0JJ
TkRJTkcpJywgJzAnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQu
QkxFTkQpJywgJzAnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQu
QkxFTkRfQ09MT1IpJywgJzAnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNv
bnRleHQuQkxFTkRfRFNUX0FMUEhBKScsICcwJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0
SW50ZWdlcihjb250ZXh0LkJMRU5EX0RTVF9SR0IpJywgJzAnKTsKLSAgICBzaG91bGRCZSgnY29u
dGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuQkxFTkRfRVFVQVRJT05fQUxQSEEpJywgJ2NvbnRleHQu
RlVOQ19BREQnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuQkxF
TkRfRVFVQVRJT05fUkdCKScsICdjb250ZXh0LkZVTkNfQUREJyk7Ci0gICAgc2hvdWxkQmUoJ2Nv
bnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkJMRU5EX1NSQ19BTFBIQSknLCAnMScpOwotICAgIHNo
b3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5CTEVORF9TUkNfUkdCKScsICcxJyk7
Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkNPTE9SX0NMRUFSX1ZB
TFVFKScsICcwJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkNP
TE9SX1dSSVRFTUFTSyknLCAnMScpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIo
Y29udGV4dC5DVUxMX0ZBQ0UpJywgJzAnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRl
Z2VyKGNvbnRleHQuQ1VMTF9GQUNFX01PREUpJywgJ2NvbnRleHQuQkFDSycpOwotICAgIHNob3Vs
ZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5DVVJSRU5UX1BST0dSQU0pJywgJzAnKTsK
LSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuREVQVEhfRlVOQyknLCAn
Y29udGV4dC5MRVNTJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0
LkRFUFRIX1JBTkdFKScsICcwJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihj
b250ZXh0LkRFUFRIX1RFU1QpJywgJzAnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRl
Z2VyKGNvbnRleHQuREVQVEhfV1JJVEVNQVNLKScsICcxJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRl
eHQuZ2V0SW50ZWdlcihjb250ZXh0LkRJVEhFUiknLCAnMScpOwotICAgIHNob3VsZEJlKCdjb250
ZXh0LmdldEludGVnZXIoY29udGV4dC5FTEVNRU5UX0FSUkFZX0JVRkZFUl9CSU5ESU5HKScsICcw
Jyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkZST05UX0ZBQ0Up
JywgJ2NvbnRleHQuQ0NXJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250
ZXh0LkdFTkVSQVRFX01JUE1BUF9ISU5UKScsICdjb250ZXh0LkRPTlRfQ0FSRScpOwotICAgIHNo
b3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5MSU5FX1dJRFRIKScsICcxJyk7Ci0g
ICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlBPTFlHT05fT0ZGU0VUX0ZB
Q1RPUiknLCAnMCcpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5Q
T0xZR09OX09GRlNFVF9GSUxMKScsICcwJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50
ZWdlcihjb250ZXh0LlBPTFlHT05fT0ZGU0VUX1VOSVRTKScsICcwJyk7Ci0gICAgc2hvdWxkQmUo
J2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlJFTkRFUkJVRkZFUl9CSU5ESU5HX0VYVCknLCAn
MCcpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TQU1QTEVfQ09W
RVJBR0VfSU5WRVJUKScsICcwJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihj
b250ZXh0LlNBTVBMRV9DT1ZFUkFHRV9WQUxVRSknLCAnMScpOwotICAgIHNob3VsZEJlKCdjb250
ZXh0LmdldEludGVnZXIoY29udGV4dC5TQ0lTU09SX0JPWCknLCAnMCcpOwotICAgIHNob3VsZEJl
KCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TQ0lTU09SX1RFU1QpJywgJzAnKTsKLSAgICBz
aG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9CQUNLX0ZBSUwpJywg
J2NvbnRleHQuS0VFUCcpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4
dC5TVEVOQ0lMX0JBQ0tfRlVOQyknLCAnY29udGV4dC5BTFdBWVMnKTsKLSAgICBzaG91bGRCZSgn
Y29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfRkFJTCkn
LCAnY29udGV4dC5LRUVQJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250
ZXh0LlNURU5DSUxfQkFDS19QQVNTX0RFUFRIX1BBU1MpJywgJ2NvbnRleHQuS0VFUCcpOwotICAg
IHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVOQ0lMX0JBQ0tfUkVGKScs
ICcwJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlNURU5DSUxf
QkFDS19WQUxVRV9NQVNLKScsICctMScpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVn
ZXIoY29udGV4dC5TVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLKScsICctMScpOwotICAgIHNob3VsZEJl
KCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVOQ0lMX0JJVFMpJywgJzAnKTsKLSAgICBz
aG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9DTEVBUl9WQUxVRSkn
LCAnMCcpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVOQ0lM
X0ZBSUwpJywgJ2NvbnRleHQuS0VFUCcpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVn
ZXIoY29udGV4dC5TVEVOQ0lMX0ZVTkMpJywgJ2NvbnRleHQuQUxXQVlTJyk7Ci0gICAgc2hvdWxk
QmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlNURU5DSUxfUEFTU19ERVBUSF9GQUlMKScs
ICdjb250ZXh0LktFRVAnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRl
eHQuU1RFTkNJTF9QQVNTX0RFUFRIX1BBU1MpJywgJ2NvbnRleHQuS0VFUCcpOwotICAgIHNob3Vs
ZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVOQ0lMX1JFRiknLCAnMCcpOwotICAg
IHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVOQ0lMX1RFU1QpJywgJzAn
KTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9WQUxV
RV9NQVNLKScsICctMScpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4
dC5TVEVOQ0lMX1dSSVRFTUFTSyknLCAnLTEnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJ
bnRlZ2VyKGNvbnRleHQuVEVYVFVSRV9CSU5ESU5HXzJEKScsICcwJyk7Ci0gICAgc2hvdWxkQmUo
J2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlRFWFRVUkVfQklORElOR19DVUJFX01BUCknLCAn
MCcpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5WSUVXUE9SVCkn
LCAnMCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkFDVElW
RV9URVhUVVJFKScsICdjb250ZXh0LlRFWFRVUkUwJyk7CisgICAgc2hvdWxkQmUoJyhjb250ZXh0
LmdldFBhcmFtZXRlcihjb250ZXh0LkFMSUFTRURfTElORV9XSURUSF9SQU5HRSlbMF0gPT0gMSkg
fHwgKGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdF
KVsxXSA9PSAxKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJyhjb250ZXh0LmdldFBhcmFtZXRl
cihjb250ZXh0LkFMSUFTRURfUE9JTlRfU0laRV9SQU5HRSlbMF0gPT0gMSkgfHwgKGNvbnRleHQu
Z2V0UGFyYW1ldGVyKGNvbnRleHQuQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFKVsxXSA9PSAxKScs
ICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQVJS
QVlfQlVGRkVSX0JJTkRJTkcpJywgJ251bGwnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQ
YXJhbWV0ZXIoY29udGV4dC5CTEVORCknLCAnZmFsc2UnKTsKKyAgICBzaG91bGRCZSgnY29udGV4
dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5CTEVORF9DT0xPUiknLCAnWzAsIDAsIDAsIDBdJyk7Cisg
ICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQkxFTkRfRFNUX0FMUEhB
KScsICcwJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQkxF
TkRfRFNUX1JHQiknLCAnMCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihj
b250ZXh0LkJMRU5EX0VRVUFUSU9OX0FMUEhBKScsICdjb250ZXh0LkZVTkNfQUREJyk7CisgICAg
c2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQkxFTkRfRVFVQVRJT05fUkdC
KScsICdjb250ZXh0LkZVTkNfQUREJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1l
dGVyKGNvbnRleHQuQkxFTkRfU1JDX0FMUEhBKScsICcxJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRl
eHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQkxFTkRfU1JDX1JHQiknLCAnMScpOworICAgIHNob3Vs
ZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkNPTE9SX0NMRUFSX1ZBTFVFKScsICdb
MCwgMCwgMCwgMF0nKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4
dC5DT0xPUl9XUklURU1BU0spJywgJ1sxLCAxLCAxLCAxXScpOworICAgIHNob3VsZEJlKCdjb250
ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkNVTExfRkFDRSknLCAnZmFsc2UnKTsKKyAgICBzaG91
bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5DVUxMX0ZBQ0VfTU9ERSknLCAnY29u
dGV4dC5CQUNLJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQu
Q1VSUkVOVF9QUk9HUkFNKScsICdudWxsJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFy
YW1ldGVyKGNvbnRleHQuREVQVEhfRlVOQyknLCAnY29udGV4dC5MRVNTJyk7CisgICAgc2hvdWxk
QmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuREVQVEhfUkFOR0UpJywgJ1swLCAxXScp
OworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkRFUFRIX1RFU1Qp
JywgJ2ZhbHNlJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQu
REVQVEhfV1JJVEVNQVNLKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFy
YW1ldGVyKGNvbnRleHQuRElUSEVSKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQu
Z2V0UGFyYW1ldGVyKGNvbnRleHQuRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElORyknLCAnbnVs
bCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkZST05UX0ZB
Q0UpJywgJ2NvbnRleHQuQ0NXJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVy
KGNvbnRleHQuR0VORVJBVEVfTUlQTUFQX0hJTlQpJywgJ2NvbnRleHQuRE9OVF9DQVJFJyk7Cisg
ICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuTElORV9XSURUSCknLCAn
MScpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlBPTFlHT05f
T0ZGU0VUX0ZBQ1RPUiknLCAnMCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRl
cihjb250ZXh0LlBPTFlHT05fT0ZGU0VUX0ZJTEwpJywgJ2ZhbHNlJyk7CisgICAgc2hvdWxkQmUo
J2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuUE9MWUdPTl9PRkZTRVRfVU5JVFMpJywgJzAn
KTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5SRU5ERVJCVUZG
RVJfQklORElORyknLCAnbnVsbCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRl
cihjb250ZXh0LlNBTVBMRV9DT1ZFUkFHRV9JTlZFUlQpJywgJ2ZhbHNlJyk7CisgICAgc2hvdWxk
QmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU0FNUExFX0NPVkVSQUdFX1ZBTFVFKScs
ICcxJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU0NJU1NP
Ul9CT1gpWzBdJywgJzAnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29u
dGV4dC5TQ0lTU09SX0JPWClbMV0nLCAnMCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBh
cmFtZXRlcihjb250ZXh0LlNDSVNTT1JfVEVTVCknLCAnZmFsc2UnKTsKKyAgICBzaG91bGRCZSgn
Y29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX0JBQ0tfRkFJTCknLCAnY29udGV4
dC5LRUVQJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RF
TkNJTF9CQUNLX0ZVTkMpJywgJ2NvbnRleHQuQUxXQVlTJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRl
eHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfRkFJTCknLCAn
Y29udGV4dC5LRUVQJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRl
eHQuU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTUyknLCAnY29udGV4dC5LRUVQJyk7CisgICAg
c2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9CQUNLX1JFRikn
LCAnMCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5D
SUxfQkFDS19WQUxVRV9NQVNLKScsICcweEZGRkZGRkZGJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRl
eHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9CQUNLX1dSSVRFTUFTSyknLCAnMHhGRkZG
RkZGRicpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5D
SUxfQklUUyknLCAnMCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250
ZXh0LlNURU5DSUxfQ0xFQVJfVkFMVUUpJywgJzAnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5n
ZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX0ZBSUwpJywgJ2NvbnRleHQuS0VFUCcpOworICAg
IHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5DSUxfRlVOQyknLCAn
Y29udGV4dC5BTFdBWVMnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29u
dGV4dC5TVEVOQ0lMX1BBU1NfREVQVEhfRkFJTCknLCAnY29udGV4dC5LRUVQJyk7CisgICAgc2hv
dWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9QQVNTX0RFUFRIX1BB
U1MpJywgJ2NvbnRleHQuS0VFUCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRl
cihjb250ZXh0LlNURU5DSUxfUkVGKScsICcwJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0
UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9URVNUKScsICdmYWxzZScpOworICAgIHNob3VsZEJl
KCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5DSUxfVkFMVUVfTUFTSyknLCAnMHhG
RkZGRkZGRicpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNU
RU5DSUxfV1JJVEVNQVNLKScsICcweEZGRkZGRkZGJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQu
Z2V0UGFyYW1ldGVyKGNvbnRleHQuVEVYVFVSRV9CSU5ESU5HXzJEKScsICdudWxsJyk7CisgICAg
c2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuVEVYVFVSRV9CSU5ESU5HX0NV
QkVfTUFQKScsICdudWxsJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNv
bnRleHQuVklFV1BPUlQpJywgJ1swLCAwLCAyLCAyXScpOwogfQogCiBkZWJ1ZygiIik7CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC1vYmplY3QtZ2V0LWNhbGxzLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC1v
YmplY3QtZ2V0LWNhbGxzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3dlYmdsL2dsLW9iamVjdC1nZXQtY2FsbHMtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDgwIEBACitUZXN0IG9mIGdldCBjYWxscyBhZ2FpbnN0IEdMIG9i
amVjdHMgbGlrZSBnZXRCdWZmZXJQYXJhbWV0ZXIsIGV0Yy4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCitQQVNTIGdsLmdldEJ1ZmZlclBhcmFtZXRlcihnbC5BUlJBWV9CVUZGRVIsIGds
LkJVRkZFUl9TSVpFKSBpcyAxNgorUEFTUyBnbC5nZXRCdWZmZXJQYXJhbWV0ZXIoZ2wuQVJSQVlf
QlVGRkVSLCBnbC5CVUZGRVJfVVNBR0UpIGlzIGdsLkRZTkFNSUNfRFJBVworUEFTUyBnbC5nZXRF
cnJvcigpIGlzIDAKK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyAwCitQQVNTIGdsLmdldEVycm9yKCkg
aXMgMAorUEFTUyBnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSBpcyBn
bC5GUkFNRUJVRkZFUl9DT01QTEVURQorUEFTUyBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQ
YXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5GUkFNRUJV
RkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFKSBpcyBnbC5URVhUVVJFCitQQVNTIGdsLmdldEZy
YW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRU
QUNITUVOVDAsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUUpIGlzIG5vbi1u
dWxsLgorUEFTUyBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVC
VUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RF
WFRVUkVfTEVWRUwpIGlzIDAKK1BBU1MgZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1l
dGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuRlJBTUVCVUZGRVJf
QVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0UpIGlzIDAKK1BBU1MgZ2wuZ2V0RnJhbWVi
dWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5ERVBUSF9BVFRBQ0hN
RU5ULCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFKSBpcyBnbC5SRU5ERVJC
VUZGRVIKK1BBU1MgZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1F
QlVGRkVSLCBnbC5ERVBUSF9BVFRBQ0hNRU5ULCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09C
SkVDVF9OQU1FKSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihzdGFu
ZGFyZFByb2dyYW0sIGdsLkRFTEVURV9TVEFUVVMpIGlzIGZhbHNlCitQQVNTIGdsLmdldFByb2dy
YW1QYXJhbWV0ZXIoc3RhbmRhcmRQcm9ncmFtLCBnbC5MSU5LX1NUQVRVUykgaXMgdHJ1ZQorUEFT
UyB0eXBlb2YgZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihzdGFuZGFyZFByb2dyYW0sIGdsLlZBTElE
QVRFX1NUQVRVUykgaXMgImJvb2xlYW4iCitQQVNTIHR5cGVvZiBnbC5nZXRQcm9ncmFtUGFyYW1l
dGVyKHN0YW5kYXJkUHJvZ3JhbSwgZ2wuSU5GT19MT0dfTEVOR1RIKSBpcyAibnVtYmVyIgorUEFT
UyBnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHN0YW5kYXJkUHJvZ3JhbSwgZ2wuQVRUQUNIRURfU0hB
REVSUykgaXMgMgorUEFTUyBnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHN0YW5kYXJkUHJvZ3JhbSwg
Z2wuQUNUSVZFX0FUVFJJQlVURVMpIGlzIDIKK1BBU1MgZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihz
dGFuZGFyZFByb2dyYW0sIGdsLkFDVElWRV9BVFRSSUJVVEVfTUFYX0xFTkdUSCkgaXMgbm9uLXpl
cm8uCitQQVNTIGdsLmdldFByb2dyYW1QYXJhbWV0ZXIoc3RhbmRhcmRQcm9ncmFtLCBnbC5BQ1RJ
VkVfVU5JRk9STVMpIGlzIDEKK1BBU1MgZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihzdGFuZGFyZFBy
b2dyYW0sIGdsLkFDVElWRV9VTklGT1JNX01BWF9MRU5HVEgpIGlzIG5vbi16ZXJvLgorUEFTUyBn
bC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBnbC5SRU5ERVJCVUZG
RVJfV0lEVEgpIGlzIDIKK1BBU1MgZ2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKGdsLlJFTkRF
UkJVRkZFUiwgZ2wuUkVOREVSQlVGRkVSX0hFSUdIVCkgaXMgMgorUEFTUyBnbC5nZXRSZW5kZXJi
dWZmZXJQYXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBnbC5SRU5ERVJCVUZGRVJfSU5URVJOQUxf
Rk9STUFUKSBpcyBub24temVyby4KK1BBU1MgZ2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKGds
LlJFTkRFUkJVRkZFUiwgZ2wuUkVOREVSQlVGRkVSX0RFUFRIX1NJWkUpIGlzIG5vbi16ZXJvLgor
UEFTUyBnbC5nZXRFcnJvcigpIGlzIDAKK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyAwCitQQVNTIGds
LmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcihnbC5SRU5ERVJCVUZGRVIsIGdsLlJFTkRFUkJVRkZF
Ul9SRURfU0laRSkgaXMgbm9uLXplcm8uCitQQVNTIGdsLmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRl
cihnbC5SRU5ERVJCVUZGRVIsIGdsLlJFTkRFUkJVRkZFUl9HUkVFTl9TSVpFKSBpcyBub24temVy
by4KK1BBU1MgZ2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZFUiwgZ2wu
UkVOREVSQlVGRkVSX0JMVUVfU0laRSkgaXMgbm9uLXplcm8uCitQQVNTIGdsLmdldFJlbmRlcmJ1
ZmZlclBhcmFtZXRlcihnbC5SRU5ERVJCVUZGRVIsIGdsLlJFTkRFUkJVRkZFUl9BTFBIQV9TSVpF
KSBpcyBub24temVyby4KK1BBU1MgZ2wuZ2V0U2hhZGVyUGFyYW1ldGVyKHN0YW5kYXJkVmVydCwg
Z2wuU0hBREVSX1RZUEUpIGlzIGdsLlZFUlRFWF9TSEFERVIKK1BBU1MgZ2wuZ2V0U2hhZGVyUGFy
YW1ldGVyKHN0YW5kYXJkVmVydCwgZ2wuREVMRVRFX1NUQVRVUykgaXMgZmFsc2UKK1BBU1MgZ2wu
Z2V0U2hhZGVyUGFyYW1ldGVyKHN0YW5kYXJkVmVydCwgZ2wuQ09NUElMRV9TVEFUVVMpIGlzIHRy
dWUKK1BBU1MgdHlwZW9mIGdsLmdldFNoYWRlclBhcmFtZXRlcihzdGFuZGFyZFZlcnQsIGdsLklO
Rk9fTE9HX0xFTkdUSCkgaXMgIm51bWJlciIKK1BBU1MgZ2wuZ2V0U2hhZGVyUGFyYW1ldGVyKHN0
YW5kYXJkVmVydCwgZ2wuU0hBREVSX1NPVVJDRV9MRU5HVEgpIGlzIG5vbi16ZXJvLgorUEFTUyBn
bC5nZXRUZXhQYXJhbWV0ZXIoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSKSBp
cyBnbC5ORUFSRVNUCitQQVNTIGdsLmdldFRleFBhcmFtZXRlcihnbC5URVhUVVJFXzJELCBnbC5U
RVhUVVJFX01JTl9GSUxURVIpIGlzIGdsLk5FQVJFU1QKK1BBU1MgZ2wuZ2V0VGV4UGFyYW1ldGVy
KGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9TKSBpcyBnbC5DTEFNUF9UT19FREdFCitQ
QVNTIGdsLmdldFRleFBhcmFtZXRlcihnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfVCkg
aXMgZ2wuQ0xBTVBfVE9fRURHRQorUEFTUyBnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKGJvb2xQcm9n
cmFtLCBnbC5MSU5LX1NUQVRVUykgaXMgdHJ1ZQorUEFTUyBnbC5nZXRFcnJvcigpIGlzIDAKK1BB
U1MgZ2wuZ2V0VW5pZm9ybShib29sUHJvZ3JhbSwgYnZhbExvYykgaXMgdHJ1ZQorUEFTUyBnbC5n
ZXRVbmlmb3JtKGJvb2xQcm9ncmFtLCBidmFsMkxvYykgaXMgWzEsIDBdCitQQVNTIGdsLmdldFVu
aWZvcm0oYm9vbFByb2dyYW0sIGJ2YWwzTG9jKSBpcyBbMSwgMCwgMV0KK1BBU1MgZ2wuZ2V0VW5p
Zm9ybShib29sUHJvZ3JhbSwgYnZhbDRMb2MpIGlzIFsxLCAwLCAxLCAwXQorUEFTUyBnbC5nZXRQ
cm9ncmFtUGFyYW1ldGVyKGludFByb2dyYW0sIGdsLkxJTktfU1RBVFVTKSBpcyB0cnVlCitQQVNT
IGdsLmdldEVycm9yKCkgaXMgMAorUEFTUyBnbC5nZXRVbmlmb3JtKGludFByb2dyYW0sIGl2YWxM
b2MpIGlzIDEKK1BBU1MgZ2wuZ2V0VW5pZm9ybShpbnRQcm9ncmFtLCBpdmFsMkxvYykgaXMgWzIs
IDNdCitQQVNTIGdsLmdldFVuaWZvcm0oaW50UHJvZ3JhbSwgaXZhbDNMb2MpIGlzIFs0LCA1LCA2
XQorUEFTUyBnbC5nZXRVbmlmb3JtKGludFByb2dyYW0sIGl2YWw0TG9jKSBpcyBbNywgOCwgOSwg
MTBdCitQQVNTIGdsLmdldFByb2dyYW1QYXJhbWV0ZXIoZmxvYXRQcm9ncmFtLCBnbC5MSU5LX1NU
QVRVUykgaXMgdHJ1ZQorUEFTUyBnbC5nZXRFcnJvcigpIGlzIDAKK1BBU1MgZ2wuZ2V0VW5pZm9y
bShmbG9hdFByb2dyYW0sIGZ2YWxMb2MpIGlzIDExCitQQVNTIGdsLmdldFVuaWZvcm0oZmxvYXRQ
cm9ncmFtLCBmdmFsMkxvYykgaXMgWzEyLCAxM10KK1BBU1MgZ2wuZ2V0VW5pZm9ybShmbG9hdFBy
b2dyYW0sIGZ2YWwzTG9jKSBpcyBbMTQsIDE1LCAxNl0KK1BBU1MgZ2wuZ2V0VW5pZm9ybShmbG9h
dFByb2dyYW0sIGZ2YWw0TG9jKSBpcyBbMTcsIDE4LCAxOSwgMjBdCitQQVNTIGdsLmdldFByb2dy
YW1QYXJhbWV0ZXIobWF0UHJvZ3JhbSwgZ2wuTElOS19TVEFUVVMpIGlzIHRydWUKK1BBU1MgZ2wu
Z2V0RXJyb3IoKSBpcyAwCitQQVNTIGdsLmdldFVuaWZvcm0obWF0UHJvZ3JhbSwgbXZhbDJMb2Mp
IGlzIFsxLCAyLCAzLCA0XQorUEFTUyBnbC5nZXRVbmlmb3JtKG1hdFByb2dyYW0sIG12YWwzTG9j
KSBpcyBbNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTNdCitQQVNTIGdsLmdldFVuaWZvcm0o
bWF0UHJvZ3JhbSwgbXZhbDRMb2MpIGlzIFsxNCwgMTUsIDE2LCAxNywgMTgsIDE5LCAyMCwgMjEs
IDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOV0KK1BBU1MgZ2wuZ2V0VmVydGV4QXR0cmli
KDEsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkcpIGlzIG5vbi1udWxsLgor
UEFTUyBnbC5nZXRWZXJ0ZXhBdHRyaWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVE
KSBpcyB0cnVlCitQQVNTIGdsLmdldFZlcnRleEF0dHJpYigxLCBnbC5WRVJURVhfQVRUUklCX0FS
UkFZX1NJWkUpIGlzIDQKK1BBU1MgKGdsLmdldFZlcnRleEF0dHJpYigxLCBnbC5WRVJURVhfQVRU
UklCX0FSUkFZX1NUUklERSkgPT0gMCkgfHwgKGdsLmdldFZlcnRleEF0dHJpYigxLCBnbC5WRVJU
RVhfQVRUUklCX0FSUkFZX1NUUklERSkgPT0gNCAqIGdsLnNpemVJbkJ5dGVzKGdsLkZMT0FUKSkg
aXMgdHJ1ZQorUEFTUyBnbC5nZXRWZXJ0ZXhBdHRyaWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJB
WV9UWVBFKSBpcyBnbC5GTE9BVAorUEFTUyBnbC5nZXRWZXJ0ZXhBdHRyaWIoMSwgZ2wuVkVSVEVY
X0FUVFJJQl9BUlJBWV9OT1JNQUxJWkVEKSBpcyBmYWxzZQorUEFTUyBnbC5nZXRWZXJ0ZXhBdHRy
aWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVEKSBpcyBmYWxzZQorUEFTUyBnbC5n
ZXRWZXJ0ZXhBdHRyaWIoMSwgZ2wuQ1VSUkVOVF9WRVJURVhfQVRUUklCKSBpcyBbNSwgNiwgNywg
OF0KK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyAwCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvd2ViZ2wvZ2wtb2JqZWN0LWdldC1jYWxscy1leHBlY3RlZC50eHQKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpOYW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC9nbC1vYmplY3QtZ2V0LWNhbGxzLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtb2JqZWN0LWdldC1jYWxscy5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtb2JqZWN0LWdldC1j
YWxscy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACis8aHRtbD4KKzxoZWFkPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJnbC10ZXN0LmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvZ2wtb2Jq
ZWN0LWdldC1jYWxscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KClByb3Bl
cnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLW9iamVjdC1n
ZXQtY2FsbHMuaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2luY29ycmVjdC1jb250ZXh0LW9iamVj
dC1iZWhhdmlvdXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL2luY29ycmVjdC1jb250ZXh0LW9iamVjdC1iZWhhdmlvdXItZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiA1MTIyNikKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2lu
Y29ycmVjdC1jb250ZXh0LW9iamVjdC1iZWhhdmlvdXItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0xNywxNyArMTcsMTIgQEAgUEFTUyBjb250ZXh0QS5iaW5kUmVuZGVyYnVmZmVyKGNv
bnRleHRBLgogUEFTUyBjb250ZXh0QS5iaW5kVGV4dHVyZShjb250ZXh0QS5URVhUVVJFXzJELCB0
ZXh0dXJlQikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4
Y2VwdGlvbiAxNy4KIFBBU1MgY29udGV4dEEuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoY29udGV4
dEEuRlJBTUVCVUZGRVIsIGNvbnRleHRBLkRFUFRIX0FUVEFDSE1FTlQsIGNvbnRleHRBLlJFTkRF
UkJVRkZFUiwgcmVuZGVyQnVmZmVyQikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01B
VENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KIFBBU1MgY29udGV4dEEuZnJhbWVidWZmZXJUZXh0
dXJlMkQoY29udGV4dEEuRlJBTUVCVUZGRVIsIGNvbnRleHRBLkNPTE9SX0FUVEFDSE1FTlQwLCBj
b250ZXh0QS5URVhUVVJFXzJELCB0ZXh0dXJlQiwgMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBU
WVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4dEEuZ2V0UHJv
Z3JhbWkocHJvZ3JhbUIsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9F
UlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIGNvbnRleHRBLmdldFByb2dyYW1pdihwcm9ncmFt
QiwgMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2Vw
dGlvbiAxNy4KK1BBU1MgY29udGV4dEEuZ2V0UHJvZ3JhbVBhcmFtZXRlcihwcm9ncmFtQiwgMCkg
dGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAx
Ny4KIFBBU1MgY29udGV4dEEuZ2V0UHJvZ3JhbUluZm9Mb2cocHJvZ3JhbUIsIDApIHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNT
IGNvbnRleHRBLmdldFNoYWRlcmkoc2hhZGVyQiwgMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBU
WVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4dEEuZ2V0U2hh
ZGVyaXYoc2hhZGVyQiwgMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VS
UjogRE9NIEV4Y2VwdGlvbiAxNy4KK1BBU1MgY29udGV4dEEuZ2V0U2hhZGVyUGFyYW1ldGVyKHNo
YWRlckIsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBF
eGNlcHRpb24gMTcuCiBQQVNTIGNvbnRleHRBLmdldFNoYWRlckluZm9Mb2coc2hhZGVyQiwgMCkg
dGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAx
Ny4KIFBBU1MgY29udGV4dEEuZ2V0U2hhZGVyU291cmNlKHNoYWRlckIpIHRocmV3IGV4Y2VwdGlv
biBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIGNvbnRl
eHRBLmdldFVuaWZvcm1mKHByb2dyYW1CLCBsb2NhdGlvbkEpIHRocmV3IGV4Y2VwdGlvbiBFcnJv
cjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIGNvbnRleHRBLmdl
dFVuaWZvcm1mdihwcm9ncmFtQiwgbG9jYXRpb25BKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZ
UEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0QS5nZXRVbmlm
b3JtaShwcm9ncmFtQiwgbG9jYXRpb25BKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlT
TUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0QS5nZXRVbmlmb3JtaXYo
cHJvZ3JhbUIsIGxvY2F0aW9uQSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENI
X0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KK1BBU1MgY29udGV4dEEuZ2V0VW5pZm9ybShwcm9ncmFt
QiwgbG9jYXRpb25BKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBE
T00gRXhjZXB0aW9uIDE3LgogUEFTUyBjb250ZXh0QS5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3Jh
bUIsICd1X21vZGVsVmlld1Byb2pNYXRyaXgnKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVf
TUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9udWxsLW9iamVj
dC1iZWhhdmlvdXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL251bGwtb2JqZWN0LWJlaGF2aW91ci1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDUxMjI2KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvbnVsbC1vYmplY3QtYmVo
YXZpb3VyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTgsMTcgKzE4LDEyIEBAIFBB
U1MgY29udGV4dC5iaW5kUmVuZGVyYnVmZmVyKGNvbnRleHQuUkUKIFBBU1MgY29udGV4dC5iaW5k
VGV4dHVyZShjb250ZXh0LlRFWFRVUkVfMkQsIDApIGlzIHVuZGVmaW5lZC4KIFBBU1MgY29udGV4
dC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihjb250ZXh0LkZSQU1FQlVGRkVSLCBjb250ZXh0LkRF
UFRIX0FUVEFDSE1FTlQsIGNvbnRleHQuUkVOREVSQlVGRkVSLCAwKSBpcyB1bmRlZmluZWQuCiBQ
QVNTIGNvbnRleHQuZnJhbWVidWZmZXJUZXh0dXJlMkQoY29udGV4dC5GUkFNRUJVRkZFUiwgY29u
dGV4dC5DT0xPUl9BVFRBQ0hNRU5UMCwgY29udGV4dC5URVhUVVJFXzJELCAwLCAwKSBpcyB1bmRl
ZmluZWQuCi1QQVNTIGNvbnRleHQuZ2V0UHJvZ3JhbWkodW5kZWZpbmVkLCAwKSB0aHJldyBleGNl
cHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBj
b250ZXh0LmdldFByb2dyYW1pdih1bmRlZmluZWQsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjog
VFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCitQQVNTIGNvbnRleHQuZ2V0UHJv
Z3JhbVBhcmFtZXRlcih1bmRlZmluZWQsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9N
SVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCiBQQVNTIGNvbnRleHQuZ2V0UHJvZ3JhbUlu
Zm9Mb2codW5kZWZpbmVkLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hf
RVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0LmdldFNoYWRlcmkodW5kZWZpbmVk
LCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0
aW9uIDE3LgotUEFTUyBjb250ZXh0LmdldFNoYWRlcml2KHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KK1BBU1Mg
Y29udGV4dC5nZXRTaGFkZXJQYXJhbWV0ZXIodW5kZWZpbmVkLCAwKSB0aHJldyBleGNlcHRpb24g
RXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBjb250ZXh0
LmdldFNoYWRlckluZm9Mb2codW5kZWZpbmVkLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZ
UEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBjb250ZXh0LmdldFNoYWRl
clNvdXJjZSh1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9F
UlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIGNvbnRleHQuZ2V0VW5pZm9ybWYodW5kZWZpbmVk
LCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0
aW9uIDE3LgotUEFTUyBjb250ZXh0LmdldFVuaWZvcm1mdih1bmRlZmluZWQsIDApIHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNT
IGNvbnRleHQuZ2V0VW5pZm9ybWkodW5kZWZpbmVkLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6
IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0LmdldFVu
aWZvcm1pdih1bmRlZmluZWQsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRD
SF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCitQQVNTIGNvbnRleHQuZ2V0VW5pZm9ybSh1bmRlZmlu
ZWQsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNl
cHRpb24gMTcuCiBQQVNTIGNvbnRleHQuZ2V0VW5pZm9ybUxvY2F0aW9uKHVuZGVmaW5lZCwgJ2Zv
bycpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRp
b24gMTcuCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3dlYmdsL3RyaWFuZ2xlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdHJpYW5nbGUuaHRtbAkocmV2aXNpb24gNTEyMjYpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90cmlhbmdsZS5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC02NCwxMSArNjQsMTEgQEAKICAgICAgICAgICAgIHZhciBvZmZzZXQgPSAoMTUqNTAr
MjApICogNDsKICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTA7ICsraSkKICAgICAg
ICAgICAgICAgICBpZiAoYnVmW29mZnNldCtpKjRdICE9IDI1NSB8fCBidWZbb2Zmc2V0K2kqNCsx
XSAhPSAwIHx8IGJ1ZltvZmZzZXQraSo0KzJdICE9IDAgfHwgYnVmW29mZnNldCtpKjQrM10gIT0g
MjU1KSB7Ci0gICAgICAgICAgICAgICAgICAgIGZhaWwoMjAsIDE1LCBidWYsICIoMjU1LDAsMCwy
NTUpIik7CisgICAgICAgICAgICAgICAgICAgIGZhaWwoMjAgKyBpLCAxNSwgYnVmLCAiKDI1NSww
LDAsMjU1KSIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgLy8gTGFzdCBsaW5lIHNob3VsZCBiZSBhbGwgYmxhY2sKLSAgICAgICAg
ICAgIG9mZnNldCA9ICg0OSo1MCkgKiA0CisgICAgICAgICAgICBvZmZzZXQgPSAoNDkqNTApICog
NDsKICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNTA7ICsraSkKICAgICAgICAgICAg
ICAgICBpZiAoYnVmW29mZnNldCtpKjRdICE9IDAgfHwgYnVmW29mZnNldCtpKjQrMV0gIT0gMCB8
fCBidWZbb2Zmc2V0K2kqNCsyXSAhPSAwIHx8IGJ1ZltvZmZzZXQraSo0KzNdICE9IDI1NSkgewog
ICAgICAgICAgICAgICAgICAgICBmYWlsKGksIDQ5LCBidWYsICIoMCwwLDAsMjU1KSIpOwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL2Jvb2xVbmlmb3JtU2hh
ZGVyLnZlcnQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVz
b3VyY2VzL2Jvb2xVbmlmb3JtU2hhZGVyLnZlcnQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvYm9vbFVuaWZvcm1TaGFkZXIudmVydAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAordW5pZm9ybSBib29sIGJ2YWw7Cit1bmlmb3JtIGJ2
ZWMyIGJ2YWwyOwordW5pZm9ybSBidmVjMyBidmFsMzsKK3VuaWZvcm0gYnZlYzQgYnZhbDQ7CisK
K3ZvaWQgbWFpbigpCit7CisgICAgYm9vbCBhbGxTZXQgPSBidmFsCisgICAgICAgICAgICAmJiBi
dmFsMlswXSAmJiBidmFsMlsxXQorICAgICAgICAgICAgJiYgYnZhbDNbMF0gJiYgYnZhbDNbMV0g
JiYgYnZhbDNbMl0KKyAgICAgICAgICAgICYmIGJ2YWw0WzBdICYmIGJ2YWw0WzFdICYmIGJ2YWw0
WzJdICYmIGJ2YWw0WzNdOworICAgIGdsX1Bvc2l0aW9uID0gdmVjNCgoYWxsU2V0ID8gMS4wIDog
LTEuMCksIDAuMCwgMC4wLCAxLjApOworfQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
d2ViZ2wvcmVzb3VyY2VzL2Zsb2F0VW5pZm9ybVNoYWRlci52ZXJ0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy9mbG9hdFVuaWZvcm1TaGFkZXIu
dmVydAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Jlc291
cmNlcy9mbG9hdFVuaWZvcm1TaGFkZXIudmVydAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMyBA
QAordW5pZm9ybSBmbG9hdCBmdmFsOwordW5pZm9ybSB2ZWMyIGZ2YWwyOwordW5pZm9ybSB2ZWMz
IGZ2YWwzOwordW5pZm9ybSB2ZWM0IGZ2YWw0OworCit2b2lkIG1haW4oKQoreworICAgIGZsb2F0
IHN1bSA9IGZ2YWwKKyAgICAgICAgICAgICsgZnZhbDJbMF0gKyBmdmFsMlsxXQorICAgICAgICAg
ICAgKyBmdmFsM1swXSArIGZ2YWwzWzFdICsgZnZhbDNbMl0KKyAgICAgICAgICAgICsgZnZhbDRb
MF0gKyBmdmFsNFsxXSArIGZ2YWw0WzJdICsgZnZhbDRbM107CisgICAgZ2xfUG9zaXRpb24gPSB2
ZWM0KHN1bSwgMC4wLCAwLjAsIDEuMCk7Cit9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy93ZWJnbC9yZXNvdXJjZXMvaW50VW5pZm9ybVNoYWRlci52ZXJ0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy9pbnRVbmlmb3JtU2hhZGVyLnZl
cnQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJj
ZXMvaW50VW5pZm9ybVNoYWRlci52ZXJ0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACit1
bmlmb3JtIGludCBpdmFsOwordW5pZm9ybSBpdmVjMiBpdmFsMjsKK3VuaWZvcm0gaXZlYzMgaXZh
bDM7Cit1bmlmb3JtIGl2ZWM0IGl2YWw0OworCit2b2lkIG1haW4oKQoreworICAgIGludCBzdW0g
PSBpdmFsCisgICAgICAgICAgICArIGl2YWwyWzBdICsgaXZhbDJbMV0KKyAgICAgICAgICAgICsg
aXZhbDNbMF0gKyBpdmFsM1sxXSArIGl2YWwzWzJdCisgICAgICAgICAgICArIGl2YWw0WzBdICsg
aXZhbDRbMV0gKyBpdmFsNFsyXSArIGl2YWw0WzNdOworICAgIGdsX1Bvc2l0aW9uID0gdmVjNChz
dW0sIDAuMCwgMC4wLCAxLjApOworfQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2Vi
Z2wvcmVzb3VyY2VzL21hdFVuaWZvcm1TaGFkZXIudmVydAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvbWF0VW5pZm9ybVNoYWRlci52ZXJ0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL21h
dFVuaWZvcm1TaGFkZXIudmVydAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMCBAQAordW5pZm9y
bSBtYXQyIG12YWwyOwordW5pZm9ybSBtYXQzIG12YWwzOwordW5pZm9ybSBtYXQ0IG12YWw0Owor
Cit2b2lkIG1haW4oKQoreworICAgIGdsX1Bvc2l0aW9uID0gdmVjNChtdmFsMiAqIHZlYzIoMS4w
LCAyLjApLCAwLjAsIDAuMCkKKyAgICAgICAgICAgICsgdmVjNChtdmFsMyAqIHZlYzMoMS4wLCAy
LjAsIDMuMCksIDAuMCkKKyAgICAgICAgICAgICsgbXZhbDQgKiB2ZWM0KDEuMCwgMi4wLCAzLjAs
IDQuMCk7Cit9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMv
bm9vcFVuaWZvcm1TaGFkZXIuZnJhZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy93ZWJnbC9yZXNvdXJjZXMvbm9vcFVuaWZvcm1TaGFkZXIuZnJhZwkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy9ub29wVW5pZm9ybVNo
YWRlci5mcmFnCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKK3ZvaWQgbWFpbigpCit7Cisg
ICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAxLjApOworfQpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3V0aWxzM2QuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3V0aWxzM2QuanMJ
KHJldmlzaW9uIDUxMjI2KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3Vy
Y2VzL3V0aWxzM2QuanMJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgZnVuY3Rpb24g
aW5pdFdlYkdMKGNhbnZhc05hbWUsIHZzaGFkZXIsIAogICAgIGdsLmxpbmtQcm9ncmFtKGdsLnBy
b2dyYW0pOwogCiAgICAgLy8gQ2hlY2sgdGhlIGxpbmsgc3RhdHVzCi0gICAgdmFyIGxpbmtlZCA9
IGdsLmdldFByb2dyYW1pKGdsLnByb2dyYW0sIGdsLkxJTktfU1RBVFVTKTsKKyAgICB2YXIgbGlu
a2VkID0gZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihnbC5wcm9ncmFtLCBnbC5MSU5LX1NUQVRVUyk7
CiAgICAgaWYgKCFsaW5rZWQpIHsKICAgICAgICAgLy8gc29tZXRoaW5nIHdlbnQgd3Jvbmcgd2l0
aCB0aGUgbGluawogICAgICAgICB2YXIgZXJyb3IgPSBnbC5nZXRQcm9ncmFtSW5mb0xvZyAoZ2wu
cHJvZ3JhbSk7CkBAIC0xMTMsNyArMTEzLDcgQEAgZnVuY3Rpb24gbG9hZFNoYWRlcihjdHgsIHNo
YWRlcklkKQogICAgIGN0eC5jb21waWxlU2hhZGVyKHNoYWRlcik7CiAKICAgICAvLyBDaGVjayB0
aGUgY29tcGlsZSBzdGF0dXMKLSAgICB2YXIgY29tcGlsZWQgPSBjdHguZ2V0U2hhZGVyaShzaGFk
ZXIsIGN0eC5DT01QSUxFX1NUQVRVUyk7CisgICAgdmFyIGNvbXBpbGVkID0gY3R4LmdldFNoYWRl
clBhcmFtZXRlcihzaGFkZXIsIGN0eC5DT01QSUxFX1NUQVRVUyk7CiAgICAgaWYgKCFjb21waWxl
ZCkgewogICAgICAgICAvLyBTb21ldGhpbmcgd2VudCB3cm9uZyBkdXJpbmcgY29tcGlsYXRpb247
IGdldCB0aGUgZXJyb3IKICAgICAgICAgdmFyIGVycm9yID0gY3R4LmdldFNoYWRlckluZm9Mb2co
c2hhZGVyKTsKQEAgLTUzNiw0ICs1MzYsMyBAQCBGcmFtZXJhdGUucHJvdG90eXBlLnNuYXBzaG90
ID0gZnVuY3Rpb24oCiAgICAgICAgIHRoaXMucmVuZGVyVGltZSA9IG5ld1RpbWU7CiAgICAgfQog
fQotCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2wt
dGVzdC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNv
dXJjZXMvd2ViZ2wtdGVzdC5qcwkocmV2aXNpb24gNTEyMjYpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2wtdGVzdC5qcwkod29ya2luZyBjb3B5KQpAQCAt
MjQsMTYgKzI0LDMyIEBAIGZ1bmN0aW9uIGxvYWRTdGFuZGFyZFByb2dyYW0oY29udGV4dCkgewog
ICAgIHJldHVybiBwcm9ncmFtOwogfQogCitmdW5jdGlvbiBsb2FkUHJvZ3JhbShjb250ZXh0LCB2
ZXJ0ZXhTaGFkZXJQYXRoLCBmcmFnbWVudFNoYWRlclBhdGgpIHsKKyAgICB2YXIgcHJvZ3JhbSA9
IGNvbnRleHQuY3JlYXRlUHJvZ3JhbSgpOworICAgIGNvbnRleHQuYXR0YWNoU2hhZGVyKHByb2dy
YW0sIGxvYWRWZXJ0ZXhTaGFkZXIoY29udGV4dCwgdmVydGV4U2hhZGVyUGF0aCkpOworICAgIGNv
bnRleHQuYXR0YWNoU2hhZGVyKHByb2dyYW0sIGxvYWRGcmFnbWVudFNoYWRlcihjb250ZXh0LCBm
cmFnbWVudFNoYWRlclBhdGgpKTsKKyAgICBjb250ZXh0LmxpbmtQcm9ncmFtKHByb2dyYW0pOwor
ICAgIHJldHVybiBwcm9ncmFtOworfQorCiBmdW5jdGlvbiBsb2FkU3RhbmRhcmRWZXJ0ZXhTaGFk
ZXIoY29udGV4dCkgeworICAgIHJldHVybiBsb2FkVmVydGV4U2hhZGVyKGNvbnRleHQsICJyZXNv
dXJjZXMvdmVydGV4U2hhZGVyLnZlcnQiKTsKK30KKworZnVuY3Rpb24gbG9hZFZlcnRleFNoYWRl
cihjb250ZXh0LCBwYXRoKSB7CiAgICAgdmFyIHZlcnRleFNoYWRlciA9IGNvbnRleHQuY3JlYXRl
U2hhZGVyKGNvbnRleHQuVkVSVEVYX1NIQURFUik7Ci0gICAgY29udGV4dC5zaGFkZXJTb3VyY2Uo
dmVydGV4U2hhZGVyLCBnZXRTaGFkZXJTb3VyY2UoInJlc291cmNlcy92ZXJ0ZXhTaGFkZXIudmVy
dCIpKTsKKyAgICBjb250ZXh0LnNoYWRlclNvdXJjZSh2ZXJ0ZXhTaGFkZXIsIGdldFNoYWRlclNv
dXJjZShwYXRoKSk7CiAgICAgY29udGV4dC5jb21waWxlU2hhZGVyKHZlcnRleFNoYWRlcik7CiAg
ICAgcmV0dXJuIHZlcnRleFNoYWRlcjsKIH0KIAogZnVuY3Rpb24gbG9hZFN0YW5kYXJkRnJhZ21l
bnRTaGFkZXIoY29udGV4dCkgeworICAgIHJldHVybiBsb2FkRnJhZ21lbnRTaGFkZXIoY29udGV4
dCwgInJlc291cmNlcy9mcmFnbWVudFNoYWRlci5mcmFnIik7Cit9CisKK2Z1bmN0aW9uIGxvYWRG
cmFnbWVudFNoYWRlcihjb250ZXh0LCBwYXRoKSB7CiAgICAgdmFyIGZyYWdtZW50U2hhZGVyID0g
Y29udGV4dC5jcmVhdGVTaGFkZXIoY29udGV4dC5GUkFHTUVOVF9TSEFERVIpOwotICAgIGNvbnRl
eHQuc2hhZGVyU291cmNlKGZyYWdtZW50U2hhZGVyLCBnZXRTaGFkZXJTb3VyY2UoInJlc291cmNl
cy9mcmFnbWVudFNoYWRlci5mcmFnIikpOworICAgIGNvbnRleHQuc2hhZGVyU291cmNlKGZyYWdt
ZW50U2hhZGVyLCBnZXRTaGFkZXJTb3VyY2UocGF0aCkpOwogICAgIGNvbnRleHQuY29tcGlsZVNo
YWRlcihmcmFnbWVudFNoYWRlcik7CiAgICAgcmV0dXJuIGZyYWdtZW50U2hhZGVyOwogfQpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL2dsLW9iamVjdC1n
ZXQtY2FsbHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wv
c2NyaXB0LXRlc3RzL2dsLW9iamVjdC1nZXQtY2FsbHMuanMJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvZ2wtb2JqZWN0LWdldC1jYWxs
cy5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxODEgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0IG9m
IGdldCBjYWxscyBhZ2FpbnN0IEdMIG9iamVjdHMgbGlrZSBnZXRCdWZmZXJQYXJhbWV0ZXIsIGV0
Yy4iKTsKKwordmFyIGdsID0gY3JlYXRlM0RDb250ZXh0KCk7Cit2YXIgc3RhbmRhcmRWZXJ0ID0g
bG9hZFN0YW5kYXJkVmVydGV4U2hhZGVyKGdsKTsKK3ZhciBzdGFuZGFyZEZyYWcgPSBsb2FkU3Rh
bmRhcmRGcmFnbWVudFNoYWRlcihnbCk7Cit2YXIgc3RhbmRhcmRQcm9ncmFtID0gZ2wuY3JlYXRl
UHJvZ3JhbSgpOworZ2wuYXR0YWNoU2hhZGVyKHN0YW5kYXJkUHJvZ3JhbSwgc3RhbmRhcmRWZXJ0
KTsKK2dsLmF0dGFjaFNoYWRlcihzdGFuZGFyZFByb2dyYW0sIHN0YW5kYXJkRnJhZyk7CitnbC5s
aW5rUHJvZ3JhbShzdGFuZGFyZFByb2dyYW0pOworCisvLyBUZXN0IGdldEJ1ZmZlclBhcmFtZXRl
cgordmFyIGJ1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworZ2wuYmluZEJ1ZmZlcihnbC5BUlJB
WV9CVUZGRVIsIGJ1ZmZlcik7CitnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgMTYsIGds
LkRZTkFNSUNfRFJBVyk7CitzaG91bGRCZSgnZ2wuZ2V0QnVmZmVyUGFyYW1ldGVyKGdsLkFSUkFZ
X0JVRkZFUiwgZ2wuQlVGRkVSX1NJWkUpJywgJzE2Jyk7CitzaG91bGRCZSgnZ2wuZ2V0QnVmZmVy
UGFyYW1ldGVyKGdsLkFSUkFZX0JVRkZFUiwgZ2wuQlVGRkVSX1VTQUdFKScsICdnbC5EWU5BTUlD
X0RSQVcnKTsKKworLy8gVGVzdCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIKK3Zh
ciB0ZXh0dXJlID0gZ2wuY3JlYXRlVGV4dHVyZSgpOworZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVS
RV8yRCwgdGV4dHVyZSk7CitnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEs
IDIsIDIsIDAsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsCisgICAgICAgICAgICAgIG5ldyBX
ZWJHTFVuc2lnbmVkQnl0ZUFycmF5KFswLCAwLCAwLCAyNTUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAyNTUsIDI1NSwgMjU1LCAyNTUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNTUsIDI1NSwgMjU1LCAyNTUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCAyNTVdKSk7CitnbC5i
aW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCBudWxsKTsKK3ZhciBmcmFtZWJ1ZmZlciA9IGdsLmNy
ZWF0ZUZyYW1lYnVmZmVyKCk7CitnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZy
YW1lYnVmZmVyKTsKK2dsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVSLCBnbC5D
T0xPUl9BVFRBQ0hNRU5UMCwgZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZSwgMCk7Cit2YXIgcmVuZGVy
YnVmZmVyID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCk7CitzaG91bGRCZSgnZ2wuZ2V0RXJyb3Io
KScsICcwJyk7CitnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgcmVuZGVyYnVm
ZmVyKTsKK3Nob3VsZEJlKCdnbC5nZXRFcnJvcigpJywgJzAnKTsKK2dsLnJlbmRlcmJ1ZmZlclN0
b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBnbC5ERVBUSF9DT01QT05FTlQxNiwgMiwgMik7CitzaG91
bGRCZSgnZ2wuZ2V0RXJyb3IoKScsICcwJyk7CitnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihn
bC5GUkFNRUJVRkZFUiwgZ2wuREVQVEhfQVRUQUNITUVOVCwgZ2wuUkVOREVSQlVGRkVSLCByZW5k
ZXJidWZmZXIpOworc2hvdWxkQmUoJ2dsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVC
VUZGRVIpJywgJ2dsLkZSQU1FQlVGRkVSX0NPTVBMRVRFJyk7CitzaG91bGRCZSgnZ2wuZ2V0RnJh
bWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRB
Q0hNRU5UMCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRSknLCAnZ2wuVEVY
VFVSRScpOworc2hvdWxkQmVOb25OdWxsKCdnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJh
bWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5GUkFNRUJVRkZF
Ul9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FKScpOworc2hvdWxkQmUoJ2dsLmdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAs
IGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MRVZFTCknLCAnMCcpOworc2hvdWxk
QmUoJ2dsLmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwg
Z2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9D
VUJFX01BUF9GQUNFKScsICcwJyk7CisKK3Nob3VsZEJlKCdnbC5nZXRGcmFtZWJ1ZmZlckF0dGFj
aG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkRFUFRIX0FUVEFDSE1FTlQsIGdsLkZS
QU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEUpJywgJ2dsLlJFTkRFUkJVRkZFUicpOwor
c2hvdWxkQmVOb25OdWxsKCdnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wu
RlJBTUVCVUZGRVIsIGdsLkRFUFRIX0FUVEFDSE1FTlQsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1F
TlRfT0JKRUNUX05BTUUpJyk7CisKKy8vIFRlc3QgZ2V0UHJvZ3JhbVBhcmFtZXRlcgorc2hvdWxk
QmUoJ2dsLmdldFByb2dyYW1QYXJhbWV0ZXIoc3RhbmRhcmRQcm9ncmFtLCBnbC5ERUxFVEVfU1RB
VFVTKScsICdmYWxzZScpOworc2hvdWxkQmUoJ2dsLmdldFByb2dyYW1QYXJhbWV0ZXIoc3RhbmRh
cmRQcm9ncmFtLCBnbC5MSU5LX1NUQVRVUyknLCAndHJ1ZScpOworc2hvdWxkQmUoJ3R5cGVvZiBn
bC5nZXRQcm9ncmFtUGFyYW1ldGVyKHN0YW5kYXJkUHJvZ3JhbSwgZ2wuVkFMSURBVEVfU1RBVFVT
KScsICciYm9vbGVhbiInKTsKK3Nob3VsZEJlKCd0eXBlb2YgZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRl
cihzdGFuZGFyZFByb2dyYW0sIGdsLklORk9fTE9HX0xFTkdUSCknLCAnIm51bWJlciInKTsKK3No
b3VsZEJlKCdnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHN0YW5kYXJkUHJvZ3JhbSwgZ2wuQVRUQUNI
RURfU0hBREVSUyknLCAnMicpOworc2hvdWxkQmUoJ2dsLmdldFByb2dyYW1QYXJhbWV0ZXIoc3Rh
bmRhcmRQcm9ncmFtLCBnbC5BQ1RJVkVfQVRUUklCVVRFUyknLCAnMicpOworc2hvdWxkQmVOb25a
ZXJvKCdnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHN0YW5kYXJkUHJvZ3JhbSwgZ2wuQUNUSVZFX0FU
VFJJQlVURV9NQVhfTEVOR1RIKScpOworc2hvdWxkQmUoJ2dsLmdldFByb2dyYW1QYXJhbWV0ZXIo
c3RhbmRhcmRQcm9ncmFtLCBnbC5BQ1RJVkVfVU5JRk9STVMpJywgJzEnKTsKK3Nob3VsZEJlTm9u
WmVybygnZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihzdGFuZGFyZFByb2dyYW0sIGdsLkFDVElWRV9V
TklGT1JNX01BWF9MRU5HVEgpJyk7CisKKy8vIFRlc3QgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVy
CitzaG91bGRCZSgnZ2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZFUiwg
Z2wuUkVOREVSQlVGRkVSX1dJRFRIKScsICcyJyk7CitzaG91bGRCZSgnZ2wuZ2V0UmVuZGVyYnVm
ZmVyUGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkVOREVSQlVGRkVSX0hFSUdIVCknLCAn
MicpOworLy8gTm90ZTogd2UgY2FuJ3QgdGVzdCB0aGUgYWN0dWFsIHZhbHVlIG9mIHRoZSBpbnRl
cm5hbCBmb3JtYXQgc2luY2UKKy8vIHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBhbGxvd2VkIHRvIGNo
YW5nZSBpdC4KK3Nob3VsZEJlTm9uWmVybygnZ2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKGds
LlJFTkRFUkJVRkZFUiwgZ2wuUkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVCknKTsKK3Nob3Vs
ZEJlTm9uWmVybygnZ2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZFUiwg
Z2wuUkVOREVSQlVGRkVSX0RFUFRIX1NJWkUpJyk7Cit2YXIgY29sb3JidWZmZXIgPSBnbC5jcmVh
dGVSZW5kZXJidWZmZXIoKTsKK3Nob3VsZEJlKCdnbC5nZXRFcnJvcigpJywgJzAnKTsKK2dsLmJp
bmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCByZW5kZXJidWZmZXIpOworc2hvdWxkQmUo
J2dsLmdldEVycm9yKCknLCAnMCcpOworZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJC
VUZGRVIsIGdsLlJHQkE0LCAyLCAyKTsKK3Nob3VsZEJlTm9uWmVybygnZ2wuZ2V0UmVuZGVyYnVm
ZmVyUGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkVOREVSQlVGRkVSX1JFRF9TSVpFKScp
Oworc2hvdWxkQmVOb25aZXJvKCdnbC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoZ2wuUkVOREVS
QlVGRkVSLCBnbC5SRU5ERVJCVUZGRVJfR1JFRU5fU0laRSknKTsKK3Nob3VsZEJlTm9uWmVybygn
Z2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkVOREVSQlVG
RkVSX0JMVUVfU0laRSknKTsKK3Nob3VsZEJlTm9uWmVybygnZ2wuZ2V0UmVuZGVyYnVmZmVyUGFy
YW1ldGVyKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkVOREVSQlVGRkVSX0FMUEhBX1NJWkUpJyk7CisK
Ky8vIFRlc3QgZ2V0U2hhZGVyUGFyYW1ldGVyCitzaG91bGRCZSgnZ2wuZ2V0U2hhZGVyUGFyYW1l
dGVyKHN0YW5kYXJkVmVydCwgZ2wuU0hBREVSX1RZUEUpJywgJ2dsLlZFUlRFWF9TSEFERVInKTsK
K3Nob3VsZEJlKCdnbC5nZXRTaGFkZXJQYXJhbWV0ZXIoc3RhbmRhcmRWZXJ0LCBnbC5ERUxFVEVf
U1RBVFVTKScsICdmYWxzZScpOworc2hvdWxkQmUoJ2dsLmdldFNoYWRlclBhcmFtZXRlcihzdGFu
ZGFyZFZlcnQsIGdsLkNPTVBJTEVfU1RBVFVTKScsICd0cnVlJyk7CitzaG91bGRCZSgndHlwZW9m
IGdsLmdldFNoYWRlclBhcmFtZXRlcihzdGFuZGFyZFZlcnQsIGdsLklORk9fTE9HX0xFTkdUSCkn
LCAnIm51bWJlciInKTsKK3Nob3VsZEJlTm9uWmVybygnZ2wuZ2V0U2hhZGVyUGFyYW1ldGVyKHN0
YW5kYXJkVmVydCwgZ2wuU0hBREVSX1NPVVJDRV9MRU5HVEgpJyk7CisKKy8vIFRlc3QgZ2V0VGV4
UGFyYW1ldGVyCitnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZyYW1lYnVmZmVy
KTsKK2dsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmUpOworZ2wudGV4UGFyYW1l
dGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLk5FQVJFU1QpOwor
Z2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGds
Lk5FQVJFU1QpOworZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dS
QVBfUywgZ2wuQ0xBTVBfVE9fRURHRSk7CitnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQs
IGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFNUF9UT19FREdFKTsKK3Nob3VsZEJlKCdnbC5nZXRU
ZXhQYXJhbWV0ZXIoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSKScsICdnbC5O
RUFSRVNUJyk7CitzaG91bGRCZSgnZ2wuZ2V0VGV4UGFyYW1ldGVyKGdsLlRFWFRVUkVfMkQsIGds
LlRFWFRVUkVfTUlOX0ZJTFRFUiknLCAnZ2wuTkVBUkVTVCcpOworc2hvdWxkQmUoJ2dsLmdldFRl
eFBhcmFtZXRlcihnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfUyknLCAnZ2wuQ0xBTVBf
VE9fRURHRScpOworc2hvdWxkQmUoJ2dsLmdldFRleFBhcmFtZXRlcihnbC5URVhUVVJFXzJELCBn
bC5URVhUVVJFX1dSQVBfVCknLCAnZ2wuQ0xBTVBfVE9fRURHRScpOworCisvLyBUZXN0IGdldFVu
aWZvcm0gd2l0aCBhbGwgdmFyaWFudHMgb2YgZGF0YSB0eXBlcworLy8gQm9vbGVhbiB1bmlmb3Jt
IHZhcmlhYmxlcwordmFyIGJvb2xQcm9ncmFtID0gbG9hZFByb2dyYW0oZ2wsICJyZXNvdXJjZXMv
Ym9vbFVuaWZvcm1TaGFkZXIudmVydCIsICJyZXNvdXJjZXMvbm9vcFVuaWZvcm1TaGFkZXIuZnJh
ZyIpOworc2hvdWxkQmUoJ2dsLmdldFByb2dyYW1QYXJhbWV0ZXIoYm9vbFByb2dyYW0sIGdsLkxJ
TktfU1RBVFVTKScsICd0cnVlJyk7Cit2YXIgYnZhbExvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlv
bihib29sUHJvZ3JhbSwgImJ2YWwiKTsKK3ZhciBidmFsMkxvYyA9IGdsLmdldFVuaWZvcm1Mb2Nh
dGlvbihib29sUHJvZ3JhbSwgImJ2YWwyIik7Cit2YXIgYnZhbDNMb2MgPSBnbC5nZXRVbmlmb3Jt
TG9jYXRpb24oYm9vbFByb2dyYW0sICJidmFsMyIpOwordmFyIGJ2YWw0TG9jID0gZ2wuZ2V0VW5p
Zm9ybUxvY2F0aW9uKGJvb2xQcm9ncmFtLCAiYnZhbDQiKTsKK2dsLnVzZVByb2dyYW0oYm9vbFBy
b2dyYW0pOworZ2wudW5pZm9ybTFpKGJ2YWxMb2MsIDEpOworZ2wudW5pZm9ybTJpKGJ2YWwyTG9j
LCAxLCAwKTsKK2dsLnVuaWZvcm0zaShidmFsM0xvYywgMSwgMCwgMSk7CitnbC51bmlmb3JtNGko
YnZhbDRMb2MsIDEsIDAsIDEsIDApOworc2hvdWxkQmUoJ2dsLmdldEVycm9yKCknLCAnMCcpOwor
c2hvdWxkQmUoJ2dsLmdldFVuaWZvcm0oYm9vbFByb2dyYW0sIGJ2YWxMb2MpJywgJ3RydWUnKTsK
K3Nob3VsZEJlKCdnbC5nZXRVbmlmb3JtKGJvb2xQcm9ncmFtLCBidmFsMkxvYyknLCAnWzEsIDBd
Jyk7CitzaG91bGRCZSgnZ2wuZ2V0VW5pZm9ybShib29sUHJvZ3JhbSwgYnZhbDNMb2MpJywgJ1sx
LCAwLCAxXScpOworc2hvdWxkQmUoJ2dsLmdldFVuaWZvcm0oYm9vbFByb2dyYW0sIGJ2YWw0TG9j
KScsICdbMSwgMCwgMSwgMF0nKTsKKy8vIEludGVnZXIgdW5pZm9ybSB2YXJpYWJsZXMKK3ZhciBp
bnRQcm9ncmFtID0gbG9hZFByb2dyYW0oZ2wsICJyZXNvdXJjZXMvaW50VW5pZm9ybVNoYWRlci52
ZXJ0IiwgInJlc291cmNlcy9ub29wVW5pZm9ybVNoYWRlci5mcmFnIik7CitzaG91bGRCZSgnZ2wu
Z2V0UHJvZ3JhbVBhcmFtZXRlcihpbnRQcm9ncmFtLCBnbC5MSU5LX1NUQVRVUyknLCAndHJ1ZScp
OwordmFyIGl2YWxMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24oaW50UHJvZ3JhbSwgIml2YWwi
KTsKK3ZhciBpdmFsMkxvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihpbnRQcm9ncmFtLCAiaXZh
bDIiKTsKK3ZhciBpdmFsM0xvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihpbnRQcm9ncmFtLCAi
aXZhbDMiKTsKK3ZhciBpdmFsNExvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihpbnRQcm9ncmFt
LCAiaXZhbDQiKTsKK2dsLnVzZVByb2dyYW0oaW50UHJvZ3JhbSk7CitnbC51bmlmb3JtMWkoaXZh
bExvYywgMSk7CitnbC51bmlmb3JtMmkoaXZhbDJMb2MsIDIsIDMpOworZ2wudW5pZm9ybTNpKGl2
YWwzTG9jLCA0LCA1LCA2KTsKK2dsLnVuaWZvcm00aShpdmFsNExvYywgNywgOCwgOSwgMTApOwor
c2hvdWxkQmUoJ2dsLmdldEVycm9yKCknLCAnMCcpOworc2hvdWxkQmUoJ2dsLmdldFVuaWZvcm0o
aW50UHJvZ3JhbSwgaXZhbExvYyknLCAnMScpOworc2hvdWxkQmUoJ2dsLmdldFVuaWZvcm0oaW50
UHJvZ3JhbSwgaXZhbDJMb2MpJywgJ1syLCAzXScpOworc2hvdWxkQmUoJ2dsLmdldFVuaWZvcm0o
aW50UHJvZ3JhbSwgaXZhbDNMb2MpJywgJ1s0LCA1LCA2XScpOworc2hvdWxkQmUoJ2dsLmdldFVu
aWZvcm0oaW50UHJvZ3JhbSwgaXZhbDRMb2MpJywgJ1s3LCA4LCA5LCAxMF0nKTsKKy8vIEZsb2F0
IHVuaWZvcm0gdmFyaWFibGVzCit2YXIgZmxvYXRQcm9ncmFtID0gbG9hZFByb2dyYW0oZ2wsICJy
ZXNvdXJjZXMvZmxvYXRVbmlmb3JtU2hhZGVyLnZlcnQiLCAicmVzb3VyY2VzL25vb3BVbmlmb3Jt
U2hhZGVyLmZyYWciKTsKK3Nob3VsZEJlKCdnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKGZsb2F0UHJv
Z3JhbSwgZ2wuTElOS19TVEFUVVMpJywgJ3RydWUnKTsKK3ZhciBmdmFsTG9jID0gZ2wuZ2V0VW5p
Zm9ybUxvY2F0aW9uKGZsb2F0UHJvZ3JhbSwgImZ2YWwiKTsKK3ZhciBmdmFsMkxvYyA9IGdsLmdl
dFVuaWZvcm1Mb2NhdGlvbihmbG9hdFByb2dyYW0sICJmdmFsMiIpOwordmFyIGZ2YWwzTG9jID0g
Z2wuZ2V0VW5pZm9ybUxvY2F0aW9uKGZsb2F0UHJvZ3JhbSwgImZ2YWwzIik7Cit2YXIgZnZhbDRM
b2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24oZmxvYXRQcm9ncmFtLCAiZnZhbDQiKTsKK2dsLnVz
ZVByb2dyYW0oZmxvYXRQcm9ncmFtKTsKK2dsLnVuaWZvcm0xZihmdmFsTG9jLCAxMSk7CitnbC51
bmlmb3JtMmYoZnZhbDJMb2MsIDEyLCAxMyk7CitnbC51bmlmb3JtM2YoZnZhbDNMb2MsIDE0LCAx
NSwgMTYpOworZ2wudW5pZm9ybTRmKGZ2YWw0TG9jLCAxNywgMTgsIDE5LCAyMCk7CitzaG91bGRC
ZSgnZ2wuZ2V0RXJyb3IoKScsICcwJyk7CitzaG91bGRCZSgnZ2wuZ2V0VW5pZm9ybShmbG9hdFBy
b2dyYW0sIGZ2YWxMb2MpJywgJzExJyk7CitzaG91bGRCZSgnZ2wuZ2V0VW5pZm9ybShmbG9hdFBy
b2dyYW0sIGZ2YWwyTG9jKScsICdbMTIsIDEzXScpOworc2hvdWxkQmUoJ2dsLmdldFVuaWZvcm0o
ZmxvYXRQcm9ncmFtLCBmdmFsM0xvYyknLCAnWzE0LCAxNSwgMTZdJyk7CitzaG91bGRCZSgnZ2wu
Z2V0VW5pZm9ybShmbG9hdFByb2dyYW0sIGZ2YWw0TG9jKScsICdbMTcsIDE4LCAxOSwgMjBdJyk7
CisvLyBNYXRyaXggdW5pZm9ybSB2YXJpYWJsZXMKK3ZhciBtYXRQcm9ncmFtID0gbG9hZFByb2dy
YW0oZ2wsICJyZXNvdXJjZXMvbWF0VW5pZm9ybVNoYWRlci52ZXJ0IiwgInJlc291cmNlcy9ub29w
VW5pZm9ybVNoYWRlci5mcmFnIik7CitzaG91bGRCZSgnZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlciht
YXRQcm9ncmFtLCBnbC5MSU5LX1NUQVRVUyknLCAndHJ1ZScpOwordmFyIG12YWwyTG9jID0gZ2wu
Z2V0VW5pZm9ybUxvY2F0aW9uKG1hdFByb2dyYW0sICJtdmFsMiIpOwordmFyIG12YWwzTG9jID0g
Z2wuZ2V0VW5pZm9ybUxvY2F0aW9uKG1hdFByb2dyYW0sICJtdmFsMyIpOwordmFyIG12YWw0TG9j
ID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKG1hdFByb2dyYW0sICJtdmFsNCIpOworZ2wudXNlUHJv
Z3JhbShtYXRQcm9ncmFtKTsKK2dsLnVuaWZvcm1NYXRyaXgyZnYobXZhbDJMb2MsIGZhbHNlLCBb
MSwgMiwgMywgNF0pOworZ2wudW5pZm9ybU1hdHJpeDNmdihtdmFsM0xvYywgZmFsc2UsIFs1LCA2
LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxM10pOworZ2wudW5pZm9ybU1hdHJpeDRmdihtdmFsNExv
YywgZmFsc2UsIFsxNCwgMTUsIDE2LCAxNywgMTgsIDE5LCAyMCwgMjEsIDIyLCAyMywgMjQsIDI1
LCAyNiwgMjcsIDI4LCAyOV0pOworc2hvdWxkQmUoJ2dsLmdldEVycm9yKCknLCAnMCcpOworc2hv
dWxkQmUoJ2dsLmdldFVuaWZvcm0obWF0UHJvZ3JhbSwgbXZhbDJMb2MpJywgJ1sxLCAyLCAzLCA0
XScpOworc2hvdWxkQmUoJ2dsLmdldFVuaWZvcm0obWF0UHJvZ3JhbSwgbXZhbDNMb2MpJywgJ1s1
LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxM10nKTsKK3Nob3VsZEJlKCdnbC5nZXRVbmlmb3Jt
KG1hdFByb2dyYW0sIG12YWw0TG9jKScsICdbMTQsIDE1LCAxNiwgMTcsIDE4LCAxOSwgMjAsIDIx
LCAyMiwgMjMsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjldJyk7CisKKy8vIFRlc3QgZ2V0VmVydGV4
QXR0cmliCit2YXIgYXJyYXkgPSBuZXcgV2ViR0xGbG9hdEFycmF5KFsxLCAyLCAzLCA0LCA1LCA2
LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNl0pOworZ2wuYmluZEJ1ZmZlcihn
bC5BUlJBWV9CVUZGRVIsIGJ1ZmZlcik7CitnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwg
YXJyYXksIGdsLkRZTkFNSUNfRFJBVyk7CisvLyBWZXJ0ZXggYXR0cmlidXRlIDAgaXMgc3BlY2lh
bCBpbiB0aGF0IGl0IGhhcyBubyBjdXJyZW50IHN0YXRlLCBzbworLy8gZmV0Y2hpbmcgR0xfQ1VS
UkVOVF9WRVJURVhfQVRUUklCIGdlbmVyYXRlcyBhbiBlcnJvci4gVXNlIGF0dHJpYnV0ZQorLy8g
MSBmb3IgdGhlc2UgdGVzdHMgaW5zdGVhZC4KK2dsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDEp
OworZ2wudmVydGV4QXR0cmliUG9pbnRlcigxLCA0LCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOwor
c2hvdWxkQmVOb25OdWxsKCdnbC5nZXRWZXJ0ZXhBdHRyaWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9B
UlJBWV9CVUZGRVJfQklORElORyknKTsKK3Nob3VsZEJlKCdnbC5nZXRWZXJ0ZXhBdHRyaWIoMSwg
Z2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVEKScsICd0cnVlJyk7CitzaG91bGRCZSgnZ2wu
Z2V0VmVydGV4QXR0cmliKDEsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfU0laRSknLCAnNCcpOwor
c2hvdWxkQmUoJyhnbC5nZXRWZXJ0ZXhBdHRyaWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9T
VFJJREUpID09IDApIHx8IChnbC5nZXRWZXJ0ZXhBdHRyaWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9B
UlJBWV9TVFJJREUpID09IDQgKiBnbC5zaXplSW5CeXRlcyhnbC5GTE9BVCkpJywgJ3RydWUnKTsK
K3Nob3VsZEJlKCdnbC5nZXRWZXJ0ZXhBdHRyaWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9U
WVBFKScsICdnbC5GTE9BVCcpOworc2hvdWxkQmUoJ2dsLmdldFZlcnRleEF0dHJpYigxLCBnbC5W
RVJURVhfQVRUUklCX0FSUkFZX05PUk1BTElaRUQpJywgJ2ZhbHNlJyk7CitnbC5kaXNhYmxlVmVy
dGV4QXR0cmliQXJyYXkoMSk7CitzaG91bGRCZSgnZ2wuZ2V0VmVydGV4QXR0cmliKDEsIGdsLlZF
UlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRCknLCAnZmFsc2UnKTsKK2dsLnZlcnRleEF0dHJpYjRm
KDEsIDUsIDYsIDcsIDgpOworc2hvdWxkQmUoJ2dsLmdldFZlcnRleEF0dHJpYigxLCBnbC5DVVJS
RU5UX1ZFUlRFWF9BVFRSSUIpJywgJ1s1LCA2LCA3LCA4XScpOworc2hvdWxkQmUoJ2dsLmdldEVy
cm9yKCknLCAnMCcpOworCitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwoKUHJvcGVydHkgY2hh
bmdlcyBvbjogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL2dsLW9i
amVjdC1nZXQtY2FsbHMuanMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYK
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvaW5jb3Jy
ZWN0LWNvbnRleHQtb2JqZWN0LWJlaGF2aW91ci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvaW5jb3JyZWN0LWNvbnRleHQtb2JqZWN0
LWJlaGF2aW91ci5qcwkocmV2aXNpb24gNTEyMjYpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy93ZWJnbC9zY3JpcHQtdGVzdHMvaW5jb3JyZWN0LWNvbnRleHQtb2JqZWN0LWJlaGF2aW91ci5q
cwkod29ya2luZyBjb3B5KQpAQCAtMzEsMTcgKzMxLDEyIEBAIHNob3VsZFRocm93KCJjb250ZXh0
QS5iaW5kUmVuZGVyYnVmZmVyKGMKIHNob3VsZFRocm93KCJjb250ZXh0QS5iaW5kVGV4dHVyZShj
b250ZXh0QS5URVhUVVJFXzJELCB0ZXh0dXJlQikiKTsKIHNob3VsZFRocm93KCJjb250ZXh0QS5m
cmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihjb250ZXh0QS5GUkFNRUJVRkZFUiwgY29udGV4dEEuREVQ
VEhfQVRUQUNITUVOVCwgY29udGV4dEEuUkVOREVSQlVGRkVSLCByZW5kZXJCdWZmZXJCKSIpOwog
c2hvdWxkVGhyb3coImNvbnRleHRBLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGNvbnRleHRBLkZSQU1F
QlVGRkVSLCBjb250ZXh0QS5DT0xPUl9BVFRBQ0hNRU5UMCwgY29udGV4dEEuVEVYVFVSRV8yRCwg
dGV4dHVyZUIsIDApIik7Ci1zaG91bGRUaHJvdygiY29udGV4dEEuZ2V0UHJvZ3JhbWkocHJvZ3Jh
bUIsIDApIik7Ci1zaG91bGRUaHJvdygiY29udGV4dEEuZ2V0UHJvZ3JhbWl2KHByb2dyYW1CLCAw
KSIpOworc2hvdWxkVGhyb3coImNvbnRleHRBLmdldFByb2dyYW1QYXJhbWV0ZXIocHJvZ3JhbUIs
IDApIik7CiBzaG91bGRUaHJvdygiY29udGV4dEEuZ2V0UHJvZ3JhbUluZm9Mb2cocHJvZ3JhbUIs
IDApIik7Ci1zaG91bGRUaHJvdygiY29udGV4dEEuZ2V0U2hhZGVyaShzaGFkZXJCLCAwKSIpOwot
c2hvdWxkVGhyb3coImNvbnRleHRBLmdldFNoYWRlcml2KHNoYWRlckIsIDApIik7CitzaG91bGRU
aHJvdygiY29udGV4dEEuZ2V0U2hhZGVyUGFyYW1ldGVyKHNoYWRlckIsIDApIik7CiBzaG91bGRU
aHJvdygiY29udGV4dEEuZ2V0U2hhZGVySW5mb0xvZyhzaGFkZXJCLCAwKSIpOwogc2hvdWxkVGhy
b3coImNvbnRleHRBLmdldFNoYWRlclNvdXJjZShzaGFkZXJCKSIpOwotc2hvdWxkVGhyb3coImNv
bnRleHRBLmdldFVuaWZvcm1mKHByb2dyYW1CLCBsb2NhdGlvbkEpIik7Ci1zaG91bGRUaHJvdygi
Y29udGV4dEEuZ2V0VW5pZm9ybWZ2KHByb2dyYW1CLCBsb2NhdGlvbkEpIik7Ci1zaG91bGRUaHJv
dygiY29udGV4dEEuZ2V0VW5pZm9ybWkocHJvZ3JhbUIsIGxvY2F0aW9uQSkiKTsKLXNob3VsZFRo
cm93KCJjb250ZXh0QS5nZXRVbmlmb3JtaXYocHJvZ3JhbUIsIGxvY2F0aW9uQSkiKTsKK3Nob3Vs
ZFRocm93KCJjb250ZXh0QS5nZXRVbmlmb3JtKHByb2dyYW1CLCBsb2NhdGlvbkEpIik7CiBzaG91
bGRUaHJvdygiY29udGV4dEEuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW1CLCAndV9tb2RlbFZp
ZXdQcm9qTWF0cml4JykiKTsKIAogc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9udWxsLW9iamVjdC1iZWhh
dmlvdXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2Ny
aXB0LXRlc3RzL251bGwtb2JqZWN0LWJlaGF2aW91ci5qcwkocmV2aXNpb24gNTEyMjYpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvbnVsbC1vYmplY3QtYmVo
YXZpb3VyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yMCwxNyArMjAsMTIgQEAgc2hvdWxkQmVVbmRl
ZmluZWQoImNvbnRleHQuYmluZFJlbmRlcmJ1Zgogc2hvdWxkQmVVbmRlZmluZWQoImNvbnRleHQu
YmluZFRleHR1cmUoY29udGV4dC5URVhUVVJFXzJELCAwKSIpOwogc2hvdWxkQmVVbmRlZmluZWQo
ImNvbnRleHQuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoY29udGV4dC5GUkFNRUJVRkZFUiwgY29u
dGV4dC5ERVBUSF9BVFRBQ0hNRU5ULCBjb250ZXh0LlJFTkRFUkJVRkZFUiwgMCkiKTsKIHNob3Vs
ZEJlVW5kZWZpbmVkKCJjb250ZXh0LmZyYW1lYnVmZmVyVGV4dHVyZTJEKGNvbnRleHQuRlJBTUVC
VUZGRVIsIGNvbnRleHQuQ09MT1JfQVRUQUNITUVOVDAsIGNvbnRleHQuVEVYVFVSRV8yRCwgMCwg
MCkiKTsKLXNob3VsZFRocm93KCJjb250ZXh0LmdldFByb2dyYW1pKHVuZGVmaW5lZCwgMCkiKTsK
LXNob3VsZFRocm93KCJjb250ZXh0LmdldFByb2dyYW1pdih1bmRlZmluZWQsIDApIik7CitzaG91
bGRUaHJvdygiY29udGV4dC5nZXRQcm9ncmFtUGFyYW1ldGVyKHVuZGVmaW5lZCwgMCkiKTsKIHNo
b3VsZFRocm93KCJjb250ZXh0LmdldFByb2dyYW1JbmZvTG9nKHVuZGVmaW5lZCwgMCkiKTsKLXNo
b3VsZFRocm93KCJjb250ZXh0LmdldFNoYWRlcmkodW5kZWZpbmVkLCAwKSIpOwotc2hvdWxkVGhy
b3coImNvbnRleHQuZ2V0U2hhZGVyaXYodW5kZWZpbmVkLCAwKSIpOworc2hvdWxkVGhyb3coImNv
bnRleHQuZ2V0U2hhZGVyUGFyYW1ldGVyKHVuZGVmaW5lZCwgMCkiKTsKIHNob3VsZFRocm93KCJj
b250ZXh0LmdldFNoYWRlckluZm9Mb2codW5kZWZpbmVkLCAwKSIpOwogc2hvdWxkVGhyb3coImNv
bnRleHQuZ2V0U2hhZGVyU291cmNlKHVuZGVmaW5lZCkiKTsKLXNob3VsZFRocm93KCJjb250ZXh0
LmdldFVuaWZvcm1mKHVuZGVmaW5lZCwgMCkiKTsKLXNob3VsZFRocm93KCJjb250ZXh0LmdldFVu
aWZvcm1mdih1bmRlZmluZWQsIDApIik7Ci1zaG91bGRUaHJvdygiY29udGV4dC5nZXRVbmlmb3Jt
aSh1bmRlZmluZWQsIDApIik7Ci1zaG91bGRUaHJvdygiY29udGV4dC5nZXRVbmlmb3JtaXYodW5k
ZWZpbmVkLCAwKSIpOworc2hvdWxkVGhyb3coImNvbnRleHQuZ2V0VW5pZm9ybSh1bmRlZmluZWQs
IDApIik7CiBzaG91bGRUaHJvdygiY29udGV4dC5nZXRVbmlmb3JtTG9jYXRpb24odW5kZWZpbmVk
LCAnZm9vJykiKTsKIAogc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzCShyZXZpc2lvbiA1MTIyNikK
KysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTksNiArMTU5LDQyIEBAIGZ1bmN0aW9uIHNob3VsZEV2YWx1YXRlVG8oYWN0
dWFsLCBleHBlY3QKICAgfQogfQogCitmdW5jdGlvbiBzaG91bGRCZU5vblplcm8oX2EpCit7Cisg
IHZhciBleGNlcHRpb247CisgIHZhciBfYXY7CisgIHRyeSB7CisgICAgIF9hdiA9IGV2YWwoX2Ep
OworICB9IGNhdGNoIChlKSB7CisgICAgIGV4Y2VwdGlvbiA9IGU7CisgIH0KKworICBpZiAoZXhj
ZXB0aW9uKQorICAgIHRlc3RGYWlsZWQoX2EgKyAiIHNob3VsZCBiZSBub24temVyby4gVGhyZXcg
ZXhjZXB0aW9uICIgKyBleGNlcHRpb24pOworICBlbHNlIGlmIChfYXYgIT0gMCkKKyAgICB0ZXN0
UGFzc2VkKF9hICsgIiBpcyBub24temVyby4iKTsKKyAgZWxzZQorICAgIHRlc3RGYWlsZWQoX2Eg
KyAiIHNob3VsZCBiZSBub24temVyby4gV2FzICIgKyBfYXYpOworfQorCitmdW5jdGlvbiBzaG91
bGRCZU5vbk51bGwoX2EpCit7CisgIHZhciBleGNlcHRpb247CisgIHZhciBfYXY7CisgIHRyeSB7
CisgICAgIF9hdiA9IGV2YWwoX2EpOworICB9IGNhdGNoIChlKSB7CisgICAgIGV4Y2VwdGlvbiA9
IGU7CisgIH0KKworICBpZiAoZXhjZXB0aW9uKQorICAgIHRlc3RGYWlsZWQoX2EgKyAiIHNob3Vs
ZCBiZSBub24tbnVsbC4gVGhyZXcgZXhjZXB0aW9uICIgKyBleGNlcHRpb24pOworICBlbHNlIGlm
IChfYXYgIT0gbnVsbCkKKyAgICB0ZXN0UGFzc2VkKF9hICsgIiBpcyBub24tbnVsbC4iKTsKKyAg
ZWxzZQorICAgIHRlc3RGYWlsZWQoX2EgKyAiIHNob3VsZCBiZSBub24tbnVsbC4gV2FzICIgKyBf
YXYpOworfQorCiBmdW5jdGlvbiBzaG91bGRCZVVuZGVmaW5lZChfYSkKIHsKICAgdmFyIGV4Y2Vw
dGlvbjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43641</attachid>
            <date>2009-11-20 20:41:08 -0800</date>
            <delta_ts>2009-11-23 11:31:18 -0800</delta_ts>
            <desc>Revised patch</desc>
            <filename>get-calls.patch</filename>
            <type>text/plain</type>
            <size>246195</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MTI3OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjI2IEBACisyMDA5LTExLTIwICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBD
aGFuZ2UgZ2V0Li4uIGNhbGxzIHRvIGxhdGVzdCBzcGVjCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDA5MQorCisgICAgICAgIFJlbW92ZWQgb2xkIHZl
cnNpb25zIG9mIGdldCBjYWxscyBvbiBXZWJHTFJlbmRlcmluZ0NvbnRleHQgYW5kCisgICAgICAg
IGFkZGVkIG5ldyBvbmVzIHBlciBzcGVjIHJldHVybmluZyAiYW55Ii4gTmV3IGNvZGUgc2ltcGxp
ZmllcworICAgICAgICBHcmFwaGljc0NvbnRleHQzRCBhbmQgZml4ZXMgcHJldmlvdXNseSB1bmlt
cGxlbWVudGVkIHJvdXRpbmVzLgorICAgICAgICBBZGRlZCBjdXN0b20gSlMgYW5kIFY4IGJpbmRp
bmdzLiBBZGRlZCBleGhhdXN0aXZlIHRlc3QgY2FzZQorICAgICAgICBleGVyY2lzaW5nIGFsbCBu
ZXcgY29kZSBwYXRocy4gVXBkYXRlZCBwcmVleGlzdGluZyB0ZXN0IGNhc2VzIGZvcgorICAgICAg
ICBuZXcgQVBJcy4gRml4ZWQgcHJlZXhpc3RpbmcgYnVncyBpbiBXZWJLaXQncyBhbmQgQ2hyb21l
J3MgV2ViR0wKKyAgICAgICAgaW1wbGVtZW50YXRpb25zLgorCisgICAgICAgIFJhbiBXZWJHTCBs
YXlvdXQgdGVzdHMgaW4gV2ViS2l0IChjbGVhbikgYW5kIENocm9tZSAoY291cGxlIG9mCisgICAg
ICAgIHByZWV4aXN0aW5nIGtub3duIGZhaWx1cmVzKSBhbmQgbWFudWFsIFdlYkdMIHRlc3RzIGlu
IGJvdGgKKyAgICAgICAgYnJvd3NlcnMuCisKKyAgICAgICAgVGVzdDogZmFzdC9jYW52YXMvd2Vi
Z2wvZ2wtb2JqZWN0LWdldC1jYWxscy5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnRvSlMpOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKFdlYkNvcmU6Omdl
dE9iamVjdFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpnZXRQcm9ncmFtUGFyYW1ldGVy
SGVscGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRC
dWZmZXJQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQcm9ncmFtUGFyYW1ldGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRSZW5kZXJidWZmZXJQYXJh
bWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFNo
YWRlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Z2V0VGV4UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnZXRVbmlmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnZXRWZXJ0ZXhBdHRyaWIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OEN1c3RvbUJpbmRpbmcuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJl
bmRlcmluZ0NvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9WOCk6CisgICAg
ICAgIChXZWJDb3JlOjopOgorICAgICAgICAoV2ViQ29yZTo6Z2V0T2JqZWN0UGFyYW1ldGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OmdldFByb2dyYW1QYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0FMTEJBQ0tfRlVOQ19ERUNMKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNPYmpl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzT2JqZWN0OjpDYW52YXNPYmplY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzT2JqZWN0OjpzZXRPYmplY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzT2JqZWN0OjpkZWxldGVPYmplY3QpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc09iamVjdC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xCdWZmZXI6OldlYkdMQnVmZmVyKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TEJ1ZmZlci5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZvOjpXZWJHTEdldEluZm8pOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZvOjp+V2ViR0xHZXRJbmZvKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMR2V0SW5mbzo6Z2V0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEdldElu
Zm86OmdldEJvb2wpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZvOjpnZXRGbG9hdCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEdldEluZm86OmdldExvbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xHZXRJbmZvOjpnZXRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xH
ZXRJbmZvOjpnZXRVbnNpZ25lZExvbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZv
OjpnZXRXZWJHTEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEdldEluZm86OmdldFdl
YkdMRmxvYXRBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEdldEluZm86OmdldFdlYkdM
RnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZvOjpnZXRXZWJHTElu
dEFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMR2V0SW5mbzo6Z2V0V2ViR0xQcm9ncmFt
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMR2V0SW5mbzo6Z2V0V2ViR0xSZW5kZXJidWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZvOjpnZXRXZWJHTFRleHR1cmUpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZvOjpnZXRXZWJHTFVuc2lnbmVkQnl0ZUFycmF5KToK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEdldEluZm8uaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTEdldEluZm86Oik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJidWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJidWZmZXI6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmJ1ZmZlcjo6V2ViR0xSZW5kZXJidWZm
ZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmg6CisgICAgICAg
ICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNsZWFudXBIZWxwZXI6OkNsZWFudXBIZWxwZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2xl
YW51cEhlbHBlcjo6fkNsZWFudXBIZWxwZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjphY3RpdmVUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6YXR0YWNoU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmluZEF0dHJpYkxvY2F0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmluZEJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJpbmRGcmFtZWJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJpbmRSZW5kZXJidWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpiaW5kVGV4dHVyZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJsZW5kQ29sb3IpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpibGVuZEVxdWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmxlbmRFcXVhdGlvblNlcGFyYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmxlbmRGdW5jKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmxlbmRGdW5jU2VwYXJhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyU3ViRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNoZWNrRnJhbWVidWZm
ZXJTdGF0dXMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpjbGVh
cik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNsZWFyQ29sb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpjbGVhckRlcHRoKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y2xlYXJTdGVuY2lsKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y29sb3JNYXNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y29tcGlsZVNoYWRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNvcHlUZXhJbWFnZTJEKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y29weVRleFN1YkltYWdl
MkQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpjdWxsRmFjZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRlcHRoRnVuYyk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRlcHRoTWFzayk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRlcHRoUmFuZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkZXRhY2hTaGFkZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkaXNhYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZHJhd0FycmF5cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRyYXdFbGVtZW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmVuYWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmVuYWJsZVZlcnRleEF0dHJpYkFycmF5
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZmluaXNoKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Zmx1c2gpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmZyYW1lYnVmZmVyVGV4
dHVyZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZnJvbnRG
YWNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2VuZXJhdGVN
aXBtYXApOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRCdWZm
ZXJQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQcm9ncmFtUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UHJvZ3JhbUluZm9Mb2cpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTaGFkZXJQYXJh
bWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTaGFk
ZXJJbmZvTG9nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0
U2hhZGVyU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6
Z2V0U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0
VGV4UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6
Z2V0VW5pZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omdl
dFZlcnRleEF0dHJpYik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmhpbnQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpsaW5lV2lk
dGgpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpsaW5rUHJvZ3Jh
bSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnBpeGVsU3RvcmVp
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6cG9seWdvbk9mZnNl
dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnJlYWRQaXhlbHMp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpyZWxlYXNlU2hhZGVy
Q29tcGlsZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpyZW5k
ZXJidWZmZXJTdG9yYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dDo6c2FtcGxlQ292ZXJhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpzY2lzc29yKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6
c2hhZGVyU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6
c3RlbmNpbEZ1bmMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpz
dGVuY2lsRnVuY1NlcGFyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6c3RlbmNpbE1hc2spOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpzdGVuY2lsTWFza1NlcGFyYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dDo6c3RlbmNpbE9wKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dDo6c3RlbmNpbE9wU2VwYXJhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0Ojp0ZXhJbWFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dDo6dGV4UGFyYW1ldGVyZik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OnRleFBhcmFtZXRlcmkpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6dW5pZm9ybTFmKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dDo6dW5pZm9ybTFmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OnVuaWZvcm0xaSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnVuaWZvcm0xaXYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0Ojp1bmlmb3JtMmYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
Ojp1bmlmb3JtMmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6
dW5pZm9ybTJpKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5p
Zm9ybTJpdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZv
cm0zZik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0z
ZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2kp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2l2KToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTRmKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTRmdik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00aSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00aXYpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4MmZ2KToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDNmdik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXg0ZnYp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1c2VQcm9ncmFtKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVQcm9ncmFt
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmli
MWYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRy
aWIxZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhB
dHRyaWIyZik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZlcnRl
eEF0dHJpYjJmdik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZl
cnRleEF0dHJpYjNmKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6
dmVydGV4QXR0cmliM2Z2KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dDo6dmVydGV4QXR0cmliNGYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0Ojp2ZXJ0ZXhBdHRyaWI0ZnYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp2ZXJ0ZXhBdHRyaWJQb2ludGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6dmlld3BvcnQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpkZXRhY2hBbmRSZW1vdmVBbGxPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0Qm9vbGVhblBhcmFtZXRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEZsb2F0UGFyYW1ldGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0SW50UGFyYW1ldGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0TG9uZ1BhcmFtZXRlcik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFVuc2lnbmVkTG9u
Z1BhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omdl
dFdlYkdMRmxvYXRBcnJheVBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmdldFdlYkdMSW50QXJyYXlQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRXZWJHTFVuc2lnbmVkQnl0ZUFycmF5UGFyYW1l
dGVyKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaDoKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRsOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFRl
eHR1cmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFRleHR1cmU6OldlYkdMVGV4
dHVyZSk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmg6CisgICAgICAgICog
bWFudWFsLXRlc3RzL3dlYmdsL3Jlc291cmNlcy91dGlsczNkLmpzOgorICAgICAgICAoaW5pdFdl
YkdMKToKKyAgICAgICAgKGxvYWRTaGFkZXIpOgorICAgICAgICAoRnJhbWVyYXRlLnByb3RvdHlw
ZS5zbmFwc2hvdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
M0QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjopOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6YmluZFJlbmRlcmJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0Qm9vbGVhbnYpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEJ1ZmZlclBhcmFtZXRlcml2KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRGbG9hdHYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbnRlZ2Vydik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbWl2KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJp
dik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyaXYpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFRleFBhcmFtZXRlcmZ2KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRUZXhQYXJhbWV0ZXJpdik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWZ2KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtaXYpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYmZ2KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJpdik6CisKIDIw
MDktMTEtMjAgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBCZXRoIERha2luLgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDUxMjc4KQorKysgV2Vi
Q29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTEyODMsNiArMTI4Myw4IEBACiAg
ICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xGbG9hdEFycmF5LmgnLAogICAgICAgICAgICAg
J2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwJywKICAgICAgICAgICAgICdodG1sL2Nh
bnZhcy9XZWJHTEZyYW1lYnVmZmVyLmgnLAorICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdM
R2V0SW5mby5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5oJywK
ICAgICAgICAgICAgICdodG1sL2NhbnZhcy9DYW52YXNHcmFkaWVudC5jcHAnLAogICAgICAgICAg
ICAgJ2h0bWwvY2FudmFzL0NhbnZhc0dyYWRpZW50LmgnLAogICAgICAgICAgICAgJ2h0bWwvY2Fu
dmFzL1dlYkdMSW50QXJyYXkuY3BwJywKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA1MTI3OCkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMTk5LDYgKzExOTksOCBA
QAogCQk2NURGMzIzQzA5RDFERTY1MDAwQkUzMjUgLyogSlNDYW52YXNQYXR0ZXJuLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NURGMzIzNjA5RDFERTY1
MDAwQkUzMjUgLyogSlNDYW52YXNQYXR0ZXJuLmggKi87IH07CiAJCTY1REYzMjYxMDlEMUUxOTkw
MDBCRTMyNSAvKiBVc2VyQWdlbnRTdHlsZVNoZWV0c0RhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2NTgxQUYwOUQxNEVFNjAwMEU2MUQ3IC8q
IFVzZXJBZ2VudFN0eWxlU2hlZXRzRGF0YS5jcHAgKi87IH07CiAJCTY1RkVBODY5MDk4MzNBREUw
MEJFRDRBQiAvKiBQYWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDY1RkVBODY4MDk4MzNBREUwMEJFRDRBQiAvKiBQYWdlLmNwcCAqLzsgfTsKKwkJ
NkU0N0U2NjAxMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMR2V0SW5mby5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTQ3RTY1RTEwQjc5NDRCMDBCMTg2
QzggLyogV2ViR0xHZXRJbmZvLmNwcCAqLzsgfTsKKwkJNkU0N0U2NjExMEI3OTQ0QjAwQjE4NkM4
IC8qIFdlYkdMR2V0SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNkU0N0U2NUYxMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMR2V0SW5mby5oICovOyB9
OwogCQk3MjYyNkUwMjBFRjAyMkZFMDBBMDdFMjAgLyogRm9udEZhc3RQYXRoLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNjI2RTAxMEVGMDIyRkUw
MEEwN0UyMCAvKiBGb250RmFzdFBhdGguY3BwICovOyB9OwogCQk3NTQxMzNBODEwMkUwMEU4MDAw
NzVEMDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU0MTMzQTcxMDJFMDBFODAwMDc1RDAwIC8qIEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQuaCAqLzsgfTsKIAkJNzU0MTMzQUExMDJFMDBGNDAwMDc1RDAwIC8q
IEluc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzU0MTMzQTkxMDJFMDBGNDAwMDc1RDAwIC8qIEluc3BlY3RvclRp
bWVsaW5lQWdlbnQuY3BwICovOyB9OwpAQCAtNjUwNyw2ICs2NTA5LDggQEAKIAkJNjVERjMyMzYw
OUQxREU2NTAwMEJFMzI1IC8qIEpTQ2FudmFzUGF0dGVybi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNDYW52YXNQYXR0ZXJuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTY1RjgwNjk3MDU0RDlGODYwMDhCRjc3NiAvKiBCbG9ja0V4Y2VwdGlvbnMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRo
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBC
bG9ja0V4Y2VwdGlvbnMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsg
dXNlc1RhYnMgPSAwOyB9OwogCQk2NUZFQTg2ODA5ODMzQURFMDBCRUQ0QUIgLyogUGFnZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTZFNDdFNjVFMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEdl
dEluZm8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViR0xHZXRJ
bmZvLmNwcDsgcGF0aCA9IGNhbnZhcy9XZWJHTEdldEluZm8uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk2RTQ3RTY1RjEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xHZXRJbmZvLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkdMR2V0SW5mby5oOyBwYXRoID0g
Y2FudmFzL1dlYkdMR2V0SW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MjYy
NkUwMTBFRjAyMkZFMDBBMDdFMjAgLyogRm9udEZhc3RQYXRoLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvbnRGYXN0UGF0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTc1NDEzM0E3MTAyRTAwRTgwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvclRpbWVs
aW5lQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzU0MTMzQTkxMDJFMDBG
NDAwMDc1RDAwIC8qIEluc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDY0MCw2ICsxMDY0NCw4IEBACiAJCQkJNDlDN0I5QUUx
MDQyRDMyRTAwMDlENDQ3IC8qIFdlYkdMRnJhbWVidWZmZXIuY3BwICovLAogCQkJCTQ5QzdCOUFG
MTA0MkQzMkUwMDA5RDQ0NyAvKiBXZWJHTEZyYW1lYnVmZmVyLmggKi8sCiAJCQkJNDlDN0I5QjAx
MDQyRDMyRTAwMDlENDQ3IC8qIFdlYkdMRnJhbWVidWZmZXIuaWRsICovLAorCQkJCTZFNDdFNjVF
MTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEdldEluZm8uY3BwICovLAorCQkJCTZFNDdFNjVGMTBC
Nzk0NEIwMEIxODZDOCAvKiBXZWJHTEdldEluZm8uaCAqLywKIAkJCQk0OTQ4NEZCMzEwMkNGMjND
MDAxODdERDMgLyogQ2FudmFzR3JhZGllbnQuY3BwICovLAogCQkJCTQ5NDg0RkI0MTAyQ0YyM0Mw
MDE4N0REMyAvKiBDYW52YXNHcmFkaWVudC5oICovLAogCQkJCTQ5NDg0RkI1MTAyQ0YyM0MwMDE4
N0REMyAvKiBDYW52YXNHcmFkaWVudC5pZGwgKi8sCkBAIC0xODEzNCw2ICsxODE0MCw3IEBACiAJ
CQkJRTEyNDc0ODQxMEFBMTYxRDAwQjc5NDkzIC8qIEF1dGhlbnRpY2F0aW9uQ2xpZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQk5MzgyREY1ODEwQThENUM5MDA5MjU2NTIgLyogQ29sb3JTcGFjZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQUIzMUM5MUUxMEFFMUI4RTAwMEM3QjkyIC8qIExpbmVDbGFt
cFZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQk2RTQ3RTY2MTEwQjc5NDRCMDBCMTg2QzggLyog
V2ViR0xHZXRJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTIwMjc3LDYgKzIwMjg0LDcgQEAKIAkJ
CQkxNDc5RkFFRjEwOUFFMzc1MDBERUQ2NTUgLyogUmVuZGVyUnVieUJhc2UuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMTQ3OUZBRjExMDlBRTM3NTAwREVENjU1IC8qIFJlbmRlclJ1YnlSdW4uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3OUZBRjMxMDlBRTM3NTAwREVENjU1IC8qIFJlbmRlclJ1
YnlUZXh0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTZFNDdFNjYwMTBCNzk0NEIwMEIxODZDOCAv
KiBXZWJHTEdldEluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdz
L2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAkocmV2aXNp
b24gNTEyNzgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0
Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTEgKzMzLDI1IEBACiAjaW5jbHVkZSAi
RXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTEltYWdlRWxlbWVudC5oIgotI2luY2x1ZGUgIkpTV2ViR0xGbG9hdEFycmF5LmgiCi0j
aW5jbHVkZSAiSlNXZWJHTEludEFycmF5LmgiCiAjaW5jbHVkZSAiSlNIVE1MQ2FudmFzRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkpTSFRNTEltYWdlRWxlbWVudC5oIgorI2luY2x1ZGUgIkpTV2ViR0xC
dWZmZXIuaCIKKyNpbmNsdWRlICJKU1dlYkdMRmxvYXRBcnJheS5oIgorI2luY2x1ZGUgIkpTV2Vi
R0xGcmFtZWJ1ZmZlci5oIgorI2luY2x1ZGUgIkpTV2ViR0xJbnRBcnJheS5oIgorI2luY2x1ZGUg
IkpTV2ViR0xQcm9ncmFtLmgiCisjaW5jbHVkZSAiSlNXZWJHTFJlbmRlcmJ1ZmZlci5oIgorI2lu
Y2x1ZGUgIkpTV2ViR0xTaGFkZXIuaCIKKyNpbmNsdWRlICJKU1dlYkdMVGV4dHVyZS5oIgorI2lu
Y2x1ZGUgIkpTV2ViR0xVbnNpZ25lZEJ5dGVBcnJheS5oIgogI2luY2x1ZGUgIkpTV2ViS2l0Q1NT
TWF0cml4LmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJXZWJHTEJ1
ZmZlci5oIgorI2luY2x1ZGUgIldlYkdMR2V0SW5mby5oIgorI2luY2x1ZGUgIldlYkdMRmxvYXRB
cnJheS5oIgorI2luY2x1ZGUgIldlYkdMRnJhbWVidWZmZXIuaCIKKyNpbmNsdWRlICJXZWJHTElu
dEFycmF5LmgiCisjaW5jbHVkZSAiV2ViR0xQcm9ncmFtLmgiCiAjaW5jbHVkZSA8cnVudGltZS9F
cnJvci5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL093bkZh
c3RNYWxsb2NQdHIuaD4KQEAgLTgxLDYgKzk1LDIxNCBAQCBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpidWZmZXJTCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKK0pTVmFs
dWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGNvbnN0IFdlYkdMR2V0SW5mbyYgaW5mbykKK3sKKyAgICBzd2l0Y2ggKGluZm8uZ2V0VHlwZSgp
KSB7CisgICAgY2FzZSBXZWJHTEdldEluZm86OlRfQk9PTDoKKyAgICAgICAgcmV0dXJuIGpzQm9v
bGVhbihpbmZvLmdldEJvb2woKSk7CisgICAgY2FzZSBXZWJHTEdldEluZm86OlRfRkxPQVQ6Cisg
ICAgICAgIHJldHVybiBqc051bWJlcihleGVjLCBpbmZvLmdldEZsb2F0KCkpOworICAgIGNhc2Ug
V2ViR0xHZXRJbmZvOjpUX0xPTkc6CisgICAgICAgIHJldHVybiBqc051bWJlcihleGVjLCBpbmZv
LmdldExvbmcoKSk7CisgICAgY2FzZSBXZWJHTEdldEluZm86OlRfTlVMTDoKKyAgICAgICAgcmV0
dXJuIGpzTnVsbCgpOworICAgIGNhc2UgV2ViR0xHZXRJbmZvOjpUX1NUUklORzoKKyAgICAgICAg
cmV0dXJuIGpzU3RyaW5nKGV4ZWMsIGluZm8uZ2V0U3RyaW5nKCkpOworICAgIGNhc2UgV2ViR0xH
ZXRJbmZvOjpUX1VOU0lHTkVEX0xPTkc6CisgICAgICAgIHJldHVybiBqc051bWJlcihleGVjLCBp
bmZvLmdldFVuc2lnbmVkTG9uZygpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6VF9XRUJHTEJV
RkZFUjoKKyAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBpbmZvLmdldFdl
YkdMQnVmZmVyKCkpOworICAgIGNhc2UgV2ViR0xHZXRJbmZvOjpUX1dFQkdMRkxPQVRBUlJBWToK
KyAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBpbmZvLmdldFdlYkdMRmxv
YXRBcnJheSgpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6VF9XRUJHTEZSQU1FQlVGRkVSOgor
ICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIGluZm8uZ2V0V2ViR0xGcmFt
ZWJ1ZmZlcigpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6VF9XRUJHTElOVEFSUkFZOgorICAg
ICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIGluZm8uZ2V0V2ViR0xJbnRBcnJh
eSgpKTsKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50IFdlYkdMT2JqZWN0QXJyYXkKKyAgICAvLyBj
YXNlIFdlYkdMR2V0SW5mbzo6VF9XRUJHTE9CSkVDVEFSUkFZOgorICAgIGNhc2UgV2ViR0xHZXRJ
bmZvOjpUX1dFQkdMUFJPR1JBTToKKyAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2Jq
ZWN0LCBpbmZvLmdldFdlYkdMUHJvZ3JhbSgpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6VF9X
RUJHTFJFTkRFUkJVRkZFUjoKKyAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0
LCBpbmZvLmdldFdlYkdMUmVuZGVyYnVmZmVyKCkpOworICAgIGNhc2UgV2ViR0xHZXRJbmZvOjpU
X1dFQkdMVEVYVFVSRToKKyAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBp
bmZvLmdldFdlYkdMVGV4dHVyZSgpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6VF9XRUJHTFVO
U0lHTkVEQllURUFSUkFZOgorICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3Qs
IGluZm8uZ2V0V2ViR0xVbnNpZ25lZEJ5dGVBcnJheSgpKTsKKyAgICBkZWZhdWx0OgorICAgICAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9
Cit9CisKK2VudW0gT2JqZWN0VHlwZSB7CisgICAga0J1ZmZlciwga1JlbmRlcmJ1ZmZlciwga1Rl
eHR1cmUsIGtWZXJ0ZXhBdHRyaWIKK307CisKK3N0YXRpYyBKU1ZhbHVlIGdldE9iamVjdFBhcmFt
ZXRlcihKU1dlYkdMUmVuZGVyaW5nQ29udGV4dCogb2JqLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IEFyZ0xpc3QmIGFyZ3MsIE9iamVjdFR5cGUgb2JqZWN0VHlwZSkKK3sKKyAgICBpZiAoYXJncy5z
aXplKCkgIT0gMikKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgU3ludGF4RXJyb3Ip
OworCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0
KiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0Kj4ob2JqLT5pbXBs
KCkpOworICAgIHVuc2lnbmVkIHRhcmdldCA9IGFyZ3MuYXQoMCkudG9JbnQzMihleGVjKTsKKyAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OworICAgIHVuc2lnbmVkIHBuYW1lID0gYXJncy5hdCgxKS50b0ludDMyKGV4ZWMpOworICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cisg
ICAgV2ViR0xHZXRJbmZvIGluZm87CisgICAgc3dpdGNoIChvYmplY3RUeXBlKSB7CisgICAgY2Fz
ZSBrQnVmZmVyOgorICAgICAgICBpbmZvID0gY29udGV4dC0+Z2V0QnVmZmVyUGFyYW1ldGVyKHRh
cmdldCwgcG5hbWUsIGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBrUmVuZGVyYnVmZmVy
OgorICAgICAgICBpbmZvID0gY29udGV4dC0+Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKHRhcmdl
dCwgcG5hbWUsIGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBrVGV4dHVyZToKKyAgICAg
ICAgaW5mbyA9IGNvbnRleHQtPmdldFRleFBhcmFtZXRlcih0YXJnZXQsIHBuYW1lLCBlYyk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2Uga1ZlcnRleEF0dHJpYjoKKyAgICAgICAgLy8gdGFyZ2V0
ID0+IGluZGV4CisgICAgICAgIGluZm8gPSBjb250ZXh0LT5nZXRWZXJ0ZXhBdHRyaWIodGFyZ2V0
LCBwbmFtZSwgZWMpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgaWYgKGVjKSB7CisgICAg
ICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOworICAgIH0KKyAgICByZXR1cm4gdG9KUyhleGVjLCBvYmotPmdsb2JhbE9iamVjdCgpLCBp
bmZvKTsKK30KKworZW51bSBXaGljaFByb2dyYW1DYWxsIHsKKyAgICBrUHJvZ3JhbVBhcmFtZXRl
ciwga1VuaWZvcm0KK307CisKK3N0YXRpYyBKU1ZhbHVlIGdldFByb2dyYW1QYXJhbWV0ZXJIZWxw
ZXIoSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQqIG9iaiwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBB
cmdMaXN0JiBhcmdzLCBXaGljaFByb2dyYW1DYWxsIHByb2dyYW1DYWxsKQoreworICAgIGlmIChh
cmdzLnNpemUoKSAhPSAyKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBTeW50YXhF
cnJvcik7CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHQqPihvYmot
PmltcGwoKSk7CisgICAgV2ViR0xQcm9ncmFtKiBwcm9ncmFtID0gdG9XZWJHTFByb2dyYW0oYXJn
cy5hdCgwKSk7CisgICAgdW5zaWduZWQgcG5hbWUgPSBhcmdzLmF0KDEpLnRvSW50MzIoZXhlYyk7
CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKKyAgICBXZWJHTEdldEluZm8gaW5mbzsKKyAgICBzd2l0Y2ggKHByb2dyYW1DYWxsKSB7
CisgICAgY2FzZSBrUHJvZ3JhbVBhcmFtZXRlcjoKKyAgICAgICAgaW5mbyA9IGNvbnRleHQtPmdl
dFByb2dyYW1QYXJhbWV0ZXIocHJvZ3JhbSwgcG5hbWUsIGVjKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBrVW5pZm9ybToKKyAgICAgICAgLy8gcG5hbWUgLT4gbG9jYXRpb24KKyAgICAgICAg
aW5mbyA9IGNvbnRleHQtPmdldFVuaWZvcm0ocHJvZ3JhbSwgcG5hbWUsIGVjKTsKKyAgICAgICAg
YnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIGlmIChlYykgeworICAgICAgICBzZXRET01FeGNlcHRpb24oZXhl
YywgZWMpOworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisgICAgcmV0dXJu
IHRvSlMoZXhlYywgb2JqLT5nbG9iYWxPYmplY3QoKSwgaW5mbyk7Cit9CisKK0pTVmFsdWUgSlNX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclBhcmFtZXRlcihFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCit7CisgICAgcmV0dXJuIGdldE9iamVjdFBhcmFtZXRlcih0
aGlzLCBleGVjLCBhcmdzLCBrQnVmZmVyKTsKK30KKworSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5n
Q29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICBpZiAoYXJncy5zaXplKCkgIT0gMykKKyAg
ICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgU3ludGF4RXJyb3IpOworCisgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CisgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0ID0gc3Rh
dGljX2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0Kj4oaW1wbCgpKTsKKyAgICB1bnNpZ25lZCB0
YXJnZXQgPSBhcmdzLmF0KDApLnRvSW50MzIoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB1bnNpZ25lZCBhdHRh
Y2htZW50ID0gYXJncy5hdCgxKS50b0ludDMyKGV4ZWMpOworICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgdW5zaWduZWQgcG5h
bWUgPSBhcmdzLmF0KDIpLnRvSW50MzIoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBXZWJHTEdldEluZm8gaW5m
byA9IGNvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcih0YXJnZXQsIGF0
dGFjaG1lbnQsIHBuYW1lLCBlYyk7CisgICAgaWYgKGVjKSB7CisgICAgICAgIHNldERPTUV4Y2Vw
dGlvbihleGVjLCBlYyk7CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIH0KKyAg
ICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QoKSwgaW5mbyk7Cit9CisKK0pTVmFsdWUg
SlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFBhcmFtZXRlcihFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IEFyZ0xpc3QmIGFyZ3MpCit7CisgICAgaWYgKGFyZ3Muc2l6ZSgpICE9IDEpCisgICAgICAg
IHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFN5bnRheEVycm9yKTsKKworICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCA9IHN0YXRpY19j
YXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dCo+KGltcGwoKSk7CisgICAgdW5zaWduZWQgcG5hbWUg
PSBhcmdzLmF0KDApLnRvSW50MzIoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBXZWJHTEdldEluZm8gaW5mbyA9
IGNvbnRleHQtPmdldFBhcmFtZXRlcihwbmFtZSwgZWMpOworICAgIGlmIChlYykgeworICAgICAg
ICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKKyAgICB9CisgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksIGluZm8pOwor
fQorCitKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQcm9ncmFtUGFyYW1ldGVy
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICByZXR1cm4gZ2V0
UHJvZ3JhbVBhcmFtZXRlckhlbHBlcih0aGlzLCBleGVjLCBhcmdzLCBrUHJvZ3JhbVBhcmFtZXRl
cik7Cit9CisKK0pTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFJlbmRlcmJ1ZmZl
clBhcmFtZXRlcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCit7CisgICAg
cmV0dXJuIGdldE9iamVjdFBhcmFtZXRlcih0aGlzLCBleGVjLCBhcmdzLCBrUmVuZGVyYnVmZmVy
KTsKK30KKworSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2hhZGVyUGFyYW1l
dGVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICBpZiAoYXJn
cy5zaXplKCkgIT0gMikKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgU3ludGF4RXJy
b3IpOworCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgV2ViR0xSZW5kZXJpbmdDb250
ZXh0KiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0Kj4oaW1wbCgp
KTsKKyAgICBXZWJHTFNoYWRlciogc2hhZGVyID0gdG9XZWJHTFNoYWRlcihhcmdzLmF0KDApKTsK
KyAgICB1bnNpZ25lZCBwbmFtZSA9IGFyZ3MuYXQoMSkudG9JbnQzMihleGVjKTsKKyAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAg
IFdlYkdMR2V0SW5mbyBpbmZvID0gY29udGV4dC0+Z2V0U2hhZGVyUGFyYW1ldGVyKHNoYWRlciwg
cG5hbWUsIGVjKTsKKyAgICBpZiAoZWMpIHsKKyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMs
IGVjKTsKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQorICAgIHJldHVybiB0
b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBpbmZvKTsKK30KKworSlNWYWx1ZSBKU1dlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6Z2V0VGV4UGFyYW1ldGVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJn
TGlzdCYgYXJncykKK3sKKyAgICByZXR1cm4gZ2V0T2JqZWN0UGFyYW1ldGVyKHRoaXMsIGV4ZWMs
IGFyZ3MsIGtUZXh0dXJlKTsKK30KKworSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6
Z2V0VW5pZm9ybShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCit7CisgICAg
cmV0dXJuIGdldFByb2dyYW1QYXJhbWV0ZXJIZWxwZXIodGhpcywgZXhlYywgYXJncywga1VuaWZv
cm0pOworfQorCitKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRWZXJ0ZXhBdHRy
aWIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreworICAgIHJldHVybiBn
ZXRPYmplY3RQYXJhbWV0ZXIodGhpcywgZXhlYywgYXJncywga1ZlcnRleEF0dHJpYik7Cit9CisK
IC8vIHZvaWQgdGV4SW1hZ2UyREhUTUwoaW4gdW5zaWduZWQgbG9uZyB0YXJnZXQsIGluIHVuc2ln
bmVkIGxvbmcgbGV2ZWwsIGluIEhUTUxJbWFnZUVsZW1lbnQgaW1hZ2UpOwogSlNWYWx1ZSBKU1dl
YkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4SW1hZ2UyRChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFy
Z0xpc3QmIGFyZ3MpCiB7IApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0
b21CaW5kaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhD
dXN0b21CaW5kaW5nLmgJKHJldmlzaW9uIDUxMjc4KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhDdXN0b21CaW5kaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2NSw3ICszNjUsMTUg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRSgzRF9DQU5WQVMpCiAgICAgICAgIERF
Q0xBUkVfQ0FMTEJBQ0soV2ViR0xSZW5kZXJpbmdDb250ZXh0QnVmZmVyRGF0YSk7CiAgICAgICAg
IERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xSZW5kZXJpbmdDb250ZXh0QnVmZmVyU3ViRGF0YSk7Ci0g
ICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xSZW5kZXJpbmdDb250ZXh0U2l6ZW9mKTsKKyAg
ICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJHTFJlbmRlcmluZ0NvbnRleHRHZXRCdWZmZXJQYXJh
bWV0ZXIpOworICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdMUmVuZGVyaW5nQ29udGV4dEdl
dEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcik7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJB
Q0soV2ViR0xSZW5kZXJpbmdDb250ZXh0R2V0UGFyYW1ldGVyKTsKKyAgICAgICAgREVDTEFSRV9D
QUxMQkFDSyhXZWJHTFJlbmRlcmluZ0NvbnRleHRHZXRQcm9ncmFtUGFyYW1ldGVyKTsKKyAgICAg
ICAgREVDTEFSRV9DQUxMQkFDSyhXZWJHTFJlbmRlcmluZ0NvbnRleHRHZXRSZW5kZXJidWZmZXJQ
YXJhbWV0ZXIpOworICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdMUmVuZGVyaW5nQ29udGV4
dEdldFNoYWRlclBhcmFtZXRlcik7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xSZW5k
ZXJpbmdDb250ZXh0R2V0VGV4UGFyYW1ldGVyKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhX
ZWJHTFJlbmRlcmluZ0NvbnRleHRHZXRVbmlmb3JtKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFD
SyhXZWJHTFJlbmRlcmluZ0NvbnRleHRHZXRWZXJ0ZXhBdHRyaWIpOwogICAgICAgICBERUNMQVJF
X0NBTExCQUNLKFdlYkdMUmVuZGVyaW5nQ29udGV4dFRleEltYWdlMkQpOwogICAgICAgICBERUNM
QVJFX0NBTExCQUNLKFdlYkdMUmVuZGVyaW5nQ29udGV4dFRleFN1YkltYWdlMkQpOwogICAgICAg
ICBERUNMQVJFX0NBTExCQUNLKFdlYkdMUmVuZGVyaW5nQ29udGV4dFVuaWZvcm0xZnYpOwpJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0
b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xS
ZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAkocmV2aXNpb24gNTEyNzgpCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ1LDYgKzQ1LDggQEAKICNpbmNsdWRlICJWOFdlYkdMQnl0ZUFycmF5Lmgi
CiAjaW5jbHVkZSAiVjhXZWJHTEZsb2F0QXJyYXkuaCIKICNpbmNsdWRlICJWOFdlYkdMSW50QXJy
YXkuaCIKKyNpbmNsdWRlICJWOFdlYkdMUHJvZ3JhbS5oIgorI2luY2x1ZGUgIlY4V2ViR0xTaGFk
ZXIuaCIKICNpbmNsdWRlICJWOFdlYkdMU2hvcnRBcnJheS5oIgogI2luY2x1ZGUgIlY4V2ViR0xV
bnNpZ25lZEJ5dGVBcnJheS5oIgogI2luY2x1ZGUgIlY4V2ViR0xVbnNpZ25lZEludEFycmF5Lmgi
CkBAIC0xNjcsNiArMTY5LDI2MyBAQCBDQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xSZW5kZXJpbmdD
b250ZXh0CiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAorc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB0b1Y4KGNvbnN0IFdlYkdMR2V0SW5mbyYgaW5mbykKK3sKKyAgICBzd2l0
Y2ggKGluZm8uZ2V0VHlwZSgpKSB7CisgICAgY2FzZSBXZWJHTEdldEluZm86OlRfQk9PTDoKKyAg
ICAgICAgcmV0dXJuIHY4OjpCb29sZWFuOjpOZXcoaW5mby5nZXRCb29sKCkpOworICAgIGNhc2Ug
V2ViR0xHZXRJbmZvOjpUX0ZMT0FUOgorICAgICAgICByZXR1cm4gdjg6Ok51bWJlcjo6TmV3KGlu
Zm8uZ2V0RmxvYXQoKSk7CisgICAgY2FzZSBXZWJHTEdldEluZm86OlRfTE9ORzoKKyAgICAgICAg
cmV0dXJuIHY4OjpJbnRlZ2VyOjpOZXcoaW5mby5nZXRMb25nKCkpOworICAgIGNhc2UgV2ViR0xH
ZXRJbmZvOjpUX05VTEw6CisgICAgICAgIHJldHVybiB2ODo6TnVsbCgpOworICAgIGNhc2UgV2Vi
R0xHZXRJbmZvOjpUX1NUUklORzoKKyAgICAgICAgcmV0dXJuIHY4OjpTdHJpbmc6Ok5ldyhmcm9t
V2ViQ29yZVN0cmluZyhpbmZvLmdldFN0cmluZygpKSwgaW5mby5nZXRTdHJpbmcoKS5sZW5ndGgo
KSk7CisgICAgY2FzZSBXZWJHTEdldEluZm86OlRfVU5TSUdORURfTE9ORzoKKyAgICAgICAgcmV0
dXJuIHY4OjpJbnRlZ2VyOjpOZXdGcm9tVW5zaWduZWQoaW5mby5nZXRVbnNpZ25lZExvbmcoKSk7
CisgICAgY2FzZSBXZWJHTEdldEluZm86OlRfV0VCR0xCVUZGRVI6CisgICAgICAgIHJldHVybiBW
OERPTVdyYXBwZXI6OmNvbnZlcnRUb1Y4T2JqZWN0KFY4Q2xhc3NJbmRleDo6V0VCR0xCVUZGRVIs
IGluZm8uZ2V0V2ViR0xCdWZmZXIoKSk7CisgICAgY2FzZSBXZWJHTEdldEluZm86OlRfV0VCR0xG
TE9BVEFSUkFZOgorICAgICAgICByZXR1cm4gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9WOE9iamVj
dChWOENsYXNzSW5kZXg6OldFQkdMRkxPQVRBUlJBWSwgaW5mby5nZXRXZWJHTEZsb2F0QXJyYXko
KSk7CisgICAgY2FzZSBXZWJHTEdldEluZm86OlRfV0VCR0xGUkFNRUJVRkZFUjoKKyAgICAgICAg
cmV0dXJuIFY4RE9NV3JhcHBlcjo6Y29udmVydFRvVjhPYmplY3QoVjhDbGFzc0luZGV4OjpXRUJH
TEZSQU1FQlVGRkVSLCBpbmZvLmdldFdlYkdMRnJhbWVidWZmZXIoKSk7CisgICAgY2FzZSBXZWJH
TEdldEluZm86OlRfV0VCR0xJTlRBUlJBWToKKyAgICAgICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6
Y29udmVydFRvVjhPYmplY3QoVjhDbGFzc0luZGV4OjpXRUJHTElOVEFSUkFZLCBpbmZvLmdldFdl
YkdMSW50QXJyYXkoKSk7CisgICAgLy8gRklYTUU6IGltcGxlbWVudCBXZWJHTE9iamVjdEFycmF5
CisgICAgLy8gY2FzZSBXZWJHTEdldEluZm86OlRfV0VCR0xPQkpFQ1RBUlJBWToKKyAgICBjYXNl
IFdlYkdMR2V0SW5mbzo6VF9XRUJHTFBST0dSQU06CisgICAgICAgIHJldHVybiBWOERPTVdyYXBw
ZXI6OmNvbnZlcnRUb1Y4T2JqZWN0KFY4Q2xhc3NJbmRleDo6V0VCR0xQUk9HUkFNLCBpbmZvLmdl
dFdlYkdMUHJvZ3JhbSgpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6VF9XRUJHTFJFTkRFUkJV
RkZFUjoKKyAgICAgICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6Y29udmVydFRvVjhPYmplY3QoVjhD
bGFzc0luZGV4OjpXRUJHTFJFTkRFUkJVRkZFUiwgaW5mby5nZXRXZWJHTFJlbmRlcmJ1ZmZlcigp
KTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6VF9XRUJHTFRFWFRVUkU6CisgICAgICAgIHJldHVy
biBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb1Y4T2JqZWN0KFY4Q2xhc3NJbmRleDo6V0VCR0xURVhU
VVJFLCBpbmZvLmdldFdlYkdMVGV4dHVyZSgpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6VF9X
RUJHTFVOU0lHTkVEQllURUFSUkFZOgorICAgICAgICByZXR1cm4gVjhET01XcmFwcGVyOjpjb252
ZXJ0VG9WOE9iamVjdChWOENsYXNzSW5kZXg6OldFQkdMVU5TSUdORURCWVRFQVJSQVksIGluZm8u
Z2V0V2ViR0xVbnNpZ25lZEJ5dGVBcnJheSgpKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgIH0KK30K
KworZW51bSBPYmplY3RUeXBlIHsKKyAgICBrQnVmZmVyLCBrUmVuZGVyYnVmZmVyLCBrVGV4dHVy
ZSwga1ZlcnRleEF0dHJpYgorfTsKKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBnZXRP
YmplY3RQYXJhbWV0ZXIoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywgT2JqZWN0VHlwZSBvYmpl
Y3RUeXBlKQoreworICAgIGlmIChhcmdzLkxlbmd0aCgpICE9IDIpIHsKKyAgICAgICAgVjhQcm94
eTo6c2V0RE9NRXhjZXB0aW9uKFNZTlRBWF9FUlIpOworICAgICAgICByZXR1cm4gbm90SGFuZGxl
ZEJ5SW50ZXJjZXB0b3IoKTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAg
ICBXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQgPQorICAgICAgICBWOERPTVdyYXBwZXI6
OmNvbnZlcnRET01XcmFwcGVyVG9OYXRpdmU8V2ViR0xSZW5kZXJpbmdDb250ZXh0PihhcmdzLkhv
bGRlcigpKTsKKyAgICBib29sIG9rOworICAgIHVuc2lnbmVkIHRhcmdldCA9IHRvSW50MzIoYXJn
c1swXSwgb2spOworICAgIGlmICghb2spIHsKKyAgICAgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0
aW9uKFNZTlRBWF9FUlIpOworICAgICAgICByZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3Io
KTsKKyAgICB9CisgICAgdW5zaWduZWQgcG5hbWUgPSB0b0ludDMyKGFyZ3NbMV0sIG9rKTsKKyAg
ICBpZiAoIW9rKSB7CisgICAgICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihTWU5UQVhfRVJS
KTsKKyAgICAgICAgcmV0dXJuIG5vdEhhbmRsZWRCeUludGVyY2VwdG9yKCk7CisgICAgfQorICAg
IFdlYkdMR2V0SW5mbyBpbmZvOworICAgIHN3aXRjaCAob2JqZWN0VHlwZSkgeworICAgIGNhc2Ug
a0J1ZmZlcjoKKyAgICAgICAgaW5mbyA9IGNvbnRleHQtPmdldEJ1ZmZlclBhcmFtZXRlcih0YXJn
ZXQsIHBuYW1lLCBlYyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Uga1JlbmRlcmJ1ZmZlcjoK
KyAgICAgICAgaW5mbyA9IGNvbnRleHQtPmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcih0YXJnZXQs
IHBuYW1lLCBlYyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Uga1RleHR1cmU6CisgICAgICAg
IGluZm8gPSBjb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXIodGFyZ2V0LCBwbmFtZSwgZWMpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIGtWZXJ0ZXhBdHRyaWI6CisgICAgICAgIC8vIHRhcmdldCA9
PiBpbmRleAorICAgICAgICBpbmZvID0gY29udGV4dC0+Z2V0VmVydGV4QXR0cmliKHRhcmdldCwg
cG5hbWUsIGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGlmIChlYykgeworICAgICAg
ICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oZWMpOworICAgICAgICByZXR1cm4gdjg6OlVuZGVm
aW5lZCgpOworICAgIH0KKyAgICByZXR1cm4gdG9WOChpbmZvKTsKK30KKworZW51bSBXaGljaFBy
b2dyYW1DYWxsIHsKKyAgICBrUHJvZ3JhbVBhcmFtZXRlciwga1VuaWZvcm0KK307CisKK3N0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZ2V0UHJvZ3JhbVBhcmFtZXRlcihjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzLCBXaGljaFByb2dyYW1DYWxsIHByb2dyYW1DYWxsKQoreworICAgIGlmIChh
cmdzLkxlbmd0aCgpICE9IDIpIHsKKyAgICAgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKFNZ
TlRBWF9FUlIpOworICAgICAgICByZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsKKyAg
ICB9CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQqIGNvbnRleHQgPQorICAgICAgICBWOERPTVdyYXBwZXI6OmNvbnZlcnRET01XcmFwcGVyVG9O
YXRpdmU8V2ViR0xSZW5kZXJpbmdDb250ZXh0PihhcmdzLkhvbGRlcigpKTsKKyAgICBXZWJHTFBy
b2dyYW0qIHByb2dyYW0gPSBWOFdlYkdMUHJvZ3JhbTo6SGFzSW5zdGFuY2UoYXJnc1swXSkgPyB2
OERPTVdyYXBwZXJUbzxXZWJHTFByb2dyYW0+KFY4Q2xhc3NJbmRleDo6V0VCR0xQUk9HUkFNLCB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKSA6IDA7CisgICAgYm9vbCBvazsK
KyAgICB1bnNpZ25lZCBwbmFtZSA9IHRvSW50MzIoYXJnc1sxXSwgb2spOworICAgIGlmICghb2sp
IHsKKyAgICAgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKFNZTlRBWF9FUlIpOworICAgICAg
ICByZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsKKyAgICB9CisgICAgV2ViR0xHZXRJ
bmZvIGluZm87CisgICAgc3dpdGNoIChwcm9ncmFtQ2FsbCkgeworICAgIGNhc2Uga1Byb2dyYW1Q
YXJhbWV0ZXI6CisgICAgICAgIGluZm8gPSBjb250ZXh0LT5nZXRQcm9ncmFtUGFyYW1ldGVyKHBy
b2dyYW0sIHBuYW1lLCBlYyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Uga1VuaWZvcm06Cisg
ICAgICAgIC8vIHBuYW1lIC0+IGxvY2F0aW9uCisgICAgICAgIGluZm8gPSBjb250ZXh0LT5nZXRV
bmlmb3JtKHByb2dyYW0sIHBuYW1lLCBlYyk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6
CisgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBp
ZiAoZWMpIHsKKyAgICAgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKGVjKTsKKyAgICAgICAg
cmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICB9CisgICAgcmV0dXJuIHRvVjgoaW5mbyk7Cit9
CisKKworQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYkdMUmVuZGVyaW5nQ29udGV4dEdldEJ1ZmZlclBh
cmFtZXRlcikKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRlcmluZ0NvbnRleHQuZ2V0
QnVmZmVyUGFyYW1ldGVyKCkiKTsKKyAgICByZXR1cm4gZ2V0T2JqZWN0UGFyYW1ldGVyKGFyZ3Ms
IGtCdWZmZXIpOworfQorCitDQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xSZW5kZXJpbmdDb250ZXh0
R2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKQoreworICAgIElOQ19TVEFUUygiRE9N
LldlYkdMUmVuZGVyaW5nQ29udGV4dC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIo
KSIpOworCisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgIT0gMykgeworICAgICAgICBWOFByb3h5Ojpz
ZXRET01FeGNlcHRpb24oU1lOVEFYX0VSUik7CisgICAgICAgIHJldHVybiBub3RIYW5kbGVkQnlJ
bnRlcmNlcHRvcigpOworICAgIH0KKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdl
YkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCA9CisgICAgICAgIFY4RE9NV3JhcHBlcjo6Y29u
dmVydERPTVdyYXBwZXJUb05hdGl2ZTxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+KGFyZ3MuSG9sZGVy
KCkpOworICAgIGJvb2wgb2s7CisgICAgdW5zaWduZWQgdGFyZ2V0ID0gdG9JbnQzMihhcmdzWzBd
LCBvayk7CisgICAgaWYgKCFvaykgeworICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24o
U1lOVEFYX0VSUik7CisgICAgICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOwor
ICAgIH0KKyAgICB1bnNpZ25lZCBhdHRhY2htZW50ID0gdG9JbnQzMihhcmdzWzFdLCBvayk7Cisg
ICAgaWYgKCFvaykgeworICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oU1lOVEFYX0VS
Uik7CisgICAgICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOworICAgIH0KKyAg
ICB1bnNpZ25lZCBwbmFtZSA9IHRvSW50MzIoYXJnc1syXSwgb2spOworICAgIGlmICghb2spIHsK
KyAgICAgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKFNZTlRBWF9FUlIpOworICAgICAgICBy
ZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsKKyAgICB9CisgICAgV2ViR0xHZXRJbmZv
IGluZm8gPSBjb250ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIodGFyZ2V0
LCBhdHRhY2htZW50LCBwbmFtZSwgZWMpOworICAgIGlmIChlYykgeworICAgICAgICBWOFByb3h5
OjpzZXRET01FeGNlcHRpb24oZWMpOworICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwor
ICAgIH0KKyAgICByZXR1cm4gdG9WOChpbmZvKTsKK30KKworQ0FMTEJBQ0tfRlVOQ19ERUNMKFdl
YkdMUmVuZGVyaW5nQ29udGV4dEdldFBhcmFtZXRlcikKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuZ2V0UGFyYW1ldGVyKCkiKTsKKworICAgIGlmIChhcmdzLkxl
bmd0aCgpICE9IDEpIHsKKyAgICAgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKFNZTlRBWF9F
UlIpOworICAgICAgICByZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsKKyAgICB9CisK
KyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNv
bnRleHQgPQorICAgICAgICBWOERPTVdyYXBwZXI6OmNvbnZlcnRET01XcmFwcGVyVG9OYXRpdmU8
V2ViR0xSZW5kZXJpbmdDb250ZXh0PihhcmdzLkhvbGRlcigpKTsKKyAgICBib29sIG9rOworICAg
IHVuc2lnbmVkIHBuYW1lID0gdG9JbnQzMihhcmdzWzBdLCBvayk7CisgICAgaWYgKCFvaykgewor
ICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oU1lOVEFYX0VSUik7CisgICAgICAgIHJl
dHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOworICAgIH0KKyAgICBXZWJHTEdldEluZm8g
aW5mbyA9IGNvbnRleHQtPmdldFBhcmFtZXRlcihwbmFtZSwgZWMpOworICAgIGlmIChlYykgewor
ICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oZWMpOworICAgICAgICByZXR1cm4gdjg6
OlVuZGVmaW5lZCgpOworICAgIH0KKyAgICByZXR1cm4gdG9WOChpbmZvKTsKK30KKworQ0FMTEJB
Q0tfRlVOQ19ERUNMKFdlYkdMUmVuZGVyaW5nQ29udGV4dEdldFByb2dyYW1QYXJhbWV0ZXIpCit7
CisgICAgSU5DX1NUQVRTKCJET00uV2ViR0xSZW5kZXJpbmdDb250ZXh0LmdldFByb2dyYW1QYXJh
bWV0ZXIoKSIpOworICAgIHJldHVybiBnZXRQcm9ncmFtUGFyYW1ldGVyKGFyZ3MsIGtQcm9ncmFt
UGFyYW1ldGVyKTsKK30KKworQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYkdMUmVuZGVyaW5nQ29udGV4
dEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcikKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJl
bmRlcmluZ0NvbnRleHQuZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKCkiKTsKKyAgICByZXR1cm4g
Z2V0T2JqZWN0UGFyYW1ldGVyKGFyZ3MsIGtSZW5kZXJidWZmZXIpOworfQorCitDQUxMQkFDS19G
VU5DX0RFQ0woV2ViR0xSZW5kZXJpbmdDb250ZXh0R2V0U2hhZGVyUGFyYW1ldGVyKQoreworICAg
IElOQ19TVEFUUygiRE9NLldlYkdMUmVuZGVyaW5nQ29udGV4dC5nZXRTaGFkZXJQYXJhbWV0ZXIo
KSIpOworCisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgIT0gMikgeworICAgICAgICBWOFByb3h5Ojpz
ZXRET01FeGNlcHRpb24oU1lOVEFYX0VSUik7CisgICAgICAgIHJldHVybiBub3RIYW5kbGVkQnlJ
bnRlcmNlcHRvcigpOworICAgIH0KKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdl
YkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCA9CisgICAgICAgIFY4RE9NV3JhcHBlcjo6Y29u
dmVydERPTVdyYXBwZXJUb05hdGl2ZTxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+KGFyZ3MuSG9sZGVy
KCkpOworICAgIFdlYkdMU2hhZGVyKiBzaGFkZXIgPSBWOFdlYkdMU2hhZGVyOjpIYXNJbnN0YW5j
ZShhcmdzWzBdKSA/IHY4RE9NV3JhcHBlclRvPFdlYkdMU2hhZGVyPihWOENsYXNzSW5kZXg6OldF
QkdMU0hBREVSLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKSA6IDA7Cisg
ICAgYm9vbCBvazsKKyAgICB1bnNpZ25lZCBwbmFtZSA9IHRvSW50MzIoYXJnc1sxXSwgb2spOwor
ICAgIGlmICghb2spIHsKKyAgICAgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKFNZTlRBWF9F
UlIpOworICAgICAgICByZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsKKyAgICB9Cisg
ICAgV2ViR0xHZXRJbmZvIGluZm8gPSBjb250ZXh0LT5nZXRTaGFkZXJQYXJhbWV0ZXIoc2hhZGVy
LCBwbmFtZSwgZWMpOworICAgIGlmIChlYykgeworICAgICAgICBWOFByb3h5OjpzZXRET01FeGNl
cHRpb24oZWMpOworICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgIH0KKyAgICBy
ZXR1cm4gdG9WOChpbmZvKTsKK30KKworQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYkdMUmVuZGVyaW5n
Q29udGV4dEdldFRleFBhcmFtZXRlcikKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRl
cmluZ0NvbnRleHQuZ2V0VGV4UGFyYW1ldGVyKCkiKTsKKyAgICByZXR1cm4gZ2V0T2JqZWN0UGFy
YW1ldGVyKGFyZ3MsIGtUZXh0dXJlKTsKK30KKworQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEdldFVuaWZvcm0pCit7CisgICAgSU5DX1NUQVRTKCJET00uV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmdldFVuaWZvcm0oKSIpOworICAgIHJldHVybiBnZXRQcm9ncmFtUGFyYW1l
dGVyKGFyZ3MsIGtVbmlmb3JtKTsKK30KKworQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYkdMUmVuZGVy
aW5nQ29udGV4dEdldFZlcnRleEF0dHJpYikKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJl
bmRlcmluZ0NvbnRleHQuZ2V0VmVydGV4QXR0cmliKCkiKTsKKyAgICByZXR1cm4gZ2V0T2JqZWN0
UGFyYW1ldGVyKGFyZ3MsIGtWZXJ0ZXhBdHRyaWIpOworfQorCiBDQUxMQkFDS19GVU5DX0RFQ0wo
V2ViR0xSZW5kZXJpbmdDb250ZXh0VGV4SW1hZ2UyRCkKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5X
ZWJHTFJlbmRlcmluZ0NvbnRleHQudGV4SW1hZ2UyRCgpIik7CkluZGV4OiBXZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNPYmplY3QuY3BwCShyZXZpc2lvbiA1MTI3OCkKKysrIFdlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgCiBDYW52YXNPYmplY3Q6OkNhbnZhc09iamVjdChXZWJHTFJl
bmRlcmluZ0NvbnRleHQqIGNvbnRleHQpCiAgICAgOiBtX29iamVjdCgwKQorICAgICwgbV9zaG91
bGREZWxldGVPYmplY3QodHJ1ZSkKICAgICAsIG1fY29udGV4dChjb250ZXh0KQogewogfQpAQCAt
NDQsMjQgKzQ1LDI3IEBAIENhbnZhc09iamVjdDo6fkNhbnZhc09iamVjdCgpCiAgICAgICAgIG1f
Y29udGV4dC0+cmVtb3ZlT2JqZWN0KHRoaXMpOwogfQogCi12b2lkIENhbnZhc09iamVjdDo6c2V0
T2JqZWN0KFBsYXRmb3JtM0RPYmplY3Qgb2JqZWN0KQordm9pZCBDYW52YXNPYmplY3Q6OnNldE9i
amVjdChQbGF0Zm9ybTNET2JqZWN0IG9iamVjdCwgYm9vbCBzaG91bGREZWxldGVPYmplY3QpCiB7
CiAgICAgaWYgKG9iamVjdCA9PSBtX29iamVjdCkKICAgICAgICAgcmV0dXJuOwogICAgICAgICAK
ICAgICBkZWxldGVPYmplY3QoKTsKICAgICBtX29iamVjdCA9IG9iamVjdDsKKyAgICBtX3Nob3Vs
ZERlbGV0ZU9iamVjdCA9IHNob3VsZERlbGV0ZU9iamVjdDsKIH0KIAogdm9pZCBDYW52YXNPYmpl
Y3Q6OmRlbGV0ZU9iamVjdCgpCiB7CiAgICAgaWYgKG1fb2JqZWN0KSB7Ci0gICAgICAgIGlmICht
X2NvbnRleHQpIHsKLSAgICAgICAgICAgIG1fY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+
bWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgICAgICAgICBfZGVsZXRlT2JqZWN0KG1fb2JqZWN0
KTsKLSAgICAgICAgfQorICAgICAgICBpZiAobV9zaG91bGREZWxldGVPYmplY3QpCisgICAgICAg
ICAgICBpZiAobV9jb250ZXh0KSB7CisgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5ncmFwaGlj
c0NvbnRleHQzRCgpLT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICAgICAgICAgICAgICBfZGVs
ZXRlT2JqZWN0KG1fb2JqZWN0KTsKKyAgICAgICAgICAgIH0KICAgICAgICAgbV9vYmplY3QgPSAw
OwogICAgIH0KKyAgICBtX3Nob3VsZERlbGV0ZU9iamVjdCA9IHRydWU7CiB9CiAKIH0KSW5kZXg6
IFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNPYmplY3QuaAkocmV2aXNpb24gNTEyNzgpCisrKyBXZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB+Q2FudmFzT2JqZWN0KCk7
CiAgICAgICAgIAogICAgICAgICBQbGF0Zm9ybTNET2JqZWN0IG9iamVjdCgpIGNvbnN0IHsgcmV0
dXJuIG1fb2JqZWN0OyB9Ci0gICAgICAgIHZvaWQgc2V0T2JqZWN0KFBsYXRmb3JtM0RPYmplY3Qp
OworICAgICAgICB2b2lkIHNldE9iamVjdChQbGF0Zm9ybTNET2JqZWN0LCBib29sIHNob3VsZERl
bGV0ZU9iamVjdCA9IHRydWUpOwogICAgICAgICB2b2lkIGRlbGV0ZU9iamVjdCgpOwogICAgICAg
ICAKICAgICAgICAgdm9pZCBkZXRhY2hDb250ZXh0KCkKQEAgLTU3LDYgKzU3LDEzIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAKICAgICBwcml2YXRlOgogICAgICAgICBQbGF0Zm9ybTNET2Jq
ZWN0IG1fb2JqZWN0OworICAgICAgICAvLyBUaGUgc2hvdWxkRGVsZXRlT2JqZWN0IGZsYWcgaW5k
aWNhdGVzIHdoZXRoZXIgdGhpcyB3cmFwcGVyCisgICAgICAgIC8vIG93bnMgdGhlIHVuZGVybHlp
bmcgcmVzb3VyY2UgYW5kIHNob3VsZCBkZWxldGUgaXQgd2hlbiB0aGUKKyAgICAgICAgLy8gd3Jh
cHBlciBpcyB1bnJlZmVyZW5jZWQgZm9yIHRoZSBsYXN0IHRpbWUgYW5kIGRlbGV0ZWQuIEl0Cisg
ICAgICAgIC8vIGlzIG9ubHkgc2V0IHRvIGZhbHNlIGZvciBjZXJ0YWluIG9iamVjdHMgcmV0dXJu
ZWQgZnJvbSBnZXQKKyAgICAgICAgLy8gcXVlcmllcy4gRklYTUU6IHNob3VsZCBjb25zaWRlciBj
YW5vbmljYWxpemluZyBhbGwgb2YgdGhlc2UKKyAgICAgICAgLy8gb2JqZWN0cyBpbiB0aGUgZnV0
dXJlLgorICAgICAgICBib29sIG1fc2hvdWxkRGVsZXRlT2JqZWN0OwogICAgICAgICBXZWJHTFJl
bmRlcmluZ0NvbnRleHQqIG1fY29udGV4dDsKICAgICB9OwogICAgIApJbmRleDogV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTEJ1ZmZlci5jcHAJKHJldmlzaW9uIDUxMjc4KQorKysgV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTEJ1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDEyICszNywyMyBAQCBQ
YXNzUmVmUHRyPFdlYkdMQnVmZmVyPiBXZWJHTEJ1ZmZlcjo6Y3JlCiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBXZWJHTEJ1ZmZlcihjdHgpKTsKIH0KIAorUGFzc1JlZlB0cjxXZWJHTEJ1ZmZlcj4g
V2ViR0xCdWZmZXI6OmNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGN0eCwgUGxhdGZvcm0z
RE9iamVjdCBvYmopCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHTEJ1ZmZlcihjdHgs
IG9iaikpOworfQorCiBXZWJHTEJ1ZmZlcjo6V2ViR0xCdWZmZXIoV2ViR0xSZW5kZXJpbmdDb250
ZXh0KiBjdHgpCiAgICAgOiBDYW52YXNPYmplY3QoY3R4KQogewogICAgIHNldE9iamVjdChjb250
ZXh0KCktPmdyYXBoaWNzQ29udGV4dDNEKCktPmNyZWF0ZUJ1ZmZlcigpKTsKIH0KIAorV2ViR0xC
dWZmZXI6OldlYkdMQnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY3R4LCBQbGF0Zm9ybTNE
T2JqZWN0IG9iaikKKyAgICA6IENhbnZhc09iamVjdChjdHgpCit7CisgICAgc2V0T2JqZWN0KG9i
aiwgZmFsc2UpOworfQorCiB2b2lkIFdlYkdMQnVmZmVyOjpfZGVsZXRlT2JqZWN0KFBsYXRmb3Jt
M0RPYmplY3Qgb2JqZWN0KQogewogICAgIGNvbnRleHQoKS0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+
ZGVsZXRlQnVmZmVyKG9iamVjdCk7CkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVm
ZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5oCShy
ZXZpc2lvbiA1MTI3OCkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMzksOCArMzksMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICAKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViR0xCdWZmZXI+IGNyZWF0ZShXZWJHTFJl
bmRlcmluZ0NvbnRleHQqKTsKICAgICAgICAgCisgICAgICAgIC8vIEZvciBxdWVyeWluZyBwcmV2
aW91c2x5IGNyZWF0ZWQgb2JqZWN0cyB2aWEgZS5nLiBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQ
YXJhbWV0ZXIKKyAgICAgICAgLy8gRklYTUU6IHNob3VsZCBjb25zaWRlciBjYW5vbmljYWxpemlu
ZyB0aGVzZSBvYmplY3RzCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkdMQnVmZmVyPiBj
cmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiwgUGxhdGZvcm0zRE9iamVjdCk7CisKICAgICBw
cm90ZWN0ZWQ6CiAgICAgICAgIFdlYkdMQnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dCopOwor
ICAgICAgICBXZWJHTEJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHQqLCBQbGF0Zm9ybTNET2Jq
ZWN0IG9iaik7CiAgICAgICAgIAogICAgICAgICB2aXJ0dWFsIHZvaWQgX2RlbGV0ZU9iamVjdChQ
bGF0Zm9ybTNET2JqZWN0IG8pOwogICAgIH07CkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMR2V0SW5mby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEdl
dEluZm8uY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEdldElu
Zm8uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIxNSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5B
QkxFKDNEX0NBTlZBUykKKworI2luY2x1ZGUgIldlYkdMR2V0SW5mby5oIgorI2luY2x1ZGUgIldl
YkdMQnVmZmVyLmgiCisjaW5jbHVkZSAiV2ViR0xGbG9hdEFycmF5LmgiCisjaW5jbHVkZSAiV2Vi
R0xGcmFtZWJ1ZmZlci5oIgorI2luY2x1ZGUgIldlYkdMSW50QXJyYXkuaCIKKyNpbmNsdWRlICJX
ZWJHTFByb2dyYW0uaCIKKyNpbmNsdWRlICJXZWJHTFJlbmRlcmJ1ZmZlci5oIgorI2luY2x1ZGUg
IldlYkdMVGV4dHVyZS5oIgorI2luY2x1ZGUgIldlYkdMVW5zaWduZWRCeXRlQXJyYXkuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitXZWJHTEdldEluZm86OldlYkdMR2V0SW5mbyhib29sIHZh
bHVlKQorICAgIDogbV90eXBlKFRfQk9PTCkKKyAgICAsIG1fYm9vbCh2YWx1ZSkKK3sKK30KKwor
V2ViR0xHZXRJbmZvOjpXZWJHTEdldEluZm8oZmxvYXQgdmFsdWUpCisgICAgOiBtX3R5cGUoVF9G
TE9BVCkKKyAgICAsIG1fZmxvYXQodmFsdWUpCit7Cit9CisKK1dlYkdMR2V0SW5mbzo6V2ViR0xH
ZXRJbmZvKGxvbmcgdmFsdWUpCisgICAgOiBtX3R5cGUoVF9MT05HKQorICAgICwgbV9sb25nKHZh
bHVlKQoreworfQorCitXZWJHTEdldEluZm86OldlYkdMR2V0SW5mbygpCisgICAgOiBtX3R5cGUo
VF9OVUxMKQoreworfQorCitXZWJHTEdldEluZm86OldlYkdMR2V0SW5mbyhjb25zdCBTdHJpbmcm
IHZhbHVlKQorICAgIDogbV90eXBlKFRfU1RSSU5HKQorICAgICwgbV9zdHJpbmcodmFsdWUpCit7
Cit9CisKK1dlYkdMR2V0SW5mbzo6V2ViR0xHZXRJbmZvKHVuc2lnbmVkIGxvbmcgdmFsdWUpCisg
ICAgOiBtX3R5cGUoVF9VTlNJR05FRF9MT05HKQorICAgICwgbV91bnNpZ25lZExvbmcodmFsdWUp
Cit7Cit9CisKK1dlYkdMR2V0SW5mbzo6V2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xCdWZm
ZXI+IHZhbHVlKQorICAgIDogbV90eXBlKFRfV0VCR0xCVUZGRVIpCisgICAgLCBtX3dlYmdsQnVm
ZmVyKHZhbHVlKQoreworfQorCitXZWJHTEdldEluZm86OldlYkdMR2V0SW5mbyhQYXNzUmVmUHRy
PFdlYkdMRmxvYXRBcnJheT4gdmFsdWUpCisgICAgOiBtX3R5cGUoVF9XRUJHTEZMT0FUQVJSQVkp
CisgICAgLCBtX3dlYmdsRmxvYXRBcnJheSh2YWx1ZSkKK3sKK30KKworV2ViR0xHZXRJbmZvOjpX
ZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTEZyYW1lYnVmZmVyPiB2YWx1ZSkKKyAgICA6IG1f
dHlwZShUX1dFQkdMRlJBTUVCVUZGRVIpCisgICAgLCBtX3dlYmdsRnJhbWVidWZmZXIodmFsdWUp
Cit7Cit9CisKK1dlYkdMR2V0SW5mbzo6V2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xJbnRB
cnJheT4gdmFsdWUpCisgICAgOiBtX3R5cGUoVF9XRUJHTElOVEFSUkFZKQorICAgICwgbV93ZWJn
bEludEFycmF5KHZhbHVlKQoreworfQorCitXZWJHTEdldEluZm86OldlYkdMR2V0SW5mbyhQYXNz
UmVmUHRyPFdlYkdMUHJvZ3JhbT4gdmFsdWUpCisgICAgOiBtX3R5cGUoVF9XRUJHTFBST0dSQU0p
CisgICAgLCBtX3dlYmdsUHJvZ3JhbSh2YWx1ZSkKK3sKK30KKworV2ViR0xHZXRJbmZvOjpXZWJH
TEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTFJlbmRlcmJ1ZmZlcj4gdmFsdWUpCisgICAgOiBtX3R5
cGUoVF9XRUJHTFJFTkRFUkJVRkZFUikKKyAgICAsIG1fd2ViZ2xSZW5kZXJidWZmZXIodmFsdWUp
Cit7Cit9CisKK1dlYkdMR2V0SW5mbzo6V2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xUZXh0
dXJlPiB2YWx1ZSkKKyAgICA6IG1fdHlwZShUX1dFQkdMVEVYVFVSRSkKKyAgICAsIG1fd2ViZ2xU
ZXh0dXJlKHZhbHVlKQoreworfQorCitXZWJHTEdldEluZm86OldlYkdMR2V0SW5mbyhQYXNzUmVm
UHRyPFdlYkdMVW5zaWduZWRCeXRlQXJyYXk+IHZhbHVlKQorICAgIDogbV90eXBlKFRfV0VCR0xV
TlNJR05FREJZVEVBUlJBWSkKKyAgICAsIG1fd2ViZ2xVbnNpZ25lZEJ5dGVBcnJheSh2YWx1ZSkK
K3sKK30KKworV2ViR0xHZXRJbmZvOjp+V2ViR0xHZXRJbmZvKCkKK3sKK30KKworV2ViR0xHZXRJ
bmZvOjpUeXBlIFdlYkdMR2V0SW5mbzo6Z2V0VHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
dHlwZTsKK30KKworYm9vbCBXZWJHTEdldEluZm86OmdldEJvb2woKSBjb25zdAoreworICAgIEFT
U0VSVChnZXRUeXBlKCkgPT0gVF9CT09MKTsKKyAgICByZXR1cm4gbV9ib29sOworfQorCitmbG9h
dCBXZWJHTEdldEluZm86OmdldEZsb2F0KCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZ2V0VHlwZSgp
ID09IFRfRkxPQVQpOworICAgIHJldHVybiBtX2Zsb2F0OworfQorCitsb25nIFdlYkdMR2V0SW5m
bzo6Z2V0TG9uZygpIGNvbnN0Cit7CisgICAgQVNTRVJUKGdldFR5cGUoKSA9PSBUX0xPTkcpOwor
ICAgIHJldHVybiBtX2xvbmc7Cit9CisKK2NvbnN0IFN0cmluZyYgV2ViR0xHZXRJbmZvOjpnZXRT
dHJpbmcoKSBjb25zdAoreworICAgIEFTU0VSVChnZXRUeXBlKCkgPT0gVF9TVFJJTkcpOworICAg
IHJldHVybiBtX3N0cmluZzsKK30KKwordW5zaWduZWQgbG9uZyBXZWJHTEdldEluZm86OmdldFVu
c2lnbmVkTG9uZygpIGNvbnN0Cit7CisgICAgQVNTRVJUKGdldFR5cGUoKSA9PSBUX1VOU0lHTkVE
X0xPTkcpOworICAgIHJldHVybiBtX3Vuc2lnbmVkTG9uZzsKK30KKworUGFzc1JlZlB0cjxXZWJH
TEJ1ZmZlcj4gV2ViR0xHZXRJbmZvOjpnZXRXZWJHTEJ1ZmZlcigpIGNvbnN0Cit7CisgICAgQVNT
RVJUKGdldFR5cGUoKSA9PSBUX1dFQkdMQlVGRkVSKTsKKyAgICByZXR1cm4gbV93ZWJnbEJ1ZmZl
cjsKK30KKworUGFzc1JlZlB0cjxXZWJHTEZsb2F0QXJyYXk+IFdlYkdMR2V0SW5mbzo6Z2V0V2Vi
R0xGbG9hdEFycmF5KCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZ2V0VHlwZSgpID09IFRfV0VCR0xG
TE9BVEFSUkFZKTsKKyAgICByZXR1cm4gbV93ZWJnbEZsb2F0QXJyYXk7Cit9CisKK1Bhc3NSZWZQ
dHI8V2ViR0xGcmFtZWJ1ZmZlcj4gV2ViR0xHZXRJbmZvOjpnZXRXZWJHTEZyYW1lYnVmZmVyKCkg
Y29uc3QKK3sKKyAgICBBU1NFUlQoZ2V0VHlwZSgpID09IFRfV0VCR0xGUkFNRUJVRkZFUik7Cisg
ICAgcmV0dXJuIG1fd2ViZ2xGcmFtZWJ1ZmZlcjsKK30KKworUGFzc1JlZlB0cjxXZWJHTEludEFy
cmF5PiBXZWJHTEdldEluZm86OmdldFdlYkdMSW50QXJyYXkoKSBjb25zdAoreworICAgIEFTU0VS
VChnZXRUeXBlKCkgPT0gVF9XRUJHTElOVEFSUkFZKTsKKyAgICByZXR1cm4gbV93ZWJnbEludEFy
cmF5OworfQorCitQYXNzUmVmUHRyPFdlYkdMUHJvZ3JhbT4gV2ViR0xHZXRJbmZvOjpnZXRXZWJH
TFByb2dyYW0oKSBjb25zdAoreworICAgIEFTU0VSVChnZXRUeXBlKCkgPT0gVF9XRUJHTFBST0dS
QU0pOworICAgIHJldHVybiBtX3dlYmdsUHJvZ3JhbTsKK30KKworUGFzc1JlZlB0cjxXZWJHTFJl
bmRlcmJ1ZmZlcj4gV2ViR0xHZXRJbmZvOjpnZXRXZWJHTFJlbmRlcmJ1ZmZlcigpIGNvbnN0Cit7
CisgICAgQVNTRVJUKGdldFR5cGUoKSA9PSBUX1dFQkdMUkVOREVSQlVGRkVSKTsKKyAgICByZXR1
cm4gbV93ZWJnbFJlbmRlcmJ1ZmZlcjsKK30KKworUGFzc1JlZlB0cjxXZWJHTFRleHR1cmU+IFdl
YkdMR2V0SW5mbzo6Z2V0V2ViR0xUZXh0dXJlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZ2V0VHlw
ZSgpID09IFRfV0VCR0xURVhUVVJFKTsKKyAgICByZXR1cm4gbV93ZWJnbFRleHR1cmU7Cit9CisK
K1Bhc3NSZWZQdHI8V2ViR0xVbnNpZ25lZEJ5dGVBcnJheT4gV2ViR0xHZXRJbmZvOjpnZXRXZWJH
TFVuc2lnbmVkQnl0ZUFycmF5KCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZ2V0VHlwZSgpID09IFRf
V0VCR0xVTlNJR05FREJZVEVBUlJBWSk7CisgICAgcmV0dXJuIG1fd2ViZ2xVbnNpZ25lZEJ5dGVB
cnJheTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKDNE
X0NBTlZBUykKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEdldEluZm8uaAkocmV2aXNpb24gMCkK
KysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFdlYkdMR2V0SW5mb19oCisjZGVmaW5lIFdlYkdMR2V0SW5mb19oCisKKyNpbmNs
dWRlICJ3dGYvUGFzc1JlZlB0ci5oIgorI2luY2x1ZGUgInd0Zi9SZWZQdHIuaCIKKyNpbmNsdWRl
ICJQbGF0Zm9ybVN0cmluZy5oIgorCisjaW5jbHVkZSAiV2ViR0xCdWZmZXIuaCIKKyNpbmNsdWRl
ICJXZWJHTEZsb2F0QXJyYXkuaCIKKyNpbmNsdWRlICJXZWJHTEZyYW1lYnVmZmVyLmgiCisjaW5j
bHVkZSAiV2ViR0xJbnRBcnJheS5oIgorLy8gRklYTUU6IGltcGxlbWVudCBXZWJHTE9iamVjdEFy
cmF5CisvLyNpbmNsdWRlICJXZWJHTE9iamVjdEFycmF5LmgiCisjaW5jbHVkZSAiV2ViR0xQcm9n
cmFtLmgiCisjaW5jbHVkZSAiV2ViR0xSZW5kZXJidWZmZXIuaCIKKyNpbmNsdWRlICJXZWJHTFRl
eHR1cmUuaCIKKyNpbmNsdWRlICJXZWJHTFVuc2lnbmVkQnl0ZUFycmF5LmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworLy8gQSB0YWdnZWQgdW5pb24gcmVwcmVzZW50aW5nIHRoZSByZXN1bHQg
b2YgZ2V0IHF1ZXJpZXMgbGlrZQorLy8gZ2V0UGFyYW1ldGVyIChlbmNvbXBhc3NpbmcgZ2V0Qm9v
bGVhbnYsIGdldEludGVnZXJ2LCBnZXRGbG9hdHYpIGFuZAorLy8gc2ltaWxhciB2YXJpYW50cy4g
Rm9yIHJlZmVyZW5jZSBjb3VudGVkIHR5cGVzLCBpbmNyZW1lbnRzIGFuZAorLy8gZGVjcmVtZW50
cyB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRoZSB0YXJnZXQgb2JqZWN0LgorCitjbGFzcyBXZWJH
TEdldEluZm8geworcHVibGljOgorICAgIGVudW0gVHlwZSB7CisgICAgICAgIFRfQk9PTCwKKyAg
ICAgICAgVF9GTE9BVCwKKyAgICAgICAgVF9MT05HLAorICAgICAgICBUX05VTEwsCisgICAgICAg
IFRfU1RSSU5HLAorICAgICAgICBUX1VOU0lHTkVEX0xPTkcsCisgICAgICAgIFRfV0VCR0xCVUZG
RVIsCisgICAgICAgIFRfV0VCR0xGTE9BVEFSUkFZLAorICAgICAgICBUX1dFQkdMRlJBTUVCVUZG
RVIsCisgICAgICAgIFRfV0VCR0xJTlRBUlJBWSwKKyAgICAgICAgVF9XRUJHTE9CSkVDVEFSUkFZ
LAorICAgICAgICBUX1dFQkdMUFJPR1JBTSwKKyAgICAgICAgVF9XRUJHTFJFTkRFUkJVRkZFUiwK
KyAgICAgICAgVF9XRUJHTFRFWFRVUkUsCisgICAgICAgIFRfV0VCR0xVTlNJR05FREJZVEVBUlJB
WQorICAgIH07CisKKyAgICBXZWJHTEdldEluZm8oYm9vbCB2YWx1ZSk7CisgICAgV2ViR0xHZXRJ
bmZvKGZsb2F0IHZhbHVlKTsKKyAgICBXZWJHTEdldEluZm8obG9uZyB2YWx1ZSk7CisgICAgLy8g
UmVwcmVzZW50cyB0aGUgTlVMTCB2YWx1ZSBhbmQgdHlwZQorICAgIFdlYkdMR2V0SW5mbygpOwor
ICAgIFdlYkdMR2V0SW5mbyhjb25zdCBTdHJpbmcmIHZhbHVlKTsKKyAgICBXZWJHTEdldEluZm8o
dW5zaWduZWQgbG9uZyB2YWx1ZSk7CisgICAgV2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xC
dWZmZXI+IHZhbHVlKTsKKyAgICBXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTEZsb2F0QXJy
YXk+IHZhbHVlKTsKKyAgICBXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTEZyYW1lYnVmZmVy
PiB2YWx1ZSk7CisgICAgV2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gdmFs
dWUpOworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgV2ViR0xPYmplY3RBcnJheQorICAgIC8vIFdl
YkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMT2JqZWN0QXJyYXk+IHZhbHVlKTsKKyAgICBXZWJH
TEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTFByb2dyYW0+IHZhbHVlKTsKKyAgICBXZWJHTEdldElu
Zm8oUGFzc1JlZlB0cjxXZWJHTFJlbmRlcmJ1ZmZlcj4gdmFsdWUpOworICAgIFdlYkdMR2V0SW5m
byhQYXNzUmVmUHRyPFdlYkdMVGV4dHVyZT4gdmFsdWUpOworICAgIFdlYkdMR2V0SW5mbyhQYXNz
UmVmUHRyPFdlYkdMVW5zaWduZWRCeXRlQXJyYXk+IHZhbHVlKTsKKworICAgIHZpcnR1YWwgfldl
YkdMR2V0SW5mbygpOworCisgICAgVHlwZSBnZXRUeXBlKCkgY29uc3Q7CisKKyAgICBib29sIGdl
dEJvb2woKSBjb25zdDsKKyAgICBmbG9hdCBnZXRGbG9hdCgpIGNvbnN0OworICAgIGxvbmcgZ2V0
TG9uZygpIGNvbnN0OworICAgIGNvbnN0IFN0cmluZyYgZ2V0U3RyaW5nKCkgY29uc3Q7CisgICAg
dW5zaWduZWQgbG9uZyBnZXRVbnNpZ25lZExvbmcoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPFdl
YkdMQnVmZmVyPiBnZXRXZWJHTEJ1ZmZlcigpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8V2ViR0xG
bG9hdEFycmF5PiBnZXRXZWJHTEZsb2F0QXJyYXkoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPFdl
YkdMRnJhbWVidWZmZXI+IGdldFdlYkdMRnJhbWVidWZmZXIoKSBjb25zdDsKKyAgICBQYXNzUmVm
UHRyPFdlYkdMSW50QXJyYXk+IGdldFdlYkdMSW50QXJyYXkoKSBjb25zdDsKKyAgICAvLyBGSVhN
RTogaW1wbGVtZW50IFdlYkdMT2JqZWN0QXJyYXkKKyAgICAvLyBQYXNzUmVmUHRyPFdlYkdMT2Jq
ZWN0QXJyYXk+IGdldFdlYkdMT2JqZWN0QXJyYXkoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPFdl
YkdMUHJvZ3JhbT4gZ2V0V2ViR0xQcm9ncmFtKCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxXZWJH
TFJlbmRlcmJ1ZmZlcj4gZ2V0V2ViR0xSZW5kZXJidWZmZXIoKSBjb25zdDsKKyAgICBQYXNzUmVm
UHRyPFdlYkdMVGV4dHVyZT4gZ2V0V2ViR0xUZXh0dXJlKCkgY29uc3Q7CisgICAgUGFzc1JlZlB0
cjxXZWJHTFVuc2lnbmVkQnl0ZUFycmF5PiBnZXRXZWJHTFVuc2lnbmVkQnl0ZUFycmF5KCkgY29u
c3Q7CisKK3ByaXZhdGU6CisgICAgVHlwZSBtX3R5cGU7CisgICAgYm9vbCBtX2Jvb2w7CisgICAg
ZmxvYXQgbV9mbG9hdDsKKyAgICBsb25nIG1fbG9uZzsKKyAgICBTdHJpbmcgbV9zdHJpbmc7Cisg
ICAgdW5zaWduZWQgbG9uZyBtX3Vuc2lnbmVkTG9uZzsKKyAgICBSZWZQdHI8V2ViR0xCdWZmZXI+
IG1fd2ViZ2xCdWZmZXI7CisgICAgUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gbV93ZWJnbEZsb2F0
QXJyYXk7CisgICAgUmVmUHRyPFdlYkdMRnJhbWVidWZmZXI+IG1fd2ViZ2xGcmFtZWJ1ZmZlcjsK
KyAgICBSZWZQdHI8V2ViR0xJbnRBcnJheT4gbV93ZWJnbEludEFycmF5OworICAgIC8vIEZJWE1F
OiBpbXBsZW1lbnQgV2ViR0xPYmplY3RBcnJheQorICAgIC8vIFJlZlB0cjxXZWJHTE9iamVjdEFy
cmF5PiBtX3dlYmdsT2JqZWN0QXJyYXk7CisgICAgUmVmUHRyPFdlYkdMUHJvZ3JhbT4gbV93ZWJn
bFByb2dyYW07CisgICAgUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPiBtX3dlYmdsUmVuZGVyYnVm
ZmVyOworICAgIFJlZlB0cjxXZWJHTFRleHR1cmU+IG1fd2ViZ2xUZXh0dXJlOworICAgIFJlZlB0
cjxXZWJHTFVuc2lnbmVkQnl0ZUFycmF5PiBtX3dlYmdsVW5zaWduZWRCeXRlQXJyYXk7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAgLy8gV2ViR0xHZXRJbmZvX2gKSW5k
ZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuY3BwCShyZXZpc2lvbiA1
MTI3OCkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNywxMiArMzcsMjMgQEAgUGFzc1JlZlB0cjxXZWJHTFJlbmRlcmJ1ZmZl
cj4gV2ViR0xSZW5kZQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViR0xSZW5kZXJidWZmZXIo
Y3R4KSk7CiB9CiAKK1Bhc3NSZWZQdHI8V2ViR0xSZW5kZXJidWZmZXI+IFdlYkdMUmVuZGVyYnVm
ZmVyOjpjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjdHgsIFBsYXRmb3JtM0RPYmplY3Qg
b2JqKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViR0xSZW5kZXJidWZmZXIoY3R4LCBv
YmopKTsKK30KKwogV2ViR0xSZW5kZXJidWZmZXI6OldlYkdMUmVuZGVyYnVmZmVyKFdlYkdMUmVu
ZGVyaW5nQ29udGV4dCogY3R4KQogICAgIDogQ2FudmFzT2JqZWN0KGN0eCkKIHsKICAgICBzZXRP
YmplY3QoY29udGV4dCgpLT5ncmFwaGljc0NvbnRleHQzRCgpLT5jcmVhdGVSZW5kZXJidWZmZXIo
KSk7CiB9CiAKK1dlYkdMUmVuZGVyYnVmZmVyOjpXZWJHTFJlbmRlcmJ1ZmZlcihXZWJHTFJlbmRl
cmluZ0NvbnRleHQqIGN0eCwgUGxhdGZvcm0zRE9iamVjdCBvYmopCisgICAgOiBDYW52YXNPYmpl
Y3QoY3R4KQoreworICAgIHNldE9iamVjdChvYmosIGZhbHNlKTsKK30KKwogdm9pZCBXZWJHTFJl
bmRlcmJ1ZmZlcjo6X2RlbGV0ZU9iamVjdChQbGF0Zm9ybTNET2JqZWN0IG9iamVjdCkKIHsKICAg
ICBjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dDNEKCktPmRlbGV0ZVJlbmRlcmJ1ZmZlcihvYmpl
Y3QpOwpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuaAkocmV2aXNp
b24gNTEyNzgpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM5LDggKzM5LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPiBjcmVhdGUo
V2ViR0xSZW5kZXJpbmdDb250ZXh0Kik7CiAgICAgICAgIAorICAgICAgICAvLyBGb3IgcXVlcnlp
bmcgcHJldmlvdXNseSBjcmVhdGVkIG9iamVjdHMgdmlhIGUuZy4gZ2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyCisgICAgICAgIC8vIEZJWE1FOiBzaG91bGQgY29uc2lkZXIgY2Fub25p
Y2FsaXppbmcgdGhlc2Ugb2JqZWN0cworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJHTFJl
bmRlcmJ1ZmZlcj4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCosIFBsYXRmb3JtM0RPYmpl
Y3QgcmVuZGVyYnVmZmVyKTsKKwogICAgIHByb3RlY3RlZDoKICAgICAgICAgV2ViR0xSZW5kZXJi
dWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0Kik7CisgICAgICAgIFdlYkdMUmVuZGVyYnVmZmVy
KFdlYkdMUmVuZGVyaW5nQ29udGV4dCosIFBsYXRmb3JtM0RPYmplY3QpOwogICAgICAgICAKICAg
ICAgICAgdmlydHVhbCB2b2lkIF9kZWxldGVPYmplY3QoUGxhdGZvcm0zRE9iamVjdCk7CiAgICAg
fTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5j
cHAJKHJldmlzaW9uIDUxMjc4KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMSArMzksMzEgQEAKICNpbmNsdWRl
ICJIVE1MQ2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNp
bmNsdWRlICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5j
bHVkZSAiUmVuZGVyQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitjbGFzcyBDbGVhbnVwSGVscGVyIHsKK3B1YmxpYzoKKyAgICBDbGVhbnVw
SGVscGVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCwKKyAgICAgICAgICAgICAgICAg
IGJvb2wgY2hhbmdlZCkKKyAgICAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKKyAgICAgICAgLCBt
X2NoYW5nZWQoY2hhbmdlZCkKKyAgICB7CisgICAgfQorCisgICAgfkNsZWFudXBIZWxwZXIoKQor
ICAgIHsKKyAgICAgICAgbV9jb250ZXh0LT5jbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwobV9jaGFu
Z2VkKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBtX2Nv
bnRleHQ7CisgICAgYm9vbCBtX2NoYW5nZWQ7Cit9OworCiBQYXNzT3duUHRyPFdlYkdMUmVuZGVy
aW5nQ29udGV4dD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGUoSFRNTENhbnZhc0VsZW1l
bnQqIGNhbnZhcykKIHsKICAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQoR3Jh
cGhpY3NDb250ZXh0M0Q6OmNyZWF0ZSgpKTsKQEAgLTU4LDYgKzc4LDcgQEAgV2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpXZWJHTFJlbmRlcmluZ0NvbgogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCiAg
ICAgLCBtX25lZWRzVXBkYXRlKHRydWUpCiAgICAgLCBtX21hcmtlZENhbnZhc0RpcnR5KGZhbHNl
KQorICAgICwgbV9hY3RpdmVUZXh0dXJlVW5pdCgwKQogewogICAgIEFTU0VSVChtX2NvbnRleHQp
OwogICAgIG1fY29udGV4dC0+cmVzaGFwZShjYW52YXMoKS0+d2lkdGgoKSwgY2FudmFzKCktPmhl
aWdodCgpKTsKQEAgLTEyNSw4ICsxNDYsMTMgQEAgaW50IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
c2l6ZUluQnl0ZXMoaQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YWN0aXZlVGV4dHVy
ZSh1bnNpZ25lZCBsb25nIHRleHR1cmUpCiB7CisgICAgaWYgKHRleHR1cmUgPiBzaXplb2YobV90
ZXh0dXJlVW5pdHMpIC8gc2l6ZW9mKFRleHR1cmVVbml0U3RhdGUpKSB7CisgICAgICAgIC8vIEZJ
WE1FOiByYWlzZSBHTF9JTlZBTElEX0VOVU0gZXJyb3IKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBDbGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKKyAgICBtX2FjdGl2ZVRleHR1cmVVbml0
ID0gdGV4dHVyZTsKICAgICBtX2NvbnRleHQtPmFjdGl2ZVRleHR1cmUodGV4dHVyZSk7Ci0gICAg
Y2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmF0dGFjaFNoYWRlcihXZWJHTFByb2dyYW0qIHByb2dyYW0sIFdlYkdMU2hhZGVy
KiBzaGFkZXIsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMTM1LDggKzE2MSw4IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjphdHRhY2hTaGFkZXIKICAgICAgICAgZWMgPSBUWVBFX01JU01B
VENIX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBDbGVhbnVwSGVscGVyKHRoaXMs
IGZhbHNlKTsKICAgICBtX2NvbnRleHQtPmF0dGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXIpOwot
ICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpiaW5kQXR0cmliTG9jYXRpb24oV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCB1
bnNpZ25lZCBsb25nIGluZGV4LCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVj
KQpAQCAtMTQ1LDggKzE3MSw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpiaW5kQXR0
cmliTG8KICAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KKyAgICBDbGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKICAgICBtX2NvbnRleHQtPmJp
bmRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCBpbmRleCwgbmFtZSk7Ci0gICAgY2xlYW51cEFmdGVy
R3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJp
bmRCdWZmZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIFdlYkdMQnVmZmVyKiBidWZmZXIsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQpAQCAtMTU1LDggKzE4MSwxNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6YmluZEJ1ZmZlcih1CiAgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CisgICAgaWYgKHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6
QVJSQVlfQlVGRkVSKQorICAgICAgICBtX2FycmF5QnVmZmVyQmluZGluZyA9IGJ1ZmZlcjsKKyAg
ICBlbHNlIGlmICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkVMRU1FTlRfQVJSQVlfQlVG
RkVSKQorICAgICAgICBtX2VsZW1lbnRBcnJheUJ1ZmZlckJpbmRpbmcgPSBidWZmZXI7CisgICAg
ZWxzZSB7CisgICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX0VOVU0gZXJyb3IKKyAg
ICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIENsZWFu
dXBIZWxwZXIodGhpcywgZmFsc2UpOwogICAgIG1fY29udGV4dC0+YmluZEJ1ZmZlcih0YXJnZXQs
IGJ1ZmZlcik7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogCkBA
IC0xNjYsOCArMjAxLDE0IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpiaW5kRnJhbWVi
dWYKICAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KKyAgICBpZiAodGFyZ2V0ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUikgewor
ICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9FTlVNIGVycm9yCisgICAgICAgIGVj
ID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBDbGVhbnVwSGVscGVy
KHRoaXMsIGZhbHNlKTsKKyAgICBtX2ZyYW1lYnVmZmVyQmluZGluZyA9IGJ1ZmZlcjsKICAgICBt
X2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcih0YXJnZXQsIGJ1ZmZlcik7Ci0gICAgY2xlYW51cEFm
dGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmJpbmRSZW5kZXJidWZmZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIFdlYkdMUmVuZGVyYnVmZmVy
KiByZW5kZXJCdWZmZXIsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMTc2LDggKzIxNywxNCBAQCB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmluZFJlbmRlcmJ1CiAgICAgICAgIGVjID0gVFlQ
RV9NSVNNQVRDSF9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgaWYgKHRhcmdldCAh
PSBHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSKSB7CisgICAgICAgIC8vIEZJWE1FOiBy
YWlzZSBHTF9JTlZBTElEX0VOVU0gZXJyb3IKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOworICAg
IG1fcmVuZGVyYnVmZmVyQmluZGluZyA9IHJlbmRlckJ1ZmZlcjsKICAgICBtX2NvbnRleHQtPmJp
bmRSZW5kZXJidWZmZXIodGFyZ2V0LCByZW5kZXJCdWZmZXIpOwotICAgIGNsZWFudXBBZnRlckdy
YXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIApAQCAtMTg3LDczICsyMzQsODMgQEAgdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmJpbmRUZXh0dXJlKAogICAgICAgICBlYyA9IFRZUEVfTUlTTUFU
Q0hfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGlmICh0YXJnZXQgPT0gR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQpCisgICAgICAgIG1fdGV4dHVyZVVuaXRzW21fYWN0aXZl
VGV4dHVyZVVuaXRdLm1fdGV4dHVyZTJEQmluZGluZyA9IHRleHR1cmU7CisgICAgZWxzZSBpZiAo
dGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX0NVQkVfTUFQKQorICAgICAgICBt
X3RleHR1cmVVbml0c1ttX2FjdGl2ZVRleHR1cmVVbml0XS5tX3RleHR1cmVDdWJlTWFwQmluZGlu
ZyA9IHRleHR1cmU7CisgICAgZWxzZSB7CisgICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZB
TElEX0VOVU0gZXJyb3IKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwogICAgIG1fY29udGV4dC0+
YmluZFRleHR1cmUodGFyZ2V0LCB0ZXh0dXJlKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0Nh
bGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmxlbmRDb2xvcihk
b3VibGUgcmVkLCBkb3VibGUgZ3JlZW4sIGRvdWJsZSBibHVlLCBkb3VibGUgYWxwaGEpCiB7Cisg
ICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CiAgICAgbV9jb250ZXh0LT5ibGVuZENvbG9y
KHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwo
ZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmxlbmRFcXVhdGlvbigg
dW5zaWduZWQgbG9uZyBtb2RlICkKIHsKKyAgICBDbGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsK
ICAgICBtX2NvbnRleHQtPmJsZW5kRXF1YXRpb24obW9kZSk7Ci0gICAgY2xlYW51cEFmdGVyR3Jh
cGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJsZW5k
RXF1YXRpb25TZXBhcmF0ZSh1bnNpZ25lZCBsb25nIG1vZGVSR0IsIHVuc2lnbmVkIGxvbmcgbW9k
ZUFscGhhKQogeworICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwogICAgIG1fY29udGV4
dC0+YmxlbmRFcXVhdGlvblNlcGFyYXRlKG1vZGVSR0IsIG1vZGVBbHBoYSk7Ci0gICAgY2xlYW51
cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6YmxlbmRGdW5jKHVuc2lnbmVkIGxvbmcgc2ZhY3RvciwgdW5zaWduZWQgbG9uZyBkZmFj
dG9yKQogeworICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwogICAgIG1fY29udGV4dC0+
YmxlbmRGdW5jKHNmYWN0b3IsIGRmYWN0b3IpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2Fs
bChmYWxzZSk7CiB9ICAgICAgIAogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmxlbmRG
dW5jU2VwYXJhdGUodW5zaWduZWQgbG9uZyBzcmNSR0IsIHVuc2lnbmVkIGxvbmcgZHN0UkdCLCB1
bnNpZ25lZCBsb25nIHNyY0FscGhhLCB1bnNpZ25lZCBsb25nIGRzdEFscGhhKQogeworICAgIENs
ZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwogICAgIG1fY29udGV4dC0+YmxlbmRGdW5jU2VwYXJh
dGUoc3JjUkdCLCBkc3RSR0IsIHNyY0FscGhhLCBkc3RBbHBoYSk7Ci0gICAgY2xlYW51cEFmdGVy
R3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJ1
ZmZlckRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQsIGludCBzaXplLCB1bnNpZ25lZCBsb25nIHVz
YWdlKQogeworICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwogICAgIG1fY29udGV4dC0+
YnVmZmVyRGF0YSh0YXJnZXQsIHNpemUsIHVzYWdlKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGlj
c0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyRGF0
YSh1bnNpZ25lZCBsb25nIHRhcmdldCwgV2ViR0xBcnJheSogZGF0YSwgdW5zaWduZWQgbG9uZyB1
c2FnZSkKIHsKKyAgICBDbGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKICAgICBtX2NvbnRleHQt
PmJ1ZmZlckRhdGEodGFyZ2V0LCBkYXRhLCB1c2FnZSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhp
Y3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZlclN1
YkRhdGEodW5zaWduZWQgbG9uZyB0YXJnZXQsIGxvbmcgb2Zmc2V0LCBXZWJHTEFycmF5KiBkYXRh
KQogeworICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwogICAgIG1fY29udGV4dC0+YnVm
ZmVyU3ViRGF0YSh0YXJnZXQsIG9mZnNldCwgZGF0YSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhp
Y3NDYWxsKGZhbHNlKTsKIH0KIAogdW5zaWduZWQgbG9uZyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmNoZWNrRnJhbWVidWZmZXJTdGF0dXModW5zaWduZWQgbG9uZyB0YXJnZXQpCiB7CisgICAgQ2xl
YW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CiAgICAgcmV0dXJuIG1fY29udGV4dC0+Y2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1cyh0YXJnZXQpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxz
ZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpjbGVhcih1bnNpZ25lZCBsb25n
IG1hc2spCiB7CisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCB0cnVlKTsKICAgICBtX2NvbnRleHQt
PmNsZWFyKG1hc2spOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbCh0cnVlKTsKIH0KIAog
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNsZWFyQ29sb3IoZG91YmxlIHIsIGRvdWJsZSBn
LCBkb3VibGUgYiwgZG91YmxlIGEpCiB7CisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7
CiAgICAgaWYgKGlzbmFuKHIpKQogICAgICAgICByID0gMDsKICAgICBpZiAoaXNuYW4oZykpCkBA
IC0yNjMsNDcgKzMyMCw0NiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y2xlYXJDb2xv
cihkCiAgICAgaWYgKGlzbmFuKGEpKQogICAgICAgICBhID0gMTsKICAgICBtX2NvbnRleHQtPmNs
ZWFyQ29sb3IociwgZywgYiwgYSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNl
KTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNsZWFyRGVwdGgoZG91YmxlIGRl
cHRoKQogeworICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwogICAgIG1fY29udGV4dC0+
Y2xlYXJEZXB0aChkZXB0aCk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsK
IH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNsZWFyU3RlbmNpbChsb25nIHMpCiB7
CisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CiAgICAgbV9jb250ZXh0LT5jbGVhclN0
ZW5jaWwocyk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNvbG9yTWFzayhib29sIHJlZCwgYm9vbCBncmVlbiwg
Ym9vbCBibHVlLCBib29sIGFscGhhKQogeworICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2Up
OwogICAgIG1fY29udGV4dC0+Y29sb3JNYXNrKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKLSAg
ICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6Y29tcGlsZVNoYWRlcihXZWJHTFNoYWRlciogc2hhZGVyLCBFeGNlcHRpb25D
b2RlJiBlYykKIHsKKyAgICBDbGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKICAgICBpZiAoIXNo
YWRlciB8fCBzaGFkZXItPmNvbnRleHQoKSAhPSB0aGlzKSB7CiAgICAgICAgIGVjID0gVFlQRV9N
SVNNQVRDSF9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9jb250ZXh0LT5jb21w
aWxlU2hhZGVyKHNoYWRlcik7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsK
IH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNvcHlUZXhJbWFnZTJEKHVuc2lnbmVk
IGxvbmcgdGFyZ2V0LCBsb25nIGxldmVsLCB1bnNpZ25lZCBsb25nIGludGVybmFsZm9ybWF0LCBs
b25nIHgsIGxvbmcgeSwgdW5zaWduZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQs
IGxvbmcgYm9yZGVyKQogeworICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwogICAgIG1f
Y29udGV4dC0+Y29weVRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHgs
IHksIHdpZHRoLCBoZWlnaHQsIGJvcmRlcik7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxs
KGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNvcHlUZXhTdWJJbWFn
ZTJEKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBsb25nIGxldmVsLCBsb25nIHhvZmZzZXQsIGxvbmcg
eW9mZnNldCwgbG9uZyB4LCBsb25nIHksIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2lnbmVkIGxv
bmcgaGVpZ2h0KQogeworICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwogICAgIG1fY29u
dGV4dC0+Y29weVRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwg
eCwgeSwgd2lkdGgsIGhlaWdodCk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNl
KTsKIH0KIAogUGFzc1JlZlB0cjxXZWJHTEJ1ZmZlcj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpj
cmVhdGVCdWZmZXIoKQpAQCAtMzU2LDggKzQxMiw4IEBAIFBhc3NSZWZQdHI8V2ViR0xTaGFkZXI+
IFdlYkdMUmVuZGVyaW5nQ28KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmN1bGxGYWNl
KHVuc2lnbmVkIGxvbmcgbW9kZSkKIHsKKyAgICBDbGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsK
ICAgICBtX2NvbnRleHQtPmN1bGxGYWNlKG1vZGUpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNz
Q2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkZWxldGVCdWZm
ZXIoV2ViR0xCdWZmZXIqIGJ1ZmZlcikKQEAgLTQxMCwyMCArNDY2LDIwIEBAIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpkZWxldGVUZXh0dXIKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmRlcHRoRnVuYyh1bnNpZ25lZCBsb25nIGZ1bmMpCiB7CisgICAgQ2xlYW51cEhlbHBlcih0
aGlzLCBmYWxzZSk7CiAgICAgbV9jb250ZXh0LT5kZXB0aEZ1bmMoZnVuYyk7Ci0gICAgY2xlYW51
cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmRlcHRoTWFzayhib29sIGZsYWcpCiB7CisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxz
ZSk7CiAgICAgbV9jb250ZXh0LT5kZXB0aE1hc2soZmxhZyk7Ci0gICAgY2xlYW51cEFmdGVyR3Jh
cGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRlcHRo
UmFuZ2UoZG91YmxlIHpOZWFyLCBkb3VibGUgekZhcikKIHsKKyAgICBDbGVhbnVwSGVscGVyKHRo
aXMsIGZhbHNlKTsKICAgICBtX2NvbnRleHQtPmRlcHRoUmFuZ2Uoek5lYXIsIHpGYXIpOwotICAg
IGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpkZXRhY2hTaGFkZXIoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBXZWJHTFNoYWRl
ciogc2hhZGVyLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTQzMiw1OSArNDg4LDU5IEBAIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkZXRhY2hTaGFkZXIKICAgICAgICAgZWMgPSBUWVBFX01J
U01BVENIX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBDbGVhbnVwSGVscGVyKHRo
aXMsIGZhbHNlKTsKICAgICBtX2NvbnRleHQtPmRldGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXIp
OwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIAogdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmRpc2FibGUodW5zaWduZWQgbG9uZyBjYXApCiB7CisgICAgQ2xl
YW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CiAgICAgbV9jb250ZXh0LT5kaXNhYmxlKGNhcCk7Ci0g
ICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSh1bnNpZ25lZCBsb25nIGluZGV4
KQogeworICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwogICAgIG1fY29udGV4dC0+ZGlz
YWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0Nh
bGwoZmFsc2UpOwogfQogCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpkcmF3QXJyYXlz
KHVuc2lnbmVkIGxvbmcgbW9kZSwgbG9uZyBmaXJzdCwgbG9uZyBjb3VudCkKIHsKKyAgICBDbGVh
bnVwSGVscGVyKHRoaXMsIHRydWUpOwogICAgIG1fY29udGV4dC0+ZHJhd0FycmF5cyhtb2RlLCBm
aXJzdCwgY291bnQpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbCh0cnVlKTsKIH0KIAog
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRyYXdFbGVtZW50cyh1bnNpZ25lZCBsb25nIG1v
ZGUsIHVuc2lnbmVkIGxvbmcgY291bnQsIHVuc2lnbmVkIGxvbmcgdHlwZSwgbG9uZyBvZmZzZXQp
CiB7CisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCB0cnVlKTsKICAgICBtX2NvbnRleHQtPmRyYXdF
bGVtZW50cyhtb2RlLCBjb3VudCwgdHlwZSwgb2Zmc2V0KTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFw
aGljc0NhbGwodHJ1ZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjplbmFibGUo
dW5zaWduZWQgbG9uZyBjYXApCiB7CisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CiAg
ICAgbV9jb250ZXh0LT5lbmFibGUoY2FwKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwo
ZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZW5hYmxlVmVydGV4QXR0
cmliQXJyYXkodW5zaWduZWQgbG9uZyBpbmRleCkKIHsKKyAgICBDbGVhbnVwSGVscGVyKHRoaXMs
IGZhbHNlKTsKICAgICBtX2NvbnRleHQtPmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KTsK
LSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6ZmluaXNoKCkKIHsKKyAgICBDbGVhbnVwSGVscGVyKHRoaXMsIHRydWUp
OwogICAgIG1fY29udGV4dC0+ZmluaXNoKCk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxs
KHRydWUpOwogfQogCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpmbHVzaCgpCiB7Cisg
ICAgQ2xlYW51cEhlbHBlcih0aGlzLCB0cnVlKTsKICAgICBtX2NvbnRleHQtPmZsdXNoKCk7Ci0g
ICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKHRydWUpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIodW5zaWduZWQgbG9uZyB0YXJnZXQs
IHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgdW5zaWduZWQgbG9uZyByZW5kZXJidWZmZXJ0YXJn
ZXQsIFdlYkdMUmVuZGVyYnVmZmVyKiBidWZmZXIsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtNDkz
LDggKzU0OSw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpmcmFtZWJ1ZmZlclIKICAg
ICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0gICAg
ICAgCisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CiAgICAgbV9jb250ZXh0LT5mcmFt
ZWJ1ZmZlclJlbmRlcmJ1ZmZlcih0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdl
dCwgYnVmZmVyKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZnJhbWVidWZmZXJUZXh0dXJlMkQodW5zaWduZWQg
bG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgdW5zaWduZWQgbG9uZyB0ZXh0
YXJnZXQsIFdlYkdMVGV4dHVyZSogdGV4dHVyZSwgbG9uZyBsZXZlbCwgRXhjZXB0aW9uQ29kZSYg
ZWMpCkBAIC01MDMsMjAgKzU1OSwyMCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZnJh
bWVidWZmZXJUCiAgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CiAgICAgbV9jb250ZXh0
LT5mcmFtZWJ1ZmZlclRleHR1cmUyRCh0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHRhcmdldCwgdGV4
dHVyZSwgbGV2ZWwpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAK
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpmcm9udEZhY2UodW5zaWduZWQgbG9uZyBtb2Rl
KQogeworICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwogICAgIG1fY29udGV4dC0+ZnJv
bnRGYWNlKG1vZGUpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAK
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZW5lcmF0ZU1pcG1hcCh1bnNpZ25lZCBsb25n
IHRhcmdldCkKIHsKKyAgICBDbGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKICAgICBtX2NvbnRl
eHQtPmdlbmVyYXRlTWlwbWFwKHRhcmdldCk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxs
KGZhbHNlKTsKIH0KIAogUGFzc1JlZlB0cjxXZWJHTEFjdGl2ZUluZm8+IFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6Z2V0QWN0aXZlQXR0cmliKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgdW5zaWduZWQg
bG9uZyBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC01NDQsMzIgKzYwMCwyNyBAQCBpbnQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRBdHRyaWJMb2NhCiAgICAgcmV0dXJuIG1fY29udGV4
dC0+Z2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgbmFtZSk7CiB9CiAKLWJvb2wgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpnZXRCb29sZWFuKHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgYm9v
bCByZXN1bHQgPSBtX2NvbnRleHQtPmdldEJvb2xlYW4ocG5hbWUpOwotICAgIGNsZWFudXBBZnRl
ckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotUGFzc1JlZlB0
cjxXZWJHTFVuc2lnbmVkQnl0ZUFycmF5PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEJvb2xl
YW52KHVuc2lnbmVkIGxvbmcgcG5hbWUpCitXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpnZXRCdWZmZXJQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxv
bmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIFJlZlB0cjxXZWJHTFVuc2lnbmVk
Qnl0ZUFycmF5PiBhcnJheSA9IG1fY29udGV4dC0+Z2V0Qm9vbGVhbnYocG5hbWUpOwotICAgIGNs
ZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci0gICAgcmV0dXJuIGFycmF5OwotfQorICAg
IGlmICh0YXJnZXQgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkFSUkFZX0JVRkZFUiAmJiB0YXJnZXQg
IT0gR3JhcGhpY3NDb250ZXh0M0Q6OkVMRU1FTlRfQVJSQVlfQlVGRkVSKSB7CisgICAgICAgIC8v
IEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX0VOVU0gZXJyb3IKKyAgICAgICAgZWMgPSBTWU5UQVhf
RVJSOworICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CisgICAgfQogCi1pbnQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpnZXRCdWZmZXJQYXJhbWV0ZXJpKHVuc2lnbmVkIGxvbmcgdGFyZ2V0
LCB1bnNpZ25lZCBsb25nIHBuYW1lKQotewotICAgIGludCByZXN1bHQgPSBtX2NvbnRleHQtPmdl
dEJ1ZmZlclBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhp
Y3NDYWxsKGZhbHNlKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQorICAgIGlmIChwbmFtZSAhPSBH
cmFwaGljc0NvbnRleHQzRDo6QlVGRkVSX1NJWkUgJiYgcG5hbWUgIT0gR3JhcGhpY3NDb250ZXh0
M0Q6OkJVRkZFUl9VU0FHRSkgeworICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9F
TlVNIGVycm9yCisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuIFdlYkdM
R2V0SW5mbygpOworICAgIH0KIAotUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmdldEJ1ZmZlclBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1
bnNpZ25lZCBsb25nIHBuYW1lKQotewotICAgIFJlZlB0cjxXZWJHTEludEFycmF5PiBhcnJheSA9
IG1fY29udGV4dC0+Z2V0QnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSk7Ci0gICAgY2xl
YW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKLSAgICByZXR1cm4gYXJyYXk7CisgICAgQ2xl
YW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CisgICAgaW50IHZhbHVlOworICAgIG1fY29udGV4dC0+
Z2V0QnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgJnZhbHVlKTsKKyAgICBpZiAocG5h
bWUgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkJVRkZFUl9TSVpFKQorICAgICAgICByZXR1cm4gV2Vi
R0xHZXRJbmZvKHN0YXRpY19jYXN0PGxvbmc+KHZhbHVlKSk7CisgICAgZWxzZQorICAgICAgICBy
ZXR1cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KHZhbHVlKSk7CiB9
CiAKIHVuc2lnbmVkIGxvbmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFcnJvcigpCkBAIC01
NzcsMTE2ICs2MjgsMzI3IEBAIHVuc2lnbmVkIGxvbmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpn
ZXQKICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRFcnJvcigpOwogfQogCi1mbG9hdCBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmdldEZsb2F0KHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgZmxv
YXQgcmVzdWx0ID0gbV9jb250ZXh0LT5nZXRGbG9hdChwbmFtZSk7Ci0gICAgY2xlYW51cEFmdGVy
R3JhcGhpY3NDYWxsKGZhbHNlKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1QYXNzUmVmUHRy
PFdlYkdMRmxvYXRBcnJheT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRGbG9hdHYodW5zaWdu
ZWQgbG9uZyBwbmFtZSkKLXsKLSAgICBSZWZQdHI8V2ViR0xGbG9hdEFycmF5PiBhcnJheSA9IG1f
Y29udGV4dC0+Z2V0RmxvYXR2KHBuYW1lKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwo
ZmFsc2UpOwotICAgIHJldHVybiBhcnJheTsKLX0KLQotaW50IFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaSh1bnNpZ25lZCBsb25nIHRhcmdl
dCwgdW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCB1bnNpZ25lZCBsb25nIHBuYW1lKQotewotICAg
IGludCByZXN1bHQgPSBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRl
cmkodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3ND
YWxsKGZhbHNlKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1QYXNzUmVmUHRyPFdlYkdMSW50
QXJyYXk+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFy
YW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwg
dW5zaWduZWQgbG9uZyBwbmFtZSkKK1dlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcih1bnNpZ25lZCBsb25nIHRhcmdldCwg
dW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBFeGNlcHRpb25D
b2RlJiBlYykKIHsKLSAgICBSZWZQdHI8V2ViR0xJbnRBcnJheT4gYXJyYXkgPSBtX2NvbnRleHQt
PmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHRhcmdldCwgYXR0YWNobWVudCwg
cG5hbWUpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci0gICAgcmV0dXJu
IGFycmF5OwotfQorICAgIGlmICh0YXJnZXQgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVG
RkVSCisgICAgICAgIHx8IChhdHRhY2htZW50ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9B
VFRBQ0hNRU5UMAorICAgICAgICAgICAgJiYgYXR0YWNobWVudCAhPSBHcmFwaGljc0NvbnRleHQz
RDo6REVQVEhfQVRUQUNITUVOVAorICAgICAgICAgICAgJiYgYXR0YWNobWVudCAhPSBHcmFwaGlj
c0NvbnRleHQzRDo6U1RFTkNJTF9BVFRBQ0hNRU5UKQorICAgICAgICB8fCAocG5hbWUgIT0gR3Jh
cGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEUKKyAgICAg
ICAgICAgICYmIHBuYW1lICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9BVFRBQ0hN
RU5UX09CSkVDVF9OQU1FCisgICAgICAgICAgICAmJiBwbmFtZSAhPSBHcmFwaGljc0NvbnRleHQz
RDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xFVkVMCisgICAgICAgICAgICAmJiBw
bmFtZSAhPSBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJF
X0NVQkVfTUFQX0ZBQ0UpKSB7CisgICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX0VO
VU0gZXJyb3IKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm4gV2ViR0xH
ZXRJbmZvKCk7CisgICAgfQogCi1pbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRJbnRlZ2Vy
KHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgZmxvYXQgcmVzdWx0ID0gbV9jb250ZXh0LT5n
ZXRJbnRlZ2VyKHBuYW1lKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwot
ICAgIHJldHVybiByZXN1bHQ7CisgICAgaWYgKHBuYW1lICE9IEdyYXBoaWNzQ29udGV4dDNEOjpG
UkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FKSB7CisgICAgICAgIENsZWFudXBIZWxw
ZXIodGhpcywgZmFsc2UpOworICAgICAgICBpbnQgdmFsdWU7CisgICAgICAgIG1fY29udGV4dC0+
Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYodGFyZ2V0LCBhdHRhY2htZW50LCBw
bmFtZSwgJnZhbHVlKTsKKyAgICAgICAgaWYgKHBuYW1lID09IEdyYXBoaWNzQ29udGV4dDNEOjpG
UkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFKQorICAgICAgICAgICAgcmV0dXJuIFdl
YkdMR2V0SW5mbyhzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPih2YWx1ZSkpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0PGxvbmc+KHZh
bHVlKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7
CisgICAgICAgIGludCB0eXBlID0gMDsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnRQYXJhbWV0ZXJpdih0YXJnZXQsIGF0dGFjaG1lbnQsIEdyYXBoaWNzQ29udGV4
dDNEOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFLCAmdHlwZSk7CisgICAgICAg
IGludCB2YWx1ZSA9IDA7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RnJhbWVidWZmZXJBdHRhY2ht
ZW50UGFyYW1ldGVyaXYodGFyZ2V0LCBhdHRhY2htZW50LCBHcmFwaGljc0NvbnRleHQzRDo6RlJB
TUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRSwgJnZhbHVlKTsKKyAgICAgICAgLy8gRklY
TUU6IHNob3VsZCBjb25zaWRlciBjYW5vbmljYWxpemluZyB0aGVzZSBvYmplY3RzCisgICAgICAg
IHN3aXRjaCAodHlwZSkgeworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJC
VUZGRVI6IHsKKyAgICAgICAgICAgIFJlZlB0cjxXZWJHTFJlbmRlcmJ1ZmZlcj4gdG1wID0gV2Vi
R0xSZW5kZXJidWZmZXI6OmNyZWF0ZSh0aGlzLCB2YWx1ZSk7CisgICAgICAgICAgICBhZGRPYmpl
Y3QodG1wLmdldCgpKTsKKyAgICAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oUGFzc1JlZlB0
cjxXZWJHTFJlbmRlcmJ1ZmZlcj4odG1wKSk7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRTogeworICAgICAgICAgICAgUmVmUHRyPFdlYkdMVGV4dHVy
ZT4gdG1wID0gV2ViR0xUZXh0dXJlOjpjcmVhdGUodGhpcywgdmFsdWUpOworICAgICAgICAgICAg
YWRkT2JqZWN0KHRtcC5nZXQoKSk7CisgICAgICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKFBh
c3NSZWZQdHI8V2ViR0xUZXh0dXJlPih0bXApKTsKKyAgICAgICAgfQorICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgLy8gRklYTUU6IHJhaXNlIGV4Y2VwdGlvbj8KKyAgICAgICAgICAgIHJl
dHVybiBXZWJHTEdldEluZm8oKTsKKyAgICAgICAgfQorICAgIH0KIH0KIAotUGFzc1JlZlB0cjxX
ZWJHTEludEFycmF5PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEludGVnZXJ2KHVuc2lnbmVk
IGxvbmcgcG5hbWUpCitXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQYXJh
bWV0ZXIodW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgUmVm
UHRyPFdlYkdMSW50QXJyYXk+IGFycmF5ID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VydihwbmFtZSk7
Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKLSAgICByZXR1cm4gYXJyYXk7
CisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CisgICAgc3dpdGNoIChwbmFtZSkgewor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkFDVElWRV9URVhUVVJFOgorICAgICAgICByZXR1
cm4gZ2V0VW5zaWduZWRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dDNEOjpBTElBU0VEX0xJTkVfV0lEVEhfUkFOR0U6CisgICAgICAgIHJldHVybiBnZXRXZWJH
TEZsb2F0QXJyYXlQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6
OkFMSUFTRURfUE9JTlRfU0laRV9SQU5HRToKKyAgICAgICAgcmV0dXJuIGdldFdlYkdMRmxvYXRB
cnJheVBhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6QUxQSEFf
QklUUzoKKyAgICAgICAgcmV0dXJuIGdldExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0M0Q6OkFSUkFZX0JVRkZFUl9CSU5ESU5HOgorICAgICAgICByZXR1cm4g
V2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xCdWZmZXI+KG1fYXJyYXlCdWZmZXJCaW5kaW5n
KSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6QkxFTkQ6CisgICAgICAgIHJldHVybiBn
ZXRCb29sZWFuUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpC
TEVORF9DT0xPUjoKKyAgICAgICAgcmV0dXJuIGdldFdlYkdMRmxvYXRBcnJheVBhcmFtZXRlcihw
bmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6QkxFTkRfRFNUX0FMUEhBOgorICAg
ICAgICByZXR1cm4gZ2V0VW5zaWduZWRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dDNEOjpCTEVORF9EU1RfUkdCOgorICAgICAgICByZXR1cm4gZ2V0VW5zaWdu
ZWRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpCTEVO
RF9FUVVBVElPTl9BTFBIQToKKyAgICAgICAgcmV0dXJuIGdldFVuc2lnbmVkTG9uZ1BhcmFtZXRl
cihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6QkxFTkRfRVFVQVRJT05fUkdC
OgorICAgICAgICByZXR1cm4gZ2V0VW5zaWduZWRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpCTEVORF9TUkNfQUxQSEE6CisgICAgICAgIHJldHVybiBn
ZXRVbnNpZ25lZExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
M0Q6OkJMRU5EX1NSQ19SR0I6CisgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZExvbmdQYXJhbWV0
ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkJMVUVfQklUUzoKKyAgICAg
ICAgcmV0dXJuIGdldExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0M0Q6OkNPTE9SX0NMRUFSX1ZBTFVFOgorICAgICAgICByZXR1cm4gZ2V0V2ViR0xGbG9hdEFy
cmF5UGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9X
UklURU1BU0s6CisgICAgICAgIHJldHVybiBnZXRXZWJHTFVuc2lnbmVkQnl0ZUFycmF5UGFyYW1l
dGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpDT01QUkVTU0VEX1RFWFRV
UkVfRk9STUFUUzoKKyAgICAgICAgLy8gRGVmaW5lZCBhcyBudWxsIGluIHRoZSBzcGVjCisgICAg
ICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpD
VUxMX0ZBQ0U6CisgICAgICAgIHJldHVybiBnZXRCb29sZWFuUGFyYW1ldGVyKHBuYW1lKTsKKyAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpDVUxMX0ZBQ0VfTU9ERToKKyAgICAgICAgcmV0dXJu
IGdldFVuc2lnbmVkTG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6Q1VSUkVOVF9QUk9HUkFNOgorICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKFBhc3NS
ZWZQdHI8V2ViR0xQcm9ncmFtPihtX2N1cnJlbnRQcm9ncmFtKSk7CisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHQzRDo6REVQVEhfQklUUzoKKyAgICAgICAgcmV0dXJuIGdldExvbmdQYXJhbWV0ZXIo
cG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0NMRUFSX1ZBTFVFOgor
ICAgICAgICByZXR1cm4gZ2V0RmxvYXRQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0M0Q6OkRFUFRIX0ZVTkM6CisgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZExvbmdQ
YXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX1JBTkdF
OgorICAgICAgICByZXR1cm4gZ2V0V2ViR0xGbG9hdEFycmF5UGFyYW1ldGVyKHBuYW1lKTsKKyAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9URVNUOgorICAgICAgICByZXR1cm4gZ2V0
Qm9vbGVhblBhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQ
VEhfV1JJVEVNQVNLOgorICAgICAgICByZXR1cm4gZ2V0Qm9vbGVhblBhcmFtZXRlcihwbmFtZSk7
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RElUSEVSOgorICAgICAgICByZXR1cm4gZ2V0
Qm9vbGVhblBhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RUxF
TUVOVF9BUlJBWV9CVUZGRVJfQklORElORzoKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhQ
YXNzUmVmUHRyPFdlYkdMQnVmZmVyPihtX2VsZW1lbnRBcnJheUJ1ZmZlckJpbmRpbmcpKTsKKyAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9CSU5ESU5HOgorICAgICAgICBy
ZXR1cm4gV2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xGcmFtZWJ1ZmZlcj4obV9mcmFtZWJ1
ZmZlckJpbmRpbmcpKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpGUk9OVF9GQUNFOgor
ICAgICAgICByZXR1cm4gZ2V0VW5zaWduZWRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dDNEOjpHRU5FUkFURV9NSVBNQVBfSElOVDoKKyAgICAgICAgcmV0dXJu
IGdldFVuc2lnbmVkTG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6R1JFRU5fQklUUzoKKyAgICAgICAgcmV0dXJuIGdldExvbmdQYXJhbWV0ZXIocG5hbWUp
OworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVfV0lEVEg6CisgICAgICAgIHJldHVy
biBnZXRGbG9hdFBhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
TUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFM6CisgICAgICAgIHJldHVybiBnZXRMb25n
UGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpNQVhfQ1VCRV9N
QVBfVEVYVFVSRV9TSVpFOgorICAgICAgICByZXR1cm4gZ2V0TG9uZ1BhcmFtZXRlcihwbmFtZSk7
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6TUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9S
UzoKKyAgICAgICAgcmV0dXJuIGdldExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0M0Q6Ok1BWF9SRU5ERVJCVUZGRVJfU0laRToKKyAgICAgICAgcmV0dXJuIGdl
dExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9U
RVhUVVJFX0lNQUdFX1VOSVRTOgorICAgICAgICByZXR1cm4gZ2V0TG9uZ1BhcmFtZXRlcihwbmFt
ZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6TUFYX1RFWFRVUkVfU0laRToKKyAgICAg
ICAgcmV0dXJuIGdldExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0M0Q6Ok1BWF9WQVJZSU5HX1ZFQ1RPUlM6CisgICAgICAgIHJldHVybiBnZXRMb25nUGFyYW1l
dGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpNQVhfVkVSVEVYX0FUVFJJ
QlM6CisgICAgICAgIHJldHVybiBnZXRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dDNEOjpNQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFM6CisgICAgICAg
IHJldHVybiBnZXRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dDNEOjpNQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUzoKKyAgICAgICAgcmV0dXJuIGdldExvbmdQ
YXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9WSUVXUE9S
VF9ESU1TOgorICAgICAgICByZXR1cm4gZ2V0V2ViR0xJbnRBcnJheVBhcmFtZXRlcihwbmFtZSk7
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6TlVNX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JN
QVRTOgorICAgICAgICByZXR1cm4gZ2V0TG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6TlVNX1NIQURFUl9CSU5BUllfRk9STUFUUzoKKyAgICAgICAgLy8g
RklYTUU6IHNob3VsZCB3ZSBhbHdheXMgcmV0dXJuIDAgZm9yIHRoaXM/CisgICAgICAgIHJldHVy
biBnZXRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpQ
QUNLX0FMSUdOTUVOVDoKKyAgICAgICAgcmV0dXJuIGdldExvbmdQYXJhbWV0ZXIocG5hbWUpOwor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlBPTFlHT05fT0ZGU0VUX0ZBQ1RPUjoKKyAgICAg
ICAgcmV0dXJuIGdldEZsb2F0UGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dDNEOjpQT0xZR09OX09GRlNFVF9GSUxMOgorICAgICAgICByZXR1cm4gZ2V0Qm9vbGVhblBh
cmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UE9MWUdPTl9PRkZT
RVRfVU5JVFM6CisgICAgICAgIHJldHVybiBnZXRGbG9hdFBhcmFtZXRlcihwbmFtZSk7CisgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UkVEX0JJVFM6CisgICAgICAgIHJldHVybiBnZXRMb25n
UGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZG
RVJfQklORElORzoKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdM
UmVuZGVyYnVmZmVyPihtX3JlbmRlcmJ1ZmZlckJpbmRpbmcpKTsKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dDNEOjpTQU1QTEVfQlVGRkVSUzoKKyAgICAgICAgcmV0dXJuIGdldExvbmdQYXJhbWV0
ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNBTVBMRV9DT1ZFUkFHRV9J
TlZFUlQ6CisgICAgICAgIHJldHVybiBnZXRCb29sZWFuUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTQU1QTEVfQ09WRVJBR0VfVkFMVUU6CisgICAgICAgIHJl
dHVybiBnZXRGbG9hdFBhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6U0FNUExFUzoKKyAgICAgICAgcmV0dXJuIGdldExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNDSVNTT1JfQk9YOgorICAgICAgICByZXR1cm4gZ2V0
V2ViR0xJbnRBcnJheVBhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6U0NJU1NPUl9URVNUOgorICAgICAgICByZXR1cm4gZ2V0Qm9vbGVhblBhcmFtZXRlcihwbmFt
ZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9CQUNLX0ZBSUw6CisgICAg
ICAgIHJldHVybiBnZXRVbnNpZ25lZExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfQkFDS19GVU5DOgorICAgICAgICByZXR1cm4gZ2V0VW5z
aWduZWRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpT
VEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9GQUlMOgorICAgICAgICByZXR1cm4gZ2V0VW5zaWduZWRM
b25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lM
X0JBQ0tfUEFTU19ERVBUSF9QQVNTOgorICAgICAgICByZXR1cm4gZ2V0VW5zaWduZWRMb25nUGFy
YW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0JBQ0tf
UkVGOgorICAgICAgICByZXR1cm4gZ2V0TG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9CQUNLX1ZBTFVFX01BU0s6CisgICAgICAgIHJldHVy
biBnZXRVbnNpZ25lZExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0M0Q6OlNURU5DSUxfQkFDS19XUklURU1BU0s6CisgICAgICAgIHJldHVybiBnZXRVbnNpZ25l
ZExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5D
SUxfQklUUzoKKyAgICAgICAgcmV0dXJuIGdldExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfQ0xFQVJfVkFMVUU6CisgICAgICAgIHJldHVy
biBnZXRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpT
VEVOQ0lMX0ZBSUw6CisgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZExvbmdQYXJhbWV0ZXIocG5h
bWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfRlVOQzoKKyAgICAgICAg
cmV0dXJuIGdldFVuc2lnbmVkTG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHQzRDo6U1RFTkNJTF9QQVNTX0RFUFRIX0ZBSUw6CisgICAgICAgIHJldHVybiBnZXRV
bnNpZ25lZExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6
OlNURU5DSUxfUEFTU19ERVBUSF9QQVNTOgorICAgICAgICByZXR1cm4gZ2V0VW5zaWduZWRMb25n
UGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX1JF
RjoKKyAgICAgICAgcmV0dXJuIGdldExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfVEVTVDoKKyAgICAgICAgcmV0dXJuIGdldEJvb2xlYW5Q
YXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfVkFM
VUVfTUFTSzoKKyAgICAgICAgcmV0dXJuIGdldFVuc2lnbmVkTG9uZ1BhcmFtZXRlcihwbmFtZSk7
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9XUklURU1BU0s6CisgICAgICAg
IHJldHVybiBnZXRVbnNpZ25lZExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0M0Q6OlNVQlBJWEVMX0JJVFM6CisgICAgICAgIHJldHVybiBnZXRMb25nUGFyYW1l
dGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX0JJTkRJTkdf
MkQ6CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTFRleHR1cmU+
KG1fdGV4dHVyZVVuaXRzW21fYWN0aXZlVGV4dHVyZVVuaXRdLm1fdGV4dHVyZTJEQmluZGluZykp
OworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfQklORElOR19DVUJFX01BUDoK
KyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMVGV4dHVyZT4obV90
ZXh0dXJlVW5pdHNbbV9hY3RpdmVUZXh0dXJlVW5pdF0ubV90ZXh0dXJlQ3ViZU1hcEJpbmRpbmcp
KTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpVTlBBQ0tfQUxJR05NRU5UOgorICAgICAg
ICAvLyBGSVhNRTogc2hvdWxkIHRoaXMgYmUgImxvbmciIGluIHRoZSBzcGVjPworICAgICAgICBy
ZXR1cm4gZ2V0SW50UGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNE
OjpWSUVXUE9SVDoKKyAgICAgICAgcmV0dXJuIGdldFdlYkdMSW50QXJyYXlQYXJhbWV0ZXIocG5h
bWUpOworICAgIGRlZmF1bHQ6CisgICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX0VO
VU0gZXJyb3IKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm4gV2ViR0xH
ZXRJbmZvKCk7CisgICAgfQogfQogCi1pbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQcm9n
cmFtaShXZWJHTFByb2dyYW0qIHByb2dyYW0sIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlv
bkNvZGUmIGVjKQorV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UHJvZ3Jh
bVBhcmFtZXRlcihXZWJHTFByb2dyYW0qIHByb2dyYW0sIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICghcHJvZ3JhbSB8fCBwcm9ncmFtLT5jb250ZXh0
KCkgIT0gdGhpcykgeworICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9WQUxVRSBl
cnJvcgogICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOwotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOwogICAgIH0KIAotICAgIGludCByZXN1bHQg
PSBtX2NvbnRleHQtPmdldFByb2dyYW1pKHByb2dyYW0sIHBuYW1lKTsKLSAgICBjbGVhbnVwQWZ0
ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVBhc3NSZWZQ
dHI8V2ViR0xJbnRBcnJheT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQcm9ncmFtaXYoV2Vi
R0xQcm9ncmFtKiBwcm9ncmFtLCB1bnNpZ25lZCBsb25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJiBl
YykKLXsKLSAgICBpZiAoIXByb2dyYW0gfHwgcHJvZ3JhbS0+Y29udGV4dCgpICE9IHRoaXMpIHsK
LSAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7CisgICAg
Q2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CisgICAgaW50IHZhbHVlID0gMDsKKyAgICBzd2l0
Y2ggKHBuYW1lKSB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVMRVRFX1NUQVRVUzoK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5LX1NUQVRVUzoKKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpWQUxJREFURV9TVEFUVVM6CisgICAgICAgIG1fY29udGV4dC0+Z2V0UHJv
Z3JhbWl2KHByb2dyYW0sIHBuYW1lLCAmdmFsdWUpOworICAgICAgICByZXR1cm4gV2ViR0xHZXRJ
bmZvKHN0YXRpY19jYXN0PGJvb2w+KHZhbHVlKSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6SU5GT19MT0dfTEVOR1RIOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkFUVEFDSEVE
X1NIQURFUlM6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6QUNUSVZFX0FUVFJJQlVURVM6
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6QUNUSVZFX0FUVFJJQlVURV9NQVhfTEVOR1RI
OgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkFDVElWRV9VTklGT1JNUzoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dDNEOjpBQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RIOgorICAgICAgICBt
X2NvbnRleHQtPmdldFByb2dyYW1pdihwcm9ncmFtLCBwbmFtZSwgJnZhbHVlKTsKKyAgICAgICAg
cmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNfY2FzdDxsb25nPih2YWx1ZSkpOworICAgIGRlZmF1
bHQ6CisgICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX0VOVU0gZXJyb3IKKyAgICAg
ICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CiAgICAg
fQotICAgIFJlZlB0cjxXZWJHTEludEFycmF5PiBhcnJheSA9IG1fY29udGV4dC0+Z2V0UHJvZ3Jh
bWl2KHByb2dyYW0sIHBuYW1lKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2Up
OwotICAgIHJldHVybiBhcnJheTsKIH0KIAogU3RyaW5nIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
Z2V0UHJvZ3JhbUluZm9Mb2coV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKICAgICBpZiAoIXByb2dyYW0gfHwgcHJvZ3JhbS0+Y29udGV4dCgpICE9IHRoaXMpIHsK
KyAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfVkFMVUUgZXJyb3IKICAgICAgICAg
ZWMgPSBUWVBFX01JU01BVENIX0VSUjsKICAgICAgICAgcmV0dXJuICIiOwogICAgIH0KLSAgICBT
dHJpbmcgcyA9IG1fY29udGV4dC0+Z2V0UHJvZ3JhbUluZm9Mb2cocHJvZ3JhbSk7Ci0gICAgY2xl
YW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKLSAgICByZXR1cm4gczsKLX0KLQotaW50IFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSh1bnNpZ25lZCBs
b25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICBpbnQgcmVzdWx0ID0gbV9j
b250ZXh0LT5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpOwotICAgIGNs
ZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBD
bGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKKyAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRQcm9n
cmFtSW5mb0xvZyhwcm9ncmFtKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KHVuc2lnbmVkIGxv
bmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKQorV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcgdGFyZ2V0
LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBSZWZQdHI8
V2ViR0xJbnRBcnJheT4gYXJyYXkgPSBtX2NvbnRleHQtPmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRl
cml2KHRhcmdldCwgcG5hbWUpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7
Ci0gICAgcmV0dXJuIGFycmF5OwotfQorICAgIGlmICh0YXJnZXQgIT0gR3JhcGhpY3NDb250ZXh0
M0Q6OlJFTkRFUkJVRkZFUikgeworICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9F
TlVNIGVycm9yCisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuIFdlYkdM
R2V0SW5mbygpOworICAgIH0KIAotaW50IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2hhZGVy
aShXZWJHTFNoYWRlciogc2hhZGVyLCB1bnNpZ25lZCBsb25nIHBuYW1lLCBFeGNlcHRpb25Db2Rl
JiBlYykKLXsKLSAgICBpZiAoIXNoYWRlciB8fCBzaGFkZXItPmNvbnRleHQoKSAhPSB0aGlzKSB7
Ci0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7Ci0gICAgICAgIHJldHVybiAwOworICAg
IENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOworICAgIGludCB2YWx1ZSA9IDA7CisgICAgc3dp
dGNoIChwbmFtZSkgeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUl9X
SURUSDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVJfSEVJR0hUOgor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUl9SRURfU0laRToKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVJfR1JFRU5fU0laRToKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVJfQkxVRV9TSVpFOgorICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUl9BTFBIQV9TSVpFOgorICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUl9ERVBUSF9TSVpFOgorICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0M0Q6OlJFTkRFUkJVRkZFUl9TVEVOQ0lMX1NJWkU6CisgICAgICAgIG1fY29udGV4dC0+
Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgJnZhbHVlKTsKKyAgICAg
ICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNfY2FzdDxsb25nPih2YWx1ZSkpOworICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUl9JTlRFUk5BTF9GT1JNQVQ6CisgICAg
ICAgIG1fY29udGV4dC0+Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwg
JnZhbHVlKTsKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBsb25nPih2YWx1ZSkpOworICAgIGRlZmF1bHQ6CisgICAgICAgIC8vIEZJWE1FOiByYWlzZSBH
TF9JTlZBTElEX0VOVU0gZXJyb3IKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICBy
ZXR1cm4gV2ViR0xHZXRJbmZvKCk7CiAgICAgfQotICAgIGludCByZXN1bHQgPSBtX2NvbnRleHQt
PmdldFNoYWRlcmkoc2hhZGVyLCBwbmFtZSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxs
KGZhbHNlKTsKLSAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QYXNzUmVmUHRyPFdlYkdMSW50QXJy
YXk+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2hhZGVyaXYoV2ViR0xTaGFkZXIqIHNoYWRl
ciwgdW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitXZWJHTEdldEluZm8g
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTaGFkZXJQYXJhbWV0ZXIoV2ViR0xTaGFkZXIqIHNo
YWRlciwgdW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYg
KCFzaGFkZXIgfHwgc2hhZGVyLT5jb250ZXh0KCkgIT0gdGhpcykgeworICAgICAgICAvLyBGSVhN
RTogcmFpc2UgR0xfSU5WQUxJRF9WQUxVRSBlcnJvcgogICAgICAgICBlYyA9IFRZUEVfTUlTTUFU
Q0hfRVJSOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygp
OworICAgIH0KKyAgICBDbGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKKyAgICBpbnQgdmFsdWUg
PSAwOworICAgIHN3aXRjaCAocG5hbWUpIHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpE
RUxFVEVfU1RBVFVTOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTVBJTEVfU1RBVFVT
OgorICAgICAgICBtX2NvbnRleHQtPmdldFNoYWRlcml2KHNoYWRlciwgcG5hbWUsICZ2YWx1ZSk7
CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oc3RhdGljX2Nhc3Q8Ym9vbD4odmFsdWUpKTsK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTSEFERVJfVFlQRToKKyAgICAgICAgbV9jb250
ZXh0LT5nZXRTaGFkZXJpdihzaGFkZXIsIHBuYW1lLCAmdmFsdWUpOworICAgICAgICByZXR1cm4g
V2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KHZhbHVlKSk7CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHQzRDo6SU5GT19MT0dfTEVOR1RIOgorICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0M0Q6OlNIQURFUl9TT1VSQ0VfTEVOR1RIOgorICAgICAgICBtX2NvbnRleHQtPmdldFNo
YWRlcml2KHNoYWRlciwgcG5hbWUsICZ2YWx1ZSk7CisgICAgICAgIHJldHVybiBXZWJHTEdldElu
Zm8oc3RhdGljX2Nhc3Q8bG9uZz4odmFsdWUpKTsKKyAgICBkZWZhdWx0OgorICAgICAgICAvLyBG
SVhNRTogcmFpc2UgR0xfSU5WQUxJRF9FTlVNIGVycm9yCisgICAgICAgIGVjID0gU1lOVEFYX0VS
UjsKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOwogICAgIH0KLSAgICBSZWZQdHI8V2Vi
R0xJbnRBcnJheT4gYXJyYXkgPSBtX2NvbnRleHQtPmdldFNoYWRlcml2KHNoYWRlciwgcG5hbWUp
OwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci0gICAgcmV0dXJuIGFycmF5
OwogfQogCiBTdHJpbmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTaGFkZXJJbmZvTG9nKFdl
YkdMU2hhZGVyKiBzaGFkZXIsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtNjk1LDkgKzk1Nyw4IEBA
IFN0cmluZyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFNoYWRlckkKICAgICAgICAgZWMgPSBU
WVBFX01JU01BVENIX0VSUjsKICAgICAgICAgcmV0dXJuICIiOwogICAgIH0KLSAgICBTdHJpbmcg
cyA9IG1fY29udGV4dC0+Z2V0U2hhZGVySW5mb0xvZyhzaGFkZXIpOwotICAgIGNsZWFudXBBZnRl
ckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci0gICAgcmV0dXJuIHM7CisgICAgQ2xlYW51cEhlbHBlcih0
aGlzLCBmYWxzZSk7CisgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0U2hhZGVySW5mb0xvZyhzaGFk
ZXIpOwogfQogCiBTdHJpbmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTaGFkZXJTb3VyY2Uo
V2ViR0xTaGFkZXIqIHNoYWRlciwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC03MDYsODYgKzk2Nywx
NjYgQEAgU3RyaW5nIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2hhZGVyUwogICAgICAgICBl
YyA9IFRZUEVfTUlTTUFUQ0hfRVJSOwogICAgICAgICByZXR1cm4gIiI7CiAgICAgfQotICAgIFN0
cmluZyBzID0gbV9jb250ZXh0LT5nZXRTaGFkZXJTb3VyY2Uoc2hhZGVyKTsKLSAgICBjbGVhbnVw
QWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwotICAgIHJldHVybiBzOworICAgIENsZWFudXBIZWxw
ZXIodGhpcywgZmFsc2UpOworICAgIHJldHVybiBtX2NvbnRleHQtPmdldFNoYWRlclNvdXJjZShz
aGFkZXIpOwogfQogCiBTdHJpbmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTdHJpbmcodW5z
aWduZWQgbG9uZyBuYW1lKQogeworICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwogICAg
IHJldHVybiBtX2NvbnRleHQtPmdldFN0cmluZyhuYW1lKTsKIH0KIAotZmxvYXQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpnZXRUZXhQYXJhbWV0ZXJmKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNp
Z25lZCBsb25nIHBuYW1lKQotewotICAgIGZsb2F0IHJlc3VsdCA9IG1fY29udGV4dC0+Z2V0VGV4
UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwo
ZmFsc2UpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVBhc3NSZWZQdHI8V2ViR0xGbG9hdEFy
cmF5PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFRleFBhcmFtZXRlcmZ2KHVuc2lnbmVkIGxv
bmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKQotewotICAgIFJlZlB0cjxXZWJHTEZsb2F0
QXJyYXk+IGFycmF5ID0gbV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJmdih0YXJnZXQsIHBuYW1l
KTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwotICAgIHJldHVybiBhcnJh
eTsKLX0KLQotaW50IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VGV4UGFyYW1ldGVyaSh1bnNp
Z25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSkKK1dlYkdMR2V0SW5mbyBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmdldFRleFBhcmFtZXRlcih1bnNpZ25lZCBsb25nIHRhcmdldCwg
dW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgaW50IHJlc3Vs
dCA9IG1fY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lKTsKLSAgICBjbGVh
bnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVBh
c3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRUZXhQYXJh
bWV0ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAg
ICBSZWZQdHI8V2ViR0xJbnRBcnJheT4gYXJyYXkgPSBtX2NvbnRleHQtPmdldFRleFBhcmFtZXRl
cml2KHRhcmdldCwgcG5hbWUpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7
Ci0gICAgcmV0dXJuIGFycmF5OwotfQotCi1mbG9hdCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omdl
dFVuaWZvcm1mKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBsb2NhdGlvbiwgRXhjZXB0aW9u
Q29kZSYgZWMpCi17Ci0gICAgaWYgKCFwcm9ncmFtIHx8IHByb2dyYW0tPmNvbnRleHQoKSAhPSB0
aGlzKSB7Ci0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7Ci0gICAgICAgIHJldHVybiAw
OworICAgIGlmICh0YXJnZXQgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQKKyAgICAg
ICAgJiYgdGFyZ2V0ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX0NVQkVfTUFQKSB7Cisg
ICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX0VOVU0gZXJyb3IKKyAgICAgICAgZWMg
PSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CiAgICAgfQotICAg
IGZsb2F0IHJlc3VsdCA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybWYocHJvZ3JhbSwgbG9jYXRpb24p
OwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLQotUGFzc1JlZlB0cjxXZWJHTEZsb2F0QXJyYXk+IFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Z2V0VW5pZm9ybWZ2KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBsb2NhdGlvbiwgRXhj
ZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgaWYgKCFwcm9ncmFtIHx8IHByb2dyYW0tPmNvbnRleHQo
KSAhPSB0aGlzKSB7Ci0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7Ci0gICAgICAgIHJl
dHVybiAwOworICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOworICAgIGludCB2YWx1ZSA9
IDA7CisgICAgc3dpdGNoIChwbmFtZSkgeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfTUFHX0ZJTFRFUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01J
Tl9GSUxURVI6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1M6Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1Q6CisgICAgICAgIG1fY29u
dGV4dC0+Z2V0VGV4UGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgJnZhbHVlKTsKKyAgICAgICAg
cmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPih2YWx1ZSkpOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX0VOVU0gZXJy
b3IKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZv
KCk7CiAgICAgfQotICAgIFJlZlB0cjxXZWJHTEZsb2F0QXJyYXk+IGFycmF5ID0gbV9jb250ZXh0
LT5nZXRVbmlmb3JtZnYocHJvZ3JhbSwgbG9jYXRpb24pOwotICAgIGNsZWFudXBBZnRlckdyYXBo
aWNzQ2FsbChmYWxzZSk7Ci0gICAgcmV0dXJuIGFycmF5OwogfQogCi1sb25nIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6Z2V0VW5pZm9ybWkoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0
aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKK1dlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmdldFVuaWZvcm0oV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uLCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIXByb2dyYW0gfHwgcHJvZ3JhbS0+Y29udGV4dCgp
ICE9IHRoaXMpIHsKKyAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfVkFMVUUgZXJy
b3IKICAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKICAgICB9Ci0gICAgbG9uZyByZXN1bHQgPSBt
X2NvbnRleHQtPmdldFVuaWZvcm1pKHByb2dyYW0sIGxvY2F0aW9uKTsKLSAgICBjbGVhbnVwQWZ0
ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVBhc3NSZWZQ
dHI8V2ViR0xJbnRBcnJheT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRVbmlmb3JtaXYoV2Vi
R0xQcm9ncmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKLXsK
LSAgICBpZiAoIXByb2dyYW0gfHwgcHJvZ3JhbS0+Y29udGV4dCgpICE9IHRoaXMpIHsKLSAgICAg
ICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgQ2xlYW51
cEhlbHBlcih0aGlzLCBmYWxzZSk7CisgICAgLy8gRklYTUU6IG1ha2UgdGhpcyBtb3JlIGVmZmlj
aWVudCB1c2luZyBXZWJHTFVuaWZvcm1Mb2NhdGlvbiBhbmQgY2FjaGluZyB0eXBlcyBpbiBpdAor
ICAgIGludCBhY3RpdmVVbmlmb3JtcyA9IDA7CisgICAgbV9jb250ZXh0LT5nZXRQcm9ncmFtaXYo
cHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0M0Q6OkFDVElWRV9VTklGT1JNUywgJmFjdGl2ZVVuaWZv
cm1zKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGFjdGl2ZVVuaWZvcm1zOyBpKyspIHsKKyAg
ICAgICAgQWN0aXZlSW5mbyBpbmZvOworICAgICAgICBpZiAoIW1fY29udGV4dC0+Z2V0QWN0aXZl
VW5pZm9ybShwcm9ncmFtLCBpLCBpbmZvKSkgeworICAgICAgICAgICAgLy8gRklYTUU6IHJhaXNl
IHNvbWUgR0wgZXJyb3IKKyAgICAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAg
ICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CisgICAgICAgIH0KKyAgICAgICAgLy8gTm93
IG5lZWQgdG8gbG9vayB0aGlzIHVwIGJ5IG5hbWUgYWdhaW4gdG8gZmluZCBpdHMgbG9jYXRpb24K
KyAgICAgICAgbG9uZyBsb2MgPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFt
LCBpbmZvLm5hbWUpOworICAgICAgICBpZiAobG9jID09IGxvY2F0aW9uKSB7CisgICAgICAgICAg
ICAvLyBGb3VuZCBpdC4gVXNlIHRoZSB0eXBlIGluIHRoZSBBY3RpdmVJbmZvIHRvIGRldGVybWlu
ZSB0aGUgcmV0dXJuIHR5cGUuCisgICAgICAgICAgICBHcmFwaGljc0NvbnRleHQzRDo6V2ViR0xF
bnVtVHlwZSBiYXNlVHlwZTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aDsKKyAgICAgICAg
ICAgIHN3aXRjaCAoaW5mby50eXBlKSB7CisgICAgICAgICAgICAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHQzRDo6Qk9PTDoKKyAgICAgICAgICAgICAgICAgICAgYmFzZVR5cGUgPSBHcmFwaGljc0Nv
bnRleHQzRDo6Qk9PTDsKKyAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0gMTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6Qk9PTF9WRUMyOgorICAgICAgICAgICAgICAgICAgICBiYXNlVHlwZSA9IEdyYXBoaWNzQ29u
dGV4dDNEOjpCT09MOworICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSAyOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNE
OjpCT09MX1ZFQzM6CisgICAgICAgICAgICAgICAgICAgIGJhc2VUeXBlID0gR3JhcGhpY3NDb250
ZXh0M0Q6OkJPT0w7CisgICAgICAgICAgICAgICAgICAgIGxlbmd0aCA9IDM7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6
OkJPT0xfVkVDNDoKKyAgICAgICAgICAgICAgICAgICAgYmFzZVR5cGUgPSBHcmFwaGljc0NvbnRl
eHQzRDo6Qk9PTDsKKyAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0gNDsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
SU5UOgorICAgICAgICAgICAgICAgICAgICBiYXNlVHlwZSA9IEdyYXBoaWNzQ29udGV4dDNEOjpJ
TlQ7CisgICAgICAgICAgICAgICAgICAgIGxlbmd0aCA9IDE7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OklOVF9WRUMy
OgorICAgICAgICAgICAgICAgICAgICBiYXNlVHlwZSA9IEdyYXBoaWNzQ29udGV4dDNEOjpJTlQ7
CisgICAgICAgICAgICAgICAgICAgIGxlbmd0aCA9IDI7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OklOVF9WRUMzOgor
ICAgICAgICAgICAgICAgICAgICBiYXNlVHlwZSA9IEdyYXBoaWNzQ29udGV4dDNEOjpJTlQ7Cisg
ICAgICAgICAgICAgICAgICAgIGxlbmd0aCA9IDM7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OklOVF9WRUM0OgorICAg
ICAgICAgICAgICAgICAgICBiYXNlVHlwZSA9IEdyYXBoaWNzQ29udGV4dDNEOjpJTlQ7CisgICAg
ICAgICAgICAgICAgICAgIGxlbmd0aCA9IDQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FUOgorICAgICAgICAg
ICAgICAgICAgICBiYXNlVHlwZSA9IEdyYXBoaWNzQ29udGV4dDNEOjpGTE9BVDsKKyAgICAgICAg
ICAgICAgICAgICAgbGVuZ3RoID0gMTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RkxPQVRfVkVDMjoKKyAgICAgICAg
ICAgICAgICAgICAgYmFzZVR5cGUgPSBHcmFwaGljc0NvbnRleHQzRDo6RkxPQVQ7CisgICAgICAg
ICAgICAgICAgICAgIGxlbmd0aCA9IDI7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FUX1ZFQzM6CisgICAgICAg
ICAgICAgICAgICAgIGJhc2VUeXBlID0gR3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FUOworICAgICAg
ICAgICAgICAgICAgICBsZW5ndGggPSAzOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpGTE9BVF9WRUM0OgorICAgICAg
ICAgICAgICAgICAgICBiYXNlVHlwZSA9IEdyYXBoaWNzQ29udGV4dDNEOjpGTE9BVDsKKyAgICAg
ICAgICAgICAgICAgICAgbGVuZ3RoID0gNDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RkxPQVRfTUFUMjoKKyAgICAg
ICAgICAgICAgICAgICAgYmFzZVR5cGUgPSBHcmFwaGljc0NvbnRleHQzRDo6RkxPQVQ7CisgICAg
ICAgICAgICAgICAgICAgIGxlbmd0aCA9IDQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FUX01BVDM6CisgICAg
ICAgICAgICAgICAgICAgIGJhc2VUeXBlID0gR3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FUOworICAg
ICAgICAgICAgICAgICAgICBsZW5ndGggPSA5OworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpGTE9BVF9NQVQ0OgorICAg
ICAgICAgICAgICAgICAgICBiYXNlVHlwZSA9IEdyYXBoaWNzQ29udGV4dDNEOjpGTE9BVDsKKyAg
ICAgICAgICAgICAgICAgICAgbGVuZ3RoID0gMTY7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIC8vIENhbid0
IGhhbmRsZSB0aGlzIHR5cGUKKyAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IHdoYXQgdG8g
ZG8gYWJvdXQgc2FtcGxlcnM/CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBXZWJHTEdldElu
Zm8oKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN3aXRjaCAoYmFzZVR5cGUpIHsKKyAg
ICAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FUOiB7CisgICAgICAgICAgICAg
ICAgZmxvYXQgdmFsdWVbMTZdID0gezB9OworICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0
VW5pZm9ybWZ2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgaWYg
KGxlbmd0aCA9PSAxKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKHZh
bHVlWzBdKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBXZWJHTEdldEluZm8oV2ViR0xGbG9hdEFycmF5OjpjcmVhdGUodmFsdWUsIGxlbmd0aCkpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6SU5UOiB7
CisgICAgICAgICAgICAgICAgaW50IHZhbHVlWzE2XSA9IHswfTsKKyAgICAgICAgICAgICAgICBt
X2NvbnRleHQtPmdldFVuaWZvcm1pdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgICAg
ICAgICAgICAgIGlmIChsZW5ndGggPT0gMSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFdl
YkdMR2V0SW5mbyhzdGF0aWNfY2FzdDxsb25nPih2YWx1ZVswXSkpOworICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhXZWJHTEludEFy
cmF5OjpjcmVhdGUodmFsdWUsIGxlbmd0aCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Qk9PTDogeworICAgICAgICAgICAgICAgIGludCB2YWx1
ZVsxNl0gPSB7MH07CisgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRVbmlmb3JtaXYocHJv
Z3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKKyAgICAgICAgICAgICAgICBpZiAobGVuZ3RoID09IDEp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oc3RhdGljX2Nhc3Q8Ym9v
bD4odmFsdWVbMF0pKTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgY2hhciBib29sVmFsdWVbMTZdID0gezB9OworICAgICAgICAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgbGVuZ3RoOyBqKyspCisgICAgICAgICAgICAgICAg
ICAgICAgICBib29sVmFsdWVbal0gPSBzdGF0aWNfY2FzdDxib29sPih2YWx1ZVtqXSk7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oV2ViR0xVbnNpZ25lZEJ5dGVBcnJh
eTo6Y3JlYXRlKGJvb2xWYWx1ZSwgbGVuZ3RoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQotICAgIFJlZlB0cjxXZWJH
TEludEFycmF5PiBhcnJheSA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybWl2KHByb2dyYW0sIGxvY2F0
aW9uKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwotICAgIHJldHVybiBh
cnJheTsKKyAgICAvLyBJZiB3ZSBnZXQgaGVyZSwgc29tZXRoaW5nIHdlbnQgd3JvbmcgaW4gb3Vy
IHVuZm9ydHVuYXRlbHkgY29tcGxleCBsb2dpYyBhYm92ZQorICAgIHJldHVybiBXZWJHTEdldElu
Zm8oKTsKIH0KIAogbG9uZyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFVuaWZvcm1Mb2NhdGlv
bihXZWJHTFByb2dyYW0qIHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCkBAIC03OTcsMzIgKzExMzgsNDcgQEAgbG9uZyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmdldFVuaWZvcm1MbwogICAgIHJldHVybiBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihw
cm9ncmFtLCBuYW1lKTsKIH0KIAotZmxvYXQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRWZXJ0
ZXhBdHRyaWJmKHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0g
ICAgZmxvYXQgcmVzdWx0ID0gbV9jb250ZXh0LT5nZXRWZXJ0ZXhBdHRyaWJmKGluZGV4LCBwbmFt
ZSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotCi1QYXNzUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gV2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpnZXRWZXJ0ZXhBdHRyaWJmdih1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25n
IHBuYW1lKQorV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VmVydGV4QXR0
cmliKHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogewotICAgIFJlZlB0cjxXZWJHTEZsb2F0QXJyYXk+IGFycmF5ID0gbV9jb250ZXh0
LT5nZXRWZXJ0ZXhBdHRyaWJmdihpbmRleCwgcG5hbWUpOwotICAgIGNsZWFudXBBZnRlckdyYXBo
aWNzQ2FsbChmYWxzZSk7Ci0gICAgcmV0dXJuIGFycmF5OwotfQotCi1sb25nIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6Z2V0VmVydGV4QXR0cmliaSh1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25l
ZCBsb25nIHBuYW1lKQotewotICAgIGxvbmcgcmVzdWx0ID0gbV9jb250ZXh0LT5nZXRWZXJ0ZXhB
dHRyaWJpKGluZGV4LCBwbmFtZSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNl
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1QYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VmVydGV4QXR0cmliaXYodW5zaWduZWQgbG9uZyBpbmRl
eCwgdW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICBSZWZQdHI8V2ViR0xJbnRBcnJheT4gYXJy
YXkgPSBtX2NvbnRleHQtPmdldFZlcnRleEF0dHJpYml2KGluZGV4LCBwbmFtZSk7Ci0gICAgY2xl
YW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKLSAgICByZXR1cm4gYXJyYXk7CisgICAgQ2xl
YW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CisgICAgc3dpdGNoIChwbmFtZSkgeworICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0M0Q6OlZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkc6IHsK
KyAgICAgICAgaW50IG5hbWUgPSAwOworICAgICAgICBtX2NvbnRleHQtPmdldFZlcnRleEF0dHJp
Yml2KGluZGV4LCBwbmFtZSwgJm5hbWUpOworICAgICAgICBpZiAobmFtZSA9PSAwKQorICAgICAg
ICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOworICAgICAgICBSZWZQdHI8V2ViR0xCdWZmZXI+
IHRtcCA9IFdlYkdMQnVmZmVyOjpjcmVhdGUodGhpcywgbmFtZSk7CisgICAgICAgIGFkZE9iamVj
dCh0bXAuZ2V0KCkpOworICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2Vi
R0xCdWZmZXI+KHRtcCkpOworICAgIH0KKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpWRVJU
RVhfQVRUUklCX0FSUkFZX0VOQUJMRUQ6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VkVS
VEVYX0FUVFJJQl9BUlJBWV9OT1JNQUxJWkVEOiB7CisgICAgICAgIGludCB2YWx1ZSA9IDA7Cisg
ICAgICAgIG1fY29udGV4dC0+Z2V0VmVydGV4QXR0cmliaXYoaW5kZXgsIHBuYW1lLCAmdmFsdWUp
OworICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0PGJvb2w+KHZhbHVlKSk7
CisgICAgfQorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlZFUlRFWF9BVFRSSUJfQVJSQVlf
U0laRToKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpWRVJURVhfQVRUUklCX0FSUkFZX1NU
UklERTogeworICAgICAgICBpbnQgdmFsdWUgPSAwOworICAgICAgICBtX2NvbnRleHQtPmdldFZl
cnRleEF0dHJpYml2KGluZGV4LCBwbmFtZSwgJnZhbHVlKTsKKyAgICAgICAgcmV0dXJuIFdlYkdM
R2V0SW5mbyhzdGF0aWNfY2FzdDxsb25nPih2YWx1ZSkpOworICAgIH0KKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpWRVJURVhfQVRUUklCX0FSUkFZX1RZUEU6IHsKKyAgICAgICAgaW50IHZh
bHVlID0gMDsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRWZXJ0ZXhBdHRyaWJpdihpbmRleCwgcG5h
bWUsICZ2YWx1ZSk7CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oc3RhdGljX2Nhc3Q8dW5z
aWduZWQgbG9uZz4odmFsdWUpKTsKKyAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
Q1VSUkVOVF9WRVJURVhfQVRUUklCOiB7CisgICAgICAgIGZsb2F0IHZhbHVlWzRdID0gezB9Owor
ICAgICAgICBtX2NvbnRleHQtPmdldFZlcnRleEF0dHJpYmZ2KGluZGV4LCBwbmFtZSwgdmFsdWUp
OworICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKFdlYkdMRmxvYXRBcnJheTo6Y3JlYXRlKHZh
bHVlLCA0KSk7CisgICAgfQorICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgLy8gRklYTUU6IHJhaXNl
IEdMX0lOVkFMSURfRU5VTSBlcnJvcgorICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAg
IHJldHVybiBXZWJHTEdldEluZm8oKTsKKyAgICB9CisgICAgfQogfQogCiBsb25nIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0KHVuc2lnbmVkIGxvbmcgaW5kZXgs
IHVuc2lnbmVkIGxvbmcgcG5hbWUpCkBAIC04MzQsOCArMTE5MCw4IEBAIGxvbmcgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpnZXRWZXJ0ZXhBdHQKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmhpbnQodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgbW9kZSkKIHsKKyAgICBD
bGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKICAgICBtX2NvbnRleHQtPmhpbnQodGFyZ2V0LCBt
b2RlKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiBib29sIFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6aXNCdWZmZXIoV2ViR0xCdWZmZXIqIGJ1ZmZlcikKQEAgLTg3
OCw4ICsxMjM0LDggQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmlzVGV4dHVyZShXZQog
CiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6bGluZVdpZHRoKGRvdWJsZSB3aWR0aCkKIHsK
KyAgICBDbGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKICAgICBtX2NvbnRleHQtPmxpbmVXaWR0
aCgoZmxvYXQpIHdpZHRoKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwog
fQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6bGlua1Byb2dyYW0oV2ViR0xQcm9ncmFt
KiBwcm9ncmFtLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTg4OSw1MSArMTI0NSw1MCBAQCB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6bGlua1Byb2dyYW0oCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgICAgIAorICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwogICAgIG1fY29u
dGV4dC0+bGlua1Byb2dyYW0ocHJvZ3JhbSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxs
KGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnBpeGVsU3RvcmVpKHVu
c2lnbmVkIGxvbmcgcG5hbWUsIGxvbmcgcGFyYW0pCiB7CisgICAgQ2xlYW51cEhlbHBlcih0aGlz
LCBmYWxzZSk7CiAgICAgbV9jb250ZXh0LT5waXhlbFN0b3JlaShwbmFtZSwgcGFyYW0pOwotICAg
IGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0Ojpwb2x5Z29uT2Zmc2V0KGRvdWJsZSBmYWN0b3IsIGRvdWJsZSB1bml0cykKIHsK
KyAgICBDbGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKICAgICBtX2NvbnRleHQtPnBvbHlnb25P
ZmZzZXQoKGZsb2F0KSBmYWN0b3IsIChmbG9hdCkgdW5pdHMpOwotICAgIGNsZWFudXBBZnRlckdy
YXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIFBhc3NSZWZQdHI8V2ViR0xBcnJheT4gV2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpyZWFkUGl4ZWxzKGxvbmcgeCwgbG9uZyB5LCB1bnNpZ25lZCBsb25nIHdp
ZHRoLCB1bnNpZ25lZCBsb25nIGhlaWdodCwgdW5zaWduZWQgbG9uZyBmb3JtYXQsIHVuc2lnbmVk
IGxvbmcgdHlwZSkKIHsKLSAgICBSZWZQdHI8V2ViR0xBcnJheT4gYXJyYXkgPSBtX2NvbnRleHQt
PnJlYWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlKTsKLSAgICBjbGVh
bnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwotICAgIHJldHVybiBhcnJheTsKKyAgICBDbGVh
bnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKKyAgICByZXR1cm4gbV9jb250ZXh0LT5yZWFkUGl4ZWxz
KHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpyZWxlYXNlU2hhZGVyQ29tcGlsZXIoKQogeworICAgIENsZWFudXBIZWxw
ZXIodGhpcywgZmFsc2UpOwogICAgIG1fY29udGV4dC0+cmVsZWFzZVNoYWRlckNvbXBpbGVyKCk7
Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OnJlbmRlcmJ1ZmZlclN0b3JhZ2UodW5zaWduZWQgbG9uZyB0YXJnZXQs
IHVuc2lnbmVkIGxvbmcgaW50ZXJuYWxmb3JtYXQsIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2ln
bmVkIGxvbmcgaGVpZ2h0KQogeworICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwogICAg
IG1fY29udGV4dC0+cmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3
aWR0aCwgaGVpZ2h0KTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQog
CiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6c2FtcGxlQ292ZXJhZ2UoZG91YmxlIHZhbHVl
LCBib29sIGludmVydCkKIHsKKyAgICBDbGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKICAgICBt
X2NvbnRleHQtPnNhbXBsZUNvdmVyYWdlKChmbG9hdCkgdmFsdWUsIGludmVydCk7Ci0gICAgY2xl
YW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnNjaXNzb3IobG9uZyB4LCBsb25nIHksIHVuc2lnbmVkIGxvbmcgd2lkdGgsIHVuc2ln
bmVkIGxvbmcgaGVpZ2h0KQogeworICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwogICAg
IG1fY29udGV4dC0+c2Npc3Nvcih4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKLSAgICBjbGVhbnVwQWZ0
ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
c2hhZGVyU291cmNlKFdlYkdMU2hhZGVyKiBzaGFkZXIsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBF
eGNlcHRpb25Db2RlJiBlYykKQEAgLTk0Miw2NiArMTI5Nyw2NiBAQCB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6c2hhZGVyU291cmNlCiAgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7
CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7
CiAgICAgbV9jb250ZXh0LT5zaGFkZXJTb3VyY2Uoc2hhZGVyLCBzdHJpbmcpOwotICAgIGNsZWFu
dXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpzdGVuY2lsRnVuYyh1bnNpZ25lZCBsb25nIGZ1bmMsIGxvbmcgcmVmLCB1bnNpZ25lZCBs
b25nIG1hc2spCiB7CisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CiAgICAgbV9jb250
ZXh0LT5zdGVuY2lsRnVuYyhmdW5jLCByZWYsIG1hc2spOwotICAgIGNsZWFudXBBZnRlckdyYXBo
aWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpzdGVuY2ls
RnVuY1NlcGFyYXRlKHVuc2lnbmVkIGxvbmcgZmFjZSwgdW5zaWduZWQgbG9uZyBmdW5jLCBsb25n
IHJlZiwgdW5zaWduZWQgbG9uZyBtYXNrKQogeworICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFs
c2UpOwogICAgIG1fY29udGV4dC0+c3RlbmNpbEZ1bmNTZXBhcmF0ZShmYWNlLCBmdW5jLCByZWYs
IG1hc2spOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpzdGVuY2lsTWFzayh1bnNpZ25lZCBsb25nIG1hc2spCiB7
CisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CiAgICAgbV9jb250ZXh0LT5zdGVuY2ls
TWFzayhtYXNrKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6c3RlbmNpbE1hc2tTZXBhcmF0ZSh1bnNpZ25lZCBs
b25nIGZhY2UsIHVuc2lnbmVkIGxvbmcgbWFzaykKIHsKKyAgICBDbGVhbnVwSGVscGVyKHRoaXMs
IGZhbHNlKTsKICAgICBtX2NvbnRleHQtPnN0ZW5jaWxNYXNrU2VwYXJhdGUoZmFjZSwgbWFzayk7
Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OnN0ZW5jaWxPcCh1bnNpZ25lZCBsb25nIGZhaWwsIHVuc2lnbmVkIGxv
bmcgemZhaWwsIHVuc2lnbmVkIGxvbmcgenBhc3MpCiB7CisgICAgQ2xlYW51cEhlbHBlcih0aGlz
LCBmYWxzZSk7CiAgICAgbV9jb250ZXh0LT5zdGVuY2lsT3AoZmFpbCwgemZhaWwsIHpwYXNzKTsK
LSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6c3RlbmNpbE9wU2VwYXJhdGUodW5zaWduZWQgbG9uZyBmYWNlLCB1bnNp
Z25lZCBsb25nIGZhaWwsIHVuc2lnbmVkIGxvbmcgemZhaWwsIHVuc2lnbmVkIGxvbmcgenBhc3Mp
CiB7CisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CiAgICAgbV9jb250ZXh0LT5zdGVu
Y2lsT3BTZXBhcmF0ZShmYWNlLCBmYWlsLCB6ZmFpbCwgenBhc3MpOwotICAgIGNsZWFudXBBZnRl
ckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0
ZXhJbWFnZTJEKHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIHVuc2lnbmVkIGludGVy
bmFsZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCwgdW5zaWduZWQgYm9yZGVyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgZm9ybWF0LCB1bnNpZ25l
ZCB0eXBlLCBXZWJHTEFycmF5KiBwaXhlbHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIENs
ZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwogICAgIC8vIEZJWE1FOiBGb3Igbm93IHdlIGlnbm9y
ZSBhbnkgZXJyb3JzIHJldHVybmVkCiAgICAgZWMgPSAwOwogICAgIG1fY29udGV4dC0+dGV4SW1h
Z2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICBib3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKLSAgICBj
bGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6dGV4SW1hZ2UyRCh1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIGxldmVsLCB1bnNp
Z25lZCBpbnRlcm5hbGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsIHVuc2lnbmVkIGJvcmRlciwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZvcm1h
dCwgdW5zaWduZWQgdHlwZSwgSW1hZ2VEYXRhKiBwaXhlbHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
eworICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwogICAgIC8vIEZJWE1FOiBGb3Igbm93
IHdlIGlnbm9yZSBhbnkgZXJyb3JzIHJldHVybmVkCiAgICAgZWMgPSAwOwogICAgIG1fY29udGV4
dC0+dGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdo
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxz
KTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6dGV4SW1hZ2UyRCh1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIGxl
dmVsLCBIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZSwKQEAgLTEwMTcsOSArMTM3Miw5IEBAIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhJbWFnZTJEKHUKICAgICBpZiAoIWNhY2hlZEltYWdl
KQogICAgICAgICByZXR1cm47CiAKKyAgICBDbGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKICAg
ICAvLyBGSVhNRTogRm9yIG5vdyB3ZSBpZ25vcmUgYW55IGVycm9ycyByZXR1cm5lZAogICAgIG1f
Y29udGV4dC0+dGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBjYWNoZWRJbWFnZS0+aW1hZ2UoKSwg
ZmxpcFksIHByZW11bHRpcGx5QWxwaGEpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChm
YWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhJbWFnZTJEKHVuc2ln
bmVkIHRhcmdldCwgdW5zaWduZWQgbGV2ZWwsIEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMsCkBA
IC0xMDM1LDUwICsxMzkwLDUwIEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhJbWFn
ZTJEKHUKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCisgICAgQ2xlYW51cEhl
bHBlcih0aGlzLCBmYWxzZSk7CiAgICAgLy8gRklYTUU6IEZvciBub3cgd2UgaWdub3JlIGFueSBl
cnJvcnMgcmV0dXJuZWQKICAgICBtX2NvbnRleHQtPnRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwg
YnVmZmVyLT5pbWFnZSgpLCBmbGlwWSwgcHJlbXVsdGlwbHlBbHBoYSk7Ci0gICAgY2xlYW51cEFm
dGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OnRleEltYWdlMkQodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZlbCwgSFRNTFZpZGVvRWxl
bWVudCogdmlkZW8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIGZsaXBZLCBib29sIHByZW11bHRpcGx5QWxwaGEsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewor
ICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwogICAgIC8vIEZJWE1FOiBGb3Igbm93IHdl
IGlnbm9yZSBhbnkgZXJyb3JzIHJldHVybmVkCiAgICAgZWMgPSAwOwogICAgIG1fY29udGV4dC0+
dGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB2aWRlbywgZmxpcFksIHByZW11bHRpcGx5QWxwaGEp
OwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Ojp0ZXhQYXJhbWV0ZXJmKHVuc2lnbmVkIHRhcmdldCwgdW5zaWduZWQg
cG5hbWUsIGZsb2F0IHBhcmFtKQogeworICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwog
ICAgIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lLCBwYXJhbSk7Ci0gICAg
Y2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OnRleFBhcmFtZXRlcmkodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBwbmFtZSwg
aW50IHBhcmFtKQogeworICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwogICAgIG1fY29u
dGV4dC0+dGV4UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lLCBwYXJhbSk7Ci0gICAgY2xlYW51cEFm
dGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OnRleFN1YkltYWdlMkQodW5zaWduZWQgdGFyZ2V0LCB1bnNpZ25lZCBsZXZlbCwgdW5zaWduZWQg
eG9mZnNldCwgdW5zaWduZWQgeW9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBmb3JtYXQsIHVu
c2lnbmVkIHR5cGUsIFdlYkdMQXJyYXkqIHBpeGVscywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Cisg
ICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CiAgICAgLy8gRklYTUU6IEZvciBub3cgd2Ug
aWdub3JlIGFueSBlcnJvcnMgcmV0dXJuZWQKICAgICBlYyA9IDA7CiAgICAgbV9jb250ZXh0LT50
ZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWln
aHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwo
ZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2UyRCh1
bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIGxldmVsLCB1bnNpZ25lZCB4b2Zmc2V0LCB1bnNpZ25l
ZCB5b2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGZvcm1hdCwgdW5zaWduZWQgdHlwZSwgSW1h
Z2VEYXRhKiBwaXhlbHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIENsZWFudXBIZWxwZXIo
dGhpcywgZmFsc2UpOwogICAgIC8vIEZJWE1FOiBGb3Igbm93IHdlIGlnbm9yZSBhbnkgZXJyb3Jz
IHJldHVybmVkCiAgICAgZWMgPSAwOwogICAgIG1fY29udGV4dC0+dGV4U3ViSW1hZ2UyRCh0YXJn
ZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUs
IHBpeGVscyk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnRleFN1YkltYWdlMkQodW5zaWduZWQgdGFyZ2V0LCB1
bnNpZ25lZCBsZXZlbCwgdW5zaWduZWQgeG9mZnNldCwgdW5zaWduZWQgeW9mZnNldCwKQEAgLTEw
OTYsOCArMTQ1MSw4IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0ZXhTdWJJbWFnZTIK
ICAgICBpZiAoIWNhY2hlZEltYWdlKQogICAgICAgICByZXR1cm47CiAKKyAgICBDbGVhbnVwSGVs
cGVyKHRoaXMsIGZhbHNlKTsKICAgICBtX2NvbnRleHQtPnRleFN1YkltYWdlMkQodGFyZ2V0LCBs
ZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgY2FjaGVkSW1hZ2UtPmltYWdl
KCksIGZsaXBZLCBwcmVtdWx0aXBseUFscGhhKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0Nh
bGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4U3ViSW1hZ2Uy
RCh1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIGxldmVsLCB1bnNpZ25lZCB4b2Zmc2V0LCB1bnNp
Z25lZCB5b2Zmc2V0LApAQCAtMTExNCwyNSArMTQ2OSwyNSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6dGV4U3ViSW1hZ2UyCiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybjsK
ICAgICAKKyAgICBDbGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKICAgICAvLyBGSVhNRTogRm9y
IG5vdyB3ZSBpZ25vcmUgYW55IGVycm9ycyByZXR1cm5lZAogICAgIG1fY29udGV4dC0+dGV4U3Vi
SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBi
dWZmZXItPmltYWdlKCksIGZsaXBZLCBwcmVtdWx0aXBseUFscGhhKTsKLSAgICBjbGVhbnVwQWZ0
ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
dGV4U3ViSW1hZ2UyRCh1bnNpZ25lZCB0YXJnZXQsIHVuc2lnbmVkIGxldmVsLCB1bnNpZ25lZCB4
b2Zmc2V0LCB1bnNpZ25lZCB5b2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCwgSFRNTFZpZGVv
RWxlbWVudCogdmlkZW8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIGZsaXBZLCBib29sIHByZW11bHRpcGx5QWxwaGEsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogeworICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwogICAgIC8vIEZJWE1FOiBGb3Ig
bm93IHdlIGlnbm9yZSBhbnkgZXJyb3JzIHJldHVybmVkCiAgICAgZWMgPSAwOwogICAgIG1fY29u
dGV4dC0+dGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0
aCwgaGVpZ2h0LCB2aWRlbywgZmxpcFksIHByZW11bHRpcGx5QWxwaGEpOwotICAgIGNsZWFudXBB
ZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
Ojp1bmlmb3JtMWYobG9uZyBsb2NhdGlvbiwgZmxvYXQgeCkKIHsKKyAgICBDbGVhbnVwSGVscGVy
KHRoaXMsIGZhbHNlKTsKICAgICBtX2NvbnRleHQtPnVuaWZvcm0xZihsb2NhdGlvbiwgeCk7Ci0g
ICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OnVuaWZvcm0xZnYobG9uZyBsb2NhdGlvbiwgV2ViR0xGbG9hdEFycmF5KiB2
KQpAQCAtMTE0MCw5ICsxNDk1LDggQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZv
cm0xZnYobAogICAgIC8vIEZJWE1FOiB3ZSBuZWVkIHRvIHRocm93IGlmIG5vIGFycmF5IHBhc3Nl
ZCBpbgogICAgIGlmICghdikKICAgICAgICAgcmV0dXJuOwotICAgICAgICAKKyAgICBDbGVhbnVw
SGVscGVyKHRoaXMsIGZhbHNlKTsKICAgICBtX2NvbnRleHQtPnVuaWZvcm0xZnYobG9jYXRpb24s
IHYtPmRhdGEoKSwgdi0+bGVuZ3RoKCkpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChm
YWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMWZ2KGxvbmcg
bG9jYXRpb24sIGZsb2F0KiB2LCBpbnQgc2l6ZSkKQEAgLTExNTAsMTUgKzE1MDQsMTQgQEAgdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0xZnYobAogICAgIC8vIEZJWE1FOiB3ZSBu
ZWVkIHRvIHRocm93IGlmIG5vIGFycmF5IHBhc3NlZCBpbgogICAgIGlmICghdikKICAgICAgICAg
cmV0dXJuOwotICAgICAgICAKKyAgICBDbGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKICAgICBt
X2NvbnRleHQtPnVuaWZvcm0xZnYobG9jYXRpb24sIHYsIHNpemUpOwotICAgIGNsZWFudXBBZnRl
ckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1
bmlmb3JtMWkobG9uZyBsb2NhdGlvbiwgaW50IHgpCiB7CisgICAgQ2xlYW51cEhlbHBlcih0aGlz
LCBmYWxzZSk7CiAgICAgbV9jb250ZXh0LT51bmlmb3JtMWkobG9jYXRpb24sIHgpOwotICAgIGNs
ZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp1bmlmb3JtMWl2KGxvbmcgbG9jYXRpb24sIFdlYkdMSW50QXJyYXkqIHYpCkBAIC0x
MTY2LDkgKzE1MTksOCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTFpdihs
CiAgICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gdGhyb3cgaWYgbm8gYXJyYXkgcGFzc2VkIGluCiAg
ICAgaWYgKCF2KQogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorICAgIENsZWFudXBIZWxwZXIo
dGhpcywgZmFsc2UpOwogICAgIG1fY29udGV4dC0+dW5pZm9ybTFpdihsb2NhdGlvbiwgdi0+ZGF0
YSgpLCB2LT5sZW5ndGgoKSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsK
IH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0xaXYobG9uZyBsb2NhdGlv
biwgaW50KiB2LCBpbnQgc2l6ZSkKQEAgLTExNzYsMTUgKzE1MjgsMTQgQEAgdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0xaXYobAogICAgIC8vIEZJWE1FOiB3ZSBuZWVkIHRvIHRo
cm93IGlmIG5vIGFycmF5IHBhc3NlZCBpbgogICAgIGlmICghdikKICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAKKyAgICBDbGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKICAgICBtX2NvbnRleHQt
PnVuaWZvcm0xaXYobG9jYXRpb24sIHYsIHNpemUpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNz
Q2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMmYo
bG9uZyBsb2NhdGlvbiwgZmxvYXQgeCwgZmxvYXQgeSkKIHsKKyAgICBDbGVhbnVwSGVscGVyKHRo
aXMsIGZhbHNlKTsKICAgICBtX2NvbnRleHQtPnVuaWZvcm0yZihsb2NhdGlvbiwgeCwgeSk7Ci0g
ICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OnVuaWZvcm0yZnYobG9uZyBsb2NhdGlvbiwgV2ViR0xGbG9hdEFycmF5KiB2
KQpAQCAtMTE5MiwxMCArMTU0Myw5IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlm
b3JtMmZ2KGwKICAgICAvLyBGSVhNRTogd2UgbmVlZCB0byB0aHJvdyBpZiBubyBhcnJheSBwYXNz
ZWQgaW4KICAgICBpZiAoIXYpCiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisgICAgQ2xlYW51
cEhlbHBlcih0aGlzLCBmYWxzZSk7CiAgICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBh
IG11bHRpcGxlIG9mIDIKICAgICBtX2NvbnRleHQtPnVuaWZvcm0yZnYobG9jYXRpb24sIHYtPmRh
dGEoKSwgdi0+bGVuZ3RoKCkgLyAyKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFs
c2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJmdihsb25nIGxv
Y2F0aW9uLCBmbG9hdCogdiwgaW50IHNpemUpCkBAIC0xMjAzLDE2ICsxNTUzLDE1IEBAIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtMmZ2KGwKICAgICAvLyBGSVhNRTogd2UgbmVl
ZCB0byB0aHJvdyBpZiBubyBhcnJheSBwYXNzZWQgaW4KICAgICBpZiAoIXYpCiAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgCisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CiAgICAgLy8g
RklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDIKICAgICBtX2NvbnRleHQt
PnVuaWZvcm0yZnYobG9jYXRpb24sIHYsIHNpemUgLyAyKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFw
aGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9y
bTJpKGxvbmcgbG9jYXRpb24sIGludCB4LCBpbnQgeSkKIHsKKyAgICBDbGVhbnVwSGVscGVyKHRo
aXMsIGZhbHNlKTsKICAgICBtX2NvbnRleHQtPnVuaWZvcm0yaShsb2NhdGlvbiwgeCwgeSk7Ci0g
ICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OnVuaWZvcm0yaXYobG9uZyBsb2NhdGlvbiwgV2ViR0xJbnRBcnJheSogdikK
QEAgLTEyMjAsMTAgKzE1NjksOSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9y
bTJpdihsCiAgICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gdGhyb3cgaWYgbm8gYXJyYXkgcGFzc2Vk
IGluCiAgICAgaWYgKCF2KQogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorICAgIENsZWFudXBI
ZWxwZXIodGhpcywgZmFsc2UpOwogICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBt
dWx0aXBsZSBvZiAyCiAgICAgbV9jb250ZXh0LT51bmlmb3JtMml2KGxvY2F0aW9uLCB2LT5kYXRh
KCksIHYtPmxlbmd0aCgpIC8gMik7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNl
KTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0yaXYobG9uZyBsb2Nh
dGlvbiwgaW50KiB2LCBpbnQgc2l6ZSkKQEAgLTEyMzEsMTYgKzE1NzksMTUgQEAgdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0yaXYobAogICAgIC8vIEZJWE1FOiB3ZSBuZWVkIHRv
IHRocm93IGlmIG5vIGFycmF5IHBhc3NlZCBpbgogICAgIGlmICghdikKICAgICAgICAgcmV0dXJu
OwotICAgICAgICAKKyAgICBDbGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKICAgICAvLyBGSVhN
RTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgMgogICAgIG1fY29udGV4dC0+dW5p
Zm9ybTJpdihsb2NhdGlvbiwgdiwgc2l6ZSAvIDIpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNz
Q2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2Yo
bG9uZyBsb2NhdGlvbiwgZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikKIHsKKyAgICBDbGVhbnVw
SGVscGVyKHRoaXMsIGZhbHNlKTsKICAgICBtX2NvbnRleHQtPnVuaWZvcm0zZihsb2NhdGlvbiwg
eCwgeSwgeik7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0zZnYobG9uZyBsb2NhdGlvbiwgV2ViR0xG
bG9hdEFycmF5KiB2KQpAQCAtMTI0OCwxMCArMTU5NSw5IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp1bmlmb3JtM2Z2KGwKICAgICAvLyBGSVhNRTogd2UgbmVlZCB0byB0aHJvdyBpZiBu
byBhcnJheSBwYXNzZWQgaW4KICAgICBpZiAoIXYpCiAgICAgICAgIHJldHVybjsKLSAgICAgICAg
CisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CiAgICAgLy8gRklYTUU6IGxlbmd0aCBu
ZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDMKICAgICBtX2NvbnRleHQtPnVuaWZvcm0zZnYobG9j
YXRpb24sIHYtPmRhdGEoKSwgdi0+bGVuZ3RoKCkgLyAzKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFw
aGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9y
bTNmdihsb25nIGxvY2F0aW9uLCBmbG9hdCogdiwgaW50IHNpemUpCkBAIC0xMjU5LDE2ICsxNjA1
LDE1IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2Z2KGwKICAgICAvLyBG
SVhNRTogd2UgbmVlZCB0byB0aHJvdyBpZiBubyBhcnJheSBwYXNzZWQgaW4KICAgICBpZiAoIXYp
CiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxz
ZSk7CiAgICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDMKICAg
ICBtX2NvbnRleHQtPnVuaWZvcm0zZnYobG9jYXRpb24sIHYsIHNpemUgLyAzKTsKLSAgICBjbGVh
bnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6dW5pZm9ybTNpKGxvbmcgbG9jYXRpb24sIGludCB4LCBpbnQgeSwgaW50IHopCiB7Cisg
ICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CiAgICAgbV9jb250ZXh0LT51bmlmb3JtM2ko
bG9jYXRpb24sIHgsIHksIHopOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7
CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2l2KGxvbmcgbG9jYXRp
b24sIFdlYkdMSW50QXJyYXkqIHYpCkBAIC0xMjc2LDEwICsxNjIxLDkgQEAgdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0zaXYobAogICAgIC8vIEZJWE1FOiB3ZSBuZWVkIHRvIHRo
cm93IGlmIG5vIGFycmF5IHBhc3NlZCBpbgogICAgIGlmICghdikKICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAKKyAgICBDbGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKICAgICAvLyBGSVhNRTog
bGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgMwogICAgIG1fY29udGV4dC0+dW5pZm9y
bTNpdihsb2NhdGlvbiwgdi0+ZGF0YSgpLCB2LT5sZW5ndGgoKSAvIDMpOwotICAgIGNsZWFudXBB
ZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
Ojp1bmlmb3JtM2l2KGxvbmcgbG9jYXRpb24sIGludCogdiwgaW50IHNpemUpCkBAIC0xMjg3LDE2
ICsxNjMxLDE1IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtM2l2KGwKICAg
ICAvLyBGSVhNRTogd2UgbmVlZCB0byB0aHJvdyBpZiBubyBhcnJheSBwYXNzZWQgaW4KICAgICBp
ZiAoIXYpCiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisgICAgQ2xlYW51cEhlbHBlcih0aGlz
LCBmYWxzZSk7CiAgICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9m
IDMKICAgICBtX2NvbnRleHQtPnVuaWZvcm0zaXYobG9jYXRpb24sIHYsIHNpemUgLyAzKTsKLSAg
ICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6dW5pZm9ybTRmKGxvbmcgbG9jYXRpb24sIGZsb2F0IHgsIGZsb2F0IHksIGZs
b2F0IHosIGZsb2F0IHcpCiB7CisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CiAgICAg
bV9jb250ZXh0LT51bmlmb3JtNGYobG9jYXRpb24sIHgsIHksIHosIHcpOwotICAgIGNsZWFudXBB
ZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
Ojp1bmlmb3JtNGZ2KGxvbmcgbG9jYXRpb24sIFdlYkdMRmxvYXRBcnJheSogdikKQEAgLTEzMDQs
MTAgKzE2NDcsOSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTRmdihsCiAg
ICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gdGhyb3cgaWYgbm8gYXJyYXkgcGFzc2VkIGluCiAgICAg
aWYgKCF2KQogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorICAgIENsZWFudXBIZWxwZXIodGhp
cywgZmFsc2UpOwogICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBv
ZiA0CiAgICAgbV9jb250ZXh0LT51bmlmb3JtNGZ2KGxvY2F0aW9uLCB2LT5kYXRhKCksIHYtPmxl
bmd0aCgpIC8gNCk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAog
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00ZnYobG9uZyBsb2NhdGlvbiwgZmxv
YXQqIHYsIGludCBzaXplKQpAQCAtMTMxNSwxNiArMTY1NywxNSBAQCB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6dW5pZm9ybTRmdihsCiAgICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gdGhyb3cg
aWYgbm8gYXJyYXkgcGFzc2VkIGluCiAgICAgaWYgKCF2KQogICAgICAgICByZXR1cm47Ci0gICAg
ICAgIAorICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwogICAgIC8vIEZJWE1FOiBsZW5n
dGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA0CiAgICAgbV9jb250ZXh0LT51bmlmb3JtNGZ2
KGxvY2F0aW9uLCB2LCBzaXplIC8gNCk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZh
bHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00aShsb25nIGxv
Y2F0aW9uLCBpbnQgeCwgaW50IHksIGludCB6LCBpbnQgdykKIHsKKyAgICBDbGVhbnVwSGVscGVy
KHRoaXMsIGZhbHNlKTsKICAgICBtX2NvbnRleHQtPnVuaWZvcm00aShsb2NhdGlvbiwgeCwgeSwg
eiwgdyk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00aXYobG9uZyBsb2NhdGlvbiwgV2ViR0xJbnRB
cnJheSogdikKQEAgLTEzMzIsMTAgKzE2NzMsOSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6dW5pZm9ybTRpdihsCiAgICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gdGhyb3cgaWYgbm8gYXJy
YXkgcGFzc2VkIGluCiAgICAgaWYgKCF2KQogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorICAg
IENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwogICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMg
dG8gYmUgYSBtdWx0aXBsZSBvZiA0CiAgICAgbV9jb250ZXh0LT51bmlmb3JtNGl2KGxvY2F0aW9u
LCB2LT5kYXRhKCksIHYtPmxlbmd0aCgpIC8gNCk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3ND
YWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00aXYo
bG9uZyBsb2NhdGlvbiwgaW50KiB2LCBpbnQgc2l6ZSkKQEAgLTEzNDMsMTAgKzE2ODMsOSBAQCB2
b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTRpdihsCiAgICAgLy8gRklYTUU6IHdl
IG5lZWQgdG8gdGhyb3cgaWYgbm8gYXJyYXkgcGFzc2VkIGluCiAgICAgaWYgKCF2KQogICAgICAg
ICByZXR1cm47Ci0gICAgICAgIAorICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwogICAg
IC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA0CiAgICAgbV9jb250
ZXh0LT51bmlmb3JtNGl2KGxvY2F0aW9uLCB2LCBzaXplIC8gNCk7Ci0gICAgY2xlYW51cEFmdGVy
R3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVu
aWZvcm1NYXRyaXgyZnYobG9uZyBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIFdlYkdMRmxvYXRB
cnJheSogdikKQEAgLTEzNTQsMTAgKzE2OTMsOSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6dW5pZm9ybU1hdHJpCiAgICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gdGhyb3cgaWYgbm8gYXJy
YXkgcGFzc2VkIGluCiAgICAgaWYgKCF2KQogICAgICAgICByZXR1cm47Ci0gICAgICAgIAorICAg
IENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwogICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMg
dG8gYmUgYSBtdWx0aXBsZSBvZiA0CiAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4MmZ2KGxv
Y2F0aW9uLCB0cmFuc3Bvc2UsIHYtPmRhdGEoKSwgdi0+bGVuZ3RoKCkgLyA0KTsKLSAgICBjbGVh
bnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6dW5pZm9ybU1hdHJpeDJmdihsb25nIGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgZmxv
YXQqIHYsIGludCBzaXplKQpAQCAtMTM2NSwxMCArMTcwMyw5IEBAIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0Ojp1bmlmb3JtTWF0cmkKICAgICAvLyBGSVhNRTogd2UgbmVlZCB0byB0aHJvdyBp
ZiBubyBhcnJheSBwYXNzZWQgaW4KICAgICBpZiAoIXYpCiAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgCisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CiAgICAgLy8gRklYTUU6IGxlbmd0
aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDQKICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRy
aXgyZnYobG9jYXRpb24sIHRyYW5zcG9zZSwgdiwgc2l6ZSAvIDQpOwotICAgIGNsZWFudXBBZnRl
ckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1
bmlmb3JtTWF0cml4M2Z2KGxvbmcgbG9jYXRpb24sIGJvb2wgdHJhbnNwb3NlLCBXZWJHTEZsb2F0
QXJyYXkqIHYpCkBAIC0xMzc2LDEwICsxNzEzLDkgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OnVuaWZvcm1NYXRyaQogICAgIC8vIEZJWE1FOiB3ZSBuZWVkIHRvIHRocm93IGlmIG5vIGFy
cmF5IHBhc3NlZCBpbgogICAgIGlmICghdikKICAgICAgICAgcmV0dXJuOwotICAgICAgICAKKyAg
ICBDbGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKICAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRz
IHRvIGJlIGEgbXVsdGlwbGUgb2YgOQogICAgIG1fY29udGV4dC0+dW5pZm9ybU1hdHJpeDNmdihs
b2NhdGlvbiwgdHJhbnNwb3NlLCB2LT5kYXRhKCksIHYtPmxlbmd0aCgpIC8gOSk7Ci0gICAgY2xl
YW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnVuaWZvcm1NYXRyaXgzZnYobG9uZyBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2UsIGZs
b2F0KiB2LCBpbnQgc2l6ZSkKQEAgLTEzODcsMTAgKzE3MjMsOSBAQCB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpCiAgICAgLy8gRklYTUU6IHdlIG5lZWQgdG8gdGhyb3cg
aWYgbm8gYXJyYXkgcGFzc2VkIGluCiAgICAgaWYgKCF2KQogICAgICAgICByZXR1cm47Ci0gICAg
ICAgIAorICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwogICAgIC8vIEZJWE1FOiBsZW5n
dGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA5CiAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0
cml4M2Z2KGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYsIHNpemUgLyA5KTsKLSAgICBjbGVhbnVwQWZ0
ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
dW5pZm9ybU1hdHJpeDRmdihsb25nIGxvY2F0aW9uLCBib29sIHRyYW5zcG9zZSwgV2ViR0xGbG9h
dEFycmF5KiB2KQpAQCAtMTM5OCwxMCArMTczMyw5IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0Ojp1bmlmb3JtTWF0cmkKICAgICAvLyBGSVhNRTogd2UgbmVlZCB0byB0aHJvdyBpZiBubyBh
cnJheSBwYXNzZWQgaW4KICAgICBpZiAoIXYpCiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisg
ICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CiAgICAgLy8gRklYTUU6IGxlbmd0aCBuZWVk
cyB0byBiZSBhIG11bHRpcGxlIG9mIDE2CiAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4NGZ2
KGxvY2F0aW9uLCB0cmFuc3Bvc2UsIHYtPmRhdGEoKSwgdi0+bGVuZ3RoKCkgLyAxNik7Ci0gICAg
Y2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OnVuaWZvcm1NYXRyaXg0ZnYobG9uZyBsb2NhdGlvbiwgYm9vbCB0cmFuc3Bvc2Us
IGZsb2F0KiB2LCBpbnQgc2l6ZSkKQEAgLTE0MDksMTIwICsxNzQzLDEyMSBAQCB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpCiAgICAgLy8gRklYTUU6IHdlIG5lZWQgdG8g
dGhyb3cgaWYgbm8gYXJyYXkgcGFzc2VkIGluCiAgICAgaWYgKCF2KQogICAgICAgICByZXR1cm47
Ci0gICAgICAgIAorICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOwogICAgIC8vIEZJWE1F
OiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAxNgogICAgIG1fY29udGV4dC0+dW5p
Zm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgdHJhbnNwb3NlLCB2LCBzaXplIC8gMTYpOwotICAgIGNs
ZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp1c2VQcm9ncmFtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSkKIHsKKyAgICBDbGVhbnVw
SGVscGVyKHRoaXMsIGZhbHNlKTsKKyAgICBtX2N1cnJlbnRQcm9ncmFtID0gcHJvZ3JhbTsKICAg
ICBtX2NvbnRleHQtPnVzZVByb2dyYW0ocHJvZ3JhbSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhp
Y3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRl
UHJvZ3JhbShXZWJHTFByb2dyYW0qIHByb2dyYW0pCiB7CisgICAgQ2xlYW51cEhlbHBlcih0aGlz
LCBmYWxzZSk7CiAgICAgbV9jb250ZXh0LT52YWxpZGF0ZVByb2dyYW0ocHJvZ3JhbSk7Ci0gICAg
Y2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OnZlcnRleEF0dHJpYjFmKHVuc2lnbmVkIGxvbmcgaW5keCwgZmxvYXQgdjApCiB7
CisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CiAgICAgbV9jb250ZXh0LT52ZXJ0ZXhB
dHRyaWIxZihpbmR4LCB2MCk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsK
IH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYjFmdih1bnNpZ25l
ZCBsb25nIGluZHgsIFdlYkdMRmxvYXRBcnJheSogdikKIHsKKyAgICBDbGVhbnVwSGVscGVyKHRo
aXMsIGZhbHNlKTsKICAgICAvLyBGSVhNRTogTmVlZCB0byBtYWtlIHN1cmUgYXJyYXkgaXMgYmln
IGVub3VnaCBmb3IgYXR0cmlidXRlIGJlaW5nIHNldAogICAgIG1fY29udGV4dC0+dmVydGV4QXR0
cmliMWZ2KGluZHgsIHYtPmRhdGEoKSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZh
bHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYjFmdih1
bnNpZ25lZCBsb25nIGluZHgsIGZsb2F0KiB2LCBpbnQgc2l6ZSkKIHsKKyAgICBDbGVhbnVwSGVs
cGVyKHRoaXMsIGZhbHNlKTsKICAgICAvLyBGSVhNRTogTmVlZCB0byBtYWtlIHN1cmUgYXJyYXkg
aXMgYmlnIGVub3VnaCBmb3IgYXR0cmlidXRlIGJlaW5nIHNldAogICAgIFVOVVNFRF9QQVJBTShz
aXplKTsKICAgICAKICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjFmdihpbmR4LCB2KTsKLSAg
ICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6dmVydGV4QXR0cmliMmYodW5zaWduZWQgbG9uZyBpbmR4LCBmbG9hdCB2MCwg
ZmxvYXQgdjEpCiB7CisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CiAgICAgbV9jb250
ZXh0LT52ZXJ0ZXhBdHRyaWIyZihpbmR4LCB2MCwgdjEpOwotICAgIGNsZWFudXBBZnRlckdyYXBo
aWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhB
dHRyaWIyZnYodW5zaWduZWQgbG9uZyBpbmR4LCBXZWJHTEZsb2F0QXJyYXkqIHYpCiB7CisgICAg
Q2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CiAgICAgLy8gRklYTUU6IE5lZWQgdG8gbWFrZSBz
dXJlIGFycmF5IGlzIGJpZyBlbm91Z2ggZm9yIGF0dHJpYnV0ZSBiZWluZyBzZXQKICAgICBtX2Nv
bnRleHQtPnZlcnRleEF0dHJpYjJmdihpbmR4LCB2LT5kYXRhKCkpOwotICAgIGNsZWFudXBBZnRl
ckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2
ZXJ0ZXhBdHRyaWIyZnYodW5zaWduZWQgbG9uZyBpbmR4LCBmbG9hdCogdiwgaW50IHNpemUpCiB7
CisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CiAgICAgLy8gRklYTUU6IE5lZWQgdG8g
bWFrZSBzdXJlIGFycmF5IGlzIGJpZyBlbm91Z2ggZm9yIGF0dHJpYnV0ZSBiZWluZyBzZXQKICAg
ICBVTlVTRURfUEFSQU0oc2l6ZSk7CiAgICAgCiAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIy
ZnYoaW5keCwgdik7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAog
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYjNmKHVuc2lnbmVkIGxvbmcg
aW5keCwgZmxvYXQgdjAsIGZsb2F0IHYxLCBmbG9hdCB2MikKIHsKKyAgICBDbGVhbnVwSGVscGVy
KHRoaXMsIGZhbHNlKTsKICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjNmKGluZHgsIHYwLCB2
MSwgdjIpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWIzZnYodW5zaWduZWQgbG9uZyBpbmR4
LCBXZWJHTEZsb2F0QXJyYXkqIHYpCiB7CisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7
CiAgICAgLy8gRklYTUU6IE5lZWQgdG8gbWFrZSBzdXJlIGFycmF5IGlzIGJpZyBlbm91Z2ggZm9y
IGF0dHJpYnV0ZSBiZWluZyBzZXQKICAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYjNmdihpbmR4
LCB2LT5kYXRhKCkpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAK
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWIzZnYodW5zaWduZWQgbG9u
ZyBpbmR4LCBmbG9hdCogdiwgaW50IHNpemUpCiB7CisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBm
YWxzZSk7CiAgICAgLy8gRklYTUU6IE5lZWQgdG8gbWFrZSBzdXJlIGFycmF5IGlzIGJpZyBlbm91
Z2ggZm9yIGF0dHJpYnV0ZSBiZWluZyBzZXQKICAgICBVTlVTRURfUEFSQU0oc2l6ZSk7CiAgICAg
CiAgICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWIzZnYoaW5keCwgdik7Ci0gICAgY2xlYW51cEFm
dGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OnZlcnRleEF0dHJpYjRmKHVuc2lnbmVkIGxvbmcgaW5keCwgZmxvYXQgdjAsIGZsb2F0IHYxLCBm
bG9hdCB2MiwgZmxvYXQgdjMpCiB7CisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CiAg
ICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWI0ZihpbmR4LCB2MCwgdjEsIHYyLCB2Myk7Ci0gICAg
Y2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OnZlcnRleEF0dHJpYjRmdih1bnNpZ25lZCBsb25nIGluZHgsIFdlYkdMRmxvYXRB
cnJheSogdikKIHsKKyAgICBDbGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKICAgICAvLyBGSVhN
RTogTmVlZCB0byBtYWtlIHN1cmUgYXJyYXkgaXMgYmlnIGVub3VnaCBmb3IgYXR0cmlidXRlIGJl
aW5nIHNldAogICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliNGZ2KGluZHgsIHYtPmRhdGEoKSk7
Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KIAogdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYjRmdih1bnNpZ25lZCBsb25nIGluZHgsIGZsb2F0
KiB2LCBpbnQgc2l6ZSkKIHsKKyAgICBDbGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKICAgICAv
LyBGSVhNRTogTmVlZCB0byBtYWtlIHN1cmUgYXJyYXkgaXMgYmlnIGVub3VnaCBmb3IgYXR0cmli
dXRlIGJlaW5nIHNldAogICAgIFVOVVNFRF9QQVJBTShzaXplKTsKICAgICAKICAgICBtX2NvbnRl
eHQtPnZlcnRleEF0dHJpYjRmdihpbmR4LCB2KTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0Nh
bGwoZmFsc2UpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmli
UG9pbnRlcih1bnNpZ25lZCBsb25nIGluZHgsIGxvbmcgc2l6ZSwgdW5zaWduZWQgbG9uZyB0eXBl
LCBib29sIG5vcm1hbGl6ZWQsIHVuc2lnbmVkIGxvbmcgc3RyaWRlLCB1bnNpZ25lZCBsb25nIG9m
ZnNldCkKIHsKKyAgICBDbGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKICAgICBtX2NvbnRleHQt
PnZlcnRleEF0dHJpYlBvaW50ZXIoaW5keCwgc2l6ZSwgdHlwZSwgbm9ybWFsaXplZCwgc3RyaWRl
LCBvZmZzZXQpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2aWV3cG9ydChsb25nIHgsIGxvbmcgeSwgdW5zaWdu
ZWQgbG9uZyB3aWR0aCwgdW5zaWduZWQgbG9uZyBoZWlnaHQpCiB7CisgICAgQ2xlYW51cEhlbHBl
cih0aGlzLCBmYWxzZSk7CiAgICAgaWYgKGlzbmFuKHgpKQogICAgICAgICB4ID0gMDsKICAgICBp
ZiAoaXNuYW4oeSkpCkBAIC0xNTMyLDcgKzE4NjcsNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6dmlld3BvcnQobG9uCiAgICAgaWYgKGlzbmFuKGhlaWdodCkpCiAgICAgICAgIGhlaWdo
dCA9IDEwMDsKICAgICBtX2NvbnRleHQtPnZpZXdwb3J0KHgsIHksIHdpZHRoLCBoZWlnaHQpOwot
ICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CiAKIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpyZW1vdmVPYmplY3QoQ2FudmFzT2JqZWN0KiBvYmplY3QpCkBAIC0xNTQ4
LDYgKzE4ODIsMTUgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmFkZE9iamVjdChDYQog
CiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZGV0YWNoQW5kUmVtb3ZlQWxsT2JqZWN0cygp
CiB7CisgICAgbV9hcnJheUJ1ZmZlckJpbmRpbmcgPSAwOworICAgIG1fY3VycmVudFByb2dyYW0g
PSAwOworICAgIG1fZWxlbWVudEFycmF5QnVmZmVyQmluZGluZyA9IDA7CisgICAgbV9mcmFtZWJ1
ZmZlckJpbmRpbmcgPSAwOworICAgIG1fcmVuZGVyYnVmZmVyQmluZGluZyA9IDA7CisgICAgZm9y
ICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBzaXplb2YobV90ZXh0dXJlVW5pdHMpIC8gc2l6ZW9m
KFRleHR1cmVVbml0U3RhdGUpOyBpKyspIHsKKyAgICAgICAgbV90ZXh0dXJlVW5pdHNbaV0ubV90
ZXh0dXJlMkRCaW5kaW5nID0gMDsKKyAgICAgICAgbV90ZXh0dXJlVW5pdHNbaV0ubV90ZXh0dXJl
Q3ViZU1hcEJpbmRpbmcgPSAwOworICAgIH0KICAgICBIYXNoU2V0PENhbnZhc09iamVjdCo+Ojpp
dGVyYXRvciBwZW5kID0gbV9jYW52YXNPYmplY3RzLmVuZCgpOwogICAgIGZvciAoSGFzaFNldDxD
YW52YXNPYmplY3QqPjo6aXRlcmF0b3IgaXQgPSBtX2NhbnZhc09iamVjdHMuYmVnaW4oKTsgaXQg
IT0gcGVuZDsgKytpdCkKICAgICAgICAgKCppdCktPmRldGFjaENvbnRleHQoKTsKQEAgLTE1NTUs
NyArMTg5OCw5NCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZGV0YWNoQW5kUmVtCiAg
ICAgbV9jYW52YXNPYmplY3RzLmNsZWFyKCk7CiB9CiAKK1dlYkdMR2V0SW5mbyBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmdldEJvb2xlYW5QYXJhbWV0ZXIodW5zaWduZWQgbG9uZyBwbmFtZSkKK3sK
KyAgICB1bnNpZ25lZCBjaGFyIHZhbHVlOworICAgIG1fY29udGV4dC0+Z2V0Qm9vbGVhbnYocG5h
bWUsICZ2YWx1ZSk7CisgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNfY2FzdDxib29sPih2
YWx1ZSkpOworfQorCitXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRGbG9h
dFBhcmFtZXRlcih1bnNpZ25lZCBsb25nIHBuYW1lKQoreworICAgIGZsb2F0IHZhbHVlOworICAg
IG1fY29udGV4dC0+Z2V0RmxvYXR2KHBuYW1lLCAmdmFsdWUpOworICAgIHJldHVybiBXZWJHTEdl
dEluZm8oc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlKSk7Cit9CisKK1dlYkdMR2V0SW5mbyBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmdldEludFBhcmFtZXRlcih1bnNpZ25lZCBsb25nIHBuYW1lKQor
eworICAgIHJldHVybiBnZXRMb25nUGFyYW1ldGVyKHBuYW1lKTsKK30KKworV2ViR0xHZXRJbmZv
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0TG9uZ1BhcmFtZXRlcih1bnNpZ25lZCBsb25nIHBu
YW1lKQoreworICAgIGludCB2YWx1ZTsKKyAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KHBuYW1l
LCAmdmFsdWUpOworICAgIHJldHVybiBXZWJHTEdldEluZm8oc3RhdGljX2Nhc3Q8bG9uZz4odmFs
dWUpKTsKK30KKworV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VW5zaWdu
ZWRMb25nUGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcgcG5hbWUpCit7CisgICAgaW50IHZhbHVlOwor
ICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYocG5hbWUsICZ2YWx1ZSk7CisgICAgcmV0dXJuIFdl
YkdMR2V0SW5mbyhzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPih2YWx1ZSkpOworfQorCitXZWJH
TEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRXZWJHTEZsb2F0QXJyYXlQYXJhbWV0
ZXIodW5zaWduZWQgbG9uZyBwbmFtZSkKK3sKKyAgICBmbG9hdCB2YWx1ZVs0XSA9IHswfTsKKyAg
ICBtX2NvbnRleHQtPmdldEZsb2F0dihwbmFtZSwgdmFsdWUpOworICAgIHVuc2lnbmVkIGxlbmd0
aCA9IDA7CisgICAgc3dpdGNoIChwbmFtZSkgeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6
OkFMSUFTRURfUE9JTlRfU0laRV9SQU5HRToKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpB
TElBU0VEX0xJTkVfV0lEVEhfUkFOR0U6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQ
VEhfUkFOR0U6CisgICAgICAgIGxlbmd0aCA9IDI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0M0Q6OkJMRU5EX0NPTE9SOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
M0Q6OkNPTE9SX0NMRUFSX1ZBTFVFOgorICAgICAgICBsZW5ndGggPSA0OworICAgICAgICBicmVh
azsKKyAgICBkZWZhdWx0OgorICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIH0KKyAgICBy
ZXR1cm4gV2ViR0xHZXRJbmZvKFdlYkdMRmxvYXRBcnJheTo6Y3JlYXRlKHZhbHVlLCBsZW5ndGgp
KTsKK30KKworV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0V2ViR0xJbnRB
cnJheVBhcmFtZXRlcih1bnNpZ25lZCBsb25nIHBuYW1lKQoreworICAgIGludCB2YWx1ZVs0XSA9
IHswfTsKKyAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KHBuYW1lLCB2YWx1ZSk7CisgICAgdW5z
aWduZWQgbGVuZ3RoID0gMDsKKyAgICBzd2l0Y2ggKHBuYW1lKSB7CisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHQzRDo6TUFYX1ZJRVdQT1JUX0RJTVM6CisgICAgICAgIGxlbmd0aCA9IDI7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNDSVNTT1JfQk9YOgorICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlZJRVdQT1JUOgorICAgICAgICBsZW5ndGggPSA0Owor
ICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIH0KKyAgICByZXR1cm4gV2ViR0xHZXRJbmZvKFdlYkdMSW50QXJyYXk6OmNyZWF0ZSh2YWx1
ZSwgbGVuZ3RoKSk7Cit9CisKK1dlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omdl
dFdlYkdMVW5zaWduZWRCeXRlQXJyYXlQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyBwbmFtZSkKK3sK
KyAgICB1bnNpZ25lZCBjaGFyIHZhbHVlWzRdID0gezB9OworICAgIG1fY29udGV4dC0+Z2V0Qm9v
bGVhbnYocG5hbWUsIHZhbHVlKTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSAwOworICAgIHN3aXRj
aCAocG5hbWUpIHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9XUklURU1BU0s6
CisgICAgICAgIGxlbmd0aCA9IDQ7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgfQorICAgIHJldHVybiBXZWJHTEdldEluZm8oV2Vi
R0xVbnNpZ25lZEJ5dGVBcnJheTo6Y3JlYXRlKHZhbHVlLCBsZW5ndGgpKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKDNEX0NBTlZBUykKLQpJbmRleDog
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCShyZXZpc2lvbiA1
MTI3OCkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDYW52YXNSZW5kZXJpbmdD
b250ZXh0LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIldlYkdMRmxv
YXRBcnJheS5oIgorI2luY2x1ZGUgIldlYkdMR2V0SW5mby5oIgogI2luY2x1ZGUgIldlYkdMSW50
QXJyYXkuaCIKICNpbmNsdWRlICJXZWJHTFVuc2lnbmVkQnl0ZUFycmF5LmgiCiAjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0M0QuaCIKQEAgLTEzMCwyNiArMTMxLDIxIEBAIGNsYXNzIFdlYktpdENT
U01hdHJpeDsKIAogICAgICAgICBpbnQgIGdldEF0dHJpYkxvY2F0aW9uKFdlYkdMUHJvZ3JhbSos
IGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKLSAgICAgICAgYm9vbCBnZXRCb29sZWFuKHVuc2lnbmVk
IGxvbmcgcG5hbWUpOwotICAgICAgICBQYXNzUmVmUHRyPFdlYkdMVW5zaWduZWRCeXRlQXJyYXk+
IGdldEJvb2xlYW52KHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBpbnQgZ2V0QnVmZmVy
UGFyYW1ldGVyaSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0g
ICAgICAgIFBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gZ2V0QnVmZmVyUGFyYW1ldGVyaXYodW5z
aWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOworICAgICAgICBXZWJHTEdl
dEluZm8gZ2V0QnVmZmVyUGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBs
b25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICAgICAgdW5zaWduZWQgbG9uZyBnZXRF
cnJvcigpOwogCi0gICAgICAgIGZsb2F0IGdldEZsb2F0KHVuc2lnbmVkIGxvbmcgcG5hbWUpOwot
ICAgICAgICBQYXNzUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gZ2V0RmxvYXR2KHVuc2lnbmVkIGxv
bmcgcG5hbWUpOwotICAgICAgICBpbnQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
aSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCB1bnNpZ25l
ZCBsb25nIHBuYW1lKTsKLSAgICAgICAgUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBnZXRGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWdu
ZWQgbG9uZyBhdHRhY2htZW50LCB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgaW50IGdl
dEludGVnZXIodW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFBhc3NSZWZQdHI8V2ViR0xJ
bnRBcnJheT4gZ2V0SW50ZWdlcnYodW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIGludCBn
ZXRQcm9ncmFtaShXZWJHTFByb2dyYW0qLCB1bnNpZ25lZCBsb25nIHBuYW1lLCBFeGNlcHRpb25D
b2RlJiBlYyk7Ci0gICAgICAgIFBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gZ2V0UHJvZ3JhbWl2
KFdlYkdMUHJvZ3JhbSosIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKTsK
KyAgICAgICAgV2ViR0xHZXRJbmZvIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcih1
bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCB1bnNpZ25lZCBs
b25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJik7CisKKyAgICAgICAgV2ViR0xHZXRJbmZvIGdldFBh
cmFtZXRlcih1bnNpZ25lZCBsb25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJik7CisKKyAgICAgICAg
V2ViR0xHZXRJbmZvIGdldFByb2dyYW1QYXJhbWV0ZXIoV2ViR0xQcm9ncmFtKiwgdW5zaWduZWQg
bG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYpOworCiAgICAgICAgIFN0cmluZyBnZXRQcm9ncmFt
SW5mb0xvZyhXZWJHTFByb2dyYW0qLCBFeGNlcHRpb25Db2RlJiBlYyk7Ci0gICAgICAgIGludCBn
ZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBs
b25nIHBuYW1lKTsKLSAgICAgICAgUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBnZXRSZW5kZXJi
dWZmZXJQYXJhbWV0ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFt
ZSk7Ci0gICAgICAgIGludCBnZXRTaGFkZXJpKFdlYkdMU2hhZGVyKiwgdW5zaWduZWQgbG9uZyBw
bmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpOwotICAgICAgICBQYXNzUmVmUHRyPFdlYkdMSW50QXJy
YXk+IGdldFNoYWRlcml2KFdlYkdMU2hhZGVyKiwgdW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0
aW9uQ29kZSYgZWMpOworCisgICAgICAgIFdlYkdMR2V0SW5mbyBnZXRSZW5kZXJidWZmZXJQYXJh
bWV0ZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlv
bkNvZGUmKTsKKworICAgICAgICBXZWJHTEdldEluZm8gZ2V0U2hhZGVyUGFyYW1ldGVyKFdlYkdM
U2hhZGVyKiwgdW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpOwogCiAgICAg
ICAgIFN0cmluZyBnZXRTaGFkZXJJbmZvTG9nKFdlYkdMU2hhZGVyKiwgRXhjZXB0aW9uQ29kZSYg
ZWMpOwogCkBAIC0xNTksMTAgKzE1NSw5IEBAIGNsYXNzIFdlYktpdENTU01hdHJpeDsKICAgICAg
ICAgU3RyaW5nIGdldFNoYWRlclNvdXJjZShXZWJHTFNoYWRlciosIEV4Y2VwdGlvbkNvZGUmIGVj
KTsKICAgICAgICAgU3RyaW5nIGdldFN0cmluZyh1bnNpZ25lZCBsb25nIG5hbWUpOwogCi0gICAg
ICAgIGZsb2F0IGdldFRleFBhcmFtZXRlcmYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVk
IGxvbmcgcG5hbWUpOwotICAgICAgICBQYXNzUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gZ2V0VGV4
UGFyYW1ldGVyZnYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwot
ICAgICAgICBpbnQgZ2V0VGV4UGFyYW1ldGVyaSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWdu
ZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gZ2V0VGV4
UGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwor
ICAgICAgICBXZWJHTEdldEluZm8gZ2V0VGV4UGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcgdGFyZ2V0
LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJik7CisKKyAgICAgICAgV2ViR0xH
ZXRJbmZvIGdldFVuaWZvcm0oV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uLCBF
eGNlcHRpb25Db2RlJiBlYyk7CiAKICAgICAgICAgZmxvYXQgZ2V0VW5pZm9ybWYoV2ViR0xQcm9n
cmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uLCBFeGNlcHRpb25Db2RlJiBlYyk7CiAgICAgICAg
IFBhc3NSZWZQdHI8V2ViR0xGbG9hdEFycmF5PiBnZXRVbmlmb3JtZnYoV2ViR0xQcm9ncmFtKiBw
cm9ncmFtLCBsb25nIGxvY2F0aW9uLCBFeGNlcHRpb25Db2RlJiBlYyk7CkBAIC0xNzEsMTAgKzE2
Niw3IEBAIGNsYXNzIFdlYktpdENTU01hdHJpeDsKIAogICAgICAgICBsb25nIGdldFVuaWZvcm1M
b2NhdGlvbihXZWJHTFByb2dyYW0qLCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUm
IGVjKTsKIAotICAgICAgICBmbG9hdCBnZXRWZXJ0ZXhBdHRyaWJmKHVuc2lnbmVkIGxvbmcgaW5k
ZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBQYXNzUmVmUHRyPFdlYkdMRmxvYXRB
cnJheT4gZ2V0VmVydGV4QXR0cmliZnYodW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQgbG9u
ZyBwbmFtZSk7Ci0gICAgICAgIGxvbmcgZ2V0VmVydGV4QXR0cmliaSh1bnNpZ25lZCBsb25nIGlu
ZGV4LCB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgUGFzc1JlZlB0cjxXZWJHTEludEFy
cmF5PiBnZXRWZXJ0ZXhBdHRyaWJpdih1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25n
IHBuYW1lKTsKKyAgICAgICAgV2ViR0xHZXRJbmZvIGdldFZlcnRleEF0dHJpYih1bnNpZ25lZCBs
b25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICAg
ICAgbG9uZyBnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQodW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWdu
ZWQgbG9uZyBwbmFtZSk7CiAKQEAgLTMyMCw2ICszMTIsMzEgQEAgY2xhc3MgV2ViS2l0Q1NTTWF0
cml4OwogICAgICAgICAvLyBGSVhNRTogSSB0aGluayB0aGlzIGlzIGJyb2tlbiAtLSBpdCBkb2Vz
IG5vdCBpbmNyZW1lbnQgYW55CiAgICAgICAgIC8vIHJlZmVyZW5jZSBjb3VudHMsIHNvIG1heSBy
ZWZlciB0byBkZXN0cm95ZWQgb2JqZWN0cy4KICAgICAgICAgSGFzaFNldDxDYW52YXNPYmplY3Qq
PiBtX2NhbnZhc09iamVjdHM7CisKKyAgICAgICAgUmVmUHRyPFdlYkdMQnVmZmVyPiBtX2FycmF5
QnVmZmVyQmluZGluZzsKKyAgICAgICAgUmVmUHRyPFdlYkdMUHJvZ3JhbT4gbV9jdXJyZW50UHJv
Z3JhbTsKKyAgICAgICAgUmVmUHRyPFdlYkdMQnVmZmVyPiBtX2VsZW1lbnRBcnJheUJ1ZmZlckJp
bmRpbmc7CisgICAgICAgIFJlZlB0cjxXZWJHTEZyYW1lYnVmZmVyPiBtX2ZyYW1lYnVmZmVyQmlu
ZGluZzsKKyAgICAgICAgUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPiBtX3JlbmRlcmJ1ZmZlckJp
bmRpbmc7CisgICAgICAgIGNsYXNzIFRleHR1cmVVbml0U3RhdGUgeworICAgICAgICBwdWJsaWM6
CisgICAgICAgICAgICBSZWZQdHI8V2ViR0xUZXh0dXJlPiBtX3RleHR1cmUyREJpbmRpbmc7Cisg
ICAgICAgICAgICBSZWZQdHI8V2ViR0xUZXh0dXJlPiBtX3RleHR1cmVDdWJlTWFwQmluZGluZzsK
KyAgICAgICAgfTsKKyAgICAgICAgVGV4dHVyZVVuaXRTdGF0ZSBtX3RleHR1cmVVbml0c1szMl07
CisgICAgICAgIHVuc2lnbmVkIGxvbmcgbV9hY3RpdmVUZXh0dXJlVW5pdDsKKworICAgICAgICAv
LyBIZWxwZXJzIGZvciBnZXRQYXJhbWV0ZXIgYW5kIG90aGVycworICAgICAgICBXZWJHTEdldElu
Zm8gZ2V0Qm9vbGVhblBhcmFtZXRlcih1bnNpZ25lZCBsb25nIHBuYW1lKTsKKyAgICAgICAgV2Vi
R0xHZXRJbmZvIGdldEZsb2F0UGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcgcG5hbWUpOworICAgICAg
ICBXZWJHTEdldEluZm8gZ2V0SW50UGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcgcG5hbWUpOworICAg
ICAgICBXZWJHTEdldEluZm8gZ2V0TG9uZ1BhcmFtZXRlcih1bnNpZ25lZCBsb25nIHBuYW1lKTsK
KyAgICAgICAgV2ViR0xHZXRJbmZvIGdldFVuc2lnbmVkTG9uZ1BhcmFtZXRlcih1bnNpZ25lZCBs
b25nIHBuYW1lKTsKKyAgICAgICAgV2ViR0xHZXRJbmZvIGdldFdlYkdMRmxvYXRBcnJheVBhcmFt
ZXRlcih1bnNpZ25lZCBsb25nIHBuYW1lKTsKKyAgICAgICAgV2ViR0xHZXRJbmZvIGdldFdlYkdM
SW50QXJyYXlQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyBwbmFtZSk7CisgICAgICAgIFdlYkdMR2V0
SW5mbyBnZXRXZWJHTFVuc2lnbmVkQnl0ZUFycmF5UGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcgcG5h
bWUpOworCisgICAgICAgIGZyaWVuZCBjbGFzcyBDbGVhbnVwSGVscGVyOwogICAgIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5pZGwJKHJldmlzaW9uIDUxMjc4KQorKysgV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC01MjksNyAr
NTI5LDYgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICB2b2lkICAgICAgICAgZnJvbnRGYWNlKGlu
IHVuc2lnbmVkIGxvbmcgbW9kZSk7CiAgICAgICAgIHZvaWQgICAgICAgICBnZW5lcmF0ZU1pcG1h
cChpbiB1bnNpZ25lZCBsb25nIHRhcmdldCk7CiAgICAgICAgIAotICAgICAgICAvLyBGSVhNRTog
dGhlc2UgbmVlZCB0byBiZSBhZGRlZCBwZXIgdGhlIFdlYkdMIHNwZWMKICAgICAgICAgV2ViR0xB
Y3RpdmVJbmZvIGdldEFjdGl2ZUF0dHJpYihpbiBXZWJHTFByb2dyYW0gcHJvZ3JhbSwgaW4gdW5z
aWduZWQgbG9uZyBpbmRleCkKICAgICAgICAgICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAg
ICAgICAgV2ViR0xBY3RpdmVJbmZvIGdldEFjdGl2ZVVuaWZvcm0oaW4gV2ViR0xQcm9ncmFtIHBy
b2dyYW0sIGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpCkBAIC01MzksMjYgKzUzOCwyMiBAQCBtb2R1
bGUgaHRtbCB7CiAKICAgICAgICAgaW50ICAgICAgICAgIGdldEF0dHJpYkxvY2F0aW9uKGluIFdl
YkdMUHJvZ3JhbSBwcm9ncmFtLCBpbiBET01TdHJpbmcgbmFtZSk7CiAKLSAgICAgICAgYm9vbGVh
biBnZXRCb29sZWFuKGluIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBXZWJHTFVuc2ln
bmVkQnl0ZUFycmF5IGdldEJvb2xlYW52KGluIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAg
ICBsb25nIGdldEJ1ZmZlclBhcmFtZXRlcmkoaW4gdW5zaWduZWQgbG9uZyB0YXJnZXQsIGluIHVu
c2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBXZWJHTEludEFycmF5IGdldEJ1ZmZlclBhcmFt
ZXRlcml2KGluIHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBpbiB1bnNpZ25lZCBsb25nIHBuYW1lKTsK
KyAgICAgICAgLy8gYW55IGdldEJ1ZmZlclBhcmFtZXRlcihpbiB1bnNpZ25lZCBsb25nIHRhcmdl
dCwgaW4gdW5zaWduZWQgbG9uZyBwbmFtZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAg
IFtDdXN0b21dIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyKCk7CiAKICAgICAgICAgdW5zaWduZWQg
bG9uZyBnZXRFcnJvcigpOwogCi0gICAgICAgIGZsb2F0IGdldEZsb2F0KGluIHVuc2lnbmVkIGxv
bmcgcG5hbWUpOwotICAgICAgICBXZWJHTEZsb2F0QXJyYXkgZ2V0RmxvYXR2KGluIHVuc2lnbmVk
IGxvbmcgcG5hbWUpOwotICAgICAgICBsb25nIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcmkoaW4gdW5zaWduZWQgbG9uZyB0YXJnZXQsIGluIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVu
dCwgaW4gdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFdlYkdMSW50QXJyYXkgZ2V0RnJh
bWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoaW4gdW5zaWduZWQgbG9uZyB0YXJnZXQsIGlu
IHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgaW4gdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAg
ICAgIGxvbmcgZ2V0SW50ZWdlcihpbiB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgV2Vi
R0xJbnRBcnJheSBnZXRJbnRlZ2VydihpbiB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAg
bG9uZyBnZXRQcm9ncmFtaShpbiBXZWJHTFByb2dyYW0gcHJvZ3JhbSwgaW4gdW5zaWduZWQgbG9u
ZyBwbmFtZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7Ci0gICAgICAgIFdlYkdMSW50QXJyYXkgZ2V0
UHJvZ3JhbWl2KGluIFdlYkdMUHJvZ3JhbSBwcm9ncmFtLCBpbiB1bnNpZ25lZCBsb25nIHBuYW1l
KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgLy8gYW55IGdldEZyYW1lYnVmZmVyQXR0
YWNobWVudFBhcmFtZXRlcihpbiB1bnNpZ25lZCBsb25nIHRhcmdldCwgaW4gdW5zaWduZWQgbG9u
ZyBhdHRhY2htZW50LCBpbiB1bnNpZ25lZCBsb25nIHBuYW1lKSByYWlzZXMoRE9NRXhjZXB0aW9u
KTsKKyAgICAgICAgW0N1c3RvbV0gdm9pZCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0
ZXIoKTsKKyAgICAgICAgLy8gYW55IGdldFBhcmFtZXRlcihpbiB1bnNpZ25lZCBsb25nIHBuYW1l
KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgW0N1c3RvbV0gdm9pZCBnZXRQYXJhbWV0
ZXIoKTsKKyAgICAgICAgLy8gYW55IGdldFByb2dyYW1QYXJhbWV0ZXIoaW4gV2ViR0xQcm9ncmFt
IHByb2dyYW0sIGluIHVuc2lnbmVkIGxvbmcgcG5hbWUpIHJhaXNlcyhET01FeGNlcHRpb24pOwor
ICAgICAgICBbQ3VzdG9tXSB2b2lkIGdldFByb2dyYW1QYXJhbWV0ZXIoKTsKICAgICAgICAgRE9N
U3RyaW5nIGdldFByb2dyYW1JbmZvTG9nKGluIFdlYkdMUHJvZ3JhbSBwcm9ncmFtKSByYWlzZXMo
RE9NRXhjZXB0aW9uKTsKLSAgICAgICAgbG9uZyBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKGlu
IHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBpbiB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAg
V2ViR0xJbnRBcnJheSBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdihpbiB1bnNpZ25lZCBsb25n
IHRhcmdldCwgaW4gdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIGxvbmcgZ2V0U2hhZGVy
aShpbiBXZWJHTFNoYWRlciBzaGFkZXIsIGluIHVuc2lnbmVkIGxvbmcgcG5hbWUpIHJhaXNlcyhE
T01FeGNlcHRpb24pOwotICAgICAgICBXZWJHTEludEFycmF5IGdldFNoYWRlcml2KGluIFdlYkdM
U2hhZGVyIHNoYWRlciwgaW4gdW5zaWduZWQgbG9uZyBwbmFtZSkgcmFpc2VzKERPTUV4Y2VwdGlv
bik7CisgICAgICAgIC8vIGFueSBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoaW4gdW5zaWduZWQg
bG9uZyB0YXJnZXQsIGluIHVuc2lnbmVkIGxvbmcgcG5hbWUpIHJhaXNlcyhET01FeGNlcHRpb24p
OworICAgICAgICBbQ3VzdG9tXSB2b2lkIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcigpOworICAg
ICAgICAvLyBhbnkgZ2V0U2hhZGVyUGFyYW1ldGVyKGluIFdlYkdMU2hhZGVyIHNoYWRlciwgaW4g
dW5zaWduZWQgbG9uZyBwbmFtZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIFtDdXN0
b21dIHZvaWQgZ2V0U2hhZGVyUGFyYW1ldGVyKCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKICAg
ICAgICAgRE9NU3RyaW5nICAgIGdldFNoYWRlckluZm9Mb2coaW4gV2ViR0xTaGFkZXIgc2hhZGVy
KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIApAQCAtNTY4LDIyICs1NjMsMTYgQEAgbW9kdWxlIGh0
bWwgewogICAgICAgICBET01TdHJpbmcgICAgZ2V0U2hhZGVyU291cmNlKGluIFdlYkdMU2hhZGVy
IHNoYWRlcikgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIERPTVN0cmluZyAgICBnZXRT
dHJpbmcoaW4gdW5zaWduZWQgbG9uZyBuYW1lKTsKIAotICAgICAgICBmbG9hdCBnZXRUZXhQYXJh
bWV0ZXJmKGluIHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBpbiB1bnNpZ25lZCBsb25nIHBuYW1lKTsK
LSAgICAgICAgV2ViR0xGbG9hdEFycmF5IGdldFRleFBhcmFtZXRlcmZ2KGluIHVuc2lnbmVkIGxv
bmcgdGFyZ2V0LCBpbiB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgbG9uZyBnZXRUZXhQ
YXJhbWV0ZXJpKGluIHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBpbiB1bnNpZ25lZCBsb25nIHBuYW1l
KTsKLSAgICAgICAgV2ViR0xJbnRBcnJheSBnZXRUZXhQYXJhbWV0ZXJpdihpbiB1bnNpZ25lZCBs
b25nIHRhcmdldCwgaW4gdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0KLSAgICAgICAgZmxvYXQgZ2V0
VW5pZm9ybWYoaW4gV2ViR0xQcm9ncmFtIHByb2dyYW0sIGluIGxvbmcgbG9jYXRpb24pIHJhaXNl
cyhET01FeGNlcHRpb24pOwotICAgICAgICBXZWJHTEZsb2F0QXJyYXkgZ2V0VW5pZm9ybWZ2KGlu
IFdlYkdMUHJvZ3JhbSBwcm9ncmFtLCBpbiBsb25nIGxvY2F0aW9uKSByYWlzZXMoRE9NRXhjZXB0
aW9uKTsKLSAgICAgICAgbG9uZyBnZXRVbmlmb3JtaShpbiBXZWJHTFByb2dyYW0gcHJvZ3JhbSwg
aW4gbG9uZyBsb2NhdGlvbikgcmFpc2VzKERPTUV4Y2VwdGlvbik7Ci0gICAgICAgIFdlYkdMSW50
QXJyYXkgZ2V0VW5pZm9ybWl2KGluIFdlYkdMUHJvZ3JhbSBwcm9ncmFtLCBpbiBsb25nIGxvY2F0
aW9uKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgLy8gYW55IGdldFRleFBhcmFtZXRl
cihpbiB1bnNpZ25lZCBsb25nIHRhcmdldCwgaW4gdW5zaWduZWQgbG9uZyBwbmFtZSkgcmFpc2Vz
KERPTUV4Y2VwdGlvbik7CisgICAgICAgIFtDdXN0b21dIHZvaWQgZ2V0VGV4UGFyYW1ldGVyKCk7
CisKKyAgICAgICAgLy8gYW55IGdldFVuaWZvcm0oaW4gV2ViR0xQcm9ncmFtIHByb2dyYW0sIGlu
IGxvbmcgbG9jYXRpb24pIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICBbQ3VzdG9tXSB2
b2lkIGdldFVuaWZvcm0oKTsKICAgICAgICAgCiAgICAgICAgIGxvbmcgZ2V0VW5pZm9ybUxvY2F0
aW9uKGluIFdlYkdMUHJvZ3JhbSBwcm9ncmFtLCBpbiBET01TdHJpbmcgbmFtZSkgcmFpc2VzKERP
TUV4Y2VwdGlvbik7CiAKLSAgICAgICAgZmxvYXQgZ2V0VmVydGV4QXR0cmliZihpbiB1bnNpZ25l
ZCBsb25nIGluZGV4LCBpbiB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgV2ViR0xGbG9h
dEFycmF5IGdldFZlcnRleEF0dHJpYmZ2KGluIHVuc2lnbmVkIGxvbmcgaW5kZXgsIGluIHVuc2ln
bmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBsb25nIGdldFZlcnRleEF0dHJpYmkoaW4gdW5zaWdu
ZWQgbG9uZyBpbmRleCwgaW4gdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFdlYkdMSW50
QXJyYXkgZ2V0VmVydGV4QXR0cmliaXYoaW4gdW5zaWduZWQgbG9uZyBpbmRleCwgaW4gdW5zaWdu
ZWQgbG9uZyBwbmFtZSk7CisgICAgICAgIC8vIGFueSBnZXRWZXJ0ZXhBdHRyaWIoaW4gdW5zaWdu
ZWQgbG9uZyBpbmRleCwgaW4gdW5zaWduZWQgbG9uZyBwbmFtZSkgcmFpc2VzKERPTUV4Y2VwdGlv
bik7CisgICAgICAgIFtDdXN0b21dIHZvaWQgZ2V0VmVydGV4QXR0cmliKCk7CiAKICAgICAgICAg
bG9uZyBnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoaW4gdW5zaWduZWQgbG9uZyBpbmRleCwgaW4gdW5z
aWduZWQgbG9uZyBwbmFtZSk7CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUZXh0
dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5j
cHAJKHJldmlzaW9uIDUxMjc4KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRleHR1cmUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNywxMSBAQCBQYXNzUmVmUHRyPFdlYkdMVGV4
dHVyZT4gV2ViR0xUZXh0dXJlOjpjCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHTFRleHR1
cmUoY3R4KSk7CiB9CiAKK1Bhc3NSZWZQdHI8V2ViR0xUZXh0dXJlPiBXZWJHTFRleHR1cmU6OmNy
ZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGN0eCwgUGxhdGZvcm0zRE9iamVjdCBvYmopCit7
CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHTFRleHR1cmUoY3R4LCBvYmopKTsKK30KKwog
V2ViR0xUZXh0dXJlOjpXZWJHTFRleHR1cmUoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjdHgpCiAg
ICAgOiBDYW52YXNPYmplY3QoY3R4KQogICAgICwgY3ViZU1hcFJXcmFwTW9kZUluaXRpYWxpemVk
KGZhbHNlKQpAQCAtNDQsNiArNDksMTMgQEAgV2ViR0xUZXh0dXJlOjpXZWJHTFRleHR1cmUoV2Vi
R0xSZW5kZXJpbgogICAgIHNldE9iamVjdChjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dDNEKCkt
PmNyZWF0ZVRleHR1cmUoKSk7CiB9CiAKK1dlYkdMVGV4dHVyZTo6V2ViR0xUZXh0dXJlKFdlYkdM
UmVuZGVyaW5nQ29udGV4dCogY3R4LCBQbGF0Zm9ybTNET2JqZWN0IG9iaikKKyAgICA6IENhbnZh
c09iamVjdChjdHgpCisgICAgLCBjdWJlTWFwUldyYXBNb2RlSW5pdGlhbGl6ZWQoZmFsc2UpCit7
CisgICAgc2V0T2JqZWN0KG9iaiwgZmFsc2UpOworfQorCiB2b2lkIFdlYkdMVGV4dHVyZTo6X2Rl
bGV0ZU9iamVjdChQbGF0Zm9ybTNET2JqZWN0IG9iamVjdCkKIHsKICAgICBjb250ZXh0KCktPmdy
YXBoaWNzQ29udGV4dDNEKCktPmRlbGV0ZVRleHR1cmUob2JqZWN0KTsKSW5kZXg6IFdlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFRleHR1cmUuaAkocmV2aXNpb24gNTEyNzgpCisrKyBXZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMVGV4dHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSwxMCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJH
TFRleHR1cmU+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqKTsKICAgICAKKyAgICAgICAg
Ly8gRm9yIHF1ZXJ5aW5nIHByZXZpb3VzbHkgY3JlYXRlZCBvYmplY3RzIHZpYSBlLmcuIGdldEZy
YW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcgorICAgICAgICAvLyBGSVhNRTogc2hvdWxkIGNv
bnNpZGVyIGNhbm9uaWNhbGl6aW5nIHRoZXNlIG9iamVjdHMKKyAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8V2ViR0xUZXh0dXJlPiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiwgUGxhdGZv
cm0zRE9iamVjdCk7CisKICAgICAgICAgYm9vbCBpc0N1YmVNYXBSV3JhcE1vZGVJbml0aWFsaXpl
ZCgpIHsKICAgICAgICAgICAgIHJldHVybiBjdWJlTWFwUldyYXBNb2RlSW5pdGlhbGl6ZWQ7CiAg
ICAgICAgIH0KQEAgLTQ5LDYgKzUzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgcHJv
dGVjdGVkOgogICAgICAgICBXZWJHTFRleHR1cmUoV2ViR0xSZW5kZXJpbmdDb250ZXh0Kik7Cisg
ICAgICAgIFdlYkdMVGV4dHVyZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqLCBQbGF0Zm9ybTNET2Jq
ZWN0KTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgX2RlbGV0ZU9iamVjdChQbGF0Zm9ybTNET2Jq
ZWN0KTsKIApJbmRleDogV2ViQ29yZS9tYW51YWwtdGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3V0aWxz
M2QuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9tYW51YWwtdGVzdHMvd2ViZ2wvcmVzb3VyY2Vz
L3V0aWxzM2QuanMJKHJldmlzaW9uIDUxMjc4KQorKysgV2ViQ29yZS9tYW51YWwtdGVzdHMvd2Vi
Z2wvcmVzb3VyY2VzL3V0aWxzM2QuanMJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAg
ZnVuY3Rpb24gaW5pdFdlYkdMKGNhbnZhc05hbWUsIHZzaGFkZXIsIAogICAgIGdsLmxpbmtQcm9n
cmFtKGdsLnByb2dyYW0pOwogCiAgICAgLy8gQ2hlY2sgdGhlIGxpbmsgc3RhdHVzCi0gICAgdmFy
IGxpbmtlZCA9IGdsLmdldFByb2dyYW1pKGdsLnByb2dyYW0sIGdsLkxJTktfU1RBVFVTKTsKKyAg
ICB2YXIgbGlua2VkID0gZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihnbC5wcm9ncmFtLCBnbC5MSU5L
X1NUQVRVUyk7CiAgICAgaWYgKCFsaW5rZWQpIHsKICAgICAgICAgLy8gc29tZXRoaW5nIHdlbnQg
d3Jvbmcgd2l0aCB0aGUgbGluawogICAgICAgICB2YXIgZXJyb3IgPSBnbC5nZXRQcm9ncmFtSW5m
b0xvZyAoZ2wucHJvZ3JhbSk7CkBAIC0xMDUsNyArMTA1LDcgQEAgZnVuY3Rpb24gbG9hZFNoYWRl
cihjdHgsIHNoYWRlcklkKQogICAgIGN0eC5jb21waWxlU2hhZGVyKHNoYWRlcik7CiAKICAgICAv
LyBDaGVjayB0aGUgY29tcGlsZSBzdGF0dXMKLSAgICB2YXIgY29tcGlsZWQgPSBjdHguZ2V0U2hh
ZGVyaShzaGFkZXIsIGN0eC5DT01QSUxFX1NUQVRVUyk7CisgICAgdmFyIGNvbXBpbGVkID0gY3R4
LmdldFNoYWRlclBhcmFtZXRlcihzaGFkZXIsIGN0eC5DT01QSUxFX1NUQVRVUyk7CiAgICAgaWYg
KCFjb21waWxlZCkgewogICAgICAgICAvLyBTb21ldGhpbmcgd2VudCB3cm9uZyBkdXJpbmcgY29t
cGlsYXRpb247IGdldCB0aGUgZXJyb3IKICAgICAgICAgdmFyIGVycm9yID0gY3R4LmdldFNoYWRl
ckluZm9Mb2coc2hhZGVyKTsKQEAgLTUyOCw0ICs1MjgsMyBAQCBGcmFtZXJhdGUucHJvdG90eXBl
LnNuYXBzaG90ID0gZnVuY3Rpb24oCiAgICAgICAgIHRoaXMucmVuZGVyVGltZSA9IG5ld1RpbWU7
CiAgICAgfQogfQotCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dDNELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQzRC5oCShyZXZpc2lvbiA1MTI3OCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0M0QuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsNiArNzgsMzEwIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIGVudW0gU2hhZGVyVHlw
ZSB7IEZSQUdNRU5UX1NIQURFUiwgVkVSVEVYX1NIQURFUiB9OwogICAgIAorICAgICAgICBlbnVt
IFdlYkdMRW51bVR5cGUgeworICAgICAgICAgICAgREVQVEhfQlVGRkVSX0JJVCA9IDB4MDAwMDAx
MDAsCisgICAgICAgICAgICBTVEVOQ0lMX0JVRkZFUl9CSVQgPSAweDAwMDAwNDAwLAorICAgICAg
ICAgICAgQ09MT1JfQlVGRkVSX0JJVCA9IDB4MDAwMDQwMDAsCisgICAgICAgICAgICBQT0lOVFMg
PSAweDAwMDAsCisgICAgICAgICAgICBMSU5FUyA9IDB4MDAwMSwKKyAgICAgICAgICAgIExJTkVf
TE9PUCA9IDB4MDAwMiwKKyAgICAgICAgICAgIExJTkVfU1RSSVAgPSAweDAwMDMsCisgICAgICAg
ICAgICBUUklBTkdMRVMgPSAweDAwMDQsCisgICAgICAgICAgICBUUklBTkdMRV9TVFJJUCA9IDB4
MDAwNSwKKyAgICAgICAgICAgIFRSSUFOR0xFX0ZBTiA9IDB4MDAwNiwKKyAgICAgICAgICAgIFpF
Uk8gPSAwLAorICAgICAgICAgICAgT05FID0gMSwKKyAgICAgICAgICAgIFNSQ19DT0xPUiA9IDB4
MDMwMCwKKyAgICAgICAgICAgIE9ORV9NSU5VU19TUkNfQ09MT1IgPSAweDAzMDEsCisgICAgICAg
ICAgICBTUkNfQUxQSEEgPSAweDAzMDIsCisgICAgICAgICAgICBPTkVfTUlOVVNfU1JDX0FMUEhB
ID0gMHgwMzAzLAorICAgICAgICAgICAgRFNUX0FMUEhBID0gMHgwMzA0LAorICAgICAgICAgICAg
T05FX01JTlVTX0RTVF9BTFBIQSA9IDB4MDMwNSwKKyAgICAgICAgICAgIERTVF9DT0xPUiA9IDB4
MDMwNiwKKyAgICAgICAgICAgIE9ORV9NSU5VU19EU1RfQ09MT1IgPSAweDAzMDcsCisgICAgICAg
ICAgICBTUkNfQUxQSEFfU0FUVVJBVEUgPSAweDAzMDgsCisgICAgICAgICAgICBGVU5DX0FERCA9
IDB4ODAwNiwKKyAgICAgICAgICAgIEJMRU5EX0VRVUFUSU9OID0gMHg4MDA5LAorICAgICAgICAg
ICAgQkxFTkRfRVFVQVRJT05fUkdCID0gMHg4MDA5LAorICAgICAgICAgICAgQkxFTkRfRVFVQVRJ
T05fQUxQSEEgPSAweDg4M0QsCisgICAgICAgICAgICBGVU5DX1NVQlRSQUNUID0gMHg4MDBBLAor
ICAgICAgICAgICAgRlVOQ19SRVZFUlNFX1NVQlRSQUNUID0gMHg4MDBCLAorICAgICAgICAgICAg
QkxFTkRfRFNUX1JHQiA9IDB4ODBDOCwKKyAgICAgICAgICAgIEJMRU5EX1NSQ19SR0IgPSAweDgw
QzksCisgICAgICAgICAgICBCTEVORF9EU1RfQUxQSEEgPSAweDgwQ0EsCisgICAgICAgICAgICBC
TEVORF9TUkNfQUxQSEEgPSAweDgwQ0IsCisgICAgICAgICAgICBDT05TVEFOVF9DT0xPUiA9IDB4
ODAwMSwKKyAgICAgICAgICAgIE9ORV9NSU5VU19DT05TVEFOVF9DT0xPUiA9IDB4ODAwMiwKKyAg
ICAgICAgICAgIENPTlNUQU5UX0FMUEhBID0gMHg4MDAzLAorICAgICAgICAgICAgT05FX01JTlVT
X0NPTlNUQU5UX0FMUEhBID0gMHg4MDA0LAorICAgICAgICAgICAgQkxFTkRfQ09MT1IgPSAweDgw
MDUsCisgICAgICAgICAgICBBUlJBWV9CVUZGRVIgPSAweDg4OTIsCisgICAgICAgICAgICBFTEVN
RU5UX0FSUkFZX0JVRkZFUiA9IDB4ODg5MywKKyAgICAgICAgICAgIEFSUkFZX0JVRkZFUl9CSU5E
SU5HID0gMHg4ODk0LAorICAgICAgICAgICAgRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElORyA9
IDB4ODg5NSwKKyAgICAgICAgICAgIFNUUkVBTV9EUkFXID0gMHg4OEUwLAorICAgICAgICAgICAg
U1RBVElDX0RSQVcgPSAweDg4RTQsCisgICAgICAgICAgICBEWU5BTUlDX0RSQVcgPSAweDg4RTgs
CisgICAgICAgICAgICBCVUZGRVJfU0laRSA9IDB4ODc2NCwKKyAgICAgICAgICAgIEJVRkZFUl9V
U0FHRSA9IDB4ODc2NSwKKyAgICAgICAgICAgIENVUlJFTlRfVkVSVEVYX0FUVFJJQiA9IDB4ODYy
NiwKKyAgICAgICAgICAgIEZST05UID0gMHgwNDA0LAorICAgICAgICAgICAgQkFDSyA9IDB4MDQw
NSwKKyAgICAgICAgICAgIEZST05UX0FORF9CQUNLID0gMHgwNDA4LAorICAgICAgICAgICAgVEVY
VFVSRV8yRCA9IDB4MERFMSwKKyAgICAgICAgICAgIENVTExfRkFDRSA9IDB4MEI0NCwKKyAgICAg
ICAgICAgIEJMRU5EID0gMHgwQkUyLAorICAgICAgICAgICAgRElUSEVSID0gMHgwQkQwLAorICAg
ICAgICAgICAgU1RFTkNJTF9URVNUID0gMHgwQjkwLAorICAgICAgICAgICAgREVQVEhfVEVTVCA9
IDB4MEI3MSwKKyAgICAgICAgICAgIFNDSVNTT1JfVEVTVCA9IDB4MEMxMSwKKyAgICAgICAgICAg
IFBPTFlHT05fT0ZGU0VUX0ZJTEwgPSAweDgwMzcsCisgICAgICAgICAgICBTQU1QTEVfQUxQSEFf
VE9fQ09WRVJBR0UgPSAweDgwOUUsCisgICAgICAgICAgICBTQU1QTEVfQ09WRVJBR0UgPSAweDgw
QTAsCisgICAgICAgICAgICBOT19FUlJPUiA9IDAsCisgICAgICAgICAgICBJTlZBTElEX0VOVU0g
PSAweDA1MDAsCisgICAgICAgICAgICBJTlZBTElEX1ZBTFVFID0gMHgwNTAxLAorICAgICAgICAg
ICAgSU5WQUxJRF9PUEVSQVRJT04gPSAweDA1MDIsCisgICAgICAgICAgICBPVVRfT0ZfTUVNT1JZ
ID0gMHgwNTA1LAorICAgICAgICAgICAgQ1cgPSAweDA5MDAsCisgICAgICAgICAgICBDQ1cgPSAw
eDA5MDEsCisgICAgICAgICAgICBMSU5FX1dJRFRIID0gMHgwQjIxLAorICAgICAgICAgICAgQUxJ
QVNFRF9QT0lOVF9TSVpFX1JBTkdFID0gMHg4NDZELAorICAgICAgICAgICAgQUxJQVNFRF9MSU5F
X1dJRFRIX1JBTkdFID0gMHg4NDZFLAorICAgICAgICAgICAgQ1VMTF9GQUNFX01PREUgPSAweDBC
NDUsCisgICAgICAgICAgICBGUk9OVF9GQUNFID0gMHgwQjQ2LAorICAgICAgICAgICAgREVQVEhf
UkFOR0UgPSAweDBCNzAsCisgICAgICAgICAgICBERVBUSF9XUklURU1BU0sgPSAweDBCNzIsCisg
ICAgICAgICAgICBERVBUSF9DTEVBUl9WQUxVRSA9IDB4MEI3MywKKyAgICAgICAgICAgIERFUFRI
X0ZVTkMgPSAweDBCNzQsCisgICAgICAgICAgICBTVEVOQ0lMX0NMRUFSX1ZBTFVFID0gMHgwQjkx
LAorICAgICAgICAgICAgU1RFTkNJTF9GVU5DID0gMHgwQjkyLAorICAgICAgICAgICAgU1RFTkNJ
TF9GQUlMID0gMHgwQjk0LAorICAgICAgICAgICAgU1RFTkNJTF9QQVNTX0RFUFRIX0ZBSUwgPSAw
eDBCOTUsCisgICAgICAgICAgICBTVEVOQ0lMX1BBU1NfREVQVEhfUEFTUyA9IDB4MEI5NiwKKyAg
ICAgICAgICAgIFNURU5DSUxfUkVGID0gMHgwQjk3LAorICAgICAgICAgICAgU1RFTkNJTF9WQUxV
RV9NQVNLID0gMHgwQjkzLAorICAgICAgICAgICAgU1RFTkNJTF9XUklURU1BU0sgPSAweDBCOTgs
CisgICAgICAgICAgICBTVEVOQ0lMX0JBQ0tfRlVOQyA9IDB4ODgwMCwKKyAgICAgICAgICAgIFNU
RU5DSUxfQkFDS19GQUlMID0gMHg4ODAxLAorICAgICAgICAgICAgU1RFTkNJTF9CQUNLX1BBU1Nf
REVQVEhfRkFJTCA9IDB4ODgwMiwKKyAgICAgICAgICAgIFNURU5DSUxfQkFDS19QQVNTX0RFUFRI
X1BBU1MgPSAweDg4MDMsCisgICAgICAgICAgICBTVEVOQ0lMX0JBQ0tfUkVGID0gMHg4Q0EzLAor
ICAgICAgICAgICAgU1RFTkNJTF9CQUNLX1ZBTFVFX01BU0sgPSAweDhDQTQsCisgICAgICAgICAg
ICBTVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLID0gMHg4Q0E1LAorICAgICAgICAgICAgVklFV1BPUlQg
PSAweDBCQTIsCisgICAgICAgICAgICBTQ0lTU09SX0JPWCA9IDB4MEMxMCwKKyAgICAgICAgICAg
IENPTE9SX0NMRUFSX1ZBTFVFID0gMHgwQzIyLAorICAgICAgICAgICAgQ09MT1JfV1JJVEVNQVNL
ID0gMHgwQzIzLAorICAgICAgICAgICAgVU5QQUNLX0FMSUdOTUVOVCA9IDB4MENGNSwKKyAgICAg
ICAgICAgIFBBQ0tfQUxJR05NRU5UID0gMHgwRDA1LAorICAgICAgICAgICAgTUFYX1RFWFRVUkVf
U0laRSA9IDB4MEQzMywKKyAgICAgICAgICAgIE1BWF9WSUVXUE9SVF9ESU1TID0gMHgwRDNBLAor
ICAgICAgICAgICAgU1VCUElYRUxfQklUUyA9IDB4MEQ1MCwKKyAgICAgICAgICAgIFJFRF9CSVRT
ID0gMHgwRDUyLAorICAgICAgICAgICAgR1JFRU5fQklUUyA9IDB4MEQ1MywKKyAgICAgICAgICAg
IEJMVUVfQklUUyA9IDB4MEQ1NCwKKyAgICAgICAgICAgIEFMUEhBX0JJVFMgPSAweDBENTUsCisg
ICAgICAgICAgICBERVBUSF9CSVRTID0gMHgwRDU2LAorICAgICAgICAgICAgU1RFTkNJTF9CSVRT
ID0gMHgwRDU3LAorICAgICAgICAgICAgUE9MWUdPTl9PRkZTRVRfVU5JVFMgPSAweDJBMDAsCisg
ICAgICAgICAgICBQT0xZR09OX09GRlNFVF9GQUNUT1IgPSAweDgwMzgsCisgICAgICAgICAgICBU
RVhUVVJFX0JJTkRJTkdfMkQgPSAweDgwNjksCisgICAgICAgICAgICBTQU1QTEVfQlVGRkVSUyA9
IDB4ODBBOCwKKyAgICAgICAgICAgIFNBTVBMRVMgPSAweDgwQTksCisgICAgICAgICAgICBTQU1Q
TEVfQ09WRVJBR0VfVkFMVUUgPSAweDgwQUEsCisgICAgICAgICAgICBTQU1QTEVfQ09WRVJBR0Vf
SU5WRVJUID0gMHg4MEFCLAorICAgICAgICAgICAgTlVNX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JN
QVRTID0gMHg4NkEyLAorICAgICAgICAgICAgQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFMgPSAw
eDg2QTMsCisgICAgICAgICAgICBET05UX0NBUkUgPSAweDExMDAsCisgICAgICAgICAgICBGQVNU
RVNUID0gMHgxMTAxLAorICAgICAgICAgICAgTklDRVNUID0gMHgxMTAyLAorICAgICAgICAgICAg
R0VORVJBVEVfTUlQTUFQX0hJTlQgPSAweDgxOTIsCisgICAgICAgICAgICBCWVRFID0gMHgxNDAw
LAorICAgICAgICAgICAgVU5TSUdORURfQllURSA9IDB4MTQwMSwKKyAgICAgICAgICAgIFNIT1JU
ID0gMHgxNDAyLAorICAgICAgICAgICAgVU5TSUdORURfU0hPUlQgPSAweDE0MDMsCisgICAgICAg
ICAgICBJTlQgPSAweDE0MDQsCisgICAgICAgICAgICBVTlNJR05FRF9JTlQgPSAweDE0MDUsCisg
ICAgICAgICAgICBGTE9BVCA9IDB4MTQwNiwKKyAgICAgICAgICAgIEZJWEVEID0gMHgxNDBDLAor
ICAgICAgICAgICAgREVQVEhfQ09NUE9ORU5UID0gMHgxOTAyLAorICAgICAgICAgICAgQUxQSEEg
PSAweDE5MDYsCisgICAgICAgICAgICBSR0IgPSAweDE5MDcsCisgICAgICAgICAgICBSR0JBID0g
MHgxOTA4LAorICAgICAgICAgICAgTFVNSU5BTkNFID0gMHgxOTA5LAorICAgICAgICAgICAgTFVN
SU5BTkNFX0FMUEhBID0gMHgxOTBBLAorICAgICAgICAgICAgVU5TSUdORURfU0hPUlRfNF80XzRf
NCA9IDB4ODAzMywKKyAgICAgICAgICAgIFVOU0lHTkVEX1NIT1JUXzVfNV81XzEgPSAweDgwMzQs
CisgICAgICAgICAgICBVTlNJR05FRF9TSE9SVF81XzZfNSA9IDB4ODM2MywKKyAgICAgICAgICAg
IC8vIEZJWE1FOiB1bmNvbW1lbnQgd2hlbiBTaGFkZXJUeXBlIGVudW0gaXMgcmVtb3ZlZAorICAg
ICAgICAgICAgLy8gRlJBR01FTlRfU0hBREVSID0gMHg4QjMwLAorICAgICAgICAgICAgLy8gVkVS
VEVYX1NIQURFUiA9IDB4OEIzMSwKKyAgICAgICAgICAgIE1BWF9WRVJURVhfQVRUUklCUyA9IDB4
ODg2OSwKKyAgICAgICAgICAgIE1BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTID0gMHg4REZCLAor
ICAgICAgICAgICAgTUFYX1ZBUllJTkdfVkVDVE9SUyA9IDB4OERGQywKKyAgICAgICAgICAgIE1B
WF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTID0gMHg4QjRELAorICAgICAgICAgICAgTUFY
X1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTID0gMHg4QjRDLAorICAgICAgICAgICAgTUFYX1RF
WFRVUkVfSU1BR0VfVU5JVFMgPSAweDg4NzIsCisgICAgICAgICAgICBNQVhfRlJBR01FTlRfVU5J
Rk9STV9WRUNUT1JTID0gMHg4REZELAorICAgICAgICAgICAgU0hBREVSX1RZUEUgPSAweDhCNEYs
CisgICAgICAgICAgICBERUxFVEVfU1RBVFVTID0gMHg4QjgwLAorICAgICAgICAgICAgTElOS19T
VEFUVVMgPSAweDhCODIsCisgICAgICAgICAgICBWQUxJREFURV9TVEFUVVMgPSAweDhCODMsCisg
ICAgICAgICAgICBBVFRBQ0hFRF9TSEFERVJTID0gMHg4Qjg1LAorICAgICAgICAgICAgQUNUSVZF
X1VOSUZPUk1TID0gMHg4Qjg2LAorICAgICAgICAgICAgQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdU
SCA9IDB4OEI4NywKKyAgICAgICAgICAgIEFDVElWRV9BVFRSSUJVVEVTID0gMHg4Qjg5LAorICAg
ICAgICAgICAgQUNUSVZFX0FUVFJJQlVURV9NQVhfTEVOR1RIID0gMHg4QjhBLAorICAgICAgICAg
ICAgU0hBRElOR19MQU5HVUFHRV9WRVJTSU9OID0gMHg4QjhDLAorICAgICAgICAgICAgQ1VSUkVO
VF9QUk9HUkFNID0gMHg4QjhELAorICAgICAgICAgICAgTkVWRVIgPSAweDAyMDAsCisgICAgICAg
ICAgICBMRVNTID0gMHgwMjAxLAorICAgICAgICAgICAgRVFVQUwgPSAweDAyMDIsCisgICAgICAg
ICAgICBMRVFVQUwgPSAweDAyMDMsCisgICAgICAgICAgICBHUkVBVEVSID0gMHgwMjA0LAorICAg
ICAgICAgICAgTk9URVFVQUwgPSAweDAyMDUsCisgICAgICAgICAgICBHRVFVQUwgPSAweDAyMDYs
CisgICAgICAgICAgICBBTFdBWVMgPSAweDAyMDcsCisgICAgICAgICAgICBLRUVQID0gMHgxRTAw
LAorICAgICAgICAgICAgUkVQTEFDRSA9IDB4MUUwMSwKKyAgICAgICAgICAgIElOQ1IgPSAweDFF
MDIsCisgICAgICAgICAgICBERUNSID0gMHgxRTAzLAorICAgICAgICAgICAgSU5WRVJUID0gMHgx
NTBBLAorICAgICAgICAgICAgSU5DUl9XUkFQID0gMHg4NTA3LAorICAgICAgICAgICAgREVDUl9X
UkFQID0gMHg4NTA4LAorICAgICAgICAgICAgVkVORE9SID0gMHgxRjAwLAorICAgICAgICAgICAg
UkVOREVSRVIgPSAweDFGMDEsCisgICAgICAgICAgICBWRVJTSU9OID0gMHgxRjAyLAorICAgICAg
ICAgICAgRVhURU5TSU9OUyA9IDB4MUYwMywKKyAgICAgICAgICAgIE5FQVJFU1QgPSAweDI2MDAs
CisgICAgICAgICAgICBMSU5FQVIgPSAweDI2MDEsCisgICAgICAgICAgICBORUFSRVNUX01JUE1B
UF9ORUFSRVNUID0gMHgyNzAwLAorICAgICAgICAgICAgTElORUFSX01JUE1BUF9ORUFSRVNUID0g
MHgyNzAxLAorICAgICAgICAgICAgTkVBUkVTVF9NSVBNQVBfTElORUFSID0gMHgyNzAyLAorICAg
ICAgICAgICAgTElORUFSX01JUE1BUF9MSU5FQVIgPSAweDI3MDMsCisgICAgICAgICAgICBURVhU
VVJFX01BR19GSUxURVIgPSAweDI4MDAsCisgICAgICAgICAgICBURVhUVVJFX01JTl9GSUxURVIg
PSAweDI4MDEsCisgICAgICAgICAgICBURVhUVVJFX1dSQVBfUyA9IDB4MjgwMiwKKyAgICAgICAg
ICAgIFRFWFRVUkVfV1JBUF9UID0gMHgyODAzLAorICAgICAgICAgICAgVEVYVFVSRSA9IDB4MTcw
MiwKKyAgICAgICAgICAgIFRFWFRVUkVfQ1VCRV9NQVAgPSAweDg1MTMsCisgICAgICAgICAgICBU
RVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVAgPSAweDg1MTQsCisgICAgICAgICAgICBURVhUVVJFX0NV
QkVfTUFQX1BPU0lUSVZFX1ggPSAweDg1MTUsCisgICAgICAgICAgICBURVhUVVJFX0NVQkVfTUFQ
X05FR0FUSVZFX1ggPSAweDg1MTYsCisgICAgICAgICAgICBURVhUVVJFX0NVQkVfTUFQX1BPU0lU
SVZFX1kgPSAweDg1MTcsCisgICAgICAgICAgICBURVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1kg
PSAweDg1MTgsCisgICAgICAgICAgICBURVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ogPSAweDg1
MTksCisgICAgICAgICAgICBURVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1ogPSAweDg1MUEsCisg
ICAgICAgICAgICBNQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFID0gMHg4NTFDLAorICAgICAgICAg
ICAgVEVYVFVSRTAgPSAweDg0QzAsCisgICAgICAgICAgICBURVhUVVJFMSA9IDB4ODRDMSwKKyAg
ICAgICAgICAgIFRFWFRVUkUyID0gMHg4NEMyLAorICAgICAgICAgICAgVEVYVFVSRTMgPSAweDg0
QzMsCisgICAgICAgICAgICBURVhUVVJFNCA9IDB4ODRDNCwKKyAgICAgICAgICAgIFRFWFRVUkU1
ID0gMHg4NEM1LAorICAgICAgICAgICAgVEVYVFVSRTYgPSAweDg0QzYsCisgICAgICAgICAgICBU
RVhUVVJFNyA9IDB4ODRDNywKKyAgICAgICAgICAgIFRFWFRVUkU4ID0gMHg4NEM4LAorICAgICAg
ICAgICAgVEVYVFVSRTkgPSAweDg0QzksCisgICAgICAgICAgICBURVhUVVJFMTAgPSAweDg0Q0Es
CisgICAgICAgICAgICBURVhUVVJFMTEgPSAweDg0Q0IsCisgICAgICAgICAgICBURVhUVVJFMTIg
PSAweDg0Q0MsCisgICAgICAgICAgICBURVhUVVJFMTMgPSAweDg0Q0QsCisgICAgICAgICAgICBU
RVhUVVJFMTQgPSAweDg0Q0UsCisgICAgICAgICAgICBURVhUVVJFMTUgPSAweDg0Q0YsCisgICAg
ICAgICAgICBURVhUVVJFMTYgPSAweDg0RDAsCisgICAgICAgICAgICBURVhUVVJFMTcgPSAweDg0
RDEsCisgICAgICAgICAgICBURVhUVVJFMTggPSAweDg0RDIsCisgICAgICAgICAgICBURVhUVVJF
MTkgPSAweDg0RDMsCisgICAgICAgICAgICBURVhUVVJFMjAgPSAweDg0RDQsCisgICAgICAgICAg
ICBURVhUVVJFMjEgPSAweDg0RDUsCisgICAgICAgICAgICBURVhUVVJFMjIgPSAweDg0RDYsCisg
ICAgICAgICAgICBURVhUVVJFMjMgPSAweDg0RDcsCisgICAgICAgICAgICBURVhUVVJFMjQgPSAw
eDg0RDgsCisgICAgICAgICAgICBURVhUVVJFMjUgPSAweDg0RDksCisgICAgICAgICAgICBURVhU
VVJFMjYgPSAweDg0REEsCisgICAgICAgICAgICBURVhUVVJFMjcgPSAweDg0REIsCisgICAgICAg
ICAgICBURVhUVVJFMjggPSAweDg0REMsCisgICAgICAgICAgICBURVhUVVJFMjkgPSAweDg0REQs
CisgICAgICAgICAgICBURVhUVVJFMzAgPSAweDg0REUsCisgICAgICAgICAgICBURVhUVVJFMzEg
PSAweDg0REYsCisgICAgICAgICAgICBBQ1RJVkVfVEVYVFVSRSA9IDB4ODRFMCwKKyAgICAgICAg
ICAgIFJFUEVBVCA9IDB4MjkwMSwKKyAgICAgICAgICAgIENMQU1QX1RPX0VER0UgPSAweDgxMkYs
CisgICAgICAgICAgICBNSVJST1JFRF9SRVBFQVQgPSAweDgzNzAsCisgICAgICAgICAgICBGTE9B
VF9WRUMyID0gMHg4QjUwLAorICAgICAgICAgICAgRkxPQVRfVkVDMyA9IDB4OEI1MSwKKyAgICAg
ICAgICAgIEZMT0FUX1ZFQzQgPSAweDhCNTIsCisgICAgICAgICAgICBJTlRfVkVDMiA9IDB4OEI1
MywKKyAgICAgICAgICAgIElOVF9WRUMzID0gMHg4QjU0LAorICAgICAgICAgICAgSU5UX1ZFQzQg
PSAweDhCNTUsCisgICAgICAgICAgICBCT09MID0gMHg4QjU2LAorICAgICAgICAgICAgQk9PTF9W
RUMyID0gMHg4QjU3LAorICAgICAgICAgICAgQk9PTF9WRUMzID0gMHg4QjU4LAorICAgICAgICAg
ICAgQk9PTF9WRUM0ID0gMHg4QjU5LAorICAgICAgICAgICAgRkxPQVRfTUFUMiA9IDB4OEI1QSwK
KyAgICAgICAgICAgIEZMT0FUX01BVDMgPSAweDhCNUIsCisgICAgICAgICAgICBGTE9BVF9NQVQ0
ID0gMHg4QjVDLAorICAgICAgICAgICAgU0FNUExFUl8yRCA9IDB4OEI1RSwKKyAgICAgICAgICAg
IFNBTVBMRVJfQ1VCRSA9IDB4OEI2MCwKKyAgICAgICAgICAgIFZFUlRFWF9BVFRSSUJfQVJSQVlf
RU5BQkxFRCA9IDB4ODYyMiwKKyAgICAgICAgICAgIFZFUlRFWF9BVFRSSUJfQVJSQVlfU0laRSA9
IDB4ODYyMywKKyAgICAgICAgICAgIFZFUlRFWF9BVFRSSUJfQVJSQVlfU1RSSURFID0gMHg4NjI0
LAorICAgICAgICAgICAgVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFID0gMHg4NjI1LAorICAgICAg
ICAgICAgVkVSVEVYX0FUVFJJQl9BUlJBWV9OT1JNQUxJWkVEID0gMHg4ODZBLAorICAgICAgICAg
ICAgVkVSVEVYX0FUVFJJQl9BUlJBWV9QT0lOVEVSID0gMHg4NjQ1LAorICAgICAgICAgICAgVkVS
VEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElORyA9IDB4ODg5RiwKKyAgICAgICAgICAgIElN
UExFTUVOVEFUSU9OX0NPTE9SX1JFQURfVFlQRSA9IDB4OEI5QSwKKyAgICAgICAgICAgIElNUExF
TUVOVEFUSU9OX0NPTE9SX1JFQURfRk9STUFUID0gMHg4QjlCLAorICAgICAgICAgICAgQ09NUElM
RV9TVEFUVVMgPSAweDhCODEsCisgICAgICAgICAgICBJTkZPX0xPR19MRU5HVEggPSAweDhCODQs
CisgICAgICAgICAgICBTSEFERVJfU09VUkNFX0xFTkdUSCA9IDB4OEI4OCwKKyAgICAgICAgICAg
IFNIQURFUl9DT01QSUxFUiA9IDB4OERGQSwKKyAgICAgICAgICAgIFNIQURFUl9CSU5BUllfRk9S
TUFUUyA9IDB4OERGOCwKKyAgICAgICAgICAgIE5VTV9TSEFERVJfQklOQVJZX0ZPUk1BVFMgPSAw
eDhERjksCisgICAgICAgICAgICBMT1dfRkxPQVQgPSAweDhERjAsCisgICAgICAgICAgICBNRURJ
VU1fRkxPQVQgPSAweDhERjEsCisgICAgICAgICAgICBISUdIX0ZMT0FUID0gMHg4REYyLAorICAg
ICAgICAgICAgTE9XX0lOVCA9IDB4OERGMywKKyAgICAgICAgICAgIE1FRElVTV9JTlQgPSAweDhE
RjQsCisgICAgICAgICAgICBISUdIX0lOVCA9IDB4OERGNSwKKyAgICAgICAgICAgIEZSQU1FQlVG
RkVSID0gMHg4RDQwLAorICAgICAgICAgICAgUkVOREVSQlVGRkVSID0gMHg4RDQxLAorICAgICAg
ICAgICAgUkdCQTQgPSAweDgwNTYsCisgICAgICAgICAgICBSR0I1X0ExID0gMHg4MDU3LAorICAg
ICAgICAgICAgUkdCNTY1ID0gMHg4RDYyLAorICAgICAgICAgICAgREVQVEhfQ09NUE9ORU5UMTYg
PSAweDgxQTUsCisgICAgICAgICAgICBTVEVOQ0lMX0lOREVYID0gMHgxOTAxLAorICAgICAgICAg
ICAgU1RFTkNJTF9JTkRFWDggPSAweDhENDgsCisgICAgICAgICAgICBSRU5ERVJCVUZGRVJfV0lE
VEggPSAweDhENDIsCisgICAgICAgICAgICBSRU5ERVJCVUZGRVJfSEVJR0hUID0gMHg4RDQzLAor
ICAgICAgICAgICAgUkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVCA9IDB4OEQ0NCwKKyAgICAg
ICAgICAgIFJFTkRFUkJVRkZFUl9SRURfU0laRSA9IDB4OEQ1MCwKKyAgICAgICAgICAgIFJFTkRF
UkJVRkZFUl9HUkVFTl9TSVpFID0gMHg4RDUxLAorICAgICAgICAgICAgUkVOREVSQlVGRkVSX0JM
VUVfU0laRSA9IDB4OEQ1MiwKKyAgICAgICAgICAgIFJFTkRFUkJVRkZFUl9BTFBIQV9TSVpFID0g
MHg4RDUzLAorICAgICAgICAgICAgUkVOREVSQlVGRkVSX0RFUFRIX1NJWkUgPSAweDhENTQsCisg
ICAgICAgICAgICBSRU5ERVJCVUZGRVJfU1RFTkNJTF9TSVpFID0gMHg4RDU1LAorICAgICAgICAg
ICAgRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRSA9IDB4OENEMCwKKyAgICAgICAg
ICAgIEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUUgPSAweDhDRDEsCisgICAgICAg
ICAgICBGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEVWRUwgPSAweDhDRDIsCisgICAg
ICAgICAgICBGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfQ1VCRV9NQVBfRkFDRSA9IDB4
OENEMywKKyAgICAgICAgICAgIENPTE9SX0FUVEFDSE1FTlQwID0gMHg4Q0UwLAorICAgICAgICAg
ICAgREVQVEhfQVRUQUNITUVOVCA9IDB4OEQwMCwKKyAgICAgICAgICAgIFNURU5DSUxfQVRUQUNI
TUVOVCA9IDB4OEQyMCwKKyAgICAgICAgICAgIE5PTkUgPSAwLAorICAgICAgICAgICAgRlJBTUVC
VUZGRVJfQ09NUExFVEUgPSAweDhDRDUsCisgICAgICAgICAgICBGUkFNRUJVRkZFUl9JTkNPTVBM
RVRFX0FUVEFDSE1FTlQgPSAweDhDRDYsCisgICAgICAgICAgICBGUkFNRUJVRkZFUl9JTkNPTVBM
RVRFX01JU1NJTkdfQVRUQUNITUVOVCA9IDB4OENENywKKyAgICAgICAgICAgIEZSQU1FQlVGRkVS
X0lOQ09NUExFVEVfRElNRU5TSU9OUyA9IDB4OENEOSwKKyAgICAgICAgICAgIEZSQU1FQlVGRkVS
X1VOU1VQUE9SVEVEID0gMHg4Q0RELAorICAgICAgICAgICAgRlJBTUVCVUZGRVJfQklORElORyA9
IDB4OENBNiwKKyAgICAgICAgICAgIFJFTkRFUkJVRkZFUl9CSU5ESU5HID0gMHg4Q0E3LAorICAg
ICAgICAgICAgTUFYX1JFTkRFUkJVRkZFUl9TSVpFID0gMHg4NEU4LAorICAgICAgICAgICAgSU5W
QUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04gPSAweDA1MDYKKyAgICAgICAgfTsKKwogICAgICAg
ICBzdGF0aWMgUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRlKCk7CiAgICAgICAg
IHZpcnR1YWwgfkdyYXBoaWNzQ29udGV4dDNEKCk7CiAKQEAgLTE1MiwyNiArNDU2LDI1IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBpbnQgIGdldEF0dHJpYkxvY2F0aW9uKFdlYkdM
UHJvZ3JhbSosIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKLSAgICAgICAgYm9vbCBnZXRCb29sZWFu
KHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBQYXNzUmVmUHRyPFdlYkdMVW5zaWduZWRC
eXRlQXJyYXk+IGdldEJvb2xlYW52KHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBpbnQg
Z2V0QnVmZmVyUGFyYW1ldGVyaSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBw
bmFtZSk7Ci0gICAgICAgIFBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gZ2V0QnVmZmVyUGFyYW1l
dGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOworICAgICAg
ICB2b2lkIGdldEJvb2xlYW52KHVuc2lnbmVkIGxvbmcgcG5hbWUsIHVuc2lnbmVkIGNoYXIqIHZh
bHVlKTsKKworICAgICAgICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcg
dGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKTsKIAogICAgICAgICB1bnNp
Z25lZCBsb25nIGdldEVycm9yKCk7CiAKLSAgICAgICAgZmxvYXQgZ2V0RmxvYXQodW5zaWduZWQg
bG9uZyBwbmFtZSk7Ci0gICAgICAgIFBhc3NSZWZQdHI8V2ViR0xGbG9hdEFycmF5PiBnZXRGbG9h
dHYodW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIGludCBnZXRGcmFtZWJ1ZmZlckF0dGFj
aG1lbnRQYXJhbWV0ZXJpKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGF0dGFj
aG1lbnQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBQYXNzUmVmUHRyPFdlYkdMSW50
QXJyYXk+IGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcg
dGFyZ2V0LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwot
ICAgICAgICBpbnQgZ2V0SW50ZWdlcih1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgUGFz
c1JlZlB0cjxXZWJHTEludEFycmF5PiBnZXRJbnRlZ2Vydih1bnNpZ25lZCBsb25nIHBuYW1lKTsK
LSAgICAgICAgaW50IGdldFByb2dyYW1pKFdlYkdMUHJvZ3JhbSosIHVuc2lnbmVkIGxvbmcgcG5h
bWUpOwotICAgICAgICBQYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IGdldFByb2dyYW1pdihXZWJH
TFByb2dyYW0qLCB1bnNpZ25lZCBsb25nIHBuYW1lKTsKKyAgICAgICAgdm9pZCBnZXRGbG9hdHYo
dW5zaWduZWQgbG9uZyBwbmFtZSwgZmxvYXQqIHZhbHVlKTsKKworICAgICAgICB2b2lkIGdldEZy
YW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNp
Z25lZCBsb25nIGF0dGFjaG1lbnQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIGludCogdmFsdWUpOwor
CisgICAgICAgIHZvaWQgZ2V0SW50ZWdlcnYodW5zaWduZWQgbG9uZyBwbmFtZSwgaW50KiB2YWx1
ZSk7CisKKyAgICAgICAgdm9pZCBnZXRQcm9ncmFtaXYoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCB1
bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKTsKKwogICAgICAgICBTdHJpbmcgZ2V0UHJv
Z3JhbUluZm9Mb2coV2ViR0xQcm9ncmFtKik7Ci0gICAgICAgIGludCBnZXRSZW5kZXJidWZmZXJQ
YXJhbWV0ZXJpKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAg
ICAgICAgUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJp
dih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIGlu
dCBnZXRTaGFkZXJpKFdlYkdMU2hhZGVyKiwgdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAg
IFBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gZ2V0U2hhZGVyaXYoV2ViR0xTaGFkZXIqLCB1bnNp
Z25lZCBsb25nIHBuYW1lKTsKKworICAgICAgICB2b2lkIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRl
cml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVl
KTsKKworICAgICAgICB2b2lkIGdldFNoYWRlcml2KFdlYkdMU2hhZGVyKiwgdW5zaWduZWQgbG9u
ZyBwbmFtZSwgaW50KiB2YWx1ZSk7CiAKICAgICAgICAgU3RyaW5nIGdldFNoYWRlckluZm9Mb2co
V2ViR0xTaGFkZXIqKTsKIApAQCAtMTgwLDI0ICs0ODMsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAgICAgICAgIFN0cmluZyBnZXRTaGFkZXJTb3VyY2UoV2ViR0xTaGFkZXIqKTsKICAgICAg
ICAgU3RyaW5nIGdldFN0cmluZyh1bnNpZ25lZCBsb25nIG5hbWUpOwotICAgICAgICAKLSAgICAg
ICAgZmxvYXQgZ2V0VGV4UGFyYW1ldGVyZih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQg
bG9uZyBwbmFtZSk7Ci0gICAgICAgIFBhc3NSZWZQdHI8V2ViR0xGbG9hdEFycmF5PiBnZXRUZXhQ
YXJhbWV0ZXJmdih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0g
ICAgICAgIGludCBnZXRUZXhQYXJhbWV0ZXJpKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25l
ZCBsb25nIHBuYW1lKTsKLSAgICAgICAgUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBnZXRUZXhQ
YXJhbWV0ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0K
LSAgICAgICAgZmxvYXQgZ2V0VW5pZm9ybWYoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBsb25nIGxv
Y2F0aW9uKTsKLSAgICAgICAgUGFzc1JlZlB0cjxXZWJHTEZsb2F0QXJyYXk+IGdldFVuaWZvcm1m
dihXZWJHTFByb2dyYW0qIHByb2dyYW0sIGxvbmcgbG9jYXRpb24pOwotICAgICAgICBpbnQgZ2V0
VW5pZm9ybWkoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uKTsKLSAgICAgICAg
UGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBnZXRVbmlmb3JtaXYoV2ViR0xQcm9ncmFtKiBwcm9n
cmFtLCBsb25nIGxvY2F0aW9uKTsKKworICAgICAgICB2b2lkIGdldFRleFBhcmFtZXRlcmZ2KHVu
c2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBmbG9hdCogdmFsdWUpOwor
ICAgICAgICB2b2lkIGdldFRleFBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNp
Z25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKTsKKworICAgICAgICB2b2lkIGdldFVuaWZvcm1m
dihXZWJHTFByb2dyYW0qIHByb2dyYW0sIGxvbmcgbG9jYXRpb24sIGZsb2F0KiB2YWx1ZSk7Cisg
ICAgICAgIHZvaWQgZ2V0VW5pZm9ybWl2KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBsb2Nh
dGlvbiwgaW50KiB2YWx1ZSk7CiAKICAgICAgICAgbG9uZyBnZXRVbmlmb3JtTG9jYXRpb24oV2Vi
R0xQcm9ncmFtKiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAotICAgICAgICBmbG9hdCBnZXRWZXJ0
ZXhBdHRyaWJmKHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAg
ICAgICBQYXNzUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gZ2V0VmVydGV4QXR0cmliZnYodW5zaWdu
ZWQgbG9uZyBpbmRleCwgdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIGludCBnZXRWZXJ0
ZXhBdHRyaWJpKHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAg
ICAgICBQYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IGdldFZlcnRleEF0dHJpYml2KHVuc2lnbmVk
IGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICAKKyAgICAgICAgdm9p
ZCBnZXRWZXJ0ZXhBdHRyaWJmdih1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBu
YW1lLCBmbG9hdCogdmFsdWUpOworICAgICAgICB2b2lkIGdldFZlcnRleEF0dHJpYml2KHVuc2ln
bmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIGludCogdmFsdWUpOworCiAgICAg
ICAgIGxvbmcgZ2V0VmVydGV4QXR0cmliT2Zmc2V0KHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVuc2ln
bmVkIGxvbmcgcG5hbWUpOwogCiAgICAgICAgIHZvaWQgaGludCh1bnNpZ25lZCBsb25nIHRhcmdl
dCwgdW5zaWduZWQgbG9uZyBtb2RlKTsKQEAgLTMzNyw0ICs2MzQsMyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBHcmFwaGljc0NvbnRl
eHQzRF9oCi0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29u
dGV4dDNETWFjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9HcmFwaGljc0NvbnRleHQzRE1hYy5jcHAJKHJldmlzaW9uIDUxMjc4KQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNzcsNyArMjc3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmluZEZyYW1l
YnVmZmVyKAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmluZFJlbmRlcmJ1ZmZlcih1bnNpZ25l
ZCBsb25nIHRhcmdldCwgV2ViR0xSZW5kZXJidWZmZXIqIHJlbmRlcmJ1ZmZlcikKIHsKICAgICBl
bnN1cmVDb250ZXh0KG1fY29udGV4dE9iaik7Ci0gICAgOjpnbEJpbmRCdWZmZXIodGFyZ2V0LCBy
ZW5kZXJidWZmZXIgPyAoR0x1aW50KSByZW5kZXJidWZmZXItPm9iamVjdCgpIDogMCk7CisgICAg
OjpnbEJpbmRSZW5kZXJidWZmZXJFWFQodGFyZ2V0LCByZW5kZXJidWZmZXIgPyAoR0x1aW50KSBy
ZW5kZXJidWZmZXItPm9iamVjdCgpIDogMCk7CiB9CiAKIApAQCAtOTUyLDMyMSArOTUyLDQwIEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZpZXdwb3J0KGxvbmcgeCwKICAgICA6OmdsVmlld3Bv
cnQoc3RhdGljX2Nhc3Q8R0xpbnQ+KHgpLCBzdGF0aWNfY2FzdDxHTGludD4oeSksIHN0YXRpY19j
YXN0PEdMc2l6ZWk+KHdpZHRoKSwgc3RhdGljX2Nhc3Q8R0xzaXplaT4oaGVpZ2h0KSk7CiB9CiAK
LXN0YXRpYyBpbnQgc2l6ZUZvckdldFBhcmFtKHVuc2lnbmVkIGxvbmcgcG5hbWUpCit2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpnZXRCb29sZWFudih1bnNpZ25lZCBsb25nIHBuYW1lLCB1bnNpZ25l
ZCBjaGFyKiB2YWx1ZSkKIHsKLSAgICBzd2l0Y2gocG5hbWUpIHsKLSAgICAgICAgY2FzZSBHTF9B
Q1RJVkVfVEVYVFVSRTogICAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBH
TF9BTElBU0VEX0xJTkVfV0lEVEhfUkFOR0U6ICAgICAgICByZXR1cm4gMjsKLSAgICAgICAgY2Fz
ZSBHTF9BTElBU0VEX1BPSU5UX1NJWkVfUkFOR0U6ICAgICAgICByZXR1cm4gMjsKLSAgICAgICAg
Y2FzZSBHTF9BTFBIQV9CSVRTOiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAg
ICAgY2FzZSBHTF9BUlJBWV9CVUZGRVJfQklORElORzogICAgICAgICAgICByZXR1cm4gMTsgLy8g
KCogYWN0dWFsbHkgYSBXZWJHTEJ1ZmZlciopCi0gICAgICAgIGNhc2UgR0xfQkxFTkQ6ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfQkxFTkRfQ09M
T1I6ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDQ7Ci0gICAgICAgIGNhc2UgR0xfQkxFTkRf
RFNUX0FMUEhBOiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfQkxF
TkRfRFNUX1JHQjogICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xf
QkxFTkRfRVFVQVRJT05fQUxQSEE6ICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2Ug
R0xfQkxFTkRfRVFVQVRJT05fUkdCOiAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNh
c2UgR0xfQkxFTkRfU1JDX0FMUEhBOiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAg
IGNhc2UgR0xfQkxFTkRfU1JDX1JHQjogICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAg
ICAgIGNhc2UgR0xfQkxVRV9CSVRTOiAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0g
ICAgICAgIGNhc2UgR0xfQ09MT1JfQ0xFQVJfVkFMVUU6ICAgICAgICAgICAgICAgcmV0dXJuIDQ7
Ci0gICAgICAgIGNhc2UgR0xfQ09MT1JfV1JJVEVNQVNLOiAgICAgICAgICAgICAgICAgcmV0dXJu
IDQ7Ci0gICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFM6ICAgICAgcmV0
dXJuIEdMX05VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUzsKLSAgICAgICAgY2FzZSBHTF9D
VUxMX0ZBQ0U6ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBH
TF9DVUxMX0ZBQ0VfTU9ERTogICAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2Fz
ZSBHTF9DVVJSRU5UX1BST0dSQU06ICAgICAgICAgICAgICAgICByZXR1cm4gMTsgLy8gKCogYWN0
dWFsbHkgYSBXZWJHTFByb2dyYW0qKQotICAgICAgICBjYXNlIEdMX0RFUFRIX0JJVFM6ICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX0RFUFRIX0NMRUFSX1ZB
TFVFOiAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX0RFUFRIX0ZVTkM6
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX0RFUFRIX1JB
TkdFOiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAyOwotICAgICAgICBjYXNlIEdMX0RFUFRI
X1RFU1Q6ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX0RF
UFRIX1dSSVRFTUFTSzogICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdM
X0RJVEhFUjogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNl
IEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkc6ICAgIHJldHVybiAxOyAvLyAoKiBhY3R1
YWxseSBhIFdlYkdMQnVmZmVyKikKLSAgICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9CSU5ESU5H
X0VYVDogICAgICAgICByZXR1cm4gMTsgLy8gKCogYWN0dWFsbHkgYSBXZWJHTEZyYW1lYnVmZmVy
KikKLSAgICAgICAgY2FzZSBHTF9GUk9OVF9GQUNFOiAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gMTsKLSAgICAgICAgY2FzZSBHTF9HRU5FUkFURV9NSVBNQVBfSElOVDogICAgICAgICAgICBy
ZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9HUkVFTl9CSVRTOiAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gMTsKLSAgICAgICAgICAgIC8vY2FzZSBHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9S
RUFEX0ZPUk1BVDpyZXR1cm4gMTsKLSAgICAgICAgICAgIC8vY2FzZSBHTF9JTVBMRU1FTlRBVElP
Tl9DT0xPUl9SRUFEX1RZUEU6ICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9MSU5FX1dJRFRI
OiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9NQVhfQ09N
QklORURfVEVYVFVSRV9JTUFHRV9VTklUUzpyZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9NQVhf
Q1VCRV9NQVBfVEVYVFVSRV9TSVpFOiAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgIC8vY2Fz
ZSBHTF9NQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTOiAgICByZXR1cm4gMTsKLSAgICAgICAg
Y2FzZSBHTF9NQVhfUkVOREVSQlVGRkVSX1NJWkVfRVhUOiAgICAgICByZXR1cm4gMTsKLSAgICAg
ICAgY2FzZSBHTF9NQVhfVEVYVFVSRV9JTUFHRV9VTklUUzogICAgICAgICByZXR1cm4gMTsKLSAg
ICAgICAgY2FzZSBHTF9NQVhfVEVYVFVSRV9TSVpFOiAgICAgICAgICAgICAgICByZXR1cm4gMTsK
LSAgICAgICAgICAgIC8vY2FzZSBHTF9NQVhfVkFSWUlOR19WRUNUT1JTOiAgICAgICAgICAgICBy
ZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9NQVhfVkVSVEVYX0FUVFJJQlM6ICAgICAgICAgICAg
ICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9NQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5J
VFM6ICByZXR1cm4gMTsKLSAgICAgICAgICAgIC8vY2FzZSBHTF9NQVhfVkVSVEVYX1VOSUZPUk1f
VkVDVE9SUzogICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9NQVhfVklFV1BPUlRfRElN
UzogICAgICAgICAgICAgICByZXR1cm4gMjsKLSAgICAgICAgY2FzZSBHTF9OVU1fQ09NUFJFU1NF
RF9URVhUVVJFX0ZPUk1BVFM6ICByZXR1cm4gMTsKLSAgICAgICAgICAgIC8vY2FzZSBHTF9OVU1f
U0hBREVSX0JJTkFSWV9GT1JNQVRTOiAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9Q
QUNLX0FMSUdOTUVOVDogICAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBH
TF9QT0xZR09OX09GRlNFVF9GQUNUT1I6ICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2Fz
ZSBHTF9QT0xZR09OX09GRlNFVF9GSUxMOiAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAg
Y2FzZSBHTF9QT0xZR09OX09GRlNFVF9VTklUUzogICAgICAgICAgICByZXR1cm4gMTsKLSAgICAg
ICAgY2FzZSBHTF9SRURfQklUUzogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAg
ICAgICAgY2FzZSBHTF9SRU5ERVJCVUZGRVJfQklORElOR19FWFQ6ICAgICAgICByZXR1cm4gMTsg
Ly8gKCogYWN0dWFsbHkgYSBXZWJHTFJlbmRlcmJ1ZmZlciopCi0gICAgICAgIGNhc2UgR0xfU0FN
UExFX0JVRkZFUlM6ICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xf
U0FNUExFX0NPVkVSQUdFX0lOVkVSVDogICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2Ug
R0xfU0FNUExFX0NPVkVSQUdFX1ZBTFVFOiAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNh
c2UgR0xfU0FNUExFUzogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAg
IGNhc2UgR0xfU0NJU1NPUl9CT1g6ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDQ7Ci0gICAg
ICAgIGNhc2UgR0xfU0NJU1NPUl9URVNUOiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0g
ICAgICAgICAgICAvL2Nhc2UgR0xfU0hBREVSX0JJTkFSWV9GT1JNQVRTOiAgICAgICAgICAgcmV0
dXJuIEdMX05VTV9TSEFERVJfQklOQVJZX0ZPUk1BVFM7Ci0gICAgICAgICAgICAvL2Nhc2UgR0xf
U0hBREVSX0NPTVBJTEVSOiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2Ug
R0xfU1RFTkNJTF9CQUNLX0ZBSUw6ICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNh
c2UgR0xfU1RFTkNJTF9CQUNLX0ZVTkM6ICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAg
IGNhc2UgR0xfU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfRkFJTDogICAgcmV0dXJuIDE7Ci0gICAg
ICAgIGNhc2UgR0xfU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTUzogICAgcmV0dXJuIDE7Ci0g
ICAgICAgIGNhc2UgR0xfU1RFTkNJTF9CQUNLX1JFRjogICAgICAgICAgICAgICAgcmV0dXJuIDE7
Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJTF9CQUNLX1ZBTFVFX01BU0s6ICAgICAgICAgcmV0dXJu
IDE7Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJTF9CQUNLX1dSSVRFTUFTSzogICAgICAgICAgcmV0
dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJTF9CSVRTOiAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJTF9DTEVBUl9WQUxVRTogICAgICAgICAg
ICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJTF9GQUlMOiAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJTF9GVU5DOiAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJTF9QQVNTX0RFUFRIX0ZB
SUw6ICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJTF9QQVNTX0RFUFRI
X1BBU1M6ICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJTF9SRUY6ICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJTF9URVNU
OiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJTF9W
QUxVRV9NQVNLOiAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJ
TF9XUklURU1BU0s6ICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1VC
UElYRUxfQklUUzogICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xf
VEVYVFVSRV9CSU5ESU5HXzJEOiAgICAgICAgICAgICAgcmV0dXJuIDE7IC8vICgqIGFjdHVhbGx5
IGEgV2ViR0xUZXh0dXJlKikKLSAgICAgICAgY2FzZSBHTF9URVhUVVJFX0JJTkRJTkdfQ1VCRV9N
QVA6ICAgICAgICByZXR1cm4gMTsgLy8gKCogYWN0dWFsbHkgYSBXZWJHTFRleHR1cmUqKQotICAg
ICAgICBjYXNlIEdMX1VOUEFDS19BTElHTk1FTlQ6ICAgICAgICAgICAgICAgIHJldHVybiAxOwot
ICAgICAgICBjYXNlIEdMX1ZJRVdQT1JUOiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA0
OwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gLTE7Ci19Ci0KLWJvb2wgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldEJvb2xlYW4odW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICBpbnQgc2l6ZSA9IHNp
emVGb3JHZXRQYXJhbShwbmFtZSk7Ci0gICAgaWYgKHNpemUgPCAxKSAKLSAgICAgICAgcmV0dXJu
IDA7Ci0gICAgCiAgICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwotICAgIAotICAgIGJv
b2wgaXNBbGxvY2VkID0gZmFsc2U7Ci0gICAgR0xib29sZWFuIGJ1Zls0XTsKLSAgICBHTGJvb2xl
YW4qIHBidWYgPSBidWY7Ci0gICAgICAgICAgICAKLSAgICBpZiAoc2l6ZSA+IDQpIHsKLSAgICAg
ICAgcGJ1ZiA9IChHTGJvb2xlYW4qKSBtYWxsb2Moc2l6ZSAqIHNpemVvZihHTGJvb2xlYW4pKTsK
LSAgICAgICAgaXNBbGxvY2VkID0gdHJ1ZTsKLSAgICB9Ci0gICAgICAgICAgICAKLSAgICA6Omds
R2V0Qm9vbGVhbnYocG5hbWUsIHBidWYpOwotICAgIAotICAgIGJvb2wgdmFsdWUgPSBwYnVmWzBd
OwotCi0gICAgaWYgKGlzQWxsb2NlZCkKLSAgICAgICAgZnJlZShwYnVmKTsKLSAgICAKLSAgICBy
ZXR1cm4gdmFsdWU7CisgICAgOjpnbEdldEJvb2xlYW52KHBuYW1lLCB2YWx1ZSk7CiB9CiAKLVBh
c3NSZWZQdHI8V2ViR0xVbnNpZ25lZEJ5dGVBcnJheT4gR3JhcGhpY3NDb250ZXh0M0Q6OmdldEJv
b2xlYW52KHVuc2lnbmVkIGxvbmcgcG5hbWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRC
dWZmZXJQYXJhbWV0ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFt
ZSwgaW50KiB2YWx1ZSkKIHsKLSAgICBpbnQgc2l6ZSA9IHNpemVGb3JHZXRQYXJhbShwbmFtZSk7
Ci0gICAgaWYgKHNpemUgPCAxKSAKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCiAgICAgZW5zdXJl
Q29udGV4dChtX2NvbnRleHRPYmopOwotICAgIAotICAgIFJlZlB0cjxXZWJHTFVuc2lnbmVkQnl0
ZUFycmF5PiBhcnJheSA9IFdlYkdMVW5zaWduZWRCeXRlQXJyYXk6OmNyZWF0ZShzaXplKTsKLSAg
ICBib29sIGlzQWxsb2NlZCA9IGZhbHNlOwotICAgIEdMYm9vbGVhbiBidWZbNF07Ci0gICAgR0xi
b29sZWFuKiBwYnVmID0gYnVmOwotICAgICAgICAgICAgCi0gICAgaWYgKHNpemUgPiA0KSB7Ci0g
ICAgICAgIHBidWYgPSAoR0xib29sZWFuKikgbWFsbG9jKHNpemUgKiBzaXplb2YoR0xib29sZWFu
KSk7Ci0gICAgICAgIGlzQWxsb2NlZCA9IHRydWU7Ci0gICAgfQotICAgICAgICAgICAgCi0gICAg
OjpnbEdldEJvb2xlYW52KHBuYW1lLCBwYnVmKTsKLSAgICAgICAgICAgIAotICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBhcnJheS0+c2V0KGksIHN0YXRpY19jYXN0
PHVuc2lnbmVkIGNoYXI+KHBidWZbaV0pKTsKLSAgICAgICAgICAgIAotICAgIGlmIChpc0FsbG9j
ZWQpCi0gICAgICAgIGZyZWUocGJ1Zik7Ci0gICAgCi0gICAgcmV0dXJuIGFycmF5OworICAgIDo6
Z2xHZXRCdWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CiB9CiAKLWZsb2F0
IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRGbG9hdCh1bnNpZ25lZCBsb25nIHBuYW1lKQordm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6Z2V0RmxvYXR2KHVuc2lnbmVkIGxvbmcgcG5hbWUsIGZsb2F0KiB2
YWx1ZSkKIHsKLSAgICBpbnQgc2l6ZSA9IHNpemVGb3JHZXRQYXJhbShwbmFtZSk7Ci0gICAgaWYg
KHNpemUgPCAxKSAKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCiAgICAgZW5zdXJlQ29udGV4dCht
X2NvbnRleHRPYmopOwotICAgIAotICAgIGJvb2wgaXNBbGxvY2VkID0gZmFsc2U7Ci0gICAgR0xm
bG9hdCBidWZbNF07Ci0gICAgR0xmbG9hdCogcGJ1ZiA9IGJ1ZjsKLSAgICAgICAgICAgIAotICAg
IGlmIChzaXplID4gNCkgewotICAgICAgICBwYnVmID0gKEdMZmxvYXQqKSBtYWxsb2Moc2l6ZSAq
IHNpemVvZihHTGZsb2F0KSk7Ci0gICAgICAgIGlzQWxsb2NlZCA9IHRydWU7Ci0gICAgfQotICAg
ICAgICAgICAgCi0gICAgOjpnbEdldEZsb2F0dihwbmFtZSwgcGJ1Zik7Ci0gICAgCi0gICAgZmxv
YXQgdmFsdWUgPSBwYnVmWzBdOwotCi0gICAgaWYgKGlzQWxsb2NlZCkKLSAgICAgICAgZnJlZShw
YnVmKTsKLSAgICAKLSAgICByZXR1cm4gdmFsdWU7CisgICAgOjpnbEdldEZsb2F0dihwbmFtZSwg
dmFsdWUpOwogfQogCi1QYXNzUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gR3JhcGhpY3NDb250ZXh0
M0Q6OmdldEZsb2F0dih1bnNpZ25lZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJn
ZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgaW50KiB2
YWx1ZSkKIHsKLSAgICBpbnQgc2l6ZSA9IHNpemVGb3JHZXRQYXJhbShwbmFtZSk7Ci0gICAgaWYg
KHNpemUgPCAxKSAKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCiAgICAgZW5zdXJlQ29udGV4dCht
X2NvbnRleHRPYmopOwotICAgIAotICAgIFJlZlB0cjxXZWJHTEZsb2F0QXJyYXk+IGFycmF5ID0g
V2ViR0xGbG9hdEFycmF5OjpjcmVhdGUoc2l6ZSk7Ci0gICAgYm9vbCBpc0FsbG9jZWQgPSBmYWxz
ZTsKLSAgICBHTGZsb2F0IGJ1Zls0XTsKLSAgICBHTGZsb2F0KiBwYnVmID0gYnVmOwotICAgICAg
ICAgICAgCi0gICAgaWYgKHNpemUgPiA0KSB7Ci0gICAgICAgIHBidWYgPSAoR0xmbG9hdCopIG1h
bGxvYyhzaXplICogc2l6ZW9mKEdMZmxvYXQpKTsKLSAgICAgICAgaXNBbGxvY2VkID0gdHJ1ZTsK
LSAgICB9Ci0gICAgICAgICAgICAKLSAgICA6OmdsR2V0RmxvYXR2KHBuYW1lLCBwYnVmKTsKLSAg
ICAgICAgICAgIAotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBh
cnJheS0+c2V0KGksIHN0YXRpY19jYXN0PGZsb2F0PihwYnVmW2ldKSk7Ci0gICAgICAgICAgICAK
LSAgICBpZiAoaXNBbGxvY2VkKQotICAgICAgICBmcmVlKHBidWYpOwotICAgIAotICAgIHJldHVy
biBhcnJheTsKKyAgICA6OmdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZFWFQo
dGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSwgdmFsdWUpOwogfQogCi1pbnQgR3JhcGhpY3NDb250
ZXh0M0Q6OmdldEludGVnZXIodW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICBpbnQgc2l6ZSA9
IHNpemVGb3JHZXRQYXJhbShwbmFtZSk7Ci0gICAgaWYgKHNpemUgPCAxKSAKLSAgICAgICAgcmV0
dXJuIDA7Ci0gICAgCi0gICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwotICAgIAotICAg
IGJvb2wgaXNBbGxvY2VkID0gZmFsc2U7Ci0gICAgR0xpbnQgYnVmWzRdOwotICAgIEdMaW50KiBw
YnVmID0gYnVmOwotICAgICAgICAgICAgCi0gICAgaWYgKHNpemUgPiA0KSB7Ci0gICAgICAgIHBi
dWYgPSAoR0xpbnQqKSBtYWxsb2Moc2l6ZSAqIHNpemVvZihHTGludCkpOwotICAgICAgICBpc0Fs
bG9jZWQgPSB0cnVlOwotICAgIH0KLSAgICAgICAgICAgIAotICAgIDo6Z2xHZXRJbnRlZ2Vydihw
bmFtZSwgcGJ1Zik7Ci0gICAgCi0gICAgaW50IHZhbHVlID0gcGJ1ZlswXTsKLQotICAgIGlmIChp
c0FsbG9jZWQpCi0gICAgICAgIGZyZWUocGJ1Zik7Ci0gICAgCi0gICAgcmV0dXJuIHZhbHVlOwot
fQotCi1QYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbnRl
Z2Vydih1bnNpZ25lZCBsb25nIHBuYW1lKQotewotICAgIGludCBzaXplID0gc2l6ZUZvckdldFBh
cmFtKHBuYW1lKTsKLSAgICBpZiAoc2l6ZSA8IDEpIAotICAgICAgICByZXR1cm4gMDsKLSAgICAK
LSAgICBlbnN1cmVDb250ZXh0KG1fY29udGV4dE9iaik7Ci0gICAgCi0gICAgUmVmUHRyPFdlYkdM
SW50QXJyYXk+IGFycmF5ID0gV2ViR0xJbnRBcnJheTo6Y3JlYXRlKHNpemUpOwotICAgIGJvb2wg
aXNBbGxvY2VkID0gZmFsc2U7Ci0gICAgR0xpbnQgYnVmWzRdOwotICAgIEdMaW50KiBwYnVmID0g
YnVmOwotICAgICAgICAgICAgCi0gICAgaWYgKHNpemUgPiA0KSB7Ci0gICAgICAgIHBidWYgPSAo
R0xpbnQqKSBtYWxsb2Moc2l6ZSAqIHNpemVvZihHTGludCkpOwotICAgICAgICBpc0FsbG9jZWQg
PSB0cnVlOwotICAgIH0KLSAgICAgICAgICAgIAotICAgIDo6Z2xHZXRJbnRlZ2VydihwbmFtZSwg
cGJ1Zik7Ci0gICAgICAgICAgICAKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkK
LSAgICAgICAgYXJyYXktPnNldChpLCBzdGF0aWNfY2FzdDxpbnQ+KHBidWZbaV0pKTsKLSAgICAg
ICAgICAgIAotICAgIGlmIChpc0FsbG9jZWQpCi0gICAgICAgIGZyZWUocGJ1Zik7Ci0gICAgCi0g
ICAgcmV0dXJuIGFycmF5OwotfQotCi1pbnQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEJ1ZmZlclBh
cmFtZXRlcmkodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCit2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbnRlZ2Vydih1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQq
IHZhbHVlKQogewogICAgIGVuc3VyZUNvbnRleHQobV9jb250ZXh0T2JqKTsKLSAgICBHTGludCBk
YXRhOwotICAgIDo6Z2xHZXRCdWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmZGF0YSk7
Ci0gICAgcmV0dXJuIGRhdGE7CisgICAgOjpnbEdldEludGVnZXJ2KHBuYW1lLCB2YWx1ZSk7CiB9
CiAKLVBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gR3JhcGhpY3NDb250ZXh0M0Q6OmdldEJ1ZmZl
clBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKQor
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbWl2KFdlYkdMUHJvZ3JhbSogcHJvZ3Jh
bSwgdW5zaWduZWQgbG9uZyBwbmFtZSwgaW50KiB2YWx1ZSkKIHsKICAgICBlbnN1cmVDb250ZXh0
KG1fY29udGV4dE9iaik7Ci0gICAgUmVmUHRyPFdlYkdMSW50QXJyYXk+IGFycmF5ID0gV2ViR0xJ
bnRBcnJheTo6Y3JlYXRlKDEpOwotICAgIEdMaW50IGRhdGE7Ci0gICAgOjpnbEdldEJ1ZmZlclBh
cmFtZXRlcml2KHRhcmdldCwgcG5hbWUsICZkYXRhKTsKLSAgICBhcnJheS0+c2V0KDAsIHN0YXRp
Y19jYXN0PGludD4oZGF0YSkpOwotICAgIAotICAgIHJldHVybiBhcnJheTsKLX0KLQotaW50IEdy
YXBoaWNzQ29udGV4dDNEOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKHVuc2ln
bmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIHVuc2lnbmVkIGxvbmcg
cG5hbWUpCi17Ci0gICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwotICAgIEdMaW50IGRh
dGE7Ci0gICAgOjpnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2RVhUKHRhcmdl
dCwgYXR0YWNobWVudCwgcG5hbWUsICZkYXRhKTsKLSAgICByZXR1cm4gZGF0YTsKLX0KLQotUGFz
c1JlZlB0cjxXZWJHTEludEFycmF5PiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcg
YXR0YWNobWVudCwgdW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICBlbnN1cmVDb250ZXh0KG1f
Y29udGV4dE9iaik7Ci0gICAgUmVmUHRyPFdlYkdMSW50QXJyYXk+IGFycmF5ID0gV2ViR0xJbnRB
cnJheTo6Y3JlYXRlKDEpOwotICAgIEdMaW50IGRhdGE7Ci0gICAgOjpnbEdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcml2RVhUKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsICZkYXRh
KTsKLSAgICBhcnJheS0+c2V0KDAsIHN0YXRpY19jYXN0PGludD4oZGF0YSkpOwotICAgIAotICAg
IHJldHVybiBhcnJheTsKLX0KLQotaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtaShX
ZWJHTFByb2dyYW0qIHByb2dyYW0sIHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgZW5zdXJl
Q29udGV4dChtX2NvbnRleHRPYmopOwotICAgIEdMaW50IGRhdGE7Ci0gICAgOjpnbEdldFByb2dy
YW1pdigoR0x1aW50KSBwcm9ncmFtLT5vYmplY3QoKSwgcG5hbWUsICZkYXRhKTsKLSAgICByZXR1
cm4gZGF0YTsKLX0KLQotUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBHcmFwaGljc0NvbnRleHQz
RDo6Z2V0UHJvZ3JhbWl2KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgdW5zaWduZWQgbG9uZyBwbmFt
ZSkKLXsKLSAgICBlbnN1cmVDb250ZXh0KG1fY29udGV4dE9iaik7Ci0gICAgUmVmUHRyPFdlYkdM
SW50QXJyYXk+IGFycmF5ID0gV2ViR0xJbnRBcnJheTo6Y3JlYXRlKDEpOwotICAgIEdMaW50IGRh
dGE7Ci0gICAgOjpnbEdldFByb2dyYW1pdigoR0x1aW50KSBwcm9ncmFtLT5vYmplY3QoKSwgcG5h
bWUsICZkYXRhKTsKLSAgICBhcnJheS0+c2V0KDAsIHN0YXRpY19jYXN0PGludD4oZGF0YSkpOwot
ICAgIAotICAgIHJldHVybiBhcnJheTsKKyAgICA6OmdsR2V0UHJvZ3JhbWl2KChHTHVpbnQpIHBy
b2dyYW0tPm9iamVjdCgpLCBwbmFtZSwgdmFsdWUpOwogfQogCiBTdHJpbmcgR3JhcGhpY3NDb250
ZXh0M0Q6OmdldFByb2dyYW1JbmZvTG9nKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSkKQEAgLTEyODUs
NDYgKzEwMDQsMTggQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtSW5mbwog
ICAgIHJldHVybiBzOwogfQogCi1pbnQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFJlbmRlcmJ1ZmZl
clBhcmFtZXRlcmkodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17
Ci0gICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwotICAgIEdMaW50IGRhdGE7Ci0gICAg
OjpnbEdldEJ1ZmZlclBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsICZkYXRhKTsKLSAgICByZXR1
cm4gZGF0YTsKLX0KLQotUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBHcmFwaGljc0NvbnRleHQz
RDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2ln
bmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwotICAg
IFJlZlB0cjxXZWJHTEludEFycmF5PiBhcnJheSA9IFdlYkdMSW50QXJyYXk6OmNyZWF0ZSgxKTsK
LSAgICBHTGludCBkYXRhOwotICAgIDo6Z2xHZXRCdWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBu
YW1lLCAmZGF0YSk7Ci0gICAgYXJyYXktPnNldCgwLCBzdGF0aWNfY2FzdDxpbnQ+KGRhdGEpKTsK
LSAgICAKLSAgICByZXR1cm4gYXJyYXk7Ci19Ci0KLWludCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
U2hhZGVyaShXZWJHTFNoYWRlciogc2hhZGVyLCB1bnNpZ25lZCBsb25nIHBuYW1lKQordm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYodW5zaWduZWQgbG9u
ZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIGludCogdmFsdWUpCiB7Ci0gICAgQVNTRVJU
KHNoYWRlcik7Ci0gICAgCiAgICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwotICAgIEdM
aW50IGRhdGE7Ci0gICAgOjpnbEdldFNoYWRlcml2KChHTHVpbnQpIHNoYWRlci0+b2JqZWN0KCks
IHBuYW1lLCAmZGF0YSk7Ci0gICAgcmV0dXJuIGRhdGE7CisgICAgOjpnbEdldFJlbmRlcmJ1ZmZl
clBhcmFtZXRlcml2RVhUKHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKIH0KIAotUGFzc1JlZlB0cjxX
ZWJHTEludEFycmF5PiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyaXYoV2ViR0xTaGFkZXIq
IHNoYWRlciwgdW5zaWduZWQgbG9uZyBwbmFtZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6Omdl
dFNoYWRlcml2KFdlYkdMU2hhZGVyKiBzaGFkZXIsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIGludCog
dmFsdWUpCiB7CiAgICAgQVNTRVJUKHNoYWRlcik7CiAgICAgCiAgICAgZW5zdXJlQ29udGV4dCht
X2NvbnRleHRPYmopOwotICAgIFJlZlB0cjxXZWJHTEludEFycmF5PiBhcnJheSA9IFdlYkdMSW50
QXJyYXk6OmNyZWF0ZSgxKTsKLSAgICBHTGludCBkYXRhOwotICAgIDo6Z2xHZXRTaGFkZXJpdigo
R0x1aW50KSBzaGFkZXItPm9iamVjdCgpLCBwbmFtZSwgJmRhdGEpOwotICAgIGFycmF5LT5zZXQo
MCwgc3RhdGljX2Nhc3Q8aW50PihkYXRhKSk7Ci0gICAgCi0gICAgcmV0dXJuIGFycmF5OworICAg
IDo6Z2xHZXRTaGFkZXJpdigoR0x1aW50KSBzaGFkZXItPm9iamVjdCgpLCBwbmFtZSwgdmFsdWUp
OwogfQogCiBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlckluZm9Mb2coV2ViR0xT
aGFkZXIqIHNoYWRlcikKQEAgLTEzNjAsNzggKzEwNTEsMjggQEAgU3RyaW5nIEdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRTaGFkZXJTb3VyYwogfQogCiAKLWZsb2F0IEdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRUZXhQYXJhbWV0ZXJmKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1l
KQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VGV4UGFyYW1ldGVyZnYodW5zaWduZWQgbG9u
ZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIGZsb2F0KiB2YWx1ZSkKIHsKICAgICBlbnN1
cmVDb250ZXh0KG1fY29udGV4dE9iaik7Ci0gICAgR0xmbG9hdCBkYXRhOwotICAgIDo6Z2xHZXRU
ZXhQYXJhbWV0ZXJmdih0YXJnZXQsIHBuYW1lLCAmZGF0YSk7Ci0gICAgcmV0dXJuIGRhdGE7Cisg
ICAgOjpnbEdldFRleFBhcmFtZXRlcmZ2KHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKIH0KIAotUGFz
c1JlZlB0cjxXZWJHTEZsb2F0QXJyYXk+IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRUZXhQYXJhbWV0
ZXJmdih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSkKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldFRleFBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1
bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKQogewogICAgIGVuc3VyZUNvbnRleHQobV9j
b250ZXh0T2JqKTsKLSAgICBSZWZQdHI8V2ViR0xGbG9hdEFycmF5PiBhcnJheSA9IFdlYkdMRmxv
YXRBcnJheTo6Y3JlYXRlKDEpOwotICAgIEdMZmxvYXQgZGF0YTsKLSAgICA6OmdsR2V0VGV4UGFy
YW1ldGVyZnYodGFyZ2V0LCBwbmFtZSwgJmRhdGEpOwotICAgIGFycmF5LT5zZXQoMCwgc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KGRhdGEpKTsKLSAgICAKLSAgICByZXR1cm4gYXJyYXk7CisgICAgOjpnbEdl
dFRleFBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKIH0KIAotaW50IEdyYXBoaWNz
Q29udGV4dDNEOjpnZXRUZXhQYXJhbWV0ZXJpKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25l
ZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWZ2KFdlYkdM
UHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBsb2NhdGlvbiwgZmxvYXQqIHZhbHVlKQogewogICAgIGVu
c3VyZUNvbnRleHQobV9jb250ZXh0T2JqKTsKLSAgICBHTGludCBkYXRhOwotICAgIDo6Z2xHZXRU
ZXhQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmZGF0YSk7Ci0gICAgcmV0dXJuIGRhdGE7Cisg
ICAgOjpnbEdldFVuaWZvcm1mdigoR0x1aW50KSBwcm9ncmFtLT5vYmplY3QoKSwgbG9jYXRpb24s
IHZhbHVlKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBHcmFwaGljc0NvbnRleHQz
RDo6Z2V0VGV4UGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcg
cG5hbWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtaXYoV2ViR0xQcm9ncmFt
KiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uLCBpbnQqIHZhbHVlKQogewogICAgIGVuc3VyZUNvbnRl
eHQobV9jb250ZXh0T2JqKTsKLSAgICBSZWZQdHI8V2ViR0xJbnRBcnJheT4gYXJyYXkgPSBXZWJH
TEludEFycmF5OjpjcmVhdGUoMSk7Ci0gICAgR0xpbnQgZGF0YTsKLSAgICA6OmdsR2V0VGV4UGFy
YW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgJmRhdGEpOwotICAgIGFycmF5LT5zZXQoMCwgc3RhdGlj
X2Nhc3Q8aW50PihkYXRhKSk7Ci0gICAgCi0gICAgcmV0dXJuIGFycmF5OwotfQotCi1mbG9hdCBH
cmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWYoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBsb25n
IGxvY2F0aW9uKQotewotICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIHF1ZXJ5IGdsR2V0VW5pZm9y
bUxvY2F0aW9uIHRvIGRldGVybWluZSB0aGUgc2l6ZSBuZWVkZWQKLSAgICBVTlVTRURfUEFSQU0o
cHJvZ3JhbSk7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotICAgIHJldHVybiAwOwotfQotCi1QYXNzUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1mdihXZWJHTFByb2dyYW0qIHByb2dyYW0sIGxvbmcg
bG9jYXRpb24pCi17Ci0gICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gcXVlcnkgZ2xHZXRVbmlmb3Jt
TG9jYXRpb24gdG8gZGV0ZXJtaW5lIHRoZSBzaXplIG5lZWRlZAotICAgIFVOVVNFRF9QQVJBTShw
cm9ncmFtKTsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWludCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9y
bWkoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uKQotewotICAgIC8vIEZJWE1F
OiBXZSBuZWVkIHRvIHF1ZXJ5IGdsR2V0VW5pZm9ybUxvY2F0aW9uIHRvIGRldGVybWluZSB0aGUg
c2l6ZSBuZWVkZWQKLSAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7Ci0gICAgVU5VU0VEX1BBUkFN
KGxvY2F0aW9uKTsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOwotfQotCi1Q
YXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtaXYo
V2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uKQotewotICAgIC8vIEZJWE1FOiBX
ZSBuZWVkIHRvIHF1ZXJ5IGdsR2V0VW5pZm9ybUxvY2F0aW9uIHRvIGRldGVybWluZSB0aGUgc2l6
ZSBuZWVkZWQKLSAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7Ci0gICAgVU5VU0VEX1BBUkFNKGxv
Y2F0aW9uKTsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAgIDo6Z2xH
ZXRVbmlmb3JtaXYoKEdMdWludCkgcHJvZ3JhbS0+b2JqZWN0KCksIGxvY2F0aW9uLCB2YWx1ZSk7
CiB9CiAKIGxvbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1Mb2NhdGlvbihXZWJHTFBy
b2dyYW0qIHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSkKQEAgLTE0NDIsNzEgKzEwODMsMTYg
QEAgbG9uZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybUxvY2F0aQogICAgIHJldHVybiA6
OmdsR2V0VW5pZm9ybUxvY2F0aW9uKChHTHVpbnQpIHByb2dyYW0tPm9iamVjdCgpLCBuYW1lLnV0
ZjgoKS5kYXRhKCkpOwogfQogCi1zdGF0aWMgaW50IHNpemVGb3JHZXRWZXJ0ZXhBdHRyaWJQYXJh
bSh1bnNpZ25lZCBsb25nIHBuYW1lKQotewotICAgIHN3aXRjaChwbmFtZSkgewotICAgICAgICBj
YXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkc6ICAgICByZXR1cm4gMTsg
Ly8gKCogYWN0dWFsbHkgYSBXZWJHTEJ1ZmZlciopCi0gICAgICAgIGNhc2UgR0xfVkVSVEVYX0FU
VFJJQl9BUlJBWV9FTkFCTEVEOiAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdM
X1ZFUlRFWF9BVFRSSUJfQVJSQVlfU0laRTogICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAg
ICAgY2FzZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZX1NUUklERTogICAgICAgICAgICAgcmV0dXJu
IDE7Ci0gICAgICAgIGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFOiAgICAgICAgICAg
ICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfTk9STUFM
SVpFRDogICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9DVVJSRU5UX1ZFUlRFWF9B
VFRSSUI6ICAgICAgICAgICAgICAgICAgcmV0dXJuIDQ7Ci0gICAgfQotICAgIAotICAgIHJldHVy
biAtMTsKLX0KLQotZmxvYXQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYmYodW5z
aWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICBlbnN1cmVDb250
ZXh0KG1fY29udGV4dE9iaik7Ci0gICAgR0xmbG9hdCBidWZbNF07Ci0gICAgOjpnbEdldFZlcnRl
eEF0dHJpYmZ2KGluZGV4LCBwbmFtZSwgYnVmKTsKLSAgICByZXR1cm4gYnVmWzBdOwotfQotCi1Q
YXNzUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gR3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0
dHJpYmZ2KHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCit2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJmdih1bnNpZ25lZCBsb25nIGluZGV4LCB1
bnNpZ25lZCBsb25nIHBuYW1lLCBmbG9hdCogdmFsdWUpCiB7Ci0gICAgaW50IHNpemUgPSBzaXpl
Rm9yR2V0VmVydGV4QXR0cmliUGFyYW0ocG5hbWUpOwotICAgIGlmIChzaXplIDwgMSkgCi0gICAg
ICAgIHJldHVybiAwOwotICAgIAogICAgIGVuc3VyZUNvbnRleHQobV9jb250ZXh0T2JqKTsKLSAg
ICAKLSAgICBSZWZQdHI8V2ViR0xGbG9hdEFycmF5PiBhcnJheSA9IFdlYkdMRmxvYXRBcnJheTo6
Y3JlYXRlKHNpemUpOwotICAgIEdMZmxvYXQgYnVmWzRdOwotICAgIDo6Z2xHZXRWZXJ0ZXhBdHRy
aWJmdihpbmRleCwgcG5hbWUsIGJ1Zik7Ci0gICAgICAgICAgICAKLSAgICBmb3IgKGludCBpID0g
MDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgYXJyYXktPnNldChpLCBzdGF0aWNfY2FzdDxmbG9h
dD4oYnVmW2ldKSk7Ci0gICAgCi0gICAgcmV0dXJuIGFycmF5OworICAgIDo6Z2xHZXRWZXJ0ZXhB
dHRyaWJmdihpbmRleCwgcG5hbWUsIHZhbHVlKTsKIH0KIAotaW50IEdyYXBoaWNzQ29udGV4dDNE
OjpnZXRWZXJ0ZXhBdHRyaWJpKHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5h
bWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJpdih1bnNpZ25lZCBs
b25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKQogewogICAgIGVuc3Vy
ZUNvbnRleHQobV9jb250ZXh0T2JqKTsKLSAgICBHTGludCBidWZbNF07Ci0gICAgOjpnbEdldFZl
cnRleEF0dHJpYml2KGluZGV4LCBwbmFtZSwgYnVmKTsKLSAgICByZXR1cm4gYnVmWzBdOwotfQot
Ci1QYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhB
dHRyaWJpdih1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBuYW1lKQotewotICAg
IGludCBzaXplID0gc2l6ZUZvckdldFZlcnRleEF0dHJpYlBhcmFtKHBuYW1lKTsKLSAgICBpZiAo
c2l6ZSA8IDEpIAotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBlbnN1cmVDb250ZXh0KG1f
Y29udGV4dE9iaik7Ci0gICAgCi0gICAgUmVmUHRyPFdlYkdMSW50QXJyYXk+IGFycmF5ID0gV2Vi
R0xJbnRBcnJheTo6Y3JlYXRlKHNpemUpOwotICAgIEdMaW50IGJ1Zls0XTsKLSAgICA6OmdsR2V0
VmVydGV4QXR0cmliaXYoaW5kZXgsIHBuYW1lLCBidWYpOwotICAgICAgICAgICAgCi0gICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIGFycmF5LT5zZXQoaSwgc3RhdGlj
X2Nhc3Q8aW50PihidWZbaV0pKTsKLSAgICAKLSAgICByZXR1cm4gYXJyYXk7CisgICAgOjpnbEdl
dFZlcnRleEF0dHJpYml2KGluZGV4LCBwbmFtZSwgdmFsdWUpOwogfQogCiBsb25nIEdyYXBoaWNz
Q29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQodW5zaWduZWQgbG9uZyBpbmRleCwgdW5z
aWduZWQgbG9uZyBwbmFtZSkKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTEyNzgpCisrKyBX
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDcgQEAK
KzIwMDktMTEtMjAgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSBnZXQuLi4gY2Fs
bHMgdG8gbGF0ZXN0IHNwZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTMwMDkxCisKKyAgICAgICAgUmVtb3ZlZCBvbGQgdmVyc2lvbnMgb2YgZ2V0IGNh
bGxzIG9uIFdlYkdMUmVuZGVyaW5nQ29udGV4dCBhbmQKKyAgICAgICAgYWRkZWQgbmV3IG9uZXMg
cGVyIHNwZWMgcmV0dXJuaW5nICJhbnkiLiBOZXcgY29kZSBzaW1wbGlmaWVzCisgICAgICAgIEdy
YXBoaWNzQ29udGV4dDNEIGFuZCBmaXhlcyBwcmV2aW91c2x5IHVuaW1wbGVtZW50ZWQgcm91dGlu
ZXMuCisgICAgICAgIEFkZGVkIGN1c3RvbSBKUyBhbmQgVjggYmluZGluZ3MuIEFkZGVkIGV4aGF1
c3RpdmUgdGVzdCBjYXNlCisgICAgICAgIGV4ZXJjaXNpbmcgYWxsIG5ldyBjb2RlIHBhdGhzLiBV
cGRhdGVkIHByZWV4aXN0aW5nIHRlc3QgY2FzZXMgZm9yCisgICAgICAgIG5ldyBBUElzLiBGaXhl
ZCBwcmVleGlzdGluZyBidWdzIGluIFdlYktpdCdzIGFuZCBDaHJvbWUncyBXZWJHTAorICAgICAg
ICBpbXBsZW1lbnRhdGlvbnMuCisKKyAgICAgICAgUmFuIFdlYkdMIGxheW91dCB0ZXN0cyBpbiBX
ZWJLaXQgKGNsZWFuKSBhbmQgQ2hyb21lIChjb3VwbGUgb2YKKyAgICAgICAgcHJlZXhpc3Rpbmcg
a25vd24gZmFpbHVyZXMpIGFuZCBtYW51YWwgV2ViR0wgdGVzdHMgaW4gYm90aAorICAgICAgICBi
cm93c2Vycy4KKworICAgICAgICBUZXN0OiBmYXN0L2NhbnZhcy93ZWJnbC9nbC1vYmplY3QtZ2V0
LWNhbGxzLmh0bWwKKworICAgICAgICAqIHNyYy9HcmFwaGljc0NvbnRleHQzRC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlRnJhbWVidWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVJlbmRlcmJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlRnJhbWVidWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVJlbmRlcmJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y2hlY2tGcmFtZWJ1ZmZlclN0
YXR1cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0Qm9vbGVhbnYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEJ1ZmZlclBhcmFtZXRl
cml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRGbG9hdHYpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEZyYW1lYnVmZmVyQXR0YWNo
bWVudFBhcmFtZXRlcml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRJbnRlZ2Vydik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJv
Z3JhbWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRSZW5kZXJi
dWZmZXJQYXJhbWV0ZXJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
Z2V0U2hhZGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFRl
eFBhcmFtZXRlcmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRU
ZXhQYXJhbWV0ZXJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0
VW5pZm9ybWZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlm
b3JtaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0
dHJpYmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhB
dHRyaWJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6aXNGcmFtZWJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6aXNSZW5kZXJidWZm
ZXIpOgorCiAyMDA5LTExLTIwICBKaWFuIExpICA8amlhbmxpQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBOb3QgcmV2aWV3ZWQuIEZpeCBjaHJvbWl1bSBidWlsZC4KSW5kZXg6IFdlYktpdC9jaHJv
bWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJv
bWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0QuY3BwCShyZXZpc2lvbiA1MTI3OCkKKysrIFdlYktp
dC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
NzQsMTkgKzc3NCw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6YmVnaW5QYWkK
ICNlbmRpZiAgLy8gUkVOREVSX1RPX0RFQlVHR0lOR19XSU5ET1cKIH0KIAotYm9vbCBHcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjp2YWxpZGF0ZVRleHR1cmVUYXJnZXQoaW50IHRhcmdldCkKLXsK
LSAgICByZXR1cm4gKHRhcmdldCA9PSBHTF9URVhUVVJFXzJEIHx8IHRhcmdldCA9PSBHTF9URVhU
VVJFX0NVQkVfTUFQKTsKLX0KLQotYm9vbCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp2YWxp
ZGF0ZVRleHR1cmVQYXJhbWV0ZXIoaW50IHBhcmFtKQotewotICAgIHJldHVybiAocGFyYW0gPT0g
R0xfVEVYVFVSRV9NQUdfRklMVEVSCi0gICAgICAgICB8fCBwYXJhbSA9PSBHTF9URVhUVVJFX01J
Tl9GSUxURVIKLSAgICAgICAgIHx8IHBhcmFtID09IEdMX1RFWFRVUkVfV1JBUF9TCi0gICAgICAg
ICB8fCBwYXJhbSA9PSBHTF9URVhUVVJFX1dSQVBfVCk7Ci19Ci0KIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbDo6YWN0aXZlVGV4dHVyZSh1bnNpZ25lZCBsb25nIHRleHR1cmUpCiB7CiAg
ICAgLy8gRklYTUU6IHF1ZXJ5IG51bWJlciBvZiB0ZXh0dXJlcyBhdmFpbGFibGUuCkBAIC0xMTA1
LDggKzEwOTIsOCBAQCB1bnNpZ25lZCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlQnVmZmVyCiB1
bnNpZ25lZCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlRnJhbWVidWZmZXIoKQogewogICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOwotICAgIEdMdWludCBvOwotICAgIGdsR2VuRnJhbWVidWZmZXJz
KDEsICZvKTsKKyAgICBHTHVpbnQgbyA9IDA7CisgICAgZ2xHZW5GcmFtZWJ1ZmZlcnNFWFQoMSwg
Jm8pOwogICAgIHJldHVybiBvOwogfQogCkBAIC0xMTIwLDcgKzExMDcsNyBAQCB1bnNpZ25lZCBH
cmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlUmVuZGVyCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7CiAgICAgR0x1aW50IG87Ci0gICAgZ2xHZW5SZW5kZXJidWZmZXJzKDEsICZvKTsKKyAgICBn
bEdlblJlbmRlcmJ1ZmZlcnNFWFQoMSwgJm8pOwogICAgIHJldHVybiBvOwogfQogCkBAIC0xMTQ3
LDcgKzExMzQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVCdWZmZXIodW5zCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVGcmFtZWJ1ZmZlcih1bnNpZ25lZCBmcmFtZWJ1
ZmZlcikKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICBnbERlbGV0ZUZyYW1lYnVm
ZmVycygxLCAmZnJhbWVidWZmZXIpOworICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzRVhUKDEsICZm
cmFtZWJ1ZmZlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVByb2dyYW0o
dW5zaWduZWQgcHJvZ3JhbSkKQEAgLTExNTksNyArMTE0Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OmRlbGV0ZVByb2dyYW0odW4KIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVJl
bmRlcmJ1ZmZlcih1bnNpZ25lZCByZW5kZXJidWZmZXIpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7Ci0gICAgZ2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZyZW5kZXJidWZmZXIpOworICAg
IGdsRGVsZXRlUmVuZGVyYnVmZmVyc0VYVCgxLCAmcmVuZGVyYnVmZmVyKTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlU2hhZGVyKHVuc2lnbmVkIHNoYWRlcikKQEAgLTExOTcs
OSArMTE4NCw5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRCdWZmZXIodW5zaWcKICAg
ICBtX2ludGVybmFsLT5iaW5kQnVmZmVyKHRhcmdldCwgYnVmZmVyKTsKIH0KIAotR0xfU0FNRV9N
RVRIT0RfMl9YMihCaW5kRnJhbWVidWZmZXIsIGJpbmRGcmFtZWJ1ZmZlciwgdW5zaWduZWQgbG9u
ZywgV2ViR0xGcmFtZWJ1ZmZlciopCitHTF9TQU1FX01FVEhPRF8yX1gyKEJpbmRGcmFtZWJ1ZmZl
ckVYVCwgYmluZEZyYW1lYnVmZmVyLCB1bnNpZ25lZCBsb25nLCBXZWJHTEZyYW1lYnVmZmVyKikK
IAotR0xfU0FNRV9NRVRIT0RfMl9YMihCaW5kUmVuZGVyYnVmZmVyLCBiaW5kUmVuZGVyYnVmZmVy
LCB1bnNpZ25lZCBsb25nLCBXZWJHTFJlbmRlcmJ1ZmZlciopCitHTF9TQU1FX01FVEhPRF8yX1gy
KEJpbmRSZW5kZXJidWZmZXJFWFQsIGJpbmRSZW5kZXJidWZmZXIsIHVuc2lnbmVkIGxvbmcsIFdl
YkdMUmVuZGVyYnVmZmVyKikKIAogLy8gSWYgd2UgZGlkbid0IGhhdmUgdG8gaGFjayBHTF9URVhU
VVJFX1dSQVBfUiBmb3IgY3ViZSBtYXBzLAogLy8gd2UgY291bGQganVzdCB1c2U6CkBAIC0xMjUz
LDcgKzEyNDAsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpidWZmZXJTdWJEYXRhKHVuCiB1
bnNpZ25lZCBsb25nIEdyYXBoaWNzQ29udGV4dDNEOjpjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKHVu
c2lnbmVkIGxvbmcgdGFyZ2V0KQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIHJl
dHVybiBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXModGFyZ2V0KTsKKyAgICByZXR1cm4gZ2xDaGVj
a0ZyYW1lYnVmZmVyU3RhdHVzRVhUKHRhcmdldCk7CiB9CiAKIEdMX1NBTUVfTUVUSE9EXzEoQ2xl
YXIsIGNsZWFyLCB1bnNpZ25lZCBsb25nKQpAQCAtMTM1Niw5ICsxMzQzLDkgQEAgR0xfU0FNRV9N
RVRIT0RfMChGaW5pc2gsIGZpbmlzaCkKIAogR0xfU0FNRV9NRVRIT0RfMChGbHVzaCwgZmx1c2gp
CiAKLUdMX1NBTUVfTUVUSE9EXzRfWDQoRnJhbWVidWZmZXJSZW5kZXJidWZmZXIsIGZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBs
b25nLCBXZWJHTFJlbmRlcmJ1ZmZlciopCitHTF9TQU1FX01FVEhPRF80X1g0KEZyYW1lYnVmZmVy
UmVuZGVyYnVmZmVyRVhULCBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciwgdW5zaWduZWQgbG9uZywg
dW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgV2ViR0xSZW5kZXJidWZmZXIqKQogCi1HTF9T
QU1FX01FVEhPRF81X1g0KEZyYW1lYnVmZmVyVGV4dHVyZTJELCBmcmFtZWJ1ZmZlclRleHR1cmUy
RCwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgV2ViR0xUZXh0
dXJlKiwgbG9uZykKK0dMX1NBTUVfTUVUSE9EXzVfWDQoRnJhbWVidWZmZXJUZXh0dXJlMkRFWFQs
IGZyYW1lYnVmZmVyVGV4dHVyZTJELCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNp
Z25lZCBsb25nLCBXZWJHTFRleHR1cmUqLCBsb25nKQogCiBHTF9TQU1FX01FVEhPRF8xKEZyb250
RmFjZSwgZnJvbnRGYWNlLCB1bnNpZ25lZCBsb25nKQogCkBAIC0xNDM1LDM1ICsxNDIyLDE2IEBA
IGludCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QXR0cmliTG9jYXRpb24KICAgICByZXR1cm4gZ2xH
ZXRBdHRyaWJMb2NhdGlvbihFWFRSQUNUKHByb2dyYW0pLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwog
fQogCi1ib29sIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRCb29sZWFuKHVuc2lnbmVkIGxvbmcgcG5h
bWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRCb29sZWFudih1bnNpZ25lZCBsb25nIHBu
YW1lLCB1bnNpZ25lZCBjaGFyKiB2YWx1ZSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
LSAgICBHTGJvb2xlYW4gdmFsOwotICAgIC8vIEZJWE1FOiB2YWxpZGF0ZSBwbmFtZSB0byBlbnN1
cmUgaXQgcmV0dXJucyBvbmx5IGEgc2luZ2xlIHZhbHVlLgotICAgIGdsR2V0Qm9vbGVhbnYocG5h
bWUsICZ2YWwpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPih2YWwpOworICAgIGdsR2V0
Qm9vbGVhbnYocG5hbWUsIHZhbHVlKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJHTFVuc2lnbmVkQnl0
ZUFycmF5PiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0Qm9vbGVhbnYodW5zaWduZWQgbG9uZyBwbmFt
ZSkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50LgotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0g
ICAgcmV0dXJuIDA7Ci19Ci0KLWludCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QnVmZmVyUGFyYW1l
dGVyaSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSkKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldEJ1ZmZlclBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0
LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKQogewogICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOwotICAgIEdMaW50IGRhdGE7Ci0gICAgZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdih0YXJn
ZXQsIHBuYW1lLCAmZGF0YSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oZGF0YSk7Ci19
Ci0KLVBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gR3JhcGhpY3NDb250ZXh0M0Q6OmdldEJ1ZmZl
clBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKQot
ewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQuCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBy
ZXR1cm4gMDsKKyAgICBnbEdldEJ1ZmZlclBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsIHZhbHVl
KTsKIH0KIAogdW5zaWduZWQgbG9uZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXJyb3IoKQpAQCAt
MTQ3Miw3MiArMTQ0MCwzMyBAQCB1bnNpZ25lZCBsb25nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRF
cnJvCiAgICAgcmV0dXJuIGdsR2V0RXJyb3IoKTsKIH0KIAotZmxvYXQgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldEZsb2F0KHVuc2lnbmVkIGxvbmcgcG5hbWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpnZXRGbG9hdHYodW5zaWduZWQgbG9uZyBwbmFtZSwgZmxvYXQqIHZhbHVlKQogewogICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOwotICAgIEdMZmxvYXQgdmFsOwotICAgIC8vIEZJWE1FOiB2YWxp
ZGF0ZSBwbmFtZSB0byBlbnN1cmUgaXQgcmV0dXJucyBvbmx5IGEgc2luZ2xlIHZhbHVlLgotICAg
IGdsR2V0RmxvYXR2KHBuYW1lLCAmdmFsKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+
KHZhbCk7CisgICAgZ2xHZXRGbG9hdHYocG5hbWUsIHZhbHVlKTsKIH0KIAotUGFzc1JlZlB0cjxX
ZWJHTEZsb2F0QXJyYXk+IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRGbG9hdHYodW5zaWduZWQgbG9u
ZyBwbmFtZSkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50LgotICAgIG5vdEltcGxlbWVudGVk
KCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWludCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RnJhbWVi
dWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaSh1bnNpZ25lZCBsb25nIHRhcmdldCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBsb25nIGF0dGFjaG1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBwbmFtZSkKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHVuc2lnbmVkIGxv
bmcgdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBhdHRhY2htZW50LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9u
ZyBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCogdmFsdWUpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0g
ICAgR0xpbnQgZGF0YTsKLSAgICBnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2
KHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsICZkYXRhKTsKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8aW50PihkYXRhKTsKLX0KLQotUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYodW5zaWduZWQgbG9u
ZyB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBhdHRhY2ht
ZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0g
ICAgLy8gRklYTUU6IGltcGxlbWVudC4KLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVy
biAwOworICAgIGdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZFWFQodGFyZ2V0
LCBhdHRhY2htZW50LCBwbmFtZSwgdmFsdWUpOwogfQogCi1pbnQgR3JhcGhpY3NDb250ZXh0M0Q6
OmdldEludGVnZXIodW5zaWduZWQgbG9uZyBwbmFtZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmdldEludGVnZXJ2KHVuc2lnbmVkIGxvbmcgcG5hbWUsIGludCogdmFsdWUpCiB7CiAgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgR0xpbnQgdmFsOwotICAgIC8vIEZJWE1FOiB2YWxpZGF0
ZSBwbmFtZSB0byBlbnN1cmUgaXQgcmV0dXJucyBvbmx5IGEgc2luZ2xlIHZhbHVlLgotICAgIGds
R2V0SW50ZWdlcnYocG5hbWUsICZ2YWwpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHZh
bCk7Ci19Ci0KLVBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gR3JhcGhpY3NDb250ZXh0M0Q6Omdl
dEludGVnZXJ2KHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVu
dC4KLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAgIGdsR2V0SW50ZWdl
cnYocG5hbWUsIHZhbHVlKTsKIH0KIAotaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFt
aShXZWJHTFByb2dyYW0qIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGxvbmcgcG5hbWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9n
cmFtaXYoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGxvbmcgcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50KiB2YWx1ZSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAg
ICBHTGludCBwYXJhbTsKLSAgICBnbEdldFByb2dyYW1pdihFWFRSQUNUKHByb2dyYW0pLCBwbmFt
ZSwgJnBhcmFtKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihwYXJhbSk7Ci19Ci0KLVBh
c3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gR3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1pdihX
ZWJHTFByb2dyYW0qIHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgLy8g
RklYTUU6IGltcGxlbWVudC4KLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOwor
ICAgIGdsR2V0UHJvZ3JhbWl2KEVYVFJBQ1QocHJvZ3JhbSksIHBuYW1lLCB2YWx1ZSk7CiB9CiAK
IFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbUluZm9Mb2coV2ViR0xQcm9ncmFt
KiBwcm9ncmFtKQpAQCAtMTU1OSwzOCArMTQ4OCwyMCBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldFByb2dyYW1JbmZvCiAgICAgcmV0dXJuIHJlczsKIH0KIAotaW50IEdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGxvbmcgcG5hbWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRSZW5kZXJidWZmZXJQYXJh
bWV0ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgcG5hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIHZhbHVlKQogewog
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIEdMaW50IHBhcmFtOwotICAgIGdsR2V0UmVu
ZGVyYnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgJnBhcmFtKTsKLSAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8aW50PihwYXJhbSk7Ci19Ci0KLVBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4g
R3JhcGhpY3NDb250ZXh0M0Q6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KHVuc2lnbmVkIGxv
bmcgdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAg
Ly8gRklYTUU6IGltcGxlbWVudC4KLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAw
OworICAgIGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZFWFQodGFyZ2V0LCBwbmFtZSwgdmFs
dWUpOwogfQogCi1pbnQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlcmkoV2ViR0xTaGFkZXIq
IHNoYWRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25n
IHBuYW1lKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyaXYoV2ViR0xTaGFkZXIq
IHNoYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxv
bmcgcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIHZhbHVl
KQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIEdMaW50IHBhcmFtOwotICAgIGds
R2V0U2hhZGVyaXYoRVhUUkFDVChzaGFkZXIpLCBwbmFtZSwgJnBhcmFtKTsKLSAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8aW50PihwYXJhbSk7Ci19Ci0KLVBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4g
R3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlcml2KFdlYkdMU2hhZGVyKiBzaGFkZXIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50LgotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgZ2xHZXRTaGFkZXJpdihFWFRSQUNUKHNo
YWRlciksIHBuYW1lLCB2YWx1ZSk7CiB9CiAKIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
U2hhZGVySW5mb0xvZyhXZWJHTFNoYWRlciogc2hhZGVyKQpAQCAtMTYzNyw4MiArMTU0OCwyOCBA
QCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFN0cmluZyh1bnNpCiAgICAgcmV0dXJuIFN0
cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihnbEdldFN0cmluZyhuYW1lKSkpOwog
fQogCi1mbG9hdCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VGV4UGFyYW1ldGVyZih1bnNpZ25lZCBs
b25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmdldFRleFBhcmFtZXRlcmZ2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBu
YW1lLCBmbG9hdCogdmFsdWUpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgaWYg
KCFtX2ludGVybmFsLT52YWxpZGF0ZVRleHR1cmVUYXJnZXQodGFyZ2V0KSkgewotICAgICAgICAv
LyBGSVhNRTogdGhyb3cgZXhjZXB0aW9uLgotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAg
ICBpZiAoIW1faW50ZXJuYWwtPnZhbGlkYXRlVGV4dHVyZVBhcmFtZXRlcihwbmFtZSkpIHsKLSAg
ICAgICAgLy8gRklYTUU6IHRocm93IGV4Y2VwdGlvbi4KLSAgICAgICAgcmV0dXJuIDA7Ci0gICAg
fQotCi0gICAgR0xmbG9hdCBwYXJhbTsKLSAgICBnbEdldFRleFBhcmFtZXRlcmZ2KHRhcmdldCwg
cG5hbWUsICZwYXJhbSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihwYXJhbSk7Ci19
Ci0KLVBhc3NSZWZQdHI8V2ViR0xGbG9hdEFycmF5PiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VGV4
UGFyYW1ldGVyZnYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17
Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudC4KLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJl
dHVybiAwOworICAgIGdsR2V0VGV4UGFyYW1ldGVyZnYodGFyZ2V0LCBwbmFtZSwgdmFsdWUpOwog
fQogCi1pbnQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFRleFBhcmFtZXRlcmkodW5zaWduZWQgbG9u
ZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRUZXhQYXJhbWV0ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFt
ZSwgaW50KiB2YWx1ZSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICBpZiAoIW1f
aW50ZXJuYWwtPnZhbGlkYXRlVGV4dHVyZVRhcmdldCh0YXJnZXQpKSB7Ci0gICAgICAgIC8vIEZJ
WE1FOiB0aHJvdyBleGNlcHRpb24uCi0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIGlm
ICghbV9pbnRlcm5hbC0+dmFsaWRhdGVUZXh0dXJlUGFyYW1ldGVyKHBuYW1lKSkgewotICAgICAg
ICAvLyBGSVhNRTogdGhyb3cgZXhjZXB0aW9uLgotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0K
LSAgICBHTGludCBwYXJhbTsKLSAgICBnbEdldFRleFBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUs
ICZwYXJhbSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocGFyYW0pOwotfQotCi1QYXNz
UmVmUHRyPFdlYkdMSW50QXJyYXk+IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRUZXhQYXJhbWV0ZXJp
dih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICAvLyBG
SVhNRTogaW1wbGVtZW50LgotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7Cisg
ICAgZ2xHZXRUZXhQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CiB9CiAKLWZsb2F0
IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtZihXZWJHTFByb2dyYW0qIHByb2dyYW0sIGxv
bmcgbG9jYXRpb24pCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtZnYoV2ViR0xQ
cm9ncmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uLCBmbG9hdCogdmFsdWUpCiB7Ci0gICAgLy8g
RklYTUU6IGltcGxlbWVudC4KLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOwot
fQotCi1QYXNzUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gR3JhcGhpY3NDb250ZXh0M0Q6OmdldFVu
aWZvcm1mdihXZWJHTFByb2dyYW0qIHByb2dyYW0sIGxvbmcgbG9jYXRpb24pCi17Ci0gICAgLy8g
RklYTUU6IGltcGxlbWVudC4KLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOwot
fQotCi1pbnQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1pKFdlYkdMUHJvZ3JhbSogcHJv
Z3JhbSwgbG9uZyBsb2NhdGlvbikKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50LgotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
CisgICAgZ2xHZXRVbmlmb3JtZnYoRVhUUkFDVChwcm9ncmFtKSwgbG9jYXRpb24sIHZhbHVlKTsK
IH0KIAotUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5p
Zm9ybWl2KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBsb2NhdGlvbikKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmdldFVuaWZvcm1pdihXZWJHTFByb2dyYW0qIHByb2dyYW0sIGxvbmcgbG9j
YXRpb24sIGludCogdmFsdWUpCiB7Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudC4KLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwor
ICAgIGdsR2V0VW5pZm9ybWl2KEVYVFJBQ1QocHJvZ3JhbSksIGxvY2F0aW9uLCB2YWx1ZSk7CiB9
CiAKIGxvbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1Mb2NhdGlvbihXZWJHTFByb2dy
YW0qIHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSkKQEAgLTE3MjQsMzYgKzE1ODEsMjAgQEAg
bG9uZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybUxvY2F0aQogICAgIHJldHVybiBnbEdl
dFVuaWZvcm1Mb2NhdGlvbihFWFRSQUNUKHByb2dyYW0pLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwog
fQogCi1mbG9hdCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliZih1bnNpZ25lZCBs
b25nIGluZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50LgotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLVBhc3NSZWZQdHI8V2ViR0xGbG9hdEFy
cmF5PiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliZnYodW5zaWduZWQgbG9uZyBp
bmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgcG5hbWUpCit2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRWZXJ0ZXhBdHRyaWJmdih1bnNpZ25lZCBsb25nIGluZGV4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBwbmFtZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0KiB2YWx1ZSkKIHsKLSAg
ICAvLyBGSVhNRTogaW1wbGVtZW50LgotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJu
IDA7Ci19Ci0KLWludCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliaSh1bnNpZ25l
ZCBsb25nIGluZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudC4KLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwor
ICAgIGdsR2V0VmVydGV4QXR0cmliZnYoaW5kZXgsIHBuYW1lLCB2YWx1ZSk7CiB9CiAKLVBhc3NS
ZWZQdHI8V2ViR0xJbnRBcnJheT4gR3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYml2
KHVuc2lnbmVkIGxvbmcgaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBwbmFtZSkKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYml2KHVuc2lnbmVkIGxvbmcgaW5kZXgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25n
IHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KiB2
YWx1ZSkKIHsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50LgotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci0gICAgcmV0dXJuIDA7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgZ2xHZXRWZXJ0
ZXhBdHRyaWJpdihpbmRleCwgcG5hbWUsIHZhbHVlKTsKIH0KIAogbG9uZyBHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0KHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVk
IGxvbmcgcG5hbWUpCkBAIC0xNzgwLDcgKzE2MjEsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNE
Ojppc0VuYWJsZWQodW5zaWduCiBib29sIEdyYXBoaWNzQ29udGV4dDNEOjppc0ZyYW1lYnVmZmVy
KFdlYkdMRnJhbWVidWZmZXIqIGZyYW1lYnVmZmVyKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVu
dCgpOwotICAgIHJldHVybiBnbElzRnJhbWVidWZmZXIoRVhUUkFDVChmcmFtZWJ1ZmZlcikpOwor
ICAgIHJldHVybiBnbElzRnJhbWVidWZmZXJFWFQoRVhUUkFDVChmcmFtZWJ1ZmZlcikpOwogfQog
CiBib29sIEdyYXBoaWNzQ29udGV4dDNEOjppc1Byb2dyYW0oV2ViR0xQcm9ncmFtKiBwcm9ncmFt
KQpAQCAtMTc5Miw3ICsxNjMzLDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6aXNQcm9ncmFt
KFdlYkdMUAogYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6aXNSZW5kZXJidWZmZXIoV2ViR0xSZW5k
ZXJidWZmZXIqIHJlbmRlcmJ1ZmZlcikKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAg
ICByZXR1cm4gZ2xJc1JlbmRlcmJ1ZmZlcihFWFRSQUNUKHJlbmRlcmJ1ZmZlcikpOworICAgIHJl
dHVybiBnbElzUmVuZGVyYnVmZmVyRVhUKEVYVFJBQ1QocmVuZGVyYnVmZmVyKSk7CiB9CiAKIGJv
b2wgR3JhcGhpY3NDb250ZXh0M0Q6OmlzU2hhZGVyKFdlYkdMU2hhZGVyKiBzaGFkZXIpCkBAIC0x
ODQxLDcgKzE2ODIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZWxlYXNlU2hhZGVyQ29t
CiB7CiB9CiAKLUdMX1NBTUVfTUVUSE9EXzQoUmVuZGVyYnVmZmVyU3RvcmFnZSwgcmVuZGVyYnVm
ZmVyU3RvcmFnZSwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywg
dW5zaWduZWQgbG9uZykKK0dMX1NBTUVfTUVUSE9EXzQoUmVuZGVyYnVmZmVyU3RvcmFnZUVYVCwg
cmVuZGVyYnVmZmVyU3RvcmFnZSwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgdW5zaWdu
ZWQgbG9uZywgdW5zaWduZWQgbG9uZykKIAogR0xfU0FNRV9NRVRIT0RfMihTYW1wbGVDb3ZlcmFn
ZSwgc2FtcGxlQ292ZXJhZ2UsIGRvdWJsZSwgYm9vbCkKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNTEy
NzgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1
MyBAQAorMjAwOS0xMS0yMCAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlIGdldC4u
LiBjYWxscyB0byBsYXRlc3Qgc3BlYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzAwOTEKKworICAgICAgICBSZW1vdmVkIG9sZCB2ZXJzaW9ucyBvZiBn
ZXQgY2FsbHMgb24gV2ViR0xSZW5kZXJpbmdDb250ZXh0IGFuZAorICAgICAgICBhZGRlZCBuZXcg
b25lcyBwZXIgc3BlYyByZXR1cm5pbmcgImFueSIuIE5ldyBjb2RlIHNpbXBsaWZpZXMKKyAgICAg
ICAgR3JhcGhpY3NDb250ZXh0M0QgYW5kIGZpeGVzIHByZXZpb3VzbHkgdW5pbXBsZW1lbnRlZCBy
b3V0aW5lcy4KKyAgICAgICAgQWRkZWQgY3VzdG9tIEpTIGFuZCBWOCBiaW5kaW5ncy4gQWRkZWQg
ZXhoYXVzdGl2ZSB0ZXN0IGNhc2UKKyAgICAgICAgZXhlcmNpc2luZyBhbGwgbmV3IGNvZGUgcGF0
aHMuIFVwZGF0ZWQgcHJlZXhpc3RpbmcgdGVzdCBjYXNlcyBmb3IKKyAgICAgICAgbmV3IEFQSXMu
IEZpeGVkIHByZWV4aXN0aW5nIGJ1Z3MgaW4gV2ViS2l0J3MgYW5kIENocm9tZSdzIFdlYkdMCisg
ICAgICAgIGltcGxlbWVudGF0aW9ucy4KKworICAgICAgICBSYW4gV2ViR0wgbGF5b3V0IHRlc3Rz
IGluIFdlYktpdCAoY2xlYW4pIGFuZCBDaHJvbWUgKGNvdXBsZSBvZgorICAgICAgICBwcmVleGlz
dGluZyBrbm93biBmYWlsdXJlcykgYW5kIG1hbnVhbCBXZWJHTCB0ZXN0cyBpbiBib3RoCisgICAg
ICAgIGJyb3dzZXJzLgorCisgICAgICAgIFRlc3Q6IGZhc3QvY2FudmFzL3dlYmdsL2dsLW9iamVj
dC1nZXQtY2FsbHMuaHRtbAorCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvZ2wtZ2V0LWNh
bGxzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9nbC1nZXQtY2Fs
bHMuaHRtbDoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9nbC1vYmplY3QtZ2V0LWNhbGxz
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvZ2wtb2Jq
ZWN0LWdldC1jYWxscy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9p
bmNvcnJlY3QtY29udGV4dC1vYmplY3QtYmVoYXZpb3VyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBmYXN0L2NhbnZhcy93ZWJnbC9udWxsLW9iamVjdC1iZWhhdmlvdXItZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy9ib29sVW5pZm9ybVNoYWRlci52
ZXJ0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvZmxvYXRV
bmlmb3JtU2hhZGVyLnZlcnQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3Jl
c291cmNlcy9pbnRVbmlmb3JtU2hhZGVyLnZlcnQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2Fu
dmFzL3dlYmdsL3Jlc291cmNlcy9tYXRVbmlmb3JtU2hhZGVyLnZlcnQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy9ub29wVW5pZm9ybVNoYWRlci5mcmFnOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvdXRpbHMzZC5qczoK
KyAgICAgICAgKGluaXRXZWJHTCk6CisgICAgICAgIChsb2FkU2hhZGVyKToKKyAgICAgICAgKEZy
YW1lcmF0ZS5wcm90b3R5cGUuc25hcHNob3QpOgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmds
L3Jlc291cmNlcy93ZWJnbC10ZXN0LmpzOgorICAgICAgICAobG9hZFByb2dyYW0pOgorICAgICAg
ICAobG9hZFN0YW5kYXJkVmVydGV4U2hhZGVyKToKKyAgICAgICAgKGxvYWRWZXJ0ZXhTaGFkZXIp
OgorICAgICAgICAobG9hZFN0YW5kYXJkRnJhZ21lbnRTaGFkZXIpOgorICAgICAgICAobG9hZEZy
YWdtZW50U2hhZGVyKToKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMv
Z2wtb2JqZWN0LWdldC1jYWxscy5qczogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvd2Vi
Z2wvc2NyaXB0LXRlc3RzL2luY29ycmVjdC1jb250ZXh0LW9iamVjdC1iZWhhdmlvdXIuanM6Cisg
ICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL251bGwtb2JqZWN0LWJlaGF2
aW91ci5qczoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC90cmlhbmdsZS5odG1sOgorICAg
ICAgICAqIGZhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzOgorICAgICAgICAoc2hvdWxk
QmVOb25aZXJvKToKKyAgICAgICAgKHNob3VsZEJlTm9uTnVsbCk6CisKIDIwMDktMTEtMjAgIENo
cmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBCZXRoIERha2luLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtZ2V0
LWNhbGxzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy93ZWJnbC9nbC1nZXQtY2FsbHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA1MTI3OCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLWdldC1jYWxscy1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTEzLDYwICsxMyw2MSBAQCBDb250ZXh0IGNvbnRhaW5zIGdldEVycm9y
CiBQQVNTIGNvbnRleHQgY29udGFpbnMgZ2V0RXJyb3IKIAogQ2hlY2sgZGVmYXVsdCB2YWx1ZXMK
LVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuQUNUSVZFX1RFWFRVUkUpIGlzIGNvbnRl
eHQuVEVYVFVSRTAKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuQUxJQVNFRF9MSU5F
X1dJRFRIX1JBTkdFKSBpcyAxCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkFMSUFT
RURfUE9JTlRfU0laRV9SQU5HRSkgaXMgMQotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4
dC5BUlJBWV9CVUZGRVJfQklORElORykgaXMgMAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29u
dGV4dC5CTEVORCkgaXMgMAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5CTEVORF9D
T0xPUikgaXMgMAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5CTEVORF9EU1RfQUxQ
SEEpIGlzIDAKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuQkxFTkRfRFNUX1JHQikg
aXMgMAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5CTEVORF9FUVVBVElPTl9BTFBI
QSkgaXMgY29udGV4dC5GVU5DX0FERAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5C
TEVORF9FUVVBVElPTl9SR0IpIGlzIGNvbnRleHQuRlVOQ19BREQKLVBBU1MgY29udGV4dC5nZXRJ
bnRlZ2VyKGNvbnRleHQuQkxFTkRfU1JDX0FMUEhBKSBpcyAxCi1QQVNTIGNvbnRleHQuZ2V0SW50
ZWdlcihjb250ZXh0LkJMRU5EX1NSQ19SR0IpIGlzIDEKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2Vy
KGNvbnRleHQuQ09MT1JfQ0xFQVJfVkFMVUUpIGlzIDAKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2Vy
KGNvbnRleHQuQ09MT1JfV1JJVEVNQVNLKSBpcyAxCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihj
b250ZXh0LkNVTExfRkFDRSkgaXMgMAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5D
VUxMX0ZBQ0VfTU9ERSkgaXMgY29udGV4dC5CQUNLCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihj
b250ZXh0LkNVUlJFTlRfUFJPR1JBTSkgaXMgMAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29u
dGV4dC5ERVBUSF9GVU5DKSBpcyBjb250ZXh0LkxFU1MKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2Vy
KGNvbnRleHQuREVQVEhfUkFOR0UpIGlzIDAKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRl
eHQuREVQVEhfVEVTVCkgaXMgMAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5ERVBU
SF9XUklURU1BU0spIGlzIDEKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuRElUSEVS
KSBpcyAxCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkVMRU1FTlRfQVJSQVlfQlVG
RkVSX0JJTkRJTkcpIGlzIDAKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuRlJPTlRf
RkFDRSkgaXMgY29udGV4dC5DQ1cKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuR0VO
RVJBVEVfTUlQTUFQX0hJTlQpIGlzIGNvbnRleHQuRE9OVF9DQVJFCi1QQVNTIGNvbnRleHQuZ2V0
SW50ZWdlcihjb250ZXh0LkxJTkVfV0lEVEgpIGlzIDEKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2Vy
KGNvbnRleHQuUE9MWUdPTl9PRkZTRVRfRkFDVE9SKSBpcyAwCi1QQVNTIGNvbnRleHQuZ2V0SW50
ZWdlcihjb250ZXh0LlBPTFlHT05fT0ZGU0VUX0ZJTEwpIGlzIDAKLVBBU1MgY29udGV4dC5nZXRJ
bnRlZ2VyKGNvbnRleHQuUE9MWUdPTl9PRkZTRVRfVU5JVFMpIGlzIDAKLVBBU1MgY29udGV4dC5n
ZXRJbnRlZ2VyKGNvbnRleHQuUkVOREVSQlVGRkVSX0JJTkRJTkdfRVhUKSBpcyAwCi1QQVNTIGNv
bnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlNBTVBMRV9DT1ZFUkFHRV9JTlZFUlQpIGlzIDAKLVBB
U1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuU0FNUExFX0NPVkVSQUdFX1ZBTFVFKSBpcyAx
Ci1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlNDSVNTT1JfQk9YKSBpcyAwCi1QQVNT
IGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlNDSVNTT1JfVEVTVCkgaXMgMAotUEFTUyBjb250
ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVOQ0lMX0JBQ0tfRkFJTCkgaXMgY29udGV4dC5LRUVQ
Ci1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlNURU5DSUxfQkFDS19GVU5DKSBpcyBj
b250ZXh0LkFMV0FZUwotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVOQ0lMX0JB
Q0tfUEFTU19ERVBUSF9GQUlMKSBpcyBjb250ZXh0LktFRVAKLVBBU1MgY29udGV4dC5nZXRJbnRl
Z2VyKGNvbnRleHQuU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTUykgaXMgY29udGV4dC5LRUVQ
Ci1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlNURU5DSUxfQkFDS19SRUYpIGlzIDAK
LVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9CQUNLX1ZBTFVFX01BU0sp
IGlzIC0xCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlNURU5DSUxfQkFDS19XUklU
RU1BU0spIGlzIC0xCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlNURU5DSUxfQklU
UykgaXMgMAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVOQ0lMX0NMRUFSX1ZB
TFVFKSBpcyAwCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlNURU5DSUxfRkFJTCkg
aXMgY29udGV4dC5LRUVQCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlNURU5DSUxf
RlVOQykgaXMgY29udGV4dC5BTFdBWVMKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQu
U1RFTkNJTF9QQVNTX0RFUFRIX0ZBSUwpIGlzIGNvbnRleHQuS0VFUAotUEFTUyBjb250ZXh0Lmdl
dEludGVnZXIoY29udGV4dC5TVEVOQ0lMX1BBU1NfREVQVEhfUEFTUykgaXMgY29udGV4dC5LRUVQ
Ci1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlNURU5DSUxfUkVGKSBpcyAwCi1QQVNT
IGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlNURU5DSUxfVEVTVCkgaXMgMAotUEFTUyBjb250
ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVOQ0lMX1ZBTFVFX01BU0spIGlzIC0xCi1QQVNTIGNv
bnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlNURU5DSUxfV1JJVEVNQVNLKSBpcyAtMQotUEFTUyBj
b250ZXh0LmdldEludGVnZXIoY29udGV4dC5URVhUVVJFX0JJTkRJTkdfMkQpIGlzIDAKLVBBU1Mg
Y29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQKSBpcyAw
Ci1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlZJRVdQT1JUKSBpcyAwCitQQVNTIGNv
bnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQUNUSVZFX1RFWFRVUkUpIGlzIGNvbnRleHQuVEVY
VFVSRTAKK1BBU1MgKGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQUxJQVNFRF9MSU5FX1dJ
RFRIX1JBTkdFKVswXSA9PSAxKSB8fCAoY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5BTElB
U0VEX0xJTkVfV0lEVEhfUkFOR0UpWzFdID09IDEpIGlzIHRydWUKK1BBU1MgKGNvbnRleHQuZ2V0
UGFyYW1ldGVyKGNvbnRleHQuQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFKVswXSA9PSAxKSB8fCAo
Y29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5BTElBU0VEX1BPSU5UX1NJWkVfUkFOR0UpWzFd
ID09IDEpIGlzIHRydWUKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5BUlJBWV9C
VUZGRVJfQklORElORykgaXMgbnVsbAorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0
LkJMRU5EKSBpcyBmYWxzZQorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkJMRU5E
X0NPTE9SKSBpcyBbMCwgMCwgMCwgMF0KK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4
dC5CTEVORF9EU1RfQUxQSEEpIGlzIDAKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4
dC5CTEVORF9EU1RfUkdCKSBpcyAwCitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQu
QkxFTkRfRVFVQVRJT05fQUxQSEEpIGlzIGNvbnRleHQuRlVOQ19BREQKK1BBU1MgY29udGV4dC5n
ZXRQYXJhbWV0ZXIoY29udGV4dC5CTEVORF9FUVVBVElPTl9SR0IpIGlzIGNvbnRleHQuRlVOQ19B
REQKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5CTEVORF9TUkNfQUxQSEEpIGlz
IDEKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5CTEVORF9TUkNfUkdCKSBpcyAx
CitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQ09MT1JfQ0xFQVJfVkFMVUUpIGlz
IFswLCAwLCAwLCAwXQorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkNPTE9SX1dS
SVRFTUFTSykgaXMgWzEsIDEsIDEsIDFdCitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRl
eHQuQ1VMTF9GQUNFKSBpcyBmYWxzZQorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0
LkNVTExfRkFDRV9NT0RFKSBpcyBjb250ZXh0LkJBQ0sKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0
ZXIoY29udGV4dC5DVVJSRU5UX1BST0dSQU0pIGlzIG51bGwKK1BBU1MgY29udGV4dC5nZXRQYXJh
bWV0ZXIoY29udGV4dC5ERVBUSF9GVU5DKSBpcyBjb250ZXh0LkxFU1MKK1BBU1MgY29udGV4dC5n
ZXRQYXJhbWV0ZXIoY29udGV4dC5ERVBUSF9SQU5HRSkgaXMgWzAsIDFdCitQQVNTIGNvbnRleHQu
Z2V0UGFyYW1ldGVyKGNvbnRleHQuREVQVEhfVEVTVCkgaXMgZmFsc2UKK1BBU1MgY29udGV4dC5n
ZXRQYXJhbWV0ZXIoY29udGV4dC5ERVBUSF9XUklURU1BU0spIGlzIHRydWUKK1BBU1MgY29udGV4
dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5ESVRIRVIpIGlzIHRydWUKK1BBU1MgY29udGV4dC5nZXRQ
YXJhbWV0ZXIoY29udGV4dC5FTEVNRU5UX0FSUkFZX0JVRkZFUl9CSU5ESU5HKSBpcyBudWxsCitQ
QVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuRlJPTlRfRkFDRSkgaXMgY29udGV4dC5D
Q1cKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5HRU5FUkFURV9NSVBNQVBfSElO
VCkgaXMgY29udGV4dC5ET05UX0NBUkUKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4
dC5MSU5FX1dJRFRIKSBpcyAxCitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuUE9M
WUdPTl9PRkZTRVRfRkFDVE9SKSBpcyAwCitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRl
eHQuUE9MWUdPTl9PRkZTRVRfRklMTCkgaXMgZmFsc2UKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0
ZXIoY29udGV4dC5QT0xZR09OX09GRlNFVF9VTklUUykgaXMgMAorUEFTUyBjb250ZXh0LmdldFBh
cmFtZXRlcihjb250ZXh0LlJFTkRFUkJVRkZFUl9CSU5ESU5HKSBpcyBudWxsCitQQVNTIGNvbnRl
eHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU0FNUExFX0NPVkVSQUdFX0lOVkVSVCkgaXMgZmFsc2UK
K1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TQU1QTEVfQ09WRVJBR0VfVkFMVUUp
IGlzIDEKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TQ0lTU09SX0JPWClbMF0g
aXMgMAorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNDSVNTT1JfQk9YKVsxXSBp
cyAwCitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU0NJU1NPUl9URVNUKSBpcyBm
YWxzZQorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5DSUxfQkFDS19GQUlM
KSBpcyBjb250ZXh0LktFRVAKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVO
Q0lMX0JBQ0tfRlVOQykgaXMgY29udGV4dC5BTFdBWVMKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0
ZXIoY29udGV4dC5TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9GQUlMKSBpcyBjb250ZXh0LktFRVAK
K1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX0JBQ0tfUEFTU19ERVBU
SF9QQVNTKSBpcyBjb250ZXh0LktFRVAKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4
dC5TVEVOQ0lMX0JBQ0tfUkVGKSBpcyAwCitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRl
eHQuU1RFTkNJTF9CQUNLX1ZBTFVFX01BU0spIGlzIDB4RkZGRkZGRkYKK1BBU1MgY29udGV4dC5n
ZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLKSBpcyAweEZGRkZGRkZG
CitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9CSVRTKSBpcyAwCitQ
QVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9DTEVBUl9WQUxVRSkgaXMg
MAorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5DSUxfRkFJTCkgaXMgY29u
dGV4dC5LRUVQCitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9GVU5D
KSBpcyBjb250ZXh0LkFMV0FZUworUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNU
RU5DSUxfUEFTU19ERVBUSF9GQUlMKSBpcyBjb250ZXh0LktFRVAKK1BBU1MgY29udGV4dC5nZXRQ
YXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX1BBU1NfREVQVEhfUEFTUykgaXMgY29udGV4dC5LRUVQ
CitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9SRUYpIGlzIDAKK1BB
U1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX1RFU1QpIGlzIGZhbHNlCitQ
QVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9WQUxVRV9NQVNLKSBpcyAw
eEZGRkZGRkZGCitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9XUklU
RU1BU0spIGlzIDB4RkZGRkZGRkYKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5U
RVhUVVJFX0JJTkRJTkdfMkQpIGlzIG51bGwKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29u
dGV4dC5URVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVApIGlzIG51bGwKK1BBU1MgY29udGV4dC5nZXRQ
YXJhbWV0ZXIoY29udGV4dC5WSUVXUE9SVCkgaXMgWzAsIDAsIDIsIDJdCiAKIFBBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2Vi
Z2wvZ2wtZ2V0LWNhbGxzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvd2ViZ2wvZ2wtZ2V0LWNhbGxzLmh0bWwJKHJldmlzaW9uIDUxMjc4KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtZ2V0LWNhbGxzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTcsNyArNyw3IEBACiA8Ym9keT4KIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KIDxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgotPGNhbnZhcyBpZD0iY2FudmFzIj4gPC9jYW52YXM+Cis8Y2Fu
dmFzIGlkPSJjYW52YXMiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiPiA8L2NhbnZhcz4KIAogPHNjcmlw
dD4KIApAQCAtMzgsNjAgKzM4LDYxIEBAIGVsc2UgewogCiAgICAgZGVidWcoIiIpOwogICAgIGRl
YnVnKCJDaGVjayBkZWZhdWx0IHZhbHVlcyIpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldElu
dGVnZXIoY29udGV4dC5BQ1RJVkVfVEVYVFVSRSknLCAnY29udGV4dC5URVhUVVJFMCcpOwotICAg
IHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5BTElBU0VEX0xJTkVfV0lEVEhf
UkFOR0UpJywgJzEnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQu
QUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFKScsICcxJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQu
Z2V0SW50ZWdlcihjb250ZXh0LkFSUkFZX0JVRkZFUl9CSU5ESU5HKScsICcwJyk7Ci0gICAgc2hv
dWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkJMRU5EKScsICcwJyk7Ci0gICAgc2hv
dWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkJMRU5EX0NPTE9SKScsICcwJyk7Ci0g
ICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkJMRU5EX0RTVF9BTFBIQSkn
LCAnMCcpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5CTEVORF9E
U1RfUkdCKScsICcwJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0
LkJMRU5EX0VRVUFUSU9OX0FMUEhBKScsICdjb250ZXh0LkZVTkNfQUREJyk7Ci0gICAgc2hvdWxk
QmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkJMRU5EX0VRVUFUSU9OX1JHQiknLCAnY29u
dGV4dC5GVU5DX0FERCcpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4
dC5CTEVORF9TUkNfQUxQSEEpJywgJzEnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRl
Z2VyKGNvbnRleHQuQkxFTkRfU1JDX1JHQiknLCAnMScpOwotICAgIHNob3VsZEJlKCdjb250ZXh0
LmdldEludGVnZXIoY29udGV4dC5DT0xPUl9DTEVBUl9WQUxVRSknLCAnMCcpOwotICAgIHNob3Vs
ZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5DT0xPUl9XUklURU1BU0spJywgJzEnKTsK
LSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuQ1VMTF9GQUNFKScsICcw
Jyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkNVTExfRkFDRV9N
T0RFKScsICdjb250ZXh0LkJBQ0snKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2Vy
KGNvbnRleHQuQ1VSUkVOVF9QUk9HUkFNKScsICcwJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQu
Z2V0SW50ZWdlcihjb250ZXh0LkRFUFRIX0ZVTkMpJywgJ2NvbnRleHQuTEVTUycpOwotICAgIHNo
b3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5ERVBUSF9SQU5HRSknLCAnMCcpOwot
ICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5ERVBUSF9URVNUKScsICcw
Jyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkRFUFRIX1dSSVRF
TUFTSyknLCAnMScpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5E
SVRIRVIpJywgJzEnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQu
RUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElORyknLCAnMCcpOwotICAgIHNob3VsZEJlKCdjb250
ZXh0LmdldEludGVnZXIoY29udGV4dC5GUk9OVF9GQUNFKScsICdjb250ZXh0LkNDVycpOwotICAg
IHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5HRU5FUkFURV9NSVBNQVBfSElO
VCknLCAnY29udGV4dC5ET05UX0NBUkUnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRl
Z2VyKGNvbnRleHQuTElORV9XSURUSCknLCAnMScpOwotICAgIHNob3VsZEJlKCdjb250ZXh0Lmdl
dEludGVnZXIoY29udGV4dC5QT0xZR09OX09GRlNFVF9GQUNUT1IpJywgJzAnKTsKLSAgICBzaG91
bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuUE9MWUdPTl9PRkZTRVRfRklMTCknLCAn
MCcpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5QT0xZR09OX09G
RlNFVF9VTklUUyknLCAnMCcpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29u
dGV4dC5SRU5ERVJCVUZGRVJfQklORElOR19FWFQpJywgJzAnKTsKLSAgICBzaG91bGRCZSgnY29u
dGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuU0FNUExFX0NPVkVSQUdFX0lOVkVSVCknLCAnMCcpOwot
ICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TQU1QTEVfQ09WRVJBR0Vf
VkFMVUUpJywgJzEnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQu
U0NJU1NPUl9CT1gpJywgJzAnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNv
bnRleHQuU0NJU1NPUl9URVNUKScsICcwJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50
ZWdlcihjb250ZXh0LlNURU5DSUxfQkFDS19GQUlMKScsICdjb250ZXh0LktFRVAnKTsKLSAgICBz
aG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9CQUNLX0ZVTkMpJywg
J2NvbnRleHQuQUxXQVlTJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250
ZXh0LlNURU5DSUxfQkFDS19QQVNTX0RFUFRIX0ZBSUwpJywgJ2NvbnRleHQuS0VFUCcpOwotICAg
IHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVOQ0lMX0JBQ0tfUEFTU19E
RVBUSF9QQVNTKScsICdjb250ZXh0LktFRVAnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJ
bnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9CQUNLX1JFRiknLCAnMCcpOwotICAgIHNob3VsZEJlKCdj
b250ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVOQ0lMX0JBQ0tfVkFMVUVfTUFTSyknLCAnLTEn
KTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9CQUNL
X1dSSVRFTUFTSyknLCAnLTEnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNv
bnRleHQuU1RFTkNJTF9CSVRTKScsICcwJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50
ZWdlcihjb250ZXh0LlNURU5DSUxfQ0xFQVJfVkFMVUUpJywgJzAnKTsKLSAgICBzaG91bGRCZSgn
Y29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9GQUlMKScsICdjb250ZXh0LktFRVAn
KTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9GVU5D
KScsICdjb250ZXh0LkFMV0FZUycpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIo
Y29udGV4dC5TVEVOQ0lMX1BBU1NfREVQVEhfRkFJTCknLCAnY29udGV4dC5LRUVQJyk7Ci0gICAg
c2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlNURU5DSUxfUEFTU19ERVBUSF9Q
QVNTKScsICdjb250ZXh0LktFRVAnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2Vy
KGNvbnRleHQuU1RFTkNJTF9SRUYpJywgJzAnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJ
bnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9URVNUKScsICcwJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRl
eHQuZ2V0SW50ZWdlcihjb250ZXh0LlNURU5DSUxfVkFMVUVfTUFTSyknLCAnLTEnKTsKLSAgICBz
aG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9XUklURU1BU0spJywg
Jy0xJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlRFWFRVUkVf
QklORElOR18yRCknLCAnMCcpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29u
dGV4dC5URVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVApJywgJzAnKTsKLSAgICBzaG91bGRCZSgnY29u
dGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuVklFV1BPUlQpJywgJzAnKTsKKyAgICBzaG91bGRCZSgn
Y29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5BQ1RJVkVfVEVYVFVSRSknLCAnY29udGV4dC5U
RVhUVVJFMCcpOworICAgIHNob3VsZEJlKCcoY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5B
TElBU0VEX0xJTkVfV0lEVEhfUkFOR0UpWzBdID09IDEpIHx8IChjb250ZXh0LmdldFBhcmFtZXRl
cihjb250ZXh0LkFMSUFTRURfTElORV9XSURUSF9SQU5HRSlbMV0gPT0gMSknLCAndHJ1ZScpOwor
ICAgIHNob3VsZEJlKCcoY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5BTElBU0VEX1BPSU5U
X1NJWkVfUkFOR0UpWzBdID09IDEpIHx8IChjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkFM
SUFTRURfUE9JTlRfU0laRV9SQU5HRSlbMV0gPT0gMSknLCAndHJ1ZScpOworICAgIHNob3VsZEJl
KCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkFSUkFZX0JVRkZFUl9CSU5ESU5HKScsICdu
dWxsJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQkxFTkQp
JywgJ2ZhbHNlJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQu
QkxFTkRfQ09MT1IpJywgJ1swLCAwLCAwLCAwXScpOworICAgIHNob3VsZEJlKCdjb250ZXh0Lmdl
dFBhcmFtZXRlcihjb250ZXh0LkJMRU5EX0RTVF9BTFBIQSknLCAnMCcpOworICAgIHNob3VsZEJl
KCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkJMRU5EX0RTVF9SR0IpJywgJzAnKTsKKyAg
ICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5CTEVORF9FUVVBVElPTl9B
TFBIQSknLCAnY29udGV4dC5GVU5DX0FERCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBh
cmFtZXRlcihjb250ZXh0LkJMRU5EX0VRVUFUSU9OX1JHQiknLCAnY29udGV4dC5GVU5DX0FERCcp
OworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkJMRU5EX1NSQ19B
TFBIQSknLCAnMScpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0
LkJMRU5EX1NSQ19SR0IpJywgJzEnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0
ZXIoY29udGV4dC5DT0xPUl9DTEVBUl9WQUxVRSknLCAnWzAsIDAsIDAsIDBdJyk7CisgICAgc2hv
dWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQ09MT1JfV1JJVEVNQVNLKScsICdb
MSwgMSwgMSwgMV0nKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4
dC5DVUxMX0ZBQ0UpJywgJ2ZhbHNlJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1l
dGVyKGNvbnRleHQuQ1VMTF9GQUNFX01PREUpJywgJ2NvbnRleHQuQkFDSycpOworICAgIHNob3Vs
ZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkNVUlJFTlRfUFJPR1JBTSknLCAnbnVs
bCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkRFUFRIX0ZV
TkMpJywgJ2NvbnRleHQuTEVTUycpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRl
cihjb250ZXh0LkRFUFRIX1JBTkdFKScsICdbMCwgMV0nKTsKKyAgICBzaG91bGRCZSgnY29udGV4
dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5ERVBUSF9URVNUKScsICdmYWxzZScpOworICAgIHNob3Vs
ZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkRFUFRIX1dSSVRFTUFTSyknLCAndHJ1
ZScpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkRJVEhFUikn
LCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkVM
RU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkcpJywgJ251bGwnKTsKKyAgICBzaG91bGRCZSgnY29u
dGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5GUk9OVF9GQUNFKScsICdjb250ZXh0LkNDVycpOwor
ICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkdFTkVSQVRFX01JUE1B
UF9ISU5UKScsICdjb250ZXh0LkRPTlRfQ0FSRScpOworICAgIHNob3VsZEJlKCdjb250ZXh0Lmdl
dFBhcmFtZXRlcihjb250ZXh0LkxJTkVfV0lEVEgpJywgJzEnKTsKKyAgICBzaG91bGRCZSgnY29u
dGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5QT0xZR09OX09GRlNFVF9GQUNUT1IpJywgJzAnKTsK
KyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5QT0xZR09OX09GRlNF
VF9GSUxMKScsICdmYWxzZScpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihj
b250ZXh0LlBPTFlHT05fT0ZGU0VUX1VOSVRTKScsICcwJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRl
eHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuUkVOREVSQlVGRkVSX0JJTkRJTkcpJywgJ251bGwnKTsK
KyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TQU1QTEVfQ09WRVJB
R0VfSU5WRVJUKScsICdmYWxzZScpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRl
cihjb250ZXh0LlNBTVBMRV9DT1ZFUkFHRV9WQUxVRSknLCAnMScpOworICAgIHNob3VsZEJlKCdj
b250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNDSVNTT1JfQk9YKVswXScsICcwJyk7CisgICAg
c2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU0NJU1NPUl9CT1gpWzFdJywg
JzAnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TQ0lTU09S
X1RFU1QpJywgJ2ZhbHNlJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNv
bnRleHQuU1RFTkNJTF9CQUNLX0ZBSUwpJywgJ2NvbnRleHQuS0VFUCcpOworICAgIHNob3VsZEJl
KCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5DSUxfQkFDS19GVU5DKScsICdjb250
ZXh0LkFMV0FZUycpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0
LlNURU5DSUxfQkFDS19QQVNTX0RFUFRIX0ZBSUwpJywgJ2NvbnRleHQuS0VFUCcpOworICAgIHNo
b3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5DSUxfQkFDS19QQVNTX0RF
UFRIX1BBU1MpJywgJ2NvbnRleHQuS0VFUCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBh
cmFtZXRlcihjb250ZXh0LlNURU5DSUxfQkFDS19SRUYpJywgJzAnKTsKKyAgICBzaG91bGRCZSgn
Y29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX0JBQ0tfVkFMVUVfTUFTSyknLCAn
MHhGRkZGRkZGRicpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0
LlNURU5DSUxfQkFDS19XUklURU1BU0spJywgJzB4RkZGRkZGRkYnKTsKKyAgICBzaG91bGRCZSgn
Y29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX0JJVFMpJywgJzAnKTsKKyAgICBz
aG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX0NMRUFSX1ZBTFVF
KScsICcwJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RF
TkNJTF9GQUlMKScsICdjb250ZXh0LktFRVAnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQ
YXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX0ZVTkMpJywgJ2NvbnRleHQuQUxXQVlTJyk7CisgICAg
c2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9QQVNTX0RFUFRI
X0ZBSUwpJywgJ2NvbnRleHQuS0VFUCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFt
ZXRlcihjb250ZXh0LlNURU5DSUxfUEFTU19ERVBUSF9QQVNTKScsICdjb250ZXh0LktFRVAnKTsK
KyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX1JFRikn
LCAnMCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5D
SUxfVEVTVCknLCAnZmFsc2UnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIo
Y29udGV4dC5TVEVOQ0lMX1ZBTFVFX01BU0spJywgJzB4RkZGRkZGRkYnKTsKKyAgICBzaG91bGRC
ZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX1dSSVRFTUFTSyknLCAnMHhG
RkZGRkZGRicpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlRF
WFRVUkVfQklORElOR18yRCknLCAnbnVsbCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBh
cmFtZXRlcihjb250ZXh0LlRFWFRVUkVfQklORElOR19DVUJFX01BUCknLCAnbnVsbCcpOworICAg
IHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlZJRVdQT1JUKScsICdbMCwg
MCwgMiwgMl0nKTsKIH0KIAogZGVidWcoIiIpOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvd2ViZ2wvZ2wtb2JqZWN0LWdldC1jYWxscy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtb2JqZWN0LWdldC1jYWxscy1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC1v
YmplY3QtZ2V0LWNhbGxzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MCBA
QAorVGVzdCBvZiBnZXQgY2FsbHMgYWdhaW5zdCBHTCBvYmplY3RzIGxpa2UgZ2V0QnVmZmVyUGFy
YW1ldGVyLCBldGMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyBnbC5nZXRC
dWZmZXJQYXJhbWV0ZXIoZ2wuQVJSQVlfQlVGRkVSLCBnbC5CVUZGRVJfU0laRSkgaXMgMTYKK1BB
U1MgZ2wuZ2V0QnVmZmVyUGFyYW1ldGVyKGdsLkFSUkFZX0JVRkZFUiwgZ2wuQlVGRkVSX1VTQUdF
KSBpcyBnbC5EWU5BTUlDX0RSQVcKK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyAwCitQQVNTIGdsLmdl
dEVycm9yKCkgaXMgMAorUEFTUyBnbC5nZXRFcnJvcigpIGlzIDAKK1BBU1MgZ2wuY2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikgaXMgZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUK
K1BBU1MgZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVS
LCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1Rf
VFlQRSkgaXMgZ2wuVEVYVFVSRQorUEFTUyBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJh
bWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5GUkFNRUJVRkZF
Ul9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FKSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0RnJhbWVi
dWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hN
RU5UMCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xFVkVMKSBpcyAwCitQQVNT
IGdsLmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wu
Q09MT1JfQVRUQUNITUVOVDAsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9DVUJF
X01BUF9GQUNFKSBpcyAwCitQQVNTIGdsLmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRl
cihnbC5GUkFNRUJVRkZFUiwgZ2wuREVQVEhfQVRUQUNITUVOVCwgZ2wuRlJBTUVCVUZGRVJfQVRU
QUNITUVOVF9PQkpFQ1RfVFlQRSkgaXMgZ2wuUkVOREVSQlVGRkVSCitQQVNTIGdsLmdldEZyYW1l
YnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuREVQVEhfQVRUQUNI
TUVOVCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRSkgaXMgbm9uLW51bGwu
CitQQVNTIGdsLmdldFByb2dyYW1QYXJhbWV0ZXIoc3RhbmRhcmRQcm9ncmFtLCBnbC5ERUxFVEVf
U1RBVFVTKSBpcyBmYWxzZQorUEFTUyBnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHN0YW5kYXJkUHJv
Z3JhbSwgZ2wuTElOS19TVEFUVVMpIGlzIHRydWUKK1BBU1MgdHlwZW9mIGdsLmdldFByb2dyYW1Q
YXJhbWV0ZXIoc3RhbmRhcmRQcm9ncmFtLCBnbC5WQUxJREFURV9TVEFUVVMpIGlzICJib29sZWFu
IgorUEFTUyB0eXBlb2YgZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihzdGFuZGFyZFByb2dyYW0sIGds
LklORk9fTE9HX0xFTkdUSCkgaXMgIm51bWJlciIKK1BBU1MgZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRl
cihzdGFuZGFyZFByb2dyYW0sIGdsLkFUVEFDSEVEX1NIQURFUlMpIGlzIDIKK1BBU1MgZ2wuZ2V0
UHJvZ3JhbVBhcmFtZXRlcihzdGFuZGFyZFByb2dyYW0sIGdsLkFDVElWRV9BVFRSSUJVVEVTKSBp
cyAyCitQQVNTIGdsLmdldFByb2dyYW1QYXJhbWV0ZXIoc3RhbmRhcmRQcm9ncmFtLCBnbC5BQ1RJ
VkVfQVRUUklCVVRFX01BWF9MRU5HVEgpIGlzIG5vbi16ZXJvLgorUEFTUyBnbC5nZXRQcm9ncmFt
UGFyYW1ldGVyKHN0YW5kYXJkUHJvZ3JhbSwgZ2wuQUNUSVZFX1VOSUZPUk1TKSBpcyAxCitQQVNT
IGdsLmdldFByb2dyYW1QYXJhbWV0ZXIoc3RhbmRhcmRQcm9ncmFtLCBnbC5BQ1RJVkVfVU5JRk9S
TV9NQVhfTEVOR1RIKSBpcyBub24temVyby4KK1BBU1MgZ2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1l
dGVyKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkVOREVSQlVGRkVSX1dJRFRIKSBpcyAyCitQQVNTIGds
LmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcihnbC5SRU5ERVJCVUZGRVIsIGdsLlJFTkRFUkJVRkZF
Ul9IRUlHSFQpIGlzIDIKK1BBU1MgZ2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKGdsLlJFTkRF
UkJVRkZFUiwgZ2wuUkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVCkgaXMgbm9uLXplcm8uCitQ
QVNTIGdsLmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcihnbC5SRU5ERVJCVUZGRVIsIGdsLlJFTkRF
UkJVRkZFUl9ERVBUSF9TSVpFKSBpcyBub24temVyby4KK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyAw
CitQQVNTIGdsLmdldEVycm9yKCkgaXMgMAorUEFTUyBnbC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0
ZXIoZ2wuUkVOREVSQlVGRkVSLCBnbC5SRU5ERVJCVUZGRVJfUkVEX1NJWkUpIGlzIG5vbi16ZXJv
LgorUEFTUyBnbC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBnbC5S
RU5ERVJCVUZGRVJfR1JFRU5fU0laRSkgaXMgbm9uLXplcm8uCitQQVNTIGdsLmdldFJlbmRlcmJ1
ZmZlclBhcmFtZXRlcihnbC5SRU5ERVJCVUZGRVIsIGdsLlJFTkRFUkJVRkZFUl9CTFVFX1NJWkUp
IGlzIG5vbi16ZXJvLgorUEFTUyBnbC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoZ2wuUkVOREVS
QlVGRkVSLCBnbC5SRU5ERVJCVUZGRVJfQUxQSEFfU0laRSkgaXMgbm9uLXplcm8uCitQQVNTIGds
LmdldFNoYWRlclBhcmFtZXRlcihzdGFuZGFyZFZlcnQsIGdsLlNIQURFUl9UWVBFKSBpcyBnbC5W
RVJURVhfU0hBREVSCitQQVNTIGdsLmdldFNoYWRlclBhcmFtZXRlcihzdGFuZGFyZFZlcnQsIGds
LkRFTEVURV9TVEFUVVMpIGlzIGZhbHNlCitQQVNTIGdsLmdldFNoYWRlclBhcmFtZXRlcihzdGFu
ZGFyZFZlcnQsIGdsLkNPTVBJTEVfU1RBVFVTKSBpcyB0cnVlCitQQVNTIHR5cGVvZiBnbC5nZXRT
aGFkZXJQYXJhbWV0ZXIoc3RhbmRhcmRWZXJ0LCBnbC5JTkZPX0xPR19MRU5HVEgpIGlzICJudW1i
ZXIiCitQQVNTIGdsLmdldFNoYWRlclBhcmFtZXRlcihzdGFuZGFyZFZlcnQsIGdsLlNIQURFUl9T
T1VSQ0VfTEVOR1RIKSBpcyBub24temVyby4KK1BBU1MgZ2wuZ2V0VGV4UGFyYW1ldGVyKGdsLlRF
WFRVUkVfMkQsIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUikgaXMgZ2wuTkVBUkVTVAorUEFTUyBnbC5n
ZXRUZXhQYXJhbWV0ZXIoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSKSBpcyBn
bC5ORUFSRVNUCitQQVNTIGdsLmdldFRleFBhcmFtZXRlcihnbC5URVhUVVJFXzJELCBnbC5URVhU
VVJFX1dSQVBfUykgaXMgZ2wuQ0xBTVBfVE9fRURHRQorUEFTUyBnbC5nZXRUZXhQYXJhbWV0ZXIo
Z2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1QpIGlzIGdsLkNMQU1QX1RPX0VER0UKK1BB
U1MgZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihib29sUHJvZ3JhbSwgZ2wuTElOS19TVEFUVVMpIGlz
IHRydWUKK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyAwCitQQVNTIGdsLmdldFVuaWZvcm0oYm9vbFBy
b2dyYW0sIGJ2YWxMb2MpIGlzIHRydWUKK1BBU1MgZ2wuZ2V0VW5pZm9ybShib29sUHJvZ3JhbSwg
YnZhbDJMb2MpIGlzIFsxLCAwXQorUEFTUyBnbC5nZXRVbmlmb3JtKGJvb2xQcm9ncmFtLCBidmFs
M0xvYykgaXMgWzEsIDAsIDFdCitQQVNTIGdsLmdldFVuaWZvcm0oYm9vbFByb2dyYW0sIGJ2YWw0
TG9jKSBpcyBbMSwgMCwgMSwgMF0KK1BBU1MgZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihpbnRQcm9n
cmFtLCBnbC5MSU5LX1NUQVRVUykgaXMgdHJ1ZQorUEFTUyBnbC5nZXRFcnJvcigpIGlzIDAKK1BB
U1MgZ2wuZ2V0VW5pZm9ybShpbnRQcm9ncmFtLCBpdmFsTG9jKSBpcyAxCitQQVNTIGdsLmdldFVu
aWZvcm0oaW50UHJvZ3JhbSwgaXZhbDJMb2MpIGlzIFsyLCAzXQorUEFTUyBnbC5nZXRVbmlmb3Jt
KGludFByb2dyYW0sIGl2YWwzTG9jKSBpcyBbNCwgNSwgNl0KK1BBU1MgZ2wuZ2V0VW5pZm9ybShp
bnRQcm9ncmFtLCBpdmFsNExvYykgaXMgWzcsIDgsIDksIDEwXQorUEFTUyBnbC5nZXRQcm9ncmFt
UGFyYW1ldGVyKGZsb2F0UHJvZ3JhbSwgZ2wuTElOS19TVEFUVVMpIGlzIHRydWUKK1BBU1MgZ2wu
Z2V0RXJyb3IoKSBpcyAwCitQQVNTIGdsLmdldFVuaWZvcm0oZmxvYXRQcm9ncmFtLCBmdmFsTG9j
KSBpcyAxMQorUEFTUyBnbC5nZXRVbmlmb3JtKGZsb2F0UHJvZ3JhbSwgZnZhbDJMb2MpIGlzIFsx
MiwgMTNdCitQQVNTIGdsLmdldFVuaWZvcm0oZmxvYXRQcm9ncmFtLCBmdmFsM0xvYykgaXMgWzE0
LCAxNSwgMTZdCitQQVNTIGdsLmdldFVuaWZvcm0oZmxvYXRQcm9ncmFtLCBmdmFsNExvYykgaXMg
WzE3LCAxOCwgMTksIDIwXQorUEFTUyBnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKG1hdFByb2dyYW0s
IGdsLkxJTktfU1RBVFVTKSBpcyB0cnVlCitQQVNTIGdsLmdldEVycm9yKCkgaXMgMAorUEFTUyBn
bC5nZXRVbmlmb3JtKG1hdFByb2dyYW0sIG12YWwyTG9jKSBpcyBbMSwgMiwgMywgNF0KK1BBU1Mg
Z2wuZ2V0VW5pZm9ybShtYXRQcm9ncmFtLCBtdmFsM0xvYykgaXMgWzUsIDYsIDcsIDgsIDksIDEw
LCAxMSwgMTIsIDEzXQorUEFTUyBnbC5nZXRVbmlmb3JtKG1hdFByb2dyYW0sIG12YWw0TG9jKSBp
cyBbMTQsIDE1LCAxNiwgMTcsIDE4LCAxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LCAyNSwgMjYsIDI3
LCAyOCwgMjldCitQQVNTIGdsLmdldFZlcnRleEF0dHJpYigxLCBnbC5WRVJURVhfQVRUUklCX0FS
UkFZX0JVRkZFUl9CSU5ESU5HKSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0VmVydGV4QXR0cmli
KDEsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRCkgaXMgdHJ1ZQorUEFTUyBnbC5nZXRW
ZXJ0ZXhBdHRyaWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9TSVpFKSBpcyA0CitQQVNTIChn
bC5nZXRWZXJ0ZXhBdHRyaWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9TVFJJREUpID09IDAp
IHx8IChnbC5nZXRWZXJ0ZXhBdHRyaWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9TVFJJREUp
ID09IDQgKiBnbC5zaXplSW5CeXRlcyhnbC5GTE9BVCkpIGlzIHRydWUKK1BBU1MgZ2wuZ2V0VmVy
dGV4QXR0cmliKDEsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRSkgaXMgZ2wuRkxPQVQKK1BB
U1MgZ2wuZ2V0VmVydGV4QXR0cmliKDEsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfTk9STUFMSVpF
RCkgaXMgZmFsc2UKK1BBU1MgZ2wuZ2V0VmVydGV4QXR0cmliKDEsIGdsLlZFUlRFWF9BVFRSSUJf
QVJSQVlfRU5BQkxFRCkgaXMgZmFsc2UKK1BBU1MgZ2wuZ2V0VmVydGV4QXR0cmliKDEsIGdsLkNV
UlJFTlRfVkVSVEVYX0FUVFJJQikgaXMgWzUsIDYsIDcsIDhdCitQQVNTIGdsLmdldEVycm9yKCkg
aXMgMAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLW9iamVjdC1nZXQtY2FsbHMu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC1vYmpl
Y3QtZ2V0LWNhbGxzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy93ZWJnbC9nbC1vYmplY3QtZ2V0LWNhbGxzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTUgQEAKKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3dlYmdsLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdCBz
cmM9InNjcmlwdC10ZXN0cy9nbC1vYmplY3QtZ2V0LWNhbGxzLmpzIj48L3NjcmlwdD4KKworPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvaW5j
b3JyZWN0LWNvbnRleHQtb2JqZWN0LWJlaGF2aW91ci1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvaW5jb3JyZWN0LWNvbnRleHQtb2JqZWN0
LWJlaGF2aW91ci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDUxMjc4KQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvd2ViZ2wvaW5jb3JyZWN0LWNvbnRleHQtb2JqZWN0LWJlaGF2aW91ci1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE3LDE3ICsxNywxMiBAQCBQQVNTIGNvbnRleHRB
LmJpbmRSZW5kZXJidWZmZXIoY29udGV4dEEuCiBQQVNTIGNvbnRleHRBLmJpbmRUZXh0dXJlKGNv
bnRleHRBLlRFWFRVUkVfMkQsIHRleHR1cmVCKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVf
TUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBjb250ZXh0QS5mcmFtZWJ1ZmZl
clJlbmRlcmJ1ZmZlcihjb250ZXh0QS5GUkFNRUJVRkZFUiwgY29udGV4dEEuREVQVEhfQVRUQUNI
TUVOVCwgY29udGV4dEEuUkVOREVSQlVGRkVSLCByZW5kZXJCdWZmZXJCKSB0aHJldyBleGNlcHRp
b24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBjb250
ZXh0QS5mcmFtZWJ1ZmZlclRleHR1cmUyRChjb250ZXh0QS5GUkFNRUJVRkZFUiwgY29udGV4dEEu
Q09MT1JfQVRUQUNITUVOVDAsIGNvbnRleHRBLlRFWFRVUkVfMkQsIHRleHR1cmVCLCAwKSB0aHJl
dyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3Lgot
UEFTUyBjb250ZXh0QS5nZXRQcm9ncmFtaShwcm9ncmFtQiwgMCkgdGhyZXcgZXhjZXB0aW9uIEVy
cm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4dEEu
Z2V0UHJvZ3JhbWl2KHByb2dyYW1CLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlT
TUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgorUEFTUyBjb250ZXh0QS5nZXRQcm9ncmFtUGFy
YW1ldGVyKHByb2dyYW1CLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hf
RVJSOiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBjb250ZXh0QS5nZXRQcm9ncmFtSW5mb0xvZyhw
cm9ncmFtQiwgMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9N
IEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4dEEuZ2V0U2hhZGVyaShzaGFkZXJCLCAwKSB0aHJl
dyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3Lgot
UEFTUyBjb250ZXh0QS5nZXRTaGFkZXJpdihzaGFkZXJCLCAwKSB0aHJldyBleGNlcHRpb24gRXJy
b3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgorUEFTUyBjb250ZXh0QS5n
ZXRTaGFkZXJQYXJhbWV0ZXIoc2hhZGVyQiwgMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBF
X01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KIFBBU1MgY29udGV4dEEuZ2V0U2hhZGVy
SW5mb0xvZyhzaGFkZXJCLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hf
RVJSOiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBjb250ZXh0QS5nZXRTaGFkZXJTb3VyY2Uoc2hh
ZGVyQikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2Vw
dGlvbiAxNy4KLVBBU1MgY29udGV4dEEuZ2V0VW5pZm9ybWYocHJvZ3JhbUIsIGxvY2F0aW9uQSkg
dGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAx
Ny4KLVBBU1MgY29udGV4dEEuZ2V0VW5pZm9ybWZ2KHByb2dyYW1CLCBsb2NhdGlvbkEpIHRocmV3
IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1Q
QVNTIGNvbnRleHRBLmdldFVuaWZvcm1pKHByb2dyYW1CLCBsb2NhdGlvbkEpIHRocmV3IGV4Y2Vw
dGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIGNv
bnRleHRBLmdldFVuaWZvcm1pdihwcm9ncmFtQiwgbG9jYXRpb25BKSB0aHJldyBleGNlcHRpb24g
RXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgorUEFTUyBjb250ZXh0
QS5nZXRVbmlmb3JtKHByb2dyYW1CLCBsb2NhdGlvbkEpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjog
VFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCiBQQVNTIGNvbnRleHRBLmdldFVu
aWZvcm1Mb2NhdGlvbihwcm9ncmFtQiwgJ3VfbW9kZWxWaWV3UHJvak1hdHJpeCcpIHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCiBQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3dlYmdsL251bGwtb2JqZWN0LWJlaGF2aW91ci1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvbnVsbC1vYmplY3QtYmVoYXZpb3VyLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gNTEyNzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93
ZWJnbC9udWxsLW9iamVjdC1iZWhhdmlvdXItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0xOCwxNyArMTgsMTIgQEAgUEFTUyBjb250ZXh0LmJpbmRSZW5kZXJidWZmZXIoY29udGV4dC5S
RQogUEFTUyBjb250ZXh0LmJpbmRUZXh0dXJlKGNvbnRleHQuVEVYVFVSRV8yRCwgMCkgaXMgdW5k
ZWZpbmVkLgogUEFTUyBjb250ZXh0LmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGNvbnRleHQuRlJB
TUVCVUZGRVIsIGNvbnRleHQuREVQVEhfQVRUQUNITUVOVCwgY29udGV4dC5SRU5ERVJCVUZGRVIs
IDApIGlzIHVuZGVmaW5lZC4KIFBBU1MgY29udGV4dC5mcmFtZWJ1ZmZlclRleHR1cmUyRChjb250
ZXh0LkZSQU1FQlVGRkVSLCBjb250ZXh0LkNPTE9SX0FUVEFDSE1FTlQwLCBjb250ZXh0LlRFWFRV
UkVfMkQsIDAsIDApIGlzIHVuZGVmaW5lZC4KLVBBU1MgY29udGV4dC5nZXRQcm9ncmFtaSh1bmRl
ZmluZWQsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBF
eGNlcHRpb24gMTcuCi1QQVNTIGNvbnRleHQuZ2V0UHJvZ3JhbWl2KHVuZGVmaW5lZCwgMCkgdGhy
ZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4K
K1BBU1MgY29udGV4dC5nZXRQcm9ncmFtUGFyYW1ldGVyKHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KIFBBU1Mg
Y29udGV4dC5nZXRQcm9ncmFtSW5mb0xvZyh1bmRlZmluZWQsIDApIHRocmV3IGV4Y2VwdGlvbiBF
cnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIGNvbnRleHQu
Z2V0U2hhZGVyaSh1bmRlZmluZWQsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNN
QVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIGNvbnRleHQuZ2V0U2hhZGVyaXYodW5k
ZWZpbmVkLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00g
RXhjZXB0aW9uIDE3LgorUEFTUyBjb250ZXh0LmdldFNoYWRlclBhcmFtZXRlcih1bmRlZmluZWQs
IDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRp
b24gMTcuCiBQQVNTIGNvbnRleHQuZ2V0U2hhZGVySW5mb0xvZyh1bmRlZmluZWQsIDApIHRocmV3
IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCiBQ
QVNTIGNvbnRleHQuZ2V0U2hhZGVyU291cmNlKHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIEVy
cm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4dC5n
ZXRVbmlmb3JtZih1bmRlZmluZWQsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNN
QVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIGNvbnRleHQuZ2V0VW5pZm9ybWZ2KHVu
ZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9N
IEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4dC5nZXRVbmlmb3JtaSh1bmRlZmluZWQsIDApIHRo
cmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcu
Ci1QQVNTIGNvbnRleHQuZ2V0VW5pZm9ybWl2KHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9u
IEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KK1BBU1MgY29udGV4
dC5nZXRVbmlmb3JtKHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01J
U01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KIFBBU1MgY29udGV4dC5nZXRVbmlmb3JtTG9j
YXRpb24odW5kZWZpbmVkLCAnZm9vJykgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01B
VENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdHJpYW5nbGUuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90cmlhbmdsZS5odG1s
CShyZXZpc2lvbiA1MTI3OCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3RyaWFu
Z2xlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTY0LDExICs2NCwxMSBAQAogICAgICAgICAgICAg
dmFyIG9mZnNldCA9ICgxNSo1MCsyMCkgKiA0OwogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCAxMDsgKytpKQogICAgICAgICAgICAgICAgIGlmIChidWZbb2Zmc2V0K2kqNF0gIT0gMjU1
IHx8IGJ1ZltvZmZzZXQraSo0KzFdICE9IDAgfHwgYnVmW29mZnNldCtpKjQrMl0gIT0gMCB8fCBi
dWZbb2Zmc2V0K2kqNCszXSAhPSAyNTUpIHsKLSAgICAgICAgICAgICAgICAgICAgZmFpbCgyMCwg
MTUsIGJ1ZiwgIigyNTUsMCwwLDI1NSkiKTsKKyAgICAgICAgICAgICAgICAgICAgZmFpbCgyMCAr
IGksIDE1LCBidWYsICIoMjU1LDAsMCwyNTUpIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBMYXN0IGxpbmUgc2hvdWxkIGJl
IGFsbCBibGFjawotICAgICAgICAgICAgb2Zmc2V0ID0gKDQ5KjUwKSAqIDQKKyAgICAgICAgICAg
IG9mZnNldCA9ICg0OSo1MCkgKiA0OwogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA1
MDsgKytpKQogICAgICAgICAgICAgICAgIGlmIChidWZbb2Zmc2V0K2kqNF0gIT0gMCB8fCBidWZb
b2Zmc2V0K2kqNCsxXSAhPSAwIHx8IGJ1ZltvZmZzZXQraSo0KzJdICE9IDAgfHwgYnVmW29mZnNl
dCtpKjQrM10gIT0gMjU1KSB7CiAgICAgICAgICAgICAgICAgICAgIGZhaWwoaSwgNDksIGJ1Ziwg
IigwLDAsMCwyNTUpIik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNv
dXJjZXMvYm9vbFVuaWZvcm1TaGFkZXIudmVydAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvYm9vbFVuaWZvcm1TaGFkZXIudmVydAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy9ib29sVW5p
Zm9ybVNoYWRlci52ZXJ0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACit1bmlmb3JtIGJv
b2wgYnZhbDsKK3VuaWZvcm0gYnZlYzIgYnZhbDI7Cit1bmlmb3JtIGJ2ZWMzIGJ2YWwzOwordW5p
Zm9ybSBidmVjNCBidmFsNDsKKwordm9pZCBtYWluKCkKK3sKKyAgICBib29sIGFsbFNldCA9IGJ2
YWwKKyAgICAgICAgICAgICYmIGJ2YWwyWzBdICYmIGJ2YWwyWzFdCisgICAgICAgICAgICAmJiBi
dmFsM1swXSAmJiBidmFsM1sxXSAmJiBidmFsM1syXQorICAgICAgICAgICAgJiYgYnZhbDRbMF0g
JiYgYnZhbDRbMV0gJiYgYnZhbDRbMl0gJiYgYnZhbDRbM107CisgICAgZ2xfUG9zaXRpb24gPSB2
ZWM0KChhbGxTZXQgPyAxLjAgOiAtMS4wKSwgMC4wLCAwLjAsIDEuMCk7Cit9CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvZmxvYXRVbmlmb3JtU2hhZGVyLnZl
cnQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2Vz
L2Zsb2F0VW5pZm9ybVNoYWRlci52ZXJ0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL2Zsb2F0VW5pZm9ybVNoYWRlci52ZXJ0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDEzIEBACit1bmlmb3JtIGZsb2F0IGZ2YWw7Cit1bmlmb3JtIHZlYzIg
ZnZhbDI7Cit1bmlmb3JtIHZlYzMgZnZhbDM7Cit1bmlmb3JtIHZlYzQgZnZhbDQ7CisKK3ZvaWQg
bWFpbigpCit7CisgICAgZmxvYXQgc3VtID0gZnZhbAorICAgICAgICAgICAgKyBmdmFsMlswXSAr
IGZ2YWwyWzFdCisgICAgICAgICAgICArIGZ2YWwzWzBdICsgZnZhbDNbMV0gKyBmdmFsM1syXQor
ICAgICAgICAgICAgKyBmdmFsNFswXSArIGZ2YWw0WzFdICsgZnZhbDRbMl0gKyBmdmFsNFszXTsK
KyAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoc3VtLCAwLjAsIDAuMCwgMS4wKTsKK30KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy9pbnRVbmlmb3JtU2hhZGVyLnZl
cnQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2Vz
L2ludFVuaWZvcm1TaGFkZXIudmVydAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL3Jlc291cmNlcy9pbnRVbmlmb3JtU2hhZGVyLnZlcnQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTMgQEAKK3VuaWZvcm0gaW50IGl2YWw7Cit1bmlmb3JtIGl2ZWMyIGl2YWwy
OwordW5pZm9ybSBpdmVjMyBpdmFsMzsKK3VuaWZvcm0gaXZlYzQgaXZhbDQ7CisKK3ZvaWQgbWFp
bigpCit7CisgICAgaW50IHN1bSA9IGl2YWwKKyAgICAgICAgICAgICsgaXZhbDJbMF0gKyBpdmFs
MlsxXQorICAgICAgICAgICAgKyBpdmFsM1swXSArIGl2YWwzWzFdICsgaXZhbDNbMl0KKyAgICAg
ICAgICAgICsgaXZhbDRbMF0gKyBpdmFsNFsxXSArIGl2YWw0WzJdICsgaXZhbDRbM107CisgICAg
Z2xfUG9zaXRpb24gPSB2ZWM0KHN1bSwgMC4wLCAwLjAsIDEuMCk7Cit9CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvbWF0VW5pZm9ybVNoYWRlci52ZXJ0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy9tYXRV
bmlmb3JtU2hhZGVyLnZlcnQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy93ZWJnbC9yZXNvdXJjZXMvbWF0VW5pZm9ybVNoYWRlci52ZXJ0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDEwIEBACit1bmlmb3JtIG1hdDIgbXZhbDI7Cit1bmlmb3JtIG1hdDMgbXZhbDM7Cit1
bmlmb3JtIG1hdDQgbXZhbDQ7CisKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfUG9zaXRpb24gPSB2
ZWM0KG12YWwyICogdmVjMigxLjAsIDIuMCksIDAuMCwgMC4wKQorICAgICAgICAgICAgKyB2ZWM0
KG12YWwzICogdmVjMygxLjAsIDIuMCwgMy4wKSwgMC4wKQorICAgICAgICAgICAgKyBtdmFsNCAq
IHZlYzQoMS4wLCAyLjAsIDMuMCwgNC4wKTsKK30KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3dlYmdsL3Jlc291cmNlcy9ub29wVW5pZm9ybVNoYWRlci5mcmFnCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy9ub29wVW5pZm9ybVNoYWRl
ci5mcmFnCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVz
b3VyY2VzL25vb3BVbmlmb3JtU2hhZGVyLmZyYWcJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBA
QAordm9pZCBtYWluKCkKK3sKKyAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwgMC4wLCAwLjAs
IDEuMCk7Cit9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMv
dXRpbHMzZC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9y
ZXNvdXJjZXMvdXRpbHMzZC5qcwkocmV2aXNpb24gNTEyNzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvdXRpbHMzZC5qcwkod29ya2luZyBjb3B5KQpAQCAtNTEs
NyArNTEsNyBAQCBmdW5jdGlvbiBpbml0V2ViR0woY2FudmFzTmFtZSwgdnNoYWRlciwgCiAgICAg
Z2wubGlua1Byb2dyYW0oZ2wucHJvZ3JhbSk7CiAKICAgICAvLyBDaGVjayB0aGUgbGluayBzdGF0
dXMKLSAgICB2YXIgbGlua2VkID0gZ2wuZ2V0UHJvZ3JhbWkoZ2wucHJvZ3JhbSwgZ2wuTElOS19T
VEFUVVMpOworICAgIHZhciBsaW5rZWQgPSBnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKGdsLnByb2dy
YW0sIGdsLkxJTktfU1RBVFVTKTsKICAgICBpZiAoIWxpbmtlZCkgewogICAgICAgICAvLyBzb21l
dGhpbmcgd2VudCB3cm9uZyB3aXRoIHRoZSBsaW5rCiAgICAgICAgIHZhciBlcnJvciA9IGdsLmdl
dFByb2dyYW1JbmZvTG9nIChnbC5wcm9ncmFtKTsKQEAgLTExMyw3ICsxMTMsNyBAQCBmdW5jdGlv
biBsb2FkU2hhZGVyKGN0eCwgc2hhZGVySWQpCiAgICAgY3R4LmNvbXBpbGVTaGFkZXIoc2hhZGVy
KTsKIAogICAgIC8vIENoZWNrIHRoZSBjb21waWxlIHN0YXR1cwotICAgIHZhciBjb21waWxlZCA9
IGN0eC5nZXRTaGFkZXJpKHNoYWRlciwgY3R4LkNPTVBJTEVfU1RBVFVTKTsKKyAgICB2YXIgY29t
cGlsZWQgPSBjdHguZ2V0U2hhZGVyUGFyYW1ldGVyKHNoYWRlciwgY3R4LkNPTVBJTEVfU1RBVFVT
KTsKICAgICBpZiAoIWNvbXBpbGVkKSB7CiAgICAgICAgIC8vIFNvbWV0aGluZyB3ZW50IHdyb25n
IGR1cmluZyBjb21waWxhdGlvbjsgZ2V0IHRoZSBlcnJvcgogICAgICAgICB2YXIgZXJyb3IgPSBj
dHguZ2V0U2hhZGVySW5mb0xvZyhzaGFkZXIpOwpAQCAtNTM2LDQgKzUzNiwzIEBAIEZyYW1lcmF0
ZS5wcm90b3R5cGUuc25hcHNob3QgPSBmdW5jdGlvbigKICAgICAgICAgdGhpcy5yZW5kZXJUaW1l
ID0gbmV3VGltZTsKICAgICB9CiB9Ci0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbC10ZXN0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy93ZWJnbC10ZXN0LmpzCShyZXZpc2lvbiA1MTI3OCkK
KysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy93ZWJnbC10ZXN0Lmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxNiArMjQsMzIgQEAgZnVuY3Rpb24gbG9hZFN0YW5kYXJk
UHJvZ3JhbShjb250ZXh0KSB7CiAgICAgcmV0dXJuIHByb2dyYW07CiB9CiAKK2Z1bmN0aW9uIGxv
YWRQcm9ncmFtKGNvbnRleHQsIHZlcnRleFNoYWRlclBhdGgsIGZyYWdtZW50U2hhZGVyUGF0aCkg
eworICAgIHZhciBwcm9ncmFtID0gY29udGV4dC5jcmVhdGVQcm9ncmFtKCk7CisgICAgY29udGV4
dC5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgbG9hZFZlcnRleFNoYWRlcihjb250ZXh0LCB2ZXJ0ZXhT
aGFkZXJQYXRoKSk7CisgICAgY29udGV4dC5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgbG9hZEZyYWdt
ZW50U2hhZGVyKGNvbnRleHQsIGZyYWdtZW50U2hhZGVyUGF0aCkpOworICAgIGNvbnRleHQubGlu
a1Byb2dyYW0ocHJvZ3JhbSk7CisgICAgcmV0dXJuIHByb2dyYW07Cit9CisKIGZ1bmN0aW9uIGxv
YWRTdGFuZGFyZFZlcnRleFNoYWRlcihjb250ZXh0KSB7CisgICAgcmV0dXJuIGxvYWRWZXJ0ZXhT
aGFkZXIoY29udGV4dCwgInJlc291cmNlcy92ZXJ0ZXhTaGFkZXIudmVydCIpOworfQorCitmdW5j
dGlvbiBsb2FkVmVydGV4U2hhZGVyKGNvbnRleHQsIHBhdGgpIHsKICAgICB2YXIgdmVydGV4U2hh
ZGVyID0gY29udGV4dC5jcmVhdGVTaGFkZXIoY29udGV4dC5WRVJURVhfU0hBREVSKTsKLSAgICBj
b250ZXh0LnNoYWRlclNvdXJjZSh2ZXJ0ZXhTaGFkZXIsIGdldFNoYWRlclNvdXJjZSgicmVzb3Vy
Y2VzL3ZlcnRleFNoYWRlci52ZXJ0IikpOworICAgIGNvbnRleHQuc2hhZGVyU291cmNlKHZlcnRl
eFNoYWRlciwgZ2V0U2hhZGVyU291cmNlKHBhdGgpKTsKICAgICBjb250ZXh0LmNvbXBpbGVTaGFk
ZXIodmVydGV4U2hhZGVyKTsKICAgICByZXR1cm4gdmVydGV4U2hhZGVyOwogfQogCiBmdW5jdGlv
biBsb2FkU3RhbmRhcmRGcmFnbWVudFNoYWRlcihjb250ZXh0KSB7CisgICAgcmV0dXJuIGxvYWRG
cmFnbWVudFNoYWRlcihjb250ZXh0LCAicmVzb3VyY2VzL2ZyYWdtZW50U2hhZGVyLmZyYWciKTsK
K30KKworZnVuY3Rpb24gbG9hZEZyYWdtZW50U2hhZGVyKGNvbnRleHQsIHBhdGgpIHsKICAgICB2
YXIgZnJhZ21lbnRTaGFkZXIgPSBjb250ZXh0LmNyZWF0ZVNoYWRlcihjb250ZXh0LkZSQUdNRU5U
X1NIQURFUik7Ci0gICAgY29udGV4dC5zaGFkZXJTb3VyY2UoZnJhZ21lbnRTaGFkZXIsIGdldFNo
YWRlclNvdXJjZSgicmVzb3VyY2VzL2ZyYWdtZW50U2hhZGVyLmZyYWciKSk7CisgICAgY29udGV4
dC5zaGFkZXJTb3VyY2UoZnJhZ21lbnRTaGFkZXIsIGdldFNoYWRlclNvdXJjZShwYXRoKSk7CiAg
ICAgY29udGV4dC5jb21waWxlU2hhZGVyKGZyYWdtZW50U2hhZGVyKTsKICAgICByZXR1cm4gZnJh
Z21lbnRTaGFkZXI7CiB9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9zY3Jp
cHQtdGVzdHMvZ2wtb2JqZWN0LWdldC1jYWxscy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvZ2wtb2JqZWN0LWdldC1jYWxscy5qcwko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0
cy9nbC1vYmplY3QtZ2V0LWNhbGxzLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE4MSBAQAor
ZGVzY3JpcHRpb24oIlRlc3Qgb2YgZ2V0IGNhbGxzIGFnYWluc3QgR0wgb2JqZWN0cyBsaWtlIGdl
dEJ1ZmZlclBhcmFtZXRlciwgZXRjLiIpOworCit2YXIgZ2wgPSBjcmVhdGUzRENvbnRleHQoKTsK
K3ZhciBzdGFuZGFyZFZlcnQgPSBsb2FkU3RhbmRhcmRWZXJ0ZXhTaGFkZXIoZ2wpOwordmFyIHN0
YW5kYXJkRnJhZyA9IGxvYWRTdGFuZGFyZEZyYWdtZW50U2hhZGVyKGdsKTsKK3ZhciBzdGFuZGFy
ZFByb2dyYW0gPSBnbC5jcmVhdGVQcm9ncmFtKCk7CitnbC5hdHRhY2hTaGFkZXIoc3RhbmRhcmRQ
cm9ncmFtLCBzdGFuZGFyZFZlcnQpOworZ2wuYXR0YWNoU2hhZGVyKHN0YW5kYXJkUHJvZ3JhbSwg
c3RhbmRhcmRGcmFnKTsKK2dsLmxpbmtQcm9ncmFtKHN0YW5kYXJkUHJvZ3JhbSk7CisKKy8vIFRl
c3QgZ2V0QnVmZmVyUGFyYW1ldGVyCit2YXIgYnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7Citn
bC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgYnVmZmVyKTsKK2dsLmJ1ZmZlckRhdGEoZ2wu
QVJSQVlfQlVGRkVSLCAxNiwgZ2wuRFlOQU1JQ19EUkFXKTsKK3Nob3VsZEJlKCdnbC5nZXRCdWZm
ZXJQYXJhbWV0ZXIoZ2wuQVJSQVlfQlVGRkVSLCBnbC5CVUZGRVJfU0laRSknLCAnMTYnKTsKK3No
b3VsZEJlKCdnbC5nZXRCdWZmZXJQYXJhbWV0ZXIoZ2wuQVJSQVlfQlVGRkVSLCBnbC5CVUZGRVJf
VVNBR0UpJywgJ2dsLkRZTkFNSUNfRFJBVycpOworCisvLyBUZXN0IGdldEZyYW1lYnVmZmVyQXR0
YWNobWVudFBhcmFtZXRlcgordmFyIHRleHR1cmUgPSBnbC5jcmVhdGVUZXh0dXJlKCk7CitnbC5i
aW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlKTsKK2dsLnRleEltYWdlMkQoZ2wuVEVY
VFVSRV8yRCwgMCwgZ2wuUkdCQSwgMiwgMiwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwK
KyAgICAgICAgICAgICAgbmV3IFdlYkdMVW5zaWduZWRCeXRlQXJyYXkoWzAsIDAsIDAsIDI1NSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI1NSwgMjU1LCAyNTUs
IDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI1NSwgMjU1
LCAyNTUsIDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAs
IDAsIDAsIDI1NV0pKTsKK2dsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIG51bGwpOwordmFy
IGZyYW1lYnVmZmVyID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsKK2dsLmJpbmRGcmFtZWJ1ZmZl
cihnbC5GUkFNRUJVRkZFUiwgZnJhbWVidWZmZXIpOworZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQo
Z2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5URVhUVVJFXzJELCB0ZXh0
dXJlLCAwKTsKK3ZhciByZW5kZXJidWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKTsKK3No
b3VsZEJlKCdnbC5nZXRFcnJvcigpJywgJzAnKTsKK2dsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVO
REVSQlVGRkVSLCByZW5kZXJidWZmZXIpOworc2hvdWxkQmUoJ2dsLmdldEVycm9yKCknLCAnMCcp
OworZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLkRFUFRIX0NPTVBP
TkVOVDE2LCAyLCAyKTsKK3Nob3VsZEJlKCdnbC5nZXRFcnJvcigpJywgJzAnKTsKK2dsLmZyYW1l
YnVmZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBnbC5ERVBUSF9BVFRBQ0hNRU5ULCBn
bC5SRU5ERVJCVUZGRVIsIHJlbmRlcmJ1ZmZlcik7CitzaG91bGRCZSgnZ2wuY2hlY2tGcmFtZWJ1
ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUiknLCAnZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUnKTsK
K3Nob3VsZEJlKCdnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVC
VUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09C
SkVDVF9UWVBFKScsICdnbC5URVhUVVJFJyk7CitzaG91bGRCZU5vbk51bGwoJ2dsLmdldEZyYW1l
YnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNI
TUVOVDAsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUUpJyk7CitzaG91bGRC
ZSgnZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBn
bC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xF
VkVMKScsICcwJyk7CitzaG91bGRCZSgnZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1l
dGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuRlJBTUVCVUZGRVJf
QVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0UpJywgJzAnKTsKKworc2hvdWxkQmUoJ2ds
LmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuREVQ
VEhfQVRUQUNITUVOVCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRSknLCAn
Z2wuUkVOREVSQlVGRkVSJyk7CitzaG91bGRCZU5vbk51bGwoJ2dsLmdldEZyYW1lYnVmZmVyQXR0
YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuREVQVEhfQVRUQUNITUVOVCwgZ2wu
RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRSknKTsKKworLy8gVGVzdCBnZXRQcm9n
cmFtUGFyYW1ldGVyCitzaG91bGRCZSgnZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihzdGFuZGFyZFBy
b2dyYW0sIGdsLkRFTEVURV9TVEFUVVMpJywgJ2ZhbHNlJyk7CitzaG91bGRCZSgnZ2wuZ2V0UHJv
Z3JhbVBhcmFtZXRlcihzdGFuZGFyZFByb2dyYW0sIGdsLkxJTktfU1RBVFVTKScsICd0cnVlJyk7
CitzaG91bGRCZSgndHlwZW9mIGdsLmdldFByb2dyYW1QYXJhbWV0ZXIoc3RhbmRhcmRQcm9ncmFt
LCBnbC5WQUxJREFURV9TVEFUVVMpJywgJyJib29sZWFuIicpOworc2hvdWxkQmUoJ3R5cGVvZiBn
bC5nZXRQcm9ncmFtUGFyYW1ldGVyKHN0YW5kYXJkUHJvZ3JhbSwgZ2wuSU5GT19MT0dfTEVOR1RI
KScsICcibnVtYmVyIicpOworc2hvdWxkQmUoJ2dsLmdldFByb2dyYW1QYXJhbWV0ZXIoc3RhbmRh
cmRQcm9ncmFtLCBnbC5BVFRBQ0hFRF9TSEFERVJTKScsICcyJyk7CitzaG91bGRCZSgnZ2wuZ2V0
UHJvZ3JhbVBhcmFtZXRlcihzdGFuZGFyZFByb2dyYW0sIGdsLkFDVElWRV9BVFRSSUJVVEVTKScs
ICcyJyk7CitzaG91bGRCZU5vblplcm8oJ2dsLmdldFByb2dyYW1QYXJhbWV0ZXIoc3RhbmRhcmRQ
cm9ncmFtLCBnbC5BQ1RJVkVfQVRUUklCVVRFX01BWF9MRU5HVEgpJyk7CitzaG91bGRCZSgnZ2wu
Z2V0UHJvZ3JhbVBhcmFtZXRlcihzdGFuZGFyZFByb2dyYW0sIGdsLkFDVElWRV9VTklGT1JNUykn
LCAnMScpOworc2hvdWxkQmVOb25aZXJvKCdnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHN0YW5kYXJk
UHJvZ3JhbSwgZ2wuQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCknKTsKKworLy8gVGVzdCBnZXRS
ZW5kZXJidWZmZXJQYXJhbWV0ZXIKK3Nob3VsZEJlKCdnbC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0
ZXIoZ2wuUkVOREVSQlVGRkVSLCBnbC5SRU5ERVJCVUZGRVJfV0lEVEgpJywgJzInKTsKK3Nob3Vs
ZEJlKCdnbC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBnbC5SRU5E
RVJCVUZGRVJfSEVJR0hUKScsICcyJyk7CisvLyBOb3RlOiB3ZSBjYW4ndCB0ZXN0IHRoZSBhY3R1
YWwgdmFsdWUgb2YgdGhlIGludGVybmFsIGZvcm1hdCBzaW5jZQorLy8gdGhlIGltcGxlbWVudGF0
aW9uIGlzIGFsbG93ZWQgdG8gY2hhbmdlIGl0Lgorc2hvdWxkQmVOb25aZXJvKCdnbC5nZXRSZW5k
ZXJidWZmZXJQYXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBnbC5SRU5ERVJCVUZGRVJfSU5URVJO
QUxfRk9STUFUKScpOworc2hvdWxkQmVOb25aZXJvKCdnbC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0
ZXIoZ2wuUkVOREVSQlVGRkVSLCBnbC5SRU5ERVJCVUZGRVJfREVQVEhfU0laRSknKTsKK3ZhciBj
b2xvcmJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworc2hvdWxkQmUoJ2dsLmdldEVy
cm9yKCknLCAnMCcpOworZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIHJlbmRl
cmJ1ZmZlcik7CitzaG91bGRCZSgnZ2wuZ2V0RXJyb3IoKScsICcwJyk7CitnbC5yZW5kZXJidWZm
ZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkdCQTQsIDIsIDIpOworc2hvdWxkQmVOb25a
ZXJvKCdnbC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBnbC5SRU5E
RVJCVUZGRVJfUkVEX1NJWkUpJyk7CitzaG91bGRCZU5vblplcm8oJ2dsLmdldFJlbmRlcmJ1ZmZl
clBhcmFtZXRlcihnbC5SRU5ERVJCVUZGRVIsIGdsLlJFTkRFUkJVRkZFUl9HUkVFTl9TSVpFKScp
Oworc2hvdWxkQmVOb25aZXJvKCdnbC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoZ2wuUkVOREVS
QlVGRkVSLCBnbC5SRU5ERVJCVUZGRVJfQkxVRV9TSVpFKScpOworc2hvdWxkQmVOb25aZXJvKCdn
bC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBnbC5SRU5ERVJCVUZG
RVJfQUxQSEFfU0laRSknKTsKKworLy8gVGVzdCBnZXRTaGFkZXJQYXJhbWV0ZXIKK3Nob3VsZEJl
KCdnbC5nZXRTaGFkZXJQYXJhbWV0ZXIoc3RhbmRhcmRWZXJ0LCBnbC5TSEFERVJfVFlQRSknLCAn
Z2wuVkVSVEVYX1NIQURFUicpOworc2hvdWxkQmUoJ2dsLmdldFNoYWRlclBhcmFtZXRlcihzdGFu
ZGFyZFZlcnQsIGdsLkRFTEVURV9TVEFUVVMpJywgJ2ZhbHNlJyk7CitzaG91bGRCZSgnZ2wuZ2V0
U2hhZGVyUGFyYW1ldGVyKHN0YW5kYXJkVmVydCwgZ2wuQ09NUElMRV9TVEFUVVMpJywgJ3RydWUn
KTsKK3Nob3VsZEJlKCd0eXBlb2YgZ2wuZ2V0U2hhZGVyUGFyYW1ldGVyKHN0YW5kYXJkVmVydCwg
Z2wuSU5GT19MT0dfTEVOR1RIKScsICcibnVtYmVyIicpOworc2hvdWxkQmVOb25aZXJvKCdnbC5n
ZXRTaGFkZXJQYXJhbWV0ZXIoc3RhbmRhcmRWZXJ0LCBnbC5TSEFERVJfU09VUkNFX0xFTkdUSCkn
KTsKKworLy8gVGVzdCBnZXRUZXhQYXJhbWV0ZXIKK2dsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFN
RUJVRkZFUiwgZnJhbWVidWZmZXIpOworZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4
dHVyZSk7CitnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUFHX0ZJ
TFRFUiwgZ2wuTkVBUkVTVCk7CitnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRF
WFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CitnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRV
UkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5DTEFNUF9UT19FREdFKTsKK2dsLnRleFBhcmFt
ZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1QsIGdsLkNMQU1QX1RPX0VER0Up
Oworc2hvdWxkQmUoJ2dsLmdldFRleFBhcmFtZXRlcihnbC5URVhUVVJFXzJELCBnbC5URVhUVVJF
X01BR19GSUxURVIpJywgJ2dsLk5FQVJFU1QnKTsKK3Nob3VsZEJlKCdnbC5nZXRUZXhQYXJhbWV0
ZXIoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVSKScsICdnbC5ORUFSRVNUJyk7
CitzaG91bGRCZSgnZ2wuZ2V0VGV4UGFyYW1ldGVyKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVf
V1JBUF9TKScsICdnbC5DTEFNUF9UT19FREdFJyk7CitzaG91bGRCZSgnZ2wuZ2V0VGV4UGFyYW1l
dGVyKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9UKScsICdnbC5DTEFNUF9UT19FREdF
Jyk7CisKKy8vIFRlc3QgZ2V0VW5pZm9ybSB3aXRoIGFsbCB2YXJpYW50cyBvZiBkYXRhIHR5cGVz
CisvLyBCb29sZWFuIHVuaWZvcm0gdmFyaWFibGVzCit2YXIgYm9vbFByb2dyYW0gPSBsb2FkUHJv
Z3JhbShnbCwgInJlc291cmNlcy9ib29sVW5pZm9ybVNoYWRlci52ZXJ0IiwgInJlc291cmNlcy9u
b29wVW5pZm9ybVNoYWRlci5mcmFnIik7CitzaG91bGRCZSgnZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRl
cihib29sUHJvZ3JhbSwgZ2wuTElOS19TVEFUVVMpJywgJ3RydWUnKTsKK3ZhciBidmFsTG9jID0g
Z2wuZ2V0VW5pZm9ybUxvY2F0aW9uKGJvb2xQcm9ncmFtLCAiYnZhbCIpOwordmFyIGJ2YWwyTG9j
ID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKGJvb2xQcm9ncmFtLCAiYnZhbDIiKTsKK3ZhciBidmFs
M0xvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihib29sUHJvZ3JhbSwgImJ2YWwzIik7Cit2YXIg
YnZhbDRMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24oYm9vbFByb2dyYW0sICJidmFsNCIpOwor
Z2wudXNlUHJvZ3JhbShib29sUHJvZ3JhbSk7CitnbC51bmlmb3JtMWkoYnZhbExvYywgMSk7Citn
bC51bmlmb3JtMmkoYnZhbDJMb2MsIDEsIDApOworZ2wudW5pZm9ybTNpKGJ2YWwzTG9jLCAxLCAw
LCAxKTsKK2dsLnVuaWZvcm00aShidmFsNExvYywgMSwgMCwgMSwgMCk7CitzaG91bGRCZSgnZ2wu
Z2V0RXJyb3IoKScsICcwJyk7CitzaG91bGRCZSgnZ2wuZ2V0VW5pZm9ybShib29sUHJvZ3JhbSwg
YnZhbExvYyknLCAndHJ1ZScpOworc2hvdWxkQmUoJ2dsLmdldFVuaWZvcm0oYm9vbFByb2dyYW0s
IGJ2YWwyTG9jKScsICdbMSwgMF0nKTsKK3Nob3VsZEJlKCdnbC5nZXRVbmlmb3JtKGJvb2xQcm9n
cmFtLCBidmFsM0xvYyknLCAnWzEsIDAsIDFdJyk7CitzaG91bGRCZSgnZ2wuZ2V0VW5pZm9ybShi
b29sUHJvZ3JhbSwgYnZhbDRMb2MpJywgJ1sxLCAwLCAxLCAwXScpOworLy8gSW50ZWdlciB1bmlm
b3JtIHZhcmlhYmxlcwordmFyIGludFByb2dyYW0gPSBsb2FkUHJvZ3JhbShnbCwgInJlc291cmNl
cy9pbnRVbmlmb3JtU2hhZGVyLnZlcnQiLCAicmVzb3VyY2VzL25vb3BVbmlmb3JtU2hhZGVyLmZy
YWciKTsKK3Nob3VsZEJlKCdnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKGludFByb2dyYW0sIGdsLkxJ
TktfU1RBVFVTKScsICd0cnVlJyk7Cit2YXIgaXZhbExvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlv
bihpbnRQcm9ncmFtLCAiaXZhbCIpOwordmFyIGl2YWwyTG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0
aW9uKGludFByb2dyYW0sICJpdmFsMiIpOwordmFyIGl2YWwzTG9jID0gZ2wuZ2V0VW5pZm9ybUxv
Y2F0aW9uKGludFByb2dyYW0sICJpdmFsMyIpOwordmFyIGl2YWw0TG9jID0gZ2wuZ2V0VW5pZm9y
bUxvY2F0aW9uKGludFByb2dyYW0sICJpdmFsNCIpOworZ2wudXNlUHJvZ3JhbShpbnRQcm9ncmFt
KTsKK2dsLnVuaWZvcm0xaShpdmFsTG9jLCAxKTsKK2dsLnVuaWZvcm0yaShpdmFsMkxvYywgMiwg
Myk7CitnbC51bmlmb3JtM2koaXZhbDNMb2MsIDQsIDUsIDYpOworZ2wudW5pZm9ybTRpKGl2YWw0
TG9jLCA3LCA4LCA5LCAxMCk7CitzaG91bGRCZSgnZ2wuZ2V0RXJyb3IoKScsICcwJyk7CitzaG91
bGRCZSgnZ2wuZ2V0VW5pZm9ybShpbnRQcm9ncmFtLCBpdmFsTG9jKScsICcxJyk7CitzaG91bGRC
ZSgnZ2wuZ2V0VW5pZm9ybShpbnRQcm9ncmFtLCBpdmFsMkxvYyknLCAnWzIsIDNdJyk7CitzaG91
bGRCZSgnZ2wuZ2V0VW5pZm9ybShpbnRQcm9ncmFtLCBpdmFsM0xvYyknLCAnWzQsIDUsIDZdJyk7
CitzaG91bGRCZSgnZ2wuZ2V0VW5pZm9ybShpbnRQcm9ncmFtLCBpdmFsNExvYyknLCAnWzcsIDgs
IDksIDEwXScpOworLy8gRmxvYXQgdW5pZm9ybSB2YXJpYWJsZXMKK3ZhciBmbG9hdFByb2dyYW0g
PSBsb2FkUHJvZ3JhbShnbCwgInJlc291cmNlcy9mbG9hdFVuaWZvcm1TaGFkZXIudmVydCIsICJy
ZXNvdXJjZXMvbm9vcFVuaWZvcm1TaGFkZXIuZnJhZyIpOworc2hvdWxkQmUoJ2dsLmdldFByb2dy
YW1QYXJhbWV0ZXIoZmxvYXRQcm9ncmFtLCBnbC5MSU5LX1NUQVRVUyknLCAndHJ1ZScpOwordmFy
IGZ2YWxMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24oZmxvYXRQcm9ncmFtLCAiZnZhbCIpOwor
dmFyIGZ2YWwyTG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKGZsb2F0UHJvZ3JhbSwgImZ2YWwy
Iik7Cit2YXIgZnZhbDNMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24oZmxvYXRQcm9ncmFtLCAi
ZnZhbDMiKTsKK3ZhciBmdmFsNExvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihmbG9hdFByb2dy
YW0sICJmdmFsNCIpOworZ2wudXNlUHJvZ3JhbShmbG9hdFByb2dyYW0pOworZ2wudW5pZm9ybTFm
KGZ2YWxMb2MsIDExKTsKK2dsLnVuaWZvcm0yZihmdmFsMkxvYywgMTIsIDEzKTsKK2dsLnVuaWZv
cm0zZihmdmFsM0xvYywgMTQsIDE1LCAxNik7CitnbC51bmlmb3JtNGYoZnZhbDRMb2MsIDE3LCAx
OCwgMTksIDIwKTsKK3Nob3VsZEJlKCdnbC5nZXRFcnJvcigpJywgJzAnKTsKK3Nob3VsZEJlKCdn
bC5nZXRVbmlmb3JtKGZsb2F0UHJvZ3JhbSwgZnZhbExvYyknLCAnMTEnKTsKK3Nob3VsZEJlKCdn
bC5nZXRVbmlmb3JtKGZsb2F0UHJvZ3JhbSwgZnZhbDJMb2MpJywgJ1sxMiwgMTNdJyk7CitzaG91
bGRCZSgnZ2wuZ2V0VW5pZm9ybShmbG9hdFByb2dyYW0sIGZ2YWwzTG9jKScsICdbMTQsIDE1LCAx
Nl0nKTsKK3Nob3VsZEJlKCdnbC5nZXRVbmlmb3JtKGZsb2F0UHJvZ3JhbSwgZnZhbDRMb2MpJywg
J1sxNywgMTgsIDE5LCAyMF0nKTsKKy8vIE1hdHJpeCB1bmlmb3JtIHZhcmlhYmxlcwordmFyIG1h
dFByb2dyYW0gPSBsb2FkUHJvZ3JhbShnbCwgInJlc291cmNlcy9tYXRVbmlmb3JtU2hhZGVyLnZl
cnQiLCAicmVzb3VyY2VzL25vb3BVbmlmb3JtU2hhZGVyLmZyYWciKTsKK3Nob3VsZEJlKCdnbC5n
ZXRQcm9ncmFtUGFyYW1ldGVyKG1hdFByb2dyYW0sIGdsLkxJTktfU1RBVFVTKScsICd0cnVlJyk7
Cit2YXIgbXZhbDJMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24obWF0UHJvZ3JhbSwgIm12YWwy
Iik7Cit2YXIgbXZhbDNMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24obWF0UHJvZ3JhbSwgIm12
YWwzIik7Cit2YXIgbXZhbDRMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24obWF0UHJvZ3JhbSwg
Im12YWw0Iik7CitnbC51c2VQcm9ncmFtKG1hdFByb2dyYW0pOworZ2wudW5pZm9ybU1hdHJpeDJm
dihtdmFsMkxvYywgZmFsc2UsIFsxLCAyLCAzLCA0XSk7CitnbC51bmlmb3JtTWF0cml4M2Z2KG12
YWwzTG9jLCBmYWxzZSwgWzUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzXSk7CitnbC51bmlm
b3JtTWF0cml4NGZ2KG12YWw0TG9jLCBmYWxzZSwgWzE0LCAxNSwgMTYsIDE3LCAxOCwgMTksIDIw
LCAyMSwgMjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5XSk7CitzaG91bGRCZSgnZ2wuZ2V0
RXJyb3IoKScsICcwJyk7CitzaG91bGRCZSgnZ2wuZ2V0VW5pZm9ybShtYXRQcm9ncmFtLCBtdmFs
MkxvYyknLCAnWzEsIDIsIDMsIDRdJyk7CitzaG91bGRCZSgnZ2wuZ2V0VW5pZm9ybShtYXRQcm9n
cmFtLCBtdmFsM0xvYyknLCAnWzUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzXScpOworc2hv
dWxkQmUoJ2dsLmdldFVuaWZvcm0obWF0UHJvZ3JhbSwgbXZhbDRMb2MpJywgJ1sxNCwgMTUsIDE2
LCAxNywgMTgsIDE5LCAyMCwgMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOV0nKTsK
KworLy8gVGVzdCBnZXRWZXJ0ZXhBdHRyaWIKK3ZhciBhcnJheSA9IG5ldyBXZWJHTEZsb2F0QXJy
YXkoWzEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2
XSk7CitnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgYnVmZmVyKTsKK2dsLmJ1ZmZlckRh
dGEoZ2wuQVJSQVlfQlVGRkVSLCBhcnJheSwgZ2wuRFlOQU1JQ19EUkFXKTsKKy8vIFZlcnRleCBh
dHRyaWJ1dGUgMCBpcyBzcGVjaWFsIGluIHRoYXQgaXQgaGFzIG5vIGN1cnJlbnQgc3RhdGUsIHNv
CisvLyBmZXRjaGluZyBHTF9DVVJSRU5UX1ZFUlRFWF9BVFRSSUIgZ2VuZXJhdGVzIGFuIGVycm9y
LiBVc2UgYXR0cmlidXRlCisvLyAxIGZvciB0aGVzZSB0ZXN0cyBpbnN0ZWFkLgorZ2wuZW5hYmxl
VmVydGV4QXR0cmliQXJyYXkoMSk7CitnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDEsIDQsIGdsLkZM
T0FULCBmYWxzZSwgMCwgMCk7CitzaG91bGRCZU5vbk51bGwoJ2dsLmdldFZlcnRleEF0dHJpYigx
LCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX0JVRkZFUl9CSU5ESU5HKScpOworc2hvdWxkQmUoJ2ds
LmdldFZlcnRleEF0dHJpYigxLCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX0VOQUJMRUQpJywgJ3Ry
dWUnKTsKK3Nob3VsZEJlKCdnbC5nZXRWZXJ0ZXhBdHRyaWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9B
UlJBWV9TSVpFKScsICc0Jyk7CitzaG91bGRCZSgnKGdsLmdldFZlcnRleEF0dHJpYigxLCBnbC5W
RVJURVhfQVRUUklCX0FSUkFZX1NUUklERSkgPT0gMCkgfHwgKGdsLmdldFZlcnRleEF0dHJpYigx
LCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX1NUUklERSkgPT0gNCAqIGdsLnNpemVJbkJ5dGVzKGds
LkZMT0FUKSknLCAndHJ1ZScpOworc2hvdWxkQmUoJ2dsLmdldFZlcnRleEF0dHJpYigxLCBnbC5W
RVJURVhfQVRUUklCX0FSUkFZX1RZUEUpJywgJ2dsLkZMT0FUJyk7CitzaG91bGRCZSgnZ2wuZ2V0
VmVydGV4QXR0cmliKDEsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfTk9STUFMSVpFRCknLCAnZmFs
c2UnKTsKK2dsLmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSgxKTsKK3Nob3VsZEJlKCdnbC5nZXRW
ZXJ0ZXhBdHRyaWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVEKScsICdmYWxzZScp
OworZ2wudmVydGV4QXR0cmliNGYoMSwgNSwgNiwgNywgOCk7CitzaG91bGRCZSgnZ2wuZ2V0VmVy
dGV4QXR0cmliKDEsIGdsLkNVUlJFTlRfVkVSVEVYX0FUVFJJQiknLCAnWzUsIDYsIDcsIDhdJyk7
CitzaG91bGRCZSgnZ2wuZ2V0RXJyb3IoKScsICcwJyk7CisKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMv
aW5jb3JyZWN0LWNvbnRleHQtb2JqZWN0LWJlaGF2aW91ci5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvaW5jb3JyZWN0LWNvbnRleHQt
b2JqZWN0LWJlaGF2aW91ci5qcwkocmV2aXNpb24gNTEyNzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvaW5jb3JyZWN0LWNvbnRleHQtb2JqZWN0LWJlaGF2
aW91ci5qcwkod29ya2luZyBjb3B5KQpAQCAtMzEsMTcgKzMxLDEyIEBAIHNob3VsZFRocm93KCJj
b250ZXh0QS5iaW5kUmVuZGVyYnVmZmVyKGMKIHNob3VsZFRocm93KCJjb250ZXh0QS5iaW5kVGV4
dHVyZShjb250ZXh0QS5URVhUVVJFXzJELCB0ZXh0dXJlQikiKTsKIHNob3VsZFRocm93KCJjb250
ZXh0QS5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihjb250ZXh0QS5GUkFNRUJVRkZFUiwgY29udGV4
dEEuREVQVEhfQVRUQUNITUVOVCwgY29udGV4dEEuUkVOREVSQlVGRkVSLCByZW5kZXJCdWZmZXJC
KSIpOwogc2hvdWxkVGhyb3coImNvbnRleHRBLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGNvbnRleHRB
LkZSQU1FQlVGRkVSLCBjb250ZXh0QS5DT0xPUl9BVFRBQ0hNRU5UMCwgY29udGV4dEEuVEVYVFVS
RV8yRCwgdGV4dHVyZUIsIDApIik7Ci1zaG91bGRUaHJvdygiY29udGV4dEEuZ2V0UHJvZ3JhbWko
cHJvZ3JhbUIsIDApIik7Ci1zaG91bGRUaHJvdygiY29udGV4dEEuZ2V0UHJvZ3JhbWl2KHByb2dy
YW1CLCAwKSIpOworc2hvdWxkVGhyb3coImNvbnRleHRBLmdldFByb2dyYW1QYXJhbWV0ZXIocHJv
Z3JhbUIsIDApIik7CiBzaG91bGRUaHJvdygiY29udGV4dEEuZ2V0UHJvZ3JhbUluZm9Mb2cocHJv
Z3JhbUIsIDApIik7Ci1zaG91bGRUaHJvdygiY29udGV4dEEuZ2V0U2hhZGVyaShzaGFkZXJCLCAw
KSIpOwotc2hvdWxkVGhyb3coImNvbnRleHRBLmdldFNoYWRlcml2KHNoYWRlckIsIDApIik7Citz
aG91bGRUaHJvdygiY29udGV4dEEuZ2V0U2hhZGVyUGFyYW1ldGVyKHNoYWRlckIsIDApIik7CiBz
aG91bGRUaHJvdygiY29udGV4dEEuZ2V0U2hhZGVySW5mb0xvZyhzaGFkZXJCLCAwKSIpOwogc2hv
dWxkVGhyb3coImNvbnRleHRBLmdldFNoYWRlclNvdXJjZShzaGFkZXJCKSIpOwotc2hvdWxkVGhy
b3coImNvbnRleHRBLmdldFVuaWZvcm1mKHByb2dyYW1CLCBsb2NhdGlvbkEpIik7Ci1zaG91bGRU
aHJvdygiY29udGV4dEEuZ2V0VW5pZm9ybWZ2KHByb2dyYW1CLCBsb2NhdGlvbkEpIik7Ci1zaG91
bGRUaHJvdygiY29udGV4dEEuZ2V0VW5pZm9ybWkocHJvZ3JhbUIsIGxvY2F0aW9uQSkiKTsKLXNo
b3VsZFRocm93KCJjb250ZXh0QS5nZXRVbmlmb3JtaXYocHJvZ3JhbUIsIGxvY2F0aW9uQSkiKTsK
K3Nob3VsZFRocm93KCJjb250ZXh0QS5nZXRVbmlmb3JtKHByb2dyYW1CLCBsb2NhdGlvbkEpIik7
CiBzaG91bGRUaHJvdygiY29udGV4dEEuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW1CLCAndV9t
b2RlbFZpZXdQcm9qTWF0cml4JykiKTsKIAogc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9udWxsLW9iamVj
dC1iZWhhdmlvdXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2Vi
Z2wvc2NyaXB0LXRlc3RzL251bGwtb2JqZWN0LWJlaGF2aW91ci5qcwkocmV2aXNpb24gNTEyNzgp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvbnVsbC1vYmpl
Y3QtYmVoYXZpb3VyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yMCwxNyArMjAsMTIgQEAgc2hvdWxk
QmVVbmRlZmluZWQoImNvbnRleHQuYmluZFJlbmRlcmJ1Zgogc2hvdWxkQmVVbmRlZmluZWQoImNv
bnRleHQuYmluZFRleHR1cmUoY29udGV4dC5URVhUVVJFXzJELCAwKSIpOwogc2hvdWxkQmVVbmRl
ZmluZWQoImNvbnRleHQuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoY29udGV4dC5GUkFNRUJVRkZF
UiwgY29udGV4dC5ERVBUSF9BVFRBQ0hNRU5ULCBjb250ZXh0LlJFTkRFUkJVRkZFUiwgMCkiKTsK
IHNob3VsZEJlVW5kZWZpbmVkKCJjb250ZXh0LmZyYW1lYnVmZmVyVGV4dHVyZTJEKGNvbnRleHQu
RlJBTUVCVUZGRVIsIGNvbnRleHQuQ09MT1JfQVRUQUNITUVOVDAsIGNvbnRleHQuVEVYVFVSRV8y
RCwgMCwgMCkiKTsKLXNob3VsZFRocm93KCJjb250ZXh0LmdldFByb2dyYW1pKHVuZGVmaW5lZCwg
MCkiKTsKLXNob3VsZFRocm93KCJjb250ZXh0LmdldFByb2dyYW1pdih1bmRlZmluZWQsIDApIik7
CitzaG91bGRUaHJvdygiY29udGV4dC5nZXRQcm9ncmFtUGFyYW1ldGVyKHVuZGVmaW5lZCwgMCki
KTsKIHNob3VsZFRocm93KCJjb250ZXh0LmdldFByb2dyYW1JbmZvTG9nKHVuZGVmaW5lZCwgMCki
KTsKLXNob3VsZFRocm93KCJjb250ZXh0LmdldFNoYWRlcmkodW5kZWZpbmVkLCAwKSIpOwotc2hv
dWxkVGhyb3coImNvbnRleHQuZ2V0U2hhZGVyaXYodW5kZWZpbmVkLCAwKSIpOworc2hvdWxkVGhy
b3coImNvbnRleHQuZ2V0U2hhZGVyUGFyYW1ldGVyKHVuZGVmaW5lZCwgMCkiKTsKIHNob3VsZFRo
cm93KCJjb250ZXh0LmdldFNoYWRlckluZm9Mb2codW5kZWZpbmVkLCAwKSIpOwogc2hvdWxkVGhy
b3coImNvbnRleHQuZ2V0U2hhZGVyU291cmNlKHVuZGVmaW5lZCkiKTsKLXNob3VsZFRocm93KCJj
b250ZXh0LmdldFVuaWZvcm1mKHVuZGVmaW5lZCwgMCkiKTsKLXNob3VsZFRocm93KCJjb250ZXh0
LmdldFVuaWZvcm1mdih1bmRlZmluZWQsIDApIik7Ci1zaG91bGRUaHJvdygiY29udGV4dC5nZXRV
bmlmb3JtaSh1bmRlZmluZWQsIDApIik7Ci1zaG91bGRUaHJvdygiY29udGV4dC5nZXRVbmlmb3Jt
aXYodW5kZWZpbmVkLCAwKSIpOworc2hvdWxkVGhyb3coImNvbnRleHQuZ2V0VW5pZm9ybSh1bmRl
ZmluZWQsIDApIik7CiBzaG91bGRUaHJvdygiY29udGV4dC5nZXRVbmlmb3JtTG9jYXRpb24odW5k
ZWZpbmVkLCAnZm9vJykiKTsKIAogc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzCShyZXZpc2lvbiA1
MTI3OCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTksNiArMTU5LDQyIEBAIGZ1bmN0aW9uIHNob3VsZEV2YWx1YXRl
VG8oYWN0dWFsLCBleHBlY3QKICAgfQogfQogCitmdW5jdGlvbiBzaG91bGRCZU5vblplcm8oX2Ep
Cit7CisgIHZhciBleGNlcHRpb247CisgIHZhciBfYXY7CisgIHRyeSB7CisgICAgIF9hdiA9IGV2
YWwoX2EpOworICB9IGNhdGNoIChlKSB7CisgICAgIGV4Y2VwdGlvbiA9IGU7CisgIH0KKworICBp
ZiAoZXhjZXB0aW9uKQorICAgIHRlc3RGYWlsZWQoX2EgKyAiIHNob3VsZCBiZSBub24temVyby4g
VGhyZXcgZXhjZXB0aW9uICIgKyBleGNlcHRpb24pOworICBlbHNlIGlmIChfYXYgIT0gMCkKKyAg
ICB0ZXN0UGFzc2VkKF9hICsgIiBpcyBub24temVyby4iKTsKKyAgZWxzZQorICAgIHRlc3RGYWls
ZWQoX2EgKyAiIHNob3VsZCBiZSBub24temVyby4gV2FzICIgKyBfYXYpOworfQorCitmdW5jdGlv
biBzaG91bGRCZU5vbk51bGwoX2EpCit7CisgIHZhciBleGNlcHRpb247CisgIHZhciBfYXY7Cisg
IHRyeSB7CisgICAgIF9hdiA9IGV2YWwoX2EpOworICB9IGNhdGNoIChlKSB7CisgICAgIGV4Y2Vw
dGlvbiA9IGU7CisgIH0KKworICBpZiAoZXhjZXB0aW9uKQorICAgIHRlc3RGYWlsZWQoX2EgKyAi
IHNob3VsZCBiZSBub24tbnVsbC4gVGhyZXcgZXhjZXB0aW9uICIgKyBleGNlcHRpb24pOworICBl
bHNlIGlmIChfYXYgIT0gbnVsbCkKKyAgICB0ZXN0UGFzc2VkKF9hICsgIiBpcyBub24tbnVsbC4i
KTsKKyAgZWxzZQorICAgIHRlc3RGYWlsZWQoX2EgKyAiIHNob3VsZCBiZSBub24tbnVsbC4gV2Fz
ICIgKyBfYXYpOworfQorCiBmdW5jdGlvbiBzaG91bGRCZVVuZGVmaW5lZChfYSkKIHsKICAgdmFy
IGV4Y2VwdGlvbjsK
</data>
<flag name="review"
          id="25387"
          type_id="1"
          status="-"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43722</attachid>
            <date>2009-11-23 11:31:18 -0800</date>
            <delta_ts>2009-11-23 13:25:11 -0800</delta_ts>
            <desc>Revised patch</desc>
            <filename>get-calls.patch</filename>
            <type>text/plain</type>
            <size>207365</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MTMxMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTQwIEBACisyMDA5LTExLTIzICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBD
aGFuZ2UgZ2V0Li4uIGNhbGxzIHRvIGxhdGVzdCBzcGVjCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDA5MQorCisgICAgICAgIFJlbW92ZWQgb2xkIHZl
cnNpb25zIG9mIGdldCBjYWxscyBvbiBXZWJHTFJlbmRlcmluZ0NvbnRleHQgYW5kCisgICAgICAg
IGFkZGVkIG5ldyBvbmVzIHBlciBzcGVjIHJldHVybmluZyAiYW55Ii4gTmV3IGNvZGUgc2ltcGxp
ZmllcworICAgICAgICBHcmFwaGljc0NvbnRleHQzRCBhbmQgZml4ZXMgcHJldmlvdXNseSB1bmlt
cGxlbWVudGVkIHJvdXRpbmVzLgorICAgICAgICBBZGRlZCBjdXN0b20gSlMgYW5kIFY4IGJpbmRp
bmdzLiBBZGRlZCBleGhhdXN0aXZlIHRlc3QgY2FzZQorICAgICAgICBleGVyY2lzaW5nIGFsbCBu
ZXcgY29kZSBwYXRocy4gVXBkYXRlZCBwcmVleGlzdGluZyB0ZXN0IGNhc2VzIGZvcgorICAgICAg
ICBuZXcgQVBJcy4gRml4ZWQgcHJlZXhpc3RpbmcgYnVncyBpbiBXZWJLaXQncyBhbmQgQ2hyb21l
J3MgV2ViR0wKKyAgICAgICAgaW1wbGVtZW50YXRpb25zLgorCisgICAgICAgIFJhbiBXZWJHTCBs
YXlvdXQgdGVzdHMgaW4gV2ViS2l0IChjbGVhbikgYW5kIENocm9tZSAoY291cGxlIG9mCisgICAg
ICAgIHByZWV4aXN0aW5nIGtub3duIGZhaWx1cmVzKSBhbmQgbWFudWFsIFdlYkdMIHRlc3RzIGlu
IGJvdGgKKyAgICAgICAgYnJvd3NlcnMuCisKKyAgICAgICAgVGVzdDogZmFzdC9jYW52YXMvd2Vi
Z2wvZ2wtb2JqZWN0LWdldC1jYWxscy5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnRvSlMpOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKFdlYkNvcmU6Omdl
dE9iamVjdFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpnZXRQcm9ncmFtUGFyYW1ldGVy
SGVscGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRC
dWZmZXJQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQcm9ncmFtUGFyYW1ldGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRSZW5kZXJidWZmZXJQYXJh
bWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFNo
YWRlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Z2V0VGV4UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnZXRVbmlmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnZXRWZXJ0ZXhBdHRyaWIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OEN1c3RvbUJpbmRpbmcuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJl
bmRlcmluZ0NvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9WOCk6CisgICAg
ICAgIChXZWJDb3JlOjopOgorICAgICAgICAoV2ViQ29yZTo6Z2V0T2JqZWN0UGFyYW1ldGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OmdldFByb2dyYW1QYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0FMTEJBQ0tfRlVOQ19ERUNMKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNPYmpl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzT2JqZWN0OjpDYW52YXNPYmplY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzT2JqZWN0OjpzZXRPYmplY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzT2JqZWN0OjpkZWxldGVPYmplY3QpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc09iamVjdC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xCdWZmZXI6OldlYkdMQnVmZmVyKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TEJ1ZmZlci5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZvOjpXZWJHTEdldEluZm8pOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZvOjp+V2ViR0xHZXRJbmZvKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMR2V0SW5mbzo6Z2V0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEdldElu
Zm86OmdldEJvb2wpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZvOjpnZXRGbG9hdCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEdldEluZm86OmdldExvbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xHZXRJbmZvOjpnZXRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xH
ZXRJbmZvOjpnZXRVbnNpZ25lZExvbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZv
OjpnZXRXZWJHTEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEdldEluZm86OmdldFdl
YkdMRmxvYXRBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEdldEluZm86OmdldFdlYkdM
RnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZvOjpnZXRXZWJHTElu
dEFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMR2V0SW5mbzo6Z2V0V2ViR0xQcm9ncmFt
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMR2V0SW5mbzo6Z2V0V2ViR0xSZW5kZXJidWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZvOjpnZXRXZWJHTFRleHR1cmUpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZvOjpnZXRXZWJHTFVuc2lnbmVkQnl0ZUFycmF5KToK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEdldEluZm8uaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTEdldEluZm86Oik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJidWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJidWZmZXI6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmJ1ZmZlcjo6V2ViR0xSZW5kZXJidWZm
ZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmg6CisgICAgICAg
ICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNsZWFudXBIZWxwZXI6OkNsZWFudXBIZWxwZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2xl
YW51cEhlbHBlcjo6fkNsZWFudXBIZWxwZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjphY3RpdmVUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmluZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJpbmRGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJpbmRSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpiaW5kVGV4dHVyZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclBhcmFtZXRlcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVu
dFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omdl
dFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omdl
dFByb2dyYW1QYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpnZXRQcm9ncmFtSW5mb0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFNoYWRlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFNoYWRlckluZm9Mb2cpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTaGFkZXJTb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTdHJpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRUZXhQYXJhbWV0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRVbmlmb3JtKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VmVydGV4QXR0cmliKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dXNlUHJvZ3JhbSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRldGFjaEFuZFJlbW92ZUFsbE9iamVj
dHMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRCb29sZWFu
UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0
RmxvYXRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpnZXRJbnRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpnZXRMb25nUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dDo6Z2V0VW5zaWduZWRMb25nUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0V2ViR0xGbG9hdEFycmF5UGFyYW1ldGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0V2ViR0xJbnRBcnJheVBhcmFt
ZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFdlYkdM
VW5zaWduZWRCeXRlQXJyYXlQYXJhbWV0ZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMVGV4dHVyZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMVGV4dHVyZTo6V2ViR0xUZXh0dXJlKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TFRleHR1cmUuaDoKKyAgICAgICAgKiBtYW51YWwtdGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3V0aWxz
M2QuanM6CisgICAgICAgIChpbml0V2ViR0wpOgorICAgICAgICAobG9hZFNoYWRlcik6CisgICAg
ICAgIChGcmFtZXJhdGUucHJvdG90eXBlLnNuYXBzaG90KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6Oik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29u
dGV4dDNETWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpiaW5k
UmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRC
b29sZWFudik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0QnVmZmVy
UGFyYW1ldGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEZs
b2F0dik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OmdldEludGVnZXJ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpnZXRQcm9ncmFtaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Omdl
dFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRTaGFkZXJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6Z2V0VGV4UGFyYW1ldGVyZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OmdldFRleFBhcmFtZXRlcml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpnZXRVbmlmb3JtZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmdldFVuaWZvcm1pdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0
VmVydGV4QXR0cmliZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Omdl
dFZlcnRleEF0dHJpYml2KToKKwogMjAwOS0xMS0yMyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KSW5kZXg6IFdl
YkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5neXBpCShy
ZXZpc2lvbiA1MTI3OCkKKysrIFdlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjgzLDYgKzEyODMsOCBAQAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMRmxvYXRB
cnJheS5oJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcCcs
CiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oJywKKyAgICAgICAg
ICAgICdodG1sL2NhbnZhcy9XZWJHTEdldEluZm8uY3BwJywKKyAgICAgICAgICAgICdodG1sL2Nh
bnZhcy9XZWJHTEdldEluZm8uaCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvQ2FudmFzR3Jh
ZGllbnQuY3BwJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9DYW52YXNHcmFkaWVudC5oJywK
ICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTEludEFycmF5LmNwcCcsCkluZGV4OiBXZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNTEyNzgpCisr
KyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMTE5OSw2ICsxMTk5LDggQEAKIAkJNjVERjMyM0MwOUQxREU2NTAwMEJFMzI1IC8qIEpT
Q2FudmFzUGF0dGVybi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNjVERjMyMzYwOUQxREU2NTAwMEJFMzI1IC8qIEpTQ2FudmFzUGF0dGVybi5oICovOyB9
OwogCQk2NURGMzI2MTA5RDFFMTk5MDAwQkUzMjUgLyogVXNlckFnZW50U3R5bGVTaGVldHNEYXRh
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NjU4
MUFGMDlEMTRFRTYwMDBFNjFENyAvKiBVc2VyQWdlbnRTdHlsZVNoZWV0c0RhdGEuY3BwICovOyB9
OwogCQk2NUZFQTg2OTA5ODMzQURFMDBCRUQ0QUIgLyogUGFnZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUZFQTg2ODA5ODMzQURFMDBCRUQ0QUIg
LyogUGFnZS5jcHAgKi87IH07CisJCTZFNDdFNjYwMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEdl
dEluZm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NkU0N0U2NUUxMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMR2V0SW5mby5jcHAgKi87IH07CisJCTZF
NDdFNjYxMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEdldEluZm8uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNDdFNjVGMTBCNzk0NEIwMEIxODZDOCAv
KiBXZWJHTEdldEluZm8uaCAqLzsgfTsKIAkJNzI2MjZFMDIwRUYwMjJGRTAwQTA3RTIwIC8qIEZv
bnRGYXN0UGF0aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MjYyNkUwMTBFRjAyMkZFMDBBMDdFMjAgLyogRm9udEZhc3RQYXRoLmNwcCAqLzsgfTsK
IAkJNzU0MTMzQTgxMDJFMDBFODAwMDc1RDAwIC8qIEluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NDEzM0E3MTAy
RTAwRTgwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50LmggKi87IH07CiAJCTc1NDEz
M0FBMTAyRTAwRjQwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NDEzM0E5MTAyRTAwRjQw
MDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCAqLzsgfTsKQEAgLTY1MDcsNiAr
NjUwOSw4IEBACiAJCTY1REYzMjM2MDlEMURFNjUwMDBCRTMyNSAvKiBKU0NhbnZhc1BhdHRlcm4u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ2FudmFzUGF0dGVybi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NUY4MDY5NzA1NEQ5Rjg2MDA4QkY3NzYgLyog
QmxvY2tFeGNlcHRpb25zLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gQmxvY2tFeGNlcHRpb25zLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNjVGRUE4NjgwOTgzM0FE
RTAwQkVENEFCIC8qIFBhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFBhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2RTQ3RTY1RTEwQjc5
NDRCMDBCMTg2QzggLyogV2ViR0xHZXRJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IFdlYkdMR2V0SW5mby5jcHA7IHBhdGggPSBjYW52YXMvV2ViR0xHZXRJbmZv
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkU0N0U2NUYxMEI3OTQ0QjAwQjE4
NkM4IC8qIFdlYkdMR2V0SW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBX
ZWJHTEdldEluZm8uaDsgcGF0aCA9IGNhbnZhcy9XZWJHTEdldEluZm8uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzI2MjZFMDEwRUYwMjJGRTAwQTA3RTIwIC8qIEZvbnRGYXN0UGF0
aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250RmFzdFBhdGgu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NTQxMzNBNzEwMkUwMEU4MDAwNzVE
MDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbnNwZWN0b3JUaW1lbGluZUFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTc1NDEzM0E5MTAyRTAwRjQwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvclRpbWVs
aW5lQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA2NDAsNiArMTA2
NDQsOCBAQAogCQkJCTQ5QzdCOUFFMTA0MkQzMkUwMDA5RDQ0NyAvKiBXZWJHTEZyYW1lYnVmZmVy
LmNwcCAqLywKIAkJCQk0OUM3QjlBRjEwNDJEMzJFMDAwOUQ0NDcgLyogV2ViR0xGcmFtZWJ1ZmZl
ci5oICovLAogCQkJCTQ5QzdCOUIwMTA0MkQzMkUwMDA5RDQ0NyAvKiBXZWJHTEZyYW1lYnVmZmVy
LmlkbCAqLywKKwkJCQk2RTQ3RTY1RTEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xHZXRJbmZvLmNw
cCAqLywKKwkJCQk2RTQ3RTY1RjEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xHZXRJbmZvLmggKi8s
CiAJCQkJNDk0ODRGQjMxMDJDRjIzQzAwMTg3REQzIC8qIENhbnZhc0dyYWRpZW50LmNwcCAqLywK
IAkJCQk0OTQ4NEZCNDEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzR3JhZGllbnQuaCAqLywKIAkJ
CQk0OTQ4NEZCNTEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzR3JhZGllbnQuaWRsICovLApAQCAt
MTgxMzQsNiArMTgxNDAsNyBAQAogCQkJCUUxMjQ3NDg0MTBBQTE2MUQwMEI3OTQ5MyAvKiBBdXRo
ZW50aWNhdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM4MkRGNTgxMEE4RDVDOTAw
OTI1NjUyIC8qIENvbG9yU3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUFCMzFDOTFFMTBBRTFC
OEUwMDBDN0I5MiAvKiBMaW5lQ2xhbXBWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkU0N0U2
NjExMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMR2V0SW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0y
MDI3Nyw2ICsyMDI4NCw3IEBACiAJCQkJMTQ3OUZBRUYxMDlBRTM3NTAwREVENjU1IC8qIFJlbmRl
clJ1YnlCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NzlGQUYxMTA5QUUzNzUwMERFRDY1
NSAvKiBSZW5kZXJSdWJ5UnVuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NzlGQUYzMTA5QUUz
NzUwMERFRDY1NSAvKiBSZW5kZXJSdWJ5VGV4dC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2RTQ3
RTY2MDEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xHZXRJbmZvLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJ
bmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEN1c3RvbS5jcHAJKHJldmlzaW9uIDUxMjc4KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEx
ICszMywyNSBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJIVE1MQ2Fu
dmFzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKLSNpbmNsdWRlICJK
U1dlYkdMRmxvYXRBcnJheS5oIgotI2luY2x1ZGUgIkpTV2ViR0xJbnRBcnJheS5oIgogI2luY2x1
ZGUgIkpTSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJKU0hUTUxJbWFnZUVsZW1lbnQu
aCIKKyNpbmNsdWRlICJKU1dlYkdMQnVmZmVyLmgiCisjaW5jbHVkZSAiSlNXZWJHTEZsb2F0QXJy
YXkuaCIKKyNpbmNsdWRlICJKU1dlYkdMRnJhbWVidWZmZXIuaCIKKyNpbmNsdWRlICJKU1dlYkdM
SW50QXJyYXkuaCIKKyNpbmNsdWRlICJKU1dlYkdMUHJvZ3JhbS5oIgorI2luY2x1ZGUgIkpTV2Vi
R0xSZW5kZXJidWZmZXIuaCIKKyNpbmNsdWRlICJKU1dlYkdMU2hhZGVyLmgiCisjaW5jbHVkZSAi
SlNXZWJHTFRleHR1cmUuaCIKKyNpbmNsdWRlICJKU1dlYkdMVW5zaWduZWRCeXRlQXJyYXkuaCIK
ICNpbmNsdWRlICJKU1dlYktpdENTU01hdHJpeC5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVk
LmgiCisjaW5jbHVkZSAiV2ViR0xCdWZmZXIuaCIKKyNpbmNsdWRlICJXZWJHTEdldEluZm8uaCIK
KyNpbmNsdWRlICJXZWJHTEZsb2F0QXJyYXkuaCIKKyNpbmNsdWRlICJXZWJHTEZyYW1lYnVmZmVy
LmgiCisjaW5jbHVkZSAiV2ViR0xJbnRBcnJheS5oIgorI2luY2x1ZGUgIldlYkdMUHJvZ3JhbS5o
IgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5o
PgogI2luY2x1ZGUgPHd0Zi9Pd25GYXN0TWFsbG9jUHRyLmg+CkBAIC04MSw2ICs5NSwyMTQgQEAg
SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyUwogICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwogfQogCitKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBXZWJHTEdldEluZm8mIGluZm8pCit7CisgICAg
c3dpdGNoIChpbmZvLmdldFR5cGUoKSkgeworICAgIGNhc2UgV2ViR0xHZXRJbmZvOjprVHlwZUJv
b2w6CisgICAgICAgIHJldHVybiBqc0Jvb2xlYW4oaW5mby5nZXRCb29sKCkpOworICAgIGNhc2Ug
V2ViR0xHZXRJbmZvOjprVHlwZUZsb2F0OgorICAgICAgICByZXR1cm4ganNOdW1iZXIoZXhlYywg
aW5mby5nZXRGbG9hdCgpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVMb25nOgorICAg
ICAgICByZXR1cm4ganNOdW1iZXIoZXhlYywgaW5mby5nZXRMb25nKCkpOworICAgIGNhc2UgV2Vi
R0xHZXRJbmZvOjprVHlwZU51bGw6CisgICAgICAgIHJldHVybiBqc051bGwoKTsKKyAgICBjYXNl
IFdlYkdMR2V0SW5mbzo6a1R5cGVTdHJpbmc6CisgICAgICAgIHJldHVybiBqc1N0cmluZyhleGVj
LCBpbmZvLmdldFN0cmluZygpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVVbnNpZ25l
ZExvbmc6CisgICAgICAgIHJldHVybiBqc051bWJlcihleGVjLCBpbmZvLmdldFVuc2lnbmVkTG9u
ZygpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVXZWJHTEJ1ZmZlcjoKKyAgICAgICAg
cmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBpbmZvLmdldFdlYkdMQnVmZmVyKCkpOwor
ICAgIGNhc2UgV2ViR0xHZXRJbmZvOjprVHlwZVdlYkdMRmxvYXRBcnJheToKKyAgICAgICAgcmV0
dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBpbmZvLmdldFdlYkdMRmxvYXRBcnJheSgpKTsK
KyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVXZWJHTEZyYW1lYnVmZmVyOgorICAgICAgICBy
ZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIGluZm8uZ2V0V2ViR0xGcmFtZWJ1ZmZlcigp
KTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVXZWJHTEludEFycmF5OgorICAgICAgICBy
ZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIGluZm8uZ2V0V2ViR0xJbnRBcnJheSgpKTsK
KyAgICAvLyBGSVhNRTogaW1wbGVtZW50IFdlYkdMT2JqZWN0QXJyYXkKKyAgICAvLyBjYXNlIFdl
YkdMR2V0SW5mbzo6a1R5cGVXZWJHTE9iamVjdEFycmF5OgorICAgIGNhc2UgV2ViR0xHZXRJbmZv
OjprVHlwZVdlYkdMUHJvZ3JhbToKKyAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2Jq
ZWN0LCBpbmZvLmdldFdlYkdMUHJvZ3JhbSgpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5
cGVXZWJHTFJlbmRlcmJ1ZmZlcjoKKyAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2Jq
ZWN0LCBpbmZvLmdldFdlYkdMUmVuZGVyYnVmZmVyKCkpOworICAgIGNhc2UgV2ViR0xHZXRJbmZv
OjprVHlwZVdlYkdMVGV4dHVyZToKKyAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2Jq
ZWN0LCBpbmZvLmdldFdlYkdMVGV4dHVyZSgpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5
cGVXZWJHTFVuc2lnbmVkQnl0ZUFycmF5OgorICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9i
YWxPYmplY3QsIGluZm8uZ2V0V2ViR0xVbnNpZ25lZEJ5dGVBcnJheSgpKTsKKyAgICBkZWZhdWx0
OgorICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKKyAgICB9Cit9CisKK2VudW0gT2JqZWN0VHlwZSB7CisgICAga0J1ZmZlciwga1JlbmRlcmJ1
ZmZlciwga1RleHR1cmUsIGtWZXJ0ZXhBdHRyaWIKK307CisKK3N0YXRpYyBKU1ZhbHVlIGdldE9i
amVjdFBhcmFtZXRlcihKU1dlYkdMUmVuZGVyaW5nQ29udGV4dCogb2JqLCBFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIE9iamVjdFR5cGUgb2JqZWN0VHlwZSkKK3sKKyAgICBp
ZiAoYXJncy5zaXplKCkgIT0gMikKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgU3lu
dGF4RXJyb3IpOworCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgV2ViR0xSZW5kZXJp
bmdDb250ZXh0KiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0Kj4o
b2JqLT5pbXBsKCkpOworICAgIHVuc2lnbmVkIHRhcmdldCA9IGFyZ3MuYXQoMCkudG9JbnQzMihl
eGVjKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOworICAgIHVuc2lnbmVkIHBuYW1lID0gYXJncy5hdCgxKS50b0ludDMyKGV4ZWMp
OworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CisgICAgV2ViR0xHZXRJbmZvIGluZm87CisgICAgc3dpdGNoIChvYmplY3RUeXBlKSB7
CisgICAgY2FzZSBrQnVmZmVyOgorICAgICAgICBpbmZvID0gY29udGV4dC0+Z2V0QnVmZmVyUGFy
YW1ldGVyKHRhcmdldCwgcG5hbWUsIGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBrUmVu
ZGVyYnVmZmVyOgorICAgICAgICBpbmZvID0gY29udGV4dC0+Z2V0UmVuZGVyYnVmZmVyUGFyYW1l
dGVyKHRhcmdldCwgcG5hbWUsIGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBrVGV4dHVy
ZToKKyAgICAgICAgaW5mbyA9IGNvbnRleHQtPmdldFRleFBhcmFtZXRlcih0YXJnZXQsIHBuYW1l
LCBlYyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Uga1ZlcnRleEF0dHJpYjoKKyAgICAgICAg
Ly8gdGFyZ2V0ID0+IGluZGV4CisgICAgICAgIGluZm8gPSBjb250ZXh0LT5nZXRWZXJ0ZXhBdHRy
aWIodGFyZ2V0LCBwbmFtZSwgZWMpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAg
ICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgaWYgKGVj
KSB7CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOworICAgIH0KKyAgICByZXR1cm4gdG9KUyhleGVjLCBvYmotPmdsb2JhbE9i
amVjdCgpLCBpbmZvKTsKK30KKworZW51bSBXaGljaFByb2dyYW1DYWxsIHsKKyAgICBrUHJvZ3Jh
bVBhcmFtZXRlciwga1VuaWZvcm0KK307CisKK3N0YXRpYyBKU1ZhbHVlIGdldFByb2dyYW1QYXJh
bWV0ZXJIZWxwZXIoSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQqIG9iaiwgRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBBcmdMaXN0JiBhcmdzLCBXaGljaFByb2dyYW1DYWxsIHByb2dyYW1DYWxsKQorewor
ICAgIGlmIChhcmdzLnNpemUoKSAhPSAyKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVj
LCBTeW50YXhFcnJvcik7CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBXZWJHTFJl
bmRlcmluZ0NvbnRleHQqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRl
eHQqPihvYmotPmltcGwoKSk7CisgICAgV2ViR0xQcm9ncmFtKiBwcm9ncmFtID0gdG9XZWJHTFBy
b2dyYW0oYXJncy5hdCgwKSk7CisgICAgdW5zaWduZWQgcG5hbWUgPSBhcmdzLmF0KDEpLnRvSW50
MzIoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKKyAgICBXZWJHTEdldEluZm8gaW5mbzsKKyAgICBzd2l0Y2ggKHByb2dy
YW1DYWxsKSB7CisgICAgY2FzZSBrUHJvZ3JhbVBhcmFtZXRlcjoKKyAgICAgICAgaW5mbyA9IGNv
bnRleHQtPmdldFByb2dyYW1QYXJhbWV0ZXIocHJvZ3JhbSwgcG5hbWUsIGVjKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBrVW5pZm9ybToKKyAgICAgICAgLy8gcG5hbWUgLT4gbG9jYXRpb24K
KyAgICAgICAgaW5mbyA9IGNvbnRleHQtPmdldFVuaWZvcm0ocHJvZ3JhbSwgcG5hbWUsIGVjKTsK
KyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGlmIChlYykgeworICAgICAgICBzZXRET01FeGNl
cHRpb24oZXhlYywgZWMpOworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9Cisg
ICAgcmV0dXJuIHRvSlMoZXhlYywgb2JqLT5nbG9iYWxPYmplY3QoKSwgaW5mbyk7Cit9CisKK0pT
VmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclBhcmFtZXRlcihFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCit7CisgICAgcmV0dXJuIGdldE9iamVjdFBh
cmFtZXRlcih0aGlzLCBleGVjLCBhcmdzLCBrQnVmZmVyKTsKK30KKworSlNWYWx1ZSBKU1dlYkdM
UmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICBpZiAoYXJncy5zaXplKCkg
IT0gMykKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgU3ludGF4RXJyb3IpOworCisg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjb250
ZXh0ID0gc3RhdGljX2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0Kj4oaW1wbCgpKTsKKyAgICB1
bnNpZ25lZCB0YXJnZXQgPSBhcmdzLmF0KDApLnRvSW50MzIoZXhlYyk7CisgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB1bnNp
Z25lZCBhdHRhY2htZW50ID0gYXJncy5hdCgxKS50b0ludDMyKGV4ZWMpOworICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgdW5z
aWduZWQgcG5hbWUgPSBhcmdzLmF0KDIpLnRvSW50MzIoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBXZWJHTEdl
dEluZm8gaW5mbyA9IGNvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcih0
YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCBlYyk7CisgICAgaWYgKGVjKSB7CisgICAgICAgIHNl
dERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwor
ICAgIH0KKyAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QoKSwgaW5mbyk7Cit9CisK
K0pTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFBhcmFtZXRlcihFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCit7CisgICAgaWYgKGFyZ3Muc2l6ZSgpICE9IDEp
CisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFN5bnRheEVycm9yKTsKKworICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCA9
IHN0YXRpY19jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dCo+KGltcGwoKSk7CisgICAgdW5zaWdu
ZWQgcG5hbWUgPSBhcmdzLmF0KDApLnRvSW50MzIoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBXZWJHTEdldElu
Zm8gaW5mbyA9IGNvbnRleHQtPmdldFBhcmFtZXRlcihwbmFtZSwgZWMpOworICAgIGlmIChlYykg
eworICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKKyAgICB9CisgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCks
IGluZm8pOworfQorCitKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQcm9ncmFt
UGFyYW1ldGVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICBy
ZXR1cm4gZ2V0UHJvZ3JhbVBhcmFtZXRlckhlbHBlcih0aGlzLCBleGVjLCBhcmdzLCBrUHJvZ3Jh
bVBhcmFtZXRlcik7Cit9CisKK0pTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFJl
bmRlcmJ1ZmZlclBhcmFtZXRlcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3Mp
Cit7CisgICAgcmV0dXJuIGdldE9iamVjdFBhcmFtZXRlcih0aGlzLCBleGVjLCBhcmdzLCBrUmVu
ZGVyYnVmZmVyKTsKK30KKworSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2hh
ZGVyUGFyYW1ldGVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAg
ICBpZiAoYXJncy5zaXplKCkgIT0gMikKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywg
U3ludGF4RXJyb3IpOworCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0KiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0
Kj4oaW1wbCgpKTsKKyAgICBXZWJHTFNoYWRlciogc2hhZGVyID0gdG9XZWJHTFNoYWRlcihhcmdz
LmF0KDApKTsKKyAgICB1bnNpZ25lZCBwbmFtZSA9IGFyZ3MuYXQoMSkudG9JbnQzMihleGVjKTsK
KyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOworICAgIFdlYkdMR2V0SW5mbyBpbmZvID0gY29udGV4dC0+Z2V0U2hhZGVyUGFyYW1ldGVy
KHNoYWRlciwgcG5hbWUsIGVjKTsKKyAgICBpZiAoZWMpIHsKKyAgICAgICAgc2V0RE9NRXhjZXB0
aW9uKGV4ZWMsIGVjKTsKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQorICAg
IHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBpbmZvKTsKK30KKworSlNWYWx1ZSBK
U1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VGV4UGFyYW1ldGVyKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICByZXR1cm4gZ2V0T2JqZWN0UGFyYW1ldGVyKHRo
aXMsIGV4ZWMsIGFyZ3MsIGtUZXh0dXJlKTsKK30KKworSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5n
Q29udGV4dDo6Z2V0VW5pZm9ybShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3Mp
Cit7CisgICAgcmV0dXJuIGdldFByb2dyYW1QYXJhbWV0ZXJIZWxwZXIodGhpcywgZXhlYywgYXJn
cywga1VuaWZvcm0pOworfQorCitKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRW
ZXJ0ZXhBdHRyaWIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreworICAg
IHJldHVybiBnZXRPYmplY3RQYXJhbWV0ZXIodGhpcywgZXhlYywgYXJncywga1ZlcnRleEF0dHJp
Yik7Cit9CisKIC8vIHZvaWQgdGV4SW1hZ2UyREhUTUwoaW4gdW5zaWduZWQgbG9uZyB0YXJnZXQs
IGluIHVuc2lnbmVkIGxvbmcgbGV2ZWwsIGluIEhUTUxJbWFnZUVsZW1lbnQgaW1hZ2UpOwogSlNW
YWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4SW1hZ2UyRChFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7IApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhDdXN0b21CaW5kaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhDdXN0b21CaW5kaW5nLmgJKHJldmlzaW9uIDUxMjc4KQorKysgV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2NSw3
ICszNjUsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRSgzRF9DQU5WQVMpCiAg
ICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xSZW5kZXJpbmdDb250ZXh0QnVmZmVyRGF0YSk7
CiAgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xSZW5kZXJpbmdDb250ZXh0QnVmZmVyU3Vi
RGF0YSk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xSZW5kZXJpbmdDb250ZXh0U2l6
ZW9mKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJHTFJlbmRlcmluZ0NvbnRleHRHZXRC
dWZmZXJQYXJhbWV0ZXIpOworICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdMUmVuZGVyaW5n
Q29udGV4dEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcik7CisgICAgICAgIERFQ0xB
UkVfQ0FMTEJBQ0soV2ViR0xSZW5kZXJpbmdDb250ZXh0R2V0UGFyYW1ldGVyKTsKKyAgICAgICAg
REVDTEFSRV9DQUxMQkFDSyhXZWJHTFJlbmRlcmluZ0NvbnRleHRHZXRQcm9ncmFtUGFyYW1ldGVy
KTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJHTFJlbmRlcmluZ0NvbnRleHRHZXRSZW5k
ZXJidWZmZXJQYXJhbWV0ZXIpOworICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdMUmVuZGVy
aW5nQ29udGV4dEdldFNoYWRlclBhcmFtZXRlcik7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0so
V2ViR0xSZW5kZXJpbmdDb250ZXh0R2V0VGV4UGFyYW1ldGVyKTsKKyAgICAgICAgREVDTEFSRV9D
QUxMQkFDSyhXZWJHTFJlbmRlcmluZ0NvbnRleHRHZXRVbmlmb3JtKTsKKyAgICAgICAgREVDTEFS
RV9DQUxMQkFDSyhXZWJHTFJlbmRlcmluZ0NvbnRleHRHZXRWZXJ0ZXhBdHRyaWIpOwogICAgICAg
ICBERUNMQVJFX0NBTExCQUNLKFdlYkdMUmVuZGVyaW5nQ29udGV4dFRleEltYWdlMkQpOwogICAg
ICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdMUmVuZGVyaW5nQ29udGV4dFRleFN1YkltYWdlMkQp
OwogICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdMUmVuZGVyaW5nQ29udGV4dFVuaWZvcm0x
ZnYpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmluZ0Nv
bnRleHRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAkocmV2aXNpb24gNTEyNzgpCisrKyBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDggQEAKICNpbmNsdWRlICJWOFdlYkdMQnl0
ZUFycmF5LmgiCiAjaW5jbHVkZSAiVjhXZWJHTEZsb2F0QXJyYXkuaCIKICNpbmNsdWRlICJWOFdl
YkdMSW50QXJyYXkuaCIKKyNpbmNsdWRlICJWOFdlYkdMUHJvZ3JhbS5oIgorI2luY2x1ZGUgIlY4
V2ViR0xTaGFkZXIuaCIKICNpbmNsdWRlICJWOFdlYkdMU2hvcnRBcnJheS5oIgogI2luY2x1ZGUg
IlY4V2ViR0xVbnNpZ25lZEJ5dGVBcnJheS5oIgogI2luY2x1ZGUgIlY4V2ViR0xVbnNpZ25lZElu
dEFycmF5LmgiCkBAIC0xNjcsNiArMTY5LDI2MyBAQCBDQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xS
ZW5kZXJpbmdDb250ZXh0CiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAorc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KGNvbnN0IFdlYkdMR2V0SW5mbyYgaW5mbykKK3sK
KyAgICBzd2l0Y2ggKGluZm8uZ2V0VHlwZSgpKSB7CisgICAgY2FzZSBXZWJHTEdldEluZm86OmtU
eXBlQm9vbDoKKyAgICAgICAgcmV0dXJuIHY4OjpCb29sZWFuOjpOZXcoaW5mby5nZXRCb29sKCkp
OworICAgIGNhc2UgV2ViR0xHZXRJbmZvOjprVHlwZUZsb2F0OgorICAgICAgICByZXR1cm4gdjg6
Ok51bWJlcjo6TmV3KGluZm8uZ2V0RmxvYXQoKSk7CisgICAgY2FzZSBXZWJHTEdldEluZm86OmtU
eXBlTG9uZzoKKyAgICAgICAgcmV0dXJuIHY4OjpJbnRlZ2VyOjpOZXcoaW5mby5nZXRMb25nKCkp
OworICAgIGNhc2UgV2ViR0xHZXRJbmZvOjprVHlwZU51bGw6CisgICAgICAgIHJldHVybiB2ODo6
TnVsbCgpOworICAgIGNhc2UgV2ViR0xHZXRJbmZvOjprVHlwZVN0cmluZzoKKyAgICAgICAgcmV0
dXJuIHY4OjpTdHJpbmc6Ok5ldyhmcm9tV2ViQ29yZVN0cmluZyhpbmZvLmdldFN0cmluZygpKSwg
aW5mby5nZXRTdHJpbmcoKS5sZW5ndGgoKSk7CisgICAgY2FzZSBXZWJHTEdldEluZm86OmtUeXBl
VW5zaWduZWRMb25nOgorICAgICAgICByZXR1cm4gdjg6OkludGVnZXI6Ok5ld0Zyb21VbnNpZ25l
ZChpbmZvLmdldFVuc2lnbmVkTG9uZygpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVX
ZWJHTEJ1ZmZlcjoKKyAgICAgICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6Y29udmVydFRvVjhPYmpl
Y3QoVjhDbGFzc0luZGV4OjpXRUJHTEJVRkZFUiwgaW5mby5nZXRXZWJHTEJ1ZmZlcigpKTsKKyAg
ICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVXZWJHTEZsb2F0QXJyYXk6CisgICAgICAgIHJldHVy
biBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb1Y4T2JqZWN0KFY4Q2xhc3NJbmRleDo6V0VCR0xGTE9B
VEFSUkFZLCBpbmZvLmdldFdlYkdMRmxvYXRBcnJheSgpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5m
bzo6a1R5cGVXZWJHTEZyYW1lYnVmZmVyOgorICAgICAgICByZXR1cm4gVjhET01XcmFwcGVyOjpj
b252ZXJ0VG9WOE9iamVjdChWOENsYXNzSW5kZXg6OldFQkdMRlJBTUVCVUZGRVIsIGluZm8uZ2V0
V2ViR0xGcmFtZWJ1ZmZlcigpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVXZWJHTElu
dEFycmF5OgorICAgICAgICByZXR1cm4gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9WOE9iamVjdChW
OENsYXNzSW5kZXg6OldFQkdMSU5UQVJSQVksIGluZm8uZ2V0V2ViR0xJbnRBcnJheSgpKTsKKyAg
ICAvLyBGSVhNRTogaW1wbGVtZW50IFdlYkdMT2JqZWN0QXJyYXkKKyAgICAvLyBjYXNlIFdlYkdM
R2V0SW5mbzo6a1R5cGVXZWJHTE9iamVjdEFycmF5OgorICAgIGNhc2UgV2ViR0xHZXRJbmZvOjpr
VHlwZVdlYkdMUHJvZ3JhbToKKyAgICAgICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6Y29udmVydFRv
VjhPYmplY3QoVjhDbGFzc0luZGV4OjpXRUJHTFBST0dSQU0sIGluZm8uZ2V0V2ViR0xQcm9ncmFt
KCkpOworICAgIGNhc2UgV2ViR0xHZXRJbmZvOjprVHlwZVdlYkdMUmVuZGVyYnVmZmVyOgorICAg
ICAgICByZXR1cm4gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9WOE9iamVjdChWOENsYXNzSW5kZXg6
OldFQkdMUkVOREVSQlVGRkVSLCBpbmZvLmdldFdlYkdMUmVuZGVyYnVmZmVyKCkpOworICAgIGNh
c2UgV2ViR0xHZXRJbmZvOjprVHlwZVdlYkdMVGV4dHVyZToKKyAgICAgICAgcmV0dXJuIFY4RE9N
V3JhcHBlcjo6Y29udmVydFRvVjhPYmplY3QoVjhDbGFzc0luZGV4OjpXRUJHTFRFWFRVUkUsIGlu
Zm8uZ2V0V2ViR0xUZXh0dXJlKCkpOworICAgIGNhc2UgV2ViR0xHZXRJbmZvOjprVHlwZVdlYkdM
VW5zaWduZWRCeXRlQXJyYXk6CisgICAgICAgIHJldHVybiBWOERPTVdyYXBwZXI6OmNvbnZlcnRU
b1Y4T2JqZWN0KFY4Q2xhc3NJbmRleDo6V0VCR0xVTlNJR05FREJZVEVBUlJBWSwgaW5mby5nZXRX
ZWJHTFVuc2lnbmVkQnl0ZUFycmF5KCkpOworICAgIGRlZmF1bHQ6CisgICAgICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgfQorfQorCitl
bnVtIE9iamVjdFR5cGUgeworICAgIGtCdWZmZXIsIGtSZW5kZXJidWZmZXIsIGtUZXh0dXJlLCBr
VmVydGV4QXR0cmliCit9OworCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGdldE9iamVj
dFBhcmFtZXRlcihjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzLCBPYmplY3RUeXBlIG9iamVjdFR5
cGUpCit7CisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgIT0gMikgeworICAgICAgICBWOFByb3h5Ojpz
ZXRET01FeGNlcHRpb24oU1lOVEFYX0VSUik7CisgICAgICAgIHJldHVybiBub3RIYW5kbGVkQnlJ
bnRlcmNlcHRvcigpOworICAgIH0KKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdl
YkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCA9CisgICAgICAgIFY4RE9NV3JhcHBlcjo6Y29u
dmVydERPTVdyYXBwZXJUb05hdGl2ZTxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+KGFyZ3MuSG9sZGVy
KCkpOworICAgIGJvb2wgb2s7CisgICAgdW5zaWduZWQgdGFyZ2V0ID0gdG9JbnQzMihhcmdzWzBd
LCBvayk7CisgICAgaWYgKCFvaykgeworICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24o
U1lOVEFYX0VSUik7CisgICAgICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOwor
ICAgIH0KKyAgICB1bnNpZ25lZCBwbmFtZSA9IHRvSW50MzIoYXJnc1sxXSwgb2spOworICAgIGlm
ICghb2spIHsKKyAgICAgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKFNZTlRBWF9FUlIpOwor
ICAgICAgICByZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsKKyAgICB9CisgICAgV2Vi
R0xHZXRJbmZvIGluZm87CisgICAgc3dpdGNoIChvYmplY3RUeXBlKSB7CisgICAgY2FzZSBrQnVm
ZmVyOgorICAgICAgICBpbmZvID0gY29udGV4dC0+Z2V0QnVmZmVyUGFyYW1ldGVyKHRhcmdldCwg
cG5hbWUsIGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBrUmVuZGVyYnVmZmVyOgorICAg
ICAgICBpbmZvID0gY29udGV4dC0+Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKHRhcmdldCwgcG5h
bWUsIGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBrVGV4dHVyZToKKyAgICAgICAgaW5m
byA9IGNvbnRleHQtPmdldFRleFBhcmFtZXRlcih0YXJnZXQsIHBuYW1lLCBlYyk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2Uga1ZlcnRleEF0dHJpYjoKKyAgICAgICAgLy8gdGFyZ2V0ID0+IGlu
ZGV4CisgICAgICAgIGluZm8gPSBjb250ZXh0LT5nZXRWZXJ0ZXhBdHRyaWIodGFyZ2V0LCBwbmFt
ZSwgZWMpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgaWYgKGVjKSB7CisgICAgICAgIFY4
UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYyk7CisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVk
KCk7CisgICAgfQorICAgIHJldHVybiB0b1Y4KGluZm8pOworfQorCitlbnVtIFdoaWNoUHJvZ3Jh
bUNhbGwgeworICAgIGtQcm9ncmFtUGFyYW1ldGVyLCBrVW5pZm9ybQorfTsKKworc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBnZXRQcm9ncmFtUGFyYW1ldGVyKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MsIFdoaWNoUHJvZ3JhbUNhbGwgcHJvZ3JhbUNhbGwpCit7CisgICAgaWYgKGFyZ3Mu
TGVuZ3RoKCkgIT0gMikgeworICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oU1lOVEFY
X0VSUik7CisgICAgICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOworICAgIH0K
KworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dCog
Y29udGV4dCA9CisgICAgICAgIFY4RE9NV3JhcHBlcjo6Y29udmVydERPTVdyYXBwZXJUb05hdGl2
ZTxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+KGFyZ3MuSG9sZGVyKCkpOworICAgIFdlYkdMUHJvZ3Jh
bSogcHJvZ3JhbSA9IFY4V2ViR0xQcm9ncmFtOjpIYXNJbnN0YW5jZShhcmdzWzBdKSA/IHY4RE9N
V3JhcHBlclRvPFdlYkdMUHJvZ3JhbT4oVjhDbGFzc0luZGV4OjpXRUJHTFBST0dSQU0sIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMDsKKyAgICBib29sIG9rOworICAg
IHVuc2lnbmVkIHBuYW1lID0gdG9JbnQzMihhcmdzWzFdLCBvayk7CisgICAgaWYgKCFvaykgewor
ICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oU1lOVEFYX0VSUik7CisgICAgICAgIHJl
dHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOworICAgIH0KKyAgICBXZWJHTEdldEluZm8g
aW5mbzsKKyAgICBzd2l0Y2ggKHByb2dyYW1DYWxsKSB7CisgICAgY2FzZSBrUHJvZ3JhbVBhcmFt
ZXRlcjoKKyAgICAgICAgaW5mbyA9IGNvbnRleHQtPmdldFByb2dyYW1QYXJhbWV0ZXIocHJvZ3Jh
bSwgcG5hbWUsIGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBrVW5pZm9ybToKKyAgICAg
ICAgLy8gcG5hbWUgLT4gbG9jYXRpb24KKyAgICAgICAgaW5mbyA9IGNvbnRleHQtPmdldFVuaWZv
cm0ocHJvZ3JhbSwgcG5hbWUsIGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGlmIChl
YykgeworICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oZWMpOworICAgICAgICByZXR1
cm4gdjg6OlVuZGVmaW5lZCgpOworICAgIH0KKyAgICByZXR1cm4gdG9WOChpbmZvKTsKK30KKwor
CitDQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xSZW5kZXJpbmdDb250ZXh0R2V0QnVmZmVyUGFyYW1l
dGVyKQoreworICAgIElOQ19TVEFUUygiRE9NLldlYkdMUmVuZGVyaW5nQ29udGV4dC5nZXRCdWZm
ZXJQYXJhbWV0ZXIoKSIpOworICAgIHJldHVybiBnZXRPYmplY3RQYXJhbWV0ZXIoYXJncywga0J1
ZmZlcik7Cit9CisKK0NBTExCQUNLX0ZVTkNfREVDTChXZWJHTFJlbmRlcmluZ0NvbnRleHRHZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIpCit7CisgICAgSU5DX1NUQVRTKCJET00uV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcigpIik7
CisKKyAgICBpZiAoYXJncy5MZW5ndGgoKSAhPSAzKSB7CisgICAgICAgIFY4UHJveHk6OnNldERP
TUV4Y2VwdGlvbihTWU5UQVhfRVJSKTsKKyAgICAgICAgcmV0dXJuIG5vdEhhbmRsZWRCeUludGVy
Y2VwdG9yKCk7CisgICAgfQorCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0ID0KKyAgICAgICAgVjhET01XcmFwcGVyOjpjb252ZXJ0
RE9NV3JhcHBlclRvTmF0aXZlPFdlYkdMUmVuZGVyaW5nQ29udGV4dD4oYXJncy5Ib2xkZXIoKSk7
CisgICAgYm9vbCBvazsKKyAgICB1bnNpZ25lZCB0YXJnZXQgPSB0b0ludDMyKGFyZ3NbMF0sIG9r
KTsKKyAgICBpZiAoIW9rKSB7CisgICAgICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihTWU5U
QVhfRVJSKTsKKyAgICAgICAgcmV0dXJuIG5vdEhhbmRsZWRCeUludGVyY2VwdG9yKCk7CisgICAg
fQorICAgIHVuc2lnbmVkIGF0dGFjaG1lbnQgPSB0b0ludDMyKGFyZ3NbMV0sIG9rKTsKKyAgICBp
ZiAoIW9rKSB7CisgICAgICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihTWU5UQVhfRVJSKTsK
KyAgICAgICAgcmV0dXJuIG5vdEhhbmRsZWRCeUludGVyY2VwdG9yKCk7CisgICAgfQorICAgIHVu
c2lnbmVkIHBuYW1lID0gdG9JbnQzMihhcmdzWzJdLCBvayk7CisgICAgaWYgKCFvaykgeworICAg
ICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oU1lOVEFYX0VSUik7CisgICAgICAgIHJldHVy
biBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOworICAgIH0KKyAgICBXZWJHTEdldEluZm8gaW5m
byA9IGNvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcih0YXJnZXQsIGF0
dGFjaG1lbnQsIHBuYW1lLCBlYyk7CisgICAgaWYgKGVjKSB7CisgICAgICAgIFY4UHJveHk6OnNl
dERPTUV4Y2VwdGlvbihlYyk7CisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAg
fQorICAgIHJldHVybiB0b1Y4KGluZm8pOworfQorCitDQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xS
ZW5kZXJpbmdDb250ZXh0R2V0UGFyYW1ldGVyKQoreworICAgIElOQ19TVEFUUygiRE9NLldlYkdM
UmVuZGVyaW5nQ29udGV4dC5nZXRQYXJhbWV0ZXIoKSIpOworCisgICAgaWYgKGFyZ3MuTGVuZ3Ro
KCkgIT0gMSkgeworICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oU1lOVEFYX0VSUik7
CisgICAgICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOworICAgIH0KKworICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4
dCA9CisgICAgICAgIFY4RE9NV3JhcHBlcjo6Y29udmVydERPTVdyYXBwZXJUb05hdGl2ZTxXZWJH
TFJlbmRlcmluZ0NvbnRleHQ+KGFyZ3MuSG9sZGVyKCkpOworICAgIGJvb2wgb2s7CisgICAgdW5z
aWduZWQgcG5hbWUgPSB0b0ludDMyKGFyZ3NbMF0sIG9rKTsKKyAgICBpZiAoIW9rKSB7CisgICAg
ICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihTWU5UQVhfRVJSKTsKKyAgICAgICAgcmV0dXJu
IG5vdEhhbmRsZWRCeUludGVyY2VwdG9yKCk7CisgICAgfQorICAgIFdlYkdMR2V0SW5mbyBpbmZv
ID0gY29udGV4dC0+Z2V0UGFyYW1ldGVyKHBuYW1lLCBlYyk7CisgICAgaWYgKGVjKSB7CisgICAg
ICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYyk7CisgICAgICAgIHJldHVybiB2ODo6VW5k
ZWZpbmVkKCk7CisgICAgfQorICAgIHJldHVybiB0b1Y4KGluZm8pOworfQorCitDQUxMQkFDS19G
VU5DX0RFQ0woV2ViR0xSZW5kZXJpbmdDb250ZXh0R2V0UHJvZ3JhbVBhcmFtZXRlcikKK3sKKyAg
ICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRlcmluZ0NvbnRleHQuZ2V0UHJvZ3JhbVBhcmFtZXRl
cigpIik7CisgICAgcmV0dXJuIGdldFByb2dyYW1QYXJhbWV0ZXIoYXJncywga1Byb2dyYW1QYXJh
bWV0ZXIpOworfQorCitDQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xSZW5kZXJpbmdDb250ZXh0R2V0
UmVuZGVyYnVmZmVyUGFyYW1ldGVyKQoreworICAgIElOQ19TVEFUUygiRE9NLldlYkdMUmVuZGVy
aW5nQ29udGV4dC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoKSIpOworICAgIHJldHVybiBnZXRP
YmplY3RQYXJhbWV0ZXIoYXJncywga1JlbmRlcmJ1ZmZlcik7Cit9CisKK0NBTExCQUNLX0ZVTkNf
REVDTChXZWJHTFJlbmRlcmluZ0NvbnRleHRHZXRTaGFkZXJQYXJhbWV0ZXIpCit7CisgICAgSU5D
X1NUQVRTKCJET00uV2ViR0xSZW5kZXJpbmdDb250ZXh0LmdldFNoYWRlclBhcmFtZXRlcigpIik7
CisKKyAgICBpZiAoYXJncy5MZW5ndGgoKSAhPSAyKSB7CisgICAgICAgIFY4UHJveHk6OnNldERP
TUV4Y2VwdGlvbihTWU5UQVhfRVJSKTsKKyAgICAgICAgcmV0dXJuIG5vdEhhbmRsZWRCeUludGVy
Y2VwdG9yKCk7CisgICAgfQorCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0ID0KKyAgICAgICAgVjhET01XcmFwcGVyOjpjb252ZXJ0
RE9NV3JhcHBlclRvTmF0aXZlPFdlYkdMUmVuZGVyaW5nQ29udGV4dD4oYXJncy5Ib2xkZXIoKSk7
CisgICAgV2ViR0xTaGFkZXIqIHNoYWRlciA9IFY4V2ViR0xTaGFkZXI6Okhhc0luc3RhbmNlKGFy
Z3NbMF0pID8gdjhET01XcmFwcGVyVG88V2ViR0xTaGFkZXI+KFY4Q2xhc3NJbmRleDo6V0VCR0xT
SEFERVIsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMDsKKyAgICBi
b29sIG9rOworICAgIHVuc2lnbmVkIHBuYW1lID0gdG9JbnQzMihhcmdzWzFdLCBvayk7CisgICAg
aWYgKCFvaykgeworICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oU1lOVEFYX0VSUik7
CisgICAgICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOworICAgIH0KKyAgICBX
ZWJHTEdldEluZm8gaW5mbyA9IGNvbnRleHQtPmdldFNoYWRlclBhcmFtZXRlcihzaGFkZXIsIHBu
YW1lLCBlYyk7CisgICAgaWYgKGVjKSB7CisgICAgICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlv
bihlYyk7CisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgfQorICAgIHJldHVy
biB0b1Y4KGluZm8pOworfQorCitDQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xSZW5kZXJpbmdDb250
ZXh0R2V0VGV4UGFyYW1ldGVyKQoreworICAgIElOQ19TVEFUUygiRE9NLldlYkdMUmVuZGVyaW5n
Q29udGV4dC5nZXRUZXhQYXJhbWV0ZXIoKSIpOworICAgIHJldHVybiBnZXRPYmplY3RQYXJhbWV0
ZXIoYXJncywga1RleHR1cmUpOworfQorCitDQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xSZW5kZXJp
bmdDb250ZXh0R2V0VW5pZm9ybSkKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRlcmlu
Z0NvbnRleHQuZ2V0VW5pZm9ybSgpIik7CisgICAgcmV0dXJuIGdldFByb2dyYW1QYXJhbWV0ZXIo
YXJncywga1VuaWZvcm0pOworfQorCitDQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xSZW5kZXJpbmdD
b250ZXh0R2V0VmVydGV4QXR0cmliKQoreworICAgIElOQ19TVEFUUygiRE9NLldlYkdMUmVuZGVy
aW5nQ29udGV4dC5nZXRWZXJ0ZXhBdHRyaWIoKSIpOworICAgIHJldHVybiBnZXRPYmplY3RQYXJh
bWV0ZXIoYXJncywga1ZlcnRleEF0dHJpYik7Cit9CisKIENBTExCQUNLX0ZVTkNfREVDTChXZWJH
TFJlbmRlcmluZ0NvbnRleHRUZXhJbWFnZTJEKQogewogICAgIElOQ19TVEFUUygiRE9NLldlYkdM
UmVuZGVyaW5nQ29udGV4dC50ZXhJbWFnZTJEKCkiKTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc09iamVjdC5jcHAJKHJldmlzaW9uIDUxMjc4KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAKIENhbnZhc09iamVjdDo6Q2FudmFzT2JqZWN0KFdlYkdMUmVuZGVy
aW5nQ29udGV4dCogY29udGV4dCkKICAgICA6IG1fb2JqZWN0KDApCisgICAgLCBtX3Nob3VsZERl
bGV0ZU9iamVjdCh0cnVlKQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCiB7CiB9CkBAIC00NCwy
NCArNDUsMjcgQEAgQ2FudmFzT2JqZWN0Ojp+Q2FudmFzT2JqZWN0KCkKICAgICAgICAgbV9jb250
ZXh0LT5yZW1vdmVPYmplY3QodGhpcyk7CiB9CiAKLXZvaWQgQ2FudmFzT2JqZWN0OjpzZXRPYmpl
Y3QoUGxhdGZvcm0zRE9iamVjdCBvYmplY3QpCit2b2lkIENhbnZhc09iamVjdDo6c2V0T2JqZWN0
KFBsYXRmb3JtM0RPYmplY3Qgb2JqZWN0LCBib29sIHNob3VsZERlbGV0ZU9iamVjdCkKIHsKICAg
ICBpZiAob2JqZWN0ID09IG1fb2JqZWN0KQogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAg
IGRlbGV0ZU9iamVjdCgpOwogICAgIG1fb2JqZWN0ID0gb2JqZWN0OworICAgIG1fc2hvdWxkRGVs
ZXRlT2JqZWN0ID0gc2hvdWxkRGVsZXRlT2JqZWN0OwogfQogCiB2b2lkIENhbnZhc09iamVjdDo6
ZGVsZXRlT2JqZWN0KCkKIHsKICAgICBpZiAobV9vYmplY3QpIHsKLSAgICAgICAgaWYgKG1fY29u
dGV4dCkgewotICAgICAgICAgICAgbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpLT5tYWtl
Q29udGV4dEN1cnJlbnQoKTsKLSAgICAgICAgICAgIF9kZWxldGVPYmplY3QobV9vYmplY3QpOwot
ICAgICAgICB9CisgICAgICAgIGlmIChtX3Nob3VsZERlbGV0ZU9iamVjdCkKKyAgICAgICAgICAg
IGlmIChtX2NvbnRleHQpIHsKKyAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmdyYXBoaWNzQ29u
dGV4dDNEKCktPm1ha2VDb250ZXh0Q3VycmVudCgpOworICAgICAgICAgICAgICAgIF9kZWxldGVP
YmplY3QobV9vYmplY3QpOworICAgICAgICAgICAgfQogICAgICAgICBtX29iamVjdCA9IDA7CiAg
ICAgfQorICAgIG1fc2hvdWxkRGVsZXRlT2JqZWN0ID0gdHJ1ZTsKIH0KIAogfQpJbmRleDogV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc09iamVjdC5oCShyZXZpc2lvbiA1MTI3OCkKKysrIFdlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIH5DYW52YXNPYmplY3QoKTsKICAg
ICAgICAgCiAgICAgICAgIFBsYXRmb3JtM0RPYmplY3Qgb2JqZWN0KCkgY29uc3QgeyByZXR1cm4g
bV9vYmplY3Q7IH0KLSAgICAgICAgdm9pZCBzZXRPYmplY3QoUGxhdGZvcm0zRE9iamVjdCk7Cisg
ICAgICAgIHZvaWQgc2V0T2JqZWN0KFBsYXRmb3JtM0RPYmplY3QsIGJvb2wgc2hvdWxkRGVsZXRl
T2JqZWN0ID0gdHJ1ZSk7CiAgICAgICAgIHZvaWQgZGVsZXRlT2JqZWN0KCk7CiAgICAgICAgIAog
ICAgICAgICB2b2lkIGRldGFjaENvbnRleHQoKQpAQCAtNTcsNiArNTcsMTMgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIAogICAgIHByaXZhdGU6CiAgICAgICAgIFBsYXRmb3JtM0RPYmplY3Qg
bV9vYmplY3Q7CisgICAgICAgIC8vIFRoZSBzaG91bGREZWxldGVPYmplY3QgZmxhZyBpbmRpY2F0
ZXMgd2hldGhlciB0aGlzIHdyYXBwZXIKKyAgICAgICAgLy8gb3ducyB0aGUgdW5kZXJseWluZyBy
ZXNvdXJjZSBhbmQgc2hvdWxkIGRlbGV0ZSBpdCB3aGVuIHRoZQorICAgICAgICAvLyB3cmFwcGVy
IGlzIHVucmVmZXJlbmNlZCBmb3IgdGhlIGxhc3QgdGltZSBhbmQgZGVsZXRlZC4gSXQKKyAgICAg
ICAgLy8gaXMgb25seSBzZXQgdG8gZmFsc2UgZm9yIGNlcnRhaW4gb2JqZWN0cyByZXR1cm5lZCBm
cm9tIGdldAorICAgICAgICAvLyBxdWVyaWVzLiBGSVhNRTogc2hvdWxkIGNvbnNpZGVyIGNhbm9u
aWNhbGl6aW5nIGFsbCBvZiB0aGVzZQorICAgICAgICAvLyBvYmplY3RzIGluIHRoZSBmdXR1cmUu
CisgICAgICAgIGJvb2wgbV9zaG91bGREZWxldGVPYmplY3Q7CiAgICAgICAgIFdlYkdMUmVuZGVy
aW5nQ29udGV4dCogbV9jb250ZXh0OwogICAgIH07CiAgICAgCkluZGV4OiBXZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMQnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMQnVmZmVyLmNwcAkocmV2aXNpb24gNTEyNzgpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMQnVmZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTIgKzM3LDIzIEBAIFBhc3NS
ZWZQdHI8V2ViR0xCdWZmZXI+IFdlYkdMQnVmZmVyOjpjcmUKICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFdlYkdMQnVmZmVyKGN0eCkpOwogfQogCitQYXNzUmVmUHRyPFdlYkdMQnVmZmVyPiBXZWJH
TEJ1ZmZlcjo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY3R4LCBQbGF0Zm9ybTNET2Jq
ZWN0IG9iaikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdMQnVmZmVyKGN0eCwgb2Jq
KSk7Cit9CisKIFdlYkdMQnVmZmVyOjpXZWJHTEJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHQq
IGN0eCkKICAgICA6IENhbnZhc09iamVjdChjdHgpCiB7CiAgICAgc2V0T2JqZWN0KGNvbnRleHQo
KS0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+Y3JlYXRlQnVmZmVyKCkpOwogfQogCitXZWJHTEJ1ZmZl
cjo6V2ViR0xCdWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjdHgsIFBsYXRmb3JtM0RPYmpl
Y3Qgb2JqKQorICAgIDogQ2FudmFzT2JqZWN0KGN0eCkKK3sKKyAgICBzZXRPYmplY3Qob2JqLCBm
YWxzZSk7Cit9CisKIHZvaWQgV2ViR0xCdWZmZXI6Ol9kZWxldGVPYmplY3QoUGxhdGZvcm0zRE9i
amVjdCBvYmplY3QpCiB7CiAgICAgY29udGV4dCgpLT5ncmFwaGljc0NvbnRleHQzRCgpLT5kZWxl
dGVCdWZmZXIob2JqZWN0KTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmgJKHJldmlz
aW9uIDUxMjc4KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOSw4ICszOSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIAog
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJHTEJ1ZmZlcj4gY3JlYXRlKFdlYkdMUmVuZGVy
aW5nQ29udGV4dCopOwogICAgICAgICAKKyAgICAgICAgLy8gRm9yIHF1ZXJ5aW5nIHByZXZpb3Vz
bHkgY3JlYXRlZCBvYmplY3RzIHZpYSBlLmcuIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcgorICAgICAgICAvLyBGSVhNRTogc2hvdWxkIGNvbnNpZGVyIGNhbm9uaWNhbGl6aW5nIHRo
ZXNlIG9iamVjdHMKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViR0xCdWZmZXI+IGNyZWF0
ZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqLCBQbGF0Zm9ybTNET2JqZWN0KTsKKwogICAgIHByb3Rl
Y3RlZDoKICAgICAgICAgV2ViR0xCdWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0Kik7CisgICAg
ICAgIFdlYkdMQnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dCosIFBsYXRmb3JtM0RPYmplY3Qg
b2JqKTsKICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgdm9pZCBfZGVsZXRlT2JqZWN0KFBsYXRm
b3JtM0RPYmplY3Qgbyk7CiAgICAgfTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xH
ZXRJbmZvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMR2V0SW5m
by5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjE1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
OSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUo
M0RfQ0FOVkFTKQorCisjaW5jbHVkZSAiV2ViR0xHZXRJbmZvLmgiCisjaW5jbHVkZSAiV2ViR0xC
dWZmZXIuaCIKKyNpbmNsdWRlICJXZWJHTEZsb2F0QXJyYXkuaCIKKyNpbmNsdWRlICJXZWJHTEZy
YW1lYnVmZmVyLmgiCisjaW5jbHVkZSAiV2ViR0xJbnRBcnJheS5oIgorI2luY2x1ZGUgIldlYkdM
UHJvZ3JhbS5oIgorI2luY2x1ZGUgIldlYkdMUmVuZGVyYnVmZmVyLmgiCisjaW5jbHVkZSAiV2Vi
R0xUZXh0dXJlLmgiCisjaW5jbHVkZSAiV2ViR0xVbnNpZ25lZEJ5dGVBcnJheS5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK1dlYkdMR2V0SW5mbzo6V2ViR0xHZXRJbmZvKGJvb2wgdmFsdWUp
CisgICAgOiBtX3R5cGUoa1R5cGVCb29sKQorICAgICwgbV9ib29sKHZhbHVlKQoreworfQorCitX
ZWJHTEdldEluZm86OldlYkdMR2V0SW5mbyhmbG9hdCB2YWx1ZSkKKyAgICA6IG1fdHlwZShrVHlw
ZUZsb2F0KQorICAgICwgbV9mbG9hdCh2YWx1ZSkKK3sKK30KKworV2ViR0xHZXRJbmZvOjpXZWJH
TEdldEluZm8obG9uZyB2YWx1ZSkKKyAgICA6IG1fdHlwZShrVHlwZUxvbmcpCisgICAgLCBtX2xv
bmcodmFsdWUpCit7Cit9CisKK1dlYkdMR2V0SW5mbzo6V2ViR0xHZXRJbmZvKCkKKyAgICA6IG1f
dHlwZShrVHlwZU51bGwpCit7Cit9CisKK1dlYkdMR2V0SW5mbzo6V2ViR0xHZXRJbmZvKGNvbnN0
IFN0cmluZyYgdmFsdWUpCisgICAgOiBtX3R5cGUoa1R5cGVTdHJpbmcpCisgICAgLCBtX3N0cmlu
Zyh2YWx1ZSkKK3sKK30KKworV2ViR0xHZXRJbmZvOjpXZWJHTEdldEluZm8odW5zaWduZWQgbG9u
ZyB2YWx1ZSkKKyAgICA6IG1fdHlwZShrVHlwZVVuc2lnbmVkTG9uZykKKyAgICAsIG1fdW5zaWdu
ZWRMb25nKHZhbHVlKQoreworfQorCitXZWJHTEdldEluZm86OldlYkdMR2V0SW5mbyhQYXNzUmVm
UHRyPFdlYkdMQnVmZmVyPiB2YWx1ZSkKKyAgICA6IG1fdHlwZShrVHlwZVdlYkdMQnVmZmVyKQor
ICAgICwgbV93ZWJnbEJ1ZmZlcih2YWx1ZSkKK3sKK30KKworV2ViR0xHZXRJbmZvOjpXZWJHTEdl
dEluZm8oUGFzc1JlZlB0cjxXZWJHTEZsb2F0QXJyYXk+IHZhbHVlKQorICAgIDogbV90eXBlKGtU
eXBlV2ViR0xGbG9hdEFycmF5KQorICAgICwgbV93ZWJnbEZsb2F0QXJyYXkodmFsdWUpCit7Cit9
CisKK1dlYkdMR2V0SW5mbzo6V2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xGcmFtZWJ1ZmZl
cj4gdmFsdWUpCisgICAgOiBtX3R5cGUoa1R5cGVXZWJHTEZyYW1lYnVmZmVyKQorICAgICwgbV93
ZWJnbEZyYW1lYnVmZmVyKHZhbHVlKQoreworfQorCitXZWJHTEdldEluZm86OldlYkdMR2V0SW5m
byhQYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IHZhbHVlKQorICAgIDogbV90eXBlKGtUeXBlV2Vi
R0xJbnRBcnJheSkKKyAgICAsIG1fd2ViZ2xJbnRBcnJheSh2YWx1ZSkKK3sKK30KKworV2ViR0xH
ZXRJbmZvOjpXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTFByb2dyYW0+IHZhbHVlKQorICAg
IDogbV90eXBlKGtUeXBlV2ViR0xQcm9ncmFtKQorICAgICwgbV93ZWJnbFByb2dyYW0odmFsdWUp
Cit7Cit9CisKK1dlYkdMR2V0SW5mbzo6V2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xSZW5k
ZXJidWZmZXI+IHZhbHVlKQorICAgIDogbV90eXBlKGtUeXBlV2ViR0xSZW5kZXJidWZmZXIpCisg
ICAgLCBtX3dlYmdsUmVuZGVyYnVmZmVyKHZhbHVlKQoreworfQorCitXZWJHTEdldEluZm86Oldl
YkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMVGV4dHVyZT4gdmFsdWUpCisgICAgOiBtX3R5cGUo
a1R5cGVXZWJHTFRleHR1cmUpCisgICAgLCBtX3dlYmdsVGV4dHVyZSh2YWx1ZSkKK3sKK30KKwor
V2ViR0xHZXRJbmZvOjpXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTFVuc2lnbmVkQnl0ZUFy
cmF5PiB2YWx1ZSkKKyAgICA6IG1fdHlwZShrVHlwZVdlYkdMVW5zaWduZWRCeXRlQXJyYXkpCisg
ICAgLCBtX3dlYmdsVW5zaWduZWRCeXRlQXJyYXkodmFsdWUpCit7Cit9CisKK1dlYkdMR2V0SW5m
bzo6fldlYkdMR2V0SW5mbygpCit7Cit9CisKK1dlYkdMR2V0SW5mbzo6VHlwZSBXZWJHTEdldElu
Zm86OmdldFR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3R5cGU7Cit9CisKK2Jvb2wgV2Vi
R0xHZXRJbmZvOjpnZXRCb29sKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZ2V0VHlwZSgpID09IGtU
eXBlQm9vbCk7CisgICAgcmV0dXJuIG1fYm9vbDsKK30KKworZmxvYXQgV2ViR0xHZXRJbmZvOjpn
ZXRGbG9hdCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGdldFR5cGUoKSA9PSBrVHlwZUZsb2F0KTsK
KyAgICByZXR1cm4gbV9mbG9hdDsKK30KKworbG9uZyBXZWJHTEdldEluZm86OmdldExvbmcoKSBj
b25zdAoreworICAgIEFTU0VSVChnZXRUeXBlKCkgPT0ga1R5cGVMb25nKTsKKyAgICByZXR1cm4g
bV9sb25nOworfQorCitjb25zdCBTdHJpbmcmIFdlYkdMR2V0SW5mbzo6Z2V0U3RyaW5nKCkgY29u
c3QKK3sKKyAgICBBU1NFUlQoZ2V0VHlwZSgpID09IGtUeXBlU3RyaW5nKTsKKyAgICByZXR1cm4g
bV9zdHJpbmc7Cit9CisKK3Vuc2lnbmVkIGxvbmcgV2ViR0xHZXRJbmZvOjpnZXRVbnNpZ25lZExv
bmcoKSBjb25zdAoreworICAgIEFTU0VSVChnZXRUeXBlKCkgPT0ga1R5cGVVbnNpZ25lZExvbmcp
OworICAgIHJldHVybiBtX3Vuc2lnbmVkTG9uZzsKK30KKworUGFzc1JlZlB0cjxXZWJHTEJ1ZmZl
cj4gV2ViR0xHZXRJbmZvOjpnZXRXZWJHTEJ1ZmZlcigpIGNvbnN0Cit7CisgICAgQVNTRVJUKGdl
dFR5cGUoKSA9PSBrVHlwZVdlYkdMQnVmZmVyKTsKKyAgICByZXR1cm4gbV93ZWJnbEJ1ZmZlcjsK
K30KKworUGFzc1JlZlB0cjxXZWJHTEZsb2F0QXJyYXk+IFdlYkdMR2V0SW5mbzo6Z2V0V2ViR0xG
bG9hdEFycmF5KCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZ2V0VHlwZSgpID09IGtUeXBlV2ViR0xG
bG9hdEFycmF5KTsKKyAgICByZXR1cm4gbV93ZWJnbEZsb2F0QXJyYXk7Cit9CisKK1Bhc3NSZWZQ
dHI8V2ViR0xGcmFtZWJ1ZmZlcj4gV2ViR0xHZXRJbmZvOjpnZXRXZWJHTEZyYW1lYnVmZmVyKCkg
Y29uc3QKK3sKKyAgICBBU1NFUlQoZ2V0VHlwZSgpID09IGtUeXBlV2ViR0xGcmFtZWJ1ZmZlcik7
CisgICAgcmV0dXJuIG1fd2ViZ2xGcmFtZWJ1ZmZlcjsKK30KKworUGFzc1JlZlB0cjxXZWJHTElu
dEFycmF5PiBXZWJHTEdldEluZm86OmdldFdlYkdMSW50QXJyYXkoKSBjb25zdAoreworICAgIEFT
U0VSVChnZXRUeXBlKCkgPT0ga1R5cGVXZWJHTEludEFycmF5KTsKKyAgICByZXR1cm4gbV93ZWJn
bEludEFycmF5OworfQorCitQYXNzUmVmUHRyPFdlYkdMUHJvZ3JhbT4gV2ViR0xHZXRJbmZvOjpn
ZXRXZWJHTFByb2dyYW0oKSBjb25zdAoreworICAgIEFTU0VSVChnZXRUeXBlKCkgPT0ga1R5cGVX
ZWJHTFByb2dyYW0pOworICAgIHJldHVybiBtX3dlYmdsUHJvZ3JhbTsKK30KKworUGFzc1JlZlB0
cjxXZWJHTFJlbmRlcmJ1ZmZlcj4gV2ViR0xHZXRJbmZvOjpnZXRXZWJHTFJlbmRlcmJ1ZmZlcigp
IGNvbnN0Cit7CisgICAgQVNTRVJUKGdldFR5cGUoKSA9PSBrVHlwZVdlYkdMUmVuZGVyYnVmZmVy
KTsKKyAgICByZXR1cm4gbV93ZWJnbFJlbmRlcmJ1ZmZlcjsKK30KKworUGFzc1JlZlB0cjxXZWJH
TFRleHR1cmU+IFdlYkdMR2V0SW5mbzo6Z2V0V2ViR0xUZXh0dXJlKCkgY29uc3QKK3sKKyAgICBB
U1NFUlQoZ2V0VHlwZSgpID09IGtUeXBlV2ViR0xUZXh0dXJlKTsKKyAgICByZXR1cm4gbV93ZWJn
bFRleHR1cmU7Cit9CisKK1Bhc3NSZWZQdHI8V2ViR0xVbnNpZ25lZEJ5dGVBcnJheT4gV2ViR0xH
ZXRJbmZvOjpnZXRXZWJHTFVuc2lnbmVkQnl0ZUFycmF5KCkgY29uc3QKK3sKKyAgICBBU1NFUlQo
Z2V0VHlwZSgpID09IGtUeXBlV2ViR0xVbnNpZ25lZEJ5dGVBcnJheSk7CisgICAgcmV0dXJuIG1f
d2ViZ2xVbnNpZ25lZEJ5dGVBcnJheTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKDNEX0NBTlZBUykKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xHZXRJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEdldElu
Zm8uaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBH
b29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkdMR2V0SW5mb19oCisjZGVmaW5lIFdlYkdM
R2V0SW5mb19oCisKKyNpbmNsdWRlICJ3dGYvUGFzc1JlZlB0ci5oIgorI2luY2x1ZGUgInd0Zi9S
ZWZQdHIuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorCisjaW5jbHVkZSAiV2ViR0xC
dWZmZXIuaCIKKyNpbmNsdWRlICJXZWJHTEZsb2F0QXJyYXkuaCIKKyNpbmNsdWRlICJXZWJHTEZy
YW1lYnVmZmVyLmgiCisjaW5jbHVkZSAiV2ViR0xJbnRBcnJheS5oIgorLy8gRklYTUU6IGltcGxl
bWVudCBXZWJHTE9iamVjdEFycmF5CisvLyNpbmNsdWRlICJXZWJHTE9iamVjdEFycmF5LmgiCisj
aW5jbHVkZSAiV2ViR0xQcm9ncmFtLmgiCisjaW5jbHVkZSAiV2ViR0xSZW5kZXJidWZmZXIuaCIK
KyNpbmNsdWRlICJXZWJHTFRleHR1cmUuaCIKKyNpbmNsdWRlICJXZWJHTFVuc2lnbmVkQnl0ZUFy
cmF5LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gQSB0YWdnZWQgdW5pb24gcmVwcmVz
ZW50aW5nIHRoZSByZXN1bHQgb2YgZ2V0IHF1ZXJpZXMgbGlrZQorLy8gZ2V0UGFyYW1ldGVyIChl
bmNvbXBhc3NpbmcgZ2V0Qm9vbGVhbnYsIGdldEludGVnZXJ2LCBnZXRGbG9hdHYpIGFuZAorLy8g
c2ltaWxhciB2YXJpYW50cy4gRm9yIHJlZmVyZW5jZSBjb3VudGVkIHR5cGVzLCBpbmNyZW1lbnRz
IGFuZAorLy8gZGVjcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRoZSB0YXJnZXQgb2Jq
ZWN0LgorCitjbGFzcyBXZWJHTEdldEluZm8geworcHVibGljOgorICAgIGVudW0gVHlwZSB7Cisg
ICAgICAgIGtUeXBlQm9vbCwKKyAgICAgICAga1R5cGVGbG9hdCwKKyAgICAgICAga1R5cGVMb25n
LAorICAgICAgICBrVHlwZU51bGwsCisgICAgICAgIGtUeXBlU3RyaW5nLAorICAgICAgICBrVHlw
ZVVuc2lnbmVkTG9uZywKKyAgICAgICAga1R5cGVXZWJHTEJ1ZmZlciwKKyAgICAgICAga1R5cGVX
ZWJHTEZsb2F0QXJyYXksCisgICAgICAgIGtUeXBlV2ViR0xGcmFtZWJ1ZmZlciwKKyAgICAgICAg
a1R5cGVXZWJHTEludEFycmF5LAorICAgICAgICBrVHlwZVdlYkdMT2JqZWN0QXJyYXksCisgICAg
ICAgIGtUeXBlV2ViR0xQcm9ncmFtLAorICAgICAgICBrVHlwZVdlYkdMUmVuZGVyYnVmZmVyLAor
ICAgICAgICBrVHlwZVdlYkdMVGV4dHVyZSwKKyAgICAgICAga1R5cGVXZWJHTFVuc2lnbmVkQnl0
ZUFycmF5CisgICAgfTsKKworICAgIFdlYkdMR2V0SW5mbyhib29sIHZhbHVlKTsKKyAgICBXZWJH
TEdldEluZm8oZmxvYXQgdmFsdWUpOworICAgIFdlYkdMR2V0SW5mbyhsb25nIHZhbHVlKTsKKyAg
ICAvLyBSZXByZXNlbnRzIHRoZSBOVUxMIHZhbHVlIGFuZCB0eXBlCisgICAgV2ViR0xHZXRJbmZv
KCk7CisgICAgV2ViR0xHZXRJbmZvKGNvbnN0IFN0cmluZyYgdmFsdWUpOworICAgIFdlYkdMR2V0
SW5mbyh1bnNpZ25lZCBsb25nIHZhbHVlKTsKKyAgICBXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxX
ZWJHTEJ1ZmZlcj4gdmFsdWUpOworICAgIFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMRmxv
YXRBcnJheT4gdmFsdWUpOworICAgIFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMRnJhbWVi
dWZmZXI+IHZhbHVlKTsKKyAgICBXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTEludEFycmF5
PiB2YWx1ZSk7CisgICAgLy8gRklYTUU6IGltcGxlbWVudCBXZWJHTE9iamVjdEFycmF5CisgICAg
Ly8gV2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xPYmplY3RBcnJheT4gdmFsdWUpOworICAg
IFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMUHJvZ3JhbT4gdmFsdWUpOworICAgIFdlYkdM
R2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPiB2YWx1ZSk7CisgICAgV2ViR0xH
ZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xUZXh0dXJlPiB2YWx1ZSk7CisgICAgV2ViR0xHZXRJbmZv
KFBhc3NSZWZQdHI8V2ViR0xVbnNpZ25lZEJ5dGVBcnJheT4gdmFsdWUpOworCisgICAgdmlydHVh
bCB+V2ViR0xHZXRJbmZvKCk7CisKKyAgICBUeXBlIGdldFR5cGUoKSBjb25zdDsKKworICAgIGJv
b2wgZ2V0Qm9vbCgpIGNvbnN0OworICAgIGZsb2F0IGdldEZsb2F0KCkgY29uc3Q7CisgICAgbG9u
ZyBnZXRMb25nKCkgY29uc3Q7CisgICAgY29uc3QgU3RyaW5nJiBnZXRTdHJpbmcoKSBjb25zdDsK
KyAgICB1bnNpZ25lZCBsb25nIGdldFVuc2lnbmVkTG9uZygpIGNvbnN0OworICAgIFBhc3NSZWZQ
dHI8V2ViR0xCdWZmZXI+IGdldFdlYkdMQnVmZmVyKCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxX
ZWJHTEZsb2F0QXJyYXk+IGdldFdlYkdMRmxvYXRBcnJheSgpIGNvbnN0OworICAgIFBhc3NSZWZQ
dHI8V2ViR0xGcmFtZWJ1ZmZlcj4gZ2V0V2ViR0xGcmFtZWJ1ZmZlcigpIGNvbnN0OworICAgIFBh
c3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gZ2V0V2ViR0xJbnRBcnJheSgpIGNvbnN0OworICAgIC8v
IEZJWE1FOiBpbXBsZW1lbnQgV2ViR0xPYmplY3RBcnJheQorICAgIC8vIFBhc3NSZWZQdHI8V2Vi
R0xPYmplY3RBcnJheT4gZ2V0V2ViR0xPYmplY3RBcnJheSgpIGNvbnN0OworICAgIFBhc3NSZWZQ
dHI8V2ViR0xQcm9ncmFtPiBnZXRXZWJHTFByb2dyYW0oKSBjb25zdDsKKyAgICBQYXNzUmVmUHRy
PFdlYkdMUmVuZGVyYnVmZmVyPiBnZXRXZWJHTFJlbmRlcmJ1ZmZlcigpIGNvbnN0OworICAgIFBh
c3NSZWZQdHI8V2ViR0xUZXh0dXJlPiBnZXRXZWJHTFRleHR1cmUoKSBjb25zdDsKKyAgICBQYXNz
UmVmUHRyPFdlYkdMVW5zaWduZWRCeXRlQXJyYXk+IGdldFdlYkdMVW5zaWduZWRCeXRlQXJyYXko
KSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBUeXBlIG1fdHlwZTsKKyAgICBib29sIG1fYm9vbDsK
KyAgICBmbG9hdCBtX2Zsb2F0OworICAgIGxvbmcgbV9sb25nOworICAgIFN0cmluZyBtX3N0cmlu
ZzsKKyAgICB1bnNpZ25lZCBsb25nIG1fdW5zaWduZWRMb25nOworICAgIFJlZlB0cjxXZWJHTEJ1
ZmZlcj4gbV93ZWJnbEJ1ZmZlcjsKKyAgICBSZWZQdHI8V2ViR0xGbG9hdEFycmF5PiBtX3dlYmds
RmxvYXRBcnJheTsKKyAgICBSZWZQdHI8V2ViR0xGcmFtZWJ1ZmZlcj4gbV93ZWJnbEZyYW1lYnVm
ZmVyOworICAgIFJlZlB0cjxXZWJHTEludEFycmF5PiBtX3dlYmdsSW50QXJyYXk7CisgICAgLy8g
RklYTUU6IGltcGxlbWVudCBXZWJHTE9iamVjdEFycmF5CisgICAgLy8gUmVmUHRyPFdlYkdMT2Jq
ZWN0QXJyYXk+IG1fd2ViZ2xPYmplY3RBcnJheTsKKyAgICBSZWZQdHI8V2ViR0xQcm9ncmFtPiBt
X3dlYmdsUHJvZ3JhbTsKKyAgICBSZWZQdHI8V2ViR0xSZW5kZXJidWZmZXI+IG1fd2ViZ2xSZW5k
ZXJidWZmZXI7CisgICAgUmVmUHRyPFdlYkdMVGV4dHVyZT4gbV93ZWJnbFRleHR1cmU7CisgICAg
UmVmUHRyPFdlYkdMVW5zaWduZWRCeXRlQXJyYXk+IG1fd2ViZ2xVbnNpZ25lZEJ5dGVBcnJheTsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmICAvLyBXZWJHTEdldEluZm9f
aApJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5jcHAJKHJldmlz
aW9uIDUxMjc4KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDEyICszNywyMyBAQCBQYXNzUmVmUHRyPFdlYkdMUmVuZGVy
YnVmZmVyPiBXZWJHTFJlbmRlCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHTFJlbmRlcmJ1
ZmZlcihjdHgpKTsKIH0KIAorUGFzc1JlZlB0cjxXZWJHTFJlbmRlcmJ1ZmZlcj4gV2ViR0xSZW5k
ZXJidWZmZXI6OmNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGN0eCwgUGxhdGZvcm0zRE9i
amVjdCBvYmopCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHTFJlbmRlcmJ1ZmZlcihj
dHgsIG9iaikpOworfQorCiBXZWJHTFJlbmRlcmJ1ZmZlcjo6V2ViR0xSZW5kZXJidWZmZXIoV2Vi
R0xSZW5kZXJpbmdDb250ZXh0KiBjdHgpCiAgICAgOiBDYW52YXNPYmplY3QoY3R4KQogewogICAg
IHNldE9iamVjdChjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dDNEKCktPmNyZWF0ZVJlbmRlcmJ1
ZmZlcigpKTsKIH0KIAorV2ViR0xSZW5kZXJidWZmZXI6OldlYkdMUmVuZGVyYnVmZmVyKFdlYkdM
UmVuZGVyaW5nQ29udGV4dCogY3R4LCBQbGF0Zm9ybTNET2JqZWN0IG9iaikKKyAgICA6IENhbnZh
c09iamVjdChjdHgpCit7CisgICAgc2V0T2JqZWN0KG9iaiwgZmFsc2UpOworfQorCiB2b2lkIFdl
YkdMUmVuZGVyYnVmZmVyOjpfZGVsZXRlT2JqZWN0KFBsYXRmb3JtM0RPYmplY3Qgb2JqZWN0KQog
ewogICAgIGNvbnRleHQoKS0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+ZGVsZXRlUmVuZGVyYnVmZmVy
KG9iamVjdCk7CkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5oCShy
ZXZpc2lvbiA1MTI3OCkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMzksOCArMzksMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICAKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViR0xSZW5kZXJidWZmZXI+IGNy
ZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqKTsKICAgICAgICAgCisgICAgICAgIC8vIEZvciBx
dWVyeWluZyBwcmV2aW91c2x5IGNyZWF0ZWQgb2JqZWN0cyB2aWEgZS5nLiBnZXRGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnRQYXJhbWV0ZXIKKyAgICAgICAgLy8gRklYTUU6IHNob3VsZCBjb25zaWRlciBj
YW5vbmljYWxpemluZyB0aGVzZSBvYmplY3RzCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdl
YkdMUmVuZGVyYnVmZmVyPiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiwgUGxhdGZvcm0z
RE9iamVjdCByZW5kZXJidWZmZXIpOworCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBXZWJHTFJl
bmRlcmJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHQqKTsKKyAgICAgICAgV2ViR0xSZW5kZXJi
dWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiwgUGxhdGZvcm0zRE9iamVjdCk7CiAgICAgICAg
IAogICAgICAgICB2aXJ0dWFsIHZvaWQgX2RlbGV0ZU9iamVjdChQbGF0Zm9ybTNET2JqZWN0KTsK
ICAgICB9OwpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmNwcAkocmV2aXNpb24gNTEyNzgpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDExICszOSwzMSBAQAogI2lu
Y2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5o
IgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
ICNpbmNsdWRlICJSZW5kZXJCb3guaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENsZWFudXBIZWxwZXIgeworcHVibGljOgorICAgIENs
ZWFudXBIZWxwZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0LAorICAgICAgICAgICAg
ICAgICAgYm9vbCBjaGFuZ2VkKQorICAgICAgICA6IG1fY29udGV4dChjb250ZXh0KQorICAgICAg
ICAsIG1fY2hhbmdlZChjaGFuZ2VkKQorICAgIHsKKyAgICB9CisKKyAgICB+Q2xlYW51cEhlbHBl
cigpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPmNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbCht
X2NoYW5nZWQpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQq
IG1fY29udGV4dDsKKyAgICBib29sIG1fY2hhbmdlZDsKK307CisKIFBhc3NPd25QdHI8V2ViR0xS
ZW5kZXJpbmdDb250ZXh0PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZShIVE1MQ2FudmFz
RWxlbWVudCogY2FudmFzKQogewogICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4
dChHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKCkpOwpAQCAtNTgsNiArNzgsNyBAQCBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OldlYkdMUmVuZGVyaW5nQ29uCiAgICAgLCBtX2NvbnRleHQoY29udGV4
dCkKICAgICAsIG1fbmVlZHNVcGRhdGUodHJ1ZSkKICAgICAsIG1fbWFya2VkQ2FudmFzRGlydHko
ZmFsc2UpCisgICAgLCBtX2FjdGl2ZVRleHR1cmVVbml0KDApCiB7CiAgICAgQVNTRVJUKG1fY29u
dGV4dCk7CiAgICAgbV9jb250ZXh0LT5yZXNoYXBlKGNhbnZhcygpLT53aWR0aCgpLCBjYW52YXMo
KS0+aGVpZ2h0KCkpOwpAQCAtMTI1LDYgKzE0NiwxMSBAQCBpbnQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpzaXplSW5CeXRlcyhpCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjphY3RpdmVU
ZXh0dXJlKHVuc2lnbmVkIGxvbmcgdGV4dHVyZSkKIHsKKyAgICBpZiAodGV4dHVyZSA+IHNpemVv
ZihtX3RleHR1cmVVbml0cykgLyBzaXplb2YoVGV4dHVyZVVuaXRTdGF0ZSkpIHsKKyAgICAgICAg
Ly8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfRU5VTSBlcnJvcgorICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIG1fYWN0aXZlVGV4dHVyZVVuaXQgPSB0ZXh0dXJlOwogICAgIG1fY29udGV4dC0+
YWN0aXZlVGV4dHVyZSh0ZXh0dXJlKTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFs
c2UpOwogfQpAQCAtMTU1LDYgKzE4MSwxNSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
YmluZEJ1ZmZlcih1CiAgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CisgICAgaWYgKHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlf
QlVGRkVSKQorICAgICAgICBtX2FycmF5QnVmZmVyQmluZGluZyA9IGJ1ZmZlcjsKKyAgICBlbHNl
IGlmICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkVMRU1FTlRfQVJSQVlfQlVGRkVSKQor
ICAgICAgICBtX2VsZW1lbnRBcnJheUJ1ZmZlckJpbmRpbmcgPSBidWZmZXI7CisgICAgZWxzZSB7
CisgICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX0VOVU0gZXJyb3IKKyAgICAgICAg
ZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIG1fY29udGV4dC0+
YmluZEJ1ZmZlcih0YXJnZXQsIGJ1ZmZlcik7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxs
KGZhbHNlKTsKIH0KQEAgLTE2Niw2ICsyMDEsMTIgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmJpbmRGcmFtZWJ1ZgogICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOwogICAgICAg
ICByZXR1cm47CiAgICAgfQorICAgIGlmICh0YXJnZXQgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZS
QU1FQlVGRkVSKSB7CisgICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX0VOVU0gZXJy
b3IKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IG1fZnJhbWVidWZmZXJCaW5kaW5nID0gYnVmZmVyOwogICAgIG1fY29udGV4dC0+YmluZEZyYW1l
YnVmZmVyKHRhcmdldCwgYnVmZmVyKTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFs
c2UpOwogfQpAQCAtMTc2LDYgKzIxNywxMiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
YmluZFJlbmRlcmJ1CiAgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CisgICAgaWYgKHRhcmdldCAhPSBHcmFwaGljc0NvbnRleHQzRDo6UkVOREVS
QlVGRkVSKSB7CisgICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX0VOVU0gZXJyb3IK
KyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1f
cmVuZGVyYnVmZmVyQmluZGluZyA9IHJlbmRlckJ1ZmZlcjsKICAgICBtX2NvbnRleHQtPmJpbmRS
ZW5kZXJidWZmZXIodGFyZ2V0LCByZW5kZXJCdWZmZXIpOwogICAgIGNsZWFudXBBZnRlckdyYXBo
aWNzQ2FsbChmYWxzZSk7CiB9CkBAIC0xODcsNiArMjM0LDE1IEBAIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpiaW5kVGV4dHVyZSgKICAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBpZiAodGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJEKQorICAgICAgICBtX3RleHR1cmVVbml0c1ttX2FjdGl2ZVRleHR1cmVV
bml0XS5tX3RleHR1cmUyREJpbmRpbmcgPSB0ZXh0dXJlOworICAgIGVsc2UgaWYgKHRhcmdldCA9
PSBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9DVUJFX01BUCkKKyAgICAgICAgbV90ZXh0dXJl
VW5pdHNbbV9hY3RpdmVUZXh0dXJlVW5pdF0ubV90ZXh0dXJlQ3ViZU1hcEJpbmRpbmcgPSB0ZXh0
dXJlOworICAgIGVsc2UgeworICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9FTlVN
IGVycm9yCisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
ICAgICBtX2NvbnRleHQtPmJpbmRUZXh0dXJlKHRhcmdldCwgdGV4dHVyZSk7CiAgICAgY2xlYW51
cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KQEAgLTU0NCwzMiArNjAwLDI3IEBAIGludCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEF0dHJpYkxvY2EKICAgICByZXR1cm4gbV9jb250ZXh0
LT5nZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCBuYW1lKTsKIH0KIAotYm9vbCBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmdldEJvb2xlYW4odW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICBib29s
IHJlc3VsdCA9IG1fY29udGV4dC0+Z2V0Qm9vbGVhbihwbmFtZSk7Ci0gICAgY2xlYW51cEFmdGVy
R3JhcGhpY3NDYWxsKGZhbHNlKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1QYXNzUmVmUHRy
PFdlYkdMVW5zaWduZWRCeXRlQXJyYXk+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0Qm9vbGVh
bnYodW5zaWduZWQgbG9uZyBwbmFtZSkKK1dlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmdldEJ1ZmZlclBhcmFtZXRlcih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9u
ZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgUmVmUHRyPFdlYkdMVW5zaWduZWRC
eXRlQXJyYXk+IGFycmF5ID0gbV9jb250ZXh0LT5nZXRCb29sZWFudihwbmFtZSk7Ci0gICAgY2xl
YW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKLSAgICByZXR1cm4gYXJyYXk7Ci19CisgICAg
aWYgKHRhcmdldCAhPSBHcmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSICYmIHRhcmdldCAh
PSBHcmFwaGljc0NvbnRleHQzRDo6RUxFTUVOVF9BUlJBWV9CVUZGRVIpIHsKKyAgICAgICAgLy8g
RklYTUU6IHJhaXNlIEdMX0lOVkFMSURfRU5VTSBlcnJvcgorICAgICAgICBlYyA9IFNZTlRBWF9F
UlI7CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKKyAgICB9CiAKLWludCBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclBhcmFtZXRlcmkodW5zaWduZWQgbG9uZyB0YXJnZXQs
IHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgaW50IHJlc3VsdCA9IG1fY29udGV4dC0+Z2V0
QnVmZmVyUGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGlj
c0NhbGwoZmFsc2UpOwotICAgIHJldHVybiByZXN1bHQ7Ci19CisgICAgaWYgKHBuYW1lICE9IEdy
YXBoaWNzQ29udGV4dDNEOjpCVUZGRVJfU0laRSAmJiBwbmFtZSAhPSBHcmFwaGljc0NvbnRleHQz
RDo6QlVGRkVSX1VTQUdFKSB7CisgICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX0VO
VU0gZXJyb3IKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm4gV2ViR0xH
ZXRJbmZvKCk7CisgICAgfQogCi1QYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6Z2V0QnVmZmVyUGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVu
c2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgUmVmUHRyPFdlYkdMSW50QXJyYXk+IGFycmF5ID0g
bV9jb250ZXh0LT5nZXRCdWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lKTsKLSAgICBjbGVh
bnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwotICAgIHJldHVybiBhcnJheTsKKyAgICBDbGVh
bnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKKyAgICBpbnQgdmFsdWU7CisgICAgbV9jb250ZXh0LT5n
ZXRCdWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUpOworICAgIGlmIChwbmFt
ZSA9PSBHcmFwaGljc0NvbnRleHQzRDo6QlVGRkVSX1NJWkUpCisgICAgICAgIHJldHVybiBXZWJH
TEdldEluZm8oc3RhdGljX2Nhc3Q8bG9uZz4odmFsdWUpKTsKKyAgICBlbHNlCisgICAgICAgIHJl
dHVybiBXZWJHTEdldEluZm8oc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4odmFsdWUpKTsKIH0K
IAogdW5zaWduZWQgbG9uZyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEVycm9yKCkKQEAgLTU3
NywxMTYgKzYyOCwzMjcgQEAgdW5zaWduZWQgbG9uZyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omdl
dAogICAgIHJldHVybiBtX2NvbnRleHQtPmdldEVycm9yKCk7CiB9CiAKLWZsb2F0IFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6Z2V0RmxvYXQodW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICBmbG9h
dCByZXN1bHQgPSBtX2NvbnRleHQtPmdldEZsb2F0KHBuYW1lKTsKLSAgICBjbGVhbnVwQWZ0ZXJH
cmFwaGljc0NhbGwoZmFsc2UpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVBhc3NSZWZQdHI8
V2ViR0xGbG9hdEFycmF5PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEZsb2F0dih1bnNpZ25l
ZCBsb25nIHBuYW1lKQorV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJh
bWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25l
ZCBsb25nIGF0dGFjaG1lbnQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogewotICAgIFJlZlB0cjxXZWJHTEZsb2F0QXJyYXk+IGFycmF5ID0gbV9jb250ZXh0LT5nZXRG
bG9hdHYocG5hbWUpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci0gICAg
cmV0dXJuIGFycmF5OwotfQotCi1pbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1
ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBs
b25nIGF0dGFjaG1lbnQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgaW50IHJlc3VsdCA9
IG1fY29udGV4dC0+Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaSh0YXJnZXQsIGF0
dGFjaG1lbnQsIHBuYW1lKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdih1bnNp
Z25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCB1bnNpZ25lZCBsb25n
IHBuYW1lKQotewotICAgIFJlZlB0cjxXZWJHTEludEFycmF5PiBhcnJheSA9IG1fY29udGV4dC0+
Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYodGFyZ2V0LCBhdHRhY2htZW50LCBw
bmFtZSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKLSAgICByZXR1cm4g
YXJyYXk7Ci19CisgICAgaWYgKHRhcmdldCAhPSBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZG
RVIKKyAgICAgICAgfHwgKGF0dGFjaG1lbnQgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FU
VEFDSE1FTlQwCisgICAgICAgICAgICAmJiBhdHRhY2htZW50ICE9IEdyYXBoaWNzQ29udGV4dDNE
OjpERVBUSF9BVFRBQ0hNRU5UCisgICAgICAgICAgICAmJiBhdHRhY2htZW50ICE9IEdyYXBoaWNz
Q29udGV4dDNEOjpTVEVOQ0lMX0FUVEFDSE1FTlQpCisgICAgICAgIHx8IChwbmFtZSAhPSBHcmFw
aGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRQorICAgICAg
ICAgICAgJiYgcG5hbWUgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0FUVEFDSE1F
TlRfT0JKRUNUX05BTUUKKyAgICAgICAgICAgICYmIHBuYW1lICE9IEdyYXBoaWNzQ29udGV4dDNE
OjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEVWRUwKKyAgICAgICAgICAgICYmIHBu
YW1lICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVf
Q1VCRV9NQVBfRkFDRSkpIHsKKyAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfRU5V
TSBlcnJvcgorICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybiBXZWJHTEdl
dEluZm8oKTsKKyAgICB9CiAKLWludCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEludGVnZXIo
dW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICBmbG9hdCByZXN1bHQgPSBtX2NvbnRleHQtPmdl
dEludGVnZXIocG5hbWUpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICBpZiAocG5hbWUgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZS
QU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUUpIHsKKyAgICAgICAgQ2xlYW51cEhlbHBl
cih0aGlzLCBmYWxzZSk7CisgICAgICAgIGludCB2YWx1ZTsKKyAgICAgICAgbV9jb250ZXh0LT5n
ZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdih0YXJnZXQsIGF0dGFjaG1lbnQsIHBu
YW1lLCAmdmFsdWUpOworICAgICAgICBpZiAocG5hbWUgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZS
QU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEUpCisgICAgICAgICAgICByZXR1cm4gV2Vi
R0xHZXRJbmZvKHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KHZhbHVlKSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oc3RhdGljX2Nhc3Q8bG9uZz4odmFs
dWUpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBDbGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsK
KyAgICAgICAgaW50IHR5cGUgPSAwOworICAgICAgICBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcml2KHRhcmdldCwgYXR0YWNobWVudCwgR3JhcGhpY3NDb250ZXh0
M0Q6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEUsICZ0eXBlKTsKKyAgICAgICAg
aW50IHZhbHVlID0gMDsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXJpdih0YXJnZXQsIGF0dGFjaG1lbnQsIEdyYXBoaWNzQ29udGV4dDNEOjpGUkFN
RUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FLCAmdmFsdWUpOworICAgICAgICAvLyBGSVhN
RTogc2hvdWxkIGNvbnNpZGVyIGNhbm9uaWNhbGl6aW5nIHRoZXNlIG9iamVjdHMKKyAgICAgICAg
c3dpdGNoICh0eXBlKSB7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJV
RkZFUjogeworICAgICAgICAgICAgUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPiB0bXAgPSBXZWJH
TFJlbmRlcmJ1ZmZlcjo6Y3JlYXRlKHRoaXMsIHZhbHVlKTsKKyAgICAgICAgICAgIGFkZE9iamVj
dCh0bXAuZ2V0KCkpOworICAgICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRy
PFdlYkdMUmVuZGVyYnVmZmVyPih0bXApKTsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFOiB7CisgICAgICAgICAgICBSZWZQdHI8V2ViR0xUZXh0dXJl
PiB0bXAgPSBXZWJHTFRleHR1cmU6OmNyZWF0ZSh0aGlzLCB2YWx1ZSk7CisgICAgICAgICAgICBh
ZGRPYmplY3QodG1wLmdldCgpKTsKKyAgICAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oUGFz
c1JlZlB0cjxXZWJHTFRleHR1cmU+KHRtcCkpOworICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAvLyBGSVhNRTogcmFpc2UgZXhjZXB0aW9uPworICAgICAgICAgICAgcmV0
dXJuIFdlYkdMR2V0SW5mbygpOworICAgICAgICB9CisgICAgfQogfQogCi1QYXNzUmVmUHRyPFdl
YkdMSW50QXJyYXk+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0SW50ZWdlcnYodW5zaWduZWQg
bG9uZyBwbmFtZSkKK1dlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFBhcmFt
ZXRlcih1bnNpZ25lZCBsb25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBSZWZQ
dHI8V2ViR0xJbnRBcnJheT4gYXJyYXkgPSBtX2NvbnRleHQtPmdldEludGVnZXJ2KHBuYW1lKTsK
LSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwotICAgIHJldHVybiBhcnJheTsK
KyAgICBDbGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKKyAgICBzd2l0Y2ggKHBuYW1lKSB7Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6QUNUSVZFX1RFWFRVUkU6CisgICAgICAgIHJldHVy
biBnZXRVbnNpZ25lZExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0M0Q6OkFMSUFTRURfTElORV9XSURUSF9SQU5HRToKKyAgICAgICAgcmV0dXJuIGdldFdlYkdM
RmxvYXRBcnJheVBhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
QUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFOgorICAgICAgICByZXR1cm4gZ2V0V2ViR0xGbG9hdEFy
cmF5UGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpBTFBIQV9C
SVRTOgorICAgICAgICByZXR1cm4gZ2V0TG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSX0JJTkRJTkc6CisgICAgICAgIHJldHVybiBX
ZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTEJ1ZmZlcj4obV9hcnJheUJ1ZmZlckJpbmRpbmcp
KTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpCTEVORDoKKyAgICAgICAgcmV0dXJuIGdl
dEJvb2xlYW5QYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkJM
RU5EX0NPTE9SOgorICAgICAgICByZXR1cm4gZ2V0V2ViR0xGbG9hdEFycmF5UGFyYW1ldGVyKHBu
YW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpCTEVORF9EU1RfQUxQSEE6CisgICAg
ICAgIHJldHVybiBnZXRVbnNpZ25lZExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0M0Q6OkJMRU5EX0RTVF9SR0I6CisgICAgICAgIHJldHVybiBnZXRVbnNpZ25l
ZExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkJMRU5E
X0VRVUFUSU9OX0FMUEhBOgorICAgICAgICByZXR1cm4gZ2V0VW5zaWduZWRMb25nUGFyYW1ldGVy
KHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpCTEVORF9FUVVBVElPTl9SR0I6
CisgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0M0Q6OkJMRU5EX1NSQ19BTFBIQToKKyAgICAgICAgcmV0dXJuIGdl
dFVuc2lnbmVkTG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6QkxFTkRfU1JDX1JHQjoKKyAgICAgICAgcmV0dXJuIGdldFVuc2lnbmVkTG9uZ1BhcmFtZXRl
cihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6QkxVRV9CSVRTOgorICAgICAg
ICByZXR1cm4gZ2V0TG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6Q09MT1JfQ0xFQVJfVkFMVUU6CisgICAgICAgIHJldHVybiBnZXRXZWJHTEZsb2F0QXJy
YXlQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX1dS
SVRFTUFTSzoKKyAgICAgICAgcmV0dXJuIGdldFdlYkdMVW5zaWduZWRCeXRlQXJyYXlQYXJhbWV0
ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTVBSRVNTRURfVEVYVFVS
RV9GT1JNQVRTOgorICAgICAgICAvLyBEZWZpbmVkIGFzIG51bGwgaW4gdGhlIHNwZWMKKyAgICAg
ICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNV
TExfRkFDRToKKyAgICAgICAgcmV0dXJuIGdldEJvb2xlYW5QYXJhbWV0ZXIocG5hbWUpOworICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNVTExfRkFDRV9NT0RFOgorICAgICAgICByZXR1cm4g
Z2V0VW5zaWduZWRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dDNEOjpDVVJSRU5UX1BST0dSQU06CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oUGFzc1Jl
ZlB0cjxXZWJHTFByb2dyYW0+KG1fY3VycmVudFByb2dyYW0pKTsKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dDNEOjpERVBUSF9CSVRTOgorICAgICAgICByZXR1cm4gZ2V0TG9uZ1BhcmFtZXRlcihw
bmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQ0xFQVJfVkFMVUU6Cisg
ICAgICAgIHJldHVybiBnZXRGbG9hdFBhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHQzRDo6REVQVEhfRlVOQzoKKyAgICAgICAgcmV0dXJuIGdldFVuc2lnbmVkTG9uZ1Bh
cmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfUkFOR0U6
CisgICAgICAgIHJldHVybiBnZXRXZWJHTEZsb2F0QXJyYXlQYXJhbWV0ZXIocG5hbWUpOworICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX1RFU1Q6CisgICAgICAgIHJldHVybiBnZXRC
b29sZWFuUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERVBU
SF9XUklURU1BU0s6CisgICAgICAgIHJldHVybiBnZXRCb29sZWFuUGFyYW1ldGVyKHBuYW1lKTsK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpESVRIRVI6CisgICAgICAgIHJldHVybiBnZXRC
b29sZWFuUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpFTEVN
RU5UX0FSUkFZX0JVRkZFUl9CSU5ESU5HOgorICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKFBh
c3NSZWZQdHI8V2ViR0xCdWZmZXI+KG1fZWxlbWVudEFycmF5QnVmZmVyQmluZGluZykpOworICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0JJTkRJTkc6CisgICAgICAgIHJl
dHVybiBXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTEZyYW1lYnVmZmVyPihtX2ZyYW1lYnVm
ZmVyQmluZGluZykpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkZST05UX0ZBQ0U6Cisg
ICAgICAgIHJldHVybiBnZXRVbnNpZ25lZExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0M0Q6OkdFTkVSQVRFX01JUE1BUF9ISU5UOgorICAgICAgICByZXR1cm4g
Z2V0VW5zaWduZWRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dDNEOjpHUkVFTl9CSVRTOgorICAgICAgICByZXR1cm4gZ2V0TG9uZ1BhcmFtZXRlcihwbmFtZSk7
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6TElORV9XSURUSDoKKyAgICAgICAgcmV0dXJu
IGdldEZsb2F0UGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpN
QVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUUzoKKyAgICAgICAgcmV0dXJuIGdldExvbmdQ
YXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9DVUJFX01B
UF9URVhUVVJFX1NJWkU6CisgICAgICAgIHJldHVybiBnZXRMb25nUGFyYW1ldGVyKHBuYW1lKTsK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpNQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JT
OgorICAgICAgICByZXR1cm4gZ2V0TG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6TUFYX1JFTkRFUkJVRkZFUl9TSVpFOgorICAgICAgICByZXR1cm4gZ2V0
TG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6TUFYX1RF
WFRVUkVfSU1BR0VfVU5JVFM6CisgICAgICAgIHJldHVybiBnZXRMb25nUGFyYW1ldGVyKHBuYW1l
KTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpNQVhfVEVYVFVSRV9TSVpFOgorICAgICAg
ICByZXR1cm4gZ2V0TG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6TUFYX1ZBUllJTkdfVkVDVE9SUzoKKyAgICAgICAgcmV0dXJuIGdldExvbmdQYXJhbWV0
ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9WRVJURVhfQVRUUklC
UzoKKyAgICAgICAgcmV0dXJuIGdldExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0M0Q6Ok1BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUUzoKKyAgICAgICAg
cmV0dXJuIGdldExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
M0Q6Ok1BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTOgorICAgICAgICByZXR1cm4gZ2V0TG9uZ1Bh
cmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6TUFYX1ZJRVdQT1JU
X0RJTVM6CisgICAgICAgIHJldHVybiBnZXRXZWJHTEludEFycmF5UGFyYW1ldGVyKHBuYW1lKTsK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpOVU1fQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1B
VFM6CisgICAgICAgIHJldHVybiBnZXRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dDNEOjpOVU1fU0hBREVSX0JJTkFSWV9GT1JNQVRTOgorICAgICAgICAvLyBG
SVhNRTogc2hvdWxkIHdlIGFsd2F5cyByZXR1cm4gMCBmb3IgdGhpcz8KKyAgICAgICAgcmV0dXJu
IGdldExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlBB
Q0tfQUxJR05NRU5UOgorICAgICAgICByZXR1cm4gZ2V0TG9uZ1BhcmFtZXRlcihwbmFtZSk7Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UE9MWUdPTl9PRkZTRVRfRkFDVE9SOgorICAgICAg
ICByZXR1cm4gZ2V0RmxvYXRQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0M0Q6OlBPTFlHT05fT0ZGU0VUX0ZJTEw6CisgICAgICAgIHJldHVybiBnZXRCb29sZWFuUGFy
YW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpQT0xZR09OX09GRlNF
VF9VTklUUzoKKyAgICAgICAgcmV0dXJuIGdldEZsb2F0UGFyYW1ldGVyKHBuYW1lKTsKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSRURfQklUUzoKKyAgICAgICAgcmV0dXJuIGdldExvbmdQ
YXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZF
Ul9CSU5ESU5HOgorICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xS
ZW5kZXJidWZmZXI+KG1fcmVuZGVyYnVmZmVyQmluZGluZykpOworICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0M0Q6OlNBTVBMRV9CVUZGRVJTOgorICAgICAgICByZXR1cm4gZ2V0TG9uZ1BhcmFtZXRl
cihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U0FNUExFX0NPVkVSQUdFX0lO
VkVSVDoKKyAgICAgICAgcmV0dXJuIGdldEJvb2xlYW5QYXJhbWV0ZXIocG5hbWUpOworICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNBTVBMRV9DT1ZFUkFHRV9WQUxVRToKKyAgICAgICAgcmV0
dXJuIGdldEZsb2F0UGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNE
OjpTQU1QTEVTOgorICAgICAgICByZXR1cm4gZ2V0TG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U0NJU1NPUl9CT1g6CisgICAgICAgIHJldHVybiBnZXRX
ZWJHTEludEFycmF5UGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNE
OjpTQ0lTU09SX1RFU1Q6CisgICAgICAgIHJldHVybiBnZXRCb29sZWFuUGFyYW1ldGVyKHBuYW1l
KTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0JBQ0tfRkFJTDoKKyAgICAg
ICAgcmV0dXJuIGdldFVuc2lnbmVkTG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6U1RFTkNJTF9CQUNLX0ZVTkM6CisgICAgICAgIHJldHVybiBnZXRVbnNp
Z25lZExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNU
RU5DSUxfQkFDS19QQVNTX0RFUFRIX0ZBSUw6CisgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZExv
bmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxf
QkFDS19QQVNTX0RFUFRIX1BBU1M6CisgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZExvbmdQYXJh
bWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfQkFDS19S
RUY6CisgICAgICAgIHJldHVybiBnZXRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0JBQ0tfVkFMVUVfTUFTSzoKKyAgICAgICAgcmV0dXJu
IGdldFVuc2lnbmVkTG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6U1RFTkNJTF9CQUNLX1dSSVRFTUFTSzoKKyAgICAgICAgcmV0dXJuIGdldFVuc2lnbmVk
TG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJ
TF9CSVRTOgorICAgICAgICByZXR1cm4gZ2V0TG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9DTEVBUl9WQUxVRToKKyAgICAgICAgcmV0dXJu
IGdldExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNU
RU5DSUxfRkFJTDoKKyAgICAgICAgcmV0dXJuIGdldFVuc2lnbmVkTG9uZ1BhcmFtZXRlcihwbmFt
ZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9GVU5DOgorICAgICAgICBy
ZXR1cm4gZ2V0VW5zaWduZWRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dDNEOjpTVEVOQ0lMX1BBU1NfREVQVEhfRkFJTDoKKyAgICAgICAgcmV0dXJuIGdldFVu
c2lnbmVkTG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
U1RFTkNJTF9QQVNTX0RFUFRIX1BBU1M6CisgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZExvbmdQ
YXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfUkVG
OgorICAgICAgICByZXR1cm4gZ2V0TG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6U1RFTkNJTF9URVNUOgorICAgICAgICByZXR1cm4gZ2V0Qm9vbGVhblBh
cmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9WQUxV
RV9NQVNLOgorICAgICAgICByZXR1cm4gZ2V0VW5zaWduZWRMb25nUGFyYW1ldGVyKHBuYW1lKTsK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX1dSSVRFTUFTSzoKKyAgICAgICAg
cmV0dXJuIGdldFVuc2lnbmVkTG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHQzRDo6U1VCUElYRUxfQklUUzoKKyAgICAgICAgcmV0dXJuIGdldExvbmdQYXJhbWV0
ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfQklORElOR18y
RDoKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMVGV4dHVyZT4o
bV90ZXh0dXJlVW5pdHNbbV9hY3RpdmVUZXh0dXJlVW5pdF0ubV90ZXh0dXJlMkRCaW5kaW5nKSk7
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQOgor
ICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xUZXh0dXJlPihtX3Rl
eHR1cmVVbml0c1ttX2FjdGl2ZVRleHR1cmVVbml0XS5tX3RleHR1cmVDdWJlTWFwQmluZGluZykp
OworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlVOUEFDS19BTElHTk1FTlQ6CisgICAgICAg
IC8vIEZJWE1FOiBzaG91bGQgdGhpcyBiZSAibG9uZyIgaW4gdGhlIHNwZWM/CisgICAgICAgIHJl
dHVybiBnZXRJbnRQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6
OlZJRVdQT1JUOgorICAgICAgICByZXR1cm4gZ2V0V2ViR0xJbnRBcnJheVBhcmFtZXRlcihwbmFt
ZSk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfRU5V
TSBlcnJvcgorICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybiBXZWJHTEdl
dEluZm8oKTsKKyAgICB9CiB9CiAKLWludCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFByb2dy
YW1pKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgdW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9u
Q29kZSYgZWMpCitXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQcm9ncmFt
UGFyYW1ldGVyKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgdW5zaWduZWQgbG9uZyBwbmFtZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFwcm9ncmFtIHx8IHByb2dyYW0tPmNvbnRleHQo
KSAhPSB0aGlzKSB7CisgICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX1ZBTFVFIGVy
cm9yCiAgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7Ci0gICAgICAgIHJldHVybiAwOwor
ICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CiAgICAgfQogCi0gICAgaW50IHJlc3VsdCA9
IG1fY29udGV4dC0+Z2V0UHJvZ3JhbWkocHJvZ3JhbSwgcG5hbWUpOwotICAgIGNsZWFudXBBZnRl
ckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotUGFzc1JlZlB0
cjxXZWJHTEludEFycmF5PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFByb2dyYW1pdihXZWJH
TFByb2dyYW0qIHByb2dyYW0sIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVj
KQotewotICAgIGlmICghcHJvZ3JhbSB8fCBwcm9ncmFtLT5jb250ZXh0KCkgIT0gdGhpcykgewot
ICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOwotICAgICAgICByZXR1cm4gMDsKKyAgICBD
bGVhbnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKKyAgICBpbnQgdmFsdWUgPSAwOworICAgIHN3aXRj
aCAocG5hbWUpIHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERUxFVEVfU1RBVFVTOgor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTktfU1RBVFVTOgorICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0M0Q6OlZBTElEQVRFX1NUQVRVUzoKKyAgICAgICAgbV9jb250ZXh0LT5nZXRQcm9n
cmFtaXYocHJvZ3JhbSwgcG5hbWUsICZ2YWx1ZSk7CisgICAgICAgIHJldHVybiBXZWJHTEdldElu
Zm8oc3RhdGljX2Nhc3Q8Ym9vbD4odmFsdWUpKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNE
OjpJTkZPX0xPR19MRU5HVEg6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6QVRUQUNIRURf
U0hBREVSUzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpBQ1RJVkVfQVRUUklCVVRFUzoK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpBQ1RJVkVfQVRUUklCVVRFX01BWF9MRU5HVEg6
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6QUNUSVZFX1VOSUZPUk1TOgorICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0M0Q6OkFDVElWRV9VTklGT1JNX01BWF9MRU5HVEg6CisgICAgICAgIG1f
Y29udGV4dC0+Z2V0UHJvZ3JhbWl2KHByb2dyYW0sIHBuYW1lLCAmdmFsdWUpOworICAgICAgICBy
ZXR1cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0PGxvbmc+KHZhbHVlKSk7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfRU5VTSBlcnJvcgorICAgICAg
ICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKICAgICB9
Ci0gICAgUmVmUHRyPFdlYkdMSW50QXJyYXk+IGFycmF5ID0gbV9jb250ZXh0LT5nZXRQcm9ncmFt
aXYocHJvZ3JhbSwgcG5hbWUpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7
Ci0gICAgcmV0dXJuIGFycmF5OwogfQogCiBTdHJpbmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRQcm9ncmFtSW5mb0xvZyhXZWJHTFByb2dyYW0qIHByb2dyYW0sIEV4Y2VwdGlvbkNvZGUmIGVj
KQogewogICAgIGlmICghcHJvZ3JhbSB8fCBwcm9ncmFtLT5jb250ZXh0KCkgIT0gdGhpcykgewor
ICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9WQUxVRSBlcnJvcgogICAgICAgICBl
YyA9IFRZUEVfTUlTTUFUQ0hfRVJSOwogICAgICAgICByZXR1cm4gIiI7CiAgICAgfQotICAgIFN0
cmluZyBzID0gbV9jb250ZXh0LT5nZXRQcm9ncmFtSW5mb0xvZyhwcm9ncmFtKTsKLSAgICBjbGVh
bnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwotICAgIHJldHVybiBzOworICAgIENsZWFudXBI
ZWxwZXIodGhpcywgZmFsc2UpOworICAgIHJldHVybiBtX2NvbnRleHQtPmdldFByb2dyYW1JbmZv
TG9nKHByb2dyYW0pOwogfQogCi1pbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRSZW5kZXJi
dWZmZXJQYXJhbWV0ZXJpKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1l
KQorV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UmVuZGVyYnVmZmVyUGFy
YW1ldGVyKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKLSAgICBpbnQgcmVzdWx0ID0gbV9jb250ZXh0LT5nZXRSZW5kZXJidWZm
ZXJQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2Fs
bChmYWxzZSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotUGFzc1JlZlB0cjxXZWJHTEludEFy
cmF5PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KHVu
c2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKQotewotICAgIFJlZlB0cjxX
ZWJHTEludEFycmF5PiBhcnJheSA9IG1fY29udGV4dC0+Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVy
aXYodGFyZ2V0LCBwbmFtZSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsK
LSAgICByZXR1cm4gYXJyYXk7Ci19CisgICAgaWYgKHRhcmdldCAhPSBHcmFwaGljc0NvbnRleHQz
RDo6UkVOREVSQlVGRkVSKSB7CisgICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX0VO
VU0gZXJyb3IKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm4gV2ViR0xH
ZXRJbmZvKCk7CisgICAgfQogCi1pbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTaGFkZXJp
KFdlYkdMU2hhZGVyKiBzaGFkZXIsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUm
IGVjKQotewotICAgIGlmICghc2hhZGVyIHx8IHNoYWRlci0+Y29udGV4dCgpICE9IHRoaXMpIHsK
LSAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7CisgICAg
Q2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CisgICAgaW50IHZhbHVlID0gMDsKKyAgICBzd2l0
Y2ggKHBuYW1lKSB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSX1dJ
RFRIOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUl9IRUlHSFQ6Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSX1JFRF9TSVpFOgorICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUl9HUkVFTl9TSVpFOgorICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUl9CTFVFX1NJWkU6CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSX0FMUEhBX1NJWkU6CisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHQzRDo6UkVOREVSQlVGRkVSX0RFUFRIX1NJWkU6CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHQzRDo6UkVOREVSQlVGRkVSX1NURU5DSUxfU0laRToKKyAgICAgICAgbV9jb250ZXh0LT5n
ZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUpOworICAgICAg
ICByZXR1cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0PGxvbmc+KHZhbHVlKSk7CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVDoKKyAgICAg
ICAgbV9jb250ZXh0LT5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAm
dmFsdWUpOworICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0PHVuc2lnbmVk
IGxvbmc+KHZhbHVlKSk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdM
X0lOVkFMSURfRU5VTSBlcnJvcgorICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJl
dHVybiBXZWJHTEdldEluZm8oKTsKICAgICB9Ci0gICAgaW50IHJlc3VsdCA9IG1fY29udGV4dC0+
Z2V0U2hhZGVyaShzaGFkZXIsIHBuYW1lKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwo
ZmFsc2UpOwotICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVBhc3NSZWZQdHI8V2ViR0xJbnRBcnJh
eT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTaGFkZXJpdihXZWJHTFNoYWRlciogc2hhZGVy
LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKK1dlYkdMR2V0SW5mbyBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFNoYWRlclBhcmFtZXRlcihXZWJHTFNoYWRlciogc2hh
ZGVyLCB1bnNpZ25lZCBsb25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAo
IXNoYWRlciB8fCBzaGFkZXItPmNvbnRleHQoKSAhPSB0aGlzKSB7CisgICAgICAgIC8vIEZJWE1F
OiByYWlzZSBHTF9JTlZBTElEX1ZBTFVFIGVycm9yCiAgICAgICAgIGVjID0gVFlQRV9NSVNNQVRD
SF9FUlI7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7
CisgICAgfQorICAgIENsZWFudXBIZWxwZXIodGhpcywgZmFsc2UpOworICAgIGludCB2YWx1ZSA9
IDA7CisgICAgc3dpdGNoIChwbmFtZSkgeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRF
TEVURV9TVEFUVVM6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Q09NUElMRV9TVEFUVVM6
CisgICAgICAgIG1fY29udGV4dC0+Z2V0U2hhZGVyaXYoc2hhZGVyLCBwbmFtZSwgJnZhbHVlKTsK
KyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNfY2FzdDxib29sPih2YWx1ZSkpOwor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNIQURFUl9UWVBFOgorICAgICAgICBtX2NvbnRl
eHQtPmdldFNoYWRlcml2KHNoYWRlciwgcG5hbWUsICZ2YWx1ZSk7CisgICAgICAgIHJldHVybiBX
ZWJHTEdldEluZm8oc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4odmFsdWUpKTsKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dDNEOjpJTkZPX0xPR19MRU5HVEg6CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHQzRDo6U0hBREVSX1NPVVJDRV9MRU5HVEg6CisgICAgICAgIG1fY29udGV4dC0+Z2V0U2hh
ZGVyaXYoc2hhZGVyLCBwbmFtZSwgJnZhbHVlKTsKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5m
byhzdGF0aWNfY2FzdDxsb25nPih2YWx1ZSkpOworICAgIGRlZmF1bHQ6CisgICAgICAgIC8vIEZJ
WE1FOiByYWlzZSBHTF9JTlZBTElEX0VOVU0gZXJyb3IKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJS
OworICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CiAgICAgfQotICAgIFJlZlB0cjxXZWJH
TEludEFycmF5PiBhcnJheSA9IG1fY29udGV4dC0+Z2V0U2hhZGVyaXYoc2hhZGVyLCBwbmFtZSk7
Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKLSAgICByZXR1cm4gYXJyYXk7
CiB9CiAKIFN0cmluZyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFNoYWRlckluZm9Mb2coV2Vi
R0xTaGFkZXIqIHNoYWRlciwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC02OTUsOSArOTU3LDggQEAg
U3RyaW5nIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2hhZGVySQogICAgICAgICBlYyA9IFRZ
UEVfTUlTTUFUQ0hfRVJSOwogICAgICAgICByZXR1cm4gIiI7CiAgICAgfQotICAgIFN0cmluZyBz
ID0gbV9jb250ZXh0LT5nZXRTaGFkZXJJbmZvTG9nKHNoYWRlcik7Ci0gICAgY2xlYW51cEFmdGVy
R3JhcGhpY3NDYWxsKGZhbHNlKTsKLSAgICByZXR1cm4gczsKKyAgICBDbGVhbnVwSGVscGVyKHRo
aXMsIGZhbHNlKTsKKyAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRTaGFkZXJJbmZvTG9nKHNoYWRl
cik7CiB9CiAKIFN0cmluZyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFNoYWRlclNvdXJjZShX
ZWJHTFNoYWRlciogc2hhZGVyLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTcwNiw4NiArOTY3LDE2
NiBAQCBTdHJpbmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTaGFkZXJTCiAgICAgICAgIGVj
ID0gVFlQRV9NSVNNQVRDSF9FUlI7CiAgICAgICAgIHJldHVybiAiIjsKICAgICB9Ci0gICAgU3Ry
aW5nIHMgPSBtX2NvbnRleHQtPmdldFNoYWRlclNvdXJjZShzaGFkZXIpOwotICAgIGNsZWFudXBB
ZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci0gICAgcmV0dXJuIHM7CisgICAgQ2xlYW51cEhlbHBl
cih0aGlzLCBmYWxzZSk7CisgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0U2hhZGVyU291cmNlKHNo
YWRlcik7CiB9CiAKIFN0cmluZyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN0cmluZyh1bnNp
Z25lZCBsb25nIG5hbWUpCiB7CisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CiAgICAg
cmV0dXJuIG1fY29udGV4dC0+Z2V0U3RyaW5nKG5hbWUpOwogfQogCi1mbG9hdCBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmdldFRleFBhcmFtZXRlcmYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2ln
bmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgZmxvYXQgcmVzdWx0ID0gbV9jb250ZXh0LT5nZXRUZXhQ
YXJhbWV0ZXJmKHRhcmdldCwgcG5hbWUpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChm
YWxzZSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotUGFzc1JlZlB0cjxXZWJHTEZsb2F0QXJy
YXk+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VGV4UGFyYW1ldGVyZnYodW5zaWduZWQgbG9u
ZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCitXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpnZXRUZXhQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVk
IGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIFJlZlB0cjxXZWJHTEZsb2F0
QXJyYXk+IGFycmF5ID0gbV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJmdih0YXJnZXQsIHBuYW1l
KTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwotICAgIHJldHVybiBhcnJh
eTsKLX0KLQotaW50IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VGV4UGFyYW1ldGVyaSh1bnNp
Z25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICBpbnQgcmVzdWx0
ID0gbV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpOwotICAgIGNsZWFu
dXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotUGFz
c1JlZlB0cjxXZWJHTEludEFycmF5PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFRleFBhcmFt
ZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKQotewotICAg
IFJlZlB0cjxXZWJHTEludEFycmF5PiBhcnJheSA9IG1fY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVy
aXYodGFyZ2V0LCBwbmFtZSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsK
LSAgICByZXR1cm4gYXJyYXk7Ci19Ci0KLWZsb2F0IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0
VW5pZm9ybWYoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uLCBFeGNlcHRpb25D
b2RlJiBlYykKLXsKLSAgICBpZiAoIXByb2dyYW0gfHwgcHJvZ3JhbS0+Y29udGV4dCgpICE9IHRo
aXMpIHsKLSAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgaWYgKHRhcmdldCAhPSBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRAorICAgICAg
ICAmJiB0YXJnZXQgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfQ1VCRV9NQVApIHsKKyAg
ICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfRU5VTSBlcnJvcgorICAgICAgICBlYyA9
IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKICAgICB9Ci0gICAg
ZmxvYXQgcmVzdWx0ID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtZihwcm9ncmFtLCBsb2NhdGlvbik7
Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotCi1QYXNzUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpnZXRVbmlmb3JtZnYoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uLCBFeGNl
cHRpb25Db2RlJiBlYykKLXsKLSAgICBpZiAoIXByb2dyYW0gfHwgcHJvZ3JhbS0+Y29udGV4dCgp
ICE9IHRoaXMpIHsKLSAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKLSAgICAgICAgcmV0
dXJuIDA7CisgICAgQ2xlYW51cEhlbHBlcih0aGlzLCBmYWxzZSk7CisgICAgaW50IHZhbHVlID0g
MDsKKyAgICBzd2l0Y2ggKHBuYW1lKSB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV9NQUdfRklMVEVSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlO
X0ZJTFRFUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX1dSQVBfUzoKKyAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX1dSQVBfVDoKKyAgICAgICAgbV9jb250
ZXh0LT5nZXRUZXhQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUpOworICAgICAgICBy
ZXR1cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KHZhbHVlKSk7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfRU5VTSBlcnJv
cgorICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8o
KTsKICAgICB9Ci0gICAgUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gYXJyYXkgPSBtX2NvbnRleHQt
PmdldFVuaWZvcm1mdihwcm9ncmFtLCBsb2NhdGlvbik7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhp
Y3NDYWxsKGZhbHNlKTsKLSAgICByZXR1cm4gYXJyYXk7CiB9CiAKLWxvbmcgV2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpnZXRVbmlmb3JtaShXZWJHTFByb2dyYW0qIHByb2dyYW0sIGxvbmcgbG9jYXRp
b24sIEV4Y2VwdGlvbkNvZGUmIGVjKQorV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Z2V0VW5pZm9ybShXZWJHTFByb2dyYW0qIHByb2dyYW0sIGxvbmcgbG9jYXRpb24sIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewogICAgIGlmICghcHJvZ3JhbSB8fCBwcm9ncmFtLT5jb250ZXh0KCkg
IT0gdGhpcykgeworICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9WQUxVRSBlcnJv
cgogICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOwotICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOwogICAgIH0KLSAgICBsb25nIHJlc3VsdCA9IG1f
Y29udGV4dC0+Z2V0VW5pZm9ybWkocHJvZ3JhbSwgbG9jYXRpb24pOwotICAgIGNsZWFudXBBZnRl
ckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotUGFzc1JlZlB0
cjxXZWJHTEludEFycmF5PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFVuaWZvcm1pdihXZWJH
TFByb2dyYW0qIHByb2dyYW0sIGxvbmcgbG9jYXRpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQotewot
ICAgIGlmICghcHJvZ3JhbSB8fCBwcm9ncmFtLT5jb250ZXh0KCkgIT0gdGhpcykgewotICAgICAg
ICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOwotICAgICAgICByZXR1cm4gMDsKKyAgICBDbGVhbnVw
SGVscGVyKHRoaXMsIGZhbHNlKTsKKyAgICAvLyBGSVhNRTogbWFrZSB0aGlzIG1vcmUgZWZmaWNp
ZW50IHVzaW5nIFdlYkdMVW5pZm9ybUxvY2F0aW9uIGFuZCBjYWNoaW5nIHR5cGVzIGluIGl0Cisg
ICAgaW50IGFjdGl2ZVVuaWZvcm1zID0gMDsKKyAgICBtX2NvbnRleHQtPmdldFByb2dyYW1pdihw
cm9ncmFtLCBHcmFwaGljc0NvbnRleHQzRDo6QUNUSVZFX1VOSUZPUk1TLCAmYWN0aXZlVW5pZm9y
bXMpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYWN0aXZlVW5pZm9ybXM7IGkrKykgeworICAg
ICAgICBBY3RpdmVJbmZvIGluZm87CisgICAgICAgIGlmICghbV9jb250ZXh0LT5nZXRBY3RpdmVV
bmlmb3JtKHByb2dyYW0sIGksIGluZm8pKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogcmFpc2Ug
c29tZSBHTCBlcnJvcgorICAgICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAg
ICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKKyAgICAgICAgfQorICAgICAgICAvLyBOb3cg
bmVlZCB0byBsb29rIHRoaXMgdXAgYnkgbmFtZSBhZ2FpbiB0byBmaW5kIGl0cyBsb2NhdGlvbgor
ICAgICAgICBsb25nIGxvYyA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0s
IGluZm8ubmFtZSk7CisgICAgICAgIGlmIChsb2MgPT0gbG9jYXRpb24pIHsKKyAgICAgICAgICAg
IC8vIEZvdW5kIGl0LiBVc2UgdGhlIHR5cGUgaW4gdGhlIEFjdGl2ZUluZm8gdG8gZGV0ZXJtaW5l
IHRoZSByZXR1cm4gdHlwZS4KKyAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEOjpXZWJHTEVu
dW1UeXBlIGJhc2VUeXBlOworICAgICAgICAgICAgdW5zaWduZWQgbGVuZ3RoOworICAgICAgICAg
ICAgc3dpdGNoIChpbmZvLnR5cGUpIHsKKyAgICAgICAgICAgICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dDNEOjpCT09MOgorICAgICAgICAgICAgICAgICAgICBiYXNlVHlwZSA9IEdyYXBoaWNzQ29u
dGV4dDNEOjpCT09MOworICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSAxOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNE
OjpCT09MX1ZFQzI6CisgICAgICAgICAgICAgICAgICAgIGJhc2VUeXBlID0gR3JhcGhpY3NDb250
ZXh0M0Q6OkJPT0w7CisgICAgICAgICAgICAgICAgICAgIGxlbmd0aCA9IDI7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6
OkJPT0xfVkVDMzoKKyAgICAgICAgICAgICAgICAgICAgYmFzZVR5cGUgPSBHcmFwaGljc0NvbnRl
eHQzRDo6Qk9PTDsKKyAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0gMzsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
Qk9PTF9WRUM0OgorICAgICAgICAgICAgICAgICAgICBiYXNlVHlwZSA9IEdyYXBoaWNzQ29udGV4
dDNEOjpCT09MOworICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSA0OworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpJ
TlQ6CisgICAgICAgICAgICAgICAgICAgIGJhc2VUeXBlID0gR3JhcGhpY3NDb250ZXh0M0Q6OklO
VDsKKyAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0gMTsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6SU5UX1ZFQzI6
CisgICAgICAgICAgICAgICAgICAgIGJhc2VUeXBlID0gR3JhcGhpY3NDb250ZXh0M0Q6OklOVDsK
KyAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0gMjsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6SU5UX1ZFQzM6Cisg
ICAgICAgICAgICAgICAgICAgIGJhc2VUeXBlID0gR3JhcGhpY3NDb250ZXh0M0Q6OklOVDsKKyAg
ICAgICAgICAgICAgICAgICAgbGVuZ3RoID0gMzsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6SU5UX1ZFQzQ6CisgICAg
ICAgICAgICAgICAgICAgIGJhc2VUeXBlID0gR3JhcGhpY3NDb250ZXh0M0Q6OklOVDsKKyAgICAg
ICAgICAgICAgICAgICAgbGVuZ3RoID0gNDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RkxPQVQ6CisgICAgICAgICAg
ICAgICAgICAgIGJhc2VUeXBlID0gR3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FUOworICAgICAgICAg
ICAgICAgICAgICBsZW5ndGggPSAxOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpGTE9BVF9WRUMyOgorICAgICAgICAg
ICAgICAgICAgICBiYXNlVHlwZSA9IEdyYXBoaWNzQ29udGV4dDNEOjpGTE9BVDsKKyAgICAgICAg
ICAgICAgICAgICAgbGVuZ3RoID0gMjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RkxPQVRfVkVDMzoKKyAgICAgICAg
ICAgICAgICAgICAgYmFzZVR5cGUgPSBHcmFwaGljc0NvbnRleHQzRDo6RkxPQVQ7CisgICAgICAg
ICAgICAgICAgICAgIGxlbmd0aCA9IDM7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FUX1ZFQzQ6CisgICAgICAg
ICAgICAgICAgICAgIGJhc2VUeXBlID0gR3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FUOworICAgICAg
ICAgICAgICAgICAgICBsZW5ndGggPSA0OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpGTE9BVF9NQVQyOgorICAgICAg
ICAgICAgICAgICAgICBiYXNlVHlwZSA9IEdyYXBoaWNzQ29udGV4dDNEOjpGTE9BVDsKKyAgICAg
ICAgICAgICAgICAgICAgbGVuZ3RoID0gNDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RkxPQVRfTUFUMzoKKyAgICAg
ICAgICAgICAgICAgICAgYmFzZVR5cGUgPSBHcmFwaGljc0NvbnRleHQzRDo6RkxPQVQ7CisgICAg
ICAgICAgICAgICAgICAgIGxlbmd0aCA9IDk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FUX01BVDQ6CisgICAg
ICAgICAgICAgICAgICAgIGJhc2VUeXBlID0gR3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FUOworICAg
ICAgICAgICAgICAgICAgICBsZW5ndGggPSAxNjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgLy8gQ2FuJ3Qg
aGFuZGxlIHRoaXMgdHlwZQorICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogd2hhdCB0byBk
byBhYm91dCBzYW1wbGVycz8KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5m
bygpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3dpdGNoIChiYXNlVHlwZSkgeworICAg
ICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RkxPQVQ6IHsKKyAgICAgICAgICAgICAg
ICBmbG9hdCB2YWx1ZVsxNl0gPSB7MH07CisgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRV
bmlmb3JtZnYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKKyAgICAgICAgICAgICAgICBpZiAo
bGVuZ3RoID09IDEpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8odmFs
dWVbMF0pOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IFdlYkdMR2V0SW5mbyhXZWJHTEZsb2F0QXJyYXk6OmNyZWF0ZSh2YWx1ZSwgbGVuZ3RoKSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpJTlQ6IHsK
KyAgICAgICAgICAgICAgICBpbnQgdmFsdWVbMTZdID0gezB9OworICAgICAgICAgICAgICAgIG1f
Y29udGV4dC0+Z2V0VW5pZm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgICAg
ICAgICAgICAgaWYgKGxlbmd0aCA9PSAxKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gV2Vi
R0xHZXRJbmZvKHN0YXRpY19jYXN0PGxvbmc+KHZhbHVlWzBdKSk7CisgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKFdlYkdMSW50QXJy
YXk6OmNyZWF0ZSh2YWx1ZSwgbGVuZ3RoKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpCT09MOiB7CisgICAgICAgICAgICAgICAgaW50IHZhbHVl
WzE2XSA9IHswfTsKKyAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZvcm1pdihwcm9n
cmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgICAgICAgICAgICAgIGlmIChsZW5ndGggPT0gMSkK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNfY2FzdDxib29s
Pih2YWx1ZVswXSkpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBjaGFyIGJvb2xWYWx1ZVsxNl0gPSB7MH07CisgICAgICAgICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBsZW5ndGg7IGorKykKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2xWYWx1ZVtqXSA9IHN0YXRpY19jYXN0PGJvb2w+KHZhbHVlW2pdKTsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhXZWJHTFVuc2lnbmVkQnl0ZUFycmF5
OjpjcmVhdGUoYm9vbFZhbHVlLCBsZW5ndGgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9Ci0gICAgUmVmUHRyPFdlYkdM
SW50QXJyYXk+IGFycmF5ID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRp
b24pOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci0gICAgcmV0dXJuIGFy
cmF5OworICAgIC8vIElmIHdlIGdldCBoZXJlLCBzb21ldGhpbmcgd2VudCB3cm9uZyBpbiBvdXIg
dW5mb3J0dW5hdGVseSBjb21wbGV4IGxvZ2ljIGFib3ZlCisgICAgcmV0dXJuIFdlYkdMR2V0SW5m
bygpOwogfQogCiBsb25nIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VW5pZm9ybUxvY2F0aW9u
KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2Rl
JiBlYykKQEAgLTc5NywzMiArMTEzOCw0NyBAQCBsb25nIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
Z2V0VW5pZm9ybUxvCiAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHBy
b2dyYW0sIG5hbWUpOwogfQogCi1mbG9hdCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFZlcnRl
eEF0dHJpYmYodW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQgbG9uZyBwbmFtZSkKK1dlYkdM
R2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFZlcnRleEF0dHJpYih1bnNpZ25lZCBs
b25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAg
ICBmbG9hdCByZXN1bHQgPSBtX2NvbnRleHQtPmdldFZlcnRleEF0dHJpYmYoaW5kZXgsIHBuYW1l
KTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLVBhc3NSZWZQdHI8V2ViR0xGbG9hdEFycmF5PiBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmdldFZlcnRleEF0dHJpYmZ2KHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcg
cG5hbWUpCi17Ci0gICAgUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gYXJyYXkgPSBtX2NvbnRleHQt
PmdldFZlcnRleEF0dHJpYmZ2KGluZGV4LCBwbmFtZSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhp
Y3NDYWxsKGZhbHNlKTsKLSAgICByZXR1cm4gYXJyYXk7Ci19Ci0KLWxvbmcgV2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpnZXRWZXJ0ZXhBdHRyaWJpKHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVk
IGxvbmcgcG5hbWUpCi17Ci0gICAgbG9uZyByZXN1bHQgPSBtX2NvbnRleHQtPmdldFZlcnRleEF0
dHJpYmkoaW5kZXgsIHBuYW1lKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2Up
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gV2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpnZXRWZXJ0ZXhBdHRyaWJpdih1bnNpZ25lZCBsb25nIGluZGV4
LCB1bnNpZ25lZCBsb25nIHBuYW1lKQotewotICAgIFJlZlB0cjxXZWJHTEludEFycmF5PiBhcnJh
eSA9IG1fY29udGV4dC0+Z2V0VmVydGV4QXR0cmliaXYoaW5kZXgsIHBuYW1lKTsKLSAgICBjbGVh
bnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwotICAgIHJldHVybiBhcnJheTsKKyAgICBDbGVh
bnVwSGVscGVyKHRoaXMsIGZhbHNlKTsKKyAgICBzd2l0Y2ggKHBuYW1lKSB7CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6VkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElORzogewor
ICAgICAgICBpbnQgbmFtZSA9IDA7CisgICAgICAgIG1fY29udGV4dC0+Z2V0VmVydGV4QXR0cmli
aXYoaW5kZXgsIHBuYW1lLCAmbmFtZSk7CisgICAgICAgIGlmIChuYW1lID09IDApCisgICAgICAg
ICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CisgICAgICAgIFJlZlB0cjxXZWJHTEJ1ZmZlcj4g
dG1wID0gV2ViR0xCdWZmZXI6OmNyZWF0ZSh0aGlzLCBuYW1lKTsKKyAgICAgICAgYWRkT2JqZWN0
KHRtcC5nZXQoKSk7CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJH
TEJ1ZmZlcj4odG1wKSk7CisgICAgfQorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlZFUlRF
WF9BVFRSSUJfQVJSQVlfRU5BQkxFRDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpWRVJU
RVhfQVRUUklCX0FSUkFZX05PUk1BTElaRUQ6IHsKKyAgICAgICAgaW50IHZhbHVlID0gMDsKKyAg
ICAgICAgbV9jb250ZXh0LT5nZXRWZXJ0ZXhBdHRyaWJpdihpbmRleCwgcG5hbWUsICZ2YWx1ZSk7
CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oc3RhdGljX2Nhc3Q8Ym9vbD4odmFsdWUpKTsK
KyAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VkVSVEVYX0FUVFJJQl9BUlJBWV9T
SVpFOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlZFUlRFWF9BVFRSSUJfQVJSQVlfU1RS
SURFOiB7CisgICAgICAgIGludCB2YWx1ZSA9IDA7CisgICAgICAgIG1fY29udGV4dC0+Z2V0VmVy
dGV4QXR0cmliaXYoaW5kZXgsIHBuYW1lLCAmdmFsdWUpOworICAgICAgICByZXR1cm4gV2ViR0xH
ZXRJbmZvKHN0YXRpY19jYXN0PGxvbmc+KHZhbHVlKSk7CisgICAgfQorICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0M0Q6OlZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRTogeworICAgICAgICBpbnQgdmFs
dWUgPSAwOworICAgICAgICBtX2NvbnRleHQtPmdldFZlcnRleEF0dHJpYml2KGluZGV4LCBwbmFt
ZSwgJnZhbHVlKTsKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNfY2FzdDx1bnNp
Z25lZCBsb25nPih2YWx1ZSkpOworICAgIH0KKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpD
VVJSRU5UX1ZFUlRFWF9BVFRSSUI6IHsKKyAgICAgICAgZmxvYXQgdmFsdWVbNF0gPSB7MH07Cisg
ICAgICAgIG1fY29udGV4dC0+Z2V0VmVydGV4QXR0cmliZnYoaW5kZXgsIHBuYW1lLCB2YWx1ZSk7
CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oV2ViR0xGbG9hdEFycmF5OjpjcmVhdGUodmFs
dWUsIDQpKTsKKyAgICB9CisgICAgZGVmYXVsdDogeworICAgICAgICAvLyBGSVhNRTogcmFpc2Ug
R0xfSU5WQUxJRF9FTlVNIGVycm9yCisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAg
cmV0dXJuIFdlYkdMR2V0SW5mbygpOworICAgIH0KKyAgICB9CiB9CiAKIGxvbmcgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQodW5zaWduZWQgbG9uZyBpbmRleCwg
dW5zaWduZWQgbG9uZyBwbmFtZSkKQEAgLTE0MTcsNiArMTc3Myw3IEBAIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cmkKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OnVzZVByb2dyYW0oV2ViR0xQcm9ncmFtKiBwcm9ncmFtKQogeworICAgIG1fY3VycmVudFByb2dy
YW0gPSBwcm9ncmFtOwogICAgIG1fY29udGV4dC0+dXNlUHJvZ3JhbShwcm9ncmFtKTsKICAgICBj
bGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQpAQCAtMTU0OCw2ICsxOTA1LDE1IEBA
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjphZGRPYmplY3QoQ2EKIAogdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmRldGFjaEFuZFJlbW92ZUFsbE9iamVjdHMoKQogeworICAgIG1fYXJy
YXlCdWZmZXJCaW5kaW5nID0gMDsKKyAgICBtX2N1cnJlbnRQcm9ncmFtID0gMDsKKyAgICBtX2Vs
ZW1lbnRBcnJheUJ1ZmZlckJpbmRpbmcgPSAwOworICAgIG1fZnJhbWVidWZmZXJCaW5kaW5nID0g
MDsKKyAgICBtX3JlbmRlcmJ1ZmZlckJpbmRpbmcgPSAwOworICAgIGZvciAodW5zaWduZWQgaW50
IGkgPSAwOyBpIDwgc2l6ZW9mKG1fdGV4dHVyZVVuaXRzKSAvIHNpemVvZihUZXh0dXJlVW5pdFN0
YXRlKTsgaSsrKSB7CisgICAgICAgIG1fdGV4dHVyZVVuaXRzW2ldLm1fdGV4dHVyZTJEQmluZGlu
ZyA9IDA7CisgICAgICAgIG1fdGV4dHVyZVVuaXRzW2ldLm1fdGV4dHVyZUN1YmVNYXBCaW5kaW5n
ID0gMDsKKyAgICB9CiAgICAgSGFzaFNldDxDYW52YXNPYmplY3QqPjo6aXRlcmF0b3IgcGVuZCA9
IG1fY2FudmFzT2JqZWN0cy5lbmQoKTsKICAgICBmb3IgKEhhc2hTZXQ8Q2FudmFzT2JqZWN0Kj46
Oml0ZXJhdG9yIGl0ID0gbV9jYW52YXNPYmplY3RzLmJlZ2luKCk7IGl0ICE9IHBlbmQ7ICsraXQp
CiAgICAgICAgICgqaXQpLT5kZXRhY2hDb250ZXh0KCk7CkBAIC0xNTU1LDcgKzE5MjEsOTQgQEAg
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRldGFjaEFuZFJlbQogICAgIG1fY2FudmFzT2Jq
ZWN0cy5jbGVhcigpOwogfQogCitXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRCb29sZWFuUGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcgcG5hbWUpCit7CisgICAgdW5zaWduZWQg
Y2hhciB2YWx1ZTsKKyAgICBtX2NvbnRleHQtPmdldEJvb2xlYW52KHBuYW1lLCAmdmFsdWUpOwor
ICAgIHJldHVybiBXZWJHTEdldEluZm8oc3RhdGljX2Nhc3Q8Ym9vbD4odmFsdWUpKTsKK30KKwor
V2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RmxvYXRQYXJhbWV0ZXIodW5z
aWduZWQgbG9uZyBwbmFtZSkKK3sKKyAgICBmbG9hdCB2YWx1ZTsKKyAgICBtX2NvbnRleHQtPmdl
dEZsb2F0dihwbmFtZSwgJnZhbHVlKTsKKyAgICByZXR1cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19j
YXN0PGZsb2F0Pih2YWx1ZSkpOworfQorCitXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpnZXRJbnRQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyBwbmFtZSkKK3sKKyAgICByZXR1cm4g
Z2V0TG9uZ1BhcmFtZXRlcihwbmFtZSk7Cit9CisKK1dlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmdldExvbmdQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyBwbmFtZSkKK3sKKyAgICBp
bnQgdmFsdWU7CisgICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihwbmFtZSwgJnZhbHVlKTsKKyAg
ICByZXR1cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0PGxvbmc+KHZhbHVlKSk7Cit9CisKK1dl
YkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFVuc2lnbmVkTG9uZ1BhcmFtZXRl
cih1bnNpZ25lZCBsb25nIHBuYW1lKQoreworICAgIGludCB2YWx1ZTsKKyAgICBtX2NvbnRleHQt
PmdldEludGVnZXJ2KHBuYW1lLCAmdmFsdWUpOworICAgIHJldHVybiBXZWJHTEdldEluZm8oc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4odmFsdWUpKTsKK30KKworV2ViR0xHZXRJbmZvIFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6Z2V0V2ViR0xGbG9hdEFycmF5UGFyYW1ldGVyKHVuc2lnbmVkIGxv
bmcgcG5hbWUpCit7CisgICAgZmxvYXQgdmFsdWVbNF0gPSB7MH07CisgICAgbV9jb250ZXh0LT5n
ZXRGbG9hdHYocG5hbWUsIHZhbHVlKTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSAwOworICAgIHN3
aXRjaCAocG5hbWUpIHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpBTElBU0VEX1BPSU5U
X1NJWkVfUkFOR0U6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6QUxJQVNFRF9MSU5FX1dJ
RFRIX1JBTkdFOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX1JBTkdFOgorICAg
ICAgICBsZW5ndGggPSAyOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dDNEOjpCTEVORF9DT0xPUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9DTEVB
Ul9WQUxVRToKKyAgICAgICAgbGVuZ3RoID0gNDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICB9CisgICAgcmV0dXJuIFdlYkdMR2V0
SW5mbyhXZWJHTEZsb2F0QXJyYXk6OmNyZWF0ZSh2YWx1ZSwgbGVuZ3RoKSk7Cit9CisKK1dlYkdM
R2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFdlYkdMSW50QXJyYXlQYXJhbWV0ZXIo
dW5zaWduZWQgbG9uZyBwbmFtZSkKK3sKKyAgICBpbnQgdmFsdWVbNF0gPSB7MH07CisgICAgbV9j
b250ZXh0LT5nZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUpOworICAgIHVuc2lnbmVkIGxlbmd0aCA9
IDA7CisgICAgc3dpdGNoIChwbmFtZSkgeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6Ok1B
WF9WSUVXUE9SVF9ESU1TOgorICAgICAgICBsZW5ndGggPSAyOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTQ0lTU09SX0JPWDoKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dDNEOjpWSUVXUE9SVDoKKyAgICAgICAgbGVuZ3RoID0gNDsKKyAgICAgICAgYnJlYWs7
CisgICAgZGVmYXVsdDoKKyAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICB9CisgICAgcmV0
dXJuIFdlYkdMR2V0SW5mbyhXZWJHTEludEFycmF5OjpjcmVhdGUodmFsdWUsIGxlbmd0aCkpOwor
fQorCitXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRXZWJHTFVuc2lnbmVk
Qnl0ZUFycmF5UGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcgcG5hbWUpCit7CisgICAgdW5zaWduZWQg
Y2hhciB2YWx1ZVs0XSA9IHswfTsKKyAgICBtX2NvbnRleHQtPmdldEJvb2xlYW52KHBuYW1lLCB2
YWx1ZSk7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gMDsKKyAgICBzd2l0Y2ggKHBuYW1lKSB7Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfV1JJVEVNQVNLOgorICAgICAgICBsZW5n
dGggPSA0OworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIH0KKyAgICByZXR1cm4gV2ViR0xHZXRJbmZvKFdlYkdMVW5zaWduZWRCeXRl
QXJyYXk6OmNyZWF0ZSh2YWx1ZSwgbGVuZ3RoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIEVOQUJMRSgzRF9DQU5WQVMpCi0KSW5kZXg6IFdlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAkocmV2aXNpb24gNTEyNzgpCisrKyBXZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJXZWJHTEZsb2F0QXJyYXkuaCIKKyNp
bmNsdWRlICJXZWJHTEdldEluZm8uaCIKICNpbmNsdWRlICJXZWJHTEludEFycmF5LmgiCiAjaW5j
bHVkZSAiV2ViR0xVbnNpZ25lZEJ5dGVBcnJheS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dDNELmgiCkBAIC0xMzAsMjYgKzEzMSwyMSBAQCBjbGFzcyBXZWJLaXRDU1NNYXRyaXg7CiAKICAg
ICAgICAgaW50ICBnZXRBdHRyaWJMb2NhdGlvbihXZWJHTFByb2dyYW0qLCBjb25zdCBTdHJpbmcm
IG5hbWUpOwogCi0gICAgICAgIGJvb2wgZ2V0Qm9vbGVhbih1bnNpZ25lZCBsb25nIHBuYW1lKTsK
LSAgICAgICAgUGFzc1JlZlB0cjxXZWJHTFVuc2lnbmVkQnl0ZUFycmF5PiBnZXRCb29sZWFudih1
bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgaW50IGdldEJ1ZmZlclBhcmFtZXRlcmkodW5z
aWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBQYXNzUmVm
UHRyPFdlYkdMSW50QXJyYXk+IGdldEJ1ZmZlclBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFy
Z2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKTsKKyAgICAgICAgV2ViR0xHZXRJbmZvIGdldEJ1ZmZl
clBhcmFtZXRlcih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgRXhj
ZXB0aW9uQ29kZSYpOwogCiAgICAgICAgIHVuc2lnbmVkIGxvbmcgZ2V0RXJyb3IoKTsKIAotICAg
ICAgICBmbG9hdCBnZXRGbG9hdCh1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgUGFzc1Jl
ZlB0cjxXZWJHTEZsb2F0QXJyYXk+IGdldEZsb2F0dih1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAg
ICAgICAgaW50IGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkodW5zaWduZWQgbG9u
ZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgdW5zaWduZWQgbG9uZyBwbmFtZSk7
Ci0gICAgICAgIFBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gZ2V0RnJhbWVidWZmZXJBdHRhY2ht
ZW50UGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNo
bWVudCwgdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIGludCBnZXRJbnRlZ2VyKHVuc2ln
bmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBQYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IGdldElu
dGVnZXJ2KHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBpbnQgZ2V0UHJvZ3JhbWkoV2Vi
R0xQcm9ncmFtKiwgdW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpOwotICAg
ICAgICBQYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IGdldFByb2dyYW1pdihXZWJHTFByb2dyYW0q
LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYyk7CisgICAgICAgIFdlYkdM
R2V0SW5mbyBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyB0
YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgRXhj
ZXB0aW9uQ29kZSYpOworCisgICAgICAgIFdlYkdMR2V0SW5mbyBnZXRQYXJhbWV0ZXIodW5zaWdu
ZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYpOworCisgICAgICAgIFdlYkdMR2V0SW5mbyBn
ZXRQcm9ncmFtUGFyYW1ldGVyKFdlYkdMUHJvZ3JhbSosIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4
Y2VwdGlvbkNvZGUmKTsKKwogICAgICAgICBTdHJpbmcgZ2V0UHJvZ3JhbUluZm9Mb2coV2ViR0xQ
cm9ncmFtKiwgRXhjZXB0aW9uQ29kZSYgZWMpOwotICAgICAgICBpbnQgZ2V0UmVuZGVyYnVmZmVy
UGFyYW1ldGVyaSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0g
ICAgICAgIFBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVy
aXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBp
bnQgZ2V0U2hhZGVyaShXZWJHTFNoYWRlciosIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlv
bkNvZGUmIGVjKTsKLSAgICAgICAgUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBnZXRTaGFkZXJp
dihXZWJHTFNoYWRlciosIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKTsK
KworICAgICAgICBXZWJHTEdldEluZm8gZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKHVuc2lnbmVk
IGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJik7CisKKyAg
ICAgICAgV2ViR0xHZXRJbmZvIGdldFNoYWRlclBhcmFtZXRlcihXZWJHTFNoYWRlciosIHVuc2ln
bmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKTsKIAogICAgICAgICBTdHJpbmcgZ2V0
U2hhZGVySW5mb0xvZyhXZWJHTFNoYWRlciosIEV4Y2VwdGlvbkNvZGUmIGVjKTsKIApAQCAtMTU5
LDEwICsxNTUsOSBAQCBjbGFzcyBXZWJLaXRDU1NNYXRyaXg7CiAgICAgICAgIFN0cmluZyBnZXRT
aGFkZXJTb3VyY2UoV2ViR0xTaGFkZXIqLCBFeGNlcHRpb25Db2RlJiBlYyk7CiAgICAgICAgIFN0
cmluZyBnZXRTdHJpbmcodW5zaWduZWQgbG9uZyBuYW1lKTsKIAotICAgICAgICBmbG9hdCBnZXRU
ZXhQYXJhbWV0ZXJmKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKTsK
LSAgICAgICAgUGFzc1JlZlB0cjxXZWJHTEZsb2F0QXJyYXk+IGdldFRleFBhcmFtZXRlcmZ2KHVu
c2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgaW50IGdl
dFRleFBhcmFtZXRlcmkodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUp
OwotICAgICAgICBQYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IGdldFRleFBhcmFtZXRlcml2KHVu
c2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKTsKKyAgICAgICAgV2ViR0xH
ZXRJbmZvIGdldFRleFBhcmFtZXRlcih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9u
ZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYpOworCisgICAgICAgIFdlYkdMR2V0SW5mbyBnZXRVbmlm
b3JtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBsb2NhdGlvbiwgRXhjZXB0aW9uQ29kZSYg
ZWMpOwogCiAgICAgICAgIGZsb2F0IGdldFVuaWZvcm1mKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwg
bG9uZyBsb2NhdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpOwogICAgICAgICBQYXNzUmVmUHRyPFdl
YkdMRmxvYXRBcnJheT4gZ2V0VW5pZm9ybWZ2KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBs
b2NhdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpOwpAQCAtMTcxLDEwICsxNjYsNyBAQCBjbGFzcyBX
ZWJLaXRDU1NNYXRyaXg7CiAKICAgICAgICAgbG9uZyBnZXRVbmlmb3JtTG9jYXRpb24oV2ViR0xQ
cm9ncmFtKiwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYyk7CiAKLSAgICAg
ICAgZmxvYXQgZ2V0VmVydGV4QXR0cmliZih1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBs
b25nIHBuYW1lKTsKLSAgICAgICAgUGFzc1JlZlB0cjxXZWJHTEZsb2F0QXJyYXk+IGdldFZlcnRl
eEF0dHJpYmZ2KHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAg
ICAgICBsb25nIGdldFZlcnRleEF0dHJpYmkodW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQg
bG9uZyBwbmFtZSk7Ci0gICAgICAgIFBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gZ2V0VmVydGV4
QXR0cmliaXYodW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQgbG9uZyBwbmFtZSk7CisgICAg
ICAgIFdlYkdMR2V0SW5mbyBnZXRWZXJ0ZXhBdHRyaWIodW5zaWduZWQgbG9uZyBpbmRleCwgdW5z
aWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgICAgIGxvbmcgZ2V0VmVy
dGV4QXR0cmliT2Zmc2V0KHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUp
OwogCkBAIC0zMjAsNiArMzEyLDMxIEBAIGNsYXNzIFdlYktpdENTU01hdHJpeDsKICAgICAgICAg
Ly8gRklYTUU6IEkgdGhpbmsgdGhpcyBpcyBicm9rZW4gLS0gaXQgZG9lcyBub3QgaW5jcmVtZW50
IGFueQogICAgICAgICAvLyByZWZlcmVuY2UgY291bnRzLCBzbyBtYXkgcmVmZXIgdG8gZGVzdHJv
eWVkIG9iamVjdHMuCiAgICAgICAgIEhhc2hTZXQ8Q2FudmFzT2JqZWN0Kj4gbV9jYW52YXNPYmpl
Y3RzOworCisgICAgICAgIFJlZlB0cjxXZWJHTEJ1ZmZlcj4gbV9hcnJheUJ1ZmZlckJpbmRpbmc7
CisgICAgICAgIFJlZlB0cjxXZWJHTFByb2dyYW0+IG1fY3VycmVudFByb2dyYW07CisgICAgICAg
IFJlZlB0cjxXZWJHTEJ1ZmZlcj4gbV9lbGVtZW50QXJyYXlCdWZmZXJCaW5kaW5nOworICAgICAg
ICBSZWZQdHI8V2ViR0xGcmFtZWJ1ZmZlcj4gbV9mcmFtZWJ1ZmZlckJpbmRpbmc7CisgICAgICAg
IFJlZlB0cjxXZWJHTFJlbmRlcmJ1ZmZlcj4gbV9yZW5kZXJidWZmZXJCaW5kaW5nOworICAgICAg
ICBjbGFzcyBUZXh0dXJlVW5pdFN0YXRlIHsKKyAgICAgICAgcHVibGljOgorICAgICAgICAgICAg
UmVmUHRyPFdlYkdMVGV4dHVyZT4gbV90ZXh0dXJlMkRCaW5kaW5nOworICAgICAgICAgICAgUmVm
UHRyPFdlYkdMVGV4dHVyZT4gbV90ZXh0dXJlQ3ViZU1hcEJpbmRpbmc7CisgICAgICAgIH07Cisg
ICAgICAgIFRleHR1cmVVbml0U3RhdGUgbV90ZXh0dXJlVW5pdHNbMzJdOworICAgICAgICB1bnNp
Z25lZCBsb25nIG1fYWN0aXZlVGV4dHVyZVVuaXQ7CisKKyAgICAgICAgLy8gSGVscGVycyBmb3Ig
Z2V0UGFyYW1ldGVyIGFuZCBvdGhlcnMKKyAgICAgICAgV2ViR0xHZXRJbmZvIGdldEJvb2xlYW5Q
YXJhbWV0ZXIodW5zaWduZWQgbG9uZyBwbmFtZSk7CisgICAgICAgIFdlYkdMR2V0SW5mbyBnZXRG
bG9hdFBhcmFtZXRlcih1bnNpZ25lZCBsb25nIHBuYW1lKTsKKyAgICAgICAgV2ViR0xHZXRJbmZv
IGdldEludFBhcmFtZXRlcih1bnNpZ25lZCBsb25nIHBuYW1lKTsKKyAgICAgICAgV2ViR0xHZXRJ
bmZvIGdldExvbmdQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyBwbmFtZSk7CisgICAgICAgIFdlYkdM
R2V0SW5mbyBnZXRVbnNpZ25lZExvbmdQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyBwbmFtZSk7Cisg
ICAgICAgIFdlYkdMR2V0SW5mbyBnZXRXZWJHTEZsb2F0QXJyYXlQYXJhbWV0ZXIodW5zaWduZWQg
bG9uZyBwbmFtZSk7CisgICAgICAgIFdlYkdMR2V0SW5mbyBnZXRXZWJHTEludEFycmF5UGFyYW1l
dGVyKHVuc2lnbmVkIGxvbmcgcG5hbWUpOworICAgICAgICBXZWJHTEdldEluZm8gZ2V0V2ViR0xV
bnNpZ25lZEJ5dGVBcnJheVBhcmFtZXRlcih1bnNpZ25lZCBsb25nIHBuYW1lKTsKKworICAgICAg
ICBmcmllbmQgY2xhc3MgQ2xlYW51cEhlbHBlcjsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHQuaWRsCShyZXZpc2lvbiA1MTI3OCkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNTI5LDcgKzUyOSw2IEBAIG1vZHVs
ZSBodG1sIHsKICAgICAgICAgdm9pZCAgICAgICAgIGZyb250RmFjZShpbiB1bnNpZ25lZCBsb25n
IG1vZGUpOwogICAgICAgICB2b2lkICAgICAgICAgZ2VuZXJhdGVNaXBtYXAoaW4gdW5zaWduZWQg
bG9uZyB0YXJnZXQpOwogICAgICAgICAKLSAgICAgICAgLy8gRklYTUU6IHRoZXNlIG5lZWQgdG8g
YmUgYWRkZWQgcGVyIHRoZSBXZWJHTCBzcGVjCiAgICAgICAgIFdlYkdMQWN0aXZlSW5mbyBnZXRB
Y3RpdmVBdHRyaWIoaW4gV2ViR0xQcm9ncmFtIHByb2dyYW0sIGluIHVuc2lnbmVkIGxvbmcgaW5k
ZXgpCiAgICAgICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIFdlYkdMQWN0
aXZlSW5mbyBnZXRBY3RpdmVVbmlmb3JtKGluIFdlYkdMUHJvZ3JhbSBwcm9ncmFtLCBpbiB1bnNp
Z25lZCBsb25nIGluZGV4KQpAQCAtNTM5LDI2ICs1MzgsMjIgQEAgbW9kdWxlIGh0bWwgewogCiAg
ICAgICAgIGludCAgICAgICAgICBnZXRBdHRyaWJMb2NhdGlvbihpbiBXZWJHTFByb2dyYW0gcHJv
Z3JhbSwgaW4gRE9NU3RyaW5nIG5hbWUpOwogCi0gICAgICAgIGJvb2xlYW4gZ2V0Qm9vbGVhbihp
biB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgV2ViR0xVbnNpZ25lZEJ5dGVBcnJheSBn
ZXRCb29sZWFudihpbiB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgbG9uZyBnZXRCdWZm
ZXJQYXJhbWV0ZXJpKGluIHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBpbiB1bnNpZ25lZCBsb25nIHBu
YW1lKTsKLSAgICAgICAgV2ViR0xJbnRBcnJheSBnZXRCdWZmZXJQYXJhbWV0ZXJpdihpbiB1bnNp
Z25lZCBsb25nIHRhcmdldCwgaW4gdW5zaWduZWQgbG9uZyBwbmFtZSk7CisgICAgICAgIC8vIGFu
eSBnZXRCdWZmZXJQYXJhbWV0ZXIoaW4gdW5zaWduZWQgbG9uZyB0YXJnZXQsIGluIHVuc2lnbmVk
IGxvbmcgcG5hbWUpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICBbQ3VzdG9tXSB2b2lk
IGdldEJ1ZmZlclBhcmFtZXRlcigpOwogCiAgICAgICAgIHVuc2lnbmVkIGxvbmcgZ2V0RXJyb3Io
KTsKIAotICAgICAgICBmbG9hdCBnZXRGbG9hdChpbiB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAg
ICAgICAgV2ViR0xGbG9hdEFycmF5IGdldEZsb2F0dihpbiB1bnNpZ25lZCBsb25nIHBuYW1lKTsK
LSAgICAgICAgbG9uZyBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKGluIHVuc2ln
bmVkIGxvbmcgdGFyZ2V0LCBpbiB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIGluIHVuc2lnbmVk
IGxvbmcgcG5hbWUpOwotICAgICAgICBXZWJHTEludEFycmF5IGdldEZyYW1lYnVmZmVyQXR0YWNo
bWVudFBhcmFtZXRlcml2KGluIHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBpbiB1bnNpZ25lZCBsb25n
IGF0dGFjaG1lbnQsIGluIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBsb25nIGdldElu
dGVnZXIoaW4gdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFdlYkdMSW50QXJyYXkgZ2V0
SW50ZWdlcnYoaW4gdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIGxvbmcgZ2V0UHJvZ3Jh
bWkoaW4gV2ViR0xQcm9ncmFtIHByb2dyYW0sIGluIHVuc2lnbmVkIGxvbmcgcG5hbWUpIHJhaXNl
cyhET01FeGNlcHRpb24pOwotICAgICAgICBXZWJHTEludEFycmF5IGdldFByb2dyYW1pdihpbiBX
ZWJHTFByb2dyYW0gcHJvZ3JhbSwgaW4gdW5zaWduZWQgbG9uZyBwbmFtZSkgcmFpc2VzKERPTUV4
Y2VwdGlvbik7CisgICAgICAgIC8vIGFueSBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0
ZXIoaW4gdW5zaWduZWQgbG9uZyB0YXJnZXQsIGluIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwg
aW4gdW5zaWduZWQgbG9uZyBwbmFtZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIFtD
dXN0b21dIHZvaWQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKCk7CisgICAgICAg
IC8vIGFueSBnZXRQYXJhbWV0ZXIoaW4gdW5zaWduZWQgbG9uZyBwbmFtZSkgcmFpc2VzKERPTUV4
Y2VwdGlvbik7CisgICAgICAgIFtDdXN0b21dIHZvaWQgZ2V0UGFyYW1ldGVyKCk7CisgICAgICAg
IC8vIGFueSBnZXRQcm9ncmFtUGFyYW1ldGVyKGluIFdlYkdMUHJvZ3JhbSBwcm9ncmFtLCBpbiB1
bnNpZ25lZCBsb25nIHBuYW1lKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgW0N1c3Rv
bV0gdm9pZCBnZXRQcm9ncmFtUGFyYW1ldGVyKCk7CiAgICAgICAgIERPTVN0cmluZyBnZXRQcm9n
cmFtSW5mb0xvZyhpbiBXZWJHTFByb2dyYW0gcHJvZ3JhbSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7
Ci0gICAgICAgIGxvbmcgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaShpbiB1bnNpZ25lZCBsb25n
IHRhcmdldCwgaW4gdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFdlYkdMSW50QXJyYXkg
Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYoaW4gdW5zaWduZWQgbG9uZyB0YXJnZXQsIGluIHVu
c2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBsb25nIGdldFNoYWRlcmkoaW4gV2ViR0xTaGFk
ZXIgc2hhZGVyLCBpbiB1bnNpZ25lZCBsb25nIHBuYW1lKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsK
LSAgICAgICAgV2ViR0xJbnRBcnJheSBnZXRTaGFkZXJpdihpbiBXZWJHTFNoYWRlciBzaGFkZXIs
IGluIHVuc2lnbmVkIGxvbmcgcG5hbWUpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICAv
LyBhbnkgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKGluIHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBp
biB1bnNpZ25lZCBsb25nIHBuYW1lKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgW0N1
c3RvbV0gdm9pZCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoKTsKKyAgICAgICAgLy8gYW55IGdl
dFNoYWRlclBhcmFtZXRlcihpbiBXZWJHTFNoYWRlciBzaGFkZXIsIGluIHVuc2lnbmVkIGxvbmcg
cG5hbWUpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICBbQ3VzdG9tXSB2b2lkIGdldFNo
YWRlclBhcmFtZXRlcigpIHJhaXNlcyhET01FeGNlcHRpb24pOwogCiAgICAgICAgIERPTVN0cmlu
ZyAgICBnZXRTaGFkZXJJbmZvTG9nKGluIFdlYkdMU2hhZGVyIHNoYWRlcikgcmFpc2VzKERPTUV4
Y2VwdGlvbik7CiAKQEAgLTU2OCwyMiArNTYzLDE2IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAg
RE9NU3RyaW5nICAgIGdldFNoYWRlclNvdXJjZShpbiBXZWJHTFNoYWRlciBzaGFkZXIpIHJhaXNl
cyhET01FeGNlcHRpb24pOwogICAgICAgICBET01TdHJpbmcgICAgZ2V0U3RyaW5nKGluIHVuc2ln
bmVkIGxvbmcgbmFtZSk7CiAKLSAgICAgICAgZmxvYXQgZ2V0VGV4UGFyYW1ldGVyZihpbiB1bnNp
Z25lZCBsb25nIHRhcmdldCwgaW4gdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFdlYkdM
RmxvYXRBcnJheSBnZXRUZXhQYXJhbWV0ZXJmdihpbiB1bnNpZ25lZCBsb25nIHRhcmdldCwgaW4g
dW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIGxvbmcgZ2V0VGV4UGFyYW1ldGVyaShpbiB1
bnNpZ25lZCBsb25nIHRhcmdldCwgaW4gdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFdl
YkdMSW50QXJyYXkgZ2V0VGV4UGFyYW1ldGVyaXYoaW4gdW5zaWduZWQgbG9uZyB0YXJnZXQsIGlu
IHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotCi0gICAgICAgIGZsb2F0IGdldFVuaWZvcm1mKGluIFdl
YkdMUHJvZ3JhbSBwcm9ncmFtLCBpbiBsb25nIGxvY2F0aW9uKSByYWlzZXMoRE9NRXhjZXB0aW9u
KTsKLSAgICAgICAgV2ViR0xGbG9hdEFycmF5IGdldFVuaWZvcm1mdihpbiBXZWJHTFByb2dyYW0g
cHJvZ3JhbSwgaW4gbG9uZyBsb2NhdGlvbikgcmFpc2VzKERPTUV4Y2VwdGlvbik7Ci0gICAgICAg
IGxvbmcgZ2V0VW5pZm9ybWkoaW4gV2ViR0xQcm9ncmFtIHByb2dyYW0sIGluIGxvbmcgbG9jYXRp
b24pIHJhaXNlcyhET01FeGNlcHRpb24pOwotICAgICAgICBXZWJHTEludEFycmF5IGdldFVuaWZv
cm1pdihpbiBXZWJHTFByb2dyYW0gcHJvZ3JhbSwgaW4gbG9uZyBsb2NhdGlvbikgcmFpc2VzKERP
TUV4Y2VwdGlvbik7CisgICAgICAgIC8vIGFueSBnZXRUZXhQYXJhbWV0ZXIoaW4gdW5zaWduZWQg
bG9uZyB0YXJnZXQsIGluIHVuc2lnbmVkIGxvbmcgcG5hbWUpIHJhaXNlcyhET01FeGNlcHRpb24p
OworICAgICAgICBbQ3VzdG9tXSB2b2lkIGdldFRleFBhcmFtZXRlcigpOworCisgICAgICAgIC8v
IGFueSBnZXRVbmlmb3JtKGluIFdlYkdMUHJvZ3JhbSBwcm9ncmFtLCBpbiBsb25nIGxvY2F0aW9u
KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgW0N1c3RvbV0gdm9pZCBnZXRVbmlmb3Jt
KCk7CiAgICAgICAgIAogICAgICAgICBsb25nIGdldFVuaWZvcm1Mb2NhdGlvbihpbiBXZWJHTFBy
b2dyYW0gcHJvZ3JhbSwgaW4gRE9NU3RyaW5nIG5hbWUpIHJhaXNlcyhET01FeGNlcHRpb24pOwog
Ci0gICAgICAgIGZsb2F0IGdldFZlcnRleEF0dHJpYmYoaW4gdW5zaWduZWQgbG9uZyBpbmRleCwg
aW4gdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFdlYkdMRmxvYXRBcnJheSBnZXRWZXJ0
ZXhBdHRyaWJmdihpbiB1bnNpZ25lZCBsb25nIGluZGV4LCBpbiB1bnNpZ25lZCBsb25nIHBuYW1l
KTsKLSAgICAgICAgbG9uZyBnZXRWZXJ0ZXhBdHRyaWJpKGluIHVuc2lnbmVkIGxvbmcgaW5kZXgs
IGluIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBXZWJHTEludEFycmF5IGdldFZlcnRl
eEF0dHJpYml2KGluIHVuc2lnbmVkIGxvbmcgaW5kZXgsIGluIHVuc2lnbmVkIGxvbmcgcG5hbWUp
OworICAgICAgICAvLyBhbnkgZ2V0VmVydGV4QXR0cmliKGluIHVuc2lnbmVkIGxvbmcgaW5kZXgs
IGluIHVuc2lnbmVkIGxvbmcgcG5hbWUpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICBb
Q3VzdG9tXSB2b2lkIGdldFZlcnRleEF0dHJpYigpOwogCiAgICAgICAgIGxvbmcgZ2V0VmVydGV4
QXR0cmliT2Zmc2V0KGluIHVuc2lnbmVkIGxvbmcgaW5kZXgsIGluIHVuc2lnbmVkIGxvbmcgcG5h
bWUpOwogCkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRleHR1cmUuY3BwCShyZXZpc2lvbiA1
MTI3OCkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzcsNiArMzcsMTEgQEAgUGFzc1JlZlB0cjxXZWJHTFRleHR1cmU+IFdlYkdMVGV4
dHVyZTo6YwogICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViR0xUZXh0dXJlKGN0eCkpOwogfQog
CitQYXNzUmVmUHRyPFdlYkdMVGV4dHVyZT4gV2ViR0xUZXh0dXJlOjpjcmVhdGUoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0KiBjdHgsIFBsYXRmb3JtM0RPYmplY3Qgb2JqKQoreworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgV2ViR0xUZXh0dXJlKGN0eCwgb2JqKSk7Cit9CisKIFdlYkdMVGV4dHVyZTo6
V2ViR0xUZXh0dXJlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY3R4KQogICAgIDogQ2FudmFzT2Jq
ZWN0KGN0eCkKICAgICAsIGN1YmVNYXBSV3JhcE1vZGVJbml0aWFsaXplZChmYWxzZSkKQEAgLTQ0
LDYgKzQ5LDEzIEBAIFdlYkdMVGV4dHVyZTo6V2ViR0xUZXh0dXJlKFdlYkdMUmVuZGVyaW4KICAg
ICBzZXRPYmplY3QoY29udGV4dCgpLT5ncmFwaGljc0NvbnRleHQzRCgpLT5jcmVhdGVUZXh0dXJl
KCkpOwogfQogCitXZWJHTFRleHR1cmU6OldlYkdMVGV4dHVyZShXZWJHTFJlbmRlcmluZ0NvbnRl
eHQqIGN0eCwgUGxhdGZvcm0zRE9iamVjdCBvYmopCisgICAgOiBDYW52YXNPYmplY3QoY3R4KQor
ICAgICwgY3ViZU1hcFJXcmFwTW9kZUluaXRpYWxpemVkKGZhbHNlKQoreworICAgIHNldE9iamVj
dChvYmosIGZhbHNlKTsKK30KKwogdm9pZCBXZWJHTFRleHR1cmU6Ol9kZWxldGVPYmplY3QoUGxh
dGZvcm0zRE9iamVjdCBvYmplY3QpCiB7CiAgICAgY29udGV4dCgpLT5ncmFwaGljc0NvbnRleHQz
RCgpLT5kZWxldGVUZXh0dXJlKG9iamVjdCk7CkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMVGV4dHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUZXh0
dXJlLmgJKHJldmlzaW9uIDUxMjc4KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRleHR1
cmUuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICAKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViR0xUZXh0dXJlPiBjcmVh
dGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0Kik7CiAgICAgCisgICAgICAgIC8vIEZvciBxdWVyeWlu
ZyBwcmV2aW91c2x5IGNyZWF0ZWQgb2JqZWN0cyB2aWEgZS5nLiBnZXRGcmFtZWJ1ZmZlckF0dGFj
aG1lbnRQYXJhbWV0ZXIKKyAgICAgICAgLy8gRklYTUU6IHNob3VsZCBjb25zaWRlciBjYW5vbmlj
YWxpemluZyB0aGVzZSBvYmplY3RzCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkdMVGV4
dHVyZT4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCosIFBsYXRmb3JtM0RPYmplY3QpOwor
CiAgICAgICAgIGJvb2wgaXNDdWJlTWFwUldyYXBNb2RlSW5pdGlhbGl6ZWQoKSB7CiAgICAgICAg
ICAgICByZXR1cm4gY3ViZU1hcFJXcmFwTW9kZUluaXRpYWxpemVkOwogICAgICAgICB9CkBAIC00
OSw2ICs1Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHByb3RlY3RlZDoKICAgICAg
ICAgV2ViR0xUZXh0dXJlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCopOworICAgICAgICBXZWJHTFRl
eHR1cmUoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiwgUGxhdGZvcm0zRE9iamVjdCk7CiAKICAgICAg
ICAgdmlydHVhbCB2b2lkIF9kZWxldGVPYmplY3QoUGxhdGZvcm0zRE9iamVjdCk7CiAKSW5kZXg6
IFdlYkNvcmUvbWFudWFsLXRlc3RzL3dlYmdsL3Jlc291cmNlcy91dGlsczNkLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvbWFudWFsLXRlc3RzL3dlYmdsL3Jlc291cmNlcy91dGlsczNkLmpzCShy
ZXZpc2lvbiA1MTI3OCkKKysrIFdlYkNvcmUvbWFudWFsLXRlc3RzL3dlYmdsL3Jlc291cmNlcy91
dGlsczNkLmpzCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIGZ1bmN0aW9uIGluaXRX
ZWJHTChjYW52YXNOYW1lLCB2c2hhZGVyLCAKICAgICBnbC5saW5rUHJvZ3JhbShnbC5wcm9ncmFt
KTsKIAogICAgIC8vIENoZWNrIHRoZSBsaW5rIHN0YXR1cwotICAgIHZhciBsaW5rZWQgPSBnbC5n
ZXRQcm9ncmFtaShnbC5wcm9ncmFtLCBnbC5MSU5LX1NUQVRVUyk7CisgICAgdmFyIGxpbmtlZCA9
IGdsLmdldFByb2dyYW1QYXJhbWV0ZXIoZ2wucHJvZ3JhbSwgZ2wuTElOS19TVEFUVVMpOwogICAg
IGlmICghbGlua2VkKSB7CiAgICAgICAgIC8vIHNvbWV0aGluZyB3ZW50IHdyb25nIHdpdGggdGhl
IGxpbmsKICAgICAgICAgdmFyIGVycm9yID0gZ2wuZ2V0UHJvZ3JhbUluZm9Mb2cgKGdsLnByb2dy
YW0pOwpAQCAtMTA1LDcgKzEwNSw3IEBAIGZ1bmN0aW9uIGxvYWRTaGFkZXIoY3R4LCBzaGFkZXJJ
ZCkKICAgICBjdHguY29tcGlsZVNoYWRlcihzaGFkZXIpOwogCiAgICAgLy8gQ2hlY2sgdGhlIGNv
bXBpbGUgc3RhdHVzCi0gICAgdmFyIGNvbXBpbGVkID0gY3R4LmdldFNoYWRlcmkoc2hhZGVyLCBj
dHguQ09NUElMRV9TVEFUVVMpOworICAgIHZhciBjb21waWxlZCA9IGN0eC5nZXRTaGFkZXJQYXJh
bWV0ZXIoc2hhZGVyLCBjdHguQ09NUElMRV9TVEFUVVMpOwogICAgIGlmICghY29tcGlsZWQpIHsK
ICAgICAgICAgLy8gU29tZXRoaW5nIHdlbnQgd3JvbmcgZHVyaW5nIGNvbXBpbGF0aW9uOyBnZXQg
dGhlIGVycm9yCiAgICAgICAgIHZhciBlcnJvciA9IGN0eC5nZXRTaGFkZXJJbmZvTG9nKHNoYWRl
cik7CkBAIC01MjgsNCArNTI4LDMgQEAgRnJhbWVyYXRlLnByb3RvdHlwZS5zbmFwc2hvdCA9IGZ1
bmN0aW9uKAogICAgICAgICB0aGlzLnJlbmRlclRpbWUgPSBuZXdUaW1lOwogICAgIH0KIH0KLQpJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAko
cmV2aXNpb24gNTEyNzgpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dDNELmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDYgKzc4LDMxMCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgcHVibGljOgogICAgICAgICBlbnVtIFNoYWRlclR5cGUgeyBGUkFHTUVOVF9T
SEFERVIsIFZFUlRFWF9TSEFERVIgfTsKICAgICAKKyAgICAgICAgZW51bSBXZWJHTEVudW1UeXBl
IHsKKyAgICAgICAgICAgIERFUFRIX0JVRkZFUl9CSVQgPSAweDAwMDAwMTAwLAorICAgICAgICAg
ICAgU1RFTkNJTF9CVUZGRVJfQklUID0gMHgwMDAwMDQwMCwKKyAgICAgICAgICAgIENPTE9SX0JV
RkZFUl9CSVQgPSAweDAwMDA0MDAwLAorICAgICAgICAgICAgUE9JTlRTID0gMHgwMDAwLAorICAg
ICAgICAgICAgTElORVMgPSAweDAwMDEsCisgICAgICAgICAgICBMSU5FX0xPT1AgPSAweDAwMDIs
CisgICAgICAgICAgICBMSU5FX1NUUklQID0gMHgwMDAzLAorICAgICAgICAgICAgVFJJQU5HTEVT
ID0gMHgwMDA0LAorICAgICAgICAgICAgVFJJQU5HTEVfU1RSSVAgPSAweDAwMDUsCisgICAgICAg
ICAgICBUUklBTkdMRV9GQU4gPSAweDAwMDYsCisgICAgICAgICAgICBaRVJPID0gMCwKKyAgICAg
ICAgICAgIE9ORSA9IDEsCisgICAgICAgICAgICBTUkNfQ09MT1IgPSAweDAzMDAsCisgICAgICAg
ICAgICBPTkVfTUlOVVNfU1JDX0NPTE9SID0gMHgwMzAxLAorICAgICAgICAgICAgU1JDX0FMUEhB
ID0gMHgwMzAyLAorICAgICAgICAgICAgT05FX01JTlVTX1NSQ19BTFBIQSA9IDB4MDMwMywKKyAg
ICAgICAgICAgIERTVF9BTFBIQSA9IDB4MDMwNCwKKyAgICAgICAgICAgIE9ORV9NSU5VU19EU1Rf
QUxQSEEgPSAweDAzMDUsCisgICAgICAgICAgICBEU1RfQ09MT1IgPSAweDAzMDYsCisgICAgICAg
ICAgICBPTkVfTUlOVVNfRFNUX0NPTE9SID0gMHgwMzA3LAorICAgICAgICAgICAgU1JDX0FMUEhB
X1NBVFVSQVRFID0gMHgwMzA4LAorICAgICAgICAgICAgRlVOQ19BREQgPSAweDgwMDYsCisgICAg
ICAgICAgICBCTEVORF9FUVVBVElPTiA9IDB4ODAwOSwKKyAgICAgICAgICAgIEJMRU5EX0VRVUFU
SU9OX1JHQiA9IDB4ODAwOSwKKyAgICAgICAgICAgIEJMRU5EX0VRVUFUSU9OX0FMUEhBID0gMHg4
ODNELAorICAgICAgICAgICAgRlVOQ19TVUJUUkFDVCA9IDB4ODAwQSwKKyAgICAgICAgICAgIEZV
TkNfUkVWRVJTRV9TVUJUUkFDVCA9IDB4ODAwQiwKKyAgICAgICAgICAgIEJMRU5EX0RTVF9SR0Ig
PSAweDgwQzgsCisgICAgICAgICAgICBCTEVORF9TUkNfUkdCID0gMHg4MEM5LAorICAgICAgICAg
ICAgQkxFTkRfRFNUX0FMUEhBID0gMHg4MENBLAorICAgICAgICAgICAgQkxFTkRfU1JDX0FMUEhB
ID0gMHg4MENCLAorICAgICAgICAgICAgQ09OU1RBTlRfQ09MT1IgPSAweDgwMDEsCisgICAgICAg
ICAgICBPTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IgPSAweDgwMDIsCisgICAgICAgICAgICBDT05T
VEFOVF9BTFBIQSA9IDB4ODAwMywKKyAgICAgICAgICAgIE9ORV9NSU5VU19DT05TVEFOVF9BTFBI
QSA9IDB4ODAwNCwKKyAgICAgICAgICAgIEJMRU5EX0NPTE9SID0gMHg4MDA1LAorICAgICAgICAg
ICAgQVJSQVlfQlVGRkVSID0gMHg4ODkyLAorICAgICAgICAgICAgRUxFTUVOVF9BUlJBWV9CVUZG
RVIgPSAweDg4OTMsCisgICAgICAgICAgICBBUlJBWV9CVUZGRVJfQklORElORyA9IDB4ODg5NCwK
KyAgICAgICAgICAgIEVMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkcgPSAweDg4OTUsCisgICAg
ICAgICAgICBTVFJFQU1fRFJBVyA9IDB4ODhFMCwKKyAgICAgICAgICAgIFNUQVRJQ19EUkFXID0g
MHg4OEU0LAorICAgICAgICAgICAgRFlOQU1JQ19EUkFXID0gMHg4OEU4LAorICAgICAgICAgICAg
QlVGRkVSX1NJWkUgPSAweDg3NjQsCisgICAgICAgICAgICBCVUZGRVJfVVNBR0UgPSAweDg3NjUs
CisgICAgICAgICAgICBDVVJSRU5UX1ZFUlRFWF9BVFRSSUIgPSAweDg2MjYsCisgICAgICAgICAg
ICBGUk9OVCA9IDB4MDQwNCwKKyAgICAgICAgICAgIEJBQ0sgPSAweDA0MDUsCisgICAgICAgICAg
ICBGUk9OVF9BTkRfQkFDSyA9IDB4MDQwOCwKKyAgICAgICAgICAgIFRFWFRVUkVfMkQgPSAweDBE
RTEsCisgICAgICAgICAgICBDVUxMX0ZBQ0UgPSAweDBCNDQsCisgICAgICAgICAgICBCTEVORCA9
IDB4MEJFMiwKKyAgICAgICAgICAgIERJVEhFUiA9IDB4MEJEMCwKKyAgICAgICAgICAgIFNURU5D
SUxfVEVTVCA9IDB4MEI5MCwKKyAgICAgICAgICAgIERFUFRIX1RFU1QgPSAweDBCNzEsCisgICAg
ICAgICAgICBTQ0lTU09SX1RFU1QgPSAweDBDMTEsCisgICAgICAgICAgICBQT0xZR09OX09GRlNF
VF9GSUxMID0gMHg4MDM3LAorICAgICAgICAgICAgU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFID0g
MHg4MDlFLAorICAgICAgICAgICAgU0FNUExFX0NPVkVSQUdFID0gMHg4MEEwLAorICAgICAgICAg
ICAgTk9fRVJST1IgPSAwLAorICAgICAgICAgICAgSU5WQUxJRF9FTlVNID0gMHgwNTAwLAorICAg
ICAgICAgICAgSU5WQUxJRF9WQUxVRSA9IDB4MDUwMSwKKyAgICAgICAgICAgIElOVkFMSURfT1BF
UkFUSU9OID0gMHgwNTAyLAorICAgICAgICAgICAgT1VUX09GX01FTU9SWSA9IDB4MDUwNSwKKyAg
ICAgICAgICAgIENXID0gMHgwOTAwLAorICAgICAgICAgICAgQ0NXID0gMHgwOTAxLAorICAgICAg
ICAgICAgTElORV9XSURUSCA9IDB4MEIyMSwKKyAgICAgICAgICAgIEFMSUFTRURfUE9JTlRfU0la
RV9SQU5HRSA9IDB4ODQ2RCwKKyAgICAgICAgICAgIEFMSUFTRURfTElORV9XSURUSF9SQU5HRSA9
IDB4ODQ2RSwKKyAgICAgICAgICAgIENVTExfRkFDRV9NT0RFID0gMHgwQjQ1LAorICAgICAgICAg
ICAgRlJPTlRfRkFDRSA9IDB4MEI0NiwKKyAgICAgICAgICAgIERFUFRIX1JBTkdFID0gMHgwQjcw
LAorICAgICAgICAgICAgREVQVEhfV1JJVEVNQVNLID0gMHgwQjcyLAorICAgICAgICAgICAgREVQ
VEhfQ0xFQVJfVkFMVUUgPSAweDBCNzMsCisgICAgICAgICAgICBERVBUSF9GVU5DID0gMHgwQjc0
LAorICAgICAgICAgICAgU1RFTkNJTF9DTEVBUl9WQUxVRSA9IDB4MEI5MSwKKyAgICAgICAgICAg
IFNURU5DSUxfRlVOQyA9IDB4MEI5MiwKKyAgICAgICAgICAgIFNURU5DSUxfRkFJTCA9IDB4MEI5
NCwKKyAgICAgICAgICAgIFNURU5DSUxfUEFTU19ERVBUSF9GQUlMID0gMHgwQjk1LAorICAgICAg
ICAgICAgU1RFTkNJTF9QQVNTX0RFUFRIX1BBU1MgPSAweDBCOTYsCisgICAgICAgICAgICBTVEVO
Q0lMX1JFRiA9IDB4MEI5NywKKyAgICAgICAgICAgIFNURU5DSUxfVkFMVUVfTUFTSyA9IDB4MEI5
MywKKyAgICAgICAgICAgIFNURU5DSUxfV1JJVEVNQVNLID0gMHgwQjk4LAorICAgICAgICAgICAg
U1RFTkNJTF9CQUNLX0ZVTkMgPSAweDg4MDAsCisgICAgICAgICAgICBTVEVOQ0lMX0JBQ0tfRkFJ
TCA9IDB4ODgwMSwKKyAgICAgICAgICAgIFNURU5DSUxfQkFDS19QQVNTX0RFUFRIX0ZBSUwgPSAw
eDg4MDIsCisgICAgICAgICAgICBTVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9QQVNTID0gMHg4ODAz
LAorICAgICAgICAgICAgU1RFTkNJTF9CQUNLX1JFRiA9IDB4OENBMywKKyAgICAgICAgICAgIFNU
RU5DSUxfQkFDS19WQUxVRV9NQVNLID0gMHg4Q0E0LAorICAgICAgICAgICAgU1RFTkNJTF9CQUNL
X1dSSVRFTUFTSyA9IDB4OENBNSwKKyAgICAgICAgICAgIFZJRVdQT1JUID0gMHgwQkEyLAorICAg
ICAgICAgICAgU0NJU1NPUl9CT1ggPSAweDBDMTAsCisgICAgICAgICAgICBDT0xPUl9DTEVBUl9W
QUxVRSA9IDB4MEMyMiwKKyAgICAgICAgICAgIENPTE9SX1dSSVRFTUFTSyA9IDB4MEMyMywKKyAg
ICAgICAgICAgIFVOUEFDS19BTElHTk1FTlQgPSAweDBDRjUsCisgICAgICAgICAgICBQQUNLX0FM
SUdOTUVOVCA9IDB4MEQwNSwKKyAgICAgICAgICAgIE1BWF9URVhUVVJFX1NJWkUgPSAweDBEMzMs
CisgICAgICAgICAgICBNQVhfVklFV1BPUlRfRElNUyA9IDB4MEQzQSwKKyAgICAgICAgICAgIFNV
QlBJWEVMX0JJVFMgPSAweDBENTAsCisgICAgICAgICAgICBSRURfQklUUyA9IDB4MEQ1MiwKKyAg
ICAgICAgICAgIEdSRUVOX0JJVFMgPSAweDBENTMsCisgICAgICAgICAgICBCTFVFX0JJVFMgPSAw
eDBENTQsCisgICAgICAgICAgICBBTFBIQV9CSVRTID0gMHgwRDU1LAorICAgICAgICAgICAgREVQ
VEhfQklUUyA9IDB4MEQ1NiwKKyAgICAgICAgICAgIFNURU5DSUxfQklUUyA9IDB4MEQ1NywKKyAg
ICAgICAgICAgIFBPTFlHT05fT0ZGU0VUX1VOSVRTID0gMHgyQTAwLAorICAgICAgICAgICAgUE9M
WUdPTl9PRkZTRVRfRkFDVE9SID0gMHg4MDM4LAorICAgICAgICAgICAgVEVYVFVSRV9CSU5ESU5H
XzJEID0gMHg4MDY5LAorICAgICAgICAgICAgU0FNUExFX0JVRkZFUlMgPSAweDgwQTgsCisgICAg
ICAgICAgICBTQU1QTEVTID0gMHg4MEE5LAorICAgICAgICAgICAgU0FNUExFX0NPVkVSQUdFX1ZB
TFVFID0gMHg4MEFBLAorICAgICAgICAgICAgU0FNUExFX0NPVkVSQUdFX0lOVkVSVCA9IDB4ODBB
QiwKKyAgICAgICAgICAgIE5VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUyA9IDB4ODZBMiwK
KyAgICAgICAgICAgIENPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTID0gMHg4NkEzLAorICAgICAg
ICAgICAgRE9OVF9DQVJFID0gMHgxMTAwLAorICAgICAgICAgICAgRkFTVEVTVCA9IDB4MTEwMSwK
KyAgICAgICAgICAgIE5JQ0VTVCA9IDB4MTEwMiwKKyAgICAgICAgICAgIEdFTkVSQVRFX01JUE1B
UF9ISU5UID0gMHg4MTkyLAorICAgICAgICAgICAgQllURSA9IDB4MTQwMCwKKyAgICAgICAgICAg
IFVOU0lHTkVEX0JZVEUgPSAweDE0MDEsCisgICAgICAgICAgICBTSE9SVCA9IDB4MTQwMiwKKyAg
ICAgICAgICAgIFVOU0lHTkVEX1NIT1JUID0gMHgxNDAzLAorICAgICAgICAgICAgSU5UID0gMHgx
NDA0LAorICAgICAgICAgICAgVU5TSUdORURfSU5UID0gMHgxNDA1LAorICAgICAgICAgICAgRkxP
QVQgPSAweDE0MDYsCisgICAgICAgICAgICBGSVhFRCA9IDB4MTQwQywKKyAgICAgICAgICAgIERF
UFRIX0NPTVBPTkVOVCA9IDB4MTkwMiwKKyAgICAgICAgICAgIEFMUEhBID0gMHgxOTA2LAorICAg
ICAgICAgICAgUkdCID0gMHgxOTA3LAorICAgICAgICAgICAgUkdCQSA9IDB4MTkwOCwKKyAgICAg
ICAgICAgIExVTUlOQU5DRSA9IDB4MTkwOSwKKyAgICAgICAgICAgIExVTUlOQU5DRV9BTFBIQSA9
IDB4MTkwQSwKKyAgICAgICAgICAgIFVOU0lHTkVEX1NIT1JUXzRfNF80XzQgPSAweDgwMzMsCisg
ICAgICAgICAgICBVTlNJR05FRF9TSE9SVF81XzVfNV8xID0gMHg4MDM0LAorICAgICAgICAgICAg
VU5TSUdORURfU0hPUlRfNV82XzUgPSAweDgzNjMsCisgICAgICAgICAgICAvLyBGSVhNRTogdW5j
b21tZW50IHdoZW4gU2hhZGVyVHlwZSBlbnVtIGlzIHJlbW92ZWQKKyAgICAgICAgICAgIC8vIEZS
QUdNRU5UX1NIQURFUiA9IDB4OEIzMCwKKyAgICAgICAgICAgIC8vIFZFUlRFWF9TSEFERVIgPSAw
eDhCMzEsCisgICAgICAgICAgICBNQVhfVkVSVEVYX0FUVFJJQlMgPSAweDg4NjksCisgICAgICAg
ICAgICBNQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUyA9IDB4OERGQiwKKyAgICAgICAgICAgIE1B
WF9WQVJZSU5HX1ZFQ1RPUlMgPSAweDhERkMsCisgICAgICAgICAgICBNQVhfQ09NQklORURfVEVY
VFVSRV9JTUFHRV9VTklUUyA9IDB4OEI0RCwKKyAgICAgICAgICAgIE1BWF9WRVJURVhfVEVYVFVS
RV9JTUFHRV9VTklUUyA9IDB4OEI0QywKKyAgICAgICAgICAgIE1BWF9URVhUVVJFX0lNQUdFX1VO
SVRTID0gMHg4ODcyLAorICAgICAgICAgICAgTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUyA9
IDB4OERGRCwKKyAgICAgICAgICAgIFNIQURFUl9UWVBFID0gMHg4QjRGLAorICAgICAgICAgICAg
REVMRVRFX1NUQVRVUyA9IDB4OEI4MCwKKyAgICAgICAgICAgIExJTktfU1RBVFVTID0gMHg4Qjgy
LAorICAgICAgICAgICAgVkFMSURBVEVfU1RBVFVTID0gMHg4QjgzLAorICAgICAgICAgICAgQVRU
QUNIRURfU0hBREVSUyA9IDB4OEI4NSwKKyAgICAgICAgICAgIEFDVElWRV9VTklGT1JNUyA9IDB4
OEI4NiwKKyAgICAgICAgICAgIEFDVElWRV9VTklGT1JNX01BWF9MRU5HVEggPSAweDhCODcsCisg
ICAgICAgICAgICBBQ1RJVkVfQVRUUklCVVRFUyA9IDB4OEI4OSwKKyAgICAgICAgICAgIEFDVElW
RV9BVFRSSUJVVEVfTUFYX0xFTkdUSCA9IDB4OEI4QSwKKyAgICAgICAgICAgIFNIQURJTkdfTEFO
R1VBR0VfVkVSU0lPTiA9IDB4OEI4QywKKyAgICAgICAgICAgIENVUlJFTlRfUFJPR1JBTSA9IDB4
OEI4RCwKKyAgICAgICAgICAgIE5FVkVSID0gMHgwMjAwLAorICAgICAgICAgICAgTEVTUyA9IDB4
MDIwMSwKKyAgICAgICAgICAgIEVRVUFMID0gMHgwMjAyLAorICAgICAgICAgICAgTEVRVUFMID0g
MHgwMjAzLAorICAgICAgICAgICAgR1JFQVRFUiA9IDB4MDIwNCwKKyAgICAgICAgICAgIE5PVEVR
VUFMID0gMHgwMjA1LAorICAgICAgICAgICAgR0VRVUFMID0gMHgwMjA2LAorICAgICAgICAgICAg
QUxXQVlTID0gMHgwMjA3LAorICAgICAgICAgICAgS0VFUCA9IDB4MUUwMCwKKyAgICAgICAgICAg
IFJFUExBQ0UgPSAweDFFMDEsCisgICAgICAgICAgICBJTkNSID0gMHgxRTAyLAorICAgICAgICAg
ICAgREVDUiA9IDB4MUUwMywKKyAgICAgICAgICAgIElOVkVSVCA9IDB4MTUwQSwKKyAgICAgICAg
ICAgIElOQ1JfV1JBUCA9IDB4ODUwNywKKyAgICAgICAgICAgIERFQ1JfV1JBUCA9IDB4ODUwOCwK
KyAgICAgICAgICAgIFZFTkRPUiA9IDB4MUYwMCwKKyAgICAgICAgICAgIFJFTkRFUkVSID0gMHgx
RjAxLAorICAgICAgICAgICAgVkVSU0lPTiA9IDB4MUYwMiwKKyAgICAgICAgICAgIEVYVEVOU0lP
TlMgPSAweDFGMDMsCisgICAgICAgICAgICBORUFSRVNUID0gMHgyNjAwLAorICAgICAgICAgICAg
TElORUFSID0gMHgyNjAxLAorICAgICAgICAgICAgTkVBUkVTVF9NSVBNQVBfTkVBUkVTVCA9IDB4
MjcwMCwKKyAgICAgICAgICAgIExJTkVBUl9NSVBNQVBfTkVBUkVTVCA9IDB4MjcwMSwKKyAgICAg
ICAgICAgIE5FQVJFU1RfTUlQTUFQX0xJTkVBUiA9IDB4MjcwMiwKKyAgICAgICAgICAgIExJTkVB
Ul9NSVBNQVBfTElORUFSID0gMHgyNzAzLAorICAgICAgICAgICAgVEVYVFVSRV9NQUdfRklMVEVS
ID0gMHgyODAwLAorICAgICAgICAgICAgVEVYVFVSRV9NSU5fRklMVEVSID0gMHgyODAxLAorICAg
ICAgICAgICAgVEVYVFVSRV9XUkFQX1MgPSAweDI4MDIsCisgICAgICAgICAgICBURVhUVVJFX1dS
QVBfVCA9IDB4MjgwMywKKyAgICAgICAgICAgIFRFWFRVUkUgPSAweDE3MDIsCisgICAgICAgICAg
ICBURVhUVVJFX0NVQkVfTUFQID0gMHg4NTEzLAorICAgICAgICAgICAgVEVYVFVSRV9CSU5ESU5H
X0NVQkVfTUFQID0gMHg4NTE0LAorICAgICAgICAgICAgVEVYVFVSRV9DVUJFX01BUF9QT1NJVElW
RV9YID0gMHg4NTE1LAorICAgICAgICAgICAgVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YID0g
MHg4NTE2LAorICAgICAgICAgICAgVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZID0gMHg4NTE3
LAorICAgICAgICAgICAgVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZID0gMHg4NTE4LAorICAg
ICAgICAgICAgVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aID0gMHg4NTE5LAorICAgICAgICAg
ICAgVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aID0gMHg4NTFBLAorICAgICAgICAgICAgTUFY
X0NVQkVfTUFQX1RFWFRVUkVfU0laRSA9IDB4ODUxQywKKyAgICAgICAgICAgIFRFWFRVUkUwID0g
MHg4NEMwLAorICAgICAgICAgICAgVEVYVFVSRTEgPSAweDg0QzEsCisgICAgICAgICAgICBURVhU
VVJFMiA9IDB4ODRDMiwKKyAgICAgICAgICAgIFRFWFRVUkUzID0gMHg4NEMzLAorICAgICAgICAg
ICAgVEVYVFVSRTQgPSAweDg0QzQsCisgICAgICAgICAgICBURVhUVVJFNSA9IDB4ODRDNSwKKyAg
ICAgICAgICAgIFRFWFRVUkU2ID0gMHg4NEM2LAorICAgICAgICAgICAgVEVYVFVSRTcgPSAweDg0
QzcsCisgICAgICAgICAgICBURVhUVVJFOCA9IDB4ODRDOCwKKyAgICAgICAgICAgIFRFWFRVUkU5
ID0gMHg4NEM5LAorICAgICAgICAgICAgVEVYVFVSRTEwID0gMHg4NENBLAorICAgICAgICAgICAg
VEVYVFVSRTExID0gMHg4NENCLAorICAgICAgICAgICAgVEVYVFVSRTEyID0gMHg4NENDLAorICAg
ICAgICAgICAgVEVYVFVSRTEzID0gMHg4NENELAorICAgICAgICAgICAgVEVYVFVSRTE0ID0gMHg4
NENFLAorICAgICAgICAgICAgVEVYVFVSRTE1ID0gMHg4NENGLAorICAgICAgICAgICAgVEVYVFVS
RTE2ID0gMHg4NEQwLAorICAgICAgICAgICAgVEVYVFVSRTE3ID0gMHg4NEQxLAorICAgICAgICAg
ICAgVEVYVFVSRTE4ID0gMHg4NEQyLAorICAgICAgICAgICAgVEVYVFVSRTE5ID0gMHg4NEQzLAor
ICAgICAgICAgICAgVEVYVFVSRTIwID0gMHg4NEQ0LAorICAgICAgICAgICAgVEVYVFVSRTIxID0g
MHg4NEQ1LAorICAgICAgICAgICAgVEVYVFVSRTIyID0gMHg4NEQ2LAorICAgICAgICAgICAgVEVY
VFVSRTIzID0gMHg4NEQ3LAorICAgICAgICAgICAgVEVYVFVSRTI0ID0gMHg4NEQ4LAorICAgICAg
ICAgICAgVEVYVFVSRTI1ID0gMHg4NEQ5LAorICAgICAgICAgICAgVEVYVFVSRTI2ID0gMHg4NERB
LAorICAgICAgICAgICAgVEVYVFVSRTI3ID0gMHg4NERCLAorICAgICAgICAgICAgVEVYVFVSRTI4
ID0gMHg4NERDLAorICAgICAgICAgICAgVEVYVFVSRTI5ID0gMHg4NERELAorICAgICAgICAgICAg
VEVYVFVSRTMwID0gMHg4NERFLAorICAgICAgICAgICAgVEVYVFVSRTMxID0gMHg4NERGLAorICAg
ICAgICAgICAgQUNUSVZFX1RFWFRVUkUgPSAweDg0RTAsCisgICAgICAgICAgICBSRVBFQVQgPSAw
eDI5MDEsCisgICAgICAgICAgICBDTEFNUF9UT19FREdFID0gMHg4MTJGLAorICAgICAgICAgICAg
TUlSUk9SRURfUkVQRUFUID0gMHg4MzcwLAorICAgICAgICAgICAgRkxPQVRfVkVDMiA9IDB4OEI1
MCwKKyAgICAgICAgICAgIEZMT0FUX1ZFQzMgPSAweDhCNTEsCisgICAgICAgICAgICBGTE9BVF9W
RUM0ID0gMHg4QjUyLAorICAgICAgICAgICAgSU5UX1ZFQzIgPSAweDhCNTMsCisgICAgICAgICAg
ICBJTlRfVkVDMyA9IDB4OEI1NCwKKyAgICAgICAgICAgIElOVF9WRUM0ID0gMHg4QjU1LAorICAg
ICAgICAgICAgQk9PTCA9IDB4OEI1NiwKKyAgICAgICAgICAgIEJPT0xfVkVDMiA9IDB4OEI1NywK
KyAgICAgICAgICAgIEJPT0xfVkVDMyA9IDB4OEI1OCwKKyAgICAgICAgICAgIEJPT0xfVkVDNCA9
IDB4OEI1OSwKKyAgICAgICAgICAgIEZMT0FUX01BVDIgPSAweDhCNUEsCisgICAgICAgICAgICBG
TE9BVF9NQVQzID0gMHg4QjVCLAorICAgICAgICAgICAgRkxPQVRfTUFUNCA9IDB4OEI1QywKKyAg
ICAgICAgICAgIFNBTVBMRVJfMkQgPSAweDhCNUUsCisgICAgICAgICAgICBTQU1QTEVSX0NVQkUg
PSAweDhCNjAsCisgICAgICAgICAgICBWRVJURVhfQVRUUklCX0FSUkFZX0VOQUJMRUQgPSAweDg2
MjIsCisgICAgICAgICAgICBWRVJURVhfQVRUUklCX0FSUkFZX1NJWkUgPSAweDg2MjMsCisgICAg
ICAgICAgICBWRVJURVhfQVRUUklCX0FSUkFZX1NUUklERSA9IDB4ODYyNCwKKyAgICAgICAgICAg
IFZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRSA9IDB4ODYyNSwKKyAgICAgICAgICAgIFZFUlRFWF9B
VFRSSUJfQVJSQVlfTk9STUFMSVpFRCA9IDB4ODg2QSwKKyAgICAgICAgICAgIFZFUlRFWF9BVFRS
SUJfQVJSQVlfUE9JTlRFUiA9IDB4ODY0NSwKKyAgICAgICAgICAgIFZFUlRFWF9BVFRSSUJfQVJS
QVlfQlVGRkVSX0JJTkRJTkcgPSAweDg4OUYsCisgICAgICAgICAgICBJTVBMRU1FTlRBVElPTl9D
T0xPUl9SRUFEX1RZUEUgPSAweDhCOUEsCisgICAgICAgICAgICBJTVBMRU1FTlRBVElPTl9DT0xP
Ul9SRUFEX0ZPUk1BVCA9IDB4OEI5QiwKKyAgICAgICAgICAgIENPTVBJTEVfU1RBVFVTID0gMHg4
QjgxLAorICAgICAgICAgICAgSU5GT19MT0dfTEVOR1RIID0gMHg4Qjg0LAorICAgICAgICAgICAg
U0hBREVSX1NPVVJDRV9MRU5HVEggPSAweDhCODgsCisgICAgICAgICAgICBTSEFERVJfQ09NUElM
RVIgPSAweDhERkEsCisgICAgICAgICAgICBTSEFERVJfQklOQVJZX0ZPUk1BVFMgPSAweDhERjgs
CisgICAgICAgICAgICBOVU1fU0hBREVSX0JJTkFSWV9GT1JNQVRTID0gMHg4REY5LAorICAgICAg
ICAgICAgTE9XX0ZMT0FUID0gMHg4REYwLAorICAgICAgICAgICAgTUVESVVNX0ZMT0FUID0gMHg4
REYxLAorICAgICAgICAgICAgSElHSF9GTE9BVCA9IDB4OERGMiwKKyAgICAgICAgICAgIExPV19J
TlQgPSAweDhERjMsCisgICAgICAgICAgICBNRURJVU1fSU5UID0gMHg4REY0LAorICAgICAgICAg
ICAgSElHSF9JTlQgPSAweDhERjUsCisgICAgICAgICAgICBGUkFNRUJVRkZFUiA9IDB4OEQ0MCwK
KyAgICAgICAgICAgIFJFTkRFUkJVRkZFUiA9IDB4OEQ0MSwKKyAgICAgICAgICAgIFJHQkE0ID0g
MHg4MDU2LAorICAgICAgICAgICAgUkdCNV9BMSA9IDB4ODA1NywKKyAgICAgICAgICAgIFJHQjU2
NSA9IDB4OEQ2MiwKKyAgICAgICAgICAgIERFUFRIX0NPTVBPTkVOVDE2ID0gMHg4MUE1LAorICAg
ICAgICAgICAgU1RFTkNJTF9JTkRFWCA9IDB4MTkwMSwKKyAgICAgICAgICAgIFNURU5DSUxfSU5E
RVg4ID0gMHg4RDQ4LAorICAgICAgICAgICAgUkVOREVSQlVGRkVSX1dJRFRIID0gMHg4RDQyLAor
ICAgICAgICAgICAgUkVOREVSQlVGRkVSX0hFSUdIVCA9IDB4OEQ0MywKKyAgICAgICAgICAgIFJF
TkRFUkJVRkZFUl9JTlRFUk5BTF9GT1JNQVQgPSAweDhENDQsCisgICAgICAgICAgICBSRU5ERVJC
VUZGRVJfUkVEX1NJWkUgPSAweDhENTAsCisgICAgICAgICAgICBSRU5ERVJCVUZGRVJfR1JFRU5f
U0laRSA9IDB4OEQ1MSwKKyAgICAgICAgICAgIFJFTkRFUkJVRkZFUl9CTFVFX1NJWkUgPSAweDhE
NTIsCisgICAgICAgICAgICBSRU5ERVJCVUZGRVJfQUxQSEFfU0laRSA9IDB4OEQ1MywKKyAgICAg
ICAgICAgIFJFTkRFUkJVRkZFUl9ERVBUSF9TSVpFID0gMHg4RDU0LAorICAgICAgICAgICAgUkVO
REVSQlVGRkVSX1NURU5DSUxfU0laRSA9IDB4OEQ1NSwKKyAgICAgICAgICAgIEZSQU1FQlVGRkVS
X0FUVEFDSE1FTlRfT0JKRUNUX1RZUEUgPSAweDhDRDAsCisgICAgICAgICAgICBGUkFNRUJVRkZF
Ul9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FID0gMHg4Q0QxLAorICAgICAgICAgICAgRlJBTUVCVUZG
RVJfQVRUQUNITUVOVF9URVhUVVJFX0xFVkVMID0gMHg4Q0QyLAorICAgICAgICAgICAgRlJBTUVC
VUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0UgPSAweDhDRDMsCisgICAgICAg
ICAgICBDT0xPUl9BVFRBQ0hNRU5UMCA9IDB4OENFMCwKKyAgICAgICAgICAgIERFUFRIX0FUVEFD
SE1FTlQgPSAweDhEMDAsCisgICAgICAgICAgICBTVEVOQ0lMX0FUVEFDSE1FTlQgPSAweDhEMjAs
CisgICAgICAgICAgICBOT05FID0gMCwKKyAgICAgICAgICAgIEZSQU1FQlVGRkVSX0NPTVBMRVRF
ID0gMHg4Q0Q1LAorICAgICAgICAgICAgRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5U
ID0gMHg4Q0Q2LAorICAgICAgICAgICAgRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NSVNTSU5HX0FU
VEFDSE1FTlQgPSAweDhDRDcsCisgICAgICAgICAgICBGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0RJ
TUVOU0lPTlMgPSAweDhDRDksCisgICAgICAgICAgICBGUkFNRUJVRkZFUl9VTlNVUFBPUlRFRCA9
IDB4OENERCwKKyAgICAgICAgICAgIEZSQU1FQlVGRkVSX0JJTkRJTkcgPSAweDhDQTYsCisgICAg
ICAgICAgICBSRU5ERVJCVUZGRVJfQklORElORyA9IDB4OENBNywKKyAgICAgICAgICAgIE1BWF9S
RU5ERVJCVUZGRVJfU0laRSA9IDB4ODRFOCwKKyAgICAgICAgICAgIElOVkFMSURfRlJBTUVCVUZG
RVJfT1BFUkFUSU9OID0gMHgwNTA2CisgICAgICAgIH07CisKICAgICAgICAgc3RhdGljIFBhc3NP
d25QdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0ZSgpOwogICAgICAgICB2aXJ0dWFsIH5HcmFw
aGljc0NvbnRleHQzRCgpOwogCkBAIC0xNTIsMjYgKzQ1NiwyNSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICAgICAgaW50ICBnZXRBdHRyaWJMb2NhdGlvbihXZWJHTFByb2dyYW0qLCBjb25z
dCBTdHJpbmcmIG5hbWUpOwogCi0gICAgICAgIGJvb2wgZ2V0Qm9vbGVhbih1bnNpZ25lZCBsb25n
IHBuYW1lKTsKLSAgICAgICAgUGFzc1JlZlB0cjxXZWJHTFVuc2lnbmVkQnl0ZUFycmF5PiBnZXRC
b29sZWFudih1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgaW50IGdldEJ1ZmZlclBhcmFt
ZXRlcmkodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAg
ICBQYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IGdldEJ1ZmZlclBhcmFtZXRlcml2KHVuc2lnbmVk
IGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKTsKKyAgICAgICAgdm9pZCBnZXRCb29s
ZWFudih1bnNpZ25lZCBsb25nIHBuYW1lLCB1bnNpZ25lZCBjaGFyKiB2YWx1ZSk7CisKKyAgICAg
ICAgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWdu
ZWQgbG9uZyBwbmFtZSwgaW50KiB2YWx1ZSk7CiAKICAgICAgICAgdW5zaWduZWQgbG9uZyBnZXRF
cnJvcigpOwogCi0gICAgICAgIGZsb2F0IGdldEZsb2F0KHVuc2lnbmVkIGxvbmcgcG5hbWUpOwot
ICAgICAgICBQYXNzUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gZ2V0RmxvYXR2KHVuc2lnbmVkIGxv
bmcgcG5hbWUpOwotICAgICAgICBpbnQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
aSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCB1bnNpZ25l
ZCBsb25nIHBuYW1lKTsKLSAgICAgICAgUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBnZXRGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWdu
ZWQgbG9uZyBhdHRhY2htZW50LCB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgaW50IGdl
dEludGVnZXIodW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFBhc3NSZWZQdHI8V2ViR0xJ
bnRBcnJheT4gZ2V0SW50ZWdlcnYodW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIGludCBn
ZXRQcm9ncmFtaShXZWJHTFByb2dyYW0qLCB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAg
UGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBnZXRQcm9ncmFtaXYoV2ViR0xQcm9ncmFtKiwgdW5z
aWduZWQgbG9uZyBwbmFtZSk7CisgICAgICAgIHZvaWQgZ2V0RmxvYXR2KHVuc2lnbmVkIGxvbmcg
cG5hbWUsIGZsb2F0KiB2YWx1ZSk7CisKKyAgICAgICAgdm9pZCBnZXRGcmFtZWJ1ZmZlckF0dGFj
aG1lbnRQYXJhbWV0ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBhdHRh
Y2htZW50LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKTsKKworICAgICAgICB2b2lk
IGdldEludGVnZXJ2KHVuc2lnbmVkIGxvbmcgcG5hbWUsIGludCogdmFsdWUpOworCisgICAgICAg
IHZvaWQgZ2V0UHJvZ3JhbWl2KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgdW5zaWduZWQgbG9uZyBw
bmFtZSwgaW50KiB2YWx1ZSk7CisKICAgICAgICAgU3RyaW5nIGdldFByb2dyYW1JbmZvTG9nKFdl
YkdMUHJvZ3JhbSopOwotICAgICAgICBpbnQgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSh1bnNp
Z25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFBhc3NSZWZQ
dHI8V2ViR0xJbnRBcnJheT4gZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYodW5zaWduZWQgbG9u
ZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBpbnQgZ2V0U2hhZGVyaShX
ZWJHTFNoYWRlciosIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBQYXNzUmVmUHRyPFdl
YkdMSW50QXJyYXk+IGdldFNoYWRlcml2KFdlYkdMU2hhZGVyKiwgdW5zaWduZWQgbG9uZyBwbmFt
ZSk7CisKKyAgICAgICAgdm9pZCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdih1bnNpZ25lZCBs
b25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgaW50KiB2YWx1ZSk7CisKKyAgICAgICAg
dm9pZCBnZXRTaGFkZXJpdihXZWJHTFNoYWRlciosIHVuc2lnbmVkIGxvbmcgcG5hbWUsIGludCog
dmFsdWUpOwogCiAgICAgICAgIFN0cmluZyBnZXRTaGFkZXJJbmZvTG9nKFdlYkdMU2hhZGVyKik7
CiAKQEAgLTE4MCwyNCArNDgzLDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBT
dHJpbmcgZ2V0U2hhZGVyU291cmNlKFdlYkdMU2hhZGVyKik7CiAgICAgICAgIFN0cmluZyBnZXRT
dHJpbmcodW5zaWduZWQgbG9uZyBuYW1lKTsKLSAgICAgICAgCi0gICAgICAgIGZsb2F0IGdldFRl
eFBhcmFtZXRlcmYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwot
ICAgICAgICBQYXNzUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gZ2V0VGV4UGFyYW1ldGVyZnYodW5z
aWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBpbnQgZ2V0
VGV4UGFyYW1ldGVyaSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSk7
Ci0gICAgICAgIFBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gZ2V0VGV4UGFyYW1ldGVyaXYodW5z
aWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotCi0gICAgICAgIGZsb2F0
IGdldFVuaWZvcm1mKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBsb2NhdGlvbik7Ci0gICAg
ICAgIFBhc3NSZWZQdHI8V2ViR0xGbG9hdEFycmF5PiBnZXRVbmlmb3JtZnYoV2ViR0xQcm9ncmFt
KiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uKTsKLSAgICAgICAgaW50IGdldFVuaWZvcm1pKFdlYkdM
UHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBsb2NhdGlvbik7Ci0gICAgICAgIFBhc3NSZWZQdHI8V2Vi
R0xJbnRBcnJheT4gZ2V0VW5pZm9ybWl2KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBsb2Nh
dGlvbik7CisKKyAgICAgICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJmdih1bnNpZ25lZCBsb25nIHRh
cmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgZmxvYXQqIHZhbHVlKTsKKyAgICAgICAgdm9pZCBn
ZXRUZXhQYXJhbWV0ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFt
ZSwgaW50KiB2YWx1ZSk7CisKKyAgICAgICAgdm9pZCBnZXRVbmlmb3JtZnYoV2ViR0xQcm9ncmFt
KiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uLCBmbG9hdCogdmFsdWUpOworICAgICAgICB2b2lkIGdl
dFVuaWZvcm1pdihXZWJHTFByb2dyYW0qIHByb2dyYW0sIGxvbmcgbG9jYXRpb24sIGludCogdmFs
dWUpOwogCiAgICAgICAgIGxvbmcgZ2V0VW5pZm9ybUxvY2F0aW9uKFdlYkdMUHJvZ3JhbSosIGNv
bnN0IFN0cmluZyYgbmFtZSk7CiAKLSAgICAgICAgZmxvYXQgZ2V0VmVydGV4QXR0cmliZih1bnNp
Z25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgUGFzc1JlZlB0
cjxXZWJHTEZsb2F0QXJyYXk+IGdldFZlcnRleEF0dHJpYmZ2KHVuc2lnbmVkIGxvbmcgaW5kZXgs
IHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBpbnQgZ2V0VmVydGV4QXR0cmliaSh1bnNp
Z25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgUGFzc1JlZlB0
cjxXZWJHTEludEFycmF5PiBnZXRWZXJ0ZXhBdHRyaWJpdih1bnNpZ25lZCBsb25nIGluZGV4LCB1
bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgCisgICAgICAgIHZvaWQgZ2V0VmVydGV4QXR0
cmliZnYodW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgZmxvYXQqIHZh
bHVlKTsKKyAgICAgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJpdih1bnNpZ25lZCBsb25nIGluZGV4
LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKTsKKwogICAgICAgICBsb25nIGdldFZl
cnRleEF0dHJpYk9mZnNldCh1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBuYW1l
KTsKIAogICAgICAgICB2b2lkIGhpbnQodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxv
bmcgbW9kZSk7CkBAIC0zMzcsNCArNjM0LDMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gR3JhcGhpY3NDb250ZXh0M0RfaAotCkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250
ZXh0M0RNYWMuY3BwCShyZXZpc2lvbiA1MTI3OCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc3LDcg
KzI3Nyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRGcmFtZWJ1ZmZlcigKIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRSZW5kZXJidWZmZXIodW5zaWduZWQgbG9uZyB0YXJnZXQs
IFdlYkdMUmVuZGVyYnVmZmVyKiByZW5kZXJidWZmZXIpCiB7CiAgICAgZW5zdXJlQ29udGV4dCht
X2NvbnRleHRPYmopOwotICAgIDo6Z2xCaW5kQnVmZmVyKHRhcmdldCwgcmVuZGVyYnVmZmVyID8g
KEdMdWludCkgcmVuZGVyYnVmZmVyLT5vYmplY3QoKSA6IDApOworICAgIDo6Z2xCaW5kUmVuZGVy
YnVmZmVyRVhUKHRhcmdldCwgcmVuZGVyYnVmZmVyID8gKEdMdWludCkgcmVuZGVyYnVmZmVyLT5v
YmplY3QoKSA6IDApOwogfQogCiAKQEAgLTk1MiwzMjEgKzk1Miw0MCBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjp2aWV3cG9ydChsb25nIHgsCiAgICAgOjpnbFZpZXdwb3J0KHN0YXRpY19jYXN0
PEdMaW50Pih4KSwgc3RhdGljX2Nhc3Q8R0xpbnQ+KHkpLCBzdGF0aWNfY2FzdDxHTHNpemVpPih3
aWR0aCksIHN0YXRpY19jYXN0PEdMc2l6ZWk+KGhlaWdodCkpOwogfQogCi1zdGF0aWMgaW50IHNp
emVGb3JHZXRQYXJhbSh1bnNpZ25lZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6Z2V0Qm9vbGVhbnYodW5zaWduZWQgbG9uZyBwbmFtZSwgdW5zaWduZWQgY2hhciogdmFsdWUp
CiB7Ci0gICAgc3dpdGNoKHBuYW1lKSB7Ci0gICAgICAgIGNhc2UgR0xfQUNUSVZFX1RFWFRVUkU6
ICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfQUxJQVNFRF9MSU5F
X1dJRFRIX1JBTkdFOiAgICAgICAgcmV0dXJuIDI7Ci0gICAgICAgIGNhc2UgR0xfQUxJQVNFRF9Q
T0lOVF9TSVpFX1JBTkdFOiAgICAgICAgcmV0dXJuIDI7Ci0gICAgICAgIGNhc2UgR0xfQUxQSEFf
QklUUzogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfQVJS
QVlfQlVGRkVSX0JJTkRJTkc6ICAgICAgICAgICAgcmV0dXJuIDE7IC8vICgqIGFjdHVhbGx5IGEg
V2ViR0xCdWZmZXIqKQotICAgICAgICBjYXNlIEdMX0JMRU5EOiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX0JMRU5EX0NPTE9SOiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiA0OwotICAgICAgICBjYXNlIEdMX0JMRU5EX0RTVF9BTFBIQTogICAg
ICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX0JMRU5EX0RTVF9SR0I6ICAg
ICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX0JMRU5EX0VRVUFUSU9O
X0FMUEhBOiAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX0JMRU5EX0VRVUFU
SU9OX1JHQjogICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX0JMRU5EX1NS
Q19BTFBIQTogICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX0JMRU5E
X1NSQ19SR0I6ICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX0JM
VUVfQklUUzogICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdM
X0NPTE9SX0NMRUFSX1ZBTFVFOiAgICAgICAgICAgICAgIHJldHVybiA0OwotICAgICAgICBjYXNl
IEdMX0NPTE9SX1dSSVRFTUFTSzogICAgICAgICAgICAgICAgIHJldHVybiA0OwotICAgICAgICBj
YXNlIEdMX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTOiAgICAgIHJldHVybiBHTF9OVU1fQ09N
UFJFU1NFRF9URVhUVVJFX0ZPUk1BVFM7Ci0gICAgICAgIGNhc2UgR0xfQ1VMTF9GQUNFOiAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfQ1VMTF9GQUNFX01P
REU6ICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfQ1VSUkVOVF9Q
Uk9HUkFNOiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7IC8vICgqIGFjdHVhbGx5IGEgV2ViR0xQ
cm9ncmFtKikKLSAgICAgICAgY2FzZSBHTF9ERVBUSF9CSVRTOiAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9ERVBUSF9DTEVBUl9WQUxVRTogICAgICAgICAg
ICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9ERVBUSF9GVU5DOiAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9ERVBUSF9SQU5HRTogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gMjsKLSAgICAgICAgY2FzZSBHTF9ERVBUSF9URVNUOiAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9ERVBUSF9XUklURU1BU0s6
ICAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9ESVRIRVI6ICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9FTEVNRU5UX0FS
UkFZX0JVRkZFUl9CSU5ESU5HOiAgICByZXR1cm4gMTsgLy8gKCogYWN0dWFsbHkgYSBXZWJHTEJ1
ZmZlciopCi0gICAgICAgIGNhc2UgR0xfRlJBTUVCVUZGRVJfQklORElOR19FWFQ6ICAgICAgICAg
cmV0dXJuIDE7IC8vICgqIGFjdHVhbGx5IGEgV2ViR0xGcmFtZWJ1ZmZlciopCi0gICAgICAgIGNh
c2UgR0xfRlJPTlRfRkFDRTogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAg
IGNhc2UgR0xfR0VORVJBVEVfTUlQTUFQX0hJTlQ6ICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAg
ICAgIGNhc2UgR0xfR1JFRU5fQklUUzogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0g
ICAgICAgICAgICAvL2Nhc2UgR0xfSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9GT1JNQVQ6cmV0
dXJuIDE7Ci0gICAgICAgICAgICAvL2Nhc2UgR0xfSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9U
WVBFOiAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfTElORV9XSURUSDogICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfTUFYX0NPTUJJTkVEX1RFWFRVUkVf
SU1BR0VfVU5JVFM6cmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfTUFYX0NVQkVfTUFQX1RFWFRV
UkVfU0laRTogICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICAvL2Nhc2UgR0xfTUFYX0ZSQUdN
RU5UX1VOSUZPUk1fVkVDVE9SUzogICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfTUFYX1JF
TkRFUkJVRkZFUl9TSVpFX0VYVDogICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfTUFY
X1RFWFRVUkVfSU1BR0VfVU5JVFM6ICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xf
TUFYX1RFWFRVUkVfU0laRTogICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICAv
L2Nhc2UgR0xfTUFYX1ZBUllJTkdfVkVDVE9SUzogICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAg
ICAgIGNhc2UgR0xfTUFYX1ZFUlRFWF9BVFRSSUJTOiAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0g
ICAgICAgIGNhc2UgR0xfTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTOiAgcmV0dXJuIDE7
Ci0gICAgICAgICAgICAvL2Nhc2UgR0xfTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlM6ICAgICAg
cmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfTUFYX1ZJRVdQT1JUX0RJTVM6ICAgICAgICAgICAg
ICAgcmV0dXJuIDI7Ci0gICAgICAgIGNhc2UgR0xfTlVNX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JN
QVRTOiAgcmV0dXJuIDE7Ci0gICAgICAgICAgICAvL2Nhc2UgR0xfTlVNX1NIQURFUl9CSU5BUllf
Rk9STUFUUzogICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfUEFDS19BTElHTk1FTlQ6
ICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfUE9MWUdPTl9PRkZT
RVRfRkFDVE9SOiAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfUE9MWUdPTl9P
RkZTRVRfRklMTDogICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfUE9MWUdP
Tl9PRkZTRVRfVU5JVFM6ICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfUkVE
X0JJVFM6ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xf
UkVOREVSQlVGRkVSX0JJTkRJTkdfRVhUOiAgICAgICAgcmV0dXJuIDE7IC8vICgqIGFjdHVhbGx5
IGEgV2ViR0xSZW5kZXJidWZmZXIqKQotICAgICAgICBjYXNlIEdMX1NBTVBMRV9CVUZGRVJTOiAg
ICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX1NBTVBMRV9DT1ZFUkFH
RV9JTlZFUlQ6ICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX1NBTVBMRV9DT1ZF
UkFHRV9WQUxVRTogICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX1NBTVBMRVM6
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX1NDSVNT
T1JfQk9YOiAgICAgICAgICAgICAgICAgICAgIHJldHVybiA0OwotICAgICAgICBjYXNlIEdMX1ND
SVNTT1JfVEVTVDogICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAgLy9j
YXNlIEdMX1NIQURFUl9CSU5BUllfRk9STUFUUzogICAgICAgICAgIHJldHVybiBHTF9OVU1fU0hB
REVSX0JJTkFSWV9GT1JNQVRTOwotICAgICAgICAgICAgLy9jYXNlIEdMX1NIQURFUl9DT01QSUxF
UjogICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX1NURU5DSUxfQkFD
S19GQUlMOiAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX1NURU5DSUxf
QkFDS19GVU5DOiAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX1NURU5D
SUxfQkFDS19QQVNTX0RFUFRIX0ZBSUw6ICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX1NU
RU5DSUxfQkFDS19QQVNTX0RFUFRIX1BBU1M6ICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdM
X1NURU5DSUxfQkFDS19SRUY6ICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNl
IEdMX1NURU5DSUxfQkFDS19WQUxVRV9NQVNLOiAgICAgICAgIHJldHVybiAxOwotICAgICAgICBj
YXNlIEdMX1NURU5DSUxfQkFDS19XUklURU1BU0s6ICAgICAgICAgIHJldHVybiAxOwotICAgICAg
ICBjYXNlIEdMX1NURU5DSUxfQklUUzogICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAg
ICAgICBjYXNlIEdMX1NURU5DSUxfQ0xFQVJfVkFMVUU6ICAgICAgICAgICAgIHJldHVybiAxOwot
ICAgICAgICBjYXNlIEdMX1NURU5DSUxfRkFJTDogICAgICAgICAgICAgICAgICAgIHJldHVybiAx
OwotICAgICAgICBjYXNlIEdMX1NURU5DSUxfRlVOQzogICAgICAgICAgICAgICAgICAgIHJldHVy
biAxOwotICAgICAgICBjYXNlIEdMX1NURU5DSUxfUEFTU19ERVBUSF9GQUlMOiAgICAgICAgIHJl
dHVybiAxOwotICAgICAgICBjYXNlIEdMX1NURU5DSUxfUEFTU19ERVBUSF9QQVNTOiAgICAgICAg
IHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX1NURU5DSUxfUkVGOiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX1NURU5DSUxfVEVTVDogICAgICAgICAgICAg
ICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX1NURU5DSUxfVkFMVUVfTUFTSzogICAg
ICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX1NURU5DSUxfV1JJVEVNQVNLOiAg
ICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX1NVQlBJWEVMX0JJVFM6ICAg
ICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQklORElO
R18yRDogICAgICAgICAgICAgIHJldHVybiAxOyAvLyAoKiBhY3R1YWxseSBhIFdlYkdMVGV4dHVy
ZSopCi0gICAgICAgIGNhc2UgR0xfVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQOiAgICAgICAgcmV0
dXJuIDE7IC8vICgqIGFjdHVhbGx5IGEgV2ViR0xUZXh0dXJlKikKLSAgICAgICAgY2FzZSBHTF9V
TlBBQ0tfQUxJR05NRU5UOiAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBH
TF9WSUVXUE9SVDogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gNDsKLSAgICB9Ci0gICAg
Ci0gICAgcmV0dXJuIC0xOwotfQotCi1ib29sIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRCb29sZWFu
KHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgaW50IHNpemUgPSBzaXplRm9yR2V0UGFyYW0o
cG5hbWUpOwotICAgIGlmIChzaXplIDwgMSkgCi0gICAgICAgIHJldHVybiAwOwotICAgIAogICAg
IGVuc3VyZUNvbnRleHQobV9jb250ZXh0T2JqKTsKLSAgICAKLSAgICBib29sIGlzQWxsb2NlZCA9
IGZhbHNlOwotICAgIEdMYm9vbGVhbiBidWZbNF07Ci0gICAgR0xib29sZWFuKiBwYnVmID0gYnVm
OwotICAgICAgICAgICAgCi0gICAgaWYgKHNpemUgPiA0KSB7Ci0gICAgICAgIHBidWYgPSAoR0xi
b29sZWFuKikgbWFsbG9jKHNpemUgKiBzaXplb2YoR0xib29sZWFuKSk7Ci0gICAgICAgIGlzQWxs
b2NlZCA9IHRydWU7Ci0gICAgfQotICAgICAgICAgICAgCi0gICAgOjpnbEdldEJvb2xlYW52KHBu
YW1lLCBwYnVmKTsKLSAgICAKLSAgICBib29sIHZhbHVlID0gcGJ1ZlswXTsKLQotICAgIGlmIChp
c0FsbG9jZWQpCi0gICAgICAgIGZyZWUocGJ1Zik7Ci0gICAgCi0gICAgcmV0dXJuIHZhbHVlOwor
ICAgIDo6Z2xHZXRCb29sZWFudihwbmFtZSwgdmFsdWUpOwogfQogCi1QYXNzUmVmUHRyPFdlYkdM
VW5zaWduZWRCeXRlQXJyYXk+IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRCb29sZWFudih1bnNpZ25l
ZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QnVmZmVyUGFyYW1ldGVy
aXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIGludCogdmFsdWUp
CiB7Ci0gICAgaW50IHNpemUgPSBzaXplRm9yR2V0UGFyYW0ocG5hbWUpOwotICAgIGlmIChzaXpl
IDwgMSkgCi0gICAgICAgIHJldHVybiAwOwotICAgIAogICAgIGVuc3VyZUNvbnRleHQobV9jb250
ZXh0T2JqKTsKLSAgICAKLSAgICBSZWZQdHI8V2ViR0xVbnNpZ25lZEJ5dGVBcnJheT4gYXJyYXkg
PSBXZWJHTFVuc2lnbmVkQnl0ZUFycmF5OjpjcmVhdGUoc2l6ZSk7Ci0gICAgYm9vbCBpc0FsbG9j
ZWQgPSBmYWxzZTsKLSAgICBHTGJvb2xlYW4gYnVmWzRdOwotICAgIEdMYm9vbGVhbiogcGJ1ZiA9
IGJ1ZjsKLSAgICAgICAgICAgIAotICAgIGlmIChzaXplID4gNCkgewotICAgICAgICBwYnVmID0g
KEdMYm9vbGVhbiopIG1hbGxvYyhzaXplICogc2l6ZW9mKEdMYm9vbGVhbikpOwotICAgICAgICBp
c0FsbG9jZWQgPSB0cnVlOwotICAgIH0KLSAgICAgICAgICAgIAotICAgIDo6Z2xHZXRCb29sZWFu
dihwbmFtZSwgcGJ1Zik7Ci0gICAgICAgICAgICAKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHNp
emU7ICsraSkKLSAgICAgICAgYXJyYXktPnNldChpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFy
PihwYnVmW2ldKSk7Ci0gICAgICAgICAgICAKLSAgICBpZiAoaXNBbGxvY2VkKQotICAgICAgICBm
cmVlKHBidWYpOwotICAgIAotICAgIHJldHVybiBhcnJheTsKKyAgICA6OmdsR2V0QnVmZmVyUGFy
YW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgdmFsdWUpOwogfQogCi1mbG9hdCBHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0RmxvYXQodW5zaWduZWQgbG9uZyBwbmFtZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldEZsb2F0dih1bnNpZ25lZCBsb25nIHBuYW1lLCBmbG9hdCogdmFsdWUpCiB7Ci0gICAg
aW50IHNpemUgPSBzaXplRm9yR2V0UGFyYW0ocG5hbWUpOwotICAgIGlmIChzaXplIDwgMSkgCi0g
ICAgICAgIHJldHVybiAwOwotICAgIAogICAgIGVuc3VyZUNvbnRleHQobV9jb250ZXh0T2JqKTsK
LSAgICAKLSAgICBib29sIGlzQWxsb2NlZCA9IGZhbHNlOwotICAgIEdMZmxvYXQgYnVmWzRdOwot
ICAgIEdMZmxvYXQqIHBidWYgPSBidWY7Ci0gICAgICAgICAgICAKLSAgICBpZiAoc2l6ZSA+IDQp
IHsKLSAgICAgICAgcGJ1ZiA9IChHTGZsb2F0KikgbWFsbG9jKHNpemUgKiBzaXplb2YoR0xmbG9h
dCkpOwotICAgICAgICBpc0FsbG9jZWQgPSB0cnVlOwotICAgIH0KLSAgICAgICAgICAgIAotICAg
IDo6Z2xHZXRGbG9hdHYocG5hbWUsIHBidWYpOwotICAgIAotICAgIGZsb2F0IHZhbHVlID0gcGJ1
ZlswXTsKLQotICAgIGlmIChpc0FsbG9jZWQpCi0gICAgICAgIGZyZWUocGJ1Zik7Ci0gICAgCi0g
ICAgcmV0dXJuIHZhbHVlOworICAgIDo6Z2xHZXRGbG9hdHYocG5hbWUsIHZhbHVlKTsKIH0KIAot
UGFzc1JlZlB0cjxXZWJHTEZsb2F0QXJyYXk+IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRGbG9hdHYo
dW5zaWduZWQgbG9uZyBwbmFtZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZyYW1lYnVm
ZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBs
b25nIGF0dGFjaG1lbnQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIGludCogdmFsdWUpCiB7Ci0gICAg
aW50IHNpemUgPSBzaXplRm9yR2V0UGFyYW0ocG5hbWUpOwotICAgIGlmIChzaXplIDwgMSkgCi0g
ICAgICAgIHJldHVybiAwOwotICAgIAogICAgIGVuc3VyZUNvbnRleHQobV9jb250ZXh0T2JqKTsK
LSAgICAKLSAgICBSZWZQdHI8V2ViR0xGbG9hdEFycmF5PiBhcnJheSA9IFdlYkdMRmxvYXRBcnJh
eTo6Y3JlYXRlKHNpemUpOwotICAgIGJvb2wgaXNBbGxvY2VkID0gZmFsc2U7Ci0gICAgR0xmbG9h
dCBidWZbNF07Ci0gICAgR0xmbG9hdCogcGJ1ZiA9IGJ1ZjsKLSAgICAgICAgICAgIAotICAgIGlm
IChzaXplID4gNCkgewotICAgICAgICBwYnVmID0gKEdMZmxvYXQqKSBtYWxsb2Moc2l6ZSAqIHNp
emVvZihHTGZsb2F0KSk7Ci0gICAgICAgIGlzQWxsb2NlZCA9IHRydWU7Ci0gICAgfQotICAgICAg
ICAgICAgCi0gICAgOjpnbEdldEZsb2F0dihwbmFtZSwgcGJ1Zik7Ci0gICAgICAgICAgICAKLSAg
ICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgYXJyYXktPnNldChpLCBz
dGF0aWNfY2FzdDxmbG9hdD4ocGJ1ZltpXSkpOwotICAgICAgICAgICAgCi0gICAgaWYgKGlzQWxs
b2NlZCkKLSAgICAgICAgZnJlZShwYnVmKTsKLSAgICAKLSAgICByZXR1cm4gYXJyYXk7CisgICAg
OjpnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2RVhUKHRhcmdldCwgYXR0YWNo
bWVudCwgcG5hbWUsIHZhbHVlKTsKIH0KIAotaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbnRl
Z2VyKHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgaW50IHNpemUgPSBzaXplRm9yR2V0UGFy
YW0ocG5hbWUpOwotICAgIGlmIChzaXplIDwgMSkgCi0gICAgICAgIHJldHVybiAwOwotICAgIAot
ICAgIGVuc3VyZUNvbnRleHQobV9jb250ZXh0T2JqKTsKLSAgICAKLSAgICBib29sIGlzQWxsb2Nl
ZCA9IGZhbHNlOwotICAgIEdMaW50IGJ1Zls0XTsKLSAgICBHTGludCogcGJ1ZiA9IGJ1ZjsKLSAg
ICAgICAgICAgIAotICAgIGlmIChzaXplID4gNCkgewotICAgICAgICBwYnVmID0gKEdMaW50Kikg
bWFsbG9jKHNpemUgKiBzaXplb2YoR0xpbnQpKTsKLSAgICAgICAgaXNBbGxvY2VkID0gdHJ1ZTsK
LSAgICB9Ci0gICAgICAgICAgICAKLSAgICA6OmdsR2V0SW50ZWdlcnYocG5hbWUsIHBidWYpOwot
ICAgIAotICAgIGludCB2YWx1ZSA9IHBidWZbMF07Ci0KLSAgICBpZiAoaXNBbGxvY2VkKQotICAg
ICAgICBmcmVlKHBidWYpOwotICAgIAotICAgIHJldHVybiB2YWx1ZTsKLX0KLQotUGFzc1JlZlB0
cjxXZWJHTEludEFycmF5PiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW50ZWdlcnYodW5zaWduZWQg
bG9uZyBwbmFtZSkKLXsKLSAgICBpbnQgc2l6ZSA9IHNpemVGb3JHZXRQYXJhbShwbmFtZSk7Ci0g
ICAgaWYgKHNpemUgPCAxKSAKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgZW5zdXJlQ29u
dGV4dChtX2NvbnRleHRPYmopOwotICAgIAotICAgIFJlZlB0cjxXZWJHTEludEFycmF5PiBhcnJh
eSA9IFdlYkdMSW50QXJyYXk6OmNyZWF0ZShzaXplKTsKLSAgICBib29sIGlzQWxsb2NlZCA9IGZh
bHNlOwotICAgIEdMaW50IGJ1Zls0XTsKLSAgICBHTGludCogcGJ1ZiA9IGJ1ZjsKLSAgICAgICAg
ICAgIAotICAgIGlmIChzaXplID4gNCkgewotICAgICAgICBwYnVmID0gKEdMaW50KikgbWFsbG9j
KHNpemUgKiBzaXplb2YoR0xpbnQpKTsKLSAgICAgICAgaXNBbGxvY2VkID0gdHJ1ZTsKLSAgICB9
Ci0gICAgICAgICAgICAKLSAgICA6OmdsR2V0SW50ZWdlcnYocG5hbWUsIHBidWYpOwotICAgICAg
ICAgICAgCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIGFycmF5
LT5zZXQoaSwgc3RhdGljX2Nhc3Q8aW50PihwYnVmW2ldKSk7Ci0gICAgICAgICAgICAKLSAgICBp
ZiAoaXNBbGxvY2VkKQotICAgICAgICBmcmVlKHBidWYpOwotICAgIAotICAgIHJldHVybiBhcnJh
eTsKLX0KLQotaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRCdWZmZXJQYXJhbWV0ZXJpKHVuc2ln
bmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0SW50ZWdlcnYodW5zaWduZWQgbG9uZyBwbmFtZSwgaW50KiB2YWx1ZSkKIHsKICAg
ICBlbnN1cmVDb250ZXh0KG1fY29udGV4dE9iaik7Ci0gICAgR0xpbnQgZGF0YTsKLSAgICA6Omds
R2V0QnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgJmRhdGEpOwotICAgIHJldHVybiBk
YXRhOworICAgIDo6Z2xHZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUpOwogfQogCi1QYXNzUmVmUHRy
PFdlYkdMSW50QXJyYXk+IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRCdWZmZXJQYXJhbWV0ZXJpdih1
bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSkKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldFByb2dyYW1pdihXZWJHTFByb2dyYW0qIHByb2dyYW0sIHVuc2lnbmVkIGxv
bmcgcG5hbWUsIGludCogdmFsdWUpCiB7CiAgICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmop
OwotICAgIFJlZlB0cjxXZWJHTEludEFycmF5PiBhcnJheSA9IFdlYkdMSW50QXJyYXk6OmNyZWF0
ZSgxKTsKLSAgICBHTGludCBkYXRhOwotICAgIDo6Z2xHZXRCdWZmZXJQYXJhbWV0ZXJpdih0YXJn
ZXQsIHBuYW1lLCAmZGF0YSk7Ci0gICAgYXJyYXktPnNldCgwLCBzdGF0aWNfY2FzdDxpbnQ+KGRh
dGEpKTsKLSAgICAKLSAgICByZXR1cm4gYXJyYXk7Ci19Ci0KLWludCBHcmFwaGljc0NvbnRleHQz
RDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaSh1bnNpZ25lZCBsb25nIHRhcmdl
dCwgdW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCB1bnNpZ25lZCBsb25nIHBuYW1lKQotewotICAg
IGVuc3VyZUNvbnRleHQobV9jb250ZXh0T2JqKTsKLSAgICBHTGludCBkYXRhOwotICAgIDo6Z2xH
ZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdkVYVCh0YXJnZXQsIGF0dGFjaG1lbnQs
IHBuYW1lLCAmZGF0YSk7Ci0gICAgcmV0dXJuIGRhdGE7Ci19Ci0KLVBhc3NSZWZQdHI8V2ViR0xJ
bnRBcnJheT4gR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIHVu
c2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwot
ICAgIFJlZlB0cjxXZWJHTEludEFycmF5PiBhcnJheSA9IFdlYkdMSW50QXJyYXk6OmNyZWF0ZSgx
KTsKLSAgICBHTGludCBkYXRhOwotICAgIDo6Z2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJh
bWV0ZXJpdkVYVCh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCAmZGF0YSk7Ci0gICAgYXJyYXkt
PnNldCgwLCBzdGF0aWNfY2FzdDxpbnQ+KGRhdGEpKTsKLSAgICAKLSAgICByZXR1cm4gYXJyYXk7
Ci19Ci0KLWludCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbWkoV2ViR0xQcm9ncmFtKiBw
cm9ncmFtLCB1bnNpZ25lZCBsb25nIHBuYW1lKQotewotICAgIGVuc3VyZUNvbnRleHQobV9jb250
ZXh0T2JqKTsKLSAgICBHTGludCBkYXRhOwotICAgIDo6Z2xHZXRQcm9ncmFtaXYoKEdMdWludCkg
cHJvZ3JhbS0+b2JqZWN0KCksIHBuYW1lLCAmZGF0YSk7Ci0gICAgcmV0dXJuIGRhdGE7Ci19Ci0K
LVBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gR3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1p
dihXZWJHTFByb2dyYW0qIHByb2dyYW0sIHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgZW5z
dXJlQ29udGV4dChtX2NvbnRleHRPYmopOwotICAgIFJlZlB0cjxXZWJHTEludEFycmF5PiBhcnJh
eSA9IFdlYkdMSW50QXJyYXk6OmNyZWF0ZSgxKTsKLSAgICBHTGludCBkYXRhOwotICAgIDo6Z2xH
ZXRQcm9ncmFtaXYoKEdMdWludCkgcHJvZ3JhbS0+b2JqZWN0KCksIHBuYW1lLCAmZGF0YSk7Ci0g
ICAgYXJyYXktPnNldCgwLCBzdGF0aWNfY2FzdDxpbnQ+KGRhdGEpKTsKLSAgICAKLSAgICByZXR1
cm4gYXJyYXk7CisgICAgOjpnbEdldFByb2dyYW1pdigoR0x1aW50KSBwcm9ncmFtLT5vYmplY3Qo
KSwgcG5hbWUsIHZhbHVlKTsKIH0KIAogU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9n
cmFtSW5mb0xvZyhXZWJHTFByb2dyYW0qIHByb2dyYW0pCkBAIC0xMjg1LDQ2ICsxMDA0LDE4IEBA
IFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbUluZm8KICAgICByZXR1cm4gczsK
IH0KIAotaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKHVu
c2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKQotewotICAgIGVuc3VyZUNv
bnRleHQobV9jb250ZXh0T2JqKTsKLSAgICBHTGludCBkYXRhOwotICAgIDo6Z2xHZXRCdWZmZXJQ
YXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmZGF0YSk7Ci0gICAgcmV0dXJuIGRhdGE7Ci19Ci0K
LVBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gR3JhcGhpY3NDb250ZXh0M0Q6OmdldFJlbmRlcmJ1
ZmZlclBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1l
KQotewotICAgIGVuc3VyZUNvbnRleHQobV9jb250ZXh0T2JqKTsKLSAgICBSZWZQdHI8V2ViR0xJ
bnRBcnJheT4gYXJyYXkgPSBXZWJHTEludEFycmF5OjpjcmVhdGUoMSk7Ci0gICAgR0xpbnQgZGF0
YTsKLSAgICA6OmdsR2V0QnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgJmRhdGEpOwot
ICAgIGFycmF5LT5zZXQoMCwgc3RhdGljX2Nhc3Q8aW50PihkYXRhKSk7Ci0gICAgCi0gICAgcmV0
dXJuIGFycmF5OwotfQotCi1pbnQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlcmkoV2ViR0xT
aGFkZXIqIHNoYWRlciwgdW5zaWduZWQgbG9uZyBwbmFtZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNp
Z25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKQogewotICAgIEFTU0VSVChzaGFkZXIpOwotICAg
IAogICAgIGVuc3VyZUNvbnRleHQobV9jb250ZXh0T2JqKTsKLSAgICBHTGludCBkYXRhOwotICAg
IDo6Z2xHZXRTaGFkZXJpdigoR0x1aW50KSBzaGFkZXItPm9iamVjdCgpLCBwbmFtZSwgJmRhdGEp
OwotICAgIHJldHVybiBkYXRhOworICAgIDo6Z2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdkVY
VCh0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4g
R3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlcml2KFdlYkdMU2hhZGVyKiBzaGFkZXIsIHVuc2ln
bmVkIGxvbmcgcG5hbWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJpdihXZWJH
TFNoYWRlciogc2hhZGVyLCB1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKQogewogICAg
IEFTU0VSVChzaGFkZXIpOwogICAgIAogICAgIGVuc3VyZUNvbnRleHQobV9jb250ZXh0T2JqKTsK
LSAgICBSZWZQdHI8V2ViR0xJbnRBcnJheT4gYXJyYXkgPSBXZWJHTEludEFycmF5OjpjcmVhdGUo
MSk7Ci0gICAgR0xpbnQgZGF0YTsKLSAgICA6OmdsR2V0U2hhZGVyaXYoKEdMdWludCkgc2hhZGVy
LT5vYmplY3QoKSwgcG5hbWUsICZkYXRhKTsKLSAgICBhcnJheS0+c2V0KDAsIHN0YXRpY19jYXN0
PGludD4oZGF0YSkpOwotICAgIAotICAgIHJldHVybiBhcnJheTsKKyAgICA6OmdsR2V0U2hhZGVy
aXYoKEdMdWludCkgc2hhZGVyLT5vYmplY3QoKSwgcG5hbWUsIHZhbHVlKTsKIH0KIAogU3RyaW5n
IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJJbmZvTG9nKFdlYkdMU2hhZGVyKiBzaGFkZXIp
CkBAIC0xMzYwLDc4ICsxMDUxLDI4IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hh
ZGVyU291cmMKIH0KIAogCi1mbG9hdCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VGV4UGFyYW1ldGVy
Zih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSkKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmdldFRleFBhcmFtZXRlcmZ2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNp
Z25lZCBsb25nIHBuYW1lLCBmbG9hdCogdmFsdWUpCiB7CiAgICAgZW5zdXJlQ29udGV4dChtX2Nv
bnRleHRPYmopOwotICAgIEdMZmxvYXQgZGF0YTsKLSAgICA6OmdsR2V0VGV4UGFyYW1ldGVyZnYo
dGFyZ2V0LCBwbmFtZSwgJmRhdGEpOwotICAgIHJldHVybiBkYXRhOworICAgIDo6Z2xHZXRUZXhQ
YXJhbWV0ZXJmdih0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViR0xG
bG9hdEFycmF5PiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VGV4UGFyYW1ldGVyZnYodW5zaWduZWQg
bG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpnZXRUZXhQYXJhbWV0ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBw
bmFtZSwgaW50KiB2YWx1ZSkKIHsKICAgICBlbnN1cmVDb250ZXh0KG1fY29udGV4dE9iaik7Ci0g
ICAgUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gYXJyYXkgPSBXZWJHTEZsb2F0QXJyYXk6OmNyZWF0
ZSgxKTsKLSAgICBHTGZsb2F0IGRhdGE7Ci0gICAgOjpnbEdldFRleFBhcmFtZXRlcmZ2KHRhcmdl
dCwgcG5hbWUsICZkYXRhKTsKLSAgICBhcnJheS0+c2V0KDAsIHN0YXRpY19jYXN0PGZsb2F0Pihk
YXRhKSk7Ci0gICAgCi0gICAgcmV0dXJuIGFycmF5OworICAgIDo6Z2xHZXRUZXhQYXJhbWV0ZXJp
dih0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CiB9CiAKLWludCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
VGV4UGFyYW1ldGVyaSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSkK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1mdihXZWJHTFByb2dyYW0qIHByb2dy
YW0sIGxvbmcgbG9jYXRpb24sIGZsb2F0KiB2YWx1ZSkKIHsKICAgICBlbnN1cmVDb250ZXh0KG1f
Y29udGV4dE9iaik7Ci0gICAgR0xpbnQgZGF0YTsKLSAgICA6OmdsR2V0VGV4UGFyYW1ldGVyaXYo
dGFyZ2V0LCBwbmFtZSwgJmRhdGEpOwotICAgIHJldHVybiBkYXRhOworICAgIDo6Z2xHZXRVbmlm
b3JtZnYoKEdMdWludCkgcHJvZ3JhbS0+b2JqZWN0KCksIGxvY2F0aW9uLCB2YWx1ZSk7CiB9CiAK
LVBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gR3JhcGhpY3NDb250ZXh0M0Q6OmdldFRleFBhcmFt
ZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKQordm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWl2KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9u
ZyBsb2NhdGlvbiwgaW50KiB2YWx1ZSkKIHsKICAgICBlbnN1cmVDb250ZXh0KG1fY29udGV4dE9i
aik7Ci0gICAgUmVmUHRyPFdlYkdMSW50QXJyYXk+IGFycmF5ID0gV2ViR0xJbnRBcnJheTo6Y3Jl
YXRlKDEpOwotICAgIEdMaW50IGRhdGE7Ci0gICAgOjpnbEdldFRleFBhcmFtZXRlcml2KHRhcmdl
dCwgcG5hbWUsICZkYXRhKTsKLSAgICBhcnJheS0+c2V0KDAsIHN0YXRpY19jYXN0PGludD4oZGF0
YSkpOwotICAgIAotICAgIHJldHVybiBhcnJheTsKLX0KLQotZmxvYXQgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldFVuaWZvcm1mKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBsb2NhdGlvbikKLXsK
LSAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBxdWVyeSBnbEdldFVuaWZvcm1Mb2NhdGlvbiB0byBk
ZXRlcm1pbmUgdGhlIHNpemUgbmVlZGVkCi0gICAgVU5VU0VEX1BBUkFNKHByb2dyYW0pOwotICAg
IFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1
cm4gMDsKLX0KLQotUGFzc1JlZlB0cjxXZWJHTEZsb2F0QXJyYXk+IEdyYXBoaWNzQ29udGV4dDNE
OjpnZXRVbmlmb3JtZnYoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uKQotewot
ICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIHF1ZXJ5IGdsR2V0VW5pZm9ybUxvY2F0aW9uIHRvIGRl
dGVybWluZSB0aGUgc2l6ZSBuZWVkZWQKLSAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7Ci0gICAg
VU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVy
biAwOwotfQotCi1pbnQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1pKFdlYkdMUHJvZ3Jh
bSogcHJvZ3JhbSwgbG9uZyBsb2NhdGlvbikKLXsKLSAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBx
dWVyeSBnbEdldFVuaWZvcm1Mb2NhdGlvbiB0byBkZXRlcm1pbmUgdGhlIHNpemUgbmVlZGVkCi0g
ICAgVU5VU0VEX1BBUkFNKHByb2dyYW0pOwotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotUGFzc1JlZlB0cjxXZWJH
TEludEFycmF5PiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWl2KFdlYkdMUHJvZ3JhbSog
cHJvZ3JhbSwgbG9uZyBsb2NhdGlvbikKLXsKLSAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBxdWVy
eSBnbEdldFVuaWZvcm1Mb2NhdGlvbiB0byBkZXRlcm1pbmUgdGhlIHNpemUgbmVlZGVkCi0gICAg
VU5VU0VEX1BBUkFNKHByb2dyYW0pOwotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICA6OmdsR2V0VW5pZm9ybWl2KChH
THVpbnQpIHByb2dyYW0tPm9iamVjdCgpLCBsb2NhdGlvbiwgdmFsdWUpOwogfQogCiBsb25nIEdy
YXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtTG9jYXRpb24oV2ViR0xQcm9ncmFtKiBwcm9ncmFt
LCBjb25zdCBTdHJpbmcmIG5hbWUpCkBAIC0xNDQyLDcxICsxMDgzLDE2IEBAIGxvbmcgR3JhcGhp
Y3NDb250ZXh0M0Q6OmdldFVuaWZvcm1Mb2NhdGkKICAgICByZXR1cm4gOjpnbEdldFVuaWZvcm1M
b2NhdGlvbigoR0x1aW50KSBwcm9ncmFtLT5vYmplY3QoKSwgbmFtZS51dGY4KCkuZGF0YSgpKTsK
IH0KIAotc3RhdGljIGludCBzaXplRm9yR2V0VmVydGV4QXR0cmliUGFyYW0odW5zaWduZWQgbG9u
ZyBwbmFtZSkKLXsKLSAgICBzd2l0Y2gocG5hbWUpIHsKLSAgICAgICAgY2FzZSBHTF9WRVJURVhf
QVRUUklCX0FSUkFZX0JVRkZFUl9CSU5ESU5HOiAgICAgcmV0dXJuIDE7IC8vICgqIGFjdHVhbGx5
IGEgV2ViR0xCdWZmZXIqKQotICAgICAgICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfRU5B
QkxFRDogICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9WRVJURVhfQVRUUklC
X0FSUkFZX1NJWkU6ICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfVkVS
VEVYX0FUVFJJQl9BUlJBWV9TVFJJREU6ICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBj
YXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRTogICAgICAgICAgICAgICByZXR1cm4gMTsK
LSAgICAgICAgY2FzZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZX05PUk1BTElaRUQ6ICAgICAgICAg
cmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfQ1VSUkVOVF9WRVJURVhfQVRUUklCOiAgICAgICAg
ICAgICAgICAgIHJldHVybiA0OwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gLTE7Ci19Ci0KLWZs
b2F0IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJmKHVuc2lnbmVkIGxvbmcgaW5k
ZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRP
YmopOwotICAgIEdMZmxvYXQgYnVmWzRdOwotICAgIDo6Z2xHZXRWZXJ0ZXhBdHRyaWJmdihpbmRl
eCwgcG5hbWUsIGJ1Zik7Ci0gICAgcmV0dXJuIGJ1ZlswXTsKLX0KLQotUGFzc1JlZlB0cjxXZWJH
TEZsb2F0QXJyYXk+IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJmdih1bnNpZ25l
ZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6Z2V0VmVydGV4QXR0cmliZnYodW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQgbG9uZyBw
bmFtZSwgZmxvYXQqIHZhbHVlKQogewotICAgIGludCBzaXplID0gc2l6ZUZvckdldFZlcnRleEF0
dHJpYlBhcmFtKHBuYW1lKTsKLSAgICBpZiAoc2l6ZSA8IDEpIAotICAgICAgICByZXR1cm4gMDsK
LSAgICAKICAgICBlbnN1cmVDb250ZXh0KG1fY29udGV4dE9iaik7Ci0gICAgCi0gICAgUmVmUHRy
PFdlYkdMRmxvYXRBcnJheT4gYXJyYXkgPSBXZWJHTEZsb2F0QXJyYXk6OmNyZWF0ZShzaXplKTsK
LSAgICBHTGZsb2F0IGJ1Zls0XTsKLSAgICA6OmdsR2V0VmVydGV4QXR0cmliZnYoaW5kZXgsIHBu
YW1lLCBidWYpOwotICAgICAgICAgICAgCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyAr
K2kpCi0gICAgICAgIGFycmF5LT5zZXQoaSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGJ1ZltpXSkpOwot
ICAgIAotICAgIHJldHVybiBhcnJheTsKKyAgICA6OmdsR2V0VmVydGV4QXR0cmliZnYoaW5kZXgs
IHBuYW1lLCB2YWx1ZSk7CiB9CiAKLWludCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0
cmliaSh1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBuYW1lKQordm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliaXYodW5zaWduZWQgbG9uZyBpbmRleCwgdW5z
aWduZWQgbG9uZyBwbmFtZSwgaW50KiB2YWx1ZSkKIHsKICAgICBlbnN1cmVDb250ZXh0KG1fY29u
dGV4dE9iaik7Ci0gICAgR0xpbnQgYnVmWzRdOwotICAgIDo6Z2xHZXRWZXJ0ZXhBdHRyaWJpdihp
bmRleCwgcG5hbWUsIGJ1Zik7Ci0gICAgcmV0dXJuIGJ1ZlswXTsKLX0KLQotUGFzc1JlZlB0cjxX
ZWJHTEludEFycmF5PiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliaXYodW5zaWdu
ZWQgbG9uZyBpbmRleCwgdW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICBpbnQgc2l6ZSA9IHNp
emVGb3JHZXRWZXJ0ZXhBdHRyaWJQYXJhbShwbmFtZSk7Ci0gICAgaWYgKHNpemUgPCAxKSAKLSAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwot
ICAgIAotICAgIFJlZlB0cjxXZWJHTEludEFycmF5PiBhcnJheSA9IFdlYkdMSW50QXJyYXk6OmNy
ZWF0ZShzaXplKTsKLSAgICBHTGludCBidWZbNF07Ci0gICAgOjpnbEdldFZlcnRleEF0dHJpYml2
KGluZGV4LCBwbmFtZSwgYnVmKTsKLSAgICAgICAgICAgIAotICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgc2l6ZTsgKytpKQotICAgICAgICBhcnJheS0+c2V0KGksIHN0YXRpY19jYXN0PGludD4oYnVm
W2ldKSk7Ci0gICAgCi0gICAgcmV0dXJuIGFycmF5OworICAgIDo6Z2xHZXRWZXJ0ZXhBdHRyaWJp
dihpbmRleCwgcG5hbWUsIHZhbHVlKTsKIH0KIAogbG9uZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
VmVydGV4QXR0cmliT2Zmc2V0KHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5h
bWUpCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDUxMzEyKQorKysgV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDA5LTExLTIzICBL
ZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgZ2V0Li4uIGNhbGxzIHRvIGxhdGVzdCBz
cGVjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDA5
MQorCisgICAgICAgIFJlbW92ZWQgb2xkIHZlcnNpb25zIG9mIGdldCBjYWxscyBvbiBXZWJHTFJl
bmRlcmluZ0NvbnRleHQgYW5kCisgICAgICAgIGFkZGVkIG5ldyBvbmVzIHBlciBzcGVjIHJldHVy
bmluZyAiYW55Ii4gTmV3IGNvZGUgc2ltcGxpZmllcworICAgICAgICBHcmFwaGljc0NvbnRleHQz
RCBhbmQgZml4ZXMgcHJldmlvdXNseSB1bmltcGxlbWVudGVkIHJvdXRpbmVzLgorICAgICAgICBB
ZGRlZCBjdXN0b20gSlMgYW5kIFY4IGJpbmRpbmdzLiBBZGRlZCBleGhhdXN0aXZlIHRlc3QgY2Fz
ZQorICAgICAgICBleGVyY2lzaW5nIGFsbCBuZXcgY29kZSBwYXRocy4gVXBkYXRlZCBwcmVleGlz
dGluZyB0ZXN0IGNhc2VzIGZvcgorICAgICAgICBuZXcgQVBJcy4gRml4ZWQgcHJlZXhpc3Rpbmcg
YnVncyBpbiBXZWJLaXQncyBhbmQgQ2hyb21lJ3MgV2ViR0wKKyAgICAgICAgaW1wbGVtZW50YXRp
b25zLgorCisgICAgICAgIFJhbiBXZWJHTCBsYXlvdXQgdGVzdHMgaW4gV2ViS2l0IChjbGVhbikg
YW5kIENocm9tZSAoY291cGxlIG9mCisgICAgICAgIHByZWV4aXN0aW5nIGtub3duIGZhaWx1cmVz
KSBhbmQgbWFudWFsIFdlYkdMIHRlc3RzIGluIGJvdGgKKyAgICAgICAgYnJvd3NlcnMuCisKKyAg
ICAgICAgVGVzdDogZmFzdC9jYW52YXMvd2ViZ2wvZ2wtb2JqZWN0LWdldC1jYWxscy5odG1sCisK
KyAgICAgICAgKiBzcmMvR3JhcGhpY3NDb250ZXh0M0QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZUZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEJvb2xlYW52KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRCdWZmZXJQYXJhbWV0ZXJpdik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0RmxvYXR2KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJp
dik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW50ZWdlcnYpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1pdik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVy
aXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlcml2KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRUZXhQYXJhbWV0ZXJmdik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VGV4UGFyYW1ldGVyaXYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1mdik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWl2KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJmdik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliaXYpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmlzRnJhbWVidWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmlzUmVuZGVyYnVmZmVyKToKKwogMjAwOS0x
MS0yMCAgSmlhbiBMaSAgPGppYW5saUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTm90IHJldmll
d2VkLiBGaXggY2hyb21pdW0gYnVpbGQuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBo
aWNzQ29udGV4dDNELmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBo
aWNzQ29udGV4dDNELmNwcAkocmV2aXNpb24gNTEyNzgpCisrKyBXZWJLaXQvY2hyb21pdW0vc3Jj
L0dyYXBoaWNzQ29udGV4dDNELmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzc0LDE5ICs3NzQsNiBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OmJlZ2luUGFpCiAjZW5kaWYgIC8vIFJF
TkRFUl9UT19ERUJVR0dJTkdfV0lORE9XCiB9CiAKLWJvb2wgR3JhcGhpY3NDb250ZXh0M0RJbnRl
cm5hbDo6dmFsaWRhdGVUZXh0dXJlVGFyZ2V0KGludCB0YXJnZXQpCi17Ci0gICAgcmV0dXJuICh0
YXJnZXQgPT0gR0xfVEVYVFVSRV8yRCB8fCB0YXJnZXQgPT0gR0xfVEVYVFVSRV9DVUJFX01BUCk7
Ci19Ci0KLWJvb2wgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6dmFsaWRhdGVUZXh0dXJlUGFy
YW1ldGVyKGludCBwYXJhbSkKLXsKLSAgICByZXR1cm4gKHBhcmFtID09IEdMX1RFWFRVUkVfTUFH
X0ZJTFRFUgotICAgICAgICAgfHwgcGFyYW0gPT0gR0xfVEVYVFVSRV9NSU5fRklMVEVSCi0gICAg
ICAgICB8fCBwYXJhbSA9PSBHTF9URVhUVVJFX1dSQVBfUwotICAgICAgICAgfHwgcGFyYW0gPT0g
R0xfVEVYVFVSRV9XUkFQX1QpOwotfQotCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OmFjdGl2ZVRleHR1cmUodW5zaWduZWQgbG9uZyB0ZXh0dXJlKQogewogICAgIC8vIEZJWE1FOiBx
dWVyeSBudW1iZXIgb2YgdGV4dHVyZXMgYXZhaWxhYmxlLgpAQCAtMTEwNSw4ICsxMDkyLDggQEAg
dW5zaWduZWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUJ1ZmZlcgogdW5zaWduZWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmNyZWF0ZUZyYW1lYnVmZmVyKCkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKLSAgICBHTHVpbnQgbzsKLSAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAmbyk7CisgICAg
R0x1aW50IG8gPSAwOworICAgIGdsR2VuRnJhbWVidWZmZXJzRVhUKDEsICZvKTsKICAgICByZXR1
cm4gbzsKIH0KIApAQCAtMTEyMCw3ICsxMTA3LDcgQEAgdW5zaWduZWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmNyZWF0ZVJlbmRlcgogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIEdMdWlu
dCBvOwotICAgIGdsR2VuUmVuZGVyYnVmZmVycygxLCAmbyk7CisgICAgZ2xHZW5SZW5kZXJidWZm
ZXJzRVhUKDEsICZvKTsKICAgICByZXR1cm4gbzsKIH0KIApAQCAtMTE0Nyw3ICsxMTM0LDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlQnVmZmVyKHVucwogdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6ZGVsZXRlRnJhbWVidWZmZXIodW5zaWduZWQgZnJhbWVidWZmZXIpCiB7CiAgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJmZyYW1l
YnVmZmVyKTsKKyAgICBnbERlbGV0ZUZyYW1lYnVmZmVyc0VYVCgxLCAmZnJhbWVidWZmZXIpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVQcm9ncmFtKHVuc2lnbmVkIHByb2dy
YW0pCkBAIC0xMTU5LDcgKzExNDYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVQ
cm9ncmFtKHVuCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVSZW5kZXJidWZmZXIodW5z
aWduZWQgcmVuZGVyYnVmZmVyKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIGds
RGVsZXRlUmVuZGVyYnVmZmVycygxLCAmcmVuZGVyYnVmZmVyKTsKKyAgICBnbERlbGV0ZVJlbmRl
cmJ1ZmZlcnNFWFQoMSwgJnJlbmRlcmJ1ZmZlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmRlbGV0ZVNoYWRlcih1bnNpZ25lZCBzaGFkZXIpCkBAIC0xMTk3LDkgKzExODQsOSBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpiaW5kQnVmZmVyKHVuc2lnCiAgICAgbV9pbnRlcm5hbC0+
YmluZEJ1ZmZlcih0YXJnZXQsIGJ1ZmZlcik7CiB9CiAKLUdMX1NBTUVfTUVUSE9EXzJfWDIoQmlu
ZEZyYW1lYnVmZmVyLCBiaW5kRnJhbWVidWZmZXIsIHVuc2lnbmVkIGxvbmcsIFdlYkdMRnJhbWVi
dWZmZXIqKQorR0xfU0FNRV9NRVRIT0RfMl9YMihCaW5kRnJhbWVidWZmZXJFWFQsIGJpbmRGcmFt
ZWJ1ZmZlciwgdW5zaWduZWQgbG9uZywgV2ViR0xGcmFtZWJ1ZmZlciopCiAKLUdMX1NBTUVfTUVU
SE9EXzJfWDIoQmluZFJlbmRlcmJ1ZmZlciwgYmluZFJlbmRlcmJ1ZmZlciwgdW5zaWduZWQgbG9u
ZywgV2ViR0xSZW5kZXJidWZmZXIqKQorR0xfU0FNRV9NRVRIT0RfMl9YMihCaW5kUmVuZGVyYnVm
ZmVyRVhULCBiaW5kUmVuZGVyYnVmZmVyLCB1bnNpZ25lZCBsb25nLCBXZWJHTFJlbmRlcmJ1ZmZl
ciopCiAKIC8vIElmIHdlIGRpZG4ndCBoYXZlIHRvIGhhY2sgR0xfVEVYVFVSRV9XUkFQX1IgZm9y
IGN1YmUgbWFwcywKIC8vIHdlIGNvdWxkIGp1c3QgdXNlOgpAQCAtMTI1Myw3ICsxMjQwLDcgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YnVmZmVyU3ViRGF0YSh1bgogdW5zaWduZWQgbG9uZyBH
cmFwaGljc0NvbnRleHQzRDo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh1bnNpZ25lZCBsb25nIHRh
cmdldCkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICByZXR1cm4gZ2xDaGVja0Zy
YW1lYnVmZmVyU3RhdHVzKHRhcmdldCk7CisgICAgcmV0dXJuIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0
YXR1c0VYVCh0YXJnZXQpOwogfQogCiBHTF9TQU1FX01FVEhPRF8xKENsZWFyLCBjbGVhciwgdW5z
aWduZWQgbG9uZykKQEAgLTEzNTYsOSArMTM0Myw5IEBAIEdMX1NBTUVfTUVUSE9EXzAoRmluaXNo
LCBmaW5pc2gpCiAKIEdMX1NBTUVfTUVUSE9EXzAoRmx1c2gsIGZsdXNoKQogCi1HTF9TQU1FX01F
VEhPRF80X1g0KEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyLCBmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZl
ciwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgV2ViR0xSZW5k
ZXJidWZmZXIqKQorR0xfU0FNRV9NRVRIT0RfNF9YNChGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVY
VCwgZnJhbWVidWZmZXJSZW5kZXJidWZmZXIsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcs
IHVuc2lnbmVkIGxvbmcsIFdlYkdMUmVuZGVyYnVmZmVyKikKIAotR0xfU0FNRV9NRVRIT0RfNV9Y
NChGcmFtZWJ1ZmZlclRleHR1cmUyRCwgZnJhbWVidWZmZXJUZXh0dXJlMkQsIHVuc2lnbmVkIGxv
bmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIFdlYkdMVGV4dHVyZSosIGxvbmcpCitH
TF9TQU1FX01FVEhPRF81X1g0KEZyYW1lYnVmZmVyVGV4dHVyZTJERVhULCBmcmFtZWJ1ZmZlclRl
eHR1cmUyRCwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgV2Vi
R0xUZXh0dXJlKiwgbG9uZykKIAogR0xfU0FNRV9NRVRIT0RfMShGcm9udEZhY2UsIGZyb250RmFj
ZSwgdW5zaWduZWQgbG9uZykKIApAQCAtMTQzNSwzNSArMTQyMiwxNiBAQCBpbnQgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldEF0dHJpYkxvY2F0aW9uCiAgICAgcmV0dXJuIGdsR2V0QXR0cmliTG9jYXRp
b24oRVhUUkFDVChwcm9ncmFtKSwgbmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIAotYm9vbCBHcmFw
aGljc0NvbnRleHQzRDo6Z2V0Qm9vbGVhbih1bnNpZ25lZCBsb25nIHBuYW1lKQordm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6Z2V0Qm9vbGVhbnYodW5zaWduZWQgbG9uZyBwbmFtZSwgdW5zaWduZWQg
Y2hhciogdmFsdWUpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgR0xib29sZWFu
IHZhbDsKLSAgICAvLyBGSVhNRTogdmFsaWRhdGUgcG5hbWUgdG8gZW5zdXJlIGl0IHJldHVybnMg
b25seSBhIHNpbmdsZSB2YWx1ZS4KLSAgICBnbEdldEJvb2xlYW52KHBuYW1lLCAmdmFsKTsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4odmFsKTsKKyAgICBnbEdldEJvb2xlYW52KHBuYW1l
LCB2YWx1ZSk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViR0xVbnNpZ25lZEJ5dGVBcnJheT4gR3JhcGhp
Y3NDb250ZXh0M0Q6OmdldEJvb2xlYW52KHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgLy8g
RklYTUU6IGltcGxlbWVudC4KLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOwot
fQotCi1pbnQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEJ1ZmZlclBhcmFtZXRlcmkodW5zaWduZWQg
bG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpnZXRCdWZmZXJQYXJhbWV0ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9u
ZyBwbmFtZSwgaW50KiB2YWx1ZSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICBH
TGludCBkYXRhOwotICAgIGdsR2V0QnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgJmRh
dGEpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGRhdGEpOwotfQotCi1QYXNzUmVmUHRy
PFdlYkdMSW50QXJyYXk+IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRCdWZmZXJQYXJhbWV0ZXJpdih1
bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICAvLyBGSVhN
RTogaW1wbGVtZW50LgotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAg
Z2xHZXRCdWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CiB9CiAKIHVuc2ln
bmVkIGxvbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEVycm9yKCkKQEAgLTE0NzIsNzIgKzE0NDAs
MzMgQEAgdW5zaWduZWQgbG9uZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXJybwogICAgIHJldHVy
biBnbEdldEVycm9yKCk7CiB9CiAKLWZsb2F0IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRGbG9hdCh1
bnNpZ25lZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RmxvYXR2KHVu
c2lnbmVkIGxvbmcgcG5hbWUsIGZsb2F0KiB2YWx1ZSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKLSAgICBHTGZsb2F0IHZhbDsKLSAgICAvLyBGSVhNRTogdmFsaWRhdGUgcG5hbWUgdG8g
ZW5zdXJlIGl0IHJldHVybnMgb25seSBhIHNpbmdsZSB2YWx1ZS4KLSAgICBnbEdldEZsb2F0dihw
bmFtZSwgJnZhbCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0Pih2YWwpOworICAgIGds
R2V0RmxvYXR2KHBuYW1lLCB2YWx1ZSk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViR0xGbG9hdEFycmF5
PiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RmxvYXR2KHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0g
ICAgLy8gRklYTUU6IGltcGxlbWVudC4KLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVy
biAwOwotfQotCi1pbnQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVu
dFBhcmFtZXRlcmkodW5zaWduZWQgbG9uZyB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBhdHRhY2ht
ZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGxvbmcgcG5hbWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdldCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgcG5hbWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQqIHZhbHVlKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIEdMaW50IGRhdGE7
Ci0gICAgZ2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdih0YXJnZXQsIGF0dGFj
aG1lbnQsIHBuYW1lLCAmZGF0YSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oZGF0YSk7
Ci19Ci0KLVBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZy
YW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHBuYW1lKQotewotICAgIC8vIEZJWE1FOiBp
bXBsZW1lbnQuCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICBnbEdl
dEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2RVhUKHRhcmdldCwgYXR0YWNobWVudCwg
cG5hbWUsIHZhbHVlKTsKIH0KIAotaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbnRlZ2VyKHVu
c2lnbmVkIGxvbmcgcG5hbWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbnRlZ2Vydih1
bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVu
dCgpOwotICAgIEdMaW50IHZhbDsKLSAgICAvLyBGSVhNRTogdmFsaWRhdGUgcG5hbWUgdG8gZW5z
dXJlIGl0IHJldHVybnMgb25seSBhIHNpbmdsZSB2YWx1ZS4KLSAgICBnbEdldEludGVnZXJ2KHBu
YW1lLCAmdmFsKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pih2YWwpOwotfQotCi1QYXNz
UmVmUHRyPFdlYkdMSW50QXJyYXk+IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbnRlZ2Vydih1bnNp
Z25lZCBsb25nIHBuYW1lKQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQuCi0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICBnbEdldEludGVnZXJ2KHBuYW1lLCB2YWx1
ZSk7CiB9CiAKLWludCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbWkoV2ViR0xQcm9ncmFt
KiBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBs
b25nIHBuYW1lKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbWl2KFdlYkdMUHJv
Z3JhbSogcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBsb25nIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCogdmFsdWUpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgR0xpbnQgcGFyYW07
Ci0gICAgZ2xHZXRQcm9ncmFtaXYoRVhUUkFDVChwcm9ncmFtKSwgcG5hbWUsICZwYXJhbSk7Ci0g
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocGFyYW0pOwotfQotCi1QYXNzUmVmUHRyPFdlYkdM
SW50QXJyYXk+IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtaXYoV2ViR0xQcm9ncmFtKiBw
cm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBsb25nIHBuYW1lKQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1l
bnQuCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICBnbEdldFByb2dy
YW1pdihFWFRSQUNUKHByb2dyYW0pLCBwbmFtZSwgdmFsdWUpOwogfQogCiBTdHJpbmcgR3JhcGhp
Y3NDb250ZXh0M0Q6OmdldFByb2dyYW1JbmZvTG9nKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSkKQEAg
LTE1NTksMzggKzE0ODgsMjAgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFt
SW5mbwogICAgIHJldHVybiByZXM7CiB9CiAKLWludCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UmVu
ZGVyYnVmZmVyUGFyYW1ldGVyaSh1bnNpZ25lZCBsb25nIHRhcmdldCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHBuYW1lKQor
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYodW5zaWdu
ZWQgbG9uZyB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBsb25nIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KiB2YWx1ZSkKIHsKICAgICBtYWtlQ29udGV4
dEN1cnJlbnQoKTsKLSAgICBHTGludCBwYXJhbTsKLSAgICBnbEdldFJlbmRlcmJ1ZmZlclBhcmFt
ZXRlcml2KHRhcmdldCwgcG5hbWUsICZwYXJhbSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGlu
dD4ocGFyYW0pOwotfQotCi1QYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdldCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHBuYW1lKQotewotICAgIC8vIEZJWE1FOiBpbXBs
ZW1lbnQuCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICBnbEdldFJl
bmRlcmJ1ZmZlclBhcmFtZXRlcml2RVhUKHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKIH0KIAotaW50
IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJpKFdlYkdMU2hhZGVyKiBzaGFkZXIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBwbmFtZSkKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlcml2KFdlYkdMU2hhZGVyKiBzaGFkZXIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHBuYW1lLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KiB2YWx1ZSkKIHsKICAgICBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKLSAgICBHTGludCBwYXJhbTsKLSAgICBnbEdldFNoYWRlcml2KEVY
VFJBQ1Qoc2hhZGVyKSwgcG5hbWUsICZwYXJhbSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGlu
dD4ocGFyYW0pOwotfQotCi1QYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRTaGFkZXJpdihXZWJHTFNoYWRlciogc2hhZGVyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgcG5h
bWUpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudC4KLSAgICBub3RJbXBsZW1lbnRlZCgpOwot
ICAgIHJldHVybiAwOworICAgIGdsR2V0U2hhZGVyaXYoRVhUUkFDVChzaGFkZXIpLCBwbmFtZSwg
dmFsdWUpOwogfQogCiBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlckluZm9Mb2co
V2ViR0xTaGFkZXIqIHNoYWRlcikKQEAgLTE2MzcsODIgKzE1NDgsMjggQEAgU3RyaW5nIEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRTdHJpbmcodW5zaQogICAgIHJldHVybiBTdHJpbmcocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKj4oZ2xHZXRTdHJpbmcobmFtZSkpKTsKIH0KIAotZmxvYXQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldFRleFBhcmFtZXRlcmYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVu
c2lnbmVkIGxvbmcgcG5hbWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRUZXhQYXJhbWV0
ZXJmdih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgZmxvYXQqIHZh
bHVlKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIGlmICghbV9pbnRlcm5hbC0+
dmFsaWRhdGVUZXh0dXJlVGFyZ2V0KHRhcmdldCkpIHsKLSAgICAgICAgLy8gRklYTUU6IHRocm93
IGV4Y2VwdGlvbi4KLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgaWYgKCFtX2ludGVy
bmFsLT52YWxpZGF0ZVRleHR1cmVQYXJhbWV0ZXIocG5hbWUpKSB7Ci0gICAgICAgIC8vIEZJWE1F
OiB0aHJvdyBleGNlcHRpb24uCi0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIEdMZmxv
YXQgcGFyYW07Ci0gICAgZ2xHZXRUZXhQYXJhbWV0ZXJmdih0YXJnZXQsIHBuYW1lLCAmcGFyYW0p
OwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4ocGFyYW0pOwotfQotCi1QYXNzUmVmUHRy
PFdlYkdMRmxvYXRBcnJheT4gR3JhcGhpY3NDb250ZXh0M0Q6OmdldFRleFBhcmFtZXRlcmZ2KHVu
c2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKQotewotICAgIC8vIEZJWE1F
OiBpbXBsZW1lbnQuCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICBn
bEdldFRleFBhcmFtZXRlcmZ2KHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKIH0KIAotaW50IEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRUZXhQYXJhbWV0ZXJpKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNp
Z25lZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VGV4UGFyYW1ldGVy
aXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIGludCogdmFsdWUp
CiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgaWYgKCFtX2ludGVybmFsLT52YWxp
ZGF0ZVRleHR1cmVUYXJnZXQodGFyZ2V0KSkgewotICAgICAgICAvLyBGSVhNRTogdGhyb3cgZXhj
ZXB0aW9uLgotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBpZiAoIW1faW50ZXJuYWwt
PnZhbGlkYXRlVGV4dHVyZVBhcmFtZXRlcihwbmFtZSkpIHsKLSAgICAgICAgLy8gRklYTUU6IHRo
cm93IGV4Y2VwdGlvbi4KLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgR0xpbnQgcGFy
YW07Ci0gICAgZ2xHZXRUZXhQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmcGFyYW0pOwotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHBhcmFtKTsKLX0KLQotUGFzc1JlZlB0cjxXZWJHTElu
dEFycmF5PiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VGV4UGFyYW1ldGVyaXYodW5zaWduZWQgbG9u
ZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVu
dC4KLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAgIGdsR2V0VGV4UGFy
YW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgdmFsdWUpOwogfQogCi1mbG9hdCBHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0VW5pZm9ybWYoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uKQor
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWZ2KFdlYkdMUHJvZ3JhbSogcHJvZ3Jh
bSwgbG9uZyBsb2NhdGlvbiwgZmxvYXQqIHZhbHVlKQogewotICAgIC8vIEZJWE1FOiBpbXBsZW1l
bnQuCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotUGFzc1JlZlB0
cjxXZWJHTEZsb2F0QXJyYXk+IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtZnYoV2ViR0xQ
cm9ncmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uKQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1l
bnQuCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotaW50IEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtaShXZWJHTFByb2dyYW0qIHByb2dyYW0sIGxvbmcgbG9j
YXRpb24pCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudC4KLSAgICBub3RJbXBsZW1lbnRlZCgp
OwotICAgIHJldHVybiAwOworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIGdsR2V0VW5p
Zm9ybWZ2KEVYVFJBQ1QocHJvZ3JhbSksIGxvY2F0aW9uLCB2YWx1ZSk7CiB9CiAKLVBhc3NSZWZQ
dHI8V2ViR0xJbnRBcnJheT4gR3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1pdihXZWJHTFBy
b2dyYW0qIHByb2dyYW0sIGxvbmcgbG9jYXRpb24pCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRVbmlmb3JtaXYoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uLCBpbnQqIHZh
bHVlKQogewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQuCi0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LSAgICByZXR1cm4gMDsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBnbEdldFVuaWZv
cm1pdihFWFRSQUNUKHByb2dyYW0pLCBsb2NhdGlvbiwgdmFsdWUpOwogfQogCiBsb25nIEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtTG9jYXRpb24oV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBj
b25zdCBTdHJpbmcmIG5hbWUpCkBAIC0xNzI0LDM2ICsxNTgxLDIwIEBAIGxvbmcgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldFVuaWZvcm1Mb2NhdGkKICAgICByZXR1cm4gZ2xHZXRVbmlmb3JtTG9jYXRp
b24oRVhUUkFDVChwcm9ncmFtKSwgbmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIAotZmxvYXQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYmYodW5zaWduZWQgbG9uZyBpbmRleCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgcG5h
bWUpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudC4KLSAgICBub3RJbXBsZW1lbnRlZCgpOwot
ICAgIHJldHVybiAwOwotfQotCi1QYXNzUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gR3JhcGhpY3ND
b250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYmZ2KHVuc2lnbmVkIGxvbmcgaW5kZXgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4
QXR0cmliZnYodW5zaWduZWQgbG9uZyBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgcG5hbWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCogdmFsdWUpCiB7Ci0gICAgLy8gRklYTUU6IGlt
cGxlbWVudC4KLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOwotfQotCi1pbnQg
R3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYmkodW5zaWduZWQgbG9uZyBpbmRleCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHBu
YW1lKQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQuCi0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LSAgICByZXR1cm4gMDsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBnbEdldFZlcnRl
eEF0dHJpYmZ2KGluZGV4LCBwbmFtZSwgdmFsdWUpOwogfQogCi1QYXNzUmVmUHRyPFdlYkdMSW50
QXJyYXk+IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJpdih1bnNpZ25lZCBsb25n
IGluZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgcG5hbWUpCit2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRWZXJ0ZXhBdHRyaWJpdih1bnNpZ25lZCBsb25nIGluZGV4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBwbmFtZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCogdmFsdWUpCiB7Ci0gICAg
Ly8gRklYTUU6IGltcGxlbWVudC4KLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAw
OworICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIGdsR2V0VmVydGV4QXR0cmliaXYoaW5k
ZXgsIHBuYW1lLCB2YWx1ZSk7CiB9CiAKIGxvbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRl
eEF0dHJpYk9mZnNldCh1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBuYW1lKQpA
QCAtMTc4MCw3ICsxNjIxLDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6aXNFbmFibGVkKHVu
c2lnbgogYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6aXNGcmFtZWJ1ZmZlcihXZWJHTEZyYW1lYnVm
ZmVyKiBmcmFtZWJ1ZmZlcikKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICByZXR1
cm4gZ2xJc0ZyYW1lYnVmZmVyKEVYVFJBQ1QoZnJhbWVidWZmZXIpKTsKKyAgICByZXR1cm4gZ2xJ
c0ZyYW1lYnVmZmVyRVhUKEVYVFJBQ1QoZnJhbWVidWZmZXIpKTsKIH0KIAogYm9vbCBHcmFwaGlj
c0NvbnRleHQzRDo6aXNQcm9ncmFtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSkKQEAgLTE3OTIsNyAr
MTYzMyw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmlzUHJvZ3JhbShXZWJHTFAKIGJvb2wg
R3JhcGhpY3NDb250ZXh0M0Q6OmlzUmVuZGVyYnVmZmVyKFdlYkdMUmVuZGVyYnVmZmVyKiByZW5k
ZXJidWZmZXIpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgcmV0dXJuIGdsSXNS
ZW5kZXJidWZmZXIoRVhUUkFDVChyZW5kZXJidWZmZXIpKTsKKyAgICByZXR1cm4gZ2xJc1JlbmRl
cmJ1ZmZlckVYVChFWFRSQUNUKHJlbmRlcmJ1ZmZlcikpOwogfQogCiBib29sIEdyYXBoaWNzQ29u
dGV4dDNEOjppc1NoYWRlcihXZWJHTFNoYWRlciogc2hhZGVyKQpAQCAtMTg0MSw3ICsxNjgyLDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVsZWFzZVNoYWRlckNvbQogewogfQogCi1HTF9T
QU1FX01FVEhPRF80KFJlbmRlcmJ1ZmZlclN0b3JhZ2UsIHJlbmRlcmJ1ZmZlclN0b3JhZ2UsIHVu
c2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcp
CitHTF9TQU1FX01FVEhPRF80KFJlbmRlcmJ1ZmZlclN0b3JhZ2VFWFQsIHJlbmRlcmJ1ZmZlclN0
b3JhZ2UsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2ln
bmVkIGxvbmcpCiAKIEdMX1NBTUVfTUVUSE9EXzIoU2FtcGxlQ292ZXJhZ2UsIHNhbXBsZUNvdmVy
YWdlLCBkb3VibGUsIGJvb2wpCiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDUxMzEyKQorKysgTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTMgQEAKKzIwMDktMTEt
MjMgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSBnZXQuLi4gY2FsbHMgdG8gbGF0
ZXN0IHNwZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMwMDkxCisKKyAgICAgICAgUmVtb3ZlZCBvbGQgdmVyc2lvbnMgb2YgZ2V0IGNhbGxzIG9uIFdl
YkdMUmVuZGVyaW5nQ29udGV4dCBhbmQKKyAgICAgICAgYWRkZWQgbmV3IG9uZXMgcGVyIHNwZWMg
cmV0dXJuaW5nICJhbnkiLiBOZXcgY29kZSBzaW1wbGlmaWVzCisgICAgICAgIEdyYXBoaWNzQ29u
dGV4dDNEIGFuZCBmaXhlcyBwcmV2aW91c2x5IHVuaW1wbGVtZW50ZWQgcm91dGluZXMuCisgICAg
ICAgIEFkZGVkIGN1c3RvbSBKUyBhbmQgVjggYmluZGluZ3MuIEFkZGVkIGV4aGF1c3RpdmUgdGVz
dCBjYXNlCisgICAgICAgIGV4ZXJjaXNpbmcgYWxsIG5ldyBjb2RlIHBhdGhzLiBVcGRhdGVkIHBy
ZWV4aXN0aW5nIHRlc3QgY2FzZXMgZm9yCisgICAgICAgIG5ldyBBUElzLiBGaXhlZCBwcmVleGlz
dGluZyBidWdzIGluIFdlYktpdCdzIGFuZCBDaHJvbWUncyBXZWJHTAorICAgICAgICBpbXBsZW1l
bnRhdGlvbnMuCisKKyAgICAgICAgUmFuIFdlYkdMIGxheW91dCB0ZXN0cyBpbiBXZWJLaXQgKGNs
ZWFuKSBhbmQgQ2hyb21lIChjb3VwbGUgb2YKKyAgICAgICAgcHJlZXhpc3Rpbmcga25vd24gZmFp
bHVyZXMpIGFuZCBtYW51YWwgV2ViR0wgdGVzdHMgaW4gYm90aAorICAgICAgICBicm93c2Vycy4K
KworICAgICAgICBUZXN0OiBmYXN0L2NhbnZhcy93ZWJnbC9nbC1vYmplY3QtZ2V0LWNhbGxzLmh0
bWwKKworICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2dsLWdldC1jYWxscy1leHBlY3RlZC50
eHQ6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvZ2wtZ2V0LWNhbGxzLmh0bWw6CisgICAg
ICAgICogZmFzdC9jYW52YXMvd2ViZ2wvZ2wtb2JqZWN0LWdldC1jYWxscy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2dsLW9iamVjdC1nZXQtY2FsbHMu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvaW5jb3JyZWN0LWNvbnRl
eHQtb2JqZWN0LWJlaGF2aW91ci1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9jYW52YXMv
d2ViZ2wvbnVsbC1vYmplY3QtYmVoYXZpb3VyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0
L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvYm9vbFVuaWZvcm1TaGFkZXIudmVydDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL2Zsb2F0VW5pZm9ybVNoYWRlci52
ZXJ0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvaW50VW5p
Zm9ybVNoYWRlci52ZXJ0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9yZXNv
dXJjZXMvbWF0VW5pZm9ybVNoYWRlci52ZXJ0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZh
cy93ZWJnbC9yZXNvdXJjZXMvbm9vcFVuaWZvcm1TaGFkZXIuZnJhZzogQWRkZWQuCisgICAgICAg
ICogZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3V0aWxzM2QuanM6CisgICAgICAgIChpbml0
V2ViR0wpOgorICAgICAgICAobG9hZFNoYWRlcik6CisgICAgICAgIChGcmFtZXJhdGUucHJvdG90
eXBlLnNuYXBzaG90KToKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvd2Vi
Z2wtdGVzdC5qczoKKyAgICAgICAgKGxvYWRQcm9ncmFtKToKKyAgICAgICAgKGxvYWRTdGFuZGFy
ZFZlcnRleFNoYWRlcik6CisgICAgICAgIChsb2FkVmVydGV4U2hhZGVyKToKKyAgICAgICAgKGxv
YWRTdGFuZGFyZEZyYWdtZW50U2hhZGVyKToKKyAgICAgICAgKGxvYWRGcmFnbWVudFNoYWRlcik6
CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL2dsLW9iamVjdC1nZXQt
Y2FsbHMuanM6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0
cy9pbmNvcnJlY3QtY29udGV4dC1vYmplY3QtYmVoYXZpb3VyLmpzOgorICAgICAgICAqIGZhc3Qv
Y2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9udWxsLW9iamVjdC1iZWhhdmlvdXIuanM6CisgICAg
ICAgICogZmFzdC9jYW52YXMvd2ViZ2wvdHJpYW5nbGUuaHRtbDoKKyAgICAgICAgKiBmYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qczoKKyAgICAgICAgKHNob3VsZEJlTm9uWmVybyk6Cisg
ICAgICAgIChzaG91bGRCZU5vbk51bGwpOgorCiAyMDA5LTExLTIyICBDaHJpcyBGbGVpemFjaCAg
PGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQu
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC1nZXQtY2FsbHMtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLWdl
dC1jYWxscy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDUxMjc4KQorKysgTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvd2ViZ2wvZ2wtZ2V0LWNhbGxzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMTMsNjAgKzEzLDYxIEBAIENvbnRleHQgY29udGFpbnMgZ2V0RXJyb3IKIFBBU1MgY29udGV4
dCBjb250YWlucyBnZXRFcnJvcgogCiBDaGVjayBkZWZhdWx0IHZhbHVlcwotUEFTUyBjb250ZXh0
LmdldEludGVnZXIoY29udGV4dC5BQ1RJVkVfVEVYVFVSRSkgaXMgY29udGV4dC5URVhUVVJFMAot
UEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5BTElBU0VEX0xJTkVfV0lEVEhfUkFOR0Up
IGlzIDEKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuQUxJQVNFRF9QT0lOVF9TSVpF
X1JBTkdFKSBpcyAxCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkFSUkFZX0JVRkZF
Ul9CSU5ESU5HKSBpcyAwCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkJMRU5EKSBp
cyAwCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkJMRU5EX0NPTE9SKSBpcyAwCi1Q
QVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkJMRU5EX0RTVF9BTFBIQSkgaXMgMAotUEFT
UyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5CTEVORF9EU1RfUkdCKSBpcyAwCi1QQVNTIGNv
bnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkJMRU5EX0VRVUFUSU9OX0FMUEhBKSBpcyBjb250ZXh0
LkZVTkNfQURECi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkJMRU5EX0VRVUFUSU9O
X1JHQikgaXMgY29udGV4dC5GVU5DX0FERAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4
dC5CTEVORF9TUkNfQUxQSEEpIGlzIDEKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQu
QkxFTkRfU1JDX1JHQikgaXMgMQotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5DT0xP
Ul9DTEVBUl9WQUxVRSkgaXMgMAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5DT0xP
Ul9XUklURU1BU0spIGlzIDEKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuQ1VMTF9G
QUNFKSBpcyAwCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkNVTExfRkFDRV9NT0RF
KSBpcyBjb250ZXh0LkJBQ0sKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuQ1VSUkVO
VF9QUk9HUkFNKSBpcyAwCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkRFUFRIX0ZV
TkMpIGlzIGNvbnRleHQuTEVTUwotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5ERVBU
SF9SQU5HRSkgaXMgMAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5ERVBUSF9URVNU
KSBpcyAwCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkRFUFRIX1dSSVRFTUFTSykg
aXMgMQotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5ESVRIRVIpIGlzIDEKLVBBU1Mg
Y29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElORykg
aXMgMAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5GUk9OVF9GQUNFKSBpcyBjb250
ZXh0LkNDVwotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5HRU5FUkFURV9NSVBNQVBf
SElOVCkgaXMgY29udGV4dC5ET05UX0NBUkUKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRl
eHQuTElORV9XSURUSCkgaXMgMQotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5QT0xZ
R09OX09GRlNFVF9GQUNUT1IpIGlzIDAKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQu
UE9MWUdPTl9PRkZTRVRfRklMTCkgaXMgMAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4
dC5QT0xZR09OX09GRlNFVF9VTklUUykgaXMgMAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29u
dGV4dC5SRU5ERVJCVUZGRVJfQklORElOR19FWFQpIGlzIDAKLVBBU1MgY29udGV4dC5nZXRJbnRl
Z2VyKGNvbnRleHQuU0FNUExFX0NPVkVSQUdFX0lOVkVSVCkgaXMgMAotUEFTUyBjb250ZXh0Lmdl
dEludGVnZXIoY29udGV4dC5TQU1QTEVfQ09WRVJBR0VfVkFMVUUpIGlzIDEKLVBBU1MgY29udGV4
dC5nZXRJbnRlZ2VyKGNvbnRleHQuU0NJU1NPUl9CT1gpIGlzIDAKLVBBU1MgY29udGV4dC5nZXRJ
bnRlZ2VyKGNvbnRleHQuU0NJU1NPUl9URVNUKSBpcyAwCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdl
cihjb250ZXh0LlNURU5DSUxfQkFDS19GQUlMKSBpcyBjb250ZXh0LktFRVAKLVBBU1MgY29udGV4
dC5nZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9CQUNLX0ZVTkMpIGlzIGNvbnRleHQuQUxXQVlT
Ci1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlNURU5DSUxfQkFDS19QQVNTX0RFUFRI
X0ZBSUwpIGlzIGNvbnRleHQuS0VFUAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5T
VEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9QQVNTKSBpcyBjb250ZXh0LktFRVAKLVBBU1MgY29udGV4
dC5nZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9CQUNLX1JFRikgaXMgMAotUEFTUyBjb250ZXh0
LmdldEludGVnZXIoY29udGV4dC5TVEVOQ0lMX0JBQ0tfVkFMVUVfTUFTSykgaXMgLTEKLVBBU1Mg
Y29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9CQUNLX1dSSVRFTUFTSykgaXMgLTEK
LVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9CSVRTKSBpcyAwCi1QQVNT
IGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlNURU5DSUxfQ0xFQVJfVkFMVUUpIGlzIDAKLVBB
U1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9GQUlMKSBpcyBjb250ZXh0LktF
RVAKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9GVU5DKSBpcyBjb250
ZXh0LkFMV0FZUwotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVOQ0lMX1BBU1Nf
REVQVEhfRkFJTCkgaXMgY29udGV4dC5LRUVQCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250
ZXh0LlNURU5DSUxfUEFTU19ERVBUSF9QQVNTKSBpcyBjb250ZXh0LktFRVAKLVBBU1MgY29udGV4
dC5nZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9SRUYpIGlzIDAKLVBBU1MgY29udGV4dC5nZXRJ
bnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9URVNUKSBpcyAwCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdl
cihjb250ZXh0LlNURU5DSUxfVkFMVUVfTUFTSykgaXMgLTEKLVBBU1MgY29udGV4dC5nZXRJbnRl
Z2VyKGNvbnRleHQuU1RFTkNJTF9XUklURU1BU0spIGlzIC0xCi1QQVNTIGNvbnRleHQuZ2V0SW50
ZWdlcihjb250ZXh0LlRFWFRVUkVfQklORElOR18yRCkgaXMgMAotUEFTUyBjb250ZXh0LmdldElu
dGVnZXIoY29udGV4dC5URVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVApIGlzIDAKLVBBU1MgY29udGV4
dC5nZXRJbnRlZ2VyKGNvbnRleHQuVklFV1BPUlQpIGlzIDAKK1BBU1MgY29udGV4dC5nZXRQYXJh
bWV0ZXIoY29udGV4dC5BQ1RJVkVfVEVYVFVSRSkgaXMgY29udGV4dC5URVhUVVJFMAorUEFTUyAo
Y29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5BTElBU0VEX0xJTkVfV0lEVEhfUkFOR0UpWzBd
ID09IDEpIHx8IChjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkFMSUFTRURfTElORV9XSURU
SF9SQU5HRSlbMV0gPT0gMSkgaXMgdHJ1ZQorUEFTUyAoY29udGV4dC5nZXRQYXJhbWV0ZXIoY29u
dGV4dC5BTElBU0VEX1BPSU5UX1NJWkVfUkFOR0UpWzBdID09IDEpIHx8IChjb250ZXh0LmdldFBh
cmFtZXRlcihjb250ZXh0LkFMSUFTRURfUE9JTlRfU0laRV9SQU5HRSlbMV0gPT0gMSkgaXMgdHJ1
ZQorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkFSUkFZX0JVRkZFUl9CSU5ESU5H
KSBpcyBudWxsCitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQkxFTkQpIGlzIGZh
bHNlCitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQkxFTkRfQ09MT1IpIGlzIFsw
LCAwLCAwLCAwXQorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkJMRU5EX0RTVF9B
TFBIQSkgaXMgMAorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkJMRU5EX0RTVF9S
R0IpIGlzIDAKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5CTEVORF9FUVVBVElP
Tl9BTFBIQSkgaXMgY29udGV4dC5GVU5DX0FERAorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihj
b250ZXh0LkJMRU5EX0VRVUFUSU9OX1JHQikgaXMgY29udGV4dC5GVU5DX0FERAorUEFTUyBjb250
ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkJMRU5EX1NSQ19BTFBIQSkgaXMgMQorUEFTUyBjb250
ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkJMRU5EX1NSQ19SR0IpIGlzIDEKK1BBU1MgY29udGV4
dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5DT0xPUl9DTEVBUl9WQUxVRSkgaXMgWzAsIDAsIDAsIDBd
CitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQ09MT1JfV1JJVEVNQVNLKSBpcyBb
MSwgMSwgMSwgMV0KK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5DVUxMX0ZBQ0Up
IGlzIGZhbHNlCitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQ1VMTF9GQUNFX01P
REUpIGlzIGNvbnRleHQuQkFDSworUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkNV
UlJFTlRfUFJPR1JBTSkgaXMgbnVsbAorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0
LkRFUFRIX0ZVTkMpIGlzIGNvbnRleHQuTEVTUworUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihj
b250ZXh0LkRFUFRIX1JBTkdFKSBpcyBbMCwgMV0KK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIo
Y29udGV4dC5ERVBUSF9URVNUKSBpcyBmYWxzZQorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihj
b250ZXh0LkRFUFRIX1dSSVRFTUFTSykgaXMgdHJ1ZQorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRl
cihjb250ZXh0LkRJVEhFUikgaXMgdHJ1ZQorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250
ZXh0LkVMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkcpIGlzIG51bGwKK1BBU1MgY29udGV4dC5n
ZXRQYXJhbWV0ZXIoY29udGV4dC5GUk9OVF9GQUNFKSBpcyBjb250ZXh0LkNDVworUEFTUyBjb250
ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkdFTkVSQVRFX01JUE1BUF9ISU5UKSBpcyBjb250ZXh0
LkRPTlRfQ0FSRQorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkxJTkVfV0lEVEgp
IGlzIDEKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5QT0xZR09OX09GRlNFVF9G
QUNUT1IpIGlzIDAKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5QT0xZR09OX09G
RlNFVF9GSUxMKSBpcyBmYWxzZQorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlBP
TFlHT05fT0ZGU0VUX1VOSVRTKSBpcyAwCitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRl
eHQuUkVOREVSQlVGRkVSX0JJTkRJTkcpIGlzIG51bGwKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0
ZXIoY29udGV4dC5TQU1QTEVfQ09WRVJBR0VfSU5WRVJUKSBpcyBmYWxzZQorUEFTUyBjb250ZXh0
LmdldFBhcmFtZXRlcihjb250ZXh0LlNBTVBMRV9DT1ZFUkFHRV9WQUxVRSkgaXMgMQorUEFTUyBj
b250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNDSVNTT1JfQk9YKVswXSBpcyAwCitQQVNTIGNv
bnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU0NJU1NPUl9CT1gpWzFdIGlzIDAKK1BBU1MgY29u
dGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TQ0lTU09SX1RFU1QpIGlzIGZhbHNlCitQQVNTIGNv
bnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9CQUNLX0ZBSUwpIGlzIGNvbnRleHQu
S0VFUAorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5DSUxfQkFDS19GVU5D
KSBpcyBjb250ZXh0LkFMV0FZUworUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNU
RU5DSUxfQkFDS19QQVNTX0RFUFRIX0ZBSUwpIGlzIGNvbnRleHQuS0VFUAorUEFTUyBjb250ZXh0
LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5DSUxfQkFDS19QQVNTX0RFUFRIX1BBU1MpIGlzIGNv
bnRleHQuS0VFUAorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5DSUxfQkFD
S19SRUYpIGlzIDAKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX0JB
Q0tfVkFMVUVfTUFTSykgaXMgMHhGRkZGRkZGRgorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihj
b250ZXh0LlNURU5DSUxfQkFDS19XUklURU1BU0spIGlzIDB4RkZGRkZGRkYKK1BBU1MgY29udGV4
dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX0JJVFMpIGlzIDAKK1BBU1MgY29udGV4dC5n
ZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX0NMRUFSX1ZBTFVFKSBpcyAwCitQQVNTIGNvbnRl
eHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9GQUlMKSBpcyBjb250ZXh0LktFRVAKK1BB
U1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX0ZVTkMpIGlzIGNvbnRleHQu
QUxXQVlTCitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9QQVNTX0RF
UFRIX0ZBSUwpIGlzIGNvbnRleHQuS0VFUAorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250
ZXh0LlNURU5DSUxfUEFTU19ERVBUSF9QQVNTKSBpcyBjb250ZXh0LktFRVAKK1BBU1MgY29udGV4
dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX1JFRikgaXMgMAorUEFTUyBjb250ZXh0Lmdl
dFBhcmFtZXRlcihjb250ZXh0LlNURU5DSUxfVEVTVCkgaXMgZmFsc2UKK1BBU1MgY29udGV4dC5n
ZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX1ZBTFVFX01BU0spIGlzIDB4RkZGRkZGRkYKK1BB
U1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX1dSSVRFTUFTSykgaXMgMHhG
RkZGRkZGRgorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlRFWFRVUkVfQklORElO
R18yRCkgaXMgbnVsbAorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlRFWFRVUkVf
QklORElOR19DVUJFX01BUCkgaXMgbnVsbAorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250
ZXh0LlZJRVdQT1JUKSBpcyBbMCwgMCwgMiwgMl0KIAogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC1nZXQtY2Fs
bHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC1n
ZXQtY2FsbHMuaHRtbAkocmV2aXNpb24gNTEyNzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy93ZWJnbC9nbC1nZXQtY2FsbHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNyw3ICs3LDcgQEAK
IDxib2R5PgogPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgogPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Ci08Y2FudmFzIGlkPSJjYW52YXMiPiA8L2NhbnZhcz4KKzxjYW52YXMgaWQ9ImNhbnZh
cyIgd2lkdGg9IjIiIGhlaWdodD0iMiI+IDwvY2FudmFzPgogCiA8c2NyaXB0PgogCkBAIC0zOCw2
MCArMzgsNjEgQEAgZWxzZSB7CiAKICAgICBkZWJ1ZygiIik7CiAgICAgZGVidWcoIkNoZWNrIGRl
ZmF1bHQgdmFsdWVzIik7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0
LkFDVElWRV9URVhUVVJFKScsICdjb250ZXh0LlRFWFRVUkUwJyk7Ci0gICAgc2hvdWxkQmUoJ2Nv
bnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkFMSUFTRURfTElORV9XSURUSF9SQU5HRSknLCAnMScp
OwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5BTElBU0VEX1BPSU5U
X1NJWkVfUkFOR0UpJywgJzEnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNv
bnRleHQuQVJSQVlfQlVGRkVSX0JJTkRJTkcpJywgJzAnKTsKLSAgICBzaG91bGRCZSgnY29udGV4
dC5nZXRJbnRlZ2VyKGNvbnRleHQuQkxFTkQpJywgJzAnKTsKLSAgICBzaG91bGRCZSgnY29udGV4
dC5nZXRJbnRlZ2VyKGNvbnRleHQuQkxFTkRfQ09MT1IpJywgJzAnKTsKLSAgICBzaG91bGRCZSgn
Y29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuQkxFTkRfRFNUX0FMUEhBKScsICcwJyk7Ci0gICAg
c2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkJMRU5EX0RTVF9SR0IpJywgJzAn
KTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuQkxFTkRfRVFVQVRJ
T05fQUxQSEEpJywgJ2NvbnRleHQuRlVOQ19BREQnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5n
ZXRJbnRlZ2VyKGNvbnRleHQuQkxFTkRfRVFVQVRJT05fUkdCKScsICdjb250ZXh0LkZVTkNfQURE
Jyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkJMRU5EX1NSQ19B
TFBIQSknLCAnMScpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5C
TEVORF9TUkNfUkdCKScsICcxJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihj
b250ZXh0LkNPTE9SX0NMRUFSX1ZBTFVFKScsICcwJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQu
Z2V0SW50ZWdlcihjb250ZXh0LkNPTE9SX1dSSVRFTUFTSyknLCAnMScpOwotICAgIHNob3VsZEJl
KCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5DVUxMX0ZBQ0UpJywgJzAnKTsKLSAgICBzaG91
bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuQ1VMTF9GQUNFX01PREUpJywgJ2NvbnRl
eHQuQkFDSycpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5DVVJS
RU5UX1BST0dSQU0pJywgJzAnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNv
bnRleHQuREVQVEhfRlVOQyknLCAnY29udGV4dC5MRVNTJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRl
eHQuZ2V0SW50ZWdlcihjb250ZXh0LkRFUFRIX1JBTkdFKScsICcwJyk7Ci0gICAgc2hvdWxkQmUo
J2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkRFUFRIX1RFU1QpJywgJzAnKTsKLSAgICBzaG91
bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuREVQVEhfV1JJVEVNQVNLKScsICcxJyk7
Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkRJVEhFUiknLCAnMScp
OwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5FTEVNRU5UX0FSUkFZ
X0JVRkZFUl9CSU5ESU5HKScsICcwJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdl
cihjb250ZXh0LkZST05UX0ZBQ0UpJywgJ2NvbnRleHQuQ0NXJyk7Ci0gICAgc2hvdWxkQmUoJ2Nv
bnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkdFTkVSQVRFX01JUE1BUF9ISU5UKScsICdjb250ZXh0
LkRPTlRfQ0FSRScpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5M
SU5FX1dJRFRIKScsICcxJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250
ZXh0LlBPTFlHT05fT0ZGU0VUX0ZBQ1RPUiknLCAnMCcpOwotICAgIHNob3VsZEJlKCdjb250ZXh0
LmdldEludGVnZXIoY29udGV4dC5QT0xZR09OX09GRlNFVF9GSUxMKScsICcwJyk7Ci0gICAgc2hv
dWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlBPTFlHT05fT0ZGU0VUX1VOSVRTKScs
ICcwJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlJFTkRFUkJV
RkZFUl9CSU5ESU5HX0VYVCknLCAnMCcpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVn
ZXIoY29udGV4dC5TQU1QTEVfQ09WRVJBR0VfSU5WRVJUKScsICcwJyk7Ci0gICAgc2hvdWxkQmUo
J2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlNBTVBMRV9DT1ZFUkFHRV9WQUxVRSknLCAnMScp
OwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TQ0lTU09SX0JPWCkn
LCAnMCcpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TQ0lTU09S
X1RFU1QpJywgJzAnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQu
U1RFTkNJTF9CQUNLX0ZBSUwpJywgJ2NvbnRleHQuS0VFUCcpOwotICAgIHNob3VsZEJlKCdjb250
ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVOQ0lMX0JBQ0tfRlVOQyknLCAnY29udGV4dC5BTFdB
WVMnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9C
QUNLX1BBU1NfREVQVEhfRkFJTCknLCAnY29udGV4dC5LRUVQJyk7Ci0gICAgc2hvdWxkQmUoJ2Nv
bnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlNURU5DSUxfQkFDS19QQVNTX0RFUFRIX1BBU1MpJywg
J2NvbnRleHQuS0VFUCcpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4
dC5TVEVOQ0lMX0JBQ0tfUkVGKScsICcwJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50
ZWdlcihjb250ZXh0LlNURU5DSUxfQkFDS19WQUxVRV9NQVNLKScsICctMScpOwotICAgIHNob3Vs
ZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLKScs
ICctMScpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVOQ0lM
X0JJVFMpJywgJzAnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQu
U1RFTkNJTF9DTEVBUl9WQUxVRSknLCAnMCcpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldElu
dGVnZXIoY29udGV4dC5TVEVOQ0lMX0ZBSUwpJywgJ2NvbnRleHQuS0VFUCcpOwotICAgIHNob3Vs
ZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVOQ0lMX0ZVTkMpJywgJ2NvbnRleHQu
QUxXQVlTJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlNURU5D
SUxfUEFTU19ERVBUSF9GQUlMKScsICdjb250ZXh0LktFRVAnKTsKLSAgICBzaG91bGRCZSgnY29u
dGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9QQVNTX0RFUFRIX1BBU1MpJywgJ2NvbnRl
eHQuS0VFUCcpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVO
Q0lMX1JFRiknLCAnMCcpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4
dC5TVEVOQ0lMX1RFU1QpJywgJzAnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2Vy
KGNvbnRleHQuU1RFTkNJTF9WQUxVRV9NQVNLKScsICctMScpOwotICAgIHNob3VsZEJlKCdjb250
ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVOQ0lMX1dSSVRFTUFTSyknLCAnLTEnKTsKLSAgICBz
aG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuVEVYVFVSRV9CSU5ESU5HXzJEKScs
ICcwJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlRFWFRVUkVf
QklORElOR19DVUJFX01BUCknLCAnMCcpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVn
ZXIoY29udGV4dC5WSUVXUE9SVCknLCAnMCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBh
cmFtZXRlcihjb250ZXh0LkFDVElWRV9URVhUVVJFKScsICdjb250ZXh0LlRFWFRVUkUwJyk7Cisg
ICAgc2hvdWxkQmUoJyhjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkFMSUFTRURfTElORV9X
SURUSF9SQU5HRSlbMF0gPT0gMSkgfHwgKGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQUxJ
QVNFRF9MSU5FX1dJRFRIX1JBTkdFKVsxXSA9PSAxKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUo
Jyhjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkFMSUFTRURfUE9JTlRfU0laRV9SQU5HRSlb
MF0gPT0gMSkgfHwgKGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQUxJQVNFRF9QT0lOVF9T
SVpFX1JBTkdFKVsxXSA9PSAxKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0
UGFyYW1ldGVyKGNvbnRleHQuQVJSQVlfQlVGRkVSX0JJTkRJTkcpJywgJ251bGwnKTsKKyAgICBz
aG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5CTEVORCknLCAnZmFsc2UnKTsK
KyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5CTEVORF9DT0xPUikn
LCAnWzAsIDAsIDAsIDBdJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNv
bnRleHQuQkxFTkRfRFNUX0FMUEhBKScsICcwJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0
UGFyYW1ldGVyKGNvbnRleHQuQkxFTkRfRFNUX1JHQiknLCAnMCcpOworICAgIHNob3VsZEJlKCdj
b250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkJMRU5EX0VRVUFUSU9OX0FMUEhBKScsICdjb250
ZXh0LkZVTkNfQUREJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRl
eHQuQkxFTkRfRVFVQVRJT05fUkdCKScsICdjb250ZXh0LkZVTkNfQUREJyk7CisgICAgc2hvdWxk
QmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQkxFTkRfU1JDX0FMUEhBKScsICcxJyk7
CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQkxFTkRfU1JDX1JH
QiknLCAnMScpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkNP
TE9SX0NMRUFSX1ZBTFVFKScsICdbMCwgMCwgMCwgMF0nKTsKKyAgICBzaG91bGRCZSgnY29udGV4
dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5DT0xPUl9XUklURU1BU0spJywgJ1sxLCAxLCAxLCAxXScp
OworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkNVTExfRkFDRSkn
LCAnZmFsc2UnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5D
VUxMX0ZBQ0VfTU9ERSknLCAnY29udGV4dC5CQUNLJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQu
Z2V0UGFyYW1ldGVyKGNvbnRleHQuQ1VSUkVOVF9QUk9HUkFNKScsICdudWxsJyk7CisgICAgc2hv
dWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuREVQVEhfRlVOQyknLCAnY29udGV4
dC5MRVNTJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuREVQ
VEhfUkFOR0UpJywgJ1swLCAxXScpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRl
cihjb250ZXh0LkRFUFRIX1RFU1QpJywgJ2ZhbHNlJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQu
Z2V0UGFyYW1ldGVyKGNvbnRleHQuREVQVEhfV1JJVEVNQVNLKScsICd0cnVlJyk7CisgICAgc2hv
dWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuRElUSEVSKScsICd0cnVlJyk7Cisg
ICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuRUxFTUVOVF9BUlJBWV9C
VUZGRVJfQklORElORyknLCAnbnVsbCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFt
ZXRlcihjb250ZXh0LkZST05UX0ZBQ0UpJywgJ2NvbnRleHQuQ0NXJyk7CisgICAgc2hvdWxkQmUo
J2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuR0VORVJBVEVfTUlQTUFQX0hJTlQpJywgJ2Nv
bnRleHQuRE9OVF9DQVJFJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNv
bnRleHQuTElORV9XSURUSCknLCAnMScpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFt
ZXRlcihjb250ZXh0LlBPTFlHT05fT0ZGU0VUX0ZBQ1RPUiknLCAnMCcpOworICAgIHNob3VsZEJl
KCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlBPTFlHT05fT0ZGU0VUX0ZJTEwpJywgJ2Zh
bHNlJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuUE9MWUdP
Tl9PRkZTRVRfVU5JVFMpJywgJzAnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0
ZXIoY29udGV4dC5SRU5ERVJCVUZGRVJfQklORElORyknLCAnbnVsbCcpOworICAgIHNob3VsZEJl
KCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNBTVBMRV9DT1ZFUkFHRV9JTlZFUlQpJywg
J2ZhbHNlJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU0FN
UExFX0NPVkVSQUdFX1ZBTFVFKScsICcxJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFy
YW1ldGVyKGNvbnRleHQuU0NJU1NPUl9CT1gpWzBdJywgJzAnKTsKKyAgICBzaG91bGRCZSgnY29u
dGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TQ0lTU09SX0JPWClbMV0nLCAnMCcpOworICAgIHNo
b3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNDSVNTT1JfVEVTVCknLCAnZmFs
c2UnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lM
X0JBQ0tfRkFJTCknLCAnY29udGV4dC5LRUVQJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0
UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9CQUNLX0ZVTkMpJywgJ2NvbnRleHQuQUxXQVlTJyk7
CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9CQUNL
X1BBU1NfREVQVEhfRkFJTCknLCAnY29udGV4dC5LRUVQJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRl
eHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTUyknLCAn
Y29udGV4dC5LRUVQJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRl
eHQuU1RFTkNJTF9CQUNLX1JFRiknLCAnMCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBh
cmFtZXRlcihjb250ZXh0LlNURU5DSUxfQkFDS19WQUxVRV9NQVNLKScsICcweEZGRkZGRkZGJyk7
CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9CQUNL
X1dSSVRFTUFTSyknLCAnMHhGRkZGRkZGRicpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBh
cmFtZXRlcihjb250ZXh0LlNURU5DSUxfQklUUyknLCAnMCcpOworICAgIHNob3VsZEJlKCdjb250
ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5DSUxfQ0xFQVJfVkFMVUUpJywgJzAnKTsKKyAg
ICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX0ZBSUwpJywg
J2NvbnRleHQuS0VFUCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250
ZXh0LlNURU5DSUxfRlVOQyknLCAnY29udGV4dC5BTFdBWVMnKTsKKyAgICBzaG91bGRCZSgnY29u
dGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX1BBU1NfREVQVEhfRkFJTCknLCAnY29u
dGV4dC5LRUVQJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQu
U1RFTkNJTF9QQVNTX0RFUFRIX1BBU1MpJywgJ2NvbnRleHQuS0VFUCcpOworICAgIHNob3VsZEJl
KCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5DSUxfUkVGKScsICcwJyk7CisgICAg
c2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9URVNUKScsICdm
YWxzZScpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5D
SUxfVkFMVUVfTUFTSyknLCAnMHhGRkZGRkZGRicpOworICAgIHNob3VsZEJlKCdjb250ZXh0Lmdl
dFBhcmFtZXRlcihjb250ZXh0LlNURU5DSUxfV1JJVEVNQVNLKScsICcweEZGRkZGRkZGJyk7Cisg
ICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuVEVYVFVSRV9CSU5ESU5H
XzJEKScsICdudWxsJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRl
eHQuVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQKScsICdudWxsJyk7CisgICAgc2hvdWxkQmUoJ2Nv
bnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuVklFV1BPUlQpJywgJ1swLCAwLCAyLCAyXScpOwog
fQogCiBkZWJ1ZygiIik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC1v
YmplY3QtZ2V0LWNhbGxzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy93ZWJnbC9nbC1vYmplY3QtZ2V0LWNhbGxzLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLW9iamVjdC1nZXQtY2Fs
bHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgwIEBACitUZXN0IG9mIGdl
dCBjYWxscyBhZ2FpbnN0IEdMIG9iamVjdHMgbGlrZSBnZXRCdWZmZXJQYXJhbWV0ZXIsIGV0Yy4K
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIGdsLmdldEJ1ZmZlclBhcmFtZXRl
cihnbC5BUlJBWV9CVUZGRVIsIGdsLkJVRkZFUl9TSVpFKSBpcyAxNgorUEFTUyBnbC5nZXRCdWZm
ZXJQYXJhbWV0ZXIoZ2wuQVJSQVlfQlVGRkVSLCBnbC5CVUZGRVJfVVNBR0UpIGlzIGdsLkRZTkFN
SUNfRFJBVworUEFTUyBnbC5nZXRFcnJvcigpIGlzIDAKK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyAw
CitQQVNTIGdsLmdldEVycm9yKCkgaXMgMAorUEFTUyBnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVz
KGdsLkZSQU1FQlVGRkVSKSBpcyBnbC5GUkFNRUJVRkZFUl9DT01QTEVURQorUEFTUyBnbC5nZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FU
VEFDSE1FTlQwLCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFKSBpcyBnbC5U
RVhUVVJFCitQQVNTIGdsLmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFN
RUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRf
T0JKRUNUX05BTUUpIGlzIG5vbi1udWxsLgorUEFTUyBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5GUkFN
RUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEVWRUwpIGlzIDAKK1BBU1MgZ2wuZ2V0RnJhbWVi
dWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hN
RU5UMCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0UpIGlz
IDAKK1BBU1MgZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVG
RkVSLCBnbC5ERVBUSF9BVFRBQ0hNRU5ULCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVD
VF9UWVBFKSBpcyBnbC5SRU5ERVJCVUZGRVIKK1BBU1MgZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2ht
ZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5ERVBUSF9BVFRBQ0hNRU5ULCBnbC5GUkFN
RUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FKSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0
UHJvZ3JhbVBhcmFtZXRlcihzdGFuZGFyZFByb2dyYW0sIGdsLkRFTEVURV9TVEFUVVMpIGlzIGZh
bHNlCitQQVNTIGdsLmdldFByb2dyYW1QYXJhbWV0ZXIoc3RhbmRhcmRQcm9ncmFtLCBnbC5MSU5L
X1NUQVRVUykgaXMgdHJ1ZQorUEFTUyB0eXBlb2YgZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihzdGFu
ZGFyZFByb2dyYW0sIGdsLlZBTElEQVRFX1NUQVRVUykgaXMgImJvb2xlYW4iCitQQVNTIHR5cGVv
ZiBnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHN0YW5kYXJkUHJvZ3JhbSwgZ2wuSU5GT19MT0dfTEVO
R1RIKSBpcyAibnVtYmVyIgorUEFTUyBnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHN0YW5kYXJkUHJv
Z3JhbSwgZ2wuQVRUQUNIRURfU0hBREVSUykgaXMgMgorUEFTUyBnbC5nZXRQcm9ncmFtUGFyYW1l
dGVyKHN0YW5kYXJkUHJvZ3JhbSwgZ2wuQUNUSVZFX0FUVFJJQlVURVMpIGlzIDIKK1BBU1MgZ2wu
Z2V0UHJvZ3JhbVBhcmFtZXRlcihzdGFuZGFyZFByb2dyYW0sIGdsLkFDVElWRV9BVFRSSUJVVEVf
TUFYX0xFTkdUSCkgaXMgbm9uLXplcm8uCitQQVNTIGdsLmdldFByb2dyYW1QYXJhbWV0ZXIoc3Rh
bmRhcmRQcm9ncmFtLCBnbC5BQ1RJVkVfVU5JRk9STVMpIGlzIDEKK1BBU1MgZ2wuZ2V0UHJvZ3Jh
bVBhcmFtZXRlcihzdGFuZGFyZFByb2dyYW0sIGdsLkFDVElWRV9VTklGT1JNX01BWF9MRU5HVEgp
IGlzIG5vbi16ZXJvLgorUEFTUyBnbC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoZ2wuUkVOREVS
QlVGRkVSLCBnbC5SRU5ERVJCVUZGRVJfV0lEVEgpIGlzIDIKK1BBU1MgZ2wuZ2V0UmVuZGVyYnVm
ZmVyUGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkVOREVSQlVGRkVSX0hFSUdIVCkgaXMg
MgorUEFTUyBnbC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBnbC5S
RU5ERVJCVUZGRVJfSU5URVJOQUxfRk9STUFUKSBpcyBub24temVyby4KK1BBU1MgZ2wuZ2V0UmVu
ZGVyYnVmZmVyUGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkVOREVSQlVGRkVSX0RFUFRI
X1NJWkUpIGlzIG5vbi16ZXJvLgorUEFTUyBnbC5nZXRFcnJvcigpIGlzIDAKK1BBU1MgZ2wuZ2V0
RXJyb3IoKSBpcyAwCitQQVNTIGdsLmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcihnbC5SRU5ERVJC
VUZGRVIsIGdsLlJFTkRFUkJVRkZFUl9SRURfU0laRSkgaXMgbm9uLXplcm8uCitQQVNTIGdsLmdl
dFJlbmRlcmJ1ZmZlclBhcmFtZXRlcihnbC5SRU5ERVJCVUZGRVIsIGdsLlJFTkRFUkJVRkZFUl9H
UkVFTl9TSVpFKSBpcyBub24temVyby4KK1BBU1MgZ2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVy
KGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkVOREVSQlVGRkVSX0JMVUVfU0laRSkgaXMgbm9uLXplcm8u
CitQQVNTIGdsLmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcihnbC5SRU5ERVJCVUZGRVIsIGdsLlJF
TkRFUkJVRkZFUl9BTFBIQV9TSVpFKSBpcyBub24temVyby4KK1BBU1MgZ2wuZ2V0U2hhZGVyUGFy
YW1ldGVyKHN0YW5kYXJkVmVydCwgZ2wuU0hBREVSX1RZUEUpIGlzIGdsLlZFUlRFWF9TSEFERVIK
K1BBU1MgZ2wuZ2V0U2hhZGVyUGFyYW1ldGVyKHN0YW5kYXJkVmVydCwgZ2wuREVMRVRFX1NUQVRV
UykgaXMgZmFsc2UKK1BBU1MgZ2wuZ2V0U2hhZGVyUGFyYW1ldGVyKHN0YW5kYXJkVmVydCwgZ2wu
Q09NUElMRV9TVEFUVVMpIGlzIHRydWUKK1BBU1MgdHlwZW9mIGdsLmdldFNoYWRlclBhcmFtZXRl
cihzdGFuZGFyZFZlcnQsIGdsLklORk9fTE9HX0xFTkdUSCkgaXMgIm51bWJlciIKK1BBU1MgZ2wu
Z2V0U2hhZGVyUGFyYW1ldGVyKHN0YW5kYXJkVmVydCwgZ2wuU0hBREVSX1NPVVJDRV9MRU5HVEgp
IGlzIG5vbi16ZXJvLgorUEFTUyBnbC5nZXRUZXhQYXJhbWV0ZXIoZ2wuVEVYVFVSRV8yRCwgZ2wu
VEVYVFVSRV9NQUdfRklMVEVSKSBpcyBnbC5ORUFSRVNUCitQQVNTIGdsLmdldFRleFBhcmFtZXRl
cihnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIpIGlzIGdsLk5FQVJFU1QKK1BB
U1MgZ2wuZ2V0VGV4UGFyYW1ldGVyKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9TKSBp
cyBnbC5DTEFNUF9UT19FREdFCitQQVNTIGdsLmdldFRleFBhcmFtZXRlcihnbC5URVhUVVJFXzJE
LCBnbC5URVhUVVJFX1dSQVBfVCkgaXMgZ2wuQ0xBTVBfVE9fRURHRQorUEFTUyBnbC5nZXRQcm9n
cmFtUGFyYW1ldGVyKGJvb2xQcm9ncmFtLCBnbC5MSU5LX1NUQVRVUykgaXMgdHJ1ZQorUEFTUyBn
bC5nZXRFcnJvcigpIGlzIDAKK1BBU1MgZ2wuZ2V0VW5pZm9ybShib29sUHJvZ3JhbSwgYnZhbExv
YykgaXMgdHJ1ZQorUEFTUyBnbC5nZXRVbmlmb3JtKGJvb2xQcm9ncmFtLCBidmFsMkxvYykgaXMg
WzEsIDBdCitQQVNTIGdsLmdldFVuaWZvcm0oYm9vbFByb2dyYW0sIGJ2YWwzTG9jKSBpcyBbMSwg
MCwgMV0KK1BBU1MgZ2wuZ2V0VW5pZm9ybShib29sUHJvZ3JhbSwgYnZhbDRMb2MpIGlzIFsxLCAw
LCAxLCAwXQorUEFTUyBnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKGludFByb2dyYW0sIGdsLkxJTktf
U1RBVFVTKSBpcyB0cnVlCitQQVNTIGdsLmdldEVycm9yKCkgaXMgMAorUEFTUyBnbC5nZXRVbmlm
b3JtKGludFByb2dyYW0sIGl2YWxMb2MpIGlzIDEKK1BBU1MgZ2wuZ2V0VW5pZm9ybShpbnRQcm9n
cmFtLCBpdmFsMkxvYykgaXMgWzIsIDNdCitQQVNTIGdsLmdldFVuaWZvcm0oaW50UHJvZ3JhbSwg
aXZhbDNMb2MpIGlzIFs0LCA1LCA2XQorUEFTUyBnbC5nZXRVbmlmb3JtKGludFByb2dyYW0sIGl2
YWw0TG9jKSBpcyBbNywgOCwgOSwgMTBdCitQQVNTIGdsLmdldFByb2dyYW1QYXJhbWV0ZXIoZmxv
YXRQcm9ncmFtLCBnbC5MSU5LX1NUQVRVUykgaXMgdHJ1ZQorUEFTUyBnbC5nZXRFcnJvcigpIGlz
IDAKK1BBU1MgZ2wuZ2V0VW5pZm9ybShmbG9hdFByb2dyYW0sIGZ2YWxMb2MpIGlzIDExCitQQVNT
IGdsLmdldFVuaWZvcm0oZmxvYXRQcm9ncmFtLCBmdmFsMkxvYykgaXMgWzEyLCAxM10KK1BBU1Mg
Z2wuZ2V0VW5pZm9ybShmbG9hdFByb2dyYW0sIGZ2YWwzTG9jKSBpcyBbMTQsIDE1LCAxNl0KK1BB
U1MgZ2wuZ2V0VW5pZm9ybShmbG9hdFByb2dyYW0sIGZ2YWw0TG9jKSBpcyBbMTcsIDE4LCAxOSwg
MjBdCitQQVNTIGdsLmdldFByb2dyYW1QYXJhbWV0ZXIobWF0UHJvZ3JhbSwgZ2wuTElOS19TVEFU
VVMpIGlzIHRydWUKK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyAwCitQQVNTIGdsLmdldFVuaWZvcm0o
bWF0UHJvZ3JhbSwgbXZhbDJMb2MpIGlzIFsxLCAyLCAzLCA0XQorUEFTUyBnbC5nZXRVbmlmb3Jt
KG1hdFByb2dyYW0sIG12YWwzTG9jKSBpcyBbNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTNd
CitQQVNTIGdsLmdldFVuaWZvcm0obWF0UHJvZ3JhbSwgbXZhbDRMb2MpIGlzIFsxNCwgMTUsIDE2
LCAxNywgMTgsIDE5LCAyMCwgMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOV0KK1BB
U1MgZ2wuZ2V0VmVydGV4QXR0cmliKDEsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJ
TkRJTkcpIGlzIG5vbi1udWxsLgorUEFTUyBnbC5nZXRWZXJ0ZXhBdHRyaWIoMSwgZ2wuVkVSVEVY
X0FUVFJJQl9BUlJBWV9FTkFCTEVEKSBpcyB0cnVlCitQQVNTIGdsLmdldFZlcnRleEF0dHJpYigx
LCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX1NJWkUpIGlzIDQKK1BBU1MgKGdsLmdldFZlcnRleEF0
dHJpYigxLCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX1NUUklERSkgPT0gMCkgfHwgKGdsLmdldFZl
cnRleEF0dHJpYigxLCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX1NUUklERSkgPT0gNCAqIGdsLnNp
emVJbkJ5dGVzKGdsLkZMT0FUKSkgaXMgdHJ1ZQorUEFTUyBnbC5nZXRWZXJ0ZXhBdHRyaWIoMSwg
Z2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFKSBpcyBnbC5GTE9BVAorUEFTUyBnbC5nZXRWZXJ0
ZXhBdHRyaWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9OT1JNQUxJWkVEKSBpcyBmYWxzZQor
UEFTUyBnbC5nZXRWZXJ0ZXhBdHRyaWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVE
KSBpcyBmYWxzZQorUEFTUyBnbC5nZXRWZXJ0ZXhBdHRyaWIoMSwgZ2wuQ1VSUkVOVF9WRVJURVhf
QVRUUklCKSBpcyBbNSwgNiwgNywgOF0KK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyAwCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtb2JqZWN0LWdldC1jYWxscy5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLW9iamVjdC1nZXQtY2FsbHMu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLW9i
amVjdC1nZXQtY2FsbHMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorPGh0bWw+
Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2ViZ2wtdGVz
dC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0IHNyYz0ic2NyaXB0LXRl
c3RzL2dsLW9iamVjdC1nZXQtY2FsbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9pbmNvcnJlY3QtY29udGV4
dC1vYmplY3QtYmVoYXZpb3VyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy93ZWJnbC9pbmNvcnJlY3QtY29udGV4dC1vYmplY3QtYmVoYXZpb3VyLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gNTEyNzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93
ZWJnbC9pbmNvcnJlY3QtY29udGV4dC1vYmplY3QtYmVoYXZpb3VyLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMTcsMTcgKzE3LDEyIEBAIFBBU1MgY29udGV4dEEuYmluZFJlbmRlcmJ1
ZmZlcihjb250ZXh0QS4KIFBBU1MgY29udGV4dEEuYmluZFRleHR1cmUoY29udGV4dEEuVEVYVFVS
RV8yRCwgdGV4dHVyZUIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6
IERPTSBFeGNlcHRpb24gMTcuCiBQQVNTIGNvbnRleHRBLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVy
KGNvbnRleHRBLkZSQU1FQlVGRkVSLCBjb250ZXh0QS5ERVBUSF9BVFRBQ0hNRU5ULCBjb250ZXh0
QS5SRU5ERVJCVUZGRVIsIHJlbmRlckJ1ZmZlckIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQ
RV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCiBQQVNTIGNvbnRleHRBLmZyYW1lYnVm
ZmVyVGV4dHVyZTJEKGNvbnRleHRBLkZSQU1FQlVGRkVSLCBjb250ZXh0QS5DT0xPUl9BVFRBQ0hN
RU5UMCwgY29udGV4dEEuVEVYVFVSRV8yRCwgdGV4dHVyZUIsIDApIHRocmV3IGV4Y2VwdGlvbiBF
cnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIGNvbnRleHRB
LmdldFByb2dyYW1pKHByb2dyYW1CLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlT
TUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0QS5nZXRQcm9ncmFtaXYo
cHJvZ3JhbUIsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERP
TSBFeGNlcHRpb24gMTcuCitQQVNTIGNvbnRleHRBLmdldFByb2dyYW1QYXJhbWV0ZXIocHJvZ3Jh
bUIsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNl
cHRpb24gMTcuCiBQQVNTIGNvbnRleHRBLmdldFByb2dyYW1JbmZvTG9nKHByb2dyYW1CLCAwKSB0
aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3
LgotUEFTUyBjb250ZXh0QS5nZXRTaGFkZXJpKHNoYWRlckIsIDApIHRocmV3IGV4Y2VwdGlvbiBF
cnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIGNvbnRleHRB
LmdldFNoYWRlcml2KHNoYWRlckIsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNN
QVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCitQQVNTIGNvbnRleHRBLmdldFNoYWRlclBhcmFt
ZXRlcihzaGFkZXJCLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJS
OiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBjb250ZXh0QS5nZXRTaGFkZXJJbmZvTG9nKHNoYWRl
ckIsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNl
cHRpb24gMTcuCiBQQVNTIGNvbnRleHRBLmdldFNoYWRlclNvdXJjZShzaGFkZXJCKSB0aHJldyBl
eGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFT
UyBjb250ZXh0QS5nZXRVbmlmb3JtZihwcm9ncmFtQiwgbG9jYXRpb25BKSB0aHJldyBleGNlcHRp
b24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250
ZXh0QS5nZXRVbmlmb3JtZnYocHJvZ3JhbUIsIGxvY2F0aW9uQSkgdGhyZXcgZXhjZXB0aW9uIEVy
cm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4dEEu
Z2V0VW5pZm9ybWkocHJvZ3JhbUIsIGxvY2F0aW9uQSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBU
WVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4dEEuZ2V0VW5p
Zm9ybWl2KHByb2dyYW1CLCBsb2NhdGlvbkEpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9N
SVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCitQQVNTIGNvbnRleHRBLmdldFVuaWZvcm0o
cHJvZ3JhbUIsIGxvY2F0aW9uQSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENI
X0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KIFBBU1MgY29udGV4dEEuZ2V0VW5pZm9ybUxvY2F0aW9u
KHByb2dyYW1CLCAndV9tb2RlbFZpZXdQcm9qTWF0cml4JykgdGhyZXcgZXhjZXB0aW9uIEVycm9y
OiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KIFBBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvbnVs
bC1vYmplY3QtYmVoYXZpb3VyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy93ZWJnbC9udWxsLW9iamVjdC1iZWhhdmlvdXItZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiA1MTI3OCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL251bGwtb2Jq
ZWN0LWJlaGF2aW91ci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE4LDE3ICsxOCwx
MiBAQCBQQVNTIGNvbnRleHQuYmluZFJlbmRlcmJ1ZmZlcihjb250ZXh0LlJFCiBQQVNTIGNvbnRl
eHQuYmluZFRleHR1cmUoY29udGV4dC5URVhUVVJFXzJELCAwKSBpcyB1bmRlZmluZWQuCiBQQVNT
IGNvbnRleHQuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoY29udGV4dC5GUkFNRUJVRkZFUiwgY29u
dGV4dC5ERVBUSF9BVFRBQ0hNRU5ULCBjb250ZXh0LlJFTkRFUkJVRkZFUiwgMCkgaXMgdW5kZWZp
bmVkLgogUEFTUyBjb250ZXh0LmZyYW1lYnVmZmVyVGV4dHVyZTJEKGNvbnRleHQuRlJBTUVCVUZG
RVIsIGNvbnRleHQuQ09MT1JfQVRUQUNITUVOVDAsIGNvbnRleHQuVEVYVFVSRV8yRCwgMCwgMCkg
aXMgdW5kZWZpbmVkLgotUEFTUyBjb250ZXh0LmdldFByb2dyYW1pKHVuZGVmaW5lZCwgMCkgdGhy
ZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4K
LVBBU1MgY29udGV4dC5nZXRQcm9ncmFtaXYodW5kZWZpbmVkLCAwKSB0aHJldyBleGNlcHRpb24g
RXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgorUEFTUyBjb250ZXh0
LmdldFByb2dyYW1QYXJhbWV0ZXIodW5kZWZpbmVkLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6
IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBjb250ZXh0LmdldFBy
b2dyYW1JbmZvTG9nKHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01J
U01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4dC5nZXRTaGFkZXJpKHVu
ZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9N
IEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4dC5nZXRTaGFkZXJpdih1bmRlZmluZWQsIDApIHRo
cmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcu
CitQQVNTIGNvbnRleHQuZ2V0U2hhZGVyUGFyYW1ldGVyKHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KIFBBU1Mg
Y29udGV4dC5nZXRTaGFkZXJJbmZvTG9nKHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9uIEVy
cm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KIFBBU1MgY29udGV4dC5n
ZXRTaGFkZXJTb3VyY2UodW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlT
TUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0LmdldFVuaWZvcm1mKHVu
ZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9N
IEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4dC5nZXRVbmlmb3JtZnYodW5kZWZpbmVkLCAwKSB0
aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3
LgotUEFTUyBjb250ZXh0LmdldFVuaWZvcm1pKHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9u
IEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4
dC5nZXRVbmlmb3JtaXYodW5kZWZpbmVkLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVf
TUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgorUEFTUyBjb250ZXh0LmdldFVuaWZvcm0o
dW5kZWZpbmVkLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBE
T00gRXhjZXB0aW9uIDE3LgogUEFTUyBjb250ZXh0LmdldFVuaWZvcm1Mb2NhdGlvbih1bmRlZmlu
ZWQsICdmb28nKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00g
RXhjZXB0aW9uIDE3LgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90cmlhbmdsZS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3RyaWFuZ2xlLmh0bWwJKHJldmlzaW9uIDUx
Mjc4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdHJpYW5nbGUuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtNjQsMTEgKzY0LDExIEBACiAgICAgICAgICAgICB2YXIgb2Zmc2V0ID0g
KDE1KjUwKzIwKSAqIDQ7CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwOyArK2kp
CiAgICAgICAgICAgICAgICAgaWYgKGJ1ZltvZmZzZXQraSo0XSAhPSAyNTUgfHwgYnVmW29mZnNl
dCtpKjQrMV0gIT0gMCB8fCBidWZbb2Zmc2V0K2kqNCsyXSAhPSAwIHx8IGJ1ZltvZmZzZXQraSo0
KzNdICE9IDI1NSkgewotICAgICAgICAgICAgICAgICAgICBmYWlsKDIwLCAxNSwgYnVmLCAiKDI1
NSwwLDAsMjU1KSIpOworICAgICAgICAgICAgICAgICAgICBmYWlsKDIwICsgaSwgMTUsIGJ1Ziwg
IigyNTUsMCwwLDI1NSkiKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIC8vIExhc3QgbGluZSBzaG91bGQgYmUgYWxsIGJsYWNrCi0g
ICAgICAgICAgICBvZmZzZXQgPSAoNDkqNTApICogNAorICAgICAgICAgICAgb2Zmc2V0ID0gKDQ5
KjUwKSAqIDQ7CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDUwOyArK2kpCiAgICAg
ICAgICAgICAgICAgaWYgKGJ1ZltvZmZzZXQraSo0XSAhPSAwIHx8IGJ1ZltvZmZzZXQraSo0KzFd
ICE9IDAgfHwgYnVmW29mZnNldCtpKjQrMl0gIT0gMCB8fCBidWZbb2Zmc2V0K2kqNCszXSAhPSAy
NTUpIHsKICAgICAgICAgICAgICAgICAgICAgZmFpbChpLCA0OSwgYnVmLCAiKDAsMCwwLDI1NSki
KTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy9ib29sVW5p
Zm9ybVNoYWRlci52ZXJ0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dl
YmdsL3Jlc291cmNlcy9ib29sVW5pZm9ybVNoYWRlci52ZXJ0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL2Jvb2xVbmlmb3JtU2hhZGVyLnZl
cnQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKK3VuaWZvcm0gYm9vbCBidmFsOwordW5p
Zm9ybSBidmVjMiBidmFsMjsKK3VuaWZvcm0gYnZlYzMgYnZhbDM7Cit1bmlmb3JtIGJ2ZWM0IGJ2
YWw0OworCit2b2lkIG1haW4oKQoreworICAgIGJvb2wgYWxsU2V0ID0gYnZhbAorICAgICAgICAg
ICAgJiYgYnZhbDJbMF0gJiYgYnZhbDJbMV0KKyAgICAgICAgICAgICYmIGJ2YWwzWzBdICYmIGJ2
YWwzWzFdICYmIGJ2YWwzWzJdCisgICAgICAgICAgICAmJiBidmFsNFswXSAmJiBidmFsNFsxXSAm
JiBidmFsNFsyXSAmJiBidmFsNFszXTsKKyAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoKGFsbFNldCA/
IDEuMCA6IC0xLjApLCAwLjAsIDAuMCwgMS4wKTsKK30KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL3Jlc291cmNlcy9mbG9hdFVuaWZvcm1TaGFkZXIudmVydAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvZmxvYXRVbmlmb3Jt
U2hhZGVyLnZlcnQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJn
bC9yZXNvdXJjZXMvZmxvYXRVbmlmb3JtU2hhZGVyLnZlcnQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTMgQEAKK3VuaWZvcm0gZmxvYXQgZnZhbDsKK3VuaWZvcm0gdmVjMiBmdmFsMjsKK3VuaWZv
cm0gdmVjMyBmdmFsMzsKK3VuaWZvcm0gdmVjNCBmdmFsNDsKKwordm9pZCBtYWluKCkKK3sKKyAg
ICBmbG9hdCBzdW0gPSBmdmFsCisgICAgICAgICAgICArIGZ2YWwyWzBdICsgZnZhbDJbMV0KKyAg
ICAgICAgICAgICsgZnZhbDNbMF0gKyBmdmFsM1sxXSArIGZ2YWwzWzJdCisgICAgICAgICAgICAr
IGZ2YWw0WzBdICsgZnZhbDRbMV0gKyBmdmFsNFsyXSArIGZ2YWw0WzNdOworICAgIGdsX1Bvc2l0
aW9uID0gdmVjNChzdW0sIDAuMCwgMC4wLCAxLjApOworfQpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL2ludFVuaWZvcm1TaGFkZXIudmVydAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvaW50VW5pZm9ybVNo
YWRlci52ZXJ0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wv
cmVzb3VyY2VzL2ludFVuaWZvcm1TaGFkZXIudmVydAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
MyBAQAordW5pZm9ybSBpbnQgaXZhbDsKK3VuaWZvcm0gaXZlYzIgaXZhbDI7Cit1bmlmb3JtIGl2
ZWMzIGl2YWwzOwordW5pZm9ybSBpdmVjNCBpdmFsNDsKKwordm9pZCBtYWluKCkKK3sKKyAgICBp
bnQgc3VtID0gaXZhbAorICAgICAgICAgICAgKyBpdmFsMlswXSArIGl2YWwyWzFdCisgICAgICAg
ICAgICArIGl2YWwzWzBdICsgaXZhbDNbMV0gKyBpdmFsM1syXQorICAgICAgICAgICAgKyBpdmFs
NFswXSArIGl2YWw0WzFdICsgaXZhbDRbMl0gKyBpdmFsNFszXTsKKyAgICBnbF9Qb3NpdGlvbiA9
IHZlYzQoc3VtLCAwLjAsIDAuMCwgMS4wKTsKK30KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3dlYmdsL3Jlc291cmNlcy9tYXRVbmlmb3JtU2hhZGVyLnZlcnQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL21hdFVuaWZvcm1TaGFkZXIu
dmVydAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Jlc291
cmNlcy9tYXRVbmlmb3JtU2hhZGVyLnZlcnQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAgQEAK
K3VuaWZvcm0gbWF0MiBtdmFsMjsKK3VuaWZvcm0gbWF0MyBtdmFsMzsKK3VuaWZvcm0gbWF0NCBt
dmFsNDsKKwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9Qb3NpdGlvbiA9IHZlYzQobXZhbDIgKiB2
ZWMyKDEuMCwgMi4wKSwgMC4wLCAwLjApCisgICAgICAgICAgICArIHZlYzQobXZhbDMgKiB2ZWMz
KDEuMCwgMi4wLCAzLjApLCAwLjApCisgICAgICAgICAgICArIG12YWw0ICogdmVjNCgxLjAsIDIu
MCwgMy4wLCA0LjApOworfQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVz
b3VyY2VzL25vb3BVbmlmb3JtU2hhZGVyLmZyYWcKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL25vb3BVbmlmb3JtU2hhZGVyLmZyYWcJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvbm9vcFVu
aWZvcm1TaGFkZXIuZnJhZwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACit2b2lkIG1haW4o
KQoreworICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAwLjAsIDAuMCwgMS4wKTsKK30KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy91dGlsczNkLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy91dGls
czNkLmpzCShyZXZpc2lvbiA1MTI3OCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmds
L3Jlc291cmNlcy91dGlsczNkLmpzCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIGZ1
bmN0aW9uIGluaXRXZWJHTChjYW52YXNOYW1lLCB2c2hhZGVyLCAKICAgICBnbC5saW5rUHJvZ3Jh
bShnbC5wcm9ncmFtKTsKIAogICAgIC8vIENoZWNrIHRoZSBsaW5rIHN0YXR1cwotICAgIHZhciBs
aW5rZWQgPSBnbC5nZXRQcm9ncmFtaShnbC5wcm9ncmFtLCBnbC5MSU5LX1NUQVRVUyk7CisgICAg
dmFyIGxpbmtlZCA9IGdsLmdldFByb2dyYW1QYXJhbWV0ZXIoZ2wucHJvZ3JhbSwgZ2wuTElOS19T
VEFUVVMpOwogICAgIGlmICghbGlua2VkKSB7CiAgICAgICAgIC8vIHNvbWV0aGluZyB3ZW50IHdy
b25nIHdpdGggdGhlIGxpbmsKICAgICAgICAgdmFyIGVycm9yID0gZ2wuZ2V0UHJvZ3JhbUluZm9M
b2cgKGdsLnByb2dyYW0pOwpAQCAtMTEzLDcgKzExMyw3IEBAIGZ1bmN0aW9uIGxvYWRTaGFkZXIo
Y3R4LCBzaGFkZXJJZCkKICAgICBjdHguY29tcGlsZVNoYWRlcihzaGFkZXIpOwogCiAgICAgLy8g
Q2hlY2sgdGhlIGNvbXBpbGUgc3RhdHVzCi0gICAgdmFyIGNvbXBpbGVkID0gY3R4LmdldFNoYWRl
cmkoc2hhZGVyLCBjdHguQ09NUElMRV9TVEFUVVMpOworICAgIHZhciBjb21waWxlZCA9IGN0eC5n
ZXRTaGFkZXJQYXJhbWV0ZXIoc2hhZGVyLCBjdHguQ09NUElMRV9TVEFUVVMpOwogICAgIGlmICgh
Y29tcGlsZWQpIHsKICAgICAgICAgLy8gU29tZXRoaW5nIHdlbnQgd3JvbmcgZHVyaW5nIGNvbXBp
bGF0aW9uOyBnZXQgdGhlIGVycm9yCiAgICAgICAgIHZhciBlcnJvciA9IGN0eC5nZXRTaGFkZXJJ
bmZvTG9nKHNoYWRlcik7CkBAIC01MzYsNCArNTM2LDMgQEAgRnJhbWVyYXRlLnByb3RvdHlwZS5z
bmFwc2hvdCA9IGZ1bmN0aW9uKAogICAgICAgICB0aGlzLnJlbmRlclRpbWUgPSBuZXdUaW1lOwog
ICAgIH0KIH0KLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2Vz
L3dlYmdsLXRlc3QuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2Vi
Z2wvcmVzb3VyY2VzL3dlYmdsLXRlc3QuanMJKHJldmlzaW9uIDUxMjc4KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsLXRlc3QuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTI0LDE2ICsyNCwzMiBAQCBmdW5jdGlvbiBsb2FkU3RhbmRhcmRQcm9ncmFtKGNvbnRl
eHQpIHsKICAgICByZXR1cm4gcHJvZ3JhbTsKIH0KIAorZnVuY3Rpb24gbG9hZFByb2dyYW0oY29u
dGV4dCwgdmVydGV4U2hhZGVyUGF0aCwgZnJhZ21lbnRTaGFkZXJQYXRoKSB7CisgICAgdmFyIHBy
b2dyYW0gPSBjb250ZXh0LmNyZWF0ZVByb2dyYW0oKTsKKyAgICBjb250ZXh0LmF0dGFjaFNoYWRl
cihwcm9ncmFtLCBsb2FkVmVydGV4U2hhZGVyKGNvbnRleHQsIHZlcnRleFNoYWRlclBhdGgpKTsK
KyAgICBjb250ZXh0LmF0dGFjaFNoYWRlcihwcm9ncmFtLCBsb2FkRnJhZ21lbnRTaGFkZXIoY29u
dGV4dCwgZnJhZ21lbnRTaGFkZXJQYXRoKSk7CisgICAgY29udGV4dC5saW5rUHJvZ3JhbShwcm9n
cmFtKTsKKyAgICByZXR1cm4gcHJvZ3JhbTsKK30KKwogZnVuY3Rpb24gbG9hZFN0YW5kYXJkVmVy
dGV4U2hhZGVyKGNvbnRleHQpIHsKKyAgICByZXR1cm4gbG9hZFZlcnRleFNoYWRlcihjb250ZXh0
LCAicmVzb3VyY2VzL3ZlcnRleFNoYWRlci52ZXJ0Iik7Cit9CisKK2Z1bmN0aW9uIGxvYWRWZXJ0
ZXhTaGFkZXIoY29udGV4dCwgcGF0aCkgewogICAgIHZhciB2ZXJ0ZXhTaGFkZXIgPSBjb250ZXh0
LmNyZWF0ZVNoYWRlcihjb250ZXh0LlZFUlRFWF9TSEFERVIpOwotICAgIGNvbnRleHQuc2hhZGVy
U291cmNlKHZlcnRleFNoYWRlciwgZ2V0U2hhZGVyU291cmNlKCJyZXNvdXJjZXMvdmVydGV4U2hh
ZGVyLnZlcnQiKSk7CisgICAgY29udGV4dC5zaGFkZXJTb3VyY2UodmVydGV4U2hhZGVyLCBnZXRT
aGFkZXJTb3VyY2UocGF0aCkpOwogICAgIGNvbnRleHQuY29tcGlsZVNoYWRlcih2ZXJ0ZXhTaGFk
ZXIpOwogICAgIHJldHVybiB2ZXJ0ZXhTaGFkZXI7CiB9CiAKIGZ1bmN0aW9uIGxvYWRTdGFuZGFy
ZEZyYWdtZW50U2hhZGVyKGNvbnRleHQpIHsKKyAgICByZXR1cm4gbG9hZEZyYWdtZW50U2hhZGVy
KGNvbnRleHQsICJyZXNvdXJjZXMvZnJhZ21lbnRTaGFkZXIuZnJhZyIpOworfQorCitmdW5jdGlv
biBsb2FkRnJhZ21lbnRTaGFkZXIoY29udGV4dCwgcGF0aCkgewogICAgIHZhciBmcmFnbWVudFNo
YWRlciA9IGNvbnRleHQuY3JlYXRlU2hhZGVyKGNvbnRleHQuRlJBR01FTlRfU0hBREVSKTsKLSAg
ICBjb250ZXh0LnNoYWRlclNvdXJjZShmcmFnbWVudFNoYWRlciwgZ2V0U2hhZGVyU291cmNlKCJy
ZXNvdXJjZXMvZnJhZ21lbnRTaGFkZXIuZnJhZyIpKTsKKyAgICBjb250ZXh0LnNoYWRlclNvdXJj
ZShmcmFnbWVudFNoYWRlciwgZ2V0U2hhZGVyU291cmNlKHBhdGgpKTsKICAgICBjb250ZXh0LmNv
bXBpbGVTaGFkZXIoZnJhZ21lbnRTaGFkZXIpOwogICAgIHJldHVybiBmcmFnbWVudFNoYWRlcjsK
IH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9nbC1v
YmplY3QtZ2V0LWNhbGxzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3dlYmdsL3NjcmlwdC10ZXN0cy9nbC1vYmplY3QtZ2V0LWNhbGxzLmpzCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL2dsLW9iamVjdC1n
ZXQtY2FsbHMuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTgxIEBACitkZXNjcmlwdGlvbigi
VGVzdCBvZiBnZXQgY2FsbHMgYWdhaW5zdCBHTCBvYmplY3RzIGxpa2UgZ2V0QnVmZmVyUGFyYW1l
dGVyLCBldGMuIik7CisKK3ZhciBnbCA9IGNyZWF0ZTNEQ29udGV4dCgpOwordmFyIHN0YW5kYXJk
VmVydCA9IGxvYWRTdGFuZGFyZFZlcnRleFNoYWRlcihnbCk7Cit2YXIgc3RhbmRhcmRGcmFnID0g
bG9hZFN0YW5kYXJkRnJhZ21lbnRTaGFkZXIoZ2wpOwordmFyIHN0YW5kYXJkUHJvZ3JhbSA9IGds
LmNyZWF0ZVByb2dyYW0oKTsKK2dsLmF0dGFjaFNoYWRlcihzdGFuZGFyZFByb2dyYW0sIHN0YW5k
YXJkVmVydCk7CitnbC5hdHRhY2hTaGFkZXIoc3RhbmRhcmRQcm9ncmFtLCBzdGFuZGFyZEZyYWcp
OworZ2wubGlua1Byb2dyYW0oc3RhbmRhcmRQcm9ncmFtKTsKKworLy8gVGVzdCBnZXRCdWZmZXJQ
YXJhbWV0ZXIKK3ZhciBidWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKK2dsLmJpbmRCdWZmZXIo
Z2wuQVJSQVlfQlVGRkVSLCBidWZmZXIpOworZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIs
IDE2LCBnbC5EWU5BTUlDX0RSQVcpOworc2hvdWxkQmUoJ2dsLmdldEJ1ZmZlclBhcmFtZXRlcihn
bC5BUlJBWV9CVUZGRVIsIGdsLkJVRkZFUl9TSVpFKScsICcxNicpOworc2hvdWxkQmUoJ2dsLmdl
dEJ1ZmZlclBhcmFtZXRlcihnbC5BUlJBWV9CVUZGRVIsIGdsLkJVRkZFUl9VU0FHRSknLCAnZ2wu
RFlOQU1JQ19EUkFXJyk7CisKKy8vIFRlc3QgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1l
dGVyCit2YXIgdGV4dHVyZSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKK2dsLmJpbmRUZXh0dXJlKGds
LlRFWFRVUkVfMkQsIHRleHR1cmUpOworZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBn
bC5SR0JBLCAyLCAyLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAg
ICBuZXcgV2ViR0xVbnNpZ25lZEJ5dGVBcnJheShbMCwgMCwgMCwgMjU1LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjU1LCAyNTUsIDI1NSwgMjU1LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjU1LCAyNTUsIDI1NSwgMjU1LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgMjU1XSkp
OworZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgbnVsbCk7Cit2YXIgZnJhbWVidWZmZXIg
PSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpOworZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVG
RkVSLCBmcmFtZWJ1ZmZlcik7CitnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZF
UiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlRFWFRVUkVfMkQsIHRleHR1cmUsIDApOwordmFy
IHJlbmRlcmJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworc2hvdWxkQmUoJ2dsLmdl
dEVycm9yKCknLCAnMCcpOworZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIHJl
bmRlcmJ1ZmZlcik7CitzaG91bGRCZSgnZ2wuZ2V0RXJyb3IoKScsICcwJyk7CitnbC5yZW5kZXJi
dWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgZ2wuREVQVEhfQ09NUE9ORU5UMTYsIDIsIDIp
Oworc2hvdWxkQmUoJ2dsLmdldEVycm9yKCknLCAnMCcpOworZ2wuZnJhbWVidWZmZXJSZW5kZXJi
dWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkRFUFRIX0FUVEFDSE1FTlQsIGdsLlJFTkRFUkJVRkZF
UiwgcmVuZGVyYnVmZmVyKTsKK3Nob3VsZEJlKCdnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGds
LkZSQU1FQlVGRkVSKScsICdnbC5GUkFNRUJVRkZFUl9DT01QTEVURScpOworc2hvdWxkQmUoJ2ds
LmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09M
T1JfQVRUQUNITUVOVDAsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEUpJywg
J2dsLlRFWFRVUkUnKTsKK3Nob3VsZEJlTm9uTnVsbCgnZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2ht
ZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuRlJB
TUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRSknKTsKK3Nob3VsZEJlKCdnbC5nZXRGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFD
SE1FTlQwLCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEVWRUwpJywgJzAnKTsK
K3Nob3VsZEJlKCdnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVC
VUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RF
WFRVUkVfQ1VCRV9NQVBfRkFDRSknLCAnMCcpOworCitzaG91bGRCZSgnZ2wuZ2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5ERVBUSF9BVFRBQ0hNRU5U
LCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFKScsICdnbC5SRU5ERVJCVUZG
RVInKTsKK3Nob3VsZEJlTm9uTnVsbCgnZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1l
dGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5ERVBUSF9BVFRBQ0hNRU5ULCBnbC5GUkFNRUJVRkZFUl9B
VFRBQ0hNRU5UX09CSkVDVF9OQU1FKScpOworCisvLyBUZXN0IGdldFByb2dyYW1QYXJhbWV0ZXIK
K3Nob3VsZEJlKCdnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHN0YW5kYXJkUHJvZ3JhbSwgZ2wuREVM
RVRFX1NUQVRVUyknLCAnZmFsc2UnKTsKK3Nob3VsZEJlKCdnbC5nZXRQcm9ncmFtUGFyYW1ldGVy
KHN0YW5kYXJkUHJvZ3JhbSwgZ2wuTElOS19TVEFUVVMpJywgJ3RydWUnKTsKK3Nob3VsZEJlKCd0
eXBlb2YgZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihzdGFuZGFyZFByb2dyYW0sIGdsLlZBTElEQVRF
X1NUQVRVUyknLCAnImJvb2xlYW4iJyk7CitzaG91bGRCZSgndHlwZW9mIGdsLmdldFByb2dyYW1Q
YXJhbWV0ZXIoc3RhbmRhcmRQcm9ncmFtLCBnbC5JTkZPX0xPR19MRU5HVEgpJywgJyJudW1iZXIi
Jyk7CitzaG91bGRCZSgnZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihzdGFuZGFyZFByb2dyYW0sIGds
LkFUVEFDSEVEX1NIQURFUlMpJywgJzInKTsKK3Nob3VsZEJlKCdnbC5nZXRQcm9ncmFtUGFyYW1l
dGVyKHN0YW5kYXJkUHJvZ3JhbSwgZ2wuQUNUSVZFX0FUVFJJQlVURVMpJywgJzInKTsKK3Nob3Vs
ZEJlTm9uWmVybygnZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihzdGFuZGFyZFByb2dyYW0sIGdsLkFD
VElWRV9BVFRSSUJVVEVfTUFYX0xFTkdUSCknKTsKK3Nob3VsZEJlKCdnbC5nZXRQcm9ncmFtUGFy
YW1ldGVyKHN0YW5kYXJkUHJvZ3JhbSwgZ2wuQUNUSVZFX1VOSUZPUk1TKScsICcxJyk7CitzaG91
bGRCZU5vblplcm8oJ2dsLmdldFByb2dyYW1QYXJhbWV0ZXIoc3RhbmRhcmRQcm9ncmFtLCBnbC5B
Q1RJVkVfVU5JRk9STV9NQVhfTEVOR1RIKScpOworCisvLyBUZXN0IGdldFJlbmRlcmJ1ZmZlclBh
cmFtZXRlcgorc2hvdWxkQmUoJ2dsLmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcihnbC5SRU5ERVJC
VUZGRVIsIGdsLlJFTkRFUkJVRkZFUl9XSURUSCknLCAnMicpOworc2hvdWxkQmUoJ2dsLmdldFJl
bmRlcmJ1ZmZlclBhcmFtZXRlcihnbC5SRU5ERVJCVUZGRVIsIGdsLlJFTkRFUkJVRkZFUl9IRUlH
SFQpJywgJzInKTsKKy8vIE5vdGU6IHdlIGNhbid0IHRlc3QgdGhlIGFjdHVhbCB2YWx1ZSBvZiB0
aGUgaW50ZXJuYWwgZm9ybWF0IHNpbmNlCisvLyB0aGUgaW1wbGVtZW50YXRpb24gaXMgYWxsb3dl
ZCB0byBjaGFuZ2UgaXQuCitzaG91bGRCZU5vblplcm8oJ2dsLmdldFJlbmRlcmJ1ZmZlclBhcmFt
ZXRlcihnbC5SRU5ERVJCVUZGRVIsIGdsLlJFTkRFUkJVRkZFUl9JTlRFUk5BTF9GT1JNQVQpJyk7
CitzaG91bGRCZU5vblplcm8oJ2dsLmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcihnbC5SRU5ERVJC
VUZGRVIsIGdsLlJFTkRFUkJVRkZFUl9ERVBUSF9TSVpFKScpOwordmFyIGNvbG9yYnVmZmVyID0g
Z2wuY3JlYXRlUmVuZGVyYnVmZmVyKCk7CitzaG91bGRCZSgnZ2wuZ2V0RXJyb3IoKScsICcwJyk7
CitnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgcmVuZGVyYnVmZmVyKTsKK3No
b3VsZEJlKCdnbC5nZXRFcnJvcigpJywgJzAnKTsKK2dsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wu
UkVOREVSQlVGRkVSLCBnbC5SR0JBNCwgMiwgMik7CitzaG91bGRCZU5vblplcm8oJ2dsLmdldFJl
bmRlcmJ1ZmZlclBhcmFtZXRlcihnbC5SRU5ERVJCVUZGRVIsIGdsLlJFTkRFUkJVRkZFUl9SRURf
U0laRSknKTsKK3Nob3VsZEJlTm9uWmVybygnZ2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKGds
LlJFTkRFUkJVRkZFUiwgZ2wuUkVOREVSQlVGRkVSX0dSRUVOX1NJWkUpJyk7CitzaG91bGRCZU5v
blplcm8oJ2dsLmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcihnbC5SRU5ERVJCVUZGRVIsIGdsLlJF
TkRFUkJVRkZFUl9CTFVFX1NJWkUpJyk7CitzaG91bGRCZU5vblplcm8oJ2dsLmdldFJlbmRlcmJ1
ZmZlclBhcmFtZXRlcihnbC5SRU5ERVJCVUZGRVIsIGdsLlJFTkRFUkJVRkZFUl9BTFBIQV9TSVpF
KScpOworCisvLyBUZXN0IGdldFNoYWRlclBhcmFtZXRlcgorc2hvdWxkQmUoJ2dsLmdldFNoYWRl
clBhcmFtZXRlcihzdGFuZGFyZFZlcnQsIGdsLlNIQURFUl9UWVBFKScsICdnbC5WRVJURVhfU0hB
REVSJyk7CitzaG91bGRCZSgnZ2wuZ2V0U2hhZGVyUGFyYW1ldGVyKHN0YW5kYXJkVmVydCwgZ2wu
REVMRVRFX1NUQVRVUyknLCAnZmFsc2UnKTsKK3Nob3VsZEJlKCdnbC5nZXRTaGFkZXJQYXJhbWV0
ZXIoc3RhbmRhcmRWZXJ0LCBnbC5DT01QSUxFX1NUQVRVUyknLCAndHJ1ZScpOworc2hvdWxkQmUo
J3R5cGVvZiBnbC5nZXRTaGFkZXJQYXJhbWV0ZXIoc3RhbmRhcmRWZXJ0LCBnbC5JTkZPX0xPR19M
RU5HVEgpJywgJyJudW1iZXIiJyk7CitzaG91bGRCZU5vblplcm8oJ2dsLmdldFNoYWRlclBhcmFt
ZXRlcihzdGFuZGFyZFZlcnQsIGdsLlNIQURFUl9TT1VSQ0VfTEVOR1RIKScpOworCisvLyBUZXN0
IGdldFRleFBhcmFtZXRlcgorZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmcmFt
ZWJ1ZmZlcik7CitnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXh0dXJlKTsKK2dsLnRl
eFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSLCBnbC5ORUFS
RVNUKTsKK2dsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklM
VEVSLCBnbC5ORUFSRVNUKTsKK2dsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVY
VFVSRV9XUkFQX1MsIGdsLkNMQU1QX1RPX0VER0UpOworZ2wudGV4UGFyYW1ldGVyaShnbC5URVhU
VVJFXzJELCBnbC5URVhUVVJFX1dSQVBfVCwgZ2wuQ0xBTVBfVE9fRURHRSk7CitzaG91bGRCZSgn
Z2wuZ2V0VGV4UGFyYW1ldGVyKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUikn
LCAnZ2wuTkVBUkVTVCcpOworc2hvdWxkQmUoJ2dsLmdldFRleFBhcmFtZXRlcihnbC5URVhUVVJF
XzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIpJywgJ2dsLk5FQVJFU1QnKTsKK3Nob3VsZEJlKCdn
bC5nZXRUZXhQYXJhbWV0ZXIoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1MpJywgJ2ds
LkNMQU1QX1RPX0VER0UnKTsKK3Nob3VsZEJlKCdnbC5nZXRUZXhQYXJhbWV0ZXIoZ2wuVEVYVFVS
RV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1QpJywgJ2dsLkNMQU1QX1RPX0VER0UnKTsKKworLy8gVGVz
dCBnZXRVbmlmb3JtIHdpdGggYWxsIHZhcmlhbnRzIG9mIGRhdGEgdHlwZXMKKy8vIEJvb2xlYW4g
dW5pZm9ybSB2YXJpYWJsZXMKK3ZhciBib29sUHJvZ3JhbSA9IGxvYWRQcm9ncmFtKGdsLCAicmVz
b3VyY2VzL2Jvb2xVbmlmb3JtU2hhZGVyLnZlcnQiLCAicmVzb3VyY2VzL25vb3BVbmlmb3JtU2hh
ZGVyLmZyYWciKTsKK3Nob3VsZEJlKCdnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKGJvb2xQcm9ncmFt
LCBnbC5MSU5LX1NUQVRVUyknLCAndHJ1ZScpOwordmFyIGJ2YWxMb2MgPSBnbC5nZXRVbmlmb3Jt
TG9jYXRpb24oYm9vbFByb2dyYW0sICJidmFsIik7Cit2YXIgYnZhbDJMb2MgPSBnbC5nZXRVbmlm
b3JtTG9jYXRpb24oYm9vbFByb2dyYW0sICJidmFsMiIpOwordmFyIGJ2YWwzTG9jID0gZ2wuZ2V0
VW5pZm9ybUxvY2F0aW9uKGJvb2xQcm9ncmFtLCAiYnZhbDMiKTsKK3ZhciBidmFsNExvYyA9IGds
LmdldFVuaWZvcm1Mb2NhdGlvbihib29sUHJvZ3JhbSwgImJ2YWw0Iik7CitnbC51c2VQcm9ncmFt
KGJvb2xQcm9ncmFtKTsKK2dsLnVuaWZvcm0xaShidmFsTG9jLCAxKTsKK2dsLnVuaWZvcm0yaShi
dmFsMkxvYywgMSwgMCk7CitnbC51bmlmb3JtM2koYnZhbDNMb2MsIDEsIDAsIDEpOworZ2wudW5p
Zm9ybTRpKGJ2YWw0TG9jLCAxLCAwLCAxLCAwKTsKK3Nob3VsZEJlKCdnbC5nZXRFcnJvcigpJywg
JzAnKTsKK3Nob3VsZEJlKCdnbC5nZXRVbmlmb3JtKGJvb2xQcm9ncmFtLCBidmFsTG9jKScsICd0
cnVlJyk7CitzaG91bGRCZSgnZ2wuZ2V0VW5pZm9ybShib29sUHJvZ3JhbSwgYnZhbDJMb2MpJywg
J1sxLCAwXScpOworc2hvdWxkQmUoJ2dsLmdldFVuaWZvcm0oYm9vbFByb2dyYW0sIGJ2YWwzTG9j
KScsICdbMSwgMCwgMV0nKTsKK3Nob3VsZEJlKCdnbC5nZXRVbmlmb3JtKGJvb2xQcm9ncmFtLCBi
dmFsNExvYyknLCAnWzEsIDAsIDEsIDBdJyk7CisvLyBJbnRlZ2VyIHVuaWZvcm0gdmFyaWFibGVz
Cit2YXIgaW50UHJvZ3JhbSA9IGxvYWRQcm9ncmFtKGdsLCAicmVzb3VyY2VzL2ludFVuaWZvcm1T
aGFkZXIudmVydCIsICJyZXNvdXJjZXMvbm9vcFVuaWZvcm1TaGFkZXIuZnJhZyIpOworc2hvdWxk
QmUoJ2dsLmdldFByb2dyYW1QYXJhbWV0ZXIoaW50UHJvZ3JhbSwgZ2wuTElOS19TVEFUVVMpJywg
J3RydWUnKTsKK3ZhciBpdmFsTG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKGludFByb2dyYW0s
ICJpdmFsIik7Cit2YXIgaXZhbDJMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24oaW50UHJvZ3Jh
bSwgIml2YWwyIik7Cit2YXIgaXZhbDNMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24oaW50UHJv
Z3JhbSwgIml2YWwzIik7Cit2YXIgaXZhbDRMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24oaW50
UHJvZ3JhbSwgIml2YWw0Iik7CitnbC51c2VQcm9ncmFtKGludFByb2dyYW0pOworZ2wudW5pZm9y
bTFpKGl2YWxMb2MsIDEpOworZ2wudW5pZm9ybTJpKGl2YWwyTG9jLCAyLCAzKTsKK2dsLnVuaWZv
cm0zaShpdmFsM0xvYywgNCwgNSwgNik7CitnbC51bmlmb3JtNGkoaXZhbDRMb2MsIDcsIDgsIDks
IDEwKTsKK3Nob3VsZEJlKCdnbC5nZXRFcnJvcigpJywgJzAnKTsKK3Nob3VsZEJlKCdnbC5nZXRV
bmlmb3JtKGludFByb2dyYW0sIGl2YWxMb2MpJywgJzEnKTsKK3Nob3VsZEJlKCdnbC5nZXRVbmlm
b3JtKGludFByb2dyYW0sIGl2YWwyTG9jKScsICdbMiwgM10nKTsKK3Nob3VsZEJlKCdnbC5nZXRV
bmlmb3JtKGludFByb2dyYW0sIGl2YWwzTG9jKScsICdbNCwgNSwgNl0nKTsKK3Nob3VsZEJlKCdn
bC5nZXRVbmlmb3JtKGludFByb2dyYW0sIGl2YWw0TG9jKScsICdbNywgOCwgOSwgMTBdJyk7Cisv
LyBGbG9hdCB1bmlmb3JtIHZhcmlhYmxlcwordmFyIGZsb2F0UHJvZ3JhbSA9IGxvYWRQcm9ncmFt
KGdsLCAicmVzb3VyY2VzL2Zsb2F0VW5pZm9ybVNoYWRlci52ZXJ0IiwgInJlc291cmNlcy9ub29w
VW5pZm9ybVNoYWRlci5mcmFnIik7CitzaG91bGRCZSgnZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihm
bG9hdFByb2dyYW0sIGdsLkxJTktfU1RBVFVTKScsICd0cnVlJyk7Cit2YXIgZnZhbExvYyA9IGds
LmdldFVuaWZvcm1Mb2NhdGlvbihmbG9hdFByb2dyYW0sICJmdmFsIik7Cit2YXIgZnZhbDJMb2Mg
PSBnbC5nZXRVbmlmb3JtTG9jYXRpb24oZmxvYXRQcm9ncmFtLCAiZnZhbDIiKTsKK3ZhciBmdmFs
M0xvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihmbG9hdFByb2dyYW0sICJmdmFsMyIpOwordmFy
IGZ2YWw0TG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKGZsb2F0UHJvZ3JhbSwgImZ2YWw0Iik7
CitnbC51c2VQcm9ncmFtKGZsb2F0UHJvZ3JhbSk7CitnbC51bmlmb3JtMWYoZnZhbExvYywgMTEp
OworZ2wudW5pZm9ybTJmKGZ2YWwyTG9jLCAxMiwgMTMpOworZ2wudW5pZm9ybTNmKGZ2YWwzTG9j
LCAxNCwgMTUsIDE2KTsKK2dsLnVuaWZvcm00ZihmdmFsNExvYywgMTcsIDE4LCAxOSwgMjApOwor
c2hvdWxkQmUoJ2dsLmdldEVycm9yKCknLCAnMCcpOworc2hvdWxkQmUoJ2dsLmdldFVuaWZvcm0o
ZmxvYXRQcm9ncmFtLCBmdmFsTG9jKScsICcxMScpOworc2hvdWxkQmUoJ2dsLmdldFVuaWZvcm0o
ZmxvYXRQcm9ncmFtLCBmdmFsMkxvYyknLCAnWzEyLCAxM10nKTsKK3Nob3VsZEJlKCdnbC5nZXRV
bmlmb3JtKGZsb2F0UHJvZ3JhbSwgZnZhbDNMb2MpJywgJ1sxNCwgMTUsIDE2XScpOworc2hvdWxk
QmUoJ2dsLmdldFVuaWZvcm0oZmxvYXRQcm9ncmFtLCBmdmFsNExvYyknLCAnWzE3LCAxOCwgMTks
IDIwXScpOworLy8gTWF0cml4IHVuaWZvcm0gdmFyaWFibGVzCit2YXIgbWF0UHJvZ3JhbSA9IGxv
YWRQcm9ncmFtKGdsLCAicmVzb3VyY2VzL21hdFVuaWZvcm1TaGFkZXIudmVydCIsICJyZXNvdXJj
ZXMvbm9vcFVuaWZvcm1TaGFkZXIuZnJhZyIpOworc2hvdWxkQmUoJ2dsLmdldFByb2dyYW1QYXJh
bWV0ZXIobWF0UHJvZ3JhbSwgZ2wuTElOS19TVEFUVVMpJywgJ3RydWUnKTsKK3ZhciBtdmFsMkxv
YyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihtYXRQcm9ncmFtLCAibXZhbDIiKTsKK3ZhciBtdmFs
M0xvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihtYXRQcm9ncmFtLCAibXZhbDMiKTsKK3ZhciBt
dmFsNExvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihtYXRQcm9ncmFtLCAibXZhbDQiKTsKK2ds
LnVzZVByb2dyYW0obWF0UHJvZ3JhbSk7CitnbC51bmlmb3JtTWF0cml4MmZ2KG12YWwyTG9jLCBm
YWxzZSwgWzEsIDIsIDMsIDRdKTsKK2dsLnVuaWZvcm1NYXRyaXgzZnYobXZhbDNMb2MsIGZhbHNl
LCBbNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTNdKTsKK2dsLnVuaWZvcm1NYXRyaXg0ZnYo
bXZhbDRMb2MsIGZhbHNlLCBbMTQsIDE1LCAxNiwgMTcsIDE4LCAxOSwgMjAsIDIxLCAyMiwgMjMs
IDI0LCAyNSwgMjYsIDI3LCAyOCwgMjldKTsKK3Nob3VsZEJlKCdnbC5nZXRFcnJvcigpJywgJzAn
KTsKK3Nob3VsZEJlKCdnbC5nZXRVbmlmb3JtKG1hdFByb2dyYW0sIG12YWwyTG9jKScsICdbMSwg
MiwgMywgNF0nKTsKK3Nob3VsZEJlKCdnbC5nZXRVbmlmb3JtKG1hdFByb2dyYW0sIG12YWwzTG9j
KScsICdbNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTNdJyk7CitzaG91bGRCZSgnZ2wuZ2V0
VW5pZm9ybShtYXRQcm9ncmFtLCBtdmFsNExvYyknLCAnWzE0LCAxNSwgMTYsIDE3LCAxOCwgMTks
IDIwLCAyMSwgMjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5XScpOworCisvLyBUZXN0IGdl
dFZlcnRleEF0dHJpYgordmFyIGFycmF5ID0gbmV3IFdlYkdMRmxvYXRBcnJheShbMSwgMiwgMywg
NCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTZdKTsKK2dsLmJpbmRC
dWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBidWZmZXIpOworZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9C
VUZGRVIsIGFycmF5LCBnbC5EWU5BTUlDX0RSQVcpOworLy8gVmVydGV4IGF0dHJpYnV0ZSAwIGlz
IHNwZWNpYWwgaW4gdGhhdCBpdCBoYXMgbm8gY3VycmVudCBzdGF0ZSwgc28KKy8vIGZldGNoaW5n
IEdMX0NVUlJFTlRfVkVSVEVYX0FUVFJJQiBnZW5lcmF0ZXMgYW4gZXJyb3IuIFVzZSBhdHRyaWJ1
dGUKKy8vIDEgZm9yIHRoZXNlIHRlc3RzIGluc3RlYWQuCitnbC5lbmFibGVWZXJ0ZXhBdHRyaWJB
cnJheSgxKTsKK2dsLnZlcnRleEF0dHJpYlBvaW50ZXIoMSwgNCwgZ2wuRkxPQVQsIGZhbHNlLCAw
LCAwKTsKK3Nob3VsZEJlTm9uTnVsbCgnZ2wuZ2V0VmVydGV4QXR0cmliKDEsIGdsLlZFUlRFWF9B
VFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkcpJyk7CitzaG91bGRCZSgnZ2wuZ2V0VmVydGV4QXR0
cmliKDEsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRCknLCAndHJ1ZScpOworc2hvdWxk
QmUoJ2dsLmdldFZlcnRleEF0dHJpYigxLCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX1NJWkUpJywg
JzQnKTsKK3Nob3VsZEJlKCcoZ2wuZ2V0VmVydGV4QXR0cmliKDEsIGdsLlZFUlRFWF9BVFRSSUJf
QVJSQVlfU1RSSURFKSA9PSAwKSB8fCAoZ2wuZ2V0VmVydGV4QXR0cmliKDEsIGdsLlZFUlRFWF9B
VFRSSUJfQVJSQVlfU1RSSURFKSA9PSA0ICogZ2wuc2l6ZUluQnl0ZXMoZ2wuRkxPQVQpKScsICd0
cnVlJyk7CitzaG91bGRCZSgnZ2wuZ2V0VmVydGV4QXR0cmliKDEsIGdsLlZFUlRFWF9BVFRSSUJf
QVJSQVlfVFlQRSknLCAnZ2wuRkxPQVQnKTsKK3Nob3VsZEJlKCdnbC5nZXRWZXJ0ZXhBdHRyaWIo
MSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9OT1JNQUxJWkVEKScsICdmYWxzZScpOworZ2wuZGlz
YWJsZVZlcnRleEF0dHJpYkFycmF5KDEpOworc2hvdWxkQmUoJ2dsLmdldFZlcnRleEF0dHJpYigx
LCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX0VOQUJMRUQpJywgJ2ZhbHNlJyk7CitnbC52ZXJ0ZXhB
dHRyaWI0ZigxLCA1LCA2LCA3LCA4KTsKK3Nob3VsZEJlKCdnbC5nZXRWZXJ0ZXhBdHRyaWIoMSwg
Z2wuQ1VSUkVOVF9WRVJURVhfQVRUUklCKScsICdbNSwgNiwgNywgOF0nKTsKK3Nob3VsZEJlKCdn
bC5nZXRFcnJvcigpJywgJzAnKTsKKworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9pbmNvcnJlY3QtY29u
dGV4dC1vYmplY3QtYmVoYXZpb3VyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9pbmNvcnJlY3QtY29udGV4dC1vYmplY3QtYmVoYXZp
b3VyLmpzCShyZXZpc2lvbiA1MTI3OCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmds
L3NjcmlwdC10ZXN0cy9pbmNvcnJlY3QtY29udGV4dC1vYmplY3QtYmVoYXZpb3VyLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSwxNyArMzEsMTIgQEAgc2hvdWxkVGhyb3coImNvbnRleHRBLmJpbmRS
ZW5kZXJidWZmZXIoYwogc2hvdWxkVGhyb3coImNvbnRleHRBLmJpbmRUZXh0dXJlKGNvbnRleHRB
LlRFWFRVUkVfMkQsIHRleHR1cmVCKSIpOwogc2hvdWxkVGhyb3coImNvbnRleHRBLmZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyKGNvbnRleHRBLkZSQU1FQlVGRkVSLCBjb250ZXh0QS5ERVBUSF9BVFRB
Q0hNRU5ULCBjb250ZXh0QS5SRU5ERVJCVUZGRVIsIHJlbmRlckJ1ZmZlckIpIik7CiBzaG91bGRU
aHJvdygiY29udGV4dEEuZnJhbWVidWZmZXJUZXh0dXJlMkQoY29udGV4dEEuRlJBTUVCVUZGRVIs
IGNvbnRleHRBLkNPTE9SX0FUVEFDSE1FTlQwLCBjb250ZXh0QS5URVhUVVJFXzJELCB0ZXh0dXJl
QiwgMCkiKTsKLXNob3VsZFRocm93KCJjb250ZXh0QS5nZXRQcm9ncmFtaShwcm9ncmFtQiwgMCki
KTsKLXNob3VsZFRocm93KCJjb250ZXh0QS5nZXRQcm9ncmFtaXYocHJvZ3JhbUIsIDApIik7Citz
aG91bGRUaHJvdygiY29udGV4dEEuZ2V0UHJvZ3JhbVBhcmFtZXRlcihwcm9ncmFtQiwgMCkiKTsK
IHNob3VsZFRocm93KCJjb250ZXh0QS5nZXRQcm9ncmFtSW5mb0xvZyhwcm9ncmFtQiwgMCkiKTsK
LXNob3VsZFRocm93KCJjb250ZXh0QS5nZXRTaGFkZXJpKHNoYWRlckIsIDApIik7Ci1zaG91bGRU
aHJvdygiY29udGV4dEEuZ2V0U2hhZGVyaXYoc2hhZGVyQiwgMCkiKTsKK3Nob3VsZFRocm93KCJj
b250ZXh0QS5nZXRTaGFkZXJQYXJhbWV0ZXIoc2hhZGVyQiwgMCkiKTsKIHNob3VsZFRocm93KCJj
b250ZXh0QS5nZXRTaGFkZXJJbmZvTG9nKHNoYWRlckIsIDApIik7CiBzaG91bGRUaHJvdygiY29u
dGV4dEEuZ2V0U2hhZGVyU291cmNlKHNoYWRlckIpIik7Ci1zaG91bGRUaHJvdygiY29udGV4dEEu
Z2V0VW5pZm9ybWYocHJvZ3JhbUIsIGxvY2F0aW9uQSkiKTsKLXNob3VsZFRocm93KCJjb250ZXh0
QS5nZXRVbmlmb3JtZnYocHJvZ3JhbUIsIGxvY2F0aW9uQSkiKTsKLXNob3VsZFRocm93KCJjb250
ZXh0QS5nZXRVbmlmb3JtaShwcm9ncmFtQiwgbG9jYXRpb25BKSIpOwotc2hvdWxkVGhyb3coImNv
bnRleHRBLmdldFVuaWZvcm1pdihwcm9ncmFtQiwgbG9jYXRpb25BKSIpOworc2hvdWxkVGhyb3co
ImNvbnRleHRBLmdldFVuaWZvcm0ocHJvZ3JhbUIsIGxvY2F0aW9uQSkiKTsKIHNob3VsZFRocm93
KCJjb250ZXh0QS5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbUIsICd1X21vZGVsVmlld1Byb2pN
YXRyaXgnKSIpOwogCiBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL251bGwtb2JqZWN0LWJlaGF2aW91ci5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVz
dHMvbnVsbC1vYmplY3QtYmVoYXZpb3VyLmpzCShyZXZpc2lvbiA1MTI3OCkKKysrIExheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9udWxsLW9iamVjdC1iZWhhdmlvdXIu
anMJKHdvcmtpbmcgY29weSkKQEAgLTIwLDE3ICsyMCwxMiBAQCBzaG91bGRCZVVuZGVmaW5lZCgi
Y29udGV4dC5iaW5kUmVuZGVyYnVmCiBzaG91bGRCZVVuZGVmaW5lZCgiY29udGV4dC5iaW5kVGV4
dHVyZShjb250ZXh0LlRFWFRVUkVfMkQsIDApIik7CiBzaG91bGRCZVVuZGVmaW5lZCgiY29udGV4
dC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihjb250ZXh0LkZSQU1FQlVGRkVSLCBjb250ZXh0LkRF
UFRIX0FUVEFDSE1FTlQsIGNvbnRleHQuUkVOREVSQlVGRkVSLCAwKSIpOwogc2hvdWxkQmVVbmRl
ZmluZWQoImNvbnRleHQuZnJhbWVidWZmZXJUZXh0dXJlMkQoY29udGV4dC5GUkFNRUJVRkZFUiwg
Y29udGV4dC5DT0xPUl9BVFRBQ0hNRU5UMCwgY29udGV4dC5URVhUVVJFXzJELCAwLCAwKSIpOwot
c2hvdWxkVGhyb3coImNvbnRleHQuZ2V0UHJvZ3JhbWkodW5kZWZpbmVkLCAwKSIpOwotc2hvdWxk
VGhyb3coImNvbnRleHQuZ2V0UHJvZ3JhbWl2KHVuZGVmaW5lZCwgMCkiKTsKK3Nob3VsZFRocm93
KCJjb250ZXh0LmdldFByb2dyYW1QYXJhbWV0ZXIodW5kZWZpbmVkLCAwKSIpOwogc2hvdWxkVGhy
b3coImNvbnRleHQuZ2V0UHJvZ3JhbUluZm9Mb2codW5kZWZpbmVkLCAwKSIpOwotc2hvdWxkVGhy
b3coImNvbnRleHQuZ2V0U2hhZGVyaSh1bmRlZmluZWQsIDApIik7Ci1zaG91bGRUaHJvdygiY29u
dGV4dC5nZXRTaGFkZXJpdih1bmRlZmluZWQsIDApIik7CitzaG91bGRUaHJvdygiY29udGV4dC5n
ZXRTaGFkZXJQYXJhbWV0ZXIodW5kZWZpbmVkLCAwKSIpOwogc2hvdWxkVGhyb3coImNvbnRleHQu
Z2V0U2hhZGVySW5mb0xvZyh1bmRlZmluZWQsIDApIik7CiBzaG91bGRUaHJvdygiY29udGV4dC5n
ZXRTaGFkZXJTb3VyY2UodW5kZWZpbmVkKSIpOwotc2hvdWxkVGhyb3coImNvbnRleHQuZ2V0VW5p
Zm9ybWYodW5kZWZpbmVkLCAwKSIpOwotc2hvdWxkVGhyb3coImNvbnRleHQuZ2V0VW5pZm9ybWZ2
KHVuZGVmaW5lZCwgMCkiKTsKLXNob3VsZFRocm93KCJjb250ZXh0LmdldFVuaWZvcm1pKHVuZGVm
aW5lZCwgMCkiKTsKLXNob3VsZFRocm93KCJjb250ZXh0LmdldFVuaWZvcm1pdih1bmRlZmluZWQs
IDApIik7CitzaG91bGRUaHJvdygiY29udGV4dC5nZXRVbmlmb3JtKHVuZGVmaW5lZCwgMCkiKTsK
IHNob3VsZFRocm93KCJjb250ZXh0LmdldFVuaWZvcm1Mb2NhdGlvbih1bmRlZmluZWQsICdmb28n
KSIpOwogCiBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMJKHJldmlzaW9uIDUxMjc4KQorKysgTGF5
b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMJKHdvcmtpbmcgY29weSkK
QEAgLTE1OSw2ICsxNTksNDIgQEAgZnVuY3Rpb24gc2hvdWxkRXZhbHVhdGVUbyhhY3R1YWwsIGV4
cGVjdAogICB9CiB9CiAKK2Z1bmN0aW9uIHNob3VsZEJlTm9uWmVybyhfYSkKK3sKKyAgdmFyIGV4
Y2VwdGlvbjsKKyAgdmFyIF9hdjsKKyAgdHJ5IHsKKyAgICAgX2F2ID0gZXZhbChfYSk7CisgIH0g
Y2F0Y2ggKGUpIHsKKyAgICAgZXhjZXB0aW9uID0gZTsKKyAgfQorCisgIGlmIChleGNlcHRpb24p
CisgICAgdGVzdEZhaWxlZChfYSArICIgc2hvdWxkIGJlIG5vbi16ZXJvLiBUaHJldyBleGNlcHRp
b24gIiArIGV4Y2VwdGlvbik7CisgIGVsc2UgaWYgKF9hdiAhPSAwKQorICAgIHRlc3RQYXNzZWQo
X2EgKyAiIGlzIG5vbi16ZXJvLiIpOworICBlbHNlCisgICAgdGVzdEZhaWxlZChfYSArICIgc2hv
dWxkIGJlIG5vbi16ZXJvLiBXYXMgIiArIF9hdik7Cit9CisKK2Z1bmN0aW9uIHNob3VsZEJlTm9u
TnVsbChfYSkKK3sKKyAgdmFyIGV4Y2VwdGlvbjsKKyAgdmFyIF9hdjsKKyAgdHJ5IHsKKyAgICAg
X2F2ID0gZXZhbChfYSk7CisgIH0gY2F0Y2ggKGUpIHsKKyAgICAgZXhjZXB0aW9uID0gZTsKKyAg
fQorCisgIGlmIChleGNlcHRpb24pCisgICAgdGVzdEZhaWxlZChfYSArICIgc2hvdWxkIGJlIG5v
bi1udWxsLiBUaHJldyBleGNlcHRpb24gIiArIGV4Y2VwdGlvbik7CisgIGVsc2UgaWYgKF9hdiAh
PSBudWxsKQorICAgIHRlc3RQYXNzZWQoX2EgKyAiIGlzIG5vbi1udWxsLiIpOworICBlbHNlCisg
ICAgdGVzdEZhaWxlZChfYSArICIgc2hvdWxkIGJlIG5vbi1udWxsLiBXYXMgIiArIF9hdik7Cit9
CisKIGZ1bmN0aW9uIHNob3VsZEJlVW5kZWZpbmVkKF9hKQogewogICB2YXIgZXhjZXB0aW9uOwo=
</data>
<flag name="review"
          id="25450"
          type_id="1"
          status="+"
          setter="oliver"
    />
    <flag name="commit-queue"
          id="25452"
          type_id="3"
          status="-"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43728</attachid>
            <date>2009-11-23 13:25:11 -0800</date>
            <delta_ts>2009-11-23 20:22:44 -0800</delta_ts>
            <desc>Revised patch</desc>
            <filename>get-calls.patch</filename>
            <type>text/plain</type>
            <size>207460</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MTMxMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTQwIEBACisyMDA5LTExLTIzICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBD
aGFuZ2UgZ2V0Li4uIGNhbGxzIHRvIGxhdGVzdCBzcGVjCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDA5MQorCisgICAgICAgIFJlbW92ZWQgb2xkIHZl
cnNpb25zIG9mIGdldCBjYWxscyBvbiBXZWJHTFJlbmRlcmluZ0NvbnRleHQgYW5kCisgICAgICAg
IGFkZGVkIG5ldyBvbmVzIHBlciBzcGVjIHJldHVybmluZyAiYW55Ii4gTmV3IGNvZGUgc2ltcGxp
ZmllcworICAgICAgICBHcmFwaGljc0NvbnRleHQzRCBhbmQgZml4ZXMgcHJldmlvdXNseSB1bmlt
cGxlbWVudGVkIHJvdXRpbmVzLgorICAgICAgICBBZGRlZCBjdXN0b20gSlMgYW5kIFY4IGJpbmRp
bmdzLiBBZGRlZCBleGhhdXN0aXZlIHRlc3QgY2FzZQorICAgICAgICBleGVyY2lzaW5nIGFsbCBu
ZXcgY29kZSBwYXRocy4gVXBkYXRlZCBwcmVleGlzdGluZyB0ZXN0IGNhc2VzIGZvcgorICAgICAg
ICBuZXcgQVBJcy4gRml4ZWQgcHJlZXhpc3RpbmcgYnVncyBpbiBXZWJLaXQncyBhbmQgQ2hyb21l
J3MgV2ViR0wKKyAgICAgICAgaW1wbGVtZW50YXRpb25zLgorCisgICAgICAgIFJhbiBXZWJHTCBs
YXlvdXQgdGVzdHMgaW4gV2ViS2l0IChjbGVhbikgYW5kIENocm9tZSAoY291cGxlIG9mCisgICAg
ICAgIHByZWV4aXN0aW5nIGtub3duIGZhaWx1cmVzKSBhbmQgbWFudWFsIFdlYkdMIHRlc3RzIGlu
IGJvdGgKKyAgICAgICAgYnJvd3NlcnMuCisKKyAgICAgICAgVGVzdDogZmFzdC9jYW52YXMvd2Vi
Z2wvZ2wtb2JqZWN0LWdldC1jYWxscy5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnRvSlMpOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKFdlYkNvcmU6Omdl
dE9iamVjdFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpnZXRQcm9ncmFtUGFyYW1ldGVy
SGVscGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRC
dWZmZXJQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQcm9ncmFtUGFyYW1ldGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRSZW5kZXJidWZmZXJQYXJh
bWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFNo
YWRlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Z2V0VGV4UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnZXRVbmlmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnZXRWZXJ0ZXhBdHRyaWIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OEN1c3RvbUJpbmRpbmcuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJl
bmRlcmluZ0NvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9WOCk6CisgICAg
ICAgIChXZWJDb3JlOjopOgorICAgICAgICAoV2ViQ29yZTo6Z2V0T2JqZWN0UGFyYW1ldGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OmdldFByb2dyYW1QYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0FMTEJBQ0tfRlVOQ19ERUNMKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNPYmpl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzT2JqZWN0OjpDYW52YXNPYmplY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzT2JqZWN0OjpzZXRPYmplY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzT2JqZWN0OjpkZWxldGVPYmplY3QpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc09iamVjdC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xCdWZmZXI6OldlYkdMQnVmZmVyKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TEJ1ZmZlci5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZvOjpXZWJHTEdldEluZm8pOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZvOjp+V2ViR0xHZXRJbmZvKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMR2V0SW5mbzo6Z2V0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEdldElu
Zm86OmdldEJvb2wpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZvOjpnZXRGbG9hdCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEdldEluZm86OmdldExvbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xHZXRJbmZvOjpnZXRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xH
ZXRJbmZvOjpnZXRVbnNpZ25lZExvbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZv
OjpnZXRXZWJHTEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEdldEluZm86OmdldFdl
YkdMRmxvYXRBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEdldEluZm86OmdldFdlYkdM
RnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZvOjpnZXRXZWJHTElu
dEFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMR2V0SW5mbzo6Z2V0V2ViR0xQcm9ncmFt
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMR2V0SW5mbzo6Z2V0V2ViR0xSZW5kZXJidWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZvOjpnZXRXZWJHTFRleHR1cmUpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZvOjpnZXRXZWJHTFVuc2lnbmVkQnl0ZUFycmF5KToK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEdldEluZm8uaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTEdldEluZm86Oik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJidWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJidWZmZXI6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmJ1ZmZlcjo6V2ViR0xSZW5kZXJidWZm
ZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmg6CisgICAgICAg
ICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNsZWFudXBIZWxwZXI6OkNsZWFudXBIZWxwZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2xl
YW51cEhlbHBlcjo6fkNsZWFudXBIZWxwZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjphY3RpdmVUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmluZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJpbmRGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJpbmRSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpiaW5kVGV4dHVyZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclBhcmFtZXRlcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVu
dFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omdl
dFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omdl
dFByb2dyYW1QYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpnZXRQcm9ncmFtSW5mb0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFNoYWRlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFNoYWRlckluZm9Mb2cpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTaGFkZXJTb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTdHJpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRUZXhQYXJhbWV0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRVbmlmb3JtKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VmVydGV4QXR0cmliKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6dXNlUHJvZ3JhbSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRldGFjaEFuZFJlbW92ZUFsbE9iamVj
dHMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRCb29sZWFu
UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0
RmxvYXRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpnZXRJbnRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpnZXRMb25nUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dDo6Z2V0VW5zaWduZWRMb25nUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0V2ViR0xGbG9hdEFycmF5UGFyYW1ldGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0V2ViR0xJbnRBcnJheVBhcmFt
ZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFdlYkdM
VW5zaWduZWRCeXRlQXJyYXlQYXJhbWV0ZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMVGV4dHVyZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMVGV4dHVyZTo6V2ViR0xUZXh0dXJlKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TFRleHR1cmUuaDoKKyAgICAgICAgKiBtYW51YWwtdGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3V0aWxz
M2QuanM6CisgICAgICAgIChpbml0V2ViR0wpOgorICAgICAgICAobG9hZFNoYWRlcik6CisgICAg
ICAgIChGcmFtZXJhdGUucHJvdG90eXBlLnNuYXBzaG90KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6Oik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29u
dGV4dDNETWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpiaW5k
UmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRC
b29sZWFudik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0QnVmZmVy
UGFyYW1ldGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEZs
b2F0dik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OmdldEludGVnZXJ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpnZXRQcm9ncmFtaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Omdl
dFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRTaGFkZXJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6Z2V0VGV4UGFyYW1ldGVyZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OmdldFRleFBhcmFtZXRlcml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpnZXRVbmlmb3JtZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmdldFVuaWZvcm1pdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0
VmVydGV4QXR0cmliZnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Omdl
dFZlcnRleEF0dHJpYml2KToKKwogMjAwOS0xMS0yMyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KSW5kZXg6IFdl
YkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5neXBpCShy
ZXZpc2lvbiA1MTI3OCkKKysrIFdlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjgzLDYgKzEyODMsOCBAQAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMRmxvYXRB
cnJheS5oJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcCcs
CiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oJywKKyAgICAgICAg
ICAgICdodG1sL2NhbnZhcy9XZWJHTEdldEluZm8uY3BwJywKKyAgICAgICAgICAgICdodG1sL2Nh
bnZhcy9XZWJHTEdldEluZm8uaCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvQ2FudmFzR3Jh
ZGllbnQuY3BwJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9DYW52YXNHcmFkaWVudC5oJywK
ICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTEludEFycmF5LmNwcCcsCkluZGV4OiBXZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNTEyNzgpCisr
KyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMTE5OSw2ICsxMTk5LDggQEAKIAkJNjVERjMyM0MwOUQxREU2NTAwMEJFMzI1IC8qIEpT
Q2FudmFzUGF0dGVybi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNjVERjMyMzYwOUQxREU2NTAwMEJFMzI1IC8qIEpTQ2FudmFzUGF0dGVybi5oICovOyB9
OwogCQk2NURGMzI2MTA5RDFFMTk5MDAwQkUzMjUgLyogVXNlckFnZW50U3R5bGVTaGVldHNEYXRh
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NjU4
MUFGMDlEMTRFRTYwMDBFNjFENyAvKiBVc2VyQWdlbnRTdHlsZVNoZWV0c0RhdGEuY3BwICovOyB9
OwogCQk2NUZFQTg2OTA5ODMzQURFMDBCRUQ0QUIgLyogUGFnZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUZFQTg2ODA5ODMzQURFMDBCRUQ0QUIg
LyogUGFnZS5jcHAgKi87IH07CisJCTZFNDdFNjYwMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEdl
dEluZm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NkU0N0U2NUUxMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMR2V0SW5mby5jcHAgKi87IH07CisJCTZF
NDdFNjYxMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEdldEluZm8uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNDdFNjVGMTBCNzk0NEIwMEIxODZDOCAv
KiBXZWJHTEdldEluZm8uaCAqLzsgfTsKIAkJNzI2MjZFMDIwRUYwMjJGRTAwQTA3RTIwIC8qIEZv
bnRGYXN0UGF0aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MjYyNkUwMTBFRjAyMkZFMDBBMDdFMjAgLyogRm9udEZhc3RQYXRoLmNwcCAqLzsgfTsK
IAkJNzU0MTMzQTgxMDJFMDBFODAwMDc1RDAwIC8qIEluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NDEzM0E3MTAy
RTAwRTgwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50LmggKi87IH07CiAJCTc1NDEz
M0FBMTAyRTAwRjQwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NDEzM0E5MTAyRTAwRjQw
MDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCAqLzsgfTsKQEAgLTY1MDcsNiAr
NjUwOSw4IEBACiAJCTY1REYzMjM2MDlEMURFNjUwMDBCRTMyNSAvKiBKU0NhbnZhc1BhdHRlcm4u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ2FudmFzUGF0dGVybi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NUY4MDY5NzA1NEQ5Rjg2MDA4QkY3NzYgLyog
QmxvY2tFeGNlcHRpb25zLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gQmxvY2tFeGNlcHRpb25zLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNjVGRUE4NjgwOTgzM0FE
RTAwQkVENEFCIC8qIFBhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFBhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2RTQ3RTY1RTEwQjc5
NDRCMDBCMTg2QzggLyogV2ViR0xHZXRJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IFdlYkdMR2V0SW5mby5jcHA7IHBhdGggPSBjYW52YXMvV2ViR0xHZXRJbmZv
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkU0N0U2NUYxMEI3OTQ0QjAwQjE4
NkM4IC8qIFdlYkdMR2V0SW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBX
ZWJHTEdldEluZm8uaDsgcGF0aCA9IGNhbnZhcy9XZWJHTEdldEluZm8uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzI2MjZFMDEwRUYwMjJGRTAwQTA3RTIwIC8qIEZvbnRGYXN0UGF0
aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250RmFzdFBhdGgu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NTQxMzNBNzEwMkUwMEU4MDAwNzVE
MDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbnNwZWN0b3JUaW1lbGluZUFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTc1NDEzM0E5MTAyRTAwRjQwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvclRpbWVs
aW5lQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTA2NDAsNiArMTA2
NDQsOCBAQAogCQkJCTQ5QzdCOUFFMTA0MkQzMkUwMDA5RDQ0NyAvKiBXZWJHTEZyYW1lYnVmZmVy
LmNwcCAqLywKIAkJCQk0OUM3QjlBRjEwNDJEMzJFMDAwOUQ0NDcgLyogV2ViR0xGcmFtZWJ1ZmZl
ci5oICovLAogCQkJCTQ5QzdCOUIwMTA0MkQzMkUwMDA5RDQ0NyAvKiBXZWJHTEZyYW1lYnVmZmVy
LmlkbCAqLywKKwkJCQk2RTQ3RTY1RTEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xHZXRJbmZvLmNw
cCAqLywKKwkJCQk2RTQ3RTY1RjEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xHZXRJbmZvLmggKi8s
CiAJCQkJNDk0ODRGQjMxMDJDRjIzQzAwMTg3REQzIC8qIENhbnZhc0dyYWRpZW50LmNwcCAqLywK
IAkJCQk0OTQ4NEZCNDEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzR3JhZGllbnQuaCAqLywKIAkJ
CQk0OTQ4NEZCNTEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzR3JhZGllbnQuaWRsICovLApAQCAt
MTgxMzQsNiArMTgxNDAsNyBAQAogCQkJCUUxMjQ3NDg0MTBBQTE2MUQwMEI3OTQ5MyAvKiBBdXRo
ZW50aWNhdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM4MkRGNTgxMEE4RDVDOTAw
OTI1NjUyIC8qIENvbG9yU3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUFCMzFDOTFFMTBBRTFC
OEUwMDBDN0I5MiAvKiBMaW5lQ2xhbXBWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkU0N0U2
NjExMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMR2V0SW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0y
MDI3Nyw2ICsyMDI4NCw3IEBACiAJCQkJMTQ3OUZBRUYxMDlBRTM3NTAwREVENjU1IC8qIFJlbmRl
clJ1YnlCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NzlGQUYxMTA5QUUzNzUwMERFRDY1
NSAvKiBSZW5kZXJSdWJ5UnVuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NzlGQUYzMTA5QUUz
NzUwMERFRDY1NSAvKiBSZW5kZXJSdWJ5VGV4dC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2RTQ3
RTY2MDEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xHZXRJbmZvLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJ
bmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEN1c3RvbS5jcHAJKHJldmlzaW9uIDUxMjc4KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDEx
ICszMywyNSBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJIVE1MQ2Fu
dmFzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKLSNpbmNsdWRlICJK
U1dlYkdMRmxvYXRBcnJheS5oIgotI2luY2x1ZGUgIkpTV2ViR0xJbnRBcnJheS5oIgogI2luY2x1
ZGUgIkpTSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJKU0hUTUxJbWFnZUVsZW1lbnQu
aCIKKyNpbmNsdWRlICJKU1dlYkdMQnVmZmVyLmgiCisjaW5jbHVkZSAiSlNXZWJHTEZsb2F0QXJy
YXkuaCIKKyNpbmNsdWRlICJKU1dlYkdMRnJhbWVidWZmZXIuaCIKKyNpbmNsdWRlICJKU1dlYkdM
SW50QXJyYXkuaCIKKyNpbmNsdWRlICJKU1dlYkdMUHJvZ3JhbS5oIgorI2luY2x1ZGUgIkpTV2Vi
R0xSZW5kZXJidWZmZXIuaCIKKyNpbmNsdWRlICJKU1dlYkdMU2hhZGVyLmgiCisjaW5jbHVkZSAi
SlNXZWJHTFRleHR1cmUuaCIKKyNpbmNsdWRlICJKU1dlYkdMVW5zaWduZWRCeXRlQXJyYXkuaCIK
ICNpbmNsdWRlICJKU1dlYktpdENTU01hdHJpeC5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVk
LmgiCisjaW5jbHVkZSAiV2ViR0xCdWZmZXIuaCIKKyNpbmNsdWRlICJXZWJHTEdldEluZm8uaCIK
KyNpbmNsdWRlICJXZWJHTEZsb2F0QXJyYXkuaCIKKyNpbmNsdWRlICJXZWJHTEZyYW1lYnVmZmVy
LmgiCisjaW5jbHVkZSAiV2ViR0xJbnRBcnJheS5oIgorI2luY2x1ZGUgIldlYkdMUHJvZ3JhbS5o
IgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5o
PgogI2luY2x1ZGUgPHd0Zi9Pd25GYXN0TWFsbG9jUHRyLmg+CkBAIC04MSw2ICs5NSwyMTQgQEAg
SlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyUwogICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwogfQogCitKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBXZWJHTEdldEluZm8mIGluZm8pCit7CisgICAg
c3dpdGNoIChpbmZvLmdldFR5cGUoKSkgeworICAgIGNhc2UgV2ViR0xHZXRJbmZvOjprVHlwZUJv
b2w6CisgICAgICAgIHJldHVybiBqc0Jvb2xlYW4oaW5mby5nZXRCb29sKCkpOworICAgIGNhc2Ug
V2ViR0xHZXRJbmZvOjprVHlwZUZsb2F0OgorICAgICAgICByZXR1cm4ganNOdW1iZXIoZXhlYywg
aW5mby5nZXRGbG9hdCgpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVMb25nOgorICAg
ICAgICByZXR1cm4ganNOdW1iZXIoZXhlYywgaW5mby5nZXRMb25nKCkpOworICAgIGNhc2UgV2Vi
R0xHZXRJbmZvOjprVHlwZU51bGw6CisgICAgICAgIHJldHVybiBqc051bGwoKTsKKyAgICBjYXNl
IFdlYkdMR2V0SW5mbzo6a1R5cGVTdHJpbmc6CisgICAgICAgIHJldHVybiBqc1N0cmluZyhleGVj
LCBpbmZvLmdldFN0cmluZygpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVVbnNpZ25l
ZExvbmc6CisgICAgICAgIHJldHVybiBqc051bWJlcihleGVjLCBpbmZvLmdldFVuc2lnbmVkTG9u
ZygpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVXZWJHTEJ1ZmZlcjoKKyAgICAgICAg
cmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBpbmZvLmdldFdlYkdMQnVmZmVyKCkpOwor
ICAgIGNhc2UgV2ViR0xHZXRJbmZvOjprVHlwZVdlYkdMRmxvYXRBcnJheToKKyAgICAgICAgcmV0
dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBpbmZvLmdldFdlYkdMRmxvYXRBcnJheSgpKTsK
KyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVXZWJHTEZyYW1lYnVmZmVyOgorICAgICAgICBy
ZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIGluZm8uZ2V0V2ViR0xGcmFtZWJ1ZmZlcigp
KTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVXZWJHTEludEFycmF5OgorICAgICAgICBy
ZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIGluZm8uZ2V0V2ViR0xJbnRBcnJheSgpKTsK
KyAgICAvLyBGSVhNRTogaW1wbGVtZW50IFdlYkdMT2JqZWN0QXJyYXkKKyAgICAvLyBjYXNlIFdl
YkdMR2V0SW5mbzo6a1R5cGVXZWJHTE9iamVjdEFycmF5OgorICAgIGNhc2UgV2ViR0xHZXRJbmZv
OjprVHlwZVdlYkdMUHJvZ3JhbToKKyAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2Jq
ZWN0LCBpbmZvLmdldFdlYkdMUHJvZ3JhbSgpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5
cGVXZWJHTFJlbmRlcmJ1ZmZlcjoKKyAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2Jq
ZWN0LCBpbmZvLmdldFdlYkdMUmVuZGVyYnVmZmVyKCkpOworICAgIGNhc2UgV2ViR0xHZXRJbmZv
OjprVHlwZVdlYkdMVGV4dHVyZToKKyAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2Jq
ZWN0LCBpbmZvLmdldFdlYkdMVGV4dHVyZSgpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5
cGVXZWJHTFVuc2lnbmVkQnl0ZUFycmF5OgorICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9i
YWxPYmplY3QsIGluZm8uZ2V0V2ViR0xVbnNpZ25lZEJ5dGVBcnJheSgpKTsKKyAgICBkZWZhdWx0
OgorICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKKyAgICB9Cit9CisKK2VudW0gT2JqZWN0VHlwZSB7CisgICAga0J1ZmZlciwga1JlbmRlcmJ1
ZmZlciwga1RleHR1cmUsIGtWZXJ0ZXhBdHRyaWIKK307CisKK3N0YXRpYyBKU1ZhbHVlIGdldE9i
amVjdFBhcmFtZXRlcihKU1dlYkdMUmVuZGVyaW5nQ29udGV4dCogb2JqLCBFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIE9iamVjdFR5cGUgb2JqZWN0VHlwZSkKK3sKKyAgICBp
ZiAoYXJncy5zaXplKCkgIT0gMikKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgU3lu
dGF4RXJyb3IpOworCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgV2ViR0xSZW5kZXJp
bmdDb250ZXh0KiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0Kj4o
b2JqLT5pbXBsKCkpOworICAgIHVuc2lnbmVkIHRhcmdldCA9IGFyZ3MuYXQoMCkudG9JbnQzMihl
eGVjKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOworICAgIHVuc2lnbmVkIHBuYW1lID0gYXJncy5hdCgxKS50b0ludDMyKGV4ZWMp
OworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CisgICAgV2ViR0xHZXRJbmZvIGluZm87CisgICAgc3dpdGNoIChvYmplY3RUeXBlKSB7
CisgICAgY2FzZSBrQnVmZmVyOgorICAgICAgICBpbmZvID0gY29udGV4dC0+Z2V0QnVmZmVyUGFy
YW1ldGVyKHRhcmdldCwgcG5hbWUsIGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBrUmVu
ZGVyYnVmZmVyOgorICAgICAgICBpbmZvID0gY29udGV4dC0+Z2V0UmVuZGVyYnVmZmVyUGFyYW1l
dGVyKHRhcmdldCwgcG5hbWUsIGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBrVGV4dHVy
ZToKKyAgICAgICAgaW5mbyA9IGNvbnRleHQtPmdldFRleFBhcmFtZXRlcih0YXJnZXQsIHBuYW1l
LCBlYyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Uga1ZlcnRleEF0dHJpYjoKKyAgICAgICAg
Ly8gdGFyZ2V0ID0+IGluZGV4CisgICAgICAgIGluZm8gPSBjb250ZXh0LT5nZXRWZXJ0ZXhBdHRy
aWIodGFyZ2V0LCBwbmFtZSwgZWMpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAg
ICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgaWYgKGVj
KSB7CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOworICAgIH0KKyAgICByZXR1cm4gdG9KUyhleGVjLCBvYmotPmdsb2JhbE9i
amVjdCgpLCBpbmZvKTsKK30KKworZW51bSBXaGljaFByb2dyYW1DYWxsIHsKKyAgICBrUHJvZ3Jh
bVBhcmFtZXRlciwga1VuaWZvcm0KK307CisKK3N0YXRpYyBKU1ZhbHVlIGdldFByb2dyYW1QYXJh
bWV0ZXJIZWxwZXIoSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQqIG9iaiwgRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBBcmdMaXN0JiBhcmdzLCBXaGljaFByb2dyYW1DYWxsIHByb2dyYW1DYWxsKQorewor
ICAgIGlmIChhcmdzLnNpemUoKSAhPSAyKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVj
LCBTeW50YXhFcnJvcik7CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBXZWJHTFJl
bmRlcmluZ0NvbnRleHQqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRl
eHQqPihvYmotPmltcGwoKSk7CisgICAgV2ViR0xQcm9ncmFtKiBwcm9ncmFtID0gdG9XZWJHTFBy
b2dyYW0oYXJncy5hdCgwKSk7CisgICAgdW5zaWduZWQgcG5hbWUgPSBhcmdzLmF0KDEpLnRvSW50
MzIoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKKyAgICBXZWJHTEdldEluZm8gaW5mbzsKKyAgICBzd2l0Y2ggKHByb2dy
YW1DYWxsKSB7CisgICAgY2FzZSBrUHJvZ3JhbVBhcmFtZXRlcjoKKyAgICAgICAgaW5mbyA9IGNv
bnRleHQtPmdldFByb2dyYW1QYXJhbWV0ZXIocHJvZ3JhbSwgcG5hbWUsIGVjKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBrVW5pZm9ybToKKyAgICAgICAgLy8gcG5hbWUgLT4gbG9jYXRpb24K
KyAgICAgICAgaW5mbyA9IGNvbnRleHQtPmdldFVuaWZvcm0ocHJvZ3JhbSwgcG5hbWUsIGVjKTsK
KyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGlmIChlYykgeworICAgICAgICBzZXRET01FeGNl
cHRpb24oZXhlYywgZWMpOworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9Cisg
ICAgcmV0dXJuIHRvSlMoZXhlYywgb2JqLT5nbG9iYWxPYmplY3QoKSwgaW5mbyk7Cit9CisKK0pT
VmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclBhcmFtZXRlcihFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCit7CisgICAgcmV0dXJuIGdldE9iamVjdFBh
cmFtZXRlcih0aGlzLCBleGVjLCBhcmdzLCBrQnVmZmVyKTsKK30KKworSlNWYWx1ZSBKU1dlYkdM
UmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICBpZiAoYXJncy5zaXplKCkg
IT0gMykKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgU3ludGF4RXJyb3IpOworCisg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjb250
ZXh0ID0gc3RhdGljX2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0Kj4oaW1wbCgpKTsKKyAgICB1
bnNpZ25lZCB0YXJnZXQgPSBhcmdzLmF0KDApLnRvSW50MzIoZXhlYyk7CisgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB1bnNp
Z25lZCBhdHRhY2htZW50ID0gYXJncy5hdCgxKS50b0ludDMyKGV4ZWMpOworICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgdW5z
aWduZWQgcG5hbWUgPSBhcmdzLmF0KDIpLnRvSW50MzIoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBXZWJHTEdl
dEluZm8gaW5mbyA9IGNvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcih0
YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCBlYyk7CisgICAgaWYgKGVjKSB7CisgICAgICAgIHNl
dERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwor
ICAgIH0KKyAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QoKSwgaW5mbyk7Cit9CisK
K0pTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFBhcmFtZXRlcihFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCit7CisgICAgaWYgKGFyZ3Muc2l6ZSgpICE9IDEp
CisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFN5bnRheEVycm9yKTsKKworICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCA9
IHN0YXRpY19jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dCo+KGltcGwoKSk7CisgICAgdW5zaWdu
ZWQgcG5hbWUgPSBhcmdzLmF0KDApLnRvSW50MzIoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBXZWJHTEdldElu
Zm8gaW5mbyA9IGNvbnRleHQtPmdldFBhcmFtZXRlcihwbmFtZSwgZWMpOworICAgIGlmIChlYykg
eworICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKKyAgICB9CisgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCks
IGluZm8pOworfQorCitKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQcm9ncmFt
UGFyYW1ldGVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICBy
ZXR1cm4gZ2V0UHJvZ3JhbVBhcmFtZXRlckhlbHBlcih0aGlzLCBleGVjLCBhcmdzLCBrUHJvZ3Jh
bVBhcmFtZXRlcik7Cit9CisKK0pTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFJl
bmRlcmJ1ZmZlclBhcmFtZXRlcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3Mp
Cit7CisgICAgcmV0dXJuIGdldE9iamVjdFBhcmFtZXRlcih0aGlzLCBleGVjLCBhcmdzLCBrUmVu
ZGVyYnVmZmVyKTsKK30KKworSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2hh
ZGVyUGFyYW1ldGVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAg
ICBpZiAoYXJncy5zaXplKCkgIT0gMikKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywg
U3ludGF4RXJyb3IpOworCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0KiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0
Kj4oaW1wbCgpKTsKKyAgICBXZWJHTFNoYWRlciogc2hhZGVyID0gdG9XZWJHTFNoYWRlcihhcmdz
LmF0KDApKTsKKyAgICB1bnNpZ25lZCBwbmFtZSA9IGFyZ3MuYXQoMSkudG9JbnQzMihleGVjKTsK
KyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOworICAgIFdlYkdMR2V0SW5mbyBpbmZvID0gY29udGV4dC0+Z2V0U2hhZGVyUGFyYW1ldGVy
KHNoYWRlciwgcG5hbWUsIGVjKTsKKyAgICBpZiAoZWMpIHsKKyAgICAgICAgc2V0RE9NRXhjZXB0
aW9uKGV4ZWMsIGVjKTsKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQorICAg
IHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBpbmZvKTsKK30KKworSlNWYWx1ZSBK
U1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VGV4UGFyYW1ldGVyKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICByZXR1cm4gZ2V0T2JqZWN0UGFyYW1ldGVyKHRo
aXMsIGV4ZWMsIGFyZ3MsIGtUZXh0dXJlKTsKK30KKworSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5n
Q29udGV4dDo6Z2V0VW5pZm9ybShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3Mp
Cit7CisgICAgcmV0dXJuIGdldFByb2dyYW1QYXJhbWV0ZXJIZWxwZXIodGhpcywgZXhlYywgYXJn
cywga1VuaWZvcm0pOworfQorCitKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRW
ZXJ0ZXhBdHRyaWIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreworICAg
IHJldHVybiBnZXRPYmplY3RQYXJhbWV0ZXIodGhpcywgZXhlYywgYXJncywga1ZlcnRleEF0dHJp
Yik7Cit9CisKIC8vIHZvaWQgdGV4SW1hZ2UyREhUTUwoaW4gdW5zaWduZWQgbG9uZyB0YXJnZXQs
IGluIHVuc2lnbmVkIGxvbmcgbGV2ZWwsIGluIEhUTUxJbWFnZUVsZW1lbnQgaW1hZ2UpOwogSlNW
YWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6dGV4SW1hZ2UyRChFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7IApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhDdXN0b21CaW5kaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhDdXN0b21CaW5kaW5nLmgJKHJldmlzaW9uIDUxMjc4KQorKysgV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhDdXN0b21CaW5kaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2NSw3
ICszNjUsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2lmIEVOQUJMRSgzRF9DQU5WQVMpCiAg
ICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xSZW5kZXJpbmdDb250ZXh0QnVmZmVyRGF0YSk7
CiAgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xSZW5kZXJpbmdDb250ZXh0QnVmZmVyU3Vi
RGF0YSk7Ci0gICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xSZW5kZXJpbmdDb250ZXh0U2l6
ZW9mKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJHTFJlbmRlcmluZ0NvbnRleHRHZXRC
dWZmZXJQYXJhbWV0ZXIpOworICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdMUmVuZGVyaW5n
Q29udGV4dEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcik7CisgICAgICAgIERFQ0xB
UkVfQ0FMTEJBQ0soV2ViR0xSZW5kZXJpbmdDb250ZXh0R2V0UGFyYW1ldGVyKTsKKyAgICAgICAg
REVDTEFSRV9DQUxMQkFDSyhXZWJHTFJlbmRlcmluZ0NvbnRleHRHZXRQcm9ncmFtUGFyYW1ldGVy
KTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJHTFJlbmRlcmluZ0NvbnRleHRHZXRSZW5k
ZXJidWZmZXJQYXJhbWV0ZXIpOworICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdMUmVuZGVy
aW5nQ29udGV4dEdldFNoYWRlclBhcmFtZXRlcik7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0so
V2ViR0xSZW5kZXJpbmdDb250ZXh0R2V0VGV4UGFyYW1ldGVyKTsKKyAgICAgICAgREVDTEFSRV9D
QUxMQkFDSyhXZWJHTFJlbmRlcmluZ0NvbnRleHRHZXRVbmlmb3JtKTsKKyAgICAgICAgREVDTEFS
RV9DQUxMQkFDSyhXZWJHTFJlbmRlcmluZ0NvbnRleHRHZXRWZXJ0ZXhBdHRyaWIpOwogICAgICAg
ICBERUNMQVJFX0NBTExCQUNLKFdlYkdMUmVuZGVyaW5nQ29udGV4dFRleEltYWdlMkQpOwogICAg
ICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdMUmVuZGVyaW5nQ29udGV4dFRleFN1YkltYWdlMkQp
OwogICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdMUmVuZGVyaW5nQ29udGV4dFVuaWZvcm0x
ZnYpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmluZ0Nv
bnRleHRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAkocmV2aXNpb24gNTEyNzgpCisrKyBX
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDggQEAKICNpbmNsdWRlICJWOFdlYkdMQnl0
ZUFycmF5LmgiCiAjaW5jbHVkZSAiVjhXZWJHTEZsb2F0QXJyYXkuaCIKICNpbmNsdWRlICJWOFdl
YkdMSW50QXJyYXkuaCIKKyNpbmNsdWRlICJWOFdlYkdMUHJvZ3JhbS5oIgorI2luY2x1ZGUgIlY4
V2ViR0xTaGFkZXIuaCIKICNpbmNsdWRlICJWOFdlYkdMU2hvcnRBcnJheS5oIgogI2luY2x1ZGUg
IlY4V2ViR0xVbnNpZ25lZEJ5dGVBcnJheS5oIgogI2luY2x1ZGUgIlY4V2ViR0xVbnNpZ25lZElu
dEFycmF5LmgiCkBAIC0xNjcsNiArMTY5LDI2MyBAQCBDQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xS
ZW5kZXJpbmdDb250ZXh0CiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAorc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KGNvbnN0IFdlYkdMR2V0SW5mbyYgaW5mbykKK3sK
KyAgICBzd2l0Y2ggKGluZm8uZ2V0VHlwZSgpKSB7CisgICAgY2FzZSBXZWJHTEdldEluZm86OmtU
eXBlQm9vbDoKKyAgICAgICAgcmV0dXJuIHY4OjpCb29sZWFuOjpOZXcoaW5mby5nZXRCb29sKCkp
OworICAgIGNhc2UgV2ViR0xHZXRJbmZvOjprVHlwZUZsb2F0OgorICAgICAgICByZXR1cm4gdjg6
Ok51bWJlcjo6TmV3KGluZm8uZ2V0RmxvYXQoKSk7CisgICAgY2FzZSBXZWJHTEdldEluZm86OmtU
eXBlTG9uZzoKKyAgICAgICAgcmV0dXJuIHY4OjpJbnRlZ2VyOjpOZXcoaW5mby5nZXRMb25nKCkp
OworICAgIGNhc2UgV2ViR0xHZXRJbmZvOjprVHlwZU51bGw6CisgICAgICAgIHJldHVybiB2ODo6
TnVsbCgpOworICAgIGNhc2UgV2ViR0xHZXRJbmZvOjprVHlwZVN0cmluZzoKKyAgICAgICAgcmV0
dXJuIHY4OjpTdHJpbmc6Ok5ldyhmcm9tV2ViQ29yZVN0cmluZyhpbmZvLmdldFN0cmluZygpKSwg
aW5mby5nZXRTdHJpbmcoKS5sZW5ndGgoKSk7CisgICAgY2FzZSBXZWJHTEdldEluZm86OmtUeXBl
VW5zaWduZWRMb25nOgorICAgICAgICByZXR1cm4gdjg6OkludGVnZXI6Ok5ld0Zyb21VbnNpZ25l
ZChpbmZvLmdldFVuc2lnbmVkTG9uZygpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVX
ZWJHTEJ1ZmZlcjoKKyAgICAgICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6Y29udmVydFRvVjhPYmpl
Y3QoVjhDbGFzc0luZGV4OjpXRUJHTEJVRkZFUiwgaW5mby5nZXRXZWJHTEJ1ZmZlcigpKTsKKyAg
ICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVXZWJHTEZsb2F0QXJyYXk6CisgICAgICAgIHJldHVy
biBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb1Y4T2JqZWN0KFY4Q2xhc3NJbmRleDo6V0VCR0xGTE9B
VEFSUkFZLCBpbmZvLmdldFdlYkdMRmxvYXRBcnJheSgpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5m
bzo6a1R5cGVXZWJHTEZyYW1lYnVmZmVyOgorICAgICAgICByZXR1cm4gVjhET01XcmFwcGVyOjpj
b252ZXJ0VG9WOE9iamVjdChWOENsYXNzSW5kZXg6OldFQkdMRlJBTUVCVUZGRVIsIGluZm8uZ2V0
V2ViR0xGcmFtZWJ1ZmZlcigpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVXZWJHTElu
dEFycmF5OgorICAgICAgICByZXR1cm4gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9WOE9iamVjdChW
OENsYXNzSW5kZXg6OldFQkdMSU5UQVJSQVksIGluZm8uZ2V0V2ViR0xJbnRBcnJheSgpKTsKKyAg
ICAvLyBGSVhNRTogaW1wbGVtZW50IFdlYkdMT2JqZWN0QXJyYXkKKyAgICAvLyBjYXNlIFdlYkdM
R2V0SW5mbzo6a1R5cGVXZWJHTE9iamVjdEFycmF5OgorICAgIGNhc2UgV2ViR0xHZXRJbmZvOjpr
VHlwZVdlYkdMUHJvZ3JhbToKKyAgICAgICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6Y29udmVydFRv
VjhPYmplY3QoVjhDbGFzc0luZGV4OjpXRUJHTFBST0dSQU0sIGluZm8uZ2V0V2ViR0xQcm9ncmFt
KCkpOworICAgIGNhc2UgV2ViR0xHZXRJbmZvOjprVHlwZVdlYkdMUmVuZGVyYnVmZmVyOgorICAg
ICAgICByZXR1cm4gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9WOE9iamVjdChWOENsYXNzSW5kZXg6
OldFQkdMUkVOREVSQlVGRkVSLCBpbmZvLmdldFdlYkdMUmVuZGVyYnVmZmVyKCkpOworICAgIGNh
c2UgV2ViR0xHZXRJbmZvOjprVHlwZVdlYkdMVGV4dHVyZToKKyAgICAgICAgcmV0dXJuIFY4RE9N
V3JhcHBlcjo6Y29udmVydFRvVjhPYmplY3QoVjhDbGFzc0luZGV4OjpXRUJHTFRFWFRVUkUsIGlu
Zm8uZ2V0V2ViR0xUZXh0dXJlKCkpOworICAgIGNhc2UgV2ViR0xHZXRJbmZvOjprVHlwZVdlYkdM
VW5zaWduZWRCeXRlQXJyYXk6CisgICAgICAgIHJldHVybiBWOERPTVdyYXBwZXI6OmNvbnZlcnRU
b1Y4T2JqZWN0KFY4Q2xhc3NJbmRleDo6V0VCR0xVTlNJR05FREJZVEVBUlJBWSwgaW5mby5nZXRX
ZWJHTFVuc2lnbmVkQnl0ZUFycmF5KCkpOworICAgIGRlZmF1bHQ6CisgICAgICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgfQorfQorCitl
bnVtIE9iamVjdFR5cGUgeworICAgIGtCdWZmZXIsIGtSZW5kZXJidWZmZXIsIGtUZXh0dXJlLCBr
VmVydGV4QXR0cmliCit9OworCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGdldE9iamVj
dFBhcmFtZXRlcihjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzLCBPYmplY3RUeXBlIG9iamVjdFR5
cGUpCit7CisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgIT0gMikgeworICAgICAgICBWOFByb3h5Ojpz
ZXRET01FeGNlcHRpb24oU1lOVEFYX0VSUik7CisgICAgICAgIHJldHVybiBub3RIYW5kbGVkQnlJ
bnRlcmNlcHRvcigpOworICAgIH0KKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdl
YkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCA9CisgICAgICAgIFY4RE9NV3JhcHBlcjo6Y29u
dmVydERPTVdyYXBwZXJUb05hdGl2ZTxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+KGFyZ3MuSG9sZGVy
KCkpOworICAgIGJvb2wgb2s7CisgICAgdW5zaWduZWQgdGFyZ2V0ID0gdG9JbnQzMihhcmdzWzBd
LCBvayk7CisgICAgaWYgKCFvaykgeworICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24o
U1lOVEFYX0VSUik7CisgICAgICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOwor
ICAgIH0KKyAgICB1bnNpZ25lZCBwbmFtZSA9IHRvSW50MzIoYXJnc1sxXSwgb2spOworICAgIGlm
ICghb2spIHsKKyAgICAgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKFNZTlRBWF9FUlIpOwor
ICAgICAgICByZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsKKyAgICB9CisgICAgV2Vi
R0xHZXRJbmZvIGluZm87CisgICAgc3dpdGNoIChvYmplY3RUeXBlKSB7CisgICAgY2FzZSBrQnVm
ZmVyOgorICAgICAgICBpbmZvID0gY29udGV4dC0+Z2V0QnVmZmVyUGFyYW1ldGVyKHRhcmdldCwg
cG5hbWUsIGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBrUmVuZGVyYnVmZmVyOgorICAg
ICAgICBpbmZvID0gY29udGV4dC0+Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKHRhcmdldCwgcG5h
bWUsIGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBrVGV4dHVyZToKKyAgICAgICAgaW5m
byA9IGNvbnRleHQtPmdldFRleFBhcmFtZXRlcih0YXJnZXQsIHBuYW1lLCBlYyk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2Uga1ZlcnRleEF0dHJpYjoKKyAgICAgICAgLy8gdGFyZ2V0ID0+IGlu
ZGV4CisgICAgICAgIGluZm8gPSBjb250ZXh0LT5nZXRWZXJ0ZXhBdHRyaWIodGFyZ2V0LCBwbmFt
ZSwgZWMpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgaWYgKGVjKSB7CisgICAgICAgIFY4
UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYyk7CisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVk
KCk7CisgICAgfQorICAgIHJldHVybiB0b1Y4KGluZm8pOworfQorCitlbnVtIFdoaWNoUHJvZ3Jh
bUNhbGwgeworICAgIGtQcm9ncmFtUGFyYW1ldGVyLCBrVW5pZm9ybQorfTsKKworc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBnZXRQcm9ncmFtUGFyYW1ldGVyKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MsIFdoaWNoUHJvZ3JhbUNhbGwgcHJvZ3JhbUNhbGwpCit7CisgICAgaWYgKGFyZ3Mu
TGVuZ3RoKCkgIT0gMikgeworICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oU1lOVEFY
X0VSUik7CisgICAgICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOworICAgIH0K
KworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dCog
Y29udGV4dCA9CisgICAgICAgIFY4RE9NV3JhcHBlcjo6Y29udmVydERPTVdyYXBwZXJUb05hdGl2
ZTxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+KGFyZ3MuSG9sZGVyKCkpOworICAgIFdlYkdMUHJvZ3Jh
bSogcHJvZ3JhbSA9IFY4V2ViR0xQcm9ncmFtOjpIYXNJbnN0YW5jZShhcmdzWzBdKSA/IHY4RE9N
V3JhcHBlclRvPFdlYkdMUHJvZ3JhbT4oVjhDbGFzc0luZGV4OjpXRUJHTFBST0dSQU0sIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMDsKKyAgICBib29sIG9rOworICAg
IHVuc2lnbmVkIHBuYW1lID0gdG9JbnQzMihhcmdzWzFdLCBvayk7CisgICAgaWYgKCFvaykgewor
ICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oU1lOVEFYX0VSUik7CisgICAgICAgIHJl
dHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOworICAgIH0KKyAgICBXZWJHTEdldEluZm8g
aW5mbzsKKyAgICBzd2l0Y2ggKHByb2dyYW1DYWxsKSB7CisgICAgY2FzZSBrUHJvZ3JhbVBhcmFt
ZXRlcjoKKyAgICAgICAgaW5mbyA9IGNvbnRleHQtPmdldFByb2dyYW1QYXJhbWV0ZXIocHJvZ3Jh
bSwgcG5hbWUsIGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBrVW5pZm9ybToKKyAgICAg
ICAgLy8gcG5hbWUgLT4gbG9jYXRpb24KKyAgICAgICAgaW5mbyA9IGNvbnRleHQtPmdldFVuaWZv
cm0ocHJvZ3JhbSwgcG5hbWUsIGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGlmIChl
YykgeworICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oZWMpOworICAgICAgICByZXR1
cm4gdjg6OlVuZGVmaW5lZCgpOworICAgIH0KKyAgICByZXR1cm4gdG9WOChpbmZvKTsKK30KKwor
CitDQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xSZW5kZXJpbmdDb250ZXh0R2V0QnVmZmVyUGFyYW1l
dGVyKQoreworICAgIElOQ19TVEFUUygiRE9NLldlYkdMUmVuZGVyaW5nQ29udGV4dC5nZXRCdWZm
ZXJQYXJhbWV0ZXIoKSIpOworICAgIHJldHVybiBnZXRPYmplY3RQYXJhbWV0ZXIoYXJncywga0J1
ZmZlcik7Cit9CisKK0NBTExCQUNLX0ZVTkNfREVDTChXZWJHTFJlbmRlcmluZ0NvbnRleHRHZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIpCit7CisgICAgSU5DX1NUQVRTKCJET00uV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcigpIik7
CisKKyAgICBpZiAoYXJncy5MZW5ndGgoKSAhPSAzKSB7CisgICAgICAgIFY4UHJveHk6OnNldERP
TUV4Y2VwdGlvbihTWU5UQVhfRVJSKTsKKyAgICAgICAgcmV0dXJuIG5vdEhhbmRsZWRCeUludGVy
Y2VwdG9yKCk7CisgICAgfQorCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0ID0KKyAgICAgICAgVjhET01XcmFwcGVyOjpjb252ZXJ0
RE9NV3JhcHBlclRvTmF0aXZlPFdlYkdMUmVuZGVyaW5nQ29udGV4dD4oYXJncy5Ib2xkZXIoKSk7
CisgICAgYm9vbCBvazsKKyAgICB1bnNpZ25lZCB0YXJnZXQgPSB0b0ludDMyKGFyZ3NbMF0sIG9r
KTsKKyAgICBpZiAoIW9rKSB7CisgICAgICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihTWU5U
QVhfRVJSKTsKKyAgICAgICAgcmV0dXJuIG5vdEhhbmRsZWRCeUludGVyY2VwdG9yKCk7CisgICAg
fQorICAgIHVuc2lnbmVkIGF0dGFjaG1lbnQgPSB0b0ludDMyKGFyZ3NbMV0sIG9rKTsKKyAgICBp
ZiAoIW9rKSB7CisgICAgICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihTWU5UQVhfRVJSKTsK
KyAgICAgICAgcmV0dXJuIG5vdEhhbmRsZWRCeUludGVyY2VwdG9yKCk7CisgICAgfQorICAgIHVu
c2lnbmVkIHBuYW1lID0gdG9JbnQzMihhcmdzWzJdLCBvayk7CisgICAgaWYgKCFvaykgeworICAg
ICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oU1lOVEFYX0VSUik7CisgICAgICAgIHJldHVy
biBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOworICAgIH0KKyAgICBXZWJHTEdldEluZm8gaW5m
byA9IGNvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcih0YXJnZXQsIGF0
dGFjaG1lbnQsIHBuYW1lLCBlYyk7CisgICAgaWYgKGVjKSB7CisgICAgICAgIFY4UHJveHk6OnNl
dERPTUV4Y2VwdGlvbihlYyk7CisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAg
fQorICAgIHJldHVybiB0b1Y4KGluZm8pOworfQorCitDQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xS
ZW5kZXJpbmdDb250ZXh0R2V0UGFyYW1ldGVyKQoreworICAgIElOQ19TVEFUUygiRE9NLldlYkdM
UmVuZGVyaW5nQ29udGV4dC5nZXRQYXJhbWV0ZXIoKSIpOworCisgICAgaWYgKGFyZ3MuTGVuZ3Ro
KCkgIT0gMSkgeworICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oU1lOVEFYX0VSUik7
CisgICAgICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOworICAgIH0KKworICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4
dCA9CisgICAgICAgIFY4RE9NV3JhcHBlcjo6Y29udmVydERPTVdyYXBwZXJUb05hdGl2ZTxXZWJH
TFJlbmRlcmluZ0NvbnRleHQ+KGFyZ3MuSG9sZGVyKCkpOworICAgIGJvb2wgb2s7CisgICAgdW5z
aWduZWQgcG5hbWUgPSB0b0ludDMyKGFyZ3NbMF0sIG9rKTsKKyAgICBpZiAoIW9rKSB7CisgICAg
ICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihTWU5UQVhfRVJSKTsKKyAgICAgICAgcmV0dXJu
IG5vdEhhbmRsZWRCeUludGVyY2VwdG9yKCk7CisgICAgfQorICAgIFdlYkdMR2V0SW5mbyBpbmZv
ID0gY29udGV4dC0+Z2V0UGFyYW1ldGVyKHBuYW1lLCBlYyk7CisgICAgaWYgKGVjKSB7CisgICAg
ICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYyk7CisgICAgICAgIHJldHVybiB2ODo6VW5k
ZWZpbmVkKCk7CisgICAgfQorICAgIHJldHVybiB0b1Y4KGluZm8pOworfQorCitDQUxMQkFDS19G
VU5DX0RFQ0woV2ViR0xSZW5kZXJpbmdDb250ZXh0R2V0UHJvZ3JhbVBhcmFtZXRlcikKK3sKKyAg
ICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRlcmluZ0NvbnRleHQuZ2V0UHJvZ3JhbVBhcmFtZXRl
cigpIik7CisgICAgcmV0dXJuIGdldFByb2dyYW1QYXJhbWV0ZXIoYXJncywga1Byb2dyYW1QYXJh
bWV0ZXIpOworfQorCitDQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xSZW5kZXJpbmdDb250ZXh0R2V0
UmVuZGVyYnVmZmVyUGFyYW1ldGVyKQoreworICAgIElOQ19TVEFUUygiRE9NLldlYkdMUmVuZGVy
aW5nQ29udGV4dC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoKSIpOworICAgIHJldHVybiBnZXRP
YmplY3RQYXJhbWV0ZXIoYXJncywga1JlbmRlcmJ1ZmZlcik7Cit9CisKK0NBTExCQUNLX0ZVTkNf
REVDTChXZWJHTFJlbmRlcmluZ0NvbnRleHRHZXRTaGFkZXJQYXJhbWV0ZXIpCit7CisgICAgSU5D
X1NUQVRTKCJET00uV2ViR0xSZW5kZXJpbmdDb250ZXh0LmdldFNoYWRlclBhcmFtZXRlcigpIik7
CisKKyAgICBpZiAoYXJncy5MZW5ndGgoKSAhPSAyKSB7CisgICAgICAgIFY4UHJveHk6OnNldERP
TUV4Y2VwdGlvbihTWU5UQVhfRVJSKTsKKyAgICAgICAgcmV0dXJuIG5vdEhhbmRsZWRCeUludGVy
Y2VwdG9yKCk7CisgICAgfQorCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0ID0KKyAgICAgICAgVjhET01XcmFwcGVyOjpjb252ZXJ0
RE9NV3JhcHBlclRvTmF0aXZlPFdlYkdMUmVuZGVyaW5nQ29udGV4dD4oYXJncy5Ib2xkZXIoKSk7
CisgICAgV2ViR0xTaGFkZXIqIHNoYWRlciA9IFY4V2ViR0xTaGFkZXI6Okhhc0luc3RhbmNlKGFy
Z3NbMF0pID8gdjhET01XcmFwcGVyVG88V2ViR0xTaGFkZXI+KFY4Q2xhc3NJbmRleDo6V0VCR0xT
SEFERVIsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMDsKKyAgICBi
b29sIG9rOworICAgIHVuc2lnbmVkIHBuYW1lID0gdG9JbnQzMihhcmdzWzFdLCBvayk7CisgICAg
aWYgKCFvaykgeworICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oU1lOVEFYX0VSUik7
CisgICAgICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOworICAgIH0KKyAgICBX
ZWJHTEdldEluZm8gaW5mbyA9IGNvbnRleHQtPmdldFNoYWRlclBhcmFtZXRlcihzaGFkZXIsIHBu
YW1lLCBlYyk7CisgICAgaWYgKGVjKSB7CisgICAgICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlv
bihlYyk7CisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgfQorICAgIHJldHVy
biB0b1Y4KGluZm8pOworfQorCitDQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xSZW5kZXJpbmdDb250
ZXh0R2V0VGV4UGFyYW1ldGVyKQoreworICAgIElOQ19TVEFUUygiRE9NLldlYkdMUmVuZGVyaW5n
Q29udGV4dC5nZXRUZXhQYXJhbWV0ZXIoKSIpOworICAgIHJldHVybiBnZXRPYmplY3RQYXJhbWV0
ZXIoYXJncywga1RleHR1cmUpOworfQorCitDQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xSZW5kZXJp
bmdDb250ZXh0R2V0VW5pZm9ybSkKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRlcmlu
Z0NvbnRleHQuZ2V0VW5pZm9ybSgpIik7CisgICAgcmV0dXJuIGdldFByb2dyYW1QYXJhbWV0ZXIo
YXJncywga1VuaWZvcm0pOworfQorCitDQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xSZW5kZXJpbmdD
b250ZXh0R2V0VmVydGV4QXR0cmliKQoreworICAgIElOQ19TVEFUUygiRE9NLldlYkdMUmVuZGVy
aW5nQ29udGV4dC5nZXRWZXJ0ZXhBdHRyaWIoKSIpOworICAgIHJldHVybiBnZXRPYmplY3RQYXJh
bWV0ZXIoYXJncywga1ZlcnRleEF0dHJpYik7Cit9CisKIENBTExCQUNLX0ZVTkNfREVDTChXZWJH
TFJlbmRlcmluZ0NvbnRleHRUZXhJbWFnZTJEKQogewogICAgIElOQ19TVEFUUygiRE9NLldlYkdM
UmVuZGVyaW5nQ29udGV4dC50ZXhJbWFnZTJEKCkiKTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc09iamVjdC5jcHAJKHJldmlzaW9uIDUxMjc4KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAKIENhbnZhc09iamVjdDo6Q2FudmFzT2JqZWN0KFdlYkdMUmVuZGVy
aW5nQ29udGV4dCogY29udGV4dCkKICAgICA6IG1fb2JqZWN0KDApCisgICAgLCBtX3Nob3VsZERl
bGV0ZU9iamVjdCh0cnVlKQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCiB7CiB9CkBAIC00NCwy
NCArNDUsMjcgQEAgQ2FudmFzT2JqZWN0Ojp+Q2FudmFzT2JqZWN0KCkKICAgICAgICAgbV9jb250
ZXh0LT5yZW1vdmVPYmplY3QodGhpcyk7CiB9CiAKLXZvaWQgQ2FudmFzT2JqZWN0OjpzZXRPYmpl
Y3QoUGxhdGZvcm0zRE9iamVjdCBvYmplY3QpCit2b2lkIENhbnZhc09iamVjdDo6c2V0T2JqZWN0
KFBsYXRmb3JtM0RPYmplY3Qgb2JqZWN0LCBib29sIHNob3VsZERlbGV0ZU9iamVjdCkKIHsKICAg
ICBpZiAob2JqZWN0ID09IG1fb2JqZWN0KQogICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAg
IGRlbGV0ZU9iamVjdCgpOwogICAgIG1fb2JqZWN0ID0gb2JqZWN0OworICAgIG1fc2hvdWxkRGVs
ZXRlT2JqZWN0ID0gc2hvdWxkRGVsZXRlT2JqZWN0OwogfQogCiB2b2lkIENhbnZhc09iamVjdDo6
ZGVsZXRlT2JqZWN0KCkKIHsKICAgICBpZiAobV9vYmplY3QpIHsKLSAgICAgICAgaWYgKG1fY29u
dGV4dCkgewotICAgICAgICAgICAgbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpLT5tYWtl
Q29udGV4dEN1cnJlbnQoKTsKLSAgICAgICAgICAgIF9kZWxldGVPYmplY3QobV9vYmplY3QpOwot
ICAgICAgICB9CisgICAgICAgIGlmIChtX3Nob3VsZERlbGV0ZU9iamVjdCkKKyAgICAgICAgICAg
IGlmIChtX2NvbnRleHQpIHsKKyAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmdyYXBoaWNzQ29u
dGV4dDNEKCktPm1ha2VDb250ZXh0Q3VycmVudCgpOworICAgICAgICAgICAgICAgIF9kZWxldGVP
YmplY3QobV9vYmplY3QpOworICAgICAgICAgICAgfQogICAgICAgICBtX29iamVjdCA9IDA7CiAg
ICAgfQorICAgIG1fc2hvdWxkRGVsZXRlT2JqZWN0ID0gdHJ1ZTsKIH0KIAogfQpJbmRleDogV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc09iamVjdC5oCShyZXZpc2lvbiA1MTI3OCkKKysrIFdlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIH5DYW52YXNPYmplY3QoKTsKICAg
ICAgICAgCiAgICAgICAgIFBsYXRmb3JtM0RPYmplY3Qgb2JqZWN0KCkgY29uc3QgeyByZXR1cm4g
bV9vYmplY3Q7IH0KLSAgICAgICAgdm9pZCBzZXRPYmplY3QoUGxhdGZvcm0zRE9iamVjdCk7Cisg
ICAgICAgIHZvaWQgc2V0T2JqZWN0KFBsYXRmb3JtM0RPYmplY3QsIGJvb2wgc2hvdWxkRGVsZXRl
T2JqZWN0ID0gdHJ1ZSk7CiAgICAgICAgIHZvaWQgZGVsZXRlT2JqZWN0KCk7CiAgICAgICAgIAog
ICAgICAgICB2b2lkIGRldGFjaENvbnRleHQoKQpAQCAtNTcsNiArNTcsMTMgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIAogICAgIHByaXZhdGU6CiAgICAgICAgIFBsYXRmb3JtM0RPYmplY3Qg
bV9vYmplY3Q7CisgICAgICAgIC8vIFRoZSBzaG91bGREZWxldGVPYmplY3QgZmxhZyBpbmRpY2F0
ZXMgd2hldGhlciB0aGlzIHdyYXBwZXIKKyAgICAgICAgLy8gb3ducyB0aGUgdW5kZXJseWluZyBy
ZXNvdXJjZSBhbmQgc2hvdWxkIGRlbGV0ZSBpdCB3aGVuIHRoZQorICAgICAgICAvLyB3cmFwcGVy
IGlzIHVucmVmZXJlbmNlZCBmb3IgdGhlIGxhc3QgdGltZSBhbmQgZGVsZXRlZC4gSXQKKyAgICAg
ICAgLy8gaXMgb25seSBzZXQgdG8gZmFsc2UgZm9yIGNlcnRhaW4gb2JqZWN0cyByZXR1cm5lZCBm
cm9tIGdldAorICAgICAgICAvLyBxdWVyaWVzLiBGSVhNRTogc2hvdWxkIGNvbnNpZGVyIGNhbm9u
aWNhbGl6aW5nIGFsbCBvZiB0aGVzZQorICAgICAgICAvLyBvYmplY3RzIGluIHRoZSBmdXR1cmUu
CisgICAgICAgIGJvb2wgbV9zaG91bGREZWxldGVPYmplY3Q7CiAgICAgICAgIFdlYkdMUmVuZGVy
aW5nQ29udGV4dCogbV9jb250ZXh0OwogICAgIH07CiAgICAgCkluZGV4OiBXZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMQnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMQnVmZmVyLmNwcAkocmV2aXNpb24gNTEyNzgpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMQnVmZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTIgKzM3LDIzIEBAIFBhc3NS
ZWZQdHI8V2ViR0xCdWZmZXI+IFdlYkdMQnVmZmVyOjpjcmUKICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFdlYkdMQnVmZmVyKGN0eCkpOwogfQogCitQYXNzUmVmUHRyPFdlYkdMQnVmZmVyPiBXZWJH
TEJ1ZmZlcjo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY3R4LCBQbGF0Zm9ybTNET2Jq
ZWN0IG9iaikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdMQnVmZmVyKGN0eCwgb2Jq
KSk7Cit9CisKIFdlYkdMQnVmZmVyOjpXZWJHTEJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHQq
IGN0eCkKICAgICA6IENhbnZhc09iamVjdChjdHgpCiB7CiAgICAgc2V0T2JqZWN0KGNvbnRleHQo
KS0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+Y3JlYXRlQnVmZmVyKCkpOwogfQogCitXZWJHTEJ1ZmZl
cjo6V2ViR0xCdWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjdHgsIFBsYXRmb3JtM0RPYmpl
Y3Qgb2JqKQorICAgIDogQ2FudmFzT2JqZWN0KGN0eCkKK3sKKyAgICBzZXRPYmplY3Qob2JqLCBm
YWxzZSk7Cit9CisKIHZvaWQgV2ViR0xCdWZmZXI6Ol9kZWxldGVPYmplY3QoUGxhdGZvcm0zRE9i
amVjdCBvYmplY3QpCiB7CiAgICAgY29udGV4dCgpLT5ncmFwaGljc0NvbnRleHQzRCgpLT5kZWxl
dGVCdWZmZXIob2JqZWN0KTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmgJKHJldmlz
aW9uIDUxMjc4KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOSw4ICszOSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIAog
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJHTEJ1ZmZlcj4gY3JlYXRlKFdlYkdMUmVuZGVy
aW5nQ29udGV4dCopOwogICAgICAgICAKKyAgICAgICAgLy8gRm9yIHF1ZXJ5aW5nIHByZXZpb3Vz
bHkgY3JlYXRlZCBvYmplY3RzIHZpYSBlLmcuIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcgorICAgICAgICAvLyBGSVhNRTogc2hvdWxkIGNvbnNpZGVyIGNhbm9uaWNhbGl6aW5nIHRo
ZXNlIG9iamVjdHMKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViR0xCdWZmZXI+IGNyZWF0
ZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqLCBQbGF0Zm9ybTNET2JqZWN0KTsKKwogICAgIHByb3Rl
Y3RlZDoKICAgICAgICAgV2ViR0xCdWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0Kik7CisgICAg
ICAgIFdlYkdMQnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dCosIFBsYXRmb3JtM0RPYmplY3Qg
b2JqKTsKICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgdm9pZCBfZGVsZXRlT2JqZWN0KFBsYXRm
b3JtM0RPYmplY3Qgbyk7CiAgICAgfTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xH
ZXRJbmZvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMR2V0SW5m
by5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjE1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
OSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUo
M0RfQ0FOVkFTKQorCisjaW5jbHVkZSAiV2ViR0xHZXRJbmZvLmgiCisjaW5jbHVkZSAiV2ViR0xC
dWZmZXIuaCIKKyNpbmNsdWRlICJXZWJHTEZsb2F0QXJyYXkuaCIKKyNpbmNsdWRlICJXZWJHTEZy
YW1lYnVmZmVyLmgiCisjaW5jbHVkZSAiV2ViR0xJbnRBcnJheS5oIgorI2luY2x1ZGUgIldlYkdM
UHJvZ3JhbS5oIgorI2luY2x1ZGUgIldlYkdMUmVuZGVyYnVmZmVyLmgiCisjaW5jbHVkZSAiV2Vi
R0xUZXh0dXJlLmgiCisjaW5jbHVkZSAiV2ViR0xVbnNpZ25lZEJ5dGVBcnJheS5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK1dlYkdMR2V0SW5mbzo6V2ViR0xHZXRJbmZvKGJvb2wgdmFsdWUp
CisgICAgOiBtX3R5cGUoa1R5cGVCb29sKQorICAgICwgbV9ib29sKHZhbHVlKQoreworfQorCitX
ZWJHTEdldEluZm86OldlYkdMR2V0SW5mbyhmbG9hdCB2YWx1ZSkKKyAgICA6IG1fdHlwZShrVHlw
ZUZsb2F0KQorICAgICwgbV9mbG9hdCh2YWx1ZSkKK3sKK30KKworV2ViR0xHZXRJbmZvOjpXZWJH
TEdldEluZm8obG9uZyB2YWx1ZSkKKyAgICA6IG1fdHlwZShrVHlwZUxvbmcpCisgICAgLCBtX2xv
bmcodmFsdWUpCit7Cit9CisKK1dlYkdMR2V0SW5mbzo6V2ViR0xHZXRJbmZvKCkKKyAgICA6IG1f
dHlwZShrVHlwZU51bGwpCit7Cit9CisKK1dlYkdMR2V0SW5mbzo6V2ViR0xHZXRJbmZvKGNvbnN0
IFN0cmluZyYgdmFsdWUpCisgICAgOiBtX3R5cGUoa1R5cGVTdHJpbmcpCisgICAgLCBtX3N0cmlu
Zyh2YWx1ZSkKK3sKK30KKworV2ViR0xHZXRJbmZvOjpXZWJHTEdldEluZm8odW5zaWduZWQgbG9u
ZyB2YWx1ZSkKKyAgICA6IG1fdHlwZShrVHlwZVVuc2lnbmVkTG9uZykKKyAgICAsIG1fdW5zaWdu
ZWRMb25nKHZhbHVlKQoreworfQorCitXZWJHTEdldEluZm86OldlYkdMR2V0SW5mbyhQYXNzUmVm
UHRyPFdlYkdMQnVmZmVyPiB2YWx1ZSkKKyAgICA6IG1fdHlwZShrVHlwZVdlYkdMQnVmZmVyKQor
ICAgICwgbV93ZWJnbEJ1ZmZlcih2YWx1ZSkKK3sKK30KKworV2ViR0xHZXRJbmZvOjpXZWJHTEdl
dEluZm8oUGFzc1JlZlB0cjxXZWJHTEZsb2F0QXJyYXk+IHZhbHVlKQorICAgIDogbV90eXBlKGtU
eXBlV2ViR0xGbG9hdEFycmF5KQorICAgICwgbV93ZWJnbEZsb2F0QXJyYXkodmFsdWUpCit7Cit9
CisKK1dlYkdMR2V0SW5mbzo6V2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xGcmFtZWJ1ZmZl
cj4gdmFsdWUpCisgICAgOiBtX3R5cGUoa1R5cGVXZWJHTEZyYW1lYnVmZmVyKQorICAgICwgbV93
ZWJnbEZyYW1lYnVmZmVyKHZhbHVlKQoreworfQorCitXZWJHTEdldEluZm86OldlYkdMR2V0SW5m
byhQYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IHZhbHVlKQorICAgIDogbV90eXBlKGtUeXBlV2Vi
R0xJbnRBcnJheSkKKyAgICAsIG1fd2ViZ2xJbnRBcnJheSh2YWx1ZSkKK3sKK30KKworV2ViR0xH
ZXRJbmZvOjpXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTFByb2dyYW0+IHZhbHVlKQorICAg
IDogbV90eXBlKGtUeXBlV2ViR0xQcm9ncmFtKQorICAgICwgbV93ZWJnbFByb2dyYW0odmFsdWUp
Cit7Cit9CisKK1dlYkdMR2V0SW5mbzo6V2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xSZW5k
ZXJidWZmZXI+IHZhbHVlKQorICAgIDogbV90eXBlKGtUeXBlV2ViR0xSZW5kZXJidWZmZXIpCisg
ICAgLCBtX3dlYmdsUmVuZGVyYnVmZmVyKHZhbHVlKQoreworfQorCitXZWJHTEdldEluZm86Oldl
YkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMVGV4dHVyZT4gdmFsdWUpCisgICAgOiBtX3R5cGUo
a1R5cGVXZWJHTFRleHR1cmUpCisgICAgLCBtX3dlYmdsVGV4dHVyZSh2YWx1ZSkKK3sKK30KKwor
V2ViR0xHZXRJbmZvOjpXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTFVuc2lnbmVkQnl0ZUFy
cmF5PiB2YWx1ZSkKKyAgICA6IG1fdHlwZShrVHlwZVdlYkdMVW5zaWduZWRCeXRlQXJyYXkpCisg
ICAgLCBtX3dlYmdsVW5zaWduZWRCeXRlQXJyYXkodmFsdWUpCit7Cit9CisKK1dlYkdMR2V0SW5m
bzo6fldlYkdMR2V0SW5mbygpCit7Cit9CisKK1dlYkdMR2V0SW5mbzo6VHlwZSBXZWJHTEdldElu
Zm86OmdldFR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3R5cGU7Cit9CisKK2Jvb2wgV2Vi
R0xHZXRJbmZvOjpnZXRCb29sKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZ2V0VHlwZSgpID09IGtU
eXBlQm9vbCk7CisgICAgcmV0dXJuIG1fYm9vbDsKK30KKworZmxvYXQgV2ViR0xHZXRJbmZvOjpn
ZXRGbG9hdCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGdldFR5cGUoKSA9PSBrVHlwZUZsb2F0KTsK
KyAgICByZXR1cm4gbV9mbG9hdDsKK30KKworbG9uZyBXZWJHTEdldEluZm86OmdldExvbmcoKSBj
b25zdAoreworICAgIEFTU0VSVChnZXRUeXBlKCkgPT0ga1R5cGVMb25nKTsKKyAgICByZXR1cm4g
bV9sb25nOworfQorCitjb25zdCBTdHJpbmcmIFdlYkdMR2V0SW5mbzo6Z2V0U3RyaW5nKCkgY29u
c3QKK3sKKyAgICBBU1NFUlQoZ2V0VHlwZSgpID09IGtUeXBlU3RyaW5nKTsKKyAgICByZXR1cm4g
bV9zdHJpbmc7Cit9CisKK3Vuc2lnbmVkIGxvbmcgV2ViR0xHZXRJbmZvOjpnZXRVbnNpZ25lZExv
bmcoKSBjb25zdAoreworICAgIEFTU0VSVChnZXRUeXBlKCkgPT0ga1R5cGVVbnNpZ25lZExvbmcp
OworICAgIHJldHVybiBtX3Vuc2lnbmVkTG9uZzsKK30KKworUGFzc1JlZlB0cjxXZWJHTEJ1ZmZl
cj4gV2ViR0xHZXRJbmZvOjpnZXRXZWJHTEJ1ZmZlcigpIGNvbnN0Cit7CisgICAgQVNTRVJUKGdl
dFR5cGUoKSA9PSBrVHlwZVdlYkdMQnVmZmVyKTsKKyAgICByZXR1cm4gbV93ZWJnbEJ1ZmZlcjsK
K30KKworUGFzc1JlZlB0cjxXZWJHTEZsb2F0QXJyYXk+IFdlYkdMR2V0SW5mbzo6Z2V0V2ViR0xG
bG9hdEFycmF5KCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZ2V0VHlwZSgpID09IGtUeXBlV2ViR0xG
bG9hdEFycmF5KTsKKyAgICByZXR1cm4gbV93ZWJnbEZsb2F0QXJyYXk7Cit9CisKK1Bhc3NSZWZQ
dHI8V2ViR0xGcmFtZWJ1ZmZlcj4gV2ViR0xHZXRJbmZvOjpnZXRXZWJHTEZyYW1lYnVmZmVyKCkg
Y29uc3QKK3sKKyAgICBBU1NFUlQoZ2V0VHlwZSgpID09IGtUeXBlV2ViR0xGcmFtZWJ1ZmZlcik7
CisgICAgcmV0dXJuIG1fd2ViZ2xGcmFtZWJ1ZmZlcjsKK30KKworUGFzc1JlZlB0cjxXZWJHTElu
dEFycmF5PiBXZWJHTEdldEluZm86OmdldFdlYkdMSW50QXJyYXkoKSBjb25zdAoreworICAgIEFT
U0VSVChnZXRUeXBlKCkgPT0ga1R5cGVXZWJHTEludEFycmF5KTsKKyAgICByZXR1cm4gbV93ZWJn
bEludEFycmF5OworfQorCitQYXNzUmVmUHRyPFdlYkdMUHJvZ3JhbT4gV2ViR0xHZXRJbmZvOjpn
ZXRXZWJHTFByb2dyYW0oKSBjb25zdAoreworICAgIEFTU0VSVChnZXRUeXBlKCkgPT0ga1R5cGVX
ZWJHTFByb2dyYW0pOworICAgIHJldHVybiBtX3dlYmdsUHJvZ3JhbTsKK30KKworUGFzc1JlZlB0
cjxXZWJHTFJlbmRlcmJ1ZmZlcj4gV2ViR0xHZXRJbmZvOjpnZXRXZWJHTFJlbmRlcmJ1ZmZlcigp
IGNvbnN0Cit7CisgICAgQVNTRVJUKGdldFR5cGUoKSA9PSBrVHlwZVdlYkdMUmVuZGVyYnVmZmVy
KTsKKyAgICByZXR1cm4gbV93ZWJnbFJlbmRlcmJ1ZmZlcjsKK30KKworUGFzc1JlZlB0cjxXZWJH
TFRleHR1cmU+IFdlYkdMR2V0SW5mbzo6Z2V0V2ViR0xUZXh0dXJlKCkgY29uc3QKK3sKKyAgICBB
U1NFUlQoZ2V0VHlwZSgpID09IGtUeXBlV2ViR0xUZXh0dXJlKTsKKyAgICByZXR1cm4gbV93ZWJn
bFRleHR1cmU7Cit9CisKK1Bhc3NSZWZQdHI8V2ViR0xVbnNpZ25lZEJ5dGVBcnJheT4gV2ViR0xH
ZXRJbmZvOjpnZXRXZWJHTFVuc2lnbmVkQnl0ZUFycmF5KCkgY29uc3QKK3sKKyAgICBBU1NFUlQo
Z2V0VHlwZSgpID09IGtUeXBlV2ViR0xVbnNpZ25lZEJ5dGVBcnJheSk7CisgICAgcmV0dXJuIG1f
d2ViZ2xVbnNpZ25lZEJ5dGVBcnJheTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKDNEX0NBTlZBUykKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xHZXRJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEdldElu
Zm8uaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBH
b29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkdMR2V0SW5mb19oCisjZGVmaW5lIFdlYkdM
R2V0SW5mb19oCisKKyNpbmNsdWRlICJ3dGYvUGFzc1JlZlB0ci5oIgorI2luY2x1ZGUgInd0Zi9S
ZWZQdHIuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorCisjaW5jbHVkZSAiV2ViR0xC
dWZmZXIuaCIKKyNpbmNsdWRlICJXZWJHTEZsb2F0QXJyYXkuaCIKKyNpbmNsdWRlICJXZWJHTEZy
YW1lYnVmZmVyLmgiCisjaW5jbHVkZSAiV2ViR0xJbnRBcnJheS5oIgorLy8gRklYTUU6IGltcGxl
bWVudCBXZWJHTE9iamVjdEFycmF5CisvLyNpbmNsdWRlICJXZWJHTE9iamVjdEFycmF5LmgiCisj
aW5jbHVkZSAiV2ViR0xQcm9ncmFtLmgiCisjaW5jbHVkZSAiV2ViR0xSZW5kZXJidWZmZXIuaCIK
KyNpbmNsdWRlICJXZWJHTFRleHR1cmUuaCIKKyNpbmNsdWRlICJXZWJHTFVuc2lnbmVkQnl0ZUFy
cmF5LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gQSB0YWdnZWQgdW5pb24gcmVwcmVz
ZW50aW5nIHRoZSByZXN1bHQgb2YgZ2V0IHF1ZXJpZXMgbGlrZQorLy8gZ2V0UGFyYW1ldGVyIChl
bmNvbXBhc3NpbmcgZ2V0Qm9vbGVhbnYsIGdldEludGVnZXJ2LCBnZXRGbG9hdHYpIGFuZAorLy8g
c2ltaWxhciB2YXJpYW50cy4gRm9yIHJlZmVyZW5jZSBjb3VudGVkIHR5cGVzLCBpbmNyZW1lbnRz
IGFuZAorLy8gZGVjcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRoZSB0YXJnZXQgb2Jq
ZWN0LgorCitjbGFzcyBXZWJHTEdldEluZm8geworcHVibGljOgorICAgIGVudW0gVHlwZSB7Cisg
ICAgICAgIGtUeXBlQm9vbCwKKyAgICAgICAga1R5cGVGbG9hdCwKKyAgICAgICAga1R5cGVMb25n
LAorICAgICAgICBrVHlwZU51bGwsCisgICAgICAgIGtUeXBlU3RyaW5nLAorICAgICAgICBrVHlw
ZVVuc2lnbmVkTG9uZywKKyAgICAgICAga1R5cGVXZWJHTEJ1ZmZlciwKKyAgICAgICAga1R5cGVX
ZWJHTEZsb2F0QXJyYXksCisgICAgICAgIGtUeXBlV2ViR0xGcmFtZWJ1ZmZlciwKKyAgICAgICAg
a1R5cGVXZWJHTEludEFycmF5LAorICAgICAgICBrVHlwZVdlYkdMT2JqZWN0QXJyYXksCisgICAg
ICAgIGtUeXBlV2ViR0xQcm9ncmFtLAorICAgICAgICBrVHlwZVdlYkdMUmVuZGVyYnVmZmVyLAor
ICAgICAgICBrVHlwZVdlYkdMVGV4dHVyZSwKKyAgICAgICAga1R5cGVXZWJHTFVuc2lnbmVkQnl0
ZUFycmF5CisgICAgfTsKKworICAgIFdlYkdMR2V0SW5mbyhib29sIHZhbHVlKTsKKyAgICBXZWJH
TEdldEluZm8oZmxvYXQgdmFsdWUpOworICAgIFdlYkdMR2V0SW5mbyhsb25nIHZhbHVlKTsKKyAg
ICAvLyBSZXByZXNlbnRzIHRoZSBOVUxMIHZhbHVlIGFuZCB0eXBlCisgICAgV2ViR0xHZXRJbmZv
KCk7CisgICAgV2ViR0xHZXRJbmZvKGNvbnN0IFN0cmluZyYgdmFsdWUpOworICAgIFdlYkdMR2V0
SW5mbyh1bnNpZ25lZCBsb25nIHZhbHVlKTsKKyAgICBXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxX
ZWJHTEJ1ZmZlcj4gdmFsdWUpOworICAgIFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMRmxv
YXRBcnJheT4gdmFsdWUpOworICAgIFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMRnJhbWVi
dWZmZXI+IHZhbHVlKTsKKyAgICBXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTEludEFycmF5
PiB2YWx1ZSk7CisgICAgLy8gRklYTUU6IGltcGxlbWVudCBXZWJHTE9iamVjdEFycmF5CisgICAg
Ly8gV2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xPYmplY3RBcnJheT4gdmFsdWUpOworICAg
IFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMUHJvZ3JhbT4gdmFsdWUpOworICAgIFdlYkdM
R2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPiB2YWx1ZSk7CisgICAgV2ViR0xH
ZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xUZXh0dXJlPiB2YWx1ZSk7CisgICAgV2ViR0xHZXRJbmZv
KFBhc3NSZWZQdHI8V2ViR0xVbnNpZ25lZEJ5dGVBcnJheT4gdmFsdWUpOworCisgICAgdmlydHVh
bCB+V2ViR0xHZXRJbmZvKCk7CisKKyAgICBUeXBlIGdldFR5cGUoKSBjb25zdDsKKworICAgIGJv
b2wgZ2V0Qm9vbCgpIGNvbnN0OworICAgIGZsb2F0IGdldEZsb2F0KCkgY29uc3Q7CisgICAgbG9u
ZyBnZXRMb25nKCkgY29uc3Q7CisgICAgY29uc3QgU3RyaW5nJiBnZXRTdHJpbmcoKSBjb25zdDsK
KyAgICB1bnNpZ25lZCBsb25nIGdldFVuc2lnbmVkTG9uZygpIGNvbnN0OworICAgIFBhc3NSZWZQ
dHI8V2ViR0xCdWZmZXI+IGdldFdlYkdMQnVmZmVyKCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxX
ZWJHTEZsb2F0QXJyYXk+IGdldFdlYkdMRmxvYXRBcnJheSgpIGNvbnN0OworICAgIFBhc3NSZWZQ
dHI8V2ViR0xGcmFtZWJ1ZmZlcj4gZ2V0V2ViR0xGcmFtZWJ1ZmZlcigpIGNvbnN0OworICAgIFBh
c3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gZ2V0V2ViR0xJbnRBcnJheSgpIGNvbnN0OworICAgIC8v
IEZJWE1FOiBpbXBsZW1lbnQgV2ViR0xPYmplY3RBcnJheQorICAgIC8vIFBhc3NSZWZQdHI8V2Vi
R0xPYmplY3RBcnJheT4gZ2V0V2ViR0xPYmplY3RBcnJheSgpIGNvbnN0OworICAgIFBhc3NSZWZQ
dHI8V2ViR0xQcm9ncmFtPiBnZXRXZWJHTFByb2dyYW0oKSBjb25zdDsKKyAgICBQYXNzUmVmUHRy
PFdlYkdMUmVuZGVyYnVmZmVyPiBnZXRXZWJHTFJlbmRlcmJ1ZmZlcigpIGNvbnN0OworICAgIFBh
c3NSZWZQdHI8V2ViR0xUZXh0dXJlPiBnZXRXZWJHTFRleHR1cmUoKSBjb25zdDsKKyAgICBQYXNz
UmVmUHRyPFdlYkdMVW5zaWduZWRCeXRlQXJyYXk+IGdldFdlYkdMVW5zaWduZWRCeXRlQXJyYXko
KSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBUeXBlIG1fdHlwZTsKKyAgICBib29sIG1fYm9vbDsK
KyAgICBmbG9hdCBtX2Zsb2F0OworICAgIGxvbmcgbV9sb25nOworICAgIFN0cmluZyBtX3N0cmlu
ZzsKKyAgICB1bnNpZ25lZCBsb25nIG1fdW5zaWduZWRMb25nOworICAgIFJlZlB0cjxXZWJHTEJ1
ZmZlcj4gbV93ZWJnbEJ1ZmZlcjsKKyAgICBSZWZQdHI8V2ViR0xGbG9hdEFycmF5PiBtX3dlYmds
RmxvYXRBcnJheTsKKyAgICBSZWZQdHI8V2ViR0xGcmFtZWJ1ZmZlcj4gbV93ZWJnbEZyYW1lYnVm
ZmVyOworICAgIFJlZlB0cjxXZWJHTEludEFycmF5PiBtX3dlYmdsSW50QXJyYXk7CisgICAgLy8g
RklYTUU6IGltcGxlbWVudCBXZWJHTE9iamVjdEFycmF5CisgICAgLy8gUmVmUHRyPFdlYkdMT2Jq
ZWN0QXJyYXk+IG1fd2ViZ2xPYmplY3RBcnJheTsKKyAgICBSZWZQdHI8V2ViR0xQcm9ncmFtPiBt
X3dlYmdsUHJvZ3JhbTsKKyAgICBSZWZQdHI8V2ViR0xSZW5kZXJidWZmZXI+IG1fd2ViZ2xSZW5k
ZXJidWZmZXI7CisgICAgUmVmUHRyPFdlYkdMVGV4dHVyZT4gbV93ZWJnbFRleHR1cmU7CisgICAg
UmVmUHRyPFdlYkdMVW5zaWduZWRCeXRlQXJyYXk+IG1fd2ViZ2xVbnNpZ25lZEJ5dGVBcnJheTsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmICAvLyBXZWJHTEdldEluZm9f
aApJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5jcHAJKHJldmlz
aW9uIDUxMjc4KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDEyICszNywyMyBAQCBQYXNzUmVmUHRyPFdlYkdMUmVuZGVy
YnVmZmVyPiBXZWJHTFJlbmRlCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHTFJlbmRlcmJ1
ZmZlcihjdHgpKTsKIH0KIAorUGFzc1JlZlB0cjxXZWJHTFJlbmRlcmJ1ZmZlcj4gV2ViR0xSZW5k
ZXJidWZmZXI6OmNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGN0eCwgUGxhdGZvcm0zRE9i
amVjdCBvYmopCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHTFJlbmRlcmJ1ZmZlcihj
dHgsIG9iaikpOworfQorCiBXZWJHTFJlbmRlcmJ1ZmZlcjo6V2ViR0xSZW5kZXJidWZmZXIoV2Vi
R0xSZW5kZXJpbmdDb250ZXh0KiBjdHgpCiAgICAgOiBDYW52YXNPYmplY3QoY3R4KQogewogICAg
IHNldE9iamVjdChjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dDNEKCktPmNyZWF0ZVJlbmRlcmJ1
ZmZlcigpKTsKIH0KIAorV2ViR0xSZW5kZXJidWZmZXI6OldlYkdMUmVuZGVyYnVmZmVyKFdlYkdM
UmVuZGVyaW5nQ29udGV4dCogY3R4LCBQbGF0Zm9ybTNET2JqZWN0IG9iaikKKyAgICA6IENhbnZh
c09iamVjdChjdHgpCit7CisgICAgc2V0T2JqZWN0KG9iaiwgZmFsc2UpOworfQorCiB2b2lkIFdl
YkdMUmVuZGVyYnVmZmVyOjpfZGVsZXRlT2JqZWN0KFBsYXRmb3JtM0RPYmplY3Qgb2JqZWN0KQog
ewogICAgIGNvbnRleHQoKS0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+ZGVsZXRlUmVuZGVyYnVmZmVy
KG9iamVjdCk7CkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5oCShy
ZXZpc2lvbiA1MTI3OCkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMzksOCArMzksMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICAKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViR0xSZW5kZXJidWZmZXI+IGNy
ZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqKTsKICAgICAgICAgCisgICAgICAgIC8vIEZvciBx
dWVyeWluZyBwcmV2aW91c2x5IGNyZWF0ZWQgb2JqZWN0cyB2aWEgZS5nLiBnZXRGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnRQYXJhbWV0ZXIKKyAgICAgICAgLy8gRklYTUU6IHNob3VsZCBjb25zaWRlciBj
YW5vbmljYWxpemluZyB0aGVzZSBvYmplY3RzCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdl
YkdMUmVuZGVyYnVmZmVyPiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiwgUGxhdGZvcm0z
RE9iamVjdCByZW5kZXJidWZmZXIpOworCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBXZWJHTFJl
bmRlcmJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHQqKTsKKyAgICAgICAgV2ViR0xSZW5kZXJi
dWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiwgUGxhdGZvcm0zRE9iamVjdCk7CiAgICAgICAg
IAogICAgICAgICB2aXJ0dWFsIHZvaWQgX2RlbGV0ZU9iamVjdChQbGF0Zm9ybTNET2JqZWN0KTsK
ICAgICB9OwpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmNwcAkocmV2aXNpb24gNTEyNzgpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDExICszOSwzMSBAQAogI2lu
Y2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5o
IgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
ICNpbmNsdWRlICJSZW5kZXJCb3guaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFdlYkdMU3RhdGVSZXN0b3JlciB7CitwdWJsaWM6Cisg
ICAgV2ViR0xTdGF0ZVJlc3RvcmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBjaGFuZ2VkKQorICAgICAgICA6IG1fY29udGV4dChj
b250ZXh0KQorICAgICAgICAsIG1fY2hhbmdlZChjaGFuZ2VkKQorICAgIHsKKyAgICB9CisKKyAg
ICB+V2ViR0xTdGF0ZVJlc3RvcmVyKCkKKyAgICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYW51
cEFmdGVyR3JhcGhpY3NDYWxsKG1fY2hhbmdlZCk7CisgICAgfQorCitwcml2YXRlOgorICAgIFdl
YkdMUmVuZGVyaW5nQ29udGV4dCogbV9jb250ZXh0OworICAgIGJvb2wgbV9jaGFuZ2VkOworfTsK
KwogUGFzc093blB0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+IFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Y3JlYXRlKEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMpCiB7CiAgICAgT3duUHRyPEdyYXBo
aWNzQ29udGV4dDNEPiBjb250ZXh0KEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoKSk7CkBAIC01
OCw2ICs3OCw3IEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6V2ViR0xSZW5kZXJpbmdDb24KICAg
ICAsIG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9uZWVkc1VwZGF0ZSh0cnVlKQogICAgICwg
bV9tYXJrZWRDYW52YXNEaXJ0eShmYWxzZSkKKyAgICAsIG1fYWN0aXZlVGV4dHVyZVVuaXQoMCkK
IHsKICAgICBBU1NFUlQobV9jb250ZXh0KTsKICAgICBtX2NvbnRleHQtPnJlc2hhcGUoY2FudmFz
KCktPndpZHRoKCksIGNhbnZhcygpLT5oZWlnaHQoKSk7CkBAIC0xMjUsNiArMTQ2LDExIEBAIGlu
dCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnNpemVJbkJ5dGVzKGkKIAogdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmFjdGl2ZVRleHR1cmUodW5zaWduZWQgbG9uZyB0ZXh0dXJlKQogeworICAg
IGlmICh0ZXh0dXJlID4gc2l6ZW9mKG1fdGV4dHVyZVVuaXRzKSAvIHNpemVvZihUZXh0dXJlVW5p
dFN0YXRlKSkgeworICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9FTlVNIGVycm9y
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9hY3RpdmVUZXh0dXJlVW5pdCA9IHRleHR1
cmU7CiAgICAgbV9jb250ZXh0LT5hY3RpdmVUZXh0dXJlKHRleHR1cmUpOwogICAgIGNsZWFudXBB
ZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CkBAIC0xNTUsNiArMTgxLDE1IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpiaW5kQnVmZmVyKHUKICAgICAgICAgZWMgPSBUWVBFX01JU01B
VENIX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBpZiAodGFyZ2V0ID09IEdyYXBo
aWNzQ29udGV4dDNEOjpBUlJBWV9CVUZGRVIpCisgICAgICAgIG1fYXJyYXlCdWZmZXJCaW5kaW5n
ID0gYnVmZmVyOworICAgIGVsc2UgaWYgKHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RUxF
TUVOVF9BUlJBWV9CVUZGRVIpCisgICAgICAgIG1fZWxlbWVudEFycmF5QnVmZmVyQmluZGluZyA9
IGJ1ZmZlcjsKKyAgICBlbHNlIHsKKyAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURf
RU5VTSBlcnJvcgorICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CiAgICAgbV9jb250ZXh0LT5iaW5kQnVmZmVyKHRhcmdldCwgYnVmZmVyKTsKICAgICBjbGVh
bnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQpAQCAtMTY2LDYgKzIwMSwxMiBAQCB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmluZEZyYW1lYnVmCiAgICAgICAgIGVjID0gVFlQRV9N
SVNNQVRDSF9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgaWYgKHRhcmdldCAhPSBH
cmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIpIHsKKyAgICAgICAgLy8gRklYTUU6IHJhaXNl
IEdMX0lOVkFMSURfRU5VTSBlcnJvcgorICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgbV9mcmFtZWJ1ZmZlckJpbmRpbmcgPSBidWZmZXI7CiAgICAg
bV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIodGFyZ2V0LCBidWZmZXIpOwogICAgIGNsZWFudXBB
ZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CkBAIC0xNzYsNiArMjE3LDEyIEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpiaW5kUmVuZGVyYnUKICAgICAgICAgZWMgPSBUWVBFX01JU01B
VENIX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBpZiAodGFyZ2V0ICE9IEdyYXBo
aWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIpIHsKKyAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdM
X0lOVkFMSURfRU5VTSBlcnJvcgorICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgbV9yZW5kZXJidWZmZXJCaW5kaW5nID0gcmVuZGVyQnVmZmVyOwog
ICAgIG1fY29udGV4dC0+YmluZFJlbmRlcmJ1ZmZlcih0YXJnZXQsIHJlbmRlckJ1ZmZlcik7CiAg
ICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KQEAgLTE4Nyw2ICsyMzQsMTUg
QEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJpbmRUZXh0dXJlKAogICAgICAgICBlYyA9
IFRZUEVfTUlTTUFUQ0hfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGlmICh0YXJn
ZXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQpCisgICAgICAgIG1fdGV4dHVyZVVu
aXRzW21fYWN0aXZlVGV4dHVyZVVuaXRdLm1fdGV4dHVyZTJEQmluZGluZyA9IHRleHR1cmU7Cisg
ICAgZWxzZSBpZiAodGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX0NVQkVfTUFQ
KQorICAgICAgICBtX3RleHR1cmVVbml0c1ttX2FjdGl2ZVRleHR1cmVVbml0XS5tX3RleHR1cmVD
dWJlTWFwQmluZGluZyA9IHRleHR1cmU7CisgICAgZWxzZSB7CisgICAgICAgIC8vIEZJWE1FOiBy
YWlzZSBHTF9JTlZBTElEX0VOVU0gZXJyb3IKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAg
ICAgICByZXR1cm47CisgICAgfQogICAgIG1fY29udGV4dC0+YmluZFRleHR1cmUodGFyZ2V0LCB0
ZXh0dXJlKTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQpAQCAtNTQ0
LDMyICs2MDAsMjcgQEAgaW50IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0QXR0cmliTG9jYQog
ICAgIHJldHVybiBtX2NvbnRleHQtPmdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sIG5hbWUpOwog
fQogCi1ib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0Qm9vbGVhbih1bnNpZ25lZCBsb25n
IHBuYW1lKQotewotICAgIGJvb2wgcmVzdWx0ID0gbV9jb250ZXh0LT5nZXRCb29sZWFuKHBuYW1l
KTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLVBhc3NSZWZQdHI8V2ViR0xVbnNpZ25lZEJ5dGVBcnJheT4gV2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpnZXRCb29sZWFudih1bnNpZ25lZCBsb25nIHBuYW1lKQorV2ViR0xHZXRJbmZv
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0QnVmZmVyUGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcg
dGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBS
ZWZQdHI8V2ViR0xVbnNpZ25lZEJ5dGVBcnJheT4gYXJyYXkgPSBtX2NvbnRleHQtPmdldEJvb2xl
YW52KHBuYW1lKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwotICAgIHJl
dHVybiBhcnJheTsKLX0KKyAgICBpZiAodGFyZ2V0ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpBUlJB
WV9CVUZGRVIgJiYgdGFyZ2V0ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpFTEVNRU5UX0FSUkFZX0JV
RkZFUikgeworICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9FTlVNIGVycm9yCisg
ICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOwor
ICAgIH0KIAotaW50IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0QnVmZmVyUGFyYW1ldGVyaSh1
bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICBpbnQgcmVz
dWx0ID0gbV9jb250ZXh0LT5nZXRCdWZmZXJQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpOwotICAg
IGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
KyAgICBpZiAocG5hbWUgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkJVRkZFUl9TSVpFICYmIHBuYW1l
ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpCVUZGRVJfVVNBR0UpIHsKKyAgICAgICAgLy8gRklYTUU6
IHJhaXNlIEdMX0lOVkFMSURfRU5VTSBlcnJvcgorICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Cisg
ICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKKyAgICB9CiAKLVBhc3NSZWZQdHI8V2ViR0xJ
bnRBcnJheT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRCdWZmZXJQYXJhbWV0ZXJpdih1bnNp
Z25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICBSZWZQdHI8V2Vi
R0xJbnRBcnJheT4gYXJyYXkgPSBtX2NvbnRleHQtPmdldEJ1ZmZlclBhcmFtZXRlcml2KHRhcmdl
dCwgcG5hbWUpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci0gICAgcmV0
dXJuIGFycmF5OworICAgIFdlYkdMU3RhdGVSZXN0b3Jlcih0aGlzLCBmYWxzZSk7CisgICAgaW50
IHZhbHVlOworICAgIG1fY29udGV4dC0+Z2V0QnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFt
ZSwgJnZhbHVlKTsKKyAgICBpZiAocG5hbWUgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkJVRkZFUl9T
SVpFKQorICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0PGxvbmc+KHZhbHVl
KSk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0PHVu
c2lnbmVkIGxvbmc+KHZhbHVlKSk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnZXRFcnJvcigpCkBAIC01NzcsMTE2ICs2MjgsMzI3IEBAIHVuc2lnbmVkIGxvbmcg
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXQKICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRFcnJv
cigpOwogfQogCi1mbG9hdCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEZsb2F0KHVuc2lnbmVk
IGxvbmcgcG5hbWUpCi17Ci0gICAgZmxvYXQgcmVzdWx0ID0gbV9jb250ZXh0LT5nZXRGbG9hdChw
bmFtZSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotCi1QYXNzUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnZXRGbG9hdHYodW5zaWduZWQgbG9uZyBwbmFtZSkKK1dlYkdMR2V0SW5mbyBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcih1bnNp
Z25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCB1bnNpZ25lZCBsb25n
IHBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBSZWZQdHI8V2ViR0xGbG9hdEFycmF5
PiBhcnJheSA9IG1fY29udGV4dC0+Z2V0RmxvYXR2KHBuYW1lKTsKLSAgICBjbGVhbnVwQWZ0ZXJH
cmFwaGljc0NhbGwoZmFsc2UpOwotICAgIHJldHVybiBhcnJheTsKLX0KLQotaW50IFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaSh1bnNpZ25l
ZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCB1bnNpZ25lZCBsb25nIHBu
YW1lKQotewotICAgIGludCByZXN1bHQgPSBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNo
bWVudFBhcmFtZXRlcmkodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSk7Ci0gICAgY2xlYW51cEFm
dGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1QYXNzUmVm
UHRyPFdlYkdMSW50QXJyYXk+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcg
YXR0YWNobWVudCwgdW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICBSZWZQdHI8V2ViR0xJbnRB
cnJheT4gYXJyYXkgPSBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRl
cml2KHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNz
Q2FsbChmYWxzZSk7Ci0gICAgcmV0dXJuIGFycmF5OwotfQorICAgIGlmICh0YXJnZXQgIT0gR3Jh
cGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSCisgICAgICAgIHx8IChhdHRhY2htZW50ICE9IEdy
YXBoaWNzQ29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMAorICAgICAgICAgICAgJiYgYXR0YWNo
bWVudCAhPSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQVRUQUNITUVOVAorICAgICAgICAgICAg
JiYgYXR0YWNobWVudCAhPSBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9BVFRBQ0hNRU5UKQor
ICAgICAgICB8fCAocG5hbWUgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0FUVEFD
SE1FTlRfT0JKRUNUX1RZUEUKKyAgICAgICAgICAgICYmIHBuYW1lICE9IEdyYXBoaWNzQ29udGV4
dDNEOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FCisgICAgICAgICAgICAmJiBw
bmFtZSAhPSBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJF
X0xFVkVMCisgICAgICAgICAgICAmJiBwbmFtZSAhPSBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVC
VUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0UpKSB7CisgICAgICAgIC8vIEZJ
WE1FOiByYWlzZSBHTF9JTlZBTElEX0VOVU0gZXJyb3IKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJS
OworICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CisgICAgfQogCi1pbnQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpnZXRJbnRlZ2VyKHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgZmxv
YXQgcmVzdWx0ID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKHBuYW1lKTsKLSAgICBjbGVhbnVwQWZ0
ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgaWYgKHBuYW1l
ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1F
KSB7CisgICAgICAgIFdlYkdMU3RhdGVSZXN0b3Jlcih0aGlzLCBmYWxzZSk7CisgICAgICAgIGlu
dCB2YWx1ZTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJh
bWV0ZXJpdih0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCAmdmFsdWUpOworICAgICAgICBpZiAo
cG5hbWUgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNU
X1RZUEUpCisgICAgICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0PHVuc2ln
bmVkIGxvbmc+KHZhbHVlKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBXZWJH
TEdldEluZm8oc3RhdGljX2Nhc3Q8bG9uZz4odmFsdWUpKTsKKyAgICB9IGVsc2UgeworICAgICAg
ICBXZWJHTFN0YXRlUmVzdG9yZXIodGhpcywgZmFsc2UpOworICAgICAgICBpbnQgdHlwZSA9IDA7
CisgICAgICAgIG1fY29udGV4dC0+Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYo
dGFyZ2V0LCBhdHRhY2htZW50LCBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVJfQVRUQUNI
TUVOVF9PQkpFQ1RfVFlQRSwgJnR5cGUpOworICAgICAgICBpbnQgdmFsdWUgPSAwOworICAgICAg
ICBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHRhcmdldCwg
YXR0YWNobWVudCwgR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JK
RUNUX05BTUUsICZ2YWx1ZSk7CisgICAgICAgIC8vIEZJWE1FOiBzaG91bGQgY29uc2lkZXIgY2Fu
b25pY2FsaXppbmcgdGhlc2Ugb2JqZWN0cworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSOiB7CisgICAgICAgICAgICBS
ZWZQdHI8V2ViR0xSZW5kZXJidWZmZXI+IHRtcCA9IFdlYkdMUmVuZGVyYnVmZmVyOjpjcmVhdGUo
dGhpcywgdmFsdWUpOworICAgICAgICAgICAgYWRkT2JqZWN0KHRtcC5nZXQoKSk7CisgICAgICAg
ICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xSZW5kZXJidWZmZXI+KHRt
cCkpOworICAgICAgICB9CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkU6
IHsKKyAgICAgICAgICAgIFJlZlB0cjxXZWJHTFRleHR1cmU+IHRtcCA9IFdlYkdMVGV4dHVyZTo6
Y3JlYXRlKHRoaXMsIHZhbHVlKTsKKyAgICAgICAgICAgIGFkZE9iamVjdCh0bXAuZ2V0KCkpOwor
ICAgICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMVGV4dHVyZT4o
dG1wKSk7CisgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIC8vIEZJWE1F
OiByYWlzZSBleGNlcHRpb24/CisgICAgICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7Cisg
ICAgICAgIH0KKyAgICB9CiB9CiAKLVBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gV2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpnZXRJbnRlZ2Vydih1bnNpZ25lZCBsb25nIHBuYW1lKQorV2ViR0xHZXRJ
bmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcgcG5h
bWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIFJlZlB0cjxXZWJHTEludEFycmF5PiBhcnJh
eSA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcnYocG5hbWUpOwotICAgIGNsZWFudXBBZnRlckdyYXBo
aWNzQ2FsbChmYWxzZSk7Ci0gICAgcmV0dXJuIGFycmF5OworICAgIFdlYkdMU3RhdGVSZXN0b3Jl
cih0aGlzLCBmYWxzZSk7CisgICAgc3dpdGNoIChwbmFtZSkgeworICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0M0Q6OkFDVElWRV9URVhUVVJFOgorICAgICAgICByZXR1cm4gZ2V0VW5zaWduZWRMb25n
UGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpBTElBU0VEX0xJ
TkVfV0lEVEhfUkFOR0U6CisgICAgICAgIHJldHVybiBnZXRXZWJHTEZsb2F0QXJyYXlQYXJhbWV0
ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkFMSUFTRURfUE9JTlRfU0la
RV9SQU5HRToKKyAgICAgICAgcmV0dXJuIGdldFdlYkdMRmxvYXRBcnJheVBhcmFtZXRlcihwbmFt
ZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6QUxQSEFfQklUUzoKKyAgICAgICAgcmV0
dXJuIGdldExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6
OkFSUkFZX0JVRkZFUl9CSU5ESU5HOgorICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKFBhc3NS
ZWZQdHI8V2ViR0xCdWZmZXI+KG1fYXJyYXlCdWZmZXJCaW5kaW5nKSk7CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6QkxFTkQ6CisgICAgICAgIHJldHVybiBnZXRCb29sZWFuUGFyYW1ldGVy
KHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpCTEVORF9DT0xPUjoKKyAgICAg
ICAgcmV0dXJuIGdldFdlYkdMRmxvYXRBcnJheVBhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6QkxFTkRfRFNUX0FMUEhBOgorICAgICAgICByZXR1cm4gZ2V0VW5z
aWduZWRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpC
TEVORF9EU1RfUkdCOgorICAgICAgICByZXR1cm4gZ2V0VW5zaWduZWRMb25nUGFyYW1ldGVyKHBu
YW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpCTEVORF9FUVVBVElPTl9BTFBIQToK
KyAgICAgICAgcmV0dXJuIGdldFVuc2lnbmVkTG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHQzRDo6QkxFTkRfRVFVQVRJT05fUkdCOgorICAgICAgICByZXR1cm4g
Z2V0VW5zaWduZWRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dDNEOjpCTEVORF9TUkNfQUxQSEE6CisgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZExvbmdQYXJh
bWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkJMRU5EX1NSQ19SR0I6
CisgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0M0Q6OkJMVUVfQklUUzoKKyAgICAgICAgcmV0dXJuIGdldExvbmdQ
YXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0NMRUFS
X1ZBTFVFOgorICAgICAgICByZXR1cm4gZ2V0V2ViR0xGbG9hdEFycmF5UGFyYW1ldGVyKHBuYW1l
KTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9XUklURU1BU0s6CisgICAgICAg
IHJldHVybiBnZXRXZWJHTFVuc2lnbmVkQnl0ZUFycmF5UGFyYW1ldGVyKHBuYW1lKTsKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpDT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUzoKKyAgICAg
ICAgLy8gRGVmaW5lZCBhcyBudWxsIGluIHRoZSBzcGVjCisgICAgICAgIHJldHVybiBXZWJHTEdl
dEluZm8oKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpDVUxMX0ZBQ0U6CisgICAgICAg
IHJldHVybiBnZXRCb29sZWFuUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dDNEOjpDVUxMX0ZBQ0VfTU9ERToKKyAgICAgICAgcmV0dXJuIGdldFVuc2lnbmVkTG9uZ1Bh
cmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Q1VSUkVOVF9QUk9H
UkFNOgorICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xQcm9ncmFt
PihtX2N1cnJlbnRQcm9ncmFtKSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhf
QklUUzoKKyAgICAgICAgcmV0dXJuIGdldExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0NMRUFSX1ZBTFVFOgorICAgICAgICByZXR1cm4gZ2V0
RmxvYXRQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRI
X0ZVTkM6CisgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZExvbmdQYXJhbWV0ZXIocG5hbWUpOwor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX1JBTkdFOgorICAgICAgICByZXR1cm4g
Z2V0V2ViR0xGbG9hdEFycmF5UGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dDNEOjpERVBUSF9URVNUOgorICAgICAgICByZXR1cm4gZ2V0Qm9vbGVhblBhcmFtZXRlcihw
bmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfV1JJVEVNQVNLOgorICAg
ICAgICByZXR1cm4gZ2V0Qm9vbGVhblBhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHQzRDo6RElUSEVSOgorICAgICAgICByZXR1cm4gZ2V0Qm9vbGVhblBhcmFtZXRlcihw
bmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RUxFTUVOVF9BUlJBWV9CVUZGRVJf
QklORElORzoKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMQnVm
ZmVyPihtX2VsZW1lbnRBcnJheUJ1ZmZlckJpbmRpbmcpKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dDNEOjpGUkFNRUJVRkZFUl9CSU5ESU5HOgorICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZv
KFBhc3NSZWZQdHI8V2ViR0xGcmFtZWJ1ZmZlcj4obV9mcmFtZWJ1ZmZlckJpbmRpbmcpKTsKKyAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpGUk9OVF9GQUNFOgorICAgICAgICByZXR1cm4gZ2V0
VW5zaWduZWRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNE
OjpHRU5FUkFURV9NSVBNQVBfSElOVDoKKyAgICAgICAgcmV0dXJuIGdldFVuc2lnbmVkTG9uZ1Bh
cmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6R1JFRU5fQklUUzoK
KyAgICAgICAgcmV0dXJuIGdldExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0M0Q6OkxJTkVfV0lEVEg6CisgICAgICAgIHJldHVybiBnZXRGbG9hdFBhcmFtZXRl
cihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6TUFYX0NPTUJJTkVEX1RFWFRV
UkVfSU1BR0VfVU5JVFM6CisgICAgICAgIHJldHVybiBnZXRMb25nUGFyYW1ldGVyKHBuYW1lKTsK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpNQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFOgor
ICAgICAgICByZXR1cm4gZ2V0TG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHQzRDo6TUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUzoKKyAgICAgICAgcmV0dXJu
IGdldExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6Ok1B
WF9SRU5ERVJCVUZGRVJfU0laRToKKyAgICAgICAgcmV0dXJuIGdldExvbmdQYXJhbWV0ZXIocG5h
bWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9URVhUVVJFX0lNQUdFX1VOSVRT
OgorICAgICAgICByZXR1cm4gZ2V0TG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6TUFYX1RFWFRVUkVfU0laRToKKyAgICAgICAgcmV0dXJuIGdldExvbmdQ
YXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9WQVJZSU5H
X1ZFQ1RPUlM6CisgICAgICAgIHJldHVybiBnZXRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpNQVhfVkVSVEVYX0FUVFJJQlM6CisgICAgICAgIHJldHVy
biBnZXRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpN
QVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFM6CisgICAgICAgIHJldHVybiBnZXRMb25nUGFy
YW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpNQVhfVkVSVEVYX1VO
SUZPUk1fVkVDVE9SUzoKKyAgICAgICAgcmV0dXJuIGdldExvbmdQYXJhbWV0ZXIocG5hbWUpOwor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9WSUVXUE9SVF9ESU1TOgorICAgICAgICBy
ZXR1cm4gZ2V0V2ViR0xJbnRBcnJheVBhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHQzRDo6TlVNX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTOgorICAgICAgICByZXR1
cm4gZ2V0TG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
TlVNX1NIQURFUl9CSU5BUllfRk9STUFUUzoKKyAgICAgICAgLy8gRklYTUU6IHNob3VsZCB3ZSBh
bHdheXMgcmV0dXJuIDAgZm9yIHRoaXM/CisgICAgICAgIHJldHVybiBnZXRMb25nUGFyYW1ldGVy
KHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpQQUNLX0FMSUdOTUVOVDoKKyAg
ICAgICAgcmV0dXJuIGdldExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0M0Q6OlBPTFlHT05fT0ZGU0VUX0ZBQ1RPUjoKKyAgICAgICAgcmV0dXJuIGdldEZsb2F0
UGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpQT0xZR09OX09G
RlNFVF9GSUxMOgorICAgICAgICByZXR1cm4gZ2V0Qm9vbGVhblBhcmFtZXRlcihwbmFtZSk7Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UE9MWUdPTl9PRkZTRVRfVU5JVFM6CisgICAgICAg
IHJldHVybiBnZXRGbG9hdFBhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6UkVEX0JJVFM6CisgICAgICAgIHJldHVybiBnZXRMb25nUGFyYW1ldGVyKHBuYW1lKTsK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVJfQklORElORzoKKyAgICAg
ICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPihtX3Jl
bmRlcmJ1ZmZlckJpbmRpbmcpKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTQU1QTEVf
QlVGRkVSUzoKKyAgICAgICAgcmV0dXJuIGdldExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNBTVBMRV9DT1ZFUkFHRV9JTlZFUlQ6CisgICAgICAgIHJl
dHVybiBnZXRCb29sZWFuUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dDNEOjpTQU1QTEVfQ09WRVJBR0VfVkFMVUU6CisgICAgICAgIHJldHVybiBnZXRGbG9hdFBhcmFt
ZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U0FNUExFUzoKKyAgICAg
ICAgcmV0dXJuIGdldExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0M0Q6OlNDSVNTT1JfQk9YOgorICAgICAgICByZXR1cm4gZ2V0V2ViR0xJbnRBcnJheVBhcmFt
ZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U0NJU1NPUl9URVNUOgor
ICAgICAgICByZXR1cm4gZ2V0Qm9vbGVhblBhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6U1RFTkNJTF9CQUNLX0ZBSUw6CisgICAgICAgIHJldHVybiBnZXRVbnNp
Z25lZExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNU
RU5DSUxfQkFDS19GVU5DOgorICAgICAgICByZXR1cm4gZ2V0VW5zaWduZWRMb25nUGFyYW1ldGVy
KHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0JBQ0tfUEFTU19E
RVBUSF9GQUlMOgorICAgICAgICByZXR1cm4gZ2V0VW5zaWduZWRMb25nUGFyYW1ldGVyKHBuYW1l
KTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9Q
QVNTOgorICAgICAgICByZXR1cm4gZ2V0VW5zaWduZWRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0JBQ0tfUkVGOgorICAgICAgICByZXR1
cm4gZ2V0TG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
U1RFTkNJTF9CQUNLX1ZBTFVFX01BU0s6CisgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZExvbmdQ
YXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfQkFD
S19XUklURU1BU0s6CisgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZExvbmdQYXJhbWV0ZXIocG5h
bWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfQklUUzoKKyAgICAgICAg
cmV0dXJuIGdldExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
M0Q6OlNURU5DSUxfQ0xFQVJfVkFMVUU6CisgICAgICAgIHJldHVybiBnZXRMb25nUGFyYW1ldGVy
KHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0ZBSUw6CisgICAg
ICAgIHJldHVybiBnZXRVbnNpZ25lZExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfRlVOQzoKKyAgICAgICAgcmV0dXJuIGdldFVuc2lnbmVk
TG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJ
TF9QQVNTX0RFUFRIX0ZBSUw6CisgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZExvbmdQYXJhbWV0
ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfUEFTU19ERVBU
SF9QQVNTOgorICAgICAgICByZXR1cm4gZ2V0VW5zaWduZWRMb25nUGFyYW1ldGVyKHBuYW1lKTsK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX1JFRjoKKyAgICAgICAgcmV0dXJu
IGdldExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNU
RU5DSUxfVEVTVDoKKyAgICAgICAgcmV0dXJuIGdldEJvb2xlYW5QYXJhbWV0ZXIocG5hbWUpOwor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfVkFMVUVfTUFTSzoKKyAgICAgICAg
cmV0dXJuIGdldFVuc2lnbmVkTG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHQzRDo6U1RFTkNJTF9XUklURU1BU0s6CisgICAgICAgIHJldHVybiBnZXRVbnNpZ25l
ZExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNVQlBJ
WEVMX0JJVFM6CisgICAgICAgIHJldHVybiBnZXRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX0JJTkRJTkdfMkQ6CisgICAgICAgIHJldHVy
biBXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTFRleHR1cmU+KG1fdGV4dHVyZVVuaXRzW21f
YWN0aXZlVGV4dHVyZVVuaXRdLm1fdGV4dHVyZTJEQmluZGluZykpOworICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfQklORElOR19DVUJFX01BUDoKKyAgICAgICAgcmV0dXJuIFdl
YkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMVGV4dHVyZT4obV90ZXh0dXJlVW5pdHNbbV9hY3Rp
dmVUZXh0dXJlVW5pdF0ubV90ZXh0dXJlQ3ViZU1hcEJpbmRpbmcpKTsKKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpVTlBBQ0tfQUxJR05NRU5UOgorICAgICAgICAvLyBGSVhNRTogc2hvdWxk
IHRoaXMgYmUgImxvbmciIGluIHRoZSBzcGVjPworICAgICAgICByZXR1cm4gZ2V0SW50UGFyYW1l
dGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpWSUVXUE9SVDoKKyAgICAg
ICAgcmV0dXJuIGdldFdlYkdMSW50QXJyYXlQYXJhbWV0ZXIocG5hbWUpOworICAgIGRlZmF1bHQ6
CisgICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX0VOVU0gZXJyb3IKKyAgICAgICAg
ZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CisgICAgfQog
fQogCi1pbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQcm9ncmFtaShXZWJHTFByb2dyYW0q
IHByb2dyYW0sIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorV2ViR0xH
ZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UHJvZ3JhbVBhcmFtZXRlcihXZWJHTFBy
b2dyYW0qIHByb2dyYW0sIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ewogICAgIGlmICghcHJvZ3JhbSB8fCBwcm9ncmFtLT5jb250ZXh0KCkgIT0gdGhpcykgeworICAg
ICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9WQUxVRSBlcnJvcgogICAgICAgICBlYyA9
IFRZUEVfTUlTTUFUQ0hfRVJSOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIFdl
YkdMR2V0SW5mbygpOwogICAgIH0KIAotICAgIGludCByZXN1bHQgPSBtX2NvbnRleHQtPmdldFBy
b2dyYW1pKHByb2dyYW0sIHBuYW1lKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFs
c2UpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4g
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQcm9ncmFtaXYoV2ViR0xQcm9ncmFtKiBwcm9ncmFt
LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBpZiAoIXBy
b2dyYW0gfHwgcHJvZ3JhbS0+Y29udGV4dCgpICE9IHRoaXMpIHsKLSAgICAgICAgZWMgPSBUWVBF
X01JU01BVENIX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgV2ViR0xTdGF0ZVJlc3RvcmVy
KHRoaXMsIGZhbHNlKTsKKyAgICBpbnQgdmFsdWUgPSAwOworICAgIHN3aXRjaCAocG5hbWUpIHsK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERUxFVEVfU1RBVFVTOgorICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0M0Q6OkxJTktfU1RBVFVTOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6
OlZBTElEQVRFX1NUQVRVUzoKKyAgICAgICAgbV9jb250ZXh0LT5nZXRQcm9ncmFtaXYocHJvZ3Jh
bSwgcG5hbWUsICZ2YWx1ZSk7CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oc3RhdGljX2Nh
c3Q8Ym9vbD4odmFsdWUpKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpJTkZPX0xPR19M
RU5HVEg6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6QVRUQUNIRURfU0hBREVSUzoKKyAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpBQ1RJVkVfQVRUUklCVVRFUzoKKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dDNEOjpBQ1RJVkVfQVRUUklCVVRFX01BWF9MRU5HVEg6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6QUNUSVZFX1VOSUZPUk1TOgorICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0M0Q6OkFDVElWRV9VTklGT1JNX01BWF9MRU5HVEg6CisgICAgICAgIG1fY29udGV4dC0+Z2V0
UHJvZ3JhbWl2KHByb2dyYW0sIHBuYW1lLCAmdmFsdWUpOworICAgICAgICByZXR1cm4gV2ViR0xH
ZXRJbmZvKHN0YXRpY19jYXN0PGxvbmc+KHZhbHVlKSk7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
Ly8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfRU5VTSBlcnJvcgorICAgICAgICBlYyA9IFNZTlRB
WF9FUlI7CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKICAgICB9Ci0gICAgUmVmUHRy
PFdlYkdMSW50QXJyYXk+IGFycmF5ID0gbV9jb250ZXh0LT5nZXRQcm9ncmFtaXYocHJvZ3JhbSwg
cG5hbWUpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci0gICAgcmV0dXJu
IGFycmF5OwogfQogCiBTdHJpbmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQcm9ncmFtSW5m
b0xvZyhXZWJHTFByb2dyYW0qIHByb2dyYW0sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlm
ICghcHJvZ3JhbSB8fCBwcm9ncmFtLT5jb250ZXh0KCkgIT0gdGhpcykgeworICAgICAgICAvLyBG
SVhNRTogcmFpc2UgR0xfSU5WQUxJRF9WQUxVRSBlcnJvcgogICAgICAgICBlYyA9IFRZUEVfTUlT
TUFUQ0hfRVJSOwogICAgICAgICByZXR1cm4gIiI7CiAgICAgfQotICAgIFN0cmluZyBzID0gbV9j
b250ZXh0LT5nZXRQcm9ncmFtSW5mb0xvZyhwcm9ncmFtKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFw
aGljc0NhbGwoZmFsc2UpOwotICAgIHJldHVybiBzOworICAgIFdlYkdMU3RhdGVSZXN0b3Jlcih0
aGlzLCBmYWxzZSk7CisgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0UHJvZ3JhbUluZm9Mb2cocHJv
Z3JhbSk7CiB9CiAKLWludCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFJlbmRlcmJ1ZmZlclBh
cmFtZXRlcmkodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCitXZWJH
TEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIo
dW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogewotICAgIGludCByZXN1bHQgPSBtX2NvbnRleHQtPmdldFJlbmRlcmJ1ZmZlclBhcmFt
ZXRlcmkodGFyZ2V0LCBwbmFtZSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNl
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1QYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYodW5zaWduZWQg
bG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgUmVmUHRyPFdlYkdMSW50
QXJyYXk+IGFycmF5ID0gbV9jb250ZXh0LT5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdih0YXJn
ZXQsIHBuYW1lKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwotICAgIHJl
dHVybiBhcnJheTsKLX0KKyAgICBpZiAodGFyZ2V0ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpSRU5E
RVJCVUZGRVIpIHsKKyAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfRU5VTSBlcnJv
cgorICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8o
KTsKKyAgICB9CiAKLWludCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFNoYWRlcmkoV2ViR0xT
aGFkZXIqIHNoYWRlciwgdW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCi17
Ci0gICAgaWYgKCFzaGFkZXIgfHwgc2hhZGVyLT5jb250ZXh0KCkgIT0gdGhpcykgewotICAgICAg
ICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOwotICAgICAgICByZXR1cm4gMDsKKyAgICBXZWJHTFN0
YXRlUmVzdG9yZXIodGhpcywgZmFsc2UpOworICAgIGludCB2YWx1ZSA9IDA7CisgICAgc3dpdGNo
IChwbmFtZSkgeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUl9XSURU
SDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVJfSEVJR0hUOgorICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUl9SRURfU0laRToKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVJfR1JFRU5fU0laRToKKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVJfQkxVRV9TSVpFOgorICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUl9BTFBIQV9TSVpFOgorICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0M0Q6OlJFTkRFUkJVRkZFUl9ERVBUSF9TSVpFOgorICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0M0Q6OlJFTkRFUkJVRkZFUl9TVEVOQ0lMX1NJWkU6CisgICAgICAgIG1fY29udGV4dC0+Z2V0
UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgJnZhbHVlKTsKKyAgICAgICAg
cmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNfY2FzdDxsb25nPih2YWx1ZSkpOworICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUl9JTlRFUk5BTF9GT1JNQVQ6CisgICAgICAg
IG1fY29udGV4dC0+Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgJnZh
bHVlKTsKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNfY2FzdDx1bnNpZ25lZCBs
b25nPih2YWx1ZSkpOworICAgIGRlZmF1bHQ6CisgICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9J
TlZBTElEX0VOVU0gZXJyb3IKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1
cm4gV2ViR0xHZXRJbmZvKCk7CiAgICAgfQotICAgIGludCByZXN1bHQgPSBtX2NvbnRleHQtPmdl
dFNoYWRlcmkoc2hhZGVyLCBwbmFtZSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZh
bHNlKTsKLSAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2hhZGVyaXYoV2ViR0xTaGFkZXIqIHNoYWRlciwg
dW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitXZWJHTEdldEluZm8gV2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTaGFkZXJQYXJhbWV0ZXIoV2ViR0xTaGFkZXIqIHNoYWRl
ciwgdW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFz
aGFkZXIgfHwgc2hhZGVyLT5jb250ZXh0KCkgIT0gdGhpcykgeworICAgICAgICAvLyBGSVhNRTog
cmFpc2UgR0xfSU5WQUxJRF9WQUxVRSBlcnJvcgogICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hf
RVJSOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOwor
ICAgIH0KKyAgICBXZWJHTFN0YXRlUmVzdG9yZXIodGhpcywgZmFsc2UpOworICAgIGludCB2YWx1
ZSA9IDA7CisgICAgc3dpdGNoIChwbmFtZSkgeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6
OkRFTEVURV9TVEFUVVM6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Q09NUElMRV9TVEFU
VVM6CisgICAgICAgIG1fY29udGV4dC0+Z2V0U2hhZGVyaXYoc2hhZGVyLCBwbmFtZSwgJnZhbHVl
KTsKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNfY2FzdDxib29sPih2YWx1ZSkp
OworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNIQURFUl9UWVBFOgorICAgICAgICBtX2Nv
bnRleHQtPmdldFNoYWRlcml2KHNoYWRlciwgcG5hbWUsICZ2YWx1ZSk7CisgICAgICAgIHJldHVy
biBXZWJHTEdldEluZm8oc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4odmFsdWUpKTsKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpJTkZPX0xPR19MRU5HVEg6CisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHQzRDo6U0hBREVSX1NPVVJDRV9MRU5HVEg6CisgICAgICAgIG1fY29udGV4dC0+Z2V0
U2hhZGVyaXYoc2hhZGVyLCBwbmFtZSwgJnZhbHVlKTsKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0
SW5mbyhzdGF0aWNfY2FzdDxsb25nPih2YWx1ZSkpOworICAgIGRlZmF1bHQ6CisgICAgICAgIC8v
IEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX0VOVU0gZXJyb3IKKyAgICAgICAgZWMgPSBTWU5UQVhf
RVJSOworICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CiAgICAgfQotICAgIFJlZlB0cjxX
ZWJHTEludEFycmF5PiBhcnJheSA9IG1fY29udGV4dC0+Z2V0U2hhZGVyaXYoc2hhZGVyLCBwbmFt
ZSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKLSAgICByZXR1cm4gYXJy
YXk7CiB9CiAKIFN0cmluZyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFNoYWRlckluZm9Mb2co
V2ViR0xTaGFkZXIqIHNoYWRlciwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC02OTUsOSArOTU3LDgg
QEAgU3RyaW5nIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2hhZGVySQogICAgICAgICBlYyA9
IFRZUEVfTUlTTUFUQ0hfRVJSOwogICAgICAgICByZXR1cm4gIiI7CiAgICAgfQotICAgIFN0cmlu
ZyBzID0gbV9jb250ZXh0LT5nZXRTaGFkZXJJbmZvTG9nKHNoYWRlcik7Ci0gICAgY2xlYW51cEFm
dGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKLSAgICByZXR1cm4gczsKKyAgICBXZWJHTFN0YXRlUmVz
dG9yZXIodGhpcywgZmFsc2UpOworICAgIHJldHVybiBtX2NvbnRleHQtPmdldFNoYWRlckluZm9M
b2coc2hhZGVyKTsKIH0KIAogU3RyaW5nIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2hhZGVy
U291cmNlKFdlYkdMU2hhZGVyKiBzaGFkZXIsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtNzA2LDg2
ICs5NjcsMTY2IEBAIFN0cmluZyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFNoYWRlclMKICAg
ICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKICAgICAgICAgcmV0dXJuICIiOwogICAgIH0K
LSAgICBTdHJpbmcgcyA9IG1fY29udGV4dC0+Z2V0U2hhZGVyU291cmNlKHNoYWRlcik7Ci0gICAg
Y2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKLSAgICByZXR1cm4gczsKKyAgICBXZWJH
TFN0YXRlUmVzdG9yZXIodGhpcywgZmFsc2UpOworICAgIHJldHVybiBtX2NvbnRleHQtPmdldFNo
YWRlclNvdXJjZShzaGFkZXIpOwogfQogCiBTdHJpbmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRTdHJpbmcodW5zaWduZWQgbG9uZyBuYW1lKQogeworICAgIFdlYkdMU3RhdGVSZXN0b3Jlcih0
aGlzLCBmYWxzZSk7CiAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0U3RyaW5nKG5hbWUpOwogfQog
Ci1mbG9hdCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFRleFBhcmFtZXRlcmYodW5zaWduZWQg
bG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgZmxvYXQgcmVzdWx0ID0g
bV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJmKHRhcmdldCwgcG5hbWUpOwotICAgIGNsZWFudXBB
ZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotUGFzc1Jl
ZlB0cjxXZWJHTEZsb2F0QXJyYXk+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VGV4UGFyYW1l
dGVyZnYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCitXZWJHTEdl
dEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRUZXhQYXJhbWV0ZXIodW5zaWduZWQgbG9u
ZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAg
IFJlZlB0cjxXZWJHTEZsb2F0QXJyYXk+IGFycmF5ID0gbV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0
ZXJmdih0YXJnZXQsIHBuYW1lKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2Up
OwotICAgIHJldHVybiBhcnJheTsKLX0KLQotaW50IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0
VGV4UGFyYW1ldGVyaSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSkK
LXsKLSAgICBpbnQgcmVzdWx0ID0gbV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJpKHRhcmdldCwg
cG5hbWUpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLQotUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmdldFRleFBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBs
b25nIHBuYW1lKQotewotICAgIFJlZlB0cjxXZWJHTEludEFycmF5PiBhcnJheSA9IG1fY29udGV4
dC0+Z2V0VGV4UGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSk7Ci0gICAgY2xlYW51cEFmdGVyR3Jh
cGhpY3NDYWxsKGZhbHNlKTsKLSAgICByZXR1cm4gYXJyYXk7Ci19Ci0KLWZsb2F0IFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6Z2V0VW5pZm9ybWYoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBsb25nIGxv
Y2F0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBpZiAoIXByb2dyYW0gfHwgcHJvZ3Jh
bS0+Y29udGV4dCgpICE9IHRoaXMpIHsKLSAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsK
LSAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKHRhcmdldCAhPSBHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRAorICAgICAgICAmJiB0YXJnZXQgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfQ1VCRV9NQVApIHsKKyAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfRU5VTSBl
cnJvcgorICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybiBXZWJHTEdldElu
Zm8oKTsKICAgICB9Ci0gICAgZmxvYXQgcmVzdWx0ID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtZihw
cm9ncmFtLCBsb2NhdGlvbik7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1QYXNzUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gV2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpnZXRVbmlmb3JtZnYoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBs
b25nIGxvY2F0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBpZiAoIXByb2dyYW0gfHwg
cHJvZ3JhbS0+Y29udGV4dCgpICE9IHRoaXMpIHsKLSAgICAgICAgZWMgPSBUWVBFX01JU01BVENI
X0VSUjsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgV2ViR0xTdGF0ZVJlc3RvcmVyKHRoaXMsIGZh
bHNlKTsKKyAgICBpbnQgdmFsdWUgPSAwOworICAgIHN3aXRjaCAocG5hbWUpIHsKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVI6CisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklMVEVSOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfV1JBUF9TOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
V1JBUF9UOgorICAgICAgICBtX2NvbnRleHQtPmdldFRleFBhcmFtZXRlcml2KHRhcmdldCwgcG5h
bWUsICZ2YWx1ZSk7CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oc3RhdGljX2Nhc3Q8dW5z
aWduZWQgbG9uZz4odmFsdWUpKTsKKyAgICBkZWZhdWx0OgorICAgICAgICAvLyBGSVhNRTogcmFp
c2UgR0xfSU5WQUxJRF9FTlVNIGVycm9yCisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAg
ICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOwogICAgIH0KLSAgICBSZWZQdHI8V2ViR0xGbG9hdEFy
cmF5PiBhcnJheSA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybWZ2KHByb2dyYW0sIGxvY2F0aW9uKTsK
LSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwotICAgIHJldHVybiBhcnJheTsK
IH0KIAotbG9uZyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFVuaWZvcm1pKFdlYkdMUHJvZ3Jh
bSogcHJvZ3JhbSwgbG9uZyBsb2NhdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCitXZWJHTEdldElu
Zm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRVbmlmb3JtKFdlYkdMUHJvZ3JhbSogcHJvZ3Jh
bSwgbG9uZyBsb2NhdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFwcm9ncmFt
IHx8IHByb2dyYW0tPmNvbnRleHQoKSAhPSB0aGlzKSB7CisgICAgICAgIC8vIEZJWE1FOiByYWlz
ZSBHTF9JTlZBTElEX1ZBTFVFIGVycm9yCiAgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7
Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CiAgICAg
fQotICAgIGxvbmcgcmVzdWx0ID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtaShwcm9ncmFtLCBsb2Nh
dGlvbik7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotCi1QYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6Z2V0VW5pZm9ybWl2KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBsb2NhdGlvbiwg
RXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgaWYgKCFwcm9ncmFtIHx8IHByb2dyYW0tPmNvbnRl
eHQoKSAhPSB0aGlzKSB7Ci0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7Ci0gICAgICAg
IHJldHVybiAwOworICAgIFdlYkdMU3RhdGVSZXN0b3Jlcih0aGlzLCBmYWxzZSk7CisgICAgLy8g
RklYTUU6IG1ha2UgdGhpcyBtb3JlIGVmZmljaWVudCB1c2luZyBXZWJHTFVuaWZvcm1Mb2NhdGlv
biBhbmQgY2FjaGluZyB0eXBlcyBpbiBpdAorICAgIGludCBhY3RpdmVVbmlmb3JtcyA9IDA7Cisg
ICAgbV9jb250ZXh0LT5nZXRQcm9ncmFtaXYocHJvZ3JhbSwgR3JhcGhpY3NDb250ZXh0M0Q6OkFD
VElWRV9VTklGT1JNUywgJmFjdGl2ZVVuaWZvcm1zKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8
IGFjdGl2ZVVuaWZvcm1zOyBpKyspIHsKKyAgICAgICAgQWN0aXZlSW5mbyBpbmZvOworICAgICAg
ICBpZiAoIW1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCBpLCBpbmZvKSkgewor
ICAgICAgICAgICAgLy8gRklYTUU6IHJhaXNlIHNvbWUgR0wgZXJyb3IKKyAgICAgICAgICAgIGVj
ID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7
CisgICAgICAgIH0KKyAgICAgICAgLy8gTm93IG5lZWQgdG8gbG9vayB0aGlzIHVwIGJ5IG5hbWUg
YWdhaW4gdG8gZmluZCBpdHMgbG9jYXRpb24KKyAgICAgICAgbG9uZyBsb2MgPSBtX2NvbnRleHQt
PmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCBpbmZvLm5hbWUpOworICAgICAgICBpZiAobG9j
ID09IGxvY2F0aW9uKSB7CisgICAgICAgICAgICAvLyBGb3VuZCBpdC4gVXNlIHRoZSB0eXBlIGlu
IHRoZSBBY3RpdmVJbmZvIHRvIGRldGVybWluZSB0aGUgcmV0dXJuIHR5cGUuCisgICAgICAgICAg
ICBHcmFwaGljc0NvbnRleHQzRDo6V2ViR0xFbnVtVHlwZSBiYXNlVHlwZTsKKyAgICAgICAgICAg
IHVuc2lnbmVkIGxlbmd0aDsKKyAgICAgICAgICAgIHN3aXRjaCAoaW5mby50eXBlKSB7CisgICAg
ICAgICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Qk9PTDoKKyAgICAgICAgICAgICAg
ICAgICAgYmFzZVR5cGUgPSBHcmFwaGljc0NvbnRleHQzRDo6Qk9PTDsKKyAgICAgICAgICAgICAg
ICAgICAgbGVuZ3RoID0gMTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Qk9PTF9WRUMyOgorICAgICAgICAgICAgICAg
ICAgICBiYXNlVHlwZSA9IEdyYXBoaWNzQ29udGV4dDNEOjpCT09MOworICAgICAgICAgICAgICAg
ICAgICBsZW5ndGggPSAyOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpCT09MX1ZFQzM6CisgICAgICAgICAgICAgICAg
ICAgIGJhc2VUeXBlID0gR3JhcGhpY3NDb250ZXh0M0Q6OkJPT0w7CisgICAgICAgICAgICAgICAg
ICAgIGxlbmd0aCA9IDM7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkJPT0xfVkVDNDoKKyAgICAgICAgICAgICAgICAg
ICAgYmFzZVR5cGUgPSBHcmFwaGljc0NvbnRleHQzRDo6Qk9PTDsKKyAgICAgICAgICAgICAgICAg
ICAgbGVuZ3RoID0gNDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6SU5UOgorICAgICAgICAgICAgICAgICAgICBiYXNl
VHlwZSA9IEdyYXBoaWNzQ29udGV4dDNEOjpJTlQ7CisgICAgICAgICAgICAgICAgICAgIGxlbmd0
aCA9IDE7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0M0Q6OklOVF9WRUMyOgorICAgICAgICAgICAgICAgICAgICBiYXNlVHlw
ZSA9IEdyYXBoaWNzQ29udGV4dDNEOjpJTlQ7CisgICAgICAgICAgICAgICAgICAgIGxlbmd0aCA9
IDI7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0M0Q6OklOVF9WRUMzOgorICAgICAgICAgICAgICAgICAgICBiYXNlVHlwZSA9
IEdyYXBoaWNzQ29udGV4dDNEOjpJTlQ7CisgICAgICAgICAgICAgICAgICAgIGxlbmd0aCA9IDM7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0M0Q6OklOVF9WRUM0OgorICAgICAgICAgICAgICAgICAgICBiYXNlVHlwZSA9IEdy
YXBoaWNzQ29udGV4dDNEOjpJTlQ7CisgICAgICAgICAgICAgICAgICAgIGxlbmd0aCA9IDQ7Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0M0Q6OkZMT0FUOgorICAgICAgICAgICAgICAgICAgICBiYXNlVHlwZSA9IEdyYXBoaWNz
Q29udGV4dDNEOjpGTE9BVDsKKyAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0gMTsKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6RkxPQVRfVkVDMjoKKyAgICAgICAgICAgICAgICAgICAgYmFzZVR5cGUgPSBHcmFwaGlj
c0NvbnRleHQzRDo6RkxPQVQ7CisgICAgICAgICAgICAgICAgICAgIGxlbmd0aCA9IDI7CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0M0Q6OkZMT0FUX1ZFQzM6CisgICAgICAgICAgICAgICAgICAgIGJhc2VUeXBlID0gR3JhcGhp
Y3NDb250ZXh0M0Q6OkZMT0FUOworICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSAzOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dDNEOjpGTE9BVF9WRUM0OgorICAgICAgICAgICAgICAgICAgICBiYXNlVHlwZSA9IEdyYXBo
aWNzQ29udGV4dDNEOjpGTE9BVDsKKyAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0gNDsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHQzRDo6RkxPQVRfTUFUMjoKKyAgICAgICAgICAgICAgICAgICAgYmFzZVR5cGUgPSBHcmFw
aGljc0NvbnRleHQzRDo6RkxPQVQ7CisgICAgICAgICAgICAgICAgICAgIGxlbmd0aCA9IDQ7Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0M0Q6OkZMT0FUX01BVDM6CisgICAgICAgICAgICAgICAgICAgIGJhc2VUeXBlID0gR3Jh
cGhpY3NDb250ZXh0M0Q6OkZMT0FUOworICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSA5Owor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dDNEOjpGTE9BVF9NQVQ0OgorICAgICAgICAgICAgICAgICAgICBiYXNlVHlwZSA9IEdy
YXBoaWNzQ29udGV4dDNEOjpGTE9BVDsKKyAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0gMTY7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgICAgIC8vIENhbid0IGhhbmRsZSB0aGlzIHR5cGUKKyAgICAgICAgICAg
ICAgICAgICAgLy8gRklYTUU6IHdoYXQgdG8gZG8gYWJvdXQgc2FtcGxlcnM/CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIHN3aXRjaCAoYmFzZVR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
M0Q6OkZMT0FUOiB7CisgICAgICAgICAgICAgICAgZmxvYXQgdmFsdWVbMTZdID0gezB9OworICAg
ICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybWZ2KHByb2dyYW0sIGxvY2F0aW9uLCB2
YWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKGxlbmd0aCA9PSAxKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKHZhbHVlWzBdKTsKKyAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oV2ViR0xGbG9hdEFycmF5
OjpjcmVhdGUodmFsdWUsIGxlbmd0aCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHQzRDo6SU5UOiB7CisgICAgICAgICAgICAgICAgaW50IHZhbHVlWzE2
XSA9IHswfTsKKyAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZvcm1pdihwcm9ncmFt
LCBsb2NhdGlvbiwgdmFsdWUpOworICAgICAgICAgICAgICAgIGlmIChsZW5ndGggPT0gMSkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNfY2FzdDxsb25nPih2
YWx1ZVswXSkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIFdlYkdMR2V0SW5mbyhXZWJHTEludEFycmF5OjpjcmVhdGUodmFsdWUsIGxlbmd0aCkpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Qk9PTDog
eworICAgICAgICAgICAgICAgIGludCB2YWx1ZVsxNl0gPSB7MH07CisgICAgICAgICAgICAgICAg
bV9jb250ZXh0LT5nZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKKyAgICAg
ICAgICAgICAgICBpZiAobGVuZ3RoID09IDEpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBX
ZWJHTEdldEluZm8oc3RhdGljX2Nhc3Q8Ym9vbD4odmFsdWVbMF0pKTsKKyAgICAgICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBib29sVmFsdWVbMTZd
ID0gezB9OworICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgbGVu
Z3RoOyBqKyspCisgICAgICAgICAgICAgICAgICAgICAgICBib29sVmFsdWVbal0gPSBzdGF0aWNf
Y2FzdDxib29sPih2YWx1ZVtqXSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBXZWJHTEdl
dEluZm8oV2ViR0xVbnNpZ25lZEJ5dGVBcnJheTo6Y3JlYXRlKGJvb2xWYWx1ZSwgbGVuZ3RoKSk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CiAgICAgfQotICAgIFJlZlB0cjxXZWJHTEludEFycmF5PiBhcnJheSA9IG1fY29udGV4dC0+
Z2V0VW5pZm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGlj
c0NhbGwoZmFsc2UpOwotICAgIHJldHVybiBhcnJheTsKKyAgICAvLyBJZiB3ZSBnZXQgaGVyZSwg
c29tZXRoaW5nIHdlbnQgd3JvbmcgaW4gb3VyIHVuZm9ydHVuYXRlbHkgY29tcGxleCBsb2dpYyBh
Ym92ZQorICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKIH0KIAogbG9uZyBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmdldFVuaWZvcm1Mb2NhdGlvbihXZWJHTFByb2dyYW0qIHByb2dyYW0sIGNvbnN0
IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC03OTcsMzIgKzExMzgsNDcgQEAg
bG9uZyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFVuaWZvcm1MbwogICAgIHJldHVybiBtX2Nv
bnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCBuYW1lKTsKIH0KIAotZmxvYXQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpnZXRWZXJ0ZXhBdHRyaWJmKHVuc2lnbmVkIGxvbmcgaW5kZXgs
IHVuc2lnbmVkIGxvbmcgcG5hbWUpCitXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpnZXRWZXJ0ZXhBdHRyaWIodW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQgbG9uZyBwbmFt
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgZmxvYXQgcmVzdWx0ID0gbV9jb250ZXh0LT5n
ZXRWZXJ0ZXhBdHRyaWJmKGluZGV4LCBwbmFtZSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3ND
YWxsKGZhbHNlKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1QYXNzUmVmUHRyPFdlYkdMRmxv
YXRBcnJheT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRWZXJ0ZXhBdHRyaWJmdih1bnNpZ25l
ZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBuYW1lKQotewotICAgIFJlZlB0cjxXZWJHTEZs
b2F0QXJyYXk+IGFycmF5ID0gbV9jb250ZXh0LT5nZXRWZXJ0ZXhBdHRyaWJmdihpbmRleCwgcG5h
bWUpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci0gICAgcmV0dXJuIGFy
cmF5OwotfQotCi1sb25nIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VmVydGV4QXR0cmliaSh1
bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBuYW1lKQotewotICAgIGxvbmcgcmVz
dWx0ID0gbV9jb250ZXh0LT5nZXRWZXJ0ZXhBdHRyaWJpKGluZGV4LCBwbmFtZSk7Ci0gICAgY2xl
YW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1Q
YXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VmVydGV4
QXR0cmliaXYodW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAg
ICBSZWZQdHI8V2ViR0xJbnRBcnJheT4gYXJyYXkgPSBtX2NvbnRleHQtPmdldFZlcnRleEF0dHJp
Yml2KGluZGV4LCBwbmFtZSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsK
LSAgICByZXR1cm4gYXJyYXk7CisgICAgV2ViR0xTdGF0ZVJlc3RvcmVyKHRoaXMsIGZhbHNlKTsK
KyAgICBzd2l0Y2ggKHBuYW1lKSB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VkVSVEVY
X0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElORzogeworICAgICAgICBpbnQgbmFtZSA9IDA7Cisg
ICAgICAgIG1fY29udGV4dC0+Z2V0VmVydGV4QXR0cmliaXYoaW5kZXgsIHBuYW1lLCAmbmFtZSk7
CisgICAgICAgIGlmIChuYW1lID09IDApCisgICAgICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZv
KCk7CisgICAgICAgIFJlZlB0cjxXZWJHTEJ1ZmZlcj4gdG1wID0gV2ViR0xCdWZmZXI6OmNyZWF0
ZSh0aGlzLCBuYW1lKTsKKyAgICAgICAgYWRkT2JqZWN0KHRtcC5nZXQoKSk7CisgICAgICAgIHJl
dHVybiBXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTEJ1ZmZlcj4odG1wKSk7CisgICAgfQor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlZFUlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRDoK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpWRVJURVhfQVRUUklCX0FSUkFZX05PUk1BTEla
RUQ6IHsKKyAgICAgICAgaW50IHZhbHVlID0gMDsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRWZXJ0
ZXhBdHRyaWJpdihpbmRleCwgcG5hbWUsICZ2YWx1ZSk7CisgICAgICAgIHJldHVybiBXZWJHTEdl
dEluZm8oc3RhdGljX2Nhc3Q8Ym9vbD4odmFsdWUpKTsKKyAgICB9CisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHQzRDo6VkVSVEVYX0FUVFJJQl9BUlJBWV9TSVpFOgorICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0M0Q6OlZFUlRFWF9BVFRSSUJfQVJSQVlfU1RSSURFOiB7CisgICAgICAgIGludCB2YWx1
ZSA9IDA7CisgICAgICAgIG1fY29udGV4dC0+Z2V0VmVydGV4QXR0cmliaXYoaW5kZXgsIHBuYW1l
LCAmdmFsdWUpOworICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0PGxvbmc+
KHZhbHVlKSk7CisgICAgfQorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlZFUlRFWF9BVFRS
SUJfQVJSQVlfVFlQRTogeworICAgICAgICBpbnQgdmFsdWUgPSAwOworICAgICAgICBtX2NvbnRl
eHQtPmdldFZlcnRleEF0dHJpYml2KGluZGV4LCBwbmFtZSwgJnZhbHVlKTsKKyAgICAgICAgcmV0
dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPih2YWx1ZSkpOworICAg
IH0KKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpDVVJSRU5UX1ZFUlRFWF9BVFRSSUI6IHsK
KyAgICAgICAgZmxvYXQgdmFsdWVbNF0gPSB7MH07CisgICAgICAgIG1fY29udGV4dC0+Z2V0VmVy
dGV4QXR0cmliZnYoaW5kZXgsIHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIHJldHVybiBXZWJHTEdl
dEluZm8oV2ViR0xGbG9hdEFycmF5OjpjcmVhdGUodmFsdWUsIDQpKTsKKyAgICB9CisgICAgZGVm
YXVsdDogeworICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9FTlVNIGVycm9yCisg
ICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOwor
ICAgIH0KKyAgICB9CiB9CiAKIGxvbmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRWZXJ0ZXhB
dHRyaWJPZmZzZXQodW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQgbG9uZyBwbmFtZSkKQEAg
LTE0MTcsNiArMTc3Myw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0
cmkKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVzZVByb2dyYW0oV2ViR0xQcm9ncmFt
KiBwcm9ncmFtKQogeworICAgIG1fY3VycmVudFByb2dyYW0gPSBwcm9ncmFtOwogICAgIG1fY29u
dGV4dC0+dXNlUHJvZ3JhbShwcm9ncmFtKTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwo
ZmFsc2UpOwogfQpAQCAtMTU0OCw2ICsxOTA1LDE1IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0OjphZGRPYmplY3QoQ2EKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRldGFjaEFu
ZFJlbW92ZUFsbE9iamVjdHMoKQogeworICAgIG1fYXJyYXlCdWZmZXJCaW5kaW5nID0gMDsKKyAg
ICBtX2N1cnJlbnRQcm9ncmFtID0gMDsKKyAgICBtX2VsZW1lbnRBcnJheUJ1ZmZlckJpbmRpbmcg
PSAwOworICAgIG1fZnJhbWVidWZmZXJCaW5kaW5nID0gMDsKKyAgICBtX3JlbmRlcmJ1ZmZlckJp
bmRpbmcgPSAwOworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgc2l6ZW9mKG1fdGV4
dHVyZVVuaXRzKSAvIHNpemVvZihUZXh0dXJlVW5pdFN0YXRlKTsgaSsrKSB7CisgICAgICAgIG1f
dGV4dHVyZVVuaXRzW2ldLm1fdGV4dHVyZTJEQmluZGluZyA9IDA7CisgICAgICAgIG1fdGV4dHVy
ZVVuaXRzW2ldLm1fdGV4dHVyZUN1YmVNYXBCaW5kaW5nID0gMDsKKyAgICB9CiAgICAgSGFzaFNl
dDxDYW52YXNPYmplY3QqPjo6aXRlcmF0b3IgcGVuZCA9IG1fY2FudmFzT2JqZWN0cy5lbmQoKTsK
ICAgICBmb3IgKEhhc2hTZXQ8Q2FudmFzT2JqZWN0Kj46Oml0ZXJhdG9yIGl0ID0gbV9jYW52YXNP
YmplY3RzLmJlZ2luKCk7IGl0ICE9IHBlbmQ7ICsraXQpCiAgICAgICAgICgqaXQpLT5kZXRhY2hD
b250ZXh0KCk7CkBAIC0xNTU1LDcgKzE5MjEsOTQgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmRldGFjaEFuZFJlbQogICAgIG1fY2FudmFzT2JqZWN0cy5jbGVhcigpOwogfQogCitXZWJH
TEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRCb29sZWFuUGFyYW1ldGVyKHVuc2ln
bmVkIGxvbmcgcG5hbWUpCit7CisgICAgdW5zaWduZWQgY2hhciB2YWx1ZTsKKyAgICBtX2NvbnRl
eHQtPmdldEJvb2xlYW52KHBuYW1lLCAmdmFsdWUpOworICAgIHJldHVybiBXZWJHTEdldEluZm8o
c3RhdGljX2Nhc3Q8Ym9vbD4odmFsdWUpKTsKK30KKworV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6Z2V0RmxvYXRQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyBwbmFtZSkKK3sKKyAg
ICBmbG9hdCB2YWx1ZTsKKyAgICBtX2NvbnRleHQtPmdldEZsb2F0dihwbmFtZSwgJnZhbHVlKTsK
KyAgICByZXR1cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0PGZsb2F0Pih2YWx1ZSkpOworfQor
CitXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRJbnRQYXJhbWV0ZXIodW5z
aWduZWQgbG9uZyBwbmFtZSkKK3sKKyAgICByZXR1cm4gZ2V0TG9uZ1BhcmFtZXRlcihwbmFtZSk7
Cit9CisKK1dlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldExvbmdQYXJhbWV0
ZXIodW5zaWduZWQgbG9uZyBwbmFtZSkKK3sKKyAgICBpbnQgdmFsdWU7CisgICAgbV9jb250ZXh0
LT5nZXRJbnRlZ2VydihwbmFtZSwgJnZhbHVlKTsKKyAgICByZXR1cm4gV2ViR0xHZXRJbmZvKHN0
YXRpY19jYXN0PGxvbmc+KHZhbHVlKSk7Cit9CisKK1dlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmdldFVuc2lnbmVkTG9uZ1BhcmFtZXRlcih1bnNpZ25lZCBsb25nIHBuYW1lKQor
eworICAgIGludCB2YWx1ZTsKKyAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KHBuYW1lLCAmdmFs
dWUpOworICAgIHJldHVybiBXZWJHTEdldEluZm8oc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4o
dmFsdWUpKTsKK30KKworV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0V2Vi
R0xGbG9hdEFycmF5UGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcgcG5hbWUpCit7CisgICAgZmxvYXQg
dmFsdWVbNF0gPSB7MH07CisgICAgbV9jb250ZXh0LT5nZXRGbG9hdHYocG5hbWUsIHZhbHVlKTsK
KyAgICB1bnNpZ25lZCBsZW5ndGggPSAwOworICAgIHN3aXRjaCAocG5hbWUpIHsKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dDNEOjpBTElBU0VEX1BPSU5UX1NJWkVfUkFOR0U6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6QUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFOgorICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0M0Q6OkRFUFRIX1JBTkdFOgorICAgICAgICBsZW5ndGggPSAyOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpCTEVORF9DT0xPUjoKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9DTEVBUl9WQUxVRToKKyAgICAgICAgbGVuZ3Ro
ID0gNDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICB9CisgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhXZWJHTEZsb2F0QXJyYXk6OmNy
ZWF0ZSh2YWx1ZSwgbGVuZ3RoKSk7Cit9CisKK1dlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmdldFdlYkdMSW50QXJyYXlQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyBwbmFtZSkKK3sK
KyAgICBpbnQgdmFsdWVbNF0gPSB7MH07CisgICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihwbmFt
ZSwgdmFsdWUpOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IDA7CisgICAgc3dpdGNoIChwbmFtZSkg
eworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9WSUVXUE9SVF9ESU1TOgorICAgICAg
ICBsZW5ndGggPSAyOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNE
OjpTQ0lTU09SX0JPWDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpWSUVXUE9SVDoKKyAg
ICAgICAgbGVuZ3RoID0gNDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICB9CisgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhXZWJHTElu
dEFycmF5OjpjcmVhdGUodmFsdWUsIGxlbmd0aCkpOworfQorCitXZWJHTEdldEluZm8gV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpnZXRXZWJHTFVuc2lnbmVkQnl0ZUFycmF5UGFyYW1ldGVyKHVuc2ln
bmVkIGxvbmcgcG5hbWUpCit7CisgICAgdW5zaWduZWQgY2hhciB2YWx1ZVs0XSA9IHswfTsKKyAg
ICBtX2NvbnRleHQtPmdldEJvb2xlYW52KHBuYW1lLCB2YWx1ZSk7CisgICAgdW5zaWduZWQgbGVu
Z3RoID0gMDsKKyAgICBzd2l0Y2ggKHBuYW1lKSB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6Q09MT1JfV1JJVEVNQVNLOgorICAgICAgICBsZW5ndGggPSA0OworICAgICAgICBicmVhazsK
KyAgICBkZWZhdWx0OgorICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIH0KKyAgICByZXR1
cm4gV2ViR0xHZXRJbmZvKFdlYkdMVW5zaWduZWRCeXRlQXJyYXk6OmNyZWF0ZSh2YWx1ZSwgbGVu
Z3RoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRSgz
RF9DQU5WQVMpCi0KSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHQuaAkocmV2aXNpb24gNTEyNzgpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVk
ZSAiQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIK
ICNpbmNsdWRlICJXZWJHTEZsb2F0QXJyYXkuaCIKKyNpbmNsdWRlICJXZWJHTEdldEluZm8uaCIK
ICNpbmNsdWRlICJXZWJHTEludEFycmF5LmgiCiAjaW5jbHVkZSAiV2ViR0xVbnNpZ25lZEJ5dGVB
cnJheS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCkBAIC0xMzAsMjYgKzEzMSwy
MSBAQCBjbGFzcyBXZWJLaXRDU1NNYXRyaXg7CiAKICAgICAgICAgaW50ICBnZXRBdHRyaWJMb2Nh
dGlvbihXZWJHTFByb2dyYW0qLCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCi0gICAgICAgIGJvb2wg
Z2V0Qm9vbGVhbih1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgUGFzc1JlZlB0cjxXZWJH
TFVuc2lnbmVkQnl0ZUFycmF5PiBnZXRCb29sZWFudih1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAg
ICAgICAgaW50IGdldEJ1ZmZlclBhcmFtZXRlcmkodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2ln
bmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBQYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IGdldEJ1
ZmZlclBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1l
KTsKKyAgICAgICAgV2ViR0xHZXRJbmZvIGdldEJ1ZmZlclBhcmFtZXRlcih1bnNpZ25lZCBsb25n
IHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgICAg
IHVuc2lnbmVkIGxvbmcgZ2V0RXJyb3IoKTsKIAotICAgICAgICBmbG9hdCBnZXRGbG9hdCh1bnNp
Z25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgUGFzc1JlZlB0cjxXZWJHTEZsb2F0QXJyYXk+IGdl
dEZsb2F0dih1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgaW50IGdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcmkodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcg
YXR0YWNobWVudCwgdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFBhc3NSZWZQdHI8V2Vi
R0xJbnRBcnJheT4gZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYodW5zaWduZWQg
bG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgdW5zaWduZWQgbG9uZyBwbmFt
ZSk7Ci0gICAgICAgIGludCBnZXRJbnRlZ2VyKHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAg
ICBQYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IGdldEludGVnZXJ2KHVuc2lnbmVkIGxvbmcgcG5h
bWUpOwotICAgICAgICBpbnQgZ2V0UHJvZ3JhbWkoV2ViR0xQcm9ncmFtKiwgdW5zaWduZWQgbG9u
ZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpOwotICAgICAgICBQYXNzUmVmUHRyPFdlYkdMSW50
QXJyYXk+IGdldFByb2dyYW1pdihXZWJHTFByb2dyYW0qLCB1bnNpZ25lZCBsb25nIHBuYW1lLCBF
eGNlcHRpb25Db2RlJiBlYyk7CisgICAgICAgIFdlYkdMR2V0SW5mbyBnZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0
YWNobWVudCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYpOworCisgICAgICAg
IFdlYkdMR2V0SW5mbyBnZXRQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9u
Q29kZSYpOworCisgICAgICAgIFdlYkdMR2V0SW5mbyBnZXRQcm9ncmFtUGFyYW1ldGVyKFdlYkdM
UHJvZ3JhbSosIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKKwogICAgICAg
ICBTdHJpbmcgZ2V0UHJvZ3JhbUluZm9Mb2coV2ViR0xQcm9ncmFtKiwgRXhjZXB0aW9uQ29kZSYg
ZWMpOwotICAgICAgICBpbnQgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaSh1bnNpZ25lZCBsb25n
IHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFBhc3NSZWZQdHI8V2ViR0xJ
bnRBcnJheT4gZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQs
IHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBpbnQgZ2V0U2hhZGVyaShXZWJHTFNoYWRl
ciosIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKTsKLSAgICAgICAgUGFz
c1JlZlB0cjxXZWJHTEludEFycmF5PiBnZXRTaGFkZXJpdihXZWJHTFNoYWRlciosIHVuc2lnbmVk
IGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKTsKKworICAgICAgICBXZWJHTEdldEluZm8g
Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBs
b25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJik7CisKKyAgICAgICAgV2ViR0xHZXRJbmZvIGdldFNo
YWRlclBhcmFtZXRlcihXZWJHTFNoYWRlciosIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlv
bkNvZGUmIGVjKTsKIAogICAgICAgICBTdHJpbmcgZ2V0U2hhZGVySW5mb0xvZyhXZWJHTFNoYWRl
ciosIEV4Y2VwdGlvbkNvZGUmIGVjKTsKIApAQCAtMTU5LDEwICsxNTUsOSBAQCBjbGFzcyBXZWJL
aXRDU1NNYXRyaXg7CiAgICAgICAgIFN0cmluZyBnZXRTaGFkZXJTb3VyY2UoV2ViR0xTaGFkZXIq
LCBFeGNlcHRpb25Db2RlJiBlYyk7CiAgICAgICAgIFN0cmluZyBnZXRTdHJpbmcodW5zaWduZWQg
bG9uZyBuYW1lKTsKIAotICAgICAgICBmbG9hdCBnZXRUZXhQYXJhbWV0ZXJmKHVuc2lnbmVkIGxv
bmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgUGFzc1JlZlB0cjxXZWJH
TEZsb2F0QXJyYXk+IGdldFRleFBhcmFtZXRlcmZ2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNp
Z25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgaW50IGdldFRleFBhcmFtZXRlcmkodW5zaWduZWQg
bG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBQYXNzUmVmUHRyPFdl
YkdMSW50QXJyYXk+IGdldFRleFBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNp
Z25lZCBsb25nIHBuYW1lKTsKKyAgICAgICAgV2ViR0xHZXRJbmZvIGdldFRleFBhcmFtZXRlcih1
bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYp
OworCisgICAgICAgIFdlYkdMR2V0SW5mbyBnZXRVbmlmb3JtKFdlYkdMUHJvZ3JhbSogcHJvZ3Jh
bSwgbG9uZyBsb2NhdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpOwogCiAgICAgICAgIGZsb2F0IGdl
dFVuaWZvcm1mKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBsb2NhdGlvbiwgRXhjZXB0aW9u
Q29kZSYgZWMpOwogICAgICAgICBQYXNzUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gZ2V0VW5pZm9y
bWZ2KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBsb2NhdGlvbiwgRXhjZXB0aW9uQ29kZSYg
ZWMpOwpAQCAtMTcxLDEwICsxNjYsNyBAQCBjbGFzcyBXZWJLaXRDU1NNYXRyaXg7CiAKICAgICAg
ICAgbG9uZyBnZXRVbmlmb3JtTG9jYXRpb24oV2ViR0xQcm9ncmFtKiwgY29uc3QgU3RyaW5nJiBu
YW1lLCBFeGNlcHRpb25Db2RlJiBlYyk7CiAKLSAgICAgICAgZmxvYXQgZ2V0VmVydGV4QXR0cmli
Zih1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgUGFz
c1JlZlB0cjxXZWJHTEZsb2F0QXJyYXk+IGdldFZlcnRleEF0dHJpYmZ2KHVuc2lnbmVkIGxvbmcg
aW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBsb25nIGdldFZlcnRleEF0dHJp
YmkodW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFBh
c3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gZ2V0VmVydGV4QXR0cmliaXYodW5zaWduZWQgbG9uZyBp
bmRleCwgdW5zaWduZWQgbG9uZyBwbmFtZSk7CisgICAgICAgIFdlYkdMR2V0SW5mbyBnZXRWZXJ0
ZXhBdHRyaWIodW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0
aW9uQ29kZSYpOwogCiAgICAgICAgIGxvbmcgZ2V0VmVydGV4QXR0cmliT2Zmc2V0KHVuc2lnbmVk
IGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwogCkBAIC0zMjAsNiArMzEyLDMxIEBA
IGNsYXNzIFdlYktpdENTU01hdHJpeDsKICAgICAgICAgLy8gRklYTUU6IEkgdGhpbmsgdGhpcyBp
cyBicm9rZW4gLS0gaXQgZG9lcyBub3QgaW5jcmVtZW50IGFueQogICAgICAgICAvLyByZWZlcmVu
Y2UgY291bnRzLCBzbyBtYXkgcmVmZXIgdG8gZGVzdHJveWVkIG9iamVjdHMuCiAgICAgICAgIEhh
c2hTZXQ8Q2FudmFzT2JqZWN0Kj4gbV9jYW52YXNPYmplY3RzOworCisgICAgICAgIFJlZlB0cjxX
ZWJHTEJ1ZmZlcj4gbV9hcnJheUJ1ZmZlckJpbmRpbmc7CisgICAgICAgIFJlZlB0cjxXZWJHTFBy
b2dyYW0+IG1fY3VycmVudFByb2dyYW07CisgICAgICAgIFJlZlB0cjxXZWJHTEJ1ZmZlcj4gbV9l
bGVtZW50QXJyYXlCdWZmZXJCaW5kaW5nOworICAgICAgICBSZWZQdHI8V2ViR0xGcmFtZWJ1ZmZl
cj4gbV9mcmFtZWJ1ZmZlckJpbmRpbmc7CisgICAgICAgIFJlZlB0cjxXZWJHTFJlbmRlcmJ1ZmZl
cj4gbV9yZW5kZXJidWZmZXJCaW5kaW5nOworICAgICAgICBjbGFzcyBUZXh0dXJlVW5pdFN0YXRl
IHsKKyAgICAgICAgcHVibGljOgorICAgICAgICAgICAgUmVmUHRyPFdlYkdMVGV4dHVyZT4gbV90
ZXh0dXJlMkRCaW5kaW5nOworICAgICAgICAgICAgUmVmUHRyPFdlYkdMVGV4dHVyZT4gbV90ZXh0
dXJlQ3ViZU1hcEJpbmRpbmc7CisgICAgICAgIH07CisgICAgICAgIFRleHR1cmVVbml0U3RhdGUg
bV90ZXh0dXJlVW5pdHNbMzJdOworICAgICAgICB1bnNpZ25lZCBsb25nIG1fYWN0aXZlVGV4dHVy
ZVVuaXQ7CisKKyAgICAgICAgLy8gSGVscGVycyBmb3IgZ2V0UGFyYW1ldGVyIGFuZCBvdGhlcnMK
KyAgICAgICAgV2ViR0xHZXRJbmZvIGdldEJvb2xlYW5QYXJhbWV0ZXIodW5zaWduZWQgbG9uZyBw
bmFtZSk7CisgICAgICAgIFdlYkdMR2V0SW5mbyBnZXRGbG9hdFBhcmFtZXRlcih1bnNpZ25lZCBs
b25nIHBuYW1lKTsKKyAgICAgICAgV2ViR0xHZXRJbmZvIGdldEludFBhcmFtZXRlcih1bnNpZ25l
ZCBsb25nIHBuYW1lKTsKKyAgICAgICAgV2ViR0xHZXRJbmZvIGdldExvbmdQYXJhbWV0ZXIodW5z
aWduZWQgbG9uZyBwbmFtZSk7CisgICAgICAgIFdlYkdMR2V0SW5mbyBnZXRVbnNpZ25lZExvbmdQ
YXJhbWV0ZXIodW5zaWduZWQgbG9uZyBwbmFtZSk7CisgICAgICAgIFdlYkdMR2V0SW5mbyBnZXRX
ZWJHTEZsb2F0QXJyYXlQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyBwbmFtZSk7CisgICAgICAgIFdl
YkdMR2V0SW5mbyBnZXRXZWJHTEludEFycmF5UGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcgcG5hbWUp
OworICAgICAgICBXZWJHTEdldEluZm8gZ2V0V2ViR0xVbnNpZ25lZEJ5dGVBcnJheVBhcmFtZXRl
cih1bnNpZ25lZCBsb25nIHBuYW1lKTsKKworICAgICAgICBmcmllbmQgY2xhc3MgV2ViR0xTdGF0
ZVJlc3RvcmVyOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5pZGwJKHJldmlzaW9uIDUx
Mjc4KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC01MjksNyArNTI5LDYgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICB2
b2lkICAgICAgICAgZnJvbnRGYWNlKGluIHVuc2lnbmVkIGxvbmcgbW9kZSk7CiAgICAgICAgIHZv
aWQgICAgICAgICBnZW5lcmF0ZU1pcG1hcChpbiB1bnNpZ25lZCBsb25nIHRhcmdldCk7CiAgICAg
ICAgIAotICAgICAgICAvLyBGSVhNRTogdGhlc2UgbmVlZCB0byBiZSBhZGRlZCBwZXIgdGhlIFdl
YkdMIHNwZWMKICAgICAgICAgV2ViR0xBY3RpdmVJbmZvIGdldEFjdGl2ZUF0dHJpYihpbiBXZWJH
TFByb2dyYW0gcHJvZ3JhbSwgaW4gdW5zaWduZWQgbG9uZyBpbmRleCkKICAgICAgICAgICAgIHJh
aXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgV2ViR0xBY3RpdmVJbmZvIGdldEFjdGl2ZVVu
aWZvcm0oaW4gV2ViR0xQcm9ncmFtIHByb2dyYW0sIGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpCkBA
IC01MzksMjYgKzUzOCwyMiBAQCBtb2R1bGUgaHRtbCB7CiAKICAgICAgICAgaW50ICAgICAgICAg
IGdldEF0dHJpYkxvY2F0aW9uKGluIFdlYkdMUHJvZ3JhbSBwcm9ncmFtLCBpbiBET01TdHJpbmcg
bmFtZSk7CiAKLSAgICAgICAgYm9vbGVhbiBnZXRCb29sZWFuKGluIHVuc2lnbmVkIGxvbmcgcG5h
bWUpOwotICAgICAgICBXZWJHTFVuc2lnbmVkQnl0ZUFycmF5IGdldEJvb2xlYW52KGluIHVuc2ln
bmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBsb25nIGdldEJ1ZmZlclBhcmFtZXRlcmkoaW4gdW5z
aWduZWQgbG9uZyB0YXJnZXQsIGluIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBXZWJH
TEludEFycmF5IGdldEJ1ZmZlclBhcmFtZXRlcml2KGluIHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBp
biB1bnNpZ25lZCBsb25nIHBuYW1lKTsKKyAgICAgICAgLy8gYW55IGdldEJ1ZmZlclBhcmFtZXRl
cihpbiB1bnNpZ25lZCBsb25nIHRhcmdldCwgaW4gdW5zaWduZWQgbG9uZyBwbmFtZSkgcmFpc2Vz
KERPTUV4Y2VwdGlvbik7CisgICAgICAgIFtDdXN0b21dIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVy
KCk7CiAKICAgICAgICAgdW5zaWduZWQgbG9uZyBnZXRFcnJvcigpOwogCi0gICAgICAgIGZsb2F0
IGdldEZsb2F0KGluIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBXZWJHTEZsb2F0QXJy
YXkgZ2V0RmxvYXR2KGluIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBsb25nIGdldEZy
YW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcmkoaW4gdW5zaWduZWQgbG9uZyB0YXJnZXQsIGlu
IHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgaW4gdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAg
ICAgIFdlYkdMSW50QXJyYXkgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoaW4g
dW5zaWduZWQgbG9uZyB0YXJnZXQsIGluIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgaW4gdW5z
aWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIGxvbmcgZ2V0SW50ZWdlcihpbiB1bnNpZ25lZCBs
b25nIHBuYW1lKTsKLSAgICAgICAgV2ViR0xJbnRBcnJheSBnZXRJbnRlZ2VydihpbiB1bnNpZ25l
ZCBsb25nIHBuYW1lKTsKLSAgICAgICAgbG9uZyBnZXRQcm9ncmFtaShpbiBXZWJHTFByb2dyYW0g
cHJvZ3JhbSwgaW4gdW5zaWduZWQgbG9uZyBwbmFtZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7Ci0g
ICAgICAgIFdlYkdMSW50QXJyYXkgZ2V0UHJvZ3JhbWl2KGluIFdlYkdMUHJvZ3JhbSBwcm9ncmFt
LCBpbiB1bnNpZ25lZCBsb25nIHBuYW1lKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAg
Ly8gYW55IGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihpbiB1bnNpZ25lZCBsb25n
IHRhcmdldCwgaW4gdW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCBpbiB1bnNpZ25lZCBsb25nIHBu
YW1lKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgW0N1c3RvbV0gdm9pZCBnZXRGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoKTsKKyAgICAgICAgLy8gYW55IGdldFBhcmFtZXRl
cihpbiB1bnNpZ25lZCBsb25nIHBuYW1lKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAg
W0N1c3RvbV0gdm9pZCBnZXRQYXJhbWV0ZXIoKTsKKyAgICAgICAgLy8gYW55IGdldFByb2dyYW1Q
YXJhbWV0ZXIoaW4gV2ViR0xQcm9ncmFtIHByb2dyYW0sIGluIHVuc2lnbmVkIGxvbmcgcG5hbWUp
IHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICBbQ3VzdG9tXSB2b2lkIGdldFByb2dyYW1Q
YXJhbWV0ZXIoKTsKICAgICAgICAgRE9NU3RyaW5nIGdldFByb2dyYW1JbmZvTG9nKGluIFdlYkdM
UHJvZ3JhbSBwcm9ncmFtKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKLSAgICAgICAgbG9uZyBnZXRS
ZW5kZXJidWZmZXJQYXJhbWV0ZXJpKGluIHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBpbiB1bnNpZ25l
ZCBsb25nIHBuYW1lKTsKLSAgICAgICAgV2ViR0xJbnRBcnJheSBnZXRSZW5kZXJidWZmZXJQYXJh
bWV0ZXJpdihpbiB1bnNpZ25lZCBsb25nIHRhcmdldCwgaW4gdW5zaWduZWQgbG9uZyBwbmFtZSk7
Ci0gICAgICAgIGxvbmcgZ2V0U2hhZGVyaShpbiBXZWJHTFNoYWRlciBzaGFkZXIsIGluIHVuc2ln
bmVkIGxvbmcgcG5hbWUpIHJhaXNlcyhET01FeGNlcHRpb24pOwotICAgICAgICBXZWJHTEludEFy
cmF5IGdldFNoYWRlcml2KGluIFdlYkdMU2hhZGVyIHNoYWRlciwgaW4gdW5zaWduZWQgbG9uZyBw
bmFtZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIC8vIGFueSBnZXRSZW5kZXJidWZm
ZXJQYXJhbWV0ZXIoaW4gdW5zaWduZWQgbG9uZyB0YXJnZXQsIGluIHVuc2lnbmVkIGxvbmcgcG5h
bWUpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICBbQ3VzdG9tXSB2b2lkIGdldFJlbmRl
cmJ1ZmZlclBhcmFtZXRlcigpOworICAgICAgICAvLyBhbnkgZ2V0U2hhZGVyUGFyYW1ldGVyKGlu
IFdlYkdMU2hhZGVyIHNoYWRlciwgaW4gdW5zaWduZWQgbG9uZyBwbmFtZSkgcmFpc2VzKERPTUV4
Y2VwdGlvbik7CisgICAgICAgIFtDdXN0b21dIHZvaWQgZ2V0U2hhZGVyUGFyYW1ldGVyKCkgcmFp
c2VzKERPTUV4Y2VwdGlvbik7CiAKICAgICAgICAgRE9NU3RyaW5nICAgIGdldFNoYWRlckluZm9M
b2coaW4gV2ViR0xTaGFkZXIgc2hhZGVyKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIApAQCAtNTY4
LDIyICs1NjMsMTYgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICBET01TdHJpbmcgICAgZ2V0U2hh
ZGVyU291cmNlKGluIFdlYkdMU2hhZGVyIHNoYWRlcikgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAg
ICAgICAgIERPTVN0cmluZyAgICBnZXRTdHJpbmcoaW4gdW5zaWduZWQgbG9uZyBuYW1lKTsKIAot
ICAgICAgICBmbG9hdCBnZXRUZXhQYXJhbWV0ZXJmKGluIHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBp
biB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgV2ViR0xGbG9hdEFycmF5IGdldFRleFBh
cmFtZXRlcmZ2KGluIHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBpbiB1bnNpZ25lZCBsb25nIHBuYW1l
KTsKLSAgICAgICAgbG9uZyBnZXRUZXhQYXJhbWV0ZXJpKGluIHVuc2lnbmVkIGxvbmcgdGFyZ2V0
LCBpbiB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgV2ViR0xJbnRBcnJheSBnZXRUZXhQ
YXJhbWV0ZXJpdihpbiB1bnNpZ25lZCBsb25nIHRhcmdldCwgaW4gdW5zaWduZWQgbG9uZyBwbmFt
ZSk7Ci0KLSAgICAgICAgZmxvYXQgZ2V0VW5pZm9ybWYoaW4gV2ViR0xQcm9ncmFtIHByb2dyYW0s
IGluIGxvbmcgbG9jYXRpb24pIHJhaXNlcyhET01FeGNlcHRpb24pOwotICAgICAgICBXZWJHTEZs
b2F0QXJyYXkgZ2V0VW5pZm9ybWZ2KGluIFdlYkdMUHJvZ3JhbSBwcm9ncmFtLCBpbiBsb25nIGxv
Y2F0aW9uKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKLSAgICAgICAgbG9uZyBnZXRVbmlmb3JtaShp
biBXZWJHTFByb2dyYW0gcHJvZ3JhbSwgaW4gbG9uZyBsb2NhdGlvbikgcmFpc2VzKERPTUV4Y2Vw
dGlvbik7Ci0gICAgICAgIFdlYkdMSW50QXJyYXkgZ2V0VW5pZm9ybWl2KGluIFdlYkdMUHJvZ3Jh
bSBwcm9ncmFtLCBpbiBsb25nIGxvY2F0aW9uKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAg
ICAgLy8gYW55IGdldFRleFBhcmFtZXRlcihpbiB1bnNpZ25lZCBsb25nIHRhcmdldCwgaW4gdW5z
aWduZWQgbG9uZyBwbmFtZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIFtDdXN0b21d
IHZvaWQgZ2V0VGV4UGFyYW1ldGVyKCk7CisKKyAgICAgICAgLy8gYW55IGdldFVuaWZvcm0oaW4g
V2ViR0xQcm9ncmFtIHByb2dyYW0sIGluIGxvbmcgbG9jYXRpb24pIHJhaXNlcyhET01FeGNlcHRp
b24pOworICAgICAgICBbQ3VzdG9tXSB2b2lkIGdldFVuaWZvcm0oKTsKICAgICAgICAgCiAgICAg
ICAgIGxvbmcgZ2V0VW5pZm9ybUxvY2F0aW9uKGluIFdlYkdMUHJvZ3JhbSBwcm9ncmFtLCBpbiBE
T01TdHJpbmcgbmFtZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKLSAgICAgICAgZmxvYXQgZ2V0
VmVydGV4QXR0cmliZihpbiB1bnNpZ25lZCBsb25nIGluZGV4LCBpbiB1bnNpZ25lZCBsb25nIHBu
YW1lKTsKLSAgICAgICAgV2ViR0xGbG9hdEFycmF5IGdldFZlcnRleEF0dHJpYmZ2KGluIHVuc2ln
bmVkIGxvbmcgaW5kZXgsIGluIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBsb25nIGdl
dFZlcnRleEF0dHJpYmkoaW4gdW5zaWduZWQgbG9uZyBpbmRleCwgaW4gdW5zaWduZWQgbG9uZyBw
bmFtZSk7Ci0gICAgICAgIFdlYkdMSW50QXJyYXkgZ2V0VmVydGV4QXR0cmliaXYoaW4gdW5zaWdu
ZWQgbG9uZyBpbmRleCwgaW4gdW5zaWduZWQgbG9uZyBwbmFtZSk7CisgICAgICAgIC8vIGFueSBn
ZXRWZXJ0ZXhBdHRyaWIoaW4gdW5zaWduZWQgbG9uZyBpbmRleCwgaW4gdW5zaWduZWQgbG9uZyBw
bmFtZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIFtDdXN0b21dIHZvaWQgZ2V0VmVy
dGV4QXR0cmliKCk7CiAKICAgICAgICAgbG9uZyBnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoaW4gdW5z
aWduZWQgbG9uZyBpbmRleCwgaW4gdW5zaWduZWQgbG9uZyBwbmFtZSk7CiAKSW5kZXg6IFdlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5jcHAJKHJldmlzaW9uIDUxMjc4KQorKysgV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFRleHR1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNywx
MSBAQCBQYXNzUmVmUHRyPFdlYkdMVGV4dHVyZT4gV2ViR0xUZXh0dXJlOjpjCiAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBXZWJHTFRleHR1cmUoY3R4KSk7CiB9CiAKK1Bhc3NSZWZQdHI8V2ViR0xU
ZXh0dXJlPiBXZWJHTFRleHR1cmU6OmNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGN0eCwg
UGxhdGZvcm0zRE9iamVjdCBvYmopCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHTFRl
eHR1cmUoY3R4LCBvYmopKTsKK30KKwogV2ViR0xUZXh0dXJlOjpXZWJHTFRleHR1cmUoV2ViR0xS
ZW5kZXJpbmdDb250ZXh0KiBjdHgpCiAgICAgOiBDYW52YXNPYmplY3QoY3R4KQogICAgICwgY3Vi
ZU1hcFJXcmFwTW9kZUluaXRpYWxpemVkKGZhbHNlKQpAQCAtNDQsNiArNDksMTMgQEAgV2ViR0xU
ZXh0dXJlOjpXZWJHTFRleHR1cmUoV2ViR0xSZW5kZXJpbgogICAgIHNldE9iamVjdChjb250ZXh0
KCktPmdyYXBoaWNzQ29udGV4dDNEKCktPmNyZWF0ZVRleHR1cmUoKSk7CiB9CiAKK1dlYkdMVGV4
dHVyZTo6V2ViR0xUZXh0dXJlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY3R4LCBQbGF0Zm9ybTNE
T2JqZWN0IG9iaikKKyAgICA6IENhbnZhc09iamVjdChjdHgpCisgICAgLCBjdWJlTWFwUldyYXBN
b2RlSW5pdGlhbGl6ZWQoZmFsc2UpCit7CisgICAgc2V0T2JqZWN0KG9iaiwgZmFsc2UpOworfQor
CiB2b2lkIFdlYkdMVGV4dHVyZTo6X2RlbGV0ZU9iamVjdChQbGF0Zm9ybTNET2JqZWN0IG9iamVj
dCkKIHsKICAgICBjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dDNEKCktPmRlbGV0ZVRleHR1cmUo
b2JqZWN0KTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRleHR1cmUuaAkocmV2aXNpb24gNTEy
NzgpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zOSw2ICszOSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIAogICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJHTFRleHR1cmU+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0Nv
bnRleHQqKTsKICAgICAKKyAgICAgICAgLy8gRm9yIHF1ZXJ5aW5nIHByZXZpb3VzbHkgY3JlYXRl
ZCBvYmplY3RzIHZpYSBlLmcuIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcgorICAg
ICAgICAvLyBGSVhNRTogc2hvdWxkIGNvbnNpZGVyIGNhbm9uaWNhbGl6aW5nIHRoZXNlIG9iamVj
dHMKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViR0xUZXh0dXJlPiBjcmVhdGUoV2ViR0xS
ZW5kZXJpbmdDb250ZXh0KiwgUGxhdGZvcm0zRE9iamVjdCk7CisKICAgICAgICAgYm9vbCBpc0N1
YmVNYXBSV3JhcE1vZGVJbml0aWFsaXplZCgpIHsKICAgICAgICAgICAgIHJldHVybiBjdWJlTWFw
UldyYXBNb2RlSW5pdGlhbGl6ZWQ7CiAgICAgICAgIH0KQEAgLTQ5LDYgKzUzLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBXZWJHTFRleHR1cmUoV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Kik7CisgICAgICAgIFdlYkdMVGV4dHVyZShXZWJHTFJlbmRlcmlu
Z0NvbnRleHQqLCBQbGF0Zm9ybTNET2JqZWN0KTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgX2Rl
bGV0ZU9iamVjdChQbGF0Zm9ybTNET2JqZWN0KTsKIApJbmRleDogV2ViQ29yZS9tYW51YWwtdGVz
dHMvd2ViZ2wvcmVzb3VyY2VzL3V0aWxzM2QuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9tYW51
YWwtdGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3V0aWxzM2QuanMJKHJldmlzaW9uIDUxMjc4KQorKysg
V2ViQ29yZS9tYW51YWwtdGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3V0aWxzM2QuanMJKHdvcmtpbmcg
Y29weSkKQEAgLTQzLDcgKzQzLDcgQEAgZnVuY3Rpb24gaW5pdFdlYkdMKGNhbnZhc05hbWUsIHZz
aGFkZXIsIAogICAgIGdsLmxpbmtQcm9ncmFtKGdsLnByb2dyYW0pOwogCiAgICAgLy8gQ2hlY2sg
dGhlIGxpbmsgc3RhdHVzCi0gICAgdmFyIGxpbmtlZCA9IGdsLmdldFByb2dyYW1pKGdsLnByb2dy
YW0sIGdsLkxJTktfU1RBVFVTKTsKKyAgICB2YXIgbGlua2VkID0gZ2wuZ2V0UHJvZ3JhbVBhcmFt
ZXRlcihnbC5wcm9ncmFtLCBnbC5MSU5LX1NUQVRVUyk7CiAgICAgaWYgKCFsaW5rZWQpIHsKICAg
ICAgICAgLy8gc29tZXRoaW5nIHdlbnQgd3Jvbmcgd2l0aCB0aGUgbGluawogICAgICAgICB2YXIg
ZXJyb3IgPSBnbC5nZXRQcm9ncmFtSW5mb0xvZyAoZ2wucHJvZ3JhbSk7CkBAIC0xMDUsNyArMTA1
LDcgQEAgZnVuY3Rpb24gbG9hZFNoYWRlcihjdHgsIHNoYWRlcklkKQogICAgIGN0eC5jb21waWxl
U2hhZGVyKHNoYWRlcik7CiAKICAgICAvLyBDaGVjayB0aGUgY29tcGlsZSBzdGF0dXMKLSAgICB2
YXIgY29tcGlsZWQgPSBjdHguZ2V0U2hhZGVyaShzaGFkZXIsIGN0eC5DT01QSUxFX1NUQVRVUyk7
CisgICAgdmFyIGNvbXBpbGVkID0gY3R4LmdldFNoYWRlclBhcmFtZXRlcihzaGFkZXIsIGN0eC5D
T01QSUxFX1NUQVRVUyk7CiAgICAgaWYgKCFjb21waWxlZCkgewogICAgICAgICAvLyBTb21ldGhp
bmcgd2VudCB3cm9uZyBkdXJpbmcgY29tcGlsYXRpb247IGdldCB0aGUgZXJyb3IKICAgICAgICAg
dmFyIGVycm9yID0gY3R4LmdldFNoYWRlckluZm9Mb2coc2hhZGVyKTsKQEAgLTUyOCw0ICs1Mjgs
MyBAQCBGcmFtZXJhdGUucHJvdG90eXBlLnNuYXBzaG90ID0gZnVuY3Rpb24oCiAgICAgICAgIHRo
aXMucmVuZGVyVGltZSA9IG5ld1RpbWU7CiAgICAgfQogfQotCkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCShyZXZpc2lvbiA1MTI3OCkKKysr
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAkod29ya2luZyBj
b3B5KQpAQCAtNzgsNiArNzgsMzEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6
CiAgICAgICAgIGVudW0gU2hhZGVyVHlwZSB7IEZSQUdNRU5UX1NIQURFUiwgVkVSVEVYX1NIQURF
UiB9OwogICAgIAorICAgICAgICBlbnVtIFdlYkdMRW51bVR5cGUgeworICAgICAgICAgICAgREVQ
VEhfQlVGRkVSX0JJVCA9IDB4MDAwMDAxMDAsCisgICAgICAgICAgICBTVEVOQ0lMX0JVRkZFUl9C
SVQgPSAweDAwMDAwNDAwLAorICAgICAgICAgICAgQ09MT1JfQlVGRkVSX0JJVCA9IDB4MDAwMDQw
MDAsCisgICAgICAgICAgICBQT0lOVFMgPSAweDAwMDAsCisgICAgICAgICAgICBMSU5FUyA9IDB4
MDAwMSwKKyAgICAgICAgICAgIExJTkVfTE9PUCA9IDB4MDAwMiwKKyAgICAgICAgICAgIExJTkVf
U1RSSVAgPSAweDAwMDMsCisgICAgICAgICAgICBUUklBTkdMRVMgPSAweDAwMDQsCisgICAgICAg
ICAgICBUUklBTkdMRV9TVFJJUCA9IDB4MDAwNSwKKyAgICAgICAgICAgIFRSSUFOR0xFX0ZBTiA9
IDB4MDAwNiwKKyAgICAgICAgICAgIFpFUk8gPSAwLAorICAgICAgICAgICAgT05FID0gMSwKKyAg
ICAgICAgICAgIFNSQ19DT0xPUiA9IDB4MDMwMCwKKyAgICAgICAgICAgIE9ORV9NSU5VU19TUkNf
Q09MT1IgPSAweDAzMDEsCisgICAgICAgICAgICBTUkNfQUxQSEEgPSAweDAzMDIsCisgICAgICAg
ICAgICBPTkVfTUlOVVNfU1JDX0FMUEhBID0gMHgwMzAzLAorICAgICAgICAgICAgRFNUX0FMUEhB
ID0gMHgwMzA0LAorICAgICAgICAgICAgT05FX01JTlVTX0RTVF9BTFBIQSA9IDB4MDMwNSwKKyAg
ICAgICAgICAgIERTVF9DT0xPUiA9IDB4MDMwNiwKKyAgICAgICAgICAgIE9ORV9NSU5VU19EU1Rf
Q09MT1IgPSAweDAzMDcsCisgICAgICAgICAgICBTUkNfQUxQSEFfU0FUVVJBVEUgPSAweDAzMDgs
CisgICAgICAgICAgICBGVU5DX0FERCA9IDB4ODAwNiwKKyAgICAgICAgICAgIEJMRU5EX0VRVUFU
SU9OID0gMHg4MDA5LAorICAgICAgICAgICAgQkxFTkRfRVFVQVRJT05fUkdCID0gMHg4MDA5LAor
ICAgICAgICAgICAgQkxFTkRfRVFVQVRJT05fQUxQSEEgPSAweDg4M0QsCisgICAgICAgICAgICBG
VU5DX1NVQlRSQUNUID0gMHg4MDBBLAorICAgICAgICAgICAgRlVOQ19SRVZFUlNFX1NVQlRSQUNU
ID0gMHg4MDBCLAorICAgICAgICAgICAgQkxFTkRfRFNUX1JHQiA9IDB4ODBDOCwKKyAgICAgICAg
ICAgIEJMRU5EX1NSQ19SR0IgPSAweDgwQzksCisgICAgICAgICAgICBCTEVORF9EU1RfQUxQSEEg
PSAweDgwQ0EsCisgICAgICAgICAgICBCTEVORF9TUkNfQUxQSEEgPSAweDgwQ0IsCisgICAgICAg
ICAgICBDT05TVEFOVF9DT0xPUiA9IDB4ODAwMSwKKyAgICAgICAgICAgIE9ORV9NSU5VU19DT05T
VEFOVF9DT0xPUiA9IDB4ODAwMiwKKyAgICAgICAgICAgIENPTlNUQU5UX0FMUEhBID0gMHg4MDAz
LAorICAgICAgICAgICAgT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBID0gMHg4MDA0LAorICAgICAg
ICAgICAgQkxFTkRfQ09MT1IgPSAweDgwMDUsCisgICAgICAgICAgICBBUlJBWV9CVUZGRVIgPSAw
eDg4OTIsCisgICAgICAgICAgICBFTEVNRU5UX0FSUkFZX0JVRkZFUiA9IDB4ODg5MywKKyAgICAg
ICAgICAgIEFSUkFZX0JVRkZFUl9CSU5ESU5HID0gMHg4ODk0LAorICAgICAgICAgICAgRUxFTUVO
VF9BUlJBWV9CVUZGRVJfQklORElORyA9IDB4ODg5NSwKKyAgICAgICAgICAgIFNUUkVBTV9EUkFX
ID0gMHg4OEUwLAorICAgICAgICAgICAgU1RBVElDX0RSQVcgPSAweDg4RTQsCisgICAgICAgICAg
ICBEWU5BTUlDX0RSQVcgPSAweDg4RTgsCisgICAgICAgICAgICBCVUZGRVJfU0laRSA9IDB4ODc2
NCwKKyAgICAgICAgICAgIEJVRkZFUl9VU0FHRSA9IDB4ODc2NSwKKyAgICAgICAgICAgIENVUlJF
TlRfVkVSVEVYX0FUVFJJQiA9IDB4ODYyNiwKKyAgICAgICAgICAgIEZST05UID0gMHgwNDA0LAor
ICAgICAgICAgICAgQkFDSyA9IDB4MDQwNSwKKyAgICAgICAgICAgIEZST05UX0FORF9CQUNLID0g
MHgwNDA4LAorICAgICAgICAgICAgVEVYVFVSRV8yRCA9IDB4MERFMSwKKyAgICAgICAgICAgIENV
TExfRkFDRSA9IDB4MEI0NCwKKyAgICAgICAgICAgIEJMRU5EID0gMHgwQkUyLAorICAgICAgICAg
ICAgRElUSEVSID0gMHgwQkQwLAorICAgICAgICAgICAgU1RFTkNJTF9URVNUID0gMHgwQjkwLAor
ICAgICAgICAgICAgREVQVEhfVEVTVCA9IDB4MEI3MSwKKyAgICAgICAgICAgIFNDSVNTT1JfVEVT
VCA9IDB4MEMxMSwKKyAgICAgICAgICAgIFBPTFlHT05fT0ZGU0VUX0ZJTEwgPSAweDgwMzcsCisg
ICAgICAgICAgICBTQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0UgPSAweDgwOUUsCisgICAgICAgICAg
ICBTQU1QTEVfQ09WRVJBR0UgPSAweDgwQTAsCisgICAgICAgICAgICBOT19FUlJPUiA9IDAsCisg
ICAgICAgICAgICBJTlZBTElEX0VOVU0gPSAweDA1MDAsCisgICAgICAgICAgICBJTlZBTElEX1ZB
TFVFID0gMHgwNTAxLAorICAgICAgICAgICAgSU5WQUxJRF9PUEVSQVRJT04gPSAweDA1MDIsCisg
ICAgICAgICAgICBPVVRfT0ZfTUVNT1JZID0gMHgwNTA1LAorICAgICAgICAgICAgQ1cgPSAweDA5
MDAsCisgICAgICAgICAgICBDQ1cgPSAweDA5MDEsCisgICAgICAgICAgICBMSU5FX1dJRFRIID0g
MHgwQjIxLAorICAgICAgICAgICAgQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFID0gMHg4NDZELAor
ICAgICAgICAgICAgQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFID0gMHg4NDZFLAorICAgICAgICAg
ICAgQ1VMTF9GQUNFX01PREUgPSAweDBCNDUsCisgICAgICAgICAgICBGUk9OVF9GQUNFID0gMHgw
QjQ2LAorICAgICAgICAgICAgREVQVEhfUkFOR0UgPSAweDBCNzAsCisgICAgICAgICAgICBERVBU
SF9XUklURU1BU0sgPSAweDBCNzIsCisgICAgICAgICAgICBERVBUSF9DTEVBUl9WQUxVRSA9IDB4
MEI3MywKKyAgICAgICAgICAgIERFUFRIX0ZVTkMgPSAweDBCNzQsCisgICAgICAgICAgICBTVEVO
Q0lMX0NMRUFSX1ZBTFVFID0gMHgwQjkxLAorICAgICAgICAgICAgU1RFTkNJTF9GVU5DID0gMHgw
QjkyLAorICAgICAgICAgICAgU1RFTkNJTF9GQUlMID0gMHgwQjk0LAorICAgICAgICAgICAgU1RF
TkNJTF9QQVNTX0RFUFRIX0ZBSUwgPSAweDBCOTUsCisgICAgICAgICAgICBTVEVOQ0lMX1BBU1Nf
REVQVEhfUEFTUyA9IDB4MEI5NiwKKyAgICAgICAgICAgIFNURU5DSUxfUkVGID0gMHgwQjk3LAor
ICAgICAgICAgICAgU1RFTkNJTF9WQUxVRV9NQVNLID0gMHgwQjkzLAorICAgICAgICAgICAgU1RF
TkNJTF9XUklURU1BU0sgPSAweDBCOTgsCisgICAgICAgICAgICBTVEVOQ0lMX0JBQ0tfRlVOQyA9
IDB4ODgwMCwKKyAgICAgICAgICAgIFNURU5DSUxfQkFDS19GQUlMID0gMHg4ODAxLAorICAgICAg
ICAgICAgU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfRkFJTCA9IDB4ODgwMiwKKyAgICAgICAgICAg
IFNURU5DSUxfQkFDS19QQVNTX0RFUFRIX1BBU1MgPSAweDg4MDMsCisgICAgICAgICAgICBTVEVO
Q0lMX0JBQ0tfUkVGID0gMHg4Q0EzLAorICAgICAgICAgICAgU1RFTkNJTF9CQUNLX1ZBTFVFX01B
U0sgPSAweDhDQTQsCisgICAgICAgICAgICBTVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLID0gMHg4Q0E1
LAorICAgICAgICAgICAgVklFV1BPUlQgPSAweDBCQTIsCisgICAgICAgICAgICBTQ0lTU09SX0JP
WCA9IDB4MEMxMCwKKyAgICAgICAgICAgIENPTE9SX0NMRUFSX1ZBTFVFID0gMHgwQzIyLAorICAg
ICAgICAgICAgQ09MT1JfV1JJVEVNQVNLID0gMHgwQzIzLAorICAgICAgICAgICAgVU5QQUNLX0FM
SUdOTUVOVCA9IDB4MENGNSwKKyAgICAgICAgICAgIFBBQ0tfQUxJR05NRU5UID0gMHgwRDA1LAor
ICAgICAgICAgICAgTUFYX1RFWFRVUkVfU0laRSA9IDB4MEQzMywKKyAgICAgICAgICAgIE1BWF9W
SUVXUE9SVF9ESU1TID0gMHgwRDNBLAorICAgICAgICAgICAgU1VCUElYRUxfQklUUyA9IDB4MEQ1
MCwKKyAgICAgICAgICAgIFJFRF9CSVRTID0gMHgwRDUyLAorICAgICAgICAgICAgR1JFRU5fQklU
UyA9IDB4MEQ1MywKKyAgICAgICAgICAgIEJMVUVfQklUUyA9IDB4MEQ1NCwKKyAgICAgICAgICAg
IEFMUEhBX0JJVFMgPSAweDBENTUsCisgICAgICAgICAgICBERVBUSF9CSVRTID0gMHgwRDU2LAor
ICAgICAgICAgICAgU1RFTkNJTF9CSVRTID0gMHgwRDU3LAorICAgICAgICAgICAgUE9MWUdPTl9P
RkZTRVRfVU5JVFMgPSAweDJBMDAsCisgICAgICAgICAgICBQT0xZR09OX09GRlNFVF9GQUNUT1Ig
PSAweDgwMzgsCisgICAgICAgICAgICBURVhUVVJFX0JJTkRJTkdfMkQgPSAweDgwNjksCisgICAg
ICAgICAgICBTQU1QTEVfQlVGRkVSUyA9IDB4ODBBOCwKKyAgICAgICAgICAgIFNBTVBMRVMgPSAw
eDgwQTksCisgICAgICAgICAgICBTQU1QTEVfQ09WRVJBR0VfVkFMVUUgPSAweDgwQUEsCisgICAg
ICAgICAgICBTQU1QTEVfQ09WRVJBR0VfSU5WRVJUID0gMHg4MEFCLAorICAgICAgICAgICAgTlVN
X0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTID0gMHg4NkEyLAorICAgICAgICAgICAgQ09NUFJF
U1NFRF9URVhUVVJFX0ZPUk1BVFMgPSAweDg2QTMsCisgICAgICAgICAgICBET05UX0NBUkUgPSAw
eDExMDAsCisgICAgICAgICAgICBGQVNURVNUID0gMHgxMTAxLAorICAgICAgICAgICAgTklDRVNU
ID0gMHgxMTAyLAorICAgICAgICAgICAgR0VORVJBVEVfTUlQTUFQX0hJTlQgPSAweDgxOTIsCisg
ICAgICAgICAgICBCWVRFID0gMHgxNDAwLAorICAgICAgICAgICAgVU5TSUdORURfQllURSA9IDB4
MTQwMSwKKyAgICAgICAgICAgIFNIT1JUID0gMHgxNDAyLAorICAgICAgICAgICAgVU5TSUdORURf
U0hPUlQgPSAweDE0MDMsCisgICAgICAgICAgICBJTlQgPSAweDE0MDQsCisgICAgICAgICAgICBV
TlNJR05FRF9JTlQgPSAweDE0MDUsCisgICAgICAgICAgICBGTE9BVCA9IDB4MTQwNiwKKyAgICAg
ICAgICAgIEZJWEVEID0gMHgxNDBDLAorICAgICAgICAgICAgREVQVEhfQ09NUE9ORU5UID0gMHgx
OTAyLAorICAgICAgICAgICAgQUxQSEEgPSAweDE5MDYsCisgICAgICAgICAgICBSR0IgPSAweDE5
MDcsCisgICAgICAgICAgICBSR0JBID0gMHgxOTA4LAorICAgICAgICAgICAgTFVNSU5BTkNFID0g
MHgxOTA5LAorICAgICAgICAgICAgTFVNSU5BTkNFX0FMUEhBID0gMHgxOTBBLAorICAgICAgICAg
ICAgVU5TSUdORURfU0hPUlRfNF80XzRfNCA9IDB4ODAzMywKKyAgICAgICAgICAgIFVOU0lHTkVE
X1NIT1JUXzVfNV81XzEgPSAweDgwMzQsCisgICAgICAgICAgICBVTlNJR05FRF9TSE9SVF81XzZf
NSA9IDB4ODM2MywKKyAgICAgICAgICAgIC8vIEZJWE1FOiB1bmNvbW1lbnQgd2hlbiBTaGFkZXJU
eXBlIGVudW0gaXMgcmVtb3ZlZAorICAgICAgICAgICAgLy8gRlJBR01FTlRfU0hBREVSID0gMHg4
QjMwLAorICAgICAgICAgICAgLy8gVkVSVEVYX1NIQURFUiA9IDB4OEIzMSwKKyAgICAgICAgICAg
IE1BWF9WRVJURVhfQVRUUklCUyA9IDB4ODg2OSwKKyAgICAgICAgICAgIE1BWF9WRVJURVhfVU5J
Rk9STV9WRUNUT1JTID0gMHg4REZCLAorICAgICAgICAgICAgTUFYX1ZBUllJTkdfVkVDVE9SUyA9
IDB4OERGQywKKyAgICAgICAgICAgIE1BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTID0g
MHg4QjRELAorICAgICAgICAgICAgTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTID0gMHg4
QjRDLAorICAgICAgICAgICAgTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMgPSAweDg4NzIsCisgICAg
ICAgICAgICBNQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTID0gMHg4REZELAorICAgICAgICAg
ICAgU0hBREVSX1RZUEUgPSAweDhCNEYsCisgICAgICAgICAgICBERUxFVEVfU1RBVFVTID0gMHg4
QjgwLAorICAgICAgICAgICAgTElOS19TVEFUVVMgPSAweDhCODIsCisgICAgICAgICAgICBWQUxJ
REFURV9TVEFUVVMgPSAweDhCODMsCisgICAgICAgICAgICBBVFRBQ0hFRF9TSEFERVJTID0gMHg4
Qjg1LAorICAgICAgICAgICAgQUNUSVZFX1VOSUZPUk1TID0gMHg4Qjg2LAorICAgICAgICAgICAg
QUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCA9IDB4OEI4NywKKyAgICAgICAgICAgIEFDVElWRV9B
VFRSSUJVVEVTID0gMHg4Qjg5LAorICAgICAgICAgICAgQUNUSVZFX0FUVFJJQlVURV9NQVhfTEVO
R1RIID0gMHg4QjhBLAorICAgICAgICAgICAgU0hBRElOR19MQU5HVUFHRV9WRVJTSU9OID0gMHg4
QjhDLAorICAgICAgICAgICAgQ1VSUkVOVF9QUk9HUkFNID0gMHg4QjhELAorICAgICAgICAgICAg
TkVWRVIgPSAweDAyMDAsCisgICAgICAgICAgICBMRVNTID0gMHgwMjAxLAorICAgICAgICAgICAg
RVFVQUwgPSAweDAyMDIsCisgICAgICAgICAgICBMRVFVQUwgPSAweDAyMDMsCisgICAgICAgICAg
ICBHUkVBVEVSID0gMHgwMjA0LAorICAgICAgICAgICAgTk9URVFVQUwgPSAweDAyMDUsCisgICAg
ICAgICAgICBHRVFVQUwgPSAweDAyMDYsCisgICAgICAgICAgICBBTFdBWVMgPSAweDAyMDcsCisg
ICAgICAgICAgICBLRUVQID0gMHgxRTAwLAorICAgICAgICAgICAgUkVQTEFDRSA9IDB4MUUwMSwK
KyAgICAgICAgICAgIElOQ1IgPSAweDFFMDIsCisgICAgICAgICAgICBERUNSID0gMHgxRTAzLAor
ICAgICAgICAgICAgSU5WRVJUID0gMHgxNTBBLAorICAgICAgICAgICAgSU5DUl9XUkFQID0gMHg4
NTA3LAorICAgICAgICAgICAgREVDUl9XUkFQID0gMHg4NTA4LAorICAgICAgICAgICAgVkVORE9S
ID0gMHgxRjAwLAorICAgICAgICAgICAgUkVOREVSRVIgPSAweDFGMDEsCisgICAgICAgICAgICBW
RVJTSU9OID0gMHgxRjAyLAorICAgICAgICAgICAgRVhURU5TSU9OUyA9IDB4MUYwMywKKyAgICAg
ICAgICAgIE5FQVJFU1QgPSAweDI2MDAsCisgICAgICAgICAgICBMSU5FQVIgPSAweDI2MDEsCisg
ICAgICAgICAgICBORUFSRVNUX01JUE1BUF9ORUFSRVNUID0gMHgyNzAwLAorICAgICAgICAgICAg
TElORUFSX01JUE1BUF9ORUFSRVNUID0gMHgyNzAxLAorICAgICAgICAgICAgTkVBUkVTVF9NSVBN
QVBfTElORUFSID0gMHgyNzAyLAorICAgICAgICAgICAgTElORUFSX01JUE1BUF9MSU5FQVIgPSAw
eDI3MDMsCisgICAgICAgICAgICBURVhUVVJFX01BR19GSUxURVIgPSAweDI4MDAsCisgICAgICAg
ICAgICBURVhUVVJFX01JTl9GSUxURVIgPSAweDI4MDEsCisgICAgICAgICAgICBURVhUVVJFX1dS
QVBfUyA9IDB4MjgwMiwKKyAgICAgICAgICAgIFRFWFRVUkVfV1JBUF9UID0gMHgyODAzLAorICAg
ICAgICAgICAgVEVYVFVSRSA9IDB4MTcwMiwKKyAgICAgICAgICAgIFRFWFRVUkVfQ1VCRV9NQVAg
PSAweDg1MTMsCisgICAgICAgICAgICBURVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVAgPSAweDg1MTQs
CisgICAgICAgICAgICBURVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ggPSAweDg1MTUsCisgICAg
ICAgICAgICBURVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1ggPSAweDg1MTYsCisgICAgICAgICAg
ICBURVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1kgPSAweDg1MTcsCisgICAgICAgICAgICBURVhU
VVJFX0NVQkVfTUFQX05FR0FUSVZFX1kgPSAweDg1MTgsCisgICAgICAgICAgICBURVhUVVJFX0NV
QkVfTUFQX1BPU0lUSVZFX1ogPSAweDg1MTksCisgICAgICAgICAgICBURVhUVVJFX0NVQkVfTUFQ
X05FR0FUSVZFX1ogPSAweDg1MUEsCisgICAgICAgICAgICBNQVhfQ1VCRV9NQVBfVEVYVFVSRV9T
SVpFID0gMHg4NTFDLAorICAgICAgICAgICAgVEVYVFVSRTAgPSAweDg0QzAsCisgICAgICAgICAg
ICBURVhUVVJFMSA9IDB4ODRDMSwKKyAgICAgICAgICAgIFRFWFRVUkUyID0gMHg4NEMyLAorICAg
ICAgICAgICAgVEVYVFVSRTMgPSAweDg0QzMsCisgICAgICAgICAgICBURVhUVVJFNCA9IDB4ODRD
NCwKKyAgICAgICAgICAgIFRFWFRVUkU1ID0gMHg4NEM1LAorICAgICAgICAgICAgVEVYVFVSRTYg
PSAweDg0QzYsCisgICAgICAgICAgICBURVhUVVJFNyA9IDB4ODRDNywKKyAgICAgICAgICAgIFRF
WFRVUkU4ID0gMHg4NEM4LAorICAgICAgICAgICAgVEVYVFVSRTkgPSAweDg0QzksCisgICAgICAg
ICAgICBURVhUVVJFMTAgPSAweDg0Q0EsCisgICAgICAgICAgICBURVhUVVJFMTEgPSAweDg0Q0Is
CisgICAgICAgICAgICBURVhUVVJFMTIgPSAweDg0Q0MsCisgICAgICAgICAgICBURVhUVVJFMTMg
PSAweDg0Q0QsCisgICAgICAgICAgICBURVhUVVJFMTQgPSAweDg0Q0UsCisgICAgICAgICAgICBU
RVhUVVJFMTUgPSAweDg0Q0YsCisgICAgICAgICAgICBURVhUVVJFMTYgPSAweDg0RDAsCisgICAg
ICAgICAgICBURVhUVVJFMTcgPSAweDg0RDEsCisgICAgICAgICAgICBURVhUVVJFMTggPSAweDg0
RDIsCisgICAgICAgICAgICBURVhUVVJFMTkgPSAweDg0RDMsCisgICAgICAgICAgICBURVhUVVJF
MjAgPSAweDg0RDQsCisgICAgICAgICAgICBURVhUVVJFMjEgPSAweDg0RDUsCisgICAgICAgICAg
ICBURVhUVVJFMjIgPSAweDg0RDYsCisgICAgICAgICAgICBURVhUVVJFMjMgPSAweDg0RDcsCisg
ICAgICAgICAgICBURVhUVVJFMjQgPSAweDg0RDgsCisgICAgICAgICAgICBURVhUVVJFMjUgPSAw
eDg0RDksCisgICAgICAgICAgICBURVhUVVJFMjYgPSAweDg0REEsCisgICAgICAgICAgICBURVhU
VVJFMjcgPSAweDg0REIsCisgICAgICAgICAgICBURVhUVVJFMjggPSAweDg0REMsCisgICAgICAg
ICAgICBURVhUVVJFMjkgPSAweDg0REQsCisgICAgICAgICAgICBURVhUVVJFMzAgPSAweDg0REUs
CisgICAgICAgICAgICBURVhUVVJFMzEgPSAweDg0REYsCisgICAgICAgICAgICBBQ1RJVkVfVEVY
VFVSRSA9IDB4ODRFMCwKKyAgICAgICAgICAgIFJFUEVBVCA9IDB4MjkwMSwKKyAgICAgICAgICAg
IENMQU1QX1RPX0VER0UgPSAweDgxMkYsCisgICAgICAgICAgICBNSVJST1JFRF9SRVBFQVQgPSAw
eDgzNzAsCisgICAgICAgICAgICBGTE9BVF9WRUMyID0gMHg4QjUwLAorICAgICAgICAgICAgRkxP
QVRfVkVDMyA9IDB4OEI1MSwKKyAgICAgICAgICAgIEZMT0FUX1ZFQzQgPSAweDhCNTIsCisgICAg
ICAgICAgICBJTlRfVkVDMiA9IDB4OEI1MywKKyAgICAgICAgICAgIElOVF9WRUMzID0gMHg4QjU0
LAorICAgICAgICAgICAgSU5UX1ZFQzQgPSAweDhCNTUsCisgICAgICAgICAgICBCT09MID0gMHg4
QjU2LAorICAgICAgICAgICAgQk9PTF9WRUMyID0gMHg4QjU3LAorICAgICAgICAgICAgQk9PTF9W
RUMzID0gMHg4QjU4LAorICAgICAgICAgICAgQk9PTF9WRUM0ID0gMHg4QjU5LAorICAgICAgICAg
ICAgRkxPQVRfTUFUMiA9IDB4OEI1QSwKKyAgICAgICAgICAgIEZMT0FUX01BVDMgPSAweDhCNUIs
CisgICAgICAgICAgICBGTE9BVF9NQVQ0ID0gMHg4QjVDLAorICAgICAgICAgICAgU0FNUExFUl8y
RCA9IDB4OEI1RSwKKyAgICAgICAgICAgIFNBTVBMRVJfQ1VCRSA9IDB4OEI2MCwKKyAgICAgICAg
ICAgIFZFUlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRCA9IDB4ODYyMiwKKyAgICAgICAgICAgIFZF
UlRFWF9BVFRSSUJfQVJSQVlfU0laRSA9IDB4ODYyMywKKyAgICAgICAgICAgIFZFUlRFWF9BVFRS
SUJfQVJSQVlfU1RSSURFID0gMHg4NjI0LAorICAgICAgICAgICAgVkVSVEVYX0FUVFJJQl9BUlJB
WV9UWVBFID0gMHg4NjI1LAorICAgICAgICAgICAgVkVSVEVYX0FUVFJJQl9BUlJBWV9OT1JNQUxJ
WkVEID0gMHg4ODZBLAorICAgICAgICAgICAgVkVSVEVYX0FUVFJJQl9BUlJBWV9QT0lOVEVSID0g
MHg4NjQ1LAorICAgICAgICAgICAgVkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElORyA9
IDB4ODg5RiwKKyAgICAgICAgICAgIElNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfVFlQRSA9IDB4
OEI5QSwKKyAgICAgICAgICAgIElNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfRk9STUFUID0gMHg4
QjlCLAorICAgICAgICAgICAgQ09NUElMRV9TVEFUVVMgPSAweDhCODEsCisgICAgICAgICAgICBJ
TkZPX0xPR19MRU5HVEggPSAweDhCODQsCisgICAgICAgICAgICBTSEFERVJfU09VUkNFX0xFTkdU
SCA9IDB4OEI4OCwKKyAgICAgICAgICAgIFNIQURFUl9DT01QSUxFUiA9IDB4OERGQSwKKyAgICAg
ICAgICAgIFNIQURFUl9CSU5BUllfRk9STUFUUyA9IDB4OERGOCwKKyAgICAgICAgICAgIE5VTV9T
SEFERVJfQklOQVJZX0ZPUk1BVFMgPSAweDhERjksCisgICAgICAgICAgICBMT1dfRkxPQVQgPSAw
eDhERjAsCisgICAgICAgICAgICBNRURJVU1fRkxPQVQgPSAweDhERjEsCisgICAgICAgICAgICBI
SUdIX0ZMT0FUID0gMHg4REYyLAorICAgICAgICAgICAgTE9XX0lOVCA9IDB4OERGMywKKyAgICAg
ICAgICAgIE1FRElVTV9JTlQgPSAweDhERjQsCisgICAgICAgICAgICBISUdIX0lOVCA9IDB4OERG
NSwKKyAgICAgICAgICAgIEZSQU1FQlVGRkVSID0gMHg4RDQwLAorICAgICAgICAgICAgUkVOREVS
QlVGRkVSID0gMHg4RDQxLAorICAgICAgICAgICAgUkdCQTQgPSAweDgwNTYsCisgICAgICAgICAg
ICBSR0I1X0ExID0gMHg4MDU3LAorICAgICAgICAgICAgUkdCNTY1ID0gMHg4RDYyLAorICAgICAg
ICAgICAgREVQVEhfQ09NUE9ORU5UMTYgPSAweDgxQTUsCisgICAgICAgICAgICBTVEVOQ0lMX0lO
REVYID0gMHgxOTAxLAorICAgICAgICAgICAgU1RFTkNJTF9JTkRFWDggPSAweDhENDgsCisgICAg
ICAgICAgICBSRU5ERVJCVUZGRVJfV0lEVEggPSAweDhENDIsCisgICAgICAgICAgICBSRU5ERVJC
VUZGRVJfSEVJR0hUID0gMHg4RDQzLAorICAgICAgICAgICAgUkVOREVSQlVGRkVSX0lOVEVSTkFM
X0ZPUk1BVCA9IDB4OEQ0NCwKKyAgICAgICAgICAgIFJFTkRFUkJVRkZFUl9SRURfU0laRSA9IDB4
OEQ1MCwKKyAgICAgICAgICAgIFJFTkRFUkJVRkZFUl9HUkVFTl9TSVpFID0gMHg4RDUxLAorICAg
ICAgICAgICAgUkVOREVSQlVGRkVSX0JMVUVfU0laRSA9IDB4OEQ1MiwKKyAgICAgICAgICAgIFJF
TkRFUkJVRkZFUl9BTFBIQV9TSVpFID0gMHg4RDUzLAorICAgICAgICAgICAgUkVOREVSQlVGRkVS
X0RFUFRIX1NJWkUgPSAweDhENTQsCisgICAgICAgICAgICBSRU5ERVJCVUZGRVJfU1RFTkNJTF9T
SVpFID0gMHg4RDU1LAorICAgICAgICAgICAgRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1Rf
VFlQRSA9IDB4OENEMCwKKyAgICAgICAgICAgIEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNU
X05BTUUgPSAweDhDRDEsCisgICAgICAgICAgICBGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRV
UkVfTEVWRUwgPSAweDhDRDIsCisgICAgICAgICAgICBGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RF
WFRVUkVfQ1VCRV9NQVBfRkFDRSA9IDB4OENEMywKKyAgICAgICAgICAgIENPTE9SX0FUVEFDSE1F
TlQwID0gMHg4Q0UwLAorICAgICAgICAgICAgREVQVEhfQVRUQUNITUVOVCA9IDB4OEQwMCwKKyAg
ICAgICAgICAgIFNURU5DSUxfQVRUQUNITUVOVCA9IDB4OEQyMCwKKyAgICAgICAgICAgIE5PTkUg
PSAwLAorICAgICAgICAgICAgRlJBTUVCVUZGRVJfQ09NUExFVEUgPSAweDhDRDUsCisgICAgICAg
ICAgICBGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQgPSAweDhDRDYsCisgICAgICAg
ICAgICBGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01JU1NJTkdfQVRUQUNITUVOVCA9IDB4OENENywK
KyAgICAgICAgICAgIEZSQU1FQlVGRkVSX0lOQ09NUExFVEVfRElNRU5TSU9OUyA9IDB4OENEOSwK
KyAgICAgICAgICAgIEZSQU1FQlVGRkVSX1VOU1VQUE9SVEVEID0gMHg4Q0RELAorICAgICAgICAg
ICAgRlJBTUVCVUZGRVJfQklORElORyA9IDB4OENBNiwKKyAgICAgICAgICAgIFJFTkRFUkJVRkZF
Ul9CSU5ESU5HID0gMHg4Q0E3LAorICAgICAgICAgICAgTUFYX1JFTkRFUkJVRkZFUl9TSVpFID0g
MHg4NEU4LAorICAgICAgICAgICAgSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04gPSAweDA1
MDYKKyAgICAgICAgfTsKKwogICAgICAgICBzdGF0aWMgUGFzc093blB0cjxHcmFwaGljc0NvbnRl
eHQzRD4gY3JlYXRlKCk7CiAgICAgICAgIHZpcnR1YWwgfkdyYXBoaWNzQ29udGV4dDNEKCk7CiAK
QEAgLTE1MiwyNiArNDU2LDI1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBpbnQg
IGdldEF0dHJpYkxvY2F0aW9uKFdlYkdMUHJvZ3JhbSosIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAK
LSAgICAgICAgYm9vbCBnZXRCb29sZWFuKHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBQ
YXNzUmVmUHRyPFdlYkdMVW5zaWduZWRCeXRlQXJyYXk+IGdldEJvb2xlYW52KHVuc2lnbmVkIGxv
bmcgcG5hbWUpOwotICAgICAgICBpbnQgZ2V0QnVmZmVyUGFyYW1ldGVyaSh1bnNpZ25lZCBsb25n
IHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFBhc3NSZWZQdHI8V2ViR0xJ
bnRBcnJheT4gZ2V0QnVmZmVyUGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2ln
bmVkIGxvbmcgcG5hbWUpOworICAgICAgICB2b2lkIGdldEJvb2xlYW52KHVuc2lnbmVkIGxvbmcg
cG5hbWUsIHVuc2lnbmVkIGNoYXIqIHZhbHVlKTsKKworICAgICAgICB2b2lkIGdldEJ1ZmZlclBh
cmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQq
IHZhbHVlKTsKIAogICAgICAgICB1bnNpZ25lZCBsb25nIGdldEVycm9yKCk7CiAKLSAgICAgICAg
ZmxvYXQgZ2V0RmxvYXQodW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFBhc3NSZWZQdHI8
V2ViR0xGbG9hdEFycmF5PiBnZXRGbG9hdHYodW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAg
IGludCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKHVuc2lnbmVkIGxvbmcgdGFy
Z2V0LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAg
ICAgICBQYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQs
IHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBpbnQgZ2V0SW50ZWdlcih1bnNpZ25lZCBs
b25nIHBuYW1lKTsKLSAgICAgICAgUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBnZXRJbnRlZ2Vy
dih1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgaW50IGdldFByb2dyYW1pKFdlYkdMUHJv
Z3JhbSosIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBQYXNzUmVmUHRyPFdlYkdMSW50
QXJyYXk+IGdldFByb2dyYW1pdihXZWJHTFByb2dyYW0qLCB1bnNpZ25lZCBsb25nIHBuYW1lKTsK
KyAgICAgICAgdm9pZCBnZXRGbG9hdHYodW5zaWduZWQgbG9uZyBwbmFtZSwgZmxvYXQqIHZhbHVl
KTsKKworICAgICAgICB2b2lkIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHVu
c2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIHVuc2lnbmVkIGxv
bmcgcG5hbWUsIGludCogdmFsdWUpOworCisgICAgICAgIHZvaWQgZ2V0SW50ZWdlcnYodW5zaWdu
ZWQgbG9uZyBwbmFtZSwgaW50KiB2YWx1ZSk7CisKKyAgICAgICAgdm9pZCBnZXRQcm9ncmFtaXYo
V2ViR0xQcm9ncmFtKiBwcm9ncmFtLCB1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKTsK
KwogICAgICAgICBTdHJpbmcgZ2V0UHJvZ3JhbUluZm9Mb2coV2ViR0xQcm9ncmFtKik7Ci0gICAg
ICAgIGludCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1
bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBn
ZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQg
bG9uZyBwbmFtZSk7Ci0gICAgICAgIGludCBnZXRTaGFkZXJpKFdlYkdMU2hhZGVyKiwgdW5zaWdu
ZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gZ2V0U2hh
ZGVyaXYoV2ViR0xTaGFkZXIqLCB1bnNpZ25lZCBsb25nIHBuYW1lKTsKKworICAgICAgICB2b2lk
IGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25l
ZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKTsKKworICAgICAgICB2b2lkIGdldFNoYWRlcml2KFdl
YkdMU2hhZGVyKiwgdW5zaWduZWQgbG9uZyBwbmFtZSwgaW50KiB2YWx1ZSk7CiAKICAgICAgICAg
U3RyaW5nIGdldFNoYWRlckluZm9Mb2coV2ViR0xTaGFkZXIqKTsKIApAQCAtMTgwLDI0ICs0ODMs
MTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIFN0cmluZyBnZXRTaGFkZXJTb3Vy
Y2UoV2ViR0xTaGFkZXIqKTsKICAgICAgICAgU3RyaW5nIGdldFN0cmluZyh1bnNpZ25lZCBsb25n
IG5hbWUpOwotICAgICAgICAKLSAgICAgICAgZmxvYXQgZ2V0VGV4UGFyYW1ldGVyZih1bnNpZ25l
ZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFBhc3NSZWZQdHI8
V2ViR0xGbG9hdEFycmF5PiBnZXRUZXhQYXJhbWV0ZXJmdih1bnNpZ25lZCBsb25nIHRhcmdldCwg
dW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIGludCBnZXRUZXhQYXJhbWV0ZXJpKHVuc2ln
bmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgUGFzc1JlZlB0
cjxXZWJHTEludEFycmF5PiBnZXRUZXhQYXJhbWV0ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdldCwg
dW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0KLSAgICAgICAgZmxvYXQgZ2V0VW5pZm9ybWYoV2ViR0xQ
cm9ncmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uKTsKLSAgICAgICAgUGFzc1JlZlB0cjxXZWJH
TEZsb2F0QXJyYXk+IGdldFVuaWZvcm1mdihXZWJHTFByb2dyYW0qIHByb2dyYW0sIGxvbmcgbG9j
YXRpb24pOwotICAgICAgICBpbnQgZ2V0VW5pZm9ybWkoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBs
b25nIGxvY2F0aW9uKTsKLSAgICAgICAgUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBnZXRVbmlm
b3JtaXYoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uKTsKKworICAgICAgICB2
b2lkIGdldFRleFBhcmFtZXRlcmZ2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25n
IHBuYW1lLCBmbG9hdCogdmFsdWUpOworICAgICAgICB2b2lkIGdldFRleFBhcmFtZXRlcml2KHVu
c2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKTsKKwor
ICAgICAgICB2b2lkIGdldFVuaWZvcm1mdihXZWJHTFByb2dyYW0qIHByb2dyYW0sIGxvbmcgbG9j
YXRpb24sIGZsb2F0KiB2YWx1ZSk7CisgICAgICAgIHZvaWQgZ2V0VW5pZm9ybWl2KFdlYkdMUHJv
Z3JhbSogcHJvZ3JhbSwgbG9uZyBsb2NhdGlvbiwgaW50KiB2YWx1ZSk7CiAKICAgICAgICAgbG9u
ZyBnZXRVbmlmb3JtTG9jYXRpb24oV2ViR0xQcm9ncmFtKiwgY29uc3QgU3RyaW5nJiBuYW1lKTsK
IAotICAgICAgICBmbG9hdCBnZXRWZXJ0ZXhBdHRyaWJmKHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVu
c2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBQYXNzUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4g
Z2V0VmVydGV4QXR0cmliZnYodW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQgbG9uZyBwbmFt
ZSk7Ci0gICAgICAgIGludCBnZXRWZXJ0ZXhBdHRyaWJpKHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVu
c2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBQYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IGdl
dFZlcnRleEF0dHJpYml2KHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUp
OwotICAgICAgICAKKyAgICAgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdih1bnNpZ25lZCBsb25n
IGluZGV4LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBmbG9hdCogdmFsdWUpOworICAgICAgICB2b2lk
IGdldFZlcnRleEF0dHJpYml2KHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5h
bWUsIGludCogdmFsdWUpOworCiAgICAgICAgIGxvbmcgZ2V0VmVydGV4QXR0cmliT2Zmc2V0KHVu
c2lnbmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwogCiAgICAgICAgIHZvaWQg
aGludCh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBtb2RlKTsKQEAgLTMzNyw0
ICs2MzQsMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBHcmFwaGljc0NvbnRleHQzRF9oCi0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5jcHAJKHJldmlz
aW9uIDUxMjc4KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250
ZXh0M0RNYWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzcsNyArMjc3LDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6YmluZEZyYW1lYnVmZmVyKAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
YmluZFJlbmRlcmJ1ZmZlcih1bnNpZ25lZCBsb25nIHRhcmdldCwgV2ViR0xSZW5kZXJidWZmZXIq
IHJlbmRlcmJ1ZmZlcikKIHsKICAgICBlbnN1cmVDb250ZXh0KG1fY29udGV4dE9iaik7Ci0gICAg
OjpnbEJpbmRCdWZmZXIodGFyZ2V0LCByZW5kZXJidWZmZXIgPyAoR0x1aW50KSByZW5kZXJidWZm
ZXItPm9iamVjdCgpIDogMCk7CisgICAgOjpnbEJpbmRSZW5kZXJidWZmZXJFWFQodGFyZ2V0LCBy
ZW5kZXJidWZmZXIgPyAoR0x1aW50KSByZW5kZXJidWZmZXItPm9iamVjdCgpIDogMCk7CiB9CiAK
IApAQCAtOTUyLDMyMSArOTUyLDQwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZpZXdwb3J0
KGxvbmcgeCwKICAgICA6OmdsVmlld3BvcnQoc3RhdGljX2Nhc3Q8R0xpbnQ+KHgpLCBzdGF0aWNf
Y2FzdDxHTGludD4oeSksIHN0YXRpY19jYXN0PEdMc2l6ZWk+KHdpZHRoKSwgc3RhdGljX2Nhc3Q8
R0xzaXplaT4oaGVpZ2h0KSk7CiB9CiAKLXN0YXRpYyBpbnQgc2l6ZUZvckdldFBhcmFtKHVuc2ln
bmVkIGxvbmcgcG5hbWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRCb29sZWFudih1bnNp
Z25lZCBsb25nIHBuYW1lLCB1bnNpZ25lZCBjaGFyKiB2YWx1ZSkKIHsKLSAgICBzd2l0Y2gocG5h
bWUpIHsKLSAgICAgICAgY2FzZSBHTF9BQ1RJVkVfVEVYVFVSRTogICAgICAgICAgICAgICAgICBy
ZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9BTElBU0VEX0xJTkVfV0lEVEhfUkFOR0U6ICAgICAg
ICByZXR1cm4gMjsKLSAgICAgICAgY2FzZSBHTF9BTElBU0VEX1BPSU5UX1NJWkVfUkFOR0U6ICAg
ICAgICByZXR1cm4gMjsKLSAgICAgICAgY2FzZSBHTF9BTFBIQV9CSVRTOiAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9BUlJBWV9CVUZGRVJfQklORElORzog
ICAgICAgICAgICByZXR1cm4gMTsgLy8gKCogYWN0dWFsbHkgYSBXZWJHTEJ1ZmZlciopCi0gICAg
ICAgIGNhc2UgR0xfQkxFTkQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0g
ICAgICAgIGNhc2UgR0xfQkxFTkRfQ09MT1I6ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDQ7
Ci0gICAgICAgIGNhc2UgR0xfQkxFTkRfRFNUX0FMUEhBOiAgICAgICAgICAgICAgICAgcmV0dXJu
IDE7Ci0gICAgICAgIGNhc2UgR0xfQkxFTkRfRFNUX1JHQjogICAgICAgICAgICAgICAgICAgcmV0
dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfQkxFTkRfRVFVQVRJT05fQUxQSEE6ICAgICAgICAgICAg
cmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfQkxFTkRfRVFVQVRJT05fUkdCOiAgICAgICAgICAg
ICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfQkxFTkRfU1JDX0FMUEhBOiAgICAgICAgICAg
ICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfQkxFTkRfU1JDX1JHQjogICAgICAgICAg
ICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfQkxVRV9CSVRTOiAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfQ09MT1JfQ0xFQVJfVkFMVUU6
ICAgICAgICAgICAgICAgcmV0dXJuIDQ7Ci0gICAgICAgIGNhc2UgR0xfQ09MT1JfV1JJVEVNQVNL
OiAgICAgICAgICAgICAgICAgcmV0dXJuIDQ7Ci0gICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9U
RVhUVVJFX0ZPUk1BVFM6ICAgICAgcmV0dXJuIEdMX05VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9S
TUFUUzsKLSAgICAgICAgY2FzZSBHTF9DVUxMX0ZBQ0U6ICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9DVUxMX0ZBQ0VfTU9ERTogICAgICAgICAgICAgICAg
ICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9DVVJSRU5UX1BST0dSQU06ICAgICAgICAgICAg
ICAgICByZXR1cm4gMTsgLy8gKCogYWN0dWFsbHkgYSBXZWJHTFByb2dyYW0qKQotICAgICAgICBj
YXNlIEdMX0RFUFRIX0JJVFM6ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAg
ICBjYXNlIEdMX0RFUFRIX0NMRUFSX1ZBTFVFOiAgICAgICAgICAgICAgIHJldHVybiAxOwotICAg
ICAgICBjYXNlIEdMX0RFUFRIX0ZVTkM6ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwot
ICAgICAgICBjYXNlIEdMX0RFUFRIX1JBTkdFOiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAy
OwotICAgICAgICBjYXNlIEdMX0RFUFRIX1RFU1Q6ICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biAxOwotICAgICAgICBjYXNlIEdMX0RFUFRIX1dSSVRFTUFTSzogICAgICAgICAgICAgICAgIHJl
dHVybiAxOwotICAgICAgICBjYXNlIEdMX0RJVEhFUjogICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkc6
ICAgIHJldHVybiAxOyAvLyAoKiBhY3R1YWxseSBhIFdlYkdMQnVmZmVyKikKLSAgICAgICAgY2Fz
ZSBHTF9GUkFNRUJVRkZFUl9CSU5ESU5HX0VYVDogICAgICAgICByZXR1cm4gMTsgLy8gKCogYWN0
dWFsbHkgYSBXZWJHTEZyYW1lYnVmZmVyKikKLSAgICAgICAgY2FzZSBHTF9GUk9OVF9GQUNFOiAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9HRU5FUkFURV9N
SVBNQVBfSElOVDogICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9HUkVFTl9C
SVRTOiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgIC8vY2FzZSBH
TF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX0ZPUk1BVDpyZXR1cm4gMTsKLSAgICAgICAgICAg
IC8vY2FzZSBHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX1RZUEU6ICByZXR1cm4gMTsKLSAg
ICAgICAgY2FzZSBHTF9MSU5FX1dJRFRIOiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsK
LSAgICAgICAgY2FzZSBHTF9NQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUUzpyZXR1cm4g
MTsKLSAgICAgICAgY2FzZSBHTF9NQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFOiAgICAgICByZXR1
cm4gMTsKLSAgICAgICAgICAgIC8vY2FzZSBHTF9NQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JT
OiAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9NQVhfUkVOREVSQlVGRkVSX1NJWkVfRVhU
OiAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9NQVhfVEVYVFVSRV9JTUFHRV9VTklU
UzogICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9NQVhfVEVYVFVSRV9TSVpFOiAg
ICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgIC8vY2FzZSBHTF9NQVhfVkFSWUlO
R19WRUNUT1JTOiAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9NQVhfVkVS
VEVYX0FUVFJJQlM6ICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9NQVhf
VkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFM6ICByZXR1cm4gMTsKLSAgICAgICAgICAgIC8vY2Fz
ZSBHTF9NQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUzogICAgICByZXR1cm4gMTsKLSAgICAgICAg
Y2FzZSBHTF9NQVhfVklFV1BPUlRfRElNUzogICAgICAgICAgICAgICByZXR1cm4gMjsKLSAgICAg
ICAgY2FzZSBHTF9OVU1fQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFM6ICByZXR1cm4gMTsKLSAg
ICAgICAgICAgIC8vY2FzZSBHTF9OVU1fU0hBREVSX0JJTkFSWV9GT1JNQVRTOiAgICAgICByZXR1
cm4gMTsKLSAgICAgICAgY2FzZSBHTF9QQUNLX0FMSUdOTUVOVDogICAgICAgICAgICAgICAgICBy
ZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9QT0xZR09OX09GRlNFVF9GQUNUT1I6ICAgICAgICAg
ICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9QT0xZR09OX09GRlNFVF9GSUxMOiAgICAgICAg
ICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9QT0xZR09OX09GRlNFVF9VTklUUzogICAg
ICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9SRURfQklUUzogICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9SRU5ERVJCVUZGRVJfQklORElO
R19FWFQ6ICAgICAgICByZXR1cm4gMTsgLy8gKCogYWN0dWFsbHkgYSBXZWJHTFJlbmRlcmJ1ZmZl
ciopCi0gICAgICAgIGNhc2UgR0xfU0FNUExFX0JVRkZFUlM6ICAgICAgICAgICAgICAgICAgcmV0
dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU0FNUExFX0NPVkVSQUdFX0lOVkVSVDogICAgICAgICAg
cmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU0FNUExFX0NPVkVSQUdFX1ZBTFVFOiAgICAgICAg
ICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU0FNUExFUzogICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU0NJU1NPUl9CT1g6ICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIDQ7Ci0gICAgICAgIGNhc2UgR0xfU0NJU1NPUl9URVNUOiAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICAvL2Nhc2UgR0xfU0hBREVSX0JJTkFS
WV9GT1JNQVRTOiAgICAgICAgICAgcmV0dXJuIEdMX05VTV9TSEFERVJfQklOQVJZX0ZPUk1BVFM7
Ci0gICAgICAgICAgICAvL2Nhc2UgR0xfU0hBREVSX0NPTVBJTEVSOiAgICAgICAgICAgICAgICAg
cmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJTF9CQUNLX0ZBSUw6ICAgICAgICAgICAg
ICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJTF9CQUNLX0ZVTkM6ICAgICAgICAg
ICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhf
RkFJTDogICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJTF9CQUNLX1BBU1NfREVQ
VEhfUEFTUzogICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJTF9CQUNLX1JFRjog
ICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJTF9CQUNLX1ZB
TFVFX01BU0s6ICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJTF9CQUNL
X1dSSVRFTUFTSzogICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJTF9C
SVRTOiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJ
TF9DTEVBUl9WQUxVRTogICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1RF
TkNJTF9GQUlMOiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xf
U1RFTkNJTF9GVU5DOiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2Ug
R0xfU1RFTkNJTF9QQVNTX0RFUFRIX0ZBSUw6ICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNh
c2UgR0xfU1RFTkNJTF9QQVNTX0RFUFRIX1BBU1M6ICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAg
IGNhc2UgR0xfU1RFTkNJTF9SRUY6ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAg
ICAgIGNhc2UgR0xfU1RFTkNJTF9URVNUOiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0g
ICAgICAgIGNhc2UgR0xfU1RFTkNJTF9WQUxVRV9NQVNLOiAgICAgICAgICAgICAgcmV0dXJuIDE7
Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJTF9XUklURU1BU0s6ICAgICAgICAgICAgICAgcmV0dXJu
IDE7Ci0gICAgICAgIGNhc2UgR0xfU1VCUElYRUxfQklUUzogICAgICAgICAgICAgICAgICAgcmV0
dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfVEVYVFVSRV9CSU5ESU5HXzJEOiAgICAgICAgICAgICAg
cmV0dXJuIDE7IC8vICgqIGFjdHVhbGx5IGEgV2ViR0xUZXh0dXJlKikKLSAgICAgICAgY2FzZSBH
TF9URVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVA6ICAgICAgICByZXR1cm4gMTsgLy8gKCogYWN0dWFs
bHkgYSBXZWJHTFRleHR1cmUqKQotICAgICAgICBjYXNlIEdMX1VOUEFDS19BTElHTk1FTlQ6ICAg
ICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX1ZJRVdQT1JUOiAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiA0OwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gLTE7Ci19
Ci0KLWJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEJvb2xlYW4odW5zaWduZWQgbG9uZyBwbmFt
ZSkKLXsKLSAgICBpbnQgc2l6ZSA9IHNpemVGb3JHZXRQYXJhbShwbmFtZSk7Ci0gICAgaWYgKHNp
emUgPCAxKSAKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCiAgICAgZW5zdXJlQ29udGV4dChtX2Nv
bnRleHRPYmopOwotICAgIAotICAgIGJvb2wgaXNBbGxvY2VkID0gZmFsc2U7Ci0gICAgR0xib29s
ZWFuIGJ1Zls0XTsKLSAgICBHTGJvb2xlYW4qIHBidWYgPSBidWY7Ci0gICAgICAgICAgICAKLSAg
ICBpZiAoc2l6ZSA+IDQpIHsKLSAgICAgICAgcGJ1ZiA9IChHTGJvb2xlYW4qKSBtYWxsb2Moc2l6
ZSAqIHNpemVvZihHTGJvb2xlYW4pKTsKLSAgICAgICAgaXNBbGxvY2VkID0gdHJ1ZTsKLSAgICB9
Ci0gICAgICAgICAgICAKLSAgICA6OmdsR2V0Qm9vbGVhbnYocG5hbWUsIHBidWYpOwotICAgIAot
ICAgIGJvb2wgdmFsdWUgPSBwYnVmWzBdOwotCi0gICAgaWYgKGlzQWxsb2NlZCkKLSAgICAgICAg
ZnJlZShwYnVmKTsKLSAgICAKLSAgICByZXR1cm4gdmFsdWU7CisgICAgOjpnbEdldEJvb2xlYW52
KHBuYW1lLCB2YWx1ZSk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViR0xVbnNpZ25lZEJ5dGVBcnJheT4g
R3JhcGhpY3NDb250ZXh0M0Q6OmdldEJvb2xlYW52KHVuc2lnbmVkIGxvbmcgcG5hbWUpCit2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRCdWZmZXJQYXJhbWV0ZXJpdih1bnNpZ25lZCBsb25nIHRh
cmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgaW50KiB2YWx1ZSkKIHsKLSAgICBpbnQgc2l6ZSA9
IHNpemVGb3JHZXRQYXJhbShwbmFtZSk7Ci0gICAgaWYgKHNpemUgPCAxKSAKLSAgICAgICAgcmV0
dXJuIDA7Ci0gICAgCiAgICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwotICAgIAotICAg
IFJlZlB0cjxXZWJHTFVuc2lnbmVkQnl0ZUFycmF5PiBhcnJheSA9IFdlYkdMVW5zaWduZWRCeXRl
QXJyYXk6OmNyZWF0ZShzaXplKTsKLSAgICBib29sIGlzQWxsb2NlZCA9IGZhbHNlOwotICAgIEdM
Ym9vbGVhbiBidWZbNF07Ci0gICAgR0xib29sZWFuKiBwYnVmID0gYnVmOwotICAgICAgICAgICAg
Ci0gICAgaWYgKHNpemUgPiA0KSB7Ci0gICAgICAgIHBidWYgPSAoR0xib29sZWFuKikgbWFsbG9j
KHNpemUgKiBzaXplb2YoR0xib29sZWFuKSk7Ci0gICAgICAgIGlzQWxsb2NlZCA9IHRydWU7Ci0g
ICAgfQotICAgICAgICAgICAgCi0gICAgOjpnbEdldEJvb2xlYW52KHBuYW1lLCBwYnVmKTsKLSAg
ICAgICAgICAgIAotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBh
cnJheS0+c2V0KGksIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHBidWZbaV0pKTsKLSAgICAg
ICAgICAgIAotICAgIGlmIChpc0FsbG9jZWQpCi0gICAgICAgIGZyZWUocGJ1Zik7Ci0gICAgCi0g
ICAgcmV0dXJuIGFycmF5OworICAgIDo6Z2xHZXRCdWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBu
YW1lLCB2YWx1ZSk7CiB9CiAKLWZsb2F0IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRGbG9hdCh1bnNp
Z25lZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RmxvYXR2KHVuc2ln
bmVkIGxvbmcgcG5hbWUsIGZsb2F0KiB2YWx1ZSkKIHsKLSAgICBpbnQgc2l6ZSA9IHNpemVGb3JH
ZXRQYXJhbShwbmFtZSk7Ci0gICAgaWYgKHNpemUgPCAxKSAKLSAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgCiAgICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwotICAgIAotICAgIGJvb2wgaXNB
bGxvY2VkID0gZmFsc2U7Ci0gICAgR0xmbG9hdCBidWZbNF07Ci0gICAgR0xmbG9hdCogcGJ1ZiA9
IGJ1ZjsKLSAgICAgICAgICAgIAotICAgIGlmIChzaXplID4gNCkgewotICAgICAgICBwYnVmID0g
KEdMZmxvYXQqKSBtYWxsb2Moc2l6ZSAqIHNpemVvZihHTGZsb2F0KSk7Ci0gICAgICAgIGlzQWxs
b2NlZCA9IHRydWU7Ci0gICAgfQotICAgICAgICAgICAgCi0gICAgOjpnbEdldEZsb2F0dihwbmFt
ZSwgcGJ1Zik7Ci0gICAgCi0gICAgZmxvYXQgdmFsdWUgPSBwYnVmWzBdOwotCi0gICAgaWYgKGlz
QWxsb2NlZCkKLSAgICAgICAgZnJlZShwYnVmKTsKLSAgICAKLSAgICByZXR1cm4gdmFsdWU7Cisg
ICAgOjpnbEdldEZsb2F0dihwbmFtZSwgdmFsdWUpOwogfQogCi1QYXNzUmVmUHRyPFdlYkdMRmxv
YXRBcnJheT4gR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZsb2F0dih1bnNpZ25lZCBsb25nIHBuYW1l
KQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1l
dGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgdW5z
aWduZWQgbG9uZyBwbmFtZSwgaW50KiB2YWx1ZSkKIHsKLSAgICBpbnQgc2l6ZSA9IHNpemVGb3JH
ZXRQYXJhbShwbmFtZSk7Ci0gICAgaWYgKHNpemUgPCAxKSAKLSAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgCiAgICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwotICAgIAotICAgIFJlZlB0cjxX
ZWJHTEZsb2F0QXJyYXk+IGFycmF5ID0gV2ViR0xGbG9hdEFycmF5OjpjcmVhdGUoc2l6ZSk7Ci0g
ICAgYm9vbCBpc0FsbG9jZWQgPSBmYWxzZTsKLSAgICBHTGZsb2F0IGJ1Zls0XTsKLSAgICBHTGZs
b2F0KiBwYnVmID0gYnVmOwotICAgICAgICAgICAgCi0gICAgaWYgKHNpemUgPiA0KSB7Ci0gICAg
ICAgIHBidWYgPSAoR0xmbG9hdCopIG1hbGxvYyhzaXplICogc2l6ZW9mKEdMZmxvYXQpKTsKLSAg
ICAgICAgaXNBbGxvY2VkID0gdHJ1ZTsKLSAgICB9Ci0gICAgICAgICAgICAKLSAgICA6OmdsR2V0
RmxvYXR2KHBuYW1lLCBwYnVmKTsKLSAgICAgICAgICAgIAotICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgc2l6ZTsgKytpKQotICAgICAgICBhcnJheS0+c2V0KGksIHN0YXRpY19jYXN0PGZsb2F0Pihw
YnVmW2ldKSk7Ci0gICAgICAgICAgICAKLSAgICBpZiAoaXNBbGxvY2VkKQotICAgICAgICBmcmVl
KHBidWYpOwotICAgIAotICAgIHJldHVybiBhcnJheTsKKyAgICA6OmdsR2V0RnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyaXZFWFQodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSwgdmFsdWUp
OwogfQogCi1pbnQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEludGVnZXIodW5zaWduZWQgbG9uZyBw
bmFtZSkKLXsKLSAgICBpbnQgc2l6ZSA9IHNpemVGb3JHZXRQYXJhbShwbmFtZSk7Ci0gICAgaWYg
KHNpemUgPCAxKSAKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgZW5zdXJlQ29udGV4dCht
X2NvbnRleHRPYmopOwotICAgIAotICAgIGJvb2wgaXNBbGxvY2VkID0gZmFsc2U7Ci0gICAgR0xp
bnQgYnVmWzRdOwotICAgIEdMaW50KiBwYnVmID0gYnVmOwotICAgICAgICAgICAgCi0gICAgaWYg
KHNpemUgPiA0KSB7Ci0gICAgICAgIHBidWYgPSAoR0xpbnQqKSBtYWxsb2Moc2l6ZSAqIHNpemVv
ZihHTGludCkpOwotICAgICAgICBpc0FsbG9jZWQgPSB0cnVlOwotICAgIH0KLSAgICAgICAgICAg
IAotICAgIDo6Z2xHZXRJbnRlZ2VydihwbmFtZSwgcGJ1Zik7Ci0gICAgCi0gICAgaW50IHZhbHVl
ID0gcGJ1ZlswXTsKLQotICAgIGlmIChpc0FsbG9jZWQpCi0gICAgICAgIGZyZWUocGJ1Zik7Ci0g
ICAgCi0gICAgcmV0dXJuIHZhbHVlOwotfQotCi1QYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IEdy
YXBoaWNzQ29udGV4dDNEOjpnZXRJbnRlZ2Vydih1bnNpZ25lZCBsb25nIHBuYW1lKQotewotICAg
IGludCBzaXplID0gc2l6ZUZvckdldFBhcmFtKHBuYW1lKTsKLSAgICBpZiAoc2l6ZSA8IDEpIAot
ICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBlbnN1cmVDb250ZXh0KG1fY29udGV4dE9iaik7
Ci0gICAgCi0gICAgUmVmUHRyPFdlYkdMSW50QXJyYXk+IGFycmF5ID0gV2ViR0xJbnRBcnJheTo6
Y3JlYXRlKHNpemUpOwotICAgIGJvb2wgaXNBbGxvY2VkID0gZmFsc2U7Ci0gICAgR0xpbnQgYnVm
WzRdOwotICAgIEdMaW50KiBwYnVmID0gYnVmOwotICAgICAgICAgICAgCi0gICAgaWYgKHNpemUg
PiA0KSB7Ci0gICAgICAgIHBidWYgPSAoR0xpbnQqKSBtYWxsb2Moc2l6ZSAqIHNpemVvZihHTGlu
dCkpOwotICAgICAgICBpc0FsbG9jZWQgPSB0cnVlOwotICAgIH0KLSAgICAgICAgICAgIAotICAg
IDo6Z2xHZXRJbnRlZ2VydihwbmFtZSwgcGJ1Zik7Ci0gICAgICAgICAgICAKLSAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgYXJyYXktPnNldChpLCBzdGF0aWNfY2Fz
dDxpbnQ+KHBidWZbaV0pKTsKLSAgICAgICAgICAgIAotICAgIGlmIChpc0FsbG9jZWQpCi0gICAg
ICAgIGZyZWUocGJ1Zik7Ci0gICAgCi0gICAgcmV0dXJuIGFycmF5OwotfQotCi1pbnQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmdldEJ1ZmZlclBhcmFtZXRlcmkodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVu
c2lnbmVkIGxvbmcgcG5hbWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbnRlZ2Vydih1
bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKQogewogICAgIGVuc3VyZUNvbnRleHQobV9j
b250ZXh0T2JqKTsKLSAgICBHTGludCBkYXRhOwotICAgIDo6Z2xHZXRCdWZmZXJQYXJhbWV0ZXJp
dih0YXJnZXQsIHBuYW1lLCAmZGF0YSk7Ci0gICAgcmV0dXJuIGRhdGE7CisgICAgOjpnbEdldElu
dGVnZXJ2KHBuYW1lLCB2YWx1ZSk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldEJ1ZmZlclBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0
LCB1bnNpZ25lZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3Jh
bWl2KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgdW5zaWduZWQgbG9uZyBwbmFtZSwgaW50KiB2YWx1
ZSkKIHsKICAgICBlbnN1cmVDb250ZXh0KG1fY29udGV4dE9iaik7Ci0gICAgUmVmUHRyPFdlYkdM
SW50QXJyYXk+IGFycmF5ID0gV2ViR0xJbnRBcnJheTo6Y3JlYXRlKDEpOwotICAgIEdMaW50IGRh
dGE7Ci0gICAgOjpnbEdldEJ1ZmZlclBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsICZkYXRhKTsK
LSAgICBhcnJheS0+c2V0KDAsIHN0YXRpY19jYXN0PGludD4oZGF0YSkpOwotICAgIAotICAgIHJl
dHVybiBhcnJheTsKLX0KLQotaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXJpKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGF0
dGFjaG1lbnQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgZW5zdXJlQ29udGV4dChtX2Nv
bnRleHRPYmopOwotICAgIEdMaW50IGRhdGE7Ci0gICAgOjpnbEdldEZyYW1lYnVmZmVyQXR0YWNo
bWVudFBhcmFtZXRlcml2RVhUKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsICZkYXRhKTsKLSAg
ICByZXR1cm4gZGF0YTsKLX0KLQotUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYodW5zaWduZWQgbG9u
ZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgdW5zaWduZWQgbG9uZyBwbmFtZSkK
LXsKLSAgICBlbnN1cmVDb250ZXh0KG1fY29udGV4dE9iaik7Ci0gICAgUmVmUHRyPFdlYkdMSW50
QXJyYXk+IGFycmF5ID0gV2ViR0xJbnRBcnJheTo6Y3JlYXRlKDEpOwotICAgIEdMaW50IGRhdGE7
Ci0gICAgOjpnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2RVhUKHRhcmdldCwg
YXR0YWNobWVudCwgcG5hbWUsICZkYXRhKTsKLSAgICBhcnJheS0+c2V0KDAsIHN0YXRpY19jYXN0
PGludD4oZGF0YSkpOwotICAgIAotICAgIHJldHVybiBhcnJheTsKLX0KLQotaW50IEdyYXBoaWNz
Q29udGV4dDNEOjpnZXRQcm9ncmFtaShXZWJHTFByb2dyYW0qIHByb2dyYW0sIHVuc2lnbmVkIGxv
bmcgcG5hbWUpCi17Ci0gICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwotICAgIEdMaW50
IGRhdGE7Ci0gICAgOjpnbEdldFByb2dyYW1pdigoR0x1aW50KSBwcm9ncmFtLT5vYmplY3QoKSwg
cG5hbWUsICZkYXRhKTsKLSAgICByZXR1cm4gZGF0YTsKLX0KLQotUGFzc1JlZlB0cjxXZWJHTElu
dEFycmF5PiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbWl2KFdlYkdMUHJvZ3JhbSogcHJv
Z3JhbSwgdW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICBlbnN1cmVDb250ZXh0KG1fY29udGV4
dE9iaik7Ci0gICAgUmVmUHRyPFdlYkdMSW50QXJyYXk+IGFycmF5ID0gV2ViR0xJbnRBcnJheTo6
Y3JlYXRlKDEpOwotICAgIEdMaW50IGRhdGE7Ci0gICAgOjpnbEdldFByb2dyYW1pdigoR0x1aW50
KSBwcm9ncmFtLT5vYmplY3QoKSwgcG5hbWUsICZkYXRhKTsKLSAgICBhcnJheS0+c2V0KDAsIHN0
YXRpY19jYXN0PGludD4oZGF0YSkpOwotICAgIAotICAgIHJldHVybiBhcnJheTsKKyAgICA6Omds
R2V0UHJvZ3JhbWl2KChHTHVpbnQpIHByb2dyYW0tPm9iamVjdCgpLCBwbmFtZSwgdmFsdWUpOwog
fQogCiBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1JbmZvTG9nKFdlYkdMUHJv
Z3JhbSogcHJvZ3JhbSkKQEAgLTEyODUsNDYgKzEwMDQsMTggQEAgU3RyaW5nIEdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRQcm9ncmFtSW5mbwogICAgIHJldHVybiBzOwogfQogCi1pbnQgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodW5zaWduZWQgbG9uZyB0YXJnZXQs
IHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmop
OwotICAgIEdMaW50IGRhdGE7Ci0gICAgOjpnbEdldEJ1ZmZlclBhcmFtZXRlcml2KHRhcmdldCwg
cG5hbWUsICZkYXRhKTsKLSAgICByZXR1cm4gZGF0YTsKLX0KLQotUGFzc1JlZlB0cjxXZWJHTElu
dEFycmF5PiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYodW5z
aWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgZW5zdXJlQ29u
dGV4dChtX2NvbnRleHRPYmopOwotICAgIFJlZlB0cjxXZWJHTEludEFycmF5PiBhcnJheSA9IFdl
YkdMSW50QXJyYXk6OmNyZWF0ZSgxKTsKLSAgICBHTGludCBkYXRhOwotICAgIDo6Z2xHZXRCdWZm
ZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmZGF0YSk7Ci0gICAgYXJyYXktPnNldCgwLCBz
dGF0aWNfY2FzdDxpbnQ+KGRhdGEpKTsKLSAgICAKLSAgICByZXR1cm4gYXJyYXk7Ci19Ci0KLWlu
dCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyaShXZWJHTFNoYWRlciogc2hhZGVyLCB1bnNp
Z25lZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UmVuZGVyYnVmZmVy
UGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIGlu
dCogdmFsdWUpCiB7Ci0gICAgQVNTRVJUKHNoYWRlcik7Ci0gICAgCiAgICAgZW5zdXJlQ29udGV4
dChtX2NvbnRleHRPYmopOwotICAgIEdMaW50IGRhdGE7Ci0gICAgOjpnbEdldFNoYWRlcml2KChH
THVpbnQpIHNoYWRlci0+b2JqZWN0KCksIHBuYW1lLCAmZGF0YSk7Ci0gICAgcmV0dXJuIGRhdGE7
CisgICAgOjpnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2RVhUKHRhcmdldCwgcG5hbWUsIHZh
bHVlKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBHcmFwaGljc0NvbnRleHQzRDo6
Z2V0U2hhZGVyaXYoV2ViR0xTaGFkZXIqIHNoYWRlciwgdW5zaWduZWQgbG9uZyBwbmFtZSkKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlcml2KFdlYkdMU2hhZGVyKiBzaGFkZXIsIHVu
c2lnbmVkIGxvbmcgcG5hbWUsIGludCogdmFsdWUpCiB7CiAgICAgQVNTRVJUKHNoYWRlcik7CiAg
ICAgCiAgICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwotICAgIFJlZlB0cjxXZWJHTElu
dEFycmF5PiBhcnJheSA9IFdlYkdMSW50QXJyYXk6OmNyZWF0ZSgxKTsKLSAgICBHTGludCBkYXRh
OwotICAgIDo6Z2xHZXRTaGFkZXJpdigoR0x1aW50KSBzaGFkZXItPm9iamVjdCgpLCBwbmFtZSwg
JmRhdGEpOwotICAgIGFycmF5LT5zZXQoMCwgc3RhdGljX2Nhc3Q8aW50PihkYXRhKSk7Ci0gICAg
Ci0gICAgcmV0dXJuIGFycmF5OworICAgIDo6Z2xHZXRTaGFkZXJpdigoR0x1aW50KSBzaGFkZXIt
Pm9iamVjdCgpLCBwbmFtZSwgdmFsdWUpOwogfQogCiBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6
OmdldFNoYWRlckluZm9Mb2coV2ViR0xTaGFkZXIqIHNoYWRlcikKQEAgLTEzNjAsNzggKzEwNTEs
MjggQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJTb3VyYwogfQogCiAKLWZs
b2F0IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRUZXhQYXJhbWV0ZXJmKHVuc2lnbmVkIGxvbmcgdGFy
Z2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VGV4
UGFyYW1ldGVyZnYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIGZs
b2F0KiB2YWx1ZSkKIHsKICAgICBlbnN1cmVDb250ZXh0KG1fY29udGV4dE9iaik7Ci0gICAgR0xm
bG9hdCBkYXRhOwotICAgIDo6Z2xHZXRUZXhQYXJhbWV0ZXJmdih0YXJnZXQsIHBuYW1lLCAmZGF0
YSk7Ci0gICAgcmV0dXJuIGRhdGE7CisgICAgOjpnbEdldFRleFBhcmFtZXRlcmZ2KHRhcmdldCwg
cG5hbWUsIHZhbHVlKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJHTEZsb2F0QXJyYXk+IEdyYXBoaWNz
Q29udGV4dDNEOjpnZXRUZXhQYXJhbWV0ZXJmdih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWdu
ZWQgbG9uZyBwbmFtZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFRleFBhcmFtZXRlcml2
KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKQog
ewogICAgIGVuc3VyZUNvbnRleHQobV9jb250ZXh0T2JqKTsKLSAgICBSZWZQdHI8V2ViR0xGbG9h
dEFycmF5PiBhcnJheSA9IFdlYkdMRmxvYXRBcnJheTo6Y3JlYXRlKDEpOwotICAgIEdMZmxvYXQg
ZGF0YTsKLSAgICA6OmdsR2V0VGV4UGFyYW1ldGVyZnYodGFyZ2V0LCBwbmFtZSwgJmRhdGEpOwot
ICAgIGFycmF5LT5zZXQoMCwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRhdGEpKTsKLSAgICAKLSAgICBy
ZXR1cm4gYXJyYXk7CisgICAgOjpnbEdldFRleFBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsIHZh
bHVlKTsKIH0KIAotaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRUZXhQYXJhbWV0ZXJpKHVuc2ln
bmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0VW5pZm9ybWZ2KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBsb2NhdGlvbiwg
ZmxvYXQqIHZhbHVlKQogewogICAgIGVuc3VyZUNvbnRleHQobV9jb250ZXh0T2JqKTsKLSAgICBH
TGludCBkYXRhOwotICAgIDo6Z2xHZXRUZXhQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmZGF0
YSk7Ci0gICAgcmV0dXJuIGRhdGE7CisgICAgOjpnbEdldFVuaWZvcm1mdigoR0x1aW50KSBwcm9n
cmFtLT5vYmplY3QoKSwgbG9jYXRpb24sIHZhbHVlKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJHTElu
dEFycmF5PiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VGV4UGFyYW1ldGVyaXYodW5zaWduZWQgbG9u
ZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRVbmlmb3JtaXYoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uLCBpbnQqIHZh
bHVlKQogewogICAgIGVuc3VyZUNvbnRleHQobV9jb250ZXh0T2JqKTsKLSAgICBSZWZQdHI8V2Vi
R0xJbnRBcnJheT4gYXJyYXkgPSBXZWJHTEludEFycmF5OjpjcmVhdGUoMSk7Ci0gICAgR0xpbnQg
ZGF0YTsKLSAgICA6OmdsR2V0VGV4UGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgJmRhdGEpOwot
ICAgIGFycmF5LT5zZXQoMCwgc3RhdGljX2Nhc3Q8aW50PihkYXRhKSk7Ci0gICAgCi0gICAgcmV0
dXJuIGFycmF5OwotfQotCi1mbG9hdCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWYoV2Vi
R0xQcm9ncmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uKQotewotICAgIC8vIEZJWE1FOiBXZSBu
ZWVkIHRvIHF1ZXJ5IGdsR2V0VW5pZm9ybUxvY2F0aW9uIHRvIGRldGVybWluZSB0aGUgc2l6ZSBu
ZWVkZWQKLSAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0
aW9uKTsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOwotfQotCi1QYXNzUmVm
UHRyPFdlYkdMRmxvYXRBcnJheT4gR3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1mdihXZWJH
TFByb2dyYW0qIHByb2dyYW0sIGxvbmcgbG9jYXRpb24pCi17Ci0gICAgLy8gRklYTUU6IFdlIG5l
ZWQgdG8gcXVlcnkgZ2xHZXRVbmlmb3JtTG9jYXRpb24gdG8gZGV0ZXJtaW5lIHRoZSBzaXplIG5l
ZWRlZAotICAgIFVOVVNFRF9QQVJBTShwcm9ncmFtKTsKLSAgICBVTlVTRURfUEFSQU0obG9jYXRp
b24pOwotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWludCBHcmFw
aGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWkoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBsb25nIGxv
Y2F0aW9uKQotewotICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIHF1ZXJ5IGdsR2V0VW5pZm9ybUxv
Y2F0aW9uIHRvIGRldGVybWluZSB0aGUgc2l6ZSBuZWVkZWQKLSAgICBVTlVTRURfUEFSQU0ocHJv
Z3JhbSk7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OwotICAgIHJldHVybiAwOwotfQotCi1QYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IEdyYXBoaWNz
Q29udGV4dDNEOjpnZXRVbmlmb3JtaXYoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0
aW9uKQotewotICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIHF1ZXJ5IGdsR2V0VW5pZm9ybUxvY2F0
aW9uIHRvIGRldGVybWluZSB0aGUgc2l6ZSBuZWVkZWQKLSAgICBVTlVTRURfUEFSQU0ocHJvZ3Jh
bSk7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwot
ICAgIHJldHVybiAwOworICAgIDo6Z2xHZXRVbmlmb3JtaXYoKEdMdWludCkgcHJvZ3JhbS0+b2Jq
ZWN0KCksIGxvY2F0aW9uLCB2YWx1ZSk7CiB9CiAKIGxvbmcgR3JhcGhpY3NDb250ZXh0M0Q6Omdl
dFVuaWZvcm1Mb2NhdGlvbihXZWJHTFByb2dyYW0qIHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFt
ZSkKQEAgLTE0NDIsNzEgKzEwODMsMTYgQEAgbG9uZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5p
Zm9ybUxvY2F0aQogICAgIHJldHVybiA6OmdsR2V0VW5pZm9ybUxvY2F0aW9uKChHTHVpbnQpIHBy
b2dyYW0tPm9iamVjdCgpLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwogfQogCi1zdGF0aWMgaW50IHNp
emVGb3JHZXRWZXJ0ZXhBdHRyaWJQYXJhbSh1bnNpZ25lZCBsb25nIHBuYW1lKQotewotICAgIHN3
aXRjaChwbmFtZSkgewotICAgICAgICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVS
X0JJTkRJTkc6ICAgICByZXR1cm4gMTsgLy8gKCogYWN0dWFsbHkgYSBXZWJHTEJ1ZmZlciopCi0g
ICAgICAgIGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVEOiAgICAgICAgICAgIHJl
dHVybiAxOwotICAgICAgICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfU0laRTogICAgICAg
ICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZX1NU
UklERTogICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfVkVSVEVYX0FUVFJJ
Ql9BUlJBWV9UWVBFOiAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX1ZF
UlRFWF9BVFRSSUJfQVJSQVlfTk9STUFMSVpFRDogICAgICAgICByZXR1cm4gMTsKLSAgICAgICAg
Y2FzZSBHTF9DVVJSRU5UX1ZFUlRFWF9BVFRSSUI6ICAgICAgICAgICAgICAgICAgcmV0dXJuIDQ7
Ci0gICAgfQotICAgIAotICAgIHJldHVybiAtMTsKLX0KLQotZmxvYXQgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldFZlcnRleEF0dHJpYmYodW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQgbG9uZyBw
bmFtZSkKLXsKLSAgICBlbnN1cmVDb250ZXh0KG1fY29udGV4dE9iaik7Ci0gICAgR0xmbG9hdCBi
dWZbNF07Ci0gICAgOjpnbEdldFZlcnRleEF0dHJpYmZ2KGluZGV4LCBwbmFtZSwgYnVmKTsKLSAg
ICByZXR1cm4gYnVmWzBdOwotfQotCi1QYXNzUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gR3JhcGhp
Y3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYmZ2KHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVuc2ln
bmVkIGxvbmcgcG5hbWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJm
dih1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBmbG9hdCogdmFsdWUp
CiB7Ci0gICAgaW50IHNpemUgPSBzaXplRm9yR2V0VmVydGV4QXR0cmliUGFyYW0ocG5hbWUpOwot
ICAgIGlmIChzaXplIDwgMSkgCi0gICAgICAgIHJldHVybiAwOwotICAgIAogICAgIGVuc3VyZUNv
bnRleHQobV9jb250ZXh0T2JqKTsKLSAgICAKLSAgICBSZWZQdHI8V2ViR0xGbG9hdEFycmF5PiBh
cnJheSA9IFdlYkdMRmxvYXRBcnJheTo6Y3JlYXRlKHNpemUpOwotICAgIEdMZmxvYXQgYnVmWzRd
OwotICAgIDo6Z2xHZXRWZXJ0ZXhBdHRyaWJmdihpbmRleCwgcG5hbWUsIGJ1Zik7Ci0gICAgICAg
ICAgICAKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgYXJyYXkt
PnNldChpLCBzdGF0aWNfY2FzdDxmbG9hdD4oYnVmW2ldKSk7Ci0gICAgCi0gICAgcmV0dXJuIGFy
cmF5OworICAgIDo6Z2xHZXRWZXJ0ZXhBdHRyaWJmdihpbmRleCwgcG5hbWUsIHZhbHVlKTsKIH0K
IAotaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJpKHVuc2lnbmVkIGxvbmcg
aW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRW
ZXJ0ZXhBdHRyaWJpdih1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBp
bnQqIHZhbHVlKQogewogICAgIGVuc3VyZUNvbnRleHQobV9jb250ZXh0T2JqKTsKLSAgICBHTGlu
dCBidWZbNF07Ci0gICAgOjpnbEdldFZlcnRleEF0dHJpYml2KGluZGV4LCBwbmFtZSwgYnVmKTsK
LSAgICByZXR1cm4gYnVmWzBdOwotfQotCi1QYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJpdih1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNp
Z25lZCBsb25nIHBuYW1lKQotewotICAgIGludCBzaXplID0gc2l6ZUZvckdldFZlcnRleEF0dHJp
YlBhcmFtKHBuYW1lKTsKLSAgICBpZiAoc2l6ZSA8IDEpIAotICAgICAgICByZXR1cm4gMDsKLSAg
ICAKLSAgICBlbnN1cmVDb250ZXh0KG1fY29udGV4dE9iaik7Ci0gICAgCi0gICAgUmVmUHRyPFdl
YkdMSW50QXJyYXk+IGFycmF5ID0gV2ViR0xJbnRBcnJheTo6Y3JlYXRlKHNpemUpOwotICAgIEdM
aW50IGJ1Zls0XTsKLSAgICA6OmdsR2V0VmVydGV4QXR0cmliaXYoaW5kZXgsIHBuYW1lLCBidWYp
OwotICAgICAgICAgICAgCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAg
ICAgIGFycmF5LT5zZXQoaSwgc3RhdGljX2Nhc3Q8aW50PihidWZbaV0pKTsKLSAgICAKLSAgICBy
ZXR1cm4gYXJyYXk7CisgICAgOjpnbEdldFZlcnRleEF0dHJpYml2KGluZGV4LCBwbmFtZSwgdmFs
dWUpOwogfQogCiBsb25nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQo
dW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQgbG9uZyBwbmFtZSkKSW5kZXg6IFdlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwkocmV2aXNpb24gNTEzMTIpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsNDcgQEAKKzIwMDktMTEtMjMgIEtlbm5ldGggUnVzc2VsbCAgPGti
ckBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIENoYW5nZSBnZXQuLi4gY2FsbHMgdG8gbGF0ZXN0IHNwZWMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMDkxCisKKyAgICAgICAgUmVtb3Zl
ZCBvbGQgdmVyc2lvbnMgb2YgZ2V0IGNhbGxzIG9uIFdlYkdMUmVuZGVyaW5nQ29udGV4dCBhbmQK
KyAgICAgICAgYWRkZWQgbmV3IG9uZXMgcGVyIHNwZWMgcmV0dXJuaW5nICJhbnkiLiBOZXcgY29k
ZSBzaW1wbGlmaWVzCisgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEIGFuZCBmaXhlcyBwcmV2aW91
c2x5IHVuaW1wbGVtZW50ZWQgcm91dGluZXMuCisgICAgICAgIEFkZGVkIGN1c3RvbSBKUyBhbmQg
VjggYmluZGluZ3MuIEFkZGVkIGV4aGF1c3RpdmUgdGVzdCBjYXNlCisgICAgICAgIGV4ZXJjaXNp
bmcgYWxsIG5ldyBjb2RlIHBhdGhzLiBVcGRhdGVkIHByZWV4aXN0aW5nIHRlc3QgY2FzZXMgZm9y
CisgICAgICAgIG5ldyBBUElzLiBGaXhlZCBwcmVleGlzdGluZyBidWdzIGluIFdlYktpdCdzIGFu
ZCBDaHJvbWUncyBXZWJHTAorICAgICAgICBpbXBsZW1lbnRhdGlvbnMuCisKKyAgICAgICAgUmFu
IFdlYkdMIGxheW91dCB0ZXN0cyBpbiBXZWJLaXQgKGNsZWFuKSBhbmQgQ2hyb21lIChjb3VwbGUg
b2YKKyAgICAgICAgcHJlZXhpc3Rpbmcga25vd24gZmFpbHVyZXMpIGFuZCBtYW51YWwgV2ViR0wg
dGVzdHMgaW4gYm90aAorICAgICAgICBicm93c2Vycy4KKworICAgICAgICBUZXN0OiBmYXN0L2Nh
bnZhcy93ZWJnbC9nbC1vYmplY3QtZ2V0LWNhbGxzLmh0bWwKKworICAgICAgICAqIHNyYy9HcmFw
aGljc0NvbnRleHQzRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
Y3JlYXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmNyZWF0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6ZGVsZXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OmRlbGV0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQzRDo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0Qm9vbGVhbnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OmdldEJ1ZmZlclBhcmFtZXRlcml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpnZXRGbG9hdHYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0Q6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbnRlZ2Vydik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbWl2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OmdldFRleFBhcmFtZXRlcmZ2KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRUZXhQYXJhbWV0ZXJpdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWZ2KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYmZ2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6aXNGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6aXNSZW5kZXJidWZmZXIpOgorCiAyMDA5LTExLTIwICBKaWFuIExpICA8amlh
bmxpQGNocm9taXVtLm9yZz4KIAogICAgICAgICBOb3QgcmV2aWV3ZWQuIEZpeCBjaHJvbWl1bSBi
dWlsZC4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0QuY3BwCShy
ZXZpc2lvbiA1MTI3OCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvR3JhcGhpY3NDb250ZXh0M0Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NzQsMTkgKzc3NCw2IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0RJbnRlcm5hbDo6YmVnaW5QYWkKICNlbmRpZiAgLy8gUkVOREVSX1RPX0RFQlVHR0lOR19X
SU5ET1cKIH0KIAotYm9vbCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp2YWxpZGF0ZVRleHR1
cmVUYXJnZXQoaW50IHRhcmdldCkKLXsKLSAgICByZXR1cm4gKHRhcmdldCA9PSBHTF9URVhUVVJF
XzJEIHx8IHRhcmdldCA9PSBHTF9URVhUVVJFX0NVQkVfTUFQKTsKLX0KLQotYm9vbCBHcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjp2YWxpZGF0ZVRleHR1cmVQYXJhbWV0ZXIoaW50IHBhcmFtKQot
ewotICAgIHJldHVybiAocGFyYW0gPT0gR0xfVEVYVFVSRV9NQUdfRklMVEVSCi0gICAgICAgICB8
fCBwYXJhbSA9PSBHTF9URVhUVVJFX01JTl9GSUxURVIKLSAgICAgICAgIHx8IHBhcmFtID09IEdM
X1RFWFRVUkVfV1JBUF9TCi0gICAgICAgICB8fCBwYXJhbSA9PSBHTF9URVhUVVJFX1dSQVBfVCk7
Ci19Ci0KIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6YWN0aXZlVGV4dHVyZSh1bnNp
Z25lZCBsb25nIHRleHR1cmUpCiB7CiAgICAgLy8gRklYTUU6IHF1ZXJ5IG51bWJlciBvZiB0ZXh0
dXJlcyBhdmFpbGFibGUuCkBAIC0xMTA1LDggKzEwOTIsOCBAQCB1bnNpZ25lZCBHcmFwaGljc0Nv
bnRleHQzRDo6Y3JlYXRlQnVmZmVyCiB1bnNpZ25lZCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRl
RnJhbWVidWZmZXIoKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIEdMdWludCBv
OwotICAgIGdsR2VuRnJhbWVidWZmZXJzKDEsICZvKTsKKyAgICBHTHVpbnQgbyA9IDA7CisgICAg
Z2xHZW5GcmFtZWJ1ZmZlcnNFWFQoMSwgJm8pOwogICAgIHJldHVybiBvOwogfQogCkBAIC0xMTIw
LDcgKzExMDcsNyBAQCB1bnNpZ25lZCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlUmVuZGVyCiB7
CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgR0x1aW50IG87Ci0gICAgZ2xHZW5SZW5k
ZXJidWZmZXJzKDEsICZvKTsKKyAgICBnbEdlblJlbmRlcmJ1ZmZlcnNFWFQoMSwgJm8pOwogICAg
IHJldHVybiBvOwogfQogCkBAIC0xMTQ3LDcgKzExMzQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpkZWxldGVCdWZmZXIodW5zCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVGcmFt
ZWJ1ZmZlcih1bnNpZ25lZCBmcmFtZWJ1ZmZlcikKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKLSAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmZnJhbWVidWZmZXIpOworICAgIGdsRGVs
ZXRlRnJhbWVidWZmZXJzRVhUKDEsICZmcmFtZWJ1ZmZlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmRlbGV0ZVByb2dyYW0odW5zaWduZWQgcHJvZ3JhbSkKQEAgLTExNTksNyArMTE0
Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVByb2dyYW0odW4KIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVJlbmRlcmJ1ZmZlcih1bnNpZ25lZCByZW5kZXJidWZmZXIp
CiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgZ2xEZWxldGVSZW5kZXJidWZmZXJz
KDEsICZyZW5kZXJidWZmZXIpOworICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVyc0VYVCgxLCAmcmVu
ZGVyYnVmZmVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlU2hhZGVyKHVu
c2lnbmVkIHNoYWRlcikKQEAgLTExOTcsOSArMTE4NCw5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmJpbmRCdWZmZXIodW5zaWcKICAgICBtX2ludGVybmFsLT5iaW5kQnVmZmVyKHRhcmdldCwg
YnVmZmVyKTsKIH0KIAotR0xfU0FNRV9NRVRIT0RfMl9YMihCaW5kRnJhbWVidWZmZXIsIGJpbmRG
cmFtZWJ1ZmZlciwgdW5zaWduZWQgbG9uZywgV2ViR0xGcmFtZWJ1ZmZlciopCitHTF9TQU1FX01F
VEhPRF8yX1gyKEJpbmRGcmFtZWJ1ZmZlckVYVCwgYmluZEZyYW1lYnVmZmVyLCB1bnNpZ25lZCBs
b25nLCBXZWJHTEZyYW1lYnVmZmVyKikKIAotR0xfU0FNRV9NRVRIT0RfMl9YMihCaW5kUmVuZGVy
YnVmZmVyLCBiaW5kUmVuZGVyYnVmZmVyLCB1bnNpZ25lZCBsb25nLCBXZWJHTFJlbmRlcmJ1ZmZl
ciopCitHTF9TQU1FX01FVEhPRF8yX1gyKEJpbmRSZW5kZXJidWZmZXJFWFQsIGJpbmRSZW5kZXJi
dWZmZXIsIHVuc2lnbmVkIGxvbmcsIFdlYkdMUmVuZGVyYnVmZmVyKikKIAogLy8gSWYgd2UgZGlk
bid0IGhhdmUgdG8gaGFjayBHTF9URVhUVVJFX1dSQVBfUiBmb3IgY3ViZSBtYXBzLAogLy8gd2Ug
Y291bGQganVzdCB1c2U6CkBAIC0xMjUzLDcgKzEyNDAsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpidWZmZXJTdWJEYXRhKHVuCiB1bnNpZ25lZCBsb25nIEdyYXBoaWNzQ29udGV4dDNEOjpj
aGVja0ZyYW1lYnVmZmVyU3RhdHVzKHVuc2lnbmVkIGxvbmcgdGFyZ2V0KQogewogICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOwotICAgIHJldHVybiBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXModGFy
Z2V0KTsKKyAgICByZXR1cm4gZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzRVhUKHRhcmdldCk7CiB9
CiAKIEdMX1NBTUVfTUVUSE9EXzEoQ2xlYXIsIGNsZWFyLCB1bnNpZ25lZCBsb25nKQpAQCAtMTM1
Niw5ICsxMzQzLDkgQEAgR0xfU0FNRV9NRVRIT0RfMChGaW5pc2gsIGZpbmlzaCkKIAogR0xfU0FN
RV9NRVRIT0RfMChGbHVzaCwgZmx1c2gpCiAKLUdMX1NBTUVfTUVUSE9EXzRfWDQoRnJhbWVidWZm
ZXJSZW5kZXJidWZmZXIsIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyLCB1bnNpZ25lZCBsb25nLCB1
bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCBXZWJHTFJlbmRlcmJ1ZmZlciopCitHTF9TQU1F
X01FVEhPRF80X1g0KEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyRVhULCBmcmFtZWJ1ZmZlclJlbmRl
cmJ1ZmZlciwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgV2Vi
R0xSZW5kZXJidWZmZXIqKQogCi1HTF9TQU1FX01FVEhPRF81X1g0KEZyYW1lYnVmZmVyVGV4dHVy
ZTJELCBmcmFtZWJ1ZmZlclRleHR1cmUyRCwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywg
dW5zaWduZWQgbG9uZywgV2ViR0xUZXh0dXJlKiwgbG9uZykKK0dMX1NBTUVfTUVUSE9EXzVfWDQo
RnJhbWVidWZmZXJUZXh0dXJlMkRFWFQsIGZyYW1lYnVmZmVyVGV4dHVyZTJELCB1bnNpZ25lZCBs
b25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCBXZWJHTFRleHR1cmUqLCBsb25nKQog
CiBHTF9TQU1FX01FVEhPRF8xKEZyb250RmFjZSwgZnJvbnRGYWNlLCB1bnNpZ25lZCBsb25nKQog
CkBAIC0xNDM1LDM1ICsxNDIyLDE2IEBAIGludCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QXR0cmli
TG9jYXRpb24KICAgICByZXR1cm4gZ2xHZXRBdHRyaWJMb2NhdGlvbihFWFRSQUNUKHByb2dyYW0p
LCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwogfQogCi1ib29sIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRC
b29sZWFuKHVuc2lnbmVkIGxvbmcgcG5hbWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRC
b29sZWFudih1bnNpZ25lZCBsb25nIHBuYW1lLCB1bnNpZ25lZCBjaGFyKiB2YWx1ZSkKIHsKICAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICBHTGJvb2xlYW4gdmFsOwotICAgIC8vIEZJWE1F
OiB2YWxpZGF0ZSBwbmFtZSB0byBlbnN1cmUgaXQgcmV0dXJucyBvbmx5IGEgc2luZ2xlIHZhbHVl
LgotICAgIGdsR2V0Qm9vbGVhbnYocG5hbWUsICZ2YWwpOwotICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxib29sPih2YWwpOworICAgIGdsR2V0Qm9vbGVhbnYocG5hbWUsIHZhbHVlKTsKIH0KIAotUGFz
c1JlZlB0cjxXZWJHTFVuc2lnbmVkQnl0ZUFycmF5PiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0Qm9v
bGVhbnYodW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50Lgot
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWludCBHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0QnVmZmVyUGFyYW1ldGVyaSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWdu
ZWQgbG9uZyBwbmFtZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEJ1ZmZlclBhcmFtZXRl
cml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVl
KQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIEdMaW50IGRhdGE7Ci0gICAgZ2xH
ZXRCdWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmZGF0YSk7Ci0gICAgcmV0dXJuIHN0
YXRpY19jYXN0PGludD4oZGF0YSk7Ci19Ci0KLVBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldEJ1ZmZlclBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0
LCB1bnNpZ25lZCBsb25nIHBuYW1lKQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQuCi0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICBnbEdldEJ1ZmZlclBhcmFtZXRl
cml2KHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKIH0KIAogdW5zaWduZWQgbG9uZyBHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0RXJyb3IoKQpAQCAtMTQ3Miw3MiArMTQ0MCwzMyBAQCB1bnNpZ25lZCBsb25n
IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRFcnJvCiAgICAgcmV0dXJuIGdsR2V0RXJyb3IoKTsKIH0K
IAotZmxvYXQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZsb2F0KHVuc2lnbmVkIGxvbmcgcG5hbWUp
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRGbG9hdHYodW5zaWduZWQgbG9uZyBwbmFtZSwg
ZmxvYXQqIHZhbHVlKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIEdMZmxvYXQg
dmFsOwotICAgIC8vIEZJWE1FOiB2YWxpZGF0ZSBwbmFtZSB0byBlbnN1cmUgaXQgcmV0dXJucyBv
bmx5IGEgc2luZ2xlIHZhbHVlLgotICAgIGdsR2V0RmxvYXR2KHBuYW1lLCAmdmFsKTsKLSAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZhbCk7CisgICAgZ2xHZXRGbG9hdHYocG5hbWUsIHZh
bHVlKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJHTEZsb2F0QXJyYXk+IEdyYXBoaWNzQ29udGV4dDNE
OjpnZXRGbG9hdHYodW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVt
ZW50LgotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWludCBHcmFw
aGljc0NvbnRleHQzRDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaSh1bnNpZ25l
ZCBsb25nIHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9u
ZyBwbmFtZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVu
dFBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBhdHRh
Y2htZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCogdmFsdWUpCiB7CiAgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgR0xpbnQgZGF0YTsKLSAgICBnbEdldEZyYW1lYnVm
ZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsICZkYXRh
KTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihkYXRhKTsKLX0KLQotUGFzc1JlZlB0cjxX
ZWJHTEludEFycmF5PiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50
UGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgbG9uZyBhdHRhY2htZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudC4KLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAgIGdsR2V0RnJhbWVidWZmZXJBdHRhY2ht
ZW50UGFyYW1ldGVyaXZFWFQodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSwgdmFsdWUpOwogfQog
Ci1pbnQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEludGVnZXIodW5zaWduZWQgbG9uZyBwbmFtZSkK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEludGVnZXJ2KHVuc2lnbmVkIGxvbmcgcG5hbWUs
IGludCogdmFsdWUpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgR0xpbnQgdmFs
OwotICAgIC8vIEZJWE1FOiB2YWxpZGF0ZSBwbmFtZSB0byBlbnN1cmUgaXQgcmV0dXJucyBvbmx5
IGEgc2luZ2xlIHZhbHVlLgotICAgIGdsR2V0SW50ZWdlcnYocG5hbWUsICZ2YWwpOwotICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxpbnQ+KHZhbCk7Ci19Ci0KLVBhc3NSZWZQdHI8V2ViR0xJbnRBcnJh
eT4gR3JhcGhpY3NDb250ZXh0M0Q6OmdldEludGVnZXJ2KHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17
Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudC4KLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJl
dHVybiAwOworICAgIGdsR2V0SW50ZWdlcnYocG5hbWUsIHZhbHVlKTsKIH0KIAotaW50IEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtaShXZWJHTFByb2dyYW0qIHByb2dyYW0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgcG5hbWUpCit2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtaXYoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgcG5hbWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KiB2YWx1ZSkKIHsKICAgICBt
YWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICBHTGludCBwYXJhbTsKLSAgICBnbEdldFByb2dyYW1p
dihFWFRSQUNUKHByb2dyYW0pLCBwbmFtZSwgJnBhcmFtKTsKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8aW50PihwYXJhbSk7Ci19Ci0KLVBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gR3JhcGhpY3ND
b250ZXh0M0Q6OmdldFByb2dyYW1pdihXZWJHTFByb2dyYW0qIHByb2dyYW0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGxvbmcgcG5hbWUpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudC4KLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotICAgIHJldHVybiAwOworICAgIGdsR2V0UHJvZ3JhbWl2KEVYVFJBQ1QocHJvZ3Jh
bSksIHBuYW1lLCB2YWx1ZSk7CiB9CiAKIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJv
Z3JhbUluZm9Mb2coV2ViR0xQcm9ncmFtKiBwcm9ncmFtKQpAQCAtMTU1OSwzOCArMTQ4OCwyMCBA
QCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1JbmZvCiAgICAgcmV0dXJuIHJl
czsKIH0KIAotaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJp
KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgcG5hbWUpCit2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdldCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGxvbmcgcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQqIHZhbHVlKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIEdM
aW50IHBhcmFtOwotICAgIGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFt
ZSwgJnBhcmFtKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihwYXJhbSk7Ci19Ci0KLVBh
c3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gR3JhcGhpY3NDb250ZXh0M0Q6OmdldFJlbmRlcmJ1ZmZl
clBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudC4KLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAgIGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVy
aXZFWFQodGFyZ2V0LCBwbmFtZSwgdmFsdWUpOwogfQogCi1pbnQgR3JhcGhpY3NDb250ZXh0M0Q6
OmdldFNoYWRlcmkoV2ViR0xTaGFkZXIqIHNoYWRlciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
Z2V0U2hhZGVyaXYoV2ViR0xTaGFkZXIqIHNoYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQqIHZhbHVlKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwot
ICAgIEdMaW50IHBhcmFtOwotICAgIGdsR2V0U2hhZGVyaXYoRVhUUkFDVChzaGFkZXIpLCBwbmFt
ZSwgJnBhcmFtKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihwYXJhbSk7Ci19Ci0KLVBh
c3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gR3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlcml2KFdl
YkdMU2hhZGVyKiBzaGFkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICAvLyBGSVhN
RTogaW1wbGVtZW50LgotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAg
Z2xHZXRTaGFkZXJpdihFWFRSQUNUKHNoYWRlciksIHBuYW1lLCB2YWx1ZSk7CiB9CiAKIFN0cmlu
ZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVySW5mb0xvZyhXZWJHTFNoYWRlciogc2hhZGVy
KQpAQCAtMTYzNyw4MiArMTU0OCwyOCBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFN0
cmluZyh1bnNpCiAgICAgcmV0dXJuIFN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIq
PihnbEdldFN0cmluZyhuYW1lKSkpOwogfQogCi1mbG9hdCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
VGV4UGFyYW1ldGVyZih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSkK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFRleFBhcmFtZXRlcmZ2KHVuc2lnbmVkIGxvbmcg
dGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBmbG9hdCogdmFsdWUpCiB7CiAgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7Ci0gICAgaWYgKCFtX2ludGVybmFsLT52YWxpZGF0ZVRleHR1cmVUYXJn
ZXQodGFyZ2V0KSkgewotICAgICAgICAvLyBGSVhNRTogdGhyb3cgZXhjZXB0aW9uLgotICAgICAg
ICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBpZiAoIW1faW50ZXJuYWwtPnZhbGlkYXRlVGV4dHVy
ZVBhcmFtZXRlcihwbmFtZSkpIHsKLSAgICAgICAgLy8gRklYTUU6IHRocm93IGV4Y2VwdGlvbi4K
LSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgR0xmbG9hdCBwYXJhbTsKLSAgICBnbEdl
dFRleFBhcmFtZXRlcmZ2KHRhcmdldCwgcG5hbWUsICZwYXJhbSk7Ci0gICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGZsb2F0PihwYXJhbSk7Ci19Ci0KLVBhc3NSZWZQdHI8V2ViR0xGbG9hdEFycmF5PiBH
cmFwaGljc0NvbnRleHQzRDo6Z2V0VGV4UGFyYW1ldGVyZnYodW5zaWduZWQgbG9uZyB0YXJnZXQs
IHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudC4KLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAgIGdsR2V0VGV4UGFyYW1ldGVyZnYo
dGFyZ2V0LCBwbmFtZSwgdmFsdWUpOwogfQogCi1pbnQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFRl
eFBhcmFtZXRlcmkodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCit2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRUZXhQYXJhbWV0ZXJpdih1bnNpZ25lZCBsb25nIHRh
cmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgaW50KiB2YWx1ZSkKIHsKICAgICBtYWtlQ29udGV4
dEN1cnJlbnQoKTsKLSAgICBpZiAoIW1faW50ZXJuYWwtPnZhbGlkYXRlVGV4dHVyZVRhcmdldCh0
YXJnZXQpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiB0aHJvdyBleGNlcHRpb24uCi0gICAgICAgIHJl
dHVybiAwOwotICAgIH0KLQotICAgIGlmICghbV9pbnRlcm5hbC0+dmFsaWRhdGVUZXh0dXJlUGFy
YW1ldGVyKHBuYW1lKSkgewotICAgICAgICAvLyBGSVhNRTogdGhyb3cgZXhjZXB0aW9uLgotICAg
ICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBHTGludCBwYXJhbTsKLSAgICBnbEdldFRleFBh
cmFtZXRlcml2KHRhcmdldCwgcG5hbWUsICZwYXJhbSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0
PGludD4ocGFyYW0pOwotfQotCi1QYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IEdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRUZXhQYXJhbWV0ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQg
bG9uZyBwbmFtZSkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50LgotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgZ2xHZXRUZXhQYXJhbWV0ZXJpdih0YXJnZXQsIHBu
YW1lLCB2YWx1ZSk7CiB9CiAKLWZsb2F0IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtZihX
ZWJHTFByb2dyYW0qIHByb2dyYW0sIGxvbmcgbG9jYXRpb24pCit2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRVbmlmb3JtZnYoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uLCBm
bG9hdCogdmFsdWUpCiB7Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudC4KLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotICAgIHJldHVybiAwOwotfQotCi1QYXNzUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4g
R3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1mdihXZWJHTFByb2dyYW0qIHByb2dyYW0sIGxv
bmcgbG9jYXRpb24pCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudC4KLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotICAgIHJldHVybiAwOwotfQotCi1pbnQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFVu
aWZvcm1pKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBsb2NhdGlvbikKLXsKLSAgICAvLyBG
SVhNRTogaW1wbGVtZW50LgotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7Cisg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgZ2xHZXRVbmlmb3JtZnYoRVhUUkFDVChwcm9n
cmFtKSwgbG9jYXRpb24sIHZhbHVlKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBH
cmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWl2KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9u
ZyBsb2NhdGlvbikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1pdihXZWJHTFBy
b2dyYW0qIHByb2dyYW0sIGxvbmcgbG9jYXRpb24sIGludCogdmFsdWUpCiB7Ci0gICAgLy8gRklY
TUU6IGltcGxlbWVudC4KLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIGdsR2V0VW5pZm9ybWl2KEVYVFJBQ1QocHJvZ3Jh
bSksIGxvY2F0aW9uLCB2YWx1ZSk7CiB9CiAKIGxvbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFVu
aWZvcm1Mb2NhdGlvbihXZWJHTFByb2dyYW0qIHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSkK
QEAgLTE3MjQsMzYgKzE1ODEsMjAgQEAgbG9uZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9y
bUxvY2F0aQogICAgIHJldHVybiBnbEdldFVuaWZvcm1Mb2NhdGlvbihFWFRSQUNUKHByb2dyYW0p
LCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwogfQogCi1mbG9hdCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
VmVydGV4QXR0cmliZih1bnNpZ25lZCBsb25nIGluZGV4LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICAvLyBGSVhN
RTogaW1wbGVtZW50LgotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0K
LVBhc3NSZWZQdHI8V2ViR0xGbG9hdEFycmF5PiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4
QXR0cmliZnYodW5zaWduZWQgbG9uZyBpbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgcG5h
bWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJmdih1bnNpZ25lZCBs
b25nIGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgbG9uZyBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZsb2F0KiB2YWx1ZSkKIHsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50LgotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWludCBHcmFwaGljc0NvbnRleHQzRDo6
Z2V0VmVydGV4QXR0cmliaSh1bnNpZ25lZCBsb25nIGluZGV4LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgLy8gRklY
TUU6IGltcGxlbWVudC4KLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIGdsR2V0VmVydGV4QXR0cmliZnYoaW5kZXgsIHBu
YW1lLCB2YWx1ZSk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gR3JhcGhpY3NDb250
ZXh0M0Q6OmdldFZlcnRleEF0dHJpYml2KHVuc2lnbmVkIGxvbmcgaW5kZXgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgbG9uZyBwbmFtZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJp
Yml2KHVuc2lnbmVkIGxvbmcgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBsb25nIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50KiB2YWx1ZSkKIHsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50
LgotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgbWFrZUNvbnRleHRD
dXJyZW50KCk7CisgICAgZ2xHZXRWZXJ0ZXhBdHRyaWJpdihpbmRleCwgcG5hbWUsIHZhbHVlKTsK
IH0KIAogbG9uZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0KHVuc2ln
bmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCkBAIC0xNzgwLDcgKzE2MjEsNyBA
QCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjppc0VuYWJsZWQodW5zaWduCiBib29sIEdyYXBoaWNz
Q29udGV4dDNEOjppc0ZyYW1lYnVmZmVyKFdlYkdMRnJhbWVidWZmZXIqIGZyYW1lYnVmZmVyKQog
ewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIHJldHVybiBnbElzRnJhbWVidWZmZXIo
RVhUUkFDVChmcmFtZWJ1ZmZlcikpOworICAgIHJldHVybiBnbElzRnJhbWVidWZmZXJFWFQoRVhU
UkFDVChmcmFtZWJ1ZmZlcikpOwogfQogCiBib29sIEdyYXBoaWNzQ29udGV4dDNEOjppc1Byb2dy
YW0oV2ViR0xQcm9ncmFtKiBwcm9ncmFtKQpAQCAtMTc5Miw3ICsxNjMzLDcgQEAgYm9vbCBHcmFw
aGljc0NvbnRleHQzRDo6aXNQcm9ncmFtKFdlYkdMUAogYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6
aXNSZW5kZXJidWZmZXIoV2ViR0xSZW5kZXJidWZmZXIqIHJlbmRlcmJ1ZmZlcikKIHsKICAgICBt
YWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICByZXR1cm4gZ2xJc1JlbmRlcmJ1ZmZlcihFWFRSQUNU
KHJlbmRlcmJ1ZmZlcikpOworICAgIHJldHVybiBnbElzUmVuZGVyYnVmZmVyRVhUKEVYVFJBQ1Qo
cmVuZGVyYnVmZmVyKSk7CiB9CiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmlzU2hhZGVyKFdl
YkdMU2hhZGVyKiBzaGFkZXIpCkBAIC0xODQxLDcgKzE2ODIsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpyZWxlYXNlU2hhZGVyQ29tCiB7CiB9CiAKLUdMX1NBTUVfTUVUSE9EXzQoUmVuZGVy
YnVmZmVyU3RvcmFnZSwgcmVuZGVyYnVmZmVyU3RvcmFnZSwgdW5zaWduZWQgbG9uZywgdW5zaWdu
ZWQgbG9uZywgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZykKK0dMX1NBTUVfTUVUSE9EXzQo
UmVuZGVyYnVmZmVyU3RvcmFnZUVYVCwgcmVuZGVyYnVmZmVyU3RvcmFnZSwgdW5zaWduZWQgbG9u
ZywgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZykKIAogR0xfU0FN
RV9NRVRIT0RfMihTYW1wbGVDb3ZlcmFnZSwgc2FtcGxlQ292ZXJhZ2UsIGRvdWJsZSwgYm9vbCkK
IApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkocmV2aXNpb24gNTEzMTIpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSw1MyBAQAorMjAwOS0xMS0yMyAgS2VubmV0aCBSdXNzZWxs
ICA8a2JyQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQ2hhbmdlIGdldC4uLiBjYWxscyB0byBsYXRlc3Qgc3BlYworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzAwOTEKKworICAgICAgICBS
ZW1vdmVkIG9sZCB2ZXJzaW9ucyBvZiBnZXQgY2FsbHMgb24gV2ViR0xSZW5kZXJpbmdDb250ZXh0
IGFuZAorICAgICAgICBhZGRlZCBuZXcgb25lcyBwZXIgc3BlYyByZXR1cm5pbmcgImFueSIuIE5l
dyBjb2RlIHNpbXBsaWZpZXMKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0M0QgYW5kIGZpeGVzIHBy
ZXZpb3VzbHkgdW5pbXBsZW1lbnRlZCByb3V0aW5lcy4KKyAgICAgICAgQWRkZWQgY3VzdG9tIEpT
IGFuZCBWOCBiaW5kaW5ncy4gQWRkZWQgZXhoYXVzdGl2ZSB0ZXN0IGNhc2UKKyAgICAgICAgZXhl
cmNpc2luZyBhbGwgbmV3IGNvZGUgcGF0aHMuIFVwZGF0ZWQgcHJlZXhpc3RpbmcgdGVzdCBjYXNl
cyBmb3IKKyAgICAgICAgbmV3IEFQSXMuIEZpeGVkIHByZWV4aXN0aW5nIGJ1Z3MgaW4gV2ViS2l0
J3MgYW5kIENocm9tZSdzIFdlYkdMCisgICAgICAgIGltcGxlbWVudGF0aW9ucy4KKworICAgICAg
ICBSYW4gV2ViR0wgbGF5b3V0IHRlc3RzIGluIFdlYktpdCAoY2xlYW4pIGFuZCBDaHJvbWUgKGNv
dXBsZSBvZgorICAgICAgICBwcmVleGlzdGluZyBrbm93biBmYWlsdXJlcykgYW5kIG1hbnVhbCBX
ZWJHTCB0ZXN0cyBpbiBib3RoCisgICAgICAgIGJyb3dzZXJzLgorCisgICAgICAgIFRlc3Q6IGZh
c3QvY2FudmFzL3dlYmdsL2dsLW9iamVjdC1nZXQtY2FsbHMuaHRtbAorCisgICAgICAgICogZmFz
dC9jYW52YXMvd2ViZ2wvZ2wtZ2V0LWNhbGxzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0
L2NhbnZhcy93ZWJnbC9nbC1nZXQtY2FsbHMuaHRtbDoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93
ZWJnbC9nbC1vYmplY3QtZ2V0LWNhbGxzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9jYW52YXMvd2ViZ2wvZ2wtb2JqZWN0LWdldC1jYWxscy5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9pbmNvcnJlY3QtY29udGV4dC1vYmplY3QtYmVoYXZpb3Vy
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9udWxsLW9iamVjdC1i
ZWhhdmlvdXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3Jlc291
cmNlcy9ib29sVW5pZm9ybVNoYWRlci52ZXJ0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZh
cy93ZWJnbC9yZXNvdXJjZXMvZmxvYXRVbmlmb3JtU2hhZGVyLnZlcnQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy9pbnRVbmlmb3JtU2hhZGVyLnZlcnQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy9tYXRVbmlmb3JtU2hh
ZGVyLnZlcnQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy9u
b29wVW5pZm9ybVNoYWRlci5mcmFnOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJn
bC9yZXNvdXJjZXMvdXRpbHMzZC5qczoKKyAgICAgICAgKGluaXRXZWJHTCk6CisgICAgICAgIChs
b2FkU2hhZGVyKToKKyAgICAgICAgKEZyYW1lcmF0ZS5wcm90b3R5cGUuc25hcHNob3QpOgorICAg
ICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy93ZWJnbC10ZXN0LmpzOgorICAgICAg
ICAobG9hZFByb2dyYW0pOgorICAgICAgICAobG9hZFN0YW5kYXJkVmVydGV4U2hhZGVyKToKKyAg
ICAgICAgKGxvYWRWZXJ0ZXhTaGFkZXIpOgorICAgICAgICAobG9hZFN0YW5kYXJkRnJhZ21lbnRT
aGFkZXIpOgorICAgICAgICAobG9hZEZyYWdtZW50U2hhZGVyKToKKyAgICAgICAgKiBmYXN0L2Nh
bnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvZ2wtb2JqZWN0LWdldC1jYWxscy5qczogQWRkZWQuCisg
ICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL2luY29ycmVjdC1jb250ZXh0
LW9iamVjdC1iZWhhdmlvdXIuanM6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0
LXRlc3RzL251bGwtb2JqZWN0LWJlaGF2aW91ci5qczoKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93
ZWJnbC90cmlhbmdsZS5odG1sOgorICAgICAgICAqIGZhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzOgorICAgICAgICAoc2hvdWxkQmVOb25aZXJvKToKKyAgICAgICAgKHNob3VsZEJlTm9u
TnVsbCk6CisKIDIwMDktMTEtMjIgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3dlYmdsL2dsLWdldC1jYWxscy1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtZ2V0LWNhbGxzLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gNTEyNzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC1n
ZXQtY2FsbHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMyw2MCArMTMsNjEgQEAg
Q29udGV4dCBjb250YWlucyBnZXRFcnJvcgogUEFTUyBjb250ZXh0IGNvbnRhaW5zIGdldEVycm9y
CiAKIENoZWNrIGRlZmF1bHQgdmFsdWVzCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0
LkFDVElWRV9URVhUVVJFKSBpcyBjb250ZXh0LlRFWFRVUkUwCi1QQVNTIGNvbnRleHQuZ2V0SW50
ZWdlcihjb250ZXh0LkFMSUFTRURfTElORV9XSURUSF9SQU5HRSkgaXMgMQotUEFTUyBjb250ZXh0
LmdldEludGVnZXIoY29udGV4dC5BTElBU0VEX1BPSU5UX1NJWkVfUkFOR0UpIGlzIDEKLVBBU1Mg
Y29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuQVJSQVlfQlVGRkVSX0JJTkRJTkcpIGlzIDAKLVBB
U1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuQkxFTkQpIGlzIDAKLVBBU1MgY29udGV4dC5n
ZXRJbnRlZ2VyKGNvbnRleHQuQkxFTkRfQ09MT1IpIGlzIDAKLVBBU1MgY29udGV4dC5nZXRJbnRl
Z2VyKGNvbnRleHQuQkxFTkRfRFNUX0FMUEhBKSBpcyAwCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdl
cihjb250ZXh0LkJMRU5EX0RTVF9SR0IpIGlzIDAKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNv
bnRleHQuQkxFTkRfRVFVQVRJT05fQUxQSEEpIGlzIGNvbnRleHQuRlVOQ19BREQKLVBBU1MgY29u
dGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuQkxFTkRfRVFVQVRJT05fUkdCKSBpcyBjb250ZXh0LkZV
TkNfQURECi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkJMRU5EX1NSQ19BTFBIQSkg
aXMgMQotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5CTEVORF9TUkNfUkdCKSBpcyAx
Ci1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkNPTE9SX0NMRUFSX1ZBTFVFKSBpcyAw
Ci1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkNPTE9SX1dSSVRFTUFTSykgaXMgMQot
UEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5DVUxMX0ZBQ0UpIGlzIDAKLVBBU1MgY29u
dGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuQ1VMTF9GQUNFX01PREUpIGlzIGNvbnRleHQuQkFDSwot
UEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5DVVJSRU5UX1BST0dSQU0pIGlzIDAKLVBB
U1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuREVQVEhfRlVOQykgaXMgY29udGV4dC5MRVNT
Ci1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkRFUFRIX1JBTkdFKSBpcyAwCi1QQVNT
IGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkRFUFRIX1RFU1QpIGlzIDAKLVBBU1MgY29udGV4
dC5nZXRJbnRlZ2VyKGNvbnRleHQuREVQVEhfV1JJVEVNQVNLKSBpcyAxCi1QQVNTIGNvbnRleHQu
Z2V0SW50ZWdlcihjb250ZXh0LkRJVEhFUikgaXMgMQotUEFTUyBjb250ZXh0LmdldEludGVnZXIo
Y29udGV4dC5FTEVNRU5UX0FSUkFZX0JVRkZFUl9CSU5ESU5HKSBpcyAwCi1QQVNTIGNvbnRleHQu
Z2V0SW50ZWdlcihjb250ZXh0LkZST05UX0ZBQ0UpIGlzIGNvbnRleHQuQ0NXCi1QQVNTIGNvbnRl
eHQuZ2V0SW50ZWdlcihjb250ZXh0LkdFTkVSQVRFX01JUE1BUF9ISU5UKSBpcyBjb250ZXh0LkRP
TlRfQ0FSRQotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5MSU5FX1dJRFRIKSBpcyAx
Ci1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlBPTFlHT05fT0ZGU0VUX0ZBQ1RPUikg
aXMgMAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5QT0xZR09OX09GRlNFVF9GSUxM
KSBpcyAwCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlBPTFlHT05fT0ZGU0VUX1VO
SVRTKSBpcyAwCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlJFTkRFUkJVRkZFUl9C
SU5ESU5HX0VYVCkgaXMgMAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TQU1QTEVf
Q09WRVJBR0VfSU5WRVJUKSBpcyAwCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlNB
TVBMRV9DT1ZFUkFHRV9WQUxVRSkgaXMgMQotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4
dC5TQ0lTU09SX0JPWCkgaXMgMAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TQ0lT
U09SX1RFU1QpIGlzIDAKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9C
QUNLX0ZBSUwpIGlzIGNvbnRleHQuS0VFUAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4
dC5TVEVOQ0lMX0JBQ0tfRlVOQykgaXMgY29udGV4dC5BTFdBWVMKLVBBU1MgY29udGV4dC5nZXRJ
bnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfRkFJTCkgaXMgY29udGV4dC5L
RUVQCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlNURU5DSUxfQkFDS19QQVNTX0RF
UFRIX1BBU1MpIGlzIGNvbnRleHQuS0VFUAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4
dC5TVEVOQ0lMX0JBQ0tfUkVGKSBpcyAwCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0
LlNURU5DSUxfQkFDS19WQUxVRV9NQVNLKSBpcyAtMQotUEFTUyBjb250ZXh0LmdldEludGVnZXIo
Y29udGV4dC5TVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLKSBpcyAtMQotUEFTUyBjb250ZXh0LmdldElu
dGVnZXIoY29udGV4dC5TVEVOQ0lMX0JJVFMpIGlzIDAKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2Vy
KGNvbnRleHQuU1RFTkNJTF9DTEVBUl9WQUxVRSkgaXMgMAotUEFTUyBjb250ZXh0LmdldEludGVn
ZXIoY29udGV4dC5TVEVOQ0lMX0ZBSUwpIGlzIGNvbnRleHQuS0VFUAotUEFTUyBjb250ZXh0Lmdl
dEludGVnZXIoY29udGV4dC5TVEVOQ0lMX0ZVTkMpIGlzIGNvbnRleHQuQUxXQVlTCi1QQVNTIGNv
bnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlNURU5DSUxfUEFTU19ERVBUSF9GQUlMKSBpcyBjb250
ZXh0LktFRVAKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9QQVNTX0RF
UFRIX1BBU1MpIGlzIGNvbnRleHQuS0VFUAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4
dC5TVEVOQ0lMX1JFRikgaXMgMAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVO
Q0lMX1RFU1QpIGlzIDAKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9W
QUxVRV9NQVNLKSBpcyAtMQotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVOQ0lM
X1dSSVRFTUFTSykgaXMgLTEKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuVEVYVFVS
RV9CSU5ESU5HXzJEKSBpcyAwCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlRFWFRV
UkVfQklORElOR19DVUJFX01BUCkgaXMgMAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4
dC5WSUVXUE9SVCkgaXMgMAorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkFDVElW
RV9URVhUVVJFKSBpcyBjb250ZXh0LlRFWFRVUkUwCitQQVNTIChjb250ZXh0LmdldFBhcmFtZXRl
cihjb250ZXh0LkFMSUFTRURfTElORV9XSURUSF9SQU5HRSlbMF0gPT0gMSkgfHwgKGNvbnRleHQu
Z2V0UGFyYW1ldGVyKGNvbnRleHQuQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFKVsxXSA9PSAxKSBp
cyB0cnVlCitQQVNTIChjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkFMSUFTRURfUE9JTlRf
U0laRV9SQU5HRSlbMF0gPT0gMSkgfHwgKGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQUxJ
QVNFRF9QT0lOVF9TSVpFX1JBTkdFKVsxXSA9PSAxKSBpcyB0cnVlCitQQVNTIGNvbnRleHQuZ2V0
UGFyYW1ldGVyKGNvbnRleHQuQVJSQVlfQlVGRkVSX0JJTkRJTkcpIGlzIG51bGwKK1BBU1MgY29u
dGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5CTEVORCkgaXMgZmFsc2UKK1BBU1MgY29udGV4dC5n
ZXRQYXJhbWV0ZXIoY29udGV4dC5CTEVORF9DT0xPUikgaXMgWzAsIDAsIDAsIDBdCitQQVNTIGNv
bnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQkxFTkRfRFNUX0FMUEhBKSBpcyAwCitQQVNTIGNv
bnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQkxFTkRfRFNUX1JHQikgaXMgMAorUEFTUyBjb250
ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkJMRU5EX0VRVUFUSU9OX0FMUEhBKSBpcyBjb250ZXh0
LkZVTkNfQURECitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQkxFTkRfRVFVQVRJ
T05fUkdCKSBpcyBjb250ZXh0LkZVTkNfQURECitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNv
bnRleHQuQkxFTkRfU1JDX0FMUEhBKSBpcyAxCitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNv
bnRleHQuQkxFTkRfU1JDX1JHQikgaXMgMQorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250
ZXh0LkNPTE9SX0NMRUFSX1ZBTFVFKSBpcyBbMCwgMCwgMCwgMF0KK1BBU1MgY29udGV4dC5nZXRQ
YXJhbWV0ZXIoY29udGV4dC5DT0xPUl9XUklURU1BU0spIGlzIFsxLCAxLCAxLCAxXQorUEFTUyBj
b250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkNVTExfRkFDRSkgaXMgZmFsc2UKK1BBU1MgY29u
dGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5DVUxMX0ZBQ0VfTU9ERSkgaXMgY29udGV4dC5CQUNL
CitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQ1VSUkVOVF9QUk9HUkFNKSBpcyBu
dWxsCitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuREVQVEhfRlVOQykgaXMgY29u
dGV4dC5MRVNTCitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuREVQVEhfUkFOR0Up
IGlzIFswLCAxXQorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkRFUFRIX1RFU1Qp
IGlzIGZhbHNlCitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuREVQVEhfV1JJVEVN
QVNLKSBpcyB0cnVlCitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuRElUSEVSKSBp
cyB0cnVlCitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuRUxFTUVOVF9BUlJBWV9C
VUZGRVJfQklORElORykgaXMgbnVsbAorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0
LkZST05UX0ZBQ0UpIGlzIGNvbnRleHQuQ0NXCitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNv
bnRleHQuR0VORVJBVEVfTUlQTUFQX0hJTlQpIGlzIGNvbnRleHQuRE9OVF9DQVJFCitQQVNTIGNv
bnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuTElORV9XSURUSCkgaXMgMQorUEFTUyBjb250ZXh0
LmdldFBhcmFtZXRlcihjb250ZXh0LlBPTFlHT05fT0ZGU0VUX0ZBQ1RPUikgaXMgMAorUEFTUyBj
b250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlBPTFlHT05fT0ZGU0VUX0ZJTEwpIGlzIGZhbHNl
CitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuUE9MWUdPTl9PRkZTRVRfVU5JVFMp
IGlzIDAKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5SRU5ERVJCVUZGRVJfQklO
RElORykgaXMgbnVsbAorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNBTVBMRV9D
T1ZFUkFHRV9JTlZFUlQpIGlzIGZhbHNlCitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRl
eHQuU0FNUExFX0NPVkVSQUdFX1ZBTFVFKSBpcyAxCitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVy
KGNvbnRleHQuU0NJU1NPUl9CT1gpWzBdIGlzIDAKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIo
Y29udGV4dC5TQ0lTU09SX0JPWClbMV0gaXMgMAorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihj
b250ZXh0LlNDSVNTT1JfVEVTVCkgaXMgZmFsc2UKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIo
Y29udGV4dC5TVEVOQ0lMX0JBQ0tfRkFJTCkgaXMgY29udGV4dC5LRUVQCitQQVNTIGNvbnRleHQu
Z2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9CQUNLX0ZVTkMpIGlzIGNvbnRleHQuQUxXQVlT
CitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9CQUNLX1BBU1NfREVQ
VEhfRkFJTCkgaXMgY29udGV4dC5LRUVQCitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRl
eHQuU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTUykgaXMgY29udGV4dC5LRUVQCitQQVNTIGNv
bnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9CQUNLX1JFRikgaXMgMAorUEFTUyBj
b250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5DSUxfQkFDS19WQUxVRV9NQVNLKSBpcyAw
eEZGRkZGRkZGCitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9CQUNL
X1dSSVRFTUFTSykgaXMgMHhGRkZGRkZGRgorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250
ZXh0LlNURU5DSUxfQklUUykgaXMgMAorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0
LlNURU5DSUxfQ0xFQVJfVkFMVUUpIGlzIDAKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29u
dGV4dC5TVEVOQ0lMX0ZBSUwpIGlzIGNvbnRleHQuS0VFUAorUEFTUyBjb250ZXh0LmdldFBhcmFt
ZXRlcihjb250ZXh0LlNURU5DSUxfRlVOQykgaXMgY29udGV4dC5BTFdBWVMKK1BBU1MgY29udGV4
dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX1BBU1NfREVQVEhfRkFJTCkgaXMgY29udGV4
dC5LRUVQCitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9QQVNTX0RF
UFRIX1BBU1MpIGlzIGNvbnRleHQuS0VFUAorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250
ZXh0LlNURU5DSUxfUkVGKSBpcyAwCitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQu
U1RFTkNJTF9URVNUKSBpcyBmYWxzZQorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0
LlNURU5DSUxfVkFMVUVfTUFTSykgaXMgMHhGRkZGRkZGRgorUEFTUyBjb250ZXh0LmdldFBhcmFt
ZXRlcihjb250ZXh0LlNURU5DSUxfV1JJVEVNQVNLKSBpcyAweEZGRkZGRkZGCitQQVNTIGNvbnRl
eHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuVEVYVFVSRV9CSU5ESU5HXzJEKSBpcyBudWxsCitQQVNT
IGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQKSBp
cyBudWxsCitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuVklFV1BPUlQpIGlzIFsw
LCAwLCAyLCAyXQogCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLWdldC1jYWxscy5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLWdldC1jYWxscy5odG1sCShyZXZp
c2lvbiA1MTI3OCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLWdldC1jYWxs
cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03LDcgKzcsNyBAQAogPGJvZHk+CiA8ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+PC9kaXY+CiA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxjYW52YXMgaWQ9
ImNhbnZhcyI+IDwvY2FudmFzPgorPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMiIgaGVpZ2h0
PSIyIj4gPC9jYW52YXM+CiAKIDxzY3JpcHQ+CiAKQEAgLTM4LDYwICszOCw2MSBAQCBlbHNlIHsK
IAogICAgIGRlYnVnKCIiKTsKICAgICBkZWJ1ZygiQ2hlY2sgZGVmYXVsdCB2YWx1ZXMiKTsKLSAg
ICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuQUNUSVZFX1RFWFRVUkUpJywg
J2NvbnRleHQuVEVYVFVSRTAnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNv
bnRleHQuQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFKScsICcxJyk7Ci0gICAgc2hvdWxkQmUoJ2Nv
bnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkFMSUFTRURfUE9JTlRfU0laRV9SQU5HRSknLCAnMScp
OwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5BUlJBWV9CVUZGRVJf
QklORElORyknLCAnMCcpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4
dC5CTEVORCknLCAnMCcpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4
dC5CTEVORF9DT0xPUiknLCAnMCcpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIo
Y29udGV4dC5CTEVORF9EU1RfQUxQSEEpJywgJzAnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5n
ZXRJbnRlZ2VyKGNvbnRleHQuQkxFTkRfRFNUX1JHQiknLCAnMCcpOwotICAgIHNob3VsZEJlKCdj
b250ZXh0LmdldEludGVnZXIoY29udGV4dC5CTEVORF9FUVVBVElPTl9BTFBIQSknLCAnY29udGV4
dC5GVU5DX0FERCcpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5C
TEVORF9FUVVBVElPTl9SR0IpJywgJ2NvbnRleHQuRlVOQ19BREQnKTsKLSAgICBzaG91bGRCZSgn
Y29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuQkxFTkRfU1JDX0FMUEhBKScsICcxJyk7Ci0gICAg
c2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkJMRU5EX1NSQ19SR0IpJywgJzEn
KTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuQ09MT1JfQ0xFQVJf
VkFMVUUpJywgJzAnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQu
Q09MT1JfV1JJVEVNQVNLKScsICcxJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdl
cihjb250ZXh0LkNVTExfRkFDRSknLCAnMCcpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldElu
dGVnZXIoY29udGV4dC5DVUxMX0ZBQ0VfTU9ERSknLCAnY29udGV4dC5CQUNLJyk7Ci0gICAgc2hv
dWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkNVUlJFTlRfUFJPR1JBTSknLCAnMCcp
OwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5ERVBUSF9GVU5DKScs
ICdjb250ZXh0LkxFU1MnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRl
eHQuREVQVEhfUkFOR0UpJywgJzAnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2Vy
KGNvbnRleHQuREVQVEhfVEVTVCknLCAnMCcpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldElu
dGVnZXIoY29udGV4dC5ERVBUSF9XUklURU1BU0spJywgJzEnKTsKLSAgICBzaG91bGRCZSgnY29u
dGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuRElUSEVSKScsICcxJyk7Ci0gICAgc2hvdWxkQmUoJ2Nv
bnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkVMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkcpJywg
JzAnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuRlJPTlRfRkFD
RSknLCAnY29udGV4dC5DQ1cnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNv
bnRleHQuR0VORVJBVEVfTUlQTUFQX0hJTlQpJywgJ2NvbnRleHQuRE9OVF9DQVJFJyk7Ci0gICAg
c2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkxJTkVfV0lEVEgpJywgJzEnKTsK
LSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuUE9MWUdPTl9PRkZTRVRf
RkFDVE9SKScsICcwJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0
LlBPTFlHT05fT0ZGU0VUX0ZJTEwpJywgJzAnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJ
bnRlZ2VyKGNvbnRleHQuUE9MWUdPTl9PRkZTRVRfVU5JVFMpJywgJzAnKTsKLSAgICBzaG91bGRC
ZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuUkVOREVSQlVGRkVSX0JJTkRJTkdfRVhUKScs
ICcwJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlNBTVBMRV9D
T1ZFUkFHRV9JTlZFUlQpJywgJzAnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2Vy
KGNvbnRleHQuU0FNUExFX0NPVkVSQUdFX1ZBTFVFKScsICcxJyk7Ci0gICAgc2hvdWxkQmUoJ2Nv
bnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlNDSVNTT1JfQk9YKScsICcwJyk7Ci0gICAgc2hvdWxk
QmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlNDSVNTT1JfVEVTVCknLCAnMCcpOwotICAg
IHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVOQ0lMX0JBQ0tfRkFJTCkn
LCAnY29udGV4dC5LRUVQJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250
ZXh0LlNURU5DSUxfQkFDS19GVU5DKScsICdjb250ZXh0LkFMV0FZUycpOwotICAgIHNob3VsZEJl
KCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9GQUlM
KScsICdjb250ZXh0LktFRVAnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNv
bnRleHQuU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTUyknLCAnY29udGV4dC5LRUVQJyk7Ci0g
ICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlNURU5DSUxfQkFDS19SRUYp
JywgJzAnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJ
TF9CQUNLX1ZBTFVFX01BU0spJywgJy0xJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50
ZWdlcihjb250ZXh0LlNURU5DSUxfQkFDS19XUklURU1BU0spJywgJy0xJyk7Ci0gICAgc2hvdWxk
QmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlNURU5DSUxfQklUUyknLCAnMCcpOwotICAg
IHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVOQ0lMX0NMRUFSX1ZBTFVF
KScsICcwJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlNURU5D
SUxfRkFJTCknLCAnY29udGV4dC5LRUVQJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50
ZWdlcihjb250ZXh0LlNURU5DSUxfRlVOQyknLCAnY29udGV4dC5BTFdBWVMnKTsKLSAgICBzaG91
bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9QQVNTX0RFUFRIX0ZBSUwp
JywgJ2NvbnRleHQuS0VFUCcpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29u
dGV4dC5TVEVOQ0lMX1BBU1NfREVQVEhfUEFTUyknLCAnY29udGV4dC5LRUVQJyk7Ci0gICAgc2hv
dWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlNURU5DSUxfUkVGKScsICcwJyk7Ci0g
ICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlNURU5DSUxfVEVTVCknLCAn
MCcpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVOQ0lMX1ZB
TFVFX01BU0spJywgJy0xJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250
ZXh0LlNURU5DSUxfV1JJVEVNQVNLKScsICctMScpOwotICAgIHNob3VsZEJlKCdjb250ZXh0Lmdl
dEludGVnZXIoY29udGV4dC5URVhUVVJFX0JJTkRJTkdfMkQpJywgJzAnKTsKLSAgICBzaG91bGRC
ZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQKScs
ICcwJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlZJRVdQT1JU
KScsICcwJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQUNU
SVZFX1RFWFRVUkUpJywgJ2NvbnRleHQuVEVYVFVSRTAnKTsKKyAgICBzaG91bGRCZSgnKGNvbnRl
eHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFKVswXSA9PSAx
KSB8fCAoY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5BTElBU0VEX0xJTkVfV0lEVEhfUkFO
R0UpWzFdID09IDEpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnKGNvbnRleHQuZ2V0UGFyYW1l
dGVyKGNvbnRleHQuQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFKVswXSA9PSAxKSB8fCAoY29udGV4
dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5BTElBU0VEX1BPSU5UX1NJWkVfUkFOR0UpWzFdID09IDEp
JywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5B
UlJBWV9CVUZGRVJfQklORElORyknLCAnbnVsbCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0Lmdl
dFBhcmFtZXRlcihjb250ZXh0LkJMRU5EKScsICdmYWxzZScpOworICAgIHNob3VsZEJlKCdjb250
ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkJMRU5EX0NPTE9SKScsICdbMCwgMCwgMCwgMF0nKTsK
KyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5CTEVORF9EU1RfQUxQ
SEEpJywgJzAnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5C
TEVORF9EU1RfUkdCKScsICcwJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVy
KGNvbnRleHQuQkxFTkRfRVFVQVRJT05fQUxQSEEpJywgJ2NvbnRleHQuRlVOQ19BREQnKTsKKyAg
ICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5CTEVORF9FUVVBVElPTl9S
R0IpJywgJ2NvbnRleHQuRlVOQ19BREQnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJh
bWV0ZXIoY29udGV4dC5CTEVORF9TUkNfQUxQSEEpJywgJzEnKTsKKyAgICBzaG91bGRCZSgnY29u
dGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5CTEVORF9TUkNfUkdCKScsICcxJyk7CisgICAgc2hv
dWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQ09MT1JfQ0xFQVJfVkFMVUUpJywg
J1swLCAwLCAwLCAwXScpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250
ZXh0LkNPTE9SX1dSSVRFTUFTSyknLCAnWzEsIDEsIDEsIDFdJyk7CisgICAgc2hvdWxkQmUoJ2Nv
bnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQ1VMTF9GQUNFKScsICdmYWxzZScpOworICAgIHNo
b3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkNVTExfRkFDRV9NT0RFKScsICdj
b250ZXh0LkJBQ0snKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4
dC5DVVJSRU5UX1BST0dSQU0pJywgJ251bGwnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQ
YXJhbWV0ZXIoY29udGV4dC5ERVBUSF9GVU5DKScsICdjb250ZXh0LkxFU1MnKTsKKyAgICBzaG91
bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5ERVBUSF9SQU5HRSknLCAnWzAsIDFd
Jyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuREVQVEhfVEVT
VCknLCAnZmFsc2UnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4
dC5ERVBUSF9XUklURU1BU0spJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQ
YXJhbWV0ZXIoY29udGV4dC5ESVRIRVIpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnY29udGV4
dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5FTEVNRU5UX0FSUkFZX0JVRkZFUl9CSU5ESU5HKScsICdu
dWxsJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuRlJPTlRf
RkFDRSknLCAnY29udGV4dC5DQ1cnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0
ZXIoY29udGV4dC5HRU5FUkFURV9NSVBNQVBfSElOVCknLCAnY29udGV4dC5ET05UX0NBUkUnKTsK
KyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5MSU5FX1dJRFRIKScs
ICcxJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuUE9MWUdP
Tl9PRkZTRVRfRkFDVE9SKScsICcwJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1l
dGVyKGNvbnRleHQuUE9MWUdPTl9PRkZTRVRfRklMTCknLCAnZmFsc2UnKTsKKyAgICBzaG91bGRC
ZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5QT0xZR09OX09GRlNFVF9VTklUUyknLCAn
MCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlJFTkRFUkJV
RkZFUl9CSU5ESU5HKScsICdudWxsJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1l
dGVyKGNvbnRleHQuU0FNUExFX0NPVkVSQUdFX0lOVkVSVCknLCAnZmFsc2UnKTsKKyAgICBzaG91
bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TQU1QTEVfQ09WRVJBR0VfVkFMVUUp
JywgJzEnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TQ0lT
U09SX0JPWClbMF0nLCAnMCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihj
b250ZXh0LlNDSVNTT1JfQk9YKVsxXScsICcwJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0
UGFyYW1ldGVyKGNvbnRleHQuU0NJU1NPUl9URVNUKScsICdmYWxzZScpOworICAgIHNob3VsZEJl
KCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5DSUxfQkFDS19GQUlMKScsICdjb250
ZXh0LktFRVAnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5T
VEVOQ0lMX0JBQ0tfRlVOQyknLCAnY29udGV4dC5BTFdBWVMnKTsKKyAgICBzaG91bGRCZSgnY29u
dGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9GQUlMKScs
ICdjb250ZXh0LktFRVAnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29u
dGV4dC5TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9QQVNTKScsICdjb250ZXh0LktFRVAnKTsKKyAg
ICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX0JBQ0tfUkVG
KScsICcwJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RF
TkNJTF9CQUNLX1ZBTFVFX01BU0spJywgJzB4RkZGRkZGRkYnKTsKKyAgICBzaG91bGRCZSgnY29u
dGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLKScsICcweEZG
RkZGRkZGJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RF
TkNJTF9CSVRTKScsICcwJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNv
bnRleHQuU1RFTkNJTF9DTEVBUl9WQUxVRSknLCAnMCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0
LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5DSUxfRkFJTCknLCAnY29udGV4dC5LRUVQJyk7Cisg
ICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9GVU5DKScs
ICdjb250ZXh0LkFMV0FZUycpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihj
b250ZXh0LlNURU5DSUxfUEFTU19ERVBUSF9GQUlMKScsICdjb250ZXh0LktFRVAnKTsKKyAgICBz
aG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX1BBU1NfREVQVEhf
UEFTUyknLCAnY29udGV4dC5LRUVQJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1l
dGVyKGNvbnRleHQuU1RFTkNJTF9SRUYpJywgJzAnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5n
ZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX1RFU1QpJywgJ2ZhbHNlJyk7CisgICAgc2hvdWxk
QmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9WQUxVRV9NQVNLKScsICcw
eEZGRkZGRkZGJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQu
U1RFTkNJTF9XUklURU1BU0spJywgJzB4RkZGRkZGRkYnKTsKKyAgICBzaG91bGRCZSgnY29udGV4
dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5URVhUVVJFX0JJTkRJTkdfMkQpJywgJ251bGwnKTsKKyAg
ICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5URVhUVVJFX0JJTkRJTkdf
Q1VCRV9NQVApJywgJ251bGwnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIo
Y29udGV4dC5WSUVXUE9SVCknLCAnWzAsIDAsIDIsIDJdJyk7CiB9CiAKIGRlYnVnKCIiKTsKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLW9iamVjdC1nZXQtY2FsbHMtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2ds
LW9iamVjdC1nZXQtY2FsbHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtb2JqZWN0LWdldC1jYWxscy1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsODAgQEAKK1Rlc3Qgb2YgZ2V0IGNhbGxzIGFnYWluc3QgR0wg
b2JqZWN0cyBsaWtlIGdldEJ1ZmZlclBhcmFtZXRlciwgZXRjLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKK1BBU1MgZ2wuZ2V0QnVmZmVyUGFyYW1ldGVyKGdsLkFSUkFZX0JVRkZFUiwg
Z2wuQlVGRkVSX1NJWkUpIGlzIDE2CitQQVNTIGdsLmdldEJ1ZmZlclBhcmFtZXRlcihnbC5BUlJB
WV9CVUZGRVIsIGdsLkJVRkZFUl9VU0FHRSkgaXMgZ2wuRFlOQU1JQ19EUkFXCitQQVNTIGdsLmdl
dEVycm9yKCkgaXMgMAorUEFTUyBnbC5nZXRFcnJvcigpIGlzIDAKK1BBU1MgZ2wuZ2V0RXJyb3Io
KSBpcyAwCitQQVNTIGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpIGlz
IGdsLkZSQU1FQlVGRkVSX0NPTVBMRVRFCitQQVNTIGdsLmdldEZyYW1lYnVmZmVyQXR0YWNobWVu
dFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLkZSQU1F
QlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEUpIGlzIGdsLlRFWFRVUkUKK1BBU1MgZ2wuZ2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9B
VFRBQ0hNRU5UMCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRSkgaXMgbm9u
LW51bGwuCitQQVNTIGdsLmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFN
RUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRf
VEVYVFVSRV9MRVZFTCkgaXMgMAorUEFTUyBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJh
bWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5GUkFNRUJVRkZF
Ul9BVFRBQ0hNRU5UX1RFWFRVUkVfQ1VCRV9NQVBfRkFDRSkgaXMgMAorUEFTUyBnbC5nZXRGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkRFUFRIX0FUVEFD
SE1FTlQsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEUpIGlzIGdsLlJFTkRF
UkJVRkZFUgorUEFTUyBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJB
TUVCVUZGRVIsIGdsLkRFUFRIX0FUVEFDSE1FTlQsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRf
T0JKRUNUX05BTUUpIGlzIG5vbi1udWxsLgorUEFTUyBnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHN0
YW5kYXJkUHJvZ3JhbSwgZ2wuREVMRVRFX1NUQVRVUykgaXMgZmFsc2UKK1BBU1MgZ2wuZ2V0UHJv
Z3JhbVBhcmFtZXRlcihzdGFuZGFyZFByb2dyYW0sIGdsLkxJTktfU1RBVFVTKSBpcyB0cnVlCitQ
QVNTIHR5cGVvZiBnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHN0YW5kYXJkUHJvZ3JhbSwgZ2wuVkFM
SURBVEVfU1RBVFVTKSBpcyAiYm9vbGVhbiIKK1BBU1MgdHlwZW9mIGdsLmdldFByb2dyYW1QYXJh
bWV0ZXIoc3RhbmRhcmRQcm9ncmFtLCBnbC5JTkZPX0xPR19MRU5HVEgpIGlzICJudW1iZXIiCitQ
QVNTIGdsLmdldFByb2dyYW1QYXJhbWV0ZXIoc3RhbmRhcmRQcm9ncmFtLCBnbC5BVFRBQ0hFRF9T
SEFERVJTKSBpcyAyCitQQVNTIGdsLmdldFByb2dyYW1QYXJhbWV0ZXIoc3RhbmRhcmRQcm9ncmFt
LCBnbC5BQ1RJVkVfQVRUUklCVVRFUykgaXMgMgorUEFTUyBnbC5nZXRQcm9ncmFtUGFyYW1ldGVy
KHN0YW5kYXJkUHJvZ3JhbSwgZ2wuQUNUSVZFX0FUVFJJQlVURV9NQVhfTEVOR1RIKSBpcyBub24t
emVyby4KK1BBU1MgZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihzdGFuZGFyZFByb2dyYW0sIGdsLkFD
VElWRV9VTklGT1JNUykgaXMgMQorUEFTUyBnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHN0YW5kYXJk
UHJvZ3JhbSwgZ2wuQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCkgaXMgbm9uLXplcm8uCitQQVNT
IGdsLmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcihnbC5SRU5ERVJCVUZGRVIsIGdsLlJFTkRFUkJV
RkZFUl9XSURUSCkgaXMgMgorUEFTUyBnbC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoZ2wuUkVO
REVSQlVGRkVSLCBnbC5SRU5ERVJCVUZGRVJfSEVJR0hUKSBpcyAyCitQQVNTIGdsLmdldFJlbmRl
cmJ1ZmZlclBhcmFtZXRlcihnbC5SRU5ERVJCVUZGRVIsIGdsLlJFTkRFUkJVRkZFUl9JTlRFUk5B
TF9GT1JNQVQpIGlzIG5vbi16ZXJvLgorUEFTUyBnbC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIo
Z2wuUkVOREVSQlVGRkVSLCBnbC5SRU5ERVJCVUZGRVJfREVQVEhfU0laRSkgaXMgbm9uLXplcm8u
CitQQVNTIGdsLmdldEVycm9yKCkgaXMgMAorUEFTUyBnbC5nZXRFcnJvcigpIGlzIDAKK1BBU1Mg
Z2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkVOREVSQlVG
RkVSX1JFRF9TSVpFKSBpcyBub24temVyby4KK1BBU1MgZ2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1l
dGVyKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkVOREVSQlVGRkVSX0dSRUVOX1NJWkUpIGlzIG5vbi16
ZXJvLgorUEFTUyBnbC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBn
bC5SRU5ERVJCVUZGRVJfQkxVRV9TSVpFKSBpcyBub24temVyby4KK1BBU1MgZ2wuZ2V0UmVuZGVy
YnVmZmVyUGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkVOREVSQlVGRkVSX0FMUEhBX1NJ
WkUpIGlzIG5vbi16ZXJvLgorUEFTUyBnbC5nZXRTaGFkZXJQYXJhbWV0ZXIoc3RhbmRhcmRWZXJ0
LCBnbC5TSEFERVJfVFlQRSkgaXMgZ2wuVkVSVEVYX1NIQURFUgorUEFTUyBnbC5nZXRTaGFkZXJQ
YXJhbWV0ZXIoc3RhbmRhcmRWZXJ0LCBnbC5ERUxFVEVfU1RBVFVTKSBpcyBmYWxzZQorUEFTUyBn
bC5nZXRTaGFkZXJQYXJhbWV0ZXIoc3RhbmRhcmRWZXJ0LCBnbC5DT01QSUxFX1NUQVRVUykgaXMg
dHJ1ZQorUEFTUyB0eXBlb2YgZ2wuZ2V0U2hhZGVyUGFyYW1ldGVyKHN0YW5kYXJkVmVydCwgZ2wu
SU5GT19MT0dfTEVOR1RIKSBpcyAibnVtYmVyIgorUEFTUyBnbC5nZXRTaGFkZXJQYXJhbWV0ZXIo
c3RhbmRhcmRWZXJ0LCBnbC5TSEFERVJfU09VUkNFX0xFTkdUSCkgaXMgbm9uLXplcm8uCitQQVNT
IGdsLmdldFRleFBhcmFtZXRlcihnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01BR19GSUxURVIp
IGlzIGdsLk5FQVJFU1QKK1BBU1MgZ2wuZ2V0VGV4UGFyYW1ldGVyKGdsLlRFWFRVUkVfMkQsIGds
LlRFWFRVUkVfTUlOX0ZJTFRFUikgaXMgZ2wuTkVBUkVTVAorUEFTUyBnbC5nZXRUZXhQYXJhbWV0
ZXIoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1MpIGlzIGdsLkNMQU1QX1RPX0VER0UK
K1BBU1MgZ2wuZ2V0VGV4UGFyYW1ldGVyKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9U
KSBpcyBnbC5DTEFNUF9UT19FREdFCitQQVNTIGdsLmdldFByb2dyYW1QYXJhbWV0ZXIoYm9vbFBy
b2dyYW0sIGdsLkxJTktfU1RBVFVTKSBpcyB0cnVlCitQQVNTIGdsLmdldEVycm9yKCkgaXMgMAor
UEFTUyBnbC5nZXRVbmlmb3JtKGJvb2xQcm9ncmFtLCBidmFsTG9jKSBpcyB0cnVlCitQQVNTIGds
LmdldFVuaWZvcm0oYm9vbFByb2dyYW0sIGJ2YWwyTG9jKSBpcyBbMSwgMF0KK1BBU1MgZ2wuZ2V0
VW5pZm9ybShib29sUHJvZ3JhbSwgYnZhbDNMb2MpIGlzIFsxLCAwLCAxXQorUEFTUyBnbC5nZXRV
bmlmb3JtKGJvb2xQcm9ncmFtLCBidmFsNExvYykgaXMgWzEsIDAsIDEsIDBdCitQQVNTIGdsLmdl
dFByb2dyYW1QYXJhbWV0ZXIoaW50UHJvZ3JhbSwgZ2wuTElOS19TVEFUVVMpIGlzIHRydWUKK1BB
U1MgZ2wuZ2V0RXJyb3IoKSBpcyAwCitQQVNTIGdsLmdldFVuaWZvcm0oaW50UHJvZ3JhbSwgaXZh
bExvYykgaXMgMQorUEFTUyBnbC5nZXRVbmlmb3JtKGludFByb2dyYW0sIGl2YWwyTG9jKSBpcyBb
MiwgM10KK1BBU1MgZ2wuZ2V0VW5pZm9ybShpbnRQcm9ncmFtLCBpdmFsM0xvYykgaXMgWzQsIDUs
IDZdCitQQVNTIGdsLmdldFVuaWZvcm0oaW50UHJvZ3JhbSwgaXZhbDRMb2MpIGlzIFs3LCA4LCA5
LCAxMF0KK1BBU1MgZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihmbG9hdFByb2dyYW0sIGdsLkxJTktf
U1RBVFVTKSBpcyB0cnVlCitQQVNTIGdsLmdldEVycm9yKCkgaXMgMAorUEFTUyBnbC5nZXRVbmlm
b3JtKGZsb2F0UHJvZ3JhbSwgZnZhbExvYykgaXMgMTEKK1BBU1MgZ2wuZ2V0VW5pZm9ybShmbG9h
dFByb2dyYW0sIGZ2YWwyTG9jKSBpcyBbMTIsIDEzXQorUEFTUyBnbC5nZXRVbmlmb3JtKGZsb2F0
UHJvZ3JhbSwgZnZhbDNMb2MpIGlzIFsxNCwgMTUsIDE2XQorUEFTUyBnbC5nZXRVbmlmb3JtKGZs
b2F0UHJvZ3JhbSwgZnZhbDRMb2MpIGlzIFsxNywgMTgsIDE5LCAyMF0KK1BBU1MgZ2wuZ2V0UHJv
Z3JhbVBhcmFtZXRlcihtYXRQcm9ncmFtLCBnbC5MSU5LX1NUQVRVUykgaXMgdHJ1ZQorUEFTUyBn
bC5nZXRFcnJvcigpIGlzIDAKK1BBU1MgZ2wuZ2V0VW5pZm9ybShtYXRQcm9ncmFtLCBtdmFsMkxv
YykgaXMgWzEsIDIsIDMsIDRdCitQQVNTIGdsLmdldFVuaWZvcm0obWF0UHJvZ3JhbSwgbXZhbDNM
b2MpIGlzIFs1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxM10KK1BBU1MgZ2wuZ2V0VW5pZm9y
bShtYXRQcm9ncmFtLCBtdmFsNExvYykgaXMgWzE0LCAxNSwgMTYsIDE3LCAxOCwgMTksIDIwLCAy
MSwgMjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5XQorUEFTUyBnbC5nZXRWZXJ0ZXhBdHRy
aWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElORykgaXMgbm9uLW51bGwu
CitQQVNTIGdsLmdldFZlcnRleEF0dHJpYigxLCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX0VOQUJM
RUQpIGlzIHRydWUKK1BBU1MgZ2wuZ2V0VmVydGV4QXR0cmliKDEsIGdsLlZFUlRFWF9BVFRSSUJf
QVJSQVlfU0laRSkgaXMgNAorUEFTUyAoZ2wuZ2V0VmVydGV4QXR0cmliKDEsIGdsLlZFUlRFWF9B
VFRSSUJfQVJSQVlfU1RSSURFKSA9PSAwKSB8fCAoZ2wuZ2V0VmVydGV4QXR0cmliKDEsIGdsLlZF
UlRFWF9BVFRSSUJfQVJSQVlfU1RSSURFKSA9PSA0ICogZ2wuc2l6ZUluQnl0ZXMoZ2wuRkxPQVQp
KSBpcyB0cnVlCitQQVNTIGdsLmdldFZlcnRleEF0dHJpYigxLCBnbC5WRVJURVhfQVRUUklCX0FS
UkFZX1RZUEUpIGlzIGdsLkZMT0FUCitQQVNTIGdsLmdldFZlcnRleEF0dHJpYigxLCBnbC5WRVJU
RVhfQVRUUklCX0FSUkFZX05PUk1BTElaRUQpIGlzIGZhbHNlCitQQVNTIGdsLmdldFZlcnRleEF0
dHJpYigxLCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX0VOQUJMRUQpIGlzIGZhbHNlCitQQVNTIGds
LmdldFZlcnRleEF0dHJpYigxLCBnbC5DVVJSRU5UX1ZFUlRFWF9BVFRSSUIpIGlzIFs1LCA2LCA3
LCA4XQorUEFTUyBnbC5nZXRFcnJvcigpIGlzIDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93
ZWJnbC9nbC1vYmplY3QtZ2V0LWNhbGxzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvd2ViZ2wvZ2wtb2JqZWN0LWdldC1jYWxscy5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtb2JqZWN0LWdldC1jYWxscy5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
Lz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJnbC10ZXN0LmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+CisKKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvZ2wtb2JqZWN0LWdldC1j
YWxscy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3dlYmdsL2luY29ycmVjdC1jb250ZXh0LW9iamVjdC1iZWhhdmlvdXIt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmds
L2luY29ycmVjdC1jb250ZXh0LW9iamVjdC1iZWhhdmlvdXItZXhwZWN0ZWQudHh0CShyZXZpc2lv
biA1MTI3OCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2luY29ycmVjdC1jb250
ZXh0LW9iamVjdC1iZWhhdmlvdXItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xNywx
NyArMTcsMTIgQEAgUEFTUyBjb250ZXh0QS5iaW5kUmVuZGVyYnVmZmVyKGNvbnRleHRBLgogUEFT
UyBjb250ZXh0QS5iaW5kVGV4dHVyZShjb250ZXh0QS5URVhUVVJFXzJELCB0ZXh0dXJlQikgdGhy
ZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4K
IFBBU1MgY29udGV4dEEuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoY29udGV4dEEuRlJBTUVCVUZG
RVIsIGNvbnRleHRBLkRFUFRIX0FUVEFDSE1FTlQsIGNvbnRleHRBLlJFTkRFUkJVRkZFUiwgcmVu
ZGVyQnVmZmVyQikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9N
IEV4Y2VwdGlvbiAxNy4KIFBBU1MgY29udGV4dEEuZnJhbWVidWZmZXJUZXh0dXJlMkQoY29udGV4
dEEuRlJBTUVCVUZGRVIsIGNvbnRleHRBLkNPTE9SX0FUVEFDSE1FTlQwLCBjb250ZXh0QS5URVhU
VVJFXzJELCB0ZXh0dXJlQiwgMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENI
X0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4dEEuZ2V0UHJvZ3JhbWkocHJvZ3Jh
bUIsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNl
cHRpb24gMTcuCi1QQVNTIGNvbnRleHRBLmdldFByb2dyYW1pdihwcm9ncmFtQiwgMCkgdGhyZXcg
ZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KK1BB
U1MgY29udGV4dEEuZ2V0UHJvZ3JhbVBhcmFtZXRlcihwcm9ncmFtQiwgMCkgdGhyZXcgZXhjZXB0
aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KIFBBU1MgY29u
dGV4dEEuZ2V0UHJvZ3JhbUluZm9Mb2cocHJvZ3JhbUIsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJv
cjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIGNvbnRleHRBLmdl
dFNoYWRlcmkoc2hhZGVyQiwgMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENI
X0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4dEEuZ2V0U2hhZGVyaXYoc2hhZGVy
QiwgMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2Vw
dGlvbiAxNy4KK1BBU1MgY29udGV4dEEuZ2V0U2hhZGVyUGFyYW1ldGVyKHNoYWRlckIsIDApIHRo
cmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcu
CiBQQVNTIGNvbnRleHRBLmdldFNoYWRlckluZm9Mb2coc2hhZGVyQiwgMCkgdGhyZXcgZXhjZXB0
aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KIFBBU1MgY29u
dGV4dEEuZ2V0U2hhZGVyU291cmNlKHNoYWRlckIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQ
RV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIGNvbnRleHRBLmdldFVuaWZv
cm1mKHByb2dyYW1CLCBsb2NhdGlvbkEpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNN
QVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIGNvbnRleHRBLmdldFVuaWZvcm1mdihw
cm9ncmFtQiwgbG9jYXRpb25BKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hf
RVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0QS5nZXRVbmlmb3JtaShwcm9ncmFt
QiwgbG9jYXRpb25BKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBE
T00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0QS5nZXRVbmlmb3JtaXYocHJvZ3JhbUIsIGxv
Y2F0aW9uQSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4
Y2VwdGlvbiAxNy4KK1BBU1MgY29udGV4dEEuZ2V0VW5pZm9ybShwcm9ncmFtQiwgbG9jYXRpb25B
KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9u
IDE3LgogUEFTUyBjb250ZXh0QS5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbUIsICd1X21vZGVs
Vmlld1Byb2pNYXRyaXgnKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJS
OiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9udWxsLW9iamVjdC1iZWhhdmlvdXIt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmds
L251bGwtb2JqZWN0LWJlaGF2aW91ci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDUxMjc4KQorKysg
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvbnVsbC1vYmplY3QtYmVoYXZpb3VyLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTgsMTcgKzE4LDEyIEBAIFBBU1MgY29udGV4dC5i
aW5kUmVuZGVyYnVmZmVyKGNvbnRleHQuUkUKIFBBU1MgY29udGV4dC5iaW5kVGV4dHVyZShjb250
ZXh0LlRFWFRVUkVfMkQsIDApIGlzIHVuZGVmaW5lZC4KIFBBU1MgY29udGV4dC5mcmFtZWJ1ZmZl
clJlbmRlcmJ1ZmZlcihjb250ZXh0LkZSQU1FQlVGRkVSLCBjb250ZXh0LkRFUFRIX0FUVEFDSE1F
TlQsIGNvbnRleHQuUkVOREVSQlVGRkVSLCAwKSBpcyB1bmRlZmluZWQuCiBQQVNTIGNvbnRleHQu
ZnJhbWVidWZmZXJUZXh0dXJlMkQoY29udGV4dC5GUkFNRUJVRkZFUiwgY29udGV4dC5DT0xPUl9B
VFRBQ0hNRU5UMCwgY29udGV4dC5URVhUVVJFXzJELCAwLCAwKSBpcyB1bmRlZmluZWQuCi1QQVNT
IGNvbnRleHQuZ2V0UHJvZ3JhbWkodW5kZWZpbmVkLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6
IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0LmdldFBy
b2dyYW1pdih1bmRlZmluZWQsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRD
SF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCitQQVNTIGNvbnRleHQuZ2V0UHJvZ3JhbVBhcmFtZXRl
cih1bmRlZmluZWQsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6
IERPTSBFeGNlcHRpb24gMTcuCiBQQVNTIGNvbnRleHQuZ2V0UHJvZ3JhbUluZm9Mb2codW5kZWZp
bmVkLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhj
ZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0LmdldFNoYWRlcmkodW5kZWZpbmVkLCAwKSB0aHJldyBl
eGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFT
UyBjb250ZXh0LmdldFNoYWRlcml2KHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9y
OiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KK1BBU1MgY29udGV4dC5nZXRT
aGFkZXJQYXJhbWV0ZXIodW5kZWZpbmVkLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVf
TUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBjb250ZXh0LmdldFNoYWRlcklu
Zm9Mb2codW5kZWZpbmVkLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hf
RVJSOiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBjb250ZXh0LmdldFNoYWRlclNvdXJjZSh1bmRl
ZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNl
cHRpb24gMTcuCi1QQVNTIGNvbnRleHQuZ2V0VW5pZm9ybWYodW5kZWZpbmVkLCAwKSB0aHJldyBl
eGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFT
UyBjb250ZXh0LmdldFVuaWZvcm1mdih1bmRlZmluZWQsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJv
cjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNTIGNvbnRleHQuZ2V0
VW5pZm9ybWkodW5kZWZpbmVkLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFU
Q0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0LmdldFVuaWZvcm1pdih1bmRl
ZmluZWQsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBF
eGNlcHRpb24gMTcuCitQQVNTIGNvbnRleHQuZ2V0VW5pZm9ybSh1bmRlZmluZWQsIDApIHRocmV3
IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCiBQ
QVNTIGNvbnRleHQuZ2V0VW5pZm9ybUxvY2F0aW9uKHVuZGVmaW5lZCwgJ2ZvbycpIHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCiBQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3dlYmdsL3RyaWFuZ2xlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvd2ViZ2wvdHJpYW5nbGUuaHRtbAkocmV2aXNpb24gNTEyNzgpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy93ZWJnbC90cmlhbmdsZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02NCwx
MSArNjQsMTEgQEAKICAgICAgICAgICAgIHZhciBvZmZzZXQgPSAoMTUqNTArMjApICogNDsKICAg
ICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTA7ICsraSkKICAgICAgICAgICAgICAgICBp
ZiAoYnVmW29mZnNldCtpKjRdICE9IDI1NSB8fCBidWZbb2Zmc2V0K2kqNCsxXSAhPSAwIHx8IGJ1
ZltvZmZzZXQraSo0KzJdICE9IDAgfHwgYnVmW29mZnNldCtpKjQrM10gIT0gMjU1KSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGZhaWwoMjAsIDE1LCBidWYsICIoMjU1LDAsMCwyNTUpIik7CisgICAg
ICAgICAgICAgICAgICAgIGZhaWwoMjAgKyBpLCAxNSwgYnVmLCAiKDI1NSwwLDAsMjU1KSIpOwog
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgLy8gTGFzdCBsaW5lIHNob3VsZCBiZSBhbGwgYmxhY2sKLSAgICAgICAgICAgIG9mZnNldCA9
ICg0OSo1MCkgKiA0CisgICAgICAgICAgICBvZmZzZXQgPSAoNDkqNTApICogNDsKICAgICAgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNTA7ICsraSkKICAgICAgICAgICAgICAgICBpZiAoYnVm
W29mZnNldCtpKjRdICE9IDAgfHwgYnVmW29mZnNldCtpKjQrMV0gIT0gMCB8fCBidWZbb2Zmc2V0
K2kqNCsyXSAhPSAwIHx8IGJ1ZltvZmZzZXQraSo0KzNdICE9IDI1NSkgewogICAgICAgICAgICAg
ICAgICAgICBmYWlsKGksIDQ5LCBidWYsICIoMCwwLDAsMjU1KSIpOwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL2Jvb2xVbmlmb3JtU2hhZGVyLnZlcnQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL2Jvb2xV
bmlmb3JtU2hhZGVyLnZlcnQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy93ZWJnbC9yZXNvdXJjZXMvYm9vbFVuaWZvcm1TaGFkZXIudmVydAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxMyBAQAordW5pZm9ybSBib29sIGJ2YWw7Cit1bmlmb3JtIGJ2ZWMyIGJ2YWwyOwor
dW5pZm9ybSBidmVjMyBidmFsMzsKK3VuaWZvcm0gYnZlYzQgYnZhbDQ7CisKK3ZvaWQgbWFpbigp
Cit7CisgICAgYm9vbCBhbGxTZXQgPSBidmFsCisgICAgICAgICAgICAmJiBidmFsMlswXSAmJiBi
dmFsMlsxXQorICAgICAgICAgICAgJiYgYnZhbDNbMF0gJiYgYnZhbDNbMV0gJiYgYnZhbDNbMl0K
KyAgICAgICAgICAgICYmIGJ2YWw0WzBdICYmIGJ2YWw0WzFdICYmIGJ2YWw0WzJdICYmIGJ2YWw0
WzNdOworICAgIGdsX1Bvc2l0aW9uID0gdmVjNCgoYWxsU2V0ID8gMS4wIDogLTEuMCksIDAuMCwg
MC4wLCAxLjApOworfQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3Vy
Y2VzL2Zsb2F0VW5pZm9ybVNoYWRlci52ZXJ0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy9mbG9hdFVuaWZvcm1TaGFkZXIudmVydAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy9mbG9hdFVu
aWZvcm1TaGFkZXIudmVydAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAordW5pZm9ybSBm
bG9hdCBmdmFsOwordW5pZm9ybSB2ZWMyIGZ2YWwyOwordW5pZm9ybSB2ZWMzIGZ2YWwzOwordW5p
Zm9ybSB2ZWM0IGZ2YWw0OworCit2b2lkIG1haW4oKQoreworICAgIGZsb2F0IHN1bSA9IGZ2YWwK
KyAgICAgICAgICAgICsgZnZhbDJbMF0gKyBmdmFsMlsxXQorICAgICAgICAgICAgKyBmdmFsM1sw
XSArIGZ2YWwzWzFdICsgZnZhbDNbMl0KKyAgICAgICAgICAgICsgZnZhbDRbMF0gKyBmdmFsNFsx
XSArIGZ2YWw0WzJdICsgZnZhbDRbM107CisgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KHN1bSwgMC4w
LCAwLjAsIDEuMCk7Cit9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNv
dXJjZXMvaW50VW5pZm9ybVNoYWRlci52ZXJ0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy9pbnRVbmlmb3JtU2hhZGVyLnZlcnQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvaW50VW5pZm9y
bVNoYWRlci52ZXJ0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACit1bmlmb3JtIGludCBp
dmFsOwordW5pZm9ybSBpdmVjMiBpdmFsMjsKK3VuaWZvcm0gaXZlYzMgaXZhbDM7Cit1bmlmb3Jt
IGl2ZWM0IGl2YWw0OworCit2b2lkIG1haW4oKQoreworICAgIGludCBzdW0gPSBpdmFsCisgICAg
ICAgICAgICArIGl2YWwyWzBdICsgaXZhbDJbMV0KKyAgICAgICAgICAgICsgaXZhbDNbMF0gKyBp
dmFsM1sxXSArIGl2YWwzWzJdCisgICAgICAgICAgICArIGl2YWw0WzBdICsgaXZhbDRbMV0gKyBp
dmFsNFsyXSArIGl2YWw0WzNdOworICAgIGdsX1Bvc2l0aW9uID0gdmVjNChzdW0sIDAuMCwgMC4w
LCAxLjApOworfQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2Vz
L21hdFVuaWZvcm1TaGFkZXIudmVydAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy93ZWJnbC9yZXNvdXJjZXMvbWF0VW5pZm9ybVNoYWRlci52ZXJ0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL21hdFVuaWZvcm1TaGFk
ZXIudmVydAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMCBAQAordW5pZm9ybSBtYXQyIG12YWwy
OwordW5pZm9ybSBtYXQzIG12YWwzOwordW5pZm9ybSBtYXQ0IG12YWw0OworCit2b2lkIG1haW4o
KQoreworICAgIGdsX1Bvc2l0aW9uID0gdmVjNChtdmFsMiAqIHZlYzIoMS4wLCAyLjApLCAwLjAs
IDAuMCkKKyAgICAgICAgICAgICsgdmVjNChtdmFsMyAqIHZlYzMoMS4wLCAyLjAsIDMuMCksIDAu
MCkKKyAgICAgICAgICAgICsgbXZhbDQgKiB2ZWM0KDEuMCwgMi4wLCAzLjAsIDQuMCk7Cit9Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvbm9vcFVuaWZvcm1T
aGFkZXIuZnJhZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9y
ZXNvdXJjZXMvbm9vcFVuaWZvcm1TaGFkZXIuZnJhZwkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy9ub29wVW5pZm9ybVNoYWRlci5mcmFnCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfRnJhZ0Nv
bG9yID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAxLjApOworfQpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3V0aWxzM2QuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3V0aWxzM2QuanMJKHJldmlzaW9uIDUx
Mjc4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3V0aWxzM2Qu
anMJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgZnVuY3Rpb24gaW5pdFdlYkdMKGNh
bnZhc05hbWUsIHZzaGFkZXIsIAogICAgIGdsLmxpbmtQcm9ncmFtKGdsLnByb2dyYW0pOwogCiAg
ICAgLy8gQ2hlY2sgdGhlIGxpbmsgc3RhdHVzCi0gICAgdmFyIGxpbmtlZCA9IGdsLmdldFByb2dy
YW1pKGdsLnByb2dyYW0sIGdsLkxJTktfU1RBVFVTKTsKKyAgICB2YXIgbGlua2VkID0gZ2wuZ2V0
UHJvZ3JhbVBhcmFtZXRlcihnbC5wcm9ncmFtLCBnbC5MSU5LX1NUQVRVUyk7CiAgICAgaWYgKCFs
aW5rZWQpIHsKICAgICAgICAgLy8gc29tZXRoaW5nIHdlbnQgd3Jvbmcgd2l0aCB0aGUgbGluawog
ICAgICAgICB2YXIgZXJyb3IgPSBnbC5nZXRQcm9ncmFtSW5mb0xvZyAoZ2wucHJvZ3JhbSk7CkBA
IC0xMTMsNyArMTEzLDcgQEAgZnVuY3Rpb24gbG9hZFNoYWRlcihjdHgsIHNoYWRlcklkKQogICAg
IGN0eC5jb21waWxlU2hhZGVyKHNoYWRlcik7CiAKICAgICAvLyBDaGVjayB0aGUgY29tcGlsZSBz
dGF0dXMKLSAgICB2YXIgY29tcGlsZWQgPSBjdHguZ2V0U2hhZGVyaShzaGFkZXIsIGN0eC5DT01Q
SUxFX1NUQVRVUyk7CisgICAgdmFyIGNvbXBpbGVkID0gY3R4LmdldFNoYWRlclBhcmFtZXRlcihz
aGFkZXIsIGN0eC5DT01QSUxFX1NUQVRVUyk7CiAgICAgaWYgKCFjb21waWxlZCkgewogICAgICAg
ICAvLyBTb21ldGhpbmcgd2VudCB3cm9uZyBkdXJpbmcgY29tcGlsYXRpb247IGdldCB0aGUgZXJy
b3IKICAgICAgICAgdmFyIGVycm9yID0gY3R4LmdldFNoYWRlckluZm9Mb2coc2hhZGVyKTsKQEAg
LTUzNiw0ICs1MzYsMyBAQCBGcmFtZXJhdGUucHJvdG90eXBlLnNuYXBzaG90ID0gZnVuY3Rpb24o
CiAgICAgICAgIHRoaXMucmVuZGVyVGltZSA9IG5ld1RpbWU7CiAgICAgfQogfQotCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2wtdGVzdC5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2wt
dGVzdC5qcwkocmV2aXNpb24gNTEyNzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJn
bC9yZXNvdXJjZXMvd2ViZ2wtdGVzdC5qcwkod29ya2luZyBjb3B5KQpAQCAtMjQsMTYgKzI0LDMy
IEBAIGZ1bmN0aW9uIGxvYWRTdGFuZGFyZFByb2dyYW0oY29udGV4dCkgewogICAgIHJldHVybiBw
cm9ncmFtOwogfQogCitmdW5jdGlvbiBsb2FkUHJvZ3JhbShjb250ZXh0LCB2ZXJ0ZXhTaGFkZXJQ
YXRoLCBmcmFnbWVudFNoYWRlclBhdGgpIHsKKyAgICB2YXIgcHJvZ3JhbSA9IGNvbnRleHQuY3Jl
YXRlUHJvZ3JhbSgpOworICAgIGNvbnRleHQuYXR0YWNoU2hhZGVyKHByb2dyYW0sIGxvYWRWZXJ0
ZXhTaGFkZXIoY29udGV4dCwgdmVydGV4U2hhZGVyUGF0aCkpOworICAgIGNvbnRleHQuYXR0YWNo
U2hhZGVyKHByb2dyYW0sIGxvYWRGcmFnbWVudFNoYWRlcihjb250ZXh0LCBmcmFnbWVudFNoYWRl
clBhdGgpKTsKKyAgICBjb250ZXh0LmxpbmtQcm9ncmFtKHByb2dyYW0pOworICAgIHJldHVybiBw
cm9ncmFtOworfQorCiBmdW5jdGlvbiBsb2FkU3RhbmRhcmRWZXJ0ZXhTaGFkZXIoY29udGV4dCkg
eworICAgIHJldHVybiBsb2FkVmVydGV4U2hhZGVyKGNvbnRleHQsICJyZXNvdXJjZXMvdmVydGV4
U2hhZGVyLnZlcnQiKTsKK30KKworZnVuY3Rpb24gbG9hZFZlcnRleFNoYWRlcihjb250ZXh0LCBw
YXRoKSB7CiAgICAgdmFyIHZlcnRleFNoYWRlciA9IGNvbnRleHQuY3JlYXRlU2hhZGVyKGNvbnRl
eHQuVkVSVEVYX1NIQURFUik7Ci0gICAgY29udGV4dC5zaGFkZXJTb3VyY2UodmVydGV4U2hhZGVy
LCBnZXRTaGFkZXJTb3VyY2UoInJlc291cmNlcy92ZXJ0ZXhTaGFkZXIudmVydCIpKTsKKyAgICBj
b250ZXh0LnNoYWRlclNvdXJjZSh2ZXJ0ZXhTaGFkZXIsIGdldFNoYWRlclNvdXJjZShwYXRoKSk7
CiAgICAgY29udGV4dC5jb21waWxlU2hhZGVyKHZlcnRleFNoYWRlcik7CiAgICAgcmV0dXJuIHZl
cnRleFNoYWRlcjsKIH0KIAogZnVuY3Rpb24gbG9hZFN0YW5kYXJkRnJhZ21lbnRTaGFkZXIoY29u
dGV4dCkgeworICAgIHJldHVybiBsb2FkRnJhZ21lbnRTaGFkZXIoY29udGV4dCwgInJlc291cmNl
cy9mcmFnbWVudFNoYWRlci5mcmFnIik7Cit9CisKK2Z1bmN0aW9uIGxvYWRGcmFnbWVudFNoYWRl
cihjb250ZXh0LCBwYXRoKSB7CiAgICAgdmFyIGZyYWdtZW50U2hhZGVyID0gY29udGV4dC5jcmVh
dGVTaGFkZXIoY29udGV4dC5GUkFHTUVOVF9TSEFERVIpOwotICAgIGNvbnRleHQuc2hhZGVyU291
cmNlKGZyYWdtZW50U2hhZGVyLCBnZXRTaGFkZXJTb3VyY2UoInJlc291cmNlcy9mcmFnbWVudFNo
YWRlci5mcmFnIikpOworICAgIGNvbnRleHQuc2hhZGVyU291cmNlKGZyYWdtZW50U2hhZGVyLCBn
ZXRTaGFkZXJTb3VyY2UocGF0aCkpOwogICAgIGNvbnRleHQuY29tcGlsZVNoYWRlcihmcmFnbWVu
dFNoYWRlcik7CiAgICAgcmV0dXJuIGZyYWdtZW50U2hhZGVyOwogfQpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL2dsLW9iamVjdC1nZXQtY2FsbHMuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3Rz
L2dsLW9iamVjdC1nZXQtY2FsbHMuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvZ2wtb2JqZWN0LWdldC1jYWxscy5qcwkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxODEgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0IG9mIGdldCBjYWxscyBh
Z2FpbnN0IEdMIG9iamVjdHMgbGlrZSBnZXRCdWZmZXJQYXJhbWV0ZXIsIGV0Yy4iKTsKKwordmFy
IGdsID0gY3JlYXRlM0RDb250ZXh0KCk7Cit2YXIgc3RhbmRhcmRWZXJ0ID0gbG9hZFN0YW5kYXJk
VmVydGV4U2hhZGVyKGdsKTsKK3ZhciBzdGFuZGFyZEZyYWcgPSBsb2FkU3RhbmRhcmRGcmFnbWVu
dFNoYWRlcihnbCk7Cit2YXIgc3RhbmRhcmRQcm9ncmFtID0gZ2wuY3JlYXRlUHJvZ3JhbSgpOwor
Z2wuYXR0YWNoU2hhZGVyKHN0YW5kYXJkUHJvZ3JhbSwgc3RhbmRhcmRWZXJ0KTsKK2dsLmF0dGFj
aFNoYWRlcihzdGFuZGFyZFByb2dyYW0sIHN0YW5kYXJkRnJhZyk7CitnbC5saW5rUHJvZ3JhbShz
dGFuZGFyZFByb2dyYW0pOworCisvLyBUZXN0IGdldEJ1ZmZlclBhcmFtZXRlcgordmFyIGJ1ZmZl
ciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGJ1
ZmZlcik7CitnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgMTYsIGdsLkRZTkFNSUNfRFJB
Vyk7CitzaG91bGRCZSgnZ2wuZ2V0QnVmZmVyUGFyYW1ldGVyKGdsLkFSUkFZX0JVRkZFUiwgZ2wu
QlVGRkVSX1NJWkUpJywgJzE2Jyk7CitzaG91bGRCZSgnZ2wuZ2V0QnVmZmVyUGFyYW1ldGVyKGds
LkFSUkFZX0JVRkZFUiwgZ2wuQlVGRkVSX1VTQUdFKScsICdnbC5EWU5BTUlDX0RSQVcnKTsKKwor
Ly8gVGVzdCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIKK3ZhciB0ZXh0dXJlID0g
Z2wuY3JlYXRlVGV4dHVyZSgpOworZ2wuYmluZFRleHR1cmUoZ2wuVEVYVFVSRV8yRCwgdGV4dHVy
ZSk7CitnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIDIsIDIsIDAsIGds
LlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsCisgICAgICAgICAgICAgIG5ldyBXZWJHTFVuc2lnbmVk
Qnl0ZUFycmF5KFswLCAwLCAwLCAyNTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAyNTUsIDI1NSwgMjU1LCAyNTUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAyNTUsIDI1NSwgMjU1LCAyNTUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCAyNTVdKSk7CitnbC5iaW5kVGV4dHVyZShn
bC5URVhUVVJFXzJELCBudWxsKTsKK3ZhciBmcmFtZWJ1ZmZlciA9IGdsLmNyZWF0ZUZyYW1lYnVm
ZmVyKCk7CitnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZyYW1lYnVmZmVyKTsK
K2dsLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hN
RU5UMCwgZ2wuVEVYVFVSRV8yRCwgdGV4dHVyZSwgMCk7Cit2YXIgcmVuZGVyYnVmZmVyID0gZ2wu
Y3JlYXRlUmVuZGVyYnVmZmVyKCk7CitzaG91bGRCZSgnZ2wuZ2V0RXJyb3IoKScsICcwJyk7Citn
bC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgcmVuZGVyYnVmZmVyKTsKK3Nob3Vs
ZEJlKCdnbC5nZXRFcnJvcigpJywgJzAnKTsKK2dsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVO
REVSQlVGRkVSLCBnbC5ERVBUSF9DT01QT05FTlQxNiwgMiwgMik7CitzaG91bGRCZSgnZ2wuZ2V0
RXJyb3IoKScsICcwJyk7CitnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihnbC5GUkFNRUJVRkZF
UiwgZ2wuREVQVEhfQVRUQUNITUVOVCwgZ2wuUkVOREVSQlVGRkVSLCByZW5kZXJidWZmZXIpOwor
c2hvdWxkQmUoJ2dsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpJywgJ2ds
LkZSQU1FQlVGRkVSX0NPTVBMRVRFJyk7CitzaG91bGRCZSgnZ2wuZ2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wu
RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRSknLCAnZ2wuVEVYVFVSRScpOworc2hv
dWxkQmVOb25OdWxsKCdnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJB
TUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5U
X09CSkVDVF9OQU1FKScpOworc2hvdWxkQmUoJ2dsLmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLkZSQU1FQlVG
RkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MRVZFTCknLCAnMCcpOworc2hvdWxkQmUoJ2dsLmdldEZy
YW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRU
QUNITUVOVDAsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9DVUJFX01BUF9GQUNF
KScsICcwJyk7CisKK3Nob3VsZEJlKCdnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0
ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkRFUFRIX0FUVEFDSE1FTlQsIGdsLkZSQU1FQlVGRkVSX0FU
VEFDSE1FTlRfT0JKRUNUX1RZUEUpJywgJ2dsLlJFTkRFUkJVRkZFUicpOworc2hvdWxkQmVOb25O
dWxsKCdnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIs
IGdsLkRFUFRIX0FUVEFDSE1FTlQsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05B
TUUpJyk7CisKKy8vIFRlc3QgZ2V0UHJvZ3JhbVBhcmFtZXRlcgorc2hvdWxkQmUoJ2dsLmdldFBy
b2dyYW1QYXJhbWV0ZXIoc3RhbmRhcmRQcm9ncmFtLCBnbC5ERUxFVEVfU1RBVFVTKScsICdmYWxz
ZScpOworc2hvdWxkQmUoJ2dsLmdldFByb2dyYW1QYXJhbWV0ZXIoc3RhbmRhcmRQcm9ncmFtLCBn
bC5MSU5LX1NUQVRVUyknLCAndHJ1ZScpOworc2hvdWxkQmUoJ3R5cGVvZiBnbC5nZXRQcm9ncmFt
UGFyYW1ldGVyKHN0YW5kYXJkUHJvZ3JhbSwgZ2wuVkFMSURBVEVfU1RBVFVTKScsICciYm9vbGVh
biInKTsKK3Nob3VsZEJlKCd0eXBlb2YgZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihzdGFuZGFyZFBy
b2dyYW0sIGdsLklORk9fTE9HX0xFTkdUSCknLCAnIm51bWJlciInKTsKK3Nob3VsZEJlKCdnbC5n
ZXRQcm9ncmFtUGFyYW1ldGVyKHN0YW5kYXJkUHJvZ3JhbSwgZ2wuQVRUQUNIRURfU0hBREVSUykn
LCAnMicpOworc2hvdWxkQmUoJ2dsLmdldFByb2dyYW1QYXJhbWV0ZXIoc3RhbmRhcmRQcm9ncmFt
LCBnbC5BQ1RJVkVfQVRUUklCVVRFUyknLCAnMicpOworc2hvdWxkQmVOb25aZXJvKCdnbC5nZXRQ
cm9ncmFtUGFyYW1ldGVyKHN0YW5kYXJkUHJvZ3JhbSwgZ2wuQUNUSVZFX0FUVFJJQlVURV9NQVhf
TEVOR1RIKScpOworc2hvdWxkQmUoJ2dsLmdldFByb2dyYW1QYXJhbWV0ZXIoc3RhbmRhcmRQcm9n
cmFtLCBnbC5BQ1RJVkVfVU5JRk9STVMpJywgJzEnKTsKK3Nob3VsZEJlTm9uWmVybygnZ2wuZ2V0
UHJvZ3JhbVBhcmFtZXRlcihzdGFuZGFyZFByb2dyYW0sIGdsLkFDVElWRV9VTklGT1JNX01BWF9M
RU5HVEgpJyk7CisKKy8vIFRlc3QgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyCitzaG91bGRCZSgn
Z2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkVOREVSQlVG
RkVSX1dJRFRIKScsICcyJyk7CitzaG91bGRCZSgnZ2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVy
KGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkVOREVSQlVGRkVSX0hFSUdIVCknLCAnMicpOworLy8gTm90
ZTogd2UgY2FuJ3QgdGVzdCB0aGUgYWN0dWFsIHZhbHVlIG9mIHRoZSBpbnRlcm5hbCBmb3JtYXQg
c2luY2UKKy8vIHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBhbGxvd2VkIHRvIGNoYW5nZSBpdC4KK3No
b3VsZEJlTm9uWmVybygnZ2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZF
UiwgZ2wuUkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVCknKTsKK3Nob3VsZEJlTm9uWmVybygn
Z2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkVOREVSQlVG
RkVSX0RFUFRIX1NJWkUpJyk7Cit2YXIgY29sb3JidWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZm
ZXIoKTsKK3Nob3VsZEJlKCdnbC5nZXRFcnJvcigpJywgJzAnKTsKK2dsLmJpbmRSZW5kZXJidWZm
ZXIoZ2wuUkVOREVSQlVGRkVSLCByZW5kZXJidWZmZXIpOworc2hvdWxkQmUoJ2dsLmdldEVycm9y
KCknLCAnMCcpOworZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLlJH
QkE0LCAyLCAyKTsKK3Nob3VsZEJlTm9uWmVybygnZ2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVy
KGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkVOREVSQlVGRkVSX1JFRF9TSVpFKScpOworc2hvdWxkQmVO
b25aZXJvKCdnbC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBnbC5S
RU5ERVJCVUZGRVJfR1JFRU5fU0laRSknKTsKK3Nob3VsZEJlTm9uWmVybygnZ2wuZ2V0UmVuZGVy
YnVmZmVyUGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkVOREVSQlVGRkVSX0JMVUVfU0la
RSknKTsKK3Nob3VsZEJlTm9uWmVybygnZ2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKGdsLlJF
TkRFUkJVRkZFUiwgZ2wuUkVOREVSQlVGRkVSX0FMUEhBX1NJWkUpJyk7CisKKy8vIFRlc3QgZ2V0
U2hhZGVyUGFyYW1ldGVyCitzaG91bGRCZSgnZ2wuZ2V0U2hhZGVyUGFyYW1ldGVyKHN0YW5kYXJk
VmVydCwgZ2wuU0hBREVSX1RZUEUpJywgJ2dsLlZFUlRFWF9TSEFERVInKTsKK3Nob3VsZEJlKCdn
bC5nZXRTaGFkZXJQYXJhbWV0ZXIoc3RhbmRhcmRWZXJ0LCBnbC5ERUxFVEVfU1RBVFVTKScsICdm
YWxzZScpOworc2hvdWxkQmUoJ2dsLmdldFNoYWRlclBhcmFtZXRlcihzdGFuZGFyZFZlcnQsIGds
LkNPTVBJTEVfU1RBVFVTKScsICd0cnVlJyk7CitzaG91bGRCZSgndHlwZW9mIGdsLmdldFNoYWRl
clBhcmFtZXRlcihzdGFuZGFyZFZlcnQsIGdsLklORk9fTE9HX0xFTkdUSCknLCAnIm51bWJlciIn
KTsKK3Nob3VsZEJlTm9uWmVybygnZ2wuZ2V0U2hhZGVyUGFyYW1ldGVyKHN0YW5kYXJkVmVydCwg
Z2wuU0hBREVSX1NPVVJDRV9MRU5HVEgpJyk7CisKKy8vIFRlc3QgZ2V0VGV4UGFyYW1ldGVyCitn
bC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZyYW1lYnVmZmVyKTsKK2dsLmJpbmRU
ZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmUpOworZ2wudGV4UGFyYW1ldGVyaShnbC5URVhU
VVJFXzJELCBnbC5URVhUVVJFX01BR19GSUxURVIsIGdsLk5FQVJFU1QpOworZ2wudGV4UGFyYW1l
dGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGdsLk5FQVJFU1QpOwor
Z2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfUywgZ2wuQ0xB
TVBfVE9fRURHRSk7CitnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVf
V1JBUF9ULCBnbC5DTEFNUF9UT19FREdFKTsKK3Nob3VsZEJlKCdnbC5nZXRUZXhQYXJhbWV0ZXIo
Z2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSKScsICdnbC5ORUFSRVNUJyk7Citz
aG91bGRCZSgnZ2wuZ2V0VGV4UGFyYW1ldGVyKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlO
X0ZJTFRFUiknLCAnZ2wuTkVBUkVTVCcpOworc2hvdWxkQmUoJ2dsLmdldFRleFBhcmFtZXRlcihn
bC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfUyknLCAnZ2wuQ0xBTVBfVE9fRURHRScpOwor
c2hvdWxkQmUoJ2dsLmdldFRleFBhcmFtZXRlcihnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dS
QVBfVCknLCAnZ2wuQ0xBTVBfVE9fRURHRScpOworCisvLyBUZXN0IGdldFVuaWZvcm0gd2l0aCBh
bGwgdmFyaWFudHMgb2YgZGF0YSB0eXBlcworLy8gQm9vbGVhbiB1bmlmb3JtIHZhcmlhYmxlcwor
dmFyIGJvb2xQcm9ncmFtID0gbG9hZFByb2dyYW0oZ2wsICJyZXNvdXJjZXMvYm9vbFVuaWZvcm1T
aGFkZXIudmVydCIsICJyZXNvdXJjZXMvbm9vcFVuaWZvcm1TaGFkZXIuZnJhZyIpOworc2hvdWxk
QmUoJ2dsLmdldFByb2dyYW1QYXJhbWV0ZXIoYm9vbFByb2dyYW0sIGdsLkxJTktfU1RBVFVTKScs
ICd0cnVlJyk7Cit2YXIgYnZhbExvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihib29sUHJvZ3Jh
bSwgImJ2YWwiKTsKK3ZhciBidmFsMkxvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihib29sUHJv
Z3JhbSwgImJ2YWwyIik7Cit2YXIgYnZhbDNMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24oYm9v
bFByb2dyYW0sICJidmFsMyIpOwordmFyIGJ2YWw0TG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9u
KGJvb2xQcm9ncmFtLCAiYnZhbDQiKTsKK2dsLnVzZVByb2dyYW0oYm9vbFByb2dyYW0pOworZ2wu
dW5pZm9ybTFpKGJ2YWxMb2MsIDEpOworZ2wudW5pZm9ybTJpKGJ2YWwyTG9jLCAxLCAwKTsKK2ds
LnVuaWZvcm0zaShidmFsM0xvYywgMSwgMCwgMSk7CitnbC51bmlmb3JtNGkoYnZhbDRMb2MsIDEs
IDAsIDEsIDApOworc2hvdWxkQmUoJ2dsLmdldEVycm9yKCknLCAnMCcpOworc2hvdWxkQmUoJ2ds
LmdldFVuaWZvcm0oYm9vbFByb2dyYW0sIGJ2YWxMb2MpJywgJ3RydWUnKTsKK3Nob3VsZEJlKCdn
bC5nZXRVbmlmb3JtKGJvb2xQcm9ncmFtLCBidmFsMkxvYyknLCAnWzEsIDBdJyk7CitzaG91bGRC
ZSgnZ2wuZ2V0VW5pZm9ybShib29sUHJvZ3JhbSwgYnZhbDNMb2MpJywgJ1sxLCAwLCAxXScpOwor
c2hvdWxkQmUoJ2dsLmdldFVuaWZvcm0oYm9vbFByb2dyYW0sIGJ2YWw0TG9jKScsICdbMSwgMCwg
MSwgMF0nKTsKKy8vIEludGVnZXIgdW5pZm9ybSB2YXJpYWJsZXMKK3ZhciBpbnRQcm9ncmFtID0g
bG9hZFByb2dyYW0oZ2wsICJyZXNvdXJjZXMvaW50VW5pZm9ybVNoYWRlci52ZXJ0IiwgInJlc291
cmNlcy9ub29wVW5pZm9ybVNoYWRlci5mcmFnIik7CitzaG91bGRCZSgnZ2wuZ2V0UHJvZ3JhbVBh
cmFtZXRlcihpbnRQcm9ncmFtLCBnbC5MSU5LX1NUQVRVUyknLCAndHJ1ZScpOwordmFyIGl2YWxM
b2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24oaW50UHJvZ3JhbSwgIml2YWwiKTsKK3ZhciBpdmFs
MkxvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihpbnRQcm9ncmFtLCAiaXZhbDIiKTsKK3ZhciBp
dmFsM0xvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihpbnRQcm9ncmFtLCAiaXZhbDMiKTsKK3Zh
ciBpdmFsNExvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihpbnRQcm9ncmFtLCAiaXZhbDQiKTsK
K2dsLnVzZVByb2dyYW0oaW50UHJvZ3JhbSk7CitnbC51bmlmb3JtMWkoaXZhbExvYywgMSk7Citn
bC51bmlmb3JtMmkoaXZhbDJMb2MsIDIsIDMpOworZ2wudW5pZm9ybTNpKGl2YWwzTG9jLCA0LCA1
LCA2KTsKK2dsLnVuaWZvcm00aShpdmFsNExvYywgNywgOCwgOSwgMTApOworc2hvdWxkQmUoJ2ds
LmdldEVycm9yKCknLCAnMCcpOworc2hvdWxkQmUoJ2dsLmdldFVuaWZvcm0oaW50UHJvZ3JhbSwg
aXZhbExvYyknLCAnMScpOworc2hvdWxkQmUoJ2dsLmdldFVuaWZvcm0oaW50UHJvZ3JhbSwgaXZh
bDJMb2MpJywgJ1syLCAzXScpOworc2hvdWxkQmUoJ2dsLmdldFVuaWZvcm0oaW50UHJvZ3JhbSwg
aXZhbDNMb2MpJywgJ1s0LCA1LCA2XScpOworc2hvdWxkQmUoJ2dsLmdldFVuaWZvcm0oaW50UHJv
Z3JhbSwgaXZhbDRMb2MpJywgJ1s3LCA4LCA5LCAxMF0nKTsKKy8vIEZsb2F0IHVuaWZvcm0gdmFy
aWFibGVzCit2YXIgZmxvYXRQcm9ncmFtID0gbG9hZFByb2dyYW0oZ2wsICJyZXNvdXJjZXMvZmxv
YXRVbmlmb3JtU2hhZGVyLnZlcnQiLCAicmVzb3VyY2VzL25vb3BVbmlmb3JtU2hhZGVyLmZyYWci
KTsKK3Nob3VsZEJlKCdnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKGZsb2F0UHJvZ3JhbSwgZ2wuTElO
S19TVEFUVVMpJywgJ3RydWUnKTsKK3ZhciBmdmFsTG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9u
KGZsb2F0UHJvZ3JhbSwgImZ2YWwiKTsKK3ZhciBmdmFsMkxvYyA9IGdsLmdldFVuaWZvcm1Mb2Nh
dGlvbihmbG9hdFByb2dyYW0sICJmdmFsMiIpOwordmFyIGZ2YWwzTG9jID0gZ2wuZ2V0VW5pZm9y
bUxvY2F0aW9uKGZsb2F0UHJvZ3JhbSwgImZ2YWwzIik7Cit2YXIgZnZhbDRMb2MgPSBnbC5nZXRV
bmlmb3JtTG9jYXRpb24oZmxvYXRQcm9ncmFtLCAiZnZhbDQiKTsKK2dsLnVzZVByb2dyYW0oZmxv
YXRQcm9ncmFtKTsKK2dsLnVuaWZvcm0xZihmdmFsTG9jLCAxMSk7CitnbC51bmlmb3JtMmYoZnZh
bDJMb2MsIDEyLCAxMyk7CitnbC51bmlmb3JtM2YoZnZhbDNMb2MsIDE0LCAxNSwgMTYpOworZ2wu
dW5pZm9ybTRmKGZ2YWw0TG9jLCAxNywgMTgsIDE5LCAyMCk7CitzaG91bGRCZSgnZ2wuZ2V0RXJy
b3IoKScsICcwJyk7CitzaG91bGRCZSgnZ2wuZ2V0VW5pZm9ybShmbG9hdFByb2dyYW0sIGZ2YWxM
b2MpJywgJzExJyk7CitzaG91bGRCZSgnZ2wuZ2V0VW5pZm9ybShmbG9hdFByb2dyYW0sIGZ2YWwy
TG9jKScsICdbMTIsIDEzXScpOworc2hvdWxkQmUoJ2dsLmdldFVuaWZvcm0oZmxvYXRQcm9ncmFt
LCBmdmFsM0xvYyknLCAnWzE0LCAxNSwgMTZdJyk7CitzaG91bGRCZSgnZ2wuZ2V0VW5pZm9ybShm
bG9hdFByb2dyYW0sIGZ2YWw0TG9jKScsICdbMTcsIDE4LCAxOSwgMjBdJyk7CisvLyBNYXRyaXgg
dW5pZm9ybSB2YXJpYWJsZXMKK3ZhciBtYXRQcm9ncmFtID0gbG9hZFByb2dyYW0oZ2wsICJyZXNv
dXJjZXMvbWF0VW5pZm9ybVNoYWRlci52ZXJ0IiwgInJlc291cmNlcy9ub29wVW5pZm9ybVNoYWRl
ci5mcmFnIik7CitzaG91bGRCZSgnZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihtYXRQcm9ncmFtLCBn
bC5MSU5LX1NUQVRVUyknLCAndHJ1ZScpOwordmFyIG12YWwyTG9jID0gZ2wuZ2V0VW5pZm9ybUxv
Y2F0aW9uKG1hdFByb2dyYW0sICJtdmFsMiIpOwordmFyIG12YWwzTG9jID0gZ2wuZ2V0VW5pZm9y
bUxvY2F0aW9uKG1hdFByb2dyYW0sICJtdmFsMyIpOwordmFyIG12YWw0TG9jID0gZ2wuZ2V0VW5p
Zm9ybUxvY2F0aW9uKG1hdFByb2dyYW0sICJtdmFsNCIpOworZ2wudXNlUHJvZ3JhbShtYXRQcm9n
cmFtKTsKK2dsLnVuaWZvcm1NYXRyaXgyZnYobXZhbDJMb2MsIGZhbHNlLCBbMSwgMiwgMywgNF0p
OworZ2wudW5pZm9ybU1hdHJpeDNmdihtdmFsM0xvYywgZmFsc2UsIFs1LCA2LCA3LCA4LCA5LCAx
MCwgMTEsIDEyLCAxM10pOworZ2wudW5pZm9ybU1hdHJpeDRmdihtdmFsNExvYywgZmFsc2UsIFsx
NCwgMTUsIDE2LCAxNywgMTgsIDE5LCAyMCwgMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4
LCAyOV0pOworc2hvdWxkQmUoJ2dsLmdldEVycm9yKCknLCAnMCcpOworc2hvdWxkQmUoJ2dsLmdl
dFVuaWZvcm0obWF0UHJvZ3JhbSwgbXZhbDJMb2MpJywgJ1sxLCAyLCAzLCA0XScpOworc2hvdWxk
QmUoJ2dsLmdldFVuaWZvcm0obWF0UHJvZ3JhbSwgbXZhbDNMb2MpJywgJ1s1LCA2LCA3LCA4LCA5
LCAxMCwgMTEsIDEyLCAxM10nKTsKK3Nob3VsZEJlKCdnbC5nZXRVbmlmb3JtKG1hdFByb2dyYW0s
IG12YWw0TG9jKScsICdbMTQsIDE1LCAxNiwgMTcsIDE4LCAxOSwgMjAsIDIxLCAyMiwgMjMsIDI0
LCAyNSwgMjYsIDI3LCAyOCwgMjldJyk7CisKKy8vIFRlc3QgZ2V0VmVydGV4QXR0cmliCit2YXIg
YXJyYXkgPSBuZXcgV2ViR0xGbG9hdEFycmF5KFsxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAx
MCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNl0pOworZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZG
RVIsIGJ1ZmZlcik7CitnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgYXJyYXksIGdsLkRZ
TkFNSUNfRFJBVyk7CisvLyBWZXJ0ZXggYXR0cmlidXRlIDAgaXMgc3BlY2lhbCBpbiB0aGF0IGl0
IGhhcyBubyBjdXJyZW50IHN0YXRlLCBzbworLy8gZmV0Y2hpbmcgR0xfQ1VSUkVOVF9WRVJURVhf
QVRUUklCIGdlbmVyYXRlcyBhbiBlcnJvci4gVXNlIGF0dHJpYnV0ZQorLy8gMSBmb3IgdGhlc2Ug
dGVzdHMgaW5zdGVhZC4KK2dsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDEpOworZ2wudmVydGV4
QXR0cmliUG9pbnRlcigxLCA0LCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworc2hvdWxkQmVOb25O
dWxsKCdnbC5nZXRWZXJ0ZXhBdHRyaWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJf
QklORElORyknKTsKK3Nob3VsZEJlKCdnbC5nZXRWZXJ0ZXhBdHRyaWIoMSwgZ2wuVkVSVEVYX0FU
VFJJQl9BUlJBWV9FTkFCTEVEKScsICd0cnVlJyk7CitzaG91bGRCZSgnZ2wuZ2V0VmVydGV4QXR0
cmliKDEsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfU0laRSknLCAnNCcpOworc2hvdWxkQmUoJyhn
bC5nZXRWZXJ0ZXhBdHRyaWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9TVFJJREUpID09IDAp
IHx8IChnbC5nZXRWZXJ0ZXhBdHRyaWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9TVFJJREUp
ID09IDQgKiBnbC5zaXplSW5CeXRlcyhnbC5GTE9BVCkpJywgJ3RydWUnKTsKK3Nob3VsZEJlKCdn
bC5nZXRWZXJ0ZXhBdHRyaWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFKScsICdnbC5G
TE9BVCcpOworc2hvdWxkQmUoJ2dsLmdldFZlcnRleEF0dHJpYigxLCBnbC5WRVJURVhfQVRUUklC
X0FSUkFZX05PUk1BTElaRUQpJywgJ2ZhbHNlJyk7CitnbC5kaXNhYmxlVmVydGV4QXR0cmliQXJy
YXkoMSk7CitzaG91bGRCZSgnZ2wuZ2V0VmVydGV4QXR0cmliKDEsIGdsLlZFUlRFWF9BVFRSSUJf
QVJSQVlfRU5BQkxFRCknLCAnZmFsc2UnKTsKK2dsLnZlcnRleEF0dHJpYjRmKDEsIDUsIDYsIDcs
IDgpOworc2hvdWxkQmUoJ2dsLmdldFZlcnRleEF0dHJpYigxLCBnbC5DVVJSRU5UX1ZFUlRFWF9B
VFRSSUIpJywgJ1s1LCA2LCA3LCA4XScpOworc2hvdWxkQmUoJ2dsLmdldEVycm9yKCknLCAnMCcp
OworCitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL2luY29ycmVjdC1jb250ZXh0LW9iamVjdC1iZWhhdmlv
dXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0
LXRlc3RzL2luY29ycmVjdC1jb250ZXh0LW9iamVjdC1iZWhhdmlvdXIuanMJKHJldmlzaW9uIDUx
Mjc4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL2luY29y
cmVjdC1jb250ZXh0LW9iamVjdC1iZWhhdmlvdXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTMxLDE3
ICszMSwxMiBAQCBzaG91bGRUaHJvdygiY29udGV4dEEuYmluZFJlbmRlcmJ1ZmZlcihjCiBzaG91
bGRUaHJvdygiY29udGV4dEEuYmluZFRleHR1cmUoY29udGV4dEEuVEVYVFVSRV8yRCwgdGV4dHVy
ZUIpIik7CiBzaG91bGRUaHJvdygiY29udGV4dEEuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoY29u
dGV4dEEuRlJBTUVCVUZGRVIsIGNvbnRleHRBLkRFUFRIX0FUVEFDSE1FTlQsIGNvbnRleHRBLlJF
TkRFUkJVRkZFUiwgcmVuZGVyQnVmZmVyQikiKTsKIHNob3VsZFRocm93KCJjb250ZXh0QS5mcmFt
ZWJ1ZmZlclRleHR1cmUyRChjb250ZXh0QS5GUkFNRUJVRkZFUiwgY29udGV4dEEuQ09MT1JfQVRU
QUNITUVOVDAsIGNvbnRleHRBLlRFWFRVUkVfMkQsIHRleHR1cmVCLCAwKSIpOwotc2hvdWxkVGhy
b3coImNvbnRleHRBLmdldFByb2dyYW1pKHByb2dyYW1CLCAwKSIpOwotc2hvdWxkVGhyb3coImNv
bnRleHRBLmdldFByb2dyYW1pdihwcm9ncmFtQiwgMCkiKTsKK3Nob3VsZFRocm93KCJjb250ZXh0
QS5nZXRQcm9ncmFtUGFyYW1ldGVyKHByb2dyYW1CLCAwKSIpOwogc2hvdWxkVGhyb3coImNvbnRl
eHRBLmdldFByb2dyYW1JbmZvTG9nKHByb2dyYW1CLCAwKSIpOwotc2hvdWxkVGhyb3coImNvbnRl
eHRBLmdldFNoYWRlcmkoc2hhZGVyQiwgMCkiKTsKLXNob3VsZFRocm93KCJjb250ZXh0QS5nZXRT
aGFkZXJpdihzaGFkZXJCLCAwKSIpOworc2hvdWxkVGhyb3coImNvbnRleHRBLmdldFNoYWRlclBh
cmFtZXRlcihzaGFkZXJCLCAwKSIpOwogc2hvdWxkVGhyb3coImNvbnRleHRBLmdldFNoYWRlcklu
Zm9Mb2coc2hhZGVyQiwgMCkiKTsKIHNob3VsZFRocm93KCJjb250ZXh0QS5nZXRTaGFkZXJTb3Vy
Y2Uoc2hhZGVyQikiKTsKLXNob3VsZFRocm93KCJjb250ZXh0QS5nZXRVbmlmb3JtZihwcm9ncmFt
QiwgbG9jYXRpb25BKSIpOwotc2hvdWxkVGhyb3coImNvbnRleHRBLmdldFVuaWZvcm1mdihwcm9n
cmFtQiwgbG9jYXRpb25BKSIpOwotc2hvdWxkVGhyb3coImNvbnRleHRBLmdldFVuaWZvcm1pKHBy
b2dyYW1CLCBsb2NhdGlvbkEpIik7Ci1zaG91bGRUaHJvdygiY29udGV4dEEuZ2V0VW5pZm9ybWl2
KHByb2dyYW1CLCBsb2NhdGlvbkEpIik7CitzaG91bGRUaHJvdygiY29udGV4dEEuZ2V0VW5pZm9y
bShwcm9ncmFtQiwgbG9jYXRpb25BKSIpOwogc2hvdWxkVGhyb3coImNvbnRleHRBLmdldFVuaWZv
cm1Mb2NhdGlvbihwcm9ncmFtQiwgJ3VfbW9kZWxWaWV3UHJvak1hdHJpeCcpIik7CiAKIHN1Y2Nl
c3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJn
bC9zY3JpcHQtdGVzdHMvbnVsbC1vYmplY3QtYmVoYXZpb3VyLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9udWxsLW9iamVjdC1iZWhh
dmlvdXIuanMJKHJldmlzaW9uIDUxMjc4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2Vi
Z2wvc2NyaXB0LXRlc3RzL251bGwtb2JqZWN0LWJlaGF2aW91ci5qcwkod29ya2luZyBjb3B5KQpA
QCAtMjAsMTcgKzIwLDEyIEBAIHNob3VsZEJlVW5kZWZpbmVkKCJjb250ZXh0LmJpbmRSZW5kZXJi
dWYKIHNob3VsZEJlVW5kZWZpbmVkKCJjb250ZXh0LmJpbmRUZXh0dXJlKGNvbnRleHQuVEVYVFVS
RV8yRCwgMCkiKTsKIHNob3VsZEJlVW5kZWZpbmVkKCJjb250ZXh0LmZyYW1lYnVmZmVyUmVuZGVy
YnVmZmVyKGNvbnRleHQuRlJBTUVCVUZGRVIsIGNvbnRleHQuREVQVEhfQVRUQUNITUVOVCwgY29u
dGV4dC5SRU5ERVJCVUZGRVIsIDApIik7CiBzaG91bGRCZVVuZGVmaW5lZCgiY29udGV4dC5mcmFt
ZWJ1ZmZlclRleHR1cmUyRChjb250ZXh0LkZSQU1FQlVGRkVSLCBjb250ZXh0LkNPTE9SX0FUVEFD
SE1FTlQwLCBjb250ZXh0LlRFWFRVUkVfMkQsIDAsIDApIik7Ci1zaG91bGRUaHJvdygiY29udGV4
dC5nZXRQcm9ncmFtaSh1bmRlZmluZWQsIDApIik7Ci1zaG91bGRUaHJvdygiY29udGV4dC5nZXRQ
cm9ncmFtaXYodW5kZWZpbmVkLCAwKSIpOworc2hvdWxkVGhyb3coImNvbnRleHQuZ2V0UHJvZ3Jh
bVBhcmFtZXRlcih1bmRlZmluZWQsIDApIik7CiBzaG91bGRUaHJvdygiY29udGV4dC5nZXRQcm9n
cmFtSW5mb0xvZyh1bmRlZmluZWQsIDApIik7Ci1zaG91bGRUaHJvdygiY29udGV4dC5nZXRTaGFk
ZXJpKHVuZGVmaW5lZCwgMCkiKTsKLXNob3VsZFRocm93KCJjb250ZXh0LmdldFNoYWRlcml2KHVu
ZGVmaW5lZCwgMCkiKTsKK3Nob3VsZFRocm93KCJjb250ZXh0LmdldFNoYWRlclBhcmFtZXRlcih1
bmRlZmluZWQsIDApIik7CiBzaG91bGRUaHJvdygiY29udGV4dC5nZXRTaGFkZXJJbmZvTG9nKHVu
ZGVmaW5lZCwgMCkiKTsKIHNob3VsZFRocm93KCJjb250ZXh0LmdldFNoYWRlclNvdXJjZSh1bmRl
ZmluZWQpIik7Ci1zaG91bGRUaHJvdygiY29udGV4dC5nZXRVbmlmb3JtZih1bmRlZmluZWQsIDAp
Iik7Ci1zaG91bGRUaHJvdygiY29udGV4dC5nZXRVbmlmb3JtZnYodW5kZWZpbmVkLCAwKSIpOwot
c2hvdWxkVGhyb3coImNvbnRleHQuZ2V0VW5pZm9ybWkodW5kZWZpbmVkLCAwKSIpOwotc2hvdWxk
VGhyb3coImNvbnRleHQuZ2V0VW5pZm9ybWl2KHVuZGVmaW5lZCwgMCkiKTsKK3Nob3VsZFRocm93
KCJjb250ZXh0LmdldFVuaWZvcm0odW5kZWZpbmVkLCAwKSIpOwogc2hvdWxkVGhyb3coImNvbnRl
eHQuZ2V0VW5pZm9ybUxvY2F0aW9uKHVuZGVmaW5lZCwgJ2ZvbycpIik7CiAKIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcwkocmV2aXNpb24gNTEyNzgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMTU5LDYgKzE1OSw0MiBA
QCBmdW5jdGlvbiBzaG91bGRFdmFsdWF0ZVRvKGFjdHVhbCwgZXhwZWN0CiAgIH0KIH0KIAorZnVu
Y3Rpb24gc2hvdWxkQmVOb25aZXJvKF9hKQoreworICB2YXIgZXhjZXB0aW9uOworICB2YXIgX2F2
OworICB0cnkgeworICAgICBfYXYgPSBldmFsKF9hKTsKKyAgfSBjYXRjaCAoZSkgeworICAgICBl
eGNlcHRpb24gPSBlOworICB9CisKKyAgaWYgKGV4Y2VwdGlvbikKKyAgICB0ZXN0RmFpbGVkKF9h
ICsgIiBzaG91bGQgYmUgbm9uLXplcm8uIFRocmV3IGV4Y2VwdGlvbiAiICsgZXhjZXB0aW9uKTsK
KyAgZWxzZSBpZiAoX2F2ICE9IDApCisgICAgdGVzdFBhc3NlZChfYSArICIgaXMgbm9uLXplcm8u
Iik7CisgIGVsc2UKKyAgICB0ZXN0RmFpbGVkKF9hICsgIiBzaG91bGQgYmUgbm9uLXplcm8uIFdh
cyAiICsgX2F2KTsKK30KKworZnVuY3Rpb24gc2hvdWxkQmVOb25OdWxsKF9hKQoreworICB2YXIg
ZXhjZXB0aW9uOworICB2YXIgX2F2OworICB0cnkgeworICAgICBfYXYgPSBldmFsKF9hKTsKKyAg
fSBjYXRjaCAoZSkgeworICAgICBleGNlcHRpb24gPSBlOworICB9CisKKyAgaWYgKGV4Y2VwdGlv
bikKKyAgICB0ZXN0RmFpbGVkKF9hICsgIiBzaG91bGQgYmUgbm9uLW51bGwuIFRocmV3IGV4Y2Vw
dGlvbiAiICsgZXhjZXB0aW9uKTsKKyAgZWxzZSBpZiAoX2F2ICE9IG51bGwpCisgICAgdGVzdFBh
c3NlZChfYSArICIgaXMgbm9uLW51bGwuIik7CisgIGVsc2UKKyAgICB0ZXN0RmFpbGVkKF9hICsg
IiBzaG91bGQgYmUgbm9uLW51bGwuIFdhcyAiICsgX2F2KTsKK30KKwogZnVuY3Rpb24gc2hvdWxk
QmVVbmRlZmluZWQoX2EpCiB7CiAgIHZhciBleGNlcHRpb247Cg==
</data>
<flag name="review"
          id="25456"
          type_id="1"
          status="+"
          setter="oliver"
    />
    <flag name="commit-queue"
          id="25457"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43747</attachid>
            <date>2009-11-23 20:22:44 -0800</date>
            <delta_ts>2009-11-24 10:26:41 -0800</delta_ts>
            <desc>Revised patch</desc>
            <filename>get-calls.patch</filename>
            <type>text/plain</type>
            <size>196566</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MTMzNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTM4IEBACisyMDA5LTExLTIzICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBD
aGFuZ2UgZ2V0Li4uIGNhbGxzIHRvIGxhdGVzdCBzcGVjCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDA5MQorCisgICAgICAgIFJlbW92ZWQgb2xkIHZl
cnNpb25zIG9mIGdldCBjYWxscyBvbiBXZWJHTFJlbmRlcmluZ0NvbnRleHQgYW5kCisgICAgICAg
IGFkZGVkIG5ldyBvbmVzIHBlciBzcGVjIHJldHVybmluZyAiYW55Ii4gTmV3IGNvZGUgc2ltcGxp
ZmllcworICAgICAgICBHcmFwaGljc0NvbnRleHQzRCBhbmQgZml4ZXMgcHJldmlvdXNseSB1bmlt
cGxlbWVudGVkIHJvdXRpbmVzLgorICAgICAgICBBZGRlZCBjdXN0b20gSlMgYW5kIFY4IGJpbmRp
bmdzLiBBZGRlZCBleGhhdXN0aXZlIHRlc3QgY2FzZQorICAgICAgICBleGVyY2lzaW5nIGFsbCBu
ZXcgY29kZSBwYXRocy4gVXBkYXRlZCBwcmVleGlzdGluZyB0ZXN0IGNhc2VzIGZvcgorICAgICAg
ICBuZXcgQVBJcy4gRml4ZWQgcHJlZXhpc3RpbmcgYnVncyBpbiBXZWJLaXQncyBhbmQgQ2hyb21l
J3MgV2ViR0wKKyAgICAgICAgaW1wbGVtZW50YXRpb25zLgorCisgICAgICAgIFJhbiBXZWJHTCBs
YXlvdXQgdGVzdHMgaW4gV2ViS2l0IChjbGVhbikgYW5kIENocm9tZSAoY291cGxlIG9mCisgICAg
ICAgIHByZWV4aXN0aW5nIGtub3duIGZhaWx1cmVzKSBhbmQgbWFudWFsIFdlYkdMIHRlc3RzIGlu
IGJvdGgKKyAgICAgICAgYnJvd3NlcnMuCisKKyAgICAgICAgVGVzdDogZmFzdC9jYW52YXMvd2Vi
Z2wvZ2wtb2JqZWN0LWdldC1jYWxscy5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnRvSlMpOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKFdlYkNvcmU6Omdl
dE9iamVjdFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpnZXRQcm9ncmFtUGFyYW1ldGVy
SGVscGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRC
dWZmZXJQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQcm9ncmFtUGFyYW1ldGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRSZW5kZXJidWZmZXJQYXJh
bWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFNo
YWRlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Z2V0VGV4UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnZXRVbmlmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnZXRWZXJ0ZXhBdHRyaWIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OEN1c3RvbUJpbmRpbmcuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJl
bmRlcmluZ0NvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9WOCk6CisgICAg
ICAgIChXZWJDb3JlOjopOgorICAgICAgICAoV2ViQ29yZTo6Z2V0T2JqZWN0UGFyYW1ldGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OmdldFByb2dyYW1QYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0FMTEJBQ0tfRlVOQ19ERUNMKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNPYmpl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzT2JqZWN0OjpDYW52YXNPYmplY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzT2JqZWN0OjpzZXRPYmplY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzT2JqZWN0OjpkZWxldGVPYmplY3QpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc09iamVjdC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xCdWZmZXI6OldlYkdMQnVmZmVyKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TEJ1ZmZlci5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZvOjpXZWJHTEdldEluZm8pOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZvOjp+V2ViR0xHZXRJbmZvKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMR2V0SW5mbzo6Z2V0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEdldElu
Zm86OmdldEJvb2wpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZvOjpnZXRGbG9hdCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEdldEluZm86OmdldExvbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xHZXRJbmZvOjpnZXRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xH
ZXRJbmZvOjpnZXRVbnNpZ25lZExvbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZv
OjpnZXRXZWJHTEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEdldEluZm86OmdldFdl
YkdMRmxvYXRBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEdldEluZm86OmdldFdlYkdM
RnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZvOjpnZXRXZWJHTElu
dEFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMR2V0SW5mbzo6Z2V0V2ViR0xQcm9ncmFt
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMR2V0SW5mbzo6Z2V0V2ViR0xSZW5kZXJidWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZvOjpnZXRXZWJHTFRleHR1cmUpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZvOjpnZXRXZWJHTFVuc2lnbmVkQnl0ZUFycmF5KToK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEdldEluZm8uaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTEdldEluZm86Oik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJidWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJidWZmZXI6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmJ1ZmZlcjo6V2ViR0xSZW5kZXJidWZm
ZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmg6CisgICAgICAg
ICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMU3RhdGVSZXN0b3Jlcjo6V2ViR0xTdGF0ZVJlc3RvcmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMU3RhdGVSZXN0b3Jlcjo6fldlYkdMU3RhdGVSZXN0b3Jlcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OldlYkdMUmVuZGVyaW5nQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmFjdGl2ZVRleHR1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpiaW5kQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmluZEZyYW1lYnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmluZFJlbmRlcmJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJpbmRUZXh0
dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0QnVmZmVy
UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dDo6Z2V0UHJvZ3JhbVBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFByb2dyYW1JbmZvTG9nKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2hhZGVyUGFyYW1l
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2hhZGVy
SW5mb0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFNo
YWRlclNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omdl
dFN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFRl
eFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omdl
dFVuaWZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRW
ZXJ0ZXhBdHRyaWIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1
c2VQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0
Qm9vbGVhblBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmdldEZsb2F0UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dDo6Z2V0SW50UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dDo6Z2V0TG9uZ1BhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmdldFVuc2lnbmVkTG9uZ1BhcmFtZXRlcik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFdlYkdMRmxvYXRBcnJheVBhcmFtZXRlcik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFdlYkdMSW50QXJy
YXlQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRXZWJHTFVuc2lnbmVkQnl0ZUFycmF5UGFyYW1ldGVyKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHQuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFRleHR1cmU6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFRleHR1cmU6OldlYkdMVGV4dHVyZSk6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xUZXh0dXJlLmg6CisgICAgICAgICogbWFudWFsLXRlc3RzL3dlYmdsL3Jlc291cmNl
cy91dGlsczNkLmpzOgorICAgICAgICAoaW5pdFdlYkdMKToKKyAgICAgICAgKGxvYWRTaGFkZXIp
OgorICAgICAgICAoRnJhbWVyYXRlLnByb3RvdHlwZS5zbmFwc2hvdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OmdldEJvb2xlYW52KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpnZXRCdWZmZXJQYXJhbWV0ZXJpdik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6Z2V0RmxvYXR2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW50ZWdlcnYpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1pdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlcml2KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRUZXhQYXJhbWV0ZXJmdik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VGV4UGFyYW1ldGVyaXYpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1mdik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWl2KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJmdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliaXYpOgorCiAyMDA5LTExLTIzICBK
aWFuIExpICA8amlhbmxpQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKENocm9taXVtIGJ1aWxkIGZpeCkuCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gNTEzMzUpCisrKyBXZWJD
b3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMTI4Myw2ICsxMjgzLDggQEAKICAg
ICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTEZsb2F0QXJyYXkuaCcsCiAgICAgICAgICAgICAn
aHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvY2Fu
dmFzL1dlYkdMRnJhbWVidWZmZXIuaCcsCisgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xH
ZXRJbmZvLmNwcCcsCisgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmgnLAog
ICAgICAgICAgICAgJ2h0bWwvY2FudmFzL0NhbnZhc0dyYWRpZW50LmNwcCcsCiAgICAgICAgICAg
ICAnaHRtbC9jYW52YXMvQ2FudmFzR3JhZGllbnQuaCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52
YXMvV2ViR0xJbnRBcnJheS5jcHAnLApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDUxMzM1KQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTExOTksNiArMTE5OSw4IEBA
CiAJCTY1REYzMjNDMDlEMURFNjUwMDBCRTMyNSAvKiBKU0NhbnZhc1BhdHRlcm4uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1REYzMjM2MDlEMURFNjUw
MDBCRTMyNSAvKiBKU0NhbnZhc1BhdHRlcm4uaCAqLzsgfTsKIAkJNjVERjMyNjEwOUQxRTE5OTAw
MEJFMzI1IC8qIFVzZXJBZ2VudFN0eWxlU2hlZXRzRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTY1ODFBRjA5RDE0RUU2MDAwRTYxRDcgLyog
VXNlckFnZW50U3R5bGVTaGVldHNEYXRhLmNwcCAqLzsgfTsKIAkJNjVGRUE4NjkwOTgzM0FERTAw
QkVENEFCIC8qIFBhZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNjVGRUE4NjgwOTgzM0FERTAwQkVENEFCIC8qIFBhZ2UuY3BwICovOyB9OworCQk2
RTQ3RTY2MDEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xHZXRJbmZvLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNDdFNjVFMTBCNzk0NEIwMEIxODZD
OCAvKiBXZWJHTEdldEluZm8uY3BwICovOyB9OworCQk2RTQ3RTY2MTEwQjc5NDRCMDBCMTg2Qzgg
LyogV2ViR0xHZXRJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2RTQ3RTY1RjEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xHZXRJbmZvLmggKi87IH07
CiAJCTcyNjI2RTAyMEVGMDIyRkUwMEEwN0UyMCAvKiBGb250RmFzdFBhdGguY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI2MjZFMDEwRUYwMjJGRTAw
QTA3RTIwIC8qIEZvbnRGYXN0UGF0aC5jcHAgKi87IH07CiAJCTc1NDEzM0E4MTAyRTAwRTgwMDA3
NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTQxMzNBNzEwMkUwMEU4MDAwNzVEMDAgLyogSW5zcGVj
dG9yVGltZWxpbmVBZ2VudC5oICovOyB9OwogCQk3NTQxMzNBQTEwMkUwMEY0MDAwNzVEMDAgLyog
SW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3NTQxMzNBOTEwMkUwMEY0MDAwNzVEMDAgLyogSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudC5jcHAgKi87IH07CkBAIC02NTA3LDYgKzY1MDksOCBAQAogCQk2NURGMzIzNjA5
RDFERTY1MDAwQkUzMjUgLyogSlNDYW52YXNQYXR0ZXJuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU0NhbnZhc1BhdHRlcm4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNjVGODA2OTcwNTREOUY4NjAwOEJGNzc2IC8qIEJsb2NrRXhjZXB0aW9ucy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGgg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEJs
b2NrRXhjZXB0aW9ucy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1
c2VzVGFicyA9IDA7IH07CiAJCTY1RkVBODY4MDk4MzNBREUwMEJFRDRBQiAvKiBQYWdlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWdlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkU0N0U2NUUxMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMR2V0
SW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJHTEdldElu
Zm8uY3BwOyBwYXRoID0gY2FudmFzL1dlYkdMR2V0SW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTZFNDdFNjVGMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEdldEluZm8uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViR0xHZXRJbmZvLmg7IHBhdGggPSBj
YW52YXMvV2ViR0xHZXRJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNjI2
RTAxMEVGMDIyRkUwMEEwN0UyMCAvKiBGb250RmFzdFBhdGguY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRm9udEZhc3RQYXRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzU0MTMzQTcxMDJFMDBFODAwMDc1RDAwIC8qIEluc3BlY3RvclRpbWVsaW5l
QWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NTQxMzNBOTEwMkUwMEY0
MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNjQwLDYgKzEwNjQ0LDggQEAKIAkJCQk0OUM3QjlBRTEw
NDJEMzJFMDAwOUQ0NDcgLyogV2ViR0xGcmFtZWJ1ZmZlci5jcHAgKi8sCiAJCQkJNDlDN0I5QUYx
MDQyRDMyRTAwMDlENDQ3IC8qIFdlYkdMRnJhbWVidWZmZXIuaCAqLywKIAkJCQk0OUM3QjlCMDEw
NDJEMzJFMDAwOUQ0NDcgLyogV2ViR0xGcmFtZWJ1ZmZlci5pZGwgKi8sCisJCQkJNkU0N0U2NUUx
MEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMR2V0SW5mby5jcHAgKi8sCisJCQkJNkU0N0U2NUYxMEI3
OTQ0QjAwQjE4NkM4IC8qIFdlYkdMR2V0SW5mby5oICovLAogCQkJCTQ5NDg0RkIzMTAyQ0YyM0Mw
MDE4N0REMyAvKiBDYW52YXNHcmFkaWVudC5jcHAgKi8sCiAJCQkJNDk0ODRGQjQxMDJDRjIzQzAw
MTg3REQzIC8qIENhbnZhc0dyYWRpZW50LmggKi8sCiAJCQkJNDk0ODRGQjUxMDJDRjIzQzAwMTg3
REQzIC8qIENhbnZhc0dyYWRpZW50LmlkbCAqLywKQEAgLTE4MTM0LDYgKzE4MTQwLDcgQEAKIAkJ
CQlFMTI0NzQ4NDEwQUExNjFEMDBCNzk0OTMgLyogQXV0aGVudGljYXRpb25DbGllbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzODJERjU4MTBBOEQ1QzkwMDkyNTY1MiAvKiBDb2xvclNwYWNlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBQjMxQzkxRTEwQUUxQjhFMDAwQzdCOTIgLyogTGluZUNsYW1w
VmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTZFNDdFNjYxMTBCNzk0NEIwMEIxODZDOCAvKiBX
ZWJHTEdldEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjAyNzcsNiArMjAyODQsNyBAQAogCQkJ
CTE0NzlGQUVGMTA5QUUzNzUwMERFRDY1NSAvKiBSZW5kZXJSdWJ5QmFzZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxNDc5RkFGMTEwOUFFMzc1MDBERUQ2NTUgLyogUmVuZGVyUnVieVJ1bi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxNDc5RkFGMzEwOUFFMzc1MDBERUQ2NTUgLyogUmVuZGVyUnVi
eVRleHQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNkU0N0U2NjAxMEI3OTQ0QjAwQjE4NkM4IC8q
IFdlYkdMR2V0SW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
anMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCShyZXZpc2lv
biA1MTMzNSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRD
dXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMSArMzMsMjUgQEAKICNpbmNsdWRlICJF
eGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MSW1hZ2VFbGVtZW50LmgiCi0jaW5jbHVkZSAiSlNXZWJHTEZsb2F0QXJyYXkuaCIKLSNp
bmNsdWRlICJKU1dlYkdMSW50QXJyYXkuaCIKICNpbmNsdWRlICJKU0hUTUxDYW52YXNFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSlNIVE1MSW1hZ2VFbGVtZW50LmgiCisjaW5jbHVkZSAiSlNXZWJHTEJ1
ZmZlci5oIgorI2luY2x1ZGUgIkpTV2ViR0xGbG9hdEFycmF5LmgiCisjaW5jbHVkZSAiSlNXZWJH
TEZyYW1lYnVmZmVyLmgiCisjaW5jbHVkZSAiSlNXZWJHTEludEFycmF5LmgiCisjaW5jbHVkZSAi
SlNXZWJHTFByb2dyYW0uaCIKKyNpbmNsdWRlICJKU1dlYkdMUmVuZGVyYnVmZmVyLmgiCisjaW5j
bHVkZSAiSlNXZWJHTFNoYWRlci5oIgorI2luY2x1ZGUgIkpTV2ViR0xUZXh0dXJlLmgiCisjaW5j
bHVkZSAiSlNXZWJHTFVuc2lnbmVkQnl0ZUFycmF5LmgiCiAjaW5jbHVkZSAiSlNXZWJLaXRDU1NN
YXRyaXguaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIldlYkdMQnVm
ZmVyLmgiCisjaW5jbHVkZSAiV2ViR0xHZXRJbmZvLmgiCisjaW5jbHVkZSAiV2ViR0xGbG9hdEFy
cmF5LmgiCisjaW5jbHVkZSAiV2ViR0xGcmFtZWJ1ZmZlci5oIgorI2luY2x1ZGUgIldlYkdMSW50
QXJyYXkuaCIKKyNpbmNsdWRlICJXZWJHTFByb2dyYW0uaCIKICNpbmNsdWRlIDxydW50aW1lL0Vy
cm9yLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvT3duRmFz
dE1hbGxvY1B0ci5oPgpAQCAtODcsNiArMTAxLDIxNCBAQCBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpidWZmZXJTCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKK0pTVmFs
dWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGNvbnN0IFdlYkdMR2V0SW5mbyYgaW5mbykKK3sKKyAgICBzd2l0Y2ggKGluZm8uZ2V0VHlwZSgp
KSB7CisgICAgY2FzZSBXZWJHTEdldEluZm86OmtUeXBlQm9vbDoKKyAgICAgICAgcmV0dXJuIGpz
Qm9vbGVhbihpbmZvLmdldEJvb2woKSk7CisgICAgY2FzZSBXZWJHTEdldEluZm86OmtUeXBlRmxv
YXQ6CisgICAgICAgIHJldHVybiBqc051bWJlcihleGVjLCBpbmZvLmdldEZsb2F0KCkpOworICAg
IGNhc2UgV2ViR0xHZXRJbmZvOjprVHlwZUxvbmc6CisgICAgICAgIHJldHVybiBqc051bWJlcihl
eGVjLCBpbmZvLmdldExvbmcoKSk7CisgICAgY2FzZSBXZWJHTEdldEluZm86OmtUeXBlTnVsbDoK
KyAgICAgICAgcmV0dXJuIGpzTnVsbCgpOworICAgIGNhc2UgV2ViR0xHZXRJbmZvOjprVHlwZVN0
cmluZzoKKyAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIGluZm8uZ2V0U3RyaW5nKCkpOwor
ICAgIGNhc2UgV2ViR0xHZXRJbmZvOjprVHlwZVVuc2lnbmVkTG9uZzoKKyAgICAgICAgcmV0dXJu
IGpzTnVtYmVyKGV4ZWMsIGluZm8uZ2V0VW5zaWduZWRMb25nKCkpOworICAgIGNhc2UgV2ViR0xH
ZXRJbmZvOjprVHlwZVdlYkdMQnVmZmVyOgorICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9i
YWxPYmplY3QsIGluZm8uZ2V0V2ViR0xCdWZmZXIoKSk7CisgICAgY2FzZSBXZWJHTEdldEluZm86
OmtUeXBlV2ViR0xGbG9hdEFycmF5OgorICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxP
YmplY3QsIGluZm8uZ2V0V2ViR0xGbG9hdEFycmF5KCkpOworICAgIGNhc2UgV2ViR0xHZXRJbmZv
OjprVHlwZVdlYkdMRnJhbWVidWZmZXI6CisgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2Jh
bE9iamVjdCwgaW5mby5nZXRXZWJHTEZyYW1lYnVmZmVyKCkpOworICAgIGNhc2UgV2ViR0xHZXRJ
bmZvOjprVHlwZVdlYkdMSW50QXJyYXk6CisgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2Jh
bE9iamVjdCwgaW5mby5nZXRXZWJHTEludEFycmF5KCkpOworICAgIC8vIEZJWE1FOiBpbXBsZW1l
bnQgV2ViR0xPYmplY3RBcnJheQorICAgIC8vIGNhc2UgV2ViR0xHZXRJbmZvOjprVHlwZVdlYkdM
T2JqZWN0QXJyYXk6CisgICAgY2FzZSBXZWJHTEdldEluZm86OmtUeXBlV2ViR0xQcm9ncmFtOgor
ICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIGluZm8uZ2V0V2ViR0xQcm9n
cmFtKCkpOworICAgIGNhc2UgV2ViR0xHZXRJbmZvOjprVHlwZVdlYkdMUmVuZGVyYnVmZmVyOgor
ICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIGluZm8uZ2V0V2ViR0xSZW5k
ZXJidWZmZXIoKSk7CisgICAgY2FzZSBXZWJHTEdldEluZm86OmtUeXBlV2ViR0xUZXh0dXJlOgor
ICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIGluZm8uZ2V0V2ViR0xUZXh0
dXJlKCkpOworICAgIGNhc2UgV2ViR0xHZXRJbmZvOjprVHlwZVdlYkdMVW5zaWduZWRCeXRlQXJy
YXk6CisgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgaW5mby5nZXRXZWJH
TFVuc2lnbmVkQnl0ZUFycmF5KCkpOworICAgIGRlZmF1bHQ6CisgICAgICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIH0KK30KKworZW51bSBP
YmplY3RUeXBlIHsKKyAgICBrQnVmZmVyLCBrUmVuZGVyYnVmZmVyLCBrVGV4dHVyZSwga1ZlcnRl
eEF0dHJpYgorfTsKKworc3RhdGljIEpTVmFsdWUgZ2V0T2JqZWN0UGFyYW1ldGVyKEpTV2ViR0xS
ZW5kZXJpbmdDb250ZXh0KiBvYmosIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJn
cywgT2JqZWN0VHlwZSBvYmplY3RUeXBlKQoreworICAgIGlmIChhcmdzLnNpemUoKSAhPSAyKQor
ICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBTeW50YXhFcnJvcik7CisKKyAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKKyAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQgPSBz
dGF0aWNfY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHQqPihvYmotPmltcGwoKSk7CisgICAgdW5z
aWduZWQgdGFyZ2V0ID0gYXJncy5hdCgwKS50b0ludDMyKGV4ZWMpOworICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgdW5zaWdu
ZWQgcG5hbWUgPSBhcmdzLmF0KDEpLnRvSW50MzIoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBXZWJHTEdldElu
Zm8gaW5mbzsKKyAgICBzd2l0Y2ggKG9iamVjdFR5cGUpIHsKKyAgICBjYXNlIGtCdWZmZXI6Cisg
ICAgICAgIGluZm8gPSBjb250ZXh0LT5nZXRCdWZmZXJQYXJhbWV0ZXIodGFyZ2V0LCBwbmFtZSwg
ZWMpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIGtSZW5kZXJidWZmZXI6CisgICAgICAgIGlu
Zm8gPSBjb250ZXh0LT5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIodGFyZ2V0LCBwbmFtZSwgZWMp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIGtUZXh0dXJlOgorICAgICAgICBpbmZvID0gY29u
dGV4dC0+Z2V0VGV4UGFyYW1ldGVyKHRhcmdldCwgcG5hbWUsIGVjKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBrVmVydGV4QXR0cmliOgorICAgICAgICAvLyB0YXJnZXQgPT4gaW5kZXgKKyAg
ICAgICAgaW5mbyA9IGNvbnRleHQtPmdldFZlcnRleEF0dHJpYih0YXJnZXQsIHBuYW1lLCBlYyk7
CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIG5vdEltcGxlbWVudGVkKCk7
CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBpZiAoZWMpIHsKKyAgICAgICAgc2V0RE9NRXhj
ZXB0aW9uKGV4ZWMsIGVjKTsKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQor
ICAgIHJldHVybiB0b0pTKGV4ZWMsIG9iai0+Z2xvYmFsT2JqZWN0KCksIGluZm8pOworfQorCitl
bnVtIFdoaWNoUHJvZ3JhbUNhbGwgeworICAgIGtQcm9ncmFtUGFyYW1ldGVyLCBrVW5pZm9ybQor
fTsKKworc3RhdGljIEpTVmFsdWUgZ2V0UHJvZ3JhbVBhcmFtZXRlckhlbHBlcihKU1dlYkdMUmVu
ZGVyaW5nQ29udGV4dCogb2JqLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3Ms
IFdoaWNoUHJvZ3JhbUNhbGwgcHJvZ3JhbUNhbGwpCit7CisgICAgaWYgKGFyZ3Muc2l6ZSgpICE9
IDIpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFN5bnRheEVycm9yKTsKKworICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4
dCA9IHN0YXRpY19jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dCo+KG9iai0+aW1wbCgpKTsKKyAg
ICBXZWJHTFByb2dyYW0qIHByb2dyYW0gPSB0b1dlYkdMUHJvZ3JhbShhcmdzLmF0KDApKTsKKyAg
ICB1bnNpZ25lZCBwbmFtZSA9IGFyZ3MuYXQoMSkudG9JbnQzMihleGVjKTsKKyAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIFdl
YkdMR2V0SW5mbyBpbmZvOworICAgIHN3aXRjaCAocHJvZ3JhbUNhbGwpIHsKKyAgICBjYXNlIGtQ
cm9ncmFtUGFyYW1ldGVyOgorICAgICAgICBpbmZvID0gY29udGV4dC0+Z2V0UHJvZ3JhbVBhcmFt
ZXRlcihwcm9ncmFtLCBwbmFtZSwgZWMpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIGtVbmlm
b3JtOgorICAgICAgICAvLyBwbmFtZSAtPiBsb2NhdGlvbgorICAgICAgICBpbmZvID0gY29udGV4
dC0+Z2V0VW5pZm9ybShwcm9ncmFtLCBwbmFtZSwgZWMpOworICAgICAgICBicmVhazsKKyAgICBk
ZWZhdWx0OgorICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgaWYgKGVjKSB7CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIH0KKyAgICByZXR1cm4gdG9KUyhleGVjLCBv
YmotPmdsb2JhbE9iamVjdCgpLCBpbmZvKTsKK30KKworSlNWYWx1ZSBKU1dlYkdMUmVuZGVyaW5n
Q29udGV4dDo6Z2V0QnVmZmVyUGFyYW1ldGVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlz
dCYgYXJncykKK3sKKyAgICByZXR1cm4gZ2V0T2JqZWN0UGFyYW1ldGVyKHRoaXMsIGV4ZWMsIGFy
Z3MsIGtCdWZmZXIpOworfQorCitKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdM
aXN0JiBhcmdzKQoreworICAgIGlmIChhcmdzLnNpemUoKSAhPSAzKQorICAgICAgICByZXR1cm4g
dGhyb3dFcnJvcihleGVjLCBTeW50YXhFcnJvcik7CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKKyAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxXZWJH
TFJlbmRlcmluZ0NvbnRleHQqPihpbXBsKCkpOworICAgIHVuc2lnbmVkIHRhcmdldCA9IGFyZ3Mu
YXQoMCkudG9JbnQzMihleGVjKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIHVuc2lnbmVkIGF0dGFjaG1lbnQgPSBhcmdz
LmF0KDEpLnRvSW50MzIoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB1bnNpZ25lZCBwbmFtZSA9IGFyZ3MuYXQo
MikudG9JbnQzMihleGVjKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIFdlYkdMR2V0SW5mbyBpbmZvID0gY29udGV4dC0+
Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKHRhcmdldCwgYXR0YWNobWVudCwgcG5h
bWUsIGVjKTsKKyAgICBpZiAoZWMpIHsKKyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVj
KTsKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQorICAgIHJldHVybiB0b0pT
KGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBpbmZvKTsKK30KKworSlNWYWx1ZSBKU1dlYkdMUmVuZGVy
aW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYg
YXJncykKK3sKKyAgICBpZiAoYXJncy5zaXplKCkgIT0gMSkKKyAgICAgICAgcmV0dXJuIHRocm93
RXJyb3IoZXhlYywgU3ludGF4RXJyb3IpOworCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Cisg
ICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8V2ViR0xSZW5k
ZXJpbmdDb250ZXh0Kj4oaW1wbCgpKTsKKyAgICB1bnNpZ25lZCBwbmFtZSA9IGFyZ3MuYXQoMCku
dG9JbnQzMihleGVjKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOworICAgIFdlYkdMR2V0SW5mbyBpbmZvID0gY29udGV4dC0+Z2V0
UGFyYW1ldGVyKHBuYW1lLCBlYyk7CisgICAgaWYgKGVjKSB7CisgICAgICAgIHNldERPTUV4Y2Vw
dGlvbihleGVjLCBlYyk7CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIH0KKyAg
ICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QoKSwgaW5mbyk7Cit9CisKK0pTVmFsdWUg
SlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFByb2dyYW1QYXJhbWV0ZXIoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreworICAgIHJldHVybiBnZXRQcm9ncmFtUGFyYW1l
dGVySGVscGVyKHRoaXMsIGV4ZWMsIGFyZ3MsIGtQcm9ncmFtUGFyYW1ldGVyKTsKK30KKworSlNW
YWx1ZSBKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICByZXR1cm4gZ2V0T2Jq
ZWN0UGFyYW1ldGVyKHRoaXMsIGV4ZWMsIGFyZ3MsIGtSZW5kZXJidWZmZXIpOworfQorCitKU1Zh
bHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTaGFkZXJQYXJhbWV0ZXIoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreworICAgIGlmIChhcmdzLnNpemUoKSAhPSAy
KQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBTeW50YXhFcnJvcik7CisKKyAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQg
PSBzdGF0aWNfY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHQqPihpbXBsKCkpOworICAgIFdlYkdM
U2hhZGVyKiBzaGFkZXIgPSB0b1dlYkdMU2hhZGVyKGFyZ3MuYXQoMCkpOworICAgIHVuc2lnbmVk
IHBuYW1lID0gYXJncy5hdCgxKS50b0ludDMyKGV4ZWMpOworICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgV2ViR0xHZXRJbmZv
IGluZm8gPSBjb250ZXh0LT5nZXRTaGFkZXJQYXJhbWV0ZXIoc2hhZGVyLCBwbmFtZSwgZWMpOwor
ICAgIGlmIChlYykgeworICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xv
YmFsT2JqZWN0KCksIGluZm8pOworfQorCitKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpnZXRUZXhQYXJhbWV0ZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQor
eworICAgIHJldHVybiBnZXRPYmplY3RQYXJhbWV0ZXIodGhpcywgZXhlYywgYXJncywga1RleHR1
cmUpOworfQorCitKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRVbmlmb3JtKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICByZXR1cm4gZ2V0UHJv
Z3JhbVBhcmFtZXRlckhlbHBlcih0aGlzLCBleGVjLCBhcmdzLCBrVW5pZm9ybSk7Cit9CisKK0pT
VmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFZlcnRleEF0dHJpYihFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCit7CisgICAgcmV0dXJuIGdldE9iamVjdFBhcmFt
ZXRlcih0aGlzLCBleGVjLCBhcmdzLCBrVmVydGV4QXR0cmliKTsKK30KKwogLy8gdm9pZCB0ZXhJ
bWFnZTJESFRNTChpbiB1bnNpZ25lZCBsb25nIHRhcmdldCwgaW4gdW5zaWduZWQgbG9uZyBsZXZl
bCwgaW4gSFRNTEltYWdlRWxlbWVudCBpbWFnZSk7CiBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp0ZXhJbWFnZTJEKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykK
IHsgCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbUJpbmRpbmcu
aAkocmV2aXNpb24gNTEzMzUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3Rv
bUJpbmRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMzY1LDcgKzM2NSwxNSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAjaWYgRU5BQkxFKDNEX0NBTlZBUykKICAgICAgICAgREVDTEFSRV9DQUxMQkFD
SyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCdWZmZXJEYXRhKTsKICAgICAgICAgREVDTEFSRV9DQUxM
QkFDSyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCdWZmZXJTdWJEYXRhKTsKLSAgICAgICAgREVDTEFS
RV9DQUxMQkFDSyhXZWJHTFJlbmRlcmluZ0NvbnRleHRTaXplb2YpOworICAgICAgICBERUNMQVJF
X0NBTExCQUNLKFdlYkdMUmVuZGVyaW5nQ29udGV4dEdldEJ1ZmZlclBhcmFtZXRlcik7CisgICAg
ICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xSZW5kZXJpbmdDb250ZXh0R2V0RnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJHTFJlbmRl
cmluZ0NvbnRleHRHZXRQYXJhbWV0ZXIpOworICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEdldFByb2dyYW1QYXJhbWV0ZXIpOworICAgICAgICBERUNMQVJFX0NB
TExCQUNLKFdlYkdMUmVuZGVyaW5nQ29udGV4dEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcik7Cisg
ICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xSZW5kZXJpbmdDb250ZXh0R2V0U2hhZGVyUGFy
YW1ldGVyKTsKKyAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJHTFJlbmRlcmluZ0NvbnRleHRH
ZXRUZXhQYXJhbWV0ZXIpOworICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdMUmVuZGVyaW5n
Q29udGV4dEdldFVuaWZvcm0pOworICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdMUmVuZGVy
aW5nQ29udGV4dEdldFZlcnRleEF0dHJpYik7CiAgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2Vi
R0xSZW5kZXJpbmdDb250ZXh0VGV4SW1hZ2UyRCk7CiAgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0so
V2ViR0xSZW5kZXJpbmdDb250ZXh0VGV4U3ViSW1hZ2UyRCk7CiAgICAgICAgIERFQ0xBUkVfQ0FM
TEJBQ0soV2ViR0xSZW5kZXJpbmdDb250ZXh0VW5pZm9ybTFmdik7CkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRl
eHRDdXN0b20uY3BwCShyZXZpc2lvbiA1MTMzNSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDUsNiArNDUsOCBAQAogI2luY2x1ZGUgIlY4V2ViR0xCeXRlQXJyYXkuaCIKICNpbmNsdWRlICJW
OFdlYkdMRmxvYXRBcnJheS5oIgogI2luY2x1ZGUgIlY4V2ViR0xJbnRBcnJheS5oIgorI2luY2x1
ZGUgIlY4V2ViR0xQcm9ncmFtLmgiCisjaW5jbHVkZSAiVjhXZWJHTFNoYWRlci5oIgogI2luY2x1
ZGUgIlY4V2ViR0xTaG9ydEFycmF5LmgiCiAjaW5jbHVkZSAiVjhXZWJHTFVuc2lnbmVkQnl0ZUFy
cmF5LmgiCiAjaW5jbHVkZSAiVjhXZWJHTFVuc2lnbmVkSW50QXJyYXkuaCIKQEAgLTE3MCw2ICsx
NzIsMjYzIEBAIENBTExCQUNLX0ZVTkNfREVDTChXZWJHTFJlbmRlcmluZ0NvbnRleHQKICAgICBy
ZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHRvVjgoY29uc3QgV2ViR0xHZXRJbmZvJiBpbmZvKQoreworICAgIHN3aXRjaCAoaW5mby5nZXRU
eXBlKCkpIHsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVCb29sOgorICAgICAgICByZXR1
cm4gdjg6OkJvb2xlYW46Ok5ldyhpbmZvLmdldEJvb2woKSk7CisgICAgY2FzZSBXZWJHTEdldElu
Zm86OmtUeXBlRmxvYXQ6CisgICAgICAgIHJldHVybiB2ODo6TnVtYmVyOjpOZXcoaW5mby5nZXRG
bG9hdCgpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVMb25nOgorICAgICAgICByZXR1
cm4gdjg6OkludGVnZXI6Ok5ldyhpbmZvLmdldExvbmcoKSk7CisgICAgY2FzZSBXZWJHTEdldElu
Zm86OmtUeXBlTnVsbDoKKyAgICAgICAgcmV0dXJuIHY4OjpOdWxsKCk7CisgICAgY2FzZSBXZWJH
TEdldEluZm86OmtUeXBlU3RyaW5nOgorICAgICAgICByZXR1cm4gdjg6OlN0cmluZzo6TmV3KGZy
b21XZWJDb3JlU3RyaW5nKGluZm8uZ2V0U3RyaW5nKCkpLCBpbmZvLmdldFN0cmluZygpLmxlbmd0
aCgpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVVbnNpZ25lZExvbmc6CisgICAgICAg
IHJldHVybiB2ODo6SW50ZWdlcjo6TmV3RnJvbVVuc2lnbmVkKGluZm8uZ2V0VW5zaWduZWRMb25n
KCkpOworICAgIGNhc2UgV2ViR0xHZXRJbmZvOjprVHlwZVdlYkdMQnVmZmVyOgorICAgICAgICBy
ZXR1cm4gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9WOE9iamVjdChWOENsYXNzSW5kZXg6OldFQkdM
QlVGRkVSLCBpbmZvLmdldFdlYkdMQnVmZmVyKCkpOworICAgIGNhc2UgV2ViR0xHZXRJbmZvOjpr
VHlwZVdlYkdMRmxvYXRBcnJheToKKyAgICAgICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6Y29udmVy
dFRvVjhPYmplY3QoVjhDbGFzc0luZGV4OjpXRUJHTEZMT0FUQVJSQVksIGluZm8uZ2V0V2ViR0xG
bG9hdEFycmF5KCkpOworICAgIGNhc2UgV2ViR0xHZXRJbmZvOjprVHlwZVdlYkdMRnJhbWVidWZm
ZXI6CisgICAgICAgIHJldHVybiBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb1Y4T2JqZWN0KFY4Q2xh
c3NJbmRleDo6V0VCR0xGUkFNRUJVRkZFUiwgaW5mby5nZXRXZWJHTEZyYW1lYnVmZmVyKCkpOwor
ICAgIGNhc2UgV2ViR0xHZXRJbmZvOjprVHlwZVdlYkdMSW50QXJyYXk6CisgICAgICAgIHJldHVy
biBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb1Y4T2JqZWN0KFY4Q2xhc3NJbmRleDo6V0VCR0xJTlRB
UlJBWSwgaW5mby5nZXRXZWJHTEludEFycmF5KCkpOworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQg
V2ViR0xPYmplY3RBcnJheQorICAgIC8vIGNhc2UgV2ViR0xHZXRJbmZvOjprVHlwZVdlYkdMT2Jq
ZWN0QXJyYXk6CisgICAgY2FzZSBXZWJHTEdldEluZm86OmtUeXBlV2ViR0xQcm9ncmFtOgorICAg
ICAgICByZXR1cm4gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9WOE9iamVjdChWOENsYXNzSW5kZXg6
OldFQkdMUFJPR1JBTSwgaW5mby5nZXRXZWJHTFByb2dyYW0oKSk7CisgICAgY2FzZSBXZWJHTEdl
dEluZm86OmtUeXBlV2ViR0xSZW5kZXJidWZmZXI6CisgICAgICAgIHJldHVybiBWOERPTVdyYXBw
ZXI6OmNvbnZlcnRUb1Y4T2JqZWN0KFY4Q2xhc3NJbmRleDo6V0VCR0xSRU5ERVJCVUZGRVIsIGlu
Zm8uZ2V0V2ViR0xSZW5kZXJidWZmZXIoKSk7CisgICAgY2FzZSBXZWJHTEdldEluZm86OmtUeXBl
V2ViR0xUZXh0dXJlOgorICAgICAgICByZXR1cm4gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9WOE9i
amVjdChWOENsYXNzSW5kZXg6OldFQkdMVEVYVFVSRSwgaW5mby5nZXRXZWJHTFRleHR1cmUoKSk7
CisgICAgY2FzZSBXZWJHTEdldEluZm86OmtUeXBlV2ViR0xVbnNpZ25lZEJ5dGVBcnJheToKKyAg
ICAgICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6Y29udmVydFRvVjhPYmplY3QoVjhDbGFzc0luZGV4
OjpXRUJHTFVOU0lHTkVEQllURUFSUkFZLCBpbmZvLmdldFdlYkdMVW5zaWduZWRCeXRlQXJyYXko
KSk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAgICAgcmV0
dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICB9Cit9CisKK2VudW0gT2JqZWN0VHlwZSB7CisgICAg
a0J1ZmZlciwga1JlbmRlcmJ1ZmZlciwga1RleHR1cmUsIGtWZXJ0ZXhBdHRyaWIKK307CisKK3N0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZ2V0T2JqZWN0UGFyYW1ldGVyKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MsIE9iamVjdFR5cGUgb2JqZWN0VHlwZSkKK3sKKyAgICBpZiAoYXJncy5M
ZW5ndGgoKSAhPSAyKSB7CisgICAgICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihTWU5UQVhf
RVJSKTsKKyAgICAgICAgcmV0dXJuIG5vdEhhbmRsZWRCeUludGVyY2VwdG9yKCk7CisgICAgfQor
CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBj
b250ZXh0ID0KKyAgICAgICAgVjhET01XcmFwcGVyOjpjb252ZXJ0RE9NV3JhcHBlclRvTmF0aXZl
PFdlYkdMUmVuZGVyaW5nQ29udGV4dD4oYXJncy5Ib2xkZXIoKSk7CisgICAgYm9vbCBvazsKKyAg
ICB1bnNpZ25lZCB0YXJnZXQgPSB0b0ludDMyKGFyZ3NbMF0sIG9rKTsKKyAgICBpZiAoIW9rKSB7
CisgICAgICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihTWU5UQVhfRVJSKTsKKyAgICAgICAg
cmV0dXJuIG5vdEhhbmRsZWRCeUludGVyY2VwdG9yKCk7CisgICAgfQorICAgIHVuc2lnbmVkIHBu
YW1lID0gdG9JbnQzMihhcmdzWzFdLCBvayk7CisgICAgaWYgKCFvaykgeworICAgICAgICBWOFBy
b3h5OjpzZXRET01FeGNlcHRpb24oU1lOVEFYX0VSUik7CisgICAgICAgIHJldHVybiBub3RIYW5k
bGVkQnlJbnRlcmNlcHRvcigpOworICAgIH0KKyAgICBXZWJHTEdldEluZm8gaW5mbzsKKyAgICBz
d2l0Y2ggKG9iamVjdFR5cGUpIHsKKyAgICBjYXNlIGtCdWZmZXI6CisgICAgICAgIGluZm8gPSBj
b250ZXh0LT5nZXRCdWZmZXJQYXJhbWV0ZXIodGFyZ2V0LCBwbmFtZSwgZWMpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIGtSZW5kZXJidWZmZXI6CisgICAgICAgIGluZm8gPSBjb250ZXh0LT5n
ZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIodGFyZ2V0LCBwbmFtZSwgZWMpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIGtUZXh0dXJlOgorICAgICAgICBpbmZvID0gY29udGV4dC0+Z2V0VGV4UGFy
YW1ldGVyKHRhcmdldCwgcG5hbWUsIGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBrVmVy
dGV4QXR0cmliOgorICAgICAgICAvLyB0YXJnZXQgPT4gaW5kZXgKKyAgICAgICAgaW5mbyA9IGNv
bnRleHQtPmdldFZlcnRleEF0dHJpYih0YXJnZXQsIHBuYW1lLCBlYyk7CisgICAgICAgIGJyZWFr
OworICAgIGRlZmF1bHQ6CisgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICBpZiAoZWMpIHsKKyAgICAgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9u
KGVjKTsKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICB9CisgICAgcmV0dXJu
IHRvVjgoaW5mbyk7Cit9CisKK2VudW0gV2hpY2hQcm9ncmFtQ2FsbCB7CisgICAga1Byb2dyYW1Q
YXJhbWV0ZXIsIGtVbmlmb3JtCit9OworCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGdl
dFByb2dyYW1QYXJhbWV0ZXIoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywgV2hpY2hQcm9ncmFt
Q2FsbCBwcm9ncmFtQ2FsbCkKK3sKKyAgICBpZiAoYXJncy5MZW5ndGgoKSAhPSAyKSB7CisgICAg
ICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihTWU5UQVhfRVJSKTsKKyAgICAgICAgcmV0dXJu
IG5vdEhhbmRsZWRCeUludGVyY2VwdG9yKCk7CisgICAgfQorCisgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7CisgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0ID0KKyAgICAgICAgVjhE
T01XcmFwcGVyOjpjb252ZXJ0RE9NV3JhcHBlclRvTmF0aXZlPFdlYkdMUmVuZGVyaW5nQ29udGV4
dD4oYXJncy5Ib2xkZXIoKSk7CisgICAgV2ViR0xQcm9ncmFtKiBwcm9ncmFtID0gVjhXZWJHTFBy
b2dyYW06Okhhc0luc3RhbmNlKGFyZ3NbMF0pID8gdjhET01XcmFwcGVyVG88V2ViR0xQcm9ncmFt
PihWOENsYXNzSW5kZXg6OldFQkdMUFJPR1JBTSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2Fz
dChhcmdzWzBdKSkgOiAwOworICAgIGJvb2wgb2s7CisgICAgdW5zaWduZWQgcG5hbWUgPSB0b0lu
dDMyKGFyZ3NbMV0sIG9rKTsKKyAgICBpZiAoIW9rKSB7CisgICAgICAgIFY4UHJveHk6OnNldERP
TUV4Y2VwdGlvbihTWU5UQVhfRVJSKTsKKyAgICAgICAgcmV0dXJuIG5vdEhhbmRsZWRCeUludGVy
Y2VwdG9yKCk7CisgICAgfQorICAgIFdlYkdMR2V0SW5mbyBpbmZvOworICAgIHN3aXRjaCAocHJv
Z3JhbUNhbGwpIHsKKyAgICBjYXNlIGtQcm9ncmFtUGFyYW1ldGVyOgorICAgICAgICBpbmZvID0g
Y29udGV4dC0+Z2V0UHJvZ3JhbVBhcmFtZXRlcihwcm9ncmFtLCBwbmFtZSwgZWMpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIGtVbmlmb3JtOgorICAgICAgICAvLyBwbmFtZSAtPiBsb2NhdGlv
bgorICAgICAgICBpbmZvID0gY29udGV4dC0+Z2V0VW5pZm9ybShwcm9ncmFtLCBwbmFtZSwgZWMp
OworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgaWYgKGVjKSB7CisgICAgICAgIFY4UHJveHk6
OnNldERPTUV4Y2VwdGlvbihlYyk7CisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Cisg
ICAgfQorICAgIHJldHVybiB0b1Y4KGluZm8pOworfQorCisKK0NBTExCQUNLX0ZVTkNfREVDTChX
ZWJHTFJlbmRlcmluZ0NvbnRleHRHZXRCdWZmZXJQYXJhbWV0ZXIpCit7CisgICAgSU5DX1NUQVRT
KCJET00uV2ViR0xSZW5kZXJpbmdDb250ZXh0LmdldEJ1ZmZlclBhcmFtZXRlcigpIik7CisgICAg
cmV0dXJuIGdldE9iamVjdFBhcmFtZXRlcihhcmdzLCBrQnVmZmVyKTsKK30KKworQ0FMTEJBQ0tf
RlVOQ19ERUNMKFdlYkdMUmVuZGVyaW5nQ29udGV4dEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcikKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRlcmluZ0NvbnRleHQuZ2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKCkiKTsKKworICAgIGlmIChhcmdzLkxlbmd0
aCgpICE9IDMpIHsKKyAgICAgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKFNZTlRBWF9FUlIp
OworICAgICAgICByZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsKKyAgICB9CisKKyAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNvbnRl
eHQgPQorICAgICAgICBWOERPTVdyYXBwZXI6OmNvbnZlcnRET01XcmFwcGVyVG9OYXRpdmU8V2Vi
R0xSZW5kZXJpbmdDb250ZXh0PihhcmdzLkhvbGRlcigpKTsKKyAgICBib29sIG9rOworICAgIHVu
c2lnbmVkIHRhcmdldCA9IHRvSW50MzIoYXJnc1swXSwgb2spOworICAgIGlmICghb2spIHsKKyAg
ICAgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKFNZTlRBWF9FUlIpOworICAgICAgICByZXR1
cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsKKyAgICB9CisgICAgdW5zaWduZWQgYXR0YWNo
bWVudCA9IHRvSW50MzIoYXJnc1sxXSwgb2spOworICAgIGlmICghb2spIHsKKyAgICAgICAgVjhQ
cm94eTo6c2V0RE9NRXhjZXB0aW9uKFNZTlRBWF9FUlIpOworICAgICAgICByZXR1cm4gbm90SGFu
ZGxlZEJ5SW50ZXJjZXB0b3IoKTsKKyAgICB9CisgICAgdW5zaWduZWQgcG5hbWUgPSB0b0ludDMy
KGFyZ3NbMl0sIG9rKTsKKyAgICBpZiAoIW9rKSB7CisgICAgICAgIFY4UHJveHk6OnNldERPTUV4
Y2VwdGlvbihTWU5UQVhfRVJSKTsKKyAgICAgICAgcmV0dXJuIG5vdEhhbmRsZWRCeUludGVyY2Vw
dG9yKCk7CisgICAgfQorICAgIFdlYkdMR2V0SW5mbyBpbmZvID0gY29udGV4dC0+Z2V0RnJhbWVi
dWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsIGVjKTsK
KyAgICBpZiAoZWMpIHsKKyAgICAgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKGVjKTsKKyAg
ICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICB9CisgICAgcmV0dXJuIHRvVjgoaW5m
byk7Cit9CisKK0NBTExCQUNLX0ZVTkNfREVDTChXZWJHTFJlbmRlcmluZ0NvbnRleHRHZXRQYXJh
bWV0ZXIpCit7CisgICAgSU5DX1NUQVRTKCJET00uV2ViR0xSZW5kZXJpbmdDb250ZXh0LmdldFBh
cmFtZXRlcigpIik7CisKKyAgICBpZiAoYXJncy5MZW5ndGgoKSAhPSAxKSB7CisgICAgICAgIFY4
UHJveHk6OnNldERPTUV4Y2VwdGlvbihTWU5UQVhfRVJSKTsKKyAgICAgICAgcmV0dXJuIG5vdEhh
bmRsZWRCeUludGVyY2VwdG9yKCk7CisgICAgfQorCisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CisgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0ID0KKyAgICAgICAgVjhET01XcmFw
cGVyOjpjb252ZXJ0RE9NV3JhcHBlclRvTmF0aXZlPFdlYkdMUmVuZGVyaW5nQ29udGV4dD4oYXJn
cy5Ib2xkZXIoKSk7CisgICAgYm9vbCBvazsKKyAgICB1bnNpZ25lZCBwbmFtZSA9IHRvSW50MzIo
YXJnc1swXSwgb2spOworICAgIGlmICghb2spIHsKKyAgICAgICAgVjhQcm94eTo6c2V0RE9NRXhj
ZXB0aW9uKFNZTlRBWF9FUlIpOworICAgICAgICByZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0
b3IoKTsKKyAgICB9CisgICAgV2ViR0xHZXRJbmZvIGluZm8gPSBjb250ZXh0LT5nZXRQYXJhbWV0
ZXIocG5hbWUsIGVjKTsKKyAgICBpZiAoZWMpIHsKKyAgICAgICAgVjhQcm94eTo6c2V0RE9NRXhj
ZXB0aW9uKGVjKTsKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICB9CisgICAg
cmV0dXJuIHRvVjgoaW5mbyk7Cit9CisKK0NBTExCQUNLX0ZVTkNfREVDTChXZWJHTFJlbmRlcmlu
Z0NvbnRleHRHZXRQcm9ncmFtUGFyYW1ldGVyKQoreworICAgIElOQ19TVEFUUygiRE9NLldlYkdM
UmVuZGVyaW5nQ29udGV4dC5nZXRQcm9ncmFtUGFyYW1ldGVyKCkiKTsKKyAgICByZXR1cm4gZ2V0
UHJvZ3JhbVBhcmFtZXRlcihhcmdzLCBrUHJvZ3JhbVBhcmFtZXRlcik7Cit9CisKK0NBTExCQUNL
X0ZVTkNfREVDTChXZWJHTFJlbmRlcmluZ0NvbnRleHRHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIp
Cit7CisgICAgSU5DX1NUQVRTKCJET00uV2ViR0xSZW5kZXJpbmdDb250ZXh0LmdldFJlbmRlcmJ1
ZmZlclBhcmFtZXRlcigpIik7CisgICAgcmV0dXJuIGdldE9iamVjdFBhcmFtZXRlcihhcmdzLCBr
UmVuZGVyYnVmZmVyKTsKK30KKworQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEdldFNoYWRlclBhcmFtZXRlcikKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRl
cmluZ0NvbnRleHQuZ2V0U2hhZGVyUGFyYW1ldGVyKCkiKTsKKworICAgIGlmIChhcmdzLkxlbmd0
aCgpICE9IDIpIHsKKyAgICAgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKFNZTlRBWF9FUlIp
OworICAgICAgICByZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsKKyAgICB9CisKKyAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNvbnRl
eHQgPQorICAgICAgICBWOERPTVdyYXBwZXI6OmNvbnZlcnRET01XcmFwcGVyVG9OYXRpdmU8V2Vi
R0xSZW5kZXJpbmdDb250ZXh0PihhcmdzLkhvbGRlcigpKTsKKyAgICBXZWJHTFNoYWRlciogc2hh
ZGVyID0gVjhXZWJHTFNoYWRlcjo6SGFzSW5zdGFuY2UoYXJnc1swXSkgPyB2OERPTVdyYXBwZXJU
bzxXZWJHTFNoYWRlcj4oVjhDbGFzc0luZGV4OjpXRUJHTFNIQURFUiwgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSkgOiAwOworICAgIGJvb2wgb2s7CisgICAgdW5zaWduZWQg
cG5hbWUgPSB0b0ludDMyKGFyZ3NbMV0sIG9rKTsKKyAgICBpZiAoIW9rKSB7CisgICAgICAgIFY4
UHJveHk6OnNldERPTUV4Y2VwdGlvbihTWU5UQVhfRVJSKTsKKyAgICAgICAgcmV0dXJuIG5vdEhh
bmRsZWRCeUludGVyY2VwdG9yKCk7CisgICAgfQorICAgIFdlYkdMR2V0SW5mbyBpbmZvID0gY29u
dGV4dC0+Z2V0U2hhZGVyUGFyYW1ldGVyKHNoYWRlciwgcG5hbWUsIGVjKTsKKyAgICBpZiAoZWMp
IHsKKyAgICAgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKGVjKTsKKyAgICAgICAgcmV0dXJu
IHY4OjpVbmRlZmluZWQoKTsKKyAgICB9CisgICAgcmV0dXJuIHRvVjgoaW5mbyk7Cit9CisKK0NB
TExCQUNLX0ZVTkNfREVDTChXZWJHTFJlbmRlcmluZ0NvbnRleHRHZXRUZXhQYXJhbWV0ZXIpCit7
CisgICAgSU5DX1NUQVRTKCJET00uV2ViR0xSZW5kZXJpbmdDb250ZXh0LmdldFRleFBhcmFtZXRl
cigpIik7CisgICAgcmV0dXJuIGdldE9iamVjdFBhcmFtZXRlcihhcmdzLCBrVGV4dHVyZSk7Cit9
CisKK0NBTExCQUNLX0ZVTkNfREVDTChXZWJHTFJlbmRlcmluZ0NvbnRleHRHZXRVbmlmb3JtKQor
eworICAgIElOQ19TVEFUUygiRE9NLldlYkdMUmVuZGVyaW5nQ29udGV4dC5nZXRVbmlmb3JtKCki
KTsKKyAgICByZXR1cm4gZ2V0UHJvZ3JhbVBhcmFtZXRlcihhcmdzLCBrVW5pZm9ybSk7Cit9CisK
K0NBTExCQUNLX0ZVTkNfREVDTChXZWJHTFJlbmRlcmluZ0NvbnRleHRHZXRWZXJ0ZXhBdHRyaWIp
Cit7CisgICAgSU5DX1NUQVRTKCJET00uV2ViR0xSZW5kZXJpbmdDb250ZXh0LmdldFZlcnRleEF0
dHJpYigpIik7CisgICAgcmV0dXJuIGdldE9iamVjdFBhcmFtZXRlcihhcmdzLCBrVmVydGV4QXR0
cmliKTsKK30KKwogQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYkdMUmVuZGVyaW5nQ29udGV4dFRleElt
YWdlMkQpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uV2ViR0xSZW5kZXJpbmdDb250ZXh0LnRleElt
YWdlMkQoKSIpOwpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNPYmplY3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzT2JqZWN0LmNwcAkocmV2aXNp
b24gNTEzMzUpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc09iamVjdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogQ2Fu
dmFzT2JqZWN0OjpDYW52YXNPYmplY3QoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0KQog
ICAgIDogbV9vYmplY3QoMCkKKyAgICAsIG1fc2hvdWxkRGVsZXRlT2JqZWN0KHRydWUpCiAgICAg
LCBtX2NvbnRleHQoY29udGV4dCkKIHsKIH0KQEAgLTQ0LDI0ICs0NSwyNyBAQCBDYW52YXNPYmpl
Y3Q6On5DYW52YXNPYmplY3QoKQogICAgICAgICBtX2NvbnRleHQtPnJlbW92ZU9iamVjdCh0aGlz
KTsKIH0KIAotdm9pZCBDYW52YXNPYmplY3Q6OnNldE9iamVjdChQbGF0Zm9ybTNET2JqZWN0IG9i
amVjdCkKK3ZvaWQgQ2FudmFzT2JqZWN0OjpzZXRPYmplY3QoUGxhdGZvcm0zRE9iamVjdCBvYmpl
Y3QsIGJvb2wgc2hvdWxkRGVsZXRlT2JqZWN0KQogewogICAgIGlmIChvYmplY3QgPT0gbV9vYmpl
Y3QpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgZGVsZXRlT2JqZWN0KCk7CiAgICAg
bV9vYmplY3QgPSBvYmplY3Q7CisgICAgbV9zaG91bGREZWxldGVPYmplY3QgPSBzaG91bGREZWxl
dGVPYmplY3Q7CiB9CiAKIHZvaWQgQ2FudmFzT2JqZWN0OjpkZWxldGVPYmplY3QoKQogewogICAg
IGlmIChtX29iamVjdCkgewotICAgICAgICBpZiAobV9jb250ZXh0KSB7Ci0gICAgICAgICAgICBt
X2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dDNEKCktPm1ha2VDb250ZXh0Q3VycmVudCgpOwotICAg
ICAgICAgICAgX2RlbGV0ZU9iamVjdChtX29iamVjdCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYg
KG1fc2hvdWxkRGVsZXRlT2JqZWN0KQorICAgICAgICAgICAgaWYgKG1fY29udGV4dCkgeworICAg
ICAgICAgICAgICAgIG1fY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+bWFrZUNvbnRleHRD
dXJyZW50KCk7CisgICAgICAgICAgICAgICAgX2RlbGV0ZU9iamVjdChtX29iamVjdCk7CisgICAg
ICAgICAgICB9CiAgICAgICAgIG1fb2JqZWN0ID0gMDsKICAgICB9CisgICAgbV9zaG91bGREZWxl
dGVPYmplY3QgPSB0cnVlOwogfQogCiB9CkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzT2JqZWN0
LmgJKHJldmlzaW9uIDUxMzM1KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNPYmplY3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHZpcnR1YWwgfkNhbnZhc09iamVjdCgpOwogICAgICAgICAKICAgICAgICAgUGxhdGZv
cm0zRE9iamVjdCBvYmplY3QoKSBjb25zdCB7IHJldHVybiBtX29iamVjdDsgfQotICAgICAgICB2
b2lkIHNldE9iamVjdChQbGF0Zm9ybTNET2JqZWN0KTsKKyAgICAgICAgdm9pZCBzZXRPYmplY3Qo
UGxhdGZvcm0zRE9iamVjdCwgYm9vbCBzaG91bGREZWxldGVPYmplY3QgPSB0cnVlKTsKICAgICAg
ICAgdm9pZCBkZWxldGVPYmplY3QoKTsKICAgICAgICAgCiAgICAgICAgIHZvaWQgZGV0YWNoQ29u
dGV4dCgpCkBAIC01Nyw2ICs1NywxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiAgICAg
cHJpdmF0ZToKICAgICAgICAgUGxhdGZvcm0zRE9iamVjdCBtX29iamVjdDsKKyAgICAgICAgLy8g
VGhlIHNob3VsZERlbGV0ZU9iamVjdCBmbGFnIGluZGljYXRlcyB3aGV0aGVyIHRoaXMgd3JhcHBl
cgorICAgICAgICAvLyBvd25zIHRoZSB1bmRlcmx5aW5nIHJlc291cmNlIGFuZCBzaG91bGQgZGVs
ZXRlIGl0IHdoZW4gdGhlCisgICAgICAgIC8vIHdyYXBwZXIgaXMgdW5yZWZlcmVuY2VkIGZvciB0
aGUgbGFzdCB0aW1lIGFuZCBkZWxldGVkLiBJdAorICAgICAgICAvLyBpcyBvbmx5IHNldCB0byBm
YWxzZSBmb3IgY2VydGFpbiBvYmplY3RzIHJldHVybmVkIGZyb20gZ2V0CisgICAgICAgIC8vIHF1
ZXJpZXMuIEZJWE1FOiBzaG91bGQgY29uc2lkZXIgY2Fub25pY2FsaXppbmcgYWxsIG9mIHRoZXNl
CisgICAgICAgIC8vIG9iamVjdHMgaW4gdGhlIGZ1dHVyZS4KKyAgICAgICAgYm9vbCBtX3Nob3Vs
ZERlbGV0ZU9iamVjdDsKICAgICAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBtX2NvbnRleHQ7
CiAgICAgfTsKICAgICAKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuY3BwCShyZXZp
c2lvbiA1MTMzNSkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNyw2ICszNywxMSBAQCBQYXNzUmVmUHRyPFdlYkdMQnVmZmVyPiBXZWJH
TEJ1ZmZlcjo6Y3JlCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHTEJ1ZmZlcihjdHgpKTsK
IH0KIAorUGFzc1JlZlB0cjxXZWJHTEJ1ZmZlcj4gV2ViR0xCdWZmZXI6OmNyZWF0ZShXZWJHTFJl
bmRlcmluZ0NvbnRleHQqIGN0eCwgUGxhdGZvcm0zRE9iamVjdCBvYmopCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBXZWJHTEJ1ZmZlcihjdHgsIG9iaikpOworfQorCiBXZWJHTEJ1ZmZlcjo6
V2ViR0xCdWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjdHgpCiAgICAgOiBDYW52YXNPYmpl
Y3QoY3R4KQogICAgICwgbV9lbGVtZW50QXJyYXlCdWZmZXJCeXRlTGVuZ3RoKDApCkBAIC00Niw2
ICs1MSwxMiBAQCBXZWJHTEJ1ZmZlcjo6V2ViR0xCdWZmZXIoV2ViR0xSZW5kZXJpbmdDCiAgICAg
c2V0T2JqZWN0KGNvbnRleHQoKS0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+Y3JlYXRlQnVmZmVyKCkp
OwogfQogCitXZWJHTEJ1ZmZlcjo6V2ViR0xCdWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBj
dHgsIFBsYXRmb3JtM0RPYmplY3Qgb2JqKQorICAgIDogQ2FudmFzT2JqZWN0KGN0eCkKK3sKKyAg
ICBzZXRPYmplY3Qob2JqLCBmYWxzZSk7Cit9CisKIHZvaWQgV2ViR0xCdWZmZXI6Ol9kZWxldGVP
YmplY3QoUGxhdGZvcm0zRE9iamVjdCBvYmplY3QpCiB7CiAgICAgY29udGV4dCgpLT5ncmFwaGlj
c0NvbnRleHQzRCgpLT5kZWxldGVCdWZmZXIob2JqZWN0KTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMQnVmZmVyLmgJKHJldmlzaW9uIDUxMzM1KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TEJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCwxMCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJHTEJ1ZmZlcj4g
Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCopOwogICAgICAgICAKKyAgICAgICAgLy8gRm9y
IHF1ZXJ5aW5nIHByZXZpb3VzbHkgY3JlYXRlZCBvYmplY3RzIHZpYSBlLmcuIGdldEZyYW1lYnVm
ZmVyQXR0YWNobWVudFBhcmFtZXRlcgorICAgICAgICAvLyBGSVhNRTogc2hvdWxkIGNvbnNpZGVy
IGNhbm9uaWNhbGl6aW5nIHRoZXNlIG9iamVjdHMKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
V2ViR0xCdWZmZXI+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqLCBQbGF0Zm9ybTNET2Jq
ZWN0KTsKKwogICAgICAgICBib29sIGFzc29jaWF0ZUJ1ZmZlckRhdGEodW5zaWduZWQgbG9uZyB0
YXJnZXQsIGludCBzaXplKTsKICAgICAgICAgYm9vbCBhc3NvY2lhdGVCdWZmZXJEYXRhKHVuc2ln
bmVkIGxvbmcgdGFyZ2V0LCBXZWJHTEFycmF5KiBhcnJheSk7CiAgICAgICAgIGJvb2wgYXNzb2Np
YXRlQnVmZmVyU3ViRGF0YSh1bnNpZ25lZCBsb25nIHRhcmdldCwgbG9uZyBvZmZzZXQsIFdlYkdM
QXJyYXkqIGFycmF5KTsKQEAgLTQ5LDYgKzUzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICAgICAgICAgICAgICAgICAgCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBXZWJHTEJ1ZmZl
cihXZWJHTFJlbmRlcmluZ0NvbnRleHQqKTsKKyAgICAgICAgV2ViR0xCdWZmZXIoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0KiwgUGxhdGZvcm0zRE9iamVjdCBvYmopOwogICAgICAgICAKICAgICAgICAg
dmlydHVhbCB2b2lkIF9kZWxldGVPYmplY3QoUGxhdGZvcm0zRE9iamVjdCBvKTsKICAgICAKSW5k
ZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MjE1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoM0RfQ0FOVkFTKQorCisjaW5jbHVkZSAiV2Vi
R0xHZXRJbmZvLmgiCisjaW5jbHVkZSAiV2ViR0xCdWZmZXIuaCIKKyNpbmNsdWRlICJXZWJHTEZs
b2F0QXJyYXkuaCIKKyNpbmNsdWRlICJXZWJHTEZyYW1lYnVmZmVyLmgiCisjaW5jbHVkZSAiV2Vi
R0xJbnRBcnJheS5oIgorI2luY2x1ZGUgIldlYkdMUHJvZ3JhbS5oIgorI2luY2x1ZGUgIldlYkdM
UmVuZGVyYnVmZmVyLmgiCisjaW5jbHVkZSAiV2ViR0xUZXh0dXJlLmgiCisjaW5jbHVkZSAiV2Vi
R0xVbnNpZ25lZEJ5dGVBcnJheS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dlYkdMR2V0
SW5mbzo6V2ViR0xHZXRJbmZvKGJvb2wgdmFsdWUpCisgICAgOiBtX3R5cGUoa1R5cGVCb29sKQor
ICAgICwgbV9ib29sKHZhbHVlKQoreworfQorCitXZWJHTEdldEluZm86OldlYkdMR2V0SW5mbyhm
bG9hdCB2YWx1ZSkKKyAgICA6IG1fdHlwZShrVHlwZUZsb2F0KQorICAgICwgbV9mbG9hdCh2YWx1
ZSkKK3sKK30KKworV2ViR0xHZXRJbmZvOjpXZWJHTEdldEluZm8obG9uZyB2YWx1ZSkKKyAgICA6
IG1fdHlwZShrVHlwZUxvbmcpCisgICAgLCBtX2xvbmcodmFsdWUpCit7Cit9CisKK1dlYkdMR2V0
SW5mbzo6V2ViR0xHZXRJbmZvKCkKKyAgICA6IG1fdHlwZShrVHlwZU51bGwpCit7Cit9CisKK1dl
YkdMR2V0SW5mbzo6V2ViR0xHZXRJbmZvKGNvbnN0IFN0cmluZyYgdmFsdWUpCisgICAgOiBtX3R5
cGUoa1R5cGVTdHJpbmcpCisgICAgLCBtX3N0cmluZyh2YWx1ZSkKK3sKK30KKworV2ViR0xHZXRJ
bmZvOjpXZWJHTEdldEluZm8odW5zaWduZWQgbG9uZyB2YWx1ZSkKKyAgICA6IG1fdHlwZShrVHlw
ZVVuc2lnbmVkTG9uZykKKyAgICAsIG1fdW5zaWduZWRMb25nKHZhbHVlKQoreworfQorCitXZWJH
TEdldEluZm86OldlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMQnVmZmVyPiB2YWx1ZSkKKyAg
ICA6IG1fdHlwZShrVHlwZVdlYkdMQnVmZmVyKQorICAgICwgbV93ZWJnbEJ1ZmZlcih2YWx1ZSkK
K3sKK30KKworV2ViR0xHZXRJbmZvOjpXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTEZsb2F0
QXJyYXk+IHZhbHVlKQorICAgIDogbV90eXBlKGtUeXBlV2ViR0xGbG9hdEFycmF5KQorICAgICwg
bV93ZWJnbEZsb2F0QXJyYXkodmFsdWUpCit7Cit9CisKK1dlYkdMR2V0SW5mbzo6V2ViR0xHZXRJ
bmZvKFBhc3NSZWZQdHI8V2ViR0xGcmFtZWJ1ZmZlcj4gdmFsdWUpCisgICAgOiBtX3R5cGUoa1R5
cGVXZWJHTEZyYW1lYnVmZmVyKQorICAgICwgbV93ZWJnbEZyYW1lYnVmZmVyKHZhbHVlKQorewor
fQorCitXZWJHTEdldEluZm86OldlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+
IHZhbHVlKQorICAgIDogbV90eXBlKGtUeXBlV2ViR0xJbnRBcnJheSkKKyAgICAsIG1fd2ViZ2xJ
bnRBcnJheSh2YWx1ZSkKK3sKK30KKworV2ViR0xHZXRJbmZvOjpXZWJHTEdldEluZm8oUGFzc1Jl
ZlB0cjxXZWJHTFByb2dyYW0+IHZhbHVlKQorICAgIDogbV90eXBlKGtUeXBlV2ViR0xQcm9ncmFt
KQorICAgICwgbV93ZWJnbFByb2dyYW0odmFsdWUpCit7Cit9CisKK1dlYkdMR2V0SW5mbzo6V2Vi
R0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xSZW5kZXJidWZmZXI+IHZhbHVlKQorICAgIDogbV90
eXBlKGtUeXBlV2ViR0xSZW5kZXJidWZmZXIpCisgICAgLCBtX3dlYmdsUmVuZGVyYnVmZmVyKHZh
bHVlKQoreworfQorCitXZWJHTEdldEluZm86OldlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdM
VGV4dHVyZT4gdmFsdWUpCisgICAgOiBtX3R5cGUoa1R5cGVXZWJHTFRleHR1cmUpCisgICAgLCBt
X3dlYmdsVGV4dHVyZSh2YWx1ZSkKK3sKK30KKworV2ViR0xHZXRJbmZvOjpXZWJHTEdldEluZm8o
UGFzc1JlZlB0cjxXZWJHTFVuc2lnbmVkQnl0ZUFycmF5PiB2YWx1ZSkKKyAgICA6IG1fdHlwZShr
VHlwZVdlYkdMVW5zaWduZWRCeXRlQXJyYXkpCisgICAgLCBtX3dlYmdsVW5zaWduZWRCeXRlQXJy
YXkodmFsdWUpCit7Cit9CisKK1dlYkdMR2V0SW5mbzo6fldlYkdMR2V0SW5mbygpCit7Cit9CisK
K1dlYkdMR2V0SW5mbzo6VHlwZSBXZWJHTEdldEluZm86OmdldFR5cGUoKSBjb25zdAoreworICAg
IHJldHVybiBtX3R5cGU7Cit9CisKK2Jvb2wgV2ViR0xHZXRJbmZvOjpnZXRCb29sKCkgY29uc3QK
K3sKKyAgICBBU1NFUlQoZ2V0VHlwZSgpID09IGtUeXBlQm9vbCk7CisgICAgcmV0dXJuIG1fYm9v
bDsKK30KKworZmxvYXQgV2ViR0xHZXRJbmZvOjpnZXRGbG9hdCgpIGNvbnN0Cit7CisgICAgQVNT
RVJUKGdldFR5cGUoKSA9PSBrVHlwZUZsb2F0KTsKKyAgICByZXR1cm4gbV9mbG9hdDsKK30KKwor
bG9uZyBXZWJHTEdldEluZm86OmdldExvbmcoKSBjb25zdAoreworICAgIEFTU0VSVChnZXRUeXBl
KCkgPT0ga1R5cGVMb25nKTsKKyAgICByZXR1cm4gbV9sb25nOworfQorCitjb25zdCBTdHJpbmcm
IFdlYkdMR2V0SW5mbzo6Z2V0U3RyaW5nKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZ2V0VHlwZSgp
ID09IGtUeXBlU3RyaW5nKTsKKyAgICByZXR1cm4gbV9zdHJpbmc7Cit9CisKK3Vuc2lnbmVkIGxv
bmcgV2ViR0xHZXRJbmZvOjpnZXRVbnNpZ25lZExvbmcoKSBjb25zdAoreworICAgIEFTU0VSVChn
ZXRUeXBlKCkgPT0ga1R5cGVVbnNpZ25lZExvbmcpOworICAgIHJldHVybiBtX3Vuc2lnbmVkTG9u
ZzsKK30KKworUGFzc1JlZlB0cjxXZWJHTEJ1ZmZlcj4gV2ViR0xHZXRJbmZvOjpnZXRXZWJHTEJ1
ZmZlcigpIGNvbnN0Cit7CisgICAgQVNTRVJUKGdldFR5cGUoKSA9PSBrVHlwZVdlYkdMQnVmZmVy
KTsKKyAgICByZXR1cm4gbV93ZWJnbEJ1ZmZlcjsKK30KKworUGFzc1JlZlB0cjxXZWJHTEZsb2F0
QXJyYXk+IFdlYkdMR2V0SW5mbzo6Z2V0V2ViR0xGbG9hdEFycmF5KCkgY29uc3QKK3sKKyAgICBB
U1NFUlQoZ2V0VHlwZSgpID09IGtUeXBlV2ViR0xGbG9hdEFycmF5KTsKKyAgICByZXR1cm4gbV93
ZWJnbEZsb2F0QXJyYXk7Cit9CisKK1Bhc3NSZWZQdHI8V2ViR0xGcmFtZWJ1ZmZlcj4gV2ViR0xH
ZXRJbmZvOjpnZXRXZWJHTEZyYW1lYnVmZmVyKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZ2V0VHlw
ZSgpID09IGtUeXBlV2ViR0xGcmFtZWJ1ZmZlcik7CisgICAgcmV0dXJuIG1fd2ViZ2xGcmFtZWJ1
ZmZlcjsKK30KKworUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBXZWJHTEdldEluZm86OmdldFdl
YkdMSW50QXJyYXkoKSBjb25zdAoreworICAgIEFTU0VSVChnZXRUeXBlKCkgPT0ga1R5cGVXZWJH
TEludEFycmF5KTsKKyAgICByZXR1cm4gbV93ZWJnbEludEFycmF5OworfQorCitQYXNzUmVmUHRy
PFdlYkdMUHJvZ3JhbT4gV2ViR0xHZXRJbmZvOjpnZXRXZWJHTFByb2dyYW0oKSBjb25zdAorewor
ICAgIEFTU0VSVChnZXRUeXBlKCkgPT0ga1R5cGVXZWJHTFByb2dyYW0pOworICAgIHJldHVybiBt
X3dlYmdsUHJvZ3JhbTsKK30KKworUGFzc1JlZlB0cjxXZWJHTFJlbmRlcmJ1ZmZlcj4gV2ViR0xH
ZXRJbmZvOjpnZXRXZWJHTFJlbmRlcmJ1ZmZlcigpIGNvbnN0Cit7CisgICAgQVNTRVJUKGdldFR5
cGUoKSA9PSBrVHlwZVdlYkdMUmVuZGVyYnVmZmVyKTsKKyAgICByZXR1cm4gbV93ZWJnbFJlbmRl
cmJ1ZmZlcjsKK30KKworUGFzc1JlZlB0cjxXZWJHTFRleHR1cmU+IFdlYkdMR2V0SW5mbzo6Z2V0
V2ViR0xUZXh0dXJlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZ2V0VHlwZSgpID09IGtUeXBlV2Vi
R0xUZXh0dXJlKTsKKyAgICByZXR1cm4gbV93ZWJnbFRleHR1cmU7Cit9CisKK1Bhc3NSZWZQdHI8
V2ViR0xVbnNpZ25lZEJ5dGVBcnJheT4gV2ViR0xHZXRJbmZvOjpnZXRXZWJHTFVuc2lnbmVkQnl0
ZUFycmF5KCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZ2V0VHlwZSgpID09IGtUeXBlV2ViR0xVbnNp
Z25lZEJ5dGVBcnJheSk7CisgICAgcmV0dXJuIG1fd2ViZ2xVbnNpZ25lZEJ5dGVBcnJheTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKDNEX0NBTlZBUykK
SW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEdldEluZm8uaAkocmV2aXNpb24gMCkKKysrIFdlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFdlYkdMR2V0SW5mb19oCisjZGVmaW5lIFdlYkdMR2V0SW5mb19oCisKKyNpbmNsdWRlICJ3dGYv
UGFzc1JlZlB0ci5oIgorI2luY2x1ZGUgInd0Zi9SZWZQdHIuaCIKKyNpbmNsdWRlICJQbGF0Zm9y
bVN0cmluZy5oIgorCisjaW5jbHVkZSAiV2ViR0xCdWZmZXIuaCIKKyNpbmNsdWRlICJXZWJHTEZs
b2F0QXJyYXkuaCIKKyNpbmNsdWRlICJXZWJHTEZyYW1lYnVmZmVyLmgiCisjaW5jbHVkZSAiV2Vi
R0xJbnRBcnJheS5oIgorLy8gRklYTUU6IGltcGxlbWVudCBXZWJHTE9iamVjdEFycmF5CisvLyNp
bmNsdWRlICJXZWJHTE9iamVjdEFycmF5LmgiCisjaW5jbHVkZSAiV2ViR0xQcm9ncmFtLmgiCisj
aW5jbHVkZSAiV2ViR0xSZW5kZXJidWZmZXIuaCIKKyNpbmNsdWRlICJXZWJHTFRleHR1cmUuaCIK
KyNpbmNsdWRlICJXZWJHTFVuc2lnbmVkQnl0ZUFycmF5LmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworLy8gQSB0YWdnZWQgdW5pb24gcmVwcmVzZW50aW5nIHRoZSByZXN1bHQgb2YgZ2V0IHF1
ZXJpZXMgbGlrZQorLy8gZ2V0UGFyYW1ldGVyIChlbmNvbXBhc3NpbmcgZ2V0Qm9vbGVhbnYsIGdl
dEludGVnZXJ2LCBnZXRGbG9hdHYpIGFuZAorLy8gc2ltaWxhciB2YXJpYW50cy4gRm9yIHJlZmVy
ZW5jZSBjb3VudGVkIHR5cGVzLCBpbmNyZW1lbnRzIGFuZAorLy8gZGVjcmVtZW50cyB0aGUgcmVm
ZXJlbmNlIGNvdW50IG9mIHRoZSB0YXJnZXQgb2JqZWN0LgorCitjbGFzcyBXZWJHTEdldEluZm8g
eworcHVibGljOgorICAgIGVudW0gVHlwZSB7CisgICAgICAgIGtUeXBlQm9vbCwKKyAgICAgICAg
a1R5cGVGbG9hdCwKKyAgICAgICAga1R5cGVMb25nLAorICAgICAgICBrVHlwZU51bGwsCisgICAg
ICAgIGtUeXBlU3RyaW5nLAorICAgICAgICBrVHlwZVVuc2lnbmVkTG9uZywKKyAgICAgICAga1R5
cGVXZWJHTEJ1ZmZlciwKKyAgICAgICAga1R5cGVXZWJHTEZsb2F0QXJyYXksCisgICAgICAgIGtU
eXBlV2ViR0xGcmFtZWJ1ZmZlciwKKyAgICAgICAga1R5cGVXZWJHTEludEFycmF5LAorICAgICAg
ICBrVHlwZVdlYkdMT2JqZWN0QXJyYXksCisgICAgICAgIGtUeXBlV2ViR0xQcm9ncmFtLAorICAg
ICAgICBrVHlwZVdlYkdMUmVuZGVyYnVmZmVyLAorICAgICAgICBrVHlwZVdlYkdMVGV4dHVyZSwK
KyAgICAgICAga1R5cGVXZWJHTFVuc2lnbmVkQnl0ZUFycmF5CisgICAgfTsKKworICAgIFdlYkdM
R2V0SW5mbyhib29sIHZhbHVlKTsKKyAgICBXZWJHTEdldEluZm8oZmxvYXQgdmFsdWUpOworICAg
IFdlYkdMR2V0SW5mbyhsb25nIHZhbHVlKTsKKyAgICAvLyBSZXByZXNlbnRzIHRoZSBOVUxMIHZh
bHVlIGFuZCB0eXBlCisgICAgV2ViR0xHZXRJbmZvKCk7CisgICAgV2ViR0xHZXRJbmZvKGNvbnN0
IFN0cmluZyYgdmFsdWUpOworICAgIFdlYkdMR2V0SW5mbyh1bnNpZ25lZCBsb25nIHZhbHVlKTsK
KyAgICBXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTEJ1ZmZlcj4gdmFsdWUpOworICAgIFdl
YkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gdmFsdWUpOworICAgIFdlYkdM
R2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMRnJhbWVidWZmZXI+IHZhbHVlKTsKKyAgICBXZWJHTEdl
dEluZm8oUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiB2YWx1ZSk7CisgICAgLy8gRklYTUU6IGlt
cGxlbWVudCBXZWJHTE9iamVjdEFycmF5CisgICAgLy8gV2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8
V2ViR0xPYmplY3RBcnJheT4gdmFsdWUpOworICAgIFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdl
YkdMUHJvZ3JhbT4gdmFsdWUpOworICAgIFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMUmVu
ZGVyYnVmZmVyPiB2YWx1ZSk7CisgICAgV2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xUZXh0
dXJlPiB2YWx1ZSk7CisgICAgV2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xVbnNpZ25lZEJ5
dGVBcnJheT4gdmFsdWUpOworCisgICAgdmlydHVhbCB+V2ViR0xHZXRJbmZvKCk7CisKKyAgICBU
eXBlIGdldFR5cGUoKSBjb25zdDsKKworICAgIGJvb2wgZ2V0Qm9vbCgpIGNvbnN0OworICAgIGZs
b2F0IGdldEZsb2F0KCkgY29uc3Q7CisgICAgbG9uZyBnZXRMb25nKCkgY29uc3Q7CisgICAgY29u
c3QgU3RyaW5nJiBnZXRTdHJpbmcoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBsb25nIGdldFVuc2ln
bmVkTG9uZygpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8V2ViR0xCdWZmZXI+IGdldFdlYkdMQnVm
ZmVyKCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxXZWJHTEZsb2F0QXJyYXk+IGdldFdlYkdMRmxv
YXRBcnJheSgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8V2ViR0xGcmFtZWJ1ZmZlcj4gZ2V0V2Vi
R0xGcmFtZWJ1ZmZlcigpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gZ2V0
V2ViR0xJbnRBcnJheSgpIGNvbnN0OworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgV2ViR0xPYmpl
Y3RBcnJheQorICAgIC8vIFBhc3NSZWZQdHI8V2ViR0xPYmplY3RBcnJheT4gZ2V0V2ViR0xPYmpl
Y3RBcnJheSgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8V2ViR0xQcm9ncmFtPiBnZXRXZWJHTFBy
b2dyYW0oKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPiBnZXRXZWJH
TFJlbmRlcmJ1ZmZlcigpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8V2ViR0xUZXh0dXJlPiBnZXRX
ZWJHTFRleHR1cmUoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPFdlYkdMVW5zaWduZWRCeXRlQXJy
YXk+IGdldFdlYkdMVW5zaWduZWRCeXRlQXJyYXkoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBU
eXBlIG1fdHlwZTsKKyAgICBib29sIG1fYm9vbDsKKyAgICBmbG9hdCBtX2Zsb2F0OworICAgIGxv
bmcgbV9sb25nOworICAgIFN0cmluZyBtX3N0cmluZzsKKyAgICB1bnNpZ25lZCBsb25nIG1fdW5z
aWduZWRMb25nOworICAgIFJlZlB0cjxXZWJHTEJ1ZmZlcj4gbV93ZWJnbEJ1ZmZlcjsKKyAgICBS
ZWZQdHI8V2ViR0xGbG9hdEFycmF5PiBtX3dlYmdsRmxvYXRBcnJheTsKKyAgICBSZWZQdHI8V2Vi
R0xGcmFtZWJ1ZmZlcj4gbV93ZWJnbEZyYW1lYnVmZmVyOworICAgIFJlZlB0cjxXZWJHTEludEFy
cmF5PiBtX3dlYmdsSW50QXJyYXk7CisgICAgLy8gRklYTUU6IGltcGxlbWVudCBXZWJHTE9iamVj
dEFycmF5CisgICAgLy8gUmVmUHRyPFdlYkdMT2JqZWN0QXJyYXk+IG1fd2ViZ2xPYmplY3RBcnJh
eTsKKyAgICBSZWZQdHI8V2ViR0xQcm9ncmFtPiBtX3dlYmdsUHJvZ3JhbTsKKyAgICBSZWZQdHI8
V2ViR0xSZW5kZXJidWZmZXI+IG1fd2ViZ2xSZW5kZXJidWZmZXI7CisgICAgUmVmUHRyPFdlYkdM
VGV4dHVyZT4gbV93ZWJnbFRleHR1cmU7CisgICAgUmVmUHRyPFdlYkdMVW5zaWduZWRCeXRlQXJy
YXk+IG1fd2ViZ2xVbnNpZ25lZEJ5dGVBcnJheTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmICAvLyBXZWJHTEdldEluZm9faApJbmRleDogV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmJ1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmJ1ZmZlci5jcHAJKHJldmlzaW9uIDUxMzM1KQorKysgV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDEyICsz
NywyMyBAQCBQYXNzUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPiBXZWJHTFJlbmRlCiAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBXZWJHTFJlbmRlcmJ1ZmZlcihjdHgpKTsKIH0KIAorUGFzc1JlZlB0
cjxXZWJHTFJlbmRlcmJ1ZmZlcj4gV2ViR0xSZW5kZXJidWZmZXI6OmNyZWF0ZShXZWJHTFJlbmRl
cmluZ0NvbnRleHQqIGN0eCwgUGxhdGZvcm0zRE9iamVjdCBvYmopCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBXZWJHTFJlbmRlcmJ1ZmZlcihjdHgsIG9iaikpOworfQorCiBXZWJHTFJlbmRl
cmJ1ZmZlcjo6V2ViR0xSZW5kZXJidWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjdHgpCiAg
ICAgOiBDYW52YXNPYmplY3QoY3R4KQogewogICAgIHNldE9iamVjdChjb250ZXh0KCktPmdyYXBo
aWNzQ29udGV4dDNEKCktPmNyZWF0ZVJlbmRlcmJ1ZmZlcigpKTsKIH0KIAorV2ViR0xSZW5kZXJi
dWZmZXI6OldlYkdMUmVuZGVyYnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY3R4LCBQbGF0
Zm9ybTNET2JqZWN0IG9iaikKKyAgICA6IENhbnZhc09iamVjdChjdHgpCit7CisgICAgc2V0T2Jq
ZWN0KG9iaiwgZmFsc2UpOworfQorCiB2b2lkIFdlYkdMUmVuZGVyYnVmZmVyOjpfZGVsZXRlT2Jq
ZWN0KFBsYXRmb3JtM0RPYmplY3Qgb2JqZWN0KQogewogICAgIGNvbnRleHQoKS0+Z3JhcGhpY3ND
b250ZXh0M0QoKS0+ZGVsZXRlUmVuZGVyYnVmZmVyKG9iamVjdCk7CkluZGV4OiBXZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5oCShyZXZpc2lvbiA1MTMzNSkKKysrIFdlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzksOCAr
MzksMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAKICAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8V2ViR0xSZW5kZXJidWZmZXI+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHQq
KTsKICAgICAgICAgCisgICAgICAgIC8vIEZvciBxdWVyeWluZyBwcmV2aW91c2x5IGNyZWF0ZWQg
b2JqZWN0cyB2aWEgZS5nLiBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIKKyAgICAg
ICAgLy8gRklYTUU6IHNob3VsZCBjb25zaWRlciBjYW5vbmljYWxpemluZyB0aGVzZSBvYmplY3Rz
CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPiBjcmVhdGUoV2Vi
R0xSZW5kZXJpbmdDb250ZXh0KiwgUGxhdGZvcm0zRE9iamVjdCByZW5kZXJidWZmZXIpOworCiAg
ICAgcHJvdGVjdGVkOgogICAgICAgICBXZWJHTFJlbmRlcmJ1ZmZlcihXZWJHTFJlbmRlcmluZ0Nv
bnRleHQqKTsKKyAgICAgICAgV2ViR0xSZW5kZXJidWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0
KiwgUGxhdGZvcm0zRE9iamVjdCk7CiAgICAgICAgIAogICAgICAgICB2aXJ0dWFsIHZvaWQgX2Rl
bGV0ZU9iamVjdChQbGF0Zm9ybTNET2JqZWN0KTsKICAgICB9OwpJbmRleDogV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gNTEzMzUpCisr
KyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM5LDExICszOSwzMSBAQAogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgi
CisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKICNp
bmNsdWRlICJSZW5kZXJMYXllci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFdl
YkdMU3RhdGVSZXN0b3JlciB7CitwdWJsaWM6CisgICAgV2ViR0xTdGF0ZVJlc3RvcmVyKFdlYkdM
UmVuZGVyaW5nQ29udGV4dCogY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBj
aGFuZ2VkKQorICAgICAgICA6IG1fY29udGV4dChjb250ZXh0KQorICAgICAgICAsIG1fY2hhbmdl
ZChjaGFuZ2VkKQorICAgIHsKKyAgICB9CisKKyAgICB+V2ViR0xTdGF0ZVJlc3RvcmVyKCkKKyAg
ICB7CisgICAgICAgIG1fY29udGV4dC0+Y2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKG1fY2hhbmdl
ZCk7CisgICAgfQorCitwcml2YXRlOgorICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dCogbV9jb250
ZXh0OworICAgIGJvb2wgbV9jaGFuZ2VkOworfTsKKwogUGFzc093blB0cjxXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlKEhUTUxDYW52YXNFbGVtZW50
KiBjYW52YXMpCiB7CiAgICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0KEdyYXBo
aWNzQ29udGV4dDNEOjpjcmVhdGUoKSk7CkBAIC01OCw5ICs3OCwxMiBAQCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OldlYkdMUmVuZGVyaW5nQ29uCiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKICAg
ICAsIG1fbmVlZHNVcGRhdGUodHJ1ZSkKICAgICAsIG1fbWFya2VkQ2FudmFzRGlydHkoZmFsc2Up
CisgICAgLCBtX2FjdGl2ZVRleHR1cmVVbml0KDApCiB7CiAgICAgQVNTRVJUKG1fY29udGV4dCk7
Ci0gICAgbV9tYXhWZXJ0ZXhBdHRyaWJzID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VyKEdyYXBoaWNz
Q29udGV4dDNEOjpNQVhfVkVSVEVYX0FUVFJJQlMpOworICAgIGludCBudW1WZXJ0ZXhBdHRyaWJz
ID0gMDsKKyAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dDNEOjpNQVhf
VkVSVEVYX0FUVFJJQlMsICZudW1WZXJ0ZXhBdHRyaWJzKTsKKyAgICBtX21heFZlcnRleEF0dHJp
YnMgPSBudW1WZXJ0ZXhBdHRyaWJzOwogICAgIG1fY29udGV4dC0+cmVzaGFwZShjYW52YXMoKS0+
d2lkdGgoKSwgY2FudmFzKCktPmhlaWdodCgpKTsKIH0KIApAQCAtMTI0LDggKzE0NywxNCBAQCBp
bnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpzaXplSW5CeXRlcyhpCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmFjdGl2ZVRleHR1cmUodW5zaWdu
ZWQgbG9uZyB0ZXh0dXJlKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmFjdGl2ZVRleHR1
cmUodW5zaWduZWQgbG9uZyB0ZXh0dXJlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBpZiAo
KHRleHR1cmUgLSBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRTApID4gc2l6ZW9mKG1fdGV4dHVy
ZVVuaXRzKSAvIHNpemVvZihUZXh0dXJlVW5pdFN0YXRlKSkgeworICAgICAgICAvLyBGSVhNRTog
cmFpc2UgR0xfSU5WQUxJRF9FTlVNIGVycm9yCisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX2FjdGl2ZVRleHR1cmVVbml0ID0gdGV4dHVyZSAt
IEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMDsKICAgICBtX2NvbnRleHQtPmFjdGl2ZVRleHR1
cmUodGV4dHVyZSk7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KQEAg
LTE2Miw2ICsxOTEsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmluZEJ1ZmZlcih1
CiAgICAgZWxzZSBpZiAodGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpFTEVNRU5UX0FSUkFZ
X0JVRkZFUikKICAgICAgICAgbV9ib3VuZEVsZW1lbnRBcnJheUJ1ZmZlciA9IGJ1ZmZlcjsKICAg
ICBlbHNlIHsKKyAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfRU5VTSBlcnJvcgog
ICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNzcs
NiArMjA3LDEyIEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpiaW5kRnJhbWVidWYKICAg
ICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAg
ICBpZiAodGFyZ2V0ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUikgeworICAgICAg
ICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9FTlVNIGVycm9yCisgICAgICAgIGVjID0gU1lO
VEFYX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX2ZyYW1lYnVmZmVyQmluZGlu
ZyA9IGJ1ZmZlcjsKICAgICBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcih0YXJnZXQsIGJ1ZmZl
cik7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KQEAgLTE4Nyw2ICsy
MjMsMTIgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJpbmRSZW5kZXJidQogICAgICAg
ICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGlm
ICh0YXJnZXQgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUikgeworICAgICAgICAv
LyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9FTlVNIGVycm9yCisgICAgICAgIGVjID0gU1lOVEFY
X0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX3JlbmRlcmJ1ZmZlckJpbmRpbmcg
PSByZW5kZXJCdWZmZXI7CiAgICAgbV9jb250ZXh0LT5iaW5kUmVuZGVyYnVmZmVyKHRhcmdldCwg
cmVuZGVyQnVmZmVyKTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQpA
QCAtMTk4LDYgKzI0MCwxNSBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmluZFRleHR1
cmUoCiAgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CisgICAgaWYgKHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCkKKyAg
ICAgICAgbV90ZXh0dXJlVW5pdHNbbV9hY3RpdmVUZXh0dXJlVW5pdF0ubV90ZXh0dXJlMkRCaW5k
aW5nID0gdGV4dHVyZTsKKyAgICBlbHNlIGlmICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfQ1VCRV9NQVApCisgICAgICAgIG1fdGV4dHVyZVVuaXRzW21fYWN0aXZlVGV4dHVy
ZVVuaXRdLm1fdGV4dHVyZUN1YmVNYXBCaW5kaW5nID0gdGV4dHVyZTsKKyAgICBlbHNlIHsKKyAg
ICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfRU5VTSBlcnJvcgorICAgICAgICBlYyA9
IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgbV9jb250ZXh0LT5iaW5k
VGV4dHVyZSh0YXJnZXQsIHRleHR1cmUpOwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChm
YWxzZSk7CiB9CkBAIC02OTEsMzIgKzc0MiwyNyBAQCBpbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpnZXRBdHRyaWJMb2NhCiAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0QXR0cmliTG9jYXRpb24o
cHJvZ3JhbSwgbmFtZSk7CiB9CiAKLWJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRCb29s
ZWFuKHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgYm9vbCByZXN1bHQgPSBtX2NvbnRleHQt
PmdldEJvb2xlYW4ocG5hbWUpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotUGFzc1JlZlB0cjxXZWJHTFVuc2lnbmVkQnl0ZUFy
cmF5PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEJvb2xlYW52KHVuc2lnbmVkIGxvbmcgcG5h
bWUpCitXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRCdWZmZXJQYXJhbWV0
ZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogewotICAgIFJlZlB0cjxXZWJHTFVuc2lnbmVkQnl0ZUFycmF5PiBhcnJheSA9IG1f
Y29udGV4dC0+Z2V0Qm9vbGVhbnYocG5hbWUpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2Fs
bChmYWxzZSk7Ci0gICAgcmV0dXJuIGFycmF5OwotfQorICAgIGlmICh0YXJnZXQgIT0gR3JhcGhp
Y3NDb250ZXh0M0Q6OkFSUkFZX0JVRkZFUiAmJiB0YXJnZXQgIT0gR3JhcGhpY3NDb250ZXh0M0Q6
OkVMRU1FTlRfQVJSQVlfQlVGRkVSKSB7CisgICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZB
TElEX0VOVU0gZXJyb3IKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm4g
V2ViR0xHZXRJbmZvKCk7CisgICAgfQogCi1pbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRC
dWZmZXJQYXJhbWV0ZXJpKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1l
KQotewotICAgIGludCByZXN1bHQgPSBtX2NvbnRleHQtPmdldEJ1ZmZlclBhcmFtZXRlcmkodGFy
Z2V0LCBwbmFtZSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQorICAgIGlmIChwbmFtZSAhPSBHcmFwaGljc0NvbnRleHQzRDo6QlVG
RkVSX1NJWkUgJiYgcG5hbWUgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkJVRkZFUl9VU0FHRSkgewor
ICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9FTlVNIGVycm9yCisgICAgICAgIGVj
ID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOworICAgIH0KIAot
UGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZl
clBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKQot
ewotICAgIFJlZlB0cjxXZWJHTEludEFycmF5PiBhcnJheSA9IG1fY29udGV4dC0+Z2V0QnVmZmVy
UGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxs
KGZhbHNlKTsKLSAgICByZXR1cm4gYXJyYXk7CisgICAgV2ViR0xTdGF0ZVJlc3RvcmVyKHRoaXMs
IGZhbHNlKTsKKyAgICBpbnQgdmFsdWU7CisgICAgbV9jb250ZXh0LT5nZXRCdWZmZXJQYXJhbWV0
ZXJpdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUpOworICAgIGlmIChwbmFtZSA9PSBHcmFwaGljc0Nv
bnRleHQzRDo6QlVGRkVSX1NJWkUpCisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oc3RhdGlj
X2Nhc3Q8bG9uZz4odmFsdWUpKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBXZWJHTEdldElu
Zm8oc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4odmFsdWUpKTsKIH0KIAogdW5zaWduZWQgbG9u
ZyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEVycm9yKCkKQEAgLTcyNCwxMTYgKzc3MCwzMjcg
QEAgdW5zaWduZWQgbG9uZyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldAogICAgIHJldHVybiBt
X2NvbnRleHQtPmdldEVycm9yKCk7CiB9CiAKLWZsb2F0IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
Z2V0RmxvYXQodW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICBmbG9hdCByZXN1bHQgPSBtX2Nv
bnRleHQtPmdldEZsb2F0KHBuYW1lKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFs
c2UpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVBhc3NSZWZQdHI8V2ViR0xGbG9hdEFycmF5
PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEZsb2F0dih1bnNpZ25lZCBsb25nIHBuYW1lKQor
V2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2ht
ZW50UGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1l
bnQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIFJlZlB0
cjxXZWJHTEZsb2F0QXJyYXk+IGFycmF5ID0gbV9jb250ZXh0LT5nZXRGbG9hdHYocG5hbWUpOwot
ICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci0gICAgcmV0dXJuIGFycmF5Owot
fQotCi1pbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQ
YXJhbWV0ZXJpKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQs
IHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgaW50IHJlc3VsdCA9IG1fY29udGV4dC0+Z2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaSh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1l
KTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLVBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdl
dCwgdW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCB1bnNpZ25lZCBsb25nIHBuYW1lKQotewotICAg
IFJlZlB0cjxXZWJHTEludEFycmF5PiBhcnJheSA9IG1fY29udGV4dC0+Z2V0RnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyaXYodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSk7Ci0gICAgY2xl
YW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKLSAgICByZXR1cm4gYXJyYXk7Ci19CisgICAg
aWYgKHRhcmdldCAhPSBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIKKyAgICAgICAgfHwg
KGF0dGFjaG1lbnQgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwCisgICAg
ICAgICAgICAmJiBhdHRhY2htZW50ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9BVFRBQ0hN
RU5UCisgICAgICAgICAgICAmJiBhdHRhY2htZW50ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpTVEVO
Q0lMX0FUVEFDSE1FTlQpCisgICAgICAgIHx8IChwbmFtZSAhPSBHcmFwaGljc0NvbnRleHQzRDo6
RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRQorICAgICAgICAgICAgJiYgcG5hbWUg
IT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUUK
KyAgICAgICAgICAgICYmIHBuYW1lICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9B
VFRBQ0hNRU5UX1RFWFRVUkVfTEVWRUwKKyAgICAgICAgICAgICYmIHBuYW1lICE9IEdyYXBoaWNz
Q29udGV4dDNEOjpGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfQ1VCRV9NQVBfRkFDRSkp
IHsKKyAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfRU5VTSBlcnJvcgorICAgICAg
ICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKKyAgICB9
CiAKLWludCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEludGVnZXIodW5zaWduZWQgbG9uZyBw
bmFtZSkKLXsKLSAgICBmbG9hdCByZXN1bHQgPSBtX2NvbnRleHQtPmdldEludGVnZXIocG5hbWUp
OwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICBpZiAocG5hbWUgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0FUVEFD
SE1FTlRfT0JKRUNUX05BTUUpIHsKKyAgICAgICAgV2ViR0xTdGF0ZVJlc3RvcmVyKHRoaXMsIGZh
bHNlKTsKKyAgICAgICAgaW50IHZhbHVlOworICAgICAgICBtX2NvbnRleHQtPmdldEZyYW1lYnVm
ZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsICZ2YWx1
ZSk7CisgICAgICAgIGlmIChwbmFtZSA9PSBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVJf
QVRUQUNITUVOVF9PQkpFQ1RfVFlQRSkKKyAgICAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8o
c3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4odmFsdWUpKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNfY2FzdDxsb25nPih2YWx1ZSkpOworICAg
IH0gZWxzZSB7CisgICAgICAgIFdlYkdMU3RhdGVSZXN0b3Jlcih0aGlzLCBmYWxzZSk7CisgICAg
ICAgIGludCB0eXBlID0gMDsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0dGFj
aG1lbnRQYXJhbWV0ZXJpdih0YXJnZXQsIGF0dGFjaG1lbnQsIEdyYXBoaWNzQ29udGV4dDNEOjpG
UkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFLCAmdHlwZSk7CisgICAgICAgIGludCB2
YWx1ZSA9IDA7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFy
YW1ldGVyaXYodGFyZ2V0LCBhdHRhY2htZW50LCBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZG
RVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRSwgJnZhbHVlKTsKKyAgICAgICAgLy8gRklYTUU6IHNo
b3VsZCBjb25zaWRlciBjYW5vbmljYWxpemluZyB0aGVzZSBvYmplY3RzCisgICAgICAgIHN3aXRj
aCAodHlwZSkgeworICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVI6
IHsKKyAgICAgICAgICAgIFJlZlB0cjxXZWJHTFJlbmRlcmJ1ZmZlcj4gdG1wID0gV2ViR0xSZW5k
ZXJidWZmZXI6OmNyZWF0ZSh0aGlzLCB2YWx1ZSk7CisgICAgICAgICAgICBhZGRPYmplY3QodG1w
LmdldCgpKTsKKyAgICAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJH
TFJlbmRlcmJ1ZmZlcj4odG1wKSk7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRTogeworICAgICAgICAgICAgUmVmUHRyPFdlYkdMVGV4dHVyZT4gdG1w
ID0gV2ViR0xUZXh0dXJlOjpjcmVhdGUodGhpcywgdmFsdWUpOworICAgICAgICAgICAgYWRkT2Jq
ZWN0KHRtcC5nZXQoKSk7CisgICAgICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKFBhc3NSZWZQ
dHI8V2ViR0xUZXh0dXJlPih0bXApKTsKKyAgICAgICAgfQorICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgLy8gRklYTUU6IHJhaXNlIGV4Y2VwdGlvbj8KKyAgICAgICAgICAgIHJldHVybiBX
ZWJHTEdldEluZm8oKTsKKyAgICAgICAgfQorICAgIH0KIH0KIAotUGFzc1JlZlB0cjxXZWJHTElu
dEFycmF5PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEludGVnZXJ2KHVuc2lnbmVkIGxvbmcg
cG5hbWUpCitXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQYXJhbWV0ZXIo
dW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgUmVmUHRyPFdl
YkdMSW50QXJyYXk+IGFycmF5ID0gbV9jb250ZXh0LT5nZXRJbnRlZ2VydihwbmFtZSk7Ci0gICAg
Y2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKLSAgICByZXR1cm4gYXJyYXk7CisgICAg
V2ViR0xTdGF0ZVJlc3RvcmVyKHRoaXMsIGZhbHNlKTsKKyAgICBzd2l0Y2ggKHBuYW1lKSB7Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6QUNUSVZFX1RFWFRVUkU6CisgICAgICAgIHJldHVy
biBnZXRVbnNpZ25lZExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0M0Q6OkFMSUFTRURfTElORV9XSURUSF9SQU5HRToKKyAgICAgICAgcmV0dXJuIGdldFdlYkdM
RmxvYXRBcnJheVBhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
QUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFOgorICAgICAgICByZXR1cm4gZ2V0V2ViR0xGbG9hdEFy
cmF5UGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpBTFBIQV9C
SVRTOgorICAgICAgICByZXR1cm4gZ2V0TG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6QVJSQVlfQlVGRkVSX0JJTkRJTkc6CisgICAgICAgIHJldHVybiBX
ZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTEJ1ZmZlcj4obV9ib3VuZEFycmF5QnVmZmVyKSk7
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6QkxFTkQ6CisgICAgICAgIHJldHVybiBnZXRC
b29sZWFuUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpCTEVO
RF9DT0xPUjoKKyAgICAgICAgcmV0dXJuIGdldFdlYkdMRmxvYXRBcnJheVBhcmFtZXRlcihwbmFt
ZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6QkxFTkRfRFNUX0FMUEhBOgorICAgICAg
ICByZXR1cm4gZ2V0VW5zaWduZWRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpCTEVORF9EU1RfUkdCOgorICAgICAgICByZXR1cm4gZ2V0VW5zaWduZWRM
b25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpCTEVORF9F
UVVBVElPTl9BTFBIQToKKyAgICAgICAgcmV0dXJuIGdldFVuc2lnbmVkTG9uZ1BhcmFtZXRlcihw
bmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6QkxFTkRfRVFVQVRJT05fUkdCOgor
ICAgICAgICByZXR1cm4gZ2V0VW5zaWduZWRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dDNEOjpCTEVORF9TUkNfQUxQSEE6CisgICAgICAgIHJldHVybiBnZXRV
bnNpZ25lZExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6
OkJMRU5EX1NSQ19SR0I6CisgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZExvbmdQYXJhbWV0ZXIo
cG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkJMVUVfQklUUzoKKyAgICAgICAg
cmV0dXJuIGdldExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
M0Q6OkNPTE9SX0NMRUFSX1ZBTFVFOgorICAgICAgICByZXR1cm4gZ2V0V2ViR0xGbG9hdEFycmF5
UGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9XUklU
RU1BU0s6CisgICAgICAgIHJldHVybiBnZXRXZWJHTFVuc2lnbmVkQnl0ZUFycmF5UGFyYW1ldGVy
KHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpDT01QUkVTU0VEX1RFWFRVUkVf
Rk9STUFUUzoKKyAgICAgICAgLy8gRGVmaW5lZCBhcyBudWxsIGluIHRoZSBzcGVjCisgICAgICAg
IHJldHVybiBXZWJHTEdldEluZm8oKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpDVUxM
X0ZBQ0U6CisgICAgICAgIHJldHVybiBnZXRCb29sZWFuUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpDVUxMX0ZBQ0VfTU9ERToKKyAgICAgICAgcmV0dXJuIGdl
dFVuc2lnbmVkTG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6Q1VSUkVOVF9QUk9HUkFNOgorICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKFBhc3NSZWZQ
dHI8V2ViR0xQcm9ncmFtPihtX2N1cnJlbnRQcm9ncmFtKSk7CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHQzRDo6REVQVEhfQklUUzoKKyAgICAgICAgcmV0dXJuIGdldExvbmdQYXJhbWV0ZXIocG5h
bWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0NMRUFSX1ZBTFVFOgorICAg
ICAgICByZXR1cm4gZ2V0RmxvYXRQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0M0Q6OkRFUFRIX0ZVTkM6CisgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZExvbmdQYXJh
bWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX1JBTkdFOgor
ICAgICAgICByZXR1cm4gZ2V0V2ViR0xGbG9hdEFycmF5UGFyYW1ldGVyKHBuYW1lKTsKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9URVNUOgorICAgICAgICByZXR1cm4gZ2V0Qm9v
bGVhblBhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhf
V1JJVEVNQVNLOgorICAgICAgICByZXR1cm4gZ2V0Qm9vbGVhblBhcmFtZXRlcihwbmFtZSk7Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RElUSEVSOgorICAgICAgICByZXR1cm4gZ2V0Qm9v
bGVhblBhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RUxFTUVO
VF9BUlJBWV9CVUZGRVJfQklORElORzoKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhQYXNz
UmVmUHRyPFdlYkdMQnVmZmVyPihtX2JvdW5kRWxlbWVudEFycmF5QnVmZmVyKSk7CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVJfQklORElORzoKKyAgICAgICAgcmV0dXJu
IFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMRnJhbWVidWZmZXI+KG1fZnJhbWVidWZmZXJC
aW5kaW5nKSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RlJPTlRfRkFDRToKKyAgICAg
ICAgcmV0dXJuIGdldFVuc2lnbmVkTG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6R0VORVJBVEVfTUlQTUFQX0hJTlQ6CisgICAgICAgIHJldHVybiBnZXRV
bnNpZ25lZExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6
OkdSRUVOX0JJVFM6CisgICAgICAgIHJldHVybiBnZXRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FX1dJRFRIOgorICAgICAgICByZXR1cm4gZ2V0
RmxvYXRQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9D
T01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTOgorICAgICAgICByZXR1cm4gZ2V0TG9uZ1BhcmFt
ZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6TUFYX0NVQkVfTUFQX1RF
WFRVUkVfU0laRToKKyAgICAgICAgcmV0dXJuIGdldExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlM6Cisg
ICAgICAgIHJldHVybiBnZXRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dDNEOjpNQVhfUkVOREVSQlVGRkVSX1NJWkU6CisgICAgICAgIHJldHVybiBnZXRMb25n
UGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpNQVhfVEVYVFVS
RV9JTUFHRV9VTklUUzoKKyAgICAgICAgcmV0dXJuIGdldExvbmdQYXJhbWV0ZXIocG5hbWUpOwor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9URVhUVVJFX1NJWkU6CisgICAgICAgIHJl
dHVybiBnZXRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNE
OjpNQVhfVkFSWUlOR19WRUNUT1JTOgorICAgICAgICByZXR1cm4gZ2V0TG9uZ1BhcmFtZXRlcihw
bmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6TUFYX1ZFUlRFWF9BVFRSSUJTOgor
ICAgICAgICByZXR1cm4gZ2V0TG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHQzRDo6TUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTOgorICAgICAgICByZXR1
cm4gZ2V0TG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
TUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlM6CisgICAgICAgIHJldHVybiBnZXRMb25nUGFyYW1l
dGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpNQVhfVklFV1BPUlRfRElN
UzoKKyAgICAgICAgcmV0dXJuIGdldFdlYkdMSW50QXJyYXlQYXJhbWV0ZXIocG5hbWUpOworICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6Ok5VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUzoK
KyAgICAgICAgcmV0dXJuIGdldExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0M0Q6Ok5VTV9TSEFERVJfQklOQVJZX0ZPUk1BVFM6CisgICAgICAgIC8vIEZJWE1F
OiBzaG91bGQgd2UgYWx3YXlzIHJldHVybiAwIGZvciB0aGlzPworICAgICAgICByZXR1cm4gZ2V0
TG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UEFDS19B
TElHTk1FTlQ6CisgICAgICAgIHJldHVybiBnZXRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpQT0xZR09OX09GRlNFVF9GQUNUT1I6CisgICAgICAgIHJl
dHVybiBnZXRGbG9hdFBhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6UE9MWUdPTl9PRkZTRVRfRklMTDoKKyAgICAgICAgcmV0dXJuIGdldEJvb2xlYW5QYXJhbWV0
ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlBPTFlHT05fT0ZGU0VUX1VO
SVRTOgorICAgICAgICByZXR1cm4gZ2V0RmxvYXRQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0M0Q6OlJFRF9CSVRTOgorICAgICAgICByZXR1cm4gZ2V0TG9uZ1BhcmFt
ZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSX0JJ
TkRJTkc6CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTFJlbmRl
cmJ1ZmZlcj4obV9yZW5kZXJidWZmZXJCaW5kaW5nKSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6U0FNUExFX0JVRkZFUlM6CisgICAgICAgIHJldHVybiBnZXRMb25nUGFyYW1ldGVyKHBu
YW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTQU1QTEVfQ09WRVJBR0VfSU5WRVJU
OgorICAgICAgICByZXR1cm4gZ2V0Qm9vbGVhblBhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6U0FNUExFX0NPVkVSQUdFX1ZBTFVFOgorICAgICAgICByZXR1cm4g
Z2V0RmxvYXRQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNB
TVBMRVM6CisgICAgICAgIHJldHVybiBnZXRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dDNEOjpTQ0lTU09SX0JPWDoKKyAgICAgICAgcmV0dXJuIGdldFdlYkdM
SW50QXJyYXlQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlND
SVNTT1JfVEVTVDoKKyAgICAgICAgcmV0dXJuIGdldEJvb2xlYW5QYXJhbWV0ZXIocG5hbWUpOwor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfQkFDS19GQUlMOgorICAgICAgICBy
ZXR1cm4gZ2V0VW5zaWduZWRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dDNEOjpTVEVOQ0lMX0JBQ0tfRlVOQzoKKyAgICAgICAgcmV0dXJuIGdldFVuc2lnbmVk
TG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJ
TF9CQUNLX1BBU1NfREVQVEhfRkFJTDoKKyAgICAgICAgcmV0dXJuIGdldFVuc2lnbmVkTG9uZ1Bh
cmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9CQUNL
X1BBU1NfREVQVEhfUEFTUzoKKyAgICAgICAgcmV0dXJuIGdldFVuc2lnbmVkTG9uZ1BhcmFtZXRl
cihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9CQUNLX1JFRjoK
KyAgICAgICAgcmV0dXJuIGdldExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0M0Q6OlNURU5DSUxfQkFDS19WQUxVRV9NQVNLOgorICAgICAgICByZXR1cm4gZ2V0
VW5zaWduZWRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNE
OjpTVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLOgorICAgICAgICByZXR1cm4gZ2V0VW5zaWduZWRMb25n
UGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0JJ
VFM6CisgICAgICAgIHJldHVybiBnZXRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0NMRUFSX1ZBTFVFOgorICAgICAgICByZXR1cm4gZ2V0
TG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJ
TF9GQUlMOgorICAgICAgICByZXR1cm4gZ2V0VW5zaWduZWRMb25nUGFyYW1ldGVyKHBuYW1lKTsK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0ZVTkM6CisgICAgICAgIHJldHVy
biBnZXRVbnNpZ25lZExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0M0Q6OlNURU5DSUxfUEFTU19ERVBUSF9GQUlMOgorICAgICAgICByZXR1cm4gZ2V0VW5zaWdu
ZWRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVO
Q0lMX1BBU1NfREVQVEhfUEFTUzoKKyAgICAgICAgcmV0dXJuIGdldFVuc2lnbmVkTG9uZ1BhcmFt
ZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9SRUY6Cisg
ICAgICAgIHJldHVybiBnZXRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dDNEOjpTVEVOQ0lMX1RFU1Q6CisgICAgICAgIHJldHVybiBnZXRCb29sZWFuUGFyYW1l
dGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX1ZBTFVFX01B
U0s6CisgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfV1JJVEVNQVNLOgorICAgICAgICByZXR1
cm4gZ2V0VW5zaWduZWRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dDNEOjpTVUJQSVhFTF9CSVRTOgorICAgICAgICByZXR1cm4gZ2V0TG9uZ1BhcmFtZXRlcihw
bmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9CSU5ESU5HXzJEOgor
ICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xUZXh0dXJlPihtX3Rl
eHR1cmVVbml0c1ttX2FjdGl2ZVRleHR1cmVVbml0XS5tX3RleHR1cmUyREJpbmRpbmcpKTsKKyAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVA6CisgICAg
ICAgIHJldHVybiBXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTFRleHR1cmU+KG1fdGV4dHVy
ZVVuaXRzW21fYWN0aXZlVGV4dHVyZVVuaXRdLm1fdGV4dHVyZUN1YmVNYXBCaW5kaW5nKSk7Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VU5QQUNLX0FMSUdOTUVOVDoKKyAgICAgICAgLy8g
RklYTUU6IHNob3VsZCB0aGlzIGJlICJsb25nIiBpbiB0aGUgc3BlYz8KKyAgICAgICAgcmV0dXJu
IGdldEludFBhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VklF
V1BPUlQ6CisgICAgICAgIHJldHVybiBnZXRXZWJHTEludEFycmF5UGFyYW1ldGVyKHBuYW1lKTsK
KyAgICBkZWZhdWx0OgorICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9FTlVNIGVy
cm9yCisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5m
bygpOworICAgIH0KIH0KIAotaW50IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UHJvZ3JhbWko
V2ViR0xQcm9ncmFtKiBwcm9ncmFtLCB1bnNpZ25lZCBsb25nIHBuYW1lLCBFeGNlcHRpb25Db2Rl
JiBlYykKK1dlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFByb2dyYW1QYXJh
bWV0ZXIoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCB1bnNpZ25lZCBsb25nIHBuYW1lLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKICAgICBpZiAoIXByb2dyYW0gfHwgcHJvZ3JhbS0+Y29udGV4dCgpICE9
IHRoaXMpIHsKKyAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfVkFMVUUgZXJyb3IK
ICAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKICAgICB9CiAKLSAgICBpbnQgcmVzdWx0ID0gbV9j
b250ZXh0LT5nZXRQcm9ncmFtaShwcm9ncmFtLCBwbmFtZSk7Ci0gICAgY2xlYW51cEFmdGVyR3Jh
cGhpY3NDYWxsKGZhbHNlKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1QYXNzUmVmUHRyPFdl
YkdMSW50QXJyYXk+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UHJvZ3JhbWl2KFdlYkdMUHJv
Z3JhbSogcHJvZ3JhbSwgdW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCi17
Ci0gICAgaWYgKCFwcm9ncmFtIHx8IHByb2dyYW0tPmNvbnRleHQoKSAhPSB0aGlzKSB7Ci0gICAg
ICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7Ci0gICAgICAgIHJldHVybiAwOworICAgIFdlYkdM
U3RhdGVSZXN0b3Jlcih0aGlzLCBmYWxzZSk7CisgICAgaW50IHZhbHVlID0gMDsKKyAgICBzd2l0
Y2ggKHBuYW1lKSB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVMRVRFX1NUQVRVUzoK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5LX1NUQVRVUzoKKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpWQUxJREFURV9TVEFUVVM6CisgICAgICAgIG1fY29udGV4dC0+Z2V0UHJv
Z3JhbWl2KHByb2dyYW0sIHBuYW1lLCAmdmFsdWUpOworICAgICAgICByZXR1cm4gV2ViR0xHZXRJ
bmZvKHN0YXRpY19jYXN0PGJvb2w+KHZhbHVlKSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6SU5GT19MT0dfTEVOR1RIOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkFUVEFDSEVE
X1NIQURFUlM6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6QUNUSVZFX0FUVFJJQlVURVM6
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6QUNUSVZFX0FUVFJJQlVURV9NQVhfTEVOR1RI
OgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkFDVElWRV9VTklGT1JNUzoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dDNEOjpBQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RIOgorICAgICAgICBt
X2NvbnRleHQtPmdldFByb2dyYW1pdihwcm9ncmFtLCBwbmFtZSwgJnZhbHVlKTsKKyAgICAgICAg
cmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNfY2FzdDxsb25nPih2YWx1ZSkpOworICAgIGRlZmF1
bHQ6CisgICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX0VOVU0gZXJyb3IKKyAgICAg
ICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CiAgICAg
fQotICAgIFJlZlB0cjxXZWJHTEludEFycmF5PiBhcnJheSA9IG1fY29udGV4dC0+Z2V0UHJvZ3Jh
bWl2KHByb2dyYW0sIHBuYW1lKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2Up
OwotICAgIHJldHVybiBhcnJheTsKIH0KIAogU3RyaW5nIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
Z2V0UHJvZ3JhbUluZm9Mb2coV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKICAgICBpZiAoIXByb2dyYW0gfHwgcHJvZ3JhbS0+Y29udGV4dCgpICE9IHRoaXMpIHsK
KyAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfVkFMVUUgZXJyb3IKICAgICAgICAg
ZWMgPSBUWVBFX01JU01BVENIX0VSUjsKICAgICAgICAgcmV0dXJuICIiOwogICAgIH0KLSAgICBT
dHJpbmcgcyA9IG1fY29udGV4dC0+Z2V0UHJvZ3JhbUluZm9Mb2cocHJvZ3JhbSk7Ci0gICAgY2xl
YW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKLSAgICByZXR1cm4gczsKKyAgICBXZWJHTFN0
YXRlUmVzdG9yZXIodGhpcywgZmFsc2UpOworICAgIHJldHVybiBtX2NvbnRleHQtPmdldFByb2dy
YW1JbmZvTG9nKHByb2dyYW0pOwogfQogCi1pbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRS
ZW5kZXJidWZmZXJQYXJhbWV0ZXJpKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25n
IHBuYW1lKQorV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UmVuZGVyYnVm
ZmVyUGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBpbnQgcmVzdWx0ID0gbV9jb250ZXh0LT5nZXRSZW5k
ZXJidWZmZXJQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUpOwotICAgIGNsZWFudXBBZnRlckdyYXBo
aWNzQ2FsbChmYWxzZSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotUGFzc1JlZlB0cjxXZWJH
TEludEFycmF5PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRl
cml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKQotewotICAgIFJl
ZlB0cjxXZWJHTEludEFycmF5PiBhcnJheSA9IG1fY29udGV4dC0+Z2V0UmVuZGVyYnVmZmVyUGFy
YW1ldGVyaXYodGFyZ2V0LCBwbmFtZSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZh
bHNlKTsKLSAgICByZXR1cm4gYXJyYXk7Ci19CisgICAgaWYgKHRhcmdldCAhPSBHcmFwaGljc0Nv
bnRleHQzRDo6UkVOREVSQlVGRkVSKSB7CisgICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZB
TElEX0VOVU0gZXJyb3IKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm4g
V2ViR0xHZXRJbmZvKCk7CisgICAgfQogCi1pbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRT
aGFkZXJpKFdlYkdMU2hhZGVyKiBzaGFkZXIsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlv
bkNvZGUmIGVjKQotewotICAgIGlmICghc2hhZGVyIHx8IHNoYWRlci0+Y29udGV4dCgpICE9IHRo
aXMpIHsKLSAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgV2ViR0xTdGF0ZVJlc3RvcmVyKHRoaXMsIGZhbHNlKTsKKyAgICBpbnQgdmFsdWUgPSAw
OworICAgIHN3aXRjaCAocG5hbWUpIHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5E
RVJCVUZGRVJfV0lEVEg6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVS
X0hFSUdIVDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVJfUkVEX1NJ
WkU6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSX0dSRUVOX1NJWkU6
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSX0JMVUVfU0laRToKKyAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVJfQUxQSEFfU0laRToKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVJfREVQVEhfU0laRToKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVJfU1RFTkNJTF9TSVpFOgorICAgICAgICBt
X2NvbnRleHQtPmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsICZ2YWx1
ZSk7CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oc3RhdGljX2Nhc3Q8bG9uZz4odmFsdWUp
KTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVJfSU5URVJOQUxfRk9S
TUFUOgorICAgICAgICBtX2NvbnRleHQtPmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KHRhcmdl
dCwgcG5hbWUsICZ2YWx1ZSk7CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oc3RhdGljX2Nh
c3Q8dW5zaWduZWQgbG9uZz4odmFsdWUpKTsKKyAgICBkZWZhdWx0OgorICAgICAgICAvLyBGSVhN
RTogcmFpc2UgR0xfSU5WQUxJRF9FTlVNIGVycm9yCisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsK
KyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOwogICAgIH0KLSAgICBpbnQgcmVzdWx0ID0g
bV9jb250ZXh0LT5nZXRTaGFkZXJpKHNoYWRlciwgcG5hbWUpOwotICAgIGNsZWFudXBBZnRlckdy
YXBoaWNzQ2FsbChmYWxzZSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUGFzc1JlZlB0cjxX
ZWJHTEludEFycmF5PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFNoYWRlcml2KFdlYkdMU2hh
ZGVyKiBzaGFkZXIsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorV2Vi
R0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2hhZGVyUGFyYW1ldGVyKFdlYkdM
U2hhZGVyKiBzaGFkZXIsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ewogICAgIGlmICghc2hhZGVyIHx8IHNoYWRlci0+Y29udGV4dCgpICE9IHRoaXMpIHsKKyAgICAg
ICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfVkFMVUUgZXJyb3IKICAgICAgICAgZWMgPSBU
WVBFX01JU01BVENIX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBXZWJH
TEdldEluZm8oKTsKKyAgICB9CisgICAgV2ViR0xTdGF0ZVJlc3RvcmVyKHRoaXMsIGZhbHNlKTsK
KyAgICBpbnQgdmFsdWUgPSAwOworICAgIHN3aXRjaCAocG5hbWUpIHsKKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpERUxFVEVfU1RBVFVTOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6
OkNPTVBJTEVfU1RBVFVTOgorICAgICAgICBtX2NvbnRleHQtPmdldFNoYWRlcml2KHNoYWRlciwg
cG5hbWUsICZ2YWx1ZSk7CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oc3RhdGljX2Nhc3Q8
Ym9vbD4odmFsdWUpKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTSEFERVJfVFlQRToK
KyAgICAgICAgbV9jb250ZXh0LT5nZXRTaGFkZXJpdihzaGFkZXIsIHBuYW1lLCAmdmFsdWUpOwor
ICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KHZh
bHVlKSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6SU5GT19MT0dfTEVOR1RIOgorICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNIQURFUl9TT1VSQ0VfTEVOR1RIOgorICAgICAgICBt
X2NvbnRleHQtPmdldFNoYWRlcml2KHNoYWRlciwgcG5hbWUsICZ2YWx1ZSk7CisgICAgICAgIHJl
dHVybiBXZWJHTEdldEluZm8oc3RhdGljX2Nhc3Q8bG9uZz4odmFsdWUpKTsKKyAgICBkZWZhdWx0
OgorICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9FTlVNIGVycm9yCisgICAgICAg
IGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOwogICAgIH0K
LSAgICBSZWZQdHI8V2ViR0xJbnRBcnJheT4gYXJyYXkgPSBtX2NvbnRleHQtPmdldFNoYWRlcml2
KHNoYWRlciwgcG5hbWUpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci0g
ICAgcmV0dXJuIGFycmF5OwogfQogCiBTdHJpbmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRT
aGFkZXJJbmZvTG9nKFdlYkdMU2hhZGVyKiBzaGFkZXIsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAt
ODQyLDkgKzEwOTksOCBAQCBTdHJpbmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTaGFkZXJJ
CiAgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CiAgICAgICAgIHJldHVybiAiIjsKICAg
ICB9Ci0gICAgU3RyaW5nIHMgPSBtX2NvbnRleHQtPmdldFNoYWRlckluZm9Mb2coc2hhZGVyKTsK
LSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwotICAgIHJldHVybiBzOworICAg
IFdlYkdMU3RhdGVSZXN0b3Jlcih0aGlzLCBmYWxzZSk7CisgICAgcmV0dXJuIG1fY29udGV4dC0+
Z2V0U2hhZGVySW5mb0xvZyhzaGFkZXIpOwogfQogCiBTdHJpbmcgV2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpnZXRTaGFkZXJTb3VyY2UoV2ViR0xTaGFkZXIqIHNoYWRlciwgRXhjZXB0aW9uQ29kZSYg
ZWMpCkBAIC04NTMsODYgKzExMDksMTY2IEBAIFN0cmluZyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmdldFNoYWRlclMKICAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKICAgICAgICAgcmV0
dXJuICIiOwogICAgIH0KLSAgICBTdHJpbmcgcyA9IG1fY29udGV4dC0+Z2V0U2hhZGVyU291cmNl
KHNoYWRlcik7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKLSAgICByZXR1
cm4gczsKKyAgICBXZWJHTFN0YXRlUmVzdG9yZXIodGhpcywgZmFsc2UpOworICAgIHJldHVybiBt
X2NvbnRleHQtPmdldFNoYWRlclNvdXJjZShzaGFkZXIpOwogfQogCiBTdHJpbmcgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpnZXRTdHJpbmcodW5zaWduZWQgbG9uZyBuYW1lKQogeworICAgIFdlYkdM
U3RhdGVSZXN0b3Jlcih0aGlzLCBmYWxzZSk7CiAgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0U3Ry
aW5nKG5hbWUpOwogfQogCi1mbG9hdCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFRleFBhcmFt
ZXRlcmYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAg
ZmxvYXQgcmVzdWx0ID0gbV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJmKHRhcmdldCwgcG5hbWUp
OwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLQotUGFzc1JlZlB0cjxXZWJHTEZsb2F0QXJyYXk+IFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Z2V0VGV4UGFyYW1ldGVyZnYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcg
cG5hbWUpCitXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRUZXhQYXJhbWV0
ZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogewotICAgIFJlZlB0cjxXZWJHTEZsb2F0QXJyYXk+IGFycmF5ID0gbV9jb250ZXh0
LT5nZXRUZXhQYXJhbWV0ZXJmdih0YXJnZXQsIHBuYW1lKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFw
aGljc0NhbGwoZmFsc2UpOwotICAgIHJldHVybiBhcnJheTsKLX0KLQotaW50IFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6Z2V0VGV4UGFyYW1ldGVyaSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWdu
ZWQgbG9uZyBwbmFtZSkKLXsKLSAgICBpbnQgcmVzdWx0ID0gbV9jb250ZXh0LT5nZXRUZXhQYXJh
bWV0ZXJpKHRhcmdldCwgcG5hbWUpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxz
ZSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFRleFBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFy
Z2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKQotewotICAgIFJlZlB0cjxXZWJHTEludEFycmF5PiBh
cnJheSA9IG1fY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSk7Ci0gICAg
Y2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKLSAgICByZXR1cm4gYXJyYXk7Ci19Ci0K
LWZsb2F0IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VW5pZm9ybWYoV2ViR0xQcm9ncmFtKiBw
cm9ncmFtLCBsb25nIGxvY2F0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBpZiAoIXBy
b2dyYW0gfHwgcHJvZ3JhbS0+Y29udGV4dCgpICE9IHRoaXMpIHsKLSAgICAgICAgZWMgPSBUWVBF
X01JU01BVENIX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKHRhcmdldCAhPSBHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRAorICAgICAgICAmJiB0YXJnZXQgIT0gR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfQ1VCRV9NQVApIHsKKyAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdM
X0lOVkFMSURfRU5VTSBlcnJvcgorICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJl
dHVybiBXZWJHTEdldEluZm8oKTsKICAgICB9Ci0gICAgZmxvYXQgcmVzdWx0ID0gbV9jb250ZXh0
LT5nZXRVbmlmb3JtZihwcm9ncmFtLCBsb2NhdGlvbik7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhp
Y3NDYWxsKGZhbHNlKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1QYXNzUmVmUHRyPFdlYkdM
RmxvYXRBcnJheT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRVbmlmb3JtZnYoV2ViR0xQcm9n
cmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBp
ZiAoIXByb2dyYW0gfHwgcHJvZ3JhbS0+Y29udGV4dCgpICE9IHRoaXMpIHsKLSAgICAgICAgZWMg
PSBUWVBFX01JU01BVENIX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgV2ViR0xTdGF0ZVJl
c3RvcmVyKHRoaXMsIGZhbHNlKTsKKyAgICBpbnQgdmFsdWUgPSAwOworICAgIHN3aXRjaCAocG5h
bWUpIHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVI6Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklMVEVSOgorICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9TOgorICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfV1JBUF9UOgorICAgICAgICBtX2NvbnRleHQtPmdldFRleFBhcmFtZXRl
cml2KHRhcmdldCwgcG5hbWUsICZ2YWx1ZSk7CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8o
c3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4odmFsdWUpKTsKKyAgICBkZWZhdWx0OgorICAgICAg
ICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9FTlVNIGVycm9yCisgICAgICAgIGVjID0gU1lO
VEFYX0VSUjsKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOwogICAgIH0KLSAgICBSZWZQ
dHI8V2ViR0xGbG9hdEFycmF5PiBhcnJheSA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybWZ2KHByb2dy
YW0sIGxvY2F0aW9uKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwotICAg
IHJldHVybiBhcnJheTsKIH0KIAotbG9uZyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFVuaWZv
cm1pKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBsb2NhdGlvbiwgRXhjZXB0aW9uQ29kZSYg
ZWMpCitXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRVbmlmb3JtKFdlYkdM
UHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBsb2NhdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAg
ICAgaWYgKCFwcm9ncmFtIHx8IHByb2dyYW0tPmNvbnRleHQoKSAhPSB0aGlzKSB7CisgICAgICAg
IC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX1ZBTFVFIGVycm9yCiAgICAgICAgIGVjID0gVFlQ
RV9NSVNNQVRDSF9FUlI7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gV2ViR0xH
ZXRJbmZvKCk7CiAgICAgfQotICAgIGxvbmcgcmVzdWx0ID0gbV9jb250ZXh0LT5nZXRVbmlmb3Jt
aShwcm9ncmFtLCBsb2NhdGlvbik7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNl
KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1QYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VW5pZm9ybWl2KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwg
bG9uZyBsb2NhdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgaWYgKCFwcm9ncmFtIHx8
IHByb2dyYW0tPmNvbnRleHQoKSAhPSB0aGlzKSB7Ci0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRD
SF9FUlI7Ci0gICAgICAgIHJldHVybiAwOworICAgIFdlYkdMU3RhdGVSZXN0b3Jlcih0aGlzLCBm
YWxzZSk7CisgICAgLy8gRklYTUU6IG1ha2UgdGhpcyBtb3JlIGVmZmljaWVudCB1c2luZyBXZWJH
TFVuaWZvcm1Mb2NhdGlvbiBhbmQgY2FjaGluZyB0eXBlcyBpbiBpdAorICAgIGludCBhY3RpdmVV
bmlmb3JtcyA9IDA7CisgICAgbV9jb250ZXh0LT5nZXRQcm9ncmFtaXYocHJvZ3JhbSwgR3JhcGhp
Y3NDb250ZXh0M0Q6OkFDVElWRV9VTklGT1JNUywgJmFjdGl2ZVVuaWZvcm1zKTsKKyAgICBmb3Ig
KGludCBpID0gMDsgaSA8IGFjdGl2ZVVuaWZvcm1zOyBpKyspIHsKKyAgICAgICAgQWN0aXZlSW5m
byBpbmZvOworICAgICAgICBpZiAoIW1fY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybShwcm9ncmFt
LCBpLCBpbmZvKSkgeworICAgICAgICAgICAgLy8gRklYTUU6IHJhaXNlIHNvbWUgR0wgZXJyb3IK
KyAgICAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgICAgICByZXR1cm4g
V2ViR0xHZXRJbmZvKCk7CisgICAgICAgIH0KKyAgICAgICAgLy8gTm93IG5lZWQgdG8gbG9vayB0
aGlzIHVwIGJ5IG5hbWUgYWdhaW4gdG8gZmluZCBpdHMgbG9jYXRpb24KKyAgICAgICAgbG9uZyBs
b2MgPSBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCBpbmZvLm5hbWUpOwor
ICAgICAgICBpZiAobG9jID09IGxvY2F0aW9uKSB7CisgICAgICAgICAgICAvLyBGb3VuZCBpdC4g
VXNlIHRoZSB0eXBlIGluIHRoZSBBY3RpdmVJbmZvIHRvIGRldGVybWluZSB0aGUgcmV0dXJuIHR5
cGUuCisgICAgICAgICAgICBHcmFwaGljc0NvbnRleHQzRDo6V2ViR0xFbnVtVHlwZSBiYXNlVHlw
ZTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aDsKKyAgICAgICAgICAgIHN3aXRjaCAoaW5m
by50eXBlKSB7CisgICAgICAgICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Qk9PTDoK
KyAgICAgICAgICAgICAgICAgICAgYmFzZVR5cGUgPSBHcmFwaGljc0NvbnRleHQzRDo6Qk9PTDsK
KyAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0gMTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Qk9PTF9WRUMyOgor
ICAgICAgICAgICAgICAgICAgICBiYXNlVHlwZSA9IEdyYXBoaWNzQ29udGV4dDNEOjpCT09MOwor
ICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSAyOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpCT09MX1ZFQzM6Cisg
ICAgICAgICAgICAgICAgICAgIGJhc2VUeXBlID0gR3JhcGhpY3NDb250ZXh0M0Q6OkJPT0w7Cisg
ICAgICAgICAgICAgICAgICAgIGxlbmd0aCA9IDM7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkJPT0xfVkVDNDoKKyAg
ICAgICAgICAgICAgICAgICAgYmFzZVR5cGUgPSBHcmFwaGljc0NvbnRleHQzRDo6Qk9PTDsKKyAg
ICAgICAgICAgICAgICAgICAgbGVuZ3RoID0gNDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6SU5UOgorICAgICAgICAg
ICAgICAgICAgICBiYXNlVHlwZSA9IEdyYXBoaWNzQ29udGV4dDNEOjpJTlQ7CisgICAgICAgICAg
ICAgICAgICAgIGxlbmd0aCA9IDE7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OklOVF9WRUMyOgorICAgICAgICAgICAg
ICAgICAgICBiYXNlVHlwZSA9IEdyYXBoaWNzQ29udGV4dDNEOjpJTlQ7CisgICAgICAgICAgICAg
ICAgICAgIGxlbmd0aCA9IDI7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OklOVF9WRUMzOgorICAgICAgICAgICAgICAg
ICAgICBiYXNlVHlwZSA9IEdyYXBoaWNzQ29udGV4dDNEOjpJTlQ7CisgICAgICAgICAgICAgICAg
ICAgIGxlbmd0aCA9IDM7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OklOVF9WRUM0OgorICAgICAgICAgICAgICAgICAg
ICBiYXNlVHlwZSA9IEdyYXBoaWNzQ29udGV4dDNEOjpJTlQ7CisgICAgICAgICAgICAgICAgICAg
IGxlbmd0aCA9IDQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FUOgorICAgICAgICAgICAgICAgICAgICBiYXNl
VHlwZSA9IEdyYXBoaWNzQ29udGV4dDNEOjpGTE9BVDsKKyAgICAgICAgICAgICAgICAgICAgbGVu
Z3RoID0gMTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHQzRDo6RkxPQVRfVkVDMjoKKyAgICAgICAgICAgICAgICAgICAgYmFz
ZVR5cGUgPSBHcmFwaGljc0NvbnRleHQzRDo6RkxPQVQ7CisgICAgICAgICAgICAgICAgICAgIGxl
bmd0aCA9IDI7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FUX1ZFQzM6CisgICAgICAgICAgICAgICAgICAgIGJh
c2VUeXBlID0gR3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FUOworICAgICAgICAgICAgICAgICAgICBs
ZW5ndGggPSAzOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpGTE9BVF9WRUM0OgorICAgICAgICAgICAgICAgICAgICBi
YXNlVHlwZSA9IEdyYXBoaWNzQ29udGV4dDNEOjpGTE9BVDsKKyAgICAgICAgICAgICAgICAgICAg
bGVuZ3RoID0gNDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RkxPQVRfTUFUMjoKKyAgICAgICAgICAgICAgICAgICAg
YmFzZVR5cGUgPSBHcmFwaGljc0NvbnRleHQzRDo6RkxPQVQ7CisgICAgICAgICAgICAgICAgICAg
IGxlbmd0aCA9IDQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FUX01BVDM6CisgICAgICAgICAgICAgICAgICAg
IGJhc2VUeXBlID0gR3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FUOworICAgICAgICAgICAgICAgICAg
ICBsZW5ndGggPSA5OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpGTE9BVF9NQVQ0OgorICAgICAgICAgICAgICAgICAg
ICBiYXNlVHlwZSA9IEdyYXBoaWNzQ29udGV4dDNEOjpGTE9BVDsKKyAgICAgICAgICAgICAgICAg
ICAgbGVuZ3RoID0gMTY7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIC8vIENhbid0IGhhbmRsZSB0aGlzIHR5
cGUKKyAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IHdoYXQgdG8gZG8gYWJvdXQgc2FtcGxl
cnM/CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIHN3aXRjaCAoYmFzZVR5cGUpIHsKKyAgICAgICAgICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FUOiB7CisgICAgICAgICAgICAgICAgZmxvYXQgdmFsdWVb
MTZdID0gezB9OworICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybWZ2KHByb2dy
YW0sIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKGxlbmd0aCA9PSAxKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKHZhbHVlWzBdKTsKKyAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8o
V2ViR0xGbG9hdEFycmF5OjpjcmVhdGUodmFsdWUsIGxlbmd0aCkpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6SU5UOiB7CisgICAgICAgICAgICAg
ICAgaW50IHZhbHVlWzE2XSA9IHswfTsKKyAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmdldFVu
aWZvcm1pdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgICAgICAgICAgICAgIGlmIChs
ZW5ndGggPT0gMSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0
aWNfY2FzdDxsb25nPih2YWx1ZVswXSkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhXZWJHTEludEFycmF5OjpjcmVhdGUodmFs
dWUsIGxlbmd0aCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHQzRDo6Qk9PTDogeworICAgICAgICAgICAgICAgIGludCB2YWx1ZVsxNl0gPSB7MH07Cisg
ICAgICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRpb24s
IHZhbHVlKTsKKyAgICAgICAgICAgICAgICBpZiAobGVuZ3RoID09IDEpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oc3RhdGljX2Nhc3Q8Ym9vbD4odmFsdWVbMF0pKTsK
KyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hh
ciBib29sVmFsdWVbMTZdID0gezB9OworICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGogPSAwOyBqIDwgbGVuZ3RoOyBqKyspCisgICAgICAgICAgICAgICAgICAgICAgICBib29sVmFs
dWVbal0gPSBzdGF0aWNfY2FzdDxib29sPih2YWx1ZVtqXSk7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBXZWJHTEdldEluZm8oV2ViR0xVbnNpZ25lZEJ5dGVBcnJheTo6Y3JlYXRlKGJvb2xW
YWx1ZSwgbGVuZ3RoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CiAgICAgfQotICAgIFJlZlB0cjxXZWJHTEludEFycmF5PiBhcnJh
eSA9IG1fY29udGV4dC0+Z2V0VW5pZm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uKTsKLSAgICBjbGVh
bnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwotICAgIHJldHVybiBhcnJheTsKKyAgICAvLyBJ
ZiB3ZSBnZXQgaGVyZSwgc29tZXRoaW5nIHdlbnQgd3JvbmcgaW4gb3VyIHVuZm9ydHVuYXRlbHkg
Y29tcGxleCBsb2dpYyBhYm92ZQorICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKIH0KIAogbG9u
ZyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFVuaWZvcm1Mb2NhdGlvbihXZWJHTFByb2dyYW0q
IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC05NDQs
MzIgKzEyODAsNDcgQEAgbG9uZyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFVuaWZvcm1Mbwog
ICAgIHJldHVybiBtX2NvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCBuYW1lKTsK
IH0KIAotZmxvYXQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRWZXJ0ZXhBdHRyaWJmKHVuc2ln
bmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCitXZWJHTEdldEluZm8gV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpnZXRWZXJ0ZXhBdHRyaWIodW5zaWduZWQgbG9uZyBpbmRleCwgdW5z
aWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgZmxvYXQgcmVzdWx0
ID0gbV9jb250ZXh0LT5nZXRWZXJ0ZXhBdHRyaWJmKGluZGV4LCBwbmFtZSk7Ci0gICAgY2xlYW51
cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1QYXNz
UmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRWZXJ0ZXhB
dHRyaWJmdih1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBuYW1lKQotewotICAg
IFJlZlB0cjxXZWJHTEZsb2F0QXJyYXk+IGFycmF5ID0gbV9jb250ZXh0LT5nZXRWZXJ0ZXhBdHRy
aWJmdihpbmRleCwgcG5hbWUpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7
Ci0gICAgcmV0dXJuIGFycmF5OwotfQotCi1sb25nIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0
VmVydGV4QXR0cmliaSh1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBuYW1lKQot
ewotICAgIGxvbmcgcmVzdWx0ID0gbV9jb250ZXh0LT5nZXRWZXJ0ZXhBdHRyaWJpKGluZGV4LCBw
bmFtZSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotCi1QYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6Z2V0VmVydGV4QXR0cmliaXYodW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQgbG9u
ZyBwbmFtZSkKLXsKLSAgICBSZWZQdHI8V2ViR0xJbnRBcnJheT4gYXJyYXkgPSBtX2NvbnRleHQt
PmdldFZlcnRleEF0dHJpYml2KGluZGV4LCBwbmFtZSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhp
Y3NDYWxsKGZhbHNlKTsKLSAgICByZXR1cm4gYXJyYXk7CisgICAgV2ViR0xTdGF0ZVJlc3RvcmVy
KHRoaXMsIGZhbHNlKTsKKyAgICBzd2l0Y2ggKHBuYW1lKSB7CisgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHQzRDo6VkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElORzogeworICAgICAgICBp
bnQgbmFtZSA9IDA7CisgICAgICAgIG1fY29udGV4dC0+Z2V0VmVydGV4QXR0cmliaXYoaW5kZXgs
IHBuYW1lLCAmbmFtZSk7CisgICAgICAgIGlmIChuYW1lID09IDApCisgICAgICAgICAgICByZXR1
cm4gV2ViR0xHZXRJbmZvKCk7CisgICAgICAgIFJlZlB0cjxXZWJHTEJ1ZmZlcj4gdG1wID0gV2Vi
R0xCdWZmZXI6OmNyZWF0ZSh0aGlzLCBuYW1lKTsKKyAgICAgICAgYWRkT2JqZWN0KHRtcC5nZXQo
KSk7CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTEJ1ZmZlcj4o
dG1wKSk7CisgICAgfQorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlZFUlRFWF9BVFRSSUJf
QVJSQVlfRU5BQkxFRDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpWRVJURVhfQVRUUklC
X0FSUkFZX05PUk1BTElaRUQ6IHsKKyAgICAgICAgaW50IHZhbHVlID0gMDsKKyAgICAgICAgbV9j
b250ZXh0LT5nZXRWZXJ0ZXhBdHRyaWJpdihpbmRleCwgcG5hbWUsICZ2YWx1ZSk7CisgICAgICAg
IHJldHVybiBXZWJHTEdldEluZm8oc3RhdGljX2Nhc3Q8Ym9vbD4odmFsdWUpKTsKKyAgICB9Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VkVSVEVYX0FUVFJJQl9BUlJBWV9TSVpFOgorICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlZFUlRFWF9BVFRSSUJfQVJSQVlfU1RSSURFOiB7Cisg
ICAgICAgIGludCB2YWx1ZSA9IDA7CisgICAgICAgIG1fY29udGV4dC0+Z2V0VmVydGV4QXR0cmli
aXYoaW5kZXgsIHBuYW1lLCAmdmFsdWUpOworICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKHN0
YXRpY19jYXN0PGxvbmc+KHZhbHVlKSk7CisgICAgfQorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
M0Q6OlZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRTogeworICAgICAgICBpbnQgdmFsdWUgPSAwOwor
ICAgICAgICBtX2NvbnRleHQtPmdldFZlcnRleEF0dHJpYml2KGluZGV4LCBwbmFtZSwgJnZhbHVl
KTsKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25n
Pih2YWx1ZSkpOworICAgIH0KKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpDVVJSRU5UX1ZF
UlRFWF9BVFRSSUI6IHsKKyAgICAgICAgZmxvYXQgdmFsdWVbNF0gPSB7MH07CisgICAgICAgIG1f
Y29udGV4dC0+Z2V0VmVydGV4QXR0cmliZnYoaW5kZXgsIHBuYW1lLCB2YWx1ZSk7CisgICAgICAg
IHJldHVybiBXZWJHTEdldEluZm8oV2ViR0xGbG9hdEFycmF5OjpjcmVhdGUodmFsdWUsIDQpKTsK
KyAgICB9CisgICAgZGVmYXVsdDogeworICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJ
RF9FTlVNIGVycm9yCisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuIFdl
YkdMR2V0SW5mbygpOworICAgIH0KKyAgICB9CiB9CiAKIGxvbmcgV2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQodW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQg
bG9uZyBwbmFtZSkKQEAgLTE1ODQsNiArMTkzNSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0Ojp1c2VQcm9ncmFtKFcKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAgICAgCisgICAg
bV9jdXJyZW50UHJvZ3JhbSA9IHByb2dyYW07CiAgICAgbV9jb250ZXh0LT51c2VQcm9ncmFtKHBy
b2dyYW0pOwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CkBAIC0xNzUy
LDcgKzIxMDQsOTQgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmRldGFjaEFuZFJlbQog
ICAgIG1fY2FudmFzT2JqZWN0cy5jbGVhcigpOwogfQogCitXZWJHTEdldEluZm8gV2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpnZXRCb29sZWFuUGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcgcG5hbWUpCit7
CisgICAgdW5zaWduZWQgY2hhciB2YWx1ZTsKKyAgICBtX2NvbnRleHQtPmdldEJvb2xlYW52KHBu
YW1lLCAmdmFsdWUpOworICAgIHJldHVybiBXZWJHTEdldEluZm8oc3RhdGljX2Nhc3Q8Ym9vbD4o
dmFsdWUpKTsKK30KKworV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0Rmxv
YXRQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyBwbmFtZSkKK3sKKyAgICBmbG9hdCB2YWx1ZTsKKyAg
ICBtX2NvbnRleHQtPmdldEZsb2F0dihwbmFtZSwgJnZhbHVlKTsKKyAgICByZXR1cm4gV2ViR0xH
ZXRJbmZvKHN0YXRpY19jYXN0PGZsb2F0Pih2YWx1ZSkpOworfQorCitXZWJHTEdldEluZm8gV2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpnZXRJbnRQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyBwbmFtZSkK
K3sKKyAgICByZXR1cm4gZ2V0TG9uZ1BhcmFtZXRlcihwbmFtZSk7Cit9CisKK1dlYkdMR2V0SW5m
byBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldExvbmdQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyBw
bmFtZSkKK3sKKyAgICBpbnQgdmFsdWU7CisgICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihwbmFt
ZSwgJnZhbHVlKTsKKyAgICByZXR1cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0PGxvbmc+KHZh
bHVlKSk7Cit9CisKK1dlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFVuc2ln
bmVkTG9uZ1BhcmFtZXRlcih1bnNpZ25lZCBsb25nIHBuYW1lKQoreworICAgIGludCB2YWx1ZTsK
KyAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KHBuYW1lLCAmdmFsdWUpOworICAgIHJldHVybiBX
ZWJHTEdldEluZm8oc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4odmFsdWUpKTsKK30KKworV2Vi
R0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0V2ViR0xGbG9hdEFycmF5UGFyYW1l
dGVyKHVuc2lnbmVkIGxvbmcgcG5hbWUpCit7CisgICAgZmxvYXQgdmFsdWVbNF0gPSB7MH07Cisg
ICAgbV9jb250ZXh0LT5nZXRGbG9hdHYocG5hbWUsIHZhbHVlKTsKKyAgICB1bnNpZ25lZCBsZW5n
dGggPSAwOworICAgIHN3aXRjaCAocG5hbWUpIHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNE
OjpBTElBU0VEX1BPSU5UX1NJWkVfUkFOR0U6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
QUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkRF
UFRIX1JBTkdFOgorICAgICAgICBsZW5ndGggPSAyOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dDNEOjpCTEVORF9DT0xPUjoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dDNEOjpDT0xPUl9DTEVBUl9WQUxVRToKKyAgICAgICAgbGVuZ3RoID0gNDsKKyAgICAgICAgYnJl
YWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICB9CisgICAg
cmV0dXJuIFdlYkdMR2V0SW5mbyhXZWJHTEZsb2F0QXJyYXk6OmNyZWF0ZSh2YWx1ZSwgbGVuZ3Ro
KSk7Cit9CisKK1dlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFdlYkdMSW50
QXJyYXlQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyBwbmFtZSkKK3sKKyAgICBpbnQgdmFsdWVbNF0g
PSB7MH07CisgICAgbV9jb250ZXh0LT5nZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUpOworICAgIHVu
c2lnbmVkIGxlbmd0aCA9IDA7CisgICAgc3dpdGNoIChwbmFtZSkgeworICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0M0Q6Ok1BWF9WSUVXUE9SVF9ESU1TOgorICAgICAgICBsZW5ndGggPSAyOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTQ0lTU09SX0JPWDoKKyAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpWSUVXUE9SVDoKKyAgICAgICAgbGVuZ3RoID0gNDsK
KyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICB9CisgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhXZWJHTEludEFycmF5OjpjcmVhdGUodmFs
dWUsIGxlbmd0aCkpOworfQorCitXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRXZWJHTFVuc2lnbmVkQnl0ZUFycmF5UGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcgcG5hbWUpCit7
CisgICAgdW5zaWduZWQgY2hhciB2YWx1ZVs0XSA9IHswfTsKKyAgICBtX2NvbnRleHQtPmdldEJv
b2xlYW52KHBuYW1lLCB2YWx1ZSk7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gMDsKKyAgICBzd2l0
Y2ggKHBuYW1lKSB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfV1JJVEVNQVNL
OgorICAgICAgICBsZW5ndGggPSA0OworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAg
ICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIH0KKyAgICByZXR1cm4gV2ViR0xHZXRJbmZvKFdl
YkdMVW5zaWduZWRCeXRlQXJyYXk6OmNyZWF0ZSh2YWx1ZSwgbGVuZ3RoKSk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRSgzRF9DQU5WQVMpCi0KSW5kZXg6
IFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAkocmV2aXNpb24g
NTEzMzUpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5n
Q29udGV4dC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJXZWJHTEZs
b2F0QXJyYXkuaCIKKyNpbmNsdWRlICJXZWJHTEdldEluZm8uaCIKICNpbmNsdWRlICJXZWJHTElu
dEFycmF5LmgiCiAjaW5jbHVkZSAiV2ViR0xVbnNpZ25lZEJ5dGVBcnJheS5oIgogI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dDNELmgiCkBAIC02MCw3ICs2MSw3IEBAIGNsYXNzIFdlYktpdENTU01h
dHJpeDsKICAgICAgICAgLy8gbGlrZSBHTF9GTE9BVCwgR0xfSU5ULCBldGMuCiAgICAgICAgIGlu
dCBzaXplSW5CeXRlcyhpbnQgdHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMpOwogCi0gICAgICAgIHZv
aWQgYWN0aXZlVGV4dHVyZSh1bnNpZ25lZCBsb25nIHRleHR1cmUpOworICAgICAgICB2b2lkIGFj
dGl2ZVRleHR1cmUodW5zaWduZWQgbG9uZyB0ZXh0dXJlLCBFeGNlcHRpb25Db2RlJiBlYyk7CiAg
ICAgICAgIHZvaWQgYXR0YWNoU2hhZGVyKFdlYkdMUHJvZ3JhbSosIFdlYkdMU2hhZGVyKiwgRXhj
ZXB0aW9uQ29kZSYgZWMpOwogICAgICAgICB2b2lkIGJpbmRBdHRyaWJMb2NhdGlvbihXZWJHTFBy
b2dyYW0qLCB1bnNpZ25lZCBsb25nIGluZGV4LCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlv
bkNvZGUmIGVjKTsKICAgICAgICAgdm9pZCBiaW5kQnVmZmVyKHVuc2lnbmVkIGxvbmcgdGFyZ2V0
LCBXZWJHTEJ1ZmZlciosIEV4Y2VwdGlvbkNvZGUmIGVjKTsKQEAgLTEzMCwyNiArMTMxLDIxIEBA
IGNsYXNzIFdlYktpdENTU01hdHJpeDsKIAogICAgICAgICBpbnQgIGdldEF0dHJpYkxvY2F0aW9u
KFdlYkdMUHJvZ3JhbSosIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKLSAgICAgICAgYm9vbCBnZXRC
b29sZWFuKHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBQYXNzUmVmUHRyPFdlYkdMVW5z
aWduZWRCeXRlQXJyYXk+IGdldEJvb2xlYW52KHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAg
ICBpbnQgZ2V0QnVmZmVyUGFyYW1ldGVyaSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQg
bG9uZyBwbmFtZSk7Ci0gICAgICAgIFBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gZ2V0QnVmZmVy
UGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwor
ICAgICAgICBXZWJHTEdldEluZm8gZ2V0QnVmZmVyUGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcgdGFy
Z2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICAgICAgdW5z
aWduZWQgbG9uZyBnZXRFcnJvcigpOwogCi0gICAgICAgIGZsb2F0IGdldEZsb2F0KHVuc2lnbmVk
IGxvbmcgcG5hbWUpOwotICAgICAgICBQYXNzUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gZ2V0Rmxv
YXR2KHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBpbnQgZ2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyaSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBhdHRh
Y2htZW50LCB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgUGFzc1JlZlB0cjxXZWJHTElu
dEFycmF5PiBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdih1bnNpZ25lZCBsb25n
IHRhcmdldCwgdW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCB1bnNpZ25lZCBsb25nIHBuYW1lKTsK
LSAgICAgICAgaW50IGdldEludGVnZXIodW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFBh
c3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gZ2V0SW50ZWdlcnYodW5zaWduZWQgbG9uZyBwbmFtZSk7
Ci0gICAgICAgIGludCBnZXRQcm9ncmFtaShXZWJHTFByb2dyYW0qLCB1bnNpZ25lZCBsb25nIHBu
YW1lLCBFeGNlcHRpb25Db2RlJiBlYyk7Ci0gICAgICAgIFBhc3NSZWZQdHI8V2ViR0xJbnRBcnJh
eT4gZ2V0UHJvZ3JhbWl2KFdlYkdMUHJvZ3JhbSosIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKTsKKyAgICAgICAgV2ViR0xHZXRJbmZvIGdldEZyYW1lYnVmZmVyQXR0YWNo
bWVudFBhcmFtZXRlcih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBhdHRhY2ht
ZW50LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJik7CisKKyAgICAgICAgV2Vi
R0xHZXRJbmZvIGdldFBhcmFtZXRlcih1bnNpZ25lZCBsb25nIHBuYW1lLCBFeGNlcHRpb25Db2Rl
Jik7CisKKyAgICAgICAgV2ViR0xHZXRJbmZvIGdldFByb2dyYW1QYXJhbWV0ZXIoV2ViR0xQcm9n
cmFtKiwgdW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYpOworCiAgICAgICAgIFN0
cmluZyBnZXRQcm9ncmFtSW5mb0xvZyhXZWJHTFByb2dyYW0qLCBFeGNlcHRpb25Db2RlJiBlYyk7
Ci0gICAgICAgIGludCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKHVuc2lnbmVkIGxvbmcgdGFy
Z2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgUGFzc1JlZlB0cjxXZWJHTEludEFy
cmF5PiBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5z
aWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIGludCBnZXRTaGFkZXJpKFdlYkdMU2hhZGVyKiwg
dW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpOwotICAgICAgICBQYXNzUmVm
UHRyPFdlYkdMSW50QXJyYXk+IGdldFNoYWRlcml2KFdlYkdMU2hhZGVyKiwgdW5zaWduZWQgbG9u
ZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpOworCisgICAgICAgIFdlYkdMR2V0SW5mbyBnZXRS
ZW5kZXJidWZmZXJQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcg
cG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKKworICAgICAgICBXZWJHTEdldEluZm8gZ2V0U2hhZGVy
UGFyYW1ldGVyKFdlYkdMU2hhZGVyKiwgdW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpOwogCiAgICAgICAgIFN0cmluZyBnZXRTaGFkZXJJbmZvTG9nKFdlYkdMU2hhZGVyKiwg
RXhjZXB0aW9uQ29kZSYgZWMpOwogCkBAIC0xNTksMjIgKzE1NSwxMyBAQCBjbGFzcyBXZWJLaXRD
U1NNYXRyaXg7CiAgICAgICAgIFN0cmluZyBnZXRTaGFkZXJTb3VyY2UoV2ViR0xTaGFkZXIqLCBF
eGNlcHRpb25Db2RlJik7CiAgICAgICAgIFN0cmluZyBnZXRTdHJpbmcodW5zaWduZWQgbG9uZyBu
YW1lKTsKIAotICAgICAgICBmbG9hdCBnZXRUZXhQYXJhbWV0ZXJmKHVuc2lnbmVkIGxvbmcgdGFy
Z2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgUGFzc1JlZlB0cjxXZWJHTEZsb2F0
QXJyYXk+IGdldFRleFBhcmFtZXRlcmZ2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBs
b25nIHBuYW1lKTsKLSAgICAgICAgaW50IGdldFRleFBhcmFtZXRlcmkodW5zaWduZWQgbG9uZyB0
YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBQYXNzUmVmUHRyPFdlYkdMSW50
QXJyYXk+IGdldFRleFBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBs
b25nIHBuYW1lKTsKLQotICAgICAgICBmbG9hdCBnZXRVbmlmb3JtZihXZWJHTFByb2dyYW0qIHBy
b2dyYW0sIGxvbmcgbG9jYXRpb24sIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICAgICAgUGFzc1JlZlB0
cjxXZWJHTEZsb2F0QXJyYXk+IGdldFVuaWZvcm1mdihXZWJHTFByb2dyYW0qIHByb2dyYW0sIGxv
bmcgbG9jYXRpb24sIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICAgICAgbG9uZyBnZXRVbmlmb3JtaShX
ZWJHTFByb2dyYW0qIHByb2dyYW0sIGxvbmcgbG9jYXRpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKTsK
LSAgICAgICAgUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBnZXRVbmlmb3JtaXYoV2ViR0xQcm9n
cmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uLCBFeGNlcHRpb25Db2RlJik7CisgICAgICAgIFdl
YkdMR2V0SW5mbyBnZXRUZXhQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVk
IGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKKworICAgICAgICBXZWJHTEdldEluZm8gZ2V0
VW5pZm9ybShXZWJHTFByb2dyYW0qIHByb2dyYW0sIGxvbmcgbG9jYXRpb24sIEV4Y2VwdGlvbkNv
ZGUmIGVjKTsKIAogICAgICAgICBsb25nIGdldFVuaWZvcm1Mb2NhdGlvbihXZWJHTFByb2dyYW0q
LCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgICAgICBmbG9hdCBn
ZXRWZXJ0ZXhBdHRyaWJmKHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUp
OwotICAgICAgICBQYXNzUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gZ2V0VmVydGV4QXR0cmliZnYo
dW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIGxvbmcg
Z2V0VmVydGV4QXR0cmliaSh1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBuYW1l
KTsKLSAgICAgICAgUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBnZXRWZXJ0ZXhBdHRyaWJpdih1
bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBuYW1lKTsKKyAgICAgICAgV2ViR0xH
ZXRJbmZvIGdldFZlcnRleEF0dHJpYih1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25n
IHBuYW1lLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICAgICAgbG9uZyBnZXRWZXJ0ZXhBdHRyaWJP
ZmZzZXQodW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQgbG9uZyBwbmFtZSk7CiAKQEAgLTMz
OCw2ICszMjUsMjkgQEAgY2xhc3MgV2ViS2l0Q1NTTWF0cml4OwogICAgICAgICAKICAgICAgICAg
VmVjdG9yPFZlcnRleEF0dHJpYlN0YXRlPiBtX3ZlcnRleEF0dHJpYlN0YXRlOwogICAgICAgICB1
bnNpZ25lZCBtX21heFZlcnRleEF0dHJpYnM7CisKKyAgICAgICAgUmVmUHRyPFdlYkdMUHJvZ3Jh
bT4gbV9jdXJyZW50UHJvZ3JhbTsKKyAgICAgICAgUmVmUHRyPFdlYkdMRnJhbWVidWZmZXI+IG1f
ZnJhbWVidWZmZXJCaW5kaW5nOworICAgICAgICBSZWZQdHI8V2ViR0xSZW5kZXJidWZmZXI+IG1f
cmVuZGVyYnVmZmVyQmluZGluZzsKKyAgICAgICAgY2xhc3MgVGV4dHVyZVVuaXRTdGF0ZSB7Cisg
ICAgICAgIHB1YmxpYzoKKyAgICAgICAgICAgIFJlZlB0cjxXZWJHTFRleHR1cmU+IG1fdGV4dHVy
ZTJEQmluZGluZzsKKyAgICAgICAgICAgIFJlZlB0cjxXZWJHTFRleHR1cmU+IG1fdGV4dHVyZUN1
YmVNYXBCaW5kaW5nOworICAgICAgICB9OworICAgICAgICBUZXh0dXJlVW5pdFN0YXRlIG1fdGV4
dHVyZVVuaXRzWzMyXTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBtX2FjdGl2ZVRleHR1cmVVbml0
OworCisgICAgICAgIC8vIEhlbHBlcnMgZm9yIGdldFBhcmFtZXRlciBhbmQgb3RoZXJzCisgICAg
ICAgIFdlYkdMR2V0SW5mbyBnZXRCb29sZWFuUGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcgcG5hbWUp
OworICAgICAgICBXZWJHTEdldEluZm8gZ2V0RmxvYXRQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyBw
bmFtZSk7CisgICAgICAgIFdlYkdMR2V0SW5mbyBnZXRJbnRQYXJhbWV0ZXIodW5zaWduZWQgbG9u
ZyBwbmFtZSk7CisgICAgICAgIFdlYkdMR2V0SW5mbyBnZXRMb25nUGFyYW1ldGVyKHVuc2lnbmVk
IGxvbmcgcG5hbWUpOworICAgICAgICBXZWJHTEdldEluZm8gZ2V0VW5zaWduZWRMb25nUGFyYW1l
dGVyKHVuc2lnbmVkIGxvbmcgcG5hbWUpOworICAgICAgICBXZWJHTEdldEluZm8gZ2V0V2ViR0xG
bG9hdEFycmF5UGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcgcG5hbWUpOworICAgICAgICBXZWJHTEdl
dEluZm8gZ2V0V2ViR0xJbnRBcnJheVBhcmFtZXRlcih1bnNpZ25lZCBsb25nIHBuYW1lKTsKKyAg
ICAgICAgV2ViR0xHZXRJbmZvIGdldFdlYkdMVW5zaWduZWRCeXRlQXJyYXlQYXJhbWV0ZXIodW5z
aWduZWQgbG9uZyBwbmFtZSk7CisKKyAgICAgICAgZnJpZW5kIGNsYXNzIFdlYkdMU3RhdGVSZXN0
b3JlcjsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRsCShyZXZpc2lvbiA1MTMzNSkK
KysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtNDYwLDcgKzQ2MCw3IEBAIG1vZHVsZSBodG1sIHsKIAogICAgICAgICBsb25n
IHNpemVJbkJ5dGVzKGluIHVuc2lnbmVkIGxvbmcgdHlwZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7
CiAKLSAgICAgICAgdm9pZCAgICAgICAgIGFjdGl2ZVRleHR1cmUoaW4gdW5zaWduZWQgbG9uZyB0
ZXh0dXJlKTsKKyAgICAgICAgdm9pZCAgICAgICAgIGFjdGl2ZVRleHR1cmUoaW4gdW5zaWduZWQg
bG9uZyB0ZXh0dXJlKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgdm9pZCAgICAgICAg
IGF0dGFjaFNoYWRlcihpbiBXZWJHTFByb2dyYW0gcHJvZ3JhbSwgaW4gV2ViR0xTaGFkZXIgc2hh
ZGVyKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgdm9pZCAgICAgICAgIGJpbmRBdHRy
aWJMb2NhdGlvbihpbiBXZWJHTFByb2dyYW0gcHJvZ3JhbSwgaW4gdW5zaWduZWQgbG9uZyBpbmRl
eCwgaW4gRE9NU3RyaW5nIG5hbWUpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICB2b2lk
ICAgICAgICAgYmluZEJ1ZmZlcihpbiB1bnNpZ25lZCBsb25nIHRhcmdldCwgaW4gV2ViR0xCdWZm
ZXIgYnVmZmVyKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKQEAgLTUzMCw3ICs1MzAsNiBAQCBtb2R1
bGUgaHRtbCB7CiAgICAgICAgIHZvaWQgICAgICAgICBmcm9udEZhY2UoaW4gdW5zaWduZWQgbG9u
ZyBtb2RlKTsKICAgICAgICAgdm9pZCAgICAgICAgIGdlbmVyYXRlTWlwbWFwKGluIHVuc2lnbmVk
IGxvbmcgdGFyZ2V0KTsKICAgICAgICAgCi0gICAgICAgIC8vIEZJWE1FOiB0aGVzZSBuZWVkIHRv
IGJlIGFkZGVkIHBlciB0aGUgV2ViR0wgc3BlYwogICAgICAgICBXZWJHTEFjdGl2ZUluZm8gZ2V0
QWN0aXZlQXR0cmliKGluIFdlYkdMUHJvZ3JhbSBwcm9ncmFtLCBpbiB1bnNpZ25lZCBsb25nIGlu
ZGV4KQogICAgICAgICAgICAgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAgICAgICBXZWJHTEFj
dGl2ZUluZm8gZ2V0QWN0aXZlVW5pZm9ybShpbiBXZWJHTFByb2dyYW0gcHJvZ3JhbSwgaW4gdW5z
aWduZWQgbG9uZyBpbmRleCkKQEAgLTU0MCwyNiArNTM5LDIyIEBAIG1vZHVsZSBodG1sIHsKIAog
ICAgICAgICBpbnQgICAgICAgICAgZ2V0QXR0cmliTG9jYXRpb24oaW4gV2ViR0xQcm9ncmFtIHBy
b2dyYW0sIGluIERPTVN0cmluZyBuYW1lKTsKIAotICAgICAgICBib29sZWFuIGdldEJvb2xlYW4o
aW4gdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFdlYkdMVW5zaWduZWRCeXRlQXJyYXkg
Z2V0Qm9vbGVhbnYoaW4gdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIGxvbmcgZ2V0QnVm
ZmVyUGFyYW1ldGVyaShpbiB1bnNpZ25lZCBsb25nIHRhcmdldCwgaW4gdW5zaWduZWQgbG9uZyBw
bmFtZSk7Ci0gICAgICAgIFdlYkdMSW50QXJyYXkgZ2V0QnVmZmVyUGFyYW1ldGVyaXYoaW4gdW5z
aWduZWQgbG9uZyB0YXJnZXQsIGluIHVuc2lnbmVkIGxvbmcgcG5hbWUpOworICAgICAgICAvLyBh
bnkgZ2V0QnVmZmVyUGFyYW1ldGVyKGluIHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBpbiB1bnNpZ25l
ZCBsb25nIHBuYW1lKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgW0N1c3RvbV0gdm9p
ZCBnZXRCdWZmZXJQYXJhbWV0ZXIoKTsKIAogICAgICAgICB1bnNpZ25lZCBsb25nIGdldEVycm9y
KCk7CiAKLSAgICAgICAgZmxvYXQgZ2V0RmxvYXQoaW4gdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0g
ICAgICAgIFdlYkdMRmxvYXRBcnJheSBnZXRGbG9hdHYoaW4gdW5zaWduZWQgbG9uZyBwbmFtZSk7
Ci0gICAgICAgIGxvbmcgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaShpbiB1bnNp
Z25lZCBsb25nIHRhcmdldCwgaW4gdW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCBpbiB1bnNpZ25l
ZCBsb25nIHBuYW1lKTsKLSAgICAgICAgV2ViR0xJbnRBcnJheSBnZXRGcmFtZWJ1ZmZlckF0dGFj
aG1lbnRQYXJhbWV0ZXJpdihpbiB1bnNpZ25lZCBsb25nIHRhcmdldCwgaW4gdW5zaWduZWQgbG9u
ZyBhdHRhY2htZW50LCBpbiB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgbG9uZyBnZXRJ
bnRlZ2VyKGluIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBXZWJHTEludEFycmF5IGdl
dEludGVnZXJ2KGluIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBsb25nIGdldFByb2dy
YW1pKGluIFdlYkdMUHJvZ3JhbSBwcm9ncmFtLCBpbiB1bnNpZ25lZCBsb25nIHBuYW1lKSByYWlz
ZXMoRE9NRXhjZXB0aW9uKTsKLSAgICAgICAgV2ViR0xJbnRBcnJheSBnZXRQcm9ncmFtaXYoaW4g
V2ViR0xQcm9ncmFtIHByb2dyYW0sIGluIHVuc2lnbmVkIGxvbmcgcG5hbWUpIHJhaXNlcyhET01F
eGNlcHRpb24pOworICAgICAgICAvLyBhbnkgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1l
dGVyKGluIHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBpbiB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQs
IGluIHVuc2lnbmVkIGxvbmcgcG5hbWUpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICBb
Q3VzdG9tXSB2b2lkIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcigpOworICAgICAg
ICAvLyBhbnkgZ2V0UGFyYW1ldGVyKGluIHVuc2lnbmVkIGxvbmcgcG5hbWUpIHJhaXNlcyhET01F
eGNlcHRpb24pOworICAgICAgICBbQ3VzdG9tXSB2b2lkIGdldFBhcmFtZXRlcigpOworICAgICAg
ICAvLyBhbnkgZ2V0UHJvZ3JhbVBhcmFtZXRlcihpbiBXZWJHTFByb2dyYW0gcHJvZ3JhbSwgaW4g
dW5zaWduZWQgbG9uZyBwbmFtZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIFtDdXN0
b21dIHZvaWQgZ2V0UHJvZ3JhbVBhcmFtZXRlcigpOwogICAgICAgICBET01TdHJpbmcgZ2V0UHJv
Z3JhbUluZm9Mb2coaW4gV2ViR0xQcm9ncmFtIHByb2dyYW0pIHJhaXNlcyhET01FeGNlcHRpb24p
OwotICAgICAgICBsb25nIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkoaW4gdW5zaWduZWQgbG9u
ZyB0YXJnZXQsIGluIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBXZWJHTEludEFycmF5
IGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KGluIHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBpbiB1
bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgbG9uZyBnZXRTaGFkZXJpKGluIFdlYkdMU2hh
ZGVyIHNoYWRlciwgaW4gdW5zaWduZWQgbG9uZyBwbmFtZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7
Ci0gICAgICAgIFdlYkdMSW50QXJyYXkgZ2V0U2hhZGVyaXYoaW4gV2ViR0xTaGFkZXIgc2hhZGVy
LCBpbiB1bnNpZ25lZCBsb25nIHBuYW1lKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAg
Ly8gYW55IGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcihpbiB1bnNpZ25lZCBsb25nIHRhcmdldCwg
aW4gdW5zaWduZWQgbG9uZyBwbmFtZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIFtD
dXN0b21dIHZvaWQgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKCk7CisgICAgICAgIC8vIGFueSBn
ZXRTaGFkZXJQYXJhbWV0ZXIoaW4gV2ViR0xTaGFkZXIgc2hhZGVyLCBpbiB1bnNpZ25lZCBsb25n
IHBuYW1lKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgW0N1c3RvbV0gdm9pZCBnZXRT
aGFkZXJQYXJhbWV0ZXIoKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAogICAgICAgICBET01TdHJp
bmcgICAgZ2V0U2hhZGVySW5mb0xvZyhpbiBXZWJHTFNoYWRlciBzaGFkZXIpIHJhaXNlcyhET01F
eGNlcHRpb24pOwogCkBAIC01NjksMjIgKzU2NCwxNiBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAg
IERPTVN0cmluZyAgICBnZXRTaGFkZXJTb3VyY2UoaW4gV2ViR0xTaGFkZXIgc2hhZGVyKSByYWlz
ZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgRE9NU3RyaW5nICAgIGdldFN0cmluZyhpbiB1bnNp
Z25lZCBsb25nIG5hbWUpOwogCi0gICAgICAgIGZsb2F0IGdldFRleFBhcmFtZXRlcmYoaW4gdW5z
aWduZWQgbG9uZyB0YXJnZXQsIGluIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBXZWJH
TEZsb2F0QXJyYXkgZ2V0VGV4UGFyYW1ldGVyZnYoaW4gdW5zaWduZWQgbG9uZyB0YXJnZXQsIGlu
IHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBsb25nIGdldFRleFBhcmFtZXRlcmkoaW4g
dW5zaWduZWQgbG9uZyB0YXJnZXQsIGluIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBX
ZWJHTEludEFycmF5IGdldFRleFBhcmFtZXRlcml2KGluIHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBp
biB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLQotICAgICAgICBmbG9hdCBnZXRVbmlmb3JtZihpbiBX
ZWJHTFByb2dyYW0gcHJvZ3JhbSwgaW4gbG9uZyBsb2NhdGlvbikgcmFpc2VzKERPTUV4Y2VwdGlv
bik7Ci0gICAgICAgIFdlYkdMRmxvYXRBcnJheSBnZXRVbmlmb3JtZnYoaW4gV2ViR0xQcm9ncmFt
IHByb2dyYW0sIGluIGxvbmcgbG9jYXRpb24pIHJhaXNlcyhET01FeGNlcHRpb24pOwotICAgICAg
ICBsb25nIGdldFVuaWZvcm1pKGluIFdlYkdMUHJvZ3JhbSBwcm9ncmFtLCBpbiBsb25nIGxvY2F0
aW9uKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKLSAgICAgICAgV2ViR0xJbnRBcnJheSBnZXRVbmlm
b3JtaXYoaW4gV2ViR0xQcm9ncmFtIHByb2dyYW0sIGluIGxvbmcgbG9jYXRpb24pIHJhaXNlcyhE
T01FeGNlcHRpb24pOworICAgICAgICAvLyBhbnkgZ2V0VGV4UGFyYW1ldGVyKGluIHVuc2lnbmVk
IGxvbmcgdGFyZ2V0LCBpbiB1bnNpZ25lZCBsb25nIHBuYW1lKSByYWlzZXMoRE9NRXhjZXB0aW9u
KTsKKyAgICAgICAgW0N1c3RvbV0gdm9pZCBnZXRUZXhQYXJhbWV0ZXIoKTsKKworICAgICAgICAv
LyBhbnkgZ2V0VW5pZm9ybShpbiBXZWJHTFByb2dyYW0gcHJvZ3JhbSwgaW4gbG9uZyBsb2NhdGlv
bikgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIFtDdXN0b21dIHZvaWQgZ2V0VW5pZm9y
bSgpOwogICAgICAgICAKICAgICAgICAgbG9uZyBnZXRVbmlmb3JtTG9jYXRpb24oaW4gV2ViR0xQ
cm9ncmFtIHByb2dyYW0sIGluIERPTVN0cmluZyBuYW1lKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsK
IAotICAgICAgICBmbG9hdCBnZXRWZXJ0ZXhBdHRyaWJmKGluIHVuc2lnbmVkIGxvbmcgaW5kZXgs
IGluIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBXZWJHTEZsb2F0QXJyYXkgZ2V0VmVy
dGV4QXR0cmliZnYoaW4gdW5zaWduZWQgbG9uZyBpbmRleCwgaW4gdW5zaWduZWQgbG9uZyBwbmFt
ZSk7Ci0gICAgICAgIGxvbmcgZ2V0VmVydGV4QXR0cmliaShpbiB1bnNpZ25lZCBsb25nIGluZGV4
LCBpbiB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgV2ViR0xJbnRBcnJheSBnZXRWZXJ0
ZXhBdHRyaWJpdihpbiB1bnNpZ25lZCBsb25nIGluZGV4LCBpbiB1bnNpZ25lZCBsb25nIHBuYW1l
KTsKKyAgICAgICAgLy8gYW55IGdldFZlcnRleEF0dHJpYihpbiB1bnNpZ25lZCBsb25nIGluZGV4
LCBpbiB1bnNpZ25lZCBsb25nIHBuYW1lKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAg
W0N1c3RvbV0gdm9pZCBnZXRWZXJ0ZXhBdHRyaWIoKTsKIAogICAgICAgICBsb25nIGdldFZlcnRl
eEF0dHJpYk9mZnNldChpbiB1bnNpZ25lZCBsb25nIGluZGV4LCBpbiB1bnNpZ25lZCBsb25nIHBu
YW1lKTsKIApJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRleHR1cmUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmNwcAkocmV2aXNpb24g
NTEzMzUpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDYgKzM3LDExIEBAIFBhc3NSZWZQdHI8V2ViR0xUZXh0dXJlPiBXZWJHTFRl
eHR1cmU6OmMKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdMVGV4dHVyZShjdHgpKTsKIH0K
IAorUGFzc1JlZlB0cjxXZWJHTFRleHR1cmU+IFdlYkdMVGV4dHVyZTo6Y3JlYXRlKFdlYkdMUmVu
ZGVyaW5nQ29udGV4dCogY3R4LCBQbGF0Zm9ybTNET2JqZWN0IG9iaikKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFdlYkdMVGV4dHVyZShjdHgsIG9iaikpOworfQorCiBXZWJHTFRleHR1cmU6
OldlYkdMVGV4dHVyZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGN0eCkKICAgICA6IENhbnZhc09i
amVjdChjdHgpCiAgICAgLCBjdWJlTWFwUldyYXBNb2RlSW5pdGlhbGl6ZWQoZmFsc2UpCkBAIC00
NCw2ICs0OSwxMyBAQCBXZWJHTFRleHR1cmU6OldlYkdMVGV4dHVyZShXZWJHTFJlbmRlcmluCiAg
ICAgc2V0T2JqZWN0KGNvbnRleHQoKS0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+Y3JlYXRlVGV4dHVy
ZSgpKTsKIH0KIAorV2ViR0xUZXh0dXJlOjpXZWJHTFRleHR1cmUoV2ViR0xSZW5kZXJpbmdDb250
ZXh0KiBjdHgsIFBsYXRmb3JtM0RPYmplY3Qgb2JqKQorICAgIDogQ2FudmFzT2JqZWN0KGN0eCkK
KyAgICAsIGN1YmVNYXBSV3JhcE1vZGVJbml0aWFsaXplZChmYWxzZSkKK3sKKyAgICBzZXRPYmpl
Y3Qob2JqLCBmYWxzZSk7Cit9CisKIHZvaWQgV2ViR0xUZXh0dXJlOjpfZGVsZXRlT2JqZWN0KFBs
YXRmb3JtM0RPYmplY3Qgb2JqZWN0KQogewogICAgIGNvbnRleHQoKS0+Z3JhcGhpY3NDb250ZXh0
M0QoKS0+ZGVsZXRlVGV4dHVyZShvYmplY3QpOwpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFRleHR1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVGV4
dHVyZS5oCShyZXZpc2lvbiA1MTMzNSkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUZXh0
dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkdMVGV4dHVyZT4gY3Jl
YXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCopOwogICAgIAorICAgICAgICAvLyBGb3IgcXVlcnlp
bmcgcHJldmlvdXNseSBjcmVhdGVkIG9iamVjdHMgdmlhIGUuZy4gZ2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyCisgICAgICAgIC8vIEZJWE1FOiBzaG91bGQgY29uc2lkZXIgY2Fub25p
Y2FsaXppbmcgdGhlc2Ugb2JqZWN0cworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJHTFRl
eHR1cmU+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqLCBQbGF0Zm9ybTNET2JqZWN0KTsK
KwogICAgICAgICBib29sIGlzQ3ViZU1hcFJXcmFwTW9kZUluaXRpYWxpemVkKCkgewogICAgICAg
ICAgICAgcmV0dXJuIGN1YmVNYXBSV3JhcE1vZGVJbml0aWFsaXplZDsKICAgICAgICAgfQpAQCAt
NDksNiArNTMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAg
ICAgIFdlYkdMVGV4dHVyZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqKTsKKyAgICAgICAgV2ViR0xU
ZXh0dXJlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCosIFBsYXRmb3JtM0RPYmplY3QpOwogCiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBfZGVsZXRlT2JqZWN0KFBsYXRmb3JtM0RPYmplY3QpOwogCkluZGV4
OiBXZWJDb3JlL21hbnVhbC10ZXN0cy93ZWJnbC9yZXNvdXJjZXMvdXRpbHMzZC5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL21hbnVhbC10ZXN0cy93ZWJnbC9yZXNvdXJjZXMvdXRpbHMzZC5qcwko
cmV2aXNpb24gNTEzMzUpCisrKyBXZWJDb3JlL21hbnVhbC10ZXN0cy93ZWJnbC9yZXNvdXJjZXMv
dXRpbHMzZC5qcwkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBmdW5jdGlvbiBpbml0
V2ViR0woY2FudmFzTmFtZSwgdnNoYWRlciwgCiAgICAgZ2wubGlua1Byb2dyYW0oZ2wucHJvZ3Jh
bSk7CiAKICAgICAvLyBDaGVjayB0aGUgbGluayBzdGF0dXMKLSAgICB2YXIgbGlua2VkID0gZ2wu
Z2V0UHJvZ3JhbWkoZ2wucHJvZ3JhbSwgZ2wuTElOS19TVEFUVVMpOworICAgIHZhciBsaW5rZWQg
PSBnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKGdsLnByb2dyYW0sIGdsLkxJTktfU1RBVFVTKTsKICAg
ICBpZiAoIWxpbmtlZCkgewogICAgICAgICAvLyBzb21ldGhpbmcgd2VudCB3cm9uZyB3aXRoIHRo
ZSBsaW5rCiAgICAgICAgIHZhciBlcnJvciA9IGdsLmdldFByb2dyYW1JbmZvTG9nIChnbC5wcm9n
cmFtKTsKQEAgLTEwNSw3ICsxMDUsNyBAQCBmdW5jdGlvbiBsb2FkU2hhZGVyKGN0eCwgc2hhZGVy
SWQpCiAgICAgY3R4LmNvbXBpbGVTaGFkZXIoc2hhZGVyKTsKIAogICAgIC8vIENoZWNrIHRoZSBj
b21waWxlIHN0YXR1cwotICAgIHZhciBjb21waWxlZCA9IGN0eC5nZXRTaGFkZXJpKHNoYWRlciwg
Y3R4LkNPTVBJTEVfU1RBVFVTKTsKKyAgICB2YXIgY29tcGlsZWQgPSBjdHguZ2V0U2hhZGVyUGFy
YW1ldGVyKHNoYWRlciwgY3R4LkNPTVBJTEVfU1RBVFVTKTsKICAgICBpZiAoIWNvbXBpbGVkKSB7
CiAgICAgICAgIC8vIFNvbWV0aGluZyB3ZW50IHdyb25nIGR1cmluZyBjb21waWxhdGlvbjsgZ2V0
IHRoZSBlcnJvcgogICAgICAgICB2YXIgZXJyb3IgPSBjdHguZ2V0U2hhZGVySW5mb0xvZyhzaGFk
ZXIpOwpAQCAtNTI4LDQgKzUyOCwzIEBAIEZyYW1lcmF0ZS5wcm90b3R5cGUuc25hcHNob3QgPSBm
dW5jdGlvbigKICAgICAgICAgdGhpcy5yZW5kZXJUaW1lID0gbmV3VGltZTsKICAgICB9CiB9Ci0K
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgJ
KHJldmlzaW9uIDUxMzM1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQzRC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NTgsMjYgKzQ1OCwyNSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICAgICAgaW50ICBnZXRBdHRyaWJMb2NhdGlvbihXZWJHTFByb2dyYW0q
LCBjb25zdCBTdHJpbmcmIG5hbWUpOwogCi0gICAgICAgIGJvb2wgZ2V0Qm9vbGVhbih1bnNpZ25l
ZCBsb25nIHBuYW1lKTsKLSAgICAgICAgUGFzc1JlZlB0cjxXZWJHTFVuc2lnbmVkQnl0ZUFycmF5
PiBnZXRCb29sZWFudih1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgaW50IGdldEJ1ZmZl
clBhcmFtZXRlcmkodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwot
ICAgICAgICBQYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IGdldEJ1ZmZlclBhcmFtZXRlcml2KHVu
c2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKTsKKyAgICAgICAgdm9pZCBn
ZXRCb29sZWFudih1bnNpZ25lZCBsb25nIHBuYW1lLCB1bnNpZ25lZCBjaGFyKiB2YWx1ZSk7CisK
KyAgICAgICAgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdldCwg
dW5zaWduZWQgbG9uZyBwbmFtZSwgaW50KiB2YWx1ZSk7CiAKICAgICAgICAgdW5zaWduZWQgbG9u
ZyBnZXRFcnJvcigpOwogCi0gICAgICAgIGZsb2F0IGdldEZsb2F0KHVuc2lnbmVkIGxvbmcgcG5h
bWUpOwotICAgICAgICBQYXNzUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gZ2V0RmxvYXR2KHVuc2ln
bmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBpbnQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFy
YW1ldGVyaSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCB1
bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBn
ZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdldCwg
dW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAg
aW50IGdldEludGVnZXIodW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFBhc3NSZWZQdHI8
V2ViR0xJbnRBcnJheT4gZ2V0SW50ZWdlcnYodW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAg
IGludCBnZXRQcm9ncmFtaShXZWJHTFByb2dyYW0qLCB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAg
ICAgICAgUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBnZXRQcm9ncmFtaXYoV2ViR0xQcm9ncmFt
KiwgdW5zaWduZWQgbG9uZyBwbmFtZSk7CisgICAgICAgIHZvaWQgZ2V0RmxvYXR2KHVuc2lnbmVk
IGxvbmcgcG5hbWUsIGZsb2F0KiB2YWx1ZSk7CisKKyAgICAgICAgdm9pZCBnZXRGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnRQYXJhbWV0ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9u
ZyBhdHRhY2htZW50LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKTsKKworICAgICAg
ICB2b2lkIGdldEludGVnZXJ2KHVuc2lnbmVkIGxvbmcgcG5hbWUsIGludCogdmFsdWUpOworCisg
ICAgICAgIHZvaWQgZ2V0UHJvZ3JhbWl2KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgdW5zaWduZWQg
bG9uZyBwbmFtZSwgaW50KiB2YWx1ZSk7CisKICAgICAgICAgU3RyaW5nIGdldFByb2dyYW1JbmZv
TG9nKFdlYkdMUHJvZ3JhbSopOwotICAgICAgICBpbnQgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVy
aSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFBh
c3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYodW5zaWdu
ZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBpbnQgZ2V0U2hh
ZGVyaShXZWJHTFNoYWRlciosIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBQYXNzUmVm
UHRyPFdlYkdMSW50QXJyYXk+IGdldFNoYWRlcml2KFdlYkdMU2hhZGVyKiwgdW5zaWduZWQgbG9u
ZyBwbmFtZSk7CisKKyAgICAgICAgdm9pZCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdih1bnNp
Z25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgaW50KiB2YWx1ZSk7CisKKyAg
ICAgICAgdm9pZCBnZXRTaGFkZXJpdihXZWJHTFNoYWRlciosIHVuc2lnbmVkIGxvbmcgcG5hbWUs
IGludCogdmFsdWUpOwogCiAgICAgICAgIFN0cmluZyBnZXRTaGFkZXJJbmZvTG9nKFdlYkdMU2hh
ZGVyKik7CiAKQEAgLTQ4NiwyNCArNDg1LDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAg
ICAgICBTdHJpbmcgZ2V0U2hhZGVyU291cmNlKFdlYkdMU2hhZGVyKik7CiAgICAgICAgIFN0cmlu
ZyBnZXRTdHJpbmcodW5zaWduZWQgbG9uZyBuYW1lKTsKLSAgICAgICAgCi0gICAgICAgIGZsb2F0
IGdldFRleFBhcmFtZXRlcmYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5h
bWUpOwotICAgICAgICBQYXNzUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gZ2V0VGV4UGFyYW1ldGVy
ZnYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBp
bnQgZ2V0VGV4UGFyYW1ldGVyaSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBw
bmFtZSk7Ci0gICAgICAgIFBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gZ2V0VGV4UGFyYW1ldGVy
aXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotCi0gICAgICAg
IGZsb2F0IGdldFVuaWZvcm1mKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBsb2NhdGlvbik7
Ci0gICAgICAgIFBhc3NSZWZQdHI8V2ViR0xGbG9hdEFycmF5PiBnZXRVbmlmb3JtZnYoV2ViR0xQ
cm9ncmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uKTsKLSAgICAgICAgaW50IGdldFVuaWZvcm1p
KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBsb2NhdGlvbik7Ci0gICAgICAgIFBhc3NSZWZQ
dHI8V2ViR0xJbnRBcnJheT4gZ2V0VW5pZm9ybWl2KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9u
ZyBsb2NhdGlvbik7CisKKyAgICAgICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJmdih1bnNpZ25lZCBs
b25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgZmxvYXQqIHZhbHVlKTsKKyAgICAgICAg
dm9pZCBnZXRUZXhQYXJhbWV0ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9u
ZyBwbmFtZSwgaW50KiB2YWx1ZSk7CisKKyAgICAgICAgdm9pZCBnZXRVbmlmb3JtZnYoV2ViR0xQ
cm9ncmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uLCBmbG9hdCogdmFsdWUpOworICAgICAgICB2
b2lkIGdldFVuaWZvcm1pdihXZWJHTFByb2dyYW0qIHByb2dyYW0sIGxvbmcgbG9jYXRpb24sIGlu
dCogdmFsdWUpOwogCiAgICAgICAgIGxvbmcgZ2V0VW5pZm9ybUxvY2F0aW9uKFdlYkdMUHJvZ3Jh
bSosIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAKLSAgICAgICAgZmxvYXQgZ2V0VmVydGV4QXR0cmli
Zih1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgUGFz
c1JlZlB0cjxXZWJHTEZsb2F0QXJyYXk+IGdldFZlcnRleEF0dHJpYmZ2KHVuc2lnbmVkIGxvbmcg
aW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBpbnQgZ2V0VmVydGV4QXR0cmli
aSh1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgUGFz
c1JlZlB0cjxXZWJHTEludEFycmF5PiBnZXRWZXJ0ZXhBdHRyaWJpdih1bnNpZ25lZCBsb25nIGlu
ZGV4LCB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgCisgICAgICAgIHZvaWQgZ2V0VmVy
dGV4QXR0cmliZnYodW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgZmxv
YXQqIHZhbHVlKTsKKyAgICAgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJpdih1bnNpZ25lZCBsb25n
IGluZGV4LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKTsKKwogICAgICAgICBsb25n
IGdldFZlcnRleEF0dHJpYk9mZnNldCh1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25n
IHBuYW1lKTsKIAogICAgICAgICB2b2lkIGhpbnQodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2ln
bmVkIGxvbmcgbW9kZSk7CkBAIC02NDMsNCArNjM2LDMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gR3JhcGhpY3NDb250ZXh0M0RfaAot
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1h
Yy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhp
Y3NDb250ZXh0M0RNYWMuY3BwCShyZXZpc2lvbiA1MTMzNSkKKysrIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Mjc3LDcgKzI3Nyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRGcmFtZWJ1ZmZlcigK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRSZW5kZXJidWZmZXIodW5zaWduZWQgbG9uZyB0
YXJnZXQsIFdlYkdMUmVuZGVyYnVmZmVyKiByZW5kZXJidWZmZXIpCiB7CiAgICAgZW5zdXJlQ29u
dGV4dChtX2NvbnRleHRPYmopOwotICAgIDo6Z2xCaW5kQnVmZmVyKHRhcmdldCwgcmVuZGVyYnVm
ZmVyID8gKEdMdWludCkgcmVuZGVyYnVmZmVyLT5vYmplY3QoKSA6IDApOworICAgIDo6Z2xCaW5k
UmVuZGVyYnVmZmVyRVhUKHRhcmdldCwgcmVuZGVyYnVmZmVyID8gKEdMdWludCkgcmVuZGVyYnVm
ZmVyLT5vYmplY3QoKSA6IDApOwogfQogCiAKQEAgLTk1MiwzMjEgKzk1Miw0MCBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjp2aWV3cG9ydChsb25nIHgsCiAgICAgOjpnbFZpZXdwb3J0KHN0YXRp
Y19jYXN0PEdMaW50Pih4KSwgc3RhdGljX2Nhc3Q8R0xpbnQ+KHkpLCBzdGF0aWNfY2FzdDxHTHNp
emVpPih3aWR0aCksIHN0YXRpY19jYXN0PEdMc2l6ZWk+KGhlaWdodCkpOwogfQogCi1zdGF0aWMg
aW50IHNpemVGb3JHZXRQYXJhbSh1bnNpZ25lZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0Qm9vbGVhbnYodW5zaWduZWQgbG9uZyBwbmFtZSwgdW5zaWduZWQgY2hhciog
dmFsdWUpCiB7Ci0gICAgc3dpdGNoKHBuYW1lKSB7Ci0gICAgICAgIGNhc2UgR0xfQUNUSVZFX1RF
WFRVUkU6ICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfQUxJQVNF
RF9MSU5FX1dJRFRIX1JBTkdFOiAgICAgICAgcmV0dXJuIDI7Ci0gICAgICAgIGNhc2UgR0xfQUxJ
QVNFRF9QT0lOVF9TSVpFX1JBTkdFOiAgICAgICAgcmV0dXJuIDI7Ci0gICAgICAgIGNhc2UgR0xf
QUxQSEFfQklUUzogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2Ug
R0xfQVJSQVlfQlVGRkVSX0JJTkRJTkc6ICAgICAgICAgICAgcmV0dXJuIDE7IC8vICgqIGFjdHVh
bGx5IGEgV2ViR0xCdWZmZXIqKQotICAgICAgICBjYXNlIEdMX0JMRU5EOiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX0JMRU5EX0NPTE9SOiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiA0OwotICAgICAgICBjYXNlIEdMX0JMRU5EX0RTVF9BTFBI
QTogICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX0JMRU5EX0RTVF9S
R0I6ICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX0JMRU5EX0VR
VUFUSU9OX0FMUEhBOiAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX0JMRU5E
X0VRVUFUSU9OX1JHQjogICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX0JM
RU5EX1NSQ19BTFBIQTogICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdM
X0JMRU5EX1NSQ19SR0I6ICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNl
IEdMX0JMVUVfQklUUzogICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBj
YXNlIEdMX0NPTE9SX0NMRUFSX1ZBTFVFOiAgICAgICAgICAgICAgIHJldHVybiA0OwotICAgICAg
ICBjYXNlIEdMX0NPTE9SX1dSSVRFTUFTSzogICAgICAgICAgICAgICAgIHJldHVybiA0OwotICAg
ICAgICBjYXNlIEdMX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTOiAgICAgIHJldHVybiBHTF9O
VU1fQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFM7Ci0gICAgICAgIGNhc2UgR0xfQ1VMTF9GQUNF
OiAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfQ1VMTF9G
QUNFX01PREU6ICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfQ1VS
UkVOVF9QUk9HUkFNOiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7IC8vICgqIGFjdHVhbGx5IGEg
V2ViR0xQcm9ncmFtKikKLSAgICAgICAgY2FzZSBHTF9ERVBUSF9CSVRTOiAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9ERVBUSF9DTEVBUl9WQUxVRTogICAg
ICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9ERVBUSF9GVU5DOiAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9ERVBUSF9SQU5HRTogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gMjsKLSAgICAgICAgY2FzZSBHTF9ERVBUSF9URVNUOiAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9ERVBUSF9XUklU
RU1BU0s6ICAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9ESVRIRVI6
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9FTEVN
RU5UX0FSUkFZX0JVRkZFUl9CSU5ESU5HOiAgICByZXR1cm4gMTsgLy8gKCogYWN0dWFsbHkgYSBX
ZWJHTEJ1ZmZlciopCi0gICAgICAgIGNhc2UgR0xfRlJBTUVCVUZGRVJfQklORElOR19FWFQ6ICAg
ICAgICAgcmV0dXJuIDE7IC8vICgqIGFjdHVhbGx5IGEgV2ViR0xGcmFtZWJ1ZmZlciopCi0gICAg
ICAgIGNhc2UgR0xfRlJPTlRfRkFDRTogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0g
ICAgICAgIGNhc2UgR0xfR0VORVJBVEVfTUlQTUFQX0hJTlQ6ICAgICAgICAgICAgcmV0dXJuIDE7
Ci0gICAgICAgIGNhc2UgR0xfR1JFRU5fQklUUzogICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IDE7Ci0gICAgICAgICAgICAvL2Nhc2UgR0xfSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9GT1JN
QVQ6cmV0dXJuIDE7Ci0gICAgICAgICAgICAvL2Nhc2UgR0xfSU1QTEVNRU5UQVRJT05fQ09MT1Jf
UkVBRF9UWVBFOiAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfTElORV9XSURUSDogICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfTUFYX0NPTUJJTkVEX1RF
WFRVUkVfSU1BR0VfVU5JVFM6cmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfTUFYX0NVQkVfTUFQ
X1RFWFRVUkVfU0laRTogICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICAvL2Nhc2UgR0xfTUFY
X0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUzogICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xf
TUFYX1JFTkRFUkJVRkZFUl9TSVpFX0VYVDogICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2Ug
R0xfTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFM6ICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNh
c2UgR0xfTUFYX1RFWFRVUkVfU0laRTogICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAg
ICAgICAvL2Nhc2UgR0xfTUFYX1ZBUllJTkdfVkVDVE9SUzogICAgICAgICAgICAgcmV0dXJuIDE7
Ci0gICAgICAgIGNhc2UgR0xfTUFYX1ZFUlRFWF9BVFRSSUJTOiAgICAgICAgICAgICAgcmV0dXJu
IDE7Ci0gICAgICAgIGNhc2UgR0xfTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTOiAgcmV0
dXJuIDE7Ci0gICAgICAgICAgICAvL2Nhc2UgR0xfTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlM6
ICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfTUFYX1ZJRVdQT1JUX0RJTVM6ICAgICAg
ICAgICAgICAgcmV0dXJuIDI7Ci0gICAgICAgIGNhc2UgR0xfTlVNX0NPTVBSRVNTRURfVEVYVFVS
RV9GT1JNQVRTOiAgcmV0dXJuIDE7Ci0gICAgICAgICAgICAvL2Nhc2UgR0xfTlVNX1NIQURFUl9C
SU5BUllfRk9STUFUUzogICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfUEFDS19BTElH
Tk1FTlQ6ICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfUE9MWUdP
Tl9PRkZTRVRfRkFDVE9SOiAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfUE9M
WUdPTl9PRkZTRVRfRklMTDogICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xf
UE9MWUdPTl9PRkZTRVRfVU5JVFM6ICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2Ug
R0xfUkVEX0JJVFM6ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNh
c2UgR0xfUkVOREVSQlVGRkVSX0JJTkRJTkdfRVhUOiAgICAgICAgcmV0dXJuIDE7IC8vICgqIGFj
dHVhbGx5IGEgV2ViR0xSZW5kZXJidWZmZXIqKQotICAgICAgICBjYXNlIEdMX1NBTVBMRV9CVUZG
RVJTOiAgICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX1NBTVBMRV9D
T1ZFUkFHRV9JTlZFUlQ6ICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX1NBTVBM
RV9DT1ZFUkFHRV9WQUxVRTogICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX1NB
TVBMRVM6ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdM
X1NDSVNTT1JfQk9YOiAgICAgICAgICAgICAgICAgICAgIHJldHVybiA0OwotICAgICAgICBjYXNl
IEdMX1NDSVNTT1JfVEVTVDogICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAg
ICAgLy9jYXNlIEdMX1NIQURFUl9CSU5BUllfRk9STUFUUzogICAgICAgICAgIHJldHVybiBHTF9O
VU1fU0hBREVSX0JJTkFSWV9GT1JNQVRTOwotICAgICAgICAgICAgLy9jYXNlIEdMX1NIQURFUl9D
T01QSUxFUjogICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX1NURU5D
SUxfQkFDS19GQUlMOiAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX1NU
RU5DSUxfQkFDS19GVU5DOiAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdM
X1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX0ZBSUw6ICAgIHJldHVybiAxOwotICAgICAgICBjYXNl
IEdMX1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX1BBU1M6ICAgIHJldHVybiAxOwotICAgICAgICBj
YXNlIEdMX1NURU5DSUxfQkFDS19SRUY6ICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAg
ICBjYXNlIEdMX1NURU5DSUxfQkFDS19WQUxVRV9NQVNLOiAgICAgICAgIHJldHVybiAxOwotICAg
ICAgICBjYXNlIEdMX1NURU5DSUxfQkFDS19XUklURU1BU0s6ICAgICAgICAgIHJldHVybiAxOwot
ICAgICAgICBjYXNlIEdMX1NURU5DSUxfQklUUzogICAgICAgICAgICAgICAgICAgIHJldHVybiAx
OwotICAgICAgICBjYXNlIEdMX1NURU5DSUxfQ0xFQVJfVkFMVUU6ICAgICAgICAgICAgIHJldHVy
biAxOwotICAgICAgICBjYXNlIEdMX1NURU5DSUxfRkFJTDogICAgICAgICAgICAgICAgICAgIHJl
dHVybiAxOwotICAgICAgICBjYXNlIEdMX1NURU5DSUxfRlVOQzogICAgICAgICAgICAgICAgICAg
IHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX1NURU5DSUxfUEFTU19ERVBUSF9GQUlMOiAgICAg
ICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX1NURU5DSUxfUEFTU19ERVBUSF9QQVNTOiAg
ICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX1NURU5DSUxfUkVGOiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX1NURU5DSUxfVEVTVDogICAgICAg
ICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX1NURU5DSUxfVkFMVUVfTUFT
SzogICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX1NURU5DSUxfV1JJVEVN
QVNLOiAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX1NVQlBJWEVMX0JJ
VFM6ICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX1RFWFRVUkVf
QklORElOR18yRDogICAgICAgICAgICAgIHJldHVybiAxOyAvLyAoKiBhY3R1YWxseSBhIFdlYkdM
VGV4dHVyZSopCi0gICAgICAgIGNhc2UgR0xfVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQOiAgICAg
ICAgcmV0dXJuIDE7IC8vICgqIGFjdHVhbGx5IGEgV2ViR0xUZXh0dXJlKikKLSAgICAgICAgY2Fz
ZSBHTF9VTlBBQ0tfQUxJR05NRU5UOiAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAg
Y2FzZSBHTF9WSUVXUE9SVDogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gNDsKLSAgICB9
Ci0gICAgCi0gICAgcmV0dXJuIC0xOwotfQotCi1ib29sIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRC
b29sZWFuKHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgaW50IHNpemUgPSBzaXplRm9yR2V0
UGFyYW0ocG5hbWUpOwotICAgIGlmIChzaXplIDwgMSkgCi0gICAgICAgIHJldHVybiAwOwotICAg
IAogICAgIGVuc3VyZUNvbnRleHQobV9jb250ZXh0T2JqKTsKLSAgICAKLSAgICBib29sIGlzQWxs
b2NlZCA9IGZhbHNlOwotICAgIEdMYm9vbGVhbiBidWZbNF07Ci0gICAgR0xib29sZWFuKiBwYnVm
ID0gYnVmOwotICAgICAgICAgICAgCi0gICAgaWYgKHNpemUgPiA0KSB7Ci0gICAgICAgIHBidWYg
PSAoR0xib29sZWFuKikgbWFsbG9jKHNpemUgKiBzaXplb2YoR0xib29sZWFuKSk7Ci0gICAgICAg
IGlzQWxsb2NlZCA9IHRydWU7Ci0gICAgfQotICAgICAgICAgICAgCi0gICAgOjpnbEdldEJvb2xl
YW52KHBuYW1lLCBwYnVmKTsKLSAgICAKLSAgICBib29sIHZhbHVlID0gcGJ1ZlswXTsKLQotICAg
IGlmIChpc0FsbG9jZWQpCi0gICAgICAgIGZyZWUocGJ1Zik7Ci0gICAgCi0gICAgcmV0dXJuIHZh
bHVlOworICAgIDo6Z2xHZXRCb29sZWFudihwbmFtZSwgdmFsdWUpOwogfQogCi1QYXNzUmVmUHRy
PFdlYkdMVW5zaWduZWRCeXRlQXJyYXk+IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRCb29sZWFudih1
bnNpZ25lZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QnVmZmVyUGFy
YW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIGludCog
dmFsdWUpCiB7Ci0gICAgaW50IHNpemUgPSBzaXplRm9yR2V0UGFyYW0ocG5hbWUpOwotICAgIGlm
IChzaXplIDwgMSkgCi0gICAgICAgIHJldHVybiAwOwotICAgIAogICAgIGVuc3VyZUNvbnRleHQo
bV9jb250ZXh0T2JqKTsKLSAgICAKLSAgICBSZWZQdHI8V2ViR0xVbnNpZ25lZEJ5dGVBcnJheT4g
YXJyYXkgPSBXZWJHTFVuc2lnbmVkQnl0ZUFycmF5OjpjcmVhdGUoc2l6ZSk7Ci0gICAgYm9vbCBp
c0FsbG9jZWQgPSBmYWxzZTsKLSAgICBHTGJvb2xlYW4gYnVmWzRdOwotICAgIEdMYm9vbGVhbiog
cGJ1ZiA9IGJ1ZjsKLSAgICAgICAgICAgIAotICAgIGlmIChzaXplID4gNCkgewotICAgICAgICBw
YnVmID0gKEdMYm9vbGVhbiopIG1hbGxvYyhzaXplICogc2l6ZW9mKEdMYm9vbGVhbikpOwotICAg
ICAgICBpc0FsbG9jZWQgPSB0cnVlOwotICAgIH0KLSAgICAgICAgICAgIAotICAgIDo6Z2xHZXRC
b29sZWFudihwbmFtZSwgcGJ1Zik7Ci0gICAgICAgICAgICAKLSAgICBmb3IgKGludCBpID0gMDsg
aSA8IHNpemU7ICsraSkKLSAgICAgICAgYXJyYXktPnNldChpLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBjaGFyPihwYnVmW2ldKSk7Ci0gICAgICAgICAgICAKLSAgICBpZiAoaXNBbGxvY2VkKQotICAg
ICAgICBmcmVlKHBidWYpOwotICAgIAotICAgIHJldHVybiBhcnJheTsKKyAgICA6OmdsR2V0QnVm
ZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgdmFsdWUpOwogfQogCi1mbG9hdCBHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0RmxvYXQodW5zaWduZWQgbG9uZyBwbmFtZSkKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldEZsb2F0dih1bnNpZ25lZCBsb25nIHBuYW1lLCBmbG9hdCogdmFsdWUpCiB7
Ci0gICAgaW50IHNpemUgPSBzaXplRm9yR2V0UGFyYW0ocG5hbWUpOwotICAgIGlmIChzaXplIDwg
MSkgCi0gICAgICAgIHJldHVybiAwOwotICAgIAogICAgIGVuc3VyZUNvbnRleHQobV9jb250ZXh0
T2JqKTsKLSAgICAKLSAgICBib29sIGlzQWxsb2NlZCA9IGZhbHNlOwotICAgIEdMZmxvYXQgYnVm
WzRdOwotICAgIEdMZmxvYXQqIHBidWYgPSBidWY7Ci0gICAgICAgICAgICAKLSAgICBpZiAoc2l6
ZSA+IDQpIHsKLSAgICAgICAgcGJ1ZiA9IChHTGZsb2F0KikgbWFsbG9jKHNpemUgKiBzaXplb2Yo
R0xmbG9hdCkpOwotICAgICAgICBpc0FsbG9jZWQgPSB0cnVlOwotICAgIH0KLSAgICAgICAgICAg
IAotICAgIDo6Z2xHZXRGbG9hdHYocG5hbWUsIHBidWYpOwotICAgIAotICAgIGZsb2F0IHZhbHVl
ID0gcGJ1ZlswXTsKLQotICAgIGlmIChpc0FsbG9jZWQpCi0gICAgICAgIGZyZWUocGJ1Zik7Ci0g
ICAgCi0gICAgcmV0dXJuIHZhbHVlOworICAgIDo6Z2xHZXRGbG9hdHYocG5hbWUsIHZhbHVlKTsK
IH0KIAotUGFzc1JlZlB0cjxXZWJHTEZsb2F0QXJyYXk+IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRG
bG9hdHYodW5zaWduZWQgbG9uZyBwbmFtZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZy
YW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNp
Z25lZCBsb25nIGF0dGFjaG1lbnQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIGludCogdmFsdWUpCiB7
Ci0gICAgaW50IHNpemUgPSBzaXplRm9yR2V0UGFyYW0ocG5hbWUpOwotICAgIGlmIChzaXplIDwg
MSkgCi0gICAgICAgIHJldHVybiAwOwotICAgIAogICAgIGVuc3VyZUNvbnRleHQobV9jb250ZXh0
T2JqKTsKLSAgICAKLSAgICBSZWZQdHI8V2ViR0xGbG9hdEFycmF5PiBhcnJheSA9IFdlYkdMRmxv
YXRBcnJheTo6Y3JlYXRlKHNpemUpOwotICAgIGJvb2wgaXNBbGxvY2VkID0gZmFsc2U7Ci0gICAg
R0xmbG9hdCBidWZbNF07Ci0gICAgR0xmbG9hdCogcGJ1ZiA9IGJ1ZjsKLSAgICAgICAgICAgIAot
ICAgIGlmIChzaXplID4gNCkgewotICAgICAgICBwYnVmID0gKEdMZmxvYXQqKSBtYWxsb2Moc2l6
ZSAqIHNpemVvZihHTGZsb2F0KSk7Ci0gICAgICAgIGlzQWxsb2NlZCA9IHRydWU7Ci0gICAgfQot
ICAgICAgICAgICAgCi0gICAgOjpnbEdldEZsb2F0dihwbmFtZSwgcGJ1Zik7Ci0gICAgICAgICAg
ICAKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgYXJyYXktPnNl
dChpLCBzdGF0aWNfY2FzdDxmbG9hdD4ocGJ1ZltpXSkpOwotICAgICAgICAgICAgCi0gICAgaWYg
KGlzQWxsb2NlZCkKLSAgICAgICAgZnJlZShwYnVmKTsKLSAgICAKLSAgICByZXR1cm4gYXJyYXk7
CisgICAgOjpnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2RVhUKHRhcmdldCwg
YXR0YWNobWVudCwgcG5hbWUsIHZhbHVlKTsKIH0KIAotaW50IEdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRJbnRlZ2VyKHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgaW50IHNpemUgPSBzaXplRm9y
R2V0UGFyYW0ocG5hbWUpOwotICAgIGlmIChzaXplIDwgMSkgCi0gICAgICAgIHJldHVybiAwOwot
ICAgIAotICAgIGVuc3VyZUNvbnRleHQobV9jb250ZXh0T2JqKTsKLSAgICAKLSAgICBib29sIGlz
QWxsb2NlZCA9IGZhbHNlOwotICAgIEdMaW50IGJ1Zls0XTsKLSAgICBHTGludCogcGJ1ZiA9IGJ1
ZjsKLSAgICAgICAgICAgIAotICAgIGlmIChzaXplID4gNCkgewotICAgICAgICBwYnVmID0gKEdM
aW50KikgbWFsbG9jKHNpemUgKiBzaXplb2YoR0xpbnQpKTsKLSAgICAgICAgaXNBbGxvY2VkID0g
dHJ1ZTsKLSAgICB9Ci0gICAgICAgICAgICAKLSAgICA6OmdsR2V0SW50ZWdlcnYocG5hbWUsIHBi
dWYpOwotICAgIAotICAgIGludCB2YWx1ZSA9IHBidWZbMF07Ci0KLSAgICBpZiAoaXNBbGxvY2Vk
KQotICAgICAgICBmcmVlKHBidWYpOwotICAgIAotICAgIHJldHVybiB2YWx1ZTsKLX0KLQotUGFz
c1JlZlB0cjxXZWJHTEludEFycmF5PiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW50ZWdlcnYodW5z
aWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICBpbnQgc2l6ZSA9IHNpemVGb3JHZXRQYXJhbShwbmFt
ZSk7Ci0gICAgaWYgKHNpemUgPCAxKSAKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgZW5z
dXJlQ29udGV4dChtX2NvbnRleHRPYmopOwotICAgIAotICAgIFJlZlB0cjxXZWJHTEludEFycmF5
PiBhcnJheSA9IFdlYkdMSW50QXJyYXk6OmNyZWF0ZShzaXplKTsKLSAgICBib29sIGlzQWxsb2Nl
ZCA9IGZhbHNlOwotICAgIEdMaW50IGJ1Zls0XTsKLSAgICBHTGludCogcGJ1ZiA9IGJ1ZjsKLSAg
ICAgICAgICAgIAotICAgIGlmIChzaXplID4gNCkgewotICAgICAgICBwYnVmID0gKEdMaW50Kikg
bWFsbG9jKHNpemUgKiBzaXplb2YoR0xpbnQpKTsKLSAgICAgICAgaXNBbGxvY2VkID0gdHJ1ZTsK
LSAgICB9Ci0gICAgICAgICAgICAKLSAgICA6OmdsR2V0SW50ZWdlcnYocG5hbWUsIHBidWYpOwot
ICAgICAgICAgICAgCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAg
IGFycmF5LT5zZXQoaSwgc3RhdGljX2Nhc3Q8aW50PihwYnVmW2ldKSk7Ci0gICAgICAgICAgICAK
LSAgICBpZiAoaXNBbGxvY2VkKQotICAgICAgICBmcmVlKHBidWYpOwotICAgIAotICAgIHJldHVy
biBhcnJheTsKLX0KLQotaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRCdWZmZXJQYXJhbWV0ZXJp
KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0SW50ZWdlcnYodW5zaWduZWQgbG9uZyBwbmFtZSwgaW50KiB2YWx1ZSkK
IHsKICAgICBlbnN1cmVDb250ZXh0KG1fY29udGV4dE9iaik7Ci0gICAgR0xpbnQgZGF0YTsKLSAg
ICA6OmdsR2V0QnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgJmRhdGEpOwotICAgIHJl
dHVybiBkYXRhOworICAgIDo6Z2xHZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUpOwogfQogCi1QYXNz
UmVmUHRyPFdlYkdMSW50QXJyYXk+IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRCdWZmZXJQYXJhbWV0
ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSkKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1pdihXZWJHTFByb2dyYW0qIHByb2dyYW0sIHVuc2ln
bmVkIGxvbmcgcG5hbWUsIGludCogdmFsdWUpCiB7CiAgICAgZW5zdXJlQ29udGV4dChtX2NvbnRl
eHRPYmopOwotICAgIFJlZlB0cjxXZWJHTEludEFycmF5PiBhcnJheSA9IFdlYkdMSW50QXJyYXk6
OmNyZWF0ZSgxKTsKLSAgICBHTGludCBkYXRhOwotICAgIDo6Z2xHZXRCdWZmZXJQYXJhbWV0ZXJp
dih0YXJnZXQsIHBuYW1lLCAmZGF0YSk7Ci0gICAgYXJyYXktPnNldCgwLCBzdGF0aWNfY2FzdDxp
bnQ+KGRhdGEpKTsKLSAgICAKLSAgICByZXR1cm4gYXJyYXk7Ci19Ci0KLWludCBHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaSh1bnNpZ25lZCBsb25n
IHRhcmdldCwgdW5zaWduZWQgbG9uZyBhdHRhY2htZW50LCB1bnNpZ25lZCBsb25nIHBuYW1lKQot
ewotICAgIGVuc3VyZUNvbnRleHQobV9jb250ZXh0T2JqKTsKLSAgICBHTGludCBkYXRhOwotICAg
IDo6Z2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdkVYVCh0YXJnZXQsIGF0dGFj
aG1lbnQsIHBuYW1lLCAmZGF0YSk7Ci0gICAgcmV0dXJuIGRhdGE7Ci19Ci0KLVBhc3NSZWZQdHI8
V2ViR0xJbnRBcnJheT4gR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVu
dFBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1l
bnQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRP
YmopOwotICAgIFJlZlB0cjxXZWJHTEludEFycmF5PiBhcnJheSA9IFdlYkdMSW50QXJyYXk6OmNy
ZWF0ZSgxKTsKLSAgICBHTGludCBkYXRhOwotICAgIDo6Z2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXJpdkVYVCh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCAmZGF0YSk7Ci0gICAg
YXJyYXktPnNldCgwLCBzdGF0aWNfY2FzdDxpbnQ+KGRhdGEpKTsKLSAgICAKLSAgICByZXR1cm4g
YXJyYXk7Ci19Ci0KLWludCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbWkoV2ViR0xQcm9n
cmFtKiBwcm9ncmFtLCB1bnNpZ25lZCBsb25nIHBuYW1lKQotewotICAgIGVuc3VyZUNvbnRleHQo
bV9jb250ZXh0T2JqKTsKLSAgICBHTGludCBkYXRhOwotICAgIDo6Z2xHZXRQcm9ncmFtaXYoKEdM
dWludCkgcHJvZ3JhbS0+b2JqZWN0KCksIHBuYW1lLCAmZGF0YSk7Ci0gICAgcmV0dXJuIGRhdGE7
Ci19Ci0KLVBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gR3JhcGhpY3NDb250ZXh0M0Q6OmdldFBy
b2dyYW1pdihXZWJHTFByb2dyYW0qIHByb2dyYW0sIHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0g
ICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwotICAgIFJlZlB0cjxXZWJHTEludEFycmF5
PiBhcnJheSA9IFdlYkdMSW50QXJyYXk6OmNyZWF0ZSgxKTsKLSAgICBHTGludCBkYXRhOwotICAg
IDo6Z2xHZXRQcm9ncmFtaXYoKEdMdWludCkgcHJvZ3JhbS0+b2JqZWN0KCksIHBuYW1lLCAmZGF0
YSk7Ci0gICAgYXJyYXktPnNldCgwLCBzdGF0aWNfY2FzdDxpbnQ+KGRhdGEpKTsKLSAgICAKLSAg
ICByZXR1cm4gYXJyYXk7CisgICAgOjpnbEdldFByb2dyYW1pdigoR0x1aW50KSBwcm9ncmFtLT5v
YmplY3QoKSwgcG5hbWUsIHZhbHVlKTsKIH0KIAogU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRQcm9ncmFtSW5mb0xvZyhXZWJHTFByb2dyYW0qIHByb2dyYW0pCkBAIC0xMjg1LDQ2ICsxMDA0
LDE4IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbUluZm8KICAgICByZXR1
cm4gczsKIH0KIAotaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0
ZXJpKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKQotewotICAgIGVu
c3VyZUNvbnRleHQobV9jb250ZXh0T2JqKTsKLSAgICBHTGludCBkYXRhOwotICAgIDo6Z2xHZXRC
dWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmZGF0YSk7Ci0gICAgcmV0dXJuIGRhdGE7
Ci19Ci0KLVBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gR3JhcGhpY3NDb250ZXh0M0Q6OmdldFJl
bmRlcmJ1ZmZlclBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25n
IHBuYW1lKQotewotICAgIGVuc3VyZUNvbnRleHQobV9jb250ZXh0T2JqKTsKLSAgICBSZWZQdHI8
V2ViR0xJbnRBcnJheT4gYXJyYXkgPSBXZWJHTEludEFycmF5OjpjcmVhdGUoMSk7Ci0gICAgR0xp
bnQgZGF0YTsKLSAgICA6OmdsR2V0QnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgJmRh
dGEpOwotICAgIGFycmF5LT5zZXQoMCwgc3RhdGljX2Nhc3Q8aW50PihkYXRhKSk7Ci0gICAgCi0g
ICAgcmV0dXJuIGFycmF5OwotfQotCi1pbnQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlcmko
V2ViR0xTaGFkZXIqIHNoYWRlciwgdW5zaWduZWQgbG9uZyBwbmFtZSkKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0
LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKQogewotICAgIEFTU0VSVChzaGFkZXIp
OwotICAgIAogICAgIGVuc3VyZUNvbnRleHQobV9jb250ZXh0T2JqKTsKLSAgICBHTGludCBkYXRh
OwotICAgIDo6Z2xHZXRTaGFkZXJpdigoR0x1aW50KSBzaGFkZXItPm9iamVjdCgpLCBwbmFtZSwg
JmRhdGEpOwotICAgIHJldHVybiBkYXRhOworICAgIDo6Z2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0
ZXJpdkVYVCh0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViR0xJbnRB
cnJheT4gR3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlcml2KFdlYkdMU2hhZGVyKiBzaGFkZXIs
IHVuc2lnbmVkIGxvbmcgcG5hbWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJp
dihXZWJHTFNoYWRlciogc2hhZGVyLCB1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKQog
ewogICAgIEFTU0VSVChzaGFkZXIpOwogICAgIAogICAgIGVuc3VyZUNvbnRleHQobV9jb250ZXh0
T2JqKTsKLSAgICBSZWZQdHI8V2ViR0xJbnRBcnJheT4gYXJyYXkgPSBXZWJHTEludEFycmF5Ojpj
cmVhdGUoMSk7Ci0gICAgR0xpbnQgZGF0YTsKLSAgICA6OmdsR2V0U2hhZGVyaXYoKEdMdWludCkg
c2hhZGVyLT5vYmplY3QoKSwgcG5hbWUsICZkYXRhKTsKLSAgICBhcnJheS0+c2V0KDAsIHN0YXRp
Y19jYXN0PGludD4oZGF0YSkpOwotICAgIAotICAgIHJldHVybiBhcnJheTsKKyAgICA6OmdsR2V0
U2hhZGVyaXYoKEdMdWludCkgc2hhZGVyLT5vYmplY3QoKSwgcG5hbWUsIHZhbHVlKTsKIH0KIAog
U3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJJbmZvTG9nKFdlYkdMU2hhZGVyKiBz
aGFkZXIpCkBAIC0xMzYwLDc4ICsxMDUxLDI4IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6
Z2V0U2hhZGVyU291cmMKIH0KIAogCi1mbG9hdCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VGV4UGFy
YW1ldGVyZih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSkKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmdldFRleFBhcmFtZXRlcmZ2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0
LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBmbG9hdCogdmFsdWUpCiB7CiAgICAgZW5zdXJlQ29udGV4
dChtX2NvbnRleHRPYmopOwotICAgIEdMZmxvYXQgZGF0YTsKLSAgICA6OmdsR2V0VGV4UGFyYW1l
dGVyZnYodGFyZ2V0LCBwbmFtZSwgJmRhdGEpOwotICAgIHJldHVybiBkYXRhOworICAgIDo6Z2xH
ZXRUZXhQYXJhbWV0ZXJmdih0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CiB9CiAKLVBhc3NSZWZQdHI8
V2ViR0xGbG9hdEFycmF5PiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VGV4UGFyYW1ldGVyZnYodW5z
aWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRUZXhQYXJhbWV0ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQg
bG9uZyBwbmFtZSwgaW50KiB2YWx1ZSkKIHsKICAgICBlbnN1cmVDb250ZXh0KG1fY29udGV4dE9i
aik7Ci0gICAgUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gYXJyYXkgPSBXZWJHTEZsb2F0QXJyYXk6
OmNyZWF0ZSgxKTsKLSAgICBHTGZsb2F0IGRhdGE7Ci0gICAgOjpnbEdldFRleFBhcmFtZXRlcmZ2
KHRhcmdldCwgcG5hbWUsICZkYXRhKTsKLSAgICBhcnJheS0+c2V0KDAsIHN0YXRpY19jYXN0PGZs
b2F0PihkYXRhKSk7Ci0gICAgCi0gICAgcmV0dXJuIGFycmF5OworICAgIDo6Z2xHZXRUZXhQYXJh
bWV0ZXJpdih0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CiB9CiAKLWludCBHcmFwaGljc0NvbnRleHQz
RDo6Z2V0VGV4UGFyYW1ldGVyaSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBw
bmFtZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1mdihXZWJHTFByb2dyYW0q
IHByb2dyYW0sIGxvbmcgbG9jYXRpb24sIGZsb2F0KiB2YWx1ZSkKIHsKICAgICBlbnN1cmVDb250
ZXh0KG1fY29udGV4dE9iaik7Ci0gICAgR0xpbnQgZGF0YTsKLSAgICA6OmdsR2V0VGV4UGFyYW1l
dGVyaXYodGFyZ2V0LCBwbmFtZSwgJmRhdGEpOwotICAgIHJldHVybiBkYXRhOworICAgIDo6Z2xH
ZXRVbmlmb3JtZnYoKEdMdWludCkgcHJvZ3JhbS0+b2JqZWN0KCksIGxvY2F0aW9uLCB2YWx1ZSk7
CiB9CiAKLVBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gR3JhcGhpY3NDb250ZXh0M0Q6OmdldFRl
eFBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKQor
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWl2KFdlYkdMUHJvZ3JhbSogcHJvZ3Jh
bSwgbG9uZyBsb2NhdGlvbiwgaW50KiB2YWx1ZSkKIHsKICAgICBlbnN1cmVDb250ZXh0KG1fY29u
dGV4dE9iaik7Ci0gICAgUmVmUHRyPFdlYkdMSW50QXJyYXk+IGFycmF5ID0gV2ViR0xJbnRBcnJh
eTo6Y3JlYXRlKDEpOwotICAgIEdMaW50IGRhdGE7Ci0gICAgOjpnbEdldFRleFBhcmFtZXRlcml2
KHRhcmdldCwgcG5hbWUsICZkYXRhKTsKLSAgICBhcnJheS0+c2V0KDAsIHN0YXRpY19jYXN0PGlu
dD4oZGF0YSkpOwotICAgIAotICAgIHJldHVybiBhcnJheTsKLX0KLQotZmxvYXQgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldFVuaWZvcm1mKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBsb2NhdGlv
bikKLXsKLSAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBxdWVyeSBnbEdldFVuaWZvcm1Mb2NhdGlv
biB0byBkZXRlcm1pbmUgdGhlIHNpemUgbmVlZGVkCi0gICAgVU5VU0VEX1BBUkFNKHByb2dyYW0p
OwotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAg
ICByZXR1cm4gMDsKLX0KLQotUGFzc1JlZlB0cjxXZWJHTEZsb2F0QXJyYXk+IEdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRVbmlmb3JtZnYoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0aW9u
KQotewotICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIHF1ZXJ5IGdsR2V0VW5pZm9ybUxvY2F0aW9u
IHRvIGRldGVybWluZSB0aGUgc2l6ZSBuZWVkZWQKLSAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7
Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAg
IHJldHVybiAwOwotfQotCi1pbnQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1pKFdlYkdM
UHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBsb2NhdGlvbikKLXsKLSAgICAvLyBGSVhNRTogV2UgbmVl
ZCB0byBxdWVyeSBnbEdldFVuaWZvcm1Mb2NhdGlvbiB0byBkZXRlcm1pbmUgdGhlIHNpemUgbmVl
ZGVkCi0gICAgVU5VU0VEX1BBUkFNKHByb2dyYW0pOwotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlv
bik7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotUGFzc1JlZlB0
cjxXZWJHTEludEFycmF5PiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWl2KFdlYkdMUHJv
Z3JhbSogcHJvZ3JhbSwgbG9uZyBsb2NhdGlvbikKLXsKLSAgICAvLyBGSVhNRTogV2UgbmVlZCB0
byBxdWVyeSBnbEdldFVuaWZvcm1Mb2NhdGlvbiB0byBkZXRlcm1pbmUgdGhlIHNpemUgbmVlZGVk
Ci0gICAgVU5VU0VEX1BBUkFNKHByb2dyYW0pOwotICAgIFVOVVNFRF9QQVJBTShsb2NhdGlvbik7
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICA6OmdsR2V0VW5pZm9y
bWl2KChHTHVpbnQpIHByb2dyYW0tPm9iamVjdCgpLCBsb2NhdGlvbiwgdmFsdWUpOwogfQogCiBs
b25nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtTG9jYXRpb24oV2ViR0xQcm9ncmFtKiBw
cm9ncmFtLCBjb25zdCBTdHJpbmcmIG5hbWUpCkBAIC0xNDQyLDcxICsxMDgzLDE2IEBAIGxvbmcg
R3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1Mb2NhdGkKICAgICByZXR1cm4gOjpnbEdldFVu
aWZvcm1Mb2NhdGlvbigoR0x1aW50KSBwcm9ncmFtLT5vYmplY3QoKSwgbmFtZS51dGY4KCkuZGF0
YSgpKTsKIH0KIAotc3RhdGljIGludCBzaXplRm9yR2V0VmVydGV4QXR0cmliUGFyYW0odW5zaWdu
ZWQgbG9uZyBwbmFtZSkKLXsKLSAgICBzd2l0Y2gocG5hbWUpIHsKLSAgICAgICAgY2FzZSBHTF9W
RVJURVhfQVRUUklCX0FSUkFZX0JVRkZFUl9CSU5ESU5HOiAgICAgcmV0dXJuIDE7IC8vICgqIGFj
dHVhbGx5IGEgV2ViR0xCdWZmZXIqKQotICAgICAgICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJS
QVlfRU5BQkxFRDogICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9WRVJURVhf
QVRUUklCX0FSUkFZX1NJWkU6ICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2Ug
R0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9TVFJJREU6ICAgICAgICAgICAgIHJldHVybiAxOwotICAg
ICAgICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRTogICAgICAgICAgICAgICByZXR1
cm4gMTsKLSAgICAgICAgY2FzZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZX05PUk1BTElaRUQ6ICAg
ICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfQ1VSUkVOVF9WRVJURVhfQVRUUklCOiAg
ICAgICAgICAgICAgICAgIHJldHVybiA0OwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gLTE7Ci19
Ci0KLWZsb2F0IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJmKHVuc2lnbmVkIGxv
bmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgZW5zdXJlQ29udGV4dChtX2Nv
bnRleHRPYmopOwotICAgIEdMZmxvYXQgYnVmWzRdOwotICAgIDo6Z2xHZXRWZXJ0ZXhBdHRyaWJm
dihpbmRleCwgcG5hbWUsIGJ1Zik7Ci0gICAgcmV0dXJuIGJ1ZlswXTsKLX0KLQotUGFzc1JlZlB0
cjxXZWJHTEZsb2F0QXJyYXk+IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJmdih1
bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0VmVydGV4QXR0cmliZnYodW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQg
bG9uZyBwbmFtZSwgZmxvYXQqIHZhbHVlKQogewotICAgIGludCBzaXplID0gc2l6ZUZvckdldFZl
cnRleEF0dHJpYlBhcmFtKHBuYW1lKTsKLSAgICBpZiAoc2l6ZSA8IDEpIAotICAgICAgICByZXR1
cm4gMDsKLSAgICAKICAgICBlbnN1cmVDb250ZXh0KG1fY29udGV4dE9iaik7Ci0gICAgCi0gICAg
UmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gYXJyYXkgPSBXZWJHTEZsb2F0QXJyYXk6OmNyZWF0ZShz
aXplKTsKLSAgICBHTGZsb2F0IGJ1Zls0XTsKLSAgICA6OmdsR2V0VmVydGV4QXR0cmliZnYoaW5k
ZXgsIHBuYW1lLCBidWYpOwotICAgICAgICAgICAgCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBz
aXplOyArK2kpCi0gICAgICAgIGFycmF5LT5zZXQoaSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGJ1Zltp
XSkpOwotICAgIAotICAgIHJldHVybiBhcnJheTsKKyAgICA6OmdsR2V0VmVydGV4QXR0cmliZnYo
aW5kZXgsIHBuYW1lLCB2YWx1ZSk7CiB9CiAKLWludCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVy
dGV4QXR0cmliaSh1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBuYW1lKQordm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliaXYodW5zaWduZWQgbG9uZyBpbmRl
eCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgaW50KiB2YWx1ZSkKIHsKICAgICBlbnN1cmVDb250ZXh0
KG1fY29udGV4dE9iaik7Ci0gICAgR0xpbnQgYnVmWzRdOwotICAgIDo6Z2xHZXRWZXJ0ZXhBdHRy
aWJpdihpbmRleCwgcG5hbWUsIGJ1Zik7Ci0gICAgcmV0dXJuIGJ1ZlswXTsKLX0KLQotUGFzc1Jl
ZlB0cjxXZWJHTEludEFycmF5PiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliaXYo
dW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICBpbnQgc2l6
ZSA9IHNpemVGb3JHZXRWZXJ0ZXhBdHRyaWJQYXJhbShwbmFtZSk7Ci0gICAgaWYgKHNpemUgPCAx
KSAKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRP
YmopOwotICAgIAotICAgIFJlZlB0cjxXZWJHTEludEFycmF5PiBhcnJheSA9IFdlYkdMSW50QXJy
YXk6OmNyZWF0ZShzaXplKTsKLSAgICBHTGludCBidWZbNF07Ci0gICAgOjpnbEdldFZlcnRleEF0
dHJpYml2KGluZGV4LCBwbmFtZSwgYnVmKTsKLSAgICAgICAgICAgIAotICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBhcnJheS0+c2V0KGksIHN0YXRpY19jYXN0PGlu
dD4oYnVmW2ldKSk7Ci0gICAgCi0gICAgcmV0dXJuIGFycmF5OworICAgIDo6Z2xHZXRWZXJ0ZXhB
dHRyaWJpdihpbmRleCwgcG5hbWUsIHZhbHVlKTsKIH0KIAogbG9uZyBHcmFwaGljc0NvbnRleHQz
RDo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0KHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxv
bmcgcG5hbWUpCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDUxMzM1KQorKysgV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDA5LTEx
LTIzICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgZ2V0Li4uIGNhbGxzIHRvIGxh
dGVzdCBzcGVjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zMDA5MQorCisgICAgICAgIFJlbW92ZWQgb2xkIHZlcnNpb25zIG9mIGdldCBjYWxscyBvbiBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQgYW5kCisgICAgICAgIGFkZGVkIG5ldyBvbmVzIHBlciBzcGVj
IHJldHVybmluZyAiYW55Ii4gTmV3IGNvZGUgc2ltcGxpZmllcworICAgICAgICBHcmFwaGljc0Nv
bnRleHQzRCBhbmQgZml4ZXMgcHJldmlvdXNseSB1bmltcGxlbWVudGVkIHJvdXRpbmVzLgorICAg
ICAgICBBZGRlZCBjdXN0b20gSlMgYW5kIFY4IGJpbmRpbmdzLiBBZGRlZCBleGhhdXN0aXZlIHRl
c3QgY2FzZQorICAgICAgICBleGVyY2lzaW5nIGFsbCBuZXcgY29kZSBwYXRocy4gVXBkYXRlZCBw
cmVleGlzdGluZyB0ZXN0IGNhc2VzIGZvcgorICAgICAgICBuZXcgQVBJcy4gRml4ZWQgcHJlZXhp
c3RpbmcgYnVncyBpbiBXZWJLaXQncyBhbmQgQ2hyb21lJ3MgV2ViR0wKKyAgICAgICAgaW1wbGVt
ZW50YXRpb25zLgorCisgICAgICAgIFJhbiBXZWJHTCBsYXlvdXQgdGVzdHMgaW4gV2ViS2l0IChj
bGVhbikgYW5kIENocm9tZSAoY291cGxlIG9mCisgICAgICAgIHByZWV4aXN0aW5nIGtub3duIGZh
aWx1cmVzKSBhbmQgbWFudWFsIFdlYkdMIHRlc3RzIGluIGJvdGgKKyAgICAgICAgYnJvd3NlcnMu
CisKKyAgICAgICAgVGVzdDogZmFzdC9jYW52YXMvd2ViZ2wvZ2wtb2JqZWN0LWdldC1jYWxscy5o
dG1sCisKKyAgICAgICAgKiBzcmMvR3JhcGhpY3NDb250ZXh0M0QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVSZW5kZXJidWZmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZUZyYW1lYnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVSZW5kZXJidWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEJvb2xlYW52KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRCdWZmZXJQYXJhbWV0ZXJpdik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0RmxvYXR2KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJh
bWV0ZXJpdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW50ZWdl
cnYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1pdik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0UmVuZGVyYnVmZmVyUGFy
YW1ldGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRl
cml2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRUZXhQYXJhbWV0
ZXJmdik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VGV4UGFyYW1l
dGVyaXYpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1m
dik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWl2KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJmdik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliaXYp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmlzRnJhbWVidWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmlzUmVuZGVyYnVmZmVyKToKKwog
MjAwOS0xMS0yMyAgSmlhbiBMaSAgPGppYW5saUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChDaHJvbWl1bSBidWlsZCBmaXgpLgpJbmRleDogV2ViS2l0L2Nocm9t
aXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9t
aXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRC5jcHAJKHJldmlzaW9uIDUxMzM1KQorKysgV2ViS2l0
L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3
NCwxOSArNzc0LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpiZWdpblBhaQog
I2VuZGlmICAvLyBSRU5ERVJfVE9fREVCVUdHSU5HX1dJTkRPVwogfQogCi1ib29sIEdyYXBoaWNz
Q29udGV4dDNESW50ZXJuYWw6OnZhbGlkYXRlVGV4dHVyZVRhcmdldChpbnQgdGFyZ2V0KQotewot
ICAgIHJldHVybiAodGFyZ2V0ID09IEdMX1RFWFRVUkVfMkQgfHwgdGFyZ2V0ID09IEdMX1RFWFRV
UkVfQ1VCRV9NQVApOwotfQotCi1ib29sIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnZhbGlk
YXRlVGV4dHVyZVBhcmFtZXRlcihpbnQgcGFyYW0pCi17Ci0gICAgcmV0dXJuIChwYXJhbSA9PSBH
TF9URVhUVVJFX01BR19GSUxURVIKLSAgICAgICAgIHx8IHBhcmFtID09IEdMX1RFWFRVUkVfTUlO
X0ZJTFRFUgotICAgICAgICAgfHwgcGFyYW0gPT0gR0xfVEVYVFVSRV9XUkFQX1MKLSAgICAgICAg
IHx8IHBhcmFtID09IEdMX1RFWFRVUkVfV1JBUF9UKTsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRl
eHQzREludGVybmFsOjphY3RpdmVUZXh0dXJlKHVuc2lnbmVkIGxvbmcgdGV4dHVyZSkKIHsKICAg
ICAvLyBGSVhNRTogcXVlcnkgbnVtYmVyIG9mIHRleHR1cmVzIGF2YWlsYWJsZS4KQEAgLTExMDUs
OCArMTA5Miw4IEBAIHVuc2lnbmVkIEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVCdWZmZXIKIHVu
c2lnbmVkIEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVGcmFtZWJ1ZmZlcigpCiB7CiAgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgR0x1aW50IG87Ci0gICAgZ2xHZW5GcmFtZWJ1ZmZlcnMo
MSwgJm8pOworICAgIEdMdWludCBvID0gMDsKKyAgICBnbEdlbkZyYW1lYnVmZmVyc0VYVCgxLCAm
byk7CiAgICAgcmV0dXJuIG87CiB9CiAKQEAgLTExMjAsNyArMTEwNyw3IEBAIHVuc2lnbmVkIEdy
YXBoaWNzQ29udGV4dDNEOjpjcmVhdGVSZW5kZXIKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKICAgICBHTHVpbnQgbzsKLSAgICBnbEdlblJlbmRlcmJ1ZmZlcnMoMSwgJm8pOworICAgIGds
R2VuUmVuZGVyYnVmZmVyc0VYVCgxLCAmbyk7CiAgICAgcmV0dXJuIG87CiB9CiAKQEAgLTExNDcs
NyArMTEzNCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZUJ1ZmZlcih1bnMKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZUZyYW1lYnVmZmVyKHVuc2lnbmVkIGZyYW1lYnVm
ZmVyKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIGdsRGVsZXRlRnJhbWVidWZm
ZXJzKDEsICZmcmFtZWJ1ZmZlcik7CisgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnNFWFQoMSwgJmZy
YW1lYnVmZmVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlUHJvZ3JhbSh1
bnNpZ25lZCBwcm9ncmFtKQpAQCAtMTE1OSw3ICsxMTQ2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6ZGVsZXRlUHJvZ3JhbSh1bgogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlUmVu
ZGVyYnVmZmVyKHVuc2lnbmVkIHJlbmRlcmJ1ZmZlcikKIHsKICAgICBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKLSAgICBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJnJlbmRlcmJ1ZmZlcik7CisgICAg
Z2xEZWxldGVSZW5kZXJidWZmZXJzRVhUKDEsICZyZW5kZXJidWZmZXIpOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpkZWxldGVTaGFkZXIodW5zaWduZWQgc2hhZGVyKQpAQCAtMTE5Nyw5
ICsxMTg0LDkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmluZEJ1ZmZlcih1bnNpZwogICAg
IG1faW50ZXJuYWwtPmJpbmRCdWZmZXIodGFyZ2V0LCBidWZmZXIpOwogfQogCi1HTF9TQU1FX01F
VEhPRF8yX1gyKEJpbmRGcmFtZWJ1ZmZlciwgYmluZEZyYW1lYnVmZmVyLCB1bnNpZ25lZCBsb25n
LCBXZWJHTEZyYW1lYnVmZmVyKikKK0dMX1NBTUVfTUVUSE9EXzJfWDIoQmluZEZyYW1lYnVmZmVy
RVhULCBiaW5kRnJhbWVidWZmZXIsIHVuc2lnbmVkIGxvbmcsIFdlYkdMRnJhbWVidWZmZXIqKQog
Ci1HTF9TQU1FX01FVEhPRF8yX1gyKEJpbmRSZW5kZXJidWZmZXIsIGJpbmRSZW5kZXJidWZmZXIs
IHVuc2lnbmVkIGxvbmcsIFdlYkdMUmVuZGVyYnVmZmVyKikKK0dMX1NBTUVfTUVUSE9EXzJfWDIo
QmluZFJlbmRlcmJ1ZmZlckVYVCwgYmluZFJlbmRlcmJ1ZmZlciwgdW5zaWduZWQgbG9uZywgV2Vi
R0xSZW5kZXJidWZmZXIqKQogCiAvLyBJZiB3ZSBkaWRuJ3QgaGF2ZSB0byBoYWNrIEdMX1RFWFRV
UkVfV1JBUF9SIGZvciBjdWJlIG1hcHMsCiAvLyB3ZSBjb3VsZCBqdXN0IHVzZToKQEAgLTEyNTMs
NyArMTI0MCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJ1ZmZlclN1YkRhdGEodW4KIHVu
c2lnbmVkIGxvbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXModW5z
aWduZWQgbG9uZyB0YXJnZXQpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgcmV0
dXJuIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh0YXJnZXQpOworICAgIHJldHVybiBnbENoZWNr
RnJhbWVidWZmZXJTdGF0dXNFWFQodGFyZ2V0KTsKIH0KIAogR0xfU0FNRV9NRVRIT0RfMShDbGVh
ciwgY2xlYXIsIHVuc2lnbmVkIGxvbmcpCkBAIC0xMzU2LDkgKzEzNDMsOSBAQCBHTF9TQU1FX01F
VEhPRF8wKEZpbmlzaCwgZmluaXNoKQogCiBHTF9TQU1FX01FVEhPRF8wKEZsdXNoLCBmbHVzaCkK
IAotR0xfU0FNRV9NRVRIT0RfNF9YNChGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciwgZnJhbWVidWZm
ZXJSZW5kZXJidWZmZXIsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxv
bmcsIFdlYkdMUmVuZGVyYnVmZmVyKikKK0dMX1NBTUVfTUVUSE9EXzRfWDQoRnJhbWVidWZmZXJS
ZW5kZXJidWZmZXJFWFQsIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyLCB1bnNpZ25lZCBsb25nLCB1
bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCBXZWJHTFJlbmRlcmJ1ZmZlciopCiAKLUdMX1NB
TUVfTUVUSE9EXzVfWDQoRnJhbWVidWZmZXJUZXh0dXJlMkQsIGZyYW1lYnVmZmVyVGV4dHVyZTJE
LCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCBXZWJHTFRleHR1
cmUqLCBsb25nKQorR0xfU0FNRV9NRVRIT0RfNV9YNChGcmFtZWJ1ZmZlclRleHR1cmUyREVYVCwg
ZnJhbWVidWZmZXJUZXh0dXJlMkQsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2ln
bmVkIGxvbmcsIFdlYkdMVGV4dHVyZSosIGxvbmcpCiAKIEdMX1NBTUVfTUVUSE9EXzEoRnJvbnRG
YWNlLCBmcm9udEZhY2UsIHVuc2lnbmVkIGxvbmcpCiAKQEAgLTE0MzUsMzUgKzE0MjIsMTYgQEAg
aW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRBdHRyaWJMb2NhdGlvbgogICAgIHJldHVybiBnbEdl
dEF0dHJpYkxvY2F0aW9uKEVYVFJBQ1QocHJvZ3JhbSksIG5hbWUudXRmOCgpLmRhdGEoKSk7CiB9
CiAKLWJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEJvb2xlYW4odW5zaWduZWQgbG9uZyBwbmFt
ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEJvb2xlYW52KHVuc2lnbmVkIGxvbmcgcG5h
bWUsIHVuc2lnbmVkIGNoYXIqIHZhbHVlKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwot
ICAgIEdMYm9vbGVhbiB2YWw7Ci0gICAgLy8gRklYTUU6IHZhbGlkYXRlIHBuYW1lIHRvIGVuc3Vy
ZSBpdCByZXR1cm5zIG9ubHkgYSBzaW5nbGUgdmFsdWUuCi0gICAgZ2xHZXRCb29sZWFudihwbmFt
ZSwgJnZhbCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KHZhbCk7CisgICAgZ2xHZXRC
b29sZWFudihwbmFtZSwgdmFsdWUpOwogfQogCi1QYXNzUmVmUHRyPFdlYkdMVW5zaWduZWRCeXRl
QXJyYXk+IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRCb29sZWFudih1bnNpZ25lZCBsb25nIHBuYW1l
KQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQuCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAg
ICByZXR1cm4gMDsKLX0KLQotaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRCdWZmZXJQYXJhbWV0
ZXJpKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKQordm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6Z2V0QnVmZmVyUGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQs
IHVuc2lnbmVkIGxvbmcgcG5hbWUsIGludCogdmFsdWUpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7Ci0gICAgR0xpbnQgZGF0YTsKLSAgICBnbEdldEJ1ZmZlclBhcmFtZXRlcml2KHRhcmdl
dCwgcG5hbWUsICZkYXRhKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihkYXRhKTsKLX0K
LQotUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QnVmZmVy
UGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17
Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudC4KLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJl
dHVybiAwOworICAgIGdsR2V0QnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgdmFsdWUp
OwogfQogCiB1bnNpZ25lZCBsb25nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRFcnJvcigpCkBAIC0x
NDcyLDcyICsxNDQwLDMzIEBAIHVuc2lnbmVkIGxvbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEVy
cm8KICAgICByZXR1cm4gZ2xHZXRFcnJvcigpOwogfQogCi1mbG9hdCBHcmFwaGljc0NvbnRleHQz
RDo6Z2V0RmxvYXQodW5zaWduZWQgbG9uZyBwbmFtZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmdldEZsb2F0dih1bnNpZ25lZCBsb25nIHBuYW1lLCBmbG9hdCogdmFsdWUpCiB7CiAgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgR0xmbG9hdCB2YWw7Ci0gICAgLy8gRklYTUU6IHZhbGlk
YXRlIHBuYW1lIHRvIGVuc3VyZSBpdCByZXR1cm5zIG9ubHkgYSBzaW5nbGUgdmFsdWUuCi0gICAg
Z2xHZXRGbG9hdHYocG5hbWUsICZ2YWwpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4o
dmFsKTsKKyAgICBnbEdldEZsb2F0dihwbmFtZSwgdmFsdWUpOwogfQogCi1QYXNzUmVmUHRyPFdl
YkdMRmxvYXRBcnJheT4gR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZsb2F0dih1bnNpZ25lZCBsb25n
IHBuYW1lKQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQuCi0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLSAgICByZXR1cm4gMDsKLX0KLQotaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRGcmFtZWJ1
ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGxvbmcgYXR0YWNobWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYodW5zaWduZWQgbG9u
ZyB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25n
IHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50KiB2YWx1ZSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAg
ICBHTGludCBkYXRhOwotICAgIGdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYo
dGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSwgJmRhdGEpOwotICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxpbnQ+KGRhdGEpOwotfQotCi1QYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IEdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdih1bnNpZ25lZCBsb25n
IHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGF0dGFjaG1l
bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAg
ICAvLyBGSVhNRTogaW1wbGVtZW50LgotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJu
IDA7CisgICAgZ2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdkVYVCh0YXJnZXQs
IGF0dGFjaG1lbnQsIHBuYW1lLCB2YWx1ZSk7CiB9CiAKLWludCBHcmFwaGljc0NvbnRleHQzRDo6
Z2V0SW50ZWdlcih1bnNpZ25lZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
Z2V0SW50ZWdlcnYodW5zaWduZWQgbG9uZyBwbmFtZSwgaW50KiB2YWx1ZSkKIHsKICAgICBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKLSAgICBHTGludCB2YWw7Ci0gICAgLy8gRklYTUU6IHZhbGlkYXRl
IHBuYW1lIHRvIGVuc3VyZSBpdCByZXR1cm5zIG9ubHkgYSBzaW5nbGUgdmFsdWUuCi0gICAgZ2xH
ZXRJbnRlZ2VydihwbmFtZSwgJnZhbCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4odmFs
KTsKLX0KLQotUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
SW50ZWdlcnYodW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50
LgotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgZ2xHZXRJbnRlZ2Vy
dihwbmFtZSwgdmFsdWUpOwogfQogCi1pbnQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1p
KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgbG9uZyBwbmFtZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dy
YW1pdihXZWJHTFByb2dyYW0qIHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgbG9uZyBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQqIHZhbHVlKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAg
IEdMaW50IHBhcmFtOwotICAgIGdsR2V0UHJvZ3JhbWl2KEVYVFJBQ1QocHJvZ3JhbSksIHBuYW1l
LCAmcGFyYW0pOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHBhcmFtKTsKLX0KLQotUGFz
c1JlZlB0cjxXZWJHTEludEFycmF5PiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbWl2KFdl
YkdMUHJvZ3JhbSogcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICAvLyBG
SVhNRTogaW1wbGVtZW50LgotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7Cisg
ICAgZ2xHZXRQcm9ncmFtaXYoRVhUUkFDVChwcm9ncmFtKSwgcG5hbWUsIHZhbHVlKTsKIH0KIAog
U3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtSW5mb0xvZyhXZWJHTFByb2dyYW0q
IHByb2dyYW0pCkBAIC0xNTU5LDM4ICsxNDg4LDIwIEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHQz
RDo6Z2V0UHJvZ3JhbUluZm8KICAgICByZXR1cm4gcmVzOwogfQogCi1pbnQgR3JhcGhpY3NDb250
ZXh0M0Q6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodW5zaWduZWQgbG9uZyB0YXJnZXQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
bG9uZyBwbmFtZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFJlbmRlcmJ1ZmZlclBhcmFt
ZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBwbmFtZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCogdmFsdWUpCiB7CiAg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgR0xpbnQgcGFyYW07Ci0gICAgZ2xHZXRSZW5k
ZXJidWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmcGFyYW0pOwotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxpbnQ+KHBhcmFtKTsKLX0KLQotUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBH
cmFwaGljc0NvbnRleHQzRDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYodW5zaWduZWQgbG9u
ZyB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICAv
LyBGSVhNRTogaW1wbGVtZW50LgotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7
CisgICAgZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdkVYVCh0YXJnZXQsIHBuYW1lLCB2YWx1
ZSk7CiB9CiAKLWludCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyaShXZWJHTFNoYWRlciog
c2hhZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcg
cG5hbWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJpdihXZWJHTFNoYWRlciog
c2hhZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9u
ZyBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCogdmFsdWUp
CiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgR0xpbnQgcGFyYW07Ci0gICAgZ2xH
ZXRTaGFkZXJpdihFWFRSQUNUKHNoYWRlciksIHBuYW1lLCAmcGFyYW0pOwotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxpbnQ+KHBhcmFtKTsKLX0KLQotUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBH
cmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyaXYoV2ViR0xTaGFkZXIqIHNoYWRlciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBsb25nIHBuYW1lKQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQuCi0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICBnbEdldFNoYWRlcml2KEVYVFJBQ1Qoc2hh
ZGVyKSwgcG5hbWUsIHZhbHVlKTsKIH0KIAogU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRT
aGFkZXJJbmZvTG9nKFdlYkdMU2hhZGVyKiBzaGFkZXIpCkBAIC0xNjM3LDgyICsxNTQ4LDI4IEBA
IFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0U3RyaW5nKHVuc2kKICAgICByZXR1cm4gU3Ry
aW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGdsR2V0U3RyaW5nKG5hbWUpKSk7CiB9
CiAKLWZsb2F0IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRUZXhQYXJhbWV0ZXJmKHVuc2lnbmVkIGxv
bmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
Z2V0VGV4UGFyYW1ldGVyZnYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5h
bWUsIGZsb2F0KiB2YWx1ZSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICBpZiAo
IW1faW50ZXJuYWwtPnZhbGlkYXRlVGV4dHVyZVRhcmdldCh0YXJnZXQpKSB7Ci0gICAgICAgIC8v
IEZJWE1FOiB0aHJvdyBleGNlcHRpb24uCi0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAg
IGlmICghbV9pbnRlcm5hbC0+dmFsaWRhdGVUZXh0dXJlUGFyYW1ldGVyKHBuYW1lKSkgewotICAg
ICAgICAvLyBGSVhNRTogdGhyb3cgZXhjZXB0aW9uLgotICAgICAgICByZXR1cm4gMDsKLSAgICB9
Ci0KLSAgICBHTGZsb2F0IHBhcmFtOwotICAgIGdsR2V0VGV4UGFyYW1ldGVyZnYodGFyZ2V0LCBw
bmFtZSwgJnBhcmFtKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHBhcmFtKTsKLX0K
LQotUGFzc1JlZlB0cjxXZWJHTEZsb2F0QXJyYXk+IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRUZXhQ
YXJhbWV0ZXJmdih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSkKLXsK
LSAgICAvLyBGSVhNRTogaW1wbGVtZW50LgotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0
dXJuIDA7CisgICAgZ2xHZXRUZXhQYXJhbWV0ZXJmdih0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CiB9
CiAKLWludCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VGV4UGFyYW1ldGVyaSh1bnNpZ25lZCBsb25n
IHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6Omdl
dFRleFBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1l
LCBpbnQqIHZhbHVlKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIGlmICghbV9p
bnRlcm5hbC0+dmFsaWRhdGVUZXh0dXJlVGFyZ2V0KHRhcmdldCkpIHsKLSAgICAgICAgLy8gRklY
TUU6IHRocm93IGV4Y2VwdGlvbi4KLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgaWYg
KCFtX2ludGVybmFsLT52YWxpZGF0ZVRleHR1cmVQYXJhbWV0ZXIocG5hbWUpKSB7Ci0gICAgICAg
IC8vIEZJWE1FOiB0aHJvdyBleGNlcHRpb24uCi0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQot
ICAgIEdMaW50IHBhcmFtOwotICAgIGdsR2V0VGV4UGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwg
JnBhcmFtKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihwYXJhbSk7Ci19Ci0KLVBhc3NS
ZWZQdHI8V2ViR0xJbnRBcnJheT4gR3JhcGhpY3NDb250ZXh0M0Q6OmdldFRleFBhcmFtZXRlcml2
KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKQotewotICAgIC8vIEZJ
WE1FOiBpbXBsZW1lbnQuCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAg
ICBnbEdldFRleFBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKIH0KIAotZmxvYXQg
R3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1mKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9u
ZyBsb2NhdGlvbikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1mdihXZWJHTFBy
b2dyYW0qIHByb2dyYW0sIGxvbmcgbG9jYXRpb24sIGZsb2F0KiB2YWx1ZSkKIHsKLSAgICAvLyBG
SVhNRTogaW1wbGVtZW50LgotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7Ci19
Ci0KLVBhc3NSZWZQdHI8V2ViR0xGbG9hdEFycmF5PiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5p
Zm9ybWZ2KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBsb2NhdGlvbikKLXsKLSAgICAvLyBG
SVhNRTogaW1wbGVtZW50LgotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7Ci19
Ci0KLWludCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWkoV2ViR0xQcm9ncmFtKiBwcm9n
cmFtLCBsb25nIGxvY2F0aW9uKQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQuCi0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
KyAgICBnbEdldFVuaWZvcm1mdihFWFRSQUNUKHByb2dyYW0pLCBsb2NhdGlvbiwgdmFsdWUpOwog
fQogCi1QYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlm
b3JtaXYoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uKQordm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0VW5pZm9ybWl2KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBsb2Nh
dGlvbiwgaW50KiB2YWx1ZSkKIHsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50LgotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Cisg
ICAgZ2xHZXRVbmlmb3JtaXYoRVhUUkFDVChwcm9ncmFtKSwgbG9jYXRpb24sIHZhbHVlKTsKIH0K
IAogbG9uZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybUxvY2F0aW9uKFdlYkdMUHJvZ3Jh
bSogcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiBuYW1lKQpAQCAtMTcyNCwzNiArMTU4MSwyMCBAQCBs
b25nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtTG9jYXRpCiAgICAgcmV0dXJuIGdsR2V0
VW5pZm9ybUxvY2F0aW9uKEVYVFJBQ1QocHJvZ3JhbSksIG5hbWUudXRmOCgpLmRhdGEoKSk7CiB9
CiAKLWZsb2F0IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJmKHVuc2lnbmVkIGxv
bmcgaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBsb25nIHBuYW1lKQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQuCi0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotUGFzc1JlZlB0cjxXZWJHTEZsb2F0QXJy
YXk+IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJmdih1bnNpZ25lZCBsb25nIGlu
ZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBwbmFtZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldFZlcnRleEF0dHJpYmZ2KHVuc2lnbmVkIGxvbmcgaW5kZXgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHBuYW1lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQqIHZhbHVlKQogewotICAg
IC8vIEZJWE1FOiBpbXBsZW1lbnQuCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4g
MDsKLX0KLQotaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJpKHVuc2lnbmVk
IGxvbmcgaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50LgotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Cisg
ICAgZ2xHZXRWZXJ0ZXhBdHRyaWJmdihpbmRleCwgcG5hbWUsIHZhbHVlKTsKIH0KIAotUGFzc1Jl
ZlB0cjxXZWJHTEludEFycmF5PiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliaXYo
dW5zaWduZWQgbG9uZyBpbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHBuYW1lKQordm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliaXYodW5zaWduZWQgbG9uZyBpbmRleCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcg
cG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIHZh
bHVlKQogewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQuCi0gICAgbm90SW1wbGVtZW50ZWQoKTsK
LSAgICByZXR1cm4gMDsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBnbEdldFZlcnRl
eEF0dHJpYml2KGluZGV4LCBwbmFtZSwgdmFsdWUpOwogfQogCiBsb25nIEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQodW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQg
bG9uZyBwbmFtZSkKQEAgLTE3ODAsNyArMTYyMSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6
OmlzRW5hYmxlZCh1bnNpZ24KIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmlzRnJhbWVidWZmZXIo
V2ViR0xGcmFtZWJ1ZmZlciogZnJhbWVidWZmZXIpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7Ci0gICAgcmV0dXJuIGdsSXNGcmFtZWJ1ZmZlcihFWFRSQUNUKGZyYW1lYnVmZmVyKSk7Cisg
ICAgcmV0dXJuIGdsSXNGcmFtZWJ1ZmZlckVYVChFWFRSQUNUKGZyYW1lYnVmZmVyKSk7CiB9CiAK
IGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmlzUHJvZ3JhbShXZWJHTFByb2dyYW0qIHByb2dyYW0p
CkBAIC0xNzkyLDcgKzE2MzMsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjppc1Byb2dyYW0o
V2ViR0xQCiBib29sIEdyYXBoaWNzQ29udGV4dDNEOjppc1JlbmRlcmJ1ZmZlcihXZWJHTFJlbmRl
cmJ1ZmZlciogcmVuZGVyYnVmZmVyKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAg
IHJldHVybiBnbElzUmVuZGVyYnVmZmVyKEVYVFJBQ1QocmVuZGVyYnVmZmVyKSk7CisgICAgcmV0
dXJuIGdsSXNSZW5kZXJidWZmZXJFWFQoRVhUUkFDVChyZW5kZXJidWZmZXIpKTsKIH0KIAogYm9v
bCBHcmFwaGljc0NvbnRleHQzRDo6aXNTaGFkZXIoV2ViR0xTaGFkZXIqIHNoYWRlcikKQEAgLTE4
NDEsNyArMTY4Miw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlbGVhc2VTaGFkZXJDb20K
IHsKIH0KIAotR0xfU0FNRV9NRVRIT0RfNChSZW5kZXJidWZmZXJTdG9yYWdlLCByZW5kZXJidWZm
ZXJTdG9yYWdlLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1
bnNpZ25lZCBsb25nKQorR0xfU0FNRV9NRVRIT0RfNChSZW5kZXJidWZmZXJTdG9yYWdlRVhULCBy
ZW5kZXJidWZmZXJTdG9yYWdlLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25l
ZCBsb25nLCB1bnNpZ25lZCBsb25nKQogCiBHTF9TQU1FX01FVEhPRF8yKFNhbXBsZUNvdmVyYWdl
LCBzYW1wbGVDb3ZlcmFnZSwgZG91YmxlLCBib29sKQogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1MTMz
NSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUz
IEBACisyMDA5LTExLTIzICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgZ2V0Li4u
IGNhbGxzIHRvIGxhdGVzdCBzcGVjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zMDA5MQorCisgICAgICAgIFJlbW92ZWQgb2xkIHZlcnNpb25zIG9mIGdl
dCBjYWxscyBvbiBXZWJHTFJlbmRlcmluZ0NvbnRleHQgYW5kCisgICAgICAgIGFkZGVkIG5ldyBv
bmVzIHBlciBzcGVjIHJldHVybmluZyAiYW55Ii4gTmV3IGNvZGUgc2ltcGxpZmllcworICAgICAg
ICBHcmFwaGljc0NvbnRleHQzRCBhbmQgZml4ZXMgcHJldmlvdXNseSB1bmltcGxlbWVudGVkIHJv
dXRpbmVzLgorICAgICAgICBBZGRlZCBjdXN0b20gSlMgYW5kIFY4IGJpbmRpbmdzLiBBZGRlZCBl
eGhhdXN0aXZlIHRlc3QgY2FzZQorICAgICAgICBleGVyY2lzaW5nIGFsbCBuZXcgY29kZSBwYXRo
cy4gVXBkYXRlZCBwcmVleGlzdGluZyB0ZXN0IGNhc2VzIGZvcgorICAgICAgICBuZXcgQVBJcy4g
Rml4ZWQgcHJlZXhpc3RpbmcgYnVncyBpbiBXZWJLaXQncyBhbmQgQ2hyb21lJ3MgV2ViR0wKKyAg
ICAgICAgaW1wbGVtZW50YXRpb25zLgorCisgICAgICAgIFJhbiBXZWJHTCBsYXlvdXQgdGVzdHMg
aW4gV2ViS2l0IChjbGVhbikgYW5kIENocm9tZSAoY291cGxlIG9mCisgICAgICAgIHByZWV4aXN0
aW5nIGtub3duIGZhaWx1cmVzKSBhbmQgbWFudWFsIFdlYkdMIHRlc3RzIGluIGJvdGgKKyAgICAg
ICAgYnJvd3NlcnMuCisKKyAgICAgICAgVGVzdDogZmFzdC9jYW52YXMvd2ViZ2wvZ2wtb2JqZWN0
LWdldC1jYWxscy5odG1sCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9nbC1nZXQtY2Fs
bHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2dsLWdldC1jYWxs
cy5odG1sOgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2dsLW9iamVjdC1nZXQtY2FsbHMt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9nbC1vYmpl
Y3QtZ2V0LWNhbGxzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2lu
Y29ycmVjdC1jb250ZXh0LW9iamVjdC1iZWhhdmlvdXItZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGZhc3QvY2FudmFzL3dlYmdsL251bGwtb2JqZWN0LWJlaGF2aW91ci1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL2Jvb2xVbmlmb3JtU2hhZGVyLnZl
cnQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy9mbG9hdFVu
aWZvcm1TaGFkZXIudmVydDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvcmVz
b3VyY2VzL2ludFVuaWZvcm1TaGFkZXIudmVydDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52
YXMvd2ViZ2wvcmVzb3VyY2VzL21hdFVuaWZvcm1TaGFkZXIudmVydDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL25vb3BVbmlmb3JtU2hhZGVyLmZyYWc6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy91dGlsczNkLmpzOgor
ICAgICAgICAoaW5pdFdlYkdMKToKKyAgICAgICAgKGxvYWRTaGFkZXIpOgorICAgICAgICAoRnJh
bWVyYXRlLnByb3RvdHlwZS5zbmFwc2hvdCk6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsLXRlc3QuanM6CisgICAgICAgIChsb2FkUHJvZ3JhbSk6CisgICAgICAg
IChsb2FkU3RhbmRhcmRWZXJ0ZXhTaGFkZXIpOgorICAgICAgICAobG9hZFZlcnRleFNoYWRlcik6
CisgICAgICAgIChsb2FkU3RhbmRhcmRGcmFnbWVudFNoYWRlcik6CisgICAgICAgIChsb2FkRnJh
Z21lbnRTaGFkZXIpOgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9n
bC1vYmplY3QtZ2V0LWNhbGxzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJn
bC9zY3JpcHQtdGVzdHMvaW5jb3JyZWN0LWNvbnRleHQtb2JqZWN0LWJlaGF2aW91ci5qczoKKyAg
ICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvbnVsbC1vYmplY3QtYmVoYXZp
b3VyLmpzOgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3RyaWFuZ2xlLmh0bWw6CisgICAg
ICAgICogZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanM6CisgICAgICAgIChzaG91bGRC
ZU5vblplcm8pOgorICAgICAgICAoc2hvdWxkQmVOb25OdWxsKToKKwogMjAwOS0xMS0yMyAgQ2hy
aXMgTWFycmluICA8Y21hcnJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xp
dmVyIEh1bnQuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC1nZXQtY2Fs
bHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dl
YmdsL2dsLWdldC1jYWxscy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDUxMzM1KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtZ2V0LWNhbGxzLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMTMsNjAgKzEzLDYxIEBAIENvbnRleHQgY29udGFpbnMgZ2V0RXJyb3IKIFBB
U1MgY29udGV4dCBjb250YWlucyBnZXRFcnJvcgogCiBDaGVjayBkZWZhdWx0IHZhbHVlcwotUEFT
UyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5BQ1RJVkVfVEVYVFVSRSkgaXMgY29udGV4dC5U
RVhUVVJFMAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5BTElBU0VEX0xJTkVfV0lE
VEhfUkFOR0UpIGlzIDEKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuQUxJQVNFRF9Q
T0lOVF9TSVpFX1JBTkdFKSBpcyAxCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkFS
UkFZX0JVRkZFUl9CSU5ESU5HKSBpcyAwCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0
LkJMRU5EKSBpcyAwCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkJMRU5EX0NPTE9S
KSBpcyAwCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkJMRU5EX0RTVF9BTFBIQSkg
aXMgMAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5CTEVORF9EU1RfUkdCKSBpcyAw
Ci1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkJMRU5EX0VRVUFUSU9OX0FMUEhBKSBp
cyBjb250ZXh0LkZVTkNfQURECi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkJMRU5E
X0VRVUFUSU9OX1JHQikgaXMgY29udGV4dC5GVU5DX0FERAotUEFTUyBjb250ZXh0LmdldEludGVn
ZXIoY29udGV4dC5CTEVORF9TUkNfQUxQSEEpIGlzIDEKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2Vy
KGNvbnRleHQuQkxFTkRfU1JDX1JHQikgaXMgMQotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29u
dGV4dC5DT0xPUl9DTEVBUl9WQUxVRSkgaXMgMAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29u
dGV4dC5DT0xPUl9XUklURU1BU0spIGlzIDEKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRl
eHQuQ1VMTF9GQUNFKSBpcyAwCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkNVTExf
RkFDRV9NT0RFKSBpcyBjb250ZXh0LkJBQ0sKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRl
eHQuQ1VSUkVOVF9QUk9HUkFNKSBpcyAwCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0
LkRFUFRIX0ZVTkMpIGlzIGNvbnRleHQuTEVTUwotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29u
dGV4dC5ERVBUSF9SQU5HRSkgaXMgMAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5E
RVBUSF9URVNUKSBpcyAwCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkRFUFRIX1dS
SVRFTUFTSykgaXMgMQotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5ESVRIRVIpIGlz
IDEKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuRUxFTUVOVF9BUlJBWV9CVUZGRVJf
QklORElORykgaXMgMAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5GUk9OVF9GQUNF
KSBpcyBjb250ZXh0LkNDVwotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5HRU5FUkFU
RV9NSVBNQVBfSElOVCkgaXMgY29udGV4dC5ET05UX0NBUkUKLVBBU1MgY29udGV4dC5nZXRJbnRl
Z2VyKGNvbnRleHQuTElORV9XSURUSCkgaXMgMQotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29u
dGV4dC5QT0xZR09OX09GRlNFVF9GQUNUT1IpIGlzIDAKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2Vy
KGNvbnRleHQuUE9MWUdPTl9PRkZTRVRfRklMTCkgaXMgMAotUEFTUyBjb250ZXh0LmdldEludGVn
ZXIoY29udGV4dC5QT0xZR09OX09GRlNFVF9VTklUUykgaXMgMAotUEFTUyBjb250ZXh0LmdldElu
dGVnZXIoY29udGV4dC5SRU5ERVJCVUZGRVJfQklORElOR19FWFQpIGlzIDAKLVBBU1MgY29udGV4
dC5nZXRJbnRlZ2VyKGNvbnRleHQuU0FNUExFX0NPVkVSQUdFX0lOVkVSVCkgaXMgMAotUEFTUyBj
b250ZXh0LmdldEludGVnZXIoY29udGV4dC5TQU1QTEVfQ09WRVJBR0VfVkFMVUUpIGlzIDEKLVBB
U1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuU0NJU1NPUl9CT1gpIGlzIDAKLVBBU1MgY29u
dGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuU0NJU1NPUl9URVNUKSBpcyAwCi1QQVNTIGNvbnRleHQu
Z2V0SW50ZWdlcihjb250ZXh0LlNURU5DSUxfQkFDS19GQUlMKSBpcyBjb250ZXh0LktFRVAKLVBB
U1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9CQUNLX0ZVTkMpIGlzIGNvbnRl
eHQuQUxXQVlTCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlNURU5DSUxfQkFDS19Q
QVNTX0RFUFRIX0ZBSUwpIGlzIGNvbnRleHQuS0VFUAotUEFTUyBjb250ZXh0LmdldEludGVnZXIo
Y29udGV4dC5TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9QQVNTKSBpcyBjb250ZXh0LktFRVAKLVBB
U1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9CQUNLX1JFRikgaXMgMAotUEFT
UyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVOQ0lMX0JBQ0tfVkFMVUVfTUFTSykgaXMg
LTEKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9CQUNLX1dSSVRFTUFT
SykgaXMgLTEKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9CSVRTKSBp
cyAwCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlNURU5DSUxfQ0xFQVJfVkFMVUUp
IGlzIDAKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9GQUlMKSBpcyBj
b250ZXh0LktFRVAKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9GVU5D
KSBpcyBjb250ZXh0LkFMV0FZUwotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVO
Q0lMX1BBU1NfREVQVEhfRkFJTCkgaXMgY29udGV4dC5LRUVQCi1QQVNTIGNvbnRleHQuZ2V0SW50
ZWdlcihjb250ZXh0LlNURU5DSUxfUEFTU19ERVBUSF9QQVNTKSBpcyBjb250ZXh0LktFRVAKLVBB
U1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9SRUYpIGlzIDAKLVBBU1MgY29u
dGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9URVNUKSBpcyAwCi1QQVNTIGNvbnRleHQu
Z2V0SW50ZWdlcihjb250ZXh0LlNURU5DSUxfVkFMVUVfTUFTSykgaXMgLTEKLVBBU1MgY29udGV4
dC5nZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9XUklURU1BU0spIGlzIC0xCi1QQVNTIGNvbnRl
eHQuZ2V0SW50ZWdlcihjb250ZXh0LlRFWFRVUkVfQklORElOR18yRCkgaXMgMAotUEFTUyBjb250
ZXh0LmdldEludGVnZXIoY29udGV4dC5URVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVApIGlzIDAKLVBB
U1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuVklFV1BPUlQpIGlzIDAKK1BBU1MgY29udGV4
dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5BQ1RJVkVfVEVYVFVSRSkgaXMgY29udGV4dC5URVhUVVJF
MAorUEFTUyAoY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5BTElBU0VEX0xJTkVfV0lEVEhf
UkFOR0UpWzBdID09IDEpIHx8IChjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkFMSUFTRURf
TElORV9XSURUSF9SQU5HRSlbMV0gPT0gMSkgaXMgdHJ1ZQorUEFTUyAoY29udGV4dC5nZXRQYXJh
bWV0ZXIoY29udGV4dC5BTElBU0VEX1BPSU5UX1NJWkVfUkFOR0UpWzBdID09IDEpIHx8IChjb250
ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkFMSUFTRURfUE9JTlRfU0laRV9SQU5HRSlbMV0gPT0g
MSkgaXMgdHJ1ZQorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkFSUkFZX0JVRkZF
Ul9CSU5ESU5HKSBpcyBudWxsCitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQkxF
TkQpIGlzIGZhbHNlCitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQkxFTkRfQ09M
T1IpIGlzIFswLCAwLCAwLCAwXQorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkJM
RU5EX0RTVF9BTFBIQSkgaXMgMAorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkJM
RU5EX0RTVF9SR0IpIGlzIDAKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5CTEVO
RF9FUVVBVElPTl9BTFBIQSkgaXMgY29udGV4dC5GVU5DX0FERAorUEFTUyBjb250ZXh0LmdldFBh
cmFtZXRlcihjb250ZXh0LkJMRU5EX0VRVUFUSU9OX1JHQikgaXMgY29udGV4dC5GVU5DX0FERAor
UEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkJMRU5EX1NSQ19BTFBIQSkgaXMgMQor
UEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkJMRU5EX1NSQ19SR0IpIGlzIDEKK1BB
U1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5DT0xPUl9DTEVBUl9WQUxVRSkgaXMgWzAs
IDAsIDAsIDBdCitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQ09MT1JfV1JJVEVN
QVNLKSBpcyBbMSwgMSwgMSwgMV0KK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5D
VUxMX0ZBQ0UpIGlzIGZhbHNlCitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQ1VM
TF9GQUNFX01PREUpIGlzIGNvbnRleHQuQkFDSworUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihj
b250ZXh0LkNVUlJFTlRfUFJPR1JBTSkgaXMgbnVsbAorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRl
cihjb250ZXh0LkRFUFRIX0ZVTkMpIGlzIGNvbnRleHQuTEVTUworUEFTUyBjb250ZXh0LmdldFBh
cmFtZXRlcihjb250ZXh0LkRFUFRIX1JBTkdFKSBpcyBbMCwgMV0KK1BBU1MgY29udGV4dC5nZXRQ
YXJhbWV0ZXIoY29udGV4dC5ERVBUSF9URVNUKSBpcyBmYWxzZQorUEFTUyBjb250ZXh0LmdldFBh
cmFtZXRlcihjb250ZXh0LkRFUFRIX1dSSVRFTUFTSykgaXMgdHJ1ZQorUEFTUyBjb250ZXh0Lmdl
dFBhcmFtZXRlcihjb250ZXh0LkRJVEhFUikgaXMgdHJ1ZQorUEFTUyBjb250ZXh0LmdldFBhcmFt
ZXRlcihjb250ZXh0LkVMRU1FTlRfQVJSQVlfQlVGRkVSX0JJTkRJTkcpIGlzIG51bGwKK1BBU1Mg
Y29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5GUk9OVF9GQUNFKSBpcyBjb250ZXh0LkNDVwor
UEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkdFTkVSQVRFX01JUE1BUF9ISU5UKSBp
cyBjb250ZXh0LkRPTlRfQ0FSRQorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkxJ
TkVfV0lEVEgpIGlzIDEKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5QT0xZR09O
X09GRlNFVF9GQUNUT1IpIGlzIDAKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5Q
T0xZR09OX09GRlNFVF9GSUxMKSBpcyBmYWxzZQorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihj
b250ZXh0LlBPTFlHT05fT0ZGU0VUX1VOSVRTKSBpcyAwCitQQVNTIGNvbnRleHQuZ2V0UGFyYW1l
dGVyKGNvbnRleHQuUkVOREVSQlVGRkVSX0JJTkRJTkcpIGlzIG51bGwKK1BBU1MgY29udGV4dC5n
ZXRQYXJhbWV0ZXIoY29udGV4dC5TQU1QTEVfQ09WRVJBR0VfSU5WRVJUKSBpcyBmYWxzZQorUEFT
UyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNBTVBMRV9DT1ZFUkFHRV9WQUxVRSkgaXMg
MQorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNDSVNTT1JfQk9YKVswXSBpcyAw
CitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU0NJU1NPUl9CT1gpWzFdIGlzIDAK
K1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TQ0lTU09SX1RFU1QpIGlzIGZhbHNl
CitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9CQUNLX0ZBSUwpIGlz
IGNvbnRleHQuS0VFUAorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5DSUxf
QkFDS19GVU5DKSBpcyBjb250ZXh0LkFMV0FZUworUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihj
b250ZXh0LlNURU5DSUxfQkFDS19QQVNTX0RFUFRIX0ZBSUwpIGlzIGNvbnRleHQuS0VFUAorUEFT
UyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5DSUxfQkFDS19QQVNTX0RFUFRIX1BB
U1MpIGlzIGNvbnRleHQuS0VFUAorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNU
RU5DSUxfQkFDS19SRUYpIGlzIDAKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5T
VEVOQ0lMX0JBQ0tfVkFMVUVfTUFTSykgaXMgMHhGRkZGRkZGRgorUEFTUyBjb250ZXh0LmdldFBh
cmFtZXRlcihjb250ZXh0LlNURU5DSUxfQkFDS19XUklURU1BU0spIGlzIDB4RkZGRkZGRkYKK1BB
U1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX0JJVFMpIGlzIDAKK1BBU1Mg
Y29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX0NMRUFSX1ZBTFVFKSBpcyAwCitQ
QVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9GQUlMKSBpcyBjb250ZXh0
LktFRVAKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX0ZVTkMpIGlz
IGNvbnRleHQuQUxXQVlTCitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJ
TF9QQVNTX0RFUFRIX0ZBSUwpIGlzIGNvbnRleHQuS0VFUAorUEFTUyBjb250ZXh0LmdldFBhcmFt
ZXRlcihjb250ZXh0LlNURU5DSUxfUEFTU19ERVBUSF9QQVNTKSBpcyBjb250ZXh0LktFRVAKK1BB
U1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX1JFRikgaXMgMAorUEFTUyBj
b250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5DSUxfVEVTVCkgaXMgZmFsc2UKK1BBU1Mg
Y29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX1ZBTFVFX01BU0spIGlzIDB4RkZG
RkZGRkYKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX1dSSVRFTUFT
SykgaXMgMHhGRkZGRkZGRgorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlRFWFRV
UkVfQklORElOR18yRCkgaXMgbnVsbAorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0
LlRFWFRVUkVfQklORElOR19DVUJFX01BUCkgaXMgbnVsbAorUEFTUyBjb250ZXh0LmdldFBhcmFt
ZXRlcihjb250ZXh0LlZJRVdQT1JUKSBpcyBbMCwgMCwgMiwgMl0KIAogUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9n
bC1nZXQtY2FsbHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93
ZWJnbC9nbC1nZXQtY2FsbHMuaHRtbAkocmV2aXNpb24gNTEzMzUpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy93ZWJnbC9nbC1nZXQtY2FsbHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNyw3
ICs3LDcgQEAKIDxib2R5PgogPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgogPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Ci08Y2FudmFzIGlkPSJjYW52YXMiPiA8L2NhbnZhcz4KKzxjYW52YXMg
aWQ9ImNhbnZhcyIgd2lkdGg9IjIiIGhlaWdodD0iMiI+IDwvY2FudmFzPgogCiA8c2NyaXB0Pgog
CkBAIC0zOCw2MCArMzgsNjEgQEAgZWxzZSB7CiAKICAgICBkZWJ1ZygiIik7CiAgICAgZGVidWco
IkNoZWNrIGRlZmF1bHQgdmFsdWVzIik7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdl
cihjb250ZXh0LkFDVElWRV9URVhUVVJFKScsICdjb250ZXh0LlRFWFRVUkUwJyk7Ci0gICAgc2hv
dWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkFMSUFTRURfTElORV9XSURUSF9SQU5H
RSknLCAnMScpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5BTElB
U0VEX1BPSU5UX1NJWkVfUkFOR0UpJywgJzEnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJ
bnRlZ2VyKGNvbnRleHQuQVJSQVlfQlVGRkVSX0JJTkRJTkcpJywgJzAnKTsKLSAgICBzaG91bGRC
ZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuQkxFTkQpJywgJzAnKTsKLSAgICBzaG91bGRC
ZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuQkxFTkRfQ09MT1IpJywgJzAnKTsKLSAgICBz
aG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuQkxFTkRfRFNUX0FMUEhBKScsICcw
Jyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkJMRU5EX0RTVF9S
R0IpJywgJzAnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuQkxF
TkRfRVFVQVRJT05fQUxQSEEpJywgJ2NvbnRleHQuRlVOQ19BREQnKTsKLSAgICBzaG91bGRCZSgn
Y29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuQkxFTkRfRVFVQVRJT05fUkdCKScsICdjb250ZXh0
LkZVTkNfQUREJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkJM
RU5EX1NSQ19BTFBIQSknLCAnMScpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIo
Y29udGV4dC5CTEVORF9TUkNfUkdCKScsICcxJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0
SW50ZWdlcihjb250ZXh0LkNPTE9SX0NMRUFSX1ZBTFVFKScsICcwJyk7Ci0gICAgc2hvdWxkQmUo
J2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkNPTE9SX1dSSVRFTUFTSyknLCAnMScpOwotICAg
IHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5DVUxMX0ZBQ0UpJywgJzAnKTsK
LSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuQ1VMTF9GQUNFX01PREUp
JywgJ2NvbnRleHQuQkFDSycpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29u
dGV4dC5DVVJSRU5UX1BST0dSQU0pJywgJzAnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJ
bnRlZ2VyKGNvbnRleHQuREVQVEhfRlVOQyknLCAnY29udGV4dC5MRVNTJyk7Ci0gICAgc2hvdWxk
QmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkRFUFRIX1JBTkdFKScsICcwJyk7Ci0gICAg
c2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkRFUFRIX1RFU1QpJywgJzAnKTsK
LSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuREVQVEhfV1JJVEVNQVNL
KScsICcxJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkRJVEhF
UiknLCAnMScpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5FTEVN
RU5UX0FSUkFZX0JVRkZFUl9CSU5ESU5HKScsICcwJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQu
Z2V0SW50ZWdlcihjb250ZXh0LkZST05UX0ZBQ0UpJywgJ2NvbnRleHQuQ0NXJyk7Ci0gICAgc2hv
dWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkdFTkVSQVRFX01JUE1BUF9ISU5UKScs
ICdjb250ZXh0LkRPTlRfQ0FSRScpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIo
Y29udGV4dC5MSU5FX1dJRFRIKScsICcxJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50
ZWdlcihjb250ZXh0LlBPTFlHT05fT0ZGU0VUX0ZBQ1RPUiknLCAnMCcpOwotICAgIHNob3VsZEJl
KCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5QT0xZR09OX09GRlNFVF9GSUxMKScsICcwJyk7
Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlBPTFlHT05fT0ZGU0VU
X1VOSVRTKScsICcwJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0
LlJFTkRFUkJVRkZFUl9CSU5ESU5HX0VYVCknLCAnMCcpOwotICAgIHNob3VsZEJlKCdjb250ZXh0
LmdldEludGVnZXIoY29udGV4dC5TQU1QTEVfQ09WRVJBR0VfSU5WRVJUKScsICcwJyk7Ci0gICAg
c2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlNBTVBMRV9DT1ZFUkFHRV9WQUxV
RSknLCAnMScpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TQ0lT
U09SX0JPWCknLCAnMCcpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4
dC5TQ0lTU09SX1RFU1QpJywgJzAnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2Vy
KGNvbnRleHQuU1RFTkNJTF9CQUNLX0ZBSUwpJywgJ2NvbnRleHQuS0VFUCcpOwotICAgIHNob3Vs
ZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVOQ0lMX0JBQ0tfRlVOQyknLCAnY29u
dGV4dC5BTFdBWVMnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQu
U1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfRkFJTCknLCAnY29udGV4dC5LRUVQJyk7Ci0gICAgc2hv
dWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlNURU5DSUxfQkFDS19QQVNTX0RFUFRI
X1BBU1MpJywgJ2NvbnRleHQuS0VFUCcpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVn
ZXIoY29udGV4dC5TVEVOQ0lMX0JBQ0tfUkVGKScsICcwJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRl
eHQuZ2V0SW50ZWdlcihjb250ZXh0LlNURU5DSUxfQkFDS19WQUxVRV9NQVNLKScsICctMScpOwot
ICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVOQ0lMX0JBQ0tfV1JJ
VEVNQVNLKScsICctMScpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4
dC5TVEVOQ0lMX0JJVFMpJywgJzAnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2Vy
KGNvbnRleHQuU1RFTkNJTF9DTEVBUl9WQUxVRSknLCAnMCcpOwotICAgIHNob3VsZEJlKCdjb250
ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVOQ0lMX0ZBSUwpJywgJ2NvbnRleHQuS0VFUCcpOwot
ICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVOQ0lMX0ZVTkMpJywg
J2NvbnRleHQuQUxXQVlTJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250
ZXh0LlNURU5DSUxfUEFTU19ERVBUSF9GQUlMKScsICdjb250ZXh0LktFRVAnKTsKLSAgICBzaG91
bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9QQVNTX0RFUFRIX1BBU1Mp
JywgJ2NvbnRleHQuS0VFUCcpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29u
dGV4dC5TVEVOQ0lMX1JFRiknLCAnMCcpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVn
ZXIoY29udGV4dC5TVEVOQ0lMX1RFU1QpJywgJzAnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5n
ZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9WQUxVRV9NQVNLKScsICctMScpOwotICAgIHNob3Vs
ZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVOQ0lMX1dSSVRFTUFTSyknLCAnLTEn
KTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuVEVYVFVSRV9CSU5E
SU5HXzJEKScsICcwJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0
LlRFWFRVUkVfQklORElOR19DVUJFX01BUCknLCAnMCcpOwotICAgIHNob3VsZEJlKCdjb250ZXh0
LmdldEludGVnZXIoY29udGV4dC5WSUVXUE9SVCknLCAnMCcpOworICAgIHNob3VsZEJlKCdjb250
ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkFDVElWRV9URVhUVVJFKScsICdjb250ZXh0LlRFWFRV
UkUwJyk7CisgICAgc2hvdWxkQmUoJyhjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkFMSUFT
RURfTElORV9XSURUSF9SQU5HRSlbMF0gPT0gMSkgfHwgKGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNv
bnRleHQuQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFKVsxXSA9PSAxKScsICd0cnVlJyk7CisgICAg
c2hvdWxkQmUoJyhjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkFMSUFTRURfUE9JTlRfU0la
RV9SQU5HRSlbMF0gPT0gMSkgfHwgKGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQUxJQVNF
RF9QT0lOVF9TSVpFX1JBTkdFKVsxXSA9PSAxKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ2Nv
bnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQVJSQVlfQlVGRkVSX0JJTkRJTkcpJywgJ251bGwn
KTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5CTEVORCknLCAn
ZmFsc2UnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5CTEVO
RF9DT0xPUiknLCAnWzAsIDAsIDAsIDBdJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFy
YW1ldGVyKGNvbnRleHQuQkxFTkRfRFNUX0FMUEhBKScsICcwJyk7CisgICAgc2hvdWxkQmUoJ2Nv
bnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQkxFTkRfRFNUX1JHQiknLCAnMCcpOworICAgIHNo
b3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkJMRU5EX0VRVUFUSU9OX0FMUEhB
KScsICdjb250ZXh0LkZVTkNfQUREJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1l
dGVyKGNvbnRleHQuQkxFTkRfRVFVQVRJT05fUkdCKScsICdjb250ZXh0LkZVTkNfQUREJyk7Cisg
ICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQkxFTkRfU1JDX0FMUEhB
KScsICcxJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQkxF
TkRfU1JDX1JHQiknLCAnMScpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihj
b250ZXh0LkNPTE9SX0NMRUFSX1ZBTFVFKScsICdbMCwgMCwgMCwgMF0nKTsKKyAgICBzaG91bGRC
ZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5DT0xPUl9XUklURU1BU0spJywgJ1sxLCAx
LCAxLCAxXScpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkNV
TExfRkFDRSknLCAnZmFsc2UnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIo
Y29udGV4dC5DVUxMX0ZBQ0VfTU9ERSknLCAnY29udGV4dC5CQUNLJyk7CisgICAgc2hvdWxkQmUo
J2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQ1VSUkVOVF9QUk9HUkFNKScsICdudWxsJyk7
CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuREVQVEhfRlVOQykn
LCAnY29udGV4dC5MRVNTJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNv
bnRleHQuREVQVEhfUkFOR0UpJywgJ1swLCAxXScpOworICAgIHNob3VsZEJlKCdjb250ZXh0Lmdl
dFBhcmFtZXRlcihjb250ZXh0LkRFUFRIX1RFU1QpJywgJ2ZhbHNlJyk7CisgICAgc2hvdWxkQmUo
J2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuREVQVEhfV1JJVEVNQVNLKScsICd0cnVlJyk7
CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuRElUSEVSKScsICd0
cnVlJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuRUxFTUVO
VF9BUlJBWV9CVUZGRVJfQklORElORyknLCAnbnVsbCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0
LmdldFBhcmFtZXRlcihjb250ZXh0LkZST05UX0ZBQ0UpJywgJ2NvbnRleHQuQ0NXJyk7CisgICAg
c2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuR0VORVJBVEVfTUlQTUFQX0hJ
TlQpJywgJ2NvbnRleHQuRE9OVF9DQVJFJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFy
YW1ldGVyKGNvbnRleHQuTElORV9XSURUSCknLCAnMScpOworICAgIHNob3VsZEJlKCdjb250ZXh0
LmdldFBhcmFtZXRlcihjb250ZXh0LlBPTFlHT05fT0ZGU0VUX0ZBQ1RPUiknLCAnMCcpOworICAg
IHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlBPTFlHT05fT0ZGU0VUX0ZJ
TEwpJywgJ2ZhbHNlJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRl
eHQuUE9MWUdPTl9PRkZTRVRfVU5JVFMpJywgJzAnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5n
ZXRQYXJhbWV0ZXIoY29udGV4dC5SRU5ERVJCVUZGRVJfQklORElORyknLCAnbnVsbCcpOworICAg
IHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNBTVBMRV9DT1ZFUkFHRV9J
TlZFUlQpJywgJ2ZhbHNlJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNv
bnRleHQuU0FNUExFX0NPVkVSQUdFX1ZBTFVFKScsICcxJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRl
eHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU0NJU1NPUl9CT1gpWzBdJywgJzAnKTsKKyAgICBzaG91
bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TQ0lTU09SX0JPWClbMV0nLCAnMCcp
OworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNDSVNTT1JfVEVT
VCknLCAnZmFsc2UnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4
dC5TVEVOQ0lMX0JBQ0tfRkFJTCknLCAnY29udGV4dC5LRUVQJyk7CisgICAgc2hvdWxkQmUoJ2Nv
bnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9CQUNLX0ZVTkMpJywgJ2NvbnRleHQu
QUxXQVlTJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RF
TkNJTF9CQUNLX1BBU1NfREVQVEhfRkFJTCknLCAnY29udGV4dC5LRUVQJyk7CisgICAgc2hvdWxk
QmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhf
UEFTUyknLCAnY29udGV4dC5LRUVQJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1l
dGVyKGNvbnRleHQuU1RFTkNJTF9CQUNLX1JFRiknLCAnMCcpOworICAgIHNob3VsZEJlKCdjb250
ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5DSUxfQkFDS19WQUxVRV9NQVNLKScsICcweEZG
RkZGRkZGJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RF
TkNJTF9CQUNLX1dSSVRFTUFTSyknLCAnMHhGRkZGRkZGRicpOworICAgIHNob3VsZEJlKCdjb250
ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5DSUxfQklUUyknLCAnMCcpOworICAgIHNob3Vs
ZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5DSUxfQ0xFQVJfVkFMVUUpJywg
JzAnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lM
X0ZBSUwpJywgJ2NvbnRleHQuS0VFUCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFt
ZXRlcihjb250ZXh0LlNURU5DSUxfRlVOQyknLCAnY29udGV4dC5BTFdBWVMnKTsKKyAgICBzaG91
bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX1BBU1NfREVQVEhfRkFJ
TCknLCAnY29udGV4dC5LRUVQJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVy
KGNvbnRleHQuU1RFTkNJTF9QQVNTX0RFUFRIX1BBU1MpJywgJ2NvbnRleHQuS0VFUCcpOworICAg
IHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5DSUxfUkVGKScsICcw
Jyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9U
RVNUKScsICdmYWxzZScpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250
ZXh0LlNURU5DSUxfVkFMVUVfTUFTSyknLCAnMHhGRkZGRkZGRicpOworICAgIHNob3VsZEJlKCdj
b250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5DSUxfV1JJVEVNQVNLKScsICcweEZGRkZG
RkZGJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuVEVYVFVS
RV9CSU5ESU5HXzJEKScsICdudWxsJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1l
dGVyKGNvbnRleHQuVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQKScsICdudWxsJyk7CisgICAgc2hv
dWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuVklFV1BPUlQpJywgJ1swLCAwLCAy
LCAyXScpOwogfQogCiBkZWJ1ZygiIik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93
ZWJnbC9nbC1vYmplY3QtZ2V0LWNhbGxzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC1vYmplY3QtZ2V0LWNhbGxzLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLW9iamVj
dC1nZXQtY2FsbHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgwIEBACitU
ZXN0IG9mIGdldCBjYWxscyBhZ2FpbnN0IEdMIG9iamVjdHMgbGlrZSBnZXRCdWZmZXJQYXJhbWV0
ZXIsIGV0Yy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIGdsLmdldEJ1ZmZl
clBhcmFtZXRlcihnbC5BUlJBWV9CVUZGRVIsIGdsLkJVRkZFUl9TSVpFKSBpcyAxNgorUEFTUyBn
bC5nZXRCdWZmZXJQYXJhbWV0ZXIoZ2wuQVJSQVlfQlVGRkVSLCBnbC5CVUZGRVJfVVNBR0UpIGlz
IGdsLkRZTkFNSUNfRFJBVworUEFTUyBnbC5nZXRFcnJvcigpIGlzIDAKK1BBU1MgZ2wuZ2V0RXJy
b3IoKSBpcyAwCitQQVNTIGdsLmdldEVycm9yKCkgaXMgMAorUEFTUyBnbC5jaGVja0ZyYW1lYnVm
ZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSBpcyBnbC5GUkFNRUJVRkZFUl9DT01QTEVURQorUEFT
UyBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGds
LkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBF
KSBpcyBnbC5URVhUVVJFCitQQVNTIGdsLmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRl
cihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLkZSQU1FQlVGRkVSX0FU
VEFDSE1FTlRfT0JKRUNUX05BTUUpIGlzIG5vbi1udWxsLgorUEFTUyBnbC5nZXRGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQw
LCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfTEVWRUwpIGlzIDAKK1BBU1MgZ2wu
Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xP
Ul9BVFRBQ0hNRU5UMCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQ
X0ZBQ0UpIGlzIDAKK1BBU1MgZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGds
LkZSQU1FQlVGRkVSLCBnbC5ERVBUSF9BVFRBQ0hNRU5ULCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hN
RU5UX09CSkVDVF9UWVBFKSBpcyBnbC5SRU5ERVJCVUZGRVIKK1BBU1MgZ2wuZ2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5ERVBUSF9BVFRBQ0hNRU5U
LCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FKSBpcyBub24tbnVsbC4KK1BB
U1MgZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihzdGFuZGFyZFByb2dyYW0sIGdsLkRFTEVURV9TVEFU
VVMpIGlzIGZhbHNlCitQQVNTIGdsLmdldFByb2dyYW1QYXJhbWV0ZXIoc3RhbmRhcmRQcm9ncmFt
LCBnbC5MSU5LX1NUQVRVUykgaXMgdHJ1ZQorUEFTUyB0eXBlb2YgZ2wuZ2V0UHJvZ3JhbVBhcmFt
ZXRlcihzdGFuZGFyZFByb2dyYW0sIGdsLlZBTElEQVRFX1NUQVRVUykgaXMgImJvb2xlYW4iCitQ
QVNTIHR5cGVvZiBnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHN0YW5kYXJkUHJvZ3JhbSwgZ2wuSU5G
T19MT0dfTEVOR1RIKSBpcyAibnVtYmVyIgorUEFTUyBnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHN0
YW5kYXJkUHJvZ3JhbSwgZ2wuQVRUQUNIRURfU0hBREVSUykgaXMgMgorUEFTUyBnbC5nZXRQcm9n
cmFtUGFyYW1ldGVyKHN0YW5kYXJkUHJvZ3JhbSwgZ2wuQUNUSVZFX0FUVFJJQlVURVMpIGlzIDIK
K1BBU1MgZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihzdGFuZGFyZFByb2dyYW0sIGdsLkFDVElWRV9B
VFRSSUJVVEVfTUFYX0xFTkdUSCkgaXMgbm9uLXplcm8uCitQQVNTIGdsLmdldFByb2dyYW1QYXJh
bWV0ZXIoc3RhbmRhcmRQcm9ncmFtLCBnbC5BQ1RJVkVfVU5JRk9STVMpIGlzIDEKK1BBU1MgZ2wu
Z2V0UHJvZ3JhbVBhcmFtZXRlcihzdGFuZGFyZFByb2dyYW0sIGdsLkFDVElWRV9VTklGT1JNX01B
WF9MRU5HVEgpIGlzIG5vbi16ZXJvLgorUEFTUyBnbC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIo
Z2wuUkVOREVSQlVGRkVSLCBnbC5SRU5ERVJCVUZGRVJfV0lEVEgpIGlzIDIKK1BBU1MgZ2wuZ2V0
UmVuZGVyYnVmZmVyUGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkVOREVSQlVGRkVSX0hF
SUdIVCkgaXMgMgorUEFTUyBnbC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoZ2wuUkVOREVSQlVG
RkVSLCBnbC5SRU5ERVJCVUZGRVJfSU5URVJOQUxfRk9STUFUKSBpcyBub24temVyby4KK1BBU1Mg
Z2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkVOREVSQlVG
RkVSX0RFUFRIX1NJWkUpIGlzIG5vbi16ZXJvLgorUEFTUyBnbC5nZXRFcnJvcigpIGlzIDAKK1BB
U1MgZ2wuZ2V0RXJyb3IoKSBpcyAwCitQQVNTIGdsLmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcihn
bC5SRU5ERVJCVUZGRVIsIGdsLlJFTkRFUkJVRkZFUl9SRURfU0laRSkgaXMgbm9uLXplcm8uCitQ
QVNTIGdsLmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcihnbC5SRU5ERVJCVUZGRVIsIGdsLlJFTkRF
UkJVRkZFUl9HUkVFTl9TSVpFKSBpcyBub24temVyby4KK1BBU1MgZ2wuZ2V0UmVuZGVyYnVmZmVy
UGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkVOREVSQlVGRkVSX0JMVUVfU0laRSkgaXMg
bm9uLXplcm8uCitQQVNTIGdsLmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcihnbC5SRU5ERVJCVUZG
RVIsIGdsLlJFTkRFUkJVRkZFUl9BTFBIQV9TSVpFKSBpcyBub24temVyby4KK1BBU1MgZ2wuZ2V0
U2hhZGVyUGFyYW1ldGVyKHN0YW5kYXJkVmVydCwgZ2wuU0hBREVSX1RZUEUpIGlzIGdsLlZFUlRF
WF9TSEFERVIKK1BBU1MgZ2wuZ2V0U2hhZGVyUGFyYW1ldGVyKHN0YW5kYXJkVmVydCwgZ2wuREVM
RVRFX1NUQVRVUykgaXMgZmFsc2UKK1BBU1MgZ2wuZ2V0U2hhZGVyUGFyYW1ldGVyKHN0YW5kYXJk
VmVydCwgZ2wuQ09NUElMRV9TVEFUVVMpIGlzIHRydWUKK1BBU1MgdHlwZW9mIGdsLmdldFNoYWRl
clBhcmFtZXRlcihzdGFuZGFyZFZlcnQsIGdsLklORk9fTE9HX0xFTkdUSCkgaXMgIm51bWJlciIK
K1BBU1MgZ2wuZ2V0U2hhZGVyUGFyYW1ldGVyKHN0YW5kYXJkVmVydCwgZ2wuU0hBREVSX1NPVVJD
RV9MRU5HVEgpIGlzIG5vbi16ZXJvLgorUEFTUyBnbC5nZXRUZXhQYXJhbWV0ZXIoZ2wuVEVYVFVS
RV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSKSBpcyBnbC5ORUFSRVNUCitQQVNTIGdsLmdldFRl
eFBhcmFtZXRlcihnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIpIGlzIGdsLk5F
QVJFU1QKK1BBU1MgZ2wuZ2V0VGV4UGFyYW1ldGVyKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVf
V1JBUF9TKSBpcyBnbC5DTEFNUF9UT19FREdFCitQQVNTIGdsLmdldFRleFBhcmFtZXRlcihnbC5U
RVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfVCkgaXMgZ2wuQ0xBTVBfVE9fRURHRQorUEFTUyBn
bC5nZXRQcm9ncmFtUGFyYW1ldGVyKGJvb2xQcm9ncmFtLCBnbC5MSU5LX1NUQVRVUykgaXMgdHJ1
ZQorUEFTUyBnbC5nZXRFcnJvcigpIGlzIDAKK1BBU1MgZ2wuZ2V0VW5pZm9ybShib29sUHJvZ3Jh
bSwgYnZhbExvYykgaXMgdHJ1ZQorUEFTUyBnbC5nZXRVbmlmb3JtKGJvb2xQcm9ncmFtLCBidmFs
MkxvYykgaXMgWzEsIDBdCitQQVNTIGdsLmdldFVuaWZvcm0oYm9vbFByb2dyYW0sIGJ2YWwzTG9j
KSBpcyBbMSwgMCwgMV0KK1BBU1MgZ2wuZ2V0VW5pZm9ybShib29sUHJvZ3JhbSwgYnZhbDRMb2Mp
IGlzIFsxLCAwLCAxLCAwXQorUEFTUyBnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKGludFByb2dyYW0s
IGdsLkxJTktfU1RBVFVTKSBpcyB0cnVlCitQQVNTIGdsLmdldEVycm9yKCkgaXMgMAorUEFTUyBn
bC5nZXRVbmlmb3JtKGludFByb2dyYW0sIGl2YWxMb2MpIGlzIDEKK1BBU1MgZ2wuZ2V0VW5pZm9y
bShpbnRQcm9ncmFtLCBpdmFsMkxvYykgaXMgWzIsIDNdCitQQVNTIGdsLmdldFVuaWZvcm0oaW50
UHJvZ3JhbSwgaXZhbDNMb2MpIGlzIFs0LCA1LCA2XQorUEFTUyBnbC5nZXRVbmlmb3JtKGludFBy
b2dyYW0sIGl2YWw0TG9jKSBpcyBbNywgOCwgOSwgMTBdCitQQVNTIGdsLmdldFByb2dyYW1QYXJh
bWV0ZXIoZmxvYXRQcm9ncmFtLCBnbC5MSU5LX1NUQVRVUykgaXMgdHJ1ZQorUEFTUyBnbC5nZXRF
cnJvcigpIGlzIDAKK1BBU1MgZ2wuZ2V0VW5pZm9ybShmbG9hdFByb2dyYW0sIGZ2YWxMb2MpIGlz
IDExCitQQVNTIGdsLmdldFVuaWZvcm0oZmxvYXRQcm9ncmFtLCBmdmFsMkxvYykgaXMgWzEyLCAx
M10KK1BBU1MgZ2wuZ2V0VW5pZm9ybShmbG9hdFByb2dyYW0sIGZ2YWwzTG9jKSBpcyBbMTQsIDE1
LCAxNl0KK1BBU1MgZ2wuZ2V0VW5pZm9ybShmbG9hdFByb2dyYW0sIGZ2YWw0TG9jKSBpcyBbMTcs
IDE4LCAxOSwgMjBdCitQQVNTIGdsLmdldFByb2dyYW1QYXJhbWV0ZXIobWF0UHJvZ3JhbSwgZ2wu
TElOS19TVEFUVVMpIGlzIHRydWUKK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyAwCitQQVNTIGdsLmdl
dFVuaWZvcm0obWF0UHJvZ3JhbSwgbXZhbDJMb2MpIGlzIFsxLCAyLCAzLCA0XQorUEFTUyBnbC5n
ZXRVbmlmb3JtKG1hdFByb2dyYW0sIG12YWwzTG9jKSBpcyBbNSwgNiwgNywgOCwgOSwgMTAsIDEx
LCAxMiwgMTNdCitQQVNTIGdsLmdldFVuaWZvcm0obWF0UHJvZ3JhbSwgbXZhbDRMb2MpIGlzIFsx
NCwgMTUsIDE2LCAxNywgMTgsIDE5LCAyMCwgMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4
LCAyOV0KK1BBU1MgZ2wuZ2V0VmVydGV4QXR0cmliKDEsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlf
QlVGRkVSX0JJTkRJTkcpIGlzIG5vbi1udWxsLgorUEFTUyBnbC5nZXRWZXJ0ZXhBdHRyaWIoMSwg
Z2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVEKSBpcyB0cnVlCitQQVNTIGdsLmdldFZlcnRl
eEF0dHJpYigxLCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX1NJWkUpIGlzIDQKK1BBU1MgKGdsLmdl
dFZlcnRleEF0dHJpYigxLCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX1NUUklERSkgPT0gMCkgfHwg
KGdsLmdldFZlcnRleEF0dHJpYigxLCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX1NUUklERSkgPT0g
NCAqIGdsLnNpemVJbkJ5dGVzKGdsLkZMT0FUKSkgaXMgdHJ1ZQorUEFTUyBnbC5nZXRWZXJ0ZXhB
dHRyaWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFKSBpcyBnbC5GTE9BVAorUEFTUyBn
bC5nZXRWZXJ0ZXhBdHRyaWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9OT1JNQUxJWkVEKSBp
cyBmYWxzZQorUEFTUyBnbC5nZXRWZXJ0ZXhBdHRyaWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJB
WV9FTkFCTEVEKSBpcyBmYWxzZQorUEFTUyBnbC5nZXRWZXJ0ZXhBdHRyaWIoMSwgZ2wuQ1VSUkVO
VF9WRVJURVhfQVRUUklCKSBpcyBbNSwgNiwgNywgOF0KK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyAw
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wtb2JqZWN0LWdldC1jYWxscy5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLW9iamVjdC1n
ZXQtY2FsbHMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dl
YmdsL2dsLW9iamVjdC1nZXQtY2FsbHMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBA
QAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
d2ViZ2wtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2Ny
aXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0IHNyYz0i
c2NyaXB0LXRlc3RzL2dsLW9iamVjdC1nZXQtY2FsbHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0
IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9pbmNvcnJl
Y3QtY29udGV4dC1vYmplY3QtYmVoYXZpb3VyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9pbmNvcnJlY3QtY29udGV4dC1vYmplY3QtYmVo
YXZpb3VyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNTEzMzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC9pbmNvcnJlY3QtY29udGV4dC1vYmplY3QtYmVoYXZpb3VyLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTcsMTcgKzE3LDEyIEBAIFBBU1MgY29udGV4dEEuYmlu
ZFJlbmRlcmJ1ZmZlcihjb250ZXh0QS4KIFBBU1MgY29udGV4dEEuYmluZFRleHR1cmUoY29udGV4
dEEuVEVYVFVSRV8yRCwgdGV4dHVyZUIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNN
QVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCiBQQVNTIGNvbnRleHRBLmZyYW1lYnVmZmVyUmVu
ZGVyYnVmZmVyKGNvbnRleHRBLkZSQU1FQlVGRkVSLCBjb250ZXh0QS5ERVBUSF9BVFRBQ0hNRU5U
LCBjb250ZXh0QS5SRU5ERVJCVUZGRVIsIHJlbmRlckJ1ZmZlckIpIHRocmV3IGV4Y2VwdGlvbiBF
cnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCiBQQVNTIGNvbnRleHRB
LmZyYW1lYnVmZmVyVGV4dHVyZTJEKGNvbnRleHRBLkZSQU1FQlVGRkVSLCBjb250ZXh0QS5DT0xP
Ul9BVFRBQ0hNRU5UMCwgY29udGV4dEEuVEVYVFVSRV8yRCwgdGV4dHVyZUIsIDApIHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNT
IGNvbnRleHRBLmdldFByb2dyYW1pKHByb2dyYW1CLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6
IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0QS5nZXRQ
cm9ncmFtaXYocHJvZ3JhbUIsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRD
SF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCitQQVNTIGNvbnRleHRBLmdldFByb2dyYW1QYXJhbWV0
ZXIocHJvZ3JhbUIsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6
IERPTSBFeGNlcHRpb24gMTcuCiBQQVNTIGNvbnRleHRBLmdldFByb2dyYW1JbmZvTG9nKHByb2dy
YW1CLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhj
ZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0QS5nZXRTaGFkZXJpKHNoYWRlckIsIDApIHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCi1QQVNT
IGNvbnRleHRBLmdldFNoYWRlcml2KHNoYWRlckIsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjog
VFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCitQQVNTIGNvbnRleHRBLmdldFNo
YWRlclBhcmFtZXRlcihzaGFkZXJCLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlT
TUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBjb250ZXh0QS5nZXRTaGFkZXJJbmZv
TG9nKHNoYWRlckIsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6
IERPTSBFeGNlcHRpb24gMTcuCiBQQVNTIGNvbnRleHRBLmdldFNoYWRlclNvdXJjZShzaGFkZXJC
KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9u
IDE3LgotUEFTUyBjb250ZXh0QS5nZXRVbmlmb3JtZihwcm9ncmFtQiwgbG9jYXRpb25BKSB0aHJl
dyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3Lgot
UEFTUyBjb250ZXh0QS5nZXRVbmlmb3JtZnYocHJvZ3JhbUIsIGxvY2F0aW9uQSkgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1Mg
Y29udGV4dEEuZ2V0VW5pZm9ybWkocHJvZ3JhbUIsIGxvY2F0aW9uQSkgdGhyZXcgZXhjZXB0aW9u
IEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4
dEEuZ2V0VW5pZm9ybWl2KHByb2dyYW1CLCBsb2NhdGlvbkEpIHRocmV3IGV4Y2VwdGlvbiBFcnJv
cjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCitQQVNTIGNvbnRleHRBLmdl
dFVuaWZvcm0ocHJvZ3JhbUIsIGxvY2F0aW9uQSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBF
X01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KIFBBU1MgY29udGV4dEEuZ2V0VW5pZm9y
bUxvY2F0aW9uKHByb2dyYW1CLCAndV9tb2RlbFZpZXdQcm9qTWF0cml4JykgdGhyZXcgZXhjZXB0
aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KIFBBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
d2ViZ2wvbnVsbC1vYmplY3QtYmVoYXZpb3VyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9udWxsLW9iamVjdC1iZWhhdmlvdXItZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiA1MTMzNSkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmds
L251bGwtb2JqZWN0LWJlaGF2aW91ci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE4
LDE3ICsxOCwxMiBAQCBQQVNTIGNvbnRleHQuYmluZFJlbmRlcmJ1ZmZlcihjb250ZXh0LlJFCiBQ
QVNTIGNvbnRleHQuYmluZFRleHR1cmUoY29udGV4dC5URVhUVVJFXzJELCAwKSBpcyB1bmRlZmlu
ZWQuCiBQQVNTIGNvbnRleHQuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoY29udGV4dC5GUkFNRUJV
RkZFUiwgY29udGV4dC5ERVBUSF9BVFRBQ0hNRU5ULCBjb250ZXh0LlJFTkRFUkJVRkZFUiwgMCkg
aXMgdW5kZWZpbmVkLgogUEFTUyBjb250ZXh0LmZyYW1lYnVmZmVyVGV4dHVyZTJEKGNvbnRleHQu
RlJBTUVCVUZGRVIsIGNvbnRleHQuQ09MT1JfQVRUQUNITUVOVDAsIGNvbnRleHQuVEVYVFVSRV8y
RCwgMCwgMCkgaXMgdW5kZWZpbmVkLgotUEFTUyBjb250ZXh0LmdldFByb2dyYW1pKHVuZGVmaW5l
ZCwgMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2Vw
dGlvbiAxNy4KLVBBU1MgY29udGV4dC5nZXRQcm9ncmFtaXYodW5kZWZpbmVkLCAwKSB0aHJldyBl
eGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgorUEFT
UyBjb250ZXh0LmdldFByb2dyYW1QYXJhbWV0ZXIodW5kZWZpbmVkLCAwKSB0aHJldyBleGNlcHRp
b24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBjb250
ZXh0LmdldFByb2dyYW1JbmZvTG9nKHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9y
OiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4dC5nZXRT
aGFkZXJpKHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENI
X0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4dC5nZXRTaGFkZXJpdih1bmRlZmlu
ZWQsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNl
cHRpb24gMTcuCitQQVNTIGNvbnRleHQuZ2V0U2hhZGVyUGFyYW1ldGVyKHVuZGVmaW5lZCwgMCkg
dGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAx
Ny4KIFBBU1MgY29udGV4dC5nZXRTaGFkZXJJbmZvTG9nKHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KIFBBU1Mg
Y29udGV4dC5nZXRTaGFkZXJTb3VyY2UodW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gRXJyb3I6
IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0LmdldFVu
aWZvcm1mKHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENI
X0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4dC5nZXRVbmlmb3JtZnYodW5kZWZp
bmVkLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhj
ZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0LmdldFVuaWZvcm1pKHVuZGVmaW5lZCwgMCkgdGhyZXcg
ZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBB
U1MgY29udGV4dC5nZXRVbmlmb3JtaXYodW5kZWZpbmVkLCAwKSB0aHJldyBleGNlcHRpb24gRXJy
b3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgorUEFTUyBjb250ZXh0Lmdl
dFVuaWZvcm0odW5kZWZpbmVkLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFU
Q0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBjb250ZXh0LmdldFVuaWZvcm1Mb2NhdGlv
bih1bmRlZmluZWQsICdmb28nKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hf
RVJSOiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQog
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC90cmlhbmdsZS5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3RyaWFuZ2xlLmh0bWwJKHJl
dmlzaW9uIDUxMzM1KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvdHJpYW5nbGUu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtNjQsMTEgKzY0LDExIEBACiAgICAgICAgICAgICB2YXIg
b2Zmc2V0ID0gKDE1KjUwKzIwKSAqIDQ7CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IDEwOyArK2kpCiAgICAgICAgICAgICAgICAgaWYgKGJ1ZltvZmZzZXQraSo0XSAhPSAyNTUgfHwg
YnVmW29mZnNldCtpKjQrMV0gIT0gMCB8fCBidWZbb2Zmc2V0K2kqNCsyXSAhPSAwIHx8IGJ1Zltv
ZmZzZXQraSo0KzNdICE9IDI1NSkgewotICAgICAgICAgICAgICAgICAgICBmYWlsKDIwLCAxNSwg
YnVmLCAiKDI1NSwwLDAsMjU1KSIpOworICAgICAgICAgICAgICAgICAgICBmYWlsKDIwICsgaSwg
MTUsIGJ1ZiwgIigyNTUsMCwwLDI1NSkiKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIExhc3QgbGluZSBzaG91bGQgYmUgYWxs
IGJsYWNrCi0gICAgICAgICAgICBvZmZzZXQgPSAoNDkqNTApICogNAorICAgICAgICAgICAgb2Zm
c2V0ID0gKDQ5KjUwKSAqIDQ7CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDUwOyAr
K2kpCiAgICAgICAgICAgICAgICAgaWYgKGJ1ZltvZmZzZXQraSo0XSAhPSAwIHx8IGJ1ZltvZmZz
ZXQraSo0KzFdICE9IDAgfHwgYnVmW29mZnNldCtpKjQrMl0gIT0gMCB8fCBidWZbb2Zmc2V0K2kq
NCszXSAhPSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAgZmFpbChpLCA0OSwgYnVmLCAiKDAs
MCwwLDI1NSkiKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNl
cy9ib29sVW5pZm9ybVNoYWRlci52ZXJ0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL3Jlc291cmNlcy9ib29sVW5pZm9ybVNoYWRlci52ZXJ0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL2Jvb2xVbmlmb3Jt
U2hhZGVyLnZlcnQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKK3VuaWZvcm0gYm9vbCBi
dmFsOwordW5pZm9ybSBidmVjMiBidmFsMjsKK3VuaWZvcm0gYnZlYzMgYnZhbDM7Cit1bmlmb3Jt
IGJ2ZWM0IGJ2YWw0OworCit2b2lkIG1haW4oKQoreworICAgIGJvb2wgYWxsU2V0ID0gYnZhbAor
ICAgICAgICAgICAgJiYgYnZhbDJbMF0gJiYgYnZhbDJbMV0KKyAgICAgICAgICAgICYmIGJ2YWwz
WzBdICYmIGJ2YWwzWzFdICYmIGJ2YWwzWzJdCisgICAgICAgICAgICAmJiBidmFsNFswXSAmJiBi
dmFsNFsxXSAmJiBidmFsNFsyXSAmJiBidmFsNFszXTsKKyAgICBnbF9Qb3NpdGlvbiA9IHZlYzQo
KGFsbFNldCA/IDEuMCA6IC0xLjApLCAwLjAsIDAuMCwgMS4wKTsKK30KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy9mbG9hdFVuaWZvcm1TaGFkZXIudmVydAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvZmxv
YXRVbmlmb3JtU2hhZGVyLnZlcnQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy93ZWJnbC9yZXNvdXJjZXMvZmxvYXRVbmlmb3JtU2hhZGVyLnZlcnQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTMgQEAKK3VuaWZvcm0gZmxvYXQgZnZhbDsKK3VuaWZvcm0gdmVjMiBmdmFs
MjsKK3VuaWZvcm0gdmVjMyBmdmFsMzsKK3VuaWZvcm0gdmVjNCBmdmFsNDsKKwordm9pZCBtYWlu
KCkKK3sKKyAgICBmbG9hdCBzdW0gPSBmdmFsCisgICAgICAgICAgICArIGZ2YWwyWzBdICsgZnZh
bDJbMV0KKyAgICAgICAgICAgICsgZnZhbDNbMF0gKyBmdmFsM1sxXSArIGZ2YWwzWzJdCisgICAg
ICAgICAgICArIGZ2YWw0WzBdICsgZnZhbDRbMV0gKyBmdmFsNFsyXSArIGZ2YWw0WzNdOworICAg
IGdsX1Bvc2l0aW9uID0gdmVjNChzdW0sIDAuMCwgMC4wLCAxLjApOworfQpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL2ludFVuaWZvcm1TaGFkZXIudmVydAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvaW50
VW5pZm9ybVNoYWRlci52ZXJ0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvd2ViZ2wvcmVzb3VyY2VzL2ludFVuaWZvcm1TaGFkZXIudmVydAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxMyBAQAordW5pZm9ybSBpbnQgaXZhbDsKK3VuaWZvcm0gaXZlYzIgaXZhbDI7Cit1
bmlmb3JtIGl2ZWMzIGl2YWwzOwordW5pZm9ybSBpdmVjNCBpdmFsNDsKKwordm9pZCBtYWluKCkK
K3sKKyAgICBpbnQgc3VtID0gaXZhbAorICAgICAgICAgICAgKyBpdmFsMlswXSArIGl2YWwyWzFd
CisgICAgICAgICAgICArIGl2YWwzWzBdICsgaXZhbDNbMV0gKyBpdmFsM1syXQorICAgICAgICAg
ICAgKyBpdmFsNFswXSArIGl2YWw0WzFdICsgaXZhbDRbMl0gKyBpdmFsNFszXTsKKyAgICBnbF9Q
b3NpdGlvbiA9IHZlYzQoc3VtLCAwLjAsIDAuMCwgMS4wKTsKK30KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy9tYXRVbmlmb3JtU2hhZGVyLnZlcnQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL21hdFVuaWZv
cm1TaGFkZXIudmVydAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dl
YmdsL3Jlc291cmNlcy9tYXRVbmlmb3JtU2hhZGVyLnZlcnQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTAgQEAKK3VuaWZvcm0gbWF0MiBtdmFsMjsKK3VuaWZvcm0gbWF0MyBtdmFsMzsKK3VuaWZv
cm0gbWF0NCBtdmFsNDsKKwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9Qb3NpdGlvbiA9IHZlYzQo
bXZhbDIgKiB2ZWMyKDEuMCwgMi4wKSwgMC4wLCAwLjApCisgICAgICAgICAgICArIHZlYzQobXZh
bDMgKiB2ZWMzKDEuMCwgMi4wLCAzLjApLCAwLjApCisgICAgICAgICAgICArIG12YWw0ICogdmVj
NCgxLjAsIDIuMCwgMy4wLCA0LjApOworfQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
d2ViZ2wvcmVzb3VyY2VzL25vb3BVbmlmb3JtU2hhZGVyLmZyYWcKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL25vb3BVbmlmb3JtU2hhZGVyLmZy
YWcJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJj
ZXMvbm9vcFVuaWZvcm1TaGFkZXIuZnJhZwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACit2
b2lkIG1haW4oKQoreworICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAwLjAsIDAuMCwgMS4w
KTsKK30KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy91dGls
czNkLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Jlc291
cmNlcy91dGlsczNkLmpzCShyZXZpc2lvbiA1MTMzNSkKKysrIExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3dlYmdsL3Jlc291cmNlcy91dGlsczNkLmpzCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1
MSw3IEBAIGZ1bmN0aW9uIGluaXRXZWJHTChjYW52YXNOYW1lLCB2c2hhZGVyLCAKICAgICBnbC5s
aW5rUHJvZ3JhbShnbC5wcm9ncmFtKTsKIAogICAgIC8vIENoZWNrIHRoZSBsaW5rIHN0YXR1cwot
ICAgIHZhciBsaW5rZWQgPSBnbC5nZXRQcm9ncmFtaShnbC5wcm9ncmFtLCBnbC5MSU5LX1NUQVRV
Uyk7CisgICAgdmFyIGxpbmtlZCA9IGdsLmdldFByb2dyYW1QYXJhbWV0ZXIoZ2wucHJvZ3JhbSwg
Z2wuTElOS19TVEFUVVMpOwogICAgIGlmICghbGlua2VkKSB7CiAgICAgICAgIC8vIHNvbWV0aGlu
ZyB3ZW50IHdyb25nIHdpdGggdGhlIGxpbmsKICAgICAgICAgdmFyIGVycm9yID0gZ2wuZ2V0UHJv
Z3JhbUluZm9Mb2cgKGdsLnByb2dyYW0pOwpAQCAtMTEzLDcgKzExMyw3IEBAIGZ1bmN0aW9uIGxv
YWRTaGFkZXIoY3R4LCBzaGFkZXJJZCkKICAgICBjdHguY29tcGlsZVNoYWRlcihzaGFkZXIpOwog
CiAgICAgLy8gQ2hlY2sgdGhlIGNvbXBpbGUgc3RhdHVzCi0gICAgdmFyIGNvbXBpbGVkID0gY3R4
LmdldFNoYWRlcmkoc2hhZGVyLCBjdHguQ09NUElMRV9TVEFUVVMpOworICAgIHZhciBjb21waWxl
ZCA9IGN0eC5nZXRTaGFkZXJQYXJhbWV0ZXIoc2hhZGVyLCBjdHguQ09NUElMRV9TVEFUVVMpOwog
ICAgIGlmICghY29tcGlsZWQpIHsKICAgICAgICAgLy8gU29tZXRoaW5nIHdlbnQgd3JvbmcgZHVy
aW5nIGNvbXBpbGF0aW9uOyBnZXQgdGhlIGVycm9yCiAgICAgICAgIHZhciBlcnJvciA9IGN0eC5n
ZXRTaGFkZXJJbmZvTG9nKHNoYWRlcik7CkBAIC01MzYsNCArNTM2LDMgQEAgRnJhbWVyYXRlLnBy
b3RvdHlwZS5zbmFwc2hvdCA9IGZ1bmN0aW9uKAogICAgICAgICB0aGlzLnJlbmRlclRpbWUgPSBu
ZXdUaW1lOwogICAgIH0KIH0KLQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wv
cmVzb3VyY2VzL3dlYmdsLXRlc3QuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsLXRlc3QuanMJKHJldmlzaW9uIDUxMzM1KQorKysg
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsLXRlc3QuanMJKHdv
cmtpbmcgY29weSkKQEAgLTI0LDE2ICsyNCwzMiBAQCBmdW5jdGlvbiBsb2FkU3RhbmRhcmRQcm9n
cmFtKGNvbnRleHQpIHsKICAgICByZXR1cm4gcHJvZ3JhbTsKIH0KIAorZnVuY3Rpb24gbG9hZFBy
b2dyYW0oY29udGV4dCwgdmVydGV4U2hhZGVyUGF0aCwgZnJhZ21lbnRTaGFkZXJQYXRoKSB7Cisg
ICAgdmFyIHByb2dyYW0gPSBjb250ZXh0LmNyZWF0ZVByb2dyYW0oKTsKKyAgICBjb250ZXh0LmF0
dGFjaFNoYWRlcihwcm9ncmFtLCBsb2FkVmVydGV4U2hhZGVyKGNvbnRleHQsIHZlcnRleFNoYWRl
clBhdGgpKTsKKyAgICBjb250ZXh0LmF0dGFjaFNoYWRlcihwcm9ncmFtLCBsb2FkRnJhZ21lbnRT
aGFkZXIoY29udGV4dCwgZnJhZ21lbnRTaGFkZXJQYXRoKSk7CisgICAgY29udGV4dC5saW5rUHJv
Z3JhbShwcm9ncmFtKTsKKyAgICByZXR1cm4gcHJvZ3JhbTsKK30KKwogZnVuY3Rpb24gbG9hZFN0
YW5kYXJkVmVydGV4U2hhZGVyKGNvbnRleHQpIHsKKyAgICByZXR1cm4gbG9hZFZlcnRleFNoYWRl
cihjb250ZXh0LCAicmVzb3VyY2VzL3ZlcnRleFNoYWRlci52ZXJ0Iik7Cit9CisKK2Z1bmN0aW9u
IGxvYWRWZXJ0ZXhTaGFkZXIoY29udGV4dCwgcGF0aCkgewogICAgIHZhciB2ZXJ0ZXhTaGFkZXIg
PSBjb250ZXh0LmNyZWF0ZVNoYWRlcihjb250ZXh0LlZFUlRFWF9TSEFERVIpOwotICAgIGNvbnRl
eHQuc2hhZGVyU291cmNlKHZlcnRleFNoYWRlciwgZ2V0U2hhZGVyU291cmNlKCJyZXNvdXJjZXMv
dmVydGV4U2hhZGVyLnZlcnQiKSk7CisgICAgY29udGV4dC5zaGFkZXJTb3VyY2UodmVydGV4U2hh
ZGVyLCBnZXRTaGFkZXJTb3VyY2UocGF0aCkpOwogICAgIGNvbnRleHQuY29tcGlsZVNoYWRlcih2
ZXJ0ZXhTaGFkZXIpOwogICAgIHJldHVybiB2ZXJ0ZXhTaGFkZXI7CiB9CiAKIGZ1bmN0aW9uIGxv
YWRTdGFuZGFyZEZyYWdtZW50U2hhZGVyKGNvbnRleHQpIHsKKyAgICByZXR1cm4gbG9hZEZyYWdt
ZW50U2hhZGVyKGNvbnRleHQsICJyZXNvdXJjZXMvZnJhZ21lbnRTaGFkZXIuZnJhZyIpOworfQor
CitmdW5jdGlvbiBsb2FkRnJhZ21lbnRTaGFkZXIoY29udGV4dCwgcGF0aCkgewogICAgIHZhciBm
cmFnbWVudFNoYWRlciA9IGNvbnRleHQuY3JlYXRlU2hhZGVyKGNvbnRleHQuRlJBR01FTlRfU0hB
REVSKTsKLSAgICBjb250ZXh0LnNoYWRlclNvdXJjZShmcmFnbWVudFNoYWRlciwgZ2V0U2hhZGVy
U291cmNlKCJyZXNvdXJjZXMvZnJhZ21lbnRTaGFkZXIuZnJhZyIpKTsKKyAgICBjb250ZXh0LnNo
YWRlclNvdXJjZShmcmFnbWVudFNoYWRlciwgZ2V0U2hhZGVyU291cmNlKHBhdGgpKTsKICAgICBj
b250ZXh0LmNvbXBpbGVTaGFkZXIoZnJhZ21lbnRTaGFkZXIpOwogICAgIHJldHVybiBmcmFnbWVu
dFNoYWRlcjsKIH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10
ZXN0cy9nbC1vYmplY3QtZ2V0LWNhbGxzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9nbC1vYmplY3QtZ2V0LWNhbGxzLmpzCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL2ds
LW9iamVjdC1nZXQtY2FsbHMuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTgzIEBACitkZXNj
cmlwdGlvbigiVGVzdCBvZiBnZXQgY2FsbHMgYWdhaW5zdCBHTCBvYmplY3RzIGxpa2UgZ2V0QnVm
ZmVyUGFyYW1ldGVyLCBldGMuIik7CisKK3ZhciBnbCA9IGNyZWF0ZTNEQ29udGV4dCgpOwordmFy
IHN0YW5kYXJkVmVydCA9IGxvYWRTdGFuZGFyZFZlcnRleFNoYWRlcihnbCk7Cit2YXIgc3RhbmRh
cmRGcmFnID0gbG9hZFN0YW5kYXJkRnJhZ21lbnRTaGFkZXIoZ2wpOwordmFyIHN0YW5kYXJkUHJv
Z3JhbSA9IGdsLmNyZWF0ZVByb2dyYW0oKTsKK2dsLmF0dGFjaFNoYWRlcihzdGFuZGFyZFByb2dy
YW0sIHN0YW5kYXJkVmVydCk7CitnbC5hdHRhY2hTaGFkZXIoc3RhbmRhcmRQcm9ncmFtLCBzdGFu
ZGFyZEZyYWcpOworZ2wubGlua1Byb2dyYW0oc3RhbmRhcmRQcm9ncmFtKTsKKworLy8gVGVzdCBn
ZXRCdWZmZXJQYXJhbWV0ZXIKK3ZhciBidWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKK2dsLmJp
bmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBidWZmZXIpOworZ2wuYnVmZmVyRGF0YShnbC5BUlJB
WV9CVUZGRVIsIDE2LCBnbC5EWU5BTUlDX0RSQVcpOworc2hvdWxkQmUoJ2dsLmdldEJ1ZmZlclBh
cmFtZXRlcihnbC5BUlJBWV9CVUZGRVIsIGdsLkJVRkZFUl9TSVpFKScsICcxNicpOworc2hvdWxk
QmUoJ2dsLmdldEJ1ZmZlclBhcmFtZXRlcihnbC5BUlJBWV9CVUZGRVIsIGdsLkJVRkZFUl9VU0FH
RSknLCAnZ2wuRFlOQU1JQ19EUkFXJyk7CisKKy8vIFRlc3QgZ2V0RnJhbWVidWZmZXJBdHRhY2ht
ZW50UGFyYW1ldGVyCit2YXIgdGV4dHVyZSA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKK2dsLmJpbmRU
ZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmUpOworZ2wudGV4SW1hZ2UyRChnbC5URVhUVVJF
XzJELCAwLCBnbC5SR0JBLCAyLCAyLCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLAorICAg
ICAgICAgICAgICBuZXcgV2ViR0xVbnNpZ25lZEJ5dGVBcnJheShbMCwgMCwgMCwgMjU1LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjU1LCAyNTUsIDI1NSwgMjU1
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjU1LCAyNTUsIDI1
NSwgMjU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwg
MCwgMjU1XSkpOworZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX01J
Tl9GSUxURVIsIGdsLkxJTkVBUik7CitnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGds
LlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTElORUFSKTsKK2dsLmJpbmRUZXh0dXJlKGdsLlRFWFRV
UkVfMkQsIG51bGwpOwordmFyIGZyYW1lYnVmZmVyID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKTsK
K2dsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZnJhbWVidWZmZXIpOworZ2wuZnJh
bWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBn
bC5URVhUVVJFXzJELCB0ZXh0dXJlLCAwKTsKK3ZhciByZW5kZXJidWZmZXIgPSBnbC5jcmVhdGVS
ZW5kZXJidWZmZXIoKTsKK3Nob3VsZEJlKCdnbC5nZXRFcnJvcigpJywgJzAnKTsKK2dsLmJpbmRS
ZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCByZW5kZXJidWZmZXIpOworc2hvdWxkQmUoJ2ds
LmdldEVycm9yKCknLCAnMCcpOworZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZG
RVIsIGdsLkRFUFRIX0NPTVBPTkVOVDE2LCAyLCAyKTsKK3Nob3VsZEJlKCdnbC5nZXRFcnJvcigp
JywgJzAnKTsKK2dsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBnbC5E
RVBUSF9BVFRBQ0hNRU5ULCBnbC5SRU5ERVJCVUZGRVIsIHJlbmRlcmJ1ZmZlcik7CitzaG91bGRC
ZSgnZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUiknLCAnZ2wuRlJBTUVC
VUZGRVJfQ09NUExFVEUnKTsKK3Nob3VsZEJlKCdnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQ
YXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5GUkFNRUJV
RkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFKScsICdnbC5URVhUVVJFJyk7CitzaG91bGRCZU5v
bk51bGwoJ2dsLmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZF
UiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNU
X05BTUUpJyk7CitzaG91bGRCZSgnZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
KGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuRlJBTUVCVUZGRVJfQVRU
QUNITUVOVF9URVhUVVJFX0xFVkVMKScsICcwJyk7CitzaG91bGRCZSgnZ2wuZ2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5U
MCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0UpJywgJzAn
KTsKKworc2hvdWxkQmUoJ2dsLmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5G
UkFNRUJVRkZFUiwgZ2wuREVQVEhfQVRUQUNITUVOVCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVO
VF9PQkpFQ1RfVFlQRSknLCAnZ2wuUkVOREVSQlVGRkVSJyk7CitzaG91bGRCZU5vbk51bGwoJ2ds
LmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuREVQ
VEhfQVRUQUNITUVOVCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRSknKTsK
KworLy8gVGVzdCBnZXRQcm9ncmFtUGFyYW1ldGVyCitzaG91bGRCZSgnZ2wuZ2V0UHJvZ3JhbVBh
cmFtZXRlcihzdGFuZGFyZFByb2dyYW0sIGdsLkRFTEVURV9TVEFUVVMpJywgJ2ZhbHNlJyk7Citz
aG91bGRCZSgnZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihzdGFuZGFyZFByb2dyYW0sIGdsLkxJTktf
U1RBVFVTKScsICd0cnVlJyk7CitzaG91bGRCZSgndHlwZW9mIGdsLmdldFByb2dyYW1QYXJhbWV0
ZXIoc3RhbmRhcmRQcm9ncmFtLCBnbC5WQUxJREFURV9TVEFUVVMpJywgJyJib29sZWFuIicpOwor
c2hvdWxkQmUoJ3R5cGVvZiBnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHN0YW5kYXJkUHJvZ3JhbSwg
Z2wuSU5GT19MT0dfTEVOR1RIKScsICcibnVtYmVyIicpOworc2hvdWxkQmUoJ2dsLmdldFByb2dy
YW1QYXJhbWV0ZXIoc3RhbmRhcmRQcm9ncmFtLCBnbC5BVFRBQ0hFRF9TSEFERVJTKScsICcyJyk7
CitzaG91bGRCZSgnZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihzdGFuZGFyZFByb2dyYW0sIGdsLkFD
VElWRV9BVFRSSUJVVEVTKScsICcyJyk7CitzaG91bGRCZU5vblplcm8oJ2dsLmdldFByb2dyYW1Q
YXJhbWV0ZXIoc3RhbmRhcmRQcm9ncmFtLCBnbC5BQ1RJVkVfQVRUUklCVVRFX01BWF9MRU5HVEgp
Jyk7CitzaG91bGRCZSgnZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihzdGFuZGFyZFByb2dyYW0sIGds
LkFDVElWRV9VTklGT1JNUyknLCAnMScpOworc2hvdWxkQmVOb25aZXJvKCdnbC5nZXRQcm9ncmFt
UGFyYW1ldGVyKHN0YW5kYXJkUHJvZ3JhbSwgZ2wuQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCkn
KTsKKworLy8gVGVzdCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIKK3Nob3VsZEJlKCdnbC5nZXRS
ZW5kZXJidWZmZXJQYXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBnbC5SRU5ERVJCVUZGRVJfV0lE
VEgpJywgJzInKTsKK3Nob3VsZEJlKCdnbC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoZ2wuUkVO
REVSQlVGRkVSLCBnbC5SRU5ERVJCVUZGRVJfSEVJR0hUKScsICcyJyk7CisvLyBOb3RlOiB3ZSBj
YW4ndCB0ZXN0IHRoZSBhY3R1YWwgdmFsdWUgb2YgdGhlIGludGVybmFsIGZvcm1hdCBzaW5jZQor
Ly8gdGhlIGltcGxlbWVudGF0aW9uIGlzIGFsbG93ZWQgdG8gY2hhbmdlIGl0Lgorc2hvdWxkQmVO
b25aZXJvKCdnbC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBnbC5S
RU5ERVJCVUZGRVJfSU5URVJOQUxfRk9STUFUKScpOworc2hvdWxkQmVOb25aZXJvKCdnbC5nZXRS
ZW5kZXJidWZmZXJQYXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBnbC5SRU5ERVJCVUZGRVJfREVQ
VEhfU0laRSknKTsKK3ZhciBjb2xvcmJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOwor
c2hvdWxkQmUoJ2dsLmdldEVycm9yKCknLCAnMCcpOworZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5S
RU5ERVJCVUZGRVIsIHJlbmRlcmJ1ZmZlcik7CitzaG91bGRCZSgnZ2wuZ2V0RXJyb3IoKScsICcw
Jyk7CitnbC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkdCQTQsIDIs
IDIpOworc2hvdWxkQmVOb25aZXJvKCdnbC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoZ2wuUkVO
REVSQlVGRkVSLCBnbC5SRU5ERVJCVUZGRVJfUkVEX1NJWkUpJyk7CitzaG91bGRCZU5vblplcm8o
J2dsLmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcihnbC5SRU5ERVJCVUZGRVIsIGdsLlJFTkRFUkJV
RkZFUl9HUkVFTl9TSVpFKScpOworc2hvdWxkQmVOb25aZXJvKCdnbC5nZXRSZW5kZXJidWZmZXJQ
YXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBnbC5SRU5ERVJCVUZGRVJfQkxVRV9TSVpFKScpOwor
c2hvdWxkQmVOb25aZXJvKCdnbC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoZ2wuUkVOREVSQlVG
RkVSLCBnbC5SRU5ERVJCVUZGRVJfQUxQSEFfU0laRSknKTsKKworLy8gVGVzdCBnZXRTaGFkZXJQ
YXJhbWV0ZXIKK3Nob3VsZEJlKCdnbC5nZXRTaGFkZXJQYXJhbWV0ZXIoc3RhbmRhcmRWZXJ0LCBn
bC5TSEFERVJfVFlQRSknLCAnZ2wuVkVSVEVYX1NIQURFUicpOworc2hvdWxkQmUoJ2dsLmdldFNo
YWRlclBhcmFtZXRlcihzdGFuZGFyZFZlcnQsIGdsLkRFTEVURV9TVEFUVVMpJywgJ2ZhbHNlJyk7
CitzaG91bGRCZSgnZ2wuZ2V0U2hhZGVyUGFyYW1ldGVyKHN0YW5kYXJkVmVydCwgZ2wuQ09NUElM
RV9TVEFUVVMpJywgJ3RydWUnKTsKK3Nob3VsZEJlKCd0eXBlb2YgZ2wuZ2V0U2hhZGVyUGFyYW1l
dGVyKHN0YW5kYXJkVmVydCwgZ2wuSU5GT19MT0dfTEVOR1RIKScsICcibnVtYmVyIicpOworc2hv
dWxkQmVOb25aZXJvKCdnbC5nZXRTaGFkZXJQYXJhbWV0ZXIoc3RhbmRhcmRWZXJ0LCBnbC5TSEFE
RVJfU09VUkNFX0xFTkdUSCknKTsKKworLy8gVGVzdCBnZXRUZXhQYXJhbWV0ZXIKK2dsLmJpbmRG
cmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwgZnJhbWVidWZmZXIpOworZ2wuYmluZFRleHR1cmUo
Z2wuVEVYVFVSRV8yRCwgdGV4dHVyZSk7CitnbC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQs
IGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CitnbC50ZXhQYXJhbWV0ZXJpKGds
LlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiwgZ2wuTkVBUkVTVCk7CitnbC50ZXhQ
YXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9TLCBnbC5DTEFNUF9UT19F
REdFKTsKK2dsLnRleFBhcmFtZXRlcmkoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9XUkFQX1Qs
IGdsLkNMQU1QX1RPX0VER0UpOworc2hvdWxkQmUoJ2dsLmdldFRleFBhcmFtZXRlcihnbC5URVhU
VVJFXzJELCBnbC5URVhUVVJFX01BR19GSUxURVIpJywgJ2dsLk5FQVJFU1QnKTsKK3Nob3VsZEJl
KCdnbC5nZXRUZXhQYXJhbWV0ZXIoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NSU5fRklMVEVS
KScsICdnbC5ORUFSRVNUJyk7CitzaG91bGRCZSgnZ2wuZ2V0VGV4UGFyYW1ldGVyKGdsLlRFWFRV
UkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9TKScsICdnbC5DTEFNUF9UT19FREdFJyk7CitzaG91bGRC
ZSgnZ2wuZ2V0VGV4UGFyYW1ldGVyKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9UKScs
ICdnbC5DTEFNUF9UT19FREdFJyk7CisKKy8vIFRlc3QgZ2V0VW5pZm9ybSB3aXRoIGFsbCB2YXJp
YW50cyBvZiBkYXRhIHR5cGVzCisvLyBCb29sZWFuIHVuaWZvcm0gdmFyaWFibGVzCit2YXIgYm9v
bFByb2dyYW0gPSBsb2FkUHJvZ3JhbShnbCwgInJlc291cmNlcy9ib29sVW5pZm9ybVNoYWRlci52
ZXJ0IiwgInJlc291cmNlcy9ub29wVW5pZm9ybVNoYWRlci5mcmFnIik7CitzaG91bGRCZSgnZ2wu
Z2V0UHJvZ3JhbVBhcmFtZXRlcihib29sUHJvZ3JhbSwgZ2wuTElOS19TVEFUVVMpJywgJ3RydWUn
KTsKK3ZhciBidmFsTG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKGJvb2xQcm9ncmFtLCAiYnZh
bCIpOwordmFyIGJ2YWwyTG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKGJvb2xQcm9ncmFtLCAi
YnZhbDIiKTsKK3ZhciBidmFsM0xvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihib29sUHJvZ3Jh
bSwgImJ2YWwzIik7Cit2YXIgYnZhbDRMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24oYm9vbFBy
b2dyYW0sICJidmFsNCIpOworZ2wudXNlUHJvZ3JhbShib29sUHJvZ3JhbSk7CitnbC51bmlmb3Jt
MWkoYnZhbExvYywgMSk7CitnbC51bmlmb3JtMmkoYnZhbDJMb2MsIDEsIDApOworZ2wudW5pZm9y
bTNpKGJ2YWwzTG9jLCAxLCAwLCAxKTsKK2dsLnVuaWZvcm00aShidmFsNExvYywgMSwgMCwgMSwg
MCk7CitzaG91bGRCZSgnZ2wuZ2V0RXJyb3IoKScsICcwJyk7CitzaG91bGRCZSgnZ2wuZ2V0VW5p
Zm9ybShib29sUHJvZ3JhbSwgYnZhbExvYyknLCAndHJ1ZScpOworc2hvdWxkQmUoJ2dsLmdldFVu
aWZvcm0oYm9vbFByb2dyYW0sIGJ2YWwyTG9jKScsICdbMSwgMF0nKTsKK3Nob3VsZEJlKCdnbC5n
ZXRVbmlmb3JtKGJvb2xQcm9ncmFtLCBidmFsM0xvYyknLCAnWzEsIDAsIDFdJyk7CitzaG91bGRC
ZSgnZ2wuZ2V0VW5pZm9ybShib29sUHJvZ3JhbSwgYnZhbDRMb2MpJywgJ1sxLCAwLCAxLCAwXScp
OworLy8gSW50ZWdlciB1bmlmb3JtIHZhcmlhYmxlcwordmFyIGludFByb2dyYW0gPSBsb2FkUHJv
Z3JhbShnbCwgInJlc291cmNlcy9pbnRVbmlmb3JtU2hhZGVyLnZlcnQiLCAicmVzb3VyY2VzL25v
b3BVbmlmb3JtU2hhZGVyLmZyYWciKTsKK3Nob3VsZEJlKCdnbC5nZXRQcm9ncmFtUGFyYW1ldGVy
KGludFByb2dyYW0sIGdsLkxJTktfU1RBVFVTKScsICd0cnVlJyk7Cit2YXIgaXZhbExvYyA9IGds
LmdldFVuaWZvcm1Mb2NhdGlvbihpbnRQcm9ncmFtLCAiaXZhbCIpOwordmFyIGl2YWwyTG9jID0g
Z2wuZ2V0VW5pZm9ybUxvY2F0aW9uKGludFByb2dyYW0sICJpdmFsMiIpOwordmFyIGl2YWwzTG9j
ID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKGludFByb2dyYW0sICJpdmFsMyIpOwordmFyIGl2YWw0
TG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKGludFByb2dyYW0sICJpdmFsNCIpOworZ2wudXNl
UHJvZ3JhbShpbnRQcm9ncmFtKTsKK2dsLnVuaWZvcm0xaShpdmFsTG9jLCAxKTsKK2dsLnVuaWZv
cm0yaShpdmFsMkxvYywgMiwgMyk7CitnbC51bmlmb3JtM2koaXZhbDNMb2MsIDQsIDUsIDYpOwor
Z2wudW5pZm9ybTRpKGl2YWw0TG9jLCA3LCA4LCA5LCAxMCk7CitzaG91bGRCZSgnZ2wuZ2V0RXJy
b3IoKScsICcwJyk7CitzaG91bGRCZSgnZ2wuZ2V0VW5pZm9ybShpbnRQcm9ncmFtLCBpdmFsTG9j
KScsICcxJyk7CitzaG91bGRCZSgnZ2wuZ2V0VW5pZm9ybShpbnRQcm9ncmFtLCBpdmFsMkxvYykn
LCAnWzIsIDNdJyk7CitzaG91bGRCZSgnZ2wuZ2V0VW5pZm9ybShpbnRQcm9ncmFtLCBpdmFsM0xv
YyknLCAnWzQsIDUsIDZdJyk7CitzaG91bGRCZSgnZ2wuZ2V0VW5pZm9ybShpbnRQcm9ncmFtLCBp
dmFsNExvYyknLCAnWzcsIDgsIDksIDEwXScpOworLy8gRmxvYXQgdW5pZm9ybSB2YXJpYWJsZXMK
K3ZhciBmbG9hdFByb2dyYW0gPSBsb2FkUHJvZ3JhbShnbCwgInJlc291cmNlcy9mbG9hdFVuaWZv
cm1TaGFkZXIudmVydCIsICJyZXNvdXJjZXMvbm9vcFVuaWZvcm1TaGFkZXIuZnJhZyIpOworc2hv
dWxkQmUoJ2dsLmdldFByb2dyYW1QYXJhbWV0ZXIoZmxvYXRQcm9ncmFtLCBnbC5MSU5LX1NUQVRV
UyknLCAndHJ1ZScpOwordmFyIGZ2YWxMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24oZmxvYXRQ
cm9ncmFtLCAiZnZhbCIpOwordmFyIGZ2YWwyTG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKGZs
b2F0UHJvZ3JhbSwgImZ2YWwyIik7Cit2YXIgZnZhbDNMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRp
b24oZmxvYXRQcm9ncmFtLCAiZnZhbDMiKTsKK3ZhciBmdmFsNExvYyA9IGdsLmdldFVuaWZvcm1M
b2NhdGlvbihmbG9hdFByb2dyYW0sICJmdmFsNCIpOworZ2wudXNlUHJvZ3JhbShmbG9hdFByb2dy
YW0pOworZ2wudW5pZm9ybTFmKGZ2YWxMb2MsIDExKTsKK2dsLnVuaWZvcm0yZihmdmFsMkxvYywg
MTIsIDEzKTsKK2dsLnVuaWZvcm0zZihmdmFsM0xvYywgMTQsIDE1LCAxNik7CitnbC51bmlmb3Jt
NGYoZnZhbDRMb2MsIDE3LCAxOCwgMTksIDIwKTsKK3Nob3VsZEJlKCdnbC5nZXRFcnJvcigpJywg
JzAnKTsKK3Nob3VsZEJlKCdnbC5nZXRVbmlmb3JtKGZsb2F0UHJvZ3JhbSwgZnZhbExvYyknLCAn
MTEnKTsKK3Nob3VsZEJlKCdnbC5nZXRVbmlmb3JtKGZsb2F0UHJvZ3JhbSwgZnZhbDJMb2MpJywg
J1sxMiwgMTNdJyk7CitzaG91bGRCZSgnZ2wuZ2V0VW5pZm9ybShmbG9hdFByb2dyYW0sIGZ2YWwz
TG9jKScsICdbMTQsIDE1LCAxNl0nKTsKK3Nob3VsZEJlKCdnbC5nZXRVbmlmb3JtKGZsb2F0UHJv
Z3JhbSwgZnZhbDRMb2MpJywgJ1sxNywgMTgsIDE5LCAyMF0nKTsKKy8vIE1hdHJpeCB1bmlmb3Jt
IHZhcmlhYmxlcwordmFyIG1hdFByb2dyYW0gPSBsb2FkUHJvZ3JhbShnbCwgInJlc291cmNlcy9t
YXRVbmlmb3JtU2hhZGVyLnZlcnQiLCAicmVzb3VyY2VzL25vb3BVbmlmb3JtU2hhZGVyLmZyYWci
KTsKK3Nob3VsZEJlKCdnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKG1hdFByb2dyYW0sIGdsLkxJTktf
U1RBVFVTKScsICd0cnVlJyk7Cit2YXIgbXZhbDJMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24o
bWF0UHJvZ3JhbSwgIm12YWwyIik7Cit2YXIgbXZhbDNMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRp
b24obWF0UHJvZ3JhbSwgIm12YWwzIik7Cit2YXIgbXZhbDRMb2MgPSBnbC5nZXRVbmlmb3JtTG9j
YXRpb24obWF0UHJvZ3JhbSwgIm12YWw0Iik7CitnbC51c2VQcm9ncmFtKG1hdFByb2dyYW0pOwor
Z2wudW5pZm9ybU1hdHJpeDJmdihtdmFsMkxvYywgZmFsc2UsIFsxLCAyLCAzLCA0XSk7CitnbC51
bmlmb3JtTWF0cml4M2Z2KG12YWwzTG9jLCBmYWxzZSwgWzUsIDYsIDcsIDgsIDksIDEwLCAxMSwg
MTIsIDEzXSk7CitnbC51bmlmb3JtTWF0cml4NGZ2KG12YWw0TG9jLCBmYWxzZSwgWzE0LCAxNSwg
MTYsIDE3LCAxOCwgMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5XSk7
CitzaG91bGRCZSgnZ2wuZ2V0RXJyb3IoKScsICcwJyk7CitzaG91bGRCZSgnZ2wuZ2V0VW5pZm9y
bShtYXRQcm9ncmFtLCBtdmFsMkxvYyknLCAnWzEsIDIsIDMsIDRdJyk7CitzaG91bGRCZSgnZ2wu
Z2V0VW5pZm9ybShtYXRQcm9ncmFtLCBtdmFsM0xvYyknLCAnWzUsIDYsIDcsIDgsIDksIDEwLCAx
MSwgMTIsIDEzXScpOworc2hvdWxkQmUoJ2dsLmdldFVuaWZvcm0obWF0UHJvZ3JhbSwgbXZhbDRM
b2MpJywgJ1sxNCwgMTUsIDE2LCAxNywgMTgsIDE5LCAyMCwgMjEsIDIyLCAyMywgMjQsIDI1LCAy
NiwgMjcsIDI4LCAyOV0nKTsKKworLy8gVGVzdCBnZXRWZXJ0ZXhBdHRyaWIKK3ZhciBhcnJheSA9
IG5ldyBXZWJHTEZsb2F0QXJyYXkoWzEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwg
MTIsIDEzLCAxNCwgMTUsIDE2XSk7CitnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgYnVm
ZmVyKTsKK2dsLmJ1ZmZlckRhdGEoZ2wuQVJSQVlfQlVGRkVSLCBhcnJheSwgZ2wuRFlOQU1JQ19E
UkFXKTsKKy8vIFZlcnRleCBhdHRyaWJ1dGUgMCBpcyBzcGVjaWFsIGluIHRoYXQgaXQgaGFzIG5v
IGN1cnJlbnQgc3RhdGUsIHNvCisvLyBmZXRjaGluZyBHTF9DVVJSRU5UX1ZFUlRFWF9BVFRSSUIg
Z2VuZXJhdGVzIGFuIGVycm9yLiBVc2UgYXR0cmlidXRlCisvLyAxIGZvciB0aGVzZSB0ZXN0cyBp
bnN0ZWFkLgorZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMSk7CitnbC52ZXJ0ZXhBdHRyaWJQ
b2ludGVyKDEsIDQsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CitzaG91bGRCZU5vbk51bGwoJ2ds
LmdldFZlcnRleEF0dHJpYigxLCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX0JVRkZFUl9CSU5ESU5H
KScpOworc2hvdWxkQmUoJ2dsLmdldFZlcnRleEF0dHJpYigxLCBnbC5WRVJURVhfQVRUUklCX0FS
UkFZX0VOQUJMRUQpJywgJ3RydWUnKTsKK3Nob3VsZEJlKCdnbC5nZXRWZXJ0ZXhBdHRyaWIoMSwg
Z2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9TSVpFKScsICc0Jyk7CitzaG91bGRCZSgnKGdsLmdldFZl
cnRleEF0dHJpYigxLCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX1NUUklERSkgPT0gMCkgfHwgKGds
LmdldFZlcnRleEF0dHJpYigxLCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX1NUUklERSkgPT0gNCAq
IGdsLnNpemVJbkJ5dGVzKGdsLkZMT0FUKSknLCAndHJ1ZScpOworc2hvdWxkQmUoJ2dsLmdldFZl
cnRleEF0dHJpYigxLCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX1RZUEUpJywgJ2dsLkZMT0FUJyk7
CitzaG91bGRCZSgnZ2wuZ2V0VmVydGV4QXR0cmliKDEsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlf
Tk9STUFMSVpFRCknLCAnZmFsc2UnKTsKK2dsLmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSgxKTsK
K3Nob3VsZEJlKCdnbC5nZXRWZXJ0ZXhBdHRyaWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9F
TkFCTEVEKScsICdmYWxzZScpOworZ2wudmVydGV4QXR0cmliNGYoMSwgNSwgNiwgNywgOCk7Citz
aG91bGRCZSgnZ2wuZ2V0VmVydGV4QXR0cmliKDEsIGdsLkNVUlJFTlRfVkVSVEVYX0FUVFJJQikn
LCAnWzUsIDYsIDcsIDhdJyk7CitzaG91bGRCZSgnZ2wuZ2V0RXJyb3IoKScsICcwJyk7CisKK3N1
Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93
ZWJnbC9zY3JpcHQtdGVzdHMvaW5jb3JyZWN0LWNvbnRleHQtb2JqZWN0LWJlaGF2aW91ci5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMv
aW5jb3JyZWN0LWNvbnRleHQtb2JqZWN0LWJlaGF2aW91ci5qcwkocmV2aXNpb24gNTEzMzUpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvaW5jb3JyZWN0LWNv
bnRleHQtb2JqZWN0LWJlaGF2aW91ci5qcwkod29ya2luZyBjb3B5KQpAQCAtMzEsMTcgKzMxLDEy
IEBAIHNob3VsZFRocm93KCJjb250ZXh0QS5iaW5kUmVuZGVyYnVmZmVyKGMKIHNob3VsZFRocm93
KCJjb250ZXh0QS5iaW5kVGV4dHVyZShjb250ZXh0QS5URVhUVVJFXzJELCB0ZXh0dXJlQikiKTsK
IHNob3VsZFRocm93KCJjb250ZXh0QS5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihjb250ZXh0QS5G
UkFNRUJVRkZFUiwgY29udGV4dEEuREVQVEhfQVRUQUNITUVOVCwgY29udGV4dEEuUkVOREVSQlVG
RkVSLCByZW5kZXJCdWZmZXJCKSIpOwogc2hvdWxkVGhyb3coImNvbnRleHRBLmZyYW1lYnVmZmVy
VGV4dHVyZTJEKGNvbnRleHRBLkZSQU1FQlVGRkVSLCBjb250ZXh0QS5DT0xPUl9BVFRBQ0hNRU5U
MCwgY29udGV4dEEuVEVYVFVSRV8yRCwgdGV4dHVyZUIsIDApIik7Ci1zaG91bGRUaHJvdygiY29u
dGV4dEEuZ2V0UHJvZ3JhbWkocHJvZ3JhbUIsIDApIik7Ci1zaG91bGRUaHJvdygiY29udGV4dEEu
Z2V0UHJvZ3JhbWl2KHByb2dyYW1CLCAwKSIpOworc2hvdWxkVGhyb3coImNvbnRleHRBLmdldFBy
b2dyYW1QYXJhbWV0ZXIocHJvZ3JhbUIsIDApIik7CiBzaG91bGRUaHJvdygiY29udGV4dEEuZ2V0
UHJvZ3JhbUluZm9Mb2cocHJvZ3JhbUIsIDApIik7Ci1zaG91bGRUaHJvdygiY29udGV4dEEuZ2V0
U2hhZGVyaShzaGFkZXJCLCAwKSIpOwotc2hvdWxkVGhyb3coImNvbnRleHRBLmdldFNoYWRlcml2
KHNoYWRlckIsIDApIik7CitzaG91bGRUaHJvdygiY29udGV4dEEuZ2V0U2hhZGVyUGFyYW1ldGVy
KHNoYWRlckIsIDApIik7CiBzaG91bGRUaHJvdygiY29udGV4dEEuZ2V0U2hhZGVySW5mb0xvZyhz
aGFkZXJCLCAwKSIpOwogc2hvdWxkVGhyb3coImNvbnRleHRBLmdldFNoYWRlclNvdXJjZShzaGFk
ZXJCKSIpOwotc2hvdWxkVGhyb3coImNvbnRleHRBLmdldFVuaWZvcm1mKHByb2dyYW1CLCBsb2Nh
dGlvbkEpIik7Ci1zaG91bGRUaHJvdygiY29udGV4dEEuZ2V0VW5pZm9ybWZ2KHByb2dyYW1CLCBs
b2NhdGlvbkEpIik7Ci1zaG91bGRUaHJvdygiY29udGV4dEEuZ2V0VW5pZm9ybWkocHJvZ3JhbUIs
IGxvY2F0aW9uQSkiKTsKLXNob3VsZFRocm93KCJjb250ZXh0QS5nZXRVbmlmb3JtaXYocHJvZ3Jh
bUIsIGxvY2F0aW9uQSkiKTsKK3Nob3VsZFRocm93KCJjb250ZXh0QS5nZXRVbmlmb3JtKHByb2dy
YW1CLCBsb2NhdGlvbkEpIik7CiBzaG91bGRUaHJvdygiY29udGV4dEEuZ2V0VW5pZm9ybUxvY2F0
aW9uKHByb2dyYW1CLCAndV9tb2RlbFZpZXdQcm9qTWF0cml4JykiKTsKIAogc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Njcmlw
dC10ZXN0cy9udWxsLW9iamVjdC1iZWhhdmlvdXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL251bGwtb2JqZWN0LWJlaGF2aW91ci5q
cwkocmV2aXNpb24gNTEzMzUpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9zY3Jp
cHQtdGVzdHMvbnVsbC1vYmplY3QtYmVoYXZpb3VyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yMCwx
NyArMjAsMTIgQEAgc2hvdWxkQmVVbmRlZmluZWQoImNvbnRleHQuYmluZFJlbmRlcmJ1Zgogc2hv
dWxkQmVVbmRlZmluZWQoImNvbnRleHQuYmluZFRleHR1cmUoY29udGV4dC5URVhUVVJFXzJELCAw
KSIpOwogc2hvdWxkQmVVbmRlZmluZWQoImNvbnRleHQuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIo
Y29udGV4dC5GUkFNRUJVRkZFUiwgY29udGV4dC5ERVBUSF9BVFRBQ0hNRU5ULCBjb250ZXh0LlJF
TkRFUkJVRkZFUiwgMCkiKTsKIHNob3VsZEJlVW5kZWZpbmVkKCJjb250ZXh0LmZyYW1lYnVmZmVy
VGV4dHVyZTJEKGNvbnRleHQuRlJBTUVCVUZGRVIsIGNvbnRleHQuQ09MT1JfQVRUQUNITUVOVDAs
IGNvbnRleHQuVEVYVFVSRV8yRCwgMCwgMCkiKTsKLXNob3VsZFRocm93KCJjb250ZXh0LmdldFBy
b2dyYW1pKHVuZGVmaW5lZCwgMCkiKTsKLXNob3VsZFRocm93KCJjb250ZXh0LmdldFByb2dyYW1p
dih1bmRlZmluZWQsIDApIik7CitzaG91bGRUaHJvdygiY29udGV4dC5nZXRQcm9ncmFtUGFyYW1l
dGVyKHVuZGVmaW5lZCwgMCkiKTsKIHNob3VsZFRocm93KCJjb250ZXh0LmdldFByb2dyYW1JbmZv
TG9nKHVuZGVmaW5lZCwgMCkiKTsKLXNob3VsZFRocm93KCJjb250ZXh0LmdldFNoYWRlcmkodW5k
ZWZpbmVkLCAwKSIpOwotc2hvdWxkVGhyb3coImNvbnRleHQuZ2V0U2hhZGVyaXYodW5kZWZpbmVk
LCAwKSIpOworc2hvdWxkVGhyb3coImNvbnRleHQuZ2V0U2hhZGVyUGFyYW1ldGVyKHVuZGVmaW5l
ZCwgMCkiKTsKIHNob3VsZFRocm93KCJjb250ZXh0LmdldFNoYWRlckluZm9Mb2codW5kZWZpbmVk
LCAwKSIpOwogc2hvdWxkVGhyb3coImNvbnRleHQuZ2V0U2hhZGVyU291cmNlKHVuZGVmaW5lZCki
KTsKLXNob3VsZFRocm93KCJjb250ZXh0LmdldFVuaWZvcm1mKHVuZGVmaW5lZCwgMCkiKTsKLXNo
b3VsZFRocm93KCJjb250ZXh0LmdldFVuaWZvcm1mdih1bmRlZmluZWQsIDApIik7Ci1zaG91bGRU
aHJvdygiY29udGV4dC5nZXRVbmlmb3JtaSh1bmRlZmluZWQsIDApIik7Ci1zaG91bGRUaHJvdygi
Y29udGV4dC5nZXRVbmlmb3JtaXYodW5kZWZpbmVkLCAwKSIpOworc2hvdWxkVGhyb3coImNvbnRl
eHQuZ2V0VW5pZm9ybSh1bmRlZmluZWQsIDApIik7CiBzaG91bGRUaHJvdygiY29udGV4dC5nZXRV
bmlmb3JtTG9jYXRpb24odW5kZWZpbmVkLCAnZm9vJykiKTsKIAogc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzCShyZXZpc2lvbiA1MTMzNSkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksNiArMTU5LDQyIEBAIGZ1bmN0
aW9uIHNob3VsZEV2YWx1YXRlVG8oYWN0dWFsLCBleHBlY3QKICAgfQogfQogCitmdW5jdGlvbiBz
aG91bGRCZU5vblplcm8oX2EpCit7CisgIHZhciBleGNlcHRpb247CisgIHZhciBfYXY7CisgIHRy
eSB7CisgICAgIF9hdiA9IGV2YWwoX2EpOworICB9IGNhdGNoIChlKSB7CisgICAgIGV4Y2VwdGlv
biA9IGU7CisgIH0KKworICBpZiAoZXhjZXB0aW9uKQorICAgIHRlc3RGYWlsZWQoX2EgKyAiIHNo
b3VsZCBiZSBub24temVyby4gVGhyZXcgZXhjZXB0aW9uICIgKyBleGNlcHRpb24pOworICBlbHNl
IGlmIChfYXYgIT0gMCkKKyAgICB0ZXN0UGFzc2VkKF9hICsgIiBpcyBub24temVyby4iKTsKKyAg
ZWxzZQorICAgIHRlc3RGYWlsZWQoX2EgKyAiIHNob3VsZCBiZSBub24temVyby4gV2FzICIgKyBf
YXYpOworfQorCitmdW5jdGlvbiBzaG91bGRCZU5vbk51bGwoX2EpCit7CisgIHZhciBleGNlcHRp
b247CisgIHZhciBfYXY7CisgIHRyeSB7CisgICAgIF9hdiA9IGV2YWwoX2EpOworICB9IGNhdGNo
IChlKSB7CisgICAgIGV4Y2VwdGlvbiA9IGU7CisgIH0KKworICBpZiAoZXhjZXB0aW9uKQorICAg
IHRlc3RGYWlsZWQoX2EgKyAiIHNob3VsZCBiZSBub24tbnVsbC4gVGhyZXcgZXhjZXB0aW9uICIg
KyBleGNlcHRpb24pOworICBlbHNlIGlmIChfYXYgIT0gbnVsbCkKKyAgICB0ZXN0UGFzc2VkKF9h
ICsgIiBpcyBub24tbnVsbC4iKTsKKyAgZWxzZQorICAgIHRlc3RGYWlsZWQoX2EgKyAiIHNob3Vs
ZCBiZSBub24tbnVsbC4gV2FzICIgKyBfYXYpOworfQorCiBmdW5jdGlvbiBzaG91bGRCZVVuZGVm
aW5lZChfYSkKIHsKICAgdmFyIGV4Y2VwdGlvbjsK
</data>
<flag name="review"
          id="25474"
          type_id="1"
          status="+"
          setter="oliver"
    />
    <flag name="commit-queue"
          id="25475"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>43781</attachid>
            <date>2009-11-24 10:24:05 -0800</date>
            <delta_ts>2009-11-24 10:25:45 -0800</delta_ts>
            <desc>Revised patch</desc>
            <filename>get-calls.patch</filename>
            <type>application/octet-stream</type>
            <size>196672</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MTM0MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTM4IEBACisyMDA5LTExLTIzICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBD
aGFuZ2UgZ2V0Li4uIGNhbGxzIHRvIGxhdGVzdCBzcGVjCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDA5MQorCisgICAgICAgIFJlbW92ZWQgb2xkIHZl
cnNpb25zIG9mIGdldCBjYWxscyBvbiBXZWJHTFJlbmRlcmluZ0NvbnRleHQgYW5kCisgICAgICAg
IGFkZGVkIG5ldyBvbmVzIHBlciBzcGVjIHJldHVybmluZyAiYW55Ii4gTmV3IGNvZGUgc2ltcGxp
ZmllcworICAgICAgICBHcmFwaGljc0NvbnRleHQzRCBhbmQgZml4ZXMgcHJldmlvdXNseSB1bmlt
cGxlbWVudGVkIHJvdXRpbmVzLgorICAgICAgICBBZGRlZCBjdXN0b20gSlMgYW5kIFY4IGJpbmRp
bmdzLiBBZGRlZCBleGhhdXN0aXZlIHRlc3QgY2FzZQorICAgICAgICBleGVyY2lzaW5nIGFsbCBu
ZXcgY29kZSBwYXRocy4gVXBkYXRlZCBwcmVleGlzdGluZyB0ZXN0IGNhc2VzIGZvcgorICAgICAg
ICBuZXcgQVBJcy4gRml4ZWQgcHJlZXhpc3RpbmcgYnVncyBpbiBXZWJLaXQncyBhbmQgQ2hyb21l
J3MgV2ViR0wKKyAgICAgICAgaW1wbGVtZW50YXRpb25zLgorCisgICAgICAgIFJhbiBXZWJHTCBs
YXlvdXQgdGVzdHMgaW4gV2ViS2l0IChjbGVhbikgYW5kIENocm9tZSAoY291cGxlIG9mCisgICAg
ICAgIHByZWV4aXN0aW5nIGtub3duIGZhaWx1cmVzKSBhbmQgbWFudWFsIFdlYkdMIHRlc3RzIGlu
IGJvdGgKKyAgICAgICAgYnJvd3NlcnMuCisKKyAgICAgICAgVGVzdDogZmFzdC9jYW52YXMvd2Vi
Z2wvZ2wtb2JqZWN0LWdldC1jYWxscy5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnRvSlMpOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKFdlYkNvcmU6Omdl
dE9iamVjdFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpnZXRQcm9ncmFtUGFyYW1ldGVy
SGVscGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRC
dWZmZXJQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQcm9ncmFtUGFyYW1ldGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRSZW5kZXJidWZmZXJQYXJh
bWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFNo
YWRlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Z2V0VGV4UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnZXRVbmlmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnZXRWZXJ0ZXhBdHRyaWIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OEN1c3RvbUJpbmRpbmcuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJl
bmRlcmluZ0NvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9WOCk6CisgICAg
ICAgIChXZWJDb3JlOjopOgorICAgICAgICAoV2ViQ29yZTo6Z2V0T2JqZWN0UGFyYW1ldGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OmdldFByb2dyYW1QYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0FMTEJBQ0tfRlVOQ19ERUNMKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNPYmpl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzT2JqZWN0OjpDYW52YXNPYmplY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzT2JqZWN0OjpzZXRPYmplY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzT2JqZWN0OjpkZWxldGVPYmplY3QpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc09iamVjdC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xCdWZmZXI6OldlYkdMQnVmZmVyKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TEJ1ZmZlci5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZvOjpXZWJHTEdldEluZm8pOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZvOjp+V2ViR0xHZXRJbmZvKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMR2V0SW5mbzo6Z2V0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEdldElu
Zm86OmdldEJvb2wpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZvOjpnZXRGbG9hdCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEdldEluZm86OmdldExvbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xHZXRJbmZvOjpnZXRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xH
ZXRJbmZvOjpnZXRVbnNpZ25lZExvbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZv
OjpnZXRXZWJHTEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEdldEluZm86OmdldFdl
YkdMRmxvYXRBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEdldEluZm86OmdldFdlYkdM
RnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZvOjpnZXRXZWJHTElu
dEFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMR2V0SW5mbzo6Z2V0V2ViR0xQcm9ncmFt
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMR2V0SW5mbzo6Z2V0V2ViR0xSZW5kZXJidWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZvOjpnZXRXZWJHTFRleHR1cmUpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZvOjpnZXRXZWJHTFVuc2lnbmVkQnl0ZUFycmF5KToK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEdldEluZm8uaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTEdldEluZm86Oik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJidWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJidWZmZXI6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmJ1ZmZlcjo6V2ViR0xSZW5kZXJidWZm
ZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmg6CisgICAgICAg
ICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMU3RhdGVSZXN0b3Jlcjo6V2ViR0xTdGF0ZVJlc3RvcmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMU3RhdGVSZXN0b3Jlcjo6fldlYkdMU3RhdGVSZXN0b3Jlcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OldlYkdMUmVuZGVyaW5nQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmFjdGl2ZVRleHR1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpiaW5kQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmluZEZyYW1lYnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmluZFJlbmRlcmJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJpbmRUZXh0
dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0QnVmZmVy
UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dDo6Z2V0UHJvZ3JhbVBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFByb2dyYW1JbmZvTG9nKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2hhZGVyUGFyYW1l
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2hhZGVy
SW5mb0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFNo
YWRlclNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omdl
dFN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFRl
eFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omdl
dFVuaWZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRW
ZXJ0ZXhBdHRyaWIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1
c2VQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0
Qm9vbGVhblBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmdldEZsb2F0UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dDo6Z2V0SW50UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dDo6Z2V0TG9uZ1BhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmdldFVuc2lnbmVkTG9uZ1BhcmFtZXRlcik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFdlYkdMRmxvYXRBcnJheVBhcmFtZXRlcik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFdlYkdMSW50QXJy
YXlQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRXZWJHTFVuc2lnbmVkQnl0ZUFycmF5UGFyYW1ldGVyKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHQuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFRleHR1cmU6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFRleHR1cmU6OldlYkdMVGV4dHVyZSk6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xUZXh0dXJlLmg6CisgICAgICAgICogbWFudWFsLXRlc3RzL3dlYmdsL3Jlc291cmNl
cy91dGlsczNkLmpzOgorICAgICAgICAoaW5pdFdlYkdMKToKKyAgICAgICAgKGxvYWRTaGFkZXIp
OgorICAgICAgICAoRnJhbWVyYXRlLnByb3RvdHlwZS5zbmFwc2hvdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OmdldEJvb2xlYW52KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpnZXRCdWZmZXJQYXJhbWV0ZXJpdik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6Z2V0RmxvYXR2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW50ZWdlcnYpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1pdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlcml2KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRUZXhQYXJhbWV0ZXJmdik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VGV4UGFyYW1ldGVyaXYpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1mdik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWl2KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJmdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliaXYpOgorCiAyMDA5LTExLTI0ICBK
b3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgUGF2ZWwgRmVsZG1hbi4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiA1MTM0MSkKKysrIFdlYkNvcmUvV2Vi
Q29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgzLDYgKzEyODMsOCBAQAogICAgICAgICAg
ICAgJ2h0bWwvY2FudmFzL1dlYkdMRmxvYXRBcnJheS5oJywKICAgICAgICAgICAgICdodG1sL2Nh
bnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2Vi
R0xGcmFtZWJ1ZmZlci5oJywKKyAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTEdldEluZm8u
Y3BwJywKKyAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTEdldEluZm8uaCcsCiAgICAgICAg
ICAgICAnaHRtbC9jYW52YXMvQ2FudmFzR3JhZGllbnQuY3BwJywKICAgICAgICAgICAgICdodG1s
L2NhbnZhcy9DYW52YXNHcmFkaWVudC5oJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJH
TEludEFycmF5LmNwcCcsCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gNTEzNDEpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTE5OSw2ICsxMTk5LDggQEAKIAkJNjVE
RjMyM0MwOUQxREU2NTAwMEJFMzI1IC8qIEpTQ2FudmFzUGF0dGVybi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVERjMyMzYwOUQxREU2NTAwMEJFMzI1
IC8qIEpTQ2FudmFzUGF0dGVybi5oICovOyB9OwogCQk2NURGMzI2MTA5RDFFMTk5MDAwQkUzMjUg
LyogVXNlckFnZW50U3R5bGVTaGVldHNEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NjU4MUFGMDlEMTRFRTYwMDBFNjFENyAvKiBVc2VyQWdl
bnRTdHlsZVNoZWV0c0RhdGEuY3BwICovOyB9OwogCQk2NUZFQTg2OTA5ODMzQURFMDBCRUQ0QUIg
LyogUGFnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2NUZFQTg2ODA5ODMzQURFMDBCRUQ0QUIgLyogUGFnZS5jcHAgKi87IH07CisJCTZFNDdFNjYw
MTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEdldEluZm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0N0U2NUUxMEI3OTQ0QjAwQjE4NkM4IC8qIFdl
YkdMR2V0SW5mby5jcHAgKi87IH07CisJCTZFNDdFNjYxMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJH
TEdldEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDZFNDdFNjVGMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEdldEluZm8uaCAqLzsgfTsKIAkJNzI2
MjZFMDIwRUYwMjJGRTAwQTA3RTIwIC8qIEZvbnRGYXN0UGF0aC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjYyNkUwMTBFRjAyMkZFMDBBMDdFMjAg
LyogRm9udEZhc3RQYXRoLmNwcCAqLzsgfTsKIAkJNzU0MTMzQTgxMDJFMDBFODAwMDc1RDAwIC8q
IEluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDc1NDEzM0E3MTAyRTAwRTgwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1l
bGluZUFnZW50LmggKi87IH07CiAJCTc1NDEzM0FBMTAyRTAwRjQwMDA3NUQwMCAvKiBJbnNwZWN0
b3JUaW1lbGluZUFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDc1NDEzM0E5MTAyRTAwRjQwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFn
ZW50LmNwcCAqLzsgfTsKQEAgLTY1MDcsNiArNjUwOSw4IEBACiAJCTY1REYzMjM2MDlEMURFNjUw
MDBCRTMyNSAvKiBKU0NhbnZhc1BhdHRlcm4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTQ2FudmFzUGF0dGVybi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2
NUY4MDY5NzA1NEQ5Rjg2MDA4QkY3NzYgLyogQmxvY2tFeGNlcHRpb25zLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQmxvY2tFeGNl
cHRpb25zLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJz
ID0gMDsgfTsKIAkJNjVGRUE4NjgwOTgzM0FERTAwQkVENEFCIC8qIFBhZ2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk2RTQ3RTY1RTEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xHZXRJbmZvLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkdMR2V0SW5mby5jcHA7
IHBhdGggPSBjYW52YXMvV2ViR0xHZXRJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNkU0N0U2NUYxMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMR2V0SW5mby5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJHTEdldEluZm8uaDsgcGF0aCA9IGNhbnZhcy9X
ZWJHTEdldEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2MjZFMDEwRUYw
MjJGRTAwQTA3RTIwIC8qIEZvbnRGYXN0UGF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBGb250RmFzdFBhdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3NTQxMzNBNzEwMkUwMEU4MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JUaW1lbGluZUFnZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1NDEzM0E5MTAyRTAwRjQwMDA3NUQw
MCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEluc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTA2NDAsNiArMTA2NDQsOCBAQAogCQkJCTQ5QzdCOUFFMTA0MkQzMkUw
MDA5RDQ0NyAvKiBXZWJHTEZyYW1lYnVmZmVyLmNwcCAqLywKIAkJCQk0OUM3QjlBRjEwNDJEMzJF
MDAwOUQ0NDcgLyogV2ViR0xGcmFtZWJ1ZmZlci5oICovLAogCQkJCTQ5QzdCOUIwMTA0MkQzMkUw
MDA5RDQ0NyAvKiBXZWJHTEZyYW1lYnVmZmVyLmlkbCAqLywKKwkJCQk2RTQ3RTY1RTEwQjc5NDRC
MDBCMTg2QzggLyogV2ViR0xHZXRJbmZvLmNwcCAqLywKKwkJCQk2RTQ3RTY1RjEwQjc5NDRCMDBC
MTg2QzggLyogV2ViR0xHZXRJbmZvLmggKi8sCiAJCQkJNDk0ODRGQjMxMDJDRjIzQzAwMTg3REQz
IC8qIENhbnZhc0dyYWRpZW50LmNwcCAqLywKIAkJCQk0OTQ4NEZCNDEwMkNGMjNDMDAxODdERDMg
LyogQ2FudmFzR3JhZGllbnQuaCAqLywKIAkJCQk0OTQ4NEZCNTEwMkNGMjNDMDAxODdERDMgLyog
Q2FudmFzR3JhZGllbnQuaWRsICovLApAQCAtMTgxMzQsNiArMTgxNDAsNyBAQAogCQkJCUUxMjQ3
NDg0MTBBQTE2MUQwMEI3OTQ5MyAvKiBBdXRoZW50aWNhdGlvbkNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTM4MkRGNTgxMEE4RDVDOTAwOTI1NjUyIC8qIENvbG9yU3BhY2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUFCMzFDOTFFMTBBRTFCOEUwMDBDN0I5MiAvKiBMaW5lQ2xhbXBWYWx1ZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNkU0N0U2NjExMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMR2V0
SW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yMDI3Nyw2ICsyMDI4NCw3IEBACiAJCQkJMTQ3OUZB
RUYxMDlBRTM3NTAwREVENjU1IC8qIFJlbmRlclJ1YnlCYXNlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTE0NzlGQUYxMTA5QUUzNzUwMERFRDY1NSAvKiBSZW5kZXJSdWJ5UnVuLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTE0NzlGQUYzMTA5QUUzNzUwMERFRDY1NSAvKiBSZW5kZXJSdWJ5VGV4dC5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk2RTQ3RTY2MDEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xH
ZXRJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dl
YkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAJKHJldmlzaW9uIDUxMzQx
KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDExICszMywyNSBAQAogI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGUuaCIKICNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJ
bWFnZUVsZW1lbnQuaCIKLSNpbmNsdWRlICJKU1dlYkdMRmxvYXRBcnJheS5oIgotI2luY2x1ZGUg
IkpTV2ViR0xJbnRBcnJheS5oIgogI2luY2x1ZGUgIkpTSFRNTENhbnZhc0VsZW1lbnQuaCIKICNp
bmNsdWRlICJKU0hUTUxJbWFnZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJKU1dlYkdMQnVmZmVyLmgi
CisjaW5jbHVkZSAiSlNXZWJHTEZsb2F0QXJyYXkuaCIKKyNpbmNsdWRlICJKU1dlYkdMRnJhbWVi
dWZmZXIuaCIKKyNpbmNsdWRlICJKU1dlYkdMSW50QXJyYXkuaCIKKyNpbmNsdWRlICJKU1dlYkdM
UHJvZ3JhbS5oIgorI2luY2x1ZGUgIkpTV2ViR0xSZW5kZXJidWZmZXIuaCIKKyNpbmNsdWRlICJK
U1dlYkdMU2hhZGVyLmgiCisjaW5jbHVkZSAiSlNXZWJHTFRleHR1cmUuaCIKKyNpbmNsdWRlICJK
U1dlYkdMVW5zaWduZWRCeXRlQXJyYXkuaCIKICNpbmNsdWRlICJKU1dlYktpdENTU01hdHJpeC5o
IgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiV2ViR0xCdWZmZXIuaCIK
KyNpbmNsdWRlICJXZWJHTEdldEluZm8uaCIKKyNpbmNsdWRlICJXZWJHTEZsb2F0QXJyYXkuaCIK
KyNpbmNsdWRlICJXZWJHTEZyYW1lYnVmZmVyLmgiCisjaW5jbHVkZSAiV2ViR0xJbnRBcnJheS5o
IgorI2luY2x1ZGUgIldlYkdMUHJvZ3JhbS5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4K
ICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9Pd25GYXN0TWFsbG9j
UHRyLmg+CkBAIC04Nyw2ICsxMDEsMjE0IEBAIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmJ1ZmZlclMKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIAorSlNWYWx1ZSB0b0pT
KEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3Qg
V2ViR0xHZXRJbmZvJiBpbmZvKQoreworICAgIHN3aXRjaCAoaW5mby5nZXRUeXBlKCkpIHsKKyAg
ICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVCb29sOgorICAgICAgICByZXR1cm4ganNCb29sZWFu
KGluZm8uZ2V0Qm9vbCgpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVGbG9hdDoKKyAg
ICAgICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMsIGluZm8uZ2V0RmxvYXQoKSk7CisgICAgY2FzZSBX
ZWJHTEdldEluZm86OmtUeXBlTG9uZzoKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMsIGlu
Zm8uZ2V0TG9uZygpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVOdWxsOgorICAgICAg
ICByZXR1cm4ganNOdWxsKCk7CisgICAgY2FzZSBXZWJHTEdldEluZm86OmtUeXBlU3RyaW5nOgor
ICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgaW5mby5nZXRTdHJpbmcoKSk7CisgICAgY2Fz
ZSBXZWJHTEdldEluZm86OmtUeXBlVW5zaWduZWRMb25nOgorICAgICAgICByZXR1cm4ganNOdW1i
ZXIoZXhlYywgaW5mby5nZXRVbnNpZ25lZExvbmcoKSk7CisgICAgY2FzZSBXZWJHTEdldEluZm86
OmtUeXBlV2ViR0xCdWZmZXI6CisgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVj
dCwgaW5mby5nZXRXZWJHTEJ1ZmZlcigpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVX
ZWJHTEZsb2F0QXJyYXk6CisgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwg
aW5mby5nZXRXZWJHTEZsb2F0QXJyYXkoKSk7CisgICAgY2FzZSBXZWJHTEdldEluZm86OmtUeXBl
V2ViR0xGcmFtZWJ1ZmZlcjoKKyAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0
LCBpbmZvLmdldFdlYkdMRnJhbWVidWZmZXIoKSk7CisgICAgY2FzZSBXZWJHTEdldEluZm86OmtU
eXBlV2ViR0xJbnRBcnJheToKKyAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0
LCBpbmZvLmdldFdlYkdMSW50QXJyYXkoKSk7CisgICAgLy8gRklYTUU6IGltcGxlbWVudCBXZWJH
TE9iamVjdEFycmF5CisgICAgLy8gY2FzZSBXZWJHTEdldEluZm86OmtUeXBlV2ViR0xPYmplY3RB
cnJheToKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVXZWJHTFByb2dyYW06CisgICAgICAg
IHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgaW5mby5nZXRXZWJHTFByb2dyYW0oKSk7
CisgICAgY2FzZSBXZWJHTEdldEluZm86OmtUeXBlV2ViR0xSZW5kZXJidWZmZXI6CisgICAgICAg
IHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgaW5mby5nZXRXZWJHTFJlbmRlcmJ1ZmZl
cigpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVXZWJHTFRleHR1cmU6CisgICAgICAg
IHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgaW5mby5nZXRXZWJHTFRleHR1cmUoKSk7
CisgICAgY2FzZSBXZWJHTEdldEluZm86OmtUeXBlV2ViR0xVbnNpZ25lZEJ5dGVBcnJheToKKyAg
ICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBpbmZvLmdldFdlYkdMVW5zaWdu
ZWRCeXRlQXJyYXkoKSk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQorfQorCitlbnVtIE9iamVjdFR5
cGUgeworICAgIGtCdWZmZXIsIGtSZW5kZXJidWZmZXIsIGtUZXh0dXJlLCBrVmVydGV4QXR0cmli
Cit9OworCitzdGF0aWMgSlNWYWx1ZSBnZXRPYmplY3RQYXJhbWV0ZXIoSlNXZWJHTFJlbmRlcmlu
Z0NvbnRleHQqIG9iaiwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzLCBPYmpl
Y3RUeXBlIG9iamVjdFR5cGUpCit7CisgICAgaWYgKGFyZ3Muc2l6ZSgpICE9IDIpCisgICAgICAg
IHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFN5bnRheEVycm9yKTsKKworICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCA9IHN0YXRpY19j
YXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dCo+KG9iai0+aW1wbCgpKTsKKyAgICB1bnNpZ25lZCB0
YXJnZXQgPSBhcmdzLmF0KDApLnRvSW50MzIoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB1bnNpZ25lZCBwbmFt
ZSA9IGFyZ3MuYXQoMSkudG9JbnQzMihleGVjKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIFdlYkdMR2V0SW5mbyBpbmZv
OworICAgIHN3aXRjaCAob2JqZWN0VHlwZSkgeworICAgIGNhc2Uga0J1ZmZlcjoKKyAgICAgICAg
aW5mbyA9IGNvbnRleHQtPmdldEJ1ZmZlclBhcmFtZXRlcih0YXJnZXQsIHBuYW1lLCBlYyk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2Uga1JlbmRlcmJ1ZmZlcjoKKyAgICAgICAgaW5mbyA9IGNv
bnRleHQtPmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcih0YXJnZXQsIHBuYW1lLCBlYyk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2Uga1RleHR1cmU6CisgICAgICAgIGluZm8gPSBjb250ZXh0LT5n
ZXRUZXhQYXJhbWV0ZXIodGFyZ2V0LCBwbmFtZSwgZWMpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIGtWZXJ0ZXhBdHRyaWI6CisgICAgICAgIC8vIHRhcmdldCA9PiBpbmRleAorICAgICAgICBp
bmZvID0gY29udGV4dC0+Z2V0VmVydGV4QXR0cmliKHRhcmdldCwgcG5hbWUsIGVjKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIGlmIChlYykgeworICAgICAgICBzZXRET01FeGNlcHRpb24o
ZXhlYywgZWMpOworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisgICAgcmV0
dXJuIHRvSlMoZXhlYywgb2JqLT5nbG9iYWxPYmplY3QoKSwgaW5mbyk7Cit9CisKK2VudW0gV2hp
Y2hQcm9ncmFtQ2FsbCB7CisgICAga1Byb2dyYW1QYXJhbWV0ZXIsIGtVbmlmb3JtCit9OworCitz
dGF0aWMgSlNWYWx1ZSBnZXRQcm9ncmFtUGFyYW1ldGVySGVscGVyKEpTV2ViR0xSZW5kZXJpbmdD
b250ZXh0KiBvYmosIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncywgV2hpY2hQ
cm9ncmFtQ2FsbCBwcm9ncmFtQ2FsbCkKK3sKKyAgICBpZiAoYXJncy5zaXplKCkgIT0gMikKKyAg
ICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgU3ludGF4RXJyb3IpOworCisgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CisgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0ID0gc3Rh
dGljX2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0Kj4ob2JqLT5pbXBsKCkpOworICAgIFdlYkdM
UHJvZ3JhbSogcHJvZ3JhbSA9IHRvV2ViR0xQcm9ncmFtKGFyZ3MuYXQoMCkpOworICAgIHVuc2ln
bmVkIHBuYW1lID0gYXJncy5hdCgxKS50b0ludDMyKGV4ZWMpOworICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgV2ViR0xHZXRJ
bmZvIGluZm87CisgICAgc3dpdGNoIChwcm9ncmFtQ2FsbCkgeworICAgIGNhc2Uga1Byb2dyYW1Q
YXJhbWV0ZXI6CisgICAgICAgIGluZm8gPSBjb250ZXh0LT5nZXRQcm9ncmFtUGFyYW1ldGVyKHBy
b2dyYW0sIHBuYW1lLCBlYyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Uga1VuaWZvcm06Cisg
ICAgICAgIC8vIHBuYW1lIC0+IGxvY2F0aW9uCisgICAgICAgIGluZm8gPSBjb250ZXh0LT5nZXRV
bmlmb3JtKHByb2dyYW0sIHBuYW1lLCBlYyk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6
CisgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBp
ZiAoZWMpIHsKKyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKyAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQorICAgIHJldHVybiB0b0pTKGV4ZWMsIG9iai0+Z2xv
YmFsT2JqZWN0KCksIGluZm8pOworfQorCitKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpnZXRCdWZmZXJQYXJhbWV0ZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdz
KQoreworICAgIHJldHVybiBnZXRPYmplY3RQYXJhbWV0ZXIodGhpcywgZXhlYywgYXJncywga0J1
ZmZlcik7Cit9CisKK0pTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVm
ZmVyQXR0YWNobWVudFBhcmFtZXRlcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFy
Z3MpCit7CisgICAgaWYgKGFyZ3Muc2l6ZSgpICE9IDMpCisgICAgICAgIHJldHVybiB0aHJvd0Vy
cm9yKGV4ZWMsIFN5bnRheEVycm9yKTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAg
IFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCA9IHN0YXRpY19jYXN0PFdlYkdMUmVuZGVy
aW5nQ29udGV4dCo+KGltcGwoKSk7CisgICAgdW5zaWduZWQgdGFyZ2V0ID0gYXJncy5hdCgwKS50
b0ludDMyKGV4ZWMpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgdW5zaWduZWQgYXR0YWNobWVudCA9IGFyZ3MuYXQoMSku
dG9JbnQzMihleGVjKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOworICAgIHVuc2lnbmVkIHBuYW1lID0gYXJncy5hdCgyKS50b0lu
dDMyKGV4ZWMpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CisgICAgV2ViR0xHZXRJbmZvIGluZm8gPSBjb250ZXh0LT5nZXRGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSwgZWMp
OworICAgIGlmIChlYykgeworICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisgICAgcmV0dXJuIHRvSlMoZXhlYywg
Z2xvYmFsT2JqZWN0KCksIGluZm8pOworfQorCitKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpnZXRQYXJhbWV0ZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQor
eworICAgIGlmIChhcmdzLnNpemUoKSAhPSAxKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihl
eGVjLCBTeW50YXhFcnJvcik7CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBXZWJH
TFJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxXZWJHTFJlbmRlcmluZ0Nv
bnRleHQqPihpbXBsKCkpOworICAgIHVuc2lnbmVkIHBuYW1lID0gYXJncy5hdCgwKS50b0ludDMy
KGV4ZWMpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CisgICAgV2ViR0xHZXRJbmZvIGluZm8gPSBjb250ZXh0LT5nZXRQYXJhbWV0
ZXIocG5hbWUsIGVjKTsKKyAgICBpZiAoZWMpIHsKKyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4
ZWMsIGVjKTsKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQorICAgIHJldHVy
biB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBpbmZvKTsKK30KKworSlNWYWx1ZSBKU1dlYkdM
UmVuZGVyaW5nQ29udGV4dDo6Z2V0UHJvZ3JhbVBhcmFtZXRlcihFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IEFyZ0xpc3QmIGFyZ3MpCit7CisgICAgcmV0dXJuIGdldFByb2dyYW1QYXJhbWV0ZXJIZWxw
ZXIodGhpcywgZXhlYywgYXJncywga1Byb2dyYW1QYXJhbWV0ZXIpOworfQorCitKU1ZhbHVlIEpT
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreworICAgIHJldHVybiBnZXRPYmplY3RQYXJh
bWV0ZXIodGhpcywgZXhlYywgYXJncywga1JlbmRlcmJ1ZmZlcik7Cit9CisKK0pTVmFsdWUgSlNX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFNoYWRlclBhcmFtZXRlcihFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCit7CisgICAgaWYgKGFyZ3Muc2l6ZSgpICE9IDIpCisgICAg
ICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFN5bnRheEVycm9yKTsKKworICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCA9IHN0YXRp
Y19jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dCo+KGltcGwoKSk7CisgICAgV2ViR0xTaGFkZXIq
IHNoYWRlciA9IHRvV2ViR0xTaGFkZXIoYXJncy5hdCgwKSk7CisgICAgdW5zaWduZWQgcG5hbWUg
PSBhcmdzLmF0KDEpLnRvSW50MzIoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBXZWJHTEdldEluZm8gaW5mbyA9
IGNvbnRleHQtPmdldFNoYWRlclBhcmFtZXRlcihzaGFkZXIsIHBuYW1lLCBlYyk7CisgICAgaWYg
KGVjKSB7CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOworICAgIH0KKyAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmpl
Y3QoKSwgaW5mbyk7Cit9CisKK0pTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFRl
eFBhcmFtZXRlcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCit7CisgICAg
cmV0dXJuIGdldE9iamVjdFBhcmFtZXRlcih0aGlzLCBleGVjLCBhcmdzLCBrVGV4dHVyZSk7Cit9
CisKK0pTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFVuaWZvcm0oRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreworICAgIHJldHVybiBnZXRQcm9ncmFtUGFy
YW1ldGVySGVscGVyKHRoaXMsIGV4ZWMsIGFyZ3MsIGtVbmlmb3JtKTsKK30KKworSlNWYWx1ZSBK
U1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VmVydGV4QXR0cmliKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICByZXR1cm4gZ2V0T2JqZWN0UGFyYW1ldGVyKHRo
aXMsIGV4ZWMsIGFyZ3MsIGtWZXJ0ZXhBdHRyaWIpOworfQorCiAvLyB2b2lkIHRleEltYWdlMkRI
VE1MKGluIHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBpbiB1bnNpZ25lZCBsb25nIGxldmVsLCBpbiBI
VE1MSW1hZ2VFbGVtZW50IGltYWdlKTsKIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OnRleEltYWdlMkQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogeyAKSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oCShyZXZp
c2lvbiA1MTM0MSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGlu
Zy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNjUsNyArMzY1LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICNpZiBFTkFCTEUoM0RfQ0FOVkFTKQogICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJ1ZmZlckRhdGEpOwogICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJ1ZmZlclN1YkRhdGEpOwotICAgICAgICBERUNMQVJFX0NBTExC
QUNLKFdlYkdMUmVuZGVyaW5nQ29udGV4dFNpemVvZik7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJB
Q0soV2ViR0xSZW5kZXJpbmdDb250ZXh0R2V0QnVmZmVyUGFyYW1ldGVyKTsKKyAgICAgICAgREVD
TEFSRV9DQUxMQkFDSyhXZWJHTFJlbmRlcmluZ0NvbnRleHRHZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXIpOworICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEdldFBhcmFtZXRlcik7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xSZW5kZXJp
bmdDb250ZXh0R2V0UHJvZ3JhbVBhcmFtZXRlcik7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0so
V2ViR0xSZW5kZXJpbmdDb250ZXh0R2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKTsKKyAgICAgICAg
REVDTEFSRV9DQUxMQkFDSyhXZWJHTFJlbmRlcmluZ0NvbnRleHRHZXRTaGFkZXJQYXJhbWV0ZXIp
OworICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdMUmVuZGVyaW5nQ29udGV4dEdldFRleFBh
cmFtZXRlcik7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xSZW5kZXJpbmdDb250ZXh0
R2V0VW5pZm9ybSk7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xSZW5kZXJpbmdDb250
ZXh0R2V0VmVydGV4QXR0cmliKTsKICAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJHTFJlbmRl
cmluZ0NvbnRleHRUZXhJbWFnZTJEKTsKICAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJHTFJl
bmRlcmluZ0NvbnRleHRUZXhTdWJJbWFnZTJEKTsKICAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhX
ZWJHTFJlbmRlcmluZ0NvbnRleHRVbmlmb3JtMWZ2KTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3Rv
bS5jcHAJKHJldmlzaW9uIDUxMzQxKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhX
ZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0
NSw4IEBACiAjaW5jbHVkZSAiVjhXZWJHTEJ5dGVBcnJheS5oIgogI2luY2x1ZGUgIlY4V2ViR0xG
bG9hdEFycmF5LmgiCiAjaW5jbHVkZSAiVjhXZWJHTEludEFycmF5LmgiCisjaW5jbHVkZSAiVjhX
ZWJHTFByb2dyYW0uaCIKKyNpbmNsdWRlICJWOFdlYkdMU2hhZGVyLmgiCiAjaW5jbHVkZSAiVjhX
ZWJHTFNob3J0QXJyYXkuaCIKICNpbmNsdWRlICJWOFdlYkdMVW5zaWduZWRCeXRlQXJyYXkuaCIK
ICNpbmNsdWRlICJWOFdlYkdMVW5zaWduZWRJbnRBcnJheS5oIgpAQCAtMTcwLDYgKzE3MiwyNjMg
QEAgQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYkdMUmVuZGVyaW5nQ29udGV4dAogICAgIHJldHVybiB2
ODo6VW5kZWZpbmVkKCk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChj
b25zdCBXZWJHTEdldEluZm8mIGluZm8pCit7CisgICAgc3dpdGNoIChpbmZvLmdldFR5cGUoKSkg
eworICAgIGNhc2UgV2ViR0xHZXRJbmZvOjprVHlwZUJvb2w6CisgICAgICAgIHJldHVybiB2ODo6
Qm9vbGVhbjo6TmV3KGluZm8uZ2V0Qm9vbCgpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5
cGVGbG9hdDoKKyAgICAgICAgcmV0dXJuIHY4OjpOdW1iZXI6Ok5ldyhpbmZvLmdldEZsb2F0KCkp
OworICAgIGNhc2UgV2ViR0xHZXRJbmZvOjprVHlwZUxvbmc6CisgICAgICAgIHJldHVybiB2ODo6
SW50ZWdlcjo6TmV3KGluZm8uZ2V0TG9uZygpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5
cGVOdWxsOgorICAgICAgICByZXR1cm4gdjg6Ok51bGwoKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5m
bzo6a1R5cGVTdHJpbmc6CisgICAgICAgIHJldHVybiB2ODo6U3RyaW5nOjpOZXcoZnJvbVdlYkNv
cmVTdHJpbmcoaW5mby5nZXRTdHJpbmcoKSksIGluZm8uZ2V0U3RyaW5nKCkubGVuZ3RoKCkpOwor
ICAgIGNhc2UgV2ViR0xHZXRJbmZvOjprVHlwZVVuc2lnbmVkTG9uZzoKKyAgICAgICAgcmV0dXJu
IHY4OjpJbnRlZ2VyOjpOZXdGcm9tVW5zaWduZWQoaW5mby5nZXRVbnNpZ25lZExvbmcoKSk7Cisg
ICAgY2FzZSBXZWJHTEdldEluZm86OmtUeXBlV2ViR0xCdWZmZXI6CisgICAgICAgIHJldHVybiBW
OERPTVdyYXBwZXI6OmNvbnZlcnRUb1Y4T2JqZWN0KFY4Q2xhc3NJbmRleDo6V0VCR0xCVUZGRVIs
IGluZm8uZ2V0V2ViR0xCdWZmZXIoKSk7CisgICAgY2FzZSBXZWJHTEdldEluZm86OmtUeXBlV2Vi
R0xGbG9hdEFycmF5OgorICAgICAgICByZXR1cm4gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9WOE9i
amVjdChWOENsYXNzSW5kZXg6OldFQkdMRkxPQVRBUlJBWSwgaW5mby5nZXRXZWJHTEZsb2F0QXJy
YXkoKSk7CisgICAgY2FzZSBXZWJHTEdldEluZm86OmtUeXBlV2ViR0xGcmFtZWJ1ZmZlcjoKKyAg
ICAgICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6Y29udmVydFRvVjhPYmplY3QoVjhDbGFzc0luZGV4
OjpXRUJHTEZSQU1FQlVGRkVSLCBpbmZvLmdldFdlYkdMRnJhbWVidWZmZXIoKSk7CisgICAgY2Fz
ZSBXZWJHTEdldEluZm86OmtUeXBlV2ViR0xJbnRBcnJheToKKyAgICAgICAgcmV0dXJuIFY4RE9N
V3JhcHBlcjo6Y29udmVydFRvVjhPYmplY3QoVjhDbGFzc0luZGV4OjpXRUJHTElOVEFSUkFZLCBp
bmZvLmdldFdlYkdMSW50QXJyYXkoKSk7CisgICAgLy8gRklYTUU6IGltcGxlbWVudCBXZWJHTE9i
amVjdEFycmF5CisgICAgLy8gY2FzZSBXZWJHTEdldEluZm86OmtUeXBlV2ViR0xPYmplY3RBcnJh
eToKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVXZWJHTFByb2dyYW06CisgICAgICAgIHJl
dHVybiBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb1Y4T2JqZWN0KFY4Q2xhc3NJbmRleDo6V0VCR0xQ
Uk9HUkFNLCBpbmZvLmdldFdlYkdMUHJvZ3JhbSgpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6
a1R5cGVXZWJHTFJlbmRlcmJ1ZmZlcjoKKyAgICAgICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6Y29u
dmVydFRvVjhPYmplY3QoVjhDbGFzc0luZGV4OjpXRUJHTFJFTkRFUkJVRkZFUiwgaW5mby5nZXRX
ZWJHTFJlbmRlcmJ1ZmZlcigpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVXZWJHTFRl
eHR1cmU6CisgICAgICAgIHJldHVybiBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb1Y4T2JqZWN0KFY4
Q2xhc3NJbmRleDo6V0VCR0xURVhUVVJFLCBpbmZvLmdldFdlYkdMVGV4dHVyZSgpKTsKKyAgICBj
YXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVXZWJHTFVuc2lnbmVkQnl0ZUFycmF5OgorICAgICAgICBy
ZXR1cm4gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9WOE9iamVjdChWOENsYXNzSW5kZXg6OldFQkdM
VU5TSUdORURCWVRFQVJSQVksIGluZm8uZ2V0V2ViR0xVbnNpZ25lZEJ5dGVBcnJheSgpKTsKKyAg
ICBkZWZhdWx0OgorICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgICAgICByZXR1cm4gdjg6
OlVuZGVmaW5lZCgpOworICAgIH0KK30KKworZW51bSBPYmplY3RUeXBlIHsKKyAgICBrQnVmZmVy
LCBrUmVuZGVyYnVmZmVyLCBrVGV4dHVyZSwga1ZlcnRleEF0dHJpYgorfTsKKworc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBnZXRPYmplY3RQYXJhbWV0ZXIoY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncywgT2JqZWN0VHlwZSBvYmplY3RUeXBlKQoreworICAgIGlmIChhcmdzLkxlbmd0aCgp
ICE9IDIpIHsKKyAgICAgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKFNZTlRBWF9FUlIpOwor
ICAgICAgICByZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsKKyAgICB9CisKKyAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQg
PQorICAgICAgICBWOERPTVdyYXBwZXI6OmNvbnZlcnRET01XcmFwcGVyVG9OYXRpdmU8V2ViR0xS
ZW5kZXJpbmdDb250ZXh0PihhcmdzLkhvbGRlcigpKTsKKyAgICBib29sIG9rOworICAgIHVuc2ln
bmVkIHRhcmdldCA9IHRvSW50MzIoYXJnc1swXSwgb2spOworICAgIGlmICghb2spIHsKKyAgICAg
ICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKFNZTlRBWF9FUlIpOworICAgICAgICByZXR1cm4g
bm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsKKyAgICB9CisgICAgdW5zaWduZWQgcG5hbWUgPSB0
b0ludDMyKGFyZ3NbMV0sIG9rKTsKKyAgICBpZiAoIW9rKSB7CisgICAgICAgIFY4UHJveHk6OnNl
dERPTUV4Y2VwdGlvbihTWU5UQVhfRVJSKTsKKyAgICAgICAgcmV0dXJuIG5vdEhhbmRsZWRCeUlu
dGVyY2VwdG9yKCk7CisgICAgfQorICAgIFdlYkdMR2V0SW5mbyBpbmZvOworICAgIHN3aXRjaCAo
b2JqZWN0VHlwZSkgeworICAgIGNhc2Uga0J1ZmZlcjoKKyAgICAgICAgaW5mbyA9IGNvbnRleHQt
PmdldEJ1ZmZlclBhcmFtZXRlcih0YXJnZXQsIHBuYW1lLCBlYyk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2Uga1JlbmRlcmJ1ZmZlcjoKKyAgICAgICAgaW5mbyA9IGNvbnRleHQtPmdldFJlbmRl
cmJ1ZmZlclBhcmFtZXRlcih0YXJnZXQsIHBuYW1lLCBlYyk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2Uga1RleHR1cmU6CisgICAgICAgIGluZm8gPSBjb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXIo
dGFyZ2V0LCBwbmFtZSwgZWMpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIGtWZXJ0ZXhBdHRy
aWI6CisgICAgICAgIC8vIHRhcmdldCA9PiBpbmRleAorICAgICAgICBpbmZvID0gY29udGV4dC0+
Z2V0VmVydGV4QXR0cmliKHRhcmdldCwgcG5hbWUsIGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorICAgIGlmIChlYykgeworICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oZWMpOwor
ICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgIH0KKyAgICByZXR1cm4gdG9WOChp
bmZvKTsKK30KKworZW51bSBXaGljaFByb2dyYW1DYWxsIHsKKyAgICBrUHJvZ3JhbVBhcmFtZXRl
ciwga1VuaWZvcm0KK307CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZ2V0UHJvZ3Jh
bVBhcmFtZXRlcihjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzLCBXaGljaFByb2dyYW1DYWxsIHBy
b2dyYW1DYWxsKQoreworICAgIGlmIChhcmdzLkxlbmd0aCgpICE9IDIpIHsKKyAgICAgICAgVjhQ
cm94eTo6c2V0RE9NRXhjZXB0aW9uKFNZTlRBWF9FUlIpOworICAgICAgICByZXR1cm4gbm90SGFu
ZGxlZEJ5SW50ZXJjZXB0b3IoKTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
KyAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQgPQorICAgICAgICBWOERPTVdyYXBw
ZXI6OmNvbnZlcnRET01XcmFwcGVyVG9OYXRpdmU8V2ViR0xSZW5kZXJpbmdDb250ZXh0Pihhcmdz
LkhvbGRlcigpKTsKKyAgICBXZWJHTFByb2dyYW0qIHByb2dyYW0gPSBWOFdlYkdMUHJvZ3JhbTo6
SGFzSW5zdGFuY2UoYXJnc1swXSkgPyB2OERPTVdyYXBwZXJUbzxXZWJHTFByb2dyYW0+KFY4Q2xh
c3NJbmRleDo6V0VCR0xQUk9HUkFNLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3Nb
MF0pKSA6IDA7CisgICAgYm9vbCBvazsKKyAgICB1bnNpZ25lZCBwbmFtZSA9IHRvSW50MzIoYXJn
c1sxXSwgb2spOworICAgIGlmICghb2spIHsKKyAgICAgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0
aW9uKFNZTlRBWF9FUlIpOworICAgICAgICByZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3Io
KTsKKyAgICB9CisgICAgV2ViR0xHZXRJbmZvIGluZm87CisgICAgc3dpdGNoIChwcm9ncmFtQ2Fs
bCkgeworICAgIGNhc2Uga1Byb2dyYW1QYXJhbWV0ZXI6CisgICAgICAgIGluZm8gPSBjb250ZXh0
LT5nZXRQcm9ncmFtUGFyYW1ldGVyKHByb2dyYW0sIHBuYW1lLCBlYyk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2Uga1VuaWZvcm06CisgICAgICAgIC8vIHBuYW1lIC0+IGxvY2F0aW9uCisgICAg
ICAgIGluZm8gPSBjb250ZXh0LT5nZXRVbmlmb3JtKHByb2dyYW0sIHBuYW1lLCBlYyk7CisgICAg
ICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBpZiAoZWMpIHsKKyAgICAgICAgVjhQcm94eTo6c2V0RE9N
RXhjZXB0aW9uKGVjKTsKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICB9Cisg
ICAgcmV0dXJuIHRvVjgoaW5mbyk7Cit9CisKKworQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEdldEJ1ZmZlclBhcmFtZXRlcikKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuZ2V0QnVmZmVyUGFyYW1ldGVyKCkiKTsKKyAgICByZXR1cm4g
Z2V0T2JqZWN0UGFyYW1ldGVyKGFyZ3MsIGtCdWZmZXIpOworfQorCitDQUxMQkFDS19GVU5DX0RF
Q0woV2ViR0xSZW5kZXJpbmdDb250ZXh0R2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
KQoreworICAgIElOQ19TVEFUUygiRE9NLldlYkdMUmVuZGVyaW5nQ29udGV4dC5nZXRGcmFtZWJ1
ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoKSIpOworCisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgIT0g
MykgeworICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oU1lOVEFYX0VSUik7CisgICAg
ICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOworICAgIH0KKworICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCA9Cisg
ICAgICAgIFY4RE9NV3JhcHBlcjo6Y29udmVydERPTVdyYXBwZXJUb05hdGl2ZTxXZWJHTFJlbmRl
cmluZ0NvbnRleHQ+KGFyZ3MuSG9sZGVyKCkpOworICAgIGJvb2wgb2s7CisgICAgdW5zaWduZWQg
dGFyZ2V0ID0gdG9JbnQzMihhcmdzWzBdLCBvayk7CisgICAgaWYgKCFvaykgeworICAgICAgICBW
OFByb3h5OjpzZXRET01FeGNlcHRpb24oU1lOVEFYX0VSUik7CisgICAgICAgIHJldHVybiBub3RI
YW5kbGVkQnlJbnRlcmNlcHRvcigpOworICAgIH0KKyAgICB1bnNpZ25lZCBhdHRhY2htZW50ID0g
dG9JbnQzMihhcmdzWzFdLCBvayk7CisgICAgaWYgKCFvaykgeworICAgICAgICBWOFByb3h5Ojpz
ZXRET01FeGNlcHRpb24oU1lOVEFYX0VSUik7CisgICAgICAgIHJldHVybiBub3RIYW5kbGVkQnlJ
bnRlcmNlcHRvcigpOworICAgIH0KKyAgICB1bnNpZ25lZCBwbmFtZSA9IHRvSW50MzIoYXJnc1sy
XSwgb2spOworICAgIGlmICghb2spIHsKKyAgICAgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9u
KFNZTlRBWF9FUlIpOworICAgICAgICByZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsK
KyAgICB9CisgICAgV2ViR0xHZXRJbmZvIGluZm8gPSBjb250ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXIodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSwgZWMpOworICAgIGlm
IChlYykgeworICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oZWMpOworICAgICAgICBy
ZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgIH0KKyAgICByZXR1cm4gdG9WOChpbmZvKTsKK30K
KworQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYkdMUmVuZGVyaW5nQ29udGV4dEdldFBhcmFtZXRlcikK
K3sKKyAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRlcmluZ0NvbnRleHQuZ2V0UGFyYW1ldGVy
KCkiKTsKKworICAgIGlmIChhcmdzLkxlbmd0aCgpICE9IDEpIHsKKyAgICAgICAgVjhQcm94eTo6
c2V0RE9NRXhjZXB0aW9uKFNZTlRBWF9FUlIpOworICAgICAgICByZXR1cm4gbm90SGFuZGxlZEJ5
SW50ZXJjZXB0b3IoKTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQgPQorICAgICAgICBWOERPTVdyYXBwZXI6OmNv
bnZlcnRET01XcmFwcGVyVG9OYXRpdmU8V2ViR0xSZW5kZXJpbmdDb250ZXh0PihhcmdzLkhvbGRl
cigpKTsKKyAgICBib29sIG9rOworICAgIHVuc2lnbmVkIHBuYW1lID0gdG9JbnQzMihhcmdzWzBd
LCBvayk7CisgICAgaWYgKCFvaykgeworICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24o
U1lOVEFYX0VSUik7CisgICAgICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOwor
ICAgIH0KKyAgICBXZWJHTEdldEluZm8gaW5mbyA9IGNvbnRleHQtPmdldFBhcmFtZXRlcihwbmFt
ZSwgZWMpOworICAgIGlmIChlYykgeworICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24o
ZWMpOworICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgIH0KKyAgICByZXR1cm4g
dG9WOChpbmZvKTsKK30KKworQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYkdMUmVuZGVyaW5nQ29udGV4
dEdldFByb2dyYW1QYXJhbWV0ZXIpCit7CisgICAgSU5DX1NUQVRTKCJET00uV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmdldFByb2dyYW1QYXJhbWV0ZXIoKSIpOworICAgIHJldHVybiBnZXRQcm9ncmFt
UGFyYW1ldGVyKGFyZ3MsIGtQcm9ncmFtUGFyYW1ldGVyKTsKK30KKworQ0FMTEJBQ0tfRlVOQ19E
RUNMKFdlYkdMUmVuZGVyaW5nQ29udGV4dEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcikKK3sKKyAg
ICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRlcmluZ0NvbnRleHQuZ2V0UmVuZGVyYnVmZmVyUGFy
YW1ldGVyKCkiKTsKKyAgICByZXR1cm4gZ2V0T2JqZWN0UGFyYW1ldGVyKGFyZ3MsIGtSZW5kZXJi
dWZmZXIpOworfQorCitDQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xSZW5kZXJpbmdDb250ZXh0R2V0
U2hhZGVyUGFyYW1ldGVyKQoreworICAgIElOQ19TVEFUUygiRE9NLldlYkdMUmVuZGVyaW5nQ29u
dGV4dC5nZXRTaGFkZXJQYXJhbWV0ZXIoKSIpOworCisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgIT0g
MikgeworICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oU1lOVEFYX0VSUik7CisgICAg
ICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOworICAgIH0KKworICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCA9Cisg
ICAgICAgIFY4RE9NV3JhcHBlcjo6Y29udmVydERPTVdyYXBwZXJUb05hdGl2ZTxXZWJHTFJlbmRl
cmluZ0NvbnRleHQ+KGFyZ3MuSG9sZGVyKCkpOworICAgIFdlYkdMU2hhZGVyKiBzaGFkZXIgPSBW
OFdlYkdMU2hhZGVyOjpIYXNJbnN0YW5jZShhcmdzWzBdKSA/IHY4RE9NV3JhcHBlclRvPFdlYkdM
U2hhZGVyPihWOENsYXNzSW5kZXg6OldFQkdMU0hBREVSLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
OjpDYXN0KGFyZ3NbMF0pKSA6IDA7CisgICAgYm9vbCBvazsKKyAgICB1bnNpZ25lZCBwbmFtZSA9
IHRvSW50MzIoYXJnc1sxXSwgb2spOworICAgIGlmICghb2spIHsKKyAgICAgICAgVjhQcm94eTo6
c2V0RE9NRXhjZXB0aW9uKFNZTlRBWF9FUlIpOworICAgICAgICByZXR1cm4gbm90SGFuZGxlZEJ5
SW50ZXJjZXB0b3IoKTsKKyAgICB9CisgICAgV2ViR0xHZXRJbmZvIGluZm8gPSBjb250ZXh0LT5n
ZXRTaGFkZXJQYXJhbWV0ZXIoc2hhZGVyLCBwbmFtZSwgZWMpOworICAgIGlmIChlYykgeworICAg
ICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oZWMpOworICAgICAgICByZXR1cm4gdjg6OlVu
ZGVmaW5lZCgpOworICAgIH0KKyAgICByZXR1cm4gdG9WOChpbmZvKTsKK30KKworQ0FMTEJBQ0tf
RlVOQ19ERUNMKFdlYkdMUmVuZGVyaW5nQ29udGV4dEdldFRleFBhcmFtZXRlcikKK3sKKyAgICBJ
TkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRlcmluZ0NvbnRleHQuZ2V0VGV4UGFyYW1ldGVyKCkiKTsK
KyAgICByZXR1cm4gZ2V0T2JqZWN0UGFyYW1ldGVyKGFyZ3MsIGtUZXh0dXJlKTsKK30KKworQ0FM
TEJBQ0tfRlVOQ19ERUNMKFdlYkdMUmVuZGVyaW5nQ29udGV4dEdldFVuaWZvcm0pCit7CisgICAg
SU5DX1NUQVRTKCJET00uV2ViR0xSZW5kZXJpbmdDb250ZXh0LmdldFVuaWZvcm0oKSIpOworICAg
IHJldHVybiBnZXRQcm9ncmFtUGFyYW1ldGVyKGFyZ3MsIGtVbmlmb3JtKTsKK30KKworQ0FMTEJB
Q0tfRlVOQ19ERUNMKFdlYkdMUmVuZGVyaW5nQ29udGV4dEdldFZlcnRleEF0dHJpYikKK3sKKyAg
ICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRlcmluZ0NvbnRleHQuZ2V0VmVydGV4QXR0cmliKCki
KTsKKyAgICByZXR1cm4gZ2V0T2JqZWN0UGFyYW1ldGVyKGFyZ3MsIGtWZXJ0ZXhBdHRyaWIpOwor
fQorCiBDQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xSZW5kZXJpbmdDb250ZXh0VGV4SW1hZ2UyRCkK
IHsKICAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRlcmluZ0NvbnRleHQudGV4SW1hZ2UyRCgp
Iik7CkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc09iamVjdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNPYmplY3QuY3BwCShyZXZpc2lvbiA1MTM0
MSkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzT2JqZWN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiBDYW52YXNPYmpl
Y3Q6OkNhbnZhc09iamVjdChXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQpCiAgICAgOiBt
X29iamVjdCgwKQorICAgICwgbV9zaG91bGREZWxldGVPYmplY3QodHJ1ZSkKICAgICAsIG1fY29u
dGV4dChjb250ZXh0KQogewogfQpAQCAtNDQsMjQgKzQ1LDI3IEBAIENhbnZhc09iamVjdDo6fkNh
bnZhc09iamVjdCgpCiAgICAgICAgIG1fY29udGV4dC0+cmVtb3ZlT2JqZWN0KHRoaXMpOwogfQog
Ci12b2lkIENhbnZhc09iamVjdDo6c2V0T2JqZWN0KFBsYXRmb3JtM0RPYmplY3Qgb2JqZWN0KQor
dm9pZCBDYW52YXNPYmplY3Q6OnNldE9iamVjdChQbGF0Zm9ybTNET2JqZWN0IG9iamVjdCwgYm9v
bCBzaG91bGREZWxldGVPYmplY3QpCiB7CiAgICAgaWYgKG9iamVjdCA9PSBtX29iamVjdCkKICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBkZWxldGVPYmplY3QoKTsKICAgICBtX29iamVj
dCA9IG9iamVjdDsKKyAgICBtX3Nob3VsZERlbGV0ZU9iamVjdCA9IHNob3VsZERlbGV0ZU9iamVj
dDsKIH0KIAogdm9pZCBDYW52YXNPYmplY3Q6OmRlbGV0ZU9iamVjdCgpCiB7CiAgICAgaWYgKG1f
b2JqZWN0KSB7Ci0gICAgICAgIGlmIChtX2NvbnRleHQpIHsKLSAgICAgICAgICAgIG1fY29udGV4
dC0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+bWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgICAgICAg
ICBfZGVsZXRlT2JqZWN0KG1fb2JqZWN0KTsKLSAgICAgICAgfQorICAgICAgICBpZiAobV9zaG91
bGREZWxldGVPYmplY3QpCisgICAgICAgICAgICBpZiAobV9jb250ZXh0KSB7CisgICAgICAgICAg
ICAgICAgbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpLT5tYWtlQ29udGV4dEN1cnJlbnQo
KTsKKyAgICAgICAgICAgICAgICBfZGVsZXRlT2JqZWN0KG1fb2JqZWN0KTsKKyAgICAgICAgICAg
IH0KICAgICAgICAgbV9vYmplY3QgPSAwOwogICAgIH0KKyAgICBtX3Nob3VsZERlbGV0ZU9iamVj
dCA9IHRydWU7CiB9CiAKIH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzT2JqZWN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNPYmplY3QuaAkocmV2
aXNpb24gNTEzNDEpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc09iamVjdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dmlydHVhbCB+Q2FudmFzT2JqZWN0KCk7CiAgICAgICAgIAogICAgICAgICBQbGF0Zm9ybTNET2Jq
ZWN0IG9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0OyB9Ci0gICAgICAgIHZvaWQgc2V0
T2JqZWN0KFBsYXRmb3JtM0RPYmplY3QpOworICAgICAgICB2b2lkIHNldE9iamVjdChQbGF0Zm9y
bTNET2JqZWN0LCBib29sIHNob3VsZERlbGV0ZU9iamVjdCA9IHRydWUpOwogICAgICAgICB2b2lk
IGRlbGV0ZU9iamVjdCgpOwogICAgICAgICAKICAgICAgICAgdm9pZCBkZXRhY2hDb250ZXh0KCkK
QEAgLTU3LDYgKzU3LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKICAgICBwcml2YXRl
OgogICAgICAgICBQbGF0Zm9ybTNET2JqZWN0IG1fb2JqZWN0OworICAgICAgICAvLyBUaGUgc2hv
dWxkRGVsZXRlT2JqZWN0IGZsYWcgaW5kaWNhdGVzIHdoZXRoZXIgdGhpcyB3cmFwcGVyCisgICAg
ICAgIC8vIG93bnMgdGhlIHVuZGVybHlpbmcgcmVzb3VyY2UgYW5kIHNob3VsZCBkZWxldGUgaXQg
d2hlbiB0aGUKKyAgICAgICAgLy8gd3JhcHBlciBpcyB1bnJlZmVyZW5jZWQgZm9yIHRoZSBsYXN0
IHRpbWUgYW5kIGRlbGV0ZWQuIEl0CisgICAgICAgIC8vIGlzIG9ubHkgc2V0IHRvIGZhbHNlIGZv
ciBjZXJ0YWluIG9iamVjdHMgcmV0dXJuZWQgZnJvbSBnZXQKKyAgICAgICAgLy8gcXVlcmllcy4g
RklYTUU6IHNob3VsZCBjb25zaWRlciBjYW5vbmljYWxpemluZyBhbGwgb2YgdGhlc2UKKyAgICAg
ICAgLy8gb2JqZWN0cyBpbiB0aGUgZnV0dXJlLgorICAgICAgICBib29sIG1fc2hvdWxkRGVsZXRl
T2JqZWN0OwogICAgICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQqIG1fY29udGV4dDsKICAgICB9
OwogICAgIApJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAJKHJldmlzaW9uIDUx
MzQxKQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDYgKzM3LDExIEBAIFBhc3NSZWZQdHI8V2ViR0xCdWZmZXI+IFdlYkdMQnVmZmVy
OjpjcmUKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdMQnVmZmVyKGN0eCkpOwogfQogCitQ
YXNzUmVmUHRyPFdlYkdMQnVmZmVyPiBXZWJHTEJ1ZmZlcjo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5n
Q29udGV4dCogY3R4LCBQbGF0Zm9ybTNET2JqZWN0IG9iaikKK3sKKyAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFdlYkdMQnVmZmVyKGN0eCwgb2JqKSk7Cit9CisKIFdlYkdMQnVmZmVyOjpXZWJHTEJ1
ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGN0eCkKICAgICA6IENhbnZhc09iamVjdChjdHgp
CiAgICAgLCBtX2VsZW1lbnRBcnJheUJ1ZmZlckJ5dGVMZW5ndGgoMCkKQEAgLTQ2LDYgKzUxLDEy
IEBAIFdlYkdMQnVmZmVyOjpXZWJHTEJ1ZmZlcihXZWJHTFJlbmRlcmluZ0MKICAgICBzZXRPYmpl
Y3QoY29udGV4dCgpLT5ncmFwaGljc0NvbnRleHQzRCgpLT5jcmVhdGVCdWZmZXIoKSk7CiB9CiAK
K1dlYkdMQnVmZmVyOjpXZWJHTEJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGN0eCwgUGxh
dGZvcm0zRE9iamVjdCBvYmopCisgICAgOiBDYW52YXNPYmplY3QoY3R4KQoreworICAgIHNldE9i
amVjdChvYmosIGZhbHNlKTsKK30KKwogdm9pZCBXZWJHTEJ1ZmZlcjo6X2RlbGV0ZU9iamVjdChQ
bGF0Zm9ybTNET2JqZWN0IG9iamVjdCkKIHsKICAgICBjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4
dDNEKCktPmRlbGV0ZUJ1ZmZlcihvYmplY3QpOwpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTEJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZm
ZXIuaAkocmV2aXNpb24gNTEzNDEpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkdMQnVmZmVyPiBjcmVhdGUo
V2ViR0xSZW5kZXJpbmdDb250ZXh0Kik7CiAgICAgICAgIAorICAgICAgICAvLyBGb3IgcXVlcnlp
bmcgcHJldmlvdXNseSBjcmVhdGVkIG9iamVjdHMgdmlhIGUuZy4gZ2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyCisgICAgICAgIC8vIEZJWE1FOiBzaG91bGQgY29uc2lkZXIgY2Fub25p
Y2FsaXppbmcgdGhlc2Ugb2JqZWN0cworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJHTEJ1
ZmZlcj4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCosIFBsYXRmb3JtM0RPYmplY3QpOwor
CiAgICAgICAgIGJvb2wgYXNzb2NpYXRlQnVmZmVyRGF0YSh1bnNpZ25lZCBsb25nIHRhcmdldCwg
aW50IHNpemUpOwogICAgICAgICBib29sIGFzc29jaWF0ZUJ1ZmZlckRhdGEodW5zaWduZWQgbG9u
ZyB0YXJnZXQsIFdlYkdMQXJyYXkqIGFycmF5KTsKICAgICAgICAgYm9vbCBhc3NvY2lhdGVCdWZm
ZXJTdWJEYXRhKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBsb25nIG9mZnNldCwgV2ViR0xBcnJheSog
YXJyYXkpOwpAQCAtNDksNiArNTMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIFdlYkdMQnVmZmVyKFdlYkdM
UmVuZGVyaW5nQ29udGV4dCopOworICAgICAgICBXZWJHTEJ1ZmZlcihXZWJHTFJlbmRlcmluZ0Nv
bnRleHQqLCBQbGF0Zm9ybTNET2JqZWN0IG9iaik7CiAgICAgICAgIAogICAgICAgICB2aXJ0dWFs
IHZvaWQgX2RlbGV0ZU9iamVjdChQbGF0Zm9ybTNET2JqZWN0IG8pOwogICAgIApJbmRleDogV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTEdldEluZm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xHZXRJbmZvLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMTUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2lmIEVOQUJMRSgzRF9DQU5WQVMpCisKKyNpbmNsdWRlICJXZWJHTEdldElu
Zm8uaCIKKyNpbmNsdWRlICJXZWJHTEJ1ZmZlci5oIgorI2luY2x1ZGUgIldlYkdMRmxvYXRBcnJh
eS5oIgorI2luY2x1ZGUgIldlYkdMRnJhbWVidWZmZXIuaCIKKyNpbmNsdWRlICJXZWJHTEludEFy
cmF5LmgiCisjaW5jbHVkZSAiV2ViR0xQcm9ncmFtLmgiCisjaW5jbHVkZSAiV2ViR0xSZW5kZXJi
dWZmZXIuaCIKKyNpbmNsdWRlICJXZWJHTFRleHR1cmUuaCIKKyNpbmNsdWRlICJXZWJHTFVuc2ln
bmVkQnl0ZUFycmF5LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV2ViR0xHZXRJbmZvOjpX
ZWJHTEdldEluZm8oYm9vbCB2YWx1ZSkKKyAgICA6IG1fdHlwZShrVHlwZUJvb2wpCisgICAgLCBt
X2Jvb2wodmFsdWUpCit7Cit9CisKK1dlYkdMR2V0SW5mbzo6V2ViR0xHZXRJbmZvKGZsb2F0IHZh
bHVlKQorICAgIDogbV90eXBlKGtUeXBlRmxvYXQpCisgICAgLCBtX2Zsb2F0KHZhbHVlKQorewor
fQorCitXZWJHTEdldEluZm86OldlYkdMR2V0SW5mbyhsb25nIHZhbHVlKQorICAgIDogbV90eXBl
KGtUeXBlTG9uZykKKyAgICAsIG1fbG9uZyh2YWx1ZSkKK3sKK30KKworV2ViR0xHZXRJbmZvOjpX
ZWJHTEdldEluZm8oKQorICAgIDogbV90eXBlKGtUeXBlTnVsbCkKK3sKK30KKworV2ViR0xHZXRJ
bmZvOjpXZWJHTEdldEluZm8oY29uc3QgU3RyaW5nJiB2YWx1ZSkKKyAgICA6IG1fdHlwZShrVHlw
ZVN0cmluZykKKyAgICAsIG1fc3RyaW5nKHZhbHVlKQoreworfQorCitXZWJHTEdldEluZm86Oldl
YkdMR2V0SW5mbyh1bnNpZ25lZCBsb25nIHZhbHVlKQorICAgIDogbV90eXBlKGtUeXBlVW5zaWdu
ZWRMb25nKQorICAgICwgbV91bnNpZ25lZExvbmcodmFsdWUpCit7Cit9CisKK1dlYkdMR2V0SW5m
bzo6V2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xCdWZmZXI+IHZhbHVlKQorICAgIDogbV90
eXBlKGtUeXBlV2ViR0xCdWZmZXIpCisgICAgLCBtX3dlYmdsQnVmZmVyKHZhbHVlKQoreworfQor
CitXZWJHTEdldEluZm86OldlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4g
dmFsdWUpCisgICAgOiBtX3R5cGUoa1R5cGVXZWJHTEZsb2F0QXJyYXkpCisgICAgLCBtX3dlYmds
RmxvYXRBcnJheSh2YWx1ZSkKK3sKK30KKworV2ViR0xHZXRJbmZvOjpXZWJHTEdldEluZm8oUGFz
c1JlZlB0cjxXZWJHTEZyYW1lYnVmZmVyPiB2YWx1ZSkKKyAgICA6IG1fdHlwZShrVHlwZVdlYkdM
RnJhbWVidWZmZXIpCisgICAgLCBtX3dlYmdsRnJhbWVidWZmZXIodmFsdWUpCit7Cit9CisKK1dl
YkdMR2V0SW5mbzo6V2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gdmFsdWUp
CisgICAgOiBtX3R5cGUoa1R5cGVXZWJHTEludEFycmF5KQorICAgICwgbV93ZWJnbEludEFycmF5
KHZhbHVlKQoreworfQorCitXZWJHTEdldEluZm86OldlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdl
YkdMUHJvZ3JhbT4gdmFsdWUpCisgICAgOiBtX3R5cGUoa1R5cGVXZWJHTFByb2dyYW0pCisgICAg
LCBtX3dlYmdsUHJvZ3JhbSh2YWx1ZSkKK3sKK30KKworV2ViR0xHZXRJbmZvOjpXZWJHTEdldElu
Zm8oUGFzc1JlZlB0cjxXZWJHTFJlbmRlcmJ1ZmZlcj4gdmFsdWUpCisgICAgOiBtX3R5cGUoa1R5
cGVXZWJHTFJlbmRlcmJ1ZmZlcikKKyAgICAsIG1fd2ViZ2xSZW5kZXJidWZmZXIodmFsdWUpCit7
Cit9CisKK1dlYkdMR2V0SW5mbzo6V2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xUZXh0dXJl
PiB2YWx1ZSkKKyAgICA6IG1fdHlwZShrVHlwZVdlYkdMVGV4dHVyZSkKKyAgICAsIG1fd2ViZ2xU
ZXh0dXJlKHZhbHVlKQoreworfQorCitXZWJHTEdldEluZm86OldlYkdMR2V0SW5mbyhQYXNzUmVm
UHRyPFdlYkdMVW5zaWduZWRCeXRlQXJyYXk+IHZhbHVlKQorICAgIDogbV90eXBlKGtUeXBlV2Vi
R0xVbnNpZ25lZEJ5dGVBcnJheSkKKyAgICAsIG1fd2ViZ2xVbnNpZ25lZEJ5dGVBcnJheSh2YWx1
ZSkKK3sKK30KKworV2ViR0xHZXRJbmZvOjp+V2ViR0xHZXRJbmZvKCkKK3sKK30KKworV2ViR0xH
ZXRJbmZvOjpUeXBlIFdlYkdMR2V0SW5mbzo6Z2V0VHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fdHlwZTsKK30KKworYm9vbCBXZWJHTEdldEluZm86OmdldEJvb2woKSBjb25zdAoreworICAg
IEFTU0VSVChnZXRUeXBlKCkgPT0ga1R5cGVCb29sKTsKKyAgICByZXR1cm4gbV9ib29sOworfQor
CitmbG9hdCBXZWJHTEdldEluZm86OmdldEZsb2F0KCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZ2V0
VHlwZSgpID09IGtUeXBlRmxvYXQpOworICAgIHJldHVybiBtX2Zsb2F0OworfQorCitsb25nIFdl
YkdMR2V0SW5mbzo6Z2V0TG9uZygpIGNvbnN0Cit7CisgICAgQVNTRVJUKGdldFR5cGUoKSA9PSBr
VHlwZUxvbmcpOworICAgIHJldHVybiBtX2xvbmc7Cit9CisKK2NvbnN0IFN0cmluZyYgV2ViR0xH
ZXRJbmZvOjpnZXRTdHJpbmcoKSBjb25zdAoreworICAgIEFTU0VSVChnZXRUeXBlKCkgPT0ga1R5
cGVTdHJpbmcpOworICAgIHJldHVybiBtX3N0cmluZzsKK30KKwordW5zaWduZWQgbG9uZyBXZWJH
TEdldEluZm86OmdldFVuc2lnbmVkTG9uZygpIGNvbnN0Cit7CisgICAgQVNTRVJUKGdldFR5cGUo
KSA9PSBrVHlwZVVuc2lnbmVkTG9uZyk7CisgICAgcmV0dXJuIG1fdW5zaWduZWRMb25nOworfQor
CitQYXNzUmVmUHRyPFdlYkdMQnVmZmVyPiBXZWJHTEdldEluZm86OmdldFdlYkdMQnVmZmVyKCkg
Y29uc3QKK3sKKyAgICBBU1NFUlQoZ2V0VHlwZSgpID09IGtUeXBlV2ViR0xCdWZmZXIpOworICAg
IHJldHVybiBtX3dlYmdsQnVmZmVyOworfQorCitQYXNzUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4g
V2ViR0xHZXRJbmZvOjpnZXRXZWJHTEZsb2F0QXJyYXkoKSBjb25zdAoreworICAgIEFTU0VSVChn
ZXRUeXBlKCkgPT0ga1R5cGVXZWJHTEZsb2F0QXJyYXkpOworICAgIHJldHVybiBtX3dlYmdsRmxv
YXRBcnJheTsKK30KKworUGFzc1JlZlB0cjxXZWJHTEZyYW1lYnVmZmVyPiBXZWJHTEdldEluZm86
OmdldFdlYkdMRnJhbWVidWZmZXIoKSBjb25zdAoreworICAgIEFTU0VSVChnZXRUeXBlKCkgPT0g
a1R5cGVXZWJHTEZyYW1lYnVmZmVyKTsKKyAgICByZXR1cm4gbV93ZWJnbEZyYW1lYnVmZmVyOwor
fQorCitQYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IFdlYkdMR2V0SW5mbzo6Z2V0V2ViR0xJbnRB
cnJheSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGdldFR5cGUoKSA9PSBrVHlwZVdlYkdMSW50QXJy
YXkpOworICAgIHJldHVybiBtX3dlYmdsSW50QXJyYXk7Cit9CisKK1Bhc3NSZWZQdHI8V2ViR0xQ
cm9ncmFtPiBXZWJHTEdldEluZm86OmdldFdlYkdMUHJvZ3JhbSgpIGNvbnN0Cit7CisgICAgQVNT
RVJUKGdldFR5cGUoKSA9PSBrVHlwZVdlYkdMUHJvZ3JhbSk7CisgICAgcmV0dXJuIG1fd2ViZ2xQ
cm9ncmFtOworfQorCitQYXNzUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPiBXZWJHTEdldEluZm86
OmdldFdlYkdMUmVuZGVyYnVmZmVyKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZ2V0VHlwZSgpID09
IGtUeXBlV2ViR0xSZW5kZXJidWZmZXIpOworICAgIHJldHVybiBtX3dlYmdsUmVuZGVyYnVmZmVy
OworfQorCitQYXNzUmVmUHRyPFdlYkdMVGV4dHVyZT4gV2ViR0xHZXRJbmZvOjpnZXRXZWJHTFRl
eHR1cmUoKSBjb25zdAoreworICAgIEFTU0VSVChnZXRUeXBlKCkgPT0ga1R5cGVXZWJHTFRleHR1
cmUpOworICAgIHJldHVybiBtX3dlYmdsVGV4dHVyZTsKK30KKworUGFzc1JlZlB0cjxXZWJHTFVu
c2lnbmVkQnl0ZUFycmF5PiBXZWJHTEdldEluZm86OmdldFdlYkdMVW5zaWduZWRCeXRlQXJyYXko
KSBjb25zdAoreworICAgIEFTU0VSVChnZXRUeXBlKCkgPT0ga1R5cGVXZWJHTFVuc2lnbmVkQnl0
ZUFycmF5KTsKKyAgICByZXR1cm4gbV93ZWJnbFVuc2lnbmVkQnl0ZUFycmF5OworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoM0RfQ0FOVkFTKQpJbmRleDog
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEdldEluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTEdldEluZm8uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMzEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViR0xH
ZXRJbmZvX2gKKyNkZWZpbmUgV2ViR0xHZXRJbmZvX2gKKworI2luY2x1ZGUgInd0Zi9QYXNzUmVm
UHRyLmgiCisjaW5jbHVkZSAid3RmL1JlZlB0ci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5n
LmgiCisKKyNpbmNsdWRlICJXZWJHTEJ1ZmZlci5oIgorI2luY2x1ZGUgIldlYkdMRmxvYXRBcnJh
eS5oIgorI2luY2x1ZGUgIldlYkdMRnJhbWVidWZmZXIuaCIKKyNpbmNsdWRlICJXZWJHTEludEFy
cmF5LmgiCisvLyBGSVhNRTogaW1wbGVtZW50IFdlYkdMT2JqZWN0QXJyYXkKKy8vI2luY2x1ZGUg
IldlYkdMT2JqZWN0QXJyYXkuaCIKKyNpbmNsdWRlICJXZWJHTFByb2dyYW0uaCIKKyNpbmNsdWRl
ICJXZWJHTFJlbmRlcmJ1ZmZlci5oIgorI2luY2x1ZGUgIldlYkdMVGV4dHVyZS5oIgorI2luY2x1
ZGUgIldlYkdMVW5zaWduZWRCeXRlQXJyYXkuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisv
LyBBIHRhZ2dlZCB1bmlvbiByZXByZXNlbnRpbmcgdGhlIHJlc3VsdCBvZiBnZXQgcXVlcmllcyBs
aWtlCisvLyBnZXRQYXJhbWV0ZXIgKGVuY29tcGFzc2luZyBnZXRCb29sZWFudiwgZ2V0SW50ZWdl
cnYsIGdldEZsb2F0dikgYW5kCisvLyBzaW1pbGFyIHZhcmlhbnRzLiBGb3IgcmVmZXJlbmNlIGNv
dW50ZWQgdHlwZXMsIGluY3JlbWVudHMgYW5kCisvLyBkZWNyZW1lbnRzIHRoZSByZWZlcmVuY2Ug
Y291bnQgb2YgdGhlIHRhcmdldCBvYmplY3QuCisKK2NsYXNzIFdlYkdMR2V0SW5mbyB7CitwdWJs
aWM6CisgICAgZW51bSBUeXBlIHsKKyAgICAgICAga1R5cGVCb29sLAorICAgICAgICBrVHlwZUZs
b2F0LAorICAgICAgICBrVHlwZUxvbmcsCisgICAgICAgIGtUeXBlTnVsbCwKKyAgICAgICAga1R5
cGVTdHJpbmcsCisgICAgICAgIGtUeXBlVW5zaWduZWRMb25nLAorICAgICAgICBrVHlwZVdlYkdM
QnVmZmVyLAorICAgICAgICBrVHlwZVdlYkdMRmxvYXRBcnJheSwKKyAgICAgICAga1R5cGVXZWJH
TEZyYW1lYnVmZmVyLAorICAgICAgICBrVHlwZVdlYkdMSW50QXJyYXksCisgICAgICAgIGtUeXBl
V2ViR0xPYmplY3RBcnJheSwKKyAgICAgICAga1R5cGVXZWJHTFByb2dyYW0sCisgICAgICAgIGtU
eXBlV2ViR0xSZW5kZXJidWZmZXIsCisgICAgICAgIGtUeXBlV2ViR0xUZXh0dXJlLAorICAgICAg
ICBrVHlwZVdlYkdMVW5zaWduZWRCeXRlQXJyYXkKKyAgICB9OworCisgICAgV2ViR0xHZXRJbmZv
KGJvb2wgdmFsdWUpOworICAgIFdlYkdMR2V0SW5mbyhmbG9hdCB2YWx1ZSk7CisgICAgV2ViR0xH
ZXRJbmZvKGxvbmcgdmFsdWUpOworICAgIC8vIFJlcHJlc2VudHMgdGhlIE5VTEwgdmFsdWUgYW5k
IHR5cGUKKyAgICBXZWJHTEdldEluZm8oKTsKKyAgICBXZWJHTEdldEluZm8oY29uc3QgU3RyaW5n
JiB2YWx1ZSk7CisgICAgV2ViR0xHZXRJbmZvKHVuc2lnbmVkIGxvbmcgdmFsdWUpOworICAgIFdl
YkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMQnVmZmVyPiB2YWx1ZSk7CisgICAgV2ViR0xHZXRJ
bmZvKFBhc3NSZWZQdHI8V2ViR0xGbG9hdEFycmF5PiB2YWx1ZSk7CisgICAgV2ViR0xHZXRJbmZv
KFBhc3NSZWZQdHI8V2ViR0xGcmFtZWJ1ZmZlcj4gdmFsdWUpOworICAgIFdlYkdMR2V0SW5mbyhQ
YXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IHZhbHVlKTsKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50
IFdlYkdMT2JqZWN0QXJyYXkKKyAgICAvLyBXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTE9i
amVjdEFycmF5PiB2YWx1ZSk7CisgICAgV2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xQcm9n
cmFtPiB2YWx1ZSk7CisgICAgV2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xSZW5kZXJidWZm
ZXI+IHZhbHVlKTsKKyAgICBXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTFRleHR1cmU+IHZh
bHVlKTsKKyAgICBXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTFVuc2lnbmVkQnl0ZUFycmF5
PiB2YWx1ZSk7CisKKyAgICB2aXJ0dWFsIH5XZWJHTEdldEluZm8oKTsKKworICAgIFR5cGUgZ2V0
VHlwZSgpIGNvbnN0OworCisgICAgYm9vbCBnZXRCb29sKCkgY29uc3Q7CisgICAgZmxvYXQgZ2V0
RmxvYXQoKSBjb25zdDsKKyAgICBsb25nIGdldExvbmcoKSBjb25zdDsKKyAgICBjb25zdCBTdHJp
bmcmIGdldFN0cmluZygpIGNvbnN0OworICAgIHVuc2lnbmVkIGxvbmcgZ2V0VW5zaWduZWRMb25n
KCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxXZWJHTEJ1ZmZlcj4gZ2V0V2ViR0xCdWZmZXIoKSBj
b25zdDsKKyAgICBQYXNzUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gZ2V0V2ViR0xGbG9hdEFycmF5
KCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxXZWJHTEZyYW1lYnVmZmVyPiBnZXRXZWJHTEZyYW1l
YnVmZmVyKCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBnZXRXZWJHTElu
dEFycmF5KCkgY29uc3Q7CisgICAgLy8gRklYTUU6IGltcGxlbWVudCBXZWJHTE9iamVjdEFycmF5
CisgICAgLy8gUGFzc1JlZlB0cjxXZWJHTE9iamVjdEFycmF5PiBnZXRXZWJHTE9iamVjdEFycmF5
KCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxXZWJHTFByb2dyYW0+IGdldFdlYkdMUHJvZ3JhbSgp
IGNvbnN0OworICAgIFBhc3NSZWZQdHI8V2ViR0xSZW5kZXJidWZmZXI+IGdldFdlYkdMUmVuZGVy
YnVmZmVyKCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxXZWJHTFRleHR1cmU+IGdldFdlYkdMVGV4
dHVyZSgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8V2ViR0xVbnNpZ25lZEJ5dGVBcnJheT4gZ2V0
V2ViR0xVbnNpZ25lZEJ5dGVBcnJheSgpIGNvbnN0OworCitwcml2YXRlOgorICAgIFR5cGUgbV90
eXBlOworICAgIGJvb2wgbV9ib29sOworICAgIGZsb2F0IG1fZmxvYXQ7CisgICAgbG9uZyBtX2xv
bmc7CisgICAgU3RyaW5nIG1fc3RyaW5nOworICAgIHVuc2lnbmVkIGxvbmcgbV91bnNpZ25lZExv
bmc7CisgICAgUmVmUHRyPFdlYkdMQnVmZmVyPiBtX3dlYmdsQnVmZmVyOworICAgIFJlZlB0cjxX
ZWJHTEZsb2F0QXJyYXk+IG1fd2ViZ2xGbG9hdEFycmF5OworICAgIFJlZlB0cjxXZWJHTEZyYW1l
YnVmZmVyPiBtX3dlYmdsRnJhbWVidWZmZXI7CisgICAgUmVmUHRyPFdlYkdMSW50QXJyYXk+IG1f
d2ViZ2xJbnRBcnJheTsKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50IFdlYkdMT2JqZWN0QXJyYXkK
KyAgICAvLyBSZWZQdHI8V2ViR0xPYmplY3RBcnJheT4gbV93ZWJnbE9iamVjdEFycmF5OworICAg
IFJlZlB0cjxXZWJHTFByb2dyYW0+IG1fd2ViZ2xQcm9ncmFtOworICAgIFJlZlB0cjxXZWJHTFJl
bmRlcmJ1ZmZlcj4gbV93ZWJnbFJlbmRlcmJ1ZmZlcjsKKyAgICBSZWZQdHI8V2ViR0xUZXh0dXJl
PiBtX3dlYmdsVGV4dHVyZTsKKyAgICBSZWZQdHI8V2ViR0xVbnNpZ25lZEJ5dGVBcnJheT4gbV93
ZWJnbFVuc2lnbmVkQnl0ZUFycmF5OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgIC8vIFdlYkdMR2V0SW5mb19oCkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyYnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyYnVmZmVyLmNwcAkocmV2aXNpb24gNTEzNDEpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyYnVmZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTIgKzM3LDIzIEBA
IFBhc3NSZWZQdHI8V2ViR0xSZW5kZXJidWZmZXI+IFdlYkdMUmVuZGUKICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFdlYkdMUmVuZGVyYnVmZmVyKGN0eCkpOwogfQogCitQYXNzUmVmUHRyPFdlYkdM
UmVuZGVyYnVmZmVyPiBXZWJHTFJlbmRlcmJ1ZmZlcjo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29u
dGV4dCogY3R4LCBQbGF0Zm9ybTNET2JqZWN0IG9iaikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFdlYkdMUmVuZGVyYnVmZmVyKGN0eCwgb2JqKSk7Cit9CisKIFdlYkdMUmVuZGVyYnVmZmVy
OjpXZWJHTFJlbmRlcmJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGN0eCkKICAgICA6IENh
bnZhc09iamVjdChjdHgpCiB7CiAgICAgc2V0T2JqZWN0KGNvbnRleHQoKS0+Z3JhcGhpY3NDb250
ZXh0M0QoKS0+Y3JlYXRlUmVuZGVyYnVmZmVyKCkpOwogfQogCitXZWJHTFJlbmRlcmJ1ZmZlcjo6
V2ViR0xSZW5kZXJidWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjdHgsIFBsYXRmb3JtM0RP
YmplY3Qgb2JqKQorICAgIDogQ2FudmFzT2JqZWN0KGN0eCkKK3sKKyAgICBzZXRPYmplY3Qob2Jq
LCBmYWxzZSk7Cit9CisKIHZvaWQgV2ViR0xSZW5kZXJidWZmZXI6Ol9kZWxldGVPYmplY3QoUGxh
dGZvcm0zRE9iamVjdCBvYmplY3QpCiB7CiAgICAgY29udGV4dCgpLT5ncmFwaGljc0NvbnRleHQz
RCgpLT5kZWxldGVSZW5kZXJidWZmZXIob2JqZWN0KTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJidWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyYnVmZmVyLmgJKHJldmlzaW9uIDUxMzQxKQorKysgV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw4ICszOSwxMyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxXZWJHTFJlbmRlcmJ1ZmZlcj4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCopOwogICAg
ICAgICAKKyAgICAgICAgLy8gRm9yIHF1ZXJ5aW5nIHByZXZpb3VzbHkgY3JlYXRlZCBvYmplY3Rz
IHZpYSBlLmcuIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcgorICAgICAgICAvLyBG
SVhNRTogc2hvdWxkIGNvbnNpZGVyIGNhbm9uaWNhbGl6aW5nIHRoZXNlIG9iamVjdHMKKyAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViR0xSZW5kZXJidWZmZXI+IGNyZWF0ZShXZWJHTFJlbmRl
cmluZ0NvbnRleHQqLCBQbGF0Zm9ybTNET2JqZWN0IHJlbmRlcmJ1ZmZlcik7CisKICAgICBwcm90
ZWN0ZWQ6CiAgICAgICAgIFdlYkdMUmVuZGVyYnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dCop
OworICAgICAgICBXZWJHTFJlbmRlcmJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHQqLCBQbGF0
Zm9ybTNET2JqZWN0KTsKICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgdm9pZCBfZGVsZXRlT2Jq
ZWN0KFBsYXRmb3JtM0RPYmplY3QpOwogICAgIH07CkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCShyZXZpc2lvbiA1MTM0MSkKKysrIFdlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzksMTEgKzM5LDMxIEBACiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlJlbmRlckJveC5oIgogI2luY2x1ZGUg
IlJlbmRlckxheWVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgV2ViR0xTdGF0
ZVJlc3RvcmVyIHsKK3B1YmxpYzoKKyAgICBXZWJHTFN0YXRlUmVzdG9yZXIoV2ViR0xSZW5kZXJp
bmdDb250ZXh0KiBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICBib29sIGNoYW5nZWQp
CisgICAgICAgIDogbV9jb250ZXh0KGNvbnRleHQpCisgICAgICAgICwgbV9jaGFuZ2VkKGNoYW5n
ZWQpCisgICAgeworICAgIH0KKworICAgIH5XZWJHTFN0YXRlUmVzdG9yZXIoKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5jbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwobV9jaGFuZ2VkKTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBtX2NvbnRleHQ7Cisg
ICAgYm9vbCBtX2NoYW5nZWQ7Cit9OworCiBQYXNzT3duUHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4
dD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGUoSFRNTENhbnZhc0VsZW1lbnQqIGNhbnZh
cykKIHsKICAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQoR3JhcGhpY3NDb250
ZXh0M0Q6OmNyZWF0ZSgpKTsKQEAgLTU4LDkgKzc4LDEyIEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6V2ViR0xSZW5kZXJpbmdDb24KICAgICAsIG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9u
ZWVkc1VwZGF0ZSh0cnVlKQogICAgICwgbV9tYXJrZWRDYW52YXNEaXJ0eShmYWxzZSkKKyAgICAs
IG1fYWN0aXZlVGV4dHVyZVVuaXQoMCkKIHsKICAgICBBU1NFUlQobV9jb250ZXh0KTsKLSAgICBt
X21heFZlcnRleEF0dHJpYnMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0
M0Q6Ok1BWF9WRVJURVhfQVRUUklCUyk7CisgICAgaW50IG51bVZlcnRleEF0dHJpYnMgPSAwOwor
ICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9WRVJURVhf
QVRUUklCUywgJm51bVZlcnRleEF0dHJpYnMpOworICAgIG1fbWF4VmVydGV4QXR0cmlicyA9IG51
bVZlcnRleEF0dHJpYnM7CiAgICAgbV9jb250ZXh0LT5yZXNoYXBlKGNhbnZhcygpLT53aWR0aCgp
LCBjYW52YXMoKS0+aGVpZ2h0KCkpOwogfQogCkBAIC0xMjQsOCArMTQ3LDE0IEBAIGludCBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OnNpemVJbkJ5dGVzKGkKICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YWN0aXZlVGV4dHVyZSh1bnNpZ25lZCBsb25n
IHRleHR1cmUpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YWN0aXZlVGV4dHVyZSh1bnNp
Z25lZCBsb25nIHRleHR1cmUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIGlmICgodGV4dHVy
ZSAtIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCkgPiBzaXplb2YobV90ZXh0dXJlVW5pdHMp
IC8gc2l6ZW9mKFRleHR1cmVVbml0U3RhdGUpKSB7CisgICAgICAgIC8vIEZJWE1FOiByYWlzZSBH
TF9JTlZBTElEX0VOVU0gZXJyb3IKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIG1fYWN0aXZlVGV4dHVyZVVuaXQgPSB0ZXh0dXJlIC0gR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkUwOwogICAgIG1fY29udGV4dC0+YWN0aXZlVGV4dHVyZSh0ZXh0
dXJlKTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQpAQCAtMTYyLDYg
KzE5MSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpiaW5kQnVmZmVyKHUKICAgICBl
bHNlIGlmICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkVMRU1FTlRfQVJSQVlfQlVGRkVS
KQogICAgICAgICBtX2JvdW5kRWxlbWVudEFycmF5QnVmZmVyID0gYnVmZmVyOwogICAgIGVsc2Ug
eworICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9FTlVNIGVycm9yCiAgICAgICAg
IGVjID0gU1lOVEFYX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE3Nyw2ICsyMDcs
MTIgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJpbmRGcmFtZWJ1ZgogICAgICAgICBl
YyA9IFRZUEVfTUlTTUFUQ0hfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGlmICh0
YXJnZXQgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSKSB7CisgICAgICAgIC8vIEZJ
WE1FOiByYWlzZSBHTF9JTlZBTElEX0VOVU0gZXJyb3IKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJS
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fZnJhbWVidWZmZXJCaW5kaW5nID0gYnVm
ZmVyOwogICAgIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKHRhcmdldCwgYnVmZmVyKTsKICAg
ICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQpAQCAtMTg3LDYgKzIyMywxMiBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmluZFJlbmRlcmJ1CiAgICAgICAgIGVjID0g
VFlQRV9NSVNNQVRDSF9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgaWYgKHRhcmdl
dCAhPSBHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSKSB7CisgICAgICAgIC8vIEZJWE1F
OiByYWlzZSBHTF9JTlZBTElEX0VOVU0gZXJyb3IKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fcmVuZGVyYnVmZmVyQmluZGluZyA9IHJlbmRl
ckJ1ZmZlcjsKICAgICBtX2NvbnRleHQtPmJpbmRSZW5kZXJidWZmZXIodGFyZ2V0LCByZW5kZXJC
dWZmZXIpOwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CkBAIC0xOTgs
NiArMjQwLDE1IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpiaW5kVGV4dHVyZSgKICAg
ICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAg
ICBpZiAodGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJEKQorICAgICAgICBt
X3RleHR1cmVVbml0c1ttX2FjdGl2ZVRleHR1cmVVbml0XS5tX3RleHR1cmUyREJpbmRpbmcgPSB0
ZXh0dXJlOworICAgIGVsc2UgaWYgKHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV9DVUJFX01BUCkKKyAgICAgICAgbV90ZXh0dXJlVW5pdHNbbV9hY3RpdmVUZXh0dXJlVW5pdF0u
bV90ZXh0dXJlQ3ViZU1hcEJpbmRpbmcgPSB0ZXh0dXJlOworICAgIGVsc2UgeworICAgICAgICAv
LyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9FTlVNIGVycm9yCisgICAgICAgIGVjID0gU1lOVEFY
X0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBtX2NvbnRleHQtPmJpbmRUZXh0dXJl
KHRhcmdldCwgdGV4dHVyZSk7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsK
IH0KQEAgLTY5MSwzMiArNzQyLDI3IEBAIGludCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEF0
dHJpYkxvY2EKICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFt
LCBuYW1lKTsKIH0KIAotYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEJvb2xlYW4odW5z
aWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICBib29sIHJlc3VsdCA9IG1fY29udGV4dC0+Z2V0Qm9v
bGVhbihwbmFtZSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCi1QYXNzUmVmUHRyPFdlYkdMVW5zaWduZWRCeXRlQXJyYXk+IFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0Qm9vbGVhbnYodW5zaWduZWQgbG9uZyBwbmFtZSkKK1dl
YkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclBhcmFtZXRlcih1bnNp
Z25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7Ci0gICAgUmVmUHRyPFdlYkdMVW5zaWduZWRCeXRlQXJyYXk+IGFycmF5ID0gbV9jb250ZXh0
LT5nZXRCb29sZWFudihwbmFtZSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNl
KTsKLSAgICByZXR1cm4gYXJyYXk7Ci19CisgICAgaWYgKHRhcmdldCAhPSBHcmFwaGljc0NvbnRl
eHQzRDo6QVJSQVlfQlVGRkVSICYmIHRhcmdldCAhPSBHcmFwaGljc0NvbnRleHQzRDo6RUxFTUVO
VF9BUlJBWV9CVUZGRVIpIHsKKyAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfRU5V
TSBlcnJvcgorICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybiBXZWJHTEdl
dEluZm8oKTsKKyAgICB9CiAKLWludCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclBh
cmFtZXRlcmkodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0g
ICAgaW50IHJlc3VsdCA9IG1fY29udGV4dC0+Z2V0QnVmZmVyUGFyYW1ldGVyaSh0YXJnZXQsIHBu
YW1lKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19CisgICAgaWYgKHBuYW1lICE9IEdyYXBoaWNzQ29udGV4dDNEOjpCVUZGRVJfU0la
RSAmJiBwbmFtZSAhPSBHcmFwaGljc0NvbnRleHQzRDo6QlVGRkVSX1VTQUdFKSB7CisgICAgICAg
IC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX0VOVU0gZXJyb3IKKyAgICAgICAgZWMgPSBTWU5U
QVhfRVJSOworICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CisgICAgfQogCi1QYXNzUmVm
UHRyPFdlYkdMSW50QXJyYXk+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0QnVmZmVyUGFyYW1l
dGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAg
UmVmUHRyPFdlYkdMSW50QXJyYXk+IGFycmF5ID0gbV9jb250ZXh0LT5nZXRCdWZmZXJQYXJhbWV0
ZXJpdih0YXJnZXQsIHBuYW1lKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2Up
OwotICAgIHJldHVybiBhcnJheTsKKyAgICBXZWJHTFN0YXRlUmVzdG9yZXIodGhpcywgZmFsc2Up
OworICAgIGludCB2YWx1ZTsKKyAgICBtX2NvbnRleHQtPmdldEJ1ZmZlclBhcmFtZXRlcml2KHRh
cmdldCwgcG5hbWUsICZ2YWx1ZSk7CisgICAgaWYgKHBuYW1lID09IEdyYXBoaWNzQ29udGV4dDNE
OjpCVUZGRVJfU0laRSkKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNfY2FzdDxs
b25nPih2YWx1ZSkpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0
aWNfY2FzdDx1bnNpZ25lZCBsb25nPih2YWx1ZSkpOwogfQogCiB1bnNpZ25lZCBsb25nIFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6Z2V0RXJyb3IoKQpAQCAtNzI0LDExNiArNzcwLDMyNyBAQCB1bnNp
Z25lZCBsb25nIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0CiAgICAgcmV0dXJuIG1fY29udGV4
dC0+Z2V0RXJyb3IoKTsKIH0KIAotZmxvYXQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRGbG9h
dCh1bnNpZ25lZCBsb25nIHBuYW1lKQotewotICAgIGZsb2F0IHJlc3VsdCA9IG1fY29udGV4dC0+
Z2V0RmxvYXQocG5hbWUpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotUGFzc1JlZlB0cjxXZWJHTEZsb2F0QXJyYXk+IFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6Z2V0RmxvYXR2KHVuc2lnbmVkIGxvbmcgcG5hbWUpCitXZWJHTEdl
dEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJh
bWV0ZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgdW5z
aWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgUmVmUHRyPFdlYkdM
RmxvYXRBcnJheT4gYXJyYXkgPSBtX2NvbnRleHQtPmdldEZsb2F0dihwbmFtZSk7Ci0gICAgY2xl
YW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKLSAgICByZXR1cm4gYXJyYXk7Ci19Ci0KLWlu
dCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRl
cmkodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgdW5zaWdu
ZWQgbG9uZyBwbmFtZSkKLXsKLSAgICBpbnQgcmVzdWx0ID0gbV9jb250ZXh0LT5nZXRGcmFtZWJ1
ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUpOwotICAg
IGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LQotUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEZy
YW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNp
Z25lZCBsb25nIGF0dGFjaG1lbnQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgUmVmUHRy
PFdlYkdMSW50QXJyYXk+IGFycmF5ID0gbV9jb250ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXJpdih0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lKTsKLSAgICBjbGVhbnVwQWZ0
ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwotICAgIHJldHVybiBhcnJheTsKLX0KKyAgICBpZiAodGFy
Z2V0ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUgorICAgICAgICB8fCAoYXR0YWNo
bWVudCAhPSBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAKKyAgICAgICAgICAg
ICYmIGF0dGFjaG1lbnQgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0FUVEFDSE1FTlQKKyAg
ICAgICAgICAgICYmIGF0dGFjaG1lbnQgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfQVRU
QUNITUVOVCkKKyAgICAgICAgfHwgKHBuYW1lICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJV
RkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFCisgICAgICAgICAgICAmJiBwbmFtZSAhPSBHcmFw
aGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRQorICAgICAg
ICAgICAgJiYgcG5hbWUgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0FUVEFDSE1F
TlRfVEVYVFVSRV9MRVZFTAorICAgICAgICAgICAgJiYgcG5hbWUgIT0gR3JhcGhpY3NDb250ZXh0
M0Q6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9DVUJFX01BUF9GQUNFKSkgeworICAg
ICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9FTlVNIGVycm9yCisgICAgICAgIGVjID0g
U1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOworICAgIH0KIAotaW50
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0SW50ZWdlcih1bnNpZ25lZCBsb25nIHBuYW1lKQot
ewotICAgIGZsb2F0IHJlc3VsdCA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihwbmFtZSk7Ci0gICAg
Y2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAg
IGlmIChwbmFtZSAhPSBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9P
QkpFQ1RfTkFNRSkgeworICAgICAgICBXZWJHTFN0YXRlUmVzdG9yZXIodGhpcywgZmFsc2UpOwor
ICAgICAgICBpbnQgdmFsdWU7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyaXYodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSwgJnZhbHVlKTsKKyAg
ICAgICAgaWYgKHBuYW1lID09IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9BVFRBQ0hN
RU5UX09CSkVDVF9UWVBFKQorICAgICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBsb25nPih2YWx1ZSkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBy
ZXR1cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0PGxvbmc+KHZhbHVlKSk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgV2ViR0xTdGF0ZVJlc3RvcmVyKHRoaXMsIGZhbHNlKTsKKyAgICAgICAgaW50
IHR5cGUgPSAwOworICAgICAgICBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcml2KHRhcmdldCwgYXR0YWNobWVudCwgR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVG
RkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEUsICZ0eXBlKTsKKyAgICAgICAgaW50IHZhbHVlID0g
MDsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJp
dih0YXJnZXQsIGF0dGFjaG1lbnQsIEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9BVFRB
Q0hNRU5UX09CSkVDVF9OQU1FLCAmdmFsdWUpOworICAgICAgICAvLyBGSVhNRTogc2hvdWxkIGNv
bnNpZGVyIGNhbm9uaWNhbGl6aW5nIHRoZXNlIG9iamVjdHMKKyAgICAgICAgc3dpdGNoICh0eXBl
KSB7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUjogeworICAg
ICAgICAgICAgUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPiB0bXAgPSBXZWJHTFJlbmRlcmJ1ZmZl
cjo6Y3JlYXRlKHRoaXMsIHZhbHVlKTsKKyAgICAgICAgICAgIGFkZE9iamVjdCh0bXAuZ2V0KCkp
OworICAgICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMUmVuZGVy
YnVmZmVyPih0bXApKTsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFOiB7CisgICAgICAgICAgICBSZWZQdHI8V2ViR0xUZXh0dXJlPiB0bXAgPSBXZWJH
TFRleHR1cmU6OmNyZWF0ZSh0aGlzLCB2YWx1ZSk7CisgICAgICAgICAgICBhZGRPYmplY3QodG1w
LmdldCgpKTsKKyAgICAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJH
TFRleHR1cmU+KHRtcCkpOworICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAvLyBGSVhNRTogcmFpc2UgZXhjZXB0aW9uPworICAgICAgICAgICAgcmV0dXJuIFdlYkdMR2V0
SW5mbygpOworICAgICAgICB9CisgICAgfQogfQogCi1QYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0SW50ZWdlcnYodW5zaWduZWQgbG9uZyBwbmFtZSkK
K1dlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFBhcmFtZXRlcih1bnNpZ25l
ZCBsb25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBSZWZQdHI8V2ViR0xJbnRB
cnJheT4gYXJyYXkgPSBtX2NvbnRleHQtPmdldEludGVnZXJ2KHBuYW1lKTsKLSAgICBjbGVhbnVw
QWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwotICAgIHJldHVybiBhcnJheTsKKyAgICBXZWJHTFN0
YXRlUmVzdG9yZXIodGhpcywgZmFsc2UpOworICAgIHN3aXRjaCAocG5hbWUpIHsKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dDNEOjpBQ1RJVkVfVEVYVFVSRToKKyAgICAgICAgcmV0dXJuIGdldFVu
c2lnbmVkTG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
QUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFOgorICAgICAgICByZXR1cm4gZ2V0V2ViR0xGbG9hdEFy
cmF5UGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpBTElBU0VE
X1BPSU5UX1NJWkVfUkFOR0U6CisgICAgICAgIHJldHVybiBnZXRXZWJHTEZsb2F0QXJyYXlQYXJh
bWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkFMUEhBX0JJVFM6Cisg
ICAgICAgIHJldHVybiBnZXRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dDNEOjpBUlJBWV9CVUZGRVJfQklORElORzoKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0
SW5mbyhQYXNzUmVmUHRyPFdlYkdMQnVmZmVyPihtX2JvdW5kQXJyYXlCdWZmZXIpKTsKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpCTEVORDoKKyAgICAgICAgcmV0dXJuIGdldEJvb2xlYW5Q
YXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkJMRU5EX0NPTE9S
OgorICAgICAgICByZXR1cm4gZ2V0V2ViR0xGbG9hdEFycmF5UGFyYW1ldGVyKHBuYW1lKTsKKyAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpCTEVORF9EU1RfQUxQSEE6CisgICAgICAgIHJldHVy
biBnZXRVbnNpZ25lZExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0M0Q6OkJMRU5EX0RTVF9SR0I6CisgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZExvbmdQYXJh
bWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkJMRU5EX0VRVUFUSU9O
X0FMUEhBOgorICAgICAgICByZXR1cm4gZ2V0VW5zaWduZWRMb25nUGFyYW1ldGVyKHBuYW1lKTsK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpCTEVORF9FUVVBVElPTl9SR0I6CisgICAgICAg
IHJldHVybiBnZXRVbnNpZ25lZExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0M0Q6OkJMRU5EX1NSQ19BTFBIQToKKyAgICAgICAgcmV0dXJuIGdldFVuc2lnbmVk
TG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6QkxFTkRf
U1JDX1JHQjoKKyAgICAgICAgcmV0dXJuIGdldFVuc2lnbmVkTG9uZ1BhcmFtZXRlcihwbmFtZSk7
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6QkxVRV9CSVRTOgorICAgICAgICByZXR1cm4g
Z2V0TG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Q09M
T1JfQ0xFQVJfVkFMVUU6CisgICAgICAgIHJldHVybiBnZXRXZWJHTEZsb2F0QXJyYXlQYXJhbWV0
ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX1dSSVRFTUFTSzoK
KyAgICAgICAgcmV0dXJuIGdldFdlYkdMVW5zaWduZWRCeXRlQXJyYXlQYXJhbWV0ZXIocG5hbWUp
OworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRT
OgorICAgICAgICAvLyBEZWZpbmVkIGFzIG51bGwgaW4gdGhlIHNwZWMKKyAgICAgICAgcmV0dXJu
IFdlYkdMR2V0SW5mbygpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNVTExfRkFDRToK
KyAgICAgICAgcmV0dXJuIGdldEJvb2xlYW5QYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0M0Q6OkNVTExfRkFDRV9NT0RFOgorICAgICAgICByZXR1cm4gZ2V0VW5zaWdu
ZWRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpDVVJS
RU5UX1BST0dSQU06CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJH
TFByb2dyYW0+KG1fY3VycmVudFByb2dyYW0pKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNE
OjpERVBUSF9CSVRTOgorICAgICAgICByZXR1cm4gZ2V0TG9uZ1BhcmFtZXRlcihwbmFtZSk7Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQ0xFQVJfVkFMVUU6CisgICAgICAgIHJl
dHVybiBnZXRGbG9hdFBhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6REVQVEhfRlVOQzoKKyAgICAgICAgcmV0dXJuIGdldFVuc2lnbmVkTG9uZ1BhcmFtZXRlcihw
bmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfUkFOR0U6CisgICAgICAg
IHJldHVybiBnZXRXZWJHTEZsb2F0QXJyYXlQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0M0Q6OkRFUFRIX1RFU1Q6CisgICAgICAgIHJldHVybiBnZXRCb29sZWFuUGFy
YW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9XUklURU1B
U0s6CisgICAgICAgIHJldHVybiBnZXRCb29sZWFuUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dDNEOjpESVRIRVI6CisgICAgICAgIHJldHVybiBnZXRCb29sZWFuUGFy
YW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpFTEVNRU5UX0FSUkFZ
X0JVRkZFUl9CSU5ESU5HOgorICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8
V2ViR0xCdWZmZXI+KG1fYm91bmRFbGVtZW50QXJyYXlCdWZmZXIpKTsKKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9CSU5ESU5HOgorICAgICAgICByZXR1cm4gV2ViR0xH
ZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xGcmFtZWJ1ZmZlcj4obV9mcmFtZWJ1ZmZlckJpbmRpbmcp
KTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpGUk9OVF9GQUNFOgorICAgICAgICByZXR1
cm4gZ2V0VW5zaWduZWRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dDNEOjpHRU5FUkFURV9NSVBNQVBfSElOVDoKKyAgICAgICAgcmV0dXJuIGdldFVuc2lnbmVk
TG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6R1JFRU5f
QklUUzoKKyAgICAgICAgcmV0dXJuIGdldExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVfV0lEVEg6CisgICAgICAgIHJldHVybiBnZXRGbG9hdFBh
cmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6TUFYX0NPTUJJTkVE
X1RFWFRVUkVfSU1BR0VfVU5JVFM6CisgICAgICAgIHJldHVybiBnZXRMb25nUGFyYW1ldGVyKHBu
YW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpNQVhfQ1VCRV9NQVBfVEVYVFVSRV9T
SVpFOgorICAgICAgICByZXR1cm4gZ2V0TG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6TUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUzoKKyAgICAgICAg
cmV0dXJuIGdldExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
M0Q6Ok1BWF9SRU5ERVJCVUZGRVJfU0laRToKKyAgICAgICAgcmV0dXJuIGdldExvbmdQYXJhbWV0
ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9URVhUVVJFX0lNQUdF
X1VOSVRTOgorICAgICAgICByZXR1cm4gZ2V0TG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHQzRDo6TUFYX1RFWFRVUkVfU0laRToKKyAgICAgICAgcmV0dXJuIGdl
dExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9W
QVJZSU5HX1ZFQ1RPUlM6CisgICAgICAgIHJldHVybiBnZXRMb25nUGFyYW1ldGVyKHBuYW1lKTsK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpNQVhfVkVSVEVYX0FUVFJJQlM6CisgICAgICAg
IHJldHVybiBnZXRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dDNEOjpNQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFM6CisgICAgICAgIHJldHVybiBnZXRM
b25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpNQVhfVkVS
VEVYX1VOSUZPUk1fVkVDVE9SUzoKKyAgICAgICAgcmV0dXJuIGdldExvbmdQYXJhbWV0ZXIocG5h
bWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9WSUVXUE9SVF9ESU1TOgorICAg
ICAgICByZXR1cm4gZ2V0V2ViR0xJbnRBcnJheVBhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6TlVNX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTOgorICAgICAg
ICByZXR1cm4gZ2V0TG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6TlVNX1NIQURFUl9CSU5BUllfRk9STUFUUzoKKyAgICAgICAgLy8gRklYTUU6IHNob3Vs
ZCB3ZSBhbHdheXMgcmV0dXJuIDAgZm9yIHRoaXM/CisgICAgICAgIHJldHVybiBnZXRMb25nUGFy
YW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpQQUNLX0FMSUdOTUVO
VDoKKyAgICAgICAgcmV0dXJuIGdldExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0M0Q6OlBPTFlHT05fT0ZGU0VUX0ZBQ1RPUjoKKyAgICAgICAgcmV0dXJuIGdl
dEZsb2F0UGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpQT0xZ
R09OX09GRlNFVF9GSUxMOgorICAgICAgICByZXR1cm4gZ2V0Qm9vbGVhblBhcmFtZXRlcihwbmFt
ZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UE9MWUdPTl9PRkZTRVRfVU5JVFM6Cisg
ICAgICAgIHJldHVybiBnZXRGbG9hdFBhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHQzRDo6UkVEX0JJVFM6CisgICAgICAgIHJldHVybiBnZXRMb25nUGFyYW1ldGVyKHBu
YW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVJfQklORElORzoK
KyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVy
PihtX3JlbmRlcmJ1ZmZlckJpbmRpbmcpKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpT
QU1QTEVfQlVGRkVSUzoKKyAgICAgICAgcmV0dXJuIGdldExvbmdQYXJhbWV0ZXIocG5hbWUpOwor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNBTVBMRV9DT1ZFUkFHRV9JTlZFUlQ6CisgICAg
ICAgIHJldHVybiBnZXRCb29sZWFuUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dDNEOjpTQU1QTEVfQ09WRVJBR0VfVkFMVUU6CisgICAgICAgIHJldHVybiBnZXRGbG9h
dFBhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U0FNUExFUzoK
KyAgICAgICAgcmV0dXJuIGdldExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0M0Q6OlNDSVNTT1JfQk9YOgorICAgICAgICByZXR1cm4gZ2V0V2ViR0xJbnRBcnJh
eVBhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U0NJU1NPUl9U
RVNUOgorICAgICAgICByZXR1cm4gZ2V0Qm9vbGVhblBhcmFtZXRlcihwbmFtZSk7CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9CQUNLX0ZBSUw6CisgICAgICAgIHJldHVybiBn
ZXRVbnNpZ25lZExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
M0Q6OlNURU5DSUxfQkFDS19GVU5DOgorICAgICAgICByZXR1cm4gZ2V0VW5zaWduZWRMb25nUGFy
YW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0JBQ0tf
UEFTU19ERVBUSF9GQUlMOgorICAgICAgICByZXR1cm4gZ2V0VW5zaWduZWRMb25nUGFyYW1ldGVy
KHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0JBQ0tfUEFTU19E
RVBUSF9QQVNTOgorICAgICAgICByZXR1cm4gZ2V0VW5zaWduZWRMb25nUGFyYW1ldGVyKHBuYW1l
KTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0JBQ0tfUkVGOgorICAgICAg
ICByZXR1cm4gZ2V0TG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6U1RFTkNJTF9CQUNLX1ZBTFVFX01BU0s6CisgICAgICAgIHJldHVybiBnZXRVbnNpZ25l
ZExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5D
SUxfQkFDS19XUklURU1BU0s6CisgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZExvbmdQYXJhbWV0
ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfQklUUzoKKyAg
ICAgICAgcmV0dXJuIGdldExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0M0Q6OlNURU5DSUxfQ0xFQVJfVkFMVUU6CisgICAgICAgIHJldHVybiBnZXRMb25nUGFy
YW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0ZBSUw6
CisgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfRlVOQzoKKyAgICAgICAgcmV0dXJuIGdldFVu
c2lnbmVkTG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
U1RFTkNJTF9QQVNTX0RFUFRIX0ZBSUw6CisgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZExvbmdQ
YXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfUEFT
U19ERVBUSF9QQVNTOgorICAgICAgICByZXR1cm4gZ2V0VW5zaWduZWRMb25nUGFyYW1ldGVyKHBu
YW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX1JFRjoKKyAgICAgICAg
cmV0dXJuIGdldExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
M0Q6OlNURU5DSUxfVEVTVDoKKyAgICAgICAgcmV0dXJuIGdldEJvb2xlYW5QYXJhbWV0ZXIocG5h
bWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfVkFMVUVfTUFTSzoKKyAg
ICAgICAgcmV0dXJuIGdldFVuc2lnbmVkTG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9XUklURU1BU0s6CisgICAgICAgIHJldHVybiBnZXRV
bnNpZ25lZExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6
OlNVQlBJWEVMX0JJVFM6CisgICAgICAgIHJldHVybiBnZXRMb25nUGFyYW1ldGVyKHBuYW1lKTsK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX0JJTkRJTkdfMkQ6CisgICAgICAg
IHJldHVybiBXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTFRleHR1cmU+KG1fdGV4dHVyZVVu
aXRzW21fYWN0aXZlVGV4dHVyZVVuaXRdLm1fdGV4dHVyZTJEQmluZGluZykpOworICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfQklORElOR19DVUJFX01BUDoKKyAgICAgICAgcmV0
dXJuIFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMVGV4dHVyZT4obV90ZXh0dXJlVW5pdHNb
bV9hY3RpdmVUZXh0dXJlVW5pdF0ubV90ZXh0dXJlQ3ViZU1hcEJpbmRpbmcpKTsKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dDNEOjpVTlBBQ0tfQUxJR05NRU5UOgorICAgICAgICAvLyBGSVhNRTog
c2hvdWxkIHRoaXMgYmUgImxvbmciIGluIHRoZSBzcGVjPworICAgICAgICByZXR1cm4gZ2V0SW50
UGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpWSUVXUE9SVDoK
KyAgICAgICAgcmV0dXJuIGdldFdlYkdMSW50QXJyYXlQYXJhbWV0ZXIocG5hbWUpOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX0VOVU0gZXJyb3IKKyAg
ICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7Cisg
ICAgfQogfQogCi1pbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQcm9ncmFtaShXZWJHTFBy
b2dyYW0qIHByb2dyYW0sIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQor
V2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UHJvZ3JhbVBhcmFtZXRlcihX
ZWJHTFByb2dyYW0qIHByb2dyYW0sIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogewogICAgIGlmICghcHJvZ3JhbSB8fCBwcm9ncmFtLT5jb250ZXh0KCkgIT0gdGhpcykg
eworICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9WQUxVRSBlcnJvcgogICAgICAg
ICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0
dXJuIFdlYkdMR2V0SW5mbygpOwogICAgIH0KIAotICAgIGludCByZXN1bHQgPSBtX2NvbnRleHQt
PmdldFByb2dyYW1pKHByb2dyYW0sIHBuYW1lKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0Nh
bGwoZmFsc2UpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVBhc3NSZWZQdHI8V2ViR0xJbnRB
cnJheT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQcm9ncmFtaXYoV2ViR0xQcm9ncmFtKiBw
cm9ncmFtLCB1bnNpZ25lZCBsb25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBp
ZiAoIXByb2dyYW0gfHwgcHJvZ3JhbS0+Y29udGV4dCgpICE9IHRoaXMpIHsKLSAgICAgICAgZWMg
PSBUWVBFX01JU01BVENIX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgV2ViR0xTdGF0ZVJl
c3RvcmVyKHRoaXMsIGZhbHNlKTsKKyAgICBpbnQgdmFsdWUgPSAwOworICAgIHN3aXRjaCAocG5h
bWUpIHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERUxFVEVfU1RBVFVTOgorICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTktfU1RBVFVTOgorICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0M0Q6OlZBTElEQVRFX1NUQVRVUzoKKyAgICAgICAgbV9jb250ZXh0LT5nZXRQcm9ncmFtaXYo
cHJvZ3JhbSwgcG5hbWUsICZ2YWx1ZSk7CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oc3Rh
dGljX2Nhc3Q8Ym9vbD4odmFsdWUpKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpJTkZP
X0xPR19MRU5HVEg6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6QVRUQUNIRURfU0hBREVS
UzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpBQ1RJVkVfQVRUUklCVVRFUzoKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpBQ1RJVkVfQVRUUklCVVRFX01BWF9MRU5HVEg6CisgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHQzRDo6QUNUSVZFX1VOSUZPUk1TOgorICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0M0Q6OkFDVElWRV9VTklGT1JNX01BWF9MRU5HVEg6CisgICAgICAgIG1fY29udGV4
dC0+Z2V0UHJvZ3JhbWl2KHByb2dyYW0sIHBuYW1lLCAmdmFsdWUpOworICAgICAgICByZXR1cm4g
V2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0PGxvbmc+KHZhbHVlKSk7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfRU5VTSBlcnJvcgorICAgICAgICBlYyA9
IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKICAgICB9Ci0gICAg
UmVmUHRyPFdlYkdMSW50QXJyYXk+IGFycmF5ID0gbV9jb250ZXh0LT5nZXRQcm9ncmFtaXYocHJv
Z3JhbSwgcG5hbWUpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci0gICAg
cmV0dXJuIGFycmF5OwogfQogCiBTdHJpbmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQcm9n
cmFtSW5mb0xvZyhXZWJHTFByb2dyYW0qIHByb2dyYW0sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewog
ICAgIGlmICghcHJvZ3JhbSB8fCBwcm9ncmFtLT5jb250ZXh0KCkgIT0gdGhpcykgeworICAgICAg
ICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9WQUxVRSBlcnJvcgogICAgICAgICBlYyA9IFRZ
UEVfTUlTTUFUQ0hfRVJSOwogICAgICAgICByZXR1cm4gIiI7CiAgICAgfQotICAgIFN0cmluZyBz
ID0gbV9jb250ZXh0LT5nZXRQcm9ncmFtSW5mb0xvZyhwcm9ncmFtKTsKLSAgICBjbGVhbnVwQWZ0
ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwotICAgIHJldHVybiBzOworICAgIFdlYkdMU3RhdGVSZXN0
b3Jlcih0aGlzLCBmYWxzZSk7CisgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0UHJvZ3JhbUluZm9M
b2cocHJvZ3JhbSk7CiB9CiAKLWludCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFJlbmRlcmJ1
ZmZlclBhcmFtZXRlcmkodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUp
CitXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRSZW5kZXJidWZmZXJQYXJh
bWV0ZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogewotICAgIGludCByZXN1bHQgPSBtX2NvbnRleHQtPmdldFJlbmRlcmJ1ZmZl
clBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxs
KGZhbHNlKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1QYXNzUmVmUHRyPFdlYkdMSW50QXJy
YXk+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYodW5z
aWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgUmVmUHRyPFdl
YkdMSW50QXJyYXk+IGFycmF5ID0gbV9jb250ZXh0LT5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJp
dih0YXJnZXQsIHBuYW1lKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwot
ICAgIHJldHVybiBhcnJheTsKLX0KKyAgICBpZiAodGFyZ2V0ICE9IEdyYXBoaWNzQ29udGV4dDNE
OjpSRU5ERVJCVUZGRVIpIHsKKyAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfRU5V
TSBlcnJvcgorICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybiBXZWJHTEdl
dEluZm8oKTsKKyAgICB9CiAKLWludCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFNoYWRlcmko
V2ViR0xTaGFkZXIqIHNoYWRlciwgdW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCi17Ci0gICAgaWYgKCFzaGFkZXIgfHwgc2hhZGVyLT5jb250ZXh0KCkgIT0gdGhpcykgewot
ICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOwotICAgICAgICByZXR1cm4gMDsKKyAgICBX
ZWJHTFN0YXRlUmVzdG9yZXIodGhpcywgZmFsc2UpOworICAgIGludCB2YWx1ZSA9IDA7CisgICAg
c3dpdGNoIChwbmFtZSkgeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZF
Ul9XSURUSDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVJfSEVJR0hU
OgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUl9SRURfU0laRToKKyAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVJfR1JFRU5fU0laRToKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVJfQkxVRV9TSVpFOgorICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUl9BTFBIQV9TSVpFOgorICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUl9ERVBUSF9TSVpFOgorICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUl9TVEVOQ0lMX1NJWkU6CisgICAgICAgIG1fY29udGV4
dC0+Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgJnZhbHVlKTsKKyAg
ICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNfY2FzdDxsb25nPih2YWx1ZSkpOworICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUl9JTlRFUk5BTF9GT1JNQVQ6Cisg
ICAgICAgIG1fY29udGV4dC0+Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFt
ZSwgJnZhbHVlKTsKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNfY2FzdDx1bnNp
Z25lZCBsb25nPih2YWx1ZSkpOworICAgIGRlZmF1bHQ6CisgICAgICAgIC8vIEZJWE1FOiByYWlz
ZSBHTF9JTlZBTElEX0VOVU0gZXJyb3IKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAg
ICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CiAgICAgfQotICAgIGludCByZXN1bHQgPSBtX2NvbnRl
eHQtPmdldFNoYWRlcmkoc2hhZGVyLCBwbmFtZSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3ND
YWxsKGZhbHNlKTsKLSAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QYXNzUmVmUHRyPFdlYkdMSW50
QXJyYXk+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2hhZGVyaXYoV2ViR0xTaGFkZXIqIHNo
YWRlciwgdW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitXZWJHTEdldElu
Zm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTaGFkZXJQYXJhbWV0ZXIoV2ViR0xTaGFkZXIq
IHNoYWRlciwgdW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAg
aWYgKCFzaGFkZXIgfHwgc2hhZGVyLT5jb250ZXh0KCkgIT0gdGhpcykgeworICAgICAgICAvLyBG
SVhNRTogcmFpc2UgR0xfSU5WQUxJRF9WQUxVRSBlcnJvcgogICAgICAgICBlYyA9IFRZUEVfTUlT
TUFUQ0hfRVJSOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5m
bygpOworICAgIH0KKyAgICBXZWJHTFN0YXRlUmVzdG9yZXIodGhpcywgZmFsc2UpOworICAgIGlu
dCB2YWx1ZSA9IDA7CisgICAgc3dpdGNoIChwbmFtZSkgeworICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0M0Q6OkRFTEVURV9TVEFUVVM6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Q09NUElM
RV9TVEFUVVM6CisgICAgICAgIG1fY29udGV4dC0+Z2V0U2hhZGVyaXYoc2hhZGVyLCBwbmFtZSwg
JnZhbHVlKTsKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNfY2FzdDxib29sPih2
YWx1ZSkpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNIQURFUl9UWVBFOgorICAgICAg
ICBtX2NvbnRleHQtPmdldFNoYWRlcml2KHNoYWRlciwgcG5hbWUsICZ2YWx1ZSk7CisgICAgICAg
IHJldHVybiBXZWJHTEdldEluZm8oc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4odmFsdWUpKTsK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpJTkZPX0xPR19MRU5HVEg6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6U0hBREVSX1NPVVJDRV9MRU5HVEg6CisgICAgICAgIG1fY29udGV4
dC0+Z2V0U2hhZGVyaXYoc2hhZGVyLCBwbmFtZSwgJnZhbHVlKTsKKyAgICAgICAgcmV0dXJuIFdl
YkdMR2V0SW5mbyhzdGF0aWNfY2FzdDxsb25nPih2YWx1ZSkpOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX0VOVU0gZXJyb3IKKyAgICAgICAgZWMgPSBT
WU5UQVhfRVJSOworICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CiAgICAgfQotICAgIFJl
ZlB0cjxXZWJHTEludEFycmF5PiBhcnJheSA9IG1fY29udGV4dC0+Z2V0U2hhZGVyaXYoc2hhZGVy
LCBwbmFtZSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKLSAgICByZXR1
cm4gYXJyYXk7CiB9CiAKIFN0cmluZyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFNoYWRlcklu
Zm9Mb2coV2ViR0xTaGFkZXIqIHNoYWRlciwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC04NDIsOSAr
MTA5OSw4IEBAIFN0cmluZyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFNoYWRlckkKICAgICAg
ICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKICAgICAgICAgcmV0dXJuICIiOwogICAgIH0KLSAg
ICBTdHJpbmcgcyA9IG1fY29udGV4dC0+Z2V0U2hhZGVySW5mb0xvZyhzaGFkZXIpOwotICAgIGNs
ZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci0gICAgcmV0dXJuIHM7CisgICAgV2ViR0xT
dGF0ZVJlc3RvcmVyKHRoaXMsIGZhbHNlKTsKKyAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRTaGFk
ZXJJbmZvTG9nKHNoYWRlcik7CiB9CiAKIFN0cmluZyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omdl
dFNoYWRlclNvdXJjZShXZWJHTFNoYWRlciogc2hhZGVyLCBFeGNlcHRpb25Db2RlJiBlYykKQEAg
LTg1Myw4NiArMTEwOSwxNjYgQEAgU3RyaW5nIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2hh
ZGVyUwogICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOwogICAgICAgICByZXR1cm4gIiI7
CiAgICAgfQotICAgIFN0cmluZyBzID0gbV9jb250ZXh0LT5nZXRTaGFkZXJTb3VyY2Uoc2hhZGVy
KTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwotICAgIHJldHVybiBzOwor
ICAgIFdlYkdMU3RhdGVSZXN0b3Jlcih0aGlzLCBmYWxzZSk7CisgICAgcmV0dXJuIG1fY29udGV4
dC0+Z2V0U2hhZGVyU291cmNlKHNoYWRlcik7CiB9CiAKIFN0cmluZyBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmdldFN0cmluZyh1bnNpZ25lZCBsb25nIG5hbWUpCiB7CisgICAgV2ViR0xTdGF0ZVJl
c3RvcmVyKHRoaXMsIGZhbHNlKTsKICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRTdHJpbmcobmFt
ZSk7CiB9CiAKLWZsb2F0IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VGV4UGFyYW1ldGVyZih1
bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICBmbG9hdCBy
ZXN1bHQgPSBtX2NvbnRleHQtPmdldFRleFBhcmFtZXRlcmYodGFyZ2V0LCBwbmFtZSk7Ci0gICAg
Y2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ci1QYXNzUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRU
ZXhQYXJhbWV0ZXJmdih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSkK
K1dlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFRleFBhcmFtZXRlcih1bnNp
Z25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7Ci0gICAgUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gYXJyYXkgPSBtX2NvbnRleHQtPmdldFRl
eFBhcmFtZXRlcmZ2KHRhcmdldCwgcG5hbWUpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2Fs
bChmYWxzZSk7Ci0gICAgcmV0dXJuIGFycmF5OwotfQotCi1pbnQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpnZXRUZXhQYXJhbWV0ZXJpKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25n
IHBuYW1lKQotewotICAgIGludCByZXN1bHQgPSBtX2NvbnRleHQtPmdldFRleFBhcmFtZXRlcmko
dGFyZ2V0LCBwbmFtZSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotCi1QYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6Z2V0VGV4UGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVu
c2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgUmVmUHRyPFdlYkdMSW50QXJyYXk+IGFycmF5ID0g
bV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lKTsKLSAgICBjbGVhbnVw
QWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwotICAgIHJldHVybiBhcnJheTsKLX0KLQotZmxvYXQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRVbmlmb3JtZihXZWJHTFByb2dyYW0qIHByb2dyYW0s
IGxvbmcgbG9jYXRpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGlmICghcHJvZ3JhbSB8
fCBwcm9ncmFtLT5jb250ZXh0KCkgIT0gdGhpcykgewotICAgICAgICBlYyA9IFRZUEVfTUlTTUFU
Q0hfRVJSOwotICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAodGFyZ2V0ICE9IEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFXzJECisgICAgICAgICYmIHRhcmdldCAhPSBHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV9DVUJFX01BUCkgeworICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJ
RF9FTlVNIGVycm9yCisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuIFdl
YkdMR2V0SW5mbygpOwogICAgIH0KLSAgICBmbG9hdCByZXN1bHQgPSBtX2NvbnRleHQtPmdldFVu
aWZvcm1mKHByb2dyYW0sIGxvY2F0aW9uKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwo
ZmFsc2UpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVBhc3NSZWZQdHI8V2ViR0xGbG9hdEFy
cmF5PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFVuaWZvcm1mdihXZWJHTFByb2dyYW0qIHBy
b2dyYW0sIGxvbmcgbG9jYXRpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGlmICghcHJv
Z3JhbSB8fCBwcm9ncmFtLT5jb250ZXh0KCkgIT0gdGhpcykgewotICAgICAgICBlYyA9IFRZUEVf
TUlTTUFUQ0hfRVJSOwotICAgICAgICByZXR1cm4gMDsKKyAgICBXZWJHTFN0YXRlUmVzdG9yZXIo
dGhpcywgZmFsc2UpOworICAgIGludCB2YWx1ZSA9IDA7CisgICAgc3dpdGNoIChwbmFtZSkgewor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRFUjoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVI6CisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1M6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV9XUkFQX1Q6CisgICAgICAgIG1fY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyaXYodGFy
Z2V0LCBwbmFtZSwgJnZhbHVlKTsKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBsb25nPih2YWx1ZSkpOworICAgIGRlZmF1bHQ6CisgICAgICAgIC8vIEZJ
WE1FOiByYWlzZSBHTF9JTlZBTElEX0VOVU0gZXJyb3IKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJS
OworICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CiAgICAgfQotICAgIFJlZlB0cjxXZWJH
TEZsb2F0QXJyYXk+IGFycmF5ID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtZnYocHJvZ3JhbSwgbG9j
YXRpb24pOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci0gICAgcmV0dXJu
IGFycmF5OwogfQogCi1sb25nIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VW5pZm9ybWkoV2Vi
R0xQcm9ncmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKK1dl
YkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFVuaWZvcm0oV2ViR0xQcm9ncmFt
KiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAo
IXByb2dyYW0gfHwgcHJvZ3JhbS0+Y29udGV4dCgpICE9IHRoaXMpIHsKKyAgICAgICAgLy8gRklY
TUU6IHJhaXNlIEdMX0lOVkFMSURfVkFMVUUgZXJyb3IKICAgICAgICAgZWMgPSBUWVBFX01JU01B
VENIX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8o
KTsKICAgICB9Ci0gICAgbG9uZyByZXN1bHQgPSBtX2NvbnRleHQtPmdldFVuaWZvcm1pKHByb2dy
YW0sIGxvY2F0aW9uKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci0KLVBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gV2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpnZXRVbmlmb3JtaXYoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBsb25nIGxv
Y2F0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBpZiAoIXByb2dyYW0gfHwgcHJvZ3Jh
bS0+Y29udGV4dCgpICE9IHRoaXMpIHsKLSAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsK
LSAgICAgICAgcmV0dXJuIDA7CisgICAgV2ViR0xTdGF0ZVJlc3RvcmVyKHRoaXMsIGZhbHNlKTsK
KyAgICAvLyBGSVhNRTogbWFrZSB0aGlzIG1vcmUgZWZmaWNpZW50IHVzaW5nIFdlYkdMVW5pZm9y
bUxvY2F0aW9uIGFuZCBjYWNoaW5nIHR5cGVzIGluIGl0CisgICAgaW50IGFjdGl2ZVVuaWZvcm1z
ID0gMDsKKyAgICBtX2NvbnRleHQtPmdldFByb2dyYW1pdihwcm9ncmFtLCBHcmFwaGljc0NvbnRl
eHQzRDo6QUNUSVZFX1VOSUZPUk1TLCAmYWN0aXZlVW5pZm9ybXMpOworICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgYWN0aXZlVW5pZm9ybXM7IGkrKykgeworICAgICAgICBBY3RpdmVJbmZvIGluZm87
CisgICAgICAgIGlmICghbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIGksIGlu
Zm8pKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogcmFpc2Ugc29tZSBHTCBlcnJvcgorICAgICAg
ICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgICAgIHJldHVybiBXZWJHTEdl
dEluZm8oKTsKKyAgICAgICAgfQorICAgICAgICAvLyBOb3cgbmVlZCB0byBsb29rIHRoaXMgdXAg
YnkgbmFtZSBhZ2FpbiB0byBmaW5kIGl0cyBsb2NhdGlvbgorICAgICAgICBsb25nIGxvYyA9IG1f
Y29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sIGluZm8ubmFtZSk7CisgICAgICAg
IGlmIChsb2MgPT0gbG9jYXRpb24pIHsKKyAgICAgICAgICAgIC8vIEZvdW5kIGl0LiBVc2UgdGhl
IHR5cGUgaW4gdGhlIEFjdGl2ZUluZm8gdG8gZGV0ZXJtaW5lIHRoZSByZXR1cm4gdHlwZS4KKyAg
ICAgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEOjpXZWJHTEVudW1UeXBlIGJhc2VUeXBlOworICAg
ICAgICAgICAgdW5zaWduZWQgbGVuZ3RoOworICAgICAgICAgICAgc3dpdGNoIChpbmZvLnR5cGUp
IHsKKyAgICAgICAgICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpCT09MOgorICAgICAg
ICAgICAgICAgICAgICBiYXNlVHlwZSA9IEdyYXBoaWNzQ29udGV4dDNEOjpCT09MOworICAgICAg
ICAgICAgICAgICAgICBsZW5ndGggPSAxOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpCT09MX1ZFQzI6CisgICAgICAg
ICAgICAgICAgICAgIGJhc2VUeXBlID0gR3JhcGhpY3NDb250ZXh0M0Q6OkJPT0w7CisgICAgICAg
ICAgICAgICAgICAgIGxlbmd0aCA9IDI7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkJPT0xfVkVDMzoKKyAgICAgICAg
ICAgICAgICAgICAgYmFzZVR5cGUgPSBHcmFwaGljc0NvbnRleHQzRDo6Qk9PTDsKKyAgICAgICAg
ICAgICAgICAgICAgbGVuZ3RoID0gMzsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Qk9PTF9WRUM0OgorICAgICAgICAg
ICAgICAgICAgICBiYXNlVHlwZSA9IEdyYXBoaWNzQ29udGV4dDNEOjpCT09MOworICAgICAgICAg
ICAgICAgICAgICBsZW5ndGggPSA0OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpJTlQ6CisgICAgICAgICAgICAgICAg
ICAgIGJhc2VUeXBlID0gR3JhcGhpY3NDb250ZXh0M0Q6OklOVDsKKyAgICAgICAgICAgICAgICAg
ICAgbGVuZ3RoID0gMTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6SU5UX1ZFQzI6CisgICAgICAgICAgICAgICAgICAg
IGJhc2VUeXBlID0gR3JhcGhpY3NDb250ZXh0M0Q6OklOVDsKKyAgICAgICAgICAgICAgICAgICAg
bGVuZ3RoID0gMjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHQzRDo6SU5UX1ZFQzM6CisgICAgICAgICAgICAgICAgICAgIGJh
c2VUeXBlID0gR3JhcGhpY3NDb250ZXh0M0Q6OklOVDsKKyAgICAgICAgICAgICAgICAgICAgbGVu
Z3RoID0gMzsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHQzRDo6SU5UX1ZFQzQ6CisgICAgICAgICAgICAgICAgICAgIGJhc2VU
eXBlID0gR3JhcGhpY3NDb250ZXh0M0Q6OklOVDsKKyAgICAgICAgICAgICAgICAgICAgbGVuZ3Ro
ID0gNDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6RkxPQVQ6CisgICAgICAgICAgICAgICAgICAgIGJhc2VUeXBlID0g
R3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FUOworICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSAx
OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpGTE9BVF9WRUMyOgorICAgICAgICAgICAgICAgICAgICBiYXNlVHlwZSA9
IEdyYXBoaWNzQ29udGV4dDNEOjpGTE9BVDsKKyAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0g
MjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6RkxPQVRfVkVDMzoKKyAgICAgICAgICAgICAgICAgICAgYmFzZVR5cGUg
PSBHcmFwaGljc0NvbnRleHQzRDo6RkxPQVQ7CisgICAgICAgICAgICAgICAgICAgIGxlbmd0aCA9
IDM7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0M0Q6OkZMT0FUX1ZFQzQ6CisgICAgICAgICAgICAgICAgICAgIGJhc2VUeXBl
ID0gR3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FUOworICAgICAgICAgICAgICAgICAgICBsZW5ndGgg
PSA0OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dDNEOjpGTE9BVF9NQVQyOgorICAgICAgICAgICAgICAgICAgICBiYXNlVHlw
ZSA9IEdyYXBoaWNzQ29udGV4dDNEOjpGTE9BVDsKKyAgICAgICAgICAgICAgICAgICAgbGVuZ3Ro
ID0gNDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6RkxPQVRfTUFUMzoKKyAgICAgICAgICAgICAgICAgICAgYmFzZVR5
cGUgPSBHcmFwaGljc0NvbnRleHQzRDo6RkxPQVQ7CisgICAgICAgICAgICAgICAgICAgIGxlbmd0
aCA9IDk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FUX01BVDQ6CisgICAgICAgICAgICAgICAgICAgIGJhc2VU
eXBlID0gR3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FUOworICAgICAgICAgICAgICAgICAgICBsZW5n
dGggPSAxNjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICAgICAgLy8gQ2FuJ3QgaGFuZGxlIHRoaXMgdHlwZQorICAg
ICAgICAgICAgICAgICAgICAvLyBGSVhNRTogd2hhdCB0byBkbyBhYm91dCBzYW1wbGVycz8KKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgc3dpdGNoIChiYXNlVHlwZSkgeworICAgICAgICAgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHQzRDo6RkxPQVQ6IHsKKyAgICAgICAgICAgICAgICBmbG9hdCB2YWx1ZVsxNl0gPSB7
MH07CisgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRVbmlmb3JtZnYocHJvZ3JhbSwgbG9j
YXRpb24sIHZhbHVlKTsKKyAgICAgICAgICAgICAgICBpZiAobGVuZ3RoID09IDEpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8odmFsdWVbMF0pOworICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhXZWJHTEZs
b2F0QXJyYXk6OmNyZWF0ZSh2YWx1ZSwgbGVuZ3RoKSk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpJTlQ6IHsKKyAgICAgICAgICAgICAgICBpbnQg
dmFsdWVbMTZdID0gezB9OworICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybWl2
KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKGxlbmd0aCA9
PSAxKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0
PGxvbmc+KHZhbHVlWzBdKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKFdlYkdMSW50QXJyYXk6OmNyZWF0ZSh2YWx1ZSwgbGVu
Z3RoKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNE
OjpCT09MOiB7CisgICAgICAgICAgICAgICAgaW50IHZhbHVlWzE2XSA9IHswfTsKKyAgICAgICAg
ICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZvcm1pdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUp
OworICAgICAgICAgICAgICAgIGlmIChsZW5ndGggPT0gMSkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNfY2FzdDxib29sPih2YWx1ZVswXSkpOworICAgICAg
ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGJvb2xW
YWx1ZVsxNl0gPSB7MH07CisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7
IGogPCBsZW5ndGg7IGorKykKKyAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xWYWx1ZVtqXSA9
IHN0YXRpY19jYXN0PGJvb2w+KHZhbHVlW2pdKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IFdlYkdMR2V0SW5mbyhXZWJHTFVuc2lnbmVkQnl0ZUFycmF5OjpjcmVhdGUoYm9vbFZhbHVlLCBs
ZW5ndGgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KICAgICB9Ci0gICAgUmVmUHRyPFdlYkdMSW50QXJyYXk+IGFycmF5ID0gbV9j
b250ZXh0LT5nZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRpb24pOwotICAgIGNsZWFudXBBZnRl
ckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci0gICAgcmV0dXJuIGFycmF5OworICAgIC8vIElmIHdlIGdl
dCBoZXJlLCBzb21ldGhpbmcgd2VudCB3cm9uZyBpbiBvdXIgdW5mb3J0dW5hdGVseSBjb21wbGV4
IGxvZ2ljIGFib3ZlCisgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOwogfQogCiBsb25nIFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6Z2V0VW5pZm9ybUxvY2F0aW9uKFdlYkdMUHJvZ3JhbSogcHJvZ3Jh
bSwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTk0NCwzMiArMTI4
MCw0NyBAQCBsb25nIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VW5pZm9ybUxvCiAgICAgcmV0
dXJuIG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sIG5hbWUpOwogfQogCi1m
bG9hdCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFZlcnRleEF0dHJpYmYodW5zaWduZWQgbG9u
ZyBpbmRleCwgdW5zaWduZWQgbG9uZyBwbmFtZSkKK1dlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmdldFZlcnRleEF0dHJpYih1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBs
b25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBmbG9hdCByZXN1bHQgPSBtX2Nv
bnRleHQtPmdldFZlcnRleEF0dHJpYmYoaW5kZXgsIHBuYW1lKTsKLSAgICBjbGVhbnVwQWZ0ZXJH
cmFwaGljc0NhbGwoZmFsc2UpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVBhc3NSZWZQdHI8
V2ViR0xGbG9hdEFycmF5PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFZlcnRleEF0dHJpYmZ2
KHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgUmVmUHRy
PFdlYkdMRmxvYXRBcnJheT4gYXJyYXkgPSBtX2NvbnRleHQtPmdldFZlcnRleEF0dHJpYmZ2KGlu
ZGV4LCBwbmFtZSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKLSAgICBy
ZXR1cm4gYXJyYXk7Ci19Ci0KLWxvbmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRWZXJ0ZXhB
dHRyaWJpKHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAg
bG9uZyByZXN1bHQgPSBtX2NvbnRleHQtPmdldFZlcnRleEF0dHJpYmkoaW5kZXgsIHBuYW1lKTsK
LSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLVBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRWZXJ0ZXhBdHRyaWJpdih1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBuYW1l
KQotewotICAgIFJlZlB0cjxXZWJHTEludEFycmF5PiBhcnJheSA9IG1fY29udGV4dC0+Z2V0VmVy
dGV4QXR0cmliaXYoaW5kZXgsIHBuYW1lKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwo
ZmFsc2UpOwotICAgIHJldHVybiBhcnJheTsKKyAgICBXZWJHTFN0YXRlUmVzdG9yZXIodGhpcywg
ZmFsc2UpOworICAgIHN3aXRjaCAocG5hbWUpIHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNE
OjpWRVJURVhfQVRUUklCX0FSUkFZX0JVRkZFUl9CSU5ESU5HOiB7CisgICAgICAgIGludCBuYW1l
ID0gMDsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRWZXJ0ZXhBdHRyaWJpdihpbmRleCwgcG5hbWUs
ICZuYW1lKTsKKyAgICAgICAgaWYgKG5hbWUgPT0gMCkKKyAgICAgICAgICAgIHJldHVybiBXZWJH
TEdldEluZm8oKTsKKyAgICAgICAgUmVmUHRyPFdlYkdMQnVmZmVyPiB0bXAgPSBXZWJHTEJ1ZmZl
cjo6Y3JlYXRlKHRoaXMsIG5hbWUpOworICAgICAgICBhZGRPYmplY3QodG1wLmdldCgpKTsKKyAg
ICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMQnVmZmVyPih0bXApKTsK
KyAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VkVSVEVYX0FUVFJJQl9BUlJBWV9F
TkFCTEVEOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlZFUlRFWF9BVFRSSUJfQVJSQVlf
Tk9STUFMSVpFRDogeworICAgICAgICBpbnQgdmFsdWUgPSAwOworICAgICAgICBtX2NvbnRleHQt
PmdldFZlcnRleEF0dHJpYml2KGluZGV4LCBwbmFtZSwgJnZhbHVlKTsKKyAgICAgICAgcmV0dXJu
IFdlYkdMR2V0SW5mbyhzdGF0aWNfY2FzdDxib29sPih2YWx1ZSkpOworICAgIH0KKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dDNEOjpWRVJURVhfQVRUUklCX0FSUkFZX1NJWkU6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6VkVSVEVYX0FUVFJJQl9BUlJBWV9TVFJJREU6IHsKKyAgICAgICAg
aW50IHZhbHVlID0gMDsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRWZXJ0ZXhBdHRyaWJpdihpbmRl
eCwgcG5hbWUsICZ2YWx1ZSk7CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oc3RhdGljX2Nh
c3Q8bG9uZz4odmFsdWUpKTsKKyAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VkVS
VEVYX0FUVFJJQl9BUlJBWV9UWVBFOiB7CisgICAgICAgIGludCB2YWx1ZSA9IDA7CisgICAgICAg
IG1fY29udGV4dC0+Z2V0VmVydGV4QXR0cmliaXYoaW5kZXgsIHBuYW1lLCAmdmFsdWUpOworICAg
ICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KHZhbHVl
KSk7CisgICAgfQorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNVUlJFTlRfVkVSVEVYX0FU
VFJJQjogeworICAgICAgICBmbG9hdCB2YWx1ZVs0XSA9IHswfTsKKyAgICAgICAgbV9jb250ZXh0
LT5nZXRWZXJ0ZXhBdHRyaWJmdihpbmRleCwgcG5hbWUsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJu
IFdlYkdMR2V0SW5mbyhXZWJHTEZsb2F0QXJyYXk6OmNyZWF0ZSh2YWx1ZSwgNCkpOworICAgIH0K
KyAgICBkZWZhdWx0OiB7CisgICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX0VOVU0g
ZXJyb3IKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm4gV2ViR0xHZXRJ
bmZvKCk7CisgICAgfQorICAgIH0KIH0KIAogbG9uZyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omdl
dFZlcnRleEF0dHJpYk9mZnNldCh1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBu
YW1lKQpAQCAtMTU4NCw2ICsxOTM1LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVz
ZVByb2dyYW0oVwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgICAgICAKKyAgICBtX2N1cnJl
bnRQcm9ncmFtID0gcHJvZ3JhbTsKICAgICBtX2NvbnRleHQtPnVzZVByb2dyYW0ocHJvZ3JhbSk7
CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KQEAgLTE3NTIsNyArMjEw
NCw5NCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZGV0YWNoQW5kUmVtCiAgICAgbV9j
YW52YXNPYmplY3RzLmNsZWFyKCk7CiB9CiAKK1dlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmdldEJvb2xlYW5QYXJhbWV0ZXIodW5zaWduZWQgbG9uZyBwbmFtZSkKK3sKKyAgICB1
bnNpZ25lZCBjaGFyIHZhbHVlOworICAgIG1fY29udGV4dC0+Z2V0Qm9vbGVhbnYocG5hbWUsICZ2
YWx1ZSk7CisgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNfY2FzdDxib29sPih2YWx1ZSkp
OworfQorCitXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRGbG9hdFBhcmFt
ZXRlcih1bnNpZ25lZCBsb25nIHBuYW1lKQoreworICAgIGZsb2F0IHZhbHVlOworICAgIG1fY29u
dGV4dC0+Z2V0RmxvYXR2KHBuYW1lLCAmdmFsdWUpOworICAgIHJldHVybiBXZWJHTEdldEluZm8o
c3RhdGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlKSk7Cit9CisKK1dlYkdMR2V0SW5mbyBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmdldEludFBhcmFtZXRlcih1bnNpZ25lZCBsb25nIHBuYW1lKQoreworICAg
IHJldHVybiBnZXRMb25nUGFyYW1ldGVyKHBuYW1lKTsKK30KKworV2ViR0xHZXRJbmZvIFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6Z2V0TG9uZ1BhcmFtZXRlcih1bnNpZ25lZCBsb25nIHBuYW1lKQor
eworICAgIGludCB2YWx1ZTsKKyAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KHBuYW1lLCAmdmFs
dWUpOworICAgIHJldHVybiBXZWJHTEdldEluZm8oc3RhdGljX2Nhc3Q8bG9uZz4odmFsdWUpKTsK
K30KKworV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VW5zaWduZWRMb25n
UGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcgcG5hbWUpCit7CisgICAgaW50IHZhbHVlOworICAgIG1f
Y29udGV4dC0+Z2V0SW50ZWdlcnYocG5hbWUsICZ2YWx1ZSk7CisgICAgcmV0dXJuIFdlYkdMR2V0
SW5mbyhzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPih2YWx1ZSkpOworfQorCitXZWJHTEdldElu
Zm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRXZWJHTEZsb2F0QXJyYXlQYXJhbWV0ZXIodW5z
aWduZWQgbG9uZyBwbmFtZSkKK3sKKyAgICBmbG9hdCB2YWx1ZVs0XSA9IHswfTsKKyAgICBtX2Nv
bnRleHQtPmdldEZsb2F0dihwbmFtZSwgdmFsdWUpOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IDA7
CisgICAgc3dpdGNoIChwbmFtZSkgeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkFMSUFT
RURfUE9JTlRfU0laRV9SQU5HRToKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpBTElBU0VE
X0xJTkVfV0lEVEhfUkFOR0U6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfUkFO
R0U6CisgICAgICAgIGxlbmd0aCA9IDI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0M0Q6OkJMRU5EX0NPTE9SOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNP
TE9SX0NMRUFSX1ZBTFVFOgorICAgICAgICBsZW5ndGggPSA0OworICAgICAgICBicmVhazsKKyAg
ICBkZWZhdWx0OgorICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIH0KKyAgICByZXR1cm4g
V2ViR0xHZXRJbmZvKFdlYkdMRmxvYXRBcnJheTo6Y3JlYXRlKHZhbHVlLCBsZW5ndGgpKTsKK30K
KworV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0V2ViR0xJbnRBcnJheVBh
cmFtZXRlcih1bnNpZ25lZCBsb25nIHBuYW1lKQoreworICAgIGludCB2YWx1ZVs0XSA9IHswfTsK
KyAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KHBuYW1lLCB2YWx1ZSk7CisgICAgdW5zaWduZWQg
bGVuZ3RoID0gMDsKKyAgICBzd2l0Y2ggKHBuYW1lKSB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6TUFYX1ZJRVdQT1JUX0RJTVM6CisgICAgICAgIGxlbmd0aCA9IDI7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNDSVNTT1JfQk9YOgorICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0M0Q6OlZJRVdQT1JUOgorICAgICAgICBsZW5ndGggPSA0OworICAgICAg
ICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIH0K
KyAgICByZXR1cm4gV2ViR0xHZXRJbmZvKFdlYkdMSW50QXJyYXk6OmNyZWF0ZSh2YWx1ZSwgbGVu
Z3RoKSk7Cit9CisKK1dlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFdlYkdM
VW5zaWduZWRCeXRlQXJyYXlQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyBwbmFtZSkKK3sKKyAgICB1
bnNpZ25lZCBjaGFyIHZhbHVlWzRdID0gezB9OworICAgIG1fY29udGV4dC0+Z2V0Qm9vbGVhbnYo
cG5hbWUsIHZhbHVlKTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSAwOworICAgIHN3aXRjaCAocG5h
bWUpIHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9XUklURU1BU0s6CisgICAg
ICAgIGxlbmd0aCA9IDQ7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgfQorICAgIHJldHVybiBXZWJHTEdldEluZm8oV2ViR0xVbnNp
Z25lZEJ5dGVBcnJheTo6Y3JlYXRlKHZhbHVlLCBsZW5ndGgpKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKDNEX0NBTlZBUykKLQpJbmRleDogV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCShyZXZpc2lvbiA1MTM0MSkK
KysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDYW52YXNSZW5kZXJpbmdDb250ZXh0
LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIldlYkdMRmxvYXRBcnJh
eS5oIgorI2luY2x1ZGUgIldlYkdMR2V0SW5mby5oIgogI2luY2x1ZGUgIldlYkdMSW50QXJyYXku
aCIKICNpbmNsdWRlICJXZWJHTFVuc2lnbmVkQnl0ZUFycmF5LmgiCiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0M0QuaCIKQEAgLTYwLDcgKzYxLDcgQEAgY2xhc3MgV2ViS2l0Q1NTTWF0cml4Owog
ICAgICAgICAvLyBsaWtlIEdMX0ZMT0FULCBHTF9JTlQsIGV0Yy4KICAgICAgICAgaW50IHNpemVJ
bkJ5dGVzKGludCB0eXBlLCBFeGNlcHRpb25Db2RlJiBlYyk7CiAKLSAgICAgICAgdm9pZCBhY3Rp
dmVUZXh0dXJlKHVuc2lnbmVkIGxvbmcgdGV4dHVyZSk7CisgICAgICAgIHZvaWQgYWN0aXZlVGV4
dHVyZSh1bnNpZ25lZCBsb25nIHRleHR1cmUsIEV4Y2VwdGlvbkNvZGUmIGVjKTsKICAgICAgICAg
dm9pZCBhdHRhY2hTaGFkZXIoV2ViR0xQcm9ncmFtKiwgV2ViR0xTaGFkZXIqLCBFeGNlcHRpb25D
b2RlJiBlYyk7CiAgICAgICAgIHZvaWQgYmluZEF0dHJpYkxvY2F0aW9uKFdlYkdMUHJvZ3JhbSos
IHVuc2lnbmVkIGxvbmcgaW5kZXgsIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpOwogICAgICAgICB2b2lkIGJpbmRCdWZmZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIFdlYkdM
QnVmZmVyKiwgRXhjZXB0aW9uQ29kZSYgZWMpOwpAQCAtMTMwLDI2ICsxMzEsMjEgQEAgY2xhc3Mg
V2ViS2l0Q1NTTWF0cml4OwogCiAgICAgICAgIGludCAgZ2V0QXR0cmliTG9jYXRpb24oV2ViR0xQ
cm9ncmFtKiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAotICAgICAgICBib29sIGdldEJvb2xlYW4o
dW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFBhc3NSZWZQdHI8V2ViR0xVbnNpZ25lZEJ5
dGVBcnJheT4gZ2V0Qm9vbGVhbnYodW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIGludCBn
ZXRCdWZmZXJQYXJhbWV0ZXJpKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBu
YW1lKTsKLSAgICAgICAgUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBnZXRCdWZmZXJQYXJhbWV0
ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSk7CisgICAgICAg
IFdlYkdMR2V0SW5mbyBnZXRCdWZmZXJQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVu
c2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgICAgICB1bnNpZ25lZCBs
b25nIGdldEVycm9yKCk7CiAKLSAgICAgICAgZmxvYXQgZ2V0RmxvYXQodW5zaWduZWQgbG9uZyBw
bmFtZSk7Ci0gICAgICAgIFBhc3NSZWZQdHI8V2ViR0xGbG9hdEFycmF5PiBnZXRGbG9hdHYodW5z
aWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIGludCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQ
YXJhbWV0ZXJpKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQs
IHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBQYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+
IGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0
LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAg
ICBpbnQgZ2V0SW50ZWdlcih1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgUGFzc1JlZlB0
cjxXZWJHTEludEFycmF5PiBnZXRJbnRlZ2Vydih1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAg
ICAgaW50IGdldFByb2dyYW1pKFdlYkdMUHJvZ3JhbSosIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4
Y2VwdGlvbkNvZGUmIGVjKTsKLSAgICAgICAgUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBnZXRQ
cm9ncmFtaXYoV2ViR0xQcm9ncmFtKiwgdW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpOworICAgICAgICBXZWJHTEdldEluZm8gZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFy
YW1ldGVyKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIHVu
c2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKKworICAgICAgICBXZWJHTEdldElu
Zm8gZ2V0UGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKKwor
ICAgICAgICBXZWJHTEdldEluZm8gZ2V0UHJvZ3JhbVBhcmFtZXRlcihXZWJHTFByb2dyYW0qLCB1
bnNpZ25lZCBsb25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJik7CisKICAgICAgICAgU3RyaW5nIGdl
dFByb2dyYW1JbmZvTG9nKFdlYkdMUHJvZ3JhbSosIEV4Y2VwdGlvbkNvZGUmIGVjKTsKLSAgICAg
ICAgaW50IGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVu
c2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBQYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IGdl
dFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBs
b25nIHBuYW1lKTsKLSAgICAgICAgaW50IGdldFNoYWRlcmkoV2ViR0xTaGFkZXIqLCB1bnNpZ25l
ZCBsb25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYyk7Ci0gICAgICAgIFBhc3NSZWZQdHI8V2Vi
R0xJbnRBcnJheT4gZ2V0U2hhZGVyaXYoV2ViR0xTaGFkZXIqLCB1bnNpZ25lZCBsb25nIHBuYW1l
LCBFeGNlcHRpb25Db2RlJiBlYyk7CisKKyAgICAgICAgV2ViR0xHZXRJbmZvIGdldFJlbmRlcmJ1
ZmZlclBhcmFtZXRlcih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSwg
RXhjZXB0aW9uQ29kZSYpOworCisgICAgICAgIFdlYkdMR2V0SW5mbyBnZXRTaGFkZXJQYXJhbWV0
ZXIoV2ViR0xTaGFkZXIqLCB1bnNpZ25lZCBsb25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYyk7
CiAKICAgICAgICAgU3RyaW5nIGdldFNoYWRlckluZm9Mb2coV2ViR0xTaGFkZXIqLCBFeGNlcHRp
b25Db2RlJiBlYyk7CiAKQEAgLTE1OSwyMiArMTU1LDEzIEBAIGNsYXNzIFdlYktpdENTU01hdHJp
eDsKICAgICAgICAgU3RyaW5nIGdldFNoYWRlclNvdXJjZShXZWJHTFNoYWRlciosIEV4Y2VwdGlv
bkNvZGUmKTsKICAgICAgICAgU3RyaW5nIGdldFN0cmluZyh1bnNpZ25lZCBsb25nIG5hbWUpOwog
Ci0gICAgICAgIGZsb2F0IGdldFRleFBhcmFtZXRlcmYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVu
c2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBQYXNzUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4g
Z2V0VGV4UGFyYW1ldGVyZnYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5h
bWUpOwotICAgICAgICBpbnQgZ2V0VGV4UGFyYW1ldGVyaSh1bnNpZ25lZCBsb25nIHRhcmdldCwg
dW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4g
Z2V0VGV4UGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5h
bWUpOwotCi0gICAgICAgIGZsb2F0IGdldFVuaWZvcm1mKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwg
bG9uZyBsb2NhdGlvbiwgRXhjZXB0aW9uQ29kZSYpOwotICAgICAgICBQYXNzUmVmUHRyPFdlYkdM
RmxvYXRBcnJheT4gZ2V0VW5pZm9ybWZ2KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBsb2Nh
dGlvbiwgRXhjZXB0aW9uQ29kZSYpOwotICAgICAgICBsb25nIGdldFVuaWZvcm1pKFdlYkdMUHJv
Z3JhbSogcHJvZ3JhbSwgbG9uZyBsb2NhdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpOwotICAgICAg
ICBQYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IGdldFVuaWZvcm1pdihXZWJHTFByb2dyYW0qIHBy
b2dyYW0sIGxvbmcgbG9jYXRpb24sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgV2ViR0xHZXRJ
bmZvIGdldFRleFBhcmFtZXRlcih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBw
bmFtZSwgRXhjZXB0aW9uQ29kZSYpOworCisgICAgICAgIFdlYkdMR2V0SW5mbyBnZXRVbmlmb3Jt
KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBsb2NhdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMp
OwogCiAgICAgICAgIGxvbmcgZ2V0VW5pZm9ybUxvY2F0aW9uKFdlYkdMUHJvZ3JhbSosIGNvbnN0
IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgICAgIGZsb2F0IGdldFZlcnRl
eEF0dHJpYmYodW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAg
ICAgIFBhc3NSZWZQdHI8V2ViR0xGbG9hdEFycmF5PiBnZXRWZXJ0ZXhBdHRyaWJmdih1bnNpZ25l
ZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgbG9uZyBnZXRWZXJ0
ZXhBdHRyaWJpKHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAg
ICAgICBQYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IGdldFZlcnRleEF0dHJpYml2KHVuc2lnbmVk
IGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOworICAgICAgICBXZWJHTEdldEluZm8g
Z2V0VmVydGV4QXR0cmliKHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUs
IEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgICAgICBsb25nIGdldFZlcnRleEF0dHJpYk9mZnNldCh1
bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBuYW1lKTsKIApAQCAtMzM4LDYgKzMy
NSwyOSBAQCBjbGFzcyBXZWJLaXRDU1NNYXRyaXg7CiAgICAgICAgIAogICAgICAgICBWZWN0b3I8
VmVydGV4QXR0cmliU3RhdGU+IG1fdmVydGV4QXR0cmliU3RhdGU7CiAgICAgICAgIHVuc2lnbmVk
IG1fbWF4VmVydGV4QXR0cmliczsKKworICAgICAgICBSZWZQdHI8V2ViR0xQcm9ncmFtPiBtX2N1
cnJlbnRQcm9ncmFtOworICAgICAgICBSZWZQdHI8V2ViR0xGcmFtZWJ1ZmZlcj4gbV9mcmFtZWJ1
ZmZlckJpbmRpbmc7CisgICAgICAgIFJlZlB0cjxXZWJHTFJlbmRlcmJ1ZmZlcj4gbV9yZW5kZXJi
dWZmZXJCaW5kaW5nOworICAgICAgICBjbGFzcyBUZXh0dXJlVW5pdFN0YXRlIHsKKyAgICAgICAg
cHVibGljOgorICAgICAgICAgICAgUmVmUHRyPFdlYkdMVGV4dHVyZT4gbV90ZXh0dXJlMkRCaW5k
aW5nOworICAgICAgICAgICAgUmVmUHRyPFdlYkdMVGV4dHVyZT4gbV90ZXh0dXJlQ3ViZU1hcEJp
bmRpbmc7CisgICAgICAgIH07CisgICAgICAgIFRleHR1cmVVbml0U3RhdGUgbV90ZXh0dXJlVW5p
dHNbMzJdOworICAgICAgICB1bnNpZ25lZCBsb25nIG1fYWN0aXZlVGV4dHVyZVVuaXQ7CisKKyAg
ICAgICAgLy8gSGVscGVycyBmb3IgZ2V0UGFyYW1ldGVyIGFuZCBvdGhlcnMKKyAgICAgICAgV2Vi
R0xHZXRJbmZvIGdldEJvb2xlYW5QYXJhbWV0ZXIodW5zaWduZWQgbG9uZyBwbmFtZSk7CisgICAg
ICAgIFdlYkdMR2V0SW5mbyBnZXRGbG9hdFBhcmFtZXRlcih1bnNpZ25lZCBsb25nIHBuYW1lKTsK
KyAgICAgICAgV2ViR0xHZXRJbmZvIGdldEludFBhcmFtZXRlcih1bnNpZ25lZCBsb25nIHBuYW1l
KTsKKyAgICAgICAgV2ViR0xHZXRJbmZvIGdldExvbmdQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyBw
bmFtZSk7CisgICAgICAgIFdlYkdMR2V0SW5mbyBnZXRVbnNpZ25lZExvbmdQYXJhbWV0ZXIodW5z
aWduZWQgbG9uZyBwbmFtZSk7CisgICAgICAgIFdlYkdMR2V0SW5mbyBnZXRXZWJHTEZsb2F0QXJy
YXlQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyBwbmFtZSk7CisgICAgICAgIFdlYkdMR2V0SW5mbyBn
ZXRXZWJHTEludEFycmF5UGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcgcG5hbWUpOworICAgICAgICBX
ZWJHTEdldEluZm8gZ2V0V2ViR0xVbnNpZ25lZEJ5dGVBcnJheVBhcmFtZXRlcih1bnNpZ25lZCBs
b25nIHBuYW1lKTsKKworICAgICAgICBmcmllbmQgY2xhc3MgV2ViR0xTdGF0ZVJlc3RvcmVyOwog
ICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5pZGwJKHJldmlzaW9uIDUxMzQxKQorKysgV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC00NjAsNyArNDYwLDcgQEAgbW9kdWxlIGh0bWwgewogCiAgICAgICAgIGxvbmcgc2l6ZUlu
Qnl0ZXMoaW4gdW5zaWduZWQgbG9uZyB0eXBlKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAotICAg
ICAgICB2b2lkICAgICAgICAgYWN0aXZlVGV4dHVyZShpbiB1bnNpZ25lZCBsb25nIHRleHR1cmUp
OworICAgICAgICB2b2lkICAgICAgICAgYWN0aXZlVGV4dHVyZShpbiB1bnNpZ25lZCBsb25nIHRl
eHR1cmUpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICB2b2lkICAgICAgICAgYXR0YWNo
U2hhZGVyKGluIFdlYkdMUHJvZ3JhbSBwcm9ncmFtLCBpbiBXZWJHTFNoYWRlciBzaGFkZXIpIHJh
aXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICB2b2lkICAgICAgICAgYmluZEF0dHJpYkxvY2F0
aW9uKGluIFdlYkdMUHJvZ3JhbSBwcm9ncmFtLCBpbiB1bnNpZ25lZCBsb25nIGluZGV4LCBpbiBE
T01TdHJpbmcgbmFtZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIHZvaWQgICAgICAg
ICBiaW5kQnVmZmVyKGluIHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBpbiBXZWJHTEJ1ZmZlciBidWZm
ZXIpIHJhaXNlcyhET01FeGNlcHRpb24pOwpAQCAtNTMwLDcgKzUzMCw2IEBAIG1vZHVsZSBodG1s
IHsKICAgICAgICAgdm9pZCAgICAgICAgIGZyb250RmFjZShpbiB1bnNpZ25lZCBsb25nIG1vZGUp
OwogICAgICAgICB2b2lkICAgICAgICAgZ2VuZXJhdGVNaXBtYXAoaW4gdW5zaWduZWQgbG9uZyB0
YXJnZXQpOwogICAgICAgICAKLSAgICAgICAgLy8gRklYTUU6IHRoZXNlIG5lZWQgdG8gYmUgYWRk
ZWQgcGVyIHRoZSBXZWJHTCBzcGVjCiAgICAgICAgIFdlYkdMQWN0aXZlSW5mbyBnZXRBY3RpdmVB
dHRyaWIoaW4gV2ViR0xQcm9ncmFtIHByb2dyYW0sIGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpCiAg
ICAgICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIFdlYkdMQWN0aXZlSW5m
byBnZXRBY3RpdmVVbmlmb3JtKGluIFdlYkdMUHJvZ3JhbSBwcm9ncmFtLCBpbiB1bnNpZ25lZCBs
b25nIGluZGV4KQpAQCAtNTQwLDI2ICs1MzksMjIgQEAgbW9kdWxlIGh0bWwgewogCiAgICAgICAg
IGludCAgICAgICAgICBnZXRBdHRyaWJMb2NhdGlvbihpbiBXZWJHTFByb2dyYW0gcHJvZ3JhbSwg
aW4gRE9NU3RyaW5nIG5hbWUpOwogCi0gICAgICAgIGJvb2xlYW4gZ2V0Qm9vbGVhbihpbiB1bnNp
Z25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgV2ViR0xVbnNpZ25lZEJ5dGVBcnJheSBnZXRCb29s
ZWFudihpbiB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgbG9uZyBnZXRCdWZmZXJQYXJh
bWV0ZXJpKGluIHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBpbiB1bnNpZ25lZCBsb25nIHBuYW1lKTsK
LSAgICAgICAgV2ViR0xJbnRBcnJheSBnZXRCdWZmZXJQYXJhbWV0ZXJpdihpbiB1bnNpZ25lZCBs
b25nIHRhcmdldCwgaW4gdW5zaWduZWQgbG9uZyBwbmFtZSk7CisgICAgICAgIC8vIGFueSBnZXRC
dWZmZXJQYXJhbWV0ZXIoaW4gdW5zaWduZWQgbG9uZyB0YXJnZXQsIGluIHVuc2lnbmVkIGxvbmcg
cG5hbWUpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICBbQ3VzdG9tXSB2b2lkIGdldEJ1
ZmZlclBhcmFtZXRlcigpOwogCiAgICAgICAgIHVuc2lnbmVkIGxvbmcgZ2V0RXJyb3IoKTsKIAot
ICAgICAgICBmbG9hdCBnZXRGbG9hdChpbiB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAg
V2ViR0xGbG9hdEFycmF5IGdldEZsb2F0dihpbiB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAg
ICAgbG9uZyBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKGluIHVuc2lnbmVkIGxv
bmcgdGFyZ2V0LCBpbiB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIGluIHVuc2lnbmVkIGxvbmcg
cG5hbWUpOwotICAgICAgICBXZWJHTEludEFycmF5IGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcml2KGluIHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBpbiB1bnNpZ25lZCBsb25nIGF0dGFj
aG1lbnQsIGluIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBsb25nIGdldEludGVnZXIo
aW4gdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFdlYkdMSW50QXJyYXkgZ2V0SW50ZWdl
cnYoaW4gdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIGxvbmcgZ2V0UHJvZ3JhbWkoaW4g
V2ViR0xQcm9ncmFtIHByb2dyYW0sIGluIHVuc2lnbmVkIGxvbmcgcG5hbWUpIHJhaXNlcyhET01F
eGNlcHRpb24pOwotICAgICAgICBXZWJHTEludEFycmF5IGdldFByb2dyYW1pdihpbiBXZWJHTFBy
b2dyYW0gcHJvZ3JhbSwgaW4gdW5zaWduZWQgbG9uZyBwbmFtZSkgcmFpc2VzKERPTUV4Y2VwdGlv
bik7CisgICAgICAgIC8vIGFueSBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoaW4g
dW5zaWduZWQgbG9uZyB0YXJnZXQsIGluIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgaW4gdW5z
aWduZWQgbG9uZyBwbmFtZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIFtDdXN0b21d
IHZvaWQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKCk7CisgICAgICAgIC8vIGFu
eSBnZXRQYXJhbWV0ZXIoaW4gdW5zaWduZWQgbG9uZyBwbmFtZSkgcmFpc2VzKERPTUV4Y2VwdGlv
bik7CisgICAgICAgIFtDdXN0b21dIHZvaWQgZ2V0UGFyYW1ldGVyKCk7CisgICAgICAgIC8vIGFu
eSBnZXRQcm9ncmFtUGFyYW1ldGVyKGluIFdlYkdMUHJvZ3JhbSBwcm9ncmFtLCBpbiB1bnNpZ25l
ZCBsb25nIHBuYW1lKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgW0N1c3RvbV0gdm9p
ZCBnZXRQcm9ncmFtUGFyYW1ldGVyKCk7CiAgICAgICAgIERPTVN0cmluZyBnZXRQcm9ncmFtSW5m
b0xvZyhpbiBXZWJHTFByb2dyYW0gcHJvZ3JhbSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7Ci0gICAg
ICAgIGxvbmcgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaShpbiB1bnNpZ25lZCBsb25nIHRhcmdl
dCwgaW4gdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFdlYkdMSW50QXJyYXkgZ2V0UmVu
ZGVyYnVmZmVyUGFyYW1ldGVyaXYoaW4gdW5zaWduZWQgbG9uZyB0YXJnZXQsIGluIHVuc2lnbmVk
IGxvbmcgcG5hbWUpOwotICAgICAgICBsb25nIGdldFNoYWRlcmkoaW4gV2ViR0xTaGFkZXIgc2hh
ZGVyLCBpbiB1bnNpZ25lZCBsb25nIHBuYW1lKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKLSAgICAg
ICAgV2ViR0xJbnRBcnJheSBnZXRTaGFkZXJpdihpbiBXZWJHTFNoYWRlciBzaGFkZXIsIGluIHVu
c2lnbmVkIGxvbmcgcG5hbWUpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICAvLyBhbnkg
Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKGluIHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBpbiB1bnNp
Z25lZCBsb25nIHBuYW1lKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgW0N1c3RvbV0g
dm9pZCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoKTsKKyAgICAgICAgLy8gYW55IGdldFNoYWRl
clBhcmFtZXRlcihpbiBXZWJHTFNoYWRlciBzaGFkZXIsIGluIHVuc2lnbmVkIGxvbmcgcG5hbWUp
IHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICBbQ3VzdG9tXSB2b2lkIGdldFNoYWRlclBh
cmFtZXRlcigpIHJhaXNlcyhET01FeGNlcHRpb24pOwogCiAgICAgICAgIERPTVN0cmluZyAgICBn
ZXRTaGFkZXJJbmZvTG9nKGluIFdlYkdMU2hhZGVyIHNoYWRlcikgcmFpc2VzKERPTUV4Y2VwdGlv
bik7CiAKQEAgLTU2OSwyMiArNTY0LDE2IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgRE9NU3Ry
aW5nICAgIGdldFNoYWRlclNvdXJjZShpbiBXZWJHTFNoYWRlciBzaGFkZXIpIHJhaXNlcyhET01F
eGNlcHRpb24pOwogICAgICAgICBET01TdHJpbmcgICAgZ2V0U3RyaW5nKGluIHVuc2lnbmVkIGxv
bmcgbmFtZSk7CiAKLSAgICAgICAgZmxvYXQgZ2V0VGV4UGFyYW1ldGVyZihpbiB1bnNpZ25lZCBs
b25nIHRhcmdldCwgaW4gdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFdlYkdMRmxvYXRB
cnJheSBnZXRUZXhQYXJhbWV0ZXJmdihpbiB1bnNpZ25lZCBsb25nIHRhcmdldCwgaW4gdW5zaWdu
ZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIGxvbmcgZ2V0VGV4UGFyYW1ldGVyaShpbiB1bnNpZ25l
ZCBsb25nIHRhcmdldCwgaW4gdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFdlYkdMSW50
QXJyYXkgZ2V0VGV4UGFyYW1ldGVyaXYoaW4gdW5zaWduZWQgbG9uZyB0YXJnZXQsIGluIHVuc2ln
bmVkIGxvbmcgcG5hbWUpOwotCi0gICAgICAgIGZsb2F0IGdldFVuaWZvcm1mKGluIFdlYkdMUHJv
Z3JhbSBwcm9ncmFtLCBpbiBsb25nIGxvY2F0aW9uKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKLSAg
ICAgICAgV2ViR0xGbG9hdEFycmF5IGdldFVuaWZvcm1mdihpbiBXZWJHTFByb2dyYW0gcHJvZ3Jh
bSwgaW4gbG9uZyBsb2NhdGlvbikgcmFpc2VzKERPTUV4Y2VwdGlvbik7Ci0gICAgICAgIGxvbmcg
Z2V0VW5pZm9ybWkoaW4gV2ViR0xQcm9ncmFtIHByb2dyYW0sIGluIGxvbmcgbG9jYXRpb24pIHJh
aXNlcyhET01FeGNlcHRpb24pOwotICAgICAgICBXZWJHTEludEFycmF5IGdldFVuaWZvcm1pdihp
biBXZWJHTFByb2dyYW0gcHJvZ3JhbSwgaW4gbG9uZyBsb2NhdGlvbikgcmFpc2VzKERPTUV4Y2Vw
dGlvbik7CisgICAgICAgIC8vIGFueSBnZXRUZXhQYXJhbWV0ZXIoaW4gdW5zaWduZWQgbG9uZyB0
YXJnZXQsIGluIHVuc2lnbmVkIGxvbmcgcG5hbWUpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAg
ICAgICBbQ3VzdG9tXSB2b2lkIGdldFRleFBhcmFtZXRlcigpOworCisgICAgICAgIC8vIGFueSBn
ZXRVbmlmb3JtKGluIFdlYkdMUHJvZ3JhbSBwcm9ncmFtLCBpbiBsb25nIGxvY2F0aW9uKSByYWlz
ZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgW0N1c3RvbV0gdm9pZCBnZXRVbmlmb3JtKCk7CiAg
ICAgICAgIAogICAgICAgICBsb25nIGdldFVuaWZvcm1Mb2NhdGlvbihpbiBXZWJHTFByb2dyYW0g
cHJvZ3JhbSwgaW4gRE9NU3RyaW5nIG5hbWUpIHJhaXNlcyhET01FeGNlcHRpb24pOwogCi0gICAg
ICAgIGZsb2F0IGdldFZlcnRleEF0dHJpYmYoaW4gdW5zaWduZWQgbG9uZyBpbmRleCwgaW4gdW5z
aWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFdlYkdMRmxvYXRBcnJheSBnZXRWZXJ0ZXhBdHRy
aWJmdihpbiB1bnNpZ25lZCBsb25nIGluZGV4LCBpbiB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAg
ICAgICAgbG9uZyBnZXRWZXJ0ZXhBdHRyaWJpKGluIHVuc2lnbmVkIGxvbmcgaW5kZXgsIGluIHVu
c2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBXZWJHTEludEFycmF5IGdldFZlcnRleEF0dHJp
Yml2KGluIHVuc2lnbmVkIGxvbmcgaW5kZXgsIGluIHVuc2lnbmVkIGxvbmcgcG5hbWUpOworICAg
ICAgICAvLyBhbnkgZ2V0VmVydGV4QXR0cmliKGluIHVuc2lnbmVkIGxvbmcgaW5kZXgsIGluIHVu
c2lnbmVkIGxvbmcgcG5hbWUpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICBbQ3VzdG9t
XSB2b2lkIGdldFZlcnRleEF0dHJpYigpOwogCiAgICAgICAgIGxvbmcgZ2V0VmVydGV4QXR0cmli
T2Zmc2V0KGluIHVuc2lnbmVkIGxvbmcgaW5kZXgsIGluIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwog
CkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRleHR1cmUuY3BwCShyZXZpc2lvbiA1MTM0MSkK
KysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzcsNiArMzcsMTEgQEAgUGFzc1JlZlB0cjxXZWJHTFRleHR1cmU+IFdlYkdMVGV4dHVyZTo6
YwogICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViR0xUZXh0dXJlKGN0eCkpOwogfQogCitQYXNz
UmVmUHRyPFdlYkdMVGV4dHVyZT4gV2ViR0xUZXh0dXJlOjpjcmVhdGUoV2ViR0xSZW5kZXJpbmdD
b250ZXh0KiBjdHgsIFBsYXRmb3JtM0RPYmplY3Qgb2JqKQoreworICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgV2ViR0xUZXh0dXJlKGN0eCwgb2JqKSk7Cit9CisKIFdlYkdMVGV4dHVyZTo6V2ViR0xU
ZXh0dXJlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY3R4KQogICAgIDogQ2FudmFzT2JqZWN0KGN0
eCkKICAgICAsIGN1YmVNYXBSV3JhcE1vZGVJbml0aWFsaXplZChmYWxzZSkKQEAgLTQ0LDYgKzQ5
LDEzIEBAIFdlYkdMVGV4dHVyZTo6V2ViR0xUZXh0dXJlKFdlYkdMUmVuZGVyaW4KICAgICBzZXRP
YmplY3QoY29udGV4dCgpLT5ncmFwaGljc0NvbnRleHQzRCgpLT5jcmVhdGVUZXh0dXJlKCkpOwog
fQogCitXZWJHTFRleHR1cmU6OldlYkdMVGV4dHVyZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGN0
eCwgUGxhdGZvcm0zRE9iamVjdCBvYmopCisgICAgOiBDYW52YXNPYmplY3QoY3R4KQorICAgICwg
Y3ViZU1hcFJXcmFwTW9kZUluaXRpYWxpemVkKGZhbHNlKQoreworICAgIHNldE9iamVjdChvYmos
IGZhbHNlKTsKK30KKwogdm9pZCBXZWJHTFRleHR1cmU6Ol9kZWxldGVPYmplY3QoUGxhdGZvcm0z
RE9iamVjdCBvYmplY3QpCiB7CiAgICAgY29udGV4dCgpLT5ncmFwaGljc0NvbnRleHQzRCgpLT5k
ZWxldGVUZXh0dXJlKG9iamVjdCk7CkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVGV4
dHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmgJ
KHJldmlzaW9uIDUxMzQxKQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRleHR1cmUuaAko
d29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICAKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViR0xUZXh0dXJlPiBjcmVhdGUoV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Kik7CiAgICAgCisgICAgICAgIC8vIEZvciBxdWVyeWluZyBwcmV2
aW91c2x5IGNyZWF0ZWQgb2JqZWN0cyB2aWEgZS5nLiBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQ
YXJhbWV0ZXIKKyAgICAgICAgLy8gRklYTUU6IHNob3VsZCBjb25zaWRlciBjYW5vbmljYWxpemlu
ZyB0aGVzZSBvYmplY3RzCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkdMVGV4dHVyZT4g
Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCosIFBsYXRmb3JtM0RPYmplY3QpOworCiAgICAg
ICAgIGJvb2wgaXNDdWJlTWFwUldyYXBNb2RlSW5pdGlhbGl6ZWQoKSB7CiAgICAgICAgICAgICBy
ZXR1cm4gY3ViZU1hcFJXcmFwTW9kZUluaXRpYWxpemVkOwogICAgICAgICB9CkBAIC00OSw2ICs1
Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgV2Vi
R0xUZXh0dXJlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCopOworICAgICAgICBXZWJHTFRleHR1cmUo
V2ViR0xSZW5kZXJpbmdDb250ZXh0KiwgUGxhdGZvcm0zRE9iamVjdCk7CiAKICAgICAgICAgdmly
dHVhbCB2b2lkIF9kZWxldGVPYmplY3QoUGxhdGZvcm0zRE9iamVjdCk7CiAKSW5kZXg6IFdlYkNv
cmUvbWFudWFsLXRlc3RzL3dlYmdsL3Jlc291cmNlcy91dGlsczNkLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvbWFudWFsLXRlc3RzL3dlYmdsL3Jlc291cmNlcy91dGlsczNkLmpzCShyZXZpc2lv
biA1MTM0MSkKKysrIFdlYkNvcmUvbWFudWFsLXRlc3RzL3dlYmdsL3Jlc291cmNlcy91dGlsczNk
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIGZ1bmN0aW9uIGluaXRXZWJHTChj
YW52YXNOYW1lLCB2c2hhZGVyLCAKICAgICBnbC5saW5rUHJvZ3JhbShnbC5wcm9ncmFtKTsKIAog
ICAgIC8vIENoZWNrIHRoZSBsaW5rIHN0YXR1cwotICAgIHZhciBsaW5rZWQgPSBnbC5nZXRQcm9n
cmFtaShnbC5wcm9ncmFtLCBnbC5MSU5LX1NUQVRVUyk7CisgICAgdmFyIGxpbmtlZCA9IGdsLmdl
dFByb2dyYW1QYXJhbWV0ZXIoZ2wucHJvZ3JhbSwgZ2wuTElOS19TVEFUVVMpOwogICAgIGlmICgh
bGlua2VkKSB7CiAgICAgICAgIC8vIHNvbWV0aGluZyB3ZW50IHdyb25nIHdpdGggdGhlIGxpbmsK
ICAgICAgICAgdmFyIGVycm9yID0gZ2wuZ2V0UHJvZ3JhbUluZm9Mb2cgKGdsLnByb2dyYW0pOwpA
QCAtMTA1LDcgKzEwNSw3IEBAIGZ1bmN0aW9uIGxvYWRTaGFkZXIoY3R4LCBzaGFkZXJJZCkKICAg
ICBjdHguY29tcGlsZVNoYWRlcihzaGFkZXIpOwogCiAgICAgLy8gQ2hlY2sgdGhlIGNvbXBpbGUg
c3RhdHVzCi0gICAgdmFyIGNvbXBpbGVkID0gY3R4LmdldFNoYWRlcmkoc2hhZGVyLCBjdHguQ09N
UElMRV9TVEFUVVMpOworICAgIHZhciBjb21waWxlZCA9IGN0eC5nZXRTaGFkZXJQYXJhbWV0ZXIo
c2hhZGVyLCBjdHguQ09NUElMRV9TVEFUVVMpOwogICAgIGlmICghY29tcGlsZWQpIHsKICAgICAg
ICAgLy8gU29tZXRoaW5nIHdlbnQgd3JvbmcgZHVyaW5nIGNvbXBpbGF0aW9uOyBnZXQgdGhlIGVy
cm9yCiAgICAgICAgIHZhciBlcnJvciA9IGN0eC5nZXRTaGFkZXJJbmZvTG9nKHNoYWRlcik7CkBA
IC01MjgsNCArNTI4LDMgQEAgRnJhbWVyYXRlLnByb3RvdHlwZS5zbmFwc2hvdCA9IGZ1bmN0aW9u
KAogICAgICAgICB0aGlzLnJlbmRlclRpbWUgPSBuZXdUaW1lOwogICAgIH0KIH0KLQpJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAkocmV2aXNp
b24gNTEzNDEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNE
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1OCwyNiArNDU4LDI1IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogICAgICAgICBpbnQgIGdldEF0dHJpYkxvY2F0aW9uKFdlYkdMUHJvZ3JhbSosIGNvbnN0
IFN0cmluZyYgbmFtZSk7CiAKLSAgICAgICAgYm9vbCBnZXRCb29sZWFuKHVuc2lnbmVkIGxvbmcg
cG5hbWUpOwotICAgICAgICBQYXNzUmVmUHRyPFdlYkdMVW5zaWduZWRCeXRlQXJyYXk+IGdldEJv
b2xlYW52KHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBpbnQgZ2V0QnVmZmVyUGFyYW1l
dGVyaSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAg
IFBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gZ2V0QnVmZmVyUGFyYW1ldGVyaXYodW5zaWduZWQg
bG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOworICAgICAgICB2b2lkIGdldEJvb2xl
YW52KHVuc2lnbmVkIGxvbmcgcG5hbWUsIHVuc2lnbmVkIGNoYXIqIHZhbHVlKTsKKworICAgICAg
ICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25l
ZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKTsKIAogICAgICAgICB1bnNpZ25lZCBsb25nIGdldEVy
cm9yKCk7CiAKLSAgICAgICAgZmxvYXQgZ2V0RmxvYXQodW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0g
ICAgICAgIFBhc3NSZWZQdHI8V2ViR0xGbG9hdEFycmF5PiBnZXRGbG9hdHYodW5zaWduZWQgbG9u
ZyBwbmFtZSk7Ci0gICAgICAgIGludCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJp
KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIHVuc2lnbmVk
IGxvbmcgcG5hbWUpOwotICAgICAgICBQYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IGdldEZyYW1l
YnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25l
ZCBsb25nIGF0dGFjaG1lbnQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBpbnQgZ2V0
SW50ZWdlcih1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgUGFzc1JlZlB0cjxXZWJHTElu
dEFycmF5PiBnZXRJbnRlZ2Vydih1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgaW50IGdl
dFByb2dyYW1pKFdlYkdMUHJvZ3JhbSosIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBQ
YXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IGdldFByb2dyYW1pdihXZWJHTFByb2dyYW0qLCB1bnNp
Z25lZCBsb25nIHBuYW1lKTsKKyAgICAgICAgdm9pZCBnZXRGbG9hdHYodW5zaWduZWQgbG9uZyBw
bmFtZSwgZmxvYXQqIHZhbHVlKTsKKworICAgICAgICB2b2lkIGdldEZyYW1lYnVmZmVyQXR0YWNo
bWVudFBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGF0dGFj
aG1lbnQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIGludCogdmFsdWUpOworCisgICAgICAgIHZvaWQg
Z2V0SW50ZWdlcnYodW5zaWduZWQgbG9uZyBwbmFtZSwgaW50KiB2YWx1ZSk7CisKKyAgICAgICAg
dm9pZCBnZXRQcm9ncmFtaXYoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCB1bnNpZ25lZCBsb25nIHBu
YW1lLCBpbnQqIHZhbHVlKTsKKwogICAgICAgICBTdHJpbmcgZ2V0UHJvZ3JhbUluZm9Mb2coV2Vi
R0xQcm9ncmFtKik7Ci0gICAgICAgIGludCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKHVuc2ln
bmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgUGFzc1JlZlB0
cjxXZWJHTEludEFycmF5PiBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdih1bnNpZ25lZCBsb25n
IHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIGludCBnZXRTaGFkZXJpKFdl
YkdMU2hhZGVyKiwgdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFBhc3NSZWZQdHI8V2Vi
R0xJbnRBcnJheT4gZ2V0U2hhZGVyaXYoV2ViR0xTaGFkZXIqLCB1bnNpZ25lZCBsb25nIHBuYW1l
KTsKKworICAgICAgICB2b2lkIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KHVuc2lnbmVkIGxv
bmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKTsKKworICAgICAgICB2
b2lkIGdldFNoYWRlcml2KFdlYkdMU2hhZGVyKiwgdW5zaWduZWQgbG9uZyBwbmFtZSwgaW50KiB2
YWx1ZSk7CiAKICAgICAgICAgU3RyaW5nIGdldFNoYWRlckluZm9Mb2coV2ViR0xTaGFkZXIqKTsK
IApAQCAtNDg2LDI0ICs0ODUsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIFN0
cmluZyBnZXRTaGFkZXJTb3VyY2UoV2ViR0xTaGFkZXIqKTsKICAgICAgICAgU3RyaW5nIGdldFN0
cmluZyh1bnNpZ25lZCBsb25nIG5hbWUpOwotICAgICAgICAKLSAgICAgICAgZmxvYXQgZ2V0VGV4
UGFyYW1ldGVyZih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0g
ICAgICAgIFBhc3NSZWZQdHI8V2ViR0xGbG9hdEFycmF5PiBnZXRUZXhQYXJhbWV0ZXJmdih1bnNp
Z25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIGludCBnZXRU
ZXhQYXJhbWV0ZXJpKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKTsK
LSAgICAgICAgUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBnZXRUZXhQYXJhbWV0ZXJpdih1bnNp
Z25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0KLSAgICAgICAgZmxvYXQg
Z2V0VW5pZm9ybWYoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uKTsKLSAgICAg
ICAgUGFzc1JlZlB0cjxXZWJHTEZsb2F0QXJyYXk+IGdldFVuaWZvcm1mdihXZWJHTFByb2dyYW0q
IHByb2dyYW0sIGxvbmcgbG9jYXRpb24pOwotICAgICAgICBpbnQgZ2V0VW5pZm9ybWkoV2ViR0xQ
cm9ncmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uKTsKLSAgICAgICAgUGFzc1JlZlB0cjxXZWJH
TEludEFycmF5PiBnZXRVbmlmb3JtaXYoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0
aW9uKTsKKworICAgICAgICB2b2lkIGdldFRleFBhcmFtZXRlcmZ2KHVuc2lnbmVkIGxvbmcgdGFy
Z2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBmbG9hdCogdmFsdWUpOworICAgICAgICB2b2lkIGdl
dFRleFBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1l
LCBpbnQqIHZhbHVlKTsKKworICAgICAgICB2b2lkIGdldFVuaWZvcm1mdihXZWJHTFByb2dyYW0q
IHByb2dyYW0sIGxvbmcgbG9jYXRpb24sIGZsb2F0KiB2YWx1ZSk7CisgICAgICAgIHZvaWQgZ2V0
VW5pZm9ybWl2KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBsb2NhdGlvbiwgaW50KiB2YWx1
ZSk7CiAKICAgICAgICAgbG9uZyBnZXRVbmlmb3JtTG9jYXRpb24oV2ViR0xQcm9ncmFtKiwgY29u
c3QgU3RyaW5nJiBuYW1lKTsKIAotICAgICAgICBmbG9hdCBnZXRWZXJ0ZXhBdHRyaWJmKHVuc2ln
bmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBQYXNzUmVmUHRy
PFdlYkdMRmxvYXRBcnJheT4gZ2V0VmVydGV4QXR0cmliZnYodW5zaWduZWQgbG9uZyBpbmRleCwg
dW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIGludCBnZXRWZXJ0ZXhBdHRyaWJpKHVuc2ln
bmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBQYXNzUmVmUHRy
PFdlYkdMSW50QXJyYXk+IGdldFZlcnRleEF0dHJpYml2KHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVu
c2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICAKKyAgICAgICAgdm9pZCBnZXRWZXJ0ZXhBdHRy
aWJmdih1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBmbG9hdCogdmFs
dWUpOworICAgICAgICB2b2lkIGdldFZlcnRleEF0dHJpYml2KHVuc2lnbmVkIGxvbmcgaW5kZXgs
IHVuc2lnbmVkIGxvbmcgcG5hbWUsIGludCogdmFsdWUpOworCiAgICAgICAgIGxvbmcgZ2V0VmVy
dGV4QXR0cmliT2Zmc2V0KHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUp
OwogCiAgICAgICAgIHZvaWQgaGludCh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9u
ZyBtb2RlKTsKQEAgLTY0Myw0ICs2MzYsMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBHcmFwaGljc0NvbnRleHQzRF9oCi0KSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRl
eHQzRE1hYy5jcHAJKHJldmlzaW9uIDUxMzQxKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzcsNyAr
Mjc3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmluZEZyYW1lYnVmZmVyKAogdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6YmluZFJlbmRlcmJ1ZmZlcih1bnNpZ25lZCBsb25nIHRhcmdldCwg
V2ViR0xSZW5kZXJidWZmZXIqIHJlbmRlcmJ1ZmZlcikKIHsKICAgICBlbnN1cmVDb250ZXh0KG1f
Y29udGV4dE9iaik7Ci0gICAgOjpnbEJpbmRCdWZmZXIodGFyZ2V0LCByZW5kZXJidWZmZXIgPyAo
R0x1aW50KSByZW5kZXJidWZmZXItPm9iamVjdCgpIDogMCk7CisgICAgOjpnbEJpbmRSZW5kZXJi
dWZmZXJFWFQodGFyZ2V0LCByZW5kZXJidWZmZXIgPyAoR0x1aW50KSByZW5kZXJidWZmZXItPm9i
amVjdCgpIDogMCk7CiB9CiAKIApAQCAtOTUyLDMyMSArOTUyLDQwIEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OnZpZXdwb3J0KGxvbmcgeCwKICAgICA6OmdsVmlld3BvcnQoc3RhdGljX2Nhc3Q8
R0xpbnQ+KHgpLCBzdGF0aWNfY2FzdDxHTGludD4oeSksIHN0YXRpY19jYXN0PEdMc2l6ZWk+KHdp
ZHRoKSwgc3RhdGljX2Nhc3Q8R0xzaXplaT4oaGVpZ2h0KSk7CiB9CiAKLXN0YXRpYyBpbnQgc2l6
ZUZvckdldFBhcmFtKHVuc2lnbmVkIGxvbmcgcG5hbWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpnZXRCb29sZWFudih1bnNpZ25lZCBsb25nIHBuYW1lLCB1bnNpZ25lZCBjaGFyKiB2YWx1ZSkK
IHsKLSAgICBzd2l0Y2gocG5hbWUpIHsKLSAgICAgICAgY2FzZSBHTF9BQ1RJVkVfVEVYVFVSRTog
ICAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9BTElBU0VEX0xJTkVf
V0lEVEhfUkFOR0U6ICAgICAgICByZXR1cm4gMjsKLSAgICAgICAgY2FzZSBHTF9BTElBU0VEX1BP
SU5UX1NJWkVfUkFOR0U6ICAgICAgICByZXR1cm4gMjsKLSAgICAgICAgY2FzZSBHTF9BTFBIQV9C
SVRTOiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9BUlJB
WV9CVUZGRVJfQklORElORzogICAgICAgICAgICByZXR1cm4gMTsgLy8gKCogYWN0dWFsbHkgYSBX
ZWJHTEJ1ZmZlciopCi0gICAgICAgIGNhc2UgR0xfQkxFTkQ6ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfQkxFTkRfQ09MT1I6ICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIDQ7Ci0gICAgICAgIGNhc2UgR0xfQkxFTkRfRFNUX0FMUEhBOiAgICAg
ICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfQkxFTkRfRFNUX1JHQjogICAg
ICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfQkxFTkRfRVFVQVRJT05f
QUxQSEE6ICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfQkxFTkRfRVFVQVRJ
T05fUkdCOiAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfQkxFTkRfU1JD
X0FMUEhBOiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfQkxFTkRf
U1JDX1JHQjogICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfQkxV
RV9CSVRTOiAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xf
Q09MT1JfQ0xFQVJfVkFMVUU6ICAgICAgICAgICAgICAgcmV0dXJuIDQ7Ci0gICAgICAgIGNhc2Ug
R0xfQ09MT1JfV1JJVEVNQVNLOiAgICAgICAgICAgICAgICAgcmV0dXJuIDQ7Ci0gICAgICAgIGNh
c2UgR0xfQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFM6ICAgICAgcmV0dXJuIEdMX05VTV9DT01Q
UkVTU0VEX1RFWFRVUkVfRk9STUFUUzsKLSAgICAgICAgY2FzZSBHTF9DVUxMX0ZBQ0U6ICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9DVUxMX0ZBQ0VfTU9E
RTogICAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9DVVJSRU5UX1BS
T0dSQU06ICAgICAgICAgICAgICAgICByZXR1cm4gMTsgLy8gKCogYWN0dWFsbHkgYSBXZWJHTFBy
b2dyYW0qKQotICAgICAgICBjYXNlIEdMX0RFUFRIX0JJVFM6ICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX0RFUFRIX0NMRUFSX1ZBTFVFOiAgICAgICAgICAg
ICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX0RFUFRIX0ZVTkM6ICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX0RFUFRIX1JBTkdFOiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiAyOwotICAgICAgICBjYXNlIEdMX0RFUFRIX1RFU1Q6ICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX0RFUFRIX1dSSVRFTUFTSzog
ICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX0RJVEhFUjogICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX0VMRU1FTlRfQVJS
QVlfQlVGRkVSX0JJTkRJTkc6ICAgIHJldHVybiAxOyAvLyAoKiBhY3R1YWxseSBhIFdlYkdMQnVm
ZmVyKikKLSAgICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9CSU5ESU5HX0VYVDogICAgICAgICBy
ZXR1cm4gMTsgLy8gKCogYWN0dWFsbHkgYSBXZWJHTEZyYW1lYnVmZmVyKikKLSAgICAgICAgY2Fz
ZSBHTF9GUk9OVF9GQUNFOiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAg
Y2FzZSBHTF9HRU5FUkFURV9NSVBNQVBfSElOVDogICAgICAgICAgICByZXR1cm4gMTsKLSAgICAg
ICAgY2FzZSBHTF9HUkVFTl9CSVRTOiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAg
ICAgICAgICAgIC8vY2FzZSBHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX0ZPUk1BVDpyZXR1
cm4gMTsKLSAgICAgICAgICAgIC8vY2FzZSBHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX1RZ
UEU6ICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9MSU5FX1dJRFRIOiAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9NQVhfQ09NQklORURfVEVYVFVSRV9J
TUFHRV9VTklUUzpyZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9NQVhfQ1VCRV9NQVBfVEVYVFVS
RV9TSVpFOiAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgIC8vY2FzZSBHTF9NQVhfRlJBR01F
TlRfVU5JRk9STV9WRUNUT1JTOiAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9NQVhfUkVO
REVSQlVGRkVSX1NJWkVfRVhUOiAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9NQVhf
VEVYVFVSRV9JTUFHRV9VTklUUzogICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9N
QVhfVEVYVFVSRV9TSVpFOiAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgIC8v
Y2FzZSBHTF9NQVhfVkFSWUlOR19WRUNUT1JTOiAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAg
ICAgY2FzZSBHTF9NQVhfVkVSVEVYX0FUVFJJQlM6ICAgICAgICAgICAgICByZXR1cm4gMTsKLSAg
ICAgICAgY2FzZSBHTF9NQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFM6ICByZXR1cm4gMTsK
LSAgICAgICAgICAgIC8vY2FzZSBHTF9NQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUzogICAgICBy
ZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9NQVhfVklFV1BPUlRfRElNUzogICAgICAgICAgICAg
ICByZXR1cm4gMjsKLSAgICAgICAgY2FzZSBHTF9OVU1fQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1B
VFM6ICByZXR1cm4gMTsKLSAgICAgICAgICAgIC8vY2FzZSBHTF9OVU1fU0hBREVSX0JJTkFSWV9G
T1JNQVRTOiAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9QQUNLX0FMSUdOTUVOVDog
ICAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9QT0xZR09OX09GRlNF
VF9GQUNUT1I6ICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9QT0xZR09OX09G
RlNFVF9GSUxMOiAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9QT0xZR09O
X09GRlNFVF9VTklUUzogICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9SRURf
QklUUzogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9S
RU5ERVJCVUZGRVJfQklORElOR19FWFQ6ICAgICAgICByZXR1cm4gMTsgLy8gKCogYWN0dWFsbHkg
YSBXZWJHTFJlbmRlcmJ1ZmZlciopCi0gICAgICAgIGNhc2UgR0xfU0FNUExFX0JVRkZFUlM6ICAg
ICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU0FNUExFX0NPVkVSQUdF
X0lOVkVSVDogICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU0FNUExFX0NPVkVS
QUdFX1ZBTFVFOiAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU0FNUExFUzog
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU0NJU1NP
Ul9CT1g6ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDQ7Ci0gICAgICAgIGNhc2UgR0xfU0NJ
U1NPUl9URVNUOiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICAvL2Nh
c2UgR0xfU0hBREVSX0JJTkFSWV9GT1JNQVRTOiAgICAgICAgICAgcmV0dXJuIEdMX05VTV9TSEFE
RVJfQklOQVJZX0ZPUk1BVFM7Ci0gICAgICAgICAgICAvL2Nhc2UgR0xfU0hBREVSX0NPTVBJTEVS
OiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJTF9CQUNL
X0ZBSUw6ICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJTF9C
QUNLX0ZVTkM6ICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJ
TF9CQUNLX1BBU1NfREVQVEhfRkFJTDogICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1RF
TkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTUzogICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xf
U1RFTkNJTF9CQUNLX1JFRjogICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2Ug
R0xfU1RFTkNJTF9CQUNLX1ZBTFVFX01BU0s6ICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNh
c2UgR0xfU1RFTkNJTF9CQUNLX1dSSVRFTUFTSzogICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAg
IGNhc2UgR0xfU1RFTkNJTF9CSVRTOiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAg
ICAgIGNhc2UgR0xfU1RFTkNJTF9DTEVBUl9WQUxVRTogICAgICAgICAgICAgcmV0dXJuIDE7Ci0g
ICAgICAgIGNhc2UgR0xfU1RFTkNJTF9GQUlMOiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7
Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJTF9GVU5DOiAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IDE7Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJTF9QQVNTX0RFUFRIX0ZBSUw6ICAgICAgICAgcmV0
dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJTF9QQVNTX0RFUFRIX1BBU1M6ICAgICAgICAg
cmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJTF9SRUY6ICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJTF9URVNUOiAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJTF9WQUxVRV9NQVNLOiAgICAg
ICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJTF9XUklURU1BU0s6ICAg
ICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1VCUElYRUxfQklUUzogICAg
ICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfVEVYVFVSRV9CSU5ESU5H
XzJEOiAgICAgICAgICAgICAgcmV0dXJuIDE7IC8vICgqIGFjdHVhbGx5IGEgV2ViR0xUZXh0dXJl
KikKLSAgICAgICAgY2FzZSBHTF9URVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVA6ICAgICAgICByZXR1
cm4gMTsgLy8gKCogYWN0dWFsbHkgYSBXZWJHTFRleHR1cmUqKQotICAgICAgICBjYXNlIEdMX1VO
UEFDS19BTElHTk1FTlQ6ICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdM
X1ZJRVdQT1JUOiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA0OwotICAgIH0KLSAgICAK
LSAgICByZXR1cm4gLTE7Ci19Ci0KLWJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEJvb2xlYW4o
dW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICBpbnQgc2l6ZSA9IHNpemVGb3JHZXRQYXJhbShw
bmFtZSk7Ci0gICAgaWYgKHNpemUgPCAxKSAKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCiAgICAg
ZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwotICAgIAotICAgIGJvb2wgaXNBbGxvY2VkID0g
ZmFsc2U7Ci0gICAgR0xib29sZWFuIGJ1Zls0XTsKLSAgICBHTGJvb2xlYW4qIHBidWYgPSBidWY7
Ci0gICAgICAgICAgICAKLSAgICBpZiAoc2l6ZSA+IDQpIHsKLSAgICAgICAgcGJ1ZiA9IChHTGJv
b2xlYW4qKSBtYWxsb2Moc2l6ZSAqIHNpemVvZihHTGJvb2xlYW4pKTsKLSAgICAgICAgaXNBbGxv
Y2VkID0gdHJ1ZTsKLSAgICB9Ci0gICAgICAgICAgICAKLSAgICA6OmdsR2V0Qm9vbGVhbnYocG5h
bWUsIHBidWYpOwotICAgIAotICAgIGJvb2wgdmFsdWUgPSBwYnVmWzBdOwotCi0gICAgaWYgKGlz
QWxsb2NlZCkKLSAgICAgICAgZnJlZShwYnVmKTsKLSAgICAKLSAgICByZXR1cm4gdmFsdWU7Cisg
ICAgOjpnbEdldEJvb2xlYW52KHBuYW1lLCB2YWx1ZSk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViR0xV
bnNpZ25lZEJ5dGVBcnJheT4gR3JhcGhpY3NDb250ZXh0M0Q6OmdldEJvb2xlYW52KHVuc2lnbmVk
IGxvbmcgcG5hbWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRCdWZmZXJQYXJhbWV0ZXJp
dih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgaW50KiB2YWx1ZSkK
IHsKLSAgICBpbnQgc2l6ZSA9IHNpemVGb3JHZXRQYXJhbShwbmFtZSk7Ci0gICAgaWYgKHNpemUg
PCAxKSAKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCiAgICAgZW5zdXJlQ29udGV4dChtX2NvbnRl
eHRPYmopOwotICAgIAotICAgIFJlZlB0cjxXZWJHTFVuc2lnbmVkQnl0ZUFycmF5PiBhcnJheSA9
IFdlYkdMVW5zaWduZWRCeXRlQXJyYXk6OmNyZWF0ZShzaXplKTsKLSAgICBib29sIGlzQWxsb2Nl
ZCA9IGZhbHNlOwotICAgIEdMYm9vbGVhbiBidWZbNF07Ci0gICAgR0xib29sZWFuKiBwYnVmID0g
YnVmOwotICAgICAgICAgICAgCi0gICAgaWYgKHNpemUgPiA0KSB7Ci0gICAgICAgIHBidWYgPSAo
R0xib29sZWFuKikgbWFsbG9jKHNpemUgKiBzaXplb2YoR0xib29sZWFuKSk7Ci0gICAgICAgIGlz
QWxsb2NlZCA9IHRydWU7Ci0gICAgfQotICAgICAgICAgICAgCi0gICAgOjpnbEdldEJvb2xlYW52
KHBuYW1lLCBwYnVmKTsKLSAgICAgICAgICAgIAotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6
ZTsgKytpKQotICAgICAgICBhcnJheS0+c2V0KGksIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+
KHBidWZbaV0pKTsKLSAgICAgICAgICAgIAotICAgIGlmIChpc0FsbG9jZWQpCi0gICAgICAgIGZy
ZWUocGJ1Zik7Ci0gICAgCi0gICAgcmV0dXJuIGFycmF5OworICAgIDo6Z2xHZXRCdWZmZXJQYXJh
bWV0ZXJpdih0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CiB9CiAKLWZsb2F0IEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRGbG9hdCh1bnNpZ25lZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6Z2V0RmxvYXR2KHVuc2lnbmVkIGxvbmcgcG5hbWUsIGZsb2F0KiB2YWx1ZSkKIHsKLSAgICBp
bnQgc2l6ZSA9IHNpemVGb3JHZXRQYXJhbShwbmFtZSk7Ci0gICAgaWYgKHNpemUgPCAxKSAKLSAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgCiAgICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwot
ICAgIAotICAgIGJvb2wgaXNBbGxvY2VkID0gZmFsc2U7Ci0gICAgR0xmbG9hdCBidWZbNF07Ci0g
ICAgR0xmbG9hdCogcGJ1ZiA9IGJ1ZjsKLSAgICAgICAgICAgIAotICAgIGlmIChzaXplID4gNCkg
ewotICAgICAgICBwYnVmID0gKEdMZmxvYXQqKSBtYWxsb2Moc2l6ZSAqIHNpemVvZihHTGZsb2F0
KSk7Ci0gICAgICAgIGlzQWxsb2NlZCA9IHRydWU7Ci0gICAgfQotICAgICAgICAgICAgCi0gICAg
OjpnbEdldEZsb2F0dihwbmFtZSwgcGJ1Zik7Ci0gICAgCi0gICAgZmxvYXQgdmFsdWUgPSBwYnVm
WzBdOwotCi0gICAgaWYgKGlzQWxsb2NlZCkKLSAgICAgICAgZnJlZShwYnVmKTsKLSAgICAKLSAg
ICByZXR1cm4gdmFsdWU7CisgICAgOjpnbEdldEZsb2F0dihwbmFtZSwgdmFsdWUpOwogfQogCi1Q
YXNzUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZsb2F0dih1
bnNpZ25lZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxv
bmcgYXR0YWNobWVudCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgaW50KiB2YWx1ZSkKIHsKLSAgICBp
bnQgc2l6ZSA9IHNpemVGb3JHZXRQYXJhbShwbmFtZSk7Ci0gICAgaWYgKHNpemUgPCAxKSAKLSAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgCiAgICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwot
ICAgIAotICAgIFJlZlB0cjxXZWJHTEZsb2F0QXJyYXk+IGFycmF5ID0gV2ViR0xGbG9hdEFycmF5
OjpjcmVhdGUoc2l6ZSk7Ci0gICAgYm9vbCBpc0FsbG9jZWQgPSBmYWxzZTsKLSAgICBHTGZsb2F0
IGJ1Zls0XTsKLSAgICBHTGZsb2F0KiBwYnVmID0gYnVmOwotICAgICAgICAgICAgCi0gICAgaWYg
KHNpemUgPiA0KSB7Ci0gICAgICAgIHBidWYgPSAoR0xmbG9hdCopIG1hbGxvYyhzaXplICogc2l6
ZW9mKEdMZmxvYXQpKTsKLSAgICAgICAgaXNBbGxvY2VkID0gdHJ1ZTsKLSAgICB9Ci0gICAgICAg
ICAgICAKLSAgICA6OmdsR2V0RmxvYXR2KHBuYW1lLCBwYnVmKTsKLSAgICAgICAgICAgIAotICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBhcnJheS0+c2V0KGksIHN0
YXRpY19jYXN0PGZsb2F0PihwYnVmW2ldKSk7Ci0gICAgICAgICAgICAKLSAgICBpZiAoaXNBbGxv
Y2VkKQotICAgICAgICBmcmVlKHBidWYpOwotICAgIAotICAgIHJldHVybiBhcnJheTsKKyAgICA6
OmdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZFWFQodGFyZ2V0LCBhdHRhY2ht
ZW50LCBwbmFtZSwgdmFsdWUpOwogfQogCi1pbnQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEludGVn
ZXIodW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICBpbnQgc2l6ZSA9IHNpemVGb3JHZXRQYXJh
bShwbmFtZSk7Ci0gICAgaWYgKHNpemUgPCAxKSAKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0g
ICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwotICAgIAotICAgIGJvb2wgaXNBbGxvY2Vk
ID0gZmFsc2U7Ci0gICAgR0xpbnQgYnVmWzRdOwotICAgIEdMaW50KiBwYnVmID0gYnVmOwotICAg
ICAgICAgICAgCi0gICAgaWYgKHNpemUgPiA0KSB7Ci0gICAgICAgIHBidWYgPSAoR0xpbnQqKSBt
YWxsb2Moc2l6ZSAqIHNpemVvZihHTGludCkpOwotICAgICAgICBpc0FsbG9jZWQgPSB0cnVlOwot
ICAgIH0KLSAgICAgICAgICAgIAotICAgIDo6Z2xHZXRJbnRlZ2VydihwbmFtZSwgcGJ1Zik7Ci0g
ICAgCi0gICAgaW50IHZhbHVlID0gcGJ1ZlswXTsKLQotICAgIGlmIChpc0FsbG9jZWQpCi0gICAg
ICAgIGZyZWUocGJ1Zik7Ci0gICAgCi0gICAgcmV0dXJuIHZhbHVlOwotfQotCi1QYXNzUmVmUHRy
PFdlYkdMSW50QXJyYXk+IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbnRlZ2Vydih1bnNpZ25lZCBs
b25nIHBuYW1lKQotewotICAgIGludCBzaXplID0gc2l6ZUZvckdldFBhcmFtKHBuYW1lKTsKLSAg
ICBpZiAoc2l6ZSA8IDEpIAotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBlbnN1cmVDb250
ZXh0KG1fY29udGV4dE9iaik7Ci0gICAgCi0gICAgUmVmUHRyPFdlYkdMSW50QXJyYXk+IGFycmF5
ID0gV2ViR0xJbnRBcnJheTo6Y3JlYXRlKHNpemUpOwotICAgIGJvb2wgaXNBbGxvY2VkID0gZmFs
c2U7Ci0gICAgR0xpbnQgYnVmWzRdOwotICAgIEdMaW50KiBwYnVmID0gYnVmOwotICAgICAgICAg
ICAgCi0gICAgaWYgKHNpemUgPiA0KSB7Ci0gICAgICAgIHBidWYgPSAoR0xpbnQqKSBtYWxsb2Mo
c2l6ZSAqIHNpemVvZihHTGludCkpOwotICAgICAgICBpc0FsbG9jZWQgPSB0cnVlOwotICAgIH0K
LSAgICAgICAgICAgIAotICAgIDo6Z2xHZXRJbnRlZ2VydihwbmFtZSwgcGJ1Zik7Ci0gICAgICAg
ICAgICAKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgYXJyYXkt
PnNldChpLCBzdGF0aWNfY2FzdDxpbnQ+KHBidWZbaV0pKTsKLSAgICAgICAgICAgIAotICAgIGlm
IChpc0FsbG9jZWQpCi0gICAgICAgIGZyZWUocGJ1Zik7Ci0gICAgCi0gICAgcmV0dXJuIGFycmF5
OwotfQotCi1pbnQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEJ1ZmZlclBhcmFtZXRlcmkodW5zaWdu
ZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCit2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRJbnRlZ2Vydih1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKQogewogICAg
IGVuc3VyZUNvbnRleHQobV9jb250ZXh0T2JqKTsKLSAgICBHTGludCBkYXRhOwotICAgIDo6Z2xH
ZXRCdWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmZGF0YSk7Ci0gICAgcmV0dXJuIGRh
dGE7CisgICAgOjpnbEdldEludGVnZXJ2KHBuYW1lLCB2YWx1ZSk7CiB9CiAKLVBhc3NSZWZQdHI8
V2ViR0xJbnRBcnJheT4gR3JhcGhpY3NDb250ZXh0M0Q6OmdldEJ1ZmZlclBhcmFtZXRlcml2KHVu
c2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0UHJvZ3JhbWl2KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgdW5zaWduZWQgbG9u
ZyBwbmFtZSwgaW50KiB2YWx1ZSkKIHsKICAgICBlbnN1cmVDb250ZXh0KG1fY29udGV4dE9iaik7
Ci0gICAgUmVmUHRyPFdlYkdMSW50QXJyYXk+IGFycmF5ID0gV2ViR0xJbnRBcnJheTo6Y3JlYXRl
KDEpOwotICAgIEdMaW50IGRhdGE7Ci0gICAgOjpnbEdldEJ1ZmZlclBhcmFtZXRlcml2KHRhcmdl
dCwgcG5hbWUsICZkYXRhKTsKLSAgICBhcnJheS0+c2V0KDAsIHN0YXRpY19jYXN0PGludD4oZGF0
YSkpOwotICAgIAotICAgIHJldHVybiBhcnJheTsKLX0KLQotaW50IEdyYXBoaWNzQ29udGV4dDNE
OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKHVuc2lnbmVkIGxvbmcgdGFyZ2V0
LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAg
ZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwotICAgIEdMaW50IGRhdGE7Ci0gICAgOjpnbEdl
dEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2RVhUKHRhcmdldCwgYXR0YWNobWVudCwg
cG5hbWUsICZkYXRhKTsKLSAgICByZXR1cm4gZGF0YTsKLX0KLQotUGFzc1JlZlB0cjxXZWJHTElu
dEFycmF5PiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1l
dGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgdW5z
aWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICBlbnN1cmVDb250ZXh0KG1fY29udGV4dE9iaik7Ci0g
ICAgUmVmUHRyPFdlYkdMSW50QXJyYXk+IGFycmF5ID0gV2ViR0xJbnRBcnJheTo6Y3JlYXRlKDEp
OwotICAgIEdMaW50IGRhdGE7Ci0gICAgOjpnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcml2RVhUKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsICZkYXRhKTsKLSAgICBhcnJheS0+
c2V0KDAsIHN0YXRpY19jYXN0PGludD4oZGF0YSkpOwotICAgIAotICAgIHJldHVybiBhcnJheTsK
LX0KLQotaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtaShXZWJHTFByb2dyYW0qIHBy
b2dyYW0sIHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgZW5zdXJlQ29udGV4dChtX2NvbnRl
eHRPYmopOwotICAgIEdMaW50IGRhdGE7Ci0gICAgOjpnbEdldFByb2dyYW1pdigoR0x1aW50KSBw
cm9ncmFtLT5vYmplY3QoKSwgcG5hbWUsICZkYXRhKTsKLSAgICByZXR1cm4gZGF0YTsKLX0KLQot
UGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbWl2
KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgdW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICBlbnN1
cmVDb250ZXh0KG1fY29udGV4dE9iaik7Ci0gICAgUmVmUHRyPFdlYkdMSW50QXJyYXk+IGFycmF5
ID0gV2ViR0xJbnRBcnJheTo6Y3JlYXRlKDEpOwotICAgIEdMaW50IGRhdGE7Ci0gICAgOjpnbEdl
dFByb2dyYW1pdigoR0x1aW50KSBwcm9ncmFtLT5vYmplY3QoKSwgcG5hbWUsICZkYXRhKTsKLSAg
ICBhcnJheS0+c2V0KDAsIHN0YXRpY19jYXN0PGludD4oZGF0YSkpOwotICAgIAotICAgIHJldHVy
biBhcnJheTsKKyAgICA6OmdsR2V0UHJvZ3JhbWl2KChHTHVpbnQpIHByb2dyYW0tPm9iamVjdCgp
LCBwbmFtZSwgdmFsdWUpOwogfQogCiBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dy
YW1JbmZvTG9nKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSkKQEAgLTEyODUsNDYgKzEwMDQsMTggQEAg
U3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtSW5mbwogICAgIHJldHVybiBzOwog
fQogCi1pbnQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodW5z
aWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgZW5zdXJlQ29u
dGV4dChtX2NvbnRleHRPYmopOwotICAgIEdMaW50IGRhdGE7Ci0gICAgOjpnbEdldEJ1ZmZlclBh
cmFtZXRlcml2KHRhcmdldCwgcG5hbWUsICZkYXRhKTsKLSAgICByZXR1cm4gZGF0YTsKLX0KLQot
UGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UmVuZGVyYnVm
ZmVyUGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUp
Ci17Ci0gICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwotICAgIFJlZlB0cjxXZWJHTElu
dEFycmF5PiBhcnJheSA9IFdlYkdMSW50QXJyYXk6OmNyZWF0ZSgxKTsKLSAgICBHTGludCBkYXRh
OwotICAgIDo6Z2xHZXRCdWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmZGF0YSk7Ci0g
ICAgYXJyYXktPnNldCgwLCBzdGF0aWNfY2FzdDxpbnQ+KGRhdGEpKTsKLSAgICAKLSAgICByZXR1
cm4gYXJyYXk7Ci19Ci0KLWludCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyaShXZWJHTFNo
YWRlciogc2hhZGVyLCB1bnNpZ25lZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2ln
bmVkIGxvbmcgcG5hbWUsIGludCogdmFsdWUpCiB7Ci0gICAgQVNTRVJUKHNoYWRlcik7Ci0gICAg
CiAgICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwotICAgIEdMaW50IGRhdGE7Ci0gICAg
OjpnbEdldFNoYWRlcml2KChHTHVpbnQpIHNoYWRlci0+b2JqZWN0KCksIHBuYW1lLCAmZGF0YSk7
Ci0gICAgcmV0dXJuIGRhdGE7CisgICAgOjpnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2RVhU
KHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBH
cmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyaXYoV2ViR0xTaGFkZXIqIHNoYWRlciwgdW5zaWdu
ZWQgbG9uZyBwbmFtZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlcml2KFdlYkdM
U2hhZGVyKiBzaGFkZXIsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIGludCogdmFsdWUpCiB7CiAgICAg
QVNTRVJUKHNoYWRlcik7CiAgICAgCiAgICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwot
ICAgIFJlZlB0cjxXZWJHTEludEFycmF5PiBhcnJheSA9IFdlYkdMSW50QXJyYXk6OmNyZWF0ZSgx
KTsKLSAgICBHTGludCBkYXRhOwotICAgIDo6Z2xHZXRTaGFkZXJpdigoR0x1aW50KSBzaGFkZXIt
Pm9iamVjdCgpLCBwbmFtZSwgJmRhdGEpOwotICAgIGFycmF5LT5zZXQoMCwgc3RhdGljX2Nhc3Q8
aW50PihkYXRhKSk7Ci0gICAgCi0gICAgcmV0dXJuIGFycmF5OworICAgIDo6Z2xHZXRTaGFkZXJp
digoR0x1aW50KSBzaGFkZXItPm9iamVjdCgpLCBwbmFtZSwgdmFsdWUpOwogfQogCiBTdHJpbmcg
R3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlckluZm9Mb2coV2ViR0xTaGFkZXIqIHNoYWRlcikK
QEAgLTEzNjAsNzggKzEwNTEsMjggQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFk
ZXJTb3VyYwogfQogCiAKLWZsb2F0IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRUZXhQYXJhbWV0ZXJm
KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0VGV4UGFyYW1ldGVyZnYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2ln
bmVkIGxvbmcgcG5hbWUsIGZsb2F0KiB2YWx1ZSkKIHsKICAgICBlbnN1cmVDb250ZXh0KG1fY29u
dGV4dE9iaik7Ci0gICAgR0xmbG9hdCBkYXRhOwotICAgIDo6Z2xHZXRUZXhQYXJhbWV0ZXJmdih0
YXJnZXQsIHBuYW1lLCAmZGF0YSk7Ci0gICAgcmV0dXJuIGRhdGE7CisgICAgOjpnbEdldFRleFBh
cmFtZXRlcmZ2KHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJHTEZs
b2F0QXJyYXk+IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRUZXhQYXJhbWV0ZXJmdih1bnNpZ25lZCBs
b25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmdldFRleFBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBu
YW1lLCBpbnQqIHZhbHVlKQogewogICAgIGVuc3VyZUNvbnRleHQobV9jb250ZXh0T2JqKTsKLSAg
ICBSZWZQdHI8V2ViR0xGbG9hdEFycmF5PiBhcnJheSA9IFdlYkdMRmxvYXRBcnJheTo6Y3JlYXRl
KDEpOwotICAgIEdMZmxvYXQgZGF0YTsKLSAgICA6OmdsR2V0VGV4UGFyYW1ldGVyZnYodGFyZ2V0
LCBwbmFtZSwgJmRhdGEpOwotICAgIGFycmF5LT5zZXQoMCwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRh
dGEpKTsKLSAgICAKLSAgICByZXR1cm4gYXJyYXk7CisgICAgOjpnbEdldFRleFBhcmFtZXRlcml2
KHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKIH0KIAotaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRU
ZXhQYXJhbWV0ZXJpKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKQor
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWZ2KFdlYkdMUHJvZ3JhbSogcHJvZ3Jh
bSwgbG9uZyBsb2NhdGlvbiwgZmxvYXQqIHZhbHVlKQogewogICAgIGVuc3VyZUNvbnRleHQobV9j
b250ZXh0T2JqKTsKLSAgICBHTGludCBkYXRhOwotICAgIDo6Z2xHZXRUZXhQYXJhbWV0ZXJpdih0
YXJnZXQsIHBuYW1lLCAmZGF0YSk7Ci0gICAgcmV0dXJuIGRhdGE7CisgICAgOjpnbEdldFVuaWZv
cm1mdigoR0x1aW50KSBwcm9ncmFtLT5vYmplY3QoKSwgbG9jYXRpb24sIHZhbHVlKTsKIH0KIAot
UGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VGV4UGFyYW1l
dGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCit2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtaXYoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBsb25n
IGxvY2F0aW9uLCBpbnQqIHZhbHVlKQogewogICAgIGVuc3VyZUNvbnRleHQobV9jb250ZXh0T2Jq
KTsKLSAgICBSZWZQdHI8V2ViR0xJbnRBcnJheT4gYXJyYXkgPSBXZWJHTEludEFycmF5OjpjcmVh
dGUoMSk7Ci0gICAgR0xpbnQgZGF0YTsKLSAgICA6OmdsR2V0VGV4UGFyYW1ldGVyaXYodGFyZ2V0
LCBwbmFtZSwgJmRhdGEpOwotICAgIGFycmF5LT5zZXQoMCwgc3RhdGljX2Nhc3Q8aW50PihkYXRh
KSk7Ci0gICAgCi0gICAgcmV0dXJuIGFycmF5OwotfQotCi1mbG9hdCBHcmFwaGljc0NvbnRleHQz
RDo6Z2V0VW5pZm9ybWYoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uKQotewot
ICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIHF1ZXJ5IGdsR2V0VW5pZm9ybUxvY2F0aW9uIHRvIGRl
dGVybWluZSB0aGUgc2l6ZSBuZWVkZWQKLSAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7Ci0gICAg
VU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVy
biAwOwotfQotCi1QYXNzUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gR3JhcGhpY3NDb250ZXh0M0Q6
OmdldFVuaWZvcm1mdihXZWJHTFByb2dyYW0qIHByb2dyYW0sIGxvbmcgbG9jYXRpb24pCi17Ci0g
ICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gcXVlcnkgZ2xHZXRVbmlmb3JtTG9jYXRpb24gdG8gZGV0
ZXJtaW5lIHRoZSBzaXplIG5lZWRlZAotICAgIFVOVVNFRF9QQVJBTShwcm9ncmFtKTsKLSAgICBV
TlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJu
IDA7Ci19Ci0KLWludCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWkoV2ViR0xQcm9ncmFt
KiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uKQotewotICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIHF1
ZXJ5IGdsR2V0VW5pZm9ybUxvY2F0aW9uIHRvIGRldGVybWluZSB0aGUgc2l6ZSBuZWVkZWQKLSAg
ICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOwotfQotCi1QYXNzUmVmUHRyPFdlYkdM
SW50QXJyYXk+IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtaXYoV2ViR0xQcm9ncmFtKiBw
cm9ncmFtLCBsb25nIGxvY2F0aW9uKQotewotICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIHF1ZXJ5
IGdsR2V0VW5pZm9ybUxvY2F0aW9uIHRvIGRldGVybWluZSB0aGUgc2l6ZSBuZWVkZWQKLSAgICBV
TlVTRURfUEFSQU0ocHJvZ3JhbSk7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAgIDo6Z2xHZXRVbmlmb3JtaXYoKEdM
dWludCkgcHJvZ3JhbS0+b2JqZWN0KCksIGxvY2F0aW9uLCB2YWx1ZSk7CiB9CiAKIGxvbmcgR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1Mb2NhdGlvbihXZWJHTFByb2dyYW0qIHByb2dyYW0s
IGNvbnN0IFN0cmluZyYgbmFtZSkKQEAgLTE0NDIsNzEgKzEwODMsMTYgQEAgbG9uZyBHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0VW5pZm9ybUxvY2F0aQogICAgIHJldHVybiA6OmdsR2V0VW5pZm9ybUxv
Y2F0aW9uKChHTHVpbnQpIHByb2dyYW0tPm9iamVjdCgpLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwog
fQogCi1zdGF0aWMgaW50IHNpemVGb3JHZXRWZXJ0ZXhBdHRyaWJQYXJhbSh1bnNpZ25lZCBsb25n
IHBuYW1lKQotewotICAgIHN3aXRjaChwbmFtZSkgewotICAgICAgICBjYXNlIEdMX1ZFUlRFWF9B
VFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkc6ICAgICByZXR1cm4gMTsgLy8gKCogYWN0dWFsbHkg
YSBXZWJHTEJ1ZmZlciopCi0gICAgICAgIGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFC
TEVEOiAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJf
QVJSQVlfU0laRTogICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9WRVJU
RVhfQVRUUklCX0FSUkFZX1NUUklERTogICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNh
c2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFOiAgICAgICAgICAgICAgIHJldHVybiAxOwot
ICAgICAgICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfTk9STUFMSVpFRDogICAgICAgICBy
ZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9DVVJSRU5UX1ZFUlRFWF9BVFRSSUI6ICAgICAgICAg
ICAgICAgICAgcmV0dXJuIDQ7Ci0gICAgfQotICAgIAotICAgIHJldHVybiAtMTsKLX0KLQotZmxv
YXQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYmYodW5zaWduZWQgbG9uZyBpbmRl
eCwgdW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICBlbnN1cmVDb250ZXh0KG1fY29udGV4dE9i
aik7Ci0gICAgR0xmbG9hdCBidWZbNF07Ci0gICAgOjpnbEdldFZlcnRleEF0dHJpYmZ2KGluZGV4
LCBwbmFtZSwgYnVmKTsKLSAgICByZXR1cm4gYnVmWzBdOwotfQotCi1QYXNzUmVmUHRyPFdlYkdM
RmxvYXRBcnJheT4gR3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYmZ2KHVuc2lnbmVk
IGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpnZXRWZXJ0ZXhBdHRyaWJmdih1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBu
YW1lLCBmbG9hdCogdmFsdWUpCiB7Ci0gICAgaW50IHNpemUgPSBzaXplRm9yR2V0VmVydGV4QXR0
cmliUGFyYW0ocG5hbWUpOwotICAgIGlmIChzaXplIDwgMSkgCi0gICAgICAgIHJldHVybiAwOwot
ICAgIAogICAgIGVuc3VyZUNvbnRleHQobV9jb250ZXh0T2JqKTsKLSAgICAKLSAgICBSZWZQdHI8
V2ViR0xGbG9hdEFycmF5PiBhcnJheSA9IFdlYkdMRmxvYXRBcnJheTo6Y3JlYXRlKHNpemUpOwot
ICAgIEdMZmxvYXQgYnVmWzRdOwotICAgIDo6Z2xHZXRWZXJ0ZXhBdHRyaWJmdihpbmRleCwgcG5h
bWUsIGJ1Zik7Ci0gICAgICAgICAgICAKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsr
aSkKLSAgICAgICAgYXJyYXktPnNldChpLCBzdGF0aWNfY2FzdDxmbG9hdD4oYnVmW2ldKSk7Ci0g
ICAgCi0gICAgcmV0dXJuIGFycmF5OworICAgIDo6Z2xHZXRWZXJ0ZXhBdHRyaWJmdihpbmRleCwg
cG5hbWUsIHZhbHVlKTsKIH0KIAotaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRy
aWJpKHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCit2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJpdih1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNp
Z25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKQogewogICAgIGVuc3VyZUNvbnRleHQobV9jb250
ZXh0T2JqKTsKLSAgICBHTGludCBidWZbNF07Ci0gICAgOjpnbEdldFZlcnRleEF0dHJpYml2KGlu
ZGV4LCBwbmFtZSwgYnVmKTsKLSAgICByZXR1cm4gYnVmWzBdOwotfQotCi1QYXNzUmVmUHRyPFdl
YkdMSW50QXJyYXk+IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJpdih1bnNpZ25l
ZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBuYW1lKQotewotICAgIGludCBzaXplID0gc2l6
ZUZvckdldFZlcnRleEF0dHJpYlBhcmFtKHBuYW1lKTsKLSAgICBpZiAoc2l6ZSA8IDEpIAotICAg
ICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBlbnN1cmVDb250ZXh0KG1fY29udGV4dE9iaik7Ci0g
ICAgCi0gICAgUmVmUHRyPFdlYkdMSW50QXJyYXk+IGFycmF5ID0gV2ViR0xJbnRBcnJheTo6Y3Jl
YXRlKHNpemUpOwotICAgIEdMaW50IGJ1Zls0XTsKLSAgICA6OmdsR2V0VmVydGV4QXR0cmliaXYo
aW5kZXgsIHBuYW1lLCBidWYpOwotICAgICAgICAgICAgCi0gICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBzaXplOyArK2kpCi0gICAgICAgIGFycmF5LT5zZXQoaSwgc3RhdGljX2Nhc3Q8aW50PihidWZb
aV0pKTsKLSAgICAKLSAgICByZXR1cm4gYXJyYXk7CisgICAgOjpnbEdldFZlcnRleEF0dHJpYml2
KGluZGV4LCBwbmFtZSwgdmFsdWUpOwogfQogCiBsb25nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRW
ZXJ0ZXhBdHRyaWJPZmZzZXQodW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQgbG9uZyBwbmFt
ZSkKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTEzNDEpCisrKyBXZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDcgQEAKKzIwMDktMTEtMjMgIEtl
bm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSBnZXQuLi4gY2FsbHMgdG8gbGF0ZXN0IHNw
ZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMDkx
CisKKyAgICAgICAgUmVtb3ZlZCBvbGQgdmVyc2lvbnMgb2YgZ2V0IGNhbGxzIG9uIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dCBhbmQKKyAgICAgICAgYWRkZWQgbmV3IG9uZXMgcGVyIHNwZWMgcmV0dXJu
aW5nICJhbnkiLiBOZXcgY29kZSBzaW1wbGlmaWVzCisgICAgICAgIEdyYXBoaWNzQ29udGV4dDNE
IGFuZCBmaXhlcyBwcmV2aW91c2x5IHVuaW1wbGVtZW50ZWQgcm91dGluZXMuCisgICAgICAgIEFk
ZGVkIGN1c3RvbSBKUyBhbmQgVjggYmluZGluZ3MuIEFkZGVkIGV4aGF1c3RpdmUgdGVzdCBjYXNl
CisgICAgICAgIGV4ZXJjaXNpbmcgYWxsIG5ldyBjb2RlIHBhdGhzLiBVcGRhdGVkIHByZWV4aXN0
aW5nIHRlc3QgY2FzZXMgZm9yCisgICAgICAgIG5ldyBBUElzLiBGaXhlZCBwcmVleGlzdGluZyBi
dWdzIGluIFdlYktpdCdzIGFuZCBDaHJvbWUncyBXZWJHTAorICAgICAgICBpbXBsZW1lbnRhdGlv
bnMuCisKKyAgICAgICAgUmFuIFdlYkdMIGxheW91dCB0ZXN0cyBpbiBXZWJLaXQgKGNsZWFuKSBh
bmQgQ2hyb21lIChjb3VwbGUgb2YKKyAgICAgICAgcHJlZXhpc3Rpbmcga25vd24gZmFpbHVyZXMp
IGFuZCBtYW51YWwgV2ViR0wgdGVzdHMgaW4gYm90aAorICAgICAgICBicm93c2Vycy4KKworICAg
ICAgICBUZXN0OiBmYXN0L2NhbnZhcy93ZWJnbC9nbC1vYmplY3QtZ2V0LWNhbGxzLmh0bWwKKwor
ICAgICAgICAqIHNyYy9HcmFwaGljc0NvbnRleHQzRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0Qm9vbGVhbnYpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEJ1ZmZlclBhcmFtZXRlcml2KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRGbG9hdHYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbnRlZ2Vydik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbWl2KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJp
dik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyaXYpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFRleFBhcmFtZXRlcmZ2KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRUZXhQYXJhbWV0ZXJpdik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWZ2KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtaXYpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYmZ2KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJpdik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6aXNGcmFtZWJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6aXNSZW5kZXJidWZmZXIpOgorCiAyMDA5LTEx
LTI0ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGltaXRyaSBHbGF6a292LgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0Nv
bnRleHQzRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0Nv
bnRleHQzRC5jcHAJKHJldmlzaW9uIDUxMzQxKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFw
aGljc0NvbnRleHQzRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3NCwxOSArNzc0LDYgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpiZWdpblBhaQogI2VuZGlmICAvLyBSRU5ERVJf
VE9fREVCVUdHSU5HX1dJTkRPVwogfQogCi1ib29sIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OnZhbGlkYXRlVGV4dHVyZVRhcmdldChpbnQgdGFyZ2V0KQotewotICAgIHJldHVybiAodGFyZ2V0
ID09IEdMX1RFWFRVUkVfMkQgfHwgdGFyZ2V0ID09IEdMX1RFWFRVUkVfQ1VCRV9NQVApOwotfQot
Ci1ib29sIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnZhbGlkYXRlVGV4dHVyZVBhcmFtZXRl
cihpbnQgcGFyYW0pCi17Ci0gICAgcmV0dXJuIChwYXJhbSA9PSBHTF9URVhUVVJFX01BR19GSUxU
RVIKLSAgICAgICAgIHx8IHBhcmFtID09IEdMX1RFWFRVUkVfTUlOX0ZJTFRFUgotICAgICAgICAg
fHwgcGFyYW0gPT0gR0xfVEVYVFVSRV9XUkFQX1MKLSAgICAgICAgIHx8IHBhcmFtID09IEdMX1RF
WFRVUkVfV1JBUF9UKTsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjphY3Rp
dmVUZXh0dXJlKHVuc2lnbmVkIGxvbmcgdGV4dHVyZSkKIHsKICAgICAvLyBGSVhNRTogcXVlcnkg
bnVtYmVyIG9mIHRleHR1cmVzIGF2YWlsYWJsZS4KQEAgLTExMDUsOCArMTA5Miw4IEBAIHVuc2ln
bmVkIEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVCdWZmZXIKIHVuc2lnbmVkIEdyYXBoaWNzQ29u
dGV4dDNEOjpjcmVhdGVGcmFtZWJ1ZmZlcigpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
Ci0gICAgR0x1aW50IG87Ci0gICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJm8pOworICAgIEdMdWlu
dCBvID0gMDsKKyAgICBnbEdlbkZyYW1lYnVmZmVyc0VYVCgxLCAmbyk7CiAgICAgcmV0dXJuIG87
CiB9CiAKQEAgLTExMjAsNyArMTEwNyw3IEBAIHVuc2lnbmVkIEdyYXBoaWNzQ29udGV4dDNEOjpj
cmVhdGVSZW5kZXIKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBHTHVpbnQgbzsK
LSAgICBnbEdlblJlbmRlcmJ1ZmZlcnMoMSwgJm8pOworICAgIGdsR2VuUmVuZGVyYnVmZmVyc0VY
VCgxLCAmbyk7CiAgICAgcmV0dXJuIG87CiB9CiAKQEAgLTExNDcsNyArMTEzNCw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZUJ1ZmZlcih1bnMKIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmRlbGV0ZUZyYW1lYnVmZmVyKHVuc2lnbmVkIGZyYW1lYnVmZmVyKQogewogICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOwotICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzKDEsICZmcmFtZWJ1ZmZl
cik7CisgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnNFWFQoMSwgJmZyYW1lYnVmZmVyKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlUHJvZ3JhbSh1bnNpZ25lZCBwcm9ncmFtKQpA
QCAtMTE1OSw3ICsxMTQ2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlUHJvZ3Jh
bSh1bgogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlUmVuZGVyYnVmZmVyKHVuc2lnbmVk
IHJlbmRlcmJ1ZmZlcikKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICBnbERlbGV0
ZVJlbmRlcmJ1ZmZlcnMoMSwgJnJlbmRlcmJ1ZmZlcik7CisgICAgZ2xEZWxldGVSZW5kZXJidWZm
ZXJzRVhUKDEsICZyZW5kZXJidWZmZXIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpk
ZWxldGVTaGFkZXIodW5zaWduZWQgc2hhZGVyKQpAQCAtMTE5Nyw5ICsxMTg0LDkgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6YmluZEJ1ZmZlcih1bnNpZwogICAgIG1faW50ZXJuYWwtPmJpbmRC
dWZmZXIodGFyZ2V0LCBidWZmZXIpOwogfQogCi1HTF9TQU1FX01FVEhPRF8yX1gyKEJpbmRGcmFt
ZWJ1ZmZlciwgYmluZEZyYW1lYnVmZmVyLCB1bnNpZ25lZCBsb25nLCBXZWJHTEZyYW1lYnVmZmVy
KikKK0dMX1NBTUVfTUVUSE9EXzJfWDIoQmluZEZyYW1lYnVmZmVyRVhULCBiaW5kRnJhbWVidWZm
ZXIsIHVuc2lnbmVkIGxvbmcsIFdlYkdMRnJhbWVidWZmZXIqKQogCi1HTF9TQU1FX01FVEhPRF8y
X1gyKEJpbmRSZW5kZXJidWZmZXIsIGJpbmRSZW5kZXJidWZmZXIsIHVuc2lnbmVkIGxvbmcsIFdl
YkdMUmVuZGVyYnVmZmVyKikKK0dMX1NBTUVfTUVUSE9EXzJfWDIoQmluZFJlbmRlcmJ1ZmZlckVY
VCwgYmluZFJlbmRlcmJ1ZmZlciwgdW5zaWduZWQgbG9uZywgV2ViR0xSZW5kZXJidWZmZXIqKQog
CiAvLyBJZiB3ZSBkaWRuJ3QgaGF2ZSB0byBoYWNrIEdMX1RFWFRVUkVfV1JBUF9SIGZvciBjdWJl
IG1hcHMsCiAvLyB3ZSBjb3VsZCBqdXN0IHVzZToKQEAgLTEyNTMsNyArMTI0MCw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmJ1ZmZlclN1YkRhdGEodW4KIHVuc2lnbmVkIGxvbmcgR3JhcGhp
Y3NDb250ZXh0M0Q6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXModW5zaWduZWQgbG9uZyB0YXJnZXQp
CiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgcmV0dXJuIGdsQ2hlY2tGcmFtZWJ1
ZmZlclN0YXR1cyh0YXJnZXQpOworICAgIHJldHVybiBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXNF
WFQodGFyZ2V0KTsKIH0KIAogR0xfU0FNRV9NRVRIT0RfMShDbGVhciwgY2xlYXIsIHVuc2lnbmVk
IGxvbmcpCkBAIC0xMzU2LDkgKzEzNDMsOSBAQCBHTF9TQU1FX01FVEhPRF8wKEZpbmlzaCwgZmlu
aXNoKQogCiBHTF9TQU1FX01FVEhPRF8wKEZsdXNoLCBmbHVzaCkKIAotR0xfU0FNRV9NRVRIT0Rf
NF9YNChGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciwgZnJhbWVidWZmZXJSZW5kZXJidWZmZXIsIHVu
c2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIFdlYkdMUmVuZGVyYnVm
ZmVyKikKK0dMX1NBTUVfTUVUSE9EXzRfWDQoRnJhbWVidWZmZXJSZW5kZXJidWZmZXJFWFQsIGZy
YW1lYnVmZmVyUmVuZGVyYnVmZmVyLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNp
Z25lZCBsb25nLCBXZWJHTFJlbmRlcmJ1ZmZlciopCiAKLUdMX1NBTUVfTUVUSE9EXzVfWDQoRnJh
bWVidWZmZXJUZXh0dXJlMkQsIGZyYW1lYnVmZmVyVGV4dHVyZTJELCB1bnNpZ25lZCBsb25nLCB1
bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCBXZWJHTFRleHR1cmUqLCBsb25nKQorR0xfU0FN
RV9NRVRIT0RfNV9YNChGcmFtZWJ1ZmZlclRleHR1cmUyREVYVCwgZnJhbWVidWZmZXJUZXh0dXJl
MkQsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIFdlYkdMVGV4
dHVyZSosIGxvbmcpCiAKIEdMX1NBTUVfTUVUSE9EXzEoRnJvbnRGYWNlLCBmcm9udEZhY2UsIHVu
c2lnbmVkIGxvbmcpCiAKQEAgLTE0MzUsMzUgKzE0MjIsMTYgQEAgaW50IEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRBdHRyaWJMb2NhdGlvbgogICAgIHJldHVybiBnbEdldEF0dHJpYkxvY2F0aW9uKEVY
VFJBQ1QocHJvZ3JhbSksIG5hbWUudXRmOCgpLmRhdGEoKSk7CiB9CiAKLWJvb2wgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldEJvb2xlYW4odW5zaWduZWQgbG9uZyBwbmFtZSkKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldEJvb2xlYW52KHVuc2lnbmVkIGxvbmcgcG5hbWUsIHVuc2lnbmVkIGNoYXIq
IHZhbHVlKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIEdMYm9vbGVhbiB2YWw7
Ci0gICAgLy8gRklYTUU6IHZhbGlkYXRlIHBuYW1lIHRvIGVuc3VyZSBpdCByZXR1cm5zIG9ubHkg
YSBzaW5nbGUgdmFsdWUuCi0gICAgZ2xHZXRCb29sZWFudihwbmFtZSwgJnZhbCk7Ci0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PGJvb2w+KHZhbCk7CisgICAgZ2xHZXRCb29sZWFudihwbmFtZSwgdmFs
dWUpOwogfQogCi1QYXNzUmVmUHRyPFdlYkdMVW5zaWduZWRCeXRlQXJyYXk+IEdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRCb29sZWFudih1bnNpZ25lZCBsb25nIHBuYW1lKQotewotICAgIC8vIEZJWE1F
OiBpbXBsZW1lbnQuCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQot
aW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRCdWZmZXJQYXJhbWV0ZXJpKHVuc2lnbmVkIGxvbmcg
dGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
QnVmZmVyUGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5h
bWUsIGludCogdmFsdWUpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgR0xpbnQg
ZGF0YTsKLSAgICBnbEdldEJ1ZmZlclBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsICZkYXRhKTsK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihkYXRhKTsKLX0KLQotUGFzc1JlZlB0cjxXZWJH
TEludEFycmF5PiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QnVmZmVyUGFyYW1ldGVyaXYodW5zaWdu
ZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgLy8gRklYTUU6IGlt
cGxlbWVudC4KLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAgIGdsR2V0
QnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgdmFsdWUpOwogfQogCiB1bnNpZ25lZCBs
b25nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRFcnJvcigpCkBAIC0xNDcyLDcyICsxNDQwLDMzIEBA
IHVuc2lnbmVkIGxvbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEVycm8KICAgICByZXR1cm4gZ2xH
ZXRFcnJvcigpOwogfQogCi1mbG9hdCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RmxvYXQodW5zaWdu
ZWQgbG9uZyBwbmFtZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZsb2F0dih1bnNpZ25l
ZCBsb25nIHBuYW1lLCBmbG9hdCogdmFsdWUpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
Ci0gICAgR0xmbG9hdCB2YWw7Ci0gICAgLy8gRklYTUU6IHZhbGlkYXRlIHBuYW1lIHRvIGVuc3Vy
ZSBpdCByZXR1cm5zIG9ubHkgYSBzaW5nbGUgdmFsdWUuCi0gICAgZ2xHZXRGbG9hdHYocG5hbWUs
ICZ2YWwpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4odmFsKTsKKyAgICBnbEdldEZs
b2F0dihwbmFtZSwgdmFsdWUpOwogfQogCi1QYXNzUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldEZsb2F0dih1bnNpZ25lZCBsb25nIHBuYW1lKQotewotICAgIC8v
IEZJWE1FOiBpbXBsZW1lbnQuCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsK
LX0KLQotaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJh
bWV0ZXJpKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RnJhbWVi
dWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBsb25nIGF0dGFjaG1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHBuYW1lLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KiB2
YWx1ZSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICBHTGludCBkYXRhOwotICAg
IGdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYodGFyZ2V0LCBhdHRhY2htZW50
LCBwbmFtZSwgJmRhdGEpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGRhdGEpOwotfQot
Ci1QYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRGcmFtZWJ1
ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdldCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVt
ZW50LgotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgZ2xHZXRGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdkVYVCh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1l
LCB2YWx1ZSk7CiB9CiAKLWludCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW50ZWdlcih1bnNpZ25l
ZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW50ZWdlcnYodW5zaWdu
ZWQgbG9uZyBwbmFtZSwgaW50KiB2YWx1ZSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
LSAgICBHTGludCB2YWw7Ci0gICAgLy8gRklYTUU6IHZhbGlkYXRlIHBuYW1lIHRvIGVuc3VyZSBp
dCByZXR1cm5zIG9ubHkgYSBzaW5nbGUgdmFsdWUuCi0gICAgZ2xHZXRJbnRlZ2VydihwbmFtZSwg
JnZhbCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4odmFsKTsKLX0KLQotUGFzc1JlZlB0
cjxXZWJHTEludEFycmF5PiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW50ZWdlcnYodW5zaWduZWQg
bG9uZyBwbmFtZSkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50LgotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgZ2xHZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUpOwog
fQogCi1pbnQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1pKFdlYkdMUHJvZ3JhbSogcHJv
Z3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBw
bmFtZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1pdihXZWJHTFByb2dyYW0q
IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
bG9uZyBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIHZh
bHVlKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIEdMaW50IHBhcmFtOwotICAg
IGdsR2V0UHJvZ3JhbWl2KEVYVFJBQ1QocHJvZ3JhbSksIHBuYW1lLCAmcGFyYW0pOwotICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxpbnQ+KHBhcmFtKTsKLX0KLQotUGFzc1JlZlB0cjxXZWJHTEludEFy
cmF5PiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbWl2KFdlYkdMUHJvZ3JhbSogcHJvZ3Jh
bSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50Lgot
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgZ2xHZXRQcm9ncmFtaXYo
RVhUUkFDVChwcm9ncmFtKSwgcG5hbWUsIHZhbHVlKTsKIH0KIAogU3RyaW5nIEdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRQcm9ncmFtSW5mb0xvZyhXZWJHTFByb2dyYW0qIHByb2dyYW0pCkBAIC0xNTU5
LDM4ICsxNDg4LDIwIEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbUluZm8K
ICAgICByZXR1cm4gcmVzOwogfQogCi1pbnQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFJlbmRlcmJ1
ZmZlclBhcmFtZXRlcmkodW5zaWduZWQgbG9uZyB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBwbmFtZSkKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KHVuc2lnbmVkIGxv
bmcgdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgbG9uZyBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCogdmFsdWUpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7Ci0gICAgR0xpbnQgcGFyYW07Ci0gICAgZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJp
dih0YXJnZXQsIHBuYW1lLCAmcGFyYW0pOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHBh
cmFtKTsKLX0KLQotUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBHcmFwaGljc0NvbnRleHQzRDo6
Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50
LgotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgZ2xHZXRSZW5kZXJi
dWZmZXJQYXJhbWV0ZXJpdkVYVCh0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CiB9CiAKLWludCBHcmFw
aGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyaShXZWJHTFNoYWRlciogc2hhZGVyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgcG5hbWUpCit2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRTaGFkZXJpdihXZWJHTFNoYWRlciogc2hhZGVyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBwbmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCogdmFsdWUpCiB7CiAgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7Ci0gICAgR0xpbnQgcGFyYW07Ci0gICAgZ2xHZXRTaGFkZXJpdihFWFRSQUNU
KHNoYWRlciksIHBuYW1lLCAmcGFyYW0pOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHBh
cmFtKTsKLX0KLQotUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBHcmFwaGljc0NvbnRleHQzRDo6
Z2V0U2hhZGVyaXYoV2ViR0xTaGFkZXIqIHNoYWRlciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHBuYW1lKQot
ewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQuCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBy
ZXR1cm4gMDsKKyAgICBnbEdldFNoYWRlcml2KEVYVFJBQ1Qoc2hhZGVyKSwgcG5hbWUsIHZhbHVl
KTsKIH0KIAogU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJJbmZvTG9nKFdlYkdM
U2hhZGVyKiBzaGFkZXIpCkBAIC0xNjM3LDgyICsxNTQ4LDI4IEBAIFN0cmluZyBHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0U3RyaW5nKHVuc2kKICAgICByZXR1cm4gU3RyaW5nKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgY2hhcio+KGdsR2V0U3RyaW5nKG5hbWUpKSk7CiB9CiAKLWZsb2F0IEdyYXBoaWNz
Q29udGV4dDNEOjpnZXRUZXhQYXJhbWV0ZXJmKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25l
ZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VGV4UGFyYW1ldGVyZnYo
dW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIGZsb2F0KiB2YWx1ZSkK
IHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICBpZiAoIW1faW50ZXJuYWwtPnZhbGlk
YXRlVGV4dHVyZVRhcmdldCh0YXJnZXQpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiB0aHJvdyBleGNl
cHRpb24uCi0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIGlmICghbV9pbnRlcm5hbC0+
dmFsaWRhdGVUZXh0dXJlUGFyYW1ldGVyKHBuYW1lKSkgewotICAgICAgICAvLyBGSVhNRTogdGhy
b3cgZXhjZXB0aW9uLgotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBHTGZsb2F0IHBh
cmFtOwotICAgIGdsR2V0VGV4UGFyYW1ldGVyZnYodGFyZ2V0LCBwbmFtZSwgJnBhcmFtKTsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHBhcmFtKTsKLX0KLQotUGFzc1JlZlB0cjxXZWJH
TEZsb2F0QXJyYXk+IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRUZXhQYXJhbWV0ZXJmdih1bnNpZ25l
ZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICAvLyBGSVhNRTogaW1w
bGVtZW50LgotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgZ2xHZXRU
ZXhQYXJhbWV0ZXJmdih0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CiB9CiAKLWludCBHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0VGV4UGFyYW1ldGVyaSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQg
bG9uZyBwbmFtZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFRleFBhcmFtZXRlcml2KHVu
c2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKQogewog
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIGlmICghbV9pbnRlcm5hbC0+dmFsaWRhdGVU
ZXh0dXJlVGFyZ2V0KHRhcmdldCkpIHsKLSAgICAgICAgLy8gRklYTUU6IHRocm93IGV4Y2VwdGlv
bi4KLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgaWYgKCFtX2ludGVybmFsLT52YWxp
ZGF0ZVRleHR1cmVQYXJhbWV0ZXIocG5hbWUpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiB0aHJvdyBl
eGNlcHRpb24uCi0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIEdMaW50IHBhcmFtOwot
ICAgIGdsR2V0VGV4UGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgJnBhcmFtKTsKLSAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8aW50PihwYXJhbSk7Ci19Ci0KLVBhc3NSZWZQdHI8V2ViR0xJbnRBcnJh
eT4gR3JhcGhpY3NDb250ZXh0M0Q6OmdldFRleFBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFy
Z2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQuCi0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICBnbEdldFRleFBhcmFtZXRl
cml2KHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKIH0KIAotZmxvYXQgR3JhcGhpY3NDb250ZXh0M0Q6
OmdldFVuaWZvcm1mKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBsb2NhdGlvbikKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1mdihXZWJHTFByb2dyYW0qIHByb2dyYW0sIGxv
bmcgbG9jYXRpb24sIGZsb2F0KiB2YWx1ZSkKIHsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50Lgot
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLVBhc3NSZWZQdHI8V2Vi
R0xGbG9hdEFycmF5PiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWZ2KFdlYkdMUHJvZ3Jh
bSogcHJvZ3JhbSwgbG9uZyBsb2NhdGlvbikKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50Lgot
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWludCBHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0VW5pZm9ybWkoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0aW9u
KQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQuCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAg
ICByZXR1cm4gMDsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBnbEdldFVuaWZvcm1m
dihFWFRSQUNUKHByb2dyYW0pLCBsb2NhdGlvbiwgdmFsdWUpOwogfQogCi1QYXNzUmVmUHRyPFdl
YkdMSW50QXJyYXk+IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtaXYoV2ViR0xQcm9ncmFt
KiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5p
Zm9ybWl2KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBsb2NhdGlvbiwgaW50KiB2YWx1ZSkK
IHsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50LgotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAg
cmV0dXJuIDA7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgZ2xHZXRVbmlmb3JtaXYo
RVhUUkFDVChwcm9ncmFtKSwgbG9jYXRpb24sIHZhbHVlKTsKIH0KIAogbG9uZyBHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0VW5pZm9ybUxvY2F0aW9uKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgY29uc3Qg
U3RyaW5nJiBuYW1lKQpAQCAtMTcyNCwzNiArMTU4MSwyMCBAQCBsb25nIEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRVbmlmb3JtTG9jYXRpCiAgICAgcmV0dXJuIGdsR2V0VW5pZm9ybUxvY2F0aW9uKEVY
VFJBQ1QocHJvZ3JhbSksIG5hbWUudXRmOCgpLmRhdGEoKSk7CiB9CiAKLWZsb2F0IEdyYXBoaWNz
Q29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJmKHVuc2lnbmVkIGxvbmcgaW5kZXgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHBuYW1lKQot
ewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQuCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBy
ZXR1cm4gMDsKLX0KLQotUGFzc1JlZlB0cjxXZWJHTEZsb2F0QXJyYXk+IEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRWZXJ0ZXhBdHRyaWJmdih1bnNpZ25lZCBsb25nIGluZGV4LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgbG9uZyBwbmFtZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJp
YmZ2KHVuc2lnbmVkIGxvbmcgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBsb25nIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmxvYXQqIHZhbHVlKQogewotICAgIC8vIEZJWE1FOiBpbXBsZW1l
bnQuCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotaW50IEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJpKHVuc2lnbmVkIGxvbmcgaW5kZXgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBwbmFtZSkK
LXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50LgotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAg
cmV0dXJuIDA7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgZ2xHZXRWZXJ0ZXhBdHRy
aWJmdihpbmRleCwgcG5hbWUsIHZhbHVlKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJHTEludEFycmF5
PiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliaXYodW5zaWduZWQgbG9uZyBpbmRl
eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
Z2V0VmVydGV4QXR0cmliaXYodW5zaWduZWQgbG9uZyBpbmRleCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgcG5hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIHZhbHVlKQogewotICAgIC8vIEZJ
WE1FOiBpbXBsZW1lbnQuCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBnbEdldFZlcnRleEF0dHJpYml2KGluZGV4LCBw
bmFtZSwgdmFsdWUpOwogfQogCiBsb25nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRy
aWJPZmZzZXQodW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQgbG9uZyBwbmFtZSkKQEAgLTE3
ODAsNyArMTYyMSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmlzRW5hYmxlZCh1bnNpZ24K
IGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmlzRnJhbWVidWZmZXIoV2ViR0xGcmFtZWJ1ZmZlciog
ZnJhbWVidWZmZXIpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgcmV0dXJuIGds
SXNGcmFtZWJ1ZmZlcihFWFRSQUNUKGZyYW1lYnVmZmVyKSk7CisgICAgcmV0dXJuIGdsSXNGcmFt
ZWJ1ZmZlckVYVChFWFRSQUNUKGZyYW1lYnVmZmVyKSk7CiB9CiAKIGJvb2wgR3JhcGhpY3NDb250
ZXh0M0Q6OmlzUHJvZ3JhbShXZWJHTFByb2dyYW0qIHByb2dyYW0pCkBAIC0xNzkyLDcgKzE2MzMs
NyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjppc1Byb2dyYW0oV2ViR0xQCiBib29sIEdyYXBo
aWNzQ29udGV4dDNEOjppc1JlbmRlcmJ1ZmZlcihXZWJHTFJlbmRlcmJ1ZmZlciogcmVuZGVyYnVm
ZmVyKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIHJldHVybiBnbElzUmVuZGVy
YnVmZmVyKEVYVFJBQ1QocmVuZGVyYnVmZmVyKSk7CisgICAgcmV0dXJuIGdsSXNSZW5kZXJidWZm
ZXJFWFQoRVhUUkFDVChyZW5kZXJidWZmZXIpKTsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHQz
RDo6aXNTaGFkZXIoV2ViR0xTaGFkZXIqIHNoYWRlcikKQEAgLTE4NDEsNyArMTY4Miw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlbGVhc2VTaGFkZXJDb20KIHsKIH0KIAotR0xfU0FNRV9N
RVRIT0RfNChSZW5kZXJidWZmZXJTdG9yYWdlLCByZW5kZXJidWZmZXJTdG9yYWdlLCB1bnNpZ25l
ZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKQorR0xf
U0FNRV9NRVRIT0RfNChSZW5kZXJidWZmZXJTdG9yYWdlRVhULCByZW5kZXJidWZmZXJTdG9yYWdl
LCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBs
b25nKQogCiBHTF9TQU1FX01FVEhPRF8yKFNhbXBsZUNvdmVyYWdlLCBzYW1wbGVDb3ZlcmFnZSwg
ZG91YmxlLCBib29sKQogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1MTM0MSkKKysrIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzIEBACisyMDA5LTExLTIzICBL
ZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgZ2V0Li4uIGNhbGxzIHRvIGxhdGVzdCBz
cGVjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDA5
MQorCisgICAgICAgIFJlbW92ZWQgb2xkIHZlcnNpb25zIG9mIGdldCBjYWxscyBvbiBXZWJHTFJl
bmRlcmluZ0NvbnRleHQgYW5kCisgICAgICAgIGFkZGVkIG5ldyBvbmVzIHBlciBzcGVjIHJldHVy
bmluZyAiYW55Ii4gTmV3IGNvZGUgc2ltcGxpZmllcworICAgICAgICBHcmFwaGljc0NvbnRleHQz
RCBhbmQgZml4ZXMgcHJldmlvdXNseSB1bmltcGxlbWVudGVkIHJvdXRpbmVzLgorICAgICAgICBB
ZGRlZCBjdXN0b20gSlMgYW5kIFY4IGJpbmRpbmdzLiBBZGRlZCBleGhhdXN0aXZlIHRlc3QgY2Fz
ZQorICAgICAgICBleGVyY2lzaW5nIGFsbCBuZXcgY29kZSBwYXRocy4gVXBkYXRlZCBwcmVleGlz
dGluZyB0ZXN0IGNhc2VzIGZvcgorICAgICAgICBuZXcgQVBJcy4gRml4ZWQgcHJlZXhpc3Rpbmcg
YnVncyBpbiBXZWJLaXQncyBhbmQgQ2hyb21lJ3MgV2ViR0wKKyAgICAgICAgaW1wbGVtZW50YXRp
b25zLgorCisgICAgICAgIFJhbiBXZWJHTCBsYXlvdXQgdGVzdHMgaW4gV2ViS2l0IChjbGVhbikg
YW5kIENocm9tZSAoY291cGxlIG9mCisgICAgICAgIHByZWV4aXN0aW5nIGtub3duIGZhaWx1cmVz
KSBhbmQgbWFudWFsIFdlYkdMIHRlc3RzIGluIGJvdGgKKyAgICAgICAgYnJvd3NlcnMuCisKKyAg
ICAgICAgVGVzdDogZmFzdC9jYW52YXMvd2ViZ2wvZ2wtb2JqZWN0LWdldC1jYWxscy5odG1sCisK
KyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9nbC1nZXQtY2FsbHMtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2dsLWdldC1jYWxscy5odG1sOgorICAgICAgICAq
IGZhc3QvY2FudmFzL3dlYmdsL2dsLW9iamVjdC1nZXQtY2FsbHMtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9nbC1vYmplY3QtZ2V0LWNhbGxzLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2luY29ycmVjdC1jb250ZXh0LW9i
amVjdC1iZWhhdmlvdXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmds
L251bGwtb2JqZWN0LWJlaGF2aW91ci1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9jYW52
YXMvd2ViZ2wvcmVzb3VyY2VzL2Jvb2xVbmlmb3JtU2hhZGVyLnZlcnQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy9mbG9hdFVuaWZvcm1TaGFkZXIudmVydDog
QWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL2ludFVuaWZvcm1T
aGFkZXIudmVydDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2Vz
L21hdFVuaWZvcm1TaGFkZXIudmVydDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvd2Vi
Z2wvcmVzb3VyY2VzL25vb3BVbmlmb3JtU2hhZGVyLmZyYWc6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy91dGlsczNkLmpzOgorICAgICAgICAoaW5pdFdlYkdM
KToKKyAgICAgICAgKGxvYWRTaGFkZXIpOgorICAgICAgICAoRnJhbWVyYXRlLnByb3RvdHlwZS5z
bmFwc2hvdCk6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsLXRl
c3QuanM6CisgICAgICAgIChsb2FkUHJvZ3JhbSk6CisgICAgICAgIChsb2FkU3RhbmRhcmRWZXJ0
ZXhTaGFkZXIpOgorICAgICAgICAobG9hZFZlcnRleFNoYWRlcik6CisgICAgICAgIChsb2FkU3Rh
bmRhcmRGcmFnbWVudFNoYWRlcik6CisgICAgICAgIChsb2FkRnJhZ21lbnRTaGFkZXIpOgorICAg
ICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9nbC1vYmplY3QtZ2V0LWNhbGxz
LmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvaW5j
b3JyZWN0LWNvbnRleHQtb2JqZWN0LWJlaGF2aW91ci5qczoKKyAgICAgICAgKiBmYXN0L2NhbnZh
cy93ZWJnbC9zY3JpcHQtdGVzdHMvbnVsbC1vYmplY3QtYmVoYXZpb3VyLmpzOgorICAgICAgICAq
IGZhc3QvY2FudmFzL3dlYmdsL3RyaWFuZ2xlLmh0bWw6CisgICAgICAgICogZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanM6CisgICAgICAgIChzaG91bGRCZU5vblplcm8pOgorICAgICAg
ICAoc2hvdWxkQmVOb25OdWxsKToKKwogMjAwOS0xMS0yMyAgQ2hyaXMgTWFycmluICA8Y21hcnJp
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC1nZXQtY2FsbHMtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLWdldC1jYWxscy1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDUxMzQxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
d2ViZ2wvZ2wtZ2V0LWNhbGxzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTMsNjAg
KzEzLDYxIEBAIENvbnRleHQgY29udGFpbnMgZ2V0RXJyb3IKIFBBU1MgY29udGV4dCBjb250YWlu
cyBnZXRFcnJvcgogCiBDaGVjayBkZWZhdWx0IHZhbHVlcwotUEFTUyBjb250ZXh0LmdldEludGVn
ZXIoY29udGV4dC5BQ1RJVkVfVEVYVFVSRSkgaXMgY29udGV4dC5URVhUVVJFMAotUEFTUyBjb250
ZXh0LmdldEludGVnZXIoY29udGV4dC5BTElBU0VEX0xJTkVfV0lEVEhfUkFOR0UpIGlzIDEKLVBB
U1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFKSBp
cyAxCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkFSUkFZX0JVRkZFUl9CSU5ESU5H
KSBpcyAwCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkJMRU5EKSBpcyAwCi1QQVNT
IGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkJMRU5EX0NPTE9SKSBpcyAwCi1QQVNTIGNvbnRl
eHQuZ2V0SW50ZWdlcihjb250ZXh0LkJMRU5EX0RTVF9BTFBIQSkgaXMgMAotUEFTUyBjb250ZXh0
LmdldEludGVnZXIoY29udGV4dC5CTEVORF9EU1RfUkdCKSBpcyAwCi1QQVNTIGNvbnRleHQuZ2V0
SW50ZWdlcihjb250ZXh0LkJMRU5EX0VRVUFUSU9OX0FMUEhBKSBpcyBjb250ZXh0LkZVTkNfQURE
Ci1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkJMRU5EX0VRVUFUSU9OX1JHQikgaXMg
Y29udGV4dC5GVU5DX0FERAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5CTEVORF9T
UkNfQUxQSEEpIGlzIDEKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuQkxFTkRfU1JD
X1JHQikgaXMgMQotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5DT0xPUl9DTEVBUl9W
QUxVRSkgaXMgMAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5DT0xPUl9XUklURU1B
U0spIGlzIDEKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuQ1VMTF9GQUNFKSBpcyAw
Ci1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkNVTExfRkFDRV9NT0RFKSBpcyBjb250
ZXh0LkJBQ0sKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuQ1VSUkVOVF9QUk9HUkFN
KSBpcyAwCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkRFUFRIX0ZVTkMpIGlzIGNv
bnRleHQuTEVTUwotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5ERVBUSF9SQU5HRSkg
aXMgMAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5ERVBUSF9URVNUKSBpcyAwCi1Q
QVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkRFUFRIX1dSSVRFTUFTSykgaXMgMQotUEFT
UyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5ESVRIRVIpIGlzIDEKLVBBU1MgY29udGV4dC5n
ZXRJbnRlZ2VyKGNvbnRleHQuRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElORykgaXMgMAotUEFT
UyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5GUk9OVF9GQUNFKSBpcyBjb250ZXh0LkNDVwot
UEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5HRU5FUkFURV9NSVBNQVBfSElOVCkgaXMg
Y29udGV4dC5ET05UX0NBUkUKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuTElORV9X
SURUSCkgaXMgMQotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5QT0xZR09OX09GRlNF
VF9GQUNUT1IpIGlzIDAKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuUE9MWUdPTl9P
RkZTRVRfRklMTCkgaXMgMAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5QT0xZR09O
X09GRlNFVF9VTklUUykgaXMgMAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5SRU5E
RVJCVUZGRVJfQklORElOR19FWFQpIGlzIDAKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRl
eHQuU0FNUExFX0NPVkVSQUdFX0lOVkVSVCkgaXMgMAotUEFTUyBjb250ZXh0LmdldEludGVnZXIo
Y29udGV4dC5TQU1QTEVfQ09WRVJBR0VfVkFMVUUpIGlzIDEKLVBBU1MgY29udGV4dC5nZXRJbnRl
Z2VyKGNvbnRleHQuU0NJU1NPUl9CT1gpIGlzIDAKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNv
bnRleHQuU0NJU1NPUl9URVNUKSBpcyAwCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0
LlNURU5DSUxfQkFDS19GQUlMKSBpcyBjb250ZXh0LktFRVAKLVBBU1MgY29udGV4dC5nZXRJbnRl
Z2VyKGNvbnRleHQuU1RFTkNJTF9CQUNLX0ZVTkMpIGlzIGNvbnRleHQuQUxXQVlTCi1QQVNTIGNv
bnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlNURU5DSUxfQkFDS19QQVNTX0RFUFRIX0ZBSUwpIGlz
IGNvbnRleHQuS0VFUAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVOQ0lMX0JB
Q0tfUEFTU19ERVBUSF9QQVNTKSBpcyBjb250ZXh0LktFRVAKLVBBU1MgY29udGV4dC5nZXRJbnRl
Z2VyKGNvbnRleHQuU1RFTkNJTF9CQUNLX1JFRikgaXMgMAotUEFTUyBjb250ZXh0LmdldEludGVn
ZXIoY29udGV4dC5TVEVOQ0lMX0JBQ0tfVkFMVUVfTUFTSykgaXMgLTEKLVBBU1MgY29udGV4dC5n
ZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9CQUNLX1dSSVRFTUFTSykgaXMgLTEKLVBBU1MgY29u
dGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9CSVRTKSBpcyAwCi1QQVNTIGNvbnRleHQu
Z2V0SW50ZWdlcihjb250ZXh0LlNURU5DSUxfQ0xFQVJfVkFMVUUpIGlzIDAKLVBBU1MgY29udGV4
dC5nZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9GQUlMKSBpcyBjb250ZXh0LktFRVAKLVBBU1Mg
Y29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9GVU5DKSBpcyBjb250ZXh0LkFMV0FZ
UwotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVOQ0lMX1BBU1NfREVQVEhfRkFJ
TCkgaXMgY29udGV4dC5LRUVQCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlNURU5D
SUxfUEFTU19ERVBUSF9QQVNTKSBpcyBjb250ZXh0LktFRVAKLVBBU1MgY29udGV4dC5nZXRJbnRl
Z2VyKGNvbnRleHQuU1RFTkNJTF9SRUYpIGlzIDAKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNv
bnRleHQuU1RFTkNJTF9URVNUKSBpcyAwCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0
LlNURU5DSUxfVkFMVUVfTUFTSykgaXMgLTEKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRl
eHQuU1RFTkNJTF9XUklURU1BU0spIGlzIC0xCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250
ZXh0LlRFWFRVUkVfQklORElOR18yRCkgaXMgMAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29u
dGV4dC5URVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVApIGlzIDAKLVBBU1MgY29udGV4dC5nZXRJbnRl
Z2VyKGNvbnRleHQuVklFV1BPUlQpIGlzIDAKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29u
dGV4dC5BQ1RJVkVfVEVYVFVSRSkgaXMgY29udGV4dC5URVhUVVJFMAorUEFTUyAoY29udGV4dC5n
ZXRQYXJhbWV0ZXIoY29udGV4dC5BTElBU0VEX0xJTkVfV0lEVEhfUkFOR0UpWzBdID09IDEpIHx8
IChjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkFMSUFTRURfTElORV9XSURUSF9SQU5HRSlb
MV0gPT0gMSkgaXMgdHJ1ZQorUEFTUyAoY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5BTElB
U0VEX1BPSU5UX1NJWkVfUkFOR0UpWzBdID09IDEpIHx8IChjb250ZXh0LmdldFBhcmFtZXRlcihj
b250ZXh0LkFMSUFTRURfUE9JTlRfU0laRV9SQU5HRSlbMV0gPT0gMSkgaXMgdHJ1ZQorUEFTUyBj
b250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkFSUkFZX0JVRkZFUl9CSU5ESU5HKSBpcyBudWxs
CitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQkxFTkQpIGlzIGZhbHNlCitQQVNT
IGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQkxFTkRfQ09MT1IpIGlzIFswLCAwLCAwLCAw
XQorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkJMRU5EX0RTVF9BTFBIQSkgaXMg
MAorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkJMRU5EX0RTVF9SR0IpIGlzIDAK
K1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5CTEVORF9FUVVBVElPTl9BTFBIQSkg
aXMgY29udGV4dC5GVU5DX0FERAorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkJM
RU5EX0VRVUFUSU9OX1JHQikgaXMgY29udGV4dC5GVU5DX0FERAorUEFTUyBjb250ZXh0LmdldFBh
cmFtZXRlcihjb250ZXh0LkJMRU5EX1NSQ19BTFBIQSkgaXMgMQorUEFTUyBjb250ZXh0LmdldFBh
cmFtZXRlcihjb250ZXh0LkJMRU5EX1NSQ19SR0IpIGlzIDEKK1BBU1MgY29udGV4dC5nZXRQYXJh
bWV0ZXIoY29udGV4dC5DT0xPUl9DTEVBUl9WQUxVRSkgaXMgWzAsIDAsIDAsIDBdCitQQVNTIGNv
bnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQ09MT1JfV1JJVEVNQVNLKSBpcyBbMSwgMSwgMSwg
MV0KK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5DVUxMX0ZBQ0UpIGlzIGZhbHNl
CitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQ1VMTF9GQUNFX01PREUpIGlzIGNv
bnRleHQuQkFDSworUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkNVUlJFTlRfUFJP
R1JBTSkgaXMgbnVsbAorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkRFUFRIX0ZV
TkMpIGlzIGNvbnRleHQuTEVTUworUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkRF
UFRIX1JBTkdFKSBpcyBbMCwgMV0KK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5E
RVBUSF9URVNUKSBpcyBmYWxzZQorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkRF
UFRIX1dSSVRFTUFTSykgaXMgdHJ1ZQorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0
LkRJVEhFUikgaXMgdHJ1ZQorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkVMRU1F
TlRfQVJSQVlfQlVGRkVSX0JJTkRJTkcpIGlzIG51bGwKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0
ZXIoY29udGV4dC5GUk9OVF9GQUNFKSBpcyBjb250ZXh0LkNDVworUEFTUyBjb250ZXh0LmdldFBh
cmFtZXRlcihjb250ZXh0LkdFTkVSQVRFX01JUE1BUF9ISU5UKSBpcyBjb250ZXh0LkRPTlRfQ0FS
RQorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkxJTkVfV0lEVEgpIGlzIDEKK1BB
U1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5QT0xZR09OX09GRlNFVF9GQUNUT1IpIGlz
IDAKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5QT0xZR09OX09GRlNFVF9GSUxM
KSBpcyBmYWxzZQorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlBPTFlHT05fT0ZG
U0VUX1VOSVRTKSBpcyAwCitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuUkVOREVS
QlVGRkVSX0JJTkRJTkcpIGlzIG51bGwKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4
dC5TQU1QTEVfQ09WRVJBR0VfSU5WRVJUKSBpcyBmYWxzZQorUEFTUyBjb250ZXh0LmdldFBhcmFt
ZXRlcihjb250ZXh0LlNBTVBMRV9DT1ZFUkFHRV9WQUxVRSkgaXMgMQorUEFTUyBjb250ZXh0Lmdl
dFBhcmFtZXRlcihjb250ZXh0LlNDSVNTT1JfQk9YKVswXSBpcyAwCitQQVNTIGNvbnRleHQuZ2V0
UGFyYW1ldGVyKGNvbnRleHQuU0NJU1NPUl9CT1gpWzFdIGlzIDAKK1BBU1MgY29udGV4dC5nZXRQ
YXJhbWV0ZXIoY29udGV4dC5TQ0lTU09SX1RFU1QpIGlzIGZhbHNlCitQQVNTIGNvbnRleHQuZ2V0
UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9CQUNLX0ZBSUwpIGlzIGNvbnRleHQuS0VFUAorUEFT
UyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5DSUxfQkFDS19GVU5DKSBpcyBjb250
ZXh0LkFMV0FZUworUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5DSUxfQkFD
S19QQVNTX0RFUFRIX0ZBSUwpIGlzIGNvbnRleHQuS0VFUAorUEFTUyBjb250ZXh0LmdldFBhcmFt
ZXRlcihjb250ZXh0LlNURU5DSUxfQkFDS19QQVNTX0RFUFRIX1BBU1MpIGlzIGNvbnRleHQuS0VF
UAorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5DSUxfQkFDS19SRUYpIGlz
IDAKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX0JBQ0tfVkFMVUVf
TUFTSykgaXMgMHhGRkZGRkZGRgorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNU
RU5DSUxfQkFDS19XUklURU1BU0spIGlzIDB4RkZGRkZGRkYKK1BBU1MgY29udGV4dC5nZXRQYXJh
bWV0ZXIoY29udGV4dC5TVEVOQ0lMX0JJVFMpIGlzIDAKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0
ZXIoY29udGV4dC5TVEVOQ0lMX0NMRUFSX1ZBTFVFKSBpcyAwCitQQVNTIGNvbnRleHQuZ2V0UGFy
YW1ldGVyKGNvbnRleHQuU1RFTkNJTF9GQUlMKSBpcyBjb250ZXh0LktFRVAKK1BBU1MgY29udGV4
dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX0ZVTkMpIGlzIGNvbnRleHQuQUxXQVlTCitQ
QVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9QQVNTX0RFUFRIX0ZBSUwp
IGlzIGNvbnRleHQuS0VFUAorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5D
SUxfUEFTU19ERVBUSF9QQVNTKSBpcyBjb250ZXh0LktFRVAKK1BBU1MgY29udGV4dC5nZXRQYXJh
bWV0ZXIoY29udGV4dC5TVEVOQ0lMX1JFRikgaXMgMAorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRl
cihjb250ZXh0LlNURU5DSUxfVEVTVCkgaXMgZmFsc2UKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0
ZXIoY29udGV4dC5TVEVOQ0lMX1ZBTFVFX01BU0spIGlzIDB4RkZGRkZGRkYKK1BBU1MgY29udGV4
dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX1dSSVRFTUFTSykgaXMgMHhGRkZGRkZGRgor
UEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlRFWFRVUkVfQklORElOR18yRCkgaXMg
bnVsbAorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlRFWFRVUkVfQklORElOR19D
VUJFX01BUCkgaXMgbnVsbAorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlZJRVdQ
T1JUKSBpcyBbMCwgMCwgMiwgMl0KIAogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQog
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC1nZXQtY2FsbHMuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC1nZXQtY2FsbHMu
aHRtbAkocmV2aXNpb24gNTEzNDEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9n
bC1nZXQtY2FsbHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNyw3ICs3LDcgQEAKIDxib2R5Pgog
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgogPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08
Y2FudmFzIGlkPSJjYW52YXMiPiA8L2NhbnZhcz4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9
IjIiIGhlaWdodD0iMiI+IDwvY2FudmFzPgogCiA8c2NyaXB0PgogCkBAIC0zOCw2MCArMzgsNjEg
QEAgZWxzZSB7CiAKICAgICBkZWJ1ZygiIik7CiAgICAgZGVidWcoIkNoZWNrIGRlZmF1bHQgdmFs
dWVzIik7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkFDVElWRV9U
RVhUVVJFKScsICdjb250ZXh0LlRFWFRVUkUwJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0
SW50ZWdlcihjb250ZXh0LkFMSUFTRURfTElORV9XSURUSF9SQU5HRSknLCAnMScpOwotICAgIHNo
b3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5BTElBU0VEX1BPSU5UX1NJWkVfUkFO
R0UpJywgJzEnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuQVJS
QVlfQlVGRkVSX0JJTkRJTkcpJywgJzAnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRl
Z2VyKGNvbnRleHQuQkxFTkQpJywgJzAnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRl
Z2VyKGNvbnRleHQuQkxFTkRfQ09MT1IpJywgJzAnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5n
ZXRJbnRlZ2VyKGNvbnRleHQuQkxFTkRfRFNUX0FMUEhBKScsICcwJyk7Ci0gICAgc2hvdWxkQmUo
J2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkJMRU5EX0RTVF9SR0IpJywgJzAnKTsKLSAgICBz
aG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuQkxFTkRfRVFVQVRJT05fQUxQSEEp
JywgJ2NvbnRleHQuRlVOQ19BREQnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2Vy
KGNvbnRleHQuQkxFTkRfRVFVQVRJT05fUkdCKScsICdjb250ZXh0LkZVTkNfQUREJyk7Ci0gICAg
c2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkJMRU5EX1NSQ19BTFBIQSknLCAn
MScpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5CTEVORF9TUkNf
UkdCKScsICcxJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkNP
TE9SX0NMRUFSX1ZBTFVFKScsICcwJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdl
cihjb250ZXh0LkNPTE9SX1dSSVRFTUFTSyknLCAnMScpOwotICAgIHNob3VsZEJlKCdjb250ZXh0
LmdldEludGVnZXIoY29udGV4dC5DVUxMX0ZBQ0UpJywgJzAnKTsKLSAgICBzaG91bGRCZSgnY29u
dGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuQ1VMTF9GQUNFX01PREUpJywgJ2NvbnRleHQuQkFDSycp
OwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5DVVJSRU5UX1BST0dS
QU0pJywgJzAnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuREVQ
VEhfRlVOQyknLCAnY29udGV4dC5MRVNTJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50
ZWdlcihjb250ZXh0LkRFUFRIX1JBTkdFKScsICcwJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQu
Z2V0SW50ZWdlcihjb250ZXh0LkRFUFRIX1RFU1QpJywgJzAnKTsKLSAgICBzaG91bGRCZSgnY29u
dGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuREVQVEhfV1JJVEVNQVNLKScsICcxJyk7Ci0gICAgc2hv
dWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkRJVEhFUiknLCAnMScpOwotICAgIHNo
b3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5FTEVNRU5UX0FSUkFZX0JVRkZFUl9C
SU5ESU5HKScsICcwJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0
LkZST05UX0ZBQ0UpJywgJ2NvbnRleHQuQ0NXJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0
SW50ZWdlcihjb250ZXh0LkdFTkVSQVRFX01JUE1BUF9ISU5UKScsICdjb250ZXh0LkRPTlRfQ0FS
RScpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5MSU5FX1dJRFRI
KScsICcxJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlBPTFlH
T05fT0ZGU0VUX0ZBQ1RPUiknLCAnMCcpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVn
ZXIoY29udGV4dC5QT0xZR09OX09GRlNFVF9GSUxMKScsICcwJyk7Ci0gICAgc2hvdWxkQmUoJ2Nv
bnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlBPTFlHT05fT0ZGU0VUX1VOSVRTKScsICcwJyk7Ci0g
ICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlJFTkRFUkJVRkZFUl9CSU5E
SU5HX0VYVCknLCAnMCcpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4
dC5TQU1QTEVfQ09WRVJBR0VfSU5WRVJUKScsICcwJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQu
Z2V0SW50ZWdlcihjb250ZXh0LlNBTVBMRV9DT1ZFUkFHRV9WQUxVRSknLCAnMScpOwotICAgIHNo
b3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TQ0lTU09SX0JPWCknLCAnMCcpOwot
ICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TQ0lTU09SX1RFU1QpJywg
JzAnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9C
QUNLX0ZBSUwpJywgJ2NvbnRleHQuS0VFUCcpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldElu
dGVnZXIoY29udGV4dC5TVEVOQ0lMX0JBQ0tfRlVOQyknLCAnY29udGV4dC5BTFdBWVMnKTsKLSAg
ICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9CQUNLX1BBU1Nf
REVQVEhfRkFJTCknLCAnY29udGV4dC5LRUVQJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0
SW50ZWdlcihjb250ZXh0LlNURU5DSUxfQkFDS19QQVNTX0RFUFRIX1BBU1MpJywgJ2NvbnRleHQu
S0VFUCcpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVOQ0lM
X0JBQ0tfUkVGKScsICcwJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250
ZXh0LlNURU5DSUxfQkFDS19WQUxVRV9NQVNLKScsICctMScpOwotICAgIHNob3VsZEJlKCdjb250
ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLKScsICctMScpOwot
ICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVOQ0lMX0JJVFMpJywg
JzAnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9D
TEVBUl9WQUxVRSknLCAnMCcpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29u
dGV4dC5TVEVOQ0lMX0ZBSUwpJywgJ2NvbnRleHQuS0VFUCcpOwotICAgIHNob3VsZEJlKCdjb250
ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVOQ0lMX0ZVTkMpJywgJ2NvbnRleHQuQUxXQVlTJyk7
Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlNURU5DSUxfUEFTU19E
RVBUSF9GQUlMKScsICdjb250ZXh0LktFRVAnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJ
bnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9QQVNTX0RFUFRIX1BBU1MpJywgJ2NvbnRleHQuS0VFUCcp
OwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVOQ0lMX1JFRikn
LCAnMCcpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVOQ0lM
X1RFU1QpJywgJzAnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQu
U1RFTkNJTF9WQUxVRV9NQVNLKScsICctMScpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldElu
dGVnZXIoY29udGV4dC5TVEVOQ0lMX1dSSVRFTUFTSyknLCAnLTEnKTsKLSAgICBzaG91bGRCZSgn
Y29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuVEVYVFVSRV9CSU5ESU5HXzJEKScsICcwJyk7Ci0g
ICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlRFWFRVUkVfQklORElOR19D
VUJFX01BUCknLCAnMCcpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4
dC5WSUVXUE9SVCknLCAnMCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihj
b250ZXh0LkFDVElWRV9URVhUVVJFKScsICdjb250ZXh0LlRFWFRVUkUwJyk7CisgICAgc2hvdWxk
QmUoJyhjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkFMSUFTRURfTElORV9XSURUSF9SQU5H
RSlbMF0gPT0gMSkgfHwgKGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQUxJQVNFRF9MSU5F
X1dJRFRIX1JBTkdFKVsxXSA9PSAxKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJyhjb250ZXh0
LmdldFBhcmFtZXRlcihjb250ZXh0LkFMSUFTRURfUE9JTlRfU0laRV9SQU5HRSlbMF0gPT0gMSkg
fHwgKGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdF
KVsxXSA9PSAxKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVy
KGNvbnRleHQuQVJSQVlfQlVGRkVSX0JJTkRJTkcpJywgJ251bGwnKTsKKyAgICBzaG91bGRCZSgn
Y29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5CTEVORCknLCAnZmFsc2UnKTsKKyAgICBzaG91
bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5CTEVORF9DT0xPUiknLCAnWzAsIDAs
IDAsIDBdJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQkxF
TkRfRFNUX0FMUEhBKScsICcwJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVy
KGNvbnRleHQuQkxFTkRfRFNUX1JHQiknLCAnMCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0Lmdl
dFBhcmFtZXRlcihjb250ZXh0LkJMRU5EX0VRVUFUSU9OX0FMUEhBKScsICdjb250ZXh0LkZVTkNf
QUREJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQkxFTkRf
RVFVQVRJT05fUkdCKScsICdjb250ZXh0LkZVTkNfQUREJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRl
eHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQkxFTkRfU1JDX0FMUEhBKScsICcxJyk7CisgICAgc2hv
dWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQkxFTkRfU1JDX1JHQiknLCAnMScp
OworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkNPTE9SX0NMRUFS
X1ZBTFVFKScsICdbMCwgMCwgMCwgMF0nKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJh
bWV0ZXIoY29udGV4dC5DT0xPUl9XUklURU1BU0spJywgJ1sxLCAxLCAxLCAxXScpOworICAgIHNo
b3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkNVTExfRkFDRSknLCAnZmFsc2Un
KTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5DVUxMX0ZBQ0Vf
TU9ERSknLCAnY29udGV4dC5CQUNLJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1l
dGVyKGNvbnRleHQuQ1VSUkVOVF9QUk9HUkFNKScsICdudWxsJyk7CisgICAgc2hvdWxkQmUoJ2Nv
bnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuREVQVEhfRlVOQyknLCAnY29udGV4dC5MRVNTJyk7
CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuREVQVEhfUkFOR0Up
JywgJ1swLCAxXScpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0
LkRFUFRIX1RFU1QpJywgJ2ZhbHNlJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1l
dGVyKGNvbnRleHQuREVQVEhfV1JJVEVNQVNLKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ2Nv
bnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuRElUSEVSKScsICd0cnVlJyk7CisgICAgc2hvdWxk
QmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklO
RElORyknLCAnbnVsbCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250
ZXh0LkZST05UX0ZBQ0UpJywgJ2NvbnRleHQuQ0NXJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQu
Z2V0UGFyYW1ldGVyKGNvbnRleHQuR0VORVJBVEVfTUlQTUFQX0hJTlQpJywgJ2NvbnRleHQuRE9O
VF9DQVJFJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuTElO
RV9XSURUSCknLCAnMScpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250
ZXh0LlBPTFlHT05fT0ZGU0VUX0ZBQ1RPUiknLCAnMCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0
LmdldFBhcmFtZXRlcihjb250ZXh0LlBPTFlHT05fT0ZGU0VUX0ZJTEwpJywgJ2ZhbHNlJyk7Cisg
ICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuUE9MWUdPTl9PRkZTRVRf
VU5JVFMpJywgJzAnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4
dC5SRU5ERVJCVUZGRVJfQklORElORyknLCAnbnVsbCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0
LmdldFBhcmFtZXRlcihjb250ZXh0LlNBTVBMRV9DT1ZFUkFHRV9JTlZFUlQpJywgJ2ZhbHNlJyk7
CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU0FNUExFX0NPVkVS
QUdFX1ZBTFVFKScsICcxJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNv
bnRleHQuU0NJU1NPUl9CT1gpWzBdJywgJzAnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQ
YXJhbWV0ZXIoY29udGV4dC5TQ0lTU09SX0JPWClbMV0nLCAnMCcpOworICAgIHNob3VsZEJlKCdj
b250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNDSVNTT1JfVEVTVCknLCAnZmFsc2UnKTsKKyAg
ICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX0JBQ0tfRkFJ
TCknLCAnY29udGV4dC5LRUVQJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVy
KGNvbnRleHQuU1RFTkNJTF9CQUNLX0ZVTkMpJywgJ2NvbnRleHQuQUxXQVlTJyk7CisgICAgc2hv
dWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9CQUNLX1BBU1NfREVQ
VEhfRkFJTCknLCAnY29udGV4dC5LRUVQJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFy
YW1ldGVyKGNvbnRleHQuU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTUyknLCAnY29udGV4dC5L
RUVQJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJ
TF9CQUNLX1JFRiknLCAnMCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihj
b250ZXh0LlNURU5DSUxfQkFDS19WQUxVRV9NQVNLKScsICcweEZGRkZGRkZGJyk7CisgICAgc2hv
dWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9CQUNLX1dSSVRFTUFT
SyknLCAnMHhGRkZGRkZGRicpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihj
b250ZXh0LlNURU5DSUxfQklUUyknLCAnMCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBh
cmFtZXRlcihjb250ZXh0LlNURU5DSUxfQ0xFQVJfVkFMVUUpJywgJzAnKTsKKyAgICBzaG91bGRC
ZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX0ZBSUwpJywgJ2NvbnRleHQu
S0VFUCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5D
SUxfRlVOQyknLCAnY29udGV4dC5BTFdBWVMnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQ
YXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX1BBU1NfREVQVEhfRkFJTCknLCAnY29udGV4dC5LRUVQ
Jyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9Q
QVNTX0RFUFRIX1BBU1MpJywgJ2NvbnRleHQuS0VFUCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0
LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5DSUxfUkVGKScsICcwJyk7CisgICAgc2hvdWxkQmUo
J2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9URVNUKScsICdmYWxzZScpOwor
ICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5DSUxfVkFMVUVf
TUFTSyknLCAnMHhGRkZGRkZGRicpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRl
cihjb250ZXh0LlNURU5DSUxfV1JJVEVNQVNLKScsICcweEZGRkZGRkZGJyk7CisgICAgc2hvdWxk
QmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuVEVYVFVSRV9CSU5ESU5HXzJEKScsICdu
dWxsJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuVEVYVFVS
RV9CSU5ESU5HX0NVQkVfTUFQKScsICdudWxsJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0
UGFyYW1ldGVyKGNvbnRleHQuVklFV1BPUlQpJywgJ1swLCAwLCAyLCAyXScpOwogfQogCiBkZWJ1
ZygiIik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC1vYmplY3QtZ2V0
LWNhbGxzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy93ZWJnbC9nbC1vYmplY3QtZ2V0LWNhbGxzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLW9iamVjdC1nZXQtY2FsbHMtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc5IEBACitUZXN0IG9mIGdldCBjYWxscyBh
Z2FpbnN0IEdMIG9iamVjdHMgbGlrZSBnZXRCdWZmZXJQYXJhbWV0ZXIsIGV0Yy4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIGdsLmdldEJ1ZmZlclBhcmFtZXRlcihnbC5BUlJB
WV9CVUZGRVIsIGdsLkJVRkZFUl9TSVpFKSBpcyAxNgorUEFTUyBnbC5nZXRCdWZmZXJQYXJhbWV0
ZXIoZ2wuQVJSQVlfQlVGRkVSLCBnbC5CVUZGRVJfVVNBR0UpIGlzIGdsLkRZTkFNSUNfRFJBVwor
UEFTUyBnbC5nZXRFcnJvcigpIGlzIDAKK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyAwCitQQVNTIGds
LmdldEVycm9yKCkgaXMgMAorUEFTUyBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0
ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5GUkFNRUJVRkZFUl9B
VFRBQ0hNRU5UX09CSkVDVF9UWVBFKSBpcyBnbC5URVhUVVJFCitQQVNTIGdsLmdldEZyYW1lYnVm
ZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVO
VDAsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUUpIGlzIG5vbi1udWxsLgor
UEFTUyBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIs
IGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVf
TEVWRUwpIGlzIDAKK1BBU1MgZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGds
LkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNI
TUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0UpIGlzIDAKK1BBU1MgZ2wuZ2V0RnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5ERVBUSF9BVFRBQ0hNRU5ULCBn
bC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFKSBpcyBnbC5SRU5ERVJCVUZGRVIK
K1BBU1MgZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVS
LCBnbC5ERVBUSF9BVFRBQ0hNRU5ULCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9O
QU1FKSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihzdGFuZGFyZFBy
b2dyYW0sIGdsLkRFTEVURV9TVEFUVVMpIGlzIGZhbHNlCitQQVNTIGdsLmdldFByb2dyYW1QYXJh
bWV0ZXIoc3RhbmRhcmRQcm9ncmFtLCBnbC5MSU5LX1NUQVRVUykgaXMgdHJ1ZQorUEFTUyB0eXBl
b2YgZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihzdGFuZGFyZFByb2dyYW0sIGdsLlZBTElEQVRFX1NU
QVRVUykgaXMgImJvb2xlYW4iCitQQVNTIHR5cGVvZiBnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHN0
YW5kYXJkUHJvZ3JhbSwgZ2wuSU5GT19MT0dfTEVOR1RIKSBpcyAibnVtYmVyIgorUEFTUyBnbC5n
ZXRQcm9ncmFtUGFyYW1ldGVyKHN0YW5kYXJkUHJvZ3JhbSwgZ2wuQVRUQUNIRURfU0hBREVSUykg
aXMgMgorUEFTUyBnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHN0YW5kYXJkUHJvZ3JhbSwgZ2wuQUNU
SVZFX0FUVFJJQlVURVMpIGlzIDIKK1BBU1MgZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihzdGFuZGFy
ZFByb2dyYW0sIGdsLkFDVElWRV9BVFRSSUJVVEVfTUFYX0xFTkdUSCkgaXMgbm9uLXplcm8uCitQ
QVNTIGdsLmdldFByb2dyYW1QYXJhbWV0ZXIoc3RhbmRhcmRQcm9ncmFtLCBnbC5BQ1RJVkVfVU5J
Rk9STVMpIGlzIDEKK1BBU1MgZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihzdGFuZGFyZFByb2dyYW0s
IGdsLkFDVElWRV9VTklGT1JNX01BWF9MRU5HVEgpIGlzIG5vbi16ZXJvLgorUEFTUyBnbC5nZXRS
ZW5kZXJidWZmZXJQYXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBnbC5SRU5ERVJCVUZGRVJfV0lE
VEgpIGlzIDIKK1BBU1MgZ2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZF
UiwgZ2wuUkVOREVSQlVGRkVSX0hFSUdIVCkgaXMgMgorUEFTUyBnbC5nZXRSZW5kZXJidWZmZXJQ
YXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBnbC5SRU5ERVJCVUZGRVJfSU5URVJOQUxfRk9STUFU
KSBpcyBub24temVyby4KK1BBU1MgZ2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKGdsLlJFTkRF
UkJVRkZFUiwgZ2wuUkVOREVSQlVGRkVSX0RFUFRIX1NJWkUpIGlzIG5vbi16ZXJvLgorUEFTUyBn
bC5nZXRFcnJvcigpIGlzIDAKK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyAwCitQQVNTIGdsLmdldFJl
bmRlcmJ1ZmZlclBhcmFtZXRlcihnbC5SRU5ERVJCVUZGRVIsIGdsLlJFTkRFUkJVRkZFUl9SRURf
U0laRSkgaXMgbm9uLXplcm8uCitQQVNTIGdsLmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcihnbC5S
RU5ERVJCVUZGRVIsIGdsLlJFTkRFUkJVRkZFUl9HUkVFTl9TSVpFKSBpcyBub24temVyby4KK1BB
U1MgZ2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkVOREVS
QlVGRkVSX0JMVUVfU0laRSkgaXMgbm9uLXplcm8uCitQQVNTIGdsLmdldFJlbmRlcmJ1ZmZlclBh
cmFtZXRlcihnbC5SRU5ERVJCVUZGRVIsIGdsLlJFTkRFUkJVRkZFUl9BTFBIQV9TSVpFKSBpcyBu
b24temVyby4KK1BBU1MgZ2wuZ2V0U2hhZGVyUGFyYW1ldGVyKHN0YW5kYXJkVmVydCwgZ2wuU0hB
REVSX1RZUEUpIGlzIGdsLlZFUlRFWF9TSEFERVIKK1BBU1MgZ2wuZ2V0U2hhZGVyUGFyYW1ldGVy
KHN0YW5kYXJkVmVydCwgZ2wuREVMRVRFX1NUQVRVUykgaXMgZmFsc2UKK1BBU1MgZ2wuZ2V0U2hh
ZGVyUGFyYW1ldGVyKHN0YW5kYXJkVmVydCwgZ2wuQ09NUElMRV9TVEFUVVMpIGlzIHRydWUKK1BB
U1MgdHlwZW9mIGdsLmdldFNoYWRlclBhcmFtZXRlcihzdGFuZGFyZFZlcnQsIGdsLklORk9fTE9H
X0xFTkdUSCkgaXMgIm51bWJlciIKK1BBU1MgZ2wuZ2V0U2hhZGVyUGFyYW1ldGVyKHN0YW5kYXJk
VmVydCwgZ2wuU0hBREVSX1NPVVJDRV9MRU5HVEgpIGlzIG5vbi16ZXJvLgorUEFTUyBnbC5nZXRU
ZXhQYXJhbWV0ZXIoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSKSBpcyBnbC5O
RUFSRVNUCitQQVNTIGdsLmdldFRleFBhcmFtZXRlcihnbC5URVhUVVJFXzJELCBnbC5URVhUVVJF
X01JTl9GSUxURVIpIGlzIGdsLk5FQVJFU1QKK1BBU1MgZ2wuZ2V0VGV4UGFyYW1ldGVyKGdsLlRF
WFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9TKSBpcyBnbC5DTEFNUF9UT19FREdFCitQQVNTIGds
LmdldFRleFBhcmFtZXRlcihnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfVCkgaXMgZ2wu
Q0xBTVBfVE9fRURHRQorUEFTUyBnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKGJvb2xQcm9ncmFtLCBn
bC5MSU5LX1NUQVRVUykgaXMgdHJ1ZQorUEFTUyBnbC5nZXRFcnJvcigpIGlzIDAKK1BBU1MgZ2wu
Z2V0VW5pZm9ybShib29sUHJvZ3JhbSwgYnZhbExvYykgaXMgdHJ1ZQorUEFTUyBnbC5nZXRVbmlm
b3JtKGJvb2xQcm9ncmFtLCBidmFsMkxvYykgaXMgWzEsIDBdCitQQVNTIGdsLmdldFVuaWZvcm0o
Ym9vbFByb2dyYW0sIGJ2YWwzTG9jKSBpcyBbMSwgMCwgMV0KK1BBU1MgZ2wuZ2V0VW5pZm9ybShi
b29sUHJvZ3JhbSwgYnZhbDRMb2MpIGlzIFsxLCAwLCAxLCAwXQorUEFTUyBnbC5nZXRQcm9ncmFt
UGFyYW1ldGVyKGludFByb2dyYW0sIGdsLkxJTktfU1RBVFVTKSBpcyB0cnVlCitQQVNTIGdsLmdl
dEVycm9yKCkgaXMgMAorUEFTUyBnbC5nZXRVbmlmb3JtKGludFByb2dyYW0sIGl2YWxMb2MpIGlz
IDEKK1BBU1MgZ2wuZ2V0VW5pZm9ybShpbnRQcm9ncmFtLCBpdmFsMkxvYykgaXMgWzIsIDNdCitQ
QVNTIGdsLmdldFVuaWZvcm0oaW50UHJvZ3JhbSwgaXZhbDNMb2MpIGlzIFs0LCA1LCA2XQorUEFT
UyBnbC5nZXRVbmlmb3JtKGludFByb2dyYW0sIGl2YWw0TG9jKSBpcyBbNywgOCwgOSwgMTBdCitQ
QVNTIGdsLmdldFByb2dyYW1QYXJhbWV0ZXIoZmxvYXRQcm9ncmFtLCBnbC5MSU5LX1NUQVRVUykg
aXMgdHJ1ZQorUEFTUyBnbC5nZXRFcnJvcigpIGlzIDAKK1BBU1MgZ2wuZ2V0VW5pZm9ybShmbG9h
dFByb2dyYW0sIGZ2YWxMb2MpIGlzIDExCitQQVNTIGdsLmdldFVuaWZvcm0oZmxvYXRQcm9ncmFt
LCBmdmFsMkxvYykgaXMgWzEyLCAxM10KK1BBU1MgZ2wuZ2V0VW5pZm9ybShmbG9hdFByb2dyYW0s
IGZ2YWwzTG9jKSBpcyBbMTQsIDE1LCAxNl0KK1BBU1MgZ2wuZ2V0VW5pZm9ybShmbG9hdFByb2dy
YW0sIGZ2YWw0TG9jKSBpcyBbMTcsIDE4LCAxOSwgMjBdCitQQVNTIGdsLmdldFByb2dyYW1QYXJh
bWV0ZXIobWF0UHJvZ3JhbSwgZ2wuTElOS19TVEFUVVMpIGlzIHRydWUKK1BBU1MgZ2wuZ2V0RXJy
b3IoKSBpcyAwCitQQVNTIGdsLmdldFVuaWZvcm0obWF0UHJvZ3JhbSwgbXZhbDJMb2MpIGlzIFsx
LCAyLCAzLCA0XQorUEFTUyBnbC5nZXRVbmlmb3JtKG1hdFByb2dyYW0sIG12YWwzTG9jKSBpcyBb
NSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTNdCitQQVNTIGdsLmdldFVuaWZvcm0obWF0UHJv
Z3JhbSwgbXZhbDRMb2MpIGlzIFsxNCwgMTUsIDE2LCAxNywgMTgsIDE5LCAyMCwgMjEsIDIyLCAy
MywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOV0KK1BBU1MgZ2wuZ2V0VmVydGV4QXR0cmliKDEsIGds
LlZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkcpIGlzIG5vbi1udWxsLgorUEFTUyBn
bC5nZXRWZXJ0ZXhBdHRyaWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVEKSBpcyB0
cnVlCitQQVNTIGdsLmdldFZlcnRleEF0dHJpYigxLCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX1NJ
WkUpIGlzIDQKK1BBU1MgKGdsLmdldFZlcnRleEF0dHJpYigxLCBnbC5WRVJURVhfQVRUUklCX0FS
UkFZX1NUUklERSkgPT0gMCkgfHwgKGdsLmdldFZlcnRleEF0dHJpYigxLCBnbC5WRVJURVhfQVRU
UklCX0FSUkFZX1NUUklERSkgPT0gNCAqIGdsLnNpemVJbkJ5dGVzKGdsLkZMT0FUKSkgaXMgdHJ1
ZQorUEFTUyBnbC5nZXRWZXJ0ZXhBdHRyaWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBF
KSBpcyBnbC5GTE9BVAorUEFTUyBnbC5nZXRWZXJ0ZXhBdHRyaWIoMSwgZ2wuVkVSVEVYX0FUVFJJ
Ql9BUlJBWV9OT1JNQUxJWkVEKSBpcyBmYWxzZQorUEFTUyBnbC5nZXRWZXJ0ZXhBdHRyaWIoMSwg
Z2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVEKSBpcyBmYWxzZQorUEFTUyBnbC5nZXRWZXJ0
ZXhBdHRyaWIoMSwgZ2wuQ1VSUkVOVF9WRVJURVhfQVRUUklCKSBpcyBbNSwgNiwgNywgOF0KK1BB
U1MgZ2wuZ2V0RXJyb3IoKSBpcyAwCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wt
b2JqZWN0LWdldC1jYWxscy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3dlYmdsL2dsLW9iamVjdC1nZXQtY2FsbHMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLW9iamVjdC1nZXQtY2FsbHMuaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxNSBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvd2ViZ2wtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorCis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2dsLW9iamVjdC1nZXQtY2FsbHMuanMi
Pjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC9pbmNvcnJlY3QtY29udGV4dC1vYmplY3QtYmVoYXZpb3VyLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9pbmNvcnJl
Y3QtY29udGV4dC1vYmplY3QtYmVoYXZpb3VyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNTEzNDEp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9pbmNvcnJlY3QtY29udGV4dC1vYmpl
Y3QtYmVoYXZpb3VyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTcsMTcgKzE3LDEy
IEBAIFBBU1MgY29udGV4dEEuYmluZFJlbmRlcmJ1ZmZlcihjb250ZXh0QS4KIFBBU1MgY29udGV4
dEEuYmluZFRleHR1cmUoY29udGV4dEEuVEVYVFVSRV8yRCwgdGV4dHVyZUIpIHRocmV3IGV4Y2Vw
dGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCiBQQVNTIGNv
bnRleHRBLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGNvbnRleHRBLkZSQU1FQlVGRkVSLCBjb250
ZXh0QS5ERVBUSF9BVFRBQ0hNRU5ULCBjb250ZXh0QS5SRU5ERVJCVUZGRVIsIHJlbmRlckJ1ZmZl
ckIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRp
b24gMTcuCiBQQVNTIGNvbnRleHRBLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGNvbnRleHRBLkZSQU1F
QlVGRkVSLCBjb250ZXh0QS5DT0xPUl9BVFRBQ0hNRU5UMCwgY29udGV4dEEuVEVYVFVSRV8yRCwg
dGV4dHVyZUIsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERP
TSBFeGNlcHRpb24gMTcuCi1QQVNTIGNvbnRleHRBLmdldFByb2dyYW1pKHByb2dyYW1CLCAwKSB0
aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3
LgotUEFTUyBjb250ZXh0QS5nZXRQcm9ncmFtaXYocHJvZ3JhbUIsIDApIHRocmV3IGV4Y2VwdGlv
biBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCitQQVNTIGNvbnRl
eHRBLmdldFByb2dyYW1QYXJhbWV0ZXIocHJvZ3JhbUIsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJv
cjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCiBQQVNTIGNvbnRleHRBLmdl
dFByb2dyYW1JbmZvTG9nKHByb2dyYW1CLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVf
TUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0QS5nZXRTaGFkZXJp
KHNoYWRlckIsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERP
TSBFeGNlcHRpb24gMTcuCi1QQVNTIGNvbnRleHRBLmdldFNoYWRlcml2KHNoYWRlckIsIDApIHRo
cmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcu
CitQQVNTIGNvbnRleHRBLmdldFNoYWRlclBhcmFtZXRlcihzaGFkZXJCLCAwKSB0aHJldyBleGNl
cHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBj
b250ZXh0QS5nZXRTaGFkZXJJbmZvTG9nKHNoYWRlckIsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJv
cjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCiBQQVNTIGNvbnRleHRBLmdl
dFNoYWRlclNvdXJjZShzaGFkZXJCKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFU
Q0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0QS5nZXRVbmlmb3JtZihwcm9n
cmFtQiwgbG9jYXRpb25BKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJS
OiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0QS5nZXRVbmlmb3JtZnYocHJvZ3JhbUIs
IGxvY2F0aW9uQSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9N
IEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4dEEuZ2V0VW5pZm9ybWkocHJvZ3JhbUIsIGxvY2F0
aW9uQSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2Vw
dGlvbiAxNy4KLVBBU1MgY29udGV4dEEuZ2V0VW5pZm9ybWl2KHByb2dyYW1CLCBsb2NhdGlvbkEp
IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24g
MTcuCitQQVNTIGNvbnRleHRBLmdldFVuaWZvcm0ocHJvZ3JhbUIsIGxvY2F0aW9uQSkgdGhyZXcg
ZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KIFBB
U1MgY29udGV4dEEuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW1CLCAndV9tb2RlbFZpZXdQcm9q
TWF0cml4JykgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4
Y2VwdGlvbiAxNy4KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIApJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvbnVsbC1vYmplY3QtYmVoYXZpb3VyLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9udWxsLW9i
amVjdC1iZWhhdmlvdXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA1MTM0MSkKKysrIExheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3dlYmdsL251bGwtb2JqZWN0LWJlaGF2aW91ci1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTE4LDE3ICsxOCwxMiBAQCBQQVNTIGNvbnRleHQuYmluZFJlbmRl
cmJ1ZmZlcihjb250ZXh0LlJFCiBQQVNTIGNvbnRleHQuYmluZFRleHR1cmUoY29udGV4dC5URVhU
VVJFXzJELCAwKSBpcyB1bmRlZmluZWQuCiBQQVNTIGNvbnRleHQuZnJhbWVidWZmZXJSZW5kZXJi
dWZmZXIoY29udGV4dC5GUkFNRUJVRkZFUiwgY29udGV4dC5ERVBUSF9BVFRBQ0hNRU5ULCBjb250
ZXh0LlJFTkRFUkJVRkZFUiwgMCkgaXMgdW5kZWZpbmVkLgogUEFTUyBjb250ZXh0LmZyYW1lYnVm
ZmVyVGV4dHVyZTJEKGNvbnRleHQuRlJBTUVCVUZGRVIsIGNvbnRleHQuQ09MT1JfQVRUQUNITUVO
VDAsIGNvbnRleHQuVEVYVFVSRV8yRCwgMCwgMCkgaXMgdW5kZWZpbmVkLgotUEFTUyBjb250ZXh0
LmdldFByb2dyYW1pKHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01J
U01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4dC5nZXRQcm9ncmFtaXYo
dW5kZWZpbmVkLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBE
T00gRXhjZXB0aW9uIDE3LgorUEFTUyBjb250ZXh0LmdldFByb2dyYW1QYXJhbWV0ZXIodW5kZWZp
bmVkLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhj
ZXB0aW9uIDE3LgogUEFTUyBjb250ZXh0LmdldFByb2dyYW1JbmZvTG9nKHVuZGVmaW5lZCwgMCkg
dGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAx
Ny4KLVBBU1MgY29udGV4dC5nZXRTaGFkZXJpKHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9u
IEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4
dC5nZXRTaGFkZXJpdih1bmRlZmluZWQsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9N
SVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCitQQVNTIGNvbnRleHQuZ2V0U2hhZGVyUGFy
YW1ldGVyKHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENI
X0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KIFBBU1MgY29udGV4dC5nZXRTaGFkZXJJbmZvTG9nKHVu
ZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9N
IEV4Y2VwdGlvbiAxNy4KIFBBU1MgY29udGV4dC5nZXRTaGFkZXJTb3VyY2UodW5kZWZpbmVkKSB0
aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3
LgotUEFTUyBjb250ZXh0LmdldFVuaWZvcm1mKHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9u
IEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4
dC5nZXRVbmlmb3JtZnYodW5kZWZpbmVkLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVf
TUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0LmdldFVuaWZvcm1p
KHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjog
RE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4dC5nZXRVbmlmb3JtaXYodW5kZWZpbmVkLCAw
KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9u
IDE3LgorUEFTUyBjb250ZXh0LmdldFVuaWZvcm0odW5kZWZpbmVkLCAwKSB0aHJldyBleGNlcHRp
b24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBjb250
ZXh0LmdldFVuaWZvcm1Mb2NhdGlvbih1bmRlZmluZWQsICdmb28nKSB0aHJldyBleGNlcHRpb24g
RXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJn
bC90cmlhbmdsZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dl
YmdsL3RyaWFuZ2xlLmh0bWwJKHJldmlzaW9uIDUxMzQxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvd2ViZ2wvdHJpYW5nbGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNjQsMTEgKzY0LDEx
IEBACiAgICAgICAgICAgICB2YXIgb2Zmc2V0ID0gKDE1KjUwKzIwKSAqIDQ7CiAgICAgICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IDEwOyArK2kpCiAgICAgICAgICAgICAgICAgaWYgKGJ1Zltv
ZmZzZXQraSo0XSAhPSAyNTUgfHwgYnVmW29mZnNldCtpKjQrMV0gIT0gMCB8fCBidWZbb2Zmc2V0
K2kqNCsyXSAhPSAwIHx8IGJ1ZltvZmZzZXQraSo0KzNdICE9IDI1NSkgewotICAgICAgICAgICAg
ICAgICAgICBmYWlsKDIwLCAxNSwgYnVmLCAiKDI1NSwwLDAsMjU1KSIpOworICAgICAgICAgICAg
ICAgICAgICBmYWlsKDIwICsgaSwgMTUsIGJ1ZiwgIigyNTUsMCwwLDI1NSkiKTsKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIExh
c3QgbGluZSBzaG91bGQgYmUgYWxsIGJsYWNrCi0gICAgICAgICAgICBvZmZzZXQgPSAoNDkqNTAp
ICogNAorICAgICAgICAgICAgb2Zmc2V0ID0gKDQ5KjUwKSAqIDQ7CiAgICAgICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IDUwOyArK2kpCiAgICAgICAgICAgICAgICAgaWYgKGJ1ZltvZmZzZXQr
aSo0XSAhPSAwIHx8IGJ1ZltvZmZzZXQraSo0KzFdICE9IDAgfHwgYnVmW29mZnNldCtpKjQrMl0g
IT0gMCB8fCBidWZbb2Zmc2V0K2kqNCszXSAhPSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAg
ZmFpbChpLCA0OSwgYnVmLCAiKDAsMCwwLDI1NSkiKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL3Jlc291cmNlcy9ib29sVW5pZm9ybVNoYWRlci52ZXJ0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy9ib29sVW5pZm9ybVNo
YWRlci52ZXJ0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wv
cmVzb3VyY2VzL2Jvb2xVbmlmb3JtU2hhZGVyLnZlcnQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTMgQEAKK3VuaWZvcm0gYm9vbCBidmFsOwordW5pZm9ybSBidmVjMiBidmFsMjsKK3VuaWZvcm0g
YnZlYzMgYnZhbDM7Cit1bmlmb3JtIGJ2ZWM0IGJ2YWw0OworCit2b2lkIG1haW4oKQoreworICAg
IGJvb2wgYWxsU2V0ID0gYnZhbAorICAgICAgICAgICAgJiYgYnZhbDJbMF0gJiYgYnZhbDJbMV0K
KyAgICAgICAgICAgICYmIGJ2YWwzWzBdICYmIGJ2YWwzWzFdICYmIGJ2YWwzWzJdCisgICAgICAg
ICAgICAmJiBidmFsNFswXSAmJiBidmFsNFsxXSAmJiBidmFsNFsyXSAmJiBidmFsNFszXTsKKyAg
ICBnbF9Qb3NpdGlvbiA9IHZlYzQoKGFsbFNldCA/IDEuMCA6IC0xLjApLCAwLjAsIDAuMCwgMS4w
KTsKK30KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy9mbG9h
dFVuaWZvcm1TaGFkZXIudmVydAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy93ZWJnbC9yZXNvdXJjZXMvZmxvYXRVbmlmb3JtU2hhZGVyLnZlcnQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvZmxvYXRVbmlmb3JtU2hh
ZGVyLnZlcnQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKK3VuaWZvcm0gZmxvYXQgZnZh
bDsKK3VuaWZvcm0gdmVjMiBmdmFsMjsKK3VuaWZvcm0gdmVjMyBmdmFsMzsKK3VuaWZvcm0gdmVj
NCBmdmFsNDsKKwordm9pZCBtYWluKCkKK3sKKyAgICBmbG9hdCBzdW0gPSBmdmFsCisgICAgICAg
ICAgICArIGZ2YWwyWzBdICsgZnZhbDJbMV0KKyAgICAgICAgICAgICsgZnZhbDNbMF0gKyBmdmFs
M1sxXSArIGZ2YWwzWzJdCisgICAgICAgICAgICArIGZ2YWw0WzBdICsgZnZhbDRbMV0gKyBmdmFs
NFsyXSArIGZ2YWw0WzNdOworICAgIGdsX1Bvc2l0aW9uID0gdmVjNChzdW0sIDAuMCwgMC4wLCAx
LjApOworfQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL2lu
dFVuaWZvcm1TaGFkZXIudmVydAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy93ZWJnbC9yZXNvdXJjZXMvaW50VW5pZm9ybVNoYWRlci52ZXJ0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL2ludFVuaWZvcm1TaGFkZXIu
dmVydAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAordW5pZm9ybSBpbnQgaXZhbDsKK3Vu
aWZvcm0gaXZlYzIgaXZhbDI7Cit1bmlmb3JtIGl2ZWMzIGl2YWwzOwordW5pZm9ybSBpdmVjNCBp
dmFsNDsKKwordm9pZCBtYWluKCkKK3sKKyAgICBpbnQgc3VtID0gaXZhbAorICAgICAgICAgICAg
KyBpdmFsMlswXSArIGl2YWwyWzFdCisgICAgICAgICAgICArIGl2YWwzWzBdICsgaXZhbDNbMV0g
KyBpdmFsM1syXQorICAgICAgICAgICAgKyBpdmFsNFswXSArIGl2YWw0WzFdICsgaXZhbDRbMl0g
KyBpdmFsNFszXTsKKyAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoc3VtLCAwLjAsIDAuMCwgMS4wKTsK
K30KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy9tYXRVbmlm
b3JtU2hhZGVyLnZlcnQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2Vi
Z2wvcmVzb3VyY2VzL21hdFVuaWZvcm1TaGFkZXIudmVydAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy9tYXRVbmlmb3JtU2hhZGVyLnZlcnQJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAgQEAKK3VuaWZvcm0gbWF0MiBtdmFsMjsKK3VuaWZv
cm0gbWF0MyBtdmFsMzsKK3VuaWZvcm0gbWF0NCBtdmFsNDsKKwordm9pZCBtYWluKCkKK3sKKyAg
ICBnbF9Qb3NpdGlvbiA9IHZlYzQobXZhbDIgKiB2ZWMyKDEuMCwgMi4wKSwgMC4wLCAwLjApCisg
ICAgICAgICAgICArIHZlYzQobXZhbDMgKiB2ZWMzKDEuMCwgMi4wLCAzLjApLCAwLjApCisgICAg
ICAgICAgICArIG12YWw0ICogdmVjNCgxLjAsIDIuMCwgMy4wLCA0LjApOworfQpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL25vb3BVbmlmb3JtU2hhZGVyLmZy
YWcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2Vz
L25vb3BVbmlmb3JtU2hhZGVyLmZyYWcJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvbm9vcFVuaWZvcm1TaGFkZXIuZnJhZwkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw0IEBACit2b2lkIG1haW4oKQoreworICAgIGdsX0ZyYWdDb2xvciA9IHZl
YzQoMC4wLCAwLjAsIDAuMCwgMS4wKTsKK30KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3dlYmdsL3Jlc291cmNlcy91dGlsczNkLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy91dGlsczNkLmpzCShyZXZpc2lvbiA1MTM0MSkKKysr
IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy91dGlsczNkLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIGZ1bmN0aW9uIGluaXRXZWJHTChjYW52YXNOYW1l
LCB2c2hhZGVyLCAKICAgICBnbC5saW5rUHJvZ3JhbShnbC5wcm9ncmFtKTsKIAogICAgIC8vIENo
ZWNrIHRoZSBsaW5rIHN0YXR1cwotICAgIHZhciBsaW5rZWQgPSBnbC5nZXRQcm9ncmFtaShnbC5w
cm9ncmFtLCBnbC5MSU5LX1NUQVRVUyk7CisgICAgdmFyIGxpbmtlZCA9IGdsLmdldFByb2dyYW1Q
YXJhbWV0ZXIoZ2wucHJvZ3JhbSwgZ2wuTElOS19TVEFUVVMpOwogICAgIGlmICghbGlua2VkKSB7
CiAgICAgICAgIC8vIHNvbWV0aGluZyB3ZW50IHdyb25nIHdpdGggdGhlIGxpbmsKICAgICAgICAg
dmFyIGVycm9yID0gZ2wuZ2V0UHJvZ3JhbUluZm9Mb2cgKGdsLnByb2dyYW0pOwpAQCAtMTEzLDcg
KzExMyw3IEBAIGZ1bmN0aW9uIGxvYWRTaGFkZXIoY3R4LCBzaGFkZXJJZCkKICAgICBjdHguY29t
cGlsZVNoYWRlcihzaGFkZXIpOwogCiAgICAgLy8gQ2hlY2sgdGhlIGNvbXBpbGUgc3RhdHVzCi0g
ICAgdmFyIGNvbXBpbGVkID0gY3R4LmdldFNoYWRlcmkoc2hhZGVyLCBjdHguQ09NUElMRV9TVEFU
VVMpOworICAgIHZhciBjb21waWxlZCA9IGN0eC5nZXRTaGFkZXJQYXJhbWV0ZXIoc2hhZGVyLCBj
dHguQ09NUElMRV9TVEFUVVMpOwogICAgIGlmICghY29tcGlsZWQpIHsKICAgICAgICAgLy8gU29t
ZXRoaW5nIHdlbnQgd3JvbmcgZHVyaW5nIGNvbXBpbGF0aW9uOyBnZXQgdGhlIGVycm9yCiAgICAg
ICAgIHZhciBlcnJvciA9IGN0eC5nZXRTaGFkZXJJbmZvTG9nKHNoYWRlcik7CkBAIC01MzYsNCAr
NTM2LDMgQEAgRnJhbWVyYXRlLnByb3RvdHlwZS5zbmFwc2hvdCA9IGZ1bmN0aW9uKAogICAgICAg
ICB0aGlzLnJlbmRlclRpbWUgPSBuZXdUaW1lOwogICAgIH0KIH0KLQpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsLXRlc3QuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsLXRlc3QuanMJ
KHJldmlzaW9uIDUxMzQxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsLXRlc3QuanMJKHdvcmtpbmcgY29weSkKQEAgLTI0LDE2ICsyNCwzMiBAQCBmdW5j
dGlvbiBsb2FkU3RhbmRhcmRQcm9ncmFtKGNvbnRleHQpIHsKICAgICByZXR1cm4gcHJvZ3JhbTsK
IH0KIAorZnVuY3Rpb24gbG9hZFByb2dyYW0oY29udGV4dCwgdmVydGV4U2hhZGVyUGF0aCwgZnJh
Z21lbnRTaGFkZXJQYXRoKSB7CisgICAgdmFyIHByb2dyYW0gPSBjb250ZXh0LmNyZWF0ZVByb2dy
YW0oKTsKKyAgICBjb250ZXh0LmF0dGFjaFNoYWRlcihwcm9ncmFtLCBsb2FkVmVydGV4U2hhZGVy
KGNvbnRleHQsIHZlcnRleFNoYWRlclBhdGgpKTsKKyAgICBjb250ZXh0LmF0dGFjaFNoYWRlcihw
cm9ncmFtLCBsb2FkRnJhZ21lbnRTaGFkZXIoY29udGV4dCwgZnJhZ21lbnRTaGFkZXJQYXRoKSk7
CisgICAgY29udGV4dC5saW5rUHJvZ3JhbShwcm9ncmFtKTsKKyAgICByZXR1cm4gcHJvZ3JhbTsK
K30KKwogZnVuY3Rpb24gbG9hZFN0YW5kYXJkVmVydGV4U2hhZGVyKGNvbnRleHQpIHsKKyAgICBy
ZXR1cm4gbG9hZFZlcnRleFNoYWRlcihjb250ZXh0LCAicmVzb3VyY2VzL3ZlcnRleFNoYWRlci52
ZXJ0Iik7Cit9CisKK2Z1bmN0aW9uIGxvYWRWZXJ0ZXhTaGFkZXIoY29udGV4dCwgcGF0aCkgewog
ICAgIHZhciB2ZXJ0ZXhTaGFkZXIgPSBjb250ZXh0LmNyZWF0ZVNoYWRlcihjb250ZXh0LlZFUlRF
WF9TSEFERVIpOwotICAgIGNvbnRleHQuc2hhZGVyU291cmNlKHZlcnRleFNoYWRlciwgZ2V0U2hh
ZGVyU291cmNlKCJyZXNvdXJjZXMvdmVydGV4U2hhZGVyLnZlcnQiKSk7CisgICAgY29udGV4dC5z
aGFkZXJTb3VyY2UodmVydGV4U2hhZGVyLCBnZXRTaGFkZXJTb3VyY2UocGF0aCkpOwogICAgIGNv
bnRleHQuY29tcGlsZVNoYWRlcih2ZXJ0ZXhTaGFkZXIpOwogICAgIHJldHVybiB2ZXJ0ZXhTaGFk
ZXI7CiB9CiAKIGZ1bmN0aW9uIGxvYWRTdGFuZGFyZEZyYWdtZW50U2hhZGVyKGNvbnRleHQpIHsK
KyAgICByZXR1cm4gbG9hZEZyYWdtZW50U2hhZGVyKGNvbnRleHQsICJyZXNvdXJjZXMvZnJhZ21l
bnRTaGFkZXIuZnJhZyIpOworfQorCitmdW5jdGlvbiBsb2FkRnJhZ21lbnRTaGFkZXIoY29udGV4
dCwgcGF0aCkgewogICAgIHZhciBmcmFnbWVudFNoYWRlciA9IGNvbnRleHQuY3JlYXRlU2hhZGVy
KGNvbnRleHQuRlJBR01FTlRfU0hBREVSKTsKLSAgICBjb250ZXh0LnNoYWRlclNvdXJjZShmcmFn
bWVudFNoYWRlciwgZ2V0U2hhZGVyU291cmNlKCJyZXNvdXJjZXMvZnJhZ21lbnRTaGFkZXIuZnJh
ZyIpKTsKKyAgICBjb250ZXh0LnNoYWRlclNvdXJjZShmcmFnbWVudFNoYWRlciwgZ2V0U2hhZGVy
U291cmNlKHBhdGgpKTsKICAgICBjb250ZXh0LmNvbXBpbGVTaGFkZXIoZnJhZ21lbnRTaGFkZXIp
OwogICAgIHJldHVybiBmcmFnbWVudFNoYWRlcjsKIH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9nbC1vYmplY3QtZ2V0LWNhbGxzLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9nbC1vYmpl
Y3QtZ2V0LWNhbGxzLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
d2ViZ2wvc2NyaXB0LXRlc3RzL2dsLW9iamVjdC1nZXQtY2FsbHMuanMJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTg2IEBACitkZXNjcmlwdGlvbigiVGVzdCBvZiBnZXQgY2FsbHMgYWdhaW5zdCBH
TCBvYmplY3RzIGxpa2UgZ2V0QnVmZmVyUGFyYW1ldGVyLCBldGMuIik7CisKK3ZhciBnbCA9IGNy
ZWF0ZTNEQ29udGV4dCgpOwordmFyIHN0YW5kYXJkVmVydCA9IGxvYWRTdGFuZGFyZFZlcnRleFNo
YWRlcihnbCk7Cit2YXIgc3RhbmRhcmRGcmFnID0gbG9hZFN0YW5kYXJkRnJhZ21lbnRTaGFkZXIo
Z2wpOwordmFyIHN0YW5kYXJkUHJvZ3JhbSA9IGdsLmNyZWF0ZVByb2dyYW0oKTsKK2dsLmF0dGFj
aFNoYWRlcihzdGFuZGFyZFByb2dyYW0sIHN0YW5kYXJkVmVydCk7CitnbC5hdHRhY2hTaGFkZXIo
c3RhbmRhcmRQcm9ncmFtLCBzdGFuZGFyZEZyYWcpOworZ2wubGlua1Byb2dyYW0oc3RhbmRhcmRQ
cm9ncmFtKTsKKworLy8gVGVzdCBnZXRCdWZmZXJQYXJhbWV0ZXIKK3ZhciBidWZmZXIgPSBnbC5j
cmVhdGVCdWZmZXIoKTsKK2dsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBidWZmZXIpOwor
Z2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIDE2LCBnbC5EWU5BTUlDX0RSQVcpOworc2hv
dWxkQmUoJ2dsLmdldEJ1ZmZlclBhcmFtZXRlcihnbC5BUlJBWV9CVUZGRVIsIGdsLkJVRkZFUl9T
SVpFKScsICcxNicpOworc2hvdWxkQmUoJ2dsLmdldEJ1ZmZlclBhcmFtZXRlcihnbC5BUlJBWV9C
VUZGRVIsIGdsLkJVRkZFUl9VU0FHRSknLCAnZ2wuRFlOQU1JQ19EUkFXJyk7CisKKy8vIFRlc3Qg
Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyCit2YXIgdGV4dHVyZSA9IGdsLmNyZWF0
ZVRleHR1cmUoKTsKK2dsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmUpOworZ2wu
dGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCAyLCAyLCAwLCBnbC5SR0JBLCBn
bC5VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAgICBuZXcgV2ViR0xVbnNpZ25lZEJ5dGVBcnJh
eShbMCwgMCwgMCwgMjU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMjU1LCAyNTUsIDI1NSwgMjU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMjU1LCAyNTUsIDI1NSwgMjU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMCwgMCwgMCwgMjU1XSkpOworZ2wudGV4UGFyYW1ldGVyaShnbC5URVhU
VVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGdsLkxJTkVBUik7CitnbC50ZXhQYXJhbWV0
ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTElORUFSKTsKK2ds
LmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIG51bGwpOwordmFyIGZyYW1lYnVmZmVyID0gZ2wu
Y3JlYXRlRnJhbWVidWZmZXIoKTsKK2dsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwg
ZnJhbWVidWZmZXIpOworZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGds
LkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5URVhUVVJFXzJELCB0ZXh0dXJlLCAwKTsKK3ZhciByZW5k
ZXJidWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKTsKK3Nob3VsZEJlKCdnbC5nZXRFcnJv
cigpJywgJzAnKTsKK2dsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCByZW5kZXJi
dWZmZXIpOworc2hvdWxkQmUoJ2dsLmdldEVycm9yKCknLCAnMCcpOworZ2wucmVuZGVyYnVmZmVy
U3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLkRFUFRIX0NPTVBPTkVOVDE2LCAyLCAyKTsKK3No
b3VsZEJlKCdnbC5nZXRFcnJvcigpJywgJzAnKTsKK2dsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVy
KGdsLkZSQU1FQlVGRkVSLCBnbC5ERVBUSF9BVFRBQ0hNRU5ULCBnbC5SRU5ERVJCVUZGRVIsIHJl
bmRlcmJ1ZmZlcik7CisvLyBGSVhNRTogbmVlZCB0byB3b3JrIGFyb3VuZCBidWdneSBncmFwaGlj
cyBkcml2ZXJzIHdoaWNoIGRvbid0CisvLyBzdXBwb3J0IEdMX0RFUFRIX0NPTVBPTkVOVDE2IGZv
cm1hdCBmb3IgZGVwdGggcmVuZGVyYnVmZmVyczsgbmV4dAorLy8gbGluZSBpcyByZXR1cm5pbmcg
RlJBTUVCVUZGRVJfVU5TVVBQT1JURUQgb24gY29tbWl0IGJvdHMKKy8vc2hvdWxkQmUoJ2dsLmNo
ZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpJywgJ2dsLkZSQU1FQlVGRkVSX0NP
TVBMRVRFJyk7CitzaG91bGRCZSgnZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
KGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuRlJBTUVCVUZGRVJfQVRU
QUNITUVOVF9PQkpFQ1RfVFlQRSknLCAnZ2wuVEVYVFVSRScpOworc2hvdWxkQmVOb25OdWxsKCdn
bC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNP
TE9SX0FUVEFDSE1FTlQwLCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FKScp
Oworc2hvdWxkQmUoJ2dsLmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFN
RUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRf
VEVYVFVSRV9MRVZFTCknLCAnMCcpOworc2hvdWxkQmUoJ2dsLmdldEZyYW1lYnVmZmVyQXR0YWNo
bWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLkZS
QU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9DVUJFX01BUF9GQUNFKScsICcwJyk7CisKK3No
b3VsZEJlKCdnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZG
RVIsIGdsLkRFUFRIX0FUVEFDSE1FTlQsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNU
X1RZUEUpJywgJ2dsLlJFTkRFUkJVRkZFUicpOworc2hvdWxkQmVOb25OdWxsKCdnbC5nZXRGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkRFUFRIX0FUVEFD
SE1FTlQsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUUpJyk7CisKKy8vIFRl
c3QgZ2V0UHJvZ3JhbVBhcmFtZXRlcgorc2hvdWxkQmUoJ2dsLmdldFByb2dyYW1QYXJhbWV0ZXIo
c3RhbmRhcmRQcm9ncmFtLCBnbC5ERUxFVEVfU1RBVFVTKScsICdmYWxzZScpOworc2hvdWxkQmUo
J2dsLmdldFByb2dyYW1QYXJhbWV0ZXIoc3RhbmRhcmRQcm9ncmFtLCBnbC5MSU5LX1NUQVRVUykn
LCAndHJ1ZScpOworc2hvdWxkQmUoJ3R5cGVvZiBnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHN0YW5k
YXJkUHJvZ3JhbSwgZ2wuVkFMSURBVEVfU1RBVFVTKScsICciYm9vbGVhbiInKTsKK3Nob3VsZEJl
KCd0eXBlb2YgZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihzdGFuZGFyZFByb2dyYW0sIGdsLklORk9f
TE9HX0xFTkdUSCknLCAnIm51bWJlciInKTsKK3Nob3VsZEJlKCdnbC5nZXRQcm9ncmFtUGFyYW1l
dGVyKHN0YW5kYXJkUHJvZ3JhbSwgZ2wuQVRUQUNIRURfU0hBREVSUyknLCAnMicpOworc2hvdWxk
QmUoJ2dsLmdldFByb2dyYW1QYXJhbWV0ZXIoc3RhbmRhcmRQcm9ncmFtLCBnbC5BQ1RJVkVfQVRU
UklCVVRFUyknLCAnMicpOworc2hvdWxkQmVOb25aZXJvKCdnbC5nZXRQcm9ncmFtUGFyYW1ldGVy
KHN0YW5kYXJkUHJvZ3JhbSwgZ2wuQUNUSVZFX0FUVFJJQlVURV9NQVhfTEVOR1RIKScpOworc2hv
dWxkQmUoJ2dsLmdldFByb2dyYW1QYXJhbWV0ZXIoc3RhbmRhcmRQcm9ncmFtLCBnbC5BQ1RJVkVf
VU5JRk9STVMpJywgJzEnKTsKK3Nob3VsZEJlTm9uWmVybygnZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRl
cihzdGFuZGFyZFByb2dyYW0sIGdsLkFDVElWRV9VTklGT1JNX01BWF9MRU5HVEgpJyk7CisKKy8v
IFRlc3QgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyCitzaG91bGRCZSgnZ2wuZ2V0UmVuZGVyYnVm
ZmVyUGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkVOREVSQlVGRkVSX1dJRFRIKScsICcy
Jyk7CitzaG91bGRCZSgnZ2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZF
UiwgZ2wuUkVOREVSQlVGRkVSX0hFSUdIVCknLCAnMicpOworLy8gTm90ZTogd2UgY2FuJ3QgdGVz
dCB0aGUgYWN0dWFsIHZhbHVlIG9mIHRoZSBpbnRlcm5hbCBmb3JtYXQgc2luY2UKKy8vIHRoZSBp
bXBsZW1lbnRhdGlvbiBpcyBhbGxvd2VkIHRvIGNoYW5nZSBpdC4KK3Nob3VsZEJlTm9uWmVybygn
Z2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkVOREVSQlVG
RkVSX0lOVEVSTkFMX0ZPUk1BVCknKTsKK3Nob3VsZEJlTm9uWmVybygnZ2wuZ2V0UmVuZGVyYnVm
ZmVyUGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkVOREVSQlVGRkVSX0RFUFRIX1NJWkUp
Jyk7Cit2YXIgY29sb3JidWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKTsKK3Nob3VsZEJl
KCdnbC5nZXRFcnJvcigpJywgJzAnKTsKK2dsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVG
RkVSLCByZW5kZXJidWZmZXIpOworc2hvdWxkQmUoJ2dsLmdldEVycm9yKCknLCAnMCcpOworZ2wu
cmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLlJHQkE0LCAyLCAyKTsKK3No
b3VsZEJlTm9uWmVybygnZ2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZF
UiwgZ2wuUkVOREVSQlVGRkVSX1JFRF9TSVpFKScpOworc2hvdWxkQmVOb25aZXJvKCdnbC5nZXRS
ZW5kZXJidWZmZXJQYXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBnbC5SRU5ERVJCVUZGRVJfR1JF
RU5fU0laRSknKTsKK3Nob3VsZEJlTm9uWmVybygnZ2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVy
KGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkVOREVSQlVGRkVSX0JMVUVfU0laRSknKTsKK3Nob3VsZEJl
Tm9uWmVybygnZ2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZFUiwgZ2wu
UkVOREVSQlVGRkVSX0FMUEhBX1NJWkUpJyk7CisKKy8vIFRlc3QgZ2V0U2hhZGVyUGFyYW1ldGVy
CitzaG91bGRCZSgnZ2wuZ2V0U2hhZGVyUGFyYW1ldGVyKHN0YW5kYXJkVmVydCwgZ2wuU0hBREVS
X1RZUEUpJywgJ2dsLlZFUlRFWF9TSEFERVInKTsKK3Nob3VsZEJlKCdnbC5nZXRTaGFkZXJQYXJh
bWV0ZXIoc3RhbmRhcmRWZXJ0LCBnbC5ERUxFVEVfU1RBVFVTKScsICdmYWxzZScpOworc2hvdWxk
QmUoJ2dsLmdldFNoYWRlclBhcmFtZXRlcihzdGFuZGFyZFZlcnQsIGdsLkNPTVBJTEVfU1RBVFVT
KScsICd0cnVlJyk7CitzaG91bGRCZSgndHlwZW9mIGdsLmdldFNoYWRlclBhcmFtZXRlcihzdGFu
ZGFyZFZlcnQsIGdsLklORk9fTE9HX0xFTkdUSCknLCAnIm51bWJlciInKTsKK3Nob3VsZEJlTm9u
WmVybygnZ2wuZ2V0U2hhZGVyUGFyYW1ldGVyKHN0YW5kYXJkVmVydCwgZ2wuU0hBREVSX1NPVVJD
RV9MRU5HVEgpJyk7CisKKy8vIFRlc3QgZ2V0VGV4UGFyYW1ldGVyCitnbC5iaW5kRnJhbWVidWZm
ZXIoZ2wuRlJBTUVCVUZGRVIsIGZyYW1lYnVmZmVyKTsKK2dsLmJpbmRUZXh0dXJlKGdsLlRFWFRV
UkVfMkQsIHRleHR1cmUpOworZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhU
VVJFX01BR19GSUxURVIsIGdsLk5FQVJFU1QpOworZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJF
XzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGdsLk5FQVJFU1QpOworZ2wudGV4UGFyYW1ldGVy
aShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfUywgZ2wuQ0xBTVBfVE9fRURHRSk7Citn
bC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFN
UF9UT19FREdFKTsKK3Nob3VsZEJlKCdnbC5nZXRUZXhQYXJhbWV0ZXIoZ2wuVEVYVFVSRV8yRCwg
Z2wuVEVYVFVSRV9NQUdfRklMVEVSKScsICdnbC5ORUFSRVNUJyk7CitzaG91bGRCZSgnZ2wuZ2V0
VGV4UGFyYW1ldGVyKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiknLCAnZ2wu
TkVBUkVTVCcpOworc2hvdWxkQmUoJ2dsLmdldFRleFBhcmFtZXRlcihnbC5URVhUVVJFXzJELCBn
bC5URVhUVVJFX1dSQVBfUyknLCAnZ2wuQ0xBTVBfVE9fRURHRScpOworc2hvdWxkQmUoJ2dsLmdl
dFRleFBhcmFtZXRlcihnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfVCknLCAnZ2wuQ0xB
TVBfVE9fRURHRScpOworCisvLyBUZXN0IGdldFVuaWZvcm0gd2l0aCBhbGwgdmFyaWFudHMgb2Yg
ZGF0YSB0eXBlcworLy8gQm9vbGVhbiB1bmlmb3JtIHZhcmlhYmxlcwordmFyIGJvb2xQcm9ncmFt
ID0gbG9hZFByb2dyYW0oZ2wsICJyZXNvdXJjZXMvYm9vbFVuaWZvcm1TaGFkZXIudmVydCIsICJy
ZXNvdXJjZXMvbm9vcFVuaWZvcm1TaGFkZXIuZnJhZyIpOworc2hvdWxkQmUoJ2dsLmdldFByb2dy
YW1QYXJhbWV0ZXIoYm9vbFByb2dyYW0sIGdsLkxJTktfU1RBVFVTKScsICd0cnVlJyk7Cit2YXIg
YnZhbExvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihib29sUHJvZ3JhbSwgImJ2YWwiKTsKK3Zh
ciBidmFsMkxvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihib29sUHJvZ3JhbSwgImJ2YWwyIik7
Cit2YXIgYnZhbDNMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24oYm9vbFByb2dyYW0sICJidmFs
MyIpOwordmFyIGJ2YWw0TG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKGJvb2xQcm9ncmFtLCAi
YnZhbDQiKTsKK2dsLnVzZVByb2dyYW0oYm9vbFByb2dyYW0pOworZ2wudW5pZm9ybTFpKGJ2YWxM
b2MsIDEpOworZ2wudW5pZm9ybTJpKGJ2YWwyTG9jLCAxLCAwKTsKK2dsLnVuaWZvcm0zaShidmFs
M0xvYywgMSwgMCwgMSk7CitnbC51bmlmb3JtNGkoYnZhbDRMb2MsIDEsIDAsIDEsIDApOworc2hv
dWxkQmUoJ2dsLmdldEVycm9yKCknLCAnMCcpOworc2hvdWxkQmUoJ2dsLmdldFVuaWZvcm0oYm9v
bFByb2dyYW0sIGJ2YWxMb2MpJywgJ3RydWUnKTsKK3Nob3VsZEJlKCdnbC5nZXRVbmlmb3JtKGJv
b2xQcm9ncmFtLCBidmFsMkxvYyknLCAnWzEsIDBdJyk7CitzaG91bGRCZSgnZ2wuZ2V0VW5pZm9y
bShib29sUHJvZ3JhbSwgYnZhbDNMb2MpJywgJ1sxLCAwLCAxXScpOworc2hvdWxkQmUoJ2dsLmdl
dFVuaWZvcm0oYm9vbFByb2dyYW0sIGJ2YWw0TG9jKScsICdbMSwgMCwgMSwgMF0nKTsKKy8vIElu
dGVnZXIgdW5pZm9ybSB2YXJpYWJsZXMKK3ZhciBpbnRQcm9ncmFtID0gbG9hZFByb2dyYW0oZ2ws
ICJyZXNvdXJjZXMvaW50VW5pZm9ybVNoYWRlci52ZXJ0IiwgInJlc291cmNlcy9ub29wVW5pZm9y
bVNoYWRlci5mcmFnIik7CitzaG91bGRCZSgnZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihpbnRQcm9n
cmFtLCBnbC5MSU5LX1NUQVRVUyknLCAndHJ1ZScpOwordmFyIGl2YWxMb2MgPSBnbC5nZXRVbmlm
b3JtTG9jYXRpb24oaW50UHJvZ3JhbSwgIml2YWwiKTsKK3ZhciBpdmFsMkxvYyA9IGdsLmdldFVu
aWZvcm1Mb2NhdGlvbihpbnRQcm9ncmFtLCAiaXZhbDIiKTsKK3ZhciBpdmFsM0xvYyA9IGdsLmdl
dFVuaWZvcm1Mb2NhdGlvbihpbnRQcm9ncmFtLCAiaXZhbDMiKTsKK3ZhciBpdmFsNExvYyA9IGds
LmdldFVuaWZvcm1Mb2NhdGlvbihpbnRQcm9ncmFtLCAiaXZhbDQiKTsKK2dsLnVzZVByb2dyYW0o
aW50UHJvZ3JhbSk7CitnbC51bmlmb3JtMWkoaXZhbExvYywgMSk7CitnbC51bmlmb3JtMmkoaXZh
bDJMb2MsIDIsIDMpOworZ2wudW5pZm9ybTNpKGl2YWwzTG9jLCA0LCA1LCA2KTsKK2dsLnVuaWZv
cm00aShpdmFsNExvYywgNywgOCwgOSwgMTApOworc2hvdWxkQmUoJ2dsLmdldEVycm9yKCknLCAn
MCcpOworc2hvdWxkQmUoJ2dsLmdldFVuaWZvcm0oaW50UHJvZ3JhbSwgaXZhbExvYyknLCAnMScp
Oworc2hvdWxkQmUoJ2dsLmdldFVuaWZvcm0oaW50UHJvZ3JhbSwgaXZhbDJMb2MpJywgJ1syLCAz
XScpOworc2hvdWxkQmUoJ2dsLmdldFVuaWZvcm0oaW50UHJvZ3JhbSwgaXZhbDNMb2MpJywgJ1s0
LCA1LCA2XScpOworc2hvdWxkQmUoJ2dsLmdldFVuaWZvcm0oaW50UHJvZ3JhbSwgaXZhbDRMb2Mp
JywgJ1s3LCA4LCA5LCAxMF0nKTsKKy8vIEZsb2F0IHVuaWZvcm0gdmFyaWFibGVzCit2YXIgZmxv
YXRQcm9ncmFtID0gbG9hZFByb2dyYW0oZ2wsICJyZXNvdXJjZXMvZmxvYXRVbmlmb3JtU2hhZGVy
LnZlcnQiLCAicmVzb3VyY2VzL25vb3BVbmlmb3JtU2hhZGVyLmZyYWciKTsKK3Nob3VsZEJlKCdn
bC5nZXRQcm9ncmFtUGFyYW1ldGVyKGZsb2F0UHJvZ3JhbSwgZ2wuTElOS19TVEFUVVMpJywgJ3Ry
dWUnKTsKK3ZhciBmdmFsTG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKGZsb2F0UHJvZ3JhbSwg
ImZ2YWwiKTsKK3ZhciBmdmFsMkxvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihmbG9hdFByb2dy
YW0sICJmdmFsMiIpOwordmFyIGZ2YWwzTG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKGZsb2F0
UHJvZ3JhbSwgImZ2YWwzIik7Cit2YXIgZnZhbDRMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24o
ZmxvYXRQcm9ncmFtLCAiZnZhbDQiKTsKK2dsLnVzZVByb2dyYW0oZmxvYXRQcm9ncmFtKTsKK2ds
LnVuaWZvcm0xZihmdmFsTG9jLCAxMSk7CitnbC51bmlmb3JtMmYoZnZhbDJMb2MsIDEyLCAxMyk7
CitnbC51bmlmb3JtM2YoZnZhbDNMb2MsIDE0LCAxNSwgMTYpOworZ2wudW5pZm9ybTRmKGZ2YWw0
TG9jLCAxNywgMTgsIDE5LCAyMCk7CitzaG91bGRCZSgnZ2wuZ2V0RXJyb3IoKScsICcwJyk7Citz
aG91bGRCZSgnZ2wuZ2V0VW5pZm9ybShmbG9hdFByb2dyYW0sIGZ2YWxMb2MpJywgJzExJyk7Citz
aG91bGRCZSgnZ2wuZ2V0VW5pZm9ybShmbG9hdFByb2dyYW0sIGZ2YWwyTG9jKScsICdbMTIsIDEz
XScpOworc2hvdWxkQmUoJ2dsLmdldFVuaWZvcm0oZmxvYXRQcm9ncmFtLCBmdmFsM0xvYyknLCAn
WzE0LCAxNSwgMTZdJyk7CitzaG91bGRCZSgnZ2wuZ2V0VW5pZm9ybShmbG9hdFByb2dyYW0sIGZ2
YWw0TG9jKScsICdbMTcsIDE4LCAxOSwgMjBdJyk7CisvLyBNYXRyaXggdW5pZm9ybSB2YXJpYWJs
ZXMKK3ZhciBtYXRQcm9ncmFtID0gbG9hZFByb2dyYW0oZ2wsICJyZXNvdXJjZXMvbWF0VW5pZm9y
bVNoYWRlci52ZXJ0IiwgInJlc291cmNlcy9ub29wVW5pZm9ybVNoYWRlci5mcmFnIik7CitzaG91
bGRCZSgnZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihtYXRQcm9ncmFtLCBnbC5MSU5LX1NUQVRVUykn
LCAndHJ1ZScpOwordmFyIG12YWwyTG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKG1hdFByb2dy
YW0sICJtdmFsMiIpOwordmFyIG12YWwzTG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKG1hdFBy
b2dyYW0sICJtdmFsMyIpOwordmFyIG12YWw0TG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKG1h
dFByb2dyYW0sICJtdmFsNCIpOworZ2wudXNlUHJvZ3JhbShtYXRQcm9ncmFtKTsKK2dsLnVuaWZv
cm1NYXRyaXgyZnYobXZhbDJMb2MsIGZhbHNlLCBbMSwgMiwgMywgNF0pOworZ2wudW5pZm9ybU1h
dHJpeDNmdihtdmFsM0xvYywgZmFsc2UsIFs1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxM10p
OworZ2wudW5pZm9ybU1hdHJpeDRmdihtdmFsNExvYywgZmFsc2UsIFsxNCwgMTUsIDE2LCAxNywg
MTgsIDE5LCAyMCwgMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOV0pOworc2hvdWxk
QmUoJ2dsLmdldEVycm9yKCknLCAnMCcpOworc2hvdWxkQmUoJ2dsLmdldFVuaWZvcm0obWF0UHJv
Z3JhbSwgbXZhbDJMb2MpJywgJ1sxLCAyLCAzLCA0XScpOworc2hvdWxkQmUoJ2dsLmdldFVuaWZv
cm0obWF0UHJvZ3JhbSwgbXZhbDNMb2MpJywgJ1s1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAx
M10nKTsKK3Nob3VsZEJlKCdnbC5nZXRVbmlmb3JtKG1hdFByb2dyYW0sIG12YWw0TG9jKScsICdb
MTQsIDE1LCAxNiwgMTcsIDE4LCAxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LCAyNSwgMjYsIDI3LCAy
OCwgMjldJyk7CisKKy8vIFRlc3QgZ2V0VmVydGV4QXR0cmliCit2YXIgYXJyYXkgPSBuZXcgV2Vi
R0xGbG9hdEFycmF5KFsxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywg
MTQsIDE1LCAxNl0pOworZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGJ1ZmZlcik7Citn
bC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgYXJyYXksIGdsLkRZTkFNSUNfRFJBVyk7Cisv
LyBWZXJ0ZXggYXR0cmlidXRlIDAgaXMgc3BlY2lhbCBpbiB0aGF0IGl0IGhhcyBubyBjdXJyZW50
IHN0YXRlLCBzbworLy8gZmV0Y2hpbmcgR0xfQ1VSUkVOVF9WRVJURVhfQVRUUklCIGdlbmVyYXRl
cyBhbiBlcnJvci4gVXNlIGF0dHJpYnV0ZQorLy8gMSBmb3IgdGhlc2UgdGVzdHMgaW5zdGVhZC4K
K2dsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDEpOworZ2wudmVydGV4QXR0cmliUG9pbnRlcigx
LCA0LCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworc2hvdWxkQmVOb25OdWxsKCdnbC5nZXRWZXJ0
ZXhBdHRyaWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElORyknKTsKK3No
b3VsZEJlKCdnbC5nZXRWZXJ0ZXhBdHRyaWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFC
TEVEKScsICd0cnVlJyk7CitzaG91bGRCZSgnZ2wuZ2V0VmVydGV4QXR0cmliKDEsIGdsLlZFUlRF
WF9BVFRSSUJfQVJSQVlfU0laRSknLCAnNCcpOworc2hvdWxkQmUoJyhnbC5nZXRWZXJ0ZXhBdHRy
aWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9TVFJJREUpID09IDApIHx8IChnbC5nZXRWZXJ0
ZXhBdHRyaWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9TVFJJREUpID09IDQgKiBnbC5zaXpl
SW5CeXRlcyhnbC5GTE9BVCkpJywgJ3RydWUnKTsKK3Nob3VsZEJlKCdnbC5nZXRWZXJ0ZXhBdHRy
aWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFKScsICdnbC5GTE9BVCcpOworc2hvdWxk
QmUoJ2dsLmdldFZlcnRleEF0dHJpYigxLCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX05PUk1BTEla
RUQpJywgJ2ZhbHNlJyk7CitnbC5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoMSk7CitzaG91bGRC
ZSgnZ2wuZ2V0VmVydGV4QXR0cmliKDEsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRCkn
LCAnZmFsc2UnKTsKK2dsLnZlcnRleEF0dHJpYjRmKDEsIDUsIDYsIDcsIDgpOworc2hvdWxkQmUo
J2dsLmdldFZlcnRleEF0dHJpYigxLCBnbC5DVVJSRU5UX1ZFUlRFWF9BVFRSSUIpJywgJ1s1LCA2
LCA3LCA4XScpOworc2hvdWxkQmUoJ2dsLmdldEVycm9yKCknLCAnMCcpOworCitzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2Ny
aXB0LXRlc3RzL2luY29ycmVjdC1jb250ZXh0LW9iamVjdC1iZWhhdmlvdXIuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL2luY29ycmVj
dC1jb250ZXh0LW9iamVjdC1iZWhhdmlvdXIuanMJKHJldmlzaW9uIDUxMzQxKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL2luY29ycmVjdC1jb250ZXh0LW9i
amVjdC1iZWhhdmlvdXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTMxLDE3ICszMSwxMiBAQCBzaG91
bGRUaHJvdygiY29udGV4dEEuYmluZFJlbmRlcmJ1ZmZlcihjCiBzaG91bGRUaHJvdygiY29udGV4
dEEuYmluZFRleHR1cmUoY29udGV4dEEuVEVYVFVSRV8yRCwgdGV4dHVyZUIpIik7CiBzaG91bGRU
aHJvdygiY29udGV4dEEuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoY29udGV4dEEuRlJBTUVCVUZG
RVIsIGNvbnRleHRBLkRFUFRIX0FUVEFDSE1FTlQsIGNvbnRleHRBLlJFTkRFUkJVRkZFUiwgcmVu
ZGVyQnVmZmVyQikiKTsKIHNob3VsZFRocm93KCJjb250ZXh0QS5mcmFtZWJ1ZmZlclRleHR1cmUy
RChjb250ZXh0QS5GUkFNRUJVRkZFUiwgY29udGV4dEEuQ09MT1JfQVRUQUNITUVOVDAsIGNvbnRl
eHRBLlRFWFRVUkVfMkQsIHRleHR1cmVCLCAwKSIpOwotc2hvdWxkVGhyb3coImNvbnRleHRBLmdl
dFByb2dyYW1pKHByb2dyYW1CLCAwKSIpOwotc2hvdWxkVGhyb3coImNvbnRleHRBLmdldFByb2dy
YW1pdihwcm9ncmFtQiwgMCkiKTsKK3Nob3VsZFRocm93KCJjb250ZXh0QS5nZXRQcm9ncmFtUGFy
YW1ldGVyKHByb2dyYW1CLCAwKSIpOwogc2hvdWxkVGhyb3coImNvbnRleHRBLmdldFByb2dyYW1J
bmZvTG9nKHByb2dyYW1CLCAwKSIpOwotc2hvdWxkVGhyb3coImNvbnRleHRBLmdldFNoYWRlcmko
c2hhZGVyQiwgMCkiKTsKLXNob3VsZFRocm93KCJjb250ZXh0QS5nZXRTaGFkZXJpdihzaGFkZXJC
LCAwKSIpOworc2hvdWxkVGhyb3coImNvbnRleHRBLmdldFNoYWRlclBhcmFtZXRlcihzaGFkZXJC
LCAwKSIpOwogc2hvdWxkVGhyb3coImNvbnRleHRBLmdldFNoYWRlckluZm9Mb2coc2hhZGVyQiwg
MCkiKTsKIHNob3VsZFRocm93KCJjb250ZXh0QS5nZXRTaGFkZXJTb3VyY2Uoc2hhZGVyQikiKTsK
LXNob3VsZFRocm93KCJjb250ZXh0QS5nZXRVbmlmb3JtZihwcm9ncmFtQiwgbG9jYXRpb25BKSIp
Owotc2hvdWxkVGhyb3coImNvbnRleHRBLmdldFVuaWZvcm1mdihwcm9ncmFtQiwgbG9jYXRpb25B
KSIpOwotc2hvdWxkVGhyb3coImNvbnRleHRBLmdldFVuaWZvcm1pKHByb2dyYW1CLCBsb2NhdGlv
bkEpIik7Ci1zaG91bGRUaHJvdygiY29udGV4dEEuZ2V0VW5pZm9ybWl2KHByb2dyYW1CLCBsb2Nh
dGlvbkEpIik7CitzaG91bGRUaHJvdygiY29udGV4dEEuZ2V0VW5pZm9ybShwcm9ncmFtQiwgbG9j
YXRpb25BKSIpOwogc2hvdWxkVGhyb3coImNvbnRleHRBLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9n
cmFtQiwgJ3VfbW9kZWxWaWV3UHJvak1hdHJpeCcpIik7CiAKIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMv
bnVsbC1vYmplY3QtYmVoYXZpb3VyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9udWxsLW9iamVjdC1iZWhhdmlvdXIuanMJKHJldmlz
aW9uIDUxMzQxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3Rz
L251bGwtb2JqZWN0LWJlaGF2aW91ci5qcwkod29ya2luZyBjb3B5KQpAQCAtMjAsMTcgKzIwLDEy
IEBAIHNob3VsZEJlVW5kZWZpbmVkKCJjb250ZXh0LmJpbmRSZW5kZXJidWYKIHNob3VsZEJlVW5k
ZWZpbmVkKCJjb250ZXh0LmJpbmRUZXh0dXJlKGNvbnRleHQuVEVYVFVSRV8yRCwgMCkiKTsKIHNo
b3VsZEJlVW5kZWZpbmVkKCJjb250ZXh0LmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGNvbnRleHQu
RlJBTUVCVUZGRVIsIGNvbnRleHQuREVQVEhfQVRUQUNITUVOVCwgY29udGV4dC5SRU5ERVJCVUZG
RVIsIDApIik7CiBzaG91bGRCZVVuZGVmaW5lZCgiY29udGV4dC5mcmFtZWJ1ZmZlclRleHR1cmUy
RChjb250ZXh0LkZSQU1FQlVGRkVSLCBjb250ZXh0LkNPTE9SX0FUVEFDSE1FTlQwLCBjb250ZXh0
LlRFWFRVUkVfMkQsIDAsIDApIik7Ci1zaG91bGRUaHJvdygiY29udGV4dC5nZXRQcm9ncmFtaSh1
bmRlZmluZWQsIDApIik7Ci1zaG91bGRUaHJvdygiY29udGV4dC5nZXRQcm9ncmFtaXYodW5kZWZp
bmVkLCAwKSIpOworc2hvdWxkVGhyb3coImNvbnRleHQuZ2V0UHJvZ3JhbVBhcmFtZXRlcih1bmRl
ZmluZWQsIDApIik7CiBzaG91bGRUaHJvdygiY29udGV4dC5nZXRQcm9ncmFtSW5mb0xvZyh1bmRl
ZmluZWQsIDApIik7Ci1zaG91bGRUaHJvdygiY29udGV4dC5nZXRTaGFkZXJpKHVuZGVmaW5lZCwg
MCkiKTsKLXNob3VsZFRocm93KCJjb250ZXh0LmdldFNoYWRlcml2KHVuZGVmaW5lZCwgMCkiKTsK
K3Nob3VsZFRocm93KCJjb250ZXh0LmdldFNoYWRlclBhcmFtZXRlcih1bmRlZmluZWQsIDApIik7
CiBzaG91bGRUaHJvdygiY29udGV4dC5nZXRTaGFkZXJJbmZvTG9nKHVuZGVmaW5lZCwgMCkiKTsK
IHNob3VsZFRocm93KCJjb250ZXh0LmdldFNoYWRlclNvdXJjZSh1bmRlZmluZWQpIik7Ci1zaG91
bGRUaHJvdygiY29udGV4dC5nZXRVbmlmb3JtZih1bmRlZmluZWQsIDApIik7Ci1zaG91bGRUaHJv
dygiY29udGV4dC5nZXRVbmlmb3JtZnYodW5kZWZpbmVkLCAwKSIpOwotc2hvdWxkVGhyb3coImNv
bnRleHQuZ2V0VW5pZm9ybWkodW5kZWZpbmVkLCAwKSIpOwotc2hvdWxkVGhyb3coImNvbnRleHQu
Z2V0VW5pZm9ybWl2KHVuZGVmaW5lZCwgMCkiKTsKK3Nob3VsZFRocm93KCJjb250ZXh0LmdldFVu
aWZvcm0odW5kZWZpbmVkLCAwKSIpOwogc2hvdWxkVGhyb3coImNvbnRleHQuZ2V0VW5pZm9ybUxv
Y2F0aW9uKHVuZGVmaW5lZCwgJ2ZvbycpIik7CiAKIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcwko
cmV2aXNpb24gNTEzNDEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMTU5LDYgKzE1OSw0MiBAQCBmdW5jdGlvbiBzaG91
bGRFdmFsdWF0ZVRvKGFjdHVhbCwgZXhwZWN0CiAgIH0KIH0KIAorZnVuY3Rpb24gc2hvdWxkQmVO
b25aZXJvKF9hKQoreworICB2YXIgZXhjZXB0aW9uOworICB2YXIgX2F2OworICB0cnkgeworICAg
ICBfYXYgPSBldmFsKF9hKTsKKyAgfSBjYXRjaCAoZSkgeworICAgICBleGNlcHRpb24gPSBlOwor
ICB9CisKKyAgaWYgKGV4Y2VwdGlvbikKKyAgICB0ZXN0RmFpbGVkKF9hICsgIiBzaG91bGQgYmUg
bm9uLXplcm8uIFRocmV3IGV4Y2VwdGlvbiAiICsgZXhjZXB0aW9uKTsKKyAgZWxzZSBpZiAoX2F2
ICE9IDApCisgICAgdGVzdFBhc3NlZChfYSArICIgaXMgbm9uLXplcm8uIik7CisgIGVsc2UKKyAg
ICB0ZXN0RmFpbGVkKF9hICsgIiBzaG91bGQgYmUgbm9uLXplcm8uIFdhcyAiICsgX2F2KTsKK30K
KworZnVuY3Rpb24gc2hvdWxkQmVOb25OdWxsKF9hKQoreworICB2YXIgZXhjZXB0aW9uOworICB2
YXIgX2F2OworICB0cnkgeworICAgICBfYXYgPSBldmFsKF9hKTsKKyAgfSBjYXRjaCAoZSkgewor
ICAgICBleGNlcHRpb24gPSBlOworICB9CisKKyAgaWYgKGV4Y2VwdGlvbikKKyAgICB0ZXN0RmFp
bGVkKF9hICsgIiBzaG91bGQgYmUgbm9uLW51bGwuIFRocmV3IGV4Y2VwdGlvbiAiICsgZXhjZXB0
aW9uKTsKKyAgZWxzZSBpZiAoX2F2ICE9IG51bGwpCisgICAgdGVzdFBhc3NlZChfYSArICIgaXMg
bm9uLW51bGwuIik7CisgIGVsc2UKKyAgICB0ZXN0RmFpbGVkKF9hICsgIiBzaG91bGQgYmUgbm9u
LW51bGwuIFdhcyAiICsgX2F2KTsKK30KKwogZnVuY3Rpb24gc2hvdWxkQmVVbmRlZmluZWQoX2Ep
CiB7CiAgIHZhciBleGNlcHRpb247Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>43783</attachid>
            <date>2009-11-24 10:26:41 -0800</date>
            <delta_ts>2009-11-24 14:18:20 -0800</delta_ts>
            <desc>Revised patch</desc>
            <filename>get-calls.patch</filename>
            <type>text/plain</type>
            <size>196672</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MTM0MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTM4IEBACisyMDA5LTExLTIzICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBD
aGFuZ2UgZ2V0Li4uIGNhbGxzIHRvIGxhdGVzdCBzcGVjCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDA5MQorCisgICAgICAgIFJlbW92ZWQgb2xkIHZl
cnNpb25zIG9mIGdldCBjYWxscyBvbiBXZWJHTFJlbmRlcmluZ0NvbnRleHQgYW5kCisgICAgICAg
IGFkZGVkIG5ldyBvbmVzIHBlciBzcGVjIHJldHVybmluZyAiYW55Ii4gTmV3IGNvZGUgc2ltcGxp
ZmllcworICAgICAgICBHcmFwaGljc0NvbnRleHQzRCBhbmQgZml4ZXMgcHJldmlvdXNseSB1bmlt
cGxlbWVudGVkIHJvdXRpbmVzLgorICAgICAgICBBZGRlZCBjdXN0b20gSlMgYW5kIFY4IGJpbmRp
bmdzLiBBZGRlZCBleGhhdXN0aXZlIHRlc3QgY2FzZQorICAgICAgICBleGVyY2lzaW5nIGFsbCBu
ZXcgY29kZSBwYXRocy4gVXBkYXRlZCBwcmVleGlzdGluZyB0ZXN0IGNhc2VzIGZvcgorICAgICAg
ICBuZXcgQVBJcy4gRml4ZWQgcHJlZXhpc3RpbmcgYnVncyBpbiBXZWJLaXQncyBhbmQgQ2hyb21l
J3MgV2ViR0wKKyAgICAgICAgaW1wbGVtZW50YXRpb25zLgorCisgICAgICAgIFJhbiBXZWJHTCBs
YXlvdXQgdGVzdHMgaW4gV2ViS2l0IChjbGVhbikgYW5kIENocm9tZSAoY291cGxlIG9mCisgICAg
ICAgIHByZWV4aXN0aW5nIGtub3duIGZhaWx1cmVzKSBhbmQgbWFudWFsIFdlYkdMIHRlc3RzIGlu
IGJvdGgKKyAgICAgICAgYnJvd3NlcnMuCisKKyAgICAgICAgVGVzdDogZmFzdC9jYW52YXMvd2Vi
Z2wvZ2wtb2JqZWN0LWdldC1jYWxscy5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnRvSlMpOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKFdlYkNvcmU6Omdl
dE9iamVjdFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpnZXRQcm9ncmFtUGFyYW1ldGVy
SGVscGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRC
dWZmZXJQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQcm9ncmFtUGFyYW1ldGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRSZW5kZXJidWZmZXJQYXJh
bWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFNo
YWRlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Z2V0VGV4UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnZXRVbmlmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnZXRWZXJ0ZXhBdHRyaWIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OEN1c3RvbUJpbmRpbmcuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJl
bmRlcmluZ0NvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9WOCk6CisgICAg
ICAgIChXZWJDb3JlOjopOgorICAgICAgICAoV2ViQ29yZTo6Z2V0T2JqZWN0UGFyYW1ldGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OmdldFByb2dyYW1QYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0FMTEJBQ0tfRlVOQ19ERUNMKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNPYmpl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzT2JqZWN0OjpDYW52YXNPYmplY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzT2JqZWN0OjpzZXRPYmplY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzT2JqZWN0OjpkZWxldGVPYmplY3QpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc09iamVjdC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMQnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xCdWZmZXI6OldlYkdMQnVmZmVyKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TEJ1ZmZlci5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZvOjpXZWJHTEdldEluZm8pOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZvOjp+V2ViR0xHZXRJbmZvKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMR2V0SW5mbzo6Z2V0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEdldElu
Zm86OmdldEJvb2wpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZvOjpnZXRGbG9hdCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEdldEluZm86OmdldExvbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xHZXRJbmZvOjpnZXRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xH
ZXRJbmZvOjpnZXRVbnNpZ25lZExvbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZv
OjpnZXRXZWJHTEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEdldEluZm86OmdldFdl
YkdMRmxvYXRBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEdldEluZm86OmdldFdlYkdM
RnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZvOjpnZXRXZWJHTElu
dEFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMR2V0SW5mbzo6Z2V0V2ViR0xQcm9ncmFt
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMR2V0SW5mbzo6Z2V0V2ViR0xSZW5kZXJidWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZvOjpnZXRXZWJHTFRleHR1cmUpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xHZXRJbmZvOjpnZXRXZWJHTFVuc2lnbmVkQnl0ZUFycmF5KToK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEdldEluZm8uaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTEdldEluZm86Oik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJidWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJidWZmZXI6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmJ1ZmZlcjo6V2ViR0xSZW5kZXJidWZm
ZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmg6CisgICAgICAg
ICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMU3RhdGVSZXN0b3Jlcjo6V2ViR0xTdGF0ZVJlc3RvcmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMU3RhdGVSZXN0b3Jlcjo6fldlYkdMU3RhdGVSZXN0b3Jlcik6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OldlYkdMUmVuZGVyaW5nQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmFjdGl2ZVRleHR1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpiaW5kQnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmluZEZyYW1lYnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmluZFJlbmRlcmJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJpbmRUZXh0
dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0QnVmZmVy
UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dDo6Z2V0UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dDo6Z2V0UHJvZ3JhbVBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFByb2dyYW1JbmZvTG9nKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2hhZGVyUGFyYW1l
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2hhZGVy
SW5mb0xvZyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFNo
YWRlclNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omdl
dFN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFRl
eFBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omdl
dFVuaWZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRW
ZXJ0ZXhBdHRyaWIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1
c2VQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0
Qm9vbGVhblBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmdldEZsb2F0UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dDo6Z2V0SW50UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVy
aW5nQ29udGV4dDo6Z2V0TG9uZ1BhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmdldFVuc2lnbmVkTG9uZ1BhcmFtZXRlcik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFdlYkdMRmxvYXRBcnJheVBhcmFtZXRlcik6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFdlYkdMSW50QXJy
YXlQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRXZWJHTFVuc2lnbmVkQnl0ZUFycmF5UGFyYW1ldGVyKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHQuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFRleHR1cmU6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFRleHR1cmU6OldlYkdMVGV4dHVyZSk6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xUZXh0dXJlLmg6CisgICAgICAgICogbWFudWFsLXRlc3RzL3dlYmdsL3Jlc291cmNl
cy91dGlsczNkLmpzOgorICAgICAgICAoaW5pdFdlYkdMKToKKyAgICAgICAgKGxvYWRTaGFkZXIp
OgorICAgICAgICAoRnJhbWVyYXRlLnByb3RvdHlwZS5zbmFwc2hvdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OmdldEJvb2xlYW52KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEOjpnZXRCdWZmZXJQYXJhbWV0ZXJpdik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6Z2V0RmxvYXR2KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW50ZWdlcnYpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1pdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlcml2KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRUZXhQYXJhbWV0ZXJmdik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VGV4UGFyYW1ldGVyaXYpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1mdik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWl2KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJmdik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliaXYpOgorCiAyMDA5LTExLTI0ICBK
b3NlcGggUGVjb3Jhcm8gIDxqb2VwZWNrQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgUGF2ZWwgRmVsZG1hbi4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiA1MTM0MSkKKysrIFdlYkNvcmUvV2Vi
Q29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgzLDYgKzEyODMsOCBAQAogICAgICAgICAg
ICAgJ2h0bWwvY2FudmFzL1dlYkdMRmxvYXRBcnJheS5oJywKICAgICAgICAgICAgICdodG1sL2Nh
bnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2Vi
R0xGcmFtZWJ1ZmZlci5oJywKKyAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTEdldEluZm8u
Y3BwJywKKyAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTEdldEluZm8uaCcsCiAgICAgICAg
ICAgICAnaHRtbC9jYW52YXMvQ2FudmFzR3JhZGllbnQuY3BwJywKICAgICAgICAgICAgICdodG1s
L2NhbnZhcy9DYW52YXNHcmFkaWVudC5oJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJH
TEludEFycmF5LmNwcCcsCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gNTEzNDEpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTE5OSw2ICsxMTk5LDggQEAKIAkJNjVE
RjMyM0MwOUQxREU2NTAwMEJFMzI1IC8qIEpTQ2FudmFzUGF0dGVybi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVERjMyMzYwOUQxREU2NTAwMEJFMzI1
IC8qIEpTQ2FudmFzUGF0dGVybi5oICovOyB9OwogCQk2NURGMzI2MTA5RDFFMTk5MDAwQkUzMjUg
LyogVXNlckFnZW50U3R5bGVTaGVldHNEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NjU4MUFGMDlEMTRFRTYwMDBFNjFENyAvKiBVc2VyQWdl
bnRTdHlsZVNoZWV0c0RhdGEuY3BwICovOyB9OwogCQk2NUZFQTg2OTA5ODMzQURFMDBCRUQ0QUIg
LyogUGFnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2NUZFQTg2ODA5ODMzQURFMDBCRUQ0QUIgLyogUGFnZS5jcHAgKi87IH07CisJCTZFNDdFNjYw
MTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEdldEluZm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU0N0U2NUUxMEI3OTQ0QjAwQjE4NkM4IC8qIFdl
YkdMR2V0SW5mby5jcHAgKi87IH07CisJCTZFNDdFNjYxMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJH
TEdldEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDZFNDdFNjVGMTBCNzk0NEIwMEIxODZDOCAvKiBXZWJHTEdldEluZm8uaCAqLzsgfTsKIAkJNzI2
MjZFMDIwRUYwMjJGRTAwQTA3RTIwIC8qIEZvbnRGYXN0UGF0aC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjYyNkUwMTBFRjAyMkZFMDBBMDdFMjAg
LyogRm9udEZhc3RQYXRoLmNwcCAqLzsgfTsKIAkJNzU0MTMzQTgxMDJFMDBFODAwMDc1RDAwIC8q
IEluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDc1NDEzM0E3MTAyRTAwRTgwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1l
bGluZUFnZW50LmggKi87IH07CiAJCTc1NDEzM0FBMTAyRTAwRjQwMDA3NUQwMCAvKiBJbnNwZWN0
b3JUaW1lbGluZUFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDc1NDEzM0E5MTAyRTAwRjQwMDA3NUQwMCAvKiBJbnNwZWN0b3JUaW1lbGluZUFn
ZW50LmNwcCAqLzsgfTsKQEAgLTY1MDcsNiArNjUwOSw4IEBACiAJCTY1REYzMjM2MDlEMURFNjUw
MDBCRTMyNSAvKiBKU0NhbnZhc1BhdHRlcm4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTQ2FudmFzUGF0dGVybi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2
NUY4MDY5NzA1NEQ5Rjg2MDA4QkY3NzYgLyogQmxvY2tFeGNlcHRpb25zLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQmxvY2tFeGNl
cHRpb25zLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJz
ID0gMDsgfTsKIAkJNjVGRUE4NjgwOTgzM0FERTAwQkVENEFCIC8qIFBhZ2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk2RTQ3RTY1RTEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xHZXRJbmZvLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkdMR2V0SW5mby5jcHA7
IHBhdGggPSBjYW52YXMvV2ViR0xHZXRJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNkU0N0U2NUYxMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMR2V0SW5mby5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJHTEdldEluZm8uaDsgcGF0aCA9IGNhbnZhcy9X
ZWJHTEdldEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2MjZFMDEwRUYw
MjJGRTAwQTA3RTIwIC8qIEZvbnRGYXN0UGF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBGb250RmFzdFBhdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3NTQxMzNBNzEwMkUwMEU4MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JUaW1lbGluZUFnZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1NDEzM0E5MTAyRTAwRjQwMDA3NUQw
MCAvKiBJbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEluc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTA2NDAsNiArMTA2NDQsOCBAQAogCQkJCTQ5QzdCOUFFMTA0MkQzMkUw
MDA5RDQ0NyAvKiBXZWJHTEZyYW1lYnVmZmVyLmNwcCAqLywKIAkJCQk0OUM3QjlBRjEwNDJEMzJF
MDAwOUQ0NDcgLyogV2ViR0xGcmFtZWJ1ZmZlci5oICovLAogCQkJCTQ5QzdCOUIwMTA0MkQzMkUw
MDA5RDQ0NyAvKiBXZWJHTEZyYW1lYnVmZmVyLmlkbCAqLywKKwkJCQk2RTQ3RTY1RTEwQjc5NDRC
MDBCMTg2QzggLyogV2ViR0xHZXRJbmZvLmNwcCAqLywKKwkJCQk2RTQ3RTY1RjEwQjc5NDRCMDBC
MTg2QzggLyogV2ViR0xHZXRJbmZvLmggKi8sCiAJCQkJNDk0ODRGQjMxMDJDRjIzQzAwMTg3REQz
IC8qIENhbnZhc0dyYWRpZW50LmNwcCAqLywKIAkJCQk0OTQ4NEZCNDEwMkNGMjNDMDAxODdERDMg
LyogQ2FudmFzR3JhZGllbnQuaCAqLywKIAkJCQk0OTQ4NEZCNTEwMkNGMjNDMDAxODdERDMgLyog
Q2FudmFzR3JhZGllbnQuaWRsICovLApAQCAtMTgxMzQsNiArMTgxNDAsNyBAQAogCQkJCUUxMjQ3
NDg0MTBBQTE2MUQwMEI3OTQ5MyAvKiBBdXRoZW50aWNhdGlvbkNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTM4MkRGNTgxMEE4RDVDOTAwOTI1NjUyIC8qIENvbG9yU3BhY2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUFCMzFDOTFFMTBBRTFCOEUwMDBDN0I5MiAvKiBMaW5lQ2xhbXBWYWx1ZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNkU0N0U2NjExMEI3OTQ0QjAwQjE4NkM4IC8qIFdlYkdMR2V0
SW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yMDI3Nyw2ICsyMDI4NCw3IEBACiAJCQkJMTQ3OUZB
RUYxMDlBRTM3NTAwREVENjU1IC8qIFJlbmRlclJ1YnlCYXNlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTE0NzlGQUYxMTA5QUUzNzUwMERFRDY1NSAvKiBSZW5kZXJSdWJ5UnVuLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTE0NzlGQUYzMTA5QUUzNzUwMERFRDY1NSAvKiBSZW5kZXJSdWJ5VGV4dC5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk2RTQ3RTY2MDEwQjc5NDRCMDBCMTg2QzggLyogV2ViR0xH
ZXRJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dl
YkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAJKHJldmlzaW9uIDUxMzQx
KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDExICszMywyNSBAQAogI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGUuaCIKICNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJ
bWFnZUVsZW1lbnQuaCIKLSNpbmNsdWRlICJKU1dlYkdMRmxvYXRBcnJheS5oIgotI2luY2x1ZGUg
IkpTV2ViR0xJbnRBcnJheS5oIgogI2luY2x1ZGUgIkpTSFRNTENhbnZhc0VsZW1lbnQuaCIKICNp
bmNsdWRlICJKU0hUTUxJbWFnZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJKU1dlYkdMQnVmZmVyLmgi
CisjaW5jbHVkZSAiSlNXZWJHTEZsb2F0QXJyYXkuaCIKKyNpbmNsdWRlICJKU1dlYkdMRnJhbWVi
dWZmZXIuaCIKKyNpbmNsdWRlICJKU1dlYkdMSW50QXJyYXkuaCIKKyNpbmNsdWRlICJKU1dlYkdM
UHJvZ3JhbS5oIgorI2luY2x1ZGUgIkpTV2ViR0xSZW5kZXJidWZmZXIuaCIKKyNpbmNsdWRlICJK
U1dlYkdMU2hhZGVyLmgiCisjaW5jbHVkZSAiSlNXZWJHTFRleHR1cmUuaCIKKyNpbmNsdWRlICJK
U1dlYkdMVW5zaWduZWRCeXRlQXJyYXkuaCIKICNpbmNsdWRlICJKU1dlYktpdENTU01hdHJpeC5o
IgorI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiV2ViR0xCdWZmZXIuaCIK
KyNpbmNsdWRlICJXZWJHTEdldEluZm8uaCIKKyNpbmNsdWRlICJXZWJHTEZsb2F0QXJyYXkuaCIK
KyNpbmNsdWRlICJXZWJHTEZyYW1lYnVmZmVyLmgiCisjaW5jbHVkZSAiV2ViR0xJbnRBcnJheS5o
IgorI2luY2x1ZGUgIldlYkdMUHJvZ3JhbS5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4K
ICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9Pd25GYXN0TWFsbG9j
UHRyLmg+CkBAIC04Nyw2ICsxMDEsMjE0IEBAIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OmJ1ZmZlclMKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIAorSlNWYWx1ZSB0b0pT
KEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3Qg
V2ViR0xHZXRJbmZvJiBpbmZvKQoreworICAgIHN3aXRjaCAoaW5mby5nZXRUeXBlKCkpIHsKKyAg
ICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVCb29sOgorICAgICAgICByZXR1cm4ganNCb29sZWFu
KGluZm8uZ2V0Qm9vbCgpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVGbG9hdDoKKyAg
ICAgICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMsIGluZm8uZ2V0RmxvYXQoKSk7CisgICAgY2FzZSBX
ZWJHTEdldEluZm86OmtUeXBlTG9uZzoKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMsIGlu
Zm8uZ2V0TG9uZygpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVOdWxsOgorICAgICAg
ICByZXR1cm4ganNOdWxsKCk7CisgICAgY2FzZSBXZWJHTEdldEluZm86OmtUeXBlU3RyaW5nOgor
ICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgaW5mby5nZXRTdHJpbmcoKSk7CisgICAgY2Fz
ZSBXZWJHTEdldEluZm86OmtUeXBlVW5zaWduZWRMb25nOgorICAgICAgICByZXR1cm4ganNOdW1i
ZXIoZXhlYywgaW5mby5nZXRVbnNpZ25lZExvbmcoKSk7CisgICAgY2FzZSBXZWJHTEdldEluZm86
OmtUeXBlV2ViR0xCdWZmZXI6CisgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVj
dCwgaW5mby5nZXRXZWJHTEJ1ZmZlcigpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVX
ZWJHTEZsb2F0QXJyYXk6CisgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwg
aW5mby5nZXRXZWJHTEZsb2F0QXJyYXkoKSk7CisgICAgY2FzZSBXZWJHTEdldEluZm86OmtUeXBl
V2ViR0xGcmFtZWJ1ZmZlcjoKKyAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0
LCBpbmZvLmdldFdlYkdMRnJhbWVidWZmZXIoKSk7CisgICAgY2FzZSBXZWJHTEdldEluZm86OmtU
eXBlV2ViR0xJbnRBcnJheToKKyAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0
LCBpbmZvLmdldFdlYkdMSW50QXJyYXkoKSk7CisgICAgLy8gRklYTUU6IGltcGxlbWVudCBXZWJH
TE9iamVjdEFycmF5CisgICAgLy8gY2FzZSBXZWJHTEdldEluZm86OmtUeXBlV2ViR0xPYmplY3RB
cnJheToKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVXZWJHTFByb2dyYW06CisgICAgICAg
IHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgaW5mby5nZXRXZWJHTFByb2dyYW0oKSk7
CisgICAgY2FzZSBXZWJHTEdldEluZm86OmtUeXBlV2ViR0xSZW5kZXJidWZmZXI6CisgICAgICAg
IHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgaW5mby5nZXRXZWJHTFJlbmRlcmJ1ZmZl
cigpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVXZWJHTFRleHR1cmU6CisgICAgICAg
IHJldHVybiB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgaW5mby5nZXRXZWJHTFRleHR1cmUoKSk7
CisgICAgY2FzZSBXZWJHTEdldEluZm86OmtUeXBlV2ViR0xVbnNpZ25lZEJ5dGVBcnJheToKKyAg
ICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBpbmZvLmdldFdlYkdMVW5zaWdu
ZWRCeXRlQXJyYXkoKSk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQorfQorCitlbnVtIE9iamVjdFR5
cGUgeworICAgIGtCdWZmZXIsIGtSZW5kZXJidWZmZXIsIGtUZXh0dXJlLCBrVmVydGV4QXR0cmli
Cit9OworCitzdGF0aWMgSlNWYWx1ZSBnZXRPYmplY3RQYXJhbWV0ZXIoSlNXZWJHTFJlbmRlcmlu
Z0NvbnRleHQqIG9iaiwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzLCBPYmpl
Y3RUeXBlIG9iamVjdFR5cGUpCit7CisgICAgaWYgKGFyZ3Muc2l6ZSgpICE9IDIpCisgICAgICAg
IHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFN5bnRheEVycm9yKTsKKworICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCA9IHN0YXRpY19j
YXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dCo+KG9iai0+aW1wbCgpKTsKKyAgICB1bnNpZ25lZCB0
YXJnZXQgPSBhcmdzLmF0KDApLnRvSW50MzIoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB1bnNpZ25lZCBwbmFt
ZSA9IGFyZ3MuYXQoMSkudG9JbnQzMihleGVjKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIFdlYkdMR2V0SW5mbyBpbmZv
OworICAgIHN3aXRjaCAob2JqZWN0VHlwZSkgeworICAgIGNhc2Uga0J1ZmZlcjoKKyAgICAgICAg
aW5mbyA9IGNvbnRleHQtPmdldEJ1ZmZlclBhcmFtZXRlcih0YXJnZXQsIHBuYW1lLCBlYyk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2Uga1JlbmRlcmJ1ZmZlcjoKKyAgICAgICAgaW5mbyA9IGNv
bnRleHQtPmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcih0YXJnZXQsIHBuYW1lLCBlYyk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2Uga1RleHR1cmU6CisgICAgICAgIGluZm8gPSBjb250ZXh0LT5n
ZXRUZXhQYXJhbWV0ZXIodGFyZ2V0LCBwbmFtZSwgZWMpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIGtWZXJ0ZXhBdHRyaWI6CisgICAgICAgIC8vIHRhcmdldCA9PiBpbmRleAorICAgICAgICBp
bmZvID0gY29udGV4dC0+Z2V0VmVydGV4QXR0cmliKHRhcmdldCwgcG5hbWUsIGVjKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIGlmIChlYykgeworICAgICAgICBzZXRET01FeGNlcHRpb24o
ZXhlYywgZWMpOworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisgICAgcmV0
dXJuIHRvSlMoZXhlYywgb2JqLT5nbG9iYWxPYmplY3QoKSwgaW5mbyk7Cit9CisKK2VudW0gV2hp
Y2hQcm9ncmFtQ2FsbCB7CisgICAga1Byb2dyYW1QYXJhbWV0ZXIsIGtVbmlmb3JtCit9OworCitz
dGF0aWMgSlNWYWx1ZSBnZXRQcm9ncmFtUGFyYW1ldGVySGVscGVyKEpTV2ViR0xSZW5kZXJpbmdD
b250ZXh0KiBvYmosIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncywgV2hpY2hQ
cm9ncmFtQ2FsbCBwcm9ncmFtQ2FsbCkKK3sKKyAgICBpZiAoYXJncy5zaXplKCkgIT0gMikKKyAg
ICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgU3ludGF4RXJyb3IpOworCisgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CisgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0ID0gc3Rh
dGljX2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0Kj4ob2JqLT5pbXBsKCkpOworICAgIFdlYkdM
UHJvZ3JhbSogcHJvZ3JhbSA9IHRvV2ViR0xQcm9ncmFtKGFyZ3MuYXQoMCkpOworICAgIHVuc2ln
bmVkIHBuYW1lID0gYXJncy5hdCgxKS50b0ludDMyKGV4ZWMpOworICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgV2ViR0xHZXRJ
bmZvIGluZm87CisgICAgc3dpdGNoIChwcm9ncmFtQ2FsbCkgeworICAgIGNhc2Uga1Byb2dyYW1Q
YXJhbWV0ZXI6CisgICAgICAgIGluZm8gPSBjb250ZXh0LT5nZXRQcm9ncmFtUGFyYW1ldGVyKHBy
b2dyYW0sIHBuYW1lLCBlYyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Uga1VuaWZvcm06Cisg
ICAgICAgIC8vIHBuYW1lIC0+IGxvY2F0aW9uCisgICAgICAgIGluZm8gPSBjb250ZXh0LT5nZXRV
bmlmb3JtKHByb2dyYW0sIHBuYW1lLCBlYyk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6
CisgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBp
ZiAoZWMpIHsKKyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKyAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQorICAgIHJldHVybiB0b0pTKGV4ZWMsIG9iai0+Z2xv
YmFsT2JqZWN0KCksIGluZm8pOworfQorCitKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpnZXRCdWZmZXJQYXJhbWV0ZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdz
KQoreworICAgIHJldHVybiBnZXRPYmplY3RQYXJhbWV0ZXIodGhpcywgZXhlYywgYXJncywga0J1
ZmZlcik7Cit9CisKK0pTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVm
ZmVyQXR0YWNobWVudFBhcmFtZXRlcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFy
Z3MpCit7CisgICAgaWYgKGFyZ3Muc2l6ZSgpICE9IDMpCisgICAgICAgIHJldHVybiB0aHJvd0Vy
cm9yKGV4ZWMsIFN5bnRheEVycm9yKTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAg
IFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCA9IHN0YXRpY19jYXN0PFdlYkdMUmVuZGVy
aW5nQ29udGV4dCo+KGltcGwoKSk7CisgICAgdW5zaWduZWQgdGFyZ2V0ID0gYXJncy5hdCgwKS50
b0ludDMyKGV4ZWMpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgdW5zaWduZWQgYXR0YWNobWVudCA9IGFyZ3MuYXQoMSku
dG9JbnQzMihleGVjKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOworICAgIHVuc2lnbmVkIHBuYW1lID0gYXJncy5hdCgyKS50b0lu
dDMyKGV4ZWMpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CisgICAgV2ViR0xHZXRJbmZvIGluZm8gPSBjb250ZXh0LT5nZXRGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSwgZWMp
OworICAgIGlmIChlYykgeworICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisgICAgcmV0dXJuIHRvSlMoZXhlYywg
Z2xvYmFsT2JqZWN0KCksIGluZm8pOworfQorCitKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpnZXRQYXJhbWV0ZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQor
eworICAgIGlmIChhcmdzLnNpemUoKSAhPSAxKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihl
eGVjLCBTeW50YXhFcnJvcik7CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBXZWJH
TFJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxXZWJHTFJlbmRlcmluZ0Nv
bnRleHQqPihpbXBsKCkpOworICAgIHVuc2lnbmVkIHBuYW1lID0gYXJncy5hdCgwKS50b0ludDMy
KGV4ZWMpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CisgICAgV2ViR0xHZXRJbmZvIGluZm8gPSBjb250ZXh0LT5nZXRQYXJhbWV0
ZXIocG5hbWUsIGVjKTsKKyAgICBpZiAoZWMpIHsKKyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4
ZWMsIGVjKTsKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQorICAgIHJldHVy
biB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBpbmZvKTsKK30KKworSlNWYWx1ZSBKU1dlYkdM
UmVuZGVyaW5nQ29udGV4dDo6Z2V0UHJvZ3JhbVBhcmFtZXRlcihFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IEFyZ0xpc3QmIGFyZ3MpCit7CisgICAgcmV0dXJuIGdldFByb2dyYW1QYXJhbWV0ZXJIZWxw
ZXIodGhpcywgZXhlYywgYXJncywga1Byb2dyYW1QYXJhbWV0ZXIpOworfQorCitKU1ZhbHVlIEpT
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreworICAgIHJldHVybiBnZXRPYmplY3RQYXJh
bWV0ZXIodGhpcywgZXhlYywgYXJncywga1JlbmRlcmJ1ZmZlcik7Cit9CisKK0pTVmFsdWUgSlNX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFNoYWRlclBhcmFtZXRlcihFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCit7CisgICAgaWYgKGFyZ3Muc2l6ZSgpICE9IDIpCisgICAg
ICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFN5bnRheEVycm9yKTsKKworICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCA9IHN0YXRp
Y19jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dCo+KGltcGwoKSk7CisgICAgV2ViR0xTaGFkZXIq
IHNoYWRlciA9IHRvV2ViR0xTaGFkZXIoYXJncy5hdCgwKSk7CisgICAgdW5zaWduZWQgcG5hbWUg
PSBhcmdzLmF0KDEpLnRvSW50MzIoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBXZWJHTEdldEluZm8gaW5mbyA9
IGNvbnRleHQtPmdldFNoYWRlclBhcmFtZXRlcihzaGFkZXIsIHBuYW1lLCBlYyk7CisgICAgaWYg
KGVjKSB7CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOworICAgIH0KKyAgICByZXR1cm4gdG9KUyhleGVjLCBnbG9iYWxPYmpl
Y3QoKSwgaW5mbyk7Cit9CisKK0pTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFRl
eFBhcmFtZXRlcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCit7CisgICAg
cmV0dXJuIGdldE9iamVjdFBhcmFtZXRlcih0aGlzLCBleGVjLCBhcmdzLCBrVGV4dHVyZSk7Cit9
CisKK0pTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFVuaWZvcm0oRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreworICAgIHJldHVybiBnZXRQcm9ncmFtUGFy
YW1ldGVySGVscGVyKHRoaXMsIGV4ZWMsIGFyZ3MsIGtVbmlmb3JtKTsKK30KKworSlNWYWx1ZSBK
U1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VmVydGV4QXR0cmliKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICByZXR1cm4gZ2V0T2JqZWN0UGFyYW1ldGVyKHRo
aXMsIGV4ZWMsIGFyZ3MsIGtWZXJ0ZXhBdHRyaWIpOworfQorCiAvLyB2b2lkIHRleEltYWdlMkRI
VE1MKGluIHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBpbiB1bnNpZ25lZCBsb25nIGxldmVsLCBpbiBI
VE1MSW1hZ2VFbGVtZW50IGltYWdlKTsKIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OnRleEltYWdlMkQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogeyAKSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGluZy5oCShyZXZp
c2lvbiA1MTM0MSkKKysrIFdlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tQmluZGlu
Zy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNjUsNyArMzY1LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICNpZiBFTkFCTEUoM0RfQ0FOVkFTKQogICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJ1ZmZlckRhdGEpOwogICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJ1ZmZlclN1YkRhdGEpOwotICAgICAgICBERUNMQVJFX0NBTExC
QUNLKFdlYkdMUmVuZGVyaW5nQ29udGV4dFNpemVvZik7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJB
Q0soV2ViR0xSZW5kZXJpbmdDb250ZXh0R2V0QnVmZmVyUGFyYW1ldGVyKTsKKyAgICAgICAgREVD
TEFSRV9DQUxMQkFDSyhXZWJHTFJlbmRlcmluZ0NvbnRleHRHZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXIpOworICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEdldFBhcmFtZXRlcik7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xSZW5kZXJp
bmdDb250ZXh0R2V0UHJvZ3JhbVBhcmFtZXRlcik7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0so
V2ViR0xSZW5kZXJpbmdDb250ZXh0R2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKTsKKyAgICAgICAg
REVDTEFSRV9DQUxMQkFDSyhXZWJHTFJlbmRlcmluZ0NvbnRleHRHZXRTaGFkZXJQYXJhbWV0ZXIp
OworICAgICAgICBERUNMQVJFX0NBTExCQUNLKFdlYkdMUmVuZGVyaW5nQ29udGV4dEdldFRleFBh
cmFtZXRlcik7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xSZW5kZXJpbmdDb250ZXh0
R2V0VW5pZm9ybSk7CisgICAgICAgIERFQ0xBUkVfQ0FMTEJBQ0soV2ViR0xSZW5kZXJpbmdDb250
ZXh0R2V0VmVydGV4QXR0cmliKTsKICAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJHTFJlbmRl
cmluZ0NvbnRleHRUZXhJbWFnZTJEKTsKICAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhXZWJHTFJl
bmRlcmluZ0NvbnRleHRUZXhTdWJJbWFnZTJEKTsKICAgICAgICAgREVDTEFSRV9DQUxMQkFDSyhX
ZWJHTFJlbmRlcmluZ0NvbnRleHRVbmlmb3JtMWZ2KTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3Rv
bS5jcHAJKHJldmlzaW9uIDUxMzQxKQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhX
ZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0
NSw4IEBACiAjaW5jbHVkZSAiVjhXZWJHTEJ5dGVBcnJheS5oIgogI2luY2x1ZGUgIlY4V2ViR0xG
bG9hdEFycmF5LmgiCiAjaW5jbHVkZSAiVjhXZWJHTEludEFycmF5LmgiCisjaW5jbHVkZSAiVjhX
ZWJHTFByb2dyYW0uaCIKKyNpbmNsdWRlICJWOFdlYkdMU2hhZGVyLmgiCiAjaW5jbHVkZSAiVjhX
ZWJHTFNob3J0QXJyYXkuaCIKICNpbmNsdWRlICJWOFdlYkdMVW5zaWduZWRCeXRlQXJyYXkuaCIK
ICNpbmNsdWRlICJWOFdlYkdMVW5zaWduZWRJbnRBcnJheS5oIgpAQCAtMTcwLDYgKzE3MiwyNjMg
QEAgQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYkdMUmVuZGVyaW5nQ29udGV4dAogICAgIHJldHVybiB2
ODo6VW5kZWZpbmVkKCk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChj
b25zdCBXZWJHTEdldEluZm8mIGluZm8pCit7CisgICAgc3dpdGNoIChpbmZvLmdldFR5cGUoKSkg
eworICAgIGNhc2UgV2ViR0xHZXRJbmZvOjprVHlwZUJvb2w6CisgICAgICAgIHJldHVybiB2ODo6
Qm9vbGVhbjo6TmV3KGluZm8uZ2V0Qm9vbCgpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5
cGVGbG9hdDoKKyAgICAgICAgcmV0dXJuIHY4OjpOdW1iZXI6Ok5ldyhpbmZvLmdldEZsb2F0KCkp
OworICAgIGNhc2UgV2ViR0xHZXRJbmZvOjprVHlwZUxvbmc6CisgICAgICAgIHJldHVybiB2ODo6
SW50ZWdlcjo6TmV3KGluZm8uZ2V0TG9uZygpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5
cGVOdWxsOgorICAgICAgICByZXR1cm4gdjg6Ok51bGwoKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5m
bzo6a1R5cGVTdHJpbmc6CisgICAgICAgIHJldHVybiB2ODo6U3RyaW5nOjpOZXcoZnJvbVdlYkNv
cmVTdHJpbmcoaW5mby5nZXRTdHJpbmcoKSksIGluZm8uZ2V0U3RyaW5nKCkubGVuZ3RoKCkpOwor
ICAgIGNhc2UgV2ViR0xHZXRJbmZvOjprVHlwZVVuc2lnbmVkTG9uZzoKKyAgICAgICAgcmV0dXJu
IHY4OjpJbnRlZ2VyOjpOZXdGcm9tVW5zaWduZWQoaW5mby5nZXRVbnNpZ25lZExvbmcoKSk7Cisg
ICAgY2FzZSBXZWJHTEdldEluZm86OmtUeXBlV2ViR0xCdWZmZXI6CisgICAgICAgIHJldHVybiBW
OERPTVdyYXBwZXI6OmNvbnZlcnRUb1Y4T2JqZWN0KFY4Q2xhc3NJbmRleDo6V0VCR0xCVUZGRVIs
IGluZm8uZ2V0V2ViR0xCdWZmZXIoKSk7CisgICAgY2FzZSBXZWJHTEdldEluZm86OmtUeXBlV2Vi
R0xGbG9hdEFycmF5OgorICAgICAgICByZXR1cm4gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9WOE9i
amVjdChWOENsYXNzSW5kZXg6OldFQkdMRkxPQVRBUlJBWSwgaW5mby5nZXRXZWJHTEZsb2F0QXJy
YXkoKSk7CisgICAgY2FzZSBXZWJHTEdldEluZm86OmtUeXBlV2ViR0xGcmFtZWJ1ZmZlcjoKKyAg
ICAgICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6Y29udmVydFRvVjhPYmplY3QoVjhDbGFzc0luZGV4
OjpXRUJHTEZSQU1FQlVGRkVSLCBpbmZvLmdldFdlYkdMRnJhbWVidWZmZXIoKSk7CisgICAgY2Fz
ZSBXZWJHTEdldEluZm86OmtUeXBlV2ViR0xJbnRBcnJheToKKyAgICAgICAgcmV0dXJuIFY4RE9N
V3JhcHBlcjo6Y29udmVydFRvVjhPYmplY3QoVjhDbGFzc0luZGV4OjpXRUJHTElOVEFSUkFZLCBp
bmZvLmdldFdlYkdMSW50QXJyYXkoKSk7CisgICAgLy8gRklYTUU6IGltcGxlbWVudCBXZWJHTE9i
amVjdEFycmF5CisgICAgLy8gY2FzZSBXZWJHTEdldEluZm86OmtUeXBlV2ViR0xPYmplY3RBcnJh
eToKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVXZWJHTFByb2dyYW06CisgICAgICAgIHJl
dHVybiBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb1Y4T2JqZWN0KFY4Q2xhc3NJbmRleDo6V0VCR0xQ
Uk9HUkFNLCBpbmZvLmdldFdlYkdMUHJvZ3JhbSgpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6
a1R5cGVXZWJHTFJlbmRlcmJ1ZmZlcjoKKyAgICAgICAgcmV0dXJuIFY4RE9NV3JhcHBlcjo6Y29u
dmVydFRvVjhPYmplY3QoVjhDbGFzc0luZGV4OjpXRUJHTFJFTkRFUkJVRkZFUiwgaW5mby5nZXRX
ZWJHTFJlbmRlcmJ1ZmZlcigpKTsKKyAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVXZWJHTFRl
eHR1cmU6CisgICAgICAgIHJldHVybiBWOERPTVdyYXBwZXI6OmNvbnZlcnRUb1Y4T2JqZWN0KFY4
Q2xhc3NJbmRleDo6V0VCR0xURVhUVVJFLCBpbmZvLmdldFdlYkdMVGV4dHVyZSgpKTsKKyAgICBj
YXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVXZWJHTFVuc2lnbmVkQnl0ZUFycmF5OgorICAgICAgICBy
ZXR1cm4gVjhET01XcmFwcGVyOjpjb252ZXJ0VG9WOE9iamVjdChWOENsYXNzSW5kZXg6OldFQkdM
VU5TSUdORURCWVRFQVJSQVksIGluZm8uZ2V0V2ViR0xVbnNpZ25lZEJ5dGVBcnJheSgpKTsKKyAg
ICBkZWZhdWx0OgorICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgICAgICByZXR1cm4gdjg6
OlVuZGVmaW5lZCgpOworICAgIH0KK30KKworZW51bSBPYmplY3RUeXBlIHsKKyAgICBrQnVmZmVy
LCBrUmVuZGVyYnVmZmVyLCBrVGV4dHVyZSwga1ZlcnRleEF0dHJpYgorfTsKKworc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBnZXRPYmplY3RQYXJhbWV0ZXIoY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncywgT2JqZWN0VHlwZSBvYmplY3RUeXBlKQoreworICAgIGlmIChhcmdzLkxlbmd0aCgp
ICE9IDIpIHsKKyAgICAgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKFNZTlRBWF9FUlIpOwor
ICAgICAgICByZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsKKyAgICB9CisKKyAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQg
PQorICAgICAgICBWOERPTVdyYXBwZXI6OmNvbnZlcnRET01XcmFwcGVyVG9OYXRpdmU8V2ViR0xS
ZW5kZXJpbmdDb250ZXh0PihhcmdzLkhvbGRlcigpKTsKKyAgICBib29sIG9rOworICAgIHVuc2ln
bmVkIHRhcmdldCA9IHRvSW50MzIoYXJnc1swXSwgb2spOworICAgIGlmICghb2spIHsKKyAgICAg
ICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKFNZTlRBWF9FUlIpOworICAgICAgICByZXR1cm4g
bm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsKKyAgICB9CisgICAgdW5zaWduZWQgcG5hbWUgPSB0
b0ludDMyKGFyZ3NbMV0sIG9rKTsKKyAgICBpZiAoIW9rKSB7CisgICAgICAgIFY4UHJveHk6OnNl
dERPTUV4Y2VwdGlvbihTWU5UQVhfRVJSKTsKKyAgICAgICAgcmV0dXJuIG5vdEhhbmRsZWRCeUlu
dGVyY2VwdG9yKCk7CisgICAgfQorICAgIFdlYkdMR2V0SW5mbyBpbmZvOworICAgIHN3aXRjaCAo
b2JqZWN0VHlwZSkgeworICAgIGNhc2Uga0J1ZmZlcjoKKyAgICAgICAgaW5mbyA9IGNvbnRleHQt
PmdldEJ1ZmZlclBhcmFtZXRlcih0YXJnZXQsIHBuYW1lLCBlYyk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2Uga1JlbmRlcmJ1ZmZlcjoKKyAgICAgICAgaW5mbyA9IGNvbnRleHQtPmdldFJlbmRl
cmJ1ZmZlclBhcmFtZXRlcih0YXJnZXQsIHBuYW1lLCBlYyk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2Uga1RleHR1cmU6CisgICAgICAgIGluZm8gPSBjb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXIo
dGFyZ2V0LCBwbmFtZSwgZWMpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIGtWZXJ0ZXhBdHRy
aWI6CisgICAgICAgIC8vIHRhcmdldCA9PiBpbmRleAorICAgICAgICBpbmZvID0gY29udGV4dC0+
Z2V0VmVydGV4QXR0cmliKHRhcmdldCwgcG5hbWUsIGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorICAgIGlmIChlYykgeworICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oZWMpOwor
ICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgIH0KKyAgICByZXR1cm4gdG9WOChp
bmZvKTsKK30KKworZW51bSBXaGljaFByb2dyYW1DYWxsIHsKKyAgICBrUHJvZ3JhbVBhcmFtZXRl
ciwga1VuaWZvcm0KK307CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZ2V0UHJvZ3Jh
bVBhcmFtZXRlcihjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzLCBXaGljaFByb2dyYW1DYWxsIHBy
b2dyYW1DYWxsKQoreworICAgIGlmIChhcmdzLkxlbmd0aCgpICE9IDIpIHsKKyAgICAgICAgVjhQ
cm94eTo6c2V0RE9NRXhjZXB0aW9uKFNZTlRBWF9FUlIpOworICAgICAgICByZXR1cm4gbm90SGFu
ZGxlZEJ5SW50ZXJjZXB0b3IoKTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
KyAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQgPQorICAgICAgICBWOERPTVdyYXBw
ZXI6OmNvbnZlcnRET01XcmFwcGVyVG9OYXRpdmU8V2ViR0xSZW5kZXJpbmdDb250ZXh0Pihhcmdz
LkhvbGRlcigpKTsKKyAgICBXZWJHTFByb2dyYW0qIHByb2dyYW0gPSBWOFdlYkdMUHJvZ3JhbTo6
SGFzSW5zdGFuY2UoYXJnc1swXSkgPyB2OERPTVdyYXBwZXJUbzxXZWJHTFByb2dyYW0+KFY4Q2xh
c3NJbmRleDo6V0VCR0xQUk9HUkFNLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3Nb
MF0pKSA6IDA7CisgICAgYm9vbCBvazsKKyAgICB1bnNpZ25lZCBwbmFtZSA9IHRvSW50MzIoYXJn
c1sxXSwgb2spOworICAgIGlmICghb2spIHsKKyAgICAgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0
aW9uKFNZTlRBWF9FUlIpOworICAgICAgICByZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3Io
KTsKKyAgICB9CisgICAgV2ViR0xHZXRJbmZvIGluZm87CisgICAgc3dpdGNoIChwcm9ncmFtQ2Fs
bCkgeworICAgIGNhc2Uga1Byb2dyYW1QYXJhbWV0ZXI6CisgICAgICAgIGluZm8gPSBjb250ZXh0
LT5nZXRQcm9ncmFtUGFyYW1ldGVyKHByb2dyYW0sIHBuYW1lLCBlYyk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2Uga1VuaWZvcm06CisgICAgICAgIC8vIHBuYW1lIC0+IGxvY2F0aW9uCisgICAg
ICAgIGluZm8gPSBjb250ZXh0LT5nZXRVbmlmb3JtKHByb2dyYW0sIHBuYW1lLCBlYyk7CisgICAg
ICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBpZiAoZWMpIHsKKyAgICAgICAgVjhQcm94eTo6c2V0RE9N
RXhjZXB0aW9uKGVjKTsKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICB9Cisg
ICAgcmV0dXJuIHRvVjgoaW5mbyk7Cit9CisKKworQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEdldEJ1ZmZlclBhcmFtZXRlcikKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuZ2V0QnVmZmVyUGFyYW1ldGVyKCkiKTsKKyAgICByZXR1cm4g
Z2V0T2JqZWN0UGFyYW1ldGVyKGFyZ3MsIGtCdWZmZXIpOworfQorCitDQUxMQkFDS19GVU5DX0RF
Q0woV2ViR0xSZW5kZXJpbmdDb250ZXh0R2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
KQoreworICAgIElOQ19TVEFUUygiRE9NLldlYkdMUmVuZGVyaW5nQ29udGV4dC5nZXRGcmFtZWJ1
ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoKSIpOworCisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgIT0g
MykgeworICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oU1lOVEFYX0VSUik7CisgICAg
ICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOworICAgIH0KKworICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCA9Cisg
ICAgICAgIFY4RE9NV3JhcHBlcjo6Y29udmVydERPTVdyYXBwZXJUb05hdGl2ZTxXZWJHTFJlbmRl
cmluZ0NvbnRleHQ+KGFyZ3MuSG9sZGVyKCkpOworICAgIGJvb2wgb2s7CisgICAgdW5zaWduZWQg
dGFyZ2V0ID0gdG9JbnQzMihhcmdzWzBdLCBvayk7CisgICAgaWYgKCFvaykgeworICAgICAgICBW
OFByb3h5OjpzZXRET01FeGNlcHRpb24oU1lOVEFYX0VSUik7CisgICAgICAgIHJldHVybiBub3RI
YW5kbGVkQnlJbnRlcmNlcHRvcigpOworICAgIH0KKyAgICB1bnNpZ25lZCBhdHRhY2htZW50ID0g
dG9JbnQzMihhcmdzWzFdLCBvayk7CisgICAgaWYgKCFvaykgeworICAgICAgICBWOFByb3h5Ojpz
ZXRET01FeGNlcHRpb24oU1lOVEFYX0VSUik7CisgICAgICAgIHJldHVybiBub3RIYW5kbGVkQnlJ
bnRlcmNlcHRvcigpOworICAgIH0KKyAgICB1bnNpZ25lZCBwbmFtZSA9IHRvSW50MzIoYXJnc1sy
XSwgb2spOworICAgIGlmICghb2spIHsKKyAgICAgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9u
KFNZTlRBWF9FUlIpOworICAgICAgICByZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsK
KyAgICB9CisgICAgV2ViR0xHZXRJbmZvIGluZm8gPSBjb250ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXIodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSwgZWMpOworICAgIGlm
IChlYykgeworICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oZWMpOworICAgICAgICBy
ZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgIH0KKyAgICByZXR1cm4gdG9WOChpbmZvKTsKK30K
KworQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYkdMUmVuZGVyaW5nQ29udGV4dEdldFBhcmFtZXRlcikK
K3sKKyAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRlcmluZ0NvbnRleHQuZ2V0UGFyYW1ldGVy
KCkiKTsKKworICAgIGlmIChhcmdzLkxlbmd0aCgpICE9IDEpIHsKKyAgICAgICAgVjhQcm94eTo6
c2V0RE9NRXhjZXB0aW9uKFNZTlRBWF9FUlIpOworICAgICAgICByZXR1cm4gbm90SGFuZGxlZEJ5
SW50ZXJjZXB0b3IoKTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQgPQorICAgICAgICBWOERPTVdyYXBwZXI6OmNv
bnZlcnRET01XcmFwcGVyVG9OYXRpdmU8V2ViR0xSZW5kZXJpbmdDb250ZXh0PihhcmdzLkhvbGRl
cigpKTsKKyAgICBib29sIG9rOworICAgIHVuc2lnbmVkIHBuYW1lID0gdG9JbnQzMihhcmdzWzBd
LCBvayk7CisgICAgaWYgKCFvaykgeworICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24o
U1lOVEFYX0VSUik7CisgICAgICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOwor
ICAgIH0KKyAgICBXZWJHTEdldEluZm8gaW5mbyA9IGNvbnRleHQtPmdldFBhcmFtZXRlcihwbmFt
ZSwgZWMpOworICAgIGlmIChlYykgeworICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24o
ZWMpOworICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgIH0KKyAgICByZXR1cm4g
dG9WOChpbmZvKTsKK30KKworQ0FMTEJBQ0tfRlVOQ19ERUNMKFdlYkdMUmVuZGVyaW5nQ29udGV4
dEdldFByb2dyYW1QYXJhbWV0ZXIpCit7CisgICAgSU5DX1NUQVRTKCJET00uV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmdldFByb2dyYW1QYXJhbWV0ZXIoKSIpOworICAgIHJldHVybiBnZXRQcm9ncmFt
UGFyYW1ldGVyKGFyZ3MsIGtQcm9ncmFtUGFyYW1ldGVyKTsKK30KKworQ0FMTEJBQ0tfRlVOQ19E
RUNMKFdlYkdMUmVuZGVyaW5nQ29udGV4dEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcikKK3sKKyAg
ICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRlcmluZ0NvbnRleHQuZ2V0UmVuZGVyYnVmZmVyUGFy
YW1ldGVyKCkiKTsKKyAgICByZXR1cm4gZ2V0T2JqZWN0UGFyYW1ldGVyKGFyZ3MsIGtSZW5kZXJi
dWZmZXIpOworfQorCitDQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xSZW5kZXJpbmdDb250ZXh0R2V0
U2hhZGVyUGFyYW1ldGVyKQoreworICAgIElOQ19TVEFUUygiRE9NLldlYkdMUmVuZGVyaW5nQ29u
dGV4dC5nZXRTaGFkZXJQYXJhbWV0ZXIoKSIpOworCisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgIT0g
MikgeworICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oU1lOVEFYX0VSUik7CisgICAg
ICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOworICAgIH0KKworICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCA9Cisg
ICAgICAgIFY4RE9NV3JhcHBlcjo6Y29udmVydERPTVdyYXBwZXJUb05hdGl2ZTxXZWJHTFJlbmRl
cmluZ0NvbnRleHQ+KGFyZ3MuSG9sZGVyKCkpOworICAgIFdlYkdMU2hhZGVyKiBzaGFkZXIgPSBW
OFdlYkdMU2hhZGVyOjpIYXNJbnN0YW5jZShhcmdzWzBdKSA/IHY4RE9NV3JhcHBlclRvPFdlYkdM
U2hhZGVyPihWOENsYXNzSW5kZXg6OldFQkdMU0hBREVSLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
OjpDYXN0KGFyZ3NbMF0pKSA6IDA7CisgICAgYm9vbCBvazsKKyAgICB1bnNpZ25lZCBwbmFtZSA9
IHRvSW50MzIoYXJnc1sxXSwgb2spOworICAgIGlmICghb2spIHsKKyAgICAgICAgVjhQcm94eTo6
c2V0RE9NRXhjZXB0aW9uKFNZTlRBWF9FUlIpOworICAgICAgICByZXR1cm4gbm90SGFuZGxlZEJ5
SW50ZXJjZXB0b3IoKTsKKyAgICB9CisgICAgV2ViR0xHZXRJbmZvIGluZm8gPSBjb250ZXh0LT5n
ZXRTaGFkZXJQYXJhbWV0ZXIoc2hhZGVyLCBwbmFtZSwgZWMpOworICAgIGlmIChlYykgeworICAg
ICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oZWMpOworICAgICAgICByZXR1cm4gdjg6OlVu
ZGVmaW5lZCgpOworICAgIH0KKyAgICByZXR1cm4gdG9WOChpbmZvKTsKK30KKworQ0FMTEJBQ0tf
RlVOQ19ERUNMKFdlYkdMUmVuZGVyaW5nQ29udGV4dEdldFRleFBhcmFtZXRlcikKK3sKKyAgICBJ
TkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRlcmluZ0NvbnRleHQuZ2V0VGV4UGFyYW1ldGVyKCkiKTsK
KyAgICByZXR1cm4gZ2V0T2JqZWN0UGFyYW1ldGVyKGFyZ3MsIGtUZXh0dXJlKTsKK30KKworQ0FM
TEJBQ0tfRlVOQ19ERUNMKFdlYkdMUmVuZGVyaW5nQ29udGV4dEdldFVuaWZvcm0pCit7CisgICAg
SU5DX1NUQVRTKCJET00uV2ViR0xSZW5kZXJpbmdDb250ZXh0LmdldFVuaWZvcm0oKSIpOworICAg
IHJldHVybiBnZXRQcm9ncmFtUGFyYW1ldGVyKGFyZ3MsIGtVbmlmb3JtKTsKK30KKworQ0FMTEJB
Q0tfRlVOQ19ERUNMKFdlYkdMUmVuZGVyaW5nQ29udGV4dEdldFZlcnRleEF0dHJpYikKK3sKKyAg
ICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRlcmluZ0NvbnRleHQuZ2V0VmVydGV4QXR0cmliKCki
KTsKKyAgICByZXR1cm4gZ2V0T2JqZWN0UGFyYW1ldGVyKGFyZ3MsIGtWZXJ0ZXhBdHRyaWIpOwor
fQorCiBDQUxMQkFDS19GVU5DX0RFQ0woV2ViR0xSZW5kZXJpbmdDb250ZXh0VGV4SW1hZ2UyRCkK
IHsKICAgICBJTkNfU1RBVFMoIkRPTS5XZWJHTFJlbmRlcmluZ0NvbnRleHQudGV4SW1hZ2UyRCgp
Iik7CkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc09iamVjdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNPYmplY3QuY3BwCShyZXZpc2lvbiA1MTM0
MSkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzT2JqZWN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiBDYW52YXNPYmpl
Y3Q6OkNhbnZhc09iamVjdChXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQpCiAgICAgOiBt
X29iamVjdCgwKQorICAgICwgbV9zaG91bGREZWxldGVPYmplY3QodHJ1ZSkKICAgICAsIG1fY29u
dGV4dChjb250ZXh0KQogewogfQpAQCAtNDQsMjQgKzQ1LDI3IEBAIENhbnZhc09iamVjdDo6fkNh
bnZhc09iamVjdCgpCiAgICAgICAgIG1fY29udGV4dC0+cmVtb3ZlT2JqZWN0KHRoaXMpOwogfQog
Ci12b2lkIENhbnZhc09iamVjdDo6c2V0T2JqZWN0KFBsYXRmb3JtM0RPYmplY3Qgb2JqZWN0KQor
dm9pZCBDYW52YXNPYmplY3Q6OnNldE9iamVjdChQbGF0Zm9ybTNET2JqZWN0IG9iamVjdCwgYm9v
bCBzaG91bGREZWxldGVPYmplY3QpCiB7CiAgICAgaWYgKG9iamVjdCA9PSBtX29iamVjdCkKICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBkZWxldGVPYmplY3QoKTsKICAgICBtX29iamVj
dCA9IG9iamVjdDsKKyAgICBtX3Nob3VsZERlbGV0ZU9iamVjdCA9IHNob3VsZERlbGV0ZU9iamVj
dDsKIH0KIAogdm9pZCBDYW52YXNPYmplY3Q6OmRlbGV0ZU9iamVjdCgpCiB7CiAgICAgaWYgKG1f
b2JqZWN0KSB7Ci0gICAgICAgIGlmIChtX2NvbnRleHQpIHsKLSAgICAgICAgICAgIG1fY29udGV4
dC0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+bWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgICAgICAg
ICBfZGVsZXRlT2JqZWN0KG1fb2JqZWN0KTsKLSAgICAgICAgfQorICAgICAgICBpZiAobV9zaG91
bGREZWxldGVPYmplY3QpCisgICAgICAgICAgICBpZiAobV9jb250ZXh0KSB7CisgICAgICAgICAg
ICAgICAgbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpLT5tYWtlQ29udGV4dEN1cnJlbnQo
KTsKKyAgICAgICAgICAgICAgICBfZGVsZXRlT2JqZWN0KG1fb2JqZWN0KTsKKyAgICAgICAgICAg
IH0KICAgICAgICAgbV9vYmplY3QgPSAwOwogICAgIH0KKyAgICBtX3Nob3VsZERlbGV0ZU9iamVj
dCA9IHRydWU7CiB9CiAKIH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzT2JqZWN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNPYmplY3QuaAkocmV2
aXNpb24gNTEzNDEpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc09iamVjdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dmlydHVhbCB+Q2FudmFzT2JqZWN0KCk7CiAgICAgICAgIAogICAgICAgICBQbGF0Zm9ybTNET2Jq
ZWN0IG9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0OyB9Ci0gICAgICAgIHZvaWQgc2V0
T2JqZWN0KFBsYXRmb3JtM0RPYmplY3QpOworICAgICAgICB2b2lkIHNldE9iamVjdChQbGF0Zm9y
bTNET2JqZWN0LCBib29sIHNob3VsZERlbGV0ZU9iamVjdCA9IHRydWUpOwogICAgICAgICB2b2lk
IGRlbGV0ZU9iamVjdCgpOwogICAgICAgICAKICAgICAgICAgdm9pZCBkZXRhY2hDb250ZXh0KCkK
QEAgLTU3LDYgKzU3LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKICAgICBwcml2YXRl
OgogICAgICAgICBQbGF0Zm9ybTNET2JqZWN0IG1fb2JqZWN0OworICAgICAgICAvLyBUaGUgc2hv
dWxkRGVsZXRlT2JqZWN0IGZsYWcgaW5kaWNhdGVzIHdoZXRoZXIgdGhpcyB3cmFwcGVyCisgICAg
ICAgIC8vIG93bnMgdGhlIHVuZGVybHlpbmcgcmVzb3VyY2UgYW5kIHNob3VsZCBkZWxldGUgaXQg
d2hlbiB0aGUKKyAgICAgICAgLy8gd3JhcHBlciBpcyB1bnJlZmVyZW5jZWQgZm9yIHRoZSBsYXN0
IHRpbWUgYW5kIGRlbGV0ZWQuIEl0CisgICAgICAgIC8vIGlzIG9ubHkgc2V0IHRvIGZhbHNlIGZv
ciBjZXJ0YWluIG9iamVjdHMgcmV0dXJuZWQgZnJvbSBnZXQKKyAgICAgICAgLy8gcXVlcmllcy4g
RklYTUU6IHNob3VsZCBjb25zaWRlciBjYW5vbmljYWxpemluZyBhbGwgb2YgdGhlc2UKKyAgICAg
ICAgLy8gb2JqZWN0cyBpbiB0aGUgZnV0dXJlLgorICAgICAgICBib29sIG1fc2hvdWxkRGVsZXRl
T2JqZWN0OwogICAgICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQqIG1fY29udGV4dDsKICAgICB9
OwogICAgIApJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAJKHJldmlzaW9uIDUx
MzQxKQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDYgKzM3LDExIEBAIFBhc3NSZWZQdHI8V2ViR0xCdWZmZXI+IFdlYkdMQnVmZmVy
OjpjcmUKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdMQnVmZmVyKGN0eCkpOwogfQogCitQ
YXNzUmVmUHRyPFdlYkdMQnVmZmVyPiBXZWJHTEJ1ZmZlcjo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5n
Q29udGV4dCogY3R4LCBQbGF0Zm9ybTNET2JqZWN0IG9iaikKK3sKKyAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFdlYkdMQnVmZmVyKGN0eCwgb2JqKSk7Cit9CisKIFdlYkdMQnVmZmVyOjpXZWJHTEJ1
ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGN0eCkKICAgICA6IENhbnZhc09iamVjdChjdHgp
CiAgICAgLCBtX2VsZW1lbnRBcnJheUJ1ZmZlckJ5dGVMZW5ndGgoMCkKQEAgLTQ2LDYgKzUxLDEy
IEBAIFdlYkdMQnVmZmVyOjpXZWJHTEJ1ZmZlcihXZWJHTFJlbmRlcmluZ0MKICAgICBzZXRPYmpl
Y3QoY29udGV4dCgpLT5ncmFwaGljc0NvbnRleHQzRCgpLT5jcmVhdGVCdWZmZXIoKSk7CiB9CiAK
K1dlYkdMQnVmZmVyOjpXZWJHTEJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGN0eCwgUGxh
dGZvcm0zRE9iamVjdCBvYmopCisgICAgOiBDYW52YXNPYmplY3QoY3R4KQoreworICAgIHNldE9i
amVjdChvYmosIGZhbHNlKTsKK30KKwogdm9pZCBXZWJHTEJ1ZmZlcjo6X2RlbGV0ZU9iamVjdChQ
bGF0Zm9ybTNET2JqZWN0IG9iamVjdCkKIHsKICAgICBjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4
dDNEKCktPmRlbGV0ZUJ1ZmZlcihvYmplY3QpOwpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTEJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZm
ZXIuaAkocmV2aXNpb24gNTEzNDEpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkdMQnVmZmVyPiBjcmVhdGUo
V2ViR0xSZW5kZXJpbmdDb250ZXh0Kik7CiAgICAgICAgIAorICAgICAgICAvLyBGb3IgcXVlcnlp
bmcgcHJldmlvdXNseSBjcmVhdGVkIG9iamVjdHMgdmlhIGUuZy4gZ2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyCisgICAgICAgIC8vIEZJWE1FOiBzaG91bGQgY29uc2lkZXIgY2Fub25p
Y2FsaXppbmcgdGhlc2Ugb2JqZWN0cworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJHTEJ1
ZmZlcj4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCosIFBsYXRmb3JtM0RPYmplY3QpOwor
CiAgICAgICAgIGJvb2wgYXNzb2NpYXRlQnVmZmVyRGF0YSh1bnNpZ25lZCBsb25nIHRhcmdldCwg
aW50IHNpemUpOwogICAgICAgICBib29sIGFzc29jaWF0ZUJ1ZmZlckRhdGEodW5zaWduZWQgbG9u
ZyB0YXJnZXQsIFdlYkdMQXJyYXkqIGFycmF5KTsKICAgICAgICAgYm9vbCBhc3NvY2lhdGVCdWZm
ZXJTdWJEYXRhKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBsb25nIG9mZnNldCwgV2ViR0xBcnJheSog
YXJyYXkpOwpAQCAtNDksNiArNTMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIFdlYkdMQnVmZmVyKFdlYkdM
UmVuZGVyaW5nQ29udGV4dCopOworICAgICAgICBXZWJHTEJ1ZmZlcihXZWJHTFJlbmRlcmluZ0Nv
bnRleHQqLCBQbGF0Zm9ybTNET2JqZWN0IG9iaik7CiAgICAgICAgIAogICAgICAgICB2aXJ0dWFs
IHZvaWQgX2RlbGV0ZU9iamVjdChQbGF0Zm9ybTNET2JqZWN0IG8pOwogICAgIApJbmRleDogV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTEdldEluZm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xHZXRJbmZvLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xHZXRJbmZvLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMTUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2lmIEVOQUJMRSgzRF9DQU5WQVMpCisKKyNpbmNsdWRlICJXZWJHTEdldElu
Zm8uaCIKKyNpbmNsdWRlICJXZWJHTEJ1ZmZlci5oIgorI2luY2x1ZGUgIldlYkdMRmxvYXRBcnJh
eS5oIgorI2luY2x1ZGUgIldlYkdMRnJhbWVidWZmZXIuaCIKKyNpbmNsdWRlICJXZWJHTEludEFy
cmF5LmgiCisjaW5jbHVkZSAiV2ViR0xQcm9ncmFtLmgiCisjaW5jbHVkZSAiV2ViR0xSZW5kZXJi
dWZmZXIuaCIKKyNpbmNsdWRlICJXZWJHTFRleHR1cmUuaCIKKyNpbmNsdWRlICJXZWJHTFVuc2ln
bmVkQnl0ZUFycmF5LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV2ViR0xHZXRJbmZvOjpX
ZWJHTEdldEluZm8oYm9vbCB2YWx1ZSkKKyAgICA6IG1fdHlwZShrVHlwZUJvb2wpCisgICAgLCBt
X2Jvb2wodmFsdWUpCit7Cit9CisKK1dlYkdMR2V0SW5mbzo6V2ViR0xHZXRJbmZvKGZsb2F0IHZh
bHVlKQorICAgIDogbV90eXBlKGtUeXBlRmxvYXQpCisgICAgLCBtX2Zsb2F0KHZhbHVlKQorewor
fQorCitXZWJHTEdldEluZm86OldlYkdMR2V0SW5mbyhsb25nIHZhbHVlKQorICAgIDogbV90eXBl
KGtUeXBlTG9uZykKKyAgICAsIG1fbG9uZyh2YWx1ZSkKK3sKK30KKworV2ViR0xHZXRJbmZvOjpX
ZWJHTEdldEluZm8oKQorICAgIDogbV90eXBlKGtUeXBlTnVsbCkKK3sKK30KKworV2ViR0xHZXRJ
bmZvOjpXZWJHTEdldEluZm8oY29uc3QgU3RyaW5nJiB2YWx1ZSkKKyAgICA6IG1fdHlwZShrVHlw
ZVN0cmluZykKKyAgICAsIG1fc3RyaW5nKHZhbHVlKQoreworfQorCitXZWJHTEdldEluZm86Oldl
YkdMR2V0SW5mbyh1bnNpZ25lZCBsb25nIHZhbHVlKQorICAgIDogbV90eXBlKGtUeXBlVW5zaWdu
ZWRMb25nKQorICAgICwgbV91bnNpZ25lZExvbmcodmFsdWUpCit7Cit9CisKK1dlYkdMR2V0SW5m
bzo6V2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xCdWZmZXI+IHZhbHVlKQorICAgIDogbV90
eXBlKGtUeXBlV2ViR0xCdWZmZXIpCisgICAgLCBtX3dlYmdsQnVmZmVyKHZhbHVlKQoreworfQor
CitXZWJHTEdldEluZm86OldlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4g
dmFsdWUpCisgICAgOiBtX3R5cGUoa1R5cGVXZWJHTEZsb2F0QXJyYXkpCisgICAgLCBtX3dlYmds
RmxvYXRBcnJheSh2YWx1ZSkKK3sKK30KKworV2ViR0xHZXRJbmZvOjpXZWJHTEdldEluZm8oUGFz
c1JlZlB0cjxXZWJHTEZyYW1lYnVmZmVyPiB2YWx1ZSkKKyAgICA6IG1fdHlwZShrVHlwZVdlYkdM
RnJhbWVidWZmZXIpCisgICAgLCBtX3dlYmdsRnJhbWVidWZmZXIodmFsdWUpCit7Cit9CisKK1dl
YkdMR2V0SW5mbzo6V2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gdmFsdWUp
CisgICAgOiBtX3R5cGUoa1R5cGVXZWJHTEludEFycmF5KQorICAgICwgbV93ZWJnbEludEFycmF5
KHZhbHVlKQoreworfQorCitXZWJHTEdldEluZm86OldlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdl
YkdMUHJvZ3JhbT4gdmFsdWUpCisgICAgOiBtX3R5cGUoa1R5cGVXZWJHTFByb2dyYW0pCisgICAg
LCBtX3dlYmdsUHJvZ3JhbSh2YWx1ZSkKK3sKK30KKworV2ViR0xHZXRJbmZvOjpXZWJHTEdldElu
Zm8oUGFzc1JlZlB0cjxXZWJHTFJlbmRlcmJ1ZmZlcj4gdmFsdWUpCisgICAgOiBtX3R5cGUoa1R5
cGVXZWJHTFJlbmRlcmJ1ZmZlcikKKyAgICAsIG1fd2ViZ2xSZW5kZXJidWZmZXIodmFsdWUpCit7
Cit9CisKK1dlYkdMR2V0SW5mbzo6V2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xUZXh0dXJl
PiB2YWx1ZSkKKyAgICA6IG1fdHlwZShrVHlwZVdlYkdMVGV4dHVyZSkKKyAgICAsIG1fd2ViZ2xU
ZXh0dXJlKHZhbHVlKQoreworfQorCitXZWJHTEdldEluZm86OldlYkdMR2V0SW5mbyhQYXNzUmVm
UHRyPFdlYkdMVW5zaWduZWRCeXRlQXJyYXk+IHZhbHVlKQorICAgIDogbV90eXBlKGtUeXBlV2Vi
R0xVbnNpZ25lZEJ5dGVBcnJheSkKKyAgICAsIG1fd2ViZ2xVbnNpZ25lZEJ5dGVBcnJheSh2YWx1
ZSkKK3sKK30KKworV2ViR0xHZXRJbmZvOjp+V2ViR0xHZXRJbmZvKCkKK3sKK30KKworV2ViR0xH
ZXRJbmZvOjpUeXBlIFdlYkdMR2V0SW5mbzo6Z2V0VHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fdHlwZTsKK30KKworYm9vbCBXZWJHTEdldEluZm86OmdldEJvb2woKSBjb25zdAoreworICAg
IEFTU0VSVChnZXRUeXBlKCkgPT0ga1R5cGVCb29sKTsKKyAgICByZXR1cm4gbV9ib29sOworfQor
CitmbG9hdCBXZWJHTEdldEluZm86OmdldEZsb2F0KCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZ2V0
VHlwZSgpID09IGtUeXBlRmxvYXQpOworICAgIHJldHVybiBtX2Zsb2F0OworfQorCitsb25nIFdl
YkdMR2V0SW5mbzo6Z2V0TG9uZygpIGNvbnN0Cit7CisgICAgQVNTRVJUKGdldFR5cGUoKSA9PSBr
VHlwZUxvbmcpOworICAgIHJldHVybiBtX2xvbmc7Cit9CisKK2NvbnN0IFN0cmluZyYgV2ViR0xH
ZXRJbmZvOjpnZXRTdHJpbmcoKSBjb25zdAoreworICAgIEFTU0VSVChnZXRUeXBlKCkgPT0ga1R5
cGVTdHJpbmcpOworICAgIHJldHVybiBtX3N0cmluZzsKK30KKwordW5zaWduZWQgbG9uZyBXZWJH
TEdldEluZm86OmdldFVuc2lnbmVkTG9uZygpIGNvbnN0Cit7CisgICAgQVNTRVJUKGdldFR5cGUo
KSA9PSBrVHlwZVVuc2lnbmVkTG9uZyk7CisgICAgcmV0dXJuIG1fdW5zaWduZWRMb25nOworfQor
CitQYXNzUmVmUHRyPFdlYkdMQnVmZmVyPiBXZWJHTEdldEluZm86OmdldFdlYkdMQnVmZmVyKCkg
Y29uc3QKK3sKKyAgICBBU1NFUlQoZ2V0VHlwZSgpID09IGtUeXBlV2ViR0xCdWZmZXIpOworICAg
IHJldHVybiBtX3dlYmdsQnVmZmVyOworfQorCitQYXNzUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4g
V2ViR0xHZXRJbmZvOjpnZXRXZWJHTEZsb2F0QXJyYXkoKSBjb25zdAoreworICAgIEFTU0VSVChn
ZXRUeXBlKCkgPT0ga1R5cGVXZWJHTEZsb2F0QXJyYXkpOworICAgIHJldHVybiBtX3dlYmdsRmxv
YXRBcnJheTsKK30KKworUGFzc1JlZlB0cjxXZWJHTEZyYW1lYnVmZmVyPiBXZWJHTEdldEluZm86
OmdldFdlYkdMRnJhbWVidWZmZXIoKSBjb25zdAoreworICAgIEFTU0VSVChnZXRUeXBlKCkgPT0g
a1R5cGVXZWJHTEZyYW1lYnVmZmVyKTsKKyAgICByZXR1cm4gbV93ZWJnbEZyYW1lYnVmZmVyOwor
fQorCitQYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IFdlYkdMR2V0SW5mbzo6Z2V0V2ViR0xJbnRB
cnJheSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGdldFR5cGUoKSA9PSBrVHlwZVdlYkdMSW50QXJy
YXkpOworICAgIHJldHVybiBtX3dlYmdsSW50QXJyYXk7Cit9CisKK1Bhc3NSZWZQdHI8V2ViR0xQ
cm9ncmFtPiBXZWJHTEdldEluZm86OmdldFdlYkdMUHJvZ3JhbSgpIGNvbnN0Cit7CisgICAgQVNT
RVJUKGdldFR5cGUoKSA9PSBrVHlwZVdlYkdMUHJvZ3JhbSk7CisgICAgcmV0dXJuIG1fd2ViZ2xQ
cm9ncmFtOworfQorCitQYXNzUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPiBXZWJHTEdldEluZm86
OmdldFdlYkdMUmVuZGVyYnVmZmVyKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZ2V0VHlwZSgpID09
IGtUeXBlV2ViR0xSZW5kZXJidWZmZXIpOworICAgIHJldHVybiBtX3dlYmdsUmVuZGVyYnVmZmVy
OworfQorCitQYXNzUmVmUHRyPFdlYkdMVGV4dHVyZT4gV2ViR0xHZXRJbmZvOjpnZXRXZWJHTFRl
eHR1cmUoKSBjb25zdAoreworICAgIEFTU0VSVChnZXRUeXBlKCkgPT0ga1R5cGVXZWJHTFRleHR1
cmUpOworICAgIHJldHVybiBtX3dlYmdsVGV4dHVyZTsKK30KKworUGFzc1JlZlB0cjxXZWJHTFVu
c2lnbmVkQnl0ZUFycmF5PiBXZWJHTEdldEluZm86OmdldFdlYkdMVW5zaWduZWRCeXRlQXJyYXko
KSBjb25zdAoreworICAgIEFTU0VSVChnZXRUeXBlKCkgPT0ga1R5cGVXZWJHTFVuc2lnbmVkQnl0
ZUFycmF5KTsKKyAgICByZXR1cm4gbV93ZWJnbFVuc2lnbmVkQnl0ZUFycmF5OworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoM0RfQ0FOVkFTKQpJbmRleDog
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEdldEluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMR2V0SW5mby5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTEdldEluZm8uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMzEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViR0xH
ZXRJbmZvX2gKKyNkZWZpbmUgV2ViR0xHZXRJbmZvX2gKKworI2luY2x1ZGUgInd0Zi9QYXNzUmVm
UHRyLmgiCisjaW5jbHVkZSAid3RmL1JlZlB0ci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5n
LmgiCisKKyNpbmNsdWRlICJXZWJHTEJ1ZmZlci5oIgorI2luY2x1ZGUgIldlYkdMRmxvYXRBcnJh
eS5oIgorI2luY2x1ZGUgIldlYkdMRnJhbWVidWZmZXIuaCIKKyNpbmNsdWRlICJXZWJHTEludEFy
cmF5LmgiCisvLyBGSVhNRTogaW1wbGVtZW50IFdlYkdMT2JqZWN0QXJyYXkKKy8vI2luY2x1ZGUg
IldlYkdMT2JqZWN0QXJyYXkuaCIKKyNpbmNsdWRlICJXZWJHTFByb2dyYW0uaCIKKyNpbmNsdWRl
ICJXZWJHTFJlbmRlcmJ1ZmZlci5oIgorI2luY2x1ZGUgIldlYkdMVGV4dHVyZS5oIgorI2luY2x1
ZGUgIldlYkdMVW5zaWduZWRCeXRlQXJyYXkuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisv
LyBBIHRhZ2dlZCB1bmlvbiByZXByZXNlbnRpbmcgdGhlIHJlc3VsdCBvZiBnZXQgcXVlcmllcyBs
aWtlCisvLyBnZXRQYXJhbWV0ZXIgKGVuY29tcGFzc2luZyBnZXRCb29sZWFudiwgZ2V0SW50ZWdl
cnYsIGdldEZsb2F0dikgYW5kCisvLyBzaW1pbGFyIHZhcmlhbnRzLiBGb3IgcmVmZXJlbmNlIGNv
dW50ZWQgdHlwZXMsIGluY3JlbWVudHMgYW5kCisvLyBkZWNyZW1lbnRzIHRoZSByZWZlcmVuY2Ug
Y291bnQgb2YgdGhlIHRhcmdldCBvYmplY3QuCisKK2NsYXNzIFdlYkdMR2V0SW5mbyB7CitwdWJs
aWM6CisgICAgZW51bSBUeXBlIHsKKyAgICAgICAga1R5cGVCb29sLAorICAgICAgICBrVHlwZUZs
b2F0LAorICAgICAgICBrVHlwZUxvbmcsCisgICAgICAgIGtUeXBlTnVsbCwKKyAgICAgICAga1R5
cGVTdHJpbmcsCisgICAgICAgIGtUeXBlVW5zaWduZWRMb25nLAorICAgICAgICBrVHlwZVdlYkdM
QnVmZmVyLAorICAgICAgICBrVHlwZVdlYkdMRmxvYXRBcnJheSwKKyAgICAgICAga1R5cGVXZWJH
TEZyYW1lYnVmZmVyLAorICAgICAgICBrVHlwZVdlYkdMSW50QXJyYXksCisgICAgICAgIGtUeXBl
V2ViR0xPYmplY3RBcnJheSwKKyAgICAgICAga1R5cGVXZWJHTFByb2dyYW0sCisgICAgICAgIGtU
eXBlV2ViR0xSZW5kZXJidWZmZXIsCisgICAgICAgIGtUeXBlV2ViR0xUZXh0dXJlLAorICAgICAg
ICBrVHlwZVdlYkdMVW5zaWduZWRCeXRlQXJyYXkKKyAgICB9OworCisgICAgV2ViR0xHZXRJbmZv
KGJvb2wgdmFsdWUpOworICAgIFdlYkdMR2V0SW5mbyhmbG9hdCB2YWx1ZSk7CisgICAgV2ViR0xH
ZXRJbmZvKGxvbmcgdmFsdWUpOworICAgIC8vIFJlcHJlc2VudHMgdGhlIE5VTEwgdmFsdWUgYW5k
IHR5cGUKKyAgICBXZWJHTEdldEluZm8oKTsKKyAgICBXZWJHTEdldEluZm8oY29uc3QgU3RyaW5n
JiB2YWx1ZSk7CisgICAgV2ViR0xHZXRJbmZvKHVuc2lnbmVkIGxvbmcgdmFsdWUpOworICAgIFdl
YkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMQnVmZmVyPiB2YWx1ZSk7CisgICAgV2ViR0xHZXRJ
bmZvKFBhc3NSZWZQdHI8V2ViR0xGbG9hdEFycmF5PiB2YWx1ZSk7CisgICAgV2ViR0xHZXRJbmZv
KFBhc3NSZWZQdHI8V2ViR0xGcmFtZWJ1ZmZlcj4gdmFsdWUpOworICAgIFdlYkdMR2V0SW5mbyhQ
YXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IHZhbHVlKTsKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50
IFdlYkdMT2JqZWN0QXJyYXkKKyAgICAvLyBXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTE9i
amVjdEFycmF5PiB2YWx1ZSk7CisgICAgV2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xQcm9n
cmFtPiB2YWx1ZSk7CisgICAgV2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xSZW5kZXJidWZm
ZXI+IHZhbHVlKTsKKyAgICBXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTFRleHR1cmU+IHZh
bHVlKTsKKyAgICBXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTFVuc2lnbmVkQnl0ZUFycmF5
PiB2YWx1ZSk7CisKKyAgICB2aXJ0dWFsIH5XZWJHTEdldEluZm8oKTsKKworICAgIFR5cGUgZ2V0
VHlwZSgpIGNvbnN0OworCisgICAgYm9vbCBnZXRCb29sKCkgY29uc3Q7CisgICAgZmxvYXQgZ2V0
RmxvYXQoKSBjb25zdDsKKyAgICBsb25nIGdldExvbmcoKSBjb25zdDsKKyAgICBjb25zdCBTdHJp
bmcmIGdldFN0cmluZygpIGNvbnN0OworICAgIHVuc2lnbmVkIGxvbmcgZ2V0VW5zaWduZWRMb25n
KCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxXZWJHTEJ1ZmZlcj4gZ2V0V2ViR0xCdWZmZXIoKSBj
b25zdDsKKyAgICBQYXNzUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gZ2V0V2ViR0xGbG9hdEFycmF5
KCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxXZWJHTEZyYW1lYnVmZmVyPiBnZXRXZWJHTEZyYW1l
YnVmZmVyKCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBnZXRXZWJHTElu
dEFycmF5KCkgY29uc3Q7CisgICAgLy8gRklYTUU6IGltcGxlbWVudCBXZWJHTE9iamVjdEFycmF5
CisgICAgLy8gUGFzc1JlZlB0cjxXZWJHTE9iamVjdEFycmF5PiBnZXRXZWJHTE9iamVjdEFycmF5
KCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxXZWJHTFByb2dyYW0+IGdldFdlYkdMUHJvZ3JhbSgp
IGNvbnN0OworICAgIFBhc3NSZWZQdHI8V2ViR0xSZW5kZXJidWZmZXI+IGdldFdlYkdMUmVuZGVy
YnVmZmVyKCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxXZWJHTFRleHR1cmU+IGdldFdlYkdMVGV4
dHVyZSgpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8V2ViR0xVbnNpZ25lZEJ5dGVBcnJheT4gZ2V0
V2ViR0xVbnNpZ25lZEJ5dGVBcnJheSgpIGNvbnN0OworCitwcml2YXRlOgorICAgIFR5cGUgbV90
eXBlOworICAgIGJvb2wgbV9ib29sOworICAgIGZsb2F0IG1fZmxvYXQ7CisgICAgbG9uZyBtX2xv
bmc7CisgICAgU3RyaW5nIG1fc3RyaW5nOworICAgIHVuc2lnbmVkIGxvbmcgbV91bnNpZ25lZExv
bmc7CisgICAgUmVmUHRyPFdlYkdMQnVmZmVyPiBtX3dlYmdsQnVmZmVyOworICAgIFJlZlB0cjxX
ZWJHTEZsb2F0QXJyYXk+IG1fd2ViZ2xGbG9hdEFycmF5OworICAgIFJlZlB0cjxXZWJHTEZyYW1l
YnVmZmVyPiBtX3dlYmdsRnJhbWVidWZmZXI7CisgICAgUmVmUHRyPFdlYkdMSW50QXJyYXk+IG1f
d2ViZ2xJbnRBcnJheTsKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50IFdlYkdMT2JqZWN0QXJyYXkK
KyAgICAvLyBSZWZQdHI8V2ViR0xPYmplY3RBcnJheT4gbV93ZWJnbE9iamVjdEFycmF5OworICAg
IFJlZlB0cjxXZWJHTFByb2dyYW0+IG1fd2ViZ2xQcm9ncmFtOworICAgIFJlZlB0cjxXZWJHTFJl
bmRlcmJ1ZmZlcj4gbV93ZWJnbFJlbmRlcmJ1ZmZlcjsKKyAgICBSZWZQdHI8V2ViR0xUZXh0dXJl
PiBtX3dlYmdsVGV4dHVyZTsKKyAgICBSZWZQdHI8V2ViR0xVbnNpZ25lZEJ5dGVBcnJheT4gbV93
ZWJnbFVuc2lnbmVkQnl0ZUFycmF5OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgIC8vIFdlYkdMR2V0SW5mb19oCkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyYnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyYnVmZmVyLmNwcAkocmV2aXNpb24gNTEzNDEpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyYnVmZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTIgKzM3LDIzIEBA
IFBhc3NSZWZQdHI8V2ViR0xSZW5kZXJidWZmZXI+IFdlYkdMUmVuZGUKICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFdlYkdMUmVuZGVyYnVmZmVyKGN0eCkpOwogfQogCitQYXNzUmVmUHRyPFdlYkdM
UmVuZGVyYnVmZmVyPiBXZWJHTFJlbmRlcmJ1ZmZlcjo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29u
dGV4dCogY3R4LCBQbGF0Zm9ybTNET2JqZWN0IG9iaikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFdlYkdMUmVuZGVyYnVmZmVyKGN0eCwgb2JqKSk7Cit9CisKIFdlYkdMUmVuZGVyYnVmZmVy
OjpXZWJHTFJlbmRlcmJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGN0eCkKICAgICA6IENh
bnZhc09iamVjdChjdHgpCiB7CiAgICAgc2V0T2JqZWN0KGNvbnRleHQoKS0+Z3JhcGhpY3NDb250
ZXh0M0QoKS0+Y3JlYXRlUmVuZGVyYnVmZmVyKCkpOwogfQogCitXZWJHTFJlbmRlcmJ1ZmZlcjo6
V2ViR0xSZW5kZXJidWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjdHgsIFBsYXRmb3JtM0RP
YmplY3Qgb2JqKQorICAgIDogQ2FudmFzT2JqZWN0KGN0eCkKK3sKKyAgICBzZXRPYmplY3Qob2Jq
LCBmYWxzZSk7Cit9CisKIHZvaWQgV2ViR0xSZW5kZXJidWZmZXI6Ol9kZWxldGVPYmplY3QoUGxh
dGZvcm0zRE9iamVjdCBvYmplY3QpCiB7CiAgICAgY29udGV4dCgpLT5ncmFwaGljc0NvbnRleHQz
RCgpLT5kZWxldGVSZW5kZXJidWZmZXIob2JqZWN0KTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJidWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyYnVmZmVyLmgJKHJldmlzaW9uIDUxMzQxKQorKysgV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw4ICszOSwxMyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxXZWJHTFJlbmRlcmJ1ZmZlcj4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCopOwogICAg
ICAgICAKKyAgICAgICAgLy8gRm9yIHF1ZXJ5aW5nIHByZXZpb3VzbHkgY3JlYXRlZCBvYmplY3Rz
IHZpYSBlLmcuIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcgorICAgICAgICAvLyBG
SVhNRTogc2hvdWxkIGNvbnNpZGVyIGNhbm9uaWNhbGl6aW5nIHRoZXNlIG9iamVjdHMKKyAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViR0xSZW5kZXJidWZmZXI+IGNyZWF0ZShXZWJHTFJlbmRl
cmluZ0NvbnRleHQqLCBQbGF0Zm9ybTNET2JqZWN0IHJlbmRlcmJ1ZmZlcik7CisKICAgICBwcm90
ZWN0ZWQ6CiAgICAgICAgIFdlYkdMUmVuZGVyYnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dCop
OworICAgICAgICBXZWJHTFJlbmRlcmJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHQqLCBQbGF0
Zm9ybTNET2JqZWN0KTsKICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgdm9pZCBfZGVsZXRlT2Jq
ZWN0KFBsYXRmb3JtM0RPYmplY3QpOwogICAgIH07CkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCShyZXZpc2lvbiA1MTM0MSkKKysrIFdlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzksMTEgKzM5LDMxIEBACiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlJlbmRlckJveC5oIgogI2luY2x1ZGUg
IlJlbmRlckxheWVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgV2ViR0xTdGF0
ZVJlc3RvcmVyIHsKK3B1YmxpYzoKKyAgICBXZWJHTFN0YXRlUmVzdG9yZXIoV2ViR0xSZW5kZXJp
bmdDb250ZXh0KiBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICBib29sIGNoYW5nZWQp
CisgICAgICAgIDogbV9jb250ZXh0KGNvbnRleHQpCisgICAgICAgICwgbV9jaGFuZ2VkKGNoYW5n
ZWQpCisgICAgeworICAgIH0KKworICAgIH5XZWJHTFN0YXRlUmVzdG9yZXIoKQorICAgIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5jbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwobV9jaGFuZ2VkKTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBtX2NvbnRleHQ7Cisg
ICAgYm9vbCBtX2NoYW5nZWQ7Cit9OworCiBQYXNzT3duUHRyPFdlYkdMUmVuZGVyaW5nQ29udGV4
dD4gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGUoSFRNTENhbnZhc0VsZW1lbnQqIGNhbnZh
cykKIHsKICAgICBPd25QdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQoR3JhcGhpY3NDb250
ZXh0M0Q6OmNyZWF0ZSgpKTsKQEAgLTU4LDkgKzc4LDEyIEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6V2ViR0xSZW5kZXJpbmdDb24KICAgICAsIG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9u
ZWVkc1VwZGF0ZSh0cnVlKQogICAgICwgbV9tYXJrZWRDYW52YXNEaXJ0eShmYWxzZSkKKyAgICAs
IG1fYWN0aXZlVGV4dHVyZVVuaXQoMCkKIHsKICAgICBBU1NFUlQobV9jb250ZXh0KTsKLSAgICBt
X21heFZlcnRleEF0dHJpYnMgPSBtX2NvbnRleHQtPmdldEludGVnZXIoR3JhcGhpY3NDb250ZXh0
M0Q6Ok1BWF9WRVJURVhfQVRUUklCUyk7CisgICAgaW50IG51bVZlcnRleEF0dHJpYnMgPSAwOwor
ICAgIG1fY29udGV4dC0+Z2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9WRVJURVhf
QVRUUklCUywgJm51bVZlcnRleEF0dHJpYnMpOworICAgIG1fbWF4VmVydGV4QXR0cmlicyA9IG51
bVZlcnRleEF0dHJpYnM7CiAgICAgbV9jb250ZXh0LT5yZXNoYXBlKGNhbnZhcygpLT53aWR0aCgp
LCBjYW52YXMoKS0+aGVpZ2h0KCkpOwogfQogCkBAIC0xMjQsOCArMTQ3LDE0IEBAIGludCBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OnNpemVJbkJ5dGVzKGkKICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci12b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YWN0aXZlVGV4dHVyZSh1bnNpZ25lZCBsb25n
IHRleHR1cmUpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YWN0aXZlVGV4dHVyZSh1bnNp
Z25lZCBsb25nIHRleHR1cmUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIGlmICgodGV4dHVy
ZSAtIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMCkgPiBzaXplb2YobV90ZXh0dXJlVW5pdHMp
IC8gc2l6ZW9mKFRleHR1cmVVbml0U3RhdGUpKSB7CisgICAgICAgIC8vIEZJWE1FOiByYWlzZSBH
TF9JTlZBTElEX0VOVU0gZXJyb3IKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIG1fYWN0aXZlVGV4dHVyZVVuaXQgPSB0ZXh0dXJlIC0gR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkUwOwogICAgIG1fY29udGV4dC0+YWN0aXZlVGV4dHVyZSh0ZXh0
dXJlKTsKICAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQpAQCAtMTYyLDYg
KzE5MSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpiaW5kQnVmZmVyKHUKICAgICBl
bHNlIGlmICh0YXJnZXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkVMRU1FTlRfQVJSQVlfQlVGRkVS
KQogICAgICAgICBtX2JvdW5kRWxlbWVudEFycmF5QnVmZmVyID0gYnVmZmVyOwogICAgIGVsc2Ug
eworICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9FTlVNIGVycm9yCiAgICAgICAg
IGVjID0gU1lOVEFYX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE3Nyw2ICsyMDcs
MTIgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJpbmRGcmFtZWJ1ZgogICAgICAgICBl
YyA9IFRZUEVfTUlTTUFUQ0hfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGlmICh0
YXJnZXQgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSKSB7CisgICAgICAgIC8vIEZJ
WE1FOiByYWlzZSBHTF9JTlZBTElEX0VOVU0gZXJyb3IKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJS
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fZnJhbWVidWZmZXJCaW5kaW5nID0gYnVm
ZmVyOwogICAgIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKHRhcmdldCwgYnVmZmVyKTsKICAg
ICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwogfQpAQCAtMTg3LDYgKzIyMywxMiBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YmluZFJlbmRlcmJ1CiAgICAgICAgIGVjID0g
VFlQRV9NSVNNQVRDSF9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgaWYgKHRhcmdl
dCAhPSBHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSKSB7CisgICAgICAgIC8vIEZJWE1F
OiByYWlzZSBHTF9JTlZBTElEX0VOVU0gZXJyb3IKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fcmVuZGVyYnVmZmVyQmluZGluZyA9IHJlbmRl
ckJ1ZmZlcjsKICAgICBtX2NvbnRleHQtPmJpbmRSZW5kZXJidWZmZXIodGFyZ2V0LCByZW5kZXJC
dWZmZXIpOwogICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7CiB9CkBAIC0xOTgs
NiArMjQwLDE1IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpiaW5kVGV4dHVyZSgKICAg
ICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAg
ICBpZiAodGFyZ2V0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJEKQorICAgICAgICBt
X3RleHR1cmVVbml0c1ttX2FjdGl2ZVRleHR1cmVVbml0XS5tX3RleHR1cmUyREJpbmRpbmcgPSB0
ZXh0dXJlOworICAgIGVsc2UgaWYgKHRhcmdldCA9PSBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV9DVUJFX01BUCkKKyAgICAgICAgbV90ZXh0dXJlVW5pdHNbbV9hY3RpdmVUZXh0dXJlVW5pdF0u
bV90ZXh0dXJlQ3ViZU1hcEJpbmRpbmcgPSB0ZXh0dXJlOworICAgIGVsc2UgeworICAgICAgICAv
LyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9FTlVNIGVycm9yCisgICAgICAgIGVjID0gU1lOVEFY
X0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBtX2NvbnRleHQtPmJpbmRUZXh0dXJl
KHRhcmdldCwgdGV4dHVyZSk7CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsK
IH0KQEAgLTY5MSwzMiArNzQyLDI3IEBAIGludCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEF0
dHJpYkxvY2EKICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFt
LCBuYW1lKTsKIH0KIAotYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEJvb2xlYW4odW5z
aWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICBib29sIHJlc3VsdCA9IG1fY29udGV4dC0+Z2V0Qm9v
bGVhbihwbmFtZSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCi1QYXNzUmVmUHRyPFdlYkdMVW5zaWduZWRCeXRlQXJyYXk+IFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0Qm9vbGVhbnYodW5zaWduZWQgbG9uZyBwbmFtZSkKK1dl
YkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclBhcmFtZXRlcih1bnNp
Z25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7Ci0gICAgUmVmUHRyPFdlYkdMVW5zaWduZWRCeXRlQXJyYXk+IGFycmF5ID0gbV9jb250ZXh0
LT5nZXRCb29sZWFudihwbmFtZSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNl
KTsKLSAgICByZXR1cm4gYXJyYXk7Ci19CisgICAgaWYgKHRhcmdldCAhPSBHcmFwaGljc0NvbnRl
eHQzRDo6QVJSQVlfQlVGRkVSICYmIHRhcmdldCAhPSBHcmFwaGljc0NvbnRleHQzRDo6RUxFTUVO
VF9BUlJBWV9CVUZGRVIpIHsKKyAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfRU5V
TSBlcnJvcgorICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybiBXZWJHTEdl
dEluZm8oKTsKKyAgICB9CiAKLWludCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZlclBh
cmFtZXRlcmkodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0g
ICAgaW50IHJlc3VsdCA9IG1fY29udGV4dC0+Z2V0QnVmZmVyUGFyYW1ldGVyaSh0YXJnZXQsIHBu
YW1lKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19CisgICAgaWYgKHBuYW1lICE9IEdyYXBoaWNzQ29udGV4dDNEOjpCVUZGRVJfU0la
RSAmJiBwbmFtZSAhPSBHcmFwaGljc0NvbnRleHQzRDo6QlVGRkVSX1VTQUdFKSB7CisgICAgICAg
IC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX0VOVU0gZXJyb3IKKyAgICAgICAgZWMgPSBTWU5U
QVhfRVJSOworICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CisgICAgfQogCi1QYXNzUmVm
UHRyPFdlYkdMSW50QXJyYXk+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0QnVmZmVyUGFyYW1l
dGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAg
UmVmUHRyPFdlYkdMSW50QXJyYXk+IGFycmF5ID0gbV9jb250ZXh0LT5nZXRCdWZmZXJQYXJhbWV0
ZXJpdih0YXJnZXQsIHBuYW1lKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2Up
OwotICAgIHJldHVybiBhcnJheTsKKyAgICBXZWJHTFN0YXRlUmVzdG9yZXIodGhpcywgZmFsc2Up
OworICAgIGludCB2YWx1ZTsKKyAgICBtX2NvbnRleHQtPmdldEJ1ZmZlclBhcmFtZXRlcml2KHRh
cmdldCwgcG5hbWUsICZ2YWx1ZSk7CisgICAgaWYgKHBuYW1lID09IEdyYXBoaWNzQ29udGV4dDNE
OjpCVUZGRVJfU0laRSkKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNfY2FzdDxs
b25nPih2YWx1ZSkpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0
aWNfY2FzdDx1bnNpZ25lZCBsb25nPih2YWx1ZSkpOwogfQogCiB1bnNpZ25lZCBsb25nIFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6Z2V0RXJyb3IoKQpAQCAtNzI0LDExNiArNzcwLDMyNyBAQCB1bnNp
Z25lZCBsb25nIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0CiAgICAgcmV0dXJuIG1fY29udGV4
dC0+Z2V0RXJyb3IoKTsKIH0KIAotZmxvYXQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRGbG9h
dCh1bnNpZ25lZCBsb25nIHBuYW1lKQotewotICAgIGZsb2F0IHJlc3VsdCA9IG1fY29udGV4dC0+
Z2V0RmxvYXQocG5hbWUpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotUGFzc1JlZlB0cjxXZWJHTEZsb2F0QXJyYXk+IFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6Z2V0RmxvYXR2KHVuc2lnbmVkIGxvbmcgcG5hbWUpCitXZWJHTEdl
dEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJh
bWV0ZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgdW5z
aWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgUmVmUHRyPFdlYkdM
RmxvYXRBcnJheT4gYXJyYXkgPSBtX2NvbnRleHQtPmdldEZsb2F0dihwbmFtZSk7Ci0gICAgY2xl
YW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKLSAgICByZXR1cm4gYXJyYXk7Ci19Ci0KLWlu
dCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRl
cmkodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgdW5zaWdu
ZWQgbG9uZyBwbmFtZSkKLXsKLSAgICBpbnQgcmVzdWx0ID0gbV9jb250ZXh0LT5nZXRGcmFtZWJ1
ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUpOwotICAg
IGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LQotUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEZy
YW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNp
Z25lZCBsb25nIGF0dGFjaG1lbnQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgUmVmUHRy
PFdlYkdMSW50QXJyYXk+IGFycmF5ID0gbV9jb250ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXJpdih0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lKTsKLSAgICBjbGVhbnVwQWZ0
ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwotICAgIHJldHVybiBhcnJheTsKLX0KKyAgICBpZiAodGFy
Z2V0ICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUgorICAgICAgICB8fCAoYXR0YWNo
bWVudCAhPSBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAKKyAgICAgICAgICAg
ICYmIGF0dGFjaG1lbnQgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0FUVEFDSE1FTlQKKyAg
ICAgICAgICAgICYmIGF0dGFjaG1lbnQgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfQVRU
QUNITUVOVCkKKyAgICAgICAgfHwgKHBuYW1lICE9IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJV
RkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFCisgICAgICAgICAgICAmJiBwbmFtZSAhPSBHcmFw
aGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfTkFNRQorICAgICAg
ICAgICAgJiYgcG5hbWUgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0FUVEFDSE1F
TlRfVEVYVFVSRV9MRVZFTAorICAgICAgICAgICAgJiYgcG5hbWUgIT0gR3JhcGhpY3NDb250ZXh0
M0Q6OkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9DVUJFX01BUF9GQUNFKSkgeworICAg
ICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9FTlVNIGVycm9yCisgICAgICAgIGVjID0g
U1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOworICAgIH0KIAotaW50
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0SW50ZWdlcih1bnNpZ25lZCBsb25nIHBuYW1lKQot
ewotICAgIGZsb2F0IHJlc3VsdCA9IG1fY29udGV4dC0+Z2V0SW50ZWdlcihwbmFtZSk7Ci0gICAg
Y2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAg
IGlmIChwbmFtZSAhPSBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9P
QkpFQ1RfTkFNRSkgeworICAgICAgICBXZWJHTFN0YXRlUmVzdG9yZXIodGhpcywgZmFsc2UpOwor
ICAgICAgICBpbnQgdmFsdWU7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyaXYodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSwgJnZhbHVlKTsKKyAg
ICAgICAgaWYgKHBuYW1lID09IEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9BVFRBQ0hN
RU5UX09CSkVDVF9UWVBFKQorICAgICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBsb25nPih2YWx1ZSkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBy
ZXR1cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0PGxvbmc+KHZhbHVlKSk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgV2ViR0xTdGF0ZVJlc3RvcmVyKHRoaXMsIGZhbHNlKTsKKyAgICAgICAgaW50
IHR5cGUgPSAwOworICAgICAgICBtX2NvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcml2KHRhcmdldCwgYXR0YWNobWVudCwgR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVG
RkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEUsICZ0eXBlKTsKKyAgICAgICAgaW50IHZhbHVlID0g
MDsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJp
dih0YXJnZXQsIGF0dGFjaG1lbnQsIEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9BVFRB
Q0hNRU5UX09CSkVDVF9OQU1FLCAmdmFsdWUpOworICAgICAgICAvLyBGSVhNRTogc2hvdWxkIGNv
bnNpZGVyIGNhbm9uaWNhbGl6aW5nIHRoZXNlIG9iamVjdHMKKyAgICAgICAgc3dpdGNoICh0eXBl
KSB7CisgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUjogeworICAg
ICAgICAgICAgUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVyPiB0bXAgPSBXZWJHTFJlbmRlcmJ1ZmZl
cjo6Y3JlYXRlKHRoaXMsIHZhbHVlKTsKKyAgICAgICAgICAgIGFkZE9iamVjdCh0bXAuZ2V0KCkp
OworICAgICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMUmVuZGVy
YnVmZmVyPih0bXApKTsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFOiB7CisgICAgICAgICAgICBSZWZQdHI8V2ViR0xUZXh0dXJlPiB0bXAgPSBXZWJH
TFRleHR1cmU6OmNyZWF0ZSh0aGlzLCB2YWx1ZSk7CisgICAgICAgICAgICBhZGRPYmplY3QodG1w
LmdldCgpKTsKKyAgICAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJH
TFRleHR1cmU+KHRtcCkpOworICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAvLyBGSVhNRTogcmFpc2UgZXhjZXB0aW9uPworICAgICAgICAgICAgcmV0dXJuIFdlYkdMR2V0
SW5mbygpOworICAgICAgICB9CisgICAgfQogfQogCi1QYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0SW50ZWdlcnYodW5zaWduZWQgbG9uZyBwbmFtZSkK
K1dlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFBhcmFtZXRlcih1bnNpZ25l
ZCBsb25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBSZWZQdHI8V2ViR0xJbnRB
cnJheT4gYXJyYXkgPSBtX2NvbnRleHQtPmdldEludGVnZXJ2KHBuYW1lKTsKLSAgICBjbGVhbnVw
QWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwotICAgIHJldHVybiBhcnJheTsKKyAgICBXZWJHTFN0
YXRlUmVzdG9yZXIodGhpcywgZmFsc2UpOworICAgIHN3aXRjaCAocG5hbWUpIHsKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dDNEOjpBQ1RJVkVfVEVYVFVSRToKKyAgICAgICAgcmV0dXJuIGdldFVu
c2lnbmVkTG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
QUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFOgorICAgICAgICByZXR1cm4gZ2V0V2ViR0xGbG9hdEFy
cmF5UGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpBTElBU0VE
X1BPSU5UX1NJWkVfUkFOR0U6CisgICAgICAgIHJldHVybiBnZXRXZWJHTEZsb2F0QXJyYXlQYXJh
bWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkFMUEhBX0JJVFM6Cisg
ICAgICAgIHJldHVybiBnZXRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dDNEOjpBUlJBWV9CVUZGRVJfQklORElORzoKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0
SW5mbyhQYXNzUmVmUHRyPFdlYkdMQnVmZmVyPihtX2JvdW5kQXJyYXlCdWZmZXIpKTsKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpCTEVORDoKKyAgICAgICAgcmV0dXJuIGdldEJvb2xlYW5Q
YXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkJMRU5EX0NPTE9S
OgorICAgICAgICByZXR1cm4gZ2V0V2ViR0xGbG9hdEFycmF5UGFyYW1ldGVyKHBuYW1lKTsKKyAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpCTEVORF9EU1RfQUxQSEE6CisgICAgICAgIHJldHVy
biBnZXRVbnNpZ25lZExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0M0Q6OkJMRU5EX0RTVF9SR0I6CisgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZExvbmdQYXJh
bWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkJMRU5EX0VRVUFUSU9O
X0FMUEhBOgorICAgICAgICByZXR1cm4gZ2V0VW5zaWduZWRMb25nUGFyYW1ldGVyKHBuYW1lKTsK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpCTEVORF9FUVVBVElPTl9SR0I6CisgICAgICAg
IHJldHVybiBnZXRVbnNpZ25lZExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0M0Q6OkJMRU5EX1NSQ19BTFBIQToKKyAgICAgICAgcmV0dXJuIGdldFVuc2lnbmVk
TG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6QkxFTkRf
U1JDX1JHQjoKKyAgICAgICAgcmV0dXJuIGdldFVuc2lnbmVkTG9uZ1BhcmFtZXRlcihwbmFtZSk7
CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6QkxVRV9CSVRTOgorICAgICAgICByZXR1cm4g
Z2V0TG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Q09M
T1JfQ0xFQVJfVkFMVUU6CisgICAgICAgIHJldHVybiBnZXRXZWJHTEZsb2F0QXJyYXlQYXJhbWV0
ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX1dSSVRFTUFTSzoK
KyAgICAgICAgcmV0dXJuIGdldFdlYkdMVW5zaWduZWRCeXRlQXJyYXlQYXJhbWV0ZXIocG5hbWUp
OworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRT
OgorICAgICAgICAvLyBEZWZpbmVkIGFzIG51bGwgaW4gdGhlIHNwZWMKKyAgICAgICAgcmV0dXJu
IFdlYkdMR2V0SW5mbygpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNVTExfRkFDRToK
KyAgICAgICAgcmV0dXJuIGdldEJvb2xlYW5QYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0M0Q6OkNVTExfRkFDRV9NT0RFOgorICAgICAgICByZXR1cm4gZ2V0VW5zaWdu
ZWRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpDVVJS
RU5UX1BST0dSQU06CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJH
TFByb2dyYW0+KG1fY3VycmVudFByb2dyYW0pKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNE
OjpERVBUSF9CSVRTOgorICAgICAgICByZXR1cm4gZ2V0TG9uZ1BhcmFtZXRlcihwbmFtZSk7Cisg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQ0xFQVJfVkFMVUU6CisgICAgICAgIHJl
dHVybiBnZXRGbG9hdFBhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQz
RDo6REVQVEhfRlVOQzoKKyAgICAgICAgcmV0dXJuIGdldFVuc2lnbmVkTG9uZ1BhcmFtZXRlcihw
bmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfUkFOR0U6CisgICAgICAg
IHJldHVybiBnZXRXZWJHTEZsb2F0QXJyYXlQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0M0Q6OkRFUFRIX1RFU1Q6CisgICAgICAgIHJldHVybiBnZXRCb29sZWFuUGFy
YW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9XUklURU1B
U0s6CisgICAgICAgIHJldHVybiBnZXRCb29sZWFuUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dDNEOjpESVRIRVI6CisgICAgICAgIHJldHVybiBnZXRCb29sZWFuUGFy
YW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpFTEVNRU5UX0FSUkFZ
X0JVRkZFUl9CSU5ESU5HOgorICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKFBhc3NSZWZQdHI8
V2ViR0xCdWZmZXI+KG1fYm91bmRFbGVtZW50QXJyYXlCdWZmZXIpKTsKKyAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9CSU5ESU5HOgorICAgICAgICByZXR1cm4gV2ViR0xH
ZXRJbmZvKFBhc3NSZWZQdHI8V2ViR0xGcmFtZWJ1ZmZlcj4obV9mcmFtZWJ1ZmZlckJpbmRpbmcp
KTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpGUk9OVF9GQUNFOgorICAgICAgICByZXR1
cm4gZ2V0VW5zaWduZWRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29u
dGV4dDNEOjpHRU5FUkFURV9NSVBNQVBfSElOVDoKKyAgICAgICAgcmV0dXJuIGdldFVuc2lnbmVk
TG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6R1JFRU5f
QklUUzoKKyAgICAgICAgcmV0dXJuIGdldExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVfV0lEVEg6CisgICAgICAgIHJldHVybiBnZXRGbG9hdFBh
cmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6TUFYX0NPTUJJTkVE
X1RFWFRVUkVfSU1BR0VfVU5JVFM6CisgICAgICAgIHJldHVybiBnZXRMb25nUGFyYW1ldGVyKHBu
YW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpNQVhfQ1VCRV9NQVBfVEVYVFVSRV9T
SVpFOgorICAgICAgICByZXR1cm4gZ2V0TG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6TUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUzoKKyAgICAgICAg
cmV0dXJuIGdldExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
M0Q6Ok1BWF9SRU5ERVJCVUZGRVJfU0laRToKKyAgICAgICAgcmV0dXJuIGdldExvbmdQYXJhbWV0
ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9URVhUVVJFX0lNQUdF
X1VOSVRTOgorICAgICAgICByZXR1cm4gZ2V0TG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHQzRDo6TUFYX1RFWFRVUkVfU0laRToKKyAgICAgICAgcmV0dXJuIGdl
dExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9W
QVJZSU5HX1ZFQ1RPUlM6CisgICAgICAgIHJldHVybiBnZXRMb25nUGFyYW1ldGVyKHBuYW1lKTsK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpNQVhfVkVSVEVYX0FUVFJJQlM6CisgICAgICAg
IHJldHVybiBnZXRMb25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dDNEOjpNQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFM6CisgICAgICAgIHJldHVybiBnZXRM
b25nUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpNQVhfVkVS
VEVYX1VOSUZPUk1fVkVDVE9SUzoKKyAgICAgICAgcmV0dXJuIGdldExvbmdQYXJhbWV0ZXIocG5h
bWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9WSUVXUE9SVF9ESU1TOgorICAg
ICAgICByZXR1cm4gZ2V0V2ViR0xJbnRBcnJheVBhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6TlVNX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTOgorICAgICAg
ICByZXR1cm4gZ2V0TG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6TlVNX1NIQURFUl9CSU5BUllfRk9STUFUUzoKKyAgICAgICAgLy8gRklYTUU6IHNob3Vs
ZCB3ZSBhbHdheXMgcmV0dXJuIDAgZm9yIHRoaXM/CisgICAgICAgIHJldHVybiBnZXRMb25nUGFy
YW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpQQUNLX0FMSUdOTUVO
VDoKKyAgICAgICAgcmV0dXJuIGdldExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0M0Q6OlBPTFlHT05fT0ZGU0VUX0ZBQ1RPUjoKKyAgICAgICAgcmV0dXJuIGdl
dEZsb2F0UGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpQT0xZ
R09OX09GRlNFVF9GSUxMOgorICAgICAgICByZXR1cm4gZ2V0Qm9vbGVhblBhcmFtZXRlcihwbmFt
ZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6UE9MWUdPTl9PRkZTRVRfVU5JVFM6Cisg
ICAgICAgIHJldHVybiBnZXRGbG9hdFBhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHQzRDo6UkVEX0JJVFM6CisgICAgICAgIHJldHVybiBnZXRMb25nUGFyYW1ldGVyKHBu
YW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVJfQklORElORzoK
KyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMUmVuZGVyYnVmZmVy
PihtX3JlbmRlcmJ1ZmZlckJpbmRpbmcpKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpT
QU1QTEVfQlVGRkVSUzoKKyAgICAgICAgcmV0dXJuIGdldExvbmdQYXJhbWV0ZXIocG5hbWUpOwor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNBTVBMRV9DT1ZFUkFHRV9JTlZFUlQ6CisgICAg
ICAgIHJldHVybiBnZXRCb29sZWFuUGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNz
Q29udGV4dDNEOjpTQU1QTEVfQ09WRVJBR0VfVkFMVUU6CisgICAgICAgIHJldHVybiBnZXRGbG9h
dFBhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U0FNUExFUzoK
KyAgICAgICAgcmV0dXJuIGdldExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0M0Q6OlNDSVNTT1JfQk9YOgorICAgICAgICByZXR1cm4gZ2V0V2ViR0xJbnRBcnJh
eVBhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6U0NJU1NPUl9U
RVNUOgorICAgICAgICByZXR1cm4gZ2V0Qm9vbGVhblBhcmFtZXRlcihwbmFtZSk7CisgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9CQUNLX0ZBSUw6CisgICAgICAgIHJldHVybiBn
ZXRVbnNpZ25lZExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
M0Q6OlNURU5DSUxfQkFDS19GVU5DOgorICAgICAgICByZXR1cm4gZ2V0VW5zaWduZWRMb25nUGFy
YW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0JBQ0tf
UEFTU19ERVBUSF9GQUlMOgorICAgICAgICByZXR1cm4gZ2V0VW5zaWduZWRMb25nUGFyYW1ldGVy
KHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0JBQ0tfUEFTU19E
RVBUSF9QQVNTOgorICAgICAgICByZXR1cm4gZ2V0VW5zaWduZWRMb25nUGFyYW1ldGVyKHBuYW1l
KTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0JBQ0tfUkVGOgorICAgICAg
ICByZXR1cm4gZ2V0TG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6U1RFTkNJTF9CQUNLX1ZBTFVFX01BU0s6CisgICAgICAgIHJldHVybiBnZXRVbnNpZ25l
ZExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5D
SUxfQkFDS19XUklURU1BU0s6CisgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZExvbmdQYXJhbWV0
ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfQklUUzoKKyAg
ICAgICAgcmV0dXJuIGdldExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3ND
b250ZXh0M0Q6OlNURU5DSUxfQ0xFQVJfVkFMVUU6CisgICAgICAgIHJldHVybiBnZXRMb25nUGFy
YW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0ZBSUw6
CisgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfRlVOQzoKKyAgICAgICAgcmV0dXJuIGdldFVu
c2lnbmVkTG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
U1RFTkNJTF9QQVNTX0RFUFRIX0ZBSUw6CisgICAgICAgIHJldHVybiBnZXRVbnNpZ25lZExvbmdQ
YXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfUEFT
U19ERVBUSF9QQVNTOgorICAgICAgICByZXR1cm4gZ2V0VW5zaWduZWRMb25nUGFyYW1ldGVyKHBu
YW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX1JFRjoKKyAgICAgICAg
cmV0dXJuIGdldExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0
M0Q6OlNURU5DSUxfVEVTVDoKKyAgICAgICAgcmV0dXJuIGdldEJvb2xlYW5QYXJhbWV0ZXIocG5h
bWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfVkFMVUVfTUFTSzoKKyAg
ICAgICAgcmV0dXJuIGdldFVuc2lnbmVkTG9uZ1BhcmFtZXRlcihwbmFtZSk7CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6U1RFTkNJTF9XUklURU1BU0s6CisgICAgICAgIHJldHVybiBnZXRV
bnNpZ25lZExvbmdQYXJhbWV0ZXIocG5hbWUpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6
OlNVQlBJWEVMX0JJVFM6CisgICAgICAgIHJldHVybiBnZXRMb25nUGFyYW1ldGVyKHBuYW1lKTsK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX0JJTkRJTkdfMkQ6CisgICAgICAg
IHJldHVybiBXZWJHTEdldEluZm8oUGFzc1JlZlB0cjxXZWJHTFRleHR1cmU+KG1fdGV4dHVyZVVu
aXRzW21fYWN0aXZlVGV4dHVyZVVuaXRdLm1fdGV4dHVyZTJEQmluZGluZykpOworICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfQklORElOR19DVUJFX01BUDoKKyAgICAgICAgcmV0
dXJuIFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMVGV4dHVyZT4obV90ZXh0dXJlVW5pdHNb
bV9hY3RpdmVUZXh0dXJlVW5pdF0ubV90ZXh0dXJlQ3ViZU1hcEJpbmRpbmcpKTsKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dDNEOjpVTlBBQ0tfQUxJR05NRU5UOgorICAgICAgICAvLyBGSVhNRTog
c2hvdWxkIHRoaXMgYmUgImxvbmciIGluIHRoZSBzcGVjPworICAgICAgICByZXR1cm4gZ2V0SW50
UGFyYW1ldGVyKHBuYW1lKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpWSUVXUE9SVDoK
KyAgICAgICAgcmV0dXJuIGdldFdlYkdMSW50QXJyYXlQYXJhbWV0ZXIocG5hbWUpOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX0VOVU0gZXJyb3IKKyAg
ICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7Cisg
ICAgfQogfQogCi1pbnQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQcm9ncmFtaShXZWJHTFBy
b2dyYW0qIHByb2dyYW0sIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQor
V2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UHJvZ3JhbVBhcmFtZXRlcihX
ZWJHTFByb2dyYW0qIHByb2dyYW0sIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogewogICAgIGlmICghcHJvZ3JhbSB8fCBwcm9ncmFtLT5jb250ZXh0KCkgIT0gdGhpcykg
eworICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9WQUxVRSBlcnJvcgogICAgICAg
ICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0
dXJuIFdlYkdMR2V0SW5mbygpOwogICAgIH0KIAotICAgIGludCByZXN1bHQgPSBtX2NvbnRleHQt
PmdldFByb2dyYW1pKHByb2dyYW0sIHBuYW1lKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0Nh
bGwoZmFsc2UpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVBhc3NSZWZQdHI8V2ViR0xJbnRB
cnJheT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQcm9ncmFtaXYoV2ViR0xQcm9ncmFtKiBw
cm9ncmFtLCB1bnNpZ25lZCBsb25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBp
ZiAoIXByb2dyYW0gfHwgcHJvZ3JhbS0+Y29udGV4dCgpICE9IHRoaXMpIHsKLSAgICAgICAgZWMg
PSBUWVBFX01JU01BVENIX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgV2ViR0xTdGF0ZVJl
c3RvcmVyKHRoaXMsIGZhbHNlKTsKKyAgICBpbnQgdmFsdWUgPSAwOworICAgIHN3aXRjaCAocG5h
bWUpIHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERUxFVEVfU1RBVFVTOgorICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTktfU1RBVFVTOgorICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0M0Q6OlZBTElEQVRFX1NUQVRVUzoKKyAgICAgICAgbV9jb250ZXh0LT5nZXRQcm9ncmFtaXYo
cHJvZ3JhbSwgcG5hbWUsICZ2YWx1ZSk7CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oc3Rh
dGljX2Nhc3Q8Ym9vbD4odmFsdWUpKTsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpJTkZP
X0xPR19MRU5HVEg6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6QVRUQUNIRURfU0hBREVS
UzoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpBQ1RJVkVfQVRUUklCVVRFUzoKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpBQ1RJVkVfQVRUUklCVVRFX01BWF9MRU5HVEg6CisgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHQzRDo6QUNUSVZFX1VOSUZPUk1TOgorICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0M0Q6OkFDVElWRV9VTklGT1JNX01BWF9MRU5HVEg6CisgICAgICAgIG1fY29udGV4
dC0+Z2V0UHJvZ3JhbWl2KHByb2dyYW0sIHBuYW1lLCAmdmFsdWUpOworICAgICAgICByZXR1cm4g
V2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0PGxvbmc+KHZhbHVlKSk7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfRU5VTSBlcnJvcgorICAgICAgICBlYyA9
IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oKTsKICAgICB9Ci0gICAg
UmVmUHRyPFdlYkdMSW50QXJyYXk+IGFycmF5ID0gbV9jb250ZXh0LT5nZXRQcm9ncmFtaXYocHJv
Z3JhbSwgcG5hbWUpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci0gICAg
cmV0dXJuIGFycmF5OwogfQogCiBTdHJpbmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQcm9n
cmFtSW5mb0xvZyhXZWJHTFByb2dyYW0qIHByb2dyYW0sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewog
ICAgIGlmICghcHJvZ3JhbSB8fCBwcm9ncmFtLT5jb250ZXh0KCkgIT0gdGhpcykgeworICAgICAg
ICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJRF9WQUxVRSBlcnJvcgogICAgICAgICBlYyA9IFRZ
UEVfTUlTTUFUQ0hfRVJSOwogICAgICAgICByZXR1cm4gIiI7CiAgICAgfQotICAgIFN0cmluZyBz
ID0gbV9jb250ZXh0LT5nZXRQcm9ncmFtSW5mb0xvZyhwcm9ncmFtKTsKLSAgICBjbGVhbnVwQWZ0
ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwotICAgIHJldHVybiBzOworICAgIFdlYkdMU3RhdGVSZXN0
b3Jlcih0aGlzLCBmYWxzZSk7CisgICAgcmV0dXJuIG1fY29udGV4dC0+Z2V0UHJvZ3JhbUluZm9M
b2cocHJvZ3JhbSk7CiB9CiAKLWludCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFJlbmRlcmJ1
ZmZlclBhcmFtZXRlcmkodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUp
CitXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRSZW5kZXJidWZmZXJQYXJh
bWV0ZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogewotICAgIGludCByZXN1bHQgPSBtX2NvbnRleHQtPmdldFJlbmRlcmJ1ZmZl
clBhcmFtZXRlcmkodGFyZ2V0LCBwbmFtZSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxs
KGZhbHNlKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1QYXNzUmVmUHRyPFdlYkdMSW50QXJy
YXk+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYodW5z
aWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgUmVmUHRyPFdl
YkdMSW50QXJyYXk+IGFycmF5ID0gbV9jb250ZXh0LT5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJp
dih0YXJnZXQsIHBuYW1lKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwot
ICAgIHJldHVybiBhcnJheTsKLX0KKyAgICBpZiAodGFyZ2V0ICE9IEdyYXBoaWNzQ29udGV4dDNE
OjpSRU5ERVJCVUZGRVIpIHsKKyAgICAgICAgLy8gRklYTUU6IHJhaXNlIEdMX0lOVkFMSURfRU5V
TSBlcnJvcgorICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybiBXZWJHTEdl
dEluZm8oKTsKKyAgICB9CiAKLWludCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFNoYWRlcmko
V2ViR0xTaGFkZXIqIHNoYWRlciwgdW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCi17Ci0gICAgaWYgKCFzaGFkZXIgfHwgc2hhZGVyLT5jb250ZXh0KCkgIT0gdGhpcykgewot
ICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOwotICAgICAgICByZXR1cm4gMDsKKyAgICBX
ZWJHTFN0YXRlUmVzdG9yZXIodGhpcywgZmFsc2UpOworICAgIGludCB2YWx1ZSA9IDA7CisgICAg
c3dpdGNoIChwbmFtZSkgeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZF
Ul9XSURUSDoKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVJfSEVJR0hU
OgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUl9SRURfU0laRToKKyAg
ICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVJfR1JFRU5fU0laRToKKyAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVJfQkxVRV9TSVpFOgorICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUl9BTFBIQV9TSVpFOgorICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUl9ERVBUSF9TSVpFOgorICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUl9TVEVOQ0lMX1NJWkU6CisgICAgICAgIG1fY29udGV4
dC0+Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgJnZhbHVlKTsKKyAg
ICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNfY2FzdDxsb25nPih2YWx1ZSkpOworICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUl9JTlRFUk5BTF9GT1JNQVQ6Cisg
ICAgICAgIG1fY29udGV4dC0+Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFt
ZSwgJnZhbHVlKTsKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNfY2FzdDx1bnNp
Z25lZCBsb25nPih2YWx1ZSkpOworICAgIGRlZmF1bHQ6CisgICAgICAgIC8vIEZJWE1FOiByYWlz
ZSBHTF9JTlZBTElEX0VOVU0gZXJyb3IKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAg
ICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CiAgICAgfQotICAgIGludCByZXN1bHQgPSBtX2NvbnRl
eHQtPmdldFNoYWRlcmkoc2hhZGVyLCBwbmFtZSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3ND
YWxsKGZhbHNlKTsKLSAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QYXNzUmVmUHRyPFdlYkdMSW50
QXJyYXk+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2hhZGVyaXYoV2ViR0xTaGFkZXIqIHNo
YWRlciwgdW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitXZWJHTEdldElu
Zm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTaGFkZXJQYXJhbWV0ZXIoV2ViR0xTaGFkZXIq
IHNoYWRlciwgdW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAg
aWYgKCFzaGFkZXIgfHwgc2hhZGVyLT5jb250ZXh0KCkgIT0gdGhpcykgeworICAgICAgICAvLyBG
SVhNRTogcmFpc2UgR0xfSU5WQUxJRF9WQUxVRSBlcnJvcgogICAgICAgICBlYyA9IFRZUEVfTUlT
TUFUQ0hfRVJSOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5m
bygpOworICAgIH0KKyAgICBXZWJHTFN0YXRlUmVzdG9yZXIodGhpcywgZmFsc2UpOworICAgIGlu
dCB2YWx1ZSA9IDA7CisgICAgc3dpdGNoIChwbmFtZSkgeworICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0M0Q6OkRFTEVURV9TVEFUVVM6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Q09NUElM
RV9TVEFUVVM6CisgICAgICAgIG1fY29udGV4dC0+Z2V0U2hhZGVyaXYoc2hhZGVyLCBwbmFtZSwg
JnZhbHVlKTsKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNfY2FzdDxib29sPih2
YWx1ZSkpOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNIQURFUl9UWVBFOgorICAgICAg
ICBtX2NvbnRleHQtPmdldFNoYWRlcml2KHNoYWRlciwgcG5hbWUsICZ2YWx1ZSk7CisgICAgICAg
IHJldHVybiBXZWJHTEdldEluZm8oc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4odmFsdWUpKTsK
KyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpJTkZPX0xPR19MRU5HVEg6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6U0hBREVSX1NPVVJDRV9MRU5HVEg6CisgICAgICAgIG1fY29udGV4
dC0+Z2V0U2hhZGVyaXYoc2hhZGVyLCBwbmFtZSwgJnZhbHVlKTsKKyAgICAgICAgcmV0dXJuIFdl
YkdMR2V0SW5mbyhzdGF0aWNfY2FzdDxsb25nPih2YWx1ZSkpOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX0VOVU0gZXJyb3IKKyAgICAgICAgZWMgPSBT
WU5UQVhfRVJSOworICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CiAgICAgfQotICAgIFJl
ZlB0cjxXZWJHTEludEFycmF5PiBhcnJheSA9IG1fY29udGV4dC0+Z2V0U2hhZGVyaXYoc2hhZGVy
LCBwbmFtZSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKLSAgICByZXR1
cm4gYXJyYXk7CiB9CiAKIFN0cmluZyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFNoYWRlcklu
Zm9Mb2coV2ViR0xTaGFkZXIqIHNoYWRlciwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC04NDIsOSAr
MTA5OSw4IEBAIFN0cmluZyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFNoYWRlckkKICAgICAg
ICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKICAgICAgICAgcmV0dXJuICIiOwogICAgIH0KLSAg
ICBTdHJpbmcgcyA9IG1fY29udGV4dC0+Z2V0U2hhZGVySW5mb0xvZyhzaGFkZXIpOwotICAgIGNs
ZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci0gICAgcmV0dXJuIHM7CisgICAgV2ViR0xT
dGF0ZVJlc3RvcmVyKHRoaXMsIGZhbHNlKTsKKyAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRTaGFk
ZXJJbmZvTG9nKHNoYWRlcik7CiB9CiAKIFN0cmluZyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omdl
dFNoYWRlclNvdXJjZShXZWJHTFNoYWRlciogc2hhZGVyLCBFeGNlcHRpb25Db2RlJiBlYykKQEAg
LTg1Myw4NiArMTEwOSwxNjYgQEAgU3RyaW5nIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2hh
ZGVyUwogICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOwogICAgICAgICByZXR1cm4gIiI7
CiAgICAgfQotICAgIFN0cmluZyBzID0gbV9jb250ZXh0LT5nZXRTaGFkZXJTb3VyY2Uoc2hhZGVy
KTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwotICAgIHJldHVybiBzOwor
ICAgIFdlYkdMU3RhdGVSZXN0b3Jlcih0aGlzLCBmYWxzZSk7CisgICAgcmV0dXJuIG1fY29udGV4
dC0+Z2V0U2hhZGVyU291cmNlKHNoYWRlcik7CiB9CiAKIFN0cmluZyBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmdldFN0cmluZyh1bnNpZ25lZCBsb25nIG5hbWUpCiB7CisgICAgV2ViR0xTdGF0ZVJl
c3RvcmVyKHRoaXMsIGZhbHNlKTsKICAgICByZXR1cm4gbV9jb250ZXh0LT5nZXRTdHJpbmcobmFt
ZSk7CiB9CiAKLWZsb2F0IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VGV4UGFyYW1ldGVyZih1
bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICBmbG9hdCBy
ZXN1bHQgPSBtX2NvbnRleHQtPmdldFRleFBhcmFtZXRlcmYodGFyZ2V0LCBwbmFtZSk7Ci0gICAg
Y2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ci1QYXNzUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRU
ZXhQYXJhbWV0ZXJmdih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSkK
K1dlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFRleFBhcmFtZXRlcih1bnNp
Z25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7Ci0gICAgUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gYXJyYXkgPSBtX2NvbnRleHQtPmdldFRl
eFBhcmFtZXRlcmZ2KHRhcmdldCwgcG5hbWUpOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2Fs
bChmYWxzZSk7Ci0gICAgcmV0dXJuIGFycmF5OwotfQotCi1pbnQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0OjpnZXRUZXhQYXJhbWV0ZXJpKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25n
IHBuYW1lKQotewotICAgIGludCByZXN1bHQgPSBtX2NvbnRleHQtPmdldFRleFBhcmFtZXRlcmko
dGFyZ2V0LCBwbmFtZSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotCi1QYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6Z2V0VGV4UGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVu
c2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgUmVmUHRyPFdlYkdMSW50QXJyYXk+IGFycmF5ID0g
bV9jb250ZXh0LT5nZXRUZXhQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lKTsKLSAgICBjbGVhbnVw
QWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwotICAgIHJldHVybiBhcnJheTsKLX0KLQotZmxvYXQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRVbmlmb3JtZihXZWJHTFByb2dyYW0qIHByb2dyYW0s
IGxvbmcgbG9jYXRpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGlmICghcHJvZ3JhbSB8
fCBwcm9ncmFtLT5jb250ZXh0KCkgIT0gdGhpcykgewotICAgICAgICBlYyA9IFRZUEVfTUlTTUFU
Q0hfRVJSOwotICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAodGFyZ2V0ICE9IEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFXzJECisgICAgICAgICYmIHRhcmdldCAhPSBHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV9DVUJFX01BUCkgeworICAgICAgICAvLyBGSVhNRTogcmFpc2UgR0xfSU5WQUxJ
RF9FTlVNIGVycm9yCisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuIFdl
YkdMR2V0SW5mbygpOwogICAgIH0KLSAgICBmbG9hdCByZXN1bHQgPSBtX2NvbnRleHQtPmdldFVu
aWZvcm1mKHByb2dyYW0sIGxvY2F0aW9uKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwo
ZmFsc2UpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVBhc3NSZWZQdHI8V2ViR0xGbG9hdEFy
cmF5PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFVuaWZvcm1mdihXZWJHTFByb2dyYW0qIHBy
b2dyYW0sIGxvbmcgbG9jYXRpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGlmICghcHJv
Z3JhbSB8fCBwcm9ncmFtLT5jb250ZXh0KCkgIT0gdGhpcykgewotICAgICAgICBlYyA9IFRZUEVf
TUlTTUFUQ0hfRVJSOwotICAgICAgICByZXR1cm4gMDsKKyAgICBXZWJHTFN0YXRlUmVzdG9yZXIo
dGhpcywgZmFsc2UpOworICAgIGludCB2YWx1ZSA9IDA7CisgICAgc3dpdGNoIChwbmFtZSkgewor
ICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRFUjoKKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVI6CisgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1M6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV9XUkFQX1Q6CisgICAgICAgIG1fY29udGV4dC0+Z2V0VGV4UGFyYW1ldGVyaXYodGFy
Z2V0LCBwbmFtZSwgJnZhbHVlKTsKKyAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBsb25nPih2YWx1ZSkpOworICAgIGRlZmF1bHQ6CisgICAgICAgIC8vIEZJ
WE1FOiByYWlzZSBHTF9JTlZBTElEX0VOVU0gZXJyb3IKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJS
OworICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKCk7CiAgICAgfQotICAgIFJlZlB0cjxXZWJH
TEZsb2F0QXJyYXk+IGFycmF5ID0gbV9jb250ZXh0LT5nZXRVbmlmb3JtZnYocHJvZ3JhbSwgbG9j
YXRpb24pOwotICAgIGNsZWFudXBBZnRlckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci0gICAgcmV0dXJu
IGFycmF5OwogfQogCi1sb25nIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VW5pZm9ybWkoV2Vi
R0xQcm9ncmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKK1dl
YkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFVuaWZvcm0oV2ViR0xQcm9ncmFt
KiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAo
IXByb2dyYW0gfHwgcHJvZ3JhbS0+Y29udGV4dCgpICE9IHRoaXMpIHsKKyAgICAgICAgLy8gRklY
TUU6IHJhaXNlIEdMX0lOVkFMSURfVkFMVUUgZXJyb3IKICAgICAgICAgZWMgPSBUWVBFX01JU01B
VENIX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8o
KTsKICAgICB9Ci0gICAgbG9uZyByZXN1bHQgPSBtX2NvbnRleHQtPmdldFVuaWZvcm1pKHByb2dy
YW0sIGxvY2F0aW9uKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci0KLVBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gV2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpnZXRVbmlmb3JtaXYoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBsb25nIGxv
Y2F0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBpZiAoIXByb2dyYW0gfHwgcHJvZ3Jh
bS0+Y29udGV4dCgpICE9IHRoaXMpIHsKLSAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsK
LSAgICAgICAgcmV0dXJuIDA7CisgICAgV2ViR0xTdGF0ZVJlc3RvcmVyKHRoaXMsIGZhbHNlKTsK
KyAgICAvLyBGSVhNRTogbWFrZSB0aGlzIG1vcmUgZWZmaWNpZW50IHVzaW5nIFdlYkdMVW5pZm9y
bUxvY2F0aW9uIGFuZCBjYWNoaW5nIHR5cGVzIGluIGl0CisgICAgaW50IGFjdGl2ZVVuaWZvcm1z
ID0gMDsKKyAgICBtX2NvbnRleHQtPmdldFByb2dyYW1pdihwcm9ncmFtLCBHcmFwaGljc0NvbnRl
eHQzRDo6QUNUSVZFX1VOSUZPUk1TLCAmYWN0aXZlVW5pZm9ybXMpOworICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgYWN0aXZlVW5pZm9ybXM7IGkrKykgeworICAgICAgICBBY3RpdmVJbmZvIGluZm87
CisgICAgICAgIGlmICghbV9jb250ZXh0LT5nZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIGksIGlu
Zm8pKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogcmFpc2Ugc29tZSBHTCBlcnJvcgorICAgICAg
ICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgICAgIHJldHVybiBXZWJHTEdl
dEluZm8oKTsKKyAgICAgICAgfQorICAgICAgICAvLyBOb3cgbmVlZCB0byBsb29rIHRoaXMgdXAg
YnkgbmFtZSBhZ2FpbiB0byBmaW5kIGl0cyBsb2NhdGlvbgorICAgICAgICBsb25nIGxvYyA9IG1f
Y29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sIGluZm8ubmFtZSk7CisgICAgICAg
IGlmIChsb2MgPT0gbG9jYXRpb24pIHsKKyAgICAgICAgICAgIC8vIEZvdW5kIGl0LiBVc2UgdGhl
IHR5cGUgaW4gdGhlIEFjdGl2ZUluZm8gdG8gZGV0ZXJtaW5lIHRoZSByZXR1cm4gdHlwZS4KKyAg
ICAgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEOjpXZWJHTEVudW1UeXBlIGJhc2VUeXBlOworICAg
ICAgICAgICAgdW5zaWduZWQgbGVuZ3RoOworICAgICAgICAgICAgc3dpdGNoIChpbmZvLnR5cGUp
IHsKKyAgICAgICAgICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpCT09MOgorICAgICAg
ICAgICAgICAgICAgICBiYXNlVHlwZSA9IEdyYXBoaWNzQ29udGV4dDNEOjpCT09MOworICAgICAg
ICAgICAgICAgICAgICBsZW5ndGggPSAxOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpCT09MX1ZFQzI6CisgICAgICAg
ICAgICAgICAgICAgIGJhc2VUeXBlID0gR3JhcGhpY3NDb250ZXh0M0Q6OkJPT0w7CisgICAgICAg
ICAgICAgICAgICAgIGxlbmd0aCA9IDI7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkJPT0xfVkVDMzoKKyAgICAgICAg
ICAgICAgICAgICAgYmFzZVR5cGUgPSBHcmFwaGljc0NvbnRleHQzRDo6Qk9PTDsKKyAgICAgICAg
ICAgICAgICAgICAgbGVuZ3RoID0gMzsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Qk9PTF9WRUM0OgorICAgICAgICAg
ICAgICAgICAgICBiYXNlVHlwZSA9IEdyYXBoaWNzQ29udGV4dDNEOjpCT09MOworICAgICAgICAg
ICAgICAgICAgICBsZW5ndGggPSA0OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpJTlQ6CisgICAgICAgICAgICAgICAg
ICAgIGJhc2VUeXBlID0gR3JhcGhpY3NDb250ZXh0M0Q6OklOVDsKKyAgICAgICAgICAgICAgICAg
ICAgbGVuZ3RoID0gMTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6SU5UX1ZFQzI6CisgICAgICAgICAgICAgICAgICAg
IGJhc2VUeXBlID0gR3JhcGhpY3NDb250ZXh0M0Q6OklOVDsKKyAgICAgICAgICAgICAgICAgICAg
bGVuZ3RoID0gMjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
Y2FzZSBHcmFwaGljc0NvbnRleHQzRDo6SU5UX1ZFQzM6CisgICAgICAgICAgICAgICAgICAgIGJh
c2VUeXBlID0gR3JhcGhpY3NDb250ZXh0M0Q6OklOVDsKKyAgICAgICAgICAgICAgICAgICAgbGVu
Z3RoID0gMzsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2Fz
ZSBHcmFwaGljc0NvbnRleHQzRDo6SU5UX1ZFQzQ6CisgICAgICAgICAgICAgICAgICAgIGJhc2VU
eXBlID0gR3JhcGhpY3NDb250ZXh0M0Q6OklOVDsKKyAgICAgICAgICAgICAgICAgICAgbGVuZ3Ro
ID0gNDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6RkxPQVQ6CisgICAgICAgICAgICAgICAgICAgIGJhc2VUeXBlID0g
R3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FUOworICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSAx
OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpGTE9BVF9WRUMyOgorICAgICAgICAgICAgICAgICAgICBiYXNlVHlwZSA9
IEdyYXBoaWNzQ29udGV4dDNEOjpGTE9BVDsKKyAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0g
MjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6RkxPQVRfVkVDMzoKKyAgICAgICAgICAgICAgICAgICAgYmFzZVR5cGUg
PSBHcmFwaGljc0NvbnRleHQzRDo6RkxPQVQ7CisgICAgICAgICAgICAgICAgICAgIGxlbmd0aCA9
IDM7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0M0Q6OkZMT0FUX1ZFQzQ6CisgICAgICAgICAgICAgICAgICAgIGJhc2VUeXBl
ID0gR3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FUOworICAgICAgICAgICAgICAgICAgICBsZW5ndGgg
PSA0OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEdy
YXBoaWNzQ29udGV4dDNEOjpGTE9BVF9NQVQyOgorICAgICAgICAgICAgICAgICAgICBiYXNlVHlw
ZSA9IEdyYXBoaWNzQ29udGV4dDNEOjpGTE9BVDsKKyAgICAgICAgICAgICAgICAgICAgbGVuZ3Ro
ID0gNDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6RkxPQVRfTUFUMzoKKyAgICAgICAgICAgICAgICAgICAgYmFzZVR5
cGUgPSBHcmFwaGljc0NvbnRleHQzRDo6RkxPQVQ7CisgICAgICAgICAgICAgICAgICAgIGxlbmd0
aCA9IDk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FUX01BVDQ6CisgICAgICAgICAgICAgICAgICAgIGJhc2VU
eXBlID0gR3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FUOworICAgICAgICAgICAgICAgICAgICBsZW5n
dGggPSAxNjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICAgICAgLy8gQ2FuJ3QgaGFuZGxlIHRoaXMgdHlwZQorICAg
ICAgICAgICAgICAgICAgICAvLyBGSVhNRTogd2hhdCB0byBkbyBhYm91dCBzYW1wbGVycz8KKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgc3dpdGNoIChiYXNlVHlwZSkgeworICAgICAgICAgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHQzRDo6RkxPQVQ6IHsKKyAgICAgICAgICAgICAgICBmbG9hdCB2YWx1ZVsxNl0gPSB7
MH07CisgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRVbmlmb3JtZnYocHJvZ3JhbSwgbG9j
YXRpb24sIHZhbHVlKTsKKyAgICAgICAgICAgICAgICBpZiAobGVuZ3RoID09IDEpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8odmFsdWVbMF0pOworICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhXZWJHTEZs
b2F0QXJyYXk6OmNyZWF0ZSh2YWx1ZSwgbGVuZ3RoKSk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpJTlQ6IHsKKyAgICAgICAgICAgICAgICBpbnQg
dmFsdWVbMTZdID0gezB9OworICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybWl2
KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKGxlbmd0aCA9
PSAxKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0
PGxvbmc+KHZhbHVlWzBdKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKFdlYkdMSW50QXJyYXk6OmNyZWF0ZSh2YWx1ZSwgbGVu
Z3RoKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNE
OjpCT09MOiB7CisgICAgICAgICAgICAgICAgaW50IHZhbHVlWzE2XSA9IHswfTsKKyAgICAgICAg
ICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZvcm1pdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUp
OworICAgICAgICAgICAgICAgIGlmIChsZW5ndGggPT0gMSkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNfY2FzdDxib29sPih2YWx1ZVswXSkpOworICAgICAg
ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGJvb2xW
YWx1ZVsxNl0gPSB7MH07CisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7
IGogPCBsZW5ndGg7IGorKykKKyAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xWYWx1ZVtqXSA9
IHN0YXRpY19jYXN0PGJvb2w+KHZhbHVlW2pdKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IFdlYkdMR2V0SW5mbyhXZWJHTFVuc2lnbmVkQnl0ZUFycmF5OjpjcmVhdGUoYm9vbFZhbHVlLCBs
ZW5ndGgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KICAgICB9Ci0gICAgUmVmUHRyPFdlYkdMSW50QXJyYXk+IGFycmF5ID0gbV9j
b250ZXh0LT5nZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRpb24pOwotICAgIGNsZWFudXBBZnRl
ckdyYXBoaWNzQ2FsbChmYWxzZSk7Ci0gICAgcmV0dXJuIGFycmF5OworICAgIC8vIElmIHdlIGdl
dCBoZXJlLCBzb21ldGhpbmcgd2VudCB3cm9uZyBpbiBvdXIgdW5mb3J0dW5hdGVseSBjb21wbGV4
IGxvZ2ljIGFib3ZlCisgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOwogfQogCiBsb25nIFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6Z2V0VW5pZm9ybUxvY2F0aW9uKFdlYkdMUHJvZ3JhbSogcHJvZ3Jh
bSwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTk0NCwzMiArMTI4
MCw0NyBAQCBsb25nIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VW5pZm9ybUxvCiAgICAgcmV0
dXJuIG1fY29udGV4dC0+Z2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sIG5hbWUpOwogfQogCi1m
bG9hdCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFZlcnRleEF0dHJpYmYodW5zaWduZWQgbG9u
ZyBpbmRleCwgdW5zaWduZWQgbG9uZyBwbmFtZSkKK1dlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmdldFZlcnRleEF0dHJpYih1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBs
b25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBmbG9hdCByZXN1bHQgPSBtX2Nv
bnRleHQtPmdldFZlcnRleEF0dHJpYmYoaW5kZXgsIHBuYW1lKTsKLSAgICBjbGVhbnVwQWZ0ZXJH
cmFwaGljc0NhbGwoZmFsc2UpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVBhc3NSZWZQdHI8
V2ViR0xGbG9hdEFycmF5PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFZlcnRleEF0dHJpYmZ2
KHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgUmVmUHRy
PFdlYkdMRmxvYXRBcnJheT4gYXJyYXkgPSBtX2NvbnRleHQtPmdldFZlcnRleEF0dHJpYmZ2KGlu
ZGV4LCBwbmFtZSk7Ci0gICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKLSAgICBy
ZXR1cm4gYXJyYXk7Ci19Ci0KLWxvbmcgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRWZXJ0ZXhB
dHRyaWJpKHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAg
bG9uZyByZXN1bHQgPSBtX2NvbnRleHQtPmdldFZlcnRleEF0dHJpYmkoaW5kZXgsIHBuYW1lKTsK
LSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwoZmFsc2UpOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLVBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRWZXJ0ZXhBdHRyaWJpdih1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBuYW1l
KQotewotICAgIFJlZlB0cjxXZWJHTEludEFycmF5PiBhcnJheSA9IG1fY29udGV4dC0+Z2V0VmVy
dGV4QXR0cmliaXYoaW5kZXgsIHBuYW1lKTsKLSAgICBjbGVhbnVwQWZ0ZXJHcmFwaGljc0NhbGwo
ZmFsc2UpOwotICAgIHJldHVybiBhcnJheTsKKyAgICBXZWJHTFN0YXRlUmVzdG9yZXIodGhpcywg
ZmFsc2UpOworICAgIHN3aXRjaCAocG5hbWUpIHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNE
OjpWRVJURVhfQVRUUklCX0FSUkFZX0JVRkZFUl9CSU5ESU5HOiB7CisgICAgICAgIGludCBuYW1l
ID0gMDsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRWZXJ0ZXhBdHRyaWJpdihpbmRleCwgcG5hbWUs
ICZuYW1lKTsKKyAgICAgICAgaWYgKG5hbWUgPT0gMCkKKyAgICAgICAgICAgIHJldHVybiBXZWJH
TEdldEluZm8oKTsKKyAgICAgICAgUmVmUHRyPFdlYkdMQnVmZmVyPiB0bXAgPSBXZWJHTEJ1ZmZl
cjo6Y3JlYXRlKHRoaXMsIG5hbWUpOworICAgICAgICBhZGRPYmplY3QodG1wLmdldCgpKTsKKyAg
ICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhQYXNzUmVmUHRyPFdlYkdMQnVmZmVyPih0bXApKTsK
KyAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VkVSVEVYX0FUVFJJQl9BUlJBWV9F
TkFCTEVEOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlZFUlRFWF9BVFRSSUJfQVJSQVlf
Tk9STUFMSVpFRDogeworICAgICAgICBpbnQgdmFsdWUgPSAwOworICAgICAgICBtX2NvbnRleHQt
PmdldFZlcnRleEF0dHJpYml2KGluZGV4LCBwbmFtZSwgJnZhbHVlKTsKKyAgICAgICAgcmV0dXJu
IFdlYkdMR2V0SW5mbyhzdGF0aWNfY2FzdDxib29sPih2YWx1ZSkpOworICAgIH0KKyAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dDNEOjpWRVJURVhfQVRUUklCX0FSUkFZX1NJWkU6CisgICAgY2FzZSBH
cmFwaGljc0NvbnRleHQzRDo6VkVSVEVYX0FUVFJJQl9BUlJBWV9TVFJJREU6IHsKKyAgICAgICAg
aW50IHZhbHVlID0gMDsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRWZXJ0ZXhBdHRyaWJpdihpbmRl
eCwgcG5hbWUsICZ2YWx1ZSk7CisgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8oc3RhdGljX2Nh
c3Q8bG9uZz4odmFsdWUpKTsKKyAgICB9CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VkVS
VEVYX0FUVFJJQl9BUlJBWV9UWVBFOiB7CisgICAgICAgIGludCB2YWx1ZSA9IDA7CisgICAgICAg
IG1fY29udGV4dC0+Z2V0VmVydGV4QXR0cmliaXYoaW5kZXgsIHBuYW1lLCAmdmFsdWUpOworICAg
ICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KHZhbHVl
KSk7CisgICAgfQorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNVUlJFTlRfVkVSVEVYX0FU
VFJJQjogeworICAgICAgICBmbG9hdCB2YWx1ZVs0XSA9IHswfTsKKyAgICAgICAgbV9jb250ZXh0
LT5nZXRWZXJ0ZXhBdHRyaWJmdihpbmRleCwgcG5hbWUsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJu
IFdlYkdMR2V0SW5mbyhXZWJHTEZsb2F0QXJyYXk6OmNyZWF0ZSh2YWx1ZSwgNCkpOworICAgIH0K
KyAgICBkZWZhdWx0OiB7CisgICAgICAgIC8vIEZJWE1FOiByYWlzZSBHTF9JTlZBTElEX0VOVU0g
ZXJyb3IKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm4gV2ViR0xHZXRJ
bmZvKCk7CisgICAgfQorICAgIH0KIH0KIAogbG9uZyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omdl
dFZlcnRleEF0dHJpYk9mZnNldCh1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBu
YW1lKQpAQCAtMTU4NCw2ICsxOTM1LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVz
ZVByb2dyYW0oVwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgICAgICAKKyAgICBtX2N1cnJl
bnRQcm9ncmFtID0gcHJvZ3JhbTsKICAgICBtX2NvbnRleHQtPnVzZVByb2dyYW0ocHJvZ3JhbSk7
CiAgICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKIH0KQEAgLTE3NTIsNyArMjEw
NCw5NCBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6ZGV0YWNoQW5kUmVtCiAgICAgbV9j
YW52YXNPYmplY3RzLmNsZWFyKCk7CiB9CiAKK1dlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmdldEJvb2xlYW5QYXJhbWV0ZXIodW5zaWduZWQgbG9uZyBwbmFtZSkKK3sKKyAgICB1
bnNpZ25lZCBjaGFyIHZhbHVlOworICAgIG1fY29udGV4dC0+Z2V0Qm9vbGVhbnYocG5hbWUsICZ2
YWx1ZSk7CisgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhzdGF0aWNfY2FzdDxib29sPih2YWx1ZSkp
OworfQorCitXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRGbG9hdFBhcmFt
ZXRlcih1bnNpZ25lZCBsb25nIHBuYW1lKQoreworICAgIGZsb2F0IHZhbHVlOworICAgIG1fY29u
dGV4dC0+Z2V0RmxvYXR2KHBuYW1lLCAmdmFsdWUpOworICAgIHJldHVybiBXZWJHTEdldEluZm8o
c3RhdGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlKSk7Cit9CisKK1dlYkdMR2V0SW5mbyBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmdldEludFBhcmFtZXRlcih1bnNpZ25lZCBsb25nIHBuYW1lKQoreworICAg
IHJldHVybiBnZXRMb25nUGFyYW1ldGVyKHBuYW1lKTsKK30KKworV2ViR0xHZXRJbmZvIFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6Z2V0TG9uZ1BhcmFtZXRlcih1bnNpZ25lZCBsb25nIHBuYW1lKQor
eworICAgIGludCB2YWx1ZTsKKyAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KHBuYW1lLCAmdmFs
dWUpOworICAgIHJldHVybiBXZWJHTEdldEluZm8oc3RhdGljX2Nhc3Q8bG9uZz4odmFsdWUpKTsK
K30KKworV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VW5zaWduZWRMb25n
UGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcgcG5hbWUpCit7CisgICAgaW50IHZhbHVlOworICAgIG1f
Y29udGV4dC0+Z2V0SW50ZWdlcnYocG5hbWUsICZ2YWx1ZSk7CisgICAgcmV0dXJuIFdlYkdMR2V0
SW5mbyhzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPih2YWx1ZSkpOworfQorCitXZWJHTEdldElu
Zm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRXZWJHTEZsb2F0QXJyYXlQYXJhbWV0ZXIodW5z
aWduZWQgbG9uZyBwbmFtZSkKK3sKKyAgICBmbG9hdCB2YWx1ZVs0XSA9IHswfTsKKyAgICBtX2Nv
bnRleHQtPmdldEZsb2F0dihwbmFtZSwgdmFsdWUpOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IDA7
CisgICAgc3dpdGNoIChwbmFtZSkgeworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkFMSUFT
RURfUE9JTlRfU0laRV9SQU5HRToKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpBTElBU0VE
X0xJTkVfV0lEVEhfUkFOR0U6CisgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfUkFO
R0U6CisgICAgICAgIGxlbmd0aCA9IDI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0M0Q6OkJMRU5EX0NPTE9SOgorICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkNP
TE9SX0NMRUFSX1ZBTFVFOgorICAgICAgICBsZW5ndGggPSA0OworICAgICAgICBicmVhazsKKyAg
ICBkZWZhdWx0OgorICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIH0KKyAgICByZXR1cm4g
V2ViR0xHZXRJbmZvKFdlYkdMRmxvYXRBcnJheTo6Y3JlYXRlKHZhbHVlLCBsZW5ndGgpKTsKK30K
KworV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0V2ViR0xJbnRBcnJheVBh
cmFtZXRlcih1bnNpZ25lZCBsb25nIHBuYW1lKQoreworICAgIGludCB2YWx1ZVs0XSA9IHswfTsK
KyAgICBtX2NvbnRleHQtPmdldEludGVnZXJ2KHBuYW1lLCB2YWx1ZSk7CisgICAgdW5zaWduZWQg
bGVuZ3RoID0gMDsKKyAgICBzd2l0Y2ggKHBuYW1lKSB7CisgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6TUFYX1ZJRVdQT1JUX0RJTVM6CisgICAgICAgIGxlbmd0aCA9IDI7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNDSVNTT1JfQk9YOgorICAgIGNhc2Ug
R3JhcGhpY3NDb250ZXh0M0Q6OlZJRVdQT1JUOgorICAgICAgICBsZW5ndGggPSA0OworICAgICAg
ICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIH0K
KyAgICByZXR1cm4gV2ViR0xHZXRJbmZvKFdlYkdMSW50QXJyYXk6OmNyZWF0ZSh2YWx1ZSwgbGVu
Z3RoKSk7Cit9CisKK1dlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFdlYkdM
VW5zaWduZWRCeXRlQXJyYXlQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyBwbmFtZSkKK3sKKyAgICB1
bnNpZ25lZCBjaGFyIHZhbHVlWzRdID0gezB9OworICAgIG1fY29udGV4dC0+Z2V0Qm9vbGVhbnYo
cG5hbWUsIHZhbHVlKTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSAwOworICAgIHN3aXRjaCAocG5h
bWUpIHsKKyAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9XUklURU1BU0s6CisgICAg
ICAgIGxlbmd0aCA9IDQ7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgfQorICAgIHJldHVybiBXZWJHTEdldEluZm8oV2ViR0xVbnNp
Z25lZEJ5dGVBcnJheTo6Y3JlYXRlKHZhbHVlLCBsZW5ndGgpKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKDNEX0NBTlZBUykKLQpJbmRleDogV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCShyZXZpc2lvbiA1MTM0MSkK
KysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDYW52YXNSZW5kZXJpbmdDb250ZXh0
LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIldlYkdMRmxvYXRBcnJh
eS5oIgorI2luY2x1ZGUgIldlYkdMR2V0SW5mby5oIgogI2luY2x1ZGUgIldlYkdMSW50QXJyYXku
aCIKICNpbmNsdWRlICJXZWJHTFVuc2lnbmVkQnl0ZUFycmF5LmgiCiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0M0QuaCIKQEAgLTYwLDcgKzYxLDcgQEAgY2xhc3MgV2ViS2l0Q1NTTWF0cml4Owog
ICAgICAgICAvLyBsaWtlIEdMX0ZMT0FULCBHTF9JTlQsIGV0Yy4KICAgICAgICAgaW50IHNpemVJ
bkJ5dGVzKGludCB0eXBlLCBFeGNlcHRpb25Db2RlJiBlYyk7CiAKLSAgICAgICAgdm9pZCBhY3Rp
dmVUZXh0dXJlKHVuc2lnbmVkIGxvbmcgdGV4dHVyZSk7CisgICAgICAgIHZvaWQgYWN0aXZlVGV4
dHVyZSh1bnNpZ25lZCBsb25nIHRleHR1cmUsIEV4Y2VwdGlvbkNvZGUmIGVjKTsKICAgICAgICAg
dm9pZCBhdHRhY2hTaGFkZXIoV2ViR0xQcm9ncmFtKiwgV2ViR0xTaGFkZXIqLCBFeGNlcHRpb25D
b2RlJiBlYyk7CiAgICAgICAgIHZvaWQgYmluZEF0dHJpYkxvY2F0aW9uKFdlYkdMUHJvZ3JhbSos
IHVuc2lnbmVkIGxvbmcgaW5kZXgsIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpOwogICAgICAgICB2b2lkIGJpbmRCdWZmZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIFdlYkdM
QnVmZmVyKiwgRXhjZXB0aW9uQ29kZSYgZWMpOwpAQCAtMTMwLDI2ICsxMzEsMjEgQEAgY2xhc3Mg
V2ViS2l0Q1NTTWF0cml4OwogCiAgICAgICAgIGludCAgZ2V0QXR0cmliTG9jYXRpb24oV2ViR0xQ
cm9ncmFtKiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAotICAgICAgICBib29sIGdldEJvb2xlYW4o
dW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFBhc3NSZWZQdHI8V2ViR0xVbnNpZ25lZEJ5
dGVBcnJheT4gZ2V0Qm9vbGVhbnYodW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIGludCBn
ZXRCdWZmZXJQYXJhbWV0ZXJpKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBu
YW1lKTsKLSAgICAgICAgUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBnZXRCdWZmZXJQYXJhbWV0
ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSk7CisgICAgICAg
IFdlYkdMR2V0SW5mbyBnZXRCdWZmZXJQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVu
c2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgICAgICB1bnNpZ25lZCBs
b25nIGdldEVycm9yKCk7CiAKLSAgICAgICAgZmxvYXQgZ2V0RmxvYXQodW5zaWduZWQgbG9uZyBw
bmFtZSk7Ci0gICAgICAgIFBhc3NSZWZQdHI8V2ViR0xGbG9hdEFycmF5PiBnZXRGbG9hdHYodW5z
aWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIGludCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQ
YXJhbWV0ZXJpKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQs
IHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBQYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+
IGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0
LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAg
ICBpbnQgZ2V0SW50ZWdlcih1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgUGFzc1JlZlB0
cjxXZWJHTEludEFycmF5PiBnZXRJbnRlZ2Vydih1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAg
ICAgaW50IGdldFByb2dyYW1pKFdlYkdMUHJvZ3JhbSosIHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4
Y2VwdGlvbkNvZGUmIGVjKTsKLSAgICAgICAgUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBnZXRQ
cm9ncmFtaXYoV2ViR0xQcm9ncmFtKiwgdW5zaWduZWQgbG9uZyBwbmFtZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpOworICAgICAgICBXZWJHTEdldEluZm8gZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFy
YW1ldGVyKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIHVu
c2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKKworICAgICAgICBXZWJHTEdldElu
Zm8gZ2V0UGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcgcG5hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKKwor
ICAgICAgICBXZWJHTEdldEluZm8gZ2V0UHJvZ3JhbVBhcmFtZXRlcihXZWJHTFByb2dyYW0qLCB1
bnNpZ25lZCBsb25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJik7CisKICAgICAgICAgU3RyaW5nIGdl
dFByb2dyYW1JbmZvTG9nKFdlYkdMUHJvZ3JhbSosIEV4Y2VwdGlvbkNvZGUmIGVjKTsKLSAgICAg
ICAgaW50IGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVu
c2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBQYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IGdl
dFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBs
b25nIHBuYW1lKTsKLSAgICAgICAgaW50IGdldFNoYWRlcmkoV2ViR0xTaGFkZXIqLCB1bnNpZ25l
ZCBsb25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYyk7Ci0gICAgICAgIFBhc3NSZWZQdHI8V2Vi
R0xJbnRBcnJheT4gZ2V0U2hhZGVyaXYoV2ViR0xTaGFkZXIqLCB1bnNpZ25lZCBsb25nIHBuYW1l
LCBFeGNlcHRpb25Db2RlJiBlYyk7CisKKyAgICAgICAgV2ViR0xHZXRJbmZvIGdldFJlbmRlcmJ1
ZmZlclBhcmFtZXRlcih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSwg
RXhjZXB0aW9uQ29kZSYpOworCisgICAgICAgIFdlYkdMR2V0SW5mbyBnZXRTaGFkZXJQYXJhbWV0
ZXIoV2ViR0xTaGFkZXIqLCB1bnNpZ25lZCBsb25nIHBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYyk7
CiAKICAgICAgICAgU3RyaW5nIGdldFNoYWRlckluZm9Mb2coV2ViR0xTaGFkZXIqLCBFeGNlcHRp
b25Db2RlJiBlYyk7CiAKQEAgLTE1OSwyMiArMTU1LDEzIEBAIGNsYXNzIFdlYktpdENTU01hdHJp
eDsKICAgICAgICAgU3RyaW5nIGdldFNoYWRlclNvdXJjZShXZWJHTFNoYWRlciosIEV4Y2VwdGlv
bkNvZGUmKTsKICAgICAgICAgU3RyaW5nIGdldFN0cmluZyh1bnNpZ25lZCBsb25nIG5hbWUpOwog
Ci0gICAgICAgIGZsb2F0IGdldFRleFBhcmFtZXRlcmYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVu
c2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBQYXNzUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4g
Z2V0VGV4UGFyYW1ldGVyZnYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5h
bWUpOwotICAgICAgICBpbnQgZ2V0VGV4UGFyYW1ldGVyaSh1bnNpZ25lZCBsb25nIHRhcmdldCwg
dW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4g
Z2V0VGV4UGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5h
bWUpOwotCi0gICAgICAgIGZsb2F0IGdldFVuaWZvcm1mKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwg
bG9uZyBsb2NhdGlvbiwgRXhjZXB0aW9uQ29kZSYpOwotICAgICAgICBQYXNzUmVmUHRyPFdlYkdM
RmxvYXRBcnJheT4gZ2V0VW5pZm9ybWZ2KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBsb2Nh
dGlvbiwgRXhjZXB0aW9uQ29kZSYpOwotICAgICAgICBsb25nIGdldFVuaWZvcm1pKFdlYkdMUHJv
Z3JhbSogcHJvZ3JhbSwgbG9uZyBsb2NhdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpOwotICAgICAg
ICBQYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IGdldFVuaWZvcm1pdihXZWJHTFByb2dyYW0qIHBy
b2dyYW0sIGxvbmcgbG9jYXRpb24sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgV2ViR0xHZXRJ
bmZvIGdldFRleFBhcmFtZXRlcih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBw
bmFtZSwgRXhjZXB0aW9uQ29kZSYpOworCisgICAgICAgIFdlYkdMR2V0SW5mbyBnZXRVbmlmb3Jt
KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBsb2NhdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMp
OwogCiAgICAgICAgIGxvbmcgZ2V0VW5pZm9ybUxvY2F0aW9uKFdlYkdMUHJvZ3JhbSosIGNvbnN0
IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpOwogCi0gICAgICAgIGZsb2F0IGdldFZlcnRl
eEF0dHJpYmYodW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAg
ICAgIFBhc3NSZWZQdHI8V2ViR0xGbG9hdEFycmF5PiBnZXRWZXJ0ZXhBdHRyaWJmdih1bnNpZ25l
ZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgbG9uZyBnZXRWZXJ0
ZXhBdHRyaWJpKHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAg
ICAgICBQYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IGdldFZlcnRleEF0dHJpYml2KHVuc2lnbmVk
IGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOworICAgICAgICBXZWJHTEdldEluZm8g
Z2V0VmVydGV4QXR0cmliKHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUs
IEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgICAgICBsb25nIGdldFZlcnRleEF0dHJpYk9mZnNldCh1
bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBuYW1lKTsKIApAQCAtMzM4LDYgKzMy
NSwyOSBAQCBjbGFzcyBXZWJLaXRDU1NNYXRyaXg7CiAgICAgICAgIAogICAgICAgICBWZWN0b3I8
VmVydGV4QXR0cmliU3RhdGU+IG1fdmVydGV4QXR0cmliU3RhdGU7CiAgICAgICAgIHVuc2lnbmVk
IG1fbWF4VmVydGV4QXR0cmliczsKKworICAgICAgICBSZWZQdHI8V2ViR0xQcm9ncmFtPiBtX2N1
cnJlbnRQcm9ncmFtOworICAgICAgICBSZWZQdHI8V2ViR0xGcmFtZWJ1ZmZlcj4gbV9mcmFtZWJ1
ZmZlckJpbmRpbmc7CisgICAgICAgIFJlZlB0cjxXZWJHTFJlbmRlcmJ1ZmZlcj4gbV9yZW5kZXJi
dWZmZXJCaW5kaW5nOworICAgICAgICBjbGFzcyBUZXh0dXJlVW5pdFN0YXRlIHsKKyAgICAgICAg
cHVibGljOgorICAgICAgICAgICAgUmVmUHRyPFdlYkdMVGV4dHVyZT4gbV90ZXh0dXJlMkRCaW5k
aW5nOworICAgICAgICAgICAgUmVmUHRyPFdlYkdMVGV4dHVyZT4gbV90ZXh0dXJlQ3ViZU1hcEJp
bmRpbmc7CisgICAgICAgIH07CisgICAgICAgIFRleHR1cmVVbml0U3RhdGUgbV90ZXh0dXJlVW5p
dHNbMzJdOworICAgICAgICB1bnNpZ25lZCBsb25nIG1fYWN0aXZlVGV4dHVyZVVuaXQ7CisKKyAg
ICAgICAgLy8gSGVscGVycyBmb3IgZ2V0UGFyYW1ldGVyIGFuZCBvdGhlcnMKKyAgICAgICAgV2Vi
R0xHZXRJbmZvIGdldEJvb2xlYW5QYXJhbWV0ZXIodW5zaWduZWQgbG9uZyBwbmFtZSk7CisgICAg
ICAgIFdlYkdMR2V0SW5mbyBnZXRGbG9hdFBhcmFtZXRlcih1bnNpZ25lZCBsb25nIHBuYW1lKTsK
KyAgICAgICAgV2ViR0xHZXRJbmZvIGdldEludFBhcmFtZXRlcih1bnNpZ25lZCBsb25nIHBuYW1l
KTsKKyAgICAgICAgV2ViR0xHZXRJbmZvIGdldExvbmdQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyBw
bmFtZSk7CisgICAgICAgIFdlYkdMR2V0SW5mbyBnZXRVbnNpZ25lZExvbmdQYXJhbWV0ZXIodW5z
aWduZWQgbG9uZyBwbmFtZSk7CisgICAgICAgIFdlYkdMR2V0SW5mbyBnZXRXZWJHTEZsb2F0QXJy
YXlQYXJhbWV0ZXIodW5zaWduZWQgbG9uZyBwbmFtZSk7CisgICAgICAgIFdlYkdMR2V0SW5mbyBn
ZXRXZWJHTEludEFycmF5UGFyYW1ldGVyKHVuc2lnbmVkIGxvbmcgcG5hbWUpOworICAgICAgICBX
ZWJHTEdldEluZm8gZ2V0V2ViR0xVbnNpZ25lZEJ5dGVBcnJheVBhcmFtZXRlcih1bnNpZ25lZCBs
b25nIHBuYW1lKTsKKworICAgICAgICBmcmllbmQgY2xhc3MgV2ViR0xTdGF0ZVJlc3RvcmVyOwog
ICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5pZGwJKHJldmlzaW9uIDUxMzQxKQorKysgV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC00NjAsNyArNDYwLDcgQEAgbW9kdWxlIGh0bWwgewogCiAgICAgICAgIGxvbmcgc2l6ZUlu
Qnl0ZXMoaW4gdW5zaWduZWQgbG9uZyB0eXBlKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAotICAg
ICAgICB2b2lkICAgICAgICAgYWN0aXZlVGV4dHVyZShpbiB1bnNpZ25lZCBsb25nIHRleHR1cmUp
OworICAgICAgICB2b2lkICAgICAgICAgYWN0aXZlVGV4dHVyZShpbiB1bnNpZ25lZCBsb25nIHRl
eHR1cmUpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICB2b2lkICAgICAgICAgYXR0YWNo
U2hhZGVyKGluIFdlYkdMUHJvZ3JhbSBwcm9ncmFtLCBpbiBXZWJHTFNoYWRlciBzaGFkZXIpIHJh
aXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICB2b2lkICAgICAgICAgYmluZEF0dHJpYkxvY2F0
aW9uKGluIFdlYkdMUHJvZ3JhbSBwcm9ncmFtLCBpbiB1bnNpZ25lZCBsb25nIGluZGV4LCBpbiBE
T01TdHJpbmcgbmFtZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIHZvaWQgICAgICAg
ICBiaW5kQnVmZmVyKGluIHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBpbiBXZWJHTEJ1ZmZlciBidWZm
ZXIpIHJhaXNlcyhET01FeGNlcHRpb24pOwpAQCAtNTMwLDcgKzUzMCw2IEBAIG1vZHVsZSBodG1s
IHsKICAgICAgICAgdm9pZCAgICAgICAgIGZyb250RmFjZShpbiB1bnNpZ25lZCBsb25nIG1vZGUp
OwogICAgICAgICB2b2lkICAgICAgICAgZ2VuZXJhdGVNaXBtYXAoaW4gdW5zaWduZWQgbG9uZyB0
YXJnZXQpOwogICAgICAgICAKLSAgICAgICAgLy8gRklYTUU6IHRoZXNlIG5lZWQgdG8gYmUgYWRk
ZWQgcGVyIHRoZSBXZWJHTCBzcGVjCiAgICAgICAgIFdlYkdMQWN0aXZlSW5mbyBnZXRBY3RpdmVB
dHRyaWIoaW4gV2ViR0xQcm9ncmFtIHByb2dyYW0sIGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpCiAg
ICAgICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIFdlYkdMQWN0aXZlSW5m
byBnZXRBY3RpdmVVbmlmb3JtKGluIFdlYkdMUHJvZ3JhbSBwcm9ncmFtLCBpbiB1bnNpZ25lZCBs
b25nIGluZGV4KQpAQCAtNTQwLDI2ICs1MzksMjIgQEAgbW9kdWxlIGh0bWwgewogCiAgICAgICAg
IGludCAgICAgICAgICBnZXRBdHRyaWJMb2NhdGlvbihpbiBXZWJHTFByb2dyYW0gcHJvZ3JhbSwg
aW4gRE9NU3RyaW5nIG5hbWUpOwogCi0gICAgICAgIGJvb2xlYW4gZ2V0Qm9vbGVhbihpbiB1bnNp
Z25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgV2ViR0xVbnNpZ25lZEJ5dGVBcnJheSBnZXRCb29s
ZWFudihpbiB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgbG9uZyBnZXRCdWZmZXJQYXJh
bWV0ZXJpKGluIHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBpbiB1bnNpZ25lZCBsb25nIHBuYW1lKTsK
LSAgICAgICAgV2ViR0xJbnRBcnJheSBnZXRCdWZmZXJQYXJhbWV0ZXJpdihpbiB1bnNpZ25lZCBs
b25nIHRhcmdldCwgaW4gdW5zaWduZWQgbG9uZyBwbmFtZSk7CisgICAgICAgIC8vIGFueSBnZXRC
dWZmZXJQYXJhbWV0ZXIoaW4gdW5zaWduZWQgbG9uZyB0YXJnZXQsIGluIHVuc2lnbmVkIGxvbmcg
cG5hbWUpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICBbQ3VzdG9tXSB2b2lkIGdldEJ1
ZmZlclBhcmFtZXRlcigpOwogCiAgICAgICAgIHVuc2lnbmVkIGxvbmcgZ2V0RXJyb3IoKTsKIAot
ICAgICAgICBmbG9hdCBnZXRGbG9hdChpbiB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAg
V2ViR0xGbG9hdEFycmF5IGdldEZsb2F0dihpbiB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAg
ICAgbG9uZyBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKGluIHVuc2lnbmVkIGxv
bmcgdGFyZ2V0LCBpbiB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIGluIHVuc2lnbmVkIGxvbmcg
cG5hbWUpOwotICAgICAgICBXZWJHTEludEFycmF5IGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcml2KGluIHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBpbiB1bnNpZ25lZCBsb25nIGF0dGFj
aG1lbnQsIGluIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBsb25nIGdldEludGVnZXIo
aW4gdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFdlYkdMSW50QXJyYXkgZ2V0SW50ZWdl
cnYoaW4gdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIGxvbmcgZ2V0UHJvZ3JhbWkoaW4g
V2ViR0xQcm9ncmFtIHByb2dyYW0sIGluIHVuc2lnbmVkIGxvbmcgcG5hbWUpIHJhaXNlcyhET01F
eGNlcHRpb24pOwotICAgICAgICBXZWJHTEludEFycmF5IGdldFByb2dyYW1pdihpbiBXZWJHTFBy
b2dyYW0gcHJvZ3JhbSwgaW4gdW5zaWduZWQgbG9uZyBwbmFtZSkgcmFpc2VzKERPTUV4Y2VwdGlv
bik7CisgICAgICAgIC8vIGFueSBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoaW4g
dW5zaWduZWQgbG9uZyB0YXJnZXQsIGluIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgaW4gdW5z
aWduZWQgbG9uZyBwbmFtZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIFtDdXN0b21d
IHZvaWQgZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKCk7CisgICAgICAgIC8vIGFu
eSBnZXRQYXJhbWV0ZXIoaW4gdW5zaWduZWQgbG9uZyBwbmFtZSkgcmFpc2VzKERPTUV4Y2VwdGlv
bik7CisgICAgICAgIFtDdXN0b21dIHZvaWQgZ2V0UGFyYW1ldGVyKCk7CisgICAgICAgIC8vIGFu
eSBnZXRQcm9ncmFtUGFyYW1ldGVyKGluIFdlYkdMUHJvZ3JhbSBwcm9ncmFtLCBpbiB1bnNpZ25l
ZCBsb25nIHBuYW1lKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgW0N1c3RvbV0gdm9p
ZCBnZXRQcm9ncmFtUGFyYW1ldGVyKCk7CiAgICAgICAgIERPTVN0cmluZyBnZXRQcm9ncmFtSW5m
b0xvZyhpbiBXZWJHTFByb2dyYW0gcHJvZ3JhbSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7Ci0gICAg
ICAgIGxvbmcgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaShpbiB1bnNpZ25lZCBsb25nIHRhcmdl
dCwgaW4gdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFdlYkdMSW50QXJyYXkgZ2V0UmVu
ZGVyYnVmZmVyUGFyYW1ldGVyaXYoaW4gdW5zaWduZWQgbG9uZyB0YXJnZXQsIGluIHVuc2lnbmVk
IGxvbmcgcG5hbWUpOwotICAgICAgICBsb25nIGdldFNoYWRlcmkoaW4gV2ViR0xTaGFkZXIgc2hh
ZGVyLCBpbiB1bnNpZ25lZCBsb25nIHBuYW1lKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKLSAgICAg
ICAgV2ViR0xJbnRBcnJheSBnZXRTaGFkZXJpdihpbiBXZWJHTFNoYWRlciBzaGFkZXIsIGluIHVu
c2lnbmVkIGxvbmcgcG5hbWUpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICAvLyBhbnkg
Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKGluIHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCBpbiB1bnNp
Z25lZCBsb25nIHBuYW1lKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgW0N1c3RvbV0g
dm9pZCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoKTsKKyAgICAgICAgLy8gYW55IGdldFNoYWRl
clBhcmFtZXRlcihpbiBXZWJHTFNoYWRlciBzaGFkZXIsIGluIHVuc2lnbmVkIGxvbmcgcG5hbWUp
IHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICBbQ3VzdG9tXSB2b2lkIGdldFNoYWRlclBh
cmFtZXRlcigpIHJhaXNlcyhET01FeGNlcHRpb24pOwogCiAgICAgICAgIERPTVN0cmluZyAgICBn
ZXRTaGFkZXJJbmZvTG9nKGluIFdlYkdMU2hhZGVyIHNoYWRlcikgcmFpc2VzKERPTUV4Y2VwdGlv
bik7CiAKQEAgLTU2OSwyMiArNTY0LDE2IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgRE9NU3Ry
aW5nICAgIGdldFNoYWRlclNvdXJjZShpbiBXZWJHTFNoYWRlciBzaGFkZXIpIHJhaXNlcyhET01F
eGNlcHRpb24pOwogICAgICAgICBET01TdHJpbmcgICAgZ2V0U3RyaW5nKGluIHVuc2lnbmVkIGxv
bmcgbmFtZSk7CiAKLSAgICAgICAgZmxvYXQgZ2V0VGV4UGFyYW1ldGVyZihpbiB1bnNpZ25lZCBs
b25nIHRhcmdldCwgaW4gdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFdlYkdMRmxvYXRB
cnJheSBnZXRUZXhQYXJhbWV0ZXJmdihpbiB1bnNpZ25lZCBsb25nIHRhcmdldCwgaW4gdW5zaWdu
ZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIGxvbmcgZ2V0VGV4UGFyYW1ldGVyaShpbiB1bnNpZ25l
ZCBsb25nIHRhcmdldCwgaW4gdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFdlYkdMSW50
QXJyYXkgZ2V0VGV4UGFyYW1ldGVyaXYoaW4gdW5zaWduZWQgbG9uZyB0YXJnZXQsIGluIHVuc2ln
bmVkIGxvbmcgcG5hbWUpOwotCi0gICAgICAgIGZsb2F0IGdldFVuaWZvcm1mKGluIFdlYkdMUHJv
Z3JhbSBwcm9ncmFtLCBpbiBsb25nIGxvY2F0aW9uKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKLSAg
ICAgICAgV2ViR0xGbG9hdEFycmF5IGdldFVuaWZvcm1mdihpbiBXZWJHTFByb2dyYW0gcHJvZ3Jh
bSwgaW4gbG9uZyBsb2NhdGlvbikgcmFpc2VzKERPTUV4Y2VwdGlvbik7Ci0gICAgICAgIGxvbmcg
Z2V0VW5pZm9ybWkoaW4gV2ViR0xQcm9ncmFtIHByb2dyYW0sIGluIGxvbmcgbG9jYXRpb24pIHJh
aXNlcyhET01FeGNlcHRpb24pOwotICAgICAgICBXZWJHTEludEFycmF5IGdldFVuaWZvcm1pdihp
biBXZWJHTFByb2dyYW0gcHJvZ3JhbSwgaW4gbG9uZyBsb2NhdGlvbikgcmFpc2VzKERPTUV4Y2Vw
dGlvbik7CisgICAgICAgIC8vIGFueSBnZXRUZXhQYXJhbWV0ZXIoaW4gdW5zaWduZWQgbG9uZyB0
YXJnZXQsIGluIHVuc2lnbmVkIGxvbmcgcG5hbWUpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAg
ICAgICBbQ3VzdG9tXSB2b2lkIGdldFRleFBhcmFtZXRlcigpOworCisgICAgICAgIC8vIGFueSBn
ZXRVbmlmb3JtKGluIFdlYkdMUHJvZ3JhbSBwcm9ncmFtLCBpbiBsb25nIGxvY2F0aW9uKSByYWlz
ZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgW0N1c3RvbV0gdm9pZCBnZXRVbmlmb3JtKCk7CiAg
ICAgICAgIAogICAgICAgICBsb25nIGdldFVuaWZvcm1Mb2NhdGlvbihpbiBXZWJHTFByb2dyYW0g
cHJvZ3JhbSwgaW4gRE9NU3RyaW5nIG5hbWUpIHJhaXNlcyhET01FeGNlcHRpb24pOwogCi0gICAg
ICAgIGZsb2F0IGdldFZlcnRleEF0dHJpYmYoaW4gdW5zaWduZWQgbG9uZyBpbmRleCwgaW4gdW5z
aWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFdlYkdMRmxvYXRBcnJheSBnZXRWZXJ0ZXhBdHRy
aWJmdihpbiB1bnNpZ25lZCBsb25nIGluZGV4LCBpbiB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAg
ICAgICAgbG9uZyBnZXRWZXJ0ZXhBdHRyaWJpKGluIHVuc2lnbmVkIGxvbmcgaW5kZXgsIGluIHVu
c2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBXZWJHTEludEFycmF5IGdldFZlcnRleEF0dHJp
Yml2KGluIHVuc2lnbmVkIGxvbmcgaW5kZXgsIGluIHVuc2lnbmVkIGxvbmcgcG5hbWUpOworICAg
ICAgICAvLyBhbnkgZ2V0VmVydGV4QXR0cmliKGluIHVuc2lnbmVkIGxvbmcgaW5kZXgsIGluIHVu
c2lnbmVkIGxvbmcgcG5hbWUpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICBbQ3VzdG9t
XSB2b2lkIGdldFZlcnRleEF0dHJpYigpOwogCiAgICAgICAgIGxvbmcgZ2V0VmVydGV4QXR0cmli
T2Zmc2V0KGluIHVuc2lnbmVkIGxvbmcgaW5kZXgsIGluIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwog
CkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRleHR1cmUuY3BwCShyZXZpc2lvbiA1MTM0MSkK
KysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzcsNiArMzcsMTEgQEAgUGFzc1JlZlB0cjxXZWJHTFRleHR1cmU+IFdlYkdMVGV4dHVyZTo6
YwogICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViR0xUZXh0dXJlKGN0eCkpOwogfQogCitQYXNz
UmVmUHRyPFdlYkdMVGV4dHVyZT4gV2ViR0xUZXh0dXJlOjpjcmVhdGUoV2ViR0xSZW5kZXJpbmdD
b250ZXh0KiBjdHgsIFBsYXRmb3JtM0RPYmplY3Qgb2JqKQoreworICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgV2ViR0xUZXh0dXJlKGN0eCwgb2JqKSk7Cit9CisKIFdlYkdMVGV4dHVyZTo6V2ViR0xU
ZXh0dXJlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY3R4KQogICAgIDogQ2FudmFzT2JqZWN0KGN0
eCkKICAgICAsIGN1YmVNYXBSV3JhcE1vZGVJbml0aWFsaXplZChmYWxzZSkKQEAgLTQ0LDYgKzQ5
LDEzIEBAIFdlYkdMVGV4dHVyZTo6V2ViR0xUZXh0dXJlKFdlYkdMUmVuZGVyaW4KICAgICBzZXRP
YmplY3QoY29udGV4dCgpLT5ncmFwaGljc0NvbnRleHQzRCgpLT5jcmVhdGVUZXh0dXJlKCkpOwog
fQogCitXZWJHTFRleHR1cmU6OldlYkdMVGV4dHVyZShXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGN0
eCwgUGxhdGZvcm0zRE9iamVjdCBvYmopCisgICAgOiBDYW52YXNPYmplY3QoY3R4KQorICAgICwg
Y3ViZU1hcFJXcmFwTW9kZUluaXRpYWxpemVkKGZhbHNlKQoreworICAgIHNldE9iamVjdChvYmos
IGZhbHNlKTsKK30KKwogdm9pZCBXZWJHTFRleHR1cmU6Ol9kZWxldGVPYmplY3QoUGxhdGZvcm0z
RE9iamVjdCBvYmplY3QpCiB7CiAgICAgY29udGV4dCgpLT5ncmFwaGljc0NvbnRleHQzRCgpLT5k
ZWxldGVUZXh0dXJlKG9iamVjdCk7CkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVGV4
dHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmgJ
KHJldmlzaW9uIDUxMzQxKQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRleHR1cmUuaAko
d29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICAKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViR0xUZXh0dXJlPiBjcmVhdGUoV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Kik7CiAgICAgCisgICAgICAgIC8vIEZvciBxdWVyeWluZyBwcmV2
aW91c2x5IGNyZWF0ZWQgb2JqZWN0cyB2aWEgZS5nLiBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQ
YXJhbWV0ZXIKKyAgICAgICAgLy8gRklYTUU6IHNob3VsZCBjb25zaWRlciBjYW5vbmljYWxpemlu
ZyB0aGVzZSBvYmplY3RzCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkdMVGV4dHVyZT4g
Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCosIFBsYXRmb3JtM0RPYmplY3QpOworCiAgICAg
ICAgIGJvb2wgaXNDdWJlTWFwUldyYXBNb2RlSW5pdGlhbGl6ZWQoKSB7CiAgICAgICAgICAgICBy
ZXR1cm4gY3ViZU1hcFJXcmFwTW9kZUluaXRpYWxpemVkOwogICAgICAgICB9CkBAIC00OSw2ICs1
Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgV2Vi
R0xUZXh0dXJlKFdlYkdMUmVuZGVyaW5nQ29udGV4dCopOworICAgICAgICBXZWJHTFRleHR1cmUo
V2ViR0xSZW5kZXJpbmdDb250ZXh0KiwgUGxhdGZvcm0zRE9iamVjdCk7CiAKICAgICAgICAgdmly
dHVhbCB2b2lkIF9kZWxldGVPYmplY3QoUGxhdGZvcm0zRE9iamVjdCk7CiAKSW5kZXg6IFdlYkNv
cmUvbWFudWFsLXRlc3RzL3dlYmdsL3Jlc291cmNlcy91dGlsczNkLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvbWFudWFsLXRlc3RzL3dlYmdsL3Jlc291cmNlcy91dGlsczNkLmpzCShyZXZpc2lv
biA1MTM0MSkKKysrIFdlYkNvcmUvbWFudWFsLXRlc3RzL3dlYmdsL3Jlc291cmNlcy91dGlsczNk
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIGZ1bmN0aW9uIGluaXRXZWJHTChj
YW52YXNOYW1lLCB2c2hhZGVyLCAKICAgICBnbC5saW5rUHJvZ3JhbShnbC5wcm9ncmFtKTsKIAog
ICAgIC8vIENoZWNrIHRoZSBsaW5rIHN0YXR1cwotICAgIHZhciBsaW5rZWQgPSBnbC5nZXRQcm9n
cmFtaShnbC5wcm9ncmFtLCBnbC5MSU5LX1NUQVRVUyk7CisgICAgdmFyIGxpbmtlZCA9IGdsLmdl
dFByb2dyYW1QYXJhbWV0ZXIoZ2wucHJvZ3JhbSwgZ2wuTElOS19TVEFUVVMpOwogICAgIGlmICgh
bGlua2VkKSB7CiAgICAgICAgIC8vIHNvbWV0aGluZyB3ZW50IHdyb25nIHdpdGggdGhlIGxpbmsK
ICAgICAgICAgdmFyIGVycm9yID0gZ2wuZ2V0UHJvZ3JhbUluZm9Mb2cgKGdsLnByb2dyYW0pOwpA
QCAtMTA1LDcgKzEwNSw3IEBAIGZ1bmN0aW9uIGxvYWRTaGFkZXIoY3R4LCBzaGFkZXJJZCkKICAg
ICBjdHguY29tcGlsZVNoYWRlcihzaGFkZXIpOwogCiAgICAgLy8gQ2hlY2sgdGhlIGNvbXBpbGUg
c3RhdHVzCi0gICAgdmFyIGNvbXBpbGVkID0gY3R4LmdldFNoYWRlcmkoc2hhZGVyLCBjdHguQ09N
UElMRV9TVEFUVVMpOworICAgIHZhciBjb21waWxlZCA9IGN0eC5nZXRTaGFkZXJQYXJhbWV0ZXIo
c2hhZGVyLCBjdHguQ09NUElMRV9TVEFUVVMpOwogICAgIGlmICghY29tcGlsZWQpIHsKICAgICAg
ICAgLy8gU29tZXRoaW5nIHdlbnQgd3JvbmcgZHVyaW5nIGNvbXBpbGF0aW9uOyBnZXQgdGhlIGVy
cm9yCiAgICAgICAgIHZhciBlcnJvciA9IGN0eC5nZXRTaGFkZXJJbmZvTG9nKHNoYWRlcik7CkBA
IC01MjgsNCArNTI4LDMgQEAgRnJhbWVyYXRlLnByb3RvdHlwZS5zbmFwc2hvdCA9IGZ1bmN0aW9u
KAogICAgICAgICB0aGlzLnJlbmRlclRpbWUgPSBuZXdUaW1lOwogICAgIH0KIH0KLQpJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAkocmV2aXNp
b24gNTEzNDEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNE
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1OCwyNiArNDU4LDI1IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogICAgICAgICBpbnQgIGdldEF0dHJpYkxvY2F0aW9uKFdlYkdMUHJvZ3JhbSosIGNvbnN0
IFN0cmluZyYgbmFtZSk7CiAKLSAgICAgICAgYm9vbCBnZXRCb29sZWFuKHVuc2lnbmVkIGxvbmcg
cG5hbWUpOwotICAgICAgICBQYXNzUmVmUHRyPFdlYkdMVW5zaWduZWRCeXRlQXJyYXk+IGdldEJv
b2xlYW52KHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBpbnQgZ2V0QnVmZmVyUGFyYW1l
dGVyaSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAg
IFBhc3NSZWZQdHI8V2ViR0xJbnRBcnJheT4gZ2V0QnVmZmVyUGFyYW1ldGVyaXYodW5zaWduZWQg
bG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOworICAgICAgICB2b2lkIGdldEJvb2xl
YW52KHVuc2lnbmVkIGxvbmcgcG5hbWUsIHVuc2lnbmVkIGNoYXIqIHZhbHVlKTsKKworICAgICAg
ICB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25l
ZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKTsKIAogICAgICAgICB1bnNpZ25lZCBsb25nIGdldEVy
cm9yKCk7CiAKLSAgICAgICAgZmxvYXQgZ2V0RmxvYXQodW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0g
ICAgICAgIFBhc3NSZWZQdHI8V2ViR0xGbG9hdEFycmF5PiBnZXRGbG9hdHYodW5zaWduZWQgbG9u
ZyBwbmFtZSk7Ci0gICAgICAgIGludCBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJp
KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIHVuc2lnbmVk
IGxvbmcgcG5hbWUpOwotICAgICAgICBQYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IGdldEZyYW1l
YnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25l
ZCBsb25nIGF0dGFjaG1lbnQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBpbnQgZ2V0
SW50ZWdlcih1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgUGFzc1JlZlB0cjxXZWJHTElu
dEFycmF5PiBnZXRJbnRlZ2Vydih1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgaW50IGdl
dFByb2dyYW1pKFdlYkdMUHJvZ3JhbSosIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBQ
YXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IGdldFByb2dyYW1pdihXZWJHTFByb2dyYW0qLCB1bnNp
Z25lZCBsb25nIHBuYW1lKTsKKyAgICAgICAgdm9pZCBnZXRGbG9hdHYodW5zaWduZWQgbG9uZyBw
bmFtZSwgZmxvYXQqIHZhbHVlKTsKKworICAgICAgICB2b2lkIGdldEZyYW1lYnVmZmVyQXR0YWNo
bWVudFBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIGF0dGFj
aG1lbnQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIGludCogdmFsdWUpOworCisgICAgICAgIHZvaWQg
Z2V0SW50ZWdlcnYodW5zaWduZWQgbG9uZyBwbmFtZSwgaW50KiB2YWx1ZSk7CisKKyAgICAgICAg
dm9pZCBnZXRQcm9ncmFtaXYoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCB1bnNpZ25lZCBsb25nIHBu
YW1lLCBpbnQqIHZhbHVlKTsKKwogICAgICAgICBTdHJpbmcgZ2V0UHJvZ3JhbUluZm9Mb2coV2Vi
R0xQcm9ncmFtKik7Ci0gICAgICAgIGludCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpKHVuc2ln
bmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKTsKLSAgICAgICAgUGFzc1JlZlB0
cjxXZWJHTEludEFycmF5PiBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdih1bnNpZ25lZCBsb25n
IHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIGludCBnZXRTaGFkZXJpKFdl
YkdMU2hhZGVyKiwgdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIFBhc3NSZWZQdHI8V2Vi
R0xJbnRBcnJheT4gZ2V0U2hhZGVyaXYoV2ViR0xTaGFkZXIqLCB1bnNpZ25lZCBsb25nIHBuYW1l
KTsKKworICAgICAgICB2b2lkIGdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KHVuc2lnbmVkIGxv
bmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKTsKKworICAgICAgICB2
b2lkIGdldFNoYWRlcml2KFdlYkdMU2hhZGVyKiwgdW5zaWduZWQgbG9uZyBwbmFtZSwgaW50KiB2
YWx1ZSk7CiAKICAgICAgICAgU3RyaW5nIGdldFNoYWRlckluZm9Mb2coV2ViR0xTaGFkZXIqKTsK
IApAQCAtNDg2LDI0ICs0ODUsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIFN0
cmluZyBnZXRTaGFkZXJTb3VyY2UoV2ViR0xTaGFkZXIqKTsKICAgICAgICAgU3RyaW5nIGdldFN0
cmluZyh1bnNpZ25lZCBsb25nIG5hbWUpOwotICAgICAgICAKLSAgICAgICAgZmxvYXQgZ2V0VGV4
UGFyYW1ldGVyZih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0g
ICAgICAgIFBhc3NSZWZQdHI8V2ViR0xGbG9hdEFycmF5PiBnZXRUZXhQYXJhbWV0ZXJmdih1bnNp
Z25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIGludCBnZXRU
ZXhQYXJhbWV0ZXJpKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKTsK
LSAgICAgICAgUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBnZXRUZXhQYXJhbWV0ZXJpdih1bnNp
Z25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0KLSAgICAgICAgZmxvYXQg
Z2V0VW5pZm9ybWYoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uKTsKLSAgICAg
ICAgUGFzc1JlZlB0cjxXZWJHTEZsb2F0QXJyYXk+IGdldFVuaWZvcm1mdihXZWJHTFByb2dyYW0q
IHByb2dyYW0sIGxvbmcgbG9jYXRpb24pOwotICAgICAgICBpbnQgZ2V0VW5pZm9ybWkoV2ViR0xQ
cm9ncmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uKTsKLSAgICAgICAgUGFzc1JlZlB0cjxXZWJH
TEludEFycmF5PiBnZXRVbmlmb3JtaXYoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0
aW9uKTsKKworICAgICAgICB2b2lkIGdldFRleFBhcmFtZXRlcmZ2KHVuc2lnbmVkIGxvbmcgdGFy
Z2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBmbG9hdCogdmFsdWUpOworICAgICAgICB2b2lkIGdl
dFRleFBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1l
LCBpbnQqIHZhbHVlKTsKKworICAgICAgICB2b2lkIGdldFVuaWZvcm1mdihXZWJHTFByb2dyYW0q
IHByb2dyYW0sIGxvbmcgbG9jYXRpb24sIGZsb2F0KiB2YWx1ZSk7CisgICAgICAgIHZvaWQgZ2V0
VW5pZm9ybWl2KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBsb2NhdGlvbiwgaW50KiB2YWx1
ZSk7CiAKICAgICAgICAgbG9uZyBnZXRVbmlmb3JtTG9jYXRpb24oV2ViR0xQcm9ncmFtKiwgY29u
c3QgU3RyaW5nJiBuYW1lKTsKIAotICAgICAgICBmbG9hdCBnZXRWZXJ0ZXhBdHRyaWJmKHVuc2ln
bmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBQYXNzUmVmUHRy
PFdlYkdMRmxvYXRBcnJheT4gZ2V0VmVydGV4QXR0cmliZnYodW5zaWduZWQgbG9uZyBpbmRleCwg
dW5zaWduZWQgbG9uZyBwbmFtZSk7Ci0gICAgICAgIGludCBnZXRWZXJ0ZXhBdHRyaWJpKHVuc2ln
bmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICBQYXNzUmVmUHRy
PFdlYkdMSW50QXJyYXk+IGdldFZlcnRleEF0dHJpYml2KHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVu
c2lnbmVkIGxvbmcgcG5hbWUpOwotICAgICAgICAKKyAgICAgICAgdm9pZCBnZXRWZXJ0ZXhBdHRy
aWJmdih1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBmbG9hdCogdmFs
dWUpOworICAgICAgICB2b2lkIGdldFZlcnRleEF0dHJpYml2KHVuc2lnbmVkIGxvbmcgaW5kZXgs
IHVuc2lnbmVkIGxvbmcgcG5hbWUsIGludCogdmFsdWUpOworCiAgICAgICAgIGxvbmcgZ2V0VmVy
dGV4QXR0cmliT2Zmc2V0KHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUp
OwogCiAgICAgICAgIHZvaWQgaGludCh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9u
ZyBtb2RlKTsKQEAgLTY0Myw0ICs2MzYsMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBHcmFwaGljc0NvbnRleHQzRF9oCi0KSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRl
eHQzRE1hYy5jcHAJKHJldmlzaW9uIDUxMzQxKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzcsNyAr
Mjc3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmluZEZyYW1lYnVmZmVyKAogdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6YmluZFJlbmRlcmJ1ZmZlcih1bnNpZ25lZCBsb25nIHRhcmdldCwg
V2ViR0xSZW5kZXJidWZmZXIqIHJlbmRlcmJ1ZmZlcikKIHsKICAgICBlbnN1cmVDb250ZXh0KG1f
Y29udGV4dE9iaik7Ci0gICAgOjpnbEJpbmRCdWZmZXIodGFyZ2V0LCByZW5kZXJidWZmZXIgPyAo
R0x1aW50KSByZW5kZXJidWZmZXItPm9iamVjdCgpIDogMCk7CisgICAgOjpnbEJpbmRSZW5kZXJi
dWZmZXJFWFQodGFyZ2V0LCByZW5kZXJidWZmZXIgPyAoR0x1aW50KSByZW5kZXJidWZmZXItPm9i
amVjdCgpIDogMCk7CiB9CiAKIApAQCAtOTUyLDMyMSArOTUyLDQwIEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OnZpZXdwb3J0KGxvbmcgeCwKICAgICA6OmdsVmlld3BvcnQoc3RhdGljX2Nhc3Q8
R0xpbnQ+KHgpLCBzdGF0aWNfY2FzdDxHTGludD4oeSksIHN0YXRpY19jYXN0PEdMc2l6ZWk+KHdp
ZHRoKSwgc3RhdGljX2Nhc3Q8R0xzaXplaT4oaGVpZ2h0KSk7CiB9CiAKLXN0YXRpYyBpbnQgc2l6
ZUZvckdldFBhcmFtKHVuc2lnbmVkIGxvbmcgcG5hbWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpnZXRCb29sZWFudih1bnNpZ25lZCBsb25nIHBuYW1lLCB1bnNpZ25lZCBjaGFyKiB2YWx1ZSkK
IHsKLSAgICBzd2l0Y2gocG5hbWUpIHsKLSAgICAgICAgY2FzZSBHTF9BQ1RJVkVfVEVYVFVSRTog
ICAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9BTElBU0VEX0xJTkVf
V0lEVEhfUkFOR0U6ICAgICAgICByZXR1cm4gMjsKLSAgICAgICAgY2FzZSBHTF9BTElBU0VEX1BP
SU5UX1NJWkVfUkFOR0U6ICAgICAgICByZXR1cm4gMjsKLSAgICAgICAgY2FzZSBHTF9BTFBIQV9C
SVRTOiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9BUlJB
WV9CVUZGRVJfQklORElORzogICAgICAgICAgICByZXR1cm4gMTsgLy8gKCogYWN0dWFsbHkgYSBX
ZWJHTEJ1ZmZlciopCi0gICAgICAgIGNhc2UgR0xfQkxFTkQ6ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfQkxFTkRfQ09MT1I6ICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIDQ7Ci0gICAgICAgIGNhc2UgR0xfQkxFTkRfRFNUX0FMUEhBOiAgICAg
ICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfQkxFTkRfRFNUX1JHQjogICAg
ICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfQkxFTkRfRVFVQVRJT05f
QUxQSEE6ICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfQkxFTkRfRVFVQVRJ
T05fUkdCOiAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfQkxFTkRfU1JD
X0FMUEhBOiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfQkxFTkRf
U1JDX1JHQjogICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfQkxV
RV9CSVRTOiAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xf
Q09MT1JfQ0xFQVJfVkFMVUU6ICAgICAgICAgICAgICAgcmV0dXJuIDQ7Ci0gICAgICAgIGNhc2Ug
R0xfQ09MT1JfV1JJVEVNQVNLOiAgICAgICAgICAgICAgICAgcmV0dXJuIDQ7Ci0gICAgICAgIGNh
c2UgR0xfQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFM6ICAgICAgcmV0dXJuIEdMX05VTV9DT01Q
UkVTU0VEX1RFWFRVUkVfRk9STUFUUzsKLSAgICAgICAgY2FzZSBHTF9DVUxMX0ZBQ0U6ICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9DVUxMX0ZBQ0VfTU9E
RTogICAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9DVVJSRU5UX1BS
T0dSQU06ICAgICAgICAgICAgICAgICByZXR1cm4gMTsgLy8gKCogYWN0dWFsbHkgYSBXZWJHTFBy
b2dyYW0qKQotICAgICAgICBjYXNlIEdMX0RFUFRIX0JJVFM6ICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX0RFUFRIX0NMRUFSX1ZBTFVFOiAgICAgICAgICAg
ICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX0RFUFRIX0ZVTkM6ICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX0RFUFRIX1JBTkdFOiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiAyOwotICAgICAgICBjYXNlIEdMX0RFUFRIX1RFU1Q6ICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX0RFUFRIX1dSSVRFTUFTSzog
ICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX0RJVEhFUjogICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX0VMRU1FTlRfQVJS
QVlfQlVGRkVSX0JJTkRJTkc6ICAgIHJldHVybiAxOyAvLyAoKiBhY3R1YWxseSBhIFdlYkdMQnVm
ZmVyKikKLSAgICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9CSU5ESU5HX0VYVDogICAgICAgICBy
ZXR1cm4gMTsgLy8gKCogYWN0dWFsbHkgYSBXZWJHTEZyYW1lYnVmZmVyKikKLSAgICAgICAgY2Fz
ZSBHTF9GUk9OVF9GQUNFOiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAg
Y2FzZSBHTF9HRU5FUkFURV9NSVBNQVBfSElOVDogICAgICAgICAgICByZXR1cm4gMTsKLSAgICAg
ICAgY2FzZSBHTF9HUkVFTl9CSVRTOiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAg
ICAgICAgICAgIC8vY2FzZSBHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX0ZPUk1BVDpyZXR1
cm4gMTsKLSAgICAgICAgICAgIC8vY2FzZSBHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX1RZ
UEU6ICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9MSU5FX1dJRFRIOiAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9NQVhfQ09NQklORURfVEVYVFVSRV9J
TUFHRV9VTklUUzpyZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9NQVhfQ1VCRV9NQVBfVEVYVFVS
RV9TSVpFOiAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgIC8vY2FzZSBHTF9NQVhfRlJBR01F
TlRfVU5JRk9STV9WRUNUT1JTOiAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9NQVhfUkVO
REVSQlVGRkVSX1NJWkVfRVhUOiAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9NQVhf
VEVYVFVSRV9JTUFHRV9VTklUUzogICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9N
QVhfVEVYVFVSRV9TSVpFOiAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgIC8v
Y2FzZSBHTF9NQVhfVkFSWUlOR19WRUNUT1JTOiAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAg
ICAgY2FzZSBHTF9NQVhfVkVSVEVYX0FUVFJJQlM6ICAgICAgICAgICAgICByZXR1cm4gMTsKLSAg
ICAgICAgY2FzZSBHTF9NQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFM6ICByZXR1cm4gMTsK
LSAgICAgICAgICAgIC8vY2FzZSBHTF9NQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUzogICAgICBy
ZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9NQVhfVklFV1BPUlRfRElNUzogICAgICAgICAgICAg
ICByZXR1cm4gMjsKLSAgICAgICAgY2FzZSBHTF9OVU1fQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1B
VFM6ICByZXR1cm4gMTsKLSAgICAgICAgICAgIC8vY2FzZSBHTF9OVU1fU0hBREVSX0JJTkFSWV9G
T1JNQVRTOiAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9QQUNLX0FMSUdOTUVOVDog
ICAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9QT0xZR09OX09GRlNF
VF9GQUNUT1I6ICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9QT0xZR09OX09G
RlNFVF9GSUxMOiAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9QT0xZR09O
X09GRlNFVF9VTklUUzogICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9SRURf
QklUUzogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9S
RU5ERVJCVUZGRVJfQklORElOR19FWFQ6ICAgICAgICByZXR1cm4gMTsgLy8gKCogYWN0dWFsbHkg
YSBXZWJHTFJlbmRlcmJ1ZmZlciopCi0gICAgICAgIGNhc2UgR0xfU0FNUExFX0JVRkZFUlM6ICAg
ICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU0FNUExFX0NPVkVSQUdF
X0lOVkVSVDogICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU0FNUExFX0NPVkVS
QUdFX1ZBTFVFOiAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU0FNUExFUzog
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU0NJU1NP
Ul9CT1g6ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDQ7Ci0gICAgICAgIGNhc2UgR0xfU0NJ
U1NPUl9URVNUOiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICAvL2Nh
c2UgR0xfU0hBREVSX0JJTkFSWV9GT1JNQVRTOiAgICAgICAgICAgcmV0dXJuIEdMX05VTV9TSEFE
RVJfQklOQVJZX0ZPUk1BVFM7Ci0gICAgICAgICAgICAvL2Nhc2UgR0xfU0hBREVSX0NPTVBJTEVS
OiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJTF9CQUNL
X0ZBSUw6ICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJTF9C
QUNLX0ZVTkM6ICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJ
TF9CQUNLX1BBU1NfREVQVEhfRkFJTDogICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1RF
TkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTUzogICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xf
U1RFTkNJTF9CQUNLX1JFRjogICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2Ug
R0xfU1RFTkNJTF9CQUNLX1ZBTFVFX01BU0s6ICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNh
c2UgR0xfU1RFTkNJTF9CQUNLX1dSSVRFTUFTSzogICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAg
IGNhc2UgR0xfU1RFTkNJTF9CSVRTOiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAg
ICAgIGNhc2UgR0xfU1RFTkNJTF9DTEVBUl9WQUxVRTogICAgICAgICAgICAgcmV0dXJuIDE7Ci0g
ICAgICAgIGNhc2UgR0xfU1RFTkNJTF9GQUlMOiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7
Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJTF9GVU5DOiAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IDE7Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJTF9QQVNTX0RFUFRIX0ZBSUw6ICAgICAgICAgcmV0
dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJTF9QQVNTX0RFUFRIX1BBU1M6ICAgICAgICAg
cmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJTF9SRUY6ICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJTF9URVNUOiAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJTF9WQUxVRV9NQVNLOiAgICAg
ICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1RFTkNJTF9XUklURU1BU0s6ICAg
ICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfU1VCUElYRUxfQklUUzogICAg
ICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfVEVYVFVSRV9CSU5ESU5H
XzJEOiAgICAgICAgICAgICAgcmV0dXJuIDE7IC8vICgqIGFjdHVhbGx5IGEgV2ViR0xUZXh0dXJl
KikKLSAgICAgICAgY2FzZSBHTF9URVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVA6ICAgICAgICByZXR1
cm4gMTsgLy8gKCogYWN0dWFsbHkgYSBXZWJHTFRleHR1cmUqKQotICAgICAgICBjYXNlIEdMX1VO
UEFDS19BTElHTk1FTlQ6ICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdM
X1ZJRVdQT1JUOiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA0OwotICAgIH0KLSAgICAK
LSAgICByZXR1cm4gLTE7Ci19Ci0KLWJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEJvb2xlYW4o
dW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICBpbnQgc2l6ZSA9IHNpemVGb3JHZXRQYXJhbShw
bmFtZSk7Ci0gICAgaWYgKHNpemUgPCAxKSAKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCiAgICAg
ZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwotICAgIAotICAgIGJvb2wgaXNBbGxvY2VkID0g
ZmFsc2U7Ci0gICAgR0xib29sZWFuIGJ1Zls0XTsKLSAgICBHTGJvb2xlYW4qIHBidWYgPSBidWY7
Ci0gICAgICAgICAgICAKLSAgICBpZiAoc2l6ZSA+IDQpIHsKLSAgICAgICAgcGJ1ZiA9IChHTGJv
b2xlYW4qKSBtYWxsb2Moc2l6ZSAqIHNpemVvZihHTGJvb2xlYW4pKTsKLSAgICAgICAgaXNBbGxv
Y2VkID0gdHJ1ZTsKLSAgICB9Ci0gICAgICAgICAgICAKLSAgICA6OmdsR2V0Qm9vbGVhbnYocG5h
bWUsIHBidWYpOwotICAgIAotICAgIGJvb2wgdmFsdWUgPSBwYnVmWzBdOwotCi0gICAgaWYgKGlz
QWxsb2NlZCkKLSAgICAgICAgZnJlZShwYnVmKTsKLSAgICAKLSAgICByZXR1cm4gdmFsdWU7Cisg
ICAgOjpnbEdldEJvb2xlYW52KHBuYW1lLCB2YWx1ZSk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViR0xV
bnNpZ25lZEJ5dGVBcnJheT4gR3JhcGhpY3NDb250ZXh0M0Q6OmdldEJvb2xlYW52KHVuc2lnbmVk
IGxvbmcgcG5hbWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRCdWZmZXJQYXJhbWV0ZXJp
dih1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgaW50KiB2YWx1ZSkK
IHsKLSAgICBpbnQgc2l6ZSA9IHNpemVGb3JHZXRQYXJhbShwbmFtZSk7Ci0gICAgaWYgKHNpemUg
PCAxKSAKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCiAgICAgZW5zdXJlQ29udGV4dChtX2NvbnRl
eHRPYmopOwotICAgIAotICAgIFJlZlB0cjxXZWJHTFVuc2lnbmVkQnl0ZUFycmF5PiBhcnJheSA9
IFdlYkdMVW5zaWduZWRCeXRlQXJyYXk6OmNyZWF0ZShzaXplKTsKLSAgICBib29sIGlzQWxsb2Nl
ZCA9IGZhbHNlOwotICAgIEdMYm9vbGVhbiBidWZbNF07Ci0gICAgR0xib29sZWFuKiBwYnVmID0g
YnVmOwotICAgICAgICAgICAgCi0gICAgaWYgKHNpemUgPiA0KSB7Ci0gICAgICAgIHBidWYgPSAo
R0xib29sZWFuKikgbWFsbG9jKHNpemUgKiBzaXplb2YoR0xib29sZWFuKSk7Ci0gICAgICAgIGlz
QWxsb2NlZCA9IHRydWU7Ci0gICAgfQotICAgICAgICAgICAgCi0gICAgOjpnbEdldEJvb2xlYW52
KHBuYW1lLCBwYnVmKTsKLSAgICAgICAgICAgIAotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6
ZTsgKytpKQotICAgICAgICBhcnJheS0+c2V0KGksIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+
KHBidWZbaV0pKTsKLSAgICAgICAgICAgIAotICAgIGlmIChpc0FsbG9jZWQpCi0gICAgICAgIGZy
ZWUocGJ1Zik7Ci0gICAgCi0gICAgcmV0dXJuIGFycmF5OworICAgIDo6Z2xHZXRCdWZmZXJQYXJh
bWV0ZXJpdih0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CiB9CiAKLWZsb2F0IEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRGbG9hdCh1bnNpZ25lZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6Z2V0RmxvYXR2KHVuc2lnbmVkIGxvbmcgcG5hbWUsIGZsb2F0KiB2YWx1ZSkKIHsKLSAgICBp
bnQgc2l6ZSA9IHNpemVGb3JHZXRQYXJhbShwbmFtZSk7Ci0gICAgaWYgKHNpemUgPCAxKSAKLSAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgCiAgICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwot
ICAgIAotICAgIGJvb2wgaXNBbGxvY2VkID0gZmFsc2U7Ci0gICAgR0xmbG9hdCBidWZbNF07Ci0g
ICAgR0xmbG9hdCogcGJ1ZiA9IGJ1ZjsKLSAgICAgICAgICAgIAotICAgIGlmIChzaXplID4gNCkg
ewotICAgICAgICBwYnVmID0gKEdMZmxvYXQqKSBtYWxsb2Moc2l6ZSAqIHNpemVvZihHTGZsb2F0
KSk7Ci0gICAgICAgIGlzQWxsb2NlZCA9IHRydWU7Ci0gICAgfQotICAgICAgICAgICAgCi0gICAg
OjpnbEdldEZsb2F0dihwbmFtZSwgcGJ1Zik7Ci0gICAgCi0gICAgZmxvYXQgdmFsdWUgPSBwYnVm
WzBdOwotCi0gICAgaWYgKGlzQWxsb2NlZCkKLSAgICAgICAgZnJlZShwYnVmKTsKLSAgICAKLSAg
ICByZXR1cm4gdmFsdWU7CisgICAgOjpnbEdldEZsb2F0dihwbmFtZSwgdmFsdWUpOwogfQogCi1Q
YXNzUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZsb2F0dih1
bnNpZ25lZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxv
bmcgYXR0YWNobWVudCwgdW5zaWduZWQgbG9uZyBwbmFtZSwgaW50KiB2YWx1ZSkKIHsKLSAgICBp
bnQgc2l6ZSA9IHNpemVGb3JHZXRQYXJhbShwbmFtZSk7Ci0gICAgaWYgKHNpemUgPCAxKSAKLSAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgCiAgICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwot
ICAgIAotICAgIFJlZlB0cjxXZWJHTEZsb2F0QXJyYXk+IGFycmF5ID0gV2ViR0xGbG9hdEFycmF5
OjpjcmVhdGUoc2l6ZSk7Ci0gICAgYm9vbCBpc0FsbG9jZWQgPSBmYWxzZTsKLSAgICBHTGZsb2F0
IGJ1Zls0XTsKLSAgICBHTGZsb2F0KiBwYnVmID0gYnVmOwotICAgICAgICAgICAgCi0gICAgaWYg
KHNpemUgPiA0KSB7Ci0gICAgICAgIHBidWYgPSAoR0xmbG9hdCopIG1hbGxvYyhzaXplICogc2l6
ZW9mKEdMZmxvYXQpKTsKLSAgICAgICAgaXNBbGxvY2VkID0gdHJ1ZTsKLSAgICB9Ci0gICAgICAg
ICAgICAKLSAgICA6OmdsR2V0RmxvYXR2KHBuYW1lLCBwYnVmKTsKLSAgICAgICAgICAgIAotICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBhcnJheS0+c2V0KGksIHN0
YXRpY19jYXN0PGZsb2F0PihwYnVmW2ldKSk7Ci0gICAgICAgICAgICAKLSAgICBpZiAoaXNBbGxv
Y2VkKQotICAgICAgICBmcmVlKHBidWYpOwotICAgIAotICAgIHJldHVybiBhcnJheTsKKyAgICA6
OmdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZFWFQodGFyZ2V0LCBhdHRhY2ht
ZW50LCBwbmFtZSwgdmFsdWUpOwogfQogCi1pbnQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEludGVn
ZXIodW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICBpbnQgc2l6ZSA9IHNpemVGb3JHZXRQYXJh
bShwbmFtZSk7Ci0gICAgaWYgKHNpemUgPCAxKSAKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0g
ICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwotICAgIAotICAgIGJvb2wgaXNBbGxvY2Vk
ID0gZmFsc2U7Ci0gICAgR0xpbnQgYnVmWzRdOwotICAgIEdMaW50KiBwYnVmID0gYnVmOwotICAg
ICAgICAgICAgCi0gICAgaWYgKHNpemUgPiA0KSB7Ci0gICAgICAgIHBidWYgPSAoR0xpbnQqKSBt
YWxsb2Moc2l6ZSAqIHNpemVvZihHTGludCkpOwotICAgICAgICBpc0FsbG9jZWQgPSB0cnVlOwot
ICAgIH0KLSAgICAgICAgICAgIAotICAgIDo6Z2xHZXRJbnRlZ2VydihwbmFtZSwgcGJ1Zik7Ci0g
ICAgCi0gICAgaW50IHZhbHVlID0gcGJ1ZlswXTsKLQotICAgIGlmIChpc0FsbG9jZWQpCi0gICAg
ICAgIGZyZWUocGJ1Zik7Ci0gICAgCi0gICAgcmV0dXJuIHZhbHVlOwotfQotCi1QYXNzUmVmUHRy
PFdlYkdMSW50QXJyYXk+IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbnRlZ2Vydih1bnNpZ25lZCBs
b25nIHBuYW1lKQotewotICAgIGludCBzaXplID0gc2l6ZUZvckdldFBhcmFtKHBuYW1lKTsKLSAg
ICBpZiAoc2l6ZSA8IDEpIAotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBlbnN1cmVDb250
ZXh0KG1fY29udGV4dE9iaik7Ci0gICAgCi0gICAgUmVmUHRyPFdlYkdMSW50QXJyYXk+IGFycmF5
ID0gV2ViR0xJbnRBcnJheTo6Y3JlYXRlKHNpemUpOwotICAgIGJvb2wgaXNBbGxvY2VkID0gZmFs
c2U7Ci0gICAgR0xpbnQgYnVmWzRdOwotICAgIEdMaW50KiBwYnVmID0gYnVmOwotICAgICAgICAg
ICAgCi0gICAgaWYgKHNpemUgPiA0KSB7Ci0gICAgICAgIHBidWYgPSAoR0xpbnQqKSBtYWxsb2Mo
c2l6ZSAqIHNpemVvZihHTGludCkpOwotICAgICAgICBpc0FsbG9jZWQgPSB0cnVlOwotICAgIH0K
LSAgICAgICAgICAgIAotICAgIDo6Z2xHZXRJbnRlZ2VydihwbmFtZSwgcGJ1Zik7Ci0gICAgICAg
ICAgICAKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgYXJyYXkt
PnNldChpLCBzdGF0aWNfY2FzdDxpbnQ+KHBidWZbaV0pKTsKLSAgICAgICAgICAgIAotICAgIGlm
IChpc0FsbG9jZWQpCi0gICAgICAgIGZyZWUocGJ1Zik7Ci0gICAgCi0gICAgcmV0dXJuIGFycmF5
OwotfQotCi1pbnQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEJ1ZmZlclBhcmFtZXRlcmkodW5zaWdu
ZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCit2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRJbnRlZ2Vydih1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKQogewogICAg
IGVuc3VyZUNvbnRleHQobV9jb250ZXh0T2JqKTsKLSAgICBHTGludCBkYXRhOwotICAgIDo6Z2xH
ZXRCdWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmZGF0YSk7Ci0gICAgcmV0dXJuIGRh
dGE7CisgICAgOjpnbEdldEludGVnZXJ2KHBuYW1lLCB2YWx1ZSk7CiB9CiAKLVBhc3NSZWZQdHI8
V2ViR0xJbnRBcnJheT4gR3JhcGhpY3NDb250ZXh0M0Q6OmdldEJ1ZmZlclBhcmFtZXRlcml2KHVu
c2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0UHJvZ3JhbWl2KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgdW5zaWduZWQgbG9u
ZyBwbmFtZSwgaW50KiB2YWx1ZSkKIHsKICAgICBlbnN1cmVDb250ZXh0KG1fY29udGV4dE9iaik7
Ci0gICAgUmVmUHRyPFdlYkdMSW50QXJyYXk+IGFycmF5ID0gV2ViR0xJbnRBcnJheTo6Y3JlYXRl
KDEpOwotICAgIEdMaW50IGRhdGE7Ci0gICAgOjpnbEdldEJ1ZmZlclBhcmFtZXRlcml2KHRhcmdl
dCwgcG5hbWUsICZkYXRhKTsKLSAgICBhcnJheS0+c2V0KDAsIHN0YXRpY19jYXN0PGludD4oZGF0
YSkpOwotICAgIAotICAgIHJldHVybiBhcnJheTsKLX0KLQotaW50IEdyYXBoaWNzQ29udGV4dDNE
OjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpKHVuc2lnbmVkIGxvbmcgdGFyZ2V0
LCB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAg
ZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwotICAgIEdMaW50IGRhdGE7Ci0gICAgOjpnbEdl
dEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2RVhUKHRhcmdldCwgYXR0YWNobWVudCwg
cG5hbWUsICZkYXRhKTsKLSAgICByZXR1cm4gZGF0YTsKLX0KLQotUGFzc1JlZlB0cjxXZWJHTElu
dEFycmF5PiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1l
dGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwgdW5z
aWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICBlbnN1cmVDb250ZXh0KG1fY29udGV4dE9iaik7Ci0g
ICAgUmVmUHRyPFdlYkdMSW50QXJyYXk+IGFycmF5ID0gV2ViR0xJbnRBcnJheTo6Y3JlYXRlKDEp
OwotICAgIEdMaW50IGRhdGE7Ci0gICAgOjpnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcml2RVhUKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsICZkYXRhKTsKLSAgICBhcnJheS0+
c2V0KDAsIHN0YXRpY19jYXN0PGludD4oZGF0YSkpOwotICAgIAotICAgIHJldHVybiBhcnJheTsK
LX0KLQotaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtaShXZWJHTFByb2dyYW0qIHBy
b2dyYW0sIHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgZW5zdXJlQ29udGV4dChtX2NvbnRl
eHRPYmopOwotICAgIEdMaW50IGRhdGE7Ci0gICAgOjpnbEdldFByb2dyYW1pdigoR0x1aW50KSBw
cm9ncmFtLT5vYmplY3QoKSwgcG5hbWUsICZkYXRhKTsKLSAgICByZXR1cm4gZGF0YTsKLX0KLQot
UGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbWl2
KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgdW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICBlbnN1
cmVDb250ZXh0KG1fY29udGV4dE9iaik7Ci0gICAgUmVmUHRyPFdlYkdMSW50QXJyYXk+IGFycmF5
ID0gV2ViR0xJbnRBcnJheTo6Y3JlYXRlKDEpOwotICAgIEdMaW50IGRhdGE7Ci0gICAgOjpnbEdl
dFByb2dyYW1pdigoR0x1aW50KSBwcm9ncmFtLT5vYmplY3QoKSwgcG5hbWUsICZkYXRhKTsKLSAg
ICBhcnJheS0+c2V0KDAsIHN0YXRpY19jYXN0PGludD4oZGF0YSkpOwotICAgIAotICAgIHJldHVy
biBhcnJheTsKKyAgICA6OmdsR2V0UHJvZ3JhbWl2KChHTHVpbnQpIHByb2dyYW0tPm9iamVjdCgp
LCBwbmFtZSwgdmFsdWUpOwogfQogCiBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dy
YW1JbmZvTG9nKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSkKQEAgLTEyODUsNDYgKzEwMDQsMTggQEAg
U3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtSW5mbwogICAgIHJldHVybiBzOwog
fQogCi1pbnQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcmkodW5z
aWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgZW5zdXJlQ29u
dGV4dChtX2NvbnRleHRPYmopOwotICAgIEdMaW50IGRhdGE7Ci0gICAgOjpnbEdldEJ1ZmZlclBh
cmFtZXRlcml2KHRhcmdldCwgcG5hbWUsICZkYXRhKTsKLSAgICByZXR1cm4gZGF0YTsKLX0KLQot
UGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UmVuZGVyYnVm
ZmVyUGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUp
Ci17Ci0gICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwotICAgIFJlZlB0cjxXZWJHTElu
dEFycmF5PiBhcnJheSA9IFdlYkdMSW50QXJyYXk6OmNyZWF0ZSgxKTsKLSAgICBHTGludCBkYXRh
OwotICAgIDo6Z2xHZXRCdWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCAmZGF0YSk7Ci0g
ICAgYXJyYXktPnNldCgwLCBzdGF0aWNfY2FzdDxpbnQ+KGRhdGEpKTsKLSAgICAKLSAgICByZXR1
cm4gYXJyYXk7Ci19Ci0KLWludCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyaShXZWJHTFNo
YWRlciogc2hhZGVyLCB1bnNpZ25lZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2ln
bmVkIGxvbmcgcG5hbWUsIGludCogdmFsdWUpCiB7Ci0gICAgQVNTRVJUKHNoYWRlcik7Ci0gICAg
CiAgICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwotICAgIEdMaW50IGRhdGE7Ci0gICAg
OjpnbEdldFNoYWRlcml2KChHTHVpbnQpIHNoYWRlci0+b2JqZWN0KCksIHBuYW1lLCAmZGF0YSk7
Ci0gICAgcmV0dXJuIGRhdGE7CisgICAgOjpnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2RVhU
KHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBH
cmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyaXYoV2ViR0xTaGFkZXIqIHNoYWRlciwgdW5zaWdu
ZWQgbG9uZyBwbmFtZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlcml2KFdlYkdM
U2hhZGVyKiBzaGFkZXIsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIGludCogdmFsdWUpCiB7CiAgICAg
QVNTRVJUKHNoYWRlcik7CiAgICAgCiAgICAgZW5zdXJlQ29udGV4dChtX2NvbnRleHRPYmopOwot
ICAgIFJlZlB0cjxXZWJHTEludEFycmF5PiBhcnJheSA9IFdlYkdMSW50QXJyYXk6OmNyZWF0ZSgx
KTsKLSAgICBHTGludCBkYXRhOwotICAgIDo6Z2xHZXRTaGFkZXJpdigoR0x1aW50KSBzaGFkZXIt
Pm9iamVjdCgpLCBwbmFtZSwgJmRhdGEpOwotICAgIGFycmF5LT5zZXQoMCwgc3RhdGljX2Nhc3Q8
aW50PihkYXRhKSk7Ci0gICAgCi0gICAgcmV0dXJuIGFycmF5OworICAgIDo6Z2xHZXRTaGFkZXJp
digoR0x1aW50KSBzaGFkZXItPm9iamVjdCgpLCBwbmFtZSwgdmFsdWUpOwogfQogCiBTdHJpbmcg
R3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlckluZm9Mb2coV2ViR0xTaGFkZXIqIHNoYWRlcikK
QEAgLTEzNjAsNzggKzEwNTEsMjggQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFk
ZXJTb3VyYwogfQogCiAKLWZsb2F0IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRUZXhQYXJhbWV0ZXJm
KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0VGV4UGFyYW1ldGVyZnYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2ln
bmVkIGxvbmcgcG5hbWUsIGZsb2F0KiB2YWx1ZSkKIHsKICAgICBlbnN1cmVDb250ZXh0KG1fY29u
dGV4dE9iaik7Ci0gICAgR0xmbG9hdCBkYXRhOwotICAgIDo6Z2xHZXRUZXhQYXJhbWV0ZXJmdih0
YXJnZXQsIHBuYW1lLCAmZGF0YSk7Ci0gICAgcmV0dXJuIGRhdGE7CisgICAgOjpnbEdldFRleFBh
cmFtZXRlcmZ2KHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJHTEZs
b2F0QXJyYXk+IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRUZXhQYXJhbWV0ZXJmdih1bnNpZ25lZCBs
b25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmdldFRleFBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBu
YW1lLCBpbnQqIHZhbHVlKQogewogICAgIGVuc3VyZUNvbnRleHQobV9jb250ZXh0T2JqKTsKLSAg
ICBSZWZQdHI8V2ViR0xGbG9hdEFycmF5PiBhcnJheSA9IFdlYkdMRmxvYXRBcnJheTo6Y3JlYXRl
KDEpOwotICAgIEdMZmxvYXQgZGF0YTsKLSAgICA6OmdsR2V0VGV4UGFyYW1ldGVyZnYodGFyZ2V0
LCBwbmFtZSwgJmRhdGEpOwotICAgIGFycmF5LT5zZXQoMCwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRh
dGEpKTsKLSAgICAKLSAgICByZXR1cm4gYXJyYXk7CisgICAgOjpnbEdldFRleFBhcmFtZXRlcml2
KHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKIH0KIAotaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRU
ZXhQYXJhbWV0ZXJpKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKQor
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWZ2KFdlYkdMUHJvZ3JhbSogcHJvZ3Jh
bSwgbG9uZyBsb2NhdGlvbiwgZmxvYXQqIHZhbHVlKQogewogICAgIGVuc3VyZUNvbnRleHQobV9j
b250ZXh0T2JqKTsKLSAgICBHTGludCBkYXRhOwotICAgIDo6Z2xHZXRUZXhQYXJhbWV0ZXJpdih0
YXJnZXQsIHBuYW1lLCAmZGF0YSk7Ci0gICAgcmV0dXJuIGRhdGE7CisgICAgOjpnbEdldFVuaWZv
cm1mdigoR0x1aW50KSBwcm9ncmFtLT5vYmplY3QoKSwgbG9jYXRpb24sIHZhbHVlKTsKIH0KIAot
UGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VGV4UGFyYW1l
dGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCit2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtaXYoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBsb25n
IGxvY2F0aW9uLCBpbnQqIHZhbHVlKQogewogICAgIGVuc3VyZUNvbnRleHQobV9jb250ZXh0T2Jq
KTsKLSAgICBSZWZQdHI8V2ViR0xJbnRBcnJheT4gYXJyYXkgPSBXZWJHTEludEFycmF5OjpjcmVh
dGUoMSk7Ci0gICAgR0xpbnQgZGF0YTsKLSAgICA6OmdsR2V0VGV4UGFyYW1ldGVyaXYodGFyZ2V0
LCBwbmFtZSwgJmRhdGEpOwotICAgIGFycmF5LT5zZXQoMCwgc3RhdGljX2Nhc3Q8aW50PihkYXRh
KSk7Ci0gICAgCi0gICAgcmV0dXJuIGFycmF5OwotfQotCi1mbG9hdCBHcmFwaGljc0NvbnRleHQz
RDo6Z2V0VW5pZm9ybWYoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uKQotewot
ICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIHF1ZXJ5IGdsR2V0VW5pZm9ybUxvY2F0aW9uIHRvIGRl
dGVybWluZSB0aGUgc2l6ZSBuZWVkZWQKLSAgICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7Ci0gICAg
VU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVy
biAwOwotfQotCi1QYXNzUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gR3JhcGhpY3NDb250ZXh0M0Q6
OmdldFVuaWZvcm1mdihXZWJHTFByb2dyYW0qIHByb2dyYW0sIGxvbmcgbG9jYXRpb24pCi17Ci0g
ICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gcXVlcnkgZ2xHZXRVbmlmb3JtTG9jYXRpb24gdG8gZGV0
ZXJtaW5lIHRoZSBzaXplIG5lZWRlZAotICAgIFVOVVNFRF9QQVJBTShwcm9ncmFtKTsKLSAgICBV
TlVTRURfUEFSQU0obG9jYXRpb24pOwotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJu
IDA7Ci19Ci0KLWludCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWkoV2ViR0xQcm9ncmFt
KiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uKQotewotICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIHF1
ZXJ5IGdsR2V0VW5pZm9ybUxvY2F0aW9uIHRvIGRldGVybWluZSB0aGUgc2l6ZSBuZWVkZWQKLSAg
ICBVTlVTRURfUEFSQU0ocHJvZ3JhbSk7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOwotfQotCi1QYXNzUmVmUHRyPFdlYkdM
SW50QXJyYXk+IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtaXYoV2ViR0xQcm9ncmFtKiBw
cm9ncmFtLCBsb25nIGxvY2F0aW9uKQotewotICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIHF1ZXJ5
IGdsR2V0VW5pZm9ybUxvY2F0aW9uIHRvIGRldGVybWluZSB0aGUgc2l6ZSBuZWVkZWQKLSAgICBV
TlVTRURfUEFSQU0ocHJvZ3JhbSk7Ci0gICAgVU5VU0VEX1BBUkFNKGxvY2F0aW9uKTsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAgIDo6Z2xHZXRVbmlmb3JtaXYoKEdM
dWludCkgcHJvZ3JhbS0+b2JqZWN0KCksIGxvY2F0aW9uLCB2YWx1ZSk7CiB9CiAKIGxvbmcgR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1Mb2NhdGlvbihXZWJHTFByb2dyYW0qIHByb2dyYW0s
IGNvbnN0IFN0cmluZyYgbmFtZSkKQEAgLTE0NDIsNzEgKzEwODMsMTYgQEAgbG9uZyBHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0VW5pZm9ybUxvY2F0aQogICAgIHJldHVybiA6OmdsR2V0VW5pZm9ybUxv
Y2F0aW9uKChHTHVpbnQpIHByb2dyYW0tPm9iamVjdCgpLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwog
fQogCi1zdGF0aWMgaW50IHNpemVGb3JHZXRWZXJ0ZXhBdHRyaWJQYXJhbSh1bnNpZ25lZCBsb25n
IHBuYW1lKQotewotICAgIHN3aXRjaChwbmFtZSkgewotICAgICAgICBjYXNlIEdMX1ZFUlRFWF9B
VFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkc6ICAgICByZXR1cm4gMTsgLy8gKCogYWN0dWFsbHkg
YSBXZWJHTEJ1ZmZlciopCi0gICAgICAgIGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFC
TEVEOiAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJf
QVJSQVlfU0laRTogICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9WRVJU
RVhfQVRUUklCX0FSUkFZX1NUUklERTogICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNh
c2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFOiAgICAgICAgICAgICAgIHJldHVybiAxOwot
ICAgICAgICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfTk9STUFMSVpFRDogICAgICAgICBy
ZXR1cm4gMTsKLSAgICAgICAgY2FzZSBHTF9DVVJSRU5UX1ZFUlRFWF9BVFRSSUI6ICAgICAgICAg
ICAgICAgICAgcmV0dXJuIDQ7Ci0gICAgfQotICAgIAotICAgIHJldHVybiAtMTsKLX0KLQotZmxv
YXQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYmYodW5zaWduZWQgbG9uZyBpbmRl
eCwgdW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICBlbnN1cmVDb250ZXh0KG1fY29udGV4dE9i
aik7Ci0gICAgR0xmbG9hdCBidWZbNF07Ci0gICAgOjpnbEdldFZlcnRleEF0dHJpYmZ2KGluZGV4
LCBwbmFtZSwgYnVmKTsKLSAgICByZXR1cm4gYnVmWzBdOwotfQotCi1QYXNzUmVmUHRyPFdlYkdM
RmxvYXRBcnJheT4gR3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYmZ2KHVuc2lnbmVk
IGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpnZXRWZXJ0ZXhBdHRyaWJmdih1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBu
YW1lLCBmbG9hdCogdmFsdWUpCiB7Ci0gICAgaW50IHNpemUgPSBzaXplRm9yR2V0VmVydGV4QXR0
cmliUGFyYW0ocG5hbWUpOwotICAgIGlmIChzaXplIDwgMSkgCi0gICAgICAgIHJldHVybiAwOwot
ICAgIAogICAgIGVuc3VyZUNvbnRleHQobV9jb250ZXh0T2JqKTsKLSAgICAKLSAgICBSZWZQdHI8
V2ViR0xGbG9hdEFycmF5PiBhcnJheSA9IFdlYkdMRmxvYXRBcnJheTo6Y3JlYXRlKHNpemUpOwot
ICAgIEdMZmxvYXQgYnVmWzRdOwotICAgIDo6Z2xHZXRWZXJ0ZXhBdHRyaWJmdihpbmRleCwgcG5h
bWUsIGJ1Zik7Ci0gICAgICAgICAgICAKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsr
aSkKLSAgICAgICAgYXJyYXktPnNldChpLCBzdGF0aWNfY2FzdDxmbG9hdD4oYnVmW2ldKSk7Ci0g
ICAgCi0gICAgcmV0dXJuIGFycmF5OworICAgIDo6Z2xHZXRWZXJ0ZXhBdHRyaWJmdihpbmRleCwg
cG5hbWUsIHZhbHVlKTsKIH0KIAotaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRy
aWJpKHVuc2lnbmVkIGxvbmcgaW5kZXgsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCit2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJpdih1bnNpZ25lZCBsb25nIGluZGV4LCB1bnNp
Z25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKQogewogICAgIGVuc3VyZUNvbnRleHQobV9jb250
ZXh0T2JqKTsKLSAgICBHTGludCBidWZbNF07Ci0gICAgOjpnbEdldFZlcnRleEF0dHJpYml2KGlu
ZGV4LCBwbmFtZSwgYnVmKTsKLSAgICByZXR1cm4gYnVmWzBdOwotfQotCi1QYXNzUmVmUHRyPFdl
YkdMSW50QXJyYXk+IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJpdih1bnNpZ25l
ZCBsb25nIGluZGV4LCB1bnNpZ25lZCBsb25nIHBuYW1lKQotewotICAgIGludCBzaXplID0gc2l6
ZUZvckdldFZlcnRleEF0dHJpYlBhcmFtKHBuYW1lKTsKLSAgICBpZiAoc2l6ZSA8IDEpIAotICAg
ICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBlbnN1cmVDb250ZXh0KG1fY29udGV4dE9iaik7Ci0g
ICAgCi0gICAgUmVmUHRyPFdlYkdMSW50QXJyYXk+IGFycmF5ID0gV2ViR0xJbnRBcnJheTo6Y3Jl
YXRlKHNpemUpOwotICAgIEdMaW50IGJ1Zls0XTsKLSAgICA6OmdsR2V0VmVydGV4QXR0cmliaXYo
aW5kZXgsIHBuYW1lLCBidWYpOwotICAgICAgICAgICAgCi0gICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBzaXplOyArK2kpCi0gICAgICAgIGFycmF5LT5zZXQoaSwgc3RhdGljX2Nhc3Q8aW50PihidWZb
aV0pKTsKLSAgICAKLSAgICByZXR1cm4gYXJyYXk7CisgICAgOjpnbEdldFZlcnRleEF0dHJpYml2
KGluZGV4LCBwbmFtZSwgdmFsdWUpOwogfQogCiBsb25nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRW
ZXJ0ZXhBdHRyaWJPZmZzZXQodW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQgbG9uZyBwbmFt
ZSkKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTEzNDEpCisrKyBXZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDcgQEAKKzIwMDktMTEtMjMgIEtl
bm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSBnZXQuLi4gY2FsbHMgdG8gbGF0ZXN0IHNw
ZWMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMDkx
CisKKyAgICAgICAgUmVtb3ZlZCBvbGQgdmVyc2lvbnMgb2YgZ2V0IGNhbGxzIG9uIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dCBhbmQKKyAgICAgICAgYWRkZWQgbmV3IG9uZXMgcGVyIHNwZWMgcmV0dXJu
aW5nICJhbnkiLiBOZXcgY29kZSBzaW1wbGlmaWVzCisgICAgICAgIEdyYXBoaWNzQ29udGV4dDNE
IGFuZCBmaXhlcyBwcmV2aW91c2x5IHVuaW1wbGVtZW50ZWQgcm91dGluZXMuCisgICAgICAgIEFk
ZGVkIGN1c3RvbSBKUyBhbmQgVjggYmluZGluZ3MuIEFkZGVkIGV4aGF1c3RpdmUgdGVzdCBjYXNl
CisgICAgICAgIGV4ZXJjaXNpbmcgYWxsIG5ldyBjb2RlIHBhdGhzLiBVcGRhdGVkIHByZWV4aXN0
aW5nIHRlc3QgY2FzZXMgZm9yCisgICAgICAgIG5ldyBBUElzLiBGaXhlZCBwcmVleGlzdGluZyBi
dWdzIGluIFdlYktpdCdzIGFuZCBDaHJvbWUncyBXZWJHTAorICAgICAgICBpbXBsZW1lbnRhdGlv
bnMuCisKKyAgICAgICAgUmFuIFdlYkdMIGxheW91dCB0ZXN0cyBpbiBXZWJLaXQgKGNsZWFuKSBh
bmQgQ2hyb21lIChjb3VwbGUgb2YKKyAgICAgICAgcHJlZXhpc3Rpbmcga25vd24gZmFpbHVyZXMp
IGFuZCBtYW51YWwgV2ViR0wgdGVzdHMgaW4gYm90aAorICAgICAgICBicm93c2Vycy4KKworICAg
ICAgICBUZXN0OiBmYXN0L2NhbnZhcy93ZWJnbC9nbC1vYmplY3QtZ2V0LWNhbGxzLmh0bWwKKwor
ICAgICAgICAqIHNyYy9HcmFwaGljc0NvbnRleHQzRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0Qm9vbGVhbnYpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEJ1ZmZlclBhcmFtZXRlcml2KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRGbG9hdHYpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbnRlZ2Vydik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbWl2KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJp
dik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyaXYpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFRleFBhcmFtZXRlcmZ2KToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRUZXhQYXJhbWV0ZXJpdik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWZ2KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtaXYpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYmZ2KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJpdik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6aXNGcmFtZWJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6aXNSZW5kZXJidWZmZXIpOgorCiAyMDA5LTEx
LTI0ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGltaXRyaSBHbGF6a292LgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0Nv
bnRleHQzRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0Nv
bnRleHQzRC5jcHAJKHJldmlzaW9uIDUxMzQxKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFw
aGljc0NvbnRleHQzRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3NCwxOSArNzc0LDYgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpiZWdpblBhaQogI2VuZGlmICAvLyBSRU5ERVJf
VE9fREVCVUdHSU5HX1dJTkRPVwogfQogCi1ib29sIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6
OnZhbGlkYXRlVGV4dHVyZVRhcmdldChpbnQgdGFyZ2V0KQotewotICAgIHJldHVybiAodGFyZ2V0
ID09IEdMX1RFWFRVUkVfMkQgfHwgdGFyZ2V0ID09IEdMX1RFWFRVUkVfQ1VCRV9NQVApOwotfQot
Ci1ib29sIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnZhbGlkYXRlVGV4dHVyZVBhcmFtZXRl
cihpbnQgcGFyYW0pCi17Ci0gICAgcmV0dXJuIChwYXJhbSA9PSBHTF9URVhUVVJFX01BR19GSUxU
RVIKLSAgICAgICAgIHx8IHBhcmFtID09IEdMX1RFWFRVUkVfTUlOX0ZJTFRFUgotICAgICAgICAg
fHwgcGFyYW0gPT0gR0xfVEVYVFVSRV9XUkFQX1MKLSAgICAgICAgIHx8IHBhcmFtID09IEdMX1RF
WFRVUkVfV1JBUF9UKTsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjphY3Rp
dmVUZXh0dXJlKHVuc2lnbmVkIGxvbmcgdGV4dHVyZSkKIHsKICAgICAvLyBGSVhNRTogcXVlcnkg
bnVtYmVyIG9mIHRleHR1cmVzIGF2YWlsYWJsZS4KQEAgLTExMDUsOCArMTA5Miw4IEBAIHVuc2ln
bmVkIEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVCdWZmZXIKIHVuc2lnbmVkIEdyYXBoaWNzQ29u
dGV4dDNEOjpjcmVhdGVGcmFtZWJ1ZmZlcigpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
Ci0gICAgR0x1aW50IG87Ci0gICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJm8pOworICAgIEdMdWlu
dCBvID0gMDsKKyAgICBnbEdlbkZyYW1lYnVmZmVyc0VYVCgxLCAmbyk7CiAgICAgcmV0dXJuIG87
CiB9CiAKQEAgLTExMjAsNyArMTEwNyw3IEBAIHVuc2lnbmVkIEdyYXBoaWNzQ29udGV4dDNEOjpj
cmVhdGVSZW5kZXIKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBHTHVpbnQgbzsK
LSAgICBnbEdlblJlbmRlcmJ1ZmZlcnMoMSwgJm8pOworICAgIGdsR2VuUmVuZGVyYnVmZmVyc0VY
VCgxLCAmbyk7CiAgICAgcmV0dXJuIG87CiB9CiAKQEAgLTExNDcsNyArMTEzNCw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZUJ1ZmZlcih1bnMKIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmRlbGV0ZUZyYW1lYnVmZmVyKHVuc2lnbmVkIGZyYW1lYnVmZmVyKQogewogICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOwotICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzKDEsICZmcmFtZWJ1ZmZl
cik7CisgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnNFWFQoMSwgJmZyYW1lYnVmZmVyKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlUHJvZ3JhbSh1bnNpZ25lZCBwcm9ncmFtKQpA
QCAtMTE1OSw3ICsxMTQ2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlUHJvZ3Jh
bSh1bgogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlUmVuZGVyYnVmZmVyKHVuc2lnbmVk
IHJlbmRlcmJ1ZmZlcikKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICBnbERlbGV0
ZVJlbmRlcmJ1ZmZlcnMoMSwgJnJlbmRlcmJ1ZmZlcik7CisgICAgZ2xEZWxldGVSZW5kZXJidWZm
ZXJzRVhUKDEsICZyZW5kZXJidWZmZXIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpk
ZWxldGVTaGFkZXIodW5zaWduZWQgc2hhZGVyKQpAQCAtMTE5Nyw5ICsxMTg0LDkgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6YmluZEJ1ZmZlcih1bnNpZwogICAgIG1faW50ZXJuYWwtPmJpbmRC
dWZmZXIodGFyZ2V0LCBidWZmZXIpOwogfQogCi1HTF9TQU1FX01FVEhPRF8yX1gyKEJpbmRGcmFt
ZWJ1ZmZlciwgYmluZEZyYW1lYnVmZmVyLCB1bnNpZ25lZCBsb25nLCBXZWJHTEZyYW1lYnVmZmVy
KikKK0dMX1NBTUVfTUVUSE9EXzJfWDIoQmluZEZyYW1lYnVmZmVyRVhULCBiaW5kRnJhbWVidWZm
ZXIsIHVuc2lnbmVkIGxvbmcsIFdlYkdMRnJhbWVidWZmZXIqKQogCi1HTF9TQU1FX01FVEhPRF8y
X1gyKEJpbmRSZW5kZXJidWZmZXIsIGJpbmRSZW5kZXJidWZmZXIsIHVuc2lnbmVkIGxvbmcsIFdl
YkdMUmVuZGVyYnVmZmVyKikKK0dMX1NBTUVfTUVUSE9EXzJfWDIoQmluZFJlbmRlcmJ1ZmZlckVY
VCwgYmluZFJlbmRlcmJ1ZmZlciwgdW5zaWduZWQgbG9uZywgV2ViR0xSZW5kZXJidWZmZXIqKQog
CiAvLyBJZiB3ZSBkaWRuJ3QgaGF2ZSB0byBoYWNrIEdMX1RFWFRVUkVfV1JBUF9SIGZvciBjdWJl
IG1hcHMsCiAvLyB3ZSBjb3VsZCBqdXN0IHVzZToKQEAgLTEyNTMsNyArMTI0MCw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmJ1ZmZlclN1YkRhdGEodW4KIHVuc2lnbmVkIGxvbmcgR3JhcGhp
Y3NDb250ZXh0M0Q6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXModW5zaWduZWQgbG9uZyB0YXJnZXQp
CiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgcmV0dXJuIGdsQ2hlY2tGcmFtZWJ1
ZmZlclN0YXR1cyh0YXJnZXQpOworICAgIHJldHVybiBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXNF
WFQodGFyZ2V0KTsKIH0KIAogR0xfU0FNRV9NRVRIT0RfMShDbGVhciwgY2xlYXIsIHVuc2lnbmVk
IGxvbmcpCkBAIC0xMzU2LDkgKzEzNDMsOSBAQCBHTF9TQU1FX01FVEhPRF8wKEZpbmlzaCwgZmlu
aXNoKQogCiBHTF9TQU1FX01FVEhPRF8wKEZsdXNoLCBmbHVzaCkKIAotR0xfU0FNRV9NRVRIT0Rf
NF9YNChGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciwgZnJhbWVidWZmZXJSZW5kZXJidWZmZXIsIHVu
c2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIFdlYkdMUmVuZGVyYnVm
ZmVyKikKK0dMX1NBTUVfTUVUSE9EXzRfWDQoRnJhbWVidWZmZXJSZW5kZXJidWZmZXJFWFQsIGZy
YW1lYnVmZmVyUmVuZGVyYnVmZmVyLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNp
Z25lZCBsb25nLCBXZWJHTFJlbmRlcmJ1ZmZlciopCiAKLUdMX1NBTUVfTUVUSE9EXzVfWDQoRnJh
bWVidWZmZXJUZXh0dXJlMkQsIGZyYW1lYnVmZmVyVGV4dHVyZTJELCB1bnNpZ25lZCBsb25nLCB1
bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCBXZWJHTFRleHR1cmUqLCBsb25nKQorR0xfU0FN
RV9NRVRIT0RfNV9YNChGcmFtZWJ1ZmZlclRleHR1cmUyREVYVCwgZnJhbWVidWZmZXJUZXh0dXJl
MkQsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcsIFdlYkdMVGV4
dHVyZSosIGxvbmcpCiAKIEdMX1NBTUVfTUVUSE9EXzEoRnJvbnRGYWNlLCBmcm9udEZhY2UsIHVu
c2lnbmVkIGxvbmcpCiAKQEAgLTE0MzUsMzUgKzE0MjIsMTYgQEAgaW50IEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRBdHRyaWJMb2NhdGlvbgogICAgIHJldHVybiBnbEdldEF0dHJpYkxvY2F0aW9uKEVY
VFJBQ1QocHJvZ3JhbSksIG5hbWUudXRmOCgpLmRhdGEoKSk7CiB9CiAKLWJvb2wgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldEJvb2xlYW4odW5zaWduZWQgbG9uZyBwbmFtZSkKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldEJvb2xlYW52KHVuc2lnbmVkIGxvbmcgcG5hbWUsIHVuc2lnbmVkIGNoYXIq
IHZhbHVlKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIEdMYm9vbGVhbiB2YWw7
Ci0gICAgLy8gRklYTUU6IHZhbGlkYXRlIHBuYW1lIHRvIGVuc3VyZSBpdCByZXR1cm5zIG9ubHkg
YSBzaW5nbGUgdmFsdWUuCi0gICAgZ2xHZXRCb29sZWFudihwbmFtZSwgJnZhbCk7Ci0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PGJvb2w+KHZhbCk7CisgICAgZ2xHZXRCb29sZWFudihwbmFtZSwgdmFs
dWUpOwogfQogCi1QYXNzUmVmUHRyPFdlYkdMVW5zaWduZWRCeXRlQXJyYXk+IEdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRCb29sZWFudih1bnNpZ25lZCBsb25nIHBuYW1lKQotewotICAgIC8vIEZJWE1F
OiBpbXBsZW1lbnQuCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQot
aW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRCdWZmZXJQYXJhbWV0ZXJpKHVuc2lnbmVkIGxvbmcg
dGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
QnVmZmVyUGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5h
bWUsIGludCogdmFsdWUpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgR0xpbnQg
ZGF0YTsKLSAgICBnbEdldEJ1ZmZlclBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsICZkYXRhKTsK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihkYXRhKTsKLX0KLQotUGFzc1JlZlB0cjxXZWJH
TEludEFycmF5PiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QnVmZmVyUGFyYW1ldGVyaXYodW5zaWdu
ZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUpCi17Ci0gICAgLy8gRklYTUU6IGlt
cGxlbWVudC4KLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOworICAgIGdsR2V0
QnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgdmFsdWUpOwogfQogCiB1bnNpZ25lZCBs
b25nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRFcnJvcigpCkBAIC0xNDcyLDcyICsxNDQwLDMzIEBA
IHVuc2lnbmVkIGxvbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEVycm8KICAgICByZXR1cm4gZ2xH
ZXRFcnJvcigpOwogfQogCi1mbG9hdCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RmxvYXQodW5zaWdu
ZWQgbG9uZyBwbmFtZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZsb2F0dih1bnNpZ25l
ZCBsb25nIHBuYW1lLCBmbG9hdCogdmFsdWUpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
Ci0gICAgR0xmbG9hdCB2YWw7Ci0gICAgLy8gRklYTUU6IHZhbGlkYXRlIHBuYW1lIHRvIGVuc3Vy
ZSBpdCByZXR1cm5zIG9ubHkgYSBzaW5nbGUgdmFsdWUuCi0gICAgZ2xHZXRGbG9hdHYocG5hbWUs
ICZ2YWwpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4odmFsKTsKKyAgICBnbEdldEZs
b2F0dihwbmFtZSwgdmFsdWUpOwogfQogCi1QYXNzUmVmUHRyPFdlYkdMRmxvYXRBcnJheT4gR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldEZsb2F0dih1bnNpZ25lZCBsb25nIHBuYW1lKQotewotICAgIC8v
IEZJWE1FOiBpbXBsZW1lbnQuCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsK
LX0KLQotaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJh
bWV0ZXJpKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgYXR0YWNobWVudCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RnJhbWVi
dWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBsb25nIGF0dGFjaG1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHBuYW1lLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KiB2
YWx1ZSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICBHTGludCBkYXRhOwotICAg
IGdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYodGFyZ2V0LCBhdHRhY2htZW50
LCBwbmFtZSwgJmRhdGEpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGRhdGEpOwotfQot
Ci1QYXNzUmVmUHRyPFdlYkdMSW50QXJyYXk+IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRGcmFtZWJ1
ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdih1bnNpZ25lZCBsb25nIHRhcmdldCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGF0dGFjaG1lbnQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVt
ZW50LgotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgZ2xHZXRGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdkVYVCh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1l
LCB2YWx1ZSk7CiB9CiAKLWludCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW50ZWdlcih1bnNpZ25l
ZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW50ZWdlcnYodW5zaWdu
ZWQgbG9uZyBwbmFtZSwgaW50KiB2YWx1ZSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
LSAgICBHTGludCB2YWw7Ci0gICAgLy8gRklYTUU6IHZhbGlkYXRlIHBuYW1lIHRvIGVuc3VyZSBp
dCByZXR1cm5zIG9ubHkgYSBzaW5nbGUgdmFsdWUuCi0gICAgZ2xHZXRJbnRlZ2VydihwbmFtZSwg
JnZhbCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4odmFsKTsKLX0KLQotUGFzc1JlZlB0
cjxXZWJHTEludEFycmF5PiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW50ZWdlcnYodW5zaWduZWQg
bG9uZyBwbmFtZSkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50LgotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgZ2xHZXRJbnRlZ2VydihwbmFtZSwgdmFsdWUpOwog
fQogCi1pbnQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1pKFdlYkdMUHJvZ3JhbSogcHJv
Z3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBw
bmFtZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1pdihXZWJHTFByb2dyYW0q
IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
bG9uZyBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIHZh
bHVlKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIEdMaW50IHBhcmFtOwotICAg
IGdsR2V0UHJvZ3JhbWl2KEVYVFJBQ1QocHJvZ3JhbSksIHBuYW1lLCAmcGFyYW0pOwotICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxpbnQ+KHBhcmFtKTsKLX0KLQotUGFzc1JlZlB0cjxXZWJHTEludEFy
cmF5PiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbWl2KFdlYkdMUHJvZ3JhbSogcHJvZ3Jh
bSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50Lgot
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgZ2xHZXRQcm9ncmFtaXYo
RVhUUkFDVChwcm9ncmFtKSwgcG5hbWUsIHZhbHVlKTsKIH0KIAogU3RyaW5nIEdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRQcm9ncmFtSW5mb0xvZyhXZWJHTFByb2dyYW0qIHByb2dyYW0pCkBAIC0xNTU5
LDM4ICsxNDg4LDIwIEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbUluZm8K
ICAgICByZXR1cm4gcmVzOwogfQogCi1pbnQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFJlbmRlcmJ1
ZmZlclBhcmFtZXRlcmkodW5zaWduZWQgbG9uZyB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBwbmFtZSkKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KHVuc2lnbmVkIGxv
bmcgdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgbG9uZyBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCogdmFsdWUpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7Ci0gICAgR0xpbnQgcGFyYW07Ci0gICAgZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJp
dih0YXJnZXQsIHBuYW1lLCAmcGFyYW0pOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHBh
cmFtKTsKLX0KLQotUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBHcmFwaGljc0NvbnRleHQzRDo6
Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYodW5zaWduZWQgbG9uZyB0YXJnZXQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50
LgotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgZ2xHZXRSZW5kZXJi
dWZmZXJQYXJhbWV0ZXJpdkVYVCh0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CiB9CiAKLWludCBHcmFw
aGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyaShXZWJHTFNoYWRlciogc2hhZGVyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgcG5hbWUpCit2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRTaGFkZXJpdihXZWJHTFNoYWRlciogc2hhZGVyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBwbmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCogdmFsdWUpCiB7CiAgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7Ci0gICAgR0xpbnQgcGFyYW07Ci0gICAgZ2xHZXRTaGFkZXJpdihFWFRSQUNU
KHNoYWRlciksIHBuYW1lLCAmcGFyYW0pOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHBh
cmFtKTsKLX0KLQotUGFzc1JlZlB0cjxXZWJHTEludEFycmF5PiBHcmFwaGljc0NvbnRleHQzRDo6
Z2V0U2hhZGVyaXYoV2ViR0xTaGFkZXIqIHNoYWRlciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHBuYW1lKQot
ewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQuCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBy
ZXR1cm4gMDsKKyAgICBnbEdldFNoYWRlcml2KEVYVFJBQ1Qoc2hhZGVyKSwgcG5hbWUsIHZhbHVl
KTsKIH0KIAogU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJJbmZvTG9nKFdlYkdM
U2hhZGVyKiBzaGFkZXIpCkBAIC0xNjM3LDgyICsxNTQ4LDI4IEBAIFN0cmluZyBHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0U3RyaW5nKHVuc2kKICAgICByZXR1cm4gU3RyaW5nKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgY2hhcio+KGdsR2V0U3RyaW5nKG5hbWUpKSk7CiB9CiAKLWZsb2F0IEdyYXBoaWNz
Q29udGV4dDNEOjpnZXRUZXhQYXJhbWV0ZXJmKHVuc2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25l
ZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VGV4UGFyYW1ldGVyZnYo
dW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuc2lnbmVkIGxvbmcgcG5hbWUsIGZsb2F0KiB2YWx1ZSkK
IHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICBpZiAoIW1faW50ZXJuYWwtPnZhbGlk
YXRlVGV4dHVyZVRhcmdldCh0YXJnZXQpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiB0aHJvdyBleGNl
cHRpb24uCi0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIGlmICghbV9pbnRlcm5hbC0+
dmFsaWRhdGVUZXh0dXJlUGFyYW1ldGVyKHBuYW1lKSkgewotICAgICAgICAvLyBGSVhNRTogdGhy
b3cgZXhjZXB0aW9uLgotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBHTGZsb2F0IHBh
cmFtOwotICAgIGdsR2V0VGV4UGFyYW1ldGVyZnYodGFyZ2V0LCBwbmFtZSwgJnBhcmFtKTsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHBhcmFtKTsKLX0KLQotUGFzc1JlZlB0cjxXZWJH
TEZsb2F0QXJyYXk+IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRUZXhQYXJhbWV0ZXJmdih1bnNpZ25l
ZCBsb25nIHRhcmdldCwgdW5zaWduZWQgbG9uZyBwbmFtZSkKLXsKLSAgICAvLyBGSVhNRTogaW1w
bGVtZW50LgotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgZ2xHZXRU
ZXhQYXJhbWV0ZXJmdih0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CiB9CiAKLWludCBHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0VGV4UGFyYW1ldGVyaSh1bnNpZ25lZCBsb25nIHRhcmdldCwgdW5zaWduZWQg
bG9uZyBwbmFtZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFRleFBhcmFtZXRlcml2KHVu
c2lnbmVkIGxvbmcgdGFyZ2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lLCBpbnQqIHZhbHVlKQogewog
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIGlmICghbV9pbnRlcm5hbC0+dmFsaWRhdGVU
ZXh0dXJlVGFyZ2V0KHRhcmdldCkpIHsKLSAgICAgICAgLy8gRklYTUU6IHRocm93IGV4Y2VwdGlv
bi4KLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgaWYgKCFtX2ludGVybmFsLT52YWxp
ZGF0ZVRleHR1cmVQYXJhbWV0ZXIocG5hbWUpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiB0aHJvdyBl
eGNlcHRpb24uCi0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIEdMaW50IHBhcmFtOwot
ICAgIGdsR2V0VGV4UGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgJnBhcmFtKTsKLSAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8aW50PihwYXJhbSk7Ci19Ci0KLVBhc3NSZWZQdHI8V2ViR0xJbnRBcnJh
eT4gR3JhcGhpY3NDb250ZXh0M0Q6OmdldFRleFBhcmFtZXRlcml2KHVuc2lnbmVkIGxvbmcgdGFy
Z2V0LCB1bnNpZ25lZCBsb25nIHBuYW1lKQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQuCi0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICBnbEdldFRleFBhcmFtZXRl
cml2KHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKIH0KIAotZmxvYXQgR3JhcGhpY3NDb250ZXh0M0Q6
OmdldFVuaWZvcm1mKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBsb2NhdGlvbikKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1mdihXZWJHTFByb2dyYW0qIHByb2dyYW0sIGxv
bmcgbG9jYXRpb24sIGZsb2F0KiB2YWx1ZSkKIHsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50Lgot
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLVBhc3NSZWZQdHI8V2Vi
R0xGbG9hdEFycmF5PiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9ybWZ2KFdlYkdMUHJvZ3Jh
bSogcHJvZ3JhbSwgbG9uZyBsb2NhdGlvbikKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50Lgot
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWludCBHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0VW5pZm9ybWkoV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBsb25nIGxvY2F0aW9u
KQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQuCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAg
ICByZXR1cm4gMDsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBnbEdldFVuaWZvcm1m
dihFWFRSQUNUKHByb2dyYW0pLCBsb2NhdGlvbiwgdmFsdWUpOwogfQogCi1QYXNzUmVmUHRyPFdl
YkdMSW50QXJyYXk+IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlmb3JtaXYoV2ViR0xQcm9ncmFt
KiBwcm9ncmFtLCBsb25nIGxvY2F0aW9uKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5p
Zm9ybWl2KFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgbG9uZyBsb2NhdGlvbiwgaW50KiB2YWx1ZSkK
IHsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50LgotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAg
cmV0dXJuIDA7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgZ2xHZXRVbmlmb3JtaXYo
RVhUUkFDVChwcm9ncmFtKSwgbG9jYXRpb24sIHZhbHVlKTsKIH0KIAogbG9uZyBHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0VW5pZm9ybUxvY2F0aW9uKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgY29uc3Qg
U3RyaW5nJiBuYW1lKQpAQCAtMTcyNCwzNiArMTU4MSwyMCBAQCBsb25nIEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRVbmlmb3JtTG9jYXRpCiAgICAgcmV0dXJuIGdsR2V0VW5pZm9ybUxvY2F0aW9uKEVY
VFJBQ1QocHJvZ3JhbSksIG5hbWUudXRmOCgpLmRhdGEoKSk7CiB9CiAKLWZsb2F0IEdyYXBoaWNz
Q29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJmKHVuc2lnbmVkIGxvbmcgaW5kZXgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHBuYW1lKQot
ewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQuCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBy
ZXR1cm4gMDsKLX0KLQotUGFzc1JlZlB0cjxXZWJHTEZsb2F0QXJyYXk+IEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRWZXJ0ZXhBdHRyaWJmdih1bnNpZ25lZCBsb25nIGluZGV4LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgbG9uZyBwbmFtZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJp
YmZ2KHVuc2lnbmVkIGxvbmcgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBsb25nIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmxvYXQqIHZhbHVlKQogewotICAgIC8vIEZJWE1FOiBpbXBsZW1l
bnQuCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotaW50IEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJpKHVuc2lnbmVkIGxvbmcgaW5kZXgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBwbmFtZSkK
LXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50LgotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAg
cmV0dXJuIDA7CisgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgZ2xHZXRWZXJ0ZXhBdHRy
aWJmdihpbmRleCwgcG5hbWUsIHZhbHVlKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJHTEludEFycmF5
PiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliaXYodW5zaWduZWQgbG9uZyBpbmRl
eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBsb25nIHBuYW1lKQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
Z2V0VmVydGV4QXR0cmliaXYodW5zaWduZWQgbG9uZyBpbmRleCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgcG5hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIHZhbHVlKQogewotICAgIC8vIEZJ
WE1FOiBpbXBsZW1lbnQuCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICBnbEdldFZlcnRleEF0dHJpYml2KGluZGV4LCBw
bmFtZSwgdmFsdWUpOwogfQogCiBsb25nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRy
aWJPZmZzZXQodW5zaWduZWQgbG9uZyBpbmRleCwgdW5zaWduZWQgbG9uZyBwbmFtZSkKQEAgLTE3
ODAsNyArMTYyMSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmlzRW5hYmxlZCh1bnNpZ24K
IGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmlzRnJhbWVidWZmZXIoV2ViR0xGcmFtZWJ1ZmZlciog
ZnJhbWVidWZmZXIpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgcmV0dXJuIGds
SXNGcmFtZWJ1ZmZlcihFWFRSQUNUKGZyYW1lYnVmZmVyKSk7CisgICAgcmV0dXJuIGdsSXNGcmFt
ZWJ1ZmZlckVYVChFWFRSQUNUKGZyYW1lYnVmZmVyKSk7CiB9CiAKIGJvb2wgR3JhcGhpY3NDb250
ZXh0M0Q6OmlzUHJvZ3JhbShXZWJHTFByb2dyYW0qIHByb2dyYW0pCkBAIC0xNzkyLDcgKzE2MzMs
NyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjppc1Byb2dyYW0oV2ViR0xQCiBib29sIEdyYXBo
aWNzQ29udGV4dDNEOjppc1JlbmRlcmJ1ZmZlcihXZWJHTFJlbmRlcmJ1ZmZlciogcmVuZGVyYnVm
ZmVyKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIHJldHVybiBnbElzUmVuZGVy
YnVmZmVyKEVYVFJBQ1QocmVuZGVyYnVmZmVyKSk7CisgICAgcmV0dXJuIGdsSXNSZW5kZXJidWZm
ZXJFWFQoRVhUUkFDVChyZW5kZXJidWZmZXIpKTsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHQz
RDo6aXNTaGFkZXIoV2ViR0xTaGFkZXIqIHNoYWRlcikKQEAgLTE4NDEsNyArMTY4Miw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlbGVhc2VTaGFkZXJDb20KIHsKIH0KIAotR0xfU0FNRV9N
RVRIT0RfNChSZW5kZXJidWZmZXJTdG9yYWdlLCByZW5kZXJidWZmZXJTdG9yYWdlLCB1bnNpZ25l
ZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nKQorR0xf
U0FNRV9NRVRIT0RfNChSZW5kZXJidWZmZXJTdG9yYWdlRVhULCByZW5kZXJidWZmZXJTdG9yYWdl
LCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBs
b25nKQogCiBHTF9TQU1FX01FVEhPRF8yKFNhbXBsZUNvdmVyYWdlLCBzYW1wbGVDb3ZlcmFnZSwg
ZG91YmxlLCBib29sKQogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1MTM0MSkKKysrIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzIEBACisyMDA5LTExLTIzICBL
ZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgZ2V0Li4uIGNhbGxzIHRvIGxhdGVzdCBz
cGVjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDA5
MQorCisgICAgICAgIFJlbW92ZWQgb2xkIHZlcnNpb25zIG9mIGdldCBjYWxscyBvbiBXZWJHTFJl
bmRlcmluZ0NvbnRleHQgYW5kCisgICAgICAgIGFkZGVkIG5ldyBvbmVzIHBlciBzcGVjIHJldHVy
bmluZyAiYW55Ii4gTmV3IGNvZGUgc2ltcGxpZmllcworICAgICAgICBHcmFwaGljc0NvbnRleHQz
RCBhbmQgZml4ZXMgcHJldmlvdXNseSB1bmltcGxlbWVudGVkIHJvdXRpbmVzLgorICAgICAgICBB
ZGRlZCBjdXN0b20gSlMgYW5kIFY4IGJpbmRpbmdzLiBBZGRlZCBleGhhdXN0aXZlIHRlc3QgY2Fz
ZQorICAgICAgICBleGVyY2lzaW5nIGFsbCBuZXcgY29kZSBwYXRocy4gVXBkYXRlZCBwcmVleGlz
dGluZyB0ZXN0IGNhc2VzIGZvcgorICAgICAgICBuZXcgQVBJcy4gRml4ZWQgcHJlZXhpc3Rpbmcg
YnVncyBpbiBXZWJLaXQncyBhbmQgQ2hyb21lJ3MgV2ViR0wKKyAgICAgICAgaW1wbGVtZW50YXRp
b25zLgorCisgICAgICAgIFJhbiBXZWJHTCBsYXlvdXQgdGVzdHMgaW4gV2ViS2l0IChjbGVhbikg
YW5kIENocm9tZSAoY291cGxlIG9mCisgICAgICAgIHByZWV4aXN0aW5nIGtub3duIGZhaWx1cmVz
KSBhbmQgbWFudWFsIFdlYkdMIHRlc3RzIGluIGJvdGgKKyAgICAgICAgYnJvd3NlcnMuCisKKyAg
ICAgICAgVGVzdDogZmFzdC9jYW52YXMvd2ViZ2wvZ2wtb2JqZWN0LWdldC1jYWxscy5odG1sCisK
KyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9nbC1nZXQtY2FsbHMtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2dsLWdldC1jYWxscy5odG1sOgorICAgICAgICAq
IGZhc3QvY2FudmFzL3dlYmdsL2dsLW9iamVjdC1nZXQtY2FsbHMtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9nbC1vYmplY3QtZ2V0LWNhbGxzLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2luY29ycmVjdC1jb250ZXh0LW9i
amVjdC1iZWhhdmlvdXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmds
L251bGwtb2JqZWN0LWJlaGF2aW91ci1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9jYW52
YXMvd2ViZ2wvcmVzb3VyY2VzL2Jvb2xVbmlmb3JtU2hhZGVyLnZlcnQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy9mbG9hdFVuaWZvcm1TaGFkZXIudmVydDog
QWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL2ludFVuaWZvcm1T
aGFkZXIudmVydDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2Vz
L21hdFVuaWZvcm1TaGFkZXIudmVydDogQWRkZWQuCisgICAgICAgICogZmFzdC9jYW52YXMvd2Vi
Z2wvcmVzb3VyY2VzL25vb3BVbmlmb3JtU2hhZGVyLmZyYWc6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy91dGlsczNkLmpzOgorICAgICAgICAoaW5pdFdlYkdM
KToKKyAgICAgICAgKGxvYWRTaGFkZXIpOgorICAgICAgICAoRnJhbWVyYXRlLnByb3RvdHlwZS5z
bmFwc2hvdCk6CisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsLXRl
c3QuanM6CisgICAgICAgIChsb2FkUHJvZ3JhbSk6CisgICAgICAgIChsb2FkU3RhbmRhcmRWZXJ0
ZXhTaGFkZXIpOgorICAgICAgICAobG9hZFZlcnRleFNoYWRlcik6CisgICAgICAgIChsb2FkU3Rh
bmRhcmRGcmFnbWVudFNoYWRlcik6CisgICAgICAgIChsb2FkRnJhZ21lbnRTaGFkZXIpOgorICAg
ICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9nbC1vYmplY3QtZ2V0LWNhbGxz
LmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMvaW5j
b3JyZWN0LWNvbnRleHQtb2JqZWN0LWJlaGF2aW91ci5qczoKKyAgICAgICAgKiBmYXN0L2NhbnZh
cy93ZWJnbC9zY3JpcHQtdGVzdHMvbnVsbC1vYmplY3QtYmVoYXZpb3VyLmpzOgorICAgICAgICAq
IGZhc3QvY2FudmFzL3dlYmdsL3RyaWFuZ2xlLmh0bWw6CisgICAgICAgICogZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanM6CisgICAgICAgIChzaG91bGRCZU5vblplcm8pOgorICAgICAg
ICAoc2hvdWxkQmVOb25OdWxsKToKKwogMjAwOS0xMS0yMyAgQ2hyaXMgTWFycmluICA8Y21hcnJp
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC1nZXQtY2FsbHMtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLWdldC1jYWxscy1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDUxMzQxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
d2ViZ2wvZ2wtZ2V0LWNhbGxzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTMsNjAg
KzEzLDYxIEBAIENvbnRleHQgY29udGFpbnMgZ2V0RXJyb3IKIFBBU1MgY29udGV4dCBjb250YWlu
cyBnZXRFcnJvcgogCiBDaGVjayBkZWZhdWx0IHZhbHVlcwotUEFTUyBjb250ZXh0LmdldEludGVn
ZXIoY29udGV4dC5BQ1RJVkVfVEVYVFVSRSkgaXMgY29udGV4dC5URVhUVVJFMAotUEFTUyBjb250
ZXh0LmdldEludGVnZXIoY29udGV4dC5BTElBU0VEX0xJTkVfV0lEVEhfUkFOR0UpIGlzIDEKLVBB
U1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFKSBp
cyAxCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkFSUkFZX0JVRkZFUl9CSU5ESU5H
KSBpcyAwCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkJMRU5EKSBpcyAwCi1QQVNT
IGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkJMRU5EX0NPTE9SKSBpcyAwCi1QQVNTIGNvbnRl
eHQuZ2V0SW50ZWdlcihjb250ZXh0LkJMRU5EX0RTVF9BTFBIQSkgaXMgMAotUEFTUyBjb250ZXh0
LmdldEludGVnZXIoY29udGV4dC5CTEVORF9EU1RfUkdCKSBpcyAwCi1QQVNTIGNvbnRleHQuZ2V0
SW50ZWdlcihjb250ZXh0LkJMRU5EX0VRVUFUSU9OX0FMUEhBKSBpcyBjb250ZXh0LkZVTkNfQURE
Ci1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkJMRU5EX0VRVUFUSU9OX1JHQikgaXMg
Y29udGV4dC5GVU5DX0FERAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5CTEVORF9T
UkNfQUxQSEEpIGlzIDEKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuQkxFTkRfU1JD
X1JHQikgaXMgMQotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5DT0xPUl9DTEVBUl9W
QUxVRSkgaXMgMAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5DT0xPUl9XUklURU1B
U0spIGlzIDEKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuQ1VMTF9GQUNFKSBpcyAw
Ci1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkNVTExfRkFDRV9NT0RFKSBpcyBjb250
ZXh0LkJBQ0sKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuQ1VSUkVOVF9QUk9HUkFN
KSBpcyAwCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkRFUFRIX0ZVTkMpIGlzIGNv
bnRleHQuTEVTUwotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5ERVBUSF9SQU5HRSkg
aXMgMAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5ERVBUSF9URVNUKSBpcyAwCi1Q
QVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkRFUFRIX1dSSVRFTUFTSykgaXMgMQotUEFT
UyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5ESVRIRVIpIGlzIDEKLVBBU1MgY29udGV4dC5n
ZXRJbnRlZ2VyKGNvbnRleHQuRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElORykgaXMgMAotUEFT
UyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5GUk9OVF9GQUNFKSBpcyBjb250ZXh0LkNDVwot
UEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5HRU5FUkFURV9NSVBNQVBfSElOVCkgaXMg
Y29udGV4dC5ET05UX0NBUkUKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuTElORV9X
SURUSCkgaXMgMQotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5QT0xZR09OX09GRlNF
VF9GQUNUT1IpIGlzIDAKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuUE9MWUdPTl9P
RkZTRVRfRklMTCkgaXMgMAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5QT0xZR09O
X09GRlNFVF9VTklUUykgaXMgMAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5SRU5E
RVJCVUZGRVJfQklORElOR19FWFQpIGlzIDAKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRl
eHQuU0FNUExFX0NPVkVSQUdFX0lOVkVSVCkgaXMgMAotUEFTUyBjb250ZXh0LmdldEludGVnZXIo
Y29udGV4dC5TQU1QTEVfQ09WRVJBR0VfVkFMVUUpIGlzIDEKLVBBU1MgY29udGV4dC5nZXRJbnRl
Z2VyKGNvbnRleHQuU0NJU1NPUl9CT1gpIGlzIDAKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNv
bnRleHQuU0NJU1NPUl9URVNUKSBpcyAwCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0
LlNURU5DSUxfQkFDS19GQUlMKSBpcyBjb250ZXh0LktFRVAKLVBBU1MgY29udGV4dC5nZXRJbnRl
Z2VyKGNvbnRleHQuU1RFTkNJTF9CQUNLX0ZVTkMpIGlzIGNvbnRleHQuQUxXQVlTCi1QQVNTIGNv
bnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlNURU5DSUxfQkFDS19QQVNTX0RFUFRIX0ZBSUwpIGlz
IGNvbnRleHQuS0VFUAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVOQ0lMX0JB
Q0tfUEFTU19ERVBUSF9QQVNTKSBpcyBjb250ZXh0LktFRVAKLVBBU1MgY29udGV4dC5nZXRJbnRl
Z2VyKGNvbnRleHQuU1RFTkNJTF9CQUNLX1JFRikgaXMgMAotUEFTUyBjb250ZXh0LmdldEludGVn
ZXIoY29udGV4dC5TVEVOQ0lMX0JBQ0tfVkFMVUVfTUFTSykgaXMgLTEKLVBBU1MgY29udGV4dC5n
ZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9CQUNLX1dSSVRFTUFTSykgaXMgLTEKLVBBU1MgY29u
dGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9CSVRTKSBpcyAwCi1QQVNTIGNvbnRleHQu
Z2V0SW50ZWdlcihjb250ZXh0LlNURU5DSUxfQ0xFQVJfVkFMVUUpIGlzIDAKLVBBU1MgY29udGV4
dC5nZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9GQUlMKSBpcyBjb250ZXh0LktFRVAKLVBBU1Mg
Y29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9GVU5DKSBpcyBjb250ZXh0LkFMV0FZ
UwotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVOQ0lMX1BBU1NfREVQVEhfRkFJ
TCkgaXMgY29udGV4dC5LRUVQCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlNURU5D
SUxfUEFTU19ERVBUSF9QQVNTKSBpcyBjb250ZXh0LktFRVAKLVBBU1MgY29udGV4dC5nZXRJbnRl
Z2VyKGNvbnRleHQuU1RFTkNJTF9SRUYpIGlzIDAKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNv
bnRleHQuU1RFTkNJTF9URVNUKSBpcyAwCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0
LlNURU5DSUxfVkFMVUVfTUFTSykgaXMgLTEKLVBBU1MgY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRl
eHQuU1RFTkNJTF9XUklURU1BU0spIGlzIC0xCi1QQVNTIGNvbnRleHQuZ2V0SW50ZWdlcihjb250
ZXh0LlRFWFRVUkVfQklORElOR18yRCkgaXMgMAotUEFTUyBjb250ZXh0LmdldEludGVnZXIoY29u
dGV4dC5URVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVApIGlzIDAKLVBBU1MgY29udGV4dC5nZXRJbnRl
Z2VyKGNvbnRleHQuVklFV1BPUlQpIGlzIDAKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29u
dGV4dC5BQ1RJVkVfVEVYVFVSRSkgaXMgY29udGV4dC5URVhUVVJFMAorUEFTUyAoY29udGV4dC5n
ZXRQYXJhbWV0ZXIoY29udGV4dC5BTElBU0VEX0xJTkVfV0lEVEhfUkFOR0UpWzBdID09IDEpIHx8
IChjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkFMSUFTRURfTElORV9XSURUSF9SQU5HRSlb
MV0gPT0gMSkgaXMgdHJ1ZQorUEFTUyAoY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5BTElB
U0VEX1BPSU5UX1NJWkVfUkFOR0UpWzBdID09IDEpIHx8IChjb250ZXh0LmdldFBhcmFtZXRlcihj
b250ZXh0LkFMSUFTRURfUE9JTlRfU0laRV9SQU5HRSlbMV0gPT0gMSkgaXMgdHJ1ZQorUEFTUyBj
b250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkFSUkFZX0JVRkZFUl9CSU5ESU5HKSBpcyBudWxs
CitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQkxFTkQpIGlzIGZhbHNlCitQQVNT
IGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQkxFTkRfQ09MT1IpIGlzIFswLCAwLCAwLCAw
XQorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkJMRU5EX0RTVF9BTFBIQSkgaXMg
MAorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkJMRU5EX0RTVF9SR0IpIGlzIDAK
K1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5CTEVORF9FUVVBVElPTl9BTFBIQSkg
aXMgY29udGV4dC5GVU5DX0FERAorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkJM
RU5EX0VRVUFUSU9OX1JHQikgaXMgY29udGV4dC5GVU5DX0FERAorUEFTUyBjb250ZXh0LmdldFBh
cmFtZXRlcihjb250ZXh0LkJMRU5EX1NSQ19BTFBIQSkgaXMgMQorUEFTUyBjb250ZXh0LmdldFBh
cmFtZXRlcihjb250ZXh0LkJMRU5EX1NSQ19SR0IpIGlzIDEKK1BBU1MgY29udGV4dC5nZXRQYXJh
bWV0ZXIoY29udGV4dC5DT0xPUl9DTEVBUl9WQUxVRSkgaXMgWzAsIDAsIDAsIDBdCitQQVNTIGNv
bnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQ09MT1JfV1JJVEVNQVNLKSBpcyBbMSwgMSwgMSwg
MV0KK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5DVUxMX0ZBQ0UpIGlzIGZhbHNl
CitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQ1VMTF9GQUNFX01PREUpIGlzIGNv
bnRleHQuQkFDSworUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkNVUlJFTlRfUFJP
R1JBTSkgaXMgbnVsbAorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkRFUFRIX0ZV
TkMpIGlzIGNvbnRleHQuTEVTUworUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkRF
UFRIX1JBTkdFKSBpcyBbMCwgMV0KK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5E
RVBUSF9URVNUKSBpcyBmYWxzZQorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkRF
UFRIX1dSSVRFTUFTSykgaXMgdHJ1ZQorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0
LkRJVEhFUikgaXMgdHJ1ZQorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkVMRU1F
TlRfQVJSQVlfQlVGRkVSX0JJTkRJTkcpIGlzIG51bGwKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0
ZXIoY29udGV4dC5GUk9OVF9GQUNFKSBpcyBjb250ZXh0LkNDVworUEFTUyBjb250ZXh0LmdldFBh
cmFtZXRlcihjb250ZXh0LkdFTkVSQVRFX01JUE1BUF9ISU5UKSBpcyBjb250ZXh0LkRPTlRfQ0FS
RQorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkxJTkVfV0lEVEgpIGlzIDEKK1BB
U1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5QT0xZR09OX09GRlNFVF9GQUNUT1IpIGlz
IDAKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5QT0xZR09OX09GRlNFVF9GSUxM
KSBpcyBmYWxzZQorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlBPTFlHT05fT0ZG
U0VUX1VOSVRTKSBpcyAwCitQQVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuUkVOREVS
QlVGRkVSX0JJTkRJTkcpIGlzIG51bGwKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4
dC5TQU1QTEVfQ09WRVJBR0VfSU5WRVJUKSBpcyBmYWxzZQorUEFTUyBjb250ZXh0LmdldFBhcmFt
ZXRlcihjb250ZXh0LlNBTVBMRV9DT1ZFUkFHRV9WQUxVRSkgaXMgMQorUEFTUyBjb250ZXh0Lmdl
dFBhcmFtZXRlcihjb250ZXh0LlNDSVNTT1JfQk9YKVswXSBpcyAwCitQQVNTIGNvbnRleHQuZ2V0
UGFyYW1ldGVyKGNvbnRleHQuU0NJU1NPUl9CT1gpWzFdIGlzIDAKK1BBU1MgY29udGV4dC5nZXRQ
YXJhbWV0ZXIoY29udGV4dC5TQ0lTU09SX1RFU1QpIGlzIGZhbHNlCitQQVNTIGNvbnRleHQuZ2V0
UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9CQUNLX0ZBSUwpIGlzIGNvbnRleHQuS0VFUAorUEFT
UyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5DSUxfQkFDS19GVU5DKSBpcyBjb250
ZXh0LkFMV0FZUworUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5DSUxfQkFD
S19QQVNTX0RFUFRIX0ZBSUwpIGlzIGNvbnRleHQuS0VFUAorUEFTUyBjb250ZXh0LmdldFBhcmFt
ZXRlcihjb250ZXh0LlNURU5DSUxfQkFDS19QQVNTX0RFUFRIX1BBU1MpIGlzIGNvbnRleHQuS0VF
UAorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5DSUxfQkFDS19SRUYpIGlz
IDAKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX0JBQ0tfVkFMVUVf
TUFTSykgaXMgMHhGRkZGRkZGRgorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNU
RU5DSUxfQkFDS19XUklURU1BU0spIGlzIDB4RkZGRkZGRkYKK1BBU1MgY29udGV4dC5nZXRQYXJh
bWV0ZXIoY29udGV4dC5TVEVOQ0lMX0JJVFMpIGlzIDAKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0
ZXIoY29udGV4dC5TVEVOQ0lMX0NMRUFSX1ZBTFVFKSBpcyAwCitQQVNTIGNvbnRleHQuZ2V0UGFy
YW1ldGVyKGNvbnRleHQuU1RFTkNJTF9GQUlMKSBpcyBjb250ZXh0LktFRVAKK1BBU1MgY29udGV4
dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX0ZVTkMpIGlzIGNvbnRleHQuQUxXQVlTCitQ
QVNTIGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9QQVNTX0RFUFRIX0ZBSUwp
IGlzIGNvbnRleHQuS0VFUAorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5D
SUxfUEFTU19ERVBUSF9QQVNTKSBpcyBjb250ZXh0LktFRVAKK1BBU1MgY29udGV4dC5nZXRQYXJh
bWV0ZXIoY29udGV4dC5TVEVOQ0lMX1JFRikgaXMgMAorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRl
cihjb250ZXh0LlNURU5DSUxfVEVTVCkgaXMgZmFsc2UKK1BBU1MgY29udGV4dC5nZXRQYXJhbWV0
ZXIoY29udGV4dC5TVEVOQ0lMX1ZBTFVFX01BU0spIGlzIDB4RkZGRkZGRkYKK1BBU1MgY29udGV4
dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX1dSSVRFTUFTSykgaXMgMHhGRkZGRkZGRgor
UEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlRFWFRVUkVfQklORElOR18yRCkgaXMg
bnVsbAorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlRFWFRVUkVfQklORElOR19D
VUJFX01BUCkgaXMgbnVsbAorUEFTUyBjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlZJRVdQ
T1JUKSBpcyBbMCwgMCwgMiwgMl0KIAogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQog
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC1nZXQtY2FsbHMuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC1nZXQtY2FsbHMu
aHRtbAkocmV2aXNpb24gNTEzNDEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9n
bC1nZXQtY2FsbHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNyw3ICs3LDcgQEAKIDxib2R5Pgog
PGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgogPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci08
Y2FudmFzIGlkPSJjYW52YXMiPiA8L2NhbnZhcz4KKzxjYW52YXMgaWQ9ImNhbnZhcyIgd2lkdGg9
IjIiIGhlaWdodD0iMiI+IDwvY2FudmFzPgogCiA8c2NyaXB0PgogCkBAIC0zOCw2MCArMzgsNjEg
QEAgZWxzZSB7CiAKICAgICBkZWJ1ZygiIik7CiAgICAgZGVidWcoIkNoZWNrIGRlZmF1bHQgdmFs
dWVzIik7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkFDVElWRV9U
RVhUVVJFKScsICdjb250ZXh0LlRFWFRVUkUwJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0
SW50ZWdlcihjb250ZXh0LkFMSUFTRURfTElORV9XSURUSF9SQU5HRSknLCAnMScpOwotICAgIHNo
b3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5BTElBU0VEX1BPSU5UX1NJWkVfUkFO
R0UpJywgJzEnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuQVJS
QVlfQlVGRkVSX0JJTkRJTkcpJywgJzAnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRl
Z2VyKGNvbnRleHQuQkxFTkQpJywgJzAnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRl
Z2VyKGNvbnRleHQuQkxFTkRfQ09MT1IpJywgJzAnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5n
ZXRJbnRlZ2VyKGNvbnRleHQuQkxFTkRfRFNUX0FMUEhBKScsICcwJyk7Ci0gICAgc2hvdWxkQmUo
J2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkJMRU5EX0RTVF9SR0IpJywgJzAnKTsKLSAgICBz
aG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuQkxFTkRfRVFVQVRJT05fQUxQSEEp
JywgJ2NvbnRleHQuRlVOQ19BREQnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2Vy
KGNvbnRleHQuQkxFTkRfRVFVQVRJT05fUkdCKScsICdjb250ZXh0LkZVTkNfQUREJyk7Ci0gICAg
c2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkJMRU5EX1NSQ19BTFBIQSknLCAn
MScpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5CTEVORF9TUkNf
UkdCKScsICcxJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkNP
TE9SX0NMRUFSX1ZBTFVFKScsICcwJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdl
cihjb250ZXh0LkNPTE9SX1dSSVRFTUFTSyknLCAnMScpOwotICAgIHNob3VsZEJlKCdjb250ZXh0
LmdldEludGVnZXIoY29udGV4dC5DVUxMX0ZBQ0UpJywgJzAnKTsKLSAgICBzaG91bGRCZSgnY29u
dGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuQ1VMTF9GQUNFX01PREUpJywgJ2NvbnRleHQuQkFDSycp
OwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5DVVJSRU5UX1BST0dS
QU0pJywgJzAnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuREVQ
VEhfRlVOQyknLCAnY29udGV4dC5MRVNTJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50
ZWdlcihjb250ZXh0LkRFUFRIX1JBTkdFKScsICcwJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQu
Z2V0SW50ZWdlcihjb250ZXh0LkRFUFRIX1RFU1QpJywgJzAnKTsKLSAgICBzaG91bGRCZSgnY29u
dGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuREVQVEhfV1JJVEVNQVNLKScsICcxJyk7Ci0gICAgc2hv
dWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LkRJVEhFUiknLCAnMScpOwotICAgIHNo
b3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5FTEVNRU5UX0FSUkFZX0JVRkZFUl9C
SU5ESU5HKScsICcwJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0
LkZST05UX0ZBQ0UpJywgJ2NvbnRleHQuQ0NXJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0
SW50ZWdlcihjb250ZXh0LkdFTkVSQVRFX01JUE1BUF9ISU5UKScsICdjb250ZXh0LkRPTlRfQ0FS
RScpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5MSU5FX1dJRFRI
KScsICcxJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlBPTFlH
T05fT0ZGU0VUX0ZBQ1RPUiknLCAnMCcpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVn
ZXIoY29udGV4dC5QT0xZR09OX09GRlNFVF9GSUxMKScsICcwJyk7Ci0gICAgc2hvdWxkQmUoJ2Nv
bnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlBPTFlHT05fT0ZGU0VUX1VOSVRTKScsICcwJyk7Ci0g
ICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlJFTkRFUkJVRkZFUl9CSU5E
SU5HX0VYVCknLCAnMCcpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4
dC5TQU1QTEVfQ09WRVJBR0VfSU5WRVJUKScsICcwJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQu
Z2V0SW50ZWdlcihjb250ZXh0LlNBTVBMRV9DT1ZFUkFHRV9WQUxVRSknLCAnMScpOwotICAgIHNo
b3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TQ0lTU09SX0JPWCknLCAnMCcpOwot
ICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TQ0lTU09SX1RFU1QpJywg
JzAnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9C
QUNLX0ZBSUwpJywgJ2NvbnRleHQuS0VFUCcpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldElu
dGVnZXIoY29udGV4dC5TVEVOQ0lMX0JBQ0tfRlVOQyknLCAnY29udGV4dC5BTFdBWVMnKTsKLSAg
ICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9CQUNLX1BBU1Nf
REVQVEhfRkFJTCknLCAnY29udGV4dC5LRUVQJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0
SW50ZWdlcihjb250ZXh0LlNURU5DSUxfQkFDS19QQVNTX0RFUFRIX1BBU1MpJywgJ2NvbnRleHQu
S0VFUCcpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVOQ0lM
X0JBQ0tfUkVGKScsICcwJyk7Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250
ZXh0LlNURU5DSUxfQkFDS19WQUxVRV9NQVNLKScsICctMScpOwotICAgIHNob3VsZEJlKCdjb250
ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLKScsICctMScpOwot
ICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVOQ0lMX0JJVFMpJywg
JzAnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9D
TEVBUl9WQUxVRSknLCAnMCcpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29u
dGV4dC5TVEVOQ0lMX0ZBSUwpJywgJ2NvbnRleHQuS0VFUCcpOwotICAgIHNob3VsZEJlKCdjb250
ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVOQ0lMX0ZVTkMpJywgJ2NvbnRleHQuQUxXQVlTJyk7
Ci0gICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlNURU5DSUxfUEFTU19E
RVBUSF9GQUlMKScsICdjb250ZXh0LktFRVAnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJ
bnRlZ2VyKGNvbnRleHQuU1RFTkNJTF9QQVNTX0RFUFRIX1BBU1MpJywgJ2NvbnRleHQuS0VFUCcp
OwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVOQ0lMX1JFRikn
LCAnMCcpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4dC5TVEVOQ0lM
X1RFU1QpJywgJzAnKTsKLSAgICBzaG91bGRCZSgnY29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQu
U1RFTkNJTF9WQUxVRV9NQVNLKScsICctMScpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldElu
dGVnZXIoY29udGV4dC5TVEVOQ0lMX1dSSVRFTUFTSyknLCAnLTEnKTsKLSAgICBzaG91bGRCZSgn
Y29udGV4dC5nZXRJbnRlZ2VyKGNvbnRleHQuVEVYVFVSRV9CSU5ESU5HXzJEKScsICcwJyk7Ci0g
ICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0SW50ZWdlcihjb250ZXh0LlRFWFRVUkVfQklORElOR19D
VUJFX01BUCknLCAnMCcpOwotICAgIHNob3VsZEJlKCdjb250ZXh0LmdldEludGVnZXIoY29udGV4
dC5WSUVXUE9SVCknLCAnMCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihj
b250ZXh0LkFDVElWRV9URVhUVVJFKScsICdjb250ZXh0LlRFWFRVUkUwJyk7CisgICAgc2hvdWxk
QmUoJyhjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkFMSUFTRURfTElORV9XSURUSF9SQU5H
RSlbMF0gPT0gMSkgfHwgKGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQUxJQVNFRF9MSU5F
X1dJRFRIX1JBTkdFKVsxXSA9PSAxKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJyhjb250ZXh0
LmdldFBhcmFtZXRlcihjb250ZXh0LkFMSUFTRURfUE9JTlRfU0laRV9SQU5HRSlbMF0gPT0gMSkg
fHwgKGNvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdF
KVsxXSA9PSAxKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVy
KGNvbnRleHQuQVJSQVlfQlVGRkVSX0JJTkRJTkcpJywgJ251bGwnKTsKKyAgICBzaG91bGRCZSgn
Y29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5CTEVORCknLCAnZmFsc2UnKTsKKyAgICBzaG91
bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5CTEVORF9DT0xPUiknLCAnWzAsIDAs
IDAsIDBdJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQkxF
TkRfRFNUX0FMUEhBKScsICcwJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVy
KGNvbnRleHQuQkxFTkRfRFNUX1JHQiknLCAnMCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0Lmdl
dFBhcmFtZXRlcihjb250ZXh0LkJMRU5EX0VRVUFUSU9OX0FMUEhBKScsICdjb250ZXh0LkZVTkNf
QUREJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQkxFTkRf
RVFVQVRJT05fUkdCKScsICdjb250ZXh0LkZVTkNfQUREJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRl
eHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQkxFTkRfU1JDX0FMUEhBKScsICcxJyk7CisgICAgc2hv
dWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuQkxFTkRfU1JDX1JHQiknLCAnMScp
OworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkNPTE9SX0NMRUFS
X1ZBTFVFKScsICdbMCwgMCwgMCwgMF0nKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJh
bWV0ZXIoY29udGV4dC5DT0xPUl9XUklURU1BU0spJywgJ1sxLCAxLCAxLCAxXScpOworICAgIHNo
b3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LkNVTExfRkFDRSknLCAnZmFsc2Un
KTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5DVUxMX0ZBQ0Vf
TU9ERSknLCAnY29udGV4dC5CQUNLJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1l
dGVyKGNvbnRleHQuQ1VSUkVOVF9QUk9HUkFNKScsICdudWxsJyk7CisgICAgc2hvdWxkQmUoJ2Nv
bnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuREVQVEhfRlVOQyknLCAnY29udGV4dC5MRVNTJyk7
CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuREVQVEhfUkFOR0Up
JywgJ1swLCAxXScpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0
LkRFUFRIX1RFU1QpJywgJ2ZhbHNlJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1l
dGVyKGNvbnRleHQuREVQVEhfV1JJVEVNQVNLKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ2Nv
bnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuRElUSEVSKScsICd0cnVlJyk7CisgICAgc2hvdWxk
QmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklO
RElORyknLCAnbnVsbCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250
ZXh0LkZST05UX0ZBQ0UpJywgJ2NvbnRleHQuQ0NXJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQu
Z2V0UGFyYW1ldGVyKGNvbnRleHQuR0VORVJBVEVfTUlQTUFQX0hJTlQpJywgJ2NvbnRleHQuRE9O
VF9DQVJFJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuTElO
RV9XSURUSCknLCAnMScpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250
ZXh0LlBPTFlHT05fT0ZGU0VUX0ZBQ1RPUiknLCAnMCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0
LmdldFBhcmFtZXRlcihjb250ZXh0LlBPTFlHT05fT0ZGU0VUX0ZJTEwpJywgJ2ZhbHNlJyk7Cisg
ICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuUE9MWUdPTl9PRkZTRVRf
VU5JVFMpJywgJzAnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4
dC5SRU5ERVJCVUZGRVJfQklORElORyknLCAnbnVsbCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0
LmdldFBhcmFtZXRlcihjb250ZXh0LlNBTVBMRV9DT1ZFUkFHRV9JTlZFUlQpJywgJ2ZhbHNlJyk7
CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU0FNUExFX0NPVkVS
QUdFX1ZBTFVFKScsICcxJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNv
bnRleHQuU0NJU1NPUl9CT1gpWzBdJywgJzAnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQ
YXJhbWV0ZXIoY29udGV4dC5TQ0lTU09SX0JPWClbMV0nLCAnMCcpOworICAgIHNob3VsZEJlKCdj
b250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNDSVNTT1JfVEVTVCknLCAnZmFsc2UnKTsKKyAg
ICBzaG91bGRCZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX0JBQ0tfRkFJ
TCknLCAnY29udGV4dC5LRUVQJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVy
KGNvbnRleHQuU1RFTkNJTF9CQUNLX0ZVTkMpJywgJ2NvbnRleHQuQUxXQVlTJyk7CisgICAgc2hv
dWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9CQUNLX1BBU1NfREVQ
VEhfRkFJTCknLCAnY29udGV4dC5LRUVQJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFy
YW1ldGVyKGNvbnRleHQuU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTUyknLCAnY29udGV4dC5L
RUVQJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJ
TF9CQUNLX1JFRiknLCAnMCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihj
b250ZXh0LlNURU5DSUxfQkFDS19WQUxVRV9NQVNLKScsICcweEZGRkZGRkZGJyk7CisgICAgc2hv
dWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9CQUNLX1dSSVRFTUFT
SyknLCAnMHhGRkZGRkZGRicpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihj
b250ZXh0LlNURU5DSUxfQklUUyknLCAnMCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBh
cmFtZXRlcihjb250ZXh0LlNURU5DSUxfQ0xFQVJfVkFMVUUpJywgJzAnKTsKKyAgICBzaG91bGRC
ZSgnY29udGV4dC5nZXRQYXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX0ZBSUwpJywgJ2NvbnRleHQu
S0VFUCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5D
SUxfRlVOQyknLCAnY29udGV4dC5BTFdBWVMnKTsKKyAgICBzaG91bGRCZSgnY29udGV4dC5nZXRQ
YXJhbWV0ZXIoY29udGV4dC5TVEVOQ0lMX1BBU1NfREVQVEhfRkFJTCknLCAnY29udGV4dC5LRUVQ
Jyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9Q
QVNTX0RFUFRIX1BBU1MpJywgJ2NvbnRleHQuS0VFUCcpOworICAgIHNob3VsZEJlKCdjb250ZXh0
LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5DSUxfUkVGKScsICcwJyk7CisgICAgc2hvdWxkQmUo
J2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuU1RFTkNJTF9URVNUKScsICdmYWxzZScpOwor
ICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRlcihjb250ZXh0LlNURU5DSUxfVkFMVUVf
TUFTSyknLCAnMHhGRkZGRkZGRicpOworICAgIHNob3VsZEJlKCdjb250ZXh0LmdldFBhcmFtZXRl
cihjb250ZXh0LlNURU5DSUxfV1JJVEVNQVNLKScsICcweEZGRkZGRkZGJyk7CisgICAgc2hvdWxk
QmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuVEVYVFVSRV9CSU5ESU5HXzJEKScsICdu
dWxsJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0UGFyYW1ldGVyKGNvbnRleHQuVEVYVFVS
RV9CSU5ESU5HX0NVQkVfTUFQKScsICdudWxsJyk7CisgICAgc2hvdWxkQmUoJ2NvbnRleHQuZ2V0
UGFyYW1ldGVyKGNvbnRleHQuVklFV1BPUlQpJywgJ1swLCAwLCAyLCAyXScpOwogfQogCiBkZWJ1
ZygiIik7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9nbC1vYmplY3QtZ2V0
LWNhbGxzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy93ZWJnbC9nbC1vYmplY3QtZ2V0LWNhbGxzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLW9iamVjdC1nZXQtY2FsbHMtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc5IEBACitUZXN0IG9mIGdldCBjYWxscyBh
Z2FpbnN0IEdMIG9iamVjdHMgbGlrZSBnZXRCdWZmZXJQYXJhbWV0ZXIsIGV0Yy4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIGdsLmdldEJ1ZmZlclBhcmFtZXRlcihnbC5BUlJB
WV9CVUZGRVIsIGdsLkJVRkZFUl9TSVpFKSBpcyAxNgorUEFTUyBnbC5nZXRCdWZmZXJQYXJhbWV0
ZXIoZ2wuQVJSQVlfQlVGRkVSLCBnbC5CVUZGRVJfVVNBR0UpIGlzIGdsLkRZTkFNSUNfRFJBVwor
UEFTUyBnbC5nZXRFcnJvcigpIGlzIDAKK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyAwCitQQVNTIGds
LmdldEVycm9yKCkgaXMgMAorUEFTUyBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0
ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5GUkFNRUJVRkZFUl9B
VFRBQ0hNRU5UX09CSkVDVF9UWVBFKSBpcyBnbC5URVhUVVJFCitQQVNTIGdsLmdldEZyYW1lYnVm
ZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVO
VDAsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUUpIGlzIG5vbi1udWxsLgor
UEFTUyBnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIs
IGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVf
TEVWRUwpIGlzIDAKK1BBU1MgZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGds
LkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuRlJBTUVCVUZGRVJfQVRUQUNI
TUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0UpIGlzIDAKK1BBU1MgZ2wuZ2V0RnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVSLCBnbC5ERVBUSF9BVFRBQ0hNRU5ULCBn
bC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9UWVBFKSBpcyBnbC5SRU5ERVJCVUZGRVIK
K1BBU1MgZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKGdsLkZSQU1FQlVGRkVS
LCBnbC5ERVBUSF9BVFRBQ0hNRU5ULCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9O
QU1FKSBpcyBub24tbnVsbC4KK1BBU1MgZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihzdGFuZGFyZFBy
b2dyYW0sIGdsLkRFTEVURV9TVEFUVVMpIGlzIGZhbHNlCitQQVNTIGdsLmdldFByb2dyYW1QYXJh
bWV0ZXIoc3RhbmRhcmRQcm9ncmFtLCBnbC5MSU5LX1NUQVRVUykgaXMgdHJ1ZQorUEFTUyB0eXBl
b2YgZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihzdGFuZGFyZFByb2dyYW0sIGdsLlZBTElEQVRFX1NU
QVRVUykgaXMgImJvb2xlYW4iCitQQVNTIHR5cGVvZiBnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHN0
YW5kYXJkUHJvZ3JhbSwgZ2wuSU5GT19MT0dfTEVOR1RIKSBpcyAibnVtYmVyIgorUEFTUyBnbC5n
ZXRQcm9ncmFtUGFyYW1ldGVyKHN0YW5kYXJkUHJvZ3JhbSwgZ2wuQVRUQUNIRURfU0hBREVSUykg
aXMgMgorUEFTUyBnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHN0YW5kYXJkUHJvZ3JhbSwgZ2wuQUNU
SVZFX0FUVFJJQlVURVMpIGlzIDIKK1BBU1MgZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihzdGFuZGFy
ZFByb2dyYW0sIGdsLkFDVElWRV9BVFRSSUJVVEVfTUFYX0xFTkdUSCkgaXMgbm9uLXplcm8uCitQ
QVNTIGdsLmdldFByb2dyYW1QYXJhbWV0ZXIoc3RhbmRhcmRQcm9ncmFtLCBnbC5BQ1RJVkVfVU5J
Rk9STVMpIGlzIDEKK1BBU1MgZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihzdGFuZGFyZFByb2dyYW0s
IGdsLkFDVElWRV9VTklGT1JNX01BWF9MRU5HVEgpIGlzIG5vbi16ZXJvLgorUEFTUyBnbC5nZXRS
ZW5kZXJidWZmZXJQYXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBnbC5SRU5ERVJCVUZGRVJfV0lE
VEgpIGlzIDIKK1BBU1MgZ2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZF
UiwgZ2wuUkVOREVSQlVGRkVSX0hFSUdIVCkgaXMgMgorUEFTUyBnbC5nZXRSZW5kZXJidWZmZXJQ
YXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBnbC5SRU5ERVJCVUZGRVJfSU5URVJOQUxfRk9STUFU
KSBpcyBub24temVyby4KK1BBU1MgZ2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKGdsLlJFTkRF
UkJVRkZFUiwgZ2wuUkVOREVSQlVGRkVSX0RFUFRIX1NJWkUpIGlzIG5vbi16ZXJvLgorUEFTUyBn
bC5nZXRFcnJvcigpIGlzIDAKK1BBU1MgZ2wuZ2V0RXJyb3IoKSBpcyAwCitQQVNTIGdsLmdldFJl
bmRlcmJ1ZmZlclBhcmFtZXRlcihnbC5SRU5ERVJCVUZGRVIsIGdsLlJFTkRFUkJVRkZFUl9SRURf
U0laRSkgaXMgbm9uLXplcm8uCitQQVNTIGdsLmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcihnbC5S
RU5ERVJCVUZGRVIsIGdsLlJFTkRFUkJVRkZFUl9HUkVFTl9TSVpFKSBpcyBub24temVyby4KK1BB
U1MgZ2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkVOREVS
QlVGRkVSX0JMVUVfU0laRSkgaXMgbm9uLXplcm8uCitQQVNTIGdsLmdldFJlbmRlcmJ1ZmZlclBh
cmFtZXRlcihnbC5SRU5ERVJCVUZGRVIsIGdsLlJFTkRFUkJVRkZFUl9BTFBIQV9TSVpFKSBpcyBu
b24temVyby4KK1BBU1MgZ2wuZ2V0U2hhZGVyUGFyYW1ldGVyKHN0YW5kYXJkVmVydCwgZ2wuU0hB
REVSX1RZUEUpIGlzIGdsLlZFUlRFWF9TSEFERVIKK1BBU1MgZ2wuZ2V0U2hhZGVyUGFyYW1ldGVy
KHN0YW5kYXJkVmVydCwgZ2wuREVMRVRFX1NUQVRVUykgaXMgZmFsc2UKK1BBU1MgZ2wuZ2V0U2hh
ZGVyUGFyYW1ldGVyKHN0YW5kYXJkVmVydCwgZ2wuQ09NUElMRV9TVEFUVVMpIGlzIHRydWUKK1BB
U1MgdHlwZW9mIGdsLmdldFNoYWRlclBhcmFtZXRlcihzdGFuZGFyZFZlcnQsIGdsLklORk9fTE9H
X0xFTkdUSCkgaXMgIm51bWJlciIKK1BBU1MgZ2wuZ2V0U2hhZGVyUGFyYW1ldGVyKHN0YW5kYXJk
VmVydCwgZ2wuU0hBREVSX1NPVVJDRV9MRU5HVEgpIGlzIG5vbi16ZXJvLgorUEFTUyBnbC5nZXRU
ZXhQYXJhbWV0ZXIoZ2wuVEVYVFVSRV8yRCwgZ2wuVEVYVFVSRV9NQUdfRklMVEVSKSBpcyBnbC5O
RUFSRVNUCitQQVNTIGdsLmdldFRleFBhcmFtZXRlcihnbC5URVhUVVJFXzJELCBnbC5URVhUVVJF
X01JTl9GSUxURVIpIGlzIGdsLk5FQVJFU1QKK1BBU1MgZ2wuZ2V0VGV4UGFyYW1ldGVyKGdsLlRF
WFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9TKSBpcyBnbC5DTEFNUF9UT19FREdFCitQQVNTIGds
LmdldFRleFBhcmFtZXRlcihnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfVCkgaXMgZ2wu
Q0xBTVBfVE9fRURHRQorUEFTUyBnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKGJvb2xQcm9ncmFtLCBn
bC5MSU5LX1NUQVRVUykgaXMgdHJ1ZQorUEFTUyBnbC5nZXRFcnJvcigpIGlzIDAKK1BBU1MgZ2wu
Z2V0VW5pZm9ybShib29sUHJvZ3JhbSwgYnZhbExvYykgaXMgdHJ1ZQorUEFTUyBnbC5nZXRVbmlm
b3JtKGJvb2xQcm9ncmFtLCBidmFsMkxvYykgaXMgWzEsIDBdCitQQVNTIGdsLmdldFVuaWZvcm0o
Ym9vbFByb2dyYW0sIGJ2YWwzTG9jKSBpcyBbMSwgMCwgMV0KK1BBU1MgZ2wuZ2V0VW5pZm9ybShi
b29sUHJvZ3JhbSwgYnZhbDRMb2MpIGlzIFsxLCAwLCAxLCAwXQorUEFTUyBnbC5nZXRQcm9ncmFt
UGFyYW1ldGVyKGludFByb2dyYW0sIGdsLkxJTktfU1RBVFVTKSBpcyB0cnVlCitQQVNTIGdsLmdl
dEVycm9yKCkgaXMgMAorUEFTUyBnbC5nZXRVbmlmb3JtKGludFByb2dyYW0sIGl2YWxMb2MpIGlz
IDEKK1BBU1MgZ2wuZ2V0VW5pZm9ybShpbnRQcm9ncmFtLCBpdmFsMkxvYykgaXMgWzIsIDNdCitQ
QVNTIGdsLmdldFVuaWZvcm0oaW50UHJvZ3JhbSwgaXZhbDNMb2MpIGlzIFs0LCA1LCA2XQorUEFT
UyBnbC5nZXRVbmlmb3JtKGludFByb2dyYW0sIGl2YWw0TG9jKSBpcyBbNywgOCwgOSwgMTBdCitQ
QVNTIGdsLmdldFByb2dyYW1QYXJhbWV0ZXIoZmxvYXRQcm9ncmFtLCBnbC5MSU5LX1NUQVRVUykg
aXMgdHJ1ZQorUEFTUyBnbC5nZXRFcnJvcigpIGlzIDAKK1BBU1MgZ2wuZ2V0VW5pZm9ybShmbG9h
dFByb2dyYW0sIGZ2YWxMb2MpIGlzIDExCitQQVNTIGdsLmdldFVuaWZvcm0oZmxvYXRQcm9ncmFt
LCBmdmFsMkxvYykgaXMgWzEyLCAxM10KK1BBU1MgZ2wuZ2V0VW5pZm9ybShmbG9hdFByb2dyYW0s
IGZ2YWwzTG9jKSBpcyBbMTQsIDE1LCAxNl0KK1BBU1MgZ2wuZ2V0VW5pZm9ybShmbG9hdFByb2dy
YW0sIGZ2YWw0TG9jKSBpcyBbMTcsIDE4LCAxOSwgMjBdCitQQVNTIGdsLmdldFByb2dyYW1QYXJh
bWV0ZXIobWF0UHJvZ3JhbSwgZ2wuTElOS19TVEFUVVMpIGlzIHRydWUKK1BBU1MgZ2wuZ2V0RXJy
b3IoKSBpcyAwCitQQVNTIGdsLmdldFVuaWZvcm0obWF0UHJvZ3JhbSwgbXZhbDJMb2MpIGlzIFsx
LCAyLCAzLCA0XQorUEFTUyBnbC5nZXRVbmlmb3JtKG1hdFByb2dyYW0sIG12YWwzTG9jKSBpcyBb
NSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTNdCitQQVNTIGdsLmdldFVuaWZvcm0obWF0UHJv
Z3JhbSwgbXZhbDRMb2MpIGlzIFsxNCwgMTUsIDE2LCAxNywgMTgsIDE5LCAyMCwgMjEsIDIyLCAy
MywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOV0KK1BBU1MgZ2wuZ2V0VmVydGV4QXR0cmliKDEsIGds
LlZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkcpIGlzIG5vbi1udWxsLgorUEFTUyBn
bC5nZXRWZXJ0ZXhBdHRyaWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVEKSBpcyB0
cnVlCitQQVNTIGdsLmdldFZlcnRleEF0dHJpYigxLCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX1NJ
WkUpIGlzIDQKK1BBU1MgKGdsLmdldFZlcnRleEF0dHJpYigxLCBnbC5WRVJURVhfQVRUUklCX0FS
UkFZX1NUUklERSkgPT0gMCkgfHwgKGdsLmdldFZlcnRleEF0dHJpYigxLCBnbC5WRVJURVhfQVRU
UklCX0FSUkFZX1NUUklERSkgPT0gNCAqIGdsLnNpemVJbkJ5dGVzKGdsLkZMT0FUKSkgaXMgdHJ1
ZQorUEFTUyBnbC5nZXRWZXJ0ZXhBdHRyaWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBF
KSBpcyBnbC5GTE9BVAorUEFTUyBnbC5nZXRWZXJ0ZXhBdHRyaWIoMSwgZ2wuVkVSVEVYX0FUVFJJ
Ql9BUlJBWV9OT1JNQUxJWkVEKSBpcyBmYWxzZQorUEFTUyBnbC5nZXRWZXJ0ZXhBdHRyaWIoMSwg
Z2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVEKSBpcyBmYWxzZQorUEFTUyBnbC5nZXRWZXJ0
ZXhBdHRyaWIoMSwgZ2wuQ1VSUkVOVF9WRVJURVhfQVRUUklCKSBpcyBbNSwgNiwgNywgOF0KK1BB
U1MgZ2wuZ2V0RXJyb3IoKSBpcyAwCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZ2wt
b2JqZWN0LWdldC1jYWxscy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2Fu
dmFzL3dlYmdsL2dsLW9iamVjdC1nZXQtY2FsbHMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2dsLW9iamVjdC1nZXQtY2FsbHMuaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxNSBAQAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvd2ViZ2wtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorCis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2dsLW9iamVjdC1nZXQtY2FsbHMuanMi
Pjwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC9pbmNvcnJlY3QtY29udGV4dC1vYmplY3QtYmVoYXZpb3VyLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9pbmNvcnJl
Y3QtY29udGV4dC1vYmplY3QtYmVoYXZpb3VyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNTEzNDEp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9pbmNvcnJlY3QtY29udGV4dC1vYmpl
Y3QtYmVoYXZpb3VyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTcsMTcgKzE3LDEy
IEBAIFBBU1MgY29udGV4dEEuYmluZFJlbmRlcmJ1ZmZlcihjb250ZXh0QS4KIFBBU1MgY29udGV4
dEEuYmluZFRleHR1cmUoY29udGV4dEEuVEVYVFVSRV8yRCwgdGV4dHVyZUIpIHRocmV3IGV4Y2Vw
dGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCiBQQVNTIGNv
bnRleHRBLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGNvbnRleHRBLkZSQU1FQlVGRkVSLCBjb250
ZXh0QS5ERVBUSF9BVFRBQ0hNRU5ULCBjb250ZXh0QS5SRU5ERVJCVUZGRVIsIHJlbmRlckJ1ZmZl
ckIpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRp
b24gMTcuCiBQQVNTIGNvbnRleHRBLmZyYW1lYnVmZmVyVGV4dHVyZTJEKGNvbnRleHRBLkZSQU1F
QlVGRkVSLCBjb250ZXh0QS5DT0xPUl9BVFRBQ0hNRU5UMCwgY29udGV4dEEuVEVYVFVSRV8yRCwg
dGV4dHVyZUIsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERP
TSBFeGNlcHRpb24gMTcuCi1QQVNTIGNvbnRleHRBLmdldFByb2dyYW1pKHByb2dyYW1CLCAwKSB0
aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3
LgotUEFTUyBjb250ZXh0QS5nZXRQcm9ncmFtaXYocHJvZ3JhbUIsIDApIHRocmV3IGV4Y2VwdGlv
biBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCitQQVNTIGNvbnRl
eHRBLmdldFByb2dyYW1QYXJhbWV0ZXIocHJvZ3JhbUIsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJv
cjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCiBQQVNTIGNvbnRleHRBLmdl
dFByb2dyYW1JbmZvTG9nKHByb2dyYW1CLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVf
TUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0QS5nZXRTaGFkZXJp
KHNoYWRlckIsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERP
TSBFeGNlcHRpb24gMTcuCi1QQVNTIGNvbnRleHRBLmdldFNoYWRlcml2KHNoYWRlckIsIDApIHRo
cmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcu
CitQQVNTIGNvbnRleHRBLmdldFNoYWRlclBhcmFtZXRlcihzaGFkZXJCLCAwKSB0aHJldyBleGNl
cHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBj
b250ZXh0QS5nZXRTaGFkZXJJbmZvTG9nKHNoYWRlckIsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJv
cjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCiBQQVNTIGNvbnRleHRBLmdl
dFNoYWRlclNvdXJjZShzaGFkZXJCKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFU
Q0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0QS5nZXRVbmlmb3JtZihwcm9n
cmFtQiwgbG9jYXRpb25BKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJS
OiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0QS5nZXRVbmlmb3JtZnYocHJvZ3JhbUIs
IGxvY2F0aW9uQSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9N
IEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4dEEuZ2V0VW5pZm9ybWkocHJvZ3JhbUIsIGxvY2F0
aW9uQSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2Vw
dGlvbiAxNy4KLVBBU1MgY29udGV4dEEuZ2V0VW5pZm9ybWl2KHByb2dyYW1CLCBsb2NhdGlvbkEp
IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24g
MTcuCitQQVNTIGNvbnRleHRBLmdldFVuaWZvcm0ocHJvZ3JhbUIsIGxvY2F0aW9uQSkgdGhyZXcg
ZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KIFBB
U1MgY29udGV4dEEuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW1CLCAndV9tb2RlbFZpZXdQcm9q
TWF0cml4JykgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4
Y2VwdGlvbiAxNy4KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIApJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvbnVsbC1vYmplY3QtYmVoYXZpb3VyLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9udWxsLW9i
amVjdC1iZWhhdmlvdXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA1MTM0MSkKKysrIExheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3dlYmdsL251bGwtb2JqZWN0LWJlaGF2aW91ci1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTE4LDE3ICsxOCwxMiBAQCBQQVNTIGNvbnRleHQuYmluZFJlbmRl
cmJ1ZmZlcihjb250ZXh0LlJFCiBQQVNTIGNvbnRleHQuYmluZFRleHR1cmUoY29udGV4dC5URVhU
VVJFXzJELCAwKSBpcyB1bmRlZmluZWQuCiBQQVNTIGNvbnRleHQuZnJhbWVidWZmZXJSZW5kZXJi
dWZmZXIoY29udGV4dC5GUkFNRUJVRkZFUiwgY29udGV4dC5ERVBUSF9BVFRBQ0hNRU5ULCBjb250
ZXh0LlJFTkRFUkJVRkZFUiwgMCkgaXMgdW5kZWZpbmVkLgogUEFTUyBjb250ZXh0LmZyYW1lYnVm
ZmVyVGV4dHVyZTJEKGNvbnRleHQuRlJBTUVCVUZGRVIsIGNvbnRleHQuQ09MT1JfQVRUQUNITUVO
VDAsIGNvbnRleHQuVEVYVFVSRV8yRCwgMCwgMCkgaXMgdW5kZWZpbmVkLgotUEFTUyBjb250ZXh0
LmdldFByb2dyYW1pKHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01J
U01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4dC5nZXRQcm9ncmFtaXYo
dW5kZWZpbmVkLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBE
T00gRXhjZXB0aW9uIDE3LgorUEFTUyBjb250ZXh0LmdldFByb2dyYW1QYXJhbWV0ZXIodW5kZWZp
bmVkLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhj
ZXB0aW9uIDE3LgogUEFTUyBjb250ZXh0LmdldFByb2dyYW1JbmZvTG9nKHVuZGVmaW5lZCwgMCkg
dGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAx
Ny4KLVBBU1MgY29udGV4dC5nZXRTaGFkZXJpKHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9u
IEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4
dC5nZXRTaGFkZXJpdih1bmRlZmluZWQsIDApIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9N
SVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCitQQVNTIGNvbnRleHQuZ2V0U2hhZGVyUGFy
YW1ldGVyKHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENI
X0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KIFBBU1MgY29udGV4dC5nZXRTaGFkZXJJbmZvTG9nKHVu
ZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9N
IEV4Y2VwdGlvbiAxNy4KIFBBU1MgY29udGV4dC5nZXRTaGFkZXJTb3VyY2UodW5kZWZpbmVkKSB0
aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3
LgotUEFTUyBjb250ZXh0LmdldFVuaWZvcm1mKHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9u
IEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4
dC5nZXRVbmlmb3JtZnYodW5kZWZpbmVkLCAwKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVf
TUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgotUEFTUyBjb250ZXh0LmdldFVuaWZvcm1p
KHVuZGVmaW5lZCwgMCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjog
RE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgY29udGV4dC5nZXRVbmlmb3JtaXYodW5kZWZpbmVkLCAw
KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9u
IDE3LgorUEFTUyBjb250ZXh0LmdldFVuaWZvcm0odW5kZWZpbmVkLCAwKSB0aHJldyBleGNlcHRp
b24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBjb250
ZXh0LmdldFVuaWZvcm1Mb2NhdGlvbih1bmRlZmluZWQsICdmb28nKSB0aHJldyBleGNlcHRpb24g
RXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJn
bC90cmlhbmdsZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dl
YmdsL3RyaWFuZ2xlLmh0bWwJKHJldmlzaW9uIDUxMzQxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvd2ViZ2wvdHJpYW5nbGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNjQsMTEgKzY0LDEx
IEBACiAgICAgICAgICAgICB2YXIgb2Zmc2V0ID0gKDE1KjUwKzIwKSAqIDQ7CiAgICAgICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IDEwOyArK2kpCiAgICAgICAgICAgICAgICAgaWYgKGJ1Zltv
ZmZzZXQraSo0XSAhPSAyNTUgfHwgYnVmW29mZnNldCtpKjQrMV0gIT0gMCB8fCBidWZbb2Zmc2V0
K2kqNCsyXSAhPSAwIHx8IGJ1ZltvZmZzZXQraSo0KzNdICE9IDI1NSkgewotICAgICAgICAgICAg
ICAgICAgICBmYWlsKDIwLCAxNSwgYnVmLCAiKDI1NSwwLDAsMjU1KSIpOworICAgICAgICAgICAg
ICAgICAgICBmYWlsKDIwICsgaSwgMTUsIGJ1ZiwgIigyNTUsMCwwLDI1NSkiKTsKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIExh
c3QgbGluZSBzaG91bGQgYmUgYWxsIGJsYWNrCi0gICAgICAgICAgICBvZmZzZXQgPSAoNDkqNTAp
ICogNAorICAgICAgICAgICAgb2Zmc2V0ID0gKDQ5KjUwKSAqIDQ7CiAgICAgICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IDUwOyArK2kpCiAgICAgICAgICAgICAgICAgaWYgKGJ1ZltvZmZzZXQr
aSo0XSAhPSAwIHx8IGJ1ZltvZmZzZXQraSo0KzFdICE9IDAgfHwgYnVmW29mZnNldCtpKjQrMl0g
IT0gMCB8fCBidWZbb2Zmc2V0K2kqNCszXSAhPSAyNTUpIHsKICAgICAgICAgICAgICAgICAgICAg
ZmFpbChpLCA0OSwgYnVmLCAiKDAsMCwwLDI1NSkiKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL3Jlc291cmNlcy9ib29sVW5pZm9ybVNoYWRlci52ZXJ0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy9ib29sVW5pZm9ybVNo
YWRlci52ZXJ0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wv
cmVzb3VyY2VzL2Jvb2xVbmlmb3JtU2hhZGVyLnZlcnQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTMgQEAKK3VuaWZvcm0gYm9vbCBidmFsOwordW5pZm9ybSBidmVjMiBidmFsMjsKK3VuaWZvcm0g
YnZlYzMgYnZhbDM7Cit1bmlmb3JtIGJ2ZWM0IGJ2YWw0OworCit2b2lkIG1haW4oKQoreworICAg
IGJvb2wgYWxsU2V0ID0gYnZhbAorICAgICAgICAgICAgJiYgYnZhbDJbMF0gJiYgYnZhbDJbMV0K
KyAgICAgICAgICAgICYmIGJ2YWwzWzBdICYmIGJ2YWwzWzFdICYmIGJ2YWwzWzJdCisgICAgICAg
ICAgICAmJiBidmFsNFswXSAmJiBidmFsNFsxXSAmJiBidmFsNFsyXSAmJiBidmFsNFszXTsKKyAg
ICBnbF9Qb3NpdGlvbiA9IHZlYzQoKGFsbFNldCA/IDEuMCA6IC0xLjApLCAwLjAsIDAuMCwgMS4w
KTsKK30KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy9mbG9h
dFVuaWZvcm1TaGFkZXIudmVydAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy93ZWJnbC9yZXNvdXJjZXMvZmxvYXRVbmlmb3JtU2hhZGVyLnZlcnQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvZmxvYXRVbmlmb3JtU2hh
ZGVyLnZlcnQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKK3VuaWZvcm0gZmxvYXQgZnZh
bDsKK3VuaWZvcm0gdmVjMiBmdmFsMjsKK3VuaWZvcm0gdmVjMyBmdmFsMzsKK3VuaWZvcm0gdmVj
NCBmdmFsNDsKKwordm9pZCBtYWluKCkKK3sKKyAgICBmbG9hdCBzdW0gPSBmdmFsCisgICAgICAg
ICAgICArIGZ2YWwyWzBdICsgZnZhbDJbMV0KKyAgICAgICAgICAgICsgZnZhbDNbMF0gKyBmdmFs
M1sxXSArIGZ2YWwzWzJdCisgICAgICAgICAgICArIGZ2YWw0WzBdICsgZnZhbDRbMV0gKyBmdmFs
NFsyXSArIGZ2YWw0WzNdOworICAgIGdsX1Bvc2l0aW9uID0gdmVjNChzdW0sIDAuMCwgMC4wLCAx
LjApOworfQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL2lu
dFVuaWZvcm1TaGFkZXIudmVydAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy93ZWJnbC9yZXNvdXJjZXMvaW50VW5pZm9ybVNoYWRlci52ZXJ0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL2ludFVuaWZvcm1TaGFkZXIu
dmVydAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAordW5pZm9ybSBpbnQgaXZhbDsKK3Vu
aWZvcm0gaXZlYzIgaXZhbDI7Cit1bmlmb3JtIGl2ZWMzIGl2YWwzOwordW5pZm9ybSBpdmVjNCBp
dmFsNDsKKwordm9pZCBtYWluKCkKK3sKKyAgICBpbnQgc3VtID0gaXZhbAorICAgICAgICAgICAg
KyBpdmFsMlswXSArIGl2YWwyWzFdCisgICAgICAgICAgICArIGl2YWwzWzBdICsgaXZhbDNbMV0g
KyBpdmFsM1syXQorICAgICAgICAgICAgKyBpdmFsNFswXSArIGl2YWw0WzFdICsgaXZhbDRbMl0g
KyBpdmFsNFszXTsKKyAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoc3VtLCAwLjAsIDAuMCwgMS4wKTsK
K30KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy9tYXRVbmlm
b3JtU2hhZGVyLnZlcnQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2Vi
Z2wvcmVzb3VyY2VzL21hdFVuaWZvcm1TaGFkZXIudmVydAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy9tYXRVbmlmb3JtU2hhZGVyLnZlcnQJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAgQEAKK3VuaWZvcm0gbWF0MiBtdmFsMjsKK3VuaWZv
cm0gbWF0MyBtdmFsMzsKK3VuaWZvcm0gbWF0NCBtdmFsNDsKKwordm9pZCBtYWluKCkKK3sKKyAg
ICBnbF9Qb3NpdGlvbiA9IHZlYzQobXZhbDIgKiB2ZWMyKDEuMCwgMi4wKSwgMC4wLCAwLjApCisg
ICAgICAgICAgICArIHZlYzQobXZhbDMgKiB2ZWMzKDEuMCwgMi4wLCAzLjApLCAwLjApCisgICAg
ICAgICAgICArIG12YWw0ICogdmVjNCgxLjAsIDIuMCwgMy4wLCA0LjApOworfQpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL25vb3BVbmlmb3JtU2hhZGVyLmZy
YWcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2Vz
L25vb3BVbmlmb3JtU2hhZGVyLmZyYWcJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMvbm9vcFVuaWZvcm1TaGFkZXIuZnJhZwkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw0IEBACit2b2lkIG1haW4oKQoreworICAgIGdsX0ZyYWdDb2xvciA9IHZl
YzQoMC4wLCAwLjAsIDAuMCwgMS4wKTsKK30KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3dlYmdsL3Jlc291cmNlcy91dGlsczNkLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy91dGlsczNkLmpzCShyZXZpc2lvbiA1MTM0MSkKKysr
IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy91dGlsczNkLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIGZ1bmN0aW9uIGluaXRXZWJHTChjYW52YXNOYW1l
LCB2c2hhZGVyLCAKICAgICBnbC5saW5rUHJvZ3JhbShnbC5wcm9ncmFtKTsKIAogICAgIC8vIENo
ZWNrIHRoZSBsaW5rIHN0YXR1cwotICAgIHZhciBsaW5rZWQgPSBnbC5nZXRQcm9ncmFtaShnbC5w
cm9ncmFtLCBnbC5MSU5LX1NUQVRVUyk7CisgICAgdmFyIGxpbmtlZCA9IGdsLmdldFByb2dyYW1Q
YXJhbWV0ZXIoZ2wucHJvZ3JhbSwgZ2wuTElOS19TVEFUVVMpOwogICAgIGlmICghbGlua2VkKSB7
CiAgICAgICAgIC8vIHNvbWV0aGluZyB3ZW50IHdyb25nIHdpdGggdGhlIGxpbmsKICAgICAgICAg
dmFyIGVycm9yID0gZ2wuZ2V0UHJvZ3JhbUluZm9Mb2cgKGdsLnByb2dyYW0pOwpAQCAtMTEzLDcg
KzExMyw3IEBAIGZ1bmN0aW9uIGxvYWRTaGFkZXIoY3R4LCBzaGFkZXJJZCkKICAgICBjdHguY29t
cGlsZVNoYWRlcihzaGFkZXIpOwogCiAgICAgLy8gQ2hlY2sgdGhlIGNvbXBpbGUgc3RhdHVzCi0g
ICAgdmFyIGNvbXBpbGVkID0gY3R4LmdldFNoYWRlcmkoc2hhZGVyLCBjdHguQ09NUElMRV9TVEFU
VVMpOworICAgIHZhciBjb21waWxlZCA9IGN0eC5nZXRTaGFkZXJQYXJhbWV0ZXIoc2hhZGVyLCBj
dHguQ09NUElMRV9TVEFUVVMpOwogICAgIGlmICghY29tcGlsZWQpIHsKICAgICAgICAgLy8gU29t
ZXRoaW5nIHdlbnQgd3JvbmcgZHVyaW5nIGNvbXBpbGF0aW9uOyBnZXQgdGhlIGVycm9yCiAgICAg
ICAgIHZhciBlcnJvciA9IGN0eC5nZXRTaGFkZXJJbmZvTG9nKHNoYWRlcik7CkBAIC01MzYsNCAr
NTM2LDMgQEAgRnJhbWVyYXRlLnByb3RvdHlwZS5zbmFwc2hvdCA9IGZ1bmN0aW9uKAogICAgICAg
ICB0aGlzLnJlbmRlclRpbWUgPSBuZXdUaW1lOwogICAgIH0KIH0KLQpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsLXRlc3QuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsLXRlc3QuanMJ
KHJldmlzaW9uIDUxMzQxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3Vy
Y2VzL3dlYmdsLXRlc3QuanMJKHdvcmtpbmcgY29weSkKQEAgLTI0LDE2ICsyNCwzMiBAQCBmdW5j
dGlvbiBsb2FkU3RhbmRhcmRQcm9ncmFtKGNvbnRleHQpIHsKICAgICByZXR1cm4gcHJvZ3JhbTsK
IH0KIAorZnVuY3Rpb24gbG9hZFByb2dyYW0oY29udGV4dCwgdmVydGV4U2hhZGVyUGF0aCwgZnJh
Z21lbnRTaGFkZXJQYXRoKSB7CisgICAgdmFyIHByb2dyYW0gPSBjb250ZXh0LmNyZWF0ZVByb2dy
YW0oKTsKKyAgICBjb250ZXh0LmF0dGFjaFNoYWRlcihwcm9ncmFtLCBsb2FkVmVydGV4U2hhZGVy
KGNvbnRleHQsIHZlcnRleFNoYWRlclBhdGgpKTsKKyAgICBjb250ZXh0LmF0dGFjaFNoYWRlcihw
cm9ncmFtLCBsb2FkRnJhZ21lbnRTaGFkZXIoY29udGV4dCwgZnJhZ21lbnRTaGFkZXJQYXRoKSk7
CisgICAgY29udGV4dC5saW5rUHJvZ3JhbShwcm9ncmFtKTsKKyAgICByZXR1cm4gcHJvZ3JhbTsK
K30KKwogZnVuY3Rpb24gbG9hZFN0YW5kYXJkVmVydGV4U2hhZGVyKGNvbnRleHQpIHsKKyAgICBy
ZXR1cm4gbG9hZFZlcnRleFNoYWRlcihjb250ZXh0LCAicmVzb3VyY2VzL3ZlcnRleFNoYWRlci52
ZXJ0Iik7Cit9CisKK2Z1bmN0aW9uIGxvYWRWZXJ0ZXhTaGFkZXIoY29udGV4dCwgcGF0aCkgewog
ICAgIHZhciB2ZXJ0ZXhTaGFkZXIgPSBjb250ZXh0LmNyZWF0ZVNoYWRlcihjb250ZXh0LlZFUlRF
WF9TSEFERVIpOwotICAgIGNvbnRleHQuc2hhZGVyU291cmNlKHZlcnRleFNoYWRlciwgZ2V0U2hh
ZGVyU291cmNlKCJyZXNvdXJjZXMvdmVydGV4U2hhZGVyLnZlcnQiKSk7CisgICAgY29udGV4dC5z
aGFkZXJTb3VyY2UodmVydGV4U2hhZGVyLCBnZXRTaGFkZXJTb3VyY2UocGF0aCkpOwogICAgIGNv
bnRleHQuY29tcGlsZVNoYWRlcih2ZXJ0ZXhTaGFkZXIpOwogICAgIHJldHVybiB2ZXJ0ZXhTaGFk
ZXI7CiB9CiAKIGZ1bmN0aW9uIGxvYWRTdGFuZGFyZEZyYWdtZW50U2hhZGVyKGNvbnRleHQpIHsK
KyAgICByZXR1cm4gbG9hZEZyYWdtZW50U2hhZGVyKGNvbnRleHQsICJyZXNvdXJjZXMvZnJhZ21l
bnRTaGFkZXIuZnJhZyIpOworfQorCitmdW5jdGlvbiBsb2FkRnJhZ21lbnRTaGFkZXIoY29udGV4
dCwgcGF0aCkgewogICAgIHZhciBmcmFnbWVudFNoYWRlciA9IGNvbnRleHQuY3JlYXRlU2hhZGVy
KGNvbnRleHQuRlJBR01FTlRfU0hBREVSKTsKLSAgICBjb250ZXh0LnNoYWRlclNvdXJjZShmcmFn
bWVudFNoYWRlciwgZ2V0U2hhZGVyU291cmNlKCJyZXNvdXJjZXMvZnJhZ21lbnRTaGFkZXIuZnJh
ZyIpKTsKKyAgICBjb250ZXh0LnNoYWRlclNvdXJjZShmcmFnbWVudFNoYWRlciwgZ2V0U2hhZGVy
U291cmNlKHBhdGgpKTsKICAgICBjb250ZXh0LmNvbXBpbGVTaGFkZXIoZnJhZ21lbnRTaGFkZXIp
OwogICAgIHJldHVybiBmcmFnbWVudFNoYWRlcjsKIH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9nbC1vYmplY3QtZ2V0LWNhbGxzLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9nbC1vYmpl
Y3QtZ2V0LWNhbGxzLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
d2ViZ2wvc2NyaXB0LXRlc3RzL2dsLW9iamVjdC1nZXQtY2FsbHMuanMJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTg2IEBACitkZXNjcmlwdGlvbigiVGVzdCBvZiBnZXQgY2FsbHMgYWdhaW5zdCBH
TCBvYmplY3RzIGxpa2UgZ2V0QnVmZmVyUGFyYW1ldGVyLCBldGMuIik7CisKK3ZhciBnbCA9IGNy
ZWF0ZTNEQ29udGV4dCgpOwordmFyIHN0YW5kYXJkVmVydCA9IGxvYWRTdGFuZGFyZFZlcnRleFNo
YWRlcihnbCk7Cit2YXIgc3RhbmRhcmRGcmFnID0gbG9hZFN0YW5kYXJkRnJhZ21lbnRTaGFkZXIo
Z2wpOwordmFyIHN0YW5kYXJkUHJvZ3JhbSA9IGdsLmNyZWF0ZVByb2dyYW0oKTsKK2dsLmF0dGFj
aFNoYWRlcihzdGFuZGFyZFByb2dyYW0sIHN0YW5kYXJkVmVydCk7CitnbC5hdHRhY2hTaGFkZXIo
c3RhbmRhcmRQcm9ncmFtLCBzdGFuZGFyZEZyYWcpOworZ2wubGlua1Byb2dyYW0oc3RhbmRhcmRQ
cm9ncmFtKTsKKworLy8gVGVzdCBnZXRCdWZmZXJQYXJhbWV0ZXIKK3ZhciBidWZmZXIgPSBnbC5j
cmVhdGVCdWZmZXIoKTsKK2dsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBidWZmZXIpOwor
Z2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIDE2LCBnbC5EWU5BTUlDX0RSQVcpOworc2hv
dWxkQmUoJ2dsLmdldEJ1ZmZlclBhcmFtZXRlcihnbC5BUlJBWV9CVUZGRVIsIGdsLkJVRkZFUl9T
SVpFKScsICcxNicpOworc2hvdWxkQmUoJ2dsLmdldEJ1ZmZlclBhcmFtZXRlcihnbC5BUlJBWV9C
VUZGRVIsIGdsLkJVRkZFUl9VU0FHRSknLCAnZ2wuRFlOQU1JQ19EUkFXJyk7CisKKy8vIFRlc3Qg
Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyCit2YXIgdGV4dHVyZSA9IGdsLmNyZWF0
ZVRleHR1cmUoKTsKK2dsLmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIHRleHR1cmUpOworZ2wu
dGV4SW1hZ2UyRChnbC5URVhUVVJFXzJELCAwLCBnbC5SR0JBLCAyLCAyLCAwLCBnbC5SR0JBLCBn
bC5VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAgICBuZXcgV2ViR0xVbnNpZ25lZEJ5dGVBcnJh
eShbMCwgMCwgMCwgMjU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMjU1LCAyNTUsIDI1NSwgMjU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMjU1LCAyNTUsIDI1NSwgMjU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMCwgMCwgMCwgMjU1XSkpOworZ2wudGV4UGFyYW1ldGVyaShnbC5URVhU
VVJFXzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGdsLkxJTkVBUik7CitnbC50ZXhQYXJhbWV0
ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUFHX0ZJTFRFUiwgZ2wuTElORUFSKTsKK2ds
LmJpbmRUZXh0dXJlKGdsLlRFWFRVUkVfMkQsIG51bGwpOwordmFyIGZyYW1lYnVmZmVyID0gZ2wu
Y3JlYXRlRnJhbWVidWZmZXIoKTsKK2dsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwg
ZnJhbWVidWZmZXIpOworZ2wuZnJhbWVidWZmZXJUZXh0dXJlMkQoZ2wuRlJBTUVCVUZGRVIsIGds
LkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5URVhUVVJFXzJELCB0ZXh0dXJlLCAwKTsKK3ZhciByZW5k
ZXJidWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKTsKK3Nob3VsZEJlKCdnbC5nZXRFcnJv
cigpJywgJzAnKTsKK2dsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCByZW5kZXJi
dWZmZXIpOworc2hvdWxkQmUoJ2dsLmdldEVycm9yKCknLCAnMCcpOworZ2wucmVuZGVyYnVmZmVy
U3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLkRFUFRIX0NPTVBPTkVOVDE2LCAyLCAyKTsKK3No
b3VsZEJlKCdnbC5nZXRFcnJvcigpJywgJzAnKTsKK2dsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVy
KGdsLkZSQU1FQlVGRkVSLCBnbC5ERVBUSF9BVFRBQ0hNRU5ULCBnbC5SRU5ERVJCVUZGRVIsIHJl
bmRlcmJ1ZmZlcik7CisvLyBGSVhNRTogbmVlZCB0byB3b3JrIGFyb3VuZCBidWdneSBncmFwaGlj
cyBkcml2ZXJzIHdoaWNoIGRvbid0CisvLyBzdXBwb3J0IEdMX0RFUFRIX0NPTVBPTkVOVDE2IGZv
cm1hdCBmb3IgZGVwdGggcmVuZGVyYnVmZmVyczsgbmV4dAorLy8gbGluZSBpcyByZXR1cm5pbmcg
RlJBTUVCVUZGRVJfVU5TVVBQT1JURUQgb24gY29tbWl0IGJvdHMKKy8vc2hvdWxkQmUoJ2dsLmNo
ZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpJywgJ2dsLkZSQU1FQlVGRkVSX0NP
TVBMRVRFJyk7CitzaG91bGRCZSgnZ2wuZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
KGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuRlJBTUVCVUZGRVJfQVRU
QUNITUVOVF9PQkpFQ1RfVFlQRSknLCAnZ2wuVEVYVFVSRScpOworc2hvdWxkQmVOb25OdWxsKCdn
bC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNP
TE9SX0FUVEFDSE1FTlQwLCBnbC5GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FKScp
Oworc2hvdWxkQmUoJ2dsLmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcihnbC5GUkFN
RUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRf
VEVYVFVSRV9MRVZFTCknLCAnMCcpOworc2hvdWxkQmUoJ2dsLmdldEZyYW1lYnVmZmVyQXR0YWNo
bWVudFBhcmFtZXRlcihnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLkZS
QU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9DVUJFX01BUF9GQUNFKScsICcwJyk7CisKK3No
b3VsZEJlKCdnbC5nZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZG
RVIsIGdsLkRFUFRIX0FUVEFDSE1FTlQsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNU
X1RZUEUpJywgJ2dsLlJFTkRFUkJVRkZFUicpOworc2hvdWxkQmVOb25OdWxsKCdnbC5nZXRGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkRFUFRIX0FUVEFD
SE1FTlQsIGdsLkZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUUpJyk7CisKKy8vIFRl
c3QgZ2V0UHJvZ3JhbVBhcmFtZXRlcgorc2hvdWxkQmUoJ2dsLmdldFByb2dyYW1QYXJhbWV0ZXIo
c3RhbmRhcmRQcm9ncmFtLCBnbC5ERUxFVEVfU1RBVFVTKScsICdmYWxzZScpOworc2hvdWxkQmUo
J2dsLmdldFByb2dyYW1QYXJhbWV0ZXIoc3RhbmRhcmRQcm9ncmFtLCBnbC5MSU5LX1NUQVRVUykn
LCAndHJ1ZScpOworc2hvdWxkQmUoJ3R5cGVvZiBnbC5nZXRQcm9ncmFtUGFyYW1ldGVyKHN0YW5k
YXJkUHJvZ3JhbSwgZ2wuVkFMSURBVEVfU1RBVFVTKScsICciYm9vbGVhbiInKTsKK3Nob3VsZEJl
KCd0eXBlb2YgZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihzdGFuZGFyZFByb2dyYW0sIGdsLklORk9f
TE9HX0xFTkdUSCknLCAnIm51bWJlciInKTsKK3Nob3VsZEJlKCdnbC5nZXRQcm9ncmFtUGFyYW1l
dGVyKHN0YW5kYXJkUHJvZ3JhbSwgZ2wuQVRUQUNIRURfU0hBREVSUyknLCAnMicpOworc2hvdWxk
QmUoJ2dsLmdldFByb2dyYW1QYXJhbWV0ZXIoc3RhbmRhcmRQcm9ncmFtLCBnbC5BQ1RJVkVfQVRU
UklCVVRFUyknLCAnMicpOworc2hvdWxkQmVOb25aZXJvKCdnbC5nZXRQcm9ncmFtUGFyYW1ldGVy
KHN0YW5kYXJkUHJvZ3JhbSwgZ2wuQUNUSVZFX0FUVFJJQlVURV9NQVhfTEVOR1RIKScpOworc2hv
dWxkQmUoJ2dsLmdldFByb2dyYW1QYXJhbWV0ZXIoc3RhbmRhcmRQcm9ncmFtLCBnbC5BQ1RJVkVf
VU5JRk9STVMpJywgJzEnKTsKK3Nob3VsZEJlTm9uWmVybygnZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRl
cihzdGFuZGFyZFByb2dyYW0sIGdsLkFDVElWRV9VTklGT1JNX01BWF9MRU5HVEgpJyk7CisKKy8v
IFRlc3QgZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyCitzaG91bGRCZSgnZ2wuZ2V0UmVuZGVyYnVm
ZmVyUGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkVOREVSQlVGRkVSX1dJRFRIKScsICcy
Jyk7CitzaG91bGRCZSgnZ2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZF
UiwgZ2wuUkVOREVSQlVGRkVSX0hFSUdIVCknLCAnMicpOworLy8gTm90ZTogd2UgY2FuJ3QgdGVz
dCB0aGUgYWN0dWFsIHZhbHVlIG9mIHRoZSBpbnRlcm5hbCBmb3JtYXQgc2luY2UKKy8vIHRoZSBp
bXBsZW1lbnRhdGlvbiBpcyBhbGxvd2VkIHRvIGNoYW5nZSBpdC4KK3Nob3VsZEJlTm9uWmVybygn
Z2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkVOREVSQlVG
RkVSX0lOVEVSTkFMX0ZPUk1BVCknKTsKK3Nob3VsZEJlTm9uWmVybygnZ2wuZ2V0UmVuZGVyYnVm
ZmVyUGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkVOREVSQlVGRkVSX0RFUFRIX1NJWkUp
Jyk7Cit2YXIgY29sb3JidWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKTsKK3Nob3VsZEJl
KCdnbC5nZXRFcnJvcigpJywgJzAnKTsKK2dsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVG
RkVSLCByZW5kZXJidWZmZXIpOworc2hvdWxkQmUoJ2dsLmdldEVycm9yKCknLCAnMCcpOworZ2wu
cmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLlJHQkE0LCAyLCAyKTsKK3No
b3VsZEJlTm9uWmVybygnZ2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZF
UiwgZ2wuUkVOREVSQlVGRkVSX1JFRF9TSVpFKScpOworc2hvdWxkQmVOb25aZXJvKCdnbC5nZXRS
ZW5kZXJidWZmZXJQYXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBnbC5SRU5ERVJCVUZGRVJfR1JF
RU5fU0laRSknKTsKK3Nob3VsZEJlTm9uWmVybygnZ2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVy
KGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkVOREVSQlVGRkVSX0JMVUVfU0laRSknKTsKK3Nob3VsZEJl
Tm9uWmVybygnZ2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZFUiwgZ2wu
UkVOREVSQlVGRkVSX0FMUEhBX1NJWkUpJyk7CisKKy8vIFRlc3QgZ2V0U2hhZGVyUGFyYW1ldGVy
CitzaG91bGRCZSgnZ2wuZ2V0U2hhZGVyUGFyYW1ldGVyKHN0YW5kYXJkVmVydCwgZ2wuU0hBREVS
X1RZUEUpJywgJ2dsLlZFUlRFWF9TSEFERVInKTsKK3Nob3VsZEJlKCdnbC5nZXRTaGFkZXJQYXJh
bWV0ZXIoc3RhbmRhcmRWZXJ0LCBnbC5ERUxFVEVfU1RBVFVTKScsICdmYWxzZScpOworc2hvdWxk
QmUoJ2dsLmdldFNoYWRlclBhcmFtZXRlcihzdGFuZGFyZFZlcnQsIGdsLkNPTVBJTEVfU1RBVFVT
KScsICd0cnVlJyk7CitzaG91bGRCZSgndHlwZW9mIGdsLmdldFNoYWRlclBhcmFtZXRlcihzdGFu
ZGFyZFZlcnQsIGdsLklORk9fTE9HX0xFTkdUSCknLCAnIm51bWJlciInKTsKK3Nob3VsZEJlTm9u
WmVybygnZ2wuZ2V0U2hhZGVyUGFyYW1ldGVyKHN0YW5kYXJkVmVydCwgZ2wuU0hBREVSX1NPVVJD
RV9MRU5HVEgpJyk7CisKKy8vIFRlc3QgZ2V0VGV4UGFyYW1ldGVyCitnbC5iaW5kRnJhbWVidWZm
ZXIoZ2wuRlJBTUVCVUZGRVIsIGZyYW1lYnVmZmVyKTsKK2dsLmJpbmRUZXh0dXJlKGdsLlRFWFRV
UkVfMkQsIHRleHR1cmUpOworZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJFXzJELCBnbC5URVhU
VVJFX01BR19GSUxURVIsIGdsLk5FQVJFU1QpOworZ2wudGV4UGFyYW1ldGVyaShnbC5URVhUVVJF
XzJELCBnbC5URVhUVVJFX01JTl9GSUxURVIsIGdsLk5FQVJFU1QpOworZ2wudGV4UGFyYW1ldGVy
aShnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfUywgZ2wuQ0xBTVBfVE9fRURHRSk7Citn
bC50ZXhQYXJhbWV0ZXJpKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfV1JBUF9ULCBnbC5DTEFN
UF9UT19FREdFKTsKK3Nob3VsZEJlKCdnbC5nZXRUZXhQYXJhbWV0ZXIoZ2wuVEVYVFVSRV8yRCwg
Z2wuVEVYVFVSRV9NQUdfRklMVEVSKScsICdnbC5ORUFSRVNUJyk7CitzaG91bGRCZSgnZ2wuZ2V0
VGV4UGFyYW1ldGVyKGdsLlRFWFRVUkVfMkQsIGdsLlRFWFRVUkVfTUlOX0ZJTFRFUiknLCAnZ2wu
TkVBUkVTVCcpOworc2hvdWxkQmUoJ2dsLmdldFRleFBhcmFtZXRlcihnbC5URVhUVVJFXzJELCBn
bC5URVhUVVJFX1dSQVBfUyknLCAnZ2wuQ0xBTVBfVE9fRURHRScpOworc2hvdWxkQmUoJ2dsLmdl
dFRleFBhcmFtZXRlcihnbC5URVhUVVJFXzJELCBnbC5URVhUVVJFX1dSQVBfVCknLCAnZ2wuQ0xB
TVBfVE9fRURHRScpOworCisvLyBUZXN0IGdldFVuaWZvcm0gd2l0aCBhbGwgdmFyaWFudHMgb2Yg
ZGF0YSB0eXBlcworLy8gQm9vbGVhbiB1bmlmb3JtIHZhcmlhYmxlcwordmFyIGJvb2xQcm9ncmFt
ID0gbG9hZFByb2dyYW0oZ2wsICJyZXNvdXJjZXMvYm9vbFVuaWZvcm1TaGFkZXIudmVydCIsICJy
ZXNvdXJjZXMvbm9vcFVuaWZvcm1TaGFkZXIuZnJhZyIpOworc2hvdWxkQmUoJ2dsLmdldFByb2dy
YW1QYXJhbWV0ZXIoYm9vbFByb2dyYW0sIGdsLkxJTktfU1RBVFVTKScsICd0cnVlJyk7Cit2YXIg
YnZhbExvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihib29sUHJvZ3JhbSwgImJ2YWwiKTsKK3Zh
ciBidmFsMkxvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihib29sUHJvZ3JhbSwgImJ2YWwyIik7
Cit2YXIgYnZhbDNMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24oYm9vbFByb2dyYW0sICJidmFs
MyIpOwordmFyIGJ2YWw0TG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKGJvb2xQcm9ncmFtLCAi
YnZhbDQiKTsKK2dsLnVzZVByb2dyYW0oYm9vbFByb2dyYW0pOworZ2wudW5pZm9ybTFpKGJ2YWxM
b2MsIDEpOworZ2wudW5pZm9ybTJpKGJ2YWwyTG9jLCAxLCAwKTsKK2dsLnVuaWZvcm0zaShidmFs
M0xvYywgMSwgMCwgMSk7CitnbC51bmlmb3JtNGkoYnZhbDRMb2MsIDEsIDAsIDEsIDApOworc2hv
dWxkQmUoJ2dsLmdldEVycm9yKCknLCAnMCcpOworc2hvdWxkQmUoJ2dsLmdldFVuaWZvcm0oYm9v
bFByb2dyYW0sIGJ2YWxMb2MpJywgJ3RydWUnKTsKK3Nob3VsZEJlKCdnbC5nZXRVbmlmb3JtKGJv
b2xQcm9ncmFtLCBidmFsMkxvYyknLCAnWzEsIDBdJyk7CitzaG91bGRCZSgnZ2wuZ2V0VW5pZm9y
bShib29sUHJvZ3JhbSwgYnZhbDNMb2MpJywgJ1sxLCAwLCAxXScpOworc2hvdWxkQmUoJ2dsLmdl
dFVuaWZvcm0oYm9vbFByb2dyYW0sIGJ2YWw0TG9jKScsICdbMSwgMCwgMSwgMF0nKTsKKy8vIElu
dGVnZXIgdW5pZm9ybSB2YXJpYWJsZXMKK3ZhciBpbnRQcm9ncmFtID0gbG9hZFByb2dyYW0oZ2ws
ICJyZXNvdXJjZXMvaW50VW5pZm9ybVNoYWRlci52ZXJ0IiwgInJlc291cmNlcy9ub29wVW5pZm9y
bVNoYWRlci5mcmFnIik7CitzaG91bGRCZSgnZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihpbnRQcm9n
cmFtLCBnbC5MSU5LX1NUQVRVUyknLCAndHJ1ZScpOwordmFyIGl2YWxMb2MgPSBnbC5nZXRVbmlm
b3JtTG9jYXRpb24oaW50UHJvZ3JhbSwgIml2YWwiKTsKK3ZhciBpdmFsMkxvYyA9IGdsLmdldFVu
aWZvcm1Mb2NhdGlvbihpbnRQcm9ncmFtLCAiaXZhbDIiKTsKK3ZhciBpdmFsM0xvYyA9IGdsLmdl
dFVuaWZvcm1Mb2NhdGlvbihpbnRQcm9ncmFtLCAiaXZhbDMiKTsKK3ZhciBpdmFsNExvYyA9IGds
LmdldFVuaWZvcm1Mb2NhdGlvbihpbnRQcm9ncmFtLCAiaXZhbDQiKTsKK2dsLnVzZVByb2dyYW0o
aW50UHJvZ3JhbSk7CitnbC51bmlmb3JtMWkoaXZhbExvYywgMSk7CitnbC51bmlmb3JtMmkoaXZh
bDJMb2MsIDIsIDMpOworZ2wudW5pZm9ybTNpKGl2YWwzTG9jLCA0LCA1LCA2KTsKK2dsLnVuaWZv
cm00aShpdmFsNExvYywgNywgOCwgOSwgMTApOworc2hvdWxkQmUoJ2dsLmdldEVycm9yKCknLCAn
MCcpOworc2hvdWxkQmUoJ2dsLmdldFVuaWZvcm0oaW50UHJvZ3JhbSwgaXZhbExvYyknLCAnMScp
Oworc2hvdWxkQmUoJ2dsLmdldFVuaWZvcm0oaW50UHJvZ3JhbSwgaXZhbDJMb2MpJywgJ1syLCAz
XScpOworc2hvdWxkQmUoJ2dsLmdldFVuaWZvcm0oaW50UHJvZ3JhbSwgaXZhbDNMb2MpJywgJ1s0
LCA1LCA2XScpOworc2hvdWxkQmUoJ2dsLmdldFVuaWZvcm0oaW50UHJvZ3JhbSwgaXZhbDRMb2Mp
JywgJ1s3LCA4LCA5LCAxMF0nKTsKKy8vIEZsb2F0IHVuaWZvcm0gdmFyaWFibGVzCit2YXIgZmxv
YXRQcm9ncmFtID0gbG9hZFByb2dyYW0oZ2wsICJyZXNvdXJjZXMvZmxvYXRVbmlmb3JtU2hhZGVy
LnZlcnQiLCAicmVzb3VyY2VzL25vb3BVbmlmb3JtU2hhZGVyLmZyYWciKTsKK3Nob3VsZEJlKCdn
bC5nZXRQcm9ncmFtUGFyYW1ldGVyKGZsb2F0UHJvZ3JhbSwgZ2wuTElOS19TVEFUVVMpJywgJ3Ry
dWUnKTsKK3ZhciBmdmFsTG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKGZsb2F0UHJvZ3JhbSwg
ImZ2YWwiKTsKK3ZhciBmdmFsMkxvYyA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihmbG9hdFByb2dy
YW0sICJmdmFsMiIpOwordmFyIGZ2YWwzTG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKGZsb2F0
UHJvZ3JhbSwgImZ2YWwzIik7Cit2YXIgZnZhbDRMb2MgPSBnbC5nZXRVbmlmb3JtTG9jYXRpb24o
ZmxvYXRQcm9ncmFtLCAiZnZhbDQiKTsKK2dsLnVzZVByb2dyYW0oZmxvYXRQcm9ncmFtKTsKK2ds
LnVuaWZvcm0xZihmdmFsTG9jLCAxMSk7CitnbC51bmlmb3JtMmYoZnZhbDJMb2MsIDEyLCAxMyk7
CitnbC51bmlmb3JtM2YoZnZhbDNMb2MsIDE0LCAxNSwgMTYpOworZ2wudW5pZm9ybTRmKGZ2YWw0
TG9jLCAxNywgMTgsIDE5LCAyMCk7CitzaG91bGRCZSgnZ2wuZ2V0RXJyb3IoKScsICcwJyk7Citz
aG91bGRCZSgnZ2wuZ2V0VW5pZm9ybShmbG9hdFByb2dyYW0sIGZ2YWxMb2MpJywgJzExJyk7Citz
aG91bGRCZSgnZ2wuZ2V0VW5pZm9ybShmbG9hdFByb2dyYW0sIGZ2YWwyTG9jKScsICdbMTIsIDEz
XScpOworc2hvdWxkQmUoJ2dsLmdldFVuaWZvcm0oZmxvYXRQcm9ncmFtLCBmdmFsM0xvYyknLCAn
WzE0LCAxNSwgMTZdJyk7CitzaG91bGRCZSgnZ2wuZ2V0VW5pZm9ybShmbG9hdFByb2dyYW0sIGZ2
YWw0TG9jKScsICdbMTcsIDE4LCAxOSwgMjBdJyk7CisvLyBNYXRyaXggdW5pZm9ybSB2YXJpYWJs
ZXMKK3ZhciBtYXRQcm9ncmFtID0gbG9hZFByb2dyYW0oZ2wsICJyZXNvdXJjZXMvbWF0VW5pZm9y
bVNoYWRlci52ZXJ0IiwgInJlc291cmNlcy9ub29wVW5pZm9ybVNoYWRlci5mcmFnIik7CitzaG91
bGRCZSgnZ2wuZ2V0UHJvZ3JhbVBhcmFtZXRlcihtYXRQcm9ncmFtLCBnbC5MSU5LX1NUQVRVUykn
LCAndHJ1ZScpOwordmFyIG12YWwyTG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKG1hdFByb2dy
YW0sICJtdmFsMiIpOwordmFyIG12YWwzTG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKG1hdFBy
b2dyYW0sICJtdmFsMyIpOwordmFyIG12YWw0TG9jID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKG1h
dFByb2dyYW0sICJtdmFsNCIpOworZ2wudXNlUHJvZ3JhbShtYXRQcm9ncmFtKTsKK2dsLnVuaWZv
cm1NYXRyaXgyZnYobXZhbDJMb2MsIGZhbHNlLCBbMSwgMiwgMywgNF0pOworZ2wudW5pZm9ybU1h
dHJpeDNmdihtdmFsM0xvYywgZmFsc2UsIFs1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxM10p
OworZ2wudW5pZm9ybU1hdHJpeDRmdihtdmFsNExvYywgZmFsc2UsIFsxNCwgMTUsIDE2LCAxNywg
MTgsIDE5LCAyMCwgMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOV0pOworc2hvdWxk
QmUoJ2dsLmdldEVycm9yKCknLCAnMCcpOworc2hvdWxkQmUoJ2dsLmdldFVuaWZvcm0obWF0UHJv
Z3JhbSwgbXZhbDJMb2MpJywgJ1sxLCAyLCAzLCA0XScpOworc2hvdWxkQmUoJ2dsLmdldFVuaWZv
cm0obWF0UHJvZ3JhbSwgbXZhbDNMb2MpJywgJ1s1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAx
M10nKTsKK3Nob3VsZEJlKCdnbC5nZXRVbmlmb3JtKG1hdFByb2dyYW0sIG12YWw0TG9jKScsICdb
MTQsIDE1LCAxNiwgMTcsIDE4LCAxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LCAyNSwgMjYsIDI3LCAy
OCwgMjldJyk7CisKKy8vIFRlc3QgZ2V0VmVydGV4QXR0cmliCit2YXIgYXJyYXkgPSBuZXcgV2Vi
R0xGbG9hdEFycmF5KFsxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywg
MTQsIDE1LCAxNl0pOworZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGJ1ZmZlcik7Citn
bC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgYXJyYXksIGdsLkRZTkFNSUNfRFJBVyk7Cisv
LyBWZXJ0ZXggYXR0cmlidXRlIDAgaXMgc3BlY2lhbCBpbiB0aGF0IGl0IGhhcyBubyBjdXJyZW50
IHN0YXRlLCBzbworLy8gZmV0Y2hpbmcgR0xfQ1VSUkVOVF9WRVJURVhfQVRUUklCIGdlbmVyYXRl
cyBhbiBlcnJvci4gVXNlIGF0dHJpYnV0ZQorLy8gMSBmb3IgdGhlc2UgdGVzdHMgaW5zdGVhZC4K
K2dsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDEpOworZ2wudmVydGV4QXR0cmliUG9pbnRlcigx
LCA0LCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworc2hvdWxkQmVOb25OdWxsKCdnbC5nZXRWZXJ0
ZXhBdHRyaWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElORyknKTsKK3No
b3VsZEJlKCdnbC5nZXRWZXJ0ZXhBdHRyaWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFC
TEVEKScsICd0cnVlJyk7CitzaG91bGRCZSgnZ2wuZ2V0VmVydGV4QXR0cmliKDEsIGdsLlZFUlRF
WF9BVFRSSUJfQVJSQVlfU0laRSknLCAnNCcpOworc2hvdWxkQmUoJyhnbC5nZXRWZXJ0ZXhBdHRy
aWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9TVFJJREUpID09IDApIHx8IChnbC5nZXRWZXJ0
ZXhBdHRyaWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9TVFJJREUpID09IDQgKiBnbC5zaXpl
SW5CeXRlcyhnbC5GTE9BVCkpJywgJ3RydWUnKTsKK3Nob3VsZEJlKCdnbC5nZXRWZXJ0ZXhBdHRy
aWIoMSwgZ2wuVkVSVEVYX0FUVFJJQl9BUlJBWV9UWVBFKScsICdnbC5GTE9BVCcpOworc2hvdWxk
QmUoJ2dsLmdldFZlcnRleEF0dHJpYigxLCBnbC5WRVJURVhfQVRUUklCX0FSUkFZX05PUk1BTEla
RUQpJywgJ2ZhbHNlJyk7CitnbC5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoMSk7CitzaG91bGRC
ZSgnZ2wuZ2V0VmVydGV4QXR0cmliKDEsIGdsLlZFUlRFWF9BVFRSSUJfQVJSQVlfRU5BQkxFRCkn
LCAnZmFsc2UnKTsKK2dsLnZlcnRleEF0dHJpYjRmKDEsIDUsIDYsIDcsIDgpOworc2hvdWxkQmUo
J2dsLmdldFZlcnRleEF0dHJpYigxLCBnbC5DVVJSRU5UX1ZFUlRFWF9BVFRSSUIpJywgJ1s1LCA2
LCA3LCA4XScpOworc2hvdWxkQmUoJ2dsLmdldEVycm9yKCknLCAnMCcpOworCitzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2Ny
aXB0LXRlc3RzL2luY29ycmVjdC1jb250ZXh0LW9iamVjdC1iZWhhdmlvdXIuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL2luY29ycmVj
dC1jb250ZXh0LW9iamVjdC1iZWhhdmlvdXIuanMJKHJldmlzaW9uIDUxMzQxKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3RzL2luY29ycmVjdC1jb250ZXh0LW9i
amVjdC1iZWhhdmlvdXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTMxLDE3ICszMSwxMiBAQCBzaG91
bGRUaHJvdygiY29udGV4dEEuYmluZFJlbmRlcmJ1ZmZlcihjCiBzaG91bGRUaHJvdygiY29udGV4
dEEuYmluZFRleHR1cmUoY29udGV4dEEuVEVYVFVSRV8yRCwgdGV4dHVyZUIpIik7CiBzaG91bGRU
aHJvdygiY29udGV4dEEuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoY29udGV4dEEuRlJBTUVCVUZG
RVIsIGNvbnRleHRBLkRFUFRIX0FUVEFDSE1FTlQsIGNvbnRleHRBLlJFTkRFUkJVRkZFUiwgcmVu
ZGVyQnVmZmVyQikiKTsKIHNob3VsZFRocm93KCJjb250ZXh0QS5mcmFtZWJ1ZmZlclRleHR1cmUy
RChjb250ZXh0QS5GUkFNRUJVRkZFUiwgY29udGV4dEEuQ09MT1JfQVRUQUNITUVOVDAsIGNvbnRl
eHRBLlRFWFRVUkVfMkQsIHRleHR1cmVCLCAwKSIpOwotc2hvdWxkVGhyb3coImNvbnRleHRBLmdl
dFByb2dyYW1pKHByb2dyYW1CLCAwKSIpOwotc2hvdWxkVGhyb3coImNvbnRleHRBLmdldFByb2dy
YW1pdihwcm9ncmFtQiwgMCkiKTsKK3Nob3VsZFRocm93KCJjb250ZXh0QS5nZXRQcm9ncmFtUGFy
YW1ldGVyKHByb2dyYW1CLCAwKSIpOwogc2hvdWxkVGhyb3coImNvbnRleHRBLmdldFByb2dyYW1J
bmZvTG9nKHByb2dyYW1CLCAwKSIpOwotc2hvdWxkVGhyb3coImNvbnRleHRBLmdldFNoYWRlcmko
c2hhZGVyQiwgMCkiKTsKLXNob3VsZFRocm93KCJjb250ZXh0QS5nZXRTaGFkZXJpdihzaGFkZXJC
LCAwKSIpOworc2hvdWxkVGhyb3coImNvbnRleHRBLmdldFNoYWRlclBhcmFtZXRlcihzaGFkZXJC
LCAwKSIpOwogc2hvdWxkVGhyb3coImNvbnRleHRBLmdldFNoYWRlckluZm9Mb2coc2hhZGVyQiwg
MCkiKTsKIHNob3VsZFRocm93KCJjb250ZXh0QS5nZXRTaGFkZXJTb3VyY2Uoc2hhZGVyQikiKTsK
LXNob3VsZFRocm93KCJjb250ZXh0QS5nZXRVbmlmb3JtZihwcm9ncmFtQiwgbG9jYXRpb25BKSIp
Owotc2hvdWxkVGhyb3coImNvbnRleHRBLmdldFVuaWZvcm1mdihwcm9ncmFtQiwgbG9jYXRpb25B
KSIpOwotc2hvdWxkVGhyb3coImNvbnRleHRBLmdldFVuaWZvcm1pKHByb2dyYW1CLCBsb2NhdGlv
bkEpIik7Ci1zaG91bGRUaHJvdygiY29udGV4dEEuZ2V0VW5pZm9ybWl2KHByb2dyYW1CLCBsb2Nh
dGlvbkEpIik7CitzaG91bGRUaHJvdygiY29udGV4dEEuZ2V0VW5pZm9ybShwcm9ncmFtQiwgbG9j
YXRpb25BKSIpOwogc2hvdWxkVGhyb3coImNvbnRleHRBLmdldFVuaWZvcm1Mb2NhdGlvbihwcm9n
cmFtQiwgJ3VfbW9kZWxWaWV3UHJvak1hdHJpeCcpIik7CiAKIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9zY3JpcHQtdGVzdHMv
bnVsbC1vYmplY3QtYmVoYXZpb3VyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL3dlYmdsL3NjcmlwdC10ZXN0cy9udWxsLW9iamVjdC1iZWhhdmlvdXIuanMJKHJldmlz
aW9uIDUxMzQxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvc2NyaXB0LXRlc3Rz
L251bGwtb2JqZWN0LWJlaGF2aW91ci5qcwkod29ya2luZyBjb3B5KQpAQCAtMjAsMTcgKzIwLDEy
IEBAIHNob3VsZEJlVW5kZWZpbmVkKCJjb250ZXh0LmJpbmRSZW5kZXJidWYKIHNob3VsZEJlVW5k
ZWZpbmVkKCJjb250ZXh0LmJpbmRUZXh0dXJlKGNvbnRleHQuVEVYVFVSRV8yRCwgMCkiKTsKIHNo
b3VsZEJlVW5kZWZpbmVkKCJjb250ZXh0LmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKGNvbnRleHQu
RlJBTUVCVUZGRVIsIGNvbnRleHQuREVQVEhfQVRUQUNITUVOVCwgY29udGV4dC5SRU5ERVJCVUZG
RVIsIDApIik7CiBzaG91bGRCZVVuZGVmaW5lZCgiY29udGV4dC5mcmFtZWJ1ZmZlclRleHR1cmUy
RChjb250ZXh0LkZSQU1FQlVGRkVSLCBjb250ZXh0LkNPTE9SX0FUVEFDSE1FTlQwLCBjb250ZXh0
LlRFWFRVUkVfMkQsIDAsIDApIik7Ci1zaG91bGRUaHJvdygiY29udGV4dC5nZXRQcm9ncmFtaSh1
bmRlZmluZWQsIDApIik7Ci1zaG91bGRUaHJvdygiY29udGV4dC5nZXRQcm9ncmFtaXYodW5kZWZp
bmVkLCAwKSIpOworc2hvdWxkVGhyb3coImNvbnRleHQuZ2V0UHJvZ3JhbVBhcmFtZXRlcih1bmRl
ZmluZWQsIDApIik7CiBzaG91bGRUaHJvdygiY29udGV4dC5nZXRQcm9ncmFtSW5mb0xvZyh1bmRl
ZmluZWQsIDApIik7Ci1zaG91bGRUaHJvdygiY29udGV4dC5nZXRTaGFkZXJpKHVuZGVmaW5lZCwg
MCkiKTsKLXNob3VsZFRocm93KCJjb250ZXh0LmdldFNoYWRlcml2KHVuZGVmaW5lZCwgMCkiKTsK
K3Nob3VsZFRocm93KCJjb250ZXh0LmdldFNoYWRlclBhcmFtZXRlcih1bmRlZmluZWQsIDApIik7
CiBzaG91bGRUaHJvdygiY29udGV4dC5nZXRTaGFkZXJJbmZvTG9nKHVuZGVmaW5lZCwgMCkiKTsK
IHNob3VsZFRocm93KCJjb250ZXh0LmdldFNoYWRlclNvdXJjZSh1bmRlZmluZWQpIik7Ci1zaG91
bGRUaHJvdygiY29udGV4dC5nZXRVbmlmb3JtZih1bmRlZmluZWQsIDApIik7Ci1zaG91bGRUaHJv
dygiY29udGV4dC5nZXRVbmlmb3JtZnYodW5kZWZpbmVkLCAwKSIpOwotc2hvdWxkVGhyb3coImNv
bnRleHQuZ2V0VW5pZm9ybWkodW5kZWZpbmVkLCAwKSIpOwotc2hvdWxkVGhyb3coImNvbnRleHQu
Z2V0VW5pZm9ybWl2KHVuZGVmaW5lZCwgMCkiKTsKK3Nob3VsZFRocm93KCJjb250ZXh0LmdldFVu
aWZvcm0odW5kZWZpbmVkLCAwKSIpOwogc2hvdWxkVGhyb3coImNvbnRleHQuZ2V0VW5pZm9ybUxv
Y2F0aW9uKHVuZGVmaW5lZCwgJ2ZvbycpIik7CiAKIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcwko
cmV2aXNpb24gNTEzNDEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMTU5LDYgKzE1OSw0MiBAQCBmdW5jdGlvbiBzaG91
bGRFdmFsdWF0ZVRvKGFjdHVhbCwgZXhwZWN0CiAgIH0KIH0KIAorZnVuY3Rpb24gc2hvdWxkQmVO
b25aZXJvKF9hKQoreworICB2YXIgZXhjZXB0aW9uOworICB2YXIgX2F2OworICB0cnkgeworICAg
ICBfYXYgPSBldmFsKF9hKTsKKyAgfSBjYXRjaCAoZSkgeworICAgICBleGNlcHRpb24gPSBlOwor
ICB9CisKKyAgaWYgKGV4Y2VwdGlvbikKKyAgICB0ZXN0RmFpbGVkKF9hICsgIiBzaG91bGQgYmUg
bm9uLXplcm8uIFRocmV3IGV4Y2VwdGlvbiAiICsgZXhjZXB0aW9uKTsKKyAgZWxzZSBpZiAoX2F2
ICE9IDApCisgICAgdGVzdFBhc3NlZChfYSArICIgaXMgbm9uLXplcm8uIik7CisgIGVsc2UKKyAg
ICB0ZXN0RmFpbGVkKF9hICsgIiBzaG91bGQgYmUgbm9uLXplcm8uIFdhcyAiICsgX2F2KTsKK30K
KworZnVuY3Rpb24gc2hvdWxkQmVOb25OdWxsKF9hKQoreworICB2YXIgZXhjZXB0aW9uOworICB2
YXIgX2F2OworICB0cnkgeworICAgICBfYXYgPSBldmFsKF9hKTsKKyAgfSBjYXRjaCAoZSkgewor
ICAgICBleGNlcHRpb24gPSBlOworICB9CisKKyAgaWYgKGV4Y2VwdGlvbikKKyAgICB0ZXN0RmFp
bGVkKF9hICsgIiBzaG91bGQgYmUgbm9uLW51bGwuIFRocmV3IGV4Y2VwdGlvbiAiICsgZXhjZXB0
aW9uKTsKKyAgZWxzZSBpZiAoX2F2ICE9IG51bGwpCisgICAgdGVzdFBhc3NlZChfYSArICIgaXMg
bm9uLW51bGwuIik7CisgIGVsc2UKKyAgICB0ZXN0RmFpbGVkKF9hICsgIiBzaG91bGQgYmUgbm9u
LW51bGwuIFdhcyAiICsgX2F2KTsKK30KKwogZnVuY3Rpb24gc2hvdWxkQmVVbmRlZmluZWQoX2Ep
CiB7CiAgIHZhciBleGNlcHRpb247Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>