<?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>158299</bug_id>
          
          <creation_ts>2016-06-02 02:50:49 -0700</creation_ts>
          <short_desc>Introduce ResourceErrorBase::type</short_desc>
          <delta_ts>2016-06-10 11:41:12 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</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="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>berto</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>danw</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>galpeter</cc>
    
    <cc>gustavo</cc>
    
    <cc>japhet</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mrobinson</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1198506</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-06-02 02:50:49 -0700</bug_when>
    <thetext>ResourceErrorBase has three booleans to store whether being null, timeout, cancellation or a combination of all three.
It would be better to introduce a ResourceError type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198510</commentid>
    <comment_count>1</comment_count>
      <attachid>280326</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-06-02 03:31:41 -0700</bug_when>
    <thetext>Created attachment 280326
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198520</commentid>
    <comment_count>2</comment_count>
      <attachid>280329</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-06-02 06:17:18 -0700</bug_when>
    <thetext>Created attachment 280329
Trying to fix win build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198931</commentid>
    <comment_count>3</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-06-03 08:16:04 -0700</bug_when>
    <thetext>In addition to remove the possibility of having errors that can be timeout and null, this patch may allow adding easily new error types.

A &quot;CrossOrigin&quot; error type may be useful to:
- Remove ThreadableLoaderClient::didFailAccessControl/didFailRedirectCheck
- Move response cross-origin checks in SubresourceLoader in lieu of various loaders (DocumentThreadableLoader, ImageLoader...)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1199527</commentid>
    <comment_count>4</comment_count>
      <attachid>280329</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-06 01:16:34 -0700</bug_when>
    <thetext>Comment on attachment 280329
Trying to fix win build

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

This looks like an improvement.  There&apos;s another patch I&apos;ve seen recently changing the way we do errors with the FrameLoader.

&gt; Source/WebCore/loader/EmptyClients.h:334
&gt; +    ResourceError blockedError(const ResourceRequest&amp;) override { return ResourceError(); }

Could we use { } ?

&gt; Source/WebCore/platform/network/ResourceErrorBase.h:58
&gt; +    void setAsCancellation() { m_type = Type::Cancellation; }

Could this have an assertion that type wasn&apos;t Timeout?  Could the assertion be even stricter?
Also, I think it would be nice to have a Type parameter required in the constructor.

&gt; Source/WebCore/platform/network/ResourceErrorBase.h:93
&gt; +    Type m_type { Type::Null };

It&apos;s confusing that this defaults to Null when there is a Default type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1199607</commentid>
    <comment_count>5</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-06-06 10:33:16 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 280329 [details]
&gt; Trying to fix win build
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=280329&amp;action=review
&gt; 
&gt; This looks like an improvement.  There&apos;s another patch I&apos;ve seen recently
&gt; changing the way we do errors with the FrameLoader.
&gt; 
&gt; &gt; Source/WebCore/loader/EmptyClients.h:334
&gt; &gt; +    ResourceError blockedError(const ResourceRequest&amp;) override { return ResourceError(); }
&gt; 
&gt; Could we use { } ?

OK

&gt; &gt; Source/WebCore/platform/network/ResourceErrorBase.h:58
&gt; &gt; +    void setAsCancellation() { m_type = Type::Cancellation; }
&gt; 
&gt; Could this have an assertion that type wasn&apos;t Timeout?  Could the assertion
&gt; be even stricter?

Yes, m_type should probably set at construct time once for all.

&gt; Also, I think it would be nice to have a Type parameter required in the
&gt; constructor.

I was tempted to doing so but resisted to get a smaller patch.
I can handle it now or as a follow-up patch.

&gt; &gt; Source/WebCore/platform/network/ResourceErrorBase.h:93
&gt; &gt; +    Type m_type { Type::Null };
&gt; 
&gt; It&apos;s confusing that this defaults to Null when there is a Default type.

Right, let&apos;s change the name to Type::General and make it the default here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1199976</commentid>
    <comment_count>6</comment_count>
      <attachid>280684</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-06-07 02:21:27 -0700</bug_when>
    <thetext>Created attachment 280684
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1199977</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-07 02:24:04 -0700</bug_when>
    <thetext>Attachment 280684 did not pass style-queue:


ERROR: Source/WebCore/platform/network/ResourceErrorBase.h:64:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 1 in 16 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>1199987</commentid>
    <comment_count>8</comment_count>
      <attachid>280687</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-06-07 03:17:57 -0700</bug_when>
    <thetext>Created attachment 280687
Win build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1199988</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-07 03:18:46 -0700</bug_when>
    <thetext>Attachment 280687 did not pass style-queue:


ERROR: Source/WebCore/platform/network/ResourceErrorBase.h:64:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 1 in 16 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>1200014</commentid>
    <comment_count>10</comment_count>
      <attachid>280698</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-06-07 05:16:14 -0700</bug_when>
    <thetext>Created attachment 280698
Win build fix again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200015</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-07 05:17:26 -0700</bug_when>
    <thetext>Attachment 280698 did not pass style-queue:


ERROR: Source/WebCore/platform/network/ResourceErrorBase.h:64:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 1 in 16 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>1200052</commentid>
    <comment_count>12</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-06-07 08:37:50 -0700</bug_when>
    <thetext>nit: Please remove unrelated whitespace-only changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200428</commentid>
    <comment_count>13</comment_count>
      <attachid>280800</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-06-08 06:20:10 -0700</bug_when>
    <thetext>Created attachment 280800
Removing whitespace changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200429</commentid>
    <comment_count>14</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-06-08 06:20:44 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; nit: Please remove unrelated whitespace-only changes.

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200431</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-08 06:22:33 -0700</bug_when>
    <thetext>Attachment 280800 did not pass style-queue:


ERROR: Source/WebCore/platform/network/ResourceErrorBase.h:64:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 1 in 16 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>1200475</commentid>
    <comment_count>16</comment_count>
      <attachid>280800</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-08 09:51:09 -0700</bug_when>
    <thetext>Comment on attachment 280800
Removing whitespace changes

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        Introduce a ResourceErrorBase type

::Type

&gt; Source/WebCore/platform/network/ResourceErrorBase.h:64
&gt; +    ResourceErrorBase(Type type) : m_type(type) { }

: m_type should be on the next line according to the style bot.

&gt; Source/WebKit2/Shared/soup/WebCoreArgumentCodersSoup.cpp:207
&gt;          resourceError = ResourceError();

{ }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200533</commentid>
    <comment_count>17</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-06-08 12:13:01 -0700</bug_when>
    <thetext>Thanks for the review.

(In reply to comment #16)
&gt; Comment on attachment 280800 [details]
&gt; Removing whitespace changes
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=280800&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:3
&gt; &gt; +        Introduce a ResourceErrorBase type
&gt; 
&gt; ::Type


OK

&gt; &gt; Source/WebCore/platform/network/ResourceErrorBase.h:64
&gt; &gt; +    ResourceErrorBase(Type type) : m_type(type) { }
&gt; 
&gt; : m_type should be on the next line according to the style bot.

I got other reviews that this was more readable this way for single assignment constructors. This style is consistent with other patches I made.
But I am fine changing to the bot style.

&gt; &gt; Source/WebKit2/Shared/soup/WebCoreArgumentCodersSoup.cpp:207
&gt; &gt;          resourceError = ResourceError();
&gt; 
&gt; { }

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200740</commentid>
    <comment_count>18</comment_count>
      <attachid>280885</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-06-08 23:23:13 -0700</bug_when>
    <thetext>Created attachment 280885
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200746</commentid>
    <comment_count>19</comment_count>
      <attachid>280885</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-08 23:53:57 -0700</bug_when>
    <thetext>Comment on attachment 280885
Patch for landing

Clearing flags on attachment: 280885

Committed r201856: &lt;http://trac.webkit.org/changeset/201856&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200747</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-08 23:54:03 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201295</commentid>
    <comment_count>21</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2016-06-10 11:35:32 -0700</bug_when>
    <thetext>Build fix for Apple internal iOS build:

&lt;https://trac.webkit.org/r201870&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201304</commentid>
    <comment_count>22</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-06-10 11:41:12 -0700</bug_when>
    <thetext>Thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280326</attachid>
            <date>2016-06-02 03:31:41 -0700</date>
            <delta_ts>2016-06-02 06:17:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158299-20160602123258.patch</filename>
            <type>text/plain</type>
            <size>18447</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNTk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTZjY2I2MTkwN2U2MTM2
YzUyYTJlYjE2NjU0NTZiNzJhODViMWNkMC4uYzYwMDk2ZWU2OWY5ZjhhZWYwN2UwMzk4NDZmM2Iz
MTc3ZTU1ZWQxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE2LTA2LTAyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgSW50cm9k
dWNlIGEgUmVzb3VyY2VFcnJvckJhc2UgdHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4Mjk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNpbmcgYW4gZW51bSB0eXBlIGZvciBSZXNvdXJj
ZUVycm9yQmFzZS4KKyAgICAgICAgUmVwbGFjaW5nIHNldHRlcnMgdGFraW5nIGEgYm9vbGVhbiBi
eSBzZXR0ZXJzIHdpdGhvdXQgYW55IHBhcmFtZXRlciBtb2RpZnlpbmcgdGhlIHR5cGUuCisgICAg
ICAgIFVwZGF0aW5nIHJlbGF0ZWQgY2FsbGluZyBjb2RlLgorCisgICAgICAgIE5vIGNoYW5nZSBv
ZiBiZWhhdmlvci4KKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c3RvcExvYWRpbmdGb3JQb2xpY3lDaGFuZ2Up
OgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpjYW5jZWwpOgorICAgICAgICAq
IGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNhbmNlbGxlZEVycm9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpibG9ja2VkRXJyb3IpOgorICAgICAgICAqIGxvYWRl
ci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRo
cmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmNhbmNlbCk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yQmFzZTo6Y29weSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9y
QmFzZTo6Y29tcGFyZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9y
QmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvckJhc2U6OnNldFR5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvckJhc2U6OnR5cGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvckJhc2U6OmlzTnVsbCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUVycm9yQmFzZTo6c2V0QXNDYW5jZWxsYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VFcnJvckJhc2U6OmlzQ2FuY2VsbGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlRXJyb3JCYXNlOjpzZXRBc1RpbWVvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VF
cnJvckJhc2U6OmlzVGltZW91dCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yQmFz
ZTo6UmVzb3VyY2VFcnJvckJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvckJh
c2U6OmRvbWFpbik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yQmFzZTo6ZXJyb3JD
b2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpuc0Vycm9yKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VFcnJvcjo6dGltZW91dEVycm9yKToKKwogMjAxNi0wNi0wMiAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dheWxhbmRdIFBsYXRm
b3JtRGlzcGxheVdheWxhbmQgZGVzdHJ1Y3RvciBpcyBzdXBlciBjcmFzaHkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRl
eCA1YzY0M2Q3YTJhNTU2MGRiMDNlYzJiY2I4N2U2MjBjNGI0ZmRmOGMyLi5lYzExZDgxZWVjNDY0
MzMwMzNhMDc4ODIyMjUzZTY1MjQ2NjFiNzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTYtMDYtMDIgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4K
KworICAgICAgICBJbnRyb2R1Y2UgYSBSZXNvdXJjZUVycm9yQmFzZSB0eXBlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgyOTkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9zb3VwL1dlYkNv
cmVBcmd1bWVudENvZGVyc1NvdXAuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJl
c291cmNlRXJyb3I+OjplbmNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFJlc291cmNlRXJyb3I+OjpkZWNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFByb3RlY3Rpb25TcGFjZT46OmVuY29kZVBsYXRmb3JtRGF0YSk6IERl
bGV0ZWQuCisKIDIwMTYtMDYtMDEgIFlvbmdqdW4gWmhhbmcgIDx5b25nanVuX3poYW5nQGFwcGxl
LmNvbT4KIAogICAgICAgICBOb3RpZnkgY2xpZW50IGltbWVkaWF0ZWx5IGlmIG5ldHdvcmsgc2Vz
c2lvbiBkb2Vzbid0IGV4aXN0IGZvciBhIHN5bmNocm9ub3VzIFhIUiBsb2FkLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggOWRmNTY1MGU1M2NkZjIxZDE4YzEx
MzllOWEyNWNjNTVjNDQ1Y2EzNy4uYTEyMWRlNjlmODMyMmViNzE5ZTlhZGY2MjY0YzliZWU5YWVm
YThhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC04NDEs
NyArODQxLDcgQEAgUmVzb3VyY2VFcnJvciBEb2N1bWVudExvYWRlcjo6aW50ZXJydXB0ZWRGb3JQ
b2xpY3lDaGFuZ2VFcnJvcigpIGNvbnN0CiB2b2lkIERvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGlu
Z0ZvclBvbGljeUNoYW5nZSgpCiB7CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvciA9IGludGVycnVw
dGVkRm9yUG9saWN5Q2hhbmdlRXJyb3IoKTsKLSAgICBlcnJvci5zZXRJc0NhbmNlbGxhdGlvbih0
cnVlKTsKKyAgICBlcnJvci5zZXRBc0NhbmNlbGxhdGlvbigpOwogICAgIGNhbmNlbE1haW5SZXNv
dXJjZUxvYWQoZXJyb3IpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDkwZTRiZmJjMTEyMzg5M2FiMTM1MjQ1ZmI3
NDk3NzhkM2I2OTk1YWQuLmVlMzliZDU2YjI0YjBjNjI2NTRlOGEzNGVjOWUyZDZjODRmMGRlYmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIuY3BwCkBAIC0xNjEsNyArMTYxLDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6
OmNhbmNlbCgpCiAgICAgaWYgKG1fY2xpZW50ICYmIG1fcmVzb3VyY2UpIHsKICAgICAgICAgLy8g
RklYTUU6IFRoaXMgZXJyb3IgaXMgc2VudCB0byB0aGUgY2xpZW50IGluIGRpZEZhaWwoKSwgc28g
aXQgc2hvdWxkIG5vdCBiZSBhbiBpbnRlcm5hbCBvbmUuIFVzZSBGcmFtZUxvYWRlckNsaWVudDo6
Y2FuY2VsbGVkRXJyb3IoKSBpbnN0ZWFkLgogICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yKGVy
cm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIG1fcmVzb3VyY2UtPnVybCgpLCAiTG9hZCBjYW5j
ZWxsZWQiKTsKLSAgICAgICAgZXJyb3Iuc2V0SXNDYW5jZWxsYXRpb24odHJ1ZSk7CisgICAgICAg
IGVycm9yLnNldEFzQ2FuY2VsbGF0aW9uKCk7CiAgICAgICAgIGRpZEZhaWwobV9yZXNvdXJjZS0+
aWRlbnRpZmllcigpLCBlcnJvcik7CiAgICAgfQogICAgIGNsZWFyUmVzb3VyY2UoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCA5ODRmNDhlYjJjMTJmMGJkNWY4Y2U1M2E4
YWMxMDA5OTA5NDY1ODgyLi41NzliMzc4MDkyMzY4ZWRjMTc5ZWVlNjdmNjY2ZGVhMmMxZTVkYzFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC0zMzAsMTUgKzMzMCwxNSBA
QCBwdWJsaWM6CiAgICAgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3Qg
Y2hhciosIGludCkgb3ZlcnJpZGUgeyB9CiAgICAgdm9pZCBmaW5pc2hlZExvYWRpbmcoRG9jdW1l
bnRMb2FkZXIqKSBvdmVycmlkZSB7IH0KIAotICAgIFJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJy
b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGUgeyBSZXNvdXJjZUVycm9yIGVycm9y
KCIiLCAwLCBVUkwoKSwgIiIpOyBlcnJvci5zZXRJc0NhbmNlbGxhdGlvbih0cnVlKTsgcmV0dXJu
IGVycm9yOyB9Ci0gICAgUmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0Jikgb3ZlcnJpZGUgeyByZXR1cm4gUmVzb3VyY2VFcnJvcigiIiwgMCwgVVJMKCksICIi
KTsgfQotICAgIFJlc291cmNlRXJyb3IgYmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihjb25z
dCBSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAw
LCBVUkwoKSwgIiIpOyB9Ci0gICAgUmVzb3VyY2VFcnJvciBjYW5ub3RTaG93VVJMRXJyb3IoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGUgeyByZXR1cm4gUmVzb3VyY2VFcnJvcigiIiwg
MCwgVVJMKCksICIiKTsgfQotICAgIFJlc291cmNlRXJyb3IgaW50ZXJydXB0ZWRGb3JQb2xpY3lD
aGFuZ2VFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZSB7IHJldHVybiBSZXNv
dXJjZUVycm9yKCIiLCAwLCBVUkwoKSwgIiIpOyB9Ci0KLSAgICBSZXNvdXJjZUVycm9yIGNhbm5v
dFNob3dNSU1FVHlwZUVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZSB7IHJl
dHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCBVUkwoKSwgIiIpOyB9Ci0gICAgUmVzb3VyY2VFcnJv
ciBmaWxlRG9lc05vdEV4aXN0RXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRl
IHsgcmV0dXJuIFJlc291cmNlRXJyb3IoIiIsIDAsIFVSTCgpLCAiIik7IH0KLSAgICBSZXNvdXJj
ZUVycm9yIHBsdWdpbldpbGxIYW5kbGVMb2FkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
IG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3IoIiIsIDAsIFVSTCgpLCAiIik7IH0KKyAg
ICBSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIG92
ZXJyaWRlIHsgUmVzb3VyY2VFcnJvciBlcnJvcjsgZXJyb3Iuc2V0QXNDYW5jZWxsYXRpb24oKTsg
cmV0dXJuIGVycm9yOyB9CisgICAgUmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGUgeyByZXR1cm4gUmVzb3VyY2VFcnJvcigpOyB9CisgICAg
UmVzb3VyY2VFcnJvciBibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3IoKTsgfQorICAgIFJlc291
cmNlRXJyb3IgY2Fubm90U2hvd1VSTEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIG92ZXJy
aWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3IoKTsgfQorICAgIFJlc291cmNlRXJyb3IgaW50ZXJy
dXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlk
ZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCk7IH0KKworICAgIFJlc291cmNlRXJyb3IgY2Fubm90
U2hvd01JTUVUeXBlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlIHsgcmV0
dXJuIFJlc291cmNlRXJyb3IoKTsgfQorICAgIFJlc291cmNlRXJyb3IgZmlsZURvZXNOb3RFeGlz
dEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJj
ZUVycm9yKCk7IH0KKyAgICBSZXNvdXJjZUVycm9yIHBsdWdpbldpbGxIYW5kbGVMb2FkRXJyb3Io
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3Io
KTsgfQogCiAgICAgYm9vbCBzaG91bGRGYWxsQmFjayhjb25zdCBSZXNvdXJjZUVycm9yJikgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKaW5kZXggMzRhNDQxYjRkYzUzODU4Y2I5Nzg3YWZjZmJhMTU5YWRhYmU5NTc2Yy4uYjVkZWZm
YTBlZGFkYmVhNDAzZGIzMTY1NjY2MmIxNzk3YTBkMTA5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCkBAIC0zNDA2LDcgKzM0MDYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpy
ZXRyeUFmdGVyRmFpbGVkQ2FjaGVPbmx5TWFpblJlc291cmNlTG9hZCgpCiBSZXNvdXJjZUVycm9y
IEZyYW1lTG9hZGVyOjpjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QpIGNvbnN0CiB7CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvciA9IG1fY2xpZW50LmNhbmNlbGxl
ZEVycm9yKHJlcXVlc3QpOwotICAgIGVycm9yLnNldElzQ2FuY2VsbGF0aW9uKHRydWUpOworICAg
IGVycm9yLnNldEFzQ2FuY2VsbGF0aW9uKCk7CiAgICAgcmV0dXJuIGVycm9yOwogfQogCkBAIC0z
NDE4LDcgKzM0MTgsNyBAQCBSZXNvdXJjZUVycm9yIEZyYW1lTG9hZGVyOjpibG9ja2VkQnlDb250
ZW50QmxvY2tlckVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcgogUmVzb3VyY2VFcnJvciBG
cmFtZUxvYWRlcjo6YmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkg
Y29uc3QKIHsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yID0gbV9jbGllbnQuYmxvY2tlZEVycm9y
KHJlcXVlc3QpOwotICAgIGVycm9yLnNldElzQ2FuY2VsbGF0aW9uKHRydWUpOworICAgIGVycm9y
LnNldEFzQ2FuY2VsbGF0aW9uKCk7CiAgICAgcmV0dXJuIGVycm9yOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggNDEwMTE4
YjU1MTE3NjgzZTk0MWNjN2U0ZTkwNmZkYTAyNDExZmVhNy4uODZjYjg4MTVjMjM1OTdiOGYwZjhi
YzE5ZDg1MzQ4NTY2MGJiYjE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dv
cmtlclRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMTQwLDggKzE0MCw4IEBAIHZvaWQgV29ya2VyVGhy
ZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6Y2FuY2VsKCkKICAgICBpZiAoIWNsaWVu
dFdyYXBwZXItPmRvbmUoKSkgewogICAgICAgICAvLyBJZiB0aGUgY2xpZW50IGhhc24ndCByZWFj
aGVkIGEgdGVybWluYXRpb24gc3RhdGUsIHRoZW4gdHJhbnNpdGlvbiBpdCBieSBzZW5kaW5nIGEg
Y2FuY2VsbGF0aW9uIGVycm9yLgogICAgICAgICAvLyBOb3RlOiBubyBtb3JlIGNsaWVudCBjYWxs
YmFja3Mgd2lsbCBiZSBkb25lIGFmdGVyIHRoaXMgbWV0aG9kIC0tIHRoZSBjbGVhckNsaWVudFdy
YXBwZXIoKSBjYWxsIGVuc3VyZXMgdGhhdC4KLSAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcihT
dHJpbmcoKSwgMCwgVVJMKCksIFN0cmluZygpKTsKLSAgICAgICAgZXJyb3Iuc2V0SXNDYW5jZWxs
YXRpb24odHJ1ZSk7CisgICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3I7CisgICAgICAgIGVycm9y
LnNldEFzQ2FuY2VsbGF0aW9uKCk7CiAgICAgICAgIGNsaWVudFdyYXBwZXItPmRpZEZhaWwoZXJy
b3IpOwogICAgIH0KICAgICBjbGVhckNsaWVudFdyYXBwZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5jcHAKaW5kZXggY2U1
OGY4ZTM0OWI4NDE3YmU4ZWZjNzc2NWRjZTdiNWM2NmRkYjUwOC4uODQzZDIwOWExZWFhY2M1Zjkw
OWIwZTdmMGE4Yjg4MTk3MTA5YzkxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5jcHAKQEAgLTQwLDkgKzQwLDcgQEAgUmVz
b3VyY2VFcnJvciBSZXNvdXJjZUVycm9yQmFzZTo6Y29weSgpIGNvbnN0CiAgICAgZXJyb3JDb3B5
Lm1fZXJyb3JDb2RlID0gbV9lcnJvckNvZGU7CiAgICAgZXJyb3JDb3B5Lm1fZmFpbGluZ1VSTCA9
IG1fZmFpbGluZ1VSTC5pc29sYXRlZENvcHkoKTsKICAgICBlcnJvckNvcHkubV9sb2NhbGl6ZWRE
ZXNjcmlwdGlvbiA9IG1fbG9jYWxpemVkRGVzY3JpcHRpb24uaXNvbGF0ZWRDb3B5KCk7Ci0gICAg
ZXJyb3JDb3B5Lm1faXNOdWxsID0gbV9pc051bGw7Ci0gICAgZXJyb3JDb3B5Lm1faXNDYW5jZWxs
YXRpb24gPSBtX2lzQ2FuY2VsbGF0aW9uOwotICAgIGVycm9yQ29weS5tX2lzVGltZW91dCA9IG1f
aXNUaW1lb3V0OworICAgIGVycm9yQ29weS5tX3R5cGUgPSBtX3R5cGU7CiAgICAgcGxhdGZvcm1D
b3B5KGVycm9yQ29weSk7CiAgICAgcmV0dXJuIGVycm9yQ29weTsKIH0KQEAgLTU3LDcgKzU1LDcg
QEAgYm9vbCBSZXNvdXJjZUVycm9yQmFzZTo6Y29tcGFyZShjb25zdCBSZXNvdXJjZUVycm9yJiBh
LCBjb25zdCBSZXNvdXJjZUVycm9yJiBiKQogICAgIGlmIChhLmlzTnVsbCgpICYmIGIuaXNOdWxs
KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKGEuaXNOdWxsKCkgfHwgYi5pc051
bGwoKSkKKyAgICBpZiAoYS50eXBlKCkgIT0gYi50eXBlKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIGlmIChhLmRvbWFpbigpICE9IGIuZG9tYWluKCkpCkBAIC03MiwxMiArNzAsNiBA
QCBib29sIFJlc291cmNlRXJyb3JCYXNlOjpjb21wYXJlKGNvbnN0IFJlc291cmNlRXJyb3ImIGEs
IGNvbnN0IFJlc291cmNlRXJyb3ImIGIpCiAgICAgaWYgKGEubG9jYWxpemVkRGVzY3JpcHRpb24o
KSAhPSBiLmxvY2FsaXplZERlc2NyaXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIGlmIChhLmlzQ2FuY2VsbGF0aW9uKCkgIT0gYi5pc0NhbmNlbGxhdGlvbigpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoYS5pc1RpbWVvdXQoKSAhPSBiLmlzVGltZW91dCgp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICByZXR1cm4gUmVzb3VyY2VFcnJvcjo6cGxh
dGZvcm1Db21wYXJlKGEsIGIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmgKaW5kZXggYTgwZTc2MTliNWFkOWRkZGRlODU2
ODIzNzYyZWNlNGY1NTFiYWQzZi4uNzVlNThlYmQwM2FlZmY2OGJjMDdkZDU5MzhhN2I1MWE3ZjJh
MzllZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUVycm9yQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VFcnJvckJhc2UuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYg
QXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBD
YW5vbiBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yMyw4ICsyNCw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVm
IFJlc291cmNlRXJyb3JCYXNlX2gKLSNkZWZpbmUgUmVzb3VyY2VFcnJvckJhc2VfaAorI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KQEAgLTQwLDM4ICs0MCwzOCBAQCBwdWJsaWM6CiAgICAgLy8gTWFrZXMgYSBkZWVwIGNvcHku
IFVzZWZ1bCBmb3Igd2hlbiB5b3UgbmVlZCB0byB1c2UgYSBSZXNvdXJjZUVycm9yIG9uIGFub3Ro
ZXIgdGhyZWFkLgogICAgIFJlc291cmNlRXJyb3IgY29weSgpIGNvbnN0OwogCi0gICAgYm9vbCBp
c051bGwoKSBjb25zdCB7IHJldHVybiBtX2lzTnVsbDsgfQotCiAgICAgY29uc3QgU3RyaW5nJiBk
b21haW4oKSBjb25zdCB7IGxhenlJbml0KCk7IHJldHVybiBtX2RvbWFpbjsgfQogICAgIGludCBl
cnJvckNvZGUoKSBjb25zdCB7IGxhenlJbml0KCk7IHJldHVybiBtX2Vycm9yQ29kZTsgfQogICAg
IGNvbnN0IFVSTCYgZmFpbGluZ1VSTCgpIGNvbnN0IHsgbGF6eUluaXQoKTsgcmV0dXJuIG1fZmFp
bGluZ1VSTDsgfQogICAgIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24oKSBjb25z
dCB7IGxhenlJbml0KCk7IHJldHVybiBtX2xvY2FsaXplZERlc2NyaXB0aW9uOyB9CiAKLSAgICB2
b2lkIHNldElzQ2FuY2VsbGF0aW9uKGJvb2wgaXNDYW5jZWxsYXRpb24pIHsgbV9pc0NhbmNlbGxh
dGlvbiA9IGlzQ2FuY2VsbGF0aW9uOyB9Ci0gICAgYm9vbCBpc0NhbmNlbGxhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1faXNDYW5jZWxsYXRpb247IH0KKyAgICBlbnVtIGNsYXNzIFR5cGUgeworICAg
ICAgICBOdWxsLAorICAgICAgICBEZWZhdWx0LAorICAgICAgICBDYW5jZWxsYXRpb24sCisgICAg
ICAgIFRpbWVvdXQKKyAgICB9OworICAgIHZvaWQgc2V0VHlwZShUeXBlIHR5cGUpIHsgbV90eXBl
ID0gdHlwZTsgfQorICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorCisg
ICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6TnVsbDsgfQor
ICAgIHZvaWQgc2V0QXNDYW5jZWxsYXRpb24oKSB7IG1fdHlwZSA9IFR5cGU6OkNhbmNlbGxhdGlv
bjsgfQorICAgIGJvb2wgaXNDYW5jZWxsYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0g
VHlwZTo6Q2FuY2VsbGF0aW9uOyB9CiAKLSAgICB2b2lkIHNldElzVGltZW91dChib29sIGlzVGlt
ZW91dCkgeyBtX2lzVGltZW91dCA9IGlzVGltZW91dDsgfQotICAgIGJvb2wgaXNUaW1lb3V0KCkg
Y29uc3QgeyByZXR1cm4gbV9pc1RpbWVvdXQ7IH0KKyAgICB2b2lkIHNldEFzVGltZW91dCgpIHsg
bV90eXBlID0gVHlwZTo6VGltZW91dDsgfQorICAgIGJvb2wgaXNUaW1lb3V0KCkgY29uc3QgeyBy
ZXR1cm4gbV90eXBlID09IFR5cGU6OlRpbWVvdXQ7IH0KIAogICAgIHN0YXRpYyBib29sIGNvbXBh
cmUoY29uc3QgUmVzb3VyY2VFcnJvciYsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAogcHJvdGVj
dGVkOgotICAgIFJlc291cmNlRXJyb3JCYXNlKCkKLSAgICAgICAgOiBtX2Vycm9yQ29kZSgwKQot
ICAgICAgICAsIG1faXNOdWxsKHRydWUpCi0gICAgICAgICwgbV9pc0NhbmNlbGxhdGlvbihmYWxz
ZSkKLSAgICAgICAgLCBtX2lzVGltZW91dChmYWxzZSkKLSAgICB7Ci0gICAgfQorICAgIFJlc291
cmNlRXJyb3JCYXNlKCkgeyB9CiAKICAgICBSZXNvdXJjZUVycm9yQmFzZShjb25zdCBTdHJpbmcm
IGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJp
bmcmIGxvY2FsaXplZERlc2NyaXB0aW9uKQogICAgICAgICA6IG1fZG9tYWluKGRvbWFpbikKICAg
ICAgICAgLCBtX2ZhaWxpbmdVUkwoZmFpbGluZ1VSTCkKICAgICAgICAgLCBtX2xvY2FsaXplZERl
c2NyaXB0aW9uKGxvY2FsaXplZERlc2NyaXB0aW9uKQogICAgICAgICAsIG1fZXJyb3JDb2RlKGVy
cm9yQ29kZSkKLSAgICAgICAgLCBtX2lzTnVsbChmYWxzZSkKLSAgICAgICAgLCBtX2lzQ2FuY2Vs
bGF0aW9uKGZhbHNlKQotICAgICAgICAsIG1faXNUaW1lb3V0KGZhbHNlKQorICAgICAgICAsIG1f
dHlwZShUeXBlOjpEZWZhdWx0KQogICAgIHsKICAgICB9CiAKQEAgLTg5LDE1ICs4OSwxMSBAQCBw
cm90ZWN0ZWQ6CiAgICAgU3RyaW5nIG1fZG9tYWluOwogICAgIFVSTCBtX2ZhaWxpbmdVUkw7CiAg
ICAgU3RyaW5nIG1fbG9jYWxpemVkRGVzY3JpcHRpb247Ci0gICAgaW50IG1fZXJyb3JDb2RlOwot
ICAgIGJvb2wgbV9pc051bGwgOiAxOwotICAgIGJvb2wgbV9pc0NhbmNlbGxhdGlvbiA6IDE7Ci0g
ICAgYm9vbCBtX2lzVGltZW91dCA6IDE7CisgICAgaW50IG1fZXJyb3JDb2RlIHsgMCB9OworICAg
IFR5cGUgbV90eXBlIHsgVHlwZTo6TnVsbCB9OwogfTsKIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBSZXNvdXJjZUVycm9yJiBhLCBjb25zdCBSZXNvdXJjZUVycm9yJiBiKSB7IHJldHVy
biBSZXNvdXJjZUVycm9yQmFzZTo6Y29tcGFyZShhLCBiKTsgfQogaW5saW5lIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBSZXNvdXJjZUVycm9yJiBhLCBjb25zdCBSZXNvdXJjZUVycm9yJiBiKSB7IHJl
dHVybiAhKGEgPT0gYik7IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
UmVzb3VyY2VFcnJvckJhc2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0KaW5kZXggNjBiMGRmZjNmNjExY2ExNGRm
NmY0NjdmNzI3YzUxZDUyOWM0Mzc0ZC4uOTZmOGY4YTc3NmQ4MmIwOWViNWUzYmY5ZTVmMWFmZTcw
OTg5M2VkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VFcnJvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCkBAIC0xOTYsMTQgKzE5NiwxMyBAQCBSZXNvdXJjZUVy
cm9yOjpSZXNvdXJjZUVycm9yKE5TRXJyb3IgKmVycm9yKQogICAgIDogbV9kYXRhSXNVcFRvRGF0
ZShmYWxzZSkKICAgICAsIG1fcGxhdGZvcm1FcnJvcihyZWludGVycHJldF9jYXN0PENGRXJyb3JS
ZWY+KGVycm9yKSkKIHsKLSAgICBtX2lzTnVsbCA9ICFlcnJvcjsKLSAgICBpZiAoIW1faXNOdWxs
KQotICAgICAgICBtX2lzVGltZW91dCA9IFtlcnJvciBjb2RlXSA9PSBOU1VSTEVycm9yVGltZWRP
dXQ7CisgICAgaWYgKGVycm9yKQorICAgICAgICBzZXRUeXBlKChbZXJyb3IgY29kZV0gPT0gTlNV
UkxFcnJvclRpbWVkT3V0KSA/IFR5cGU6OlRpbWVvdXQgOiBEZWZhdWx0KTsKIH0KIAogTlNFcnJv
ciAqUmVzb3VyY2VFcnJvcjo6bnNFcnJvcigpIGNvbnN0CiB7Ci0gICAgaWYgKG1faXNOdWxsKSB7
CisgICAgaWYgKGlzTnVsbCgpKSB7CiAgICAgICAgIEFTU0VSVCghbV9wbGF0Zm9ybUVycm9yKTsK
ICAgICAgICAgcmV0dXJuIG5pbDsKICAgICB9CkBAIC0yNDEsMTggKzI0MCwxNiBAQCBSZXNvdXJj
ZUVycm9yOjpSZXNvdXJjZUVycm9yKE5TRXJyb3IgKm5zRXJyb3IpCiAgICAgOiBtX2RhdGFJc1Vw
VG9EYXRlKGZhbHNlKQogICAgICwgbV9wbGF0Zm9ybUVycm9yKG5zRXJyb3IpCiB7Ci0gICAgbV9p
c051bGwgPSAhbnNFcnJvcjsKLSAgICBpZiAoIW1faXNOdWxsKQotICAgICAgICBtX2lzVGltZW91
dCA9IFttX3BsYXRmb3JtRXJyb3IuZ2V0KCkgY29kZV0gPT0gTlNVUkxFcnJvclRpbWVkT3V0Owor
ICAgIGlmIChuc0Vycm9yKQorICAgICAgICBzZXRUeXBlKChbbV9wbGF0Zm9ybUVycm9yLmdldCgp
IGNvZGVdID09IE5TVVJMRXJyb3JUaW1lZE91dCkgPyBUeXBlOjpUaW1lb3V0IDogVHlwZTo6RGVm
YXVsdCk7CiB9CiAKIFJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoQ0ZFcnJvclJlZiBjZkVy
cm9yKQogICAgIDogbV9kYXRhSXNVcFRvRGF0ZShmYWxzZSkKICAgICAsIG1fcGxhdGZvcm1FcnJv
cigoTlNFcnJvciAqKWNmRXJyb3IpCiB7Ci0gICAgbV9pc051bGwgPSAhY2ZFcnJvcjsKLSAgICBp
ZiAoIW1faXNOdWxsKQotICAgICAgICBtX2lzVGltZW91dCA9IFttX3BsYXRmb3JtRXJyb3IuZ2V0
KCkgY29kZV0gPT0gTlNVUkxFcnJvclRpbWVkT3V0OworICAgIGlmIChjZkVycm9yKQorICAgICAg
ICBzZXRUeXBlKChbbV9wbGF0Zm9ybUVycm9yLmdldCgpIGNvZGVdID09IE5TVVJMRXJyb3JUaW1l
ZE91dCkgPyBUeXBlOjpUaW1lb3V0IDogVHlwZTo6RGVmYXVsdCk7CiB9CiAKIHZvaWQgUmVzb3Vy
Y2VFcnJvcjo6cGxhdGZvcm1MYXp5SW5pdCgpCkBAIC0yODMsNyArMjgwLDcgQEAgYm9vbCBSZXNv
dXJjZUVycm9yOjpwbGF0Zm9ybUNvbXBhcmUoY29uc3QgUmVzb3VyY2VFcnJvciYgYSwgY29uc3Qg
UmVzb3VyY2VFcnJvciYKIAogTlNFcnJvciAqUmVzb3VyY2VFcnJvcjo6bnNFcnJvcigpIGNvbnN0
CiB7Ci0gICAgaWYgKG1faXNOdWxsKSB7CisgICAgaWYgKGlzTnVsbCgpKSB7CiAgICAgICAgIEFT
U0VSVCghbV9wbGF0Zm9ybUVycm9yKTsKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJv
clNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNl
RXJyb3JTb3VwLmNwcAppbmRleCBhZDZiOGU3MDg2NzNhZWI5YTU2NThlNGNjYjhjMzUxMjk5ZWZl
ZTllLi41NzBhYjAwMDE0OGQxN2QyYzcyOGUyZTE5NTZiYzcxMzJhZTE2NmY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVy
cm9yU291cC5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9y
Ojp0aW1lb3V0RXJyb3IoY29uc3QgVVJMJiBmYWlsaW5nVVJMKQogICAgIHN0YXRpYyBjb25zdCBp
bnQgdGltZW91dEVycm9yID0gLTEwMDE7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0ICBl
cnJvckRvbWFpbiA9ICJXZWJLaXROZXR3b3JrRXJyb3IiOwogICAgIFJlc291cmNlRXJyb3IgZXJy
b3IgPSBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluLCB0aW1lb3V0RXJyb3IsIGZhaWxpbmdVUkws
ICJSZXF1ZXN0IHRpbWVkIG91dCIpOwotICAgIGVycm9yLnNldElzVGltZW91dCh0cnVlKTsKKyAg
ICBlcnJvci5zZXRBc1RpbWVvdXQoKTsKICAgICByZXR1cm4gZXJyb3I7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAu
Y3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291
cC5jcHAKaW5kZXggM2QwYTU0YmI2MTM3NTY1OTcxODY5NjQwM2I5M2RmZGEyYTRlMmRlMy4uYTU1
NWNhOTFiNTI3ZmI5NmRkMjgzN2U4ZDBjMGZkODI2OGIwYjc1ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAK
QEAgLTE4NiwyNyArMTg2LDI0IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxDZXJ0aWZpY2F0ZUluZm8+
OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBDZXJ0aWZpY2F0CiAKIHZvaWQgQXJn
dW1lbnRDb2RlcjxSZXNvdXJjZUVycm9yPjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RW5j
b2RlciYgZW5jb2RlciwgY29uc3QgUmVzb3VyY2VFcnJvciYgcmVzb3VyY2VFcnJvcikKIHsKLSAg
ICBib29sIGVycm9ySXNOdWxsID0gcmVzb3VyY2VFcnJvci5pc051bGwoKTsKLSAgICBlbmNvZGVy
IDw8IGVycm9ySXNOdWxsOwotICAgIGlmIChlcnJvcklzTnVsbCkKKyAgICBlbmNvZGVyLmVuY29k
ZUVudW0ocmVzb3VyY2VFcnJvci50eXBlKCkpOworICAgIGlmIChyZXNvdXJjZUVycm9yLmlzTnVs
bCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBlbmNvZGVyIDw8IHJlc291cmNlRXJyb3IuZG9t
YWluKCk7CiAgICAgZW5jb2RlciA8PCByZXNvdXJjZUVycm9yLmVycm9yQ29kZSgpOwogICAgIGVu
Y29kZXIgPDwgcmVzb3VyY2VFcnJvci5mYWlsaW5nVVJMKCkuc3RyaW5nKCk7CiAgICAgZW5jb2Rl
ciA8PCByZXNvdXJjZUVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCk7Ci0gICAgZW5jb2RlciA8
PCByZXNvdXJjZUVycm9yLmlzQ2FuY2VsbGF0aW9uKCk7Ci0gICAgZW5jb2RlciA8PCByZXNvdXJj
ZUVycm9yLmlzVGltZW91dCgpOwogCiAgICAgZW5jb2RlciA8PCBDZXJ0aWZpY2F0ZUluZm8ocmVz
b3VyY2VFcnJvcik7CiB9CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZUVycm9yPjo6ZGVj
b2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUmVzb3VyY2VFcnJvciYg
cmVzb3VyY2VFcnJvcikKIHsKLSAgICBib29sIGVycm9ySXNOdWxsOwotICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoZXJyb3JJc051bGwpKQorICAgIFJlc291cmNlRXJyb3JCYXNlOjpUeXBlIGVycm9y
VHlwZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShlcnJvclR5cGUpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGVycm9ySXNOdWxsKSB7CisgICAgaWYgKGVycm9yVHlwZSA9
PSBSZXNvdXJjZUVycm9yQmFzZTo6VHlwZTo6TnVsbCkgewogICAgICAgICByZXNvdXJjZUVycm9y
ID0gUmVzb3VyY2VFcnJvcigpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0yMjcs
MTcgKzIyNCw4IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZUVycm9yPjo6ZGVjb2RlUGxh
dGZvcm1EYXRhKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGxvY2FsaXplZERlc2NyaXB0aW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
Ym9vbCBpc0NhbmNlbGxhdGlvbjsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzQ2FuY2VsbGF0
aW9uKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYm9vbCBpc1RpbWVvdXQ7Ci0gICAg
aWYgKCFkZWNvZGVyLmRlY29kZShpc1RpbWVvdXQpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
ICAgICByZXNvdXJjZUVycm9yID0gUmVzb3VyY2VFcnJvcihkb21haW4sIGVycm9yQ29kZSwgVVJM
KFVSTCgpLCBmYWlsaW5nVVJMKSwgbG9jYWxpemVkRGVzY3JpcHRpb24pOwotICAgIHJlc291cmNl
RXJyb3Iuc2V0SXNDYW5jZWxsYXRpb24oaXNDYW5jZWxsYXRpb24pOwotICAgIHJlc291cmNlRXJy
b3Iuc2V0SXNUaW1lb3V0KGlzVGltZW91dCk7CisgICAgcmVzb3VyY2VFcnJvci5zZXRUeXBlKGVy
cm9yVHlwZSk7CiAKICAgICBDZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZvOwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoY2VydGlmaWNhdGVJbmZvKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280329</attachid>
            <date>2016-06-02 06:17:18 -0700</date>
            <delta_ts>2016-06-07 02:21:19 -0700</delta_ts>
            <desc>Trying to fix win build</desc>
            <filename>bug-158299-20160602151836.patch</filename>
            <type>text/plain</type>
            <size>19781</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNTk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTZjY2I2MTkwN2U2MTM2
YzUyYTJlYjE2NjU0NTZiNzJhODViMWNkMC4uODNjZmJiOTgxYTIzMmQyN2UwNGJmNTE3MjMwZGRk
NDY3YWU5YjNiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE2LTA2LTAyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgSW50cm9k
dWNlIGEgUmVzb3VyY2VFcnJvckJhc2UgdHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4Mjk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNpbmcgYW4gZW51bSB0eXBlIGZvciBSZXNvdXJj
ZUVycm9yQmFzZS4KKyAgICAgICAgUmVwbGFjaW5nIHNldHRlcnMgdGFraW5nIGEgYm9vbGVhbiBi
eSBzZXR0ZXJzIHdpdGhvdXQgYW55IHBhcmFtZXRlciBtb2RpZnlpbmcgdGhlIHR5cGUuCisgICAg
ICAgIFVwZGF0aW5nIHJlbGF0ZWQgY2FsbGluZyBjb2RlLgorCisgICAgICAgIE5vIGNoYW5nZSBv
ZiBiZWhhdmlvci4KKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c3RvcExvYWRpbmdGb3JQb2xpY3lDaGFuZ2Up
OgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpjYW5jZWwpOgorICAgICAgICAq
IGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNhbmNlbGxlZEVycm9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpibG9ja2VkRXJyb3IpOgorICAgICAgICAqIGxvYWRl
ci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRo
cmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmNhbmNlbCk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yQmFzZTo6Y29weSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9y
QmFzZTo6Y29tcGFyZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9y
QmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvckJhc2U6OnNldFR5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvckJhc2U6OnR5cGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvckJhc2U6OmlzTnVsbCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUVycm9yQmFzZTo6c2V0QXNDYW5jZWxsYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VFcnJvckJhc2U6OmlzQ2FuY2VsbGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlRXJyb3JCYXNlOjpzZXRBc1RpbWVvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VF
cnJvckJhc2U6OmlzVGltZW91dCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yQmFz
ZTo6UmVzb3VyY2VFcnJvckJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvckJh
c2U6OmRvbWFpbik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yQmFzZTo6ZXJyb3JD
b2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6bnNFcnJvcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlRXJyb3I6OnRpbWVvdXRFcnJvcik6CisKIDIwMTYtMDYtMDIgIENhcmxvcyBHYXJjaWEgQ2Ft
cG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXYXlsYW5kXSBQbGF0Zm9ybURp
c3BsYXlXYXlsYW5kIGRlc3RydWN0b3IgaXMgc3VwZXIgY3Jhc2h5CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNWM2
NDNkN2EyYTU1NjBkYjAzZWMyYmNiODdlNjIwYzRiNGZkZjhjMi4uZWMxMWQ4MWVlYzQ2NDMzMDMz
YTA3ODgyMjI1M2U2NTI0NjYxYjc3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE2
LTA2LTAyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAg
ICAgICAgSW50cm9kdWNlIGEgUmVzb3VyY2VFcnJvckJhc2UgdHlwZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4Mjk5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvc291cC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnNTb3VwLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZXNvdXJj
ZUVycm9yPjo6ZW5jb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2Rl
cjxSZXNvdXJjZUVycm9yPjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKElQQzo6QXJn
dW1lbnRDb2RlcjxQcm90ZWN0aW9uU3BhY2U+OjplbmNvZGVQbGF0Zm9ybURhdGEpOiBEZWxldGVk
LgorCiAyMDE2LTA2LTAxICBZb25nanVuIFpoYW5nICA8eW9uZ2p1bl96aGFuZ0BhcHBsZS5jb20+
CiAKICAgICAgICAgTm90aWZ5IGNsaWVudCBpbW1lZGlhdGVseSBpZiBuZXR3b3JrIHNlc3Npb24g
ZG9lc24ndCBleGlzdCBmb3IgYSBzeW5jaHJvbm91cyBYSFIgbG9hZC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IDlkZjU2NTBlNTNjZGYyMWQxOGMxMTM5ZTlh
MjVjYzU1YzQ0NWNhMzcuLmExMjFkZTY5ZjgzMjJlYjcxOWU5YWRmNjI2NGM5YmVlOWFlZmE4YTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtODQxLDcgKzg0
MSw3IEBAIFJlc291cmNlRXJyb3IgRG9jdW1lbnRMb2FkZXI6OmludGVycnVwdGVkRm9yUG9saWN5
Q2hhbmdlRXJyb3IoKSBjb25zdAogdm9pZCBEb2N1bWVudExvYWRlcjo6c3RvcExvYWRpbmdGb3JQ
b2xpY3lDaGFuZ2UoKQogewogICAgIFJlc291cmNlRXJyb3IgZXJyb3IgPSBpbnRlcnJ1cHRlZEZv
clBvbGljeUNoYW5nZUVycm9yKCk7Ci0gICAgZXJyb3Iuc2V0SXNDYW5jZWxsYXRpb24odHJ1ZSk7
CisgICAgZXJyb3Iuc2V0QXNDYW5jZWxsYXRpb24oKTsKICAgICBjYW5jZWxNYWluUmVzb3VyY2VM
b2FkKGVycm9yKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCA5MGU0YmZiYzExMjM4OTNhYjEzNTI0NWZiNzQ5Nzc4
ZDNiNjk5NWFkLi5lZTM5YmQ1NmIyNGIwYzYyNjU0ZThhMzRlYzllMmQ2Yzg0ZjBkZWJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNw
cApAQCAtMTYxLDcgKzE2MSw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpjYW5j
ZWwoKQogICAgIGlmIChtX2NsaWVudCAmJiBtX3Jlc291cmNlKSB7CiAgICAgICAgIC8vIEZJWE1F
OiBUaGlzIGVycm9yIGlzIHNlbnQgdG8gdGhlIGNsaWVudCBpbiBkaWRGYWlsKCksIHNvIGl0IHNo
b3VsZCBub3QgYmUgYW4gaW50ZXJuYWwgb25lLiBVc2UgRnJhbWVMb2FkZXJDbGllbnQ6OmNhbmNl
bGxlZEVycm9yKCkgaW5zdGVhZC4KICAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcihlcnJvckRv
bWFpbldlYktpdEludGVybmFsLCAwLCBtX3Jlc291cmNlLT51cmwoKSwgIkxvYWQgY2FuY2VsbGVk
Iik7Ci0gICAgICAgIGVycm9yLnNldElzQ2FuY2VsbGF0aW9uKHRydWUpOworICAgICAgICBlcnJv
ci5zZXRBc0NhbmNlbGxhdGlvbigpOwogICAgICAgICBkaWRGYWlsKG1fcmVzb3VyY2UtPmlkZW50
aWZpZXIoKSwgZXJyb3IpOwogICAgIH0KICAgICBjbGVhclJlc291cmNlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmgKaW5kZXggOTg0ZjQ4ZWIyYzEyZjBiZDVmOGNlNTNhOGFjMTAw
OTkwOTQ2NTg4Mi4uNTc5YjM3ODA5MjM2OGVkYzE3OWVlZTY3ZjY2NmRlYTJjMWU1ZGMxYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaApAQCAtMzMwLDE1ICszMzAsMTUgQEAgcHVi
bGljOgogICAgIHZvaWQgY29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IGNoYXIq
LCBpbnQpIG92ZXJyaWRlIHsgfQogICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9h
ZGVyKikgb3ZlcnJpZGUgeyB9CiAKLSAgICBSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlIHsgUmVzb3VyY2VFcnJvciBlcnJvcigiIiwg
MCwgVVJMKCksICIiKTsgZXJyb3Iuc2V0SXNDYW5jZWxsYXRpb24odHJ1ZSk7IHJldHVybiBlcnJv
cjsgfQotICAgIFJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3IoIiIsIDAsIFVSTCgpLCAiIik7IH0K
LSAgICBSZXNvdXJjZUVycm9yIGJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGUgeyByZXR1cm4gUmVzb3VyY2VFcnJvcigiIiwgMCwgVVJM
KCksICIiKTsgfQotICAgIFJlc291cmNlRXJyb3IgY2Fubm90U2hvd1VSTEVycm9yKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3IoIiIsIDAsIFVS
TCgpLCAiIik7IH0KLSAgICBSZXNvdXJjZUVycm9yIGludGVycnVwdGVkRm9yUG9saWN5Q2hhbmdl
RXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGUgeyByZXR1cm4gUmVzb3VyY2VF
cnJvcigiIiwgMCwgVVJMKCksICIiKTsgfQotCi0gICAgUmVzb3VyY2VFcnJvciBjYW5ub3RTaG93
TUlNRVR5cGVFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGUgeyByZXR1cm4g
UmVzb3VyY2VFcnJvcigiIiwgMCwgVVJMKCksICIiKTsgfQotICAgIFJlc291cmNlRXJyb3IgZmls
ZURvZXNOb3RFeGlzdEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZSB7IHJl
dHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCBVUkwoKSwgIiIpOyB9Ci0gICAgUmVzb3VyY2VFcnJv
ciBwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVy
cmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCBVUkwoKSwgIiIpOyB9CisgICAgUmVz
b3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlk
ZSB7IFJlc291cmNlRXJyb3IgZXJyb3I7IGVycm9yLnNldEFzQ2FuY2VsbGF0aW9uKCk7IHJldHVy
biBlcnJvcjsgfQorICAgIFJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3IoKTsgfQorICAgIFJlc291
cmNlRXJyb3IgYmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVl
c3QmKSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCk7IH0KKyAgICBSZXNvdXJjZUVy
cm9yIGNhbm5vdFNob3dVUkxFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZSB7
IHJldHVybiBSZXNvdXJjZUVycm9yKCk7IH0KKyAgICBSZXNvdXJjZUVycm9yIGludGVycnVwdGVk
Rm9yUG9saWN5Q2hhbmdlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGUgeyBy
ZXR1cm4gUmVzb3VyY2VFcnJvcigpOyB9CisKKyAgICBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dN
SU1FVHlwZUVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZSB7IHJldHVybiBS
ZXNvdXJjZUVycm9yKCk7IH0KKyAgICBSZXNvdXJjZUVycm9yIGZpbGVEb2VzTm90RXhpc3RFcnJv
cihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGUgeyByZXR1cm4gUmVzb3VyY2VFcnJv
cigpOyB9CisgICAgUmVzb3VyY2VFcnJvciBwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCk7IH0K
IAogICAgIGJvb2wgc2hvdWxkRmFsbEJhY2soY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmlu
ZGV4IDM0YTQ0MWI0ZGM1Mzg1OGNiOTc4N2FmY2ZiYTE1OWFkYWJlOTU3NmMuLmI1ZGVmZmEwZWRh
ZGJlYTQwM2RiMzE2NTY2NjJiMTc5N2EwZDEwOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcApAQCAtMzQwNiw3ICszNDA2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmV0cnlB
ZnRlckZhaWxlZENhY2hlT25seU1haW5SZXNvdXJjZUxvYWQoKQogUmVzb3VyY2VFcnJvciBGcmFt
ZUxvYWRlcjo6Y2FuY2VsbGVkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSBj
b25zdAogewogICAgIFJlc291cmNlRXJyb3IgZXJyb3IgPSBtX2NsaWVudC5jYW5jZWxsZWRFcnJv
cihyZXF1ZXN0KTsKLSAgICBlcnJvci5zZXRJc0NhbmNlbGxhdGlvbih0cnVlKTsKKyAgICBlcnJv
ci5zZXRBc0NhbmNlbGxhdGlvbigpOwogICAgIHJldHVybiBlcnJvcjsKIH0KIApAQCAtMzQxOCw3
ICszNDE4LDcgQEAgUmVzb3VyY2VFcnJvciBGcmFtZUxvYWRlcjo6YmxvY2tlZEJ5Q29udGVudEJs
b2NrZXJFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHIKIFJlc291cmNlRXJyb3IgRnJhbWVM
b2FkZXI6OmJsb2NrZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpIGNvbnN0
CiB7CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvciA9IG1fY2xpZW50LmJsb2NrZWRFcnJvcihyZXF1
ZXN0KTsKLSAgICBlcnJvci5zZXRJc0NhbmNlbGxhdGlvbih0cnVlKTsKKyAgICBlcnJvci5zZXRB
c0NhbmNlbGxhdGlvbigpOwogICAgIHJldHVybiBlcnJvcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDQxMDExOGI1NTEx
NzY4M2U5NDFjYzdlNGU5MDZmZGEwMjQxMWZlYTcuLjg2Y2I4ODE1YzIzNTk3YjhmMGY4YmMxOWQ4
NTM0ODU2NjBiYmIxOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJU
aHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhy
ZWFkYWJsZUxvYWRlci5jcHAKQEAgLTE0MCw4ICsxNDAsOCBAQCB2b2lkIFdvcmtlclRocmVhZGFi
bGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmNhbmNlbCgpCiAgICAgaWYgKCFjbGllbnRXcmFw
cGVyLT5kb25lKCkpIHsKICAgICAgICAgLy8gSWYgdGhlIGNsaWVudCBoYXNuJ3QgcmVhY2hlZCBh
IHRlcm1pbmF0aW9uIHN0YXRlLCB0aGVuIHRyYW5zaXRpb24gaXQgYnkgc2VuZGluZyBhIGNhbmNl
bGxhdGlvbiBlcnJvci4KICAgICAgICAgLy8gTm90ZTogbm8gbW9yZSBjbGllbnQgY2FsbGJhY2tz
IHdpbGwgYmUgZG9uZSBhZnRlciB0aGlzIG1ldGhvZCAtLSB0aGUgY2xlYXJDbGllbnRXcmFwcGVy
KCkgY2FsbCBlbnN1cmVzIHRoYXQuCi0gICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3IoU3RyaW5n
KCksIDAsIFVSTCgpLCBTdHJpbmcoKSk7Ci0gICAgICAgIGVycm9yLnNldElzQ2FuY2VsbGF0aW9u
KHRydWUpOworICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yOworICAgICAgICBlcnJvci5zZXRB
c0NhbmNlbGxhdGlvbigpOwogICAgICAgICBjbGllbnRXcmFwcGVyLT5kaWRGYWlsKGVycm9yKTsK
ICAgICB9CiAgICAgY2xlYXJDbGllbnRXcmFwcGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuY3BwCmluZGV4IGNlNThmOGUz
NDliODQxN2JlOGVmYzc3NjVkY2U3YjVjNjZkZGI1MDguLjg0M2QyMDlhMWVhYWNjNWY5MDliMGU3
ZjBhOGI4ODE5NzEwOWM5MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuY3BwCkBAIC00MCw5ICs0MCw3IEBAIFJlc291cmNl
RXJyb3IgUmVzb3VyY2VFcnJvckJhc2U6OmNvcHkoKSBjb25zdAogICAgIGVycm9yQ29weS5tX2Vy
cm9yQ29kZSA9IG1fZXJyb3JDb2RlOwogICAgIGVycm9yQ29weS5tX2ZhaWxpbmdVUkwgPSBtX2Zh
aWxpbmdVUkwuaXNvbGF0ZWRDb3B5KCk7CiAgICAgZXJyb3JDb3B5Lm1fbG9jYWxpemVkRGVzY3Jp
cHRpb24gPSBtX2xvY2FsaXplZERlc2NyaXB0aW9uLmlzb2xhdGVkQ29weSgpOwotICAgIGVycm9y
Q29weS5tX2lzTnVsbCA9IG1faXNOdWxsOwotICAgIGVycm9yQ29weS5tX2lzQ2FuY2VsbGF0aW9u
ID0gbV9pc0NhbmNlbGxhdGlvbjsKLSAgICBlcnJvckNvcHkubV9pc1RpbWVvdXQgPSBtX2lzVGlt
ZW91dDsKKyAgICBlcnJvckNvcHkubV90eXBlID0gbV90eXBlOwogICAgIHBsYXRmb3JtQ29weShl
cnJvckNvcHkpOwogICAgIHJldHVybiBlcnJvckNvcHk7CiB9CkBAIC01Nyw3ICs1NSw3IEBAIGJv
b2wgUmVzb3VyY2VFcnJvckJhc2U6OmNvbXBhcmUoY29uc3QgUmVzb3VyY2VFcnJvciYgYSwgY29u
c3QgUmVzb3VyY2VFcnJvciYgYikKICAgICBpZiAoYS5pc051bGwoKSAmJiBiLmlzTnVsbCgpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChhLmlzTnVsbCgpIHx8IGIuaXNOdWxsKCkp
CisgICAgaWYgKGEudHlwZSgpICE9IGIudHlwZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBpZiAoYS5kb21haW4oKSAhPSBiLmRvbWFpbigpKQpAQCAtNzIsMTIgKzcwLDYgQEAgYm9v
bCBSZXNvdXJjZUVycm9yQmFzZTo6Y29tcGFyZShjb25zdCBSZXNvdXJjZUVycm9yJiBhLCBjb25z
dCBSZXNvdXJjZUVycm9yJiBiKQogICAgIGlmIChhLmxvY2FsaXplZERlc2NyaXB0aW9uKCkgIT0g
Yi5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBp
ZiAoYS5pc0NhbmNlbGxhdGlvbigpICE9IGIuaXNDYW5jZWxsYXRpb24oKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgaWYgKGEuaXNUaW1lb3V0KCkgIT0gYi5pc1RpbWVvdXQoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgcmV0dXJuIFJlc291cmNlRXJyb3I6OnBsYXRmb3Jt
Q29tcGFyZShhLCBiKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUVycm9yQmFzZS5oCmluZGV4IGE4MGU3NjE5YjVhZDlkZGRkZTg1NjgyMzc2
MmVjZTRmNTUxYmFkM2YuLjc1ZTU4ZWJkMDNhZWZmNjhiYzA3ZGQ1OTM4YTdiNTFhN2YyYTM5ZWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJv
ckJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJy
b3JCYXNlLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQ2Fub24g
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjMsOCArMjQsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBSZXNv
dXJjZUVycm9yQmFzZV9oCi0jZGVmaW5lIFJlc291cmNlRXJyb3JCYXNlX2gKKyNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBA
IC00MCwzOCArNDAsMzggQEAgcHVibGljOgogICAgIC8vIE1ha2VzIGEgZGVlcCBjb3B5LiBVc2Vm
dWwgZm9yIHdoZW4geW91IG5lZWQgdG8gdXNlIGEgUmVzb3VyY2VFcnJvciBvbiBhbm90aGVyIHRo
cmVhZC4KICAgICBSZXNvdXJjZUVycm9yIGNvcHkoKSBjb25zdDsKIAotICAgIGJvb2wgaXNOdWxs
KCkgY29uc3QgeyByZXR1cm4gbV9pc051bGw7IH0KLQogICAgIGNvbnN0IFN0cmluZyYgZG9tYWlu
KCkgY29uc3QgeyBsYXp5SW5pdCgpOyByZXR1cm4gbV9kb21haW47IH0KICAgICBpbnQgZXJyb3JD
b2RlKCkgY29uc3QgeyBsYXp5SW5pdCgpOyByZXR1cm4gbV9lcnJvckNvZGU7IH0KICAgICBjb25z
dCBVUkwmIGZhaWxpbmdVUkwoKSBjb25zdCB7IGxhenlJbml0KCk7IHJldHVybiBtX2ZhaWxpbmdV
Ukw7IH0KICAgICBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uKCkgY29uc3QgeyBs
YXp5SW5pdCgpOyByZXR1cm4gbV9sb2NhbGl6ZWREZXNjcmlwdGlvbjsgfQogCi0gICAgdm9pZCBz
ZXRJc0NhbmNlbGxhdGlvbihib29sIGlzQ2FuY2VsbGF0aW9uKSB7IG1faXNDYW5jZWxsYXRpb24g
PSBpc0NhbmNlbGxhdGlvbjsgfQotICAgIGJvb2wgaXNDYW5jZWxsYXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX2lzQ2FuY2VsbGF0aW9uOyB9CisgICAgZW51bSBjbGFzcyBUeXBlIHsKKyAgICAgICAg
TnVsbCwKKyAgICAgICAgRGVmYXVsdCwKKyAgICAgICAgQ2FuY2VsbGF0aW9uLAorICAgICAgICBU
aW1lb3V0CisgICAgfTsKKyAgICB2b2lkIHNldFR5cGUoVHlwZSB0eXBlKSB7IG1fdHlwZSA9IHR5
cGU7IH0KKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKworICAgIGJv
b2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6Ok51bGw7IH0KKyAgICB2
b2lkIHNldEFzQ2FuY2VsbGF0aW9uKCkgeyBtX3R5cGUgPSBUeXBlOjpDYW5jZWxsYXRpb247IH0K
KyAgICBib29sIGlzQ2FuY2VsbGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6
OkNhbmNlbGxhdGlvbjsgfQogCi0gICAgdm9pZCBzZXRJc1RpbWVvdXQoYm9vbCBpc1RpbWVvdXQp
IHsgbV9pc1RpbWVvdXQgPSBpc1RpbWVvdXQ7IH0KLSAgICBib29sIGlzVGltZW91dCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNUaW1lb3V0OyB9CisgICAgdm9pZCBzZXRBc1RpbWVvdXQoKSB7IG1fdHlw
ZSA9IFR5cGU6OlRpbWVvdXQ7IH0KKyAgICBib29sIGlzVGltZW91dCgpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZSA9PSBUeXBlOjpUaW1lb3V0OyB9CiAKICAgICBzdGF0aWMgYm9vbCBjb21wYXJlKGNv
bnN0IFJlc291cmNlRXJyb3ImLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKIHByb3RlY3RlZDoK
LSAgICBSZXNvdXJjZUVycm9yQmFzZSgpCi0gICAgICAgIDogbV9lcnJvckNvZGUoMCkKLSAgICAg
ICAgLCBtX2lzTnVsbCh0cnVlKQotICAgICAgICAsIG1faXNDYW5jZWxsYXRpb24oZmFsc2UpCi0g
ICAgICAgICwgbV9pc1RpbWVvdXQoZmFsc2UpCi0gICAgewotICAgIH0KKyAgICBSZXNvdXJjZUVy
cm9yQmFzZSgpIHsgfQogCiAgICAgUmVzb3VyY2VFcnJvckJhc2UoY29uc3QgU3RyaW5nJiBkb21h
aW4sIGludCBlcnJvckNvZGUsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBs
b2NhbGl6ZWREZXNjcmlwdGlvbikKICAgICAgICAgOiBtX2RvbWFpbihkb21haW4pCiAgICAgICAg
ICwgbV9mYWlsaW5nVVJMKGZhaWxpbmdVUkwpCiAgICAgICAgICwgbV9sb2NhbGl6ZWREZXNjcmlw
dGlvbihsb2NhbGl6ZWREZXNjcmlwdGlvbikKICAgICAgICAgLCBtX2Vycm9yQ29kZShlcnJvckNv
ZGUpCi0gICAgICAgICwgbV9pc051bGwoZmFsc2UpCi0gICAgICAgICwgbV9pc0NhbmNlbGxhdGlv
bihmYWxzZSkKLSAgICAgICAgLCBtX2lzVGltZW91dChmYWxzZSkKKyAgICAgICAgLCBtX3R5cGUo
VHlwZTo6RGVmYXVsdCkKICAgICB7CiAgICAgfQogCkBAIC04OSwxNSArODksMTEgQEAgcHJvdGVj
dGVkOgogICAgIFN0cmluZyBtX2RvbWFpbjsKICAgICBVUkwgbV9mYWlsaW5nVVJMOwogICAgIFN0
cmluZyBtX2xvY2FsaXplZERlc2NyaXB0aW9uOwotICAgIGludCBtX2Vycm9yQ29kZTsKLSAgICBi
b29sIG1faXNOdWxsIDogMTsKLSAgICBib29sIG1faXNDYW5jZWxsYXRpb24gOiAxOwotICAgIGJv
b2wgbV9pc1RpbWVvdXQgOiAxOworICAgIGludCBtX2Vycm9yQ29kZSB7IDAgfTsKKyAgICBUeXBl
IG1fdHlwZSB7IFR5cGU6Ok51bGwgfTsKIH07CiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29u
c3QgUmVzb3VyY2VFcnJvciYgYSwgY29uc3QgUmVzb3VyY2VFcnJvciYgYikgeyByZXR1cm4gUmVz
b3VyY2VFcnJvckJhc2U6OmNvbXBhcmUoYSwgYik7IH0KIGlubGluZSBib29sIG9wZXJhdG9yIT0o
Y29uc3QgUmVzb3VyY2VFcnJvciYgYSwgY29uc3QgUmVzb3VyY2VFcnJvciYgYikgeyByZXR1cm4g
IShhID09IGIpOyB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFJlc291
cmNlRXJyb3JCYXNlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAppbmRleCA2MGJmYjM2NTkxZTA3YzFiZmJlYWI2YjFl
M2I1NmZhYjk4NDc4NDczLi4yNjI4OGU2YWM0MjYwM2E5YTdjNTE0NmJjNjczMGRjOWRiNzUzZWFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
RXJyb3JDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZUVycm9yQ0YuY3BwCkBAIC00Myw5ICs0Myw4IEBAIFJlc291cmNlRXJyb3I6OlJlc291cmNl
RXJyb3IoQ0ZFcnJvclJlZiBjZkVycm9yKQogICAgIDogbV9kYXRhSXNVcFRvRGF0ZShmYWxzZSkK
ICAgICAsIG1fcGxhdGZvcm1FcnJvcihjZkVycm9yKQogewotICAgIG1faXNOdWxsID0gIWNmRXJy
b3I7Ci0gICAgaWYgKCFtX2lzTnVsbCkKLSAgICAgICAgbV9pc1RpbWVvdXQgPSBDRkVycm9yR2V0
Q29kZShtX3BsYXRmb3JtRXJyb3IuZ2V0KCkpID09IGtDRlVSTEVycm9yVGltZWRPdXQ7CisgICAg
aWYgKGNmRXJyb3IpCisgICAgICAgIHNldFR5cGUoKENGRXJyb3JHZXRDb2RlKG1fcGxhdGZvcm1F
cnJvci5nZXQoKSkgPT0ga0NGVVJMRXJyb3JUaW1lZE91dCkgPyBUeXBlOjpUaW1lb3V0IDogVHlw
ZTo6RGVmYXVsdCk7CiB9CiAKICNpZiBQTEFURk9STShXSU4pCkBAIC0xMzUsNyArMTM0LDcgQEAg
Ym9vbCBSZXNvdXJjZUVycm9yOjpwbGF0Zm9ybUNvbXBhcmUoY29uc3QgUmVzb3VyY2VFcnJvciYg
YSwgY29uc3QgUmVzb3VyY2VFcnJvciYKIAogQ0ZFcnJvclJlZiBSZXNvdXJjZUVycm9yOjpjZkVy
cm9yKCkgY29uc3QKIHsKLSAgICBpZiAobV9pc051bGwpIHsKKyAgICBpZiAoaXNOdWxsKCkpIHsK
ICAgICAgICAgQVNTRVJUKCFtX3BsYXRmb3JtRXJyb3IpOwogICAgICAgICByZXR1cm4gMDsKICAg
ICB9CkBAIC0xNzMsNyArMTcyLDcgQEAgUmVzb3VyY2VFcnJvcjo6b3BlcmF0b3IgQ0ZFcnJvclJl
ZigpIGNvbnN0CiBSZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKENGU3RyZWFtRXJyb3IgZXJy
b3IpCiAgICAgOiBtX2RhdGFJc1VwVG9EYXRlKHRydWUpCiB7Ci0gICAgbV9pc051bGwgPSBmYWxz
ZTsKKyAgICBtX3R5cGUgPSBUeXBlOjpEZWZhdWx0OwogICAgIG1fZXJyb3JDb2RlID0gZXJyb3Iu
ZXJyb3I7CiAKICAgICBzd2l0Y2goZXJyb3IuZG9tYWluKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQppbmRleCA2
MGIwZGZmM2Y2MTFjYTE0ZGY2ZjQ2N2Y3MjdjNTFkNTI5YzQzNzRkLi5jMGYzZDY0OTZhZWJjOWQ4
MjY0Mjc5ZWUxN2QzZDM0MDBhYmNmNWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0KQEAgLTE5NiwxNCArMTk2
LDEzIEBAIFJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoTlNFcnJvciAqZXJyb3IpCiAgICAg
OiBtX2RhdGFJc1VwVG9EYXRlKGZhbHNlKQogICAgICwgbV9wbGF0Zm9ybUVycm9yKHJlaW50ZXJw
cmV0X2Nhc3Q8Q0ZFcnJvclJlZj4oZXJyb3IpKQogewotICAgIG1faXNOdWxsID0gIWVycm9yOwot
ICAgIGlmICghbV9pc051bGwpCi0gICAgICAgIG1faXNUaW1lb3V0ID0gW2Vycm9yIGNvZGVdID09
IE5TVVJMRXJyb3JUaW1lZE91dDsKKyAgICBpZiAoZXJyb3IpCisgICAgICAgIHNldFR5cGUoKFtl
cnJvciBjb2RlXSA9PSBOU1VSTEVycm9yVGltZWRPdXQpID8gVHlwZTo6VGltZW91dCA6IFR5cGU6
OkRlZmF1bHQpOwogfQogCiBOU0Vycm9yICpSZXNvdXJjZUVycm9yOjpuc0Vycm9yKCkgY29uc3QK
IHsKLSAgICBpZiAobV9pc051bGwpIHsKKyAgICBpZiAoaXNOdWxsKCkpIHsKICAgICAgICAgQVNT
RVJUKCFtX3BsYXRmb3JtRXJyb3IpOwogICAgICAgICByZXR1cm4gbmlsOwogICAgIH0KQEAgLTI0
MSwxOCArMjQwLDE2IEBAIFJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoTlNFcnJvciAqbnNF
cnJvcikKICAgICA6IG1fZGF0YUlzVXBUb0RhdGUoZmFsc2UpCiAgICAgLCBtX3BsYXRmb3JtRXJy
b3IobnNFcnJvcikKIHsKLSAgICBtX2lzTnVsbCA9ICFuc0Vycm9yOwotICAgIGlmICghbV9pc051
bGwpCi0gICAgICAgIG1faXNUaW1lb3V0ID0gW21fcGxhdGZvcm1FcnJvci5nZXQoKSBjb2RlXSA9
PSBOU1VSTEVycm9yVGltZWRPdXQ7CisgICAgaWYgKG5zRXJyb3IpCisgICAgICAgIHNldFR5cGUo
KFttX3BsYXRmb3JtRXJyb3IuZ2V0KCkgY29kZV0gPT0gTlNVUkxFcnJvclRpbWVkT3V0KSA/IFR5
cGU6OlRpbWVvdXQgOiBUeXBlOjpEZWZhdWx0KTsKIH0KIAogUmVzb3VyY2VFcnJvcjo6UmVzb3Vy
Y2VFcnJvcihDRkVycm9yUmVmIGNmRXJyb3IpCiAgICAgOiBtX2RhdGFJc1VwVG9EYXRlKGZhbHNl
KQogICAgICwgbV9wbGF0Zm9ybUVycm9yKChOU0Vycm9yICopY2ZFcnJvcikKIHsKLSAgICBtX2lz
TnVsbCA9ICFjZkVycm9yOwotICAgIGlmICghbV9pc051bGwpCi0gICAgICAgIG1faXNUaW1lb3V0
ID0gW21fcGxhdGZvcm1FcnJvci5nZXQoKSBjb2RlXSA9PSBOU1VSTEVycm9yVGltZWRPdXQ7Cisg
ICAgaWYgKGNmRXJyb3IpCisgICAgICAgIHNldFR5cGUoKFttX3BsYXRmb3JtRXJyb3IuZ2V0KCkg
Y29kZV0gPT0gTlNVUkxFcnJvclRpbWVkT3V0KSA/IFR5cGU6OlRpbWVvdXQgOiBUeXBlOjpEZWZh
dWx0KTsKIH0KIAogdm9pZCBSZXNvdXJjZUVycm9yOjpwbGF0Zm9ybUxhenlJbml0KCkKQEAgLTI4
Myw3ICsyODAsNyBAQCBib29sIFJlc291cmNlRXJyb3I6OnBsYXRmb3JtQ29tcGFyZShjb25zdCBS
ZXNvdXJjZUVycm9yJiBhLCBjb25zdCBSZXNvdXJjZUVycm9yJgogCiBOU0Vycm9yICpSZXNvdXJj
ZUVycm9yOjpuc0Vycm9yKCkgY29uc3QKIHsKLSAgICBpZiAobV9pc051bGwpIHsKKyAgICBpZiAo
aXNOdWxsKCkpIHsKICAgICAgICAgQVNTRVJUKCFtX3BsYXRmb3JtRXJyb3IpOwogICAgICAgICBy
ZXR1cm4gbmlsOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9SZXNvdXJjZUVycm9yU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwCmluZGV4IGFkNmI4ZTcwODY3M2Fl
YjlhNTY1OGU0Y2NiOGMzNTEyOTllZmVlOWUuLjU3MGFiMDAwMTQ4ZDE3ZDJjNzI4ZTJlMTk1NmJj
NzEzMmFlMTY2ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9SZXNvdXJjZUVycm9yU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcApAQCAtOTMsNyArOTMsNyBAQCBSZXNv
dXJjZUVycm9yIFJlc291cmNlRXJyb3I6OnRpbWVvdXRFcnJvcihjb25zdCBVUkwmIGZhaWxpbmdV
UkwpCiAgICAgc3RhdGljIGNvbnN0IGludCB0aW1lb3V0RXJyb3IgPSAtMTAwMTsKICAgICBzdGF0
aWMgY29uc3QgY2hhciogY29uc3QgIGVycm9yRG9tYWluID0gIldlYktpdE5ldHdvcmtFcnJvciI7
CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvciA9IFJlc291cmNlRXJyb3IoZXJyb3JEb21haW4sIHRp
bWVvdXRFcnJvciwgZmFpbGluZ1VSTCwgIlJlcXVlc3QgdGltZWQgb3V0Iik7Ci0gICAgZXJyb3Iu
c2V0SXNUaW1lb3V0KHRydWUpOworICAgIGVycm9yLnNldEFzVGltZW91dCgpOwogICAgIHJldHVy
biBlcnJvcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3NvdXAvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvc291cC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcAppbmRleCAzZDBhNTRiYjYxMzc1NjU5NzE4Njk2
NDAzYjkzZGZkYTJhNGUyZGUzLi5hNTU1Y2E5MWI1MjdmYjk2ZGQyODM3ZThkMGMwZmQ4MjY4YjBi
NzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvc291cC9XZWJDb3JlQXJndW1l
bnRDb2RlcnNTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvc291cC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNTb3VwLmNwcApAQCAtMTg2LDI3ICsxODYsMjQgQEAgYm9vbCBBcmd1bWVu
dENvZGVyPENlcnRpZmljYXRlSW5mbz46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIs
IENlcnRpZmljYXQKIAogdm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlRXJyb3I+OjplbmNvZGVQ
bGF0Zm9ybURhdGEoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZUVycm9y
JiByZXNvdXJjZUVycm9yKQogewotICAgIGJvb2wgZXJyb3JJc051bGwgPSByZXNvdXJjZUVycm9y
LmlzTnVsbCgpOwotICAgIGVuY29kZXIgPDwgZXJyb3JJc051bGw7Ci0gICAgaWYgKGVycm9ySXNO
dWxsKQorICAgIGVuY29kZXIuZW5jb2RlRW51bShyZXNvdXJjZUVycm9yLnR5cGUoKSk7CisgICAg
aWYgKHJlc291cmNlRXJyb3IuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGVuY29k
ZXIgPDwgcmVzb3VyY2VFcnJvci5kb21haW4oKTsKICAgICBlbmNvZGVyIDw8IHJlc291cmNlRXJy
b3IuZXJyb3JDb2RlKCk7CiAgICAgZW5jb2RlciA8PCByZXNvdXJjZUVycm9yLmZhaWxpbmdVUkwo
KS5zdHJpbmcoKTsKICAgICBlbmNvZGVyIDw8IHJlc291cmNlRXJyb3IubG9jYWxpemVkRGVzY3Jp
cHRpb24oKTsKLSAgICBlbmNvZGVyIDw8IHJlc291cmNlRXJyb3IuaXNDYW5jZWxsYXRpb24oKTsK
LSAgICBlbmNvZGVyIDw8IHJlc291cmNlRXJyb3IuaXNUaW1lb3V0KCk7CiAKICAgICBlbmNvZGVy
IDw8IENlcnRpZmljYXRlSW5mbyhyZXNvdXJjZUVycm9yKTsKIH0KIAogYm9vbCBBcmd1bWVudENv
ZGVyPFJlc291cmNlRXJyb3I+OjpkZWNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnREZWNvZGVyJiBk
ZWNvZGVyLCBSZXNvdXJjZUVycm9yJiByZXNvdXJjZUVycm9yKQogewotICAgIGJvb2wgZXJyb3JJ
c051bGw7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShlcnJvcklzTnVsbCkpCisgICAgUmVzb3Vy
Y2VFcnJvckJhc2U6OlR5cGUgZXJyb3JUeXBlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVt
KGVycm9yVHlwZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoZXJyb3JJc051bGwp
IHsKKyAgICBpZiAoZXJyb3JUeXBlID09IFJlc291cmNlRXJyb3JCYXNlOjpUeXBlOjpOdWxsKSB7
CiAgICAgICAgIHJlc291cmNlRXJyb3IgPSBSZXNvdXJjZUVycm9yKCk7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KQEAgLTIyNywxNyArMjI0LDggQEAgYm9vbCBBcmd1bWVudENvZGVyPFJl
c291cmNlRXJyb3I+OjpkZWNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVy
LAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobG9jYWxpemVkRGVzY3JpcHRpb24pKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBib29sIGlzQ2FuY2VsbGF0aW9uOwotICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoaXNDYW5jZWxsYXRpb24pKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICBib29sIGlzVGltZW91dDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzVGltZW91dCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIHJlc291cmNlRXJyb3IgPSBSZXNvdXJjZUVycm9y
KGRvbWFpbiwgZXJyb3JDb2RlLCBVUkwoVVJMKCksIGZhaWxpbmdVUkwpLCBsb2NhbGl6ZWREZXNj
cmlwdGlvbik7Ci0gICAgcmVzb3VyY2VFcnJvci5zZXRJc0NhbmNlbGxhdGlvbihpc0NhbmNlbGxh
dGlvbik7Ci0gICAgcmVzb3VyY2VFcnJvci5zZXRJc1RpbWVvdXQoaXNUaW1lb3V0KTsKKyAgICBy
ZXNvdXJjZUVycm9yLnNldFR5cGUoZXJyb3JUeXBlKTsKIAogICAgIENlcnRpZmljYXRlSW5mbyBj
ZXJ0aWZpY2F0ZUluZm87CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjZXJ0aWZpY2F0ZUluZm8p
KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280684</attachid>
            <date>2016-06-07 02:21:27 -0700</date>
            <delta_ts>2016-06-07 03:17:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158299-20160607112251.patch</filename>
            <type>text/plain</type>
            <size>67576</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDlkOTFiOTYzYzZmN2Zl
ZjQwZDBkOTg5Y2ZjNmYyNmIyNGQyOWY4NS4uY2ZkYjcxY2U0NjkxYTQwOWJkNGFiN2U4ZDk0ZDgx
ODFhNzE1MWZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNSBAQAorMjAxNi0wNi0wNiAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAgIEludHJv
ZHVjZSBhIFJlc291cmNlRXJyb3JCYXNlIHR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODI5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjaW5nIGFuIGVudW0gdHlwZSBmb3IgUmVzb3Vy
Y2VFcnJvckJhc2UuCisgICAgICAgIEluIG1vc3QgY2FzZXMsIHRoZSB0eXBlIGlzIHNldCBhdCBj
b25zdHJ1Y3Rpb24gdGltZS4KKyAgICAgICAgQnkgZGVmYXVsdCwgY29uc3RydWN0b3Igd2l0aCBu
byBwYXJhbWV0ZXJzIHdpbGwgc2V0IHR5cGUgdG8gTnVsbC4KKyAgICAgICAgQ29uc3RydWN0b3Ig
d2l0aCBwYXJhbWV0ZXJzIHdpbGwgc2V0IHR5cGUgdG8gR2VuZXJhbC4KKworICAgICAgICBSZW1v
dmVkIGJvb2xlYW4gc3RhdGUgZXJyb3IgZmllbGRzLgorCisgICAgICAgIEludHJvZHVjZWQgYSB0
eXBlIHNldHRlci4gSXQgc2hvdWxkIG9ubHkgYmUgdXNlZCB0byAgbWFrZSB0aGUgdHlwZQorICAg
ICAgICBtb3JlIHByZWNpc2UgKHdoZW4gdHlwZSBpcyBOdWxsIG9yIEdlbmVyYWwpLgorCisgICAg
ICAgIFVwZGF0aW5nIHJlbGF0ZWQgY2FsbGluZyBjb2RlLgorICAgICAgICBNYWRlIHNvbWUgY29k
ZSBjbGVhbmluZyAodHJhaWxpbmcgd2hpdGVzcGFjZSByZW1vdmFsKS4KKworICAgICAgICBObyBj
aGFuZ2Ugb2YgYmVoYXZpb3IuCisKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
OiBSZW1vdmluZyB0cmFpbGluZyB3aGl0ZXNwYWNlcy4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyOjp+RG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI6OnNldFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnNl
dE1haW5Eb2N1bWVudEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpz
dG9wTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpjb250aW51ZUFmdGVy
Q29udGVudFBvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c3RvcExv
YWRpbmdGb3JQb2xpY3lDaGFuZ2UpOiBVc2luZyBSZXNvdXJjZUVycm9yIHR5cGUgc2V0dGVyLgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNvbW1pdERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnNldHVwRm9yUmVwbGFjZSk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudExvYWRlcjo6aXNMb2FkaW5nSW5BUElTZW5zZSk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjphZGRBbGxBcmNoaXZlUmVzb3VyY2VzKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjphZGRBcmNoaXZlUmVzb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudExvYWRlcjo6c3VicmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI6OnN1YnJlc291cmNlTG9hZGVyRmluaXNoZWRMb2FkaW5nT25lUGFydCk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Z2V0SWNvbkRhdGFGb3JJY29uVVJMKToKKyAgICAg
ICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y2FuY2VsKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKTogUmVtb3Zp
bmcgdHJhaWxpbmcgd2hpdGVzcGFjZXMuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVh
ZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KTogRGl0dG8uCisgICAgICAgICogbG9hZGVyL0VtcHR5
Q2xpZW50cy5oOiBTdHlsZSByZWZhY3RvcmluZy4KKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwOiBSZW1vdmluZyB0cmFpbGluZyB3aGl0ZXNwYWNlcy4KKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyOjpzdWJtaXRGb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
OjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjbG9zZVVSTCk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGlkRXhwbGljaXRPcGVuKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6bG9hZFVSTEludG9DaGlsZEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Ojpsb2FkQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZEluU2Ft
ZURvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkRnJhbWVSZXF1
ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkVVJMKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpyZXBvcnRCbG9ja2VkUG9ydEZhaWxlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6cmVsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzdG9wQWxsTG9h
ZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZnJhbWVIYXNMb2FkZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnNldERvY3VtZW50TG9hZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzZXRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpjbGllbnRSZWRpcmVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpjbG9zZU9sZERhdGFTb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
OjpwcmVwYXJlRm9yQ2FjaGVkUGFnZVJlc3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXI6Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnN1YnJlc291cmNl
Q2FjaGVQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNoZWNrTG9hZENv
bXBsZXRlRm9yVGhpc0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjb250
aW51ZUxvYWRBZnRlcldpbGxTdWJtaXRGb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpjaGVja0xvYWRDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
bG9hZFBvc3RSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpyZWNl
aXZlZE1haW5SZXNvdXJjZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpk
aXNwYXRjaEJlZm9yZVVubG9hZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Ojpjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXI6OmxvYWRTYW1lRG9jdW1lbnRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyOjpjYW5jZWxsZWRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6YmxvY2tlZEVycm9yKTogVXNpbmcgUmVzb3VyY2VFcnJvciB0eXBlIHNldHRlci4KKyAg
ICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpjYW5jZWwpOiBV
c2luZyBuZXcgUmVzb3VyY2VFcnJvciBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
RXJyb3JCYXNlOjppc29sYXRlZENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ckJhc2U6OnNldFR5cGUpOiBUbyBiZSB1c2VkIHRvIG1ha2UgdGhlIGVycm9yIHR5cGUgbW9yZSBw
cmVjaXNlLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvckJhc2U6OmNvbXBhcmUpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlRXJyb3JCYXNlOjppc051bGwpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VFcnJvckJhc2U6OmlzQ2FuY2VsbGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlRXJyb3JCYXNlOjppc1RpbWVvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VF
cnJvckJhc2U6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvckJhc2U6OlJl
c291cmNlRXJyb3JCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3JCYXNlOjpk
b21haW4pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VF
cnJvci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcik6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpjZXJ0aWZpY2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yOjpwbGF0Zm9ybUxhenlJbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlRXJyb3I6OmNmRXJyb3IpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNv
dXJjZUVycm9yLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVy
cm9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpuc0Vycm9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlRXJyb3I6OnBsYXRmb3JtTGF6eUluaXQpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yLmg6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VF
cnJvcjo6dGltZW91dEVycm9yKToKKwogMjAxNi0wNi0wNiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0
LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIw
MTczNS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwppbmRleCA1NDM0YzUyNTY1Y2NlMTg0YmRlMGI0YWRjYzBjMDcyYmQ5ZDNh
YWMwLi42YTgwNGYyNmZhMGJkMTMwNTYwYWM1YzM1MTZkMThmNzY4MzlmMDNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMTYtMDYtMDYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFi
bGV0QGNyZi5jYW5vbi5mcj4KKworICAgICAgICBJbnRyb2R1Y2UgYSBSZXNvdXJjZUVycm9yQmFz
ZSB0eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTgyOTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFNoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFJlc291cmNlRXJyb3I+OjplbmNvZGVQbGF0Zm9ybURhdGEpOgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlc291cmNlRXJyb3I+OjpkZWNvZGVQbGF0Zm9ybURh
dGEpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFByb3RlY3Rpb25TcGFjZT46OmVuY29k
ZVBsYXRmb3JtRGF0YSk6IERlbGV0ZWQuCisKIDIwMTYtMDYtMDYgIEFudG9pbmUgUXVpbnQgIDxn
cmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBQb3NpdGlvbiBvZiBXZWJHTCA8Y2FudmFzPiBv
biBpT1MgaXMgaW5jb3JyZWN0IHdpdGggQ1NTIGJvcmRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGIzZWQxOGJmNDY5NDMzOGM5YTQyNTNlNDZmMGJjODgx
MTc1NDg1YzkuLmI2YzNiMDE2NjcxMDA1MDAxNTNjNTA3MjVjYWM4MDdlM2QzMDdiYzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtNywxMyArNywxMyBAQAog
ICogYXJlIG1ldDoKICAqCiAgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
ICAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAogICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgogICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5j
LiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgogICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uIAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KICAqCiAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQogICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRApAQCAtMTY5LDcgKzE2OSw3IEBAIERvY3VtZW50TG9hZGVyOjp+RG9jdW1lbnRMb2FkZXIo
KQogICAgIGlmIChtX2ljb25EYXRhQ2FsbGJhY2spCiAgICAgICAgIG1faWNvbkRhdGFDYWxsYmFj
ay0+aW52YWxpZGF0ZSgpOwogICAgIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPmNsZWFyRG9jdW1l
bnRMb2FkZXIoKTsKLSAgICAKKwogICAgIGNsZWFyTWFpblJlc291cmNlKCk7CiB9CiAKQEAgLTIz
Miw3ICsyMzIsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzZXRSZXF1ZXN0KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxKQogICAgICAgICBtX2NvbW1pdHRlZCA9IGZhbHNlOwogCiAgICAgLy8g
V2Ugc2hvdWxkIG5ldmVyIGJlIGdldHRpbmcgYSByZWRpcmVjdCBjYWxsYmFjayBhZnRlciB0aGUg
ZGF0YQotICAgIC8vIHNvdXJjZSBpcyBjb21taXR0ZWQsIGV4Y2VwdCBpbiB0aGUgdW5yZWFjaGFi
bGUgVVJMIGNhc2UuIEl0IAorICAgIC8vIHNvdXJjZSBpcyBjb21taXR0ZWQsIGV4Y2VwdCBpbiB0
aGUgdW5yZWFjaGFibGUgVVJMIGNhc2UuIEl0CiAgICAgLy8gd291bGQgYmUgYSBXZWJGb3VuZGF0
aW9uIGJ1ZyBpZiBpdCBzZW50IGEgcmVkaXJlY3QgY2FsbGJhY2sgYWZ0ZXIgY29tbWl0LgogICAg
IEFTU0VSVCghbV9jb21taXR0ZWQpOwogCkBAIC0yNDEsNyArMjQxLDcgQEAgdm9pZCBEb2N1bWVu
dExvYWRlcjo6c2V0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcSkKIAogdm9pZCBE
b2N1bWVudExvYWRlcjo6c2V0TWFpbkRvY3VtZW50RXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYg
ZXJyb3IpCiB7Ci0gICAgbV9tYWluRG9jdW1lbnRFcnJvciA9IGVycm9yOyAgICAKKyAgICBtX21h
aW5Eb2N1bWVudEVycm9yID0gZXJyb3I7CiAgICAgZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkuc2V0
TWFpbkRvY3VtZW50RXJyb3IodGhpcywgZXJyb3IpOwogfQogCkBAIC0yNzAsOCArMjcwLDggQEAg
dm9pZCBEb2N1bWVudExvYWRlcjo6bWFpblJlY2VpdmVkRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJv
ciYgZXJyb3IpCiB9CiAKIC8vIENhbmNlbHMgdGhlIGRhdGEgc291cmNlJ3MgcGVuZGluZyBsb2Fk
cy4gIENvbmNlcHR1YWxseSwgYSBkYXRhIHNvdXJjZSBvbmx5IGxvYWRzCi0vLyBvbmUgZG9jdW1l
bnQgYXQgYSB0aW1lLCBidXQgb25lIGRvY3VtZW50IG1heSBoYXZlIG1hbnkgcmVsYXRlZCByZXNv
dXJjZXMuIAotLy8gc3RvcExvYWRpbmcgd2lsbCBzdG9wIGFsbCBsb2FkcyBpbml0aWF0ZWQgYnkg
dGhlIGRhdGEgc291cmNlLCAKKy8vIG9uZSBkb2N1bWVudCBhdCBhIHRpbWUsIGJ1dCBvbmUgZG9j
dW1lbnQgbWF5IGhhdmUgbWFueSByZWxhdGVkIHJlc291cmNlcy4KKy8vIHN0b3BMb2FkaW5nIHdp
bGwgc3RvcCBhbGwgbG9hZHMgaW5pdGlhdGVkIGJ5IHRoZSBkYXRhIHNvdXJjZSwKIC8vIGJ1dCBu
b3QgbG9hZHMgaW5pdGlhdGVkIGJ5IGNoaWxkIGZyYW1lcycgZGF0YSBzb3VyY2VzIC0tIHRoYXQn
cyB0aGUgV2ViRnJhbWUncyBqb2IuCiB2b2lkIERvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGluZygp
CiB7CkBAIC0yOTQsNyArMjk0LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3RvcExvYWRpbmco
KQogICAgICAgICAvLyBBdHRlbXB0IHRvIHN0b3AgdGhlIGZyYW1lIGlmIHRoZSBkb2N1bWVudCBs
b2FkZXIgaXMgbG9hZGluZywgb3IgaWYgaXQgaXMgZG9uZSBsb2FkaW5nIGJ1dAogICAgICAgICAv
LyBzdGlsbCAgcGFyc2luZy4gRmFpbHVyZSB0byBkbyBzbyBjYW4gY2F1c2UgYSB3b3JsZCBsZWFr
LgogICAgICAgICBEb2N1bWVudCogZG9jID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKLSAgICAgICAg
CisKICAgICAgICAgaWYgKGxvYWRpbmcgfHwgZG9jLT5wYXJzaW5nKCkpCiAgICAgICAgICAgICBt
X2ZyYW1lLT5sb2FkZXIoKS5zdG9wTG9hZGluZyhVbmxvYWRFdmVudFBvbGljeU5vbmUpOwogICAg
IH0KQEAgLTMwNCwxOSArMzA0LDE5IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0b3BMb2FkaW5n
KCkKIAogICAgIC8vIEFwcGNhY2hlIHVzZXMgUmVzb3VyY2VIYW5kbGUgZGlyZWN0bHksIERvY3Vt
ZW50TG9hZGVyIGRvZXNuJ3QgY291bnQgdGhlc2UgbG9hZHMuCiAgICAgbV9hcHBsaWNhdGlvbkNh
Y2hlSG9zdC0+c3RvcExvYWRpbmdJbkZyYW1lKG1fZnJhbWUpOwotICAgIAorCiAjaWYgRU5BQkxF
KFdFQl9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCiAgICAgY2xlYXJBcmNoaXZlUmVzb3VyY2Vz
KCk7CiAjZW5kaWYKIAogICAgIGlmICghbG9hZGluZykgewotICAgICAgICAvLyBJZiBzb21ldGhp
bmcgYWJvdmUgcmVzdGFydGVkIGxvYWRpbmcgd2UgbWlnaHQgcnVuIGludG8gbXlzdGVyaW91cyBj
cmFzaGVzIGxpa2UgCisgICAgICAgIC8vIElmIHNvbWV0aGluZyBhYm92ZSByZXN0YXJ0ZWQgbG9h
ZGluZyB3ZSBtaWdodCBydW4gaW50byBteXN0ZXJpb3VzIGNyYXNoZXMgbGlrZQogICAgICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI3NjQgYW5kIDxyZGFy
Oi8vcHJvYmxlbS85MzI4Njg0PgogICAgICAgICBBU1NFUlQoIWlzTG9hZGluZygpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIFdlIG1pZ2h0IHJ1biBpbiB0byBpbmZpbml0ZSBy
ZWN1cnNpb24gaWYgd2UncmUgc3RvcHBpbmcgbG9hZGluZyBhcyB0aGUgcmVzdWx0IG9mIAorICAg
IC8vIFdlIG1pZ2h0IHJ1biBpbiB0byBpbmZpbml0ZSByZWN1cnNpb24gaWYgd2UncmUgc3RvcHBp
bmcgbG9hZGluZyBhcyB0aGUgcmVzdWx0IG9mCiAgICAgLy8gZGV0YWNoaW5nIGZyb20gdGhlIGZy
YW1lLCBzbyBicmVhayBvdXQgb2YgdGhhdCByZWN1cnNpb24gaGVyZS4KICAgICAvLyBTZWUgPHJk
YXI6Ly9wcm9ibGVtLzk2NzM4NjY+IGZvciBtb3JlIGRldGFpbHMuCiAgICAgaWYgKG1faXNTdG9w
cGluZykKQEAgLTMyNSw3ICszMjUsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGlu
ZygpCiAgICAgbV9pc1N0b3BwaW5nID0gdHJ1ZTsKIAogICAgIEZyYW1lTG9hZGVyKiBmcmFtZUxv
YWRlciA9IERvY3VtZW50TG9hZGVyOjpmcmFtZUxvYWRlcigpOwotICAgIAorCiAgICAgaWYgKGlz
TG9hZGluZ01haW5SZXNvdXJjZSgpKSB7CiAgICAgICAgIC8vIFN0b3AgdGhlIG1haW4gcmVzb3Vy
Y2UgbG9hZGVyIGFuZCBsZXQgaXQgc2VuZCB0aGUgY2FuY2VsbGVkIG1lc3NhZ2UuCiAgICAgICAg
IGNhbmNlbE1haW5SZXNvdXJjZUxvYWQoZnJhbWVMb2FkZXItPmNhbmNlbGxlZEVycm9yKG1fcmVx
dWVzdCkpOwpAQCAtMzQ0LDEwICszNDQsMTAgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3RvcExv
YWRpbmcoKQogICAgIC8vIGluIHVuZXhwZWN0ZWQgc2lkZSBlZmZlY3RzIHN1Y2ggYXMgZXJyb25l
b3VzIGV2ZW50IGRpc3BhdGNoLiAoIGh0dHA6Ly93ZWJraXQub3JnL2IvMTE3MTEyICkKICAgICBp
ZiAoRG9jdW1lbnQqIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKSkKICAgICAgICAgZG9jdW1l
bnQtPmNhbmNlbFBhcnNpbmcoKTsKLSAgICAKKwogICAgIHN0b3BMb2FkaW5nU3VicmVzb3VyY2Vz
KCk7CiAgICAgc3RvcExvYWRpbmdQbHVnSW5zKCk7Ci0gICAgCisKICAgICBtX2lzU3RvcHBpbmcg
PSBmYWxzZTsKIH0KIApAQCAtNDk5LDcgKzQ5OSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6Ondp
bGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNl
CiB7CiAgICAgLy8gTm90ZSB0aGF0IHRoZXJlIGFyZSBubyBhc3NlcnRzIGhlcmUgYXMgdGhlcmUg
YXJlIGZvciB0aGUgb3RoZXIgY2FsbGJhY2tzLiBUaGlzIGlzIGR1ZSB0byB0aGUKICAgICAvLyBm
YWN0IHRoYXQgdGhpcyAiY2FsbGJhY2siIGlzIHNlbnQgd2hlbiBzdGFydGluZyBldmVyeSBsb2Fk
LCBhbmQgdGhlIHN0YXRlIG9mIGNhbGxiYWNrCi0gICAgLy8gZGVmZXJyYWxzIHBsYXlzIGxlc3Mg
b2YgYSBwYXJ0IGluIHRoaXMgZnVuY3Rpb24gaW4gcHJldmVudGluZyB0aGUgYmFkIGJlaGF2aW9y
IGRlZmVycmluZyAKKyAgICAvLyBkZWZlcnJhbHMgcGxheXMgbGVzcyBvZiBhIHBhcnQgaW4gdGhp
cyBmdW5jdGlvbiBpbiBwcmV2ZW50aW5nIHRoZSBiYWQgYmVoYXZpb3IgZGVmZXJyaW5nCiAgICAg
Ly8gY2FsbGJhY2tzIGlzIG1lYW50IHRvIHByZXZlbnQuCiAgICAgQVNTRVJUKCFuZXdSZXF1ZXN0
LmlzTnVsbCgpKTsKIApAQCAtNTM1LDcgKzUzNSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6Ondp
bGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNl
CiAgICAgQVNTRVJUKHRvcEZyYW1lLmRvY3VtZW50KCkpOwogCiAgICAgUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkubG9nRnJhbWVOYXZpZ2F0aW9uKCptX2ZyYW1lLCB0b3BG
cmFtZSwgbmV3UmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7Ci0gICAgCisKICAgICAvLyBVcGRh
dGUgY29va2llIHBvbGljeSBiYXNlIFVSTCBhcyBVUkwgY2hhbmdlcywgZXhjZXB0IGZvciBzdWJm
cmFtZXMsIHdoaWNoIHVzZSB0aGUKICAgICAvLyBVUkwgb2YgdGhlIG1haW4gZnJhbWUgd2hpY2gg
ZG9lc24ndCBjaGFuZ2Ugd2hlbiB3ZSByZWRpcmVjdC4KICAgICBpZiAobV9mcmFtZS0+aXNNYWlu
RnJhbWUoKSkKQEAgLTczNCw3ICs3MzQsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjb250aW51
ZUFmdGVyQ29udGVudFBvbGljeShQb2xpY3lBY3Rpb24gcG9saWN5KQogCiAgICAgVVJMIHVybCA9
IG1fcmVxdWVzdC51cmwoKTsKICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlID0gbV9yZXNwb25z
ZS5taW1lVHlwZSgpOwotICAgIAorCiAgICAgc3dpdGNoIChwb2xpY3kpIHsKICAgICBjYXNlIFBv
bGljeVVzZTogewogICAgICAgICAvLyBQcmV2ZW50IHJlbW90ZSB3ZWIgYXJjaGl2ZXMgZnJvbSBs
b2FkaW5nIGJlY2F1c2UgdGhleSBjYW4gY2xhaW0gdG8gYmUgZnJvbSBhbnkgZG9tYWluIGFuZCB0
aHVzIGF2b2lkIGNyb3NzLWRvbWFpbiBzZWN1cml0eSBjaGVja3MgKDQxMjAyNTUpLgpAQCAtODQx
LDcgKzg0MSw3IEBAIFJlc291cmNlRXJyb3IgRG9jdW1lbnRMb2FkZXI6OmludGVycnVwdGVkRm9y
UG9saWN5Q2hhbmdlRXJyb3IoKSBjb25zdAogdm9pZCBEb2N1bWVudExvYWRlcjo6c3RvcExvYWRp
bmdGb3JQb2xpY3lDaGFuZ2UoKQogewogICAgIFJlc291cmNlRXJyb3IgZXJyb3IgPSBpbnRlcnJ1
cHRlZEZvclBvbGljeUNoYW5nZUVycm9yKCk7Ci0gICAgZXJyb3Iuc2V0SXNDYW5jZWxsYXRpb24o
dHJ1ZSk7CisgICAgZXJyb3Iuc2V0VHlwZShSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRp
b24pOwogICAgIGNhbmNlbE1haW5SZXNvdXJjZUxvYWQoZXJyb3IpOwogfQogCkBAIC04NjIsNyAr
ODYyLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0RGF0YShjb25zdCBjaGFyKiBieXRl
cywgc2l6ZV90IGxlbmd0aCkKIAogICAgICAgICBpZiAoZnJhbWVMb2FkZXIoKS0+c3RhdGVNYWNo
aW5lKCkuY3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpKQogICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAKKwogI2lmIEVOQUJMRShNSFRNTCkKICAgICAgICAgLy8gVGhlIG9yaWdpbiBp
cyB0aGUgTUhUTUwgZmlsZSwgd2UgbmVlZCB0byBzZXQgdGhlIGJhc2UgVVJMIHRvIHRoZSBkb2N1
bWVudCBlbmNvZGVkIGluIHRoZSBNSFRNTCBzbwogICAgICAgICAvLyByZWxhdGl2ZSBVUkxzIGFy
ZSByZXNvbHZlZCBwcm9wZXJseS4KQEAgLTk0OCwxMyArOTQ4LDEzIEBAIHZvaWQgRG9jdW1lbnRM
b2FkZXI6OnNldHVwRm9yUmVwbGFjZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGZyYW1lTG9h
ZGVyKCktPmNsaWVudCgpLndpbGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpOwotICAgIAorCiAg
ICAgbWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgpOwogICAgIG1heWJlQ3JlYXRl
QXJjaGl2ZSgpOwogICAgIG1fd3JpdGVyLmVuZCgpOwogICAgIGZyYW1lTG9hZGVyKCktPnNldFJl
cGxhY2luZygpOwogICAgIG1fZ290Rmlyc3RCeXRlID0gZmFsc2U7Ci0gICAgCisKICAgICBzdG9w
TG9hZGluZ1N1YnJlc291cmNlcygpOwogICAgIHN0b3BMb2FkaW5nUGx1Z0lucygpOwogI2lmIEVO
QUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQpAQCAtMTA0MSw3ICsxMDQxLDcgQEAg
Ym9vbCBEb2N1bWVudExvYWRlcjo6aXNMb2FkaW5nSW5BUElTZW5zZSgpIGNvbnN0CiAgICAgaWYg
KGZyYW1lTG9hZGVyKCktPnN0YXRlKCkgIT0gRnJhbWVTdGF0ZUNvbXBsZXRlKSB7CiAgICAgICAg
IGlmIChtX2ZyYW1lLT5zZXR0aW5ncygpLm5lZWRzSXNMb2FkaW5nSW5BUElTZW5zZVF1aXJrKCkg
JiYgIW1fc3VicmVzb3VyY2VMb2FkZXJzLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgIAorCiAgICAgICAgIERvY3VtZW50KiBkb2MgPSBtX2ZyYW1lLT5kb2N1bWVudCgp
OwogICAgICAgICBpZiAoKGlzTG9hZGluZ01haW5SZXNvdXJjZSgpIHx8ICFtX2ZyYW1lLT5kb2N1
bWVudCgpLT5sb2FkRXZlbnRGaW5pc2hlZCgpKSAmJiBpc0xvYWRpbmcoKSkKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwpAQCAtMTA2MCwxNyArMTA2MCwxNyBAQCBib29sIERvY3VtZW50TG9hZGVy
OjptYXliZUNyZWF0ZUFyY2hpdmUoKQogI2lmICFFTkFCTEUoV0VCX0FSQ0hJVkUpICYmICFFTkFC
TEUoTUhUTUwpCiAgICAgcmV0dXJuIGZhbHNlOwogI2Vsc2UKLSAgICAKKwogICAgIC8vIEdpdmUg
dGhlIGFyY2hpdmUgbWFjaGluZXJ5IGEgY3JhY2sgYXQgdGhpcyBkb2N1bWVudC4gSWYgdGhlIE1J
TUUgdHlwZSBpcyBub3QgYW4gYXJjaGl2ZSB0eXBlLCBpdCB3aWxsIHJldHVybiAwLgogICAgIG1f
YXJjaGl2ZSA9IEFyY2hpdmVGYWN0b3J5OjpjcmVhdGUobV9yZXNwb25zZS51cmwoKSwgbWFpblJl
c291cmNlRGF0YSgpLmdldCgpLCBtX3Jlc3BvbnNlLm1pbWVUeXBlKCkpOwogICAgIGlmICghbV9h
cmNoaXZlKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCisKICAgICBhZGRBbGxBcmNoaXZl
UmVzb3VyY2VzKG1fYXJjaGl2ZS5nZXQoKSk7CiAgICAgQXJjaGl2ZVJlc291cmNlKiBtYWluUmVz
b3VyY2UgPSBtX2FyY2hpdmUtPm1haW5SZXNvdXJjZSgpOwogICAgIG1fcGFyc2VkQXJjaGl2ZURh
dGEgPSAmbWFpblJlc291cmNlLT5kYXRhKCk7CiAgICAgbV93cml0ZXIuc2V0TUlNRVR5cGUobWFp
blJlc291cmNlLT5taW1lVHlwZSgpKTsKLSAgICAKKwogICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1
bWVudCgpKTsKICAgICBjb21taXREYXRhKG1haW5SZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgbWFp
blJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEwODksMTEg
KzEwODksMTEgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6YWRkQWxsQXJjaGl2ZVJlc291cmNlcyhB
cmNoaXZlKiBhcmNoaXZlKQogewogICAgIGlmICghbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9u
KQogICAgICAgICBtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVl
PEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24+KCk7Ci0gICAgICAgIAorCiAgICAgQVNTRVJUKGFy
Y2hpdmUpOwogICAgIGlmICghYXJjaGl2ZSkKICAgICAgICAgcmV0dXJuOwotICAgICAgICAKKwog
ICAgIG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi0+YWRkQWxsUmVzb3VyY2VzKGFyY2hpdmUp
OwogfQogCkBAIC0xMTAzLDcgKzExMDMsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjphZGRBcmNo
aXZlUmVzb3VyY2UoUmVmPEFyY2hpdmVSZXNvdXJjZT4mJiByZXNvdXJjZSkKIHsKICAgICBpZiAo
IW1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbikKICAgICAgICAgbV9hcmNoaXZlUmVzb3VyY2VD
b2xsZWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uPigp
OwotICAgICAgICAKKwogICAgIG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi0+YWRkUmVzb3Vy
Y2UoV1RGTW92ZShyZXNvdXJjZSkpOwogfQogCkBAIC0xMTQwLDcgKzExNDAsNyBAQCBSZWZQdHI8
QXJjaGl2ZVJlc291cmNlPiBEb2N1bWVudExvYWRlcjo6bWFpblJlc291cmNlKCkgY29uc3QKICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhID0gbWFpblJlc291cmNlRGF0YSgpOwogICAgIGlm
ICghZGF0YSkKICAgICAgICAgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgICAg
IAorCiAgICAgYXV0byYgcmVzcG9uc2UgPSB0aGlzLT5yZXNwb25zZSgpOwogICAgIHJldHVybiBB
cmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpLCByZXNwb25zZS51cmwoKSwgcmVz
cG9uc2UubWltZVR5cGUoKSwgcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpLCBmcmFtZSgpLT50
cmVlKCkudW5pcXVlTmFtZSgpKTsKIH0KQEAgLTExNDksNyArMTE0OSw3IEBAIFBhc3NSZWZQdHI8
QXJjaGl2ZVJlc291cmNlPiBEb2N1bWVudExvYWRlcjo6c3VicmVzb3VyY2UoY29uc3QgVVJMJiB1
cmwpIGNvbnN0CiB7CiAgICAgaWYgKCFpc0NvbW1pdHRlZCgpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICAKKwogICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IG1fY2FjaGVkUmVz
b3VyY2VMb2FkZXItPmNhY2hlZFJlc291cmNlKHVybCk7CiAgICAgaWYgKCFyZXNvdXJjZSB8fCAh
cmVzb3VyY2UtPmlzTG9hZGVkKCkpCiAgICAgICAgIHJldHVybiBhcmNoaXZlUmVzb3VyY2VGb3JV
UkwodXJsKTsKQEAgLTE1OTcsNyArMTU5Nyw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN1YnJl
c291cmNlTG9hZGVyRmluaXNoZWRMb2FkaW5nT25lUGFydChSZXNvdXJjZUxvYWRlciogbG9hCiAK
ICAgICBjaGVja0xvYWRDb21wbGV0ZSgpOwogICAgIGlmIChGcmFtZSogZnJhbWUgPSBtX2ZyYW1l
KQotICAgICAgICBmcmFtZS0+bG9hZGVyKCkuY2hlY2tMb2FkQ29tcGxldGUoKTsgICAgCisgICAg
ICAgIGZyYW1lLT5sb2FkZXIoKS5jaGVja0xvYWRDb21wbGV0ZSgpOwogfQogCiB2b2lkIERvY3Vt
ZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkKQEAgLTE2NDQs
NyArMTY0NCw3IEBAIHN0YXRpYyB2b2lkIGljb25EYXRhQ2FsbGJhY2soU2hhcmVkQnVmZmVyKiwg
dm9pZCopCiB9CiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmdldEljb25EYXRhRm9ySWNvblVSTChj
b25zdCBTdHJpbmcmIHVybFN0cmluZykKLXsgICAKK3sKICAgICBpZiAobV9pY29uRGF0YUNhbGxi
YWNrKQogICAgICAgICBtX2ljb25EYXRhQ2FsbGJhY2stPmludmFsaWRhdGUoKTsKICAgICBtX2lj
b25EYXRhQ2FsbGJhY2sgPSBJY29uRGF0YUNhbGxiYWNrOjpjcmVhdGUodGhpcywgaWNvbkRhdGFD
YWxsYmFjayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIuY3BwCmluZGV4IDkwZTRiZmJjMTEyMzg5M2FiMTM1MjQ1ZmI3NDk3NzhkM2I2OTk1
YWQuLmQxMDdiODhmNjJkN2E4M2NjYjA2ZTdiZGZmN2MxNGRhZThjNTRiNDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0x
NjAsOCArMTYwLDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNhbmNlbCgpCiAg
ICAgLy8gQ2FuY2VsIGNhbiByZS1lbnRlciBhbmQgbV9yZXNvdXJjZSBtaWdodCBiZSBudWxsIGhl
cmUgYXMgYSByZXN1bHQuCiAgICAgaWYgKG1fY2xpZW50ICYmIG1fcmVzb3VyY2UpIHsKICAgICAg
ICAgLy8gRklYTUU6IFRoaXMgZXJyb3IgaXMgc2VudCB0byB0aGUgY2xpZW50IGluIGRpZEZhaWwo
KSwgc28gaXQgc2hvdWxkIG5vdCBiZSBhbiBpbnRlcm5hbCBvbmUuIFVzZSBGcmFtZUxvYWRlckNs
aWVudDo6Y2FuY2VsbGVkRXJyb3IoKSBpbnN0ZWFkLgotICAgICAgICBSZXNvdXJjZUVycm9yIGVy
cm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIG1fcmVzb3VyY2UtPnVybCgpLCAiTG9h
ZCBjYW5jZWxsZWQiKTsKLSAgICAgICAgZXJyb3Iuc2V0SXNDYW5jZWxsYXRpb24odHJ1ZSk7Cisg
ICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwg
bV9yZXNvdXJjZS0+dXJsKCksICJMb2FkIGNhbmNlbGxlZCIsIFJlc291cmNlRXJyb3I6OlR5cGU6
OkNhbmNlbGxhdGlvbik7CiAgICAgICAgIGRpZEZhaWwobV9yZXNvdXJjZS0+aWRlbnRpZmllcigp
LCBlcnJvcik7CiAgICAgfQogICAgIGNsZWFyUmVzb3VyY2UoKTsKQEAgLTMxNiw3ICszMTUsNyBA
QCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVz
b3VyY2UqIHJlc291cmNlKQogewogICAgIEFTU0VSVChtX2NsaWVudCk7CiAgICAgQVNTRVJUX1VO
VVNFRChyZXNvdXJjZSwgcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7Ci0gICAgICAgIAorCiAgICAg
aWYgKG1fcmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSkKICAgICAgICAgZGlkRmFpbChtX3Jlc291
cmNlLT5pZGVudGlmaWVyKCksIG1fcmVzb3VyY2UtPnJlc291cmNlRXJyb3IoKSk7CiAgICAgZWxz
ZQpAQCAtMzk1LDcgKzM5NCw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2Fk
UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNlY3VyCiAKICAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIC8vIEZJWE1FOiBUaHJlYWRhYmxlTG9hZGVyT3B0
aW9ucy5zbmlmZkNvbnRlbnQgaXMgbm90IHN1cHBvcnRlZCBmb3Igc3luY2hyb25vdXMgcmVxdWVz
dHMuCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKICAgICBSZXNvdXJjZUVycm9yIGVy
cm9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IDk4NGY0OGViMmMxMmYw
YmQ1ZjhjZTUzYThhYzEwMDk5MDk0NjU4ODIuLjZiNTlkZmZmY2ZmYWFlMDAwOWE5NjU2MGIyMTkx
YmJlZjFhZDE0MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTIyNyw5
ICsyMjcsOSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICB2b2lkIG5l
ZWRUb3VjaEV2ZW50cyhib29sKSBvdmVycmlkZSB7IH0KICNlbmRpZgotICAgIAorCiAgICAgdm9p
ZCB3aGVlbEV2ZW50SGFuZGxlcnNDaGFuZ2VkKGJvb2wpIG92ZXJyaWRlIHsgfQotICAgIAorCiAg
ICAgYm9vbCBpc0VtcHR5Q2hyb21lQ2xpZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQogCiAgICAgdm9pZCBkaWRBc3NvY2lhdGVGb3JtQ29udHJvbHMoY29uc3QgVmVjdG9yPFJl
ZlB0cjxFbGVtZW50Pj4mKSBvdmVycmlkZSB7IH0KQEAgLTMzMCwxNSArMzMwLDE1IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBjaGFyKiwg
aW50KSBvdmVycmlkZSB7IH0KICAgICB2b2lkIGZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRl
ciopIG92ZXJyaWRlIHsgfQogCi0gICAgUmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25z
dCBSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZSB7IFJlc291cmNlRXJyb3IgZXJyb3IoIiIsIDAs
IFVSTCgpLCAiIik7IGVycm9yLnNldElzQ2FuY2VsbGF0aW9uKHRydWUpOyByZXR1cm4gZXJyb3I7
IH0KLSAgICBSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
KSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCBVUkwoKSwgIiIpOyB9Ci0g
ICAgUmVzb3VyY2VFcnJvciBibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3IoIiIsIDAsIFVSTCgp
LCAiIik7IH0KLSAgICBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dVUkxFcnJvcihjb25zdCBSZXNv
dXJjZVJlcXVlc3QmKSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCBVUkwo
KSwgIiIpOyB9Ci0gICAgUmVzb3VyY2VFcnJvciBpbnRlcnJ1cHRlZEZvclBvbGljeUNoYW5nZUVy
cm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJy
b3IoIiIsIDAsIFVSTCgpLCAiIik7IH0KKyAgICBSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9y
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3Io
UmVzb3VyY2VFcnJvcjo6VHlwZTo6Q2FuY2VsbGF0aW9uKTsgfQorICAgIFJlc291cmNlRXJyb3Ig
YmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlIHsgcmV0dXJuIHsg
fTsgfQorICAgIFJlc291cmNlRXJyb3IgYmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihjb25z
dCBSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZSB7IHJldHVybiB7IH07IH0KKyAgICBSZXNvdXJj
ZUVycm9yIGNhbm5vdFNob3dVUkxFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlk
ZSB7IHJldHVybiB7IH07IH0KKyAgICBSZXNvdXJjZUVycm9yIGludGVycnVwdGVkRm9yUG9saWN5
Q2hhbmdlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGUgeyByZXR1cm4geyB9
OyB9CiAKLSAgICBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dNSU1FVHlwZUVycm9yKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCBV
UkwoKSwgIiIpOyB9Ci0gICAgUmVzb3VyY2VFcnJvciBmaWxlRG9lc05vdEV4aXN0RXJyb3IoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3IoIiIs
IDAsIFVSTCgpLCAiIik7IH0KLSAgICBSZXNvdXJjZUVycm9yIHBsdWdpbldpbGxIYW5kbGVMb2Fk
RXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNl
RXJyb3IoIiIsIDAsIFVSTCgpLCAiIik7IH0KKyAgICBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dN
SU1FVHlwZUVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZSB7IHJldHVybiB7
IH07IH0KKyAgICBSZXNvdXJjZUVycm9yIGZpbGVEb2VzTm90RXhpc3RFcnJvcihjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJikgb3ZlcnJpZGUgeyByZXR1cm4geyB9OyB9CisgICAgUmVzb3VyY2VFcnJv
ciBwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVy
cmlkZSB7IHJldHVybiB7IH07IH0KIAogICAgIGJvb2wgc2hvdWxkRmFsbEJhY2soY29uc3QgUmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKQEAgLTYwMCw3ICs2MDAs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+RW1wdHlJbnNwZWN0b3JDbGllbnQoKSB7IH0KIAog
ICAgIHZvaWQgaW5zcGVjdGVkUGFnZURlc3Ryb3llZCgpIG92ZXJyaWRlIHsgfQotICAgIAorCiAg
ICAgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIG9wZW5Mb2NhbEZyb250ZW5kKEluc3BlY3Rv
ckNvbnRyb2xsZXIqKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdm9pZCBicmlu
Z0Zyb250ZW5kVG9Gcm9udCgpIG92ZXJyaWRlIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAppbmRleCBhM2FlODg0YTA5Mzk4YTlkMjlkMmZlODdiYTk5Y2U4MGM2OWE2YTdh
Li42YTE5YTgxZDNkZWFkMWNlODNjMDM3MDc3ZjQ3MDI0M2NjMzQ5NTM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTM4MSwxMCArMzgxLDEwIEBAIHZvaWQgRnJhbWVM
b2FkZXI6OnN1Ym1pdEZvcm0oUGFzc1JlZlB0cjxGb3JtU3VibWlzc2lvbj4gc3VibWlzc2lvbikK
ICAgICBBU1NFUlQoc3VibWlzc2lvbi0+ZGF0YSgpKTsKICAgICBBU1NFUlQoc3VibWlzc2lvbi0+
c3RhdGUoKSk7CiAgICAgQVNTRVJUKCFzdWJtaXNzaW9uLT5zdGF0ZSgpLT5zb3VyY2VEb2N1bWVu
dCgpLT5mcmFtZSgpIHx8IHN1Ym1pc3Npb24tPnN0YXRlKCktPnNvdXJjZURvY3VtZW50KCktPmZy
YW1lKCkgPT0gJm1fZnJhbWUpOwotICAgIAorCiAgICAgaWYgKCFtX2ZyYW1lLnBhZ2UoKSkKICAg
ICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgaWYgKHN1Ym1pc3Npb24tPmFjdGlvbigpLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC00ODYsNyArNDg2LDcgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6c3RvcCgpCiAgICAgICAgIHBhcnNlci0+c3RvcFBhcnNpbmcoKTsKICAgICAgICAgcGFy
c2VyLT5maW5pc2goKTsKICAgICB9Ci0gICAgCisKICAgICBpY29uKCkuc3RvcExvYWRlcigpOwog
fQogCkBAIC01MTksNyArNTE5LDcgQEAgYm9vbCBGcmFtZUxvYWRlcjo6Y2xvc2VVUkwoKQogICAg
IH0KIAogICAgIHN0b3BMb2FkaW5nKHVubG9hZEV2ZW50UG9saWN5KTsKLSAgICAKKwogICAgIG1f
ZnJhbWUuZWRpdG9yKCkuY2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KQEAgLTU2MCwxMCArNTYwLDEwIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRpZEV4cGxpY2l0
T3BlbigpCiAgICAgLy8gQ2FsbGluZyBkb2N1bWVudC5vcGVuIGNvdW50cyBhcyBjb21taXR0aW5n
IHRoZSBmaXJzdCByZWFsIGRvY3VtZW50IGxvYWQuCiAgICAgaWYgKCFtX3N0YXRlTWFjaGluZS5j
b21taXR0ZWRGaXJzdFJlYWxEb2N1bWVudExvYWQoKSkKICAgICAgICAgbV9zdGF0ZU1hY2hpbmUu
YWR2YW5jZVRvKEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lOjpEaXNwbGF5aW5nSW5pdGlhbEVtcHR5
RG9jdW1lbnRQb3N0Q29tbWl0KTsKLSAgICAKKwogICAgIC8vIFByZXZlbnQgd2luZG93Lm9wZW4o
dXJsKSAtLSBlZyB3aW5kb3cub3BlbigiYWJvdXQ6YmxhbmsiKSAtLSBmcm9tIGJsb3dpbmcgYXdh
eSByZXN1bHRzCi0gICAgLy8gZnJvbSBhIHN1YnNlcXVlbnQgd2luZG93LmRvY3VtZW50Lm9wZW4g
LyB3aW5kb3cuZG9jdW1lbnQud3JpdGUgY2FsbC4gCi0gICAgLy8gQ2FuY2VsaW5nIHJlZGlyZWN0
aW9uIGhlcmUgd29ya3MgZm9yIGFsbCBjYXNlcyBiZWNhdXNlIGRvY3VtZW50Lm9wZW4gCisgICAg
Ly8gZnJvbSBhIHN1YnNlcXVlbnQgd2luZG93LmRvY3VtZW50Lm9wZW4gLyB3aW5kb3cuZG9jdW1l
bnQud3JpdGUgY2FsbC4KKyAgICAvLyBDYW5jZWxpbmcgcmVkaXJlY3Rpb24gaGVyZSB3b3JrcyBm
b3IgYWxsIGNhc2VzIGJlY2F1c2UgZG9jdW1lbnQub3BlbgogICAgIC8vIGltcGxpY2l0bHkgcHJl
Y2VkZXMgZG9jdW1lbnQud3JpdGUuCiAgICAgbV9mcmFtZS5uYXZpZ2F0aW9uU2NoZWR1bGVyKCku
Y2FuY2VsKCk7CiB9CkBAIC01ODcsNyArNTg3LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2xlYXIo
RG9jdW1lbnQqIG5ld0RvY3VtZW50LCBib29sIGNsZWFyV2luZG93UHJvcGVydGllcywgYm9vbAog
ICAgIGlmICghbV9uZWVkc0NsZWFyKQogICAgICAgICByZXR1cm47CiAgICAgbV9uZWVkc0NsZWFy
ID0gZmFsc2U7Ci0gICAgCisKICAgICBpZiAoIW1fZnJhbWUuZG9jdW1lbnQoKS0+aW5QYWdlQ2Fj
aGUoKSkgewogICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCktPmNhbmNlbFBhcnNpbmcoKTsKICAg
ICAgICAgbV9mcmFtZS5kb2N1bWVudCgpLT5zdG9wQWN0aXZlRE9NT2JqZWN0cygpOwpAQCAtODgy
LDcgKzg4Miw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkxJbnRvQ2hpbGRGcmFtZShjb25z
dCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcmVyLCBGCiAgICAgSGlzdG9yeUl0ZW0qIHBh
cmVudEl0ZW0gPSBoaXN0b3J5KCkuY3VycmVudEl0ZW0oKTsKICAgICAvLyBJZiB3ZSdyZSBtb3Zp
bmcgaW4gdGhlIGJhY2svZm9yd2FyZCBsaXN0LCB3ZSBtaWdodCB3YW50IHRvIHJlcGxhY2UgdGhl
IGNvbnRlbnQKICAgICAvLyBvZiB0aGlzIGNoaWxkIGZyYW1lIHdpdGggd2hhdGV2ZXIgd2FzIHRo
ZXJlIGF0IHRoYXQgcG9pbnQuCi0gICAgaWYgKHBhcmVudEl0ZW0gJiYgcGFyZW50SXRlbS0+Y2hp
bGRyZW4oKS5zaXplKCkgJiYgaXNCYWNrRm9yd2FyZExvYWRUeXBlKGxvYWRUeXBlKCkpIAorICAg
IGlmIChwYXJlbnRJdGVtICYmIHBhcmVudEl0ZW0tPmNoaWxkcmVuKCkuc2l6ZSgpICYmIGlzQmFj
a0ZvcndhcmRMb2FkVHlwZShsb2FkVHlwZSgpKQogICAgICAgICAmJiAhbV9mcmFtZS5kb2N1bWVu
dCgpLT5sb2FkRXZlbnRGaW5pc2hlZCgpKSB7CiAgICAgICAgIEhpc3RvcnlJdGVtKiBjaGlsZEl0
ZW0gPSBwYXJlbnRJdGVtLT5jaGlsZEl0ZW1XaXRoVGFyZ2V0KGNoaWxkRnJhbWUtPnRyZWUoKS51
bmlxdWVOYW1lKCkpOwogICAgICAgICBpZiAoY2hpbGRJdGVtKSB7CkBAIC05MDYsNyArOTA2LDcg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEFyY2hpdmUoUGFzc1JlZlB0cjxBcmNoaXZlPiBhcmNo
aXZlKQogCiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShVUkwoKSwgbWFpblJlc291cmNl
LT5taW1lVHlwZSgpLCBtYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCksIG1haW5SZXNvdXJjZS0+
dGV4dEVuY29kaW5nKCkpOwogICAgIFN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRhKCZtYWlu
UmVzb3VyY2UtPmRhdGEoKSwgVVJMKCksIHJlc3BvbnNlLCBTdWJzdGl0dXRlRGF0YTo6U2Vzc2lv
bkhpc3RvcnlWaXNpYmlsaXR5OjpIaWRkZW4pOwotICAgIAorCiAgICAgUmVzb3VyY2VSZXF1ZXN0
IHJlcXVlc3QobWFpblJlc291cmNlLT51cmwoKSk7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHJl
cXVlc3QuYXBwbHlXZWJBcmNoaXZlSGFja0Zvck1haWwoKTsKQEAgLTEwMTUsMTAgKzEwMTUsMTAg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEluU2FtZURvY3VtZW50KGNvbnN0IFVSTCYgdXJsLCBQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHQKICAgICBzZXRPdXRnb2luZ1JlZmVycmVyKHVybCk7
CiAgICAgZG9jdW1lbnRMb2FkZXIoKS0+cmVwbGFjZVJlcXVlc3RVUkxGb3JTYW1lRG9jdW1lbnRO
YXZpZ2F0aW9uKHVybCk7CiAgICAgaWYgKGlzTmV3TmF2aWdhdGlvbiAmJiAhc2hvdWxkVHJlYXRV
UkxBc1NhbWVBc0N1cnJlbnQodXJsKSAmJiAhc3RhdGVPYmplY3QpIHsKLSAgICAgICAgLy8gTkI6
IG11c3QgaGFwcGVuIGFmdGVyIHJlcGxhY2VSZXF1ZXN0VVJMRm9yU2FtZURvY3VtZW50TmF2aWdh
dGlvbigpLCBzaW5jZSB3ZSBhZGQgCi0gICAgICAgIC8vIGJhc2VkIG9uIHRoZSBjdXJyZW50IHJl
cXVlc3QuIE11c3QgYWxzbyBoYXBwZW4gYmVmb3JlIHdlIG9wZW5VUkwgYW5kIGRpc3BsYWNlIHRo
ZSAKKyAgICAgICAgLy8gTkI6IG11c3QgaGFwcGVuIGFmdGVyIHJlcGxhY2VSZXF1ZXN0VVJMRm9y
U2FtZURvY3VtZW50TmF2aWdhdGlvbigpLCBzaW5jZSB3ZSBhZGQKKyAgICAgICAgLy8gYmFzZWQg
b24gdGhlIGN1cnJlbnQgcmVxdWVzdC4gTXVzdCBhbHNvIGhhcHBlbiBiZWZvcmUgd2Ugb3BlblVS
TCBhbmQgZGlzcGxhY2UgdGhlCiAgICAgICAgIC8vIHNjcm9sbCBwb3NpdGlvbiwgc2luY2UgYWRk
aW5nIHRoZSBCRiBpdGVtIHdpbGwgc2F2ZSBhd2F5IHNjcm9sbCBzdGF0ZS4KLSAgICAgICAgCisK
ICAgICAgICAgLy8gTkIyOiBJZiB3ZSB3ZXJlIGxvYWRpbmcgYSBsb25nLCBzbG93IGRvYywgYW5k
IHRoZSB1c2VyIGZyYWdtZW50IG5hdmlnYXRlZCBiZWZvcmUKICAgICAgICAgLy8gaXQgd2FzIGRv
bmUsIGN1cnJJdGVtIGlzIG5vdyBzZXQgdGhlIHRoYXQgc2xvdyBkb2MsIGFuZCBwcmV2SXRlbSBp
cyB3aGF0ZXZlciB3YXMKICAgICAgICAgLy8gYmVmb3JlIGl0LiAgQWRkaW5nIHRoZSBiL2YgaXRl
bSB3aWxsIGJ1bXAgdGhlIHNsb3cgZG9jIGRvd24gdG8gcHJldkl0ZW0sIGV2ZW4KQEAgLTEwMjgs
MTUgKzEwMjgsMTUgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEluU2FtZURvY3VtZW50KGNvbnN0
IFVSTCYgdXJsLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHQKIAogICAgICAgICBoaXN0b3J5
KCkudXBkYXRlQmFja0ZvcndhcmRMaXN0Rm9yRnJhZ21lbnRTY3JvbGwoKTsKICAgICB9Ci0gICAg
CisKICAgICBib29sIGhhc2hDaGFuZ2UgPSBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVy
KHVybCwgb2xkVVJMKSAmJiB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkgIT0gb2xkVVJMLmZyYWdt
ZW50SWRlbnRpZmllcigpOwotICAgIAorCiAgICAgaGlzdG9yeSgpLnVwZGF0ZUZvclNhbWVEb2N1
bWVudE5hdmlnYXRpb24oKTsKIAogICAgIC8vIElmIHdlIHdlcmUgaW4gdGhlIGF1dG9zY3JvbGwv
cGFuU2Nyb2xsIG1vZGUgd2Ugd2FudCB0byBzdG9wIGl0IGJlZm9yZSBmb2xsb3dpbmcgdGhlIGxp
bmsgdG8gdGhlIGFuY2hvcgogICAgIGlmIChoYXNoQ2hhbmdlKQogICAgICAgICBtX2ZyYW1lLmV2
ZW50SGFuZGxlcigpLnN0b3BBdXRvc2Nyb2xsVGltZXIoKTsKLSAgICAKKwogICAgIC8vIEl0J3Mg
aW1wb3J0YW50IHRvIG1vZGVsIHRoaXMgYXMgYSBsb2FkIHRoYXQgc3RhcnRzIGFuZCBpbW1lZGlh
dGVseSBmaW5pc2hlcy4KICAgICAvLyBPdGhlcndpc2UsIHRoZSBwYXJlbnQgZnJhbWUgbWF5IHRo
aW5rIHdlIG5ldmVyIGZpbmlzaGVkIGxvYWRpbmcuCiAgICAgc3RhcnRlZCgpOwpAQCAtMTA0NCw3
ICsxMDQ0LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEluU2FtZURvY3VtZW50KGNvbnN0IFVS
TCYgdXJsLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHQKICAgICAvLyBXZSBuZWVkIHRvIHNj
cm9sbCB0byB0aGUgZnJhZ21lbnQgd2hldGhlciBvciBub3QgYSBoYXNoIGNoYW5nZSBvY2N1cnJl
ZCwgc2luY2UKICAgICAvLyB0aGUgdXNlciBtaWdodCBoYXZlIHNjcm9sbGVkIHNpbmNlIHRoZSBw
cmV2aW91cyBuYXZpZ2F0aW9uLgogICAgIHNjcm9sbFRvRnJhZ21lbnRXaXRoUGFyZW50Qm91bmRh
cnkodXJsKTsKLSAgICAKKwogICAgIG1faXNDb21wbGV0ZSA9IGZhbHNlOwogICAgIGNoZWNrQ29t
cGxldGVkKCk7CiAKQEAgLTEwNTksMTIgKzEwNTksMTIgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9h
ZEluU2FtZURvY3VtZW50KGNvbnN0IFVSTCYgdXJsLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHQKIAogICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+c3RhdGVQb3BwZWQoc3RhdGVPYmplY3QgPyBz
dGF0ZU9iamVjdCA6IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6bnVsbFZhbHVlKCkpOwogICAgIG1f
Y2xpZW50LmRpc3BhdGNoRGlkUG9wU3RhdGVXaXRoaW5QYWdlKCk7Ci0gICAgCisKICAgICBpZiAo
aGFzaENoYW5nZSkgewogICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCktPmVucXVldWVIYXNoY2hh
bmdlRXZlbnQob2xkVVJMLCB1cmwpOwogICAgICAgICBtX2NsaWVudC5kaXNwYXRjaERpZENoYW5n
ZUxvY2F0aW9uV2l0aGluUGFnZSgpOwogICAgIH0KLSAgICAKKwogICAgIC8vIEZyYW1lTG9hZGVy
Q2xpZW50OjpkaWRGaW5pc2hMb2FkKCkgdGVsbHMgdGhlIGludGVybmFsIGxvYWQgZGVsZWdhdGUg
dGhlIGxvYWQgZmluaXNoZWQgd2l0aCBubyBlcnJvcgogICAgIG1fY2xpZW50LmRpZEZpbmlzaExv
YWQoKTsKIH0KQEAgLTExMjIsNyArMTEyMiw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnNldHVwRm9y
UmVwbGFjZSgpCiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRGcmFtZVJlcXVlc3QoY29uc3Qg
RnJhbWVMb2FkUmVxdWVzdCYgcmVxdWVzdCwgRXZlbnQqIGV2ZW50LCBQYXNzUmVmUHRyPEZvcm1T
dGF0ZT4gZm9ybVN0YXRlKQoteyAgICAKK3sKICAgICAvLyBQcm90ZWN0IGZyYW1lIGZyb20gZ2V0
dGluZyBibG93biBhd2F5IGluc2lkZSBkaXNwYXRjaEJlZm9yZUxvYWRFdmVudCBpbiBsb2FkV2l0
aERvY3VtZW50TG9hZGVyLgogICAgIFJlZjxGcmFtZT4gcHJvdGVjdChtX2ZyYW1lKTsKIApAQCAt
MTIzMyw3ICsxMjMzLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVSTChjb25zdCBGcmFtZUxv
YWRSZXF1ZXN0JiBmcmFtZUxvYWRSZXF1ZXN0LCBjb25zdCBTdHJpbmcKIAogICAgIGJvb2wgc2Ft
ZVVSTCA9IHNob3VsZFRyZWF0VVJMQXNTYW1lQXNDdXJyZW50KG5ld1VSTCk7CiAgICAgY29uc3Qg
U3RyaW5nJiBodHRwTWV0aG9kID0gcmVxdWVzdC5odHRwTWV0aG9kKCk7Ci0gICAgCisKICAgICAv
LyBNYWtlIHN1cmUgdG8gZG8gc2Nyb2xsIHRvIGZyYWdtZW50IHByb2Nlc3NpbmcgZXZlbiBpZiB0
aGUgVVJMIGlzCiAgICAgLy8gZXhhY3RseSB0aGUgc2FtZSBzbyBwYWdlcyB3aXRoICcjJyBsaW5r
cyBhbmQgREhUTUwgc2lkZSBlZmZlY3RzCiAgICAgLy8gd29yayBwcm9wZXJseS4KQEAgLTEzNDIs
MTQgKzEzNDIsMTQgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZChEb2N1bWVudExvYWRlciogbmV3
RG9jdW1lbnRMb2FkZXIpCiAKICAgICBpZiAobV9kb2N1bWVudExvYWRlcikKICAgICAgICAgbmV3
RG9jdW1lbnRMb2FkZXItPnNldE92ZXJyaWRlRW5jb2RpbmcobV9kb2N1bWVudExvYWRlci0+b3Zl
cnJpZGVFbmNvZGluZygpKTsKLSAgICAKKwogICAgIC8vIFdoZW4gd2UgbG9hZGluZyBhbHRlcm5h
dGUgY29udGVudCBmb3IgYW4gdW5yZWFjaGFibGUgVVJMIHRoYXQgd2UncmUKLSAgICAvLyB2aXNp
dGluZyBpbiB0aGUgaGlzdG9yeSBsaXN0LCB3ZSB0cmVhdCBpdCBhcyBhIHJlbG9hZCBzbyB0aGUg
aGlzdG9yeSBsaXN0IAorICAgIC8vIHZpc2l0aW5nIGluIHRoZSBoaXN0b3J5IGxpc3QsIHdlIHRy
ZWF0IGl0IGFzIGEgcmVsb2FkIHNvIHRoZSBoaXN0b3J5IGxpc3QKICAgICAvLyBpcyBhcHByb3By
aWF0ZWx5IG1haW50YWluZWQuCiAgICAgLy8KICAgICAvLyBGSVhNRTogVGhpcyBzZWVtcyBsaWtl
IGEgZGFuZ2Vyb3VzIG92ZXJsb2FkaW5nIG9mIHRoZSBtZWFuaW5nIG9mICJGcmFtZUxvYWRUeXBl
OjpSZWxvYWQiIC4uLgotICAgIC8vIHNob3VsZG4ndCBhIG1vcmUgZXhwbGljaXQgdHlwZSBvZiBy
ZWxvYWQgYmUgZGVmaW5lZCwgdGhhdCBtZWFucyByb3VnaGx5IAotICAgIC8vICJsb2FkIHdpdGhv
dXQgYWZmZWN0aW5nIGhpc3RvcnkiID8gCisgICAgLy8gc2hvdWxkbid0IGEgbW9yZSBleHBsaWNp
dCB0eXBlIG9mIHJlbG9hZCBiZSBkZWZpbmVkLCB0aGF0IG1lYW5zIHJvdWdobHkKKyAgICAvLyAi
bG9hZCB3aXRob3V0IGFmZmVjdGluZyBoaXN0b3J5IiA/CiAgICAgaWYgKHNob3VsZFJlbG9hZFRv
SGFuZGxlVW5yZWFjaGFibGVVUkwobmV3RG9jdW1lbnRMb2FkZXIpKSB7CiAgICAgICAgIC8vIHNo
b3VsZFJlbG9hZFRvSGFuZGxlVW5yZWFjaGFibGVVUkwoKSByZXR1cm5zIHRydWUgb25seSB3aGVu
IHRoZSBvcmlnaW5hbCBsb2FkIHR5cGUgaXMgYmFjay1mb3J3YXJkLgogICAgICAgICAvLyBJbiB0
aGlzIGNhc2Ugd2Ugc2hvdWxkIHNhdmUgdGhlIGRvY3VtZW50IHN0YXRlIG5vdy4gT3RoZXJ3aXNl
IHRoZSBzdGF0ZSBjYW4gYmUgbG9zdCBiZWNhdXNlIGxvYWQgdHlwZSBpcwpAQCAtMTQ4MSw3ICsx
NDgxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVwb3J0QmxvY2tlZFBvcnRGYWlsZWQoRnJhbWUq
IGZyYW1lLCBjb25zdCBTdHJpbmcmIHVybCkKICAgICBBU1NFUlQoIXVybC5pc0VtcHR5KCkpOwog
ICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIGZyYW1lLT5kb2N1
bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2Fn
ZUxldmVsOjpFcnJvciwgIk5vdCBhbGxvd2VkIHRvIHVzZSByZXN0cmljdGVkIG5ldHdvcmsgcG9y
dDogIiArIHVybCk7CiB9CiAKQEAgLTE1NzgsNyArMTU3OCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OnJlbG9hZChib29sIGVuZFRvRW5kUmVsb2FkLCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQp
CiAgICAgYXBwbHlTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9OZXdEb2N1bWVudExvYWRl
cihsb2FkZXIsIG1fZG9jdW1lbnRMb2FkZXItPnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lU
b1Byb3BhZ2F0ZSgpKTsKIAogICAgIGxvYWRlci0+c2V0VXNlckNvbnRlbnRFeHRlbnNpb25zRW5h
YmxlZChjb250ZW50QmxvY2tlcnNFbmFibGVkKTsKLSAgICAKKwogICAgIFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCA9IGxvYWRlci0+cmVxdWVzdCgpOwogCiAgICAgLy8gRklYTUU6IFdlIGRvbid0
IGhhdmUgYSBtZWNoYW5pc20gdG8gcmV2YWxpZGF0ZSB0aGUgbWFpbiByZXNvdXJjZSB3aXRob3V0
IHJlbG9hZGluZyBhdCB0aGUgbW9tZW50LgpAQCAtMTU4OSw3ICsxNTg5LDcgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6cmVsb2FkKGJvb2wgZW5kVG9FbmRSZWxvYWQsIGJvb2wgY29udGVudEJsb2NrZXJz
RW5hYmxlZCkKICAgICAgICAgbG9hZGVyLT5zZXRUcmlnZ2VyaW5nQWN0aW9uKE5hdmlnYXRpb25B
Y3Rpb24ocmVxdWVzdCwgTmF2aWdhdGlvblR5cGU6OkZvcm1SZXN1Ym1pdHRlZCkpOwogCiAgICAg
bG9hZGVyLT5zZXRPdmVycmlkZUVuY29kaW5nKG1fZG9jdW1lbnRMb2FkZXItPm92ZXJyaWRlRW5j
b2RpbmcoKSk7Ci0gICAgCisKICAgICBsb2FkV2l0aERvY3VtZW50TG9hZGVyKGxvYWRlci5wdHIo
KSwgZW5kVG9FbmRSZWxvYWQgPyBGcmFtZUxvYWRUeXBlOjpSZWxvYWRGcm9tT3JpZ2luIDogRnJh
bWVMb2FkVHlwZTo6UmVsb2FkLCAwLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6Olllcyk7
CiB9CiAKQEAgLTE2MDIsNyArMTYwMiw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnN0b3BBbGxMb2Fk
ZXJzKENsZWFyUHJvdmlzaW9uYWxJdGVtUG9saWN5IGNsZWFyUHJvdmlzaW9uYWxJdGVtCiAgICAg
Ly8gSWYgdGhpcyBtZXRob2QgaXMgY2FsbGVkIGZyb20gd2l0aGluIHRoaXMgbWV0aG9kLCBpbmZp
bml0ZSByZWN1cnNpb24gY2FuIG9jY3VyICgzNDQyMjE4KS4gQXZvaWQgdGhpcy4KICAgICBpZiAo
bV9pblN0b3BBbGxMb2FkZXJzKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICAvLyBDYWxs
aW5nIHN0b3BMb2FkaW5nKCkgb24gdGhlIHByb3Zpc2lvbmFsIGRvY3VtZW50IGxvYWRlciBjYW4g
YmxvdyBhd2F5CiAgICAgLy8gdGhlIGZyYW1lIGZyb20gdW5kZXJuZWF0aC4KICAgICBSZWY8RnJh
bWU+IHByb3RlY3QobV9mcmFtZSk7CkBAIC0xNjI3LDcgKzE2MjcsNyBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpzdG9wQWxsTG9hZGVycyhDbGVhclByb3Zpc2lvbmFsSXRlbVBvbGljeSBjbGVhclByb3Zp
c2lvbmFsSXRlbQogCiAgICAgbV9jaGVja1RpbWVyLnN0b3AoKTsKIAotICAgIG1faW5TdG9wQWxs
TG9hZGVycyA9IGZhbHNlOyAgICAKKyAgICBtX2luU3RvcEFsbExvYWRlcnMgPSBmYWxzZTsKIH0K
IAogdm9pZCBGcmFtZUxvYWRlcjo6c3RvcEZvclVzZXJDYW5jZWwoYm9vbCBkZWZlckNoZWNrTG9h
ZENvbXBsZXRlKQpAQCAtMTY2OCwxNCArMTY2OCwxNCBAQCBib29sIEZyYW1lTG9hZGVyOjppc0xv
YWRpbmcoKSBjb25zdAogCiBib29sIEZyYW1lTG9hZGVyOjpmcmFtZUhhc0xvYWRlZCgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1fc3RhdGVNYWNoaW5lLmNvbW1pdHRlZEZpcnN0UmVhbERvY3VtZW50
TG9hZCgpIHx8IChtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIgJiYgIW1fc3RhdGVNYWNoaW5l
LmNyZWF0aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSk7IAorICAgIHJldHVybiBtX3N0YXRlTWFj
aGluZS5jb21taXR0ZWRGaXJzdFJlYWxEb2N1bWVudExvYWQoKSB8fCAobV9wcm92aXNpb25hbERv
Y3VtZW50TG9hZGVyICYmICFtX3N0YXRlTWFjaGluZS5jcmVhdGluZ0luaXRpYWxFbXB0eURvY3Vt
ZW50KCkpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpzZXREb2N1bWVudExvYWRlcihEb2N1bWVu
dExvYWRlciogbG9hZGVyKQogewogICAgIGlmICghbG9hZGVyICYmICFtX2RvY3VtZW50TG9hZGVy
KQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBBU1NFUlQobG9hZGVyICE9IG1fZG9jdW1l
bnRMb2FkZXIpOwogICAgIEFTU0VSVCghbG9hZGVyIHx8IGxvYWRlci0+ZnJhbWVMb2FkZXIoKSA9
PSB0aGlzKTsKIApAQCAtMTcyNSw5ICsxNzI1LDkgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c2V0UHJv
dmlzaW9uYWxEb2N1bWVudExvYWRlcihEb2N1bWVudExvYWRlciogbG9hZGVyKQogfQogCiB2b2lk
IEZyYW1lTG9hZGVyOjpzZXRTdGF0ZShGcmFtZVN0YXRlIG5ld1N0YXRlKQoteyAgICAKK3sKICAg
ICBtX3N0YXRlID0gbmV3U3RhdGU7Ci0gICAgCisKICAgICBpZiAobmV3U3RhdGUgPT0gRnJhbWVT
dGF0ZVByb3Zpc2lvbmFsKQogICAgICAgICBwcm92aXNpb25hbExvYWRTdGFydGVkKCk7CiAgICAg
ZWxzZSBpZiAobmV3U3RhdGUgPT0gRnJhbWVTdGF0ZUNvbXBsZXRlKSB7CkBAIC0xODEyLDcgKzE4
MTIsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQoKQogICAgIC8v
IGp1c3QgYWJvdXQgdG8gY29tbWl0IGEgbmV3IHBhZ2UsIHRoZXJlIGNhbm5vdCBwb3NzaWJseSBi
ZSBhIHBlbmRpbmcgcmVkaXJlY3QgYXQgdGhpcyBwb2ludC4KICAgICBpZiAobV9zZW50UmVkaXJl
Y3ROb3RpZmljYXRpb24pCiAgICAgICAgIGNsaWVudFJlZGlyZWN0Q2FuY2VsbGVkT3JGaW5pc2hl
ZChmYWxzZSk7Ci0gICAgCisKICAgICBpZiAoY2FjaGVkUGFnZSAmJiBjYWNoZWRQYWdlLT5kb2N1
bWVudCgpKSB7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgICAgICAvLyBGSVhNRTogQ2FjaGVkUGFn
ZTo6cmVzdG9yZSgpIHdvdWxkIGRpc3BhdGNoIHZpZXdwb3J0IGNoYW5nZSBub3RpZmljYXRpb24u
IEhvd2V2ZXIgVUlLaXQgZXhwZWN0cyBsb2FkCkBAIC0xODM3LDcgKzE4MzcsNyBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQoKQogICAgICAgICBtX2ZyYW1lLnBhZ2Uo
KS0+Y2hyb21lKCkuc2V0RGlzcGF0Y2hWaWV3cG9ydERhdGFEaWRDaGFuZ2VTdXBwcmVzc2VkKGZh
bHNlKTsKICAgICAgICAgbV9mcmFtZS5wYWdlKCktPmNocm9tZSgpLmRpc3BhdGNoVmlld3BvcnRQ
cm9wZXJ0aWVzRGlkQ2hhbmdlKG1fZnJhbWUucGFnZSgpLT52aWV3cG9ydEFyZ3VtZW50cygpKTsK
ICNlbmRpZgotICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgdGl0bGUgbGV0IHRoZSBXZWJWaWV3IGtu
b3cgYWJvdXQgaXQuIAorICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgdGl0bGUgbGV0IHRoZSBXZWJW
aWV3IGtub3cgYWJvdXQgaXQuCiAgICAgICAgIFN0cmluZ1dpdGhEaXJlY3Rpb24gdGl0bGUgPSBt
X2RvY3VtZW50TG9hZGVyLT50aXRsZSgpOwogICAgICAgICBpZiAoIXRpdGxlLmlzTnVsbCgpKQog
ICAgICAgICAgICAgbV9jbGllbnQuZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUodGl0bGUpOwpAQCAt
MjAyMiwxMSArMjAyMiwxMSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjbGllbnRSZWRpcmVjdENhbmNl
bGxlZE9yRmluaXNoZWQoYm9vbCBjYW5jZWxXaXRoTG9hZEluUHJvZ3Jlcwogdm9pZCBGcmFtZUxv
YWRlcjo6Y2xpZW50UmVkaXJlY3RlZChjb25zdCBVUkwmIHVybCwgZG91YmxlIHNlY29uZHMsIGRv
dWJsZSBmaXJlRGF0ZSwgTG9ja0JhY2tGb3J3YXJkTGlzdCBsb2NrQmFja0ZvcndhcmRMaXN0KQog
ewogICAgIG1fY2xpZW50LmRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdCh1cmwsIHNl
Y29uZHMsIGZpcmVEYXRlKTsKLSAgICAKKwogICAgIC8vIFJlbWVtYmVyIHRoYXQgd2Ugc2VudCBh
IHJlZGlyZWN0IG5vdGlmaWNhdGlvbiB0byB0aGUgZnJhbWUgbG9hZCBkZWxlZ2F0ZSBzbyB0aGF0
IHdoZW4gd2UgY29tbWl0CiAgICAgLy8gdGhlIG5leHQgcHJvdmlzaW9uYWwgbG9hZCwgd2UgY2Fu
IHNlbmQgYSBjb3JyZXNwb25kaW5nIC13ZWJWaWV3OmRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9y
RnJhbWU6CiAgICAgbV9zZW50UmVkaXJlY3ROb3RpZmljYXRpb24gPSB0cnVlOwotICAgIAorCiAg
ICAgLy8gSWYgYSAicXVpY2siIHJlZGlyZWN0IGNvbWVzIGluLCB3ZSBzZXQgYSBzcGVjaWFsIG1v
ZGUgc28gd2UgdHJlYXQgdGhlIG5leHQKICAgICAvLyBsb2FkIGFzIHBhcnQgb2YgdGhlIG9yaWdp
bmFsIG5hdmlnYXRpb24uIElmIHdlIGRvbid0IGhhdmUgYSBkb2N1bWVudCBsb2FkZXIsIHdlIGhh
dmUKICAgICAvLyBubyAib3JpZ2luYWwiIGxvYWQgb24gd2hpY2ggdG8gYmFzZSBhIHJlZGlyZWN0
LCBzbyB3ZSB0cmVhdCB0aGUgcmVkaXJlY3QgYXMgYSBub3JtYWwgbG9hZC4KQEAgLTIwNTEsNyAr
MjA1MSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNsb3NlT2xkRGF0YVNvdXJjZXMoKQogICAgIC8v
IHVzZSBhIHJlY3Vyc2l2ZSBhbGdvcml0aG0gaGVyZS4KICAgICBmb3IgKEZyYW1lKiBjaGlsZCA9
IG1fZnJhbWUudHJlZSgpLmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUo
KS5uZXh0U2libGluZygpKQogICAgICAgICBjaGlsZC0+bG9hZGVyKCkuY2xvc2VPbGREYXRhU291
cmNlcygpOwotICAgIAorCiAgICAgaWYgKG1fZG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIG1fY2xp
ZW50LmRpc3BhdGNoV2lsbENsb3NlKCk7CiAKQEAgLTIwNjgsNyArMjA2OCw3IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OnByZXBhcmVGb3JDYWNoZWRQYWdlUmVzdG9yZSgpCiAKICAgICAvLyBXZSBzdGls
bCBoYXZlIHRvIGNsb3NlIHRoZSBwcmV2aW91cyBwYXJ0IHBhZ2UuCiAgICAgY2xvc2VVUkwoKTsK
LSAgICAKKwogICAgIC8vIERlbGV0ZSBvbGQgc3RhdHVzIGJhciBtZXNzYWdlcyAoaWYgaXQgX3dh
c18gYWN0aXZhdGVkIG9uIGxhc3QgVVJMKS4KICAgICBpZiAobV9mcmFtZS5zY3JpcHQoKS5jYW5F
eGVjdXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpIHsKICAgICAgICAgRE9NV2lu
ZG93KiB3aW5kb3cgPSBtX2ZyYW1lLmRvY3VtZW50KCktPmRvbVdpbmRvdygpOwpAQCAtMjA4MCw3
ICsyMDgwLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cHJlcGFyZUZvckNhY2hlZFBhZ2VSZXN0b3Jl
KCkKIHZvaWQgRnJhbWVMb2FkZXI6Om9wZW4oQ2FjaGVkRnJhbWVCYXNlJiBjYWNoZWRGcmFtZSkK
IHsKICAgICBtX2lzQ29tcGxldGUgPSBmYWxzZTsKLSAgICAKKwogICAgIC8vIERvbid0IHJlLWVt
aXQgdGhlIGxvYWQgZXZlbnQuCiAgICAgbV9kaWRDYWxsSW1wbGljaXRDbG9zZSA9IHRydWU7CiAK
QEAgLTIxMDUsNyArMjEwNSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6Om9wZW4oQ2FjaGVkRnJhbWVC
YXNlJiBjYWNoZWRGcmFtZSkKICAgICBtX291dGdvaW5nUmVmZXJyZXIgPSB1cmwuc3RyaW5nKCk7
CiAKICAgICBGcmFtZVZpZXcqIHZpZXcgPSBjYWNoZWRGcmFtZS52aWV3KCk7Ci0gICAgCisKICAg
ICAvLyBXaGVuIG5hdmlnYXRpbmcgdG8gYSBDYWNoZWRGcmFtZSBpdHMgRnJhbWVWaWV3IHNob3Vs
ZCBuZXZlciBiZSBudWxsLiAgSWYgaXQgaXMgd2UnbGwgY3Jhc2ggaW4gY3JlYXRpdmUgd2F5cyBk
b3duc3RyZWFtLgogICAgIEFTU0VSVCh2aWV3KTsKICAgICB2aWV3LT5zZXRXYXNTY3JvbGxlZEJ5
VXNlcihmYWxzZSk7CkBAIC0yMTE2LDcgKzIxMTYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpvcGVu
KENhY2hlZEZyYW1lQmFzZSYgY2FjaGVkRnJhbWUpCiAgICAgLy8gVXNlIHRoZSBwcmV2aW91cyBT
Y3JvbGxWaWV3J3MgZnJhbWUgcmVjdC4KICAgICBpZiAocHJldmlvdXNWaWV3RnJhbWVSZWN0KQog
ICAgICAgICB2aWV3LT5zZXRGcmFtZVJlY3QocHJldmlvdXNWaWV3RnJhbWVSZWN0LnZhbHVlKCkp
OwotICAgIAorCiAgICAgbV9mcmFtZS5zZXREb2N1bWVudChkb2N1bWVudCk7CiAgICAgZG9jdW1l
bnQtPmRvbVdpbmRvdygpLT5yZXN1bWVGcm9tRG9jdW1lbnRTdXNwZW5zaW9uKCk7CiAKQEAgLTIx
NjgsNyArMjE2OCw3IEBAIEZyYW1lTG9hZFR5cGUgRnJhbWVMb2FkZXI6OmxvYWRUeXBlKCkgY29u
c3QKIHsKICAgICByZXR1cm4gbV9sb2FkVHlwZTsKIH0KLSAgICAKKwogQ2FjaGVQb2xpY3kgRnJh
bWVMb2FkZXI6OnN1YnJlc291cmNlQ2FjaGVQb2xpY3koKSBjb25zdAogewogICAgIGlmIChQYWdl
KiBwYWdlID0gbV9mcmFtZS5wYWdlKCkpIHsKQEAgLTIxODcsNyArMjE4Nyw3IEBAIENhY2hlUG9s
aWN5IEZyYW1lTG9hZGVyOjpzdWJyZXNvdXJjZUNhY2hlUG9saWN5KCkgY29uc3QKICAgICAgICAg
aWYgKHBhcmVudENhY2hlUG9saWN5ICE9IENhY2hlUG9saWN5VmVyaWZ5KQogICAgICAgICAgICAg
cmV0dXJuIHBhcmVudENhY2hlUG9saWN5OwogICAgIH0KLSAgICAKKwogICAgIHN3aXRjaCAobV9s
b2FkVHlwZSkgewogICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6UmVsb2FkOgogICAgICAgICByZXR1
cm4gQ2FjaGVQb2xpY3lSZXZhbGlkYXRlOwpAQCAtMjIyNSw3ICsyMjI1LDcgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6Y2hlY2tMb2FkQ29tcGxldGVGb3JUaGlzRnJhbWUoKQogICAgICAgICAgICAgUmVm
UHRyPERvY3VtZW50TG9hZGVyPiBwZGwgPSBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXI7CiAg
ICAgICAgICAgICBpZiAoIXBkbCkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICAgICAgCisKICAgICAgICAgICAgIC8vIElmIHdlJ3ZlIHJlY2VpdmVkIGFueSBlcnJvcnMgd2Ug
bWF5IGJlIHN0dWNrIGluIHRoZSBwcm92aXNpb25hbCBzdGF0ZSBhbmQgYWN0dWFsbHkgY29tcGxl
dGUuCiAgICAgICAgICAgICBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciA9IHBkbC0+bWFpbkRv
Y3VtZW50RXJyb3IoKTsKICAgICAgICAgICAgIGlmIChlcnJvci5pc051bGwoKSkKQEAgLTIyMzcs
NyArMjIzNyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRlRm9yVGhpc0Zy
YW1lKCkKICAgICAgICAgICAgICAgICBpZiAoaXNCYWNrRm9yd2FyZExvYWRUeXBlKGxvYWRUeXBl
KCkpKQogICAgICAgICAgICAgICAgICAgICAvLyBSZXNldCB0aGUgYmFjayBmb3J3YXJkIGxpc3Qg
dG8gdGhlIGxhc3QgY29tbWl0dGVkIGhpc3RvcnkgaXRlbSBhdCB0aGUgdG9wIGxldmVsLgogICAg
ICAgICAgICAgICAgICAgICBpdGVtID0gcGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuaGlzdG9y
eSgpLmN1cnJlbnRJdGVtKCk7Ci0gICAgICAgICAgICAgICAgCisKICAgICAgICAgICAgIC8vIE9u
bHkgcmVzZXQgaWYgd2UgYXJlbid0IGFscmVhZHkgZ29pbmcgdG8gYSBuZXcgcHJvdmlzaW9uYWwg
aXRlbS4KICAgICAgICAgICAgIGJvb2wgc2hvdWxkUmVzZXQgPSAhaGlzdG9yeSgpLnByb3Zpc2lv
bmFsSXRlbSgpOwogICAgICAgICAgICAgaWYgKCFwZGwtPmlzTG9hZGluZ0luQVBJU2Vuc2UoKSB8
fCBwZGwtPmlzU3RvcHBpbmcoKSkgewpAQCAtMjI2OCw5ICsyMjY4LDkgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6Y2hlY2tMb2FkQ29tcGxldGVGb3JUaGlzRnJhbWUoKQogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBjYXNl
IEZyYW1lU3RhdGVDb21taXR0ZWRQYWdlOiB7Ci0gICAgICAgICAgICBEb2N1bWVudExvYWRlciog
ZGwgPSBtX2RvY3VtZW50TG9hZGVyLmdldCgpOyAgICAgICAgICAgIAorICAgICAgICAgICAgRG9j
dW1lbnRMb2FkZXIqIGRsID0gbV9kb2N1bWVudExvYWRlci5nZXQoKTsKICAgICAgICAgICAgIGlm
ICghZGwgfHwgKGRsLT5pc0xvYWRpbmdJbkFQSVNlbnNlKCkgJiYgIWRsLT5pc1N0b3BwaW5nKCkp
KQogICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMjI4MSw3ICsyMjgxLDcgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29tcGxldGVGb3JUaGlzRnJhbWUoKQogICAgICAgICAgICAg
Ly8gdGhlIG5ldyBwYWdlIGlzIHJlYWR5LgogCiAgICAgICAgICAgICBtX2NsaWVudC5mb3JjZUxh
eW91dEZvck5vbkhUTUwoKTsKLSAgICAgICAgICAgICAKKwogICAgICAgICAgICAgLy8gSWYgdGhl
IHVzZXIgaGFkIGEgc2Nyb2xsIHBvaW50LCBzY3JvbGwgdG8gaXQsIG92ZXJyaWRpbmcgdGhlIGFu
Y2hvciBwb2ludCBpZiBhbnkuCiAgICAgICAgICAgICBpZiAobV9mcmFtZS5wYWdlKCkpIHsKICAg
ICAgICAgICAgICAgICBpZiAoaXNCYWNrRm9yd2FyZExvYWRUeXBlKG1fbG9hZFR5cGUpIHx8IG1f
bG9hZFR5cGUgPT0gRnJhbWVMb2FkVHlwZTo6UmVsb2FkIHx8IG1fbG9hZFR5cGUgPT0gRnJhbWVM
b2FkVHlwZTo6UmVsb2FkRnJvbU9yaWdpbikKQEAgLTIzMzMsNyArMjMzMyw3IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRlRm9yVGhpc0ZyYW1lKCkKIAogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGNhc2UgRnJhbWVTdGF0ZUNv
bXBsZXRlOgogICAgICAgICAgICAgbV9sb2FkVHlwZSA9IEZyYW1lTG9hZFR5cGU6OlN0YW5kYXJk
OwogICAgICAgICAgICAgZnJhbWVMb2FkQ29tcGxldGVkKCk7CkBAIC0yMzQ5LDggKzIzNDksOCBA
QCB2b2lkIEZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRlcldpbGxTdWJtaXRGb3JtKCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgcHJlcGFyZUZvckxvYWRTdGFydCgpOwotICAgIAotICAgIC8v
IFRoZSBsb2FkIG1pZ2h0IGJlIGNhbmNlbGxlZCBpbnNpZGUgb2YgcHJlcGFyZUZvckxvYWRTdGFy
dCgpLCBudWxsaW5nIG91dCB0aGUgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLCAKKworICAg
IC8vIFRoZSBsb2FkIG1pZ2h0IGJlIGNhbmNlbGxlZCBpbnNpZGUgb2YgcHJlcGFyZUZvckxvYWRT
dGFydCgpLCBudWxsaW5nIG91dCB0aGUgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLAogICAg
IC8vIHNvIHdlIG5lZWQgdG8gbnVsbCBjaGVjayBpdCBhZ2Fpbi4KICAgICBpZiAoIW1fcHJvdmlz
aW9uYWxEb2N1bWVudExvYWRlcikKICAgICAgICAgcmV0dXJuOwpAQCAtMjQ0NiwxMyArMjQ0Niwx
MyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjbG9zZUFuZFJlbW92ZUNoaWxkKEZyYW1lKiBjaGlsZCkK
IHZvaWQgRnJhbWVMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRlKCkKIHsKICAgICBBU1NFUlQobV9j
bGllbnQuaGFzV2ViVmlldygpKTsKLSAgICAKKwogICAgIG1fc2hvdWxkQ2FsbENoZWNrTG9hZENv
bXBsZXRlID0gZmFsc2U7CiAKICAgICBpZiAoIW1fZnJhbWUucGFnZSgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICAvLyBGSVhNRTogQWx3YXlzIHRyYXZlcnNpbmcgdGhlIGVudGlyZSBmcmFtZSB0
cmVlIGlzIGEgYml0IGluZWZmaWNpZW50LCBidXQgCisgICAgLy8gRklYTUU6IEFsd2F5cyB0cmF2
ZXJzaW5nIHRoZSBlbnRpcmUgZnJhbWUgdHJlZSBpcyBhIGJpdCBpbmVmZmljaWVudCwgYnV0CiAg
ICAgLy8gaXMgY3VycmVudGx5IG5lZWRlZCBpbiBvcmRlciB0byBudWxsIG91dCB0aGUgcHJldmlv
dXMgaGlzdG9yeSBpdGVtIGZvciBhbGwgZnJhbWVzLgogICAgIFZlY3RvcjxSZWY8RnJhbWU+LCAx
Nj4gZnJhbWVzOwogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1fZnJhbWUubWFpbkZyYW1lKCk7
IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpCkBAIC0yNTMzLDcg
KzI1MzMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkZXRhY2hWaWV3c0FuZERvY3VtZW50TG9hZGVy
KCkKICAgICBzZXREb2N1bWVudExvYWRlcihudWxscHRyKTsKICAgICBtX2NsaWVudC5kZXRhY2hl
ZEZyb21QYXJlbnQzKCk7CiB9Ci0gICAgCisKIHZvaWQgRnJhbWVMb2FkZXI6OmFkZEV4dHJhRmll
bGRzVG9TdWJyZXNvdXJjZVJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAg
IGFkZEV4dHJhRmllbGRzVG9SZXF1ZXN0KHJlcXVlc3QsIG1fbG9hZFR5cGUsIGZhbHNlKTsKQEAg
LTI2NjQsNyArMjY2NCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdChjb25z
dCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmCiAgICAgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSA9IGluUmVxdWVzdC5odHRwQ29udGVudFR5cGUoKTsKICAgICBTdHJp
bmcgb3JpZ2luID0gaW5SZXF1ZXN0Lmh0dHBPcmlnaW4oKTsKIAotICAgIFJlc291cmNlUmVxdWVz
dCB3b3JraW5nUmVzb3VyY2VSZXF1ZXN0KHVybCk7ICAgIAorICAgIFJlc291cmNlUmVxdWVzdCB3
b3JraW5nUmVzb3VyY2VSZXF1ZXN0KHVybCk7CiAKICAgICBpZiAoIXJlZmVycmVyLmlzRW1wdHko
KSkKICAgICAgICAgd29ya2luZ1Jlc291cmNlUmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIocmVmZXJy
ZXIpOwpAQCAtMjcwMywxOSArMjcwMywxOSBAQCB1bnNpZ25lZCBsb25nIEZyYW1lTG9hZGVyOjps
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdQogewog
ICAgIEFTU0VSVChtX2ZyYW1lLmRvY3VtZW50KCkpOwogICAgIFN0cmluZyByZWZlcnJlciA9IFNl
Y3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKG1fZnJhbWUuZG9jdW1lbnQoKS0+
cmVmZXJyZXJQb2xpY3koKSwgcmVxdWVzdC51cmwoKSwgb3V0Z29pbmdSZWZlcnJlcigpKTsKLSAg
ICAKKwogICAgIFJlc291cmNlUmVxdWVzdCBpbml0aWFsUmVxdWVzdCA9IHJlcXVlc3Q7CiAgICAg
aW5pdGlhbFJlcXVlc3Quc2V0VGltZW91dEludGVydmFsKDEwKTsKLSAgICAKKwogICAgIGlmICgh
cmVmZXJyZXIuaXNFbXB0eSgpKQogICAgICAgICBpbml0aWFsUmVxdWVzdC5zZXRIVFRQUmVmZXJy
ZXIocmVmZXJyZXIpOwogICAgIGFkZEhUVFBPcmlnaW5JZk5lZWRlZChpbml0aWFsUmVxdWVzdCwg
b3V0Z29pbmdPcmlnaW4oKSk7CiAKICAgICBpbml0aWFsUmVxdWVzdC5zZXRGaXJzdFBhcnR5Rm9y
Q29va2llcyhtX2ZyYW1lLm1haW5GcmFtZSgpLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJl
cXVlc3QoKS51cmwoKSk7Ci0gICAgCisKICAgICBhZGRFeHRyYUZpZWxkc1RvU3VicmVzb3VyY2VS
ZXF1ZXN0KGluaXRpYWxSZXF1ZXN0KTsKIAotICAgIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciA9
IDA7ICAgIAorICAgIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciA9IDA7CiAgICAgUmVzb3VyY2VS
ZXF1ZXN0IG5ld1JlcXVlc3QoaW5pdGlhbFJlcXVlc3QpOwogICAgIHJlcXVlc3RGcm9tRGVsZWdh
dGUobmV3UmVxdWVzdCwgaWRlbnRpZmllciwgZXJyb3IpOwogCkBAIC0yNzY2LDEyICsyNzY2LDEy
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJlY2VpdmVkTWFpblJlc291cmNlRXJyb3IoY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IpCiAgICAgaWYgKG1fc3RhdGUgPT0gRnJhbWVTdGF0ZVByb3Zpc2lv
bmFsICYmIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcikgewogICAgICAgICBpZiAobV9zdWJt
aXR0ZWRGb3JtVVJMID09IG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+b3JpZ2luYWxSZXF1
ZXN0Q29weSgpLnVybCgpKQogICAgICAgICAgICAgbV9zdWJtaXR0ZWRGb3JtVVJMID0gVVJMKCk7
Ci0gICAgICAgICAgICAKKwogICAgICAgICAvLyBXZSBtaWdodCBoYXZlIG1hZGUgYSBwYWdlIGNh
Y2hlIGl0ZW0sIGJ1dCBub3cgd2UncmUgYmFpbGluZyBvdXQgZHVlIHRvIGFuIGVycm9yIGJlZm9y
ZSB3ZSBldmVyCiAgICAgICAgIC8vIHRyYW5zaXRpb25lZCB0byB0aGUgbmV3IHBhZ2UgKGJlZm9y
ZSBXZWJGcmFtZVN0YXRlID09IGNvbW1pdCkuICBUaGUgZ29hbCBoZXJlIGlzIHRvIHJlc3RvcmUg
YW55IHN0YXRlCiAgICAgICAgIC8vIHNvIHRoYXQgdGhlIGV4aXN0aW5nIHZpZXcgKHRoYXQgd2Vu
ZXZlciBnb3QgZmFyIGVub3VnaCB0byByZXBsYWNlKSBjYW4gY29udGludWUgYmVpbmcgdXNlZC4K
ICAgICAgICAgaGlzdG9yeSgpLmludmFsaWRhdGVDdXJyZW50SXRlbUNhY2hlZFBhZ2UoKTsKLSAg
ICAgICAgCisKICAgICAgICAgLy8gQ2FsbCBjbGllbnRSZWRpcmVjdENhbmNlbGxlZE9yRmluaXNo
ZWQgaGVyZSBzbyB0aGF0IHRoZSBmcmFtZSBsb2FkIGRlbGVnYXRlIGlzIG5vdGlmaWVkIHRoYXQg
dGhlIHJlZGlyZWN0J3MKICAgICAgICAgLy8gc3RhdHVzIGhhcyBjaGFuZ2VkLCBpZiB0aGVyZSB3
YXMgYSByZWRpcmVjdC4gVGhlIGZyYW1lIGxvYWQgZGVsZWdhdGUgbWF5IGhhdmUgc2F2ZWQgc29t
ZSBzdGF0ZSBhYm91dAogICAgICAgICAvLyB0aGUgcmVkaXJlY3QgaW4gaXRzIC13ZWJWaWV3Ondp
bGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTDpkZWxheTpmaXJlRGF0ZTpmb3JGcmFtZTouIFNp
bmNlIHdlIGFyZSBkZWZpbml0ZWx5CkBAIC0yOTQ4LDcgKzI5NDgsNyBAQCBib29sIEZyYW1lTG9h
ZGVyOjpkaXNwYXRjaEJlZm9yZVVubG9hZEV2ZW50KENocm9tZSYgY2hyb21lLCBGcmFtZUxvYWRl
ciogZnJhbWVMbwogICAgIFJlZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQgPSBtX2ZyYW1lLmRvY3Vt
ZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudC0+Ym9keU9yRnJhbWVzZXQoKSkKICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgCisKICAgICBSZWY8QmVmb3JlVW5sb2FkRXZlbnQ+IGJlZm9yZVVubG9h
ZEV2ZW50ID0gQmVmb3JlVW5sb2FkRXZlbnQ6OmNyZWF0ZSgpOwogICAgIG1fcGFnZURpc21pc3Nh
bEV2ZW50QmVpbmdEaXNwYXRjaGVkID0gUGFnZURpc21pc3NhbFR5cGU6OkJlZm9yZVVubG9hZDsK
IApAQCAtMjk4NCwxMyArMjk4NCwxMyBAQCBib29sIEZyYW1lTG9hZGVyOjpkaXNwYXRjaEJlZm9y
ZVVubG9hZEV2ZW50KENocm9tZSYgY2hyb21lLCBGcmFtZUxvYWRlciogZnJhbWVMbwogICAgICAg
ICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywg
TWVzc2FnZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFsKCJCbG9ja2VkIGF0dGVtcHQgdG8gc2hv
dyBiZWZvcmV1bmxvYWQgY29uZmlybWF0aW9uIGRpYWxvZyBvbiBiZWhhbGYgb2YgYSBmcmFtZSB3
aXRoIGRpZmZlcmVudCBzZWN1cml0eSBvcmlnaW4uIFByb3RvY29scywgZG9tYWlucywgYW5kIHBv
cnRzIG11c3QgbWF0Y2guIikpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGlmICgmcGFyZW50RnJhbWUtPmxv
YWRlcigpID09IGZyYW1lTG9hZGVyQmVpbmdOYXZpZ2F0ZWQpCiAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgcGFyZW50RnJhbWUgPSBwYXJlbnRGcmFt
ZS0+dHJlZSgpLnBhcmVudCgpOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIC8vIFRo
ZSBuYXZpZ2F0aW5nRnJhbWVMb2FkZXIgc2hvdWxkIGFsd2F5cyBiZSBpbiBvdXIgYW5jZXN0b3J5
LgogICAgICAgICBBU1NFUlQocGFyZW50RnJhbWUpOwogICAgICAgICBBU1NFUlQoJnBhcmVudEZy
YW1lLT5sb2FkZXIoKSA9PSBmcmFtZUxvYWRlckJlaW5nTmF2aWdhdGVkKTsKQEAgLTMwMTQsMTQg
KzMwMTQsMTQgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9u
UG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWUKICAgICBib29sIHVybElzRGlzYWxs
b3dlZCA9IGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCA9PSBBbGxvd05hdmlnYXRpb25Ub0lu
dmFsaWRVUkw6Ok5vICYmICFyZXF1ZXN0LnVybCgpLmlzVmFsaWQoKTsKIAogICAgIC8vIFRocmVl
IHJlYXNvbnMgd2UgY2FuJ3QgY29udGludWU6Ci0gICAgLy8gICAgMSkgTmF2aWdhdGlvbiBwb2xp
Y3kgZGVsZWdhdGUgc2FpZCB3ZSBjYW4ndCBzbyByZXF1ZXN0IGlzIG5pbC4gQSBwcmltYXJ5IGNh
c2Ugb2YgdGhpcyAKKyAgICAvLyAgICAxKSBOYXZpZ2F0aW9uIHBvbGljeSBkZWxlZ2F0ZSBzYWlk
IHdlIGNhbid0IHNvIHJlcXVlc3QgaXMgbmlsLiBBIHByaW1hcnkgY2FzZSBvZiB0aGlzCiAgICAg
Ly8gICAgICAgaXMgdGhlIHVzZXIgcmVzcG9uZGluZyBDYW5jZWwgdG8gdGhlIGZvcm0gcmVwb3N0
IG5hZyBzaGVldC4KICAgICAvLyAgICAyKSBVc2VyIHJlc3BvbmRlZCBDYW5jZWwgdG8gYW4gYWxl
cnQgcG9wcGVkIHVwIGJ5IHRoZSBiZWZvcmUgdW5sb2FkIGV2ZW50IGhhbmRsZXIuCiAgICAgLy8g
ICAgMykgVGhlIHJlcXVlc3QncyBVUkwgaXMgaW52YWxpZCBhbmQgbmF2aWdhdGlvbiB0byBpbnZh
bGlkIFVSTHMgaXMgZGlzYWxsb3dlZC4KICAgICBib29sIGNhbkNvbnRpbnVlID0gc2hvdWxkQ29u
dGludWUgJiYgc2hvdWxkQ2xvc2UoKSAmJiAhdXJsSXNEaXNhbGxvd2VkOwogCiAgICAgaWYgKCFj
YW5Db250aW51ZSkgewotICAgICAgICAvLyBJZiB3ZSB3ZXJlIHdhaXRpbmcgZm9yIGEgcXVpY2sg
cmVkaXJlY3QsIGJ1dCB0aGUgcG9saWN5IGRlbGVnYXRlIGRlY2lkZWQgdG8gaWdub3JlIGl0LCB0
aGVuIHdlIAorICAgICAgICAvLyBJZiB3ZSB3ZXJlIHdhaXRpbmcgZm9yIGEgcXVpY2sgcmVkaXJl
Y3QsIGJ1dCB0aGUgcG9saWN5IGRlbGVnYXRlIGRlY2lkZWQgdG8gaWdub3JlIGl0LCB0aGVuIHdl
CiAgICAgICAgIC8vIG5lZWQgdG8gcmVwb3J0IHRoYXQgdGhlIGNsaWVudCByZWRpcmVjdCB3YXMg
Y2FuY2VsbGVkLgogICAgICAgICAvLyBGSVhNRTogVGhlIGNsaWVudCBzaG91bGQgYmUgdG9sZCBh
Ym91dCBpZ25vcmVkIG5vbi1xdWljayByZWRpcmVjdHMsIHRvby4KICAgICAgICAgaWYgKG1fcXVp
Y2tSZWRpcmVjdENvbWluZykKQEAgLTMwMjksOSArMzAyOSw5IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OmNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlCiAKICAgICAgICAgc2V0UG9saWN5RG9jdW1lbnRMb2FkZXIobnVsbHB0cik7CiAKLSAg
ICAgICAgLy8gSWYgdGhlIG5hdmlnYXRpb24gcmVxdWVzdCBjYW1lIGZyb20gdGhlIGJhY2svZm9y
d2FyZCBtZW51LCBhbmQgd2UgcHVudCBvbiBpdCwgd2UgaGF2ZSB0aGUgCi0gICAgICAgIC8vIHBy
b2JsZW0gdGhhdCB3ZSBoYXZlIG9wdGltaXN0aWNhbGx5IG1vdmVkIHRoZSBiL2YgY3Vyc29yIGFs
cmVhZHksIHNvIG1vdmUgaXQgYmFjay4gIEZvciBzYW5pdHksIAotICAgICAgICAvLyB3ZSBvbmx5
IGRvIHRoaXMgd2hlbiBwdW50aW5nIGEgbmF2aWdhdGlvbiBmb3IgdGhlIHRhcmdldCBmcmFtZSBv
ciB0b3AtbGV2ZWwgZnJhbWUuICAKKyAgICAgICAgLy8gSWYgdGhlIG5hdmlnYXRpb24gcmVxdWVz
dCBjYW1lIGZyb20gdGhlIGJhY2svZm9yd2FyZCBtZW51LCBhbmQgd2UgcHVudCBvbiBpdCwgd2Ug
aGF2ZSB0aGUKKyAgICAgICAgLy8gcHJvYmxlbSB0aGF0IHdlIGhhdmUgb3B0aW1pc3RpY2FsbHkg
bW92ZWQgdGhlIGIvZiBjdXJzb3IgYWxyZWFkeSwgc28gbW92ZSBpdCBiYWNrLiBGb3Igc2FuaXR5
LAorICAgICAgICAvLyB3ZSBvbmx5IGRvIHRoaXMgd2hlbiBwdW50aW5nIGEgbmF2aWdhdGlvbiBm
b3IgdGhlIHRhcmdldCBmcmFtZSBvciB0b3AtbGV2ZWwgZnJhbWUuCiAgICAgICAgIGlmICgoaXNU
YXJnZXRJdGVtIHx8IG1fZnJhbWUuaXNNYWluRnJhbWUoKSkgJiYgaXNCYWNrRm9yd2FyZExvYWRU
eXBlKHBvbGljeUNoZWNrZXIoKS5sb2FkVHlwZSgpKSkgewogICAgICAgICAgICAgaWYgKFBhZ2Uq
IHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKSkgewogICAgICAgICAgICAgICAgIGlmIChIaXN0b3J5SXRl
bSogcmVzZXRJdGVtID0gbV9mcmFtZS5tYWluRnJhbWUoKS5sb2FkZXIoKS5oaXN0b3J5KCkuY3Vy
cmVudEl0ZW0oKSkgewpAQCAtMzA0Niw5ICszMDQ2LDkgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29u
dGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWUKICAgICBGcmFtZUxvYWRUeXBlIHR5cGUgPSBwb2xpY3lDaGVja2VyKCkubG9hZFR5cGUoKTsK
ICAgICAvLyBBIG5ldyBuYXZpZ2F0aW9uIGlzIGluIHByb2dyZXNzLCBzbyBkb24ndCBjbGVhciB0
aGUgaGlzdG9yeSdzIHByb3Zpc2lvbmFsIGl0ZW0uCiAgICAgc3RvcEFsbExvYWRlcnMoU2hvdWxk
Tm90Q2xlYXJQcm92aXNpb25hbEl0ZW0pOwotICAgIAorCiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVt
LzYyNTA4NTY+IC0gSW4gY2VydGFpbiBjaXJjdW1zdGFuY2VzIG9uIHBhZ2VzIHdpdGggbXVsdGlw
bGUgZnJhbWVzLCBzdG9wQWxsTG9hZGVycygpCi0gICAgLy8gbWlnaHQgZGV0YWNoIHRoZSBjdXJy
ZW50IEZyYW1lTG9hZGVyLCBpbiB3aGljaCBjYXNlIHdlIHNob3VsZCBiYWlsIG9uIHRoaXMgbmV3
bHkgZGVmdW5jdCBsb2FkLiAKKyAgICAvLyBtaWdodCBkZXRhY2ggdGhlIGN1cnJlbnQgRnJhbWVM
b2FkZXIsIGluIHdoaWNoIGNhc2Ugd2Ugc2hvdWxkIGJhaWwgb24gdGhpcyBuZXdseSBkZWZ1bmN0
IGxvYWQuCiAgICAgaWYgKCFtX2ZyYW1lLnBhZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0z
MjY0LDcgKzMyNjQsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkU2FtZURvY3VtZW50SXRlbShI
aXN0b3J5SXRlbSYgaXRlbSkKICAgICAgICAgdmlldy0+c2V0V2FzU2Nyb2xsZWRCeVVzZXIoZmFs
c2UpOwogCiAgICAgaGlzdG9yeSgpLnNldEN1cnJlbnRJdGVtKCZpdGVtKTsKLSAgICAgICAgCisK
ICAgICAvLyBsb2FkSW5TYW1lRG9jdW1lbnQoKSBhY3R1YWxseSBjaGFuZ2VzIHRoZSBVUkwgYW5k
IG5vdGlmaWVzIGxvYWQgZGVsZWdhdGVzIG9mIGEgImZha2UiIGxvYWQKICAgICBsb2FkSW5TYW1l
RG9jdW1lbnQoaXRlbS51cmwoKSwgaXRlbS5zdGF0ZU9iamVjdCgpLCBmYWxzZSk7CiAKQEAgLTMz
MTksMTUgKzMzMTksMTUgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZERpZmZlcmVudERvY3VtZW50
SXRlbShIaXN0b3J5SXRlbSYgaXRlbSwgRnJhbWVMb2FkVHlwZSBsb2EKICAgICAgICAgLy8gTWFr
ZSBzdXJlIHRvIGFkZCBleHRyYSBmaWVsZHMgdG8gdGhlIHJlcXVlc3QgYWZ0ZXIgdGhlIE9yaWdp
biBoZWFkZXIgaXMgYWRkZWQgZm9yIHRoZSBGb3JtRGF0YSBjYXNlLgogICAgICAgICAvLyBTZWUg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTk0IGZvciBtb3JlIGRp
c2N1c3Npb24uCiAgICAgICAgIGFkZEV4dHJhRmllbGRzVG9SZXF1ZXN0KHJlcXVlc3QsIGxvYWRU
eXBlLCB0cnVlKTsKLSAgICAgICAgCisKICAgICAgICAgLy8gRklYTUU6IFNsaWdodCBoYWNrIHRv
IHRlc3QgaWYgdGhlIE5TVVJMIGNhY2hlIGNvbnRhaW5zIHRoZSBwYWdlIHdlJ3JlIGdvaW5nIHRv
LgotICAgICAgICAvLyBXZSB3YW50IHRvIGtub3cgdGhpcyBiZWZvcmUgdGFsa2luZyB0byB0aGUg
cG9saWN5IGRlbGVnYXRlLCBzaW5jZSBpdCBhZmZlY3RzIHdoZXRoZXIgCisgICAgICAgIC8vIFdl
IHdhbnQgdG8ga25vdyB0aGlzIGJlZm9yZSB0YWxraW5nIHRvIHRoZSBwb2xpY3kgZGVsZWdhdGUs
IHNpbmNlIGl0IGFmZmVjdHMgd2hldGhlcgogICAgICAgICAvLyB3ZSBzaG93IHRoZSBEb1lvdVJl
YWxseVdhbnRUb1JlcG9zdCBuYWcuCiAgICAgICAgIC8vCiAgICAgICAgIC8vIFRoaXMgdHJpY2sg
aGFzIGEgc21hbGwgYnVnICgzMTIzODkzKSB3aGVyZSB3ZSBtaWdodCBmaW5kIGEgY2FjaGUgaGl0
LCBidXQgdGhlbgogICAgICAgICAvLyBoYXZlIHRoZSBpdGVtIHZhbmlzaCB3aGVuIHdlIHRyeSB0
byB1c2UgaXQgaW4gdGhlIGVuc3VpbmcgbmF2LiAgVGhpcyBzaG91bGQgYmUKICAgICAgICAgLy8g
ZXh0cmVtZWx5IHJhcmUsIGJ1dCBpbiB0aGF0IGNhc2UgdGhlIHVzZXIgd2lsbCBnZXQgYW4gZXJy
b3Igb24gdGhlIG5hdmlnYXRpb24uCi0gICAgICAgIAorCiAgICAgICAgIGlmIChjYWNoZUxvYWRQ
b2xpY3kgPT0gTWF5QXR0ZW1wdENhY2hlT25seUxvYWRGb3JGb3JtU3VibWlzc2lvbkl0ZW0pIHsK
ICAgICAgICAgICAgIHJlcXVlc3Quc2V0Q2FjaGVQb2xpY3koUmV0dXJuQ2FjaGVEYXRhRG9udExv
YWQpOwogICAgICAgICAgICAgYWN0aW9uID0gTmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0LCBsb2Fk
VHlwZSwgaXNGb3JtU3VibWlzc2lvbiwgZXZlbnQsIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3kpOwpAQCAtMzQwMyw3ICszNDAzLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmV0cnlBZnRlckZh
aWxlZENhY2hlT25seU1haW5SZXNvdXJjZUxvYWQoKQogUmVzb3VyY2VFcnJvciBGcmFtZUxvYWRl
cjo6Y2FuY2VsbGVkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSBjb25zdAog
ewogICAgIFJlc291cmNlRXJyb3IgZXJyb3IgPSBtX2NsaWVudC5jYW5jZWxsZWRFcnJvcihyZXF1
ZXN0KTsKLSAgICBlcnJvci5zZXRJc0NhbmNlbGxhdGlvbih0cnVlKTsKKyAgICBlcnJvci5zZXRU
eXBlKFJlc291cmNlRXJyb3I6OlR5cGU6OkNhbmNlbGxhdGlvbik7CiAgICAgcmV0dXJuIGVycm9y
OwogfQogCkBAIC0zNDE1LDcgKzM0MTUsNyBAQCBSZXNvdXJjZUVycm9yIEZyYW1lTG9hZGVyOjpi
bG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcgogUmVz
b3VyY2VFcnJvciBGcmFtZUxvYWRlcjo6YmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCkgY29uc3QKIHsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yID0gbV9jbGllbnQu
YmxvY2tlZEVycm9yKHJlcXVlc3QpOwotICAgIGVycm9yLnNldElzQ2FuY2VsbGF0aW9uKHRydWUp
OworICAgIGVycm9yLnNldFR5cGUoUmVzb3VyY2VFcnJvcjo6VHlwZTo6Q2FuY2VsbGF0aW9uKTsK
ICAgICByZXR1cm4gZXJyb3I7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCA3NTYwYzU5NzhlMmUyMzJkMDdkZjA0ZWI3ZWJj
NjVmMWEzNjZiOWRjLi42NjAyZGNlZDQzNjgxYzM1ODYxMGQzODRiZWYzOTBmY2I2ODU0OGI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3Bw
CkBAIC0xMzgsOCArMTM4LDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhy
ZWFkQnJpZGdlOjpjYW5jZWwoKQogICAgIGlmICghY2xpZW50V3JhcHBlci0+ZG9uZSgpKSB7CiAg
ICAgICAgIC8vIElmIHRoZSBjbGllbnQgaGFzbid0IHJlYWNoZWQgYSB0ZXJtaW5hdGlvbiBzdGF0
ZSwgdGhlbiB0cmFuc2l0aW9uIGl0IGJ5IHNlbmRpbmcgYSBjYW5jZWxsYXRpb24gZXJyb3IuCiAg
ICAgICAgIC8vIE5vdGU6IG5vIG1vcmUgY2xpZW50IGNhbGxiYWNrcyB3aWxsIGJlIGRvbmUgYWZ0
ZXIgdGhpcyBtZXRob2QgLS0gdGhlIGNsZWFyQ2xpZW50V3JhcHBlcigpIGNhbGwgZW5zdXJlcyB0
aGF0LgotICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yKFN0cmluZygpLCAwLCBVUkwoKSwgU3Ry
aW5nKCkpOwotICAgICAgICBlcnJvci5zZXRJc0NhbmNlbGxhdGlvbih0cnVlKTsKKyAgICAgICAg
UmVzb3VyY2VFcnJvciBlcnJvcihSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRpb24pOwog
ICAgICAgICBjbGllbnRXcmFwcGVyLT5kaWRGYWlsKGVycm9yKTsKICAgICB9CiAgICAgY2xlYXJD
bGllbnRXcmFwcGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlRXJyb3JCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VFcnJvckJhc2UuY3BwCmluZGV4IDBlZmQwNGU4MjM0NTZmMTZiZDMzMzI3NjU0
ZDczZmFjZGUwNjZiZWQuLmJiNzIwNTRmMzcxODU0ODMxMzJjYzUyZWJmOGVlZDRmOWMxYzA2NDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJv
ckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VF
cnJvckJhc2UuY3BwCkBAIC0yMSw3ICsyMSw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNp
bmNsdWRlICJjb25maWcuaCIKQEAgLTQ1LDkgKzQ1LDcgQEAgUmVzb3VyY2VFcnJvciBSZXNvdXJj
ZUVycm9yQmFzZTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKICAgICBlcnJvckNvcHkubV9lcnJvckNv
ZGUgPSBtX2Vycm9yQ29kZTsKICAgICBlcnJvckNvcHkubV9mYWlsaW5nVVJMID0gbV9mYWlsaW5n
VVJMLmlzb2xhdGVkQ29weSgpOwogICAgIGVycm9yQ29weS5tX2xvY2FsaXplZERlc2NyaXB0aW9u
ID0gbV9sb2NhbGl6ZWREZXNjcmlwdGlvbi5pc29sYXRlZENvcHkoKTsKLSAgICBlcnJvckNvcHku
bV9pc051bGwgPSBtX2lzTnVsbDsKLSAgICBlcnJvckNvcHkubV9pc0NhbmNlbGxhdGlvbiA9IG1f
aXNDYW5jZWxsYXRpb247Ci0gICAgZXJyb3JDb3B5Lm1faXNUaW1lb3V0ID0gbV9pc1RpbWVvdXQ7
CisgICAgZXJyb3JDb3B5Lm1fdHlwZSA9IG1fdHlwZTsKIAogICAgIGVycm9yQ29weS5kb1BsYXRm
b3JtSXNvbGF0ZWRDb3B5KGFzUmVzb3VyY2VFcnJvcigpKTsKIApAQCAtNTksMTIgKzU3LDE4IEBA
IHZvaWQgUmVzb3VyY2VFcnJvckJhc2U6OmxhenlJbml0KCkgY29uc3QKICAgICBjb25zdF9jYXN0
PFJlc291cmNlRXJyb3IqPihzdGF0aWNfY2FzdDxjb25zdCBSZXNvdXJjZUVycm9yKj4odGhpcykp
LT5wbGF0Zm9ybUxhenlJbml0KCk7CiB9CiAKK3ZvaWQgUmVzb3VyY2VFcnJvckJhc2U6OnNldFR5
cGUoVHlwZSB0eXBlKQoreworICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZTo6R2VuZXJhbCB8fCBt
X3R5cGUgPT0gVHlwZTo6TnVsbCk7CisgICAgbV90eXBlID0gdHlwZTsKK30KKwogYm9vbCBSZXNv
dXJjZUVycm9yQmFzZTo6Y29tcGFyZShjb25zdCBSZXNvdXJjZUVycm9yJiBhLCBjb25zdCBSZXNv
dXJjZUVycm9yJiBiKQogewogICAgIGlmIChhLmlzTnVsbCgpICYmIGIuaXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKGEuaXNOdWxsKCkgfHwgYi5pc051bGwoKSkKKyAg
ICBpZiAoYS50eXBlKCkgIT0gYi50eXBlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IGlmIChhLmRvbWFpbigpICE9IGIuZG9tYWluKCkpCkBAIC03OSwxMiArODMsNiBAQCBib29sIFJl
c291cmNlRXJyb3JCYXNlOjpjb21wYXJlKGNvbnN0IFJlc291cmNlRXJyb3ImIGEsIGNvbnN0IFJl
c291cmNlRXJyb3ImIGIpCiAgICAgaWYgKGEubG9jYWxpemVkRGVzY3JpcHRpb24oKSAhPSBiLmxv
Y2FsaXplZERlc2NyaXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChh
LmlzQ2FuY2VsbGF0aW9uKCkgIT0gYi5pc0NhbmNlbGxhdGlvbigpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBpZiAoYS5pc1RpbWVvdXQoKSAhPSBiLmlzVGltZW91dCgpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KICAgICByZXR1cm4gUmVzb3VyY2VFcnJvcjo6cGxhdGZvcm1Db21w
YXJlKGEsIGIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlRXJyb3JCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlRXJyb3JCYXNlLmgKaW5kZXggYmI2YTNhNWMzMjcwYmRlMjJiOWQwMjljM2RkYWVh
N2I4ZjUwMjRmMi4uOWRmMTkyZmE0ZGU2NWU5NmI5NDQ1ZGE2ZjAzNjc2ZWNhMGYwMGU5MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFz
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJh
c2UuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBDYW5vbiBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yMCw3ICsyMSw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNwcmFnbWEgb25jZQpAQCAt
MzgsMzggKzM5LDM2IEBAIGNsYXNzIFJlc291cmNlRXJyb3JCYXNlIHsKIHB1YmxpYzoKICAgICBS
ZXNvdXJjZUVycm9yIGlzb2xhdGVkQ29weSgpIGNvbnN0OwogCi0gICAgYm9vbCBpc051bGwoKSBj
b25zdCB7IHJldHVybiBtX2lzTnVsbDsgfQotCiAgICAgY29uc3QgU3RyaW5nJiBkb21haW4oKSBj
b25zdCB7IGxhenlJbml0KCk7IHJldHVybiBtX2RvbWFpbjsgfQogICAgIGludCBlcnJvckNvZGUo
KSBjb25zdCB7IGxhenlJbml0KCk7IHJldHVybiBtX2Vycm9yQ29kZTsgfQogICAgIGNvbnN0IFVS
TCYgZmFpbGluZ1VSTCgpIGNvbnN0IHsgbGF6eUluaXQoKTsgcmV0dXJuIG1fZmFpbGluZ1VSTDsg
fQogICAgIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24oKSBjb25zdCB7IGxhenlJ
bml0KCk7IHJldHVybiBtX2xvY2FsaXplZERlc2NyaXB0aW9uOyB9CiAKLSAgICB2b2lkIHNldElz
Q2FuY2VsbGF0aW9uKGJvb2wgaXNDYW5jZWxsYXRpb24pIHsgbV9pc0NhbmNlbGxhdGlvbiA9IGlz
Q2FuY2VsbGF0aW9uOyB9Ci0gICAgYm9vbCBpc0NhbmNlbGxhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1faXNDYW5jZWxsYXRpb247IH0KKyAgICBlbnVtIGNsYXNzIFR5cGUgeworICAgICAgICBOdWxs
LAorICAgICAgICBHZW5lcmFsLAorICAgICAgICBDYW5jZWxsYXRpb24sCisgICAgICAgIFRpbWVv
dXQKKyAgICB9OwogCi0gICAgdm9pZCBzZXRJc1RpbWVvdXQoYm9vbCBpc1RpbWVvdXQpIHsgbV9p
c1RpbWVvdXQgPSBpc1RpbWVvdXQ7IH0KLSAgICBib29sIGlzVGltZW91dCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNUaW1lb3V0OyB9CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX3R5
cGUgPT0gVHlwZTo6TnVsbDsgfQorICAgIGJvb2wgaXNDYW5jZWxsYXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX3R5cGUgPT0gVHlwZTo6Q2FuY2VsbGF0aW9uOyB9CisgICAgYm9vbCBpc1RpbWVvdXQo
KSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6VGltZW91dDsgfQogCiAgICAgc3RhdGlj
IGJvb2wgY29tcGFyZShjb25zdCBSZXNvdXJjZUVycm9yJiwgY29uc3QgUmVzb3VyY2VFcnJvciYp
OwogCisgICAgdm9pZCBzZXRUeXBlKFR5cGUpOworICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZTsgfQorCiBwcm90ZWN0ZWQ6Ci0gICAgUmVzb3VyY2VFcnJvckJhc2UoKQotICAg
ICAgICA6IG1fZXJyb3JDb2RlKDApCi0gICAgICAgICwgbV9pc051bGwodHJ1ZSkKLSAgICAgICAg
LCBtX2lzQ2FuY2VsbGF0aW9uKGZhbHNlKQotICAgICAgICAsIG1faXNUaW1lb3V0KGZhbHNlKQot
ICAgIHsKLSAgICB9CisgICAgUmVzb3VyY2VFcnJvckJhc2UoVHlwZSB0eXBlKSA6IG1fdHlwZSh0
eXBlKSB7IH0KIAotICAgIFJlc291cmNlRXJyb3JCYXNlKGNvbnN0IFN0cmluZyYgZG9tYWluLCBp
bnQgZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxp
emVkRGVzY3JpcHRpb24pCisgICAgUmVzb3VyY2VFcnJvckJhc2UoY29uc3QgU3RyaW5nJiBkb21h
aW4sIGludCBlcnJvckNvZGUsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBs
b2NhbGl6ZWREZXNjcmlwdGlvbiwgVHlwZSB0eXBlKQogICAgICAgICA6IG1fZG9tYWluKGRvbWFp
bikKICAgICAgICAgLCBtX2ZhaWxpbmdVUkwoZmFpbGluZ1VSTCkKICAgICAgICAgLCBtX2xvY2Fs
aXplZERlc2NyaXB0aW9uKGxvY2FsaXplZERlc2NyaXB0aW9uKQogICAgICAgICAsIG1fZXJyb3JD
b2RlKGVycm9yQ29kZSkKLSAgICAgICAgLCBtX2lzTnVsbChmYWxzZSkKLSAgICAgICAgLCBtX2lz
Q2FuY2VsbGF0aW9uKGZhbHNlKQotICAgICAgICAsIG1faXNUaW1lb3V0KGZhbHNlKQorICAgICAg
ICAsIG1fdHlwZSh0eXBlKQogICAgIHsKICAgICB9CiAKQEAgLTg0LDEwICs4Myw4IEBAIHByb3Rl
Y3RlZDoKICAgICBTdHJpbmcgbV9kb21haW47CiAgICAgVVJMIG1fZmFpbGluZ1VSTDsKICAgICBT
dHJpbmcgbV9sb2NhbGl6ZWREZXNjcmlwdGlvbjsKLSAgICBpbnQgbV9lcnJvckNvZGU7Ci0gICAg
Ym9vbCBtX2lzTnVsbCA6IDE7Ci0gICAgYm9vbCBtX2lzQ2FuY2VsbGF0aW9uIDogMTsKLSAgICBi
b29sIG1faXNUaW1lb3V0IDogMTsKKyAgICBpbnQgbV9lcnJvckNvZGUgeyAwIH07CisgICAgVHlw
ZSBtX3R5cGUgeyBUeXBlOjpHZW5lcmFsIH07CiAKIHByaXZhdGU6CiAgICAgY29uc3QgUmVzb3Vy
Y2VFcnJvciYgYXNSZXNvdXJjZUVycm9yKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvci5oCmluZGV4IDJjYTA0ZWVmMjgyNjlm
OTgyYWZjZjA2YjdiOWJlMTIwN2U4ODJiNWUuLjM1NWZhODU5ZTkwYmVlZDNmZDI2OTZkZjUzODhj
YjM1YTg0YWJhZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VFcnJvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VFcnJvci5oCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKICNwcmFnbWEgb25jZQpAQCAtNDQsMTMgKzQ0LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgUmVzb3VyY2VFcnJvciA6IHB1YmxpYyBSZXNvdXJjZUVycm9yQmFzZSB7CiBwdWJs
aWM6Ci0gICAgUmVzb3VyY2VFcnJvcigpCi0gICAgICAgIDogbV9kYXRhSXNVcFRvRGF0ZSh0cnVl
KQorICAgIFJlc291cmNlRXJyb3IoVHlwZSB0eXBlID0gVHlwZTo6TnVsbCkKKyAgICAgICAgOiBS
ZXNvdXJjZUVycm9yQmFzZSh0eXBlKQorICAgICAgICAsIG1fZGF0YUlzVXBUb0RhdGUodHJ1ZSkK
ICAgICB7CiAgICAgfQogCi0gICAgUmVzb3VyY2VFcnJvcihjb25zdCBTdHJpbmcmIGRvbWFpbiwg
aW50IGVycm9yQ29kZSwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2Fs
aXplZERlc2NyaXB0aW9uKQotICAgICAgICA6IFJlc291cmNlRXJyb3JCYXNlKGRvbWFpbiwgZXJy
b3JDb2RlLCBmYWlsaW5nVVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlvbikKKyAgICBSZXNvdXJjZUVy
cm9yKGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZhaWxp
bmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24sIFR5cGUgdHlwZSA9IFR5
cGU6OkdlbmVyYWwpCisgICAgICAgIDogUmVzb3VyY2VFcnJvckJhc2UoZG9tYWluLCBlcnJvckNv
ZGUsIGZhaWxpbmdVUkwsIGxvY2FsaXplZERlc2NyaXB0aW9uLCB0eXBlKQogICAgICAgICAsIG1f
ZGF0YUlzVXBUb0RhdGUodHJ1ZSkKICAgICB7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCmluZGV4IGQ1YjRl
ZTQ3ZTM5ZDg2NWNhNDgyNTU1Y2VjOWNjMzI3ZDhhNTUzZGMuLmZjMWIxYTY5MmQ3MzEwNGRlNmI1
YzJjOWFmNGQzYWViYzI5M2JkZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKQEAgLTIwLDcgKzIwLDcgQEAKICAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgpAQCAtNDAsMTcgKzQwLDE2
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3Io
Q0ZFcnJvclJlZiBjZkVycm9yKQotICAgIDogbV9kYXRhSXNVcFRvRGF0ZShmYWxzZSkKKyAgICAs
IG1fZGF0YUlzVXBUb0RhdGUoZmFsc2UpCiAgICAgLCBtX3BsYXRmb3JtRXJyb3IoY2ZFcnJvcikK
IHsKLSAgICBtX2lzTnVsbCA9ICFjZkVycm9yOwotICAgIGlmICghbV9pc051bGwpCi0gICAgICAg
IG1faXNUaW1lb3V0ID0gQ0ZFcnJvckdldENvZGUobV9wbGF0Zm9ybUVycm9yLmdldCgpKSA9PSBr
Q0ZVUkxFcnJvclRpbWVkT3V0OworICAgIGlmIChjZkVycm9yKQorICAgICAgICBzZXRUeXBlKChD
RkVycm9yR2V0Q29kZShtX3BsYXRmb3JtRXJyb3IuZ2V0KCkpID09IGtDRlVSTEVycm9yVGltZWRP
dXQpID8gVHlwZTo6VGltZW91dCA6IFR5cGU6OkdlbmVyYWwpOwogfQogCiAjaWYgUExBVEZPUk0o
V0lOKQotUmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcihjb25zdCBTdHJpbmcmIGRvbWFpbiwg
aW50IGVycm9yQ29kZSwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2Fs
aXplZERlc2NyaXB0aW9uLCBDRkRhdGFSZWYgY2VydGlmaWNhdGUpCi0gICAgOiBSZXNvdXJjZUVy
cm9yQmFzZShkb21haW4sIGVycm9yQ29kZSwgZmFpbGluZ1VSTCwgbG9jYWxpemVkRGVzY3JpcHRp
b24pCitSZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKGNvbnN0IFN0cmluZyYgZG9tYWluLCBp
bnQgZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxp
emVkRGVzY3JpcHRpb24sIENGRGF0YVJlZiBjZXJ0aWZpY2F0ZSwgVHlwZSB0eXBlKQorICAgIDog
UmVzb3VyY2VFcnJvckJhc2UoZG9tYWluLCBlcnJvckNvZGUsIGZhaWxpbmdVUkwsIGxvY2FsaXpl
ZERlc2NyaXB0aW9uLCB0eXBlKQogICAgICwgbV9kYXRhSXNVcFRvRGF0ZSh0cnVlKQogICAgICwg
bV9jZXJ0aWZpY2F0ZShjZXJ0aWZpY2F0ZSkKIHsKQEAgLTYwLDcgKzU5LDcgQEAgUENDRVJUX0NP
TlRFWFQgUmVzb3VyY2VFcnJvcjo6Y2VydGlmaWNhdGUoKSBjb25zdAogewogICAgIGlmICghbV9j
ZXJ0aWZpY2F0ZSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgCisKICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxQQ0NFUlRfQ09OVEVYVD4oQ0ZEYXRhR2V0Qnl0ZVB0cihtX2NlcnRpZmljYXRl
LmdldCgpKSk7CiB9CiAKQEAgLTExMCw3ICsxMDksNyBAQCB2b2lkIFJlc291cmNlRXJyb3I6OnBs
YXRmb3JtTGF6eUluaXQoKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIG1fbG9j
YWxpemVkRGVzY3JpcHRpb24gPSAoQ0ZTdHJpbmdSZWYpIENGRGljdGlvbmFyeUdldFZhbHVlKHVz
ZXJJbmZvLmdldCgpLCBrQ0ZFcnJvckxvY2FsaXplZERlc2NyaXB0aW9uS2V5KTsKLSAgICAgICAg
CisKICNpZiBQTEFURk9STShXSU4pCiAgICAgICAgIG1fY2VydGlmaWNhdGUgPSB3a0dldFNTTFBl
ZXJDZXJ0aWZpY2F0ZURhdGEodXNlckluZm8uZ2V0KCkpOwogI2VuZGlmCkBAIC0xMzYsNyArMTM1
LDcgQEAgYm9vbCBSZXNvdXJjZUVycm9yOjpwbGF0Zm9ybUNvbXBhcmUoY29uc3QgUmVzb3VyY2VF
cnJvciYgYSwgY29uc3QgUmVzb3VyY2VFcnJvciYKIAogQ0ZFcnJvclJlZiBSZXNvdXJjZUVycm9y
OjpjZkVycm9yKCkgY29uc3QKIHsKLSAgICBpZiAobV9pc051bGwpIHsKKyAgICBpZiAoaXNOdWxs
KCkpIHsKICAgICAgICAgQVNTRVJUKCFtX3BsYXRmb3JtRXJyb3IpOwogICAgICAgICByZXR1cm4g
MDsKICAgICB9CkBAIC0xNTgsNyArMTU3LDcgQEAgQ0ZFcnJvclJlZiBSZXNvdXJjZUVycm9yOjpj
ZkVycm9yKCkgY29uc3QKICAgICAgICAgaWYgKG1fY2VydGlmaWNhdGUpCiAgICAgICAgICAgICB3
a1NldFNTTFBlZXJDZXJ0aWZpY2F0ZURhdGEodXNlckluZm8uZ2V0KCksIG1fY2VydGlmaWNhdGUu
Z2V0KCkpOwogI2VuZGlmCi0gICAgICAgIAorCiAgICAgICAgIG1fcGxhdGZvcm1FcnJvciA9IGFk
b3B0Q0YoQ0ZFcnJvckNyZWF0ZSgwLCBtX2RvbWFpbi5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBt
X2Vycm9yQ29kZSwgdXNlckluZm8uZ2V0KCkpKTsKICAgICB9CiAKQEAgLTE3Miw5ICsxNzEsOSBA
QCBSZXNvdXJjZUVycm9yOjpvcGVyYXRvciBDRkVycm9yUmVmKCkgY29uc3QKIAogLy8gRklYTUU6
IE9uY2UgPHJkYXI6Ly9wcm9ibGVtLzUwNTA4NDE+IGlzIGZpeGVkIHdlIGNhbiByZW1vdmUgdGhp
cyBjb25zdHJ1Y3Rvci4KIFJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoQ0ZTdHJlYW1FcnJv
ciBlcnJvcikKKyAgICA6IFJlc291cmNlRXJyb3JCYXNlKFR5cGU6OkdlbmVyYWwpCiAgICAgOiBt
X2RhdGFJc1VwVG9EYXRlKHRydWUpCiB7Ci0gICAgbV9pc051bGwgPSBmYWxzZTsKICAgICBtX2Vy
cm9yQ29kZSA9IGVycm9yLmVycm9yOwogCiAgICAgc3dpdGNoKGVycm9yLmRvbWFpbikgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlRXJy
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9y
LmgKaW5kZXggZWVjNDYyZDVmNmZjN2E0YzgwMmVkY2QyYjI3OTNhMGUyNzRjOTRjYy4uNjgyZTE1
Nzk4ODc2OTQzZjM5YTIzMTcwNzZjOWVkNDYwMjJhODY5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlRXJyb3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5oCkBAIC0yMCw3ICsy
MCw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNpZm5kZWYgUmVzb3VyY2VFcnJvcl9oCkBA
IC00MCwxMiArNDAsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJv
ciA6IHB1YmxpYyBSZXNvdXJjZUVycm9yQmFzZQogewogcHVibGljOgotICAgIFJlc291cmNlRXJy
b3IoKSA6IG1fc3NsRXJyb3JzKDApCisgICAgUmVzb3VyY2VFcnJvcihUeXBlIHR5cGUgPSBUeXBl
OjpOdWxsKQorICAgICAgICA6IFJlc291cmNlRXJyb3JCYXNlKHR5cGUpCisgICAgICAgICwgbV9z
c2xFcnJvcnMoMCkKICAgICB7CiAgICAgfQogCi0gICAgUmVzb3VyY2VFcnJvcihjb25zdCBTdHJp
bmcmIGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBT
dHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uKQotICAgICAgICA6IFJlc291cmNlRXJyb3JCYXNl
KGRvbWFpbiwgZXJyb3JDb2RlLCBmYWlsaW5nVVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlvbiksIG1f
c3NsRXJyb3JzKDApCisgICAgUmVzb3VyY2VFcnJvcihjb25zdCBTdHJpbmcmIGRvbWFpbiwgaW50
IGVycm9yQ29kZSwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXpl
ZERlc2NyaXB0aW9uLCBUeXBlIHR5cGUgPSBUeXBlOjpOdWxsKQorICAgICAgICA6IFJlc291cmNl
RXJyb3JCYXNlKGRvbWFpbiwgZXJyb3JDb2RlLCBmYWlsaW5nVVJMLCBsb2NhbGl6ZWREZXNjcmlw
dGlvbiwgdHlwZSkKKyAgICAgICAgLCBtX3NzbEVycm9ycygwKQogICAgIHsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJy
b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVy
cm9yTWFjLm1tCmluZGV4IDUyMDc5YmQxZjUzNWRmYmM5MjI2MTMxMWE1MWRjMzc0NWEyMThhYzIu
LjQ2ZTAzNDY0MzUyMjNhNjEzMjdhODAwMjg5Mjg4ZDJhMzE4OTFkNDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5t
bQpAQCAtMTkzLDE3ICsxOTMsMTYgQEAgc3RhdGljIFJldGFpblB0cjxOU0Vycm9yPiBjcmVhdGVO
U0Vycm9yRnJvbVJlc291cmNlRXJyb3JCYXNlKGNvbnN0IFJlc291cmNlRXJyb3IKICNpZiBVU0Uo
Q0ZORVRXT1JLKQogCiBSZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKE5TRXJyb3IgKmVycm9y
KQotICAgIDogbV9kYXRhSXNVcFRvRGF0ZShmYWxzZSkKKyAgICAsIG1fZGF0YUlzVXBUb0RhdGUo
ZmFsc2UpCiAgICAgLCBtX3BsYXRmb3JtRXJyb3IocmVpbnRlcnByZXRfY2FzdDxDRkVycm9yUmVm
PihlcnJvcikpCiB7Ci0gICAgbV9pc051bGwgPSAhZXJyb3I7Ci0gICAgaWYgKCFtX2lzTnVsbCkK
LSAgICAgICAgbV9pc1RpbWVvdXQgPSBbZXJyb3IgY29kZV0gPT0gTlNVUkxFcnJvclRpbWVkT3V0
OworICAgIGlmIChlcnJvcikKKyAgICAgICAgc2V0VHlwZSgoW2Vycm9yIGNvZGVdID09IE5TVVJM
RXJyb3JUaW1lZE91dCkgPyBUeXBlOjpUaW1lb3V0IDogVHlwZTo6R2VuZXJhbCk7CiB9CiAKIE5T
RXJyb3IgKlJlc291cmNlRXJyb3I6Om5zRXJyb3IoKSBjb25zdAogewotICAgIGlmIChtX2lzTnVs
bCkgeworICAgIGlmIChpc051bGwoKSkgewogICAgICAgICBBU1NFUlQoIW1fcGxhdGZvcm1FcnJv
cik7CiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgfQpAQCAtMjM4LDIxICsyMzcsMTcgQEAgUmVz
b3VyY2VFcnJvcjo6b3BlcmF0b3IgTlNFcnJvciAqKCkgY29uc3QKICNlbHNlCiAKIFJlc291cmNl
RXJyb3I6OlJlc291cmNlRXJyb3IoTlNFcnJvciAqbnNFcnJvcikKLSAgICA6IG1fZGF0YUlzVXBU
b0RhdGUoZmFsc2UpCisgICAgOiBSZXNvdXJjZUVycm9yQmFzZShUeXBlOjpOdWxsKQorICAgICwg
bV9kYXRhSXNVcFRvRGF0ZShmYWxzZSkKICAgICAsIG1fcGxhdGZvcm1FcnJvcihuc0Vycm9yKQog
ewotICAgIG1faXNOdWxsID0gIW5zRXJyb3I7Ci0gICAgaWYgKCFtX2lzTnVsbCkKLSAgICAgICAg
bV9pc1RpbWVvdXQgPSBbbV9wbGF0Zm9ybUVycm9yLmdldCgpIGNvZGVdID09IE5TVVJMRXJyb3JU
aW1lZE91dDsKKyAgICBpZiAobnNFcnJvcikKKyAgICAgICAgc2V0VHlwZSgoW21fcGxhdGZvcm1F
cnJvci5nZXQoKSBjb2RlXSA9PSBOU1VSTEVycm9yVGltZWRPdXQpID8gVHlwZTo6VGltZW91dCA6
IFR5cGU6OkdlbmVyYWwpOwogfQogCiBSZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKENGRXJy
b3JSZWYgY2ZFcnJvcikKLSAgICA6IG1fZGF0YUlzVXBUb0RhdGUoZmFsc2UpCi0gICAgLCBtX3Bs
YXRmb3JtRXJyb3IoKE5TRXJyb3IgKiljZkVycm9yKQorICAgIDogUmVzb3VyY2VFcnJvcigoTlNF
cnJvciAqKWNmRXJyb3IpCiB7Ci0gICAgbV9pc051bGwgPSAhY2ZFcnJvcjsKLSAgICBpZiAoIW1f
aXNOdWxsKQotICAgICAgICBtX2lzVGltZW91dCA9IFttX3BsYXRmb3JtRXJyb3IuZ2V0KCkgY29k
ZV0gPT0gTlNVUkxFcnJvclRpbWVkT3V0OwogfQogCiB2b2lkIFJlc291cmNlRXJyb3I6OnBsYXRm
b3JtTGF6eUluaXQoKQpAQCAtMjg3LDcgKzI4Miw3IEBAIHZvaWQgUmVzb3VyY2VFcnJvcjo6ZG9Q
bGF0Zm9ybUlzb2xhdGVkQ29weShjb25zdCBSZXNvdXJjZUVycm9yJikKIAogTlNFcnJvciAqUmVz
b3VyY2VFcnJvcjo6bnNFcnJvcigpIGNvbnN0CiB7Ci0gICAgaWYgKG1faXNOdWxsKSB7CisgICAg
aWYgKGlzTnVsbCgpKSB7CiAgICAgICAgIEFTU0VSVCghbV9wbGF0Zm9ybUVycm9yKTsKICAgICAg
ICAgcmV0dXJuIG5pbDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3IuaAppbmRleCBjNGQ3YWRhN2YxOGNmNjVkNzgzNzBl
ZmNkM2FhYjI4NzI3MmM3YWEwLi5iZjAyOTE4NDgyMGZiZTVkNDA2NWY2MDQ3YTIyNWNiOGRhZGU0
N2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVz
b3VyY2VFcnJvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9S
ZXNvdXJjZUVycm9yLmgKQEAgLTQxLDE0ICs0MSwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBSZXNvdXJjZUVycm9yIDogcHVibGljIFJlc291cmNlRXJyb3JCYXNlCiB7CiBwdWJsaWM6
Ci0gICAgUmVzb3VyY2VFcnJvcihjb25zdCBTdHJpbmcmIGRvbWFpbiwgaW50IGVycm9yQ29kZSwg
Y29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9u
KQotICAgICAgICA6IFJlc291cmNlRXJyb3JCYXNlKGRvbWFpbiwgZXJyb3JDb2RlLCBmYWlsaW5n
VVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlvbikKKyAgICBSZXNvdXJjZUVycm9yKFR5cGUgdHlwZSA9
IFR5cGU6Ok51bGwpCisgICAgICAgIDogUmVzb3VyY2VFcnJvckJhc2UodHlwZSkKICAgICAgICAg
LCBtX3Rsc0Vycm9ycygwKQogICAgIHsKICAgICB9CiAKLSAgICBSZXNvdXJjZUVycm9yKCkKLSAg
ICAgICAgOiBtX3Rsc0Vycm9ycygwKQorICAgIFJlc291cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBk
b21haW4sIGludCBlcnJvckNvZGUsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5n
JiBsb2NhbGl6ZWREZXNjcmlwdGlvbiwgVHlwZSB0eXBlID0gVHlwZTo6R2VuZXJhbCkKKyAgICAg
ICAgOiBSZXNvdXJjZUVycm9yQmFzZShkb21haW4sIGVycm9yQ29kZSwgZmFpbGluZ1VSTCwgbG9j
YWxpemVkRGVzY3JpcHRpb24sIHR5cGUpCisgICAgICAgICwgbV90bHNFcnJvcnMoMCkKICAgICB7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAppbmRleCBkYjZmZDk1ZDYyNGMyOTgzOGE5NTBl
ZDlmMmUwZTVjMDI2OWI3YTM4Li5lZTQzNjI3NjVmMWM1MjBlZDg0MjYwZjUzNGM2NjcxMTc2Yjg2
MGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVz
b3VyY2VFcnJvclNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9SZXNvdXJjZUVycm9yU291cC5jcHAKQEAgLTkyLDkgKzkyLDcgQEAgUmVzb3VyY2VFcnJv
ciBSZXNvdXJjZUVycm9yOjp0aW1lb3V0RXJyb3IoY29uc3QgVVJMJiBmYWlsaW5nVVJMKQogICAg
IC8vIFVzZSB0aGUgc2FtZSB2YWx1ZSBhcyBpbiBOU1VSTEVycm9yLmgKICAgICBzdGF0aWMgY29u
c3QgaW50IHRpbWVvdXRFcnJvciA9IC0xMDAxOwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25z
dCAgZXJyb3JEb21haW4gPSAiV2ViS2l0TmV0d29ya0Vycm9yIjsKLSAgICBSZXNvdXJjZUVycm9y
IGVycm9yID0gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbiwgdGltZW91dEVycm9yLCBmYWlsaW5n
VVJMLCAiUmVxdWVzdCB0aW1lZCBvdXQiKTsKLSAgICBlcnJvci5zZXRJc1RpbWVvdXQodHJ1ZSk7
Ci0gICAgcmV0dXJuIGVycm9yOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWlu
LCB0aW1lb3V0RXJyb3IsIGZhaWxpbmdVUkwsICJSZXF1ZXN0IHRpbWVkIG91dCIsIFJlc291cmNl
RXJyb3I6OlR5cGU6OlRpbWVvdXQpOwogfQogCiB2b2lkIFJlc291cmNlRXJyb3I6OmRvUGxhdGZv
cm1Jc29sYXRlZENvcHkoY29uc3QgUmVzb3VyY2VFcnJvciYgb3RoZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3Bw
CmluZGV4IDNkMGE1NGJiNjEzNzU2NTk3MTg2OTY0MDNiOTNkZmRhMmE0ZTJkZTMuLmE1NTVjYTkx
YjUyN2ZiOTZkZDI4MzdlOGQwYzBmZDgyNjhiMGI3NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwCkBAIC0x
ODYsMjcgKzE4NiwyNCBAQCBib29sIEFyZ3VtZW50Q29kZXI8Q2VydGlmaWNhdGVJbmZvPjo6ZGVj
b2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgQ2VydGlmaWNhdAogCiB2b2lkIEFyZ3VtZW50
Q29kZXI8UmVzb3VyY2VFcnJvcj46OmVuY29kZVBsYXRmb3JtRGF0YShBcmd1bWVudEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIHJlc291cmNlRXJyb3IpCiB7Ci0gICAgYm9v
bCBlcnJvcklzTnVsbCA9IHJlc291cmNlRXJyb3IuaXNOdWxsKCk7Ci0gICAgZW5jb2RlciA8PCBl
cnJvcklzTnVsbDsKLSAgICBpZiAoZXJyb3JJc051bGwpCisgICAgZW5jb2Rlci5lbmNvZGVFbnVt
KHJlc291cmNlRXJyb3IudHlwZSgpKTsKKyAgICBpZiAocmVzb3VyY2VFcnJvci5pc051bGwoKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgZW5jb2RlciA8PCByZXNvdXJjZUVycm9yLmRvbWFpbigp
OwogICAgIGVuY29kZXIgPDwgcmVzb3VyY2VFcnJvci5lcnJvckNvZGUoKTsKICAgICBlbmNvZGVy
IDw8IHJlc291cmNlRXJyb3IuZmFpbGluZ1VSTCgpLnN0cmluZygpOwogICAgIGVuY29kZXIgPDwg
cmVzb3VyY2VFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpOwotICAgIGVuY29kZXIgPDwgcmVz
b3VyY2VFcnJvci5pc0NhbmNlbGxhdGlvbigpOwotICAgIGVuY29kZXIgPDwgcmVzb3VyY2VFcnJv
ci5pc1RpbWVvdXQoKTsKIAogICAgIGVuY29kZXIgPDwgQ2VydGlmaWNhdGVJbmZvKHJlc291cmNl
RXJyb3IpOwogfQogCiBib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VFcnJvcj46OmRlY29kZVBs
YXRmb3JtRGF0YShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFJlc291cmNlRXJyb3ImIHJlc291
cmNlRXJyb3IpCiB7Ci0gICAgYm9vbCBlcnJvcklzTnVsbDsKLSAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGVycm9ySXNOdWxsKSkKKyAgICBSZXNvdXJjZUVycm9yQmFzZTo6VHlwZSBlcnJvclR5cGU7
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0oZXJyb3JUeXBlKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGlmIChlcnJvcklzTnVsbCkgeworICAgIGlmIChlcnJvclR5cGUgPT0gUmVz
b3VyY2VFcnJvckJhc2U6OlR5cGU6Ok51bGwpIHsKICAgICAgICAgcmVzb3VyY2VFcnJvciA9IFJl
c291cmNlRXJyb3IoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMjI3LDE3ICsy
MjQsOCBAQCBib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VFcnJvcj46OmRlY29kZVBsYXRmb3Jt
RGF0YShBcmd1bWVudERlY29kZXImIGRlY29kZXIsCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShs
b2NhbGl6ZWREZXNjcmlwdGlvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJvb2wg
aXNDYW5jZWxsYXRpb247Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShpc0NhbmNlbGxhdGlvbikp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGJvb2wgaXNUaW1lb3V0OwotICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoaXNUaW1lb3V0KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAg
cmVzb3VyY2VFcnJvciA9IFJlc291cmNlRXJyb3IoZG9tYWluLCBlcnJvckNvZGUsIFVSTChVUkwo
KSwgZmFpbGluZ1VSTCksIGxvY2FsaXplZERlc2NyaXB0aW9uKTsKLSAgICByZXNvdXJjZUVycm9y
LnNldElzQ2FuY2VsbGF0aW9uKGlzQ2FuY2VsbGF0aW9uKTsKLSAgICByZXNvdXJjZUVycm9yLnNl
dElzVGltZW91dChpc1RpbWVvdXQpOworICAgIHJlc291cmNlRXJyb3Iuc2V0VHlwZShlcnJvclR5
cGUpOwogCiAgICAgQ2VydGlmaWNhdGVJbmZvIGNlcnRpZmljYXRlSW5mbzsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGNlcnRpZmljYXRlSW5mbykpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280687</attachid>
            <date>2016-06-07 03:17:57 -0700</date>
            <delta_ts>2016-06-07 05:16:05 -0700</delta_ts>
            <desc>Win build fix</desc>
            <filename>bug-158299-20160607121921.patch</filename>
            <type>text/plain</type>
            <size>67613</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDlkOTFiOTYzYzZmN2Zl
ZjQwZDBkOTg5Y2ZjNmYyNmIyNGQyOWY4NS4uY2ZkYjcxY2U0NjkxYTQwOWJkNGFiN2U4ZDk0ZDgx
ODFhNzE1MWZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNSBAQAorMjAxNi0wNi0wNiAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAgIEludHJv
ZHVjZSBhIFJlc291cmNlRXJyb3JCYXNlIHR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODI5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjaW5nIGFuIGVudW0gdHlwZSBmb3IgUmVzb3Vy
Y2VFcnJvckJhc2UuCisgICAgICAgIEluIG1vc3QgY2FzZXMsIHRoZSB0eXBlIGlzIHNldCBhdCBj
b25zdHJ1Y3Rpb24gdGltZS4KKyAgICAgICAgQnkgZGVmYXVsdCwgY29uc3RydWN0b3Igd2l0aCBu
byBwYXJhbWV0ZXJzIHdpbGwgc2V0IHR5cGUgdG8gTnVsbC4KKyAgICAgICAgQ29uc3RydWN0b3Ig
d2l0aCBwYXJhbWV0ZXJzIHdpbGwgc2V0IHR5cGUgdG8gR2VuZXJhbC4KKworICAgICAgICBSZW1v
dmVkIGJvb2xlYW4gc3RhdGUgZXJyb3IgZmllbGRzLgorCisgICAgICAgIEludHJvZHVjZWQgYSB0
eXBlIHNldHRlci4gSXQgc2hvdWxkIG9ubHkgYmUgdXNlZCB0byAgbWFrZSB0aGUgdHlwZQorICAg
ICAgICBtb3JlIHByZWNpc2UgKHdoZW4gdHlwZSBpcyBOdWxsIG9yIEdlbmVyYWwpLgorCisgICAg
ICAgIFVwZGF0aW5nIHJlbGF0ZWQgY2FsbGluZyBjb2RlLgorICAgICAgICBNYWRlIHNvbWUgY29k
ZSBjbGVhbmluZyAodHJhaWxpbmcgd2hpdGVzcGFjZSByZW1vdmFsKS4KKworICAgICAgICBObyBj
aGFuZ2Ugb2YgYmVoYXZpb3IuCisKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
OiBSZW1vdmluZyB0cmFpbGluZyB3aGl0ZXNwYWNlcy4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyOjp+RG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI6OnNldFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnNl
dE1haW5Eb2N1bWVudEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpz
dG9wTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpjb250aW51ZUFmdGVy
Q29udGVudFBvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c3RvcExv
YWRpbmdGb3JQb2xpY3lDaGFuZ2UpOiBVc2luZyBSZXNvdXJjZUVycm9yIHR5cGUgc2V0dGVyLgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNvbW1pdERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnNldHVwRm9yUmVwbGFjZSk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudExvYWRlcjo6aXNMb2FkaW5nSW5BUElTZW5zZSk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjphZGRBbGxBcmNoaXZlUmVzb3VyY2VzKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjphZGRBcmNoaXZlUmVzb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudExvYWRlcjo6c3VicmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI6OnN1YnJlc291cmNlTG9hZGVyRmluaXNoZWRMb2FkaW5nT25lUGFydCk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Z2V0SWNvbkRhdGFGb3JJY29uVVJMKToKKyAgICAg
ICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y2FuY2VsKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKTogUmVtb3Zp
bmcgdHJhaWxpbmcgd2hpdGVzcGFjZXMuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVh
ZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KTogRGl0dG8uCisgICAgICAgICogbG9hZGVyL0VtcHR5
Q2xpZW50cy5oOiBTdHlsZSByZWZhY3RvcmluZy4KKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwOiBSZW1vdmluZyB0cmFpbGluZyB3aGl0ZXNwYWNlcy4KKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyOjpzdWJtaXRGb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
OjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjbG9zZVVSTCk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGlkRXhwbGljaXRPcGVuKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6bG9hZFVSTEludG9DaGlsZEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Ojpsb2FkQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZEluU2Ft
ZURvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkRnJhbWVSZXF1
ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkVVJMKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpyZXBvcnRCbG9ja2VkUG9ydEZhaWxlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6cmVsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzdG9wQWxsTG9h
ZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZnJhbWVIYXNMb2FkZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnNldERvY3VtZW50TG9hZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzZXRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpjbGllbnRSZWRpcmVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpjbG9zZU9sZERhdGFTb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
OjpwcmVwYXJlRm9yQ2FjaGVkUGFnZVJlc3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXI6Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnN1YnJlc291cmNl
Q2FjaGVQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNoZWNrTG9hZENv
bXBsZXRlRm9yVGhpc0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjb250
aW51ZUxvYWRBZnRlcldpbGxTdWJtaXRGb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpjaGVja0xvYWRDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
bG9hZFBvc3RSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpyZWNl
aXZlZE1haW5SZXNvdXJjZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpk
aXNwYXRjaEJlZm9yZVVubG9hZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Ojpjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXI6OmxvYWRTYW1lRG9jdW1lbnRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyOjpjYW5jZWxsZWRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6YmxvY2tlZEVycm9yKTogVXNpbmcgUmVzb3VyY2VFcnJvciB0eXBlIHNldHRlci4KKyAg
ICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpjYW5jZWwpOiBV
c2luZyBuZXcgUmVzb3VyY2VFcnJvciBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
RXJyb3JCYXNlOjppc29sYXRlZENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ckJhc2U6OnNldFR5cGUpOiBUbyBiZSB1c2VkIHRvIG1ha2UgdGhlIGVycm9yIHR5cGUgbW9yZSBw
cmVjaXNlLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvckJhc2U6OmNvbXBhcmUpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlRXJyb3JCYXNlOjppc051bGwpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VFcnJvckJhc2U6OmlzQ2FuY2VsbGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlRXJyb3JCYXNlOjppc1RpbWVvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VF
cnJvckJhc2U6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvckJhc2U6OlJl
c291cmNlRXJyb3JCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3JCYXNlOjpk
b21haW4pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VF
cnJvci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcik6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpjZXJ0aWZpY2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yOjpwbGF0Zm9ybUxhenlJbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlRXJyb3I6OmNmRXJyb3IpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNv
dXJjZUVycm9yLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVy
cm9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpuc0Vycm9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlRXJyb3I6OnBsYXRmb3JtTGF6eUluaXQpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yLmg6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VF
cnJvcjo6dGltZW91dEVycm9yKToKKwogMjAxNi0wNi0wNiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0
LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIw
MTczNS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwppbmRleCA1NDM0YzUyNTY1Y2NlMTg0YmRlMGI0YWRjYzBjMDcyYmQ5ZDNh
YWMwLi42YTgwNGYyNmZhMGJkMTMwNTYwYWM1YzM1MTZkMThmNzY4MzlmMDNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMTYtMDYtMDYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFi
bGV0QGNyZi5jYW5vbi5mcj4KKworICAgICAgICBJbnRyb2R1Y2UgYSBSZXNvdXJjZUVycm9yQmFz
ZSB0eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTgyOTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFNoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFJlc291cmNlRXJyb3I+OjplbmNvZGVQbGF0Zm9ybURhdGEpOgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlc291cmNlRXJyb3I+OjpkZWNvZGVQbGF0Zm9ybURh
dGEpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFByb3RlY3Rpb25TcGFjZT46OmVuY29k
ZVBsYXRmb3JtRGF0YSk6IERlbGV0ZWQuCisKIDIwMTYtMDYtMDYgIEFudG9pbmUgUXVpbnQgIDxn
cmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBQb3NpdGlvbiBvZiBXZWJHTCA8Y2FudmFzPiBv
biBpT1MgaXMgaW5jb3JyZWN0IHdpdGggQ1NTIGJvcmRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGIzZWQxOGJmNDY5NDMzOGM5YTQyNTNlNDZmMGJjODgx
MTc1NDg1YzkuLmI2YzNiMDE2NjcxMDA1MDAxNTNjNTA3MjVjYWM4MDdlM2QzMDdiYzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtNywxMyArNywxMyBAQAog
ICogYXJlIG1ldDoKICAqCiAgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
ICAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAogICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgogICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5j
LiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgogICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uIAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KICAqCiAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQogICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRApAQCAtMTY5LDcgKzE2OSw3IEBAIERvY3VtZW50TG9hZGVyOjp+RG9jdW1lbnRMb2FkZXIo
KQogICAgIGlmIChtX2ljb25EYXRhQ2FsbGJhY2spCiAgICAgICAgIG1faWNvbkRhdGFDYWxsYmFj
ay0+aW52YWxpZGF0ZSgpOwogICAgIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPmNsZWFyRG9jdW1l
bnRMb2FkZXIoKTsKLSAgICAKKwogICAgIGNsZWFyTWFpblJlc291cmNlKCk7CiB9CiAKQEAgLTIz
Miw3ICsyMzIsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzZXRSZXF1ZXN0KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxKQogICAgICAgICBtX2NvbW1pdHRlZCA9IGZhbHNlOwogCiAgICAgLy8g
V2Ugc2hvdWxkIG5ldmVyIGJlIGdldHRpbmcgYSByZWRpcmVjdCBjYWxsYmFjayBhZnRlciB0aGUg
ZGF0YQotICAgIC8vIHNvdXJjZSBpcyBjb21taXR0ZWQsIGV4Y2VwdCBpbiB0aGUgdW5yZWFjaGFi
bGUgVVJMIGNhc2UuIEl0IAorICAgIC8vIHNvdXJjZSBpcyBjb21taXR0ZWQsIGV4Y2VwdCBpbiB0
aGUgdW5yZWFjaGFibGUgVVJMIGNhc2UuIEl0CiAgICAgLy8gd291bGQgYmUgYSBXZWJGb3VuZGF0
aW9uIGJ1ZyBpZiBpdCBzZW50IGEgcmVkaXJlY3QgY2FsbGJhY2sgYWZ0ZXIgY29tbWl0LgogICAg
IEFTU0VSVCghbV9jb21taXR0ZWQpOwogCkBAIC0yNDEsNyArMjQxLDcgQEAgdm9pZCBEb2N1bWVu
dExvYWRlcjo6c2V0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcSkKIAogdm9pZCBE
b2N1bWVudExvYWRlcjo6c2V0TWFpbkRvY3VtZW50RXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYg
ZXJyb3IpCiB7Ci0gICAgbV9tYWluRG9jdW1lbnRFcnJvciA9IGVycm9yOyAgICAKKyAgICBtX21h
aW5Eb2N1bWVudEVycm9yID0gZXJyb3I7CiAgICAgZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkuc2V0
TWFpbkRvY3VtZW50RXJyb3IodGhpcywgZXJyb3IpOwogfQogCkBAIC0yNzAsOCArMjcwLDggQEAg
dm9pZCBEb2N1bWVudExvYWRlcjo6bWFpblJlY2VpdmVkRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJv
ciYgZXJyb3IpCiB9CiAKIC8vIENhbmNlbHMgdGhlIGRhdGEgc291cmNlJ3MgcGVuZGluZyBsb2Fk
cy4gIENvbmNlcHR1YWxseSwgYSBkYXRhIHNvdXJjZSBvbmx5IGxvYWRzCi0vLyBvbmUgZG9jdW1l
bnQgYXQgYSB0aW1lLCBidXQgb25lIGRvY3VtZW50IG1heSBoYXZlIG1hbnkgcmVsYXRlZCByZXNv
dXJjZXMuIAotLy8gc3RvcExvYWRpbmcgd2lsbCBzdG9wIGFsbCBsb2FkcyBpbml0aWF0ZWQgYnkg
dGhlIGRhdGEgc291cmNlLCAKKy8vIG9uZSBkb2N1bWVudCBhdCBhIHRpbWUsIGJ1dCBvbmUgZG9j
dW1lbnQgbWF5IGhhdmUgbWFueSByZWxhdGVkIHJlc291cmNlcy4KKy8vIHN0b3BMb2FkaW5nIHdp
bGwgc3RvcCBhbGwgbG9hZHMgaW5pdGlhdGVkIGJ5IHRoZSBkYXRhIHNvdXJjZSwKIC8vIGJ1dCBu
b3QgbG9hZHMgaW5pdGlhdGVkIGJ5IGNoaWxkIGZyYW1lcycgZGF0YSBzb3VyY2VzIC0tIHRoYXQn
cyB0aGUgV2ViRnJhbWUncyBqb2IuCiB2b2lkIERvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGluZygp
CiB7CkBAIC0yOTQsNyArMjk0LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3RvcExvYWRpbmco
KQogICAgICAgICAvLyBBdHRlbXB0IHRvIHN0b3AgdGhlIGZyYW1lIGlmIHRoZSBkb2N1bWVudCBs
b2FkZXIgaXMgbG9hZGluZywgb3IgaWYgaXQgaXMgZG9uZSBsb2FkaW5nIGJ1dAogICAgICAgICAv
LyBzdGlsbCAgcGFyc2luZy4gRmFpbHVyZSB0byBkbyBzbyBjYW4gY2F1c2UgYSB3b3JsZCBsZWFr
LgogICAgICAgICBEb2N1bWVudCogZG9jID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKLSAgICAgICAg
CisKICAgICAgICAgaWYgKGxvYWRpbmcgfHwgZG9jLT5wYXJzaW5nKCkpCiAgICAgICAgICAgICBt
X2ZyYW1lLT5sb2FkZXIoKS5zdG9wTG9hZGluZyhVbmxvYWRFdmVudFBvbGljeU5vbmUpOwogICAg
IH0KQEAgLTMwNCwxOSArMzA0LDE5IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0b3BMb2FkaW5n
KCkKIAogICAgIC8vIEFwcGNhY2hlIHVzZXMgUmVzb3VyY2VIYW5kbGUgZGlyZWN0bHksIERvY3Vt
ZW50TG9hZGVyIGRvZXNuJ3QgY291bnQgdGhlc2UgbG9hZHMuCiAgICAgbV9hcHBsaWNhdGlvbkNh
Y2hlSG9zdC0+c3RvcExvYWRpbmdJbkZyYW1lKG1fZnJhbWUpOwotICAgIAorCiAjaWYgRU5BQkxF
KFdFQl9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCiAgICAgY2xlYXJBcmNoaXZlUmVzb3VyY2Vz
KCk7CiAjZW5kaWYKIAogICAgIGlmICghbG9hZGluZykgewotICAgICAgICAvLyBJZiBzb21ldGhp
bmcgYWJvdmUgcmVzdGFydGVkIGxvYWRpbmcgd2UgbWlnaHQgcnVuIGludG8gbXlzdGVyaW91cyBj
cmFzaGVzIGxpa2UgCisgICAgICAgIC8vIElmIHNvbWV0aGluZyBhYm92ZSByZXN0YXJ0ZWQgbG9h
ZGluZyB3ZSBtaWdodCBydW4gaW50byBteXN0ZXJpb3VzIGNyYXNoZXMgbGlrZQogICAgICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI3NjQgYW5kIDxyZGFy
Oi8vcHJvYmxlbS85MzI4Njg0PgogICAgICAgICBBU1NFUlQoIWlzTG9hZGluZygpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIFdlIG1pZ2h0IHJ1biBpbiB0byBpbmZpbml0ZSBy
ZWN1cnNpb24gaWYgd2UncmUgc3RvcHBpbmcgbG9hZGluZyBhcyB0aGUgcmVzdWx0IG9mIAorICAg
IC8vIFdlIG1pZ2h0IHJ1biBpbiB0byBpbmZpbml0ZSByZWN1cnNpb24gaWYgd2UncmUgc3RvcHBp
bmcgbG9hZGluZyBhcyB0aGUgcmVzdWx0IG9mCiAgICAgLy8gZGV0YWNoaW5nIGZyb20gdGhlIGZy
YW1lLCBzbyBicmVhayBvdXQgb2YgdGhhdCByZWN1cnNpb24gaGVyZS4KICAgICAvLyBTZWUgPHJk
YXI6Ly9wcm9ibGVtLzk2NzM4NjY+IGZvciBtb3JlIGRldGFpbHMuCiAgICAgaWYgKG1faXNTdG9w
cGluZykKQEAgLTMyNSw3ICszMjUsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGlu
ZygpCiAgICAgbV9pc1N0b3BwaW5nID0gdHJ1ZTsKIAogICAgIEZyYW1lTG9hZGVyKiBmcmFtZUxv
YWRlciA9IERvY3VtZW50TG9hZGVyOjpmcmFtZUxvYWRlcigpOwotICAgIAorCiAgICAgaWYgKGlz
TG9hZGluZ01haW5SZXNvdXJjZSgpKSB7CiAgICAgICAgIC8vIFN0b3AgdGhlIG1haW4gcmVzb3Vy
Y2UgbG9hZGVyIGFuZCBsZXQgaXQgc2VuZCB0aGUgY2FuY2VsbGVkIG1lc3NhZ2UuCiAgICAgICAg
IGNhbmNlbE1haW5SZXNvdXJjZUxvYWQoZnJhbWVMb2FkZXItPmNhbmNlbGxlZEVycm9yKG1fcmVx
dWVzdCkpOwpAQCAtMzQ0LDEwICszNDQsMTAgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3RvcExv
YWRpbmcoKQogICAgIC8vIGluIHVuZXhwZWN0ZWQgc2lkZSBlZmZlY3RzIHN1Y2ggYXMgZXJyb25l
b3VzIGV2ZW50IGRpc3BhdGNoLiAoIGh0dHA6Ly93ZWJraXQub3JnL2IvMTE3MTEyICkKICAgICBp
ZiAoRG9jdW1lbnQqIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKSkKICAgICAgICAgZG9jdW1l
bnQtPmNhbmNlbFBhcnNpbmcoKTsKLSAgICAKKwogICAgIHN0b3BMb2FkaW5nU3VicmVzb3VyY2Vz
KCk7CiAgICAgc3RvcExvYWRpbmdQbHVnSW5zKCk7Ci0gICAgCisKICAgICBtX2lzU3RvcHBpbmcg
PSBmYWxzZTsKIH0KIApAQCAtNDk5LDcgKzQ5OSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6Ondp
bGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNl
CiB7CiAgICAgLy8gTm90ZSB0aGF0IHRoZXJlIGFyZSBubyBhc3NlcnRzIGhlcmUgYXMgdGhlcmUg
YXJlIGZvciB0aGUgb3RoZXIgY2FsbGJhY2tzLiBUaGlzIGlzIGR1ZSB0byB0aGUKICAgICAvLyBm
YWN0IHRoYXQgdGhpcyAiY2FsbGJhY2siIGlzIHNlbnQgd2hlbiBzdGFydGluZyBldmVyeSBsb2Fk
LCBhbmQgdGhlIHN0YXRlIG9mIGNhbGxiYWNrCi0gICAgLy8gZGVmZXJyYWxzIHBsYXlzIGxlc3Mg
b2YgYSBwYXJ0IGluIHRoaXMgZnVuY3Rpb24gaW4gcHJldmVudGluZyB0aGUgYmFkIGJlaGF2aW9y
IGRlZmVycmluZyAKKyAgICAvLyBkZWZlcnJhbHMgcGxheXMgbGVzcyBvZiBhIHBhcnQgaW4gdGhp
cyBmdW5jdGlvbiBpbiBwcmV2ZW50aW5nIHRoZSBiYWQgYmVoYXZpb3IgZGVmZXJyaW5nCiAgICAg
Ly8gY2FsbGJhY2tzIGlzIG1lYW50IHRvIHByZXZlbnQuCiAgICAgQVNTRVJUKCFuZXdSZXF1ZXN0
LmlzTnVsbCgpKTsKIApAQCAtNTM1LDcgKzUzNSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6Ondp
bGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNl
CiAgICAgQVNTRVJUKHRvcEZyYW1lLmRvY3VtZW50KCkpOwogCiAgICAgUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkubG9nRnJhbWVOYXZpZ2F0aW9uKCptX2ZyYW1lLCB0b3BG
cmFtZSwgbmV3UmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7Ci0gICAgCisKICAgICAvLyBVcGRh
dGUgY29va2llIHBvbGljeSBiYXNlIFVSTCBhcyBVUkwgY2hhbmdlcywgZXhjZXB0IGZvciBzdWJm
cmFtZXMsIHdoaWNoIHVzZSB0aGUKICAgICAvLyBVUkwgb2YgdGhlIG1haW4gZnJhbWUgd2hpY2gg
ZG9lc24ndCBjaGFuZ2Ugd2hlbiB3ZSByZWRpcmVjdC4KICAgICBpZiAobV9mcmFtZS0+aXNNYWlu
RnJhbWUoKSkKQEAgLTczNCw3ICs3MzQsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjb250aW51
ZUFmdGVyQ29udGVudFBvbGljeShQb2xpY3lBY3Rpb24gcG9saWN5KQogCiAgICAgVVJMIHVybCA9
IG1fcmVxdWVzdC51cmwoKTsKICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlID0gbV9yZXNwb25z
ZS5taW1lVHlwZSgpOwotICAgIAorCiAgICAgc3dpdGNoIChwb2xpY3kpIHsKICAgICBjYXNlIFBv
bGljeVVzZTogewogICAgICAgICAvLyBQcmV2ZW50IHJlbW90ZSB3ZWIgYXJjaGl2ZXMgZnJvbSBs
b2FkaW5nIGJlY2F1c2UgdGhleSBjYW4gY2xhaW0gdG8gYmUgZnJvbSBhbnkgZG9tYWluIGFuZCB0
aHVzIGF2b2lkIGNyb3NzLWRvbWFpbiBzZWN1cml0eSBjaGVja3MgKDQxMjAyNTUpLgpAQCAtODQx
LDcgKzg0MSw3IEBAIFJlc291cmNlRXJyb3IgRG9jdW1lbnRMb2FkZXI6OmludGVycnVwdGVkRm9y
UG9saWN5Q2hhbmdlRXJyb3IoKSBjb25zdAogdm9pZCBEb2N1bWVudExvYWRlcjo6c3RvcExvYWRp
bmdGb3JQb2xpY3lDaGFuZ2UoKQogewogICAgIFJlc291cmNlRXJyb3IgZXJyb3IgPSBpbnRlcnJ1
cHRlZEZvclBvbGljeUNoYW5nZUVycm9yKCk7Ci0gICAgZXJyb3Iuc2V0SXNDYW5jZWxsYXRpb24o
dHJ1ZSk7CisgICAgZXJyb3Iuc2V0VHlwZShSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRp
b24pOwogICAgIGNhbmNlbE1haW5SZXNvdXJjZUxvYWQoZXJyb3IpOwogfQogCkBAIC04NjIsNyAr
ODYyLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0RGF0YShjb25zdCBjaGFyKiBieXRl
cywgc2l6ZV90IGxlbmd0aCkKIAogICAgICAgICBpZiAoZnJhbWVMb2FkZXIoKS0+c3RhdGVNYWNo
aW5lKCkuY3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpKQogICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAKKwogI2lmIEVOQUJMRShNSFRNTCkKICAgICAgICAgLy8gVGhlIG9yaWdpbiBp
cyB0aGUgTUhUTUwgZmlsZSwgd2UgbmVlZCB0byBzZXQgdGhlIGJhc2UgVVJMIHRvIHRoZSBkb2N1
bWVudCBlbmNvZGVkIGluIHRoZSBNSFRNTCBzbwogICAgICAgICAvLyByZWxhdGl2ZSBVUkxzIGFy
ZSByZXNvbHZlZCBwcm9wZXJseS4KQEAgLTk0OCwxMyArOTQ4LDEzIEBAIHZvaWQgRG9jdW1lbnRM
b2FkZXI6OnNldHVwRm9yUmVwbGFjZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGZyYW1lTG9h
ZGVyKCktPmNsaWVudCgpLndpbGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpOwotICAgIAorCiAg
ICAgbWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgpOwogICAgIG1heWJlQ3JlYXRl
QXJjaGl2ZSgpOwogICAgIG1fd3JpdGVyLmVuZCgpOwogICAgIGZyYW1lTG9hZGVyKCktPnNldFJl
cGxhY2luZygpOwogICAgIG1fZ290Rmlyc3RCeXRlID0gZmFsc2U7Ci0gICAgCisKICAgICBzdG9w
TG9hZGluZ1N1YnJlc291cmNlcygpOwogICAgIHN0b3BMb2FkaW5nUGx1Z0lucygpOwogI2lmIEVO
QUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQpAQCAtMTA0MSw3ICsxMDQxLDcgQEAg
Ym9vbCBEb2N1bWVudExvYWRlcjo6aXNMb2FkaW5nSW5BUElTZW5zZSgpIGNvbnN0CiAgICAgaWYg
KGZyYW1lTG9hZGVyKCktPnN0YXRlKCkgIT0gRnJhbWVTdGF0ZUNvbXBsZXRlKSB7CiAgICAgICAg
IGlmIChtX2ZyYW1lLT5zZXR0aW5ncygpLm5lZWRzSXNMb2FkaW5nSW5BUElTZW5zZVF1aXJrKCkg
JiYgIW1fc3VicmVzb3VyY2VMb2FkZXJzLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgIAorCiAgICAgICAgIERvY3VtZW50KiBkb2MgPSBtX2ZyYW1lLT5kb2N1bWVudCgp
OwogICAgICAgICBpZiAoKGlzTG9hZGluZ01haW5SZXNvdXJjZSgpIHx8ICFtX2ZyYW1lLT5kb2N1
bWVudCgpLT5sb2FkRXZlbnRGaW5pc2hlZCgpKSAmJiBpc0xvYWRpbmcoKSkKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwpAQCAtMTA2MCwxNyArMTA2MCwxNyBAQCBib29sIERvY3VtZW50TG9hZGVy
OjptYXliZUNyZWF0ZUFyY2hpdmUoKQogI2lmICFFTkFCTEUoV0VCX0FSQ0hJVkUpICYmICFFTkFC
TEUoTUhUTUwpCiAgICAgcmV0dXJuIGZhbHNlOwogI2Vsc2UKLSAgICAKKwogICAgIC8vIEdpdmUg
dGhlIGFyY2hpdmUgbWFjaGluZXJ5IGEgY3JhY2sgYXQgdGhpcyBkb2N1bWVudC4gSWYgdGhlIE1J
TUUgdHlwZSBpcyBub3QgYW4gYXJjaGl2ZSB0eXBlLCBpdCB3aWxsIHJldHVybiAwLgogICAgIG1f
YXJjaGl2ZSA9IEFyY2hpdmVGYWN0b3J5OjpjcmVhdGUobV9yZXNwb25zZS51cmwoKSwgbWFpblJl
c291cmNlRGF0YSgpLmdldCgpLCBtX3Jlc3BvbnNlLm1pbWVUeXBlKCkpOwogICAgIGlmICghbV9h
cmNoaXZlKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCisKICAgICBhZGRBbGxBcmNoaXZl
UmVzb3VyY2VzKG1fYXJjaGl2ZS5nZXQoKSk7CiAgICAgQXJjaGl2ZVJlc291cmNlKiBtYWluUmVz
b3VyY2UgPSBtX2FyY2hpdmUtPm1haW5SZXNvdXJjZSgpOwogICAgIG1fcGFyc2VkQXJjaGl2ZURh
dGEgPSAmbWFpblJlc291cmNlLT5kYXRhKCk7CiAgICAgbV93cml0ZXIuc2V0TUlNRVR5cGUobWFp
blJlc291cmNlLT5taW1lVHlwZSgpKTsKLSAgICAKKwogICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1
bWVudCgpKTsKICAgICBjb21taXREYXRhKG1haW5SZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgbWFp
blJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEwODksMTEg
KzEwODksMTEgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6YWRkQWxsQXJjaGl2ZVJlc291cmNlcyhB
cmNoaXZlKiBhcmNoaXZlKQogewogICAgIGlmICghbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9u
KQogICAgICAgICBtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVl
PEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24+KCk7Ci0gICAgICAgIAorCiAgICAgQVNTRVJUKGFy
Y2hpdmUpOwogICAgIGlmICghYXJjaGl2ZSkKICAgICAgICAgcmV0dXJuOwotICAgICAgICAKKwog
ICAgIG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi0+YWRkQWxsUmVzb3VyY2VzKGFyY2hpdmUp
OwogfQogCkBAIC0xMTAzLDcgKzExMDMsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjphZGRBcmNo
aXZlUmVzb3VyY2UoUmVmPEFyY2hpdmVSZXNvdXJjZT4mJiByZXNvdXJjZSkKIHsKICAgICBpZiAo
IW1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbikKICAgICAgICAgbV9hcmNoaXZlUmVzb3VyY2VD
b2xsZWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uPigp
OwotICAgICAgICAKKwogICAgIG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi0+YWRkUmVzb3Vy
Y2UoV1RGTW92ZShyZXNvdXJjZSkpOwogfQogCkBAIC0xMTQwLDcgKzExNDAsNyBAQCBSZWZQdHI8
QXJjaGl2ZVJlc291cmNlPiBEb2N1bWVudExvYWRlcjo6bWFpblJlc291cmNlKCkgY29uc3QKICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhID0gbWFpblJlc291cmNlRGF0YSgpOwogICAgIGlm
ICghZGF0YSkKICAgICAgICAgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgICAg
IAorCiAgICAgYXV0byYgcmVzcG9uc2UgPSB0aGlzLT5yZXNwb25zZSgpOwogICAgIHJldHVybiBB
cmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpLCByZXNwb25zZS51cmwoKSwgcmVz
cG9uc2UubWltZVR5cGUoKSwgcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpLCBmcmFtZSgpLT50
cmVlKCkudW5pcXVlTmFtZSgpKTsKIH0KQEAgLTExNDksNyArMTE0OSw3IEBAIFBhc3NSZWZQdHI8
QXJjaGl2ZVJlc291cmNlPiBEb2N1bWVudExvYWRlcjo6c3VicmVzb3VyY2UoY29uc3QgVVJMJiB1
cmwpIGNvbnN0CiB7CiAgICAgaWYgKCFpc0NvbW1pdHRlZCgpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICAKKwogICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IG1fY2FjaGVkUmVz
b3VyY2VMb2FkZXItPmNhY2hlZFJlc291cmNlKHVybCk7CiAgICAgaWYgKCFyZXNvdXJjZSB8fCAh
cmVzb3VyY2UtPmlzTG9hZGVkKCkpCiAgICAgICAgIHJldHVybiBhcmNoaXZlUmVzb3VyY2VGb3JV
UkwodXJsKTsKQEAgLTE1OTcsNyArMTU5Nyw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN1YnJl
c291cmNlTG9hZGVyRmluaXNoZWRMb2FkaW5nT25lUGFydChSZXNvdXJjZUxvYWRlciogbG9hCiAK
ICAgICBjaGVja0xvYWRDb21wbGV0ZSgpOwogICAgIGlmIChGcmFtZSogZnJhbWUgPSBtX2ZyYW1l
KQotICAgICAgICBmcmFtZS0+bG9hZGVyKCkuY2hlY2tMb2FkQ29tcGxldGUoKTsgICAgCisgICAg
ICAgIGZyYW1lLT5sb2FkZXIoKS5jaGVja0xvYWRDb21wbGV0ZSgpOwogfQogCiB2b2lkIERvY3Vt
ZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkKQEAgLTE2NDQs
NyArMTY0NCw3IEBAIHN0YXRpYyB2b2lkIGljb25EYXRhQ2FsbGJhY2soU2hhcmVkQnVmZmVyKiwg
dm9pZCopCiB9CiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmdldEljb25EYXRhRm9ySWNvblVSTChj
b25zdCBTdHJpbmcmIHVybFN0cmluZykKLXsgICAKK3sKICAgICBpZiAobV9pY29uRGF0YUNhbGxi
YWNrKQogICAgICAgICBtX2ljb25EYXRhQ2FsbGJhY2stPmludmFsaWRhdGUoKTsKICAgICBtX2lj
b25EYXRhQ2FsbGJhY2sgPSBJY29uRGF0YUNhbGxiYWNrOjpjcmVhdGUodGhpcywgaWNvbkRhdGFD
YWxsYmFjayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIuY3BwCmluZGV4IDkwZTRiZmJjMTEyMzg5M2FiMTM1MjQ1ZmI3NDk3NzhkM2I2OTk1
YWQuLmQxMDdiODhmNjJkN2E4M2NjYjA2ZTdiZGZmN2MxNGRhZThjNTRiNDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0x
NjAsOCArMTYwLDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNhbmNlbCgpCiAg
ICAgLy8gQ2FuY2VsIGNhbiByZS1lbnRlciBhbmQgbV9yZXNvdXJjZSBtaWdodCBiZSBudWxsIGhl
cmUgYXMgYSByZXN1bHQuCiAgICAgaWYgKG1fY2xpZW50ICYmIG1fcmVzb3VyY2UpIHsKICAgICAg
ICAgLy8gRklYTUU6IFRoaXMgZXJyb3IgaXMgc2VudCB0byB0aGUgY2xpZW50IGluIGRpZEZhaWwo
KSwgc28gaXQgc2hvdWxkIG5vdCBiZSBhbiBpbnRlcm5hbCBvbmUuIFVzZSBGcmFtZUxvYWRlckNs
aWVudDo6Y2FuY2VsbGVkRXJyb3IoKSBpbnN0ZWFkLgotICAgICAgICBSZXNvdXJjZUVycm9yIGVy
cm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIG1fcmVzb3VyY2UtPnVybCgpLCAiTG9h
ZCBjYW5jZWxsZWQiKTsKLSAgICAgICAgZXJyb3Iuc2V0SXNDYW5jZWxsYXRpb24odHJ1ZSk7Cisg
ICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwg
bV9yZXNvdXJjZS0+dXJsKCksICJMb2FkIGNhbmNlbGxlZCIsIFJlc291cmNlRXJyb3I6OlR5cGU6
OkNhbmNlbGxhdGlvbik7CiAgICAgICAgIGRpZEZhaWwobV9yZXNvdXJjZS0+aWRlbnRpZmllcigp
LCBlcnJvcik7CiAgICAgfQogICAgIGNsZWFyUmVzb3VyY2UoKTsKQEAgLTMxNiw3ICszMTUsNyBA
QCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVz
b3VyY2UqIHJlc291cmNlKQogewogICAgIEFTU0VSVChtX2NsaWVudCk7CiAgICAgQVNTRVJUX1VO
VVNFRChyZXNvdXJjZSwgcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7Ci0gICAgICAgIAorCiAgICAg
aWYgKG1fcmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSkKICAgICAgICAgZGlkRmFpbChtX3Jlc291
cmNlLT5pZGVudGlmaWVyKCksIG1fcmVzb3VyY2UtPnJlc291cmNlRXJyb3IoKSk7CiAgICAgZWxz
ZQpAQCAtMzk1LDcgKzM5NCw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2Fk
UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNlY3VyCiAKICAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIC8vIEZJWE1FOiBUaHJlYWRhYmxlTG9hZGVyT3B0
aW9ucy5zbmlmZkNvbnRlbnQgaXMgbm90IHN1cHBvcnRlZCBmb3Igc3luY2hyb25vdXMgcmVxdWVz
dHMuCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKICAgICBSZXNvdXJjZUVycm9yIGVy
cm9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IDk4NGY0OGViMmMxMmYw
YmQ1ZjhjZTUzYThhYzEwMDk5MDk0NjU4ODIuLjZiNTlkZmZmY2ZmYWFlMDAwOWE5NjU2MGIyMTkx
YmJlZjFhZDE0MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTIyNyw5
ICsyMjcsOSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICB2b2lkIG5l
ZWRUb3VjaEV2ZW50cyhib29sKSBvdmVycmlkZSB7IH0KICNlbmRpZgotICAgIAorCiAgICAgdm9p
ZCB3aGVlbEV2ZW50SGFuZGxlcnNDaGFuZ2VkKGJvb2wpIG92ZXJyaWRlIHsgfQotICAgIAorCiAg
ICAgYm9vbCBpc0VtcHR5Q2hyb21lQ2xpZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQogCiAgICAgdm9pZCBkaWRBc3NvY2lhdGVGb3JtQ29udHJvbHMoY29uc3QgVmVjdG9yPFJl
ZlB0cjxFbGVtZW50Pj4mKSBvdmVycmlkZSB7IH0KQEAgLTMzMCwxNSArMzMwLDE1IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBjaGFyKiwg
aW50KSBvdmVycmlkZSB7IH0KICAgICB2b2lkIGZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRl
ciopIG92ZXJyaWRlIHsgfQogCi0gICAgUmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25z
dCBSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZSB7IFJlc291cmNlRXJyb3IgZXJyb3IoIiIsIDAs
IFVSTCgpLCAiIik7IGVycm9yLnNldElzQ2FuY2VsbGF0aW9uKHRydWUpOyByZXR1cm4gZXJyb3I7
IH0KLSAgICBSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
KSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCBVUkwoKSwgIiIpOyB9Ci0g
ICAgUmVzb3VyY2VFcnJvciBibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3IoIiIsIDAsIFVSTCgp
LCAiIik7IH0KLSAgICBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dVUkxFcnJvcihjb25zdCBSZXNv
dXJjZVJlcXVlc3QmKSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCBVUkwo
KSwgIiIpOyB9Ci0gICAgUmVzb3VyY2VFcnJvciBpbnRlcnJ1cHRlZEZvclBvbGljeUNoYW5nZUVy
cm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJy
b3IoIiIsIDAsIFVSTCgpLCAiIik7IH0KKyAgICBSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9y
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3Io
UmVzb3VyY2VFcnJvcjo6VHlwZTo6Q2FuY2VsbGF0aW9uKTsgfQorICAgIFJlc291cmNlRXJyb3Ig
YmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlIHsgcmV0dXJuIHsg
fTsgfQorICAgIFJlc291cmNlRXJyb3IgYmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihjb25z
dCBSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZSB7IHJldHVybiB7IH07IH0KKyAgICBSZXNvdXJj
ZUVycm9yIGNhbm5vdFNob3dVUkxFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlk
ZSB7IHJldHVybiB7IH07IH0KKyAgICBSZXNvdXJjZUVycm9yIGludGVycnVwdGVkRm9yUG9saWN5
Q2hhbmdlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGUgeyByZXR1cm4geyB9
OyB9CiAKLSAgICBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dNSU1FVHlwZUVycm9yKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCBV
UkwoKSwgIiIpOyB9Ci0gICAgUmVzb3VyY2VFcnJvciBmaWxlRG9lc05vdEV4aXN0RXJyb3IoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3IoIiIs
IDAsIFVSTCgpLCAiIik7IH0KLSAgICBSZXNvdXJjZUVycm9yIHBsdWdpbldpbGxIYW5kbGVMb2Fk
RXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNl
RXJyb3IoIiIsIDAsIFVSTCgpLCAiIik7IH0KKyAgICBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dN
SU1FVHlwZUVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZSB7IHJldHVybiB7
IH07IH0KKyAgICBSZXNvdXJjZUVycm9yIGZpbGVEb2VzTm90RXhpc3RFcnJvcihjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJikgb3ZlcnJpZGUgeyByZXR1cm4geyB9OyB9CisgICAgUmVzb3VyY2VFcnJv
ciBwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVy
cmlkZSB7IHJldHVybiB7IH07IH0KIAogICAgIGJvb2wgc2hvdWxkRmFsbEJhY2soY29uc3QgUmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKQEAgLTYwMCw3ICs2MDAs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+RW1wdHlJbnNwZWN0b3JDbGllbnQoKSB7IH0KIAog
ICAgIHZvaWQgaW5zcGVjdGVkUGFnZURlc3Ryb3llZCgpIG92ZXJyaWRlIHsgfQotICAgIAorCiAg
ICAgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIG9wZW5Mb2NhbEZyb250ZW5kKEluc3BlY3Rv
ckNvbnRyb2xsZXIqKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdm9pZCBicmlu
Z0Zyb250ZW5kVG9Gcm9udCgpIG92ZXJyaWRlIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAppbmRleCBhM2FlODg0YTA5Mzk4YTlkMjlkMmZlODdiYTk5Y2U4MGM2OWE2YTdh
Li42YTE5YTgxZDNkZWFkMWNlODNjMDM3MDc3ZjQ3MDI0M2NjMzQ5NTM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTM4MSwxMCArMzgxLDEwIEBAIHZvaWQgRnJhbWVM
b2FkZXI6OnN1Ym1pdEZvcm0oUGFzc1JlZlB0cjxGb3JtU3VibWlzc2lvbj4gc3VibWlzc2lvbikK
ICAgICBBU1NFUlQoc3VibWlzc2lvbi0+ZGF0YSgpKTsKICAgICBBU1NFUlQoc3VibWlzc2lvbi0+
c3RhdGUoKSk7CiAgICAgQVNTRVJUKCFzdWJtaXNzaW9uLT5zdGF0ZSgpLT5zb3VyY2VEb2N1bWVu
dCgpLT5mcmFtZSgpIHx8IHN1Ym1pc3Npb24tPnN0YXRlKCktPnNvdXJjZURvY3VtZW50KCktPmZy
YW1lKCkgPT0gJm1fZnJhbWUpOwotICAgIAorCiAgICAgaWYgKCFtX2ZyYW1lLnBhZ2UoKSkKICAg
ICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgaWYgKHN1Ym1pc3Npb24tPmFjdGlvbigpLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC00ODYsNyArNDg2LDcgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6c3RvcCgpCiAgICAgICAgIHBhcnNlci0+c3RvcFBhcnNpbmcoKTsKICAgICAgICAgcGFy
c2VyLT5maW5pc2goKTsKICAgICB9Ci0gICAgCisKICAgICBpY29uKCkuc3RvcExvYWRlcigpOwog
fQogCkBAIC01MTksNyArNTE5LDcgQEAgYm9vbCBGcmFtZUxvYWRlcjo6Y2xvc2VVUkwoKQogICAg
IH0KIAogICAgIHN0b3BMb2FkaW5nKHVubG9hZEV2ZW50UG9saWN5KTsKLSAgICAKKwogICAgIG1f
ZnJhbWUuZWRpdG9yKCkuY2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KQEAgLTU2MCwxMCArNTYwLDEwIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRpZEV4cGxpY2l0
T3BlbigpCiAgICAgLy8gQ2FsbGluZyBkb2N1bWVudC5vcGVuIGNvdW50cyBhcyBjb21taXR0aW5n
IHRoZSBmaXJzdCByZWFsIGRvY3VtZW50IGxvYWQuCiAgICAgaWYgKCFtX3N0YXRlTWFjaGluZS5j
b21taXR0ZWRGaXJzdFJlYWxEb2N1bWVudExvYWQoKSkKICAgICAgICAgbV9zdGF0ZU1hY2hpbmUu
YWR2YW5jZVRvKEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lOjpEaXNwbGF5aW5nSW5pdGlhbEVtcHR5
RG9jdW1lbnRQb3N0Q29tbWl0KTsKLSAgICAKKwogICAgIC8vIFByZXZlbnQgd2luZG93Lm9wZW4o
dXJsKSAtLSBlZyB3aW5kb3cub3BlbigiYWJvdXQ6YmxhbmsiKSAtLSBmcm9tIGJsb3dpbmcgYXdh
eSByZXN1bHRzCi0gICAgLy8gZnJvbSBhIHN1YnNlcXVlbnQgd2luZG93LmRvY3VtZW50Lm9wZW4g
LyB3aW5kb3cuZG9jdW1lbnQud3JpdGUgY2FsbC4gCi0gICAgLy8gQ2FuY2VsaW5nIHJlZGlyZWN0
aW9uIGhlcmUgd29ya3MgZm9yIGFsbCBjYXNlcyBiZWNhdXNlIGRvY3VtZW50Lm9wZW4gCisgICAg
Ly8gZnJvbSBhIHN1YnNlcXVlbnQgd2luZG93LmRvY3VtZW50Lm9wZW4gLyB3aW5kb3cuZG9jdW1l
bnQud3JpdGUgY2FsbC4KKyAgICAvLyBDYW5jZWxpbmcgcmVkaXJlY3Rpb24gaGVyZSB3b3JrcyBm
b3IgYWxsIGNhc2VzIGJlY2F1c2UgZG9jdW1lbnQub3BlbgogICAgIC8vIGltcGxpY2l0bHkgcHJl
Y2VkZXMgZG9jdW1lbnQud3JpdGUuCiAgICAgbV9mcmFtZS5uYXZpZ2F0aW9uU2NoZWR1bGVyKCku
Y2FuY2VsKCk7CiB9CkBAIC01ODcsNyArNTg3LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2xlYXIo
RG9jdW1lbnQqIG5ld0RvY3VtZW50LCBib29sIGNsZWFyV2luZG93UHJvcGVydGllcywgYm9vbAog
ICAgIGlmICghbV9uZWVkc0NsZWFyKQogICAgICAgICByZXR1cm47CiAgICAgbV9uZWVkc0NsZWFy
ID0gZmFsc2U7Ci0gICAgCisKICAgICBpZiAoIW1fZnJhbWUuZG9jdW1lbnQoKS0+aW5QYWdlQ2Fj
aGUoKSkgewogICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCktPmNhbmNlbFBhcnNpbmcoKTsKICAg
ICAgICAgbV9mcmFtZS5kb2N1bWVudCgpLT5zdG9wQWN0aXZlRE9NT2JqZWN0cygpOwpAQCAtODgy
LDcgKzg4Miw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkxJbnRvQ2hpbGRGcmFtZShjb25z
dCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcmVyLCBGCiAgICAgSGlzdG9yeUl0ZW0qIHBh
cmVudEl0ZW0gPSBoaXN0b3J5KCkuY3VycmVudEl0ZW0oKTsKICAgICAvLyBJZiB3ZSdyZSBtb3Zp
bmcgaW4gdGhlIGJhY2svZm9yd2FyZCBsaXN0LCB3ZSBtaWdodCB3YW50IHRvIHJlcGxhY2UgdGhl
IGNvbnRlbnQKICAgICAvLyBvZiB0aGlzIGNoaWxkIGZyYW1lIHdpdGggd2hhdGV2ZXIgd2FzIHRo
ZXJlIGF0IHRoYXQgcG9pbnQuCi0gICAgaWYgKHBhcmVudEl0ZW0gJiYgcGFyZW50SXRlbS0+Y2hp
bGRyZW4oKS5zaXplKCkgJiYgaXNCYWNrRm9yd2FyZExvYWRUeXBlKGxvYWRUeXBlKCkpIAorICAg
IGlmIChwYXJlbnRJdGVtICYmIHBhcmVudEl0ZW0tPmNoaWxkcmVuKCkuc2l6ZSgpICYmIGlzQmFj
a0ZvcndhcmRMb2FkVHlwZShsb2FkVHlwZSgpKQogICAgICAgICAmJiAhbV9mcmFtZS5kb2N1bWVu
dCgpLT5sb2FkRXZlbnRGaW5pc2hlZCgpKSB7CiAgICAgICAgIEhpc3RvcnlJdGVtKiBjaGlsZEl0
ZW0gPSBwYXJlbnRJdGVtLT5jaGlsZEl0ZW1XaXRoVGFyZ2V0KGNoaWxkRnJhbWUtPnRyZWUoKS51
bmlxdWVOYW1lKCkpOwogICAgICAgICBpZiAoY2hpbGRJdGVtKSB7CkBAIC05MDYsNyArOTA2LDcg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEFyY2hpdmUoUGFzc1JlZlB0cjxBcmNoaXZlPiBhcmNo
aXZlKQogCiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShVUkwoKSwgbWFpblJlc291cmNl
LT5taW1lVHlwZSgpLCBtYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCksIG1haW5SZXNvdXJjZS0+
dGV4dEVuY29kaW5nKCkpOwogICAgIFN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRhKCZtYWlu
UmVzb3VyY2UtPmRhdGEoKSwgVVJMKCksIHJlc3BvbnNlLCBTdWJzdGl0dXRlRGF0YTo6U2Vzc2lv
bkhpc3RvcnlWaXNpYmlsaXR5OjpIaWRkZW4pOwotICAgIAorCiAgICAgUmVzb3VyY2VSZXF1ZXN0
IHJlcXVlc3QobWFpblJlc291cmNlLT51cmwoKSk7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHJl
cXVlc3QuYXBwbHlXZWJBcmNoaXZlSGFja0Zvck1haWwoKTsKQEAgLTEwMTUsMTAgKzEwMTUsMTAg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEluU2FtZURvY3VtZW50KGNvbnN0IFVSTCYgdXJsLCBQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHQKICAgICBzZXRPdXRnb2luZ1JlZmVycmVyKHVybCk7
CiAgICAgZG9jdW1lbnRMb2FkZXIoKS0+cmVwbGFjZVJlcXVlc3RVUkxGb3JTYW1lRG9jdW1lbnRO
YXZpZ2F0aW9uKHVybCk7CiAgICAgaWYgKGlzTmV3TmF2aWdhdGlvbiAmJiAhc2hvdWxkVHJlYXRV
UkxBc1NhbWVBc0N1cnJlbnQodXJsKSAmJiAhc3RhdGVPYmplY3QpIHsKLSAgICAgICAgLy8gTkI6
IG11c3QgaGFwcGVuIGFmdGVyIHJlcGxhY2VSZXF1ZXN0VVJMRm9yU2FtZURvY3VtZW50TmF2aWdh
dGlvbigpLCBzaW5jZSB3ZSBhZGQgCi0gICAgICAgIC8vIGJhc2VkIG9uIHRoZSBjdXJyZW50IHJl
cXVlc3QuIE11c3QgYWxzbyBoYXBwZW4gYmVmb3JlIHdlIG9wZW5VUkwgYW5kIGRpc3BsYWNlIHRo
ZSAKKyAgICAgICAgLy8gTkI6IG11c3QgaGFwcGVuIGFmdGVyIHJlcGxhY2VSZXF1ZXN0VVJMRm9y
U2FtZURvY3VtZW50TmF2aWdhdGlvbigpLCBzaW5jZSB3ZSBhZGQKKyAgICAgICAgLy8gYmFzZWQg
b24gdGhlIGN1cnJlbnQgcmVxdWVzdC4gTXVzdCBhbHNvIGhhcHBlbiBiZWZvcmUgd2Ugb3BlblVS
TCBhbmQgZGlzcGxhY2UgdGhlCiAgICAgICAgIC8vIHNjcm9sbCBwb3NpdGlvbiwgc2luY2UgYWRk
aW5nIHRoZSBCRiBpdGVtIHdpbGwgc2F2ZSBhd2F5IHNjcm9sbCBzdGF0ZS4KLSAgICAgICAgCisK
ICAgICAgICAgLy8gTkIyOiBJZiB3ZSB3ZXJlIGxvYWRpbmcgYSBsb25nLCBzbG93IGRvYywgYW5k
IHRoZSB1c2VyIGZyYWdtZW50IG5hdmlnYXRlZCBiZWZvcmUKICAgICAgICAgLy8gaXQgd2FzIGRv
bmUsIGN1cnJJdGVtIGlzIG5vdyBzZXQgdGhlIHRoYXQgc2xvdyBkb2MsIGFuZCBwcmV2SXRlbSBp
cyB3aGF0ZXZlciB3YXMKICAgICAgICAgLy8gYmVmb3JlIGl0LiAgQWRkaW5nIHRoZSBiL2YgaXRl
bSB3aWxsIGJ1bXAgdGhlIHNsb3cgZG9jIGRvd24gdG8gcHJldkl0ZW0sIGV2ZW4KQEAgLTEwMjgs
MTUgKzEwMjgsMTUgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEluU2FtZURvY3VtZW50KGNvbnN0
IFVSTCYgdXJsLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHQKIAogICAgICAgICBoaXN0b3J5
KCkudXBkYXRlQmFja0ZvcndhcmRMaXN0Rm9yRnJhZ21lbnRTY3JvbGwoKTsKICAgICB9Ci0gICAg
CisKICAgICBib29sIGhhc2hDaGFuZ2UgPSBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVy
KHVybCwgb2xkVVJMKSAmJiB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkgIT0gb2xkVVJMLmZyYWdt
ZW50SWRlbnRpZmllcigpOwotICAgIAorCiAgICAgaGlzdG9yeSgpLnVwZGF0ZUZvclNhbWVEb2N1
bWVudE5hdmlnYXRpb24oKTsKIAogICAgIC8vIElmIHdlIHdlcmUgaW4gdGhlIGF1dG9zY3JvbGwv
cGFuU2Nyb2xsIG1vZGUgd2Ugd2FudCB0byBzdG9wIGl0IGJlZm9yZSBmb2xsb3dpbmcgdGhlIGxp
bmsgdG8gdGhlIGFuY2hvcgogICAgIGlmIChoYXNoQ2hhbmdlKQogICAgICAgICBtX2ZyYW1lLmV2
ZW50SGFuZGxlcigpLnN0b3BBdXRvc2Nyb2xsVGltZXIoKTsKLSAgICAKKwogICAgIC8vIEl0J3Mg
aW1wb3J0YW50IHRvIG1vZGVsIHRoaXMgYXMgYSBsb2FkIHRoYXQgc3RhcnRzIGFuZCBpbW1lZGlh
dGVseSBmaW5pc2hlcy4KICAgICAvLyBPdGhlcndpc2UsIHRoZSBwYXJlbnQgZnJhbWUgbWF5IHRo
aW5rIHdlIG5ldmVyIGZpbmlzaGVkIGxvYWRpbmcuCiAgICAgc3RhcnRlZCgpOwpAQCAtMTA0NCw3
ICsxMDQ0LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEluU2FtZURvY3VtZW50KGNvbnN0IFVS
TCYgdXJsLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHQKICAgICAvLyBXZSBuZWVkIHRvIHNj
cm9sbCB0byB0aGUgZnJhZ21lbnQgd2hldGhlciBvciBub3QgYSBoYXNoIGNoYW5nZSBvY2N1cnJl
ZCwgc2luY2UKICAgICAvLyB0aGUgdXNlciBtaWdodCBoYXZlIHNjcm9sbGVkIHNpbmNlIHRoZSBw
cmV2aW91cyBuYXZpZ2F0aW9uLgogICAgIHNjcm9sbFRvRnJhZ21lbnRXaXRoUGFyZW50Qm91bmRh
cnkodXJsKTsKLSAgICAKKwogICAgIG1faXNDb21wbGV0ZSA9IGZhbHNlOwogICAgIGNoZWNrQ29t
cGxldGVkKCk7CiAKQEAgLTEwNTksMTIgKzEwNTksMTIgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9h
ZEluU2FtZURvY3VtZW50KGNvbnN0IFVSTCYgdXJsLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHQKIAogICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+c3RhdGVQb3BwZWQoc3RhdGVPYmplY3QgPyBz
dGF0ZU9iamVjdCA6IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6bnVsbFZhbHVlKCkpOwogICAgIG1f
Y2xpZW50LmRpc3BhdGNoRGlkUG9wU3RhdGVXaXRoaW5QYWdlKCk7Ci0gICAgCisKICAgICBpZiAo
aGFzaENoYW5nZSkgewogICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCktPmVucXVldWVIYXNoY2hh
bmdlRXZlbnQob2xkVVJMLCB1cmwpOwogICAgICAgICBtX2NsaWVudC5kaXNwYXRjaERpZENoYW5n
ZUxvY2F0aW9uV2l0aGluUGFnZSgpOwogICAgIH0KLSAgICAKKwogICAgIC8vIEZyYW1lTG9hZGVy
Q2xpZW50OjpkaWRGaW5pc2hMb2FkKCkgdGVsbHMgdGhlIGludGVybmFsIGxvYWQgZGVsZWdhdGUg
dGhlIGxvYWQgZmluaXNoZWQgd2l0aCBubyBlcnJvcgogICAgIG1fY2xpZW50LmRpZEZpbmlzaExv
YWQoKTsKIH0KQEAgLTExMjIsNyArMTEyMiw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnNldHVwRm9y
UmVwbGFjZSgpCiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRGcmFtZVJlcXVlc3QoY29uc3Qg
RnJhbWVMb2FkUmVxdWVzdCYgcmVxdWVzdCwgRXZlbnQqIGV2ZW50LCBQYXNzUmVmUHRyPEZvcm1T
dGF0ZT4gZm9ybVN0YXRlKQoteyAgICAKK3sKICAgICAvLyBQcm90ZWN0IGZyYW1lIGZyb20gZ2V0
dGluZyBibG93biBhd2F5IGluc2lkZSBkaXNwYXRjaEJlZm9yZUxvYWRFdmVudCBpbiBsb2FkV2l0
aERvY3VtZW50TG9hZGVyLgogICAgIFJlZjxGcmFtZT4gcHJvdGVjdChtX2ZyYW1lKTsKIApAQCAt
MTIzMyw3ICsxMjMzLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVSTChjb25zdCBGcmFtZUxv
YWRSZXF1ZXN0JiBmcmFtZUxvYWRSZXF1ZXN0LCBjb25zdCBTdHJpbmcKIAogICAgIGJvb2wgc2Ft
ZVVSTCA9IHNob3VsZFRyZWF0VVJMQXNTYW1lQXNDdXJyZW50KG5ld1VSTCk7CiAgICAgY29uc3Qg
U3RyaW5nJiBodHRwTWV0aG9kID0gcmVxdWVzdC5odHRwTWV0aG9kKCk7Ci0gICAgCisKICAgICAv
LyBNYWtlIHN1cmUgdG8gZG8gc2Nyb2xsIHRvIGZyYWdtZW50IHByb2Nlc3NpbmcgZXZlbiBpZiB0
aGUgVVJMIGlzCiAgICAgLy8gZXhhY3RseSB0aGUgc2FtZSBzbyBwYWdlcyB3aXRoICcjJyBsaW5r
cyBhbmQgREhUTUwgc2lkZSBlZmZlY3RzCiAgICAgLy8gd29yayBwcm9wZXJseS4KQEAgLTEzNDIs
MTQgKzEzNDIsMTQgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZChEb2N1bWVudExvYWRlciogbmV3
RG9jdW1lbnRMb2FkZXIpCiAKICAgICBpZiAobV9kb2N1bWVudExvYWRlcikKICAgICAgICAgbmV3
RG9jdW1lbnRMb2FkZXItPnNldE92ZXJyaWRlRW5jb2RpbmcobV9kb2N1bWVudExvYWRlci0+b3Zl
cnJpZGVFbmNvZGluZygpKTsKLSAgICAKKwogICAgIC8vIFdoZW4gd2UgbG9hZGluZyBhbHRlcm5h
dGUgY29udGVudCBmb3IgYW4gdW5yZWFjaGFibGUgVVJMIHRoYXQgd2UncmUKLSAgICAvLyB2aXNp
dGluZyBpbiB0aGUgaGlzdG9yeSBsaXN0LCB3ZSB0cmVhdCBpdCBhcyBhIHJlbG9hZCBzbyB0aGUg
aGlzdG9yeSBsaXN0IAorICAgIC8vIHZpc2l0aW5nIGluIHRoZSBoaXN0b3J5IGxpc3QsIHdlIHRy
ZWF0IGl0IGFzIGEgcmVsb2FkIHNvIHRoZSBoaXN0b3J5IGxpc3QKICAgICAvLyBpcyBhcHByb3By
aWF0ZWx5IG1haW50YWluZWQuCiAgICAgLy8KICAgICAvLyBGSVhNRTogVGhpcyBzZWVtcyBsaWtl
IGEgZGFuZ2Vyb3VzIG92ZXJsb2FkaW5nIG9mIHRoZSBtZWFuaW5nIG9mICJGcmFtZUxvYWRUeXBl
OjpSZWxvYWQiIC4uLgotICAgIC8vIHNob3VsZG4ndCBhIG1vcmUgZXhwbGljaXQgdHlwZSBvZiBy
ZWxvYWQgYmUgZGVmaW5lZCwgdGhhdCBtZWFucyByb3VnaGx5IAotICAgIC8vICJsb2FkIHdpdGhv
dXQgYWZmZWN0aW5nIGhpc3RvcnkiID8gCisgICAgLy8gc2hvdWxkbid0IGEgbW9yZSBleHBsaWNp
dCB0eXBlIG9mIHJlbG9hZCBiZSBkZWZpbmVkLCB0aGF0IG1lYW5zIHJvdWdobHkKKyAgICAvLyAi
bG9hZCB3aXRob3V0IGFmZmVjdGluZyBoaXN0b3J5IiA/CiAgICAgaWYgKHNob3VsZFJlbG9hZFRv
SGFuZGxlVW5yZWFjaGFibGVVUkwobmV3RG9jdW1lbnRMb2FkZXIpKSB7CiAgICAgICAgIC8vIHNo
b3VsZFJlbG9hZFRvSGFuZGxlVW5yZWFjaGFibGVVUkwoKSByZXR1cm5zIHRydWUgb25seSB3aGVu
IHRoZSBvcmlnaW5hbCBsb2FkIHR5cGUgaXMgYmFjay1mb3J3YXJkLgogICAgICAgICAvLyBJbiB0
aGlzIGNhc2Ugd2Ugc2hvdWxkIHNhdmUgdGhlIGRvY3VtZW50IHN0YXRlIG5vdy4gT3RoZXJ3aXNl
IHRoZSBzdGF0ZSBjYW4gYmUgbG9zdCBiZWNhdXNlIGxvYWQgdHlwZSBpcwpAQCAtMTQ4MSw3ICsx
NDgxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVwb3J0QmxvY2tlZFBvcnRGYWlsZWQoRnJhbWUq
IGZyYW1lLCBjb25zdCBTdHJpbmcmIHVybCkKICAgICBBU1NFUlQoIXVybC5pc0VtcHR5KCkpOwog
ICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIGZyYW1lLT5kb2N1
bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2Fn
ZUxldmVsOjpFcnJvciwgIk5vdCBhbGxvd2VkIHRvIHVzZSByZXN0cmljdGVkIG5ldHdvcmsgcG9y
dDogIiArIHVybCk7CiB9CiAKQEAgLTE1NzgsNyArMTU3OCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OnJlbG9hZChib29sIGVuZFRvRW5kUmVsb2FkLCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQp
CiAgICAgYXBwbHlTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9OZXdEb2N1bWVudExvYWRl
cihsb2FkZXIsIG1fZG9jdW1lbnRMb2FkZXItPnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lU
b1Byb3BhZ2F0ZSgpKTsKIAogICAgIGxvYWRlci0+c2V0VXNlckNvbnRlbnRFeHRlbnNpb25zRW5h
YmxlZChjb250ZW50QmxvY2tlcnNFbmFibGVkKTsKLSAgICAKKwogICAgIFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCA9IGxvYWRlci0+cmVxdWVzdCgpOwogCiAgICAgLy8gRklYTUU6IFdlIGRvbid0
IGhhdmUgYSBtZWNoYW5pc20gdG8gcmV2YWxpZGF0ZSB0aGUgbWFpbiByZXNvdXJjZSB3aXRob3V0
IHJlbG9hZGluZyBhdCB0aGUgbW9tZW50LgpAQCAtMTU4OSw3ICsxNTg5LDcgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6cmVsb2FkKGJvb2wgZW5kVG9FbmRSZWxvYWQsIGJvb2wgY29udGVudEJsb2NrZXJz
RW5hYmxlZCkKICAgICAgICAgbG9hZGVyLT5zZXRUcmlnZ2VyaW5nQWN0aW9uKE5hdmlnYXRpb25B
Y3Rpb24ocmVxdWVzdCwgTmF2aWdhdGlvblR5cGU6OkZvcm1SZXN1Ym1pdHRlZCkpOwogCiAgICAg
bG9hZGVyLT5zZXRPdmVycmlkZUVuY29kaW5nKG1fZG9jdW1lbnRMb2FkZXItPm92ZXJyaWRlRW5j
b2RpbmcoKSk7Ci0gICAgCisKICAgICBsb2FkV2l0aERvY3VtZW50TG9hZGVyKGxvYWRlci5wdHIo
KSwgZW5kVG9FbmRSZWxvYWQgPyBGcmFtZUxvYWRUeXBlOjpSZWxvYWRGcm9tT3JpZ2luIDogRnJh
bWVMb2FkVHlwZTo6UmVsb2FkLCAwLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6Olllcyk7
CiB9CiAKQEAgLTE2MDIsNyArMTYwMiw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnN0b3BBbGxMb2Fk
ZXJzKENsZWFyUHJvdmlzaW9uYWxJdGVtUG9saWN5IGNsZWFyUHJvdmlzaW9uYWxJdGVtCiAgICAg
Ly8gSWYgdGhpcyBtZXRob2QgaXMgY2FsbGVkIGZyb20gd2l0aGluIHRoaXMgbWV0aG9kLCBpbmZp
bml0ZSByZWN1cnNpb24gY2FuIG9jY3VyICgzNDQyMjE4KS4gQXZvaWQgdGhpcy4KICAgICBpZiAo
bV9pblN0b3BBbGxMb2FkZXJzKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICAvLyBDYWxs
aW5nIHN0b3BMb2FkaW5nKCkgb24gdGhlIHByb3Zpc2lvbmFsIGRvY3VtZW50IGxvYWRlciBjYW4g
YmxvdyBhd2F5CiAgICAgLy8gdGhlIGZyYW1lIGZyb20gdW5kZXJuZWF0aC4KICAgICBSZWY8RnJh
bWU+IHByb3RlY3QobV9mcmFtZSk7CkBAIC0xNjI3LDcgKzE2MjcsNyBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpzdG9wQWxsTG9hZGVycyhDbGVhclByb3Zpc2lvbmFsSXRlbVBvbGljeSBjbGVhclByb3Zp
c2lvbmFsSXRlbQogCiAgICAgbV9jaGVja1RpbWVyLnN0b3AoKTsKIAotICAgIG1faW5TdG9wQWxs
TG9hZGVycyA9IGZhbHNlOyAgICAKKyAgICBtX2luU3RvcEFsbExvYWRlcnMgPSBmYWxzZTsKIH0K
IAogdm9pZCBGcmFtZUxvYWRlcjo6c3RvcEZvclVzZXJDYW5jZWwoYm9vbCBkZWZlckNoZWNrTG9h
ZENvbXBsZXRlKQpAQCAtMTY2OCwxNCArMTY2OCwxNCBAQCBib29sIEZyYW1lTG9hZGVyOjppc0xv
YWRpbmcoKSBjb25zdAogCiBib29sIEZyYW1lTG9hZGVyOjpmcmFtZUhhc0xvYWRlZCgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1fc3RhdGVNYWNoaW5lLmNvbW1pdHRlZEZpcnN0UmVhbERvY3VtZW50
TG9hZCgpIHx8IChtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIgJiYgIW1fc3RhdGVNYWNoaW5l
LmNyZWF0aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSk7IAorICAgIHJldHVybiBtX3N0YXRlTWFj
aGluZS5jb21taXR0ZWRGaXJzdFJlYWxEb2N1bWVudExvYWQoKSB8fCAobV9wcm92aXNpb25hbERv
Y3VtZW50TG9hZGVyICYmICFtX3N0YXRlTWFjaGluZS5jcmVhdGluZ0luaXRpYWxFbXB0eURvY3Vt
ZW50KCkpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpzZXREb2N1bWVudExvYWRlcihEb2N1bWVu
dExvYWRlciogbG9hZGVyKQogewogICAgIGlmICghbG9hZGVyICYmICFtX2RvY3VtZW50TG9hZGVy
KQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBBU1NFUlQobG9hZGVyICE9IG1fZG9jdW1l
bnRMb2FkZXIpOwogICAgIEFTU0VSVCghbG9hZGVyIHx8IGxvYWRlci0+ZnJhbWVMb2FkZXIoKSA9
PSB0aGlzKTsKIApAQCAtMTcyNSw5ICsxNzI1LDkgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c2V0UHJv
dmlzaW9uYWxEb2N1bWVudExvYWRlcihEb2N1bWVudExvYWRlciogbG9hZGVyKQogfQogCiB2b2lk
IEZyYW1lTG9hZGVyOjpzZXRTdGF0ZShGcmFtZVN0YXRlIG5ld1N0YXRlKQoteyAgICAKK3sKICAg
ICBtX3N0YXRlID0gbmV3U3RhdGU7Ci0gICAgCisKICAgICBpZiAobmV3U3RhdGUgPT0gRnJhbWVT
dGF0ZVByb3Zpc2lvbmFsKQogICAgICAgICBwcm92aXNpb25hbExvYWRTdGFydGVkKCk7CiAgICAg
ZWxzZSBpZiAobmV3U3RhdGUgPT0gRnJhbWVTdGF0ZUNvbXBsZXRlKSB7CkBAIC0xODEyLDcgKzE4
MTIsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQoKQogICAgIC8v
IGp1c3QgYWJvdXQgdG8gY29tbWl0IGEgbmV3IHBhZ2UsIHRoZXJlIGNhbm5vdCBwb3NzaWJseSBi
ZSBhIHBlbmRpbmcgcmVkaXJlY3QgYXQgdGhpcyBwb2ludC4KICAgICBpZiAobV9zZW50UmVkaXJl
Y3ROb3RpZmljYXRpb24pCiAgICAgICAgIGNsaWVudFJlZGlyZWN0Q2FuY2VsbGVkT3JGaW5pc2hl
ZChmYWxzZSk7Ci0gICAgCisKICAgICBpZiAoY2FjaGVkUGFnZSAmJiBjYWNoZWRQYWdlLT5kb2N1
bWVudCgpKSB7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgICAgICAvLyBGSVhNRTogQ2FjaGVkUGFn
ZTo6cmVzdG9yZSgpIHdvdWxkIGRpc3BhdGNoIHZpZXdwb3J0IGNoYW5nZSBub3RpZmljYXRpb24u
IEhvd2V2ZXIgVUlLaXQgZXhwZWN0cyBsb2FkCkBAIC0xODM3LDcgKzE4MzcsNyBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQoKQogICAgICAgICBtX2ZyYW1lLnBhZ2Uo
KS0+Y2hyb21lKCkuc2V0RGlzcGF0Y2hWaWV3cG9ydERhdGFEaWRDaGFuZ2VTdXBwcmVzc2VkKGZh
bHNlKTsKICAgICAgICAgbV9mcmFtZS5wYWdlKCktPmNocm9tZSgpLmRpc3BhdGNoVmlld3BvcnRQ
cm9wZXJ0aWVzRGlkQ2hhbmdlKG1fZnJhbWUucGFnZSgpLT52aWV3cG9ydEFyZ3VtZW50cygpKTsK
ICNlbmRpZgotICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgdGl0bGUgbGV0IHRoZSBXZWJWaWV3IGtu
b3cgYWJvdXQgaXQuIAorICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgdGl0bGUgbGV0IHRoZSBXZWJW
aWV3IGtub3cgYWJvdXQgaXQuCiAgICAgICAgIFN0cmluZ1dpdGhEaXJlY3Rpb24gdGl0bGUgPSBt
X2RvY3VtZW50TG9hZGVyLT50aXRsZSgpOwogICAgICAgICBpZiAoIXRpdGxlLmlzTnVsbCgpKQog
ICAgICAgICAgICAgbV9jbGllbnQuZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUodGl0bGUpOwpAQCAt
MjAyMiwxMSArMjAyMiwxMSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjbGllbnRSZWRpcmVjdENhbmNl
bGxlZE9yRmluaXNoZWQoYm9vbCBjYW5jZWxXaXRoTG9hZEluUHJvZ3Jlcwogdm9pZCBGcmFtZUxv
YWRlcjo6Y2xpZW50UmVkaXJlY3RlZChjb25zdCBVUkwmIHVybCwgZG91YmxlIHNlY29uZHMsIGRv
dWJsZSBmaXJlRGF0ZSwgTG9ja0JhY2tGb3J3YXJkTGlzdCBsb2NrQmFja0ZvcndhcmRMaXN0KQog
ewogICAgIG1fY2xpZW50LmRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdCh1cmwsIHNl
Y29uZHMsIGZpcmVEYXRlKTsKLSAgICAKKwogICAgIC8vIFJlbWVtYmVyIHRoYXQgd2Ugc2VudCBh
IHJlZGlyZWN0IG5vdGlmaWNhdGlvbiB0byB0aGUgZnJhbWUgbG9hZCBkZWxlZ2F0ZSBzbyB0aGF0
IHdoZW4gd2UgY29tbWl0CiAgICAgLy8gdGhlIG5leHQgcHJvdmlzaW9uYWwgbG9hZCwgd2UgY2Fu
IHNlbmQgYSBjb3JyZXNwb25kaW5nIC13ZWJWaWV3OmRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9y
RnJhbWU6CiAgICAgbV9zZW50UmVkaXJlY3ROb3RpZmljYXRpb24gPSB0cnVlOwotICAgIAorCiAg
ICAgLy8gSWYgYSAicXVpY2siIHJlZGlyZWN0IGNvbWVzIGluLCB3ZSBzZXQgYSBzcGVjaWFsIG1v
ZGUgc28gd2UgdHJlYXQgdGhlIG5leHQKICAgICAvLyBsb2FkIGFzIHBhcnQgb2YgdGhlIG9yaWdp
bmFsIG5hdmlnYXRpb24uIElmIHdlIGRvbid0IGhhdmUgYSBkb2N1bWVudCBsb2FkZXIsIHdlIGhh
dmUKICAgICAvLyBubyAib3JpZ2luYWwiIGxvYWQgb24gd2hpY2ggdG8gYmFzZSBhIHJlZGlyZWN0
LCBzbyB3ZSB0cmVhdCB0aGUgcmVkaXJlY3QgYXMgYSBub3JtYWwgbG9hZC4KQEAgLTIwNTEsNyAr
MjA1MSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNsb3NlT2xkRGF0YVNvdXJjZXMoKQogICAgIC8v
IHVzZSBhIHJlY3Vyc2l2ZSBhbGdvcml0aG0gaGVyZS4KICAgICBmb3IgKEZyYW1lKiBjaGlsZCA9
IG1fZnJhbWUudHJlZSgpLmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUo
KS5uZXh0U2libGluZygpKQogICAgICAgICBjaGlsZC0+bG9hZGVyKCkuY2xvc2VPbGREYXRhU291
cmNlcygpOwotICAgIAorCiAgICAgaWYgKG1fZG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIG1fY2xp
ZW50LmRpc3BhdGNoV2lsbENsb3NlKCk7CiAKQEAgLTIwNjgsNyArMjA2OCw3IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OnByZXBhcmVGb3JDYWNoZWRQYWdlUmVzdG9yZSgpCiAKICAgICAvLyBXZSBzdGls
bCBoYXZlIHRvIGNsb3NlIHRoZSBwcmV2aW91cyBwYXJ0IHBhZ2UuCiAgICAgY2xvc2VVUkwoKTsK
LSAgICAKKwogICAgIC8vIERlbGV0ZSBvbGQgc3RhdHVzIGJhciBtZXNzYWdlcyAoaWYgaXQgX3dh
c18gYWN0aXZhdGVkIG9uIGxhc3QgVVJMKS4KICAgICBpZiAobV9mcmFtZS5zY3JpcHQoKS5jYW5F
eGVjdXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpIHsKICAgICAgICAgRE9NV2lu
ZG93KiB3aW5kb3cgPSBtX2ZyYW1lLmRvY3VtZW50KCktPmRvbVdpbmRvdygpOwpAQCAtMjA4MCw3
ICsyMDgwLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cHJlcGFyZUZvckNhY2hlZFBhZ2VSZXN0b3Jl
KCkKIHZvaWQgRnJhbWVMb2FkZXI6Om9wZW4oQ2FjaGVkRnJhbWVCYXNlJiBjYWNoZWRGcmFtZSkK
IHsKICAgICBtX2lzQ29tcGxldGUgPSBmYWxzZTsKLSAgICAKKwogICAgIC8vIERvbid0IHJlLWVt
aXQgdGhlIGxvYWQgZXZlbnQuCiAgICAgbV9kaWRDYWxsSW1wbGljaXRDbG9zZSA9IHRydWU7CiAK
QEAgLTIxMDUsNyArMjEwNSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6Om9wZW4oQ2FjaGVkRnJhbWVC
YXNlJiBjYWNoZWRGcmFtZSkKICAgICBtX291dGdvaW5nUmVmZXJyZXIgPSB1cmwuc3RyaW5nKCk7
CiAKICAgICBGcmFtZVZpZXcqIHZpZXcgPSBjYWNoZWRGcmFtZS52aWV3KCk7Ci0gICAgCisKICAg
ICAvLyBXaGVuIG5hdmlnYXRpbmcgdG8gYSBDYWNoZWRGcmFtZSBpdHMgRnJhbWVWaWV3IHNob3Vs
ZCBuZXZlciBiZSBudWxsLiAgSWYgaXQgaXMgd2UnbGwgY3Jhc2ggaW4gY3JlYXRpdmUgd2F5cyBk
b3duc3RyZWFtLgogICAgIEFTU0VSVCh2aWV3KTsKICAgICB2aWV3LT5zZXRXYXNTY3JvbGxlZEJ5
VXNlcihmYWxzZSk7CkBAIC0yMTE2LDcgKzIxMTYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpvcGVu
KENhY2hlZEZyYW1lQmFzZSYgY2FjaGVkRnJhbWUpCiAgICAgLy8gVXNlIHRoZSBwcmV2aW91cyBT
Y3JvbGxWaWV3J3MgZnJhbWUgcmVjdC4KICAgICBpZiAocHJldmlvdXNWaWV3RnJhbWVSZWN0KQog
ICAgICAgICB2aWV3LT5zZXRGcmFtZVJlY3QocHJldmlvdXNWaWV3RnJhbWVSZWN0LnZhbHVlKCkp
OwotICAgIAorCiAgICAgbV9mcmFtZS5zZXREb2N1bWVudChkb2N1bWVudCk7CiAgICAgZG9jdW1l
bnQtPmRvbVdpbmRvdygpLT5yZXN1bWVGcm9tRG9jdW1lbnRTdXNwZW5zaW9uKCk7CiAKQEAgLTIx
NjgsNyArMjE2OCw3IEBAIEZyYW1lTG9hZFR5cGUgRnJhbWVMb2FkZXI6OmxvYWRUeXBlKCkgY29u
c3QKIHsKICAgICByZXR1cm4gbV9sb2FkVHlwZTsKIH0KLSAgICAKKwogQ2FjaGVQb2xpY3kgRnJh
bWVMb2FkZXI6OnN1YnJlc291cmNlQ2FjaGVQb2xpY3koKSBjb25zdAogewogICAgIGlmIChQYWdl
KiBwYWdlID0gbV9mcmFtZS5wYWdlKCkpIHsKQEAgLTIxODcsNyArMjE4Nyw3IEBAIENhY2hlUG9s
aWN5IEZyYW1lTG9hZGVyOjpzdWJyZXNvdXJjZUNhY2hlUG9saWN5KCkgY29uc3QKICAgICAgICAg
aWYgKHBhcmVudENhY2hlUG9saWN5ICE9IENhY2hlUG9saWN5VmVyaWZ5KQogICAgICAgICAgICAg
cmV0dXJuIHBhcmVudENhY2hlUG9saWN5OwogICAgIH0KLSAgICAKKwogICAgIHN3aXRjaCAobV9s
b2FkVHlwZSkgewogICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6UmVsb2FkOgogICAgICAgICByZXR1
cm4gQ2FjaGVQb2xpY3lSZXZhbGlkYXRlOwpAQCAtMjIyNSw3ICsyMjI1LDcgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6Y2hlY2tMb2FkQ29tcGxldGVGb3JUaGlzRnJhbWUoKQogICAgICAgICAgICAgUmVm
UHRyPERvY3VtZW50TG9hZGVyPiBwZGwgPSBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXI7CiAg
ICAgICAgICAgICBpZiAoIXBkbCkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICAgICAgCisKICAgICAgICAgICAgIC8vIElmIHdlJ3ZlIHJlY2VpdmVkIGFueSBlcnJvcnMgd2Ug
bWF5IGJlIHN0dWNrIGluIHRoZSBwcm92aXNpb25hbCBzdGF0ZSBhbmQgYWN0dWFsbHkgY29tcGxl
dGUuCiAgICAgICAgICAgICBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciA9IHBkbC0+bWFpbkRv
Y3VtZW50RXJyb3IoKTsKICAgICAgICAgICAgIGlmIChlcnJvci5pc051bGwoKSkKQEAgLTIyMzcs
NyArMjIzNyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRlRm9yVGhpc0Zy
YW1lKCkKICAgICAgICAgICAgICAgICBpZiAoaXNCYWNrRm9yd2FyZExvYWRUeXBlKGxvYWRUeXBl
KCkpKQogICAgICAgICAgICAgICAgICAgICAvLyBSZXNldCB0aGUgYmFjayBmb3J3YXJkIGxpc3Qg
dG8gdGhlIGxhc3QgY29tbWl0dGVkIGhpc3RvcnkgaXRlbSBhdCB0aGUgdG9wIGxldmVsLgogICAg
ICAgICAgICAgICAgICAgICBpdGVtID0gcGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuaGlzdG9y
eSgpLmN1cnJlbnRJdGVtKCk7Ci0gICAgICAgICAgICAgICAgCisKICAgICAgICAgICAgIC8vIE9u
bHkgcmVzZXQgaWYgd2UgYXJlbid0IGFscmVhZHkgZ29pbmcgdG8gYSBuZXcgcHJvdmlzaW9uYWwg
aXRlbS4KICAgICAgICAgICAgIGJvb2wgc2hvdWxkUmVzZXQgPSAhaGlzdG9yeSgpLnByb3Zpc2lv
bmFsSXRlbSgpOwogICAgICAgICAgICAgaWYgKCFwZGwtPmlzTG9hZGluZ0luQVBJU2Vuc2UoKSB8
fCBwZGwtPmlzU3RvcHBpbmcoKSkgewpAQCAtMjI2OCw5ICsyMjY4LDkgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6Y2hlY2tMb2FkQ29tcGxldGVGb3JUaGlzRnJhbWUoKQogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBjYXNl
IEZyYW1lU3RhdGVDb21taXR0ZWRQYWdlOiB7Ci0gICAgICAgICAgICBEb2N1bWVudExvYWRlciog
ZGwgPSBtX2RvY3VtZW50TG9hZGVyLmdldCgpOyAgICAgICAgICAgIAorICAgICAgICAgICAgRG9j
dW1lbnRMb2FkZXIqIGRsID0gbV9kb2N1bWVudExvYWRlci5nZXQoKTsKICAgICAgICAgICAgIGlm
ICghZGwgfHwgKGRsLT5pc0xvYWRpbmdJbkFQSVNlbnNlKCkgJiYgIWRsLT5pc1N0b3BwaW5nKCkp
KQogICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMjI4MSw3ICsyMjgxLDcgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29tcGxldGVGb3JUaGlzRnJhbWUoKQogICAgICAgICAgICAg
Ly8gdGhlIG5ldyBwYWdlIGlzIHJlYWR5LgogCiAgICAgICAgICAgICBtX2NsaWVudC5mb3JjZUxh
eW91dEZvck5vbkhUTUwoKTsKLSAgICAgICAgICAgICAKKwogICAgICAgICAgICAgLy8gSWYgdGhl
IHVzZXIgaGFkIGEgc2Nyb2xsIHBvaW50LCBzY3JvbGwgdG8gaXQsIG92ZXJyaWRpbmcgdGhlIGFu
Y2hvciBwb2ludCBpZiBhbnkuCiAgICAgICAgICAgICBpZiAobV9mcmFtZS5wYWdlKCkpIHsKICAg
ICAgICAgICAgICAgICBpZiAoaXNCYWNrRm9yd2FyZExvYWRUeXBlKG1fbG9hZFR5cGUpIHx8IG1f
bG9hZFR5cGUgPT0gRnJhbWVMb2FkVHlwZTo6UmVsb2FkIHx8IG1fbG9hZFR5cGUgPT0gRnJhbWVM
b2FkVHlwZTo6UmVsb2FkRnJvbU9yaWdpbikKQEAgLTIzMzMsNyArMjMzMyw3IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRlRm9yVGhpc0ZyYW1lKCkKIAogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGNhc2UgRnJhbWVTdGF0ZUNv
bXBsZXRlOgogICAgICAgICAgICAgbV9sb2FkVHlwZSA9IEZyYW1lTG9hZFR5cGU6OlN0YW5kYXJk
OwogICAgICAgICAgICAgZnJhbWVMb2FkQ29tcGxldGVkKCk7CkBAIC0yMzQ5LDggKzIzNDksOCBA
QCB2b2lkIEZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRlcldpbGxTdWJtaXRGb3JtKCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgcHJlcGFyZUZvckxvYWRTdGFydCgpOwotICAgIAotICAgIC8v
IFRoZSBsb2FkIG1pZ2h0IGJlIGNhbmNlbGxlZCBpbnNpZGUgb2YgcHJlcGFyZUZvckxvYWRTdGFy
dCgpLCBudWxsaW5nIG91dCB0aGUgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLCAKKworICAg
IC8vIFRoZSBsb2FkIG1pZ2h0IGJlIGNhbmNlbGxlZCBpbnNpZGUgb2YgcHJlcGFyZUZvckxvYWRT
dGFydCgpLCBudWxsaW5nIG91dCB0aGUgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLAogICAg
IC8vIHNvIHdlIG5lZWQgdG8gbnVsbCBjaGVjayBpdCBhZ2Fpbi4KICAgICBpZiAoIW1fcHJvdmlz
aW9uYWxEb2N1bWVudExvYWRlcikKICAgICAgICAgcmV0dXJuOwpAQCAtMjQ0NiwxMyArMjQ0Niwx
MyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjbG9zZUFuZFJlbW92ZUNoaWxkKEZyYW1lKiBjaGlsZCkK
IHZvaWQgRnJhbWVMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRlKCkKIHsKICAgICBBU1NFUlQobV9j
bGllbnQuaGFzV2ViVmlldygpKTsKLSAgICAKKwogICAgIG1fc2hvdWxkQ2FsbENoZWNrTG9hZENv
bXBsZXRlID0gZmFsc2U7CiAKICAgICBpZiAoIW1fZnJhbWUucGFnZSgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICAvLyBGSVhNRTogQWx3YXlzIHRyYXZlcnNpbmcgdGhlIGVudGlyZSBmcmFtZSB0
cmVlIGlzIGEgYml0IGluZWZmaWNpZW50LCBidXQgCisgICAgLy8gRklYTUU6IEFsd2F5cyB0cmF2
ZXJzaW5nIHRoZSBlbnRpcmUgZnJhbWUgdHJlZSBpcyBhIGJpdCBpbmVmZmljaWVudCwgYnV0CiAg
ICAgLy8gaXMgY3VycmVudGx5IG5lZWRlZCBpbiBvcmRlciB0byBudWxsIG91dCB0aGUgcHJldmlv
dXMgaGlzdG9yeSBpdGVtIGZvciBhbGwgZnJhbWVzLgogICAgIFZlY3RvcjxSZWY8RnJhbWU+LCAx
Nj4gZnJhbWVzOwogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1fZnJhbWUubWFpbkZyYW1lKCk7
IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpCkBAIC0yNTMzLDcg
KzI1MzMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkZXRhY2hWaWV3c0FuZERvY3VtZW50TG9hZGVy
KCkKICAgICBzZXREb2N1bWVudExvYWRlcihudWxscHRyKTsKICAgICBtX2NsaWVudC5kZXRhY2hl
ZEZyb21QYXJlbnQzKCk7CiB9Ci0gICAgCisKIHZvaWQgRnJhbWVMb2FkZXI6OmFkZEV4dHJhRmll
bGRzVG9TdWJyZXNvdXJjZVJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAg
IGFkZEV4dHJhRmllbGRzVG9SZXF1ZXN0KHJlcXVlc3QsIG1fbG9hZFR5cGUsIGZhbHNlKTsKQEAg
LTI2NjQsNyArMjY2NCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdChjb25z
dCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmCiAgICAgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSA9IGluUmVxdWVzdC5odHRwQ29udGVudFR5cGUoKTsKICAgICBTdHJp
bmcgb3JpZ2luID0gaW5SZXF1ZXN0Lmh0dHBPcmlnaW4oKTsKIAotICAgIFJlc291cmNlUmVxdWVz
dCB3b3JraW5nUmVzb3VyY2VSZXF1ZXN0KHVybCk7ICAgIAorICAgIFJlc291cmNlUmVxdWVzdCB3
b3JraW5nUmVzb3VyY2VSZXF1ZXN0KHVybCk7CiAKICAgICBpZiAoIXJlZmVycmVyLmlzRW1wdHko
KSkKICAgICAgICAgd29ya2luZ1Jlc291cmNlUmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIocmVmZXJy
ZXIpOwpAQCAtMjcwMywxOSArMjcwMywxOSBAQCB1bnNpZ25lZCBsb25nIEZyYW1lTG9hZGVyOjps
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdQogewog
ICAgIEFTU0VSVChtX2ZyYW1lLmRvY3VtZW50KCkpOwogICAgIFN0cmluZyByZWZlcnJlciA9IFNl
Y3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKG1fZnJhbWUuZG9jdW1lbnQoKS0+
cmVmZXJyZXJQb2xpY3koKSwgcmVxdWVzdC51cmwoKSwgb3V0Z29pbmdSZWZlcnJlcigpKTsKLSAg
ICAKKwogICAgIFJlc291cmNlUmVxdWVzdCBpbml0aWFsUmVxdWVzdCA9IHJlcXVlc3Q7CiAgICAg
aW5pdGlhbFJlcXVlc3Quc2V0VGltZW91dEludGVydmFsKDEwKTsKLSAgICAKKwogICAgIGlmICgh
cmVmZXJyZXIuaXNFbXB0eSgpKQogICAgICAgICBpbml0aWFsUmVxdWVzdC5zZXRIVFRQUmVmZXJy
ZXIocmVmZXJyZXIpOwogICAgIGFkZEhUVFBPcmlnaW5JZk5lZWRlZChpbml0aWFsUmVxdWVzdCwg
b3V0Z29pbmdPcmlnaW4oKSk7CiAKICAgICBpbml0aWFsUmVxdWVzdC5zZXRGaXJzdFBhcnR5Rm9y
Q29va2llcyhtX2ZyYW1lLm1haW5GcmFtZSgpLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJl
cXVlc3QoKS51cmwoKSk7Ci0gICAgCisKICAgICBhZGRFeHRyYUZpZWxkc1RvU3VicmVzb3VyY2VS
ZXF1ZXN0KGluaXRpYWxSZXF1ZXN0KTsKIAotICAgIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciA9
IDA7ICAgIAorICAgIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciA9IDA7CiAgICAgUmVzb3VyY2VS
ZXF1ZXN0IG5ld1JlcXVlc3QoaW5pdGlhbFJlcXVlc3QpOwogICAgIHJlcXVlc3RGcm9tRGVsZWdh
dGUobmV3UmVxdWVzdCwgaWRlbnRpZmllciwgZXJyb3IpOwogCkBAIC0yNzY2LDEyICsyNzY2LDEy
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJlY2VpdmVkTWFpblJlc291cmNlRXJyb3IoY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IpCiAgICAgaWYgKG1fc3RhdGUgPT0gRnJhbWVTdGF0ZVByb3Zpc2lv
bmFsICYmIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcikgewogICAgICAgICBpZiAobV9zdWJt
aXR0ZWRGb3JtVVJMID09IG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+b3JpZ2luYWxSZXF1
ZXN0Q29weSgpLnVybCgpKQogICAgICAgICAgICAgbV9zdWJtaXR0ZWRGb3JtVVJMID0gVVJMKCk7
Ci0gICAgICAgICAgICAKKwogICAgICAgICAvLyBXZSBtaWdodCBoYXZlIG1hZGUgYSBwYWdlIGNh
Y2hlIGl0ZW0sIGJ1dCBub3cgd2UncmUgYmFpbGluZyBvdXQgZHVlIHRvIGFuIGVycm9yIGJlZm9y
ZSB3ZSBldmVyCiAgICAgICAgIC8vIHRyYW5zaXRpb25lZCB0byB0aGUgbmV3IHBhZ2UgKGJlZm9y
ZSBXZWJGcmFtZVN0YXRlID09IGNvbW1pdCkuICBUaGUgZ29hbCBoZXJlIGlzIHRvIHJlc3RvcmUg
YW55IHN0YXRlCiAgICAgICAgIC8vIHNvIHRoYXQgdGhlIGV4aXN0aW5nIHZpZXcgKHRoYXQgd2Vu
ZXZlciBnb3QgZmFyIGVub3VnaCB0byByZXBsYWNlKSBjYW4gY29udGludWUgYmVpbmcgdXNlZC4K
ICAgICAgICAgaGlzdG9yeSgpLmludmFsaWRhdGVDdXJyZW50SXRlbUNhY2hlZFBhZ2UoKTsKLSAg
ICAgICAgCisKICAgICAgICAgLy8gQ2FsbCBjbGllbnRSZWRpcmVjdENhbmNlbGxlZE9yRmluaXNo
ZWQgaGVyZSBzbyB0aGF0IHRoZSBmcmFtZSBsb2FkIGRlbGVnYXRlIGlzIG5vdGlmaWVkIHRoYXQg
dGhlIHJlZGlyZWN0J3MKICAgICAgICAgLy8gc3RhdHVzIGhhcyBjaGFuZ2VkLCBpZiB0aGVyZSB3
YXMgYSByZWRpcmVjdC4gVGhlIGZyYW1lIGxvYWQgZGVsZWdhdGUgbWF5IGhhdmUgc2F2ZWQgc29t
ZSBzdGF0ZSBhYm91dAogICAgICAgICAvLyB0aGUgcmVkaXJlY3QgaW4gaXRzIC13ZWJWaWV3Ondp
bGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTDpkZWxheTpmaXJlRGF0ZTpmb3JGcmFtZTouIFNp
bmNlIHdlIGFyZSBkZWZpbml0ZWx5CkBAIC0yOTQ4LDcgKzI5NDgsNyBAQCBib29sIEZyYW1lTG9h
ZGVyOjpkaXNwYXRjaEJlZm9yZVVubG9hZEV2ZW50KENocm9tZSYgY2hyb21lLCBGcmFtZUxvYWRl
ciogZnJhbWVMbwogICAgIFJlZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQgPSBtX2ZyYW1lLmRvY3Vt
ZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudC0+Ym9keU9yRnJhbWVzZXQoKSkKICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgCisKICAgICBSZWY8QmVmb3JlVW5sb2FkRXZlbnQ+IGJlZm9yZVVubG9h
ZEV2ZW50ID0gQmVmb3JlVW5sb2FkRXZlbnQ6OmNyZWF0ZSgpOwogICAgIG1fcGFnZURpc21pc3Nh
bEV2ZW50QmVpbmdEaXNwYXRjaGVkID0gUGFnZURpc21pc3NhbFR5cGU6OkJlZm9yZVVubG9hZDsK
IApAQCAtMjk4NCwxMyArMjk4NCwxMyBAQCBib29sIEZyYW1lTG9hZGVyOjpkaXNwYXRjaEJlZm9y
ZVVubG9hZEV2ZW50KENocm9tZSYgY2hyb21lLCBGcmFtZUxvYWRlciogZnJhbWVMbwogICAgICAg
ICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywg
TWVzc2FnZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFsKCJCbG9ja2VkIGF0dGVtcHQgdG8gc2hv
dyBiZWZvcmV1bmxvYWQgY29uZmlybWF0aW9uIGRpYWxvZyBvbiBiZWhhbGYgb2YgYSBmcmFtZSB3
aXRoIGRpZmZlcmVudCBzZWN1cml0eSBvcmlnaW4uIFByb3RvY29scywgZG9tYWlucywgYW5kIHBv
cnRzIG11c3QgbWF0Y2guIikpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGlmICgmcGFyZW50RnJhbWUtPmxv
YWRlcigpID09IGZyYW1lTG9hZGVyQmVpbmdOYXZpZ2F0ZWQpCiAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgcGFyZW50RnJhbWUgPSBwYXJlbnRGcmFt
ZS0+dHJlZSgpLnBhcmVudCgpOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIC8vIFRo
ZSBuYXZpZ2F0aW5nRnJhbWVMb2FkZXIgc2hvdWxkIGFsd2F5cyBiZSBpbiBvdXIgYW5jZXN0b3J5
LgogICAgICAgICBBU1NFUlQocGFyZW50RnJhbWUpOwogICAgICAgICBBU1NFUlQoJnBhcmVudEZy
YW1lLT5sb2FkZXIoKSA9PSBmcmFtZUxvYWRlckJlaW5nTmF2aWdhdGVkKTsKQEAgLTMwMTQsMTQg
KzMwMTQsMTQgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9u
UG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWUKICAgICBib29sIHVybElzRGlzYWxs
b3dlZCA9IGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCA9PSBBbGxvd05hdmlnYXRpb25Ub0lu
dmFsaWRVUkw6Ok5vICYmICFyZXF1ZXN0LnVybCgpLmlzVmFsaWQoKTsKIAogICAgIC8vIFRocmVl
IHJlYXNvbnMgd2UgY2FuJ3QgY29udGludWU6Ci0gICAgLy8gICAgMSkgTmF2aWdhdGlvbiBwb2xp
Y3kgZGVsZWdhdGUgc2FpZCB3ZSBjYW4ndCBzbyByZXF1ZXN0IGlzIG5pbC4gQSBwcmltYXJ5IGNh
c2Ugb2YgdGhpcyAKKyAgICAvLyAgICAxKSBOYXZpZ2F0aW9uIHBvbGljeSBkZWxlZ2F0ZSBzYWlk
IHdlIGNhbid0IHNvIHJlcXVlc3QgaXMgbmlsLiBBIHByaW1hcnkgY2FzZSBvZiB0aGlzCiAgICAg
Ly8gICAgICAgaXMgdGhlIHVzZXIgcmVzcG9uZGluZyBDYW5jZWwgdG8gdGhlIGZvcm0gcmVwb3N0
IG5hZyBzaGVldC4KICAgICAvLyAgICAyKSBVc2VyIHJlc3BvbmRlZCBDYW5jZWwgdG8gYW4gYWxl
cnQgcG9wcGVkIHVwIGJ5IHRoZSBiZWZvcmUgdW5sb2FkIGV2ZW50IGhhbmRsZXIuCiAgICAgLy8g
ICAgMykgVGhlIHJlcXVlc3QncyBVUkwgaXMgaW52YWxpZCBhbmQgbmF2aWdhdGlvbiB0byBpbnZh
bGlkIFVSTHMgaXMgZGlzYWxsb3dlZC4KICAgICBib29sIGNhbkNvbnRpbnVlID0gc2hvdWxkQ29u
dGludWUgJiYgc2hvdWxkQ2xvc2UoKSAmJiAhdXJsSXNEaXNhbGxvd2VkOwogCiAgICAgaWYgKCFj
YW5Db250aW51ZSkgewotICAgICAgICAvLyBJZiB3ZSB3ZXJlIHdhaXRpbmcgZm9yIGEgcXVpY2sg
cmVkaXJlY3QsIGJ1dCB0aGUgcG9saWN5IGRlbGVnYXRlIGRlY2lkZWQgdG8gaWdub3JlIGl0LCB0
aGVuIHdlIAorICAgICAgICAvLyBJZiB3ZSB3ZXJlIHdhaXRpbmcgZm9yIGEgcXVpY2sgcmVkaXJl
Y3QsIGJ1dCB0aGUgcG9saWN5IGRlbGVnYXRlIGRlY2lkZWQgdG8gaWdub3JlIGl0LCB0aGVuIHdl
CiAgICAgICAgIC8vIG5lZWQgdG8gcmVwb3J0IHRoYXQgdGhlIGNsaWVudCByZWRpcmVjdCB3YXMg
Y2FuY2VsbGVkLgogICAgICAgICAvLyBGSVhNRTogVGhlIGNsaWVudCBzaG91bGQgYmUgdG9sZCBh
Ym91dCBpZ25vcmVkIG5vbi1xdWljayByZWRpcmVjdHMsIHRvby4KICAgICAgICAgaWYgKG1fcXVp
Y2tSZWRpcmVjdENvbWluZykKQEAgLTMwMjksOSArMzAyOSw5IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OmNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlCiAKICAgICAgICAgc2V0UG9saWN5RG9jdW1lbnRMb2FkZXIobnVsbHB0cik7CiAKLSAg
ICAgICAgLy8gSWYgdGhlIG5hdmlnYXRpb24gcmVxdWVzdCBjYW1lIGZyb20gdGhlIGJhY2svZm9y
d2FyZCBtZW51LCBhbmQgd2UgcHVudCBvbiBpdCwgd2UgaGF2ZSB0aGUgCi0gICAgICAgIC8vIHBy
b2JsZW0gdGhhdCB3ZSBoYXZlIG9wdGltaXN0aWNhbGx5IG1vdmVkIHRoZSBiL2YgY3Vyc29yIGFs
cmVhZHksIHNvIG1vdmUgaXQgYmFjay4gIEZvciBzYW5pdHksIAotICAgICAgICAvLyB3ZSBvbmx5
IGRvIHRoaXMgd2hlbiBwdW50aW5nIGEgbmF2aWdhdGlvbiBmb3IgdGhlIHRhcmdldCBmcmFtZSBv
ciB0b3AtbGV2ZWwgZnJhbWUuICAKKyAgICAgICAgLy8gSWYgdGhlIG5hdmlnYXRpb24gcmVxdWVz
dCBjYW1lIGZyb20gdGhlIGJhY2svZm9yd2FyZCBtZW51LCBhbmQgd2UgcHVudCBvbiBpdCwgd2Ug
aGF2ZSB0aGUKKyAgICAgICAgLy8gcHJvYmxlbSB0aGF0IHdlIGhhdmUgb3B0aW1pc3RpY2FsbHkg
bW92ZWQgdGhlIGIvZiBjdXJzb3IgYWxyZWFkeSwgc28gbW92ZSBpdCBiYWNrLiBGb3Igc2FuaXR5
LAorICAgICAgICAvLyB3ZSBvbmx5IGRvIHRoaXMgd2hlbiBwdW50aW5nIGEgbmF2aWdhdGlvbiBm
b3IgdGhlIHRhcmdldCBmcmFtZSBvciB0b3AtbGV2ZWwgZnJhbWUuCiAgICAgICAgIGlmICgoaXNU
YXJnZXRJdGVtIHx8IG1fZnJhbWUuaXNNYWluRnJhbWUoKSkgJiYgaXNCYWNrRm9yd2FyZExvYWRU
eXBlKHBvbGljeUNoZWNrZXIoKS5sb2FkVHlwZSgpKSkgewogICAgICAgICAgICAgaWYgKFBhZ2Uq
IHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKSkgewogICAgICAgICAgICAgICAgIGlmIChIaXN0b3J5SXRl
bSogcmVzZXRJdGVtID0gbV9mcmFtZS5tYWluRnJhbWUoKS5sb2FkZXIoKS5oaXN0b3J5KCkuY3Vy
cmVudEl0ZW0oKSkgewpAQCAtMzA0Niw5ICszMDQ2LDkgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29u
dGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWUKICAgICBGcmFtZUxvYWRUeXBlIHR5cGUgPSBwb2xpY3lDaGVja2VyKCkubG9hZFR5cGUoKTsK
ICAgICAvLyBBIG5ldyBuYXZpZ2F0aW9uIGlzIGluIHByb2dyZXNzLCBzbyBkb24ndCBjbGVhciB0
aGUgaGlzdG9yeSdzIHByb3Zpc2lvbmFsIGl0ZW0uCiAgICAgc3RvcEFsbExvYWRlcnMoU2hvdWxk
Tm90Q2xlYXJQcm92aXNpb25hbEl0ZW0pOwotICAgIAorCiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVt
LzYyNTA4NTY+IC0gSW4gY2VydGFpbiBjaXJjdW1zdGFuY2VzIG9uIHBhZ2VzIHdpdGggbXVsdGlw
bGUgZnJhbWVzLCBzdG9wQWxsTG9hZGVycygpCi0gICAgLy8gbWlnaHQgZGV0YWNoIHRoZSBjdXJy
ZW50IEZyYW1lTG9hZGVyLCBpbiB3aGljaCBjYXNlIHdlIHNob3VsZCBiYWlsIG9uIHRoaXMgbmV3
bHkgZGVmdW5jdCBsb2FkLiAKKyAgICAvLyBtaWdodCBkZXRhY2ggdGhlIGN1cnJlbnQgRnJhbWVM
b2FkZXIsIGluIHdoaWNoIGNhc2Ugd2Ugc2hvdWxkIGJhaWwgb24gdGhpcyBuZXdseSBkZWZ1bmN0
IGxvYWQuCiAgICAgaWYgKCFtX2ZyYW1lLnBhZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0z
MjY0LDcgKzMyNjQsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkU2FtZURvY3VtZW50SXRlbShI
aXN0b3J5SXRlbSYgaXRlbSkKICAgICAgICAgdmlldy0+c2V0V2FzU2Nyb2xsZWRCeVVzZXIoZmFs
c2UpOwogCiAgICAgaGlzdG9yeSgpLnNldEN1cnJlbnRJdGVtKCZpdGVtKTsKLSAgICAgICAgCisK
ICAgICAvLyBsb2FkSW5TYW1lRG9jdW1lbnQoKSBhY3R1YWxseSBjaGFuZ2VzIHRoZSBVUkwgYW5k
IG5vdGlmaWVzIGxvYWQgZGVsZWdhdGVzIG9mIGEgImZha2UiIGxvYWQKICAgICBsb2FkSW5TYW1l
RG9jdW1lbnQoaXRlbS51cmwoKSwgaXRlbS5zdGF0ZU9iamVjdCgpLCBmYWxzZSk7CiAKQEAgLTMz
MTksMTUgKzMzMTksMTUgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZERpZmZlcmVudERvY3VtZW50
SXRlbShIaXN0b3J5SXRlbSYgaXRlbSwgRnJhbWVMb2FkVHlwZSBsb2EKICAgICAgICAgLy8gTWFr
ZSBzdXJlIHRvIGFkZCBleHRyYSBmaWVsZHMgdG8gdGhlIHJlcXVlc3QgYWZ0ZXIgdGhlIE9yaWdp
biBoZWFkZXIgaXMgYWRkZWQgZm9yIHRoZSBGb3JtRGF0YSBjYXNlLgogICAgICAgICAvLyBTZWUg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTk0IGZvciBtb3JlIGRp
c2N1c3Npb24uCiAgICAgICAgIGFkZEV4dHJhRmllbGRzVG9SZXF1ZXN0KHJlcXVlc3QsIGxvYWRU
eXBlLCB0cnVlKTsKLSAgICAgICAgCisKICAgICAgICAgLy8gRklYTUU6IFNsaWdodCBoYWNrIHRv
IHRlc3QgaWYgdGhlIE5TVVJMIGNhY2hlIGNvbnRhaW5zIHRoZSBwYWdlIHdlJ3JlIGdvaW5nIHRv
LgotICAgICAgICAvLyBXZSB3YW50IHRvIGtub3cgdGhpcyBiZWZvcmUgdGFsa2luZyB0byB0aGUg
cG9saWN5IGRlbGVnYXRlLCBzaW5jZSBpdCBhZmZlY3RzIHdoZXRoZXIgCisgICAgICAgIC8vIFdl
IHdhbnQgdG8ga25vdyB0aGlzIGJlZm9yZSB0YWxraW5nIHRvIHRoZSBwb2xpY3kgZGVsZWdhdGUs
IHNpbmNlIGl0IGFmZmVjdHMgd2hldGhlcgogICAgICAgICAvLyB3ZSBzaG93IHRoZSBEb1lvdVJl
YWxseVdhbnRUb1JlcG9zdCBuYWcuCiAgICAgICAgIC8vCiAgICAgICAgIC8vIFRoaXMgdHJpY2sg
aGFzIGEgc21hbGwgYnVnICgzMTIzODkzKSB3aGVyZSB3ZSBtaWdodCBmaW5kIGEgY2FjaGUgaGl0
LCBidXQgdGhlbgogICAgICAgICAvLyBoYXZlIHRoZSBpdGVtIHZhbmlzaCB3aGVuIHdlIHRyeSB0
byB1c2UgaXQgaW4gdGhlIGVuc3VpbmcgbmF2LiAgVGhpcyBzaG91bGQgYmUKICAgICAgICAgLy8g
ZXh0cmVtZWx5IHJhcmUsIGJ1dCBpbiB0aGF0IGNhc2UgdGhlIHVzZXIgd2lsbCBnZXQgYW4gZXJy
b3Igb24gdGhlIG5hdmlnYXRpb24uCi0gICAgICAgIAorCiAgICAgICAgIGlmIChjYWNoZUxvYWRQ
b2xpY3kgPT0gTWF5QXR0ZW1wdENhY2hlT25seUxvYWRGb3JGb3JtU3VibWlzc2lvbkl0ZW0pIHsK
ICAgICAgICAgICAgIHJlcXVlc3Quc2V0Q2FjaGVQb2xpY3koUmV0dXJuQ2FjaGVEYXRhRG9udExv
YWQpOwogICAgICAgICAgICAgYWN0aW9uID0gTmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0LCBsb2Fk
VHlwZSwgaXNGb3JtU3VibWlzc2lvbiwgZXZlbnQsIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3kpOwpAQCAtMzQwMyw3ICszNDAzLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmV0cnlBZnRlckZh
aWxlZENhY2hlT25seU1haW5SZXNvdXJjZUxvYWQoKQogUmVzb3VyY2VFcnJvciBGcmFtZUxvYWRl
cjo6Y2FuY2VsbGVkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSBjb25zdAog
ewogICAgIFJlc291cmNlRXJyb3IgZXJyb3IgPSBtX2NsaWVudC5jYW5jZWxsZWRFcnJvcihyZXF1
ZXN0KTsKLSAgICBlcnJvci5zZXRJc0NhbmNlbGxhdGlvbih0cnVlKTsKKyAgICBlcnJvci5zZXRU
eXBlKFJlc291cmNlRXJyb3I6OlR5cGU6OkNhbmNlbGxhdGlvbik7CiAgICAgcmV0dXJuIGVycm9y
OwogfQogCkBAIC0zNDE1LDcgKzM0MTUsNyBAQCBSZXNvdXJjZUVycm9yIEZyYW1lTG9hZGVyOjpi
bG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcgogUmVz
b3VyY2VFcnJvciBGcmFtZUxvYWRlcjo6YmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCkgY29uc3QKIHsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yID0gbV9jbGllbnQu
YmxvY2tlZEVycm9yKHJlcXVlc3QpOwotICAgIGVycm9yLnNldElzQ2FuY2VsbGF0aW9uKHRydWUp
OworICAgIGVycm9yLnNldFR5cGUoUmVzb3VyY2VFcnJvcjo6VHlwZTo6Q2FuY2VsbGF0aW9uKTsK
ICAgICByZXR1cm4gZXJyb3I7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCA3NTYwYzU5NzhlMmUyMzJkMDdkZjA0ZWI3ZWJj
NjVmMWEzNjZiOWRjLi42NjAyZGNlZDQzNjgxYzM1ODYxMGQzODRiZWYzOTBmY2I2ODU0OGI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3Bw
CkBAIC0xMzgsOCArMTM4LDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhy
ZWFkQnJpZGdlOjpjYW5jZWwoKQogICAgIGlmICghY2xpZW50V3JhcHBlci0+ZG9uZSgpKSB7CiAg
ICAgICAgIC8vIElmIHRoZSBjbGllbnQgaGFzbid0IHJlYWNoZWQgYSB0ZXJtaW5hdGlvbiBzdGF0
ZSwgdGhlbiB0cmFuc2l0aW9uIGl0IGJ5IHNlbmRpbmcgYSBjYW5jZWxsYXRpb24gZXJyb3IuCiAg
ICAgICAgIC8vIE5vdGU6IG5vIG1vcmUgY2xpZW50IGNhbGxiYWNrcyB3aWxsIGJlIGRvbmUgYWZ0
ZXIgdGhpcyBtZXRob2QgLS0gdGhlIGNsZWFyQ2xpZW50V3JhcHBlcigpIGNhbGwgZW5zdXJlcyB0
aGF0LgotICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yKFN0cmluZygpLCAwLCBVUkwoKSwgU3Ry
aW5nKCkpOwotICAgICAgICBlcnJvci5zZXRJc0NhbmNlbGxhdGlvbih0cnVlKTsKKyAgICAgICAg
UmVzb3VyY2VFcnJvciBlcnJvcihSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRpb24pOwog
ICAgICAgICBjbGllbnRXcmFwcGVyLT5kaWRGYWlsKGVycm9yKTsKICAgICB9CiAgICAgY2xlYXJD
bGllbnRXcmFwcGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlRXJyb3JCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VFcnJvckJhc2UuY3BwCmluZGV4IDBlZmQwNGU4MjM0NTZmMTZiZDMzMzI3NjU0
ZDczZmFjZGUwNjZiZWQuLmJiNzIwNTRmMzcxODU0ODMxMzJjYzUyZWJmOGVlZDRmOWMxYzA2NDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJv
ckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VF
cnJvckJhc2UuY3BwCkBAIC0yMSw3ICsyMSw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNp
bmNsdWRlICJjb25maWcuaCIKQEAgLTQ1LDkgKzQ1LDcgQEAgUmVzb3VyY2VFcnJvciBSZXNvdXJj
ZUVycm9yQmFzZTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKICAgICBlcnJvckNvcHkubV9lcnJvckNv
ZGUgPSBtX2Vycm9yQ29kZTsKICAgICBlcnJvckNvcHkubV9mYWlsaW5nVVJMID0gbV9mYWlsaW5n
VVJMLmlzb2xhdGVkQ29weSgpOwogICAgIGVycm9yQ29weS5tX2xvY2FsaXplZERlc2NyaXB0aW9u
ID0gbV9sb2NhbGl6ZWREZXNjcmlwdGlvbi5pc29sYXRlZENvcHkoKTsKLSAgICBlcnJvckNvcHku
bV9pc051bGwgPSBtX2lzTnVsbDsKLSAgICBlcnJvckNvcHkubV9pc0NhbmNlbGxhdGlvbiA9IG1f
aXNDYW5jZWxsYXRpb247Ci0gICAgZXJyb3JDb3B5Lm1faXNUaW1lb3V0ID0gbV9pc1RpbWVvdXQ7
CisgICAgZXJyb3JDb3B5Lm1fdHlwZSA9IG1fdHlwZTsKIAogICAgIGVycm9yQ29weS5kb1BsYXRm
b3JtSXNvbGF0ZWRDb3B5KGFzUmVzb3VyY2VFcnJvcigpKTsKIApAQCAtNTksMTIgKzU3LDE4IEBA
IHZvaWQgUmVzb3VyY2VFcnJvckJhc2U6OmxhenlJbml0KCkgY29uc3QKICAgICBjb25zdF9jYXN0
PFJlc291cmNlRXJyb3IqPihzdGF0aWNfY2FzdDxjb25zdCBSZXNvdXJjZUVycm9yKj4odGhpcykp
LT5wbGF0Zm9ybUxhenlJbml0KCk7CiB9CiAKK3ZvaWQgUmVzb3VyY2VFcnJvckJhc2U6OnNldFR5
cGUoVHlwZSB0eXBlKQoreworICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZTo6R2VuZXJhbCB8fCBt
X3R5cGUgPT0gVHlwZTo6TnVsbCk7CisgICAgbV90eXBlID0gdHlwZTsKK30KKwogYm9vbCBSZXNv
dXJjZUVycm9yQmFzZTo6Y29tcGFyZShjb25zdCBSZXNvdXJjZUVycm9yJiBhLCBjb25zdCBSZXNv
dXJjZUVycm9yJiBiKQogewogICAgIGlmIChhLmlzTnVsbCgpICYmIGIuaXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKGEuaXNOdWxsKCkgfHwgYi5pc051bGwoKSkKKyAg
ICBpZiAoYS50eXBlKCkgIT0gYi50eXBlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IGlmIChhLmRvbWFpbigpICE9IGIuZG9tYWluKCkpCkBAIC03OSwxMiArODMsNiBAQCBib29sIFJl
c291cmNlRXJyb3JCYXNlOjpjb21wYXJlKGNvbnN0IFJlc291cmNlRXJyb3ImIGEsIGNvbnN0IFJl
c291cmNlRXJyb3ImIGIpCiAgICAgaWYgKGEubG9jYWxpemVkRGVzY3JpcHRpb24oKSAhPSBiLmxv
Y2FsaXplZERlc2NyaXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChh
LmlzQ2FuY2VsbGF0aW9uKCkgIT0gYi5pc0NhbmNlbGxhdGlvbigpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBpZiAoYS5pc1RpbWVvdXQoKSAhPSBiLmlzVGltZW91dCgpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KICAgICByZXR1cm4gUmVzb3VyY2VFcnJvcjo6cGxhdGZvcm1Db21w
YXJlKGEsIGIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlRXJyb3JCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlRXJyb3JCYXNlLmgKaW5kZXggYmI2YTNhNWMzMjcwYmRlMjJiOWQwMjljM2RkYWVh
N2I4ZjUwMjRmMi4uOWRmMTkyZmE0ZGU2NWU5NmI5NDQ1ZGE2ZjAzNjc2ZWNhMGYwMGU5MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFz
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJh
c2UuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBDYW5vbiBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yMCw3ICsyMSw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNwcmFnbWEgb25jZQpAQCAt
MzgsMzggKzM5LDM2IEBAIGNsYXNzIFJlc291cmNlRXJyb3JCYXNlIHsKIHB1YmxpYzoKICAgICBS
ZXNvdXJjZUVycm9yIGlzb2xhdGVkQ29weSgpIGNvbnN0OwogCi0gICAgYm9vbCBpc051bGwoKSBj
b25zdCB7IHJldHVybiBtX2lzTnVsbDsgfQotCiAgICAgY29uc3QgU3RyaW5nJiBkb21haW4oKSBj
b25zdCB7IGxhenlJbml0KCk7IHJldHVybiBtX2RvbWFpbjsgfQogICAgIGludCBlcnJvckNvZGUo
KSBjb25zdCB7IGxhenlJbml0KCk7IHJldHVybiBtX2Vycm9yQ29kZTsgfQogICAgIGNvbnN0IFVS
TCYgZmFpbGluZ1VSTCgpIGNvbnN0IHsgbGF6eUluaXQoKTsgcmV0dXJuIG1fZmFpbGluZ1VSTDsg
fQogICAgIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24oKSBjb25zdCB7IGxhenlJ
bml0KCk7IHJldHVybiBtX2xvY2FsaXplZERlc2NyaXB0aW9uOyB9CiAKLSAgICB2b2lkIHNldElz
Q2FuY2VsbGF0aW9uKGJvb2wgaXNDYW5jZWxsYXRpb24pIHsgbV9pc0NhbmNlbGxhdGlvbiA9IGlz
Q2FuY2VsbGF0aW9uOyB9Ci0gICAgYm9vbCBpc0NhbmNlbGxhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1faXNDYW5jZWxsYXRpb247IH0KKyAgICBlbnVtIGNsYXNzIFR5cGUgeworICAgICAgICBOdWxs
LAorICAgICAgICBHZW5lcmFsLAorICAgICAgICBDYW5jZWxsYXRpb24sCisgICAgICAgIFRpbWVv
dXQKKyAgICB9OwogCi0gICAgdm9pZCBzZXRJc1RpbWVvdXQoYm9vbCBpc1RpbWVvdXQpIHsgbV9p
c1RpbWVvdXQgPSBpc1RpbWVvdXQ7IH0KLSAgICBib29sIGlzVGltZW91dCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNUaW1lb3V0OyB9CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX3R5
cGUgPT0gVHlwZTo6TnVsbDsgfQorICAgIGJvb2wgaXNDYW5jZWxsYXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX3R5cGUgPT0gVHlwZTo6Q2FuY2VsbGF0aW9uOyB9CisgICAgYm9vbCBpc1RpbWVvdXQo
KSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6VGltZW91dDsgfQogCiAgICAgc3RhdGlj
IGJvb2wgY29tcGFyZShjb25zdCBSZXNvdXJjZUVycm9yJiwgY29uc3QgUmVzb3VyY2VFcnJvciYp
OwogCisgICAgdm9pZCBzZXRUeXBlKFR5cGUpOworICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZTsgfQorCiBwcm90ZWN0ZWQ6Ci0gICAgUmVzb3VyY2VFcnJvckJhc2UoKQotICAg
ICAgICA6IG1fZXJyb3JDb2RlKDApCi0gICAgICAgICwgbV9pc051bGwodHJ1ZSkKLSAgICAgICAg
LCBtX2lzQ2FuY2VsbGF0aW9uKGZhbHNlKQotICAgICAgICAsIG1faXNUaW1lb3V0KGZhbHNlKQot
ICAgIHsKLSAgICB9CisgICAgUmVzb3VyY2VFcnJvckJhc2UoVHlwZSB0eXBlKSA6IG1fdHlwZSh0
eXBlKSB7IH0KIAotICAgIFJlc291cmNlRXJyb3JCYXNlKGNvbnN0IFN0cmluZyYgZG9tYWluLCBp
bnQgZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxp
emVkRGVzY3JpcHRpb24pCisgICAgUmVzb3VyY2VFcnJvckJhc2UoY29uc3QgU3RyaW5nJiBkb21h
aW4sIGludCBlcnJvckNvZGUsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBs
b2NhbGl6ZWREZXNjcmlwdGlvbiwgVHlwZSB0eXBlKQogICAgICAgICA6IG1fZG9tYWluKGRvbWFp
bikKICAgICAgICAgLCBtX2ZhaWxpbmdVUkwoZmFpbGluZ1VSTCkKICAgICAgICAgLCBtX2xvY2Fs
aXplZERlc2NyaXB0aW9uKGxvY2FsaXplZERlc2NyaXB0aW9uKQogICAgICAgICAsIG1fZXJyb3JD
b2RlKGVycm9yQ29kZSkKLSAgICAgICAgLCBtX2lzTnVsbChmYWxzZSkKLSAgICAgICAgLCBtX2lz
Q2FuY2VsbGF0aW9uKGZhbHNlKQotICAgICAgICAsIG1faXNUaW1lb3V0KGZhbHNlKQorICAgICAg
ICAsIG1fdHlwZSh0eXBlKQogICAgIHsKICAgICB9CiAKQEAgLTg0LDEwICs4Myw4IEBAIHByb3Rl
Y3RlZDoKICAgICBTdHJpbmcgbV9kb21haW47CiAgICAgVVJMIG1fZmFpbGluZ1VSTDsKICAgICBT
dHJpbmcgbV9sb2NhbGl6ZWREZXNjcmlwdGlvbjsKLSAgICBpbnQgbV9lcnJvckNvZGU7Ci0gICAg
Ym9vbCBtX2lzTnVsbCA6IDE7Ci0gICAgYm9vbCBtX2lzQ2FuY2VsbGF0aW9uIDogMTsKLSAgICBi
b29sIG1faXNUaW1lb3V0IDogMTsKKyAgICBpbnQgbV9lcnJvckNvZGUgeyAwIH07CisgICAgVHlw
ZSBtX3R5cGUgeyBUeXBlOjpHZW5lcmFsIH07CiAKIHByaXZhdGU6CiAgICAgY29uc3QgUmVzb3Vy
Y2VFcnJvciYgYXNSZXNvdXJjZUVycm9yKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvci5oCmluZGV4IDJjYTA0ZWVmMjgyNjlm
OTgyYWZjZjA2YjdiOWJlMTIwN2U4ODJiNWUuLjM1NWZhODU5ZTkwYmVlZDNmZDI2OTZkZjUzODhj
YjM1YTg0YWJhZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VFcnJvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VFcnJvci5oCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKICNwcmFnbWEgb25jZQpAQCAtNDQsMTMgKzQ0LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgUmVzb3VyY2VFcnJvciA6IHB1YmxpYyBSZXNvdXJjZUVycm9yQmFzZSB7CiBwdWJs
aWM6Ci0gICAgUmVzb3VyY2VFcnJvcigpCi0gICAgICAgIDogbV9kYXRhSXNVcFRvRGF0ZSh0cnVl
KQorICAgIFJlc291cmNlRXJyb3IoVHlwZSB0eXBlID0gVHlwZTo6TnVsbCkKKyAgICAgICAgOiBS
ZXNvdXJjZUVycm9yQmFzZSh0eXBlKQorICAgICAgICAsIG1fZGF0YUlzVXBUb0RhdGUodHJ1ZSkK
ICAgICB7CiAgICAgfQogCi0gICAgUmVzb3VyY2VFcnJvcihjb25zdCBTdHJpbmcmIGRvbWFpbiwg
aW50IGVycm9yQ29kZSwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2Fs
aXplZERlc2NyaXB0aW9uKQotICAgICAgICA6IFJlc291cmNlRXJyb3JCYXNlKGRvbWFpbiwgZXJy
b3JDb2RlLCBmYWlsaW5nVVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlvbikKKyAgICBSZXNvdXJjZUVy
cm9yKGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZhaWxp
bmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24sIFR5cGUgdHlwZSA9IFR5
cGU6OkdlbmVyYWwpCisgICAgICAgIDogUmVzb3VyY2VFcnJvckJhc2UoZG9tYWluLCBlcnJvckNv
ZGUsIGZhaWxpbmdVUkwsIGxvY2FsaXplZERlc2NyaXB0aW9uLCB0eXBlKQogICAgICAgICAsIG1f
ZGF0YUlzVXBUb0RhdGUodHJ1ZSkKICAgICB7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCmluZGV4IGQ1YjRl
ZTQ3ZTM5ZDg2NWNhNDgyNTU1Y2VjOWNjMzI3ZDhhNTUzZGMuLmFmYzAyOTQ4ODg1NjhjYzEzODAz
NDllOTU5M2Q1YmJiYjY2N2ZiYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKQEAgLTIwLDcgKzIwLDcgQEAKICAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgpAQCAtNDAsMTcgKzQwLDE3
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3Io
Q0ZFcnJvclJlZiBjZkVycm9yKQotICAgIDogbV9kYXRhSXNVcFRvRGF0ZShmYWxzZSkKKyAgICA6
IFJlc291cmNlRXJyb3JCYXNlKFR5cGU6Ok51bGwpCisgICAgLCBtX2RhdGFJc1VwVG9EYXRlKGZh
bHNlKQogICAgICwgbV9wbGF0Zm9ybUVycm9yKGNmRXJyb3IpCiB7Ci0gICAgbV9pc051bGwgPSAh
Y2ZFcnJvcjsKLSAgICBpZiAoIW1faXNOdWxsKQotICAgICAgICBtX2lzVGltZW91dCA9IENGRXJy
b3JHZXRDb2RlKG1fcGxhdGZvcm1FcnJvci5nZXQoKSkgPT0ga0NGVVJMRXJyb3JUaW1lZE91dDsK
KyAgICBpZiAoY2ZFcnJvcikKKyAgICAgICAgc2V0VHlwZSgoQ0ZFcnJvckdldENvZGUobV9wbGF0
Zm9ybUVycm9yLmdldCgpKSA9PSBrQ0ZVUkxFcnJvclRpbWVkT3V0KSA/IFR5cGU6OlRpbWVvdXQg
OiBUeXBlOjpHZW5lcmFsKTsKIH0KIAogI2lmIFBMQVRGT1JNKFdJTikKLVJlc291cmNlRXJyb3I6
OlJlc291cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBkb21haW4sIGludCBlcnJvckNvZGUsIGNvbnN0
IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlvbiwgQ0ZE
YXRhUmVmIGNlcnRpZmljYXRlKQotICAgIDogUmVzb3VyY2VFcnJvckJhc2UoZG9tYWluLCBlcnJv
ckNvZGUsIGZhaWxpbmdVUkwsIGxvY2FsaXplZERlc2NyaXB0aW9uKQorUmVzb3VyY2VFcnJvcjo6
UmVzb3VyY2VFcnJvcihjb25zdCBTdHJpbmcmIGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29uc3Qg
VVJMJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uLCBDRkRh
dGFSZWYgY2VydGlmaWNhdGUsIFR5cGUgdHlwZSkKKyAgICA6IFJlc291cmNlRXJyb3JCYXNlKGRv
bWFpbiwgZXJyb3JDb2RlLCBmYWlsaW5nVVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlvbiwgdHlwZSkK
ICAgICAsIG1fZGF0YUlzVXBUb0RhdGUodHJ1ZSkKICAgICAsIG1fY2VydGlmaWNhdGUoY2VydGlm
aWNhdGUpCiB7CkBAIC02MCw3ICs2MCw3IEBAIFBDQ0VSVF9DT05URVhUIFJlc291cmNlRXJyb3I6
OmNlcnRpZmljYXRlKCkgY29uc3QKIHsKICAgICBpZiAoIW1fY2VydGlmaWNhdGUpCiAgICAgICAg
IHJldHVybiAwOwotICAgIAorCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8UENDRVJUX0NP
TlRFWFQ+KENGRGF0YUdldEJ5dGVQdHIobV9jZXJ0aWZpY2F0ZS5nZXQoKSkpOwogfQogCkBAIC0x
MTAsNyArMTEwLDcgQEAgdm9pZCBSZXNvdXJjZUVycm9yOjpwbGF0Zm9ybUxhenlJbml0KCkKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBtX2xvY2FsaXplZERlc2NyaXB0aW9uID0g
KENGU3RyaW5nUmVmKSBDRkRpY3Rpb25hcnlHZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga0NGRXJy
b3JMb2NhbGl6ZWREZXNjcmlwdGlvbktleSk7Ci0gICAgICAgIAorCiAjaWYgUExBVEZPUk0oV0lO
KQogICAgICAgICBtX2NlcnRpZmljYXRlID0gd2tHZXRTU0xQZWVyQ2VydGlmaWNhdGVEYXRhKHVz
ZXJJbmZvLmdldCgpKTsKICNlbmRpZgpAQCAtMTM2LDcgKzEzNiw3IEBAIGJvb2wgUmVzb3VyY2VF
cnJvcjo6cGxhdGZvcm1Db21wYXJlKGNvbnN0IFJlc291cmNlRXJyb3ImIGEsIGNvbnN0IFJlc291
cmNlRXJyb3ImCiAKIENGRXJyb3JSZWYgUmVzb3VyY2VFcnJvcjo6Y2ZFcnJvcigpIGNvbnN0CiB7
Ci0gICAgaWYgKG1faXNOdWxsKSB7CisgICAgaWYgKGlzTnVsbCgpKSB7CiAgICAgICAgIEFTU0VS
VCghbV9wbGF0Zm9ybUVycm9yKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtMTU4LDcg
KzE1OCw3IEBAIENGRXJyb3JSZWYgUmVzb3VyY2VFcnJvcjo6Y2ZFcnJvcigpIGNvbnN0CiAgICAg
ICAgIGlmIChtX2NlcnRpZmljYXRlKQogICAgICAgICAgICAgd2tTZXRTU0xQZWVyQ2VydGlmaWNh
dGVEYXRhKHVzZXJJbmZvLmdldCgpLCBtX2NlcnRpZmljYXRlLmdldCgpKTsKICNlbmRpZgotICAg
ICAgICAKKwogICAgICAgICBtX3BsYXRmb3JtRXJyb3IgPSBhZG9wdENGKENGRXJyb3JDcmVhdGUo
MCwgbV9kb21haW4uY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgbV9lcnJvckNvZGUsIHVzZXJJbmZv
LmdldCgpKSk7CiAgICAgfQogCkBAIC0xNzIsOSArMTcyLDkgQEAgUmVzb3VyY2VFcnJvcjo6b3Bl
cmF0b3IgQ0ZFcnJvclJlZigpIGNvbnN0CiAKIC8vIEZJWE1FOiBPbmNlIDxyZGFyOi8vcHJvYmxl
bS81MDUwODQxPiBpcyBmaXhlZCB3ZSBjYW4gcmVtb3ZlIHRoaXMgY29uc3RydWN0b3IuCiBSZXNv
dXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKENGU3RyZWFtRXJyb3IgZXJyb3IpCisgICAgOiBSZXNv
dXJjZUVycm9yQmFzZShUeXBlOjpHZW5lcmFsKQogICAgIDogbV9kYXRhSXNVcFRvRGF0ZSh0cnVl
KQogewotICAgIG1faXNOdWxsID0gZmFsc2U7CiAgICAgbV9lcnJvckNvZGUgPSBlcnJvci5lcnJv
cjsKIAogICAgIHN3aXRjaChlcnJvci5kb21haW4pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5oCmluZGV4IGVlYzQ2MmQ1ZjZm
YzdhNGM4MDJlZGNkMmIyNzkzYTBlMjc0Yzk0Y2MuLjY4MmUxNTc5ODg3Njk0M2YzOWEyMzE3MDc2
YzllZDQ2MDIyYTg2OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9SZXNvdXJjZUVycm9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL1Jlc291cmNlRXJyb3IuaApAQCAtMjAsNyArMjAsNyBAQAogICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCiAjaWZuZGVmIFJlc291cmNlRXJyb3JfaApAQCAtNDAsMTIgKzQwLDE1IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3IgOiBwdWJsaWMgUmVzb3VyY2VF
cnJvckJhc2UKIHsKIHB1YmxpYzoKLSAgICBSZXNvdXJjZUVycm9yKCkgOiBtX3NzbEVycm9ycygw
KQorICAgIFJlc291cmNlRXJyb3IoVHlwZSB0eXBlID0gVHlwZTo6TnVsbCkKKyAgICAgICAgOiBS
ZXNvdXJjZUVycm9yQmFzZSh0eXBlKQorICAgICAgICAsIG1fc3NsRXJyb3JzKDApCiAgICAgewog
ICAgIH0KIAotICAgIFJlc291cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBkb21haW4sIGludCBlcnJv
ckNvZGUsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNj
cmlwdGlvbikKLSAgICAgICAgOiBSZXNvdXJjZUVycm9yQmFzZShkb21haW4sIGVycm9yQ29kZSwg
ZmFpbGluZ1VSTCwgbG9jYWxpemVkRGVzY3JpcHRpb24pLCBtX3NzbEVycm9ycygwKQorICAgIFJl
c291cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBkb21haW4sIGludCBlcnJvckNvZGUsIGNvbnN0IFVS
TCYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlvbiwgVHlwZSB0
eXBlID0gVHlwZTo6TnVsbCkKKyAgICAgICAgOiBSZXNvdXJjZUVycm9yQmFzZShkb21haW4sIGVy
cm9yQ29kZSwgZmFpbGluZ1VSTCwgbG9jYWxpemVkRGVzY3JpcHRpb24sIHR5cGUpCisgICAgICAg
ICwgbV9zc2xFcnJvcnMoMCkKICAgICB7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQppbmRleCA1MjA3
OWJkMWY1MzVkZmJjOTIyNjEzMTFhNTFkYzM3NDVhMjE4YWMyLi40NmUwMzQ2NDM1MjIzYTYxMzI3
YTgwMDI4OTI4OGQyYTMxODkxZDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0KQEAgLTE5MywxNyArMTkzLDE2
IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNFcnJvcj4gY3JlYXRlTlNFcnJvckZyb21SZXNvdXJjZUVy
cm9yQmFzZShjb25zdCBSZXNvdXJjZUVycm9yCiAjaWYgVVNFKENGTkVUV09SSykKIAogUmVzb3Vy
Y2VFcnJvcjo6UmVzb3VyY2VFcnJvcihOU0Vycm9yICplcnJvcikKLSAgICA6IG1fZGF0YUlzVXBU
b0RhdGUoZmFsc2UpCisgICAgLCBtX2RhdGFJc1VwVG9EYXRlKGZhbHNlKQogICAgICwgbV9wbGF0
Zm9ybUVycm9yKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZFcnJvclJlZj4oZXJyb3IpKQogewotICAgIG1f
aXNOdWxsID0gIWVycm9yOwotICAgIGlmICghbV9pc051bGwpCi0gICAgICAgIG1faXNUaW1lb3V0
ID0gW2Vycm9yIGNvZGVdID09IE5TVVJMRXJyb3JUaW1lZE91dDsKKyAgICBpZiAoZXJyb3IpCisg
ICAgICAgIHNldFR5cGUoKFtlcnJvciBjb2RlXSA9PSBOU1VSTEVycm9yVGltZWRPdXQpID8gVHlw
ZTo6VGltZW91dCA6IFR5cGU6OkdlbmVyYWwpOwogfQogCiBOU0Vycm9yICpSZXNvdXJjZUVycm9y
Ojpuc0Vycm9yKCkgY29uc3QKIHsKLSAgICBpZiAobV9pc051bGwpIHsKKyAgICBpZiAoaXNOdWxs
KCkpIHsKICAgICAgICAgQVNTRVJUKCFtX3BsYXRmb3JtRXJyb3IpOwogICAgICAgICByZXR1cm4g
bmlsOwogICAgIH0KQEAgLTIzOCwyMSArMjM3LDE3IEBAIFJlc291cmNlRXJyb3I6Om9wZXJhdG9y
IE5TRXJyb3IgKigpIGNvbnN0CiAjZWxzZQogCiBSZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9y
KE5TRXJyb3IgKm5zRXJyb3IpCi0gICAgOiBtX2RhdGFJc1VwVG9EYXRlKGZhbHNlKQorICAgIDog
UmVzb3VyY2VFcnJvckJhc2UoVHlwZTo6TnVsbCkKKyAgICAsIG1fZGF0YUlzVXBUb0RhdGUoZmFs
c2UpCiAgICAgLCBtX3BsYXRmb3JtRXJyb3IobnNFcnJvcikKIHsKLSAgICBtX2lzTnVsbCA9ICFu
c0Vycm9yOwotICAgIGlmICghbV9pc051bGwpCi0gICAgICAgIG1faXNUaW1lb3V0ID0gW21fcGxh
dGZvcm1FcnJvci5nZXQoKSBjb2RlXSA9PSBOU1VSTEVycm9yVGltZWRPdXQ7CisgICAgaWYgKG5z
RXJyb3IpCisgICAgICAgIHNldFR5cGUoKFttX3BsYXRmb3JtRXJyb3IuZ2V0KCkgY29kZV0gPT0g
TlNVUkxFcnJvclRpbWVkT3V0KSA/IFR5cGU6OlRpbWVvdXQgOiBUeXBlOjpHZW5lcmFsKTsKIH0K
IAogUmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcihDRkVycm9yUmVmIGNmRXJyb3IpCi0gICAg
OiBtX2RhdGFJc1VwVG9EYXRlKGZhbHNlKQotICAgICwgbV9wbGF0Zm9ybUVycm9yKChOU0Vycm9y
ICopY2ZFcnJvcikKKyAgICA6IFJlc291cmNlRXJyb3IoKE5TRXJyb3IgKiljZkVycm9yKQogewot
ICAgIG1faXNOdWxsID0gIWNmRXJyb3I7Ci0gICAgaWYgKCFtX2lzTnVsbCkKLSAgICAgICAgbV9p
c1RpbWVvdXQgPSBbbV9wbGF0Zm9ybUVycm9yLmdldCgpIGNvZGVdID09IE5TVVJMRXJyb3JUaW1l
ZE91dDsKIH0KIAogdm9pZCBSZXNvdXJjZUVycm9yOjpwbGF0Zm9ybUxhenlJbml0KCkKQEAgLTI4
Nyw3ICsyODIsNyBAQCB2b2lkIFJlc291cmNlRXJyb3I6OmRvUGxhdGZvcm1Jc29sYXRlZENvcHko
Y29uc3QgUmVzb3VyY2VFcnJvciYpCiAKIE5TRXJyb3IgKlJlc291cmNlRXJyb3I6Om5zRXJyb3Io
KSBjb25zdAogewotICAgIGlmIChtX2lzTnVsbCkgeworICAgIGlmIChpc051bGwoKSkgewogICAg
ICAgICBBU1NFUlQoIW1fcGxhdGZvcm1FcnJvcik7CiAgICAgICAgIHJldHVybiBuaWw7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlRXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJj
ZUVycm9yLmgKaW5kZXggYzRkN2FkYTdmMThjZjY1ZDc4MzcwZWZjZDNhYWIyODcyNzJjN2FhMC4u
YmYwMjkxODQ4MjBmYmU1ZDQwNjVmNjA0N2EyMjVjYjhkYWRlNDdiNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvci5oCkBAIC00
MSwxNCArNDEsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvciA6
IHB1YmxpYyBSZXNvdXJjZUVycm9yQmFzZQogewogcHVibGljOgotICAgIFJlc291cmNlRXJyb3Io
Y29uc3QgU3RyaW5nJiBkb21haW4sIGludCBlcnJvckNvZGUsIGNvbnN0IFVSTCYgZmFpbGluZ1VS
TCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlvbikKLSAgICAgICAgOiBSZXNvdXJj
ZUVycm9yQmFzZShkb21haW4sIGVycm9yQ29kZSwgZmFpbGluZ1VSTCwgbG9jYWxpemVkRGVzY3Jp
cHRpb24pCisgICAgUmVzb3VyY2VFcnJvcihUeXBlIHR5cGUgPSBUeXBlOjpOdWxsKQorICAgICAg
ICA6IFJlc291cmNlRXJyb3JCYXNlKHR5cGUpCiAgICAgICAgICwgbV90bHNFcnJvcnMoMCkKICAg
ICB7CiAgICAgfQogCi0gICAgUmVzb3VyY2VFcnJvcigpCi0gICAgICAgIDogbV90bHNFcnJvcnMo
MCkKKyAgICBSZXNvdXJjZUVycm9yKGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQgZXJyb3JDb2Rl
LCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRp
b24sIFR5cGUgdHlwZSA9IFR5cGU6OkdlbmVyYWwpCisgICAgICAgIDogUmVzb3VyY2VFcnJvckJh
c2UoZG9tYWluLCBlcnJvckNvZGUsIGZhaWxpbmdVUkwsIGxvY2FsaXplZERlc2NyaXB0aW9uLCB0
eXBlKQorICAgICAgICAsIG1fdGxzRXJyb3JzKDApCiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3Vw
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9y
U291cC5jcHAKaW5kZXggZGI2ZmQ5NWQ2MjRjMjk4MzhhOTUwZWQ5ZjJlMGU1YzAyNjliN2EzOC4u
ZWU0MzYyNzY1ZjFjNTIwZWQ4NDI2MGY1MzRjNjY3MTE3NmI4NjBmNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNv
dXAuY3BwCkBAIC05Miw5ICs5Miw3IEBAIFJlc291cmNlRXJyb3IgUmVzb3VyY2VFcnJvcjo6dGlt
ZW91dEVycm9yKGNvbnN0IFVSTCYgZmFpbGluZ1VSTCkKICAgICAvLyBVc2UgdGhlIHNhbWUgdmFs
dWUgYXMgaW4gTlNVUkxFcnJvci5oCiAgICAgc3RhdGljIGNvbnN0IGludCB0aW1lb3V0RXJyb3Ig
PSAtMTAwMTsKICAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgIGVycm9yRG9tYWluID0gIldl
YktpdE5ldHdvcmtFcnJvciI7Ci0gICAgUmVzb3VyY2VFcnJvciBlcnJvciA9IFJlc291cmNlRXJy
b3IoZXJyb3JEb21haW4sIHRpbWVvdXRFcnJvciwgZmFpbGluZ1VSTCwgIlJlcXVlc3QgdGltZWQg
b3V0Iik7Ci0gICAgZXJyb3Iuc2V0SXNUaW1lb3V0KHRydWUpOwotICAgIHJldHVybiBlcnJvcjsK
KyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbiwgdGltZW91dEVycm9yLCBmYWls
aW5nVVJMLCAiUmVxdWVzdCB0aW1lZCBvdXQiLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpUaW1lb3V0
KTsKIH0KIAogdm9pZCBSZXNvdXJjZUVycm9yOjpkb1BsYXRmb3JtSXNvbGF0ZWRDb3B5KGNvbnN0
IFJlc291cmNlRXJyb3ImIG90aGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcAppbmRleCAzZDBhNTRiYjYxMzc1
NjU5NzE4Njk2NDAzYjkzZGZkYTJhNGUyZGUzLi5hNTU1Y2E5MWI1MjdmYjk2ZGQyODM3ZThkMGMw
ZmQ4MjY4YjBiNzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvc291cC9XZWJD
b3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvc291
cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcApAQCAtMTg2LDI3ICsxODYsMjQgQEAgYm9v
bCBBcmd1bWVudENvZGVyPENlcnRpZmljYXRlSW5mbz46OmRlY29kZShBcmd1bWVudERlY29kZXIm
IGRlY29kZXIsIENlcnRpZmljYXQKIAogdm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlRXJyb3I+
OjplbmNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZXNv
dXJjZUVycm9yJiByZXNvdXJjZUVycm9yKQogewotICAgIGJvb2wgZXJyb3JJc051bGwgPSByZXNv
dXJjZUVycm9yLmlzTnVsbCgpOwotICAgIGVuY29kZXIgPDwgZXJyb3JJc051bGw7Ci0gICAgaWYg
KGVycm9ySXNOdWxsKQorICAgIGVuY29kZXIuZW5jb2RlRW51bShyZXNvdXJjZUVycm9yLnR5cGUo
KSk7CisgICAgaWYgKHJlc291cmNlRXJyb3IuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGVuY29kZXIgPDwgcmVzb3VyY2VFcnJvci5kb21haW4oKTsKICAgICBlbmNvZGVyIDw8IHJl
c291cmNlRXJyb3IuZXJyb3JDb2RlKCk7CiAgICAgZW5jb2RlciA8PCByZXNvdXJjZUVycm9yLmZh
aWxpbmdVUkwoKS5zdHJpbmcoKTsKICAgICBlbmNvZGVyIDw8IHJlc291cmNlRXJyb3IubG9jYWxp
emVkRGVzY3JpcHRpb24oKTsKLSAgICBlbmNvZGVyIDw8IHJlc291cmNlRXJyb3IuaXNDYW5jZWxs
YXRpb24oKTsKLSAgICBlbmNvZGVyIDw8IHJlc291cmNlRXJyb3IuaXNUaW1lb3V0KCk7CiAKICAg
ICBlbmNvZGVyIDw8IENlcnRpZmljYXRlSW5mbyhyZXNvdXJjZUVycm9yKTsKIH0KIAogYm9vbCBB
cmd1bWVudENvZGVyPFJlc291cmNlRXJyb3I+OjpkZWNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnRE
ZWNvZGVyJiBkZWNvZGVyLCBSZXNvdXJjZUVycm9yJiByZXNvdXJjZUVycm9yKQogewotICAgIGJv
b2wgZXJyb3JJc051bGw7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShlcnJvcklzTnVsbCkpCisg
ICAgUmVzb3VyY2VFcnJvckJhc2U6OlR5cGUgZXJyb3JUeXBlOworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGVFbnVtKGVycm9yVHlwZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoZXJy
b3JJc051bGwpIHsKKyAgICBpZiAoZXJyb3JUeXBlID09IFJlc291cmNlRXJyb3JCYXNlOjpUeXBl
OjpOdWxsKSB7CiAgICAgICAgIHJlc291cmNlRXJyb3IgPSBSZXNvdXJjZUVycm9yKCk7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTIyNywxNyArMjI0LDggQEAgYm9vbCBBcmd1bWVu
dENvZGVyPFJlc291cmNlRXJyb3I+OjpkZWNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnREZWNvZGVy
JiBkZWNvZGVyLAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUobG9jYWxpemVkRGVzY3JpcHRpb24p
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBib29sIGlzQ2FuY2VsbGF0aW9uOwotICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoaXNDYW5jZWxsYXRpb24pKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBib29sIGlzVGltZW91dDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzVGlt
ZW91dCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIHJlc291cmNlRXJyb3IgPSBSZXNv
dXJjZUVycm9yKGRvbWFpbiwgZXJyb3JDb2RlLCBVUkwoVVJMKCksIGZhaWxpbmdVUkwpLCBsb2Nh
bGl6ZWREZXNjcmlwdGlvbik7Ci0gICAgcmVzb3VyY2VFcnJvci5zZXRJc0NhbmNlbGxhdGlvbihp
c0NhbmNlbGxhdGlvbik7Ci0gICAgcmVzb3VyY2VFcnJvci5zZXRJc1RpbWVvdXQoaXNUaW1lb3V0
KTsKKyAgICByZXNvdXJjZUVycm9yLnNldFR5cGUoZXJyb3JUeXBlKTsKIAogICAgIENlcnRpZmlj
YXRlSW5mbyBjZXJ0aWZpY2F0ZUluZm87CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjZXJ0aWZp
Y2F0ZUluZm8pKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280698</attachid>
            <date>2016-06-07 05:16:14 -0700</date>
            <delta_ts>2016-06-08 06:20:02 -0700</delta_ts>
            <desc>Win build fix again</desc>
            <filename>bug-158299-20160607141738.patch</filename>
            <type>text/plain</type>
            <size>67492</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDlkOTFiOTYzYzZmN2Zl
ZjQwZDBkOTg5Y2ZjNmYyNmIyNGQyOWY4NS4uY2ZkYjcxY2U0NjkxYTQwOWJkNGFiN2U4ZDk0ZDgx
ODFhNzE1MWZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNSBAQAorMjAxNi0wNi0wNiAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAgIEludHJv
ZHVjZSBhIFJlc291cmNlRXJyb3JCYXNlIHR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODI5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVjaW5nIGFuIGVudW0gdHlwZSBmb3IgUmVzb3Vy
Y2VFcnJvckJhc2UuCisgICAgICAgIEluIG1vc3QgY2FzZXMsIHRoZSB0eXBlIGlzIHNldCBhdCBj
b25zdHJ1Y3Rpb24gdGltZS4KKyAgICAgICAgQnkgZGVmYXVsdCwgY29uc3RydWN0b3Igd2l0aCBu
byBwYXJhbWV0ZXJzIHdpbGwgc2V0IHR5cGUgdG8gTnVsbC4KKyAgICAgICAgQ29uc3RydWN0b3Ig
d2l0aCBwYXJhbWV0ZXJzIHdpbGwgc2V0IHR5cGUgdG8gR2VuZXJhbC4KKworICAgICAgICBSZW1v
dmVkIGJvb2xlYW4gc3RhdGUgZXJyb3IgZmllbGRzLgorCisgICAgICAgIEludHJvZHVjZWQgYSB0
eXBlIHNldHRlci4gSXQgc2hvdWxkIG9ubHkgYmUgdXNlZCB0byAgbWFrZSB0aGUgdHlwZQorICAg
ICAgICBtb3JlIHByZWNpc2UgKHdoZW4gdHlwZSBpcyBOdWxsIG9yIEdlbmVyYWwpLgorCisgICAg
ICAgIFVwZGF0aW5nIHJlbGF0ZWQgY2FsbGluZyBjb2RlLgorICAgICAgICBNYWRlIHNvbWUgY29k
ZSBjbGVhbmluZyAodHJhaWxpbmcgd2hpdGVzcGFjZSByZW1vdmFsKS4KKworICAgICAgICBObyBj
aGFuZ2Ugb2YgYmVoYXZpb3IuCisKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
OiBSZW1vdmluZyB0cmFpbGluZyB3aGl0ZXNwYWNlcy4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyOjp+RG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI6OnNldFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnNl
dE1haW5Eb2N1bWVudEVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpz
dG9wTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpjb250aW51ZUFmdGVy
Q29udGVudFBvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c3RvcExv
YWRpbmdGb3JQb2xpY3lDaGFuZ2UpOiBVc2luZyBSZXNvdXJjZUVycm9yIHR5cGUgc2V0dGVyLgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNvbW1pdERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnNldHVwRm9yUmVwbGFjZSk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudExvYWRlcjo6aXNMb2FkaW5nSW5BUElTZW5zZSk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudExvYWRlcjo6bWF5YmVDcmVhdGVBcmNoaXZlKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjphZGRBbGxBcmNoaXZlUmVzb3VyY2VzKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjphZGRBcmNoaXZlUmVzb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudExvYWRlcjo6c3VicmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI6OnN1YnJlc291cmNlTG9hZGVyRmluaXNoZWRMb2FkaW5nT25lUGFydCk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Z2V0SWNvbkRhdGFGb3JJY29uVVJMKToKKyAgICAg
ICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y2FuY2VsKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKTogUmVtb3Zp
bmcgdHJhaWxpbmcgd2hpdGVzcGFjZXMuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVh
ZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KTogRGl0dG8uCisgICAgICAgICogbG9hZGVyL0VtcHR5
Q2xpZW50cy5oOiBTdHlsZSByZWZhY3RvcmluZy4KKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwOiBSZW1vdmluZyB0cmFpbGluZyB3aGl0ZXNwYWNlcy4KKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyOjpzdWJtaXRGb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
OjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjbG9zZVVSTCk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGlkRXhwbGljaXRPcGVuKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6bG9hZFVSTEludG9DaGlsZEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Ojpsb2FkQXJjaGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZEluU2Ft
ZURvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkRnJhbWVSZXF1
ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkVVJMKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpyZXBvcnRCbG9ja2VkUG9ydEZhaWxlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6cmVsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzdG9wQWxsTG9h
ZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZnJhbWVIYXNMb2FkZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnNldERvY3VtZW50TG9hZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzZXRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpjbGllbnRSZWRpcmVjdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpjbG9zZU9sZERhdGFTb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
OjpwcmVwYXJlRm9yQ2FjaGVkUGFnZVJlc3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXI6Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnN1YnJlc291cmNl
Q2FjaGVQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNoZWNrTG9hZENv
bXBsZXRlRm9yVGhpc0ZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjb250
aW51ZUxvYWRBZnRlcldpbGxTdWJtaXRGb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpjaGVja0xvYWRDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
bG9hZFBvc3RSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpyZWNl
aXZlZE1haW5SZXNvdXJjZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpk
aXNwYXRjaEJlZm9yZVVubG9hZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Ojpjb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXI6OmxvYWRTYW1lRG9jdW1lbnRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpsb2FkRGlmZmVyZW50RG9jdW1lbnRJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyOjpjYW5jZWxsZWRFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6YmxvY2tlZEVycm9yKTogVXNpbmcgUmVzb3VyY2VFcnJvciB0eXBlIHNldHRlci4KKyAg
ICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpjYW5jZWwpOiBV
c2luZyBuZXcgUmVzb3VyY2VFcnJvciBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
RXJyb3JCYXNlOjppc29sYXRlZENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ckJhc2U6OnNldFR5cGUpOiBUbyBiZSB1c2VkIHRvIG1ha2UgdGhlIGVycm9yIHR5cGUgbW9yZSBw
cmVjaXNlLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvckJhc2U6OmNvbXBhcmUpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlRXJyb3JCYXNlOjppc051bGwpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VFcnJvckJhc2U6OmlzQ2FuY2VsbGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlRXJyb3JCYXNlOjppc1RpbWVvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VF
cnJvckJhc2U6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvckJhc2U6OlJl
c291cmNlRXJyb3JCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3JCYXNlOjpk
b21haW4pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VF
cnJvci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcik6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpjZXJ0aWZpY2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yOjpwbGF0Zm9ybUxhenlJbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlRXJyb3I6OmNmRXJyb3IpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNv
dXJjZUVycm9yLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVy
cm9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpuc0Vycm9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlRXJyb3I6OnBsYXRmb3JtTGF6eUluaXQpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yLmg6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VF
cnJvcjo6dGltZW91dEVycm9yKToKKwogMjAxNi0wNi0wNiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0
LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIw
MTczNS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwppbmRleCA1NDM0YzUyNTY1Y2NlMTg0YmRlMGI0YWRjYzBjMDcyYmQ5ZDNh
YWMwLi42YTgwNGYyNmZhMGJkMTMwNTYwYWM1YzM1MTZkMThmNzY4MzlmMDNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMTYtMDYtMDYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFi
bGV0QGNyZi5jYW5vbi5mcj4KKworICAgICAgICBJbnRyb2R1Y2UgYSBSZXNvdXJjZUVycm9yQmFz
ZSB0eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTgyOTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFNoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwOgorICAgICAgICAoSVBD
OjpBcmd1bWVudENvZGVyPFJlc291cmNlRXJyb3I+OjplbmNvZGVQbGF0Zm9ybURhdGEpOgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlc291cmNlRXJyb3I+OjpkZWNvZGVQbGF0Zm9ybURh
dGEpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFByb3RlY3Rpb25TcGFjZT46OmVuY29k
ZVBsYXRmb3JtRGF0YSk6IERlbGV0ZWQuCisKIDIwMTYtMDYtMDYgIEFudG9pbmUgUXVpbnQgIDxn
cmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBQb3NpdGlvbiBvZiBXZWJHTCA8Y2FudmFzPiBv
biBpT1MgaXMgaW5jb3JyZWN0IHdpdGggQ1NTIGJvcmRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IGIzZWQxOGJmNDY5NDMzOGM5YTQyNTNlNDZmMGJjODgx
MTc1NDg1YzkuLmI2YzNiMDE2NjcxMDA1MDAxNTNjNTA3MjVjYWM4MDdlM2QzMDdiYzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtNywxMyArNywxMyBAQAog
ICogYXJlIG1ldDoKICAqCiAgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
ICAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAogICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgogICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5j
LiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgogICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uIAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KICAqCiAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQogICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRApAQCAtMTY5LDcgKzE2OSw3IEBAIERvY3VtZW50TG9hZGVyOjp+RG9jdW1lbnRMb2FkZXIo
KQogICAgIGlmIChtX2ljb25EYXRhQ2FsbGJhY2spCiAgICAgICAgIG1faWNvbkRhdGFDYWxsYmFj
ay0+aW52YWxpZGF0ZSgpOwogICAgIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPmNsZWFyRG9jdW1l
bnRMb2FkZXIoKTsKLSAgICAKKwogICAgIGNsZWFyTWFpblJlc291cmNlKCk7CiB9CiAKQEAgLTIz
Miw3ICsyMzIsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzZXRSZXF1ZXN0KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxKQogICAgICAgICBtX2NvbW1pdHRlZCA9IGZhbHNlOwogCiAgICAgLy8g
V2Ugc2hvdWxkIG5ldmVyIGJlIGdldHRpbmcgYSByZWRpcmVjdCBjYWxsYmFjayBhZnRlciB0aGUg
ZGF0YQotICAgIC8vIHNvdXJjZSBpcyBjb21taXR0ZWQsIGV4Y2VwdCBpbiB0aGUgdW5yZWFjaGFi
bGUgVVJMIGNhc2UuIEl0IAorICAgIC8vIHNvdXJjZSBpcyBjb21taXR0ZWQsIGV4Y2VwdCBpbiB0
aGUgdW5yZWFjaGFibGUgVVJMIGNhc2UuIEl0CiAgICAgLy8gd291bGQgYmUgYSBXZWJGb3VuZGF0
aW9uIGJ1ZyBpZiBpdCBzZW50IGEgcmVkaXJlY3QgY2FsbGJhY2sgYWZ0ZXIgY29tbWl0LgogICAg
IEFTU0VSVCghbV9jb21taXR0ZWQpOwogCkBAIC0yNDEsNyArMjQxLDcgQEAgdm9pZCBEb2N1bWVu
dExvYWRlcjo6c2V0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcSkKIAogdm9pZCBE
b2N1bWVudExvYWRlcjo6c2V0TWFpbkRvY3VtZW50RXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYg
ZXJyb3IpCiB7Ci0gICAgbV9tYWluRG9jdW1lbnRFcnJvciA9IGVycm9yOyAgICAKKyAgICBtX21h
aW5Eb2N1bWVudEVycm9yID0gZXJyb3I7CiAgICAgZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkuc2V0
TWFpbkRvY3VtZW50RXJyb3IodGhpcywgZXJyb3IpOwogfQogCkBAIC0yNzAsOCArMjcwLDggQEAg
dm9pZCBEb2N1bWVudExvYWRlcjo6bWFpblJlY2VpdmVkRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJv
ciYgZXJyb3IpCiB9CiAKIC8vIENhbmNlbHMgdGhlIGRhdGEgc291cmNlJ3MgcGVuZGluZyBsb2Fk
cy4gIENvbmNlcHR1YWxseSwgYSBkYXRhIHNvdXJjZSBvbmx5IGxvYWRzCi0vLyBvbmUgZG9jdW1l
bnQgYXQgYSB0aW1lLCBidXQgb25lIGRvY3VtZW50IG1heSBoYXZlIG1hbnkgcmVsYXRlZCByZXNv
dXJjZXMuIAotLy8gc3RvcExvYWRpbmcgd2lsbCBzdG9wIGFsbCBsb2FkcyBpbml0aWF0ZWQgYnkg
dGhlIGRhdGEgc291cmNlLCAKKy8vIG9uZSBkb2N1bWVudCBhdCBhIHRpbWUsIGJ1dCBvbmUgZG9j
dW1lbnQgbWF5IGhhdmUgbWFueSByZWxhdGVkIHJlc291cmNlcy4KKy8vIHN0b3BMb2FkaW5nIHdp
bGwgc3RvcCBhbGwgbG9hZHMgaW5pdGlhdGVkIGJ5IHRoZSBkYXRhIHNvdXJjZSwKIC8vIGJ1dCBu
b3QgbG9hZHMgaW5pdGlhdGVkIGJ5IGNoaWxkIGZyYW1lcycgZGF0YSBzb3VyY2VzIC0tIHRoYXQn
cyB0aGUgV2ViRnJhbWUncyBqb2IuCiB2b2lkIERvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGluZygp
CiB7CkBAIC0yOTQsNyArMjk0LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3RvcExvYWRpbmco
KQogICAgICAgICAvLyBBdHRlbXB0IHRvIHN0b3AgdGhlIGZyYW1lIGlmIHRoZSBkb2N1bWVudCBs
b2FkZXIgaXMgbG9hZGluZywgb3IgaWYgaXQgaXMgZG9uZSBsb2FkaW5nIGJ1dAogICAgICAgICAv
LyBzdGlsbCAgcGFyc2luZy4gRmFpbHVyZSB0byBkbyBzbyBjYW4gY2F1c2UgYSB3b3JsZCBsZWFr
LgogICAgICAgICBEb2N1bWVudCogZG9jID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKLSAgICAgICAg
CisKICAgICAgICAgaWYgKGxvYWRpbmcgfHwgZG9jLT5wYXJzaW5nKCkpCiAgICAgICAgICAgICBt
X2ZyYW1lLT5sb2FkZXIoKS5zdG9wTG9hZGluZyhVbmxvYWRFdmVudFBvbGljeU5vbmUpOwogICAg
IH0KQEAgLTMwNCwxOSArMzA0LDE5IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0b3BMb2FkaW5n
KCkKIAogICAgIC8vIEFwcGNhY2hlIHVzZXMgUmVzb3VyY2VIYW5kbGUgZGlyZWN0bHksIERvY3Vt
ZW50TG9hZGVyIGRvZXNuJ3QgY291bnQgdGhlc2UgbG9hZHMuCiAgICAgbV9hcHBsaWNhdGlvbkNh
Y2hlSG9zdC0+c3RvcExvYWRpbmdJbkZyYW1lKG1fZnJhbWUpOwotICAgIAorCiAjaWYgRU5BQkxF
KFdFQl9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCiAgICAgY2xlYXJBcmNoaXZlUmVzb3VyY2Vz
KCk7CiAjZW5kaWYKIAogICAgIGlmICghbG9hZGluZykgewotICAgICAgICAvLyBJZiBzb21ldGhp
bmcgYWJvdmUgcmVzdGFydGVkIGxvYWRpbmcgd2UgbWlnaHQgcnVuIGludG8gbXlzdGVyaW91cyBj
cmFzaGVzIGxpa2UgCisgICAgICAgIC8vIElmIHNvbWV0aGluZyBhYm92ZSByZXN0YXJ0ZWQgbG9h
ZGluZyB3ZSBtaWdodCBydW4gaW50byBteXN0ZXJpb3VzIGNyYXNoZXMgbGlrZQogICAgICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI3NjQgYW5kIDxyZGFy
Oi8vcHJvYmxlbS85MzI4Njg0PgogICAgICAgICBBU1NFUlQoIWlzTG9hZGluZygpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIFdlIG1pZ2h0IHJ1biBpbiB0byBpbmZpbml0ZSBy
ZWN1cnNpb24gaWYgd2UncmUgc3RvcHBpbmcgbG9hZGluZyBhcyB0aGUgcmVzdWx0IG9mIAorICAg
IC8vIFdlIG1pZ2h0IHJ1biBpbiB0byBpbmZpbml0ZSByZWN1cnNpb24gaWYgd2UncmUgc3RvcHBp
bmcgbG9hZGluZyBhcyB0aGUgcmVzdWx0IG9mCiAgICAgLy8gZGV0YWNoaW5nIGZyb20gdGhlIGZy
YW1lLCBzbyBicmVhayBvdXQgb2YgdGhhdCByZWN1cnNpb24gaGVyZS4KICAgICAvLyBTZWUgPHJk
YXI6Ly9wcm9ibGVtLzk2NzM4NjY+IGZvciBtb3JlIGRldGFpbHMuCiAgICAgaWYgKG1faXNTdG9w
cGluZykKQEAgLTMyNSw3ICszMjUsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGlu
ZygpCiAgICAgbV9pc1N0b3BwaW5nID0gdHJ1ZTsKIAogICAgIEZyYW1lTG9hZGVyKiBmcmFtZUxv
YWRlciA9IERvY3VtZW50TG9hZGVyOjpmcmFtZUxvYWRlcigpOwotICAgIAorCiAgICAgaWYgKGlz
TG9hZGluZ01haW5SZXNvdXJjZSgpKSB7CiAgICAgICAgIC8vIFN0b3AgdGhlIG1haW4gcmVzb3Vy
Y2UgbG9hZGVyIGFuZCBsZXQgaXQgc2VuZCB0aGUgY2FuY2VsbGVkIG1lc3NhZ2UuCiAgICAgICAg
IGNhbmNlbE1haW5SZXNvdXJjZUxvYWQoZnJhbWVMb2FkZXItPmNhbmNlbGxlZEVycm9yKG1fcmVx
dWVzdCkpOwpAQCAtMzQ0LDEwICszNDQsMTAgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3RvcExv
YWRpbmcoKQogICAgIC8vIGluIHVuZXhwZWN0ZWQgc2lkZSBlZmZlY3RzIHN1Y2ggYXMgZXJyb25l
b3VzIGV2ZW50IGRpc3BhdGNoLiAoIGh0dHA6Ly93ZWJraXQub3JnL2IvMTE3MTEyICkKICAgICBp
ZiAoRG9jdW1lbnQqIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKSkKICAgICAgICAgZG9jdW1l
bnQtPmNhbmNlbFBhcnNpbmcoKTsKLSAgICAKKwogICAgIHN0b3BMb2FkaW5nU3VicmVzb3VyY2Vz
KCk7CiAgICAgc3RvcExvYWRpbmdQbHVnSW5zKCk7Ci0gICAgCisKICAgICBtX2lzU3RvcHBpbmcg
PSBmYWxzZTsKIH0KIApAQCAtNDk5LDcgKzQ5OSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6Ondp
bGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNl
CiB7CiAgICAgLy8gTm90ZSB0aGF0IHRoZXJlIGFyZSBubyBhc3NlcnRzIGhlcmUgYXMgdGhlcmUg
YXJlIGZvciB0aGUgb3RoZXIgY2FsbGJhY2tzLiBUaGlzIGlzIGR1ZSB0byB0aGUKICAgICAvLyBm
YWN0IHRoYXQgdGhpcyAiY2FsbGJhY2siIGlzIHNlbnQgd2hlbiBzdGFydGluZyBldmVyeSBsb2Fk
LCBhbmQgdGhlIHN0YXRlIG9mIGNhbGxiYWNrCi0gICAgLy8gZGVmZXJyYWxzIHBsYXlzIGxlc3Mg
b2YgYSBwYXJ0IGluIHRoaXMgZnVuY3Rpb24gaW4gcHJldmVudGluZyB0aGUgYmFkIGJlaGF2aW9y
IGRlZmVycmluZyAKKyAgICAvLyBkZWZlcnJhbHMgcGxheXMgbGVzcyBvZiBhIHBhcnQgaW4gdGhp
cyBmdW5jdGlvbiBpbiBwcmV2ZW50aW5nIHRoZSBiYWQgYmVoYXZpb3IgZGVmZXJyaW5nCiAgICAg
Ly8gY2FsbGJhY2tzIGlzIG1lYW50IHRvIHByZXZlbnQuCiAgICAgQVNTRVJUKCFuZXdSZXF1ZXN0
LmlzTnVsbCgpKTsKIApAQCAtNTM1LDcgKzUzNSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6Ondp
bGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNl
CiAgICAgQVNTRVJUKHRvcEZyYW1lLmRvY3VtZW50KCkpOwogCiAgICAgUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkubG9nRnJhbWVOYXZpZ2F0aW9uKCptX2ZyYW1lLCB0b3BG
cmFtZSwgbmV3UmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7Ci0gICAgCisKICAgICAvLyBVcGRh
dGUgY29va2llIHBvbGljeSBiYXNlIFVSTCBhcyBVUkwgY2hhbmdlcywgZXhjZXB0IGZvciBzdWJm
cmFtZXMsIHdoaWNoIHVzZSB0aGUKICAgICAvLyBVUkwgb2YgdGhlIG1haW4gZnJhbWUgd2hpY2gg
ZG9lc24ndCBjaGFuZ2Ugd2hlbiB3ZSByZWRpcmVjdC4KICAgICBpZiAobV9mcmFtZS0+aXNNYWlu
RnJhbWUoKSkKQEAgLTczNCw3ICs3MzQsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjb250aW51
ZUFmdGVyQ29udGVudFBvbGljeShQb2xpY3lBY3Rpb24gcG9saWN5KQogCiAgICAgVVJMIHVybCA9
IG1fcmVxdWVzdC51cmwoKTsKICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlID0gbV9yZXNwb25z
ZS5taW1lVHlwZSgpOwotICAgIAorCiAgICAgc3dpdGNoIChwb2xpY3kpIHsKICAgICBjYXNlIFBv
bGljeVVzZTogewogICAgICAgICAvLyBQcmV2ZW50IHJlbW90ZSB3ZWIgYXJjaGl2ZXMgZnJvbSBs
b2FkaW5nIGJlY2F1c2UgdGhleSBjYW4gY2xhaW0gdG8gYmUgZnJvbSBhbnkgZG9tYWluIGFuZCB0
aHVzIGF2b2lkIGNyb3NzLWRvbWFpbiBzZWN1cml0eSBjaGVja3MgKDQxMjAyNTUpLgpAQCAtODQx
LDcgKzg0MSw3IEBAIFJlc291cmNlRXJyb3IgRG9jdW1lbnRMb2FkZXI6OmludGVycnVwdGVkRm9y
UG9saWN5Q2hhbmdlRXJyb3IoKSBjb25zdAogdm9pZCBEb2N1bWVudExvYWRlcjo6c3RvcExvYWRp
bmdGb3JQb2xpY3lDaGFuZ2UoKQogewogICAgIFJlc291cmNlRXJyb3IgZXJyb3IgPSBpbnRlcnJ1
cHRlZEZvclBvbGljeUNoYW5nZUVycm9yKCk7Ci0gICAgZXJyb3Iuc2V0SXNDYW5jZWxsYXRpb24o
dHJ1ZSk7CisgICAgZXJyb3Iuc2V0VHlwZShSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRp
b24pOwogICAgIGNhbmNlbE1haW5SZXNvdXJjZUxvYWQoZXJyb3IpOwogfQogCkBAIC04NjIsNyAr
ODYyLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0RGF0YShjb25zdCBjaGFyKiBieXRl
cywgc2l6ZV90IGxlbmd0aCkKIAogICAgICAgICBpZiAoZnJhbWVMb2FkZXIoKS0+c3RhdGVNYWNo
aW5lKCkuY3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpKQogICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAKKwogI2lmIEVOQUJMRShNSFRNTCkKICAgICAgICAgLy8gVGhlIG9yaWdpbiBp
cyB0aGUgTUhUTUwgZmlsZSwgd2UgbmVlZCB0byBzZXQgdGhlIGJhc2UgVVJMIHRvIHRoZSBkb2N1
bWVudCBlbmNvZGVkIGluIHRoZSBNSFRNTCBzbwogICAgICAgICAvLyByZWxhdGl2ZSBVUkxzIGFy
ZSByZXNvbHZlZCBwcm9wZXJseS4KQEAgLTk0OCwxMyArOTQ4LDEzIEBAIHZvaWQgRG9jdW1lbnRM
b2FkZXI6OnNldHVwRm9yUmVwbGFjZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGZyYW1lTG9h
ZGVyKCktPmNsaWVudCgpLndpbGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpOwotICAgIAorCiAg
ICAgbWF5YmVGaW5pc2hMb2FkaW5nTXVsdGlwYXJ0Q29udGVudCgpOwogICAgIG1heWJlQ3JlYXRl
QXJjaGl2ZSgpOwogICAgIG1fd3JpdGVyLmVuZCgpOwogICAgIGZyYW1lTG9hZGVyKCktPnNldFJl
cGxhY2luZygpOwogICAgIG1fZ290Rmlyc3RCeXRlID0gZmFsc2U7Ci0gICAgCisKICAgICBzdG9w
TG9hZGluZ1N1YnJlc291cmNlcygpOwogICAgIHN0b3BMb2FkaW5nUGx1Z0lucygpOwogI2lmIEVO
QUJMRShXRUJfQVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQpAQCAtMTA0MSw3ICsxMDQxLDcgQEAg
Ym9vbCBEb2N1bWVudExvYWRlcjo6aXNMb2FkaW5nSW5BUElTZW5zZSgpIGNvbnN0CiAgICAgaWYg
KGZyYW1lTG9hZGVyKCktPnN0YXRlKCkgIT0gRnJhbWVTdGF0ZUNvbXBsZXRlKSB7CiAgICAgICAg
IGlmIChtX2ZyYW1lLT5zZXR0aW5ncygpLm5lZWRzSXNMb2FkaW5nSW5BUElTZW5zZVF1aXJrKCkg
JiYgIW1fc3VicmVzb3VyY2VMb2FkZXJzLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgIAorCiAgICAgICAgIERvY3VtZW50KiBkb2MgPSBtX2ZyYW1lLT5kb2N1bWVudCgp
OwogICAgICAgICBpZiAoKGlzTG9hZGluZ01haW5SZXNvdXJjZSgpIHx8ICFtX2ZyYW1lLT5kb2N1
bWVudCgpLT5sb2FkRXZlbnRGaW5pc2hlZCgpKSAmJiBpc0xvYWRpbmcoKSkKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwpAQCAtMTA2MCwxNyArMTA2MCwxNyBAQCBib29sIERvY3VtZW50TG9hZGVy
OjptYXliZUNyZWF0ZUFyY2hpdmUoKQogI2lmICFFTkFCTEUoV0VCX0FSQ0hJVkUpICYmICFFTkFC
TEUoTUhUTUwpCiAgICAgcmV0dXJuIGZhbHNlOwogI2Vsc2UKLSAgICAKKwogICAgIC8vIEdpdmUg
dGhlIGFyY2hpdmUgbWFjaGluZXJ5IGEgY3JhY2sgYXQgdGhpcyBkb2N1bWVudC4gSWYgdGhlIE1J
TUUgdHlwZSBpcyBub3QgYW4gYXJjaGl2ZSB0eXBlLCBpdCB3aWxsIHJldHVybiAwLgogICAgIG1f
YXJjaGl2ZSA9IEFyY2hpdmVGYWN0b3J5OjpjcmVhdGUobV9yZXNwb25zZS51cmwoKSwgbWFpblJl
c291cmNlRGF0YSgpLmdldCgpLCBtX3Jlc3BvbnNlLm1pbWVUeXBlKCkpOwogICAgIGlmICghbV9h
cmNoaXZlKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCisKICAgICBhZGRBbGxBcmNoaXZl
UmVzb3VyY2VzKG1fYXJjaGl2ZS5nZXQoKSk7CiAgICAgQXJjaGl2ZVJlc291cmNlKiBtYWluUmVz
b3VyY2UgPSBtX2FyY2hpdmUtPm1haW5SZXNvdXJjZSgpOwogICAgIG1fcGFyc2VkQXJjaGl2ZURh
dGEgPSAmbWFpblJlc291cmNlLT5kYXRhKCk7CiAgICAgbV93cml0ZXIuc2V0TUlNRVR5cGUobWFp
blJlc291cmNlLT5taW1lVHlwZSgpKTsKLSAgICAKKwogICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1
bWVudCgpKTsKICAgICBjb21taXREYXRhKG1haW5SZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgbWFp
blJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEwODksMTEg
KzEwODksMTEgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6YWRkQWxsQXJjaGl2ZVJlc291cmNlcyhB
cmNoaXZlKiBhcmNoaXZlKQogewogICAgIGlmICghbV9hcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9u
KQogICAgICAgICBtX2FyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVl
PEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24+KCk7Ci0gICAgICAgIAorCiAgICAgQVNTRVJUKGFy
Y2hpdmUpOwogICAgIGlmICghYXJjaGl2ZSkKICAgICAgICAgcmV0dXJuOwotICAgICAgICAKKwog
ICAgIG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi0+YWRkQWxsUmVzb3VyY2VzKGFyY2hpdmUp
OwogfQogCkBAIC0xMTAzLDcgKzExMDMsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjphZGRBcmNo
aXZlUmVzb3VyY2UoUmVmPEFyY2hpdmVSZXNvdXJjZT4mJiByZXNvdXJjZSkKIHsKICAgICBpZiAo
IW1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbikKICAgICAgICAgbV9hcmNoaXZlUmVzb3VyY2VD
b2xsZWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uPigp
OwotICAgICAgICAKKwogICAgIG1fYXJjaGl2ZVJlc291cmNlQ29sbGVjdGlvbi0+YWRkUmVzb3Vy
Y2UoV1RGTW92ZShyZXNvdXJjZSkpOwogfQogCkBAIC0xMTQwLDcgKzExNDAsNyBAQCBSZWZQdHI8
QXJjaGl2ZVJlc291cmNlPiBEb2N1bWVudExvYWRlcjo6bWFpblJlc291cmNlKCkgY29uc3QKICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhID0gbWFpblJlc291cmNlRGF0YSgpOwogICAgIGlm
ICghZGF0YSkKICAgICAgICAgZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7Ci0gICAgICAg
IAorCiAgICAgYXV0byYgcmVzcG9uc2UgPSB0aGlzLT5yZXNwb25zZSgpOwogICAgIHJldHVybiBB
cmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpLCByZXNwb25zZS51cmwoKSwgcmVz
cG9uc2UubWltZVR5cGUoKSwgcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpLCBmcmFtZSgpLT50
cmVlKCkudW5pcXVlTmFtZSgpKTsKIH0KQEAgLTExNDksNyArMTE0OSw3IEBAIFBhc3NSZWZQdHI8
QXJjaGl2ZVJlc291cmNlPiBEb2N1bWVudExvYWRlcjo6c3VicmVzb3VyY2UoY29uc3QgVVJMJiB1
cmwpIGNvbnN0CiB7CiAgICAgaWYgKCFpc0NvbW1pdHRlZCgpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICAKKwogICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IG1fY2FjaGVkUmVz
b3VyY2VMb2FkZXItPmNhY2hlZFJlc291cmNlKHVybCk7CiAgICAgaWYgKCFyZXNvdXJjZSB8fCAh
cmVzb3VyY2UtPmlzTG9hZGVkKCkpCiAgICAgICAgIHJldHVybiBhcmNoaXZlUmVzb3VyY2VGb3JV
UkwodXJsKTsKQEAgLTE1OTcsNyArMTU5Nyw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN1YnJl
c291cmNlTG9hZGVyRmluaXNoZWRMb2FkaW5nT25lUGFydChSZXNvdXJjZUxvYWRlciogbG9hCiAK
ICAgICBjaGVja0xvYWRDb21wbGV0ZSgpOwogICAgIGlmIChGcmFtZSogZnJhbWUgPSBtX2ZyYW1l
KQotICAgICAgICBmcmFtZS0+bG9hZGVyKCkuY2hlY2tMb2FkQ29tcGxldGUoKTsgICAgCisgICAg
ICAgIGZyYW1lLT5sb2FkZXIoKS5jaGVja0xvYWRDb21wbGV0ZSgpOwogfQogCiB2b2lkIERvY3Vt
ZW50TG9hZGVyOjptYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KCkKQEAgLTE2NDQs
NyArMTY0NCw3IEBAIHN0YXRpYyB2b2lkIGljb25EYXRhQ2FsbGJhY2soU2hhcmVkQnVmZmVyKiwg
dm9pZCopCiB9CiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmdldEljb25EYXRhRm9ySWNvblVSTChj
b25zdCBTdHJpbmcmIHVybFN0cmluZykKLXsgICAKK3sKICAgICBpZiAobV9pY29uRGF0YUNhbGxi
YWNrKQogICAgICAgICBtX2ljb25EYXRhQ2FsbGJhY2stPmludmFsaWRhdGUoKTsKICAgICBtX2lj
b25EYXRhQ2FsbGJhY2sgPSBJY29uRGF0YUNhbGxiYWNrOjpjcmVhdGUodGhpcywgaWNvbkRhdGFD
YWxsYmFjayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIuY3BwCmluZGV4IDkwZTRiZmJjMTEyMzg5M2FiMTM1MjQ1ZmI3NDk3NzhkM2I2OTk1
YWQuLmQxMDdiODhmNjJkN2E4M2NjYjA2ZTdiZGZmN2MxNGRhZThjNTRiNDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0x
NjAsOCArMTYwLDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNhbmNlbCgpCiAg
ICAgLy8gQ2FuY2VsIGNhbiByZS1lbnRlciBhbmQgbV9yZXNvdXJjZSBtaWdodCBiZSBudWxsIGhl
cmUgYXMgYSByZXN1bHQuCiAgICAgaWYgKG1fY2xpZW50ICYmIG1fcmVzb3VyY2UpIHsKICAgICAg
ICAgLy8gRklYTUU6IFRoaXMgZXJyb3IgaXMgc2VudCB0byB0aGUgY2xpZW50IGluIGRpZEZhaWwo
KSwgc28gaXQgc2hvdWxkIG5vdCBiZSBhbiBpbnRlcm5hbCBvbmUuIFVzZSBGcmFtZUxvYWRlckNs
aWVudDo6Y2FuY2VsbGVkRXJyb3IoKSBpbnN0ZWFkLgotICAgICAgICBSZXNvdXJjZUVycm9yIGVy
cm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIG1fcmVzb3VyY2UtPnVybCgpLCAiTG9h
ZCBjYW5jZWxsZWQiKTsKLSAgICAgICAgZXJyb3Iuc2V0SXNDYW5jZWxsYXRpb24odHJ1ZSk7Cisg
ICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwg
bV9yZXNvdXJjZS0+dXJsKCksICJMb2FkIGNhbmNlbGxlZCIsIFJlc291cmNlRXJyb3I6OlR5cGU6
OkNhbmNlbGxhdGlvbik7CiAgICAgICAgIGRpZEZhaWwobV9yZXNvdXJjZS0+aWRlbnRpZmllcigp
LCBlcnJvcik7CiAgICAgfQogICAgIGNsZWFyUmVzb3VyY2UoKTsKQEAgLTMxNiw3ICszMTUsNyBA
QCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVz
b3VyY2UqIHJlc291cmNlKQogewogICAgIEFTU0VSVChtX2NsaWVudCk7CiAgICAgQVNTRVJUX1VO
VVNFRChyZXNvdXJjZSwgcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7Ci0gICAgICAgIAorCiAgICAg
aWYgKG1fcmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSkKICAgICAgICAgZGlkRmFpbChtX3Jlc291
cmNlLT5pZGVudGlmaWVyKCksIG1fcmVzb3VyY2UtPnJlc291cmNlRXJyb3IoKSk7CiAgICAgZWxz
ZQpAQCAtMzk1LDcgKzM5NCw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2Fk
UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNlY3VyCiAKICAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIC8vIEZJWE1FOiBUaHJlYWRhYmxlTG9hZGVyT3B0
aW9ucy5zbmlmZkNvbnRlbnQgaXMgbm90IHN1cHBvcnRlZCBmb3Igc3luY2hyb25vdXMgcmVxdWVz
dHMuCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YTsKICAgICBSZXNvdXJjZUVycm9yIGVy
cm9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IDk4NGY0OGViMmMxMmYw
YmQ1ZjhjZTUzYThhYzEwMDk5MDk0NjU4ODIuLjZiNTlkZmZmY2ZmYWFlMDAwOWE5NjU2MGIyMTkx
YmJlZjFhZDE0MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTIyNyw5
ICsyMjcsOSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICB2b2lkIG5l
ZWRUb3VjaEV2ZW50cyhib29sKSBvdmVycmlkZSB7IH0KICNlbmRpZgotICAgIAorCiAgICAgdm9p
ZCB3aGVlbEV2ZW50SGFuZGxlcnNDaGFuZ2VkKGJvb2wpIG92ZXJyaWRlIHsgfQotICAgIAorCiAg
ICAgYm9vbCBpc0VtcHR5Q2hyb21lQ2xpZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQogCiAgICAgdm9pZCBkaWRBc3NvY2lhdGVGb3JtQ29udHJvbHMoY29uc3QgVmVjdG9yPFJl
ZlB0cjxFbGVtZW50Pj4mKSBvdmVycmlkZSB7IH0KQEAgLTMzMCwxNSArMzMwLDE1IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBjaGFyKiwg
aW50KSBvdmVycmlkZSB7IH0KICAgICB2b2lkIGZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRl
ciopIG92ZXJyaWRlIHsgfQogCi0gICAgUmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25z
dCBSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZSB7IFJlc291cmNlRXJyb3IgZXJyb3IoIiIsIDAs
IFVSTCgpLCAiIik7IGVycm9yLnNldElzQ2FuY2VsbGF0aW9uKHRydWUpOyByZXR1cm4gZXJyb3I7
IH0KLSAgICBSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
KSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCBVUkwoKSwgIiIpOyB9Ci0g
ICAgUmVzb3VyY2VFcnJvciBibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3IoIiIsIDAsIFVSTCgp
LCAiIik7IH0KLSAgICBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dVUkxFcnJvcihjb25zdCBSZXNv
dXJjZVJlcXVlc3QmKSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCBVUkwo
KSwgIiIpOyB9Ci0gICAgUmVzb3VyY2VFcnJvciBpbnRlcnJ1cHRlZEZvclBvbGljeUNoYW5nZUVy
cm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJy
b3IoIiIsIDAsIFVSTCgpLCAiIik7IH0KKyAgICBSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9y
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3Io
UmVzb3VyY2VFcnJvcjo6VHlwZTo6Q2FuY2VsbGF0aW9uKTsgfQorICAgIFJlc291cmNlRXJyb3Ig
YmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlIHsgcmV0dXJuIHsg
fTsgfQorICAgIFJlc291cmNlRXJyb3IgYmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihjb25z
dCBSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZSB7IHJldHVybiB7IH07IH0KKyAgICBSZXNvdXJj
ZUVycm9yIGNhbm5vdFNob3dVUkxFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlk
ZSB7IHJldHVybiB7IH07IH0KKyAgICBSZXNvdXJjZUVycm9yIGludGVycnVwdGVkRm9yUG9saWN5
Q2hhbmdlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGUgeyByZXR1cm4geyB9
OyB9CiAKLSAgICBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dNSU1FVHlwZUVycm9yKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCBV
UkwoKSwgIiIpOyB9Ci0gICAgUmVzb3VyY2VFcnJvciBmaWxlRG9lc05vdEV4aXN0RXJyb3IoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3IoIiIs
IDAsIFVSTCgpLCAiIik7IH0KLSAgICBSZXNvdXJjZUVycm9yIHBsdWdpbldpbGxIYW5kbGVMb2Fk
RXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNl
RXJyb3IoIiIsIDAsIFVSTCgpLCAiIik7IH0KKyAgICBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dN
SU1FVHlwZUVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZSB7IHJldHVybiB7
IH07IH0KKyAgICBSZXNvdXJjZUVycm9yIGZpbGVEb2VzTm90RXhpc3RFcnJvcihjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJikgb3ZlcnJpZGUgeyByZXR1cm4geyB9OyB9CisgICAgUmVzb3VyY2VFcnJv
ciBwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVy
cmlkZSB7IHJldHVybiB7IH07IH0KIAogICAgIGJvb2wgc2hvdWxkRmFsbEJhY2soY29uc3QgUmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKQEAgLTYwMCw3ICs2MDAs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+RW1wdHlJbnNwZWN0b3JDbGllbnQoKSB7IH0KIAog
ICAgIHZvaWQgaW5zcGVjdGVkUGFnZURlc3Ryb3llZCgpIG92ZXJyaWRlIHsgfQotICAgIAorCiAg
ICAgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIG9wZW5Mb2NhbEZyb250ZW5kKEluc3BlY3Rv
ckNvbnRyb2xsZXIqKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdm9pZCBicmlu
Z0Zyb250ZW5kVG9Gcm9udCgpIG92ZXJyaWRlIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAppbmRleCBhM2FlODg0YTA5Mzk4YTlkMjlkMmZlODdiYTk5Y2U4MGM2OWE2YTdh
Li42YTE5YTgxZDNkZWFkMWNlODNjMDM3MDc3ZjQ3MDI0M2NjMzQ5NTM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTM4MSwxMCArMzgxLDEwIEBAIHZvaWQgRnJhbWVM
b2FkZXI6OnN1Ym1pdEZvcm0oUGFzc1JlZlB0cjxGb3JtU3VibWlzc2lvbj4gc3VibWlzc2lvbikK
ICAgICBBU1NFUlQoc3VibWlzc2lvbi0+ZGF0YSgpKTsKICAgICBBU1NFUlQoc3VibWlzc2lvbi0+
c3RhdGUoKSk7CiAgICAgQVNTRVJUKCFzdWJtaXNzaW9uLT5zdGF0ZSgpLT5zb3VyY2VEb2N1bWVu
dCgpLT5mcmFtZSgpIHx8IHN1Ym1pc3Npb24tPnN0YXRlKCktPnNvdXJjZURvY3VtZW50KCktPmZy
YW1lKCkgPT0gJm1fZnJhbWUpOwotICAgIAorCiAgICAgaWYgKCFtX2ZyYW1lLnBhZ2UoKSkKICAg
ICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgaWYgKHN1Ym1pc3Npb24tPmFjdGlvbigpLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC00ODYsNyArNDg2LDcgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6c3RvcCgpCiAgICAgICAgIHBhcnNlci0+c3RvcFBhcnNpbmcoKTsKICAgICAgICAgcGFy
c2VyLT5maW5pc2goKTsKICAgICB9Ci0gICAgCisKICAgICBpY29uKCkuc3RvcExvYWRlcigpOwog
fQogCkBAIC01MTksNyArNTE5LDcgQEAgYm9vbCBGcmFtZUxvYWRlcjo6Y2xvc2VVUkwoKQogICAg
IH0KIAogICAgIHN0b3BMb2FkaW5nKHVubG9hZEV2ZW50UG9saWN5KTsKLSAgICAKKwogICAgIG1f
ZnJhbWUuZWRpdG9yKCkuY2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KQEAgLTU2MCwxMCArNTYwLDEwIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRpZEV4cGxpY2l0
T3BlbigpCiAgICAgLy8gQ2FsbGluZyBkb2N1bWVudC5vcGVuIGNvdW50cyBhcyBjb21taXR0aW5n
IHRoZSBmaXJzdCByZWFsIGRvY3VtZW50IGxvYWQuCiAgICAgaWYgKCFtX3N0YXRlTWFjaGluZS5j
b21taXR0ZWRGaXJzdFJlYWxEb2N1bWVudExvYWQoKSkKICAgICAgICAgbV9zdGF0ZU1hY2hpbmUu
YWR2YW5jZVRvKEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lOjpEaXNwbGF5aW5nSW5pdGlhbEVtcHR5
RG9jdW1lbnRQb3N0Q29tbWl0KTsKLSAgICAKKwogICAgIC8vIFByZXZlbnQgd2luZG93Lm9wZW4o
dXJsKSAtLSBlZyB3aW5kb3cub3BlbigiYWJvdXQ6YmxhbmsiKSAtLSBmcm9tIGJsb3dpbmcgYXdh
eSByZXN1bHRzCi0gICAgLy8gZnJvbSBhIHN1YnNlcXVlbnQgd2luZG93LmRvY3VtZW50Lm9wZW4g
LyB3aW5kb3cuZG9jdW1lbnQud3JpdGUgY2FsbC4gCi0gICAgLy8gQ2FuY2VsaW5nIHJlZGlyZWN0
aW9uIGhlcmUgd29ya3MgZm9yIGFsbCBjYXNlcyBiZWNhdXNlIGRvY3VtZW50Lm9wZW4gCisgICAg
Ly8gZnJvbSBhIHN1YnNlcXVlbnQgd2luZG93LmRvY3VtZW50Lm9wZW4gLyB3aW5kb3cuZG9jdW1l
bnQud3JpdGUgY2FsbC4KKyAgICAvLyBDYW5jZWxpbmcgcmVkaXJlY3Rpb24gaGVyZSB3b3JrcyBm
b3IgYWxsIGNhc2VzIGJlY2F1c2UgZG9jdW1lbnQub3BlbgogICAgIC8vIGltcGxpY2l0bHkgcHJl
Y2VkZXMgZG9jdW1lbnQud3JpdGUuCiAgICAgbV9mcmFtZS5uYXZpZ2F0aW9uU2NoZWR1bGVyKCku
Y2FuY2VsKCk7CiB9CkBAIC01ODcsNyArNTg3LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2xlYXIo
RG9jdW1lbnQqIG5ld0RvY3VtZW50LCBib29sIGNsZWFyV2luZG93UHJvcGVydGllcywgYm9vbAog
ICAgIGlmICghbV9uZWVkc0NsZWFyKQogICAgICAgICByZXR1cm47CiAgICAgbV9uZWVkc0NsZWFy
ID0gZmFsc2U7Ci0gICAgCisKICAgICBpZiAoIW1fZnJhbWUuZG9jdW1lbnQoKS0+aW5QYWdlQ2Fj
aGUoKSkgewogICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCktPmNhbmNlbFBhcnNpbmcoKTsKICAg
ICAgICAgbV9mcmFtZS5kb2N1bWVudCgpLT5zdG9wQWN0aXZlRE9NT2JqZWN0cygpOwpAQCAtODgy
LDcgKzg4Miw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkxJbnRvQ2hpbGRGcmFtZShjb25z
dCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcmVyLCBGCiAgICAgSGlzdG9yeUl0ZW0qIHBh
cmVudEl0ZW0gPSBoaXN0b3J5KCkuY3VycmVudEl0ZW0oKTsKICAgICAvLyBJZiB3ZSdyZSBtb3Zp
bmcgaW4gdGhlIGJhY2svZm9yd2FyZCBsaXN0LCB3ZSBtaWdodCB3YW50IHRvIHJlcGxhY2UgdGhl
IGNvbnRlbnQKICAgICAvLyBvZiB0aGlzIGNoaWxkIGZyYW1lIHdpdGggd2hhdGV2ZXIgd2FzIHRo
ZXJlIGF0IHRoYXQgcG9pbnQuCi0gICAgaWYgKHBhcmVudEl0ZW0gJiYgcGFyZW50SXRlbS0+Y2hp
bGRyZW4oKS5zaXplKCkgJiYgaXNCYWNrRm9yd2FyZExvYWRUeXBlKGxvYWRUeXBlKCkpIAorICAg
IGlmIChwYXJlbnRJdGVtICYmIHBhcmVudEl0ZW0tPmNoaWxkcmVuKCkuc2l6ZSgpICYmIGlzQmFj
a0ZvcndhcmRMb2FkVHlwZShsb2FkVHlwZSgpKQogICAgICAgICAmJiAhbV9mcmFtZS5kb2N1bWVu
dCgpLT5sb2FkRXZlbnRGaW5pc2hlZCgpKSB7CiAgICAgICAgIEhpc3RvcnlJdGVtKiBjaGlsZEl0
ZW0gPSBwYXJlbnRJdGVtLT5jaGlsZEl0ZW1XaXRoVGFyZ2V0KGNoaWxkRnJhbWUtPnRyZWUoKS51
bmlxdWVOYW1lKCkpOwogICAgICAgICBpZiAoY2hpbGRJdGVtKSB7CkBAIC05MDYsNyArOTA2LDcg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEFyY2hpdmUoUGFzc1JlZlB0cjxBcmNoaXZlPiBhcmNo
aXZlKQogCiAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShVUkwoKSwgbWFpblJlc291cmNl
LT5taW1lVHlwZSgpLCBtYWluUmVzb3VyY2UtPmRhdGEoKS5zaXplKCksIG1haW5SZXNvdXJjZS0+
dGV4dEVuY29kaW5nKCkpOwogICAgIFN1YnN0aXR1dGVEYXRhIHN1YnN0aXR1dGVEYXRhKCZtYWlu
UmVzb3VyY2UtPmRhdGEoKSwgVVJMKCksIHJlc3BvbnNlLCBTdWJzdGl0dXRlRGF0YTo6U2Vzc2lv
bkhpc3RvcnlWaXNpYmlsaXR5OjpIaWRkZW4pOwotICAgIAorCiAgICAgUmVzb3VyY2VSZXF1ZXN0
IHJlcXVlc3QobWFpblJlc291cmNlLT51cmwoKSk7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHJl
cXVlc3QuYXBwbHlXZWJBcmNoaXZlSGFja0Zvck1haWwoKTsKQEAgLTEwMTUsMTAgKzEwMTUsMTAg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEluU2FtZURvY3VtZW50KGNvbnN0IFVSTCYgdXJsLCBQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHQKICAgICBzZXRPdXRnb2luZ1JlZmVycmVyKHVybCk7
CiAgICAgZG9jdW1lbnRMb2FkZXIoKS0+cmVwbGFjZVJlcXVlc3RVUkxGb3JTYW1lRG9jdW1lbnRO
YXZpZ2F0aW9uKHVybCk7CiAgICAgaWYgKGlzTmV3TmF2aWdhdGlvbiAmJiAhc2hvdWxkVHJlYXRV
UkxBc1NhbWVBc0N1cnJlbnQodXJsKSAmJiAhc3RhdGVPYmplY3QpIHsKLSAgICAgICAgLy8gTkI6
IG11c3QgaGFwcGVuIGFmdGVyIHJlcGxhY2VSZXF1ZXN0VVJMRm9yU2FtZURvY3VtZW50TmF2aWdh
dGlvbigpLCBzaW5jZSB3ZSBhZGQgCi0gICAgICAgIC8vIGJhc2VkIG9uIHRoZSBjdXJyZW50IHJl
cXVlc3QuIE11c3QgYWxzbyBoYXBwZW4gYmVmb3JlIHdlIG9wZW5VUkwgYW5kIGRpc3BsYWNlIHRo
ZSAKKyAgICAgICAgLy8gTkI6IG11c3QgaGFwcGVuIGFmdGVyIHJlcGxhY2VSZXF1ZXN0VVJMRm9y
U2FtZURvY3VtZW50TmF2aWdhdGlvbigpLCBzaW5jZSB3ZSBhZGQKKyAgICAgICAgLy8gYmFzZWQg
b24gdGhlIGN1cnJlbnQgcmVxdWVzdC4gTXVzdCBhbHNvIGhhcHBlbiBiZWZvcmUgd2Ugb3BlblVS
TCBhbmQgZGlzcGxhY2UgdGhlCiAgICAgICAgIC8vIHNjcm9sbCBwb3NpdGlvbiwgc2luY2UgYWRk
aW5nIHRoZSBCRiBpdGVtIHdpbGwgc2F2ZSBhd2F5IHNjcm9sbCBzdGF0ZS4KLSAgICAgICAgCisK
ICAgICAgICAgLy8gTkIyOiBJZiB3ZSB3ZXJlIGxvYWRpbmcgYSBsb25nLCBzbG93IGRvYywgYW5k
IHRoZSB1c2VyIGZyYWdtZW50IG5hdmlnYXRlZCBiZWZvcmUKICAgICAgICAgLy8gaXQgd2FzIGRv
bmUsIGN1cnJJdGVtIGlzIG5vdyBzZXQgdGhlIHRoYXQgc2xvdyBkb2MsIGFuZCBwcmV2SXRlbSBp
cyB3aGF0ZXZlciB3YXMKICAgICAgICAgLy8gYmVmb3JlIGl0LiAgQWRkaW5nIHRoZSBiL2YgaXRl
bSB3aWxsIGJ1bXAgdGhlIHNsb3cgZG9jIGRvd24gdG8gcHJldkl0ZW0sIGV2ZW4KQEAgLTEwMjgs
MTUgKzEwMjgsMTUgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEluU2FtZURvY3VtZW50KGNvbnN0
IFVSTCYgdXJsLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHQKIAogICAgICAgICBoaXN0b3J5
KCkudXBkYXRlQmFja0ZvcndhcmRMaXN0Rm9yRnJhZ21lbnRTY3JvbGwoKTsKICAgICB9Ci0gICAg
CisKICAgICBib29sIGhhc2hDaGFuZ2UgPSBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVy
KHVybCwgb2xkVVJMKSAmJiB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkgIT0gb2xkVVJMLmZyYWdt
ZW50SWRlbnRpZmllcigpOwotICAgIAorCiAgICAgaGlzdG9yeSgpLnVwZGF0ZUZvclNhbWVEb2N1
bWVudE5hdmlnYXRpb24oKTsKIAogICAgIC8vIElmIHdlIHdlcmUgaW4gdGhlIGF1dG9zY3JvbGwv
cGFuU2Nyb2xsIG1vZGUgd2Ugd2FudCB0byBzdG9wIGl0IGJlZm9yZSBmb2xsb3dpbmcgdGhlIGxp
bmsgdG8gdGhlIGFuY2hvcgogICAgIGlmIChoYXNoQ2hhbmdlKQogICAgICAgICBtX2ZyYW1lLmV2
ZW50SGFuZGxlcigpLnN0b3BBdXRvc2Nyb2xsVGltZXIoKTsKLSAgICAKKwogICAgIC8vIEl0J3Mg
aW1wb3J0YW50IHRvIG1vZGVsIHRoaXMgYXMgYSBsb2FkIHRoYXQgc3RhcnRzIGFuZCBpbW1lZGlh
dGVseSBmaW5pc2hlcy4KICAgICAvLyBPdGhlcndpc2UsIHRoZSBwYXJlbnQgZnJhbWUgbWF5IHRo
aW5rIHdlIG5ldmVyIGZpbmlzaGVkIGxvYWRpbmcuCiAgICAgc3RhcnRlZCgpOwpAQCAtMTA0NCw3
ICsxMDQ0LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEluU2FtZURvY3VtZW50KGNvbnN0IFVS
TCYgdXJsLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHQKICAgICAvLyBXZSBuZWVkIHRvIHNj
cm9sbCB0byB0aGUgZnJhZ21lbnQgd2hldGhlciBvciBub3QgYSBoYXNoIGNoYW5nZSBvY2N1cnJl
ZCwgc2luY2UKICAgICAvLyB0aGUgdXNlciBtaWdodCBoYXZlIHNjcm9sbGVkIHNpbmNlIHRoZSBw
cmV2aW91cyBuYXZpZ2F0aW9uLgogICAgIHNjcm9sbFRvRnJhZ21lbnRXaXRoUGFyZW50Qm91bmRh
cnkodXJsKTsKLSAgICAKKwogICAgIG1faXNDb21wbGV0ZSA9IGZhbHNlOwogICAgIGNoZWNrQ29t
cGxldGVkKCk7CiAKQEAgLTEwNTksMTIgKzEwNTksMTIgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9h
ZEluU2FtZURvY3VtZW50KGNvbnN0IFVSTCYgdXJsLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHQKIAogICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+c3RhdGVQb3BwZWQoc3RhdGVPYmplY3QgPyBz
dGF0ZU9iamVjdCA6IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6bnVsbFZhbHVlKCkpOwogICAgIG1f
Y2xpZW50LmRpc3BhdGNoRGlkUG9wU3RhdGVXaXRoaW5QYWdlKCk7Ci0gICAgCisKICAgICBpZiAo
aGFzaENoYW5nZSkgewogICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCktPmVucXVldWVIYXNoY2hh
bmdlRXZlbnQob2xkVVJMLCB1cmwpOwogICAgICAgICBtX2NsaWVudC5kaXNwYXRjaERpZENoYW5n
ZUxvY2F0aW9uV2l0aGluUGFnZSgpOwogICAgIH0KLSAgICAKKwogICAgIC8vIEZyYW1lTG9hZGVy
Q2xpZW50OjpkaWRGaW5pc2hMb2FkKCkgdGVsbHMgdGhlIGludGVybmFsIGxvYWQgZGVsZWdhdGUg
dGhlIGxvYWQgZmluaXNoZWQgd2l0aCBubyBlcnJvcgogICAgIG1fY2xpZW50LmRpZEZpbmlzaExv
YWQoKTsKIH0KQEAgLTExMjIsNyArMTEyMiw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnNldHVwRm9y
UmVwbGFjZSgpCiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRGcmFtZVJlcXVlc3QoY29uc3Qg
RnJhbWVMb2FkUmVxdWVzdCYgcmVxdWVzdCwgRXZlbnQqIGV2ZW50LCBQYXNzUmVmUHRyPEZvcm1T
dGF0ZT4gZm9ybVN0YXRlKQoteyAgICAKK3sKICAgICAvLyBQcm90ZWN0IGZyYW1lIGZyb20gZ2V0
dGluZyBibG93biBhd2F5IGluc2lkZSBkaXNwYXRjaEJlZm9yZUxvYWRFdmVudCBpbiBsb2FkV2l0
aERvY3VtZW50TG9hZGVyLgogICAgIFJlZjxGcmFtZT4gcHJvdGVjdChtX2ZyYW1lKTsKIApAQCAt
MTIzMyw3ICsxMjMzLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVSTChjb25zdCBGcmFtZUxv
YWRSZXF1ZXN0JiBmcmFtZUxvYWRSZXF1ZXN0LCBjb25zdCBTdHJpbmcKIAogICAgIGJvb2wgc2Ft
ZVVSTCA9IHNob3VsZFRyZWF0VVJMQXNTYW1lQXNDdXJyZW50KG5ld1VSTCk7CiAgICAgY29uc3Qg
U3RyaW5nJiBodHRwTWV0aG9kID0gcmVxdWVzdC5odHRwTWV0aG9kKCk7Ci0gICAgCisKICAgICAv
LyBNYWtlIHN1cmUgdG8gZG8gc2Nyb2xsIHRvIGZyYWdtZW50IHByb2Nlc3NpbmcgZXZlbiBpZiB0
aGUgVVJMIGlzCiAgICAgLy8gZXhhY3RseSB0aGUgc2FtZSBzbyBwYWdlcyB3aXRoICcjJyBsaW5r
cyBhbmQgREhUTUwgc2lkZSBlZmZlY3RzCiAgICAgLy8gd29yayBwcm9wZXJseS4KQEAgLTEzNDIs
MTQgKzEzNDIsMTQgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZChEb2N1bWVudExvYWRlciogbmV3
RG9jdW1lbnRMb2FkZXIpCiAKICAgICBpZiAobV9kb2N1bWVudExvYWRlcikKICAgICAgICAgbmV3
RG9jdW1lbnRMb2FkZXItPnNldE92ZXJyaWRlRW5jb2RpbmcobV9kb2N1bWVudExvYWRlci0+b3Zl
cnJpZGVFbmNvZGluZygpKTsKLSAgICAKKwogICAgIC8vIFdoZW4gd2UgbG9hZGluZyBhbHRlcm5h
dGUgY29udGVudCBmb3IgYW4gdW5yZWFjaGFibGUgVVJMIHRoYXQgd2UncmUKLSAgICAvLyB2aXNp
dGluZyBpbiB0aGUgaGlzdG9yeSBsaXN0LCB3ZSB0cmVhdCBpdCBhcyBhIHJlbG9hZCBzbyB0aGUg
aGlzdG9yeSBsaXN0IAorICAgIC8vIHZpc2l0aW5nIGluIHRoZSBoaXN0b3J5IGxpc3QsIHdlIHRy
ZWF0IGl0IGFzIGEgcmVsb2FkIHNvIHRoZSBoaXN0b3J5IGxpc3QKICAgICAvLyBpcyBhcHByb3By
aWF0ZWx5IG1haW50YWluZWQuCiAgICAgLy8KICAgICAvLyBGSVhNRTogVGhpcyBzZWVtcyBsaWtl
IGEgZGFuZ2Vyb3VzIG92ZXJsb2FkaW5nIG9mIHRoZSBtZWFuaW5nIG9mICJGcmFtZUxvYWRUeXBl
OjpSZWxvYWQiIC4uLgotICAgIC8vIHNob3VsZG4ndCBhIG1vcmUgZXhwbGljaXQgdHlwZSBvZiBy
ZWxvYWQgYmUgZGVmaW5lZCwgdGhhdCBtZWFucyByb3VnaGx5IAotICAgIC8vICJsb2FkIHdpdGhv
dXQgYWZmZWN0aW5nIGhpc3RvcnkiID8gCisgICAgLy8gc2hvdWxkbid0IGEgbW9yZSBleHBsaWNp
dCB0eXBlIG9mIHJlbG9hZCBiZSBkZWZpbmVkLCB0aGF0IG1lYW5zIHJvdWdobHkKKyAgICAvLyAi
bG9hZCB3aXRob3V0IGFmZmVjdGluZyBoaXN0b3J5IiA/CiAgICAgaWYgKHNob3VsZFJlbG9hZFRv
SGFuZGxlVW5yZWFjaGFibGVVUkwobmV3RG9jdW1lbnRMb2FkZXIpKSB7CiAgICAgICAgIC8vIHNo
b3VsZFJlbG9hZFRvSGFuZGxlVW5yZWFjaGFibGVVUkwoKSByZXR1cm5zIHRydWUgb25seSB3aGVu
IHRoZSBvcmlnaW5hbCBsb2FkIHR5cGUgaXMgYmFjay1mb3J3YXJkLgogICAgICAgICAvLyBJbiB0
aGlzIGNhc2Ugd2Ugc2hvdWxkIHNhdmUgdGhlIGRvY3VtZW50IHN0YXRlIG5vdy4gT3RoZXJ3aXNl
IHRoZSBzdGF0ZSBjYW4gYmUgbG9zdCBiZWNhdXNlIGxvYWQgdHlwZSBpcwpAQCAtMTQ4MSw3ICsx
NDgxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVwb3J0QmxvY2tlZFBvcnRGYWlsZWQoRnJhbWUq
IGZyYW1lLCBjb25zdCBTdHJpbmcmIHVybCkKICAgICBBU1NFUlQoIXVybC5pc0VtcHR5KCkpOwog
ICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIGZyYW1lLT5kb2N1
bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2Fn
ZUxldmVsOjpFcnJvciwgIk5vdCBhbGxvd2VkIHRvIHVzZSByZXN0cmljdGVkIG5ldHdvcmsgcG9y
dDogIiArIHVybCk7CiB9CiAKQEAgLTE1NzgsNyArMTU3OCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OnJlbG9hZChib29sIGVuZFRvRW5kUmVsb2FkLCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQp
CiAgICAgYXBwbHlTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9OZXdEb2N1bWVudExvYWRl
cihsb2FkZXIsIG1fZG9jdW1lbnRMb2FkZXItPnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lU
b1Byb3BhZ2F0ZSgpKTsKIAogICAgIGxvYWRlci0+c2V0VXNlckNvbnRlbnRFeHRlbnNpb25zRW5h
YmxlZChjb250ZW50QmxvY2tlcnNFbmFibGVkKTsKLSAgICAKKwogICAgIFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCA9IGxvYWRlci0+cmVxdWVzdCgpOwogCiAgICAgLy8gRklYTUU6IFdlIGRvbid0
IGhhdmUgYSBtZWNoYW5pc20gdG8gcmV2YWxpZGF0ZSB0aGUgbWFpbiByZXNvdXJjZSB3aXRob3V0
IHJlbG9hZGluZyBhdCB0aGUgbW9tZW50LgpAQCAtMTU4OSw3ICsxNTg5LDcgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6cmVsb2FkKGJvb2wgZW5kVG9FbmRSZWxvYWQsIGJvb2wgY29udGVudEJsb2NrZXJz
RW5hYmxlZCkKICAgICAgICAgbG9hZGVyLT5zZXRUcmlnZ2VyaW5nQWN0aW9uKE5hdmlnYXRpb25B
Y3Rpb24ocmVxdWVzdCwgTmF2aWdhdGlvblR5cGU6OkZvcm1SZXN1Ym1pdHRlZCkpOwogCiAgICAg
bG9hZGVyLT5zZXRPdmVycmlkZUVuY29kaW5nKG1fZG9jdW1lbnRMb2FkZXItPm92ZXJyaWRlRW5j
b2RpbmcoKSk7Ci0gICAgCisKICAgICBsb2FkV2l0aERvY3VtZW50TG9hZGVyKGxvYWRlci5wdHIo
KSwgZW5kVG9FbmRSZWxvYWQgPyBGcmFtZUxvYWRUeXBlOjpSZWxvYWRGcm9tT3JpZ2luIDogRnJh
bWVMb2FkVHlwZTo6UmVsb2FkLCAwLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRVUkw6Olllcyk7
CiB9CiAKQEAgLTE2MDIsNyArMTYwMiw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnN0b3BBbGxMb2Fk
ZXJzKENsZWFyUHJvdmlzaW9uYWxJdGVtUG9saWN5IGNsZWFyUHJvdmlzaW9uYWxJdGVtCiAgICAg
Ly8gSWYgdGhpcyBtZXRob2QgaXMgY2FsbGVkIGZyb20gd2l0aGluIHRoaXMgbWV0aG9kLCBpbmZp
bml0ZSByZWN1cnNpb24gY2FuIG9jY3VyICgzNDQyMjE4KS4gQXZvaWQgdGhpcy4KICAgICBpZiAo
bV9pblN0b3BBbGxMb2FkZXJzKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICAvLyBDYWxs
aW5nIHN0b3BMb2FkaW5nKCkgb24gdGhlIHByb3Zpc2lvbmFsIGRvY3VtZW50IGxvYWRlciBjYW4g
YmxvdyBhd2F5CiAgICAgLy8gdGhlIGZyYW1lIGZyb20gdW5kZXJuZWF0aC4KICAgICBSZWY8RnJh
bWU+IHByb3RlY3QobV9mcmFtZSk7CkBAIC0xNjI3LDcgKzE2MjcsNyBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpzdG9wQWxsTG9hZGVycyhDbGVhclByb3Zpc2lvbmFsSXRlbVBvbGljeSBjbGVhclByb3Zp
c2lvbmFsSXRlbQogCiAgICAgbV9jaGVja1RpbWVyLnN0b3AoKTsKIAotICAgIG1faW5TdG9wQWxs
TG9hZGVycyA9IGZhbHNlOyAgICAKKyAgICBtX2luU3RvcEFsbExvYWRlcnMgPSBmYWxzZTsKIH0K
IAogdm9pZCBGcmFtZUxvYWRlcjo6c3RvcEZvclVzZXJDYW5jZWwoYm9vbCBkZWZlckNoZWNrTG9h
ZENvbXBsZXRlKQpAQCAtMTY2OCwxNCArMTY2OCwxNCBAQCBib29sIEZyYW1lTG9hZGVyOjppc0xv
YWRpbmcoKSBjb25zdAogCiBib29sIEZyYW1lTG9hZGVyOjpmcmFtZUhhc0xvYWRlZCgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1fc3RhdGVNYWNoaW5lLmNvbW1pdHRlZEZpcnN0UmVhbERvY3VtZW50
TG9hZCgpIHx8IChtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIgJiYgIW1fc3RhdGVNYWNoaW5l
LmNyZWF0aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSk7IAorICAgIHJldHVybiBtX3N0YXRlTWFj
aGluZS5jb21taXR0ZWRGaXJzdFJlYWxEb2N1bWVudExvYWQoKSB8fCAobV9wcm92aXNpb25hbERv
Y3VtZW50TG9hZGVyICYmICFtX3N0YXRlTWFjaGluZS5jcmVhdGluZ0luaXRpYWxFbXB0eURvY3Vt
ZW50KCkpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpzZXREb2N1bWVudExvYWRlcihEb2N1bWVu
dExvYWRlciogbG9hZGVyKQogewogICAgIGlmICghbG9hZGVyICYmICFtX2RvY3VtZW50TG9hZGVy
KQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBBU1NFUlQobG9hZGVyICE9IG1fZG9jdW1l
bnRMb2FkZXIpOwogICAgIEFTU0VSVCghbG9hZGVyIHx8IGxvYWRlci0+ZnJhbWVMb2FkZXIoKSA9
PSB0aGlzKTsKIApAQCAtMTcyNSw5ICsxNzI1LDkgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c2V0UHJv
dmlzaW9uYWxEb2N1bWVudExvYWRlcihEb2N1bWVudExvYWRlciogbG9hZGVyKQogfQogCiB2b2lk
IEZyYW1lTG9hZGVyOjpzZXRTdGF0ZShGcmFtZVN0YXRlIG5ld1N0YXRlKQoteyAgICAKK3sKICAg
ICBtX3N0YXRlID0gbmV3U3RhdGU7Ci0gICAgCisKICAgICBpZiAobmV3U3RhdGUgPT0gRnJhbWVT
dGF0ZVByb3Zpc2lvbmFsKQogICAgICAgICBwcm92aXNpb25hbExvYWRTdGFydGVkKCk7CiAgICAg
ZWxzZSBpZiAobmV3U3RhdGUgPT0gRnJhbWVTdGF0ZUNvbXBsZXRlKSB7CkBAIC0xODEyLDcgKzE4
MTIsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQoKQogICAgIC8v
IGp1c3QgYWJvdXQgdG8gY29tbWl0IGEgbmV3IHBhZ2UsIHRoZXJlIGNhbm5vdCBwb3NzaWJseSBi
ZSBhIHBlbmRpbmcgcmVkaXJlY3QgYXQgdGhpcyBwb2ludC4KICAgICBpZiAobV9zZW50UmVkaXJl
Y3ROb3RpZmljYXRpb24pCiAgICAgICAgIGNsaWVudFJlZGlyZWN0Q2FuY2VsbGVkT3JGaW5pc2hl
ZChmYWxzZSk7Ci0gICAgCisKICAgICBpZiAoY2FjaGVkUGFnZSAmJiBjYWNoZWRQYWdlLT5kb2N1
bWVudCgpKSB7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgICAgICAvLyBGSVhNRTogQ2FjaGVkUGFn
ZTo6cmVzdG9yZSgpIHdvdWxkIGRpc3BhdGNoIHZpZXdwb3J0IGNoYW5nZSBub3RpZmljYXRpb24u
IEhvd2V2ZXIgVUlLaXQgZXhwZWN0cyBsb2FkCkBAIC0xODM3LDcgKzE4MzcsNyBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQoKQogICAgICAgICBtX2ZyYW1lLnBhZ2Uo
KS0+Y2hyb21lKCkuc2V0RGlzcGF0Y2hWaWV3cG9ydERhdGFEaWRDaGFuZ2VTdXBwcmVzc2VkKGZh
bHNlKTsKICAgICAgICAgbV9mcmFtZS5wYWdlKCktPmNocm9tZSgpLmRpc3BhdGNoVmlld3BvcnRQ
cm9wZXJ0aWVzRGlkQ2hhbmdlKG1fZnJhbWUucGFnZSgpLT52aWV3cG9ydEFyZ3VtZW50cygpKTsK
ICNlbmRpZgotICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgdGl0bGUgbGV0IHRoZSBXZWJWaWV3IGtu
b3cgYWJvdXQgaXQuIAorICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgdGl0bGUgbGV0IHRoZSBXZWJW
aWV3IGtub3cgYWJvdXQgaXQuCiAgICAgICAgIFN0cmluZ1dpdGhEaXJlY3Rpb24gdGl0bGUgPSBt
X2RvY3VtZW50TG9hZGVyLT50aXRsZSgpOwogICAgICAgICBpZiAoIXRpdGxlLmlzTnVsbCgpKQog
ICAgICAgICAgICAgbV9jbGllbnQuZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUodGl0bGUpOwpAQCAt
MjAyMiwxMSArMjAyMiwxMSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjbGllbnRSZWRpcmVjdENhbmNl
bGxlZE9yRmluaXNoZWQoYm9vbCBjYW5jZWxXaXRoTG9hZEluUHJvZ3Jlcwogdm9pZCBGcmFtZUxv
YWRlcjo6Y2xpZW50UmVkaXJlY3RlZChjb25zdCBVUkwmIHVybCwgZG91YmxlIHNlY29uZHMsIGRv
dWJsZSBmaXJlRGF0ZSwgTG9ja0JhY2tGb3J3YXJkTGlzdCBsb2NrQmFja0ZvcndhcmRMaXN0KQog
ewogICAgIG1fY2xpZW50LmRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdCh1cmwsIHNl
Y29uZHMsIGZpcmVEYXRlKTsKLSAgICAKKwogICAgIC8vIFJlbWVtYmVyIHRoYXQgd2Ugc2VudCBh
IHJlZGlyZWN0IG5vdGlmaWNhdGlvbiB0byB0aGUgZnJhbWUgbG9hZCBkZWxlZ2F0ZSBzbyB0aGF0
IHdoZW4gd2UgY29tbWl0CiAgICAgLy8gdGhlIG5leHQgcHJvdmlzaW9uYWwgbG9hZCwgd2UgY2Fu
IHNlbmQgYSBjb3JyZXNwb25kaW5nIC13ZWJWaWV3OmRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9y
RnJhbWU6CiAgICAgbV9zZW50UmVkaXJlY3ROb3RpZmljYXRpb24gPSB0cnVlOwotICAgIAorCiAg
ICAgLy8gSWYgYSAicXVpY2siIHJlZGlyZWN0IGNvbWVzIGluLCB3ZSBzZXQgYSBzcGVjaWFsIG1v
ZGUgc28gd2UgdHJlYXQgdGhlIG5leHQKICAgICAvLyBsb2FkIGFzIHBhcnQgb2YgdGhlIG9yaWdp
bmFsIG5hdmlnYXRpb24uIElmIHdlIGRvbid0IGhhdmUgYSBkb2N1bWVudCBsb2FkZXIsIHdlIGhh
dmUKICAgICAvLyBubyAib3JpZ2luYWwiIGxvYWQgb24gd2hpY2ggdG8gYmFzZSBhIHJlZGlyZWN0
LCBzbyB3ZSB0cmVhdCB0aGUgcmVkaXJlY3QgYXMgYSBub3JtYWwgbG9hZC4KQEAgLTIwNTEsNyAr
MjA1MSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNsb3NlT2xkRGF0YVNvdXJjZXMoKQogICAgIC8v
IHVzZSBhIHJlY3Vyc2l2ZSBhbGdvcml0aG0gaGVyZS4KICAgICBmb3IgKEZyYW1lKiBjaGlsZCA9
IG1fZnJhbWUudHJlZSgpLmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUo
KS5uZXh0U2libGluZygpKQogICAgICAgICBjaGlsZC0+bG9hZGVyKCkuY2xvc2VPbGREYXRhU291
cmNlcygpOwotICAgIAorCiAgICAgaWYgKG1fZG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIG1fY2xp
ZW50LmRpc3BhdGNoV2lsbENsb3NlKCk7CiAKQEAgLTIwNjgsNyArMjA2OCw3IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OnByZXBhcmVGb3JDYWNoZWRQYWdlUmVzdG9yZSgpCiAKICAgICAvLyBXZSBzdGls
bCBoYXZlIHRvIGNsb3NlIHRoZSBwcmV2aW91cyBwYXJ0IHBhZ2UuCiAgICAgY2xvc2VVUkwoKTsK
LSAgICAKKwogICAgIC8vIERlbGV0ZSBvbGQgc3RhdHVzIGJhciBtZXNzYWdlcyAoaWYgaXQgX3dh
c18gYWN0aXZhdGVkIG9uIGxhc3QgVVJMKS4KICAgICBpZiAobV9mcmFtZS5zY3JpcHQoKS5jYW5F
eGVjdXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpIHsKICAgICAgICAgRE9NV2lu
ZG93KiB3aW5kb3cgPSBtX2ZyYW1lLmRvY3VtZW50KCktPmRvbVdpbmRvdygpOwpAQCAtMjA4MCw3
ICsyMDgwLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cHJlcGFyZUZvckNhY2hlZFBhZ2VSZXN0b3Jl
KCkKIHZvaWQgRnJhbWVMb2FkZXI6Om9wZW4oQ2FjaGVkRnJhbWVCYXNlJiBjYWNoZWRGcmFtZSkK
IHsKICAgICBtX2lzQ29tcGxldGUgPSBmYWxzZTsKLSAgICAKKwogICAgIC8vIERvbid0IHJlLWVt
aXQgdGhlIGxvYWQgZXZlbnQuCiAgICAgbV9kaWRDYWxsSW1wbGljaXRDbG9zZSA9IHRydWU7CiAK
QEAgLTIxMDUsNyArMjEwNSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6Om9wZW4oQ2FjaGVkRnJhbWVC
YXNlJiBjYWNoZWRGcmFtZSkKICAgICBtX291dGdvaW5nUmVmZXJyZXIgPSB1cmwuc3RyaW5nKCk7
CiAKICAgICBGcmFtZVZpZXcqIHZpZXcgPSBjYWNoZWRGcmFtZS52aWV3KCk7Ci0gICAgCisKICAg
ICAvLyBXaGVuIG5hdmlnYXRpbmcgdG8gYSBDYWNoZWRGcmFtZSBpdHMgRnJhbWVWaWV3IHNob3Vs
ZCBuZXZlciBiZSBudWxsLiAgSWYgaXQgaXMgd2UnbGwgY3Jhc2ggaW4gY3JlYXRpdmUgd2F5cyBk
b3duc3RyZWFtLgogICAgIEFTU0VSVCh2aWV3KTsKICAgICB2aWV3LT5zZXRXYXNTY3JvbGxlZEJ5
VXNlcihmYWxzZSk7CkBAIC0yMTE2LDcgKzIxMTYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpvcGVu
KENhY2hlZEZyYW1lQmFzZSYgY2FjaGVkRnJhbWUpCiAgICAgLy8gVXNlIHRoZSBwcmV2aW91cyBT
Y3JvbGxWaWV3J3MgZnJhbWUgcmVjdC4KICAgICBpZiAocHJldmlvdXNWaWV3RnJhbWVSZWN0KQog
ICAgICAgICB2aWV3LT5zZXRGcmFtZVJlY3QocHJldmlvdXNWaWV3RnJhbWVSZWN0LnZhbHVlKCkp
OwotICAgIAorCiAgICAgbV9mcmFtZS5zZXREb2N1bWVudChkb2N1bWVudCk7CiAgICAgZG9jdW1l
bnQtPmRvbVdpbmRvdygpLT5yZXN1bWVGcm9tRG9jdW1lbnRTdXNwZW5zaW9uKCk7CiAKQEAgLTIx
NjgsNyArMjE2OCw3IEBAIEZyYW1lTG9hZFR5cGUgRnJhbWVMb2FkZXI6OmxvYWRUeXBlKCkgY29u
c3QKIHsKICAgICByZXR1cm4gbV9sb2FkVHlwZTsKIH0KLSAgICAKKwogQ2FjaGVQb2xpY3kgRnJh
bWVMb2FkZXI6OnN1YnJlc291cmNlQ2FjaGVQb2xpY3koKSBjb25zdAogewogICAgIGlmIChQYWdl
KiBwYWdlID0gbV9mcmFtZS5wYWdlKCkpIHsKQEAgLTIxODcsNyArMjE4Nyw3IEBAIENhY2hlUG9s
aWN5IEZyYW1lTG9hZGVyOjpzdWJyZXNvdXJjZUNhY2hlUG9saWN5KCkgY29uc3QKICAgICAgICAg
aWYgKHBhcmVudENhY2hlUG9saWN5ICE9IENhY2hlUG9saWN5VmVyaWZ5KQogICAgICAgICAgICAg
cmV0dXJuIHBhcmVudENhY2hlUG9saWN5OwogICAgIH0KLSAgICAKKwogICAgIHN3aXRjaCAobV9s
b2FkVHlwZSkgewogICAgIGNhc2UgRnJhbWVMb2FkVHlwZTo6UmVsb2FkOgogICAgICAgICByZXR1
cm4gQ2FjaGVQb2xpY3lSZXZhbGlkYXRlOwpAQCAtMjIyNSw3ICsyMjI1LDcgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6Y2hlY2tMb2FkQ29tcGxldGVGb3JUaGlzRnJhbWUoKQogICAgICAgICAgICAgUmVm
UHRyPERvY3VtZW50TG9hZGVyPiBwZGwgPSBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXI7CiAg
ICAgICAgICAgICBpZiAoIXBkbCkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICAgICAgCisKICAgICAgICAgICAgIC8vIElmIHdlJ3ZlIHJlY2VpdmVkIGFueSBlcnJvcnMgd2Ug
bWF5IGJlIHN0dWNrIGluIHRoZSBwcm92aXNpb25hbCBzdGF0ZSBhbmQgYWN0dWFsbHkgY29tcGxl
dGUuCiAgICAgICAgICAgICBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciA9IHBkbC0+bWFpbkRv
Y3VtZW50RXJyb3IoKTsKICAgICAgICAgICAgIGlmIChlcnJvci5pc051bGwoKSkKQEAgLTIyMzcs
NyArMjIzNyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRlRm9yVGhpc0Zy
YW1lKCkKICAgICAgICAgICAgICAgICBpZiAoaXNCYWNrRm9yd2FyZExvYWRUeXBlKGxvYWRUeXBl
KCkpKQogICAgICAgICAgICAgICAgICAgICAvLyBSZXNldCB0aGUgYmFjayBmb3J3YXJkIGxpc3Qg
dG8gdGhlIGxhc3QgY29tbWl0dGVkIGhpc3RvcnkgaXRlbSBhdCB0aGUgdG9wIGxldmVsLgogICAg
ICAgICAgICAgICAgICAgICBpdGVtID0gcGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuaGlzdG9y
eSgpLmN1cnJlbnRJdGVtKCk7Ci0gICAgICAgICAgICAgICAgCisKICAgICAgICAgICAgIC8vIE9u
bHkgcmVzZXQgaWYgd2UgYXJlbid0IGFscmVhZHkgZ29pbmcgdG8gYSBuZXcgcHJvdmlzaW9uYWwg
aXRlbS4KICAgICAgICAgICAgIGJvb2wgc2hvdWxkUmVzZXQgPSAhaGlzdG9yeSgpLnByb3Zpc2lv
bmFsSXRlbSgpOwogICAgICAgICAgICAgaWYgKCFwZGwtPmlzTG9hZGluZ0luQVBJU2Vuc2UoKSB8
fCBwZGwtPmlzU3RvcHBpbmcoKSkgewpAQCAtMjI2OCw5ICsyMjY4LDkgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6Y2hlY2tMb2FkQ29tcGxldGVGb3JUaGlzRnJhbWUoKQogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBjYXNl
IEZyYW1lU3RhdGVDb21taXR0ZWRQYWdlOiB7Ci0gICAgICAgICAgICBEb2N1bWVudExvYWRlciog
ZGwgPSBtX2RvY3VtZW50TG9hZGVyLmdldCgpOyAgICAgICAgICAgIAorICAgICAgICAgICAgRG9j
dW1lbnRMb2FkZXIqIGRsID0gbV9kb2N1bWVudExvYWRlci5nZXQoKTsKICAgICAgICAgICAgIGlm
ICghZGwgfHwgKGRsLT5pc0xvYWRpbmdJbkFQSVNlbnNlKCkgJiYgIWRsLT5pc1N0b3BwaW5nKCkp
KQogICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMjI4MSw3ICsyMjgxLDcgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29tcGxldGVGb3JUaGlzRnJhbWUoKQogICAgICAgICAgICAg
Ly8gdGhlIG5ldyBwYWdlIGlzIHJlYWR5LgogCiAgICAgICAgICAgICBtX2NsaWVudC5mb3JjZUxh
eW91dEZvck5vbkhUTUwoKTsKLSAgICAgICAgICAgICAKKwogICAgICAgICAgICAgLy8gSWYgdGhl
IHVzZXIgaGFkIGEgc2Nyb2xsIHBvaW50LCBzY3JvbGwgdG8gaXQsIG92ZXJyaWRpbmcgdGhlIGFu
Y2hvciBwb2ludCBpZiBhbnkuCiAgICAgICAgICAgICBpZiAobV9mcmFtZS5wYWdlKCkpIHsKICAg
ICAgICAgICAgICAgICBpZiAoaXNCYWNrRm9yd2FyZExvYWRUeXBlKG1fbG9hZFR5cGUpIHx8IG1f
bG9hZFR5cGUgPT0gRnJhbWVMb2FkVHlwZTo6UmVsb2FkIHx8IG1fbG9hZFR5cGUgPT0gRnJhbWVM
b2FkVHlwZTo6UmVsb2FkRnJvbU9yaWdpbikKQEAgLTIzMzMsNyArMjMzMyw3IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRlRm9yVGhpc0ZyYW1lKCkKIAogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGNhc2UgRnJhbWVTdGF0ZUNv
bXBsZXRlOgogICAgICAgICAgICAgbV9sb2FkVHlwZSA9IEZyYW1lTG9hZFR5cGU6OlN0YW5kYXJk
OwogICAgICAgICAgICAgZnJhbWVMb2FkQ29tcGxldGVkKCk7CkBAIC0yMzQ5LDggKzIzNDksOCBA
QCB2b2lkIEZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRlcldpbGxTdWJtaXRGb3JtKCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgcHJlcGFyZUZvckxvYWRTdGFydCgpOwotICAgIAotICAgIC8v
IFRoZSBsb2FkIG1pZ2h0IGJlIGNhbmNlbGxlZCBpbnNpZGUgb2YgcHJlcGFyZUZvckxvYWRTdGFy
dCgpLCBudWxsaW5nIG91dCB0aGUgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLCAKKworICAg
IC8vIFRoZSBsb2FkIG1pZ2h0IGJlIGNhbmNlbGxlZCBpbnNpZGUgb2YgcHJlcGFyZUZvckxvYWRT
dGFydCgpLCBudWxsaW5nIG91dCB0aGUgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLAogICAg
IC8vIHNvIHdlIG5lZWQgdG8gbnVsbCBjaGVjayBpdCBhZ2Fpbi4KICAgICBpZiAoIW1fcHJvdmlz
aW9uYWxEb2N1bWVudExvYWRlcikKICAgICAgICAgcmV0dXJuOwpAQCAtMjQ0NiwxMyArMjQ0Niwx
MyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjbG9zZUFuZFJlbW92ZUNoaWxkKEZyYW1lKiBjaGlsZCkK
IHZvaWQgRnJhbWVMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRlKCkKIHsKICAgICBBU1NFUlQobV9j
bGllbnQuaGFzV2ViVmlldygpKTsKLSAgICAKKwogICAgIG1fc2hvdWxkQ2FsbENoZWNrTG9hZENv
bXBsZXRlID0gZmFsc2U7CiAKICAgICBpZiAoIW1fZnJhbWUucGFnZSgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICAvLyBGSVhNRTogQWx3YXlzIHRyYXZlcnNpbmcgdGhlIGVudGlyZSBmcmFtZSB0
cmVlIGlzIGEgYml0IGluZWZmaWNpZW50LCBidXQgCisgICAgLy8gRklYTUU6IEFsd2F5cyB0cmF2
ZXJzaW5nIHRoZSBlbnRpcmUgZnJhbWUgdHJlZSBpcyBhIGJpdCBpbmVmZmljaWVudCwgYnV0CiAg
ICAgLy8gaXMgY3VycmVudGx5IG5lZWRlZCBpbiBvcmRlciB0byBudWxsIG91dCB0aGUgcHJldmlv
dXMgaGlzdG9yeSBpdGVtIGZvciBhbGwgZnJhbWVzLgogICAgIFZlY3RvcjxSZWY8RnJhbWU+LCAx
Nj4gZnJhbWVzOwogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1fZnJhbWUubWFpbkZyYW1lKCk7
IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpCkBAIC0yNTMzLDcg
KzI1MzMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkZXRhY2hWaWV3c0FuZERvY3VtZW50TG9hZGVy
KCkKICAgICBzZXREb2N1bWVudExvYWRlcihudWxscHRyKTsKICAgICBtX2NsaWVudC5kZXRhY2hl
ZEZyb21QYXJlbnQzKCk7CiB9Ci0gICAgCisKIHZvaWQgRnJhbWVMb2FkZXI6OmFkZEV4dHJhRmll
bGRzVG9TdWJyZXNvdXJjZVJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAg
IGFkZEV4dHJhRmllbGRzVG9SZXF1ZXN0KHJlcXVlc3QsIG1fbG9hZFR5cGUsIGZhbHNlKTsKQEAg
LTI2NjQsNyArMjY2NCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdChjb25z
dCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmCiAgICAgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSA9IGluUmVxdWVzdC5odHRwQ29udGVudFR5cGUoKTsKICAgICBTdHJp
bmcgb3JpZ2luID0gaW5SZXF1ZXN0Lmh0dHBPcmlnaW4oKTsKIAotICAgIFJlc291cmNlUmVxdWVz
dCB3b3JraW5nUmVzb3VyY2VSZXF1ZXN0KHVybCk7ICAgIAorICAgIFJlc291cmNlUmVxdWVzdCB3
b3JraW5nUmVzb3VyY2VSZXF1ZXN0KHVybCk7CiAKICAgICBpZiAoIXJlZmVycmVyLmlzRW1wdHko
KSkKICAgICAgICAgd29ya2luZ1Jlc291cmNlUmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIocmVmZXJy
ZXIpOwpAQCAtMjcwMywxOSArMjcwMywxOSBAQCB1bnNpZ25lZCBsb25nIEZyYW1lTG9hZGVyOjps
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdQogewog
ICAgIEFTU0VSVChtX2ZyYW1lLmRvY3VtZW50KCkpOwogICAgIFN0cmluZyByZWZlcnJlciA9IFNl
Y3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKG1fZnJhbWUuZG9jdW1lbnQoKS0+
cmVmZXJyZXJQb2xpY3koKSwgcmVxdWVzdC51cmwoKSwgb3V0Z29pbmdSZWZlcnJlcigpKTsKLSAg
ICAKKwogICAgIFJlc291cmNlUmVxdWVzdCBpbml0aWFsUmVxdWVzdCA9IHJlcXVlc3Q7CiAgICAg
aW5pdGlhbFJlcXVlc3Quc2V0VGltZW91dEludGVydmFsKDEwKTsKLSAgICAKKwogICAgIGlmICgh
cmVmZXJyZXIuaXNFbXB0eSgpKQogICAgICAgICBpbml0aWFsUmVxdWVzdC5zZXRIVFRQUmVmZXJy
ZXIocmVmZXJyZXIpOwogICAgIGFkZEhUVFBPcmlnaW5JZk5lZWRlZChpbml0aWFsUmVxdWVzdCwg
b3V0Z29pbmdPcmlnaW4oKSk7CiAKICAgICBpbml0aWFsUmVxdWVzdC5zZXRGaXJzdFBhcnR5Rm9y
Q29va2llcyhtX2ZyYW1lLm1haW5GcmFtZSgpLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJl
cXVlc3QoKS51cmwoKSk7Ci0gICAgCisKICAgICBhZGRFeHRyYUZpZWxkc1RvU3VicmVzb3VyY2VS
ZXF1ZXN0KGluaXRpYWxSZXF1ZXN0KTsKIAotICAgIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciA9
IDA7ICAgIAorICAgIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciA9IDA7CiAgICAgUmVzb3VyY2VS
ZXF1ZXN0IG5ld1JlcXVlc3QoaW5pdGlhbFJlcXVlc3QpOwogICAgIHJlcXVlc3RGcm9tRGVsZWdh
dGUobmV3UmVxdWVzdCwgaWRlbnRpZmllciwgZXJyb3IpOwogCkBAIC0yNzY2LDEyICsyNzY2LDEy
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJlY2VpdmVkTWFpblJlc291cmNlRXJyb3IoY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IpCiAgICAgaWYgKG1fc3RhdGUgPT0gRnJhbWVTdGF0ZVByb3Zpc2lv
bmFsICYmIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcikgewogICAgICAgICBpZiAobV9zdWJt
aXR0ZWRGb3JtVVJMID09IG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+b3JpZ2luYWxSZXF1
ZXN0Q29weSgpLnVybCgpKQogICAgICAgICAgICAgbV9zdWJtaXR0ZWRGb3JtVVJMID0gVVJMKCk7
Ci0gICAgICAgICAgICAKKwogICAgICAgICAvLyBXZSBtaWdodCBoYXZlIG1hZGUgYSBwYWdlIGNh
Y2hlIGl0ZW0sIGJ1dCBub3cgd2UncmUgYmFpbGluZyBvdXQgZHVlIHRvIGFuIGVycm9yIGJlZm9y
ZSB3ZSBldmVyCiAgICAgICAgIC8vIHRyYW5zaXRpb25lZCB0byB0aGUgbmV3IHBhZ2UgKGJlZm9y
ZSBXZWJGcmFtZVN0YXRlID09IGNvbW1pdCkuICBUaGUgZ29hbCBoZXJlIGlzIHRvIHJlc3RvcmUg
YW55IHN0YXRlCiAgICAgICAgIC8vIHNvIHRoYXQgdGhlIGV4aXN0aW5nIHZpZXcgKHRoYXQgd2Vu
ZXZlciBnb3QgZmFyIGVub3VnaCB0byByZXBsYWNlKSBjYW4gY29udGludWUgYmVpbmcgdXNlZC4K
ICAgICAgICAgaGlzdG9yeSgpLmludmFsaWRhdGVDdXJyZW50SXRlbUNhY2hlZFBhZ2UoKTsKLSAg
ICAgICAgCisKICAgICAgICAgLy8gQ2FsbCBjbGllbnRSZWRpcmVjdENhbmNlbGxlZE9yRmluaXNo
ZWQgaGVyZSBzbyB0aGF0IHRoZSBmcmFtZSBsb2FkIGRlbGVnYXRlIGlzIG5vdGlmaWVkIHRoYXQg
dGhlIHJlZGlyZWN0J3MKICAgICAgICAgLy8gc3RhdHVzIGhhcyBjaGFuZ2VkLCBpZiB0aGVyZSB3
YXMgYSByZWRpcmVjdC4gVGhlIGZyYW1lIGxvYWQgZGVsZWdhdGUgbWF5IGhhdmUgc2F2ZWQgc29t
ZSBzdGF0ZSBhYm91dAogICAgICAgICAvLyB0aGUgcmVkaXJlY3QgaW4gaXRzIC13ZWJWaWV3Ondp
bGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTDpkZWxheTpmaXJlRGF0ZTpmb3JGcmFtZTouIFNp
bmNlIHdlIGFyZSBkZWZpbml0ZWx5CkBAIC0yOTQ4LDcgKzI5NDgsNyBAQCBib29sIEZyYW1lTG9h
ZGVyOjpkaXNwYXRjaEJlZm9yZVVubG9hZEV2ZW50KENocm9tZSYgY2hyb21lLCBGcmFtZUxvYWRl
ciogZnJhbWVMbwogICAgIFJlZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQgPSBtX2ZyYW1lLmRvY3Vt
ZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudC0+Ym9keU9yRnJhbWVzZXQoKSkKICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgCisKICAgICBSZWY8QmVmb3JlVW5sb2FkRXZlbnQ+IGJlZm9yZVVubG9h
ZEV2ZW50ID0gQmVmb3JlVW5sb2FkRXZlbnQ6OmNyZWF0ZSgpOwogICAgIG1fcGFnZURpc21pc3Nh
bEV2ZW50QmVpbmdEaXNwYXRjaGVkID0gUGFnZURpc21pc3NhbFR5cGU6OkJlZm9yZVVubG9hZDsK
IApAQCAtMjk4NCwxMyArMjk4NCwxMyBAQCBib29sIEZyYW1lTG9hZGVyOjpkaXNwYXRjaEJlZm9y
ZVVubG9hZEV2ZW50KENocm9tZSYgY2hyb21lLCBGcmFtZUxvYWRlciogZnJhbWVMbwogICAgICAg
ICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywg
TWVzc2FnZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFsKCJCbG9ja2VkIGF0dGVtcHQgdG8gc2hv
dyBiZWZvcmV1bmxvYWQgY29uZmlybWF0aW9uIGRpYWxvZyBvbiBiZWhhbGYgb2YgYSBmcmFtZSB3
aXRoIGRpZmZlcmVudCBzZWN1cml0eSBvcmlnaW4uIFByb3RvY29scywgZG9tYWlucywgYW5kIHBv
cnRzIG11c3QgbWF0Y2guIikpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGlmICgmcGFyZW50RnJhbWUtPmxv
YWRlcigpID09IGZyYW1lTG9hZGVyQmVpbmdOYXZpZ2F0ZWQpCiAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgcGFyZW50RnJhbWUgPSBwYXJlbnRGcmFt
ZS0+dHJlZSgpLnBhcmVudCgpOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIC8vIFRo
ZSBuYXZpZ2F0aW5nRnJhbWVMb2FkZXIgc2hvdWxkIGFsd2F5cyBiZSBpbiBvdXIgYW5jZXN0b3J5
LgogICAgICAgICBBU1NFUlQocGFyZW50RnJhbWUpOwogICAgICAgICBBU1NFUlQoJnBhcmVudEZy
YW1lLT5sb2FkZXIoKSA9PSBmcmFtZUxvYWRlckJlaW5nTmF2aWdhdGVkKTsKQEAgLTMwMTQsMTQg
KzMwMTQsMTQgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9u
UG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWUKICAgICBib29sIHVybElzRGlzYWxs
b3dlZCA9IGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCA9PSBBbGxvd05hdmlnYXRpb25Ub0lu
dmFsaWRVUkw6Ok5vICYmICFyZXF1ZXN0LnVybCgpLmlzVmFsaWQoKTsKIAogICAgIC8vIFRocmVl
IHJlYXNvbnMgd2UgY2FuJ3QgY29udGludWU6Ci0gICAgLy8gICAgMSkgTmF2aWdhdGlvbiBwb2xp
Y3kgZGVsZWdhdGUgc2FpZCB3ZSBjYW4ndCBzbyByZXF1ZXN0IGlzIG5pbC4gQSBwcmltYXJ5IGNh
c2Ugb2YgdGhpcyAKKyAgICAvLyAgICAxKSBOYXZpZ2F0aW9uIHBvbGljeSBkZWxlZ2F0ZSBzYWlk
IHdlIGNhbid0IHNvIHJlcXVlc3QgaXMgbmlsLiBBIHByaW1hcnkgY2FzZSBvZiB0aGlzCiAgICAg
Ly8gICAgICAgaXMgdGhlIHVzZXIgcmVzcG9uZGluZyBDYW5jZWwgdG8gdGhlIGZvcm0gcmVwb3N0
IG5hZyBzaGVldC4KICAgICAvLyAgICAyKSBVc2VyIHJlc3BvbmRlZCBDYW5jZWwgdG8gYW4gYWxl
cnQgcG9wcGVkIHVwIGJ5IHRoZSBiZWZvcmUgdW5sb2FkIGV2ZW50IGhhbmRsZXIuCiAgICAgLy8g
ICAgMykgVGhlIHJlcXVlc3QncyBVUkwgaXMgaW52YWxpZCBhbmQgbmF2aWdhdGlvbiB0byBpbnZh
bGlkIFVSTHMgaXMgZGlzYWxsb3dlZC4KICAgICBib29sIGNhbkNvbnRpbnVlID0gc2hvdWxkQ29u
dGludWUgJiYgc2hvdWxkQ2xvc2UoKSAmJiAhdXJsSXNEaXNhbGxvd2VkOwogCiAgICAgaWYgKCFj
YW5Db250aW51ZSkgewotICAgICAgICAvLyBJZiB3ZSB3ZXJlIHdhaXRpbmcgZm9yIGEgcXVpY2sg
cmVkaXJlY3QsIGJ1dCB0aGUgcG9saWN5IGRlbGVnYXRlIGRlY2lkZWQgdG8gaWdub3JlIGl0LCB0
aGVuIHdlIAorICAgICAgICAvLyBJZiB3ZSB3ZXJlIHdhaXRpbmcgZm9yIGEgcXVpY2sgcmVkaXJl
Y3QsIGJ1dCB0aGUgcG9saWN5IGRlbGVnYXRlIGRlY2lkZWQgdG8gaWdub3JlIGl0LCB0aGVuIHdl
CiAgICAgICAgIC8vIG5lZWQgdG8gcmVwb3J0IHRoYXQgdGhlIGNsaWVudCByZWRpcmVjdCB3YXMg
Y2FuY2VsbGVkLgogICAgICAgICAvLyBGSVhNRTogVGhlIGNsaWVudCBzaG91bGQgYmUgdG9sZCBh
Ym91dCBpZ25vcmVkIG5vbi1xdWljayByZWRpcmVjdHMsIHRvby4KICAgICAgICAgaWYgKG1fcXVp
Y2tSZWRpcmVjdENvbWluZykKQEAgLTMwMjksOSArMzAyOSw5IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OmNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlCiAKICAgICAgICAgc2V0UG9saWN5RG9jdW1lbnRMb2FkZXIobnVsbHB0cik7CiAKLSAg
ICAgICAgLy8gSWYgdGhlIG5hdmlnYXRpb24gcmVxdWVzdCBjYW1lIGZyb20gdGhlIGJhY2svZm9y
d2FyZCBtZW51LCBhbmQgd2UgcHVudCBvbiBpdCwgd2UgaGF2ZSB0aGUgCi0gICAgICAgIC8vIHBy
b2JsZW0gdGhhdCB3ZSBoYXZlIG9wdGltaXN0aWNhbGx5IG1vdmVkIHRoZSBiL2YgY3Vyc29yIGFs
cmVhZHksIHNvIG1vdmUgaXQgYmFjay4gIEZvciBzYW5pdHksIAotICAgICAgICAvLyB3ZSBvbmx5
IGRvIHRoaXMgd2hlbiBwdW50aW5nIGEgbmF2aWdhdGlvbiBmb3IgdGhlIHRhcmdldCBmcmFtZSBv
ciB0b3AtbGV2ZWwgZnJhbWUuICAKKyAgICAgICAgLy8gSWYgdGhlIG5hdmlnYXRpb24gcmVxdWVz
dCBjYW1lIGZyb20gdGhlIGJhY2svZm9yd2FyZCBtZW51LCBhbmQgd2UgcHVudCBvbiBpdCwgd2Ug
aGF2ZSB0aGUKKyAgICAgICAgLy8gcHJvYmxlbSB0aGF0IHdlIGhhdmUgb3B0aW1pc3RpY2FsbHkg
bW92ZWQgdGhlIGIvZiBjdXJzb3IgYWxyZWFkeSwgc28gbW92ZSBpdCBiYWNrLiBGb3Igc2FuaXR5
LAorICAgICAgICAvLyB3ZSBvbmx5IGRvIHRoaXMgd2hlbiBwdW50aW5nIGEgbmF2aWdhdGlvbiBm
b3IgdGhlIHRhcmdldCBmcmFtZSBvciB0b3AtbGV2ZWwgZnJhbWUuCiAgICAgICAgIGlmICgoaXNU
YXJnZXRJdGVtIHx8IG1fZnJhbWUuaXNNYWluRnJhbWUoKSkgJiYgaXNCYWNrRm9yd2FyZExvYWRU
eXBlKHBvbGljeUNoZWNrZXIoKS5sb2FkVHlwZSgpKSkgewogICAgICAgICAgICAgaWYgKFBhZ2Uq
IHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKSkgewogICAgICAgICAgICAgICAgIGlmIChIaXN0b3J5SXRl
bSogcmVzZXRJdGVtID0gbV9mcmFtZS5tYWluRnJhbWUoKS5sb2FkZXIoKS5oaXN0b3J5KCkuY3Vy
cmVudEl0ZW0oKSkgewpAQCAtMzA0Niw5ICszMDQ2LDkgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29u
dGludWVMb2FkQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWUKICAgICBGcmFtZUxvYWRUeXBlIHR5cGUgPSBwb2xpY3lDaGVja2VyKCkubG9hZFR5cGUoKTsK
ICAgICAvLyBBIG5ldyBuYXZpZ2F0aW9uIGlzIGluIHByb2dyZXNzLCBzbyBkb24ndCBjbGVhciB0
aGUgaGlzdG9yeSdzIHByb3Zpc2lvbmFsIGl0ZW0uCiAgICAgc3RvcEFsbExvYWRlcnMoU2hvdWxk
Tm90Q2xlYXJQcm92aXNpb25hbEl0ZW0pOwotICAgIAorCiAgICAgLy8gPHJkYXI6Ly9wcm9ibGVt
LzYyNTA4NTY+IC0gSW4gY2VydGFpbiBjaXJjdW1zdGFuY2VzIG9uIHBhZ2VzIHdpdGggbXVsdGlw
bGUgZnJhbWVzLCBzdG9wQWxsTG9hZGVycygpCi0gICAgLy8gbWlnaHQgZGV0YWNoIHRoZSBjdXJy
ZW50IEZyYW1lTG9hZGVyLCBpbiB3aGljaCBjYXNlIHdlIHNob3VsZCBiYWlsIG9uIHRoaXMgbmV3
bHkgZGVmdW5jdCBsb2FkLiAKKyAgICAvLyBtaWdodCBkZXRhY2ggdGhlIGN1cnJlbnQgRnJhbWVM
b2FkZXIsIGluIHdoaWNoIGNhc2Ugd2Ugc2hvdWxkIGJhaWwgb24gdGhpcyBuZXdseSBkZWZ1bmN0
IGxvYWQuCiAgICAgaWYgKCFtX2ZyYW1lLnBhZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0z
MjY0LDcgKzMyNjQsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkU2FtZURvY3VtZW50SXRlbShI
aXN0b3J5SXRlbSYgaXRlbSkKICAgICAgICAgdmlldy0+c2V0V2FzU2Nyb2xsZWRCeVVzZXIoZmFs
c2UpOwogCiAgICAgaGlzdG9yeSgpLnNldEN1cnJlbnRJdGVtKCZpdGVtKTsKLSAgICAgICAgCisK
ICAgICAvLyBsb2FkSW5TYW1lRG9jdW1lbnQoKSBhY3R1YWxseSBjaGFuZ2VzIHRoZSBVUkwgYW5k
IG5vdGlmaWVzIGxvYWQgZGVsZWdhdGVzIG9mIGEgImZha2UiIGxvYWQKICAgICBsb2FkSW5TYW1l
RG9jdW1lbnQoaXRlbS51cmwoKSwgaXRlbS5zdGF0ZU9iamVjdCgpLCBmYWxzZSk7CiAKQEAgLTMz
MTksMTUgKzMzMTksMTUgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZERpZmZlcmVudERvY3VtZW50
SXRlbShIaXN0b3J5SXRlbSYgaXRlbSwgRnJhbWVMb2FkVHlwZSBsb2EKICAgICAgICAgLy8gTWFr
ZSBzdXJlIHRvIGFkZCBleHRyYSBmaWVsZHMgdG8gdGhlIHJlcXVlc3QgYWZ0ZXIgdGhlIE9yaWdp
biBoZWFkZXIgaXMgYWRkZWQgZm9yIHRoZSBGb3JtRGF0YSBjYXNlLgogICAgICAgICAvLyBTZWUg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTk0IGZvciBtb3JlIGRp
c2N1c3Npb24uCiAgICAgICAgIGFkZEV4dHJhRmllbGRzVG9SZXF1ZXN0KHJlcXVlc3QsIGxvYWRU
eXBlLCB0cnVlKTsKLSAgICAgICAgCisKICAgICAgICAgLy8gRklYTUU6IFNsaWdodCBoYWNrIHRv
IHRlc3QgaWYgdGhlIE5TVVJMIGNhY2hlIGNvbnRhaW5zIHRoZSBwYWdlIHdlJ3JlIGdvaW5nIHRv
LgotICAgICAgICAvLyBXZSB3YW50IHRvIGtub3cgdGhpcyBiZWZvcmUgdGFsa2luZyB0byB0aGUg
cG9saWN5IGRlbGVnYXRlLCBzaW5jZSBpdCBhZmZlY3RzIHdoZXRoZXIgCisgICAgICAgIC8vIFdl
IHdhbnQgdG8ga25vdyB0aGlzIGJlZm9yZSB0YWxraW5nIHRvIHRoZSBwb2xpY3kgZGVsZWdhdGUs
IHNpbmNlIGl0IGFmZmVjdHMgd2hldGhlcgogICAgICAgICAvLyB3ZSBzaG93IHRoZSBEb1lvdVJl
YWxseVdhbnRUb1JlcG9zdCBuYWcuCiAgICAgICAgIC8vCiAgICAgICAgIC8vIFRoaXMgdHJpY2sg
aGFzIGEgc21hbGwgYnVnICgzMTIzODkzKSB3aGVyZSB3ZSBtaWdodCBmaW5kIGEgY2FjaGUgaGl0
LCBidXQgdGhlbgogICAgICAgICAvLyBoYXZlIHRoZSBpdGVtIHZhbmlzaCB3aGVuIHdlIHRyeSB0
byB1c2UgaXQgaW4gdGhlIGVuc3VpbmcgbmF2LiAgVGhpcyBzaG91bGQgYmUKICAgICAgICAgLy8g
ZXh0cmVtZWx5IHJhcmUsIGJ1dCBpbiB0aGF0IGNhc2UgdGhlIHVzZXIgd2lsbCBnZXQgYW4gZXJy
b3Igb24gdGhlIG5hdmlnYXRpb24uCi0gICAgICAgIAorCiAgICAgICAgIGlmIChjYWNoZUxvYWRQ
b2xpY3kgPT0gTWF5QXR0ZW1wdENhY2hlT25seUxvYWRGb3JGb3JtU3VibWlzc2lvbkl0ZW0pIHsK
ICAgICAgICAgICAgIHJlcXVlc3Quc2V0Q2FjaGVQb2xpY3koUmV0dXJuQ2FjaGVEYXRhRG9udExv
YWQpOwogICAgICAgICAgICAgYWN0aW9uID0gTmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0LCBsb2Fk
VHlwZSwgaXNGb3JtU3VibWlzc2lvbiwgZXZlbnQsIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3kpOwpAQCAtMzQwMyw3ICszNDAzLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmV0cnlBZnRlckZh
aWxlZENhY2hlT25seU1haW5SZXNvdXJjZUxvYWQoKQogUmVzb3VyY2VFcnJvciBGcmFtZUxvYWRl
cjo6Y2FuY2VsbGVkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSBjb25zdAog
ewogICAgIFJlc291cmNlRXJyb3IgZXJyb3IgPSBtX2NsaWVudC5jYW5jZWxsZWRFcnJvcihyZXF1
ZXN0KTsKLSAgICBlcnJvci5zZXRJc0NhbmNlbGxhdGlvbih0cnVlKTsKKyAgICBlcnJvci5zZXRU
eXBlKFJlc291cmNlRXJyb3I6OlR5cGU6OkNhbmNlbGxhdGlvbik7CiAgICAgcmV0dXJuIGVycm9y
OwogfQogCkBAIC0zNDE1LDcgKzM0MTUsNyBAQCBSZXNvdXJjZUVycm9yIEZyYW1lTG9hZGVyOjpi
bG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcgogUmVz
b3VyY2VFcnJvciBGcmFtZUxvYWRlcjo6YmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCkgY29uc3QKIHsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yID0gbV9jbGllbnQu
YmxvY2tlZEVycm9yKHJlcXVlc3QpOwotICAgIGVycm9yLnNldElzQ2FuY2VsbGF0aW9uKHRydWUp
OworICAgIGVycm9yLnNldFR5cGUoUmVzb3VyY2VFcnJvcjo6VHlwZTo6Q2FuY2VsbGF0aW9uKTsK
ICAgICByZXR1cm4gZXJyb3I7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCA3NTYwYzU5NzhlMmUyMzJkMDdkZjA0ZWI3ZWJj
NjVmMWEzNjZiOWRjLi42NjAyZGNlZDQzNjgxYzM1ODYxMGQzODRiZWYzOTBmY2I2ODU0OGI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3Bw
CkBAIC0xMzgsOCArMTM4LDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhy
ZWFkQnJpZGdlOjpjYW5jZWwoKQogICAgIGlmICghY2xpZW50V3JhcHBlci0+ZG9uZSgpKSB7CiAg
ICAgICAgIC8vIElmIHRoZSBjbGllbnQgaGFzbid0IHJlYWNoZWQgYSB0ZXJtaW5hdGlvbiBzdGF0
ZSwgdGhlbiB0cmFuc2l0aW9uIGl0IGJ5IHNlbmRpbmcgYSBjYW5jZWxsYXRpb24gZXJyb3IuCiAg
ICAgICAgIC8vIE5vdGU6IG5vIG1vcmUgY2xpZW50IGNhbGxiYWNrcyB3aWxsIGJlIGRvbmUgYWZ0
ZXIgdGhpcyBtZXRob2QgLS0gdGhlIGNsZWFyQ2xpZW50V3JhcHBlcigpIGNhbGwgZW5zdXJlcyB0
aGF0LgotICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yKFN0cmluZygpLCAwLCBVUkwoKSwgU3Ry
aW5nKCkpOwotICAgICAgICBlcnJvci5zZXRJc0NhbmNlbGxhdGlvbih0cnVlKTsKKyAgICAgICAg
UmVzb3VyY2VFcnJvciBlcnJvcihSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRpb24pOwog
ICAgICAgICBjbGllbnRXcmFwcGVyLT5kaWRGYWlsKGVycm9yKTsKICAgICB9CiAgICAgY2xlYXJD
bGllbnRXcmFwcGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlRXJyb3JCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VFcnJvckJhc2UuY3BwCmluZGV4IDBlZmQwNGU4MjM0NTZmMTZiZDMzMzI3NjU0
ZDczZmFjZGUwNjZiZWQuLmJiNzIwNTRmMzcxODU0ODMxMzJjYzUyZWJmOGVlZDRmOWMxYzA2NDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJv
ckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VF
cnJvckJhc2UuY3BwCkBAIC0yMSw3ICsyMSw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNp
bmNsdWRlICJjb25maWcuaCIKQEAgLTQ1LDkgKzQ1LDcgQEAgUmVzb3VyY2VFcnJvciBSZXNvdXJj
ZUVycm9yQmFzZTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKICAgICBlcnJvckNvcHkubV9lcnJvckNv
ZGUgPSBtX2Vycm9yQ29kZTsKICAgICBlcnJvckNvcHkubV9mYWlsaW5nVVJMID0gbV9mYWlsaW5n
VVJMLmlzb2xhdGVkQ29weSgpOwogICAgIGVycm9yQ29weS5tX2xvY2FsaXplZERlc2NyaXB0aW9u
ID0gbV9sb2NhbGl6ZWREZXNjcmlwdGlvbi5pc29sYXRlZENvcHkoKTsKLSAgICBlcnJvckNvcHku
bV9pc051bGwgPSBtX2lzTnVsbDsKLSAgICBlcnJvckNvcHkubV9pc0NhbmNlbGxhdGlvbiA9IG1f
aXNDYW5jZWxsYXRpb247Ci0gICAgZXJyb3JDb3B5Lm1faXNUaW1lb3V0ID0gbV9pc1RpbWVvdXQ7
CisgICAgZXJyb3JDb3B5Lm1fdHlwZSA9IG1fdHlwZTsKIAogICAgIGVycm9yQ29weS5kb1BsYXRm
b3JtSXNvbGF0ZWRDb3B5KGFzUmVzb3VyY2VFcnJvcigpKTsKIApAQCAtNTksMTIgKzU3LDE4IEBA
IHZvaWQgUmVzb3VyY2VFcnJvckJhc2U6OmxhenlJbml0KCkgY29uc3QKICAgICBjb25zdF9jYXN0
PFJlc291cmNlRXJyb3IqPihzdGF0aWNfY2FzdDxjb25zdCBSZXNvdXJjZUVycm9yKj4odGhpcykp
LT5wbGF0Zm9ybUxhenlJbml0KCk7CiB9CiAKK3ZvaWQgUmVzb3VyY2VFcnJvckJhc2U6OnNldFR5
cGUoVHlwZSB0eXBlKQoreworICAgIEFTU0VSVChtX3R5cGUgPT0gVHlwZTo6R2VuZXJhbCB8fCBt
X3R5cGUgPT0gVHlwZTo6TnVsbCk7CisgICAgbV90eXBlID0gdHlwZTsKK30KKwogYm9vbCBSZXNv
dXJjZUVycm9yQmFzZTo6Y29tcGFyZShjb25zdCBSZXNvdXJjZUVycm9yJiBhLCBjb25zdCBSZXNv
dXJjZUVycm9yJiBiKQogewogICAgIGlmIChhLmlzTnVsbCgpICYmIGIuaXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKGEuaXNOdWxsKCkgfHwgYi5pc051bGwoKSkKKyAg
ICBpZiAoYS50eXBlKCkgIT0gYi50eXBlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IGlmIChhLmRvbWFpbigpICE9IGIuZG9tYWluKCkpCkBAIC03OSwxMiArODMsNiBAQCBib29sIFJl
c291cmNlRXJyb3JCYXNlOjpjb21wYXJlKGNvbnN0IFJlc291cmNlRXJyb3ImIGEsIGNvbnN0IFJl
c291cmNlRXJyb3ImIGIpCiAgICAgaWYgKGEubG9jYWxpemVkRGVzY3JpcHRpb24oKSAhPSBiLmxv
Y2FsaXplZERlc2NyaXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChh
LmlzQ2FuY2VsbGF0aW9uKCkgIT0gYi5pc0NhbmNlbGxhdGlvbigpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBpZiAoYS5pc1RpbWVvdXQoKSAhPSBiLmlzVGltZW91dCgpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KICAgICByZXR1cm4gUmVzb3VyY2VFcnJvcjo6cGxhdGZvcm1Db21w
YXJlKGEsIGIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlRXJyb3JCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlRXJyb3JCYXNlLmgKaW5kZXggYmI2YTNhNWMzMjcwYmRlMjJiOWQwMjljM2RkYWVh
N2I4ZjUwMjRmMi4uOWRmMTkyZmE0ZGU2NWU5NmI5NDQ1ZGE2ZjAzNjc2ZWNhMGYwMGU5MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFz
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJh
c2UuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBDYW5vbiBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yMCw3ICsyMSw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNwcmFnbWEgb25jZQpAQCAt
MzgsMzggKzM5LDM2IEBAIGNsYXNzIFJlc291cmNlRXJyb3JCYXNlIHsKIHB1YmxpYzoKICAgICBS
ZXNvdXJjZUVycm9yIGlzb2xhdGVkQ29weSgpIGNvbnN0OwogCi0gICAgYm9vbCBpc051bGwoKSBj
b25zdCB7IHJldHVybiBtX2lzTnVsbDsgfQotCiAgICAgY29uc3QgU3RyaW5nJiBkb21haW4oKSBj
b25zdCB7IGxhenlJbml0KCk7IHJldHVybiBtX2RvbWFpbjsgfQogICAgIGludCBlcnJvckNvZGUo
KSBjb25zdCB7IGxhenlJbml0KCk7IHJldHVybiBtX2Vycm9yQ29kZTsgfQogICAgIGNvbnN0IFVS
TCYgZmFpbGluZ1VSTCgpIGNvbnN0IHsgbGF6eUluaXQoKTsgcmV0dXJuIG1fZmFpbGluZ1VSTDsg
fQogICAgIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24oKSBjb25zdCB7IGxhenlJ
bml0KCk7IHJldHVybiBtX2xvY2FsaXplZERlc2NyaXB0aW9uOyB9CiAKLSAgICB2b2lkIHNldElz
Q2FuY2VsbGF0aW9uKGJvb2wgaXNDYW5jZWxsYXRpb24pIHsgbV9pc0NhbmNlbGxhdGlvbiA9IGlz
Q2FuY2VsbGF0aW9uOyB9Ci0gICAgYm9vbCBpc0NhbmNlbGxhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1faXNDYW5jZWxsYXRpb247IH0KKyAgICBlbnVtIGNsYXNzIFR5cGUgeworICAgICAgICBOdWxs
LAorICAgICAgICBHZW5lcmFsLAorICAgICAgICBDYW5jZWxsYXRpb24sCisgICAgICAgIFRpbWVv
dXQKKyAgICB9OwogCi0gICAgdm9pZCBzZXRJc1RpbWVvdXQoYm9vbCBpc1RpbWVvdXQpIHsgbV9p
c1RpbWVvdXQgPSBpc1RpbWVvdXQ7IH0KLSAgICBib29sIGlzVGltZW91dCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNUaW1lb3V0OyB9CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX3R5
cGUgPT0gVHlwZTo6TnVsbDsgfQorICAgIGJvb2wgaXNDYW5jZWxsYXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX3R5cGUgPT0gVHlwZTo6Q2FuY2VsbGF0aW9uOyB9CisgICAgYm9vbCBpc1RpbWVvdXQo
KSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6VGltZW91dDsgfQogCiAgICAgc3RhdGlj
IGJvb2wgY29tcGFyZShjb25zdCBSZXNvdXJjZUVycm9yJiwgY29uc3QgUmVzb3VyY2VFcnJvciYp
OwogCisgICAgdm9pZCBzZXRUeXBlKFR5cGUpOworICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZTsgfQorCiBwcm90ZWN0ZWQ6Ci0gICAgUmVzb3VyY2VFcnJvckJhc2UoKQotICAg
ICAgICA6IG1fZXJyb3JDb2RlKDApCi0gICAgICAgICwgbV9pc051bGwodHJ1ZSkKLSAgICAgICAg
LCBtX2lzQ2FuY2VsbGF0aW9uKGZhbHNlKQotICAgICAgICAsIG1faXNUaW1lb3V0KGZhbHNlKQot
ICAgIHsKLSAgICB9CisgICAgUmVzb3VyY2VFcnJvckJhc2UoVHlwZSB0eXBlKSA6IG1fdHlwZSh0
eXBlKSB7IH0KIAotICAgIFJlc291cmNlRXJyb3JCYXNlKGNvbnN0IFN0cmluZyYgZG9tYWluLCBp
bnQgZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxp
emVkRGVzY3JpcHRpb24pCisgICAgUmVzb3VyY2VFcnJvckJhc2UoY29uc3QgU3RyaW5nJiBkb21h
aW4sIGludCBlcnJvckNvZGUsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBs
b2NhbGl6ZWREZXNjcmlwdGlvbiwgVHlwZSB0eXBlKQogICAgICAgICA6IG1fZG9tYWluKGRvbWFp
bikKICAgICAgICAgLCBtX2ZhaWxpbmdVUkwoZmFpbGluZ1VSTCkKICAgICAgICAgLCBtX2xvY2Fs
aXplZERlc2NyaXB0aW9uKGxvY2FsaXplZERlc2NyaXB0aW9uKQogICAgICAgICAsIG1fZXJyb3JD
b2RlKGVycm9yQ29kZSkKLSAgICAgICAgLCBtX2lzTnVsbChmYWxzZSkKLSAgICAgICAgLCBtX2lz
Q2FuY2VsbGF0aW9uKGZhbHNlKQotICAgICAgICAsIG1faXNUaW1lb3V0KGZhbHNlKQorICAgICAg
ICAsIG1fdHlwZSh0eXBlKQogICAgIHsKICAgICB9CiAKQEAgLTg0LDEwICs4Myw4IEBAIHByb3Rl
Y3RlZDoKICAgICBTdHJpbmcgbV9kb21haW47CiAgICAgVVJMIG1fZmFpbGluZ1VSTDsKICAgICBT
dHJpbmcgbV9sb2NhbGl6ZWREZXNjcmlwdGlvbjsKLSAgICBpbnQgbV9lcnJvckNvZGU7Ci0gICAg
Ym9vbCBtX2lzTnVsbCA6IDE7Ci0gICAgYm9vbCBtX2lzQ2FuY2VsbGF0aW9uIDogMTsKLSAgICBi
b29sIG1faXNUaW1lb3V0IDogMTsKKyAgICBpbnQgbV9lcnJvckNvZGUgeyAwIH07CisgICAgVHlw
ZSBtX3R5cGUgeyBUeXBlOjpHZW5lcmFsIH07CiAKIHByaXZhdGU6CiAgICAgY29uc3QgUmVzb3Vy
Y2VFcnJvciYgYXNSZXNvdXJjZUVycm9yKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvci5oCmluZGV4IDJjYTA0ZWVmMjgyNjlm
OTgyYWZjZjA2YjdiOWJlMTIwN2U4ODJiNWUuLjM1NWZhODU5ZTkwYmVlZDNmZDI2OTZkZjUzODhj
YjM1YTg0YWJhZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VFcnJvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VFcnJvci5oCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKICNwcmFnbWEgb25jZQpAQCAtNDQsMTMgKzQ0LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgUmVzb3VyY2VFcnJvciA6IHB1YmxpYyBSZXNvdXJjZUVycm9yQmFzZSB7CiBwdWJs
aWM6Ci0gICAgUmVzb3VyY2VFcnJvcigpCi0gICAgICAgIDogbV9kYXRhSXNVcFRvRGF0ZSh0cnVl
KQorICAgIFJlc291cmNlRXJyb3IoVHlwZSB0eXBlID0gVHlwZTo6TnVsbCkKKyAgICAgICAgOiBS
ZXNvdXJjZUVycm9yQmFzZSh0eXBlKQorICAgICAgICAsIG1fZGF0YUlzVXBUb0RhdGUodHJ1ZSkK
ICAgICB7CiAgICAgfQogCi0gICAgUmVzb3VyY2VFcnJvcihjb25zdCBTdHJpbmcmIGRvbWFpbiwg
aW50IGVycm9yQ29kZSwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2Fs
aXplZERlc2NyaXB0aW9uKQotICAgICAgICA6IFJlc291cmNlRXJyb3JCYXNlKGRvbWFpbiwgZXJy
b3JDb2RlLCBmYWlsaW5nVVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlvbikKKyAgICBSZXNvdXJjZUVy
cm9yKGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZhaWxp
bmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24sIFR5cGUgdHlwZSA9IFR5
cGU6OkdlbmVyYWwpCisgICAgICAgIDogUmVzb3VyY2VFcnJvckJhc2UoZG9tYWluLCBlcnJvckNv
ZGUsIGZhaWxpbmdVUkwsIGxvY2FsaXplZERlc2NyaXB0aW9uLCB0eXBlKQogICAgICAgICAsIG1f
ZGF0YUlzVXBUb0RhdGUodHJ1ZSkKICAgICB7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCmluZGV4IGQ1YjRl
ZTQ3ZTM5ZDg2NWNhNDgyNTU1Y2VjOWNjMzI3ZDhhNTUzZGMuLmEwMzU2NWM2OTM1YzQxNmM0ZWRk
ZDY2NDJlMTExZTMwYzRmN2NkNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKQEAgLTIwLDcgKzIwLDcgQEAKICAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgpAQCAtNDAsMTcgKzQwLDE3
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3Io
Q0ZFcnJvclJlZiBjZkVycm9yKQotICAgIDogbV9kYXRhSXNVcFRvRGF0ZShmYWxzZSkKKyAgICA6
IFJlc291cmNlRXJyb3JCYXNlKFR5cGU6Ok51bGwpCisgICAgLCBtX2RhdGFJc1VwVG9EYXRlKGZh
bHNlKQogICAgICwgbV9wbGF0Zm9ybUVycm9yKGNmRXJyb3IpCiB7Ci0gICAgbV9pc051bGwgPSAh
Y2ZFcnJvcjsKLSAgICBpZiAoIW1faXNOdWxsKQotICAgICAgICBtX2lzVGltZW91dCA9IENGRXJy
b3JHZXRDb2RlKG1fcGxhdGZvcm1FcnJvci5nZXQoKSkgPT0ga0NGVVJMRXJyb3JUaW1lZE91dDsK
KyAgICBpZiAoY2ZFcnJvcikKKyAgICAgICAgc2V0VHlwZSgoQ0ZFcnJvckdldENvZGUobV9wbGF0
Zm9ybUVycm9yLmdldCgpKSA9PSBrQ0ZVUkxFcnJvclRpbWVkT3V0KSA/IFR5cGU6OlRpbWVvdXQg
OiBUeXBlOjpHZW5lcmFsKTsKIH0KIAogI2lmIFBMQVRGT1JNKFdJTikKIFJlc291cmNlRXJyb3I6
OlJlc291cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBkb21haW4sIGludCBlcnJvckNvZGUsIGNvbnN0
IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlvbiwgQ0ZE
YXRhUmVmIGNlcnRpZmljYXRlKQotICAgIDogUmVzb3VyY2VFcnJvckJhc2UoZG9tYWluLCBlcnJv
ckNvZGUsIGZhaWxpbmdVUkwsIGxvY2FsaXplZERlc2NyaXB0aW9uKQorICAgIDogUmVzb3VyY2VF
cnJvckJhc2UoZG9tYWluLCBlcnJvckNvZGUsIGZhaWxpbmdVUkwsIGxvY2FsaXplZERlc2NyaXB0
aW9uLCBUeXBlOjpHZW5lcmFsKQogICAgICwgbV9kYXRhSXNVcFRvRGF0ZSh0cnVlKQogICAgICwg
bV9jZXJ0aWZpY2F0ZShjZXJ0aWZpY2F0ZSkKIHsKQEAgLTYwLDcgKzYwLDcgQEAgUENDRVJUX0NP
TlRFWFQgUmVzb3VyY2VFcnJvcjo6Y2VydGlmaWNhdGUoKSBjb25zdAogewogICAgIGlmICghbV9j
ZXJ0aWZpY2F0ZSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgCisKICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxQQ0NFUlRfQ09OVEVYVD4oQ0ZEYXRhR2V0Qnl0ZVB0cihtX2NlcnRpZmljYXRl
LmdldCgpKSk7CiB9CiAKQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIFJlc291cmNlRXJyb3I6OnBs
YXRmb3JtTGF6eUluaXQoKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIG1fbG9j
YWxpemVkRGVzY3JpcHRpb24gPSAoQ0ZTdHJpbmdSZWYpIENGRGljdGlvbmFyeUdldFZhbHVlKHVz
ZXJJbmZvLmdldCgpLCBrQ0ZFcnJvckxvY2FsaXplZERlc2NyaXB0aW9uS2V5KTsKLSAgICAgICAg
CisKICNpZiBQTEFURk9STShXSU4pCiAgICAgICAgIG1fY2VydGlmaWNhdGUgPSB3a0dldFNTTFBl
ZXJDZXJ0aWZpY2F0ZURhdGEodXNlckluZm8uZ2V0KCkpOwogI2VuZGlmCkBAIC0xMzYsNyArMTM2
LDcgQEAgYm9vbCBSZXNvdXJjZUVycm9yOjpwbGF0Zm9ybUNvbXBhcmUoY29uc3QgUmVzb3VyY2VF
cnJvciYgYSwgY29uc3QgUmVzb3VyY2VFcnJvciYKIAogQ0ZFcnJvclJlZiBSZXNvdXJjZUVycm9y
OjpjZkVycm9yKCkgY29uc3QKIHsKLSAgICBpZiAobV9pc051bGwpIHsKKyAgICBpZiAoaXNOdWxs
KCkpIHsKICAgICAgICAgQVNTRVJUKCFtX3BsYXRmb3JtRXJyb3IpOwogICAgICAgICByZXR1cm4g
MDsKICAgICB9CkBAIC0xNTgsNyArMTU4LDcgQEAgQ0ZFcnJvclJlZiBSZXNvdXJjZUVycm9yOjpj
ZkVycm9yKCkgY29uc3QKICAgICAgICAgaWYgKG1fY2VydGlmaWNhdGUpCiAgICAgICAgICAgICB3
a1NldFNTTFBlZXJDZXJ0aWZpY2F0ZURhdGEodXNlckluZm8uZ2V0KCksIG1fY2VydGlmaWNhdGUu
Z2V0KCkpOwogI2VuZGlmCi0gICAgICAgIAorCiAgICAgICAgIG1fcGxhdGZvcm1FcnJvciA9IGFk
b3B0Q0YoQ0ZFcnJvckNyZWF0ZSgwLCBtX2RvbWFpbi5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBt
X2Vycm9yQ29kZSwgdXNlckluZm8uZ2V0KCkpKTsKICAgICB9CiAKQEAgLTE3Miw5ICsxNzIsOSBA
QCBSZXNvdXJjZUVycm9yOjpvcGVyYXRvciBDRkVycm9yUmVmKCkgY29uc3QKIAogLy8gRklYTUU6
IE9uY2UgPHJkYXI6Ly9wcm9ibGVtLzUwNTA4NDE+IGlzIGZpeGVkIHdlIGNhbiByZW1vdmUgdGhp
cyBjb25zdHJ1Y3Rvci4KIFJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoQ0ZTdHJlYW1FcnJv
ciBlcnJvcikKLSAgICA6IG1fZGF0YUlzVXBUb0RhdGUodHJ1ZSkKKyAgICA6IFJlc291cmNlRXJy
b3JCYXNlKFR5cGU6OkdlbmVyYWwpCisgICAgLCBtX2RhdGFJc1VwVG9EYXRlKHRydWUpCiB7Ci0g
ICAgbV9pc051bGwgPSBmYWxzZTsKICAgICBtX2Vycm9yQ29kZSA9IGVycm9yLmVycm9yOwogCiAg
ICAgc3dpdGNoKGVycm9yLmRvbWFpbikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlRXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yLmgKaW5kZXggZWVjNDYyZDVmNmZjN2E0Yzgw
MmVkY2QyYjI3OTNhMGUyNzRjOTRjYy4uNjgyZTE1Nzk4ODc2OTQzZjM5YTIzMTcwNzZjOWVkNDYw
MjJhODY5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L1Jlc291cmNlRXJyb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvUmVzb3VyY2VFcnJvci5oCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKICNpZm5kZWYgUmVzb3VyY2VFcnJvcl9oCkBAIC00MCwxMiArNDAsMTUgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvciA6IHB1YmxpYyBSZXNvdXJjZUVycm9yQmFz
ZQogewogcHVibGljOgotICAgIFJlc291cmNlRXJyb3IoKSA6IG1fc3NsRXJyb3JzKDApCisgICAg
UmVzb3VyY2VFcnJvcihUeXBlIHR5cGUgPSBUeXBlOjpOdWxsKQorICAgICAgICA6IFJlc291cmNl
RXJyb3JCYXNlKHR5cGUpCisgICAgICAgICwgbV9zc2xFcnJvcnMoMCkKICAgICB7CiAgICAgfQog
Ci0gICAgUmVzb3VyY2VFcnJvcihjb25zdCBTdHJpbmcmIGRvbWFpbiwgaW50IGVycm9yQ29kZSwg
Y29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9u
KQotICAgICAgICA6IFJlc291cmNlRXJyb3JCYXNlKGRvbWFpbiwgZXJyb3JDb2RlLCBmYWlsaW5n
VVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlvbiksIG1fc3NsRXJyb3JzKDApCisgICAgUmVzb3VyY2VF
cnJvcihjb25zdCBTdHJpbmcmIGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29uc3QgVVJMJiBmYWls
aW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uLCBUeXBlIHR5cGUgPSBU
eXBlOjpOdWxsKQorICAgICAgICA6IFJlc291cmNlRXJyb3JCYXNlKGRvbWFpbiwgZXJyb3JDb2Rl
LCBmYWlsaW5nVVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlvbiwgdHlwZSkKKyAgICAgICAgLCBtX3Nz
bEVycm9ycygwKQogICAgIHsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCmluZGV4IDUyMDc5YmQxZjUz
NWRmYmM5MjI2MTMxMWE1MWRjMzc0NWEyMThhYzIuLjQ2ZTAzNDY0MzUyMjNhNjEzMjdhODAwMjg5
Mjg4ZDJhMzE4OTFkNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQpAQCAtMTkzLDE3ICsxOTMsMTYgQEAgc3Rh
dGljIFJldGFpblB0cjxOU0Vycm9yPiBjcmVhdGVOU0Vycm9yRnJvbVJlc291cmNlRXJyb3JCYXNl
KGNvbnN0IFJlc291cmNlRXJyb3IKICNpZiBVU0UoQ0ZORVRXT1JLKQogCiBSZXNvdXJjZUVycm9y
OjpSZXNvdXJjZUVycm9yKE5TRXJyb3IgKmVycm9yKQotICAgIDogbV9kYXRhSXNVcFRvRGF0ZShm
YWxzZSkKKyAgICAsIG1fZGF0YUlzVXBUb0RhdGUoZmFsc2UpCiAgICAgLCBtX3BsYXRmb3JtRXJy
b3IocmVpbnRlcnByZXRfY2FzdDxDRkVycm9yUmVmPihlcnJvcikpCiB7Ci0gICAgbV9pc051bGwg
PSAhZXJyb3I7Ci0gICAgaWYgKCFtX2lzTnVsbCkKLSAgICAgICAgbV9pc1RpbWVvdXQgPSBbZXJy
b3IgY29kZV0gPT0gTlNVUkxFcnJvclRpbWVkT3V0OworICAgIGlmIChlcnJvcikKKyAgICAgICAg
c2V0VHlwZSgoW2Vycm9yIGNvZGVdID09IE5TVVJMRXJyb3JUaW1lZE91dCkgPyBUeXBlOjpUaW1l
b3V0IDogVHlwZTo6R2VuZXJhbCk7CiB9CiAKIE5TRXJyb3IgKlJlc291cmNlRXJyb3I6Om5zRXJy
b3IoKSBjb25zdAogewotICAgIGlmIChtX2lzTnVsbCkgeworICAgIGlmIChpc051bGwoKSkgewog
ICAgICAgICBBU1NFUlQoIW1fcGxhdGZvcm1FcnJvcik7CiAgICAgICAgIHJldHVybiBuaWw7CiAg
ICAgfQpAQCAtMjM4LDIxICsyMzcsMTcgQEAgUmVzb3VyY2VFcnJvcjo6b3BlcmF0b3IgTlNFcnJv
ciAqKCkgY29uc3QKICNlbHNlCiAKIFJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoTlNFcnJv
ciAqbnNFcnJvcikKLSAgICA6IG1fZGF0YUlzVXBUb0RhdGUoZmFsc2UpCisgICAgOiBSZXNvdXJj
ZUVycm9yQmFzZShUeXBlOjpOdWxsKQorICAgICwgbV9kYXRhSXNVcFRvRGF0ZShmYWxzZSkKICAg
ICAsIG1fcGxhdGZvcm1FcnJvcihuc0Vycm9yKQogewotICAgIG1faXNOdWxsID0gIW5zRXJyb3I7
Ci0gICAgaWYgKCFtX2lzTnVsbCkKLSAgICAgICAgbV9pc1RpbWVvdXQgPSBbbV9wbGF0Zm9ybUVy
cm9yLmdldCgpIGNvZGVdID09IE5TVVJMRXJyb3JUaW1lZE91dDsKKyAgICBpZiAobnNFcnJvcikK
KyAgICAgICAgc2V0VHlwZSgoW21fcGxhdGZvcm1FcnJvci5nZXQoKSBjb2RlXSA9PSBOU1VSTEVy
cm9yVGltZWRPdXQpID8gVHlwZTo6VGltZW91dCA6IFR5cGU6OkdlbmVyYWwpOwogfQogCiBSZXNv
dXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKENGRXJyb3JSZWYgY2ZFcnJvcikKLSAgICA6IG1fZGF0
YUlzVXBUb0RhdGUoZmFsc2UpCi0gICAgLCBtX3BsYXRmb3JtRXJyb3IoKE5TRXJyb3IgKiljZkVy
cm9yKQorICAgIDogUmVzb3VyY2VFcnJvcigoTlNFcnJvciAqKWNmRXJyb3IpCiB7Ci0gICAgbV9p
c051bGwgPSAhY2ZFcnJvcjsKLSAgICBpZiAoIW1faXNOdWxsKQotICAgICAgICBtX2lzVGltZW91
dCA9IFttX3BsYXRmb3JtRXJyb3IuZ2V0KCkgY29kZV0gPT0gTlNVUkxFcnJvclRpbWVkT3V0Owog
fQogCiB2b2lkIFJlc291cmNlRXJyb3I6OnBsYXRmb3JtTGF6eUluaXQoKQpAQCAtMjg3LDcgKzI4
Miw3IEBAIHZvaWQgUmVzb3VyY2VFcnJvcjo6ZG9QbGF0Zm9ybUlzb2xhdGVkQ29weShjb25zdCBS
ZXNvdXJjZUVycm9yJikKIAogTlNFcnJvciAqUmVzb3VyY2VFcnJvcjo6bnNFcnJvcigpIGNvbnN0
CiB7Ci0gICAgaWYgKG1faXNOdWxsKSB7CisgICAgaWYgKGlzTnVsbCgpKSB7CiAgICAgICAgIEFT
U0VSVCghbV9wbGF0Zm9ybUVycm9yKTsKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJv
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3Iu
aAppbmRleCBjNGQ3YWRhN2YxOGNmNjVkNzgzNzBlZmNkM2FhYjI4NzI3MmM3YWEwLi5iZjAyOTE4
NDgyMGZiZTVkNDA2NWY2MDQ3YTIyNWNiOGRhZGU0N2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yLmgKQEAgLTQxLDE0ICs0
MSwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yIDogcHVibGlj
IFJlc291cmNlRXJyb3JCYXNlCiB7CiBwdWJsaWM6Ci0gICAgUmVzb3VyY2VFcnJvcihjb25zdCBT
dHJpbmcmIGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25z
dCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uKQotICAgICAgICA6IFJlc291cmNlRXJyb3JC
YXNlKGRvbWFpbiwgZXJyb3JDb2RlLCBmYWlsaW5nVVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlvbikK
KyAgICBSZXNvdXJjZUVycm9yKFR5cGUgdHlwZSA9IFR5cGU6Ok51bGwpCisgICAgICAgIDogUmVz
b3VyY2VFcnJvckJhc2UodHlwZSkKICAgICAgICAgLCBtX3Rsc0Vycm9ycygwKQogICAgIHsKICAg
ICB9CiAKLSAgICBSZXNvdXJjZUVycm9yKCkKLSAgICAgICAgOiBtX3Rsc0Vycm9ycygwKQorICAg
IFJlc291cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBkb21haW4sIGludCBlcnJvckNvZGUsIGNvbnN0
IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlvbiwgVHlw
ZSB0eXBlID0gVHlwZTo6R2VuZXJhbCkKKyAgICAgICAgOiBSZXNvdXJjZUVycm9yQmFzZShkb21h
aW4sIGVycm9yQ29kZSwgZmFpbGluZ1VSTCwgbG9jYWxpemVkRGVzY3JpcHRpb24sIHR5cGUpCisg
ICAgICAgICwgbV90bHNFcnJvcnMoMCkKICAgICB7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNw
cAppbmRleCBkYjZmZDk1ZDYyNGMyOTgzOGE5NTBlZDlmMmUwZTVjMDI2OWI3YTM4Li5lZTQzNjI3
NjVmMWM1MjBlZDg0MjYwZjUzNGM2NjcxMTc2Yjg2MGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yU291cC5jcHAK
QEAgLTkyLDkgKzkyLDcgQEAgUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9yOjp0aW1lb3V0RXJy
b3IoY29uc3QgVVJMJiBmYWlsaW5nVVJMKQogICAgIC8vIFVzZSB0aGUgc2FtZSB2YWx1ZSBhcyBp
biBOU1VSTEVycm9yLmgKICAgICBzdGF0aWMgY29uc3QgaW50IHRpbWVvdXRFcnJvciA9IC0xMDAx
OwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCAgZXJyb3JEb21haW4gPSAiV2ViS2l0TmV0
d29ya0Vycm9yIjsKLSAgICBSZXNvdXJjZUVycm9yIGVycm9yID0gUmVzb3VyY2VFcnJvcihlcnJv
ckRvbWFpbiwgdGltZW91dEVycm9yLCBmYWlsaW5nVVJMLCAiUmVxdWVzdCB0aW1lZCBvdXQiKTsK
LSAgICBlcnJvci5zZXRJc1RpbWVvdXQodHJ1ZSk7Ci0gICAgcmV0dXJuIGVycm9yOworICAgIHJl
dHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluLCB0aW1lb3V0RXJyb3IsIGZhaWxpbmdVUkws
ICJSZXF1ZXN0IHRpbWVkIG91dCIsIFJlc291cmNlRXJyb3I6OlR5cGU6OlRpbWVvdXQpOwogfQog
CiB2b2lkIFJlc291cmNlRXJyb3I6OmRvUGxhdGZvcm1Jc29sYXRlZENvcHkoY29uc3QgUmVzb3Vy
Y2VFcnJvciYgb3RoZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvc291cC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9zb3Vw
L1dlYkNvcmVBcmd1bWVudENvZGVyc1NvdXAuY3BwCmluZGV4IDNkMGE1NGJiNjEzNzU2NTk3MTg2
OTY0MDNiOTNkZmRhMmE0ZTJkZTMuLmE1NTVjYTkxYjUyN2ZiOTZkZDI4MzdlOGQwYzBmZDgyNjhi
MGI3NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9zb3VwL1dlYkNvcmVBcmd1
bWVudENvZGVyc1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9zb3VwL1dlYkNv
cmVBcmd1bWVudENvZGVyc1NvdXAuY3BwCkBAIC0xODYsMjcgKzE4NiwyNCBAQCBib29sIEFyZ3Vt
ZW50Q29kZXI8Q2VydGlmaWNhdGVJbmZvPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2Rl
ciwgQ2VydGlmaWNhdAogCiB2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VFcnJvcj46OmVuY29k
ZVBsYXRmb3JtRGF0YShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlc291cmNlRXJy
b3ImIHJlc291cmNlRXJyb3IpCiB7Ci0gICAgYm9vbCBlcnJvcklzTnVsbCA9IHJlc291cmNlRXJy
b3IuaXNOdWxsKCk7Ci0gICAgZW5jb2RlciA8PCBlcnJvcklzTnVsbDsKLSAgICBpZiAoZXJyb3JJ
c051bGwpCisgICAgZW5jb2Rlci5lbmNvZGVFbnVtKHJlc291cmNlRXJyb3IudHlwZSgpKTsKKyAg
ICBpZiAocmVzb3VyY2VFcnJvci5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgZW5j
b2RlciA8PCByZXNvdXJjZUVycm9yLmRvbWFpbigpOwogICAgIGVuY29kZXIgPDwgcmVzb3VyY2VF
cnJvci5lcnJvckNvZGUoKTsKICAgICBlbmNvZGVyIDw8IHJlc291cmNlRXJyb3IuZmFpbGluZ1VS
TCgpLnN0cmluZygpOwogICAgIGVuY29kZXIgPDwgcmVzb3VyY2VFcnJvci5sb2NhbGl6ZWREZXNj
cmlwdGlvbigpOwotICAgIGVuY29kZXIgPDwgcmVzb3VyY2VFcnJvci5pc0NhbmNlbGxhdGlvbigp
OwotICAgIGVuY29kZXIgPDwgcmVzb3VyY2VFcnJvci5pc1RpbWVvdXQoKTsKIAogICAgIGVuY29k
ZXIgPDwgQ2VydGlmaWNhdGVJbmZvKHJlc291cmNlRXJyb3IpOwogfQogCiBib29sIEFyZ3VtZW50
Q29kZXI8UmVzb3VyY2VFcnJvcj46OmRlY29kZVBsYXRmb3JtRGF0YShBcmd1bWVudERlY29kZXIm
IGRlY29kZXIsIFJlc291cmNlRXJyb3ImIHJlc291cmNlRXJyb3IpCiB7Ci0gICAgYm9vbCBlcnJv
cklzTnVsbDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGVycm9ySXNOdWxsKSkKKyAgICBSZXNv
dXJjZUVycm9yQmFzZTo6VHlwZSBlcnJvclR5cGU7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVu
dW0oZXJyb3JUeXBlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChlcnJvcklzTnVs
bCkgeworICAgIGlmIChlcnJvclR5cGUgPT0gUmVzb3VyY2VFcnJvckJhc2U6OlR5cGU6Ok51bGwp
IHsKICAgICAgICAgcmVzb3VyY2VFcnJvciA9IFJlc291cmNlRXJyb3IoKTsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQpAQCAtMjI3LDE3ICsyMjQsOCBAQCBib29sIEFyZ3VtZW50Q29kZXI8
UmVzb3VyY2VFcnJvcj46OmRlY29kZVBsYXRmb3JtRGF0YShBcmd1bWVudERlY29kZXImIGRlY29k
ZXIsCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShsb2NhbGl6ZWREZXNjcmlwdGlvbikpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJvb2wgaXNDYW5jZWxsYXRpb247Ci0gICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShpc0NhbmNlbGxhdGlvbikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIGJvb2wgaXNUaW1lb3V0OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXNUaW1lb3V0KSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgcmVzb3VyY2VFcnJvciA9IFJlc291cmNlRXJy
b3IoZG9tYWluLCBlcnJvckNvZGUsIFVSTChVUkwoKSwgZmFpbGluZ1VSTCksIGxvY2FsaXplZERl
c2NyaXB0aW9uKTsKLSAgICByZXNvdXJjZUVycm9yLnNldElzQ2FuY2VsbGF0aW9uKGlzQ2FuY2Vs
bGF0aW9uKTsKLSAgICByZXNvdXJjZUVycm9yLnNldElzVGltZW91dChpc1RpbWVvdXQpOworICAg
IHJlc291cmNlRXJyb3Iuc2V0VHlwZShlcnJvclR5cGUpOwogCiAgICAgQ2VydGlmaWNhdGVJbmZv
IGNlcnRpZmljYXRlSW5mbzsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNlcnRpZmljYXRlSW5m
bykpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280800</attachid>
            <date>2016-06-08 06:20:10 -0700</date>
            <delta_ts>2016-06-08 23:23:02 -0700</delta_ts>
            <desc>Removing whitespace changes</desc>
            <filename>bug-158299-20160608152136.patch</filename>
            <type>text/plain</type>
            <size>24837</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxODAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDU2Yzc4ZDMwZWM0ZmQ4
ZTEwZjcwOGZlMzZmZGU4MzBiNjZkODE1ZC4uNjJkNGFmNDY3MzI2NTVmMjc2OWZjZDEyOGFkNzM3
MWQxYWNjNGRhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE2LTA2LTA4ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgSW50cm9k
dWNlIGEgUmVzb3VyY2VFcnJvckJhc2UgdHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4Mjk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNpbmcgYW4gZW51bSB0eXBlIGZvciBSZXNvdXJj
ZUVycm9yQmFzZS4KKyAgICAgICAgSW4gbW9zdCBjYXNlcywgdGhlIHR5cGUgaXMgc2V0IGF0IGNv
bnN0cnVjdGlvbiB0aW1lLgorICAgICAgICBCeSBkZWZhdWx0LCBjb25zdHJ1Y3RvciB3aXRoIG5v
IHBhcmFtZXRlcnMgd2lsbCBzZXQgdHlwZSB0byBOdWxsLgorICAgICAgICBDb25zdHJ1Y3RvciB3
aXRoIHBhcmFtZXRlcnMgd2lsbCBzZXQgdHlwZSB0byBHZW5lcmFsLgorCisgICAgICAgIFJlbW92
ZWQgYm9vbGVhbiBzdGF0ZSBlcnJvciBmaWVsZHMuCisKKyAgICAgICAgSW50cm9kdWNlZCBhIHR5
cGUgc2V0dGVyLiBJdCBzaG91bGQgb25seSBiZSB1c2VkIHRvICBtYWtlIHRoZSB0eXBlCisgICAg
ICAgIG1vcmUgcHJlY2lzZSAod2hlbiB0eXBlIGlzIE51bGwgb3IgR2VuZXJhbCkuCisKKyAgICAg
ICAgVXBkYXRpbmcgcmVsYXRlZCBjYWxsaW5nIGNvZGUuCisKKyAgICAgICAgTm8gY2hhbmdlIG9m
IGJlaGF2aW9yLgorCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGluZ0ZvclBvbGljeUNoYW5nZSk6
CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNhbmNlbCk6CisgICAgICAgICog
bG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2FuY2VsbGVkRXJyb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmJsb2NrZWRFcnJvcik6CisgICAgICAgICogbG9hZGVy
L1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhy
ZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6Y2FuY2VsKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlRXJyb3JCYXNlOjppc29sYXRlZENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvckJhc2U6OnNldFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvckJh
c2U6OmNvbXBhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJh
c2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3JCYXNlOjppc051bGwpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvckJhc2U6OmlzQ2FuY2VsbGF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3JCYXNlOjppc1RpbWVvdXQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvckJhc2U6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvckJhc2U6OlJlc291cmNlRXJyb3JCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlRXJyb3JCYXNlOjpkb21haW4pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVz
b3VyY2VFcnJvci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VF
cnJvcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpjZkVycm9yKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvcjo6UmVzb3VyY2VFcnJvcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VFcnJvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om1fcGxhdGZvcm1FcnJvcik6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpuc0Vycm9yKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VFcnJvcjo6cGxhdGZvcm1MYXp5SW5pdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Jlc291cmNlRXJyb3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJy
b3I6OlJlc291cmNlRXJyb3IpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZUVycm9yU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjp0aW1l
b3V0RXJyb3IpOgorCiAyMDE2LTA2LTA4ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjAxODAwLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCmluZGV4IDJhMTliOWRiYmZlNGQ2MWZkYTU1OTZlMGMwYmExYjBjNmJkNzU3NWMuLjAwMjQ3
NTRhYTRkZGEwNDVhZDcxNWI1ZmI4YzM0Y2MyMzVlZDFmMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNCBAQAorMjAxNi0wNi0wOCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNh
bm9uLmZyPgorCisgICAgICAgIEludHJvZHVjZSBhIFJlc291cmNlRXJyb3JCYXNlIHR5cGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODI5OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL3Nv
dXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50
Q29kZXI8UmVzb3VyY2VFcnJvcj46OmVuY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgIChJUEM6
OkFyZ3VtZW50Q29kZXI8UmVzb3VyY2VFcnJvcj46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisKIDIw
MTYtMDYtMDggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIExheWVyVHJlZUhvc3Qgc2hvdWxkIGJlIGNyZWF0ZWQgd2l0aCBhIFdlYlBhZ2UgcmVm
ZXJlbmNlIGluc3RlYWQgb2YgYSBwb2ludGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcAppbmRleCA2MmEzNDgyN2E0OWM3NWY5NzBiYWQyZmJjYzkxYmI4YTAyNzQzZDJj
Li4zNWExZDBiNjdiZTg1N2I2MDExYmQ2OWFmYTkwMjQwNGM3NDE2N2Q1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTg0Miw3ICs4NDIsNyBAQCBSZXNvdXJj
ZUVycm9yIERvY3VtZW50TG9hZGVyOjppbnRlcnJ1cHRlZEZvclBvbGljeUNoYW5nZUVycm9yKCkg
Y29uc3QKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0b3BMb2FkaW5nRm9yUG9saWN5Q2hhbmdlKCkK
IHsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yID0gaW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VF
cnJvcigpOwotICAgIGVycm9yLnNldElzQ2FuY2VsbGF0aW9uKHRydWUpOworICAgIGVycm9yLnNl
dFR5cGUoUmVzb3VyY2VFcnJvcjo6VHlwZTo6Q2FuY2VsbGF0aW9uKTsKICAgICBjYW5jZWxNYWlu
UmVzb3VyY2VMb2FkKGVycm9yKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCA5MGU0YmZiYzExMjM4OTNhYjEzNTI0
NWZiNzQ5Nzc4ZDNiNjk5NWFkLi5hNTBhNjM2YmQwYmE0MjU4NmYxZTQ4ZGE2NWNkMjQwOWUyMmM0
NjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcApAQCAtMTYwLDggKzE2MCw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyOjpjYW5jZWwoKQogICAgIC8vIENhbmNlbCBjYW4gcmUtZW50ZXIgYW5kIG1fcmVzb3VyY2Ug
bWlnaHQgYmUgbnVsbCBoZXJlIGFzIGEgcmVzdWx0LgogICAgIGlmIChtX2NsaWVudCAmJiBtX3Jl
c291cmNlKSB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGVycm9yIGlzIHNlbnQgdG8gdGhlIGNs
aWVudCBpbiBkaWRGYWlsKCksIHNvIGl0IHNob3VsZCBub3QgYmUgYW4gaW50ZXJuYWwgb25lLiBV
c2UgRnJhbWVMb2FkZXJDbGllbnQ6OmNhbmNlbGxlZEVycm9yKCkgaW5zdGVhZC4KLSAgICAgICAg
UmVzb3VyY2VFcnJvciBlcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCBtX3Jlc291
cmNlLT51cmwoKSwgIkxvYWQgY2FuY2VsbGVkIik7Ci0gICAgICAgIGVycm9yLnNldElzQ2FuY2Vs
bGF0aW9uKHRydWUpOworICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yKGVycm9yRG9tYWluV2Vi
S2l0SW50ZXJuYWwsIDAsIG1fcmVzb3VyY2UtPnVybCgpLCAiTG9hZCBjYW5jZWxsZWQiLCBSZXNv
dXJjZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRpb24pOwogICAgICAgICBkaWRGYWlsKG1fcmVzb3Vy
Y2UtPmlkZW50aWZpZXIoKSwgZXJyb3IpOwogICAgIH0KICAgICBjbGVhclJlc291cmNlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKaW5kZXggOTg0ZjQ4ZWIyYzEyZjBiZDVmOGNl
NTNhOGFjMTAwOTkwOTQ2NTg4Mi4uNDEzOTI4MzIyZTMyMjA5Mzc0MDVhMmU0MWY5MTEzNjdjMTUx
ZjhmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaApAQCAtMzMwLDE1ICszMzAs
MTUgQEAgcHVibGljOgogICAgIHZvaWQgY29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNv
bnN0IGNoYXIqLCBpbnQpIG92ZXJyaWRlIHsgfQogICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nKERv
Y3VtZW50TG9hZGVyKikgb3ZlcnJpZGUgeyB9CiAKLSAgICBSZXNvdXJjZUVycm9yIGNhbmNlbGxl
ZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlIHsgUmVzb3VyY2VFcnJvciBl
cnJvcigiIiwgMCwgVVJMKCksICIiKTsgZXJyb3Iuc2V0SXNDYW5jZWxsYXRpb24odHJ1ZSk7IHJl
dHVybiBlcnJvcjsgfQotICAgIFJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3IoIiIsIDAsIFVSTCgp
LCAiIik7IH0KLSAgICBSZXNvdXJjZUVycm9yIGJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3Io
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGUgeyByZXR1cm4gUmVzb3VyY2VFcnJvcigi
IiwgMCwgVVJMKCksICIiKTsgfQotICAgIFJlc291cmNlRXJyb3IgY2Fubm90U2hvd1VSTEVycm9y
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3Io
IiIsIDAsIFVSTCgpLCAiIik7IH0KLSAgICBSZXNvdXJjZUVycm9yIGludGVycnVwdGVkRm9yUG9s
aWN5Q2hhbmdlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGUgeyByZXR1cm4g
UmVzb3VyY2VFcnJvcigiIiwgMCwgVVJMKCksICIiKTsgfQotCi0gICAgUmVzb3VyY2VFcnJvciBj
YW5ub3RTaG93TUlNRVR5cGVFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGUg
eyByZXR1cm4gUmVzb3VyY2VFcnJvcigiIiwgMCwgVVJMKCksICIiKTsgfQotICAgIFJlc291cmNl
RXJyb3IgZmlsZURvZXNOb3RFeGlzdEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVy
cmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCBVUkwoKSwgIiIpOyB9Ci0gICAgUmVz
b3VyY2VFcnJvciBwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCBVUkwoKSwgIiIpOyB9
CisgICAgUmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
KSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKFJlc291cmNlRXJyb3I6OlR5cGU6OkNh
bmNlbGxhdGlvbik7IH0KKyAgICBSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBSZXNv
dXJjZVJlcXVlc3QmKSBvdmVycmlkZSB7IHJldHVybiB7IH07IH0KKyAgICBSZXNvdXJjZUVycm9y
IGJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jikgb3Zl
cnJpZGUgeyByZXR1cm4geyB9OyB9CisgICAgUmVzb3VyY2VFcnJvciBjYW5ub3RTaG93VVJMRXJy
b3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGUgeyByZXR1cm4geyB9OyB9CisgICAg
UmVzb3VyY2VFcnJvciBpbnRlcnJ1cHRlZEZvclBvbGljeUNoYW5nZUVycm9yKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYpIG92ZXJyaWRlIHsgcmV0dXJuIHsgfTsgfQorCisgICAgUmVzb3VyY2VFcnJv
ciBjYW5ub3RTaG93TUlNRVR5cGVFcnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJp
ZGUgeyByZXR1cm4geyB9OyB9CisgICAgUmVzb3VyY2VFcnJvciBmaWxlRG9lc05vdEV4aXN0RXJy
b3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlIHsgcmV0dXJuIHsgfTsgfQorICAg
IFJlc291cmNlRXJyb3IgcGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcihjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJikgb3ZlcnJpZGUgeyByZXR1cm4geyB9OyB9CiAKICAgICBib29sIHNob3VsZEZhbGxC
YWNrKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCA1ZTllYWIwZWVkN2UyMzAwZGNk
Mjg5MjU4Y2NkOWU5MzZhODYxZWExLi5jY2ZiNjYzZGMzODVjZmQ1NTI4ZjdjMmNmYzdiMzRhZGEy
MjMxYjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTM0MjMsNyAr
MzQyMyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJldHJ5QWZ0ZXJGYWlsZWRDYWNoZU9ubHlNYWlu
UmVzb3VyY2VMb2FkKCkKIFJlc291cmNlRXJyb3IgRnJhbWVMb2FkZXI6OmNhbmNlbGxlZEVycm9y
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkgY29uc3QKIHsKICAgICBSZXNvdXJjZUVy
cm9yIGVycm9yID0gbV9jbGllbnQuY2FuY2VsbGVkRXJyb3IocmVxdWVzdCk7Ci0gICAgZXJyb3Iu
c2V0SXNDYW5jZWxsYXRpb24odHJ1ZSk7CisgICAgZXJyb3Iuc2V0VHlwZShSZXNvdXJjZUVycm9y
OjpUeXBlOjpDYW5jZWxsYXRpb24pOwogICAgIHJldHVybiBlcnJvcjsKIH0KIApAQCAtMzQzNSw3
ICszNDM1LDcgQEAgUmVzb3VyY2VFcnJvciBGcmFtZUxvYWRlcjo6YmxvY2tlZEJ5Q29udGVudEJs
b2NrZXJFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHIKIFJlc291cmNlRXJyb3IgRnJhbWVM
b2FkZXI6OmJsb2NrZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpIGNvbnN0
CiB7CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvciA9IG1fY2xpZW50LmJsb2NrZWRFcnJvcihyZXF1
ZXN0KTsKLSAgICBlcnJvci5zZXRJc0NhbmNlbGxhdGlvbih0cnVlKTsKKyAgICBlcnJvci5zZXRU
eXBlKFJlc291cmNlRXJyb3I6OlR5cGU6OkNhbmNlbGxhdGlvbik7CiAgICAgcmV0dXJuIGVycm9y
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJs
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRl
ci5jcHAKaW5kZXggNzU2MGM1OTc4ZTJlMjMyZDA3ZGYwNGViN2ViYzY1ZjFhMzY2YjlkYy4uNjYw
MmRjZWQ0MzY4MWMzNTg2MTBkMzg0YmVmMzkwZmNiNjg1NDhiOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMTM4LDggKzEzOCw3
IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6Y2FuY2Vs
KCkKICAgICBpZiAoIWNsaWVudFdyYXBwZXItPmRvbmUoKSkgewogICAgICAgICAvLyBJZiB0aGUg
Y2xpZW50IGhhc24ndCByZWFjaGVkIGEgdGVybWluYXRpb24gc3RhdGUsIHRoZW4gdHJhbnNpdGlv
biBpdCBieSBzZW5kaW5nIGEgY2FuY2VsbGF0aW9uIGVycm9yLgogICAgICAgICAvLyBOb3RlOiBu
byBtb3JlIGNsaWVudCBjYWxsYmFja3Mgd2lsbCBiZSBkb25lIGFmdGVyIHRoaXMgbWV0aG9kIC0t
IHRoZSBjbGVhckNsaWVudFdyYXBwZXIoKSBjYWxsIGVuc3VyZXMgdGhhdC4KLSAgICAgICAgUmVz
b3VyY2VFcnJvciBlcnJvcihTdHJpbmcoKSwgMCwgVVJMKCksIFN0cmluZygpKTsKLSAgICAgICAg
ZXJyb3Iuc2V0SXNDYW5jZWxsYXRpb24odHJ1ZSk7CisgICAgICAgIFJlc291cmNlRXJyb3IgZXJy
b3IoUmVzb3VyY2VFcnJvcjo6VHlwZTo6Q2FuY2VsbGF0aW9uKTsKICAgICAgICAgY2xpZW50V3Jh
cHBlci0+ZGlkRmFpbChlcnJvcik7CiAgICAgfQogICAgIGNsZWFyQ2xpZW50V3JhcHBlcigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9y
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JC
YXNlLmNwcAppbmRleCAwZWZkMDRlODIzNDU2ZjE2YmQzMzMyNzY1NGQ3M2ZhY2RlMDY2YmVkLi44
NjBhZWE1NjhkOTdjMGFlNjkzMTAzNzQ4MjNkYmQ1NDg4YjM3ZTc5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmNwcApAQCAt
NDUsOSArNDUsNyBAQCBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3JCYXNlOjppc29sYXRlZENv
cHkoKSBjb25zdAogICAgIGVycm9yQ29weS5tX2Vycm9yQ29kZSA9IG1fZXJyb3JDb2RlOwogICAg
IGVycm9yQ29weS5tX2ZhaWxpbmdVUkwgPSBtX2ZhaWxpbmdVUkwuaXNvbGF0ZWRDb3B5KCk7CiAg
ICAgZXJyb3JDb3B5Lm1fbG9jYWxpemVkRGVzY3JpcHRpb24gPSBtX2xvY2FsaXplZERlc2NyaXB0
aW9uLmlzb2xhdGVkQ29weSgpOwotICAgIGVycm9yQ29weS5tX2lzTnVsbCA9IG1faXNOdWxsOwot
ICAgIGVycm9yQ29weS5tX2lzQ2FuY2VsbGF0aW9uID0gbV9pc0NhbmNlbGxhdGlvbjsKLSAgICBl
cnJvckNvcHkubV9pc1RpbWVvdXQgPSBtX2lzVGltZW91dDsKKyAgICBlcnJvckNvcHkubV90eXBl
ID0gbV90eXBlOwogCiAgICAgZXJyb3JDb3B5LmRvUGxhdGZvcm1Jc29sYXRlZENvcHkoYXNSZXNv
dXJjZUVycm9yKCkpOwogCkBAIC01OSwxMiArNTcsMTggQEAgdm9pZCBSZXNvdXJjZUVycm9yQmFz
ZTo6bGF6eUluaXQoKSBjb25zdAogICAgIGNvbnN0X2Nhc3Q8UmVzb3VyY2VFcnJvcio+KHN0YXRp
Y19jYXN0PGNvbnN0IFJlc291cmNlRXJyb3IqPih0aGlzKSktPnBsYXRmb3JtTGF6eUluaXQoKTsK
IH0KIAordm9pZCBSZXNvdXJjZUVycm9yQmFzZTo6c2V0VHlwZShUeXBlIHR5cGUpCit7CisgICAg
QVNTRVJUKG1fdHlwZSA9PSBUeXBlOjpHZW5lcmFsIHx8IG1fdHlwZSA9PSBUeXBlOjpOdWxsKTsK
KyAgICBtX3R5cGUgPSB0eXBlOworfQorCiBib29sIFJlc291cmNlRXJyb3JCYXNlOjpjb21wYXJl
KGNvbnN0IFJlc291cmNlRXJyb3ImIGEsIGNvbnN0IFJlc291cmNlRXJyb3ImIGIpCiB7CiAgICAg
aWYgKGEuaXNOdWxsKCkgJiYgYi5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAg
ICBpZiAoYS5pc051bGwoKSB8fCBiLmlzTnVsbCgpKQorICAgIGlmIChhLnR5cGUoKSAhPSBiLnR5
cGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGEuZG9tYWluKCkgIT0gYi5k
b21haW4oKSkKQEAgLTc5LDEyICs4Myw2IEBAIGJvb2wgUmVzb3VyY2VFcnJvckJhc2U6OmNvbXBh
cmUoY29uc3QgUmVzb3VyY2VFcnJvciYgYSwgY29uc3QgUmVzb3VyY2VFcnJvciYgYikKICAgICBp
ZiAoYS5sb2NhbGl6ZWREZXNjcmlwdGlvbigpICE9IGIubG9jYWxpemVkRGVzY3JpcHRpb24oKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGEuaXNDYW5jZWxsYXRpb24oKSAhPSBi
LmlzQ2FuY2VsbGF0aW9uKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChhLmlz
VGltZW91dCgpICE9IGIuaXNUaW1lb3V0KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQogICAg
IHJldHVybiBSZXNvdXJjZUVycm9yOjpwbGF0Zm9ybUNvbXBhcmUoYSwgYik7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaApp
bmRleCBiYjZhM2E1YzMyNzBiZGUyMmI5ZDAyOWMzZGRhZWE3YjhmNTAyNGYyLi45ZGYxOTJmYTRk
ZTY1ZTk2Yjk0NDVkYTZmMDM2NzZlY2EwZjAwZTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5oCkBAIC0xLDUgKzEsNiBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE2IENhbm9uIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIwLDcgKzIxLDcgQEAKICAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAogI3ByYWdtYSBvbmNlCkBAIC0zOCwzOCArMzksMzYgQEAgY2xhc3Mg
UmVzb3VyY2VFcnJvckJhc2UgewogcHVibGljOgogICAgIFJlc291cmNlRXJyb3IgaXNvbGF0ZWRD
b3B5KCkgY29uc3Q7CiAKLSAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1faXNOdWxs
OyB9Ci0KICAgICBjb25zdCBTdHJpbmcmIGRvbWFpbigpIGNvbnN0IHsgbGF6eUluaXQoKTsgcmV0
dXJuIG1fZG9tYWluOyB9CiAgICAgaW50IGVycm9yQ29kZSgpIGNvbnN0IHsgbGF6eUluaXQoKTsg
cmV0dXJuIG1fZXJyb3JDb2RlOyB9CiAgICAgY29uc3QgVVJMJiBmYWlsaW5nVVJMKCkgY29uc3Qg
eyBsYXp5SW5pdCgpOyByZXR1cm4gbV9mYWlsaW5nVVJMOyB9CiAgICAgY29uc3QgU3RyaW5nJiBs
b2NhbGl6ZWREZXNjcmlwdGlvbigpIGNvbnN0IHsgbGF6eUluaXQoKTsgcmV0dXJuIG1fbG9jYWxp
emVkRGVzY3JpcHRpb247IH0KIAotICAgIHZvaWQgc2V0SXNDYW5jZWxsYXRpb24oYm9vbCBpc0Nh
bmNlbGxhdGlvbikgeyBtX2lzQ2FuY2VsbGF0aW9uID0gaXNDYW5jZWxsYXRpb247IH0KLSAgICBi
b29sIGlzQ2FuY2VsbGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0NhbmNlbGxhdGlvbjsgfQor
ICAgIGVudW0gY2xhc3MgVHlwZSB7CisgICAgICAgIE51bGwsCisgICAgICAgIEdlbmVyYWwsCisg
ICAgICAgIENhbmNlbGxhdGlvbiwKKyAgICAgICAgVGltZW91dAorICAgIH07CiAKLSAgICB2b2lk
IHNldElzVGltZW91dChib29sIGlzVGltZW91dCkgeyBtX2lzVGltZW91dCA9IGlzVGltZW91dDsg
fQotICAgIGJvb2wgaXNUaW1lb3V0KCkgY29uc3QgeyByZXR1cm4gbV9pc1RpbWVvdXQ7IH0KKyAg
ICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpOdWxsOyB9Cisg
ICAgYm9vbCBpc0NhbmNlbGxhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpD
YW5jZWxsYXRpb247IH0KKyAgICBib29sIGlzVGltZW91dCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlw
ZSA9PSBUeXBlOjpUaW1lb3V0OyB9CiAKICAgICBzdGF0aWMgYm9vbCBjb21wYXJlKGNvbnN0IFJl
c291cmNlRXJyb3ImLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKKyAgICB2b2lkIHNldFR5cGUo
VHlwZSk7CisgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisKIHByb3Rl
Y3RlZDoKLSAgICBSZXNvdXJjZUVycm9yQmFzZSgpCi0gICAgICAgIDogbV9lcnJvckNvZGUoMCkK
LSAgICAgICAgLCBtX2lzTnVsbCh0cnVlKQotICAgICAgICAsIG1faXNDYW5jZWxsYXRpb24oZmFs
c2UpCi0gICAgICAgICwgbV9pc1RpbWVvdXQoZmFsc2UpCi0gICAgewotICAgIH0KKyAgICBSZXNv
dXJjZUVycm9yQmFzZShUeXBlIHR5cGUpIDogbV90eXBlKHR5cGUpIHsgfQogCi0gICAgUmVzb3Vy
Y2VFcnJvckJhc2UoY29uc3QgU3RyaW5nJiBkb21haW4sIGludCBlcnJvckNvZGUsIGNvbnN0IFVS
TCYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlvbikKKyAgICBS
ZXNvdXJjZUVycm9yQmFzZShjb25zdCBTdHJpbmcmIGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29u
c3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uLCBU
eXBlIHR5cGUpCiAgICAgICAgIDogbV9kb21haW4oZG9tYWluKQogICAgICAgICAsIG1fZmFpbGlu
Z1VSTChmYWlsaW5nVVJMKQogICAgICAgICAsIG1fbG9jYWxpemVkRGVzY3JpcHRpb24obG9jYWxp
emVkRGVzY3JpcHRpb24pCiAgICAgICAgICwgbV9lcnJvckNvZGUoZXJyb3JDb2RlKQotICAgICAg
ICAsIG1faXNOdWxsKGZhbHNlKQotICAgICAgICAsIG1faXNDYW5jZWxsYXRpb24oZmFsc2UpCi0g
ICAgICAgICwgbV9pc1RpbWVvdXQoZmFsc2UpCisgICAgICAgICwgbV90eXBlKHR5cGUpCiAgICAg
ewogICAgIH0KIApAQCAtODQsMTAgKzgzLDggQEAgcHJvdGVjdGVkOgogICAgIFN0cmluZyBtX2Rv
bWFpbjsKICAgICBVUkwgbV9mYWlsaW5nVVJMOwogICAgIFN0cmluZyBtX2xvY2FsaXplZERlc2Ny
aXB0aW9uOwotICAgIGludCBtX2Vycm9yQ29kZTsKLSAgICBib29sIG1faXNOdWxsIDogMTsKLSAg
ICBib29sIG1faXNDYW5jZWxsYXRpb24gOiAxOwotICAgIGJvb2wgbV9pc1RpbWVvdXQgOiAxOwor
ICAgIGludCBtX2Vycm9yQ29kZSB7IDAgfTsKKyAgICBUeXBlIG1fdHlwZSB7IFR5cGU6OkdlbmVy
YWwgfTsKIAogcHJpdmF0ZToKICAgICBjb25zdCBSZXNvdXJjZUVycm9yJiBhc1Jlc291cmNlRXJy
b3IoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VFcnJvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZUVycm9yLmgKaW5kZXggMmNhMDRlZWYyODI2OWY5ODJhZmNmMDZiN2I5YmUxMjA3ZTg4
MmI1ZS4uZTRlMGI3N2EwYmMzYmVlZmYzNTZhNTlhNGU3Yjk5ZGU0YTNhYTNlZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmgKQEAg
LTQ0LDEzICs0NCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlc291cmNlRXJy
b3IgOiBwdWJsaWMgUmVzb3VyY2VFcnJvckJhc2UgewogcHVibGljOgotICAgIFJlc291cmNlRXJy
b3IoKQotICAgICAgICA6IG1fZGF0YUlzVXBUb0RhdGUodHJ1ZSkKKyAgICBSZXNvdXJjZUVycm9y
KFR5cGUgdHlwZSA9IFR5cGU6Ok51bGwpCisgICAgICAgIDogUmVzb3VyY2VFcnJvckJhc2UodHlw
ZSkKKyAgICAgICAgLCBtX2RhdGFJc1VwVG9EYXRlKHRydWUpCiAgICAgewogICAgIH0KIAotICAg
IFJlc291cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBkb21haW4sIGludCBlcnJvckNvZGUsIGNvbnN0
IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlvbikKLSAg
ICAgICAgOiBSZXNvdXJjZUVycm9yQmFzZShkb21haW4sIGVycm9yQ29kZSwgZmFpbGluZ1VSTCwg
bG9jYWxpemVkRGVzY3JpcHRpb24pCisgICAgUmVzb3VyY2VFcnJvcihjb25zdCBTdHJpbmcmIGRv
bWFpbiwgaW50IGVycm9yQ29kZSwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBTdHJpbmcm
IGxvY2FsaXplZERlc2NyaXB0aW9uLCBUeXBlIHR5cGUgPSBUeXBlOjpHZW5lcmFsKQorICAgICAg
ICA6IFJlc291cmNlRXJyb3JCYXNlKGRvbWFpbiwgZXJyb3JDb2RlLCBmYWlsaW5nVVJMLCBsb2Nh
bGl6ZWREZXNjcmlwdGlvbiwgdHlwZSkKICAgICAgICAgLCBtX2RhdGFJc1VwVG9EYXRlKHRydWUp
CiAgICAgewogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAppbmRleCBkNWI0ZWU0N2UzOWQ4NjVjYTQ4MjU1NWNl
YzljYzMyN2Q4YTU1M2RjLi41MDM3NjgwNGNlMTUwYTQ5OGFmNTMxMzI3ZjU4NTQ2ZTQxM2U0Mzg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
RXJyb3JDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZUVycm9yQ0YuY3BwCkBAIC00MCwxNyArNDAsMTcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogUmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcihDRkVycm9yUmVmIGNmRXJyb3IpCi0gICAg
OiBtX2RhdGFJc1VwVG9EYXRlKGZhbHNlKQorICAgIDogUmVzb3VyY2VFcnJvckJhc2UoVHlwZTo6
TnVsbCkKKyAgICAsIG1fZGF0YUlzVXBUb0RhdGUoZmFsc2UpCiAgICAgLCBtX3BsYXRmb3JtRXJy
b3IoY2ZFcnJvcikKIHsKLSAgICBtX2lzTnVsbCA9ICFjZkVycm9yOwotICAgIGlmICghbV9pc051
bGwpCi0gICAgICAgIG1faXNUaW1lb3V0ID0gQ0ZFcnJvckdldENvZGUobV9wbGF0Zm9ybUVycm9y
LmdldCgpKSA9PSBrQ0ZVUkxFcnJvclRpbWVkT3V0OworICAgIGlmIChjZkVycm9yKQorICAgICAg
ICBzZXRUeXBlKChDRkVycm9yR2V0Q29kZShtX3BsYXRmb3JtRXJyb3IuZ2V0KCkpID09IGtDRlVS
TEVycm9yVGltZWRPdXQpID8gVHlwZTo6VGltZW91dCA6IFR5cGU6OkdlbmVyYWwpOwogfQogCiAj
aWYgUExBVEZPUk0oV0lOKQogUmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcihjb25zdCBTdHJp
bmcmIGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBT
dHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uLCBDRkRhdGFSZWYgY2VydGlmaWNhdGUpCi0gICAg
OiBSZXNvdXJjZUVycm9yQmFzZShkb21haW4sIGVycm9yQ29kZSwgZmFpbGluZ1VSTCwgbG9jYWxp
emVkRGVzY3JpcHRpb24pCisgICAgOiBSZXNvdXJjZUVycm9yQmFzZShkb21haW4sIGVycm9yQ29k
ZSwgZmFpbGluZ1VSTCwgbG9jYWxpemVkRGVzY3JpcHRpb24sIFR5cGU6OkdlbmVyYWwpCiAgICAg
LCBtX2RhdGFJc1VwVG9EYXRlKHRydWUpCiAgICAgLCBtX2NlcnRpZmljYXRlKGNlcnRpZmljYXRl
KQogewpAQCAtMTM2LDcgKzEzNiw3IEBAIGJvb2wgUmVzb3VyY2VFcnJvcjo6cGxhdGZvcm1Db21w
YXJlKGNvbnN0IFJlc291cmNlRXJyb3ImIGEsIGNvbnN0IFJlc291cmNlRXJyb3ImCiAKIENGRXJy
b3JSZWYgUmVzb3VyY2VFcnJvcjo6Y2ZFcnJvcigpIGNvbnN0CiB7Ci0gICAgaWYgKG1faXNOdWxs
KSB7CisgICAgaWYgKGlzTnVsbCgpKSB7CiAgICAgICAgIEFTU0VSVCghbV9wbGF0Zm9ybUVycm9y
KTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtMTcyLDkgKzE3Miw5IEBAIFJlc291cmNl
RXJyb3I6Om9wZXJhdG9yIENGRXJyb3JSZWYoKSBjb25zdAogCiAvLyBGSVhNRTogT25jZSA8cmRh
cjovL3Byb2JsZW0vNTA1MDg0MT4gaXMgZml4ZWQgd2UgY2FuIHJlbW92ZSB0aGlzIGNvbnN0cnVj
dG9yLgogUmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcihDRlN0cmVhbUVycm9yIGVycm9yKQot
ICAgIDogbV9kYXRhSXNVcFRvRGF0ZSh0cnVlKQorICAgIDogUmVzb3VyY2VFcnJvckJhc2UoVHlw
ZTo6R2VuZXJhbCkKKyAgICAsIG1fZGF0YUlzVXBUb0RhdGUodHJ1ZSkKIHsKLSAgICBtX2lzTnVs
bCA9IGZhbHNlOwogICAgIG1fZXJyb3JDb2RlID0gZXJyb3IuZXJyb3I7CiAKICAgICBzd2l0Y2go
ZXJyb3IuZG9tYWluKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1Jlc291cmNlRXJyb3IuaAppbmRleCBlZWM0NjJkNWY2ZmM3YTRjODAyZWRjZDJiMjc5
M2EwZTI3NGM5NGNjLi5lMzRmNmViYzhmNTZmOGM1ZDc4NjJiZTgwYmI5ZmExYWM1NGJjYTY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VF
cnJvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZUVycm9yLmgKQEAgLTQwLDEyICs0MCwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBS
ZXNvdXJjZUVycm9yIDogcHVibGljIFJlc291cmNlRXJyb3JCYXNlCiB7CiBwdWJsaWM6Ci0gICAg
UmVzb3VyY2VFcnJvcigpIDogbV9zc2xFcnJvcnMoMCkKKyAgICBSZXNvdXJjZUVycm9yKFR5cGUg
dHlwZSA9IFR5cGU6Ok51bGwpCisgICAgICAgIDogUmVzb3VyY2VFcnJvckJhc2UodHlwZSkKKyAg
ICAgICAgLCBtX3NzbEVycm9ycygwKQogICAgIHsKICAgICB9CiAKLSAgICBSZXNvdXJjZUVycm9y
KGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZhaWxpbmdV
UkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24pCi0gICAgICAgIDogUmVzb3Vy
Y2VFcnJvckJhc2UoZG9tYWluLCBlcnJvckNvZGUsIGZhaWxpbmdVUkwsIGxvY2FsaXplZERlc2Ny
aXB0aW9uKSwgbV9zc2xFcnJvcnMoMCkKKyAgICBSZXNvdXJjZUVycm9yKGNvbnN0IFN0cmluZyYg
ZG9tYWluLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmlu
ZyYgbG9jYWxpemVkRGVzY3JpcHRpb24sIFR5cGUgdHlwZSA9IFR5cGU6Ok51bGwpCisgICAgICAg
IDogUmVzb3VyY2VFcnJvckJhc2UoZG9tYWluLCBlcnJvckNvZGUsIGZhaWxpbmdVUkwsIGxvY2Fs
aXplZERlc2NyaXB0aW9uLCB0eXBlKQorICAgICAgICAsIG1fc3NsRXJyb3JzKDApCiAgICAgewog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VFcnJvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L1Jlc291cmNlRXJyb3JNYWMubW0KaW5kZXggNTIwNzliZDFmNTM1ZGZiYzkyMjYxMzExYTUxZGMz
NzQ1YTIxOGFjMi4uNDZlMDM0NjQzNTIyM2E2MTMyN2E4MDAyODkyODhkMmEzMTg5MWQ0MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJv
ck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJj
ZUVycm9yTWFjLm1tCkBAIC0xOTMsMTcgKzE5MywxNiBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRXJy
b3I+IGNyZWF0ZU5TRXJyb3JGcm9tUmVzb3VyY2VFcnJvckJhc2UoY29uc3QgUmVzb3VyY2VFcnJv
cgogI2lmIFVTRShDRk5FVFdPUkspCiAKIFJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoTlNF
cnJvciAqZXJyb3IpCi0gICAgOiBtX2RhdGFJc1VwVG9EYXRlKGZhbHNlKQorICAgICwgbV9kYXRh
SXNVcFRvRGF0ZShmYWxzZSkKICAgICAsIG1fcGxhdGZvcm1FcnJvcihyZWludGVycHJldF9jYXN0
PENGRXJyb3JSZWY+KGVycm9yKSkKIHsKLSAgICBtX2lzTnVsbCA9ICFlcnJvcjsKLSAgICBpZiAo
IW1faXNOdWxsKQotICAgICAgICBtX2lzVGltZW91dCA9IFtlcnJvciBjb2RlXSA9PSBOU1VSTEVy
cm9yVGltZWRPdXQ7CisgICAgaWYgKGVycm9yKQorICAgICAgICBzZXRUeXBlKChbZXJyb3IgY29k
ZV0gPT0gTlNVUkxFcnJvclRpbWVkT3V0KSA/IFR5cGU6OlRpbWVvdXQgOiBUeXBlOjpHZW5lcmFs
KTsKIH0KIAogTlNFcnJvciAqUmVzb3VyY2VFcnJvcjo6bnNFcnJvcigpIGNvbnN0CiB7Ci0gICAg
aWYgKG1faXNOdWxsKSB7CisgICAgaWYgKGlzTnVsbCgpKSB7CiAgICAgICAgIEFTU0VSVCghbV9w
bGF0Zm9ybUVycm9yKTsKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICB9CkBAIC0yMzgsMjEgKzIz
NywxNyBAQCBSZXNvdXJjZUVycm9yOjpvcGVyYXRvciBOU0Vycm9yICooKSBjb25zdAogI2Vsc2UK
IAogUmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcihOU0Vycm9yICpuc0Vycm9yKQotICAgIDog
bV9kYXRhSXNVcFRvRGF0ZShmYWxzZSkKKyAgICA6IFJlc291cmNlRXJyb3JCYXNlKFR5cGU6Ok51
bGwpCisgICAgLCBtX2RhdGFJc1VwVG9EYXRlKGZhbHNlKQogICAgICwgbV9wbGF0Zm9ybUVycm9y
KG5zRXJyb3IpCiB7Ci0gICAgbV9pc051bGwgPSAhbnNFcnJvcjsKLSAgICBpZiAoIW1faXNOdWxs
KQotICAgICAgICBtX2lzVGltZW91dCA9IFttX3BsYXRmb3JtRXJyb3IuZ2V0KCkgY29kZV0gPT0g
TlNVUkxFcnJvclRpbWVkT3V0OworICAgIGlmIChuc0Vycm9yKQorICAgICAgICBzZXRUeXBlKChb
bV9wbGF0Zm9ybUVycm9yLmdldCgpIGNvZGVdID09IE5TVVJMRXJyb3JUaW1lZE91dCkgPyBUeXBl
OjpUaW1lb3V0IDogVHlwZTo6R2VuZXJhbCk7CiB9CiAKIFJlc291cmNlRXJyb3I6OlJlc291cmNl
RXJyb3IoQ0ZFcnJvclJlZiBjZkVycm9yKQotICAgIDogbV9kYXRhSXNVcFRvRGF0ZShmYWxzZSkK
LSAgICAsIG1fcGxhdGZvcm1FcnJvcigoTlNFcnJvciAqKWNmRXJyb3IpCisgICAgOiBSZXNvdXJj
ZUVycm9yKChOU0Vycm9yICopY2ZFcnJvcikKIHsKLSAgICBtX2lzTnVsbCA9ICFjZkVycm9yOwot
ICAgIGlmICghbV9pc051bGwpCi0gICAgICAgIG1faXNUaW1lb3V0ID0gW21fcGxhdGZvcm1FcnJv
ci5nZXQoKSBjb2RlXSA9PSBOU1VSTEVycm9yVGltZWRPdXQ7CiB9CiAKIHZvaWQgUmVzb3VyY2VF
cnJvcjo6cGxhdGZvcm1MYXp5SW5pdCgpCkBAIC0yODcsNyArMjgyLDcgQEAgdm9pZCBSZXNvdXJj
ZUVycm9yOjpkb1BsYXRmb3JtSXNvbGF0ZWRDb3B5KGNvbnN0IFJlc291cmNlRXJyb3ImKQogCiBO
U0Vycm9yICpSZXNvdXJjZUVycm9yOjpuc0Vycm9yKCkgY29uc3QKIHsKLSAgICBpZiAobV9pc051
bGwpIHsKKyAgICBpZiAoaXNOdWxsKCkpIHsKICAgICAgICAgQVNTRVJUKCFtX3BsYXRmb3JtRXJy
b3IpOwogICAgICAgICByZXR1cm4gbmlsOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvci5oCmluZGV4IGM0ZDdhZGE3ZjE4
Y2Y2NWQ3ODM3MGVmY2QzYWFiMjg3MjcyYzdhYTAuLmJmMDI5MTg0ODIwZmJlNWQ0MDY1ZjYwNDdh
MjI1Y2I4ZGFkZTQ3YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9SZXNvdXJjZUVycm9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Jlc291cmNlRXJyb3IuaApAQCAtNDEsMTQgKzQxLDE1IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3IgOiBwdWJsaWMgUmVzb3VyY2VFcnJvckJhc2UK
IHsKIHB1YmxpYzoKLSAgICBSZXNvdXJjZUVycm9yKGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQg
ZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVk
RGVzY3JpcHRpb24pCi0gICAgICAgIDogUmVzb3VyY2VFcnJvckJhc2UoZG9tYWluLCBlcnJvckNv
ZGUsIGZhaWxpbmdVUkwsIGxvY2FsaXplZERlc2NyaXB0aW9uKQorICAgIFJlc291cmNlRXJyb3Io
VHlwZSB0eXBlID0gVHlwZTo6TnVsbCkKKyAgICAgICAgOiBSZXNvdXJjZUVycm9yQmFzZSh0eXBl
KQogICAgICAgICAsIG1fdGxzRXJyb3JzKDApCiAgICAgewogICAgIH0KIAotICAgIFJlc291cmNl
RXJyb3IoKQotICAgICAgICA6IG1fdGxzRXJyb3JzKDApCisgICAgUmVzb3VyY2VFcnJvcihjb25z
dCBTdHJpbmcmIGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBj
b25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uLCBUeXBlIHR5cGUgPSBUeXBlOjpHZW5l
cmFsKQorICAgICAgICA6IFJlc291cmNlRXJyb3JCYXNlKGRvbWFpbiwgZXJyb3JDb2RlLCBmYWls
aW5nVVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlvbiwgdHlwZSkKKyAgICAgICAgLCBtX3Rsc0Vycm9y
cygwKQogICAgIHsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwCmluZGV4IGRiNmZkOTVkNjI0
YzI5ODM4YTk1MGVkOWYyZTBlNWMwMjY5YjdhMzguLmVlNDM2Mjc2NWYxYzUyMGVkODQyNjBmNTM0
YzY2NzExNzZiODYwZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9SZXNvdXJjZUVycm9yU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcApAQCAtOTIsOSArOTIsNyBAQCBS
ZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6OnRpbWVvdXRFcnJvcihjb25zdCBVUkwmIGZhaWxp
bmdVUkwpCiAgICAgLy8gVXNlIHRoZSBzYW1lIHZhbHVlIGFzIGluIE5TVVJMRXJyb3IuaAogICAg
IHN0YXRpYyBjb25zdCBpbnQgdGltZW91dEVycm9yID0gLTEwMDE7CiAgICAgc3RhdGljIGNvbnN0
IGNoYXIqIGNvbnN0ICBlcnJvckRvbWFpbiA9ICJXZWJLaXROZXR3b3JrRXJyb3IiOwotICAgIFJl
c291cmNlRXJyb3IgZXJyb3IgPSBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluLCB0aW1lb3V0RXJy
b3IsIGZhaWxpbmdVUkwsICJSZXF1ZXN0IHRpbWVkIG91dCIpOwotICAgIGVycm9yLnNldElzVGlt
ZW91dCh0cnVlKTsKLSAgICByZXR1cm4gZXJyb3I7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3Io
ZXJyb3JEb21haW4sIHRpbWVvdXRFcnJvciwgZmFpbGluZ1VSTCwgIlJlcXVlc3QgdGltZWQgb3V0
IiwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6VGltZW91dCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VFcnJv
cjo6ZG9QbGF0Zm9ybUlzb2xhdGVkQ29weShjb25zdCBSZXNvdXJjZUVycm9yJiBvdGhlcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9zb3VwL1dlYkNvcmVBcmd1bWVudENvZGVy
c1NvdXAuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzU291cC5jcHAKaW5kZXggM2QwYTU0YmI2MTM3NTY1OTcxODY5NjQwM2I5M2RmZGEyYTRlMmRl
My4uYTU1NWNhOTFiNTI3ZmI5NmRkMjgzN2U4ZDBjMGZkODI2OGIwYjc1ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291
cC5jcHAKQEAgLTE4NiwyNyArMTg2LDI0IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxDZXJ0aWZpY2F0
ZUluZm8+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBDZXJ0aWZpY2F0CiAKIHZv
aWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZUVycm9yPjo6ZW5jb2RlUGxhdGZvcm1EYXRhKEFyZ3Vt
ZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVzb3VyY2VFcnJvciYgcmVzb3VyY2VFcnJvcikK
IHsKLSAgICBib29sIGVycm9ySXNOdWxsID0gcmVzb3VyY2VFcnJvci5pc051bGwoKTsKLSAgICBl
bmNvZGVyIDw8IGVycm9ySXNOdWxsOwotICAgIGlmIChlcnJvcklzTnVsbCkKKyAgICBlbmNvZGVy
LmVuY29kZUVudW0ocmVzb3VyY2VFcnJvci50eXBlKCkpOworICAgIGlmIChyZXNvdXJjZUVycm9y
LmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBlbmNvZGVyIDw8IHJlc291cmNlRXJy
b3IuZG9tYWluKCk7CiAgICAgZW5jb2RlciA8PCByZXNvdXJjZUVycm9yLmVycm9yQ29kZSgpOwog
ICAgIGVuY29kZXIgPDwgcmVzb3VyY2VFcnJvci5mYWlsaW5nVVJMKCkuc3RyaW5nKCk7CiAgICAg
ZW5jb2RlciA8PCByZXNvdXJjZUVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCk7Ci0gICAgZW5j
b2RlciA8PCByZXNvdXJjZUVycm9yLmlzQ2FuY2VsbGF0aW9uKCk7Ci0gICAgZW5jb2RlciA8PCBy
ZXNvdXJjZUVycm9yLmlzVGltZW91dCgpOwogCiAgICAgZW5jb2RlciA8PCBDZXJ0aWZpY2F0ZUlu
Zm8ocmVzb3VyY2VFcnJvcik7CiB9CiAKIGJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZUVycm9y
Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUmVzb3VyY2VF
cnJvciYgcmVzb3VyY2VFcnJvcikKIHsKLSAgICBib29sIGVycm9ySXNOdWxsOwotICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoZXJyb3JJc051bGwpKQorICAgIFJlc291cmNlRXJyb3JCYXNlOjpUeXBl
IGVycm9yVHlwZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShlcnJvclR5cGUpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGVycm9ySXNOdWxsKSB7CisgICAgaWYgKGVycm9y
VHlwZSA9PSBSZXNvdXJjZUVycm9yQmFzZTo6VHlwZTo6TnVsbCkgewogICAgICAgICByZXNvdXJj
ZUVycm9yID0gUmVzb3VyY2VFcnJvcigpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBA
IC0yMjcsMTcgKzIyNCw4IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZUVycm9yPjo6ZGVj
b2RlUGxhdGZvcm1EYXRhKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGxvY2FsaXplZERlc2NyaXB0aW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgYm9vbCBpc0NhbmNlbGxhdGlvbjsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzQ2Fu
Y2VsbGF0aW9uKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgYm9vbCBpc1RpbWVvdXQ7
Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShpc1RpbWVvdXQpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KICAgICByZXNvdXJjZUVycm9yID0gUmVzb3VyY2VFcnJvcihkb21haW4sIGVycm9yQ29k
ZSwgVVJMKFVSTCgpLCBmYWlsaW5nVVJMKSwgbG9jYWxpemVkRGVzY3JpcHRpb24pOwotICAgIHJl
c291cmNlRXJyb3Iuc2V0SXNDYW5jZWxsYXRpb24oaXNDYW5jZWxsYXRpb24pOwotICAgIHJlc291
cmNlRXJyb3Iuc2V0SXNUaW1lb3V0KGlzVGltZW91dCk7CisgICAgcmVzb3VyY2VFcnJvci5zZXRU
eXBlKGVycm9yVHlwZSk7CiAKICAgICBDZXJ0aWZpY2F0ZUluZm8gY2VydGlmaWNhdGVJbmZvOwog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY2VydGlmaWNhdGVJbmZvKSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280885</attachid>
            <date>2016-06-08 23:23:13 -0700</date>
            <delta_ts>2016-06-08 23:53:57 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-158299-20160609082440.patch</filename>
            <type>text/plain</type>
            <size>24904</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxODU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGQyYTMxMWVmZWFiMTM2
NWU3OTZjNjY5MjYxMjIxMTI3MTg4NjdiOC4uYmY0ZmRkZjA0ODBiYWU3OWM3YzhkNjQxYzRkNzVk
OTliOGY0NjhlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE2LTA2LTA4ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgSW50cm9k
dWNlIFJlc291cmNlRXJyb3JCYXNlOjp0eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgyOTkKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENo
cmlzdGVuc2VuLgorCisgICAgICAgIEludHJvZHVjaW5nIGFuIGVudW0gdHlwZSBmb3IgUmVzb3Vy
Y2VFcnJvckJhc2UuCisgICAgICAgIEluIG1vc3QgY2FzZXMsIHRoZSB0eXBlIGlzIHNldCBhdCBj
b25zdHJ1Y3Rpb24gdGltZS4KKyAgICAgICAgQnkgZGVmYXVsdCwgY29uc3RydWN0b3Igd2l0aCBu
byBwYXJhbWV0ZXJzIHdpbGwgc2V0IHR5cGUgdG8gTnVsbC4KKyAgICAgICAgQ29uc3RydWN0b3Ig
d2l0aCBwYXJhbWV0ZXJzIHdpbGwgc2V0IHR5cGUgdG8gR2VuZXJhbC4KKworICAgICAgICBSZW1v
dmVkIGJvb2xlYW4gc3RhdGUgZXJyb3IgZmllbGRzLgorCisgICAgICAgIEludHJvZHVjZWQgYSB0
eXBlIHNldHRlci4gSXQgc2hvdWxkIG9ubHkgYmUgdXNlZCB0byAgbWFrZSB0aGUgdHlwZQorICAg
ICAgICBtb3JlIHByZWNpc2UgKHdoZW4gdHlwZSBpcyBOdWxsIG9yIEdlbmVyYWwpLgorCisgICAg
ICAgIFVwZGF0aW5nIHJlbGF0ZWQgY2FsbGluZyBjb2RlLgorCisgICAgICAgIE5vIGNoYW5nZSBv
ZiBiZWhhdmlvci4KKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c3RvcExvYWRpbmdGb3JQb2xpY3lDaGFuZ2Up
OgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpjYW5jZWwpOgorICAgICAgICAq
IGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNhbmNlbGxlZEVycm9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpibG9ja2VkRXJyb3IpOgorICAgICAgICAqIGxvYWRl
ci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRo
cmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmNhbmNlbCk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yQmFzZTo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlRXJyb3JCYXNlOjpzZXRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3JC
YXNlOjpjb21wYXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JC
YXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yQmFzZTo6aXNOdWxsKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3JCYXNlOjppc0NhbmNlbGxhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yQmFzZTo6aXNUaW1lb3V0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlRXJyb3JCYXNlOjp0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlRXJyb3JCYXNlOjpSZXNvdXJjZUVycm9yQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUVycm9yQmFzZTo6ZG9tYWluKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlRXJyb3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OlJlc291cmNl
RXJyb3IpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6Y2ZFcnJvcik6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jdXJsL1Jlc291cmNlRXJyb3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlRXJyb3I6OlJlc291cmNlRXJyb3IpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFj
L1Jlc291cmNlRXJyb3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjptX3BsYXRmb3JtRXJyb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6bnNFcnJvcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlRXJyb3I6OnBsYXRmb3JtTGF6eUluaXQpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvc291cC9SZXNvdXJjZUVycm9yLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yOjpSZXNvdXJjZUVycm9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVz
b3VyY2VFcnJvclNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6dGlt
ZW91dEVycm9yKToKKwogMjAxNi0wNi0wOCAgRnJlZGVyaWMgV2FuZyAgPGZ3YW5nQGlnYWxpYS5j
b20+CiAKICAgICAgICAgTW92ZSBzZWxlY3Rpb24gYW5kIGRyYXdpbmcgb2Ygc3RyZXRjaHkgb3Bl
cmF0b3JzIGludG8gYSBzZXBhcmF0ZSBNYXRoT3BlcmF0b3IgY2xhc3MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBm
YThlOGU5ZDRmZGRiY2RhZDZhZGMxMDY2ZGY0NzkzMjc3Y2YzZjBiLi40ZDU5YmQ3MjlhMTdlYjMw
Mzc3NzEyNmNjYTAwMTU3MzdmODY2YmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIw
MTYtMDYtMDggIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KKwor
ICAgICAgICBJbnRyb2R1Y2UgUmVzb3VyY2VFcnJvckJhc2U6OnR5cGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODI5OQorCisgICAgICAgIFJldmll
d2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgKiBTaGFyZWQvc291cC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNTb3VwLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZXNv
dXJjZUVycm9yPjo6ZW5jb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxSZXNvdXJjZUVycm9yPjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKwogMjAxNi0wNi0wOCAg
QmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgX3dlYl9kaWRBZGRNZWRp
YUNvbnRyb2xzTWFuYWdlciBzaG91bGQgdGFrZSBhIGNvbnRyb2xzTWFuYWdlciBhcyBhIHBhcmFt
ZXRlciAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IDYyYTM0
ODI3YTQ5Yzc1Zjk3MGJhZDJmYmNjOTFiYjhhMDI3NDNkMmMuLjM1YTFkMGI2N2JlODU3YjYwMTFi
ZDY5YWZhOTAyNDA0Yzc0MTY3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcApAQCAtODQyLDcgKzg0Miw3IEBAIFJlc291cmNlRXJyb3IgRG9jdW1lbnRMb2FkZXI6
OmludGVycnVwdGVkRm9yUG9saWN5Q2hhbmdlRXJyb3IoKSBjb25zdAogdm9pZCBEb2N1bWVudExv
YWRlcjo6c3RvcExvYWRpbmdGb3JQb2xpY3lDaGFuZ2UoKQogewogICAgIFJlc291cmNlRXJyb3Ig
ZXJyb3IgPSBpbnRlcnJ1cHRlZEZvclBvbGljeUNoYW5nZUVycm9yKCk7Ci0gICAgZXJyb3Iuc2V0
SXNDYW5jZWxsYXRpb24odHJ1ZSk7CisgICAgZXJyb3Iuc2V0VHlwZShSZXNvdXJjZUVycm9yOjpU
eXBlOjpDYW5jZWxsYXRpb24pOwogICAgIGNhbmNlbE1haW5SZXNvdXJjZUxvYWQoZXJyb3IpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIuY3BwCmluZGV4IDkwZTRiZmJjMTEyMzg5M2FiMTM1MjQ1ZmI3NDk3NzhkM2I2OTk1YWQuLmE1
MGE2MzZiZDBiYTQyNTg2ZjFlNDhkYTY1Y2QyNDA5ZTIyYzQ2OWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0xNjAsOCAr
MTYwLDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNhbmNlbCgpCiAgICAgLy8g
Q2FuY2VsIGNhbiByZS1lbnRlciBhbmQgbV9yZXNvdXJjZSBtaWdodCBiZSBudWxsIGhlcmUgYXMg
YSByZXN1bHQuCiAgICAgaWYgKG1fY2xpZW50ICYmIG1fcmVzb3VyY2UpIHsKICAgICAgICAgLy8g
RklYTUU6IFRoaXMgZXJyb3IgaXMgc2VudCB0byB0aGUgY2xpZW50IGluIGRpZEZhaWwoKSwgc28g
aXQgc2hvdWxkIG5vdCBiZSBhbiBpbnRlcm5hbCBvbmUuIFVzZSBGcmFtZUxvYWRlckNsaWVudDo6
Y2FuY2VsbGVkRXJyb3IoKSBpbnN0ZWFkLgotICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yKGVy
cm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIG1fcmVzb3VyY2UtPnVybCgpLCAiTG9hZCBjYW5j
ZWxsZWQiKTsKLSAgICAgICAgZXJyb3Iuc2V0SXNDYW5jZWxsYXRpb24odHJ1ZSk7CisgICAgICAg
IFJlc291cmNlRXJyb3IgZXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgbV9yZXNv
dXJjZS0+dXJsKCksICJMb2FkIGNhbmNlbGxlZCIsIFJlc291cmNlRXJyb3I6OlR5cGU6OkNhbmNl
bGxhdGlvbik7CiAgICAgICAgIGRpZEZhaWwobV9yZXNvdXJjZS0+aWRlbnRpZmllcigpLCBlcnJv
cik7CiAgICAgfQogICAgIGNsZWFyUmVzb3VyY2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuaAppbmRleCA5ODRmNDhlYjJjMTJmMGJkNWY4Y2U1M2E4YWMxMDA5OTA5NDY1ODgyLi40
MTM5MjgzMjJlMzIyMDkzNzQwNWEyZTQxZjkxMTM2N2MxNTFmOGZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC0zMzAsMTUgKzMzMCwxNSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgY2hhciosIGludCkgb3ZlcnJp
ZGUgeyB9CiAgICAgdm9pZCBmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqKSBvdmVycmlk
ZSB7IH0KIAotICAgIFJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0Jikgb3ZlcnJpZGUgeyBSZXNvdXJjZUVycm9yIGVycm9yKCIiLCAwLCBVUkwoKSwgIiIp
OyBlcnJvci5zZXRJc0NhbmNlbGxhdGlvbih0cnVlKTsgcmV0dXJuIGVycm9yOyB9Ci0gICAgUmVz
b3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGUg
eyByZXR1cm4gUmVzb3VyY2VFcnJvcigiIiwgMCwgVVJMKCksICIiKTsgfQotICAgIFJlc291cmNl
RXJyb3IgYmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
KSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCBVUkwoKSwgIiIpOyB9Ci0g
ICAgUmVzb3VyY2VFcnJvciBjYW5ub3RTaG93VVJMRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
Jikgb3ZlcnJpZGUgeyByZXR1cm4gUmVzb3VyY2VFcnJvcigiIiwgMCwgVVJMKCksICIiKTsgfQot
ICAgIFJlc291cmNlRXJyb3IgaW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcihjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCBV
UkwoKSwgIiIpOyB9Ci0KLSAgICBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dNSU1FVHlwZUVycm9y
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9y
KCIiLCAwLCBVUkwoKSwgIiIpOyB9Ci0gICAgUmVzb3VyY2VFcnJvciBmaWxlRG9lc05vdEV4aXN0
RXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNl
RXJyb3IoIiIsIDAsIFVSTCgpLCAiIik7IH0KLSAgICBSZXNvdXJjZUVycm9yIHBsdWdpbldpbGxI
YW5kbGVMb2FkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlIHsgcmV0dXJu
IFJlc291cmNlRXJyb3IoIiIsIDAsIFVSTCgpLCAiIik7IH0KKyAgICBSZXNvdXJjZUVycm9yIGNh
bmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlIHsgcmV0dXJuIFJl
c291cmNlRXJyb3IoUmVzb3VyY2VFcnJvcjo6VHlwZTo6Q2FuY2VsbGF0aW9uKTsgfQorICAgIFJl
c291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRl
IHsgcmV0dXJuIHsgfTsgfQorICAgIFJlc291cmNlRXJyb3IgYmxvY2tlZEJ5Q29udGVudEJsb2Nr
ZXJFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZSB7IHJldHVybiB7IH07IH0K
KyAgICBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dVUkxFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVl
c3QmKSBvdmVycmlkZSB7IHJldHVybiB7IH07IH0KKyAgICBSZXNvdXJjZUVycm9yIGludGVycnVw
dGVkRm9yUG9saWN5Q2hhbmdlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGUg
eyByZXR1cm4geyB9OyB9CisKKyAgICBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dNSU1FVHlwZUVy
cm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZSB7IHJldHVybiB7IH07IH0KKyAg
ICBSZXNvdXJjZUVycm9yIGZpbGVEb2VzTm90RXhpc3RFcnJvcihjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgb3ZlcnJpZGUgeyByZXR1cm4geyB9OyB9CisgICAgUmVzb3VyY2VFcnJvciBwbHVnaW5X
aWxsSGFuZGxlTG9hZEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZSB7IHJl
dHVybiB7IH07IH0KIAogICAgIGJvb2wgc2hvdWxkRmFsbEJhY2soY29uc3QgUmVzb3VyY2VFcnJv
ciYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuY3BwCmluZGV4IDVlOWVhYjBlZWQ3ZTIzMDBkY2QyODkyNThjY2Q5ZTkzNmE4NjFlYTEu
LmNjZmI2NjNkYzM4NWNmZDU1MjhmN2MyY2ZjN2IzNGFkYTIyMzFiMzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMzQyMyw3ICszNDIzLDcgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6cmV0cnlBZnRlckZhaWxlZENhY2hlT25seU1haW5SZXNvdXJjZUxvYWQoKQogUmVzb3Vy
Y2VFcnJvciBGcmFtZUxvYWRlcjo6Y2FuY2VsbGVkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KSBjb25zdAogewogICAgIFJlc291cmNlRXJyb3IgZXJyb3IgPSBtX2NsaWVudC5j
YW5jZWxsZWRFcnJvcihyZXF1ZXN0KTsKLSAgICBlcnJvci5zZXRJc0NhbmNlbGxhdGlvbih0cnVl
KTsKKyAgICBlcnJvci5zZXRUeXBlKFJlc291cmNlRXJyb3I6OlR5cGU6OkNhbmNlbGxhdGlvbik7
CiAgICAgcmV0dXJuIGVycm9yOwogfQogCkBAIC0zNDM1LDcgKzM0MzUsNyBAQCBSZXNvdXJjZUVy
cm9yIEZyYW1lTG9hZGVyOjpibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcgogUmVzb3VyY2VFcnJvciBGcmFtZUxvYWRlcjo6YmxvY2tlZEVycm9yKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkgY29uc3QKIHsKICAgICBSZXNvdXJjZUVycm9y
IGVycm9yID0gbV9jbGllbnQuYmxvY2tlZEVycm9yKHJlcXVlc3QpOwotICAgIGVycm9yLnNldElz
Q2FuY2VsbGF0aW9uKHRydWUpOworICAgIGVycm9yLnNldFR5cGUoUmVzb3VyY2VFcnJvcjo6VHlw
ZTo6Q2FuY2VsbGF0aW9uKTsKICAgICByZXR1cm4gZXJyb3I7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCA3NTYwYzU5Nzhl
MmUyMzJkMDdkZjA0ZWI3ZWJjNjVmMWEzNjZiOWRjLi42NjAyZGNlZDQzNjgxYzM1ODYxMGQzODRi
ZWYzOTBmY2I2ODU0OGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2Vy
VGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRo
cmVhZGFibGVMb2FkZXIuY3BwCkBAIC0xMzgsOCArMTM4LDcgQEAgdm9pZCBXb3JrZXJUaHJlYWRh
YmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpjYW5jZWwoKQogICAgIGlmICghY2xpZW50V3Jh
cHBlci0+ZG9uZSgpKSB7CiAgICAgICAgIC8vIElmIHRoZSBjbGllbnQgaGFzbid0IHJlYWNoZWQg
YSB0ZXJtaW5hdGlvbiBzdGF0ZSwgdGhlbiB0cmFuc2l0aW9uIGl0IGJ5IHNlbmRpbmcgYSBjYW5j
ZWxsYXRpb24gZXJyb3IuCiAgICAgICAgIC8vIE5vdGU6IG5vIG1vcmUgY2xpZW50IGNhbGxiYWNr
cyB3aWxsIGJlIGRvbmUgYWZ0ZXIgdGhpcyBtZXRob2QgLS0gdGhlIGNsZWFyQ2xpZW50V3JhcHBl
cigpIGNhbGwgZW5zdXJlcyB0aGF0LgotICAgICAgICBSZXNvdXJjZUVycm9yIGVycm9yKFN0cmlu
ZygpLCAwLCBVUkwoKSwgU3RyaW5nKCkpOwotICAgICAgICBlcnJvci5zZXRJc0NhbmNlbGxhdGlv
bih0cnVlKTsKKyAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcihSZXNvdXJjZUVycm9yOjpUeXBl
OjpDYW5jZWxsYXRpb24pOwogICAgICAgICBjbGllbnRXcmFwcGVyLT5kaWRGYWlsKGVycm9yKTsK
ICAgICB9CiAgICAgY2xlYXJDbGllbnRXcmFwcGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuY3BwCmluZGV4IDBlZmQwNGU4
MjM0NTZmMTZiZDMzMzI3NjU0ZDczZmFjZGUwNjZiZWQuLjg2MGFlYTU2OGQ5N2MwYWU2OTMxMDM3
NDgyM2RiZDU0ODhiMzdlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuY3BwCkBAIC00NSw5ICs0NSw3IEBAIFJlc291cmNl
RXJyb3IgUmVzb3VyY2VFcnJvckJhc2U6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAgZXJyb3JD
b3B5Lm1fZXJyb3JDb2RlID0gbV9lcnJvckNvZGU7CiAgICAgZXJyb3JDb3B5Lm1fZmFpbGluZ1VS
TCA9IG1fZmFpbGluZ1VSTC5pc29sYXRlZENvcHkoKTsKICAgICBlcnJvckNvcHkubV9sb2NhbGl6
ZWREZXNjcmlwdGlvbiA9IG1fbG9jYWxpemVkRGVzY3JpcHRpb24uaXNvbGF0ZWRDb3B5KCk7Ci0g
ICAgZXJyb3JDb3B5Lm1faXNOdWxsID0gbV9pc051bGw7Ci0gICAgZXJyb3JDb3B5Lm1faXNDYW5j
ZWxsYXRpb24gPSBtX2lzQ2FuY2VsbGF0aW9uOwotICAgIGVycm9yQ29weS5tX2lzVGltZW91dCA9
IG1faXNUaW1lb3V0OworICAgIGVycm9yQ29weS5tX3R5cGUgPSBtX3R5cGU7CiAKICAgICBlcnJv
ckNvcHkuZG9QbGF0Zm9ybUlzb2xhdGVkQ29weShhc1Jlc291cmNlRXJyb3IoKSk7CiAKQEAgLTU5
LDEyICs1NywxOCBAQCB2b2lkIFJlc291cmNlRXJyb3JCYXNlOjpsYXp5SW5pdCgpIGNvbnN0CiAg
ICAgY29uc3RfY2FzdDxSZXNvdXJjZUVycm9yKj4oc3RhdGljX2Nhc3Q8Y29uc3QgUmVzb3VyY2VF
cnJvcio+KHRoaXMpKS0+cGxhdGZvcm1MYXp5SW5pdCgpOwogfQogCit2b2lkIFJlc291cmNlRXJy
b3JCYXNlOjpzZXRUeXBlKFR5cGUgdHlwZSkKK3sKKyAgICBBU1NFUlQobV90eXBlID09IFR5cGU6
OkdlbmVyYWwgfHwgbV90eXBlID09IFR5cGU6Ok51bGwpOworICAgIG1fdHlwZSA9IHR5cGU7Cit9
CisKIGJvb2wgUmVzb3VyY2VFcnJvckJhc2U6OmNvbXBhcmUoY29uc3QgUmVzb3VyY2VFcnJvciYg
YSwgY29uc3QgUmVzb3VyY2VFcnJvciYgYikKIHsKICAgICBpZiAoYS5pc051bGwoKSAmJiBiLmlz
TnVsbCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChhLmlzTnVsbCgpIHx8IGIu
aXNOdWxsKCkpCisgICAgaWYgKGEudHlwZSgpICE9IGIudHlwZSgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBpZiAoYS5kb21haW4oKSAhPSBiLmRvbWFpbigpKQpAQCAtNzksMTIgKzgz
LDYgQEAgYm9vbCBSZXNvdXJjZUVycm9yQmFzZTo6Y29tcGFyZShjb25zdCBSZXNvdXJjZUVycm9y
JiBhLCBjb25zdCBSZXNvdXJjZUVycm9yJiBiKQogICAgIGlmIChhLmxvY2FsaXplZERlc2NyaXB0
aW9uKCkgIT0gYi5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBpZiAoYS5pc0NhbmNlbGxhdGlvbigpICE9IGIuaXNDYW5jZWxsYXRpb24oKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKGEuaXNUaW1lb3V0KCkgIT0gYi5pc1RpbWVv
dXQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgcmV0dXJuIFJlc291cmNlRXJyb3I6
OnBsYXRmb3JtQ29tcGFyZShhLCBiKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5oCmluZGV4IGJiNmEzYTVjMzI3MGJkZTIy
YjlkMDI5YzNkZGFlYTdiOGY1MDI0ZjIuLjlkZjE5MmZhNGRlNjVlOTZiOTQ0NWRhNmYwMzY3NmVj
YTBmMDBlOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VFcnJvckJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlRXJyb3JCYXNlLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQ2Fub24gSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjAsNyArMjEsNyBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjcHJh
Z21hIG9uY2UKQEAgLTM4LDM4ICszOSwzNiBAQCBjbGFzcyBSZXNvdXJjZUVycm9yQmFzZSB7CiBw
dWJsaWM6CiAgICAgUmVzb3VyY2VFcnJvciBpc29sYXRlZENvcHkoKSBjb25zdDsKIAotICAgIGJv
b2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9pc051bGw7IH0KLQogICAgIGNvbnN0IFN0cmlu
ZyYgZG9tYWluKCkgY29uc3QgeyBsYXp5SW5pdCgpOyByZXR1cm4gbV9kb21haW47IH0KICAgICBp
bnQgZXJyb3JDb2RlKCkgY29uc3QgeyBsYXp5SW5pdCgpOyByZXR1cm4gbV9lcnJvckNvZGU7IH0K
ICAgICBjb25zdCBVUkwmIGZhaWxpbmdVUkwoKSBjb25zdCB7IGxhenlJbml0KCk7IHJldHVybiBt
X2ZhaWxpbmdVUkw7IH0KICAgICBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uKCkg
Y29uc3QgeyBsYXp5SW5pdCgpOyByZXR1cm4gbV9sb2NhbGl6ZWREZXNjcmlwdGlvbjsgfQogCi0g
ICAgdm9pZCBzZXRJc0NhbmNlbGxhdGlvbihib29sIGlzQ2FuY2VsbGF0aW9uKSB7IG1faXNDYW5j
ZWxsYXRpb24gPSBpc0NhbmNlbGxhdGlvbjsgfQotICAgIGJvb2wgaXNDYW5jZWxsYXRpb24oKSBj
b25zdCB7IHJldHVybiBtX2lzQ2FuY2VsbGF0aW9uOyB9CisgICAgZW51bSBjbGFzcyBUeXBlIHsK
KyAgICAgICAgTnVsbCwKKyAgICAgICAgR2VuZXJhbCwKKyAgICAgICAgQ2FuY2VsbGF0aW9uLAor
ICAgICAgICBUaW1lb3V0CisgICAgfTsKIAotICAgIHZvaWQgc2V0SXNUaW1lb3V0KGJvb2wgaXNU
aW1lb3V0KSB7IG1faXNUaW1lb3V0ID0gaXNUaW1lb3V0OyB9Ci0gICAgYm9vbCBpc1RpbWVvdXQo
KSBjb25zdCB7IHJldHVybiBtX2lzVGltZW91dDsgfQorICAgIGJvb2wgaXNOdWxsKCkgY29uc3Qg
eyByZXR1cm4gbV90eXBlID09IFR5cGU6Ok51bGw7IH0KKyAgICBib29sIGlzQ2FuY2VsbGF0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6OkNhbmNlbGxhdGlvbjsgfQorICAgIGJv
b2wgaXNUaW1lb3V0KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6OlRpbWVvdXQ7IH0K
IAogICAgIHN0YXRpYyBib29sIGNvbXBhcmUoY29uc3QgUmVzb3VyY2VFcnJvciYsIGNvbnN0IFJl
c291cmNlRXJyb3ImKTsKIAorICAgIHZvaWQgc2V0VHlwZShUeXBlKTsKKyAgICBUeXBlIHR5cGUo
KSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKwogcHJvdGVjdGVkOgotICAgIFJlc291cmNlRXJy
b3JCYXNlKCkKLSAgICAgICAgOiBtX2Vycm9yQ29kZSgwKQotICAgICAgICAsIG1faXNOdWxsKHRy
dWUpCi0gICAgICAgICwgbV9pc0NhbmNlbGxhdGlvbihmYWxzZSkKLSAgICAgICAgLCBtX2lzVGlt
ZW91dChmYWxzZSkKLSAgICB7Ci0gICAgfQorICAgIFJlc291cmNlRXJyb3JCYXNlKFR5cGUgdHlw
ZSkgOiBtX3R5cGUodHlwZSkgeyB9CiAKLSAgICBSZXNvdXJjZUVycm9yQmFzZShjb25zdCBTdHJp
bmcmIGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBT
dHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uKQorICAgIFJlc291cmNlRXJyb3JCYXNlKGNvbnN0
IFN0cmluZyYgZG9tYWluLCBpbnQgZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNv
bnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24sIFR5cGUgdHlwZSkKICAgICAgICAgOiBt
X2RvbWFpbihkb21haW4pCiAgICAgICAgICwgbV9mYWlsaW5nVVJMKGZhaWxpbmdVUkwpCiAgICAg
ICAgICwgbV9sb2NhbGl6ZWREZXNjcmlwdGlvbihsb2NhbGl6ZWREZXNjcmlwdGlvbikKICAgICAg
ICAgLCBtX2Vycm9yQ29kZShlcnJvckNvZGUpCi0gICAgICAgICwgbV9pc051bGwoZmFsc2UpCi0g
ICAgICAgICwgbV9pc0NhbmNlbGxhdGlvbihmYWxzZSkKLSAgICAgICAgLCBtX2lzVGltZW91dChm
YWxzZSkKKyAgICAgICAgLCBtX3R5cGUodHlwZSkKICAgICB7CiAgICAgfQogCkBAIC04NCwxMCAr
ODMsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgU3RyaW5nIG1fZG9tYWluOwogICAgIFVSTCBtX2ZhaWxp
bmdVUkw7CiAgICAgU3RyaW5nIG1fbG9jYWxpemVkRGVzY3JpcHRpb247Ci0gICAgaW50IG1fZXJy
b3JDb2RlOwotICAgIGJvb2wgbV9pc051bGwgOiAxOwotICAgIGJvb2wgbV9pc0NhbmNlbGxhdGlv
biA6IDE7Ci0gICAgYm9vbCBtX2lzVGltZW91dCA6IDE7CisgICAgaW50IG1fZXJyb3JDb2RlIHsg
MCB9OworICAgIFR5cGUgbV90eXBlIHsgVHlwZTo6R2VuZXJhbCB9OwogCiBwcml2YXRlOgogICAg
IGNvbnN0IFJlc291cmNlRXJyb3ImIGFzUmVzb3VyY2VFcnJvcigpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3IuaAppbmRleCAy
Y2EwNGVlZjI4MjY5Zjk4MmFmY2YwNmI3YjliZTEyMDdlODgyYjVlLi5lNGUwYjc3YTBiYzNiZWVm
ZjM1NmE1OWE0ZTdiOTlkZTRhM2FhM2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3IuaApAQCAtNDQsMTMgKzQ0LDE0IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVzb3VyY2VFcnJvciA6IHB1YmxpYyBSZXNvdXJjZUVy
cm9yQmFzZSB7CiBwdWJsaWM6Ci0gICAgUmVzb3VyY2VFcnJvcigpCi0gICAgICAgIDogbV9kYXRh
SXNVcFRvRGF0ZSh0cnVlKQorICAgIFJlc291cmNlRXJyb3IoVHlwZSB0eXBlID0gVHlwZTo6TnVs
bCkKKyAgICAgICAgOiBSZXNvdXJjZUVycm9yQmFzZSh0eXBlKQorICAgICAgICAsIG1fZGF0YUlz
VXBUb0RhdGUodHJ1ZSkKICAgICB7CiAgICAgfQogCi0gICAgUmVzb3VyY2VFcnJvcihjb25zdCBT
dHJpbmcmIGRvbWFpbiwgaW50IGVycm9yQ29kZSwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25z
dCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uKQotICAgICAgICA6IFJlc291cmNlRXJyb3JC
YXNlKGRvbWFpbiwgZXJyb3JDb2RlLCBmYWlsaW5nVVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlvbikK
KyAgICBSZXNvdXJjZUVycm9yKGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQgZXJyb3JDb2RlLCBj
b25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpb24s
IFR5cGUgdHlwZSA9IFR5cGU6OkdlbmVyYWwpCisgICAgICAgIDogUmVzb3VyY2VFcnJvckJhc2Uo
ZG9tYWluLCBlcnJvckNvZGUsIGZhaWxpbmdVUkwsIGxvY2FsaXplZERlc2NyaXB0aW9uLCB0eXBl
KQogICAgICAgICAsIG1fZGF0YUlzVXBUb0RhdGUodHJ1ZSkKICAgICB7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0Yu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0Yu
Y3BwCmluZGV4IGQ1YjRlZTQ3ZTM5ZDg2NWNhNDgyNTU1Y2VjOWNjMzI3ZDhhNTUzZGMuLjUwMzc2
ODA0Y2UxNTBhNDk4YWY1MzEzMjdmNTg1NDZlNDEzZTQzODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKQEAgLTQw
LDE3ICs0MCwxNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBSZXNvdXJjZUVycm9yOjpSZXNv
dXJjZUVycm9yKENGRXJyb3JSZWYgY2ZFcnJvcikKLSAgICA6IG1fZGF0YUlzVXBUb0RhdGUoZmFs
c2UpCisgICAgOiBSZXNvdXJjZUVycm9yQmFzZShUeXBlOjpOdWxsKQorICAgICwgbV9kYXRhSXNV
cFRvRGF0ZShmYWxzZSkKICAgICAsIG1fcGxhdGZvcm1FcnJvcihjZkVycm9yKQogewotICAgIG1f
aXNOdWxsID0gIWNmRXJyb3I7Ci0gICAgaWYgKCFtX2lzTnVsbCkKLSAgICAgICAgbV9pc1RpbWVv
dXQgPSBDRkVycm9yR2V0Q29kZShtX3BsYXRmb3JtRXJyb3IuZ2V0KCkpID09IGtDRlVSTEVycm9y
VGltZWRPdXQ7CisgICAgaWYgKGNmRXJyb3IpCisgICAgICAgIHNldFR5cGUoKENGRXJyb3JHZXRD
b2RlKG1fcGxhdGZvcm1FcnJvci5nZXQoKSkgPT0ga0NGVVJMRXJyb3JUaW1lZE91dCkgPyBUeXBl
OjpUaW1lb3V0IDogVHlwZTo6R2VuZXJhbCk7CiB9CiAKICNpZiBQTEFURk9STShXSU4pCiBSZXNv
dXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQgZXJyb3JD
b2RlLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3Jp
cHRpb24sIENGRGF0YVJlZiBjZXJ0aWZpY2F0ZSkKLSAgICA6IFJlc291cmNlRXJyb3JCYXNlKGRv
bWFpbiwgZXJyb3JDb2RlLCBmYWlsaW5nVVJMLCBsb2NhbGl6ZWREZXNjcmlwdGlvbikKKyAgICA6
IFJlc291cmNlRXJyb3JCYXNlKGRvbWFpbiwgZXJyb3JDb2RlLCBmYWlsaW5nVVJMLCBsb2NhbGl6
ZWREZXNjcmlwdGlvbiwgVHlwZTo6R2VuZXJhbCkKICAgICAsIG1fZGF0YUlzVXBUb0RhdGUodHJ1
ZSkKICAgICAsIG1fY2VydGlmaWNhdGUoY2VydGlmaWNhdGUpCiB7CkBAIC0xMzYsNyArMTM2LDcg
QEAgYm9vbCBSZXNvdXJjZUVycm9yOjpwbGF0Zm9ybUNvbXBhcmUoY29uc3QgUmVzb3VyY2VFcnJv
ciYgYSwgY29uc3QgUmVzb3VyY2VFcnJvciYKIAogQ0ZFcnJvclJlZiBSZXNvdXJjZUVycm9yOjpj
ZkVycm9yKCkgY29uc3QKIHsKLSAgICBpZiAobV9pc051bGwpIHsKKyAgICBpZiAoaXNOdWxsKCkp
IHsKICAgICAgICAgQVNTRVJUKCFtX3BsYXRmb3JtRXJyb3IpOwogICAgICAgICByZXR1cm4gMDsK
ICAgICB9CkBAIC0xNzIsOSArMTcyLDkgQEAgUmVzb3VyY2VFcnJvcjo6b3BlcmF0b3IgQ0ZFcnJv
clJlZigpIGNvbnN0CiAKIC8vIEZJWE1FOiBPbmNlIDxyZGFyOi8vcHJvYmxlbS81MDUwODQxPiBp
cyBmaXhlZCB3ZSBjYW4gcmVtb3ZlIHRoaXMgY29uc3RydWN0b3IuCiBSZXNvdXJjZUVycm9yOjpS
ZXNvdXJjZUVycm9yKENGU3RyZWFtRXJyb3IgZXJyb3IpCi0gICAgOiBtX2RhdGFJc1VwVG9EYXRl
KHRydWUpCisgICAgOiBSZXNvdXJjZUVycm9yQmFzZShUeXBlOjpHZW5lcmFsKQorICAgICwgbV9k
YXRhSXNVcFRvRGF0ZSh0cnVlKQogewotICAgIG1faXNOdWxsID0gZmFsc2U7CiAgICAgbV9lcnJv
ckNvZGUgPSBlcnJvci5lcnJvcjsKIAogICAgIHN3aXRjaChlcnJvci5kb21haW4pIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5o
CmluZGV4IGVlYzQ2MmQ1ZjZmYzdhNGM4MDJlZGNkMmIyNzkzYTBlMjc0Yzk0Y2MuLmUzNGY2ZWJj
OGY1NmY4YzVkNzg2MmJlODBiYjlmYTFhYzU0YmNhNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlRXJyb3IuaApAQCAtNDAsMTIgKzQw
LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3IgOiBwdWJsaWMg
UmVzb3VyY2VFcnJvckJhc2UKIHsKIHB1YmxpYzoKLSAgICBSZXNvdXJjZUVycm9yKCkgOiBtX3Nz
bEVycm9ycygwKQorICAgIFJlc291cmNlRXJyb3IoVHlwZSB0eXBlID0gVHlwZTo6TnVsbCkKKyAg
ICAgICAgOiBSZXNvdXJjZUVycm9yQmFzZSh0eXBlKQorICAgICAgICAsIG1fc3NsRXJyb3JzKDAp
CiAgICAgewogICAgIH0KIAotICAgIFJlc291cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBkb21haW4s
IGludCBlcnJvckNvZGUsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2Nh
bGl6ZWREZXNjcmlwdGlvbikKLSAgICAgICAgOiBSZXNvdXJjZUVycm9yQmFzZShkb21haW4sIGVy
cm9yQ29kZSwgZmFpbGluZ1VSTCwgbG9jYWxpemVkRGVzY3JpcHRpb24pLCBtX3NzbEVycm9ycygw
KQorICAgIFJlc291cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBkb21haW4sIGludCBlcnJvckNvZGUs
IGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlv
biwgVHlwZSB0eXBlID0gVHlwZTo6TnVsbCkKKyAgICAgICAgOiBSZXNvdXJjZUVycm9yQmFzZShk
b21haW4sIGVycm9yQ29kZSwgZmFpbGluZ1VSTCwgbG9jYWxpemVkRGVzY3JpcHRpb24sIHR5cGUp
CisgICAgICAgICwgbV9zc2xFcnJvcnMoMCkKICAgICB7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQpp
bmRleCA1MjA3OWJkMWY1MzVkZmJjOTIyNjEzMTFhNTFkYzM3NDVhMjE4YWMyLi40NmUwMzQ2NDM1
MjIzYTYxMzI3YTgwMDI4OTI4OGQyYTMxODkxZDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0KQEAgLTE5Mywx
NyArMTkzLDE2IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNFcnJvcj4gY3JlYXRlTlNFcnJvckZyb21S
ZXNvdXJjZUVycm9yQmFzZShjb25zdCBSZXNvdXJjZUVycm9yCiAjaWYgVVNFKENGTkVUV09SSykK
IAogUmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcihOU0Vycm9yICplcnJvcikKLSAgICA6IG1f
ZGF0YUlzVXBUb0RhdGUoZmFsc2UpCisgICAgLCBtX2RhdGFJc1VwVG9EYXRlKGZhbHNlKQogICAg
ICwgbV9wbGF0Zm9ybUVycm9yKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZFcnJvclJlZj4oZXJyb3IpKQog
ewotICAgIG1faXNOdWxsID0gIWVycm9yOwotICAgIGlmICghbV9pc051bGwpCi0gICAgICAgIG1f
aXNUaW1lb3V0ID0gW2Vycm9yIGNvZGVdID09IE5TVVJMRXJyb3JUaW1lZE91dDsKKyAgICBpZiAo
ZXJyb3IpCisgICAgICAgIHNldFR5cGUoKFtlcnJvciBjb2RlXSA9PSBOU1VSTEVycm9yVGltZWRP
dXQpID8gVHlwZTo6VGltZW91dCA6IFR5cGU6OkdlbmVyYWwpOwogfQogCiBOU0Vycm9yICpSZXNv
dXJjZUVycm9yOjpuc0Vycm9yKCkgY29uc3QKIHsKLSAgICBpZiAobV9pc051bGwpIHsKKyAgICBp
ZiAoaXNOdWxsKCkpIHsKICAgICAgICAgQVNTRVJUKCFtX3BsYXRmb3JtRXJyb3IpOwogICAgICAg
ICByZXR1cm4gbmlsOwogICAgIH0KQEAgLTIzOCwyMSArMjM3LDE3IEBAIFJlc291cmNlRXJyb3I6
Om9wZXJhdG9yIE5TRXJyb3IgKigpIGNvbnN0CiAjZWxzZQogCiBSZXNvdXJjZUVycm9yOjpSZXNv
dXJjZUVycm9yKE5TRXJyb3IgKm5zRXJyb3IpCi0gICAgOiBtX2RhdGFJc1VwVG9EYXRlKGZhbHNl
KQorICAgIDogUmVzb3VyY2VFcnJvckJhc2UoVHlwZTo6TnVsbCkKKyAgICAsIG1fZGF0YUlzVXBU
b0RhdGUoZmFsc2UpCiAgICAgLCBtX3BsYXRmb3JtRXJyb3IobnNFcnJvcikKIHsKLSAgICBtX2lz
TnVsbCA9ICFuc0Vycm9yOwotICAgIGlmICghbV9pc051bGwpCi0gICAgICAgIG1faXNUaW1lb3V0
ID0gW21fcGxhdGZvcm1FcnJvci5nZXQoKSBjb2RlXSA9PSBOU1VSTEVycm9yVGltZWRPdXQ7Cisg
ICAgaWYgKG5zRXJyb3IpCisgICAgICAgIHNldFR5cGUoKFttX3BsYXRmb3JtRXJyb3IuZ2V0KCkg
Y29kZV0gPT0gTlNVUkxFcnJvclRpbWVkT3V0KSA/IFR5cGU6OlRpbWVvdXQgOiBUeXBlOjpHZW5l
cmFsKTsKIH0KIAogUmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcihDRkVycm9yUmVmIGNmRXJy
b3IpCi0gICAgOiBtX2RhdGFJc1VwVG9EYXRlKGZhbHNlKQotICAgICwgbV9wbGF0Zm9ybUVycm9y
KChOU0Vycm9yICopY2ZFcnJvcikKKyAgICA6IFJlc291cmNlRXJyb3IoKE5TRXJyb3IgKiljZkVy
cm9yKQogewotICAgIG1faXNOdWxsID0gIWNmRXJyb3I7Ci0gICAgaWYgKCFtX2lzTnVsbCkKLSAg
ICAgICAgbV9pc1RpbWVvdXQgPSBbbV9wbGF0Zm9ybUVycm9yLmdldCgpIGNvZGVdID09IE5TVVJM
RXJyb3JUaW1lZE91dDsKIH0KIAogdm9pZCBSZXNvdXJjZUVycm9yOjpwbGF0Zm9ybUxhenlJbml0
KCkKQEAgLTI4Nyw3ICsyODIsNyBAQCB2b2lkIFJlc291cmNlRXJyb3I6OmRvUGxhdGZvcm1Jc29s
YXRlZENvcHkoY29uc3QgUmVzb3VyY2VFcnJvciYpCiAKIE5TRXJyb3IgKlJlc291cmNlRXJyb3I6
Om5zRXJyb3IoKSBjb25zdAogewotICAgIGlmIChtX2lzTnVsbCkgeworICAgIGlmIChpc051bGwo
KSkgewogICAgICAgICBBU1NFUlQoIW1fcGxhdGZvcm1FcnJvcik7CiAgICAgICAgIHJldHVybiBu
aWw7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1Jlc291cmNlRXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZUVycm9yLmgKaW5kZXggYzRkN2FkYTdmMThjZjY1ZDc4MzcwZWZjZDNhYWIyODcy
NzJjN2FhMC4uYmYwMjkxODQ4MjBmYmU1ZDQwNjVmNjA0N2EyMjVjYjhkYWRlNDdiNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJv
ci5oCkBAIC00MSwxNCArNDEsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3Vy
Y2VFcnJvciA6IHB1YmxpYyBSZXNvdXJjZUVycm9yQmFzZQogewogcHVibGljOgotICAgIFJlc291
cmNlRXJyb3IoY29uc3QgU3RyaW5nJiBkb21haW4sIGludCBlcnJvckNvZGUsIGNvbnN0IFVSTCYg
ZmFpbGluZ1VSTCwgY29uc3QgU3RyaW5nJiBsb2NhbGl6ZWREZXNjcmlwdGlvbikKLSAgICAgICAg
OiBSZXNvdXJjZUVycm9yQmFzZShkb21haW4sIGVycm9yQ29kZSwgZmFpbGluZ1VSTCwgbG9jYWxp
emVkRGVzY3JpcHRpb24pCisgICAgUmVzb3VyY2VFcnJvcihUeXBlIHR5cGUgPSBUeXBlOjpOdWxs
KQorICAgICAgICA6IFJlc291cmNlRXJyb3JCYXNlKHR5cGUpCiAgICAgICAgICwgbV90bHNFcnJv
cnMoMCkKICAgICB7CiAgICAgfQogCi0gICAgUmVzb3VyY2VFcnJvcigpCi0gICAgICAgIDogbV90
bHNFcnJvcnMoMCkKKyAgICBSZXNvdXJjZUVycm9yKGNvbnN0IFN0cmluZyYgZG9tYWluLCBpbnQg
ZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVk
RGVzY3JpcHRpb24sIFR5cGUgdHlwZSA9IFR5cGU6OkdlbmVyYWwpCisgICAgICAgIDogUmVzb3Vy
Y2VFcnJvckJhc2UoZG9tYWluLCBlcnJvckNvZGUsIGZhaWxpbmdVUkwsIGxvY2FsaXplZERlc2Ny
aXB0aW9uLCB0eXBlKQorICAgICAgICAsIG1fdGxzRXJyb3JzKDApCiAgICAgewogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNl
RXJyb3JTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZUVycm9yU291cC5jcHAKaW5kZXggZGI2ZmQ5NWQ2MjRjMjk4MzhhOTUwZWQ5ZjJlMGU1YzAy
NjliN2EzOC4uZWU0MzYyNzY1ZjFjNTIwZWQ4NDI2MGY1MzRjNjY3MTE3NmI4NjBmNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JT
b3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3Vy
Y2VFcnJvclNvdXAuY3BwCkBAIC05Miw5ICs5Miw3IEBAIFJlc291cmNlRXJyb3IgUmVzb3VyY2VF
cnJvcjo6dGltZW91dEVycm9yKGNvbnN0IFVSTCYgZmFpbGluZ1VSTCkKICAgICAvLyBVc2UgdGhl
IHNhbWUgdmFsdWUgYXMgaW4gTlNVUkxFcnJvci5oCiAgICAgc3RhdGljIGNvbnN0IGludCB0aW1l
b3V0RXJyb3IgPSAtMTAwMTsKICAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgIGVycm9yRG9t
YWluID0gIldlYktpdE5ldHdvcmtFcnJvciI7Ci0gICAgUmVzb3VyY2VFcnJvciBlcnJvciA9IFJl
c291cmNlRXJyb3IoZXJyb3JEb21haW4sIHRpbWVvdXRFcnJvciwgZmFpbGluZ1VSTCwgIlJlcXVl
c3QgdGltZWQgb3V0Iik7Ci0gICAgZXJyb3Iuc2V0SXNUaW1lb3V0KHRydWUpOwotICAgIHJldHVy
biBlcnJvcjsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbiwgdGltZW91dEVy
cm9yLCBmYWlsaW5nVVJMLCAiUmVxdWVzdCB0aW1lZCBvdXQiLCBSZXNvdXJjZUVycm9yOjpUeXBl
OjpUaW1lb3V0KTsKIH0KIAogdm9pZCBSZXNvdXJjZUVycm9yOjpkb1BsYXRmb3JtSXNvbGF0ZWRD
b3B5KGNvbnN0IFJlc291cmNlRXJyb3ImIG90aGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL3NvdXAvV2ViQ29yZUFyZ3VtZW50Q29kZXJzU291cC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcAppbmRleCAzZDBh
NTRiYjYxMzc1NjU5NzE4Njk2NDAzYjkzZGZkYTJhNGUyZGUzLi43ZWQ2NzYyMjEyODE2ZDE0MmE1
YmU2YmYwM2NlYTA0ZjQzYzNiNWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
c291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvc291cC9XZWJDb3JlQXJndW1lbnRDb2RlcnNTb3VwLmNwcApAQCAtMTg2LDI4ICsxODYs
MjUgQEAgYm9vbCBBcmd1bWVudENvZGVyPENlcnRpZmljYXRlSW5mbz46OmRlY29kZShBcmd1bWVu
dERlY29kZXImIGRlY29kZXIsIENlcnRpZmljYXQKIAogdm9pZCBBcmd1bWVudENvZGVyPFJlc291
cmNlRXJyb3I+OjplbmNvZGVQbGF0Zm9ybURhdGEoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBSZXNvdXJjZUVycm9yJiByZXNvdXJjZUVycm9yKQogewotICAgIGJvb2wgZXJyb3JJc051
bGwgPSByZXNvdXJjZUVycm9yLmlzTnVsbCgpOwotICAgIGVuY29kZXIgPDwgZXJyb3JJc051bGw7
Ci0gICAgaWYgKGVycm9ySXNOdWxsKQorICAgIGVuY29kZXIuZW5jb2RlRW51bShyZXNvdXJjZUVy
cm9yLnR5cGUoKSk7CisgICAgaWYgKHJlc291cmNlRXJyb3IuaXNOdWxsKCkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGVuY29kZXIgPDwgcmVzb3VyY2VFcnJvci5kb21haW4oKTsKICAgICBlbmNv
ZGVyIDw8IHJlc291cmNlRXJyb3IuZXJyb3JDb2RlKCk7CiAgICAgZW5jb2RlciA8PCByZXNvdXJj
ZUVycm9yLmZhaWxpbmdVUkwoKS5zdHJpbmcoKTsKICAgICBlbmNvZGVyIDw8IHJlc291cmNlRXJy
b3IubG9jYWxpemVkRGVzY3JpcHRpb24oKTsKLSAgICBlbmNvZGVyIDw8IHJlc291cmNlRXJyb3Iu
aXNDYW5jZWxsYXRpb24oKTsKLSAgICBlbmNvZGVyIDw8IHJlc291cmNlRXJyb3IuaXNUaW1lb3V0
KCk7CiAKICAgICBlbmNvZGVyIDw8IENlcnRpZmljYXRlSW5mbyhyZXNvdXJjZUVycm9yKTsKIH0K
IAogYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlRXJyb3I+OjpkZWNvZGVQbGF0Zm9ybURhdGEo
QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBSZXNvdXJjZUVycm9yJiByZXNvdXJjZUVycm9yKQog
ewotICAgIGJvb2wgZXJyb3JJc051bGw7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShlcnJvcklz
TnVsbCkpCisgICAgUmVzb3VyY2VFcnJvckJhc2U6OlR5cGUgZXJyb3JUeXBlOworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGVFbnVtKGVycm9yVHlwZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBpZiAoZXJyb3JJc051bGwpIHsKLSAgICAgICAgcmVzb3VyY2VFcnJvciA9IFJlc291cmNlRXJy
b3IoKTsKKyAgICBpZiAoZXJyb3JUeXBlID09IFJlc291cmNlRXJyb3JCYXNlOjpUeXBlOjpOdWxs
KSB7CisgICAgICAgIHJlc291cmNlRXJyb3IgPSB7IH07CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIApAQCAtMjI3LDE3ICsyMjQsOCBAQCBib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VF
cnJvcj46OmRlY29kZVBsYXRmb3JtRGF0YShBcmd1bWVudERlY29kZXImIGRlY29kZXIsCiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShsb2NhbGl6ZWREZXNjcmlwdGlvbikpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGJvb2wgaXNDYW5jZWxsYXRpb247Ci0gICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShpc0NhbmNlbGxhdGlvbikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGJvb2wg
aXNUaW1lb3V0OwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXNUaW1lb3V0KSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCiAgICAgcmVzb3VyY2VFcnJvciA9IFJlc291cmNlRXJyb3IoZG9tYWlu
LCBlcnJvckNvZGUsIFVSTChVUkwoKSwgZmFpbGluZ1VSTCksIGxvY2FsaXplZERlc2NyaXB0aW9u
KTsKLSAgICByZXNvdXJjZUVycm9yLnNldElzQ2FuY2VsbGF0aW9uKGlzQ2FuY2VsbGF0aW9uKTsK
LSAgICByZXNvdXJjZUVycm9yLnNldElzVGltZW91dChpc1RpbWVvdXQpOworICAgIHJlc291cmNl
RXJyb3Iuc2V0VHlwZShlcnJvclR5cGUpOwogCiAgICAgQ2VydGlmaWNhdGVJbmZvIGNlcnRpZmlj
YXRlSW5mbzsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNlcnRpZmljYXRlSW5mbykpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>