<?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>164749</bug_id>
          
          <creation_ts>2016-11-14 16:27:35 -0800</creation_ts>
          <short_desc>[WebGL] Migrate construction functions from pointers to references</short_desc>
          <delta_ts>2016-11-17 18:41:55 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jonlee</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>noam</cc>
    
    <cc>ossy</cc>
    
    <cc>pvollan</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1251232</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-11-14 16:27:35 -0800</bug_when>
    <thetext>[WebGL] Migrate construction functions from pointers to references</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251234</commentid>
    <comment_count>1</comment_count>
      <attachid>294776</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-11-14 16:28:10 -0800</bug_when>
    <thetext>Created attachment 294776
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251236</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-14 16:29:56 -0800</bug_when>
    <thetext>Attachment 294776 did not pass style-queue:


ERROR: Source/WebCore/html/canvas/WebGLSharedObject.cpp:39:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 2 in 81 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251378</commentid>
    <comment_count>3</comment_count>
      <attachid>294814</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-11-14 22:42:31 -0800</bug_when>
    <thetext>Created attachment 294814
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251381</commentid>
    <comment_count>4</comment_count>
      <attachid>294816</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-11-14 22:46:14 -0800</bug_when>
    <thetext>Created attachment 294816
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251389</commentid>
    <comment_count>5</comment_count>
      <attachid>294819</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-11-14 23:13:57 -0800</bug_when>
    <thetext>Created attachment 294819
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251458</commentid>
    <comment_count>6</comment_count>
      <attachid>294844</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-11-15 09:31:48 -0800</bug_when>
    <thetext>Created attachment 294844
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251472</commentid>
    <comment_count>7</comment_count>
      <attachid>294844</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-11-15 10:18:24 -0800</bug_when>
    <thetext>Comment on attachment 294844
Patch

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

&gt; Source/WebCore/html/canvas/ANGLEInstancedArrays.cpp:57
&gt; +    Extensions3D&amp; extensions = context.graphicsContext3D()-&gt;getExtensions();

Use auto.

Actually, how about removing the local variable altogether?
return context.graphicsContext3D()-&gt;getExtensions().supports(...

&gt; Source/WebCore/html/canvas/WebGL2RenderingContext.cpp:961
&gt; +    if (WebGLDepthTexture::supported(*graphicsContext3D()))

I wonder if graphicsContext3D() can return a ref? Is it ever null? I don&apos;t think so.

&gt; Source/WebCore/html/canvas/WebGLCompressedTextureATC.cpp:55
&gt; +    Extensions3D&amp; extensions = context.graphicsContext3D()-&gt;getExtensions();

auto or remove local var

&gt; Source/WebCore/html/canvas/WebGLCompressedTexturePVRTC.cpp:57
&gt; +    Extensions3D&amp; extensions = context.graphicsContext3D()-&gt;getExtensions();

same here

&gt; Source/WebCore/html/canvas/WebGLCompressedTextureS3TC.cpp:57
&gt; +    Extensions3D&amp; extensions = context.graphicsContext3D()-&gt;getExtensions();

auto

&gt; Source/WebCore/html/canvas/WebGLDepthTexture.cpp:52
&gt; +    Extensions3D&amp; extensions = context.getExtensions();

auto

&gt; Source/WebCore/html/canvas/WebGLDrawBuffers.cpp:52
&gt; +    Extensions3D&amp; extensions = context.graphicsContext3D()-&gt;getExtensions();
&gt; +    return extensions.supports(&quot;GL_EXT_draw_buffers&quot;)

auto or local var

&gt; Source/WebCore/html/canvas/WebGLDrawBuffers.cpp:109
&gt; +    bool supportsDepth = (context-&gt;getExtensions().supports(&quot;GL_CHROMIUM_depth_texture&quot;)
&gt; +        || context-&gt;getExtensions().supports(&quot;GL_OES_depth_texture&quot;)
&gt; +        || context-&gt;getExtensions().supports(&quot;GL_ARB_depth_texture&quot;));

We can remove the CHROMIUM one now.

&gt; Source/WebCore/html/canvas/WebGLRenderingContext.cpp:215
&gt; +        &amp;&amp; WebGLDepthTexture::supported(*graphicsContext3D())) {
&gt;          if (!m_webglDepthTexture) {
&gt; -            m_context-&gt;getExtensions()-&gt;ensureEnabled(&quot;GL_CHROMIUM_depth_texture&quot;);
&gt; -            m_webglDepthTexture = std::make_unique&lt;WebGLDepthTexture&gt;(this);
&gt; +            m_context-&gt;getExtensions().ensureEnabled(&quot;GL_CHROMIUM_depth_texture&quot;);
&gt; +            m_webglDepthTexture = std::make_unique&lt;WebGLDepthTexture&gt;(*this);

I wonder if we need this at all.

&gt; Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp:579
&gt; +    m_isErrorGeneratedOnOutOfBoundsAccesses = m_context-&gt;getExtensions().isEnabled(&quot;GL_CHROMIUM_strict_attribs&quot;);
&gt; +    m_isResourceSafe = m_context-&gt;getExtensions().isEnabled(&quot;GL_CHROMIUM_resource_safe&quot;);

Hmm... these must have standard names now. Or we don&apos;t nee them.

&gt; Source/WebCore/html/canvas/WebGLVertexArrayObjectOES.cpp:45
&gt; +    Extensions3D&amp; extensions = context()-&gt;graphicsContext3D()-&gt;getExtensions();

auto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251475</commentid>
    <comment_count>8</comment_count>
      <attachid>294849</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-11-15 10:44:48 -0800</bug_when>
    <thetext>Created attachment 294849
Patch for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251476</commentid>
    <comment_count>9</comment_count>
      <attachid>294844</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-11-15 10:45:02 -0800</bug_when>
    <thetext>Comment on attachment 294844
Patch

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

&gt;&gt; Source/WebCore/html/canvas/WebGL2RenderingContext.cpp:961
&gt;&gt; +    if (WebGLDepthTexture::supported(*graphicsContext3D()))
&gt; 
&gt; I wonder if graphicsContext3D() can return a ref? Is it ever null? I don&apos;t think so.

Unfortunately, WebGLRenderingContextBase::destroyGraphicsContext3D() sets it to nullptr.

&gt;&gt; Source/WebCore/html/canvas/WebGLDrawBuffers.cpp:109
&gt;&gt; +        || context-&gt;getExtensions().supports(&quot;GL_ARB_depth_texture&quot;));
&gt; 
&gt; We can remove the CHROMIUM one now.

I&apos;ll do this in a follow-up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251513</commentid>
    <comment_count>10</comment_count>
      <attachid>294844</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-11-15 11:34:14 -0800</bug_when>
    <thetext>Comment on attachment 294844
Patch

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

&gt;&gt;&gt; Source/WebCore/html/canvas/WebGLDrawBuffers.cpp:109
&gt;&gt;&gt; +        || context-&gt;getExtensions().supports(&quot;GL_ARB_depth_texture&quot;));
&gt;&gt; 
&gt;&gt; We can remove the CHROMIUM one now.
&gt; 
&gt; I&apos;ll do this in a follow-up patch.

https://bugs.webkit.org/show_bug.cgi?id=164782</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251520</commentid>
    <comment_count>11</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-11-15 11:42:13 -0800</bug_when>
    <thetext>Committed r208740: &lt;http://trac.webkit.org/changeset/208740&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251823</commentid>
    <comment_count>12</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-11-16 00:49:28 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; Committed r208740: &lt;http://trac.webkit.org/changeset/208740&gt;

It broke the WinCairo build, see build.webkit.org for details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252304</commentid>
    <comment_count>13</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-11-17 09:22:04 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; Committed r208740: &lt;http://trac.webkit.org/changeset/208740&gt;
&gt; 
&gt; It broke the WinCairo build, see build.webkit.org for details.

https://build.webkit.org/builders/WinCairo%2064-Bit%20Release/builds/62839</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252557</commentid>
    <comment_count>14</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-11-17 18:41:55 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/208873</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294776</attachid>
            <date>2016-11-14 16:28:10 -0800</date>
            <delta_ts>2016-11-14 18:02:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164749-20161114162350.patch</filename>
            <type>text/plain</type>
            <size>94834</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4NjkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTA2MzZmZjM1OGM4Yzg2
MTMyNzljYmFkMjU4MzJlMjdhMGQ1MTMyOC4uNGFlMjk2MGFhOThmNmRkYjQzZWU3OGFjZjg0YmY2
YTBmZDY3NzYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2OSBAQAorMjAxNi0xMS0xNCAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJHTF0g
TWlncmF0ZSBjb25zdHJ1Y3Rpb24gZnVuY3Rpb25zIGZyb20gcG9pbnRlcnMgdG8gcmVmZXJlbmNl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0NzQ5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogaHRtbC9jYW52YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QU5HTEVJbnN0YW5jZWRBcnJheXM6OkFOR0xFSW5zdGFuY2VkQXJy
YXlzKToKKyAgICAgICAgKFdlYkNvcmU6OkFOR0xFSW5zdGFuY2VkQXJyYXlzOjpkcmF3QXJyYXlz
SW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6QU5HTEVJbnN0YW5jZWRBcnJheXM6
OmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkFOR0xFSW5z
dGFuY2VkQXJyYXlzOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUpOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvRVhU
QmxlbmRNaW5NYXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6RVhUQmxlbmRNaW5NYXg6OkVYVEJs
ZW5kTWluTWF4KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRCbGVuZE1pbk1heC5oOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL0VYVEZyYWdEZXB0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
WFRGcmFnRGVwdGg6OkVYVEZyYWdEZXB0aCk6CisgICAgICAgICogaHRtbC9jYW52YXMvRVhURnJh
Z0RlcHRoLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvRVhUU2hhZGVyVGV4dHVyZUxPRC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpFWFRTaGFkZXJUZXh0dXJlTE9EOjpFWFRTaGFkZXJUZXh0dXJl
TE9EKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRTaGFkZXJUZXh0dXJlTE9ELmg6CisgICAg
ICAgICogaHRtbC9jYW52YXMvRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYzo6RVhUVGV4dHVyZUZpbHRl
ckFuaXNvdHJvcGljKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRUZXh0dXJlRmlsdGVyQW5p
c290cm9waWMuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRzUkdCLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVYVHNSR0I6OkVYVHNSR0IpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0VYVHNS
R0IuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNFbGVtZW50SW5kZXhVaW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok9FU0VsZW1lbnRJbmRleFVpbnQ6Ok9FU0VsZW1lbnRJbmRleFVpbnQp
OgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU0VsZW1lbnRJbmRleFVpbnQuaDoKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9PRVNTdGFuZGFyZERlcml2YXRpdmVzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok9FU1N0YW5kYXJkRGVyaXZhdGl2ZXM6Ok9FU1N0YW5kYXJkRGVyaXZhdGl2ZXMpOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuaDoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T0VTVGV4
dHVyZUZsb2F0OjpPRVNUZXh0dXJlRmxvYXQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1Rl
eHR1cmVGbG9hdC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdExpbmVh
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPRVNUZXh0dXJlRmxvYXRMaW5lYXI6Ok9FU1RleHR1
cmVGbG9hdExpbmVhcik6CisgICAgICAgICogaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0TGlu
ZWFyLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpPRVNUZXh0dXJlSGFsZkZsb2F0OjpPRVNUZXh0dXJlSGFsZkZsb2F0
KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0Lmg6CisgICAgICAg
ICogaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpPRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyOjpPRVNUZXh0dXJlSGFsZkZsb2F0TGlu
ZWFyKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLmg6
CisgICAgICAgICogaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6T0VTVmVydGV4QXJyYXlPYmplY3Q6Ok9FU1ZlcnRleEFycmF5T2JqZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok9FU1ZlcnRleEFycmF5T2JqZWN0OjpjcmVhdGVWZXJ0ZXhBcnJh
eU9FUyk6CisgICAgICAgIChXZWJDb3JlOjpPRVNWZXJ0ZXhBcnJheU9iamVjdDo6ZGVsZXRlVmVy
dGV4QXJyYXlPRVMpOgorICAgICAgICAoV2ViQ29yZTo6T0VTVmVydGV4QXJyYXlPYmplY3Q6Omlz
VmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoV2ViQ29yZTo6T0VTVmVydGV4QXJyYXlPYmplY3Q6
OmJpbmRWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVy
aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0
Ojppbml0aWFsaXplVmVydGV4QXJyYXlPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZVZlcnRleEFycmF5KToKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9XZWJHTEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEJ1ZmZlcjo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQnVmZmVyOjpXZWJHTEJ1ZmZlcik6CisgICAg
ICAgICogaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9X
ZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29t
cHJlc3NlZFRleHR1cmVBVEM6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMpOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaDoKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZS
VEMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5o
OgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlUzNUQyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZVMzVEMuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbnRleHRPYmplY3Qu
Y3A6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dE9i
amVjdC5jcHAuCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0T2JqZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29udGV4dE9iamVjdDo6V2ViR0xDb250ZXh0T2JqZWN0
KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbnRleHRPYmplY3QuaDoKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9XZWJHTERlYnVnUmVuZGVyZXJJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMRGVidWdSZW5kZXJlckluZm86OldlYkdMRGVidWdSZW5kZXJlckluZm8pOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRGVidWdSZW5kZXJlckluZm8uaDoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TERlYnVnU2hhZGVyczo6V2ViR0xEZWJ1Z1NoYWRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xEZWJ1Z1NoYWRlcnM6OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UpOgorICAgICAgICAqIGh0
bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xEZXB0aFRleHR1cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xEZXB0aFRleHR1cmU6
OldlYkdMRGVwdGhUZXh0dXJlKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4
dHVyZS5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xEcmF3QnVmZmVyczo6V2ViR0xEcmF3QnVmZmVycyk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTERyYXdCdWZmZXJzOjpkcmF3QnVmZmVyc1dFQkdMKToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmg6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xFeHRlbnNpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xFeHRlbnNpb246
OldlYkdMRXh0ZW5zaW9uKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5o
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xFeHRlbnNpb246OnJlZik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTEV4dGVuc2lvbjo6ZGVyZWYpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xFeHRl
bnNpb246OmNvbnRleHQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xGcmFtZWJ1ZmZlcjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OldlYkdMRnJhbWVidWZmZXIpOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaDoKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTExvc2VDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTG9zZUNvbnRl
eHQ6OldlYkdMTG9zZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMb3NlQ29udGV4
dDo6bG9zZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMb3NlQ29udGV4dDo6cmVz
dG9yZUNvbnRleHQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMTG9zZUNvbnRleHQuaDoK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTE9iamVjdDo6V2ViR0xPYmplY3QpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
T2JqZWN0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUHJvZ3JhbTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUHJvZ3JhbTo6V2ViR0xQcm9ncmFtKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFBy
b2dyYW0uaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFF1ZXJ5LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUXVlcnk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFF1
ZXJ5OjpXZWJHTFF1ZXJ5KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFF1ZXJ5Lmg6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJidWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmJ1ZmZlcjo6V2ViR0xSZW5kZXJidWZmZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L1dlYkdMUmVuZGVyYnVmZmVyLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6
aW5pdGlhbGl6ZVZlcnRleEFycmF5T2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpjaGVja09iamVjdFRvQmVCb3VuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGVCdWZmZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRlRnJhbWVidWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRlVGV4dHVyZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGVQcm9n
cmFtKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0
ZVJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpjcmVhdGVTaGFkZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMU2FtcGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFNhbXBsZXI6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFNhbXBsZXI6OldlYkdMU2FtcGxlcik6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xTYW1wbGVyLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xTaGFkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xTaGFkZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFNoYWRlcjo6V2ViR0xTaGFkZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMU2hhZGVyLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xTaGFyZWRPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xTaGFyZWRPYmplY3Q6OldlYkdMU2hhcmVkT2JqZWN0
KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFNoYXJlZE9iamVjdC5oOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMU3luYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFN5bmM6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFN5bmM6OldlYkdMU3luYyk6CisgICAg
ICAgICogaHRtbC9jYW52YXMvV2ViR0xTeW5jLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xUZXh0dXJlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMVGV4dHVyZTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMVGV4dHVyZTo6V2ViR0xUZXh0dXJlKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMVGV4dHVyZTo6Z2V0VHlwZSk6CisgICAgICAgICogaHRtbC9jYW52YXMv
V2ViR0xUZXh0dXJlLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xUcmFuc2Zvcm1GZWVk
YmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFRyYW5zZm9ybUZlZWRiYWNrOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xUcmFuc2Zvcm1GZWVkYmFjazo6V2ViR0xUcmFu
c2Zvcm1GZWVkYmFjayk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xUcmFuc2Zvcm1GZWVk
YmFjay5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xWZXJ0ZXhBcnJheU9iamVjdDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMVmVydGV4QXJyYXlPYmplY3Q6OldlYkdMVmVydGV4QXJyYXlP
YmplY3QpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3QuaDoK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZTo6V2ViR0xWZXJ0ZXhB
cnJheU9iamVjdEJhc2UpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlP
YmplY3RCYXNlLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVj
dE9FUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6V2Vi
R0xWZXJ0ZXhBcnJheU9iamVjdE9FUyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xWZXJ0
ZXhBcnJheU9iamVjdE9FUy5oOgorCiAyMDE2LTExLTE0ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHpl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgQnVnIDE2NDcwMjogV2ViQ29udGVudCBjcmFzaCBkdWUg
dG8gY2hlY2tlZCB1bnNpZ25lZCBvdmVyZmxvdyBpbiBXZWJDb3JlOiBXZWJDb3JlOjpSZW5kZXJM
YXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdMYXllciBjb25zdCArIDExMDQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA0ZmZiMzI3Njk5NjkzZjBhZWM5ODg3ZGRkNzhmMTFkNmQwMjI0NzczLi44MGY3NDZiZjhiYWNl
MTBmZDc5ZjRmYWFmNDQ2YTI2MWU3NzZjNDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02ODA5LDcgKzY4MDksNiBAQAogCQlG
REY3RTlDNDEzQUMyMURCMDBBNTFFQUMgLyogSlNBdWRpb0J1ZmZlckNhbGxiYWNrLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGREY3RTlDMjEzQUMyMURC
MDBBNTFFQUMgLyogSlNBdWRpb0J1ZmZlckNhbGxiYWNrLmggKi87IH07CiAJCUZFMEQ4NEU5MTA0
ODQzNDgwMDFBMTc5RSAvKiBXZWJFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkUwRDg0RTgxMDQ4NDM0ODAwMUExNzlFIC8qIFdlYkV2ZW50Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkUwRDg0
RUIxMDQ4NDM2RTAwMUExNzlFIC8qIFdlYkV2ZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUwRDg0RUExMDQ4NDM2RTAwMUExNzlFIC8qIFdlYkV2
ZW50Lm1tICovOyB9OwotCQlGRTMzNzFBMjE2N0MxMUQ0MDBFREI3NTIgLyogRGF0YWJhc2VCYXNp
Y1R5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RTMzNzFBMDE2N0MxMUQ0MDBFREI3NTIgLyogRGF0YWJhc2VCYXNpY1R5cGVzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkUzNkZEMTUxNkM3ODI2
NTAwRjg4N0MxIC8qIENoYW5nZVZlcnNpb25EYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTM2RkQxMTE2Qzc4MjY0MDBGODg3QzEgLyogQ2hhbmdl
VmVyc2lvbkRhdGEuaCAqLzsgfTsKIAkJRkUzNkZEMTYxNkM3ODI2NTAwRjg4N0MxIC8qIFNRTFRy
YW5zYWN0aW9uU3RhdGVNYWNoaW5lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFMzZGRDEyMTZDNzgyNjQwMEY4ODdDMSAvKiBTUUxUcmFuc2FjdGlv
blN0YXRlTWFjaGluZS5jcHAgKi87IH07CiAJCUZFMzZGRDE3MTZDNzgyNjUwMEY4ODdDMSAvKiBT
UUxUcmFuc2FjdGlvblN0YXRlTWFjaGluZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkUzNkZEMTMxNkM3ODI2NDAwRjg4N0MxIC8qIFNRTFRyYW5zYWN0
aW9uU3RhdGVNYWNoaW5lLmggKi87IH07CkBAIC04MDczLDYgKzgwNzIsNyBAQAogCQkxQzI0RUVB
QTFDNzJBQTBBMDA4MEY4RkMgLyogSlNGb250RmFjZVNldEN1c3RvbS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ZvbnRGYWNlU2V0Q3VzdG9tLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMyNjQ5NzkwRDdFMjQ4QTAwQkQxMEYyIC8qIERvY3Vt
ZW50TG9hZGVyTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERv
Y3VtZW50TG9hZGVyTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMzMjQ5
MTAxQzZENkEzQjAwN0VEQjMyIC8qIEZvbnRWYXJpYW50QnVpbGRlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb250VmFyaWFudEJ1aWxkZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxQzM1NjE4NTFEREE4N0EwMDA1NjE3RjkgLyogV2ViR0xD
b250ZXh0T2JqZWN0LmNwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
R0xDb250ZXh0T2JqZWN0LmNwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzM5NjlD
RjFCNzQyMTFFMDAyQkNGQTcgLyogRm9udENhY2hlQ29yZVRleHQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udENhY2hlQ29yZVRleHQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQzVFOTgwRjFBMDJDRUZBMDAyREI1NUYgLyogQ29yZVRleHRT
UEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ29yZVRleHRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUM2NDY2MjcxQTEyQzNGOTAwOTQ2MDNDIC8qIE5TRm9udFNQSS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBOU0ZvbnRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0ODE1
LDcgKzE0ODE1LDYgQEAKIAkJRkRGN0U5QzIxM0FDMjFEQjAwQTUxRUFDIC8qIEpTQXVkaW9CdWZm
ZXJDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0F1ZGlvQnVm
ZmVyQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUwRDg0RTgxMDQ4
NDM0ODAwMUExNzlFIC8qIFdlYkV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMEQ4NEVBMTA0
ODQzNkUwMDFBMTc5RSAvKiBXZWJFdmVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdlYkV2ZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlG
RTMzNzFBMDE2N0MxMUQ0MDBFREI3NTIgLyogRGF0YWJhc2VCYXNpY1R5cGVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFiYXNlQmFzaWNUeXBlcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGRTM2RkQxMTE2Qzc4MjY0MDBGODg3QzEgLyogQ2hhbmdlVmVy
c2lvbkRhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2hhbmdlVmVyc2lv
bkRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUzNkZEMTIxNkM3ODI2NDAw
Rjg4N0MxIC8qIFNRTFRyYW5zYWN0aW9uU3RhdGVNYWNoaW5lLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNRTFRyYW5zYWN0aW9uU3RhdGVNYWNoaW5lLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUzNkZEMTMxNkM3ODI2NDAwRjg4N0MxIC8qIFNR
TFRyYW5zYWN0aW9uU3RhdGVNYWNoaW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNRTFRyYW5zYWN0aW9uU3RhdGVNYWNoaW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNjc3OCw2ICsxNjc3Nyw3IEBACiAJCQkJMDFEM0NGN0MxNEJEMEEzMDAwRkU5OTcw
IC8qIFdlYkdMQ29udGV4dEdyb3VwLmNwcCAqLywKIAkJCQkwMUQzQ0Y3RDE0QkQwQTMwMDBGRTk5
NzAgLyogV2ViR0xDb250ZXh0R3JvdXAuaCAqLywKIAkJCQkwMUQzQ0Y3RTE0QkQwQTMwMDBGRTk5
NzAgLyogV2ViR0xDb250ZXh0T2JqZWN0LmNwcCAqLywKKwkJCQkxQzM1NjE4NTFEREE4N0EwMDA1
NjE3RjkgLyogV2ViR0xDb250ZXh0T2JqZWN0LmNwICovLAogCQkJCTAxRDNDRjdGMTRCRDBBMzAw
MEZFOTk3MCAvKiBXZWJHTENvbnRleHRPYmplY3QuaCAqLywKIAkJCQlBMEVFMERGMTE0NEY4MjU1
MDBGODBCMEQgLyogV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5jcHAgKi8sCiAJCQkJQTBFRTBERjIx
NDRGODI1NTAwRjgwQjBEIC8qIFdlYkdMRGVidWdSZW5kZXJlckluZm8uaCAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmNwcAppbmRl
eCA0NTkwNWU2MTExY2E3ODc0NTMyOGEyNmQ5ZTg5ZWQzMzI0NzlhNmQ5Li5hMTY0MmIzN2VjYWI1
MTdhODNlZTViY2NkYjJlY2E5ZTJkY2RlODBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9BTkdMRUluc3RhbmNlZEFycmF5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQU5HTEVJbnN0YW5jZWRBcnJheXM6OkFOR0xFSW5zdGFu
Y2VkQXJyYXlzKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRleHQpCitBTkdMRUluc3Rh
bmNlZEFycmF5czo6QU5HTEVJbnN0YW5jZWRBcnJheXMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7CiB9CkBAIC02NCwy
MyArNjQsMjMgQEAgYm9vbCBBTkdMRUluc3RhbmNlZEFycmF5czo6c3VwcG9ydGVkKFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRleHQpCiAKIHZvaWQgQU5HTEVJbnN0YW5jZWRBcnJheXM6
OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQzNEZW51bSBtb2RlLCBHQzNEaW50IGZpcnN0LCBH
QzNEc2l6ZWkgY291bnQsIEdDM0RzaXplaSBwcmltY291bnQpCiB7Ci0gICAgaWYgKG1fY29udGV4
dC0+aXNDb250ZXh0TG9zdCgpKQorICAgIGlmIChtX2NvbnRleHQuaXNDb250ZXh0TG9zdCgpKQog
ICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT5kcmF3QXJyYXlzSW5zdGFuY2VkKG1vZGUs
IGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsKKyAgICBtX2NvbnRleHQuZHJhd0FycmF5c0luc3Rh
bmNlZChtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCk7CiB9CiAKIHZvaWQgQU5HTEVJbnN0
YW5jZWRBcnJheXM6OmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDM0RlbnVtIG1vZGUsIEdD
M0RzaXplaSBjb3VudCwgR0MzRGVudW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwgR0MzRHNpemVp
IHByaW1jb3VudCkKIHsKLSAgICBpZiAobV9jb250ZXh0LT5pc0NvbnRleHRMb3N0KCkpCisgICAg
aWYgKG1fY29udGV4dC5pc0NvbnRleHRMb3N0KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2Nv
bnRleHQtPmRyYXdFbGVtZW50c0luc3RhbmNlZChtb2RlLCBjb3VudCwgdHlwZSwgb2Zmc2V0LCBw
cmltY291bnQpOworICAgIG1fY29udGV4dC5kcmF3RWxlbWVudHNJbnN0YW5jZWQobW9kZSwgY291
bnQsIHR5cGUsIG9mZnNldCwgcHJpbWNvdW50KTsKIH0KIAogdm9pZCBBTkdMRUluc3RhbmNlZEFy
cmF5czo6dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDM0R1aW50IGluZGV4LCBHQzNEdWludCBk
aXZpc29yKQogewotICAgIGlmIChtX2NvbnRleHQtPmlzQ29udGV4dExvc3QoKSkKKyAgICBpZiAo
bV9jb250ZXh0LmlzQ29udGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4
dC0+dmVydGV4QXR0cmliRGl2aXNvcihpbmRleCwgZGl2aXNvcik7CisgICAgbV9jb250ZXh0LnZl
cnRleEF0dHJpYkRpdmlzb3IoaW5kZXgsIGRpdmlzb3IpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9BTkdMRUluc3Rh
bmNlZEFycmF5cy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQU5HTEVJbnN0YW5jZWRB
cnJheXMuaAppbmRleCA3NjVlY2ZlNjg5ZjVhZjNiZWIyYWE1MTU3NWYyYTc1NDA3NWI1YTg5Li5m
ZWU0MWFjNzEyNzI5NTRlZDliYmRkZDYyYTAzMTc3YzE2ZDE1N2I3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9BTkdMRUluc3RhbmNlZEFycmF5cy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmgKQEAgLTMzLDcgKzMz
LDcgQEAgY2xhc3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTsKIAogY2xhc3MgQU5HTEVJbnN0
YW5jZWRBcnJheXMgZmluYWwgOiBwdWJsaWMgV2ViR0xFeHRlbnNpb24gewogcHVibGljOgotICAg
IGV4cGxpY2l0IEFOR0xFSW5zdGFuY2VkQXJyYXlzKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uq
KTsKKyAgICBleHBsaWNpdCBBTkdMRUluc3RhbmNlZEFycmF5cyhXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlJik7CiAgICAgdmlydHVhbCB+QU5HTEVJbnN0YW5jZWRBcnJheXMoKTsKIAogICAgIHZp
cnR1YWwgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9FWFRCbGVuZE1pbk1heC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9FWFRCbGVuZE1pbk1heC5jcHAKaW5kZXggZjVlYWRhNjZmYTUyYjVkNmQ0OWNj
YTMwZGFkMDg0YzM4ODJhZWMxYS4uNzYyYTVkOWY2NzVhNjJmMGQ3NTE5MTMyYjgwODFiODBlYTUw
OGU2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQmxlbmRNaW5N
YXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVEJsZW5kTWluTWF4LmNw
cApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUVYVEJsZW5kTWlu
TWF4OjpFWFRCbGVuZE1pbk1heChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjb250ZXh0KQor
RVhUQmxlbmRNaW5NYXg6OkVYVEJsZW5kTWluTWF4KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Um
IGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQmxlbmRNaW5NYXguaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0VYVEJsZW5kTWluTWF4LmgKaW5kZXggOWVhZjI5ZmQ2MTEzZjE5
NzBmZGFmOThhYTkzMDA0NTRjZjMxYTRmOC4uNTk1OTY4NDRlZjNhZmZmNDEzMjQyNmMzYzAxYWZk
YTA3YmRiZTE1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQmxl
bmRNaW5NYXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRCbGVuZE1pbk1h
eC5oCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRVhUQmxl
bmRNaW5NYXggZmluYWwgOiBwdWJsaWMgV2ViR0xFeHRlbnNpb24gewogcHVibGljOgotICAgIGV4
cGxpY2l0IEVYVEJsZW5kTWluTWF4KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBl
eHBsaWNpdCBFWFRCbGVuZE1pbk1heChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAg
dmlydHVhbCB+RVhUQmxlbmRNaW5NYXgoKTsKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgp
IGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
RVhURnJhZ0RlcHRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVEZyYWdEZXB0
aC5jcHAKaW5kZXggODY3MDczNmNjYzJiOGE1NjYxNDZlZTg1ZjU5MTVkMWJmZmU0MzA0OS4uNjI2
MzA5YzgzYmQxYzc0ZDU3NmQ1ODAyMmJlMTM0OTY2NGJlZGExYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvRVhURnJhZ0RlcHRoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9FWFRGcmFnRGVwdGguY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotRVhURnJhZ0RlcHRoOjpFWFRGcmFnRGVwdGgoV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSogY29udGV4dCkKK0VYVEZyYWdEZXB0aDo6RVhURnJhZ0RlcHRoKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250
ZXh0KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhURnJh
Z0RlcHRoLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRGcmFnRGVwdGguaAppbmRl
eCA5Y2Y3MGViMTZhMzE5NTg0ODNhMGM5YjlhYzZkNDFhZDdiNWFkYmE0Li41ZThhNGY5YzJmM2Q2
NjEzNDJlNDhjNmQ0OTc3MDY4ZGMyMGYyOWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9FWFRGcmFnRGVwdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9FWFRGcmFnRGVwdGguaApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEVYVEZyYWdEZXB0aCBmaW5hbCA6IHB1YmxpYyBXZWJHTEV4dGVuc2lvbiB7CiBwdWJs
aWM6Ci0gICAgZXhwbGljaXQgRVhURnJhZ0RlcHRoKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uq
KTsKKyAgICBleHBsaWNpdCBFWFRGcmFnRGVwdGgoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYp
OwogICAgIHZpcnR1YWwgfkVYVEZyYWdEZXB0aCgpOwogCiAgICAgRXh0ZW5zaW9uTmFtZSBnZXRO
YW1lKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9FWFRTaGFkZXJUZXh0dXJlTE9ELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0VYVFNoYWRlclRleHR1cmVMT0QuY3BwCmluZGV4IDBkYTMyNWQwMDgwOTZmZmRjZTg3MTM0ZTE3
YzI2NzA4YzMzNjI0NTIuLjQ2ZTQwNmE0MzQ4ZWZlZDg5OWIyMDcxMDAzNzQzZmRjM2Y3NjY0Njkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFNoYWRlclRleHR1cmVM
T0QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFNoYWRlclRleHR1cmVM
T0QuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRVhUU2hh
ZGVyVGV4dHVyZUxPRDo6RVhUU2hhZGVyVGV4dHVyZUxPRChXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlKiBjb250ZXh0KQorRVhUU2hhZGVyVGV4dHVyZUxPRDo6RVhUU2hhZGVyVGV4dHVyZUxPRChX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24o
Y29udGV4dCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VY
VFNoYWRlclRleHR1cmVMT0QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFNoYWRl
clRleHR1cmVMT0QuaAppbmRleCBlMDAxOTJhNzFhZmE1MjhkMmNjMDg4MmZjMTI5ZDNhYWEyNTQ5
ZjZlLi40N2MxOTJmMjA1OTk3YWNkMzAwZWUyNmJkZWMwOTUzZWNkZmMxNDUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRTaGFkZXJUZXh0dXJlTE9ELmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUU2hhZGVyVGV4dHVyZUxPRC5oCkBAIC0zMSw3
ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRVhUU2hhZGVyVGV4dHVyZUxP
RCBmaW5hbCA6IHB1YmxpYyBXZWJHTEV4dGVuc2lvbiB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQg
RVhUU2hhZGVyVGV4dHVyZUxPRChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAgZXhw
bGljaXQgRVhUU2hhZGVyVGV4dHVyZUxPRChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAg
ICAgdmlydHVhbCB+RVhUU2hhZGVyVGV4dHVyZUxPRCgpOwogCiAgICAgRXh0ZW5zaW9uTmFtZSBn
ZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9FWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmNwcAppbmRleCBkYTc0YzRi
ZTEzODk2M2EyOTg1NmYzZjU5MDBhMDVhOTg3Y2E5NzNlLi4wYmQzZGZhMmJlNzU3NDkzYjU0N2U3
ZjI0YzhkMDdlOGVmMzYxZWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9FWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0VYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5jcHAKQEAgLTMxLDcgKzMxLDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1FWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWM6
OkVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBj
b250ZXh0KQorRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljOjpFWFRUZXh0dXJlRmlsdGVyQW5p
c290cm9waWMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdM
RXh0ZW5zaW9uKGNvbnRleHQpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9FWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0VYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5oCmluZGV4IGQxZjI0ZjY1MWU3
NGZhYTJiMTBmNDQ5MTFjYmFjYzg1ZDQ5MzhjOWYuLjQxOTdkNWZiYjQwNTRkODU1NWRkMDU1OTNh
ZTUxZTE3NzA0NzBiZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VY
VFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0VYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5oCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljIGZpbmFs
IDogcHVibGljIFdlYkdMRXh0ZW5zaW9uIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBFWFRUZXh0
dXJlRmlsdGVyQW5pc290cm9waWMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOworICAgIGV4
cGxpY2l0IEVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYyhXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJik7CiAgICAgdmlydHVhbCB+RVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljKCk7CiAKICAg
ICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVHNSR0IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvRVhUc1JHQi5jcHAKaW5kZXggMjRmNTA4ODg2MzVkNGMxNjk0OGQwZjZiMzZlNTFi
NzIyYjc4M2VlNS4uZTRlZGY1MWM3NDVhMGI4NzA4NTYyMDIzODE4ZDkzYTNjMDZmNWM5NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUc1JHQi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUc1JHQi5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1FWFRzUkdCOjpFWFRzUkdCKFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UqIGNvbnRleHQpCitFWFRzUkdCOjpFWFRzUkdCKFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUc1JHQi5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvRVhUc1JHQi5oCmluZGV4IGM3YzBkYTQxNDQ1OWE0NzRmNGMxY2Mw
Zjc2MDBhZDFjMzNmNTEwOGQuLjRhNjljYmE3NTUyYzk1MmI1OTVhNmMyY2YyZjczOWU1M2U4OTAz
YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVHNSR0IuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRzUkdCLmgKQEAgLTMxLDcgKzMxLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBFWFRzUkdCIGZpbmFsIDogcHVibGljIFdlYkdM
RXh0ZW5zaW9uIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBFWFRzUkdCKFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UqKTsKKyAgICBleHBsaWNpdCBFWFRzUkdCKFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UmKTsKICAgICB2aXJ0dWFsIH5FWFRzUkdCKCk7CiAKICAgICBFeHRlbnNpb25OYW1lIGdl
dE5hbWUoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL09FU0VsZW1lbnRJbmRleFVpbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvT0VTRWxlbWVudEluZGV4VWludC5jcHAKaW5kZXggNjViNjgzOGRlYjc4OTUyNDE1NDMxYzEy
NGU0ODJkM2I2MTdiNTVkZS4uMTAxYzVmMTBkNzUwMGY3YmYyZjk5MTFjMzY2M2ExMDAyNDU0NDU4
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTRWxlbWVudEluZGV4
VWludC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTRWxlbWVudEluZGV4
VWludC5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1PRVNF
bGVtZW50SW5kZXhVaW50OjpPRVNFbGVtZW50SW5kZXhVaW50KFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UqIGNvbnRleHQpCitPRVNFbGVtZW50SW5kZXhVaW50OjpPRVNFbGVtZW50SW5kZXhVaW50
KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lv
bihjb250ZXh0KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
T0VTRWxlbWVudEluZGV4VWludC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTRWxl
bWVudEluZGV4VWludC5oCmluZGV4IDc5NjBkYTQ4ZmI0YmE1NjNlNmViZjFmZTA0NjBkMTkwNzgy
YWE5NmEuLjQ2MDMyMWQ0NDhhMThiYTczY2IxOTU1YzMyNDdlNDUxZTFjMTFmNTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU0VsZW1lbnRJbmRleFVpbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNFbGVtZW50SW5kZXhVaW50LmgKQEAgLTMx
LDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBPRVNFbGVtZW50SW5kZXhV
aW50IGZpbmFsIDogcHVibGljIFdlYkdMRXh0ZW5zaW9uIHsKIHB1YmxpYzoKLSAgICBleHBsaWNp
dCBPRVNFbGVtZW50SW5kZXhVaW50KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBl
eHBsaWNpdCBPRVNFbGVtZW50SW5kZXhVaW50KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsK
ICAgICB2aXJ0dWFsIH5PRVNFbGVtZW50SW5kZXhVaW50KCk7CiAKICAgICBFeHRlbnNpb25OYW1l
IGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5jcHAKaW5kZXggZTc1NGFjZjczYzk4ODZm
N2M5YmM3Y2ZjZmEyNmM5NjBiN2I1MmM5YS4uZGNiYjgxOWUzNDhlNDQ3OGY2ZWU0NWZmMTA3NDkw
MjNjNDAzZGRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTU3Rh
bmRhcmREZXJpdmF0aXZlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VT
U3RhbmRhcmREZXJpdmF0aXZlcy5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1PRVNTdGFuZGFyZERlcml2YXRpdmVzOjpPRVNTdGFuZGFyZERlcml2YXRpdmVz
KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRleHQpCitPRVNTdGFuZGFyZERlcml2YXRp
dmVzOjpPRVNTdGFuZGFyZERlcml2YXRpdmVzKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNv
bnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5oCmluZGV4IDNh
Mjk2OWRmNTdlMjAwZjUxMjRjZGUzMzUwZjZlNDRhNTc3MjFlMzUuLmNjZmM4ODQwNjg3YzNiMTY3
NWJkYTFlMmQxMWFmOTdkMjhmMjM5MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9PRVNTdGFuZGFyZERlcml2YXRpdmVzLmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBPRVNTdGFuZGFyZERlcml2YXRpdmVzIGZpbmFsIDogcHVi
bGljIFdlYkdMRXh0ZW5zaW9uIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBPRVNTdGFuZGFyZERl
cml2YXRpdmVzKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBleHBsaWNpdCBPRVNT
dGFuZGFyZERlcml2YXRpdmVzKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKICAgICB2aXJ0
dWFsIH5PRVNTdGFuZGFyZERlcml2YXRpdmVzKCk7CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5h
bWUoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL09FU1RleHR1cmVGbG9hdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNU
ZXh0dXJlRmxvYXQuY3BwCmluZGV4IGI4ZmZlYzdkM2NlOTc4NWE0MDUyZWQwYTM5MDE0MWNiZGY3
MzVlOTEuLjYwZDJmN2I1MGI4YmEwMmM0MTY3OTNlMmI5YzM4OTk4ZDFhNWU4Y2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0LmNwcApAQCAtMzEsNyAr
MzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU9FU1RleHR1cmVGbG9hdDo6T0VTVGV4
dHVyZUZsb2F0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRleHQpCitPRVNUZXh0dXJl
RmxvYXQ6Ok9FU1RleHR1cmVGbG9hdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0
KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0LmgKaW5kZXggYWJhNzlkMzFiMjJhNDlmODNlOTUz
ODRmYzA5NjlkYjg2OWVmZjM1YS4uZTdjMDcxNWRkNzBkNzZiOTE4ZjVhMjJhYzYxM2I1ZDRlYTVm
MzQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZs
b2F0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0LmgK
QEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBPRVNUZXh0dXJl
RmxvYXQgZmluYWwgOiBwdWJsaWMgV2ViR0xFeHRlbnNpb24gewogcHVibGljOgotICAgIE9FU1Rl
eHR1cmVGbG9hdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAgT0VTVGV4dHVyZUZs
b2F0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKICAgICB2aXJ0dWFsIH5PRVNUZXh0dXJl
RmxvYXQoKTsKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0TGlu
ZWFyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdExpbmVh
ci5jcHAKaW5kZXggMmExMGE1MGFkZWZhMDVhZGNiNTQyY2NjNGE4YzhmZjI5MzBiNDBlZS4uZmNl
OTE3OTA4NGRkMzJiMDE1Y2M3MDkxZWY5MTc1MDQzNmU4M2JjZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0TGluZWFyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXRMaW5lYXIuY3BwCkBAIC0zMCw3
ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotT0VTVGV4dHVyZUZsb2F0TGluZWFy
OjpPRVNUZXh0dXJlRmxvYXRMaW5lYXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29udGV4
dCkKK09FU1RleHR1cmVGbG9hdExpbmVhcjo6T0VTVGV4dHVyZUZsb2F0TGluZWFyKFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0
KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVy
ZUZsb2F0TGluZWFyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxv
YXRMaW5lYXIuaAppbmRleCA1N2RiYWRkNmM4MDg4NGE5NjYzZTkxYTE5MDQxMmExNDI1YTlkZGIx
Li45M2RkMTM0NjBjZDNhYzA1Y2U1MWM3M2E1MDVkM2M4NGM2YTNmM2RkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXRMaW5lYXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXRMaW5lYXIuaApAQCAtMzEs
NyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE9FU1RleHR1cmVGbG9hdExp
bmVhciBmaW5hbCA6IHB1YmxpYyBXZWJHTEV4dGVuc2lvbiB7CiBwdWJsaWM6Ci0gICAgZXhwbGlj
aXQgT0VTVGV4dHVyZUZsb2F0TGluZWFyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAg
ICBleHBsaWNpdCBPRVNUZXh0dXJlRmxvYXRMaW5lYXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSYpOwogICAgIHZpcnR1YWwgfk9FU1RleHR1cmVGbG9hdExpbmVhcigpOwogCiAgICAgRXh0ZW5z
aW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQuY3BwCmluZGV4IGJkZDE2N2MwMzI3YTNm
ODVhYzc0YWNjNzg2OGEwMjNlMmM4ZmQ0MDcuLmYxZjc0OTZkZDJkY2UwZWYxMjcwYTM0YTQwMTk1
NThiYzZjMjE5NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1Rl
eHR1cmVIYWxmRmxvYXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1Rl
eHR1cmVIYWxmRmxvYXQuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotT0VTVGV4dHVyZUhhbGZGbG9hdDo6T0VTVGV4dHVyZUhhbGZGbG9hdChXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlKiBjb250ZXh0KQorT0VTVGV4dHVyZUhhbGZGbG9hdDo6T0VTVGV4dHVy
ZUhhbGZGbG9hdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2Vi
R0xFeHRlbnNpb24oY29udGV4dCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL09FU1RleHR1cmVIYWxmRmxvYXQuaAppbmRleCA3MjVlYzY2NTQ0ZDAxYWJhOTg5YjZkMWUy
YTAwNzE4MTE1Y2RkOTJhLi5iM2Y2NzZkZDczYWE1NTAwZjE4NzVmNzIwZjBjN2ExMWFjMDAyNDlm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZs
b2F0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9h
dC5oCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgT0VTVGV4
dHVyZUhhbGZGbG9hdCBmaW5hbCA6IHB1YmxpYyBXZWJHTEV4dGVuc2lvbiB7CiBwdWJsaWM6Ci0g
ICAgT0VTVGV4dHVyZUhhbGZGbG9hdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAg
T0VTVGV4dHVyZUhhbGZGbG9hdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAgdmly
dHVhbCB+T0VTVGV4dHVyZUhhbGZGbG9hdCgpOwogCiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1l
KCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9PRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL09FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXIuY3BwCmluZGV4IDQyMTFjODA2MjczMzNiYmJl
NDFiYTk1NWRmNDBjOWE1MzU1MTJkYjQuLjM1OWUzMDAxNmUzOTZiOTU2NTY4OTAwMzE2MDkyODhi
YTc2NzIxYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1
cmVIYWxmRmxvYXRMaW5lYXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09F
U1RleHR1cmVIYWxmRmxvYXRMaW5lYXIuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhcjo6T0VTVGV4dHVyZUhhbGZG
bG9hdExpbmVhcihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjb250ZXh0KQorT0VTVGV4dHVy
ZUhhbGZGbG9hdExpbmVhcjo6T0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhcihXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxm
RmxvYXRMaW5lYXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxm
RmxvYXRMaW5lYXIuaAppbmRleCBlZGM1MjlhOWZhNjYzMTdlNDg2NGFlZjA3NWI0Nzg1N2I3ZWVh
OWVmLi40ODEwYTExMmJhOWU5MmE1ZmNlZjQwODMyNjJlOWFkZWJhZmFjNzI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVh
ci5oCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgT0VTVGV4
dHVyZUhhbGZGbG9hdExpbmVhciBmaW5hbCA6IHB1YmxpYyBXZWJHTEV4dGVuc2lvbiB7CiBwdWJs
aWM6Ci0gICAgT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhcihXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlKik7CisgICAgT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhcihXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlJik7CiAgICAgdmlydHVhbCB+T0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhcigpOwogCiAg
ICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5jcHAKaW5kZXggNGUw
NjE2NmQxZDcyYTU5ZWZjMTM2NzJhYzdjNjZmMjhkNTc2ZWFjOC4uYTg4NTE0ZGQ5YmMzMTg1NTdi
ZWRjMjgxOTc1NDU4Y2U5YWQ3MzE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcApAQCAtMzUsNyArMzUsNyBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBPRVNWZXJ0ZXhBcnJheU9iamVjdDo6T0VTVmVydGV4QXJyYXlPYmpl
Y3QoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKLSAgICA6IFdlYkdMRXh0ZW5z
aW9uKCZjb250ZXh0KQorICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKIH0KIApAQCAt
NDYsNDMgKzQ2LDQzIEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIE9FU1ZlcnRleEFy
cmF5T2JqZWN0OjpnZXROYW1lKCkgY29uc3QKIAogUmVmUHRyPFdlYkdMVmVydGV4QXJyYXlPYmpl
Y3RPRVM+IE9FU1ZlcnRleEFycmF5T2JqZWN0OjpjcmVhdGVWZXJ0ZXhBcnJheU9FUygpCiB7Ci0g
ICAgaWYgKG1fY29udGV4dC0+aXNDb250ZXh0TG9zdCgpKQorICAgIGlmIChtX2NvbnRleHQuaXND
b250ZXh0TG9zdCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF1dG8gb2JqZWN0
ID0gV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6Y3JlYXRlKG1fY29udGV4dCwgV2ViR0xWZXJ0
ZXhBcnJheU9iamVjdE9FUzo6VkFPVHlwZVVzZXIpOwotICAgIG1fY29udGV4dC0+YWRkQ29udGV4
dE9iamVjdChvYmplY3QucHRyKCkpOworICAgIG1fY29udGV4dC5hZGRDb250ZXh0T2JqZWN0KG9i
amVjdC5wdHIoKSk7CiAgICAgcmV0dXJuIFdURk1vdmUob2JqZWN0KTsKIH0KIAogdm9pZCBPRVNW
ZXJ0ZXhBcnJheU9iamVjdDo6ZGVsZXRlVmVydGV4QXJyYXlPRVMoV2ViR0xWZXJ0ZXhBcnJheU9i
amVjdE9FUyogYXJyYXlPYmplY3QpCiB7Ci0gICAgaWYgKCFhcnJheU9iamVjdCB8fCBtX2NvbnRl
eHQtPmlzQ29udGV4dExvc3QoKSkKKyAgICBpZiAoIWFycmF5T2JqZWN0IHx8IG1fY29udGV4dC5p
c0NvbnRleHRMb3N0KCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBpZiAoIWFycmF5T2Jq
ZWN0LT5pc0RlZmF1bHRPYmplY3QoKSAmJiBhcnJheU9iamVjdCA9PSBzdGF0aWNfY2FzdDxXZWJH
TFJlbmRlcmluZ0NvbnRleHQqPihtX2NvbnRleHQpLT5tX2JvdW5kVmVydGV4QXJyYXlPYmplY3Qp
Ci0gICAgICAgIHN0YXRpY19jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dCo+KG1fY29udGV4dCkt
PnNldEJvdW5kVmVydGV4QXJyYXlPYmplY3QoMCk7CisgICAgaWYgKCFhcnJheU9iamVjdC0+aXNE
ZWZhdWx0T2JqZWN0KCkgJiYgYXJyYXlPYmplY3QgPT0gc3RhdGljX2Nhc3Q8V2ViR0xSZW5kZXJp
bmdDb250ZXh0Kj4oJm1fY29udGV4dCktPm1fYm91bmRWZXJ0ZXhBcnJheU9iamVjdCkKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0Kj4oJm1fY29udGV4dCktPnNldEJv
dW5kVmVydGV4QXJyYXlPYmplY3QoMCk7CiAKLSAgICBhcnJheU9iamVjdC0+ZGVsZXRlT2JqZWN0
KG1fY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0M0QoKSk7CisgICAgYXJyYXlPYmplY3QtPmRlbGV0
ZU9iamVjdChtX2NvbnRleHQuZ3JhcGhpY3NDb250ZXh0M0QoKSk7CiB9CiAKIEdDM0Rib29sZWFu
IE9FU1ZlcnRleEFycmF5T2JqZWN0Ojppc1ZlcnRleEFycmF5T0VTKFdlYkdMVmVydGV4QXJyYXlP
YmplY3RPRVMqIGFycmF5T2JqZWN0KQogewotICAgIHJldHVybiBhcnJheU9iamVjdCAmJiAhbV9j
b250ZXh0LT5pc0NvbnRleHRMb3N0KCkgJiYgYXJyYXlPYmplY3QtPmhhc0V2ZXJCZWVuQm91bmQo
KQotICAgICAgICAmJiBtX2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dDNEKCktPmdldEV4dGVuc2lv
bnMoKS0+aXNWZXJ0ZXhBcnJheU9FUyhhcnJheU9iamVjdC0+b2JqZWN0KCkpOworICAgIHJldHVy
biBhcnJheU9iamVjdCAmJiAhbV9jb250ZXh0LmlzQ29udGV4dExvc3QoKSAmJiBhcnJheU9iamVj
dC0+aGFzRXZlckJlZW5Cb3VuZCgpCisgICAgICAgICYmIG1fY29udGV4dC5ncmFwaGljc0NvbnRl
eHQzRCgpLT5nZXRFeHRlbnNpb25zKCktPmlzVmVydGV4QXJyYXlPRVMoYXJyYXlPYmplY3QtPm9i
amVjdCgpKTsKIH0KIAogdm9pZCBPRVNWZXJ0ZXhBcnJheU9iamVjdDo6YmluZFZlcnRleEFycmF5
T0VTKFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMqIGFycmF5T2JqZWN0KQogewotICAgIGlmICht
X2NvbnRleHQtPmlzQ29udGV4dExvc3QoKSkKKyAgICBpZiAobV9jb250ZXh0LmlzQ29udGV4dExv
c3QoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGFycmF5T2JqZWN0ICYmIChhcnJheU9i
amVjdC0+aXNEZWxldGVkKCkgfHwgIWFycmF5T2JqZWN0LT52YWxpZGF0ZSgwLCBjb250ZXh0KCkp
KSkgewotICAgICAgICBtX2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dDNEKCktPnN5bnRoZXNpemVH
TEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CisgICAgICAgIG1f
Y29udGV4dC5ncmFwaGljc0NvbnRleHQzRCgpLT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0Nv
bnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgYXV0byYgZXh0ZW5zaW9ucyA9ICptX2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dDNEKCktPmdl
dEV4dGVuc2lvbnMoKTsKLSAgICBhdXRvJiBjb250ZXh0ID0gZG93bmNhc3Q8V2ViR0xSZW5kZXJp
bmdDb250ZXh0PigqbV9jb250ZXh0KTsKKyAgICBhdXRvJiBleHRlbnNpb25zID0gKm1fY29udGV4
dC5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCk7CisgICAgYXV0byYgY29udGV4
dCA9IGRvd25jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dD4obV9jb250ZXh0KTsKICAgICBpZiAo
YXJyYXlPYmplY3QgJiYgIWFycmF5T2JqZWN0LT5pc0RlZmF1bHRPYmplY3QoKSAmJiBhcnJheU9i
amVjdC0+b2JqZWN0KCkpIHsKICAgICAgICAgZXh0ZW5zaW9ucy5iaW5kVmVydGV4QXJyYXlPRVMo
YXJyYXlPYmplY3QtPm9iamVjdCgpKTsKICAgICAgICAgYXJyYXlPYmplY3QtPnNldEhhc0V2ZXJC
ZWVuQm91bmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
MlJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wy
UmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggYzU0ZjYxNDVjZmIwZDVhMzYxMTlmZWM4NmE4MTcy
NTQ5MWJjZGFhZC4uZmY0YmI3NDU1ZDQ4YTE5NmI5ZDExMjc4MGRmMTFlOTFmNDVlZjFlYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dC5jcHAKQEAgLTczLDcgKzczLDcgQEAgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6V2ViR0wy
UmVuZGVyaW5nQ29udGV4dChIVE1MQ2FudmFzRWxlbWVudCYgcGFzc2VkQ2FudmFzLAogCiB2b2lk
IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmluaXRpYWxpemVWZXJ0ZXhBcnJheU9iamVjdHMoKQog
ewotICAgIG1fZGVmYXVsdFZlcnRleEFycmF5T2JqZWN0ID0gV2ViR0xWZXJ0ZXhBcnJheU9iamVj
dDo6Y3JlYXRlKHRoaXMsIFdlYkdMVmVydGV4QXJyYXlPYmplY3Q6OlZBT1R5cGVEZWZhdWx0KTsK
KyAgICBtX2RlZmF1bHRWZXJ0ZXhBcnJheU9iamVjdCA9IFdlYkdMVmVydGV4QXJyYXlPYmplY3Q6
OmNyZWF0ZSgqdGhpcywgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdDo6VkFPVHlwZURlZmF1bHQpOwog
ICAgIGFkZENvbnRleHRPYmplY3QobV9kZWZhdWx0VmVydGV4QXJyYXlPYmplY3QuZ2V0KCkpOwog
ICAgIG1fYm91bmRWZXJ0ZXhBcnJheU9iamVjdCA9IG1fZGVmYXVsdFZlcnRleEFycmF5T2JqZWN0
OwogICAgIGlmICghaXNHTEVTMkNvbXBsaWFudCgpKQpAQCAtNzk0LDcgKzc5NCw3IEBAIFJlZlB0
cjxXZWJHTFZlcnRleEFycmF5T2JqZWN0PiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVW
ZXJ0ZXhBcnJheSgpCiAgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgCi0gICAgYXV0byBvYmplY3QgPSBXZWJHTFZlcnRleEFycmF5T2JqZWN0Ojpj
cmVhdGUodGhpcywgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdDo6VkFPVHlwZVVzZXIpOworICAgIGF1
dG8gb2JqZWN0ID0gV2ViR0xWZXJ0ZXhBcnJheU9iamVjdDo6Y3JlYXRlKCp0aGlzLCBXZWJHTFZl
cnRleEFycmF5T2JqZWN0OjpWQU9UeXBlVXNlcik7CiAgICAgYWRkQ29udGV4dE9iamVjdChvYmpl
Y3QucHRyKCkpOwogICAgIHJldHVybiBXVEZNb3ZlKG9iamVjdCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAKaW5kZXggYWEzYTlkYjRmZjQ4ZWUxYjE2MmVm
OTRhNWJiMzJmZmY2MWJkNTYzMS4uZGYxNzcxMWRiMGI4OWVhZDAzOGY3M2MzMWQyMmZlMWUzMmE1
ZTNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmNwcApAQCAt
MzQsMTggKzM0LDE4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFdlYkdMQnVmZmVy
PiBXZWJHTEJ1ZmZlcjo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGN0eCkKK1Jl
ZjxXZWJHTEJ1ZmZlcj4gV2ViR0xCdWZmZXI6OmNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJiBjdHgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR0xCdWZmZXIoY3R4KSk7
CiB9CiAKLVdlYkdMQnVmZmVyOjpXZWJHTEJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
KiBjdHgpCitXZWJHTEJ1ZmZlcjo6V2ViR0xCdWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSYgY3R4KQogICAgIDogV2ViR0xTaGFyZWRPYmplY3QoY3R4KQogICAgICwgbV90YXJnZXQoMCkK
ICAgICAsIG1fYnl0ZUxlbmd0aCgwKQogICAgICwgbV9uZXh0QXZhaWxhYmxlQ2FjaGVFbnRyeSgw
KQogewotICAgIHNldE9iamVjdChjdHgtPmdyYXBoaWNzQ29udGV4dDNEKCktPmNyZWF0ZUJ1ZmZl
cigpKTsKKyAgICBzZXRPYmplY3QoY3R4LmdyYXBoaWNzQ29udGV4dDNEKCktPmNyZWF0ZUJ1ZmZl
cigpKTsKICAgICBjbGVhckNhY2hlZE1heEluZGljZXMoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMQnVmZmVyLmgKaW5kZXggYTlmMzM4ODhlNDkwMTAzNjU5NjZlYzMzNWVh
MDcxYmY0YzI4MTYyZi4uMWI0MTRlOGZjOWExMzVhOWNlYzBiY2Q2YzZmMjJlMDljMjc3MWQ0ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5oCkBAIC0zOSw3ICszOSw3
IEBAIGNsYXNzIFdlYkdMQnVmZmVyIGZpbmFsIDogcHVibGljIFdlYkdMU2hhcmVkT2JqZWN0IHsK
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJHTEJ1ZmZlcigpOwogCi0gICAgc3RhdGljIFJlZjxX
ZWJHTEJ1ZmZlcj4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBzdGF0
aWMgUmVmPFdlYkdMQnVmZmVyPiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwog
CiAgICAgYm9vbCBhc3NvY2lhdGVCdWZmZXJEYXRhKEdDM0RzaXplaXB0ciBzaXplKTsKICAgICBi
b29sIGFzc29jaWF0ZUJ1ZmZlckRhdGEoSlNDOjpBcnJheUJ1ZmZlciopOwpAQCAtNjUsNyArNjUs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNFdmVyQmVlbkJvdW5kKCkgY29uc3QgeyByZXR1cm4g
b2JqZWN0KCkgJiYgbV90YXJnZXQ7IH0KIAogcHJvdGVjdGVkOgotICAgIFdlYkdMQnVmZmVyKFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBXZWJHTEJ1ZmZlcihXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlJik7CiAKICAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoR3JhcGhpY3NDb250
ZXh0M0QqLCBQbGF0Zm9ybTNET2JqZWN0KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmNwcAppbmRl
eCA1MGFkNjU1YWE4NjNlZDkyY2Q2YjcxNWMxMzEzMWRmMjZiZDVkMjllLi41MmY1MmZjOWU1MmI1
NTgxYzY1YjMwNTU1ODM5ZDE3M2I0ZGI1NzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmNwcApAQCAtMzMsMTIg
KzMzLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZUFUQzo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
KiBjb250ZXh0KQorV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6V2ViR0xDb21wcmVzc2VkVGV4
dHVyZUFUQyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xF
eHRlbnNpb24oY29udGV4dCkKIHsKLSAgICBjb250ZXh0LT5hZGRDb21wcmVzc2VkVGV4dHVyZUZv
cm1hdChFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfQVRDX1JHQl9BTUQpOwotICAgIGNvbnRleHQt
PmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9BVENf
UkdCQV9FWFBMSUNJVF9BTFBIQV9BTUQpOwotICAgIGNvbnRleHQtPmFkZENvbXByZXNzZWRUZXh0
dXJlRm9ybWF0KEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9BVENfUkdCQV9JTlRFUlBPTEFURURf
QUxQSEFfQU1EKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVu
c2lvbnMzRDo6Q09NUFJFU1NFRF9BVENfUkdCX0FNRCk7CisgICAgY29udGV4dC5hZGRDb21wcmVz
c2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfQVRDX1JHQkFfRVhQTElD
SVRfQUxQSEFfQU1EKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4
dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9BVENfUkdCQV9JTlRFUlBPTEFURURfQUxQSEFfQU1EKTsK
IH0KIAogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6fldlYkdMQ29tcHJlc3NlZFRleHR1cmVB
VEMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVz
c2VkVGV4dHVyZUFUQy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVz
c2VkVGV4dHVyZUFUQy5oCmluZGV4IDIxMDJkOTBkNWU0ZDJlYjIwZDQyZTZhMjExODhkNTZhNzEx
N2M0ODcuLjExNTI2YWZlODA0OWRhOTEzYTdkOTkwNTc5MzA2OWExMzdkYjRjMTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJl
QVRDLmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3MgV2ViR0xUZXh0dXJlOwogCiBjbGFzcyBXZWJH
TENvbXByZXNzZWRUZXh0dXJlQVRDIGZpbmFsIDogcHVibGljIFdlYkdMRXh0ZW5zaW9uIHsKIHB1
YmxpYzoKLSAgICBleHBsaWNpdCBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDKFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UqKTsKKyAgICBleHBsaWNpdCBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRD
KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKICAgICB2aXJ0dWFsIH5XZWJHTENvbXByZXNz
ZWRUZXh0dXJlQVRDKCk7CiAKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5jcHAKaW5kZXggOGNhYTRjNjg5ODU0OGZl
ZDYwMDcyNGRiZGRkODM0YjM2MjhhMDVjMy4uNmI5MjAzODA1Y2JjM2YwNzE5MzI3OTg1ZWYxMTA0
MWRmYjhhNWM2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xD
b21wcmVzc2VkVGV4dHVyZVBWUlRDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuY3BwCkBAIC0zNCwxMyArMzQsMTMgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OldlYkdM
Q29tcHJlc3NlZFRleHR1cmVQVlJUQyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjb250ZXh0
KQorV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZS
VEMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5z
aW9uKGNvbnRleHQpCiB7Ci0gICAgY29udGV4dC0+YWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQo
RXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HKTsKLSAgICBjb250
ZXh0LT5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURf
UkdCX1BWUlRDXzJCUFBWMV9JTUcpOwotICAgIGNvbnRleHQtPmFkZENvbXByZXNzZWRUZXh0dXJl
Rm9ybWF0KEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUcpOwot
ICAgIGNvbnRleHQtPmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnMzRDo6Q09N
UFJFU1NFRF9SR0JBX1BWUlRDXzJCUFBWMV9JTUcpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3Nl
ZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFf
SU1HKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnMz
RDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfMkJQUFYxX0lNRyk7CisgICAgY29udGV4dC5hZGRDb21w
cmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ180
QlBQVjFfSU1HKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVu
c2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzJCUFBWMV9JTUcpOwogfQogCiBXZWJHTENv
bXByZXNzZWRUZXh0dXJlUFZSVEM6On5XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVBWUlRDLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0
dXJlUFZSVEMuaAppbmRleCAwOTBkZDMyOTdlZjkyOGVkM2ExYzQ5ZTYzYjkwNjY1NDA0NTE2MDlm
Li4wMDg4YzRiODA4OThlYWM5NmVlMDAxMDE4NmRjOGY2YWUzZDZlM2YyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZS
VEMuaApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVQVlJUQyBmaW5hbCA6IHB1YmxpYyBXZWJHTEV4dGVuc2lvbiB7CiBw
dWJsaWM6Ci0gICAgZXhwbGljaXQgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDKFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBleHBsaWNpdCBXZWJHTENvbXByZXNzZWRUZXh0dXJl
UFZSVEMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwgfldlYkdMQ29t
cHJlc3NlZFRleHR1cmVQVlJUQygpOwogCiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcAppbmRleCA0MmJjZDA4MTBj
OTRjNWJjNTljMWY3YWE1ZWZkOTBmMmJlYWQyNGFiLi4xY2E3N2FmMmY2ZDg4YTJkNjFlZGI2YzJj
Y2NiZmI5YWY3YzJhNDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwCkBAIC0zNCwxMyArMzQsMTMgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6V2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVMzVEMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29udGV4
dCkKK1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNU
QyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNp
b24oY29udGV4dCkKIHsKLSAgICBjb250ZXh0LT5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChF
eHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQpOwotICAgIGNvbnRleHQt
PmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JB
X1MzVENfRFhUMV9FWFQpOwotICAgIGNvbnRleHQtPmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0
KEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQpOwotICAgIGNvbnRl
eHQtPmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9S
R0JBX1MzVENfRFhUNV9FWFQpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3Jt
YXQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUKTsKKyAgICBjb250
ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9S
R0JBX1MzVENfRFhUMV9FWFQpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3Jt
YXQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVCk7CisgICAgY29u
dGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURf
UkdCQV9TM1RDX0RYVDVfRVhUKTsKIH0KIAogV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6On5X
ZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaAppbmRleCBlZDNkOGY5ODdj
YTc5MzRiYTg3MmQ3ZmViNjNkZTU5NjRjMGJlMDM1Li5kZjYzYjgxNGFmZWM3ZjQwNTgzY2E1MjJj
YmVkZjljMDNkZmU4ODkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3Mg
V2ViR0xUZXh0dXJlOwogCiBjbGFzcyBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQyBmaW5hbCA6
IHB1YmxpYyBXZWJHTEV4dGVuc2lvbiB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVMzVEMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOworICAgIGV4cGxp
Y2l0IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Um
KTsKICAgICB2aXJ0dWFsIH5XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQygpOwogCiAgICAgc3Rh
dGljIGJvb2wgc3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dE9iamVjdC5jcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dE9iamVjdC5jcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41MjNlNmU2NDJkNzQ5YjYwMjJmMzc3M2E4OGVkZjRlYTBlY2I5YmI4Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0T2JqZWN0LmNwCkBA
IC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCR0wpCisKKyNpbmNsdWRl
ICJXZWJHTENvbnRleHRPYmplY3QuaCIKKworI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXZWJHTENvbnRleHRPYmplY3Q6Oldl
YkdMQ29udGV4dE9iamVjdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorICAg
IDogV2ViR0xPYmplY3QoY29udGV4dCkKKyAgICAsIG1fY29udGV4dCgmY29udGV4dCkKK3sKK30K
KworV2ViR0xDb250ZXh0T2JqZWN0Ojp+V2ViR0xDb250ZXh0T2JqZWN0KCkKK3sKKyAgICBpZiAo
bV9jb250ZXh0KQorICAgICAgICBtX2NvbnRleHQtPnJlbW92ZUNvbnRleHRPYmplY3QodGhpcyk7
Cit9CisKK3ZvaWQgV2ViR0xDb250ZXh0T2JqZWN0OjpkZXRhY2hDb250ZXh0KCkKK3sKKyAgICBk
ZXRhY2goKTsKKyAgICBpZiAobV9jb250ZXh0KSB7CisgICAgICAgIGRlbGV0ZU9iamVjdChtX2Nv
bnRleHQtPmdyYXBoaWNzQ29udGV4dDNEKCkpOworICAgICAgICBtX2NvbnRleHQtPnJlbW92ZUNv
bnRleHRPYmplY3QodGhpcyk7CisgICAgICAgIG1fY29udGV4dCA9IDA7CisgICAgfQorfQorCitH
cmFwaGljc0NvbnRleHQzRCogV2ViR0xDb250ZXh0T2JqZWN0OjpnZXRBR3JhcGhpY3NDb250ZXh0
M0QoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRleHQgPyBtX2NvbnRleHQtPmdyYXBoaWNz
Q29udGV4dDNEKCkgOiAwOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRPYmplY3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0T2JqZWN0LmNwcAppbmRl
eCA0ZmYxMDc0YjE5MjZiYzNkNGExYjkwNWUyYjgxZDg3ZjBlMTFhMjFiLi41MjNlNmU2NDJkNzQ5
YjYwMjJmMzc3M2E4OGVkZjRlYTBlY2I5YmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTENvbnRleHRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMQ29udGV4dE9iamVjdC5jcHAKQEAgLTMzLDkgKzMzLDkgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1XZWJHTENvbnRleHRPYmplY3Q6OldlYkdMQ29udGV4dE9iamVj
dChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjb250ZXh0KQorV2ViR0xDb250ZXh0T2JqZWN0
OjpXZWJHTENvbnRleHRPYmplY3QoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkK
ICAgICA6IFdlYkdMT2JqZWN0KGNvbnRleHQpCi0gICAgLCBtX2NvbnRleHQoY29udGV4dCkKKyAg
ICAsIG1fY29udGV4dCgmY29udGV4dCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTENvbnRleHRPYmplY3QuaAppbmRleCAzODA4NTVjMDJjZTJmYjJhNjIwYTg2
OTk2NjUyMjMxNzJlNTZkNjY4Li5lYmUwZmM2YzVmNzYzNjM1MmIzODZlZDJhMDgwYWFhNGEwMTIx
ZDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRP
YmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRPYmpl
Y3QuaApAQCAtNDAsMTUgKzQwLDE1IEBAIHB1YmxpYzoKIAogICAgIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UqIGNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQ7IH0KIAotICAgIGJv
b2wgdmFsaWRhdGUoY29uc3QgV2ViR0xDb250ZXh0R3JvdXAqLCBjb25zdCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlKiBjb250ZXh0KSBjb25zdCBvdmVycmlkZQorICAgIGJvb2wgdmFsaWRhdGUo
Y29uc3QgV2ViR0xDb250ZXh0R3JvdXAqLCBjb25zdCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
JiBjb250ZXh0KSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQg
PT0gbV9jb250ZXh0OworICAgICAgICByZXR1cm4gJmNvbnRleHQgPT0gbV9jb250ZXh0OwogICAg
IH0KIAogICAgIHZvaWQgZGV0YWNoQ29udGV4dCgpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgV2ViR0xD
b250ZXh0T2JqZWN0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBXZWJHTENvbnRl
eHRPYmplY3QoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogCiAgICAgYm9vbCBoYXNHcm91
cE9yQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnUmVuZGVyZXJJbmZvLmNwcAppbmRleCAyMDNhNWMz
NzdlMDA2YzgzMjk1ZWIxMWQwMWM3NDJjMTM0MzMzYTc5Li45ZGY3ZmJkNTFkZjRlNTIyZmYxZDU1
ZThhNWNjN2Q2Zjc0M2Q5ZmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTERlYnVnUmVuZGVyZXJJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTERlYnVnUmVuZGVyZXJJbmZvLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVdlYkdMRGVidWdSZW5kZXJlckluZm86OldlYkdMRGVidWdSZW5k
ZXJlckluZm8oV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29udGV4dCkKK1dlYkdMRGVidWdS
ZW5kZXJlckluZm86OldlYkdMRGVidWdSZW5kZXJlckluZm8oV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnUmVuZGVyZXJJbmZv
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnUmVuZGVyZXJJbmZvLmgK
aW5kZXggMTZlMzMzYzg5ODEyNmM5NjZjZjFiZTA3OTBhMmY2ZTE3ODc2MjdlYS4uM2U1ODIyZDIw
OGIyYzBhYWU5Yjk5YmU0OWVmNTMyZjJiNzBjNzRkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdSZW5kZXJlckluZm8uaApAQCAtMzYsNyArMzYsNyBA
QCBwdWJsaWM6CiAgICAgICAgIFVOTUFTS0VEX1JFTkRFUkVSX1dFQkdMID0gMHg5MjQ2CiAgICAg
fTsKIAotICAgIGV4cGxpY2l0IFdlYkdMRGVidWdSZW5kZXJlckluZm8oV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSopOworICAgIGV4cGxpY2l0IFdlYkdMRGVidWdSZW5kZXJlckluZm8oV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwgfldlYkdMRGVidWdSZW5kZXJlcklu
Zm8oKTsKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuY3BwCmluZGV4
IGZhMDcyZjliM2JjMjI5NTE4Y2UzNGQyN2VlOTY1NWVjYmFlODA4ZDIuLjIwOTQyM2QxNGJmZDRj
YWM3NDY4MzExZDIxNTM1NzJlNWVlYzQ1YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1XZWJHTERlYnVnU2hhZGVyczo6V2ViR0xEZWJ1Z1NoYWRlcnMoV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29udGV4dCkKK1dlYkdMRGVidWdTaGFkZXJzOjpXZWJH
TERlYnVnU2hhZGVycyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDog
V2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKIH0KQEAgLTUxLDExICs1MSwxMSBAQCBXZWJHTEV4
dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBXZWJHTERlYnVnU2hhZGVyczo6Z2V0TmFtZSgpIGNvbnN0
CiAKIFN0cmluZyBXZWJHTERlYnVnU2hhZGVyczo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZShX
ZWJHTFNoYWRlciogc2hhZGVyKQogewotICAgIGlmIChtX2NvbnRleHQtPmlzQ29udGV4dExvc3Qo
KSkKKyAgICBpZiAobV9jb250ZXh0LmlzQ29udGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJuIFN0
cmluZygpOwotICAgIGlmICghbV9jb250ZXh0LT52YWxpZGF0ZVdlYkdMT2JqZWN0KCJnZXRUcmFu
c2xhdGVkU2hhZGVyU291cmNlIiwgc2hhZGVyKSkKKyAgICBpZiAoIW1fY29udGV4dC52YWxpZGF0
ZVdlYkdMT2JqZWN0KCJnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlIiwgc2hhZGVyKSkKICAgICAg
ICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0gICAgcmV0dXJuIG1fY29udGV4dC0+Z3JhcGhpY3ND
b250ZXh0M0QoKS0+Z2V0RXh0ZW5zaW9ucygpLT5nZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5H
TEUoc2hhZGVyLT5vYmplY3QoKSk7CisgICAgcmV0dXJuIG1fY29udGV4dC5ncmFwaGljc0NvbnRl
eHQzRCgpLT5nZXRFeHRlbnNpb25zKCktPmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShz
aGFkZXItPm9iamVjdCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmgKaW5kZXggZGU0YmYwMTM1
NTA5ZjAxMGEyNjE3MWZhM2VkMDczNGFhNjQzMGQxZS4uNGI5OWYxYWVhYjdjYmZmZjRmYjdhNWY3
ZjY3YTQ3NDhlODIwNzYwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xEZWJ1Z1NoYWRlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TERlYnVnU2hhZGVycy5oCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIFdlYkdMU2hhZGVyOwogCiBj
bGFzcyBXZWJHTERlYnVnU2hhZGVycyBmaW5hbCA6IHB1YmxpYyBXZWJHTEV4dGVuc2lvbiB7CiBw
dWJsaWM6Ci0gICAgZXhwbGljaXQgV2ViR0xEZWJ1Z1NoYWRlcnMoV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSopOworICAgIGV4cGxpY2l0IFdlYkdMRGVidWdTaGFkZXJzKFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmKTsKICAgICB2aXJ0dWFsIH5XZWJHTERlYnVnU2hhZGVycygpOwogCiAgICAg
RXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5jcHAKaW5kZXggOGZkOTA3OTM1ZjNi
MTFjZDAwNTFiMDIwMTFjYjVmYjA1MmIyMmUyMy4uOTAyOTYxNjRjYTY1NzlmNDExZjlkMTdhNTYz
MDM4YzcyZjQ4OTUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xEZXB0aFRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
RGVwdGhUZXh0dXJlLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVdlYkdMRGVwdGhUZXh0dXJlOjpXZWJHTERlcHRoVGV4dHVyZShXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlKiBjb250ZXh0KQorV2ViR0xEZXB0aFRleHR1cmU6OldlYkdMRGVwdGhUZXh0dXJl
KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lv
bihjb250ZXh0KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xEZXB0aFRleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVw
dGhUZXh0dXJlLmgKaW5kZXggNzFmNTFhYTY2MTlkYTZlZGQzY2FlNTk4M2RiOTU0Y2IxNDhlYTI2
Mi4uYWI0ZWVkMDg3MTUxMTMxYjI5ZDAwNzJiMjNkMTg1YjAxZDAzNjhkZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5oCkBAIC0zMSw3ICszMSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV2ViR0xEZXB0aFRleHR1cmUgZmluYWwg
OiBwdWJsaWMgV2ViR0xFeHRlbnNpb24gewogcHVibGljOgotICAgIGV4cGxpY2l0IFdlYkdMRGVw
dGhUZXh0dXJlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBleHBsaWNpdCBXZWJH
TERlcHRoVGV4dHVyZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVhbCB+
V2ViR0xEZXB0aFRleHR1cmUoKTsKIAogICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChHcmFwaGlj
c0NvbnRleHQzRCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xEcmF3QnVmZmVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdC
dWZmZXJzLmNwcAppbmRleCA3YmM3MmE2ZTU5NjMyMTUxZDJhYzQ0YTU4ZThlNzVmNzA5NjU1NTM4
Li4zODAzYjIyNzJmZDY3ZjM0YjM1YzE0ZDBhMTY0ZTFkOGM5MGZhNmQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcApAQCAtMzIsNyArMzIs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdlYkdMRHJhd0J1ZmZlcnM6OldlYkdMRHJh
d0J1ZmZlcnMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29udGV4dCkKK1dlYkdMRHJhd0J1
ZmZlcnM6OldlYkdMRHJhd0J1ZmZlcnMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4
dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7CiB9CkBAIC01NSwzNSArNTUsMzUg
QEAgYm9vbCBXZWJHTERyYXdCdWZmZXJzOjpzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSogY29udGV4dCkKIAogdm9pZCBXZWJHTERyYXdCdWZmZXJzOjpkcmF3QnVmZmVyc1dFQkdM
KGNvbnN0IFZlY3RvcjxHQzNEZW51bT4mIGJ1ZmZlcnMpCiB7Ci0gICAgaWYgKG1fY29udGV4dC0+
aXNDb250ZXh0TG9zdCgpKQorICAgIGlmIChtX2NvbnRleHQuaXNDb250ZXh0TG9zdCgpKQogICAg
ICAgICByZXR1cm47CiAgICAgR0MzRHNpemVpIG4gPSBidWZmZXJzLnNpemUoKTsKICAgICBjb25z
dCBHQzNEZW51bSogYnVmcyA9IGJ1ZmZlcnMuZGF0YSgpOwotICAgIGlmICghbV9jb250ZXh0LT5t
X2ZyYW1lYnVmZmVyQmluZGluZykgeworICAgIGlmICghbV9jb250ZXh0Lm1fZnJhbWVidWZmZXJC
aW5kaW5nKSB7CiAgICAgICAgIGlmIChuICE9IDEpIHsKLSAgICAgICAgICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUsICJkcmF3
QnVmZmVyc1dFQkdMIiwgIm1vcmUgdGhhbiBvbmUgYnVmZmVyIik7CisgICAgICAgICAgICBtX2Nv
bnRleHQuc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUs
ICJkcmF3QnVmZmVyc1dFQkdMIiwgIm1vcmUgdGhhbiBvbmUgYnVmZmVyIik7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKGJ1ZnNbMF0gIT0gR3JhcGhpY3NDb250
ZXh0M0Q6OkJBQ0sgJiYgYnVmc1swXSAhPSBHcmFwaGljc0NvbnRleHQzRDo6Tk9ORSkgewotICAg
ICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6
SU5WQUxJRF9PUEVSQVRJT04sICJkcmF3QnVmZmVyc1dFQkdMIiwgIkJBQ0sgb3IgTk9ORSIpOwor
ICAgICAgICAgICAgbV9jb250ZXh0LnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNE
OjpJTlZBTElEX09QRVJBVElPTiwgImRyYXdCdWZmZXJzV0VCR0wiLCAiQkFDSyBvciBOT05FIik7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgLy8gQmVjYXVzZSB0aGUg
YmFja2J1ZmZlciBpcyBzaW11bGF0ZWQgb24gYWxsIGN1cnJlbnQgV2ViS2l0IHBvcnRzLCB3ZSBu
ZWVkIHRvIGNoYW5nZSBCQUNLIHRvIENPTE9SX0FUVEFDSE1FTlQwLgogICAgICAgICBHQzNEZW51
bSB2YWx1ZSA9IChidWZzWzBdID09IEdyYXBoaWNzQ29udGV4dDNEOjpCQUNLKSA/IEdyYXBoaWNz
Q29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCA6IEdyYXBoaWNzQ29udGV4dDNEOjpOT05FOwot
ICAgICAgICBtX2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dDNEKCktPmdldEV4dGVuc2lvbnMoKS0+
ZHJhd0J1ZmZlcnNFWFQoMSwgJnZhbHVlKTsKLSAgICAgICAgbV9jb250ZXh0LT5zZXRCYWNrRHJh
d0J1ZmZlcihidWZzWzBdKTsKKyAgICAgICAgbV9jb250ZXh0LmdyYXBoaWNzQ29udGV4dDNEKCkt
PmdldEV4dGVuc2lvbnMoKS0+ZHJhd0J1ZmZlcnNFWFQoMSwgJnZhbHVlKTsKKyAgICAgICAgbV9j
b250ZXh0LnNldEJhY2tEcmF3QnVmZmVyKGJ1ZnNbMF0pOwogICAgIH0gZWxzZSB7Ci0gICAgICAg
IGlmIChuID4gbV9jb250ZXh0LT5nZXRNYXhEcmF3QnVmZmVycygpKSB7Ci0gICAgICAgICAgICBt
X2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX1ZB
TFVFLCAiZHJhd0J1ZmZlcnNXRUJHTCIsICJtb3JlIHRoYW4gbWF4IGRyYXcgYnVmZmVycyIpOwor
ICAgICAgICBpZiAobiA+IG1fY29udGV4dC5nZXRNYXhEcmF3QnVmZmVycygpKSB7CisgICAgICAg
ICAgICBtX2NvbnRleHQuc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFM
SURfVkFMVUUsICJkcmF3QnVmZmVyc1dFQkdMIiwgIm1vcmUgdGhhbiBtYXggZHJhdyBidWZmZXJz
Iik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgZm9yIChHQzNEc2l6
ZWkgaSA9IDA7IGkgPCBuOyArK2kpIHsKICAgICAgICAgICAgIGlmIChidWZzW2ldICE9IEdyYXBo
aWNzQ29udGV4dDNEOjpOT05FICYmIGJ1ZnNbaV0gIT0gc3RhdGljX2Nhc3Q8R0MzRGVudW0+KEV4
dGVuc2lvbnMzRDo6Q09MT1JfQVRUQUNITUVOVDBfRVhUICsgaSkpIHsKLSAgICAgICAgICAgICAg
ICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElE
X09QRVJBVElPTiwgImRyYXdCdWZmZXJzV0VCR0wiLCAiQ09MT1JfQVRUQUNITUVOVGlfRVhUIG9y
IE5PTkUiKTsKKyAgICAgICAgICAgICAgICBtX2NvbnRleHQuc3ludGhlc2l6ZUdMRXJyb3IoR3Jh
cGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OLCAiZHJhd0J1ZmZlcnNXRUJHTCIsICJD
T0xPUl9BVFRBQ0hNRU5UaV9FWFQgb3IgTk9ORSIpOwogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBtX2NvbnRleHQtPm1fZnJhbWVidWZm
ZXJCaW5kaW5nLT5kcmF3QnVmZmVycyhidWZmZXJzKTsKKyAgICAgICAgbV9jb250ZXh0Lm1fZnJh
bWVidWZmZXJCaW5kaW5nLT5kcmF3QnVmZmVycyhidWZmZXJzKTsKICAgICB9CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuaAppbmRleCA0YjNkZTcw
NWVkMzM4N2Q4YTBjZTkzZGJlZDA1MzM5NDMyNWNiNDg3Li5hMDM3N2Q3NjM2NjcxM2U4MzM4ZTFl
ZjNmODAzZGU2NGMzYzE1Zjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTERyYXdCdWZmZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xEcmF3QnVmZmVycy5oCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgV2ViR0xEcmF3QnVmZmVycyBmaW5hbCA6IHB1YmxpYyBXZWJHTEV4dGVuc2lvbiB7CiBw
dWJsaWM6Ci0gICAgZXhwbGljaXQgV2ViR0xEcmF3QnVmZmVycyhXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlKik7CisgICAgZXhwbGljaXQgV2ViR0xEcmF3QnVmZmVycyhXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlJik7CiAgICAgdmlydHVhbCB+V2ViR0xEcmF3QnVmZmVycygpOwogCiAgICAgc3Rh
dGljIGJvb2wgc3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmNwcAppbmRleCAwOWE2Mjg4MDFj
MDI3MmEwOTI3NmFkMDhhMzU3N2NjMDg0N2NmYmM0Li5jOWYwYTQyNTFjNzBlMDIzNThkZjRkMjQx
YzhjYmI0NzI0Mzc3OTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTEV4dGVuc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xF
eHRlbnNpb24uY3BwCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
V2ViR0xFeHRlbnNpb246OldlYkdMRXh0ZW5zaW9uKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uq
IGNvbnRleHQpCitXZWJHTEV4dGVuc2lvbjo6V2ViR0xFeHRlbnNpb24oV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IG1fY29udGV4dChjb250ZXh0KQogewogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmgKaW5kZXggZjQ5MDc1Y2Uy
NDA2ZTM1NTIxNjg3OWY3YmFjNTBjODE4NGEzNzNhMC4uN2Y3MDliNDQ1ODAzN2FlYzcxZTcyYTRk
NzI0ODMzZTkxOWU4M2RmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xFeHRlbnNpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4
dGVuc2lvbi5oCkBAIC01NywxNiArNTcsMTYgQEAgcHVibGljOgogICAgICAgICBBTkdMRUluc3Rh
bmNlZEFycmF5c05hbWUsCiAgICAgfTsKIAotICAgIHZvaWQgcmVmKCkgeyBtX2NvbnRleHQtPnJl
ZigpOyB9Ci0gICAgdm9pZCBkZXJlZigpIHsgbV9jb250ZXh0LT5kZXJlZigpOyB9Ci0gICAgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29udGV4dCgpIHsgcmV0dXJuIG1fY29udGV4dDsgfQor
ICAgIHZvaWQgcmVmKCkgeyBtX2NvbnRleHQucmVmKCk7IH0KKyAgICB2b2lkIGRlcmVmKCkgeyBt
X2NvbnRleHQuZGVyZWYoKTsgfQorICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRl
eHQoKSB7IHJldHVybiBtX2NvbnRleHQ7IH0KIAogICAgIHZpcnR1YWwgfldlYkdMRXh0ZW5zaW9u
KCk7CiAgICAgdmlydHVhbCBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCA9IDA7CiAKIHBy
b3RlY3RlZDoKLSAgICBXZWJHTEV4dGVuc2lvbihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7
Ci0gICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogbV9jb250ZXh0OworICAgIFdlYkdMRXh0
ZW5zaW9uKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKKyAgICBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlJiBtX2NvbnRleHQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwCmluZGV4IDk2
MWZiYWU4MWJmZDRiYmU2MTQxY2M1NGYxNWJjNjg3M2VjMGM4ODUuLjhhYzQ0YzM1ZTRkNmEwM2Yz
YTdlZWZiMzliN2ZjNzEzYjZlNDc3ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwCkBAIC0yNjksMTYgKzI2OSwxNiBAQCBXZWJHTEZyYW1l
YnVmZmVyOjpXZWJHTEF0dGFjaG1lbnQ6On5XZWJHTEF0dGFjaG1lbnQoKQogewogfQogCi1SZWY8
V2ViR0xGcmFtZWJ1ZmZlcj4gV2ViR0xGcmFtZWJ1ZmZlcjo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UqIGN0eCkKK1JlZjxXZWJHTEZyYW1lYnVmZmVyPiBXZWJHTEZyYW1lYnVmZmVy
OjpjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY3R4KQogewogICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFdlYkdMRnJhbWVidWZmZXIoY3R4KSk7CiB9CiAKLVdlYkdMRnJhbWVidWZm
ZXI6OldlYkdMRnJhbWVidWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY3R4KQorV2Vi
R0xGcmFtZWJ1ZmZlcjo6V2ViR0xGcmFtZWJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
JiBjdHgpCiAgICAgOiBXZWJHTENvbnRleHRPYmplY3QoY3R4KQogICAgICwgbV9oYXNFdmVyQmVl
bkJvdW5kKGZhbHNlKQogewotICAgIHNldE9iamVjdChjdHgtPmdyYXBoaWNzQ29udGV4dDNEKCkt
PmNyZWF0ZUZyYW1lYnVmZmVyKCkpOworICAgIHNldE9iamVjdChjdHguZ3JhcGhpY3NDb250ZXh0
M0QoKS0+Y3JlYXRlRnJhbWVidWZmZXIoKSk7CiB9CiAKIFdlYkdMRnJhbWVidWZmZXI6On5XZWJH
TEZyYW1lYnVmZmVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMRnJhbWVidWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVi
dWZmZXIuaAppbmRleCA1YWM0ZmI3ZTkxZTEyMGRlM2RkYjg5OWFkYzFjZjg5ZDQxNzg5MzlkLi4y
MGVkMjljYzAxNmQ4MWQ2YzQ3NjM3MWRlYjFlYWRjNTA3ZTgzZTg4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oCkBAIC01OCw3ICs1OCw3IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgfldlYkdMRnJhbWVidWZmZXIoKTsKIAotICAgIHN0YXRpYyBS
ZWY8V2ViR0xGcmFtZWJ1ZmZlcj4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsK
KyAgICBzdGF0aWMgUmVmPFdlYkdMRnJhbWVidWZmZXI+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlJik7CiAKICAgICB2b2lkIHNldEF0dGFjaG1lbnRGb3JCb3VuZEZyYW1lYnVmZmVy
KEdDM0RlbnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHRleFRhcmdldCwgV2ViR0xUZXh0dXJlKiwg
R0MzRGludCBsZXZlbCk7CiAgICAgdm9pZCBzZXRBdHRhY2htZW50Rm9yQm91bmRGcmFtZWJ1ZmZl
cihHQzNEZW51bSBhdHRhY2htZW50LCBXZWJHTFJlbmRlcmJ1ZmZlciopOwpAQCAtOTgsNyArOTgs
NyBAQCBwdWJsaWM6CiAgICAgR0MzRGVudW0gZ2V0RHJhd0J1ZmZlcihHQzNEZW51bSk7CiAKIHBy
b3RlY3RlZDoKLSAgICBXZWJHTEZyYW1lYnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uq
KTsKKyAgICBXZWJHTEZyYW1lYnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKIAog
ICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChHcmFwaGljc0NvbnRleHQzRCosIFBsYXRmb3JtM0RP
YmplY3QpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTExvc2VDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
TG9zZUNvbnRleHQuY3BwCmluZGV4IGM2NWFlOTA4ODg4NGJmYWU3MzA2MmMzNTIxODI2ZTBjOTE1
N2EzY2IuLjliY2IwNDliNDA5MDlmNTE1OWJjY2UyY2E1MjkwMmZiMDZkOTYyNDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTG9zZUNvbnRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTG9zZUNvbnRleHQuY3BwCkBAIC0zMyw3
ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV2ViR0xMb3NlQ29udGV4dDo6V2Vi
R0xMb3NlQ29udGV4dChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjb250ZXh0KQorV2ViR0xM
b3NlQ29udGV4dDo6V2ViR0xMb3NlQ29udGV4dChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBj
b250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKIH0KQEAgLTQ5LDEyICs0
OSwxMiBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBXZWJHTExvc2VDb250ZXh0Ojpn
ZXROYW1lKCkgY29uc3QKIAogdm9pZCBXZWJHTExvc2VDb250ZXh0Ojpsb3NlQ29udGV4dCgpCiB7
Ci0gICAgbV9jb250ZXh0LT5mb3JjZUxvc3RDb250ZXh0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OlN5bnRoZXRpY0xvc3RDb250ZXh0KTsKKyAgICBtX2NvbnRleHQuZm9yY2VMb3N0Q29udGV4
dChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpTeW50aGV0aWNMb3N0Q29udGV4dCk7CiB9CiAK
IHZvaWQgV2ViR0xMb3NlQ29udGV4dDo6cmVzdG9yZUNvbnRleHQoKQogewotICAgIG1fY29udGV4
dC0+Zm9yY2VSZXN0b3JlQ29udGV4dCgpOworICAgIG1fY29udGV4dC5mb3JjZVJlc3RvcmVDb250
ZXh0KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTG9zZUNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMTG9zZUNvbnRleHQuaAppbmRleCA3MjkxYjczZTc3OTYzMGZjNWU1Y2My
MzEzM2JhMjc4NjdlOWM4ZGRlLi42MzBkMjY0NWFkMmU5NTIzMmQwNzgyNjAyOTZlOTMzMGMxNzIz
ZWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTExvc2VDb250
ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xMb3NlQ29udGV4dC5o
CkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U7CiAKIGNs
YXNzIFdlYkdMTG9zZUNvbnRleHQgZmluYWwgOiBwdWJsaWMgV2ViR0xFeHRlbnNpb24gewogcHVi
bGljOgotICAgIGV4cGxpY2l0IFdlYkdMTG9zZUNvbnRleHQoV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSopOworICAgIGV4cGxpY2l0IFdlYkdMTG9zZUNvbnRleHQoV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwgfldlYkdMTG9zZUNvbnRleHQoKTsKIAogICAgIEV4dGVu
c2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xPYmplY3QuY3BwCmluZGV4IGFjZGFiOTc5YjRlYjk1MWRiNTI3YjYwZWY2ODdh
NDRkNzViOGIzMWMuLjVkOTIwOTVmZmYxNzg2YjIyNWMyODVhOTcwM2M2Njk5NjFiNTk3NWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE9iamVjdC5jcHAKQEAgLTM4LDcgKzM4
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XZWJHTE9iamVjdDo6V2ViR0xPYmplY3Qo
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopCitXZWJHTE9iamVjdDo6V2ViR0xPYmplY3QoV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpCiAgICAgOiBtX29iamVjdCgwKQogICAgICwgbV9hdHRh
Y2htZW50Q291bnQoMCkKICAgICAsIG1fZGVsZXRlZChmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTE9iamVjdC5oCmluZGV4IDljOTFmMWQzMTA2MDY3ZTA4N2ZhMGJkOWE4Yzc2
NGMwODlmOGM2NDMuLjdiMzIzZDZjOWY3YTc4YWY0YjJmNDNlNjUwM2Y5ZTAxMjllY2M3NDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMT2JqZWN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xPYmplY3QuaApAQCAtNTQsMTAgKzU0LDEw
IEBAIHB1YmxpYzoKICAgICBib29sIGlzRGVsZXRlZCgpIHsgcmV0dXJuIG1fZGVsZXRlZDsgfQog
CiAgICAgLy8gVHJ1ZSBpZiB0aGlzIG9iamVjdCBiZWxvbmdzIHRvIHRoZSBncm91cCBvciBjb250
ZXh0LgotICAgIHZpcnR1YWwgYm9vbCB2YWxpZGF0ZShjb25zdCBXZWJHTENvbnRleHRHcm91cCos
IGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBib29sIHZhbGlkYXRlKGNvbnN0IFdlYkdMQ29udGV4dEdyb3VwKiwgY29uc3QgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSYpIGNvbnN0ID0gMDsKIAogcHJvdGVjdGVkOgotICAgIFdlYkdMT2Jq
ZWN0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBXZWJHTE9iamVjdChXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlJik7CiAKICAgICAvLyBzZXRPYmplY3Qgc2hvdWxkIGJlIG9ubHkg
Y2FsbGVkIG9uY2UgcmlnaHQgYWZ0ZXIgY3JlYXRpbmcgYSBXZWJHTE9iamVjdC4KICAgICB2b2lk
IHNldE9iamVjdChQbGF0Zm9ybTNET2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFByb2dyYW0uY3BwCmluZGV4IDFiNzUyZTZlMGZkYjRiYTYzYzkzYmMyZTc1MzA2MjU2
NWMyZDRjZDcuLjc3YWZlOTRjNDU4NWExYmIzZTE3NzZjODkxNTNiODRiYjg2YzE3MDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmNwcApAQCAtMzQsMTggKzM0
LDE4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFdlYkdMUHJvZ3JhbT4gV2ViR0xQ
cm9ncmFtOjpjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY3R4KQorUmVmPFdlYkdM
UHJvZ3JhbT4gV2ViR0xQcm9ncmFtOjpjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYg
Y3R4KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdMUHJvZ3JhbShjdHgpKTsKIH0K
IAotV2ViR0xQcm9ncmFtOjpXZWJHTFByb2dyYW0oV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSog
Y3R4KQorV2ViR0xQcm9ncmFtOjpXZWJHTFByb2dyYW0oV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSYgY3R4KQogICAgIDogV2ViR0xTaGFyZWRPYmplY3QoY3R4KQogICAgICwgbV9saW5rU3RhdHVz
KGZhbHNlKQogICAgICwgbV9saW5rQ291bnQoMCkKICAgICAsIG1faW5mb1ZhbGlkKHRydWUpCiB7
Ci0gICAgc2V0T2JqZWN0KGN0eC0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+Y3JlYXRlUHJvZ3JhbSgp
KTsKKyAgICBzZXRPYmplY3QoY3R4LmdyYXBoaWNzQ29udGV4dDNEKCktPmNyZWF0ZVByb2dyYW0o
KSk7CiB9CiAKIFdlYkdMUHJvZ3JhbTo6fldlYkdMUHJvZ3JhbSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5oCmluZGV4IGU0YjEwNjkzMjVhYjM5M2NiMmJhZTUyNTA5
Zjc0OWMzODAyMzk0ZTguLjcxN2NjZTEzOGM0MjhjNTdjZGRiN2M1NWMxNDY4NWZhNDYyMjMyZjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5oCkBAIC0zNSw3ICsz
NSw3IEBAIGNsYXNzIFdlYkdMUHJvZ3JhbSBmaW5hbCA6IHB1YmxpYyBXZWJHTFNoYXJlZE9iamVj
dCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViR0xQcm9ncmFtKCk7CiAKLSAgICBzdGF0aWMg
UmVmPFdlYkdMUHJvZ3JhbT4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAg
ICBzdGF0aWMgUmVmPFdlYkdMUHJvZ3JhbT4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UmKTsKIAogICAgIHVuc2lnbmVkIG51bUFjdGl2ZUF0dHJpYkxvY2F0aW9ucygpOwogICAgIEdD
M0RpbnQgZ2V0QWN0aXZlQXR0cmliTG9jYXRpb24oR0MzRHVpbnQgaW5kZXgpOwpAQCAtNTgsNyAr
NTgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBkZXRhY2hTaGFkZXIoV2ViR0xTaGFkZXIqKTsKIAog
cHJvdGVjdGVkOgotICAgIFdlYkdMUHJvZ3JhbShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7
CisgICAgV2ViR0xQcm9ncmFtKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKIAogICAgIHZv
aWQgZGVsZXRlT2JqZWN0SW1wbChHcmFwaGljc0NvbnRleHQzRCosIFBsYXRmb3JtM0RPYmplY3Qp
IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFF1ZXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUXVlcnkuY3BwCmlu
ZGV4IGM3Zjk0MzQ5YjkwODNlZTA4ZjdlYmViYWYwZDYzMDFiYzhiYTJiNDEuLjhjYTUyNTExNTcz
NTAxNTQ1YWM1NWY1ZTk0MWVhYTVhODA0M2JlYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUXVlcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUXVlcnkuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAKLVJlZjxXZWJHTFF1ZXJ5PiBXZWJHTFF1ZXJ5OjpjcmVhdGUoV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSogY3R4KQorUmVmPFdlYkdMUXVlcnk+IFdlYkdMUXVlcnk6OmNyZWF0ZShX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjdHgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgV2ViR0xRdWVyeShjdHgpKTsKIH0KQEAgLTQzLDcgKzQzLDcgQEAgV2ViR0xRdWVyeTo6fldl
YkdMUXVlcnkoKQogICAgIGRlbGV0ZU9iamVjdCgwKTsKIH0KIAotV2ViR0xRdWVyeTo6V2ViR0xR
dWVyeShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjdHgpCitXZWJHTFF1ZXJ5OjpXZWJHTFF1
ZXJ5KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGN0eCkKICAgICA6IFdlYkdMU2hhcmVkT2Jq
ZWN0KGN0eCkKIHsKICAgICAvLyBGSVhNRTogQ2FsbCBjcmVhdGVRdWVyeSBmcm9tIEdyYXBoaWNz
Q29udGV4dDNELgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xR
dWVyeS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xRdWVyeS5oCmluZGV4IGNl
OTg5NWI4OGE5NjI3ZTE4Zjg2YmM2YzRiYzIxYTJlMjhlZTNmNGYuLjQ2ZGI1OTJhODVhZjYyZmU4
MGY3MWYzNzNiZTU5MTZiY2I5YzE4NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUXVlcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFF1ZXJ5LmgKQEAgLTMzLDEwICszMywxMCBAQCBjbGFzcyBXZWJHTFF1ZXJ5IGZpbmFsIDogcHVi
bGljIFdlYkdMU2hhcmVkT2JqZWN0IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJHTFF1ZXJ5
KCk7CiAKLSAgICBzdGF0aWMgUmVmPFdlYkdMUXVlcnk+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlKik7CisgICAgc3RhdGljIFJlZjxXZWJHTFF1ZXJ5PiBjcmVhdGUoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSYpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgV2ViR0xRdWVyeShXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAgV2ViR0xRdWVyeShXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlJik7CiAKICAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoR3JhcGhpY3NDb250ZXh0M0Qq
LCBQbGF0Zm9ybTNET2JqZWN0KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuY3BwCmluZGV4IDFkNzk0MjkwZDZiYTIyZDFjODQ1
NjAxNWY0YjAwMjVkOWVjNzRhMTQuLjY5OTZkOWIxZGE5MzBmM2EyYmFiYTIzMGU0OTJjMGQ3ODRh
N2NkMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
YnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1
ZmZlci5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8
V2ViR0xSZW5kZXJidWZmZXI+IFdlYkdMUmVuZGVyYnVmZmVyOjpjcmVhdGUoV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSogY3R4KQorUmVmPFdlYkdMUmVuZGVyYnVmZmVyPiBXZWJHTFJlbmRlcmJ1
ZmZlcjo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGN0eCkKIHsKICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBXZWJHTFJlbmRlcmJ1ZmZlcihjdHgpKTsKIH0KQEAgLTQ0LDcgKzQ0
LDcgQEAgV2ViR0xSZW5kZXJidWZmZXI6On5XZWJHTFJlbmRlcmJ1ZmZlcigpCiAgICAgZGVsZXRl
T2JqZWN0KDApOwogfQogCi1XZWJHTFJlbmRlcmJ1ZmZlcjo6V2ViR0xSZW5kZXJidWZmZXIoV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY3R4KQorV2ViR0xSZW5kZXJidWZmZXI6OldlYkdMUmVu
ZGVyYnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGN0eCkKICAgICA6IFdlYkdMU2hh
cmVkT2JqZWN0KGN0eCkKICAgICAsIG1faW50ZXJuYWxGb3JtYXQoR3JhcGhpY3NDb250ZXh0M0Q6
OlJHQkE0KQogICAgICwgbV9pbml0aWFsaXplZChmYWxzZSkKQEAgLTUzLDcgKzUzLDcgQEAgV2Vi
R0xSZW5kZXJidWZmZXI6OldlYkdMUmVuZGVyYnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UqIGN0eCkKICAgICAsIG1faXNWYWxpZCh0cnVlKQogICAgICwgbV9oYXNFdmVyQmVlbkJvdW5k
KGZhbHNlKQogewotICAgIHNldE9iamVjdChjdHgtPmdyYXBoaWNzQ29udGV4dDNEKCktPmNyZWF0
ZVJlbmRlcmJ1ZmZlcigpKTsKKyAgICBzZXRPYmplY3QoY3R4LmdyYXBoaWNzQ29udGV4dDNEKCkt
PmNyZWF0ZVJlbmRlcmJ1ZmZlcigpKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmJ1ZmZlcjo6ZGVs
ZXRlT2JqZWN0SW1wbChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkLCBQbGF0Zm9ybTNET2Jq
ZWN0IG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyYnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1
ZmZlci5oCmluZGV4IDA2YmIzMDI1ZDZkNzNmZThhNGEzY2Y4ZmI5MDYyYzYyNzJmYTJiMjYuLmNm
NmFkNmY2NTk2NzlkNTc3ZTczNDM2MmYzZTNiNTNjMjQ0ZDJkZGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuaApAQCAtMzMsNyArMzMsNyBAQCBj
bGFzcyBXZWJHTFJlbmRlcmJ1ZmZlciBmaW5hbCA6IHB1YmxpYyBXZWJHTFNoYXJlZE9iamVjdCB7
CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViR0xSZW5kZXJidWZmZXIoKTsKIAotICAgIHN0YXRp
YyBSZWY8V2ViR0xSZW5kZXJidWZmZXI+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Kik7CisgICAgc3RhdGljIFJlZjxXZWJHTFJlbmRlcmJ1ZmZlcj4gY3JlYXRlKFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UmKTsKIAogICAgIHZvaWQgc2V0SW50ZXJuYWxGb3JtYXQoR0MzRGVudW0g
aW50ZXJuYWxmb3JtYXQpCiAgICAgewpAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRIYXNFdmVyQmVlbkJvdW5kKCkgeyBtX2hhc0V2ZXJCZWVuQm91bmQgPSB0cnVlOyB9CiAK
IHByb3RlY3RlZDoKLSAgICBXZWJHTFJlbmRlcmJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlKik7CisgICAgV2ViR0xSZW5kZXJidWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYp
OwogCiAgICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKEdyYXBoaWNzQ29udGV4dDNEKiwgUGxhdGZv
cm0zRE9iamVjdCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDQ5YzhjZDE5NTliNTk3ZjhkNDg4
Y2Y4OWI1NjkwOWViN2JhNWU5YjkuLjQ0ZDI4Njg2ZWRiNjBlZGNiZTQyZjQ3ZDI4MTYyNjVkOTNm
Mjc3MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmNwcApAQCAtNzcsNyArNzcsNyBAQCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OldlYkdMUmVuZGVyaW5nQ29udGV4dChIVE1MQ2FudmFzRWxlbWVudCYgcGFzc2VkQ2FudmFzLCBQ
YQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6aW5pdGlhbGl6ZVZlcnRleEFycmF5T2Jq
ZWN0cygpCiB7Ci0gICAgbV9kZWZhdWx0VmVydGV4QXJyYXlPYmplY3QgPSBXZWJHTFZlcnRleEFy
cmF5T2JqZWN0T0VTOjpjcmVhdGUodGhpcywgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6VkFP
VHlwZURlZmF1bHQpOworICAgIG1fZGVmYXVsdFZlcnRleEFycmF5T2JqZWN0ID0gV2ViR0xWZXJ0
ZXhBcnJheU9iamVjdE9FUzo6Y3JlYXRlKCp0aGlzLCBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VT
OjpWQU9UeXBlRGVmYXVsdCk7CiAgICAgYWRkQ29udGV4dE9iamVjdChtX2RlZmF1bHRWZXJ0ZXhB
cnJheU9iamVjdC5nZXQoKSk7CiAgICAgbV9ib3VuZFZlcnRleEFycmF5T2JqZWN0ID0gbV9kZWZh
dWx0VmVydGV4QXJyYXlPYmplY3Q7CiAgICAgaWYgKCFpc0dMRVMyQ29tcGxpYW50KCkpCkBAIC05
Myw3ICs5Myw3IEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4
dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgICYmIG1fY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfRVhUX2JsZW5kX21pbm1heCIpKSB7CiAgICAgICAgIGlm
ICghbV9leHRCbGVuZE1pbk1heCkgewogICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNp
b25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9ibGVuZF9taW5tYXgiKTsKLSAgICAgICAgICAg
IG1fZXh0QmxlbmRNaW5NYXggPSBzdGQ6Om1ha2VfdW5pcXVlPEVYVEJsZW5kTWluTWF4Pih0aGlz
KTsKKyAgICAgICAgICAgIG1fZXh0QmxlbmRNaW5NYXggPSBzdGQ6Om1ha2VfdW5pcXVlPEVYVEJs
ZW5kTWluTWF4PigqdGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1fZXh0QmxlbmRN
aW5NYXguZ2V0KCk7CiAgICAgfQpAQCAtMTAxLDcgKzEwMSw3IEBAIFdlYkdMRXh0ZW5zaW9uKiBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAg
ICAgICAgICYmIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfRVhUX3NS
R0IiKSkgewogICAgICAgICBpZiAoIW1fZXh0c1JHQikgewogICAgICAgICAgICAgbV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9zUkdCIik7Ci0gICAgICAg
ICAgICBtX2V4dHNSR0IgPSBzdGQ6Om1ha2VfdW5pcXVlPEVYVHNSR0I+KHRoaXMpOworICAgICAg
ICAgICAgbV9leHRzUkdCID0gc3RkOjptYWtlX3VuaXF1ZTxFWFRzUkdCPigqdGhpcyk7CiAgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuIG1fZXh0c1JHQi5nZXQoKTsKICAgICB9CkBAIC0xMDksNyAr
MTA5LDcgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5z
aW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNp
b25zKCktPnN1cHBvcnRzKCJHTF9FWFRfZnJhZ19kZXB0aCIpKSB7CiAgICAgICAgIGlmICghbV9l
eHRGcmFnRGVwdGgpIHsKICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5l
bnN1cmVFbmFibGVkKCJHTF9FWFRfZnJhZ19kZXB0aCIpOwotICAgICAgICAgICAgbV9leHRGcmFn
RGVwdGggPSBzdGQ6Om1ha2VfdW5pcXVlPEVYVEZyYWdEZXB0aD4odGhpcyk7CisgICAgICAgICAg
ICBtX2V4dEZyYWdEZXB0aCA9IHN0ZDo6bWFrZV91bmlxdWU8RVhURnJhZ0RlcHRoPigqdGhpcyk7
CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1fZXh0RnJhZ0RlcHRoLmdldCgpOwogICAgIH0K
QEAgLTExNyw3ICsxMTcsNyBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpnZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICAmJiAobV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIikg
fHwgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9BUkJfc2hhZGVyX3Rl
eHR1cmVfbG9kIikpKSB7CiAgICAgICAgIGlmICghbV9leHRTaGFkZXJUZXh0dXJlTE9EKSB7CiAg
ICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xf
RVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpOwotICAgICAgICAgICAgbV9leHRTaGFkZXJUZXh0dXJl
TE9EID0gc3RkOjptYWtlX3VuaXF1ZTxFWFRTaGFkZXJUZXh0dXJlTE9EPih0aGlzKTsKKyAgICAg
ICAgICAgIG1fZXh0U2hhZGVyVGV4dHVyZUxPRCA9IHN0ZDo6bWFrZV91bmlxdWU8RVhUU2hhZGVy
VGV4dHVyZUxPRD4oKnRoaXMpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX2V4dFNoYWRl
clRleHR1cmVMT0QuZ2V0KCk7CiAgICAgfQpAQCAtMTI1LDcgKzEyNSw3IEBAIFdlYkdMRXh0ZW5z
aW9uKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5h
bWUpCiAgICAgICAgICYmIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xf
RVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIikpIHsKICAgICAgICAgaWYgKCFtX2V4dFRl
eHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYykgewogICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3Bp
YyIpOwotICAgICAgICAgICAgbV9leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMgPSBzdGQ6Om1h
a2VfdW5pcXVlPEVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYz4odGhpcyk7CisgICAgICAgICAg
ICBtX2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYyA9IHN0ZDo6bWFrZV91bmlxdWU8RVhUVGV4
dHVyZUZpbHRlckFuaXNvdHJvcGljPigqdGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJu
IG1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmdldCgpOwogICAgIH0KQEAgLTEzMyw3ICsx
MzMsNyBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNp
b24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS0+c3VwcG9ydHMoIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpKSB7CiAgICAgICAg
IGlmICghbV9vZXNTdGFuZGFyZERlcml2YXRpdmVzKSB7CiAgICAgICAgICAgICBtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRp
dmVzIik7Ci0gICAgICAgICAgICBtX29lc1N0YW5kYXJkRGVyaXZhdGl2ZXMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXM+KHRoaXMpOworICAgICAgICAgICAgbV9vZXNT
dGFuZGFyZERlcml2YXRpdmVzID0gc3RkOjptYWtlX3VuaXF1ZTxPRVNTdGFuZGFyZERlcml2YXRp
dmVzPigqdGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1fb2VzU3RhbmRhcmREZXJp
dmF0aXZlcy5nZXQoKTsKICAgICB9CkBAIC0xNDEsNyArMTQxLDcgQEAgV2ViR0xFeHRlbnNpb24q
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkK
ICAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNf
dGV4dHVyZV9mbG9hdCIpKSB7CiAgICAgICAgIGlmICghbV9vZXNUZXh0dXJlRmxvYXQpIHsKICAg
ICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKCJHTF9P
RVNfdGV4dHVyZV9mbG9hdCIpOwotICAgICAgICAgICAgbV9vZXNUZXh0dXJlRmxvYXQgPSBzdGQ6
Om1ha2VfdW5pcXVlPE9FU1RleHR1cmVGbG9hdD4odGhpcyk7CisgICAgICAgICAgICBtX29lc1Rl
eHR1cmVGbG9hdCA9IHN0ZDo6bWFrZV91bmlxdWU8T0VTVGV4dHVyZUZsb2F0PigqdGhpcyk7CiAg
ICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1fb2VzVGV4dHVyZUZsb2F0LmdldCgpOwogICAgIH0K
QEAgLTE0OSw3ICsxNDksNyBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpnZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICAmJiBtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIp
KSB7CiAgICAgICAgIGlmICghbV9vZXNUZXh0dXJlRmxvYXRMaW5lYXIpIHsKICAgICAgICAgICAg
IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKCJHTF9PRVNfdGV4dHVy
ZV9mbG9hdF9saW5lYXIiKTsKLSAgICAgICAgICAgIG1fb2VzVGV4dHVyZUZsb2F0TGluZWFyID0g
c3RkOjptYWtlX3VuaXF1ZTxPRVNUZXh0dXJlRmxvYXRMaW5lYXI+KHRoaXMpOworICAgICAgICAg
ICAgbV9vZXNUZXh0dXJlRmxvYXRMaW5lYXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9FU1RleHR1cmVG
bG9hdExpbmVhcj4oKnRoaXMpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX29lc1RleHR1
cmVGbG9hdExpbmVhci5nZXQoKTsKICAgICB9CkBAIC0xNTcsNyArMTU3LDcgQEAgV2ViR0xFeHRl
bnNpb24qIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYg
bmFtZSkKICAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJH
TF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IikpIHsKICAgICAgICAgaWYgKCFtX29lc1RleHR1cmVI
YWxmRmxvYXQpIHsKICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1
cmVFbmFibGVkKCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0Iik7Ci0gICAgICAgICAgICBtX29l
c1RleHR1cmVIYWxmRmxvYXQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9FU1RleHR1cmVIYWxmRmxvYXQ+
KHRoaXMpOworICAgICAgICAgICAgbV9vZXNUZXh0dXJlSGFsZkZsb2F0ID0gc3RkOjptYWtlX3Vu
aXF1ZTxPRVNUZXh0dXJlSGFsZkZsb2F0PigqdGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgcmV0
dXJuIG1fb2VzVGV4dHVyZUhhbGZGbG9hdC5nZXQoKTsKICAgICB9CkBAIC0xNjUsNyArMTY1LDcg
QEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNv
bnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkt
PnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpKSB7CiAgICAgICAg
IGlmICghbV9vZXNUZXh0dXJlSGFsZkZsb2F0TGluZWFyKSB7CiAgICAgICAgICAgICBtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3RleHR1cmVfaGFsZl9m
bG9hdF9saW5lYXIiKTsKLSAgICAgICAgICAgIG1fb2VzVGV4dHVyZUhhbGZGbG9hdExpbmVhciA9
IHN0ZDo6bWFrZV91bmlxdWU8T0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhcj4odGhpcyk7CisgICAg
ICAgICAgICBtX29lc1RleHR1cmVIYWxmRmxvYXRMaW5lYXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9F
U1RleHR1cmVIYWxmRmxvYXRMaW5lYXI+KCp0aGlzKTsKICAgICAgICAgfQogICAgICAgICByZXR1
cm4gbV9vZXNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLmdldCgpOwogICAgIH0KQEAgLTE4MSw2NCAr
MTgxLDY0IEBAIFdlYkdMRXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVu
c2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgICYmIG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX2VsZW1lbnRfaW5kZXhfdWludCIpKSB7CiAgICAgICAg
IGlmICghbV9vZXNFbGVtZW50SW5kZXhVaW50KSB7CiAgICAgICAgICAgICBtX2NvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfT0VTX2VsZW1lbnRfaW5kZXhfdWludCIp
OwotICAgICAgICAgICAgbV9vZXNFbGVtZW50SW5kZXhVaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxP
RVNFbGVtZW50SW5kZXhVaW50Pih0aGlzKTsKKyAgICAgICAgICAgIG1fb2VzRWxlbWVudEluZGV4
VWludCA9IHN0ZDo6bWFrZV91bmlxdWU8T0VTRWxlbWVudEluZGV4VWludD4oKnRoaXMpOwogICAg
ICAgICB9CiAgICAgICAgIHJldHVybiBtX29lc0VsZW1lbnRJbmRleFVpbnQuZ2V0KCk7CiAgICAg
fQogICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJXRUJHTF9sb3NlX2NvbnRl
eHQiKSkgewogICAgICAgICBpZiAoIW1fd2ViZ2xMb3NlQ29udGV4dCkKLSAgICAgICAgICAgIG1f
d2ViZ2xMb3NlQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xMb3NlQ29udGV4dD4odGhp
cyk7CisgICAgICAgICAgICBtX3dlYmdsTG9zZUNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YkdMTG9zZUNvbnRleHQ+KCp0aGlzKTsKICAgICAgICAgcmV0dXJuIG1fd2ViZ2xMb3NlQ29udGV4
dC5nZXQoKTsKICAgICB9CiAgICAgaWYgKChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJX
RUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2F0YyIpKQogICAgICAgICAmJiBXZWJHTENv
bXByZXNzZWRUZXh0dXJlQVRDOjpzdXBwb3J0ZWQodGhpcykpIHsKICAgICAgICAgaWYgKCFtX3dl
YmdsQ29tcHJlc3NlZFRleHR1cmVBVEMpCi0gICAgICAgICAgICBtX3dlYmdsQ29tcHJlc3NlZFRl
eHR1cmVBVEMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM+KHRo
aXMpOworICAgICAgICAgICAgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlQVRDID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDPigqdGhpcyk7CiAgICAgICAgIHJldHVy
biBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBVEMuZ2V0KCk7CiAgICAgfQogICAgIGlmICgoZXF1
YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVy
ZV9wdnJ0YyIpKQogICAgICAgICAmJiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBv
cnRlZCh0aGlzKSkgewogICAgICAgICBpZiAoIW1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVBWUlRD
KQotICAgICAgICAgICAgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUFZSVEMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQz4odGhpcyk7CisgICAgICAgICAgICBt
X3dlYmdsQ29tcHJlc3NlZFRleHR1cmVQVlJUQyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xDb21w
cmVzc2VkVGV4dHVyZVBWUlRDPigqdGhpcyk7CiAgICAgICAgIHJldHVybiBtX3dlYmdsQ29tcHJl
c3NlZFRleHR1cmVQVlJUQy5nZXQoKTsKICAgICB9CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJ
SUNhc2UobmFtZSwgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIikKICAgICAgICAgJiYg
V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBvcnRlZCh0aGlzKSkgewogICAgICAgICBp
ZiAoIW1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVMzVEMpCi0gICAgICAgICAgICBtX3dlYmdsQ29t
cHJlc3NlZFRleHR1cmVTM1RDID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTENvbXByZXNzZWRUZXh0
dXJlUzNUQz4odGhpcyk7CisgICAgICAgICAgICBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVTM1RD
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQz4oKnRoaXMpOwog
ICAgICAgICByZXR1cm4gbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUzNUQy5nZXQoKTsKICAgICB9
CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIldFQkdMX2RlcHRoX3RleHR1
cmUiKQogICAgICAgICAmJiBXZWJHTERlcHRoVGV4dHVyZTo6c3VwcG9ydGVkKGdyYXBoaWNzQ29u
dGV4dDNEKCkpKSB7CiAgICAgICAgIGlmICghbV93ZWJnbERlcHRoVGV4dHVyZSkgewogICAgICAg
ICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX0NIUk9N
SVVNX2RlcHRoX3RleHR1cmUiKTsKLSAgICAgICAgICAgIG1fd2ViZ2xEZXB0aFRleHR1cmUgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdlYkdMRGVwdGhUZXh0dXJlPih0aGlzKTsKKyAgICAgICAgICAgIG1f
d2ViZ2xEZXB0aFRleHR1cmUgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMRGVwdGhUZXh0dXJlPigq
dGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1fd2ViZ2xEZXB0aFRleHR1cmUuZ2V0
KCk7CiAgICAgfQogICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJXRUJHTF9k
cmF3X2J1ZmZlcnMiKSAmJiBzdXBwb3J0c0RyYXdCdWZmZXJzKCkpIHsKICAgICAgICAgaWYgKCFt
X3dlYmdsRHJhd0J1ZmZlcnMpIHsKICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLT5lbnN1cmVFbmFibGVkKCJHTF9FWFRfZHJhd19idWZmZXJzIik7Ci0gICAgICAgICAgICBt
X3dlYmdsRHJhd0J1ZmZlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMRHJhd0J1ZmZlcnM+KHRo
aXMpOworICAgICAgICAgICAgbV93ZWJnbERyYXdCdWZmZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJHTERyYXdCdWZmZXJzPigqdGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1fd2Vi
Z2xEcmF3QnVmZmVycy5nZXQoKTsKICAgICB9CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNh
c2UobmFtZSwgIkFOR0xFX2luc3RhbmNlZF9hcnJheXMiKSAmJiBBTkdMRUluc3RhbmNlZEFycmF5
czo6c3VwcG9ydGVkKHRoaXMpKSB7CiAgICAgICAgIGlmICghbV9hbmdsZUluc3RhbmNlZEFycmF5
cykgewogICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJs
ZWQoIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKTsKLSAgICAgICAgICAgIG1fYW5nbGVJbnN0
YW5jZWRBcnJheXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEFOR0xFSW5zdGFuY2VkQXJyYXlzPih0aGlz
KTsKKyAgICAgICAgICAgIG1fYW5nbGVJbnN0YW5jZWRBcnJheXMgPSBzdGQ6Om1ha2VfdW5pcXVl
PEFOR0xFSW5zdGFuY2VkQXJyYXlzPigqdGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJu
IG1fYW5nbGVJbnN0YW5jZWRBcnJheXMuZ2V0KCk7CiAgICAgfQogICAgIGlmIChlcXVhbElnbm9y
aW5nQVNDSUlDYXNlKG5hbWUsICJXRUJHTF9kZWJ1Z19yZW5kZXJlcl9pbmZvIikpIHsKICAgICAg
ICAgaWYgKCFtX3dlYmdsRGVidWdSZW5kZXJlckluZm8pCi0gICAgICAgICAgICBtX3dlYmdsRGVi
dWdSZW5kZXJlckluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMRGVidWdSZW5kZXJlckluZm8+
KHRoaXMpOworICAgICAgICAgICAgbV93ZWJnbERlYnVnUmVuZGVyZXJJbmZvID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJHTERlYnVnUmVuZGVyZXJJbmZvPigqdGhpcyk7CiAgICAgICAgIHJldHVybiBt
X3dlYmdsRGVidWdSZW5kZXJlckluZm8uZ2V0KCk7CiAgICAgfQogICAgIGlmIChlcXVhbElnbm9y
aW5nQVNDSUlDYXNlKG5hbWUsICJXRUJHTF9kZWJ1Z19zaGFkZXJzIikKICAgICAgICAgJiYgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9BTkdMRV90cmFuc2xhdGVkX3No
YWRlcl9zb3VyY2UiKSkgewogICAgICAgICBpZiAoIW1fd2ViZ2xEZWJ1Z1NoYWRlcnMpCi0gICAg
ICAgICAgICBtX3dlYmdsRGVidWdTaGFkZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTERlYnVn
U2hhZGVycz4odGhpcyk7CisgICAgICAgICAgICBtX3dlYmdsRGVidWdTaGFkZXJzID0gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJHTERlYnVnU2hhZGVycz4oKnRoaXMpOwogICAgICAgICByZXR1cm4gbV93
ZWJnbERlYnVnU2hhZGVycy5nZXQoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggMWEx
ZjE2YTljODY3ZmZiNzkyMTAzYjI5MGEwNWU2ODUyODlhNTNlOS4uMDNjMTljNGRjZGEwMzYwMjY4
YTgyMDRjYWExOGZjODQ0MzhjYTY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTg5NCw3ICs4OTQs
NyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNoZWNrT2JqZWN0VG9CZUJvdW5k
KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgVwogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5k
aW5nKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAob2JqZWN0KSB7Ci0gICAgICAg
IGlmICghb2JqZWN0LT52YWxpZGF0ZShjb250ZXh0R3JvdXAoKSwgdGhpcykpIHsKKyAgICAgICAg
aWYgKCFvYmplY3QtPnZhbGlkYXRlKGNvbnRleHRHcm91cCgpLCAqdGhpcykpIHsKICAgICAgICAg
ICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElP
TiwgZnVuY3Rpb25OYW1lLCAib2JqZWN0IG5vdCBmcm9tIHRoaXMgY29udGV4dCIpOwogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC0xMzg3LDcgKzEzODcsNyBAQCBSZWZQ
dHI8V2ViR0xCdWZmZXI+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZUJ1ZmZlcigp
CiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgYXV0byBidWZmZXIgPSBXZWJHTEJ1ZmZlcjo6Y3JlYXRlKHRoaXMpOworICAg
IGF1dG8gYnVmZmVyID0gV2ViR0xCdWZmZXI6OmNyZWF0ZSgqdGhpcyk7CiAgICAgYWRkU2hhcmVk
T2JqZWN0KGJ1ZmZlci5wdHIoKSk7CiAgICAgcmV0dXJuIFdURk1vdmUoYnVmZmVyKTsKIH0KQEAg
LTEzOTYsNyArMTM5Niw3IEBAIFJlZlB0cjxXZWJHTEZyYW1lYnVmZmVyPiBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpjcmVhdGVGcmFtZWJ1ZmZlcigpCiB7CiAgICAgaWYgKGlzQ29udGV4dExv
c3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byBidWZmZXIg
PSBXZWJHTEZyYW1lYnVmZmVyOjpjcmVhdGUodGhpcyk7CisgICAgYXV0byBidWZmZXIgPSBXZWJH
TEZyYW1lYnVmZmVyOjpjcmVhdGUoKnRoaXMpOwogICAgIGFkZENvbnRleHRPYmplY3QoYnVmZmVy
LnB0cigpKTsKICAgICByZXR1cm4gV1RGTW92ZShidWZmZXIpOwogfQpAQCAtMTQwNSw3ICsxNDA1
LDcgQEAgUmVmUHRyPFdlYkdMVGV4dHVyZT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3Jl
YXRlVGV4dHVyZSgpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byB0ZXh0dXJlID0gV2ViR0xUZXh0dXJlOjpjcmVh
dGUodGhpcyk7CisgICAgYXV0byB0ZXh0dXJlID0gV2ViR0xUZXh0dXJlOjpjcmVhdGUoKnRoaXMp
OwogICAgIGFkZFNoYXJlZE9iamVjdCh0ZXh0dXJlLnB0cigpKTsKICAgICByZXR1cm4gV1RGTW92
ZSh0ZXh0dXJlKTsKIH0KQEAgLTE0MTQsNyArMTQxNCw3IEBAIFJlZlB0cjxXZWJHTFByb2dyYW0+
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZVByb2dyYW0oKQogewogICAgIGlmIChp
c0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGF1
dG8gcHJvZ3JhbSA9IFdlYkdMUHJvZ3JhbTo6Y3JlYXRlKHRoaXMpOworICAgIGF1dG8gcHJvZ3Jh
bSA9IFdlYkdMUHJvZ3JhbTo6Y3JlYXRlKCp0aGlzKTsKICAgICBhZGRTaGFyZWRPYmplY3QocHJv
Z3JhbS5wdHIoKSk7CiAgICAgcmV0dXJuIFdURk1vdmUocHJvZ3JhbSk7CiB9CkBAIC0xNDIzLDcg
KzE0MjMsNyBAQCBSZWZQdHI8V2ViR0xSZW5kZXJidWZmZXI+IFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmNyZWF0ZVJlbmRlcmJ1ZmZlcigpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBl
bmRpbmcoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byBidWZmZXIgPSBXZWJH
TFJlbmRlcmJ1ZmZlcjo6Y3JlYXRlKHRoaXMpOworICAgIGF1dG8gYnVmZmVyID0gV2ViR0xSZW5k
ZXJidWZmZXI6OmNyZWF0ZSgqdGhpcyk7CiAgICAgYWRkU2hhcmVkT2JqZWN0KGJ1ZmZlci5wdHIo
KSk7CiAgICAgcmV0dXJuIFdURk1vdmUoYnVmZmVyKTsKIH0KQEAgLTE0MzcsNyArMTQzNyw3IEBA
IFJlZlB0cjxXZWJHTFNoYWRlcj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRlU2hh
ZGVyKEdDM0RlbnVtIHR5cGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAg
IGF1dG8gc2hhZGVyID0gV2ViR0xTaGFkZXI6OmNyZWF0ZSh0aGlzLCB0eXBlKTsKKyAgICBhdXRv
IHNoYWRlciA9IFdlYkdMU2hhZGVyOjpjcmVhdGUoKnRoaXMsIHR5cGUpOwogICAgIGFkZFNoYXJl
ZE9iamVjdChzaGFkZXIucHRyKCkpOwogICAgIHJldHVybiBXVEZNb3ZlKHNoYWRlcik7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNhbXBsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTYW1wbGVyLmNwcAppbmRleCA3NjlmZDRl
MjRiYjFmZDhkZDc1MjUyODMxZTIwZDkzOGE5NjhlZDAyLi4wY2E3OTViOGJmMDI3ZDYyYmZlZWVh
NWNlNTQ2NGMzNjBkZDQ0MTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFNhbXBsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
U2FtcGxlci5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IAotUmVmPFdlYkdMU2FtcGxlcj4gV2ViR0xTYW1wbGVyOjpjcmVhdGUoV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSogY3R4KQorUmVmPFdlYkdMU2FtcGxlcj4gV2ViR0xTYW1wbGVyOjpjcmVhdGUo
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY3R4KQogewogICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYkdMU2FtcGxlcihjdHgpKTsKIH0KQEAgLTQzLDcgKzQzLDcgQEAgV2ViR0xTYW1wbGVy
Ojp+V2ViR0xTYW1wbGVyKCkKICAgICBkZWxldGVPYmplY3QoMCk7CiB9CiAKLVdlYkdMU2FtcGxl
cjo6V2ViR0xTYW1wbGVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGN0eCkKK1dlYkdMU2Ft
cGxlcjo6V2ViR0xTYW1wbGVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGN0eCkKICAgICA6
IFdlYkdMU2hhcmVkT2JqZWN0KGN0eCkKIHsKICAgICAvLyBGSVhNRTogQ2FsbCBjcmVhdGVTYW1w
bGVyIGZyb20gR3JhcGhpY3NDb250ZXh0M0QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFNhbXBsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMU2FtcGxlci5oCmluZGV4IDBiNGExZWY5OWI2ZTliODQxZDU3MjUxZDE5Mzc0YWZhMDk5ZDE1
Y2EuLmJkOWMwZWFkZDAzYTc1MjkwM2NkY2VkZDNlOTZlY2ZhYjIxODEyYzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2FtcGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2FtcGxlci5oCkBAIC0zMywxMCArMzMsMTAgQEAgY2xh
c3MgV2ViR0xTYW1wbGVyIGZpbmFsIDogcHVibGljIFdlYkdMU2hhcmVkT2JqZWN0IHsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5XZWJHTFNhbXBsZXIoKTsKIAotICAgIHN0YXRpYyBSZWY8V2ViR0xT
YW1wbGVyPiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOworICAgIHN0YXRpYyBS
ZWY8V2ViR0xTYW1wbGVyPiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogCiBw
cm90ZWN0ZWQ6Ci0gICAgV2ViR0xTYW1wbGVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsK
KyAgICBXZWJHTFNhbXBsZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogCiAgICAgdm9p
ZCBkZWxldGVPYmplY3RJbXBsKEdyYXBoaWNzQ29udGV4dDNEKiwgUGxhdGZvcm0zRE9iamVjdCkg
b3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
U2hhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmNwcApp
bmRleCAxNmZmNmQ1Yzg1OGE3NjE1NzgyMWY5Yjk0Y2FjMWRlNzQyNmZlMmM5Li43ZmFlZDI0MDgw
MzRmOGJmODBkYzc4MWUwMmU2ZTllNGMxNzQ2Yzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xTaGFkZXIuY3BwCkBAIC0zNCwxOCArMzQsMTggQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1SZWY8V2ViR0xTaGFkZXI+IFdlYkdMU2hhZGVyOjpjcmVhdGUoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSogY3R4LCBHQzNEZW51bSB0eXBlKQorUmVmPFdlYkdMU2hhZGVyPiBX
ZWJHTFNoYWRlcjo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGN0eCwgR0MzRGVu
dW0gdHlwZSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHTFNoYWRlcihjdHgsIHR5
cGUpKTsKIH0KIAotV2ViR0xTaGFkZXI6OldlYkdMU2hhZGVyKFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UqIGN0eCwgR0MzRGVudW0gdHlwZSkKK1dlYkdMU2hhZGVyOjpXZWJHTFNoYWRlcihXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjdHgsIEdDM0RlbnVtIHR5cGUpCiAgICAgOiBXZWJHTFNo
YXJlZE9iamVjdChjdHgpCiAgICAgLCBtX3R5cGUodHlwZSkKICAgICAsIG1fc291cmNlKGVtcHR5
U3RyaW5nKCkpCiAgICAgLCBtX2lzVmFsaWQoZmFsc2UpCiB7Ci0gICAgc2V0T2JqZWN0KGN0eC0+
Z3JhcGhpY3NDb250ZXh0M0QoKS0+Y3JlYXRlU2hhZGVyKHR5cGUpKTsKKyAgICBzZXRPYmplY3Qo
Y3R4LmdyYXBoaWNzQ29udGV4dDNEKCktPmNyZWF0ZVNoYWRlcih0eXBlKSk7CiB9CiAKIFdlYkdM
U2hhZGVyOjp+V2ViR0xTaGFkZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xTaGFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hh
ZGVyLmgKaW5kZXggNjM5Y2VmYTcwYTY4YjU3MzhkOGZmMjFkOGI2NWNiYmE4MWQ4MGMxYS4uNmFm
NWMyNjlkNTBhYWU0ZDg1NWI3ZDA3MGVhMzE4OGVlNTQzYjkwYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFNoYWRlci5oCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIFdlYkdMU2hh
ZGVyIGZpbmFsIDogcHVibGljIFdlYkdMU2hhcmVkT2JqZWN0IHsKIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5XZWJHTFNoYWRlcigpOwogCi0gICAgc3RhdGljIFJlZjxXZWJHTFNoYWRlcj4gY3JlYXRl
KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqLCBHQzNEZW51bSk7CisgICAgc3RhdGljIFJlZjxX
ZWJHTFNoYWRlcj4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmLCBHQzNEZW51bSk7
CiAKICAgICBHQzNEZW51bSBnZXRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAg
Y29uc3QgU3RyaW5nJiBnZXRTb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZTsgfQpAQCAt
NDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRWYWxpZChib29sIHZhbGlkKSB7IG1f
aXNWYWxpZCA9IHZhbGlkOyB9CiAKIHByaXZhdGU6Ci0gICAgV2ViR0xTaGFkZXIoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSosIEdDM0RlbnVtKTsKKyAgICBXZWJHTFNoYWRlcihXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlJiwgR0MzRGVudW0pOwogCiAgICAgdm9pZCBkZWxldGVPYmplY3RJbXBs
KEdyYXBoaWNzQ29udGV4dDNEKiwgUGxhdGZvcm0zRE9iamVjdCkgb3ZlcnJpZGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhcmVkT2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhcmVkT2JqZWN0LmNwcAppbmRleCAz
NGY3Y2VlYTUyZjY4NWMwZTFjNjZmODU5MmJjMTE3NTE2NWY5ZGRjLi5hMWUzMTMyMjAxNDFmY2Yw
MjZiYzE1NWNkN2Q3OThjMTdhZjA4NTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFNoYXJlZE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xTaGFyZWRPYmplY3QuY3BwCkBAIC0zNCw5ICszNCw5IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotV2ViR0xTaGFyZWRPYmplY3Q6OldlYkdMU2hhcmVkT2JqZWN0KFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRleHQpCitXZWJHTFNoYXJlZE9iamVjdDo6V2ViR0xT
aGFyZWRPYmplY3QoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdl
YkdMT2JqZWN0KGNvbnRleHQpLAotICAgICAgbV9jb250ZXh0R3JvdXAoY29udGV4dC0+Y29udGV4
dEdyb3VwKCkpCisgICAgICBtX2NvbnRleHRHcm91cChjb250ZXh0LmNvbnRleHRHcm91cCgpKQog
ewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYXJl
ZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFyZWRPYmplY3Qu
aAppbmRleCA5NDY3ZmZhMzMyZDcwZWY4ZmViODI5NzFiODA5ZDQyNDczMzU3ZTU4Li5hYmU0ODAz
MzM3MmM5NTZjYzcxMzBlYjdmN2JmZmZkY2QxYTlmNTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYXJlZE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMU2hhcmVkT2JqZWN0LmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgYm9vbCBpc1RyYW5zZm9ybUZlZWRiYWNrKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNWZXJ0ZXhBcnJheU9iamVjdCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiAKLSAgICBib29sIHZhbGlkYXRlKGNvbnN0IFdlYkdMQ29udGV4dEdy
b3VwKiBjb250ZXh0R3JvdXAsIGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKSBjb25z
dCBvdmVycmlkZQorICAgIGJvb2wgdmFsaWRhdGUoY29uc3QgV2ViR0xDb250ZXh0R3JvdXAqIGNv
bnRleHRHcm91cCwgY29uc3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpIGNvbnN0IG92ZXJy
aWRlCiAgICAgewogICAgICAgICByZXR1cm4gY29udGV4dEdyb3VwID09IG1fY29udGV4dEdyb3Vw
OwogICAgIH0KQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGV0YWNoQ29udGV4
dEdyb3VwKCk7CiAKIHByb3RlY3RlZDoKLSAgICBXZWJHTFNoYXJlZE9iamVjdChXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlKik7CisgICAgV2ViR0xTaGFyZWRPYmplY3QoV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSYpOwogCiAgICAgYm9vbCBoYXNHcm91cE9yQ29udGV4dCgpIGNvbnN0IG92ZXJy
aWRlCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xT
eW5jLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5jcHAKaW5kZXgg
MmJkMmNlODJhODcxNTA0YjY5MzlmNTY4YWY0Yzk1Y2RhMDIyNzZhYy4uNjM2MGZiYTRlZTMwYzM3
YjJhODZkZWVjMmJkYzMyYTk4MGQ4NzE5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xTeW5jLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFN5bmMuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAKLVJlZjxXZWJHTFN5bmM+IFdlYkdMU3luYzo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UqIGN0eCkKK1JlZjxXZWJHTFN5bmM+IFdlYkdMU3luYzo6Y3JlYXRlKFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UmIGN0eCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHTFN5
bmMoY3R4KSk7CiB9CkBAIC00Myw3ICs0Myw3IEBAIFdlYkdMU3luYzo6fldlYkdMU3luYygpCiAg
ICAgZGVsZXRlT2JqZWN0KDApOwogfQogCi1XZWJHTFN5bmM6OldlYkdMU3luYyhXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlKiBjdHgpCitXZWJHTFN5bmM6OldlYkdMU3luYyhXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlJiBjdHgpCiAgICAgOiBXZWJHTFNoYXJlZE9iamVjdChjdHgpCiB7CiAgICAg
Ly8gRklYTUU6IENhbGwgZmVuY2VTeW5jIGZyb20gR3JhcGhpY3NDb250ZXh0M0QuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFN5bmMuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5oCmluZGV4IDdhZDM5OTlmYjAxMDQyOWNiZTM2MzMw
ZmVlZjBlNzgwYzRjNTJiOGEuLmVmNmVjOWRjZDU5NjRmYjQ2ZDIzN2EwMDYzZDRjNTZiMTJjZGE3
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5oCkBAIC0zMywxMCArMzMs
MTAgQEAgY2xhc3MgV2ViR0xTeW5jIGZpbmFsIDogcHVibGljIFdlYkdMU2hhcmVkT2JqZWN0IHsK
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJHTFN5bmMoKTsKIAotICAgIHN0YXRpYyBSZWY8V2Vi
R0xTeW5jPiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOworICAgIHN0YXRpYyBS
ZWY8V2ViR0xTeW5jPiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogCiBwcm90
ZWN0ZWQ6Ci0gICAgV2ViR0xTeW5jKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBX
ZWJHTFN5bmMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogCiAgICAgdm9pZCBkZWxldGVP
YmplY3RJbXBsKEdyYXBoaWNzQ29udGV4dDNEKiwgUGxhdGZvcm0zRE9iamVjdCkgb3ZlcnJpZGU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRleHR1cmUuY3BwCmluZGV4IGJk
ZmNlYWE4NTI1MjJlNzk0ZWY2ZWZiNWIyM2ZkZDE2NWU0ZDE0ODguLjAyODRhODRlMGU3NjdmZDY2
MWNhNDc1NDgxZjk3NDk5MTU0YzM3MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xUZXh0dXJlLmNwcApAQCAtMzUsMTIgKzM1LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotUmVmPFdlYkdMVGV4dHVyZT4gV2ViR0xUZXh0dXJlOjpjcmVhdGUoV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSogY3R4KQorUmVmPFdlYkdMVGV4dHVyZT4gV2ViR0xUZXh0dXJlOjpjcmVh
dGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY3R4KQogewogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFdlYkdMVGV4dHVyZShjdHgpKTsKIH0KIAotV2ViR0xUZXh0dXJlOjpXZWJHTFRleHR1
cmUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY3R4KQorV2ViR0xUZXh0dXJlOjpXZWJHTFRl
eHR1cmUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY3R4KQogICAgIDogV2ViR0xTaGFyZWRP
YmplY3QoY3R4KQogICAgICwgbV90YXJnZXQoMCkKICAgICAsIG1fbWluRmlsdGVyKEdyYXBoaWNz
Q29udGV4dDNEOjpORUFSRVNUX01JUE1BUF9MSU5FQVIpCkBAIC01Myw4ICs1MywxMSBAQCBXZWJH
TFRleHR1cmU6OldlYkdMVGV4dHVyZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjdHgpCiAg
ICAgLCBtX2lzQ29tcHJlc3NlZChmYWxzZSkKICAgICAsIG1faXNGbG9hdFR5cGUoZmFsc2UpCiAg
ICAgLCBtX2lzSGFsZkZsb2F0VHlwZShmYWxzZSkKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAg
LCBtX2lzRm9yV2ViR0wxKGN0eC5pc1dlYkdMMSgpKQorI2VuZGlmCiB7Ci0gICAgc2V0T2JqZWN0
KGN0eC0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+Y3JlYXRlVGV4dHVyZSgpKTsKKyAgICBzZXRPYmpl
Y3QoY3R4LmdyYXBoaWNzQ29udGV4dDNEKCktPmNyZWF0ZVRleHR1cmUoKSk7CiB9CiAKIFdlYkdM
VGV4dHVyZTo6fldlYkdMVGV4dHVyZSgpCkBAIC0xODgsNiArMTkxLDcgQEAgR0MzRGVudW0gV2Vi
R0xUZXh0dXJlOjpnZXRJbnRlcm5hbEZvcm1hdChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2
ZWwpIGNvbnN0CiAKIEdDM0RlbnVtIFdlYkdMVGV4dHVyZTo6Z2V0VHlwZShHQzNEZW51bSB0YXJn
ZXQsIEdDM0RpbnQgbGV2ZWwpIGNvbnN0CiB7CisgICAgQVNTRVJUKCFtX2lzRm9yV2ViR0wxKTsK
ICAgICBjb25zdCBMZXZlbEluZm8qIGluZm8gPSBnZXRMZXZlbEluZm8odGFyZ2V0LCBsZXZlbCk7
CiAgICAgaWYgKCFpbmZvKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xUZXh0dXJlLmgKaW5kZXggNmNhMzg4OTc2NmMwYzAzZTZlNTQ1MTAwYTY4NTc1
ZmJlOWU3MTkxNi4uODc1MTc5OTdhM2UwMjNiYTlkM2U3OTY0MjZhNzY0NDM0MzUyNzljOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmgKQEAgLTQxLDcgKzQxLDcg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+V2ViR0xUZXh0dXJlKCk7CiAKLSAgICBzdGF0aWMg
UmVmPFdlYkdMVGV4dHVyZT4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAg
ICBzdGF0aWMgUmVmPFdlYkdMVGV4dHVyZT4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UmKTsKIAogICAgIHZvaWQgc2V0VGFyZ2V0KEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBtYXhM
ZXZlbCk7CiAgICAgdm9pZCBzZXRQYXJhbWV0ZXJpKEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50IHBh
cmFtKTsKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBHQzNEaW50IGNvbXB1
dGVMZXZlbENvdW50KEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCk7CiAKIHByaXZh
dGU6Ci0gICAgV2ViR0xUZXh0dXJlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBX
ZWJHTFRleHR1cmUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogCiAgICAgdm9pZCBkZWxl
dGVPYmplY3RJbXBsKEdyYXBoaWNzQ29udGV4dDNEKiwgUGxhdGZvcm0zRE9iamVjdCkgb3ZlcnJp
ZGU7CiAKQEAgLTEzMyw2ICsxMzMsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0NvbXByZXNz
ZWQ7CiAgICAgYm9vbCBtX2lzRmxvYXRUeXBlOwogICAgIGJvb2wgbV9pc0hhbGZGbG9hdFR5cGU7
CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIGJvb2wgbV9pc0ZvcldlYkdMMTsKKyNlbmRpZgog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmNwcAppbmRleCBmMzY1ZDUyM2ZhOGFh
NGY0NzEzNzQxZjg0ZTlkNTQ5ZjA2ZWQ1MTU3Li4zNTNlNGJhYzFhMjkxYWU4MDc1ODE1Y2NkNzRk
MjlmZGU5YTkzNmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFRyYW5zZm9ybUZlZWRiYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgCi1SZWY8V2ViR0xUcmFuc2Zvcm1GZWVkYmFjaz4gV2ViR0xUcmFuc2Zv
cm1GZWVkYmFjazo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGN0eCkKK1JlZjxX
ZWJHTFRyYW5zZm9ybUZlZWRiYWNrPiBXZWJHTFRyYW5zZm9ybUZlZWRiYWNrOjpjcmVhdGUoV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY3R4KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFdlYkdMVHJhbnNmb3JtRmVlZGJhY2soY3R4KSk7CiB9CkBAIC00Myw3ICs0Myw3IEBAIFdlYkdM
VHJhbnNmb3JtRmVlZGJhY2s6On5XZWJHTFRyYW5zZm9ybUZlZWRiYWNrKCkKICAgICBkZWxldGVP
YmplY3QoMCk7CiB9CiAKLVdlYkdMVHJhbnNmb3JtRmVlZGJhY2s6OldlYkdMVHJhbnNmb3JtRmVl
ZGJhY2soV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY3R4KQorV2ViR0xUcmFuc2Zvcm1GZWVk
YmFjazo6V2ViR0xUcmFuc2Zvcm1GZWVkYmFjayhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBj
dHgpCiAgICAgOiBXZWJHTFNoYXJlZE9iamVjdChjdHgpCiB7CiAgICAgLy8gRklYTUU6IENhbGwg
Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2sgZnJvbSBHcmFwaGljc0NvbnRleHQzRC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVHJhbnNmb3JtRmVlZGJhY2suaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVHJhbnNmb3JtRmVlZGJhY2suaAppbmRl
eCAyNmQ0MDQ0ZThkMzc3MjllMjE1Zjc1MWQ4ZmE0MmQzZDJkODBmNDVlLi42OWNmOGU3YmI1NDE4
ZWFhOWU0NTY5MjExNDA4ZjQ3NmIyNmE2Nzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5oCkBAIC0zMywxMCArMzMsMTAgQEAg
Y2xhc3MgV2ViR0xUcmFuc2Zvcm1GZWVkYmFjayBmaW5hbCA6IHB1YmxpYyBXZWJHTFNoYXJlZE9i
amVjdCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViR0xUcmFuc2Zvcm1GZWVkYmFjaygpOwog
Ci0gICAgc3RhdGljIFJlZjxXZWJHTFRyYW5zZm9ybUZlZWRiYWNrPiBjcmVhdGUoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSopOworICAgIHN0YXRpYyBSZWY8V2ViR0xUcmFuc2Zvcm1GZWVkYmFj
az4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKIAogcHJvdGVjdGVkOgotICAg
IFdlYkdMVHJhbnNmb3JtRmVlZGJhY2soV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOworICAg
IFdlYkdMVHJhbnNmb3JtRmVlZGJhY2soV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogCiAg
ICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKEdyYXBoaWNzQ29udGV4dDNEKiwgUGxhdGZvcm0zRE9i
amVjdCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMVmVydGV4QXJyYXlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5jcHAKaW5kZXggNmU4MTVlZjIzNWRlNTJiMGRiMDA0ZjY1
ODYwMjQzYzAxMDk0YzU2OS4uN2ZhNjljOWE0OTRkYmVlYTlkYmViZjg5ZTg1ZjQzZjljZmQwMjg0
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJh
eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhB
cnJheU9iamVjdC5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIAotUmVmPFdlYkdMVmVydGV4QXJyYXlPYmplY3Q+IFdlYkdMVmVydGV4QXJyYXlPYmplY3Q6
OmNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjdHgsIFZBT1R5cGUgdHlwZSkKK1Jl
ZjxXZWJHTFZlcnRleEFycmF5T2JqZWN0PiBXZWJHTFZlcnRleEFycmF5T2JqZWN0OjpjcmVhdGUo
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY3R4LCBWQU9UeXBlIHR5cGUpCiB7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdChjdHgsIHR5cGUpKTsKIH0K
QEAgLTQzLDcgKzQzLDcgQEAgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdDo6fldlYkdMVmVydGV4QXJy
YXlPYmplY3QoKQogICAgIGRlbGV0ZU9iamVjdCgwKTsKIH0KIAotV2ViR0xWZXJ0ZXhBcnJheU9i
amVjdDo6V2ViR0xWZXJ0ZXhBcnJheU9iamVjdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBj
dHgsIFZBT1R5cGUgdHlwZSkKK1dlYkdMVmVydGV4QXJyYXlPYmplY3Q6OldlYkdMVmVydGV4QXJy
YXlPYmplY3QoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY3R4LCBWQU9UeXBlIHR5cGUpCiAg
ICAgOiBXZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZShjdHgsIHR5cGUpCiB7CiAgICAgc3dpdGNo
IChtX3R5cGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
VmVydGV4QXJyYXlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVy
dGV4QXJyYXlPYmplY3QuaAppbmRleCBhZTRkODMyNmQ2YTkxMjM5NWZkN2Q5MTc0MzkyZjgxYzdm
M2E0M2EzLi41YjQ5YzcwOGE0NjI1NGRlNTkwZTFjMDZkY2M5ODYyYTY2NGMzMTQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5o
CkBAIC0zNywxMCArMzcsMTAgQEAgY2xhc3MgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDsKIAogY2xh
c3MgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdCBmaW5hbCA6IHB1YmxpYyBXZWJHTFZlcnRleEFycmF5
T2JqZWN0QmFzZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJHTFZlcnRleEFycmF5T2Jq
ZWN0PiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSosIFZBT1R5cGUpOworICAgIHN0
YXRpYyBSZWY8V2ViR0xWZXJ0ZXhBcnJheU9iamVjdD4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UmLCBWQU9UeXBlKTsKICAgICB2aXJ0dWFsIH5XZWJHTFZlcnRleEFycmF5T2JqZWN0
KCk7CiBwcml2YXRlOgotICAgIFdlYkdMVmVydGV4QXJyYXlPYmplY3QoV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSosIFZBT1R5cGUpOworICAgIFdlYkdMVmVydGV4QXJyYXlPYmplY3QoV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZSYsIFZBT1R5cGUpOwogICAgIGJvb2wgaXNUcmFuc2Zvcm1GZWVk
YmFjaygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwo
R3JhcGhpY3NDb250ZXh0M0QqLCBQbGF0Zm9ybTNET2JqZWN0KSBvdmVycmlkZTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2Jq
ZWN0QmFzZS5jcHAKaW5kZXggZjM5YzBkZGQyMjc3OWQwNWYxNjBkMTk3OTU2MzE4YTYwMGViOTNj
Yy4uNjk2NDljNjJmNmUxZGJlZjJmOWVkYTYxN2M0MjQyNGRmNzNmMTc1ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RC
YXNlLmNwcApAQCAtMzIsMTMgKzMyLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV2Vi
R0xWZXJ0ZXhBcnJheU9iamVjdEJhc2U6OldlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UqIGN0eCwgVkFPVHlwZSB0eXBlKQorV2ViR0xWZXJ0ZXhBcnJh
eU9iamVjdEJhc2U6OldlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlKFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UmIGN0eCwgVkFPVHlwZSB0eXBlKQogICAgIDogV2ViR0xDb250ZXh0T2JqZWN0KGN0
eCkKICAgICAsIG1fdHlwZSh0eXBlKQogICAgICwgbV9oYXNFdmVyQmVlbkJvdW5kKGZhbHNlKQog
ICAgICwgbV9ib3VuZEVsZW1lbnRBcnJheUJ1ZmZlcigwKQogewotICAgIG1fdmVydGV4QXR0cmli
U3RhdGUucmVzaXplKGN0eC0+Z2V0TWF4VmVydGV4QXR0cmlicygpKTsKKyAgICBtX3ZlcnRleEF0
dHJpYlN0YXRlLnJlc2l6ZShjdHguZ2V0TWF4VmVydGV4QXR0cmlicygpKTsKIH0KIAogdm9pZCBX
ZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZTo6c2V0RWxlbWVudEFycmF5QnVmZmVyKFBhc3NSZWZQ
dHI8V2ViR0xCdWZmZXI+IGJ1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZS5oCmluZGV4IDYzZTFkZGI5MjJiNzA0
MTI4OTlhZWQ3YmZmNjJkZjM5ZWY0MjI2MzUuLjNmMDdkZGVlYWQxYmY5YzdiN2RmN2IwYzY4OGNj
OGJlNzIwNzNjMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
VmVydGV4QXJyYXlPYmplY3RCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJhc2UuaApAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRWZXJ0ZXhBdHRyaWJEaXZpc29yKEdDM0R1aW50IGluZGV4LCBHQzNEdWludCBk
aXZpc29yKTsKIAogcHJvdGVjdGVkOgotICAgIFdlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlKFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqLCBWQU9UeXBlKTsKKyAgICBXZWJHTFZlcnRleEFycmF5
T2JqZWN0QmFzZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiwgVkFPVHlwZSk7CiAgICAgdmly
dHVhbCB2b2lkIGRlbGV0ZU9iamVjdEltcGwoR3JhcGhpY3NDb250ZXh0M0QqLCBQbGF0Zm9ybTNE
T2JqZWN0KSA9IDA7CiAgICAgCiAgICAgVkFPVHlwZSBtX3R5cGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3BwCmlu
ZGV4IGQxMzU5NTI1MjU5NGYzMDJmYzFkNDIyYjhiOTdkNzdiMGZiMDIwNjUuLjk0MTRmYWQzNGJk
MTljZGY5YjhhZjFhMmFjNTU1OGFkODY0MjhjYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3BwCkBAIC0zNCwx
MiArMzQsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8V2ViR0xWZXJ0ZXhBcnJh
eU9iamVjdE9FUz4gV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6Y3JlYXRlKFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UqIGN0eCwgVkFPVHlwZSB0eXBlKQorUmVmPFdlYkdMVmVydGV4QXJyYXlP
YmplY3RPRVM+IFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OmNyZWF0ZShXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlJiBjdHgsIFZBT1R5cGUgdHlwZSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTKGN0eCwgdHlwZSkpOwogfQogCi1XZWJHTFZl
cnRleEFycmF5T2JqZWN0T0VTOjpXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTKFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UqIGN0eCwgVkFPVHlwZSB0eXBlKQorV2ViR0xWZXJ0ZXhBcnJheU9iamVj
dE9FUzo6V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
JiBjdHgsIFZBT1R5cGUgdHlwZSkKICAgICA6IFdlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlKGN0
eCwgdHlwZSkKIHsKICAgICBFeHRlbnNpb25zM0QqIGV4dGVuc2lvbnMgPSBjb250ZXh0KCktPmdy
YXBoaWNzQ29udGV4dDNEKCktPmdldEV4dGVuc2lvbnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaAppbmRleCA5YWIx
MTU1YzRjNzg3Zjc2MDI0NGE5YjNkMDYxZjRjNWU1MjE0MTg3Li5kMDhkMjIzZTM1NzA2Njk0ZTkx
Y2FlNmFjZGM4YzRiY2E5ZjE2N2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oCkBAIC0zMywxMCArMzMsMTAgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTIGZp
bmFsIDogcHVibGljIFdlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM+IGNyZWF0ZShXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlKiwgVkFPVHlwZSk7CisgICAgc3RhdGljIFJlZjxXZWJHTFZlcnRleEFycmF5
T2JqZWN0T0VTPiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYsIFZBT1R5cGUpOwog
ICAgIHZpcnR1YWwgfldlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMoKTsKIHByaXZhdGU6Ci0gICAg
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiwgVkFP
VHlwZSk7CisgICAgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUyhXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlJiwgVkFPVHlwZSk7CiAgICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKEdyYXBoaWNzQ29u
dGV4dDNEKiwgUGxhdGZvcm0zRE9iamVjdCkgb3ZlcnJpZGU7CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294814</attachid>
            <date>2016-11-14 22:42:31 -0800</date>
            <delta_ts>2016-11-14 22:46:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164749-20161114224230.patch</filename>
            <type>text/plain</type>
            <size>130993</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4NzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzI1N2ZiN2IxNDFiNmY2
OGI0NThhNjU0N2I5M2E0OTkzNDNmYTVmYi4uYjU3ZTczMGVkMWM4YmMzYmMzYjViMjIwYTViMzcw
ODAzMGI5YTkxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwOCBAQAorMjAxNi0xMS0xNCAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJHTF0g
TWlncmF0ZSBjb25zdHJ1Y3Rpb24gZnVuY3Rpb25zIGZyb20gcG9pbnRlcnMgdG8gcmVmZXJlbmNl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0NzQ5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWVjaGFu
aWNhbCBmaW5kL3JlcGxhY2UuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhlcmUg
aXMgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogaHRtbC9jYW52YXMvQU5HTEVJbnN0
YW5jZWRBcnJheXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QU5HTEVJbnN0YW5jZWRBcnJheXM6
OkFOR0xFSW5zdGFuY2VkQXJyYXlzKToKKyAgICAgICAgKFdlYkNvcmU6OkFOR0xFSW5zdGFuY2Vk
QXJyYXlzOjpzdXBwb3J0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6QU5HTEVJbnN0YW5jZWRBcnJh
eXM6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpBTkdMRUlu
c3RhbmNlZEFycmF5czo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2Vi
Q29yZTo6QU5HTEVJbnN0YW5jZWRBcnJheXM6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuaDoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9FWFRCbGVuZE1pbk1heC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFWFRCbGVu
ZE1pbk1heDo6RVhUQmxlbmRNaW5NYXgpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0VYVEJsZW5k
TWluTWF4Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvRVhURnJhZ0RlcHRoLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVYVEZyYWdEZXB0aDo6RVhURnJhZ0RlcHRoKToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9FWFRGcmFnRGVwdGguaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRTaGFkZXJU
ZXh0dXJlTE9ELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVYVFNoYWRlclRleHR1cmVMT0Q6OkVY
VFNoYWRlclRleHR1cmVMT0QpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0VYVFNoYWRlclRleHR1
cmVMT0QuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRUZXh0dXJlRmlsdGVyQW5pc290cm9w
aWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljOjpF
WFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0VYVFRl
eHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL0VYVHNSR0Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RVhUc1JHQjo6RVhUc1JHQik6CisgICAgICAgICogaHRt
bC9jYW52YXMvRVhUc1JHQi5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU0VsZW1lbnRJbmRl
eFVpbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T0VTRWxlbWVudEluZGV4VWludDo6T0VTRWxl
bWVudEluZGV4VWludCk6CisgICAgICAgICogaHRtbC9jYW52YXMvT0VTRWxlbWVudEluZGV4VWlu
dC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6T0VTU3RhbmRhcmREZXJpdmF0aXZlczo6T0VTU3RhbmRhcmREZXJp
dmF0aXZlcyk6CisgICAgICAgICogaHRtbC9jYW52YXMvT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5o
OgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpPRVNUZXh0dXJlRmxvYXQ6Ok9FU1RleHR1cmVGbG9hdCk6CisgICAgICAgICogaHRt
bC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvT0VTVGV4
dHVyZUZsb2F0TGluZWFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9FU1RleHR1cmVGbG9hdExp
bmVhcjo6T0VTVGV4dHVyZUZsb2F0TGluZWFyKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNU
ZXh0dXJlRmxvYXRMaW5lYXIuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFs
ZkZsb2F0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9FU1RleHR1cmVIYWxmRmxvYXQ6Ok9FU1Rl
eHR1cmVIYWxmRmxvYXQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxv
YXQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok9FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXI6Ok9FU1RleHR1
cmVIYWxmRmxvYXRMaW5lYXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1RleHR1cmVIYWxm
RmxvYXRMaW5lYXIuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPRVNWZXJ0ZXhBcnJheU9iamVjdDo6T0VTVmVydGV4
QXJyYXlPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6T0VTVmVydGV4QXJyYXlPYmplY3Q6OmNy
ZWF0ZVZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKFdlYkNvcmU6Ok9FU1ZlcnRleEFycmF5T2Jq
ZWN0OjpkZWxldGVWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJDb3JlOjpPRVNWZXJ0ZXhB
cnJheU9iamVjdDo6aXNWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJDb3JlOjpPRVNWZXJ0
ZXhBcnJheU9iamVjdDo6YmluZFZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmluaXRpYWxpemVWZXJ0ZXhBcnJheU9iamVjdHMpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aW5pdGlhbGl6ZVNoYWRlckV4dGVuc2lv
bnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZHJhd0J1ZmZl
cnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlVmVy
dGV4QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aXNW
ZXJ0ZXhBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpi
aW5kVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6Z2V0RXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
QnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQnVmZmVyOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xCdWZmZXI6OldlYkdMQnVmZmVyKToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTEJ1ZmZlci5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29tcHJl
c3NlZFRleHR1cmVBVEMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVzc2VkVGV4
dHVyZUFUQzo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQyk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9X
ZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xD
b21wcmVzc2VkVGV4dHVyZVBWUlRDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQpOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5oOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpXZWJHTENvbXByZXNzZWRU
ZXh0dXJlUzNUQyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNU
Qzo6c3VwcG9ydGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0
dXJlUzNUQy5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29udGV4dE9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbnRleHRPYmplY3Q6OldlYkdMQ29udGV4dE9iamVj
dCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0T2JqZWN0Lmg6CisgICAgICAg
ICogaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTERlYnVnUmVuZGVyZXJJbmZvOjpXZWJHTERlYnVnUmVuZGVyZXJJbmZvKToKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTERlYnVnUmVuZGVyZXJJbmZvLmg6CisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xEZWJ1Z1NoYWRlcnM6OldlYkdMRGVidWdTaGFkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMRGVidWdTaGFkZXJzOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlKToKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMRGVwdGhUZXh0dXJlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRGVwdGhUZXh0dXJl
OjpXZWJHTERlcHRoVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTERlcHRoVGV4dHVy
ZTo6c3VwcG9ydGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5o
OgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xEcmF3QnVmZmVyczo6V2ViR0xEcmF3QnVmZmVycyk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTERyYXdCdWZmZXJzOjpzdXBwb3J0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xEcmF3QnVmZmVyczo6ZHJhd0J1ZmZlcnNXRUJHTCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTERyYXdCdWZmZXJzOjpzYXRpc2ZpZXNXZWJHTFJlcXVpcmVtZW50cyk6CisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMRXh0ZW5zaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRXh0ZW5zaW9uOjpXZWJH
TEV4dGVuc2lvbik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMRXh0ZW5zaW9uOjpyZWYpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xFeHRlbnNpb246OmRlcmVmKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRXh0ZW5zaW9u
Ojpjb250ZXh0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjpXZWJHTEZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OmRyYXdCdWZmZXJzSWZOZWNlc3NhcnkpOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaDoKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTExvc2VDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTG9zZUNvbnRl
eHQ6OldlYkdMTG9zZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMb3NlQ29udGV4
dDo6bG9zZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMb3NlQ29udGV4dDo6cmVz
dG9yZUNvbnRleHQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMTG9zZUNvbnRleHQuaDoK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTE9iamVjdDo6V2ViR0xPYmplY3QpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
T2JqZWN0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUHJvZ3JhbTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUHJvZ3JhbTo6V2ViR0xQcm9ncmFtKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFBy
b2dyYW0uaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFF1ZXJ5LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUXVlcnk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFF1
ZXJ5OjpXZWJHTFF1ZXJ5KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFF1ZXJ5Lmg6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJidWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmJ1ZmZlcjo6V2ViR0xSZW5kZXJidWZmZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L1dlYkdMUmVuZGVyYnVmZmVyLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6
aW5pdGlhbGl6ZVZlcnRleEFycmF5T2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnMpOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnNldHVwRmxhZ3MpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y2hlY2tPYmplY3RUb0JlQm91bmQpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRlQnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZUZyYW1lYnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0
ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
Y3JlYXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpjcmVhdGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6Y3JlYXRlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmRlbGV0ZU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVdlYkdMT2JqZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmZyYW1lYnVm
ZmVyVGV4dHVyZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmdldFVuaWZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6cmVhZFBpeGVscyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpsb3NlQ29udGV4dEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6bWF5YmVSZXN0b3JlQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzdXBwb3J0c0RyYXdCdWZmZXJzKToKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9XZWJHTFNhbXBsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xT
YW1wbGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xTYW1wbGVyOjpXZWJHTFNh
bXBsZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMU2FtcGxlci5oOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMU2hh
ZGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xTaGFkZXI6OldlYkdMU2hhZGVy
KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFNoYWRlci5oOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL1dlYkdMU2hhcmVkT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMU2hh
cmVkT2JqZWN0OjpXZWJHTFNoYXJlZE9iamVjdCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xTaGFyZWRPYmplY3QuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFN5bmMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xTeW5jOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xTeW5jOjpXZWJHTFN5bmMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMU3luYy5o
OgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFRleHR1cmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFRleHR1
cmU6OldlYkdMVGV4dHVyZSk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmg6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFRyYW5zZm9ybUZlZWRiYWNrOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xUcmFuc2Zvcm1GZWVkYmFjazo6V2ViR0xUcmFuc2Zvcm1GZWVkYmFjayk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5oOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xWZXJ0ZXhBcnJheU9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMVmVydGV4QXJyYXlPYmplY3Q6OldlYkdMVmVydGV4QXJyYXlPYmplY3QpOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3QuaDoKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZTo6V2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJhc2Up
OgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlLmg6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6V2ViR0xWZXJ0ZXhBcnJheU9i
amVjdE9FUyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOjpk
ZWxldGVPYmplY3RJbXBsKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5
T2JqZWN0T0VTLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjb252ZXJ0Rm9ybWF0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OnJlYWRQaXhlbHNBbmRDb252ZXJ0VG9CR1JBSWZOZWNlc3Nhcnkp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnJlc2hhcGVGQk9zKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbnRlZ2Vydik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2YWxpZGF0ZURlcHRoU3Rl
bmNpbCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZHJhd0FycmF5c0lu
c3RhbmNlZCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZHJhd0VsZW1l
bnRzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0
ZXhBdHRyaWJEaXZpc29yKToKKwogMjAxNi0xMS0xNCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMgZG9lc24ndCBjb25z
dHJ1Y3QgYSBjdXN0b20gZWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuY3BwCmluZGV4IDQ1OTA1ZTYxMTFjYTc4NzQ1MzI4YTI2
ZDllODllZDMzMjQ3OWE2ZDkuLjE3ZTZkNmM4ZWI0ZGZkNzQ3NzI4MGU3NzJhOWE5MjkxMjgyYWQ3
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2Vk
QXJyYXlzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9BTkdMRUluc3RhbmNl
ZEFycmF5cy5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1B
TkdMRUluc3RhbmNlZEFycmF5czo6QU5HTEVJbnN0YW5jZWRBcnJheXMoV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSogY29udGV4dCkKK0FOR0xFSW5zdGFuY2VkQXJyYXlzOjpBTkdMRUluc3RhbmNl
ZEFycmF5cyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xF
eHRlbnNpb24oY29udGV4dCkKIHsKIH0KQEAgLTQ4LDE0ICs0OCwxNCBAQCBXZWJHTEV4dGVuc2lv
bjo6RXh0ZW5zaW9uTmFtZSBBTkdMRUluc3RhbmNlZEFycmF5czo6Z2V0TmFtZSgpIGNvbnN0CiAg
ICAgcmV0dXJuIEFOR0xFSW5zdGFuY2VkQXJyYXlzTmFtZTsKIH0KIAotYm9vbCBBTkdMRUluc3Rh
bmNlZEFycmF5czo6c3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRleHQp
Citib29sIEFOR0xFSW5zdGFuY2VkQXJyYXlzOjpzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSYgY29udGV4dCkKIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBVTlVTRURfUEFS
QU0oY29udGV4dCk7CiAgICAgcmV0dXJuIHRydWU7CiAjZWxpZiBQTEFURk9STShHVEspCi0gICAg
RXh0ZW5zaW9uczNEKiBleHRlbnNpb25zID0gY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+
Z2V0RXh0ZW5zaW9ucygpOwotICAgIHJldHVybiBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfQU5H
TEVfaW5zdGFuY2VkX2FycmF5cyIpOworICAgIEV4dGVuc2lvbnMzRCYgZXh0ZW5zaW9ucyA9IGNv
bnRleHQuZ3JhcGhpY3NDb250ZXh0M0QoKS0+Z2V0RXh0ZW5zaW9ucygpOworICAgIHJldHVybiBl
eHRlbnNpb25zLnN1cHBvcnRzKCJHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIik7CiAjZWxzZQog
ICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC02NCwyMyAr
NjQsMjMgQEAgYm9vbCBBTkdMRUluc3RhbmNlZEFycmF5czo6c3VwcG9ydGVkKFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UqIGNvbnRleHQpCiAKIHZvaWQgQU5HTEVJbnN0YW5jZWRBcnJheXM6OmRy
YXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQzNEZW51bSBtb2RlLCBHQzNEaW50IGZpcnN0LCBHQzNE
c2l6ZWkgY291bnQsIEdDM0RzaXplaSBwcmltY291bnQpCiB7Ci0gICAgaWYgKG1fY29udGV4dC0+
aXNDb250ZXh0TG9zdCgpKQorICAgIGlmIChtX2NvbnRleHQuaXNDb250ZXh0TG9zdCgpKQogICAg
ICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT5kcmF3QXJyYXlzSW5zdGFuY2VkKG1vZGUsIGZp
cnN0LCBjb3VudCwgcHJpbWNvdW50KTsKKyAgICBtX2NvbnRleHQuZHJhd0FycmF5c0luc3RhbmNl
ZChtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCk7CiB9CiAKIHZvaWQgQU5HTEVJbnN0YW5j
ZWRBcnJheXM6OmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDM0RlbnVtIG1vZGUsIEdDM0Rz
aXplaSBjb3VudCwgR0MzRGVudW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwgR0MzRHNpemVpIHBy
aW1jb3VudCkKIHsKLSAgICBpZiAobV9jb250ZXh0LT5pc0NvbnRleHRMb3N0KCkpCisgICAgaWYg
KG1fY29udGV4dC5pc0NvbnRleHRMb3N0KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRl
eHQtPmRyYXdFbGVtZW50c0luc3RhbmNlZChtb2RlLCBjb3VudCwgdHlwZSwgb2Zmc2V0LCBwcmlt
Y291bnQpOworICAgIG1fY29udGV4dC5kcmF3RWxlbWVudHNJbnN0YW5jZWQobW9kZSwgY291bnQs
IHR5cGUsIG9mZnNldCwgcHJpbWNvdW50KTsKIH0KIAogdm9pZCBBTkdMRUluc3RhbmNlZEFycmF5
czo6dmVydGV4QXR0cmliRGl2aXNvckFOR0xFKEdDM0R1aW50IGluZGV4LCBHQzNEdWludCBkaXZp
c29yKQogewotICAgIGlmIChtX2NvbnRleHQtPmlzQ29udGV4dExvc3QoKSkKKyAgICBpZiAobV9j
b250ZXh0LmlzQ29udGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+
dmVydGV4QXR0cmliRGl2aXNvcihpbmRleCwgZGl2aXNvcik7CisgICAgbV9jb250ZXh0LnZlcnRl
eEF0dHJpYkRpdmlzb3IoaW5kZXgsIGRpdmlzb3IpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9BTkdMRUluc3RhbmNl
ZEFycmF5cy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQU5HTEVJbnN0YW5jZWRBcnJh
eXMuaAppbmRleCA3NjVlY2ZlNjg5ZjVhZjNiZWIyYWE1MTU3NWYyYTc1NDA3NWI1YTg5Li5jZDE2
YzIzYmRiOWNmZGE0MTAxYmVhZDZlOTdkNDQ4MGMxMjM2MmJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9BTkdMRUluc3RhbmNlZEFycmF5cy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmgKQEAgLTMzLDEyICszMywx
MiBAQCBjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOwogCiBjbGFzcyBBTkdMRUluc3Rh
bmNlZEFycmF5cyBmaW5hbCA6IHB1YmxpYyBXZWJHTEV4dGVuc2lvbiB7CiBwdWJsaWM6Ci0gICAg
ZXhwbGljaXQgQU5HTEVJbnN0YW5jZWRBcnJheXMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSop
OworICAgIGV4cGxpY2l0IEFOR0xFSW5zdGFuY2VkQXJyYXlzKFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UmKTsKICAgICB2aXJ0dWFsIH5BTkdMRUluc3RhbmNlZEFycmF5cygpOwogCiAgICAgdmly
dHVhbCBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdDsKIAotICAgIHN0YXRpYyBib29sIHN1
cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAgc3RhdGljIGJvb2wgc3Vw
cG9ydGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKIAogICAgIHZvaWQgZHJhd0FycmF5
c0luc3RhbmNlZEFOR0xFKEdDM0RlbnVtIG1vZGUsIEdDM0RpbnQgZmlyc3QsIEdDM0RzaXplaSBj
b3VudCwgR0MzRHNpemVpIHByaW1jb3VudCk7CiAgICAgdm9pZCBkcmF3RWxlbWVudHNJbnN0YW5j
ZWRBTkdMRShHQzNEZW51bSBtb2RlLCBHQzNEc2l6ZWkgY291bnQsIEdDM0RlbnVtIHR5cGUsIGxv
bmcgbG9uZyBvZmZzZXQsIEdDM0RzaXplaSBwcmltY291bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQmxlbmRNaW5NYXguY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvRVhUQmxlbmRNaW5NYXguY3BwCmluZGV4IGY1ZWFkYTY2ZmE1MmI1ZDZkNDlj
Y2EzMGRhZDA4NGMzODgyYWVjMWEuLjc2MmE1ZDlmNjc1YTYyZjBkNzUxOTEzMmI4MDgxYjgwZWE1
MDhlNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVEJsZW5kTWlu
TWF4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRCbGVuZE1pbk1heC5j
cHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1FWFRCbGVuZE1p
bk1heDo6RVhUQmxlbmRNaW5NYXgoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29udGV4dCkK
K0VYVEJsZW5kTWluTWF4OjpFWFRCbGVuZE1pbk1heChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
JiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVEJsZW5kTWluTWF4LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9FWFRCbGVuZE1pbk1heC5oCmluZGV4IDllYWYyOWZkNjExM2Yx
OTcwZmRhZjk4YWE5MzAwNDU0Y2YzMWE0ZjguLjU5NTk2ODQ0ZWYzYWZmZjQxMzI0MjZjM2MwMWFm
ZGEwN2JkYmUxNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVEJs
ZW5kTWluTWF4LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQmxlbmRNaW5N
YXguaApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEVYVEJs
ZW5kTWluTWF4IGZpbmFsIDogcHVibGljIFdlYkdMRXh0ZW5zaW9uIHsKIHB1YmxpYzoKLSAgICBl
eHBsaWNpdCBFWFRCbGVuZE1pbk1heChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAg
ZXhwbGljaXQgRVhUQmxlbmRNaW5NYXgoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAg
IHZpcnR1YWwgfkVYVEJsZW5kTWluTWF4KCk7CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUo
KSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0VYVEZyYWdEZXB0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRGcmFnRGVw
dGguY3BwCmluZGV4IDg2NzA3MzZjY2MyYjhhNTY2MTQ2ZWU4NWY1OTE1ZDFiZmZlNDMwNDkuLjYy
NjMwOWM4M2JkMWM3NGQ1NzZkNTgwMjJiZTEzNDk2NjRiZWRhMWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVEZyYWdEZXB0aC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvRVhURnJhZ0RlcHRoLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLUVYVEZyYWdEZXB0aDo6RVhURnJhZ0RlcHRoKFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UqIGNvbnRleHQpCitFWFRGcmFnRGVwdGg6OkVYVEZyYWdEZXB0aChXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29u
dGV4dCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVEZy
YWdEZXB0aC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhURnJhZ0RlcHRoLmgKaW5k
ZXggOWNmNzBlYjE2YTMxOTU4NDgzYTBjOWI5YWM2ZDQxYWQ3YjVhZGJhNC4uNWU4YTRmOWMyZjNk
NjYxMzQyZTQ4YzZkNDk3NzA2OGRjMjBmMjllNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvRVhURnJhZ0RlcHRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvRVhURnJhZ0RlcHRoLmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBFWFRGcmFnRGVwdGggZmluYWwgOiBwdWJsaWMgV2ViR0xFeHRlbnNpb24gewogcHVi
bGljOgotICAgIGV4cGxpY2l0IEVYVEZyYWdEZXB0aChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Kik7CisgICAgZXhwbGljaXQgRVhURnJhZ0RlcHRoKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Um
KTsKICAgICB2aXJ0dWFsIH5FWFRGcmFnRGVwdGgoKTsKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0
TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvRVhUU2hhZGVyVGV4dHVyZUxPRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9FWFRTaGFkZXJUZXh0dXJlTE9ELmNwcAppbmRleCAwZGEzMjVkMDA4MDk2ZmZkY2U4NzEzNGUx
N2MyNjcwOGMzMzYyNDUyLi40NmU0MDZhNDM0OGVmZWQ4OTliMjA3MTAwMzc0M2ZkYzNmNzY2NDY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRTaGFkZXJUZXh0dXJl
TE9ELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRTaGFkZXJUZXh0dXJl
TE9ELmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUVYVFNo
YWRlclRleHR1cmVMT0Q6OkVYVFNoYWRlclRleHR1cmVMT0QoV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSogY29udGV4dCkKK0VYVFNoYWRlclRleHR1cmVMT0Q6OkVYVFNoYWRlclRleHR1cmVMT0Qo
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9u
KGNvbnRleHQpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9F
WFRTaGFkZXJUZXh0dXJlTE9ELmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRTaGFk
ZXJUZXh0dXJlTE9ELmgKaW5kZXggZTAwMTkyYTcxYWZhNTI4ZDJjYzA4ODJmYzEyOWQzYWFhMjU0
OWY2ZS4uNDdjMTkyZjIwNTk5N2FjZDMwMGVlMjZiZGVjMDk1M2VjZGZjMTQ1MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUU2hhZGVyVGV4dHVyZUxPRC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFNoYWRlclRleHR1cmVMT0QuaApAQCAtMzEs
NyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEVYVFNoYWRlclRleHR1cmVM
T0QgZmluYWwgOiBwdWJsaWMgV2ViR0xFeHRlbnNpb24gewogcHVibGljOgotICAgIGV4cGxpY2l0
IEVYVFNoYWRlclRleHR1cmVMT0QoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOworICAgIGV4
cGxpY2l0IEVYVFNoYWRlclRleHR1cmVMT0QoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwog
ICAgIHZpcnR1YWwgfkVYVFNoYWRlclRleHR1cmVMT0QoKTsKIAogICAgIEV4dGVuc2lvbk5hbWUg
Z2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0VYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5jcHAKaW5kZXggZGE3NGM0
YmUxMzg5NjNhMjk4NTZmM2Y1OTAwYTA1YTk4N2NhOTczZS4uMGJkM2RmYTJiZTc1NzQ5M2I1NDdl
N2YyNGM4ZDA3ZThlZjM2MWViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9FWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuY3BwCkBAIC0zMSw3ICszMSw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGlj
OjpFWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSog
Y29udGV4dCkKK0VYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYzo6RVhUVGV4dHVyZUZpbHRlckFu
aXNvdHJvcGljKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJH
TEV4dGVuc2lvbihjb250ZXh0KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9FWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuaAppbmRleCBkMWYyNGY2NTFl
NzRmYWEyYjEwZjQ0OTExY2JhY2M4NWQ0OTM4YzlmLi40MTk3ZDVmYmI0MDU0ZDg1NTVkZDA1NTkz
YWU1MWUxNzcwNDcwYmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9F
WFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9FWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuaApAQCAtMzEsNyArMzEsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYyBmaW5h
bCA6IHB1YmxpYyBXZWJHTEV4dGVuc2lvbiB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgRVhUVGV4
dHVyZUZpbHRlckFuaXNvdHJvcGljKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBl
eHBsaWNpdCBFWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMoV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSYpOwogICAgIHZpcnR1YWwgfkVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYygpOwogCiAg
ICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRzUkdCLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0VYVHNSR0IuY3BwCmluZGV4IDI0ZjUwODg4NjM1ZDRjMTY5NDhkMGY2YjM2ZTUx
YjcyMmI3ODNlZTUuLmU0ZWRmNTFjNzQ1YTBiODcwODU2MjAyMzgxOGQ5M2EzYzA2ZjVjOTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVHNSR0IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVHNSR0IuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRVhUc1JHQjo6RVhUc1JHQihXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlKiBjb250ZXh0KQorRVhUc1JHQjo6RVhUc1JHQihXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVHNSR0IuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0VYVHNSR0IuaAppbmRleCBjN2MwZGE0MTQ0NTlhNDc0ZjRjMWNj
MGY3NjAwYWQxYzMzZjUxMDhkLi40YTY5Y2JhNzU1MmM5NTJiNTk1YTZjMmNmMmY3MzllNTNlODkw
M2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRzUkdCLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUc1JHQi5oCkBAIC0zMSw3ICszMSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRVhUc1JHQiBmaW5hbCA6IHB1YmxpYyBXZWJH
TEV4dGVuc2lvbiB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgRVhUc1JHQihXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlKik7CisgICAgZXhwbGljaXQgRVhUc1JHQihXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlJik7CiAgICAgdmlydHVhbCB+RVhUc1JHQigpOwogCiAgICAgRXh0ZW5zaW9uTmFtZSBn
ZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9PRVNFbGVtZW50SW5kZXhVaW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL09FU0VsZW1lbnRJbmRleFVpbnQuY3BwCmluZGV4IDY1YjY4MzhkZWI3ODk1MjQxNTQzMWMx
MjRlNDgyZDNiNjE3YjU1ZGUuLjEwMWM1ZjEwZDc1MDBmN2JmMmY5OTExYzM2NjNhMTAwMjQ1NDQ1
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU0VsZW1lbnRJbmRl
eFVpbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU0VsZW1lbnRJbmRl
eFVpbnQuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotT0VT
RWxlbWVudEluZGV4VWludDo6T0VTRWxlbWVudEluZGV4VWludChXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlKiBjb250ZXh0KQorT0VTRWxlbWVudEluZGV4VWludDo6T0VTRWxlbWVudEluZGV4VWlu
dChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNp
b24oY29udGV4dCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L09FU0VsZW1lbnRJbmRleFVpbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU0Vs
ZW1lbnRJbmRleFVpbnQuaAppbmRleCA3OTYwZGE0OGZiNGJhNTYzZTZlYmYxZmUwNDYwZDE5MDc4
MmFhOTZhLi40NjAzMjFkNDQ4YTE4YmE3M2NiMTk1NWMzMjQ3ZTQ1MWUxYzExZjU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNFbGVtZW50SW5kZXhVaW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTRWxlbWVudEluZGV4VWludC5oCkBAIC0z
MSw3ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgT0VTRWxlbWVudEluZGV4
VWludCBmaW5hbCA6IHB1YmxpYyBXZWJHTEV4dGVuc2lvbiB7CiBwdWJsaWM6Ci0gICAgZXhwbGlj
aXQgT0VTRWxlbWVudEluZGV4VWludChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAg
ZXhwbGljaXQgT0VTRWxlbWVudEluZGV4VWludChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7
CiAgICAgdmlydHVhbCB+T0VTRWxlbWVudEluZGV4VWludCgpOwogCiAgICAgRXh0ZW5zaW9uTmFt
ZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9PRVNTdGFuZGFyZERlcml2YXRpdmVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuY3BwCmluZGV4IGU3NTRhY2Y3M2M5ODg2
ZjdjOWJjN2NmY2ZhMjZjOTYwYjdiNTJjOWEuLmRjYmI4MTllMzQ4ZTQ0NzhmNmVlNDVmZjEwNzQ5
MDIzYzQwM2RkZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1N0
YW5kYXJkRGVyaXZhdGl2ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09F
U1N0YW5kYXJkRGVyaXZhdGl2ZXMuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotT0VTU3RhbmRhcmREZXJpdmF0aXZlczo6T0VTU3RhbmRhcmREZXJpdmF0aXZl
cyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjb250ZXh0KQorT0VTU3RhbmRhcmREZXJpdmF0
aXZlczo6T0VTU3RhbmRhcmREZXJpdmF0aXZlcyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBj
b250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuaAppbmRleCAz
YTI5NjlkZjU3ZTIwMGY1MTI0Y2RlMzM1MGY2ZTQ0YTU3NzIxZTM1Li5jY2ZjODg0MDY4N2MzYjE2
NzViZGExZTJkMTFhZjk3ZDI4ZjIzOTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9PRVNTdGFuZGFyZERlcml2YXRpdmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5oCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgT0VTU3RhbmRhcmREZXJpdmF0aXZlcyBmaW5hbCA6IHB1
YmxpYyBXZWJHTEV4dGVuc2lvbiB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgT0VTU3RhbmRhcmRE
ZXJpdmF0aXZlcyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAgZXhwbGljaXQgT0VT
U3RhbmRhcmREZXJpdmF0aXZlcyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAgdmly
dHVhbCB+T0VTU3RhbmRhcmREZXJpdmF0aXZlcygpOwogCiAgICAgRXh0ZW5zaW9uTmFtZSBnZXRO
YW1lKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9PRVNUZXh0dXJlRmxvYXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VT
VGV4dHVyZUZsb2F0LmNwcAppbmRleCBiOGZmZWM3ZDNjZTk3ODVhNDA1MmVkMGEzOTAxNDFjYmRm
NzM1ZTkxLi42MGQyZjdiNTBiOGJhMDJjNDE2NzkzZTJiOWMzODk5OGQxYTVlOGNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5jcHAKQEAgLTMxLDcg
KzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1PRVNUZXh0dXJlRmxvYXQ6Ok9FU1Rl
eHR1cmVGbG9hdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjb250ZXh0KQorT0VTVGV4dHVy
ZUZsb2F0OjpPRVNUZXh0dXJlRmxvYXQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4
dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5oCmluZGV4IGFiYTc5ZDMxYjIyYTQ5ZjgzZTk1
Mzg0ZmMwOTY5ZGI4NjllZmYzNWEuLmU3YzA3MTVkZDcwZDc2YjkxOGY1YTIyYWM2MTNiNWQ0ZWE1
ZjM0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVG
bG9hdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5o
CkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgT0VTVGV4dHVy
ZUZsb2F0IGZpbmFsIDogcHVibGljIFdlYkdMRXh0ZW5zaW9uIHsKIHB1YmxpYzoKLSAgICBPRVNU
ZXh0dXJlRmxvYXQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOworICAgIE9FU1RleHR1cmVG
bG9hdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVhbCB+T0VTVGV4dHVy
ZUZsb2F0KCk7CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdExp
bmVhci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXRMaW5l
YXIuY3BwCmluZGV4IDJhMTBhNTBhZGVmYTA1YWRjYjU0MmNjYzRhOGM4ZmYyOTMwYjQwZWUuLmZj
ZTkxNzkwODRkZDMyYjAxNWNjNzA5MWVmOTE3NTA0MzZlODNiY2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdExpbmVhci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0TGluZWFyLmNwcApAQCAtMzAs
NyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU9FU1RleHR1cmVGbG9hdExpbmVh
cjo6T0VTVGV4dHVyZUZsb2F0TGluZWFyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRl
eHQpCitPRVNUZXh0dXJlRmxvYXRMaW5lYXI6Ok9FU1RleHR1cmVGbG9hdExpbmVhcihXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4
dCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1
cmVGbG9hdExpbmVhci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZs
b2F0TGluZWFyLmgKaW5kZXggNTdkYmFkZDZjODA4ODRhOTY2M2U5MWExOTA0MTJhMTQyNWE5ZGRi
MS4uOTNkZDEzNDYwY2QzYWMwNWNlNTFjNzNhNTA1ZDNjODRjNmEzZjNkZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0TGluZWFyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0TGluZWFyLmgKQEAgLTMx
LDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBPRVNUZXh0dXJlRmxvYXRM
aW5lYXIgZmluYWwgOiBwdWJsaWMgV2ViR0xFeHRlbnNpb24gewogcHVibGljOgotICAgIGV4cGxp
Y2l0IE9FU1RleHR1cmVGbG9hdExpbmVhcihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7Cisg
ICAgZXhwbGljaXQgT0VTVGV4dHVyZUZsb2F0TGluZWFyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UmKTsKICAgICB2aXJ0dWFsIH5PRVNUZXh0dXJlRmxvYXRMaW5lYXIoKTsKIAogICAgIEV4dGVu
c2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0LmNwcAppbmRleCBiZGQxNjdjMDMyN2Ez
Zjg1YWM3NGFjYzc4NjhhMDIzZTJjOGZkNDA3Li5mMWY3NDk2ZGQyZGNlMGVmMTI3MGEzNGE0MDE5
NTU4YmM2YzIxOTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNU
ZXh0dXJlSGFsZkZsb2F0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNU
ZXh0dXJlSGFsZkZsb2F0LmNwcApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLU9FU1RleHR1cmVIYWxmRmxvYXQ6Ok9FU1RleHR1cmVIYWxmRmxvYXQoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSogY29udGV4dCkKK09FU1RleHR1cmVIYWxmRmxvYXQ6Ok9FU1RleHR1
cmVIYWxmRmxvYXQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdl
YkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0LmgKaW5kZXggNzI1ZWM2NjU0NGQwMWFiYTk4OWI2ZDFl
MmEwMDcxODExNWNkZDkyYS4uYjNmNjc2ZGQ3M2FhNTUwMGYxODc1ZjcyMGYwYzdhMTFhYzAwMjQ5
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZG
bG9hdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxv
YXQuaApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE9FU1Rl
eHR1cmVIYWxmRmxvYXQgZmluYWwgOiBwdWJsaWMgV2ViR0xFeHRlbnNpb24gewogcHVibGljOgot
ICAgIE9FU1RleHR1cmVIYWxmRmxvYXQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOworICAg
IE9FU1RleHR1cmVIYWxmRmxvYXQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAgIHZp
cnR1YWwgfk9FU1RleHR1cmVIYWxmRmxvYXQoKTsKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFt
ZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLmNwcAppbmRleCA0MjExYzgwNjI3MzMzYmJi
ZTQxYmE5NTVkZjQwYzlhNTM1NTEyZGI0Li4zNTllMzAwMTZlMzk2Yjk1NjU2ODkwMDMxNjA5Mjg4
YmE3NjcyMWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0
dXJlSGFsZkZsb2F0TGluZWFyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9P
RVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLU9FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXI6Ok9FU1RleHR1cmVIYWxm
RmxvYXRMaW5lYXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29udGV4dCkKK09FU1RleHR1
cmVIYWxmRmxvYXRMaW5lYXI6Ok9FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXIoV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFs
ZkZsb2F0TGluZWFyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFs
ZkZsb2F0TGluZWFyLmgKaW5kZXggZWRjNTI5YTlmYTY2MzE3ZTQ4NjRhZWYwNzViNDc4NTdiN2Vl
YTllZi4uNDgxMGExMTJiYTllOTJhNWZjZWY0MDgzMjYyZTlhZGViYWZhYzcyOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXRMaW5l
YXIuaApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE9FU1Rl
eHR1cmVIYWxmRmxvYXRMaW5lYXIgZmluYWwgOiBwdWJsaWMgV2ViR0xFeHRlbnNpb24gewogcHVi
bGljOgotICAgIE9FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSopOworICAgIE9FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXIoV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwgfk9FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXIoKTsKIAog
ICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuY3BwCmluZGV4IDRl
MDYxNjZkMWQ3MmE1OWVmYzEzNjcyYWM3YzY2ZjI4ZDU3NmVhYzguLmM4YjEwZjdiZmJjNjgxZDhh
YTg1OTU5YTNmMWUyN2Q2Mzc4ZTY5YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogT0VTVmVydGV4QXJyYXlPYmplY3Q6Ok9FU1ZlcnRleEFycmF5T2Jq
ZWN0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCi0gICAgOiBXZWJHTEV4dGVu
c2lvbigmY29udGV4dCkKKyAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7CiB9CiAKQEAg
LTQ2LDQzICs0Niw0MyBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBPRVNWZXJ0ZXhB
cnJheU9iamVjdDo6Z2V0TmFtZSgpIGNvbnN0CiAKIFJlZlB0cjxXZWJHTFZlcnRleEFycmF5T2Jq
ZWN0T0VTPiBPRVNWZXJ0ZXhBcnJheU9iamVjdDo6Y3JlYXRlVmVydGV4QXJyYXlPRVMoKQogewot
ICAgIGlmIChtX2NvbnRleHQtPmlzQ29udGV4dExvc3QoKSkKKyAgICBpZiAobV9jb250ZXh0Lmlz
Q29udGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBhdXRvIG9iamVj
dCA9IFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OmNyZWF0ZShtX2NvbnRleHQsIFdlYkdMVmVy
dGV4QXJyYXlPYmplY3RPRVM6OlZBT1R5cGVVc2VyKTsKLSAgICBtX2NvbnRleHQtPmFkZENvbnRl
eHRPYmplY3Qob2JqZWN0LnB0cigpKTsKKyAgICBtX2NvbnRleHQuYWRkQ29udGV4dE9iamVjdChv
YmplY3QucHRyKCkpOwogICAgIHJldHVybiBXVEZNb3ZlKG9iamVjdCk7CiB9CiAKIHZvaWQgT0VT
VmVydGV4QXJyYXlPYmplY3Q6OmRlbGV0ZVZlcnRleEFycmF5T0VTKFdlYkdMVmVydGV4QXJyYXlP
YmplY3RPRVMqIGFycmF5T2JqZWN0KQogewotICAgIGlmICghYXJyYXlPYmplY3QgfHwgbV9jb250
ZXh0LT5pc0NvbnRleHRMb3N0KCkpCisgICAgaWYgKCFhcnJheU9iamVjdCB8fCBtX2NvbnRleHQu
aXNDb250ZXh0TG9zdCgpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgaWYgKCFhcnJheU9i
amVjdC0+aXNEZWZhdWx0T2JqZWN0KCkgJiYgYXJyYXlPYmplY3QgPT0gc3RhdGljX2Nhc3Q8V2Vi
R0xSZW5kZXJpbmdDb250ZXh0Kj4obV9jb250ZXh0KS0+bV9ib3VuZFZlcnRleEFycmF5T2JqZWN0
KQotICAgICAgICBzdGF0aWNfY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHQqPihtX2NvbnRleHQp
LT5zZXRCb3VuZFZlcnRleEFycmF5T2JqZWN0KDApOworICAgIGlmICghYXJyYXlPYmplY3QtPmlz
RGVmYXVsdE9iamVjdCgpICYmIGFycmF5T2JqZWN0ID09IHN0YXRpY19jYXN0PFdlYkdMUmVuZGVy
aW5nQ29udGV4dCo+KCZtX2NvbnRleHQpLT5tX2JvdW5kVmVydGV4QXJyYXlPYmplY3QpCisgICAg
ICAgIHN0YXRpY19jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dCo+KCZtX2NvbnRleHQpLT5zZXRC
b3VuZFZlcnRleEFycmF5T2JqZWN0KDApOwogCi0gICAgYXJyYXlPYmplY3QtPmRlbGV0ZU9iamVj
dChtX2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dDNEKCkpOworICAgIGFycmF5T2JqZWN0LT5kZWxl
dGVPYmplY3QobV9jb250ZXh0LmdyYXBoaWNzQ29udGV4dDNEKCkpOwogfQogCiBHQzNEYm9vbGVh
biBPRVNWZXJ0ZXhBcnJheU9iamVjdDo6aXNWZXJ0ZXhBcnJheU9FUyhXZWJHTFZlcnRleEFycmF5
T2JqZWN0T0VTKiBhcnJheU9iamVjdCkKIHsKLSAgICByZXR1cm4gYXJyYXlPYmplY3QgJiYgIW1f
Y29udGV4dC0+aXNDb250ZXh0TG9zdCgpICYmIGFycmF5T2JqZWN0LT5oYXNFdmVyQmVlbkJvdW5k
KCkKLSAgICAgICAgJiYgbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNp
b25zKCktPmlzVmVydGV4QXJyYXlPRVMoYXJyYXlPYmplY3QtPm9iamVjdCgpKTsKKyAgICByZXR1
cm4gYXJyYXlPYmplY3QgJiYgIW1fY29udGV4dC5pc0NvbnRleHRMb3N0KCkgJiYgYXJyYXlPYmpl
Y3QtPmhhc0V2ZXJCZWVuQm91bmQoKQorICAgICAgICAmJiBtX2NvbnRleHQuZ3JhcGhpY3NDb250
ZXh0M0QoKS0+Z2V0RXh0ZW5zaW9ucygpLmlzVmVydGV4QXJyYXlPRVMoYXJyYXlPYmplY3QtPm9i
amVjdCgpKTsKIH0KIAogdm9pZCBPRVNWZXJ0ZXhBcnJheU9iamVjdDo6YmluZFZlcnRleEFycmF5
T0VTKFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMqIGFycmF5T2JqZWN0KQogewotICAgIGlmICht
X2NvbnRleHQtPmlzQ29udGV4dExvc3QoKSkKKyAgICBpZiAobV9jb250ZXh0LmlzQ29udGV4dExv
c3QoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGFycmF5T2JqZWN0ICYmIChhcnJheU9i
amVjdC0+aXNEZWxldGVkKCkgfHwgIWFycmF5T2JqZWN0LT52YWxpZGF0ZSgwLCBjb250ZXh0KCkp
KSkgewotICAgICAgICBtX2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dDNEKCktPnN5bnRoZXNpemVH
TEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CisgICAgaWYgKGFy
cmF5T2JqZWN0ICYmIChhcnJheU9iamVjdC0+aXNEZWxldGVkKCkgfHwgIWFycmF5T2JqZWN0LT52
YWxpZGF0ZShudWxscHRyLCBjb250ZXh0KCkpKSkgeworICAgICAgICBtX2NvbnRleHQuZ3JhcGhp
Y3NDb250ZXh0M0QoKS0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFM
SURfT1BFUkFUSU9OKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8mIGV4dGVu
c2lvbnMgPSAqbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCk7
Ci0gICAgYXV0byYgY29udGV4dCA9IGRvd25jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dD4oKm1f
Y29udGV4dCk7CisgICAgYXV0byYgZXh0ZW5zaW9ucyA9IG1fY29udGV4dC5ncmFwaGljc0NvbnRl
eHQzRCgpLT5nZXRFeHRlbnNpb25zKCk7CisgICAgYXV0byYgY29udGV4dCA9IGRvd25jYXN0PFdl
YkdMUmVuZGVyaW5nQ29udGV4dD4obV9jb250ZXh0KTsKICAgICBpZiAoYXJyYXlPYmplY3QgJiYg
IWFycmF5T2JqZWN0LT5pc0RlZmF1bHRPYmplY3QoKSAmJiBhcnJheU9iamVjdC0+b2JqZWN0KCkp
IHsKICAgICAgICAgZXh0ZW5zaW9ucy5iaW5kVmVydGV4QXJyYXlPRVMoYXJyYXlPYmplY3QtPm9i
amVjdCgpKTsKICAgICAgICAgYXJyYXlPYmplY3QtPnNldEhhc0V2ZXJCZWVuQm91bmQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4
dC5jcHAKaW5kZXggYzU0ZjYxNDVjZmIwZDVhMzYxMTlmZWM4NmE4MTcyNTQ5MWJjZGFhZC4uYmZi
ZTI3MTZkY2U5MzY4YTk1Mjc3OGNiMzdmOTc0NDcyYTRiMjAxZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTcz
LDcgKzczLDcgQEAgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6V2ViR0wyUmVuZGVyaW5nQ29udGV4
dChIVE1MQ2FudmFzRWxlbWVudCYgcGFzc2VkQ2FudmFzLAogCiB2b2lkIFdlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OmluaXRpYWxpemVWZXJ0ZXhBcnJheU9iamVjdHMoKQogewotICAgIG1fZGVmYXVs
dFZlcnRleEFycmF5T2JqZWN0ID0gV2ViR0xWZXJ0ZXhBcnJheU9iamVjdDo6Y3JlYXRlKHRoaXMs
IFdlYkdMVmVydGV4QXJyYXlPYmplY3Q6OlZBT1R5cGVEZWZhdWx0KTsKKyAgICBtX2RlZmF1bHRW
ZXJ0ZXhBcnJheU9iamVjdCA9IFdlYkdMVmVydGV4QXJyYXlPYmplY3Q6OmNyZWF0ZSgqdGhpcywg
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdDo6VkFPVHlwZURlZmF1bHQpOwogICAgIGFkZENvbnRleHRP
YmplY3QobV9kZWZhdWx0VmVydGV4QXJyYXlPYmplY3QuZ2V0KCkpOwogICAgIG1fYm91bmRWZXJ0
ZXhBcnJheU9iamVjdCA9IG1fZGVmYXVsdFZlcnRleEFycmF5T2JqZWN0OwogICAgIGlmICghaXNH
TEVTMkNvbXBsaWFudCgpKQpAQCAtODIsMTAgKzgyLDEwIEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6aW5pdGlhbGl6ZVZlcnRleEFycmF5T2JqZWN0cygpCiAKIHZvaWQgV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6aW5pdGlhbGl6ZVNoYWRlckV4dGVuc2lvbnMoKQogewotICAgIG1fY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKCJHTF9PRVNfc3RhbmRhcmRfZGVy
aXZhdGl2ZXMiKTsKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxl
ZCgiR0xfRVhUX2RyYXdfYnVmZmVycyIpOwotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LT5lbnN1cmVFbmFibGVkKCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIik7Ci0gICAgbV9jb250
ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9mcmFnX2RlcHRoIik7
CisgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3N0
YW5kYXJkX2Rlcml2YXRpdmVzIik7CisgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5z
dXJlRW5hYmxlZCgiR0xfRVhUX2RyYXdfYnVmZmVycyIpOworICAgIG1fY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKTsKKyAg
ICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9FWFRfZnJhZ19k
ZXB0aCIpOwogfQogCiBpbmxpbmUgc3RhdGljIE9wdGlvbmFsPHVuc2lnbmVkPiBhcnJheUJ1ZmZl
clZpZXdFbGVtZW50U2l6ZShjb25zdCBBcnJheUJ1ZmZlclZpZXcmIGRhdGEpCkBAIC00OTQsNyAr
NDk0LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkcmF3QnVmZmVycyhWZWN0b3I8
R0MzRGVudW0+IGJ1ZmZlcnMpCiAgICAgICAgIH0KICAgICAgICAgLy8gQmVjYXVzZSB0aGUgYmFj
a2J1ZmZlciBpcyBzaW11bGF0ZWQgb24gYWxsIGN1cnJlbnQgV2ViS2l0IHBvcnRzLCB3ZSBuZWVk
IHRvIGNoYW5nZSBCQUNLIHRvIENPTE9SX0FUVEFDSE1FTlQwLgogICAgICAgICBHQzNEZW51bSB2
YWx1ZSA9IChidWZzWzBdID09IEdyYXBoaWNzQ29udGV4dDNEOjpCQUNLKSA/IEdyYXBoaWNzQ29u
dGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCA6IEdyYXBoaWNzQ29udGV4dDNEOjpOT05FOwotICAg
ICAgICBncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCktPmRyYXdCdWZmZXJzRVhU
KDEsICZ2YWx1ZSk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dDNEKCktPmdldEV4dGVuc2lvbnMo
KS5kcmF3QnVmZmVyc0VYVCgxLCAmdmFsdWUpOwogICAgICAgICBzZXRCYWNrRHJhd0J1ZmZlcihi
dWZzWzBdKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAobiA+IGdldE1heERyYXdCdWZmZXJz
KCkpIHsKQEAgLTc5NCw3ICs3OTQsNyBAQCBSZWZQdHI8V2ViR0xWZXJ0ZXhBcnJheU9iamVjdD4g
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlVmVydGV4QXJyYXkoKQogICAgIGlmIChpc0Nv
bnRleHRMb3N0KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAotICAgIGF1dG8gb2Jq
ZWN0ID0gV2ViR0xWZXJ0ZXhBcnJheU9iamVjdDo6Y3JlYXRlKHRoaXMsIFdlYkdMVmVydGV4QXJy
YXlPYmplY3Q6OlZBT1R5cGVVc2VyKTsKKyAgICBhdXRvIG9iamVjdCA9IFdlYkdMVmVydGV4QXJy
YXlPYmplY3Q6OmNyZWF0ZSgqdGhpcywgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdDo6VkFPVHlwZVVz
ZXIpOwogICAgIGFkZENvbnRleHRPYmplY3Qob2JqZWN0LnB0cigpKTsKICAgICByZXR1cm4gV1RG
TW92ZShvYmplY3QpOwogfQpAQCAtODE4LDcgKzgxOCw3IEBAIEdDM0Rib29sZWFuIFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmlzVmVydGV4QXJyYXkoV2ViR0xWZXJ0ZXhBcnJheU9iamVjdCogYXJy
YXlPCiAgICAgaWYgKCFhcnJheU9iamVjdCB8fCBpc0NvbnRleHRMb3N0KCkpCiAgICAgICAgIHJl
dHVybiAwOwogICAgIAotICAgIGlmICghYXJyYXlPYmplY3QtPmhhc0V2ZXJCZWVuQm91bmQoKSB8
fCAhYXJyYXlPYmplY3QtPnZhbGlkYXRlKDAsIHRoaXMpKQorICAgIGlmICghYXJyYXlPYmplY3Qt
Pmhhc0V2ZXJCZWVuQm91bmQoKSB8fCAhYXJyYXlPYmplY3QtPnZhbGlkYXRlKDAsICp0aGlzKSkK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgCiAgICAgcmV0dXJuIG1fY29udGV4dC0+aXNWZXJ0ZXhB
cnJheShhcnJheU9iamVjdC0+b2JqZWN0KCkpOwpAQCAtODI5LDcgKzgyOSw3IEBAIHZvaWQgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZFZlcnRleEFycmF5KFdlYkdMVmVydGV4QXJyYXlPYmpl
Y3QqIGFycmF5T2JqZWN0CiAgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJu
OwogICAgIAotICAgIGlmIChhcnJheU9iamVjdCAmJiAoYXJyYXlPYmplY3QtPmlzRGVsZXRlZCgp
IHx8ICFhcnJheU9iamVjdC0+dmFsaWRhdGUoMCwgdGhpcykgfHwgIW1fY29udGV4dE9iamVjdHMu
Y29udGFpbnMoYXJyYXlPYmplY3QpKSkgeworICAgIGlmIChhcnJheU9iamVjdCAmJiAoYXJyYXlP
YmplY3QtPmlzRGVsZXRlZCgpIHx8ICFhcnJheU9iamVjdC0+dmFsaWRhdGUoMCwgKnRoaXMpIHx8
ICFtX2NvbnRleHRPYmplY3RzLmNvbnRhaW5zKGFycmF5T2JqZWN0KSkpIHsKICAgICAgICAgbV9j
b250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVS
QVRJT04pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtODUwLDg1ICs4NTAsODUgQEAgV2Vi
R0xFeHRlbnNpb24qIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBT
dHJpbmcmIG5hbWUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKChlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKG5hbWUsICJFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKSB8
fCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJXRUJLSVRfRVhUX3RleHR1cmVfZmlsdGVy
X2FuaXNvdHJvcGljIikpCi0gICAgICAgICYmIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5z
dXBwb3J0cygiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIikpIHsKKyAgICAgICAg
JiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2Zp
bHRlcl9hbmlzb3Ryb3BpYyIpKSB7CiAgICAgICAgIGlmICghbV9leHRUZXh0dXJlRmlsdGVyQW5p
c290cm9waWMpIHsKLSAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1
cmVFbmFibGVkKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKTsKLSAgICAgICAg
ICAgIG1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljID0gc3RkOjptYWtlX3VuaXF1ZTxFWFRU
ZXh0dXJlRmlsdGVyQW5pc290cm9waWM+KHRoaXMpOworICAgICAgICAgICAgbV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNv
dHJvcGljIik7CisgICAgICAgICAgICBtX2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYyA9IHN0
ZDo6bWFrZV91bmlxdWU8RVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljPigqdGhpcyk7CiAgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuIG1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmdldCgp
OwogICAgIH0KICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiT0VTX3RleHR1
cmVfZmxvYXQiKQotICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9y
dHMoIkdMX09FU190ZXh0dXJlX2Zsb2F0IikpIHsKKyAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2Zsb2F0IikpIHsKICAgICAgICAg
aWYgKCFtX29lc1RleHR1cmVGbG9hdCkgewotICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX09FU190ZXh0dXJlX2Zsb2F0Iik7Ci0gICAgICAg
ICAgICBtX29lc1RleHR1cmVGbG9hdCA9IHN0ZDo6bWFrZV91bmlxdWU8T0VTVGV4dHVyZUZsb2F0
Pih0aGlzKTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVu
YWJsZWQoIkdMX09FU190ZXh0dXJlX2Zsb2F0Iik7CisgICAgICAgICAgICBtX29lc1RleHR1cmVG
bG9hdCA9IHN0ZDo6bWFrZV91bmlxdWU8T0VTVGV4dHVyZUZsb2F0PigqdGhpcyk7CiAgICAgICAg
IH0KICAgICAgICAgcmV0dXJuIG1fb2VzVGV4dHVyZUZsb2F0LmdldCgpOwogICAgIH0KICAgICBp
ZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiT0VTX3RleHR1cmVfZmxvYXRfbGluZWFy
IikKLSAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9P
RVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiKSkgeworICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIikpIHsKICAg
ICAgICAgaWYgKCFtX29lc1RleHR1cmVGbG9hdExpbmVhcikgewotICAgICAgICAgICAgbV9jb250
ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX09FU190ZXh0dXJlX2Zsb2F0
X2xpbmVhciIpOwotICAgICAgICAgICAgbV9vZXNUZXh0dXJlRmxvYXRMaW5lYXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPE9FU1RleHR1cmVGbG9hdExpbmVhcj4odGhpcyk7CisgICAgICAgICAgICBtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9PRVNfdGV4dHVyZV9mbG9h
dF9saW5lYXIiKTsKKyAgICAgICAgICAgIG1fb2VzVGV4dHVyZUZsb2F0TGluZWFyID0gc3RkOjpt
YWtlX3VuaXF1ZTxPRVNUZXh0dXJlRmxvYXRMaW5lYXI+KCp0aGlzKTsKICAgICAgICAgfQogICAg
ICAgICByZXR1cm4gbV9vZXNUZXh0dXJlRmxvYXRMaW5lYXIuZ2V0KCk7CiAgICAgfQogICAgIGlm
IChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IikK
LSAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNf
dGV4dHVyZV9oYWxmX2Zsb2F0IikpIHsKKyAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNp
b25zKCkuc3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQiKSkgewogICAgICAgICBp
ZiAoIW1fb2VzVGV4dHVyZUhhbGZGbG9hdCkgewotICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRF
eHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQiKTsK
LSAgICAgICAgICAgIG1fb2VzVGV4dHVyZUhhbGZGbG9hdCA9IHN0ZDo6bWFrZV91bmlxdWU8T0VT
VGV4dHVyZUhhbGZGbG9hdD4odGhpcyk7CisgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0Iik7CisgICAg
ICAgICAgICBtX29lc1RleHR1cmVIYWxmRmxvYXQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9FU1RleHR1
cmVIYWxmRmxvYXQ+KCp0aGlzKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbV9vZXNUZXh0
dXJlSGFsZkZsb2F0LmdldCgpOwogICAgIH0KICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2Fz
ZShuYW1lLCAiT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKQotICAgICAgICAmJiBtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxv
YXRfbGluZWFyIikpIHsKKyAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3Vw
cG9ydHMoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIikpIHsKICAgICAgICAgaWYg
KCFtX29lc1RleHR1cmVIYWxmRmxvYXRMaW5lYXIpIHsKLSAgICAgICAgICAgIG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0
X2xpbmVhciIpOwotICAgICAgICAgICAgbV9vZXNUZXh0dXJlSGFsZkZsb2F0TGluZWFyID0gc3Rk
OjptYWtlX3VuaXF1ZTxPRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyPih0aGlzKTsKKyAgICAgICAg
ICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX09FU190ZXh0
dXJlX2hhbGZfZmxvYXRfbGluZWFyIik7CisgICAgICAgICAgICBtX29lc1RleHR1cmVIYWxmRmxv
YXRMaW5lYXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXI+KCp0
aGlzKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbV9vZXNUZXh0dXJlSGFsZkZsb2F0TGlu
ZWFyLmdldCgpOwogICAgIH0KICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAi
V0VCR0xfbG9zZV9jb250ZXh0IikpIHsKICAgICAgICAgaWYgKCFtX3dlYmdsTG9zZUNvbnRleHQp
Ci0gICAgICAgICAgICBtX3dlYmdsTG9zZUNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdM
TG9zZUNvbnRleHQ+KHRoaXMpOworICAgICAgICAgICAgbV93ZWJnbExvc2VDb250ZXh0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxXZWJHTExvc2VDb250ZXh0PigqdGhpcyk7CiAgICAgICAgIHJldHVybiBt
X3dlYmdsTG9zZUNvbnRleHQuZ2V0KCk7CiAgICAgfQogICAgIGlmICgoZXF1YWxJZ25vcmluZ0FT
Q0lJQ2FzZShuYW1lLCAiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9hdGMiKSkKLSAg
ICAgICAgJiYgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6c3VwcG9ydGVkKHRoaXMpKSB7Cisg
ICAgICAgICYmIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OnN1cHBvcnRlZCgqdGhpcykpIHsK
ICAgICAgICAgaWYgKCFtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBVEMpCi0gICAgICAgICAgICBt
X3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBVEMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVBVEM+KHRoaXMpOworICAgICAgICAgICAgbV93ZWJnbENvbXByZXNzZWRUZXh0
dXJlQVRDID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDPigqdGhp
cyk7CiAgICAgICAgIHJldHVybiBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBVEMuZ2V0KCk7CiAg
ICAgfQogICAgIGlmICgoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiV0VCS0lUX1dFQkdM
X2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIpKQotICAgICAgICAmJiBXZWJHTENvbXByZXNzZWRU
ZXh0dXJlUFZSVEM6OnN1cHBvcnRlZCh0aGlzKSkgeworICAgICAgICAmJiBXZWJHTENvbXByZXNz
ZWRUZXh0dXJlUFZSVEM6OnN1cHBvcnRlZCgqdGhpcykpIHsKICAgICAgICAgaWYgKCFtX3dlYmds
Q29tcHJlc3NlZFRleHR1cmVQVlJUQykKLSAgICAgICAgICAgIG1fd2ViZ2xDb21wcmVzc2VkVGV4
dHVyZVBWUlRDID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM+
KHRoaXMpOworICAgICAgICAgICAgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUFZSVEMgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQz4oKnRoaXMpOwogICAgICAg
ICByZXR1cm4gbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUFZSVEMuZ2V0KCk7CiAgICAgfQogICAg
IGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1
cmVfczN0YyIpCi0gICAgICAgICYmIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0
ZWQodGhpcykpIHsKKyAgICAgICAgJiYgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBv
cnRlZCgqdGhpcykpIHsKICAgICAgICAgaWYgKCFtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVTM1RD
KQotICAgICAgICAgICAgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUzNUQyA9IHN0ZDo6bWFrZV91
bmlxdWU8V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM+KHRoaXMpOworICAgICAgICAgICAgbV93
ZWJnbENvbXByZXNzZWRUZXh0dXJlUzNUQyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xDb21wcmVz
c2VkVGV4dHVyZVMzVEM+KCp0aGlzKTsKICAgICAgICAgcmV0dXJuIG1fd2ViZ2xDb21wcmVzc2Vk
VGV4dHVyZVMzVEMuZ2V0KCk7CiAgICAgfQogICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNl
KG5hbWUsICJXRUJHTF9kZXB0aF90ZXh0dXJlIikKLSAgICAgICAgJiYgV2ViR0xEZXB0aFRleHR1
cmU6OnN1cHBvcnRlZChncmFwaGljc0NvbnRleHQzRCgpKSkgeworICAgICAgICAmJiBXZWJHTERl
cHRoVGV4dHVyZTo6c3VwcG9ydGVkKCpncmFwaGljc0NvbnRleHQzRCgpKSkgewogICAgICAgICBp
ZiAoIW1fd2ViZ2xEZXB0aFRleHR1cmUpIHsKLSAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9kZXB0aF90ZXh0dXJlIik7Ci0g
ICAgICAgICAgICBtX3dlYmdsRGVwdGhUZXh0dXJlID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTERl
cHRoVGV4dHVyZT4odGhpcyk7CisgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5lbnN1cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9kZXB0aF90ZXh0dXJlIik7CisgICAgICAgICAg
ICBtX3dlYmdsRGVwdGhUZXh0dXJlID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTERlcHRoVGV4dHVy
ZT4oKnRoaXMpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX3dlYmdsRGVwdGhUZXh0dXJl
LmdldCgpOwogICAgIH0KICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiV0VC
R0xfZGVidWdfcmVuZGVyZXJfaW5mbyIpKSB7CiAgICAgICAgIGlmICghbV93ZWJnbERlYnVnUmVu
ZGVyZXJJbmZvKQotICAgICAgICAgICAgbV93ZWJnbERlYnVnUmVuZGVyZXJJbmZvID0gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJHTERlYnVnUmVuZGVyZXJJbmZvPih0aGlzKTsKKyAgICAgICAgICAgIG1f
d2ViZ2xEZWJ1Z1JlbmRlcmVySW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xEZWJ1Z1JlbmRl
cmVySW5mbz4oKnRoaXMpOwogICAgICAgICByZXR1cm4gbV93ZWJnbERlYnVnUmVuZGVyZXJJbmZv
LmdldCgpOwogICAgIH0KICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiV0VC
R0xfZGVidWdfc2hhZGVycyIpCi0gICAgICAgICYmIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LT5zdXBwb3J0cygiR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIikpIHsKKyAgICAg
ICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0FOR0xFX3RyYW5z
bGF0ZWRfc2hhZGVyX3NvdXJjZSIpKSB7CiAgICAgICAgIGlmICghbV93ZWJnbERlYnVnU2hhZGVy
cykKLSAgICAgICAgICAgIG1fd2ViZ2xEZWJ1Z1NoYWRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdl
YkdMRGVidWdTaGFkZXJzPih0aGlzKTsKKyAgICAgICAgICAgIG1fd2ViZ2xEZWJ1Z1NoYWRlcnMg
PSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMRGVidWdTaGFkZXJzPigqdGhpcyk7CiAgICAgICAgIHJl
dHVybiBtX3dlYmdsRGVidWdTaGFkZXJzLmdldCgpOwogICAgIH0KIApAQCAtOTQyLDI2ICs5NDIs
MjYgQEAgVmVjdG9yPFN0cmluZz4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3VwcG9ydGVk
RXh0ZW5zaW9ucygpCiAgICAgaWYgKG1faXNQZW5kaW5nUG9saWN5UmVzb2x1dGlvbikKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKIAotICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+
c3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2Zsb2F0IikpCisgICAgaWYgKG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCIpKQogICAgICAgICBy
ZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9mbG9hdCIpOwotICAgIGlmIChtX2NvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIpKQor
ICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3RleHR1
cmVfZmxvYXRfbGluZWFyIikpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU190ZXh0dXJlX2Zs
b2F0X2xpbmVhciIpOwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9y
dHMoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQiKSkKKyAgICBpZiAobV9jb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQiKSkKICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgiT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpOwotICAgIGlmIChtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxv
YXRfbGluZWFyIikpCisgICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRz
KCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpKQogICAgICAgICByZXN1bHQuYXBw
ZW5kKCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpOwotICAgIGlmIChtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ry
b3BpYyIpKQorICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xf
RVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIikpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQo
IldFQktJVF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKTsKLSAgICBpZiAoV2ViR0xD
b21wcmVzc2VkVGV4dHVyZUFUQzo6c3VwcG9ydGVkKHRoaXMpKQorICAgIGlmIChXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlQVRDOjpzdXBwb3J0ZWQoKnRoaXMpKQogICAgICAgICByZXN1bHQuYXBwZW5k
KCJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2F0YyIpOwotICAgIGlmIChXZWJHTENv
bXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBvcnRlZCh0aGlzKSkKKyAgICBpZiAoV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKnRoaXMpKQogICAgICAgICByZXN1bHQuYXBw
ZW5kKCJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIik7Ci0gICAgaWYgKFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQodGhpcykpCisgICAgaWYgKFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQoKnRoaXMpKQogICAgICAgICByZXN1bHQu
YXBwZW5kKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIpOwotICAgIGlmIChXZWJHTERl
cHRoVGV4dHVyZTo6c3VwcG9ydGVkKGdyYXBoaWNzQ29udGV4dDNEKCkpKQorICAgIGlmIChXZWJH
TERlcHRoVGV4dHVyZTo6c3VwcG9ydGVkKCpncmFwaGljc0NvbnRleHQzRCgpKSkKICAgICAgICAg
cmVzdWx0LmFwcGVuZCgiV0VCR0xfZGVwdGhfdGV4dHVyZSIpOwogICAgIHJlc3VsdC5hcHBlbmQo
IldFQkdMX2xvc2VfY29udGV4dCIpOwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS0+c3VwcG9ydHMoIkdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSIpKQorICAgIGlm
IChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfQU5HTEVfdHJhbnNsYXRl
ZF9zaGFkZXJfc291cmNlIikpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2RlYnVnX3No
YWRlcnMiKTsKICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9kZWJ1Z19yZW5kZXJlcl9pbmZvIik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmNwcAppbmRleCBhYTNh
OWRiNGZmNDhlZTFiMTYyZWY5NGE1YmIzMmZmZjYxYmQ1NjMxLi5kZjE3NzExZGIwYjg5ZWFkMDM4
ZjczYzMxZDIyZmUxZTMyYTVlM2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xCdWZmZXIuY3BwCkBAIC0zNCwxOCArMzQsMTggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1SZWY8V2ViR0xCdWZmZXI+IFdlYkdMQnVmZmVyOjpjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSogY3R4KQorUmVmPFdlYkdMQnVmZmVyPiBXZWJHTEJ1ZmZlcjo6Y3JlYXRlKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UmIGN0eCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
ZWJHTEJ1ZmZlcihjdHgpKTsKIH0KIAotV2ViR0xCdWZmZXI6OldlYkdMQnVmZmVyKFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UqIGN0eCkKK1dlYkdMQnVmZmVyOjpXZWJHTEJ1ZmZlcihXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlJiBjdHgpCiAgICAgOiBXZWJHTFNoYXJlZE9iamVjdChjdHgpCiAg
ICAgLCBtX3RhcmdldCgwKQogICAgICwgbV9ieXRlTGVuZ3RoKDApCiAgICAgLCBtX25leHRBdmFp
bGFibGVDYWNoZUVudHJ5KDApCiB7Ci0gICAgc2V0T2JqZWN0KGN0eC0+Z3JhcGhpY3NDb250ZXh0
M0QoKS0+Y3JlYXRlQnVmZmVyKCkpOworICAgIHNldE9iamVjdChjdHguZ3JhcGhpY3NDb250ZXh0
M0QoKS0+Y3JlYXRlQnVmZmVyKCkpOwogICAgIGNsZWFyQ2FjaGVkTWF4SW5kaWNlcygpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaAppbmRleCBhOWYzMzg4OGU0
OTAxMDM2NTk2NmVjMzM1ZWEwNzFiZjRjMjgxNjJmLi4xYjQxNGU4ZmM5YTEzNWE5Y2VjMGJjZDZj
NmYyMmUwOWMyNzcxZDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVy
LmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgV2ViR0xCdWZmZXIgZmluYWwgOiBwdWJsaWMgV2Vi
R0xTaGFyZWRPYmplY3QgewogcHVibGljOgogICAgIHZpcnR1YWwgfldlYkdMQnVmZmVyKCk7CiAK
LSAgICBzdGF0aWMgUmVmPFdlYkdMQnVmZmVyPiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSopOworICAgIHN0YXRpYyBSZWY8V2ViR0xCdWZmZXI+IGNyZWF0ZShXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlJik7CiAKICAgICBib29sIGFzc29jaWF0ZUJ1ZmZlckRhdGEoR0MzRHNpemVp
cHRyIHNpemUpOwogICAgIGJvb2wgYXNzb2NpYXRlQnVmZmVyRGF0YShKU0M6OkFycmF5QnVmZmVy
Kik7CkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0V2ZXJCZWVuQm91bmQo
KSBjb25zdCB7IHJldHVybiBvYmplY3QoKSAmJiBtX3RhcmdldDsgfQogCiBwcm90ZWN0ZWQ6Ci0g
ICAgV2ViR0xCdWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOworICAgIFdlYkdMQnVm
ZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKIAogICAgIHZvaWQgZGVsZXRlT2JqZWN0
SW1wbChHcmFwaGljc0NvbnRleHQzRCosIFBsYXRmb3JtM0RPYmplY3QpIG92ZXJyaWRlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0
dXJlQVRDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRl
eHR1cmVBVEMuY3BwCmluZGV4IDUwYWQ2NTVhYTg2M2VkOTJjZDZiNzE1YzEzMTMxZGYyNmJkNWQy
OWUuLjk2MDIzNzRlN2MxNzlhNGJjNzdhM2Y4YTRlY2Q5NzFmOGUxZjhkYWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVB
VEMuY3BwCkBAIC0zMywxMiArMzMsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XZWJH
TENvbXByZXNzZWRUZXh0dXJlQVRDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDKFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRleHQpCitXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpX
ZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRl
eHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQtPmFkZENv
bXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9BVENfUkdCX0FN
RCk7Ci0gICAgY29udGV4dC0+YWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uczNE
OjpDT01QUkVTU0VEX0FUQ19SR0JBX0VYUExJQ0lUX0FMUEhBX0FNRCk7Ci0gICAgY29udGV4dC0+
YWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX0FUQ19S
R0JBX0lOVEVSUE9MQVRFRF9BTFBIQV9BTUQpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRl
eHR1cmVGb3JtYXQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX0FUQ19SR0JfQU1EKTsKKyAgICBj
b250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NF
RF9BVENfUkdCQV9FWFBMSUNJVF9BTFBIQV9BTUQpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3Nl
ZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX0FUQ19SR0JBX0lOVEVSUE9M
QVRFRF9BTFBIQV9BTUQpOwogfQogCiBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjp+V2ViR0xD
b21wcmVzc2VkVGV4dHVyZUFUQygpCkBAIC01MCwxMCArNTAsMTAgQEAgV2ViR0xFeHRlbnNpb246
OkV4dGVuc2lvbk5hbWUgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6Z2V0TmFtZSgpIGNvbnN0
CiAgICAgcmV0dXJuIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVENOYW1lOwogfQogCi1ib29sIFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OnN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlKiBjb250ZXh0KQorYm9vbCBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpzdXBwb3J0ZWQo
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKIHsKLSAgICBFeHRlbnNpb25zM0Qq
IGV4dGVuc2lvbnMgPSBjb250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25z
KCk7Ci0gICAgcmV0dXJuIGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9BTURfY29tcHJlc3NlZF9B
VENfdGV4dHVyZSIpOworICAgIEV4dGVuc2lvbnMzRCYgZXh0ZW5zaW9ucyA9IGNvbnRleHQuZ3Jh
cGhpY3NDb250ZXh0M0QoKS0+Z2V0RXh0ZW5zaW9ucygpOworICAgIHJldHVybiBleHRlbnNpb25z
LnN1cHBvcnRzKCJHTF9BTURfY29tcHJlc3NlZF9BVENfdGV4dHVyZSIpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmgKaW5kZXggMjEwMmQ5MGQ1ZTRkMmViMjBkNDJlNmEy
MTE4OGQ1NmE3MTE3YzQ4Ny4uZTViMDU2MGQzZDI5YjA2ZjViZDMwYTEzYzhiNzEyNTA1ODFmZjEy
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZUFUQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJl
c3NlZFRleHR1cmVBVEMuaApAQCAtMzMsMTAgKzMzLDEwIEBAIGNsYXNzIFdlYkdMVGV4dHVyZTsK
IAogY2xhc3MgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQyBmaW5hbCA6IHB1YmxpYyBXZWJHTEV4
dGVuc2lvbiB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFU
QyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAgZXhwbGljaXQgV2ViR0xDb21wcmVz
c2VkVGV4dHVyZUFUQyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVhbCB+
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQygpOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVk
KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQo
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogCiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1l
KCkgY29uc3Qgb3ZlcnJpZGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5jcHAKaW5kZXggOGNhYTRjNjg5
ODU0OGZlZDYwMDcyNGRiZGRkODM0YjM2MjhhMDVjMy4uY2JlNzdjNzg5YzQ1NzI3NmU3ZjEzNmNk
Mzk1MWY1MzlkZTk2ZGM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuY3BwCkBAIC0zNCwxMyArMzQsMTMg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6
OldlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBj
b250ZXh0KQorV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpXZWJHTENvbXByZXNzZWRUZXh0
dXJlUFZSVEMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdM
RXh0ZW5zaW9uKGNvbnRleHQpCiB7Ci0gICAgY29udGV4dC0+YWRkQ29tcHJlc3NlZFRleHR1cmVG
b3JtYXQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HKTsKLSAg
ICBjb250ZXh0LT5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zM0Q6OkNPTVBS
RVNTRURfUkdCX1BWUlRDXzJCUFBWMV9JTUcpOwotICAgIGNvbnRleHQtPmFkZENvbXByZXNzZWRU
ZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9J
TUcpOwotICAgIGNvbnRleHQtPmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnMz
RDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzJCUFBWMV9JTUcpOworICAgIGNvbnRleHQuYWRkQ29t
cHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQl9QVlJUQ180
QlBQVjFfSU1HKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVu
c2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfMkJQUFYxX0lNRyk7CisgICAgY29udGV4dC5h
ZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9Q
VlJUQ180QlBQVjFfSU1HKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0
KEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzJCUFBWMV9JTUcpOwogfQogCiBX
ZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6On5XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMo
KQpAQCAtNTIsMTAgKzUyLDEwIEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVQVlJUQzo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVQVlJUQ05hbWU7CiB9CiAKLWJvb2wgV2ViR0xDb21wcmVzc2VkVGV4
dHVyZVBWUlRDOjpzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29udGV4dCkK
K2Jvb2wgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSYgY29udGV4dCkKIHsKLSAgICBFeHRlbnNpb25zM0QqIGV4dGVuc2lvbnMg
PSBjb250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCk7Ci0gICAgcmV0
dXJuIGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9JTUdfdGV4dHVyZV9jb21wcmVzc2lvbl9wdnJ0
YyIpOworICAgIEV4dGVuc2lvbnMzRCYgZXh0ZW5zaW9ucyA9IGNvbnRleHQuZ3JhcGhpY3NDb250
ZXh0M0QoKS0+Z2V0RXh0ZW5zaW9ucygpOworICAgIHJldHVybiBleHRlbnNpb25zLnN1cHBvcnRz
KCJHTF9JTUdfdGV4dHVyZV9jb21wcmVzc2lvbl9wdnJ0YyIpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENv
bXByZXNzZWRUZXh0dXJlUFZSVEMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVQVlJUQy5oCmluZGV4IDA5MGRkMzI5N2VmOTI4ZWQzYTFjNDllNjNi
OTA2NjU0MDQ1MTYwOWYuLjUxNWU2ZTExZmU5ZmIzZDZiODI5MDdlOGE4NzUzYzEwY2VjNDdhYjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRl
eHR1cmVQVlJUQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJl
c3NlZFRleHR1cmVQVlJUQy5oCkBAIC0zMSwxMCArMzEsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMgZmluYWwgOiBwdWJsaWMgV2Vi
R0xFeHRlbnNpb24gewogcHVibGljOgotICAgIGV4cGxpY2l0IFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVQVlJUQyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAgZXhwbGljaXQgV2ViR0xD
b21wcmVzc2VkVGV4dHVyZVBWUlRDKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKICAgICB2
aXJ0dWFsIH5XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMoKTsKIAotICAgIHN0YXRpYyBib29s
IHN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAgc3RhdGljIGJvb2wg
c3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKICAgICBFeHRlbnNpb25OYW1l
IGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcAppbmRleCA0
MmJjZDA4MTBjOTRjNWJjNTljMWY3YWE1ZWZkOTBmMmJlYWQyNGFiLi4yMGM5M2U3ZjQ4OGExMzBh
NDI5NWQ3YmNhM2E1ZTA1NzYxNzQ1M2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwCkBAIC0zNCwxMyAr
MzQsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XZWJHTENvbXByZXNzZWRUZXh0dXJl
UzNUQzo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSogY29udGV4dCkKK1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpXZWJHTENvbXByZXNzZWRU
ZXh0dXJlUzNUQyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2Vi
R0xFeHRlbnNpb24oY29udGV4dCkKIHsKLSAgICBjb250ZXh0LT5hZGRDb21wcmVzc2VkVGV4dHVy
ZUZvcm1hdChFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQpOwotICAg
IGNvbnRleHQtPmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnMzRDo6Q09NUFJF
U1NFRF9SR0JBX1MzVENfRFhUMV9FWFQpOwotICAgIGNvbnRleHQtPmFkZENvbXByZXNzZWRUZXh0
dXJlRm9ybWF0KEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQpOwot
ICAgIGNvbnRleHQtPmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnMzRDo6Q09N
UFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRl
eHR1cmVGb3JtYXQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUKTsK
KyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnMzRDo6Q09N
UFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRl
eHR1cmVGb3JtYXQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVCk7
CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zM0Q6OkNP
TVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUKTsKIH0KIAogV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVMzVEM6On5XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQygpCkBAIC01MiwxMyArNTIsMTMgQEAg
V2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6
OmdldE5hbWUoKSBjb25zdAogICAgIHJldHVybiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQ05h
bWU7CiB9CiAKLWJvb2wgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBvcnRlZChXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjb250ZXh0KQorYm9vbCBXZWJHTENvbXByZXNzZWRUZXh0
dXJlUzNUQzo6c3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiB7
Ci0gICAgRXh0ZW5zaW9uczNEKiBleHRlbnNpb25zID0gY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0
M0QoKS0+Z2V0RXh0ZW5zaW9ucygpOwotICAgIHJldHVybiBleHRlbnNpb25zLT5zdXBwb3J0cygi
R0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0YyIpCi0gICAgICAgIHx8IChleHRlbnNpb25z
LT5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSIpCi0gICAgICAgICAg
ICAmJiBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfQ0hST01JVU1fdGV4dHVyZV9jb21wcmVzc2lv
bl9keHQzIikKLSAgICAgICAgICAgICYmIGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9DSFJPTUlV
TV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDUiKSk7CisgICAgRXh0ZW5zaW9uczNEJiBleHRlbnNp
b25zID0gY29udGV4dC5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCk7CisgICAg
cmV0dXJuIGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3Mz
dGMiKQorICAgICAgICB8fCAoZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfY29t
cHJlc3Npb25fZHh0MSIpCisgICAgICAgICAgICAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9D
SFJPTUlVTV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDMiKQorICAgICAgICAgICAgJiYgZXh0ZW5z
aW9ucy5zdXBwb3J0cygiR0xfQ0hST01JVU1fdGV4dHVyZV9jb21wcmVzc2lvbl9keHQ1IikpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaAppbmRleCBlZDNkOGY5ODdj
YTc5MzRiYTg3MmQ3ZmViNjNkZTU5NjRjMGJlMDM1Li4yNTFlNTkyZjcxZjQ5NDU3YzNhYTc4MDAy
YjBkMWU3YmZhMmY3NzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmgKQEAgLTMzLDEwICszMywxMCBAQCBjbGFz
cyBXZWJHTFRleHR1cmU7CiAKIGNsYXNzIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDIGZpbmFs
IDogcHVibGljIFdlYkdMRXh0ZW5zaW9uIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBXZWJHTENv
bXByZXNzZWRUZXh0dXJlUzNUQyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAgZXhw
bGljaXQgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSYpOwogICAgIHZpcnR1YWwgfldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKCk7CiAKLSAgICBz
dGF0aWMgYm9vbCBzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOworICAgIHN0
YXRpYyBib29sIHN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAKICAgICBF
eHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRPYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0T2JqZWN0LmNwcAppbmRleCA0ZmYxMDc0
YjE5MjZiYzNkNGExYjkwNWUyYjgxZDg3ZjBlMTFhMjFiLi41MjNlNmU2NDJkNzQ5YjYwMjJmMzc3
M2E4OGVkZjRlYTBlY2I5YmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTENvbnRleHRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMQ29udGV4dE9iamVjdC5jcHAKQEAgLTMzLDkgKzMzLDkgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1XZWJHTENvbnRleHRPYmplY3Q6OldlYkdMQ29udGV4dE9iamVjdChXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlKiBjb250ZXh0KQorV2ViR0xDb250ZXh0T2JqZWN0OjpXZWJHTENv
bnRleHRPYmplY3QoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdl
YkdMT2JqZWN0KGNvbnRleHQpCi0gICAgLCBtX2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1fY29u
dGV4dCgmY29udGV4dCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xDb250ZXh0T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbnRleHRPYmplY3QuaAppbmRleCAzODA4NTVjMDJjZTJmYjJhNjIwYTg2OTk2NjUyMjMx
NzJlNTZkNjY4Li5lYmUwZmM2YzVmNzYzNjM1MmIzODZlZDJhMDgwYWFhNGEwMTIxZDFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRPYmplY3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRPYmplY3QuaApAQCAt
NDAsMTUgKzQwLDE1IEBAIHB1YmxpYzoKIAogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uq
IGNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQ7IH0KIAotICAgIGJvb2wgdmFsaWRh
dGUoY29uc3QgV2ViR0xDb250ZXh0R3JvdXAqLCBjb25zdCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlKiBjb250ZXh0KSBjb25zdCBvdmVycmlkZQorICAgIGJvb2wgdmFsaWRhdGUoY29uc3QgV2Vi
R0xDb250ZXh0R3JvdXAqLCBjb25zdCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0
KSBjb25zdCBvdmVycmlkZQogICAgIHsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQgPT0gbV9jb250
ZXh0OworICAgICAgICByZXR1cm4gJmNvbnRleHQgPT0gbV9jb250ZXh0OwogICAgIH0KIAogICAg
IHZvaWQgZGV0YWNoQ29udGV4dCgpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgV2ViR0xDb250ZXh0T2Jq
ZWN0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBXZWJHTENvbnRleHRPYmplY3Qo
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogCiAgICAgYm9vbCBoYXNHcm91cE9yQ29udGV4
dCgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTERlYnVnUmVuZGVyZXJJbmZvLmNwcAppbmRleCAyMDNhNWMzNzdlMDA2Yzgz
Mjk1ZWIxMWQwMWM3NDJjMTM0MzMzYTc5Li45ZGY3ZmJkNTFkZjRlNTIyZmYxZDU1ZThhNWNjN2Q2
Zjc0M2Q5ZmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERl
YnVnUmVuZGVyZXJJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TERlYnVnUmVuZGVyZXJJbmZvLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVdlYkdMRGVidWdSZW5kZXJlckluZm86OldlYkdMRGVidWdSZW5kZXJlckluZm8o
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29udGV4dCkKK1dlYkdMRGVidWdSZW5kZXJlcklu
Zm86OldlYkdMRGVidWdSZW5kZXJlckluZm8oV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29u
dGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnUmVuZGVyZXJJbmZvLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnUmVuZGVyZXJJbmZvLmgKaW5kZXggMTZl
MzMzYzg5ODEyNmM5NjZjZjFiZTA3OTBhMmY2ZTE3ODc2MjdlYS4uM2U1ODIyZDIwOGIyYzBhYWU5
Yjk5YmU0OWVmNTMyZjJiNzBjNzRkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMRGVidWdSZW5kZXJlckluZm8uaApAQCAtMzYsNyArMzYsNyBAQCBwdWJsaWM6
CiAgICAgICAgIFVOTUFTS0VEX1JFTkRFUkVSX1dFQkdMID0gMHg5MjQ2CiAgICAgfTsKIAotICAg
IGV4cGxpY2l0IFdlYkdMRGVidWdSZW5kZXJlckluZm8oV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSopOworICAgIGV4cGxpY2l0IFdlYkdMRGVidWdSZW5kZXJlckluZm8oV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwgfldlYkdMRGVidWdSZW5kZXJlckluZm8oKTsKIAog
ICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuY3BwCmluZGV4IGZhMDcyZjli
M2JjMjI5NTE4Y2UzNGQyN2VlOTY1NWVjYmFlODA4ZDIuLmVkNDI4MTMwOTlmNjA1MmJiZWY4ZWU5
MDZmMDk2OTRlMzFmMzJjNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMRGVidWdTaGFkZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTERlYnVnU2hhZGVycy5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1XZWJHTERlYnVnU2hhZGVyczo6V2ViR0xEZWJ1Z1NoYWRlcnMoV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSogY29udGV4dCkKK1dlYkdMRGVidWdTaGFkZXJzOjpXZWJHTERlYnVnU2hh
ZGVycyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRl
bnNpb24oY29udGV4dCkKIHsKIH0KQEAgLTUxLDExICs1MSwxMSBAQCBXZWJHTEV4dGVuc2lvbjo6
RXh0ZW5zaW9uTmFtZSBXZWJHTERlYnVnU2hhZGVyczo6Z2V0TmFtZSgpIGNvbnN0CiAKIFN0cmlu
ZyBXZWJHTERlYnVnU2hhZGVyczo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZShXZWJHTFNoYWRl
ciogc2hhZGVyKQogewotICAgIGlmIChtX2NvbnRleHQtPmlzQ29udGV4dExvc3QoKSkKKyAgICBp
ZiAobV9jb250ZXh0LmlzQ29udGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwot
ICAgIGlmICghbV9jb250ZXh0LT52YWxpZGF0ZVdlYkdMT2JqZWN0KCJnZXRUcmFuc2xhdGVkU2hh
ZGVyU291cmNlIiwgc2hhZGVyKSkKKyAgICBpZiAoIW1fY29udGV4dC52YWxpZGF0ZVdlYkdMT2Jq
ZWN0KCJnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlIiwgc2hhZGVyKSkKICAgICAgICAgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7Ci0gICAgcmV0dXJuIG1fY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0M0Qo
KS0+Z2V0RXh0ZW5zaW9ucygpLT5nZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoc2hhZGVy
LT5vYmplY3QoKSk7CisgICAgcmV0dXJuIG1fY29udGV4dC5ncmFwaGljc0NvbnRleHQzRCgpLT5n
ZXRFeHRlbnNpb25zKCkuZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKHNoYWRlci0+b2Jq
ZWN0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuaAppbmRleCBkZTRiZjAxMzU1MDlmMDEwYTI2
MTcxZmEzZWQwNzM0YWE2NDMwZDFlLi40Yjk5ZjFhZWFiN2NiZmZmNGZiN2E1ZjdmNjdhNDc0OGU4
MjA3NjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlYnVn
U2hhZGVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFk
ZXJzLmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3MgV2ViR0xTaGFkZXI7CiAKIGNsYXNzIFdlYkdM
RGVidWdTaGFkZXJzIGZpbmFsIDogcHVibGljIFdlYkdMRXh0ZW5zaW9uIHsKIHB1YmxpYzoKLSAg
ICBleHBsaWNpdCBXZWJHTERlYnVnU2hhZGVycyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7
CisgICAgZXhwbGljaXQgV2ViR0xEZWJ1Z1NoYWRlcnMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSYpOwogICAgIHZpcnR1YWwgfldlYkdMRGVidWdTaGFkZXJzKCk7CiAKICAgICBFeHRlbnNpb25O
YW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNwcAppbmRleCA4ZmQ5MDc5MzVmM2IxMWNkMDA1MWIw
MjAxMWNiNWZiMDUyYjIyZTIzLi5kZjIzZGZlZjJlYzU5NTZkOTQ3OGE4YjY5NjYwMzJlM2UyNmUw
YWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4
dHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZXB0aFRleHR1
cmUuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV2ViR0xE
ZXB0aFRleHR1cmU6OldlYkdMRGVwdGhUZXh0dXJlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uq
IGNvbnRleHQpCitXZWJHTERlcHRoVGV4dHVyZTo6V2ViR0xEZXB0aFRleHR1cmUoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQp
CiB7CiB9CkBAIC00NywxMiArNDcsMTIgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUg
V2ViR0xEZXB0aFRleHR1cmU6OmdldE5hbWUoKSBjb25zdAogICAgIHJldHVybiBXZWJHTERlcHRo
VGV4dHVyZU5hbWU7CiB9CiAKLWJvb2wgV2ViR0xEZXB0aFRleHR1cmU6OnN1cHBvcnRlZChHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCkKK2Jvb2wgV2ViR0xEZXB0aFRleHR1cmU6OnN1cHBvcnRl
ZChHcmFwaGljc0NvbnRleHQzRCYgY29udGV4dCkKIHsKLSAgICBFeHRlbnNpb25zM0QqIGV4dGVu
c2lvbnMgPSBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCk7Ci0gICAgcmV0dXJuIGV4dGVuc2lvbnMt
PnN1cHBvcnRzKCJHTF9DSFJPTUlVTV9kZXB0aF90ZXh0dXJlIikKLSAgICAgICAgfHwgZXh0ZW5z
aW9ucy0+c3VwcG9ydHMoIkdMX09FU19kZXB0aF90ZXh0dXJlIikKLSAgICAgICAgfHwgZXh0ZW5z
aW9ucy0+c3VwcG9ydHMoIkdMX0FSQl9kZXB0aF90ZXh0dXJlIik7CisgICAgRXh0ZW5zaW9uczNE
JiBleHRlbnNpb25zID0gY29udGV4dC5nZXRFeHRlbnNpb25zKCk7CisgICAgcmV0dXJuIGV4dGVu
c2lvbnMuc3VwcG9ydHMoIkdMX0NIUk9NSVVNX2RlcHRoX3RleHR1cmUiKQorICAgICAgICB8fCBl
eHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfZGVwdGhfdGV4dHVyZSIpCisgICAgICAgIHx8IGV4
dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0FSQl9kZXB0aF90ZXh0dXJlIik7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMRGVwdGhUZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRo
VGV4dHVyZS5oCmluZGV4IDcxZjUxYWE2NjE5ZGE2ZWRkM2NhZTU5ODNkYjk1NGNiMTQ4ZWEyNjIu
LjE2YjNiNjBiNGYyNzk4ZmE2NmQyYjVhODgxZDgxM2Q1NDBiZDFlMDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuaApAQCAtMzEsMTAgKzMxLDEw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV2ViR0xEZXB0aFRleHR1cmUgZmluYWwg
OiBwdWJsaWMgV2ViR0xFeHRlbnNpb24gewogcHVibGljOgotICAgIGV4cGxpY2l0IFdlYkdMRGVw
dGhUZXh0dXJlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBleHBsaWNpdCBXZWJH
TERlcHRoVGV4dHVyZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVhbCB+
V2ViR0xEZXB0aFRleHR1cmUoKTsKIAotICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChHcmFwaGlj
c0NvbnRleHQzRCopOworICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChHcmFwaGljc0NvbnRleHQz
RCYpOwogCiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcAppbmRl
eCA3YmM3MmE2ZTU5NjMyMTUxZDJhYzQ0YTU4ZThlNzVmNzA5NjU1NTM4Li5mZTAxNmNkZGQ1MjJi
MTExZWE4YmVkZDdmZDc1YmYyN2RjOGRkZGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVdlYkdMRHJhd0J1ZmZlcnM6OldlYkdMRHJhd0J1ZmZlcnMoV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZSogY29udGV4dCkKK1dlYkdMRHJhd0J1ZmZlcnM6OldlYkdMRHJh
d0J1ZmZlcnMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdM
RXh0ZW5zaW9uKGNvbnRleHQpCiB7CiB9CkBAIC00Niw1MSArNDYsNTEgQEAgV2ViR0xFeHRlbnNp
b246OkV4dGVuc2lvbk5hbWUgV2ViR0xEcmF3QnVmZmVyczo6Z2V0TmFtZSgpIGNvbnN0CiAgICAg
cmV0dXJuIFdlYkdMRXh0ZW5zaW9uOjpXZWJHTERyYXdCdWZmZXJzTmFtZTsKIH0KIAotYm9vbCBX
ZWJHTERyYXdCdWZmZXJzOjpzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29u
dGV4dCkKK2Jvb2wgV2ViR0xEcmF3QnVmZmVyczo6c3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UmIGNvbnRleHQpCiB7Ci0gICAgRXh0ZW5zaW9uczNEKiBleHRlbnNpb25zID0gY29u
dGV4dC0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+Z2V0RXh0ZW5zaW9ucygpOwotICAgIHJldHVybiBl
eHRlbnNpb25zLT5zdXBwb3J0cygiR0xfRVhUX2RyYXdfYnVmZmVycyIpCisgICAgRXh0ZW5zaW9u
czNEJiBleHRlbnNpb25zID0gY29udGV4dC5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNp
b25zKCk7CisgICAgcmV0dXJuIGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0VYVF9kcmF3X2J1ZmZl
cnMiKQogICAgICAgICAmJiBzYXRpc2ZpZXNXZWJHTFJlcXVpcmVtZW50cyhjb250ZXh0KTsKIH0K
IAogdm9pZCBXZWJHTERyYXdCdWZmZXJzOjpkcmF3QnVmZmVyc1dFQkdMKGNvbnN0IFZlY3RvcjxH
QzNEZW51bT4mIGJ1ZmZlcnMpCiB7Ci0gICAgaWYgKG1fY29udGV4dC0+aXNDb250ZXh0TG9zdCgp
KQorICAgIGlmIChtX2NvbnRleHQuaXNDb250ZXh0TG9zdCgpKQogICAgICAgICByZXR1cm47CiAg
ICAgR0MzRHNpemVpIG4gPSBidWZmZXJzLnNpemUoKTsKICAgICBjb25zdCBHQzNEZW51bSogYnVm
cyA9IGJ1ZmZlcnMuZGF0YSgpOwotICAgIGlmICghbV9jb250ZXh0LT5tX2ZyYW1lYnVmZmVyQmlu
ZGluZykgeworICAgIGlmICghbV9jb250ZXh0Lm1fZnJhbWVidWZmZXJCaW5kaW5nKSB7CiAgICAg
ICAgIGlmIChuICE9IDEpIHsKLSAgICAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJy
b3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUsICJkcmF3QnVmZmVyc1dFQkdMIiwg
Im1vcmUgdGhhbiBvbmUgYnVmZmVyIik7CisgICAgICAgICAgICBtX2NvbnRleHQuc3ludGhlc2l6
ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUsICJkcmF3QnVmZmVyc1dF
QkdMIiwgIm1vcmUgdGhhbiBvbmUgYnVmZmVyIik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKGJ1ZnNbMF0gIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkJBQ0sgJiYg
YnVmc1swXSAhPSBHcmFwaGljc0NvbnRleHQzRDo6Tk9ORSkgewotICAgICAgICAgICAgbV9jb250
ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJ
T04sICJkcmF3QnVmZmVyc1dFQkdMIiwgIkJBQ0sgb3IgTk9ORSIpOworICAgICAgICAgICAgbV9j
b250ZXh0LnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJB
VElPTiwgImRyYXdCdWZmZXJzV0VCR0wiLCAiQkFDSyBvciBOT05FIik7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgLy8gQmVjYXVzZSB0aGUgYmFja2J1ZmZlciBpcyBz
aW11bGF0ZWQgb24gYWxsIGN1cnJlbnQgV2ViS2l0IHBvcnRzLCB3ZSBuZWVkIHRvIGNoYW5nZSBC
QUNLIHRvIENPTE9SX0FUVEFDSE1FTlQwLgogICAgICAgICBHQzNEZW51bSB2YWx1ZSA9IChidWZz
WzBdID09IEdyYXBoaWNzQ29udGV4dDNEOjpCQUNLKSA/IEdyYXBoaWNzQ29udGV4dDNEOjpDT0xP
Ul9BVFRBQ0hNRU5UMCA6IEdyYXBoaWNzQ29udGV4dDNEOjpOT05FOwotICAgICAgICBtX2NvbnRl
eHQtPmdyYXBoaWNzQ29udGV4dDNEKCktPmdldEV4dGVuc2lvbnMoKS0+ZHJhd0J1ZmZlcnNFWFQo
MSwgJnZhbHVlKTsKLSAgICAgICAgbV9jb250ZXh0LT5zZXRCYWNrRHJhd0J1ZmZlcihidWZzWzBd
KTsKKyAgICAgICAgbV9jb250ZXh0LmdyYXBoaWNzQ29udGV4dDNEKCktPmdldEV4dGVuc2lvbnMo
KS5kcmF3QnVmZmVyc0VYVCgxLCAmdmFsdWUpOworICAgICAgICBtX2NvbnRleHQuc2V0QmFja0Ry
YXdCdWZmZXIoYnVmc1swXSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKG4gPiBtX2NvbnRl
eHQtPmdldE1heERyYXdCdWZmZXJzKCkpIHsKLSAgICAgICAgICAgIG1fY29udGV4dC0+c3ludGhl
c2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUsICJkcmF3QnVmZmVy
c1dFQkdMIiwgIm1vcmUgdGhhbiBtYXggZHJhdyBidWZmZXJzIik7CisgICAgICAgIGlmIChuID4g
bV9jb250ZXh0LmdldE1heERyYXdCdWZmZXJzKCkpIHsKKyAgICAgICAgICAgIG1fY29udGV4dC5z
eW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgImRyYXdC
dWZmZXJzV0VCR0wiLCAibW9yZSB0aGFuIG1heCBkcmF3IGJ1ZmZlcnMiKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICBmb3IgKEdDM0RzaXplaSBpID0gMDsgaSA8IG47
ICsraSkgewogICAgICAgICAgICAgaWYgKGJ1ZnNbaV0gIT0gR3JhcGhpY3NDb250ZXh0M0Q6Ok5P
TkUgJiYgYnVmc1tpXSAhPSBzdGF0aWNfY2FzdDxHQzNEZW51bT4oRXh0ZW5zaW9uczNEOjpDT0xP
Ul9BVFRBQ0hNRU5UMF9FWFQgKyBpKSkgewotICAgICAgICAgICAgICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OLCAiZHJh
d0J1ZmZlcnNXRUJHTCIsICJDT0xPUl9BVFRBQ0hNRU5UaV9FWFQgb3IgTk9ORSIpOworICAgICAg
ICAgICAgICAgIG1fY29udGV4dC5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6
SU5WQUxJRF9PUEVSQVRJT04sICJkcmF3QnVmZmVyc1dFQkdMIiwgIkNPTE9SX0FUVEFDSE1FTlRp
X0VYVCBvciBOT05FIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQog
ICAgICAgICB9Ci0gICAgICAgIG1fY29udGV4dC0+bV9mcmFtZWJ1ZmZlckJpbmRpbmctPmRyYXdC
dWZmZXJzKGJ1ZmZlcnMpOworICAgICAgICBtX2NvbnRleHQubV9mcmFtZWJ1ZmZlckJpbmRpbmct
PmRyYXdCdWZmZXJzKGJ1ZmZlcnMpOwogICAgIH0KIH0KIAogLy8gc3RhdGljCi1ib29sIFdlYkdM
RHJhd0J1ZmZlcnM6OnNhdGlzZmllc1dlYkdMUmVxdWlyZW1lbnRzKFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UqIHdlYmdsQ29udGV4dCkKK2Jvb2wgV2ViR0xEcmF3QnVmZmVyczo6c2F0aXNmaWVz
V2ViR0xSZXF1aXJlbWVudHMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgd2ViZ2xDb250ZXh0
KQogewotICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0ID0gd2ViZ2xDb250ZXh0LT5ncmFw
aGljc0NvbnRleHQzRCgpOworICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0ID0gd2ViZ2xD
b250ZXh0LmdyYXBoaWNzQ29udGV4dDNEKCk7CiAKICAgICAvLyBUaGlzIGlzIGNhbGxlZCBhZnRl
ciB3ZSBtYWtlIHN1cmUgR0xfRVhUX2RyYXdfYnVmZmVycyBpcyBzdXBwb3J0ZWQuCiAgICAgR0Mz
RGludCBtYXhEcmF3QnVmZmVycyA9IDA7CkBAIC0xMDQsMTEgKzEwNCwxMSBAQCBib29sIFdlYkdM
RHJhd0J1ZmZlcnM6OnNhdGlzZmllc1dlYkdMUmVxdWlyZW1lbnRzKFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UqIHdlYgogICAgIGNvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRl
eHQzRDo6RlJBTUVCVUZGRVIsIGZibyk7CiAKICAgICBjb25zdCB1bnNpZ25lZCBjaGFyIGJ1ZmZl
cls0XSA9IHsgMCwgMCwgMCwgMCB9OyAvLyB0ZXh0dXJlcyBhcmUgcmVxdWlyZWQgdG8gYmUgaW5p
dGlhbGl6ZWQgZm9yIG90aGVyIHBvcnRzLgotICAgIGJvb2wgc3VwcG9ydHNEZXB0aCA9IChjb250
ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9DSFJPTUlVTV9kZXB0aF90ZXh0dXJl
IikKLSAgICAgICAgfHwgY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VT
X2RlcHRoX3RleHR1cmUiKQotICAgICAgICB8fCBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1
cHBvcnRzKCJHTF9BUkJfZGVwdGhfdGV4dHVyZSIpKTsKLSAgICBib29sIHN1cHBvcnRzRGVwdGhT
dGVuY2lsID0gKGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX0VYVF9wYWNr
ZWRfZGVwdGhfc3RlbmNpbCIpCi0gICAgICAgIHx8IGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+
c3VwcG9ydHMoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpKTsKKyAgICBib29sIHN1cHBv
cnRzRGVwdGggPSAoY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9DSFJPTUlV
TV9kZXB0aF90ZXh0dXJlIikKKyAgICAgICAgfHwgY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1
cHBvcnRzKCJHTF9PRVNfZGVwdGhfdGV4dHVyZSIpCisgICAgICAgIHx8IGNvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfQVJCX2RlcHRoX3RleHR1cmUiKSk7CisgICAgYm9vbCBz
dXBwb3J0c0RlcHRoU3RlbmNpbCA9IChjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMo
IkdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCIpCisgICAgICAgIHx8IGNvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikpOwogICAg
IFBsYXRmb3JtM0RPYmplY3QgZGVwdGhTdGVuY2lsID0gMDsKICAgICBpZiAoc3VwcG9ydHNEZXB0
aFN0ZW5jaWwpIHsKICAgICAgICAgZGVwdGhTdGVuY2lsID0gY29udGV4dC0+Y3JlYXRlVGV4dHVy
ZSgpOwpAQCAtMTU1LDkgKzE1NSw5IEBAIGJvb2wgV2ViR0xEcmF3QnVmZmVyczo6c2F0aXNmaWVz
V2ViR0xSZXF1aXJlbWVudHMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogd2ViCiAgICAgICAg
IH0KICAgICB9CiAKLSAgICB3ZWJnbENvbnRleHQtPnJlc3RvcmVDdXJyZW50RnJhbWVidWZmZXIo
KTsKKyAgICB3ZWJnbENvbnRleHQucmVzdG9yZUN1cnJlbnRGcmFtZWJ1ZmZlcigpOwogICAgIGNv
bnRleHQtPmRlbGV0ZUZyYW1lYnVmZmVyKGZibyk7Ci0gICAgd2ViZ2xDb250ZXh0LT5yZXN0b3Jl
Q3VycmVudFRleHR1cmUyRCgpOworICAgIHdlYmdsQ29udGV4dC5yZXN0b3JlQ3VycmVudFRleHR1
cmUyRCgpOwogICAgIGlmIChzdXBwb3J0c0RlcHRoKQogICAgICAgICBjb250ZXh0LT5kZWxldGVU
ZXh0dXJlKGRlcHRoKTsKICAgICBpZiAoc3VwcG9ydHNEZXB0aFN0ZW5jaWwpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmgKaW5kZXggNGIzZGU3MDVlZDMz
ODdkOGEwY2U5M2RiZWQwNTMzOTQzMjVjYjQ4Ny4uZjY5ZGY5ZjYzMTY1YTFhM2NlZTMyZWIxOWM1
Y2NiYzVmODgwNTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xEcmF3QnVmZmVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJh
d0J1ZmZlcnMuaApAQCAtMzEsMTcgKzMxLDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgV2ViR0xEcmF3QnVmZmVycyBmaW5hbCA6IHB1YmxpYyBXZWJHTEV4dGVuc2lvbiB7CiBwdWJs
aWM6Ci0gICAgZXhwbGljaXQgV2ViR0xEcmF3QnVmZmVycyhXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlKik7CisgICAgZXhwbGljaXQgV2ViR0xEcmF3QnVmZmVycyhXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlJik7CiAgICAgdmlydHVhbCB+V2ViR0xEcmF3QnVmZmVycygpOwogCi0gICAgc3RhdGlj
IGJvb2wgc3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBzdGF0aWMg
Ym9vbCBzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogCiAgICAgRXh0ZW5z
aW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdCdWZmZXJz
V0VCR0woY29uc3QgVmVjdG9yPEdDM0RlbnVtPiYgYnVmZmVycyk7CiAKIHByaXZhdGU6Ci0gICAg
c3RhdGljIGJvb2wgc2F0aXNmaWVzV2ViR0xSZXF1aXJlbWVudHMoV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSopOworICAgIHN0YXRpYyBib29sIHNhdGlzZmllc1dlYkdMUmVxdWlyZW1lbnRzKFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmNwcAppbmRleCAw
OWE2Mjg4MDFjMDI3MmEwOTI3NmFkMDhhMzU3N2NjMDg0N2NmYmM0Li5jOWYwYTQyNTFjNzBlMDIz
NThkZjRkMjQxYzhjYmI0NzI0Mzc3OTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xFeHRlbnNpb24uY3BwCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotV2ViR0xFeHRlbnNpb246OldlYkdMRXh0ZW5zaW9uKFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UqIGNvbnRleHQpCitXZWJHTEV4dGVuc2lvbjo6V2ViR0xFeHRlbnNpb24oV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IG1fY29udGV4dChjb250ZXh0KQog
ewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmgKaW5kZXgg
ZjQ5MDc1Y2UyNDA2ZTM1NTIxNjg3OWY3YmFjNTBjODE4NGEzNzNhMC4uN2Y3MDliNDQ1ODAzN2Fl
YzcxZTcyYTRkNzI0ODMzZTkxOWU4M2RmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTEV4dGVuc2lvbi5oCkBAIC01NywxNiArNTcsMTYgQEAgcHVibGljOgogICAgICAgICBB
TkdMRUluc3RhbmNlZEFycmF5c05hbWUsCiAgICAgfTsKIAotICAgIHZvaWQgcmVmKCkgeyBtX2Nv
bnRleHQtPnJlZigpOyB9Ci0gICAgdm9pZCBkZXJlZigpIHsgbV9jb250ZXh0LT5kZXJlZigpOyB9
Ci0gICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29udGV4dCgpIHsgcmV0dXJuIG1fY29u
dGV4dDsgfQorICAgIHZvaWQgcmVmKCkgeyBtX2NvbnRleHQucmVmKCk7IH0KKyAgICB2b2lkIGRl
cmVmKCkgeyBtX2NvbnRleHQuZGVyZWYoKTsgfQorICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UmIGNvbnRleHQoKSB7IHJldHVybiBtX2NvbnRleHQ7IH0KIAogICAgIHZpcnR1YWwgfldlYkdM
RXh0ZW5zaW9uKCk7CiAgICAgdmlydHVhbCBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCA9
IDA7CiAKIHByb3RlY3RlZDoKLSAgICBXZWJHTEV4dGVuc2lvbihXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlKik7Ci0gICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogbV9jb250ZXh0OworICAg
IFdlYkdMRXh0ZW5zaW9uKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKKyAgICBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlJiBtX2NvbnRleHQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3Bw
CmluZGV4IDk2MWZiYWU4MWJmZDRiYmU2MTQxY2M1NGYxNWJjNjg3M2VjMGM4ODUuLjJiYTQxYjk2
Yzk0NzgzNTQzNjkyOGM2MmU1MDdmNGE4ZTUzMGY4ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwCkBAIC0yNjksMTYgKzI2OSwxNiBAQCBX
ZWJHTEZyYW1lYnVmZmVyOjpXZWJHTEF0dGFjaG1lbnQ6On5XZWJHTEF0dGFjaG1lbnQoKQogewog
fQogCi1SZWY8V2ViR0xGcmFtZWJ1ZmZlcj4gV2ViR0xGcmFtZWJ1ZmZlcjo6Y3JlYXRlKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UqIGN0eCkKK1JlZjxXZWJHTEZyYW1lYnVmZmVyPiBXZWJHTEZy
YW1lYnVmZmVyOjpjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY3R4KQogewogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdMRnJhbWVidWZmZXIoY3R4KSk7CiB9CiAKLVdlYkdM
RnJhbWVidWZmZXI6OldlYkdMRnJhbWVidWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSog
Y3R4KQorV2ViR0xGcmFtZWJ1ZmZlcjo6V2ViR0xGcmFtZWJ1ZmZlcihXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlJiBjdHgpCiAgICAgOiBXZWJHTENvbnRleHRPYmplY3QoY3R4KQogICAgICwgbV9o
YXNFdmVyQmVlbkJvdW5kKGZhbHNlKQogewotICAgIHNldE9iamVjdChjdHgtPmdyYXBoaWNzQ29u
dGV4dDNEKCktPmNyZWF0ZUZyYW1lYnVmZmVyKCkpOworICAgIHNldE9iamVjdChjdHguZ3JhcGhp
Y3NDb250ZXh0M0QoKS0+Y3JlYXRlRnJhbWVidWZmZXIoKSk7CiB9CiAKIFdlYkdMRnJhbWVidWZm
ZXI6On5XZWJHTEZyYW1lYnVmZmVyKCkKQEAgLTYyNyw3ICs2MjcsNyBAQCB2b2lkIFdlYkdMRnJh
bWVidWZmZXI6OmRyYXdCdWZmZXJzSWZOZWNlc3NhcnkoYm9vbCBmb3JjZSkKICAgICAgICAgfQog
ICAgIH0KICAgICBpZiAocmVzZXQpIHsKLSAgICAgICAgY29udGV4dCgpLT5ncmFwaGljc0NvbnRl
eHQzRCgpLT5nZXRFeHRlbnNpb25zKCktPmRyYXdCdWZmZXJzRVhUKAorICAgICAgICBjb250ZXh0
KCktPmdyYXBoaWNzQ29udGV4dDNEKCktPmdldEV4dGVuc2lvbnMoKS5kcmF3QnVmZmVyc0VYVCgK
ICAgICAgICAgICAgIG1fZmlsdGVyZWREcmF3QnVmZmVycy5zaXplKCksIG1fZmlsdGVyZWREcmF3
QnVmZmVycy5kYXRhKCkpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMRnJhbWVidWZmZXIuaAppbmRleCA1YWM0ZmI3ZTkxZTEyMGRlM2RkYjg5OWFkYzFjZjg5
ZDQxNzg5MzlkLi4yMGVkMjljYzAxNmQ4MWQ2YzQ3NjM3MWRlYjFlYWRjNTA3ZTgzZTg4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oCkBAIC01OCw3
ICs1OCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfldlYkdMRnJhbWVidWZmZXIoKTsKIAot
ICAgIHN0YXRpYyBSZWY8V2ViR0xGcmFtZWJ1ZmZlcj4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UqKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdMRnJhbWVidWZmZXI+IGNyZWF0ZShXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAKICAgICB2b2lkIHNldEF0dGFjaG1lbnRGb3JCb3Vu
ZEZyYW1lYnVmZmVyKEdDM0RlbnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVtIHRleFRhcmdldCwgV2Vi
R0xUZXh0dXJlKiwgR0MzRGludCBsZXZlbCk7CiAgICAgdm9pZCBzZXRBdHRhY2htZW50Rm9yQm91
bmRGcmFtZWJ1ZmZlcihHQzNEZW51bSBhdHRhY2htZW50LCBXZWJHTFJlbmRlcmJ1ZmZlciopOwpA
QCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAgR0MzRGVudW0gZ2V0RHJhd0J1ZmZlcihHQzNE
ZW51bSk7CiAKIHByb3RlY3RlZDoKLSAgICBXZWJHTEZyYW1lYnVmZmVyKFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UqKTsKKyAgICBXZWJHTEZyYW1lYnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UmKTsKIAogICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChHcmFwaGljc0NvbnRleHQzRCos
IFBsYXRmb3JtM0RPYmplY3QpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTExvc2VDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMTG9zZUNvbnRleHQuY3BwCmluZGV4IGM2NWFlOTA4ODg4NGJmYWU3MzA2MmMz
NTIxODI2ZTBjOTE1N2EzY2IuLjliY2IwNDliNDA5MDlmNTE1OWJjY2UyY2E1MjkwMmZiMDZkOTYy
NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTG9zZUNvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTG9zZUNvbnRleHQu
Y3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV2ViR0xMb3Nl
Q29udGV4dDo6V2ViR0xMb3NlQ29udGV4dChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjb250
ZXh0KQorV2ViR0xMb3NlQ29udGV4dDo6V2ViR0xMb3NlQ29udGV4dChXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKIH0K
QEAgLTQ5LDEyICs0OSwxMiBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBXZWJHTExv
c2VDb250ZXh0OjpnZXROYW1lKCkgY29uc3QKIAogdm9pZCBXZWJHTExvc2VDb250ZXh0Ojpsb3Nl
Q29udGV4dCgpCiB7Ci0gICAgbV9jb250ZXh0LT5mb3JjZUxvc3RDb250ZXh0KFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OlN5bnRoZXRpY0xvc3RDb250ZXh0KTsKKyAgICBtX2NvbnRleHQuZm9y
Y2VMb3N0Q29udGV4dChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpTeW50aGV0aWNMb3N0Q29u
dGV4dCk7CiB9CiAKIHZvaWQgV2ViR0xMb3NlQ29udGV4dDo6cmVzdG9yZUNvbnRleHQoKQogewot
ICAgIG1fY29udGV4dC0+Zm9yY2VSZXN0b3JlQ29udGV4dCgpOworICAgIG1fY29udGV4dC5mb3Jj
ZVJlc3RvcmVDb250ZXh0KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTG9zZUNvbnRleHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTG9zZUNvbnRleHQuaAppbmRleCA3MjkxYjczZTc3
OTYzMGZjNWU1Y2MyMzEzM2JhMjc4NjdlOWM4ZGRlLi42MzBkMjY0NWFkMmU5NTIzMmQwNzgyNjAy
OTZlOTMzMGMxNzIzZWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTExvc2VDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xM
b3NlQ29udGV4dC5oCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U7CiAKIGNsYXNzIFdlYkdMTG9zZUNvbnRleHQgZmluYWwgOiBwdWJsaWMgV2ViR0xFeHRl
bnNpb24gewogcHVibGljOgotICAgIGV4cGxpY2l0IFdlYkdMTG9zZUNvbnRleHQoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSopOworICAgIGV4cGxpY2l0IFdlYkdMTG9zZUNvbnRleHQoV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwgfldlYkdMTG9zZUNvbnRleHQoKTsK
IAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xPYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xPYmplY3QuY3BwCmluZGV4IGFjZGFiOTc5YjRlYjk1MWRi
NTI3YjYwZWY2ODdhNDRkNzViOGIzMWMuLjVkOTIwOTVmZmYxNzg2YjIyNWMyODVhOTcwM2M2Njk5
NjFiNTk3NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE9iamVjdC5jcHAK
QEAgLTM4LDcgKzM4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XZWJHTE9iamVjdDo6
V2ViR0xPYmplY3QoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopCitXZWJHTE9iamVjdDo6V2Vi
R0xPYmplY3QoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpCiAgICAgOiBtX29iamVjdCgwKQog
ICAgICwgbV9hdHRhY2htZW50Q291bnQoMCkKICAgICAsIG1fZGVsZXRlZChmYWxzZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMT2JqZWN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE9iamVjdC5oCmluZGV4IDljOTFmMWQzMTA2MDY3ZTA4
N2ZhMGJkOWE4Yzc2NGMwODlmOGM2NDMuLjdiMzIzZDZjOWY3YTc4YWY0YjJmNDNlNjUwM2Y5ZTAx
MjllY2M3NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMT2Jq
ZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xPYmplY3QuaApAQCAt
NTQsMTAgKzU0LDEwIEBAIHB1YmxpYzoKICAgICBib29sIGlzRGVsZXRlZCgpIHsgcmV0dXJuIG1f
ZGVsZXRlZDsgfQogCiAgICAgLy8gVHJ1ZSBpZiB0aGlzIG9iamVjdCBiZWxvbmdzIHRvIHRoZSBn
cm91cCBvciBjb250ZXh0LgotICAgIHZpcnR1YWwgYm9vbCB2YWxpZGF0ZShjb25zdCBXZWJHTENv
bnRleHRHcm91cCosIGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBib29sIHZhbGlkYXRlKGNvbnN0IFdlYkdMQ29udGV4dEdyb3VwKiwgY29u
c3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpIGNvbnN0ID0gMDsKIAogcHJvdGVjdGVkOgot
ICAgIFdlYkdMT2JqZWN0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBXZWJHTE9i
amVjdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAKICAgICAvLyBzZXRPYmplY3Qgc2hv
dWxkIGJlIG9ubHkgY2FsbGVkIG9uY2UgcmlnaHQgYWZ0ZXIgY3JlYXRpbmcgYSBXZWJHTE9iamVj
dC4KICAgICB2b2lkIHNldE9iamVjdChQbGF0Zm9ybTNET2JqZWN0KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uY3BwCmluZGV4IDFiNzUyZTZlMGZkYjRiYTYzYzkz
YmMyZTc1MzA2MjU2NWMyZDRjZDcuLjc3YWZlOTRjNDU4NWExYmIzZTE3NzZjODkxNTNiODRiYjg2
YzE3MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3Jh
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmNwcApA
QCAtMzQsMTggKzM0LDE4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFdlYkdMUHJv
Z3JhbT4gV2ViR0xQcm9ncmFtOjpjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY3R4
KQorUmVmPFdlYkdMUHJvZ3JhbT4gV2ViR0xQcm9ncmFtOjpjcmVhdGUoV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSYgY3R4KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdMUHJvZ3Jh
bShjdHgpKTsKIH0KIAotV2ViR0xQcm9ncmFtOjpXZWJHTFByb2dyYW0oV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSogY3R4KQorV2ViR0xQcm9ncmFtOjpXZWJHTFByb2dyYW0oV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSYgY3R4KQogICAgIDogV2ViR0xTaGFyZWRPYmplY3QoY3R4KQogICAgICwg
bV9saW5rU3RhdHVzKGZhbHNlKQogICAgICwgbV9saW5rQ291bnQoMCkKICAgICAsIG1faW5mb1Zh
bGlkKHRydWUpCiB7Ci0gICAgc2V0T2JqZWN0KGN0eC0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+Y3Jl
YXRlUHJvZ3JhbSgpKTsKKyAgICBzZXRPYmplY3QoY3R4LmdyYXBoaWNzQ29udGV4dDNEKCktPmNy
ZWF0ZVByb2dyYW0oKSk7CiB9CiAKIFdlYkdMUHJvZ3JhbTo6fldlYkdMUHJvZ3JhbSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5oCmluZGV4IGU0YjEwNjkzMjVhYjM5
M2NiMmJhZTUyNTA5Zjc0OWMzODAyMzk0ZTguLjcxN2NjZTEzOGM0MjhjNTdjZGRiN2M1NWMxNDY4
NWZhNDYyMjMyZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UHJvZ3JhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5o
CkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIFdlYkdMUHJvZ3JhbSBmaW5hbCA6IHB1YmxpYyBXZWJH
TFNoYXJlZE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViR0xQcm9ncmFtKCk7CiAK
LSAgICBzdGF0aWMgUmVmPFdlYkdMUHJvZ3JhbT4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UqKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdMUHJvZ3JhbT4gY3JlYXRlKFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UmKTsKIAogICAgIHVuc2lnbmVkIG51bUFjdGl2ZUF0dHJpYkxvY2F0aW9u
cygpOwogICAgIEdDM0RpbnQgZ2V0QWN0aXZlQXR0cmliTG9jYXRpb24oR0MzRHVpbnQgaW5kZXgp
OwpAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBkZXRhY2hTaGFkZXIoV2ViR0xT
aGFkZXIqKTsKIAogcHJvdGVjdGVkOgotICAgIFdlYkdMUHJvZ3JhbShXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlKik7CisgICAgV2ViR0xQcm9ncmFtKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Um
KTsKIAogICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChHcmFwaGljc0NvbnRleHQzRCosIFBsYXRm
b3JtM0RPYmplY3QpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFF1ZXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UXVlcnkuY3BwCmluZGV4IGM3Zjk0MzQ5YjkwODNlZTA4ZjdlYmViYWYwZDYzMDFiYzhiYTJiNDEu
LjhjYTUyNTExNTczNTAxNTQ1YWM1NWY1ZTk0MWVhYTVhODA0M2JlYWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUXVlcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUXVlcnkuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAKLVJlZjxXZWJHTFF1ZXJ5PiBXZWJHTFF1ZXJ5OjpjcmVhdGUo
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY3R4KQorUmVmPFdlYkdMUXVlcnk+IFdlYkdMUXVl
cnk6OmNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjdHgpCiB7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2ViR0xRdWVyeShjdHgpKTsKIH0KQEAgLTQzLDcgKzQzLDcgQEAgV2Vi
R0xRdWVyeTo6fldlYkdMUXVlcnkoKQogICAgIGRlbGV0ZU9iamVjdCgwKTsKIH0KIAotV2ViR0xR
dWVyeTo6V2ViR0xRdWVyeShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjdHgpCitXZWJHTFF1
ZXJ5OjpXZWJHTFF1ZXJ5KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGN0eCkKICAgICA6IFdl
YkdMU2hhcmVkT2JqZWN0KGN0eCkKIHsKICAgICAvLyBGSVhNRTogQ2FsbCBjcmVhdGVRdWVyeSBm
cm9tIEdyYXBoaWNzQ29udGV4dDNELgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xRdWVyeS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xRdWVy
eS5oCmluZGV4IGNlOTg5NWI4OGE5NjI3ZTE4Zjg2YmM2YzRiYzIxYTJlMjhlZTNmNGYuLjQ2ZGI1
OTJhODVhZjYyZmU4MGY3MWYzNzNiZTU5MTZiY2I5YzE4NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUXVlcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFF1ZXJ5LmgKQEAgLTMzLDEwICszMywxMCBAQCBjbGFzcyBXZWJHTFF1ZXJ5
IGZpbmFsIDogcHVibGljIFdlYkdMU2hhcmVkT2JqZWN0IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5XZWJHTFF1ZXJ5KCk7CiAKLSAgICBzdGF0aWMgUmVmPFdlYkdMUXVlcnk+IGNyZWF0ZShXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAgc3RhdGljIFJlZjxXZWJHTFF1ZXJ5PiBjcmVh
dGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgV2ViR0xR
dWVyeShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAgV2ViR0xRdWVyeShXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlJik7CiAKICAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoR3JhcGhp
Y3NDb250ZXh0M0QqLCBQbGF0Zm9ybTNET2JqZWN0KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuY3BwCmluZGV4IDFkNzk0Mjkw
ZDZiYTIyZDFjODQ1NjAxNWY0YjAwMjVkOWVjNzRhMTQuLjY5OTZkOWIxZGE5MzBmM2EyYmFiYTIz
MGU0OTJjMGQ3ODRhN2NkMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyYnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmJ1ZmZlci5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1SZWY8V2ViR0xSZW5kZXJidWZmZXI+IFdlYkdMUmVuZGVyYnVmZmVyOjpjcmVhdGUo
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY3R4KQorUmVmPFdlYkdMUmVuZGVyYnVmZmVyPiBX
ZWJHTFJlbmRlcmJ1ZmZlcjo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGN0eCkK
IHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHTFJlbmRlcmJ1ZmZlcihjdHgpKTsKIH0K
QEAgLTQ0LDcgKzQ0LDcgQEAgV2ViR0xSZW5kZXJidWZmZXI6On5XZWJHTFJlbmRlcmJ1ZmZlcigp
CiAgICAgZGVsZXRlT2JqZWN0KDApOwogfQogCi1XZWJHTFJlbmRlcmJ1ZmZlcjo6V2ViR0xSZW5k
ZXJidWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY3R4KQorV2ViR0xSZW5kZXJidWZm
ZXI6OldlYkdMUmVuZGVyYnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGN0eCkKICAg
ICA6IFdlYkdMU2hhcmVkT2JqZWN0KGN0eCkKICAgICAsIG1faW50ZXJuYWxGb3JtYXQoR3JhcGhp
Y3NDb250ZXh0M0Q6OlJHQkE0KQogICAgICwgbV9pbml0aWFsaXplZChmYWxzZSkKQEAgLTUzLDcg
KzUzLDcgQEAgV2ViR0xSZW5kZXJidWZmZXI6OldlYkdMUmVuZGVyYnVmZmVyKFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UqIGN0eCkKICAgICAsIG1faXNWYWxpZCh0cnVlKQogICAgICwgbV9oYXNF
dmVyQmVlbkJvdW5kKGZhbHNlKQogewotICAgIHNldE9iamVjdChjdHgtPmdyYXBoaWNzQ29udGV4
dDNEKCktPmNyZWF0ZVJlbmRlcmJ1ZmZlcigpKTsKKyAgICBzZXRPYmplY3QoY3R4LmdyYXBoaWNz
Q29udGV4dDNEKCktPmNyZWF0ZVJlbmRlcmJ1ZmZlcigpKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRl
cmJ1ZmZlcjo6ZGVsZXRlT2JqZWN0SW1wbChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dDNkLCBQ
bGF0Zm9ybTNET2JqZWN0IG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmJ1ZmZlci5oCmluZGV4IDA2YmIzMDI1ZDZkNzNmZThhNGEzY2Y4ZmI5MDYyYzYy
NzJmYTJiMjYuLmNmNmFkNmY2NTk2NzlkNTc3ZTczNDM2MmYzZTNiNTNjMjQ0ZDJkZGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuaApAQCAtMzMs
NyArMzMsNyBAQCBjbGFzcyBXZWJHTFJlbmRlcmJ1ZmZlciBmaW5hbCA6IHB1YmxpYyBXZWJHTFNo
YXJlZE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViR0xSZW5kZXJidWZmZXIoKTsK
IAotICAgIHN0YXRpYyBSZWY8V2ViR0xSZW5kZXJidWZmZXI+IGNyZWF0ZShXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlKik7CisgICAgc3RhdGljIFJlZjxXZWJHTFJlbmRlcmJ1ZmZlcj4gY3JlYXRl
KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKIAogICAgIHZvaWQgc2V0SW50ZXJuYWxGb3Jt
YXQoR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQpCiAgICAgewpAQCAtNjEsNyArNjEsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRIYXNFdmVyQmVlbkJvdW5kKCkgeyBtX2hhc0V2ZXJCZWVuQm91bmQg
PSB0cnVlOyB9CiAKIHByb3RlY3RlZDoKLSAgICBXZWJHTFJlbmRlcmJ1ZmZlcihXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlKik7CisgICAgV2ViR0xSZW5kZXJidWZmZXIoV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSYpOwogCiAgICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKEdyYXBoaWNzQ29udGV4
dDNEKiwgUGxhdGZvcm0zRE9iamVjdCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IDQ5YzhjZDE5
NTliNTk3ZjhkNDg4Y2Y4OWI1NjkwOWViN2JhNWU5YjkuLjUzNTNiYmQ2ZDVkNGFhOGQ3NjIwZmZi
ZWExNTUyMDZjMjA5NzJhYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtNzcsNyArNzcsNyBAQCBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OldlYkdMUmVuZGVyaW5nQ29udGV4dChIVE1MQ2FudmFzRWxlbWVudCYgcGFz
c2VkQ2FudmFzLCBQYQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6aW5pdGlhbGl6ZVZl
cnRleEFycmF5T2JqZWN0cygpCiB7Ci0gICAgbV9kZWZhdWx0VmVydGV4QXJyYXlPYmplY3QgPSBX
ZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOjpjcmVhdGUodGhpcywgV2ViR0xWZXJ0ZXhBcnJheU9i
amVjdE9FUzo6VkFPVHlwZURlZmF1bHQpOworICAgIG1fZGVmYXVsdFZlcnRleEFycmF5T2JqZWN0
ID0gV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6Y3JlYXRlKCp0aGlzLCBXZWJHTFZlcnRleEFy
cmF5T2JqZWN0T0VTOjpWQU9UeXBlRGVmYXVsdCk7CiAgICAgYWRkQ29udGV4dE9iamVjdChtX2Rl
ZmF1bHRWZXJ0ZXhBcnJheU9iamVjdC5nZXQoKSk7CiAgICAgbV9ib3VuZFZlcnRleEFycmF5T2Jq
ZWN0ID0gbV9kZWZhdWx0VmVydGV4QXJyYXlPYmplY3Q7CiAgICAgaWYgKCFpc0dMRVMyQ29tcGxp
YW50KCkpCkBAIC05MCwxNTUgKzkwLDE1NSBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpnZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAKICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAi
RVhUX2JsZW5kX21pbm1heCIpCi0gICAgICAgICYmIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LT5zdXBwb3J0cygiR0xfRVhUX2JsZW5kX21pbm1heCIpKSB7CisgICAgICAgICYmIG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9FWFRfYmxlbmRfbWlubWF4IikpIHsKICAg
ICAgICAgaWYgKCFtX2V4dEJsZW5kTWluTWF4KSB7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfRVhUX2JsZW5kX21pbm1heCIpOwotICAg
ICAgICAgICAgbV9leHRCbGVuZE1pbk1heCA9IHN0ZDo6bWFrZV91bmlxdWU8RVhUQmxlbmRNaW5N
YXg+KHRoaXMpOworICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJl
RW5hYmxlZCgiR0xfRVhUX2JsZW5kX21pbm1heCIpOworICAgICAgICAgICAgbV9leHRCbGVuZE1p
bk1heCA9IHN0ZDo6bWFrZV91bmlxdWU8RVhUQmxlbmRNaW5NYXg+KCp0aGlzKTsKICAgICAgICAg
fQogICAgICAgICByZXR1cm4gbV9leHRCbGVuZE1pbk1heC5nZXQoKTsKICAgICB9CiAgICAgaWYg
KGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIkVYVF9zUkdCIikKLSAgICAgICAgJiYgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9FWFRfc1JHQiIpKSB7CisgICAg
ICAgICYmIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9FWFRfc1JHQiIp
KSB7CiAgICAgICAgIGlmICghbV9leHRzUkdCKSB7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3NSR0IiKTsKLSAgICAgICAgICAg
IG1fZXh0c1JHQiA9IHN0ZDo6bWFrZV91bmlxdWU8RVhUc1JHQj4odGhpcyk7CisgICAgICAgICAg
ICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9FWFRfc1JHQiIp
OworICAgICAgICAgICAgbV9leHRzUkdCID0gc3RkOjptYWtlX3VuaXF1ZTxFWFRzUkdCPigqdGhp
cyk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1fZXh0c1JHQi5nZXQoKTsKICAgICB9CiAg
ICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIkVYVF9mcmFnX2RlcHRoIikKLSAg
ICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9FWFRfZnJh
Z19kZXB0aCIpKSB7CisgICAgICAgICYmIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBv
cnRzKCJHTF9FWFRfZnJhZ19kZXB0aCIpKSB7CiAgICAgICAgIGlmICghbV9leHRGcmFnRGVwdGgp
IHsKLSAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVk
KCJHTF9FWFRfZnJhZ19kZXB0aCIpOwotICAgICAgICAgICAgbV9leHRGcmFnRGVwdGggPSBzdGQ6
Om1ha2VfdW5pcXVlPEVYVEZyYWdEZXB0aD4odGhpcyk7CisgICAgICAgICAgICBtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9FWFRfZnJhZ19kZXB0aCIpOworICAg
ICAgICAgICAgbV9leHRGcmFnRGVwdGggPSBzdGQ6Om1ha2VfdW5pcXVlPEVYVEZyYWdEZXB0aD4o
KnRoaXMpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX2V4dEZyYWdEZXB0aC5nZXQoKTsK
ICAgICB9CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIkVYVF9zaGFkZXJf
dGV4dHVyZV9sb2QiKQotICAgICAgICAmJiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1
cHBvcnRzKCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIikgfHwgbV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCktPnN1cHBvcnRzKCJHTF9BUkJfc2hhZGVyX3RleHR1cmVfbG9kIikpKSB7CisgICAg
ICAgICYmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfRVhUX3NoYWRl
cl90ZXh0dXJlX2xvZCIpIHx8IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJH
TF9BUkJfc2hhZGVyX3RleHR1cmVfbG9kIikpKSB7CiAgICAgICAgIGlmICghbV9leHRTaGFkZXJU
ZXh0dXJlTE9EKSB7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5z
dXJlRW5hYmxlZCgiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpOwotICAgICAgICAgICAgbV9l
eHRTaGFkZXJUZXh0dXJlTE9EID0gc3RkOjptYWtlX3VuaXF1ZTxFWFRTaGFkZXJUZXh0dXJlTE9E
Pih0aGlzKTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVu
YWJsZWQoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKTsKKyAgICAgICAgICAgIG1fZXh0U2hh
ZGVyVGV4dHVyZUxPRCA9IHN0ZDo6bWFrZV91bmlxdWU8RVhUU2hhZGVyVGV4dHVyZUxPRD4oKnRo
aXMpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX2V4dFNoYWRlclRleHR1cmVMT0QuZ2V0
KCk7CiAgICAgfQogICAgIGlmICgoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiRVhUX3Rl
eHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIikgfHwgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1l
LCAiV0VCS0lUX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpKQotICAgICAgICAmJiBt
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRl
cl9hbmlzb3Ryb3BpYyIpKSB7CisgICAgICAgICYmIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKSkgewogICAgICAg
ICBpZiAoIW1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljKSB7Ci0gICAgICAgICAgICBtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfZmls
dGVyX2FuaXNvdHJvcGljIik7Ci0gICAgICAgICAgICBtX2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ry
b3BpYyA9IHN0ZDo6bWFrZV91bmlxdWU8RVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljPih0aGlz
KTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQo
IkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpOworICAgICAgICAgICAgbV9leHRU
ZXh0dXJlRmlsdGVyQW5pc290cm9waWMgPSBzdGQ6Om1ha2VfdW5pcXVlPEVYVFRleHR1cmVGaWx0
ZXJBbmlzb3Ryb3BpYz4oKnRoaXMpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX2V4dFRl
eHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5nZXQoKTsKICAgICB9CiAgICAgaWYgKGVxdWFsSWdub3Jp
bmdBU0NJSUNhc2UobmFtZSwgIk9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpCi0gICAgICAgICYm
IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3N0YW5kYXJkX2Rl
cml2YXRpdmVzIikpIHsKKyAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3Vw
cG9ydHMoIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpKSB7CiAgICAgICAgIGlmICghbV9v
ZXNTdGFuZGFyZERlcml2YXRpdmVzKSB7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIik7Ci0g
ICAgICAgICAgICBtX29lc1N0YW5kYXJkRGVyaXZhdGl2ZXMgPSBzdGQ6Om1ha2VfdW5pcXVlPE9F
U1N0YW5kYXJkRGVyaXZhdGl2ZXM+KHRoaXMpOworICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIik7
CisgICAgICAgICAgICBtX29lc1N0YW5kYXJkRGVyaXZhdGl2ZXMgPSBzdGQ6Om1ha2VfdW5pcXVl
PE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXM+KCp0aGlzKTsKICAgICAgICAgfQogICAgICAgICByZXR1
cm4gbV9vZXNTdGFuZGFyZERlcml2YXRpdmVzLmdldCgpOwogICAgIH0KICAgICBpZiAoZXF1YWxJ
Z25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiT0VTX3RleHR1cmVfZmxvYXQiKQotICAgICAgICAmJiBt
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2Zsb2F0
IikpIHsKKyAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdM
X09FU190ZXh0dXJlX2Zsb2F0IikpIHsKICAgICAgICAgaWYgKCFtX29lc1RleHR1cmVGbG9hdCkg
ewotICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQo
IkdMX09FU190ZXh0dXJlX2Zsb2F0Iik7Ci0gICAgICAgICAgICBtX29lc1RleHR1cmVGbG9hdCA9
IHN0ZDo6bWFrZV91bmlxdWU8T0VTVGV4dHVyZUZsb2F0Pih0aGlzKTsKKyAgICAgICAgICAgIG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX09FU190ZXh0dXJlX2Zs
b2F0Iik7CisgICAgICAgICAgICBtX29lc1RleHR1cmVGbG9hdCA9IHN0ZDo6bWFrZV91bmlxdWU8
T0VTVGV4dHVyZUZsb2F0PigqdGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1fb2Vz
VGV4dHVyZUZsb2F0LmdldCgpOwogICAgIH0KICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2Fz
ZShuYW1lLCAiT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIikKLSAgICAgICAgJiYgbV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIi
KSkgeworICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xf
T0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIikpIHsKICAgICAgICAgaWYgKCFtX29lc1RleHR1cmVG
bG9hdExpbmVhcikgewotICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVu
c3VyZUVuYWJsZWQoIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIpOwotICAgICAgICAgICAg
bV9vZXNUZXh0dXJlRmxvYXRMaW5lYXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9FU1RleHR1cmVGbG9h
dExpbmVhcj4odGhpcyk7CisgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5l
bnN1cmVFbmFibGVkKCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiKTsKKyAgICAgICAgICAg
IG1fb2VzVGV4dHVyZUZsb2F0TGluZWFyID0gc3RkOjptYWtlX3VuaXF1ZTxPRVNUZXh0dXJlRmxv
YXRMaW5lYXI+KCp0aGlzKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbV9vZXNUZXh0dXJl
RmxvYXRMaW5lYXIuZ2V0KCk7CiAgICAgfQogICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNl
KG5hbWUsICJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IikKLSAgICAgICAgJiYgbV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IikpIHsK
KyAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX09FU190
ZXh0dXJlX2hhbGZfZmxvYXQiKSkgewogICAgICAgICBpZiAoIW1fb2VzVGV4dHVyZUhhbGZGbG9h
dCkgewotICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJs
ZWQoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQiKTsKLSAgICAgICAgICAgIG1fb2VzVGV4dHVy
ZUhhbGZGbG9hdCA9IHN0ZDo6bWFrZV91bmlxdWU8T0VTVGV4dHVyZUhhbGZGbG9hdD4odGhpcyk7
CisgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJH
TF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0Iik7CisgICAgICAgICAgICBtX29lc1RleHR1cmVIYWxm
RmxvYXQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9FU1RleHR1cmVIYWxmRmxvYXQ+KCp0aGlzKTsKICAg
ICAgICAgfQogICAgICAgICByZXR1cm4gbV9vZXNUZXh0dXJlSGFsZkZsb2F0LmdldCgpOwogICAg
IH0KICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiT0VTX3RleHR1cmVfaGFs
Zl9mbG9hdF9saW5lYXIiKQotICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+
c3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIikpIHsKKyAgICAgICAg
JiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2hh
bGZfZmxvYXRfbGluZWFyIikpIHsKICAgICAgICAgaWYgKCFtX29lc1RleHR1cmVIYWxmRmxvYXRM
aW5lYXIpIHsKLSAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVF
bmFibGVkKCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpOwotICAgICAgICAgICAg
bV9vZXNUZXh0dXJlSGFsZkZsb2F0TGluZWFyID0gc3RkOjptYWtlX3VuaXF1ZTxPRVNUZXh0dXJl
SGFsZkZsb2F0TGluZWFyPih0aGlzKTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIik7
CisgICAgICAgICAgICBtX29lc1RleHR1cmVIYWxmRmxvYXRMaW5lYXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPE9FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXI+KCp0aGlzKTsKICAgICAgICAgfQogICAgICAg
ICByZXR1cm4gbV9vZXNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLmdldCgpOwogICAgIH0KICAgICBp
ZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiT0VTX3ZlcnRleF9hcnJheV9vYmplY3Qi
KQotICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09F
U192ZXJ0ZXhfYXJyYXlfb2JqZWN0IikpIHsKKyAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkuc3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IikpIHsKICAgICAg
ICAgaWYgKCFtX29lc1ZlcnRleEFycmF5T2JqZWN0KSB7Ci0gICAgICAgICAgICBtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmpl
Y3QiKTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJs
ZWQoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7CiAgICAgICAgICAgICBtX29lc1ZlcnRl
eEFycmF5T2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxPRVNWZXJ0ZXhBcnJheU9iamVjdD4oKnRo
aXMpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX29lc1ZlcnRleEFycmF5T2JqZWN0Lmdl
dCgpOwogICAgIH0KICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiT0VTX2Vs
ZW1lbnRfaW5kZXhfdWludCIpCi0gICAgICAgICYmIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LT5zdXBwb3J0cygiR0xfT0VTX2VsZW1lbnRfaW5kZXhfdWludCIpKSB7CisgICAgICAgICYmIG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfZWxlbWVudF9pbmRleF91
aW50IikpIHsKICAgICAgICAgaWYgKCFtX29lc0VsZW1lbnRJbmRleFVpbnQpIHsKLSAgICAgICAg
ICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKCJHTF9PRVNfZWxl
bWVudF9pbmRleF91aW50Iik7Ci0gICAgICAgICAgICBtX29lc0VsZW1lbnRJbmRleFVpbnQgPSBz
dGQ6Om1ha2VfdW5pcXVlPE9FU0VsZW1lbnRJbmRleFVpbnQ+KHRoaXMpOworICAgICAgICAgICAg
bV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfT0VTX2VsZW1lbnRf
aW5kZXhfdWludCIpOworICAgICAgICAgICAgbV9vZXNFbGVtZW50SW5kZXhVaW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxPRVNFbGVtZW50SW5kZXhVaW50PigqdGhpcyk7CiAgICAgICAgIH0KICAgICAg
ICAgcmV0dXJuIG1fb2VzRWxlbWVudEluZGV4VWludC5nZXQoKTsKICAgICB9CiAgICAgaWYgKGVx
dWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIldFQkdMX2xvc2VfY29udGV4dCIpKSB7CiAgICAg
ICAgIGlmICghbV93ZWJnbExvc2VDb250ZXh0KQotICAgICAgICAgICAgbV93ZWJnbExvc2VDb250
ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTExvc2VDb250ZXh0Pih0aGlzKTsKKyAgICAgICAg
ICAgIG1fd2ViZ2xMb3NlQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xMb3NlQ29udGV4
dD4oKnRoaXMpOwogICAgICAgICByZXR1cm4gbV93ZWJnbExvc2VDb250ZXh0LmdldCgpOwogICAg
IH0KICAgICBpZiAoKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIldFQktJVF9XRUJHTF9j
b21wcmVzc2VkX3RleHR1cmVfYXRjIikpCi0gICAgICAgICYmIFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVBVEM6OnN1cHBvcnRlZCh0aGlzKSkgeworICAgICAgICAmJiBXZWJHTENvbXByZXNzZWRUZXh0
dXJlQVRDOjpzdXBwb3J0ZWQoKnRoaXMpKSB7CiAgICAgICAgIGlmICghbV93ZWJnbENvbXByZXNz
ZWRUZXh0dXJlQVRDKQotICAgICAgICAgICAgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlQVRDID0g
c3RkOjptYWtlX3VuaXF1ZTxXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDPih0aGlzKTsKKyAgICAg
ICAgICAgIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZUFUQyA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
R0xDb21wcmVzc2VkVGV4dHVyZUFUQz4oKnRoaXMpOwogICAgICAgICByZXR1cm4gbV93ZWJnbENv
bXByZXNzZWRUZXh0dXJlQVRDLmdldCgpOwogICAgIH0KICAgICBpZiAoKGVxdWFsSWdub3JpbmdB
U0NJSUNhc2UobmFtZSwgIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMiKSkK
LSAgICAgICAgJiYgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQodGhpcykp
IHsKKyAgICAgICAgJiYgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKnRo
aXMpKSB7CiAgICAgICAgIGlmICghbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUFZSVEMpCi0gICAg
ICAgICAgICBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVQVlJUQyA9IHN0ZDo6bWFrZV91bmlxdWU8
V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDPih0aGlzKTsKKyAgICAgICAgICAgIG1fd2ViZ2xD
b21wcmVzc2VkVGV4dHVyZVBWUlRDID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTENvbXByZXNzZWRU
ZXh0dXJlUFZSVEM+KCp0aGlzKTsKICAgICAgICAgcmV0dXJuIG1fd2ViZ2xDb21wcmVzc2VkVGV4
dHVyZVBWUlRDLmdldCgpOwogICAgIH0KICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShu
YW1lLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiKQotICAgICAgICAmJiBXZWJHTENv
bXByZXNzZWRUZXh0dXJlUzNUQzo6c3VwcG9ydGVkKHRoaXMpKSB7CisgICAgICAgICYmIFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQoKnRoaXMpKSB7CiAgICAgICAgIGlmICgh
bV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUzNUQykKLSAgICAgICAgICAgIG1fd2ViZ2xDb21wcmVz
c2VkVGV4dHVyZVMzVEMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMQ29tcHJlc3NlZFRleHR1cmVT
M1RDPih0aGlzKTsKKyAgICAgICAgICAgIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVMzVEMgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDPigqdGhpcyk7CiAgICAg
ICAgIHJldHVybiBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVTM1RDLmdldCgpOwogICAgIH0KICAg
ICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiV0VCR0xfZGVwdGhfdGV4dHVyZSIp
Ci0gICAgICAgICYmIFdlYkdMRGVwdGhUZXh0dXJlOjpzdXBwb3J0ZWQoZ3JhcGhpY3NDb250ZXh0
M0QoKSkpIHsKKyAgICAgICAgJiYgV2ViR0xEZXB0aFRleHR1cmU6OnN1cHBvcnRlZCgqZ3JhcGhp
Y3NDb250ZXh0M0QoKSkpIHsKICAgICAgICAgaWYgKCFtX3dlYmdsRGVwdGhUZXh0dXJlKSB7Ci0g
ICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xf
Q0hST01JVU1fZGVwdGhfdGV4dHVyZSIpOwotICAgICAgICAgICAgbV93ZWJnbERlcHRoVGV4dHVy
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xEZXB0aFRleHR1cmU+KHRoaXMpOworICAgICAgICAg
ICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfQ0hST01JVU1f
ZGVwdGhfdGV4dHVyZSIpOworICAgICAgICAgICAgbV93ZWJnbERlcHRoVGV4dHVyZSA9IHN0ZDo6
bWFrZV91bmlxdWU8V2ViR0xEZXB0aFRleHR1cmU+KCp0aGlzKTsKICAgICAgICAgfQogICAgICAg
ICByZXR1cm4gbV93ZWJnbERlcHRoVGV4dHVyZS5nZXQoKTsKICAgICB9CiAgICAgaWYgKGVxdWFs
SWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIldFQkdMX2RyYXdfYnVmZmVycyIpICYmIHN1cHBvcnRz
RHJhd0J1ZmZlcnMoKSkgewogICAgICAgICBpZiAoIW1fd2ViZ2xEcmF3QnVmZmVycykgewotICAg
ICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX0VY
VF9kcmF3X2J1ZmZlcnMiKTsKLSAgICAgICAgICAgIG1fd2ViZ2xEcmF3QnVmZmVycyA9IHN0ZDo6
bWFrZV91bmlxdWU8V2ViR0xEcmF3QnVmZmVycz4odGhpcyk7CisgICAgICAgICAgICBtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9FWFRfZHJhd19idWZmZXJzIik7
CisgICAgICAgICAgICBtX3dlYmdsRHJhd0J1ZmZlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdM
RHJhd0J1ZmZlcnM+KCp0aGlzKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbV93ZWJnbERy
YXdCdWZmZXJzLmdldCgpOwogICAgIH0KLSAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShu
YW1lLCAiQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpICYmIEFOR0xFSW5zdGFuY2VkQXJyYXlzOjpz
dXBwb3J0ZWQodGhpcykpIHsKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAi
QU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpICYmIEFOR0xFSW5zdGFuY2VkQXJyYXlzOjpzdXBwb3J0
ZWQoKnRoaXMpKSB7CiAgICAgICAgIGlmICghbV9hbmdsZUluc3RhbmNlZEFycmF5cykgewotICAg
ICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX0FO
R0xFX2luc3RhbmNlZF9hcnJheXMiKTsKLSAgICAgICAgICAgIG1fYW5nbGVJbnN0YW5jZWRBcnJh
eXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEFOR0xFSW5zdGFuY2VkQXJyYXlzPih0aGlzKTsKKyAgICAg
ICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0FOR0xF
X2luc3RhbmNlZF9hcnJheXMiKTsKKyAgICAgICAgICAgIG1fYW5nbGVJbnN0YW5jZWRBcnJheXMg
PSBzdGQ6Om1ha2VfdW5pcXVlPEFOR0xFSW5zdGFuY2VkQXJyYXlzPigqdGhpcyk7CiAgICAgICAg
IH0KICAgICAgICAgcmV0dXJuIG1fYW5nbGVJbnN0YW5jZWRBcnJheXMuZ2V0KCk7CiAgICAgfQog
ICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJXRUJHTF9kZWJ1Z19yZW5kZXJl
cl9pbmZvIikpIHsKICAgICAgICAgaWYgKCFtX3dlYmdsRGVidWdSZW5kZXJlckluZm8pCi0gICAg
ICAgICAgICBtX3dlYmdsRGVidWdSZW5kZXJlckluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdM
RGVidWdSZW5kZXJlckluZm8+KHRoaXMpOworICAgICAgICAgICAgbV93ZWJnbERlYnVnUmVuZGVy
ZXJJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTERlYnVnUmVuZGVyZXJJbmZvPigqdGhpcyk7
CiAgICAgICAgIHJldHVybiBtX3dlYmdsRGVidWdSZW5kZXJlckluZm8uZ2V0KCk7CiAgICAgfQog
ICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJXRUJHTF9kZWJ1Z19zaGFkZXJz
IikKLSAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9B
TkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UiKSkgeworICAgICAgICAmJiBtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291
cmNlIikpIHsKICAgICAgICAgaWYgKCFtX3dlYmdsRGVidWdTaGFkZXJzKQotICAgICAgICAgICAg
bV93ZWJnbERlYnVnU2hhZGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xEZWJ1Z1NoYWRlcnM+
KHRoaXMpOworICAgICAgICAgICAgbV93ZWJnbERlYnVnU2hhZGVycyA9IHN0ZDo6bWFrZV91bmlx
dWU8V2ViR0xEZWJ1Z1NoYWRlcnM+KCp0aGlzKTsKICAgICAgICAgcmV0dXJuIG1fd2ViZ2xEZWJ1
Z1NoYWRlcnMuZ2V0KCk7CiAgICAgfQogCkBAIC0yNTIsNDQgKzI1Miw0NCBAQCBWZWN0b3I8U3Ry
aW5nPiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKQogICAg
IGlmIChtX2lzUGVuZGluZ1BvbGljeVJlc29sdXRpb24pCiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgCi0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xf
RVhUX2JsZW5kX21pbm1heCIpKQorICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5z
dXBwb3J0cygiR0xfRVhUX2JsZW5kX21pbm1heCIpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJF
WFRfYmxlbmRfbWlubWF4Iik7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5z
dXBwb3J0cygiR0xfRVhUX3NSR0IiKSkKKyAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkuc3VwcG9ydHMoIkdMX0VYVF9zUkdCIikpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIkVYVF9z
UkdCIik7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xf
RVhUX2ZyYWdfZGVwdGgiKSkKKyAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3Vw
cG9ydHMoIkdMX0VYVF9mcmFnX2RlcHRoIikpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIkVYVF9m
cmFnX2RlcHRoIik7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0
cygiR0xfT0VTX3RleHR1cmVfZmxvYXQiKSkKKyAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNp
b25zKCkuc3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2Zsb2F0IikpCiAgICAgICAgIHJlc3VsdC5h
cHBlbmQoIk9FU190ZXh0dXJlX2Zsb2F0Iik7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIikpCisgICAgaWYg
KG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9mbG9h
dF9saW5lYXIiKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiT0VTX3RleHR1cmVfZmxvYXRfbGlu
ZWFyIik7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xf
T0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpKQorICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpKQogICAgICAgICByZXN1
bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0Iik7Ci0gICAgaWYgKG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5l
YXIiKSkKKyAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX09F
U190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIikpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIk9F
U190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIik7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIikpCisgICAg
aWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfc3RhbmRhcmRf
ZGVyaXZhdGl2ZXMiKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiT0VTX3N0YW5kYXJkX2Rlcml2
YXRpdmVzIik7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygi
R0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpIHx8IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LT5zdXBwb3J0cygiR0xfQVJCX3NoYWRlcl90ZXh0dXJlX2xvZCIpKQorICAgIGlmIChtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIp
IHx8IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9BUkJfc2hhZGVyX3Rl
eHR1cmVfbG9kIikpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIkVYVF9zaGFkZXJfdGV4dHVyZV9s
b2QiKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9F
WFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKSkKKyAgICBpZiAobV9jb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIp
KQogICAgICAgICByZXN1bHQuYXBwZW5kKCJFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMi
KTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNf
dmVydGV4X2FycmF5X29iamVjdCIpKQorICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5zdXBwb3J0cygiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKSkKICAgICAgICAgcmVzdWx0
LmFwcGVuZCgiT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKTsKLSAgICBpZiAobV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfZWxlbWVudF9pbmRleF91aW50IikpCisg
ICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfZWxlbWVu
dF9pbmRleF91aW50IikpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU19lbGVtZW50X2luZGV4
X3VpbnQiKTsKICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9sb3NlX2NvbnRleHQiKTsKLSAgICBp
ZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6c3VwcG9ydGVkKHRoaXMpKQorICAgIGlmIChX
ZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpzdXBwb3J0ZWQoKnRoaXMpKQogICAgICAgICByZXN1
bHQuYXBwZW5kKCJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2F0YyIpOwotICAgIGlm
IChXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBvcnRlZCh0aGlzKSkKKyAgICBpZiAo
V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKnRoaXMpKQogICAgICAgICBy
ZXN1bHQuYXBwZW5kKCJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIik7Ci0g
ICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQodGhpcykpCisgICAg
aWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQoKnRoaXMpKQogICAgICAg
ICByZXN1bHQuYXBwZW5kKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIpOwotICAgIGlm
IChXZWJHTERlcHRoVGV4dHVyZTo6c3VwcG9ydGVkKGdyYXBoaWNzQ29udGV4dDNEKCkpKQorICAg
IGlmIChXZWJHTERlcHRoVGV4dHVyZTo6c3VwcG9ydGVkKCpncmFwaGljc0NvbnRleHQzRCgpKSkK
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfZGVwdGhfdGV4dHVyZSIpOwogICAgIGlmIChz
dXBwb3J0c0RyYXdCdWZmZXJzKCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2RyYXdf
YnVmZmVycyIpOwotICAgIGlmIChBTkdMRUluc3RhbmNlZEFycmF5czo6c3VwcG9ydGVkKHRoaXMp
KQorICAgIGlmIChBTkdMRUluc3RhbmNlZEFycmF5czo6c3VwcG9ydGVkKCp0aGlzKSkKICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgiQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpOwotICAgIGlmIChtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hh
ZGVyX3NvdXJjZSIpKQorICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0
cygiR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIikpCiAgICAgICAgIHJlc3VsdC5h
cHBlbmQoIldFQkdMX2RlYnVnX3NoYWRlcnMiKTsKICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9k
ZWJ1Z19yZW5kZXJlcl9pbmZvIik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggMWExZjE2YTljODY3
ZmZiNzkyMTAzYjI5MGEwNWU2ODUyODlhNTNlOS4uM2VmODVjZDRmM2FmODM2MzZjMDE2MmE3M2Q4
MTdmNzJkODY5OWY0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTQzMCw5ICs0MzAsOSBAQCBzdGQ6
OnVuaXF1ZV9wdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZT4gV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6Y3JlYXRlKEhUTQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAg
ICBFeHRlbnNpb25zM0QqIGV4dGVuc2lvbnMgPSBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCk7Ci0g
ICAgaWYgKGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9FWFRfZGVidWdfbWFya2VyIikpCi0gICAg
ICAgIGV4dGVuc2lvbnMtPnB1c2hHcm91cE1hcmtlckVYVCgiV2ViR0xSZW5kZXJpbmdDb250ZXh0
Iik7CisgICAgRXh0ZW5zaW9uczNEJiBleHRlbnNpb25zID0gY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpOworICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfZGVidWdfbWFya2VyIikp
CisgICAgICAgIGV4dGVuc2lvbnMucHVzaEdyb3VwTWFya2VyRVhUKCJXZWJHTFJlbmRlcmluZ0Nv
bnRleHQiKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
PiByZW5kZXJpbmdDb250ZXh0ID0gbnVsbHB0cjsKICNpZiBFTkFCTEUoV0VCR0wyKQpAQCAtNTc1
LDE2ICs1NzUsMTYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzZXR1cEZsYWdz
KCkKICAgICAgICAgbV9zeW50aGVzaXplZEVycm9yc1RvQ29uc29sZSA9IHBhZ2UtPnNldHRpbmdz
KCkud2ViR0xFcnJvcnNUb0NvbnNvbGVFbmFibGVkKCk7CiAKICAgICBtX2lzR0xFUzJDb21wbGlh
bnQgPSBtX2NvbnRleHQtPmlzR0xFUzJDb21wbGlhbnQoKTsKLSAgICBtX2lzRXJyb3JHZW5lcmF0
ZWRPbk91dE9mQm91bmRzQWNjZXNzZXMgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+aXNF
bmFibGVkKCJHTF9DSFJPTUlVTV9zdHJpY3RfYXR0cmlicyIpOwotICAgIG1faXNSZXNvdXJjZVNh
ZmUgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+aXNFbmFibGVkKCJHTF9DSFJPTUlVTV9y
ZXNvdXJjZV9zYWZlIik7CisgICAgbV9pc0Vycm9yR2VuZXJhdGVkT25PdXRPZkJvdW5kc0FjY2Vz
c2VzID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuaXNFbmFibGVkKCJHTF9DSFJPTUlVTV9z
dHJpY3RfYXR0cmlicyIpOworICAgIG1faXNSZXNvdXJjZVNhZmUgPSBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS5pc0VuYWJsZWQoIkdMX0NIUk9NSVVNX3Jlc291cmNlX3NhZmUiKTsKICAgICBp
ZiAobV9pc0dMRVMyQ29tcGxpYW50KSB7Ci0gICAgICAgIG1faXNHTEVTMk5QT1RTdHJpY3QgPSAh
bV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmlzRW5hYmxlZCgiR0xfT0VTX3RleHR1cmVfbnBv
dCIpOwotICAgICAgICBtX2lzRGVwdGhTdGVuY2lsU3VwcG9ydGVkID0gbV9jb250ZXh0LT5nZXRF
eHRlbnNpb25zKCktPmlzRW5hYmxlZCgiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7Cisg
ICAgICAgIG1faXNHTEVTMk5QT1RTdHJpY3QgPSAhbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCku
aXNFbmFibGVkKCJHTF9PRVNfdGV4dHVyZV9ucG90Iik7CisgICAgICAgIG1faXNEZXB0aFN0ZW5j
aWxTdXBwb3J0ZWQgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5pc0VuYWJsZWQoIkdMX09F
U19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1faXNHTEVT
Mk5QT1RTdHJpY3QgPSAhbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmlzRW5hYmxlZCgiR0xf
QVJCX3RleHR1cmVfbm9uX3Bvd2VyX29mX3R3byIpOwotICAgICAgICBtX2lzRGVwdGhTdGVuY2ls
U3VwcG9ydGVkID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmlzRW5hYmxlZCgiR0xfRVhU
X3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgICAgIG1faXNHTEVTMk5QT1RTdHJpY3QgPSAh
bV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuaXNFbmFibGVkKCJHTF9BUkJfdGV4dHVyZV9ub25f
cG93ZXJfb2ZfdHdvIik7CisgICAgICAgIG1faXNEZXB0aFN0ZW5jaWxTdXBwb3J0ZWQgPSBtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5pc0VuYWJsZWQoIkdMX0VYVF9wYWNrZWRfZGVwdGhfc3Rl
bmNpbCIpOwogICAgIH0KLSAgICBtX2lzUm9idXN0bmVzc0VYVFN1cHBvcnRlZCA9IG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLT5pc0VuYWJsZWQoIkdMX0VYVF9yb2J1c3RuZXNzIik7CisgICAg
bV9pc1JvYnVzdG5lc3NFWFRTdXBwb3J0ZWQgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5p
c0VuYWJsZWQoIkdMX0VYVF9yb2J1c3RuZXNzIik7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6YWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR0MzRGVudW0gZm9ybWF0KQpA
QCAtODk0LDcgKzg5NCw3IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y2hlY2tP
YmplY3RUb0JlQm91bmQoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBXCiAgICAgaWYgKGlzQ29u
dGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChvYmpl
Y3QpIHsKLSAgICAgICAgaWYgKCFvYmplY3QtPnZhbGlkYXRlKGNvbnRleHRHcm91cCgpLCB0aGlz
KSkgeworICAgICAgICBpZiAoIW9iamVjdC0+dmFsaWRhdGUoY29udGV4dEdyb3VwKCksICp0aGlz
KSkgewogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklO
VkFMSURfT1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsICJvYmplY3Qgbm90IGZyb20gdGhpcyBjb250
ZXh0Iik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTEzODcsNyAr
MTM4Nyw3IEBAIFJlZlB0cjxXZWJHTEJ1ZmZlcj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
Y3JlYXRlQnVmZmVyKCkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvIGJ1ZmZlciA9IFdlYkdMQnVmZmVyOjpjcmVh
dGUodGhpcyk7CisgICAgYXV0byBidWZmZXIgPSBXZWJHTEJ1ZmZlcjo6Y3JlYXRlKCp0aGlzKTsK
ICAgICBhZGRTaGFyZWRPYmplY3QoYnVmZmVyLnB0cigpKTsKICAgICByZXR1cm4gV1RGTW92ZShi
dWZmZXIpOwogfQpAQCAtMTM5Niw3ICsxMzk2LDcgQEAgUmVmUHRyPFdlYkdMRnJhbWVidWZmZXI+
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZUZyYW1lYnVmZmVyKCkKIHsKICAgICBp
ZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICBhdXRvIGJ1ZmZlciA9IFdlYkdMRnJhbWVidWZmZXI6OmNyZWF0ZSh0aGlzKTsKKyAgICBhdXRv
IGJ1ZmZlciA9IFdlYkdMRnJhbWVidWZmZXI6OmNyZWF0ZSgqdGhpcyk7CiAgICAgYWRkQ29udGV4
dE9iamVjdChidWZmZXIucHRyKCkpOwogICAgIHJldHVybiBXVEZNb3ZlKGJ1ZmZlcik7CiB9CkBA
IC0xNDA1LDcgKzE0MDUsNyBAQCBSZWZQdHI8V2ViR0xUZXh0dXJlPiBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpjcmVhdGVUZXh0dXJlKCkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVu
ZGluZygpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvIHRleHR1cmUgPSBXZWJH
TFRleHR1cmU6OmNyZWF0ZSh0aGlzKTsKKyAgICBhdXRvIHRleHR1cmUgPSBXZWJHTFRleHR1cmU6
OmNyZWF0ZSgqdGhpcyk7CiAgICAgYWRkU2hhcmVkT2JqZWN0KHRleHR1cmUucHRyKCkpOwogICAg
IHJldHVybiBXVEZNb3ZlKHRleHR1cmUpOwogfQpAQCAtMTQxNCw3ICsxNDE0LDcgQEAgUmVmUHRy
PFdlYkdMUHJvZ3JhbT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRlUHJvZ3JhbSgp
CiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgYXV0byBwcm9ncmFtID0gV2ViR0xQcm9ncmFtOjpjcmVhdGUodGhpcyk7Cisg
ICAgYXV0byBwcm9ncmFtID0gV2ViR0xQcm9ncmFtOjpjcmVhdGUoKnRoaXMpOwogICAgIGFkZFNo
YXJlZE9iamVjdChwcm9ncmFtLnB0cigpKTsKICAgICByZXR1cm4gV1RGTW92ZShwcm9ncmFtKTsK
IH0KQEAgLTE0MjMsNyArMTQyMyw3IEBAIFJlZlB0cjxXZWJHTFJlbmRlcmJ1ZmZlcj4gV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRlUmVuZGVyYnVmZmVyKCkKIHsKICAgICBpZiAoaXND
b250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRv
IGJ1ZmZlciA9IFdlYkdMUmVuZGVyYnVmZmVyOjpjcmVhdGUodGhpcyk7CisgICAgYXV0byBidWZm
ZXIgPSBXZWJHTFJlbmRlcmJ1ZmZlcjo6Y3JlYXRlKCp0aGlzKTsKICAgICBhZGRTaGFyZWRPYmpl
Y3QoYnVmZmVyLnB0cigpKTsKICAgICByZXR1cm4gV1RGTW92ZShidWZmZXIpOwogfQpAQCAtMTQz
Nyw3ICsxNDM3LDcgQEAgUmVmUHRyPFdlYkdMU2hhZGVyPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpjcmVhdGVTaGFkZXIoR0MzRGVudW0gdHlwZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCi0gICAgYXV0byBzaGFkZXIgPSBXZWJHTFNoYWRlcjo6Y3JlYXRlKHRoaXMsIHR5
cGUpOworICAgIGF1dG8gc2hhZGVyID0gV2ViR0xTaGFkZXI6OmNyZWF0ZSgqdGhpcywgdHlwZSk7
CiAgICAgYWRkU2hhcmVkT2JqZWN0KHNoYWRlci5wdHIoKSk7CiAgICAgcmV0dXJuIFdURk1vdmUo
c2hhZGVyKTsKIH0KQEAgLTE0NTMsNyArMTQ1Myw3IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6ZGVsZXRlT2JqZWN0KFdlYkdMT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgaWYgKGlz
Q29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhb2JqZWN0KQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgaWYgKCFvYmplY3QtPnZhbGlkYXRlKGNvbnRleHRHcm91cCgpLCB0aGlzKSkgeworICAg
IGlmICghb2JqZWN0LT52YWxpZGF0ZShjb250ZXh0R3JvdXAoKSwgKnRoaXMpKSB7CiAgICAgICAg
IHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTiwg
ImRlbGV0ZSIsICJvYmplY3QgZG9lcyBub3QgYmVsb25nIHRvIHRoaXMgY29udGV4dCIpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMTc3NSw3ICsxNzc1LDcgQEAgYm9vbCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVdlYkdMT2JqZWN0KGNvbnN0IGNoYXIqIGZ1
bmN0aW9uTmFtZSwgV2UKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
M0Q6OklOVkFMSURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwgIm5vIG9iamVjdCBvciBvYmplY3QgZGVs
ZXRlZCIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIGlmICghb2JqZWN0LT52
YWxpZGF0ZShjb250ZXh0R3JvdXAoKSwgdGhpcykpIHsKKyAgICBpZiAoIW9iamVjdC0+dmFsaWRh
dGUoY29udGV4dEdyb3VwKCksICp0aGlzKSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgIm9iamVj
dCBkb2VzIG5vdCBiZWxvbmcgdG8gdGhpcyBjb250ZXh0Iik7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CkBAIC0yMDIzLDcgKzIwMjMsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudQog
ICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9FTlVN
LCAiZnJhbWVidWZmZXJSZW5kZXJidWZmZXIiLCAiaW52YWxpZCB0YXJnZXQiKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICBpZiAoYnVmZmVyICYmICFidWZmZXItPnZhbGlkYXRlKGNvbnRl
eHRHcm91cCgpLCB0aGlzKSkgeworICAgIGlmIChidWZmZXIgJiYgIWJ1ZmZlci0+dmFsaWRhdGUo
Y29udGV4dEdyb3VwKCksICp0aGlzKSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04sICJmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZl
ciIsICJubyBidWZmZXIgb3IgYnVmZmVyIG5vdCBmcm9tIHRoaXMgY29udGV4dCIpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtMjA1NSw3ICsyMDU1LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpmcmFtZWJ1ZmZlclRleHR1cmUyRChHQzNEZW51bSB0YXJnZXQsIEdDM0Rl
bnVtIGEKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFM
SURfVkFMVUUsICJmcmFtZWJ1ZmZlclRleHR1cmUyRCIsICJsZXZlbCBub3QgMCIpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIGlmICh0ZXh0dXJlICYmICF0ZXh0dXJlLT52YWxpZGF0ZShj
b250ZXh0R3JvdXAoKSwgdGhpcykpIHsKKyAgICBpZiAodGV4dHVyZSAmJiAhdGV4dHVyZS0+dmFs
aWRhdGUoY29udGV4dEdyb3VwKCksICp0aGlzKSkgewogICAgICAgICBzeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04sICJmcmFtZWJ1ZmZlclRleHR1
cmUyRCIsICJubyB0ZXh0dXJlIG9yIHRleHR1cmUgbm90IGZyb20gdGhpcyBjb250ZXh0Iik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yNTM0LDcgKzI1MzQsNyBAQCBXZWJHTEdldEluZm8g
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VW5pZm9ybShXZWJHTFByb2dyYW0qIHByb2dy
YW0sIGNvbnN0CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RkxPQVQ6IHsKICAgICAgICAg
R0MzRGZsb2F0IHZhbHVlWzE2XSA9IHswfTsKICAgICAgICAgaWYgKG1faXNSb2J1c3RuZXNzRVhU
U3VwcG9ydGVkKQotICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmdldG5V
bmlmb3JtZnZFWFQob2JqZWN0T3JaZXJvKHByb2dyYW0pLCBsb2NhdGlvbiwgMTYgKiBzaXplb2Yo
R0MzRGZsb2F0KSwgdmFsdWUpOworICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkuZ2V0blVuaWZvcm1mdkVYVChvYmplY3RPclplcm8ocHJvZ3JhbSksIGxvY2F0aW9uLCAxNiAq
IHNpemVvZihHQzNEZmxvYXQpLCB2YWx1ZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1f
Y29udGV4dC0+Z2V0VW5pZm9ybWZ2KG9iamVjdE9yWmVybyhwcm9ncmFtKSwgbG9jYXRpb24sIHZh
bHVlKTsKICAgICAgICAgaWYgKGxlbmd0aCA9PSAxKQpAQCAtMjU0NCw3ICsyNTQ0LDcgQEAgV2Vi
R0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFVuaWZvcm0oV2ViR0xQcm9n
cmFtKiBwcm9ncmFtLCBjb25zdAogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OklOVDogewog
ICAgICAgICBHQzNEaW50IHZhbHVlWzRdID0gezB9OwogICAgICAgICBpZiAobV9pc1JvYnVzdG5l
c3NFWFRTdXBwb3J0ZWQpCi0gICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+
Z2V0blVuaWZvcm1pdkVYVChvYmplY3RPclplcm8ocHJvZ3JhbSksIGxvY2F0aW9uLCA0ICogc2l6
ZW9mKEdDM0RpbnQpLCB2YWx1ZSk7CisgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS5nZXRuVW5pZm9ybWl2RVhUKG9iamVjdE9yWmVybyhwcm9ncmFtKSwgbG9jYXRpb24sIDQg
KiBzaXplb2YoR0MzRGludCksIHZhbHVlKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9j
b250ZXh0LT5nZXRVbmlmb3JtaXYob2JqZWN0T3JaZXJvKHByb2dyYW0pLCBsb2NhdGlvbiwgdmFs
dWUpOwogICAgICAgICBpZiAobGVuZ3RoID09IDEpCkBAIC0yNTU0LDcgKzI1NTQsNyBAQCBXZWJH
TEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VW5pZm9ybShXZWJHTFByb2dy
YW0qIHByb2dyYW0sIGNvbnN0CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Qk9PTDogewog
ICAgICAgICBHQzNEaW50IHZhbHVlWzRdID0gezB9OwogICAgICAgICBpZiAobV9pc1JvYnVzdG5l
c3NFWFRTdXBwb3J0ZWQpCi0gICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+
Z2V0blVuaWZvcm1pdkVYVChvYmplY3RPclplcm8ocHJvZ3JhbSksIGxvY2F0aW9uLCA0ICogc2l6
ZW9mKEdDM0RpbnQpLCB2YWx1ZSk7CisgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS5nZXRuVW5pZm9ybWl2RVhUKG9iamVjdE9yWmVybyhwcm9ncmFtKSwgbG9jYXRpb24sIDQg
KiBzaXplb2YoR0MzRGludCksIHZhbHVlKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9j
b250ZXh0LT5nZXRVbmlmb3JtaXYob2JqZWN0T3JaZXJvKHByb2dyYW0pLCBsb2NhdGlvbiwgdmFs
dWUpOwogICAgICAgICBpZiAobGVuZ3RoID4gMSkgewpAQCAtMjg4MCw3ICsyODgwLDcgQEAgdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZWFkUGl4ZWxzKEdDM0RpbnQgeCwgR0MzRGlu
dCB5LCBHQzNEc2l6ZWkgd2lkdGgKIAogICAgIHsKICAgICAgICAgaWYgKG1faXNSb2J1c3RuZXNz
RVhUU3VwcG9ydGVkKQotICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnJl
YWRuUGl4ZWxzRVhUKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLmJ5
dGVMZW5ndGgoKSwgZGF0YSk7CisgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5yZWFkblBpeGVsc0VYVCh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVs
cy5ieXRlTGVuZ3RoKCksIGRhdGEpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX2NvbnRl
eHQtPnJlYWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhKTsK
ICAgICB9CkBAIC0zODExLDcgKzM4MTEsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6Omxvc2VDb250ZXh0SW1wbChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpMb3N0QwogICAg
ICAgICAvLyBJbmZvcm0gdGhlIGVtYmVkZGVyIHRoYXQgYSBsb3N0IGNvbnRleHQgd2FzIHJlY2Vp
dmVkLiBJbiByZXNwb25zZSwgdGhlIGVtYmVkZGVyIG1pZ2h0CiAgICAgICAgIC8vIGRlY2lkZSB0
byB0YWtlIGFjdGlvbiBzdWNoIGFzIGFza2luZyB0aGUgdXNlciBmb3IgcGVybWlzc2lvbiB0byB1
c2UgV2ViR0wgYWdhaW4uCiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBjYW52YXMoKS5kb2N1
bWVudCgpLmZyYW1lKCkpCi0gICAgICAgICAgICBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZGlk
TG9zZVdlYkdMQ29udGV4dChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+Z2V0R3JhcGhpY3NS
ZXNldFN0YXR1c0FSQigpKTsKKyAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5k
aWRMb3NlV2ViR0xDb250ZXh0KG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldEdyYXBoaWNz
UmVzZXRTdGF0dXNBUkIoKSk7CiAgICAgfQogCiAgICAgZGV0YWNoQW5kUmVtb3ZlQWxsT2JqZWN0
cygpOwpAQCAtNDc5OSw3ICs0Nzk5LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjptYXliZVJlc3RvcmVDb250ZXh0KCkKICAgICBpZiAoIW1fcmVzdG9yZUFsbG93ZWQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGludCBjb250ZXh0TG9zdFJlYXNvbiA9IG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLT5nZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCk7CisgICAgaW50IGNvbnRl
eHRMb3N0UmVhc29uID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0R3JhcGhpY3NSZXNl
dFN0YXR1c0FSQigpOwogCiAgICAgc3dpdGNoIChjb250ZXh0TG9zdFJlYXNvbikgewogICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0M0Q6Ok5PX0VSUk9SOgpAQCAtNTAxOCw3ICs1MDE4LDcgQEAgYm9v
bCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzdXBwb3J0c0RyYXdCdWZmZXJzKCkKIHsKICAg
ICBpZiAoIW1fZHJhd0J1ZmZlcnNXZWJHTFJlcXVpcmVtZW50c0NoZWNrZWQpIHsKICAgICAgICAg
bV9kcmF3QnVmZmVyc1dlYkdMUmVxdWlyZW1lbnRzQ2hlY2tlZCA9IHRydWU7Ci0gICAgICAgIG1f
ZHJhd0J1ZmZlcnNTdXBwb3J0ZWQgPSBXZWJHTERyYXdCdWZmZXJzOjpzdXBwb3J0ZWQodGhpcyk7
CisgICAgICAgIG1fZHJhd0J1ZmZlcnNTdXBwb3J0ZWQgPSBXZWJHTERyYXdCdWZmZXJzOjpzdXBw
b3J0ZWQoKnRoaXMpOwogICAgIH0KICAgICByZXR1cm4gbV9kcmF3QnVmZmVyc1N1cHBvcnRlZDsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2FtcGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNhbXBsZXIuY3BwCmluZGV4IDc2
OWZkNGUyNGJiMWZkOGRkNzUyNTI4MzFlMjBkOTM4YTk2OGVkMDIuLjBjYTc5NWI4YmYwMjdkNjJi
ZmVlZWE1Y2U1NDY0YzM2MGRkNDQxODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMU2FtcGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xTYW1wbGVyLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgCi1SZWY8V2ViR0xTYW1wbGVyPiBXZWJHTFNhbXBsZXI6OmNyZWF0ZShXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlKiBjdHgpCitSZWY8V2ViR0xTYW1wbGVyPiBXZWJHTFNhbXBsZXI6OmNy
ZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjdHgpCiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgV2ViR0xTYW1wbGVyKGN0eCkpOwogfQpAQCAtNDMsNyArNDMsNyBAQCBXZWJHTFNh
bXBsZXI6On5XZWJHTFNhbXBsZXIoKQogICAgIGRlbGV0ZU9iamVjdCgwKTsKIH0KIAotV2ViR0xT
YW1wbGVyOjpXZWJHTFNhbXBsZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY3R4KQorV2Vi
R0xTYW1wbGVyOjpXZWJHTFNhbXBsZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY3R4KQog
ICAgIDogV2ViR0xTaGFyZWRPYmplY3QoY3R4KQogewogICAgIC8vIEZJWE1FOiBDYWxsIGNyZWF0
ZVNhbXBsZXIgZnJvbSBHcmFwaGljc0NvbnRleHQzRC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMU2FtcGxlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xTYW1wbGVyLmgKaW5kZXggMGI0YTFlZjk5YjZlOWI4NDFkNTcyNTFkMTkzNzRhZmEw
OTlkMTVjYS4uYmQ5YzBlYWRkMDNhNzUyOTAzY2RjZWRkM2U5NmVjZmFiMjE4MTJjNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTYW1wbGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTYW1wbGVyLmgKQEAgLTMzLDEwICszMywxMCBA
QCBjbGFzcyBXZWJHTFNhbXBsZXIgZmluYWwgOiBwdWJsaWMgV2ViR0xTaGFyZWRPYmplY3Qgewog
cHVibGljOgogICAgIHZpcnR1YWwgfldlYkdMU2FtcGxlcigpOwogCi0gICAgc3RhdGljIFJlZjxX
ZWJHTFNhbXBsZXI+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAgc3Rh
dGljIFJlZjxXZWJHTFNhbXBsZXI+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7
CiAKIHByb3RlY3RlZDoKLSAgICBXZWJHTFNhbXBsZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSopOworICAgIFdlYkdMU2FtcGxlcihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAKICAg
ICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoR3JhcGhpY3NDb250ZXh0M0QqLCBQbGF0Zm9ybTNET2Jq
ZWN0KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xTaGFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFkZXIu
Y3BwCmluZGV4IDE2ZmY2ZDVjODU4YTc2MTU3ODIxZjliOTRjYWMxZGU3NDI2ZmUyYzkuLjdmYWVk
MjQwODAzNGY4YmY4MGRjNzgxZTAyZTZlOWU0YzE3NDZjOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFNoYWRlci5jcHAKQEAgLTM0LDE4ICszNCwxOCBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVJlZjxXZWJHTFNoYWRlcj4gV2ViR0xTaGFkZXI6OmNyZWF0ZShXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjdHgsIEdDM0RlbnVtIHR5cGUpCitSZWY8V2ViR0xTaGFk
ZXI+IFdlYkdMU2hhZGVyOjpjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY3R4LCBH
QzNEZW51bSB0eXBlKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdMU2hhZGVyKGN0
eCwgdHlwZSkpOwogfQogCi1XZWJHTFNoYWRlcjo6V2ViR0xTaGFkZXIoV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSogY3R4LCBHQzNEZW51bSB0eXBlKQorV2ViR0xTaGFkZXI6OldlYkdMU2hhZGVy
KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGN0eCwgR0MzRGVudW0gdHlwZSkKICAgICA6IFdl
YkdMU2hhcmVkT2JqZWN0KGN0eCkKICAgICAsIG1fdHlwZSh0eXBlKQogICAgICwgbV9zb3VyY2Uo
ZW1wdHlTdHJpbmcoKSkKICAgICAsIG1faXNWYWxpZChmYWxzZSkKIHsKLSAgICBzZXRPYmplY3Qo
Y3R4LT5ncmFwaGljc0NvbnRleHQzRCgpLT5jcmVhdGVTaGFkZXIodHlwZSkpOworICAgIHNldE9i
amVjdChjdHguZ3JhcGhpY3NDb250ZXh0M0QoKS0+Y3JlYXRlU2hhZGVyKHR5cGUpKTsKIH0KIAog
V2ViR0xTaGFkZXI6On5XZWJHTFNoYWRlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFNoYWRlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xTaGFkZXIuaAppbmRleCA2MzljZWZhNzBhNjhiNTczOGQ4ZmYyMWQ4YjY1Y2JiYTgxZDgwYzFh
Li42YWY1YzI2OWQ1MGFhZTRkODU1YjdkMDcwZWEzMTg4ZWU1NDNiOTBjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3MgV2Vi
R0xTaGFkZXIgZmluYWwgOiBwdWJsaWMgV2ViR0xTaGFyZWRPYmplY3QgewogcHVibGljOgogICAg
IHZpcnR1YWwgfldlYkdMU2hhZGVyKCk7CiAKLSAgICBzdGF0aWMgUmVmPFdlYkdMU2hhZGVyPiBj
cmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSosIEdDM0RlbnVtKTsKKyAgICBzdGF0aWMg
UmVmPFdlYkdMU2hhZGVyPiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYsIEdDM0Rl
bnVtKTsKIAogICAgIEdDM0RlbnVtIGdldFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0K
ICAgICBjb25zdCBTdHJpbmcmIGdldFNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlOyB9
CkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFZhbGlkKGJvb2wgdmFsaWQp
IHsgbV9pc1ZhbGlkID0gdmFsaWQ7IH0KIAogcHJpdmF0ZToKLSAgICBXZWJHTFNoYWRlcihXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlKiwgR0MzRGVudW0pOworICAgIFdlYkdMU2hhZGVyKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UmLCBHQzNEZW51bSk7CiAKICAgICB2b2lkIGRlbGV0ZU9iamVj
dEltcGwoR3JhcGhpY3NDb250ZXh0M0QqLCBQbGF0Zm9ybTNET2JqZWN0KSBvdmVycmlkZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFyZWRPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFyZWRPYmplY3QuY3BwCmlu
ZGV4IDM0ZjdjZWVhNTJmNjg1YzBlMWM2NmY4NTkyYmMxMTc1MTY1ZjlkZGMuLjM2ZGMxNWQzYTBl
N2U1ZjZhOTcwNjFlNGMzYmQzYzI0MWMxYjg0ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMU2hhcmVkT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFNoYXJlZE9iamVjdC5jcHAKQEAgLTM0LDkgKzM0LDkgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1XZWJHTFNoYXJlZE9iamVjdDo6V2ViR0xTaGFyZWRPYmplY3Qo
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29udGV4dCkKLSAgICA6IFdlYkdMT2JqZWN0KGNv
bnRleHQpLAotICAgICAgbV9jb250ZXh0R3JvdXAoY29udGV4dC0+Y29udGV4dEdyb3VwKCkpCitX
ZWJHTFNoYXJlZE9iamVjdDo6V2ViR0xTaGFyZWRPYmplY3QoV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSYgY29udGV4dCkKKyAgICA6IFdlYkdMT2JqZWN0KGNvbnRleHQpCisgICAgLCBtX2NvbnRl
eHRHcm91cChjb250ZXh0LmNvbnRleHRHcm91cCgpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYXJlZE9iamVjdC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xTaGFyZWRPYmplY3QuaAppbmRleCA5NDY3ZmZhMzMyZDcwZWY4
ZmViODI5NzFiODA5ZDQyNDczMzU3ZTU4Li5hYmU0ODAzMzM3MmM5NTZjYzcxMzBlYjdmN2JmZmZk
Y2QxYTlmNTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNo
YXJlZE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhcmVk
T2JqZWN0LmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1Ry
YW5zZm9ybUZlZWRiYWNrKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJv
b2wgaXNWZXJ0ZXhBcnJheU9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICBi
b29sIHZhbGlkYXRlKGNvbnN0IFdlYkdMQ29udGV4dEdyb3VwKiBjb250ZXh0R3JvdXAsIGNvbnN0
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKSBjb25zdCBvdmVycmlkZQorICAgIGJvb2wgdmFs
aWRhdGUoY29uc3QgV2ViR0xDb250ZXh0R3JvdXAqIGNvbnRleHRHcm91cCwgY29uc3QgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZSYpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1
cm4gY29udGV4dEdyb3VwID09IG1fY29udGV4dEdyb3VwOwogICAgIH0KQEAgLTYwLDcgKzYwLDcg
QEAgcHVibGljOgogICAgIHZvaWQgZGV0YWNoQ29udGV4dEdyb3VwKCk7CiAKIHByb3RlY3RlZDoK
LSAgICBXZWJHTFNoYXJlZE9iamVjdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAg
V2ViR0xTaGFyZWRPYmplY3QoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogCiAgICAgYm9v
bCBoYXNHcm91cE9yQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMU3luYy5jcHAKaW5kZXggMmJkMmNlODJhODcxNTA0YjY5MzlmNTY4
YWY0Yzk1Y2RhMDIyNzZhYy4uNjM2MGZiYTRlZTMwYzM3YjJhODZkZWVjMmJkYzMyYTk4MGQ4NzE5
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFN5bmMuY3BwCkBAIC0zMyw3ICsz
Myw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKLVJlZjxXZWJHTFN5bmM+IFdlYkdM
U3luYzo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGN0eCkKK1JlZjxXZWJHTFN5
bmM+IFdlYkdMU3luYzo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGN0eCkKIHsK
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHTFN5bmMoY3R4KSk7CiB9CkBAIC00Myw3ICs0
Myw3IEBAIFdlYkdMU3luYzo6fldlYkdMU3luYygpCiAgICAgZGVsZXRlT2JqZWN0KDApOwogfQog
Ci1XZWJHTFN5bmM6OldlYkdMU3luYyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjdHgpCitX
ZWJHTFN5bmM6OldlYkdMU3luYyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjdHgpCiAgICAg
OiBXZWJHTFNoYXJlZE9iamVjdChjdHgpCiB7CiAgICAgLy8gRklYTUU6IENhbGwgZmVuY2VTeW5j
IGZyb20gR3JhcGhpY3NDb250ZXh0M0QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFN5bmMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3lu
Yy5oCmluZGV4IDdhZDM5OTlmYjAxMDQyOWNiZTM2MzMwZmVlZjBlNzgwYzRjNTJiOGEuLmVmNmVj
OWRjZDU5NjRmYjQ2ZDIzN2EwMDYzZDRjNTZiMTJjZGE3NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMU3luYy5oCkBAIC0zMywxMCArMzMsMTAgQEAgY2xhc3MgV2ViR0xTeW5jIGZp
bmFsIDogcHVibGljIFdlYkdMU2hhcmVkT2JqZWN0IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5X
ZWJHTFN5bmMoKTsKIAotICAgIHN0YXRpYyBSZWY8V2ViR0xTeW5jPiBjcmVhdGUoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSopOworICAgIHN0YXRpYyBSZWY8V2ViR0xTeW5jPiBjcmVhdGUoV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgV2ViR0xTeW5jKFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBXZWJHTFN5bmMoV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSYpOwogCiAgICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKEdyYXBoaWNzQ29udGV4
dDNEKiwgUGxhdGZvcm0zRE9iamVjdCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFRleHR1cmUuY3BwCmluZGV4IGJkZmNlYWE4NTI1MjJlNzk0ZWY2ZWZiNWIy
M2ZkZDE2NWU0ZDE0ODguLmM0ZDU3MjE0MGRiOTliNjk3NjBiMjNkYzBlODU5MWZhNDk4Yjg0Y2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmNwcApAQCAtMzUs
MTIgKzM1LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFdlYkdMVGV4dHVyZT4g
V2ViR0xUZXh0dXJlOjpjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY3R4KQorUmVm
PFdlYkdMVGV4dHVyZT4gV2ViR0xUZXh0dXJlOjpjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSYgY3R4KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdMVGV4dHVyZShjdHgp
KTsKIH0KIAotV2ViR0xUZXh0dXJlOjpXZWJHTFRleHR1cmUoV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSogY3R4KQorV2ViR0xUZXh0dXJlOjpXZWJHTFRleHR1cmUoV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSYgY3R4KQogICAgIDogV2ViR0xTaGFyZWRPYmplY3QoY3R4KQogICAgICwgbV90YXJn
ZXQoMCkKICAgICAsIG1fbWluRmlsdGVyKEdyYXBoaWNzQ29udGV4dDNEOjpORUFSRVNUX01JUE1B
UF9MSU5FQVIpCkBAIC01NCw3ICs1NCw3IEBAIFdlYkdMVGV4dHVyZTo6V2ViR0xUZXh0dXJlKFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGN0eCkKICAgICAsIG1faXNGbG9hdFR5cGUoZmFsc2Up
CiAgICAgLCBtX2lzSGFsZkZsb2F0VHlwZShmYWxzZSkKIHsKLSAgICBzZXRPYmplY3QoY3R4LT5n
cmFwaGljc0NvbnRleHQzRCgpLT5jcmVhdGVUZXh0dXJlKCkpOworICAgIHNldE9iamVjdChjdHgu
Z3JhcGhpY3NDb250ZXh0M0QoKS0+Y3JlYXRlVGV4dHVyZSgpKTsKIH0KIAogV2ViR0xUZXh0dXJl
Ojp+V2ViR0xUZXh0dXJlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMVGV4dHVyZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJl
LmgKaW5kZXggNmNhMzg4OTc2NmMwYzAzZTZlNTQ1MTAwYTY4NTc1ZmJlOWU3MTkxNi4uZGQ5ODY0
YzEzZjA0M2FiMDBmYjRlZGRkYTg0YzQ2MzgxOTliYjI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xUZXh0dXJlLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCB+V2ViR0xUZXh0dXJlKCk7CiAKLSAgICBzdGF0aWMgUmVmPFdlYkdMVGV4dHVyZT4g
Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdM
VGV4dHVyZT4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKIAogICAgIHZvaWQg
c2V0VGFyZ2V0KEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBtYXhMZXZlbCk7CiAgICAgdm9pZCBz
ZXRQYXJhbWV0ZXJpKEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50IHBhcmFtKTsKQEAgLTc5LDcgKzc5
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBHQzNEaW50IGNvbXB1dGVMZXZlbENvdW50KEdDM0Rz
aXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCk7CiAKIHByaXZhdGU6Ci0gICAgV2ViR0xUZXh0
dXJlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBXZWJHTFRleHR1cmUoV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogCiAgICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKEdyYXBo
aWNzQ29udGV4dDNEKiwgUGxhdGZvcm0zRE9iamVjdCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVHJhbnNmb3JtRmVlZGJhY2suY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5jcHAKaW5k
ZXggZjM2NWQ1MjNmYThhYTRmNDcxMzc0MWY4NGU5ZDU0OWYwNmVkNTE1Ny4uMzUzZTRiYWMxYTI5
MWFlODA3NTgxNWNjZDc0ZDI5ZmRlOWE5MzZlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5jcHAKQEAgLTMzLDcgKzMzLDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAotUmVmPFdlYkdMVHJhbnNmb3JtRmVlZGJh
Y2s+IFdlYkdMVHJhbnNmb3JtRmVlZGJhY2s6OmNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlKiBjdHgpCitSZWY8V2ViR0xUcmFuc2Zvcm1GZWVkYmFjaz4gV2ViR0xUcmFuc2Zvcm1GZWVk
YmFjazo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGN0eCkKIHsKICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBXZWJHTFRyYW5zZm9ybUZlZWRiYWNrKGN0eCkpOwogfQpAQCAtNDMs
NyArNDMsNyBAQCBXZWJHTFRyYW5zZm9ybUZlZWRiYWNrOjp+V2ViR0xUcmFuc2Zvcm1GZWVkYmFj
aygpCiAgICAgZGVsZXRlT2JqZWN0KDApOwogfQogCi1XZWJHTFRyYW5zZm9ybUZlZWRiYWNrOjpX
ZWJHTFRyYW5zZm9ybUZlZWRiYWNrKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGN0eCkKK1dl
YkdMVHJhbnNmb3JtRmVlZGJhY2s6OldlYkdMVHJhbnNmb3JtRmVlZGJhY2soV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSYgY3R4KQogICAgIDogV2ViR0xTaGFyZWRPYmplY3QoY3R4KQogewogICAg
IC8vIEZJWE1FOiBDYWxsIGNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrIGZyb20gR3JhcGhpY3NDb250
ZXh0M0QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRyYW5z
Zm9ybUZlZWRiYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRyYW5zZm9y
bUZlZWRiYWNrLmgKaW5kZXggMjZkNDA0NGU4ZDM3NzI5ZTIxNWY3NTFkOGZhNDJkM2QyZDgwZjQ1
ZS4uNjljZjhlN2JiNTQxOGVhYTllNDU2OTIxMTQwOGY0NzZiMjZhNjc4NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVHJhbnNmb3JtRmVlZGJhY2suaApAQCAt
MzMsMTAgKzMzLDEwIEBAIGNsYXNzIFdlYkdMVHJhbnNmb3JtRmVlZGJhY2sgZmluYWwgOiBwdWJs
aWMgV2ViR0xTaGFyZWRPYmplY3QgewogcHVibGljOgogICAgIHZpcnR1YWwgfldlYkdMVHJhbnNm
b3JtRmVlZGJhY2soKTsKIAotICAgIHN0YXRpYyBSZWY8V2ViR0xUcmFuc2Zvcm1GZWVkYmFjaz4g
Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdM
VHJhbnNmb3JtRmVlZGJhY2s+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAK
IHByb3RlY3RlZDoKLSAgICBXZWJHTFRyYW5zZm9ybUZlZWRiYWNrKFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UqKTsKKyAgICBXZWJHTFRyYW5zZm9ybUZlZWRiYWNrKFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UmKTsKIAogICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChHcmFwaGljc0NvbnRleHQz
RCosIFBsYXRmb3JtM0RPYmplY3QpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3QuY3BwCmluZGV4IDZlODE1ZWYy
MzVkZTUyYjBkYjAwNGY2NTg2MDI0M2MwMTA5NGM1NjkuLjdmYTY5YzlhNDk0ZGJlZWE5ZGJlYmY4
OWU4NWY0M2Y5Y2ZkMDI4NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMVmVydGV4QXJyYXlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3QuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAKLVJlZjxXZWJHTFZlcnRleEFycmF5T2JqZWN0PiBXZWJHTFZl
cnRleEFycmF5T2JqZWN0OjpjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY3R4LCBW
QU9UeXBlIHR5cGUpCitSZWY8V2ViR0xWZXJ0ZXhBcnJheU9iamVjdD4gV2ViR0xWZXJ0ZXhBcnJh
eU9iamVjdDo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGN0eCwgVkFPVHlwZSB0
eXBlKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdMVmVydGV4QXJyYXlPYmplY3Qo
Y3R4LCB0eXBlKSk7CiB9CkBAIC00Myw3ICs0Myw3IEBAIFdlYkdMVmVydGV4QXJyYXlPYmplY3Q6
On5XZWJHTFZlcnRleEFycmF5T2JqZWN0KCkKICAgICBkZWxldGVPYmplY3QoMCk7CiB9CiAKLVdl
YkdMVmVydGV4QXJyYXlPYmplY3Q6OldlYkdMVmVydGV4QXJyYXlPYmplY3QoV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSogY3R4LCBWQU9UeXBlIHR5cGUpCitXZWJHTFZlcnRleEFycmF5T2JqZWN0
OjpXZWJHTFZlcnRleEFycmF5T2JqZWN0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGN0eCwg
VkFPVHlwZSB0eXBlKQogICAgIDogV2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJhc2UoY3R4LCB0eXBl
KQogewogICAgIHN3aXRjaCAobV90eXBlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0LmgKaW5kZXggYWU0ZDgzMjZkNmE5MTIzOTVm
ZDdkOTE3NDM5MmY4MWM3ZjNhNDNhMy4uNWI0OWM3MDhhNDYyNTRkZTU5MGUxYzA2ZGNjOTg2MmE2
NjRjMzE0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0
ZXhBcnJheU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVy
dGV4QXJyYXlPYmplY3QuaApAQCAtMzcsMTAgKzM3LDEwIEBAIGNsYXNzIFdlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ7CiAKIGNsYXNzIFdlYkdMVmVydGV4QXJyYXlPYmplY3QgZmluYWwgOiBwdWJsaWMg
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJhc2UgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2Vi
R0xWZXJ0ZXhBcnJheU9iamVjdD4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqLCBW
QU9UeXBlKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdMVmVydGV4QXJyYXlPYmplY3Q+IGNyZWF0ZShX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiwgVkFPVHlwZSk7CiAgICAgdmlydHVhbCB+V2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdCgpOwogcHJpdmF0ZToKLSAgICBXZWJHTFZlcnRleEFycmF5T2JqZWN0
KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqLCBWQU9UeXBlKTsKKyAgICBXZWJHTFZlcnRleEFy
cmF5T2JqZWN0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmLCBWQU9UeXBlKTsKICAgICBib29s
IGlzVHJhbnNmb3JtRmVlZGJhY2soKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBk
ZWxldGVPYmplY3RJbXBsKEdyYXBoaWNzQ29udGV4dDNEKiwgUGxhdGZvcm0zRE9iamVjdCkgb3Zl
cnJpZGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xWZXJ0ZXhBcnJheU9iamVjdEJhc2UuY3BwCmluZGV4IGYzOWMwZGRkMjI3NzlkMDVmMTYwZDE5
Nzk1NjMxOGE2MDBlYjkzY2MuLjY5NjQ5YzYyZjZlMWRiZWYyZjllZGE2MTdjNDI0MjRkZjczZjE3
NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJy
YXlPYmplY3RCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZl
cnRleEFycmF5T2JqZWN0QmFzZS5jcHAKQEAgLTMyLDEzICszMiwxMyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVdlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlOjpXZWJHTFZlcnRleEFycmF5
T2JqZWN0QmFzZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjdHgsIFZBT1R5cGUgdHlwZSkK
K1dlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlOjpXZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZShX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjdHgsIFZBT1R5cGUgdHlwZSkKICAgICA6IFdlYkdM
Q29udGV4dE9iamVjdChjdHgpCiAgICAgLCBtX3R5cGUodHlwZSkKICAgICAsIG1faGFzRXZlckJl
ZW5Cb3VuZChmYWxzZSkKICAgICAsIG1fYm91bmRFbGVtZW50QXJyYXlCdWZmZXIoMCkKIHsKLSAg
ICBtX3ZlcnRleEF0dHJpYlN0YXRlLnJlc2l6ZShjdHgtPmdldE1heFZlcnRleEF0dHJpYnMoKSk7
CisgICAgbV92ZXJ0ZXhBdHRyaWJTdGF0ZS5yZXNpemUoY3R4LmdldE1heFZlcnRleEF0dHJpYnMo
KSk7CiB9CiAKIHZvaWQgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJhc2U6OnNldEVsZW1lbnRBcnJh
eUJ1ZmZlcihQYXNzUmVmUHRyPFdlYkdMQnVmZmVyPiBidWZmZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZS5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJhc2UuaAppbmRl
eCA2M2UxZGRiOTIyYjcwNDEyODk5YWVkN2JmZjYyZGYzOWVmNDIyNjM1Li4zZjA3ZGRlZWFkMWJm
OWM3YjdkZjdiMGM2ODhjYzhiZTcyMDczYzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlLmgKQEAgLTg0LDcgKzg0
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VmVydGV4QXR0cmliRGl2aXNvcihHQzNEdWludCBp
bmRleCwgR0MzRHVpbnQgZGl2aXNvcik7CiAKIHByb3RlY3RlZDoKLSAgICBXZWJHTFZlcnRleEFy
cmF5T2JqZWN0QmFzZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiwgVkFPVHlwZSk7CisgICAg
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJhc2UoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYsIFZB
T1R5cGUpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RJbXBsKEdyYXBoaWNzQ29udGV4
dDNEKiwgUGxhdGZvcm0zRE9iamVjdCkgPSAwOwogICAgIAogICAgIFZBT1R5cGUgbV90eXBlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9i
amVjdE9FUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5
T2JqZWN0T0VTLmNwcAppbmRleCBkMTM1OTUyNTI1OTRmMzAyZmMxZDQyMmI4Yjk3ZDc3YjBmYjAy
MDY1Li41ZjNiNjU1N2E3MGI1Y2I4NDJjMGMyZWE3NzgxNzhhZmE2NGMwMWZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0
T0VTLmNwcApAQCAtMzQsMjAgKzM0LDIwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVm
PFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM+IFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OmNy
ZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjdHgsIFZBT1R5cGUgdHlwZSkKK1JlZjxX
ZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTPiBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOjpjcmVh
dGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY3R4LCBWQU9UeXBlIHR5cGUpCiB7CiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUyhjdHgsIHR5cGUp
KTsKIH0KIAotV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6V2ViR0xWZXJ0ZXhBcnJheU9iamVj
dE9FUyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjdHgsIFZBT1R5cGUgdHlwZSkKK1dlYkdM
VmVydGV4QXJyYXlPYmplY3RPRVM6OldlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSYgY3R4LCBWQU9UeXBlIHR5cGUpCiAgICAgOiBXZWJHTFZlcnRleEFy
cmF5T2JqZWN0QmFzZShjdHgsIHR5cGUpCiB7Ci0gICAgRXh0ZW5zaW9uczNEKiBleHRlbnNpb25z
ID0gY29udGV4dCgpLT5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCk7CisgICAg
RXh0ZW5zaW9uczNEJiBleHRlbnNpb25zID0gY29udGV4dCgpLT5ncmFwaGljc0NvbnRleHQzRCgp
LT5nZXRFeHRlbnNpb25zKCk7CiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFZBT1R5
cGVEZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgotICAgICAgICBzZXRPYmpl
Y3QoZXh0ZW5zaW9ucy0+Y3JlYXRlVmVydGV4QXJyYXlPRVMoKSk7CisgICAgICAgIHNldE9iamVj
dChleHRlbnNpb25zLmNyZWF0ZVZlcnRleEFycmF5T0VTKCkpOwogICAgICAgICBicmVhazsKICAg
ICB9CiB9CkBAIC01OSwxMiArNTksMTIgQEAgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6fldl
YkdMVmVydGV4QXJyYXlPYmplY3RPRVMoKQogCiB2b2lkIFdlYkdMVmVydGV4QXJyYXlPYmplY3RP
RVM6OmRlbGV0ZU9iamVjdEltcGwoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQzZCwgUGxhdGZv
cm0zRE9iamVjdCBvYmplY3QpCiB7Ci0gICAgRXh0ZW5zaW9uczNEKiBleHRlbnNpb25zID0gY29u
dGV4dDNkLT5nZXRFeHRlbnNpb25zKCk7CisgICAgRXh0ZW5zaW9uczNEJiBleHRlbnNpb25zID0g
Y29udGV4dDNkLT5nZXRFeHRlbnNpb25zKCk7CiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBj
YXNlIFZBT1R5cGVEZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgotICAgICAg
ICBleHRlbnNpb25zLT5kZWxldGVWZXJ0ZXhBcnJheU9FUyhvYmplY3QpOworICAgICAgICBleHRl
bnNpb25zLmRlbGV0ZVZlcnRleEFycmF5T0VTKG9iamVjdCk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhB
cnJheU9iamVjdE9FUy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhB
cnJheU9iamVjdE9FUy5oCmluZGV4IDlhYjExNTVjNGM3ODdmNzYwMjQ0YTliM2QwNjFmNGM1ZTUy
MTQxODcuLmQwOGQyMjNlMzU3MDY2OTRlOTFjYWU2YWNkYzhjNGJjYTlmMTY3ZTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0
T0VTLmgKQEAgLTMzLDEwICszMywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdl
YkdMVmVydGV4QXJyYXlPYmplY3RPRVMgZmluYWwgOiBwdWJsaWMgV2ViR0xWZXJ0ZXhBcnJheU9i
amVjdEJhc2UgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViR0xWZXJ0ZXhBcnJheU9iamVj
dE9FUz4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqLCBWQU9UeXBlKTsKKyAgICBz
dGF0aWMgUmVmPFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM+IGNyZWF0ZShXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlJiwgVkFPVHlwZSk7CiAgICAgdmlydHVhbCB+V2ViR0xWZXJ0ZXhBcnJheU9i
amVjdE9FUygpOwogcHJpdmF0ZToKLSAgICBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UqLCBWQU9UeXBlKTsKKyAgICBXZWJHTFZlcnRleEFycmF5T2Jq
ZWN0T0VTKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmLCBWQU9UeXBlKTsKICAgICB2b2lkIGRl
bGV0ZU9iamVjdEltcGwoR3JhcGhpY3NDb250ZXh0M0QqLCBQbGF0Zm9ybTNET2JqZWN0KSBvdmVy
cmlkZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dDNELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQzRC5oCmluZGV4IDU0MThlYjdhN2RhMGU0OTgxOGQzMzQ3M2IzNmRiYzRk
ZDJhNTA5N2YuLjY5MmQzOGUyNjMwNGNkYTg2NGIwNjk4YTllODMwOTNlNzBiNzI0YmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNE
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
M0QuaApAQCAtMTE3Myw3ICsxMTczLDcgQEAgcHVibGljOgogICAgIC8vIGFsbCBtZXRob2RzIGl0
IGNvbnRhaW5zIG1heSBuZWNlc3NhcmlseSBiZSBzdXBwb3J0ZWQgb24gdGhlCiAgICAgLy8gY3Vy
cmVudCBoYXJkd2FyZS4gTXVzdCBjYWxsIEV4dGVuc2lvbnMzRDo6c3VwcG9ydHMoKSB0bwogICAg
IC8vIGRldGVybWluZSB0aGlzLgotICAgIEV4dGVuc2lvbnMzRCogZ2V0RXh0ZW5zaW9ucygpOwor
ICAgIEV4dGVuc2lvbnMzRCYgZ2V0RXh0ZW5zaW9ucygpOwogCiAgICAgSW50U2l6ZSBnZXRJbnRl
cm5hbEZyYW1lYnVmZmVyU2l6ZSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKaW5kZXggNzdjZjY4N2M2OGYxZWI0NjUzMjdj
NGVhODk2MTBmOWI4NjdhMmM2OC4uYWFkMTNmMzRkNjljZjJmMWRhMmRlYTgzMDZmYzQ1ZDgxYTA1
Y2U2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1Rl
eHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0
dXJlLmNwcApAQCAtNjYsNyArNjYsNyBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0Rm9ybWF0KEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlOjpGb3JtYXQgZm9ybWF0LCB1bgogICAgICAg
ICAqZ2xUeXBlID0gR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEU7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgVGV4dHVyZTo6QkdSQTg6Ci0gICAgICAgIGlmIChjb250ZXh0LT5nZXRF
eHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgiKSkg
eworICAgICAgICBpZiAoY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9FWFRf
dGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgiKSkgewogICAgICAgICAgICAgKmdsRm9ybWF0ID0gRXh0
ZW5zaW9uczNEOjpCR1JBX0VYVDsKICAgICAgICAgICAgICpnbFR5cGUgPSBHcmFwaGljc0NvbnRl
eHQzRDo6VU5TSUdORURfQllURTsKICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5H
TC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0M0RPcGVuR0wuY3BwCmluZGV4IDNkMzEwMmQzZDY2MGJiZjMxNGM4NTM4OWFlZjVhOTk2
NDc5N2IyZmQuLmFlOGJjYTdhZTUxY2UyODcxNjM2ZTFlYTFiY2E0NjllMTZjNmYwYjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHQzRE9wZW5HTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcApAQCAtNzMsNyArNzMsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpyZWxlYXNlU2hhZGVyQ29tcGlsZXIoKQogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6cmVhZFBpeGVsc0FuZENvbnZlcnRUb0JHUkFJZk5lY2Vzc2FyeShpbnQgeCwg
aW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwgdW5zaWduZWQgY2hhciogcGl4ZWxzKQogewog
ICAgIC8vIE5WSURJQSBkcml2ZXJzIGhhdmUgYSBidWcgd2hlcmUgY2FsbGluZyByZWFkUGl4ZWxz
IGluIEJHUkEgY2FuIHJldHVybiB0aGUgd3JvbmcgdmFsdWVzIGZvciB0aGUgYWxwaGEgY2hhbm5l
bCB3aGVuIHRoZSBhbHBoYSBpcyBvZmYgZm9yIHRoZSBjb250ZXh0LgotICAgIGlmICghbV9hdHRy
cy5hbHBoYSAmJiBnZXRFeHRlbnNpb25zKCktPmlzTlZJRElBKCkpIHsKKyAgICBpZiAoIW1fYXR0
cnMuYWxwaGEgJiYgZ2V0RXh0ZW5zaW9ucygpLmlzTlZJRElBKCkpIHsKICAgICAgICAgOjpnbFJl
YWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwg
cGl4ZWxzKTsKICNpZiBVU0UoQUNDRUxFUkFURSkKICAgICAgICAgdkltYWdlX0J1ZmZlciBzcmM7
CkBAIC0xMjEsOSArMTIxLDkgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6cmVzaGFwZUZCT3Mo
Y29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICAgICAgLy8gV2UgZG9uJ3QgYWxsb3cgdGhlIGxvZ2lj
IHdoZXJlIHN0ZW5jaWwgaXMgcmVxdWlyZWQgYW5kIGRlcHRoIGlzIG5vdC4KICAgICAgICAgLy8g
U2VlIEdyYXBoaWNzQ29udGV4dDNEOjp2YWxpZGF0ZUF0dHJpYnV0ZXMuCiAKLSAgICAgICAgRXh0
ZW5zaW9uczNEKiBleHRlbnNpb25zID0gZ2V0RXh0ZW5zaW9ucygpOworICAgICAgICBFeHRlbnNp
b25zM0QmIGV4dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7CiAgICAgICAgIC8vIFVzZSBhIDI0
IGJpdCBkZXB0aCBidWZmZXIgd2hlcmUgd2Uga25vdyB3ZSBoYXZlIGl0LgotICAgICAgICBpZiAo
ZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCIpKQorICAg
ICAgICBpZiAoZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2ls
IikpCiAgICAgICAgICAgICBpbnRlcm5hbERlcHRoU3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIMjRf
U1RFTkNJTDhfRVhUOwogICAgICAgICBlbHNlCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMzA0LDEy
ICszMDQsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW50ZWdlcnYoR0MzRGVudW0g
cG5hbWUsIEdDM0RpbnQqIHZhbHVlKQogI2VuZGlmCiAgICAgY2FzZSBNQVhfVEVYVFVSRV9TSVpF
OgogICAgICAgICA6OmdsR2V0SW50ZWdlcnYoTUFYX1RFWFRVUkVfU0laRSwgdmFsdWUpOwotICAg
ICAgICBpZiAoZ2V0RXh0ZW5zaW9ucygpLT5yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVy
ZVNpemUoKSkKKyAgICAgICAgaWYgKGdldEV4dGVuc2lvbnMoKS5yZXF1aXJlc1Jlc3RyaWN0ZWRN
YXhpbXVtVGV4dHVyZVNpemUoKSkKICAgICAgICAgICAgICp2YWx1ZSA9IHN0ZDo6bWluKDQwOTYs
ICp2YWx1ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTUFYX0NVQkVfTUFQX1RFWFRVUkVf
U0laRToKICAgICAgICAgOjpnbEdldEludGVnZXJ2KE1BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUs
IHZhbHVlKTsKLSAgICAgICAgaWYgKGdldEV4dGVuc2lvbnMoKS0+cmVxdWlyZXNSZXN0cmljdGVk
TWF4aW11bVRleHR1cmVTaXplKCkpCisgICAgICAgIGlmIChnZXRFeHRlbnNpb25zKCkucmVxdWly
ZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplKCkpCiAgICAgICAgICAgICAqdmFsdWUgPSBz
dGQ6Om1pbigxMDI0LCAqdmFsdWUpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgpAQCAt
NDA3LDExICs0MDcsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y2xlYXJEZXB0aChHQzNE
Y2xhbXBmIGRlcHRoKQogI2VuZGlmCiB9CiAKLUV4dGVuc2lvbnMzRCogR3JhcGhpY3NDb250ZXh0
M0Q6OmdldEV4dGVuc2lvbnMoKQorRXh0ZW5zaW9uczNEJiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
RXh0ZW5zaW9ucygpCiB7CiAgICAgaWYgKCFtX2V4dGVuc2lvbnMpCiAgICAgICAgIG1fZXh0ZW5z
aW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMPih0aGlzLCBpc0dMRVMy
Q29tcGxpYW50KCkpOwotICAgIHJldHVybiBtX2V4dGVuc2lvbnMuZ2V0KCk7CisgICAgcmV0dXJu
ICptX2V4dGVuc2lvbnM7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlYWRQaXhlbHMo
R0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwg
R0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCB2b2lkKiBkYXRhKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNE
T3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKaW5kZXggNTVkNWM2OGRjZTJhMzZh
YTAzYWNhODcyOWZlZjRlZjdkNDgxNzZhNC4uMTg2MzcyMTk2Y2VjZjMyYjM5Y2ZiZmI3MDRkN2U5
YjA1NGIzOTRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21t
b24uY3BwCkBAIC0xMzksMjAgKzEzOSwyMCBAQCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNE
PiBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlRm9yQ3VycmVudEdMQ29udGV4dCgpCiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OnZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tl
ZERlcHRoU3RlbmNpbEV4dGVuc2lvbikKIHsKLSAgICBFeHRlbnNpb25zM0QqIGV4dGVuc2lvbnMg
PSBnZXRFeHRlbnNpb25zKCk7CisgICAgRXh0ZW5zaW9uczNEJiBleHRlbnNpb25zID0gZ2V0RXh0
ZW5zaW9ucygpOwogICAgIGlmIChtX2F0dHJzLnN0ZW5jaWwpIHsKLSAgICAgICAgaWYgKGV4dGVu
c2lvbnMtPnN1cHBvcnRzKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikpIHsKLSAgICAgICAg
ICAgIGV4dGVuc2lvbnMtPmVuc3VyZUVuYWJsZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9u
KTsKKyAgICAgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMocGFja2VkRGVwdGhTdGVuY2lsRXh0
ZW5zaW9uKSkgeworICAgICAgICAgICAgZXh0ZW5zaW9ucy5lbnN1cmVFbmFibGVkKHBhY2tlZERl
cHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAgICAgICAgICAvLyBGb3JjZSBkZXB0aCBpZiBzdGVu
Y2lsIGlzIHRydWUuCiAgICAgICAgICAgICBtX2F0dHJzLmRlcHRoID0gdHJ1ZTsKICAgICAgICAg
fSBlbHNlCiAgICAgICAgICAgICBtX2F0dHJzLnN0ZW5jaWwgPSBmYWxzZTsKICAgICB9CiAgICAg
aWYgKG1fYXR0cnMuYW50aWFsaWFzKSB7Ci0gICAgICAgIGlmICghZXh0ZW5zaW9ucy0+c3VwcG9y
dHMoIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIikgfHwgaXNHTEVTMkNvbXBsaWFu
dCgpKQorICAgICAgICBpZiAoIWV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0FOR0xFX2ZyYW1lYnVm
ZmVyX211bHRpc2FtcGxlIikgfHwgaXNHTEVTMkNvbXBsaWFudCgpKQogICAgICAgICAgICAgbV9h
dHRycy5hbnRpYWxpYXMgPSBmYWxzZTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgZXh0ZW5z
aW9ucy0+ZW5zdXJlRW5hYmxlZCgiR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiKTsK
KyAgICAgICAgICAgIGV4dGVuc2lvbnMuZW5zdXJlRW5hYmxlZCgiR0xfQU5HTEVfZnJhbWVidWZm
ZXJfbXVsdGlzYW1wbGUiKTsKICAgICB9CiB9CiAKQEAgLTE4ODksMTcgKzE4ODksMTcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6dGV4SW1hZ2UyRERpcmVjdChHQzNEZW51bSB0YXJnZXQsIEdD
M0RpbnQgbGV2ZWwsIEdDM0RlbnUKIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZHJhd0FycmF5
c0luc3RhbmNlZChHQzNEZW51bSBtb2RlLCBHQzNEaW50IGZpcnN0LCBHQzNEc2l6ZWkgY291bnQs
IEdDM0RzaXplaSBwcmltY291bnQpCiB7Ci0gICAgZ2V0RXh0ZW5zaW9ucygpLT5kcmF3QXJyYXlz
SW5zdGFuY2VkKG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsKKyAgICBnZXRFeHRlbnNp
b25zKCkuZHJhd0FycmF5c0luc3RhbmNlZChtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRyYXdFbGVtZW50c0luc3RhbmNlZChHQzNE
ZW51bSBtb2RlLCBHQzNEc2l6ZWkgY291bnQsIEdDM0RlbnVtIHR5cGUsIEdDM0RpbnRwdHIgb2Zm
c2V0LCBHQzNEc2l6ZWkgcHJpbWNvdW50KQogewotICAgIGdldEV4dGVuc2lvbnMoKS0+ZHJhd0Vs
ZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNvdW50LCB0eXBlLCBvZmZzZXQsIHByaW1jb3VudCk7Cisg
ICAgZ2V0RXh0ZW5zaW9ucygpLmRyYXdFbGVtZW50c0luc3RhbmNlZChtb2RlLCBjb3VudCwgdHlw
ZSwgb2Zmc2V0LCBwcmltY291bnQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0
ZXhBdHRyaWJEaXZpc29yKEdDM0R1aW50IGluZGV4LCBHQzNEdWludCBkaXZpc29yKQogewotICAg
IGdldEV4dGVuc2lvbnMoKS0+dmVydGV4QXR0cmliRGl2aXNvcihpbmRleCwgZGl2aXNvcik7Cisg
ICAgZ2V0RXh0ZW5zaW9ucygpLnZlcnRleEF0dHJpYkRpdmlzb3IoaW5kZXgsIGRpdmlzb3IpOwog
fQogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294816</attachid>
            <date>2016-11-14 22:46:14 -0800</date>
            <delta_ts>2016-11-14 23:13:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164749-20161114224613.patch</filename>
            <type>text/plain</type>
            <size>131025</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4NzI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjczOTZiZWM3N2MyYmQw
ZTQ1NzQ0YzcxZTNmYjEzZTJhN2E0NjY5MC4uZjI4NDNkMTNlOTkyYWFlZDE5NTBkNGU0OTA3MDQx
ZWRjN2RiN2RmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwOCBAQAorMjAxNi0xMS0xNCAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJHTF0g
TWlncmF0ZSBjb25zdHJ1Y3Rpb24gZnVuY3Rpb25zIGZyb20gcG9pbnRlcnMgdG8gcmVmZXJlbmNl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0NzQ5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWVjaGFu
aWNhbCBmaW5kL3JlcGxhY2UuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhlcmUg
aXMgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogaHRtbC9jYW52YXMvQU5HTEVJbnN0
YW5jZWRBcnJheXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QU5HTEVJbnN0YW5jZWRBcnJheXM6
OkFOR0xFSW5zdGFuY2VkQXJyYXlzKToKKyAgICAgICAgKFdlYkNvcmU6OkFOR0xFSW5zdGFuY2Vk
QXJyYXlzOjpzdXBwb3J0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6QU5HTEVJbnN0YW5jZWRBcnJh
eXM6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpBTkdMRUlu
c3RhbmNlZEFycmF5czo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2Vi
Q29yZTo6QU5HTEVJbnN0YW5jZWRBcnJheXM6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuaDoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9FWFRCbGVuZE1pbk1heC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFWFRCbGVu
ZE1pbk1heDo6RVhUQmxlbmRNaW5NYXgpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0VYVEJsZW5k
TWluTWF4Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvRVhURnJhZ0RlcHRoLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVYVEZyYWdEZXB0aDo6RVhURnJhZ0RlcHRoKToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9FWFRGcmFnRGVwdGguaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRTaGFkZXJU
ZXh0dXJlTE9ELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVYVFNoYWRlclRleHR1cmVMT0Q6OkVY
VFNoYWRlclRleHR1cmVMT0QpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0VYVFNoYWRlclRleHR1
cmVMT0QuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRUZXh0dXJlRmlsdGVyQW5pc290cm9w
aWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljOjpF
WFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0VYVFRl
eHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL0VYVHNSR0Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RVhUc1JHQjo6RVhUc1JHQik6CisgICAgICAgICogaHRt
bC9jYW52YXMvRVhUc1JHQi5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU0VsZW1lbnRJbmRl
eFVpbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T0VTRWxlbWVudEluZGV4VWludDo6T0VTRWxl
bWVudEluZGV4VWludCk6CisgICAgICAgICogaHRtbC9jYW52YXMvT0VTRWxlbWVudEluZGV4VWlu
dC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6T0VTU3RhbmRhcmREZXJpdmF0aXZlczo6T0VTU3RhbmRhcmREZXJp
dmF0aXZlcyk6CisgICAgICAgICogaHRtbC9jYW52YXMvT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5o
OgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpPRVNUZXh0dXJlRmxvYXQ6Ok9FU1RleHR1cmVGbG9hdCk6CisgICAgICAgICogaHRt
bC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvT0VTVGV4
dHVyZUZsb2F0TGluZWFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9FU1RleHR1cmVGbG9hdExp
bmVhcjo6T0VTVGV4dHVyZUZsb2F0TGluZWFyKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNU
ZXh0dXJlRmxvYXRMaW5lYXIuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFs
ZkZsb2F0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9FU1RleHR1cmVIYWxmRmxvYXQ6Ok9FU1Rl
eHR1cmVIYWxmRmxvYXQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxv
YXQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok9FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXI6Ok9FU1RleHR1
cmVIYWxmRmxvYXRMaW5lYXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1RleHR1cmVIYWxm
RmxvYXRMaW5lYXIuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPRVNWZXJ0ZXhBcnJheU9iamVjdDo6T0VTVmVydGV4
QXJyYXlPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6T0VTVmVydGV4QXJyYXlPYmplY3Q6OmNy
ZWF0ZVZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKFdlYkNvcmU6Ok9FU1ZlcnRleEFycmF5T2Jq
ZWN0OjpkZWxldGVWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJDb3JlOjpPRVNWZXJ0ZXhB
cnJheU9iamVjdDo6aXNWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJDb3JlOjpPRVNWZXJ0
ZXhBcnJheU9iamVjdDo6YmluZFZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmluaXRpYWxpemVWZXJ0ZXhBcnJheU9iamVjdHMpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aW5pdGlhbGl6ZVNoYWRlckV4dGVuc2lv
bnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZHJhd0J1ZmZl
cnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlVmVy
dGV4QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aXNW
ZXJ0ZXhBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpi
aW5kVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6Z2V0RXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
QnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQnVmZmVyOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xCdWZmZXI6OldlYkdMQnVmZmVyKToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTEJ1ZmZlci5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29tcHJl
c3NlZFRleHR1cmVBVEMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVzc2VkVGV4
dHVyZUFUQzo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQyk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9X
ZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xD
b21wcmVzc2VkVGV4dHVyZVBWUlRDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQpOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5oOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpXZWJHTENvbXByZXNzZWRU
ZXh0dXJlUzNUQyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNU
Qzo6c3VwcG9ydGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0
dXJlUzNUQy5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29udGV4dE9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbnRleHRPYmplY3Q6OldlYkdMQ29udGV4dE9iamVj
dCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0T2JqZWN0Lmg6CisgICAgICAg
ICogaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTERlYnVnUmVuZGVyZXJJbmZvOjpXZWJHTERlYnVnUmVuZGVyZXJJbmZvKToKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTERlYnVnUmVuZGVyZXJJbmZvLmg6CisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xEZWJ1Z1NoYWRlcnM6OldlYkdMRGVidWdTaGFkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMRGVidWdTaGFkZXJzOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlKToKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMRGVwdGhUZXh0dXJlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRGVwdGhUZXh0dXJl
OjpXZWJHTERlcHRoVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTERlcHRoVGV4dHVy
ZTo6c3VwcG9ydGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5o
OgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xEcmF3QnVmZmVyczo6V2ViR0xEcmF3QnVmZmVycyk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTERyYXdCdWZmZXJzOjpzdXBwb3J0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xEcmF3QnVmZmVyczo6ZHJhd0J1ZmZlcnNXRUJHTCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTERyYXdCdWZmZXJzOjpzYXRpc2ZpZXNXZWJHTFJlcXVpcmVtZW50cyk6CisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMRXh0ZW5zaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRXh0ZW5zaW9uOjpXZWJH
TEV4dGVuc2lvbik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMRXh0ZW5zaW9uOjpyZWYpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xFeHRlbnNpb246OmRlcmVmKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRXh0ZW5zaW9u
Ojpjb250ZXh0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjpXZWJHTEZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OmRyYXdCdWZmZXJzSWZOZWNlc3NhcnkpOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaDoKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTExvc2VDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTG9zZUNvbnRl
eHQ6OldlYkdMTG9zZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMb3NlQ29udGV4
dDo6bG9zZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMb3NlQ29udGV4dDo6cmVz
dG9yZUNvbnRleHQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMTG9zZUNvbnRleHQuaDoK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTE9iamVjdDo6V2ViR0xPYmplY3QpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
T2JqZWN0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUHJvZ3JhbTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUHJvZ3JhbTo6V2ViR0xQcm9ncmFtKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFBy
b2dyYW0uaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFF1ZXJ5LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUXVlcnk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFF1
ZXJ5OjpXZWJHTFF1ZXJ5KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFF1ZXJ5Lmg6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJidWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmJ1ZmZlcjo6V2ViR0xSZW5kZXJidWZmZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L1dlYkdMUmVuZGVyYnVmZmVyLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6
aW5pdGlhbGl6ZVZlcnRleEFycmF5T2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnMpOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnNldHVwRmxhZ3MpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y2hlY2tPYmplY3RUb0JlQm91bmQpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRlQnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZUZyYW1lYnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0
ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
Y3JlYXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpjcmVhdGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6Y3JlYXRlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmRlbGV0ZU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVdlYkdMT2JqZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmZyYW1lYnVm
ZmVyVGV4dHVyZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmdldFVuaWZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6cmVhZFBpeGVscyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpsb3NlQ29udGV4dEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6bWF5YmVSZXN0b3JlQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzdXBwb3J0c0RyYXdCdWZmZXJzKToKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9XZWJHTFNhbXBsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xT
YW1wbGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xTYW1wbGVyOjpXZWJHTFNh
bXBsZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMU2FtcGxlci5oOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMU2hh
ZGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xTaGFkZXI6OldlYkdMU2hhZGVy
KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFNoYWRlci5oOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL1dlYkdMU2hhcmVkT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMU2hh
cmVkT2JqZWN0OjpXZWJHTFNoYXJlZE9iamVjdCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xTaGFyZWRPYmplY3QuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFN5bmMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xTeW5jOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xTeW5jOjpXZWJHTFN5bmMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMU3luYy5o
OgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFRleHR1cmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFRleHR1
cmU6OldlYkdMVGV4dHVyZSk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmg6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFRyYW5zZm9ybUZlZWRiYWNrOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xUcmFuc2Zvcm1GZWVkYmFjazo6V2ViR0xUcmFuc2Zvcm1GZWVkYmFjayk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5oOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xWZXJ0ZXhBcnJheU9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMVmVydGV4QXJyYXlPYmplY3Q6OldlYkdMVmVydGV4QXJyYXlPYmplY3QpOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3QuaDoKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZTo6V2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJhc2Up
OgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlLmg6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6V2ViR0xWZXJ0ZXhBcnJheU9i
amVjdE9FUyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOjpk
ZWxldGVPYmplY3RJbXBsKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5
T2JqZWN0T0VTLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjb252ZXJ0Rm9ybWF0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OnJlYWRQaXhlbHNBbmRDb252ZXJ0VG9CR1JBSWZOZWNlc3Nhcnkp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnJlc2hhcGVGQk9zKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbnRlZ2Vydik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2YWxpZGF0ZURlcHRoU3Rl
bmNpbCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZHJhd0FycmF5c0lu
c3RhbmNlZCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZHJhd0VsZW1l
bnRzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0
ZXhBdHRyaWJEaXZpc29yKToKKwogMjAxNi0xMS0xNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIE1vdmUgU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIgdG8gU2VjdXJpdHlPcmlnaW5EYXRhCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9BTkdMRUluc3RhbmNlZEFycmF5cy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9BTkdMRUluc3RhbmNlZEFycmF5cy5jcHAKaW5kZXgg
NDU5MDVlNjExMWNhNzg3NDUzMjhhMjZkOWU4OWVkMzMyNDc5YTZkOS4uMTdlNmQ2YzhlYjRkZmQ3
NDc3MjgwZTc3MmE5YTkyOTEyODJhZDc2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmNwcApAQCAtMzQsNyArMzQsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLUFOR0xFSW5zdGFuY2VkQXJyYXlzOjpBTkdMRUluc3RhbmNl
ZEFycmF5cyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjb250ZXh0KQorQU5HTEVJbnN0YW5j
ZWRBcnJheXM6OkFOR0xFSW5zdGFuY2VkQXJyYXlzKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Um
IGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewogfQpAQCAtNDgsMTQg
KzQ4LDE0IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIEFOR0xFSW5zdGFuY2VkQXJy
YXlzOjpnZXROYW1lKCkgY29uc3QKICAgICByZXR1cm4gQU5HTEVJbnN0YW5jZWRBcnJheXNOYW1l
OwogfQogCi1ib29sIEFOR0xFSW5zdGFuY2VkQXJyYXlzOjpzdXBwb3J0ZWQoV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSogY29udGV4dCkKK2Jvb2wgQU5HTEVJbnN0YW5jZWRBcnJheXM6OnN1cHBv
cnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogewogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKICAgICByZXR1cm4gdHJ1ZTsKICNl
bGlmIFBMQVRGT1JNKEdUSykKLSAgICBFeHRlbnNpb25zM0QqIGV4dGVuc2lvbnMgPSBjb250ZXh0
LT5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCk7Ci0gICAgcmV0dXJuIGV4dGVu
c2lvbnMtPnN1cHBvcnRzKCJHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIik7CisgICAgRXh0ZW5z
aW9uczNEJiBleHRlbnNpb25zID0gY29udGV4dC5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRl
bnNpb25zKCk7CisgICAgcmV0dXJuIGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0FOR0xFX2luc3Rh
bmNlZF9hcnJheXMiKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIHJl
dHVybiBmYWxzZTsKQEAgLTY0LDIzICs2NCwyMyBAQCBib29sIEFOR0xFSW5zdGFuY2VkQXJyYXlz
OjpzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29udGV4dCkKIAogdm9pZCBB
TkdMRUluc3RhbmNlZEFycmF5czo6ZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDM0RlbnVtIG1v
ZGUsIEdDM0RpbnQgZmlyc3QsIEdDM0RzaXplaSBjb3VudCwgR0MzRHNpemVpIHByaW1jb3VudCkK
IHsKLSAgICBpZiAobV9jb250ZXh0LT5pc0NvbnRleHRMb3N0KCkpCisgICAgaWYgKG1fY29udGV4
dC5pc0NvbnRleHRMb3N0KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPmRyYXdB
cnJheXNJbnN0YW5jZWQobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpOworICAgIG1fY29u
dGV4dC5kcmF3QXJyYXlzSW5zdGFuY2VkKG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsK
IH0KIAogdm9pZCBBTkdMRUluc3RhbmNlZEFycmF5czo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5H
TEUoR0MzRGVudW0gbW9kZSwgR0MzRHNpemVpIGNvdW50LCBHQzNEZW51bSB0eXBlLCBsb25nIGxv
bmcgb2Zmc2V0LCBHQzNEc2l6ZWkgcHJpbWNvdW50KQogewotICAgIGlmIChtX2NvbnRleHQtPmlz
Q29udGV4dExvc3QoKSkKKyAgICBpZiAobV9jb250ZXh0LmlzQ29udGV4dExvc3QoKSkKICAgICAg
ICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNv
dW50LCB0eXBlLCBvZmZzZXQsIHByaW1jb3VudCk7CisgICAgbV9jb250ZXh0LmRyYXdFbGVtZW50
c0luc3RhbmNlZChtb2RlLCBjb3VudCwgdHlwZSwgb2Zmc2V0LCBwcmltY291bnQpOwogfQogCiB2
b2lkIEFOR0xFSW5zdGFuY2VkQXJyYXlzOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0MzRHVp
bnQgaW5kZXgsIEdDM0R1aW50IGRpdmlzb3IpCiB7Ci0gICAgaWYgKG1fY29udGV4dC0+aXNDb250
ZXh0TG9zdCgpKQorICAgIGlmIChtX2NvbnRleHQuaXNDb250ZXh0TG9zdCgpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJEaXZpc29yKGluZGV4LCBkaXZpc29y
KTsKKyAgICBtX2NvbnRleHQudmVydGV4QXR0cmliRGl2aXNvcihpbmRleCwgZGl2aXNvcik7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9BTkdMRUluc3RhbmNlZEFycmF5cy5oCmluZGV4IDc2NWVjZmU2ODlmNWFmM2JlYjJhYTUx
NTc1ZjJhNzU0MDc1YjVhODkuLmNkMTZjMjNiZGI5Y2ZkYTQxMDFiZWFkNmU5N2Q0NDgwYzEyMzYy
YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2Vk
QXJyYXlzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQU5HTEVJbnN0YW5jZWRB
cnJheXMuaApAQCAtMzMsMTIgKzMzLDEyIEBAIGNsYXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U7CiAKIGNsYXNzIEFOR0xFSW5zdGFuY2VkQXJyYXlzIGZpbmFsIDogcHVibGljIFdlYkdMRXh0
ZW5zaW9uIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBBTkdMRUluc3RhbmNlZEFycmF5cyhXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAgZXhwbGljaXQgQU5HTEVJbnN0YW5jZWRBcnJh
eXMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwgfkFOR0xFSW5zdGFu
Y2VkQXJyYXlzKCk7CiAKICAgICB2aXJ0dWFsIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0
OwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uq
KTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYp
OwogCiAgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0MzRGVudW0gbW9kZSwgR0Mz
RGludCBmaXJzdCwgR0MzRHNpemVpIGNvdW50LCBHQzNEc2l6ZWkgcHJpbWNvdW50KTsKICAgICB2
b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDM0RlbnVtIG1vZGUsIEdDM0RzaXplaSBj
b3VudCwgR0MzRGVudW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwgR0MzRHNpemVpIHByaW1jb3Vu
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRCbGVuZE1pbk1h
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRCbGVuZE1pbk1heC5jcHAKaW5k
ZXggZjVlYWRhNjZmYTUyYjVkNmQ0OWNjYTMwZGFkMDg0YzM4ODJhZWMxYS4uNzYyYTVkOWY2NzVh
NjJmMGQ3NTE5MTMyYjgwODFiODBlYTUwOGU2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvRVhUQmxlbmRNaW5NYXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0VYVEJsZW5kTWluTWF4LmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLUVYVEJsZW5kTWluTWF4OjpFWFRCbGVuZE1pbk1heChXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlKiBjb250ZXh0KQorRVhUQmxlbmRNaW5NYXg6OkVYVEJsZW5kTWluTWF4KFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihj
b250ZXh0KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhU
QmxlbmRNaW5NYXguaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVEJsZW5kTWluTWF4
LmgKaW5kZXggOWVhZjI5ZmQ2MTEzZjE5NzBmZGFmOThhYTkzMDA0NTRjZjMxYTRmOC4uNTk1OTY4
NDRlZjNhZmZmNDEzMjQyNmMzYzAxYWZkYTA3YmRiZTE1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvRVhUQmxlbmRNaW5NYXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9FWFRCbGVuZE1pbk1heC5oCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgRVhUQmxlbmRNaW5NYXggZmluYWwgOiBwdWJsaWMgV2ViR0xFeHRl
bnNpb24gewogcHVibGljOgotICAgIGV4cGxpY2l0IEVYVEJsZW5kTWluTWF4KFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UqKTsKKyAgICBleHBsaWNpdCBFWFRCbGVuZE1pbk1heChXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVhbCB+RVhUQmxlbmRNaW5NYXgoKTsKIAogICAg
IEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhURnJhZ0RlcHRoLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0VYVEZyYWdEZXB0aC5jcHAKaW5kZXggODY3MDczNmNjYzJiOGE1NjYxNDZl
ZTg1ZjU5MTVkMWJmZmU0MzA0OS4uNjI2MzA5YzgzYmQxYzc0ZDU3NmQ1ODAyMmJlMTM0OTY2NGJl
ZGExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhURnJhZ0RlcHRo
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRGcmFnRGVwdGguY3BwCkBA
IC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRVhURnJhZ0RlcHRoOjpF
WFRGcmFnRGVwdGgoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29udGV4dCkKK0VYVEZyYWdE
ZXB0aDo6RVhURnJhZ0RlcHRoKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAg
ICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvRVhURnJhZ0RlcHRoLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9FWFRGcmFnRGVwdGguaAppbmRleCA5Y2Y3MGViMTZhMzE5NTg0ODNhMGM5YjlhYzZkNDFh
ZDdiNWFkYmE0Li41ZThhNGY5YzJmM2Q2NjEzNDJlNDhjNmQ0OTc3MDY4ZGMyMGYyOWU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRGcmFnRGVwdGguaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRGcmFnRGVwdGguaApAQCAtMzEsNyArMzEsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEVYVEZyYWdEZXB0aCBmaW5hbCA6IHB1Ymxp
YyBXZWJHTEV4dGVuc2lvbiB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgRVhURnJhZ0RlcHRoKFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBleHBsaWNpdCBFWFRGcmFnRGVwdGgoV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwgfkVYVEZyYWdEZXB0aCgpOwog
CiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRTaGFkZXJUZXh0dXJlTE9ELmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFNoYWRlclRleHR1cmVMT0QuY3BwCmluZGV4IDBk
YTMyNWQwMDgwOTZmZmRjZTg3MTM0ZTE3YzI2NzA4YzMzNjI0NTIuLjQ2ZTQwNmE0MzQ4ZWZlZDg5
OWIyMDcxMDAzNzQzZmRjM2Y3NjY0NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0VYVFNoYWRlclRleHR1cmVMT0QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0VYVFNoYWRlclRleHR1cmVMT0QuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotRVhUU2hhZGVyVGV4dHVyZUxPRDo6RVhUU2hhZGVyVGV4dHVyZUxP
RChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjb250ZXh0KQorRVhUU2hhZGVyVGV4dHVyZUxP
RDo6RVhUU2hhZGVyVGV4dHVyZUxPRChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0
KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFNoYWRlclRleHR1cmVMT0QuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0VYVFNoYWRlclRleHR1cmVMT0QuaAppbmRleCBlMDAxOTJhNzFhZmE1
MjhkMmNjMDg4MmZjMTI5ZDNhYWEyNTQ5ZjZlLi40N2MxOTJmMjA1OTk3YWNkMzAwZWUyNmJkZWMw
OTUzZWNkZmMxNDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRT
aGFkZXJUZXh0dXJlTE9ELmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUU2hh
ZGVyVGV4dHVyZUxPRC5oCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgRVhUU2hhZGVyVGV4dHVyZUxPRCBmaW5hbCA6IHB1YmxpYyBXZWJHTEV4dGVuc2lvbiB7
CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgRVhUU2hhZGVyVGV4dHVyZUxPRChXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlKik7CisgICAgZXhwbGljaXQgRVhUU2hhZGVyVGV4dHVyZUxPRChXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVhbCB+RVhUU2hhZGVyVGV4dHVyZUxPRCgp
OwogCiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlRmlsdGVyQW5pc290cm9w
aWMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUVGV4dHVyZUZpbHRlckFuaXNv
dHJvcGljLmNwcAppbmRleCBkYTc0YzRiZTEzODk2M2EyOTg1NmYzZjU5MDBhMDVhOTg3Y2E5NzNl
Li4wYmQzZGZhMmJlNzU3NDkzYjU0N2U3ZjI0YzhkMDdlOGVmMzYxZWI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFRleHR1cmVGaWx0ZXJBbmlzb3Ry
b3BpYy5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1FWFRU
ZXh0dXJlRmlsdGVyQW5pc290cm9waWM6OkVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYyhXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjb250ZXh0KQorRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJv
cGljOjpFWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlRmlsdGVyQW5pc290cm9w
aWMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFRleHR1cmVGaWx0ZXJBbmlzb3Ry
b3BpYy5oCmluZGV4IGQxZjI0ZjY1MWU3NGZhYTJiMTBmNDQ5MTFjYmFjYzg1ZDQ5MzhjOWYuLjQx
OTdkNWZiYjQwNTRkODU1NWRkMDU1OTNhZTUxZTE3NzA0NzBiZTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5o
CkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRVhUVGV4dHVy
ZUZpbHRlckFuaXNvdHJvcGljIGZpbmFsIDogcHVibGljIFdlYkdMRXh0ZW5zaW9uIHsKIHB1Ymxp
YzoKLSAgICBleHBsaWNpdCBFWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMoV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSopOworICAgIGV4cGxpY2l0IEVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3Bp
YyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVhbCB+RVhUVGV4dHVyZUZp
bHRlckFuaXNvdHJvcGljKCk7CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVHNSR0Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUc1JHQi5jcHAKaW5kZXggMjRmNTA4
ODg2MzVkNGMxNjk0OGQwZjZiMzZlNTFiNzIyYjc4M2VlNS4uZTRlZGY1MWM3NDVhMGI4NzA4NTYy
MDIzODE4ZDkzYTNjMDZmNWM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvRVhUc1JHQi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUc1JHQi5j
cHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1FWFRzUkdCOjpF
WFRzUkdCKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRleHQpCitFWFRzUkdCOjpFWFRz
UkdCKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVu
c2lvbihjb250ZXh0KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvRVhUc1JHQi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUc1JHQi5oCmluZGV4
IGM3YzBkYTQxNDQ1OWE0NzRmNGMxY2MwZjc2MDBhZDFjMzNmNTEwOGQuLjRhNjljYmE3NTUyYzk1
MmI1OTVhNmMyY2YyZjczOWU1M2U4OTAzYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0VYVHNSR0IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRz
UkdCLmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBFWFRz
UkdCIGZpbmFsIDogcHVibGljIFdlYkdMRXh0ZW5zaW9uIHsKIHB1YmxpYzoKLSAgICBleHBsaWNp
dCBFWFRzUkdCKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBleHBsaWNpdCBFWFRz
UkdCKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKICAgICB2aXJ0dWFsIH5FWFRzUkdCKCk7
CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU0VsZW1lbnRJbmRleFVpbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTRWxlbWVudEluZGV4VWludC5jcHAKaW5kZXgg
NjViNjgzOGRlYjc4OTUyNDE1NDMxYzEyNGU0ODJkM2I2MTdiNTVkZS4uMTAxYzVmMTBkNzUwMGY3
YmYyZjk5MTFjMzY2M2ExMDAyNDU0NDU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvT0VTRWxlbWVudEluZGV4VWludC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvT0VTRWxlbWVudEluZGV4VWludC5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1PRVNFbGVtZW50SW5kZXhVaW50OjpPRVNFbGVtZW50SW5kZXhV
aW50KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRleHQpCitPRVNFbGVtZW50SW5kZXhV
aW50OjpPRVNFbGVtZW50SW5kZXhVaW50KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRl
eHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTRWxlbWVudEluZGV4VWludC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvT0VTRWxlbWVudEluZGV4VWludC5oCmluZGV4IDc5NjBkYTQ4ZmI0
YmE1NjNlNmViZjFmZTA0NjBkMTkwNzgyYWE5NmEuLjQ2MDMyMWQ0NDhhMThiYTczY2IxOTU1YzMy
NDdlNDUxZTFjMTFmNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09F
U0VsZW1lbnRJbmRleFVpbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNF
bGVtZW50SW5kZXhVaW50LmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBPRVNFbGVtZW50SW5kZXhVaW50IGZpbmFsIDogcHVibGljIFdlYkdMRXh0ZW5zaW9u
IHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBPRVNFbGVtZW50SW5kZXhVaW50KFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UqKTsKKyAgICBleHBsaWNpdCBPRVNFbGVtZW50SW5kZXhVaW50KFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKICAgICB2aXJ0dWFsIH5PRVNFbGVtZW50SW5kZXhVaW50
KCk7CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5j
cHAKaW5kZXggZTc1NGFjZjczYzk4ODZmN2M5YmM3Y2ZjZmEyNmM5NjBiN2I1MmM5YS4uZGNiYjgx
OWUzNDhlNDQ3OGY2ZWU0NWZmMTA3NDkwMjNjNDAzZGRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5jcHAKQEAgLTMxLDcg
KzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1PRVNTdGFuZGFyZERlcml2YXRpdmVz
OjpPRVNTdGFuZGFyZERlcml2YXRpdmVzKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRl
eHQpCitPRVNTdGFuZGFyZERlcml2YXRpdmVzOjpPRVNTdGFuZGFyZERlcml2YXRpdmVzKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250
ZXh0KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTU3Rh
bmRhcmREZXJpdmF0aXZlcy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTU3RhbmRh
cmREZXJpdmF0aXZlcy5oCmluZGV4IDNhMjk2OWRmNTdlMjAwZjUxMjRjZGUzMzUwZjZlNDRhNTc3
MjFlMzUuLmNjZmM4ODQwNjg3YzNiMTY3NWJkYTFlMmQxMWFmOTdkMjhmMjM5MDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNTdGFuZGFyZERlcml2YXRpdmVzLmgK
QEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBPRVNTdGFuZGFy
ZERlcml2YXRpdmVzIGZpbmFsIDogcHVibGljIFdlYkdMRXh0ZW5zaW9uIHsKIHB1YmxpYzoKLSAg
ICBleHBsaWNpdCBPRVNTdGFuZGFyZERlcml2YXRpdmVzKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UqKTsKKyAgICBleHBsaWNpdCBPRVNTdGFuZGFyZERlcml2YXRpdmVzKFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmKTsKICAgICB2aXJ0dWFsIH5PRVNTdGFuZGFyZERlcml2YXRpdmVzKCk7CiAK
ICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuY3BwCmluZGV4IGI4ZmZlYzdkM2Nl
OTc4NWE0MDUyZWQwYTM5MDE0MWNiZGY3MzVlOTEuLjYwZDJmN2I1MGI4YmEwMmM0MTY3OTNlMmI5
YzM4OTk4ZDFhNWU4Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09F
U1RleHR1cmVGbG9hdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4
dHVyZUZsb2F0LmNwcApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LU9FU1RleHR1cmVGbG9hdDo6T0VTVGV4dHVyZUZsb2F0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UqIGNvbnRleHQpCitPRVNUZXh0dXJlRmxvYXQ6Ok9FU1RleHR1cmVGbG9hdChXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkK
IHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVG
bG9hdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0LmgKaW5k
ZXggYWJhNzlkMzFiMjJhNDlmODNlOTUzODRmYzA5NjlkYjg2OWVmZjM1YS4uZTdjMDcxNWRkNzBk
NzZiOTE4ZjVhMjJhYzYxM2I1ZDRlYTVmMzQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvT0VTVGV4dHVyZUZsb2F0LmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBPRVNUZXh0dXJlRmxvYXQgZmluYWwgOiBwdWJsaWMgV2ViR0xFeHRlbnNp
b24gewogcHVibGljOgotICAgIE9FU1RleHR1cmVGbG9hdChXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlKik7CisgICAgT0VTVGV4dHVyZUZsb2F0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsK
ICAgICB2aXJ0dWFsIH5PRVNUZXh0dXJlRmxvYXQoKTsKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0
TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvT0VTVGV4dHVyZUZsb2F0TGluZWFyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL09FU1RleHR1cmVGbG9hdExpbmVhci5jcHAKaW5kZXggMmExMGE1MGFkZWZhMDVhZGNiNTQy
Y2NjNGE4YzhmZjI5MzBiNDBlZS4uZmNlOTE3OTA4NGRkMzJiMDE1Y2M3MDkxZWY5MTc1MDQzNmU4
M2JjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZs
b2F0TGluZWFyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJl
RmxvYXRMaW5lYXIuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotT0VTVGV4dHVyZUZsb2F0TGluZWFyOjpPRVNUZXh0dXJlRmxvYXRMaW5lYXIoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSogY29udGV4dCkKK09FU1RleHR1cmVGbG9hdExpbmVhcjo6T0VTVGV4
dHVyZUZsb2F0TGluZWFyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAg
OiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0TGluZWFyLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXRMaW5lYXIuaAppbmRleCA1N2RiYWRkNmM4MDg4NGE5
NjYzZTkxYTE5MDQxMmExNDI1YTlkZGIxLi45M2RkMTM0NjBjZDNhYzA1Y2U1MWM3M2E1MDVkM2M4
NGM2YTNmM2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0
dXJlRmxvYXRMaW5lYXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0
dXJlRmxvYXRMaW5lYXIuaApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIE9FU1RleHR1cmVGbG9hdExpbmVhciBmaW5hbCA6IHB1YmxpYyBXZWJHTEV4dGVuc2lv
biB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgT0VTVGV4dHVyZUZsb2F0TGluZWFyKFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBleHBsaWNpdCBPRVNUZXh0dXJlRmxvYXRMaW5lYXIo
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwgfk9FU1RleHR1cmVGbG9h
dExpbmVhcigpOwogCiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZs
b2F0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQu
Y3BwCmluZGV4IGJkZDE2N2MwMzI3YTNmODVhYzc0YWNjNzg2OGEwMjNlMmM4ZmQ0MDcuLmYxZjc0
OTZkZDJkY2UwZWYxMjcwYTM0YTQwMTk1NThiYzZjMjE5NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQuY3BwCkBAIC0zMSw3ICszMSw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotT0VTVGV4dHVyZUhhbGZGbG9hdDo6T0VTVGV4
dHVyZUhhbGZGbG9hdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjb250ZXh0KQorT0VTVGV4
dHVyZUhhbGZGbG9hdDo6T0VTVGV4dHVyZUhhbGZGbG9hdChXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQuaAppbmRleCA3
MjVlYzY2NTQ0ZDAxYWJhOTg5YjZkMWUyYTAwNzE4MTE1Y2RkOTJhLi5iM2Y2NzZkZDczYWE1NTAw
ZjE4NzVmNzIwZjBjN2ExMWFjMDAyNDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5oCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgT0VTVGV4dHVyZUhhbGZGbG9hdCBmaW5hbCA6IHB1YmxpYyBXZWJH
TEV4dGVuc2lvbiB7CiBwdWJsaWM6Ci0gICAgT0VTVGV4dHVyZUhhbGZGbG9hdChXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlKik7CisgICAgT0VTVGV4dHVyZUhhbGZGbG9hdChXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVhbCB+T0VTVGV4dHVyZUhhbGZGbG9hdCgpOwogCiAg
ICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXIuY3Bw
CmluZGV4IDQyMTFjODA2MjczMzNiYmJlNDFiYTk1NWRmNDBjOWE1MzU1MTJkYjQuLjM1OWUzMDAx
NmUzOTZiOTU2NTY4OTAwMzE2MDkyODhiYTc2NzIxYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXIuY3BwCkBAIC0z
MCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotT0VTVGV4dHVyZUhhbGZGbG9h
dExpbmVhcjo6T0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhcihXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlKiBjb250ZXh0KQorT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhcjo6T0VTVGV4dHVyZUhhbGZG
bG9hdExpbmVhcihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2Vi
R0xFeHRlbnNpb24oY29udGV4dCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXIuaAppbmRleCBlZGM1MjlhOWZhNjYz
MTdlNDg2NGFlZjA3NWI0Nzg1N2I3ZWVhOWVmLi40ODEwYTExMmJhOWU5MmE1ZmNlZjQwODMyNjJl
OWFkZWJhZmFjNzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNU
ZXh0dXJlSGFsZkZsb2F0TGluZWFyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
T0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhci5oCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhciBmaW5hbCA6IHB1Ymxp
YyBXZWJHTEV4dGVuc2lvbiB7CiBwdWJsaWM6Ci0gICAgT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVh
cihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAgT0VTVGV4dHVyZUhhbGZGbG9hdExp
bmVhcihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVhbCB+T0VTVGV4dHVy
ZUhhbGZGbG9hdExpbmVhcigpOwogCiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNWZXJ0
ZXhBcnJheU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNWZXJ0ZXhB
cnJheU9iamVjdC5jcHAKaW5kZXggNGUwNjE2NmQxZDcyYTU5ZWZjMTM2NzJhYzdjNjZmMjhkNTc2
ZWFjOC4uYzhiMTBmN2JmYmM2ODFkOGFhODU5NTlhM2YxZTI3ZDYzNzhlNjlhZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcApA
QCAtMzUsNyArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBPRVNWZXJ0ZXhBcnJheU9i
amVjdDo6T0VTVmVydGV4QXJyYXlPYmplY3QoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29u
dGV4dCkKLSAgICA6IFdlYkdMRXh0ZW5zaW9uKCZjb250ZXh0KQorICAgIDogV2ViR0xFeHRlbnNp
b24oY29udGV4dCkKIHsKIH0KIApAQCAtNDYsNDMgKzQ2LDQzIEBAIFdlYkdMRXh0ZW5zaW9uOjpF
eHRlbnNpb25OYW1lIE9FU1ZlcnRleEFycmF5T2JqZWN0OjpnZXROYW1lKCkgY29uc3QKIAogUmVm
UHRyPFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM+IE9FU1ZlcnRleEFycmF5T2JqZWN0OjpjcmVh
dGVWZXJ0ZXhBcnJheU9FUygpCiB7Ci0gICAgaWYgKG1fY29udGV4dC0+aXNDb250ZXh0TG9zdCgp
KQorICAgIGlmIChtX2NvbnRleHQuaXNDb250ZXh0TG9zdCgpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIGF1dG8gb2JqZWN0ID0gV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6Y3Jl
YXRlKG1fY29udGV4dCwgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6VkFPVHlwZVVzZXIpOwot
ICAgIG1fY29udGV4dC0+YWRkQ29udGV4dE9iamVjdChvYmplY3QucHRyKCkpOworICAgIG1fY29u
dGV4dC5hZGRDb250ZXh0T2JqZWN0KG9iamVjdC5wdHIoKSk7CiAgICAgcmV0dXJuIFdURk1vdmUo
b2JqZWN0KTsKIH0KIAogdm9pZCBPRVNWZXJ0ZXhBcnJheU9iamVjdDo6ZGVsZXRlVmVydGV4QXJy
YXlPRVMoV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUyogYXJyYXlPYmplY3QpCiB7Ci0gICAgaWYg
KCFhcnJheU9iamVjdCB8fCBtX2NvbnRleHQtPmlzQ29udGV4dExvc3QoKSkKKyAgICBpZiAoIWFy
cmF5T2JqZWN0IHx8IG1fY29udGV4dC5pc0NvbnRleHRMb3N0KCkpCiAgICAgICAgIHJldHVybjsK
ICAgICAKLSAgICBpZiAoIWFycmF5T2JqZWN0LT5pc0RlZmF1bHRPYmplY3QoKSAmJiBhcnJheU9i
amVjdCA9PSBzdGF0aWNfY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHQqPihtX2NvbnRleHQpLT5t
X2JvdW5kVmVydGV4QXJyYXlPYmplY3QpCi0gICAgICAgIHN0YXRpY19jYXN0PFdlYkdMUmVuZGVy
aW5nQ29udGV4dCo+KG1fY29udGV4dCktPnNldEJvdW5kVmVydGV4QXJyYXlPYmplY3QoMCk7Cisg
ICAgaWYgKCFhcnJheU9iamVjdC0+aXNEZWZhdWx0T2JqZWN0KCkgJiYgYXJyYXlPYmplY3QgPT0g
c3RhdGljX2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0Kj4oJm1fY29udGV4dCktPm1fYm91bmRW
ZXJ0ZXhBcnJheU9iamVjdCkKKyAgICAgICAgc3RhdGljX2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250
ZXh0Kj4oJm1fY29udGV4dCktPnNldEJvdW5kVmVydGV4QXJyYXlPYmplY3QoMCk7CiAKLSAgICBh
cnJheU9iamVjdC0+ZGVsZXRlT2JqZWN0KG1fY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0M0QoKSk7
CisgICAgYXJyYXlPYmplY3QtPmRlbGV0ZU9iamVjdChtX2NvbnRleHQuZ3JhcGhpY3NDb250ZXh0
M0QoKSk7CiB9CiAKIEdDM0Rib29sZWFuIE9FU1ZlcnRleEFycmF5T2JqZWN0Ojppc1ZlcnRleEFy
cmF5T0VTKFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMqIGFycmF5T2JqZWN0KQogewotICAgIHJl
dHVybiBhcnJheU9iamVjdCAmJiAhbV9jb250ZXh0LT5pc0NvbnRleHRMb3N0KCkgJiYgYXJyYXlP
YmplY3QtPmhhc0V2ZXJCZWVuQm91bmQoKQotICAgICAgICAmJiBtX2NvbnRleHQtPmdyYXBoaWNz
Q29udGV4dDNEKCktPmdldEV4dGVuc2lvbnMoKS0+aXNWZXJ0ZXhBcnJheU9FUyhhcnJheU9iamVj
dC0+b2JqZWN0KCkpOworICAgIHJldHVybiBhcnJheU9iamVjdCAmJiAhbV9jb250ZXh0LmlzQ29u
dGV4dExvc3QoKSAmJiBhcnJheU9iamVjdC0+aGFzRXZlckJlZW5Cb3VuZCgpCisgICAgICAgICYm
IG1fY29udGV4dC5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCkuaXNWZXJ0ZXhB
cnJheU9FUyhhcnJheU9iamVjdC0+b2JqZWN0KCkpOwogfQogCiB2b2lkIE9FU1ZlcnRleEFycmF5
T2JqZWN0OjpiaW5kVmVydGV4QXJyYXlPRVMoV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUyogYXJy
YXlPYmplY3QpCiB7Ci0gICAgaWYgKG1fY29udGV4dC0+aXNDb250ZXh0TG9zdCgpKQorICAgIGlm
IChtX2NvbnRleHQuaXNDb250ZXh0TG9zdCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAo
YXJyYXlPYmplY3QgJiYgKGFycmF5T2JqZWN0LT5pc0RlbGV0ZWQoKSB8fCAhYXJyYXlPYmplY3Qt
PnZhbGlkYXRlKDAsIGNvbnRleHQoKSkpKSB7Ci0gICAgICAgIG1fY29udGV4dC0+Z3JhcGhpY3ND
b250ZXh0M0QoKS0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURf
T1BFUkFUSU9OKTsKKyAgICBpZiAoYXJyYXlPYmplY3QgJiYgKGFycmF5T2JqZWN0LT5pc0RlbGV0
ZWQoKSB8fCAhYXJyYXlPYmplY3QtPnZhbGlkYXRlKG51bGxwdHIsIGNvbnRleHQoKSkpKSB7Cisg
ICAgICAgIG1fY29udGV4dC5ncmFwaGljc0NvbnRleHQzRCgpLT5zeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgYXV0byYgZXh0ZW5zaW9ucyA9ICptX2NvbnRleHQtPmdyYXBoaWNzQ29udGV4
dDNEKCktPmdldEV4dGVuc2lvbnMoKTsKLSAgICBhdXRvJiBjb250ZXh0ID0gZG93bmNhc3Q8V2Vi
R0xSZW5kZXJpbmdDb250ZXh0PigqbV9jb250ZXh0KTsKKyAgICBhdXRvJiBleHRlbnNpb25zID0g
bV9jb250ZXh0LmdyYXBoaWNzQ29udGV4dDNEKCktPmdldEV4dGVuc2lvbnMoKTsKKyAgICBhdXRv
JiBjb250ZXh0ID0gZG93bmNhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0PihtX2NvbnRleHQpOwog
ICAgIGlmIChhcnJheU9iamVjdCAmJiAhYXJyYXlPYmplY3QtPmlzRGVmYXVsdE9iamVjdCgpICYm
IGFycmF5T2JqZWN0LT5vYmplY3QoKSkgewogICAgICAgICBleHRlbnNpb25zLmJpbmRWZXJ0ZXhB
cnJheU9FUyhhcnJheU9iamVjdC0+b2JqZWN0KCkpOwogICAgICAgICBhcnJheU9iamVjdC0+c2V0
SGFzRXZlckJlZW5Cb3VuZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBlZTE0MGE4Mzc2NjZkOTc3NWEzZWU3
ODg5YmI3NjAzOTE2NDg2ZGEwLi40NmM0NmRkNTJjOGY3YWJlYmQ1M2M5NWNjYzUxMzhmNWM2NTI3
NDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJp
bmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5k
ZXJpbmdDb250ZXh0LmNwcApAQCAtNzMsNyArNzMsNyBAQCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0KEhUTUxDYW52YXNFbGVtZW50JiBwYXNzZWRDYW52YXMs
CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aW5pdGlhbGl6ZVZlcnRleEFycmF5T2Jq
ZWN0cygpCiB7Ci0gICAgbV9kZWZhdWx0VmVydGV4QXJyYXlPYmplY3QgPSBXZWJHTFZlcnRleEFy
cmF5T2JqZWN0OjpjcmVhdGUodGhpcywgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdDo6VkFPVHlwZURl
ZmF1bHQpOworICAgIG1fZGVmYXVsdFZlcnRleEFycmF5T2JqZWN0ID0gV2ViR0xWZXJ0ZXhBcnJh
eU9iamVjdDo6Y3JlYXRlKCp0aGlzLCBXZWJHTFZlcnRleEFycmF5T2JqZWN0OjpWQU9UeXBlRGVm
YXVsdCk7CiAgICAgYWRkQ29udGV4dE9iamVjdChtX2RlZmF1bHRWZXJ0ZXhBcnJheU9iamVjdC5n
ZXQoKSk7CiAgICAgbV9ib3VuZFZlcnRleEFycmF5T2JqZWN0ID0gbV9kZWZhdWx0VmVydGV4QXJy
YXlPYmplY3Q7CiAgICAgaWYgKCFpc0dMRVMyQ29tcGxpYW50KCkpCkBAIC04MiwxMCArODIsMTAg
QEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppbml0aWFsaXplVmVydGV4QXJyYXlPYmpl
Y3RzKCkKIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppbml0aWFsaXplU2hhZGVyRXh0
ZW5zaW9ucygpCiB7Ci0gICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJs
ZWQoIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpOwotICAgIG1fY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKCJHTF9FWFRfZHJhd19idWZmZXJzIik7Ci0gICAgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9zaGFkZXJfdGV4
dHVyZV9sb2QiKTsKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxl
ZCgiR0xfRVhUX2ZyYWdfZGVwdGgiKTsKKyAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5l
bnN1cmVFbmFibGVkKCJHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiKTsKKyAgICBtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9FWFRfZHJhd19idWZmZXJzIik7
CisgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3No
YWRlcl90ZXh0dXJlX2xvZCIpOworICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3Vy
ZUVuYWJsZWQoIkdMX0VYVF9mcmFnX2RlcHRoIik7CiB9CiAKIGlubGluZSBzdGF0aWMgT3B0aW9u
YWw8dW5zaWduZWQ+IGFycmF5QnVmZmVyVmlld0VsZW1lbnRTaXplKGNvbnN0IEFycmF5QnVmZmVy
VmlldyYgZGF0YSkKQEAgLTQ5NCw3ICs0OTQsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OmRyYXdCdWZmZXJzKFZlY3RvcjxHQzNEZW51bT4gYnVmZmVycykKICAgICAgICAgfQogICAg
ICAgICAvLyBCZWNhdXNlIHRoZSBiYWNrYnVmZmVyIGlzIHNpbXVsYXRlZCBvbiBhbGwgY3VycmVu
dCBXZWJLaXQgcG9ydHMsIHdlIG5lZWQgdG8gY2hhbmdlIEJBQ0sgdG8gQ09MT1JfQVRUQUNITUVO
VDAuCiAgICAgICAgIEdDM0RlbnVtIHZhbHVlID0gKGJ1ZnNbMF0gPT0gR3JhcGhpY3NDb250ZXh0
M0Q6OkJBQ0spID8gR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwIDogR3JhcGhp
Y3NDb250ZXh0M0Q6Ok5PTkU7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dDNEKCktPmdldEV4dGVu
c2lvbnMoKS0+ZHJhd0J1ZmZlcnNFWFQoMSwgJnZhbHVlKTsKKyAgICAgICAgZ3JhcGhpY3NDb250
ZXh0M0QoKS0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZmZXJzRVhUKDEsICZ2YWx1ZSk7CiAgICAg
ICAgIHNldEJhY2tEcmF3QnVmZmVyKGJ1ZnNbMF0pOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlm
IChuID4gZ2V0TWF4RHJhd0J1ZmZlcnMoKSkgewpAQCAtNzk0LDcgKzc5NCw3IEBAIFJlZlB0cjxX
ZWJHTFZlcnRleEFycmF5T2JqZWN0PiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVWZXJ0
ZXhBcnJheSgpCiAgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgCi0gICAgYXV0byBvYmplY3QgPSBXZWJHTFZlcnRleEFycmF5T2JqZWN0OjpjcmVh
dGUodGhpcywgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdDo6VkFPVHlwZVVzZXIpOworICAgIGF1dG8g
b2JqZWN0ID0gV2ViR0xWZXJ0ZXhBcnJheU9iamVjdDo6Y3JlYXRlKCp0aGlzLCBXZWJHTFZlcnRl
eEFycmF5T2JqZWN0OjpWQU9UeXBlVXNlcik7CiAgICAgYWRkQ29udGV4dE9iamVjdChvYmplY3Qu
cHRyKCkpOwogICAgIHJldHVybiBXVEZNb3ZlKG9iamVjdCk7CiB9CkBAIC04MTgsNyArODE4LDcg
QEAgR0MzRGJvb2xlYW4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aXNWZXJ0ZXhBcnJheShXZWJH
TFZlcnRleEFycmF5T2JqZWN0KiBhcnJheU8KICAgICBpZiAoIWFycmF5T2JqZWN0IHx8IGlzQ29u
dGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCi0gICAgaWYgKCFhcnJheU9iamVj
dC0+aGFzRXZlckJlZW5Cb3VuZCgpIHx8ICFhcnJheU9iamVjdC0+dmFsaWRhdGUoMCwgdGhpcykp
CisgICAgaWYgKCFhcnJheU9iamVjdC0+aGFzRXZlckJlZW5Cb3VuZCgpIHx8ICFhcnJheU9iamVj
dC0+dmFsaWRhdGUoMCwgKnRoaXMpKQogICAgICAgICByZXR1cm4gMDsKICAgICAKICAgICByZXR1
cm4gbV9jb250ZXh0LT5pc1ZlcnRleEFycmF5KGFycmF5T2JqZWN0LT5vYmplY3QoKSk7CkBAIC04
MjksNyArODI5LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiaW5kVmVydGV4QXJy
YXkoV2ViR0xWZXJ0ZXhBcnJheU9iamVjdCogYXJyYXlPYmplY3QKICAgICBpZiAoaXNDb250ZXh0
TG9zdCgpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgaWYgKGFycmF5T2JqZWN0ICYmIChh
cnJheU9iamVjdC0+aXNEZWxldGVkKCkgfHwgIWFycmF5T2JqZWN0LT52YWxpZGF0ZSgwLCB0aGlz
KSB8fCAhbV9jb250ZXh0T2JqZWN0cy5jb250YWlucyhhcnJheU9iamVjdCkpKSB7CisgICAgaWYg
KGFycmF5T2JqZWN0ICYmIChhcnJheU9iamVjdC0+aXNEZWxldGVkKCkgfHwgIWFycmF5T2JqZWN0
LT52YWxpZGF0ZSgwLCAqdGhpcykgfHwgIW1fY29udGV4dE9iamVjdHMuY29udGFpbnMoYXJyYXlP
YmplY3QpKSkgewogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNz
Q29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC04NTAsODUgKzg1MCw4NSBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICBpZiAoKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIkVYVF90ZXh0dXJl
X2ZpbHRlcl9hbmlzb3Ryb3BpYyIpIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIldF
QktJVF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKSkKLSAgICAgICAgJiYgbV9jb250
ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5p
c290cm9waWMiKSkgeworICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBw
b3J0cygiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIikpIHsKICAgICAgICAgaWYg
KCFtX2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYykgewotICAgICAgICAgICAgbV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9h
bmlzb3Ryb3BpYyIpOwotICAgICAgICAgICAgbV9leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMg
PSBzdGQ6Om1ha2VfdW5pcXVlPEVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYz4odGhpcyk7Cisg
ICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9F
WFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKTsKKyAgICAgICAgICAgIG1fZXh0VGV4dHVy
ZUZpbHRlckFuaXNvdHJvcGljID0gc3RkOjptYWtlX3VuaXF1ZTxFWFRUZXh0dXJlRmlsdGVyQW5p
c290cm9waWM+KCp0aGlzKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbV9leHRUZXh0dXJl
RmlsdGVyQW5pc290cm9waWMuZ2V0KCk7CiAgICAgfQogICAgIGlmIChlcXVhbElnbm9yaW5nQVND
SUlDYXNlKG5hbWUsICJPRVNfdGV4dHVyZV9mbG9hdCIpCi0gICAgICAgICYmIG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfZmxvYXQiKSkgeworICAg
ICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3RleHR1
cmVfZmxvYXQiKSkgewogICAgICAgICBpZiAoIW1fb2VzVGV4dHVyZUZsb2F0KSB7Ci0gICAgICAg
ICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3Rl
eHR1cmVfZmxvYXQiKTsKLSAgICAgICAgICAgIG1fb2VzVGV4dHVyZUZsb2F0ID0gc3RkOjptYWtl
X3VuaXF1ZTxPRVNUZXh0dXJlRmxvYXQ+KHRoaXMpOworICAgICAgICAgICAgbV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3RleHR1cmVfZmxvYXQiKTsKKyAg
ICAgICAgICAgIG1fb2VzVGV4dHVyZUZsb2F0ID0gc3RkOjptYWtlX3VuaXF1ZTxPRVNUZXh0dXJl
RmxvYXQ+KCp0aGlzKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbV9vZXNUZXh0dXJlRmxv
YXQuZ2V0KCk7CiAgICAgfQogICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJP
RVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiKQotICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIpKSB7CisgICAg
ICAgICYmIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVy
ZV9mbG9hdF9saW5lYXIiKSkgewogICAgICAgICBpZiAoIW1fb2VzVGV4dHVyZUZsb2F0TGluZWFy
KSB7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxl
ZCgiR0xfT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIik7Ci0gICAgICAgICAgICBtX29lc1RleHR1
cmVGbG9hdExpbmVhciA9IHN0ZDo6bWFrZV91bmlxdWU8T0VTVGV4dHVyZUZsb2F0TGluZWFyPih0
aGlzKTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJs
ZWQoIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIpOworICAgICAgICAgICAgbV9vZXNUZXh0
dXJlRmxvYXRMaW5lYXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9FU1RleHR1cmVGbG9hdExpbmVhcj4o
KnRoaXMpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX29lc1RleHR1cmVGbG9hdExpbmVh
ci5nZXQoKTsKICAgICB9CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIk9F
U190ZXh0dXJlX2hhbGZfZmxvYXQiKQotICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS0+c3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQiKSkgeworICAgICAgICAm
JiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfaGFs
Zl9mbG9hdCIpKSB7CiAgICAgICAgIGlmICghbV9vZXNUZXh0dXJlSGFsZkZsb2F0KSB7Ci0gICAg
ICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfT0VT
X3RleHR1cmVfaGFsZl9mbG9hdCIpOwotICAgICAgICAgICAgbV9vZXNUZXh0dXJlSGFsZkZsb2F0
ID0gc3RkOjptYWtlX3VuaXF1ZTxPRVNUZXh0dXJlSGFsZkZsb2F0Pih0aGlzKTsKKyAgICAgICAg
ICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX09FU190ZXh0
dXJlX2hhbGZfZmxvYXQiKTsKKyAgICAgICAgICAgIG1fb2VzVGV4dHVyZUhhbGZGbG9hdCA9IHN0
ZDo6bWFrZV91bmlxdWU8T0VTVGV4dHVyZUhhbGZGbG9hdD4oKnRoaXMpOwogICAgICAgICB9CiAg
ICAgICAgIHJldHVybiBtX29lc1RleHR1cmVIYWxmRmxvYXQuZ2V0KCk7CiAgICAgfQogICAgIGlm
IChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xp
bmVhciIpCi0gICAgICAgICYmIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygi
R0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKSkgeworICAgICAgICAmJiBtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9s
aW5lYXIiKSkgewogICAgICAgICBpZiAoIW1fb2VzVGV4dHVyZUhhbGZGbG9hdExpbmVhcikgewot
ICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdM
X09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIik7Ci0gICAgICAgICAgICBtX29lc1RleHR1
cmVIYWxmRmxvYXRMaW5lYXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9FU1RleHR1cmVIYWxmRmxvYXRM
aW5lYXI+KHRoaXMpOworICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5z
dXJlRW5hYmxlZCgiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKTsKKyAgICAgICAg
ICAgIG1fb2VzVGV4dHVyZUhhbGZGbG9hdExpbmVhciA9IHN0ZDo6bWFrZV91bmlxdWU8T0VTVGV4
dHVyZUhhbGZGbG9hdExpbmVhcj4oKnRoaXMpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBt
X29lc1RleHR1cmVIYWxmRmxvYXRMaW5lYXIuZ2V0KCk7CiAgICAgfQogICAgIGlmIChlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKG5hbWUsICJXRUJHTF9sb3NlX2NvbnRleHQiKSkgewogICAgICAgICBp
ZiAoIW1fd2ViZ2xMb3NlQ29udGV4dCkKLSAgICAgICAgICAgIG1fd2ViZ2xMb3NlQ29udGV4dCA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xMb3NlQ29udGV4dD4odGhpcyk7CisgICAgICAgICAgICBt
X3dlYmdsTG9zZUNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMTG9zZUNvbnRleHQ+KCp0
aGlzKTsKICAgICAgICAgcmV0dXJuIG1fd2ViZ2xMb3NlQ29udGV4dC5nZXQoKTsKICAgICB9CiAg
ICAgaWYgKChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJXRUJLSVRfV0VCR0xfY29tcHJl
c3NlZF90ZXh0dXJlX2F0YyIpKQotICAgICAgICAmJiBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRD
OjpzdXBwb3J0ZWQodGhpcykpIHsKKyAgICAgICAgJiYgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFU
Qzo6c3VwcG9ydGVkKCp0aGlzKSkgewogICAgICAgICBpZiAoIW1fd2ViZ2xDb21wcmVzc2VkVGV4
dHVyZUFUQykKLSAgICAgICAgICAgIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZUFUQyA9IHN0ZDo6
bWFrZV91bmlxdWU8V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQz4odGhpcyk7CisgICAgICAgICAg
ICBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBVEMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVBVEM+KCp0aGlzKTsKICAgICAgICAgcmV0dXJuIG1fd2ViZ2xDb21wcmVz
c2VkVGV4dHVyZUFUQy5nZXQoKTsKICAgICB9CiAgICAgaWYgKChlcXVhbElnbm9yaW5nQVNDSUlD
YXNlKG5hbWUsICJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIikpCi0gICAg
ICAgICYmIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVkKHRoaXMpKSB7Cisg
ICAgICAgICYmIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVkKCp0aGlzKSkg
ewogICAgICAgICBpZiAoIW1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVBWUlRDKQotICAgICAgICAg
ICAgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUFZSVEMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVQVlJUQz4odGhpcyk7CisgICAgICAgICAgICBtX3dlYmdsQ29tcHJl
c3NlZFRleHR1cmVQVlJUQyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVBWUlRDPigqdGhpcyk7CiAgICAgICAgIHJldHVybiBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVQ
VlJUQy5nZXQoKTsKICAgICB9CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwg
IldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIikKLSAgICAgICAgJiYgV2ViR0xDb21wcmVz
c2VkVGV4dHVyZVMzVEM6OnN1cHBvcnRlZCh0aGlzKSkgeworICAgICAgICAmJiBXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlUzNUQzo6c3VwcG9ydGVkKCp0aGlzKSkgewogICAgICAgICBpZiAoIW1fd2Vi
Z2xDb21wcmVzc2VkVGV4dHVyZVMzVEMpCi0gICAgICAgICAgICBtX3dlYmdsQ29tcHJlc3NlZFRl
eHR1cmVTM1RDID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQz4o
dGhpcyk7CisgICAgICAgICAgICBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVTM1RDID0gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQz4oKnRoaXMpOwogICAgICAgICBy
ZXR1cm4gbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUzNUQy5nZXQoKTsKICAgICB9CiAgICAgaWYg
KGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIldFQkdMX2RlcHRoX3RleHR1cmUiKQotICAg
ICAgICAmJiBXZWJHTERlcHRoVGV4dHVyZTo6c3VwcG9ydGVkKGdyYXBoaWNzQ29udGV4dDNEKCkp
KSB7CisgICAgICAgICYmIFdlYkdMRGVwdGhUZXh0dXJlOjpzdXBwb3J0ZWQoKmdyYXBoaWNzQ29u
dGV4dDNEKCkpKSB7CiAgICAgICAgIGlmICghbV93ZWJnbERlcHRoVGV4dHVyZSkgewotICAgICAg
ICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX0NIUk9N
SVVNX2RlcHRoX3RleHR1cmUiKTsKLSAgICAgICAgICAgIG1fd2ViZ2xEZXB0aFRleHR1cmUgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdlYkdMRGVwdGhUZXh0dXJlPih0aGlzKTsKKyAgICAgICAgICAgIG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0NIUk9NSVVNX2RlcHRo
X3RleHR1cmUiKTsKKyAgICAgICAgICAgIG1fd2ViZ2xEZXB0aFRleHR1cmUgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYkdMRGVwdGhUZXh0dXJlPigqdGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgcmV0
dXJuIG1fd2ViZ2xEZXB0aFRleHR1cmUuZ2V0KCk7CiAgICAgfQogICAgIGlmIChlcXVhbElnbm9y
aW5nQVNDSUlDYXNlKG5hbWUsICJXRUJHTF9kZWJ1Z19yZW5kZXJlcl9pbmZvIikpIHsKICAgICAg
ICAgaWYgKCFtX3dlYmdsRGVidWdSZW5kZXJlckluZm8pCi0gICAgICAgICAgICBtX3dlYmdsRGVi
dWdSZW5kZXJlckluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMRGVidWdSZW5kZXJlckluZm8+
KHRoaXMpOworICAgICAgICAgICAgbV93ZWJnbERlYnVnUmVuZGVyZXJJbmZvID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJHTERlYnVnUmVuZGVyZXJJbmZvPigqdGhpcyk7CiAgICAgICAgIHJldHVybiBt
X3dlYmdsRGVidWdSZW5kZXJlckluZm8uZ2V0KCk7CiAgICAgfQogICAgIGlmIChlcXVhbElnbm9y
aW5nQVNDSUlDYXNlKG5hbWUsICJXRUJHTF9kZWJ1Z19zaGFkZXJzIikKLSAgICAgICAgJiYgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9BTkdMRV90cmFuc2xhdGVkX3No
YWRlcl9zb3VyY2UiKSkgeworICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5z
dXBwb3J0cygiR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIikpIHsKICAgICAgICAg
aWYgKCFtX3dlYmdsRGVidWdTaGFkZXJzKQotICAgICAgICAgICAgbV93ZWJnbERlYnVnU2hhZGVy
cyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xEZWJ1Z1NoYWRlcnM+KHRoaXMpOworICAgICAgICAg
ICAgbV93ZWJnbERlYnVnU2hhZGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xEZWJ1Z1NoYWRl
cnM+KCp0aGlzKTsKICAgICAgICAgcmV0dXJuIG1fd2ViZ2xEZWJ1Z1NoYWRlcnMuZ2V0KCk7CiAg
ICAgfQogCkBAIC05NDIsMjYgKzk0MiwyNiBAQCBWZWN0b3I8U3RyaW5nPiBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCkKICAgICBpZiAobV9pc1BlbmRpbmdQ
b2xpY3lSZXNvbHV0aW9uKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0gICAgaWYgKG1fY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfZmxvYXQiKSkK
KyAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX09FU190ZXh0
dXJlX2Zsb2F0IikpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU190ZXh0dXJlX2Zsb2F0Iik7
Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3Rl
eHR1cmVfZmxvYXRfbGluZWFyIikpCisgICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiKSkKICAgICAgICAgcmVzdWx0
LmFwcGVuZCgiT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIik7Ci0gICAgaWYgKG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpKQor
ICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3RleHR1
cmVfaGFsZl9mbG9hdCIpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9oYWxm
X2Zsb2F0Iik7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygi
R0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKSkKKyAgICBpZiAobV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFy
IikpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFy
Iik7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfRVhU
X3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIikpCisgICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKSkK
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCS0lUX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ry
b3BpYyIpOwotICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpzdXBwb3J0ZWQodGhp
cykpCisgICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OnN1cHBvcnRlZCgqdGhpcykp
CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVf
YXRjIik7Ci0gICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVkKHRo
aXMpKQorICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBvcnRlZCgqdGhp
cykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1
cmVfcHZydGMiKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBvcnRl
ZCh0aGlzKSkKKyAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBvcnRlZCgq
dGhpcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9z
M3RjIik7Ci0gICAgaWYgKFdlYkdMRGVwdGhUZXh0dXJlOjpzdXBwb3J0ZWQoZ3JhcGhpY3NDb250
ZXh0M0QoKSkpCisgICAgaWYgKFdlYkdMRGVwdGhUZXh0dXJlOjpzdXBwb3J0ZWQoKmdyYXBoaWNz
Q29udGV4dDNEKCkpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9kZXB0aF90ZXh0dXJl
Iik7CiAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfbG9zZV9jb250ZXh0Iik7Ci0gICAgaWYgKG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfQU5HTEVfdHJhbnNsYXRlZF9z
aGFkZXJfc291cmNlIikpCisgICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBv
cnRzKCJHTF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UiKSkKICAgICAgICAgcmVzdWx0
LmFwcGVuZCgiV0VCR0xfZGVidWdfc2hhZGVycyIpOwogICAgIHJlc3VsdC5hcHBlbmQoIldFQkdM
X2RlYnVnX3JlbmRlcmVyX2luZm8iKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xCdWZmZXIuY3BwCmluZGV4IGFhM2E5ZGI0ZmY0OGVlMWIxNjJlZjk0YTViYjMyZmZmNjFiZDU2
MzEuLmRmMTc3MTFkYjBiODllYWQwMzhmNzNjMzFkMjJmZTFlMzJhNWUzY2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAKQEAgLTM0LDE4ICszNCwxOCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxXZWJHTEJ1ZmZlcj4gV2ViR0xCdWZmZXI6OmNy
ZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjdHgpCitSZWY8V2ViR0xCdWZmZXI+IFdl
YkdMQnVmZmVyOjpjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY3R4KQogewogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdMQnVmZmVyKGN0eCkpOwogfQogCi1XZWJHTEJ1ZmZl
cjo6V2ViR0xCdWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY3R4KQorV2ViR0xCdWZm
ZXI6OldlYkdMQnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGN0eCkKICAgICA6IFdl
YkdMU2hhcmVkT2JqZWN0KGN0eCkKICAgICAsIG1fdGFyZ2V0KDApCiAgICAgLCBtX2J5dGVMZW5n
dGgoMCkKICAgICAsIG1fbmV4dEF2YWlsYWJsZUNhY2hlRW50cnkoMCkKIHsKLSAgICBzZXRPYmpl
Y3QoY3R4LT5ncmFwaGljc0NvbnRleHQzRCgpLT5jcmVhdGVCdWZmZXIoKSk7CisgICAgc2V0T2Jq
ZWN0KGN0eC5ncmFwaGljc0NvbnRleHQzRCgpLT5jcmVhdGVCdWZmZXIoKSk7CiAgICAgY2xlYXJD
YWNoZWRNYXhJbmRpY2VzKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1
ZmZlci5oCmluZGV4IGE5ZjMzODg4ZTQ5MDEwMzY1OTY2ZWMzMzVlYTA3MWJmNGMyODE2MmYuLjFi
NDE0ZThmYzlhMTM1YTljZWMwYmNkNmM2ZjIyZTA5YzI3NzFkNGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBXZWJHTEJ1
ZmZlciBmaW5hbCA6IHB1YmxpYyBXZWJHTFNoYXJlZE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdmly
dHVhbCB+V2ViR0xCdWZmZXIoKTsKIAotICAgIHN0YXRpYyBSZWY8V2ViR0xCdWZmZXI+IGNyZWF0
ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAgc3RhdGljIFJlZjxXZWJHTEJ1ZmZl
cj4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKIAogICAgIGJvb2wgYXNzb2Np
YXRlQnVmZmVyRGF0YShHQzNEc2l6ZWlwdHIgc2l6ZSk7CiAgICAgYm9vbCBhc3NvY2lhdGVCdWZm
ZXJEYXRhKEpTQzo6QXJyYXlCdWZmZXIqKTsKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAg
IGJvb2wgaGFzRXZlckJlZW5Cb3VuZCgpIGNvbnN0IHsgcmV0dXJuIG9iamVjdCgpICYmIG1fdGFy
Z2V0OyB9CiAKIHByb3RlY3RlZDoKLSAgICBXZWJHTEJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlKik7CisgICAgV2ViR0xCdWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwog
CiAgICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKEdyYXBoaWNzQ29udGV4dDNEKiwgUGxhdGZvcm0z
RE9iamVjdCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5jcHAKaW5kZXggNTBhZDY1NWFhODYzZWQ5
MmNkNmI3MTVjMTMxMzFkZjI2YmQ1ZDI5ZS4uOTYwMjM3NGU3YzE3OWE0YmM3N2EzZjhhNGVjZDk3
MWY4ZTFmOGRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xD
b21wcmVzc2VkVGV4dHVyZUFUQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5jcHAKQEAgLTMzLDEyICszMywxMiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OldlYkdMQ29tcHJl
c3NlZFRleHR1cmVBVEMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29udGV4dCkKK1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVBVEM6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQp
CiB7Ci0gICAgY29udGV4dC0+YWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uczNE
OjpDT01QUkVTU0VEX0FUQ19SR0JfQU1EKTsKLSAgICBjb250ZXh0LT5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfQVRDX1JHQkFfRVhQTElDSVRfQUxQ
SEFfQU1EKTsKLSAgICBjb250ZXh0LT5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNp
b25zM0Q6OkNPTVBSRVNTRURfQVRDX1JHQkFfSU5URVJQT0xBVEVEX0FMUEhBX0FNRCk7CisgICAg
Y29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zM0Q6OkNPTVBSRVNT
RURfQVRDX1JHQl9BTUQpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQo
RXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX0FUQ19SR0JBX0VYUExJQ0lUX0FMUEhBX0FNRCk7Cisg
ICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zM0Q6OkNPTVBS
RVNTRURfQVRDX1JHQkFfSU5URVJQT0xBVEVEX0FMUEhBX0FNRCk7CiB9CiAKIFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVBVEM6On5XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDKCkKQEAgLTUwLDEwICs1
MCwxMCBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBXZWJHTENvbXByZXNzZWRUZXh0
dXJlQVRDOjpnZXROYW1lKCkgY29uc3QKICAgICByZXR1cm4gV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZUFUQ05hbWU7CiB9CiAKLWJvb2wgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6c3VwcG9ydGVk
KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRleHQpCitib29sIFdlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVBVEM6OnN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0
KQogewotICAgIEV4dGVuc2lvbnMzRCogZXh0ZW5zaW9ucyA9IGNvbnRleHQtPmdyYXBoaWNzQ29u
dGV4dDNEKCktPmdldEV4dGVuc2lvbnMoKTsKLSAgICByZXR1cm4gZXh0ZW5zaW9ucy0+c3VwcG9y
dHMoIkdMX0FNRF9jb21wcmVzc2VkX0FUQ190ZXh0dXJlIik7CisgICAgRXh0ZW5zaW9uczNEJiBl
eHRlbnNpb25zID0gY29udGV4dC5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCk7
CisgICAgcmV0dXJuIGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0FNRF9jb21wcmVzc2VkX0FUQ190
ZXh0dXJlIik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaAppbmRleCAy
MTAyZDkwZDVlNGQyZWIyMGQ0MmU2YTIxMTg4ZDU2YTcxMTdjNDg3Li5lNWIwNTYwZDNkMjliMDZm
NWJkMzBhMTNjOGI3MTI1MDU4MWZmMTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5oCkBAIC0zMywxMCArMzMsMTAg
QEAgY2xhc3MgV2ViR0xUZXh0dXJlOwogCiBjbGFzcyBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRD
IGZpbmFsIDogcHVibGljIFdlYkdMRXh0ZW5zaW9uIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBX
ZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAg
ICBleHBsaWNpdCBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDKFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UmKTsKICAgICB2aXJ0dWFsIH5XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDKCk7CiAKLSAg
ICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOworICAg
IHN0YXRpYyBib29sIHN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAKICAg
ICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBW
UlRDLmNwcAppbmRleCA4Y2FhNGM2ODk4NTQ4ZmVkNjAwNzI0ZGJkZGQ4MzRiMzYyOGEwNWMzLi5j
YmU3N2M3ODljNDU3Mjc2ZTdmMTM2Y2QzOTUxZjUzOWRlOTZkYzkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJU
Qy5jcHAKQEAgLTM0LDEzICszNCwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdlYkdM
Q29tcHJlc3NlZFRleHR1cmVQVlJUQzo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRleHQpCitXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZS
VEM6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
JiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKLSAgICBjb250ZXh0
LT5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdC
X1BWUlRDXzRCUFBWMV9JTUcpOwotICAgIGNvbnRleHQtPmFkZENvbXByZXNzZWRUZXh0dXJlRm9y
bWF0KEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfMkJQUFYxX0lNRyk7Ci0gICAg
Y29udGV4dC0+YWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uczNEOjpDT01QUkVT
U0VEX1JHQkFfUFZSVENfNEJQUFYxX0lNRyk7Ci0gICAgY29udGV4dC0+YWRkQ29tcHJlc3NlZFRl
eHR1cmVGb3JtYXQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUFZSVENfMkJQUFYxX0lN
Ryk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zM0Q6
OkNPTVBSRVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUcpOworICAgIGNvbnRleHQuYWRkQ29tcHJl
c3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQ
VjFfSU1HKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lv
bnMzRDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUcpOworICAgIGNvbnRleHQuYWRk
Q29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUFZS
VENfMkJQUFYxX0lNRyk7CiB9CiAKIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6fldlYkdM
Q29tcHJlc3NlZFRleHR1cmVQVlJUQygpCkBAIC01MiwxMCArNTIsMTAgQEAgV2ViR0xFeHRlbnNp
b246OkV4dGVuc2lvbk5hbWUgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpnZXROYW1lKCkg
Y29uc3QKICAgICByZXR1cm4gV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDTmFtZTsKIH0KIAot
Ym9vbCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBvcnRlZChXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlKiBjb250ZXh0KQorYm9vbCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6
OnN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogewotICAgIEV4
dGVuc2lvbnMzRCogZXh0ZW5zaW9ucyA9IGNvbnRleHQtPmdyYXBoaWNzQ29udGV4dDNEKCktPmdl
dEV4dGVuc2lvbnMoKTsKLSAgICByZXR1cm4gZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0lNR190
ZXh0dXJlX2NvbXByZXNzaW9uX3B2cnRjIik7CisgICAgRXh0ZW5zaW9uczNEJiBleHRlbnNpb25z
ID0gY29udGV4dC5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCk7CisgICAgcmV0
dXJuIGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0lNR190ZXh0dXJlX2NvbXByZXNzaW9uX3B2cnRj
Iik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmgKaW5kZXggMDkw
ZGQzMjk3ZWY5MjhlZDNhMWM0OWU2M2I5MDY2NTQwNDUxNjA5Zi4uNTE1ZTZlMTFmZTlmYjNkNmI4
MjkwN2U4YTg3NTNjMTBjZWM0N2FiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmgKQEAgLTMxLDEwICszMSwx
MCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQ
VlJUQyBmaW5hbCA6IHB1YmxpYyBXZWJHTEV4dGVuc2lvbiB7CiBwdWJsaWM6Ci0gICAgZXhwbGlj
aXQgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uq
KTsKKyAgICBleHBsaWNpdCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMoV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwgfldlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJU
QygpOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UqKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSYpOwogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4
dHVyZVMzVEMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZVMzVEMuY3BwCmluZGV4IDQyYmNkMDgxMGM5NGM1YmM1OWMxZjdhYTVlZmQ5MGYyYmVh
ZDI0YWIuLjIwYzkzZTdmNDg4YTEzMGE0Mjk1ZDdiY2EzYTVlMDU3NjE3NDUzZGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RD
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0
dXJlUzNUQy5jcHAKQEAgLTM0LDEzICszNCwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQyhX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjb250ZXh0KQorV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVMzVEM6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRl
eHQtPmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9S
R0JfUzNUQ19EWFQxX0VYVCk7Ci0gICAgY29udGV4dC0+YWRkQ29tcHJlc3NlZFRleHR1cmVGb3Jt
YXQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCk7Ci0gICAgY29u
dGV4dC0+YWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VE
X1JHQkFfUzNUQ19EWFQzX0VYVCk7Ci0gICAgY29udGV4dC0+YWRkQ29tcHJlc3NlZFRleHR1cmVG
b3JtYXQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVCk7CisgICAg
Y29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zM0Q6OkNPTVBSRVNT
RURfUkdCX1MzVENfRFhUMV9FWFQpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVG
b3JtYXQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCk7CisgICAg
Y29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zM0Q6OkNPTVBSRVNT
RURfUkdCQV9TM1RDX0RYVDNfRVhUKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJl
Rm9ybWF0KEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQpOwogfQog
CiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6fldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RD
KCkKQEAgLTUyLDEzICs1MiwxMyBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBXZWJH
TENvbXByZXNzZWRUZXh0dXJlUzNUQzo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDTmFtZTsKIH0KIAotYm9vbCBXZWJHTENvbXByZXNzZWRUZXh0
dXJlUzNUQzo6c3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRleHQpCiti
b29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSYgY29udGV4dCkKIHsKLSAgICBFeHRlbnNpb25zM0QqIGV4dGVuc2lvbnMgPSBj
b250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCk7Ci0gICAgcmV0dXJu
IGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjIikK
LSAgICAgICAgfHwgKGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVz
c2lvbl9keHQxIikKLSAgICAgICAgICAgICYmIGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9DSFJP
TUlVTV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDMiKQotICAgICAgICAgICAgJiYgZXh0ZW5zaW9u
cy0+c3VwcG9ydHMoIkdMX0NIUk9NSVVNX3RleHR1cmVfY29tcHJlc3Npb25fZHh0NSIpKTsKKyAg
ICBFeHRlbnNpb25zM0QmIGV4dGVuc2lvbnMgPSBjb250ZXh0LmdyYXBoaWNzQ29udGV4dDNEKCkt
PmdldEV4dGVuc2lvbnMoKTsKKyAgICByZXR1cm4gZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhU
X3RleHR1cmVfY29tcHJlc3Npb25fczN0YyIpCisgICAgICAgIHx8IChleHRlbnNpb25zLnN1cHBv
cnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIikKKyAgICAgICAgICAgICYmIGV4
dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0NIUk9NSVVNX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MyIp
CisgICAgICAgICAgICAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9DSFJPTUlVTV90ZXh0dXJl
X2NvbXByZXNzaW9uX2R4dDUiKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVT
M1RDLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJl
UzNUQy5oCmluZGV4IGVkM2Q4Zjk4N2NhNzkzNGJhODcyZDdmZWI2M2RlNTk2NGMwYmUwMzUuLjI1
MWU1OTJmNzFmNDk0NTdjM2FhNzgwMDJiMGQxZTdiZmEyZjc3OWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaApA
QCAtMzMsMTAgKzMzLDEwIEBAIGNsYXNzIFdlYkdMVGV4dHVyZTsKIAogY2xhc3MgV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVMzVEMgZmluYWwgOiBwdWJsaWMgV2ViR0xFeHRlbnNpb24gewogcHVibGlj
OgotICAgIGV4cGxpY2l0IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UqKTsKKyAgICBleHBsaWNpdCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQyhX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVhbCB+V2ViR0xDb21wcmVzc2Vk
VGV4dHVyZVMzVEMoKTsKIAotICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlKik7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmKTsKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJy
aWRlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29u
dGV4dE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRP
YmplY3QuY3BwCmluZGV4IDRmZjEwNzRiMTkyNmJjM2Q0YTFiOTA1ZTJiODFkODdmMGUxMWEyMWIu
LjUyM2U2ZTY0MmQ3NDliNjAyMmYzNzczYTg4ZWRmNGVhMGVjYjliYjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dE9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0T2JqZWN0LmNwcApAQCAtMzMsOSAr
MzMsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdlYkdMQ29udGV4dE9iamVjdDo6V2Vi
R0xDb250ZXh0T2JqZWN0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRleHQpCitXZWJH
TENvbnRleHRPYmplY3Q6OldlYkdMQ29udGV4dE9iamVjdChXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xPYmplY3QoY29udGV4dCkKLSAgICAsIG1fY29udGV4
dChjb250ZXh0KQorICAgICwgbV9jb250ZXh0KCZjb250ZXh0KQogewogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRPYmplY3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dE9iamVjdC5oCmluZGV4IDM4MDg1NWMw
MmNlMmZiMmE2MjBhODY5OTY2NTIyMzE3MmU1NmQ2NjguLmViZTBmYzZjNWY3NjM2MzUyYjM4NmVk
MmEwODBhYWE0YTAxMjFkMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMQ29udGV4dE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMQ29udGV4dE9iamVjdC5oCkBAIC00MCwxNSArNDAsMTUgQEAgcHVibGljOgogCiAgICAgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4
dDsgfQogCi0gICAgYm9vbCB2YWxpZGF0ZShjb25zdCBXZWJHTENvbnRleHRHcm91cCosIGNvbnN0
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRleHQpIGNvbnN0IG92ZXJyaWRlCisgICAg
Ym9vbCB2YWxpZGF0ZShjb25zdCBXZWJHTENvbnRleHRHcm91cCosIGNvbnN0IFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UmIGNvbnRleHQpIGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAgICAgICBy
ZXR1cm4gY29udGV4dCA9PSBtX2NvbnRleHQ7CisgICAgICAgIHJldHVybiAmY29udGV4dCA9PSBt
X2NvbnRleHQ7CiAgICAgfQogCiAgICAgdm9pZCBkZXRhY2hDb250ZXh0KCk7CiAKIHByb3RlY3Rl
ZDoKLSAgICBXZWJHTENvbnRleHRPYmplY3QoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOwor
ICAgIFdlYkdMQ29udGV4dE9iamVjdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAKICAg
ICBib29sIGhhc0dyb3VwT3JDb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnUmVuZGVyZXJJbmZvLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdSZW5kZXJlckluZm8uY3Bw
CmluZGV4IDIwM2E1YzM3N2UwMDZjODMyOTVlYjExZDAxYzc0MmMxMzQzMzNhNzkuLjlkZjdmYmQ1
MWRmNGU1MjJmZjFkNTVlOGE1Y2M3ZDZmNzQzZDlmZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdSZW5kZXJlckluZm8uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdSZW5kZXJlckluZm8uY3BwCkBAIC0zMyw3ICsz
Myw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV2ViR0xEZWJ1Z1JlbmRlcmVySW5mbzo6
V2ViR0xEZWJ1Z1JlbmRlcmVySW5mbyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjb250ZXh0
KQorV2ViR0xEZWJ1Z1JlbmRlcmVySW5mbzo6V2ViR0xEZWJ1Z1JlbmRlcmVySW5mbyhXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4
dCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVi
dWdSZW5kZXJlckluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdS
ZW5kZXJlckluZm8uaAppbmRleCAxNmUzMzNjODk4MTI2Yzk2NmNmMWJlMDc5MGEyZjZlMTc4NzYy
N2VhLi4zZTU4MjJkMjA4YjJjMGFhZTliOTliZTQ5ZWY1MzJmMmI3MGM3NGQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnUmVuZGVyZXJJbmZvLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5oCkBA
IC0zNiw3ICszNiw3IEBAIHB1YmxpYzoKICAgICAgICAgVU5NQVNLRURfUkVOREVSRVJfV0VCR0wg
PSAweDkyNDYKICAgICB9OwogCi0gICAgZXhwbGljaXQgV2ViR0xEZWJ1Z1JlbmRlcmVySW5mbyhX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAgZXhwbGljaXQgV2ViR0xEZWJ1Z1JlbmRl
cmVySW5mbyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVhbCB+V2ViR0xE
ZWJ1Z1JlbmRlcmVySW5mbygpOwogCiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERl
YnVnU2hhZGVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnU2hh
ZGVycy5jcHAKaW5kZXggZmEwNzJmOWIzYmMyMjk1MThjZTM0ZDI3ZWU5NjU1ZWNiYWU4MDhkMi4u
ZWQ0MjgxMzA5OWY2MDUyYmJlZjhlZTkwNmYwOTY5NGUzMWYzMmM3MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmNwcApAQCAtMzUsNyArMzUs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdlYkdMRGVidWdTaGFkZXJzOjpXZWJHTERl
YnVnU2hhZGVycyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjb250ZXh0KQorV2ViR0xEZWJ1
Z1NoYWRlcnM6OldlYkdMRGVidWdTaGFkZXJzKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNv
bnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewogfQpAQCAtNTEsMTEgKzUx
LDExIEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIFdlYkdMRGVidWdTaGFkZXJzOjpn
ZXROYW1lKCkgY29uc3QKIAogU3RyaW5nIFdlYkdMRGVidWdTaGFkZXJzOjpnZXRUcmFuc2xhdGVk
U2hhZGVyU291cmNlKFdlYkdMU2hhZGVyKiBzaGFkZXIpCiB7Ci0gICAgaWYgKG1fY29udGV4dC0+
aXNDb250ZXh0TG9zdCgpKQorICAgIGlmIChtX2NvbnRleHQuaXNDb250ZXh0TG9zdCgpKQogICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgaWYgKCFtX2NvbnRleHQtPnZhbGlkYXRlV2ViR0xP
YmplY3QoImdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UiLCBzaGFkZXIpKQorICAgIGlmICghbV9j
b250ZXh0LnZhbGlkYXRlV2ViR0xPYmplY3QoImdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UiLCBz
aGFkZXIpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLSAgICByZXR1cm4gbV9jb250
ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCktPmdldFRyYW5zbGF0ZWRT
aGFkZXJTb3VyY2VBTkdMRShzaGFkZXItPm9iamVjdCgpKTsKKyAgICByZXR1cm4gbV9jb250ZXh0
LmdyYXBoaWNzQ29udGV4dDNEKCktPmdldEV4dGVuc2lvbnMoKS5nZXRUcmFuc2xhdGVkU2hhZGVy
U291cmNlQU5HTEUoc2hhZGVyLT5vYmplY3QoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFk
ZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5oCmlu
ZGV4IGRlNGJmMDEzNTUwOWYwMTBhMjYxNzFmYTNlZDA3MzRhYTY0MzBkMWUuLjRiOTlmMWFlYWI3
Y2JmZmY0ZmI3YTVmN2Y2N2E0NzQ4ZTgyMDc2MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuaApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBXZWJH
TFNoYWRlcjsKIAogY2xhc3MgV2ViR0xEZWJ1Z1NoYWRlcnMgZmluYWwgOiBwdWJsaWMgV2ViR0xF
eHRlbnNpb24gewogcHVibGljOgotICAgIGV4cGxpY2l0IFdlYkdMRGVidWdTaGFkZXJzKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBleHBsaWNpdCBXZWJHTERlYnVnU2hhZGVycyhX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVhbCB+V2ViR0xEZWJ1Z1NoYWRl
cnMoKTsKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuY3BwCmluZGV4
IDhmZDkwNzkzNWYzYjExY2QwMDUxYjAyMDExY2I1ZmIwNTJiMjJlMjMuLmRmMjNkZmVmMmVjNTk1
NmQ5NDc4YThiNjk2NjAzMmUzZTI2ZTBhYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1XZWJHTERlcHRoVGV4dHVyZTo6V2ViR0xEZXB0aFRleHR1cmUoV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29udGV4dCkKK1dlYkdMRGVwdGhUZXh0dXJlOjpXZWJH
TERlcHRoVGV4dHVyZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDog
V2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKIH0KQEAgLTQ3LDEyICs0NywxMiBAQCBXZWJHTEV4
dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBXZWJHTERlcHRoVGV4dHVyZTo6Z2V0TmFtZSgpIGNvbnN0
CiAgICAgcmV0dXJuIFdlYkdMRGVwdGhUZXh0dXJlTmFtZTsKIH0KIAotYm9vbCBXZWJHTERlcHRo
VGV4dHVyZTo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQorYm9vbCBXZWJH
TERlcHRoVGV4dHVyZTo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dDNEJiBjb250ZXh0KQogewot
ICAgIEV4dGVuc2lvbnMzRCogZXh0ZW5zaW9ucyA9IGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKTsK
LSAgICByZXR1cm4gZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0NIUk9NSVVNX2RlcHRoX3RleHR1
cmUiKQotICAgICAgICB8fCBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfT0VTX2RlcHRoX3RleHR1
cmUiKQotICAgICAgICB8fCBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfQVJCX2RlcHRoX3RleHR1
cmUiKTsKKyAgICBFeHRlbnNpb25zM0QmIGV4dGVuc2lvbnMgPSBjb250ZXh0LmdldEV4dGVuc2lv
bnMoKTsKKyAgICByZXR1cm4gZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfQ0hST01JVU1fZGVwdGhf
dGV4dHVyZSIpCisgICAgICAgIHx8IGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX09FU19kZXB0aF90
ZXh0dXJlIikKKyAgICAgICAgfHwgZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfQVJCX2RlcHRoX3Rl
eHR1cmUiKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmgKaW5kZXggNzFmNTFhYTY2MTlkYTZlZGQz
Y2FlNTk4M2RiOTU0Y2IxNDhlYTI2Mi4uMTZiM2I2MGI0ZjI3OThmYTY2ZDJiNWE4ODFkODEzZDU0
MGJkMWUwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZXB0
aFRleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4
dHVyZS5oCkBAIC0zMSwxMCArMzEsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBX
ZWJHTERlcHRoVGV4dHVyZSBmaW5hbCA6IHB1YmxpYyBXZWJHTEV4dGVuc2lvbiB7CiBwdWJsaWM6
Ci0gICAgZXhwbGljaXQgV2ViR0xEZXB0aFRleHR1cmUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSopOworICAgIGV4cGxpY2l0IFdlYkdMRGVwdGhUZXh0dXJlKFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UmKTsKICAgICB2aXJ0dWFsIH5XZWJHTERlcHRoVGV4dHVyZSgpOwogCi0gICAgc3RhdGlj
IGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dDNEKik7CisgICAgc3RhdGljIGJvb2wgc3Vw
cG9ydGVkKEdyYXBoaWNzQ29udGV4dDNEJik7CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUo
KSBjb25zdCBvdmVycmlkZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMRHJhd0J1ZmZlcnMuY3BwCmluZGV4IDdiYzcyYTZlNTk2MzIxNTFkMmFjNDRhNThlOGU3NWY3
MDk2NTU1MzguLmZlMDE2Y2RkZDUyMmIxMTFlYThiZWRkN2ZkNzViZjI3ZGM4ZGRkYTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwCkBAIC0z
Miw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV2ViR0xEcmF3QnVmZmVyczo6
V2ViR0xEcmF3QnVmZmVycyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjb250ZXh0KQorV2Vi
R0xEcmF3QnVmZmVyczo6V2ViR0xEcmF3QnVmZmVycyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
JiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKIH0KQEAgLTQ2LDUx
ICs0Niw1MSBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBXZWJHTERyYXdCdWZmZXJz
OjpnZXROYW1lKCkgY29uc3QKICAgICByZXR1cm4gV2ViR0xFeHRlbnNpb246OldlYkdMRHJhd0J1
ZmZlcnNOYW1lOwogfQogCi1ib29sIFdlYkdMRHJhd0J1ZmZlcnM6OnN1cHBvcnRlZChXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlKiBjb250ZXh0KQorYm9vbCBXZWJHTERyYXdCdWZmZXJzOjpzdXBw
b3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKIHsKLSAgICBFeHRlbnNp
b25zM0QqIGV4dGVuc2lvbnMgPSBjb250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRl
bnNpb25zKCk7Ci0gICAgcmV0dXJuIGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9FWFRfZHJhd19i
dWZmZXJzIikKKyAgICBFeHRlbnNpb25zM0QmIGV4dGVuc2lvbnMgPSBjb250ZXh0LmdyYXBoaWNz
Q29udGV4dDNEKCktPmdldEV4dGVuc2lvbnMoKTsKKyAgICByZXR1cm4gZXh0ZW5zaW9ucy5zdXBw
b3J0cygiR0xfRVhUX2RyYXdfYnVmZmVycyIpCiAgICAgICAgICYmIHNhdGlzZmllc1dlYkdMUmVx
dWlyZW1lbnRzKGNvbnRleHQpOwogfQogCiB2b2lkIFdlYkdMRHJhd0J1ZmZlcnM6OmRyYXdCdWZm
ZXJzV0VCR0woY29uc3QgVmVjdG9yPEdDM0RlbnVtPiYgYnVmZmVycykKIHsKLSAgICBpZiAobV9j
b250ZXh0LT5pc0NvbnRleHRMb3N0KCkpCisgICAgaWYgKG1fY29udGV4dC5pc0NvbnRleHRMb3N0
KCkpCiAgICAgICAgIHJldHVybjsKICAgICBHQzNEc2l6ZWkgbiA9IGJ1ZmZlcnMuc2l6ZSgpOwog
ICAgIGNvbnN0IEdDM0RlbnVtKiBidWZzID0gYnVmZmVycy5kYXRhKCk7Ci0gICAgaWYgKCFtX2Nv
bnRleHQtPm1fZnJhbWVidWZmZXJCaW5kaW5nKSB7CisgICAgaWYgKCFtX2NvbnRleHQubV9mcmFt
ZWJ1ZmZlckJpbmRpbmcpIHsKICAgICAgICAgaWYgKG4gIT0gMSkgewotICAgICAgICAgICAgbV9j
b250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxV
RSwgImRyYXdCdWZmZXJzV0VCR0wiLCAibW9yZSB0aGFuIG9uZSBidWZmZXIiKTsKKyAgICAgICAg
ICAgIG1fY29udGV4dC5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJ
RF9WQUxVRSwgImRyYXdCdWZmZXJzV0VCR0wiLCAibW9yZSB0aGFuIG9uZSBidWZmZXIiKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAoYnVmc1swXSAhPSBHcmFw
aGljc0NvbnRleHQzRDo6QkFDSyAmJiBidWZzWzBdICE9IEdyYXBoaWNzQ29udGV4dDNEOjpOT05F
KSB7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29u
dGV4dDNEOjpJTlZBTElEX09QRVJBVElPTiwgImRyYXdCdWZmZXJzV0VCR0wiLCAiQkFDSyBvciBO
T05FIik7CisgICAgICAgICAgICBtX2NvbnRleHQuc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OLCAiZHJhd0J1ZmZlcnNXRUJHTCIsICJCQUNLIG9y
IE5PTkUiKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAvLyBCZWNh
dXNlIHRoZSBiYWNrYnVmZmVyIGlzIHNpbXVsYXRlZCBvbiBhbGwgY3VycmVudCBXZWJLaXQgcG9y
dHMsIHdlIG5lZWQgdG8gY2hhbmdlIEJBQ0sgdG8gQ09MT1JfQVRUQUNITUVOVDAuCiAgICAgICAg
IEdDM0RlbnVtIHZhbHVlID0gKGJ1ZnNbMF0gPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkJBQ0spID8g
R3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwIDogR3JhcGhpY3NDb250ZXh0M0Q6
Ok5PTkU7Ci0gICAgICAgIG1fY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+Z2V0RXh0ZW5z
aW9ucygpLT5kcmF3QnVmZmVyc0VYVCgxLCAmdmFsdWUpOwotICAgICAgICBtX2NvbnRleHQtPnNl
dEJhY2tEcmF3QnVmZmVyKGJ1ZnNbMF0pOworICAgICAgICBtX2NvbnRleHQuZ3JhcGhpY3NDb250
ZXh0M0QoKS0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZmZXJzRVhUKDEsICZ2YWx1ZSk7CisgICAg
ICAgIG1fY29udGV4dC5zZXRCYWNrRHJhd0J1ZmZlcihidWZzWzBdKTsKICAgICB9IGVsc2Ugewot
ICAgICAgICBpZiAobiA+IG1fY29udGV4dC0+Z2V0TWF4RHJhd0J1ZmZlcnMoKSkgewotICAgICAg
ICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5W
QUxJRF9WQUxVRSwgImRyYXdCdWZmZXJzV0VCR0wiLCAibW9yZSB0aGFuIG1heCBkcmF3IGJ1ZmZl
cnMiKTsKKyAgICAgICAgaWYgKG4gPiBtX2NvbnRleHQuZ2V0TWF4RHJhd0J1ZmZlcnMoKSkgewor
ICAgICAgICAgICAgbV9jb250ZXh0LnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNE
OjpJTlZBTElEX1ZBTFVFLCAiZHJhd0J1ZmZlcnNXRUJHTCIsICJtb3JlIHRoYW4gbWF4IGRyYXcg
YnVmZmVycyIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGZvciAo
R0MzRHNpemVpIGkgPSAwOyBpIDwgbjsgKytpKSB7CiAgICAgICAgICAgICBpZiAoYnVmc1tpXSAh
PSBHcmFwaGljc0NvbnRleHQzRDo6Tk9ORSAmJiBidWZzW2ldICE9IHN0YXRpY19jYXN0PEdDM0Rl
bnVtPihFeHRlbnNpb25zM0Q6OkNPTE9SX0FUVEFDSE1FTlQwX0VYVCArIGkpKSB7Ci0gICAgICAg
ICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6
SU5WQUxJRF9PUEVSQVRJT04sICJkcmF3QnVmZmVyc1dFQkdMIiwgIkNPTE9SX0FUVEFDSE1FTlRp
X0VYVCBvciBOT05FIik7CisgICAgICAgICAgICAgICAgbV9jb250ZXh0LnN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTiwgImRyYXdCdWZmZXJzV0VC
R0wiLCAiQ09MT1JfQVRUQUNITUVOVGlfRVhUIG9yIE5PTkUiKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgbV9jb250ZXh0LT5tX2Zy
YW1lYnVmZmVyQmluZGluZy0+ZHJhd0J1ZmZlcnMoYnVmZmVycyk7CisgICAgICAgIG1fY29udGV4
dC5tX2ZyYW1lYnVmZmVyQmluZGluZy0+ZHJhd0J1ZmZlcnMoYnVmZmVycyk7CiAgICAgfQogfQog
CiAvLyBzdGF0aWMKLWJvb2wgV2ViR0xEcmF3QnVmZmVyczo6c2F0aXNmaWVzV2ViR0xSZXF1aXJl
bWVudHMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogd2ViZ2xDb250ZXh0KQorYm9vbCBXZWJH
TERyYXdCdWZmZXJzOjpzYXRpc2ZpZXNXZWJHTFJlcXVpcmVtZW50cyhXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlJiB3ZWJnbENvbnRleHQpCiB7Ci0gICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQgPSB3ZWJnbENvbnRleHQtPmdyYXBoaWNzQ29udGV4dDNEKCk7CisgICAgR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQgPSB3ZWJnbENvbnRleHQuZ3JhcGhpY3NDb250ZXh0M0QoKTsKIAogICAg
IC8vIFRoaXMgaXMgY2FsbGVkIGFmdGVyIHdlIG1ha2Ugc3VyZSBHTF9FWFRfZHJhd19idWZmZXJz
IGlzIHN1cHBvcnRlZC4KICAgICBHQzNEaW50IG1heERyYXdCdWZmZXJzID0gMDsKQEAgLTEwNCwx
MSArMTA0LDExIEBAIGJvb2wgV2ViR0xEcmF3QnVmZmVyczo6c2F0aXNmaWVzV2ViR0xSZXF1aXJl
bWVudHMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogd2ViCiAgICAgY29udGV4dC0+YmluZEZy
YW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgZmJvKTsKIAogICAgIGNv
bnN0IHVuc2lnbmVkIGNoYXIgYnVmZmVyWzRdID0geyAwLCAwLCAwLCAwIH07IC8vIHRleHR1cmVz
IGFyZSByZXF1aXJlZCB0byBiZSBpbml0aWFsaXplZCBmb3Igb3RoZXIgcG9ydHMuCi0gICAgYm9v
bCBzdXBwb3J0c0RlcHRoID0gKGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdM
X0NIUk9NSVVNX2RlcHRoX3RleHR1cmUiKQotICAgICAgICB8fCBjb250ZXh0LT5nZXRFeHRlbnNp
b25zKCktPnN1cHBvcnRzKCJHTF9PRVNfZGVwdGhfdGV4dHVyZSIpCi0gICAgICAgIHx8IGNvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX0FSQl9kZXB0aF90ZXh0dXJlIikpOwot
ICAgIGJvb2wgc3VwcG9ydHNEZXB0aFN0ZW5jaWwgPSAoY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LT5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikKLSAgICAgICAgfHwgY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVu
Y2lsIikpOworICAgIGJvb2wgc3VwcG9ydHNEZXB0aCA9IChjb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkuc3VwcG9ydHMoIkdMX0NIUk9NSVVNX2RlcHRoX3RleHR1cmUiKQorICAgICAgICB8fCBjb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX09FU19kZXB0aF90ZXh0dXJlIikKKyAg
ICAgICAgfHwgY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9BUkJfZGVwdGhf
dGV4dHVyZSIpKTsKKyAgICBib29sIHN1cHBvcnRzRGVwdGhTdGVuY2lsID0gKGNvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikKKyAg
ICAgICAgfHwgY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfcGFja2Vk
X2RlcHRoX3N0ZW5jaWwiKSk7CiAgICAgUGxhdGZvcm0zRE9iamVjdCBkZXB0aFN0ZW5jaWwgPSAw
OwogICAgIGlmIChzdXBwb3J0c0RlcHRoU3RlbmNpbCkgewogICAgICAgICBkZXB0aFN0ZW5jaWwg
PSBjb250ZXh0LT5jcmVhdGVUZXh0dXJlKCk7CkBAIC0xNTUsOSArMTU1LDkgQEAgYm9vbCBXZWJH
TERyYXdCdWZmZXJzOjpzYXRpc2ZpZXNXZWJHTFJlcXVpcmVtZW50cyhXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlKiB3ZWIKICAgICAgICAgfQogICAgIH0KIAotICAgIHdlYmdsQ29udGV4dC0+cmVz
dG9yZUN1cnJlbnRGcmFtZWJ1ZmZlcigpOworICAgIHdlYmdsQ29udGV4dC5yZXN0b3JlQ3VycmVu
dEZyYW1lYnVmZmVyKCk7CiAgICAgY29udGV4dC0+ZGVsZXRlRnJhbWVidWZmZXIoZmJvKTsKLSAg
ICB3ZWJnbENvbnRleHQtPnJlc3RvcmVDdXJyZW50VGV4dHVyZTJEKCk7CisgICAgd2ViZ2xDb250
ZXh0LnJlc3RvcmVDdXJyZW50VGV4dHVyZTJEKCk7CiAgICAgaWYgKHN1cHBvcnRzRGVwdGgpCiAg
ICAgICAgIGNvbnRleHQtPmRlbGV0ZVRleHR1cmUoZGVwdGgpOwogICAgIGlmIChzdXBwb3J0c0Rl
cHRoU3RlbmNpbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
RHJhd0J1ZmZlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZl
cnMuaAppbmRleCA0YjNkZTcwNWVkMzM4N2Q4YTBjZTkzZGJlZDA1MzM5NDMyNWNiNDg3Li5mNjlk
ZjlmNjMxNjVhMWEzY2VlMzJlYjE5YzVjY2JjNWY4ODA1NjMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5oCkBAIC0zMSwxNyArMzEsMTcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXZWJHTERyYXdCdWZmZXJzIGZpbmFsIDogcHVibGlj
IFdlYkdMRXh0ZW5zaW9uIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBXZWJHTERyYXdCdWZmZXJz
KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBleHBsaWNpdCBXZWJHTERyYXdCdWZm
ZXJzKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKICAgICB2aXJ0dWFsIH5XZWJHTERyYXdC
dWZmZXJzKCk7CiAKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSopOworICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlJik7CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIHZvaWQgZHJhd0J1ZmZlcnNXRUJHTChjb25zdCBWZWN0b3I8R0MzRGVudW0+JiBidWZm
ZXJzKTsKIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgYm9vbCBzYXRpc2ZpZXNXZWJHTFJlcXVpcmVt
ZW50cyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAgc3RhdGljIGJvb2wgc2F0aXNm
aWVzV2ViR0xSZXF1aXJlbWVudHMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xFeHRlbnNpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xFeHRlbnNpb24uY3BwCmluZGV4IDA5YTYyODgwMWMwMjcyYTA5Mjc2YWQwOGEzNTc3Y2MwODQ3
Y2ZiYzQuLmM5ZjBhNDI1MWM3MGUwMjM1OGRmNGQyNDFjOGNiYjQ3MjQzNzc5MGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5jcHAKQEAgLTMxLDcgKzMx
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XZWJHTEV4dGVuc2lvbjo6V2ViR0xFeHRl
bnNpb24oV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29udGV4dCkKK1dlYkdMRXh0ZW5zaW9u
OjpXZWJHTEV4dGVuc2lvbihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAg
IDogbV9jb250ZXh0KGNvbnRleHQpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xFeHRlbnNpb24uaAppbmRleCBmNDkwNzVjZTI0MDZlMzU1MjE2ODc5ZjdiYWM1MGM4MTg0
YTM3M2EwLi43ZjcwOWI0NDU4MDM3YWVjNzFlNzJhNGQ3MjQ4MzNlOTE5ZTgzZGZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmgKQEAgLTU3LDE2ICs1Nywx
NiBAQCBwdWJsaWM6CiAgICAgICAgIEFOR0xFSW5zdGFuY2VkQXJyYXlzTmFtZSwKICAgICB9Owog
Ci0gICAgdm9pZCByZWYoKSB7IG1fY29udGV4dC0+cmVmKCk7IH0KLSAgICB2b2lkIGRlcmVmKCkg
eyBtX2NvbnRleHQtPmRlcmVmKCk7IH0KLSAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBj
b250ZXh0KCkgeyByZXR1cm4gbV9jb250ZXh0OyB9CisgICAgdm9pZCByZWYoKSB7IG1fY29udGV4
dC5yZWYoKTsgfQorICAgIHZvaWQgZGVyZWYoKSB7IG1fY29udGV4dC5kZXJlZigpOyB9CisgICAg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCgpIHsgcmV0dXJuIG1fY29udGV4dDsg
fQogCiAgICAgdmlydHVhbCB+V2ViR0xFeHRlbnNpb24oKTsKICAgICB2aXJ0dWFsIEV4dGVuc2lv
bk5hbWUgZ2V0TmFtZSgpIGNvbnN0ID0gMDsKIAogcHJvdGVjdGVkOgotICAgIFdlYkdMRXh0ZW5z
aW9uKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKLSAgICBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlKiBtX2NvbnRleHQ7CisgICAgV2ViR0xFeHRlbnNpb24oV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSYpOworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIG1fY29udGV4dDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAKaW5kZXggOTYxZmJhZTgxYmZkNGJiZTYxNDFjYzU0ZjE1
YmM2ODczZWMwYzg4NS4uMmJhNDFiOTZjOTQ3ODM1NDM2OTI4YzYyZTUwN2Y0YThlNTMwZjhkYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAK
QEAgLTI2OSwxNiArMjY5LDE2IEBAIFdlYkdMRnJhbWVidWZmZXI6OldlYkdMQXR0YWNobWVudDo6
fldlYkdMQXR0YWNobWVudCgpCiB7CiB9CiAKLVJlZjxXZWJHTEZyYW1lYnVmZmVyPiBXZWJHTEZy
YW1lYnVmZmVyOjpjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY3R4KQorUmVmPFdl
YkdMRnJhbWVidWZmZXI+IFdlYkdMRnJhbWVidWZmZXI6OmNyZWF0ZShXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlJiBjdHgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR0xGcmFtZWJ1
ZmZlcihjdHgpKTsKIH0KIAotV2ViR0xGcmFtZWJ1ZmZlcjo6V2ViR0xGcmFtZWJ1ZmZlcihXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjdHgpCitXZWJHTEZyYW1lYnVmZmVyOjpXZWJHTEZyYW1l
YnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGN0eCkKICAgICA6IFdlYkdMQ29udGV4
dE9iamVjdChjdHgpCiAgICAgLCBtX2hhc0V2ZXJCZWVuQm91bmQoZmFsc2UpCiB7Ci0gICAgc2V0
T2JqZWN0KGN0eC0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+Y3JlYXRlRnJhbWVidWZmZXIoKSk7Cisg
ICAgc2V0T2JqZWN0KGN0eC5ncmFwaGljc0NvbnRleHQzRCgpLT5jcmVhdGVGcmFtZWJ1ZmZlcigp
KTsKIH0KIAogV2ViR0xGcmFtZWJ1ZmZlcjo6fldlYkdMRnJhbWVidWZmZXIoKQpAQCAtNjI3LDcg
KzYyNyw3IEBAIHZvaWQgV2ViR0xGcmFtZWJ1ZmZlcjo6ZHJhd0J1ZmZlcnNJZk5lY2Vzc2FyeShi
b29sIGZvcmNlKQogICAgICAgICB9CiAgICAgfQogICAgIGlmIChyZXNldCkgewotICAgICAgICBj
b250ZXh0KCktPmdyYXBoaWNzQ29udGV4dDNEKCktPmdldEV4dGVuc2lvbnMoKS0+ZHJhd0J1ZmZl
cnNFWFQoCisgICAgICAgIGNvbnRleHQoKS0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+Z2V0RXh0ZW5z
aW9ucygpLmRyYXdCdWZmZXJzRVhUKAogICAgICAgICAgICAgbV9maWx0ZXJlZERyYXdCdWZmZXJz
LnNpemUoKSwgbV9maWx0ZXJlZERyYXdCdWZmZXJzLmRhdGEoKSk7CiAgICAgfQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oCmluZGV4IDVhYzRmYjdl
OTFlMTIwZGUzZGRiODk5YWRjMWNmODlkNDE3ODkzOWQuLjIwZWQyOWNjMDE2ZDgxZDZjNDc2Mzcx
ZGViMWVhZGM1MDdlODNlODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMRnJhbWVidWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TEZyYW1lYnVmZmVyLmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+
V2ViR0xGcmFtZWJ1ZmZlcigpOwogCi0gICAgc3RhdGljIFJlZjxXZWJHTEZyYW1lYnVmZmVyPiBj
cmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOworICAgIHN0YXRpYyBSZWY8V2ViR0xG
cmFtZWJ1ZmZlcj4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKIAogICAgIHZv
aWQgc2V0QXR0YWNobWVudEZvckJvdW5kRnJhbWVidWZmZXIoR0MzRGVudW0gYXR0YWNobWVudCwg
R0MzRGVudW0gdGV4VGFyZ2V0LCBXZWJHTFRleHR1cmUqLCBHQzNEaW50IGxldmVsKTsKICAgICB2
b2lkIHNldEF0dGFjaG1lbnRGb3JCb3VuZEZyYW1lYnVmZmVyKEdDM0RlbnVtIGF0dGFjaG1lbnQs
IFdlYkdMUmVuZGVyYnVmZmVyKik7CkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICBHQzNE
ZW51bSBnZXREcmF3QnVmZmVyKEdDM0RlbnVtKTsKIAogcHJvdGVjdGVkOgotICAgIFdlYkdMRnJh
bWVidWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOworICAgIFdlYkdMRnJhbWVidWZm
ZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogCiAgICAgdm9pZCBkZWxldGVPYmplY3RJ
bXBsKEdyYXBoaWNzQ29udGV4dDNEKiwgUGxhdGZvcm0zRE9iamVjdCkgb3ZlcnJpZGU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTG9zZUNvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xMb3NlQ29udGV4dC5jcHAKaW5kZXgg
YzY1YWU5MDg4ODg0YmZhZTczMDYyYzM1MjE4MjZlMGM5MTU3YTNjYi4uOWJjYjA0OWI0MDkwOWY1
MTU5YmNjZTJjYTUyOTAyZmIwNmQ5NjI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xMb3NlQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xMb3NlQ29udGV4dC5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1XZWJHTExvc2VDb250ZXh0OjpXZWJHTExvc2VDb250ZXh0KFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRleHQpCitXZWJHTExvc2VDb250ZXh0OjpXZWJHTExvc2VD
b250ZXh0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4
dGVuc2lvbihjb250ZXh0KQogewogfQpAQCAtNDksMTIgKzQ5LDEyIEBAIFdlYkdMRXh0ZW5zaW9u
OjpFeHRlbnNpb25OYW1lIFdlYkdMTG9zZUNvbnRleHQ6OmdldE5hbWUoKSBjb25zdAogCiB2b2lk
IFdlYkdMTG9zZUNvbnRleHQ6Omxvc2VDb250ZXh0KCkKIHsKLSAgICBtX2NvbnRleHQtPmZvcmNl
TG9zdENvbnRleHQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6U3ludGhldGljTG9zdENvbnRl
eHQpOworICAgIG1fY29udGV4dC5mb3JjZUxvc3RDb250ZXh0KFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OlN5bnRoZXRpY0xvc3RDb250ZXh0KTsKIH0KIAogdm9pZCBXZWJHTExvc2VDb250ZXh0
OjpyZXN0b3JlQ29udGV4dCgpCiB7Ci0gICAgbV9jb250ZXh0LT5mb3JjZVJlc3RvcmVDb250ZXh0
KCk7CisgICAgbV9jb250ZXh0LmZvcmNlUmVzdG9yZUNvbnRleHQoKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xMb3NlQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xMb3NlQ29u
dGV4dC5oCmluZGV4IDcyOTFiNzNlNzc5NjMwZmM1ZTVjYzIzMTMzYmEyNzg2N2U5YzhkZGUuLjYz
MGQyNjQ1YWQyZTk1MjMyZDA3ODI2MDI5NmU5MzMwYzE3MjNlYzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTG9zZUNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTExvc2VDb250ZXh0LmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xh
c3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTsKIAogY2xhc3MgV2ViR0xMb3NlQ29udGV4dCBm
aW5hbCA6IHB1YmxpYyBXZWJHTEV4dGVuc2lvbiB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgV2Vi
R0xMb3NlQ29udGV4dChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAgZXhwbGljaXQg
V2ViR0xMb3NlQ29udGV4dChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVh
bCB+V2ViR0xMb3NlQ29udGV4dCgpOwogCiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29u
c3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE9iamVjdC5jcHAK
aW5kZXggYWNkYWI5NzliNGViOTUxZGI1MjdiNjBlZjY4N2E0NGQ3NWI4YjMxYy4uNWQ5MjA5NWZm
ZjE3ODZiMjI1YzI4NWE5NzAzYzY2OTk2MWI1OTc1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMT2JqZWN0LmNwcApAQCAtMzgsNyArMzgsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVdlYkdMT2JqZWN0OjpXZWJHTE9iamVjdChXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlKikKK1dlYkdMT2JqZWN0OjpXZWJHTE9iamVjdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
JikKICAgICA6IG1fb2JqZWN0KDApCiAgICAgLCBtX2F0dGFjaG1lbnRDb3VudCgwKQogICAgICwg
bV9kZWxldGVkKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMT2JqZWN0LmgK
aW5kZXggOWM5MWYxZDMxMDYwNjdlMDg3ZmEwYmQ5YThjNzY0YzA4OWY4YzY0My4uN2IzMjNkNmM5
ZjdhNzhhZjRiMmY0M2U2NTAzZjllMDEyOWVjYzc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTE9iamVjdC5oCkBAIC01NCwxMCArNTQsMTAgQEAgcHVibGljOgogICAgIGJvb2wg
aXNEZWxldGVkKCkgeyByZXR1cm4gbV9kZWxldGVkOyB9CiAKICAgICAvLyBUcnVlIGlmIHRoaXMg
b2JqZWN0IGJlbG9uZ3MgdG8gdGhlIGdyb3VwIG9yIGNvbnRleHQuCi0gICAgdmlydHVhbCBib29s
IHZhbGlkYXRlKGNvbnN0IFdlYkdMQ29udGV4dEdyb3VwKiwgY29uc3QgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSopIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgdmFsaWRhdGUoY29uc3Qg
V2ViR0xDb250ZXh0R3JvdXAqLCBjb25zdCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJikgY29u
c3QgPSAwOwogCiBwcm90ZWN0ZWQ6Ci0gICAgV2ViR0xPYmplY3QoV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSopOworICAgIFdlYkdMT2JqZWN0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsK
IAogICAgIC8vIHNldE9iamVjdCBzaG91bGQgYmUgb25seSBjYWxsZWQgb25jZSByaWdodCBhZnRl
ciBjcmVhdGluZyBhIFdlYkdMT2JqZWN0LgogICAgIHZvaWQgc2V0T2JqZWN0KFBsYXRmb3JtM0RP
YmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQcm9n
cmFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5jcHAKaW5k
ZXggMWI3NTJlNmUwZmRiNGJhNjNjOTNiYzJlNzUzMDYyNTY1YzJkNGNkNy4uNzdhZmU5NGM0NTg1
YTFiYjNlMTc3NmM4OTE1M2I4NGJiODZjMTcwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFByb2dyYW0uY3BwCkBAIC0zNCwxOCArMzQsMTggQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1SZWY8V2ViR0xQcm9ncmFtPiBXZWJHTFByb2dyYW06OmNyZWF0ZShXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlKiBjdHgpCitSZWY8V2ViR0xQcm9ncmFtPiBXZWJHTFByb2dyYW06
OmNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjdHgpCiB7CiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2ViR0xQcm9ncmFtKGN0eCkpOwogfQogCi1XZWJHTFByb2dyYW06OldlYkdM
UHJvZ3JhbShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjdHgpCitXZWJHTFByb2dyYW06Oldl
YkdMUHJvZ3JhbShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjdHgpCiAgICAgOiBXZWJHTFNo
YXJlZE9iamVjdChjdHgpCiAgICAgLCBtX2xpbmtTdGF0dXMoZmFsc2UpCiAgICAgLCBtX2xpbmtD
b3VudCgwKQogICAgICwgbV9pbmZvVmFsaWQodHJ1ZSkKIHsKLSAgICBzZXRPYmplY3QoY3R4LT5n
cmFwaGljc0NvbnRleHQzRCgpLT5jcmVhdGVQcm9ncmFtKCkpOworICAgIHNldE9iamVjdChjdHgu
Z3JhcGhpY3NDb250ZXh0M0QoKS0+Y3JlYXRlUHJvZ3JhbSgpKTsKIH0KIAogV2ViR0xQcm9ncmFt
Ojp+V2ViR0xQcm9ncmFtKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUHJvZ3JhbS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFt
LmgKaW5kZXggZTRiMTA2OTMyNWFiMzkzY2IyYmFlNTI1MDlmNzQ5YzM4MDIzOTRlOC4uNzE3Y2Nl
MTM4YzQyOGM1N2NkZGI3YzU1YzE0Njg1ZmE0NjIyMzJmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xQcm9ncmFtLmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgV2ViR0xQcm9n
cmFtIGZpbmFsIDogcHVibGljIFdlYkdMU2hhcmVkT2JqZWN0IHsKIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5XZWJHTFByb2dyYW0oKTsKIAotICAgIHN0YXRpYyBSZWY8V2ViR0xQcm9ncmFtPiBjcmVh
dGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOworICAgIHN0YXRpYyBSZWY8V2ViR0xQcm9n
cmFtPiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogCiAgICAgdW5zaWduZWQg
bnVtQWN0aXZlQXR0cmliTG9jYXRpb25zKCk7CiAgICAgR0MzRGludCBnZXRBY3RpdmVBdHRyaWJM
b2NhdGlvbihHQzNEdWludCBpbmRleCk7CkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICBi
b29sIGRldGFjaFNoYWRlcihXZWJHTFNoYWRlciopOwogCiBwcm90ZWN0ZWQ6Ci0gICAgV2ViR0xQ
cm9ncmFtKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBXZWJHTFByb2dyYW0oV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogCiAgICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKEdy
YXBoaWNzQ29udGV4dDNEKiwgUGxhdGZvcm0zRE9iamVjdCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUXVlcnkuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xRdWVyeS5jcHAKaW5kZXggYzdmOTQzNDliOTA4M2VlMDhm
N2ViZWJhZjBkNjMwMWJjOGJhMmI0MS4uOGNhNTI1MTE1NzM1MDE1NDVhYzU1ZjVlOTQxZWFhNWE4
MDQzYmVhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xRdWVy
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xRdWVyeS5jcHAKQEAg
LTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAotUmVmPFdlYkdMUXVl
cnk+IFdlYkdMUXVlcnk6OmNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjdHgpCitS
ZWY8V2ViR0xRdWVyeT4gV2ViR0xRdWVyeTo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UmIGN0eCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHTFF1ZXJ5KGN0eCkpOwog
fQpAQCAtNDMsNyArNDMsNyBAQCBXZWJHTFF1ZXJ5Ojp+V2ViR0xRdWVyeSgpCiAgICAgZGVsZXRl
T2JqZWN0KDApOwogfQogCi1XZWJHTFF1ZXJ5OjpXZWJHTFF1ZXJ5KFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UqIGN0eCkKK1dlYkdMUXVlcnk6OldlYkdMUXVlcnkoV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSYgY3R4KQogICAgIDogV2ViR0xTaGFyZWRPYmplY3QoY3R4KQogewogICAgIC8vIEZJ
WE1FOiBDYWxsIGNyZWF0ZVF1ZXJ5IGZyb20gR3JhcGhpY3NDb250ZXh0M0QuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFF1ZXJ5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFF1ZXJ5LmgKaW5kZXggY2U5ODk1Yjg4YTk2MjdlMThmODZiYzZj
NGJjMjFhMmUyOGVlM2Y0Zi4uNDZkYjU5MmE4NWFmNjJmZTgwZjcxZjM3M2JlNTkxNmJjYjljMTg1
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xRdWVyeS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUXVlcnkuaApAQCAtMzMsMTAgKzMz
LDEwIEBAIGNsYXNzIFdlYkdMUXVlcnkgZmluYWwgOiBwdWJsaWMgV2ViR0xTaGFyZWRPYmplY3Qg
ewogcHVibGljOgogICAgIHZpcnR1YWwgfldlYkdMUXVlcnkoKTsKIAotICAgIHN0YXRpYyBSZWY8
V2ViR0xRdWVyeT4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBzdGF0
aWMgUmVmPFdlYkdMUXVlcnk+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAK
IHByb3RlY3RlZDoKLSAgICBXZWJHTFF1ZXJ5KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsK
KyAgICBXZWJHTFF1ZXJ5KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKIAogICAgIHZvaWQg
ZGVsZXRlT2JqZWN0SW1wbChHcmFwaGljc0NvbnRleHQzRCosIFBsYXRmb3JtM0RPYmplY3QpIG92
ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1
ZmZlci5jcHAKaW5kZXggMWQ3OTQyOTBkNmJhMjJkMWM4NDU2MDE1ZjRiMDAyNWQ5ZWM3NGExNC4u
Njk5NmQ5YjFkYTkzMGYzYTJiYWJhMjMwZTQ5MmMwZDc4NGE3Y2QxOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmNwcApAQCAtMzQsNyArMzQs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxXZWJHTFJlbmRlcmJ1ZmZlcj4gV2Vi
R0xSZW5kZXJidWZmZXI6OmNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjdHgpCitS
ZWY8V2ViR0xSZW5kZXJidWZmZXI+IFdlYkdMUmVuZGVyYnVmZmVyOjpjcmVhdGUoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSYgY3R4KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdM
UmVuZGVyYnVmZmVyKGN0eCkpOwogfQpAQCAtNDQsNyArNDQsNyBAQCBXZWJHTFJlbmRlcmJ1ZmZl
cjo6fldlYkdMUmVuZGVyYnVmZmVyKCkKICAgICBkZWxldGVPYmplY3QoMCk7CiB9CiAKLVdlYkdM
UmVuZGVyYnVmZmVyOjpXZWJHTFJlbmRlcmJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
KiBjdHgpCitXZWJHTFJlbmRlcmJ1ZmZlcjo6V2ViR0xSZW5kZXJidWZmZXIoV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSYgY3R4KQogICAgIDogV2ViR0xTaGFyZWRPYmplY3QoY3R4KQogICAgICwg
bV9pbnRlcm5hbEZvcm1hdChHcmFwaGljc0NvbnRleHQzRDo6UkdCQTQpCiAgICAgLCBtX2luaXRp
YWxpemVkKGZhbHNlKQpAQCAtNTMsNyArNTMsNyBAQCBXZWJHTFJlbmRlcmJ1ZmZlcjo6V2ViR0xS
ZW5kZXJidWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY3R4KQogICAgICwgbV9pc1Zh
bGlkKHRydWUpCiAgICAgLCBtX2hhc0V2ZXJCZWVuQm91bmQoZmFsc2UpCiB7Ci0gICAgc2V0T2Jq
ZWN0KGN0eC0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+Y3JlYXRlUmVuZGVyYnVmZmVyKCkpOworICAg
IHNldE9iamVjdChjdHguZ3JhcGhpY3NDb250ZXh0M0QoKS0+Y3JlYXRlUmVuZGVyYnVmZmVyKCkp
OwogfQogCiB2b2lkIFdlYkdMUmVuZGVyYnVmZmVyOjpkZWxldGVPYmplY3RJbXBsKEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0M2QsIFBsYXRmb3JtM0RPYmplY3Qgb2JqZWN0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmgKaW5kZXggMDZiYjMwMjVk
NmQ3M2ZlOGE0YTNjZjhmYjkwNjJjNjI3MmZhMmIyNi4uY2Y2YWQ2ZjY1OTY3OWQ1NzdlNzM0MzYy
ZjNlM2I1M2MyNDRkMmRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJidWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmJ1ZmZlci5oCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIFdlYkdMUmVuZGVyYnVmZmVy
IGZpbmFsIDogcHVibGljIFdlYkdMU2hhcmVkT2JqZWN0IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5XZWJHTFJlbmRlcmJ1ZmZlcigpOwogCi0gICAgc3RhdGljIFJlZjxXZWJHTFJlbmRlcmJ1ZmZl
cj4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBzdGF0aWMgUmVmPFdl
YkdMUmVuZGVyYnVmZmVyPiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogCiAg
ICAgdm9pZCBzZXRJbnRlcm5hbEZvcm1hdChHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCkKICAgICB7
CkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEhhc0V2ZXJCZWVuQm91bmQo
KSB7IG1faGFzRXZlckJlZW5Cb3VuZCA9IHRydWU7IH0KIAogcHJvdGVjdGVkOgotICAgIFdlYkdM
UmVuZGVyYnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBXZWJHTFJlbmRl
cmJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAKICAgICB2b2lkIGRlbGV0ZU9i
amVjdEltcGwoR3JhcGhpY3NDb250ZXh0M0QqLCBQbGF0Zm9ybTNET2JqZWN0KSBvdmVycmlkZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5jcHAKaW5kZXggOTZiODA4ZDQ5ZTA4NmM5ZjViNzg0MGViMGQ2ZWMyYTkyNTE4YzY3YS4u
ZGMxOWE1NTI0MmFjMzE5NjliOTAzNzdlMTUxMDJmODg4ZDViZDQwNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC03
Nyw3ICs3Nyw3IEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
KEhUTUxDYW52YXNFbGVtZW50JiBwYXNzZWRDYW52YXMsIFBhCiAKIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0Ojppbml0aWFsaXplVmVydGV4QXJyYXlPYmplY3RzKCkKIHsKLSAgICBtX2RlZmF1
bHRWZXJ0ZXhBcnJheU9iamVjdCA9IFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OmNyZWF0ZSh0
aGlzLCBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOjpWQU9UeXBlRGVmYXVsdCk7CisgICAgbV9k
ZWZhdWx0VmVydGV4QXJyYXlPYmplY3QgPSBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOjpjcmVh
dGUoKnRoaXMsIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OlZBT1R5cGVEZWZhdWx0KTsKICAg
ICBhZGRDb250ZXh0T2JqZWN0KG1fZGVmYXVsdFZlcnRleEFycmF5T2JqZWN0LmdldCgpKTsKICAg
ICBtX2JvdW5kVmVydGV4QXJyYXlPYmplY3QgPSBtX2RlZmF1bHRWZXJ0ZXhBcnJheU9iamVjdDsK
ICAgICBpZiAoIWlzR0xFUzJDb21wbGlhbnQoKSkKQEAgLTkwLDE1NSArOTAsMTU1IEBAIFdlYkdM
RXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJp
bmcmIG5hbWUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIGlmIChlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKG5hbWUsICJFWFRfYmxlbmRfbWlubWF4IikKLSAgICAgICAgJiYgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9FWFRfYmxlbmRfbWlubWF4Iikp
IHsKKyAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VY
VF9ibGVuZF9taW5tYXgiKSkgewogICAgICAgICBpZiAoIW1fZXh0QmxlbmRNaW5NYXgpIHsKLSAg
ICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKCJHTF9F
WFRfYmxlbmRfbWlubWF4Iik7Ci0gICAgICAgICAgICBtX2V4dEJsZW5kTWluTWF4ID0gc3RkOjpt
YWtlX3VuaXF1ZTxFWFRCbGVuZE1pbk1heD4odGhpcyk7CisgICAgICAgICAgICBtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9FWFRfYmxlbmRfbWlubWF4Iik7Cisg
ICAgICAgICAgICBtX2V4dEJsZW5kTWluTWF4ID0gc3RkOjptYWtlX3VuaXF1ZTxFWFRCbGVuZE1p
bk1heD4oKnRoaXMpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX2V4dEJsZW5kTWluTWF4
LmdldCgpOwogICAgIH0KICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiRVhU
X3NSR0IiKQotICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMo
IkdMX0VYVF9zUkdCIikpIHsKKyAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCku
c3VwcG9ydHMoIkdMX0VYVF9zUkdCIikpIHsKICAgICAgICAgaWYgKCFtX2V4dHNSR0IpIHsKLSAg
ICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKCJHTF9F
WFRfc1JHQiIpOwotICAgICAgICAgICAgbV9leHRzUkdCID0gc3RkOjptYWtlX3VuaXF1ZTxFWFRz
UkdCPih0aGlzKTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3Vy
ZUVuYWJsZWQoIkdMX0VYVF9zUkdCIik7CisgICAgICAgICAgICBtX2V4dHNSR0IgPSBzdGQ6Om1h
a2VfdW5pcXVlPEVYVHNSR0I+KCp0aGlzKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbV9l
eHRzUkdCLmdldCgpOwogICAgIH0KICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1l
LCAiRVhUX2ZyYWdfZGVwdGgiKQotICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS0+c3VwcG9ydHMoIkdMX0VYVF9mcmFnX2RlcHRoIikpIHsKKyAgICAgICAgJiYgbV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF9mcmFnX2RlcHRoIikpIHsKICAgICAg
ICAgaWYgKCFtX2V4dEZyYWdEZXB0aCkgewotICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9mcmFnX2RlcHRoIik7Ci0gICAgICAgICAg
ICBtX2V4dEZyYWdEZXB0aCA9IHN0ZDo6bWFrZV91bmlxdWU8RVhURnJhZ0RlcHRoPih0aGlzKTsK
KyAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdM
X0VYVF9mcmFnX2RlcHRoIik7CisgICAgICAgICAgICBtX2V4dEZyYWdEZXB0aCA9IHN0ZDo6bWFr
ZV91bmlxdWU8RVhURnJhZ0RlcHRoPigqdGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJu
IG1fZXh0RnJhZ0RlcHRoLmdldCgpOwogICAgIH0KICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJ
Q2FzZShuYW1lLCAiRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpCi0gICAgICAgICYmIChtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2Qi
KSB8fCBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX0FSQl9zaGFkZXJf
dGV4dHVyZV9sb2QiKSkpIHsKKyAgICAgICAgJiYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LnN1cHBvcnRzKCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIikgfHwgbV9jb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0FSQl9zaGFkZXJfdGV4dHVyZV9sb2QiKSkpIHsKICAg
ICAgICAgaWYgKCFtX2V4dFNoYWRlclRleHR1cmVMT0QpIHsKLSAgICAgICAgICAgIG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKCJHTF9FWFRfc2hhZGVyX3RleHR1cmVf
bG9kIik7Ci0gICAgICAgICAgICBtX2V4dFNoYWRlclRleHR1cmVMT0QgPSBzdGQ6Om1ha2VfdW5p
cXVlPEVYVFNoYWRlclRleHR1cmVMT0Q+KHRoaXMpOworICAgICAgICAgICAgbV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIp
OworICAgICAgICAgICAgbV9leHRTaGFkZXJUZXh0dXJlTE9EID0gc3RkOjptYWtlX3VuaXF1ZTxF
WFRTaGFkZXJUZXh0dXJlTE9EPigqdGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1f
ZXh0U2hhZGVyVGV4dHVyZUxPRC5nZXQoKTsKICAgICB9CiAgICAgaWYgKChlcXVhbElnbm9yaW5n
QVNDSUlDYXNlKG5hbWUsICJFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKSB8fCBlcXVh
bElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJXRUJLSVRfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNv
dHJvcGljIikpCi0gICAgICAgICYmIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0
cygiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIikpIHsKKyAgICAgICAgJiYgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9h
bmlzb3Ryb3BpYyIpKSB7CiAgICAgICAgIGlmICghbV9leHRUZXh0dXJlRmlsdGVyQW5pc290cm9w
aWMpIHsKLSAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFi
bGVkKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKTsKLSAgICAgICAgICAgIG1f
ZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljID0gc3RkOjptYWtlX3VuaXF1ZTxFWFRUZXh0dXJl
RmlsdGVyQW5pc290cm9waWM+KHRoaXMpOworICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGlj
Iik7CisgICAgICAgICAgICBtX2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYyA9IHN0ZDo6bWFr
ZV91bmlxdWU8RVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljPigqdGhpcyk7CiAgICAgICAgIH0K
ICAgICAgICAgcmV0dXJuIG1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmdldCgpOwogICAg
IH0KICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiT0VTX3N0YW5kYXJkX2Rl
cml2YXRpdmVzIikKLSAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBv
cnRzKCJHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiKSkgeworICAgICAgICAmJiBtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVz
IikpIHsKICAgICAgICAgaWYgKCFtX29lc1N0YW5kYXJkRGVyaXZhdGl2ZXMpIHsKLSAgICAgICAg
ICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKCJHTF9PRVNfc3Rh
bmRhcmRfZGVyaXZhdGl2ZXMiKTsKLSAgICAgICAgICAgIG1fb2VzU3RhbmRhcmREZXJpdmF0aXZl
cyA9IHN0ZDo6bWFrZV91bmlxdWU8T0VTU3RhbmRhcmREZXJpdmF0aXZlcz4odGhpcyk7CisgICAg
ICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9PRVNf
c3RhbmRhcmRfZGVyaXZhdGl2ZXMiKTsKKyAgICAgICAgICAgIG1fb2VzU3RhbmRhcmREZXJpdmF0
aXZlcyA9IHN0ZDo6bWFrZV91bmlxdWU8T0VTU3RhbmRhcmREZXJpdmF0aXZlcz4oKnRoaXMpOwog
ICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX29lc1N0YW5kYXJkRGVyaXZhdGl2ZXMuZ2V0KCk7
CiAgICAgfQogICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJPRVNfdGV4dHVy
ZV9mbG9hdCIpCi0gICAgICAgICYmIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0
cygiR0xfT0VTX3RleHR1cmVfZmxvYXQiKSkgeworICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfZmxvYXQiKSkgewogICAgICAgICBp
ZiAoIW1fb2VzVGV4dHVyZUZsb2F0KSB7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3RleHR1cmVfZmxvYXQiKTsKLSAgICAgICAg
ICAgIG1fb2VzVGV4dHVyZUZsb2F0ID0gc3RkOjptYWtlX3VuaXF1ZTxPRVNUZXh0dXJlRmxvYXQ+
KHRoaXMpOworICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5h
YmxlZCgiR0xfT0VTX3RleHR1cmVfZmxvYXQiKTsKKyAgICAgICAgICAgIG1fb2VzVGV4dHVyZUZs
b2F0ID0gc3RkOjptYWtlX3VuaXF1ZTxPRVNUZXh0dXJlRmxvYXQ+KCp0aGlzKTsKICAgICAgICAg
fQogICAgICAgICByZXR1cm4gbV9vZXNUZXh0dXJlRmxvYXQuZ2V0KCk7CiAgICAgfQogICAgIGlm
IChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIi
KQotICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09F
U190ZXh0dXJlX2Zsb2F0X2xpbmVhciIpKSB7CisgICAgICAgICYmIG1fY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiKSkgewogICAg
ICAgICBpZiAoIW1fb2VzVGV4dHVyZUZsb2F0TGluZWFyKSB7Ci0gICAgICAgICAgICBtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3RleHR1cmVfZmxvYXRf
bGluZWFyIik7Ci0gICAgICAgICAgICBtX29lc1RleHR1cmVGbG9hdExpbmVhciA9IHN0ZDo6bWFr
ZV91bmlxdWU8T0VTVGV4dHVyZUZsb2F0TGluZWFyPih0aGlzKTsKKyAgICAgICAgICAgIG1fY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX09FU190ZXh0dXJlX2Zsb2F0
X2xpbmVhciIpOworICAgICAgICAgICAgbV9vZXNUZXh0dXJlRmxvYXRMaW5lYXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPE9FU1RleHR1cmVGbG9hdExpbmVhcj4oKnRoaXMpOwogICAgICAgICB9CiAgICAg
ICAgIHJldHVybiBtX29lc1RleHR1cmVGbG9hdExpbmVhci5nZXQoKTsKICAgICB9CiAgICAgaWYg
KGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQiKQot
ICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU190
ZXh0dXJlX2hhbGZfZmxvYXQiKSkgeworICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpKSB7CiAgICAgICAgIGlm
ICghbV9vZXNUZXh0dXJlSGFsZkZsb2F0KSB7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpOwot
ICAgICAgICAgICAgbV9vZXNUZXh0dXJlSGFsZkZsb2F0ID0gc3RkOjptYWtlX3VuaXF1ZTxPRVNU
ZXh0dXJlSGFsZkZsb2F0Pih0aGlzKTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQiKTsKKyAgICAg
ICAgICAgIG1fb2VzVGV4dHVyZUhhbGZGbG9hdCA9IHN0ZDo6bWFrZV91bmlxdWU8T0VTVGV4dHVy
ZUhhbGZGbG9hdD4oKnRoaXMpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX29lc1RleHR1
cmVIYWxmRmxvYXQuZ2V0KCk7CiAgICAgfQogICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNl
KG5hbWUsICJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpCi0gICAgICAgICYmIG1fY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9h
dF9saW5lYXIiKSkgeworICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBw
b3J0cygiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKSkgewogICAgICAgICBpZiAo
IW1fb2VzVGV4dHVyZUhhbGZGbG9hdExpbmVhcikgewotICAgICAgICAgICAgbV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRf
bGluZWFyIik7Ci0gICAgICAgICAgICBtX29lc1RleHR1cmVIYWxmRmxvYXRMaW5lYXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPE9FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXI+KHRoaXMpOworICAgICAgICAg
ICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3RleHR1
cmVfaGFsZl9mbG9hdF9saW5lYXIiKTsKKyAgICAgICAgICAgIG1fb2VzVGV4dHVyZUhhbGZGbG9h
dExpbmVhciA9IHN0ZDo6bWFrZV91bmlxdWU8T0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhcj4oKnRo
aXMpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX29lc1RleHR1cmVIYWxmRmxvYXRMaW5l
YXIuZ2V0KCk7CiAgICAgfQogICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJP
RVNfdmVydGV4X2FycmF5X29iamVjdCIpCi0gICAgICAgICYmIG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKSkgeworICAgICAg
ICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3ZlcnRleF9h
cnJheV9vYmplY3QiKSkgewogICAgICAgICBpZiAoIW1fb2VzVmVydGV4QXJyYXlPYmplY3QpIHsK
LSAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKCJH
TF9PRVNfdmVydGV4X2FycmF5X29iamVjdCIpOworICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKTsK
ICAgICAgICAgICAgIG1fb2VzVmVydGV4QXJyYXlPYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPE9F
U1ZlcnRleEFycmF5T2JqZWN0PigqdGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1f
b2VzVmVydGV4QXJyYXlPYmplY3QuZ2V0KCk7CiAgICAgfQogICAgIGlmIChlcXVhbElnbm9yaW5n
QVNDSUlDYXNlKG5hbWUsICJPRVNfZWxlbWVudF9pbmRleF91aW50IikKLSAgICAgICAgJiYgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfZWxlbWVudF9pbmRleF91
aW50IikpIHsKKyAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMo
IkdMX09FU19lbGVtZW50X2luZGV4X3VpbnQiKSkgewogICAgICAgICBpZiAoIW1fb2VzRWxlbWVu
dEluZGV4VWludCkgewotICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVu
c3VyZUVuYWJsZWQoIkdMX09FU19lbGVtZW50X2luZGV4X3VpbnQiKTsKLSAgICAgICAgICAgIG1f
b2VzRWxlbWVudEluZGV4VWludCA9IHN0ZDo6bWFrZV91bmlxdWU8T0VTRWxlbWVudEluZGV4VWlu
dD4odGhpcyk7CisgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVF
bmFibGVkKCJHTF9PRVNfZWxlbWVudF9pbmRleF91aW50Iik7CisgICAgICAgICAgICBtX29lc0Vs
ZW1lbnRJbmRleFVpbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9FU0VsZW1lbnRJbmRleFVpbnQ+KCp0
aGlzKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbV9vZXNFbGVtZW50SW5kZXhVaW50Lmdl
dCgpOwogICAgIH0KICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiV0VCR0xf
bG9zZV9jb250ZXh0IikpIHsKICAgICAgICAgaWYgKCFtX3dlYmdsTG9zZUNvbnRleHQpCi0gICAg
ICAgICAgICBtX3dlYmdsTG9zZUNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMTG9zZUNv
bnRleHQ+KHRoaXMpOworICAgICAgICAgICAgbV93ZWJnbExvc2VDb250ZXh0ID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJHTExvc2VDb250ZXh0PigqdGhpcyk7CiAgICAgICAgIHJldHVybiBtX3dlYmds
TG9zZUNvbnRleHQuZ2V0KCk7CiAgICAgfQogICAgIGlmICgoZXF1YWxJZ25vcmluZ0FTQ0lJQ2Fz
ZShuYW1lLCAiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9hdGMiKSkKLSAgICAgICAg
JiYgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6c3VwcG9ydGVkKHRoaXMpKSB7CisgICAgICAg
ICYmIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OnN1cHBvcnRlZCgqdGhpcykpIHsKICAgICAg
ICAgaWYgKCFtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBVEMpCi0gICAgICAgICAgICBtX3dlYmds
Q29tcHJlc3NlZFRleHR1cmVBVEMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVBVEM+KHRoaXMpOworICAgICAgICAgICAgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlQVRD
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDPigqdGhpcyk7CiAg
ICAgICAgIHJldHVybiBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBVEMuZ2V0KCk7CiAgICAgfQog
ICAgIGlmICgoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiV0VCS0lUX1dFQkdMX2NvbXBy
ZXNzZWRfdGV4dHVyZV9wdnJ0YyIpKQotICAgICAgICAmJiBXZWJHTENvbXByZXNzZWRUZXh0dXJl
UFZSVEM6OnN1cHBvcnRlZCh0aGlzKSkgeworICAgICAgICAmJiBXZWJHTENvbXByZXNzZWRUZXh0
dXJlUFZSVEM6OnN1cHBvcnRlZCgqdGhpcykpIHsKICAgICAgICAgaWYgKCFtX3dlYmdsQ29tcHJl
c3NlZFRleHR1cmVQVlJUQykKLSAgICAgICAgICAgIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVBW
UlRDID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM+KHRoaXMp
OworICAgICAgICAgICAgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUFZSVEMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQz4oKnRoaXMpOwogICAgICAgICByZXR1
cm4gbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUFZSVEMuZ2V0KCk7CiAgICAgfQogICAgIGlmIChl
cXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0
YyIpCi0gICAgICAgICYmIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQodGhp
cykpIHsKKyAgICAgICAgJiYgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBvcnRlZCgq
dGhpcykpIHsKICAgICAgICAgaWYgKCFtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVTM1RDKQotICAg
ICAgICAgICAgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUzNUQyA9IHN0ZDo6bWFrZV91bmlxdWU8
V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM+KHRoaXMpOworICAgICAgICAgICAgbV93ZWJnbENv
bXByZXNzZWRUZXh0dXJlUzNUQyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xDb21wcmVzc2VkVGV4
dHVyZVMzVEM+KCp0aGlzKTsKICAgICAgICAgcmV0dXJuIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVy
ZVMzVEMuZ2V0KCk7CiAgICAgfQogICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUs
ICJXRUJHTF9kZXB0aF90ZXh0dXJlIikKLSAgICAgICAgJiYgV2ViR0xEZXB0aFRleHR1cmU6OnN1
cHBvcnRlZChncmFwaGljc0NvbnRleHQzRCgpKSkgeworICAgICAgICAmJiBXZWJHTERlcHRoVGV4
dHVyZTo6c3VwcG9ydGVkKCpncmFwaGljc0NvbnRleHQzRCgpKSkgewogICAgICAgICBpZiAoIW1f
d2ViZ2xEZXB0aFRleHR1cmUpIHsKLSAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLT5lbnN1cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9kZXB0aF90ZXh0dXJlIik7Ci0gICAgICAg
ICAgICBtX3dlYmdsRGVwdGhUZXh0dXJlID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTERlcHRoVGV4
dHVyZT4odGhpcyk7CisgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1
cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9kZXB0aF90ZXh0dXJlIik7CisgICAgICAgICAgICBtX3dl
YmdsRGVwdGhUZXh0dXJlID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTERlcHRoVGV4dHVyZT4oKnRo
aXMpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX3dlYmdsRGVwdGhUZXh0dXJlLmdldCgp
OwogICAgIH0KICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiV0VCR0xfZHJh
d19idWZmZXJzIikgJiYgc3VwcG9ydHNEcmF3QnVmZmVycygpKSB7CiAgICAgICAgIGlmICghbV93
ZWJnbERyYXdCdWZmZXJzKSB7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS0+ZW5zdXJlRW5hYmxlZCgiR0xfRVhUX2RyYXdfYnVmZmVycyIpOwotICAgICAgICAgICAgbV93
ZWJnbERyYXdCdWZmZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTERyYXdCdWZmZXJzPih0aGlz
KTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQo
IkdMX0VYVF9kcmF3X2J1ZmZlcnMiKTsKKyAgICAgICAgICAgIG1fd2ViZ2xEcmF3QnVmZmVycyA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xEcmF3QnVmZmVycz4oKnRoaXMpOwogICAgICAgICB9CiAg
ICAgICAgIHJldHVybiBtX3dlYmdsRHJhd0J1ZmZlcnMuZ2V0KCk7CiAgICAgfQotICAgIGlmIChl
cXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJBTkdMRV9pbnN0YW5jZWRfYXJyYXlzIikgJiYg
QU5HTEVJbnN0YW5jZWRBcnJheXM6OnN1cHBvcnRlZCh0aGlzKSkgeworICAgIGlmIChlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKG5hbWUsICJBTkdMRV9pbnN0YW5jZWRfYXJyYXlzIikgJiYgQU5HTEVJ
bnN0YW5jZWRBcnJheXM6OnN1cHBvcnRlZCgqdGhpcykpIHsKICAgICAgICAgaWYgKCFtX2FuZ2xl
SW5zdGFuY2VkQXJyYXlzKSB7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS0+ZW5zdXJlRW5hYmxlZCgiR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpOwotICAgICAgICAg
ICAgbV9hbmdsZUluc3RhbmNlZEFycmF5cyA9IHN0ZDo6bWFrZV91bmlxdWU8QU5HTEVJbnN0YW5j
ZWRBcnJheXM+KHRoaXMpOworICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCku
ZW5zdXJlRW5hYmxlZCgiR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpOworICAgICAgICAgICAg
bV9hbmdsZUluc3RhbmNlZEFycmF5cyA9IHN0ZDo6bWFrZV91bmlxdWU8QU5HTEVJbnN0YW5jZWRB
cnJheXM+KCp0aGlzKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbV9hbmdsZUluc3RhbmNl
ZEFycmF5cy5nZXQoKTsKICAgICB9CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFt
ZSwgIldFQkdMX2RlYnVnX3JlbmRlcmVyX2luZm8iKSkgewogICAgICAgICBpZiAoIW1fd2ViZ2xE
ZWJ1Z1JlbmRlcmVySW5mbykKLSAgICAgICAgICAgIG1fd2ViZ2xEZWJ1Z1JlbmRlcmVySW5mbyA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xEZWJ1Z1JlbmRlcmVySW5mbz4odGhpcyk7CisgICAgICAg
ICAgICBtX3dlYmdsRGVidWdSZW5kZXJlckluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMRGVi
dWdSZW5kZXJlckluZm8+KCp0aGlzKTsKICAgICAgICAgcmV0dXJuIG1fd2ViZ2xEZWJ1Z1JlbmRl
cmVySW5mby5nZXQoKTsKICAgICB9CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFt
ZSwgIldFQkdMX2RlYnVnX3NoYWRlcnMiKQotICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS0+c3VwcG9ydHMoIkdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSIpKSB7
CisgICAgICAgICYmIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9BTkdM
RV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UiKSkgewogICAgICAgICBpZiAoIW1fd2ViZ2xEZWJ1
Z1NoYWRlcnMpCi0gICAgICAgICAgICBtX3dlYmdsRGVidWdTaGFkZXJzID0gc3RkOjptYWtlX3Vu
aXF1ZTxXZWJHTERlYnVnU2hhZGVycz4odGhpcyk7CisgICAgICAgICAgICBtX3dlYmdsRGVidWdT
aGFkZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTERlYnVnU2hhZGVycz4oKnRoaXMpOwogICAg
ICAgICByZXR1cm4gbV93ZWJnbERlYnVnU2hhZGVycy5nZXQoKTsKICAgICB9CiAKQEAgLTI1Miw0
NCArMjUyLDQ0IEBAIFZlY3RvcjxTdHJpbmc+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3Vw
cG9ydGVkRXh0ZW5zaW9ucygpCiAgICAgaWYgKG1faXNQZW5kaW5nUG9saWN5UmVzb2x1dGlvbikK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCktPnN1cHBvcnRzKCJHTF9FWFRfYmxlbmRfbWlubWF4IikpCisgICAgaWYgKG1fY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9FWFRfYmxlbmRfbWlubWF4IikpCiAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoIkVYVF9ibGVuZF9taW5tYXgiKTsKLSAgICBpZiAobV9jb250
ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9FWFRfc1JHQiIpKQorICAgIGlmICht
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfRVhUX3NSR0IiKSkKICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgiRVhUX3NSR0IiKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCktPnN1cHBvcnRzKCJHTF9FWFRfZnJhZ19kZXB0aCIpKQorICAgIGlmIChtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfRVhUX2ZyYWdfZGVwdGgiKSkKICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgiRVhUX2ZyYWdfZGVwdGgiKTsKLSAgICBpZiAobV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCIpKQorICAgIGlm
IChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfZmxv
YXQiKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiT0VTX3RleHR1cmVfZmxvYXQiKTsKLSAgICBp
ZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9m
bG9hdF9saW5lYXIiKSkKKyAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9y
dHMoIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIpKQogICAgICAgICByZXN1bHQuYXBwZW5k
KCJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IikpCisgICAgaWYg
KG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9oYWxm
X2Zsb2F0IikpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQi
KTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNf
dGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpKQorICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKSkKICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgiT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKTsKLSAg
ICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfc3RhbmRh
cmRfZGVyaXZhdGl2ZXMiKSkKKyAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3Vw
cG9ydHMoIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpKQogICAgICAgICByZXN1bHQuYXBw
ZW5kKCJPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRF
eHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIikgfHwgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9BUkJfc2hhZGVyX3RleHR1cmVf
bG9kIikpCisgICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9F
WFRfc2hhZGVyX3RleHR1cmVfbG9kIikgfHwgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3Vw
cG9ydHMoIkdMX0FSQl9zaGFkZXJfdGV4dHVyZV9sb2QiKSkKICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgiRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpOwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS0+c3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpKQor
ICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfRVhUX3RleHR1
cmVfZmlsdGVyX2FuaXNvdHJvcGljIikpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIkVYVF90ZXh0
dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpOwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS0+c3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IikpCisgICAgaWYgKG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfdmVydGV4X2FycmF5X29i
amVjdCIpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdmVydGV4X2FycmF5X29iamVjdCIp
OwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU19l
bGVtZW50X2luZGV4X3VpbnQiKSkKKyAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCku
c3VwcG9ydHMoIkdMX09FU19lbGVtZW50X2luZGV4X3VpbnQiKSkKICAgICAgICAgcmVzdWx0LmFw
cGVuZCgiT0VTX2VsZW1lbnRfaW5kZXhfdWludCIpOwogICAgIHJlc3VsdC5hcHBlbmQoIldFQkdM
X2xvc2VfY29udGV4dCIpOwotICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpzdXBw
b3J0ZWQodGhpcykpCisgICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OnN1cHBvcnRl
ZCgqdGhpcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQktJVF9XRUJHTF9jb21wcmVzc2Vk
X3RleHR1cmVfYXRjIik7Ci0gICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6c3Vw
cG9ydGVkKHRoaXMpKQorICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBv
cnRlZCgqdGhpcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQktJVF9XRUJHTF9jb21wcmVz
c2VkX3RleHR1cmVfcHZydGMiKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6
OnN1cHBvcnRlZCh0aGlzKSkKKyAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1
cHBvcnRlZCgqdGhpcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2NvbXByZXNzZWRf
dGV4dHVyZV9zM3RjIik7Ci0gICAgaWYgKFdlYkdMRGVwdGhUZXh0dXJlOjpzdXBwb3J0ZWQoZ3Jh
cGhpY3NDb250ZXh0M0QoKSkpCisgICAgaWYgKFdlYkdMRGVwdGhUZXh0dXJlOjpzdXBwb3J0ZWQo
KmdyYXBoaWNzQ29udGV4dDNEKCkpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9kZXB0
aF90ZXh0dXJlIik7CiAgICAgaWYgKHN1cHBvcnRzRHJhd0J1ZmZlcnMoKSkKICAgICAgICAgcmVz
dWx0LmFwcGVuZCgiV0VCR0xfZHJhd19idWZmZXJzIik7Ci0gICAgaWYgKEFOR0xFSW5zdGFuY2Vk
QXJyYXlzOjpzdXBwb3J0ZWQodGhpcykpCisgICAgaWYgKEFOR0xFSW5zdGFuY2VkQXJyYXlzOjpz
dXBwb3J0ZWQoKnRoaXMpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJBTkdMRV9pbnN0YW5jZWRf
YXJyYXlzIik7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygi
R0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIikpCisgICAgaWYgKG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3Vy
Y2UiKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfZGVidWdfc2hhZGVycyIpOwogICAg
IHJlc3VsdC5hcHBlbmQoIldFQkdMX2RlYnVnX3JlbmRlcmVyX2luZm8iKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmNwcAppbmRleCAyZWI5MjgxZDJjY2U3NGIxODMyODE1MTdmZTM4NGU0OGUwOGE4MDI4Li40ZDQz
ZTc0ZjYxMTk5M2MyNDk1ZDNmYWQwZWE1ZDI4OTU5ZDhiZGU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApA
QCAtNDMwLDkgKzQzMCw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUoSFRNCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAotICAgIEV4dGVuc2lvbnMzRCogZXh0ZW5zaW9ucyA9IGNvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKTsKLSAgICBpZiAoZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0VY
VF9kZWJ1Z19tYXJrZXIiKSkKLSAgICAgICAgZXh0ZW5zaW9ucy0+cHVzaEdyb3VwTWFya2VyRVhU
KCJXZWJHTFJlbmRlcmluZ0NvbnRleHQiKTsKKyAgICBFeHRlbnNpb25zM0QmIGV4dGVuc2lvbnMg
PSBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCk7CisgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMo
IkdMX0VYVF9kZWJ1Z19tYXJrZXIiKSkKKyAgICAgICAgZXh0ZW5zaW9ucy5wdXNoR3JvdXBNYXJr
ZXJFWFQoIldlYkdMUmVuZGVyaW5nQ29udGV4dCIpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+IHJlbmRlcmluZ0NvbnRleHQgPSBudWxscHRyOwogI2lm
IEVOQUJMRShXRUJHTDIpCkBAIC01NzUsMTYgKzU3NSwxNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnNldHVwRmxhZ3MoKQogICAgICAgICBtX3N5bnRoZXNpemVkRXJyb3JzVG9D
b25zb2xlID0gcGFnZS0+c2V0dGluZ3MoKS53ZWJHTEVycm9yc1RvQ29uc29sZUVuYWJsZWQoKTsK
IAogICAgIG1faXNHTEVTMkNvbXBsaWFudCA9IG1fY29udGV4dC0+aXNHTEVTMkNvbXBsaWFudCgp
OwotICAgIG1faXNFcnJvckdlbmVyYXRlZE9uT3V0T2ZCb3VuZHNBY2Nlc3NlcyA9IG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLT5pc0VuYWJsZWQoIkdMX0NIUk9NSVVNX3N0cmljdF9hdHRyaWJz
Iik7Ci0gICAgbV9pc1Jlc291cmNlU2FmZSA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5p
c0VuYWJsZWQoIkdMX0NIUk9NSVVNX3Jlc291cmNlX3NhZmUiKTsKKyAgICBtX2lzRXJyb3JHZW5l
cmF0ZWRPbk91dE9mQm91bmRzQWNjZXNzZXMgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5p
c0VuYWJsZWQoIkdMX0NIUk9NSVVNX3N0cmljdF9hdHRyaWJzIik7CisgICAgbV9pc1Jlc291cmNl
U2FmZSA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmlzRW5hYmxlZCgiR0xfQ0hST01JVU1f
cmVzb3VyY2Vfc2FmZSIpOwogICAgIGlmIChtX2lzR0xFUzJDb21wbGlhbnQpIHsKLSAgICAgICAg
bV9pc0dMRVMyTlBPVFN0cmljdCA9ICFtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+aXNFbmFi
bGVkKCJHTF9PRVNfdGV4dHVyZV9ucG90Iik7Ci0gICAgICAgIG1faXNEZXB0aFN0ZW5jaWxTdXBw
b3J0ZWQgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+aXNFbmFibGVkKCJHTF9PRVNfcGFj
a2VkX2RlcHRoX3N0ZW5jaWwiKTsKKyAgICAgICAgbV9pc0dMRVMyTlBPVFN0cmljdCA9ICFtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5pc0VuYWJsZWQoIkdMX09FU190ZXh0dXJlX25wb3QiKTsK
KyAgICAgICAgbV9pc0RlcHRoU3RlbmNpbFN1cHBvcnRlZCA9IG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLmlzRW5hYmxlZCgiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CiAgICAgfSBl
bHNlIHsKLSAgICAgICAgbV9pc0dMRVMyTlBPVFN0cmljdCA9ICFtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS0+aXNFbmFibGVkKCJHTF9BUkJfdGV4dHVyZV9ub25fcG93ZXJfb2ZfdHdvIik7Ci0g
ICAgICAgIG1faXNEZXB0aFN0ZW5jaWxTdXBwb3J0ZWQgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS0+aXNFbmFibGVkKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKTsKKyAgICAgICAg
bV9pc0dMRVMyTlBPVFN0cmljdCA9ICFtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5pc0VuYWJs
ZWQoIkdMX0FSQl90ZXh0dXJlX25vbl9wb3dlcl9vZl90d28iKTsKKyAgICAgICAgbV9pc0RlcHRo
U3RlbmNpbFN1cHBvcnRlZCA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmlzRW5hYmxlZCgi
R0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CiAgICAgfQotICAgIG1faXNSb2J1c3RuZXNz
RVhUU3VwcG9ydGVkID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmlzRW5hYmxlZCgiR0xf
RVhUX3JvYnVzdG5lc3MiKTsKKyAgICBtX2lzUm9idXN0bmVzc0VYVFN1cHBvcnRlZCA9IG1fY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmlzRW5hYmxlZCgiR0xfRVhUX3JvYnVzdG5lc3MiKTsKIH0K
IAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjphZGRDb21wcmVzc2VkVGV4dHVyZUZv
cm1hdChHQzNEZW51bSBmb3JtYXQpCkBAIC04OTQsNyArODk0LDcgQEAgYm9vbCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpjaGVja09iamVjdFRvQmVCb3VuZChjb25zdCBjaGFyKiBmdW5jdGlv
bk5hbWUsIFcKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgaWYgKG9iamVjdCkgewotICAgICAgICBpZiAoIW9iamVjdC0+dmFsaWRh
dGUoY29udGV4dEdyb3VwKCksIHRoaXMpKSB7CisgICAgICAgIGlmICghb2JqZWN0LT52YWxpZGF0
ZShjb250ZXh0R3JvdXAoKSwgKnRoaXMpKSB7CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgIm9i
amVjdCBub3QgZnJvbSB0aGlzIGNvbnRleHQiKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgfQpAQCAtMTQwMCw3ICsxNDAwLDcgQEAgUmVmUHRyPFdlYkdMQnVmZmVyPiBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGVCdWZmZXIoKQogewogICAgIGlmIChpc0NvbnRl
eHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGF1dG8gYnVm
ZmVyID0gV2ViR0xCdWZmZXI6OmNyZWF0ZSh0aGlzKTsKKyAgICBhdXRvIGJ1ZmZlciA9IFdlYkdM
QnVmZmVyOjpjcmVhdGUoKnRoaXMpOwogICAgIGFkZFNoYXJlZE9iamVjdChidWZmZXIucHRyKCkp
OwogICAgIHJldHVybiBXVEZNb3ZlKGJ1ZmZlcik7CiB9CkBAIC0xNDA5LDcgKzE0MDksNyBAQCBS
ZWZQdHI8V2ViR0xGcmFtZWJ1ZmZlcj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRl
RnJhbWVidWZmZXIoKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIGF1dG8gYnVmZmVyID0gV2ViR0xGcmFtZWJ1ZmZlcjo6
Y3JlYXRlKHRoaXMpOworICAgIGF1dG8gYnVmZmVyID0gV2ViR0xGcmFtZWJ1ZmZlcjo6Y3JlYXRl
KCp0aGlzKTsKICAgICBhZGRDb250ZXh0T2JqZWN0KGJ1ZmZlci5wdHIoKSk7CiAgICAgcmV0dXJu
IFdURk1vdmUoYnVmZmVyKTsKIH0KQEAgLTE0MTgsNyArMTQxOCw3IEBAIFJlZlB0cjxXZWJHTFRl
eHR1cmU+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZVRleHR1cmUoKQogewogICAg
IGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIGF1dG8gdGV4dHVyZSA9IFdlYkdMVGV4dHVyZTo6Y3JlYXRlKHRoaXMpOworICAgIGF1dG8g
dGV4dHVyZSA9IFdlYkdMVGV4dHVyZTo6Y3JlYXRlKCp0aGlzKTsKICAgICBhZGRTaGFyZWRPYmpl
Y3QodGV4dHVyZS5wdHIoKSk7CiAgICAgcmV0dXJuIFdURk1vdmUodGV4dHVyZSk7CiB9CkBAIC0x
NDI3LDcgKzE0MjcsNyBAQCBSZWZQdHI8V2ViR0xQcm9ncmFtPiBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpjcmVhdGVQcm9ncmFtKCkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGlu
ZygpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvIHByb2dyYW0gPSBXZWJHTFBy
b2dyYW06OmNyZWF0ZSh0aGlzKTsKKyAgICBhdXRvIHByb2dyYW0gPSBXZWJHTFByb2dyYW06OmNy
ZWF0ZSgqdGhpcyk7CiAgICAgYWRkU2hhcmVkT2JqZWN0KHByb2dyYW0ucHRyKCkpOwogICAgIHJl
dHVybiBXVEZNb3ZlKHByb2dyYW0pOwogfQpAQCAtMTQzNiw3ICsxNDM2LDcgQEAgUmVmUHRyPFdl
YkdMUmVuZGVyYnVmZmVyPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGVSZW5kZXJi
dWZmZXIoKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIGF1dG8gYnVmZmVyID0gV2ViR0xSZW5kZXJidWZmZXI6OmNyZWF0
ZSh0aGlzKTsKKyAgICBhdXRvIGJ1ZmZlciA9IFdlYkdMUmVuZGVyYnVmZmVyOjpjcmVhdGUoKnRo
aXMpOwogICAgIGFkZFNoYXJlZE9iamVjdChidWZmZXIucHRyKCkpOwogICAgIHJldHVybiBXVEZN
b3ZlKGJ1ZmZlcik7CiB9CkBAIC0xNDUwLDcgKzE0NTAsNyBAQCBSZWZQdHI8V2ViR0xTaGFkZXI+
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZVNoYWRlcihHQzNEZW51bSB0eXBlKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBhdXRvIHNoYWRlciA9IFdlYkdM
U2hhZGVyOjpjcmVhdGUodGhpcywgdHlwZSk7CisgICAgYXV0byBzaGFkZXIgPSBXZWJHTFNoYWRl
cjo6Y3JlYXRlKCp0aGlzLCB0eXBlKTsKICAgICBhZGRTaGFyZWRPYmplY3Qoc2hhZGVyLnB0cigp
KTsKICAgICByZXR1cm4gV1RGTW92ZShzaGFkZXIpOwogfQpAQCAtMTQ2Niw3ICsxNDY2LDcgQEAg
Ym9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkZWxldGVPYmplY3QoV2ViR0xPYmplY3Qq
IG9iamVjdCkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICFvYmplY3Qp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIW9iamVjdC0+dmFsaWRhdGUoY29udGV4
dEdyb3VwKCksIHRoaXMpKSB7CisgICAgaWYgKCFvYmplY3QtPnZhbGlkYXRlKGNvbnRleHRHcm91
cCgpLCAqdGhpcykpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
M0Q6OklOVkFMSURfT1BFUkFUSU9OLCAiZGVsZXRlIiwgIm9iamVjdCBkb2VzIG5vdCBiZWxvbmcg
dG8gdGhpcyBjb250ZXh0Iik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0xNzg4
LDcgKzE3ODgsNyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlV2Vi
R0xPYmplY3QoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBXZQogICAgICAgICBzeW50aGVzaXpl
R0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAi
bm8gb2JqZWN0IG9yIG9iamVjdCBkZWxldGVkIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9Ci0gICAgaWYgKCFvYmplY3QtPnZhbGlkYXRlKGNvbnRleHRHcm91cCgpLCB0aGlzKSkgewor
ICAgIGlmICghb2JqZWN0LT52YWxpZGF0ZShjb250ZXh0R3JvdXAoKSwgKnRoaXMpKSB7CiAgICAg
ICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElP
TiwgZnVuY3Rpb25OYW1lLCAib2JqZWN0IGRvZXMgbm90IGJlbG9uZyB0byB0aGlzIGNvbnRleHQi
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTIwMzYsNyArMjAzNiw3IEBAIHZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0Mz
RGVudW0gdGFyZ2V0LCBHQzNEZW51CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNz
Q29udGV4dDNEOjpJTlZBTElEX0VOVU0sICJmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciIsICJpbnZh
bGlkIHRhcmdldCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmIChidWZmZXIgJiYg
IWJ1ZmZlci0+dmFsaWRhdGUoY29udGV4dEdyb3VwKCksIHRoaXMpKSB7CisgICAgaWYgKGJ1ZmZl
ciAmJiAhYnVmZmVyLT52YWxpZGF0ZShjb250ZXh0R3JvdXAoKSwgKnRoaXMpKSB7CiAgICAgICAg
IHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTiwg
ImZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyIiwgIm5vIGJ1ZmZlciBvciBidWZmZXIgbm90IGZyb20g
dGhpcyBjb250ZXh0Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMDY4LDcgKzIwNjgs
NyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmZyYW1lYnVmZmVyVGV4dHVyZTJE
KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gYQogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgImZyYW1lYnVmZmVyVGV4dHVyZTJEIiwg
ImxldmVsIG5vdCAwIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKHRleHR1cmUg
JiYgIXRleHR1cmUtPnZhbGlkYXRlKGNvbnRleHRHcm91cCgpLCB0aGlzKSkgeworICAgIGlmICh0
ZXh0dXJlICYmICF0ZXh0dXJlLT52YWxpZGF0ZShjb250ZXh0R3JvdXAoKSwgKnRoaXMpKSB7CiAg
ICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJB
VElPTiwgImZyYW1lYnVmZmVyVGV4dHVyZTJEIiwgIm5vIHRleHR1cmUgb3IgdGV4dHVyZSBub3Qg
ZnJvbSB0aGlzIGNvbnRleHQiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI1NDcsNyAr
MjU0Nyw3IEBAIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlm
b3JtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgY29uc3QKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dDNEOjpGTE9BVDogewogICAgICAgICBHQzNEZmxvYXQgdmFsdWVbMTZdID0gezB9OwogICAgICAg
ICBpZiAobV9pc1JvYnVzdG5lc3NFWFRTdXBwb3J0ZWQpCi0gICAgICAgICAgICBtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS0+Z2V0blVuaWZvcm1mdkVYVChvYmplY3RPclplcm8ocHJvZ3JhbSks
IGxvY2F0aW9uLCAxNiAqIHNpemVvZihHQzNEZmxvYXQpLCB2YWx1ZSk7CisgICAgICAgICAgICBt
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRuVW5pZm9ybWZ2RVhUKG9iamVjdE9yWmVybyhw
cm9ncmFtKSwgbG9jYXRpb24sIDE2ICogc2l6ZW9mKEdDM0RmbG9hdCksIHZhbHVlKTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRVbmlmb3JtZnYob2JqZWN0T3JaZXJv
KHByb2dyYW0pLCBsb2NhdGlvbiwgdmFsdWUpOwogICAgICAgICBpZiAobGVuZ3RoID09IDEpCkBA
IC0yNTU3LDcgKzI1NTcsNyBAQCBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6Z2V0VW5pZm9ybShXZWJHTFByb2dyYW0qIHByb2dyYW0sIGNvbnN0CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6SU5UOiB7CiAgICAgICAgIEdDM0RpbnQgdmFsdWVbNF0gPSB7MH07CiAg
ICAgICAgIGlmIChtX2lzUm9idXN0bmVzc0VYVFN1cHBvcnRlZCkKLSAgICAgICAgICAgIG1fY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5nZXRuVW5pZm9ybWl2RVhUKG9iamVjdE9yWmVybyhwcm9n
cmFtKSwgbG9jYXRpb24sIDQgKiBzaXplb2YoR0MzRGludCksIHZhbHVlKTsKKyAgICAgICAgICAg
IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldG5Vbmlmb3JtaXZFWFQob2JqZWN0T3JaZXJv
KHByb2dyYW0pLCBsb2NhdGlvbiwgNCAqIHNpemVvZihHQzNEaW50KSwgdmFsdWUpOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZvcm1pdihvYmplY3RPclplcm8o
cHJvZ3JhbSksIGxvY2F0aW9uLCB2YWx1ZSk7CiAgICAgICAgIGlmIChsZW5ndGggPT0gMSkKQEAg
LTI1NjcsNyArMjU2Nyw3IEBAIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXRVbmlmb3JtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgY29uc3QKICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpCT09MOiB7CiAgICAgICAgIEdDM0RpbnQgdmFsdWVbNF0gPSB7MH07CiAg
ICAgICAgIGlmIChtX2lzUm9idXN0bmVzc0VYVFN1cHBvcnRlZCkKLSAgICAgICAgICAgIG1fY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5nZXRuVW5pZm9ybWl2RVhUKG9iamVjdE9yWmVybyhwcm9n
cmFtKSwgbG9jYXRpb24sIDQgKiBzaXplb2YoR0MzRGludCksIHZhbHVlKTsKKyAgICAgICAgICAg
IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldG5Vbmlmb3JtaXZFWFQob2JqZWN0T3JaZXJv
KHByb2dyYW0pLCBsb2NhdGlvbiwgNCAqIHNpemVvZihHQzNEaW50KSwgdmFsdWUpOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZvcm1pdihvYmplY3RPclplcm8o
cHJvZ3JhbSksIGxvY2F0aW9uLCB2YWx1ZSk7CiAgICAgICAgIGlmIChsZW5ndGggPiAxKSB7CkBA
IC0zMTUwLDcgKzMxNTAsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnJlYWRQ
aXhlbHMoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aAogICAgIHZvaWQqIGRh
dGEgPSBwaXhlbHMuYmFzZUFkZHJlc3MoKTsKIAogICAgIGlmIChtX2lzUm9idXN0bmVzc0VYVFN1
cHBvcnRlZCkKLSAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnJlYWRuUGl4ZWxz
RVhUKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLmJ5dGVMZW5ndGgo
KSwgZGF0YSk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnJlYWRuUGl4ZWxz
RVhUKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLmJ5dGVMZW5ndGgo
KSwgZGF0YSk7CiAgICAgZWxzZQogICAgICAgICBtX2NvbnRleHQtPnJlYWRQaXhlbHMoeCwgeSwg
d2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhKTsKIH0KQEAgLTQ2NjAsNyArNDY2MCw3
IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bG9zZUNvbnRleHRJbXBsKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6Okxvc3RDCiAgICAgICAgIC8vIEluZm9ybSB0aGUgZW1iZWRk
ZXIgdGhhdCBhIGxvc3QgY29udGV4dCB3YXMgcmVjZWl2ZWQuIEluIHJlc3BvbnNlLCB0aGUgZW1i
ZWRkZXIgbWlnaHQKICAgICAgICAgLy8gZGVjaWRlIHRvIHRha2UgYWN0aW9uIHN1Y2ggYXMgYXNr
aW5nIHRoZSB1c2VyIGZvciBwZXJtaXNzaW9uIHRvIHVzZSBXZWJHTCBhZ2Fpbi4KICAgICAgICAg
aWYgKEZyYW1lKiBmcmFtZSA9IGNhbnZhcygpLmRvY3VtZW50KCkuZnJhbWUoKSkKLSAgICAgICAg
ICAgIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5kaWRMb3NlV2ViR0xDb250ZXh0KG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLT5nZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkpOworICAgICAg
ICAgICAgZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmRpZExvc2VXZWJHTENvbnRleHQobV9jb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpKTsKICAgICB9
CiAKICAgICBkZXRhY2hBbmRSZW1vdmVBbGxPYmplY3RzKCk7CkBAIC01NjQ4LDcgKzU2NDgsNyBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Om1heWJlUmVzdG9yZUNvbnRleHQoKQog
ICAgIGlmICghbV9yZXN0b3JlQWxsb3dlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW50IGNv
bnRleHRMb3N0UmVhc29uID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmdldEdyYXBoaWNz
UmVzZXRTdGF0dXNBUkIoKTsKKyAgICBpbnQgY29udGV4dExvc3RSZWFzb24gPSBtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS5nZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCk7CiAKICAgICBzd2l0
Y2ggKGNvbnRleHRMb3N0UmVhc29uKSB7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Tk9f
RVJST1I6CkBAIC01ODY3LDcgKzU4NjcsNyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnN1cHBvcnRzRHJhd0J1ZmZlcnMoKQogewogICAgIGlmICghbV9kcmF3QnVmZmVyc1dlYkdM
UmVxdWlyZW1lbnRzQ2hlY2tlZCkgewogICAgICAgICBtX2RyYXdCdWZmZXJzV2ViR0xSZXF1aXJl
bWVudHNDaGVja2VkID0gdHJ1ZTsKLSAgICAgICAgbV9kcmF3QnVmZmVyc1N1cHBvcnRlZCA9IFdl
YkdMRHJhd0J1ZmZlcnM6OnN1cHBvcnRlZCh0aGlzKTsKKyAgICAgICAgbV9kcmF3QnVmZmVyc1N1
cHBvcnRlZCA9IFdlYkdMRHJhd0J1ZmZlcnM6OnN1cHBvcnRlZCgqdGhpcyk7CiAgICAgfQogICAg
IHJldHVybiBtX2RyYXdCdWZmZXJzU3VwcG9ydGVkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTYW1wbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMU2FtcGxlci5jcHAKaW5kZXggNzY5ZmQ0ZTI0YmIxZmQ4ZGQ3NTI1MjgzMWUy
MGQ5MzhhOTY4ZWQwMi4uMGNhNzk1YjhiZjAyN2Q2MmJmZWVlYTVjZTU0NjRjMzYwZGQ0NDE4MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTYW1wbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNhbXBsZXIuY3BwCkBAIC0zMyw3
ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKLVJlZjxXZWJHTFNhbXBsZXI+
IFdlYkdMU2FtcGxlcjo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGN0eCkKK1Jl
ZjxXZWJHTFNhbXBsZXI+IFdlYkdMU2FtcGxlcjo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UmIGN0eCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHTFNhbXBsZXIoY3R4
KSk7CiB9CkBAIC00Myw3ICs0Myw3IEBAIFdlYkdMU2FtcGxlcjo6fldlYkdMU2FtcGxlcigpCiAg
ICAgZGVsZXRlT2JqZWN0KDApOwogfQogCi1XZWJHTFNhbXBsZXI6OldlYkdMU2FtcGxlcihXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjdHgpCitXZWJHTFNhbXBsZXI6OldlYkdMU2FtcGxlcihX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjdHgpCiAgICAgOiBXZWJHTFNoYXJlZE9iamVjdChj
dHgpCiB7CiAgICAgLy8gRklYTUU6IENhbGwgY3JlYXRlU2FtcGxlciBmcm9tIEdyYXBoaWNzQ29u
dGV4dDNELgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTYW1w
bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNhbXBsZXIuaAppbmRleCAw
YjRhMWVmOTliNmU5Yjg0MWQ1NzI1MWQxOTM3NGFmYTA5OWQxNWNhLi5iZDljMGVhZGQwM2E3NTI5
MDNjZGNlZGQzZTk2ZWNmYWIyMTgxMmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFNhbXBsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFNhbXBsZXIuaApAQCAtMzMsMTAgKzMzLDEwIEBAIGNsYXNzIFdlYkdMU2FtcGxlciBmaW5h
bCA6IHB1YmxpYyBXZWJHTFNoYXJlZE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2Vi
R0xTYW1wbGVyKCk7CiAKLSAgICBzdGF0aWMgUmVmPFdlYkdMU2FtcGxlcj4gY3JlYXRlKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdMU2FtcGxlcj4gY3Jl
YXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKIAogcHJvdGVjdGVkOgotICAgIFdlYkdM
U2FtcGxlcihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAgV2ViR0xTYW1wbGVyKFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKIAogICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChH
cmFwaGljc0NvbnRleHQzRCosIFBsYXRmb3JtM0RPYmplY3QpIG92ZXJyaWRlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRlci5jcHAKaW5kZXggMTZmZjZkNWM4NThhNzYx
NTc4MjFmOWI5NGNhYzFkZTc0MjZmZTJjOS4uN2ZhZWQyNDA4MDM0ZjhiZjgwZGM3ODFlMDJlNmU5
ZTRjMTc0NmM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xT
aGFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmNw
cApAQCAtMzQsMTggKzM0LDE4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFdlYkdM
U2hhZGVyPiBXZWJHTFNoYWRlcjo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGN0
eCwgR0MzRGVudW0gdHlwZSkKK1JlZjxXZWJHTFNoYWRlcj4gV2ViR0xTaGFkZXI6OmNyZWF0ZShX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjdHgsIEdDM0RlbnVtIHR5cGUpCiB7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgV2ViR0xTaGFkZXIoY3R4LCB0eXBlKSk7CiB9CiAKLVdlYkdMU2hh
ZGVyOjpXZWJHTFNoYWRlcihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjdHgsIEdDM0RlbnVt
IHR5cGUpCitXZWJHTFNoYWRlcjo6V2ViR0xTaGFkZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSYgY3R4LCBHQzNEZW51bSB0eXBlKQogICAgIDogV2ViR0xTaGFyZWRPYmplY3QoY3R4KQogICAg
ICwgbV90eXBlKHR5cGUpCiAgICAgLCBtX3NvdXJjZShlbXB0eVN0cmluZygpKQogICAgICwgbV9p
c1ZhbGlkKGZhbHNlKQogewotICAgIHNldE9iamVjdChjdHgtPmdyYXBoaWNzQ29udGV4dDNEKCkt
PmNyZWF0ZVNoYWRlcih0eXBlKSk7CisgICAgc2V0T2JqZWN0KGN0eC5ncmFwaGljc0NvbnRleHQz
RCgpLT5jcmVhdGVTaGFkZXIodHlwZSkpOwogfQogCiBXZWJHTFNoYWRlcjo6fldlYkdMU2hhZGVy
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRlci5oCmluZGV4IDYzOWNlZmE3
MGE2OGI1NzM4ZDhmZjIxZDhiNjVjYmJhODFkODBjMWEuLjZhZjVjMjY5ZDUwYWFlNGQ4NTViN2Qw
NzBlYTMxODhlZTU0M2I5MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMU2hhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFk
ZXIuaApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBXZWJHTFNoYWRlciBmaW5hbCA6IHB1YmxpYyBX
ZWJHTFNoYXJlZE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViR0xTaGFkZXIoKTsK
IAotICAgIHN0YXRpYyBSZWY8V2ViR0xTaGFkZXI+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlKiwgR0MzRGVudW0pOworICAgIHN0YXRpYyBSZWY8V2ViR0xTaGFkZXI+IGNyZWF0ZShX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiwgR0MzRGVudW0pOwogCiAgICAgR0MzRGVudW0gZ2V0
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIGNvbnN0IFN0cmluZyYgZ2V0U291
cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2U7IH0KQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0VmFsaWQoYm9vbCB2YWxpZCkgeyBtX2lzVmFsaWQgPSB2YWxpZDsgfQog
CiBwcml2YXRlOgotICAgIFdlYkdMU2hhZGVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqLCBH
QzNEZW51bSk7CisgICAgV2ViR0xTaGFkZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYsIEdD
M0RlbnVtKTsKIAogICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChHcmFwaGljc0NvbnRleHQzRCos
IFBsYXRmb3JtM0RPYmplY3QpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFNoYXJlZE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFNoYXJlZE9iamVjdC5jcHAKaW5kZXggMzRmN2NlZWE1MmY2ODVjMGUxYzY2
Zjg1OTJiYzExNzUxNjVmOWRkYy4uMzZkYzE1ZDNhMGU3ZTVmNmE5NzA2MWU0YzNiZDNjMjQxYzFi
ODRlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFyZWRP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhcmVkT2Jq
ZWN0LmNwcApAQCAtMzQsOSArMzQsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdlYkdM
U2hhcmVkT2JqZWN0OjpXZWJHTFNoYXJlZE9iamVjdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
KiBjb250ZXh0KQotICAgIDogV2ViR0xPYmplY3QoY29udGV4dCksCi0gICAgICBtX2NvbnRleHRH
cm91cChjb250ZXh0LT5jb250ZXh0R3JvdXAoKSkKK1dlYkdMU2hhcmVkT2JqZWN0OjpXZWJHTFNo
YXJlZE9iamVjdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorICAgIDogV2Vi
R0xPYmplY3QoY29udGV4dCkKKyAgICAsIG1fY29udGV4dEdyb3VwKGNvbnRleHQuY29udGV4dEdy
b3VwKCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMU2hhcmVkT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYXJl
ZE9iamVjdC5oCmluZGV4IDk0NjdmZmEzMzJkNzBlZjhmZWI4Mjk3MWI4MDlkNDI0NzMzNTdlNTgu
LmFiZTQ4MDMzMzcyYzk1NmNjNzEzMGViN2Y3YmZmZmRjZDFhOWY1N2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhcmVkT2JqZWN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFyZWRPYmplY3QuaApAQCAtNTIsNyArNTIsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzVHJhbnNmb3JtRmVlZGJhY2soKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1ZlcnRleEFycmF5T2JqZWN0KCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIGJvb2wgdmFsaWRhdGUoY29uc3QgV2ViR0xD
b250ZXh0R3JvdXAqIGNvbnRleHRHcm91cCwgY29uc3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSopIGNvbnN0IG92ZXJyaWRlCisgICAgYm9vbCB2YWxpZGF0ZShjb25zdCBXZWJHTENvbnRleHRH
cm91cCogY29udGV4dEdyb3VwLCBjb25zdCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJikgY29u
c3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJldHVybiBjb250ZXh0R3JvdXAgPT0gbV9jb250
ZXh0R3JvdXA7CiAgICAgfQpAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZXRh
Y2hDb250ZXh0R3JvdXAoKTsKIAogcHJvdGVjdGVkOgotICAgIFdlYkdMU2hhcmVkT2JqZWN0KFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBXZWJHTFNoYXJlZE9iamVjdChXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlJik7CiAKICAgICBib29sIGhhc0dyb3VwT3JDb250ZXh0KCkgY29u
c3Qgb3ZlcnJpZGUKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFN5bmMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNw
cAppbmRleCAyYmQyY2U4MmE4NzE1MDRiNjkzOWY1NjhhZjRjOTVjZGEwMjI3NmFjLi42MzYwZmJh
NGVlMzBjMzdiMmE4NmRlZWMyYmRjMzJhOTgwZDg3MTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFN5bmMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMU3luYy5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIAotUmVmPFdlYkdMU3luYz4gV2ViR0xTeW5jOjpjcmVhdGUoV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSogY3R4KQorUmVmPFdlYkdMU3luYz4gV2ViR0xTeW5jOjpjcmVhdGUoV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY3R4KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFdlYkdMU3luYyhjdHgpKTsKIH0KQEAgLTQzLDcgKzQzLDcgQEAgV2ViR0xTeW5jOjp+V2ViR0xT
eW5jKCkKICAgICBkZWxldGVPYmplY3QoMCk7CiB9CiAKLVdlYkdMU3luYzo6V2ViR0xTeW5jKFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGN0eCkKK1dlYkdMU3luYzo6V2ViR0xTeW5jKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UmIGN0eCkKICAgICA6IFdlYkdMU2hhcmVkT2JqZWN0KGN0eCkK
IHsKICAgICAvLyBGSVhNRTogQ2FsbCBmZW5jZVN5bmMgZnJvbSBHcmFwaGljc0NvbnRleHQzRC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTeW5jLmgKaW5kZXggN2FkMzk5OWZiMDEwNDI5
Y2JlMzYzMzBmZWVmMGU3ODBjNGM1MmI4YS4uZWY2ZWM5ZGNkNTk2NGZiNDZkMjM3YTAwNjNkNGM1
NmIxMmNkYTc0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xT
eW5jLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTeW5jLmgKQEAgLTMz
LDEwICszMywxMCBAQCBjbGFzcyBXZWJHTFN5bmMgZmluYWwgOiBwdWJsaWMgV2ViR0xTaGFyZWRP
YmplY3QgewogcHVibGljOgogICAgIHZpcnR1YWwgfldlYkdMU3luYygpOwogCi0gICAgc3RhdGlj
IFJlZjxXZWJHTFN5bmM+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAg
c3RhdGljIFJlZjxXZWJHTFN5bmM+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7
CiAKIHByb3RlY3RlZDoKLSAgICBXZWJHTFN5bmMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSop
OworICAgIFdlYkdMU3luYyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAKICAgICB2b2lk
IGRlbGV0ZU9iamVjdEltcGwoR3JhcGhpY3NDb250ZXh0M0QqLCBQbGF0Zm9ybTNET2JqZWN0KSBv
dmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xU
ZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5jcHAK
aW5kZXggYmRmY2VhYTg1MjUyMmU3OTRlZjZlZmI1YjIzZmRkMTY1ZTRkMTQ4OC4uYzRkNTcyMTQw
ZGI5OWI2OTc2MGIyM2RjMGU4NTkxZmE0OThiODRjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFRleHR1cmUuY3BwCkBAIC0zNSwxMiArMzUsMTIgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1SZWY8V2ViR0xUZXh0dXJlPiBXZWJHTFRleHR1cmU6OmNyZWF0ZShXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjdHgpCitSZWY8V2ViR0xUZXh0dXJlPiBXZWJHTFRleHR1
cmU6OmNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjdHgpCiB7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2ViR0xUZXh0dXJlKGN0eCkpOwogfQogCi1XZWJHTFRleHR1cmU6Oldl
YkdMVGV4dHVyZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjdHgpCitXZWJHTFRleHR1cmU6
OldlYkdMVGV4dHVyZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjdHgpCiAgICAgOiBXZWJH
TFNoYXJlZE9iamVjdChjdHgpCiAgICAgLCBtX3RhcmdldCgwKQogICAgICwgbV9taW5GaWx0ZXIo
R3JhcGhpY3NDb250ZXh0M0Q6Ok5FQVJFU1RfTUlQTUFQX0xJTkVBUikKQEAgLTU0LDcgKzU0LDcg
QEAgV2ViR0xUZXh0dXJlOjpXZWJHTFRleHR1cmUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSog
Y3R4KQogICAgICwgbV9pc0Zsb2F0VHlwZShmYWxzZSkKICAgICAsIG1faXNIYWxmRmxvYXRUeXBl
KGZhbHNlKQogewotICAgIHNldE9iamVjdChjdHgtPmdyYXBoaWNzQ29udGV4dDNEKCktPmNyZWF0
ZVRleHR1cmUoKSk7CisgICAgc2V0T2JqZWN0KGN0eC5ncmFwaGljc0NvbnRleHQzRCgpLT5jcmVh
dGVUZXh0dXJlKCkpOwogfQogCiBXZWJHTFRleHR1cmU6On5XZWJHTFRleHR1cmUoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRleHR1cmUuaAppbmRleCA2Y2EzODg5NzY2YzBjMDNl
NmU1NDUxMDBhNjg1NzVmYmU5ZTcxOTE2Li5kZDk4NjRjMTNmMDQzYWIwMGZiNGVkZGRhODRjNDYz
ODE5OWJiMjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRl
eHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRleHR1cmUuaApA
QCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5XZWJHTFRleHR1cmUoKTsK
IAotICAgIHN0YXRpYyBSZWY8V2ViR0xUZXh0dXJlPiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSopOworICAgIHN0YXRpYyBSZWY8V2ViR0xUZXh0dXJlPiBjcmVhdGUoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSYpOwogCiAgICAgdm9pZCBzZXRUYXJnZXQoR0MzRGVudW0gdGFyZ2V0
LCBHQzNEaW50IG1heExldmVsKTsKICAgICB2b2lkIHNldFBhcmFtZXRlcmkoR0MzRGVudW0gcG5h
bWUsIEdDM0RpbnQgcGFyYW0pOwpAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IEdDM0RpbnQgY29tcHV0ZUxldmVsQ291bnQoR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVp
Z2h0KTsKIAogcHJpdmF0ZToKLSAgICBXZWJHTFRleHR1cmUoV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSopOworICAgIFdlYkdMVGV4dHVyZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAK
ICAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoR3JhcGhpY3NDb250ZXh0M0QqLCBQbGF0Zm9ybTNE
T2JqZWN0KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmNwcAppbmRleCBmMzY1ZDUyM2ZhOGFhNGY0NzEzNzQx
Zjg0ZTlkNTQ5ZjA2ZWQ1MTU3Li4zNTNlNGJhYzFhMjkxYWU4MDc1ODE1Y2NkNzRkMjlmZGU5YTkz
NmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRyYW5zZm9y
bUZlZWRiYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRyYW5z
Zm9ybUZlZWRiYWNrLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgCi1SZWY8V2ViR0xUcmFuc2Zvcm1GZWVkYmFjaz4gV2ViR0xUcmFuc2Zvcm1GZWVkYmFj
azo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGN0eCkKK1JlZjxXZWJHTFRyYW5z
Zm9ybUZlZWRiYWNrPiBXZWJHTFRyYW5zZm9ybUZlZWRiYWNrOjpjcmVhdGUoV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSYgY3R4KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdMVHJh
bnNmb3JtRmVlZGJhY2soY3R4KSk7CiB9CkBAIC00Myw3ICs0Myw3IEBAIFdlYkdMVHJhbnNmb3Jt
RmVlZGJhY2s6On5XZWJHTFRyYW5zZm9ybUZlZWRiYWNrKCkKICAgICBkZWxldGVPYmplY3QoMCk7
CiB9CiAKLVdlYkdMVHJhbnNmb3JtRmVlZGJhY2s6OldlYkdMVHJhbnNmb3JtRmVlZGJhY2soV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY3R4KQorV2ViR0xUcmFuc2Zvcm1GZWVkYmFjazo6V2Vi
R0xUcmFuc2Zvcm1GZWVkYmFjayhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjdHgpCiAgICAg
OiBXZWJHTFNoYXJlZE9iamVjdChjdHgpCiB7CiAgICAgLy8gRklYTUU6IENhbGwgY3JlYXRlVHJh
bnNmb3JtRmVlZGJhY2sgZnJvbSBHcmFwaGljc0NvbnRleHQzRC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVHJhbnNmb3JtRmVlZGJhY2suaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVHJhbnNmb3JtRmVlZGJhY2suaAppbmRleCAyNmQ0MDQ0
ZThkMzc3MjllMjE1Zjc1MWQ4ZmE0MmQzZDJkODBmNDVlLi42OWNmOGU3YmI1NDE4ZWFhOWU0NTY5
MjExNDA4ZjQ3NmIyNmE2Nzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5oCkBAIC0zMywxMCArMzMsMTAgQEAgY2xhc3MgV2Vi
R0xUcmFuc2Zvcm1GZWVkYmFjayBmaW5hbCA6IHB1YmxpYyBXZWJHTFNoYXJlZE9iamVjdCB7CiBw
dWJsaWM6CiAgICAgdmlydHVhbCB+V2ViR0xUcmFuc2Zvcm1GZWVkYmFjaygpOwogCi0gICAgc3Rh
dGljIFJlZjxXZWJHTFRyYW5zZm9ybUZlZWRiYWNrPiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSopOworICAgIHN0YXRpYyBSZWY8V2ViR0xUcmFuc2Zvcm1GZWVkYmFjaz4gY3JlYXRl
KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKIAogcHJvdGVjdGVkOgotICAgIFdlYkdMVHJh
bnNmb3JtRmVlZGJhY2soV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOworICAgIFdlYkdMVHJh
bnNmb3JtRmVlZGJhY2soV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogCiAgICAgdm9pZCBk
ZWxldGVPYmplY3RJbXBsKEdyYXBoaWNzQ29udGV4dDNEKiwgUGxhdGZvcm0zRE9iamVjdCkgb3Zl
cnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVy
dGV4QXJyYXlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0
ZXhBcnJheU9iamVjdC5jcHAKaW5kZXggNmU4MTVlZjIzNWRlNTJiMGRiMDA0ZjY1ODYwMjQzYzAx
MDk0YzU2OS4uN2ZhNjljOWE0OTRkYmVlYTlkYmViZjg5ZTg1ZjQzZjljZmQwMjg0OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVj
dC5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAotUmVm
PFdlYkdMVmVydGV4QXJyYXlPYmplY3Q+IFdlYkdMVmVydGV4QXJyYXlPYmplY3Q6OmNyZWF0ZShX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjdHgsIFZBT1R5cGUgdHlwZSkKK1JlZjxXZWJHTFZl
cnRleEFycmF5T2JqZWN0PiBXZWJHTFZlcnRleEFycmF5T2JqZWN0OjpjcmVhdGUoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSYgY3R4LCBWQU9UeXBlIHR5cGUpCiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdChjdHgsIHR5cGUpKTsKIH0KQEAgLTQzLDcg
KzQzLDcgQEAgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdDo6fldlYkdMVmVydGV4QXJyYXlPYmplY3Qo
KQogICAgIGRlbGV0ZU9iamVjdCgwKTsKIH0KIAotV2ViR0xWZXJ0ZXhBcnJheU9iamVjdDo6V2Vi
R0xWZXJ0ZXhBcnJheU9iamVjdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjdHgsIFZBT1R5
cGUgdHlwZSkKK1dlYkdMVmVydGV4QXJyYXlPYmplY3Q6OldlYkdMVmVydGV4QXJyYXlPYmplY3Qo
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY3R4LCBWQU9UeXBlIHR5cGUpCiAgICAgOiBXZWJH
TFZlcnRleEFycmF5T2JqZWN0QmFzZShjdHgsIHR5cGUpCiB7CiAgICAgc3dpdGNoIChtX3R5cGUp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJy
YXlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlP
YmplY3QuaAppbmRleCBhZTRkODMyNmQ2YTkxMjM5NWZkN2Q5MTc0MzkyZjgxYzdmM2E0M2EzLi41
YjQ5YzcwOGE0NjI1NGRlNTkwZTFjMDZkY2M5ODYyYTY2NGMzMTQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5oCkBAIC0zNywx
MCArMzcsMTAgQEAgY2xhc3MgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDsKIAogY2xhc3MgV2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdCBmaW5hbCA6IHB1YmxpYyBXZWJHTFZlcnRleEFycmF5T2JqZWN0QmFz
ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJHTFZlcnRleEFycmF5T2JqZWN0PiBjcmVh
dGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSosIFZBT1R5cGUpOworICAgIHN0YXRpYyBSZWY8
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdD4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Um
LCBWQU9UeXBlKTsKICAgICB2aXJ0dWFsIH5XZWJHTFZlcnRleEFycmF5T2JqZWN0KCk7CiBwcml2
YXRlOgotICAgIFdlYkdMVmVydGV4QXJyYXlPYmplY3QoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSosIFZBT1R5cGUpOworICAgIFdlYkdMVmVydGV4QXJyYXlPYmplY3QoV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSYsIFZBT1R5cGUpOwogICAgIGJvb2wgaXNUcmFuc2Zvcm1GZWVkYmFjaygpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoR3JhcGhpY3ND
b250ZXh0M0QqLCBQbGF0Zm9ybTNET2JqZWN0KSBvdmVycmlkZTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZS5j
cHAKaW5kZXggZjM5YzBkZGQyMjc3OWQwNWYxNjBkMTk3OTU2MzE4YTYwMGViOTNjYy4uNjk2NDlj
NjJmNmUxZGJlZjJmOWVkYTYxN2M0MjQyNGRmNzNmMTc1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlLmNwcApA
QCAtMzIsMTMgKzMyLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV2ViR0xWZXJ0ZXhB
cnJheU9iamVjdEJhc2U6OldlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlKFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UqIGN0eCwgVkFPVHlwZSB0eXBlKQorV2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJh
c2U6OldlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Um
IGN0eCwgVkFPVHlwZSB0eXBlKQogICAgIDogV2ViR0xDb250ZXh0T2JqZWN0KGN0eCkKICAgICAs
IG1fdHlwZSh0eXBlKQogICAgICwgbV9oYXNFdmVyQmVlbkJvdW5kKGZhbHNlKQogICAgICwgbV9i
b3VuZEVsZW1lbnRBcnJheUJ1ZmZlcigwKQogewotICAgIG1fdmVydGV4QXR0cmliU3RhdGUucmVz
aXplKGN0eC0+Z2V0TWF4VmVydGV4QXR0cmlicygpKTsKKyAgICBtX3ZlcnRleEF0dHJpYlN0YXRl
LnJlc2l6ZShjdHguZ2V0TWF4VmVydGV4QXR0cmlicygpKTsKIH0KIAogdm9pZCBXZWJHTFZlcnRl
eEFycmF5T2JqZWN0QmFzZTo6c2V0RWxlbWVudEFycmF5QnVmZmVyKFBhc3NSZWZQdHI8V2ViR0xC
dWZmZXI+IGJ1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMVmVydGV4QXJyYXlPYmplY3RCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZS5oCmluZGV4IDYzZTFkZGI5MjJiNzA0MTI4OTlhZWQ3
YmZmNjJkZjM5ZWY0MjI2MzUuLjNmMDdkZGVlYWQxYmY5YzdiN2RmN2IwYzY4OGNjOGJlNzIwNzNj
MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJy
YXlPYmplY3RCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0
ZXhBcnJheU9iamVjdEJhc2UuaApAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRWZXJ0ZXhBdHRyaWJEaXZpc29yKEdDM0R1aW50IGluZGV4LCBHQzNEdWludCBkaXZpc29yKTsK
IAogcHJvdGVjdGVkOgotICAgIFdlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlKFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UqLCBWQU9UeXBlKTsKKyAgICBXZWJHTFZlcnRleEFycmF5T2JqZWN0QmFz
ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiwgVkFPVHlwZSk7CiAgICAgdmlydHVhbCB2b2lk
IGRlbGV0ZU9iamVjdEltcGwoR3JhcGhpY3NDb250ZXh0M0QqLCBQbGF0Zm9ybTNET2JqZWN0KSA9
IDA7CiAgICAgCiAgICAgVkFPVHlwZSBtX3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3BwCmluZGV4IGQxMzU5
NTI1MjU5NGYzMDJmYzFkNDIyYjhiOTdkNzdiMGZiMDIwNjUuLjVmM2I2NTU3YTcwYjVjYjg0MmMw
YzJlYTc3ODE3OGFmYTY0YzAxZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3BwCkBAIC0zNCwyMCArMzQsMjAg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9F
Uz4gV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UqIGN0eCwgVkFPVHlwZSB0eXBlKQorUmVmPFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM+
IFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OmNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJiBjdHgsIFZBT1R5cGUgdHlwZSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJH
TFZlcnRleEFycmF5T2JqZWN0T0VTKGN0eCwgdHlwZSkpOwogfQogCi1XZWJHTFZlcnRleEFycmF5
T2JqZWN0T0VTOjpXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTKFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UqIGN0eCwgVkFPVHlwZSB0eXBlKQorV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6V2Vi
R0xWZXJ0ZXhBcnJheU9iamVjdE9FUyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjdHgsIFZB
T1R5cGUgdHlwZSkKICAgICA6IFdlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlKGN0eCwgdHlwZSkK
IHsKLSAgICBFeHRlbnNpb25zM0QqIGV4dGVuc2lvbnMgPSBjb250ZXh0KCktPmdyYXBoaWNzQ29u
dGV4dDNEKCktPmdldEV4dGVuc2lvbnMoKTsKKyAgICBFeHRlbnNpb25zM0QmIGV4dGVuc2lvbnMg
PSBjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dDNEKCktPmdldEV4dGVuc2lvbnMoKTsKICAgICBz
d2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgVkFPVHlwZURlZmF1bHQ6CiAgICAgICAgIGJyZWFr
OwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHNldE9iamVjdChleHRlbnNpb25zLT5jcmVhdGVWZXJ0
ZXhBcnJheU9FUygpKTsKKyAgICAgICAgc2V0T2JqZWN0KGV4dGVuc2lvbnMuY3JlYXRlVmVydGV4
QXJyYXlPRVMoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KQEAgLTU5LDEyICs1OSwxMiBA
QCBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOjp+V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUygp
CiAKIHZvaWQgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6ZGVsZXRlT2JqZWN0SW1wbChHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dDNkLCBQbGF0Zm9ybTNET2JqZWN0IG9iamVjdCkKIHsKLSAg
ICBFeHRlbnNpb25zM0QqIGV4dGVuc2lvbnMgPSBjb250ZXh0M2QtPmdldEV4dGVuc2lvbnMoKTsK
KyAgICBFeHRlbnNpb25zM0QmIGV4dGVuc2lvbnMgPSBjb250ZXh0M2QtPmdldEV4dGVuc2lvbnMo
KTsKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgVkFPVHlwZURlZmF1bHQ6CiAgICAg
ICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIGV4dGVuc2lvbnMtPmRlbGV0ZVZlcnRl
eEFycmF5T0VTKG9iamVjdCk7CisgICAgICAgIGV4dGVuc2lvbnMuZGVsZXRlVmVydGV4QXJyYXlP
RVMob2JqZWN0KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmgKaW5kZXggOWFi
MTE1NWM0Yzc4N2Y3NjAyNDRhOWIzZDA2MWY0YzVlNTIxNDE4Ny4uZDA4ZDIyM2UzNTcwNjY5NGU5
MWNhZTZhY2RjOGM0YmNhOWYxNjdlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaApAQCAtMzMsMTAgKzMzLDEwIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUyBm
aW5hbCA6IHB1YmxpYyBXZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZSB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTPiBjcmVhdGUoV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSosIFZBT1R5cGUpOworICAgIHN0YXRpYyBSZWY8V2ViR0xWZXJ0ZXhBcnJh
eU9iamVjdE9FUz4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmLCBWQU9UeXBlKTsK
ICAgICB2aXJ0dWFsIH5XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTKCk7CiBwcml2YXRlOgotICAg
IFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSosIFZB
T1R5cGUpOworICAgIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMoV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSYsIFZBT1R5cGUpOwogICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChHcmFwaGljc0Nv
bnRleHQzRCosIFBsYXRmb3JtM0RPYmplY3QpIG92ZXJyaWRlOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKaW5kZXgg
NDEwNjYxNzkxNWQ4OWQ5NjNlYWQ1Y2EyMDY3YzJkMTZkZjBlZDAyNy4uZjhlYTg4YTVkZmFkMDRj
MzhjMzdhYjk4ZTBlNmRhZjUyMDAzZDFmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCkBAIC0xMTg1LDcgKzExODUsNyBA
QCBwdWJsaWM6CiAgICAgLy8gYWxsIG1ldGhvZHMgaXQgY29udGFpbnMgbWF5IG5lY2Vzc2FyaWx5
IGJlIHN1cHBvcnRlZCBvbiB0aGUKICAgICAvLyBjdXJyZW50IGhhcmR3YXJlLiBNdXN0IGNhbGwg
RXh0ZW5zaW9uczNEOjpzdXBwb3J0cygpIHRvCiAgICAgLy8gZGV0ZXJtaW5lIHRoaXMuCi0gICAg
RXh0ZW5zaW9uczNEKiBnZXRFeHRlbnNpb25zKCk7CisgICAgRXh0ZW5zaW9uczNEJiBnZXRFeHRl
bnNpb25zKCk7CiAKICAgICBJbnRTaXplIGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkgY29u
c3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9U
ZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJl
LmNwcAppbmRleCA3N2NmNjg3YzY4ZjFlYjQ2NTMyN2M0ZWE4OTYxMGY5Yjg2N2EyYzY4Li5hYWQx
M2YzNGQ2OWNmMmYxZGEyZGVhODMwNmZjNDVkODFhMDVjZTYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwCkBAIC02Niw3ICs2Niw3IEBA
IHN0YXRpYyB2b2lkIGNvbnZlcnRGb3JtYXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRl
eHR1cmU6OkZvcm1hdCBmb3JtYXQsIHVuCiAgICAgICAgICpnbFR5cGUgPSBHcmFwaGljc0NvbnRl
eHQzRDo6VU5TSUdORURfQllURTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUZXh0dXJlOjpC
R1JBODoKLSAgICAgICAgaWYgKGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdM
X0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIpKSB7CisgICAgICAgIGlmIChjb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIp
KSB7CiAgICAgICAgICAgICAqZ2xGb3JtYXQgPSBFeHRlbnNpb25zM0Q6OkJHUkFfRVhUOwogICAg
ICAgICAgICAgKmdsVHlwZSA9IEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFOwogICAg
ICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAKaW5kZXgg
M2QzMTAyZDNkNjYwYmJmMzE0Yzg1Mzg5YWVmNWE5OTY0Nzk3YjJmZC4uYWU4YmNhN2FlNTFjZTI4
NzE2MzZlMWVhMWJjYTQ2OWUxNmM2ZjBiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RP
cGVuR0wuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlbGVh
c2VTaGFkZXJDb21waWxlcigpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZWFkUGl4ZWxzQW5k
Q29udmVydFRvQkdSQUlmTmVjZXNzYXJ5KGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVp
Z2h0LCB1bnNpZ25lZCBjaGFyKiBwaXhlbHMpCiB7CiAgICAgLy8gTlZJRElBIGRyaXZlcnMgaGF2
ZSBhIGJ1ZyB3aGVyZSBjYWxsaW5nIHJlYWRQaXhlbHMgaW4gQkdSQSBjYW4gcmV0dXJuIHRoZSB3
cm9uZyB2YWx1ZXMgZm9yIHRoZSBhbHBoYSBjaGFubmVsIHdoZW4gdGhlIGFscGhhIGlzIG9mZiBm
b3IgdGhlIGNvbnRleHQuCi0gICAgaWYgKCFtX2F0dHJzLmFscGhhICYmIGdldEV4dGVuc2lvbnMo
KS0+aXNOVklESUEoKSkgeworICAgIGlmICghbV9hdHRycy5hbHBoYSAmJiBnZXRFeHRlbnNpb25z
KCkuaXNOVklESUEoKSkgewogICAgICAgICA6OmdsUmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVp
Z2h0LCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBwaXhlbHMpOwogI2lmIFVTRShBQ0NFTEVS
QVRFKQogICAgICAgICB2SW1hZ2VfQnVmZmVyIHNyYzsKQEAgLTEyMSw5ICsxMjEsOSBAQCBib29s
IEdyYXBoaWNzQ29udGV4dDNEOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogICAg
ICAgICAvLyBXZSBkb24ndCBhbGxvdyB0aGUgbG9naWMgd2hlcmUgc3RlbmNpbCBpcyByZXF1aXJl
ZCBhbmQgZGVwdGggaXMgbm90LgogICAgICAgICAvLyBTZWUgR3JhcGhpY3NDb250ZXh0M0Q6OnZh
bGlkYXRlQXR0cmlidXRlcy4KIAotICAgICAgICBFeHRlbnNpb25zM0QqIGV4dGVuc2lvbnMgPSBn
ZXRFeHRlbnNpb25zKCk7CisgICAgICAgIEV4dGVuc2lvbnMzRCYgZXh0ZW5zaW9ucyA9IGdldEV4
dGVuc2lvbnMoKTsKICAgICAgICAgLy8gVXNlIGEgMjQgYml0IGRlcHRoIGJ1ZmZlciB3aGVyZSB3
ZSBrbm93IHdlIGhhdmUgaXQuCi0gICAgICAgIGlmIChleHRlbnNpb25zLT5zdXBwb3J0cygiR0xf
RVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikpCisgICAgICAgIGlmIChleHRlbnNpb25zLnN1cHBv
cnRzKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKSkKICAgICAgICAgICAgIGludGVybmFs
RGVwdGhTdGVuY2lsRm9ybWF0ID0gR0xfREVQVEgyNF9TVEVOQ0lMOF9FWFQ7CiAgICAgICAgIGVs
c2UKICNpZiBQTEFURk9STShJT1MpCkBAIC0zMDQsMTIgKzMwNCwxMiBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpnZXRJbnRlZ2VydihHQzNEZW51bSBwbmFtZSwgR0MzRGludCogdmFsdWUpCiAj
ZW5kaWYKICAgICBjYXNlIE1BWF9URVhUVVJFX1NJWkU6CiAgICAgICAgIDo6Z2xHZXRJbnRlZ2Vy
dihNQVhfVEVYVFVSRV9TSVpFLCB2YWx1ZSk7Ci0gICAgICAgIGlmIChnZXRFeHRlbnNpb25zKCkt
PnJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpKQorICAgICAgICBpZiAoZ2V0
RXh0ZW5zaW9ucygpLnJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpKQogICAg
ICAgICAgICAgKnZhbHVlID0gc3RkOjptaW4oNDA5NiwgKnZhbHVlKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBNQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFOgogICAgICAgICA6OmdsR2V0SW50
ZWdlcnYoTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRSwgdmFsdWUpOwotICAgICAgICBpZiAoZ2V0
RXh0ZW5zaW9ucygpLT5yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSkKKyAg
ICAgICAgaWYgKGdldEV4dGVuc2lvbnMoKS5yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVy
ZVNpemUoKSkKICAgICAgICAgICAgICp2YWx1ZSA9IHN0ZDo6bWluKDEwMjQsICp2YWx1ZSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CkBAIC00MDcsMTEgKzQwNywxMSBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpjbGVhckRlcHRoKEdDM0RjbGFtcGYgZGVwdGgpCiAjZW5kaWYKIH0K
IAotRXh0ZW5zaW9uczNEKiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucygpCitFeHRl
bnNpb25zM0QmIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKCkKIHsKICAgICBpZiAo
IW1fZXh0ZW5zaW9ucykKICAgICAgICAgbV9leHRlbnNpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxF
eHRlbnNpb25zM0RPcGVuR0w+KHRoaXMsIGlzR0xFUzJDb21wbGlhbnQoKSk7Ci0gICAgcmV0dXJu
IG1fZXh0ZW5zaW9ucy5nZXQoKTsKKyAgICByZXR1cm4gKm1fZXh0ZW5zaW9uczsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6cmVhZFBpeGVscyhHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0Mz
RHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVt
IHR5cGUsIHZvaWQqIGRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdM
Q29tbW9uLmNwcAppbmRleCA1NWQ1YzY4ZGNlMmEzNmFhMDNhY2E4NzI5ZmVmNGVmN2Q0ODE3NmE0
Li4xODYzNzIxOTZjZWNmMzJiMzljZmJmYjcwNGQ3ZTliMDU0YjM5NGRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RP
cGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKQEAgLTEzOSwyMCArMTM5LDIw
IEBAIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVh
dGVGb3JDdXJyZW50R0xDb250ZXh0KCkKIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmFsaWRh
dGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQog
ewotICAgIEV4dGVuc2lvbnMzRCogZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMoKTsKKyAgICBF
eHRlbnNpb25zM0QmIGV4dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7CiAgICAgaWYgKG1fYXR0
cnMuc3RlbmNpbCkgewotICAgICAgICBpZiAoZXh0ZW5zaW9ucy0+c3VwcG9ydHMocGFja2VkRGVw
dGhTdGVuY2lsRXh0ZW5zaW9uKSkgewotICAgICAgICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5h
YmxlZChwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pOworICAgICAgICBpZiAoZXh0ZW5zaW9u
cy5zdXBwb3J0cyhwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pKSB7CisgICAgICAgICAgICBl
eHRlbnNpb25zLmVuc3VyZUVuYWJsZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKICAg
ICAgICAgICAgIC8vIEZvcmNlIGRlcHRoIGlmIHN0ZW5jaWwgaXMgdHJ1ZS4KICAgICAgICAgICAg
IG1fYXR0cnMuZGVwdGggPSB0cnVlOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG1fYXR0
cnMuc3RlbmNpbCA9IGZhbHNlOwogICAgIH0KICAgICBpZiAobV9hdHRycy5hbnRpYWxpYXMpIHsK
LSAgICAgICAgaWYgKCFleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfQU5HTEVfZnJhbWVidWZmZXJf
bXVsdGlzYW1wbGUiKSB8fCBpc0dMRVMyQ29tcGxpYW50KCkpCisgICAgICAgIGlmICghZXh0ZW5z
aW9ucy5zdXBwb3J0cygiR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiKSB8fCBpc0dM
RVMyQ29tcGxpYW50KCkpCiAgICAgICAgICAgICBtX2F0dHJzLmFudGlhbGlhcyA9IGZhbHNlOwog
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBleHRlbnNpb25zLT5lbnN1cmVFbmFibGVkKCJHTF9B
TkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpOworICAgICAgICAgICAgZXh0ZW5zaW9ucy5l
bnN1cmVFbmFibGVkKCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpOwogICAgIH0K
IH0KIApAQCAtMTg4OSwxNyArMTg4OSwxNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhJ
bWFnZTJERGlyZWN0KEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDM0RlbnVtIG1vZGUs
IEdDM0RpbnQgZmlyc3QsIEdDM0RzaXplaSBjb3VudCwgR0MzRHNpemVpIHByaW1jb3VudCkKIHsK
LSAgICBnZXRFeHRlbnNpb25zKCktPmRyYXdBcnJheXNJbnN0YW5jZWQobW9kZSwgZmlyc3QsIGNv
dW50LCBwcmltY291bnQpOworICAgIGdldEV4dGVuc2lvbnMoKS5kcmF3QXJyYXlzSW5zdGFuY2Vk
KG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDM0RlbnVtIG1vZGUsIEdDM0RzaXplaSBjb3Vu
dCwgR0MzRGVudW0gdHlwZSwgR0MzRGludHB0ciBvZmZzZXQsIEdDM0RzaXplaSBwcmltY291bnQp
CiB7Ci0gICAgZ2V0RXh0ZW5zaW9ucygpLT5kcmF3RWxlbWVudHNJbnN0YW5jZWQobW9kZSwgY291
bnQsIHR5cGUsIG9mZnNldCwgcHJpbWNvdW50KTsKKyAgICBnZXRFeHRlbnNpb25zKCkuZHJhd0Vs
ZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNvdW50LCB0eXBlLCBvZmZzZXQsIHByaW1jb3VudCk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYkRpdmlzb3IoR0MzRHVpbnQg
aW5kZXgsIEdDM0R1aW50IGRpdmlzb3IpCiB7Ci0gICAgZ2V0RXh0ZW5zaW9ucygpLT52ZXJ0ZXhB
dHRyaWJEaXZpc29yKGluZGV4LCBkaXZpc29yKTsKKyAgICBnZXRFeHRlbnNpb25zKCkudmVydGV4
QXR0cmliRGl2aXNvcihpbmRleCwgZGl2aXNvcik7CiB9CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294819</attachid>
            <date>2016-11-14 23:13:57 -0800</date>
            <delta_ts>2016-11-15 09:31:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164749-20161114231356.patch</filename>
            <type>text/plain</type>
            <size>132396</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4NzI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjczOTZiZWM3N2MyYmQw
ZTQ1NzQ0YzcxZTNmYjEzZTJhN2E0NjY5MC4uZjI4NDNkMTNlOTkyYWFlZDE5NTBkNGU0OTA3MDQx
ZWRjN2RiN2RmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwOCBAQAorMjAxNi0xMS0xNCAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJHTF0g
TWlncmF0ZSBjb25zdHJ1Y3Rpb24gZnVuY3Rpb25zIGZyb20gcG9pbnRlcnMgdG8gcmVmZXJlbmNl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0NzQ5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWVjaGFu
aWNhbCBmaW5kL3JlcGxhY2UuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhlcmUg
aXMgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogaHRtbC9jYW52YXMvQU5HTEVJbnN0
YW5jZWRBcnJheXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QU5HTEVJbnN0YW5jZWRBcnJheXM6
OkFOR0xFSW5zdGFuY2VkQXJyYXlzKToKKyAgICAgICAgKFdlYkNvcmU6OkFOR0xFSW5zdGFuY2Vk
QXJyYXlzOjpzdXBwb3J0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6QU5HTEVJbnN0YW5jZWRBcnJh
eXM6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpBTkdMRUlu
c3RhbmNlZEFycmF5czo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2Vi
Q29yZTo6QU5HTEVJbnN0YW5jZWRBcnJheXM6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuaDoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9FWFRCbGVuZE1pbk1heC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFWFRCbGVu
ZE1pbk1heDo6RVhUQmxlbmRNaW5NYXgpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0VYVEJsZW5k
TWluTWF4Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvRVhURnJhZ0RlcHRoLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVYVEZyYWdEZXB0aDo6RVhURnJhZ0RlcHRoKToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9FWFRGcmFnRGVwdGguaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRTaGFkZXJU
ZXh0dXJlTE9ELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVYVFNoYWRlclRleHR1cmVMT0Q6OkVY
VFNoYWRlclRleHR1cmVMT0QpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0VYVFNoYWRlclRleHR1
cmVMT0QuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRUZXh0dXJlRmlsdGVyQW5pc290cm9w
aWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljOjpF
WFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0VYVFRl
eHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL0VYVHNSR0Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RVhUc1JHQjo6RVhUc1JHQik6CisgICAgICAgICogaHRt
bC9jYW52YXMvRVhUc1JHQi5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU0VsZW1lbnRJbmRl
eFVpbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T0VTRWxlbWVudEluZGV4VWludDo6T0VTRWxl
bWVudEluZGV4VWludCk6CisgICAgICAgICogaHRtbC9jYW52YXMvT0VTRWxlbWVudEluZGV4VWlu
dC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6T0VTU3RhbmRhcmREZXJpdmF0aXZlczo6T0VTU3RhbmRhcmREZXJp
dmF0aXZlcyk6CisgICAgICAgICogaHRtbC9jYW52YXMvT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5o
OgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpPRVNUZXh0dXJlRmxvYXQ6Ok9FU1RleHR1cmVGbG9hdCk6CisgICAgICAgICogaHRt
bC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvT0VTVGV4
dHVyZUZsb2F0TGluZWFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9FU1RleHR1cmVGbG9hdExp
bmVhcjo6T0VTVGV4dHVyZUZsb2F0TGluZWFyKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNU
ZXh0dXJlRmxvYXRMaW5lYXIuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFs
ZkZsb2F0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9FU1RleHR1cmVIYWxmRmxvYXQ6Ok9FU1Rl
eHR1cmVIYWxmRmxvYXQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxv
YXQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok9FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXI6Ok9FU1RleHR1
cmVIYWxmRmxvYXRMaW5lYXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1RleHR1cmVIYWxm
RmxvYXRMaW5lYXIuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPRVNWZXJ0ZXhBcnJheU9iamVjdDo6T0VTVmVydGV4
QXJyYXlPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6T0VTVmVydGV4QXJyYXlPYmplY3Q6OmNy
ZWF0ZVZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKFdlYkNvcmU6Ok9FU1ZlcnRleEFycmF5T2Jq
ZWN0OjpkZWxldGVWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJDb3JlOjpPRVNWZXJ0ZXhB
cnJheU9iamVjdDo6aXNWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJDb3JlOjpPRVNWZXJ0
ZXhBcnJheU9iamVjdDo6YmluZFZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmluaXRpYWxpemVWZXJ0ZXhBcnJheU9iamVjdHMpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aW5pdGlhbGl6ZVNoYWRlckV4dGVuc2lv
bnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZHJhd0J1ZmZl
cnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlVmVy
dGV4QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aXNW
ZXJ0ZXhBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpi
aW5kVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6Z2V0RXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
QnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQnVmZmVyOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xCdWZmZXI6OldlYkdMQnVmZmVyKToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTEJ1ZmZlci5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29tcHJl
c3NlZFRleHR1cmVBVEMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVzc2VkVGV4
dHVyZUFUQzo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQyk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9X
ZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xD
b21wcmVzc2VkVGV4dHVyZVBWUlRDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQpOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5oOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpXZWJHTENvbXByZXNzZWRU
ZXh0dXJlUzNUQyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNU
Qzo6c3VwcG9ydGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0
dXJlUzNUQy5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29udGV4dE9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbnRleHRPYmplY3Q6OldlYkdMQ29udGV4dE9iamVj
dCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0T2JqZWN0Lmg6CisgICAgICAg
ICogaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTERlYnVnUmVuZGVyZXJJbmZvOjpXZWJHTERlYnVnUmVuZGVyZXJJbmZvKToKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTERlYnVnUmVuZGVyZXJJbmZvLmg6CisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xEZWJ1Z1NoYWRlcnM6OldlYkdMRGVidWdTaGFkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMRGVidWdTaGFkZXJzOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlKToKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMRGVwdGhUZXh0dXJlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRGVwdGhUZXh0dXJl
OjpXZWJHTERlcHRoVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTERlcHRoVGV4dHVy
ZTo6c3VwcG9ydGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5o
OgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xEcmF3QnVmZmVyczo6V2ViR0xEcmF3QnVmZmVycyk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTERyYXdCdWZmZXJzOjpzdXBwb3J0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xEcmF3QnVmZmVyczo6ZHJhd0J1ZmZlcnNXRUJHTCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTERyYXdCdWZmZXJzOjpzYXRpc2ZpZXNXZWJHTFJlcXVpcmVtZW50cyk6CisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMRXh0ZW5zaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRXh0ZW5zaW9uOjpXZWJH
TEV4dGVuc2lvbik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMRXh0ZW5zaW9uOjpyZWYpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xFeHRlbnNpb246OmRlcmVmKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRXh0ZW5zaW9u
Ojpjb250ZXh0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjpXZWJHTEZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OmRyYXdCdWZmZXJzSWZOZWNlc3NhcnkpOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaDoKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTExvc2VDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTG9zZUNvbnRl
eHQ6OldlYkdMTG9zZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMb3NlQ29udGV4
dDo6bG9zZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMb3NlQ29udGV4dDo6cmVz
dG9yZUNvbnRleHQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMTG9zZUNvbnRleHQuaDoK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTE9iamVjdDo6V2ViR0xPYmplY3QpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
T2JqZWN0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUHJvZ3JhbTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUHJvZ3JhbTo6V2ViR0xQcm9ncmFtKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFBy
b2dyYW0uaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFF1ZXJ5LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUXVlcnk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFF1
ZXJ5OjpXZWJHTFF1ZXJ5KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFF1ZXJ5Lmg6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJidWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmJ1ZmZlcjo6V2ViR0xSZW5kZXJidWZmZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L1dlYkdMUmVuZGVyYnVmZmVyLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6
aW5pdGlhbGl6ZVZlcnRleEFycmF5T2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnMpOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnNldHVwRmxhZ3MpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y2hlY2tPYmplY3RUb0JlQm91bmQpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRlQnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZUZyYW1lYnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0
ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
Y3JlYXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpjcmVhdGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6Y3JlYXRlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmRlbGV0ZU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVdlYkdMT2JqZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmZyYW1lYnVm
ZmVyVGV4dHVyZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmdldFVuaWZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6cmVhZFBpeGVscyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpsb3NlQ29udGV4dEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6bWF5YmVSZXN0b3JlQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzdXBwb3J0c0RyYXdCdWZmZXJzKToKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9XZWJHTFNhbXBsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xT
YW1wbGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xTYW1wbGVyOjpXZWJHTFNh
bXBsZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMU2FtcGxlci5oOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMU2hh
ZGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xTaGFkZXI6OldlYkdMU2hhZGVy
KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFNoYWRlci5oOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL1dlYkdMU2hhcmVkT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMU2hh
cmVkT2JqZWN0OjpXZWJHTFNoYXJlZE9iamVjdCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xTaGFyZWRPYmplY3QuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFN5bmMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xTeW5jOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xTeW5jOjpXZWJHTFN5bmMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMU3luYy5o
OgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFRleHR1cmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFRleHR1
cmU6OldlYkdMVGV4dHVyZSk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmg6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFRyYW5zZm9ybUZlZWRiYWNrOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xUcmFuc2Zvcm1GZWVkYmFjazo6V2ViR0xUcmFuc2Zvcm1GZWVkYmFjayk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5oOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xWZXJ0ZXhBcnJheU9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMVmVydGV4QXJyYXlPYmplY3Q6OldlYkdMVmVydGV4QXJyYXlPYmplY3QpOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3QuaDoKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZTo6V2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJhc2Up
OgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlLmg6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6V2ViR0xWZXJ0ZXhBcnJheU9i
amVjdE9FUyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOjpk
ZWxldGVPYmplY3RJbXBsKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5
T2JqZWN0T0VTLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjb252ZXJ0Rm9ybWF0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OnJlYWRQaXhlbHNBbmRDb252ZXJ0VG9CR1JBSWZOZWNlc3Nhcnkp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnJlc2hhcGVGQk9zKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbnRlZ2Vydik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2YWxpZGF0ZURlcHRoU3Rl
bmNpbCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZHJhd0FycmF5c0lu
c3RhbmNlZCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZHJhd0VsZW1l
bnRzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0
ZXhBdHRyaWJEaXZpc29yKToKKwogMjAxNi0xMS0xNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIE1vdmUgU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIgdG8gU2VjdXJpdHlPcmlnaW5EYXRhCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9BTkdMRUluc3RhbmNlZEFycmF5cy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9BTkdMRUluc3RhbmNlZEFycmF5cy5jcHAKaW5kZXgg
NDU5MDVlNjExMWNhNzg3NDUzMjhhMjZkOWU4OWVkMzMyNDc5YTZkOS4uMTdlNmQ2YzhlYjRkZmQ3
NDc3MjgwZTc3MmE5YTkyOTEyODJhZDc2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmNwcApAQCAtMzQsNyArMzQsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLUFOR0xFSW5zdGFuY2VkQXJyYXlzOjpBTkdMRUluc3RhbmNl
ZEFycmF5cyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjb250ZXh0KQorQU5HTEVJbnN0YW5j
ZWRBcnJheXM6OkFOR0xFSW5zdGFuY2VkQXJyYXlzKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Um
IGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewogfQpAQCAtNDgsMTQg
KzQ4LDE0IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIEFOR0xFSW5zdGFuY2VkQXJy
YXlzOjpnZXROYW1lKCkgY29uc3QKICAgICByZXR1cm4gQU5HTEVJbnN0YW5jZWRBcnJheXNOYW1l
OwogfQogCi1ib29sIEFOR0xFSW5zdGFuY2VkQXJyYXlzOjpzdXBwb3J0ZWQoV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSogY29udGV4dCkKK2Jvb2wgQU5HTEVJbnN0YW5jZWRBcnJheXM6OnN1cHBv
cnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogewogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKICAgICByZXR1cm4gdHJ1ZTsKICNl
bGlmIFBMQVRGT1JNKEdUSykKLSAgICBFeHRlbnNpb25zM0QqIGV4dGVuc2lvbnMgPSBjb250ZXh0
LT5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCk7Ci0gICAgcmV0dXJuIGV4dGVu
c2lvbnMtPnN1cHBvcnRzKCJHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIik7CisgICAgRXh0ZW5z
aW9uczNEJiBleHRlbnNpb25zID0gY29udGV4dC5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRl
bnNpb25zKCk7CisgICAgcmV0dXJuIGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0FOR0xFX2luc3Rh
bmNlZF9hcnJheXMiKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIHJl
dHVybiBmYWxzZTsKQEAgLTY0LDIzICs2NCwyMyBAQCBib29sIEFOR0xFSW5zdGFuY2VkQXJyYXlz
OjpzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29udGV4dCkKIAogdm9pZCBB
TkdMRUluc3RhbmNlZEFycmF5czo6ZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDM0RlbnVtIG1v
ZGUsIEdDM0RpbnQgZmlyc3QsIEdDM0RzaXplaSBjb3VudCwgR0MzRHNpemVpIHByaW1jb3VudCkK
IHsKLSAgICBpZiAobV9jb250ZXh0LT5pc0NvbnRleHRMb3N0KCkpCisgICAgaWYgKG1fY29udGV4
dC5pc0NvbnRleHRMb3N0KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPmRyYXdB
cnJheXNJbnN0YW5jZWQobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpOworICAgIG1fY29u
dGV4dC5kcmF3QXJyYXlzSW5zdGFuY2VkKG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsK
IH0KIAogdm9pZCBBTkdMRUluc3RhbmNlZEFycmF5czo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5H
TEUoR0MzRGVudW0gbW9kZSwgR0MzRHNpemVpIGNvdW50LCBHQzNEZW51bSB0eXBlLCBsb25nIGxv
bmcgb2Zmc2V0LCBHQzNEc2l6ZWkgcHJpbWNvdW50KQogewotICAgIGlmIChtX2NvbnRleHQtPmlz
Q29udGV4dExvc3QoKSkKKyAgICBpZiAobV9jb250ZXh0LmlzQ29udGV4dExvc3QoKSkKICAgICAg
ICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNv
dW50LCB0eXBlLCBvZmZzZXQsIHByaW1jb3VudCk7CisgICAgbV9jb250ZXh0LmRyYXdFbGVtZW50
c0luc3RhbmNlZChtb2RlLCBjb3VudCwgdHlwZSwgb2Zmc2V0LCBwcmltY291bnQpOwogfQogCiB2
b2lkIEFOR0xFSW5zdGFuY2VkQXJyYXlzOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0MzRHVp
bnQgaW5kZXgsIEdDM0R1aW50IGRpdmlzb3IpCiB7Ci0gICAgaWYgKG1fY29udGV4dC0+aXNDb250
ZXh0TG9zdCgpKQorICAgIGlmIChtX2NvbnRleHQuaXNDb250ZXh0TG9zdCgpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJEaXZpc29yKGluZGV4LCBkaXZpc29y
KTsKKyAgICBtX2NvbnRleHQudmVydGV4QXR0cmliRGl2aXNvcihpbmRleCwgZGl2aXNvcik7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9BTkdMRUluc3RhbmNlZEFycmF5cy5oCmluZGV4IDc2NWVjZmU2ODlmNWFmM2JlYjJhYTUx
NTc1ZjJhNzU0MDc1YjVhODkuLmNkMTZjMjNiZGI5Y2ZkYTQxMDFiZWFkNmU5N2Q0NDgwYzEyMzYy
YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2Vk
QXJyYXlzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQU5HTEVJbnN0YW5jZWRB
cnJheXMuaApAQCAtMzMsMTIgKzMzLDEyIEBAIGNsYXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U7CiAKIGNsYXNzIEFOR0xFSW5zdGFuY2VkQXJyYXlzIGZpbmFsIDogcHVibGljIFdlYkdMRXh0
ZW5zaW9uIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBBTkdMRUluc3RhbmNlZEFycmF5cyhXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAgZXhwbGljaXQgQU5HTEVJbnN0YW5jZWRBcnJh
eXMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwgfkFOR0xFSW5zdGFu
Y2VkQXJyYXlzKCk7CiAKICAgICB2aXJ0dWFsIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0
OwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uq
KTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYp
OwogCiAgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0MzRGVudW0gbW9kZSwgR0Mz
RGludCBmaXJzdCwgR0MzRHNpemVpIGNvdW50LCBHQzNEc2l6ZWkgcHJpbWNvdW50KTsKICAgICB2
b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDM0RlbnVtIG1vZGUsIEdDM0RzaXplaSBj
b3VudCwgR0MzRGVudW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwgR0MzRHNpemVpIHByaW1jb3Vu
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRCbGVuZE1pbk1h
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRCbGVuZE1pbk1heC5jcHAKaW5k
ZXggZjVlYWRhNjZmYTUyYjVkNmQ0OWNjYTMwZGFkMDg0YzM4ODJhZWMxYS4uNzYyYTVkOWY2NzVh
NjJmMGQ3NTE5MTMyYjgwODFiODBlYTUwOGU2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvRVhUQmxlbmRNaW5NYXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0VYVEJsZW5kTWluTWF4LmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLUVYVEJsZW5kTWluTWF4OjpFWFRCbGVuZE1pbk1heChXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlKiBjb250ZXh0KQorRVhUQmxlbmRNaW5NYXg6OkVYVEJsZW5kTWluTWF4KFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihj
b250ZXh0KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhU
QmxlbmRNaW5NYXguaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVEJsZW5kTWluTWF4
LmgKaW5kZXggOWVhZjI5ZmQ2MTEzZjE5NzBmZGFmOThhYTkzMDA0NTRjZjMxYTRmOC4uNTk1OTY4
NDRlZjNhZmZmNDEzMjQyNmMzYzAxYWZkYTA3YmRiZTE1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvRVhUQmxlbmRNaW5NYXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9FWFRCbGVuZE1pbk1heC5oCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgRVhUQmxlbmRNaW5NYXggZmluYWwgOiBwdWJsaWMgV2ViR0xFeHRl
bnNpb24gewogcHVibGljOgotICAgIGV4cGxpY2l0IEVYVEJsZW5kTWluTWF4KFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UqKTsKKyAgICBleHBsaWNpdCBFWFRCbGVuZE1pbk1heChXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVhbCB+RVhUQmxlbmRNaW5NYXgoKTsKIAogICAg
IEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhURnJhZ0RlcHRoLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0VYVEZyYWdEZXB0aC5jcHAKaW5kZXggODY3MDczNmNjYzJiOGE1NjYxNDZl
ZTg1ZjU5MTVkMWJmZmU0MzA0OS4uNjI2MzA5YzgzYmQxYzc0ZDU3NmQ1ODAyMmJlMTM0OTY2NGJl
ZGExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhURnJhZ0RlcHRo
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRGcmFnRGVwdGguY3BwCkBA
IC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRVhURnJhZ0RlcHRoOjpF
WFRGcmFnRGVwdGgoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29udGV4dCkKK0VYVEZyYWdE
ZXB0aDo6RVhURnJhZ0RlcHRoKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAg
ICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvRVhURnJhZ0RlcHRoLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9FWFRGcmFnRGVwdGguaAppbmRleCA5Y2Y3MGViMTZhMzE5NTg0ODNhMGM5YjlhYzZkNDFh
ZDdiNWFkYmE0Li41ZThhNGY5YzJmM2Q2NjEzNDJlNDhjNmQ0OTc3MDY4ZGMyMGYyOWU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRGcmFnRGVwdGguaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRGcmFnRGVwdGguaApAQCAtMzEsNyArMzEsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEVYVEZyYWdEZXB0aCBmaW5hbCA6IHB1Ymxp
YyBXZWJHTEV4dGVuc2lvbiB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgRVhURnJhZ0RlcHRoKFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBleHBsaWNpdCBFWFRGcmFnRGVwdGgoV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwgfkVYVEZyYWdEZXB0aCgpOwog
CiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRTaGFkZXJUZXh0dXJlTE9ELmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFNoYWRlclRleHR1cmVMT0QuY3BwCmluZGV4IDBk
YTMyNWQwMDgwOTZmZmRjZTg3MTM0ZTE3YzI2NzA4YzMzNjI0NTIuLjQ2ZTQwNmE0MzQ4ZWZlZDg5
OWIyMDcxMDAzNzQzZmRjM2Y3NjY0NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0VYVFNoYWRlclRleHR1cmVMT0QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0VYVFNoYWRlclRleHR1cmVMT0QuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotRVhUU2hhZGVyVGV4dHVyZUxPRDo6RVhUU2hhZGVyVGV4dHVyZUxP
RChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjb250ZXh0KQorRVhUU2hhZGVyVGV4dHVyZUxP
RDo6RVhUU2hhZGVyVGV4dHVyZUxPRChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0
KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFNoYWRlclRleHR1cmVMT0QuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0VYVFNoYWRlclRleHR1cmVMT0QuaAppbmRleCBlMDAxOTJhNzFhZmE1
MjhkMmNjMDg4MmZjMTI5ZDNhYWEyNTQ5ZjZlLi40N2MxOTJmMjA1OTk3YWNkMzAwZWUyNmJkZWMw
OTUzZWNkZmMxNDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRT
aGFkZXJUZXh0dXJlTE9ELmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUU2hh
ZGVyVGV4dHVyZUxPRC5oCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgRVhUU2hhZGVyVGV4dHVyZUxPRCBmaW5hbCA6IHB1YmxpYyBXZWJHTEV4dGVuc2lvbiB7
CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgRVhUU2hhZGVyVGV4dHVyZUxPRChXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlKik7CisgICAgZXhwbGljaXQgRVhUU2hhZGVyVGV4dHVyZUxPRChXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVhbCB+RVhUU2hhZGVyVGV4dHVyZUxPRCgp
OwogCiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlRmlsdGVyQW5pc290cm9w
aWMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUVGV4dHVyZUZpbHRlckFuaXNv
dHJvcGljLmNwcAppbmRleCBkYTc0YzRiZTEzODk2M2EyOTg1NmYzZjU5MDBhMDVhOTg3Y2E5NzNl
Li4wYmQzZGZhMmJlNzU3NDkzYjU0N2U3ZjI0YzhkMDdlOGVmMzYxZWI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFRleHR1cmVGaWx0ZXJBbmlzb3Ry
b3BpYy5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1FWFRU
ZXh0dXJlRmlsdGVyQW5pc290cm9waWM6OkVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYyhXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjb250ZXh0KQorRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJv
cGljOjpFWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlRmlsdGVyQW5pc290cm9w
aWMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFRleHR1cmVGaWx0ZXJBbmlzb3Ry
b3BpYy5oCmluZGV4IGQxZjI0ZjY1MWU3NGZhYTJiMTBmNDQ5MTFjYmFjYzg1ZDQ5MzhjOWYuLjQx
OTdkNWZiYjQwNTRkODU1NWRkMDU1OTNhZTUxZTE3NzA0NzBiZTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5o
CkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRVhUVGV4dHVy
ZUZpbHRlckFuaXNvdHJvcGljIGZpbmFsIDogcHVibGljIFdlYkdMRXh0ZW5zaW9uIHsKIHB1Ymxp
YzoKLSAgICBleHBsaWNpdCBFWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMoV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSopOworICAgIGV4cGxpY2l0IEVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3Bp
YyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVhbCB+RVhUVGV4dHVyZUZp
bHRlckFuaXNvdHJvcGljKCk7CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVHNSR0Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUc1JHQi5jcHAKaW5kZXggMjRmNTA4
ODg2MzVkNGMxNjk0OGQwZjZiMzZlNTFiNzIyYjc4M2VlNS4uZTRlZGY1MWM3NDVhMGI4NzA4NTYy
MDIzODE4ZDkzYTNjMDZmNWM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvRVhUc1JHQi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUc1JHQi5j
cHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1FWFRzUkdCOjpF
WFRzUkdCKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRleHQpCitFWFRzUkdCOjpFWFRz
UkdCKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVu
c2lvbihjb250ZXh0KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvRVhUc1JHQi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUc1JHQi5oCmluZGV4
IGM3YzBkYTQxNDQ1OWE0NzRmNGMxY2MwZjc2MDBhZDFjMzNmNTEwOGQuLjRhNjljYmE3NTUyYzk1
MmI1OTVhNmMyY2YyZjczOWU1M2U4OTAzYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0VYVHNSR0IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRz
UkdCLmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBFWFRz
UkdCIGZpbmFsIDogcHVibGljIFdlYkdMRXh0ZW5zaW9uIHsKIHB1YmxpYzoKLSAgICBleHBsaWNp
dCBFWFRzUkdCKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBleHBsaWNpdCBFWFRz
UkdCKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKICAgICB2aXJ0dWFsIH5FWFRzUkdCKCk7
CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU0VsZW1lbnRJbmRleFVpbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTRWxlbWVudEluZGV4VWludC5jcHAKaW5kZXgg
NjViNjgzOGRlYjc4OTUyNDE1NDMxYzEyNGU0ODJkM2I2MTdiNTVkZS4uMTAxYzVmMTBkNzUwMGY3
YmYyZjk5MTFjMzY2M2ExMDAyNDU0NDU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvT0VTRWxlbWVudEluZGV4VWludC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvT0VTRWxlbWVudEluZGV4VWludC5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1PRVNFbGVtZW50SW5kZXhVaW50OjpPRVNFbGVtZW50SW5kZXhV
aW50KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRleHQpCitPRVNFbGVtZW50SW5kZXhV
aW50OjpPRVNFbGVtZW50SW5kZXhVaW50KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRl
eHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTRWxlbWVudEluZGV4VWludC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvT0VTRWxlbWVudEluZGV4VWludC5oCmluZGV4IDc5NjBkYTQ4ZmI0
YmE1NjNlNmViZjFmZTA0NjBkMTkwNzgyYWE5NmEuLjQ2MDMyMWQ0NDhhMThiYTczY2IxOTU1YzMy
NDdlNDUxZTFjMTFmNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09F
U0VsZW1lbnRJbmRleFVpbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNF
bGVtZW50SW5kZXhVaW50LmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBPRVNFbGVtZW50SW5kZXhVaW50IGZpbmFsIDogcHVibGljIFdlYkdMRXh0ZW5zaW9u
IHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBPRVNFbGVtZW50SW5kZXhVaW50KFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UqKTsKKyAgICBleHBsaWNpdCBPRVNFbGVtZW50SW5kZXhVaW50KFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKICAgICB2aXJ0dWFsIH5PRVNFbGVtZW50SW5kZXhVaW50
KCk7CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5j
cHAKaW5kZXggZTc1NGFjZjczYzk4ODZmN2M5YmM3Y2ZjZmEyNmM5NjBiN2I1MmM5YS4uZGNiYjgx
OWUzNDhlNDQ3OGY2ZWU0NWZmMTA3NDkwMjNjNDAzZGRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5jcHAKQEAgLTMxLDcg
KzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1PRVNTdGFuZGFyZERlcml2YXRpdmVz
OjpPRVNTdGFuZGFyZERlcml2YXRpdmVzKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRl
eHQpCitPRVNTdGFuZGFyZERlcml2YXRpdmVzOjpPRVNTdGFuZGFyZERlcml2YXRpdmVzKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250
ZXh0KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTU3Rh
bmRhcmREZXJpdmF0aXZlcy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTU3RhbmRh
cmREZXJpdmF0aXZlcy5oCmluZGV4IDNhMjk2OWRmNTdlMjAwZjUxMjRjZGUzMzUwZjZlNDRhNTc3
MjFlMzUuLmNjZmM4ODQwNjg3YzNiMTY3NWJkYTFlMmQxMWFmOTdkMjhmMjM5MDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNTdGFuZGFyZERlcml2YXRpdmVzLmgK
QEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBPRVNTdGFuZGFy
ZERlcml2YXRpdmVzIGZpbmFsIDogcHVibGljIFdlYkdMRXh0ZW5zaW9uIHsKIHB1YmxpYzoKLSAg
ICBleHBsaWNpdCBPRVNTdGFuZGFyZERlcml2YXRpdmVzKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UqKTsKKyAgICBleHBsaWNpdCBPRVNTdGFuZGFyZERlcml2YXRpdmVzKFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmKTsKICAgICB2aXJ0dWFsIH5PRVNTdGFuZGFyZERlcml2YXRpdmVzKCk7CiAK
ICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuY3BwCmluZGV4IGI4ZmZlYzdkM2Nl
OTc4NWE0MDUyZWQwYTM5MDE0MWNiZGY3MzVlOTEuLjYwZDJmN2I1MGI4YmEwMmM0MTY3OTNlMmI5
YzM4OTk4ZDFhNWU4Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09F
U1RleHR1cmVGbG9hdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4
dHVyZUZsb2F0LmNwcApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LU9FU1RleHR1cmVGbG9hdDo6T0VTVGV4dHVyZUZsb2F0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UqIGNvbnRleHQpCitPRVNUZXh0dXJlRmxvYXQ6Ok9FU1RleHR1cmVGbG9hdChXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkK
IHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVG
bG9hdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0LmgKaW5k
ZXggYWJhNzlkMzFiMjJhNDlmODNlOTUzODRmYzA5NjlkYjg2OWVmZjM1YS4uZTdjMDcxNWRkNzBk
NzZiOTE4ZjVhMjJhYzYxM2I1ZDRlYTVmMzQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvT0VTVGV4dHVyZUZsb2F0LmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBPRVNUZXh0dXJlRmxvYXQgZmluYWwgOiBwdWJsaWMgV2ViR0xFeHRlbnNp
b24gewogcHVibGljOgotICAgIE9FU1RleHR1cmVGbG9hdChXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlKik7CisgICAgT0VTVGV4dHVyZUZsb2F0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsK
ICAgICB2aXJ0dWFsIH5PRVNUZXh0dXJlRmxvYXQoKTsKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0
TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvT0VTVGV4dHVyZUZsb2F0TGluZWFyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL09FU1RleHR1cmVGbG9hdExpbmVhci5jcHAKaW5kZXggMmExMGE1MGFkZWZhMDVhZGNiNTQy
Y2NjNGE4YzhmZjI5MzBiNDBlZS4uZmNlOTE3OTA4NGRkMzJiMDE1Y2M3MDkxZWY5MTc1MDQzNmU4
M2JjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZs
b2F0TGluZWFyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJl
RmxvYXRMaW5lYXIuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotT0VTVGV4dHVyZUZsb2F0TGluZWFyOjpPRVNUZXh0dXJlRmxvYXRMaW5lYXIoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSogY29udGV4dCkKK09FU1RleHR1cmVGbG9hdExpbmVhcjo6T0VTVGV4
dHVyZUZsb2F0TGluZWFyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAg
OiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0TGluZWFyLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXRMaW5lYXIuaAppbmRleCA1N2RiYWRkNmM4MDg4NGE5
NjYzZTkxYTE5MDQxMmExNDI1YTlkZGIxLi45M2RkMTM0NjBjZDNhYzA1Y2U1MWM3M2E1MDVkM2M4
NGM2YTNmM2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0
dXJlRmxvYXRMaW5lYXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0
dXJlRmxvYXRMaW5lYXIuaApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIE9FU1RleHR1cmVGbG9hdExpbmVhciBmaW5hbCA6IHB1YmxpYyBXZWJHTEV4dGVuc2lv
biB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgT0VTVGV4dHVyZUZsb2F0TGluZWFyKFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBleHBsaWNpdCBPRVNUZXh0dXJlRmxvYXRMaW5lYXIo
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwgfk9FU1RleHR1cmVGbG9h
dExpbmVhcigpOwogCiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZs
b2F0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQu
Y3BwCmluZGV4IGJkZDE2N2MwMzI3YTNmODVhYzc0YWNjNzg2OGEwMjNlMmM4ZmQ0MDcuLmYxZjc0
OTZkZDJkY2UwZWYxMjcwYTM0YTQwMTk1NThiYzZjMjE5NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQuY3BwCkBAIC0zMSw3ICszMSw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotT0VTVGV4dHVyZUhhbGZGbG9hdDo6T0VTVGV4
dHVyZUhhbGZGbG9hdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjb250ZXh0KQorT0VTVGV4
dHVyZUhhbGZGbG9hdDo6T0VTVGV4dHVyZUhhbGZGbG9hdChXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQuaAppbmRleCA3
MjVlYzY2NTQ0ZDAxYWJhOTg5YjZkMWUyYTAwNzE4MTE1Y2RkOTJhLi5iM2Y2NzZkZDczYWE1NTAw
ZjE4NzVmNzIwZjBjN2ExMWFjMDAyNDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5oCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgT0VTVGV4dHVyZUhhbGZGbG9hdCBmaW5hbCA6IHB1YmxpYyBXZWJH
TEV4dGVuc2lvbiB7CiBwdWJsaWM6Ci0gICAgT0VTVGV4dHVyZUhhbGZGbG9hdChXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlKik7CisgICAgT0VTVGV4dHVyZUhhbGZGbG9hdChXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVhbCB+T0VTVGV4dHVyZUhhbGZGbG9hdCgpOwogCiAg
ICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXIuY3Bw
CmluZGV4IDQyMTFjODA2MjczMzNiYmJlNDFiYTk1NWRmNDBjOWE1MzU1MTJkYjQuLjM1OWUzMDAx
NmUzOTZiOTU2NTY4OTAwMzE2MDkyODhiYTc2NzIxYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXIuY3BwCkBAIC0z
MCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotT0VTVGV4dHVyZUhhbGZGbG9h
dExpbmVhcjo6T0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhcihXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlKiBjb250ZXh0KQorT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhcjo6T0VTVGV4dHVyZUhhbGZG
bG9hdExpbmVhcihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2Vi
R0xFeHRlbnNpb24oY29udGV4dCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXIuaAppbmRleCBlZGM1MjlhOWZhNjYz
MTdlNDg2NGFlZjA3NWI0Nzg1N2I3ZWVhOWVmLi40ODEwYTExMmJhOWU5MmE1ZmNlZjQwODMyNjJl
OWFkZWJhZmFjNzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNU
ZXh0dXJlSGFsZkZsb2F0TGluZWFyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
T0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhci5oCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhciBmaW5hbCA6IHB1Ymxp
YyBXZWJHTEV4dGVuc2lvbiB7CiBwdWJsaWM6Ci0gICAgT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVh
cihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAgT0VTVGV4dHVyZUhhbGZGbG9hdExp
bmVhcihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVhbCB+T0VTVGV4dHVy
ZUhhbGZGbG9hdExpbmVhcigpOwogCiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNWZXJ0
ZXhBcnJheU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNWZXJ0ZXhB
cnJheU9iamVjdC5jcHAKaW5kZXggNGUwNjE2NmQxZDcyYTU5ZWZjMTM2NzJhYzdjNjZmMjhkNTc2
ZWFjOC4uYzhiMTBmN2JmYmM2ODFkOGFhODU5NTlhM2YxZTI3ZDYzNzhlNjlhZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcApA
QCAtMzUsNyArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBPRVNWZXJ0ZXhBcnJheU9i
amVjdDo6T0VTVmVydGV4QXJyYXlPYmplY3QoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29u
dGV4dCkKLSAgICA6IFdlYkdMRXh0ZW5zaW9uKCZjb250ZXh0KQorICAgIDogV2ViR0xFeHRlbnNp
b24oY29udGV4dCkKIHsKIH0KIApAQCAtNDYsNDMgKzQ2LDQzIEBAIFdlYkdMRXh0ZW5zaW9uOjpF
eHRlbnNpb25OYW1lIE9FU1ZlcnRleEFycmF5T2JqZWN0OjpnZXROYW1lKCkgY29uc3QKIAogUmVm
UHRyPFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM+IE9FU1ZlcnRleEFycmF5T2JqZWN0OjpjcmVh
dGVWZXJ0ZXhBcnJheU9FUygpCiB7Ci0gICAgaWYgKG1fY29udGV4dC0+aXNDb250ZXh0TG9zdCgp
KQorICAgIGlmIChtX2NvbnRleHQuaXNDb250ZXh0TG9zdCgpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIGF1dG8gb2JqZWN0ID0gV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6Y3Jl
YXRlKG1fY29udGV4dCwgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6VkFPVHlwZVVzZXIpOwot
ICAgIG1fY29udGV4dC0+YWRkQ29udGV4dE9iamVjdChvYmplY3QucHRyKCkpOworICAgIG1fY29u
dGV4dC5hZGRDb250ZXh0T2JqZWN0KG9iamVjdC5wdHIoKSk7CiAgICAgcmV0dXJuIFdURk1vdmUo
b2JqZWN0KTsKIH0KIAogdm9pZCBPRVNWZXJ0ZXhBcnJheU9iamVjdDo6ZGVsZXRlVmVydGV4QXJy
YXlPRVMoV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUyogYXJyYXlPYmplY3QpCiB7Ci0gICAgaWYg
KCFhcnJheU9iamVjdCB8fCBtX2NvbnRleHQtPmlzQ29udGV4dExvc3QoKSkKKyAgICBpZiAoIWFy
cmF5T2JqZWN0IHx8IG1fY29udGV4dC5pc0NvbnRleHRMb3N0KCkpCiAgICAgICAgIHJldHVybjsK
ICAgICAKLSAgICBpZiAoIWFycmF5T2JqZWN0LT5pc0RlZmF1bHRPYmplY3QoKSAmJiBhcnJheU9i
amVjdCA9PSBzdGF0aWNfY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHQqPihtX2NvbnRleHQpLT5t
X2JvdW5kVmVydGV4QXJyYXlPYmplY3QpCi0gICAgICAgIHN0YXRpY19jYXN0PFdlYkdMUmVuZGVy
aW5nQ29udGV4dCo+KG1fY29udGV4dCktPnNldEJvdW5kVmVydGV4QXJyYXlPYmplY3QoMCk7Cisg
ICAgaWYgKCFhcnJheU9iamVjdC0+aXNEZWZhdWx0T2JqZWN0KCkgJiYgYXJyYXlPYmplY3QgPT0g
c3RhdGljX2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0Kj4oJm1fY29udGV4dCktPm1fYm91bmRW
ZXJ0ZXhBcnJheU9iamVjdCkKKyAgICAgICAgc3RhdGljX2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250
ZXh0Kj4oJm1fY29udGV4dCktPnNldEJvdW5kVmVydGV4QXJyYXlPYmplY3QoMCk7CiAKLSAgICBh
cnJheU9iamVjdC0+ZGVsZXRlT2JqZWN0KG1fY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0M0QoKSk7
CisgICAgYXJyYXlPYmplY3QtPmRlbGV0ZU9iamVjdChtX2NvbnRleHQuZ3JhcGhpY3NDb250ZXh0
M0QoKSk7CiB9CiAKIEdDM0Rib29sZWFuIE9FU1ZlcnRleEFycmF5T2JqZWN0Ojppc1ZlcnRleEFy
cmF5T0VTKFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMqIGFycmF5T2JqZWN0KQogewotICAgIHJl
dHVybiBhcnJheU9iamVjdCAmJiAhbV9jb250ZXh0LT5pc0NvbnRleHRMb3N0KCkgJiYgYXJyYXlP
YmplY3QtPmhhc0V2ZXJCZWVuQm91bmQoKQotICAgICAgICAmJiBtX2NvbnRleHQtPmdyYXBoaWNz
Q29udGV4dDNEKCktPmdldEV4dGVuc2lvbnMoKS0+aXNWZXJ0ZXhBcnJheU9FUyhhcnJheU9iamVj
dC0+b2JqZWN0KCkpOworICAgIHJldHVybiBhcnJheU9iamVjdCAmJiAhbV9jb250ZXh0LmlzQ29u
dGV4dExvc3QoKSAmJiBhcnJheU9iamVjdC0+aGFzRXZlckJlZW5Cb3VuZCgpCisgICAgICAgICYm
IG1fY29udGV4dC5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCkuaXNWZXJ0ZXhB
cnJheU9FUyhhcnJheU9iamVjdC0+b2JqZWN0KCkpOwogfQogCiB2b2lkIE9FU1ZlcnRleEFycmF5
T2JqZWN0OjpiaW5kVmVydGV4QXJyYXlPRVMoV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUyogYXJy
YXlPYmplY3QpCiB7Ci0gICAgaWYgKG1fY29udGV4dC0+aXNDb250ZXh0TG9zdCgpKQorICAgIGlm
IChtX2NvbnRleHQuaXNDb250ZXh0TG9zdCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAo
YXJyYXlPYmplY3QgJiYgKGFycmF5T2JqZWN0LT5pc0RlbGV0ZWQoKSB8fCAhYXJyYXlPYmplY3Qt
PnZhbGlkYXRlKDAsIGNvbnRleHQoKSkpKSB7Ci0gICAgICAgIG1fY29udGV4dC0+Z3JhcGhpY3ND
b250ZXh0M0QoKS0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURf
T1BFUkFUSU9OKTsKKyAgICBpZiAoYXJyYXlPYmplY3QgJiYgKGFycmF5T2JqZWN0LT5pc0RlbGV0
ZWQoKSB8fCAhYXJyYXlPYmplY3QtPnZhbGlkYXRlKG51bGxwdHIsIGNvbnRleHQoKSkpKSB7Cisg
ICAgICAgIG1fY29udGV4dC5ncmFwaGljc0NvbnRleHQzRCgpLT5zeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgYXV0byYgZXh0ZW5zaW9ucyA9ICptX2NvbnRleHQtPmdyYXBoaWNzQ29udGV4
dDNEKCktPmdldEV4dGVuc2lvbnMoKTsKLSAgICBhdXRvJiBjb250ZXh0ID0gZG93bmNhc3Q8V2Vi
R0xSZW5kZXJpbmdDb250ZXh0PigqbV9jb250ZXh0KTsKKyAgICBhdXRvJiBleHRlbnNpb25zID0g
bV9jb250ZXh0LmdyYXBoaWNzQ29udGV4dDNEKCktPmdldEV4dGVuc2lvbnMoKTsKKyAgICBhdXRv
JiBjb250ZXh0ID0gZG93bmNhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0PihtX2NvbnRleHQpOwog
ICAgIGlmIChhcnJheU9iamVjdCAmJiAhYXJyYXlPYmplY3QtPmlzRGVmYXVsdE9iamVjdCgpICYm
IGFycmF5T2JqZWN0LT5vYmplY3QoKSkgewogICAgICAgICBleHRlbnNpb25zLmJpbmRWZXJ0ZXhB
cnJheU9FUyhhcnJheU9iamVjdC0+b2JqZWN0KCkpOwogICAgICAgICBhcnJheU9iamVjdC0+c2V0
SGFzRXZlckJlZW5Cb3VuZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBlZTE0MGE4Mzc2NjZkOTc3NWEzZWU3
ODg5YmI3NjAzOTE2NDg2ZGEwLi40NmM0NmRkNTJjOGY3YWJlYmQ1M2M5NWNjYzUxMzhmNWM2NTI3
NDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJp
bmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5k
ZXJpbmdDb250ZXh0LmNwcApAQCAtNzMsNyArNzMsNyBAQCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0KEhUTUxDYW52YXNFbGVtZW50JiBwYXNzZWRDYW52YXMs
CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aW5pdGlhbGl6ZVZlcnRleEFycmF5T2Jq
ZWN0cygpCiB7Ci0gICAgbV9kZWZhdWx0VmVydGV4QXJyYXlPYmplY3QgPSBXZWJHTFZlcnRleEFy
cmF5T2JqZWN0OjpjcmVhdGUodGhpcywgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdDo6VkFPVHlwZURl
ZmF1bHQpOworICAgIG1fZGVmYXVsdFZlcnRleEFycmF5T2JqZWN0ID0gV2ViR0xWZXJ0ZXhBcnJh
eU9iamVjdDo6Y3JlYXRlKCp0aGlzLCBXZWJHTFZlcnRleEFycmF5T2JqZWN0OjpWQU9UeXBlRGVm
YXVsdCk7CiAgICAgYWRkQ29udGV4dE9iamVjdChtX2RlZmF1bHRWZXJ0ZXhBcnJheU9iamVjdC5n
ZXQoKSk7CiAgICAgbV9ib3VuZFZlcnRleEFycmF5T2JqZWN0ID0gbV9kZWZhdWx0VmVydGV4QXJy
YXlPYmplY3Q7CiAgICAgaWYgKCFpc0dMRVMyQ29tcGxpYW50KCkpCkBAIC04MiwxMCArODIsMTAg
QEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppbml0aWFsaXplVmVydGV4QXJyYXlPYmpl
Y3RzKCkKIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppbml0aWFsaXplU2hhZGVyRXh0
ZW5zaW9ucygpCiB7Ci0gICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJs
ZWQoIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpOwotICAgIG1fY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKCJHTF9FWFRfZHJhd19idWZmZXJzIik7Ci0gICAgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9zaGFkZXJfdGV4
dHVyZV9sb2QiKTsKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxl
ZCgiR0xfRVhUX2ZyYWdfZGVwdGgiKTsKKyAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5l
bnN1cmVFbmFibGVkKCJHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiKTsKKyAgICBtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9FWFRfZHJhd19idWZmZXJzIik7
CisgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3No
YWRlcl90ZXh0dXJlX2xvZCIpOworICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3Vy
ZUVuYWJsZWQoIkdMX0VYVF9mcmFnX2RlcHRoIik7CiB9CiAKIGlubGluZSBzdGF0aWMgT3B0aW9u
YWw8dW5zaWduZWQ+IGFycmF5QnVmZmVyVmlld0VsZW1lbnRTaXplKGNvbnN0IEFycmF5QnVmZmVy
VmlldyYgZGF0YSkKQEAgLTQ5NCw3ICs0OTQsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OmRyYXdCdWZmZXJzKFZlY3RvcjxHQzNEZW51bT4gYnVmZmVycykKICAgICAgICAgfQogICAg
ICAgICAvLyBCZWNhdXNlIHRoZSBiYWNrYnVmZmVyIGlzIHNpbXVsYXRlZCBvbiBhbGwgY3VycmVu
dCBXZWJLaXQgcG9ydHMsIHdlIG5lZWQgdG8gY2hhbmdlIEJBQ0sgdG8gQ09MT1JfQVRUQUNITUVO
VDAuCiAgICAgICAgIEdDM0RlbnVtIHZhbHVlID0gKGJ1ZnNbMF0gPT0gR3JhcGhpY3NDb250ZXh0
M0Q6OkJBQ0spID8gR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwIDogR3JhcGhp
Y3NDb250ZXh0M0Q6Ok5PTkU7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dDNEKCktPmdldEV4dGVu
c2lvbnMoKS0+ZHJhd0J1ZmZlcnNFWFQoMSwgJnZhbHVlKTsKKyAgICAgICAgZ3JhcGhpY3NDb250
ZXh0M0QoKS0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZmZXJzRVhUKDEsICZ2YWx1ZSk7CiAgICAg
ICAgIHNldEJhY2tEcmF3QnVmZmVyKGJ1ZnNbMF0pOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlm
IChuID4gZ2V0TWF4RHJhd0J1ZmZlcnMoKSkgewpAQCAtNzk0LDcgKzc5NCw3IEBAIFJlZlB0cjxX
ZWJHTFZlcnRleEFycmF5T2JqZWN0PiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVWZXJ0
ZXhBcnJheSgpCiAgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgCi0gICAgYXV0byBvYmplY3QgPSBXZWJHTFZlcnRleEFycmF5T2JqZWN0OjpjcmVh
dGUodGhpcywgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdDo6VkFPVHlwZVVzZXIpOworICAgIGF1dG8g
b2JqZWN0ID0gV2ViR0xWZXJ0ZXhBcnJheU9iamVjdDo6Y3JlYXRlKCp0aGlzLCBXZWJHTFZlcnRl
eEFycmF5T2JqZWN0OjpWQU9UeXBlVXNlcik7CiAgICAgYWRkQ29udGV4dE9iamVjdChvYmplY3Qu
cHRyKCkpOwogICAgIHJldHVybiBXVEZNb3ZlKG9iamVjdCk7CiB9CkBAIC04MTgsNyArODE4LDcg
QEAgR0MzRGJvb2xlYW4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aXNWZXJ0ZXhBcnJheShXZWJH
TFZlcnRleEFycmF5T2JqZWN0KiBhcnJheU8KICAgICBpZiAoIWFycmF5T2JqZWN0IHx8IGlzQ29u
dGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCi0gICAgaWYgKCFhcnJheU9iamVj
dC0+aGFzRXZlckJlZW5Cb3VuZCgpIHx8ICFhcnJheU9iamVjdC0+dmFsaWRhdGUoMCwgdGhpcykp
CisgICAgaWYgKCFhcnJheU9iamVjdC0+aGFzRXZlckJlZW5Cb3VuZCgpIHx8ICFhcnJheU9iamVj
dC0+dmFsaWRhdGUoMCwgKnRoaXMpKQogICAgICAgICByZXR1cm4gMDsKICAgICAKICAgICByZXR1
cm4gbV9jb250ZXh0LT5pc1ZlcnRleEFycmF5KGFycmF5T2JqZWN0LT5vYmplY3QoKSk7CkBAIC04
MjksNyArODI5LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiaW5kVmVydGV4QXJy
YXkoV2ViR0xWZXJ0ZXhBcnJheU9iamVjdCogYXJyYXlPYmplY3QKICAgICBpZiAoaXNDb250ZXh0
TG9zdCgpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgaWYgKGFycmF5T2JqZWN0ICYmIChh
cnJheU9iamVjdC0+aXNEZWxldGVkKCkgfHwgIWFycmF5T2JqZWN0LT52YWxpZGF0ZSgwLCB0aGlz
KSB8fCAhbV9jb250ZXh0T2JqZWN0cy5jb250YWlucyhhcnJheU9iamVjdCkpKSB7CisgICAgaWYg
KGFycmF5T2JqZWN0ICYmIChhcnJheU9iamVjdC0+aXNEZWxldGVkKCkgfHwgIWFycmF5T2JqZWN0
LT52YWxpZGF0ZSgwLCAqdGhpcykgfHwgIW1fY29udGV4dE9iamVjdHMuY29udGFpbnMoYXJyYXlP
YmplY3QpKSkgewogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNz
Q29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC04NTAsODUgKzg1MCw4NSBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICBpZiAoKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIkVYVF90ZXh0dXJl
X2ZpbHRlcl9hbmlzb3Ryb3BpYyIpIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIldF
QktJVF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKSkKLSAgICAgICAgJiYgbV9jb250
ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5p
c290cm9waWMiKSkgeworICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBw
b3J0cygiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIikpIHsKICAgICAgICAgaWYg
KCFtX2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYykgewotICAgICAgICAgICAgbV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9h
bmlzb3Ryb3BpYyIpOwotICAgICAgICAgICAgbV9leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMg
PSBzdGQ6Om1ha2VfdW5pcXVlPEVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYz4odGhpcyk7Cisg
ICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9F
WFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKTsKKyAgICAgICAgICAgIG1fZXh0VGV4dHVy
ZUZpbHRlckFuaXNvdHJvcGljID0gc3RkOjptYWtlX3VuaXF1ZTxFWFRUZXh0dXJlRmlsdGVyQW5p
c290cm9waWM+KCp0aGlzKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbV9leHRUZXh0dXJl
RmlsdGVyQW5pc290cm9waWMuZ2V0KCk7CiAgICAgfQogICAgIGlmIChlcXVhbElnbm9yaW5nQVND
SUlDYXNlKG5hbWUsICJPRVNfdGV4dHVyZV9mbG9hdCIpCi0gICAgICAgICYmIG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfZmxvYXQiKSkgeworICAg
ICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3RleHR1
cmVfZmxvYXQiKSkgewogICAgICAgICBpZiAoIW1fb2VzVGV4dHVyZUZsb2F0KSB7Ci0gICAgICAg
ICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3Rl
eHR1cmVfZmxvYXQiKTsKLSAgICAgICAgICAgIG1fb2VzVGV4dHVyZUZsb2F0ID0gc3RkOjptYWtl
X3VuaXF1ZTxPRVNUZXh0dXJlRmxvYXQ+KHRoaXMpOworICAgICAgICAgICAgbV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3RleHR1cmVfZmxvYXQiKTsKKyAg
ICAgICAgICAgIG1fb2VzVGV4dHVyZUZsb2F0ID0gc3RkOjptYWtlX3VuaXF1ZTxPRVNUZXh0dXJl
RmxvYXQ+KCp0aGlzKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbV9vZXNUZXh0dXJlRmxv
YXQuZ2V0KCk7CiAgICAgfQogICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJP
RVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiKQotICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIpKSB7CisgICAg
ICAgICYmIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVy
ZV9mbG9hdF9saW5lYXIiKSkgewogICAgICAgICBpZiAoIW1fb2VzVGV4dHVyZUZsb2F0TGluZWFy
KSB7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxl
ZCgiR0xfT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIik7Ci0gICAgICAgICAgICBtX29lc1RleHR1
cmVGbG9hdExpbmVhciA9IHN0ZDo6bWFrZV91bmlxdWU8T0VTVGV4dHVyZUZsb2F0TGluZWFyPih0
aGlzKTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJs
ZWQoIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIpOworICAgICAgICAgICAgbV9vZXNUZXh0
dXJlRmxvYXRMaW5lYXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9FU1RleHR1cmVGbG9hdExpbmVhcj4o
KnRoaXMpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX29lc1RleHR1cmVGbG9hdExpbmVh
ci5nZXQoKTsKICAgICB9CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIk9F
U190ZXh0dXJlX2hhbGZfZmxvYXQiKQotICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS0+c3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQiKSkgeworICAgICAgICAm
JiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfaGFs
Zl9mbG9hdCIpKSB7CiAgICAgICAgIGlmICghbV9vZXNUZXh0dXJlSGFsZkZsb2F0KSB7Ci0gICAg
ICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfT0VT
X3RleHR1cmVfaGFsZl9mbG9hdCIpOwotICAgICAgICAgICAgbV9vZXNUZXh0dXJlSGFsZkZsb2F0
ID0gc3RkOjptYWtlX3VuaXF1ZTxPRVNUZXh0dXJlSGFsZkZsb2F0Pih0aGlzKTsKKyAgICAgICAg
ICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX09FU190ZXh0
dXJlX2hhbGZfZmxvYXQiKTsKKyAgICAgICAgICAgIG1fb2VzVGV4dHVyZUhhbGZGbG9hdCA9IHN0
ZDo6bWFrZV91bmlxdWU8T0VTVGV4dHVyZUhhbGZGbG9hdD4oKnRoaXMpOwogICAgICAgICB9CiAg
ICAgICAgIHJldHVybiBtX29lc1RleHR1cmVIYWxmRmxvYXQuZ2V0KCk7CiAgICAgfQogICAgIGlm
IChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xp
bmVhciIpCi0gICAgICAgICYmIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygi
R0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKSkgeworICAgICAgICAmJiBtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9s
aW5lYXIiKSkgewogICAgICAgICBpZiAoIW1fb2VzVGV4dHVyZUhhbGZGbG9hdExpbmVhcikgewot
ICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdM
X09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIik7Ci0gICAgICAgICAgICBtX29lc1RleHR1
cmVIYWxmRmxvYXRMaW5lYXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9FU1RleHR1cmVIYWxmRmxvYXRM
aW5lYXI+KHRoaXMpOworICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5z
dXJlRW5hYmxlZCgiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKTsKKyAgICAgICAg
ICAgIG1fb2VzVGV4dHVyZUhhbGZGbG9hdExpbmVhciA9IHN0ZDo6bWFrZV91bmlxdWU8T0VTVGV4
dHVyZUhhbGZGbG9hdExpbmVhcj4oKnRoaXMpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBt
X29lc1RleHR1cmVIYWxmRmxvYXRMaW5lYXIuZ2V0KCk7CiAgICAgfQogICAgIGlmIChlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKG5hbWUsICJXRUJHTF9sb3NlX2NvbnRleHQiKSkgewogICAgICAgICBp
ZiAoIW1fd2ViZ2xMb3NlQ29udGV4dCkKLSAgICAgICAgICAgIG1fd2ViZ2xMb3NlQ29udGV4dCA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xMb3NlQ29udGV4dD4odGhpcyk7CisgICAgICAgICAgICBt
X3dlYmdsTG9zZUNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMTG9zZUNvbnRleHQ+KCp0
aGlzKTsKICAgICAgICAgcmV0dXJuIG1fd2ViZ2xMb3NlQ29udGV4dC5nZXQoKTsKICAgICB9CiAg
ICAgaWYgKChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJXRUJLSVRfV0VCR0xfY29tcHJl
c3NlZF90ZXh0dXJlX2F0YyIpKQotICAgICAgICAmJiBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRD
OjpzdXBwb3J0ZWQodGhpcykpIHsKKyAgICAgICAgJiYgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFU
Qzo6c3VwcG9ydGVkKCp0aGlzKSkgewogICAgICAgICBpZiAoIW1fd2ViZ2xDb21wcmVzc2VkVGV4
dHVyZUFUQykKLSAgICAgICAgICAgIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZUFUQyA9IHN0ZDo6
bWFrZV91bmlxdWU8V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQz4odGhpcyk7CisgICAgICAgICAg
ICBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBVEMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVBVEM+KCp0aGlzKTsKICAgICAgICAgcmV0dXJuIG1fd2ViZ2xDb21wcmVz
c2VkVGV4dHVyZUFUQy5nZXQoKTsKICAgICB9CiAgICAgaWYgKChlcXVhbElnbm9yaW5nQVNDSUlD
YXNlKG5hbWUsICJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIikpCi0gICAg
ICAgICYmIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVkKHRoaXMpKSB7Cisg
ICAgICAgICYmIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVkKCp0aGlzKSkg
ewogICAgICAgICBpZiAoIW1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVBWUlRDKQotICAgICAgICAg
ICAgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUFZSVEMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVQVlJUQz4odGhpcyk7CisgICAgICAgICAgICBtX3dlYmdsQ29tcHJl
c3NlZFRleHR1cmVQVlJUQyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVBWUlRDPigqdGhpcyk7CiAgICAgICAgIHJldHVybiBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVQ
VlJUQy5nZXQoKTsKICAgICB9CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwg
IldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIikKLSAgICAgICAgJiYgV2ViR0xDb21wcmVz
c2VkVGV4dHVyZVMzVEM6OnN1cHBvcnRlZCh0aGlzKSkgeworICAgICAgICAmJiBXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlUzNUQzo6c3VwcG9ydGVkKCp0aGlzKSkgewogICAgICAgICBpZiAoIW1fd2Vi
Z2xDb21wcmVzc2VkVGV4dHVyZVMzVEMpCi0gICAgICAgICAgICBtX3dlYmdsQ29tcHJlc3NlZFRl
eHR1cmVTM1RDID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQz4o
dGhpcyk7CisgICAgICAgICAgICBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVTM1RDID0gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQz4oKnRoaXMpOwogICAgICAgICBy
ZXR1cm4gbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUzNUQy5nZXQoKTsKICAgICB9CiAgICAgaWYg
KGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIldFQkdMX2RlcHRoX3RleHR1cmUiKQotICAg
ICAgICAmJiBXZWJHTERlcHRoVGV4dHVyZTo6c3VwcG9ydGVkKGdyYXBoaWNzQ29udGV4dDNEKCkp
KSB7CisgICAgICAgICYmIFdlYkdMRGVwdGhUZXh0dXJlOjpzdXBwb3J0ZWQoKmdyYXBoaWNzQ29u
dGV4dDNEKCkpKSB7CiAgICAgICAgIGlmICghbV93ZWJnbERlcHRoVGV4dHVyZSkgewotICAgICAg
ICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX0NIUk9N
SVVNX2RlcHRoX3RleHR1cmUiKTsKLSAgICAgICAgICAgIG1fd2ViZ2xEZXB0aFRleHR1cmUgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdlYkdMRGVwdGhUZXh0dXJlPih0aGlzKTsKKyAgICAgICAgICAgIG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0NIUk9NSVVNX2RlcHRo
X3RleHR1cmUiKTsKKyAgICAgICAgICAgIG1fd2ViZ2xEZXB0aFRleHR1cmUgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYkdMRGVwdGhUZXh0dXJlPigqdGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgcmV0
dXJuIG1fd2ViZ2xEZXB0aFRleHR1cmUuZ2V0KCk7CiAgICAgfQogICAgIGlmIChlcXVhbElnbm9y
aW5nQVNDSUlDYXNlKG5hbWUsICJXRUJHTF9kZWJ1Z19yZW5kZXJlcl9pbmZvIikpIHsKICAgICAg
ICAgaWYgKCFtX3dlYmdsRGVidWdSZW5kZXJlckluZm8pCi0gICAgICAgICAgICBtX3dlYmdsRGVi
dWdSZW5kZXJlckluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMRGVidWdSZW5kZXJlckluZm8+
KHRoaXMpOworICAgICAgICAgICAgbV93ZWJnbERlYnVnUmVuZGVyZXJJbmZvID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJHTERlYnVnUmVuZGVyZXJJbmZvPigqdGhpcyk7CiAgICAgICAgIHJldHVybiBt
X3dlYmdsRGVidWdSZW5kZXJlckluZm8uZ2V0KCk7CiAgICAgfQogICAgIGlmIChlcXVhbElnbm9y
aW5nQVNDSUlDYXNlKG5hbWUsICJXRUJHTF9kZWJ1Z19zaGFkZXJzIikKLSAgICAgICAgJiYgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9BTkdMRV90cmFuc2xhdGVkX3No
YWRlcl9zb3VyY2UiKSkgeworICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5z
dXBwb3J0cygiR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIikpIHsKICAgICAgICAg
aWYgKCFtX3dlYmdsRGVidWdTaGFkZXJzKQotICAgICAgICAgICAgbV93ZWJnbERlYnVnU2hhZGVy
cyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xEZWJ1Z1NoYWRlcnM+KHRoaXMpOworICAgICAgICAg
ICAgbV93ZWJnbERlYnVnU2hhZGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xEZWJ1Z1NoYWRl
cnM+KCp0aGlzKTsKICAgICAgICAgcmV0dXJuIG1fd2ViZ2xEZWJ1Z1NoYWRlcnMuZ2V0KCk7CiAg
ICAgfQogCkBAIC05NDIsMjYgKzk0MiwyNiBAQCBWZWN0b3I8U3RyaW5nPiBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCkKICAgICBpZiAobV9pc1BlbmRpbmdQ
b2xpY3lSZXNvbHV0aW9uKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0gICAgaWYgKG1fY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfZmxvYXQiKSkK
KyAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX09FU190ZXh0
dXJlX2Zsb2F0IikpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU190ZXh0dXJlX2Zsb2F0Iik7
Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3Rl
eHR1cmVfZmxvYXRfbGluZWFyIikpCisgICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiKSkKICAgICAgICAgcmVzdWx0
LmFwcGVuZCgiT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIik7Ci0gICAgaWYgKG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpKQor
ICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3RleHR1
cmVfaGFsZl9mbG9hdCIpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9oYWxm
X2Zsb2F0Iik7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygi
R0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKSkKKyAgICBpZiAobV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFy
IikpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFy
Iik7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfRVhU
X3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIikpCisgICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKSkK
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCS0lUX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ry
b3BpYyIpOwotICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpzdXBwb3J0ZWQodGhp
cykpCisgICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OnN1cHBvcnRlZCgqdGhpcykp
CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVf
YXRjIik7Ci0gICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVkKHRo
aXMpKQorICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBvcnRlZCgqdGhp
cykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1
cmVfcHZydGMiKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBvcnRl
ZCh0aGlzKSkKKyAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBvcnRlZCgq
dGhpcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9z
M3RjIik7Ci0gICAgaWYgKFdlYkdMRGVwdGhUZXh0dXJlOjpzdXBwb3J0ZWQoZ3JhcGhpY3NDb250
ZXh0M0QoKSkpCisgICAgaWYgKFdlYkdMRGVwdGhUZXh0dXJlOjpzdXBwb3J0ZWQoKmdyYXBoaWNz
Q29udGV4dDNEKCkpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9kZXB0aF90ZXh0dXJl
Iik7CiAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfbG9zZV9jb250ZXh0Iik7Ci0gICAgaWYgKG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfQU5HTEVfdHJhbnNsYXRlZF9z
aGFkZXJfc291cmNlIikpCisgICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBv
cnRzKCJHTF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UiKSkKICAgICAgICAgcmVzdWx0
LmFwcGVuZCgiV0VCR0xfZGVidWdfc2hhZGVycyIpOwogICAgIHJlc3VsdC5hcHBlbmQoIldFQkdM
X2RlYnVnX3JlbmRlcmVyX2luZm8iKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xCdWZmZXIuY3BwCmluZGV4IGFhM2E5ZGI0ZmY0OGVlMWIxNjJlZjk0YTViYjMyZmZmNjFiZDU2
MzEuLmRmMTc3MTFkYjBiODllYWQwMzhmNzNjMzFkMjJmZTFlMzJhNWUzY2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAKQEAgLTM0LDE4ICszNCwxOCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxXZWJHTEJ1ZmZlcj4gV2ViR0xCdWZmZXI6OmNy
ZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjdHgpCitSZWY8V2ViR0xCdWZmZXI+IFdl
YkdMQnVmZmVyOjpjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY3R4KQogewogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdMQnVmZmVyKGN0eCkpOwogfQogCi1XZWJHTEJ1ZmZl
cjo6V2ViR0xCdWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY3R4KQorV2ViR0xCdWZm
ZXI6OldlYkdMQnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGN0eCkKICAgICA6IFdl
YkdMU2hhcmVkT2JqZWN0KGN0eCkKICAgICAsIG1fdGFyZ2V0KDApCiAgICAgLCBtX2J5dGVMZW5n
dGgoMCkKICAgICAsIG1fbmV4dEF2YWlsYWJsZUNhY2hlRW50cnkoMCkKIHsKLSAgICBzZXRPYmpl
Y3QoY3R4LT5ncmFwaGljc0NvbnRleHQzRCgpLT5jcmVhdGVCdWZmZXIoKSk7CisgICAgc2V0T2Jq
ZWN0KGN0eC5ncmFwaGljc0NvbnRleHQzRCgpLT5jcmVhdGVCdWZmZXIoKSk7CiAgICAgY2xlYXJD
YWNoZWRNYXhJbmRpY2VzKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1
ZmZlci5oCmluZGV4IGE5ZjMzODg4ZTQ5MDEwMzY1OTY2ZWMzMzVlYTA3MWJmNGMyODE2MmYuLjFi
NDE0ZThmYzlhMTM1YTljZWMwYmNkNmM2ZjIyZTA5YzI3NzFkNGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBXZWJHTEJ1
ZmZlciBmaW5hbCA6IHB1YmxpYyBXZWJHTFNoYXJlZE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdmly
dHVhbCB+V2ViR0xCdWZmZXIoKTsKIAotICAgIHN0YXRpYyBSZWY8V2ViR0xCdWZmZXI+IGNyZWF0
ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAgc3RhdGljIFJlZjxXZWJHTEJ1ZmZl
cj4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKIAogICAgIGJvb2wgYXNzb2Np
YXRlQnVmZmVyRGF0YShHQzNEc2l6ZWlwdHIgc2l6ZSk7CiAgICAgYm9vbCBhc3NvY2lhdGVCdWZm
ZXJEYXRhKEpTQzo6QXJyYXlCdWZmZXIqKTsKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAg
IGJvb2wgaGFzRXZlckJlZW5Cb3VuZCgpIGNvbnN0IHsgcmV0dXJuIG9iamVjdCgpICYmIG1fdGFy
Z2V0OyB9CiAKIHByb3RlY3RlZDoKLSAgICBXZWJHTEJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlKik7CisgICAgV2ViR0xCdWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwog
CiAgICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKEdyYXBoaWNzQ29udGV4dDNEKiwgUGxhdGZvcm0z
RE9iamVjdCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5jcHAKaW5kZXggNTBhZDY1NWFhODYzZWQ5
MmNkNmI3MTVjMTMxMzFkZjI2YmQ1ZDI5ZS4uOTYwMjM3NGU3YzE3OWE0YmM3N2EzZjhhNGVjZDk3
MWY4ZTFmOGRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xD
b21wcmVzc2VkVGV4dHVyZUFUQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5jcHAKQEAgLTMzLDEyICszMywxMiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OldlYkdMQ29tcHJl
c3NlZFRleHR1cmVBVEMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29udGV4dCkKK1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVBVEM6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQp
CiB7Ci0gICAgY29udGV4dC0+YWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uczNE
OjpDT01QUkVTU0VEX0FUQ19SR0JfQU1EKTsKLSAgICBjb250ZXh0LT5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfQVRDX1JHQkFfRVhQTElDSVRfQUxQ
SEFfQU1EKTsKLSAgICBjb250ZXh0LT5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNp
b25zM0Q6OkNPTVBSRVNTRURfQVRDX1JHQkFfSU5URVJQT0xBVEVEX0FMUEhBX0FNRCk7CisgICAg
Y29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zM0Q6OkNPTVBSRVNT
RURfQVRDX1JHQl9BTUQpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQo
RXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX0FUQ19SR0JBX0VYUExJQ0lUX0FMUEhBX0FNRCk7Cisg
ICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zM0Q6OkNPTVBS
RVNTRURfQVRDX1JHQkFfSU5URVJQT0xBVEVEX0FMUEhBX0FNRCk7CiB9CiAKIFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVBVEM6On5XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDKCkKQEAgLTUwLDEwICs1
MCwxMCBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBXZWJHTENvbXByZXNzZWRUZXh0
dXJlQVRDOjpnZXROYW1lKCkgY29uc3QKICAgICByZXR1cm4gV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZUFUQ05hbWU7CiB9CiAKLWJvb2wgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6c3VwcG9ydGVk
KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRleHQpCitib29sIFdlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVBVEM6OnN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0
KQogewotICAgIEV4dGVuc2lvbnMzRCogZXh0ZW5zaW9ucyA9IGNvbnRleHQtPmdyYXBoaWNzQ29u
dGV4dDNEKCktPmdldEV4dGVuc2lvbnMoKTsKLSAgICByZXR1cm4gZXh0ZW5zaW9ucy0+c3VwcG9y
dHMoIkdMX0FNRF9jb21wcmVzc2VkX0FUQ190ZXh0dXJlIik7CisgICAgRXh0ZW5zaW9uczNEJiBl
eHRlbnNpb25zID0gY29udGV4dC5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCk7
CisgICAgcmV0dXJuIGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0FNRF9jb21wcmVzc2VkX0FUQ190
ZXh0dXJlIik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaAppbmRleCAy
MTAyZDkwZDVlNGQyZWIyMGQ0MmU2YTIxMTg4ZDU2YTcxMTdjNDg3Li5lNWIwNTYwZDNkMjliMDZm
NWJkMzBhMTNjOGI3MTI1MDU4MWZmMTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5oCkBAIC0zMywxMCArMzMsMTAg
QEAgY2xhc3MgV2ViR0xUZXh0dXJlOwogCiBjbGFzcyBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRD
IGZpbmFsIDogcHVibGljIFdlYkdMRXh0ZW5zaW9uIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBX
ZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAg
ICBleHBsaWNpdCBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDKFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UmKTsKICAgICB2aXJ0dWFsIH5XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDKCk7CiAKLSAg
ICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOworICAg
IHN0YXRpYyBib29sIHN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAKICAg
ICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBW
UlRDLmNwcAppbmRleCA4Y2FhNGM2ODk4NTQ4ZmVkNjAwNzI0ZGJkZGQ4MzRiMzYyOGEwNWMzLi5j
YmU3N2M3ODljNDU3Mjc2ZTdmMTM2Y2QzOTUxZjUzOWRlOTZkYzkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJU
Qy5jcHAKQEAgLTM0LDEzICszNCwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdlYkdM
Q29tcHJlc3NlZFRleHR1cmVQVlJUQzo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRleHQpCitXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZS
VEM6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
JiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKLSAgICBjb250ZXh0
LT5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdC
X1BWUlRDXzRCUFBWMV9JTUcpOwotICAgIGNvbnRleHQtPmFkZENvbXByZXNzZWRUZXh0dXJlRm9y
bWF0KEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfMkJQUFYxX0lNRyk7Ci0gICAg
Y29udGV4dC0+YWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uczNEOjpDT01QUkVT
U0VEX1JHQkFfUFZSVENfNEJQUFYxX0lNRyk7Ci0gICAgY29udGV4dC0+YWRkQ29tcHJlc3NlZFRl
eHR1cmVGb3JtYXQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUFZSVENfMkJQUFYxX0lN
Ryk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zM0Q6
OkNPTVBSRVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUcpOworICAgIGNvbnRleHQuYWRkQ29tcHJl
c3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQ
VjFfSU1HKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lv
bnMzRDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUcpOworICAgIGNvbnRleHQuYWRk
Q29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUFZS
VENfMkJQUFYxX0lNRyk7CiB9CiAKIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6fldlYkdM
Q29tcHJlc3NlZFRleHR1cmVQVlJUQygpCkBAIC01MiwxMCArNTIsMTAgQEAgV2ViR0xFeHRlbnNp
b246OkV4dGVuc2lvbk5hbWUgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpnZXROYW1lKCkg
Y29uc3QKICAgICByZXR1cm4gV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDTmFtZTsKIH0KIAot
Ym9vbCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBvcnRlZChXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlKiBjb250ZXh0KQorYm9vbCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6
OnN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogewotICAgIEV4
dGVuc2lvbnMzRCogZXh0ZW5zaW9ucyA9IGNvbnRleHQtPmdyYXBoaWNzQ29udGV4dDNEKCktPmdl
dEV4dGVuc2lvbnMoKTsKLSAgICByZXR1cm4gZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0lNR190
ZXh0dXJlX2NvbXByZXNzaW9uX3B2cnRjIik7CisgICAgRXh0ZW5zaW9uczNEJiBleHRlbnNpb25z
ID0gY29udGV4dC5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCk7CisgICAgcmV0
dXJuIGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0lNR190ZXh0dXJlX2NvbXByZXNzaW9uX3B2cnRj
Iik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmgKaW5kZXggMDkw
ZGQzMjk3ZWY5MjhlZDNhMWM0OWU2M2I5MDY2NTQwNDUxNjA5Zi4uNTE1ZTZlMTFmZTlmYjNkNmI4
MjkwN2U4YTg3NTNjMTBjZWM0N2FiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmgKQEAgLTMxLDEwICszMSwx
MCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQ
VlJUQyBmaW5hbCA6IHB1YmxpYyBXZWJHTEV4dGVuc2lvbiB7CiBwdWJsaWM6Ci0gICAgZXhwbGlj
aXQgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uq
KTsKKyAgICBleHBsaWNpdCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMoV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwgfldlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJU
QygpOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UqKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSYpOwogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4
dHVyZVMzVEMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZVMzVEMuY3BwCmluZGV4IDQyYmNkMDgxMGM5NGM1YmM1OWMxZjdhYTVlZmQ5MGYyYmVh
ZDI0YWIuLjIwYzkzZTdmNDg4YTEzMGE0Mjk1ZDdiY2EzYTVlMDU3NjE3NDUzZGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RD
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0
dXJlUzNUQy5jcHAKQEAgLTM0LDEzICszNCwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQyhX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjb250ZXh0KQorV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVMzVEM6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRl
eHQtPmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9S
R0JfUzNUQ19EWFQxX0VYVCk7Ci0gICAgY29udGV4dC0+YWRkQ29tcHJlc3NlZFRleHR1cmVGb3Jt
YXQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCk7Ci0gICAgY29u
dGV4dC0+YWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VE
X1JHQkFfUzNUQ19EWFQzX0VYVCk7Ci0gICAgY29udGV4dC0+YWRkQ29tcHJlc3NlZFRleHR1cmVG
b3JtYXQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVCk7CisgICAg
Y29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zM0Q6OkNPTVBSRVNT
RURfUkdCX1MzVENfRFhUMV9FWFQpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVG
b3JtYXQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCk7CisgICAg
Y29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zM0Q6OkNPTVBSRVNT
RURfUkdCQV9TM1RDX0RYVDNfRVhUKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJl
Rm9ybWF0KEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQpOwogfQog
CiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6fldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RD
KCkKQEAgLTUyLDEzICs1MiwxMyBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBXZWJH
TENvbXByZXNzZWRUZXh0dXJlUzNUQzo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDTmFtZTsKIH0KIAotYm9vbCBXZWJHTENvbXByZXNzZWRUZXh0
dXJlUzNUQzo6c3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRleHQpCiti
b29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSYgY29udGV4dCkKIHsKLSAgICBFeHRlbnNpb25zM0QqIGV4dGVuc2lvbnMgPSBj
b250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCk7Ci0gICAgcmV0dXJu
IGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjIikK
LSAgICAgICAgfHwgKGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVz
c2lvbl9keHQxIikKLSAgICAgICAgICAgICYmIGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9DSFJP
TUlVTV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDMiKQotICAgICAgICAgICAgJiYgZXh0ZW5zaW9u
cy0+c3VwcG9ydHMoIkdMX0NIUk9NSVVNX3RleHR1cmVfY29tcHJlc3Npb25fZHh0NSIpKTsKKyAg
ICBFeHRlbnNpb25zM0QmIGV4dGVuc2lvbnMgPSBjb250ZXh0LmdyYXBoaWNzQ29udGV4dDNEKCkt
PmdldEV4dGVuc2lvbnMoKTsKKyAgICByZXR1cm4gZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhU
X3RleHR1cmVfY29tcHJlc3Npb25fczN0YyIpCisgICAgICAgIHx8IChleHRlbnNpb25zLnN1cHBv
cnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIikKKyAgICAgICAgICAgICYmIGV4
dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0NIUk9NSVVNX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MyIp
CisgICAgICAgICAgICAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9DSFJPTUlVTV90ZXh0dXJl
X2NvbXByZXNzaW9uX2R4dDUiKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVT
M1RDLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJl
UzNUQy5oCmluZGV4IGVkM2Q4Zjk4N2NhNzkzNGJhODcyZDdmZWI2M2RlNTk2NGMwYmUwMzUuLjI1
MWU1OTJmNzFmNDk0NTdjM2FhNzgwMDJiMGQxZTdiZmEyZjc3OWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaApA
QCAtMzMsMTAgKzMzLDEwIEBAIGNsYXNzIFdlYkdMVGV4dHVyZTsKIAogY2xhc3MgV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVMzVEMgZmluYWwgOiBwdWJsaWMgV2ViR0xFeHRlbnNpb24gewogcHVibGlj
OgotICAgIGV4cGxpY2l0IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UqKTsKKyAgICBleHBsaWNpdCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQyhX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVhbCB+V2ViR0xDb21wcmVzc2Vk
VGV4dHVyZVMzVEMoKTsKIAotICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlKik7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmKTsKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJy
aWRlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29u
dGV4dE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRP
YmplY3QuY3BwCmluZGV4IDRmZjEwNzRiMTkyNmJjM2Q0YTFiOTA1ZTJiODFkODdmMGUxMWEyMWIu
LjUyM2U2ZTY0MmQ3NDliNjAyMmYzNzczYTg4ZWRmNGVhMGVjYjliYjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dE9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0T2JqZWN0LmNwcApAQCAtMzMsOSAr
MzMsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdlYkdMQ29udGV4dE9iamVjdDo6V2Vi
R0xDb250ZXh0T2JqZWN0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRleHQpCitXZWJH
TENvbnRleHRPYmplY3Q6OldlYkdMQ29udGV4dE9iamVjdChXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xPYmplY3QoY29udGV4dCkKLSAgICAsIG1fY29udGV4
dChjb250ZXh0KQorICAgICwgbV9jb250ZXh0KCZjb250ZXh0KQogewogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRPYmplY3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dE9iamVjdC5oCmluZGV4IDM4MDg1NWMw
MmNlMmZiMmE2MjBhODY5OTY2NTIyMzE3MmU1NmQ2NjguLmViZTBmYzZjNWY3NjM2MzUyYjM4NmVk
MmEwODBhYWE0YTAxMjFkMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMQ29udGV4dE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMQ29udGV4dE9iamVjdC5oCkBAIC00MCwxNSArNDAsMTUgQEAgcHVibGljOgogCiAgICAgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4
dDsgfQogCi0gICAgYm9vbCB2YWxpZGF0ZShjb25zdCBXZWJHTENvbnRleHRHcm91cCosIGNvbnN0
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRleHQpIGNvbnN0IG92ZXJyaWRlCisgICAg
Ym9vbCB2YWxpZGF0ZShjb25zdCBXZWJHTENvbnRleHRHcm91cCosIGNvbnN0IFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UmIGNvbnRleHQpIGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAgICAgICBy
ZXR1cm4gY29udGV4dCA9PSBtX2NvbnRleHQ7CisgICAgICAgIHJldHVybiAmY29udGV4dCA9PSBt
X2NvbnRleHQ7CiAgICAgfQogCiAgICAgdm9pZCBkZXRhY2hDb250ZXh0KCk7CiAKIHByb3RlY3Rl
ZDoKLSAgICBXZWJHTENvbnRleHRPYmplY3QoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOwor
ICAgIFdlYkdMQ29udGV4dE9iamVjdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAKICAg
ICBib29sIGhhc0dyb3VwT3JDb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnUmVuZGVyZXJJbmZvLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdSZW5kZXJlckluZm8uY3Bw
CmluZGV4IDIwM2E1YzM3N2UwMDZjODMyOTVlYjExZDAxYzc0MmMxMzQzMzNhNzkuLjlkZjdmYmQ1
MWRmNGU1MjJmZjFkNTVlOGE1Y2M3ZDZmNzQzZDlmZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdSZW5kZXJlckluZm8uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdSZW5kZXJlckluZm8uY3BwCkBAIC0zMyw3ICsz
Myw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV2ViR0xEZWJ1Z1JlbmRlcmVySW5mbzo6
V2ViR0xEZWJ1Z1JlbmRlcmVySW5mbyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjb250ZXh0
KQorV2ViR0xEZWJ1Z1JlbmRlcmVySW5mbzo6V2ViR0xEZWJ1Z1JlbmRlcmVySW5mbyhXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4
dCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVi
dWdSZW5kZXJlckluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdS
ZW5kZXJlckluZm8uaAppbmRleCAxNmUzMzNjODk4MTI2Yzk2NmNmMWJlMDc5MGEyZjZlMTc4NzYy
N2VhLi4zZTU4MjJkMjA4YjJjMGFhZTliOTliZTQ5ZWY1MzJmMmI3MGM3NGQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnUmVuZGVyZXJJbmZvLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5oCkBA
IC0zNiw3ICszNiw3IEBAIHB1YmxpYzoKICAgICAgICAgVU5NQVNLRURfUkVOREVSRVJfV0VCR0wg
PSAweDkyNDYKICAgICB9OwogCi0gICAgZXhwbGljaXQgV2ViR0xEZWJ1Z1JlbmRlcmVySW5mbyhX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAgZXhwbGljaXQgV2ViR0xEZWJ1Z1JlbmRl
cmVySW5mbyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVhbCB+V2ViR0xE
ZWJ1Z1JlbmRlcmVySW5mbygpOwogCiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERl
YnVnU2hhZGVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnU2hh
ZGVycy5jcHAKaW5kZXggZmEwNzJmOWIzYmMyMjk1MThjZTM0ZDI3ZWU5NjU1ZWNiYWU4MDhkMi4u
ZWQ0MjgxMzA5OWY2MDUyYmJlZjhlZTkwNmYwOTY5NGUzMWYzMmM3MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmNwcApAQCAtMzUsNyArMzUs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdlYkdMRGVidWdTaGFkZXJzOjpXZWJHTERl
YnVnU2hhZGVycyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjb250ZXh0KQorV2ViR0xEZWJ1
Z1NoYWRlcnM6OldlYkdMRGVidWdTaGFkZXJzKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNv
bnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewogfQpAQCAtNTEsMTEgKzUx
LDExIEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIFdlYkdMRGVidWdTaGFkZXJzOjpn
ZXROYW1lKCkgY29uc3QKIAogU3RyaW5nIFdlYkdMRGVidWdTaGFkZXJzOjpnZXRUcmFuc2xhdGVk
U2hhZGVyU291cmNlKFdlYkdMU2hhZGVyKiBzaGFkZXIpCiB7Ci0gICAgaWYgKG1fY29udGV4dC0+
aXNDb250ZXh0TG9zdCgpKQorICAgIGlmIChtX2NvbnRleHQuaXNDb250ZXh0TG9zdCgpKQogICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgaWYgKCFtX2NvbnRleHQtPnZhbGlkYXRlV2ViR0xP
YmplY3QoImdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UiLCBzaGFkZXIpKQorICAgIGlmICghbV9j
b250ZXh0LnZhbGlkYXRlV2ViR0xPYmplY3QoImdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UiLCBz
aGFkZXIpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLSAgICByZXR1cm4gbV9jb250
ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCktPmdldFRyYW5zbGF0ZWRT
aGFkZXJTb3VyY2VBTkdMRShzaGFkZXItPm9iamVjdCgpKTsKKyAgICByZXR1cm4gbV9jb250ZXh0
LmdyYXBoaWNzQ29udGV4dDNEKCktPmdldEV4dGVuc2lvbnMoKS5nZXRUcmFuc2xhdGVkU2hhZGVy
U291cmNlQU5HTEUoc2hhZGVyLT5vYmplY3QoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFk
ZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5oCmlu
ZGV4IGRlNGJmMDEzNTUwOWYwMTBhMjYxNzFmYTNlZDA3MzRhYTY0MzBkMWUuLjRiOTlmMWFlYWI3
Y2JmZmY0ZmI3YTVmN2Y2N2E0NzQ4ZTgyMDc2MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuaApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBXZWJH
TFNoYWRlcjsKIAogY2xhc3MgV2ViR0xEZWJ1Z1NoYWRlcnMgZmluYWwgOiBwdWJsaWMgV2ViR0xF
eHRlbnNpb24gewogcHVibGljOgotICAgIGV4cGxpY2l0IFdlYkdMRGVidWdTaGFkZXJzKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBleHBsaWNpdCBXZWJHTERlYnVnU2hhZGVycyhX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVhbCB+V2ViR0xEZWJ1Z1NoYWRl
cnMoKTsKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuY3BwCmluZGV4
IDhmZDkwNzkzNWYzYjExY2QwMDUxYjAyMDExY2I1ZmIwNTJiMjJlMjMuLmRmMjNkZmVmMmVjNTk1
NmQ5NDc4YThiNjk2NjAzMmUzZTI2ZTBhYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1XZWJHTERlcHRoVGV4dHVyZTo6V2ViR0xEZXB0aFRleHR1cmUoV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29udGV4dCkKK1dlYkdMRGVwdGhUZXh0dXJlOjpXZWJH
TERlcHRoVGV4dHVyZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDog
V2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKIH0KQEAgLTQ3LDEyICs0NywxMiBAQCBXZWJHTEV4
dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBXZWJHTERlcHRoVGV4dHVyZTo6Z2V0TmFtZSgpIGNvbnN0
CiAgICAgcmV0dXJuIFdlYkdMRGVwdGhUZXh0dXJlTmFtZTsKIH0KIAotYm9vbCBXZWJHTERlcHRo
VGV4dHVyZTo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQorYm9vbCBXZWJH
TERlcHRoVGV4dHVyZTo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dDNEJiBjb250ZXh0KQogewot
ICAgIEV4dGVuc2lvbnMzRCogZXh0ZW5zaW9ucyA9IGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKTsK
LSAgICByZXR1cm4gZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0NIUk9NSVVNX2RlcHRoX3RleHR1
cmUiKQotICAgICAgICB8fCBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfT0VTX2RlcHRoX3RleHR1
cmUiKQotICAgICAgICB8fCBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfQVJCX2RlcHRoX3RleHR1
cmUiKTsKKyAgICBFeHRlbnNpb25zM0QmIGV4dGVuc2lvbnMgPSBjb250ZXh0LmdldEV4dGVuc2lv
bnMoKTsKKyAgICByZXR1cm4gZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfQ0hST01JVU1fZGVwdGhf
dGV4dHVyZSIpCisgICAgICAgIHx8IGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX09FU19kZXB0aF90
ZXh0dXJlIikKKyAgICAgICAgfHwgZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfQVJCX2RlcHRoX3Rl
eHR1cmUiKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmgKaW5kZXggNzFmNTFhYTY2MTlkYTZlZGQz
Y2FlNTk4M2RiOTU0Y2IxNDhlYTI2Mi4uMTZiM2I2MGI0ZjI3OThmYTY2ZDJiNWE4ODFkODEzZDU0
MGJkMWUwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZXB0
aFRleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4
dHVyZS5oCkBAIC0zMSwxMCArMzEsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBX
ZWJHTERlcHRoVGV4dHVyZSBmaW5hbCA6IHB1YmxpYyBXZWJHTEV4dGVuc2lvbiB7CiBwdWJsaWM6
Ci0gICAgZXhwbGljaXQgV2ViR0xEZXB0aFRleHR1cmUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSopOworICAgIGV4cGxpY2l0IFdlYkdMRGVwdGhUZXh0dXJlKFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UmKTsKICAgICB2aXJ0dWFsIH5XZWJHTERlcHRoVGV4dHVyZSgpOwogCi0gICAgc3RhdGlj
IGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dDNEKik7CisgICAgc3RhdGljIGJvb2wgc3Vw
cG9ydGVkKEdyYXBoaWNzQ29udGV4dDNEJik7CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUo
KSBjb25zdCBvdmVycmlkZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMRHJhd0J1ZmZlcnMuY3BwCmluZGV4IDdiYzcyYTZlNTk2MzIxNTFkMmFjNDRhNThlOGU3NWY3
MDk2NTU1MzguLmZlMDE2Y2RkZDUyMmIxMTFlYThiZWRkN2ZkNzViZjI3ZGM4ZGRkYTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwCkBAIC0z
Miw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV2ViR0xEcmF3QnVmZmVyczo6
V2ViR0xEcmF3QnVmZmVycyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjb250ZXh0KQorV2Vi
R0xEcmF3QnVmZmVyczo6V2ViR0xEcmF3QnVmZmVycyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
JiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKIH0KQEAgLTQ2LDUx
ICs0Niw1MSBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBXZWJHTERyYXdCdWZmZXJz
OjpnZXROYW1lKCkgY29uc3QKICAgICByZXR1cm4gV2ViR0xFeHRlbnNpb246OldlYkdMRHJhd0J1
ZmZlcnNOYW1lOwogfQogCi1ib29sIFdlYkdMRHJhd0J1ZmZlcnM6OnN1cHBvcnRlZChXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlKiBjb250ZXh0KQorYm9vbCBXZWJHTERyYXdCdWZmZXJzOjpzdXBw
b3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKIHsKLSAgICBFeHRlbnNp
b25zM0QqIGV4dGVuc2lvbnMgPSBjb250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRl
bnNpb25zKCk7Ci0gICAgcmV0dXJuIGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9FWFRfZHJhd19i
dWZmZXJzIikKKyAgICBFeHRlbnNpb25zM0QmIGV4dGVuc2lvbnMgPSBjb250ZXh0LmdyYXBoaWNz
Q29udGV4dDNEKCktPmdldEV4dGVuc2lvbnMoKTsKKyAgICByZXR1cm4gZXh0ZW5zaW9ucy5zdXBw
b3J0cygiR0xfRVhUX2RyYXdfYnVmZmVycyIpCiAgICAgICAgICYmIHNhdGlzZmllc1dlYkdMUmVx
dWlyZW1lbnRzKGNvbnRleHQpOwogfQogCiB2b2lkIFdlYkdMRHJhd0J1ZmZlcnM6OmRyYXdCdWZm
ZXJzV0VCR0woY29uc3QgVmVjdG9yPEdDM0RlbnVtPiYgYnVmZmVycykKIHsKLSAgICBpZiAobV9j
b250ZXh0LT5pc0NvbnRleHRMb3N0KCkpCisgICAgaWYgKG1fY29udGV4dC5pc0NvbnRleHRMb3N0
KCkpCiAgICAgICAgIHJldHVybjsKICAgICBHQzNEc2l6ZWkgbiA9IGJ1ZmZlcnMuc2l6ZSgpOwog
ICAgIGNvbnN0IEdDM0RlbnVtKiBidWZzID0gYnVmZmVycy5kYXRhKCk7Ci0gICAgaWYgKCFtX2Nv
bnRleHQtPm1fZnJhbWVidWZmZXJCaW5kaW5nKSB7CisgICAgaWYgKCFtX2NvbnRleHQubV9mcmFt
ZWJ1ZmZlckJpbmRpbmcpIHsKICAgICAgICAgaWYgKG4gIT0gMSkgewotICAgICAgICAgICAgbV9j
b250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxV
RSwgImRyYXdCdWZmZXJzV0VCR0wiLCAibW9yZSB0aGFuIG9uZSBidWZmZXIiKTsKKyAgICAgICAg
ICAgIG1fY29udGV4dC5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJ
RF9WQUxVRSwgImRyYXdCdWZmZXJzV0VCR0wiLCAibW9yZSB0aGFuIG9uZSBidWZmZXIiKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAoYnVmc1swXSAhPSBHcmFw
aGljc0NvbnRleHQzRDo6QkFDSyAmJiBidWZzWzBdICE9IEdyYXBoaWNzQ29udGV4dDNEOjpOT05F
KSB7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29u
dGV4dDNEOjpJTlZBTElEX09QRVJBVElPTiwgImRyYXdCdWZmZXJzV0VCR0wiLCAiQkFDSyBvciBO
T05FIik7CisgICAgICAgICAgICBtX2NvbnRleHQuc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OLCAiZHJhd0J1ZmZlcnNXRUJHTCIsICJCQUNLIG9y
IE5PTkUiKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAvLyBCZWNh
dXNlIHRoZSBiYWNrYnVmZmVyIGlzIHNpbXVsYXRlZCBvbiBhbGwgY3VycmVudCBXZWJLaXQgcG9y
dHMsIHdlIG5lZWQgdG8gY2hhbmdlIEJBQ0sgdG8gQ09MT1JfQVRUQUNITUVOVDAuCiAgICAgICAg
IEdDM0RlbnVtIHZhbHVlID0gKGJ1ZnNbMF0gPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkJBQ0spID8g
R3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwIDogR3JhcGhpY3NDb250ZXh0M0Q6
Ok5PTkU7Ci0gICAgICAgIG1fY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+Z2V0RXh0ZW5z
aW9ucygpLT5kcmF3QnVmZmVyc0VYVCgxLCAmdmFsdWUpOwotICAgICAgICBtX2NvbnRleHQtPnNl
dEJhY2tEcmF3QnVmZmVyKGJ1ZnNbMF0pOworICAgICAgICBtX2NvbnRleHQuZ3JhcGhpY3NDb250
ZXh0M0QoKS0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZmZXJzRVhUKDEsICZ2YWx1ZSk7CisgICAg
ICAgIG1fY29udGV4dC5zZXRCYWNrRHJhd0J1ZmZlcihidWZzWzBdKTsKICAgICB9IGVsc2Ugewot
ICAgICAgICBpZiAobiA+IG1fY29udGV4dC0+Z2V0TWF4RHJhd0J1ZmZlcnMoKSkgewotICAgICAg
ICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5W
QUxJRF9WQUxVRSwgImRyYXdCdWZmZXJzV0VCR0wiLCAibW9yZSB0aGFuIG1heCBkcmF3IGJ1ZmZl
cnMiKTsKKyAgICAgICAgaWYgKG4gPiBtX2NvbnRleHQuZ2V0TWF4RHJhd0J1ZmZlcnMoKSkgewor
ICAgICAgICAgICAgbV9jb250ZXh0LnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNE
OjpJTlZBTElEX1ZBTFVFLCAiZHJhd0J1ZmZlcnNXRUJHTCIsICJtb3JlIHRoYW4gbWF4IGRyYXcg
YnVmZmVycyIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGZvciAo
R0MzRHNpemVpIGkgPSAwOyBpIDwgbjsgKytpKSB7CiAgICAgICAgICAgICBpZiAoYnVmc1tpXSAh
PSBHcmFwaGljc0NvbnRleHQzRDo6Tk9ORSAmJiBidWZzW2ldICE9IHN0YXRpY19jYXN0PEdDM0Rl
bnVtPihFeHRlbnNpb25zM0Q6OkNPTE9SX0FUVEFDSE1FTlQwX0VYVCArIGkpKSB7Ci0gICAgICAg
ICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6
SU5WQUxJRF9PUEVSQVRJT04sICJkcmF3QnVmZmVyc1dFQkdMIiwgIkNPTE9SX0FUVEFDSE1FTlRp
X0VYVCBvciBOT05FIik7CisgICAgICAgICAgICAgICAgbV9jb250ZXh0LnN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTiwgImRyYXdCdWZmZXJzV0VC
R0wiLCAiQ09MT1JfQVRUQUNITUVOVGlfRVhUIG9yIE5PTkUiKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgbV9jb250ZXh0LT5tX2Zy
YW1lYnVmZmVyQmluZGluZy0+ZHJhd0J1ZmZlcnMoYnVmZmVycyk7CisgICAgICAgIG1fY29udGV4
dC5tX2ZyYW1lYnVmZmVyQmluZGluZy0+ZHJhd0J1ZmZlcnMoYnVmZmVycyk7CiAgICAgfQogfQog
CiAvLyBzdGF0aWMKLWJvb2wgV2ViR0xEcmF3QnVmZmVyczo6c2F0aXNmaWVzV2ViR0xSZXF1aXJl
bWVudHMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogd2ViZ2xDb250ZXh0KQorYm9vbCBXZWJH
TERyYXdCdWZmZXJzOjpzYXRpc2ZpZXNXZWJHTFJlcXVpcmVtZW50cyhXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlJiB3ZWJnbENvbnRleHQpCiB7Ci0gICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQgPSB3ZWJnbENvbnRleHQtPmdyYXBoaWNzQ29udGV4dDNEKCk7CisgICAgR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQgPSB3ZWJnbENvbnRleHQuZ3JhcGhpY3NDb250ZXh0M0QoKTsKIAogICAg
IC8vIFRoaXMgaXMgY2FsbGVkIGFmdGVyIHdlIG1ha2Ugc3VyZSBHTF9FWFRfZHJhd19idWZmZXJz
IGlzIHN1cHBvcnRlZC4KICAgICBHQzNEaW50IG1heERyYXdCdWZmZXJzID0gMDsKQEAgLTEwNCwx
MSArMTA0LDExIEBAIGJvb2wgV2ViR0xEcmF3QnVmZmVyczo6c2F0aXNmaWVzV2ViR0xSZXF1aXJl
bWVudHMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogd2ViCiAgICAgY29udGV4dC0+YmluZEZy
YW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgZmJvKTsKIAogICAgIGNv
bnN0IHVuc2lnbmVkIGNoYXIgYnVmZmVyWzRdID0geyAwLCAwLCAwLCAwIH07IC8vIHRleHR1cmVz
IGFyZSByZXF1aXJlZCB0byBiZSBpbml0aWFsaXplZCBmb3Igb3RoZXIgcG9ydHMuCi0gICAgYm9v
bCBzdXBwb3J0c0RlcHRoID0gKGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdM
X0NIUk9NSVVNX2RlcHRoX3RleHR1cmUiKQotICAgICAgICB8fCBjb250ZXh0LT5nZXRFeHRlbnNp
b25zKCktPnN1cHBvcnRzKCJHTF9PRVNfZGVwdGhfdGV4dHVyZSIpCi0gICAgICAgIHx8IGNvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX0FSQl9kZXB0aF90ZXh0dXJlIikpOwot
ICAgIGJvb2wgc3VwcG9ydHNEZXB0aFN0ZW5jaWwgPSAoY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LT5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikKLSAgICAgICAgfHwgY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVu
Y2lsIikpOworICAgIGJvb2wgc3VwcG9ydHNEZXB0aCA9IChjb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkuc3VwcG9ydHMoIkdMX0NIUk9NSVVNX2RlcHRoX3RleHR1cmUiKQorICAgICAgICB8fCBjb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX09FU19kZXB0aF90ZXh0dXJlIikKKyAg
ICAgICAgfHwgY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9BUkJfZGVwdGhf
dGV4dHVyZSIpKTsKKyAgICBib29sIHN1cHBvcnRzRGVwdGhTdGVuY2lsID0gKGNvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikKKyAg
ICAgICAgfHwgY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfcGFja2Vk
X2RlcHRoX3N0ZW5jaWwiKSk7CiAgICAgUGxhdGZvcm0zRE9iamVjdCBkZXB0aFN0ZW5jaWwgPSAw
OwogICAgIGlmIChzdXBwb3J0c0RlcHRoU3RlbmNpbCkgewogICAgICAgICBkZXB0aFN0ZW5jaWwg
PSBjb250ZXh0LT5jcmVhdGVUZXh0dXJlKCk7CkBAIC0xNTUsOSArMTU1LDkgQEAgYm9vbCBXZWJH
TERyYXdCdWZmZXJzOjpzYXRpc2ZpZXNXZWJHTFJlcXVpcmVtZW50cyhXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlKiB3ZWIKICAgICAgICAgfQogICAgIH0KIAotICAgIHdlYmdsQ29udGV4dC0+cmVz
dG9yZUN1cnJlbnRGcmFtZWJ1ZmZlcigpOworICAgIHdlYmdsQ29udGV4dC5yZXN0b3JlQ3VycmVu
dEZyYW1lYnVmZmVyKCk7CiAgICAgY29udGV4dC0+ZGVsZXRlRnJhbWVidWZmZXIoZmJvKTsKLSAg
ICB3ZWJnbENvbnRleHQtPnJlc3RvcmVDdXJyZW50VGV4dHVyZTJEKCk7CisgICAgd2ViZ2xDb250
ZXh0LnJlc3RvcmVDdXJyZW50VGV4dHVyZTJEKCk7CiAgICAgaWYgKHN1cHBvcnRzRGVwdGgpCiAg
ICAgICAgIGNvbnRleHQtPmRlbGV0ZVRleHR1cmUoZGVwdGgpOwogICAgIGlmIChzdXBwb3J0c0Rl
cHRoU3RlbmNpbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
RHJhd0J1ZmZlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZl
cnMuaAppbmRleCA0YjNkZTcwNWVkMzM4N2Q4YTBjZTkzZGJlZDA1MzM5NDMyNWNiNDg3Li5mNjlk
ZjlmNjMxNjVhMWEzY2VlMzJlYjE5YzVjY2JjNWY4ODA1NjMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5oCkBAIC0zMSwxNyArMzEsMTcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXZWJHTERyYXdCdWZmZXJzIGZpbmFsIDogcHVibGlj
IFdlYkdMRXh0ZW5zaW9uIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBXZWJHTERyYXdCdWZmZXJz
KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBleHBsaWNpdCBXZWJHTERyYXdCdWZm
ZXJzKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKICAgICB2aXJ0dWFsIH5XZWJHTERyYXdC
dWZmZXJzKCk7CiAKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSopOworICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlJik7CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIHZvaWQgZHJhd0J1ZmZlcnNXRUJHTChjb25zdCBWZWN0b3I8R0MzRGVudW0+JiBidWZm
ZXJzKTsKIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgYm9vbCBzYXRpc2ZpZXNXZWJHTFJlcXVpcmVt
ZW50cyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAgc3RhdGljIGJvb2wgc2F0aXNm
aWVzV2ViR0xSZXF1aXJlbWVudHMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xFeHRlbnNpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xFeHRlbnNpb24uY3BwCmluZGV4IDA5YTYyODgwMWMwMjcyYTA5Mjc2YWQwOGEzNTc3Y2MwODQ3
Y2ZiYzQuLmM5ZjBhNDI1MWM3MGUwMjM1OGRmNGQyNDFjOGNiYjQ3MjQzNzc5MGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5jcHAKQEAgLTMxLDcgKzMx
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XZWJHTEV4dGVuc2lvbjo6V2ViR0xFeHRl
bnNpb24oV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29udGV4dCkKK1dlYkdMRXh0ZW5zaW9u
OjpXZWJHTEV4dGVuc2lvbihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAg
IDogbV9jb250ZXh0KGNvbnRleHQpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xFeHRlbnNpb24uaAppbmRleCBmNDkwNzVjZTI0MDZlMzU1MjE2ODc5ZjdiYWM1MGM4MTg0
YTM3M2EwLi43ZjcwOWI0NDU4MDM3YWVjNzFlNzJhNGQ3MjQ4MzNlOTE5ZTgzZGZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmgKQEAgLTU3LDE2ICs1Nywx
NiBAQCBwdWJsaWM6CiAgICAgICAgIEFOR0xFSW5zdGFuY2VkQXJyYXlzTmFtZSwKICAgICB9Owog
Ci0gICAgdm9pZCByZWYoKSB7IG1fY29udGV4dC0+cmVmKCk7IH0KLSAgICB2b2lkIGRlcmVmKCkg
eyBtX2NvbnRleHQtPmRlcmVmKCk7IH0KLSAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBj
b250ZXh0KCkgeyByZXR1cm4gbV9jb250ZXh0OyB9CisgICAgdm9pZCByZWYoKSB7IG1fY29udGV4
dC5yZWYoKTsgfQorICAgIHZvaWQgZGVyZWYoKSB7IG1fY29udGV4dC5kZXJlZigpOyB9CisgICAg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCgpIHsgcmV0dXJuIG1fY29udGV4dDsg
fQogCiAgICAgdmlydHVhbCB+V2ViR0xFeHRlbnNpb24oKTsKICAgICB2aXJ0dWFsIEV4dGVuc2lv
bk5hbWUgZ2V0TmFtZSgpIGNvbnN0ID0gMDsKIAogcHJvdGVjdGVkOgotICAgIFdlYkdMRXh0ZW5z
aW9uKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKLSAgICBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlKiBtX2NvbnRleHQ7CisgICAgV2ViR0xFeHRlbnNpb24oV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSYpOworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIG1fY29udGV4dDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAKaW5kZXggOTYxZmJhZTgxYmZkNGJiZTYxNDFjYzU0ZjE1
YmM2ODczZWMwYzg4NS4uMmJhNDFiOTZjOTQ3ODM1NDM2OTI4YzYyZTUwN2Y0YThlNTMwZjhkYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAK
QEAgLTI2OSwxNiArMjY5LDE2IEBAIFdlYkdMRnJhbWVidWZmZXI6OldlYkdMQXR0YWNobWVudDo6
fldlYkdMQXR0YWNobWVudCgpCiB7CiB9CiAKLVJlZjxXZWJHTEZyYW1lYnVmZmVyPiBXZWJHTEZy
YW1lYnVmZmVyOjpjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY3R4KQorUmVmPFdl
YkdMRnJhbWVidWZmZXI+IFdlYkdMRnJhbWVidWZmZXI6OmNyZWF0ZShXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlJiBjdHgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR0xGcmFtZWJ1
ZmZlcihjdHgpKTsKIH0KIAotV2ViR0xGcmFtZWJ1ZmZlcjo6V2ViR0xGcmFtZWJ1ZmZlcihXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjdHgpCitXZWJHTEZyYW1lYnVmZmVyOjpXZWJHTEZyYW1l
YnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGN0eCkKICAgICA6IFdlYkdMQ29udGV4
dE9iamVjdChjdHgpCiAgICAgLCBtX2hhc0V2ZXJCZWVuQm91bmQoZmFsc2UpCiB7Ci0gICAgc2V0
T2JqZWN0KGN0eC0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+Y3JlYXRlRnJhbWVidWZmZXIoKSk7Cisg
ICAgc2V0T2JqZWN0KGN0eC5ncmFwaGljc0NvbnRleHQzRCgpLT5jcmVhdGVGcmFtZWJ1ZmZlcigp
KTsKIH0KIAogV2ViR0xGcmFtZWJ1ZmZlcjo6fldlYkdMRnJhbWVidWZmZXIoKQpAQCAtNjI3LDcg
KzYyNyw3IEBAIHZvaWQgV2ViR0xGcmFtZWJ1ZmZlcjo6ZHJhd0J1ZmZlcnNJZk5lY2Vzc2FyeShi
b29sIGZvcmNlKQogICAgICAgICB9CiAgICAgfQogICAgIGlmIChyZXNldCkgewotICAgICAgICBj
b250ZXh0KCktPmdyYXBoaWNzQ29udGV4dDNEKCktPmdldEV4dGVuc2lvbnMoKS0+ZHJhd0J1ZmZl
cnNFWFQoCisgICAgICAgIGNvbnRleHQoKS0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+Z2V0RXh0ZW5z
aW9ucygpLmRyYXdCdWZmZXJzRVhUKAogICAgICAgICAgICAgbV9maWx0ZXJlZERyYXdCdWZmZXJz
LnNpemUoKSwgbV9maWx0ZXJlZERyYXdCdWZmZXJzLmRhdGEoKSk7CiAgICAgfQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oCmluZGV4IDVhYzRmYjdl
OTFlMTIwZGUzZGRiODk5YWRjMWNmODlkNDE3ODkzOWQuLjIwZWQyOWNjMDE2ZDgxZDZjNDc2Mzcx
ZGViMWVhZGM1MDdlODNlODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMRnJhbWVidWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TEZyYW1lYnVmZmVyLmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+
V2ViR0xGcmFtZWJ1ZmZlcigpOwogCi0gICAgc3RhdGljIFJlZjxXZWJHTEZyYW1lYnVmZmVyPiBj
cmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOworICAgIHN0YXRpYyBSZWY8V2ViR0xG
cmFtZWJ1ZmZlcj4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKIAogICAgIHZv
aWQgc2V0QXR0YWNobWVudEZvckJvdW5kRnJhbWVidWZmZXIoR0MzRGVudW0gYXR0YWNobWVudCwg
R0MzRGVudW0gdGV4VGFyZ2V0LCBXZWJHTFRleHR1cmUqLCBHQzNEaW50IGxldmVsKTsKICAgICB2
b2lkIHNldEF0dGFjaG1lbnRGb3JCb3VuZEZyYW1lYnVmZmVyKEdDM0RlbnVtIGF0dGFjaG1lbnQs
IFdlYkdMUmVuZGVyYnVmZmVyKik7CkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICBHQzNE
ZW51bSBnZXREcmF3QnVmZmVyKEdDM0RlbnVtKTsKIAogcHJvdGVjdGVkOgotICAgIFdlYkdMRnJh
bWVidWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOworICAgIFdlYkdMRnJhbWVidWZm
ZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogCiAgICAgdm9pZCBkZWxldGVPYmplY3RJ
bXBsKEdyYXBoaWNzQ29udGV4dDNEKiwgUGxhdGZvcm0zRE9iamVjdCkgb3ZlcnJpZGU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTG9zZUNvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xMb3NlQ29udGV4dC5jcHAKaW5kZXgg
YzY1YWU5MDg4ODg0YmZhZTczMDYyYzM1MjE4MjZlMGM5MTU3YTNjYi4uOWJjYjA0OWI0MDkwOWY1
MTU5YmNjZTJjYTUyOTAyZmIwNmQ5NjI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xMb3NlQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xMb3NlQ29udGV4dC5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1XZWJHTExvc2VDb250ZXh0OjpXZWJHTExvc2VDb250ZXh0KFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRleHQpCitXZWJHTExvc2VDb250ZXh0OjpXZWJHTExvc2VD
b250ZXh0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4
dGVuc2lvbihjb250ZXh0KQogewogfQpAQCAtNDksMTIgKzQ5LDEyIEBAIFdlYkdMRXh0ZW5zaW9u
OjpFeHRlbnNpb25OYW1lIFdlYkdMTG9zZUNvbnRleHQ6OmdldE5hbWUoKSBjb25zdAogCiB2b2lk
IFdlYkdMTG9zZUNvbnRleHQ6Omxvc2VDb250ZXh0KCkKIHsKLSAgICBtX2NvbnRleHQtPmZvcmNl
TG9zdENvbnRleHQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6U3ludGhldGljTG9zdENvbnRl
eHQpOworICAgIG1fY29udGV4dC5mb3JjZUxvc3RDb250ZXh0KFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OlN5bnRoZXRpY0xvc3RDb250ZXh0KTsKIH0KIAogdm9pZCBXZWJHTExvc2VDb250ZXh0
OjpyZXN0b3JlQ29udGV4dCgpCiB7Ci0gICAgbV9jb250ZXh0LT5mb3JjZVJlc3RvcmVDb250ZXh0
KCk7CisgICAgbV9jb250ZXh0LmZvcmNlUmVzdG9yZUNvbnRleHQoKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xMb3NlQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xMb3NlQ29u
dGV4dC5oCmluZGV4IDcyOTFiNzNlNzc5NjMwZmM1ZTVjYzIzMTMzYmEyNzg2N2U5YzhkZGUuLjYz
MGQyNjQ1YWQyZTk1MjMyZDA3ODI2MDI5NmU5MzMwYzE3MjNlYzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTG9zZUNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTExvc2VDb250ZXh0LmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xh
c3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTsKIAogY2xhc3MgV2ViR0xMb3NlQ29udGV4dCBm
aW5hbCA6IHB1YmxpYyBXZWJHTEV4dGVuc2lvbiB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgV2Vi
R0xMb3NlQ29udGV4dChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAgZXhwbGljaXQg
V2ViR0xMb3NlQ29udGV4dChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVh
bCB+V2ViR0xMb3NlQ29udGV4dCgpOwogCiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29u
c3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE9iamVjdC5jcHAK
aW5kZXggYWNkYWI5NzliNGViOTUxZGI1MjdiNjBlZjY4N2E0NGQ3NWI4YjMxYy4uNWQ5MjA5NWZm
ZjE3ODZiMjI1YzI4NWE5NzAzYzY2OTk2MWI1OTc1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMT2JqZWN0LmNwcApAQCAtMzgsNyArMzgsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVdlYkdMT2JqZWN0OjpXZWJHTE9iamVjdChXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlKikKK1dlYkdMT2JqZWN0OjpXZWJHTE9iamVjdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
JikKICAgICA6IG1fb2JqZWN0KDApCiAgICAgLCBtX2F0dGFjaG1lbnRDb3VudCgwKQogICAgICwg
bV9kZWxldGVkKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMT2JqZWN0LmgK
aW5kZXggOWM5MWYxZDMxMDYwNjdlMDg3ZmEwYmQ5YThjNzY0YzA4OWY4YzY0My4uN2IzMjNkNmM5
ZjdhNzhhZjRiMmY0M2U2NTAzZjllMDEyOWVjYzc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTE9iamVjdC5oCkBAIC01NCwxMCArNTQsMTAgQEAgcHVibGljOgogICAgIGJvb2wg
aXNEZWxldGVkKCkgeyByZXR1cm4gbV9kZWxldGVkOyB9CiAKICAgICAvLyBUcnVlIGlmIHRoaXMg
b2JqZWN0IGJlbG9uZ3MgdG8gdGhlIGdyb3VwIG9yIGNvbnRleHQuCi0gICAgdmlydHVhbCBib29s
IHZhbGlkYXRlKGNvbnN0IFdlYkdMQ29udGV4dEdyb3VwKiwgY29uc3QgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSopIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgdmFsaWRhdGUoY29uc3Qg
V2ViR0xDb250ZXh0R3JvdXAqLCBjb25zdCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJikgY29u
c3QgPSAwOwogCiBwcm90ZWN0ZWQ6Ci0gICAgV2ViR0xPYmplY3QoV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSopOworICAgIFdlYkdMT2JqZWN0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsK
IAogICAgIC8vIHNldE9iamVjdCBzaG91bGQgYmUgb25seSBjYWxsZWQgb25jZSByaWdodCBhZnRl
ciBjcmVhdGluZyBhIFdlYkdMT2JqZWN0LgogICAgIHZvaWQgc2V0T2JqZWN0KFBsYXRmb3JtM0RP
YmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQcm9n
cmFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5jcHAKaW5k
ZXggMWI3NTJlNmUwZmRiNGJhNjNjOTNiYzJlNzUzMDYyNTY1YzJkNGNkNy4uNzdhZmU5NGM0NTg1
YTFiYjNlMTc3NmM4OTE1M2I4NGJiODZjMTcwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFByb2dyYW0uY3BwCkBAIC0zNCwxOCArMzQsMTggQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1SZWY8V2ViR0xQcm9ncmFtPiBXZWJHTFByb2dyYW06OmNyZWF0ZShXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlKiBjdHgpCitSZWY8V2ViR0xQcm9ncmFtPiBXZWJHTFByb2dyYW06
OmNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjdHgpCiB7CiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2ViR0xQcm9ncmFtKGN0eCkpOwogfQogCi1XZWJHTFByb2dyYW06OldlYkdM
UHJvZ3JhbShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjdHgpCitXZWJHTFByb2dyYW06Oldl
YkdMUHJvZ3JhbShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjdHgpCiAgICAgOiBXZWJHTFNo
YXJlZE9iamVjdChjdHgpCiAgICAgLCBtX2xpbmtTdGF0dXMoZmFsc2UpCiAgICAgLCBtX2xpbmtD
b3VudCgwKQogICAgICwgbV9pbmZvVmFsaWQodHJ1ZSkKIHsKLSAgICBzZXRPYmplY3QoY3R4LT5n
cmFwaGljc0NvbnRleHQzRCgpLT5jcmVhdGVQcm9ncmFtKCkpOworICAgIHNldE9iamVjdChjdHgu
Z3JhcGhpY3NDb250ZXh0M0QoKS0+Y3JlYXRlUHJvZ3JhbSgpKTsKIH0KIAogV2ViR0xQcm9ncmFt
Ojp+V2ViR0xQcm9ncmFtKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUHJvZ3JhbS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFt
LmgKaW5kZXggZTRiMTA2OTMyNWFiMzkzY2IyYmFlNTI1MDlmNzQ5YzM4MDIzOTRlOC4uNzE3Y2Nl
MTM4YzQyOGM1N2NkZGI3YzU1YzE0Njg1ZmE0NjIyMzJmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xQcm9ncmFtLmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgV2ViR0xQcm9n
cmFtIGZpbmFsIDogcHVibGljIFdlYkdMU2hhcmVkT2JqZWN0IHsKIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5XZWJHTFByb2dyYW0oKTsKIAotICAgIHN0YXRpYyBSZWY8V2ViR0xQcm9ncmFtPiBjcmVh
dGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOworICAgIHN0YXRpYyBSZWY8V2ViR0xQcm9n
cmFtPiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogCiAgICAgdW5zaWduZWQg
bnVtQWN0aXZlQXR0cmliTG9jYXRpb25zKCk7CiAgICAgR0MzRGludCBnZXRBY3RpdmVBdHRyaWJM
b2NhdGlvbihHQzNEdWludCBpbmRleCk7CkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICBi
b29sIGRldGFjaFNoYWRlcihXZWJHTFNoYWRlciopOwogCiBwcm90ZWN0ZWQ6Ci0gICAgV2ViR0xQ
cm9ncmFtKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBXZWJHTFByb2dyYW0oV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogCiAgICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKEdy
YXBoaWNzQ29udGV4dDNEKiwgUGxhdGZvcm0zRE9iamVjdCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUXVlcnkuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xRdWVyeS5jcHAKaW5kZXggYzdmOTQzNDliOTA4M2VlMDhm
N2ViZWJhZjBkNjMwMWJjOGJhMmI0MS4uOGNhNTI1MTE1NzM1MDE1NDVhYzU1ZjVlOTQxZWFhNWE4
MDQzYmVhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xRdWVy
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xRdWVyeS5jcHAKQEAg
LTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAotUmVmPFdlYkdMUXVl
cnk+IFdlYkdMUXVlcnk6OmNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjdHgpCitS
ZWY8V2ViR0xRdWVyeT4gV2ViR0xRdWVyeTo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UmIGN0eCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHTFF1ZXJ5KGN0eCkpOwog
fQpAQCAtNDMsNyArNDMsNyBAQCBXZWJHTFF1ZXJ5Ojp+V2ViR0xRdWVyeSgpCiAgICAgZGVsZXRl
T2JqZWN0KDApOwogfQogCi1XZWJHTFF1ZXJ5OjpXZWJHTFF1ZXJ5KFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UqIGN0eCkKK1dlYkdMUXVlcnk6OldlYkdMUXVlcnkoV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSYgY3R4KQogICAgIDogV2ViR0xTaGFyZWRPYmplY3QoY3R4KQogewogICAgIC8vIEZJ
WE1FOiBDYWxsIGNyZWF0ZVF1ZXJ5IGZyb20gR3JhcGhpY3NDb250ZXh0M0QuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFF1ZXJ5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFF1ZXJ5LmgKaW5kZXggY2U5ODk1Yjg4YTk2MjdlMThmODZiYzZj
NGJjMjFhMmUyOGVlM2Y0Zi4uNDZkYjU5MmE4NWFmNjJmZTgwZjcxZjM3M2JlNTkxNmJjYjljMTg1
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xRdWVyeS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUXVlcnkuaApAQCAtMzMsMTAgKzMz
LDEwIEBAIGNsYXNzIFdlYkdMUXVlcnkgZmluYWwgOiBwdWJsaWMgV2ViR0xTaGFyZWRPYmplY3Qg
ewogcHVibGljOgogICAgIHZpcnR1YWwgfldlYkdMUXVlcnkoKTsKIAotICAgIHN0YXRpYyBSZWY8
V2ViR0xRdWVyeT4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBzdGF0
aWMgUmVmPFdlYkdMUXVlcnk+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAK
IHByb3RlY3RlZDoKLSAgICBXZWJHTFF1ZXJ5KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsK
KyAgICBXZWJHTFF1ZXJ5KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKIAogICAgIHZvaWQg
ZGVsZXRlT2JqZWN0SW1wbChHcmFwaGljc0NvbnRleHQzRCosIFBsYXRmb3JtM0RPYmplY3QpIG92
ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1
ZmZlci5jcHAKaW5kZXggMWQ3OTQyOTBkNmJhMjJkMWM4NDU2MDE1ZjRiMDAyNWQ5ZWM3NGExNC4u
Njk5NmQ5YjFkYTkzMGYzYTJiYWJhMjMwZTQ5MmMwZDc4NGE3Y2QxOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmNwcApAQCAtMzQsNyArMzQs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxXZWJHTFJlbmRlcmJ1ZmZlcj4gV2Vi
R0xSZW5kZXJidWZmZXI6OmNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjdHgpCitS
ZWY8V2ViR0xSZW5kZXJidWZmZXI+IFdlYkdMUmVuZGVyYnVmZmVyOjpjcmVhdGUoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSYgY3R4KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdM
UmVuZGVyYnVmZmVyKGN0eCkpOwogfQpAQCAtNDQsNyArNDQsNyBAQCBXZWJHTFJlbmRlcmJ1ZmZl
cjo6fldlYkdMUmVuZGVyYnVmZmVyKCkKICAgICBkZWxldGVPYmplY3QoMCk7CiB9CiAKLVdlYkdM
UmVuZGVyYnVmZmVyOjpXZWJHTFJlbmRlcmJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
KiBjdHgpCitXZWJHTFJlbmRlcmJ1ZmZlcjo6V2ViR0xSZW5kZXJidWZmZXIoV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSYgY3R4KQogICAgIDogV2ViR0xTaGFyZWRPYmplY3QoY3R4KQogICAgICwg
bV9pbnRlcm5hbEZvcm1hdChHcmFwaGljc0NvbnRleHQzRDo6UkdCQTQpCiAgICAgLCBtX2luaXRp
YWxpemVkKGZhbHNlKQpAQCAtNTMsNyArNTMsNyBAQCBXZWJHTFJlbmRlcmJ1ZmZlcjo6V2ViR0xS
ZW5kZXJidWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY3R4KQogICAgICwgbV9pc1Zh
bGlkKHRydWUpCiAgICAgLCBtX2hhc0V2ZXJCZWVuQm91bmQoZmFsc2UpCiB7Ci0gICAgc2V0T2Jq
ZWN0KGN0eC0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+Y3JlYXRlUmVuZGVyYnVmZmVyKCkpOworICAg
IHNldE9iamVjdChjdHguZ3JhcGhpY3NDb250ZXh0M0QoKS0+Y3JlYXRlUmVuZGVyYnVmZmVyKCkp
OwogfQogCiB2b2lkIFdlYkdMUmVuZGVyYnVmZmVyOjpkZWxldGVPYmplY3RJbXBsKEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0M2QsIFBsYXRmb3JtM0RPYmplY3Qgb2JqZWN0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmgKaW5kZXggMDZiYjMwMjVk
NmQ3M2ZlOGE0YTNjZjhmYjkwNjJjNjI3MmZhMmIyNi4uY2Y2YWQ2ZjY1OTY3OWQ1NzdlNzM0MzYy
ZjNlM2I1M2MyNDRkMmRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJidWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmJ1ZmZlci5oCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIFdlYkdMUmVuZGVyYnVmZmVy
IGZpbmFsIDogcHVibGljIFdlYkdMU2hhcmVkT2JqZWN0IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5XZWJHTFJlbmRlcmJ1ZmZlcigpOwogCi0gICAgc3RhdGljIFJlZjxXZWJHTFJlbmRlcmJ1ZmZl
cj4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBzdGF0aWMgUmVmPFdl
YkdMUmVuZGVyYnVmZmVyPiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogCiAg
ICAgdm9pZCBzZXRJbnRlcm5hbEZvcm1hdChHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCkKICAgICB7
CkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEhhc0V2ZXJCZWVuQm91bmQo
KSB7IG1faGFzRXZlckJlZW5Cb3VuZCA9IHRydWU7IH0KIAogcHJvdGVjdGVkOgotICAgIFdlYkdM
UmVuZGVyYnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBXZWJHTFJlbmRl
cmJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAKICAgICB2b2lkIGRlbGV0ZU9i
amVjdEltcGwoR3JhcGhpY3NDb250ZXh0M0QqLCBQbGF0Zm9ybTNET2JqZWN0KSBvdmVycmlkZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5jcHAKaW5kZXggOTZiODA4ZDQ5ZTA4NmM5ZjViNzg0MGViMGQ2ZWMyYTkyNTE4YzY3YS4u
ZGMxOWE1NTI0MmFjMzE5NjliOTAzNzdlMTUxMDJmODg4ZDViZDQwNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC03
Nyw3ICs3Nyw3IEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
KEhUTUxDYW52YXNFbGVtZW50JiBwYXNzZWRDYW52YXMsIFBhCiAKIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0Ojppbml0aWFsaXplVmVydGV4QXJyYXlPYmplY3RzKCkKIHsKLSAgICBtX2RlZmF1
bHRWZXJ0ZXhBcnJheU9iamVjdCA9IFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OmNyZWF0ZSh0
aGlzLCBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOjpWQU9UeXBlRGVmYXVsdCk7CisgICAgbV9k
ZWZhdWx0VmVydGV4QXJyYXlPYmplY3QgPSBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOjpjcmVh
dGUoKnRoaXMsIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OlZBT1R5cGVEZWZhdWx0KTsKICAg
ICBhZGRDb250ZXh0T2JqZWN0KG1fZGVmYXVsdFZlcnRleEFycmF5T2JqZWN0LmdldCgpKTsKICAg
ICBtX2JvdW5kVmVydGV4QXJyYXlPYmplY3QgPSBtX2RlZmF1bHRWZXJ0ZXhBcnJheU9iamVjdDsK
ICAgICBpZiAoIWlzR0xFUzJDb21wbGlhbnQoKSkKQEAgLTkwLDE1NSArOTAsMTU1IEBAIFdlYkdM
RXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJp
bmcmIG5hbWUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIGlmIChlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKG5hbWUsICJFWFRfYmxlbmRfbWlubWF4IikKLSAgICAgICAgJiYgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9FWFRfYmxlbmRfbWlubWF4Iikp
IHsKKyAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VY
VF9ibGVuZF9taW5tYXgiKSkgewogICAgICAgICBpZiAoIW1fZXh0QmxlbmRNaW5NYXgpIHsKLSAg
ICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKCJHTF9F
WFRfYmxlbmRfbWlubWF4Iik7Ci0gICAgICAgICAgICBtX2V4dEJsZW5kTWluTWF4ID0gc3RkOjpt
YWtlX3VuaXF1ZTxFWFRCbGVuZE1pbk1heD4odGhpcyk7CisgICAgICAgICAgICBtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9FWFRfYmxlbmRfbWlubWF4Iik7Cisg
ICAgICAgICAgICBtX2V4dEJsZW5kTWluTWF4ID0gc3RkOjptYWtlX3VuaXF1ZTxFWFRCbGVuZE1p
bk1heD4oKnRoaXMpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX2V4dEJsZW5kTWluTWF4
LmdldCgpOwogICAgIH0KICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiRVhU
X3NSR0IiKQotICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMo
IkdMX0VYVF9zUkdCIikpIHsKKyAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCku
c3VwcG9ydHMoIkdMX0VYVF9zUkdCIikpIHsKICAgICAgICAgaWYgKCFtX2V4dHNSR0IpIHsKLSAg
ICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKCJHTF9F
WFRfc1JHQiIpOwotICAgICAgICAgICAgbV9leHRzUkdCID0gc3RkOjptYWtlX3VuaXF1ZTxFWFRz
UkdCPih0aGlzKTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3Vy
ZUVuYWJsZWQoIkdMX0VYVF9zUkdCIik7CisgICAgICAgICAgICBtX2V4dHNSR0IgPSBzdGQ6Om1h
a2VfdW5pcXVlPEVYVHNSR0I+KCp0aGlzKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbV9l
eHRzUkdCLmdldCgpOwogICAgIH0KICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1l
LCAiRVhUX2ZyYWdfZGVwdGgiKQotICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS0+c3VwcG9ydHMoIkdMX0VYVF9mcmFnX2RlcHRoIikpIHsKKyAgICAgICAgJiYgbV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF9mcmFnX2RlcHRoIikpIHsKICAgICAg
ICAgaWYgKCFtX2V4dEZyYWdEZXB0aCkgewotICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9mcmFnX2RlcHRoIik7Ci0gICAgICAgICAg
ICBtX2V4dEZyYWdEZXB0aCA9IHN0ZDo6bWFrZV91bmlxdWU8RVhURnJhZ0RlcHRoPih0aGlzKTsK
KyAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdM
X0VYVF9mcmFnX2RlcHRoIik7CisgICAgICAgICAgICBtX2V4dEZyYWdEZXB0aCA9IHN0ZDo6bWFr
ZV91bmlxdWU8RVhURnJhZ0RlcHRoPigqdGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJu
IG1fZXh0RnJhZ0RlcHRoLmdldCgpOwogICAgIH0KICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJ
Q2FzZShuYW1lLCAiRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpCi0gICAgICAgICYmIChtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2Qi
KSB8fCBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX0FSQl9zaGFkZXJf
dGV4dHVyZV9sb2QiKSkpIHsKKyAgICAgICAgJiYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LnN1cHBvcnRzKCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIikgfHwgbV9jb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0FSQl9zaGFkZXJfdGV4dHVyZV9sb2QiKSkpIHsKICAg
ICAgICAgaWYgKCFtX2V4dFNoYWRlclRleHR1cmVMT0QpIHsKLSAgICAgICAgICAgIG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKCJHTF9FWFRfc2hhZGVyX3RleHR1cmVf
bG9kIik7Ci0gICAgICAgICAgICBtX2V4dFNoYWRlclRleHR1cmVMT0QgPSBzdGQ6Om1ha2VfdW5p
cXVlPEVYVFNoYWRlclRleHR1cmVMT0Q+KHRoaXMpOworICAgICAgICAgICAgbV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIp
OworICAgICAgICAgICAgbV9leHRTaGFkZXJUZXh0dXJlTE9EID0gc3RkOjptYWtlX3VuaXF1ZTxF
WFRTaGFkZXJUZXh0dXJlTE9EPigqdGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1f
ZXh0U2hhZGVyVGV4dHVyZUxPRC5nZXQoKTsKICAgICB9CiAgICAgaWYgKChlcXVhbElnbm9yaW5n
QVNDSUlDYXNlKG5hbWUsICJFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKSB8fCBlcXVh
bElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJXRUJLSVRfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNv
dHJvcGljIikpCi0gICAgICAgICYmIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0
cygiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIikpIHsKKyAgICAgICAgJiYgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9h
bmlzb3Ryb3BpYyIpKSB7CiAgICAgICAgIGlmICghbV9leHRUZXh0dXJlRmlsdGVyQW5pc290cm9w
aWMpIHsKLSAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFi
bGVkKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKTsKLSAgICAgICAgICAgIG1f
ZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljID0gc3RkOjptYWtlX3VuaXF1ZTxFWFRUZXh0dXJl
RmlsdGVyQW5pc290cm9waWM+KHRoaXMpOworICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGlj
Iik7CisgICAgICAgICAgICBtX2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYyA9IHN0ZDo6bWFr
ZV91bmlxdWU8RVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljPigqdGhpcyk7CiAgICAgICAgIH0K
ICAgICAgICAgcmV0dXJuIG1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmdldCgpOwogICAg
IH0KICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiT0VTX3N0YW5kYXJkX2Rl
cml2YXRpdmVzIikKLSAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBv
cnRzKCJHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiKSkgeworICAgICAgICAmJiBtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVz
IikpIHsKICAgICAgICAgaWYgKCFtX29lc1N0YW5kYXJkRGVyaXZhdGl2ZXMpIHsKLSAgICAgICAg
ICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKCJHTF9PRVNfc3Rh
bmRhcmRfZGVyaXZhdGl2ZXMiKTsKLSAgICAgICAgICAgIG1fb2VzU3RhbmRhcmREZXJpdmF0aXZl
cyA9IHN0ZDo6bWFrZV91bmlxdWU8T0VTU3RhbmRhcmREZXJpdmF0aXZlcz4odGhpcyk7CisgICAg
ICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9PRVNf
c3RhbmRhcmRfZGVyaXZhdGl2ZXMiKTsKKyAgICAgICAgICAgIG1fb2VzU3RhbmRhcmREZXJpdmF0
aXZlcyA9IHN0ZDo6bWFrZV91bmlxdWU8T0VTU3RhbmRhcmREZXJpdmF0aXZlcz4oKnRoaXMpOwog
ICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX29lc1N0YW5kYXJkRGVyaXZhdGl2ZXMuZ2V0KCk7
CiAgICAgfQogICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJPRVNfdGV4dHVy
ZV9mbG9hdCIpCi0gICAgICAgICYmIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0
cygiR0xfT0VTX3RleHR1cmVfZmxvYXQiKSkgeworICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfZmxvYXQiKSkgewogICAgICAgICBp
ZiAoIW1fb2VzVGV4dHVyZUZsb2F0KSB7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3RleHR1cmVfZmxvYXQiKTsKLSAgICAgICAg
ICAgIG1fb2VzVGV4dHVyZUZsb2F0ID0gc3RkOjptYWtlX3VuaXF1ZTxPRVNUZXh0dXJlRmxvYXQ+
KHRoaXMpOworICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5h
YmxlZCgiR0xfT0VTX3RleHR1cmVfZmxvYXQiKTsKKyAgICAgICAgICAgIG1fb2VzVGV4dHVyZUZs
b2F0ID0gc3RkOjptYWtlX3VuaXF1ZTxPRVNUZXh0dXJlRmxvYXQ+KCp0aGlzKTsKICAgICAgICAg
fQogICAgICAgICByZXR1cm4gbV9vZXNUZXh0dXJlRmxvYXQuZ2V0KCk7CiAgICAgfQogICAgIGlm
IChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIi
KQotICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09F
U190ZXh0dXJlX2Zsb2F0X2xpbmVhciIpKSB7CisgICAgICAgICYmIG1fY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiKSkgewogICAg
ICAgICBpZiAoIW1fb2VzVGV4dHVyZUZsb2F0TGluZWFyKSB7Ci0gICAgICAgICAgICBtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3RleHR1cmVfZmxvYXRf
bGluZWFyIik7Ci0gICAgICAgICAgICBtX29lc1RleHR1cmVGbG9hdExpbmVhciA9IHN0ZDo6bWFr
ZV91bmlxdWU8T0VTVGV4dHVyZUZsb2F0TGluZWFyPih0aGlzKTsKKyAgICAgICAgICAgIG1fY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX09FU190ZXh0dXJlX2Zsb2F0
X2xpbmVhciIpOworICAgICAgICAgICAgbV9vZXNUZXh0dXJlRmxvYXRMaW5lYXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPE9FU1RleHR1cmVGbG9hdExpbmVhcj4oKnRoaXMpOwogICAgICAgICB9CiAgICAg
ICAgIHJldHVybiBtX29lc1RleHR1cmVGbG9hdExpbmVhci5nZXQoKTsKICAgICB9CiAgICAgaWYg
KGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQiKQot
ICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU190
ZXh0dXJlX2hhbGZfZmxvYXQiKSkgeworICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpKSB7CiAgICAgICAgIGlm
ICghbV9vZXNUZXh0dXJlSGFsZkZsb2F0KSB7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpOwot
ICAgICAgICAgICAgbV9vZXNUZXh0dXJlSGFsZkZsb2F0ID0gc3RkOjptYWtlX3VuaXF1ZTxPRVNU
ZXh0dXJlSGFsZkZsb2F0Pih0aGlzKTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQiKTsKKyAgICAg
ICAgICAgIG1fb2VzVGV4dHVyZUhhbGZGbG9hdCA9IHN0ZDo6bWFrZV91bmlxdWU8T0VTVGV4dHVy
ZUhhbGZGbG9hdD4oKnRoaXMpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX29lc1RleHR1
cmVIYWxmRmxvYXQuZ2V0KCk7CiAgICAgfQogICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNl
KG5hbWUsICJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpCi0gICAgICAgICYmIG1fY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9h
dF9saW5lYXIiKSkgeworICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBw
b3J0cygiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKSkgewogICAgICAgICBpZiAo
IW1fb2VzVGV4dHVyZUhhbGZGbG9hdExpbmVhcikgewotICAgICAgICAgICAgbV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRf
bGluZWFyIik7Ci0gICAgICAgICAgICBtX29lc1RleHR1cmVIYWxmRmxvYXRMaW5lYXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPE9FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXI+KHRoaXMpOworICAgICAgICAg
ICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3RleHR1
cmVfaGFsZl9mbG9hdF9saW5lYXIiKTsKKyAgICAgICAgICAgIG1fb2VzVGV4dHVyZUhhbGZGbG9h
dExpbmVhciA9IHN0ZDo6bWFrZV91bmlxdWU8T0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhcj4oKnRo
aXMpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX29lc1RleHR1cmVIYWxmRmxvYXRMaW5l
YXIuZ2V0KCk7CiAgICAgfQogICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJP
RVNfdmVydGV4X2FycmF5X29iamVjdCIpCi0gICAgICAgICYmIG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKSkgeworICAgICAg
ICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3ZlcnRleF9h
cnJheV9vYmplY3QiKSkgewogICAgICAgICBpZiAoIW1fb2VzVmVydGV4QXJyYXlPYmplY3QpIHsK
LSAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKCJH
TF9PRVNfdmVydGV4X2FycmF5X29iamVjdCIpOworICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKTsK
ICAgICAgICAgICAgIG1fb2VzVmVydGV4QXJyYXlPYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPE9F
U1ZlcnRleEFycmF5T2JqZWN0PigqdGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1f
b2VzVmVydGV4QXJyYXlPYmplY3QuZ2V0KCk7CiAgICAgfQogICAgIGlmIChlcXVhbElnbm9yaW5n
QVNDSUlDYXNlKG5hbWUsICJPRVNfZWxlbWVudF9pbmRleF91aW50IikKLSAgICAgICAgJiYgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfZWxlbWVudF9pbmRleF91
aW50IikpIHsKKyAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMo
IkdMX09FU19lbGVtZW50X2luZGV4X3VpbnQiKSkgewogICAgICAgICBpZiAoIW1fb2VzRWxlbWVu
dEluZGV4VWludCkgewotICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVu
c3VyZUVuYWJsZWQoIkdMX09FU19lbGVtZW50X2luZGV4X3VpbnQiKTsKLSAgICAgICAgICAgIG1f
b2VzRWxlbWVudEluZGV4VWludCA9IHN0ZDo6bWFrZV91bmlxdWU8T0VTRWxlbWVudEluZGV4VWlu
dD4odGhpcyk7CisgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVF
bmFibGVkKCJHTF9PRVNfZWxlbWVudF9pbmRleF91aW50Iik7CisgICAgICAgICAgICBtX29lc0Vs
ZW1lbnRJbmRleFVpbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9FU0VsZW1lbnRJbmRleFVpbnQ+KCp0
aGlzKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbV9vZXNFbGVtZW50SW5kZXhVaW50Lmdl
dCgpOwogICAgIH0KICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiV0VCR0xf
bG9zZV9jb250ZXh0IikpIHsKICAgICAgICAgaWYgKCFtX3dlYmdsTG9zZUNvbnRleHQpCi0gICAg
ICAgICAgICBtX3dlYmdsTG9zZUNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMTG9zZUNv
bnRleHQ+KHRoaXMpOworICAgICAgICAgICAgbV93ZWJnbExvc2VDb250ZXh0ID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJHTExvc2VDb250ZXh0PigqdGhpcyk7CiAgICAgICAgIHJldHVybiBtX3dlYmds
TG9zZUNvbnRleHQuZ2V0KCk7CiAgICAgfQogICAgIGlmICgoZXF1YWxJZ25vcmluZ0FTQ0lJQ2Fz
ZShuYW1lLCAiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9hdGMiKSkKLSAgICAgICAg
JiYgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6c3VwcG9ydGVkKHRoaXMpKSB7CisgICAgICAg
ICYmIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OnN1cHBvcnRlZCgqdGhpcykpIHsKICAgICAg
ICAgaWYgKCFtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBVEMpCi0gICAgICAgICAgICBtX3dlYmds
Q29tcHJlc3NlZFRleHR1cmVBVEMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVBVEM+KHRoaXMpOworICAgICAgICAgICAgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlQVRD
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDPigqdGhpcyk7CiAg
ICAgICAgIHJldHVybiBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBVEMuZ2V0KCk7CiAgICAgfQog
ICAgIGlmICgoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiV0VCS0lUX1dFQkdMX2NvbXBy
ZXNzZWRfdGV4dHVyZV9wdnJ0YyIpKQotICAgICAgICAmJiBXZWJHTENvbXByZXNzZWRUZXh0dXJl
UFZSVEM6OnN1cHBvcnRlZCh0aGlzKSkgeworICAgICAgICAmJiBXZWJHTENvbXByZXNzZWRUZXh0
dXJlUFZSVEM6OnN1cHBvcnRlZCgqdGhpcykpIHsKICAgICAgICAgaWYgKCFtX3dlYmdsQ29tcHJl
c3NlZFRleHR1cmVQVlJUQykKLSAgICAgICAgICAgIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVBW
UlRDID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM+KHRoaXMp
OworICAgICAgICAgICAgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUFZSVEMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQz4oKnRoaXMpOwogICAgICAgICByZXR1
cm4gbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUFZSVEMuZ2V0KCk7CiAgICAgfQogICAgIGlmIChl
cXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0
YyIpCi0gICAgICAgICYmIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQodGhp
cykpIHsKKyAgICAgICAgJiYgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBvcnRlZCgq
dGhpcykpIHsKICAgICAgICAgaWYgKCFtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVTM1RDKQotICAg
ICAgICAgICAgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUzNUQyA9IHN0ZDo6bWFrZV91bmlxdWU8
V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM+KHRoaXMpOworICAgICAgICAgICAgbV93ZWJnbENv
bXByZXNzZWRUZXh0dXJlUzNUQyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xDb21wcmVzc2VkVGV4
dHVyZVMzVEM+KCp0aGlzKTsKICAgICAgICAgcmV0dXJuIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVy
ZVMzVEMuZ2V0KCk7CiAgICAgfQogICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUs
ICJXRUJHTF9kZXB0aF90ZXh0dXJlIikKLSAgICAgICAgJiYgV2ViR0xEZXB0aFRleHR1cmU6OnN1
cHBvcnRlZChncmFwaGljc0NvbnRleHQzRCgpKSkgeworICAgICAgICAmJiBXZWJHTERlcHRoVGV4
dHVyZTo6c3VwcG9ydGVkKCpncmFwaGljc0NvbnRleHQzRCgpKSkgewogICAgICAgICBpZiAoIW1f
d2ViZ2xEZXB0aFRleHR1cmUpIHsKLSAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLT5lbnN1cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9kZXB0aF90ZXh0dXJlIik7Ci0gICAgICAg
ICAgICBtX3dlYmdsRGVwdGhUZXh0dXJlID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTERlcHRoVGV4
dHVyZT4odGhpcyk7CisgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1
cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9kZXB0aF90ZXh0dXJlIik7CisgICAgICAgICAgICBtX3dl
YmdsRGVwdGhUZXh0dXJlID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTERlcHRoVGV4dHVyZT4oKnRo
aXMpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX3dlYmdsRGVwdGhUZXh0dXJlLmdldCgp
OwogICAgIH0KICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiV0VCR0xfZHJh
d19idWZmZXJzIikgJiYgc3VwcG9ydHNEcmF3QnVmZmVycygpKSB7CiAgICAgICAgIGlmICghbV93
ZWJnbERyYXdCdWZmZXJzKSB7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS0+ZW5zdXJlRW5hYmxlZCgiR0xfRVhUX2RyYXdfYnVmZmVycyIpOwotICAgICAgICAgICAgbV93
ZWJnbERyYXdCdWZmZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTERyYXdCdWZmZXJzPih0aGlz
KTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQo
IkdMX0VYVF9kcmF3X2J1ZmZlcnMiKTsKKyAgICAgICAgICAgIG1fd2ViZ2xEcmF3QnVmZmVycyA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xEcmF3QnVmZmVycz4oKnRoaXMpOwogICAgICAgICB9CiAg
ICAgICAgIHJldHVybiBtX3dlYmdsRHJhd0J1ZmZlcnMuZ2V0KCk7CiAgICAgfQotICAgIGlmIChl
cXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJBTkdMRV9pbnN0YW5jZWRfYXJyYXlzIikgJiYg
QU5HTEVJbnN0YW5jZWRBcnJheXM6OnN1cHBvcnRlZCh0aGlzKSkgeworICAgIGlmIChlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKG5hbWUsICJBTkdMRV9pbnN0YW5jZWRfYXJyYXlzIikgJiYgQU5HTEVJ
bnN0YW5jZWRBcnJheXM6OnN1cHBvcnRlZCgqdGhpcykpIHsKICAgICAgICAgaWYgKCFtX2FuZ2xl
SW5zdGFuY2VkQXJyYXlzKSB7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS0+ZW5zdXJlRW5hYmxlZCgiR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpOwotICAgICAgICAg
ICAgbV9hbmdsZUluc3RhbmNlZEFycmF5cyA9IHN0ZDo6bWFrZV91bmlxdWU8QU5HTEVJbnN0YW5j
ZWRBcnJheXM+KHRoaXMpOworICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCku
ZW5zdXJlRW5hYmxlZCgiR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpOworICAgICAgICAgICAg
bV9hbmdsZUluc3RhbmNlZEFycmF5cyA9IHN0ZDo6bWFrZV91bmlxdWU8QU5HTEVJbnN0YW5jZWRB
cnJheXM+KCp0aGlzKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbV9hbmdsZUluc3RhbmNl
ZEFycmF5cy5nZXQoKTsKICAgICB9CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFt
ZSwgIldFQkdMX2RlYnVnX3JlbmRlcmVyX2luZm8iKSkgewogICAgICAgICBpZiAoIW1fd2ViZ2xE
ZWJ1Z1JlbmRlcmVySW5mbykKLSAgICAgICAgICAgIG1fd2ViZ2xEZWJ1Z1JlbmRlcmVySW5mbyA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xEZWJ1Z1JlbmRlcmVySW5mbz4odGhpcyk7CisgICAgICAg
ICAgICBtX3dlYmdsRGVidWdSZW5kZXJlckluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMRGVi
dWdSZW5kZXJlckluZm8+KCp0aGlzKTsKICAgICAgICAgcmV0dXJuIG1fd2ViZ2xEZWJ1Z1JlbmRl
cmVySW5mby5nZXQoKTsKICAgICB9CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFt
ZSwgIldFQkdMX2RlYnVnX3NoYWRlcnMiKQotICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS0+c3VwcG9ydHMoIkdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSIpKSB7
CisgICAgICAgICYmIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9BTkdM
RV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UiKSkgewogICAgICAgICBpZiAoIW1fd2ViZ2xEZWJ1
Z1NoYWRlcnMpCi0gICAgICAgICAgICBtX3dlYmdsRGVidWdTaGFkZXJzID0gc3RkOjptYWtlX3Vu
aXF1ZTxXZWJHTERlYnVnU2hhZGVycz4odGhpcyk7CisgICAgICAgICAgICBtX3dlYmdsRGVidWdT
aGFkZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTERlYnVnU2hhZGVycz4oKnRoaXMpOwogICAg
ICAgICByZXR1cm4gbV93ZWJnbERlYnVnU2hhZGVycy5nZXQoKTsKICAgICB9CiAKQEAgLTI1Miw0
NCArMjUyLDQ0IEBAIFZlY3RvcjxTdHJpbmc+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3Vw
cG9ydGVkRXh0ZW5zaW9ucygpCiAgICAgaWYgKG1faXNQZW5kaW5nUG9saWN5UmVzb2x1dGlvbikK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCktPnN1cHBvcnRzKCJHTF9FWFRfYmxlbmRfbWlubWF4IikpCisgICAgaWYgKG1fY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9FWFRfYmxlbmRfbWlubWF4IikpCiAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoIkVYVF9ibGVuZF9taW5tYXgiKTsKLSAgICBpZiAobV9jb250
ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9FWFRfc1JHQiIpKQorICAgIGlmICht
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfRVhUX3NSR0IiKSkKICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgiRVhUX3NSR0IiKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCktPnN1cHBvcnRzKCJHTF9FWFRfZnJhZ19kZXB0aCIpKQorICAgIGlmIChtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfRVhUX2ZyYWdfZGVwdGgiKSkKICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgiRVhUX2ZyYWdfZGVwdGgiKTsKLSAgICBpZiAobV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCIpKQorICAgIGlm
IChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfZmxv
YXQiKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiT0VTX3RleHR1cmVfZmxvYXQiKTsKLSAgICBp
ZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9m
bG9hdF9saW5lYXIiKSkKKyAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9y
dHMoIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIpKQogICAgICAgICByZXN1bHQuYXBwZW5k
KCJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IikpCisgICAgaWYg
KG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9oYWxm
X2Zsb2F0IikpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQi
KTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNf
dGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpKQorICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKSkKICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgiT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKTsKLSAg
ICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfc3RhbmRh
cmRfZGVyaXZhdGl2ZXMiKSkKKyAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3Vw
cG9ydHMoIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpKQogICAgICAgICByZXN1bHQuYXBw
ZW5kKCJPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRF
eHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIikgfHwgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9BUkJfc2hhZGVyX3RleHR1cmVf
bG9kIikpCisgICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9F
WFRfc2hhZGVyX3RleHR1cmVfbG9kIikgfHwgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3Vw
cG9ydHMoIkdMX0FSQl9zaGFkZXJfdGV4dHVyZV9sb2QiKSkKICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgiRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpOwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS0+c3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpKQor
ICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfRVhUX3RleHR1
cmVfZmlsdGVyX2FuaXNvdHJvcGljIikpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIkVYVF90ZXh0
dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpOwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS0+c3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IikpCisgICAgaWYgKG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfdmVydGV4X2FycmF5X29i
amVjdCIpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdmVydGV4X2FycmF5X29iamVjdCIp
OwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU19l
bGVtZW50X2luZGV4X3VpbnQiKSkKKyAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCku
c3VwcG9ydHMoIkdMX09FU19lbGVtZW50X2luZGV4X3VpbnQiKSkKICAgICAgICAgcmVzdWx0LmFw
cGVuZCgiT0VTX2VsZW1lbnRfaW5kZXhfdWludCIpOwogICAgIHJlc3VsdC5hcHBlbmQoIldFQkdM
X2xvc2VfY29udGV4dCIpOwotICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpzdXBw
b3J0ZWQodGhpcykpCisgICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OnN1cHBvcnRl
ZCgqdGhpcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQktJVF9XRUJHTF9jb21wcmVzc2Vk
X3RleHR1cmVfYXRjIik7Ci0gICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6c3Vw
cG9ydGVkKHRoaXMpKQorICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBv
cnRlZCgqdGhpcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQktJVF9XRUJHTF9jb21wcmVz
c2VkX3RleHR1cmVfcHZydGMiKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6
OnN1cHBvcnRlZCh0aGlzKSkKKyAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1
cHBvcnRlZCgqdGhpcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2NvbXByZXNzZWRf
dGV4dHVyZV9zM3RjIik7Ci0gICAgaWYgKFdlYkdMRGVwdGhUZXh0dXJlOjpzdXBwb3J0ZWQoZ3Jh
cGhpY3NDb250ZXh0M0QoKSkpCisgICAgaWYgKFdlYkdMRGVwdGhUZXh0dXJlOjpzdXBwb3J0ZWQo
KmdyYXBoaWNzQ29udGV4dDNEKCkpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9kZXB0
aF90ZXh0dXJlIik7CiAgICAgaWYgKHN1cHBvcnRzRHJhd0J1ZmZlcnMoKSkKICAgICAgICAgcmVz
dWx0LmFwcGVuZCgiV0VCR0xfZHJhd19idWZmZXJzIik7Ci0gICAgaWYgKEFOR0xFSW5zdGFuY2Vk
QXJyYXlzOjpzdXBwb3J0ZWQodGhpcykpCisgICAgaWYgKEFOR0xFSW5zdGFuY2VkQXJyYXlzOjpz
dXBwb3J0ZWQoKnRoaXMpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJBTkdMRV9pbnN0YW5jZWRf
YXJyYXlzIik7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygi
R0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIikpCisgICAgaWYgKG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3Vy
Y2UiKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfZGVidWdfc2hhZGVycyIpOwogICAg
IHJlc3VsdC5hcHBlbmQoIldFQkdMX2RlYnVnX3JlbmRlcmVyX2luZm8iKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmNwcAppbmRleCAyZWI5MjgxZDJjY2U3NGIxODMyODE1MTdmZTM4NGU0OGUwOGE4MDI4Li40ZDQz
ZTc0ZjYxMTk5M2MyNDk1ZDNmYWQwZWE1ZDI4OTU5ZDhiZGU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApA
QCAtNDMwLDkgKzQzMCw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUoSFRNCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAotICAgIEV4dGVuc2lvbnMzRCogZXh0ZW5zaW9ucyA9IGNvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKTsKLSAgICBpZiAoZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0VY
VF9kZWJ1Z19tYXJrZXIiKSkKLSAgICAgICAgZXh0ZW5zaW9ucy0+cHVzaEdyb3VwTWFya2VyRVhU
KCJXZWJHTFJlbmRlcmluZ0NvbnRleHQiKTsKKyAgICBFeHRlbnNpb25zM0QmIGV4dGVuc2lvbnMg
PSBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCk7CisgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMo
IkdMX0VYVF9kZWJ1Z19tYXJrZXIiKSkKKyAgICAgICAgZXh0ZW5zaW9ucy5wdXNoR3JvdXBNYXJr
ZXJFWFQoIldlYkdMUmVuZGVyaW5nQ29udGV4dCIpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+IHJlbmRlcmluZ0NvbnRleHQgPSBudWxscHRyOwogI2lm
IEVOQUJMRShXRUJHTDIpCkBAIC01NzUsMTYgKzU3NSwxNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnNldHVwRmxhZ3MoKQogICAgICAgICBtX3N5bnRoZXNpemVkRXJyb3JzVG9D
b25zb2xlID0gcGFnZS0+c2V0dGluZ3MoKS53ZWJHTEVycm9yc1RvQ29uc29sZUVuYWJsZWQoKTsK
IAogICAgIG1faXNHTEVTMkNvbXBsaWFudCA9IG1fY29udGV4dC0+aXNHTEVTMkNvbXBsaWFudCgp
OwotICAgIG1faXNFcnJvckdlbmVyYXRlZE9uT3V0T2ZCb3VuZHNBY2Nlc3NlcyA9IG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLT5pc0VuYWJsZWQoIkdMX0NIUk9NSVVNX3N0cmljdF9hdHRyaWJz
Iik7Ci0gICAgbV9pc1Jlc291cmNlU2FmZSA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5p
c0VuYWJsZWQoIkdMX0NIUk9NSVVNX3Jlc291cmNlX3NhZmUiKTsKKyAgICBtX2lzRXJyb3JHZW5l
cmF0ZWRPbk91dE9mQm91bmRzQWNjZXNzZXMgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5p
c0VuYWJsZWQoIkdMX0NIUk9NSVVNX3N0cmljdF9hdHRyaWJzIik7CisgICAgbV9pc1Jlc291cmNl
U2FmZSA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmlzRW5hYmxlZCgiR0xfQ0hST01JVU1f
cmVzb3VyY2Vfc2FmZSIpOwogICAgIGlmIChtX2lzR0xFUzJDb21wbGlhbnQpIHsKLSAgICAgICAg
bV9pc0dMRVMyTlBPVFN0cmljdCA9ICFtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+aXNFbmFi
bGVkKCJHTF9PRVNfdGV4dHVyZV9ucG90Iik7Ci0gICAgICAgIG1faXNEZXB0aFN0ZW5jaWxTdXBw
b3J0ZWQgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+aXNFbmFibGVkKCJHTF9PRVNfcGFj
a2VkX2RlcHRoX3N0ZW5jaWwiKTsKKyAgICAgICAgbV9pc0dMRVMyTlBPVFN0cmljdCA9ICFtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5pc0VuYWJsZWQoIkdMX09FU190ZXh0dXJlX25wb3QiKTsK
KyAgICAgICAgbV9pc0RlcHRoU3RlbmNpbFN1cHBvcnRlZCA9IG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLmlzRW5hYmxlZCgiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CiAgICAgfSBl
bHNlIHsKLSAgICAgICAgbV9pc0dMRVMyTlBPVFN0cmljdCA9ICFtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS0+aXNFbmFibGVkKCJHTF9BUkJfdGV4dHVyZV9ub25fcG93ZXJfb2ZfdHdvIik7Ci0g
ICAgICAgIG1faXNEZXB0aFN0ZW5jaWxTdXBwb3J0ZWQgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS0+aXNFbmFibGVkKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKTsKKyAgICAgICAg
bV9pc0dMRVMyTlBPVFN0cmljdCA9ICFtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5pc0VuYWJs
ZWQoIkdMX0FSQl90ZXh0dXJlX25vbl9wb3dlcl9vZl90d28iKTsKKyAgICAgICAgbV9pc0RlcHRo
U3RlbmNpbFN1cHBvcnRlZCA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmlzRW5hYmxlZCgi
R0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CiAgICAgfQotICAgIG1faXNSb2J1c3RuZXNz
RVhUU3VwcG9ydGVkID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmlzRW5hYmxlZCgiR0xf
RVhUX3JvYnVzdG5lc3MiKTsKKyAgICBtX2lzUm9idXN0bmVzc0VYVFN1cHBvcnRlZCA9IG1fY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmlzRW5hYmxlZCgiR0xfRVhUX3JvYnVzdG5lc3MiKTsKIH0K
IAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjphZGRDb21wcmVzc2VkVGV4dHVyZUZv
cm1hdChHQzNEZW51bSBmb3JtYXQpCkBAIC04OTQsNyArODk0LDcgQEAgYm9vbCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpjaGVja09iamVjdFRvQmVCb3VuZChjb25zdCBjaGFyKiBmdW5jdGlv
bk5hbWUsIFcKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgaWYgKG9iamVjdCkgewotICAgICAgICBpZiAoIW9iamVjdC0+dmFsaWRh
dGUoY29udGV4dEdyb3VwKCksIHRoaXMpKSB7CisgICAgICAgIGlmICghb2JqZWN0LT52YWxpZGF0
ZShjb250ZXh0R3JvdXAoKSwgKnRoaXMpKSB7CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgIm9i
amVjdCBub3QgZnJvbSB0aGlzIGNvbnRleHQiKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgfQpAQCAtMTQwMCw3ICsxNDAwLDcgQEAgUmVmUHRyPFdlYkdMQnVmZmVyPiBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGVCdWZmZXIoKQogewogICAgIGlmIChpc0NvbnRl
eHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGF1dG8gYnVm
ZmVyID0gV2ViR0xCdWZmZXI6OmNyZWF0ZSh0aGlzKTsKKyAgICBhdXRvIGJ1ZmZlciA9IFdlYkdM
QnVmZmVyOjpjcmVhdGUoKnRoaXMpOwogICAgIGFkZFNoYXJlZE9iamVjdChidWZmZXIucHRyKCkp
OwogICAgIHJldHVybiBXVEZNb3ZlKGJ1ZmZlcik7CiB9CkBAIC0xNDA5LDcgKzE0MDksNyBAQCBS
ZWZQdHI8V2ViR0xGcmFtZWJ1ZmZlcj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRl
RnJhbWVidWZmZXIoKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIGF1dG8gYnVmZmVyID0gV2ViR0xGcmFtZWJ1ZmZlcjo6
Y3JlYXRlKHRoaXMpOworICAgIGF1dG8gYnVmZmVyID0gV2ViR0xGcmFtZWJ1ZmZlcjo6Y3JlYXRl
KCp0aGlzKTsKICAgICBhZGRDb250ZXh0T2JqZWN0KGJ1ZmZlci5wdHIoKSk7CiAgICAgcmV0dXJu
IFdURk1vdmUoYnVmZmVyKTsKIH0KQEAgLTE0MTgsNyArMTQxOCw3IEBAIFJlZlB0cjxXZWJHTFRl
eHR1cmU+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZVRleHR1cmUoKQogewogICAg
IGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIGF1dG8gdGV4dHVyZSA9IFdlYkdMVGV4dHVyZTo6Y3JlYXRlKHRoaXMpOworICAgIGF1dG8g
dGV4dHVyZSA9IFdlYkdMVGV4dHVyZTo6Y3JlYXRlKCp0aGlzKTsKICAgICBhZGRTaGFyZWRPYmpl
Y3QodGV4dHVyZS5wdHIoKSk7CiAgICAgcmV0dXJuIFdURk1vdmUodGV4dHVyZSk7CiB9CkBAIC0x
NDI3LDcgKzE0MjcsNyBAQCBSZWZQdHI8V2ViR0xQcm9ncmFtPiBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpjcmVhdGVQcm9ncmFtKCkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGlu
ZygpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvIHByb2dyYW0gPSBXZWJHTFBy
b2dyYW06OmNyZWF0ZSh0aGlzKTsKKyAgICBhdXRvIHByb2dyYW0gPSBXZWJHTFByb2dyYW06OmNy
ZWF0ZSgqdGhpcyk7CiAgICAgYWRkU2hhcmVkT2JqZWN0KHByb2dyYW0ucHRyKCkpOwogICAgIHJl
dHVybiBXVEZNb3ZlKHByb2dyYW0pOwogfQpAQCAtMTQzNiw3ICsxNDM2LDcgQEAgUmVmUHRyPFdl
YkdMUmVuZGVyYnVmZmVyPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGVSZW5kZXJi
dWZmZXIoKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIGF1dG8gYnVmZmVyID0gV2ViR0xSZW5kZXJidWZmZXI6OmNyZWF0
ZSh0aGlzKTsKKyAgICBhdXRvIGJ1ZmZlciA9IFdlYkdMUmVuZGVyYnVmZmVyOjpjcmVhdGUoKnRo
aXMpOwogICAgIGFkZFNoYXJlZE9iamVjdChidWZmZXIucHRyKCkpOwogICAgIHJldHVybiBXVEZN
b3ZlKGJ1ZmZlcik7CiB9CkBAIC0xNDUwLDcgKzE0NTAsNyBAQCBSZWZQdHI8V2ViR0xTaGFkZXI+
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZVNoYWRlcihHQzNEZW51bSB0eXBlKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBhdXRvIHNoYWRlciA9IFdlYkdM
U2hhZGVyOjpjcmVhdGUodGhpcywgdHlwZSk7CisgICAgYXV0byBzaGFkZXIgPSBXZWJHTFNoYWRl
cjo6Y3JlYXRlKCp0aGlzLCB0eXBlKTsKICAgICBhZGRTaGFyZWRPYmplY3Qoc2hhZGVyLnB0cigp
KTsKICAgICByZXR1cm4gV1RGTW92ZShzaGFkZXIpOwogfQpAQCAtMTQ2Niw3ICsxNDY2LDcgQEAg
Ym9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkZWxldGVPYmplY3QoV2ViR0xPYmplY3Qq
IG9iamVjdCkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICFvYmplY3Qp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIW9iamVjdC0+dmFsaWRhdGUoY29udGV4
dEdyb3VwKCksIHRoaXMpKSB7CisgICAgaWYgKCFvYmplY3QtPnZhbGlkYXRlKGNvbnRleHRHcm91
cCgpLCAqdGhpcykpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
M0Q6OklOVkFMSURfT1BFUkFUSU9OLCAiZGVsZXRlIiwgIm9iamVjdCBkb2VzIG5vdCBiZWxvbmcg
dG8gdGhpcyBjb250ZXh0Iik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0xNzg4
LDcgKzE3ODgsNyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlV2Vi
R0xPYmplY3QoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBXZQogICAgICAgICBzeW50aGVzaXpl
R0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAi
bm8gb2JqZWN0IG9yIG9iamVjdCBkZWxldGVkIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9Ci0gICAgaWYgKCFvYmplY3QtPnZhbGlkYXRlKGNvbnRleHRHcm91cCgpLCB0aGlzKSkgewor
ICAgIGlmICghb2JqZWN0LT52YWxpZGF0ZShjb250ZXh0R3JvdXAoKSwgKnRoaXMpKSB7CiAgICAg
ICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElP
TiwgZnVuY3Rpb25OYW1lLCAib2JqZWN0IGRvZXMgbm90IGJlbG9uZyB0byB0aGlzIGNvbnRleHQi
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTIwMzYsNyArMjAzNiw3IEBAIHZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0Mz
RGVudW0gdGFyZ2V0LCBHQzNEZW51CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNz
Q29udGV4dDNEOjpJTlZBTElEX0VOVU0sICJmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciIsICJpbnZh
bGlkIHRhcmdldCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmIChidWZmZXIgJiYg
IWJ1ZmZlci0+dmFsaWRhdGUoY29udGV4dEdyb3VwKCksIHRoaXMpKSB7CisgICAgaWYgKGJ1ZmZl
ciAmJiAhYnVmZmVyLT52YWxpZGF0ZShjb250ZXh0R3JvdXAoKSwgKnRoaXMpKSB7CiAgICAgICAg
IHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTiwg
ImZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyIiwgIm5vIGJ1ZmZlciBvciBidWZmZXIgbm90IGZyb20g
dGhpcyBjb250ZXh0Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMDY4LDcgKzIwNjgs
NyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmZyYW1lYnVmZmVyVGV4dHVyZTJE
KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gYQogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgImZyYW1lYnVmZmVyVGV4dHVyZTJEIiwg
ImxldmVsIG5vdCAwIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKHRleHR1cmUg
JiYgIXRleHR1cmUtPnZhbGlkYXRlKGNvbnRleHRHcm91cCgpLCB0aGlzKSkgeworICAgIGlmICh0
ZXh0dXJlICYmICF0ZXh0dXJlLT52YWxpZGF0ZShjb250ZXh0R3JvdXAoKSwgKnRoaXMpKSB7CiAg
ICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJB
VElPTiwgImZyYW1lYnVmZmVyVGV4dHVyZTJEIiwgIm5vIHRleHR1cmUgb3IgdGV4dHVyZSBub3Qg
ZnJvbSB0aGlzIGNvbnRleHQiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI1NDcsNyAr
MjU0Nyw3IEBAIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlm
b3JtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgY29uc3QKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dDNEOjpGTE9BVDogewogICAgICAgICBHQzNEZmxvYXQgdmFsdWVbMTZdID0gezB9OwogICAgICAg
ICBpZiAobV9pc1JvYnVzdG5lc3NFWFRTdXBwb3J0ZWQpCi0gICAgICAgICAgICBtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS0+Z2V0blVuaWZvcm1mdkVYVChvYmplY3RPclplcm8ocHJvZ3JhbSks
IGxvY2F0aW9uLCAxNiAqIHNpemVvZihHQzNEZmxvYXQpLCB2YWx1ZSk7CisgICAgICAgICAgICBt
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRuVW5pZm9ybWZ2RVhUKG9iamVjdE9yWmVybyhw
cm9ncmFtKSwgbG9jYXRpb24sIDE2ICogc2l6ZW9mKEdDM0RmbG9hdCksIHZhbHVlKTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRVbmlmb3JtZnYob2JqZWN0T3JaZXJv
KHByb2dyYW0pLCBsb2NhdGlvbiwgdmFsdWUpOwogICAgICAgICBpZiAobGVuZ3RoID09IDEpCkBA
IC0yNTU3LDcgKzI1NTcsNyBAQCBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6Z2V0VW5pZm9ybShXZWJHTFByb2dyYW0qIHByb2dyYW0sIGNvbnN0CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6SU5UOiB7CiAgICAgICAgIEdDM0RpbnQgdmFsdWVbNF0gPSB7MH07CiAg
ICAgICAgIGlmIChtX2lzUm9idXN0bmVzc0VYVFN1cHBvcnRlZCkKLSAgICAgICAgICAgIG1fY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5nZXRuVW5pZm9ybWl2RVhUKG9iamVjdE9yWmVybyhwcm9n
cmFtKSwgbG9jYXRpb24sIDQgKiBzaXplb2YoR0MzRGludCksIHZhbHVlKTsKKyAgICAgICAgICAg
IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldG5Vbmlmb3JtaXZFWFQob2JqZWN0T3JaZXJv
KHByb2dyYW0pLCBsb2NhdGlvbiwgNCAqIHNpemVvZihHQzNEaW50KSwgdmFsdWUpOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZvcm1pdihvYmplY3RPclplcm8o
cHJvZ3JhbSksIGxvY2F0aW9uLCB2YWx1ZSk7CiAgICAgICAgIGlmIChsZW5ndGggPT0gMSkKQEAg
LTI1NjcsNyArMjU2Nyw3IEBAIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXRVbmlmb3JtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgY29uc3QKICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpCT09MOiB7CiAgICAgICAgIEdDM0RpbnQgdmFsdWVbNF0gPSB7MH07CiAg
ICAgICAgIGlmIChtX2lzUm9idXN0bmVzc0VYVFN1cHBvcnRlZCkKLSAgICAgICAgICAgIG1fY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5nZXRuVW5pZm9ybWl2RVhUKG9iamVjdE9yWmVybyhwcm9n
cmFtKSwgbG9jYXRpb24sIDQgKiBzaXplb2YoR0MzRGludCksIHZhbHVlKTsKKyAgICAgICAgICAg
IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldG5Vbmlmb3JtaXZFWFQob2JqZWN0T3JaZXJv
KHByb2dyYW0pLCBsb2NhdGlvbiwgNCAqIHNpemVvZihHQzNEaW50KSwgdmFsdWUpOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZvcm1pdihvYmplY3RPclplcm8o
cHJvZ3JhbSksIGxvY2F0aW9uLCB2YWx1ZSk7CiAgICAgICAgIGlmIChsZW5ndGggPiAxKSB7CkBA
IC0zMTUwLDcgKzMxNTAsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnJlYWRQ
aXhlbHMoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aAogICAgIHZvaWQqIGRh
dGEgPSBwaXhlbHMuYmFzZUFkZHJlc3MoKTsKIAogICAgIGlmIChtX2lzUm9idXN0bmVzc0VYVFN1
cHBvcnRlZCkKLSAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnJlYWRuUGl4ZWxz
RVhUKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLmJ5dGVMZW5ndGgo
KSwgZGF0YSk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnJlYWRuUGl4ZWxz
RVhUKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLmJ5dGVMZW5ndGgo
KSwgZGF0YSk7CiAgICAgZWxzZQogICAgICAgICBtX2NvbnRleHQtPnJlYWRQaXhlbHMoeCwgeSwg
d2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhKTsKIH0KQEAgLTQ2NjAsNyArNDY2MCw3
IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bG9zZUNvbnRleHRJbXBsKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6Okxvc3RDCiAgICAgICAgIC8vIEluZm9ybSB0aGUgZW1iZWRk
ZXIgdGhhdCBhIGxvc3QgY29udGV4dCB3YXMgcmVjZWl2ZWQuIEluIHJlc3BvbnNlLCB0aGUgZW1i
ZWRkZXIgbWlnaHQKICAgICAgICAgLy8gZGVjaWRlIHRvIHRha2UgYWN0aW9uIHN1Y2ggYXMgYXNr
aW5nIHRoZSB1c2VyIGZvciBwZXJtaXNzaW9uIHRvIHVzZSBXZWJHTCBhZ2Fpbi4KICAgICAgICAg
aWYgKEZyYW1lKiBmcmFtZSA9IGNhbnZhcygpLmRvY3VtZW50KCkuZnJhbWUoKSkKLSAgICAgICAg
ICAgIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5kaWRMb3NlV2ViR0xDb250ZXh0KG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLT5nZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkpOworICAgICAg
ICAgICAgZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmRpZExvc2VXZWJHTENvbnRleHQobV9jb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpKTsKICAgICB9
CiAKICAgICBkZXRhY2hBbmRSZW1vdmVBbGxPYmplY3RzKCk7CkBAIC01NjQ4LDcgKzU2NDgsNyBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Om1heWJlUmVzdG9yZUNvbnRleHQoKQog
ICAgIGlmICghbV9yZXN0b3JlQWxsb3dlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW50IGNv
bnRleHRMb3N0UmVhc29uID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmdldEdyYXBoaWNz
UmVzZXRTdGF0dXNBUkIoKTsKKyAgICBpbnQgY29udGV4dExvc3RSZWFzb24gPSBtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS5nZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCk7CiAKICAgICBzd2l0
Y2ggKGNvbnRleHRMb3N0UmVhc29uKSB7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Tk9f
RVJST1I6CkBAIC01ODY3LDcgKzU4NjcsNyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnN1cHBvcnRzRHJhd0J1ZmZlcnMoKQogewogICAgIGlmICghbV9kcmF3QnVmZmVyc1dlYkdM
UmVxdWlyZW1lbnRzQ2hlY2tlZCkgewogICAgICAgICBtX2RyYXdCdWZmZXJzV2ViR0xSZXF1aXJl
bWVudHNDaGVja2VkID0gdHJ1ZTsKLSAgICAgICAgbV9kcmF3QnVmZmVyc1N1cHBvcnRlZCA9IFdl
YkdMRHJhd0J1ZmZlcnM6OnN1cHBvcnRlZCh0aGlzKTsKKyAgICAgICAgbV9kcmF3QnVmZmVyc1N1
cHBvcnRlZCA9IFdlYkdMRHJhd0J1ZmZlcnM6OnN1cHBvcnRlZCgqdGhpcyk7CiAgICAgfQogICAg
IHJldHVybiBtX2RyYXdCdWZmZXJzU3VwcG9ydGVkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTYW1wbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMU2FtcGxlci5jcHAKaW5kZXggNzY5ZmQ0ZTI0YmIxZmQ4ZGQ3NTI1MjgzMWUy
MGQ5MzhhOTY4ZWQwMi4uMGNhNzk1YjhiZjAyN2Q2MmJmZWVlYTVjZTU0NjRjMzYwZGQ0NDE4MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTYW1wbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNhbXBsZXIuY3BwCkBAIC0zMyw3
ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKLVJlZjxXZWJHTFNhbXBsZXI+
IFdlYkdMU2FtcGxlcjo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGN0eCkKK1Jl
ZjxXZWJHTFNhbXBsZXI+IFdlYkdMU2FtcGxlcjo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UmIGN0eCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHTFNhbXBsZXIoY3R4
KSk7CiB9CkBAIC00Myw3ICs0Myw3IEBAIFdlYkdMU2FtcGxlcjo6fldlYkdMU2FtcGxlcigpCiAg
ICAgZGVsZXRlT2JqZWN0KDApOwogfQogCi1XZWJHTFNhbXBsZXI6OldlYkdMU2FtcGxlcihXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjdHgpCitXZWJHTFNhbXBsZXI6OldlYkdMU2FtcGxlcihX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjdHgpCiAgICAgOiBXZWJHTFNoYXJlZE9iamVjdChj
dHgpCiB7CiAgICAgLy8gRklYTUU6IENhbGwgY3JlYXRlU2FtcGxlciBmcm9tIEdyYXBoaWNzQ29u
dGV4dDNELgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTYW1w
bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNhbXBsZXIuaAppbmRleCAw
YjRhMWVmOTliNmU5Yjg0MWQ1NzI1MWQxOTM3NGFmYTA5OWQxNWNhLi5iZDljMGVhZGQwM2E3NTI5
MDNjZGNlZGQzZTk2ZWNmYWIyMTgxMmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFNhbXBsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFNhbXBsZXIuaApAQCAtMzMsMTAgKzMzLDEwIEBAIGNsYXNzIFdlYkdMU2FtcGxlciBmaW5h
bCA6IHB1YmxpYyBXZWJHTFNoYXJlZE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2Vi
R0xTYW1wbGVyKCk7CiAKLSAgICBzdGF0aWMgUmVmPFdlYkdMU2FtcGxlcj4gY3JlYXRlKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdMU2FtcGxlcj4gY3Jl
YXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKIAogcHJvdGVjdGVkOgotICAgIFdlYkdM
U2FtcGxlcihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAgV2ViR0xTYW1wbGVyKFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKIAogICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChH
cmFwaGljc0NvbnRleHQzRCosIFBsYXRmb3JtM0RPYmplY3QpIG92ZXJyaWRlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRlci5jcHAKaW5kZXggMTZmZjZkNWM4NThhNzYx
NTc4MjFmOWI5NGNhYzFkZTc0MjZmZTJjOS4uN2ZhZWQyNDA4MDM0ZjhiZjgwZGM3ODFlMDJlNmU5
ZTRjMTc0NmM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xT
aGFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmNw
cApAQCAtMzQsMTggKzM0LDE4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFdlYkdM
U2hhZGVyPiBXZWJHTFNoYWRlcjo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGN0
eCwgR0MzRGVudW0gdHlwZSkKK1JlZjxXZWJHTFNoYWRlcj4gV2ViR0xTaGFkZXI6OmNyZWF0ZShX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjdHgsIEdDM0RlbnVtIHR5cGUpCiB7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgV2ViR0xTaGFkZXIoY3R4LCB0eXBlKSk7CiB9CiAKLVdlYkdMU2hh
ZGVyOjpXZWJHTFNoYWRlcihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjdHgsIEdDM0RlbnVt
IHR5cGUpCitXZWJHTFNoYWRlcjo6V2ViR0xTaGFkZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSYgY3R4LCBHQzNEZW51bSB0eXBlKQogICAgIDogV2ViR0xTaGFyZWRPYmplY3QoY3R4KQogICAg
ICwgbV90eXBlKHR5cGUpCiAgICAgLCBtX3NvdXJjZShlbXB0eVN0cmluZygpKQogICAgICwgbV9p
c1ZhbGlkKGZhbHNlKQogewotICAgIHNldE9iamVjdChjdHgtPmdyYXBoaWNzQ29udGV4dDNEKCkt
PmNyZWF0ZVNoYWRlcih0eXBlKSk7CisgICAgc2V0T2JqZWN0KGN0eC5ncmFwaGljc0NvbnRleHQz
RCgpLT5jcmVhdGVTaGFkZXIodHlwZSkpOwogfQogCiBXZWJHTFNoYWRlcjo6fldlYkdMU2hhZGVy
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRlci5oCmluZGV4IDYzOWNlZmE3
MGE2OGI1NzM4ZDhmZjIxZDhiNjVjYmJhODFkODBjMWEuLjZhZjVjMjY5ZDUwYWFlNGQ4NTViN2Qw
NzBlYTMxODhlZTU0M2I5MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMU2hhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFk
ZXIuaApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBXZWJHTFNoYWRlciBmaW5hbCA6IHB1YmxpYyBX
ZWJHTFNoYXJlZE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViR0xTaGFkZXIoKTsK
IAotICAgIHN0YXRpYyBSZWY8V2ViR0xTaGFkZXI+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlKiwgR0MzRGVudW0pOworICAgIHN0YXRpYyBSZWY8V2ViR0xTaGFkZXI+IGNyZWF0ZShX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiwgR0MzRGVudW0pOwogCiAgICAgR0MzRGVudW0gZ2V0
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIGNvbnN0IFN0cmluZyYgZ2V0U291
cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2U7IH0KQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0VmFsaWQoYm9vbCB2YWxpZCkgeyBtX2lzVmFsaWQgPSB2YWxpZDsgfQog
CiBwcml2YXRlOgotICAgIFdlYkdMU2hhZGVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqLCBH
QzNEZW51bSk7CisgICAgV2ViR0xTaGFkZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYsIEdD
M0RlbnVtKTsKIAogICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChHcmFwaGljc0NvbnRleHQzRCos
IFBsYXRmb3JtM0RPYmplY3QpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFNoYXJlZE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFNoYXJlZE9iamVjdC5jcHAKaW5kZXggMzRmN2NlZWE1MmY2ODVjMGUxYzY2
Zjg1OTJiYzExNzUxNjVmOWRkYy4uMzZkYzE1ZDNhMGU3ZTVmNmE5NzA2MWU0YzNiZDNjMjQxYzFi
ODRlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFyZWRP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhcmVkT2Jq
ZWN0LmNwcApAQCAtMzQsOSArMzQsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdlYkdM
U2hhcmVkT2JqZWN0OjpXZWJHTFNoYXJlZE9iamVjdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
KiBjb250ZXh0KQotICAgIDogV2ViR0xPYmplY3QoY29udGV4dCksCi0gICAgICBtX2NvbnRleHRH
cm91cChjb250ZXh0LT5jb250ZXh0R3JvdXAoKSkKK1dlYkdMU2hhcmVkT2JqZWN0OjpXZWJHTFNo
YXJlZE9iamVjdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorICAgIDogV2Vi
R0xPYmplY3QoY29udGV4dCkKKyAgICAsIG1fY29udGV4dEdyb3VwKGNvbnRleHQuY29udGV4dEdy
b3VwKCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMU2hhcmVkT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYXJl
ZE9iamVjdC5oCmluZGV4IDk0NjdmZmEzMzJkNzBlZjhmZWI4Mjk3MWI4MDlkNDI0NzMzNTdlNTgu
LmFiZTQ4MDMzMzcyYzk1NmNjNzEzMGViN2Y3YmZmZmRjZDFhOWY1N2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhcmVkT2JqZWN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFyZWRPYmplY3QuaApAQCAtNTIsNyArNTIsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzVHJhbnNmb3JtRmVlZGJhY2soKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1ZlcnRleEFycmF5T2JqZWN0KCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIGJvb2wgdmFsaWRhdGUoY29uc3QgV2ViR0xD
b250ZXh0R3JvdXAqIGNvbnRleHRHcm91cCwgY29uc3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSopIGNvbnN0IG92ZXJyaWRlCisgICAgYm9vbCB2YWxpZGF0ZShjb25zdCBXZWJHTENvbnRleHRH
cm91cCogY29udGV4dEdyb3VwLCBjb25zdCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJikgY29u
c3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJldHVybiBjb250ZXh0R3JvdXAgPT0gbV9jb250
ZXh0R3JvdXA7CiAgICAgfQpAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZXRh
Y2hDb250ZXh0R3JvdXAoKTsKIAogcHJvdGVjdGVkOgotICAgIFdlYkdMU2hhcmVkT2JqZWN0KFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBXZWJHTFNoYXJlZE9iamVjdChXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlJik7CiAKICAgICBib29sIGhhc0dyb3VwT3JDb250ZXh0KCkgY29u
c3Qgb3ZlcnJpZGUKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFN5bmMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNw
cAppbmRleCAyYmQyY2U4MmE4NzE1MDRiNjkzOWY1NjhhZjRjOTVjZGEwMjI3NmFjLi42MzYwZmJh
NGVlMzBjMzdiMmE4NmRlZWMyYmRjMzJhOTgwZDg3MTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFN5bmMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMU3luYy5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIAotUmVmPFdlYkdMU3luYz4gV2ViR0xTeW5jOjpjcmVhdGUoV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSogY3R4KQorUmVmPFdlYkdMU3luYz4gV2ViR0xTeW5jOjpjcmVhdGUoV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY3R4KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFdlYkdMU3luYyhjdHgpKTsKIH0KQEAgLTQzLDcgKzQzLDcgQEAgV2ViR0xTeW5jOjp+V2ViR0xT
eW5jKCkKICAgICBkZWxldGVPYmplY3QoMCk7CiB9CiAKLVdlYkdMU3luYzo6V2ViR0xTeW5jKFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGN0eCkKK1dlYkdMU3luYzo6V2ViR0xTeW5jKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UmIGN0eCkKICAgICA6IFdlYkdMU2hhcmVkT2JqZWN0KGN0eCkK
IHsKICAgICAvLyBGSVhNRTogQ2FsbCBmZW5jZVN5bmMgZnJvbSBHcmFwaGljc0NvbnRleHQzRC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTeW5jLmgKaW5kZXggN2FkMzk5OWZiMDEwNDI5
Y2JlMzYzMzBmZWVmMGU3ODBjNGM1MmI4YS4uZWY2ZWM5ZGNkNTk2NGZiNDZkMjM3YTAwNjNkNGM1
NmIxMmNkYTc0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xT
eW5jLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTeW5jLmgKQEAgLTMz
LDEwICszMywxMCBAQCBjbGFzcyBXZWJHTFN5bmMgZmluYWwgOiBwdWJsaWMgV2ViR0xTaGFyZWRP
YmplY3QgewogcHVibGljOgogICAgIHZpcnR1YWwgfldlYkdMU3luYygpOwogCi0gICAgc3RhdGlj
IFJlZjxXZWJHTFN5bmM+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAg
c3RhdGljIFJlZjxXZWJHTFN5bmM+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7
CiAKIHByb3RlY3RlZDoKLSAgICBXZWJHTFN5bmMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSop
OworICAgIFdlYkdMU3luYyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAKICAgICB2b2lk
IGRlbGV0ZU9iamVjdEltcGwoR3JhcGhpY3NDb250ZXh0M0QqLCBQbGF0Zm9ybTNET2JqZWN0KSBv
dmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xU
ZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5jcHAK
aW5kZXggYmRmY2VhYTg1MjUyMmU3OTRlZjZlZmI1YjIzZmRkMTY1ZTRkMTQ4OC4uYzRkNTcyMTQw
ZGI5OWI2OTc2MGIyM2RjMGU4NTkxZmE0OThiODRjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFRleHR1cmUuY3BwCkBAIC0zNSwxMiArMzUsMTIgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1SZWY8V2ViR0xUZXh0dXJlPiBXZWJHTFRleHR1cmU6OmNyZWF0ZShXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjdHgpCitSZWY8V2ViR0xUZXh0dXJlPiBXZWJHTFRleHR1
cmU6OmNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjdHgpCiB7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2ViR0xUZXh0dXJlKGN0eCkpOwogfQogCi1XZWJHTFRleHR1cmU6Oldl
YkdMVGV4dHVyZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjdHgpCitXZWJHTFRleHR1cmU6
OldlYkdMVGV4dHVyZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjdHgpCiAgICAgOiBXZWJH
TFNoYXJlZE9iamVjdChjdHgpCiAgICAgLCBtX3RhcmdldCgwKQogICAgICwgbV9taW5GaWx0ZXIo
R3JhcGhpY3NDb250ZXh0M0Q6Ok5FQVJFU1RfTUlQTUFQX0xJTkVBUikKQEAgLTU0LDcgKzU0LDcg
QEAgV2ViR0xUZXh0dXJlOjpXZWJHTFRleHR1cmUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSog
Y3R4KQogICAgICwgbV9pc0Zsb2F0VHlwZShmYWxzZSkKICAgICAsIG1faXNIYWxmRmxvYXRUeXBl
KGZhbHNlKQogewotICAgIHNldE9iamVjdChjdHgtPmdyYXBoaWNzQ29udGV4dDNEKCktPmNyZWF0
ZVRleHR1cmUoKSk7CisgICAgc2V0T2JqZWN0KGN0eC5ncmFwaGljc0NvbnRleHQzRCgpLT5jcmVh
dGVUZXh0dXJlKCkpOwogfQogCiBXZWJHTFRleHR1cmU6On5XZWJHTFRleHR1cmUoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRleHR1cmUuaAppbmRleCA2Y2EzODg5NzY2YzBjMDNl
NmU1NDUxMDBhNjg1NzVmYmU5ZTcxOTE2Li5kZDk4NjRjMTNmMDQzYWIwMGZiNGVkZGRhODRjNDYz
ODE5OWJiMjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRl
eHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRleHR1cmUuaApA
QCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5XZWJHTFRleHR1cmUoKTsK
IAotICAgIHN0YXRpYyBSZWY8V2ViR0xUZXh0dXJlPiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSopOworICAgIHN0YXRpYyBSZWY8V2ViR0xUZXh0dXJlPiBjcmVhdGUoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSYpOwogCiAgICAgdm9pZCBzZXRUYXJnZXQoR0MzRGVudW0gdGFyZ2V0
LCBHQzNEaW50IG1heExldmVsKTsKICAgICB2b2lkIHNldFBhcmFtZXRlcmkoR0MzRGVudW0gcG5h
bWUsIEdDM0RpbnQgcGFyYW0pOwpAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IEdDM0RpbnQgY29tcHV0ZUxldmVsQ291bnQoR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVp
Z2h0KTsKIAogcHJpdmF0ZToKLSAgICBXZWJHTFRleHR1cmUoV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSopOworICAgIFdlYkdMVGV4dHVyZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAK
ICAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoR3JhcGhpY3NDb250ZXh0M0QqLCBQbGF0Zm9ybTNE
T2JqZWN0KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmNwcAppbmRleCBmMzY1ZDUyM2ZhOGFhNGY0NzEzNzQx
Zjg0ZTlkNTQ5ZjA2ZWQ1MTU3Li4zNTNlNGJhYzFhMjkxYWU4MDc1ODE1Y2NkNzRkMjlmZGU5YTkz
NmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRyYW5zZm9y
bUZlZWRiYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRyYW5z
Zm9ybUZlZWRiYWNrLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgCi1SZWY8V2ViR0xUcmFuc2Zvcm1GZWVkYmFjaz4gV2ViR0xUcmFuc2Zvcm1GZWVkYmFj
azo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGN0eCkKK1JlZjxXZWJHTFRyYW5z
Zm9ybUZlZWRiYWNrPiBXZWJHTFRyYW5zZm9ybUZlZWRiYWNrOjpjcmVhdGUoV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSYgY3R4KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdMVHJh
bnNmb3JtRmVlZGJhY2soY3R4KSk7CiB9CkBAIC00Myw3ICs0Myw3IEBAIFdlYkdMVHJhbnNmb3Jt
RmVlZGJhY2s6On5XZWJHTFRyYW5zZm9ybUZlZWRiYWNrKCkKICAgICBkZWxldGVPYmplY3QoMCk7
CiB9CiAKLVdlYkdMVHJhbnNmb3JtRmVlZGJhY2s6OldlYkdMVHJhbnNmb3JtRmVlZGJhY2soV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY3R4KQorV2ViR0xUcmFuc2Zvcm1GZWVkYmFjazo6V2Vi
R0xUcmFuc2Zvcm1GZWVkYmFjayhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjdHgpCiAgICAg
OiBXZWJHTFNoYXJlZE9iamVjdChjdHgpCiB7CiAgICAgLy8gRklYTUU6IENhbGwgY3JlYXRlVHJh
bnNmb3JtRmVlZGJhY2sgZnJvbSBHcmFwaGljc0NvbnRleHQzRC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVHJhbnNmb3JtRmVlZGJhY2suaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVHJhbnNmb3JtRmVlZGJhY2suaAppbmRleCAyNmQ0MDQ0
ZThkMzc3MjllMjE1Zjc1MWQ4ZmE0MmQzZDJkODBmNDVlLi42OWNmOGU3YmI1NDE4ZWFhOWU0NTY5
MjExNDA4ZjQ3NmIyNmE2Nzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5oCkBAIC0zMywxMCArMzMsMTAgQEAgY2xhc3MgV2Vi
R0xUcmFuc2Zvcm1GZWVkYmFjayBmaW5hbCA6IHB1YmxpYyBXZWJHTFNoYXJlZE9iamVjdCB7CiBw
dWJsaWM6CiAgICAgdmlydHVhbCB+V2ViR0xUcmFuc2Zvcm1GZWVkYmFjaygpOwogCi0gICAgc3Rh
dGljIFJlZjxXZWJHTFRyYW5zZm9ybUZlZWRiYWNrPiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSopOworICAgIHN0YXRpYyBSZWY8V2ViR0xUcmFuc2Zvcm1GZWVkYmFjaz4gY3JlYXRl
KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKIAogcHJvdGVjdGVkOgotICAgIFdlYkdMVHJh
bnNmb3JtRmVlZGJhY2soV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOworICAgIFdlYkdMVHJh
bnNmb3JtRmVlZGJhY2soV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogCiAgICAgdm9pZCBk
ZWxldGVPYmplY3RJbXBsKEdyYXBoaWNzQ29udGV4dDNEKiwgUGxhdGZvcm0zRE9iamVjdCkgb3Zl
cnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVy
dGV4QXJyYXlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0
ZXhBcnJheU9iamVjdC5jcHAKaW5kZXggNmU4MTVlZjIzNWRlNTJiMGRiMDA0ZjY1ODYwMjQzYzAx
MDk0YzU2OS4uN2ZhNjljOWE0OTRkYmVlYTlkYmViZjg5ZTg1ZjQzZjljZmQwMjg0OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVj
dC5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAotUmVm
PFdlYkdMVmVydGV4QXJyYXlPYmplY3Q+IFdlYkdMVmVydGV4QXJyYXlPYmplY3Q6OmNyZWF0ZShX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjdHgsIFZBT1R5cGUgdHlwZSkKK1JlZjxXZWJHTFZl
cnRleEFycmF5T2JqZWN0PiBXZWJHTFZlcnRleEFycmF5T2JqZWN0OjpjcmVhdGUoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSYgY3R4LCBWQU9UeXBlIHR5cGUpCiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdChjdHgsIHR5cGUpKTsKIH0KQEAgLTQzLDcg
KzQzLDcgQEAgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdDo6fldlYkdMVmVydGV4QXJyYXlPYmplY3Qo
KQogICAgIGRlbGV0ZU9iamVjdCgwKTsKIH0KIAotV2ViR0xWZXJ0ZXhBcnJheU9iamVjdDo6V2Vi
R0xWZXJ0ZXhBcnJheU9iamVjdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjdHgsIFZBT1R5
cGUgdHlwZSkKK1dlYkdMVmVydGV4QXJyYXlPYmplY3Q6OldlYkdMVmVydGV4QXJyYXlPYmplY3Qo
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY3R4LCBWQU9UeXBlIHR5cGUpCiAgICAgOiBXZWJH
TFZlcnRleEFycmF5T2JqZWN0QmFzZShjdHgsIHR5cGUpCiB7CiAgICAgc3dpdGNoIChtX3R5cGUp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJy
YXlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlP
YmplY3QuaAppbmRleCBhZTRkODMyNmQ2YTkxMjM5NWZkN2Q5MTc0MzkyZjgxYzdmM2E0M2EzLi41
YjQ5YzcwOGE0NjI1NGRlNTkwZTFjMDZkY2M5ODYyYTY2NGMzMTQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5oCkBAIC0zNywx
MCArMzcsMTAgQEAgY2xhc3MgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDsKIAogY2xhc3MgV2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdCBmaW5hbCA6IHB1YmxpYyBXZWJHTFZlcnRleEFycmF5T2JqZWN0QmFz
ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJHTFZlcnRleEFycmF5T2JqZWN0PiBjcmVh
dGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSosIFZBT1R5cGUpOworICAgIHN0YXRpYyBSZWY8
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdD4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Um
LCBWQU9UeXBlKTsKICAgICB2aXJ0dWFsIH5XZWJHTFZlcnRleEFycmF5T2JqZWN0KCk7CiBwcml2
YXRlOgotICAgIFdlYkdMVmVydGV4QXJyYXlPYmplY3QoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSosIFZBT1R5cGUpOworICAgIFdlYkdMVmVydGV4QXJyYXlPYmplY3QoV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSYsIFZBT1R5cGUpOwogICAgIGJvb2wgaXNUcmFuc2Zvcm1GZWVkYmFjaygpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoR3JhcGhpY3ND
b250ZXh0M0QqLCBQbGF0Zm9ybTNET2JqZWN0KSBvdmVycmlkZTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZS5j
cHAKaW5kZXggZjM5YzBkZGQyMjc3OWQwNWYxNjBkMTk3OTU2MzE4YTYwMGViOTNjYy4uNjk2NDlj
NjJmNmUxZGJlZjJmOWVkYTYxN2M0MjQyNGRmNzNmMTc1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlLmNwcApA
QCAtMzIsMTMgKzMyLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV2ViR0xWZXJ0ZXhB
cnJheU9iamVjdEJhc2U6OldlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlKFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UqIGN0eCwgVkFPVHlwZSB0eXBlKQorV2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJh
c2U6OldlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Um
IGN0eCwgVkFPVHlwZSB0eXBlKQogICAgIDogV2ViR0xDb250ZXh0T2JqZWN0KGN0eCkKICAgICAs
IG1fdHlwZSh0eXBlKQogICAgICwgbV9oYXNFdmVyQmVlbkJvdW5kKGZhbHNlKQogICAgICwgbV9i
b3VuZEVsZW1lbnRBcnJheUJ1ZmZlcigwKQogewotICAgIG1fdmVydGV4QXR0cmliU3RhdGUucmVz
aXplKGN0eC0+Z2V0TWF4VmVydGV4QXR0cmlicygpKTsKKyAgICBtX3ZlcnRleEF0dHJpYlN0YXRl
LnJlc2l6ZShjdHguZ2V0TWF4VmVydGV4QXR0cmlicygpKTsKIH0KIAogdm9pZCBXZWJHTFZlcnRl
eEFycmF5T2JqZWN0QmFzZTo6c2V0RWxlbWVudEFycmF5QnVmZmVyKFBhc3NSZWZQdHI8V2ViR0xC
dWZmZXI+IGJ1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMVmVydGV4QXJyYXlPYmplY3RCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZS5oCmluZGV4IDYzZTFkZGI5MjJiNzA0MTI4OTlhZWQ3
YmZmNjJkZjM5ZWY0MjI2MzUuLjNmMDdkZGVlYWQxYmY5YzdiN2RmN2IwYzY4OGNjOGJlNzIwNzNj
MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJy
YXlPYmplY3RCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0
ZXhBcnJheU9iamVjdEJhc2UuaApAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRWZXJ0ZXhBdHRyaWJEaXZpc29yKEdDM0R1aW50IGluZGV4LCBHQzNEdWludCBkaXZpc29yKTsK
IAogcHJvdGVjdGVkOgotICAgIFdlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlKFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UqLCBWQU9UeXBlKTsKKyAgICBXZWJHTFZlcnRleEFycmF5T2JqZWN0QmFz
ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiwgVkFPVHlwZSk7CiAgICAgdmlydHVhbCB2b2lk
IGRlbGV0ZU9iamVjdEltcGwoR3JhcGhpY3NDb250ZXh0M0QqLCBQbGF0Zm9ybTNET2JqZWN0KSA9
IDA7CiAgICAgCiAgICAgVkFPVHlwZSBtX3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3BwCmluZGV4IGQxMzU5
NTI1MjU5NGYzMDJmYzFkNDIyYjhiOTdkNzdiMGZiMDIwNjUuLjVmM2I2NTU3YTcwYjVjYjg0MmMw
YzJlYTc3ODE3OGFmYTY0YzAxZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3BwCkBAIC0zNCwyMCArMzQsMjAg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9F
Uz4gV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UqIGN0eCwgVkFPVHlwZSB0eXBlKQorUmVmPFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM+
IFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OmNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJiBjdHgsIFZBT1R5cGUgdHlwZSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJH
TFZlcnRleEFycmF5T2JqZWN0T0VTKGN0eCwgdHlwZSkpOwogfQogCi1XZWJHTFZlcnRleEFycmF5
T2JqZWN0T0VTOjpXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTKFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UqIGN0eCwgVkFPVHlwZSB0eXBlKQorV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6V2Vi
R0xWZXJ0ZXhBcnJheU9iamVjdE9FUyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjdHgsIFZB
T1R5cGUgdHlwZSkKICAgICA6IFdlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlKGN0eCwgdHlwZSkK
IHsKLSAgICBFeHRlbnNpb25zM0QqIGV4dGVuc2lvbnMgPSBjb250ZXh0KCktPmdyYXBoaWNzQ29u
dGV4dDNEKCktPmdldEV4dGVuc2lvbnMoKTsKKyAgICBFeHRlbnNpb25zM0QmIGV4dGVuc2lvbnMg
PSBjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dDNEKCktPmdldEV4dGVuc2lvbnMoKTsKICAgICBz
d2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgVkFPVHlwZURlZmF1bHQ6CiAgICAgICAgIGJyZWFr
OwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHNldE9iamVjdChleHRlbnNpb25zLT5jcmVhdGVWZXJ0
ZXhBcnJheU9FUygpKTsKKyAgICAgICAgc2V0T2JqZWN0KGV4dGVuc2lvbnMuY3JlYXRlVmVydGV4
QXJyYXlPRVMoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KQEAgLTU5LDEyICs1OSwxMiBA
QCBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOjp+V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUygp
CiAKIHZvaWQgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6ZGVsZXRlT2JqZWN0SW1wbChHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dDNkLCBQbGF0Zm9ybTNET2JqZWN0IG9iamVjdCkKIHsKLSAg
ICBFeHRlbnNpb25zM0QqIGV4dGVuc2lvbnMgPSBjb250ZXh0M2QtPmdldEV4dGVuc2lvbnMoKTsK
KyAgICBFeHRlbnNpb25zM0QmIGV4dGVuc2lvbnMgPSBjb250ZXh0M2QtPmdldEV4dGVuc2lvbnMo
KTsKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgVkFPVHlwZURlZmF1bHQ6CiAgICAg
ICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIGV4dGVuc2lvbnMtPmRlbGV0ZVZlcnRl
eEFycmF5T0VTKG9iamVjdCk7CisgICAgICAgIGV4dGVuc2lvbnMuZGVsZXRlVmVydGV4QXJyYXlP
RVMob2JqZWN0KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmgKaW5kZXggOWFi
MTE1NWM0Yzc4N2Y3NjAyNDRhOWIzZDA2MWY0YzVlNTIxNDE4Ny4uZDA4ZDIyM2UzNTcwNjY5NGU5
MWNhZTZhY2RjOGM0YmNhOWYxNjdlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaApAQCAtMzMsMTAgKzMzLDEwIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUyBm
aW5hbCA6IHB1YmxpYyBXZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZSB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTPiBjcmVhdGUoV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSosIFZBT1R5cGUpOworICAgIHN0YXRpYyBSZWY8V2ViR0xWZXJ0ZXhBcnJh
eU9iamVjdE9FUz4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmLCBWQU9UeXBlKTsK
ICAgICB2aXJ0dWFsIH5XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTKCk7CiBwcml2YXRlOgotICAg
IFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSosIFZB
T1R5cGUpOworICAgIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMoV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSYsIFZBT1R5cGUpOwogICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChHcmFwaGljc0Nv
bnRleHQzRCosIFBsYXRmb3JtM0RPYmplY3QpIG92ZXJyaWRlOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKaW5kZXgg
NDEwNjYxNzkxNWQ4OWQ5NjNlYWQ1Y2EyMDY3YzJkMTZkZjBlZDAyNy4uZjhlYTg4YTVkZmFkMDRj
MzhjMzdhYjk4ZTBlNmRhZjUyMDAzZDFmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCkBAIC0xMTg1LDcgKzExODUsNyBA
QCBwdWJsaWM6CiAgICAgLy8gYWxsIG1ldGhvZHMgaXQgY29udGFpbnMgbWF5IG5lY2Vzc2FyaWx5
IGJlIHN1cHBvcnRlZCBvbiB0aGUKICAgICAvLyBjdXJyZW50IGhhcmR3YXJlLiBNdXN0IGNhbGwg
RXh0ZW5zaW9uczNEOjpzdXBwb3J0cygpIHRvCiAgICAgLy8gZGV0ZXJtaW5lIHRoaXMuCi0gICAg
RXh0ZW5zaW9uczNEKiBnZXRFeHRlbnNpb25zKCk7CisgICAgRXh0ZW5zaW9uczNEJiBnZXRFeHRl
bnNpb25zKCk7CiAKICAgICBJbnRTaXplIGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkgY29u
c3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9U
ZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJl
LmNwcAppbmRleCA3N2NmNjg3YzY4ZjFlYjQ2NTMyN2M0ZWE4OTYxMGY5Yjg2N2EyYzY4Li5hYWQx
M2YzNGQ2OWNmMmYxZGEyZGVhODMwNmZjNDVkODFhMDVjZTYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwCkBAIC02Niw3ICs2Niw3IEBA
IHN0YXRpYyB2b2lkIGNvbnZlcnRGb3JtYXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRl
eHR1cmU6OkZvcm1hdCBmb3JtYXQsIHVuCiAgICAgICAgICpnbFR5cGUgPSBHcmFwaGljc0NvbnRl
eHQzRDo6VU5TSUdORURfQllURTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUZXh0dXJlOjpC
R1JBODoKLSAgICAgICAgaWYgKGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdM
X0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIpKSB7CisgICAgICAgIGlmIChjb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIp
KSB7CiAgICAgICAgICAgICAqZ2xGb3JtYXQgPSBFeHRlbnNpb25zM0Q6OkJHUkFfRVhUOwogICAg
ICAgICAgICAgKmdsVHlwZSA9IEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFOwogICAg
ICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAKaW5kZXgg
M2QzMTAyZDNkNjYwYmJmMzE0Yzg1Mzg5YWVmNWE5OTY0Nzk3YjJmZC4uYWU4YmNhN2FlNTFjZTI4
NzE2MzZlMWVhMWJjYTQ2OWUxNmM2ZjBiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RP
cGVuR0wuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlbGVh
c2VTaGFkZXJDb21waWxlcigpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZWFkUGl4ZWxzQW5k
Q29udmVydFRvQkdSQUlmTmVjZXNzYXJ5KGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVp
Z2h0LCB1bnNpZ25lZCBjaGFyKiBwaXhlbHMpCiB7CiAgICAgLy8gTlZJRElBIGRyaXZlcnMgaGF2
ZSBhIGJ1ZyB3aGVyZSBjYWxsaW5nIHJlYWRQaXhlbHMgaW4gQkdSQSBjYW4gcmV0dXJuIHRoZSB3
cm9uZyB2YWx1ZXMgZm9yIHRoZSBhbHBoYSBjaGFubmVsIHdoZW4gdGhlIGFscGhhIGlzIG9mZiBm
b3IgdGhlIGNvbnRleHQuCi0gICAgaWYgKCFtX2F0dHJzLmFscGhhICYmIGdldEV4dGVuc2lvbnMo
KS0+aXNOVklESUEoKSkgeworICAgIGlmICghbV9hdHRycy5hbHBoYSAmJiBnZXRFeHRlbnNpb25z
KCkuaXNOVklESUEoKSkgewogICAgICAgICA6OmdsUmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVp
Z2h0LCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBwaXhlbHMpOwogI2lmIFVTRShBQ0NFTEVS
QVRFKQogICAgICAgICB2SW1hZ2VfQnVmZmVyIHNyYzsKQEAgLTEyMSw5ICsxMjEsOSBAQCBib29s
IEdyYXBoaWNzQ29udGV4dDNEOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogICAg
ICAgICAvLyBXZSBkb24ndCBhbGxvdyB0aGUgbG9naWMgd2hlcmUgc3RlbmNpbCBpcyByZXF1aXJl
ZCBhbmQgZGVwdGggaXMgbm90LgogICAgICAgICAvLyBTZWUgR3JhcGhpY3NDb250ZXh0M0Q6OnZh
bGlkYXRlQXR0cmlidXRlcy4KIAotICAgICAgICBFeHRlbnNpb25zM0QqIGV4dGVuc2lvbnMgPSBn
ZXRFeHRlbnNpb25zKCk7CisgICAgICAgIEV4dGVuc2lvbnMzRCYgZXh0ZW5zaW9ucyA9IGdldEV4
dGVuc2lvbnMoKTsKICAgICAgICAgLy8gVXNlIGEgMjQgYml0IGRlcHRoIGJ1ZmZlciB3aGVyZSB3
ZSBrbm93IHdlIGhhdmUgaXQuCi0gICAgICAgIGlmIChleHRlbnNpb25zLT5zdXBwb3J0cygiR0xf
RVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikpCisgICAgICAgIGlmIChleHRlbnNpb25zLnN1cHBv
cnRzKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKSkKICAgICAgICAgICAgIGludGVybmFs
RGVwdGhTdGVuY2lsRm9ybWF0ID0gR0xfREVQVEgyNF9TVEVOQ0lMOF9FWFQ7CiAgICAgICAgIGVs
c2UKICNpZiBQTEFURk9STShJT1MpCkBAIC0zMDQsMTIgKzMwNCwxMiBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpnZXRJbnRlZ2VydihHQzNEZW51bSBwbmFtZSwgR0MzRGludCogdmFsdWUpCiAj
ZW5kaWYKICAgICBjYXNlIE1BWF9URVhUVVJFX1NJWkU6CiAgICAgICAgIDo6Z2xHZXRJbnRlZ2Vy
dihNQVhfVEVYVFVSRV9TSVpFLCB2YWx1ZSk7Ci0gICAgICAgIGlmIChnZXRFeHRlbnNpb25zKCkt
PnJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpKQorICAgICAgICBpZiAoZ2V0
RXh0ZW5zaW9ucygpLnJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpKQogICAg
ICAgICAgICAgKnZhbHVlID0gc3RkOjptaW4oNDA5NiwgKnZhbHVlKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBNQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFOgogICAgICAgICA6OmdsR2V0SW50
ZWdlcnYoTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRSwgdmFsdWUpOwotICAgICAgICBpZiAoZ2V0
RXh0ZW5zaW9ucygpLT5yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSkKKyAg
ICAgICAgaWYgKGdldEV4dGVuc2lvbnMoKS5yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVy
ZVNpemUoKSkKICAgICAgICAgICAgICp2YWx1ZSA9IHN0ZDo6bWluKDEwMjQsICp2YWx1ZSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CkBAIC00MDcsMTEgKzQwNywxMSBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpjbGVhckRlcHRoKEdDM0RjbGFtcGYgZGVwdGgpCiAjZW5kaWYKIH0K
IAotRXh0ZW5zaW9uczNEKiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucygpCitFeHRl
bnNpb25zM0QmIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKCkKIHsKICAgICBpZiAo
IW1fZXh0ZW5zaW9ucykKICAgICAgICAgbV9leHRlbnNpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxF
eHRlbnNpb25zM0RPcGVuR0w+KHRoaXMsIGlzR0xFUzJDb21wbGlhbnQoKSk7Ci0gICAgcmV0dXJu
IG1fZXh0ZW5zaW9ucy5nZXQoKTsKKyAgICByZXR1cm4gKm1fZXh0ZW5zaW9uczsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6cmVhZFBpeGVscyhHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0Mz
RHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVt
IHR5cGUsIHZvaWQqIGRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdM
Q29tbW9uLmNwcAppbmRleCA1NWQ1YzY4ZGNlMmEzNmFhMDNhY2E4NzI5ZmVmNGVmN2Q0ODE3NmE0
Li4xODYzNzIxOTZjZWNmMzJiMzljZmJmYjcwNGQ3ZTliMDU0YjM5NGRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RP
cGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKQEAgLTEzOSwyMCArMTM5LDIw
IEBAIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVh
dGVGb3JDdXJyZW50R0xDb250ZXh0KCkKIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmFsaWRh
dGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQog
ewotICAgIEV4dGVuc2lvbnMzRCogZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMoKTsKKyAgICBF
eHRlbnNpb25zM0QmIGV4dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7CiAgICAgaWYgKG1fYXR0
cnMuc3RlbmNpbCkgewotICAgICAgICBpZiAoZXh0ZW5zaW9ucy0+c3VwcG9ydHMocGFja2VkRGVw
dGhTdGVuY2lsRXh0ZW5zaW9uKSkgewotICAgICAgICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5h
YmxlZChwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pOworICAgICAgICBpZiAoZXh0ZW5zaW9u
cy5zdXBwb3J0cyhwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pKSB7CisgICAgICAgICAgICBl
eHRlbnNpb25zLmVuc3VyZUVuYWJsZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKICAg
ICAgICAgICAgIC8vIEZvcmNlIGRlcHRoIGlmIHN0ZW5jaWwgaXMgdHJ1ZS4KICAgICAgICAgICAg
IG1fYXR0cnMuZGVwdGggPSB0cnVlOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG1fYXR0
cnMuc3RlbmNpbCA9IGZhbHNlOwogICAgIH0KICAgICBpZiAobV9hdHRycy5hbnRpYWxpYXMpIHsK
LSAgICAgICAgaWYgKCFleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfQU5HTEVfZnJhbWVidWZmZXJf
bXVsdGlzYW1wbGUiKSB8fCBpc0dMRVMyQ29tcGxpYW50KCkpCisgICAgICAgIGlmICghZXh0ZW5z
aW9ucy5zdXBwb3J0cygiR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiKSB8fCBpc0dM
RVMyQ29tcGxpYW50KCkpCiAgICAgICAgICAgICBtX2F0dHJzLmFudGlhbGlhcyA9IGZhbHNlOwog
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBleHRlbnNpb25zLT5lbnN1cmVFbmFibGVkKCJHTF9B
TkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpOworICAgICAgICAgICAgZXh0ZW5zaW9ucy5l
bnN1cmVFbmFibGVkKCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpOwogICAgIH0K
IH0KIApAQCAtMTg4OSwxNyArMTg4OSwxNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhJ
bWFnZTJERGlyZWN0KEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDM0RlbnVtIG1vZGUs
IEdDM0RpbnQgZmlyc3QsIEdDM0RzaXplaSBjb3VudCwgR0MzRHNpemVpIHByaW1jb3VudCkKIHsK
LSAgICBnZXRFeHRlbnNpb25zKCktPmRyYXdBcnJheXNJbnN0YW5jZWQobW9kZSwgZmlyc3QsIGNv
dW50LCBwcmltY291bnQpOworICAgIGdldEV4dGVuc2lvbnMoKS5kcmF3QXJyYXlzSW5zdGFuY2Vk
KG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDM0RlbnVtIG1vZGUsIEdDM0RzaXplaSBjb3Vu
dCwgR0MzRGVudW0gdHlwZSwgR0MzRGludHB0ciBvZmZzZXQsIEdDM0RzaXplaSBwcmltY291bnQp
CiB7Ci0gICAgZ2V0RXh0ZW5zaW9ucygpLT5kcmF3RWxlbWVudHNJbnN0YW5jZWQobW9kZSwgY291
bnQsIHR5cGUsIG9mZnNldCwgcHJpbWNvdW50KTsKKyAgICBnZXRFeHRlbnNpb25zKCkuZHJhd0Vs
ZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNvdW50LCB0eXBlLCBvZmZzZXQsIHByaW1jb3VudCk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYkRpdmlzb3IoR0MzRHVpbnQg
aW5kZXgsIEdDM0R1aW50IGRpdmlzb3IpCiB7Ci0gICAgZ2V0RXh0ZW5zaW9ucygpLT52ZXJ0ZXhB
dHRyaWJEaXZpc29yKGluZGV4LCBkaXZpc29yKTsKKyAgICBnZXRFeHRlbnNpb25zKCkudmVydGV4
QXR0cmliRGl2aXNvcihpbmRleCwgZGl2aXNvcik7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5j
cHAKaW5kZXggZGVhMzRhOTY4M2FmNDUwOWZmMjFlNzE3ZmFkNzI2N2Q5OGQ3YjZkYS4uMGZkOGI4
N2I1YWFlOTkyZTJmMDcxNjM4ZWI5YzRmNDQ3ODc2YzEzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5j
cHAKQEAgLTc4LDcgKzc4LDcgQEAgQml0bWFwVGV4dHVyZUdMOjpCaXRtYXBUZXh0dXJlR0woUGFz
c1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dDNELCBjb25zdAogICAgICAgICBtX2lu
dGVybmFsRm9ybWF0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkE7CiAgICAgICAgIG1fZm9ybWF0
ID0gR3JhcGhpY3NDb250ZXh0M0Q6OkJHUkE7CiAgICAgICAgIGlmIChtX2NvbnRleHQzRC0+aXNH
TEVTMkNvbXBsaWFudCgpKSB7Ci0gICAgICAgICAgICBpZiAobV9jb250ZXh0M0QtPmdldEV4dGVu
c2lvbnMoKS0+c3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIpKQorICAg
ICAgICAgICAgaWYgKG1fY29udGV4dDNELT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VY
VF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIpKQogICAgICAgICAgICAgICAgIG1faW50ZXJuYWxG
b3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6QkdSQTsKICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICBtX2Zvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBOwpAQCAtOTksNyAr
OTksNyBAQCBzdGF0aWMgdm9pZCBzd2l6emxlQkdSQVRvUkdCQSh1aW50MzJfdCogZGF0YSwgY29u
c3QgSW50UmVjdCYgcmVjdCwgaW50IHN0cmlkZSA9CiBzdGF0aWMgYm9vbCBkcml2ZXJTdXBwb3J0
c1N1YkltYWdlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQogewogICAgIGlmIChjb250ZXh0
LT5pc0dMRVMyQ29tcGxpYW50KCkpIHsKLSAgICAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNTdWJJ
bWFnZSA9IGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX0VYVF91bnBhY2tf
c3ViaW1hZ2UiKTsKKyAgICAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNTdWJJbWFnZSA9IGNvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfRVhUX3VucGFja19zdWJpbWFnZSIpOwog
ICAgICAgICByZXR1cm4gc3VwcG9ydHNTdWJJbWFnZTsKICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294844</attachid>
            <date>2016-11-15 09:31:48 -0800</date>
            <delta_ts>2016-11-15 09:44:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164749-20161115093146.patch</filename>
            <type>text/plain</type>
            <size>134393</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4NzI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjczOTZiZWM3N2MyYmQw
ZTQ1NzQ0YzcxZTNmYjEzZTJhN2E0NjY5MC4uZjI4NDNkMTNlOTkyYWFlZDE5NTBkNGU0OTA3MDQx
ZWRjN2RiN2RmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwOCBAQAorMjAxNi0xMS0xNCAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJHTF0g
TWlncmF0ZSBjb25zdHJ1Y3Rpb24gZnVuY3Rpb25zIGZyb20gcG9pbnRlcnMgdG8gcmVmZXJlbmNl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0NzQ5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWVjaGFu
aWNhbCBmaW5kL3JlcGxhY2UuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhlcmUg
aXMgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogaHRtbC9jYW52YXMvQU5HTEVJbnN0
YW5jZWRBcnJheXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QU5HTEVJbnN0YW5jZWRBcnJheXM6
OkFOR0xFSW5zdGFuY2VkQXJyYXlzKToKKyAgICAgICAgKFdlYkNvcmU6OkFOR0xFSW5zdGFuY2Vk
QXJyYXlzOjpzdXBwb3J0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6QU5HTEVJbnN0YW5jZWRBcnJh
eXM6OmRyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpBTkdMRUlu
c3RhbmNlZEFycmF5czo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2Vi
Q29yZTo6QU5HTEVJbnN0YW5jZWRBcnJheXM6OnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSk6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuaDoKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9FWFRCbGVuZE1pbk1heC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFWFRCbGVu
ZE1pbk1heDo6RVhUQmxlbmRNaW5NYXgpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0VYVEJsZW5k
TWluTWF4Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvRVhURnJhZ0RlcHRoLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVYVEZyYWdEZXB0aDo6RVhURnJhZ0RlcHRoKToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9FWFRGcmFnRGVwdGguaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRTaGFkZXJU
ZXh0dXJlTE9ELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVYVFNoYWRlclRleHR1cmVMT0Q6OkVY
VFNoYWRlclRleHR1cmVMT0QpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0VYVFNoYWRlclRleHR1
cmVMT0QuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRUZXh0dXJlRmlsdGVyQW5pc290cm9w
aWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljOjpF
WFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0VYVFRl
eHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL0VYVHNSR0Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RVhUc1JHQjo6RVhUc1JHQik6CisgICAgICAgICogaHRt
bC9jYW52YXMvRVhUc1JHQi5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU0VsZW1lbnRJbmRl
eFVpbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T0VTRWxlbWVudEluZGV4VWludDo6T0VTRWxl
bWVudEluZGV4VWludCk6CisgICAgICAgICogaHRtbC9jYW52YXMvT0VTRWxlbWVudEluZGV4VWlu
dC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6T0VTU3RhbmRhcmREZXJpdmF0aXZlczo6T0VTU3RhbmRhcmREZXJp
dmF0aXZlcyk6CisgICAgICAgICogaHRtbC9jYW52YXMvT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5o
OgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpPRVNUZXh0dXJlRmxvYXQ6Ok9FU1RleHR1cmVGbG9hdCk6CisgICAgICAgICogaHRt
bC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvT0VTVGV4
dHVyZUZsb2F0TGluZWFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9FU1RleHR1cmVGbG9hdExp
bmVhcjo6T0VTVGV4dHVyZUZsb2F0TGluZWFyKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNU
ZXh0dXJlRmxvYXRMaW5lYXIuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFs
ZkZsb2F0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9FU1RleHR1cmVIYWxmRmxvYXQ6Ok9FU1Rl
eHR1cmVIYWxmRmxvYXQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxv
YXQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok9FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXI6Ok9FU1RleHR1
cmVIYWxmRmxvYXRMaW5lYXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1RleHR1cmVIYWxm
RmxvYXRMaW5lYXIuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPRVNWZXJ0ZXhBcnJheU9iamVjdDo6T0VTVmVydGV4
QXJyYXlPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6T0VTVmVydGV4QXJyYXlPYmplY3Q6OmNy
ZWF0ZVZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKFdlYkNvcmU6Ok9FU1ZlcnRleEFycmF5T2Jq
ZWN0OjpkZWxldGVWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJDb3JlOjpPRVNWZXJ0ZXhB
cnJheU9iamVjdDo6aXNWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJDb3JlOjpPRVNWZXJ0
ZXhBcnJheU9iamVjdDo6YmluZFZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmluaXRpYWxpemVWZXJ0ZXhBcnJheU9iamVjdHMpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aW5pdGlhbGl6ZVNoYWRlckV4dGVuc2lv
bnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZHJhd0J1ZmZl
cnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlVmVy
dGV4QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aXNW
ZXJ0ZXhBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpi
aW5kVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6Z2V0RXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
QnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQnVmZmVyOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xCdWZmZXI6OldlYkdMQnVmZmVyKToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTEJ1ZmZlci5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29tcHJl
c3NlZFRleHR1cmVBVEMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVzc2VkVGV4
dHVyZUFUQzo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQyk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpzdXBwb3J0ZWQpOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9X
ZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xD
b21wcmVzc2VkVGV4dHVyZVBWUlRDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQpOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5oOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpXZWJHTENvbXByZXNzZWRU
ZXh0dXJlUzNUQyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNU
Qzo6c3VwcG9ydGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0
dXJlUzNUQy5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29udGV4dE9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbnRleHRPYmplY3Q6OldlYkdMQ29udGV4dE9iamVj
dCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0T2JqZWN0Lmg6CisgICAgICAg
ICogaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTERlYnVnUmVuZGVyZXJJbmZvOjpXZWJHTERlYnVnUmVuZGVyZXJJbmZvKToKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTERlYnVnUmVuZGVyZXJJbmZvLmg6CisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xEZWJ1Z1NoYWRlcnM6OldlYkdMRGVidWdTaGFkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMRGVidWdTaGFkZXJzOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlKToKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMRGVwdGhUZXh0dXJlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRGVwdGhUZXh0dXJl
OjpXZWJHTERlcHRoVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTERlcHRoVGV4dHVy
ZTo6c3VwcG9ydGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5o
OgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xEcmF3QnVmZmVyczo6V2ViR0xEcmF3QnVmZmVycyk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTERyYXdCdWZmZXJzOjpzdXBwb3J0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xEcmF3QnVmZmVyczo6ZHJhd0J1ZmZlcnNXRUJHTCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTERyYXdCdWZmZXJzOjpzYXRpc2ZpZXNXZWJHTFJlcXVpcmVtZW50cyk6CisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dl
YkdMRXh0ZW5zaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRXh0ZW5zaW9uOjpXZWJH
TEV4dGVuc2lvbik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMRXh0ZW5zaW9uOjpyZWYpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xFeHRlbnNpb246OmRlcmVmKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMRXh0ZW5zaW9u
Ojpjb250ZXh0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjpXZWJHTEZyYW1lYnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OmRyYXdCdWZmZXJzSWZOZWNlc3NhcnkpOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaDoKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTExvc2VDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTG9zZUNvbnRl
eHQ6OldlYkdMTG9zZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMb3NlQ29udGV4
dDo6bG9zZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMb3NlQ29udGV4dDo6cmVz
dG9yZUNvbnRleHQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMTG9zZUNvbnRleHQuaDoK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTE9iamVjdDo6V2ViR0xPYmplY3QpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
T2JqZWN0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUHJvZ3JhbTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUHJvZ3JhbTo6V2ViR0xQcm9ncmFtKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFBy
b2dyYW0uaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFF1ZXJ5LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUXVlcnk6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFF1
ZXJ5OjpXZWJHTFF1ZXJ5KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFF1ZXJ5Lmg6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJidWZmZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmJ1ZmZlcjo6V2ViR0xSZW5kZXJidWZmZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L1dlYkdMUmVuZGVyYnVmZmVyLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6
aW5pdGlhbGl6ZVZlcnRleEFycmF5T2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnMpOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnNldHVwRmxhZ3MpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y2hlY2tPYmplY3RUb0JlQm91bmQpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRlQnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZUZyYW1lYnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0
ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
Y3JlYXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpjcmVhdGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6Y3JlYXRlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmRlbGV0ZU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVdlYkdMT2JqZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmZyYW1lYnVm
ZmVyVGV4dHVyZTJEKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmdldFVuaWZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6cmVhZFBpeGVscyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpsb3NlQ29udGV4dEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6bWF5YmVSZXN0b3JlQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzdXBwb3J0c0RyYXdCdWZmZXJzKToKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9XZWJHTFNhbXBsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xT
YW1wbGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xTYW1wbGVyOjpXZWJHTFNh
bXBsZXIpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMU2FtcGxlci5oOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMU2hh
ZGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xTaGFkZXI6OldlYkdMU2hhZGVy
KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFNoYWRlci5oOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL1dlYkdMU2hhcmVkT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMU2hh
cmVkT2JqZWN0OjpXZWJHTFNoYXJlZE9iamVjdCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2Vi
R0xTaGFyZWRPYmplY3QuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFN5bmMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xTeW5jOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xTeW5jOjpXZWJHTFN5bmMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMU3luYy5o
OgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFRleHR1cmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFRleHR1
cmU6OldlYkdMVGV4dHVyZSk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmg6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFRyYW5zZm9ybUZlZWRiYWNrOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xUcmFuc2Zvcm1GZWVkYmFjazo6V2ViR0xUcmFuc2Zvcm1GZWVkYmFjayk6
CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5oOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xWZXJ0ZXhBcnJheU9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMVmVydGV4QXJyYXlPYmplY3Q6OldlYkdMVmVydGV4QXJyYXlPYmplY3QpOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3QuaDoKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZTo6V2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJhc2Up
OgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlLmg6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6V2ViR0xWZXJ0ZXhBcnJheU9i
amVjdE9FUyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOjpk
ZWxldGVPYmplY3RJbXBsKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5
T2JqZWN0T0VTLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
M0QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjb252ZXJ0Rm9ybWF0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0M0Q6OnJlYWRQaXhlbHNBbmRDb252ZXJ0VG9CR1JBSWZOZWNlc3Nhcnkp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OnJlc2hhcGVGQk9zKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbnRlZ2Vydik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2YWxpZGF0ZURlcHRoU3Rl
bmNpbCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZHJhd0FycmF5c0lu
c3RhbmNlZCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6ZHJhd0VsZW1l
bnRzSW5zdGFuY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0
ZXhBdHRyaWJEaXZpc29yKToKKwogMjAxNi0xMS0xNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIE1vdmUgU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIgdG8gU2VjdXJpdHlPcmlnaW5EYXRhCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9BTkdMRUluc3RhbmNlZEFycmF5cy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9BTkdMRUluc3RhbmNlZEFycmF5cy5jcHAKaW5kZXgg
NDU5MDVlNjExMWNhNzg3NDUzMjhhMjZkOWU4OWVkMzMyNDc5YTZkOS4uMTdlNmQ2YzhlYjRkZmQ3
NDc3MjgwZTc3MmE5YTkyOTEyODJhZDc2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmNwcApAQCAtMzQsNyArMzQsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLUFOR0xFSW5zdGFuY2VkQXJyYXlzOjpBTkdMRUluc3RhbmNl
ZEFycmF5cyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjb250ZXh0KQorQU5HTEVJbnN0YW5j
ZWRBcnJheXM6OkFOR0xFSW5zdGFuY2VkQXJyYXlzKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Um
IGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewogfQpAQCAtNDgsMTQg
KzQ4LDE0IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIEFOR0xFSW5zdGFuY2VkQXJy
YXlzOjpnZXROYW1lKCkgY29uc3QKICAgICByZXR1cm4gQU5HTEVJbnN0YW5jZWRBcnJheXNOYW1l
OwogfQogCi1ib29sIEFOR0xFSW5zdGFuY2VkQXJyYXlzOjpzdXBwb3J0ZWQoV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSogY29udGV4dCkKK2Jvb2wgQU5HTEVJbnN0YW5jZWRBcnJheXM6OnN1cHBv
cnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogewogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKICAgICByZXR1cm4gdHJ1ZTsKICNl
bGlmIFBMQVRGT1JNKEdUSykKLSAgICBFeHRlbnNpb25zM0QqIGV4dGVuc2lvbnMgPSBjb250ZXh0
LT5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCk7Ci0gICAgcmV0dXJuIGV4dGVu
c2lvbnMtPnN1cHBvcnRzKCJHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIik7CisgICAgRXh0ZW5z
aW9uczNEJiBleHRlbnNpb25zID0gY29udGV4dC5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRl
bnNpb25zKCk7CisgICAgcmV0dXJuIGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0FOR0xFX2luc3Rh
bmNlZF9hcnJheXMiKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOwogICAgIHJl
dHVybiBmYWxzZTsKQEAgLTY0LDIzICs2NCwyMyBAQCBib29sIEFOR0xFSW5zdGFuY2VkQXJyYXlz
OjpzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29udGV4dCkKIAogdm9pZCBB
TkdMRUluc3RhbmNlZEFycmF5czo6ZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDM0RlbnVtIG1v
ZGUsIEdDM0RpbnQgZmlyc3QsIEdDM0RzaXplaSBjb3VudCwgR0MzRHNpemVpIHByaW1jb3VudCkK
IHsKLSAgICBpZiAobV9jb250ZXh0LT5pc0NvbnRleHRMb3N0KCkpCisgICAgaWYgKG1fY29udGV4
dC5pc0NvbnRleHRMb3N0KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPmRyYXdB
cnJheXNJbnN0YW5jZWQobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpOworICAgIG1fY29u
dGV4dC5kcmF3QXJyYXlzSW5zdGFuY2VkKG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsK
IH0KIAogdm9pZCBBTkdMRUluc3RhbmNlZEFycmF5czo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5H
TEUoR0MzRGVudW0gbW9kZSwgR0MzRHNpemVpIGNvdW50LCBHQzNEZW51bSB0eXBlLCBsb25nIGxv
bmcgb2Zmc2V0LCBHQzNEc2l6ZWkgcHJpbWNvdW50KQogewotICAgIGlmIChtX2NvbnRleHQtPmlz
Q29udGV4dExvc3QoKSkKKyAgICBpZiAobV9jb250ZXh0LmlzQ29udGV4dExvc3QoKSkKICAgICAg
ICAgcmV0dXJuOwotICAgIG1fY29udGV4dC0+ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNv
dW50LCB0eXBlLCBvZmZzZXQsIHByaW1jb3VudCk7CisgICAgbV9jb250ZXh0LmRyYXdFbGVtZW50
c0luc3RhbmNlZChtb2RlLCBjb3VudCwgdHlwZSwgb2Zmc2V0LCBwcmltY291bnQpOwogfQogCiB2
b2lkIEFOR0xFSW5zdGFuY2VkQXJyYXlzOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoR0MzRHVp
bnQgaW5kZXgsIEdDM0R1aW50IGRpdmlzb3IpCiB7Ci0gICAgaWYgKG1fY29udGV4dC0+aXNDb250
ZXh0TG9zdCgpKQorICAgIGlmIChtX2NvbnRleHQuaXNDb250ZXh0TG9zdCgpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJEaXZpc29yKGluZGV4LCBkaXZpc29y
KTsKKyAgICBtX2NvbnRleHQudmVydGV4QXR0cmliRGl2aXNvcihpbmRleCwgZGl2aXNvcik7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9BTkdMRUluc3RhbmNlZEFycmF5cy5oCmluZGV4IDc2NWVjZmU2ODlmNWFmM2JlYjJhYTUx
NTc1ZjJhNzU0MDc1YjVhODkuLmNkMTZjMjNiZGI5Y2ZkYTQxMDFiZWFkNmU5N2Q0NDgwYzEyMzYy
YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2Vk
QXJyYXlzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQU5HTEVJbnN0YW5jZWRB
cnJheXMuaApAQCAtMzMsMTIgKzMzLDEyIEBAIGNsYXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U7CiAKIGNsYXNzIEFOR0xFSW5zdGFuY2VkQXJyYXlzIGZpbmFsIDogcHVibGljIFdlYkdMRXh0
ZW5zaW9uIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBBTkdMRUluc3RhbmNlZEFycmF5cyhXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAgZXhwbGljaXQgQU5HTEVJbnN0YW5jZWRBcnJh
eXMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwgfkFOR0xFSW5zdGFu
Y2VkQXJyYXlzKCk7CiAKICAgICB2aXJ0dWFsIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0
OwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uq
KTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYp
OwogCiAgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0MzRGVudW0gbW9kZSwgR0Mz
RGludCBmaXJzdCwgR0MzRHNpemVpIGNvdW50LCBHQzNEc2l6ZWkgcHJpbWNvdW50KTsKICAgICB2
b2lkIGRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDM0RlbnVtIG1vZGUsIEdDM0RzaXplaSBj
b3VudCwgR0MzRGVudW0gdHlwZSwgbG9uZyBsb25nIG9mZnNldCwgR0MzRHNpemVpIHByaW1jb3Vu
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRCbGVuZE1pbk1h
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRCbGVuZE1pbk1heC5jcHAKaW5k
ZXggZjVlYWRhNjZmYTUyYjVkNmQ0OWNjYTMwZGFkMDg0YzM4ODJhZWMxYS4uNzYyYTVkOWY2NzVh
NjJmMGQ3NTE5MTMyYjgwODFiODBlYTUwOGU2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvRVhUQmxlbmRNaW5NYXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0VYVEJsZW5kTWluTWF4LmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLUVYVEJsZW5kTWluTWF4OjpFWFRCbGVuZE1pbk1heChXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlKiBjb250ZXh0KQorRVhUQmxlbmRNaW5NYXg6OkVYVEJsZW5kTWluTWF4KFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihj
b250ZXh0KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhU
QmxlbmRNaW5NYXguaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVEJsZW5kTWluTWF4
LmgKaW5kZXggOWVhZjI5ZmQ2MTEzZjE5NzBmZGFmOThhYTkzMDA0NTRjZjMxYTRmOC4uNTk1OTY4
NDRlZjNhZmZmNDEzMjQyNmMzYzAxYWZkYTA3YmRiZTE1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvRVhUQmxlbmRNaW5NYXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9FWFRCbGVuZE1pbk1heC5oCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgRVhUQmxlbmRNaW5NYXggZmluYWwgOiBwdWJsaWMgV2ViR0xFeHRl
bnNpb24gewogcHVibGljOgotICAgIGV4cGxpY2l0IEVYVEJsZW5kTWluTWF4KFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UqKTsKKyAgICBleHBsaWNpdCBFWFRCbGVuZE1pbk1heChXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVhbCB+RVhUQmxlbmRNaW5NYXgoKTsKIAogICAg
IEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhURnJhZ0RlcHRoLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0VYVEZyYWdEZXB0aC5jcHAKaW5kZXggODY3MDczNmNjYzJiOGE1NjYxNDZl
ZTg1ZjU5MTVkMWJmZmU0MzA0OS4uNjI2MzA5YzgzYmQxYzc0ZDU3NmQ1ODAyMmJlMTM0OTY2NGJl
ZGExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhURnJhZ0RlcHRo
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRGcmFnRGVwdGguY3BwCkBA
IC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRVhURnJhZ0RlcHRoOjpF
WFRGcmFnRGVwdGgoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29udGV4dCkKK0VYVEZyYWdE
ZXB0aDo6RVhURnJhZ0RlcHRoKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAg
ICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvRVhURnJhZ0RlcHRoLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9FWFRGcmFnRGVwdGguaAppbmRleCA5Y2Y3MGViMTZhMzE5NTg0ODNhMGM5YjlhYzZkNDFh
ZDdiNWFkYmE0Li41ZThhNGY5YzJmM2Q2NjEzNDJlNDhjNmQ0OTc3MDY4ZGMyMGYyOWU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRGcmFnRGVwdGguaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRGcmFnRGVwdGguaApAQCAtMzEsNyArMzEsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEVYVEZyYWdEZXB0aCBmaW5hbCA6IHB1Ymxp
YyBXZWJHTEV4dGVuc2lvbiB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgRVhURnJhZ0RlcHRoKFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBleHBsaWNpdCBFWFRGcmFnRGVwdGgoV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwgfkVYVEZyYWdEZXB0aCgpOwog
CiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRTaGFkZXJUZXh0dXJlTE9ELmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFNoYWRlclRleHR1cmVMT0QuY3BwCmluZGV4IDBk
YTMyNWQwMDgwOTZmZmRjZTg3MTM0ZTE3YzI2NzA4YzMzNjI0NTIuLjQ2ZTQwNmE0MzQ4ZWZlZDg5
OWIyMDcxMDAzNzQzZmRjM2Y3NjY0NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0VYVFNoYWRlclRleHR1cmVMT0QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0VYVFNoYWRlclRleHR1cmVMT0QuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotRVhUU2hhZGVyVGV4dHVyZUxPRDo6RVhUU2hhZGVyVGV4dHVyZUxP
RChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjb250ZXh0KQorRVhUU2hhZGVyVGV4dHVyZUxP
RDo6RVhUU2hhZGVyVGV4dHVyZUxPRChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0
KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFNoYWRlclRleHR1cmVMT0QuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0VYVFNoYWRlclRleHR1cmVMT0QuaAppbmRleCBlMDAxOTJhNzFhZmE1
MjhkMmNjMDg4MmZjMTI5ZDNhYWEyNTQ5ZjZlLi40N2MxOTJmMjA1OTk3YWNkMzAwZWUyNmJkZWMw
OTUzZWNkZmMxNDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRT
aGFkZXJUZXh0dXJlTE9ELmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUU2hh
ZGVyVGV4dHVyZUxPRC5oCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgRVhUU2hhZGVyVGV4dHVyZUxPRCBmaW5hbCA6IHB1YmxpYyBXZWJHTEV4dGVuc2lvbiB7
CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgRVhUU2hhZGVyVGV4dHVyZUxPRChXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlKik7CisgICAgZXhwbGljaXQgRVhUU2hhZGVyVGV4dHVyZUxPRChXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVhbCB+RVhUU2hhZGVyVGV4dHVyZUxPRCgp
OwogCiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlRmlsdGVyQW5pc290cm9w
aWMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUVGV4dHVyZUZpbHRlckFuaXNv
dHJvcGljLmNwcAppbmRleCBkYTc0YzRiZTEzODk2M2EyOTg1NmYzZjU5MDBhMDVhOTg3Y2E5NzNl
Li4wYmQzZGZhMmJlNzU3NDkzYjU0N2U3ZjI0YzhkMDdlOGVmMzYxZWI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFRleHR1cmVGaWx0ZXJBbmlzb3Ry
b3BpYy5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1FWFRU
ZXh0dXJlRmlsdGVyQW5pc290cm9waWM6OkVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYyhXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjb250ZXh0KQorRVhUVGV4dHVyZUZpbHRlckFuaXNvdHJv
cGljOjpFWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlRmlsdGVyQW5pc290cm9w
aWMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFRleHR1cmVGaWx0ZXJBbmlzb3Ry
b3BpYy5oCmluZGV4IGQxZjI0ZjY1MWU3NGZhYTJiMTBmNDQ5MTFjYmFjYzg1ZDQ5MzhjOWYuLjQx
OTdkNWZiYjQwNTRkODU1NWRkMDU1OTNhZTUxZTE3NzA0NzBiZTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5o
CkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRVhUVGV4dHVy
ZUZpbHRlckFuaXNvdHJvcGljIGZpbmFsIDogcHVibGljIFdlYkdMRXh0ZW5zaW9uIHsKIHB1Ymxp
YzoKLSAgICBleHBsaWNpdCBFWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMoV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSopOworICAgIGV4cGxpY2l0IEVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3Bp
YyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVhbCB+RVhUVGV4dHVyZUZp
bHRlckFuaXNvdHJvcGljKCk7CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVHNSR0Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUc1JHQi5jcHAKaW5kZXggMjRmNTA4
ODg2MzVkNGMxNjk0OGQwZjZiMzZlNTFiNzIyYjc4M2VlNS4uZTRlZGY1MWM3NDVhMGI4NzA4NTYy
MDIzODE4ZDkzYTNjMDZmNWM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvRVhUc1JHQi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUc1JHQi5j
cHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1FWFRzUkdCOjpF
WFRzUkdCKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRleHQpCitFWFRzUkdCOjpFWFRz
UkdCKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVu
c2lvbihjb250ZXh0KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvRVhUc1JHQi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUc1JHQi5oCmluZGV4
IGM3YzBkYTQxNDQ1OWE0NzRmNGMxY2MwZjc2MDBhZDFjMzNmNTEwOGQuLjRhNjljYmE3NTUyYzk1
MmI1OTVhNmMyY2YyZjczOWU1M2U4OTAzYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0VYVHNSR0IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRz
UkdCLmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBFWFRz
UkdCIGZpbmFsIDogcHVibGljIFdlYkdMRXh0ZW5zaW9uIHsKIHB1YmxpYzoKLSAgICBleHBsaWNp
dCBFWFRzUkdCKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBleHBsaWNpdCBFWFRz
UkdCKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKICAgICB2aXJ0dWFsIH5FWFRzUkdCKCk7
CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU0VsZW1lbnRJbmRleFVpbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTRWxlbWVudEluZGV4VWludC5jcHAKaW5kZXgg
NjViNjgzOGRlYjc4OTUyNDE1NDMxYzEyNGU0ODJkM2I2MTdiNTVkZS4uMTAxYzVmMTBkNzUwMGY3
YmYyZjk5MTFjMzY2M2ExMDAyNDU0NDU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvT0VTRWxlbWVudEluZGV4VWludC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvT0VTRWxlbWVudEluZGV4VWludC5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1PRVNFbGVtZW50SW5kZXhVaW50OjpPRVNFbGVtZW50SW5kZXhV
aW50KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRleHQpCitPRVNFbGVtZW50SW5kZXhV
aW50OjpPRVNFbGVtZW50SW5kZXhVaW50KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRl
eHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTRWxlbWVudEluZGV4VWludC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvT0VTRWxlbWVudEluZGV4VWludC5oCmluZGV4IDc5NjBkYTQ4ZmI0
YmE1NjNlNmViZjFmZTA0NjBkMTkwNzgyYWE5NmEuLjQ2MDMyMWQ0NDhhMThiYTczY2IxOTU1YzMy
NDdlNDUxZTFjMTFmNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09F
U0VsZW1lbnRJbmRleFVpbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNF
bGVtZW50SW5kZXhVaW50LmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBPRVNFbGVtZW50SW5kZXhVaW50IGZpbmFsIDogcHVibGljIFdlYkdMRXh0ZW5zaW9u
IHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBPRVNFbGVtZW50SW5kZXhVaW50KFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UqKTsKKyAgICBleHBsaWNpdCBPRVNFbGVtZW50SW5kZXhVaW50KFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKICAgICB2aXJ0dWFsIH5PRVNFbGVtZW50SW5kZXhVaW50
KCk7CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5j
cHAKaW5kZXggZTc1NGFjZjczYzk4ODZmN2M5YmM3Y2ZjZmEyNmM5NjBiN2I1MmM5YS4uZGNiYjgx
OWUzNDhlNDQ3OGY2ZWU0NWZmMTA3NDkwMjNjNDAzZGRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5jcHAKQEAgLTMxLDcg
KzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1PRVNTdGFuZGFyZERlcml2YXRpdmVz
OjpPRVNTdGFuZGFyZERlcml2YXRpdmVzKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRl
eHQpCitPRVNTdGFuZGFyZERlcml2YXRpdmVzOjpPRVNTdGFuZGFyZERlcml2YXRpdmVzKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250
ZXh0KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTU3Rh
bmRhcmREZXJpdmF0aXZlcy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTU3RhbmRh
cmREZXJpdmF0aXZlcy5oCmluZGV4IDNhMjk2OWRmNTdlMjAwZjUxMjRjZGUzMzUwZjZlNDRhNTc3
MjFlMzUuLmNjZmM4ODQwNjg3YzNiMTY3NWJkYTFlMmQxMWFmOTdkMjhmMjM5MDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNTdGFuZGFyZERlcml2YXRpdmVzLmgK
QEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBPRVNTdGFuZGFy
ZERlcml2YXRpdmVzIGZpbmFsIDogcHVibGljIFdlYkdMRXh0ZW5zaW9uIHsKIHB1YmxpYzoKLSAg
ICBleHBsaWNpdCBPRVNTdGFuZGFyZERlcml2YXRpdmVzKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UqKTsKKyAgICBleHBsaWNpdCBPRVNTdGFuZGFyZERlcml2YXRpdmVzKFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmKTsKICAgICB2aXJ0dWFsIH5PRVNTdGFuZGFyZERlcml2YXRpdmVzKCk7CiAK
ICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuY3BwCmluZGV4IGI4ZmZlYzdkM2Nl
OTc4NWE0MDUyZWQwYTM5MDE0MWNiZGY3MzVlOTEuLjYwZDJmN2I1MGI4YmEwMmM0MTY3OTNlMmI5
YzM4OTk4ZDFhNWU4Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09F
U1RleHR1cmVGbG9hdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4
dHVyZUZsb2F0LmNwcApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LU9FU1RleHR1cmVGbG9hdDo6T0VTVGV4dHVyZUZsb2F0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UqIGNvbnRleHQpCitPRVNUZXh0dXJlRmxvYXQ6Ok9FU1RleHR1cmVGbG9hdChXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkK
IHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVG
bG9hdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0LmgKaW5k
ZXggYWJhNzlkMzFiMjJhNDlmODNlOTUzODRmYzA5NjlkYjg2OWVmZjM1YS4uZTdjMDcxNWRkNzBk
NzZiOTE4ZjVhMjJhYzYxM2I1ZDRlYTVmMzQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvT0VTVGV4dHVyZUZsb2F0LmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBPRVNUZXh0dXJlRmxvYXQgZmluYWwgOiBwdWJsaWMgV2ViR0xFeHRlbnNp
b24gewogcHVibGljOgotICAgIE9FU1RleHR1cmVGbG9hdChXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlKik7CisgICAgT0VTVGV4dHVyZUZsb2F0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsK
ICAgICB2aXJ0dWFsIH5PRVNUZXh0dXJlRmxvYXQoKTsKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0
TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvT0VTVGV4dHVyZUZsb2F0TGluZWFyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL09FU1RleHR1cmVGbG9hdExpbmVhci5jcHAKaW5kZXggMmExMGE1MGFkZWZhMDVhZGNiNTQy
Y2NjNGE4YzhmZjI5MzBiNDBlZS4uZmNlOTE3OTA4NGRkMzJiMDE1Y2M3MDkxZWY5MTc1MDQzNmU4
M2JjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZs
b2F0TGluZWFyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJl
RmxvYXRMaW5lYXIuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotT0VTVGV4dHVyZUZsb2F0TGluZWFyOjpPRVNUZXh0dXJlRmxvYXRMaW5lYXIoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSogY29udGV4dCkKK09FU1RleHR1cmVGbG9hdExpbmVhcjo6T0VTVGV4
dHVyZUZsb2F0TGluZWFyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAg
OiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0TGluZWFyLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXRMaW5lYXIuaAppbmRleCA1N2RiYWRkNmM4MDg4NGE5
NjYzZTkxYTE5MDQxMmExNDI1YTlkZGIxLi45M2RkMTM0NjBjZDNhYzA1Y2U1MWM3M2E1MDVkM2M4
NGM2YTNmM2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0
dXJlRmxvYXRMaW5lYXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0
dXJlRmxvYXRMaW5lYXIuaApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIE9FU1RleHR1cmVGbG9hdExpbmVhciBmaW5hbCA6IHB1YmxpYyBXZWJHTEV4dGVuc2lv
biB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgT0VTVGV4dHVyZUZsb2F0TGluZWFyKFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBleHBsaWNpdCBPRVNUZXh0dXJlRmxvYXRMaW5lYXIo
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwgfk9FU1RleHR1cmVGbG9h
dExpbmVhcigpOwogCiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZs
b2F0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQu
Y3BwCmluZGV4IGJkZDE2N2MwMzI3YTNmODVhYzc0YWNjNzg2OGEwMjNlMmM4ZmQ0MDcuLmYxZjc0
OTZkZDJkY2UwZWYxMjcwYTM0YTQwMTk1NThiYzZjMjE5NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQuY3BwCkBAIC0zMSw3ICszMSw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotT0VTVGV4dHVyZUhhbGZGbG9hdDo6T0VTVGV4
dHVyZUhhbGZGbG9hdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjb250ZXh0KQorT0VTVGV4
dHVyZUhhbGZGbG9hdDo6T0VTVGV4dHVyZUhhbGZGbG9hdChXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQuaAppbmRleCA3
MjVlYzY2NTQ0ZDAxYWJhOTg5YjZkMWUyYTAwNzE4MTE1Y2RkOTJhLi5iM2Y2NzZkZDczYWE1NTAw
ZjE4NzVmNzIwZjBjN2ExMWFjMDAyNDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5oCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgT0VTVGV4dHVyZUhhbGZGbG9hdCBmaW5hbCA6IHB1YmxpYyBXZWJH
TEV4dGVuc2lvbiB7CiBwdWJsaWM6Ci0gICAgT0VTVGV4dHVyZUhhbGZGbG9hdChXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlKik7CisgICAgT0VTVGV4dHVyZUhhbGZGbG9hdChXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVhbCB+T0VTVGV4dHVyZUhhbGZGbG9hdCgpOwogCiAg
ICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXIuY3Bw
CmluZGV4IDQyMTFjODA2MjczMzNiYmJlNDFiYTk1NWRmNDBjOWE1MzU1MTJkYjQuLjM1OWUzMDAx
NmUzOTZiOTU2NTY4OTAwMzE2MDkyODhiYTc2NzIxYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXIuY3BwCkBAIC0z
MCw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotT0VTVGV4dHVyZUhhbGZGbG9h
dExpbmVhcjo6T0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhcihXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlKiBjb250ZXh0KQorT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhcjo6T0VTVGV4dHVyZUhhbGZG
bG9hdExpbmVhcihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2Vi
R0xFeHRlbnNpb24oY29udGV4dCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXIuaAppbmRleCBlZGM1MjlhOWZhNjYz
MTdlNDg2NGFlZjA3NWI0Nzg1N2I3ZWVhOWVmLi40ODEwYTExMmJhOWU5MmE1ZmNlZjQwODMyNjJl
OWFkZWJhZmFjNzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNU
ZXh0dXJlSGFsZkZsb2F0TGluZWFyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
T0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhci5oCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhciBmaW5hbCA6IHB1Ymxp
YyBXZWJHTEV4dGVuc2lvbiB7CiBwdWJsaWM6Ci0gICAgT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVh
cihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAgT0VTVGV4dHVyZUhhbGZGbG9hdExp
bmVhcihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVhbCB+T0VTVGV4dHVy
ZUhhbGZGbG9hdExpbmVhcigpOwogCiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNWZXJ0
ZXhBcnJheU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNWZXJ0ZXhB
cnJheU9iamVjdC5jcHAKaW5kZXggNGUwNjE2NmQxZDcyYTU5ZWZjMTM2NzJhYzdjNjZmMjhkNTc2
ZWFjOC4uYzhiMTBmN2JmYmM2ODFkOGFhODU5NTlhM2YxZTI3ZDYzNzhlNjlhZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcApA
QCAtMzUsNyArMzUsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBPRVNWZXJ0ZXhBcnJheU9i
amVjdDo6T0VTVmVydGV4QXJyYXlPYmplY3QoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29u
dGV4dCkKLSAgICA6IFdlYkdMRXh0ZW5zaW9uKCZjb250ZXh0KQorICAgIDogV2ViR0xFeHRlbnNp
b24oY29udGV4dCkKIHsKIH0KIApAQCAtNDYsNDMgKzQ2LDQzIEBAIFdlYkdMRXh0ZW5zaW9uOjpF
eHRlbnNpb25OYW1lIE9FU1ZlcnRleEFycmF5T2JqZWN0OjpnZXROYW1lKCkgY29uc3QKIAogUmVm
UHRyPFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM+IE9FU1ZlcnRleEFycmF5T2JqZWN0OjpjcmVh
dGVWZXJ0ZXhBcnJheU9FUygpCiB7Ci0gICAgaWYgKG1fY29udGV4dC0+aXNDb250ZXh0TG9zdCgp
KQorICAgIGlmIChtX2NvbnRleHQuaXNDb250ZXh0TG9zdCgpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIGF1dG8gb2JqZWN0ID0gV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6Y3Jl
YXRlKG1fY29udGV4dCwgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6VkFPVHlwZVVzZXIpOwot
ICAgIG1fY29udGV4dC0+YWRkQ29udGV4dE9iamVjdChvYmplY3QucHRyKCkpOworICAgIG1fY29u
dGV4dC5hZGRDb250ZXh0T2JqZWN0KG9iamVjdC5wdHIoKSk7CiAgICAgcmV0dXJuIFdURk1vdmUo
b2JqZWN0KTsKIH0KIAogdm9pZCBPRVNWZXJ0ZXhBcnJheU9iamVjdDo6ZGVsZXRlVmVydGV4QXJy
YXlPRVMoV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUyogYXJyYXlPYmplY3QpCiB7Ci0gICAgaWYg
KCFhcnJheU9iamVjdCB8fCBtX2NvbnRleHQtPmlzQ29udGV4dExvc3QoKSkKKyAgICBpZiAoIWFy
cmF5T2JqZWN0IHx8IG1fY29udGV4dC5pc0NvbnRleHRMb3N0KCkpCiAgICAgICAgIHJldHVybjsK
ICAgICAKLSAgICBpZiAoIWFycmF5T2JqZWN0LT5pc0RlZmF1bHRPYmplY3QoKSAmJiBhcnJheU9i
amVjdCA9PSBzdGF0aWNfY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHQqPihtX2NvbnRleHQpLT5t
X2JvdW5kVmVydGV4QXJyYXlPYmplY3QpCi0gICAgICAgIHN0YXRpY19jYXN0PFdlYkdMUmVuZGVy
aW5nQ29udGV4dCo+KG1fY29udGV4dCktPnNldEJvdW5kVmVydGV4QXJyYXlPYmplY3QoMCk7Cisg
ICAgaWYgKCFhcnJheU9iamVjdC0+aXNEZWZhdWx0T2JqZWN0KCkgJiYgYXJyYXlPYmplY3QgPT0g
c3RhdGljX2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0Kj4oJm1fY29udGV4dCktPm1fYm91bmRW
ZXJ0ZXhBcnJheU9iamVjdCkKKyAgICAgICAgc3RhdGljX2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250
ZXh0Kj4oJm1fY29udGV4dCktPnNldEJvdW5kVmVydGV4QXJyYXlPYmplY3QoMCk7CiAKLSAgICBh
cnJheU9iamVjdC0+ZGVsZXRlT2JqZWN0KG1fY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0M0QoKSk7
CisgICAgYXJyYXlPYmplY3QtPmRlbGV0ZU9iamVjdChtX2NvbnRleHQuZ3JhcGhpY3NDb250ZXh0
M0QoKSk7CiB9CiAKIEdDM0Rib29sZWFuIE9FU1ZlcnRleEFycmF5T2JqZWN0Ojppc1ZlcnRleEFy
cmF5T0VTKFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMqIGFycmF5T2JqZWN0KQogewotICAgIHJl
dHVybiBhcnJheU9iamVjdCAmJiAhbV9jb250ZXh0LT5pc0NvbnRleHRMb3N0KCkgJiYgYXJyYXlP
YmplY3QtPmhhc0V2ZXJCZWVuQm91bmQoKQotICAgICAgICAmJiBtX2NvbnRleHQtPmdyYXBoaWNz
Q29udGV4dDNEKCktPmdldEV4dGVuc2lvbnMoKS0+aXNWZXJ0ZXhBcnJheU9FUyhhcnJheU9iamVj
dC0+b2JqZWN0KCkpOworICAgIHJldHVybiBhcnJheU9iamVjdCAmJiAhbV9jb250ZXh0LmlzQ29u
dGV4dExvc3QoKSAmJiBhcnJheU9iamVjdC0+aGFzRXZlckJlZW5Cb3VuZCgpCisgICAgICAgICYm
IG1fY29udGV4dC5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCkuaXNWZXJ0ZXhB
cnJheU9FUyhhcnJheU9iamVjdC0+b2JqZWN0KCkpOwogfQogCiB2b2lkIE9FU1ZlcnRleEFycmF5
T2JqZWN0OjpiaW5kVmVydGV4QXJyYXlPRVMoV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUyogYXJy
YXlPYmplY3QpCiB7Ci0gICAgaWYgKG1fY29udGV4dC0+aXNDb250ZXh0TG9zdCgpKQorICAgIGlm
IChtX2NvbnRleHQuaXNDb250ZXh0TG9zdCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAo
YXJyYXlPYmplY3QgJiYgKGFycmF5T2JqZWN0LT5pc0RlbGV0ZWQoKSB8fCAhYXJyYXlPYmplY3Qt
PnZhbGlkYXRlKDAsIGNvbnRleHQoKSkpKSB7Ci0gICAgICAgIG1fY29udGV4dC0+Z3JhcGhpY3ND
b250ZXh0M0QoKS0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURf
T1BFUkFUSU9OKTsKKyAgICBpZiAoYXJyYXlPYmplY3QgJiYgKGFycmF5T2JqZWN0LT5pc0RlbGV0
ZWQoKSB8fCAhYXJyYXlPYmplY3QtPnZhbGlkYXRlKG51bGxwdHIsIGNvbnRleHQoKSkpKSB7Cisg
ICAgICAgIG1fY29udGV4dC5ncmFwaGljc0NvbnRleHQzRCgpLT5zeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgYXV0byYgZXh0ZW5zaW9ucyA9ICptX2NvbnRleHQtPmdyYXBoaWNzQ29udGV4
dDNEKCktPmdldEV4dGVuc2lvbnMoKTsKLSAgICBhdXRvJiBjb250ZXh0ID0gZG93bmNhc3Q8V2Vi
R0xSZW5kZXJpbmdDb250ZXh0PigqbV9jb250ZXh0KTsKKyAgICBhdXRvJiBleHRlbnNpb25zID0g
bV9jb250ZXh0LmdyYXBoaWNzQ29udGV4dDNEKCktPmdldEV4dGVuc2lvbnMoKTsKKyAgICBhdXRv
JiBjb250ZXh0ID0gZG93bmNhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0PihtX2NvbnRleHQpOwog
ICAgIGlmIChhcnJheU9iamVjdCAmJiAhYXJyYXlPYmplY3QtPmlzRGVmYXVsdE9iamVjdCgpICYm
IGFycmF5T2JqZWN0LT5vYmplY3QoKSkgewogICAgICAgICBleHRlbnNpb25zLmJpbmRWZXJ0ZXhB
cnJheU9FUyhhcnJheU9iamVjdC0+b2JqZWN0KCkpOwogICAgICAgICBhcnJheU9iamVjdC0+c2V0
SGFzRXZlckJlZW5Cb3VuZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBlZTE0MGE4Mzc2NjZkOTc3NWEzZWU3
ODg5YmI3NjAzOTE2NDg2ZGEwLi40NmM0NmRkNTJjOGY3YWJlYmQ1M2M5NWNjYzUxMzhmNWM2NTI3
NDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJp
bmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5k
ZXJpbmdDb250ZXh0LmNwcApAQCAtNzMsNyArNzMsNyBAQCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
OjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0KEhUTUxDYW52YXNFbGVtZW50JiBwYXNzZWRDYW52YXMs
CiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aW5pdGlhbGl6ZVZlcnRleEFycmF5T2Jq
ZWN0cygpCiB7Ci0gICAgbV9kZWZhdWx0VmVydGV4QXJyYXlPYmplY3QgPSBXZWJHTFZlcnRleEFy
cmF5T2JqZWN0OjpjcmVhdGUodGhpcywgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdDo6VkFPVHlwZURl
ZmF1bHQpOworICAgIG1fZGVmYXVsdFZlcnRleEFycmF5T2JqZWN0ID0gV2ViR0xWZXJ0ZXhBcnJh
eU9iamVjdDo6Y3JlYXRlKCp0aGlzLCBXZWJHTFZlcnRleEFycmF5T2JqZWN0OjpWQU9UeXBlRGVm
YXVsdCk7CiAgICAgYWRkQ29udGV4dE9iamVjdChtX2RlZmF1bHRWZXJ0ZXhBcnJheU9iamVjdC5n
ZXQoKSk7CiAgICAgbV9ib3VuZFZlcnRleEFycmF5T2JqZWN0ID0gbV9kZWZhdWx0VmVydGV4QXJy
YXlPYmplY3Q7CiAgICAgaWYgKCFpc0dMRVMyQ29tcGxpYW50KCkpCkBAIC04MiwxMCArODIsMTAg
QEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppbml0aWFsaXplVmVydGV4QXJyYXlPYmpl
Y3RzKCkKIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppbml0aWFsaXplU2hhZGVyRXh0
ZW5zaW9ucygpCiB7Ci0gICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJs
ZWQoIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpOwotICAgIG1fY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKCJHTF9FWFRfZHJhd19idWZmZXJzIik7Ci0gICAgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9zaGFkZXJfdGV4
dHVyZV9sb2QiKTsKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxl
ZCgiR0xfRVhUX2ZyYWdfZGVwdGgiKTsKKyAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5l
bnN1cmVFbmFibGVkKCJHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiKTsKKyAgICBtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9FWFRfZHJhd19idWZmZXJzIik7
CisgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3No
YWRlcl90ZXh0dXJlX2xvZCIpOworICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3Vy
ZUVuYWJsZWQoIkdMX0VYVF9mcmFnX2RlcHRoIik7CiB9CiAKIGlubGluZSBzdGF0aWMgT3B0aW9u
YWw8dW5zaWduZWQ+IGFycmF5QnVmZmVyVmlld0VsZW1lbnRTaXplKGNvbnN0IEFycmF5QnVmZmVy
VmlldyYgZGF0YSkKQEAgLTQ5NCw3ICs0OTQsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OmRyYXdCdWZmZXJzKFZlY3RvcjxHQzNEZW51bT4gYnVmZmVycykKICAgICAgICAgfQogICAg
ICAgICAvLyBCZWNhdXNlIHRoZSBiYWNrYnVmZmVyIGlzIHNpbXVsYXRlZCBvbiBhbGwgY3VycmVu
dCBXZWJLaXQgcG9ydHMsIHdlIG5lZWQgdG8gY2hhbmdlIEJBQ0sgdG8gQ09MT1JfQVRUQUNITUVO
VDAuCiAgICAgICAgIEdDM0RlbnVtIHZhbHVlID0gKGJ1ZnNbMF0gPT0gR3JhcGhpY3NDb250ZXh0
M0Q6OkJBQ0spID8gR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwIDogR3JhcGhp
Y3NDb250ZXh0M0Q6Ok5PTkU7Ci0gICAgICAgIGdyYXBoaWNzQ29udGV4dDNEKCktPmdldEV4dGVu
c2lvbnMoKS0+ZHJhd0J1ZmZlcnNFWFQoMSwgJnZhbHVlKTsKKyAgICAgICAgZ3JhcGhpY3NDb250
ZXh0M0QoKS0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZmZXJzRVhUKDEsICZ2YWx1ZSk7CiAgICAg
ICAgIHNldEJhY2tEcmF3QnVmZmVyKGJ1ZnNbMF0pOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlm
IChuID4gZ2V0TWF4RHJhd0J1ZmZlcnMoKSkgewpAQCAtNzk0LDcgKzc5NCw3IEBAIFJlZlB0cjxX
ZWJHTFZlcnRleEFycmF5T2JqZWN0PiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVWZXJ0
ZXhBcnJheSgpCiAgICAgaWYgKGlzQ29udGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgCi0gICAgYXV0byBvYmplY3QgPSBXZWJHTFZlcnRleEFycmF5T2JqZWN0OjpjcmVh
dGUodGhpcywgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdDo6VkFPVHlwZVVzZXIpOworICAgIGF1dG8g
b2JqZWN0ID0gV2ViR0xWZXJ0ZXhBcnJheU9iamVjdDo6Y3JlYXRlKCp0aGlzLCBXZWJHTFZlcnRl
eEFycmF5T2JqZWN0OjpWQU9UeXBlVXNlcik7CiAgICAgYWRkQ29udGV4dE9iamVjdChvYmplY3Qu
cHRyKCkpOwogICAgIHJldHVybiBXVEZNb3ZlKG9iamVjdCk7CiB9CkBAIC04MTgsNyArODE4LDcg
QEAgR0MzRGJvb2xlYW4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aXNWZXJ0ZXhBcnJheShXZWJH
TFZlcnRleEFycmF5T2JqZWN0KiBhcnJheU8KICAgICBpZiAoIWFycmF5T2JqZWN0IHx8IGlzQ29u
dGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCi0gICAgaWYgKCFhcnJheU9iamVj
dC0+aGFzRXZlckJlZW5Cb3VuZCgpIHx8ICFhcnJheU9iamVjdC0+dmFsaWRhdGUoMCwgdGhpcykp
CisgICAgaWYgKCFhcnJheU9iamVjdC0+aGFzRXZlckJlZW5Cb3VuZCgpIHx8ICFhcnJheU9iamVj
dC0+dmFsaWRhdGUoMCwgKnRoaXMpKQogICAgICAgICByZXR1cm4gMDsKICAgICAKICAgICByZXR1
cm4gbV9jb250ZXh0LT5pc1ZlcnRleEFycmF5KGFycmF5T2JqZWN0LT5vYmplY3QoKSk7CkBAIC04
MjksNyArODI5LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiaW5kVmVydGV4QXJy
YXkoV2ViR0xWZXJ0ZXhBcnJheU9iamVjdCogYXJyYXlPYmplY3QKICAgICBpZiAoaXNDb250ZXh0
TG9zdCgpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgaWYgKGFycmF5T2JqZWN0ICYmIChh
cnJheU9iamVjdC0+aXNEZWxldGVkKCkgfHwgIWFycmF5T2JqZWN0LT52YWxpZGF0ZSgwLCB0aGlz
KSB8fCAhbV9jb250ZXh0T2JqZWN0cy5jb250YWlucyhhcnJheU9iamVjdCkpKSB7CisgICAgaWYg
KGFycmF5T2JqZWN0ICYmIChhcnJheU9iamVjdC0+aXNEZWxldGVkKCkgfHwgIWFycmF5T2JqZWN0
LT52YWxpZGF0ZSgwLCAqdGhpcykgfHwgIW1fY29udGV4dE9iamVjdHMuY29udGFpbnMoYXJyYXlP
YmplY3QpKSkgewogICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNz
Q29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC04NTAsODUgKzg1MCw4NSBAQCBXZWJHTEV4dGVuc2lvbiogV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICBpZiAoKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIkVYVF90ZXh0dXJl
X2ZpbHRlcl9hbmlzb3Ryb3BpYyIpIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIldF
QktJVF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKSkKLSAgICAgICAgJiYgbV9jb250
ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5p
c290cm9waWMiKSkgeworICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBw
b3J0cygiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIikpIHsKICAgICAgICAgaWYg
KCFtX2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYykgewotICAgICAgICAgICAgbV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9h
bmlzb3Ryb3BpYyIpOwotICAgICAgICAgICAgbV9leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMg
PSBzdGQ6Om1ha2VfdW5pcXVlPEVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYz4odGhpcyk7Cisg
ICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9F
WFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKTsKKyAgICAgICAgICAgIG1fZXh0VGV4dHVy
ZUZpbHRlckFuaXNvdHJvcGljID0gc3RkOjptYWtlX3VuaXF1ZTxFWFRUZXh0dXJlRmlsdGVyQW5p
c290cm9waWM+KCp0aGlzKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbV9leHRUZXh0dXJl
RmlsdGVyQW5pc290cm9waWMuZ2V0KCk7CiAgICAgfQogICAgIGlmIChlcXVhbElnbm9yaW5nQVND
SUlDYXNlKG5hbWUsICJPRVNfdGV4dHVyZV9mbG9hdCIpCi0gICAgICAgICYmIG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfZmxvYXQiKSkgeworICAg
ICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3RleHR1
cmVfZmxvYXQiKSkgewogICAgICAgICBpZiAoIW1fb2VzVGV4dHVyZUZsb2F0KSB7Ci0gICAgICAg
ICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3Rl
eHR1cmVfZmxvYXQiKTsKLSAgICAgICAgICAgIG1fb2VzVGV4dHVyZUZsb2F0ID0gc3RkOjptYWtl
X3VuaXF1ZTxPRVNUZXh0dXJlRmxvYXQ+KHRoaXMpOworICAgICAgICAgICAgbV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3RleHR1cmVfZmxvYXQiKTsKKyAg
ICAgICAgICAgIG1fb2VzVGV4dHVyZUZsb2F0ID0gc3RkOjptYWtlX3VuaXF1ZTxPRVNUZXh0dXJl
RmxvYXQ+KCp0aGlzKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbV9vZXNUZXh0dXJlRmxv
YXQuZ2V0KCk7CiAgICAgfQogICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJP
RVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiKQotICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIpKSB7CisgICAg
ICAgICYmIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVy
ZV9mbG9hdF9saW5lYXIiKSkgewogICAgICAgICBpZiAoIW1fb2VzVGV4dHVyZUZsb2F0TGluZWFy
KSB7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxl
ZCgiR0xfT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIik7Ci0gICAgICAgICAgICBtX29lc1RleHR1
cmVGbG9hdExpbmVhciA9IHN0ZDo6bWFrZV91bmlxdWU8T0VTVGV4dHVyZUZsb2F0TGluZWFyPih0
aGlzKTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJs
ZWQoIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIpOworICAgICAgICAgICAgbV9vZXNUZXh0
dXJlRmxvYXRMaW5lYXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9FU1RleHR1cmVGbG9hdExpbmVhcj4o
KnRoaXMpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX29lc1RleHR1cmVGbG9hdExpbmVh
ci5nZXQoKTsKICAgICB9CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIk9F
U190ZXh0dXJlX2hhbGZfZmxvYXQiKQotICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS0+c3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQiKSkgeworICAgICAgICAm
JiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfaGFs
Zl9mbG9hdCIpKSB7CiAgICAgICAgIGlmICghbV9vZXNUZXh0dXJlSGFsZkZsb2F0KSB7Ci0gICAg
ICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfT0VT
X3RleHR1cmVfaGFsZl9mbG9hdCIpOwotICAgICAgICAgICAgbV9vZXNUZXh0dXJlSGFsZkZsb2F0
ID0gc3RkOjptYWtlX3VuaXF1ZTxPRVNUZXh0dXJlSGFsZkZsb2F0Pih0aGlzKTsKKyAgICAgICAg
ICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX09FU190ZXh0
dXJlX2hhbGZfZmxvYXQiKTsKKyAgICAgICAgICAgIG1fb2VzVGV4dHVyZUhhbGZGbG9hdCA9IHN0
ZDo6bWFrZV91bmlxdWU8T0VTVGV4dHVyZUhhbGZGbG9hdD4oKnRoaXMpOwogICAgICAgICB9CiAg
ICAgICAgIHJldHVybiBtX29lc1RleHR1cmVIYWxmRmxvYXQuZ2V0KCk7CiAgICAgfQogICAgIGlm
IChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xp
bmVhciIpCi0gICAgICAgICYmIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygi
R0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKSkgeworICAgICAgICAmJiBtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9s
aW5lYXIiKSkgewogICAgICAgICBpZiAoIW1fb2VzVGV4dHVyZUhhbGZGbG9hdExpbmVhcikgewot
ICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdM
X09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIik7Ci0gICAgICAgICAgICBtX29lc1RleHR1
cmVIYWxmRmxvYXRMaW5lYXIgPSBzdGQ6Om1ha2VfdW5pcXVlPE9FU1RleHR1cmVIYWxmRmxvYXRM
aW5lYXI+KHRoaXMpOworICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5z
dXJlRW5hYmxlZCgiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKTsKKyAgICAgICAg
ICAgIG1fb2VzVGV4dHVyZUhhbGZGbG9hdExpbmVhciA9IHN0ZDo6bWFrZV91bmlxdWU8T0VTVGV4
dHVyZUhhbGZGbG9hdExpbmVhcj4oKnRoaXMpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBt
X29lc1RleHR1cmVIYWxmRmxvYXRMaW5lYXIuZ2V0KCk7CiAgICAgfQogICAgIGlmIChlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKG5hbWUsICJXRUJHTF9sb3NlX2NvbnRleHQiKSkgewogICAgICAgICBp
ZiAoIW1fd2ViZ2xMb3NlQ29udGV4dCkKLSAgICAgICAgICAgIG1fd2ViZ2xMb3NlQ29udGV4dCA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xMb3NlQ29udGV4dD4odGhpcyk7CisgICAgICAgICAgICBt
X3dlYmdsTG9zZUNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMTG9zZUNvbnRleHQ+KCp0
aGlzKTsKICAgICAgICAgcmV0dXJuIG1fd2ViZ2xMb3NlQ29udGV4dC5nZXQoKTsKICAgICB9CiAg
ICAgaWYgKChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJXRUJLSVRfV0VCR0xfY29tcHJl
c3NlZF90ZXh0dXJlX2F0YyIpKQotICAgICAgICAmJiBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRD
OjpzdXBwb3J0ZWQodGhpcykpIHsKKyAgICAgICAgJiYgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFU
Qzo6c3VwcG9ydGVkKCp0aGlzKSkgewogICAgICAgICBpZiAoIW1fd2ViZ2xDb21wcmVzc2VkVGV4
dHVyZUFUQykKLSAgICAgICAgICAgIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZUFUQyA9IHN0ZDo6
bWFrZV91bmlxdWU8V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQz4odGhpcyk7CisgICAgICAgICAg
ICBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBVEMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVBVEM+KCp0aGlzKTsKICAgICAgICAgcmV0dXJuIG1fd2ViZ2xDb21wcmVz
c2VkVGV4dHVyZUFUQy5nZXQoKTsKICAgICB9CiAgICAgaWYgKChlcXVhbElnbm9yaW5nQVNDSUlD
YXNlKG5hbWUsICJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIikpCi0gICAg
ICAgICYmIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVkKHRoaXMpKSB7Cisg
ICAgICAgICYmIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVkKCp0aGlzKSkg
ewogICAgICAgICBpZiAoIW1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVBWUlRDKQotICAgICAgICAg
ICAgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUFZSVEMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVQVlJUQz4odGhpcyk7CisgICAgICAgICAgICBtX3dlYmdsQ29tcHJl
c3NlZFRleHR1cmVQVlJUQyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVBWUlRDPigqdGhpcyk7CiAgICAgICAgIHJldHVybiBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVQ
VlJUQy5nZXQoKTsKICAgICB9CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwg
IldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIikKLSAgICAgICAgJiYgV2ViR0xDb21wcmVz
c2VkVGV4dHVyZVMzVEM6OnN1cHBvcnRlZCh0aGlzKSkgeworICAgICAgICAmJiBXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlUzNUQzo6c3VwcG9ydGVkKCp0aGlzKSkgewogICAgICAgICBpZiAoIW1fd2Vi
Z2xDb21wcmVzc2VkVGV4dHVyZVMzVEMpCi0gICAgICAgICAgICBtX3dlYmdsQ29tcHJlc3NlZFRl
eHR1cmVTM1RDID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQz4o
dGhpcyk7CisgICAgICAgICAgICBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVTM1RDID0gc3RkOjpt
YWtlX3VuaXF1ZTxXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQz4oKnRoaXMpOwogICAgICAgICBy
ZXR1cm4gbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUzNUQy5nZXQoKTsKICAgICB9CiAgICAgaWYg
KGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIldFQkdMX2RlcHRoX3RleHR1cmUiKQotICAg
ICAgICAmJiBXZWJHTERlcHRoVGV4dHVyZTo6c3VwcG9ydGVkKGdyYXBoaWNzQ29udGV4dDNEKCkp
KSB7CisgICAgICAgICYmIFdlYkdMRGVwdGhUZXh0dXJlOjpzdXBwb3J0ZWQoKmdyYXBoaWNzQ29u
dGV4dDNEKCkpKSB7CiAgICAgICAgIGlmICghbV93ZWJnbERlcHRoVGV4dHVyZSkgewotICAgICAg
ICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX0NIUk9N
SVVNX2RlcHRoX3RleHR1cmUiKTsKLSAgICAgICAgICAgIG1fd2ViZ2xEZXB0aFRleHR1cmUgPSBz
dGQ6Om1ha2VfdW5pcXVlPFdlYkdMRGVwdGhUZXh0dXJlPih0aGlzKTsKKyAgICAgICAgICAgIG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0NIUk9NSVVNX2RlcHRo
X3RleHR1cmUiKTsKKyAgICAgICAgICAgIG1fd2ViZ2xEZXB0aFRleHR1cmUgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYkdMRGVwdGhUZXh0dXJlPigqdGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgcmV0
dXJuIG1fd2ViZ2xEZXB0aFRleHR1cmUuZ2V0KCk7CiAgICAgfQogICAgIGlmIChlcXVhbElnbm9y
aW5nQVNDSUlDYXNlKG5hbWUsICJXRUJHTF9kZWJ1Z19yZW5kZXJlcl9pbmZvIikpIHsKICAgICAg
ICAgaWYgKCFtX3dlYmdsRGVidWdSZW5kZXJlckluZm8pCi0gICAgICAgICAgICBtX3dlYmdsRGVi
dWdSZW5kZXJlckluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMRGVidWdSZW5kZXJlckluZm8+
KHRoaXMpOworICAgICAgICAgICAgbV93ZWJnbERlYnVnUmVuZGVyZXJJbmZvID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJHTERlYnVnUmVuZGVyZXJJbmZvPigqdGhpcyk7CiAgICAgICAgIHJldHVybiBt
X3dlYmdsRGVidWdSZW5kZXJlckluZm8uZ2V0KCk7CiAgICAgfQogICAgIGlmIChlcXVhbElnbm9y
aW5nQVNDSUlDYXNlKG5hbWUsICJXRUJHTF9kZWJ1Z19zaGFkZXJzIikKLSAgICAgICAgJiYgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9BTkdMRV90cmFuc2xhdGVkX3No
YWRlcl9zb3VyY2UiKSkgeworICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5z
dXBwb3J0cygiR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIikpIHsKICAgICAgICAg
aWYgKCFtX3dlYmdsRGVidWdTaGFkZXJzKQotICAgICAgICAgICAgbV93ZWJnbERlYnVnU2hhZGVy
cyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xEZWJ1Z1NoYWRlcnM+KHRoaXMpOworICAgICAgICAg
ICAgbV93ZWJnbERlYnVnU2hhZGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xEZWJ1Z1NoYWRl
cnM+KCp0aGlzKTsKICAgICAgICAgcmV0dXJuIG1fd2ViZ2xEZWJ1Z1NoYWRlcnMuZ2V0KCk7CiAg
ICAgfQogCkBAIC05NDIsMjYgKzk0MiwyNiBAQCBWZWN0b3I8U3RyaW5nPiBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCkKICAgICBpZiAobV9pc1BlbmRpbmdQ
b2xpY3lSZXNvbHV0aW9uKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0gICAgaWYgKG1fY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfZmxvYXQiKSkK
KyAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX09FU190ZXh0
dXJlX2Zsb2F0IikpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU190ZXh0dXJlX2Zsb2F0Iik7
Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3Rl
eHR1cmVfZmxvYXRfbGluZWFyIikpCisgICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiKSkKICAgICAgICAgcmVzdWx0
LmFwcGVuZCgiT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIik7Ci0gICAgaWYgKG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpKQor
ICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3RleHR1
cmVfaGFsZl9mbG9hdCIpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9oYWxm
X2Zsb2F0Iik7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygi
R0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKSkKKyAgICBpZiAobV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFy
IikpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFy
Iik7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfRVhU
X3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIikpCisgICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKSkK
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCS0lUX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ry
b3BpYyIpOwotICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpzdXBwb3J0ZWQodGhp
cykpCisgICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OnN1cHBvcnRlZCgqdGhpcykp
CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVf
YXRjIik7Ci0gICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6c3VwcG9ydGVkKHRo
aXMpKQorICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBvcnRlZCgqdGhp
cykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1
cmVfcHZydGMiKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBvcnRl
ZCh0aGlzKSkKKyAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBvcnRlZCgq
dGhpcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9z
M3RjIik7Ci0gICAgaWYgKFdlYkdMRGVwdGhUZXh0dXJlOjpzdXBwb3J0ZWQoZ3JhcGhpY3NDb250
ZXh0M0QoKSkpCisgICAgaWYgKFdlYkdMRGVwdGhUZXh0dXJlOjpzdXBwb3J0ZWQoKmdyYXBoaWNz
Q29udGV4dDNEKCkpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9kZXB0aF90ZXh0dXJl
Iik7CiAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfbG9zZV9jb250ZXh0Iik7Ci0gICAgaWYgKG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfQU5HTEVfdHJhbnNsYXRlZF9z
aGFkZXJfc291cmNlIikpCisgICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBv
cnRzKCJHTF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UiKSkKICAgICAgICAgcmVzdWx0
LmFwcGVuZCgiV0VCR0xfZGVidWdfc2hhZGVycyIpOwogICAgIHJlc3VsdC5hcHBlbmQoIldFQkdM
X2RlYnVnX3JlbmRlcmVyX2luZm8iKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xCdWZmZXIuY3BwCmluZGV4IGFhM2E5ZGI0ZmY0OGVlMWIxNjJlZjk0YTViYjMyZmZmNjFiZDU2
MzEuLmRmMTc3MTFkYjBiODllYWQwMzhmNzNjMzFkMjJmZTFlMzJhNWUzY2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAKQEAgLTM0LDE4ICszNCwxOCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxXZWJHTEJ1ZmZlcj4gV2ViR0xCdWZmZXI6OmNy
ZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjdHgpCitSZWY8V2ViR0xCdWZmZXI+IFdl
YkdMQnVmZmVyOjpjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY3R4KQogewogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdMQnVmZmVyKGN0eCkpOwogfQogCi1XZWJHTEJ1ZmZl
cjo6V2ViR0xCdWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY3R4KQorV2ViR0xCdWZm
ZXI6OldlYkdMQnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGN0eCkKICAgICA6IFdl
YkdMU2hhcmVkT2JqZWN0KGN0eCkKICAgICAsIG1fdGFyZ2V0KDApCiAgICAgLCBtX2J5dGVMZW5n
dGgoMCkKICAgICAsIG1fbmV4dEF2YWlsYWJsZUNhY2hlRW50cnkoMCkKIHsKLSAgICBzZXRPYmpl
Y3QoY3R4LT5ncmFwaGljc0NvbnRleHQzRCgpLT5jcmVhdGVCdWZmZXIoKSk7CisgICAgc2V0T2Jq
ZWN0KGN0eC5ncmFwaGljc0NvbnRleHQzRCgpLT5jcmVhdGVCdWZmZXIoKSk7CiAgICAgY2xlYXJD
YWNoZWRNYXhJbmRpY2VzKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1
ZmZlci5oCmluZGV4IGE5ZjMzODg4ZTQ5MDEwMzY1OTY2ZWMzMzVlYTA3MWJmNGMyODE2MmYuLjFi
NDE0ZThmYzlhMTM1YTljZWMwYmNkNmM2ZjIyZTA5YzI3NzFkNGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBXZWJHTEJ1
ZmZlciBmaW5hbCA6IHB1YmxpYyBXZWJHTFNoYXJlZE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdmly
dHVhbCB+V2ViR0xCdWZmZXIoKTsKIAotICAgIHN0YXRpYyBSZWY8V2ViR0xCdWZmZXI+IGNyZWF0
ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAgc3RhdGljIFJlZjxXZWJHTEJ1ZmZl
cj4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKIAogICAgIGJvb2wgYXNzb2Np
YXRlQnVmZmVyRGF0YShHQzNEc2l6ZWlwdHIgc2l6ZSk7CiAgICAgYm9vbCBhc3NvY2lhdGVCdWZm
ZXJEYXRhKEpTQzo6QXJyYXlCdWZmZXIqKTsKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogICAg
IGJvb2wgaGFzRXZlckJlZW5Cb3VuZCgpIGNvbnN0IHsgcmV0dXJuIG9iamVjdCgpICYmIG1fdGFy
Z2V0OyB9CiAKIHByb3RlY3RlZDoKLSAgICBXZWJHTEJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlKik7CisgICAgV2ViR0xCdWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwog
CiAgICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKEdyYXBoaWNzQ29udGV4dDNEKiwgUGxhdGZvcm0z
RE9iamVjdCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5jcHAKaW5kZXggNTBhZDY1NWFhODYzZWQ5
MmNkNmI3MTVjMTMxMzFkZjI2YmQ1ZDI5ZS4uOTYwMjM3NGU3YzE3OWE0YmM3N2EzZjhhNGVjZDk3
MWY4ZTFmOGRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xD
b21wcmVzc2VkVGV4dHVyZUFUQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5jcHAKQEAgLTMzLDEyICszMywxMiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OldlYkdMQ29tcHJl
c3NlZFRleHR1cmVBVEMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29udGV4dCkKK1dlYkdM
Q29tcHJlc3NlZFRleHR1cmVBVEM6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQp
CiB7Ci0gICAgY29udGV4dC0+YWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uczNE
OjpDT01QUkVTU0VEX0FUQ19SR0JfQU1EKTsKLSAgICBjb250ZXh0LT5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfQVRDX1JHQkFfRVhQTElDSVRfQUxQ
SEFfQU1EKTsKLSAgICBjb250ZXh0LT5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNp
b25zM0Q6OkNPTVBSRVNTRURfQVRDX1JHQkFfSU5URVJQT0xBVEVEX0FMUEhBX0FNRCk7CisgICAg
Y29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zM0Q6OkNPTVBSRVNT
RURfQVRDX1JHQl9BTUQpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQo
RXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX0FUQ19SR0JBX0VYUExJQ0lUX0FMUEhBX0FNRCk7Cisg
ICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zM0Q6OkNPTVBS
RVNTRURfQVRDX1JHQkFfSU5URVJQT0xBVEVEX0FMUEhBX0FNRCk7CiB9CiAKIFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVBVEM6On5XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDKCkKQEAgLTUwLDEwICs1
MCwxMCBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBXZWJHTENvbXByZXNzZWRUZXh0
dXJlQVRDOjpnZXROYW1lKCkgY29uc3QKICAgICByZXR1cm4gV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZUFUQ05hbWU7CiB9CiAKLWJvb2wgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6c3VwcG9ydGVk
KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRleHQpCitib29sIFdlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVBVEM6OnN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0
KQogewotICAgIEV4dGVuc2lvbnMzRCogZXh0ZW5zaW9ucyA9IGNvbnRleHQtPmdyYXBoaWNzQ29u
dGV4dDNEKCktPmdldEV4dGVuc2lvbnMoKTsKLSAgICByZXR1cm4gZXh0ZW5zaW9ucy0+c3VwcG9y
dHMoIkdMX0FNRF9jb21wcmVzc2VkX0FUQ190ZXh0dXJlIik7CisgICAgRXh0ZW5zaW9uczNEJiBl
eHRlbnNpb25zID0gY29udGV4dC5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCk7
CisgICAgcmV0dXJuIGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0FNRF9jb21wcmVzc2VkX0FUQ190
ZXh0dXJlIik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaAppbmRleCAy
MTAyZDkwZDVlNGQyZWIyMGQ0MmU2YTIxMTg4ZDU2YTcxMTdjNDg3Li5lNWIwNTYwZDNkMjliMDZm
NWJkMzBhMTNjOGI3MTI1MDU4MWZmMTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5oCkBAIC0zMywxMCArMzMsMTAg
QEAgY2xhc3MgV2ViR0xUZXh0dXJlOwogCiBjbGFzcyBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRD
IGZpbmFsIDogcHVibGljIFdlYkdMRXh0ZW5zaW9uIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBX
ZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAg
ICBleHBsaWNpdCBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDKFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UmKTsKICAgICB2aXJ0dWFsIH5XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDKCk7CiAKLSAg
ICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOworICAg
IHN0YXRpYyBib29sIHN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAKICAg
ICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBW
UlRDLmNwcAppbmRleCA4Y2FhNGM2ODk4NTQ4ZmVkNjAwNzI0ZGJkZGQ4MzRiMzYyOGEwNWMzLi5j
YmU3N2M3ODljNDU3Mjc2ZTdmMTM2Y2QzOTUxZjUzOWRlOTZkYzkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJU
Qy5jcHAKQEAgLTM0LDEzICszNCwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdlYkdM
Q29tcHJlc3NlZFRleHR1cmVQVlJUQzo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRleHQpCitXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZS
VEM6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
JiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKLSAgICBjb250ZXh0
LT5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdC
X1BWUlRDXzRCUFBWMV9JTUcpOwotICAgIGNvbnRleHQtPmFkZENvbXByZXNzZWRUZXh0dXJlRm9y
bWF0KEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfMkJQUFYxX0lNRyk7Ci0gICAg
Y29udGV4dC0+YWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uczNEOjpDT01QUkVT
U0VEX1JHQkFfUFZSVENfNEJQUFYxX0lNRyk7Ci0gICAgY29udGV4dC0+YWRkQ29tcHJlc3NlZFRl
eHR1cmVGb3JtYXQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUFZSVENfMkJQUFYxX0lN
Ryk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zM0Q6
OkNPTVBSRVNTRURfUkdCX1BWUlRDXzRCUFBWMV9JTUcpOworICAgIGNvbnRleHQuYWRkQ29tcHJl
c3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQl9QVlJUQ18yQlBQ
VjFfSU1HKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lv
bnMzRDo6Q09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUcpOworICAgIGNvbnRleHQuYWRk
Q29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUFZS
VENfMkJQUFYxX0lNRyk7CiB9CiAKIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6fldlYkdM
Q29tcHJlc3NlZFRleHR1cmVQVlJUQygpCkBAIC01MiwxMCArNTIsMTAgQEAgV2ViR0xFeHRlbnNp
b246OkV4dGVuc2lvbk5hbWUgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpnZXROYW1lKCkg
Y29uc3QKICAgICByZXR1cm4gV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDTmFtZTsKIH0KIAot
Ym9vbCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBvcnRlZChXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlKiBjb250ZXh0KQorYm9vbCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6
OnN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogewotICAgIEV4
dGVuc2lvbnMzRCogZXh0ZW5zaW9ucyA9IGNvbnRleHQtPmdyYXBoaWNzQ29udGV4dDNEKCktPmdl
dEV4dGVuc2lvbnMoKTsKLSAgICByZXR1cm4gZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0lNR190
ZXh0dXJlX2NvbXByZXNzaW9uX3B2cnRjIik7CisgICAgRXh0ZW5zaW9uczNEJiBleHRlbnNpb25z
ID0gY29udGV4dC5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCk7CisgICAgcmV0
dXJuIGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0lNR190ZXh0dXJlX2NvbXByZXNzaW9uX3B2cnRj
Iik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmgKaW5kZXggMDkw
ZGQzMjk3ZWY5MjhlZDNhMWM0OWU2M2I5MDY2NTQwNDUxNjA5Zi4uNTE1ZTZlMTFmZTlmYjNkNmI4
MjkwN2U4YTg3NTNjMTBjZWM0N2FiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmgKQEAgLTMxLDEwICszMSwx
MCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQ
VlJUQyBmaW5hbCA6IHB1YmxpYyBXZWJHTEV4dGVuc2lvbiB7CiBwdWJsaWM6Ci0gICAgZXhwbGlj
aXQgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uq
KTsKKyAgICBleHBsaWNpdCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMoV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwgfldlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJU
QygpOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UqKTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSYpOwogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4
dHVyZVMzVEMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZVMzVEMuY3BwCmluZGV4IDQyYmNkMDgxMGM5NGM1YmM1OWMxZjdhYTVlZmQ5MGYyYmVh
ZDI0YWIuLjIwYzkzZTdmNDg4YTEzMGE0Mjk1ZDdiY2EzYTVlMDU3NjE3NDUzZGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RD
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0
dXJlUzNUQy5jcHAKQEAgLTM0LDEzICszNCwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQyhX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjb250ZXh0KQorV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVMzVEM6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRl
eHQtPmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9S
R0JfUzNUQ19EWFQxX0VYVCk7Ci0gICAgY29udGV4dC0+YWRkQ29tcHJlc3NlZFRleHR1cmVGb3Jt
YXQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCk7Ci0gICAgY29u
dGV4dC0+YWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VE
X1JHQkFfUzNUQ19EWFQzX0VYVCk7Ci0gICAgY29udGV4dC0+YWRkQ29tcHJlc3NlZFRleHR1cmVG
b3JtYXQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVCk7CisgICAg
Y29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zM0Q6OkNPTVBSRVNT
RURfUkdCX1MzVENfRFhUMV9FWFQpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVG
b3JtYXQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCk7CisgICAg
Y29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zM0Q6OkNPTVBSRVNT
RURfUkdCQV9TM1RDX0RYVDNfRVhUKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJl
Rm9ybWF0KEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQpOwogfQog
CiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6fldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RD
KCkKQEAgLTUyLDEzICs1MiwxMyBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBXZWJH
TENvbXByZXNzZWRUZXh0dXJlUzNUQzo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDTmFtZTsKIH0KIAotYm9vbCBXZWJHTENvbXByZXNzZWRUZXh0
dXJlUzNUQzo6c3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRleHQpCiti
b29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSYgY29udGV4dCkKIHsKLSAgICBFeHRlbnNpb25zM0QqIGV4dGVuc2lvbnMgPSBj
b250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCk7Ci0gICAgcmV0dXJu
IGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjIikK
LSAgICAgICAgfHwgKGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVz
c2lvbl9keHQxIikKLSAgICAgICAgICAgICYmIGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9DSFJP
TUlVTV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDMiKQotICAgICAgICAgICAgJiYgZXh0ZW5zaW9u
cy0+c3VwcG9ydHMoIkdMX0NIUk9NSVVNX3RleHR1cmVfY29tcHJlc3Npb25fZHh0NSIpKTsKKyAg
ICBFeHRlbnNpb25zM0QmIGV4dGVuc2lvbnMgPSBjb250ZXh0LmdyYXBoaWNzQ29udGV4dDNEKCkt
PmdldEV4dGVuc2lvbnMoKTsKKyAgICByZXR1cm4gZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhU
X3RleHR1cmVfY29tcHJlc3Npb25fczN0YyIpCisgICAgICAgIHx8IChleHRlbnNpb25zLnN1cHBv
cnRzKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIikKKyAgICAgICAgICAgICYmIGV4
dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0NIUk9NSVVNX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MyIp
CisgICAgICAgICAgICAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9DSFJPTUlVTV90ZXh0dXJl
X2NvbXByZXNzaW9uX2R4dDUiKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVT
M1RDLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJl
UzNUQy5oCmluZGV4IGVkM2Q4Zjk4N2NhNzkzNGJhODcyZDdmZWI2M2RlNTk2NGMwYmUwMzUuLjI1
MWU1OTJmNzFmNDk0NTdjM2FhNzgwMDJiMGQxZTdiZmEyZjc3OWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaApA
QCAtMzMsMTAgKzMzLDEwIEBAIGNsYXNzIFdlYkdMVGV4dHVyZTsKIAogY2xhc3MgV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVMzVEMgZmluYWwgOiBwdWJsaWMgV2ViR0xFeHRlbnNpb24gewogcHVibGlj
OgotICAgIGV4cGxpY2l0IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UqKTsKKyAgICBleHBsaWNpdCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQyhX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVhbCB+V2ViR0xDb21wcmVzc2Vk
VGV4dHVyZVMzVEMoKTsKIAotICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlKik7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmKTsKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJy
aWRlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29u
dGV4dE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRP
YmplY3QuY3BwCmluZGV4IDRmZjEwNzRiMTkyNmJjM2Q0YTFiOTA1ZTJiODFkODdmMGUxMWEyMWIu
LjUyM2U2ZTY0MmQ3NDliNjAyMmYzNzczYTg4ZWRmNGVhMGVjYjliYjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dE9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0T2JqZWN0LmNwcApAQCAtMzMsOSAr
MzMsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdlYkdMQ29udGV4dE9iamVjdDo6V2Vi
R0xDb250ZXh0T2JqZWN0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRleHQpCitXZWJH
TENvbnRleHRPYmplY3Q6OldlYkdMQ29udGV4dE9iamVjdChXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xPYmplY3QoY29udGV4dCkKLSAgICAsIG1fY29udGV4
dChjb250ZXh0KQorICAgICwgbV9jb250ZXh0KCZjb250ZXh0KQogewogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRPYmplY3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dE9iamVjdC5oCmluZGV4IDM4MDg1NWMw
MmNlMmZiMmE2MjBhODY5OTY2NTIyMzE3MmU1NmQ2NjguLmViZTBmYzZjNWY3NjM2MzUyYjM4NmVk
MmEwODBhYWE0YTAxMjFkMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMQ29udGV4dE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMQ29udGV4dE9iamVjdC5oCkBAIC00MCwxNSArNDAsMTUgQEAgcHVibGljOgogCiAgICAgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4
dDsgfQogCi0gICAgYm9vbCB2YWxpZGF0ZShjb25zdCBXZWJHTENvbnRleHRHcm91cCosIGNvbnN0
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRleHQpIGNvbnN0IG92ZXJyaWRlCisgICAg
Ym9vbCB2YWxpZGF0ZShjb25zdCBXZWJHTENvbnRleHRHcm91cCosIGNvbnN0IFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UmIGNvbnRleHQpIGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAgICAgICBy
ZXR1cm4gY29udGV4dCA9PSBtX2NvbnRleHQ7CisgICAgICAgIHJldHVybiAmY29udGV4dCA9PSBt
X2NvbnRleHQ7CiAgICAgfQogCiAgICAgdm9pZCBkZXRhY2hDb250ZXh0KCk7CiAKIHByb3RlY3Rl
ZDoKLSAgICBXZWJHTENvbnRleHRPYmplY3QoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOwor
ICAgIFdlYkdMQ29udGV4dE9iamVjdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAKICAg
ICBib29sIGhhc0dyb3VwT3JDb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnUmVuZGVyZXJJbmZvLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdSZW5kZXJlckluZm8uY3Bw
CmluZGV4IDIwM2E1YzM3N2UwMDZjODMyOTVlYjExZDAxYzc0MmMxMzQzMzNhNzkuLjlkZjdmYmQ1
MWRmNGU1MjJmZjFkNTVlOGE1Y2M3ZDZmNzQzZDlmZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdSZW5kZXJlckluZm8uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdSZW5kZXJlckluZm8uY3BwCkBAIC0zMyw3ICsz
Myw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV2ViR0xEZWJ1Z1JlbmRlcmVySW5mbzo6
V2ViR0xEZWJ1Z1JlbmRlcmVySW5mbyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjb250ZXh0
KQorV2ViR0xEZWJ1Z1JlbmRlcmVySW5mbzo6V2ViR0xEZWJ1Z1JlbmRlcmVySW5mbyhXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4
dCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVi
dWdSZW5kZXJlckluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdS
ZW5kZXJlckluZm8uaAppbmRleCAxNmUzMzNjODk4MTI2Yzk2NmNmMWJlMDc5MGEyZjZlMTc4NzYy
N2VhLi4zZTU4MjJkMjA4YjJjMGFhZTliOTliZTQ5ZWY1MzJmMmI3MGM3NGQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnUmVuZGVyZXJJbmZvLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5oCkBA
IC0zNiw3ICszNiw3IEBAIHB1YmxpYzoKICAgICAgICAgVU5NQVNLRURfUkVOREVSRVJfV0VCR0wg
PSAweDkyNDYKICAgICB9OwogCi0gICAgZXhwbGljaXQgV2ViR0xEZWJ1Z1JlbmRlcmVySW5mbyhX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAgZXhwbGljaXQgV2ViR0xEZWJ1Z1JlbmRl
cmVySW5mbyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVhbCB+V2ViR0xE
ZWJ1Z1JlbmRlcmVySW5mbygpOwogCiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERl
YnVnU2hhZGVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnU2hh
ZGVycy5jcHAKaW5kZXggZmEwNzJmOWIzYmMyMjk1MThjZTM0ZDI3ZWU5NjU1ZWNiYWU4MDhkMi4u
ZWQ0MjgxMzA5OWY2MDUyYmJlZjhlZTkwNmYwOTY5NGUzMWYzMmM3MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmNwcApAQCAtMzUsNyArMzUs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdlYkdMRGVidWdTaGFkZXJzOjpXZWJHTERl
YnVnU2hhZGVycyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjb250ZXh0KQorV2ViR0xEZWJ1
Z1NoYWRlcnM6OldlYkdMRGVidWdTaGFkZXJzKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNv
bnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewogfQpAQCAtNTEsMTEgKzUx
LDExIEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIFdlYkdMRGVidWdTaGFkZXJzOjpn
ZXROYW1lKCkgY29uc3QKIAogU3RyaW5nIFdlYkdMRGVidWdTaGFkZXJzOjpnZXRUcmFuc2xhdGVk
U2hhZGVyU291cmNlKFdlYkdMU2hhZGVyKiBzaGFkZXIpCiB7Ci0gICAgaWYgKG1fY29udGV4dC0+
aXNDb250ZXh0TG9zdCgpKQorICAgIGlmIChtX2NvbnRleHQuaXNDb250ZXh0TG9zdCgpKQogICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgaWYgKCFtX2NvbnRleHQtPnZhbGlkYXRlV2ViR0xP
YmplY3QoImdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UiLCBzaGFkZXIpKQorICAgIGlmICghbV9j
b250ZXh0LnZhbGlkYXRlV2ViR0xPYmplY3QoImdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UiLCBz
aGFkZXIpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLSAgICByZXR1cm4gbV9jb250
ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCktPmdldFRyYW5zbGF0ZWRT
aGFkZXJTb3VyY2VBTkdMRShzaGFkZXItPm9iamVjdCgpKTsKKyAgICByZXR1cm4gbV9jb250ZXh0
LmdyYXBoaWNzQ29udGV4dDNEKCktPmdldEV4dGVuc2lvbnMoKS5nZXRUcmFuc2xhdGVkU2hhZGVy
U291cmNlQU5HTEUoc2hhZGVyLT5vYmplY3QoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFk
ZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5oCmlu
ZGV4IGRlNGJmMDEzNTUwOWYwMTBhMjYxNzFmYTNlZDA3MzRhYTY0MzBkMWUuLjRiOTlmMWFlYWI3
Y2JmZmY0ZmI3YTVmN2Y2N2E0NzQ4ZTgyMDc2MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuaApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBXZWJH
TFNoYWRlcjsKIAogY2xhc3MgV2ViR0xEZWJ1Z1NoYWRlcnMgZmluYWwgOiBwdWJsaWMgV2ViR0xF
eHRlbnNpb24gewogcHVibGljOgotICAgIGV4cGxpY2l0IFdlYkdMRGVidWdTaGFkZXJzKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBleHBsaWNpdCBXZWJHTERlYnVnU2hhZGVycyhX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVhbCB+V2ViR0xEZWJ1Z1NoYWRl
cnMoKTsKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuY3BwCmluZGV4
IDhmZDkwNzkzNWYzYjExY2QwMDUxYjAyMDExY2I1ZmIwNTJiMjJlMjMuLmRmMjNkZmVmMmVjNTk1
NmQ5NDc4YThiNjk2NjAzMmUzZTI2ZTBhYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1XZWJHTERlcHRoVGV4dHVyZTo6V2ViR0xEZXB0aFRleHR1cmUoV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29udGV4dCkKK1dlYkdMRGVwdGhUZXh0dXJlOjpXZWJH
TERlcHRoVGV4dHVyZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDog
V2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKIH0KQEAgLTQ3LDEyICs0NywxMiBAQCBXZWJHTEV4
dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBXZWJHTERlcHRoVGV4dHVyZTo6Z2V0TmFtZSgpIGNvbnN0
CiAgICAgcmV0dXJuIFdlYkdMRGVwdGhUZXh0dXJlTmFtZTsKIH0KIAotYm9vbCBXZWJHTERlcHRo
VGV4dHVyZTo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQorYm9vbCBXZWJH
TERlcHRoVGV4dHVyZTo6c3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dDNEJiBjb250ZXh0KQogewot
ICAgIEV4dGVuc2lvbnMzRCogZXh0ZW5zaW9ucyA9IGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKTsK
LSAgICByZXR1cm4gZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0NIUk9NSVVNX2RlcHRoX3RleHR1
cmUiKQotICAgICAgICB8fCBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfT0VTX2RlcHRoX3RleHR1
cmUiKQotICAgICAgICB8fCBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfQVJCX2RlcHRoX3RleHR1
cmUiKTsKKyAgICBFeHRlbnNpb25zM0QmIGV4dGVuc2lvbnMgPSBjb250ZXh0LmdldEV4dGVuc2lv
bnMoKTsKKyAgICByZXR1cm4gZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfQ0hST01JVU1fZGVwdGhf
dGV4dHVyZSIpCisgICAgICAgIHx8IGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX09FU19kZXB0aF90
ZXh0dXJlIikKKyAgICAgICAgfHwgZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfQVJCX2RlcHRoX3Rl
eHR1cmUiKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJlLmgKaW5kZXggNzFmNTFhYTY2MTlkYTZlZGQz
Y2FlNTk4M2RiOTU0Y2IxNDhlYTI2Mi4uMTZiM2I2MGI0ZjI3OThmYTY2ZDJiNWE4ODFkODEzZDU0
MGJkMWUwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZXB0
aFRleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4
dHVyZS5oCkBAIC0zMSwxMCArMzEsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBX
ZWJHTERlcHRoVGV4dHVyZSBmaW5hbCA6IHB1YmxpYyBXZWJHTEV4dGVuc2lvbiB7CiBwdWJsaWM6
Ci0gICAgZXhwbGljaXQgV2ViR0xEZXB0aFRleHR1cmUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSopOworICAgIGV4cGxpY2l0IFdlYkdMRGVwdGhUZXh0dXJlKFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UmKTsKICAgICB2aXJ0dWFsIH5XZWJHTERlcHRoVGV4dHVyZSgpOwogCi0gICAgc3RhdGlj
IGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4dDNEKik7CisgICAgc3RhdGljIGJvb2wgc3Vw
cG9ydGVkKEdyYXBoaWNzQ29udGV4dDNEJik7CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUo
KSBjb25zdCBvdmVycmlkZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMRHJhd0J1ZmZlcnMuY3BwCmluZGV4IDdiYzcyYTZlNTk2MzIxNTFkMmFjNDRhNThlOGU3NWY3
MDk2NTU1MzguLmZlMDE2Y2RkZDUyMmIxMTFlYThiZWRkN2ZkNzViZjI3ZGM4ZGRkYTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwCkBAIC0z
Miw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV2ViR0xEcmF3QnVmZmVyczo6
V2ViR0xEcmF3QnVmZmVycyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjb250ZXh0KQorV2Vi
R0xEcmF3QnVmZmVyczo6V2ViR0xEcmF3QnVmZmVycyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
JiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKIH0KQEAgLTQ2LDUx
ICs0Niw1MSBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBXZWJHTERyYXdCdWZmZXJz
OjpnZXROYW1lKCkgY29uc3QKICAgICByZXR1cm4gV2ViR0xFeHRlbnNpb246OldlYkdMRHJhd0J1
ZmZlcnNOYW1lOwogfQogCi1ib29sIFdlYkdMRHJhd0J1ZmZlcnM6OnN1cHBvcnRlZChXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlKiBjb250ZXh0KQorYm9vbCBXZWJHTERyYXdCdWZmZXJzOjpzdXBw
b3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKIHsKLSAgICBFeHRlbnNp
b25zM0QqIGV4dGVuc2lvbnMgPSBjb250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRl
bnNpb25zKCk7Ci0gICAgcmV0dXJuIGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9FWFRfZHJhd19i
dWZmZXJzIikKKyAgICBFeHRlbnNpb25zM0QmIGV4dGVuc2lvbnMgPSBjb250ZXh0LmdyYXBoaWNz
Q29udGV4dDNEKCktPmdldEV4dGVuc2lvbnMoKTsKKyAgICByZXR1cm4gZXh0ZW5zaW9ucy5zdXBw
b3J0cygiR0xfRVhUX2RyYXdfYnVmZmVycyIpCiAgICAgICAgICYmIHNhdGlzZmllc1dlYkdMUmVx
dWlyZW1lbnRzKGNvbnRleHQpOwogfQogCiB2b2lkIFdlYkdMRHJhd0J1ZmZlcnM6OmRyYXdCdWZm
ZXJzV0VCR0woY29uc3QgVmVjdG9yPEdDM0RlbnVtPiYgYnVmZmVycykKIHsKLSAgICBpZiAobV9j
b250ZXh0LT5pc0NvbnRleHRMb3N0KCkpCisgICAgaWYgKG1fY29udGV4dC5pc0NvbnRleHRMb3N0
KCkpCiAgICAgICAgIHJldHVybjsKICAgICBHQzNEc2l6ZWkgbiA9IGJ1ZmZlcnMuc2l6ZSgpOwog
ICAgIGNvbnN0IEdDM0RlbnVtKiBidWZzID0gYnVmZmVycy5kYXRhKCk7Ci0gICAgaWYgKCFtX2Nv
bnRleHQtPm1fZnJhbWVidWZmZXJCaW5kaW5nKSB7CisgICAgaWYgKCFtX2NvbnRleHQubV9mcmFt
ZWJ1ZmZlckJpbmRpbmcpIHsKICAgICAgICAgaWYgKG4gIT0gMSkgewotICAgICAgICAgICAgbV9j
b250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxV
RSwgImRyYXdCdWZmZXJzV0VCR0wiLCAibW9yZSB0aGFuIG9uZSBidWZmZXIiKTsKKyAgICAgICAg
ICAgIG1fY29udGV4dC5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJ
RF9WQUxVRSwgImRyYXdCdWZmZXJzV0VCR0wiLCAibW9yZSB0aGFuIG9uZSBidWZmZXIiKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAoYnVmc1swXSAhPSBHcmFw
aGljc0NvbnRleHQzRDo6QkFDSyAmJiBidWZzWzBdICE9IEdyYXBoaWNzQ29udGV4dDNEOjpOT05F
KSB7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29u
dGV4dDNEOjpJTlZBTElEX09QRVJBVElPTiwgImRyYXdCdWZmZXJzV0VCR0wiLCAiQkFDSyBvciBO
T05FIik7CisgICAgICAgICAgICBtX2NvbnRleHQuc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OLCAiZHJhd0J1ZmZlcnNXRUJHTCIsICJCQUNLIG9y
IE5PTkUiKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAvLyBCZWNh
dXNlIHRoZSBiYWNrYnVmZmVyIGlzIHNpbXVsYXRlZCBvbiBhbGwgY3VycmVudCBXZWJLaXQgcG9y
dHMsIHdlIG5lZWQgdG8gY2hhbmdlIEJBQ0sgdG8gQ09MT1JfQVRUQUNITUVOVDAuCiAgICAgICAg
IEdDM0RlbnVtIHZhbHVlID0gKGJ1ZnNbMF0gPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkJBQ0spID8g
R3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwIDogR3JhcGhpY3NDb250ZXh0M0Q6
Ok5PTkU7Ci0gICAgICAgIG1fY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+Z2V0RXh0ZW5z
aW9ucygpLT5kcmF3QnVmZmVyc0VYVCgxLCAmdmFsdWUpOwotICAgICAgICBtX2NvbnRleHQtPnNl
dEJhY2tEcmF3QnVmZmVyKGJ1ZnNbMF0pOworICAgICAgICBtX2NvbnRleHQuZ3JhcGhpY3NDb250
ZXh0M0QoKS0+Z2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZmZXJzRVhUKDEsICZ2YWx1ZSk7CisgICAg
ICAgIG1fY29udGV4dC5zZXRCYWNrRHJhd0J1ZmZlcihidWZzWzBdKTsKICAgICB9IGVsc2Ugewot
ICAgICAgICBpZiAobiA+IG1fY29udGV4dC0+Z2V0TWF4RHJhd0J1ZmZlcnMoKSkgewotICAgICAg
ICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5W
QUxJRF9WQUxVRSwgImRyYXdCdWZmZXJzV0VCR0wiLCAibW9yZSB0aGFuIG1heCBkcmF3IGJ1ZmZl
cnMiKTsKKyAgICAgICAgaWYgKG4gPiBtX2NvbnRleHQuZ2V0TWF4RHJhd0J1ZmZlcnMoKSkgewor
ICAgICAgICAgICAgbV9jb250ZXh0LnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNE
OjpJTlZBTElEX1ZBTFVFLCAiZHJhd0J1ZmZlcnNXRUJHTCIsICJtb3JlIHRoYW4gbWF4IGRyYXcg
YnVmZmVycyIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGZvciAo
R0MzRHNpemVpIGkgPSAwOyBpIDwgbjsgKytpKSB7CiAgICAgICAgICAgICBpZiAoYnVmc1tpXSAh
PSBHcmFwaGljc0NvbnRleHQzRDo6Tk9ORSAmJiBidWZzW2ldICE9IHN0YXRpY19jYXN0PEdDM0Rl
bnVtPihFeHRlbnNpb25zM0Q6OkNPTE9SX0FUVEFDSE1FTlQwX0VYVCArIGkpKSB7Ci0gICAgICAg
ICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6
SU5WQUxJRF9PUEVSQVRJT04sICJkcmF3QnVmZmVyc1dFQkdMIiwgIkNPTE9SX0FUVEFDSE1FTlRp
X0VYVCBvciBOT05FIik7CisgICAgICAgICAgICAgICAgbV9jb250ZXh0LnN5bnRoZXNpemVHTEVy
cm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTiwgImRyYXdCdWZmZXJzV0VC
R0wiLCAiQ09MT1JfQVRUQUNITUVOVGlfRVhUIG9yIE5PTkUiKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgbV9jb250ZXh0LT5tX2Zy
YW1lYnVmZmVyQmluZGluZy0+ZHJhd0J1ZmZlcnMoYnVmZmVycyk7CisgICAgICAgIG1fY29udGV4
dC5tX2ZyYW1lYnVmZmVyQmluZGluZy0+ZHJhd0J1ZmZlcnMoYnVmZmVycyk7CiAgICAgfQogfQog
CiAvLyBzdGF0aWMKLWJvb2wgV2ViR0xEcmF3QnVmZmVyczo6c2F0aXNmaWVzV2ViR0xSZXF1aXJl
bWVudHMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogd2ViZ2xDb250ZXh0KQorYm9vbCBXZWJH
TERyYXdCdWZmZXJzOjpzYXRpc2ZpZXNXZWJHTFJlcXVpcmVtZW50cyhXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlJiB3ZWJnbENvbnRleHQpCiB7Ci0gICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQgPSB3ZWJnbENvbnRleHQtPmdyYXBoaWNzQ29udGV4dDNEKCk7CisgICAgR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQgPSB3ZWJnbENvbnRleHQuZ3JhcGhpY3NDb250ZXh0M0QoKTsKIAogICAg
IC8vIFRoaXMgaXMgY2FsbGVkIGFmdGVyIHdlIG1ha2Ugc3VyZSBHTF9FWFRfZHJhd19idWZmZXJz
IGlzIHN1cHBvcnRlZC4KICAgICBHQzNEaW50IG1heERyYXdCdWZmZXJzID0gMDsKQEAgLTEwNCwx
MSArMTA0LDExIEBAIGJvb2wgV2ViR0xEcmF3QnVmZmVyczo6c2F0aXNmaWVzV2ViR0xSZXF1aXJl
bWVudHMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogd2ViCiAgICAgY29udGV4dC0+YmluZEZy
YW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgZmJvKTsKIAogICAgIGNv
bnN0IHVuc2lnbmVkIGNoYXIgYnVmZmVyWzRdID0geyAwLCAwLCAwLCAwIH07IC8vIHRleHR1cmVz
IGFyZSByZXF1aXJlZCB0byBiZSBpbml0aWFsaXplZCBmb3Igb3RoZXIgcG9ydHMuCi0gICAgYm9v
bCBzdXBwb3J0c0RlcHRoID0gKGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdM
X0NIUk9NSVVNX2RlcHRoX3RleHR1cmUiKQotICAgICAgICB8fCBjb250ZXh0LT5nZXRFeHRlbnNp
b25zKCktPnN1cHBvcnRzKCJHTF9PRVNfZGVwdGhfdGV4dHVyZSIpCi0gICAgICAgIHx8IGNvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX0FSQl9kZXB0aF90ZXh0dXJlIikpOwot
ICAgIGJvb2wgc3VwcG9ydHNEZXB0aFN0ZW5jaWwgPSAoY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LT5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikKLSAgICAgICAgfHwgY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVu
Y2lsIikpOworICAgIGJvb2wgc3VwcG9ydHNEZXB0aCA9IChjb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkuc3VwcG9ydHMoIkdMX0NIUk9NSVVNX2RlcHRoX3RleHR1cmUiKQorICAgICAgICB8fCBjb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX09FU19kZXB0aF90ZXh0dXJlIikKKyAg
ICAgICAgfHwgY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9BUkJfZGVwdGhf
dGV4dHVyZSIpKTsKKyAgICBib29sIHN1cHBvcnRzRGVwdGhTdGVuY2lsID0gKGNvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikKKyAg
ICAgICAgfHwgY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfcGFja2Vk
X2RlcHRoX3N0ZW5jaWwiKSk7CiAgICAgUGxhdGZvcm0zRE9iamVjdCBkZXB0aFN0ZW5jaWwgPSAw
OwogICAgIGlmIChzdXBwb3J0c0RlcHRoU3RlbmNpbCkgewogICAgICAgICBkZXB0aFN0ZW5jaWwg
PSBjb250ZXh0LT5jcmVhdGVUZXh0dXJlKCk7CkBAIC0xNTUsOSArMTU1LDkgQEAgYm9vbCBXZWJH
TERyYXdCdWZmZXJzOjpzYXRpc2ZpZXNXZWJHTFJlcXVpcmVtZW50cyhXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlKiB3ZWIKICAgICAgICAgfQogICAgIH0KIAotICAgIHdlYmdsQ29udGV4dC0+cmVz
dG9yZUN1cnJlbnRGcmFtZWJ1ZmZlcigpOworICAgIHdlYmdsQ29udGV4dC5yZXN0b3JlQ3VycmVu
dEZyYW1lYnVmZmVyKCk7CiAgICAgY29udGV4dC0+ZGVsZXRlRnJhbWVidWZmZXIoZmJvKTsKLSAg
ICB3ZWJnbENvbnRleHQtPnJlc3RvcmVDdXJyZW50VGV4dHVyZTJEKCk7CisgICAgd2ViZ2xDb250
ZXh0LnJlc3RvcmVDdXJyZW50VGV4dHVyZTJEKCk7CiAgICAgaWYgKHN1cHBvcnRzRGVwdGgpCiAg
ICAgICAgIGNvbnRleHQtPmRlbGV0ZVRleHR1cmUoZGVwdGgpOwogICAgIGlmIChzdXBwb3J0c0Rl
cHRoU3RlbmNpbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
RHJhd0J1ZmZlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZl
cnMuaAppbmRleCA0YjNkZTcwNWVkMzM4N2Q4YTBjZTkzZGJlZDA1MzM5NDMyNWNiNDg3Li5mNjlk
ZjlmNjMxNjVhMWEzY2VlMzJlYjE5YzVjY2JjNWY4ODA1NjMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5oCkBAIC0zMSwxNyArMzEsMTcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXZWJHTERyYXdCdWZmZXJzIGZpbmFsIDogcHVibGlj
IFdlYkdMRXh0ZW5zaW9uIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBXZWJHTERyYXdCdWZmZXJz
KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBleHBsaWNpdCBXZWJHTERyYXdCdWZm
ZXJzKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKICAgICB2aXJ0dWFsIH5XZWJHTERyYXdC
dWZmZXJzKCk7CiAKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSopOworICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlJik7CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIHZvaWQgZHJhd0J1ZmZlcnNXRUJHTChjb25zdCBWZWN0b3I8R0MzRGVudW0+JiBidWZm
ZXJzKTsKIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgYm9vbCBzYXRpc2ZpZXNXZWJHTFJlcXVpcmVt
ZW50cyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAgc3RhdGljIGJvb2wgc2F0aXNm
aWVzV2ViR0xSZXF1aXJlbWVudHMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xFeHRlbnNpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xFeHRlbnNpb24uY3BwCmluZGV4IDA5YTYyODgwMWMwMjcyYTA5Mjc2YWQwOGEzNTc3Y2MwODQ3
Y2ZiYzQuLmM5ZjBhNDI1MWM3MGUwMjM1OGRmNGQyNDFjOGNiYjQ3MjQzNzc5MGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5jcHAKQEAgLTMxLDcgKzMx
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XZWJHTEV4dGVuc2lvbjo6V2ViR0xFeHRl
bnNpb24oV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29udGV4dCkKK1dlYkdMRXh0ZW5zaW9u
OjpXZWJHTEV4dGVuc2lvbihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAg
IDogbV9jb250ZXh0KGNvbnRleHQpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xFeHRlbnNpb24uaAppbmRleCBmNDkwNzVjZTI0MDZlMzU1MjE2ODc5ZjdiYWM1MGM4MTg0
YTM3M2EwLi43ZjcwOWI0NDU4MDM3YWVjNzFlNzJhNGQ3MjQ4MzNlOTE5ZTgzZGZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmgKQEAgLTU3LDE2ICs1Nywx
NiBAQCBwdWJsaWM6CiAgICAgICAgIEFOR0xFSW5zdGFuY2VkQXJyYXlzTmFtZSwKICAgICB9Owog
Ci0gICAgdm9pZCByZWYoKSB7IG1fY29udGV4dC0+cmVmKCk7IH0KLSAgICB2b2lkIGRlcmVmKCkg
eyBtX2NvbnRleHQtPmRlcmVmKCk7IH0KLSAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBj
b250ZXh0KCkgeyByZXR1cm4gbV9jb250ZXh0OyB9CisgICAgdm9pZCByZWYoKSB7IG1fY29udGV4
dC5yZWYoKTsgfQorICAgIHZvaWQgZGVyZWYoKSB7IG1fY29udGV4dC5kZXJlZigpOyB9CisgICAg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCgpIHsgcmV0dXJuIG1fY29udGV4dDsg
fQogCiAgICAgdmlydHVhbCB+V2ViR0xFeHRlbnNpb24oKTsKICAgICB2aXJ0dWFsIEV4dGVuc2lv
bk5hbWUgZ2V0TmFtZSgpIGNvbnN0ID0gMDsKIAogcHJvdGVjdGVkOgotICAgIFdlYkdMRXh0ZW5z
aW9uKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKLSAgICBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlKiBtX2NvbnRleHQ7CisgICAgV2ViR0xFeHRlbnNpb24oV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSYpOworICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIG1fY29udGV4dDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAKaW5kZXggOTYxZmJhZTgxYmZkNGJiZTYxNDFjYzU0ZjE1
YmM2ODczZWMwYzg4NS4uMmJhNDFiOTZjOTQ3ODM1NDM2OTI4YzYyZTUwN2Y0YThlNTMwZjhkYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAK
QEAgLTI2OSwxNiArMjY5LDE2IEBAIFdlYkdMRnJhbWVidWZmZXI6OldlYkdMQXR0YWNobWVudDo6
fldlYkdMQXR0YWNobWVudCgpCiB7CiB9CiAKLVJlZjxXZWJHTEZyYW1lYnVmZmVyPiBXZWJHTEZy
YW1lYnVmZmVyOjpjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY3R4KQorUmVmPFdl
YkdMRnJhbWVidWZmZXI+IFdlYkdMRnJhbWVidWZmZXI6OmNyZWF0ZShXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlJiBjdHgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR0xGcmFtZWJ1
ZmZlcihjdHgpKTsKIH0KIAotV2ViR0xGcmFtZWJ1ZmZlcjo6V2ViR0xGcmFtZWJ1ZmZlcihXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjdHgpCitXZWJHTEZyYW1lYnVmZmVyOjpXZWJHTEZyYW1l
YnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGN0eCkKICAgICA6IFdlYkdMQ29udGV4
dE9iamVjdChjdHgpCiAgICAgLCBtX2hhc0V2ZXJCZWVuQm91bmQoZmFsc2UpCiB7Ci0gICAgc2V0
T2JqZWN0KGN0eC0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+Y3JlYXRlRnJhbWVidWZmZXIoKSk7Cisg
ICAgc2V0T2JqZWN0KGN0eC5ncmFwaGljc0NvbnRleHQzRCgpLT5jcmVhdGVGcmFtZWJ1ZmZlcigp
KTsKIH0KIAogV2ViR0xGcmFtZWJ1ZmZlcjo6fldlYkdMRnJhbWVidWZmZXIoKQpAQCAtNjI3LDcg
KzYyNyw3IEBAIHZvaWQgV2ViR0xGcmFtZWJ1ZmZlcjo6ZHJhd0J1ZmZlcnNJZk5lY2Vzc2FyeShi
b29sIGZvcmNlKQogICAgICAgICB9CiAgICAgfQogICAgIGlmIChyZXNldCkgewotICAgICAgICBj
b250ZXh0KCktPmdyYXBoaWNzQ29udGV4dDNEKCktPmdldEV4dGVuc2lvbnMoKS0+ZHJhd0J1ZmZl
cnNFWFQoCisgICAgICAgIGNvbnRleHQoKS0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+Z2V0RXh0ZW5z
aW9ucygpLmRyYXdCdWZmZXJzRVhUKAogICAgICAgICAgICAgbV9maWx0ZXJlZERyYXdCdWZmZXJz
LnNpemUoKSwgbV9maWx0ZXJlZERyYXdCdWZmZXJzLmRhdGEoKSk7CiAgICAgfQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oCmluZGV4IDVhYzRmYjdl
OTFlMTIwZGUzZGRiODk5YWRjMWNmODlkNDE3ODkzOWQuLjIwZWQyOWNjMDE2ZDgxZDZjNDc2Mzcx
ZGViMWVhZGM1MDdlODNlODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMRnJhbWVidWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TEZyYW1lYnVmZmVyLmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+
V2ViR0xGcmFtZWJ1ZmZlcigpOwogCi0gICAgc3RhdGljIFJlZjxXZWJHTEZyYW1lYnVmZmVyPiBj
cmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOworICAgIHN0YXRpYyBSZWY8V2ViR0xG
cmFtZWJ1ZmZlcj4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKIAogICAgIHZv
aWQgc2V0QXR0YWNobWVudEZvckJvdW5kRnJhbWVidWZmZXIoR0MzRGVudW0gYXR0YWNobWVudCwg
R0MzRGVudW0gdGV4VGFyZ2V0LCBXZWJHTFRleHR1cmUqLCBHQzNEaW50IGxldmVsKTsKICAgICB2
b2lkIHNldEF0dGFjaG1lbnRGb3JCb3VuZEZyYW1lYnVmZmVyKEdDM0RlbnVtIGF0dGFjaG1lbnQs
IFdlYkdMUmVuZGVyYnVmZmVyKik7CkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICBHQzNE
ZW51bSBnZXREcmF3QnVmZmVyKEdDM0RlbnVtKTsKIAogcHJvdGVjdGVkOgotICAgIFdlYkdMRnJh
bWVidWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOworICAgIFdlYkdMRnJhbWVidWZm
ZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogCiAgICAgdm9pZCBkZWxldGVPYmplY3RJ
bXBsKEdyYXBoaWNzQ29udGV4dDNEKiwgUGxhdGZvcm0zRE9iamVjdCkgb3ZlcnJpZGU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTG9zZUNvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xMb3NlQ29udGV4dC5jcHAKaW5kZXgg
YzY1YWU5MDg4ODg0YmZhZTczMDYyYzM1MjE4MjZlMGM5MTU3YTNjYi4uOWJjYjA0OWI0MDkwOWY1
MTU5YmNjZTJjYTUyOTAyZmIwNmQ5NjI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xMb3NlQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xMb3NlQ29udGV4dC5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1XZWJHTExvc2VDb250ZXh0OjpXZWJHTExvc2VDb250ZXh0KFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRleHQpCitXZWJHTExvc2VDb250ZXh0OjpXZWJHTExvc2VD
b250ZXh0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4
dGVuc2lvbihjb250ZXh0KQogewogfQpAQCAtNDksMTIgKzQ5LDEyIEBAIFdlYkdMRXh0ZW5zaW9u
OjpFeHRlbnNpb25OYW1lIFdlYkdMTG9zZUNvbnRleHQ6OmdldE5hbWUoKSBjb25zdAogCiB2b2lk
IFdlYkdMTG9zZUNvbnRleHQ6Omxvc2VDb250ZXh0KCkKIHsKLSAgICBtX2NvbnRleHQtPmZvcmNl
TG9zdENvbnRleHQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6U3ludGhldGljTG9zdENvbnRl
eHQpOworICAgIG1fY29udGV4dC5mb3JjZUxvc3RDb250ZXh0KFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OlN5bnRoZXRpY0xvc3RDb250ZXh0KTsKIH0KIAogdm9pZCBXZWJHTExvc2VDb250ZXh0
OjpyZXN0b3JlQ29udGV4dCgpCiB7Ci0gICAgbV9jb250ZXh0LT5mb3JjZVJlc3RvcmVDb250ZXh0
KCk7CisgICAgbV9jb250ZXh0LmZvcmNlUmVzdG9yZUNvbnRleHQoKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xMb3NlQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xMb3NlQ29u
dGV4dC5oCmluZGV4IDcyOTFiNzNlNzc5NjMwZmM1ZTVjYzIzMTMzYmEyNzg2N2U5YzhkZGUuLjYz
MGQyNjQ1YWQyZTk1MjMyZDA3ODI2MDI5NmU5MzMwYzE3MjNlYzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTG9zZUNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTExvc2VDb250ZXh0LmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xh
c3MgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTsKIAogY2xhc3MgV2ViR0xMb3NlQ29udGV4dCBm
aW5hbCA6IHB1YmxpYyBXZWJHTEV4dGVuc2lvbiB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgV2Vi
R0xMb3NlQ29udGV4dChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAgZXhwbGljaXQg
V2ViR0xMb3NlQ29udGV4dChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVh
bCB+V2ViR0xMb3NlQ29udGV4dCgpOwogCiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29u
c3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE9iamVjdC5jcHAK
aW5kZXggYWNkYWI5NzliNGViOTUxZGI1MjdiNjBlZjY4N2E0NGQ3NWI4YjMxYy4uNWQ5MjA5NWZm
ZjE3ODZiMjI1YzI4NWE5NzAzYzY2OTk2MWI1OTc1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMT2JqZWN0LmNwcApAQCAtMzgsNyArMzgsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVdlYkdMT2JqZWN0OjpXZWJHTE9iamVjdChXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlKikKK1dlYkdMT2JqZWN0OjpXZWJHTE9iamVjdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
JikKICAgICA6IG1fb2JqZWN0KDApCiAgICAgLCBtX2F0dGFjaG1lbnRDb3VudCgwKQogICAgICwg
bV9kZWxldGVkKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMT2JqZWN0LmgK
aW5kZXggOWM5MWYxZDMxMDYwNjdlMDg3ZmEwYmQ5YThjNzY0YzA4OWY4YzY0My4uN2IzMjNkNmM5
ZjdhNzhhZjRiMmY0M2U2NTAzZjllMDEyOWVjYzc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTE9iamVjdC5oCkBAIC01NCwxMCArNTQsMTAgQEAgcHVibGljOgogICAgIGJvb2wg
aXNEZWxldGVkKCkgeyByZXR1cm4gbV9kZWxldGVkOyB9CiAKICAgICAvLyBUcnVlIGlmIHRoaXMg
b2JqZWN0IGJlbG9uZ3MgdG8gdGhlIGdyb3VwIG9yIGNvbnRleHQuCi0gICAgdmlydHVhbCBib29s
IHZhbGlkYXRlKGNvbnN0IFdlYkdMQ29udGV4dEdyb3VwKiwgY29uc3QgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSopIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgdmFsaWRhdGUoY29uc3Qg
V2ViR0xDb250ZXh0R3JvdXAqLCBjb25zdCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJikgY29u
c3QgPSAwOwogCiBwcm90ZWN0ZWQ6Ci0gICAgV2ViR0xPYmplY3QoV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSopOworICAgIFdlYkdMT2JqZWN0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsK
IAogICAgIC8vIHNldE9iamVjdCBzaG91bGQgYmUgb25seSBjYWxsZWQgb25jZSByaWdodCBhZnRl
ciBjcmVhdGluZyBhIFdlYkdMT2JqZWN0LgogICAgIHZvaWQgc2V0T2JqZWN0KFBsYXRmb3JtM0RP
YmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQcm9n
cmFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5jcHAKaW5k
ZXggMWI3NTJlNmUwZmRiNGJhNjNjOTNiYzJlNzUzMDYyNTY1YzJkNGNkNy4uNzdhZmU5NGM0NTg1
YTFiYjNlMTc3NmM4OTE1M2I4NGJiODZjMTcwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFByb2dyYW0uY3BwCkBAIC0zNCwxOCArMzQsMTggQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1SZWY8V2ViR0xQcm9ncmFtPiBXZWJHTFByb2dyYW06OmNyZWF0ZShXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlKiBjdHgpCitSZWY8V2ViR0xQcm9ncmFtPiBXZWJHTFByb2dyYW06
OmNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjdHgpCiB7CiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2ViR0xQcm9ncmFtKGN0eCkpOwogfQogCi1XZWJHTFByb2dyYW06OldlYkdM
UHJvZ3JhbShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjdHgpCitXZWJHTFByb2dyYW06Oldl
YkdMUHJvZ3JhbShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjdHgpCiAgICAgOiBXZWJHTFNo
YXJlZE9iamVjdChjdHgpCiAgICAgLCBtX2xpbmtTdGF0dXMoZmFsc2UpCiAgICAgLCBtX2xpbmtD
b3VudCgwKQogICAgICwgbV9pbmZvVmFsaWQodHJ1ZSkKIHsKLSAgICBzZXRPYmplY3QoY3R4LT5n
cmFwaGljc0NvbnRleHQzRCgpLT5jcmVhdGVQcm9ncmFtKCkpOworICAgIHNldE9iamVjdChjdHgu
Z3JhcGhpY3NDb250ZXh0M0QoKS0+Y3JlYXRlUHJvZ3JhbSgpKTsKIH0KIAogV2ViR0xQcm9ncmFt
Ojp+V2ViR0xQcm9ncmFtKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUHJvZ3JhbS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFt
LmgKaW5kZXggZTRiMTA2OTMyNWFiMzkzY2IyYmFlNTI1MDlmNzQ5YzM4MDIzOTRlOC4uNzE3Y2Nl
MTM4YzQyOGM1N2NkZGI3YzU1YzE0Njg1ZmE0NjIyMzJmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xQcm9ncmFtLmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgV2ViR0xQcm9n
cmFtIGZpbmFsIDogcHVibGljIFdlYkdMU2hhcmVkT2JqZWN0IHsKIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5XZWJHTFByb2dyYW0oKTsKIAotICAgIHN0YXRpYyBSZWY8V2ViR0xQcm9ncmFtPiBjcmVh
dGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOworICAgIHN0YXRpYyBSZWY8V2ViR0xQcm9n
cmFtPiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogCiAgICAgdW5zaWduZWQg
bnVtQWN0aXZlQXR0cmliTG9jYXRpb25zKCk7CiAgICAgR0MzRGludCBnZXRBY3RpdmVBdHRyaWJM
b2NhdGlvbihHQzNEdWludCBpbmRleCk7CkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICBi
b29sIGRldGFjaFNoYWRlcihXZWJHTFNoYWRlciopOwogCiBwcm90ZWN0ZWQ6Ci0gICAgV2ViR0xQ
cm9ncmFtKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBXZWJHTFByb2dyYW0oV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogCiAgICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKEdy
YXBoaWNzQ29udGV4dDNEKiwgUGxhdGZvcm0zRE9iamVjdCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUXVlcnkuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xRdWVyeS5jcHAKaW5kZXggYzdmOTQzNDliOTA4M2VlMDhm
N2ViZWJhZjBkNjMwMWJjOGJhMmI0MS4uOGNhNTI1MTE1NzM1MDE1NDVhYzU1ZjVlOTQxZWFhNWE4
MDQzYmVhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xRdWVy
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xRdWVyeS5jcHAKQEAg
LTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAotUmVmPFdlYkdMUXVl
cnk+IFdlYkdMUXVlcnk6OmNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjdHgpCitS
ZWY8V2ViR0xRdWVyeT4gV2ViR0xRdWVyeTo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UmIGN0eCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHTFF1ZXJ5KGN0eCkpOwog
fQpAQCAtNDMsNyArNDMsNyBAQCBXZWJHTFF1ZXJ5Ojp+V2ViR0xRdWVyeSgpCiAgICAgZGVsZXRl
T2JqZWN0KDApOwogfQogCi1XZWJHTFF1ZXJ5OjpXZWJHTFF1ZXJ5KFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UqIGN0eCkKK1dlYkdMUXVlcnk6OldlYkdMUXVlcnkoV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSYgY3R4KQogICAgIDogV2ViR0xTaGFyZWRPYmplY3QoY3R4KQogewogICAgIC8vIEZJ
WE1FOiBDYWxsIGNyZWF0ZVF1ZXJ5IGZyb20gR3JhcGhpY3NDb250ZXh0M0QuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFF1ZXJ5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFF1ZXJ5LmgKaW5kZXggY2U5ODk1Yjg4YTk2MjdlMThmODZiYzZj
NGJjMjFhMmUyOGVlM2Y0Zi4uNDZkYjU5MmE4NWFmNjJmZTgwZjcxZjM3M2JlNTkxNmJjYjljMTg1
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xRdWVyeS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUXVlcnkuaApAQCAtMzMsMTAgKzMz
LDEwIEBAIGNsYXNzIFdlYkdMUXVlcnkgZmluYWwgOiBwdWJsaWMgV2ViR0xTaGFyZWRPYmplY3Qg
ewogcHVibGljOgogICAgIHZpcnR1YWwgfldlYkdMUXVlcnkoKTsKIAotICAgIHN0YXRpYyBSZWY8
V2ViR0xRdWVyeT4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBzdGF0
aWMgUmVmPFdlYkdMUXVlcnk+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAK
IHByb3RlY3RlZDoKLSAgICBXZWJHTFF1ZXJ5KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsK
KyAgICBXZWJHTFF1ZXJ5KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKIAogICAgIHZvaWQg
ZGVsZXRlT2JqZWN0SW1wbChHcmFwaGljc0NvbnRleHQzRCosIFBsYXRmb3JtM0RPYmplY3QpIG92
ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1
ZmZlci5jcHAKaW5kZXggMWQ3OTQyOTBkNmJhMjJkMWM4NDU2MDE1ZjRiMDAyNWQ5ZWM3NGExNC4u
Njk5NmQ5YjFkYTkzMGYzYTJiYWJhMjMwZTQ5MmMwZDc4NGE3Y2QxOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmNwcApAQCAtMzQsNyArMzQs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxXZWJHTFJlbmRlcmJ1ZmZlcj4gV2Vi
R0xSZW5kZXJidWZmZXI6OmNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjdHgpCitS
ZWY8V2ViR0xSZW5kZXJidWZmZXI+IFdlYkdMUmVuZGVyYnVmZmVyOjpjcmVhdGUoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSYgY3R4KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdM
UmVuZGVyYnVmZmVyKGN0eCkpOwogfQpAQCAtNDQsNyArNDQsNyBAQCBXZWJHTFJlbmRlcmJ1ZmZl
cjo6fldlYkdMUmVuZGVyYnVmZmVyKCkKICAgICBkZWxldGVPYmplY3QoMCk7CiB9CiAKLVdlYkdM
UmVuZGVyYnVmZmVyOjpXZWJHTFJlbmRlcmJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
KiBjdHgpCitXZWJHTFJlbmRlcmJ1ZmZlcjo6V2ViR0xSZW5kZXJidWZmZXIoV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSYgY3R4KQogICAgIDogV2ViR0xTaGFyZWRPYmplY3QoY3R4KQogICAgICwg
bV9pbnRlcm5hbEZvcm1hdChHcmFwaGljc0NvbnRleHQzRDo6UkdCQTQpCiAgICAgLCBtX2luaXRp
YWxpemVkKGZhbHNlKQpAQCAtNTMsNyArNTMsNyBAQCBXZWJHTFJlbmRlcmJ1ZmZlcjo6V2ViR0xS
ZW5kZXJidWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY3R4KQogICAgICwgbV9pc1Zh
bGlkKHRydWUpCiAgICAgLCBtX2hhc0V2ZXJCZWVuQm91bmQoZmFsc2UpCiB7Ci0gICAgc2V0T2Jq
ZWN0KGN0eC0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+Y3JlYXRlUmVuZGVyYnVmZmVyKCkpOworICAg
IHNldE9iamVjdChjdHguZ3JhcGhpY3NDb250ZXh0M0QoKS0+Y3JlYXRlUmVuZGVyYnVmZmVyKCkp
OwogfQogCiB2b2lkIFdlYkdMUmVuZGVyYnVmZmVyOjpkZWxldGVPYmplY3RJbXBsKEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0M2QsIFBsYXRmb3JtM0RPYmplY3Qgb2JqZWN0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmgKaW5kZXggMDZiYjMwMjVk
NmQ3M2ZlOGE0YTNjZjhmYjkwNjJjNjI3MmZhMmIyNi4uY2Y2YWQ2ZjY1OTY3OWQ1NzdlNzM0MzYy
ZjNlM2I1M2MyNDRkMmRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJidWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmJ1ZmZlci5oCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIFdlYkdMUmVuZGVyYnVmZmVy
IGZpbmFsIDogcHVibGljIFdlYkdMU2hhcmVkT2JqZWN0IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5XZWJHTFJlbmRlcmJ1ZmZlcigpOwogCi0gICAgc3RhdGljIFJlZjxXZWJHTFJlbmRlcmJ1ZmZl
cj4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBzdGF0aWMgUmVmPFdl
YkdMUmVuZGVyYnVmZmVyPiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogCiAg
ICAgdm9pZCBzZXRJbnRlcm5hbEZvcm1hdChHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCkKICAgICB7
CkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEhhc0V2ZXJCZWVuQm91bmQo
KSB7IG1faGFzRXZlckJlZW5Cb3VuZCA9IHRydWU7IH0KIAogcHJvdGVjdGVkOgotICAgIFdlYkdM
UmVuZGVyYnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBXZWJHTFJlbmRl
cmJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAKICAgICB2b2lkIGRlbGV0ZU9i
amVjdEltcGwoR3JhcGhpY3NDb250ZXh0M0QqLCBQbGF0Zm9ybTNET2JqZWN0KSBvdmVycmlkZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5jcHAKaW5kZXggOTZiODA4ZDQ5ZTA4NmM5ZjViNzg0MGViMGQ2ZWMyYTkyNTE4YzY3YS4u
ZGMxOWE1NTI0MmFjMzE5NjliOTAzNzdlMTUxMDJmODg4ZDViZDQwNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC03
Nyw3ICs3Nyw3IEBAIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
KEhUTUxDYW52YXNFbGVtZW50JiBwYXNzZWRDYW52YXMsIFBhCiAKIHZvaWQgV2ViR0xSZW5kZXJp
bmdDb250ZXh0Ojppbml0aWFsaXplVmVydGV4QXJyYXlPYmplY3RzKCkKIHsKLSAgICBtX2RlZmF1
bHRWZXJ0ZXhBcnJheU9iamVjdCA9IFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OmNyZWF0ZSh0
aGlzLCBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOjpWQU9UeXBlRGVmYXVsdCk7CisgICAgbV9k
ZWZhdWx0VmVydGV4QXJyYXlPYmplY3QgPSBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOjpjcmVh
dGUoKnRoaXMsIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OlZBT1R5cGVEZWZhdWx0KTsKICAg
ICBhZGRDb250ZXh0T2JqZWN0KG1fZGVmYXVsdFZlcnRleEFycmF5T2JqZWN0LmdldCgpKTsKICAg
ICBtX2JvdW5kVmVydGV4QXJyYXlPYmplY3QgPSBtX2RlZmF1bHRWZXJ0ZXhBcnJheU9iamVjdDsK
ICAgICBpZiAoIWlzR0xFUzJDb21wbGlhbnQoKSkKQEAgLTkwLDE1NSArOTAsMTU1IEBAIFdlYkdM
RXh0ZW5zaW9uKiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJp
bmcmIG5hbWUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIGlmIChlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKG5hbWUsICJFWFRfYmxlbmRfbWlubWF4IikKLSAgICAgICAgJiYgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9FWFRfYmxlbmRfbWlubWF4Iikp
IHsKKyAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VY
VF9ibGVuZF9taW5tYXgiKSkgewogICAgICAgICBpZiAoIW1fZXh0QmxlbmRNaW5NYXgpIHsKLSAg
ICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKCJHTF9F
WFRfYmxlbmRfbWlubWF4Iik7Ci0gICAgICAgICAgICBtX2V4dEJsZW5kTWluTWF4ID0gc3RkOjpt
YWtlX3VuaXF1ZTxFWFRCbGVuZE1pbk1heD4odGhpcyk7CisgICAgICAgICAgICBtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9FWFRfYmxlbmRfbWlubWF4Iik7Cisg
ICAgICAgICAgICBtX2V4dEJsZW5kTWluTWF4ID0gc3RkOjptYWtlX3VuaXF1ZTxFWFRCbGVuZE1p
bk1heD4oKnRoaXMpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX2V4dEJsZW5kTWluTWF4
LmdldCgpOwogICAgIH0KICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiRVhU
X3NSR0IiKQotICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMo
IkdMX0VYVF9zUkdCIikpIHsKKyAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCku
c3VwcG9ydHMoIkdMX0VYVF9zUkdCIikpIHsKICAgICAgICAgaWYgKCFtX2V4dHNSR0IpIHsKLSAg
ICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKCJHTF9F
WFRfc1JHQiIpOwotICAgICAgICAgICAgbV9leHRzUkdCID0gc3RkOjptYWtlX3VuaXF1ZTxFWFRz
UkdCPih0aGlzKTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3Vy
ZUVuYWJsZWQoIkdMX0VYVF9zUkdCIik7CisgICAgICAgICAgICBtX2V4dHNSR0IgPSBzdGQ6Om1h
a2VfdW5pcXVlPEVYVHNSR0I+KCp0aGlzKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbV9l
eHRzUkdCLmdldCgpOwogICAgIH0KICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1l
LCAiRVhUX2ZyYWdfZGVwdGgiKQotICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS0+c3VwcG9ydHMoIkdMX0VYVF9mcmFnX2RlcHRoIikpIHsKKyAgICAgICAgJiYgbV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF9mcmFnX2RlcHRoIikpIHsKICAgICAg
ICAgaWYgKCFtX2V4dEZyYWdEZXB0aCkgewotICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9mcmFnX2RlcHRoIik7Ci0gICAgICAgICAg
ICBtX2V4dEZyYWdEZXB0aCA9IHN0ZDo6bWFrZV91bmlxdWU8RVhURnJhZ0RlcHRoPih0aGlzKTsK
KyAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdM
X0VYVF9mcmFnX2RlcHRoIik7CisgICAgICAgICAgICBtX2V4dEZyYWdEZXB0aCA9IHN0ZDo6bWFr
ZV91bmlxdWU8RVhURnJhZ0RlcHRoPigqdGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJu
IG1fZXh0RnJhZ0RlcHRoLmdldCgpOwogICAgIH0KICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJ
Q2FzZShuYW1lLCAiRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpCi0gICAgICAgICYmIChtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2Qi
KSB8fCBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX0FSQl9zaGFkZXJf
dGV4dHVyZV9sb2QiKSkpIHsKKyAgICAgICAgJiYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LnN1cHBvcnRzKCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIikgfHwgbV9jb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0FSQl9zaGFkZXJfdGV4dHVyZV9sb2QiKSkpIHsKICAg
ICAgICAgaWYgKCFtX2V4dFNoYWRlclRleHR1cmVMT0QpIHsKLSAgICAgICAgICAgIG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKCJHTF9FWFRfc2hhZGVyX3RleHR1cmVf
bG9kIik7Ci0gICAgICAgICAgICBtX2V4dFNoYWRlclRleHR1cmVMT0QgPSBzdGQ6Om1ha2VfdW5p
cXVlPEVYVFNoYWRlclRleHR1cmVMT0Q+KHRoaXMpOworICAgICAgICAgICAgbV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIp
OworICAgICAgICAgICAgbV9leHRTaGFkZXJUZXh0dXJlTE9EID0gc3RkOjptYWtlX3VuaXF1ZTxF
WFRTaGFkZXJUZXh0dXJlTE9EPigqdGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1f
ZXh0U2hhZGVyVGV4dHVyZUxPRC5nZXQoKTsKICAgICB9CiAgICAgaWYgKChlcXVhbElnbm9yaW5n
QVNDSUlDYXNlKG5hbWUsICJFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKSB8fCBlcXVh
bElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJXRUJLSVRfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNv
dHJvcGljIikpCi0gICAgICAgICYmIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0
cygiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIikpIHsKKyAgICAgICAgJiYgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9h
bmlzb3Ryb3BpYyIpKSB7CiAgICAgICAgIGlmICghbV9leHRUZXh0dXJlRmlsdGVyQW5pc290cm9w
aWMpIHsKLSAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFi
bGVkKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKTsKLSAgICAgICAgICAgIG1f
ZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljID0gc3RkOjptYWtlX3VuaXF1ZTxFWFRUZXh0dXJl
RmlsdGVyQW5pc290cm9waWM+KHRoaXMpOworICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGlj
Iik7CisgICAgICAgICAgICBtX2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYyA9IHN0ZDo6bWFr
ZV91bmlxdWU8RVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljPigqdGhpcyk7CiAgICAgICAgIH0K
ICAgICAgICAgcmV0dXJuIG1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmdldCgpOwogICAg
IH0KICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiT0VTX3N0YW5kYXJkX2Rl
cml2YXRpdmVzIikKLSAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBv
cnRzKCJHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiKSkgeworICAgICAgICAmJiBtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVz
IikpIHsKICAgICAgICAgaWYgKCFtX29lc1N0YW5kYXJkRGVyaXZhdGl2ZXMpIHsKLSAgICAgICAg
ICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKCJHTF9PRVNfc3Rh
bmRhcmRfZGVyaXZhdGl2ZXMiKTsKLSAgICAgICAgICAgIG1fb2VzU3RhbmRhcmREZXJpdmF0aXZl
cyA9IHN0ZDo6bWFrZV91bmlxdWU8T0VTU3RhbmRhcmREZXJpdmF0aXZlcz4odGhpcyk7CisgICAg
ICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9PRVNf
c3RhbmRhcmRfZGVyaXZhdGl2ZXMiKTsKKyAgICAgICAgICAgIG1fb2VzU3RhbmRhcmREZXJpdmF0
aXZlcyA9IHN0ZDo6bWFrZV91bmlxdWU8T0VTU3RhbmRhcmREZXJpdmF0aXZlcz4oKnRoaXMpOwog
ICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX29lc1N0YW5kYXJkRGVyaXZhdGl2ZXMuZ2V0KCk7
CiAgICAgfQogICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJPRVNfdGV4dHVy
ZV9mbG9hdCIpCi0gICAgICAgICYmIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0
cygiR0xfT0VTX3RleHR1cmVfZmxvYXQiKSkgeworICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfZmxvYXQiKSkgewogICAgICAgICBp
ZiAoIW1fb2VzVGV4dHVyZUZsb2F0KSB7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3RleHR1cmVfZmxvYXQiKTsKLSAgICAgICAg
ICAgIG1fb2VzVGV4dHVyZUZsb2F0ID0gc3RkOjptYWtlX3VuaXF1ZTxPRVNUZXh0dXJlRmxvYXQ+
KHRoaXMpOworICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5h
YmxlZCgiR0xfT0VTX3RleHR1cmVfZmxvYXQiKTsKKyAgICAgICAgICAgIG1fb2VzVGV4dHVyZUZs
b2F0ID0gc3RkOjptYWtlX3VuaXF1ZTxPRVNUZXh0dXJlRmxvYXQ+KCp0aGlzKTsKICAgICAgICAg
fQogICAgICAgICByZXR1cm4gbV9vZXNUZXh0dXJlRmxvYXQuZ2V0KCk7CiAgICAgfQogICAgIGlm
IChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIi
KQotICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09F
U190ZXh0dXJlX2Zsb2F0X2xpbmVhciIpKSB7CisgICAgICAgICYmIG1fY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiKSkgewogICAg
ICAgICBpZiAoIW1fb2VzVGV4dHVyZUZsb2F0TGluZWFyKSB7Ci0gICAgICAgICAgICBtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3RleHR1cmVfZmxvYXRf
bGluZWFyIik7Ci0gICAgICAgICAgICBtX29lc1RleHR1cmVGbG9hdExpbmVhciA9IHN0ZDo6bWFr
ZV91bmlxdWU8T0VTVGV4dHVyZUZsb2F0TGluZWFyPih0aGlzKTsKKyAgICAgICAgICAgIG1fY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX09FU190ZXh0dXJlX2Zsb2F0
X2xpbmVhciIpOworICAgICAgICAgICAgbV9vZXNUZXh0dXJlRmxvYXRMaW5lYXIgPSBzdGQ6Om1h
a2VfdW5pcXVlPE9FU1RleHR1cmVGbG9hdExpbmVhcj4oKnRoaXMpOwogICAgICAgICB9CiAgICAg
ICAgIHJldHVybiBtX29lc1RleHR1cmVGbG9hdExpbmVhci5nZXQoKTsKICAgICB9CiAgICAgaWYg
KGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQiKQot
ICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU190
ZXh0dXJlX2hhbGZfZmxvYXQiKSkgeworICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpKSB7CiAgICAgICAgIGlm
ICghbV9vZXNUZXh0dXJlSGFsZkZsb2F0KSB7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpOwot
ICAgICAgICAgICAgbV9vZXNUZXh0dXJlSGFsZkZsb2F0ID0gc3RkOjptYWtlX3VuaXF1ZTxPRVNU
ZXh0dXJlSGFsZkZsb2F0Pih0aGlzKTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQiKTsKKyAgICAg
ICAgICAgIG1fb2VzVGV4dHVyZUhhbGZGbG9hdCA9IHN0ZDo6bWFrZV91bmlxdWU8T0VTVGV4dHVy
ZUhhbGZGbG9hdD4oKnRoaXMpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX29lc1RleHR1
cmVIYWxmRmxvYXQuZ2V0KCk7CiAgICAgfQogICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNl
KG5hbWUsICJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpCi0gICAgICAgICYmIG1fY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9h
dF9saW5lYXIiKSkgeworICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBw
b3J0cygiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKSkgewogICAgICAgICBpZiAo
IW1fb2VzVGV4dHVyZUhhbGZGbG9hdExpbmVhcikgewotICAgICAgICAgICAgbV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRf
bGluZWFyIik7Ci0gICAgICAgICAgICBtX29lc1RleHR1cmVIYWxmRmxvYXRMaW5lYXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPE9FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXI+KHRoaXMpOworICAgICAgICAg
ICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3RleHR1
cmVfaGFsZl9mbG9hdF9saW5lYXIiKTsKKyAgICAgICAgICAgIG1fb2VzVGV4dHVyZUhhbGZGbG9h
dExpbmVhciA9IHN0ZDo6bWFrZV91bmlxdWU8T0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhcj4oKnRo
aXMpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX29lc1RleHR1cmVIYWxmRmxvYXRMaW5l
YXIuZ2V0KCk7CiAgICAgfQogICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJP
RVNfdmVydGV4X2FycmF5X29iamVjdCIpCi0gICAgICAgICYmIG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKSkgeworICAgICAg
ICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3ZlcnRleF9h
cnJheV9vYmplY3QiKSkgewogICAgICAgICBpZiAoIW1fb2VzVmVydGV4QXJyYXlPYmplY3QpIHsK
LSAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKCJH
TF9PRVNfdmVydGV4X2FycmF5X29iamVjdCIpOworICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKTsK
ICAgICAgICAgICAgIG1fb2VzVmVydGV4QXJyYXlPYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVlPE9F
U1ZlcnRleEFycmF5T2JqZWN0PigqdGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1f
b2VzVmVydGV4QXJyYXlPYmplY3QuZ2V0KCk7CiAgICAgfQogICAgIGlmIChlcXVhbElnbm9yaW5n
QVNDSUlDYXNlKG5hbWUsICJPRVNfZWxlbWVudF9pbmRleF91aW50IikKLSAgICAgICAgJiYgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfZWxlbWVudF9pbmRleF91
aW50IikpIHsKKyAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMo
IkdMX09FU19lbGVtZW50X2luZGV4X3VpbnQiKSkgewogICAgICAgICBpZiAoIW1fb2VzRWxlbWVu
dEluZGV4VWludCkgewotICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVu
c3VyZUVuYWJsZWQoIkdMX09FU19lbGVtZW50X2luZGV4X3VpbnQiKTsKLSAgICAgICAgICAgIG1f
b2VzRWxlbWVudEluZGV4VWludCA9IHN0ZDo6bWFrZV91bmlxdWU8T0VTRWxlbWVudEluZGV4VWlu
dD4odGhpcyk7CisgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVF
bmFibGVkKCJHTF9PRVNfZWxlbWVudF9pbmRleF91aW50Iik7CisgICAgICAgICAgICBtX29lc0Vs
ZW1lbnRJbmRleFVpbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9FU0VsZW1lbnRJbmRleFVpbnQ+KCp0
aGlzKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbV9vZXNFbGVtZW50SW5kZXhVaW50Lmdl
dCgpOwogICAgIH0KICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiV0VCR0xf
bG9zZV9jb250ZXh0IikpIHsKICAgICAgICAgaWYgKCFtX3dlYmdsTG9zZUNvbnRleHQpCi0gICAg
ICAgICAgICBtX3dlYmdsTG9zZUNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMTG9zZUNv
bnRleHQ+KHRoaXMpOworICAgICAgICAgICAgbV93ZWJnbExvc2VDb250ZXh0ID0gc3RkOjptYWtl
X3VuaXF1ZTxXZWJHTExvc2VDb250ZXh0PigqdGhpcyk7CiAgICAgICAgIHJldHVybiBtX3dlYmds
TG9zZUNvbnRleHQuZ2V0KCk7CiAgICAgfQogICAgIGlmICgoZXF1YWxJZ25vcmluZ0FTQ0lJQ2Fz
ZShuYW1lLCAiV0VCS0lUX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9hdGMiKSkKLSAgICAgICAg
JiYgV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6c3VwcG9ydGVkKHRoaXMpKSB7CisgICAgICAg
ICYmIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OnN1cHBvcnRlZCgqdGhpcykpIHsKICAgICAg
ICAgaWYgKCFtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBVEMpCi0gICAgICAgICAgICBtX3dlYmds
Q29tcHJlc3NlZFRleHR1cmVBVEMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVBVEM+KHRoaXMpOworICAgICAgICAgICAgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlQVRD
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDPigqdGhpcyk7CiAg
ICAgICAgIHJldHVybiBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVBVEMuZ2V0KCk7CiAgICAgfQog
ICAgIGlmICgoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiV0VCS0lUX1dFQkdMX2NvbXBy
ZXNzZWRfdGV4dHVyZV9wdnJ0YyIpKQotICAgICAgICAmJiBXZWJHTENvbXByZXNzZWRUZXh0dXJl
UFZSVEM6OnN1cHBvcnRlZCh0aGlzKSkgeworICAgICAgICAmJiBXZWJHTENvbXByZXNzZWRUZXh0
dXJlUFZSVEM6OnN1cHBvcnRlZCgqdGhpcykpIHsKICAgICAgICAgaWYgKCFtX3dlYmdsQ29tcHJl
c3NlZFRleHR1cmVQVlJUQykKLSAgICAgICAgICAgIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVBW
UlRDID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM+KHRoaXMp
OworICAgICAgICAgICAgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUFZSVEMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQz4oKnRoaXMpOwogICAgICAgICByZXR1
cm4gbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUFZSVEMuZ2V0KCk7CiAgICAgfQogICAgIGlmIChl
cXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0
YyIpCi0gICAgICAgICYmIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQodGhp
cykpIHsKKyAgICAgICAgJiYgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBvcnRlZCgq
dGhpcykpIHsKICAgICAgICAgaWYgKCFtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVTM1RDKQotICAg
ICAgICAgICAgbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUzNUQyA9IHN0ZDo6bWFrZV91bmlxdWU8
V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM+KHRoaXMpOworICAgICAgICAgICAgbV93ZWJnbENv
bXByZXNzZWRUZXh0dXJlUzNUQyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xDb21wcmVzc2VkVGV4
dHVyZVMzVEM+KCp0aGlzKTsKICAgICAgICAgcmV0dXJuIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVy
ZVMzVEMuZ2V0KCk7CiAgICAgfQogICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUs
ICJXRUJHTF9kZXB0aF90ZXh0dXJlIikKLSAgICAgICAgJiYgV2ViR0xEZXB0aFRleHR1cmU6OnN1
cHBvcnRlZChncmFwaGljc0NvbnRleHQzRCgpKSkgeworICAgICAgICAmJiBXZWJHTERlcHRoVGV4
dHVyZTo6c3VwcG9ydGVkKCpncmFwaGljc0NvbnRleHQzRCgpKSkgewogICAgICAgICBpZiAoIW1f
d2ViZ2xEZXB0aFRleHR1cmUpIHsKLSAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLT5lbnN1cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9kZXB0aF90ZXh0dXJlIik7Ci0gICAgICAg
ICAgICBtX3dlYmdsRGVwdGhUZXh0dXJlID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTERlcHRoVGV4
dHVyZT4odGhpcyk7CisgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1
cmVFbmFibGVkKCJHTF9DSFJPTUlVTV9kZXB0aF90ZXh0dXJlIik7CisgICAgICAgICAgICBtX3dl
YmdsRGVwdGhUZXh0dXJlID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTERlcHRoVGV4dHVyZT4oKnRo
aXMpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX3dlYmdsRGVwdGhUZXh0dXJlLmdldCgp
OwogICAgIH0KICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiV0VCR0xfZHJh
d19idWZmZXJzIikgJiYgc3VwcG9ydHNEcmF3QnVmZmVycygpKSB7CiAgICAgICAgIGlmICghbV93
ZWJnbERyYXdCdWZmZXJzKSB7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS0+ZW5zdXJlRW5hYmxlZCgiR0xfRVhUX2RyYXdfYnVmZmVycyIpOwotICAgICAgICAgICAgbV93
ZWJnbERyYXdCdWZmZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTERyYXdCdWZmZXJzPih0aGlz
KTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQo
IkdMX0VYVF9kcmF3X2J1ZmZlcnMiKTsKKyAgICAgICAgICAgIG1fd2ViZ2xEcmF3QnVmZmVycyA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xEcmF3QnVmZmVycz4oKnRoaXMpOwogICAgICAgICB9CiAg
ICAgICAgIHJldHVybiBtX3dlYmdsRHJhd0J1ZmZlcnMuZ2V0KCk7CiAgICAgfQotICAgIGlmIChl
cXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJBTkdMRV9pbnN0YW5jZWRfYXJyYXlzIikgJiYg
QU5HTEVJbnN0YW5jZWRBcnJheXM6OnN1cHBvcnRlZCh0aGlzKSkgeworICAgIGlmIChlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKG5hbWUsICJBTkdMRV9pbnN0YW5jZWRfYXJyYXlzIikgJiYgQU5HTEVJ
bnN0YW5jZWRBcnJheXM6OnN1cHBvcnRlZCgqdGhpcykpIHsKICAgICAgICAgaWYgKCFtX2FuZ2xl
SW5zdGFuY2VkQXJyYXlzKSB7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS0+ZW5zdXJlRW5hYmxlZCgiR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpOwotICAgICAgICAg
ICAgbV9hbmdsZUluc3RhbmNlZEFycmF5cyA9IHN0ZDo6bWFrZV91bmlxdWU8QU5HTEVJbnN0YW5j
ZWRBcnJheXM+KHRoaXMpOworICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCku
ZW5zdXJlRW5hYmxlZCgiR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpOworICAgICAgICAgICAg
bV9hbmdsZUluc3RhbmNlZEFycmF5cyA9IHN0ZDo6bWFrZV91bmlxdWU8QU5HTEVJbnN0YW5jZWRB
cnJheXM+KCp0aGlzKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbV9hbmdsZUluc3RhbmNl
ZEFycmF5cy5nZXQoKTsKICAgICB9CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFt
ZSwgIldFQkdMX2RlYnVnX3JlbmRlcmVyX2luZm8iKSkgewogICAgICAgICBpZiAoIW1fd2ViZ2xE
ZWJ1Z1JlbmRlcmVySW5mbykKLSAgICAgICAgICAgIG1fd2ViZ2xEZWJ1Z1JlbmRlcmVySW5mbyA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xEZWJ1Z1JlbmRlcmVySW5mbz4odGhpcyk7CisgICAgICAg
ICAgICBtX3dlYmdsRGVidWdSZW5kZXJlckluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMRGVi
dWdSZW5kZXJlckluZm8+KCp0aGlzKTsKICAgICAgICAgcmV0dXJuIG1fd2ViZ2xEZWJ1Z1JlbmRl
cmVySW5mby5nZXQoKTsKICAgICB9CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFt
ZSwgIldFQkdMX2RlYnVnX3NoYWRlcnMiKQotICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS0+c3VwcG9ydHMoIkdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSIpKSB7
CisgICAgICAgICYmIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9BTkdM
RV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UiKSkgewogICAgICAgICBpZiAoIW1fd2ViZ2xEZWJ1
Z1NoYWRlcnMpCi0gICAgICAgICAgICBtX3dlYmdsRGVidWdTaGFkZXJzID0gc3RkOjptYWtlX3Vu
aXF1ZTxXZWJHTERlYnVnU2hhZGVycz4odGhpcyk7CisgICAgICAgICAgICBtX3dlYmdsRGVidWdT
aGFkZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTERlYnVnU2hhZGVycz4oKnRoaXMpOwogICAg
ICAgICByZXR1cm4gbV93ZWJnbERlYnVnU2hhZGVycy5nZXQoKTsKICAgICB9CiAKQEAgLTI1Miw0
NCArMjUyLDQ0IEBAIFZlY3RvcjxTdHJpbmc+IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U3Vw
cG9ydGVkRXh0ZW5zaW9ucygpCiAgICAgaWYgKG1faXNQZW5kaW5nUG9saWN5UmVzb2x1dGlvbikK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCktPnN1cHBvcnRzKCJHTF9FWFRfYmxlbmRfbWlubWF4IikpCisgICAgaWYgKG1fY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9FWFRfYmxlbmRfbWlubWF4IikpCiAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoIkVYVF9ibGVuZF9taW5tYXgiKTsKLSAgICBpZiAobV9jb250
ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9FWFRfc1JHQiIpKQorICAgIGlmICht
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfRVhUX3NSR0IiKSkKICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgiRVhUX3NSR0IiKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCktPnN1cHBvcnRzKCJHTF9FWFRfZnJhZ19kZXB0aCIpKQorICAgIGlmIChtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfRVhUX2ZyYWdfZGVwdGgiKSkKICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgiRVhUX2ZyYWdfZGVwdGgiKTsKLSAgICBpZiAobV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCIpKQorICAgIGlm
IChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfZmxv
YXQiKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiT0VTX3RleHR1cmVfZmxvYXQiKTsKLSAgICBp
ZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9m
bG9hdF9saW5lYXIiKSkKKyAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9y
dHMoIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIpKQogICAgICAgICByZXN1bHQuYXBwZW5k
KCJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IikpCisgICAgaWYg
KG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9oYWxm
X2Zsb2F0IikpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQi
KTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNf
dGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpKQorICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKSkKICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgiT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKTsKLSAg
ICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfc3RhbmRh
cmRfZGVyaXZhdGl2ZXMiKSkKKyAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3Vw
cG9ydHMoIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpKQogICAgICAgICByZXN1bHQuYXBw
ZW5kKCJPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRF
eHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIikgfHwgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9BUkJfc2hhZGVyX3RleHR1cmVf
bG9kIikpCisgICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9F
WFRfc2hhZGVyX3RleHR1cmVfbG9kIikgfHwgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3Vw
cG9ydHMoIkdMX0FSQl9zaGFkZXJfdGV4dHVyZV9sb2QiKSkKICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgiRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpOwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS0+c3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpKQor
ICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfRVhUX3RleHR1
cmVfZmlsdGVyX2FuaXNvdHJvcGljIikpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIkVYVF90ZXh0
dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpOwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS0+c3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IikpCisgICAgaWYgKG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfdmVydGV4X2FycmF5X29i
amVjdCIpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdmVydGV4X2FycmF5X29iamVjdCIp
OwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU19l
bGVtZW50X2luZGV4X3VpbnQiKSkKKyAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCku
c3VwcG9ydHMoIkdMX09FU19lbGVtZW50X2luZGV4X3VpbnQiKSkKICAgICAgICAgcmVzdWx0LmFw
cGVuZCgiT0VTX2VsZW1lbnRfaW5kZXhfdWludCIpOwogICAgIHJlc3VsdC5hcHBlbmQoIldFQkdM
X2xvc2VfY29udGV4dCIpOwotICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpzdXBw
b3J0ZWQodGhpcykpCisgICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEM6OnN1cHBvcnRl
ZCgqdGhpcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQktJVF9XRUJHTF9jb21wcmVzc2Vk
X3RleHR1cmVfYXRjIik7Ci0gICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6c3Vw
cG9ydGVkKHRoaXMpKQorICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBv
cnRlZCgqdGhpcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQktJVF9XRUJHTF9jb21wcmVz
c2VkX3RleHR1cmVfcHZydGMiKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6
OnN1cHBvcnRlZCh0aGlzKSkKKyAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM6OnN1
cHBvcnRlZCgqdGhpcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2NvbXByZXNzZWRf
dGV4dHVyZV9zM3RjIik7Ci0gICAgaWYgKFdlYkdMRGVwdGhUZXh0dXJlOjpzdXBwb3J0ZWQoZ3Jh
cGhpY3NDb250ZXh0M0QoKSkpCisgICAgaWYgKFdlYkdMRGVwdGhUZXh0dXJlOjpzdXBwb3J0ZWQo
KmdyYXBoaWNzQ29udGV4dDNEKCkpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9kZXB0
aF90ZXh0dXJlIik7CiAgICAgaWYgKHN1cHBvcnRzRHJhd0J1ZmZlcnMoKSkKICAgICAgICAgcmVz
dWx0LmFwcGVuZCgiV0VCR0xfZHJhd19idWZmZXJzIik7Ci0gICAgaWYgKEFOR0xFSW5zdGFuY2Vk
QXJyYXlzOjpzdXBwb3J0ZWQodGhpcykpCisgICAgaWYgKEFOR0xFSW5zdGFuY2VkQXJyYXlzOjpz
dXBwb3J0ZWQoKnRoaXMpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJBTkdMRV9pbnN0YW5jZWRf
YXJyYXlzIik7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygi
R0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIikpCisgICAgaWYgKG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3Vy
Y2UiKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfZGVidWdfc2hhZGVycyIpOwogICAg
IHJlc3VsdC5hcHBlbmQoIldFQkdMX2RlYnVnX3JlbmRlcmVyX2luZm8iKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmNwcAppbmRleCAyZWI5MjgxZDJjY2U3NGIxODMyODE1MTdmZTM4NGU0OGUwOGE4MDI4Li40ZDQz
ZTc0ZjYxMTk5M2MyNDk1ZDNmYWQwZWE1ZDI4OTU5ZDhiZGU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApA
QCAtNDMwLDkgKzQzMCw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGUoSFRNCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAotICAgIEV4dGVuc2lvbnMzRCogZXh0ZW5zaW9ucyA9IGNvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKTsKLSAgICBpZiAoZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0VY
VF9kZWJ1Z19tYXJrZXIiKSkKLSAgICAgICAgZXh0ZW5zaW9ucy0+cHVzaEdyb3VwTWFya2VyRVhU
KCJXZWJHTFJlbmRlcmluZ0NvbnRleHQiKTsKKyAgICBFeHRlbnNpb25zM0QmIGV4dGVuc2lvbnMg
PSBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCk7CisgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMo
IkdMX0VYVF9kZWJ1Z19tYXJrZXIiKSkKKyAgICAgICAgZXh0ZW5zaW9ucy5wdXNoR3JvdXBNYXJr
ZXJFWFQoIldlYkdMUmVuZGVyaW5nQ29udGV4dCIpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U+IHJlbmRlcmluZ0NvbnRleHQgPSBudWxscHRyOwogI2lm
IEVOQUJMRShXRUJHTDIpCkBAIC01NzUsMTYgKzU3NSwxNiBAQCB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnNldHVwRmxhZ3MoKQogICAgICAgICBtX3N5bnRoZXNpemVkRXJyb3JzVG9D
b25zb2xlID0gcGFnZS0+c2V0dGluZ3MoKS53ZWJHTEVycm9yc1RvQ29uc29sZUVuYWJsZWQoKTsK
IAogICAgIG1faXNHTEVTMkNvbXBsaWFudCA9IG1fY29udGV4dC0+aXNHTEVTMkNvbXBsaWFudCgp
OwotICAgIG1faXNFcnJvckdlbmVyYXRlZE9uT3V0T2ZCb3VuZHNBY2Nlc3NlcyA9IG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLT5pc0VuYWJsZWQoIkdMX0NIUk9NSVVNX3N0cmljdF9hdHRyaWJz
Iik7Ci0gICAgbV9pc1Jlc291cmNlU2FmZSA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5p
c0VuYWJsZWQoIkdMX0NIUk9NSVVNX3Jlc291cmNlX3NhZmUiKTsKKyAgICBtX2lzRXJyb3JHZW5l
cmF0ZWRPbk91dE9mQm91bmRzQWNjZXNzZXMgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5p
c0VuYWJsZWQoIkdMX0NIUk9NSVVNX3N0cmljdF9hdHRyaWJzIik7CisgICAgbV9pc1Jlc291cmNl
U2FmZSA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmlzRW5hYmxlZCgiR0xfQ0hST01JVU1f
cmVzb3VyY2Vfc2FmZSIpOwogICAgIGlmIChtX2lzR0xFUzJDb21wbGlhbnQpIHsKLSAgICAgICAg
bV9pc0dMRVMyTlBPVFN0cmljdCA9ICFtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+aXNFbmFi
bGVkKCJHTF9PRVNfdGV4dHVyZV9ucG90Iik7Ci0gICAgICAgIG1faXNEZXB0aFN0ZW5jaWxTdXBw
b3J0ZWQgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+aXNFbmFibGVkKCJHTF9PRVNfcGFj
a2VkX2RlcHRoX3N0ZW5jaWwiKTsKKyAgICAgICAgbV9pc0dMRVMyTlBPVFN0cmljdCA9ICFtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5pc0VuYWJsZWQoIkdMX09FU190ZXh0dXJlX25wb3QiKTsK
KyAgICAgICAgbV9pc0RlcHRoU3RlbmNpbFN1cHBvcnRlZCA9IG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLmlzRW5hYmxlZCgiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CiAgICAgfSBl
bHNlIHsKLSAgICAgICAgbV9pc0dMRVMyTlBPVFN0cmljdCA9ICFtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS0+aXNFbmFibGVkKCJHTF9BUkJfdGV4dHVyZV9ub25fcG93ZXJfb2ZfdHdvIik7Ci0g
ICAgICAgIG1faXNEZXB0aFN0ZW5jaWxTdXBwb3J0ZWQgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS0+aXNFbmFibGVkKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKTsKKyAgICAgICAg
bV9pc0dMRVMyTlBPVFN0cmljdCA9ICFtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5pc0VuYWJs
ZWQoIkdMX0FSQl90ZXh0dXJlX25vbl9wb3dlcl9vZl90d28iKTsKKyAgICAgICAgbV9pc0RlcHRo
U3RlbmNpbFN1cHBvcnRlZCA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmlzRW5hYmxlZCgi
R0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CiAgICAgfQotICAgIG1faXNSb2J1c3RuZXNz
RVhUU3VwcG9ydGVkID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmlzRW5hYmxlZCgiR0xf
RVhUX3JvYnVzdG5lc3MiKTsKKyAgICBtX2lzUm9idXN0bmVzc0VYVFN1cHBvcnRlZCA9IG1fY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmlzRW5hYmxlZCgiR0xfRVhUX3JvYnVzdG5lc3MiKTsKIH0K
IAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjphZGRDb21wcmVzc2VkVGV4dHVyZUZv
cm1hdChHQzNEZW51bSBmb3JtYXQpCkBAIC04OTQsNyArODk0LDcgQEAgYm9vbCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpjaGVja09iamVjdFRvQmVCb3VuZChjb25zdCBjaGFyKiBmdW5jdGlv
bk5hbWUsIFcKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgaWYgKG9iamVjdCkgewotICAgICAgICBpZiAoIW9iamVjdC0+dmFsaWRh
dGUoY29udGV4dEdyb3VwKCksIHRoaXMpKSB7CisgICAgICAgIGlmICghb2JqZWN0LT52YWxpZGF0
ZShjb250ZXh0R3JvdXAoKSwgKnRoaXMpKSB7CiAgICAgICAgICAgICBzeW50aGVzaXplR0xFcnJv
cihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgIm9i
amVjdCBub3QgZnJvbSB0aGlzIGNvbnRleHQiKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgfQpAQCAtMTQwMCw3ICsxNDAwLDcgQEAgUmVmUHRyPFdlYkdMQnVmZmVyPiBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGVCdWZmZXIoKQogewogICAgIGlmIChpc0NvbnRl
eHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGF1dG8gYnVm
ZmVyID0gV2ViR0xCdWZmZXI6OmNyZWF0ZSh0aGlzKTsKKyAgICBhdXRvIGJ1ZmZlciA9IFdlYkdM
QnVmZmVyOjpjcmVhdGUoKnRoaXMpOwogICAgIGFkZFNoYXJlZE9iamVjdChidWZmZXIucHRyKCkp
OwogICAgIHJldHVybiBXVEZNb3ZlKGJ1ZmZlcik7CiB9CkBAIC0xNDA5LDcgKzE0MDksNyBAQCBS
ZWZQdHI8V2ViR0xGcmFtZWJ1ZmZlcj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRl
RnJhbWVidWZmZXIoKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIGF1dG8gYnVmZmVyID0gV2ViR0xGcmFtZWJ1ZmZlcjo6
Y3JlYXRlKHRoaXMpOworICAgIGF1dG8gYnVmZmVyID0gV2ViR0xGcmFtZWJ1ZmZlcjo6Y3JlYXRl
KCp0aGlzKTsKICAgICBhZGRDb250ZXh0T2JqZWN0KGJ1ZmZlci5wdHIoKSk7CiAgICAgcmV0dXJu
IFdURk1vdmUoYnVmZmVyKTsKIH0KQEAgLTE0MTgsNyArMTQxOCw3IEBAIFJlZlB0cjxXZWJHTFRl
eHR1cmU+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZVRleHR1cmUoKQogewogICAg
IGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIGF1dG8gdGV4dHVyZSA9IFdlYkdMVGV4dHVyZTo6Y3JlYXRlKHRoaXMpOworICAgIGF1dG8g
dGV4dHVyZSA9IFdlYkdMVGV4dHVyZTo6Y3JlYXRlKCp0aGlzKTsKICAgICBhZGRTaGFyZWRPYmpl
Y3QodGV4dHVyZS5wdHIoKSk7CiAgICAgcmV0dXJuIFdURk1vdmUodGV4dHVyZSk7CiB9CkBAIC0x
NDI3LDcgKzE0MjcsNyBAQCBSZWZQdHI8V2ViR0xQcm9ncmFtPiBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpjcmVhdGVQcm9ncmFtKCkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGlu
ZygpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvIHByb2dyYW0gPSBXZWJHTFBy
b2dyYW06OmNyZWF0ZSh0aGlzKTsKKyAgICBhdXRvIHByb2dyYW0gPSBXZWJHTFByb2dyYW06OmNy
ZWF0ZSgqdGhpcyk7CiAgICAgYWRkU2hhcmVkT2JqZWN0KHByb2dyYW0ucHRyKCkpOwogICAgIHJl
dHVybiBXVEZNb3ZlKHByb2dyYW0pOwogfQpAQCAtMTQzNiw3ICsxNDM2LDcgQEAgUmVmUHRyPFdl
YkdMUmVuZGVyYnVmZmVyPiBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGVSZW5kZXJi
dWZmZXIoKQogewogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIGF1dG8gYnVmZmVyID0gV2ViR0xSZW5kZXJidWZmZXI6OmNyZWF0
ZSh0aGlzKTsKKyAgICBhdXRvIGJ1ZmZlciA9IFdlYkdMUmVuZGVyYnVmZmVyOjpjcmVhdGUoKnRo
aXMpOwogICAgIGFkZFNoYXJlZE9iamVjdChidWZmZXIucHRyKCkpOwogICAgIHJldHVybiBXVEZN
b3ZlKGJ1ZmZlcik7CiB9CkBAIC0xNDUwLDcgKzE0NTAsNyBAQCBSZWZQdHI8V2ViR0xTaGFkZXI+
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZVNoYWRlcihHQzNEZW51bSB0eXBlKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBhdXRvIHNoYWRlciA9IFdlYkdM
U2hhZGVyOjpjcmVhdGUodGhpcywgdHlwZSk7CisgICAgYXV0byBzaGFkZXIgPSBXZWJHTFNoYWRl
cjo6Y3JlYXRlKCp0aGlzLCB0eXBlKTsKICAgICBhZGRTaGFyZWRPYmplY3Qoc2hhZGVyLnB0cigp
KTsKICAgICByZXR1cm4gV1RGTW92ZShzaGFkZXIpOwogfQpAQCAtMTQ2Niw3ICsxNDY2LDcgQEAg
Ym9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkZWxldGVPYmplY3QoV2ViR0xPYmplY3Qq
IG9iamVjdCkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICFvYmplY3Qp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIW9iamVjdC0+dmFsaWRhdGUoY29udGV4
dEdyb3VwKCksIHRoaXMpKSB7CisgICAgaWYgKCFvYmplY3QtPnZhbGlkYXRlKGNvbnRleHRHcm91
cCgpLCAqdGhpcykpIHsKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0
M0Q6OklOVkFMSURfT1BFUkFUSU9OLCAiZGVsZXRlIiwgIm9iamVjdCBkb2VzIG5vdCBiZWxvbmcg
dG8gdGhpcyBjb250ZXh0Iik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0xNzg4
LDcgKzE3ODgsNyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRlV2Vi
R0xPYmplY3QoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBXZQogICAgICAgICBzeW50aGVzaXpl
R0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAi
bm8gb2JqZWN0IG9yIG9iamVjdCBkZWxldGVkIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9Ci0gICAgaWYgKCFvYmplY3QtPnZhbGlkYXRlKGNvbnRleHRHcm91cCgpLCB0aGlzKSkgewor
ICAgIGlmICghb2JqZWN0LT52YWxpZGF0ZShjb250ZXh0R3JvdXAoKSwgKnRoaXMpKSB7CiAgICAg
ICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElP
TiwgZnVuY3Rpb25OYW1lLCAib2JqZWN0IGRvZXMgbm90IGJlbG9uZyB0byB0aGlzIGNvbnRleHQi
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTIwMzYsNyArMjAzNiw3IEBAIHZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0Mz
RGVudW0gdGFyZ2V0LCBHQzNEZW51CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNz
Q29udGV4dDNEOjpJTlZBTElEX0VOVU0sICJmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciIsICJpbnZh
bGlkIHRhcmdldCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmIChidWZmZXIgJiYg
IWJ1ZmZlci0+dmFsaWRhdGUoY29udGV4dEdyb3VwKCksIHRoaXMpKSB7CisgICAgaWYgKGJ1ZmZl
ciAmJiAhYnVmZmVyLT52YWxpZGF0ZShjb250ZXh0R3JvdXAoKSwgKnRoaXMpKSB7CiAgICAgICAg
IHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTiwg
ImZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyIiwgIm5vIGJ1ZmZlciBvciBidWZmZXIgbm90IGZyb20g
dGhpcyBjb250ZXh0Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMDY4LDcgKzIwNjgs
NyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmZyYW1lYnVmZmVyVGV4dHVyZTJE
KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gYQogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihH
cmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSwgImZyYW1lYnVmZmVyVGV4dHVyZTJEIiwg
ImxldmVsIG5vdCAwIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKHRleHR1cmUg
JiYgIXRleHR1cmUtPnZhbGlkYXRlKGNvbnRleHRHcm91cCgpLCB0aGlzKSkgeworICAgIGlmICh0
ZXh0dXJlICYmICF0ZXh0dXJlLT52YWxpZGF0ZShjb250ZXh0R3JvdXAoKSwgKnRoaXMpKSB7CiAg
ICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJB
VElPTiwgImZyYW1lYnVmZmVyVGV4dHVyZTJEIiwgIm5vIHRleHR1cmUgb3IgdGV4dHVyZSBub3Qg
ZnJvbSB0aGlzIGNvbnRleHQiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI1NDcsNyAr
MjU0Nyw3IEBAIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpnZXRVbmlm
b3JtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgY29uc3QKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4
dDNEOjpGTE9BVDogewogICAgICAgICBHQzNEZmxvYXQgdmFsdWVbMTZdID0gezB9OwogICAgICAg
ICBpZiAobV9pc1JvYnVzdG5lc3NFWFRTdXBwb3J0ZWQpCi0gICAgICAgICAgICBtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS0+Z2V0blVuaWZvcm1mdkVYVChvYmplY3RPclplcm8ocHJvZ3JhbSks
IGxvY2F0aW9uLCAxNiAqIHNpemVvZihHQzNEZmxvYXQpLCB2YWx1ZSk7CisgICAgICAgICAgICBt
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5nZXRuVW5pZm9ybWZ2RVhUKG9iamVjdE9yWmVybyhw
cm9ncmFtKSwgbG9jYXRpb24sIDE2ICogc2l6ZW9mKEdDM0RmbG9hdCksIHZhbHVlKTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRVbmlmb3JtZnYob2JqZWN0T3JaZXJv
KHByb2dyYW0pLCBsb2NhdGlvbiwgdmFsdWUpOwogICAgICAgICBpZiAobGVuZ3RoID09IDEpCkBA
IC0yNTU3LDcgKzI1NTcsNyBAQCBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6Z2V0VW5pZm9ybShXZWJHTFByb2dyYW0qIHByb2dyYW0sIGNvbnN0CiAgICAgY2FzZSBHcmFw
aGljc0NvbnRleHQzRDo6SU5UOiB7CiAgICAgICAgIEdDM0RpbnQgdmFsdWVbNF0gPSB7MH07CiAg
ICAgICAgIGlmIChtX2lzUm9idXN0bmVzc0VYVFN1cHBvcnRlZCkKLSAgICAgICAgICAgIG1fY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5nZXRuVW5pZm9ybWl2RVhUKG9iamVjdE9yWmVybyhwcm9n
cmFtKSwgbG9jYXRpb24sIDQgKiBzaXplb2YoR0MzRGludCksIHZhbHVlKTsKKyAgICAgICAgICAg
IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldG5Vbmlmb3JtaXZFWFQob2JqZWN0T3JaZXJv
KHByb2dyYW0pLCBsb2NhdGlvbiwgNCAqIHNpemVvZihHQzNEaW50KSwgdmFsdWUpOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZvcm1pdihvYmplY3RPclplcm8o
cHJvZ3JhbSksIGxvY2F0aW9uLCB2YWx1ZSk7CiAgICAgICAgIGlmIChsZW5ndGggPT0gMSkKQEAg
LTI1NjcsNyArMjU2Nyw3IEBAIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpnZXRVbmlmb3JtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSwgY29uc3QKICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpCT09MOiB7CiAgICAgICAgIEdDM0RpbnQgdmFsdWVbNF0gPSB7MH07CiAg
ICAgICAgIGlmIChtX2lzUm9idXN0bmVzc0VYVFN1cHBvcnRlZCkKLSAgICAgICAgICAgIG1fY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5nZXRuVW5pZm9ybWl2RVhUKG9iamVjdE9yWmVybyhwcm9n
cmFtKSwgbG9jYXRpb24sIDQgKiBzaXplb2YoR0MzRGludCksIHZhbHVlKTsKKyAgICAgICAgICAg
IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmdldG5Vbmlmb3JtaXZFWFQob2JqZWN0T3JaZXJv
KHByb2dyYW0pLCBsb2NhdGlvbiwgNCAqIHNpemVvZihHQzNEaW50KSwgdmFsdWUpOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZvcm1pdihvYmplY3RPclplcm8o
cHJvZ3JhbSksIGxvY2F0aW9uLCB2YWx1ZSk7CiAgICAgICAgIGlmIChsZW5ndGggPiAxKSB7CkBA
IC0zMTUwLDcgKzMxNTAsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnJlYWRQ
aXhlbHMoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aAogICAgIHZvaWQqIGRh
dGEgPSBwaXhlbHMuYmFzZUFkZHJlc3MoKTsKIAogICAgIGlmIChtX2lzUm9idXN0bmVzc0VYVFN1
cHBvcnRlZCkKLSAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnJlYWRuUGl4ZWxz
RVhUKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLmJ5dGVMZW5ndGgo
KSwgZGF0YSk7CisgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnJlYWRuUGl4ZWxz
RVhUKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzLmJ5dGVMZW5ndGgo
KSwgZGF0YSk7CiAgICAgZWxzZQogICAgICAgICBtX2NvbnRleHQtPnJlYWRQaXhlbHMoeCwgeSwg
d2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBkYXRhKTsKIH0KQEAgLTQ2NjAsNyArNDY2MCw3
IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6bG9zZUNvbnRleHRJbXBsKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6Okxvc3RDCiAgICAgICAgIC8vIEluZm9ybSB0aGUgZW1iZWRk
ZXIgdGhhdCBhIGxvc3QgY29udGV4dCB3YXMgcmVjZWl2ZWQuIEluIHJlc3BvbnNlLCB0aGUgZW1i
ZWRkZXIgbWlnaHQKICAgICAgICAgLy8gZGVjaWRlIHRvIHRha2UgYWN0aW9uIHN1Y2ggYXMgYXNr
aW5nIHRoZSB1c2VyIGZvciBwZXJtaXNzaW9uIHRvIHVzZSBXZWJHTCBhZ2Fpbi4KICAgICAgICAg
aWYgKEZyYW1lKiBmcmFtZSA9IGNhbnZhcygpLmRvY3VtZW50KCkuZnJhbWUoKSkKLSAgICAgICAg
ICAgIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5kaWRMb3NlV2ViR0xDb250ZXh0KG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLT5nZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkpOworICAgICAg
ICAgICAgZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmRpZExvc2VXZWJHTENvbnRleHQobV9jb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkuZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpKTsKICAgICB9
CiAKICAgICBkZXRhY2hBbmRSZW1vdmVBbGxPYmplY3RzKCk7CkBAIC01NjQ4LDcgKzU2NDgsNyBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Om1heWJlUmVzdG9yZUNvbnRleHQoKQog
ICAgIGlmICghbV9yZXN0b3JlQWxsb3dlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW50IGNv
bnRleHRMb3N0UmVhc29uID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmdldEdyYXBoaWNz
UmVzZXRTdGF0dXNBUkIoKTsKKyAgICBpbnQgY29udGV4dExvc3RSZWFzb24gPSBtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS5nZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCk7CiAKICAgICBzd2l0
Y2ggKGNvbnRleHRMb3N0UmVhc29uKSB7CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6Tk9f
RVJST1I6CkBAIC01ODY3LDcgKzU4NjcsNyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OnN1cHBvcnRzRHJhd0J1ZmZlcnMoKQogewogICAgIGlmICghbV9kcmF3QnVmZmVyc1dlYkdM
UmVxdWlyZW1lbnRzQ2hlY2tlZCkgewogICAgICAgICBtX2RyYXdCdWZmZXJzV2ViR0xSZXF1aXJl
bWVudHNDaGVja2VkID0gdHJ1ZTsKLSAgICAgICAgbV9kcmF3QnVmZmVyc1N1cHBvcnRlZCA9IFdl
YkdMRHJhd0J1ZmZlcnM6OnN1cHBvcnRlZCh0aGlzKTsKKyAgICAgICAgbV9kcmF3QnVmZmVyc1N1
cHBvcnRlZCA9IFdlYkdMRHJhd0J1ZmZlcnM6OnN1cHBvcnRlZCgqdGhpcyk7CiAgICAgfQogICAg
IHJldHVybiBtX2RyYXdCdWZmZXJzU3VwcG9ydGVkOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTYW1wbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMU2FtcGxlci5jcHAKaW5kZXggNzY5ZmQ0ZTI0YmIxZmQ4ZGQ3NTI1MjgzMWUy
MGQ5MzhhOTY4ZWQwMi4uMGNhNzk1YjhiZjAyN2Q2MmJmZWVlYTVjZTU0NjRjMzYwZGQ0NDE4MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTYW1wbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNhbXBsZXIuY3BwCkBAIC0zMyw3
ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKLVJlZjxXZWJHTFNhbXBsZXI+
IFdlYkdMU2FtcGxlcjo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGN0eCkKK1Jl
ZjxXZWJHTFNhbXBsZXI+IFdlYkdMU2FtcGxlcjo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UmIGN0eCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHTFNhbXBsZXIoY3R4
KSk7CiB9CkBAIC00Myw3ICs0Myw3IEBAIFdlYkdMU2FtcGxlcjo6fldlYkdMU2FtcGxlcigpCiAg
ICAgZGVsZXRlT2JqZWN0KDApOwogfQogCi1XZWJHTFNhbXBsZXI6OldlYkdMU2FtcGxlcihXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjdHgpCitXZWJHTFNhbXBsZXI6OldlYkdMU2FtcGxlcihX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjdHgpCiAgICAgOiBXZWJHTFNoYXJlZE9iamVjdChj
dHgpCiB7CiAgICAgLy8gRklYTUU6IENhbGwgY3JlYXRlU2FtcGxlciBmcm9tIEdyYXBoaWNzQ29u
dGV4dDNELgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTYW1w
bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNhbXBsZXIuaAppbmRleCAw
YjRhMWVmOTliNmU5Yjg0MWQ1NzI1MWQxOTM3NGFmYTA5OWQxNWNhLi5iZDljMGVhZGQwM2E3NTI5
MDNjZGNlZGQzZTk2ZWNmYWIyMTgxMmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFNhbXBsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFNhbXBsZXIuaApAQCAtMzMsMTAgKzMzLDEwIEBAIGNsYXNzIFdlYkdMU2FtcGxlciBmaW5h
bCA6IHB1YmxpYyBXZWJHTFNoYXJlZE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2Vi
R0xTYW1wbGVyKCk7CiAKLSAgICBzdGF0aWMgUmVmPFdlYkdMU2FtcGxlcj4gY3JlYXRlKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdMU2FtcGxlcj4gY3Jl
YXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKIAogcHJvdGVjdGVkOgotICAgIFdlYkdM
U2FtcGxlcihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAgV2ViR0xTYW1wbGVyKFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKIAogICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChH
cmFwaGljc0NvbnRleHQzRCosIFBsYXRmb3JtM0RPYmplY3QpIG92ZXJyaWRlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRlci5jcHAKaW5kZXggMTZmZjZkNWM4NThhNzYx
NTc4MjFmOWI5NGNhYzFkZTc0MjZmZTJjOS4uN2ZhZWQyNDA4MDM0ZjhiZjgwZGM3ODFlMDJlNmU5
ZTRjMTc0NmM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xT
aGFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmNw
cApAQCAtMzQsMTggKzM0LDE4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFdlYkdM
U2hhZGVyPiBXZWJHTFNoYWRlcjo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGN0
eCwgR0MzRGVudW0gdHlwZSkKK1JlZjxXZWJHTFNoYWRlcj4gV2ViR0xTaGFkZXI6OmNyZWF0ZShX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjdHgsIEdDM0RlbnVtIHR5cGUpCiB7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgV2ViR0xTaGFkZXIoY3R4LCB0eXBlKSk7CiB9CiAKLVdlYkdMU2hh
ZGVyOjpXZWJHTFNoYWRlcihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjdHgsIEdDM0RlbnVt
IHR5cGUpCitXZWJHTFNoYWRlcjo6V2ViR0xTaGFkZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSYgY3R4LCBHQzNEZW51bSB0eXBlKQogICAgIDogV2ViR0xTaGFyZWRPYmplY3QoY3R4KQogICAg
ICwgbV90eXBlKHR5cGUpCiAgICAgLCBtX3NvdXJjZShlbXB0eVN0cmluZygpKQogICAgICwgbV9p
c1ZhbGlkKGZhbHNlKQogewotICAgIHNldE9iamVjdChjdHgtPmdyYXBoaWNzQ29udGV4dDNEKCkt
PmNyZWF0ZVNoYWRlcih0eXBlKSk7CisgICAgc2V0T2JqZWN0KGN0eC5ncmFwaGljc0NvbnRleHQz
RCgpLT5jcmVhdGVTaGFkZXIodHlwZSkpOwogfQogCiBXZWJHTFNoYWRlcjo6fldlYkdMU2hhZGVy
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRlci5oCmluZGV4IDYzOWNlZmE3
MGE2OGI1NzM4ZDhmZjIxZDhiNjVjYmJhODFkODBjMWEuLjZhZjVjMjY5ZDUwYWFlNGQ4NTViN2Qw
NzBlYTMxODhlZTU0M2I5MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMU2hhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFk
ZXIuaApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBXZWJHTFNoYWRlciBmaW5hbCA6IHB1YmxpYyBX
ZWJHTFNoYXJlZE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViR0xTaGFkZXIoKTsK
IAotICAgIHN0YXRpYyBSZWY8V2ViR0xTaGFkZXI+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlKiwgR0MzRGVudW0pOworICAgIHN0YXRpYyBSZWY8V2ViR0xTaGFkZXI+IGNyZWF0ZShX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiwgR0MzRGVudW0pOwogCiAgICAgR0MzRGVudW0gZ2V0
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIGNvbnN0IFN0cmluZyYgZ2V0U291
cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2U7IH0KQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0VmFsaWQoYm9vbCB2YWxpZCkgeyBtX2lzVmFsaWQgPSB2YWxpZDsgfQog
CiBwcml2YXRlOgotICAgIFdlYkdMU2hhZGVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqLCBH
QzNEZW51bSk7CisgICAgV2ViR0xTaGFkZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYsIEdD
M0RlbnVtKTsKIAogICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChHcmFwaGljc0NvbnRleHQzRCos
IFBsYXRmb3JtM0RPYmplY3QpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFNoYXJlZE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFNoYXJlZE9iamVjdC5jcHAKaW5kZXggMzRmN2NlZWE1MmY2ODVjMGUxYzY2
Zjg1OTJiYzExNzUxNjVmOWRkYy4uMzZkYzE1ZDNhMGU3ZTVmNmE5NzA2MWU0YzNiZDNjMjQxYzFi
ODRlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFyZWRP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhcmVkT2Jq
ZWN0LmNwcApAQCAtMzQsOSArMzQsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdlYkdM
U2hhcmVkT2JqZWN0OjpXZWJHTFNoYXJlZE9iamVjdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
KiBjb250ZXh0KQotICAgIDogV2ViR0xPYmplY3QoY29udGV4dCksCi0gICAgICBtX2NvbnRleHRH
cm91cChjb250ZXh0LT5jb250ZXh0R3JvdXAoKSkKK1dlYkdMU2hhcmVkT2JqZWN0OjpXZWJHTFNo
YXJlZE9iamVjdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQorICAgIDogV2Vi
R0xPYmplY3QoY29udGV4dCkKKyAgICAsIG1fY29udGV4dEdyb3VwKGNvbnRleHQuY29udGV4dEdy
b3VwKCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMU2hhcmVkT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYXJl
ZE9iamVjdC5oCmluZGV4IDk0NjdmZmEzMzJkNzBlZjhmZWI4Mjk3MWI4MDlkNDI0NzMzNTdlNTgu
LmFiZTQ4MDMzMzcyYzk1NmNjNzEzMGViN2Y3YmZmZmRjZDFhOWY1N2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhcmVkT2JqZWN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFyZWRPYmplY3QuaApAQCAtNTIsNyArNTIsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzVHJhbnNmb3JtRmVlZGJhY2soKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1ZlcnRleEFycmF5T2JqZWN0KCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIGJvb2wgdmFsaWRhdGUoY29uc3QgV2ViR0xD
b250ZXh0R3JvdXAqIGNvbnRleHRHcm91cCwgY29uc3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSopIGNvbnN0IG92ZXJyaWRlCisgICAgYm9vbCB2YWxpZGF0ZShjb25zdCBXZWJHTENvbnRleHRH
cm91cCogY29udGV4dEdyb3VwLCBjb25zdCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJikgY29u
c3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJldHVybiBjb250ZXh0R3JvdXAgPT0gbV9jb250
ZXh0R3JvdXA7CiAgICAgfQpAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZXRh
Y2hDb250ZXh0R3JvdXAoKTsKIAogcHJvdGVjdGVkOgotICAgIFdlYkdMU2hhcmVkT2JqZWN0KFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBXZWJHTFNoYXJlZE9iamVjdChXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlJik7CiAKICAgICBib29sIGhhc0dyb3VwT3JDb250ZXh0KCkgY29u
c3Qgb3ZlcnJpZGUKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFN5bmMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTeW5jLmNw
cAppbmRleCAyYmQyY2U4MmE4NzE1MDRiNjkzOWY1NjhhZjRjOTVjZGEwMjI3NmFjLi42MzYwZmJh
NGVlMzBjMzdiMmE4NmRlZWMyYmRjMzJhOTgwZDg3MTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFN5bmMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMU3luYy5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIAotUmVmPFdlYkdMU3luYz4gV2ViR0xTeW5jOjpjcmVhdGUoV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSogY3R4KQorUmVmPFdlYkdMU3luYz4gV2ViR0xTeW5jOjpjcmVhdGUoV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY3R4KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFdlYkdMU3luYyhjdHgpKTsKIH0KQEAgLTQzLDcgKzQzLDcgQEAgV2ViR0xTeW5jOjp+V2ViR0xT
eW5jKCkKICAgICBkZWxldGVPYmplY3QoMCk7CiB9CiAKLVdlYkdMU3luYzo6V2ViR0xTeW5jKFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGN0eCkKK1dlYkdMU3luYzo6V2ViR0xTeW5jKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UmIGN0eCkKICAgICA6IFdlYkdMU2hhcmVkT2JqZWN0KGN0eCkK
IHsKICAgICAvLyBGSVhNRTogQ2FsbCBmZW5jZVN5bmMgZnJvbSBHcmFwaGljc0NvbnRleHQzRC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTeW5jLmgKaW5kZXggN2FkMzk5OWZiMDEwNDI5
Y2JlMzYzMzBmZWVmMGU3ODBjNGM1MmI4YS4uZWY2ZWM5ZGNkNTk2NGZiNDZkMjM3YTAwNjNkNGM1
NmIxMmNkYTc0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xT
eW5jLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTeW5jLmgKQEAgLTMz
LDEwICszMywxMCBAQCBjbGFzcyBXZWJHTFN5bmMgZmluYWwgOiBwdWJsaWMgV2ViR0xTaGFyZWRP
YmplY3QgewogcHVibGljOgogICAgIHZpcnR1YWwgfldlYkdMU3luYygpOwogCi0gICAgc3RhdGlj
IFJlZjxXZWJHTFN5bmM+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAg
c3RhdGljIFJlZjxXZWJHTFN5bmM+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7
CiAKIHByb3RlY3RlZDoKLSAgICBXZWJHTFN5bmMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSop
OworICAgIFdlYkdMU3luYyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAKICAgICB2b2lk
IGRlbGV0ZU9iamVjdEltcGwoR3JhcGhpY3NDb250ZXh0M0QqLCBQbGF0Zm9ybTNET2JqZWN0KSBv
dmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xU
ZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5jcHAK
aW5kZXggYmRmY2VhYTg1MjUyMmU3OTRlZjZlZmI1YjIzZmRkMTY1ZTRkMTQ4OC4uYzRkNTcyMTQw
ZGI5OWI2OTc2MGIyM2RjMGU4NTkxZmE0OThiODRjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFRleHR1cmUuY3BwCkBAIC0zNSwxMiArMzUsMTIgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1SZWY8V2ViR0xUZXh0dXJlPiBXZWJHTFRleHR1cmU6OmNyZWF0ZShXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjdHgpCitSZWY8V2ViR0xUZXh0dXJlPiBXZWJHTFRleHR1
cmU6OmNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjdHgpCiB7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgV2ViR0xUZXh0dXJlKGN0eCkpOwogfQogCi1XZWJHTFRleHR1cmU6Oldl
YkdMVGV4dHVyZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjdHgpCitXZWJHTFRleHR1cmU6
OldlYkdMVGV4dHVyZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjdHgpCiAgICAgOiBXZWJH
TFNoYXJlZE9iamVjdChjdHgpCiAgICAgLCBtX3RhcmdldCgwKQogICAgICwgbV9taW5GaWx0ZXIo
R3JhcGhpY3NDb250ZXh0M0Q6Ok5FQVJFU1RfTUlQTUFQX0xJTkVBUikKQEAgLTU0LDcgKzU0LDcg
QEAgV2ViR0xUZXh0dXJlOjpXZWJHTFRleHR1cmUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSog
Y3R4KQogICAgICwgbV9pc0Zsb2F0VHlwZShmYWxzZSkKICAgICAsIG1faXNIYWxmRmxvYXRUeXBl
KGZhbHNlKQogewotICAgIHNldE9iamVjdChjdHgtPmdyYXBoaWNzQ29udGV4dDNEKCktPmNyZWF0
ZVRleHR1cmUoKSk7CisgICAgc2V0T2JqZWN0KGN0eC5ncmFwaGljc0NvbnRleHQzRCgpLT5jcmVh
dGVUZXh0dXJlKCkpOwogfQogCiBXZWJHTFRleHR1cmU6On5XZWJHTFRleHR1cmUoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRleHR1cmUuaAppbmRleCA2Y2EzODg5NzY2YzBjMDNl
NmU1NDUxMDBhNjg1NzVmYmU5ZTcxOTE2Li5kZDk4NjRjMTNmMDQzYWIwMGZiNGVkZGRhODRjNDYz
ODE5OWJiMjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRl
eHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRleHR1cmUuaApA
QCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5XZWJHTFRleHR1cmUoKTsK
IAotICAgIHN0YXRpYyBSZWY8V2ViR0xUZXh0dXJlPiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSopOworICAgIHN0YXRpYyBSZWY8V2ViR0xUZXh0dXJlPiBjcmVhdGUoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSYpOwogCiAgICAgdm9pZCBzZXRUYXJnZXQoR0MzRGVudW0gdGFyZ2V0
LCBHQzNEaW50IG1heExldmVsKTsKICAgICB2b2lkIHNldFBhcmFtZXRlcmkoR0MzRGVudW0gcG5h
bWUsIEdDM0RpbnQgcGFyYW0pOwpAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IEdDM0RpbnQgY29tcHV0ZUxldmVsQ291bnQoR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVp
Z2h0KTsKIAogcHJpdmF0ZToKLSAgICBXZWJHTFRleHR1cmUoV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSopOworICAgIFdlYkdMVGV4dHVyZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAK
ICAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoR3JhcGhpY3NDb250ZXh0M0QqLCBQbGF0Zm9ybTNE
T2JqZWN0KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmNwcAppbmRleCBmMzY1ZDUyM2ZhOGFhNGY0NzEzNzQx
Zjg0ZTlkNTQ5ZjA2ZWQ1MTU3Li4zNTNlNGJhYzFhMjkxYWU4MDc1ODE1Y2NkNzRkMjlmZGU5YTkz
NmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRyYW5zZm9y
bUZlZWRiYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRyYW5z
Zm9ybUZlZWRiYWNrLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgCi1SZWY8V2ViR0xUcmFuc2Zvcm1GZWVkYmFjaz4gV2ViR0xUcmFuc2Zvcm1GZWVkYmFj
azo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGN0eCkKK1JlZjxXZWJHTFRyYW5z
Zm9ybUZlZWRiYWNrPiBXZWJHTFRyYW5zZm9ybUZlZWRiYWNrOjpjcmVhdGUoV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSYgY3R4KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdMVHJh
bnNmb3JtRmVlZGJhY2soY3R4KSk7CiB9CkBAIC00Myw3ICs0Myw3IEBAIFdlYkdMVHJhbnNmb3Jt
RmVlZGJhY2s6On5XZWJHTFRyYW5zZm9ybUZlZWRiYWNrKCkKICAgICBkZWxldGVPYmplY3QoMCk7
CiB9CiAKLVdlYkdMVHJhbnNmb3JtRmVlZGJhY2s6OldlYkdMVHJhbnNmb3JtRmVlZGJhY2soV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY3R4KQorV2ViR0xUcmFuc2Zvcm1GZWVkYmFjazo6V2Vi
R0xUcmFuc2Zvcm1GZWVkYmFjayhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjdHgpCiAgICAg
OiBXZWJHTFNoYXJlZE9iamVjdChjdHgpCiB7CiAgICAgLy8gRklYTUU6IENhbGwgY3JlYXRlVHJh
bnNmb3JtRmVlZGJhY2sgZnJvbSBHcmFwaGljc0NvbnRleHQzRC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVHJhbnNmb3JtRmVlZGJhY2suaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVHJhbnNmb3JtRmVlZGJhY2suaAppbmRleCAyNmQ0MDQ0
ZThkMzc3MjllMjE1Zjc1MWQ4ZmE0MmQzZDJkODBmNDVlLi42OWNmOGU3YmI1NDE4ZWFhOWU0NTY5
MjExNDA4ZjQ3NmIyNmE2Nzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5oCkBAIC0zMywxMCArMzMsMTAgQEAgY2xhc3MgV2Vi
R0xUcmFuc2Zvcm1GZWVkYmFjayBmaW5hbCA6IHB1YmxpYyBXZWJHTFNoYXJlZE9iamVjdCB7CiBw
dWJsaWM6CiAgICAgdmlydHVhbCB+V2ViR0xUcmFuc2Zvcm1GZWVkYmFjaygpOwogCi0gICAgc3Rh
dGljIFJlZjxXZWJHTFRyYW5zZm9ybUZlZWRiYWNrPiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSopOworICAgIHN0YXRpYyBSZWY8V2ViR0xUcmFuc2Zvcm1GZWVkYmFjaz4gY3JlYXRl
KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKIAogcHJvdGVjdGVkOgotICAgIFdlYkdMVHJh
bnNmb3JtRmVlZGJhY2soV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOworICAgIFdlYkdMVHJh
bnNmb3JtRmVlZGJhY2soV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogCiAgICAgdm9pZCBk
ZWxldGVPYmplY3RJbXBsKEdyYXBoaWNzQ29udGV4dDNEKiwgUGxhdGZvcm0zRE9iamVjdCkgb3Zl
cnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVy
dGV4QXJyYXlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0
ZXhBcnJheU9iamVjdC5jcHAKaW5kZXggNmU4MTVlZjIzNWRlNTJiMGRiMDA0ZjY1ODYwMjQzYzAx
MDk0YzU2OS4uN2ZhNjljOWE0OTRkYmVlYTlkYmViZjg5ZTg1ZjQzZjljZmQwMjg0OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVj
dC5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAotUmVm
PFdlYkdMVmVydGV4QXJyYXlPYmplY3Q+IFdlYkdMVmVydGV4QXJyYXlPYmplY3Q6OmNyZWF0ZShX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjdHgsIFZBT1R5cGUgdHlwZSkKK1JlZjxXZWJHTFZl
cnRleEFycmF5T2JqZWN0PiBXZWJHTFZlcnRleEFycmF5T2JqZWN0OjpjcmVhdGUoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSYgY3R4LCBWQU9UeXBlIHR5cGUpCiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdChjdHgsIHR5cGUpKTsKIH0KQEAgLTQzLDcg
KzQzLDcgQEAgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdDo6fldlYkdMVmVydGV4QXJyYXlPYmplY3Qo
KQogICAgIGRlbGV0ZU9iamVjdCgwKTsKIH0KIAotV2ViR0xWZXJ0ZXhBcnJheU9iamVjdDo6V2Vi
R0xWZXJ0ZXhBcnJheU9iamVjdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjdHgsIFZBT1R5
cGUgdHlwZSkKK1dlYkdMVmVydGV4QXJyYXlPYmplY3Q6OldlYkdMVmVydGV4QXJyYXlPYmplY3Qo
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY3R4LCBWQU9UeXBlIHR5cGUpCiAgICAgOiBXZWJH
TFZlcnRleEFycmF5T2JqZWN0QmFzZShjdHgsIHR5cGUpCiB7CiAgICAgc3dpdGNoIChtX3R5cGUp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJy
YXlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlP
YmplY3QuaAppbmRleCBhZTRkODMyNmQ2YTkxMjM5NWZkN2Q5MTc0MzkyZjgxYzdmM2E0M2EzLi41
YjQ5YzcwOGE0NjI1NGRlNTkwZTFjMDZkY2M5ODYyYTY2NGMzMTQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5oCkBAIC0zNywx
MCArMzcsMTAgQEAgY2xhc3MgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDsKIAogY2xhc3MgV2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdCBmaW5hbCA6IHB1YmxpYyBXZWJHTFZlcnRleEFycmF5T2JqZWN0QmFz
ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJHTFZlcnRleEFycmF5T2JqZWN0PiBjcmVh
dGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSosIFZBT1R5cGUpOworICAgIHN0YXRpYyBSZWY8
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdD4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Um
LCBWQU9UeXBlKTsKICAgICB2aXJ0dWFsIH5XZWJHTFZlcnRleEFycmF5T2JqZWN0KCk7CiBwcml2
YXRlOgotICAgIFdlYkdMVmVydGV4QXJyYXlPYmplY3QoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSosIFZBT1R5cGUpOworICAgIFdlYkdMVmVydGV4QXJyYXlPYmplY3QoV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSYsIFZBT1R5cGUpOwogICAgIGJvb2wgaXNUcmFuc2Zvcm1GZWVkYmFjaygpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoR3JhcGhpY3ND
b250ZXh0M0QqLCBQbGF0Zm9ybTNET2JqZWN0KSBvdmVycmlkZTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZS5j
cHAKaW5kZXggZjM5YzBkZGQyMjc3OWQwNWYxNjBkMTk3OTU2MzE4YTYwMGViOTNjYy4uNjk2NDlj
NjJmNmUxZGJlZjJmOWVkYTYxN2M0MjQyNGRmNzNmMTc1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlLmNwcApA
QCAtMzIsMTMgKzMyLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV2ViR0xWZXJ0ZXhB
cnJheU9iamVjdEJhc2U6OldlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlKFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UqIGN0eCwgVkFPVHlwZSB0eXBlKQorV2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJh
c2U6OldlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Um
IGN0eCwgVkFPVHlwZSB0eXBlKQogICAgIDogV2ViR0xDb250ZXh0T2JqZWN0KGN0eCkKICAgICAs
IG1fdHlwZSh0eXBlKQogICAgICwgbV9oYXNFdmVyQmVlbkJvdW5kKGZhbHNlKQogICAgICwgbV9i
b3VuZEVsZW1lbnRBcnJheUJ1ZmZlcigwKQogewotICAgIG1fdmVydGV4QXR0cmliU3RhdGUucmVz
aXplKGN0eC0+Z2V0TWF4VmVydGV4QXR0cmlicygpKTsKKyAgICBtX3ZlcnRleEF0dHJpYlN0YXRl
LnJlc2l6ZShjdHguZ2V0TWF4VmVydGV4QXR0cmlicygpKTsKIH0KIAogdm9pZCBXZWJHTFZlcnRl
eEFycmF5T2JqZWN0QmFzZTo6c2V0RWxlbWVudEFycmF5QnVmZmVyKFBhc3NSZWZQdHI8V2ViR0xC
dWZmZXI+IGJ1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMVmVydGV4QXJyYXlPYmplY3RCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZS5oCmluZGV4IDYzZTFkZGI5MjJiNzA0MTI4OTlhZWQ3
YmZmNjJkZjM5ZWY0MjI2MzUuLjNmMDdkZGVlYWQxYmY5YzdiN2RmN2IwYzY4OGNjOGJlNzIwNzNj
MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJy
YXlPYmplY3RCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0
ZXhBcnJheU9iamVjdEJhc2UuaApAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRWZXJ0ZXhBdHRyaWJEaXZpc29yKEdDM0R1aW50IGluZGV4LCBHQzNEdWludCBkaXZpc29yKTsK
IAogcHJvdGVjdGVkOgotICAgIFdlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlKFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UqLCBWQU9UeXBlKTsKKyAgICBXZWJHTFZlcnRleEFycmF5T2JqZWN0QmFz
ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiwgVkFPVHlwZSk7CiAgICAgdmlydHVhbCB2b2lk
IGRlbGV0ZU9iamVjdEltcGwoR3JhcGhpY3NDb250ZXh0M0QqLCBQbGF0Zm9ybTNET2JqZWN0KSA9
IDA7CiAgICAgCiAgICAgVkFPVHlwZSBtX3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3BwCmluZGV4IGQxMzU5
NTI1MjU5NGYzMDJmYzFkNDIyYjhiOTdkNzdiMGZiMDIwNjUuLjVmM2I2NTU3YTcwYjVjYjg0MmMw
YzJlYTc3ODE3OGFmYTY0YzAxZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3BwCkBAIC0zNCwyMCArMzQsMjAg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9F
Uz4gV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UqIGN0eCwgVkFPVHlwZSB0eXBlKQorUmVmPFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM+
IFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OmNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJiBjdHgsIFZBT1R5cGUgdHlwZSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJH
TFZlcnRleEFycmF5T2JqZWN0T0VTKGN0eCwgdHlwZSkpOwogfQogCi1XZWJHTFZlcnRleEFycmF5
T2JqZWN0T0VTOjpXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTKFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UqIGN0eCwgVkFPVHlwZSB0eXBlKQorV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6V2Vi
R0xWZXJ0ZXhBcnJheU9iamVjdE9FUyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjdHgsIFZB
T1R5cGUgdHlwZSkKICAgICA6IFdlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlKGN0eCwgdHlwZSkK
IHsKLSAgICBFeHRlbnNpb25zM0QqIGV4dGVuc2lvbnMgPSBjb250ZXh0KCktPmdyYXBoaWNzQ29u
dGV4dDNEKCktPmdldEV4dGVuc2lvbnMoKTsKKyAgICBFeHRlbnNpb25zM0QmIGV4dGVuc2lvbnMg
PSBjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dDNEKCktPmdldEV4dGVuc2lvbnMoKTsKICAgICBz
d2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgVkFPVHlwZURlZmF1bHQ6CiAgICAgICAgIGJyZWFr
OwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHNldE9iamVjdChleHRlbnNpb25zLT5jcmVhdGVWZXJ0
ZXhBcnJheU9FUygpKTsKKyAgICAgICAgc2V0T2JqZWN0KGV4dGVuc2lvbnMuY3JlYXRlVmVydGV4
QXJyYXlPRVMoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KQEAgLTU5LDEyICs1OSwxMiBA
QCBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOjp+V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUygp
CiAKIHZvaWQgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6ZGVsZXRlT2JqZWN0SW1wbChHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dDNkLCBQbGF0Zm9ybTNET2JqZWN0IG9iamVjdCkKIHsKLSAg
ICBFeHRlbnNpb25zM0QqIGV4dGVuc2lvbnMgPSBjb250ZXh0M2QtPmdldEV4dGVuc2lvbnMoKTsK
KyAgICBFeHRlbnNpb25zM0QmIGV4dGVuc2lvbnMgPSBjb250ZXh0M2QtPmdldEV4dGVuc2lvbnMo
KTsKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgVkFPVHlwZURlZmF1bHQ6CiAgICAg
ICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIGV4dGVuc2lvbnMtPmRlbGV0ZVZlcnRl
eEFycmF5T0VTKG9iamVjdCk7CisgICAgICAgIGV4dGVuc2lvbnMuZGVsZXRlVmVydGV4QXJyYXlP
RVMob2JqZWN0KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmgKaW5kZXggOWFi
MTE1NWM0Yzc4N2Y3NjAyNDRhOWIzZDA2MWY0YzVlNTIxNDE4Ny4uZDA4ZDIyM2UzNTcwNjY5NGU5
MWNhZTZhY2RjOGM0YmNhOWYxNjdlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaApAQCAtMzMsMTAgKzMzLDEwIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUyBm
aW5hbCA6IHB1YmxpYyBXZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZSB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTPiBjcmVhdGUoV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSosIFZBT1R5cGUpOworICAgIHN0YXRpYyBSZWY8V2ViR0xWZXJ0ZXhBcnJh
eU9iamVjdE9FUz4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmLCBWQU9UeXBlKTsK
ICAgICB2aXJ0dWFsIH5XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTKCk7CiBwcml2YXRlOgotICAg
IFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSosIFZB
T1R5cGUpOworICAgIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMoV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSYsIFZBT1R5cGUpOwogICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChHcmFwaGljc0Nv
bnRleHQzRCosIFBsYXRmb3JtM0RPYmplY3QpIG92ZXJyaWRlOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKaW5kZXgg
NDEwNjYxNzkxNWQ4OWQ5NjNlYWQ1Y2EyMDY3YzJkMTZkZjBlZDAyNy4uZjhlYTg4YTVkZmFkMDRj
MzhjMzdhYjk4ZTBlNmRhZjUyMDAzZDFmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCkBAIC0xMTg1LDcgKzExODUsNyBA
QCBwdWJsaWM6CiAgICAgLy8gYWxsIG1ldGhvZHMgaXQgY29udGFpbnMgbWF5IG5lY2Vzc2FyaWx5
IGJlIHN1cHBvcnRlZCBvbiB0aGUKICAgICAvLyBjdXJyZW50IGhhcmR3YXJlLiBNdXN0IGNhbGwg
RXh0ZW5zaW9uczNEOjpzdXBwb3J0cygpIHRvCiAgICAgLy8gZGV0ZXJtaW5lIHRoaXMuCi0gICAg
RXh0ZW5zaW9uczNEKiBnZXRFeHRlbnNpb25zKCk7CisgICAgRXh0ZW5zaW9uczNEJiBnZXRFeHRl
bnNpb25zKCk7CiAKICAgICBJbnRTaXplIGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkgY29u
c3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9U
ZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJl
LmNwcAppbmRleCA3N2NmNjg3YzY4ZjFlYjQ2NTMyN2M0ZWE4OTYxMGY5Yjg2N2EyYzY4Li5hYWQx
M2YzNGQ2OWNmMmYxZGEyZGVhODMwNmZjNDVkODFhMDVjZTYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwCkBAIC02Niw3ICs2Niw3IEBA
IHN0YXRpYyB2b2lkIGNvbnZlcnRGb3JtYXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRl
eHR1cmU6OkZvcm1hdCBmb3JtYXQsIHVuCiAgICAgICAgICpnbFR5cGUgPSBHcmFwaGljc0NvbnRl
eHQzRDo6VU5TSUdORURfQllURTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUZXh0dXJlOjpC
R1JBODoKLSAgICAgICAgaWYgKGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdM
X0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIpKSB7CisgICAgICAgIGlmIChjb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIp
KSB7CiAgICAgICAgICAgICAqZ2xGb3JtYXQgPSBFeHRlbnNpb25zM0Q6OkJHUkFfRVhUOwogICAg
ICAgICAgICAgKmdsVHlwZSA9IEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFOwogICAg
ICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAKaW5kZXgg
M2QzMTAyZDNkNjYwYmJmMzE0Yzg1Mzg5YWVmNWE5OTY0Nzk3YjJmZC4uYWU4YmNhN2FlNTFjZTI4
NzE2MzZlMWVhMWJjYTQ2OWUxNmM2ZjBiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RP
cGVuR0wuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlbGVh
c2VTaGFkZXJDb21waWxlcigpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZWFkUGl4ZWxzQW5k
Q29udmVydFRvQkdSQUlmTmVjZXNzYXJ5KGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVp
Z2h0LCB1bnNpZ25lZCBjaGFyKiBwaXhlbHMpCiB7CiAgICAgLy8gTlZJRElBIGRyaXZlcnMgaGF2
ZSBhIGJ1ZyB3aGVyZSBjYWxsaW5nIHJlYWRQaXhlbHMgaW4gQkdSQSBjYW4gcmV0dXJuIHRoZSB3
cm9uZyB2YWx1ZXMgZm9yIHRoZSBhbHBoYSBjaGFubmVsIHdoZW4gdGhlIGFscGhhIGlzIG9mZiBm
b3IgdGhlIGNvbnRleHQuCi0gICAgaWYgKCFtX2F0dHJzLmFscGhhICYmIGdldEV4dGVuc2lvbnMo
KS0+aXNOVklESUEoKSkgeworICAgIGlmICghbV9hdHRycy5hbHBoYSAmJiBnZXRFeHRlbnNpb25z
KCkuaXNOVklESUEoKSkgewogICAgICAgICA6OmdsUmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVp
Z2h0LCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBwaXhlbHMpOwogI2lmIFVTRShBQ0NFTEVS
QVRFKQogICAgICAgICB2SW1hZ2VfQnVmZmVyIHNyYzsKQEAgLTEyMSw5ICsxMjEsOSBAQCBib29s
IEdyYXBoaWNzQ29udGV4dDNEOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogICAg
ICAgICAvLyBXZSBkb24ndCBhbGxvdyB0aGUgbG9naWMgd2hlcmUgc3RlbmNpbCBpcyByZXF1aXJl
ZCBhbmQgZGVwdGggaXMgbm90LgogICAgICAgICAvLyBTZWUgR3JhcGhpY3NDb250ZXh0M0Q6OnZh
bGlkYXRlQXR0cmlidXRlcy4KIAotICAgICAgICBFeHRlbnNpb25zM0QqIGV4dGVuc2lvbnMgPSBn
ZXRFeHRlbnNpb25zKCk7CisgICAgICAgIEV4dGVuc2lvbnMzRCYgZXh0ZW5zaW9ucyA9IGdldEV4
dGVuc2lvbnMoKTsKICAgICAgICAgLy8gVXNlIGEgMjQgYml0IGRlcHRoIGJ1ZmZlciB3aGVyZSB3
ZSBrbm93IHdlIGhhdmUgaXQuCi0gICAgICAgIGlmIChleHRlbnNpb25zLT5zdXBwb3J0cygiR0xf
RVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikpCisgICAgICAgIGlmIChleHRlbnNpb25zLnN1cHBv
cnRzKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKSkKICAgICAgICAgICAgIGludGVybmFs
RGVwdGhTdGVuY2lsRm9ybWF0ID0gR0xfREVQVEgyNF9TVEVOQ0lMOF9FWFQ7CiAgICAgICAgIGVs
c2UKICNpZiBQTEFURk9STShJT1MpCkBAIC0zMDQsMTIgKzMwNCwxMiBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpnZXRJbnRlZ2VydihHQzNEZW51bSBwbmFtZSwgR0MzRGludCogdmFsdWUpCiAj
ZW5kaWYKICAgICBjYXNlIE1BWF9URVhUVVJFX1NJWkU6CiAgICAgICAgIDo6Z2xHZXRJbnRlZ2Vy
dihNQVhfVEVYVFVSRV9TSVpFLCB2YWx1ZSk7Ci0gICAgICAgIGlmIChnZXRFeHRlbnNpb25zKCkt
PnJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpKQorICAgICAgICBpZiAoZ2V0
RXh0ZW5zaW9ucygpLnJlcXVpcmVzUmVzdHJpY3RlZE1heGltdW1UZXh0dXJlU2l6ZSgpKQogICAg
ICAgICAgICAgKnZhbHVlID0gc3RkOjptaW4oNDA5NiwgKnZhbHVlKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBNQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFOgogICAgICAgICA6OmdsR2V0SW50
ZWdlcnYoTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRSwgdmFsdWUpOwotICAgICAgICBpZiAoZ2V0
RXh0ZW5zaW9ucygpLT5yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSkKKyAg
ICAgICAgaWYgKGdldEV4dGVuc2lvbnMoKS5yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVy
ZVNpemUoKSkKICAgICAgICAgICAgICp2YWx1ZSA9IHN0ZDo6bWluKDEwMjQsICp2YWx1ZSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CkBAIC00MDcsMTEgKzQwNywxMSBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpjbGVhckRlcHRoKEdDM0RjbGFtcGYgZGVwdGgpCiAjZW5kaWYKIH0K
IAotRXh0ZW5zaW9uczNEKiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucygpCitFeHRl
bnNpb25zM0QmIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKCkKIHsKICAgICBpZiAo
IW1fZXh0ZW5zaW9ucykKICAgICAgICAgbV9leHRlbnNpb25zID0gc3RkOjptYWtlX3VuaXF1ZTxF
eHRlbnNpb25zM0RPcGVuR0w+KHRoaXMsIGlzR0xFUzJDb21wbGlhbnQoKSk7Ci0gICAgcmV0dXJu
IG1fZXh0ZW5zaW9ucy5nZXQoKTsKKyAgICByZXR1cm4gKm1fZXh0ZW5zaW9uczsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6cmVhZFBpeGVscyhHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0Mz
RHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVt
IHR5cGUsIHZvaWQqIGRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdM
Q29tbW9uLmNwcAppbmRleCA1NWQ1YzY4ZGNlMmEzNmFhMDNhY2E4NzI5ZmVmNGVmN2Q0ODE3NmE0
Li4xODYzNzIxOTZjZWNmMzJiMzljZmJmYjcwNGQ3ZTliMDU0YjM5NGRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RP
cGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKQEAgLTEzOSwyMCArMTM5LDIw
IEBAIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVh
dGVGb3JDdXJyZW50R0xDb250ZXh0KCkKIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmFsaWRh
dGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQog
ewotICAgIEV4dGVuc2lvbnMzRCogZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMoKTsKKyAgICBF
eHRlbnNpb25zM0QmIGV4dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7CiAgICAgaWYgKG1fYXR0
cnMuc3RlbmNpbCkgewotICAgICAgICBpZiAoZXh0ZW5zaW9ucy0+c3VwcG9ydHMocGFja2VkRGVw
dGhTdGVuY2lsRXh0ZW5zaW9uKSkgewotICAgICAgICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5h
YmxlZChwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pOworICAgICAgICBpZiAoZXh0ZW5zaW9u
cy5zdXBwb3J0cyhwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pKSB7CisgICAgICAgICAgICBl
eHRlbnNpb25zLmVuc3VyZUVuYWJsZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKICAg
ICAgICAgICAgIC8vIEZvcmNlIGRlcHRoIGlmIHN0ZW5jaWwgaXMgdHJ1ZS4KICAgICAgICAgICAg
IG1fYXR0cnMuZGVwdGggPSB0cnVlOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG1fYXR0
cnMuc3RlbmNpbCA9IGZhbHNlOwogICAgIH0KICAgICBpZiAobV9hdHRycy5hbnRpYWxpYXMpIHsK
LSAgICAgICAgaWYgKCFleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfQU5HTEVfZnJhbWVidWZmZXJf
bXVsdGlzYW1wbGUiKSB8fCBpc0dMRVMyQ29tcGxpYW50KCkpCisgICAgICAgIGlmICghZXh0ZW5z
aW9ucy5zdXBwb3J0cygiR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiKSB8fCBpc0dM
RVMyQ29tcGxpYW50KCkpCiAgICAgICAgICAgICBtX2F0dHJzLmFudGlhbGlhcyA9IGZhbHNlOwog
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBleHRlbnNpb25zLT5lbnN1cmVFbmFibGVkKCJHTF9B
TkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpOworICAgICAgICAgICAgZXh0ZW5zaW9ucy5l
bnN1cmVFbmFibGVkKCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpOwogICAgIH0K
IH0KIApAQCAtMTg4OSwxNyArMTg4OSwxNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhJ
bWFnZTJERGlyZWN0KEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdDM0RlbnVtIG1vZGUs
IEdDM0RpbnQgZmlyc3QsIEdDM0RzaXplaSBjb3VudCwgR0MzRHNpemVpIHByaW1jb3VudCkKIHsK
LSAgICBnZXRFeHRlbnNpb25zKCktPmRyYXdBcnJheXNJbnN0YW5jZWQobW9kZSwgZmlyc3QsIGNv
dW50LCBwcmltY291bnQpOworICAgIGdldEV4dGVuc2lvbnMoKS5kcmF3QXJyYXlzSW5zdGFuY2Vk
KG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdDM0RlbnVtIG1vZGUsIEdDM0RzaXplaSBjb3Vu
dCwgR0MzRGVudW0gdHlwZSwgR0MzRGludHB0ciBvZmZzZXQsIEdDM0RzaXplaSBwcmltY291bnQp
CiB7Ci0gICAgZ2V0RXh0ZW5zaW9ucygpLT5kcmF3RWxlbWVudHNJbnN0YW5jZWQobW9kZSwgY291
bnQsIHR5cGUsIG9mZnNldCwgcHJpbWNvdW50KTsKKyAgICBnZXRFeHRlbnNpb25zKCkuZHJhd0Vs
ZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNvdW50LCB0eXBlLCBvZmZzZXQsIHByaW1jb3VudCk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYkRpdmlzb3IoR0MzRHVpbnQg
aW5kZXgsIEdDM0R1aW50IGRpdmlzb3IpCiB7Ci0gICAgZ2V0RXh0ZW5zaW9ucygpLT52ZXJ0ZXhB
dHRyaWJEaXZpc29yKGluZGV4LCBkaXZpc29yKTsKKyAgICBnZXRFeHRlbnNpb25zKCkudmVydGV4
QXR0cmliRGl2aXNvcihpbmRleCwgZGl2aXNvcik7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dMVHJhbnNwb3J0U3VyZmFjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HTFRyYW5zcG9y
dFN1cmZhY2UuY3BwCmluZGV4IDY5OTRhZWMyNmVjMTkzNDRmYWZiOGFiYzMzN2EyYWYyZGNjMjM1
OTcuLmY1ZjUyZGMwMjg5MTA1YzcwMzQxNDU1ZjMwZTMwY2FjMTA3OTY5ZmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dMVHJhbnNwb3J0U3Vy
ZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMv
R0xUcmFuc3BvcnRTdXJmYWNlLmNwcApAQCAtMTA1LDggKzEwNSw4IEBAIHZvaWQgR0xUcmFuc3Bv
cnRTdXJmYWNlOjpkZXN0cm95KCkKICAgICAgICAgOjpnbERlbGV0ZUJ1ZmZlcnMoMSwgJm1fdmJv
KTsKIAogICAgIGlmIChtX3ZlcnRleEhhbmRsZSkgewotICAgICAgICBtX2NvbnRleHQzRC0+Z2V0
RXh0ZW5zaW9ucygpLT5iaW5kVmVydGV4QXJyYXlPRVMoMCk7Ci0gICAgICAgIG1fY29udGV4dDNE
LT5nZXRFeHRlbnNpb25zKCktPmRlbGV0ZVZlcnRleEFycmF5T0VTKG1fdmVydGV4SGFuZGxlKTsK
KyAgICAgICAgbV9jb250ZXh0M0QtPmdldEV4dGVuc2lvbnMoKS5iaW5kVmVydGV4QXJyYXlPRVMo
MCk7CisgICAgICAgIG1fY29udGV4dDNELT5nZXRFeHRlbnNpb25zKCkuZGVsZXRlVmVydGV4QXJy
YXlPRVMobV92ZXJ0ZXhIYW5kbGUpOwogICAgIH0gZWxzZSBpZiAobV9zaGFkZXJQcm9ncmFtKQog
ICAgICAgICA6OmdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KG1fc2hhZGVyUHJvZ3JhbS0+dmVy
dGV4TG9jYXRpb24oKSk7CiAKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIEdMVHJhbnNwb3J0U3Vy
ZmFjZTo6aW5pdGlhbGl6ZVNoYWRlclByb2dyYW0oKQogICAgIGlmICghbV9jb250ZXh0M0QpCiAg
ICAgICAgIG1fY29udGV4dDNEID0gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUZvckN1cnJlbnRH
TENvbnRleHQoKTsKIAotICAgIHZlcnRleEFycmF5T2JqZWN0U3VwcG9ydGVkID0gbV9jb250ZXh0
M0QtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0
Iik7CisgICAgdmVydGV4QXJyYXlPYmplY3RTdXBwb3J0ZWQgPSBtX2NvbnRleHQzRC0+Z2V0RXh0
ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCIpOwogCiAgICAg
VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06Ok9wdGlvbnMgb3B0aW9ucyA9IFRleHR1cmVNYXBw
ZXJTaGFkZXJQcm9ncmFtOjpUZXh0dXJlOwogICAgIG1fc2hhZGVyUHJvZ3JhbSA9IFRleHR1cmVN
YXBwZXJTaGFkZXJQcm9ncmFtOjpjcmVhdGUoKm1fY29udGV4dDNELCBvcHRpb25zKTsKQEAgLTE5
NCwxMCArMTk0LDEwIEBAIHZvaWQgR0xUcmFuc3BvcnRTdXJmYWNlOjppbml0aWFsaXplU2hhZGVy
UHJvZ3JhbSgpCiAKICAgICAvLyBDcmVhdGUgYW5kIHNldC11cCB2ZXJ0ZXggYXJyYXkgb2JqZWN0
LgogICAgIGlmICh2ZXJ0ZXhBcnJheU9iamVjdFN1cHBvcnRlZCkgewotICAgICAgICBtX3ZlcnRl
eEhhbmRsZSA9IG1fY29udGV4dDNELT5nZXRFeHRlbnNpb25zKCktPmNyZWF0ZVZlcnRleEFycmF5
T0VTKCk7CisgICAgICAgIG1fdmVydGV4SGFuZGxlID0gbV9jb250ZXh0M0QtPmdldEV4dGVuc2lv
bnMoKS5jcmVhdGVWZXJ0ZXhBcnJheU9FUygpOwogCiAgICAgICAgIGlmIChtX3ZlcnRleEhhbmRs
ZSkgewotICAgICAgICAgICAgbV9jb250ZXh0M0QtPmdldEV4dGVuc2lvbnMoKS0+YmluZFZlcnRl
eEFycmF5T0VTKG1fdmVydGV4SGFuZGxlKTsKKyAgICAgICAgICAgIG1fY29udGV4dDNELT5nZXRF
eHRlbnNpb25zKCkuYmluZFZlcnRleEFycmF5T0VTKG1fdmVydGV4SGFuZGxlKTsKICAgICAgICAg
ICAgIGJpbmRBcnJheUJ1ZmZlcigpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdM
LmNwcAppbmRleCBkZWEzNGE5NjgzYWY0NTA5ZmYyMWU3MTdmYWQ3MjY3ZDk4ZDdiNmRhLi4wZmQ4
Yjg3YjVhYWU5OTJlMmYwNzE2MzhlYjljNGY0NDc4NzZjMTM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdM
LmNwcApAQCAtNzgsNyArNzgsNyBAQCBCaXRtYXBUZXh0dXJlR0w6OkJpdG1hcFRleHR1cmVHTChQ
YXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0M0QsIGNvbnN0CiAgICAgICAgIG1f
aW50ZXJuYWxGb3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQTsKICAgICAgICAgbV9mb3Jt
YXQgPSBHcmFwaGljc0NvbnRleHQzRDo6QkdSQTsKICAgICAgICAgaWYgKG1fY29udGV4dDNELT5p
c0dMRVMyQ29tcGxpYW50KCkpIHsKLSAgICAgICAgICAgIGlmIChtX2NvbnRleHQzRC0+Z2V0RXh0
ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4IikpCisg
ICAgICAgICAgICBpZiAobV9jb250ZXh0M0QtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xf
RVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4IikpCiAgICAgICAgICAgICAgICAgbV9pbnRlcm5h
bEZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpCR1JBOwogICAgICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgIG1fZm9ybWF0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkE7CkBAIC05OSw3
ICs5OSw3IEBAIHN0YXRpYyB2b2lkIHN3aXp6bGVCR1JBVG9SR0JBKHVpbnQzMl90KiBkYXRhLCBj
b25zdCBJbnRSZWN0JiByZWN0LCBpbnQgc3RyaWRlID0KIHN0YXRpYyBib29sIGRyaXZlclN1cHBv
cnRzU3ViSW1hZ2UoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCiB7CiAgICAgaWYgKGNvbnRl
eHQtPmlzR0xFUzJDb21wbGlhbnQoKSkgewotICAgICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c1N1
YkltYWdlID0gY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfRVhUX3VucGFj
a19zdWJpbWFnZSIpOworICAgICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c1N1YkltYWdlID0gY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9FWFRfdW5wYWNrX3N1YmltYWdlIik7
CiAgICAgICAgIHJldHVybiBzdXBwb3J0c1N1YkltYWdlOwogICAgIH0KIAo=
</data>
<flag name="review"
          id="317494"
          type_id="1"
          status="+"
          setter="zalan"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294849</attachid>
            <date>2016-11-15 10:44:48 -0800</date>
            <delta_ts>2016-11-15 11:41:42 -0800</delta_ts>
            <desc>Patch for committing</desc>
            <filename>bug-164749-20161115104443.patch</filename>
            <type>text/plain</type>
            <size>136191</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4NzI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjczOTZiZWM3N2MyYmQw
ZTQ1NzQ0YzcxZTNmYjEzZTJhN2E0NjY5MC4uNjZmODJhNGU3ZTM3YTM5ZTMwNTNlOTgxNTZhMTlh
OTNhNzY4MzcxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwOCBAQAorMjAxNi0xMS0xNCAgTXls
ZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJHTF0g
TWlncmF0ZSBjb25zdHJ1Y3Rpb24gZnVuY3Rpb25zIGZyb20gcG9pbnRlcnMgdG8gcmVmZXJlbmNl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0NzQ5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWmFsYW4gIlotRGF3ZyIgQnVqdGFzLgorCisgICAgICAg
IE1lY2hhbmljYWwgZmluZC9yZXBsYWNlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNl
IHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGh0bWwvY2FudmFzL0FO
R0xFSW5zdGFuY2VkQXJyYXlzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFOR0xFSW5zdGFuY2Vk
QXJyYXlzOjpBTkdMRUluc3RhbmNlZEFycmF5cyk6CisgICAgICAgIChXZWJDb3JlOjpBTkdMRUlu
c3RhbmNlZEFycmF5czo6c3VwcG9ydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFOR0xFSW5zdGFu
Y2VkQXJyYXlzOjpkcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6
QU5HTEVJbnN0YW5jZWRBcnJheXM6OmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFOR0xFSW5zdGFuY2VkQXJyYXlzOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yQU5H
TEUpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmg6CisgICAg
ICAgICogaHRtbC9jYW52YXMvRVhUQmxlbmRNaW5NYXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RVhUQmxlbmRNaW5NYXg6OkVYVEJsZW5kTWluTWF4KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9F
WFRCbGVuZE1pbk1heC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL0VYVEZyYWdEZXB0aC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpFWFRGcmFnRGVwdGg6OkVYVEZyYWdEZXB0aCk6CisgICAgICAg
ICogaHRtbC9jYW52YXMvRVhURnJhZ0RlcHRoLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvRVhU
U2hhZGVyVGV4dHVyZUxPRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFWFRTaGFkZXJUZXh0dXJl
TE9EOjpFWFRTaGFkZXJUZXh0dXJlTE9EKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9FWFRTaGFk
ZXJUZXh0dXJlTE9ELmg6CisgICAgICAgICogaHRtbC9jYW52YXMvRVhUVGV4dHVyZUZpbHRlckFu
aXNvdHJvcGljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ry
b3BpYzo6RVhUVGV4dHVyZUZpbHRlckFuaXNvdHJvcGljKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9FWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9F
WFRzUkdCLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVYVHNSR0I6OkVYVHNSR0IpOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL0VYVHNSR0IuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNFbGVt
ZW50SW5kZXhVaW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9FU0VsZW1lbnRJbmRleFVpbnQ6
Ok9FU0VsZW1lbnRJbmRleFVpbnQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU0VsZW1lbnRJ
bmRleFVpbnQuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNTdGFuZGFyZERlcml2YXRpdmVz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9FU1N0YW5kYXJkRGVyaXZhdGl2ZXM6Ok9FU1N0YW5k
YXJkRGVyaXZhdGl2ZXMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1N0YW5kYXJkRGVyaXZh
dGl2ZXMuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6T0VTVGV4dHVyZUZsb2F0OjpPRVNUZXh0dXJlRmxvYXQpOgorICAgICAg
ICAqIGh0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5oOgorICAgICAgICAqIGh0bWwvY2FudmFz
L09FU1RleHR1cmVGbG9hdExpbmVhci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPRVNUZXh0dXJl
RmxvYXRMaW5lYXI6Ok9FU1RleHR1cmVGbG9hdExpbmVhcik6CisgICAgICAgICogaHRtbC9jYW52
YXMvT0VTVGV4dHVyZUZsb2F0TGluZWFyLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvT0VTVGV4
dHVyZUhhbGZGbG9hdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPRVNUZXh0dXJlSGFsZkZsb2F0
OjpPRVNUZXh0dXJlSGFsZkZsb2F0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNUZXh0dXJl
SGFsZkZsb2F0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdExp
bmVhci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyOjpP
RVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9PRVNUZXh0
dXJlSGFsZkZsb2F0TGluZWFyLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvT0VTVmVydGV4QXJy
YXlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T0VTVmVydGV4QXJyYXlPYmplY3Q6Ok9F
U1ZlcnRleEFycmF5T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9FU1ZlcnRleEFycmF5T2Jq
ZWN0OjpjcmVhdGVWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJDb3JlOjpPRVNWZXJ0ZXhB
cnJheU9iamVjdDo6ZGVsZXRlVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoV2ViQ29yZTo6T0VT
VmVydGV4QXJyYXlPYmplY3Q6OmlzVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoV2ViQ29yZTo6
T0VTVmVydGV4QXJyYXlPYmplY3Q6OmJpbmRWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppbml0aWFsaXplVmVydGV4QXJyYXlPYmplY3RzKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmluaXRpYWxpemVTaGFkZXJF
eHRlbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmRy
YXdCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNy
ZWF0ZVZlcnRleEFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OmlzVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6YmluZFZlcnRleEFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OmdldEV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJp
bmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEJ1ZmZlcjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQnVmZmVyOjpXZWJHTEJ1ZmZlcik6CisgICAgICAg
ICogaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TENvbXByZXNzZWRUZXh0dXJlQVRDLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJl
c3NlZFRleHR1cmVBVEM6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6c3VwcG9ydGVkKToKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmg6CisgICAgICAgICogaHRtbC9j
YW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRD
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6c3VwcG9y
dGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMu
aDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6V2ViR0xDb21w
cmVzc2VkVGV4dHVyZVMzVEMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb21wcmVzc2VkVGV4
dHVyZVMzVEM6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xDb21wcmVz
c2VkVGV4dHVyZVMzVEMuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbnRleHRPYmpl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xDb250ZXh0T2JqZWN0OjpXZWJHTENvbnRl
eHRPYmplY3QpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29udGV4dE9iamVjdC5oOgor
ICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRGVidWdSZW5kZXJlckluZm8uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xEZWJ1Z1JlbmRlcmVySW5mbzo6V2ViR0xEZWJ1Z1JlbmRlcmVySW5m
byk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5oOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMRGVidWdTaGFkZXJzOjpXZWJHTERlYnVnU2hhZGVycyk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTERlYnVnU2hhZGVyczo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZSk6CisgICAg
ICAgICogaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuaDoKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9XZWJHTERlcHRoVGV4dHVyZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTERlcHRo
VGV4dHVyZTo6V2ViR0xEZXB0aFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xEZXB0
aFRleHR1cmU6OnN1cHBvcnRlZCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xEZXB0aFRl
eHR1cmUuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMRHJhd0J1ZmZlcnM6OldlYkdMRHJhd0J1ZmZlcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xEcmF3QnVmZmVyczo6c3VwcG9ydGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMRHJhd0J1ZmZlcnM6OmRyYXdCdWZmZXJzV0VCR0wpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xEcmF3QnVmZmVyczo6c2F0aXNmaWVzV2ViR0xSZXF1aXJlbWVudHMpOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuaDoKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9XZWJHTEV4dGVuc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEV4dGVuc2lv
bjo6V2ViR0xFeHRlbnNpb24pOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9u
Lmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEV4dGVuc2lvbjo6cmVmKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMRXh0ZW5zaW9uOjpkZXJlZik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEV4
dGVuc2lvbjo6Y29udGV4dCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViR0xGcmFtZWJ1ZmZlcjo6V2ViR0xGcmFtZWJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjpkcmF3QnVmZmVyc0lmTmVjZXNzYXJ5KToK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmg6CisgICAgICAgICogaHRt
bC9jYW52YXMvV2ViR0xMb3NlQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExv
c2VDb250ZXh0OjpXZWJHTExvc2VDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTG9z
ZUNvbnRleHQ6Omxvc2VDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTG9zZUNvbnRl
eHQ6OnJlc3RvcmVDb250ZXh0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTExvc2VDb250
ZXh0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xPYmplY3Q6OldlYkdMT2JqZWN0KToKKyAgICAgICAgKiBodG1sL2NhbnZh
cy9XZWJHTE9iamVjdC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFByb2dyYW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFByb2dyYW06OldlYkdMUHJvZ3JhbSk6CisgICAgICAgICogaHRtbC9jYW52YXMv
V2ViR0xQcm9ncmFtLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xRdWVyeS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFF1ZXJ5OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xRdWVyeTo6V2ViR0xRdWVyeSk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xRdWVy
eS5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyYnVmZmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xSZW5kZXJidWZmZXI6OldlYkdMUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmluaXRpYWxpemVWZXJ0ZXhBcnJheU9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKToKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzZXR1cEZsYWdzKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNoZWNrT2JqZWN0VG9CZUJvdW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZUJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGVG
cmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmNyZWF0ZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6Y3JlYXRlUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZVNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkZWxldGVPYmplY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVXZWJHTE9iamVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpmcmFtZWJ1ZmZlclJlbmRl
cmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpm
cmFtZWJ1ZmZlclRleHR1cmUyRCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpnZXRVbmlmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnJlYWRQaXhlbHMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6bG9zZUNvbnRleHRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6Om1heWJlUmVzdG9yZUNvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6c3VwcG9ydHNEcmF3QnVmZmVycyk6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xTYW1wbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMU2FtcGxlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMU2FtcGxlcjo6
V2ViR0xTYW1wbGVyKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFNhbXBsZXIuaDoKKyAg
ICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFNoYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFNoYWRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMU2hhZGVyOjpXZWJH
TFNoYWRlcik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xTaGFkZXIuaDoKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9XZWJHTFNoYXJlZE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFNoYXJlZE9iamVjdDo6V2ViR0xTaGFyZWRPYmplY3QpOgorICAgICAgICAqIGh0bWwvY2Fu
dmFzL1dlYkdMU2hhcmVkT2JqZWN0Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xTeW5j
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMU3luYzo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMU3luYzo6V2ViR0xTeW5jKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJH
TFN5bmMuaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFRleHR1cmUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xUZXh0dXJlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xUZXh0dXJlOjpXZWJHTFRleHR1cmUpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMVGV4
dHVyZS5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMVHJhbnNmb3JtRmVlZGJhY2suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xUcmFuc2Zvcm1GZWVkYmFjazo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMVHJhbnNmb3JtRmVlZGJhY2s6OldlYkdMVHJhbnNmb3JtRmVl
ZGJhY2spOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMVHJhbnNmb3JtRmVlZGJhY2suaDoK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYkdMVmVydGV4QXJyYXlPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFZlcnRleEFycmF5T2JqZWN0OjpXZWJHTFZlcnRleEFycmF5T2JqZWN0KToK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0Lmg6CisgICAgICAg
ICogaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJhc2U6OldlYkdMVmVydGV4QXJyYXlPYmpl
Y3RCYXNlKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0QmFz
ZS5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OldlYkdMVmVydGV4
QXJyYXlPYmplY3RPRVMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xWZXJ0ZXhBcnJheU9iamVj
dE9FUzo6ZGVsZXRlT2JqZWN0SW1wbCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xWZXJ0
ZXhBcnJheU9iamVjdE9FUy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dDNELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydEZvcm1hdCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpyZWFkUGl4ZWxzQW5kQ29udmVydFRvQkdSQUlmTmVj
ZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpyZXNoYXBlRkJP
cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW50ZWdlcnYpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lvbnMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENv
bW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6dmFsaWRhdGVE
ZXB0aFN0ZW5jaWwpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRyYXdB
cnJheXNJbnN0YW5jZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmRy
YXdFbGVtZW50c0luc3RhbmNlZCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RDo6dmVydGV4QXR0cmliRGl2aXNvcik6CisKIDIwMTYtMTEtMTQgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBNb3ZlIFNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyIHRvIFNlY3VyaXR5T3JpZ2luRGF0YQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuY3Bw
CmluZGV4IDQ1OTA1ZTYxMTFjYTc4NzQ1MzI4YTI2ZDllODllZDMzMjQ3OWE2ZDkuLmFlZDdkYTZh
OWQxNzc0YWEyZDI2NTlkYjcxZjkwMWJkNzkwNTRhNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9BTkdMRUluc3RhbmNlZEFycmF5cy5jcHAKQEAgLTM0LDcgKzM0LDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1BTkdMRUluc3RhbmNlZEFycmF5czo6QU5HTEVJ
bnN0YW5jZWRBcnJheXMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29udGV4dCkKK0FOR0xF
SW5zdGFuY2VkQXJyYXlzOjpBTkdMRUluc3RhbmNlZEFycmF5cyhXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKIH0KQEAg
LTQ4LDE0ICs0OCwxMyBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBBTkdMRUluc3Rh
bmNlZEFycmF5czo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIEFOR0xFSW5zdGFuY2VkQXJy
YXlzTmFtZTsKIH0KIAotYm9vbCBBTkdMRUluc3RhbmNlZEFycmF5czo6c3VwcG9ydGVkKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRleHQpCitib29sIEFOR0xFSW5zdGFuY2VkQXJyYXlz
OjpzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKIHsKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICBVTlVTRURfUEFSQU0oY29udGV4dCk7CiAgICAgcmV0dXJuIHRy
dWU7CiAjZWxpZiBQTEFURk9STShHVEspCi0gICAgRXh0ZW5zaW9uczNEKiBleHRlbnNpb25zID0g
Y29udGV4dC0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+Z2V0RXh0ZW5zaW9ucygpOwotICAgIHJldHVy
biBleHRlbnNpb25zLT5zdXBwb3J0cygiR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpOworICAg
IHJldHVybiBjb250ZXh0LmdyYXBoaWNzQ29udGV4dDNEKCktPmdldEV4dGVuc2lvbnMoKS5zdXBw
b3J0cygiR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpOwogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0oY29udGV4dCk7CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjQsMjMgKzYzLDIzIEBAIGJvb2wg
QU5HTEVJbnN0YW5jZWRBcnJheXM6OnN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
KiBjb250ZXh0KQogCiB2b2lkIEFOR0xFSW5zdGFuY2VkQXJyYXlzOjpkcmF3QXJyYXlzSW5zdGFu
Y2VkQU5HTEUoR0MzRGVudW0gbW9kZSwgR0MzRGludCBmaXJzdCwgR0MzRHNpemVpIGNvdW50LCBH
QzNEc2l6ZWkgcHJpbWNvdW50KQogewotICAgIGlmIChtX2NvbnRleHQtPmlzQ29udGV4dExvc3Qo
KSkKKyAgICBpZiAobV9jb250ZXh0LmlzQ29udGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJuOwot
ICAgIG1fY29udGV4dC0+ZHJhd0FycmF5c0luc3RhbmNlZChtb2RlLCBmaXJzdCwgY291bnQsIHBy
aW1jb3VudCk7CisgICAgbV9jb250ZXh0LmRyYXdBcnJheXNJbnN0YW5jZWQobW9kZSwgZmlyc3Qs
IGNvdW50LCBwcmltY291bnQpOwogfQogCiB2b2lkIEFOR0xFSW5zdGFuY2VkQXJyYXlzOjpkcmF3
RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQzNEZW51bSBtb2RlLCBHQzNEc2l6ZWkgY291bnQsIEdD
M0RlbnVtIHR5cGUsIGxvbmcgbG9uZyBvZmZzZXQsIEdDM0RzaXplaSBwcmltY291bnQpCiB7Ci0g
ICAgaWYgKG1fY29udGV4dC0+aXNDb250ZXh0TG9zdCgpKQorICAgIGlmIChtX2NvbnRleHQuaXND
b250ZXh0TG9zdCgpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb250ZXh0LT5kcmF3RWxlbWVu
dHNJbnN0YW5jZWQobW9kZSwgY291bnQsIHR5cGUsIG9mZnNldCwgcHJpbWNvdW50KTsKKyAgICBt
X2NvbnRleHQuZHJhd0VsZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNvdW50LCB0eXBlLCBvZmZzZXQs
IHByaW1jb3VudCk7CiB9CiAKIHZvaWQgQU5HTEVJbnN0YW5jZWRBcnJheXM6OnZlcnRleEF0dHJp
YkRpdmlzb3JBTkdMRShHQzNEdWludCBpbmRleCwgR0MzRHVpbnQgZGl2aXNvcikKIHsKLSAgICBp
ZiAobV9jb250ZXh0LT5pc0NvbnRleHRMb3N0KCkpCisgICAgaWYgKG1fY29udGV4dC5pc0NvbnRl
eHRMb3N0KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2NvbnRleHQtPnZlcnRleEF0dHJpYkRp
dmlzb3IoaW5kZXgsIGRpdmlzb3IpOworICAgIG1fY29udGV4dC52ZXJ0ZXhBdHRyaWJEaXZpc29y
KGluZGV4LCBkaXZpc29yKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0FOR0xFSW5zdGFuY2VkQXJyYXlzLmgKaW5kZXggNzY1
ZWNmZTY4OWY1YWYzYmViMmFhNTE1NzVmMmE3NTQwNzViNWE4OS4uY2QxNmMyM2JkYjljZmRhNDEw
MWJlYWQ2ZTk3ZDQ0ODBjMTIzNjJiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQU5HTEVJbnN0YW5jZWRBcnJheXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9BTkdMRUluc3RhbmNlZEFycmF5cy5oCkBAIC0zMywxMiArMzMsMTIgQEAgY2xhc3MgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTsKIAogY2xhc3MgQU5HTEVJbnN0YW5jZWRBcnJheXMgZmlu
YWwgOiBwdWJsaWMgV2ViR0xFeHRlbnNpb24gewogcHVibGljOgotICAgIGV4cGxpY2l0IEFOR0xF
SW5zdGFuY2VkQXJyYXlzKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBleHBsaWNp
dCBBTkdMRUluc3RhbmNlZEFycmF5cyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAg
dmlydHVhbCB+QU5HTEVJbnN0YW5jZWRBcnJheXMoKTsKIAogICAgIHZpcnR1YWwgRXh0ZW5zaW9u
TmFtZSBnZXROYW1lKCkgY29uc3Q7CiAKLSAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZSopOworICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlJik7CiAKICAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWRBTkdM
RShHQzNEZW51bSBtb2RlLCBHQzNEaW50IGZpcnN0LCBHQzNEc2l6ZWkgY291bnQsIEdDM0RzaXpl
aSBwcmltY291bnQpOwogICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0MzRGVu
dW0gbW9kZSwgR0MzRHNpemVpIGNvdW50LCBHQzNEZW51bSB0eXBlLCBsb25nIGxvbmcgb2Zmc2V0
LCBHQzNEc2l6ZWkgcHJpbWNvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0VYVEJsZW5kTWluTWF4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VY
VEJsZW5kTWluTWF4LmNwcAppbmRleCBmNWVhZGE2NmZhNTJiNWQ2ZDQ5Y2NhMzBkYWQwODRjMzg4
MmFlYzFhLi43NjJhNWQ5ZjY3NWE2MmYwZDc1MTkxMzJiODA4MWI4MGVhNTA4ZTZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRCbGVuZE1pbk1heC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQmxlbmRNaW5NYXguY3BwCkBAIC0zMCw3ICsz
MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRVhUQmxlbmRNaW5NYXg6OkVYVEJsZW5k
TWluTWF4KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRleHQpCitFWFRCbGVuZE1pbk1h
eDo6RVhUQmxlbmRNaW5NYXgoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAg
ICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9FWFRCbGVuZE1pbk1heC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvRVhUQmxlbmRNaW5NYXguaAppbmRleCA5ZWFmMjlmZDYxMTNmMTk3MGZkYWY5OGFhOTMw
MDQ1NGNmMzFhNGY4Li41OTU5Njg0NGVmM2FmZmY0MTMyNDI2YzNjMDFhZmRhMDdiZGJlMTU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRCbGVuZE1pbk1heC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVEJsZW5kTWluTWF4LmgKQEAgLTMxLDcg
KzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBFWFRCbGVuZE1pbk1heCBmaW5h
bCA6IHB1YmxpYyBXZWJHTEV4dGVuc2lvbiB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgRVhUQmxl
bmRNaW5NYXgoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOworICAgIGV4cGxpY2l0IEVYVEJs
ZW5kTWluTWF4KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKICAgICB2aXJ0dWFsIH5FWFRC
bGVuZE1pbk1heCgpOwogCiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRGcmFnRGVwdGgu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhURnJhZ0RlcHRoLmNwcAppbmRleCA4
NjcwNzM2Y2NjMmI4YTU2NjE0NmVlODVmNTkxNWQxYmZmZTQzMDQ5Li42MjYzMDljODNiZDFjNzRk
NTc2ZDU4MDIyYmUxMzQ5NjY0YmVkYTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9FWFRGcmFnRGVwdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0VYVEZyYWdEZXB0aC5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1FWFRGcmFnRGVwdGg6OkVYVEZyYWdEZXB0aChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
KiBjb250ZXh0KQorRVhURnJhZ0RlcHRoOjpFWFRGcmFnRGVwdGgoV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRGcmFnRGVwdGguaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVEZyYWdEZXB0aC5oCmluZGV4IDljZjcwZWIxNmEz
MTk1ODQ4M2EwYzliOWFjNmQ0MWFkN2I1YWRiYTQuLjVlOGE0ZjljMmYzZDY2MTM0MmU0OGM2ZDQ5
NzcwNjhkYzIwZjI5ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VY
VEZyYWdEZXB0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVEZyYWdEZXB0
aC5oCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRVhURnJh
Z0RlcHRoIGZpbmFsIDogcHVibGljIFdlYkdMRXh0ZW5zaW9uIHsKIHB1YmxpYzoKLSAgICBleHBs
aWNpdCBFWFRGcmFnRGVwdGgoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOworICAgIGV4cGxp
Y2l0IEVYVEZyYWdEZXB0aChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVh
bCB+RVhURnJhZ0RlcHRoKCk7CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFNoYWRl
clRleHR1cmVMT0QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUU2hhZGVyVGV4
dHVyZUxPRC5jcHAKaW5kZXggMGRhMzI1ZDAwODA5NmZmZGNlODcxMzRlMTdjMjY3MDhjMzM2MjQ1
Mi4uNDZlNDA2YTQzNDhlZmVkODk5YjIwNzEwMDM3NDNmZGMzZjc2NjQ2OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUU2hhZGVyVGV4dHVyZUxPRC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUU2hhZGVyVGV4dHVyZUxPRC5jcHAKQEAgLTMw
LDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1FWFRTaGFkZXJUZXh0dXJlTE9E
OjpFWFRTaGFkZXJUZXh0dXJlTE9EKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRleHQp
CitFWFRTaGFkZXJUZXh0dXJlTE9EOjpFWFRTaGFkZXJUZXh0dXJlTE9EKFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUU2hhZGVyVGV4dHVy
ZUxPRC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUU2hhZGVyVGV4dHVyZUxPRC5o
CmluZGV4IGUwMDE5MmE3MWFmYTUyOGQyY2MwODgyZmMxMjlkM2FhYTI1NDlmNmUuLjQ3YzE5MmYy
MDU5OTdhY2QzMDBlZTI2YmRlYzA5NTNlY2RmYzE0NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0VYVFNoYWRlclRleHR1cmVMT0QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9FWFRTaGFkZXJUZXh0dXJlTE9ELmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBFWFRTaGFkZXJUZXh0dXJlTE9EIGZpbmFsIDogcHVi
bGljIFdlYkdMRXh0ZW5zaW9uIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBFWFRTaGFkZXJUZXh0
dXJlTE9EKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBleHBsaWNpdCBFWFRTaGFk
ZXJUZXh0dXJlTE9EKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKICAgICB2aXJ0dWFsIH5F
WFRTaGFkZXJUZXh0dXJlTE9EKCk7CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25z
dCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFRl
eHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9F
WFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMuY3BwCmluZGV4IGRhNzRjNGJlMTM4OTYzYTI5ODU2
ZjNmNTkwMGEwNWE5ODdjYTk3M2UuLjBiZDNkZmEyYmU3NTc0OTNiNTQ3ZTdmMjRjOGQwN2U4ZWYz
NjFlYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFRleHR1cmVG
aWx0ZXJBbmlzb3Ryb3BpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhU
VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmNwcApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLUVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYzo6RVhUVGV4dHVyZUZp
bHRlckFuaXNvdHJvcGljKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRleHQpCitFWFRU
ZXh0dXJlRmlsdGVyQW5pc290cm9waWM6OkVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYyhXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29u
dGV4dCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFRl
eHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhU
VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljLmgKaW5kZXggZDFmMjRmNjUxZTc0ZmFhMmIxMGY0NDkx
MWNiYWNjODVkNDkzOGM5Zi4uNDE5N2Q1ZmJiNDA1NGQ4NTU1ZGQwNTU5M2FlNTFlMTc3MDQ3MGJl
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUVGV4dHVyZUZpbHRl
ckFuaXNvdHJvcGljLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUVGV4dHVy
ZUZpbHRlckFuaXNvdHJvcGljLmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBFWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMgZmluYWwgOiBwdWJsaWMgV2Vi
R0xFeHRlbnNpb24gewogcHVibGljOgotICAgIGV4cGxpY2l0IEVYVFRleHR1cmVGaWx0ZXJBbmlz
b3Ryb3BpYyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAgZXhwbGljaXQgRVhUVGV4
dHVyZUZpbHRlckFuaXNvdHJvcGljKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKICAgICB2
aXJ0dWFsIH5FWFRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMoKTsKIAogICAgIEV4dGVuc2lvbk5h
bWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvRVhUc1JHQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRz
UkdCLmNwcAppbmRleCAyNGY1MDg4ODYzNWQ0YzE2OTQ4ZDBmNmIzNmU1MWI3MjJiNzgzZWU1Li5l
NGVkZjUxYzc0NWEwYjg3MDg1NjIwMjM4MThkOTNhM2MwNmY1Yzk3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRzUkdCLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9FWFRzUkdCLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLUVYVHNSR0I6OkVYVHNSR0IoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29u
dGV4dCkKK0VYVHNSR0I6OkVYVHNSR0IoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4
dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRzUkdCLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9FWFRzUkdCLmgKaW5kZXggYzdjMGRhNDE0NDU5YTQ3NGY0YzFjYzBmNzYwMGFkMWMzM2Y1
MTA4ZC4uNGE2OWNiYTc1NTJjOTUyYjU5NWE2YzJjZjJmNzM5ZTUzZTg5MDNiOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUc1JHQi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0VYVHNSR0IuaApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEVYVHNSR0IgZmluYWwgOiBwdWJsaWMgV2ViR0xFeHRlbnNpb24gewog
cHVibGljOgotICAgIGV4cGxpY2l0IEVYVHNSR0IoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSop
OworICAgIGV4cGxpY2l0IEVYVHNSR0IoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAg
IHZpcnR1YWwgfkVYVHNSR0IoKTsKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTRWxl
bWVudEluZGV4VWludC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNFbGVtZW50
SW5kZXhVaW50LmNwcAppbmRleCA2NWI2ODM4ZGViNzg5NTI0MTU0MzFjMTI0ZTQ4MmQzYjYxN2I1
NWRlLi4xMDFjNWYxMGQ3NTAwZjdiZjJmOTkxMWMzNjYzYTEwMDI0NTQ0NTg5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNFbGVtZW50SW5kZXhVaW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNFbGVtZW50SW5kZXhVaW50LmNwcApAQCAt
MzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU9FU0VsZW1lbnRJbmRleFVp
bnQ6Ok9FU0VsZW1lbnRJbmRleFVpbnQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29udGV4
dCkKK09FU0VsZW1lbnRJbmRleFVpbnQ6Ok9FU0VsZW1lbnRJbmRleFVpbnQoV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNFbGVtZW50SW5k
ZXhVaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNFbGVtZW50SW5kZXhVaW50
LmgKaW5kZXggNzk2MGRhNDhmYjRiYTU2M2U2ZWJmMWZlMDQ2MGQxOTA3ODJhYTk2YS4uNDYwMzIx
ZDQ0OGExOGJhNzNjYjE5NTVjMzI0N2U0NTFlMWMxMWY1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvT0VTRWxlbWVudEluZGV4VWludC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL09FU0VsZW1lbnRJbmRleFVpbnQuaApAQCAtMzEsNyArMzEsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE9FU0VsZW1lbnRJbmRleFVpbnQgZmluYWwgOiBw
dWJsaWMgV2ViR0xFeHRlbnNpb24gewogcHVibGljOgotICAgIGV4cGxpY2l0IE9FU0VsZW1lbnRJ
bmRleFVpbnQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOworICAgIGV4cGxpY2l0IE9FU0Vs
ZW1lbnRJbmRleFVpbnQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwg
fk9FU0VsZW1lbnRJbmRleFVpbnQoKTsKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNv
bnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VT
U3RhbmRhcmREZXJpdmF0aXZlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNT
dGFuZGFyZERlcml2YXRpdmVzLmNwcAppbmRleCBlNzU0YWNmNzNjOTg4NmY3YzliYzdjZmNmYTI2
Yzk2MGI3YjUyYzlhLi5kY2JiODE5ZTM0OGU0NDc4ZjZlZTQ1ZmYxMDc0OTAyM2M0MDNkZGYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNTdGFuZGFyZERlcml2YXRp
dmVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNTdGFuZGFyZERlcml2
YXRpdmVzLmNwcApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU9F
U1N0YW5kYXJkRGVyaXZhdGl2ZXM6Ok9FU1N0YW5kYXJkRGVyaXZhdGl2ZXMoV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSogY29udGV4dCkKK09FU1N0YW5kYXJkRGVyaXZhdGl2ZXM6Ok9FU1N0YW5k
YXJkRGVyaXZhdGl2ZXMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6
IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9PRVNTdGFuZGFyZERlcml2YXRpdmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9PRVNTdGFuZGFyZERlcml2YXRpdmVzLmgKaW5kZXggM2EyOTY5ZGY1N2UyMDBm
NTEyNGNkZTMzNTBmNmU0NGE1NzcyMWUzNS4uY2NmYzg4NDA2ODdjM2IxNjc1YmRhMWUyZDExYWY5
N2QyOGYyMzkwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTU3Rh
bmRhcmREZXJpdmF0aXZlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1N0
YW5kYXJkRGVyaXZhdGl2ZXMuaApAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXMgZmluYWwgOiBwdWJsaWMgV2ViR0xFeHRl
bnNpb24gewogcHVibGljOgotICAgIGV4cGxpY2l0IE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXMoV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOworICAgIGV4cGxpY2l0IE9FU1N0YW5kYXJkRGVyaXZh
dGl2ZXMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwgfk9FU1N0YW5k
YXJkRGVyaXZhdGl2ZXMoKTsKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVy
ZUZsb2F0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdC5j
cHAKaW5kZXggYjhmZmVjN2QzY2U5Nzg1YTQwNTJlZDBhMzkwMTQxY2JkZjczNWU5MS4uNjBkMmY3
YjUwYjhiYTAyYzQxNjc5M2UyYjljMzg5OThkMWE1ZThjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotT0VTVGV4dHVyZUZsb2F0OjpPRVNUZXh0dXJlRmxvYXQoV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29udGV4dCkKK09FU1RleHR1cmVGbG9hdDo6T0VTVGV4
dHVyZUZsb2F0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJH
TEV4dGVuc2lvbihjb250ZXh0KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9P
RVNUZXh0dXJlRmxvYXQuaAppbmRleCBhYmE3OWQzMWIyMmE0OWY4M2U5NTM4NGZjMDk2OWRiODY5
ZWZmMzVhLi5lN2MwNzE1ZGQ3MGQ3NmI5MThmNWEyMmFjNjEzYjVkNGVhNWYzNDNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXQuaApAQCAtMzEsNyArMzEs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE9FU1RleHR1cmVGbG9hdCBmaW5hbCA6
IHB1YmxpYyBXZWJHTEV4dGVuc2lvbiB7CiBwdWJsaWM6Ci0gICAgT0VTVGV4dHVyZUZsb2F0KFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBPRVNUZXh0dXJlRmxvYXQoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwgfk9FU1RleHR1cmVGbG9hdCgpOwogCiAg
ICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXRMaW5lYXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0TGluZWFyLmNwcAppbmRleCAy
YTEwYTUwYWRlZmEwNWFkY2I1NDJjY2M0YThjOGZmMjkzMGI0MGVlLi5mY2U5MTc5MDg0ZGQzMmIw
MTVjYzcwOTFlZjkxNzUwNDM2ZTgzYmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9PRVNUZXh0dXJlRmxvYXRMaW5lYXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdExpbmVhci5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1PRVNUZXh0dXJlRmxvYXRMaW5lYXI6Ok9FU1RleHR1cmVG
bG9hdExpbmVhcihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjb250ZXh0KQorT0VTVGV4dHVy
ZUZsb2F0TGluZWFyOjpPRVNUZXh0dXJlRmxvYXRMaW5lYXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSYgY29udGV4dCkKICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXRMaW5lYXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdExpbmVhci5oCmlu
ZGV4IDU3ZGJhZGQ2YzgwODg0YTk2NjNlOTFhMTkwNDEyYTE0MjVhOWRkYjEuLjkzZGQxMzQ2MGNk
M2FjMDVjZTUxYzczYTUwNWQzYzg0YzZhM2YzZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdExpbmVhci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL09FU1RleHR1cmVGbG9hdExpbmVhci5oCkBAIC0zMSw3ICszMSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgT0VTVGV4dHVyZUZsb2F0TGluZWFyIGZpbmFsIDog
cHVibGljIFdlYkdMRXh0ZW5zaW9uIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBPRVNUZXh0dXJl
RmxvYXRMaW5lYXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOworICAgIGV4cGxpY2l0IE9F
U1RleHR1cmVGbG9hdExpbmVhcihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAgdmly
dHVhbCB+T0VTVGV4dHVyZUZsb2F0TGluZWFyKCk7CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5h
bWUoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL09FU1RleHR1cmVIYWxmRmxvYXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
T0VTVGV4dHVyZUhhbGZGbG9hdC5jcHAKaW5kZXggYmRkMTY3YzAzMjdhM2Y4NWFjNzRhY2M3ODY4
YTAyM2UyYzhmZDQwNy4uZjFmNzQ5NmRkMmRjZTBlZjEyNzBhMzRhNDAxOTU1OGJjNmMyMTk1YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9h
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9h
dC5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1PRVNUZXh0
dXJlSGFsZkZsb2F0OjpPRVNUZXh0dXJlSGFsZkZsb2F0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UqIGNvbnRleHQpCitPRVNUZXh0dXJlSGFsZkZsb2F0OjpPRVNUZXh0dXJlSGFsZkZsb2F0KFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihj
b250ZXh0KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VT
VGV4dHVyZUhhbGZGbG9hdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVy
ZUhhbGZGbG9hdC5oCmluZGV4IDcyNWVjNjY1NDRkMDFhYmE5ODliNmQxZTJhMDA3MTgxMTVjZGQ5
MmEuLmIzZjY3NmRkNzNhYTU1MDBmMTg3NWY3MjBmMGM3YTExYWMwMDI0OWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0LmgKQEAgLTMxLDcg
KzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBPRVNUZXh0dXJlSGFsZkZsb2F0
IGZpbmFsIDogcHVibGljIFdlYkdMRXh0ZW5zaW9uIHsKIHB1YmxpYzoKLSAgICBPRVNUZXh0dXJl
SGFsZkZsb2F0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBPRVNUZXh0dXJlSGFs
ZkZsb2F0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKICAgICB2aXJ0dWFsIH5PRVNUZXh0
dXJlSGFsZkZsb2F0KCk7CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVI
YWxmRmxvYXRMaW5lYXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVy
ZUhhbGZGbG9hdExpbmVhci5jcHAKaW5kZXggNDIxMWM4MDYyNzMzM2JiYmU0MWJhOTU1ZGY0MGM5
YTUzNTUxMmRiNC4uMzU5ZTMwMDE2ZTM5NmI5NTY1Njg5MDAzMTYwOTI4OGJhNzY3MjFiNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdExp
bmVhci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZG
bG9hdExpbmVhci5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1PRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyOjpPRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyKFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRleHQpCitPRVNUZXh0dXJlSGFsZkZsb2F0TGlu
ZWFyOjpPRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Um
IGNvbnRleHQpCiAgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhci5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhci5o
CmluZGV4IGVkYzUyOWE5ZmE2NjMxN2U0ODY0YWVmMDc1YjQ3ODU3YjdlZWE5ZWYuLjQ4MTBhMTEy
YmE5ZTkyYTVmY2VmNDA4MzI2MmU5YWRlYmFmYWM3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLmgKQEAgLTMxLDcg
KzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBPRVNUZXh0dXJlSGFsZkZsb2F0
TGluZWFyIGZpbmFsIDogcHVibGljIFdlYkdMRXh0ZW5zaW9uIHsKIHB1YmxpYzoKLSAgICBPRVNU
ZXh0dXJlSGFsZkZsb2F0TGluZWFyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBP
RVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKICAg
ICB2aXJ0dWFsIH5PRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyKCk7CiAKICAgICBFeHRlbnNpb25O
YW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcAppbmRleCA0ZTA2MTY2ZDFkNzJhNTll
ZmMxMzY3MmFjN2M2NmYyOGQ1NzZlYWM4Li5jOGIxMGY3YmZiYzY4MWQ4YWE4NTk1OWEzZjFlMjdk
NjM3OGU2OWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNWZXJ0
ZXhBcnJheU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVmVy
dGV4QXJyYXlPYmplY3QuY3BwCkBAIC0zNSw3ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIE9FU1ZlcnRleEFycmF5T2JqZWN0OjpPRVNWZXJ0ZXhBcnJheU9iamVjdChXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQotICAgIDogV2ViR0xFeHRlbnNpb24oJmNvbnRleHQp
CisgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQogewogfQogCkBAIC00Niw0MyArNDYsNDMg
QEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUgT0VTVmVydGV4QXJyYXlPYmplY3Q6Omdl
dE5hbWUoKSBjb25zdAogCiBSZWZQdHI8V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUz4gT0VTVmVy
dGV4QXJyYXlPYmplY3Q6OmNyZWF0ZVZlcnRleEFycmF5T0VTKCkKIHsKLSAgICBpZiAobV9jb250
ZXh0LT5pc0NvbnRleHRMb3N0KCkpCisgICAgaWYgKG1fY29udGV4dC5pc0NvbnRleHRMb3N0KCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYXV0byBvYmplY3QgPSBXZWJHTFZlcnRl
eEFycmF5T2JqZWN0T0VTOjpjcmVhdGUobV9jb250ZXh0LCBXZWJHTFZlcnRleEFycmF5T2JqZWN0
T0VTOjpWQU9UeXBlVXNlcik7Ci0gICAgbV9jb250ZXh0LT5hZGRDb250ZXh0T2JqZWN0KG9iamVj
dC5wdHIoKSk7CisgICAgbV9jb250ZXh0LmFkZENvbnRleHRPYmplY3Qob2JqZWN0LnB0cigpKTsK
ICAgICByZXR1cm4gV1RGTW92ZShvYmplY3QpOwogfQogCiB2b2lkIE9FU1ZlcnRleEFycmF5T2Jq
ZWN0OjpkZWxldGVWZXJ0ZXhBcnJheU9FUyhXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTKiBhcnJh
eU9iamVjdCkKIHsKLSAgICBpZiAoIWFycmF5T2JqZWN0IHx8IG1fY29udGV4dC0+aXNDb250ZXh0
TG9zdCgpKQorICAgIGlmICghYXJyYXlPYmplY3QgfHwgbV9jb250ZXh0LmlzQ29udGV4dExvc3Qo
KSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGlmICghYXJyYXlPYmplY3QtPmlzRGVmYXVs
dE9iamVjdCgpICYmIGFycmF5T2JqZWN0ID09IHN0YXRpY19jYXN0PFdlYkdMUmVuZGVyaW5nQ29u
dGV4dCo+KG1fY29udGV4dCktPm1fYm91bmRWZXJ0ZXhBcnJheU9iamVjdCkKLSAgICAgICAgc3Rh
dGljX2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0Kj4obV9jb250ZXh0KS0+c2V0Qm91bmRWZXJ0
ZXhBcnJheU9iamVjdCgwKTsKKyAgICBpZiAoIWFycmF5T2JqZWN0LT5pc0RlZmF1bHRPYmplY3Qo
KSAmJiBhcnJheU9iamVjdCA9PSBzdGF0aWNfY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHQqPigm
bV9jb250ZXh0KS0+bV9ib3VuZFZlcnRleEFycmF5T2JqZWN0KQorICAgICAgICBzdGF0aWNfY2Fz
dDxXZWJHTFJlbmRlcmluZ0NvbnRleHQqPigmbV9jb250ZXh0KS0+c2V0Qm91bmRWZXJ0ZXhBcnJh
eU9iamVjdCgwKTsKIAotICAgIGFycmF5T2JqZWN0LT5kZWxldGVPYmplY3QobV9jb250ZXh0LT5n
cmFwaGljc0NvbnRleHQzRCgpKTsKKyAgICBhcnJheU9iamVjdC0+ZGVsZXRlT2JqZWN0KG1fY29u
dGV4dC5ncmFwaGljc0NvbnRleHQzRCgpKTsKIH0KIAogR0MzRGJvb2xlYW4gT0VTVmVydGV4QXJy
YXlPYmplY3Q6OmlzVmVydGV4QXJyYXlPRVMoV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUyogYXJy
YXlPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGFycmF5T2JqZWN0ICYmICFtX2NvbnRleHQtPmlzQ29u
dGV4dExvc3QoKSAmJiBhcnJheU9iamVjdC0+aGFzRXZlckJlZW5Cb3VuZCgpCi0gICAgICAgICYm
IG1fY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+Z2V0RXh0ZW5zaW9ucygpLT5pc1ZlcnRl
eEFycmF5T0VTKGFycmF5T2JqZWN0LT5vYmplY3QoKSk7CisgICAgcmV0dXJuIGFycmF5T2JqZWN0
ICYmICFtX2NvbnRleHQuaXNDb250ZXh0TG9zdCgpICYmIGFycmF5T2JqZWN0LT5oYXNFdmVyQmVl
bkJvdW5kKCkKKyAgICAgICAgJiYgbV9jb250ZXh0LmdyYXBoaWNzQ29udGV4dDNEKCktPmdldEV4
dGVuc2lvbnMoKS5pc1ZlcnRleEFycmF5T0VTKGFycmF5T2JqZWN0LT5vYmplY3QoKSk7CiB9CiAK
IHZvaWQgT0VTVmVydGV4QXJyYXlPYmplY3Q6OmJpbmRWZXJ0ZXhBcnJheU9FUyhXZWJHTFZlcnRl
eEFycmF5T2JqZWN0T0VTKiBhcnJheU9iamVjdCkKIHsKLSAgICBpZiAobV9jb250ZXh0LT5pc0Nv
bnRleHRMb3N0KCkpCisgICAgaWYgKG1fY29udGV4dC5pc0NvbnRleHRMb3N0KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGlmIChhcnJheU9iamVjdCAmJiAoYXJyYXlPYmplY3QtPmlzRGVsZXRl
ZCgpIHx8ICFhcnJheU9iamVjdC0+dmFsaWRhdGUoMCwgY29udGV4dCgpKSkpIHsKLSAgICAgICAg
bV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpLT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04pOworICAgIGlmIChhcnJheU9iamVjdCAmJiAo
YXJyYXlPYmplY3QtPmlzRGVsZXRlZCgpIHx8ICFhcnJheU9iamVjdC0+dmFsaWRhdGUobnVsbHB0
ciwgY29udGV4dCgpKSkpIHsKKyAgICAgICAgbV9jb250ZXh0LmdyYXBoaWNzQ29udGV4dDNEKCkt
PnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTik7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvJiBleHRlbnNpb25zID0gKm1fY29u
dGV4dC0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+Z2V0RXh0ZW5zaW9ucygpOwotICAgIGF1dG8mIGNv
bnRleHQgPSBkb3duY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHQ+KCptX2NvbnRleHQpOworICAg
IGF1dG8mIGV4dGVuc2lvbnMgPSBtX2NvbnRleHQuZ3JhcGhpY3NDb250ZXh0M0QoKS0+Z2V0RXh0
ZW5zaW9ucygpOworICAgIGF1dG8mIGNvbnRleHQgPSBkb3duY2FzdDxXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ+KG1fY29udGV4dCk7CiAgICAgaWYgKGFycmF5T2JqZWN0ICYmICFhcnJheU9iamVjdC0+
aXNEZWZhdWx0T2JqZWN0KCkgJiYgYXJyYXlPYmplY3QtPm9iamVjdCgpKSB7CiAgICAgICAgIGV4
dGVuc2lvbnMuYmluZFZlcnRleEFycmF5T0VTKGFycmF5T2JqZWN0LT5vYmplY3QoKSk7CiAgICAg
ICAgIGFycmF5T2JqZWN0LT5zZXRIYXNFdmVyQmVlbkJvdW5kKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGVl
MTQwYTgzNzY2NmQ5Nzc1YTNlZTc4ODliYjc2MDM5MTY0ODZkYTAuLjQ2YzQ2ZGQ1MmM4ZjdhYmVi
ZDUzYzk1Y2NjNTEzOGY1YzY1Mjc0OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC03Myw3ICs3Myw3IEBAIFdl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQoSFRNTENhbnZhc0Vs
ZW1lbnQmIHBhc3NlZENhbnZhcywKIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppbml0
aWFsaXplVmVydGV4QXJyYXlPYmplY3RzKCkKIHsKLSAgICBtX2RlZmF1bHRWZXJ0ZXhBcnJheU9i
amVjdCA9IFdlYkdMVmVydGV4QXJyYXlPYmplY3Q6OmNyZWF0ZSh0aGlzLCBXZWJHTFZlcnRleEFy
cmF5T2JqZWN0OjpWQU9UeXBlRGVmYXVsdCk7CisgICAgbV9kZWZhdWx0VmVydGV4QXJyYXlPYmpl
Y3QgPSBXZWJHTFZlcnRleEFycmF5T2JqZWN0OjpjcmVhdGUoKnRoaXMsIFdlYkdMVmVydGV4QXJy
YXlPYmplY3Q6OlZBT1R5cGVEZWZhdWx0KTsKICAgICBhZGRDb250ZXh0T2JqZWN0KG1fZGVmYXVs
dFZlcnRleEFycmF5T2JqZWN0LmdldCgpKTsKICAgICBtX2JvdW5kVmVydGV4QXJyYXlPYmplY3Qg
PSBtX2RlZmF1bHRWZXJ0ZXhBcnJheU9iamVjdDsKICAgICBpZiAoIWlzR0xFUzJDb21wbGlhbnQo
KSkKQEAgLTgyLDEwICs4MiwxMCBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmluaXRp
YWxpemVWZXJ0ZXhBcnJheU9iamVjdHMoKQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6
OmluaXRpYWxpemVTaGFkZXJFeHRlbnNpb25zKCkKIHsKLSAgICBtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIik7Ci0g
ICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9kcmF3
X2J1ZmZlcnMiKTsKLSAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxl
ZCgiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpOwotICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLT5lbnN1cmVFbmFibGVkKCJHTF9FWFRfZnJhZ19kZXB0aCIpOworICAgIG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0
aXZlcyIpOworICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdM
X0VYVF9kcmF3X2J1ZmZlcnMiKTsKKyAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1
cmVFbmFibGVkKCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIik7CisgICAgbV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX2ZyYWdfZGVwdGgiKTsKIH0KIAog
aW5saW5lIHN0YXRpYyBPcHRpb25hbDx1bnNpZ25lZD4gYXJyYXlCdWZmZXJWaWV3RWxlbWVudFNp
emUoY29uc3QgQXJyYXlCdWZmZXJWaWV3JiBkYXRhKQpAQCAtNDk0LDcgKzQ5NCw3IEBAIHZvaWQg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZHJhd0J1ZmZlcnMoVmVjdG9yPEdDM0RlbnVtPiBidWZm
ZXJzKQogICAgICAgICB9CiAgICAgICAgIC8vIEJlY2F1c2UgdGhlIGJhY2tidWZmZXIgaXMgc2lt
dWxhdGVkIG9uIGFsbCBjdXJyZW50IFdlYktpdCBwb3J0cywgd2UgbmVlZCB0byBjaGFuZ2UgQkFD
SyB0byBDT0xPUl9BVFRBQ0hNRU5UMC4KICAgICAgICAgR0MzRGVudW0gdmFsdWUgPSAoYnVmc1sw
XSA9PSBHcmFwaGljc0NvbnRleHQzRDo6QkFDSykgPyBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1Jf
QVRUQUNITUVOVDAgOiBHcmFwaGljc0NvbnRleHQzRDo6Tk9ORTsKLSAgICAgICAgZ3JhcGhpY3ND
b250ZXh0M0QoKS0+Z2V0RXh0ZW5zaW9ucygpLT5kcmF3QnVmZmVyc0VYVCgxLCAmdmFsdWUpOwor
ICAgICAgICBncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCkuZHJhd0J1ZmZlcnNF
WFQoMSwgJnZhbHVlKTsKICAgICAgICAgc2V0QmFja0RyYXdCdWZmZXIoYnVmc1swXSk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgaWYgKG4gPiBnZXRNYXhEcmF3QnVmZmVycygpKSB7CkBAIC03OTQs
NyArNzk0LDcgQEAgUmVmUHRyPFdlYkdMVmVydGV4QXJyYXlPYmplY3Q+IFdlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OmNyZWF0ZVZlcnRleEFycmF5KCkKICAgICBpZiAoaXNDb250ZXh0TG9zdCgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKLSAgICBhdXRvIG9iamVjdCA9IFdlYkdMVmVy
dGV4QXJyYXlPYmplY3Q6OmNyZWF0ZSh0aGlzLCBXZWJHTFZlcnRleEFycmF5T2JqZWN0OjpWQU9U
eXBlVXNlcik7CisgICAgYXV0byBvYmplY3QgPSBXZWJHTFZlcnRleEFycmF5T2JqZWN0OjpjcmVh
dGUoKnRoaXMsIFdlYkdMVmVydGV4QXJyYXlPYmplY3Q6OlZBT1R5cGVVc2VyKTsKICAgICBhZGRD
b250ZXh0T2JqZWN0KG9iamVjdC5wdHIoKSk7CiAgICAgcmV0dXJuIFdURk1vdmUob2JqZWN0KTsK
IH0KQEAgLTgxOCw3ICs4MTgsNyBAQCBHQzNEYm9vbGVhbiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
Ojppc1ZlcnRleEFycmF5KFdlYkdMVmVydGV4QXJyYXlPYmplY3QqIGFycmF5TwogICAgIGlmICgh
YXJyYXlPYmplY3QgfHwgaXNDb250ZXh0TG9zdCgpKQogICAgICAgICByZXR1cm4gMDsKICAgICAK
LSAgICBpZiAoIWFycmF5T2JqZWN0LT5oYXNFdmVyQmVlbkJvdW5kKCkgfHwgIWFycmF5T2JqZWN0
LT52YWxpZGF0ZSgwLCB0aGlzKSkKKyAgICBpZiAoIWFycmF5T2JqZWN0LT5oYXNFdmVyQmVlbkJv
dW5kKCkgfHwgIWFycmF5T2JqZWN0LT52YWxpZGF0ZSgwLCAqdGhpcykpCiAgICAgICAgIHJldHVy
biAwOwogICAgIAogICAgIHJldHVybiBtX2NvbnRleHQtPmlzVmVydGV4QXJyYXkoYXJyYXlPYmpl
Y3QtPm9iamVjdCgpKTsKQEAgLTgyOSw3ICs4MjksNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OmJpbmRWZXJ0ZXhBcnJheShXZWJHTFZlcnRleEFycmF5T2JqZWN0KiBhcnJheU9iamVj
dAogICAgIGlmIChpc0NvbnRleHRMb3N0KCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBp
ZiAoYXJyYXlPYmplY3QgJiYgKGFycmF5T2JqZWN0LT5pc0RlbGV0ZWQoKSB8fCAhYXJyYXlPYmpl
Y3QtPnZhbGlkYXRlKDAsIHRoaXMpIHx8ICFtX2NvbnRleHRPYmplY3RzLmNvbnRhaW5zKGFycmF5
T2JqZWN0KSkpIHsKKyAgICBpZiAoYXJyYXlPYmplY3QgJiYgKGFycmF5T2JqZWN0LT5pc0RlbGV0
ZWQoKSB8fCAhYXJyYXlPYmplY3QtPnZhbGlkYXRlKDAsICp0aGlzKSB8fCAhbV9jb250ZXh0T2Jq
ZWN0cy5jb250YWlucyhhcnJheU9iamVjdCkpKSB7CiAgICAgICAgIG1fY29udGV4dC0+c3ludGhl
c2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KQEAgLTg1MCw4NSArODUwLDg1IEBAIFdlYkdMRXh0ZW5zaW9uKiBX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmICgoZXF1YWxJZ25vcmluZ0FTQ0lJQ2Fz
ZShuYW1lLCAiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIikgfHwgZXF1YWxJZ25vcmlu
Z0FTQ0lJQ2FzZShuYW1lLCAiV0VCS0lUX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIp
KQotICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX0VY
VF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpKSB7CisgICAgICAgICYmIG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9w
aWMiKSkgewogICAgICAgICBpZiAoIW1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljKSB7Ci0g
ICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xf
RVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIik7Ci0gICAgICAgICAgICBtX2V4dFRleHR1
cmVGaWx0ZXJBbmlzb3Ryb3BpYyA9IHN0ZDo6bWFrZV91bmlxdWU8RVhUVGV4dHVyZUZpbHRlckFu
aXNvdHJvcGljPih0aGlzKTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LmVuc3VyZUVuYWJsZWQoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpOworICAg
ICAgICAgICAgbV9leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMgPSBzdGQ6Om1ha2VfdW5pcXVl
PEVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYz4oKnRoaXMpOwogICAgICAgICB9CiAgICAgICAg
IHJldHVybiBtX2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5nZXQoKTsKICAgICB9CiAgICAg
aWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIk9FU190ZXh0dXJlX2Zsb2F0IikKLSAg
ICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfdGV4
dHVyZV9mbG9hdCIpKSB7CisgICAgICAgICYmIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1
cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCIpKSB7CiAgICAgICAgIGlmICghbV9vZXNUZXh0
dXJlRmxvYXQpIHsKLSAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1
cmVFbmFibGVkKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCIpOwotICAgICAgICAgICAgbV9vZXNUZXh0
dXJlRmxvYXQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9FU1RleHR1cmVGbG9hdD4odGhpcyk7CisgICAg
ICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9PRVNf
dGV4dHVyZV9mbG9hdCIpOworICAgICAgICAgICAgbV9vZXNUZXh0dXJlRmxvYXQgPSBzdGQ6Om1h
a2VfdW5pcXVlPE9FU1RleHR1cmVGbG9hdD4oKnRoaXMpOwogICAgICAgICB9CiAgICAgICAgIHJl
dHVybiBtX29lc1RleHR1cmVGbG9hdC5nZXQoKTsKICAgICB9CiAgICAgaWYgKGVxdWFsSWdub3Jp
bmdBU0NJSUNhc2UobmFtZSwgIk9FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIpCi0gICAgICAgICYm
IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfZmxv
YXRfbGluZWFyIikpIHsKKyAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3Vw
cG9ydHMoIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIpKSB7CiAgICAgICAgIGlmICghbV9v
ZXNUZXh0dXJlRmxvYXRMaW5lYXIpIHsKLSAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLT5lbnN1cmVFbmFibGVkKCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiKTsKLSAg
ICAgICAgICAgIG1fb2VzVGV4dHVyZUZsb2F0TGluZWFyID0gc3RkOjptYWtlX3VuaXF1ZTxPRVNU
ZXh0dXJlRmxvYXRMaW5lYXI+KHRoaXMpOworICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIik7Cisg
ICAgICAgICAgICBtX29lc1RleHR1cmVGbG9hdExpbmVhciA9IHN0ZDo6bWFrZV91bmlxdWU8T0VT
VGV4dHVyZUZsb2F0TGluZWFyPigqdGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1f
b2VzVGV4dHVyZUZsb2F0TGluZWFyLmdldCgpOwogICAgIH0KICAgICBpZiAoZXF1YWxJZ25vcmlu
Z0FTQ0lJQ2FzZShuYW1lLCAiT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpCi0gICAgICAgICYmIG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfaGFsZl9m
bG9hdCIpKSB7CisgICAgICAgICYmIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRz
KCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IikpIHsKICAgICAgICAgaWYgKCFtX29lc1RleHR1
cmVIYWxmRmxvYXQpIHsKLSAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5l
bnN1cmVFbmFibGVkKCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0Iik7Ci0gICAgICAgICAgICBt
X29lc1RleHR1cmVIYWxmRmxvYXQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9FU1RleHR1cmVIYWxmRmxv
YXQ+KHRoaXMpOworICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJl
RW5hYmxlZCgiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpOworICAgICAgICAgICAgbV9vZXNU
ZXh0dXJlSGFsZkZsb2F0ID0gc3RkOjptYWtlX3VuaXF1ZTxPRVNUZXh0dXJlSGFsZkZsb2F0Pigq
dGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1fb2VzVGV4dHVyZUhhbGZGbG9hdC5n
ZXQoKTsKICAgICB9CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIk9FU190
ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIikKLSAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpKSB7
CisgICAgICAgICYmIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNf
dGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpKSB7CiAgICAgICAgIGlmICghbV9vZXNUZXh0dXJl
SGFsZkZsb2F0TGluZWFyKSB7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS0+ZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKTsKLSAg
ICAgICAgICAgIG1fb2VzVGV4dHVyZUhhbGZGbG9hdExpbmVhciA9IHN0ZDo6bWFrZV91bmlxdWU8
T0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhcj4odGhpcyk7CisgICAgICAgICAgICBtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0
X2xpbmVhciIpOworICAgICAgICAgICAgbV9vZXNUZXh0dXJlSGFsZkZsb2F0TGluZWFyID0gc3Rk
OjptYWtlX3VuaXF1ZTxPRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyPigqdGhpcyk7CiAgICAgICAg
IH0KICAgICAgICAgcmV0dXJuIG1fb2VzVGV4dHVyZUhhbGZGbG9hdExpbmVhci5nZXQoKTsKICAg
ICB9CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIldFQkdMX2xvc2VfY29u
dGV4dCIpKSB7CiAgICAgICAgIGlmICghbV93ZWJnbExvc2VDb250ZXh0KQotICAgICAgICAgICAg
bV93ZWJnbExvc2VDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTExvc2VDb250ZXh0Pih0
aGlzKTsKKyAgICAgICAgICAgIG1fd2ViZ2xMb3NlQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8
V2ViR0xMb3NlQ29udGV4dD4oKnRoaXMpOwogICAgICAgICByZXR1cm4gbV93ZWJnbExvc2VDb250
ZXh0LmdldCgpOwogICAgIH0KICAgICBpZiAoKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwg
IldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfYXRjIikpCi0gICAgICAgICYmIFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVBVEM6OnN1cHBvcnRlZCh0aGlzKSkgeworICAgICAgICAmJiBXZWJH
TENvbXByZXNzZWRUZXh0dXJlQVRDOjpzdXBwb3J0ZWQoKnRoaXMpKSB7CiAgICAgICAgIGlmICgh
bV93ZWJnbENvbXByZXNzZWRUZXh0dXJlQVRDKQotICAgICAgICAgICAgbV93ZWJnbENvbXByZXNz
ZWRUZXh0dXJlQVRDID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRD
Pih0aGlzKTsKKyAgICAgICAgICAgIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZUFUQyA9IHN0ZDo6
bWFrZV91bmlxdWU8V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQz4oKnRoaXMpOwogICAgICAgICBy
ZXR1cm4gbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlQVRDLmdldCgpOwogICAgIH0KICAgICBpZiAo
KGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3Rl
eHR1cmVfcHZydGMiKSkKLSAgICAgICAgJiYgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpz
dXBwb3J0ZWQodGhpcykpIHsKKyAgICAgICAgJiYgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRD
OjpzdXBwb3J0ZWQoKnRoaXMpKSB7CiAgICAgICAgIGlmICghbV93ZWJnbENvbXByZXNzZWRUZXh0
dXJlUFZSVEMpCi0gICAgICAgICAgICBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVQVlJUQyA9IHN0
ZDo6bWFrZV91bmlxdWU8V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDPih0aGlzKTsKKyAgICAg
ICAgICAgIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVBWUlRDID0gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM+KCp0aGlzKTsKICAgICAgICAgcmV0dXJuIG1fd2Vi
Z2xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmdldCgpOwogICAgIH0KICAgICBpZiAoZXF1YWxJZ25v
cmluZ0FTQ0lJQ2FzZShuYW1lLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiKQotICAg
ICAgICAmJiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6c3VwcG9ydGVkKHRoaXMpKSB7Cisg
ICAgICAgICYmIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQoKnRoaXMpKSB7
CiAgICAgICAgIGlmICghbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUzNUQykKLSAgICAgICAgICAg
IG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVMzVEMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVTM1RDPih0aGlzKTsKKyAgICAgICAgICAgIG1fd2ViZ2xDb21wcmVzc2Vk
VGV4dHVyZVMzVEMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RD
PigqdGhpcyk7CiAgICAgICAgIHJldHVybiBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVTM1RDLmdl
dCgpOwogICAgIH0KICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiV0VCR0xf
ZGVwdGhfdGV4dHVyZSIpCi0gICAgICAgICYmIFdlYkdMRGVwdGhUZXh0dXJlOjpzdXBwb3J0ZWQo
Z3JhcGhpY3NDb250ZXh0M0QoKSkpIHsKKyAgICAgICAgJiYgV2ViR0xEZXB0aFRleHR1cmU6OnN1
cHBvcnRlZCgqZ3JhcGhpY3NDb250ZXh0M0QoKSkpIHsKICAgICAgICAgaWYgKCFtX3dlYmdsRGVw
dGhUZXh0dXJlKSB7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5z
dXJlRW5hYmxlZCgiR0xfQ0hST01JVU1fZGVwdGhfdGV4dHVyZSIpOwotICAgICAgICAgICAgbV93
ZWJnbERlcHRoVGV4dHVyZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xEZXB0aFRleHR1cmU+KHRo
aXMpOworICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxl
ZCgiR0xfQ0hST01JVU1fZGVwdGhfdGV4dHVyZSIpOworICAgICAgICAgICAgbV93ZWJnbERlcHRo
VGV4dHVyZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xEZXB0aFRleHR1cmU+KCp0aGlzKTsKICAg
ICAgICAgfQogICAgICAgICByZXR1cm4gbV93ZWJnbERlcHRoVGV4dHVyZS5nZXQoKTsKICAgICB9
CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIldFQkdMX2RlYnVnX3JlbmRl
cmVyX2luZm8iKSkgewogICAgICAgICBpZiAoIW1fd2ViZ2xEZWJ1Z1JlbmRlcmVySW5mbykKLSAg
ICAgICAgICAgIG1fd2ViZ2xEZWJ1Z1JlbmRlcmVySW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
R0xEZWJ1Z1JlbmRlcmVySW5mbz4odGhpcyk7CisgICAgICAgICAgICBtX3dlYmdsRGVidWdSZW5k
ZXJlckluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMRGVidWdSZW5kZXJlckluZm8+KCp0aGlz
KTsKICAgICAgICAgcmV0dXJuIG1fd2ViZ2xEZWJ1Z1JlbmRlcmVySW5mby5nZXQoKTsKICAgICB9
CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIldFQkdMX2RlYnVnX3NoYWRl
cnMiKQotICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdM
X0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSIpKSB7CisgICAgICAgICYmIG1fY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9z
b3VyY2UiKSkgewogICAgICAgICBpZiAoIW1fd2ViZ2xEZWJ1Z1NoYWRlcnMpCi0gICAgICAgICAg
ICBtX3dlYmdsRGVidWdTaGFkZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTERlYnVnU2hhZGVy
cz4odGhpcyk7CisgICAgICAgICAgICBtX3dlYmdsRGVidWdTaGFkZXJzID0gc3RkOjptYWtlX3Vu
aXF1ZTxXZWJHTERlYnVnU2hhZGVycz4oKnRoaXMpOwogICAgICAgICByZXR1cm4gbV93ZWJnbERl
YnVnU2hhZGVycy5nZXQoKTsKICAgICB9CiAKQEAgLTk0MiwyNiArOTQyLDI2IEBAIFZlY3RvcjxT
dHJpbmc+IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKQog
ICAgIGlmIChtX2lzUGVuZGluZ1BvbGljeVJlc29sdXRpb24pCiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9P
RVNfdGV4dHVyZV9mbG9hdCIpKQorICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5z
dXBwb3J0cygiR0xfT0VTX3RleHR1cmVfZmxvYXQiKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgi
T0VTX3RleHR1cmVfZmxvYXQiKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkt
PnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiKSkKKyAgICBpZiAobV9jb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVh
ciIpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiKTsK
LSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfdGV4
dHVyZV9oYWxmX2Zsb2F0IikpCisgICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1
cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IikpCiAgICAgICAgIHJlc3VsdC5hcHBl
bmQoIk9FU190ZXh0dXJlX2hhbGZfZmxvYXQiKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpKQor
ICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3RleHR1
cmVfaGFsZl9mbG9hdF9saW5lYXIiKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiT0VTX3RleHR1
cmVfaGFsZl9mbG9hdF9saW5lYXIiKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25z
KCktPnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKSkKKyAgICBp
ZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2Zp
bHRlcl9hbmlzb3Ryb3BpYyIpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJLSVRfRVhUX3Rl
eHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIik7Ci0gICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVBVEM6OnN1cHBvcnRlZCh0aGlzKSkKKyAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFU
Qzo6c3VwcG9ydGVkKCp0aGlzKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCS0lUX1dFQkdM
X2NvbXByZXNzZWRfdGV4dHVyZV9hdGMiKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVBWUlRDOjpzdXBwb3J0ZWQodGhpcykpCisgICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQ
VlJUQzo6c3VwcG9ydGVkKCp0aGlzKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCS0lUX1dF
QkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIpOwotICAgIGlmIChXZWJHTENvbXByZXNzZWRU
ZXh0dXJlUzNUQzo6c3VwcG9ydGVkKHRoaXMpKQorICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0
dXJlUzNUQzo6c3VwcG9ydGVkKCp0aGlzKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xf
Y29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiKTsKLSAgICBpZiAoV2ViR0xEZXB0aFRleHR1cmU6OnN1
cHBvcnRlZChncmFwaGljc0NvbnRleHQzRCgpKSkKKyAgICBpZiAoV2ViR0xEZXB0aFRleHR1cmU6
OnN1cHBvcnRlZCgqZ3JhcGhpY3NDb250ZXh0M0QoKSkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQo
IldFQkdMX2RlcHRoX3RleHR1cmUiKTsKICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9sb3NlX2Nv
bnRleHQiKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJH
TF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UiKSkKKyAgICBpZiAobV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0FOR0xFX3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJj
ZSIpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9kZWJ1Z19zaGFkZXJzIik7CiAgICAg
cmVzdWx0LmFwcGVuZCgiV0VCR0xfZGVidWdfcmVuZGVyZXJfaW5mbyIpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAKaW5kZXggYWEzYTlkYjRmZjQ4ZWUxYjE2
MmVmOTRhNWJiMzJmZmY2MWJkNTYzMS4uZGYxNzcxMWRiMGI4OWVhZDAzOGY3M2MzMWQyMmZlMWUz
MmE1ZTNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZm
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmNwcApA
QCAtMzQsMTggKzM0LDE4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFdlYkdMQnVm
ZmVyPiBXZWJHTEJ1ZmZlcjo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGN0eCkK
K1JlZjxXZWJHTEJ1ZmZlcj4gV2ViR0xCdWZmZXI6OmNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlJiBjdHgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR0xCdWZmZXIoY3R4
KSk7CiB9CiAKLVdlYkdMQnVmZmVyOjpXZWJHTEJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlKiBjdHgpCitXZWJHTEJ1ZmZlcjo6V2ViR0xCdWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZSYgY3R4KQogICAgIDogV2ViR0xTaGFyZWRPYmplY3QoY3R4KQogICAgICwgbV90YXJnZXQo
MCkKICAgICAsIG1fYnl0ZUxlbmd0aCgwKQogICAgICwgbV9uZXh0QXZhaWxhYmxlQ2FjaGVFbnRy
eSgwKQogewotICAgIHNldE9iamVjdChjdHgtPmdyYXBoaWNzQ29udGV4dDNEKCktPmNyZWF0ZUJ1
ZmZlcigpKTsKKyAgICBzZXRPYmplY3QoY3R4LmdyYXBoaWNzQ29udGV4dDNEKCktPmNyZWF0ZUJ1
ZmZlcigpKTsKICAgICBjbGVhckNhY2hlZE1heEluZGljZXMoKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmgKaW5kZXggYTlmMzM4ODhlNDkwMTAzNjU5NjZlYzMz
NWVhMDcxYmY0YzI4MTYyZi4uMWI0MTRlOGZjOWExMzVhOWNlYzBiY2Q2YzZmMjJlMDljMjc3MWQ0
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5oCkBAIC0zOSw3ICsz
OSw3IEBAIGNsYXNzIFdlYkdMQnVmZmVyIGZpbmFsIDogcHVibGljIFdlYkdMU2hhcmVkT2JqZWN0
IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJHTEJ1ZmZlcigpOwogCi0gICAgc3RhdGljIFJl
ZjxXZWJHTEJ1ZmZlcj4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBz
dGF0aWMgUmVmPFdlYkdMQnVmZmVyPiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYp
OwogCiAgICAgYm9vbCBhc3NvY2lhdGVCdWZmZXJEYXRhKEdDM0RzaXplaXB0ciBzaXplKTsKICAg
ICBib29sIGFzc29jaWF0ZUJ1ZmZlckRhdGEoSlNDOjpBcnJheUJ1ZmZlciopOwpAQCAtNjUsNyAr
NjUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNFdmVyQmVlbkJvdW5kKCkgY29uc3QgeyByZXR1
cm4gb2JqZWN0KCkgJiYgbV90YXJnZXQ7IH0KIAogcHJvdGVjdGVkOgotICAgIFdlYkdMQnVmZmVy
KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBXZWJHTEJ1ZmZlcihXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlJik7CiAKICAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoR3JhcGhpY3ND
b250ZXh0M0QqLCBQbGF0Zm9ybTNET2JqZWN0KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmNwcApp
bmRleCA1MGFkNjU1YWE4NjNlZDkyY2Q2YjcxNWMxMzEzMWRmMjZiZDVkMjllLi5lZWYxOWQzNzUz
NGVmYzlkMGI2MmU1MzNkMDMyN2ZjYmNhM2YyNDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDLmNwcApAQCAtMzMs
MTIgKzMzLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV2ViR0xDb21wcmVzc2VkVGV4
dHVyZUFUQzo6V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQyhXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlKiBjb250ZXh0KQorV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6V2ViR0xDb21wcmVzc2Vk
VGV4dHVyZUFUQyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2Vi
R0xFeHRlbnNpb24oY29udGV4dCkKIHsKLSAgICBjb250ZXh0LT5hZGRDb21wcmVzc2VkVGV4dHVy
ZUZvcm1hdChFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfQVRDX1JHQl9BTUQpOwotICAgIGNvbnRl
eHQtPmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9B
VENfUkdCQV9FWFBMSUNJVF9BTFBIQV9BTUQpOwotICAgIGNvbnRleHQtPmFkZENvbXByZXNzZWRU
ZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9BVENfUkdCQV9JTlRFUlBPTEFU
RURfQUxQSEFfQU1EKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4
dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9BVENfUkdCX0FNRCk7CisgICAgY29udGV4dC5hZGRDb21w
cmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfQVRDX1JHQkFfRVhQ
TElDSVRfQUxQSEFfQU1EKTsKKyAgICBjb250ZXh0LmFkZENvbXByZXNzZWRUZXh0dXJlRm9ybWF0
KEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9BVENfUkdCQV9JTlRFUlBPTEFURURfQUxQSEFfQU1E
KTsKIH0KIAogV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6fldlYkdMQ29tcHJlc3NlZFRleHR1
cmVBVEMoKQpAQCAtNTAsMTAgKzUwLDkgQEAgV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUg
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIFdl
YkdMQ29tcHJlc3NlZFRleHR1cmVBVENOYW1lOwogfQogCi1ib29sIFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVBVEM6OnN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjb250ZXh0KQor
Ym9vbCBXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSYgY29udGV4dCkKIHsKLSAgICBFeHRlbnNpb25zM0QqIGV4dGVuc2lvbnMgPSBj
b250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCk7Ci0gICAgcmV0dXJu
IGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9BTURfY29tcHJlc3NlZF9BVENfdGV4dHVyZSIpOwor
ICAgIHJldHVybiBjb250ZXh0LmdyYXBoaWNzQ29udGV4dDNEKCktPmdldEV4dGVuc2lvbnMoKS5z
dXBwb3J0cygiR0xfQU1EX2NvbXByZXNzZWRfQVRDX3RleHR1cmUiKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZUFUQy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZUFUQy5oCmluZGV4IDIxMDJkOTBkNWU0ZDJlYjIwZDQyZTZhMjEx
ODhkNTZhNzExN2M0ODcuLmU1YjA1NjBkM2QyOWIwNmY1YmQzMGExM2M4YjcxMjUwNTgxZmYxMjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRl
eHR1cmVBVEMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNz
ZWRUZXh0dXJlQVRDLmgKQEAgLTMzLDEwICszMywxMCBAQCBjbGFzcyBXZWJHTFRleHR1cmU7CiAK
IGNsYXNzIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMgZmluYWwgOiBwdWJsaWMgV2ViR0xFeHRl
bnNpb24gewogcHVibGljOgotICAgIGV4cGxpY2l0IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMo
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOworICAgIGV4cGxpY2l0IFdlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVBVEMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwgfldl
YkdMQ29tcHJlc3NlZFRleHR1cmVBVEMoKTsKIAotICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgp
IGNvbnN0IG92ZXJyaWRlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuY3BwCmluZGV4IDhjYWE0YzY4OTg1
NDhmZWQ2MDA3MjRkYmRkZDgzNGIzNjI4YTA1YzMuLjE0YjY2ZjVmYzhlNmYzMDk1MzhhYzBmNmQ4
YTM0YWYwOWIxZDBiMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmNwcApAQCAtMzQsMTMgKzM0LDEzIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpX
ZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29u
dGV4dCkKK1dlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzo6V2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVBWUlRDKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4
dGVuc2lvbihjb250ZXh0KQogewotICAgIGNvbnRleHQtPmFkZENvbXByZXNzZWRUZXh0dXJlRm9y
bWF0KEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRyk7Ci0gICAg
Y29udGV4dC0+YWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uczNEOjpDT01QUkVT
U0VEX1JHQl9QVlJUQ18yQlBQVjFfSU1HKTsKLSAgICBjb250ZXh0LT5hZGRDb21wcmVzc2VkVGV4
dHVyZUZvcm1hdChFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ180QlBQVjFfSU1H
KTsKLSAgICBjb250ZXh0LT5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zM0Q6
OkNPTVBSRVNTRURfUkdCQV9QVlJUQ18yQlBQVjFfSU1HKTsKKyAgICBjb250ZXh0LmFkZENvbXBy
ZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JfUFZSVENfNEJQ
UFYxX0lNRyk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNp
b25zM0Q6OkNPTVBSRVNTRURfUkdCX1BWUlRDXzJCUFBWMV9JTUcpOworICAgIGNvbnRleHQuYWRk
Q29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUFZS
VENfNEJQUFYxX0lNRyk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChF
eHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9QVlJUQ18yQlBQVjFfSU1HKTsKIH0KIAogV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjp+V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDKCkK
QEAgLTUyLDEwICs1Miw5IEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVQVlJUQzo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVQVlJUQ05hbWU7CiB9CiAKLWJvb2wgV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVBWUlRDOjpzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29udGV4dCkKK2Jv
b2wgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSYgY29udGV4dCkKIHsKLSAgICBFeHRlbnNpb25zM0QqIGV4dGVuc2lvbnMgPSBj
b250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCk7Ci0gICAgcmV0dXJu
IGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9JTUdfdGV4dHVyZV9jb21wcmVzc2lvbl9wdnJ0YyIp
OworICAgIHJldHVybiBjb250ZXh0LmdyYXBoaWNzQ29udGV4dDNEKCktPmdldEV4dGVuc2lvbnMo
KS5zdXBwb3J0cygiR0xfSU1HX3RleHR1cmVfY29tcHJlc3Npb25fcHZydGMiKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuaAppbmRleCAwOTBkZDMyOTdlZjkyOGVk
M2ExYzQ5ZTYzYjkwNjY1NDA0NTE2MDlmLi41MTVlNmUxMWZlOWZiM2Q2YjgyOTA3ZThhODc1M2Mx
MGNlYzQ3YWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENv
bXByZXNzZWRUZXh0dXJlUFZSVEMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuaApAQCAtMzEsMTAgKzMxLDEwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDIGZpbmFsIDog
cHVibGljIFdlYkdMRXh0ZW5zaW9uIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlUFZSVEMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOworICAgIGV4cGxp
Y2l0IFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Jik7CiAgICAgdmlydHVhbCB+V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDKCk7CiAKLSAgICBz
dGF0aWMgYm9vbCBzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOworICAgIHN0
YXRpYyBib29sIHN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAgRXh0
ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5j
cHAKaW5kZXggNDJiY2QwODEwYzk0YzViYzU5YzFmN2FhNWVmZDkwZjJiZWFkMjRhYi4uNmU5NGZi
NTM4NjdkOThlZjg1MDQxNjg4OTY4YmIxYWM3MGJjNTRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmNwcApA
QCAtMzQsMTMgKzM0LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV2ViR0xDb21wcmVz
c2VkVGV4dHVyZVMzVEM6OldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDKFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UqIGNvbnRleHQpCitXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6V2ViR0xD
b21wcmVzc2VkVGV4dHVyZVMzVEMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkK
ICAgICA6IFdlYkdMRXh0ZW5zaW9uKGNvbnRleHQpCiB7Ci0gICAgY29udGV4dC0+YWRkQ29tcHJl
c3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5zaW9uczNEOjpDT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFf
RVhUKTsKLSAgICBjb250ZXh0LT5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25z
M0Q6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUKTsKLSAgICBjb250ZXh0LT5hZGRDb21w
cmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNpb25zM0Q6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RY
VDNfRVhUKTsKLSAgICBjb250ZXh0LT5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNp
b25zM0Q6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUKTsKKyAgICBjb250ZXh0LmFkZENv
bXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JfUzNUQ19E
WFQxX0VYVCk7CisgICAgY29udGV4dC5hZGRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdChFeHRlbnNp
b25zM0Q6OkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUKTsKKyAgICBjb250ZXh0LmFkZENv
bXByZXNzZWRUZXh0dXJlRm9ybWF0KEV4dGVuc2lvbnMzRDo6Q09NUFJFU1NFRF9SR0JBX1MzVENf
RFhUM19FWFQpOworICAgIGNvbnRleHQuYWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoRXh0ZW5z
aW9uczNEOjpDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVCk7CiB9CiAKIFdlYkdMQ29tcHJl
c3NlZFRleHR1cmVTM1RDOjp+V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMoKQpAQCAtNTIsMTMg
KzUyLDEzIEBAIFdlYkdMRXh0ZW5zaW9uOjpFeHRlbnNpb25OYW1lIFdlYkdMQ29tcHJlc3NlZFRl
eHR1cmVTM1RDOjpnZXROYW1lKCkgY29uc3QKICAgICByZXR1cm4gV2ViR0xDb21wcmVzc2VkVGV4
dHVyZVMzVENOYW1lOwogfQogCi1ib29sIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBw
b3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29udGV4dCkKK2Jvb2wgV2ViR0xDb21w
cmVzc2VkVGV4dHVyZVMzVEM6OnN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBj
b250ZXh0KQogewotICAgIEV4dGVuc2lvbnMzRCogZXh0ZW5zaW9ucyA9IGNvbnRleHQtPmdyYXBo
aWNzQ29udGV4dDNEKCktPmdldEV4dGVuc2lvbnMoKTsKLSAgICByZXR1cm4gZXh0ZW5zaW9ucy0+
c3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGMiKQotICAgICAgICB8fCAo
ZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEiKQot
ICAgICAgICAgICAgJiYgZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0NIUk9NSVVNX3RleHR1cmVf
Y29tcHJlc3Npb25fZHh0MyIpCi0gICAgICAgICAgICAmJiBleHRlbnNpb25zLT5zdXBwb3J0cygi
R0xfQ0hST01JVU1fdGV4dHVyZV9jb21wcmVzc2lvbl9keHQ1IikpOworICAgIGF1dG8mIGV4dGVu
c2lvbnMgPSBjb250ZXh0LmdyYXBoaWNzQ29udGV4dDNEKCktPmdldEV4dGVuc2lvbnMoKTsKKyAg
ICByZXR1cm4gZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25f
czN0YyIpCisgICAgICAgIHx8IChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9j
b21wcmVzc2lvbl9keHQxIikKKyAgICAgICAgICAgICYmIGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdM
X0NIUk9NSVVNX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MyIpCisgICAgICAgICAgICAmJiBleHRl
bnNpb25zLnN1cHBvcnRzKCJHTF9DSFJPTUlVTV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDUiKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oCmluZGV4IGVkM2Q4Zjk4
N2NhNzkzNGJhODcyZDdmZWI2M2RlNTk2NGMwYmUwMzUuLjI1MWU1OTJmNzFmNDk0NTdjM2FhNzgw
MDJiMGQxZTdiZmEyZjc3OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMuaApAQCAtMzMsMTAgKzMzLDEwIEBAIGNs
YXNzIFdlYkdMVGV4dHVyZTsKIAogY2xhc3MgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMgZmlu
YWwgOiBwdWJsaWMgV2ViR0xFeHRlbnNpb24gewogcHVibGljOgotICAgIGV4cGxpY2l0IFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBl
eHBsaWNpdCBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQyhXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJik7CiAgICAgdmlydHVhbCB+V2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEMoKTsKIAotICAg
IHN0YXRpYyBib29sIHN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAg
c3RhdGljIGJvb2wgc3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKIAogICAg
IEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dE9iamVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRPYmplY3QuY3BwCmluZGV4IDRmZjEw
NzRiMTkyNmJjM2Q0YTFiOTA1ZTJiODFkODdmMGUxMWEyMWIuLjUyM2U2ZTY0MmQ3NDliNjAyMmYz
NzczYTg4ZWRmNGVhMGVjYjliYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMQ29udGV4dE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xDb250ZXh0T2JqZWN0LmNwcApAQCAtMzMsOSArMzMsOSBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVdlYkdMQ29udGV4dE9iamVjdDo6V2ViR0xDb250ZXh0T2JqZWN0KFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRleHQpCitXZWJHTENvbnRleHRPYmplY3Q6OldlYkdM
Q29udGV4dE9iamVjdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDog
V2ViR0xPYmplY3QoY29udGV4dCkKLSAgICAsIG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV9j
b250ZXh0KCZjb250ZXh0KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTENvbnRleHRPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMQ29udGV4dE9iamVjdC5oCmluZGV4IDM4MDg1NWMwMmNlMmZiMmE2MjBhODY5OTY2NTIy
MzE3MmU1NmQ2NjguLmViZTBmYzZjNWY3NjM2MzUyYjM4NmVkMmEwODBhYWE0YTAxMjFkMWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dE9iamVjdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dE9iamVjdC5oCkBA
IC00MCwxNSArNDAsMTUgQEAgcHVibGljOgogCiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSogY29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dDsgfQogCi0gICAgYm9vbCB2YWxp
ZGF0ZShjb25zdCBXZWJHTENvbnRleHRHcm91cCosIGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UqIGNvbnRleHQpIGNvbnN0IG92ZXJyaWRlCisgICAgYm9vbCB2YWxpZGF0ZShjb25zdCBX
ZWJHTENvbnRleHRHcm91cCosIGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRl
eHQpIGNvbnN0IG92ZXJyaWRlCiAgICAgewotICAgICAgICByZXR1cm4gY29udGV4dCA9PSBtX2Nv
bnRleHQ7CisgICAgICAgIHJldHVybiAmY29udGV4dCA9PSBtX2NvbnRleHQ7CiAgICAgfQogCiAg
ICAgdm9pZCBkZXRhY2hDb250ZXh0KCk7CiAKIHByb3RlY3RlZDoKLSAgICBXZWJHTENvbnRleHRP
YmplY3QoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOworICAgIFdlYkdMQ29udGV4dE9iamVj
dChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAKICAgICBib29sIGhhc0dyb3VwT3JDb250
ZXh0KCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTERlYnVnUmVuZGVyZXJJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMRGVidWdSZW5kZXJlckluZm8uY3BwCmluZGV4IDIwM2E1YzM3N2UwMDZj
ODMyOTVlYjExZDAxYzc0MmMxMzQzMzNhNzkuLjlkZjdmYmQ1MWRmNGU1MjJmZjFkNTVlOGE1Y2M3
ZDZmNzQzZDlmZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
RGVidWdSZW5kZXJlckluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMRGVidWdSZW5kZXJlckluZm8uY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotV2ViR0xEZWJ1Z1JlbmRlcmVySW5mbzo6V2ViR0xEZWJ1Z1JlbmRlcmVySW5m
byhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjb250ZXh0KQorV2ViR0xEZWJ1Z1JlbmRlcmVy
SW5mbzo6V2ViR0xEZWJ1Z1JlbmRlcmVySW5mbyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBj
b250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKIHsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdSZW5kZXJlckluZm8uaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdSZW5kZXJlckluZm8uaAppbmRleCAx
NmUzMzNjODk4MTI2Yzk2NmNmMWJlMDc5MGEyZjZlMTc4NzYyN2VhLi4zZTU4MjJkMjA4YjJjMGFh
ZTliOTliZTQ5ZWY1MzJmMmI3MGM3NGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTERlYnVnUmVuZGVyZXJJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5oCkBAIC0zNiw3ICszNiw3IEBAIHB1Ymxp
YzoKICAgICAgICAgVU5NQVNLRURfUkVOREVSRVJfV0VCR0wgPSAweDkyNDYKICAgICB9OwogCi0g
ICAgZXhwbGljaXQgV2ViR0xEZWJ1Z1JlbmRlcmVySW5mbyhXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlKik7CisgICAgZXhwbGljaXQgV2ViR0xEZWJ1Z1JlbmRlcmVySW5mbyhXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVhbCB+V2ViR0xEZWJ1Z1JlbmRlcmVySW5mbygpOwog
CiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5jcHAKaW5kZXggZmEwNzJm
OWIzYmMyMjk1MThjZTM0ZDI3ZWU5NjU1ZWNiYWU4MDhkMi4uZWQ0MjgxMzA5OWY2MDUyYmJlZjhl
ZTkwNmYwOTY5NGUzMWYzMmM3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMRGVidWdTaGFkZXJzLmNwcApAQCAtMzUsNyArMzUsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVdlYkdMRGVidWdTaGFkZXJzOjpXZWJHTERlYnVnU2hhZGVycyhXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlKiBjb250ZXh0KQorV2ViR0xEZWJ1Z1NoYWRlcnM6OldlYkdMRGVidWdT
aGFkZXJzKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQpCiAgICAgOiBXZWJHTEV4
dGVuc2lvbihjb250ZXh0KQogewogfQpAQCAtNTEsMTEgKzUxLDExIEBAIFdlYkdMRXh0ZW5zaW9u
OjpFeHRlbnNpb25OYW1lIFdlYkdMRGVidWdTaGFkZXJzOjpnZXROYW1lKCkgY29uc3QKIAogU3Ry
aW5nIFdlYkdMRGVidWdTaGFkZXJzOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlKFdlYkdMU2hh
ZGVyKiBzaGFkZXIpCiB7Ci0gICAgaWYgKG1fY29udGV4dC0+aXNDb250ZXh0TG9zdCgpKQorICAg
IGlmIChtX2NvbnRleHQuaXNDb250ZXh0TG9zdCgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7
Ci0gICAgaWYgKCFtX2NvbnRleHQtPnZhbGlkYXRlV2ViR0xPYmplY3QoImdldFRyYW5zbGF0ZWRT
aGFkZXJTb3VyY2UiLCBzaGFkZXIpKQorICAgIGlmICghbV9jb250ZXh0LnZhbGlkYXRlV2ViR0xP
YmplY3QoImdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UiLCBzaGFkZXIpKQogICAgICAgICByZXR1
cm4gZW1wdHlTdHJpbmcoKTsKLSAgICByZXR1cm4gbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHQz
RCgpLT5nZXRFeHRlbnNpb25zKCktPmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShzaGFk
ZXItPm9iamVjdCgpKTsKKyAgICByZXR1cm4gbV9jb250ZXh0LmdyYXBoaWNzQ29udGV4dDNEKCkt
PmdldEV4dGVuc2lvbnMoKS5nZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoc2hhZGVyLT5v
YmplY3QoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTERlYnVnU2hhZGVycy5oCmluZGV4IGRlNGJmMDEzNTUwOWYwMTBh
MjYxNzFmYTNlZDA3MzRhYTY0MzBkMWUuLjRiOTlmMWFlYWI3Y2JmZmY0ZmI3YTVmN2Y2N2E0NzQ4
ZTgyMDc2MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVi
dWdTaGFkZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1No
YWRlcnMuaApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBXZWJHTFNoYWRlcjsKIAogY2xhc3MgV2Vi
R0xEZWJ1Z1NoYWRlcnMgZmluYWwgOiBwdWJsaWMgV2ViR0xFeHRlbnNpb24gewogcHVibGljOgot
ICAgIGV4cGxpY2l0IFdlYkdMRGVidWdTaGFkZXJzKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uq
KTsKKyAgICBleHBsaWNpdCBXZWJHTERlYnVnU2hhZGVycyhXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlJik7CiAgICAgdmlydHVhbCB+V2ViR0xEZWJ1Z1NoYWRlcnMoKTsKIAogICAgIEV4dGVuc2lv
bk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuY3BwCmluZGV4IDhmZDkwNzkzNWYzYjExY2QwMDUx
YjAyMDExY2I1ZmIwNTJiMjJlMjMuLmRmMjNkZmVmMmVjNTk1NmQ5NDc4YThiNjk2NjAzMmUzZTI2
ZTBhYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVwdGhU
ZXh0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4
dHVyZS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XZWJH
TERlcHRoVGV4dHVyZTo6V2ViR0xEZXB0aFRleHR1cmUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSogY29udGV4dCkKK1dlYkdMRGVwdGhUZXh0dXJlOjpXZWJHTERlcHRoVGV4dHVyZShXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4
dCkKIHsKIH0KQEAgLTQ3LDEyICs0NywxMiBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFt
ZSBXZWJHTERlcHRoVGV4dHVyZTo6Z2V0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIFdlYkdMRGVw
dGhUZXh0dXJlTmFtZTsKIH0KIAotYm9vbCBXZWJHTERlcHRoVGV4dHVyZTo6c3VwcG9ydGVkKEdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQorYm9vbCBXZWJHTERlcHRoVGV4dHVyZTo6c3VwcG9y
dGVkKEdyYXBoaWNzQ29udGV4dDNEJiBjb250ZXh0KQogewotICAgIEV4dGVuc2lvbnMzRCogZXh0
ZW5zaW9ucyA9IGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKTsKLSAgICByZXR1cm4gZXh0ZW5zaW9u
cy0+c3VwcG9ydHMoIkdMX0NIUk9NSVVNX2RlcHRoX3RleHR1cmUiKQotICAgICAgICB8fCBleHRl
bnNpb25zLT5zdXBwb3J0cygiR0xfT0VTX2RlcHRoX3RleHR1cmUiKQotICAgICAgICB8fCBleHRl
bnNpb25zLT5zdXBwb3J0cygiR0xfQVJCX2RlcHRoX3RleHR1cmUiKTsKKyAgICBFeHRlbnNpb25z
M0QmIGV4dGVuc2lvbnMgPSBjb250ZXh0LmdldEV4dGVuc2lvbnMoKTsKKyAgICByZXR1cm4gZXh0
ZW5zaW9ucy5zdXBwb3J0cygiR0xfQ0hST01JVU1fZGVwdGhfdGV4dHVyZSIpCisgICAgICAgIHx8
IGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX09FU19kZXB0aF90ZXh0dXJlIikKKyAgICAgICAgfHwg
ZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfQVJCX2RlcHRoX3RleHR1cmUiKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xEZXB0aFRleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVw
dGhUZXh0dXJlLmgKaW5kZXggNzFmNTFhYTY2MTlkYTZlZGQzY2FlNTk4M2RiOTU0Y2IxNDhlYTI2
Mi4uMTZiM2I2MGI0ZjI3OThmYTY2ZDJiNWE4ODFkODEzZDU0MGJkMWUwMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5oCkBAIC0zMSwxMCArMzEs
MTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXZWJHTERlcHRoVGV4dHVyZSBmaW5h
bCA6IHB1YmxpYyBXZWJHTEV4dGVuc2lvbiB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgV2ViR0xE
ZXB0aFRleHR1cmUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOworICAgIGV4cGxpY2l0IFdl
YkdMRGVwdGhUZXh0dXJlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKICAgICB2aXJ0dWFs
IH5XZWJHTERlcHRoVGV4dHVyZSgpOwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKEdyYXBo
aWNzQ29udGV4dDNEKik7CisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKEdyYXBoaWNzQ29udGV4
dDNEJik7CiAKICAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwCmlu
ZGV4IDdiYzcyYTZlNTk2MzIxNTFkMmFjNDRhNThlOGU3NWY3MDk2NTU1MzguLmZjMzAyYmFkOGI0
Mzg4MzUxN2VhYWNkODU3ZGIzNTFmYTIwZGJhYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotV2ViR0xEcmF3QnVmZmVyczo6V2ViR0xEcmF3QnVmZmVycyhXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjb250ZXh0KQorV2ViR0xEcmF3QnVmZmVyczo6V2ViR0xE
cmF3QnVmZmVycyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2Vi
R0xFeHRlbnNpb24oY29udGV4dCkKIHsKIH0KQEAgLTQ2LDUxICs0Niw1MCBAQCBXZWJHTEV4dGVu
c2lvbjo6RXh0ZW5zaW9uTmFtZSBXZWJHTERyYXdCdWZmZXJzOjpnZXROYW1lKCkgY29uc3QKICAg
ICByZXR1cm4gV2ViR0xFeHRlbnNpb246OldlYkdMRHJhd0J1ZmZlcnNOYW1lOwogfQogCi1ib29s
IFdlYkdMRHJhd0J1ZmZlcnM6OnN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBj
b250ZXh0KQorYm9vbCBXZWJHTERyYXdCdWZmZXJzOjpzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSYgY29udGV4dCkKIHsKLSAgICBFeHRlbnNpb25zM0QqIGV4dGVuc2lvbnMgPSBj
b250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCk7Ci0gICAgcmV0dXJu
IGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9FWFRfZHJhd19idWZmZXJzIikKKyAgICByZXR1cm4g
Y29udGV4dC5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdM
X0VYVF9kcmF3X2J1ZmZlcnMiKQogICAgICAgICAmJiBzYXRpc2ZpZXNXZWJHTFJlcXVpcmVtZW50
cyhjb250ZXh0KTsKIH0KIAogdm9pZCBXZWJHTERyYXdCdWZmZXJzOjpkcmF3QnVmZmVyc1dFQkdM
KGNvbnN0IFZlY3RvcjxHQzNEZW51bT4mIGJ1ZmZlcnMpCiB7Ci0gICAgaWYgKG1fY29udGV4dC0+
aXNDb250ZXh0TG9zdCgpKQorICAgIGlmIChtX2NvbnRleHQuaXNDb250ZXh0TG9zdCgpKQogICAg
ICAgICByZXR1cm47CiAgICAgR0MzRHNpemVpIG4gPSBidWZmZXJzLnNpemUoKTsKICAgICBjb25z
dCBHQzNEZW51bSogYnVmcyA9IGJ1ZmZlcnMuZGF0YSgpOwotICAgIGlmICghbV9jb250ZXh0LT5t
X2ZyYW1lYnVmZmVyQmluZGluZykgeworICAgIGlmICghbV9jb250ZXh0Lm1fZnJhbWVidWZmZXJC
aW5kaW5nKSB7CiAgICAgICAgIGlmIChuICE9IDEpIHsKLSAgICAgICAgICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUsICJkcmF3
QnVmZmVyc1dFQkdMIiwgIm1vcmUgdGhhbiBvbmUgYnVmZmVyIik7CisgICAgICAgICAgICBtX2Nv
bnRleHQuc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUs
ICJkcmF3QnVmZmVyc1dFQkdMIiwgIm1vcmUgdGhhbiBvbmUgYnVmZmVyIik7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKGJ1ZnNbMF0gIT0gR3JhcGhpY3NDb250
ZXh0M0Q6OkJBQ0sgJiYgYnVmc1swXSAhPSBHcmFwaGljc0NvbnRleHQzRDo6Tk9ORSkgewotICAg
ICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6
SU5WQUxJRF9PUEVSQVRJT04sICJkcmF3QnVmZmVyc1dFQkdMIiwgIkJBQ0sgb3IgTk9ORSIpOwor
ICAgICAgICAgICAgbV9jb250ZXh0LnN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNE
OjpJTlZBTElEX09QRVJBVElPTiwgImRyYXdCdWZmZXJzV0VCR0wiLCAiQkFDSyBvciBOT05FIik7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgLy8gQmVjYXVzZSB0aGUg
YmFja2J1ZmZlciBpcyBzaW11bGF0ZWQgb24gYWxsIGN1cnJlbnQgV2ViS2l0IHBvcnRzLCB3ZSBu
ZWVkIHRvIGNoYW5nZSBCQUNLIHRvIENPTE9SX0FUVEFDSE1FTlQwLgogICAgICAgICBHQzNEZW51
bSB2YWx1ZSA9IChidWZzWzBdID09IEdyYXBoaWNzQ29udGV4dDNEOjpCQUNLKSA/IEdyYXBoaWNz
Q29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCA6IEdyYXBoaWNzQ29udGV4dDNEOjpOT05FOwot
ICAgICAgICBtX2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dDNEKCktPmdldEV4dGVuc2lvbnMoKS0+
ZHJhd0J1ZmZlcnNFWFQoMSwgJnZhbHVlKTsKLSAgICAgICAgbV9jb250ZXh0LT5zZXRCYWNrRHJh
d0J1ZmZlcihidWZzWzBdKTsKKyAgICAgICAgbV9jb250ZXh0LmdyYXBoaWNzQ29udGV4dDNEKCkt
PmdldEV4dGVuc2lvbnMoKS5kcmF3QnVmZmVyc0VYVCgxLCAmdmFsdWUpOworICAgICAgICBtX2Nv
bnRleHQuc2V0QmFja0RyYXdCdWZmZXIoYnVmc1swXSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAg
aWYgKG4gPiBtX2NvbnRleHQtPmdldE1heERyYXdCdWZmZXJzKCkpIHsKLSAgICAgICAgICAgIG1f
Y29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFM
VUUsICJkcmF3QnVmZmVyc1dFQkdMIiwgIm1vcmUgdGhhbiBtYXggZHJhdyBidWZmZXJzIik7Cisg
ICAgICAgIGlmIChuID4gbV9jb250ZXh0LmdldE1heERyYXdCdWZmZXJzKCkpIHsKKyAgICAgICAg
ICAgIG1fY29udGV4dC5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJ
RF9WQUxVRSwgImRyYXdCdWZmZXJzV0VCR0wiLCAibW9yZSB0aGFuIG1heCBkcmF3IGJ1ZmZlcnMi
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBmb3IgKEdDM0RzaXpl
aSBpID0gMDsgaSA8IG47ICsraSkgewogICAgICAgICAgICAgaWYgKGJ1ZnNbaV0gIT0gR3JhcGhp
Y3NDb250ZXh0M0Q6Ok5PTkUgJiYgYnVmc1tpXSAhPSBzdGF0aWNfY2FzdDxHQzNEZW51bT4oRXh0
ZW5zaW9uczNEOjpDT0xPUl9BVFRBQ0hNRU5UMF9FWFQgKyBpKSkgewotICAgICAgICAgICAgICAg
IG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURf
T1BFUkFUSU9OLCAiZHJhd0J1ZmZlcnNXRUJHTCIsICJDT0xPUl9BVFRBQ0hNRU5UaV9FWFQgb3Ig
Tk9ORSIpOworICAgICAgICAgICAgICAgIG1fY29udGV4dC5zeW50aGVzaXplR0xFcnJvcihHcmFw
aGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04sICJkcmF3QnVmZmVyc1dFQkdMIiwgIkNP
TE9SX0FUVEFDSE1FTlRpX0VYVCBvciBOT05FIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIG1fY29udGV4dC0+bV9mcmFtZWJ1ZmZl
ckJpbmRpbmctPmRyYXdCdWZmZXJzKGJ1ZmZlcnMpOworICAgICAgICBtX2NvbnRleHQubV9mcmFt
ZWJ1ZmZlckJpbmRpbmctPmRyYXdCdWZmZXJzKGJ1ZmZlcnMpOwogICAgIH0KIH0KIAogLy8gc3Rh
dGljCi1ib29sIFdlYkdMRHJhd0J1ZmZlcnM6OnNhdGlzZmllc1dlYkdMUmVxdWlyZW1lbnRzKFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIHdlYmdsQ29udGV4dCkKK2Jvb2wgV2ViR0xEcmF3QnVm
ZmVyczo6c2F0aXNmaWVzV2ViR0xSZXF1aXJlbWVudHMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSYgd2ViZ2xDb250ZXh0KQogewotICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0ID0gd2Vi
Z2xDb250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpOworICAgIEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0ID0gd2ViZ2xDb250ZXh0LmdyYXBoaWNzQ29udGV4dDNEKCk7CiAKICAgICAvLyBUaGlz
IGlzIGNhbGxlZCBhZnRlciB3ZSBtYWtlIHN1cmUgR0xfRVhUX2RyYXdfYnVmZmVycyBpcyBzdXBw
b3J0ZWQuCiAgICAgR0MzRGludCBtYXhEcmF3QnVmZmVycyA9IDA7CkBAIC0xMDQsMTEgKzEwMywx
MSBAQCBib29sIFdlYkdMRHJhd0J1ZmZlcnM6OnNhdGlzZmllc1dlYkdMUmVxdWlyZW1lbnRzKFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIHdlYgogICAgIGNvbnRleHQtPmJpbmRGcmFtZWJ1ZmZl
cihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIGZibyk7CiAKICAgICBjb25zdCB1bnNp
Z25lZCBjaGFyIGJ1ZmZlcls0XSA9IHsgMCwgMCwgMCwgMCB9OyAvLyB0ZXh0dXJlcyBhcmUgcmVx
dWlyZWQgdG8gYmUgaW5pdGlhbGl6ZWQgZm9yIG90aGVyIHBvcnRzLgotICAgIGJvb2wgc3VwcG9y
dHNEZXB0aCA9IChjb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9DSFJPTUlV
TV9kZXB0aF90ZXh0dXJlIikKLSAgICAgICAgfHwgY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5z
dXBwb3J0cygiR0xfT0VTX2RlcHRoX3RleHR1cmUiKQotICAgICAgICB8fCBjb250ZXh0LT5nZXRF
eHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9BUkJfZGVwdGhfdGV4dHVyZSIpKTsKLSAgICBib29s
IHN1cHBvcnRzRGVwdGhTdGVuY2lsID0gKGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9y
dHMoIkdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCIpCi0gICAgICAgIHx8IGNvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpKTsK
KyAgICBib29sIHN1cHBvcnRzRGVwdGggPSAoY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBv
cnRzKCJHTF9DSFJPTUlVTV9kZXB0aF90ZXh0dXJlIikKKyAgICAgICAgfHwgY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfZGVwdGhfdGV4dHVyZSIpCisgICAgICAgIHx8
IGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfQVJCX2RlcHRoX3RleHR1cmUi
KSk7CisgICAgYm9vbCBzdXBwb3J0c0RlcHRoU3RlbmNpbCA9IChjb250ZXh0LT5nZXRFeHRlbnNp
b25zKCkuc3VwcG9ydHMoIkdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCIpCisgICAgICAgIHx8
IGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3BhY2tlZF9kZXB0aF9z
dGVuY2lsIikpOwogICAgIFBsYXRmb3JtM0RPYmplY3QgZGVwdGhTdGVuY2lsID0gMDsKICAgICBp
ZiAoc3VwcG9ydHNEZXB0aFN0ZW5jaWwpIHsKICAgICAgICAgZGVwdGhTdGVuY2lsID0gY29udGV4
dC0+Y3JlYXRlVGV4dHVyZSgpOwpAQCAtMTU1LDkgKzE1NCw5IEBAIGJvb2wgV2ViR0xEcmF3QnVm
ZmVyczo6c2F0aXNmaWVzV2ViR0xSZXF1aXJlbWVudHMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSogd2ViCiAgICAgICAgIH0KICAgICB9CiAKLSAgICB3ZWJnbENvbnRleHQtPnJlc3RvcmVDdXJy
ZW50RnJhbWVidWZmZXIoKTsKKyAgICB3ZWJnbENvbnRleHQucmVzdG9yZUN1cnJlbnRGcmFtZWJ1
ZmZlcigpOwogICAgIGNvbnRleHQtPmRlbGV0ZUZyYW1lYnVmZmVyKGZibyk7Ci0gICAgd2ViZ2xD
b250ZXh0LT5yZXN0b3JlQ3VycmVudFRleHR1cmUyRCgpOworICAgIHdlYmdsQ29udGV4dC5yZXN0
b3JlQ3VycmVudFRleHR1cmUyRCgpOwogICAgIGlmIChzdXBwb3J0c0RlcHRoKQogICAgICAgICBj
b250ZXh0LT5kZWxldGVUZXh0dXJlKGRlcHRoKTsKICAgICBpZiAoc3VwcG9ydHNEZXB0aFN0ZW5j
aWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZm
ZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmgKaW5k
ZXggNGIzZGU3MDVlZDMzODdkOGEwY2U5M2RiZWQwNTMzOTQzMjVjYjQ4Ny4uZjY5ZGY5ZjYzMTY1
YTFhM2NlZTMyZWIxOWM1Y2NiYzVmODgwNTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuaApAQCAtMzEsMTcgKzMxLDE3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgV2ViR0xEcmF3QnVmZmVycyBmaW5hbCA6IHB1YmxpYyBXZWJHTEV4
dGVuc2lvbiB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgV2ViR0xEcmF3QnVmZmVycyhXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAgZXhwbGljaXQgV2ViR0xEcmF3QnVmZmVycyhXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAgICAgdmlydHVhbCB+V2ViR0xEcmF3QnVmZmVycygp
OwogCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uq
KTsKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYp
OwogCiAgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2
b2lkIGRyYXdCdWZmZXJzV0VCR0woY29uc3QgVmVjdG9yPEdDM0RlbnVtPiYgYnVmZmVycyk7CiAK
IHByaXZhdGU6Ci0gICAgc3RhdGljIGJvb2wgc2F0aXNmaWVzV2ViR0xSZXF1aXJlbWVudHMoV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOworICAgIHN0YXRpYyBib29sIHNhdGlzZmllc1dlYkdM
UmVxdWlyZW1lbnRzKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMRXh0ZW5zaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5z
aW9uLmNwcAppbmRleCAwOWE2Mjg4MDFjMDI3MmEwOTI3NmFkMDhhMzU3N2NjMDg0N2NmYmM0Li5j
OWYwYTQyNTFjNzBlMDIzNThkZjRkMjQxYzhjYmI0NzI0Mzc3OTBkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uY3BwCkBAIC0zMSw3ICszMSw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotV2ViR0xFeHRlbnNpb246OldlYkdMRXh0ZW5zaW9uKFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRleHQpCitXZWJHTEV4dGVuc2lvbjo6V2ViR0xF
eHRlbnNpb24oV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKICAgICA6IG1fY29u
dGV4dChjb250ZXh0KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0
ZW5zaW9uLmgKaW5kZXggZjQ5MDc1Y2UyNDA2ZTM1NTIxNjg3OWY3YmFjNTBjODE4NGEzNzNhMC4u
N2Y3MDliNDQ1ODAzN2FlYzcxZTcyYTRkNzI0ODMzZTkxOWU4M2RmYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5oCkBAIC01NywxNiArNTcsMTYgQEAgcHVi
bGljOgogICAgICAgICBBTkdMRUluc3RhbmNlZEFycmF5c05hbWUsCiAgICAgfTsKIAotICAgIHZv
aWQgcmVmKCkgeyBtX2NvbnRleHQtPnJlZigpOyB9Ci0gICAgdm9pZCBkZXJlZigpIHsgbV9jb250
ZXh0LT5kZXJlZigpOyB9Ci0gICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29udGV4dCgp
IHsgcmV0dXJuIG1fY29udGV4dDsgfQorICAgIHZvaWQgcmVmKCkgeyBtX2NvbnRleHQucmVmKCk7
IH0KKyAgICB2b2lkIGRlcmVmKCkgeyBtX2NvbnRleHQuZGVyZWYoKTsgfQorICAgIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQoKSB7IHJldHVybiBtX2NvbnRleHQ7IH0KIAogICAg
IHZpcnR1YWwgfldlYkdMRXh0ZW5zaW9uKCk7CiAgICAgdmlydHVhbCBFeHRlbnNpb25OYW1lIGdl
dE5hbWUoKSBjb25zdCA9IDA7CiAKIHByb3RlY3RlZDoKLSAgICBXZWJHTEV4dGVuc2lvbihXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlKik7Ci0gICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSog
bV9jb250ZXh0OworICAgIFdlYkdMRXh0ZW5zaW9uKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Um
KTsKKyAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBtX2NvbnRleHQ7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTEZyYW1lYnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
RnJhbWVidWZmZXIuY3BwCmluZGV4IDk2MWZiYWU4MWJmZDRiYmU2MTQxY2M1NGYxNWJjNjg3M2Vj
MGM4ODUuLjJiYTQxYjk2Yzk0NzgzNTQzNjkyOGM2MmU1MDdmNGE4ZTUzMGY4ZGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwCkBAIC0yNjks
MTYgKzI2OSwxNiBAQCBXZWJHTEZyYW1lYnVmZmVyOjpXZWJHTEF0dGFjaG1lbnQ6On5XZWJHTEF0
dGFjaG1lbnQoKQogewogfQogCi1SZWY8V2ViR0xGcmFtZWJ1ZmZlcj4gV2ViR0xGcmFtZWJ1ZmZl
cjo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGN0eCkKK1JlZjxXZWJHTEZyYW1l
YnVmZmVyPiBXZWJHTEZyYW1lYnVmZmVyOjpjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZSYgY3R4KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkdMRnJhbWVidWZmZXIoY3R4
KSk7CiB9CiAKLVdlYkdMRnJhbWVidWZmZXI6OldlYkdMRnJhbWVidWZmZXIoV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSogY3R4KQorV2ViR0xGcmFtZWJ1ZmZlcjo6V2ViR0xGcmFtZWJ1ZmZlcihX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjdHgpCiAgICAgOiBXZWJHTENvbnRleHRPYmplY3Qo
Y3R4KQogICAgICwgbV9oYXNFdmVyQmVlbkJvdW5kKGZhbHNlKQogewotICAgIHNldE9iamVjdChj
dHgtPmdyYXBoaWNzQ29udGV4dDNEKCktPmNyZWF0ZUZyYW1lYnVmZmVyKCkpOworICAgIHNldE9i
amVjdChjdHguZ3JhcGhpY3NDb250ZXh0M0QoKS0+Y3JlYXRlRnJhbWVidWZmZXIoKSk7CiB9CiAK
IFdlYkdMRnJhbWVidWZmZXI6On5XZWJHTEZyYW1lYnVmZmVyKCkKQEAgLTYyNyw3ICs2MjcsNyBA
QCB2b2lkIFdlYkdMRnJhbWVidWZmZXI6OmRyYXdCdWZmZXJzSWZOZWNlc3NhcnkoYm9vbCBmb3Jj
ZSkKICAgICAgICAgfQogICAgIH0KICAgICBpZiAocmVzZXQpIHsKLSAgICAgICAgY29udGV4dCgp
LT5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCktPmRyYXdCdWZmZXJzRVhUKAor
ICAgICAgICBjb250ZXh0KCktPmdyYXBoaWNzQ29udGV4dDNEKCktPmdldEV4dGVuc2lvbnMoKS5k
cmF3QnVmZmVyc0VYVCgKICAgICAgICAgICAgIG1fZmlsdGVyZWREcmF3QnVmZmVycy5zaXplKCks
IG1fZmlsdGVyZWREcmF3QnVmZmVycy5kYXRhKCkpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaAppbmRleCA1YWM0ZmI3ZTkxZTEyMGRl
M2RkYjg5OWFkYzFjZjg5ZDQxNzg5MzlkLi4yMGVkMjljYzAxNmQ4MWQ2YzQ3NjM3MWRlYjFlYWRj
NTA3ZTgzZTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZy
YW1lYnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1
ZmZlci5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfldlYkdMRnJh
bWVidWZmZXIoKTsKIAotICAgIHN0YXRpYyBSZWY8V2ViR0xGcmFtZWJ1ZmZlcj4gY3JlYXRlKFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdMRnJhbWVidWZm
ZXI+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAKICAgICB2b2lkIHNldEF0
dGFjaG1lbnRGb3JCb3VuZEZyYW1lYnVmZmVyKEdDM0RlbnVtIGF0dGFjaG1lbnQsIEdDM0RlbnVt
IHRleFRhcmdldCwgV2ViR0xUZXh0dXJlKiwgR0MzRGludCBsZXZlbCk7CiAgICAgdm9pZCBzZXRB
dHRhY2htZW50Rm9yQm91bmRGcmFtZWJ1ZmZlcihHQzNEZW51bSBhdHRhY2htZW50LCBXZWJHTFJl
bmRlcmJ1ZmZlciopOwpAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAgR0MzRGVudW0gZ2V0
RHJhd0J1ZmZlcihHQzNEZW51bSk7CiAKIHByb3RlY3RlZDoKLSAgICBXZWJHTEZyYW1lYnVmZmVy
KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBXZWJHTEZyYW1lYnVmZmVyKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKIAogICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChHcmFw
aGljc0NvbnRleHQzRCosIFBsYXRmb3JtM0RPYmplY3QpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTExvc2VDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTG9zZUNvbnRleHQuY3BwCmluZGV4IGM2NWFlOTA4
ODg4NGJmYWU3MzA2MmMzNTIxODI2ZTBjOTE1N2EzY2IuLjliY2IwNDliNDA5MDlmNTE1OWJjY2Uy
Y2E1MjkwMmZiMDZkOTYyNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMTG9zZUNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMTG9zZUNvbnRleHQuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotV2ViR0xMb3NlQ29udGV4dDo6V2ViR0xMb3NlQ29udGV4dChXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlKiBjb250ZXh0KQorV2ViR0xMb3NlQ29udGV4dDo6V2ViR0xMb3NlQ29udGV4dChX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjb250ZXh0KQogICAgIDogV2ViR0xFeHRlbnNpb24o
Y29udGV4dCkKIHsKIH0KQEAgLTQ5LDEyICs0OSwxMiBAQCBXZWJHTEV4dGVuc2lvbjo6RXh0ZW5z
aW9uTmFtZSBXZWJHTExvc2VDb250ZXh0OjpnZXROYW1lKCkgY29uc3QKIAogdm9pZCBXZWJHTExv
c2VDb250ZXh0Ojpsb3NlQ29udGV4dCgpCiB7Ci0gICAgbV9jb250ZXh0LT5mb3JjZUxvc3RDb250
ZXh0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OlN5bnRoZXRpY0xvc3RDb250ZXh0KTsKKyAg
ICBtX2NvbnRleHQuZm9yY2VMb3N0Q29udGV4dChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpT
eW50aGV0aWNMb3N0Q29udGV4dCk7CiB9CiAKIHZvaWQgV2ViR0xMb3NlQ29udGV4dDo6cmVzdG9y
ZUNvbnRleHQoKQogewotICAgIG1fY29udGV4dC0+Zm9yY2VSZXN0b3JlQ29udGV4dCgpOworICAg
IG1fY29udGV4dC5mb3JjZVJlc3RvcmVDb250ZXh0KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTG9zZUNv
bnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTG9zZUNvbnRleHQuaApp
bmRleCA3MjkxYjczZTc3OTYzMGZjNWU1Y2MyMzEzM2JhMjc4NjdlOWM4ZGRlLi42MzBkMjY0NWFk
MmU5NTIzMmQwNzgyNjAyOTZlOTMzMGMxNzIzZWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTExvc2VDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xMb3NlQ29udGV4dC5oCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U7CiAKIGNsYXNzIFdlYkdMTG9zZUNvbnRleHQgZmluYWwgOiBw
dWJsaWMgV2ViR0xFeHRlbnNpb24gewogcHVibGljOgotICAgIGV4cGxpY2l0IFdlYkdMTG9zZUNv
bnRleHQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOworICAgIGV4cGxpY2l0IFdlYkdMTG9z
ZUNvbnRleHQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogICAgIHZpcnR1YWwgfldlYkdM
TG9zZUNvbnRleHQoKTsKIAogICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xPYmplY3QuY3BwCmluZGV4IGFj
ZGFiOTc5YjRlYjk1MWRiNTI3YjYwZWY2ODdhNDRkNzViOGIzMWMuLjVkOTIwOTVmZmYxNzg2YjIy
NWMyODVhOTcwM2M2Njk5NjFiNTk3NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTE9iamVjdC5jcHAKQEAgLTM4LDcgKzM4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1XZWJHTE9iamVjdDo6V2ViR0xPYmplY3QoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopCitX
ZWJHTE9iamVjdDo6V2ViR0xPYmplY3QoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpCiAgICAg
OiBtX29iamVjdCgwKQogICAgICwgbV9hdHRhY2htZW50Q291bnQoMCkKICAgICAsIG1fZGVsZXRl
ZChmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMT2Jq
ZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE9iamVjdC5oCmluZGV4IDlj
OTFmMWQzMTA2MDY3ZTA4N2ZhMGJkOWE4Yzc2NGMwODlmOGM2NDMuLjdiMzIzZDZjOWY3YTc4YWY0
YjJmNDNlNjUwM2Y5ZTAxMjllY2M3NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xPYmplY3QuaApAQCAtNTQsMTAgKzU0LDEwIEBAIHB1YmxpYzoKICAgICBib29sIGlzRGVsZXRl
ZCgpIHsgcmV0dXJuIG1fZGVsZXRlZDsgfQogCiAgICAgLy8gVHJ1ZSBpZiB0aGlzIG9iamVjdCBi
ZWxvbmdzIHRvIHRoZSBncm91cCBvciBjb250ZXh0LgotICAgIHZpcnR1YWwgYm9vbCB2YWxpZGF0
ZShjb25zdCBXZWJHTENvbnRleHRHcm91cCosIGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UqKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHZhbGlkYXRlKGNvbnN0IFdlYkdMQ29u
dGV4dEdyb3VwKiwgY29uc3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpIGNvbnN0ID0gMDsK
IAogcHJvdGVjdGVkOgotICAgIFdlYkdMT2JqZWN0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uq
KTsKKyAgICBXZWJHTE9iamVjdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAKICAgICAv
LyBzZXRPYmplY3Qgc2hvdWxkIGJlIG9ubHkgY2FsbGVkIG9uY2UgcmlnaHQgYWZ0ZXIgY3JlYXRp
bmcgYSBXZWJHTE9iamVjdC4KICAgICB2b2lkIHNldE9iamVjdChQbGF0Zm9ybTNET2JqZWN0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFByb2dyYW0uY3BwCmluZGV4IDFiNzUy
ZTZlMGZkYjRiYTYzYzkzYmMyZTc1MzA2MjU2NWMyZDRjZDcuLjc3YWZlOTRjNDU4NWExYmIzZTE3
NzZjODkxNTNiODRiYjg2YzE3MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUHJvZ3JhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xQcm9ncmFtLmNwcApAQCAtMzQsMTggKzM0LDE4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotUmVmPFdlYkdMUHJvZ3JhbT4gV2ViR0xQcm9ncmFtOjpjcmVhdGUoV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSogY3R4KQorUmVmPFdlYkdMUHJvZ3JhbT4gV2ViR0xQcm9ncmFtOjpjcmVhdGUo
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY3R4KQogewogICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYkdMUHJvZ3JhbShjdHgpKTsKIH0KIAotV2ViR0xQcm9ncmFtOjpXZWJHTFByb2dyYW0o
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY3R4KQorV2ViR0xQcm9ncmFtOjpXZWJHTFByb2dy
YW0oV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY3R4KQogICAgIDogV2ViR0xTaGFyZWRPYmpl
Y3QoY3R4KQogICAgICwgbV9saW5rU3RhdHVzKGZhbHNlKQogICAgICwgbV9saW5rQ291bnQoMCkK
ICAgICAsIG1faW5mb1ZhbGlkKHRydWUpCiB7Ci0gICAgc2V0T2JqZWN0KGN0eC0+Z3JhcGhpY3ND
b250ZXh0M0QoKS0+Y3JlYXRlUHJvZ3JhbSgpKTsKKyAgICBzZXRPYmplY3QoY3R4LmdyYXBoaWNz
Q29udGV4dDNEKCktPmNyZWF0ZVByb2dyYW0oKSk7CiB9CiAKIFdlYkdMUHJvZ3JhbTo6fldlYkdM
UHJvZ3JhbSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFBy
b2dyYW0uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5oCmluZGV4
IGU0YjEwNjkzMjVhYjM5M2NiMmJhZTUyNTA5Zjc0OWMzODAyMzk0ZTguLjcxN2NjZTEzOGM0Mjhj
NTdjZGRiN2M1NWMxNDY4NWZhNDYyMjMyZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUHJvZ3JhbS5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIFdlYkdMUHJvZ3JhbSBmaW5h
bCA6IHB1YmxpYyBXZWJHTFNoYXJlZE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2Vi
R0xQcm9ncmFtKCk7CiAKLSAgICBzdGF0aWMgUmVmPFdlYkdMUHJvZ3JhbT4gY3JlYXRlKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdMUHJvZ3JhbT4gY3Jl
YXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKIAogICAgIHVuc2lnbmVkIG51bUFjdGl2
ZUF0dHJpYkxvY2F0aW9ucygpOwogICAgIEdDM0RpbnQgZ2V0QWN0aXZlQXR0cmliTG9jYXRpb24o
R0MzRHVpbnQgaW5kZXgpOwpAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBkZXRh
Y2hTaGFkZXIoV2ViR0xTaGFkZXIqKTsKIAogcHJvdGVjdGVkOgotICAgIFdlYkdMUHJvZ3JhbShX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAgV2ViR0xQcm9ncmFtKFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UmKTsKIAogICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChHcmFwaGljc0Nv
bnRleHQzRCosIFBsYXRmb3JtM0RPYmplY3QpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFF1ZXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUXVlcnkuY3BwCmluZGV4IGM3Zjk0MzQ5YjkwODNlZTA4ZjdlYmViYWYw
ZDYzMDFiYzhiYTJiNDEuLjhjYTUyNTExNTczNTAxNTQ1YWM1NWY1ZTk0MWVhYTVhODA0M2JlYWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUXVlcnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUXVlcnkuY3BwCkBAIC0zMyw3ICsz
Myw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKLVJlZjxXZWJHTFF1ZXJ5PiBXZWJH
TFF1ZXJ5OjpjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY3R4KQorUmVmPFdlYkdM
UXVlcnk+IFdlYkdMUXVlcnk6OmNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjdHgp
CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR0xRdWVyeShjdHgpKTsKIH0KQEAgLTQz
LDcgKzQzLDcgQEAgV2ViR0xRdWVyeTo6fldlYkdMUXVlcnkoKQogICAgIGRlbGV0ZU9iamVjdCgw
KTsKIH0KIAotV2ViR0xRdWVyeTo6V2ViR0xRdWVyeShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
KiBjdHgpCitXZWJHTFF1ZXJ5OjpXZWJHTFF1ZXJ5KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Um
IGN0eCkKICAgICA6IFdlYkdMU2hhcmVkT2JqZWN0KGN0eCkKIHsKICAgICAvLyBGSVhNRTogQ2Fs
bCBjcmVhdGVRdWVyeSBmcm9tIEdyYXBoaWNzQ29udGV4dDNELgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xRdWVyeS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xRdWVyeS5oCmluZGV4IGNlOTg5NWI4OGE5NjI3ZTE4Zjg2YmM2YzRiYzIxYTJl
MjhlZTNmNGYuLjQ2ZGI1OTJhODVhZjYyZmU4MGY3MWYzNzNiZTU5MTZiY2I5YzE4NTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUXVlcnkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFF1ZXJ5LmgKQEAgLTMzLDEwICszMywxMCBAQCBj
bGFzcyBXZWJHTFF1ZXJ5IGZpbmFsIDogcHVibGljIFdlYkdMU2hhcmVkT2JqZWN0IHsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5XZWJHTFF1ZXJ5KCk7CiAKLSAgICBzdGF0aWMgUmVmPFdlYkdMUXVl
cnk+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAgc3RhdGljIFJlZjxX
ZWJHTFF1ZXJ5PiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogCiBwcm90ZWN0
ZWQ6Ci0gICAgV2ViR0xRdWVyeShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAgV2Vi
R0xRdWVyeShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAKICAgICB2b2lkIGRlbGV0ZU9i
amVjdEltcGwoR3JhcGhpY3NDb250ZXh0M0QqLCBQbGF0Zm9ybTNET2JqZWN0KSBvdmVycmlkZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZm
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuY3Bw
CmluZGV4IDFkNzk0MjkwZDZiYTIyZDFjODQ1NjAxNWY0YjAwMjVkOWVjNzRhMTQuLjY5OTZkOWIx
ZGE5MzBmM2EyYmFiYTIzMGU0OTJjMGQ3ODRhN2NkMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8V2ViR0xSZW5kZXJidWZmZXI+IFdlYkdMUmVuZGVy
YnVmZmVyOjpjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY3R4KQorUmVmPFdlYkdM
UmVuZGVyYnVmZmVyPiBXZWJHTFJlbmRlcmJ1ZmZlcjo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UmIGN0eCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHTFJlbmRlcmJ1
ZmZlcihjdHgpKTsKIH0KQEAgLTQ0LDcgKzQ0LDcgQEAgV2ViR0xSZW5kZXJidWZmZXI6On5XZWJH
TFJlbmRlcmJ1ZmZlcigpCiAgICAgZGVsZXRlT2JqZWN0KDApOwogfQogCi1XZWJHTFJlbmRlcmJ1
ZmZlcjo6V2ViR0xSZW5kZXJidWZmZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY3R4KQor
V2ViR0xSZW5kZXJidWZmZXI6OldlYkdMUmVuZGVyYnVmZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UmIGN0eCkKICAgICA6IFdlYkdMU2hhcmVkT2JqZWN0KGN0eCkKICAgICAsIG1faW50ZXJu
YWxGb3JtYXQoR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkE0KQogICAgICwgbV9pbml0aWFsaXplZChm
YWxzZSkKQEAgLTUzLDcgKzUzLDcgQEAgV2ViR0xSZW5kZXJidWZmZXI6OldlYkdMUmVuZGVyYnVm
ZmVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGN0eCkKICAgICAsIG1faXNWYWxpZCh0cnVl
KQogICAgICwgbV9oYXNFdmVyQmVlbkJvdW5kKGZhbHNlKQogewotICAgIHNldE9iamVjdChjdHgt
PmdyYXBoaWNzQ29udGV4dDNEKCktPmNyZWF0ZVJlbmRlcmJ1ZmZlcigpKTsKKyAgICBzZXRPYmpl
Y3QoY3R4LmdyYXBoaWNzQ29udGV4dDNEKCktPmNyZWF0ZVJlbmRlcmJ1ZmZlcigpKTsKIH0KIAog
dm9pZCBXZWJHTFJlbmRlcmJ1ZmZlcjo6ZGVsZXRlT2JqZWN0SW1wbChHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dDNkLCBQbGF0Zm9ybTNET2JqZWN0IG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5oCmluZGV4IDA2YmIzMDI1ZDZkNzNmZThh
NGEzY2Y4ZmI5MDYyYzYyNzJmYTJiMjYuLmNmNmFkNmY2NTk2NzlkNTc3ZTczNDM2MmYzZTNiNTNj
MjQ0ZDJkZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyYnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJi
dWZmZXIuaApAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBXZWJHTFJlbmRlcmJ1ZmZlciBmaW5hbCA6
IHB1YmxpYyBXZWJHTFNoYXJlZE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViR0xS
ZW5kZXJidWZmZXIoKTsKIAotICAgIHN0YXRpYyBSZWY8V2ViR0xSZW5kZXJidWZmZXI+IGNyZWF0
ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAgc3RhdGljIFJlZjxXZWJHTFJlbmRl
cmJ1ZmZlcj4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKIAogICAgIHZvaWQg
c2V0SW50ZXJuYWxGb3JtYXQoR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQpCiAgICAgewpAQCAtNjEs
NyArNjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRIYXNFdmVyQmVlbkJvdW5kKCkgeyBtX2hh
c0V2ZXJCZWVuQm91bmQgPSB0cnVlOyB9CiAKIHByb3RlY3RlZDoKLSAgICBXZWJHTFJlbmRlcmJ1
ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CisgICAgV2ViR0xSZW5kZXJidWZmZXIo
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogCiAgICAgdm9pZCBkZWxldGVPYmplY3RJbXBs
KEdyYXBoaWNzQ29udGV4dDNEKiwgUGxhdGZvcm0zRE9iamVjdCkgb3ZlcnJpZGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3Bw
CmluZGV4IDk2YjgwOGQ0OWUwODZjOWY1Yjc4NDBlYjBkNmVjMmE5MjUxOGM2N2EuLmRjMTlhNTUy
NDJhYzMxOTY5YjkwMzc3ZTE1MTAyZjg4OGQ1YmQ0MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtNzcsNyArNzcs
NyBAQCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OldlYkdMUmVuZGVyaW5nQ29udGV4dChIVE1MQ2Fu
dmFzRWxlbWVudCYgcGFzc2VkQ2FudmFzLCBQYQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6aW5pdGlhbGl6ZVZlcnRleEFycmF5T2JqZWN0cygpCiB7Ci0gICAgbV9kZWZhdWx0VmVydGV4
QXJyYXlPYmplY3QgPSBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOjpjcmVhdGUodGhpcywgV2Vi
R0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6VkFPVHlwZURlZmF1bHQpOworICAgIG1fZGVmYXVsdFZl
cnRleEFycmF5T2JqZWN0ID0gV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUzo6Y3JlYXRlKCp0aGlz
LCBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOjpWQU9UeXBlRGVmYXVsdCk7CiAgICAgYWRkQ29u
dGV4dE9iamVjdChtX2RlZmF1bHRWZXJ0ZXhBcnJheU9iamVjdC5nZXQoKSk7CiAgICAgbV9ib3Vu
ZFZlcnRleEFycmF5T2JqZWN0ID0gbV9kZWZhdWx0VmVydGV4QXJyYXlPYmplY3Q7CiAgICAgaWYg
KCFpc0dMRVMyQ29tcGxpYW50KCkpCkBAIC05MCwxNTUgKzkwLDE1NSBAQCBXZWJHTEV4dGVuc2lv
biogV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1l
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKICAgICBpZiAoZXF1YWxJZ25vcmluZ0FT
Q0lJQ2FzZShuYW1lLCAiRVhUX2JsZW5kX21pbm1heCIpCi0gICAgICAgICYmIG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfRVhUX2JsZW5kX21pbm1heCIpKSB7CisgICAg
ICAgICYmIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9FWFRfYmxlbmRf
bWlubWF4IikpIHsKICAgICAgICAgaWYgKCFtX2V4dEJsZW5kTWluTWF4KSB7Ci0gICAgICAgICAg
ICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfRVhUX2JsZW5k
X21pbm1heCIpOwotICAgICAgICAgICAgbV9leHRCbGVuZE1pbk1heCA9IHN0ZDo6bWFrZV91bmlx
dWU8RVhUQmxlbmRNaW5NYXg+KHRoaXMpOworICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfRVhUX2JsZW5kX21pbm1heCIpOworICAgICAgICAg
ICAgbV9leHRCbGVuZE1pbk1heCA9IHN0ZDo6bWFrZV91bmlxdWU8RVhUQmxlbmRNaW5NYXg+KCp0
aGlzKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbV9leHRCbGVuZE1pbk1heC5nZXQoKTsK
ICAgICB9CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIkVYVF9zUkdCIikK
LSAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9FWFRf
c1JHQiIpKSB7CisgICAgICAgICYmIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRz
KCJHTF9FWFRfc1JHQiIpKSB7CiAgICAgICAgIGlmICghbV9leHRzUkdCKSB7Ci0gICAgICAgICAg
ICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3NSR0Ii
KTsKLSAgICAgICAgICAgIG1fZXh0c1JHQiA9IHN0ZDo6bWFrZV91bmlxdWU8RVhUc1JHQj4odGhp
cyk7CisgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVk
KCJHTF9FWFRfc1JHQiIpOworICAgICAgICAgICAgbV9leHRzUkdCID0gc3RkOjptYWtlX3VuaXF1
ZTxFWFRzUkdCPigqdGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1fZXh0c1JHQi5n
ZXQoKTsKICAgICB9CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIkVYVF9m
cmFnX2RlcHRoIikKLSAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBv
cnRzKCJHTF9FWFRfZnJhZ19kZXB0aCIpKSB7CisgICAgICAgICYmIG1fY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9FWFRfZnJhZ19kZXB0aCIpKSB7CiAgICAgICAgIGlmICgh
bV9leHRGcmFnRGVwdGgpIHsKLSAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LT5lbnN1cmVFbmFibGVkKCJHTF9FWFRfZnJhZ19kZXB0aCIpOwotICAgICAgICAgICAgbV9leHRG
cmFnRGVwdGggPSBzdGQ6Om1ha2VfdW5pcXVlPEVYVEZyYWdEZXB0aD4odGhpcyk7CisgICAgICAg
ICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9FWFRfZnJh
Z19kZXB0aCIpOworICAgICAgICAgICAgbV9leHRGcmFnRGVwdGggPSBzdGQ6Om1ha2VfdW5pcXVl
PEVYVEZyYWdEZXB0aD4oKnRoaXMpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX2V4dEZy
YWdEZXB0aC5nZXQoKTsKICAgICB9CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFt
ZSwgIkVYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKQotICAgICAgICAmJiAobV9jb250ZXh0LT5nZXRF
eHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIikgfHwgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9BUkJfc2hhZGVyX3RleHR1cmVf
bG9kIikpKSB7CisgICAgICAgICYmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0
cygiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpIHx8IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLnN1cHBvcnRzKCJHTF9BUkJfc2hhZGVyX3RleHR1cmVfbG9kIikpKSB7CiAgICAgICAgIGlm
ICghbV9leHRTaGFkZXJUZXh0dXJlTE9EKSB7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpOwot
ICAgICAgICAgICAgbV9leHRTaGFkZXJUZXh0dXJlTE9EID0gc3RkOjptYWtlX3VuaXF1ZTxFWFRT
aGFkZXJUZXh0dXJlTE9EPih0aGlzKTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKTsKKyAgICAg
ICAgICAgIG1fZXh0U2hhZGVyVGV4dHVyZUxPRCA9IHN0ZDo6bWFrZV91bmlxdWU8RVhUU2hhZGVy
VGV4dHVyZUxPRD4oKnRoaXMpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX2V4dFNoYWRl
clRleHR1cmVMT0QuZ2V0KCk7CiAgICAgfQogICAgIGlmICgoZXF1YWxJZ25vcmluZ0FTQ0lJQ2Fz
ZShuYW1lLCAiRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIikgfHwgZXF1YWxJZ25vcmlu
Z0FTQ0lJQ2FzZShuYW1lLCAiV0VCS0lUX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIp
KQotICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX0VY
VF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpKSB7CisgICAgICAgICYmIG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9w
aWMiKSkgewogICAgICAgICBpZiAoIW1fZXh0VGV4dHVyZUZpbHRlckFuaXNvdHJvcGljKSB7Ci0g
ICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xf
RVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIik7Ci0gICAgICAgICAgICBtX2V4dFRleHR1
cmVGaWx0ZXJBbmlzb3Ryb3BpYyA9IHN0ZDo6bWFrZV91bmlxdWU8RVhUVGV4dHVyZUZpbHRlckFu
aXNvdHJvcGljPih0aGlzKTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LmVuc3VyZUVuYWJsZWQoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpOworICAg
ICAgICAgICAgbV9leHRUZXh0dXJlRmlsdGVyQW5pc290cm9waWMgPSBzdGQ6Om1ha2VfdW5pcXVl
PEVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYz4oKnRoaXMpOwogICAgICAgICB9CiAgICAgICAg
IHJldHVybiBtX2V4dFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5nZXQoKTsKICAgICB9CiAgICAg
aWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIk9FU19zdGFuZGFyZF9kZXJpdmF0aXZl
cyIpCi0gICAgICAgICYmIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xf
T0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIikpIHsKKyAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpKSB7CiAg
ICAgICAgIGlmICghbV9vZXNTdGFuZGFyZERlcml2YXRpdmVzKSB7Ci0gICAgICAgICAgICBtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3N0YW5kYXJkX2Rl
cml2YXRpdmVzIik7Ci0gICAgICAgICAgICBtX29lc1N0YW5kYXJkRGVyaXZhdGl2ZXMgPSBzdGQ6
Om1ha2VfdW5pcXVlPE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXM+KHRoaXMpOworICAgICAgICAgICAg
bV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3N0YW5kYXJk
X2Rlcml2YXRpdmVzIik7CisgICAgICAgICAgICBtX29lc1N0YW5kYXJkRGVyaXZhdGl2ZXMgPSBz
dGQ6Om1ha2VfdW5pcXVlPE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXM+KCp0aGlzKTsKICAgICAgICAg
fQogICAgICAgICByZXR1cm4gbV9vZXNTdGFuZGFyZERlcml2YXRpdmVzLmdldCgpOwogICAgIH0K
ICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiT0VTX3RleHR1cmVfZmxvYXQi
KQotICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09F
U190ZXh0dXJlX2Zsb2F0IikpIHsKKyAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkuc3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2Zsb2F0IikpIHsKICAgICAgICAgaWYgKCFtX29l
c1RleHR1cmVGbG9hdCkgewotICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkt
PmVuc3VyZUVuYWJsZWQoIkdMX09FU190ZXh0dXJlX2Zsb2F0Iik7Ci0gICAgICAgICAgICBtX29l
c1RleHR1cmVGbG9hdCA9IHN0ZDo6bWFrZV91bmlxdWU8T0VTVGV4dHVyZUZsb2F0Pih0aGlzKTsK
KyAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdM
X09FU190ZXh0dXJlX2Zsb2F0Iik7CisgICAgICAgICAgICBtX29lc1RleHR1cmVGbG9hdCA9IHN0
ZDo6bWFrZV91bmlxdWU8T0VTVGV4dHVyZUZsb2F0PigqdGhpcyk7CiAgICAgICAgIH0KICAgICAg
ICAgcmV0dXJuIG1fb2VzVGV4dHVyZUZsb2F0LmdldCgpOwogICAgIH0KICAgICBpZiAoZXF1YWxJ
Z25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIikKLSAgICAg
ICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVy
ZV9mbG9hdF9saW5lYXIiKSkgeworICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIikpIHsKICAgICAgICAgaWYg
KCFtX29lc1RleHR1cmVGbG9hdExpbmVhcikgewotICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRF
eHRlbnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIp
OwotICAgICAgICAgICAgbV9vZXNUZXh0dXJlRmxvYXRMaW5lYXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PE9FU1RleHR1cmVGbG9hdExpbmVhcj4odGhpcyk7CisgICAgICAgICAgICBtX2NvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIi
KTsKKyAgICAgICAgICAgIG1fb2VzVGV4dHVyZUZsb2F0TGluZWFyID0gc3RkOjptYWtlX3VuaXF1
ZTxPRVNUZXh0dXJlRmxvYXRMaW5lYXI+KCp0aGlzKTsKICAgICAgICAgfQogICAgICAgICByZXR1
cm4gbV9vZXNUZXh0dXJlRmxvYXRMaW5lYXIuZ2V0KCk7CiAgICAgfQogICAgIGlmIChlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKG5hbWUsICJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IikKLSAgICAgICAg
JiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfdGV4dHVyZV9o
YWxmX2Zsb2F0IikpIHsKKyAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3Vw
cG9ydHMoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQiKSkgewogICAgICAgICBpZiAoIW1fb2Vz
VGV4dHVyZUhhbGZGbG9hdCkgewotICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25z
KCktPmVuc3VyZUVuYWJsZWQoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQiKTsKLSAgICAgICAg
ICAgIG1fb2VzVGV4dHVyZUhhbGZGbG9hdCA9IHN0ZDo6bWFrZV91bmlxdWU8T0VTVGV4dHVyZUhh
bGZGbG9hdD4odGhpcyk7CisgICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5l
bnN1cmVFbmFibGVkKCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0Iik7CisgICAgICAgICAgICBt
X29lc1RleHR1cmVIYWxmRmxvYXQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9FU1RleHR1cmVIYWxmRmxv
YXQ+KCp0aGlzKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbV9vZXNUZXh0dXJlSGFsZkZs
b2F0LmdldCgpOwogICAgIH0KICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAi
T0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKQotICAgICAgICAmJiBtX2NvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFy
IikpIHsKKyAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdM
X09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIikpIHsKICAgICAgICAgaWYgKCFtX29lc1Rl
eHR1cmVIYWxmRmxvYXRMaW5lYXIpIHsKLSAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLT5lbnN1cmVFbmFibGVkKCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIp
OwotICAgICAgICAgICAgbV9vZXNUZXh0dXJlSGFsZkZsb2F0TGluZWFyID0gc3RkOjptYWtlX3Vu
aXF1ZTxPRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyPih0aGlzKTsKKyAgICAgICAgICAgIG1fY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX09FU190ZXh0dXJlX2hhbGZf
ZmxvYXRfbGluZWFyIik7CisgICAgICAgICAgICBtX29lc1RleHR1cmVIYWxmRmxvYXRMaW5lYXIg
PSBzdGQ6Om1ha2VfdW5pcXVlPE9FU1RleHR1cmVIYWxmRmxvYXRMaW5lYXI+KCp0aGlzKTsKICAg
ICAgICAgfQogICAgICAgICByZXR1cm4gbV9vZXNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLmdldCgp
OwogICAgIH0KICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiT0VTX3ZlcnRl
eF9hcnJheV9vYmplY3QiKQotICAgICAgICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+
c3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IikpIHsKKyAgICAgICAgJiYgbV9j
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2Jq
ZWN0IikpIHsKICAgICAgICAgaWYgKCFtX29lc1ZlcnRleEFycmF5T2JqZWN0KSB7Ci0gICAgICAg
ICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5zdXJlRW5hYmxlZCgiR0xfT0VTX3Zl
cnRleF9hcnJheV9vYmplY3QiKTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLmVuc3VyZUVuYWJsZWQoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7CiAgICAgICAg
ICAgICBtX29lc1ZlcnRleEFycmF5T2JqZWN0ID0gc3RkOjptYWtlX3VuaXF1ZTxPRVNWZXJ0ZXhB
cnJheU9iamVjdD4oKnRoaXMpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX29lc1ZlcnRl
eEFycmF5T2JqZWN0LmdldCgpOwogICAgIH0KICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2Fz
ZShuYW1lLCAiT0VTX2VsZW1lbnRfaW5kZXhfdWludCIpCi0gICAgICAgICYmIG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX2VsZW1lbnRfaW5kZXhfdWludCIpKSB7
CisgICAgICAgICYmIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNf
ZWxlbWVudF9pbmRleF91aW50IikpIHsKICAgICAgICAgaWYgKCFtX29lc0VsZW1lbnRJbmRleFVp
bnQpIHsKLSAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFi
bGVkKCJHTF9PRVNfZWxlbWVudF9pbmRleF91aW50Iik7Ci0gICAgICAgICAgICBtX29lc0VsZW1l
bnRJbmRleFVpbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9FU0VsZW1lbnRJbmRleFVpbnQ+KHRoaXMp
OworICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxlZCgi
R0xfT0VTX2VsZW1lbnRfaW5kZXhfdWludCIpOworICAgICAgICAgICAgbV9vZXNFbGVtZW50SW5k
ZXhVaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPRVNFbGVtZW50SW5kZXhVaW50PigqdGhpcyk7CiAg
ICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1fb2VzRWxlbWVudEluZGV4VWludC5nZXQoKTsKICAg
ICB9CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIldFQkdMX2xvc2VfY29u
dGV4dCIpKSB7CiAgICAgICAgIGlmICghbV93ZWJnbExvc2VDb250ZXh0KQotICAgICAgICAgICAg
bV93ZWJnbExvc2VDb250ZXh0ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTExvc2VDb250ZXh0Pih0
aGlzKTsKKyAgICAgICAgICAgIG1fd2ViZ2xMb3NlQ29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8
V2ViR0xMb3NlQ29udGV4dD4oKnRoaXMpOwogICAgICAgICByZXR1cm4gbV93ZWJnbExvc2VDb250
ZXh0LmdldCgpOwogICAgIH0KICAgICBpZiAoKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwg
IldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfYXRjIikpCi0gICAgICAgICYmIFdlYkdM
Q29tcHJlc3NlZFRleHR1cmVBVEM6OnN1cHBvcnRlZCh0aGlzKSkgeworICAgICAgICAmJiBXZWJH
TENvbXByZXNzZWRUZXh0dXJlQVRDOjpzdXBwb3J0ZWQoKnRoaXMpKSB7CiAgICAgICAgIGlmICgh
bV93ZWJnbENvbXByZXNzZWRUZXh0dXJlQVRDKQotICAgICAgICAgICAgbV93ZWJnbENvbXByZXNz
ZWRUZXh0dXJlQVRDID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRD
Pih0aGlzKTsKKyAgICAgICAgICAgIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZUFUQyA9IHN0ZDo6
bWFrZV91bmlxdWU8V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQz4oKnRoaXMpOwogICAgICAgICBy
ZXR1cm4gbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlQVRDLmdldCgpOwogICAgIH0KICAgICBpZiAo
KGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3Rl
eHR1cmVfcHZydGMiKSkKLSAgICAgICAgJiYgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpz
dXBwb3J0ZWQodGhpcykpIHsKKyAgICAgICAgJiYgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRD
OjpzdXBwb3J0ZWQoKnRoaXMpKSB7CiAgICAgICAgIGlmICghbV93ZWJnbENvbXByZXNzZWRUZXh0
dXJlUFZSVEMpCi0gICAgICAgICAgICBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVQVlJUQyA9IHN0
ZDo6bWFrZV91bmlxdWU8V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDPih0aGlzKTsKKyAgICAg
ICAgICAgIG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVBWUlRDID0gc3RkOjptYWtlX3VuaXF1ZTxX
ZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM+KCp0aGlzKTsKICAgICAgICAgcmV0dXJuIG1fd2Vi
Z2xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmdldCgpOwogICAgIH0KICAgICBpZiAoZXF1YWxJZ25v
cmluZ0FTQ0lJQ2FzZShuYW1lLCAiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiKQotICAg
ICAgICAmJiBXZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQzo6c3VwcG9ydGVkKHRoaXMpKSB7Cisg
ICAgICAgICYmIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQoKnRoaXMpKSB7
CiAgICAgICAgIGlmICghbV93ZWJnbENvbXByZXNzZWRUZXh0dXJlUzNUQykKLSAgICAgICAgICAg
IG1fd2ViZ2xDb21wcmVzc2VkVGV4dHVyZVMzVEMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMQ29t
cHJlc3NlZFRleHR1cmVTM1RDPih0aGlzKTsKKyAgICAgICAgICAgIG1fd2ViZ2xDb21wcmVzc2Vk
VGV4dHVyZVMzVEMgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RD
PigqdGhpcyk7CiAgICAgICAgIHJldHVybiBtX3dlYmdsQ29tcHJlc3NlZFRleHR1cmVTM1RDLmdl
dCgpOwogICAgIH0KICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShuYW1lLCAiV0VCR0xf
ZGVwdGhfdGV4dHVyZSIpCi0gICAgICAgICYmIFdlYkdMRGVwdGhUZXh0dXJlOjpzdXBwb3J0ZWQo
Z3JhcGhpY3NDb250ZXh0M0QoKSkpIHsKKyAgICAgICAgJiYgV2ViR0xEZXB0aFRleHR1cmU6OnN1
cHBvcnRlZCgqZ3JhcGhpY3NDb250ZXh0M0QoKSkpIHsKICAgICAgICAgaWYgKCFtX3dlYmdsRGVw
dGhUZXh0dXJlKSB7Ci0gICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+ZW5z
dXJlRW5hYmxlZCgiR0xfQ0hST01JVU1fZGVwdGhfdGV4dHVyZSIpOwotICAgICAgICAgICAgbV93
ZWJnbERlcHRoVGV4dHVyZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xEZXB0aFRleHR1cmU+KHRo
aXMpOworICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZW5zdXJlRW5hYmxl
ZCgiR0xfQ0hST01JVU1fZGVwdGhfdGV4dHVyZSIpOworICAgICAgICAgICAgbV93ZWJnbERlcHRo
VGV4dHVyZSA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xEZXB0aFRleHR1cmU+KCp0aGlzKTsKICAg
ICAgICAgfQogICAgICAgICByZXR1cm4gbV93ZWJnbERlcHRoVGV4dHVyZS5nZXQoKTsKICAgICB9
CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgIldFQkdMX2RyYXdfYnVmZmVy
cyIpICYmIHN1cHBvcnRzRHJhd0J1ZmZlcnMoKSkgewogICAgICAgICBpZiAoIW1fd2ViZ2xEcmF3
QnVmZmVycykgewotICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVuc3Vy
ZUVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKTsKLSAgICAgICAgICAgIG1fd2ViZ2xEcmF3
QnVmZmVycyA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xEcmF3QnVmZmVycz4odGhpcyk7CisgICAg
ICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9FWFRf
ZHJhd19idWZmZXJzIik7CisgICAgICAgICAgICBtX3dlYmdsRHJhd0J1ZmZlcnMgPSBzdGQ6Om1h
a2VfdW5pcXVlPFdlYkdMRHJhd0J1ZmZlcnM+KCp0aGlzKTsKICAgICAgICAgfQogICAgICAgICBy
ZXR1cm4gbV93ZWJnbERyYXdCdWZmZXJzLmdldCgpOwogICAgIH0KLSAgICBpZiAoZXF1YWxJZ25v
cmluZ0FTQ0lJQ2FzZShuYW1lLCAiQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpICYmIEFOR0xFSW5z
dGFuY2VkQXJyYXlzOjpzdXBwb3J0ZWQodGhpcykpIHsKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0FT
Q0lJQ2FzZShuYW1lLCAiQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpICYmIEFOR0xFSW5zdGFuY2Vk
QXJyYXlzOjpzdXBwb3J0ZWQoKnRoaXMpKSB7CiAgICAgICAgIGlmICghbV9hbmdsZUluc3RhbmNl
ZEFycmF5cykgewotICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmVuc3Vy
ZUVuYWJsZWQoIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKTsKLSAgICAgICAgICAgIG1fYW5n
bGVJbnN0YW5jZWRBcnJheXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEFOR0xFSW5zdGFuY2VkQXJyYXlz
Pih0aGlzKTsKKyAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVu
YWJsZWQoIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKTsKKyAgICAgICAgICAgIG1fYW5nbGVJ
bnN0YW5jZWRBcnJheXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEFOR0xFSW5zdGFuY2VkQXJyYXlzPigq
dGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1fYW5nbGVJbnN0YW5jZWRBcnJheXMu
Z2V0KCk7CiAgICAgfQogICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJXRUJH
TF9kZWJ1Z19yZW5kZXJlcl9pbmZvIikpIHsKICAgICAgICAgaWYgKCFtX3dlYmdsRGVidWdSZW5k
ZXJlckluZm8pCi0gICAgICAgICAgICBtX3dlYmdsRGVidWdSZW5kZXJlckluZm8gPSBzdGQ6Om1h
a2VfdW5pcXVlPFdlYkdMRGVidWdSZW5kZXJlckluZm8+KHRoaXMpOworICAgICAgICAgICAgbV93
ZWJnbERlYnVnUmVuZGVyZXJJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJHTERlYnVnUmVuZGVy
ZXJJbmZvPigqdGhpcyk7CiAgICAgICAgIHJldHVybiBtX3dlYmdsRGVidWdSZW5kZXJlckluZm8u
Z2V0KCk7CiAgICAgfQogICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG5hbWUsICJXRUJH
TF9kZWJ1Z19zaGFkZXJzIikKLSAgICAgICAgJiYgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkt
PnN1cHBvcnRzKCJHTF9BTkdMRV90cmFuc2xhdGVkX3NoYWRlcl9zb3VyY2UiKSkgeworICAgICAg
ICAmJiBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfQU5HTEVfdHJhbnNs
YXRlZF9zaGFkZXJfc291cmNlIikpIHsKICAgICAgICAgaWYgKCFtX3dlYmdsRGVidWdTaGFkZXJz
KQotICAgICAgICAgICAgbV93ZWJnbERlYnVnU2hhZGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
R0xEZWJ1Z1NoYWRlcnM+KHRoaXMpOworICAgICAgICAgICAgbV93ZWJnbERlYnVnU2hhZGVycyA9
IHN0ZDo6bWFrZV91bmlxdWU8V2ViR0xEZWJ1Z1NoYWRlcnM+KCp0aGlzKTsKICAgICAgICAgcmV0
dXJuIG1fd2ViZ2xEZWJ1Z1NoYWRlcnMuZ2V0KCk7CiAgICAgfQogCkBAIC0yNTIsNDQgKzI1Miw0
NCBAQCBWZWN0b3I8U3RyaW5nPiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4
dGVuc2lvbnMoKQogICAgIGlmIChtX2lzUGVuZGluZ1BvbGljeVJlc29sdXRpb24pCiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgCi0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LT5zdXBwb3J0cygiR0xfRVhUX2JsZW5kX21pbm1heCIpKQorICAgIGlmIChtX2NvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfRVhUX2JsZW5kX21pbm1heCIpKQogICAgICAgICBy
ZXN1bHQuYXBwZW5kKCJFWFRfYmxlbmRfbWlubWF4Iik7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfRVhUX3NSR0IiKSkKKyAgICBpZiAobV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF9zUkdCIikpCiAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoIkVYVF9zUkdCIik7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LT5zdXBwb3J0cygiR0xfRVhUX2ZyYWdfZGVwdGgiKSkKKyAgICBpZiAobV9jb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF9mcmFnX2RlcHRoIikpCiAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoIkVYVF9mcmFnX2RlcHRoIik7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfZmxvYXQiKSkKKyAgICBpZiAobV9jb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2Zsb2F0IikpCiAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoIk9FU190ZXh0dXJlX2Zsb2F0Iik7Ci0gICAgaWYgKG1fY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfZmxvYXRfbGlu
ZWFyIikpCisgICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9P
RVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiT0VTX3Rl
eHR1cmVfZmxvYXRfbGluZWFyIik7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LT5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpKQorICAgIGlmIChtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIp
KQogICAgICAgICByZXN1bHQuYXBwZW5kKCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0Iik7Ci0gICAg
aWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3RleHR1cmVf
aGFsZl9mbG9hdF9saW5lYXIiKSkKKyAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCku
c3VwcG9ydHMoIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIikpCiAgICAgICAgIHJl
c3VsdC5hcHBlbmQoIk9FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIik7Ci0gICAgaWYgKG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfT0VTX3N0YW5kYXJkX2Rlcml2
YXRpdmVzIikpCisgICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJH
TF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiT0VT
X3N0YW5kYXJkX2Rlcml2YXRpdmVzIik7Ci0gICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLT5zdXBwb3J0cygiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpIHx8IG1fY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLT5zdXBwb3J0cygiR0xfQVJCX3NoYWRlcl90ZXh0dXJlX2xvZCIpKQor
ICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfRVhUX3NoYWRl
cl90ZXh0dXJlX2xvZCIpIHx8IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJH
TF9BUkJfc2hhZGVyX3RleHR1cmVfbG9kIikpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIkVYVF9z
aGFkZXJfdGV4dHVyZV9sb2QiKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkt
PnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKSkKKyAgICBpZiAo
bV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRl
cl9hbmlzb3Ryb3BpYyIpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJFWFRfdGV4dHVyZV9maWx0
ZXJfYW5pc290cm9waWMiKTsKLSAgICBpZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1
cHBvcnRzKCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCIpKQorICAgIGlmIChtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKSkK
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgiT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKTsKLSAgICBp
ZiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9PRVNfZWxlbWVudF9p
bmRleF91aW50IikpCisgICAgaWYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRz
KCJHTF9PRVNfZWxlbWVudF9pbmRleF91aW50IikpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIk9F
U19lbGVtZW50X2luZGV4X3VpbnQiKTsKICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9sb3NlX2Nv
bnRleHQiKTsKLSAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQzo6c3VwcG9ydGVkKHRo
aXMpKQorICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlQVRDOjpzdXBwb3J0ZWQoKnRoaXMp
KQogICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJl
X2F0YyIpOwotICAgIGlmIChXZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEM6OnN1cHBvcnRlZCh0
aGlzKSkKKyAgICBpZiAoV2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDOjpzdXBwb3J0ZWQoKnRo
aXMpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0
dXJlX3B2cnRjIik7Ci0gICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0
ZWQodGhpcykpCisgICAgaWYgKFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDOjpzdXBwb3J0ZWQo
KnRoaXMpKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVf
czN0YyIpOwotICAgIGlmIChXZWJHTERlcHRoVGV4dHVyZTo6c3VwcG9ydGVkKGdyYXBoaWNzQ29u
dGV4dDNEKCkpKQorICAgIGlmIChXZWJHTERlcHRoVGV4dHVyZTo6c3VwcG9ydGVkKCpncmFwaGlj
c0NvbnRleHQzRCgpKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfZGVwdGhfdGV4dHVy
ZSIpOwogICAgIGlmIChzdXBwb3J0c0RyYXdCdWZmZXJzKCkpCiAgICAgICAgIHJlc3VsdC5hcHBl
bmQoIldFQkdMX2RyYXdfYnVmZmVycyIpOwotICAgIGlmIChBTkdMRUluc3RhbmNlZEFycmF5czo6
c3VwcG9ydGVkKHRoaXMpKQorICAgIGlmIChBTkdMRUluc3RhbmNlZEFycmF5czo6c3VwcG9ydGVk
KCp0aGlzKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIp
OwotICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX0FOR0xF
X3RyYW5zbGF0ZWRfc2hhZGVyX3NvdXJjZSIpKQorICAgIGlmIChtX2NvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS5zdXBwb3J0cygiR0xfQU5HTEVfdHJhbnNsYXRlZF9zaGFkZXJfc291cmNlIikpCiAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoIldFQkdMX2RlYnVnX3NoYWRlcnMiKTsKICAgICByZXN1bHQu
YXBwZW5kKCJXRUJHTF9kZWJ1Z19yZW5kZXJlcl9pbmZvIik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5k
ZXggMmViOTI4MWQyY2NlNzRiMTgzMjgxNTE3ZmUzODRlNDhlMDhhODAyOC4uNGQ0M2U3NGY2MTE5
OTNjMjQ5NWQzZmFkMGVhNWQyODk1OWQ4YmRlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTQzMCw5
ICs0MzAsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZT4gV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRlKEhUTQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CiAKLSAgICBFeHRlbnNpb25zM0QqIGV4dGVuc2lvbnMgPSBjb250ZXh0LT5nZXRF
eHRlbnNpb25zKCk7Ci0gICAgaWYgKGV4dGVuc2lvbnMtPnN1cHBvcnRzKCJHTF9FWFRfZGVidWdf
bWFya2VyIikpCi0gICAgICAgIGV4dGVuc2lvbnMtPnB1c2hHcm91cE1hcmtlckVYVCgiV2ViR0xS
ZW5kZXJpbmdDb250ZXh0Iik7CisgICAgRXh0ZW5zaW9uczNEJiBleHRlbnNpb25zID0gY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpOworICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRf
ZGVidWdfbWFya2VyIikpCisgICAgICAgIGV4dGVuc2lvbnMucHVzaEdyb3VwTWFya2VyRVhUKCJX
ZWJHTFJlbmRlcmluZ0NvbnRleHQiKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlPiByZW5kZXJpbmdDb250ZXh0ID0gbnVsbHB0cjsKICNpZiBFTkFCTEUo
V0VCR0wyKQpAQCAtNTc1LDE2ICs1NzUsMTYgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpzZXR1cEZsYWdzKCkKICAgICAgICAgbV9zeW50aGVzaXplZEVycm9yc1RvQ29uc29sZSA9
IHBhZ2UtPnNldHRpbmdzKCkud2ViR0xFcnJvcnNUb0NvbnNvbGVFbmFibGVkKCk7CiAKICAgICBt
X2lzR0xFUzJDb21wbGlhbnQgPSBtX2NvbnRleHQtPmlzR0xFUzJDb21wbGlhbnQoKTsKLSAgICBt
X2lzRXJyb3JHZW5lcmF0ZWRPbk91dE9mQm91bmRzQWNjZXNzZXMgPSBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS0+aXNFbmFibGVkKCJHTF9DSFJPTUlVTV9zdHJpY3RfYXR0cmlicyIpOwotICAg
IG1faXNSZXNvdXJjZVNhZmUgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+aXNFbmFibGVk
KCJHTF9DSFJPTUlVTV9yZXNvdXJjZV9zYWZlIik7CisgICAgbV9pc0Vycm9yR2VuZXJhdGVkT25P
dXRPZkJvdW5kc0FjY2Vzc2VzID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuaXNFbmFibGVk
KCJHTF9DSFJPTUlVTV9zdHJpY3RfYXR0cmlicyIpOworICAgIG1faXNSZXNvdXJjZVNhZmUgPSBt
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5pc0VuYWJsZWQoIkdMX0NIUk9NSVVNX3Jlc291cmNl
X3NhZmUiKTsKICAgICBpZiAobV9pc0dMRVMyQ29tcGxpYW50KSB7Ci0gICAgICAgIG1faXNHTEVT
Mk5QT1RTdHJpY3QgPSAhbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmlzRW5hYmxlZCgiR0xf
T0VTX3RleHR1cmVfbnBvdCIpOwotICAgICAgICBtX2lzRGVwdGhTdGVuY2lsU3VwcG9ydGVkID0g
bV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmlzRW5hYmxlZCgiR0xfT0VTX3BhY2tlZF9kZXB0
aF9zdGVuY2lsIik7CisgICAgICAgIG1faXNHTEVTMk5QT1RTdHJpY3QgPSAhbV9jb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkuaXNFbmFibGVkKCJHTF9PRVNfdGV4dHVyZV9ucG90Iik7CisgICAgICAg
IG1faXNEZXB0aFN0ZW5jaWxTdXBwb3J0ZWQgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5p
c0VuYWJsZWQoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpOwogICAgIH0gZWxzZSB7Ci0g
ICAgICAgIG1faXNHTEVTMk5QT1RTdHJpY3QgPSAhbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkt
PmlzRW5hYmxlZCgiR0xfQVJCX3RleHR1cmVfbm9uX3Bvd2VyX29mX3R3byIpOwotICAgICAgICBt
X2lzRGVwdGhTdGVuY2lsU3VwcG9ydGVkID0gbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmlz
RW5hYmxlZCgiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgICAgIG1faXNHTEVT
Mk5QT1RTdHJpY3QgPSAhbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuaXNFbmFibGVkKCJHTF9B
UkJfdGV4dHVyZV9ub25fcG93ZXJfb2ZfdHdvIik7CisgICAgICAgIG1faXNEZXB0aFN0ZW5jaWxT
dXBwb3J0ZWQgPSBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5pc0VuYWJsZWQoIkdMX0VYVF9w
YWNrZWRfZGVwdGhfc3RlbmNpbCIpOwogICAgIH0KLSAgICBtX2lzUm9idXN0bmVzc0VYVFN1cHBv
cnRlZCA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5pc0VuYWJsZWQoIkdMX0VYVF9yb2J1
c3RuZXNzIik7CisgICAgbV9pc1JvYnVzdG5lc3NFWFRTdXBwb3J0ZWQgPSBtX2NvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS5pc0VuYWJsZWQoIkdMX0VYVF9yb2J1c3RuZXNzIik7CiB9CiAKIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YWRkQ29tcHJlc3NlZFRleHR1cmVGb3JtYXQoR0Mz
RGVudW0gZm9ybWF0KQpAQCAtODk0LDcgKzg5NCw3IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6Y2hlY2tPYmplY3RUb0JlQm91bmQoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBX
CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGlmIChvYmplY3QpIHsKLSAgICAgICAgaWYgKCFvYmplY3QtPnZhbGlkYXRlKGNvbnRl
eHRHcm91cCgpLCB0aGlzKSkgeworICAgICAgICBpZiAoIW9iamVjdC0+dmFsaWRhdGUoY29udGV4
dEdyb3VwKCksICp0aGlzKSkgewogICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhp
Y3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5jdGlvbk5hbWUsICJvYmplY3Qgbm90
IGZyb20gdGhpcyBjb250ZXh0Iik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IH0KQEAgLTE0MDAsNyArMTQwMCw3IEBAIFJlZlB0cjxXZWJHTEJ1ZmZlcj4gV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6Y3JlYXRlQnVmZmVyKCkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9y
UGVuZGluZygpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvIGJ1ZmZlciA9IFdl
YkdMQnVmZmVyOjpjcmVhdGUodGhpcyk7CisgICAgYXV0byBidWZmZXIgPSBXZWJHTEJ1ZmZlcjo6
Y3JlYXRlKCp0aGlzKTsKICAgICBhZGRTaGFyZWRPYmplY3QoYnVmZmVyLnB0cigpKTsKICAgICBy
ZXR1cm4gV1RGTW92ZShidWZmZXIpOwogfQpAQCAtMTQwOSw3ICsxNDA5LDcgQEAgUmVmUHRyPFdl
YkdMRnJhbWVidWZmZXI+IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmNyZWF0ZUZyYW1lYnVm
ZmVyKCkKIHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICBhdXRvIGJ1ZmZlciA9IFdlYkdMRnJhbWVidWZmZXI6OmNyZWF0ZSh0
aGlzKTsKKyAgICBhdXRvIGJ1ZmZlciA9IFdlYkdMRnJhbWVidWZmZXI6OmNyZWF0ZSgqdGhpcyk7
CiAgICAgYWRkQ29udGV4dE9iamVjdChidWZmZXIucHRyKCkpOwogICAgIHJldHVybiBXVEZNb3Zl
KGJ1ZmZlcik7CiB9CkBAIC0xNDE4LDcgKzE0MTgsNyBAQCBSZWZQdHI8V2ViR0xUZXh0dXJlPiBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGVUZXh0dXJlKCkKIHsKICAgICBpZiAoaXND
b250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRv
IHRleHR1cmUgPSBXZWJHTFRleHR1cmU6OmNyZWF0ZSh0aGlzKTsKKyAgICBhdXRvIHRleHR1cmUg
PSBXZWJHTFRleHR1cmU6OmNyZWF0ZSgqdGhpcyk7CiAgICAgYWRkU2hhcmVkT2JqZWN0KHRleHR1
cmUucHRyKCkpOwogICAgIHJldHVybiBXVEZNb3ZlKHRleHR1cmUpOwogfQpAQCAtMTQyNyw3ICsx
NDI3LDcgQEAgUmVmUHRyPFdlYkdMUHJvZ3JhbT4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
Y3JlYXRlUHJvZ3JhbSgpCiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byBwcm9ncmFtID0gV2ViR0xQcm9ncmFtOjpj
cmVhdGUodGhpcyk7CisgICAgYXV0byBwcm9ncmFtID0gV2ViR0xQcm9ncmFtOjpjcmVhdGUoKnRo
aXMpOwogICAgIGFkZFNoYXJlZE9iamVjdChwcm9ncmFtLnB0cigpKTsKICAgICByZXR1cm4gV1RG
TW92ZShwcm9ncmFtKTsKIH0KQEAgLTE0MzYsNyArMTQzNiw3IEBAIFJlZlB0cjxXZWJHTFJlbmRl
cmJ1ZmZlcj4gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Y3JlYXRlUmVuZGVyYnVmZmVyKCkK
IHsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICBhdXRvIGJ1ZmZlciA9IFdlYkdMUmVuZGVyYnVmZmVyOjpjcmVhdGUodGhpcyk7
CisgICAgYXV0byBidWZmZXIgPSBXZWJHTFJlbmRlcmJ1ZmZlcjo6Y3JlYXRlKCp0aGlzKTsKICAg
ICBhZGRTaGFyZWRPYmplY3QoYnVmZmVyLnB0cigpKTsKICAgICByZXR1cm4gV1RGTW92ZShidWZm
ZXIpOwogfQpAQCAtMTQ1MCw3ICsxNDUwLDcgQEAgUmVmUHRyPFdlYkdMU2hhZGVyPiBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpjcmVhdGVTaGFkZXIoR0MzRGVudW0gdHlwZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0byBzaGFkZXIgPSBXZWJHTFNoYWRlcjo6
Y3JlYXRlKHRoaXMsIHR5cGUpOworICAgIGF1dG8gc2hhZGVyID0gV2ViR0xTaGFkZXI6OmNyZWF0
ZSgqdGhpcywgdHlwZSk7CiAgICAgYWRkU2hhcmVkT2JqZWN0KHNoYWRlci5wdHIoKSk7CiAgICAg
cmV0dXJuIFdURk1vdmUoc2hhZGVyKTsKIH0KQEAgLTE0NjYsNyArMTQ2Niw3IEBAIGJvb2wgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGVsZXRlT2JqZWN0KFdlYkdMT2JqZWN0KiBvYmplY3Qp
CiB7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhb2JqZWN0KQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFvYmplY3QtPnZhbGlkYXRlKGNvbnRleHRHcm91cCgp
LCB0aGlzKSkgeworICAgIGlmICghb2JqZWN0LT52YWxpZGF0ZShjb250ZXh0R3JvdXAoKSwgKnRo
aXMpKSB7CiAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZB
TElEX09QRVJBVElPTiwgImRlbGV0ZSIsICJvYmplY3QgZG9lcyBub3QgYmVsb25nIHRvIHRoaXMg
Y29udGV4dCIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMTc4OCw3ICsxNzg4
LDcgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZVdlYkdMT2JqZWN0
KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgV2UKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3Io
R3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwgIm5vIG9iamVj
dCBvciBvYmplY3QgZGVsZXRlZCIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAg
IGlmICghb2JqZWN0LT52YWxpZGF0ZShjb250ZXh0R3JvdXAoKSwgdGhpcykpIHsKKyAgICBpZiAo
IW9iamVjdC0+dmFsaWRhdGUoY29udGV4dEdyb3VwKCksICp0aGlzKSkgewogICAgICAgICBzeW50
aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0
aW9uTmFtZSwgIm9iamVjdCBkb2VzIG5vdCBiZWxvbmcgdG8gdGhpcyBjb250ZXh0Iik7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0yMDM2LDcgKzIwMzYsNyBAQCB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdDM0RlbnVtIHRh
cmdldCwgR0MzRGVudQogICAgICAgICBzeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQz
RDo6SU5WQUxJRF9FTlVNLCAiZnJhbWVidWZmZXJSZW5kZXJidWZmZXIiLCAiaW52YWxpZCB0YXJn
ZXQiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoYnVmZmVyICYmICFidWZmZXIt
PnZhbGlkYXRlKGNvbnRleHRHcm91cCgpLCB0aGlzKSkgeworICAgIGlmIChidWZmZXIgJiYgIWJ1
ZmZlci0+dmFsaWRhdGUoY29udGV4dEdyb3VwKCksICp0aGlzKSkgewogICAgICAgICBzeW50aGVz
aXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04sICJmcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlciIsICJubyBidWZmZXIgb3IgYnVmZmVyIG5vdCBmcm9tIHRoaXMgY29u
dGV4dCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjA2OCw3ICsyMDY4LDcgQEAgdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpmcmFtZWJ1ZmZlclRleHR1cmUyRChHQzNEZW51
bSB0YXJnZXQsIEdDM0RlbnVtIGEKICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3ND
b250ZXh0M0Q6OklOVkFMSURfVkFMVUUsICJmcmFtZWJ1ZmZlclRleHR1cmUyRCIsICJsZXZlbCBu
b3QgMCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmICh0ZXh0dXJlICYmICF0ZXh0
dXJlLT52YWxpZGF0ZShjb250ZXh0R3JvdXAoKSwgdGhpcykpIHsKKyAgICBpZiAodGV4dHVyZSAm
JiAhdGV4dHVyZS0+dmFsaWRhdGUoY29udGV4dEdyb3VwKCksICp0aGlzKSkgewogICAgICAgICBz
eW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04sICJm
cmFtZWJ1ZmZlclRleHR1cmUyRCIsICJubyB0ZXh0dXJlIG9yIHRleHR1cmUgbm90IGZyb20gdGhp
cyBjb250ZXh0Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yNTQ3LDcgKzI1NDcsNyBA
QCBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VW5pZm9ybShXZWJH
TFByb2dyYW0qIHByb2dyYW0sIGNvbnN0CiAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RkxP
QVQ6IHsKICAgICAgICAgR0MzRGZsb2F0IHZhbHVlWzE2XSA9IHswfTsKICAgICAgICAgaWYgKG1f
aXNSb2J1c3RuZXNzRVhUU3VwcG9ydGVkKQotICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCktPmdldG5Vbmlmb3JtZnZFWFQob2JqZWN0T3JaZXJvKHByb2dyYW0pLCBsb2NhdGlv
biwgMTYgKiBzaXplb2YoR0MzRGZsb2F0KSwgdmFsdWUpOworICAgICAgICAgICAgbV9jb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkuZ2V0blVuaWZvcm1mdkVYVChvYmplY3RPclplcm8ocHJvZ3JhbSks
IGxvY2F0aW9uLCAxNiAqIHNpemVvZihHQzNEZmxvYXQpLCB2YWx1ZSk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybWZ2KG9iamVjdE9yWmVybyhwcm9ncmFt
KSwgbG9jYXRpb24sIHZhbHVlKTsKICAgICAgICAgaWYgKGxlbmd0aCA9PSAxKQpAQCAtMjU1Nyw3
ICsyNTU3LDcgQEAgV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmdldFVu
aWZvcm0oV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBjb25zdAogICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0M0Q6OklOVDogewogICAgICAgICBHQzNEaW50IHZhbHVlWzRdID0gezB9OwogICAgICAgICBp
ZiAobV9pc1JvYnVzdG5lc3NFWFRTdXBwb3J0ZWQpCi0gICAgICAgICAgICBtX2NvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS0+Z2V0blVuaWZvcm1pdkVYVChvYmplY3RPclplcm8ocHJvZ3JhbSksIGxv
Y2F0aW9uLCA0ICogc2l6ZW9mKEdDM0RpbnQpLCB2YWx1ZSk7CisgICAgICAgICAgICBtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5nZXRuVW5pZm9ybWl2RVhUKG9iamVjdE9yWmVybyhwcm9ncmFt
KSwgbG9jYXRpb24sIDQgKiBzaXplb2YoR0MzRGludCksIHZhbHVlKTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRVbmlmb3JtaXYob2JqZWN0T3JaZXJvKHByb2dyYW0p
LCBsb2NhdGlvbiwgdmFsdWUpOwogICAgICAgICBpZiAobGVuZ3RoID09IDEpCkBAIC0yNTY3LDcg
KzI1NjcsNyBAQCBXZWJHTEdldEluZm8gV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6Z2V0VW5p
Zm9ybShXZWJHTFByb2dyYW0qIHByb2dyYW0sIGNvbnN0CiAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6Qk9PTDogewogICAgICAgICBHQzNEaW50IHZhbHVlWzRdID0gezB9OwogICAgICAgICBp
ZiAobV9pc1JvYnVzdG5lc3NFWFRTdXBwb3J0ZWQpCi0gICAgICAgICAgICBtX2NvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS0+Z2V0blVuaWZvcm1pdkVYVChvYmplY3RPclplcm8ocHJvZ3JhbSksIGxv
Y2F0aW9uLCA0ICogc2l6ZW9mKEdDM0RpbnQpLCB2YWx1ZSk7CisgICAgICAgICAgICBtX2NvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5nZXRuVW5pZm9ybWl2RVhUKG9iamVjdE9yWmVybyhwcm9ncmFt
KSwgbG9jYXRpb24sIDQgKiBzaXplb2YoR0MzRGludCksIHZhbHVlKTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRVbmlmb3JtaXYob2JqZWN0T3JaZXJvKHByb2dyYW0p
LCBsb2NhdGlvbiwgdmFsdWUpOwogICAgICAgICBpZiAobGVuZ3RoID4gMSkgewpAQCAtMzE1MCw3
ICszMTUwLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpyZWFkUGl4ZWxzKEdD
M0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgKICAgICB2b2lkKiBkYXRhID0gcGl4
ZWxzLmJhc2VBZGRyZXNzKCk7CiAKICAgICBpZiAobV9pc1JvYnVzdG5lc3NFWFRTdXBwb3J0ZWQp
Ci0gICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5yZWFkblBpeGVsc0VYVCh4LCB5
LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVscy5ieXRlTGVuZ3RoKCksIGRhdGEp
OworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5yZWFkblBpeGVsc0VYVCh4LCB5
LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVscy5ieXRlTGVuZ3RoKCksIGRhdGEp
OwogICAgIGVsc2UKICAgICAgICAgbV9jb250ZXh0LT5yZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBo
ZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0YSk7CiB9CkBAIC00NjYwLDcgKzQ2NjAsNyBAQCB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6Omxvc2VDb250ZXh0SW1wbChXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpMb3N0QwogICAgICAgICAvLyBJbmZvcm0gdGhlIGVtYmVkZGVyIHRoYXQg
YSBsb3N0IGNvbnRleHQgd2FzIHJlY2VpdmVkLiBJbiByZXNwb25zZSwgdGhlIGVtYmVkZGVyIG1p
Z2h0CiAgICAgICAgIC8vIGRlY2lkZSB0byB0YWtlIGFjdGlvbiBzdWNoIGFzIGFza2luZyB0aGUg
dXNlciBmb3IgcGVybWlzc2lvbiB0byB1c2UgV2ViR0wgYWdhaW4uCiAgICAgICAgIGlmIChGcmFt
ZSogZnJhbWUgPSBjYW52YXMoKS5kb2N1bWVudCgpLmZyYW1lKCkpCi0gICAgICAgICAgICBmcmFt
ZS0+bG9hZGVyKCkuY2xpZW50KCkuZGlkTG9zZVdlYkdMQ29udGV4dChtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS0+Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpKTsKKyAgICAgICAgICAgIGZy
YW1lLT5sb2FkZXIoKS5jbGllbnQoKS5kaWRMb3NlV2ViR0xDb250ZXh0KG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSk7CiAgICAgfQogCiAgICAg
ZGV0YWNoQW5kUmVtb3ZlQWxsT2JqZWN0cygpOwpAQCAtNTY0OCw3ICs1NjQ4LDcgQEAgdm9pZCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjptYXliZVJlc3RvcmVDb250ZXh0KCkKICAgICBpZiAo
IW1fcmVzdG9yZUFsbG93ZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGludCBjb250ZXh0TG9z
dFJlYXNvbiA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5nZXRHcmFwaGljc1Jlc2V0U3Rh
dHVzQVJCKCk7CisgICAgaW50IGNvbnRleHRMb3N0UmVhc29uID0gbV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkuZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpOwogCiAgICAgc3dpdGNoIChjb250
ZXh0TG9zdFJlYXNvbikgewogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6Ok5PX0VSUk9SOgpA
QCAtNTg2Nyw3ICs1ODY3LDcgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzdXBw
b3J0c0RyYXdCdWZmZXJzKCkKIHsKICAgICBpZiAoIW1fZHJhd0J1ZmZlcnNXZWJHTFJlcXVpcmVt
ZW50c0NoZWNrZWQpIHsKICAgICAgICAgbV9kcmF3QnVmZmVyc1dlYkdMUmVxdWlyZW1lbnRzQ2hl
Y2tlZCA9IHRydWU7Ci0gICAgICAgIG1fZHJhd0J1ZmZlcnNTdXBwb3J0ZWQgPSBXZWJHTERyYXdC
dWZmZXJzOjpzdXBwb3J0ZWQodGhpcyk7CisgICAgICAgIG1fZHJhd0J1ZmZlcnNTdXBwb3J0ZWQg
PSBXZWJHTERyYXdCdWZmZXJzOjpzdXBwb3J0ZWQoKnRoaXMpOwogICAgIH0KICAgICByZXR1cm4g
bV9kcmF3QnVmZmVyc1N1cHBvcnRlZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMU2FtcGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFNhbXBsZXIuY3BwCmluZGV4IDc2OWZkNGUyNGJiMWZkOGRkNzUyNTI4MzFlMjBkOTM4YTk2
OGVkMDIuLjBjYTc5NWI4YmYwMjdkNjJiZmVlZWE1Y2U1NDY0YzM2MGRkNDQxODIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2FtcGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTYW1wbGVyLmNwcApAQCAtMzMsNyArMzMsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCi1SZWY8V2ViR0xTYW1wbGVyPiBXZWJHTFNh
bXBsZXI6OmNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjdHgpCitSZWY8V2ViR0xT
YW1wbGVyPiBXZWJHTFNhbXBsZXI6OmNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBj
dHgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR0xTYW1wbGVyKGN0eCkpOwogfQpA
QCAtNDMsNyArNDMsNyBAQCBXZWJHTFNhbXBsZXI6On5XZWJHTFNhbXBsZXIoKQogICAgIGRlbGV0
ZU9iamVjdCgwKTsKIH0KIAotV2ViR0xTYW1wbGVyOjpXZWJHTFNhbXBsZXIoV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSogY3R4KQorV2ViR0xTYW1wbGVyOjpXZWJHTFNhbXBsZXIoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSYgY3R4KQogICAgIDogV2ViR0xTaGFyZWRPYmplY3QoY3R4KQogewog
ICAgIC8vIEZJWE1FOiBDYWxsIGNyZWF0ZVNhbXBsZXIgZnJvbSBHcmFwaGljc0NvbnRleHQzRC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2FtcGxlci5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTYW1wbGVyLmgKaW5kZXggMGI0YTFlZjk5
YjZlOWI4NDFkNTcyNTFkMTkzNzRhZmEwOTlkMTVjYS4uYmQ5YzBlYWRkMDNhNzUyOTAzY2RjZWRk
M2U5NmVjZmFiMjE4MTJjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xTYW1wbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTYW1w
bGVyLmgKQEAgLTMzLDEwICszMywxMCBAQCBjbGFzcyBXZWJHTFNhbXBsZXIgZmluYWwgOiBwdWJs
aWMgV2ViR0xTaGFyZWRPYmplY3QgewogcHVibGljOgogICAgIHZpcnR1YWwgfldlYkdMU2FtcGxl
cigpOwogCi0gICAgc3RhdGljIFJlZjxXZWJHTFNhbXBsZXI+IGNyZWF0ZShXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlKik7CisgICAgc3RhdGljIFJlZjxXZWJHTFNhbXBsZXI+IGNyZWF0ZShXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CiAKIHByb3RlY3RlZDoKLSAgICBXZWJHTFNhbXBsZXIo
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOworICAgIFdlYkdMU2FtcGxlcihXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlJik7CiAKICAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoR3JhcGhpY3ND
b250ZXh0M0QqLCBQbGF0Zm9ybTNET2JqZWN0KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xTaGFkZXIuY3BwCmluZGV4IDE2ZmY2ZDVjODU4YTc2MTU3ODIxZjli
OTRjYWMxZGU3NDI2ZmUyYzkuLjdmYWVkMjQwODAzNGY4YmY4MGRjNzgxZTAyZTZlOWU0YzE3NDZj
OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRlci5jcHAKQEAgLTM0
LDE4ICszNCwxOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxXZWJHTFNoYWRlcj4g
V2ViR0xTaGFkZXI6OmNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjdHgsIEdDM0Rl
bnVtIHR5cGUpCitSZWY8V2ViR0xTaGFkZXI+IFdlYkdMU2hhZGVyOjpjcmVhdGUoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSYgY3R4LCBHQzNEZW51bSB0eXBlKQogewogICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFdlYkdMU2hhZGVyKGN0eCwgdHlwZSkpOwogfQogCi1XZWJHTFNoYWRlcjo6V2Vi
R0xTaGFkZXIoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY3R4LCBHQzNEZW51bSB0eXBlKQor
V2ViR0xTaGFkZXI6OldlYkdMU2hhZGVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGN0eCwg
R0MzRGVudW0gdHlwZSkKICAgICA6IFdlYkdMU2hhcmVkT2JqZWN0KGN0eCkKICAgICAsIG1fdHlw
ZSh0eXBlKQogICAgICwgbV9zb3VyY2UoZW1wdHlTdHJpbmcoKSkKICAgICAsIG1faXNWYWxpZChm
YWxzZSkKIHsKLSAgICBzZXRPYmplY3QoY3R4LT5ncmFwaGljc0NvbnRleHQzRCgpLT5jcmVhdGVT
aGFkZXIodHlwZSkpOworICAgIHNldE9iamVjdChjdHguZ3JhcGhpY3NDb250ZXh0M0QoKS0+Y3Jl
YXRlU2hhZGVyKHR5cGUpKTsKIH0KIAogV2ViR0xTaGFkZXI6On5XZWJHTFNoYWRlcigpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRlci5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFkZXIuaAppbmRleCA2MzljZWZhNzBhNjhiNTcz
OGQ4ZmYyMWQ4YjY1Y2JiYTgxZDgwYzFhLi42YWY1YzI2OWQ1MGFhZTRkODU1YjdkMDcwZWEzMTg4
ZWU1NDNiOTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNo
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmgKQEAg
LTMzLDcgKzMzLDcgQEAgY2xhc3MgV2ViR0xTaGFkZXIgZmluYWwgOiBwdWJsaWMgV2ViR0xTaGFy
ZWRPYmplY3QgewogcHVibGljOgogICAgIHZpcnR1YWwgfldlYkdMU2hhZGVyKCk7CiAKLSAgICBz
dGF0aWMgUmVmPFdlYkdMU2hhZGVyPiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSos
IEdDM0RlbnVtKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdMU2hhZGVyPiBjcmVhdGUoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSYsIEdDM0RlbnVtKTsKIAogICAgIEdDM0RlbnVtIGdldFR5cGUoKSBj
b25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAgICBjb25zdCBTdHJpbmcmIGdldFNvdXJjZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc291cmNlOyB9CkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldFZhbGlkKGJvb2wgdmFsaWQpIHsgbV9pc1ZhbGlkID0gdmFsaWQ7IH0KIAogcHJpdmF0
ZToKLSAgICBXZWJHTFNoYWRlcihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiwgR0MzRGVudW0p
OworICAgIFdlYkdMU2hhZGVyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmLCBHQzNEZW51bSk7
CiAKICAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoR3JhcGhpY3NDb250ZXh0M0QqLCBQbGF0Zm9y
bTNET2JqZWN0KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xTaGFyZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xTaGFyZWRPYmplY3QuY3BwCmluZGV4IDM0ZjdjZWVhNTJmNjg1YzBlMWM2NmY4NTkyYmMx
MTc1MTY1ZjlkZGMuLjM2ZGMxNWQzYTBlN2U1ZjZhOTcwNjFlNGMzYmQzYzI0MWMxYjg0ZTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhcmVkT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYXJlZE9iamVjdC5jcHAK
QEAgLTM0LDkgKzM0LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XZWJHTFNoYXJlZE9i
amVjdDo6V2ViR0xTaGFyZWRPYmplY3QoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY29udGV4
dCkKLSAgICA6IFdlYkdMT2JqZWN0KGNvbnRleHQpLAotICAgICAgbV9jb250ZXh0R3JvdXAoY29u
dGV4dC0+Y29udGV4dEdyb3VwKCkpCitXZWJHTFNoYXJlZE9iamVjdDo6V2ViR0xTaGFyZWRPYmpl
Y3QoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCkKKyAgICA6IFdlYkdMT2JqZWN0
KGNvbnRleHQpCisgICAgLCBtX2NvbnRleHRHcm91cChjb250ZXh0LmNvbnRleHRHcm91cCgpKQog
ewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYXJl
ZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFyZWRPYmplY3Qu
aAppbmRleCA5NDY3ZmZhMzMyZDcwZWY4ZmViODI5NzFiODA5ZDQyNDczMzU3ZTU4Li5hYmU0ODAz
MzM3MmM5NTZjYzcxMzBlYjdmN2JmZmZkY2QxYTlmNTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYXJlZE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMU2hhcmVkT2JqZWN0LmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgYm9vbCBpc1RyYW5zZm9ybUZlZWRiYWNrKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNWZXJ0ZXhBcnJheU9iamVjdCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiAKLSAgICBib29sIHZhbGlkYXRlKGNvbnN0IFdlYkdMQ29udGV4dEdy
b3VwKiBjb250ZXh0R3JvdXAsIGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKSBjb25z
dCBvdmVycmlkZQorICAgIGJvb2wgdmFsaWRhdGUoY29uc3QgV2ViR0xDb250ZXh0R3JvdXAqIGNv
bnRleHRHcm91cCwgY29uc3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpIGNvbnN0IG92ZXJy
aWRlCiAgICAgewogICAgICAgICByZXR1cm4gY29udGV4dEdyb3VwID09IG1fY29udGV4dEdyb3Vw
OwogICAgIH0KQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGV0YWNoQ29udGV4
dEdyb3VwKCk7CiAKIHByb3RlY3RlZDoKLSAgICBXZWJHTFNoYXJlZE9iamVjdChXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlKik7CisgICAgV2ViR0xTaGFyZWRPYmplY3QoV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZSYpOwogCiAgICAgYm9vbCBoYXNHcm91cE9yQ29udGV4dCgpIGNvbnN0IG92ZXJy
aWRlCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xT
eW5jLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5jcHAKaW5kZXgg
MmJkMmNlODJhODcxNTA0YjY5MzlmNTY4YWY0Yzk1Y2RhMDIyNzZhYy4uNjM2MGZiYTRlZTMwYzM3
YjJhODZkZWVjMmJkYzMyYTk4MGQ4NzE5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xTeW5jLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFN5bmMuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAKLVJlZjxXZWJHTFN5bmM+IFdlYkdMU3luYzo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UqIGN0eCkKK1JlZjxXZWJHTFN5bmM+IFdlYkdMU3luYzo6Y3JlYXRlKFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UmIGN0eCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHTFN5
bmMoY3R4KSk7CiB9CkBAIC00Myw3ICs0Myw3IEBAIFdlYkdMU3luYzo6fldlYkdMU3luYygpCiAg
ICAgZGVsZXRlT2JqZWN0KDApOwogfQogCi1XZWJHTFN5bmM6OldlYkdMU3luYyhXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlKiBjdHgpCitXZWJHTFN5bmM6OldlYkdMU3luYyhXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlJiBjdHgpCiAgICAgOiBXZWJHTFNoYXJlZE9iamVjdChjdHgpCiB7CiAgICAg
Ly8gRklYTUU6IENhbGwgZmVuY2VTeW5jIGZyb20gR3JhcGhpY3NDb250ZXh0M0QuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFN5bmMuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5oCmluZGV4IDdhZDM5OTlmYjAxMDQyOWNiZTM2MzMw
ZmVlZjBlNzgwYzRjNTJiOGEuLmVmNmVjOWRjZDU5NjRmYjQ2ZDIzN2EwMDYzZDRjNTZiMTJjZGE3
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5oCkBAIC0zMywxMCArMzMs
MTAgQEAgY2xhc3MgV2ViR0xTeW5jIGZpbmFsIDogcHVibGljIFdlYkdMU2hhcmVkT2JqZWN0IHsK
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJHTFN5bmMoKTsKIAotICAgIHN0YXRpYyBSZWY8V2Vi
R0xTeW5jPiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOworICAgIHN0YXRpYyBS
ZWY8V2ViR0xTeW5jPiBjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogCiBwcm90
ZWN0ZWQ6Ci0gICAgV2ViR0xTeW5jKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBX
ZWJHTFN5bmMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogCiAgICAgdm9pZCBkZWxldGVP
YmplY3RJbXBsKEdyYXBoaWNzQ29udGV4dDNEKiwgUGxhdGZvcm0zRE9iamVjdCkgb3ZlcnJpZGU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRleHR1cmUuY3BwCmluZGV4IGJk
ZmNlYWE4NTI1MjJlNzk0ZWY2ZWZiNWIyM2ZkZDE2NWU0ZDE0ODguLmM0ZDU3MjE0MGRiOTliNjk3
NjBiMjNkYzBlODU5MWZhNDk4Yjg0Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xUZXh0dXJlLmNwcApAQCAtMzUsMTIgKzM1LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotUmVmPFdlYkdMVGV4dHVyZT4gV2ViR0xUZXh0dXJlOjpjcmVhdGUoV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSogY3R4KQorUmVmPFdlYkdMVGV4dHVyZT4gV2ViR0xUZXh0dXJlOjpjcmVh
dGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY3R4KQogewogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFdlYkdMVGV4dHVyZShjdHgpKTsKIH0KIAotV2ViR0xUZXh0dXJlOjpXZWJHTFRleHR1
cmUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY3R4KQorV2ViR0xUZXh0dXJlOjpXZWJHTFRl
eHR1cmUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY3R4KQogICAgIDogV2ViR0xTaGFyZWRP
YmplY3QoY3R4KQogICAgICwgbV90YXJnZXQoMCkKICAgICAsIG1fbWluRmlsdGVyKEdyYXBoaWNz
Q29udGV4dDNEOjpORUFSRVNUX01JUE1BUF9MSU5FQVIpCkBAIC01NCw3ICs1NCw3IEBAIFdlYkdM
VGV4dHVyZTo6V2ViR0xUZXh0dXJlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGN0eCkKICAg
ICAsIG1faXNGbG9hdFR5cGUoZmFsc2UpCiAgICAgLCBtX2lzSGFsZkZsb2F0VHlwZShmYWxzZSkK
IHsKLSAgICBzZXRPYmplY3QoY3R4LT5ncmFwaGljc0NvbnRleHQzRCgpLT5jcmVhdGVUZXh0dXJl
KCkpOworICAgIHNldE9iamVjdChjdHguZ3JhcGhpY3NDb250ZXh0M0QoKS0+Y3JlYXRlVGV4dHVy
ZSgpKTsKIH0KIAogV2ViR0xUZXh0dXJlOjp+V2ViR0xUZXh0dXJlKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmgKaW5kZXggNmNhMzg4OTc2NmMwYzAzZTZlNTQ1MTAw
YTY4NTc1ZmJlOWU3MTkxNi4uZGQ5ODY0YzEzZjA0M2FiMDBmYjRlZGRkYTg0YzQ2MzgxOTliYjI5
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUZXh0dXJlLmgKQEAgLTQxLDcg
KzQxLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+V2ViR0xUZXh0dXJlKCk7CiAKLSAgICBz
dGF0aWMgUmVmPFdlYkdMVGV4dHVyZT4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uq
KTsKKyAgICBzdGF0aWMgUmVmPFdlYkdMVGV4dHVyZT4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UmKTsKIAogICAgIHZvaWQgc2V0VGFyZ2V0KEdDM0RlbnVtIHRhcmdldCwgR0MzRGlu
dCBtYXhMZXZlbCk7CiAgICAgdm9pZCBzZXRQYXJhbWV0ZXJpKEdDM0RlbnVtIHBuYW1lLCBHQzNE
aW50IHBhcmFtKTsKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBHQzNEaW50
IGNvbXB1dGVMZXZlbENvdW50KEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCk7CiAK
IHByaXZhdGU6Ci0gICAgV2ViR0xUZXh0dXJlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsK
KyAgICBXZWJHTFRleHR1cmUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOwogCiAgICAgdm9p
ZCBkZWxldGVPYmplY3RJbXBsKEdyYXBoaWNzQ29udGV4dDNEKiwgUGxhdGZvcm0zRE9iamVjdCkg
b3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
VHJhbnNmb3JtRmVlZGJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xU
cmFuc2Zvcm1GZWVkYmFjay5jcHAKaW5kZXggZjM2NWQ1MjNmYThhYTRmNDcxMzc0MWY4NGU5ZDU0
OWYwNmVkNTE1Ny4uMzUzZTRiYWMxYTI5MWFlODA3NTgxNWNjZDc0ZDI5ZmRlOWE5MzZlZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUcmFuc2Zvcm1GZWVkYmFj
ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xUcmFuc2Zvcm1GZWVk
YmFjay5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAot
UmVmPFdlYkdMVHJhbnNmb3JtRmVlZGJhY2s+IFdlYkdMVHJhbnNmb3JtRmVlZGJhY2s6OmNyZWF0
ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjdHgpCitSZWY8V2ViR0xUcmFuc2Zvcm1GZWVk
YmFjaz4gV2ViR0xUcmFuc2Zvcm1GZWVkYmFjazo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UmIGN0eCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHTFRyYW5zZm9ybUZl
ZWRiYWNrKGN0eCkpOwogfQpAQCAtNDMsNyArNDMsNyBAQCBXZWJHTFRyYW5zZm9ybUZlZWRiYWNr
Ojp+V2ViR0xUcmFuc2Zvcm1GZWVkYmFjaygpCiAgICAgZGVsZXRlT2JqZWN0KDApOwogfQogCi1X
ZWJHTFRyYW5zZm9ybUZlZWRiYWNrOjpXZWJHTFRyYW5zZm9ybUZlZWRiYWNrKFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UqIGN0eCkKK1dlYkdMVHJhbnNmb3JtRmVlZGJhY2s6OldlYkdMVHJhbnNm
b3JtRmVlZGJhY2soV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY3R4KQogICAgIDogV2ViR0xT
aGFyZWRPYmplY3QoY3R4KQogewogICAgIC8vIEZJWE1FOiBDYWxsIGNyZWF0ZVRyYW5zZm9ybUZl
ZWRiYWNrIGZyb20gR3JhcGhpY3NDb250ZXh0M0QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmgKaW5kZXggMjZkNDA0NGU4ZDM3NzI5
ZTIxNWY3NTFkOGZhNDJkM2QyZDgwZjQ1ZS4uNjljZjhlN2JiNTQxOGVhYTllNDU2OTIxMTQwOGY0
NzZiMjZhNjc4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xU
cmFuc2Zvcm1GZWVkYmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
VHJhbnNmb3JtRmVlZGJhY2suaApAQCAtMzMsMTAgKzMzLDEwIEBAIGNsYXNzIFdlYkdMVHJhbnNm
b3JtRmVlZGJhY2sgZmluYWwgOiBwdWJsaWMgV2ViR0xTaGFyZWRPYmplY3QgewogcHVibGljOgog
ICAgIHZpcnR1YWwgfldlYkdMVHJhbnNmb3JtRmVlZGJhY2soKTsKIAotICAgIHN0YXRpYyBSZWY8
V2ViR0xUcmFuc2Zvcm1GZWVkYmFjaz4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uq
KTsKKyAgICBzdGF0aWMgUmVmPFdlYkdMVHJhbnNmb3JtRmVlZGJhY2s+IGNyZWF0ZShXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlJik7CiAKIHByb3RlY3RlZDoKLSAgICBXZWJHTFRyYW5zZm9ybUZl
ZWRiYWNrKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKKyAgICBXZWJHTFRyYW5zZm9ybUZl
ZWRiYWNrKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKIAogICAgIHZvaWQgZGVsZXRlT2Jq
ZWN0SW1wbChHcmFwaGljc0NvbnRleHQzRCosIFBsYXRmb3JtM0RPYmplY3QpIG92ZXJyaWRlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlP
YmplY3QuY3BwCmluZGV4IDZlODE1ZWYyMzVkZTUyYjBkYjAwNGY2NTg2MDI0M2MwMTA5NGM1Njku
LjdmYTY5YzlhNDk0ZGJlZWE5ZGJlYmY4OWU4NWY0M2Y5Y2ZkMDI4NDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3QuY3BwCkBA
IC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKLVJlZjxXZWJHTFZl
cnRleEFycmF5T2JqZWN0PiBXZWJHTFZlcnRleEFycmF5T2JqZWN0OjpjcmVhdGUoV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSogY3R4LCBWQU9UeXBlIHR5cGUpCitSZWY8V2ViR0xWZXJ0ZXhBcnJh
eU9iamVjdD4gV2ViR0xWZXJ0ZXhBcnJheU9iamVjdDo6Y3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UmIGN0eCwgVkFPVHlwZSB0eXBlKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFdlYkdMVmVydGV4QXJyYXlPYmplY3QoY3R4LCB0eXBlKSk7CiB9CkBAIC00Myw3ICs0Myw3IEBA
IFdlYkdMVmVydGV4QXJyYXlPYmplY3Q6On5XZWJHTFZlcnRleEFycmF5T2JqZWN0KCkKICAgICBk
ZWxldGVPYmplY3QoMCk7CiB9CiAKLVdlYkdMVmVydGV4QXJyYXlPYmplY3Q6OldlYkdMVmVydGV4
QXJyYXlPYmplY3QoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY3R4LCBWQU9UeXBlIHR5cGUp
CitXZWJHTFZlcnRleEFycmF5T2JqZWN0OjpXZWJHTFZlcnRleEFycmF5T2JqZWN0KFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UmIGN0eCwgVkFPVHlwZSB0eXBlKQogICAgIDogV2ViR0xWZXJ0ZXhB
cnJheU9iamVjdEJhc2UoY3R4LCB0eXBlKQogewogICAgIHN3aXRjaCAobV90eXBlKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0LmgK
aW5kZXggYWU0ZDgzMjZkNmE5MTIzOTVmZDdkOTE3NDM5MmY4MWM3ZjNhNDNhMy4uNWI0OWM3MDhh
NDYyNTRkZTU5MGUxYzA2ZGNjOTg2MmE2NjRjMzE0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3QuaApAQCAtMzcsMTAgKzM3LDEw
IEBAIGNsYXNzIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ7CiAKIGNsYXNzIFdlYkdMVmVydGV4QXJy
YXlPYmplY3QgZmluYWwgOiBwdWJsaWMgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJhc2UgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8V2ViR0xWZXJ0ZXhBcnJheU9iamVjdD4gY3JlYXRlKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UqLCBWQU9UeXBlKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdMVmVy
dGV4QXJyYXlPYmplY3Q+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiwgVkFPVHlw
ZSk7CiAgICAgdmlydHVhbCB+V2ViR0xWZXJ0ZXhBcnJheU9iamVjdCgpOwogcHJpdmF0ZToKLSAg
ICBXZWJHTFZlcnRleEFycmF5T2JqZWN0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqLCBWQU9U
eXBlKTsKKyAgICBXZWJHTFZlcnRleEFycmF5T2JqZWN0KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UmLCBWQU9UeXBlKTsKICAgICBib29sIGlzVHJhbnNmb3JtRmVlZGJhY2soKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9CiAgICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKEdyYXBoaWNzQ29udGV4dDNE
KiwgUGxhdGZvcm0zRE9iamVjdCkgb3ZlcnJpZGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJhc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJhc2UuY3BwCmluZGV4
IGYzOWMwZGRkMjI3NzlkMDVmMTYwZDE5Nzk1NjMxOGE2MDBlYjkzY2MuLjY5NjQ5YzYyZjZlMWRi
ZWYyZjllZGE2MTdjNDI0MjRkZjczZjE3NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZS5jcHAKQEAgLTMyLDEz
ICszMiwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdlYkdMVmVydGV4QXJyYXlPYmpl
Y3RCYXNlOjpXZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZShXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlKiBjdHgsIFZBT1R5cGUgdHlwZSkKK1dlYkdMVmVydGV4QXJyYXlPYmplY3RCYXNlOjpXZWJH
TFZlcnRleEFycmF5T2JqZWN0QmFzZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiBjdHgsIFZB
T1R5cGUgdHlwZSkKICAgICA6IFdlYkdMQ29udGV4dE9iamVjdChjdHgpCiAgICAgLCBtX3R5cGUo
dHlwZSkKICAgICAsIG1faGFzRXZlckJlZW5Cb3VuZChmYWxzZSkKICAgICAsIG1fYm91bmRFbGVt
ZW50QXJyYXlCdWZmZXIoMCkKIHsKLSAgICBtX3ZlcnRleEF0dHJpYlN0YXRlLnJlc2l6ZShjdHgt
PmdldE1heFZlcnRleEF0dHJpYnMoKSk7CisgICAgbV92ZXJ0ZXhBdHRyaWJTdGF0ZS5yZXNpemUo
Y3R4LmdldE1heFZlcnRleEF0dHJpYnMoKSk7CiB9CiAKIHZvaWQgV2ViR0xWZXJ0ZXhBcnJheU9i
amVjdEJhc2U6OnNldEVsZW1lbnRBcnJheUJ1ZmZlcihQYXNzUmVmUHRyPFdlYkdMQnVmZmVyPiBi
dWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRl
eEFycmF5T2JqZWN0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0
ZXhBcnJheU9iamVjdEJhc2UuaAppbmRleCA2M2UxZGRiOTIyYjcwNDEyODk5YWVkN2JmZjYyZGYz
OWVmNDIyNjM1Li4zZjA3ZGRlZWFkMWJmOWM3YjdkZjdiMGM2ODhjYzhiZTcyMDczYzE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0
QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlP
YmplY3RCYXNlLmgKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VmVydGV4
QXR0cmliRGl2aXNvcihHQzNEdWludCBpbmRleCwgR0MzRHVpbnQgZGl2aXNvcik7CiAKIHByb3Rl
Y3RlZDoKLSAgICBXZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZShXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlKiwgVkFPVHlwZSk7CisgICAgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJhc2UoV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZSYsIFZBT1R5cGUpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVP
YmplY3RJbXBsKEdyYXBoaWNzQ29udGV4dDNEKiwgUGxhdGZvcm0zRE9iamVjdCkgPSAwOwogICAg
IAogICAgIFZBT1R5cGUgbV90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmNwcAppbmRleCBkMTM1OTUyNTI1OTRm
MzAyZmMxZDQyMmI4Yjk3ZDc3YjBmYjAyMDY1Li41ZjNiNjU1N2E3MGI1Y2I4NDJjMGMyZWE3Nzgx
NzhhZmE2NGMwMWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFZlcnRleEFycmF5T2JqZWN0T0VTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmNwcApAQCAtMzQsMjAgKzM0LDIwIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM+IFdlYkdM
VmVydGV4QXJyYXlPYmplY3RPRVM6OmNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBj
dHgsIFZBT1R5cGUgdHlwZSkKK1JlZjxXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTPiBXZWJHTFZl
cnRleEFycmF5T2JqZWN0T0VTOjpjcmVhdGUoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY3R4
LCBWQU9UeXBlIHR5cGUpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR0xWZXJ0ZXhB
cnJheU9iamVjdE9FUyhjdHgsIHR5cGUpKTsKIH0KIAotV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9F
Uzo6V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBj
dHgsIFZBT1R5cGUgdHlwZSkKK1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OldlYkdMVmVydGV4
QXJyYXlPYmplY3RPRVMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY3R4LCBWQU9UeXBlIHR5
cGUpCiAgICAgOiBXZWJHTFZlcnRleEFycmF5T2JqZWN0QmFzZShjdHgsIHR5cGUpCiB7Ci0gICAg
RXh0ZW5zaW9uczNEKiBleHRlbnNpb25zID0gY29udGV4dCgpLT5ncmFwaGljc0NvbnRleHQzRCgp
LT5nZXRFeHRlbnNpb25zKCk7CisgICAgRXh0ZW5zaW9uczNEJiBleHRlbnNpb25zID0gY29udGV4
dCgpLT5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRFeHRlbnNpb25zKCk7CiAgICAgc3dpdGNoICht
X3R5cGUpIHsKICAgICBjYXNlIFZBT1R5cGVEZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICBk
ZWZhdWx0OgotICAgICAgICBzZXRPYmplY3QoZXh0ZW5zaW9ucy0+Y3JlYXRlVmVydGV4QXJyYXlP
RVMoKSk7CisgICAgICAgIHNldE9iamVjdChleHRlbnNpb25zLmNyZWF0ZVZlcnRleEFycmF5T0VT
KCkpOwogICAgICAgICBicmVhazsKICAgICB9CiB9CkBAIC01OSwxMiArNTksMTIgQEAgV2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdE9FUzo6fldlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMoKQogCiB2b2lk
IFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVM6OmRlbGV0ZU9iamVjdEltcGwoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQzZCwgUGxhdGZvcm0zRE9iamVjdCBvYmplY3QpCiB7Ci0gICAgRXh0ZW5z
aW9uczNEKiBleHRlbnNpb25zID0gY29udGV4dDNkLT5nZXRFeHRlbnNpb25zKCk7CisgICAgRXh0
ZW5zaW9uczNEJiBleHRlbnNpb25zID0gY29udGV4dDNkLT5nZXRFeHRlbnNpb25zKCk7CiAgICAg
c3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFZBT1R5cGVEZWZhdWx0OgogICAgICAgICBicmVh
azsKICAgICBkZWZhdWx0OgotICAgICAgICBleHRlbnNpb25zLT5kZWxldGVWZXJ0ZXhBcnJheU9F
UyhvYmplY3QpOworICAgICAgICBleHRlbnNpb25zLmRlbGV0ZVZlcnRleEFycmF5T0VTKG9iamVj
dCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oCmluZGV4IDlhYjExNTVjNGM3
ODdmNzYwMjQ0YTliM2QwNjFmNGM1ZTUyMTQxODcuLmQwOGQyMjNlMzU3MDY2OTRlOTFjYWU2YWNk
YzhjNGJjYTlmMTY3ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmgKQEAgLTMzLDEwICszMywxMCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMgZmluYWwgOiBw
dWJsaWMgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdEJhc2UgewogcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUz4gY3JlYXRlKFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UqLCBWQU9UeXBlKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdMVmVydGV4QXJyYXlPYmplY3RP
RVM+IGNyZWF0ZShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiwgVkFPVHlwZSk7CiAgICAgdmly
dHVhbCB+V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUygpOwogcHJpdmF0ZToKLSAgICBXZWJHTFZl
cnRleEFycmF5T2JqZWN0T0VTKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqLCBWQU9UeXBlKTsK
KyAgICBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Um
LCBWQU9UeXBlKTsKICAgICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoR3JhcGhpY3NDb250ZXh0M0Qq
LCBQbGF0Zm9ybTNET2JqZWN0KSBvdmVycmlkZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCmluZGV4IDQxMDY2MTc5
MTVkODlkOTYzZWFkNWNhMjA2N2MyZDE2ZGYwZWQwMjcuLmY4ZWE4OGE1ZGZhZDA0YzM4YzM3YWI5
OGUwZTZkYWY1MjAwM2QxZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaApAQCAtMTE4NSw3ICsxMTg1LDcgQEAgcHVibGlj
OgogICAgIC8vIGFsbCBtZXRob2RzIGl0IGNvbnRhaW5zIG1heSBuZWNlc3NhcmlseSBiZSBzdXBw
b3J0ZWQgb24gdGhlCiAgICAgLy8gY3VycmVudCBoYXJkd2FyZS4gTXVzdCBjYWxsIEV4dGVuc2lv
bnMzRDo6c3VwcG9ydHMoKSB0bwogICAgIC8vIGRldGVybWluZSB0aGlzLgotICAgIEV4dGVuc2lv
bnMzRCogZ2V0RXh0ZW5zaW9ucygpOworICAgIEV4dGVuc2lvbnMzRCYgZ2V0RXh0ZW5zaW9ucygp
OwogCiAgICAgSW50U2l6ZSBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpIGNvbnN0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Vm
bC9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCmluZGV4IDY2MGJiMmMyYjM3NDFhNjMwYmIx
OGE5ZWZkZmU5YzQ2NDg1NTFhZDkuLjA0ODQxNDFjZjkxZjQ1YTg0OWZiNzNmYzg1OWUyMDIwMzc2
OTM1ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9H
cmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCkBAIC0xNDgsNyArMTQ4
LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnByZXBhcmVCdWZmZXIoKSBjb25z
dAogICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihFeHRlbnNpb25zM0Q6OkRSQVdfRlJBTUVCVUZG
RVIsIG1fY29udGV4dC0+bV9mYm8pOwogCiAgICAgICAgIC8vIFVzZSBORUFSRVNUIGFzIG5vIHNj
YWxlIGlzIHBlcmZvcm1lZCBkdXJpbmcgdGhlIGJsaXQuCi0gICAgICAgIG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLT5ibGl0RnJhbWVidWZmZXIoMCwgMCwgd2lkdGgsIGhlaWdodCwgMCwgMCwg
d2lkdGgsIGhlaWdodCwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0JVRkZFUl9CSVQsIEdyYXBo
aWNzQ29udGV4dDNEOjpORUFSRVNUKTsKKyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkuYmxpdEZyYW1lYnVmZmVyKDAsIDAsIHdpZHRoLCBoZWlnaHQsIDAsIDAsIHdpZHRoLCBoZWln
aHQsIEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9CVUZGRVJfQklULCBHcmFwaGljc0NvbnRleHQz
RDo6TkVBUkVTVCk7CiAKICAgICAgICAgaWYgKGVuYWJsZVNjaXNzb3JUZXN0KQogICAgICAgICAg
ICAgbV9jb250ZXh0LT5lbmFibGUoR3JhcGhpY3NDb250ZXh0M0Q6OlNDSVNTT1JfVEVTVCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKaW5k
ZXggNzdjZjY4N2M2OGYxZWI0NjUzMjdjNGVhODk2MTBmOWI4NjdhMmM2OC4uYWFkMTNmMzRkNjlj
ZjJmMWRhMmRlYTgzMDZmYzQ1ZDgxYTA1Y2U2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcApAQCAtNjYsNyArNjYsNyBAQCBzdGF0aWMg
dm9pZCBjb252ZXJ0Rm9ybWF0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlOjpG
b3JtYXQgZm9ybWF0LCB1bgogICAgICAgICAqZ2xUeXBlID0gR3JhcGhpY3NDb250ZXh0M0Q6OlVO
U0lHTkVEX0JZVEU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVGV4dHVyZTo6QkdSQTg6Ci0g
ICAgICAgIGlmIChjb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPnN1cHBvcnRzKCJHTF9FWFRfdGV4
dHVyZV9mb3JtYXRfQkdSQTg4ODgiKSkgeworICAgICAgICBpZiAoY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLnN1cHBvcnRzKCJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgiKSkgewogICAg
ICAgICAgICAgKmdsRm9ybWF0ID0gRXh0ZW5zaW9uczNEOjpCR1JBX0VYVDsKICAgICAgICAgICAg
ICpnbFR5cGUgPSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURTsKICAgICAgICAgfSBl
bHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCmluZGV4IDNkMzEwMmQz
ZDY2MGJiZjMxNGM4NTM4OWFlZjVhOTk2NDc5N2IyZmQuLmFlOGJjYTdhZTUxY2UyODcxNjM2ZTFl
YTFiY2E0NjllMTZjNmYwYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNw
cApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZWxlYXNlU2hhZGVy
Q29tcGlsZXIoKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVhZFBpeGVsc0FuZENvbnZlcnRU
b0JHUkFJZk5lY2Vzc2FyeShpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwgdW5z
aWduZWQgY2hhciogcGl4ZWxzKQogewogICAgIC8vIE5WSURJQSBkcml2ZXJzIGhhdmUgYSBidWcg
d2hlcmUgY2FsbGluZyByZWFkUGl4ZWxzIGluIEJHUkEgY2FuIHJldHVybiB0aGUgd3JvbmcgdmFs
dWVzIGZvciB0aGUgYWxwaGEgY2hhbm5lbCB3aGVuIHRoZSBhbHBoYSBpcyBvZmYgZm9yIHRoZSBj
b250ZXh0LgotICAgIGlmICghbV9hdHRycy5hbHBoYSAmJiBnZXRFeHRlbnNpb25zKCktPmlzTlZJ
RElBKCkpIHsKKyAgICBpZiAoIW1fYXR0cnMuYWxwaGEgJiYgZ2V0RXh0ZW5zaW9ucygpLmlzTlZJ
RElBKCkpIHsKICAgICAgICAgOjpnbFJlYWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgR0xf
UkdCQSwgR0xfVU5TSUdORURfQllURSwgcGl4ZWxzKTsKICNpZiBVU0UoQUNDRUxFUkFURSkKICAg
ICAgICAgdkltYWdlX0J1ZmZlciBzcmM7CkBAIC0xMjEsOSArMTIxLDkgQEAgYm9vbCBHcmFwaGlj
c0NvbnRleHQzRDo6cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICAgICAgLy8g
V2UgZG9uJ3QgYWxsb3cgdGhlIGxvZ2ljIHdoZXJlIHN0ZW5jaWwgaXMgcmVxdWlyZWQgYW5kIGRl
cHRoIGlzIG5vdC4KICAgICAgICAgLy8gU2VlIEdyYXBoaWNzQ29udGV4dDNEOjp2YWxpZGF0ZUF0
dHJpYnV0ZXMuCiAKLSAgICAgICAgRXh0ZW5zaW9uczNEKiBleHRlbnNpb25zID0gZ2V0RXh0ZW5z
aW9ucygpOworICAgICAgICBFeHRlbnNpb25zM0QmIGV4dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25z
KCk7CiAgICAgICAgIC8vIFVzZSBhIDI0IGJpdCBkZXB0aCBidWZmZXIgd2hlcmUgd2Uga25vdyB3
ZSBoYXZlIGl0LgotICAgICAgICBpZiAoZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0VYVF9wYWNr
ZWRfZGVwdGhfc3RlbmNpbCIpKQorICAgICAgICBpZiAoZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xf
RVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikpCiAgICAgICAgICAgICBpbnRlcm5hbERlcHRoU3Rl
bmNpbEZvcm1hdCA9IEdMX0RFUFRIMjRfU1RFTkNJTDhfRVhUOwogICAgICAgICBlbHNlCiAjaWYg
UExBVEZPUk0oSU9TKQpAQCAtMzA0LDEyICszMDQsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6Z2V0SW50ZWdlcnYoR0MzRGVudW0gcG5hbWUsIEdDM0RpbnQqIHZhbHVlKQogI2VuZGlmCiAg
ICAgY2FzZSBNQVhfVEVYVFVSRV9TSVpFOgogICAgICAgICA6OmdsR2V0SW50ZWdlcnYoTUFYX1RF
WFRVUkVfU0laRSwgdmFsdWUpOwotICAgICAgICBpZiAoZ2V0RXh0ZW5zaW9ucygpLT5yZXF1aXJl
c1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSkKKyAgICAgICAgaWYgKGdldEV4dGVuc2lv
bnMoKS5yZXF1aXJlc1Jlc3RyaWN0ZWRNYXhpbXVtVGV4dHVyZVNpemUoKSkKICAgICAgICAgICAg
ICp2YWx1ZSA9IHN0ZDo6bWluKDQwOTYsICp2YWx1ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRToKICAgICAgICAgOjpnbEdldEludGVnZXJ2KE1B
WF9DVUJFX01BUF9URVhUVVJFX1NJWkUsIHZhbHVlKTsKLSAgICAgICAgaWYgKGdldEV4dGVuc2lv
bnMoKS0+cmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplKCkpCisgICAgICAgIGlm
IChnZXRFeHRlbnNpb25zKCkucmVxdWlyZXNSZXN0cmljdGVkTWF4aW11bVRleHR1cmVTaXplKCkp
CiAgICAgICAgICAgICAqdmFsdWUgPSBzdGQ6Om1pbigxMDI0LCAqdmFsdWUpOwogICAgICAgICBi
cmVhazsKICAgICBkZWZhdWx0OgpAQCAtNDA3LDExICs0MDcsMTEgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6Y2xlYXJEZXB0aChHQzNEY2xhbXBmIGRlcHRoKQogI2VuZGlmCiB9CiAKLUV4dGVu
c2lvbnMzRCogR3JhcGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lvbnMoKQorRXh0ZW5zaW9uczNE
JiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucygpCiB7CiAgICAgaWYgKCFtX2V4dGVu
c2lvbnMpCiAgICAgICAgIG1fZXh0ZW5zaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9u
czNET3BlbkdMPih0aGlzLCBpc0dMRVMyQ29tcGxpYW50KCkpOwotICAgIHJldHVybiBtX2V4dGVu
c2lvbnMuZ2V0KCk7CisgICAgcmV0dXJuICptX2V4dGVuc2lvbnM7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OnJlYWRQaXhlbHMoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3
aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCB2
b2lkKiBkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5j
cHAKaW5kZXggNTVkNWM2OGRjZTJhMzZhYTAzYWNhODcyOWZlZjRlZjdkNDgxNzZhNC4uMTg2Mzcy
MTk2Y2VjZjMyYjM5Y2ZiZmI3MDRkN2U5YjA1NGIzOTRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29t
bW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCkBAIC0xMzksMjAgKzEzOSwyMCBAQCBQYXNz
UmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlRm9yQ3Vy
cmVudEdMQ29udGV4dCgpCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZhbGlkYXRlRGVwdGhT
dGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikKIHsKLSAgICBF
eHRlbnNpb25zM0QqIGV4dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7CisgICAgRXh0ZW5zaW9u
czNEJiBleHRlbnNpb25zID0gZ2V0RXh0ZW5zaW9ucygpOwogICAgIGlmIChtX2F0dHJzLnN0ZW5j
aWwpIHsKLSAgICAgICAgaWYgKGV4dGVuc2lvbnMtPnN1cHBvcnRzKHBhY2tlZERlcHRoU3RlbmNp
bEV4dGVuc2lvbikpIHsKLSAgICAgICAgICAgIGV4dGVuc2lvbnMtPmVuc3VyZUVuYWJsZWQocGFj
a2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAgICAgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9y
dHMocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKSkgeworICAgICAgICAgICAgZXh0ZW5zaW9u
cy5lbnN1cmVFbmFibGVkKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAgICAgICAg
ICAvLyBGb3JjZSBkZXB0aCBpZiBzdGVuY2lsIGlzIHRydWUuCiAgICAgICAgICAgICBtX2F0dHJz
LmRlcHRoID0gdHJ1ZTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBtX2F0dHJzLnN0ZW5j
aWwgPSBmYWxzZTsKICAgICB9CiAgICAgaWYgKG1fYXR0cnMuYW50aWFsaWFzKSB7Ci0gICAgICAg
IGlmICghZXh0ZW5zaW9ucy0+c3VwcG9ydHMoIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2Ft
cGxlIikgfHwgaXNHTEVTMkNvbXBsaWFudCgpKQorICAgICAgICBpZiAoIWV4dGVuc2lvbnMuc3Vw
cG9ydHMoIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIikgfHwgaXNHTEVTMkNvbXBs
aWFudCgpKQogICAgICAgICAgICAgbV9hdHRycy5hbnRpYWxpYXMgPSBmYWxzZTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgZXh0ZW5zaW9ucy0+ZW5zdXJlRW5hYmxlZCgiR0xfQU5HTEVfZnJh
bWVidWZmZXJfbXVsdGlzYW1wbGUiKTsKKyAgICAgICAgICAgIGV4dGVuc2lvbnMuZW5zdXJlRW5h
YmxlZCgiR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiKTsKICAgICB9CiB9CiAKQEAg
LTE4ODksMTcgKzE4ODksMTcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dGV4SW1hZ2UyRERp
cmVjdChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnUKIAogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6ZHJhd0FycmF5c0luc3RhbmNlZChHQzNEZW51bSBtb2RlLCBHQzNEaW50
IGZpcnN0LCBHQzNEc2l6ZWkgY291bnQsIEdDM0RzaXplaSBwcmltY291bnQpCiB7Ci0gICAgZ2V0
RXh0ZW5zaW9ucygpLT5kcmF3QXJyYXlzSW5zdGFuY2VkKG1vZGUsIGZpcnN0LCBjb3VudCwgcHJp
bWNvdW50KTsKKyAgICBnZXRFeHRlbnNpb25zKCkuZHJhd0FycmF5c0luc3RhbmNlZChtb2RlLCBm
aXJzdCwgY291bnQsIHByaW1jb3VudCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRy
YXdFbGVtZW50c0luc3RhbmNlZChHQzNEZW51bSBtb2RlLCBHQzNEc2l6ZWkgY291bnQsIEdDM0Rl
bnVtIHR5cGUsIEdDM0RpbnRwdHIgb2Zmc2V0LCBHQzNEc2l6ZWkgcHJpbWNvdW50KQogewotICAg
IGdldEV4dGVuc2lvbnMoKS0+ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNvdW50LCB0eXBl
LCBvZmZzZXQsIHByaW1jb3VudCk7CisgICAgZ2V0RXh0ZW5zaW9ucygpLmRyYXdFbGVtZW50c0lu
c3RhbmNlZChtb2RlLCBjb3VudCwgdHlwZSwgb2Zmc2V0LCBwcmltY291bnQpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWJEaXZpc29yKEdDM0R1aW50IGluZGV4LCBH
QzNEdWludCBkaXZpc29yKQogewotICAgIGdldEV4dGVuc2lvbnMoKS0+dmVydGV4QXR0cmliRGl2
aXNvcihpbmRleCwgZGl2aXNvcik7CisgICAgZ2V0RXh0ZW5zaW9ucygpLnZlcnRleEF0dHJpYkRp
dmlzb3IoaW5kZXgsIGRpdmlzb3IpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xFUy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
M0RPcGVuR0xFUy5jcHAKaW5kZXggODlmMDYwMWM4ZDIzODRiN2MyNDM2NGNkMGI3YWVhZGJkZjhi
NzQ3NS4uNzlkNThlMTU5OTkxOTcwMWJiMTIzMDY0YWE2MDVlZmY2MGQ0N2Q1MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dDNET3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTLmNwcApAQCAtOTAsNyArOTAsNyBAQCBib29s
IEdyYXBoaWNzQ29udGV4dDNEOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogCiAg
ICAgLy8gV2UgZG9uJ3QgYWxsb3cgdGhlIGxvZ2ljIHdoZXJlIHN0ZW5jaWwgaXMgcmVxdWlyZWQg
YW5kIGRlcHRoIGlzIG5vdC4KICAgICAvLyBTZWUgR3JhcGhpY3NDb250ZXh0M0Q6OnZhbGlkYXRl
QXR0cmlidXRlcy4KLSAgICBib29sIHN1cHBvcnRQYWNrZWREZXB0aFN0ZW5jaWxCdWZmZXIgPSAo
bV9hdHRycy5zdGVuY2lsIHx8IG1fYXR0cnMuZGVwdGgpICYmIGdldEV4dGVuc2lvbnMoKS0+c3Vw
cG9ydHMoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpOworICAgIGJvb2wgc3VwcG9ydFBh
Y2tlZERlcHRoU3RlbmNpbEJ1ZmZlciA9IChtX2F0dHJzLnN0ZW5jaWwgfHwgbV9hdHRycy5kZXB0
aCkgJiYgZ2V0RXh0ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwiKTsKIAogICAgIC8vIFJlc2l6ZSByZWd1bGFyIEZCTy4KICAgICBib29sIG11c3RSZXN0b3Jl
RkJPID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9zdXJmYWNlcy9HTFRyYW5zcG9ydFN1cmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR0xUcmFuc3BvcnRTdXJmYWNlLmNwcAppbmRleCA2OTk0YWVj
MjZlYzE5MzQ0ZmFmYjhhYmMzMzdhMmFmMmRjYzIzNTk3Li5mNWY1MmRjMDI4OTEwNWM3MDM0MTQ1
NWYzMGUzMGNhYzEwNzk2OWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9zdXJmYWNlcy9HTFRyYW5zcG9ydFN1cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dMVHJhbnNwb3J0U3VyZmFjZS5jcHAKQEAg
LTEwNSw4ICsxMDUsOCBAQCB2b2lkIEdMVHJhbnNwb3J0U3VyZmFjZTo6ZGVzdHJveSgpCiAgICAg
ICAgIDo6Z2xEZWxldGVCdWZmZXJzKDEsICZtX3Zibyk7CiAKICAgICBpZiAobV92ZXJ0ZXhIYW5k
bGUpIHsKLSAgICAgICAgbV9jb250ZXh0M0QtPmdldEV4dGVuc2lvbnMoKS0+YmluZFZlcnRleEFy
cmF5T0VTKDApOwotICAgICAgICBtX2NvbnRleHQzRC0+Z2V0RXh0ZW5zaW9ucygpLT5kZWxldGVW
ZXJ0ZXhBcnJheU9FUyhtX3ZlcnRleEhhbmRsZSk7CisgICAgICAgIG1fY29udGV4dDNELT5nZXRF
eHRlbnNpb25zKCkuYmluZFZlcnRleEFycmF5T0VTKDApOworICAgICAgICBtX2NvbnRleHQzRC0+
Z2V0RXh0ZW5zaW9ucygpLmRlbGV0ZVZlcnRleEFycmF5T0VTKG1fdmVydGV4SGFuZGxlKTsKICAg
ICB9IGVsc2UgaWYgKG1fc2hhZGVyUHJvZ3JhbSkKICAgICAgICAgOjpnbERpc2FibGVWZXJ0ZXhB
dHRyaWJBcnJheShtX3NoYWRlclByb2dyYW0tPnZlcnRleExvY2F0aW9uKCkpOwogCkBAIC0xNjcs
NyArMTY3LDcgQEAgdm9pZCBHTFRyYW5zcG9ydFN1cmZhY2U6OmluaXRpYWxpemVTaGFkZXJQcm9n
cmFtKCkKICAgICBpZiAoIW1fY29udGV4dDNEKQogICAgICAgICBtX2NvbnRleHQzRCA9IEdyYXBo
aWNzQ29udGV4dDNEOjpjcmVhdGVGb3JDdXJyZW50R0xDb250ZXh0KCk7CiAKLSAgICB2ZXJ0ZXhB
cnJheU9iamVjdFN1cHBvcnRlZCA9IG1fY29udGV4dDNELT5nZXRFeHRlbnNpb25zKCktPnN1cHBv
cnRzKCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCIpOworICAgIHZlcnRleEFycmF5T2JqZWN0
U3VwcG9ydGVkID0gbV9jb250ZXh0M0QtPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfT0VT
X3ZlcnRleF9hcnJheV9vYmplY3QiKTsKIAogICAgIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFt
OjpPcHRpb25zIG9wdGlvbnMgPSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6VGV4dHVyZTsK
ICAgICBtX3NoYWRlclByb2dyYW0gPSBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6Y3JlYXRl
KCptX2NvbnRleHQzRCwgb3B0aW9ucyk7CkBAIC0xOTQsMTAgKzE5NCwxMCBAQCB2b2lkIEdMVHJh
bnNwb3J0U3VyZmFjZTo6aW5pdGlhbGl6ZVNoYWRlclByb2dyYW0oKQogCiAgICAgLy8gQ3JlYXRl
IGFuZCBzZXQtdXAgdmVydGV4IGFycmF5IG9iamVjdC4KICAgICBpZiAodmVydGV4QXJyYXlPYmpl
Y3RTdXBwb3J0ZWQpIHsKLSAgICAgICAgbV92ZXJ0ZXhIYW5kbGUgPSBtX2NvbnRleHQzRC0+Z2V0
RXh0ZW5zaW9ucygpLT5jcmVhdGVWZXJ0ZXhBcnJheU9FUygpOworICAgICAgICBtX3ZlcnRleEhh
bmRsZSA9IG1fY29udGV4dDNELT5nZXRFeHRlbnNpb25zKCkuY3JlYXRlVmVydGV4QXJyYXlPRVMo
KTsKIAogICAgICAgICBpZiAobV92ZXJ0ZXhIYW5kbGUpIHsKLSAgICAgICAgICAgIG1fY29udGV4
dDNELT5nZXRFeHRlbnNpb25zKCktPmJpbmRWZXJ0ZXhBcnJheU9FUyhtX3ZlcnRleEhhbmRsZSk7
CisgICAgICAgICAgICBtX2NvbnRleHQzRC0+Z2V0RXh0ZW5zaW9ucygpLmJpbmRWZXJ0ZXhBcnJh
eU9FUyhtX3ZlcnRleEhhbmRsZSk7CiAgICAgICAgICAgICBiaW5kQXJyYXlCdWZmZXIoKTsKICAg
ICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5jcHAKaW5kZXggZGVhMzRhOTY4M2FmNDUw
OWZmMjFlNzE3ZmFkNzI2N2Q5OGQ3YjZkYS4uMGZkOGI4N2I1YWFlOTkyZTJmMDcxNjM4ZWI5YzRm
NDQ3ODc2YzEzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0JpdG1hcFRleHR1cmVHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgQml0
bWFwVGV4dHVyZUdMOjpCaXRtYXBUZXh0dXJlR0woUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQz
RD4gY29udGV4dDNELCBjb25zdAogICAgICAgICBtX2ludGVybmFsRm9ybWF0ID0gR3JhcGhpY3ND
b250ZXh0M0Q6OlJHQkE7CiAgICAgICAgIG1fZm9ybWF0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OkJH
UkE7CiAgICAgICAgIGlmIChtX2NvbnRleHQzRC0+aXNHTEVTMkNvbXBsaWFudCgpKSB7Ci0gICAg
ICAgICAgICBpZiAobV9jb250ZXh0M0QtPmdldEV4dGVuc2lvbnMoKS0+c3VwcG9ydHMoIkdMX0VY
VF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIpKQorICAgICAgICAgICAgaWYgKG1fY29udGV4dDNE
LT5nZXRFeHRlbnNpb25zKCkuc3VwcG9ydHMoIkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4
OCIpKQogICAgICAgICAgICAgICAgIG1faW50ZXJuYWxGb3JtYXQgPSBHcmFwaGljc0NvbnRleHQz
RDo6QkdSQTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBtX2Zvcm1hdCA9IEdy
YXBoaWNzQ29udGV4dDNEOjpSR0JBOwpAQCAtOTksNyArOTksNyBAQCBzdGF0aWMgdm9pZCBzd2l6
emxlQkdSQVRvUkdCQSh1aW50MzJfdCogZGF0YSwgY29uc3QgSW50UmVjdCYgcmVjdCwgaW50IHN0
cmlkZSA9CiBzdGF0aWMgYm9vbCBkcml2ZXJTdXBwb3J0c1N1YkltYWdlKEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0KQogewogICAgIGlmIChjb250ZXh0LT5pc0dMRVMyQ29tcGxpYW50KCkpIHsK
LSAgICAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNTdWJJbWFnZSA9IGNvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS0+c3VwcG9ydHMoIkdMX0VYVF91bnBhY2tfc3ViaW1hZ2UiKTsKKyAgICAgICAgc3Rh
dGljIGJvb2wgc3VwcG9ydHNTdWJJbWFnZSA9IGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5zdXBw
b3J0cygiR0xfRVhUX3VucGFja19zdWJpbWFnZSIpOwogICAgICAgICByZXR1cm4gc3VwcG9ydHNT
dWJJbWFnZTsKICAgICB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>