<?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>226743</bug_id>
          
          <creation_ts>2021-06-07 14:21:22 -0700</creation_ts>
          <short_desc>Reduce use of reinterpret_cast&lt;&gt; in the codebase</short_desc>
          <delta_ts>2021-06-08 11:59:11 -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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cgarcia</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>galpeter</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>hta</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mifenton</cc>
    
    <cc>philipj</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>toyoshim</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1767553</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-07 14:21:22 -0700</bug_when>
    <thetext>Reduce use of reinterpret_cast&lt;&gt; in the codebase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767554</commentid>
    <comment_count>1</comment_count>
      <attachid>430779</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-07 14:23:33 -0700</bug_when>
    <thetext>Created attachment 430779
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767555</commentid>
    <comment_count>2</comment_count>
      <attachid>430780</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-07 14:26:17 -0700</bug_when>
    <thetext>Created attachment 430780
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767562</commentid>
    <comment_count>3</comment_count>
      <attachid>430784</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-07 14:56:49 -0700</bug_when>
    <thetext>Created attachment 430784
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767603</commentid>
    <comment_count>4</comment_count>
      <attachid>430791</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-07 17:02:07 -0700</bug_when>
    <thetext>Created attachment 430791
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767648</commentid>
    <comment_count>5</comment_count>
      <attachid>430803</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-07 20:02:46 -0700</bug_when>
    <thetext>Created attachment 430803
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767679</commentid>
    <comment_count>6</comment_count>
      <attachid>430803</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-06-07 22:50:08 -0700</bug_when>
    <thetext>Comment on attachment 430803
Patch

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

&gt; Source/WTF/wtf/persistence/PersistentCoders.cpp:101
&gt; +        encoder.encodeFixedLengthData(string.characters8(), length * sizeof(LChar));

sizeof(LChar) can really be left out

&gt; Source/WTF/wtf/text/CString.h:65
&gt; +    CString(const LChar* data, size_t length) : CString(reinterpret_cast&lt;const char*&gt;(data), length) { }

This seems a little bit questionable. It’s only OK if we want a Latin-1 C string, but typically we want UTF-8 C strings. The meaning of the &quot;L&quot; in &quot;LChar&quot; is Latin-1.

On the other hand, it does &quot;herd&quot; all the reinterpret_cast calls into one place by overloading for uint8_t as well as char. But I think using LChar is misleading.

&gt; Source/WTF/wtf/text/CString.h:75
&gt; +    const LChar* characters8() const { return reinterpret_cast&lt;const LChar*&gt;(data()); }

Same thought. The real characters8() function is always correct, if it can be called it’s guaranteed to have Latin-1. This is more questionable. It can be used to incorrectly treat UTF-8 as Latin-1.

So I would not have named this characters8() nor used the LChar type. Although I suppose that’t correct if this CString happens to contain Latin-1. Maybe a different name would be better that isn’t claiming the string is Latin-1. Maybe we should teach CString  how to track, in debug versions at least or at compile time, what encoding the characters are in, since we probably only use it for UTF-8 and Latin-1, not all arbitrary other types.

&gt; Source/WebCore/Modules/websockets/WebSocketHandshake.cpp:334
&gt; +    constexpr char httpVersionStaticPreambleLiteral[] = &quot;HTTP/&quot;;
&gt; +    StringView httpVersionStaticPreamble(httpVersionStaticPreambleLiteral, strlen(httpVersionStaticPreambleLiteral));
&gt;      if (!httpStatusLine.startsWith(httpVersionStaticPreamble))
&gt;          return false;

This code seems like overkill. I would write this:

    constexpr char preamble[] = &quot;HTTP/&quot;;
    if (!httpStatusLine.startsWith(preamble))
        return false;

    unsigned preambleLength = strlen(preamble);

Maybe someone thought they were optimizing by writing the other thing?

&gt; Source/WebCore/platform/graphics/avfoundation/InbandTextTrackPrivateAVF.cpp:535
&gt;              StringBuilder header;
&gt; -            header.appendCharacters(reinterpret_cast&lt;const unsigned char*&gt;(CFDataGetBytePtr(webvttHeaderData)), length);
&gt; +            header.appendCharacters(CFDataGetBytePtr(webvttHeaderData), length);
&gt;              header.append(&quot;\n\n&quot;);

The following would be more efficient than using StringBuilder:

    auto header = makeString(StringView { CFDataGetBytePtr(webvttHeaderData), length }, &quot;\n\n&quot;);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767780</commentid>
    <comment_count>7</comment_count>
      <attachid>430842</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-08 07:57:30 -0700</bug_when>
    <thetext>Created attachment 430842
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767786</commentid>
    <comment_count>8</comment_count>
      <attachid>430845</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-08 08:16:35 -0700</bug_when>
    <thetext>Created attachment 430845
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767823</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-08 10:35:23 -0700</bug_when>
    <thetext>Committed r278619 (238604@main): &lt;https://commits.webkit.org/238604@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 430845.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767824</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-08 10:36:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/79019798&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430779</attachid>
            <date>2021-06-07 14:23:33 -0700</date>
            <delta_ts>2021-06-07 14:26:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226743-20210607142333.patch</filename>
            <type>text/plain</type>
            <size>85288</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDZhNDVlZjMwMWIzY2Y3NzBlNjljYWI1
OTA5MGQ0YmE5ZDM5YWJiNWUuLmY3NWFiOGRlNmI0ZmQ0ZjJkMDBmZTg3OTc4NzVkYTk3YzJiNjcx
MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMjEtMDYtMDcgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgdXNlIG9mIHJlaW50ZXJwcmV0X2Nhc3Q8PiBp
biB0aGUgY29kZWJhc2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNjc0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogd3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmNwcDoKKyAgICAgICAg
KiB3dGYvRmFzdE1hbGxvYy5oOgorICAgICAgICAoV1RGOjpGYXN0QWxsb2NhdG9yOjphbGxvY2F0
ZSk6CisgICAgICAgICogd3RmL1NIQTEuaDoKKyAgICAgICAgKFdURjo6U0hBMTo6YWRkQnl0ZXMp
OgorICAgICAgICAqIHd0Zi9TdGFja0NoZWNrLmg6CisgICAgICAgIChXVEY6OlN0YWNrQ2hlY2s6
OlNjb3BlOjpTY29wZSk6CisgICAgICAgIChXVEY6OlN0YWNrQ2hlY2s6OlN0YWNrQ2hlY2spOgor
ICAgICAgICAqIHd0Zi9VUkxIZWxwZXJzLmNwcDoKKyAgICAgICAgKFdURjo6VVJMSGVscGVyczo6
dXNlclZpc2libGVVUkwpOgorICAgICAgICAqIHd0Zi9VUkxQYXJzZXIuY3BwOgorICAgICAgICAo
V1RGOjpVUkxQYXJzZXI6OmZvcm1VUkxEZWNvZGUpOgorICAgICAgICAqIHd0Zi9jZi9VUkxDRi5j
cHA6CisgICAgICAgIChXVEY6OlVSTDo6Y3JlYXRlQ0ZVUkwgY29uc3QpOgorICAgICAgICAqIHd0
Zi9jb2NvYS9VUkxDb2NvYS5tbToKKyAgICAgICAgKFdURjo6VVJMOjpjcmVhdGVDRlVSTCBjb25z
dCk6CisgICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuY3BwOgorICAg
ICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6Q29kZXI8Q1N0cmluZz46OmVuY29kZSk6CisgICAgICAg
IChXVEY6OlBlcnNpc3RlbmNlOjpDb2RlcjxTdHJpbmc+OjplbmNvZGUpOgorICAgICAgICAqIHd0
Zi90ZXh0L0NTdHJpbmcuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuY3BwOgorICAg
ICAgICAoV1RGOjpTdHJpbmc6OmxhdGluMSBjb25zdCk6CisgICAgICAgICogd3RmL3RleHQvY2Yv
U3RyaW5nSW1wbENGLmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Y3JlYXRlQ0ZTdHJp
bmcpOgorCiAyMDIxLTA2LTA3ICBBbGljaWEgQm95YSBHYXJjw61hICA8YWJveWFAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbV1RGXVtHU3RyZWFtZXJdIEZpeCBjbGFuZyBUU0Egd2FybmluZ3MgaW4g
V1RGOjpEYXRhTXV0ZXgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0Zjk3N2E5NTk5MzQ3OGVlMTdjMDkxMjQ0ZmJh
ZmUzMmM3MjM1NWY0Li40YzgxMGJjYTdmOGE1ZjFhZWIxMzcxMDMzZmU3ZjdlYWIyYzQ1ZTdjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAxIEBACisyMDIxLTA2LTA3ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiByZWludGVycHJldF9jYXN0
PD4gaW4gdGhlIGNvZGViYXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjY3NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Np
b25DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQ2xlYXJLZXk6Omdl
bmVyYXRlS2V5UmVxdWVzdCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojp0YWtlKToKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9k
eUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlQXNCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtl
QXNUZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVt
b3RlSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFJlbW90ZUhh
bmRsZXI6OnJlYWR5VG9TZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsUmVt
b3RlSGFuZGxlcjo6c2VuZFN0cmluZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNo
YW5uZWxSZW1vdGVIYW5kbGVyOjpzZW5kUmF3RGF0YSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNvcHlCdXNEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0
b3JSZXNwb25zZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OmVuY29kZUFycmF5QnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OmRlY29kZUFycmF5QnVmZmVyKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJT
b2NrZXRDaGFubmVsOjpzdGFydENsb3NpbmdIYW5kc2hha2UpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc091dGdvaW5nRnJhbWVRdWV1ZSk6CisgICAgICAgICog
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6OmdldEV4cGVjdGVkV2ViU29ja2V0QWNjZXB0KToKKyAg
ICAgICAgKFdlYkNvcmU6OmhlYWRlckhhc1ZhbGlkSFRUUFZlcnNpb24pOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmg6CisgICAgICAgICogYmluZGlu
Z3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsb25l
RGVzZXJpYWxpemVyOjpyZWFkU3RyaW5nKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9T
ZXJpYWxpemVkTkZBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpT
ZXJpYWxpemVkTkZBOjpwb2ludGVyQXRPZmZzZXRJbkZpbGUgY29uc3QpOgorICAgICAgICAqIGRv
bS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omhhc2hQb2ludGVyKToKKyAgICAgICAgKiBk
b20vVGV4dEVuY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEVuY29kZXI6OmVuY29k
ZSBjb25zdCk6CisgICAgICAgICogZG9tL1RleHRFbmNvZGVyU3RyZWFtRW5jb2Rlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0RW5jb2RlclN0cmVhbUVuY29kZXI6OmZsdXNoKToKKyAgICAg
ICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdl
YkNvcmU6OnNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4SW1hZ2VBcnJheUJ1ZmZlclZpZXdIZWxwZXIpOgorICAg
ICAgICAqIGluc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
YWRkU3RyaW5nVG9TSEExKToKKyAgICAgICAgKiBsb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkU2NyaXB0OjpzY3JpcHQpOgorICAgICAgICAqIHBhZ2UvY29jb2EvUmVzb3Vy
Y2VVc2FnZU92ZXJsYXlDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNob3dUZXh0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6bmV4dENodW5rKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9L
ZXllZEVuY29kZXJHZW5lcmljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2Rlckdl
bmVyaWM6OmVuY29kZVN0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0R0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OnBh
Y2tJbWFnZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFj
a2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmdldFBpeGVs
QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6cHV0
UGl4ZWxCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9J
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NOYXRpdmVTYW1wbGVzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkZvdW5kYXRpb25DRjo6Z2VuZXJhdGVL
ZXlSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkZvdW5kYXRpb25DRjo6
dXBkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWQ0Y6OnJlYWROYXRpdmVTYW1wbGVCdWZmZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXI6OmNyZWF0ZUl0ZW1CdWZm
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlz
dDo6SXRlcmF0b3I6OnVwZGF0ZUN1cnJlbnRJdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKEdJRkltYWdlUmVhZGVy
OjpkYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9yTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5n
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFkZFN0cmluZ1RvU0hBMSk6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Rm9ybURhdGFCdWlsZGVyOjplbmNvZGVTdHJpbmdBc0Zvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
b2NrZXRTdHJlYW1IYW5kbGU6OnNlbmRIYW5kc2hha2UpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5oOgorICAgICAgICAoV2ViQ29yZTo6
aHR0cEhlYWRlclZhbHVlVXNpbmdTdWl0YWJsZUVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpwbGF0Zm9ybVNlbmRJbnRlcm5hbCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkN1cmxDYWNoZUVudHJ5OjpnZW5lcmF0ZUJhc2VGaWxlbmFtZSk6CisgICAg
ICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTUUxpdGVTdGF0ZW1lbnQ6OmNvbHVtbkJsb2JWaWV3KToKKyAgICAgICAgKiB0ZXN0aW5nL01v
Y2tDRE1GYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06OnNhbml0aXplUmVz
cG9uc2UgY29uc3QpOgorCiAyMDIxLTA2LTA3ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyNzIyMDEpOiBpUGFkIHJlbmRlciBmbGFz
aGluZyBvbiBsb2FkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCmluZGV4IGNiMTZjZmJlOGRlYjUxMDA5OGUzMjBhMTRk
OWI4ZmU1ZjVhNmFkMTguLjRkZDZhMzg2NDQyM2Y4OWY3ZDBlMGQ5MGZjNmE3ODcwMDY2OWNkNzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJE
cml2ZXIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDYtMDcgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgdXNlIG9mIHJlaW50ZXJwcmV0
X2Nhc3Q8PiBpbiB0aGUgY29kZWJhc2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNjc0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogc29ja2V0L0hUVFBQYXJzZXIuY3BwOgorICAgICAgICAoV2ViRHJp
dmVyOjpIVFRQUGFyc2VyOjpyZWFkTGluZSk6CisgICAgICAgICogc29ja2V0L1Nlc3Npb25Ib3N0
U29ja2V0LmNwcDoKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbkhvc3Q6OnNlbmRXZWJJbnNw
ZWN0b3JFdmVudCk6CisKIDIwMjEtMDYtMDEgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFJlbW92ZSA8d3RmL09wdGlvbmFsLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDIxNGFkYWVj
MGI3MThjOGUxMTZjOGEzYmYyZjYxZTA1MmI3NDI2NjkuLjZjZTJhMjdlM2RlMWZiYjA3YzJkZjk2
OTFkNzA2YzIyOGIxZjUzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMjEtMDYtMDcg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgdXNlIG9m
IHJlaW50ZXJwcmV0X2Nhc3Q8PiBpbiB0aGUgY29kZWJhc2UKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjc0MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94
eTo6bWVkaWFQbGF5ZXJJbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCk6CisgICAgICAgICog
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVRleHRUcmFja1Byb3h5OjphZGREYXRhQ3VlKToKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTWVkaWFSZWNvcmRlcjo6ZmV0Y2hEYXRhKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVEYXRhQ3VybC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6RGF0YTo6YXBwbHkgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZUtleS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6aGFz
aFN0cmluZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJLaXREaXJlY3RvcnlJ
bnB1dFN0cmVhbS5jcHA6CisgICAgICAgICh3ZWJraXREaXJlY3RvcnlJbnB1dFN0cmVhbVJlYWQp
OgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJ
UEM6OkFyZ3VtZW50Q29kZXI8Q1N0cmluZz46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3Vt
ZW50Q29kZXI8U3RyaW5nPjo6ZW5jb2RlKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvY2YvV0tT
dHJpbmdDRi5tbToKKyAgICAgICAgKFdLU3RyaW5nQ29weUNGU3RyaW5nKToKKyAgICAgICAgKiBT
aGFyZWQvQVBJL2MvY2YvV0tVUkxDRi5tbToKKyAgICAgICAgKFdLVVJMQ29weUNGVVJMKToKKyAg
ICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpT
aGFyZWFibGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBTaGFyZWQv
U2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVkRGlzcGxh
eUxpc3RIYW5kbGU6OmRhdGEgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb21waWxlZENv
bnRlbnRSdWxlTGlzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBpbGVkQ29udGVudFJ1
bGVMaXN0Ojpjb25kaXRpb25zQXBwbHlPbmx5VG9Eb21haW4gY29uc3QpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5jcHA6Cisg
ICAgICAgIChBUEk6OldlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U6OnVzZXJIYW5k
bGUgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAg
ICAoZGF0YUZyb20pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24v
UmVkaXJlY3RTT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpSZWRp
cmVjdFNPQXV0aG9yaXphdGlvblNlc3Npb246OmNvbXBsZXRlSW50ZXJuYWwpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0L1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUluc3BlY3RvckNsaWVudDo6c2VuZFdlYkluc3BlY3RvckV2
ZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldENoYW5uZWw6OmNyZWF0ZU1lc3NhZ2VRdWV1ZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldENoYW5uZWw6OmRpZFJlY2VpdmVUZXh0KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFu
YWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6
c2VuZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6
OlJlbW90ZVNvdXJjZUNvbm5lY3Rpb246OmRpZFJlY2VpdmVTdHJpbmdEYXRhKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblN0cmVhbTo6c2VuZEphdmFTY3JpcHRTdHJl
YW0pOgorCiAyMDIxLTA2LTA3ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAog
ICAgICAgICBDb252ZXJ0IFdlYkNvcmU6OlNuYXBzaG90T3B0aW9ucyBpbnRvIGFuIGVudW0gY2xh
c3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVt
YmVyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmNw
cAppbmRleCBjYmFiOTY1ZTkyM2JhNDNmOWE1Mzk4NjZlZDE2M2NkNGY0MjZhYzk3Li5kZjgyNTg0
MjVkOTNlMDA1OGM4NGZlN2NlYzJlZTA2YjI0YzY3YjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5jcHAKKysrIGIvU291cmNlL1dURi93
dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuY3BwCkBAIC0xNDksNyArMTQ5LDcgQEAg
dm9pZCBBUkM0UmFuZG9tTnVtYmVyR2VuZXJhdG9yOjpyYW5kb21WYWx1ZXModm9pZCogYnVmZmVy
LCBzaXplX3QgbGVuZ3RoKQogewogICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKIAotICAg
IHVuc2lnbmVkIGNoYXIqIHJlc3VsdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+
KGJ1ZmZlcik7CisgICAgYXV0byByZXN1bHQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4o
YnVmZmVyKTsKICAgICBzdGlySWZOZWVkZWQoKTsKICAgICB3aGlsZSAobGVuZ3RoLS0pIHsKICAg
ICAgICAgbV9jb3VudC0tOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5o
IGIvU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5oCmluZGV4IDAyNGYxYjkxY2I5YWExZDA0YThj
ZTY0NGYxYmY1ZGZmZjFhNWM0ZDYuLjczZDk2OWI0MjA1NmY2MWNiZjU0MDBiMWZhNWM4N2JiN2Q4
ZDZmNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmgKQEAgLTIwMyw3ICsyMDMsNyBAQCBwdWJsaWM6CiAKICAg
ICBUKiBhbGxvY2F0ZShzaXplX3QgY291bnQpCiAgICAgewotICAgICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxUKj4oZmFzdE1hbGxvYyhzaXplb2YoVCkgKiBjb3VudCkpOworICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8VCo+KGZhc3RNYWxsb2Moc2l6ZW9mKFQpICogY291bnQpKTsKICAg
ICB9CiAKICAgICB2b2lkIGRlYWxsb2NhdGUoVCogcG9pbnRlciwgc2l6ZV90KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvU0hBMS5oIGIvU291cmNlL1dURi93dGYvU0hBMS5oCmluZGV4IDJj
N2Q5YTM2NGUxNTllNGRkMDQ1OWY0NzIwNWM4M2RjZDA2MzI5YmYuLjViZGE0MmVkNmQ2ZDY4M2U1
YmFhMWIzOTlhZTgwY2IxNTE5ZGJhOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1NIQTEu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TSEExLmgKQEAgLTUxLDggKzUxLDcgQEAgcHVibGljOgog
ICAgIH0KICAgICB2b2lkIGFkZEJ5dGVzKGNvbnN0IENTdHJpbmcmIGlucHV0KQogICAgIHsKLSAg
ICAgICAgY29uc3QgY2hhciogc3RyaW5nID0gaW5wdXQuZGF0YSgpOwotICAgICAgICBhZGRCeXRl
cyhyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzdHJpbmcpLCBpbnB1dC5sZW5ndGgo
KSk7CisgICAgICAgIGFkZEJ5dGVzKGlucHV0LmNoYXJhY3RlcnM4KCksIGlucHV0Lmxlbmd0aCgp
KTsKICAgICB9CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRkQnl0ZXMoY29uc3QgdWlu
dDhfdCogaW5wdXQsIHNpemVfdCBsZW5ndGgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9TdGFja0NoZWNrLmggYi9Tb3VyY2UvV1RGL3d0Zi9TdGFja0NoZWNrLmgKaW5kZXggOWM3Mjc4
NjJjMDlmZjEwMzlhMzc3NzJiMmQ2MzY4YTRkNGNiNDQxMS4uYTE5MmZjNzFlMjU4ODZiYmM2MjBk
YjdhZTVjZjdlNTBiMmI4NjRiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU3RhY2tDaGVj
ay5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1N0YWNrQ2hlY2suaApAQCAtNTcsNyArNTcsNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICAvLyB0aGVuIHdlIGVpdGhlciBuZWVkIHRvOgogICAgICAgICAg
ICAgLy8gMS4gYnJlYWsgdGhlIGludGVydmFsIGludG8gc21hbGxlciBwaWVjZXMgKGkuZS4gaW5z
ZXJ0IG1vcmUgY2hlY2tzKSwgb3IKICAgICAgICAgICAgIC8vIDIuIHVzZSBhIGxhcmdlciByZXNl
cnZlZFpvbmUgc2l6ZS4KLSAgICAgICAgICAgIHVpbnQ4X3QqIGN1cnJlbnRTdGFja0NoZWNrcG9p
bnQgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihjdXJyZW50U3RhY2tQb2ludGVyKCkpOwor
ICAgICAgICAgICAgdWludDhfdCogY3VycmVudFN0YWNrQ2hlY2twb2ludCA9IHN0YXRpY19jYXN0
PHVpbnQ4X3QqPihjdXJyZW50U3RhY2tQb2ludGVyKCkpOwogICAgICAgICAgICAgdWludDhfdCog
cHJldmlvdXNTdGFja0NoZWNrcG9pbnQgPSBtX2NoZWNrZXIubV9sYXN0U3RhY2tDaGVja3BvaW50
OwogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHJldmlvdXNTdGFja0NoZWNrcG9pbnQgLSBj
dXJyZW50U3RhY2tDaGVja3BvaW50ID4gMCk7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChw
cmV2aW91c1N0YWNrQ2hlY2twb2ludCAtIGN1cnJlbnRTdGFja0NoZWNrcG9pbnQgPCBzdGF0aWNf
Y2FzdDxwdHJkaWZmX3Q+KG1fY2hlY2tlci5tX3Jlc2VydmVkWm9uZSkpOwpAQCAtODcsNyArODcs
NyBAQCBwdWJsaWM6CiAgICAgICAgIDogbV9zdGFja0xpbWl0KGJvdW5kcy5yZWN1cnNpb25MaW1p
dChtaW5SZXNlcnZlZFpvbmUpKQogI2lmIFZFUklGWV9TVEFDS19DSEVDS19SRVNFUlZFRF9aT05F
X1NJWkUKICAgICAgICAgLCBtX293bmVyVGhyZWFkKCZUaHJlYWQ6OmN1cnJlbnQoKSkKLSAgICAg
ICAgLCBtX2xhc3RTdGFja0NoZWNrcG9pbnQocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oY3Vy
cmVudFN0YWNrUG9pbnRlcigpKSkKKyAgICAgICAgLCBtX2xhc3RTdGFja0NoZWNrcG9pbnQoc3Rh
dGljX2Nhc3Q8dWludDhfdCo+KGN1cnJlbnRTdGFja1BvaW50ZXIoKSkpCiAgICAgICAgICwgbV9y
ZXNlcnZlZFpvbmUobWluUmVzZXJ2ZWRab25lKQogI2VuZGlmCiAgICAgeyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9VUkxIZWxwZXJzLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1VSTEhlbHBl
cnMuY3BwCmluZGV4IDlhOWQwNjAxM2U3NTVjZWNkOGFmYjhiMjdmMDQ2OTNmMjFkZDBjMGEuLjBh
OTg2NWU5MjYxZDlmMWMxZmNjMGUxZTFkNTI5ZDA2Mjc4YzJhMTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1VSTEhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTEhlbHBlcnMu
Y3BwCkBAIC04MjIsNyArODIyLDcgQEAgc3RhdGljIFN0cmluZyBlc2NhcGVVbnNhZmVDaGFyYWN0
ZXJzKGNvbnN0IFN0cmluZyYgc291cmNlQnVmZmVyKQogCiBTdHJpbmcgdXNlclZpc2libGVVUkwo
Y29uc3QgQ1N0cmluZyYgdXJsKQogewotICAgIGF1dG8qIGJlZm9yZSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KHVybC5kYXRhKCkpOworICAgIGF1dG8qIGJlZm9yZSA9
IHVybC5jaGFyYWN0ZXJzOCgpOwogICAgIGludCBsZW5ndGggPSB1cmwubGVuZ3RoKCk7CiAKICAg
ICBpZiAoIWxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTFBhcnNlci5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIuY3BwCmluZGV4IDI5MzY5YTJhMzFlZDA0YWJlZTBk
ZDZmZjk4ZDJiMjZkMDU1NjA4ZGYuLjk3Zjc3MGI3Njc2MGE1NTljMGJkNzgxMzZhODFiY2ZhY2Ez
OWU1MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VSTFBhcnNlci5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvVVJMUGFyc2VyLmNwcApAQCAtMjc5Miw3ICsyNzkyLDcgQEAgc3RkOjpvcHRp
b25hbDxTdHJpbmc+IFVSTFBhcnNlcjo6Zm9ybVVSTERlY29kZShTdHJpbmdWaWV3IGlucHV0KQog
ICAgIGF1dG8gdXRmOCA9IGlucHV0LnV0ZjgoU3RyaWN0Q29udmVyc2lvbik7CiAgICAgaWYgKHV0
ZjguaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgYXV0byBwZXJj
ZW50RGVjb2RlZCA9IHBlcmNlbnREZWNvZGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+
KHV0ZjguZGF0YSgpKSwgdXRmOC5sZW5ndGgoKSk7CisgICAgYXV0byBwZXJjZW50RGVjb2RlZCA9
IHBlcmNlbnREZWNvZGUodXRmOC5jaGFyYWN0ZXJzOCgpLCB1dGY4Lmxlbmd0aCgpKTsKICAgICBy
ZXR1cm4gU3RyaW5nOjpmcm9tVVRGOFJlcGxhY2luZ0ludmFsaWRTZXF1ZW5jZXMocGVyY2VudERl
Y29kZWQuZGF0YSgpLCBwZXJjZW50RGVjb2RlZC5zaXplKCkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9jZi9VUkxDRi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9jZi9VUkxDRi5jcHAK
aW5kZXggMTQzZGM4NTY2MmY0ZTdhZDMzMjI2YzMzNGZmYmFhNWQ0ZWNmZjhlOS4uN2M2ZTQ3NzA0
YThlZmQ3MDQ5MjkzODJmNWNmYzdiOGE0YmJmYjdjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvY2YvVVJMQ0YuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NmL1VSTENGLmNwcApAQCAtNTIs
MTAgKzUyLDEwIEBAIFJldGFpblB0cjxDRlVSTFJlZj4gVVJMOjpjcmVhdGVDRlVSTCgpIGNvbnN0
CiB7CiAgICAgUmV0YWluUHRyPENGVVJMUmVmPiBjZlVSTDsKICAgICBpZiAoTElLRUxZKG1fc3Ry
aW5nLmlzOEJpdCgpICYmIG1fc3RyaW5nLmlzQWxsQVNDSUkoKSkpCi0gICAgICAgIGNmVVJMID0g
YWRvcHRDRihDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKG51bGxwdHIsIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgVUludDgqPihtX3N0cmluZy5jaGFyYWN0ZXJzOCgpKSwgbV9zdHJpbmcu
bGVuZ3RoKCksIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgbnVsbHB0ciwgdHJ1ZSkpOworICAgICAg
ICBjZlVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxscHRy
LCBtX3N0cmluZy5jaGFyYWN0ZXJzOCgpLCBtX3N0cmluZy5sZW5ndGgoKSwga0NGU3RyaW5nRW5j
b2RpbmdVVEY4LCBudWxscHRyLCB0cnVlKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIENTdHJpbmcg
dXRmOCA9IG1fc3RyaW5nLnV0ZjgoKTsKLSAgICAgICAgY2ZVUkwgPSBhZG9wdENGKENGVVJMQ3Jl
YXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMobnVsbHB0ciwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBV
SW50OCo+KHV0ZjguZGF0YSgpKSwgdXRmOC5sZW5ndGgoKSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4
LCBudWxscHRyLCB0cnVlKSk7CisgICAgICAgIGNmVVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZUFi
c29sdXRlVVJMV2l0aEJ5dGVzKG51bGxwdHIsIHV0ZjguY2hhcmFjdGVyczgoKSwgdXRmOC5sZW5n
dGgoKSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBudWxscHRyLCB0cnVlKSk7CiAgICAgfQogCiAg
ICAgaWYgKHByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSAmJiAhaXNDRlVSTFNhbWVPcmlnaW4oY2ZV
UkwuZ2V0KCksICp0aGlzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL1VSTENv
Y29hLm1tIGIvU291cmNlL1dURi93dGYvY29jb2EvVVJMQ29jb2EubW0KaW5kZXggZDFkMWIxYmRi
NmM1MjJiYmRiOTk1N2FiMWE5OWNjNzc3NmNkMzNlZC4uNTkxOTAwMGEyYjIzMmNjOGEzY2NkNWJk
MTYwMmEyYTFkNTFkMDFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY29jb2EvVVJMQ29j
b2EubW0KKysrIGIvU291cmNlL1dURi93dGYvY29jb2EvVVJMQ29jb2EubW0KQEAgLTcwLDEwICs3
MCwxMCBAQCBSZXRhaW5QdHI8Q0ZVUkxSZWY+IFVSTDo6Y3JlYXRlQ0ZVUkwoKSBjb25zdAogCiAg
ICAgUmV0YWluUHRyPENGVVJMUmVmPiBjZlVSTDsKICAgICBpZiAoTElLRUxZKG1fc3RyaW5nLmlz
OEJpdCgpICYmIG1fc3RyaW5nLmlzQWxsQVNDSUkoKSkpCi0gICAgICAgIGNmVVJMID0gYWRvcHRD
RihDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgVUludDgqPihtX3N0cmluZy5jaGFyYWN0ZXJzOCgpKSwgbV9zdHJpbmcubGVuZ3Ro
KCksIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgbnVsbHB0ciwgdHJ1ZSkpOworICAgICAgICBjZlVS
TCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxscHRyLCBtX3N0
cmluZy5jaGFyYWN0ZXJzOCgpLCBtX3N0cmluZy5sZW5ndGgoKSwga0NGU3RyaW5nRW5jb2RpbmdV
VEY4LCBudWxscHRyLCB0cnVlKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIENTdHJpbmcgdXRmOCA9
IG1fc3RyaW5nLnV0ZjgoKTsKLSAgICAgICAgY2ZVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlQWJz
b2x1dGVVUkxXaXRoQnl0ZXMobnVsbHB0ciwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+
KHV0ZjguZGF0YSgpKSwgdXRmOC5sZW5ndGgoKSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBudWxs
cHRyLCB0cnVlKSk7CisgICAgICAgIGNmVVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZUFic29sdXRl
VVJMV2l0aEJ5dGVzKG51bGxwdHIsIHV0ZjguY2hhcmFjdGVyczgoKSwgdXRmOC5sZW5ndGgoKSwg
a0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBudWxscHRyLCB0cnVlKSk7CiAgICAgfQogCiAgICAgaWYg
KHByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSAmJiAhV1RGOjppc0NGVVJMU2FtZU9yaWdpbihjZlVS
TC5nZXQoKSwgKnRoaXMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2Uv
UGVyc2lzdGVudENvZGVycy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0
ZW50Q29kZXJzLmNwcAppbmRleCA0NjM1OGJkY2JmNjUyZjcxNGJhNzc2YTYyZWNjZGNiZTI0NjY5
MWFiLi44YTE0NDE2ODQxMmU1YWU1ZDFlMDAzODhlYmExOGMzZTgxOWM3NjY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXJzLmNwcAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXJzLmNwcApAQCAtNTcsNyAr
NTcsNyBAQCB2b2lkIENvZGVyPENTdHJpbmc+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29u
c3QgQ1N0cmluZyYgc3RyaW5nKQogCiAgICAgdWludDMyX3QgbGVuZ3RoID0gc3RyaW5nLmxlbmd0
aCgpOwogICAgIGVuY29kZXIgPDwgbGVuZ3RoOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5n
dGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0cmluZy5kYXRhKCkpLCBs
ZW5ndGgpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHN0cmluZy5jaGFyYWN0
ZXJzOCgpLCBsZW5ndGgpOwogfQogCiBzdGQ6Om9wdGlvbmFsPENTdHJpbmc+IENvZGVyPENTdHJp
bmc+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBDb2Rl
cjxTdHJpbmc+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU3RyaW5nJiBzdHJpbmcp
CiAgICAgZW5jb2RlciA8PCBsZW5ndGggPDwgaXM4Qml0OwogCiAgICAgaWYgKGlzOEJpdCkKLSAg
ICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oc3RyaW5nLmNoYXJhY3RlcnM4KCkpLCBsZW5ndGggKiBzaXplb2YoTENoYXIp
KTsKKyAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoc3RyaW5nLmNoYXJhY3Rl
cnM4KCksIGxlbmd0aCAqIHNpemVvZihMQ2hhcikpOwogICAgIGVsc2UKICAgICAgICAgZW5jb2Rl
ci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
c3RyaW5nLmNoYXJhY3RlcnMxNigpKSwgbGVuZ3RoICogc2l6ZW9mKFVDaGFyKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0NTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvQ1N0cmluZy5oCmluZGV4IGUwNWRhZjc3ZjUzZTE1ZTNlMDYzYTMyNGY3M2MyZTg2ZDc0YTM5
ODEuLmExMWE4OGI4ODYwY2Q0MzM5ZWQ2OWMzYTgzZjQyMGY3OTcyZTQyOGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvQ1N0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
Q1N0cmluZy5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9MQ2hhci5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIApAQCAtNjEsNiArNjIs
NyBAQCBwdWJsaWM6CiAgICAgQ1N0cmluZygpIHsgfQogICAgIFdURl9FWFBPUlRfUFJJVkFURSBD
U3RyaW5nKGNvbnN0IGNoYXIqKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgQ1N0cmluZyhjb25z
dCBjaGFyKiwgc2l6ZV90IGxlbmd0aCk7CisgICAgQ1N0cmluZyhjb25zdCBMQ2hhciogZGF0YSwg
c2l6ZV90IGxlbmd0aCkgOiBDU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRh
dGEpLCBsZW5ndGgpIHsgfQogICAgIENTdHJpbmcoQ1N0cmluZ0J1ZmZlciogYnVmZmVyKSA6IG1f
YnVmZmVyKGJ1ZmZlcikgeyB9CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBDU3RyaW5n
IG5ld1VuaW5pdGlhbGl6ZWQoc2l6ZV90IGxlbmd0aCwgY2hhciomIGNoYXJhY3RlckJ1ZmZlcik7
CiAgICAgQ1N0cmluZyhIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKSA6IG1fYnVmZmVyKEhhc2hU
YWJsZURlbGV0ZWRWYWx1ZSkgeyB9CkBAIC02OSw2ICs3MSw5IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5kYXRhKCkgOiBudWxscHRyOwogICAg
IH0KKworICAgIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzOCgpIGNvbnN0IHsgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihkYXRhKCkpOyB9CisKICAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgY2hhciogbXV0YWJsZURhdGEoKTsKICAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QKICAg
ICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAgYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKaW5kZXggODZmOTgzODBkYTA4NWVhMzJiZmJj
MDAzNzAxMDY5NDI5OTJjM2ExNS4uYTZkNGRkMjMzZGRhNjhkY2Q4YWMyMWQ4NWIwOGQxY2RhMjI1
ZjE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCisrKyBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcApAQCAtNjYwLDcgKzY2MCw3IEBAIENT
dHJpbmcgU3RyaW5nOjpsYXRpbjEoKSBjb25zdAogICAgICAgICByZXR1cm4gQ1N0cmluZygiIiwg
MCk7CiAKICAgICBpZiAoaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBDU3RyaW5nKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHRoaXMtPmNoYXJhY3RlcnM4KCkpLCBsZW5ndGgpOworICAg
ICAgICByZXR1cm4gQ1N0cmluZyh0aGlzLT5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgpOwogCiAgICAg
Y29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSB0aGlzLT5jaGFyYWN0ZXJzMTYoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3BwIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3BwCmluZGV4IGMwNzVjMGQ0YWM4OTA4YWYyOWRi
MmM1MzM1YWFlM2Q5YzE4ZjQzMTguLjFlMjM2NDcxNGY4Yjc4MGE0NzEwNmNiMDkyZWI4N2ViMzEy
ZTRhZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvY2YvU3RyaW5nSW1wbENGLmNw
cAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAKQEAgLTExOSw3
ICsxMTksNyBAQCBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IFN0cmluZ0ltcGw6OmNyZWF0ZUNGU3Ry
aW5nKCkKIHsKICAgICBpZiAoIW1fbGVuZ3RoIHx8ICFpc01haW5UaHJlYWQoKSkgewogICAgICAg
ICBpZiAoaXM4Qml0KCkpCi0gICAgICAgICAgICByZXR1cm4gYWRvcHRDRihDRlN0cmluZ0NyZWF0
ZVdpdGhCeXRlcyhudWxscHRyLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oY2hhcmFj
dGVyczgoKSksIG1fbGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgZmFsc2UpKTsK
KyAgICAgICAgICAgIHJldHVybiBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzKG51bGxw
dHIsIGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwg
ZmFsc2UpKTsKICAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFj
dGVycyhudWxscHRyLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVuaUNoYXIqPihjaGFyYWN0ZXJz
MTYoKSksIG1fbGVuZ3RoKSk7CiAgICAgfQogICAgIENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciA9
IFN0cmluZ1dyYXBwZXJDRkFsbG9jYXRvcjo6YWxsb2NhdG9yKCk7CkBAIC0xMzAsNyArMTMwLDcg
QEAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBTdHJpbmdJbXBsOjpjcmVhdGVDRlN0cmluZygpCiAK
ICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHN0cmluZzsKICAgICBpZiAoaXM4Qml0KCkpCi0g
ICAgICAgIHN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXNOb0NvcHkoYWxs
b2NhdG9yLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oY2hhcmFjdGVyczgoKSksIG1f
bGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgZmFsc2UsIGtDRkFsbG9jYXRvck51
bGwpKTsKKyAgICAgICAgc3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhCeXRlc05v
Q29weShhbGxvY2F0b3IsIGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCBrQ0ZTdHJpbmdFbmNvZGlu
Z0lTT0xhdGluMSwgZmFsc2UsIGtDRkFsbG9jYXRvck51bGwpKTsKICAgICBlbHNlCiAgICAgICAg
IHN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVyc05vQ29weShhbGxv
Y2F0b3IsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVW5pQ2hhcio+KGNoYXJhY3RlcnMxNigpKSwg
bV9sZW5ndGgsIGtDRkFsbG9jYXRvck51bGwpKTsKICAgICAvLyBDb3JlRm91bmRhdGlvbiBtaWdo
dCBub3QgaGF2ZSB0byBhbGxvY2F0ZSBhbnl0aGluZywgd2UgY2xlYXIgY3VycmVudFN0cmluZyBp
biBjYXNlIHdlIGRpZCBub3QgZXhlY3V0ZSBhbGxvY2F0ZSgpLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNs
ZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5
L0xlZ2FjeUNETVNlc3Npb25DbGVhcktleS5jcHAKaW5kZXggYjIyODM4OTlmZDYzNjE1ZDM2N2Q5
ODE4NmZmODg3NjFlYTExOGJlZi4uY2UxYzE5OGZjNmE0ZDllNzZjMDQzZGI0OTFmZDgzMmQ5ZTcz
YmQ1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9s
ZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuY3Bw
CkBAIC03MCw3ICs3MCw3IEBAIFJlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQ2xlYXJLZXk6
OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pbWVUeXBlCiAgICAgbV9pbml0RGF0
YSA9IGluaXREYXRhOwogCiAgICAgYm9vbCBzYXdFcnJvciA9IGZhbHNlOwotICAgIFN0cmluZyBr
ZXlJRCA9IFVURjhFbmNvZGluZygpLmRlY29kZShyZWludGVycHJldF9jYXN0X3B0cjxjaGFyKj4o
bV9pbml0RGF0YS0+YmFzZUFkZHJlc3MoKSksIG1faW5pdERhdGEtPmJ5dGVMZW5ndGgoKSwgdHJ1
ZSwgc2F3RXJyb3IpOworICAgIFN0cmluZyBrZXlJRCA9IFVURjhFbmNvZGluZygpLmRlY29kZShz
dGF0aWNfY2FzdDxjaGFyKj4obV9pbml0RGF0YS0+YmFzZUFkZHJlc3MoKSksIG1faW5pdERhdGEt
PmJ5dGVMZW5ndGgoKSwgdHJ1ZSwgc2F3RXJyb3IpOwogICAgIGlmIChzYXdFcnJvcikgewogICAg
ICAgICBlcnJvckNvZGUgPSBXZWJLaXRNZWRpYUtleUVycm9yOjpNRURJQV9LRVlFUlJfQ0xJRU5U
OwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmNwcAppbmRleCA0ODM2ZDI4MTNmZTc0YjEyYTJlZDBhMDVhYmM5OTk5NWZkYjkw
YTQ0Li4wZGQ4ZGZjZDUxZjQ5NDhlMjczMzY4YWI1NjgwMTM1YjhhYjRhN2VhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC0zMDQsOSArMzA0LDkgQEAg
RmV0Y2hCb2R5OjpUYWtlbkRhdGEgRmV0Y2hCb2R5Ojp0YWtlKCkKICAgICAgICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNC
b2R5KCkudG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKIAogICAg
IGlmIChpc0FycmF5QnVmZmVyKCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1ZmZlckJvZHkoKS5kYXRhKCkp
LCBhcnJheUJ1ZmZlckJvZHkoKS5ieXRlTGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyQm9keSgp
LmRhdGEoKSksIGFycmF5QnVmZmVyQm9keSgpLmJ5dGVMZW5ndGgoKSk7CiAgICAgaWYgKGlzQXJy
YXlCdWZmZXJWaWV3KCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYmFzZUFk
ZHJlc3MoKSksIGFycmF5QnVmZmVyVmlld0JvZHkoKS5ieXRlTGVuZ3RoKCkpOworICAgICAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFy
cmF5QnVmZmVyVmlld0JvZHkoKS5iYXNlQWRkcmVzcygpKSwgYXJyYXlCdWZmZXJWaWV3Qm9keSgp
LmJ5dGVMZW5ndGgoKSk7CiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggMmFiMGNh
ZjEwMGQwYzMxMzhjMmI2MjY0M2Q3M2IyMWVjNmJlOWViOC4uNjA2NDRiZjk5NDE5ZmIzNzc2MGQw
ZmNiYmM2YTA4NmU3NzUwOTk5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKQEAgLTI3OCw3ICsyNzgsNyBAQCB2b2lkIEZldGNo
Qm9keUNvbnN1bWVyOjpyZXNvbHZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29u
c3QgU3RyaW5nJiBjbwogICAgICAgICAgICAgaWYgKGF1dG8gY2h1bmsgPSByZXN1bHQucmV0dXJu
VmFsdWUoKSkKICAgICAgICAgICAgICAgICBkYXRhLT5hcHBlbmQoY2h1bmstPmRhdGEsIGNodW5r
LT5zaXplKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXNvbHZlV2l0aFR5
cGVBbmREYXRhKFdURk1vdmUocHJvbWlzZSksIHR5cGUsIGNvbnRlbnRUeXBlLCByZWludGVycHJl
dF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihkYXRhLT5kYXRhKCkpLCBkYXRhLT5zaXplKCkp
OworICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNl
KSwgdHlwZSwgY29udGVudFR5cGUsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKICAgICAg
ICAgfSk7CiAgICAgICAgIG1fc2luay0+cGlwZUZyb20oKnN0cmVhbSk7CiAgICAgICAgIHJldHVy
bjsKQEAgLTM1NSw3ICszNTUsNyBAQCBSZWY8QmxvYj4gRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VB
c0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICAgICAgcmV0dXJuIEJs
b2I6OmNyZWF0ZShjb250ZXh0LCBWZWN0b3I8dWludDhfdD4oKSwgQmxvYjo6bm9ybWFsaXplZENv
bnRlbnRUeXBlKG1fY29udGVudFR5cGUpKTsKIAogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdHJ5
IHRvIG1vdmUgbV9idWZmZXIgdG8gQmxvYiB3aXRob3V0IGRvaW5nIGV4dHJhIGNvcHkuCi0gICAg
cmV0dXJuIGJsb2JGcm9tRGF0YShjb250ZXh0LCByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2ln
bmVkIGNoYXIqPihtX2J1ZmZlci0+ZGF0YSgpKSwgbV9idWZmZXItPnNpemUoKSwgbV9jb250ZW50
VHlwZSk7CisgICAgcmV0dXJuIGJsb2JGcm9tRGF0YShjb250ZXh0LCBtX2J1ZmZlci0+ZGF0YSgp
LCBtX2J1ZmZlci0+c2l6ZSgpLCBtX2NvbnRlbnRUeXBlKTsKIH0KIAogU3RyaW5nIEZldGNoQm9k
eUNvbnN1bWVyOjp0YWtlQXNUZXh0KCkKQEAgLTM2NCw3ICszNjQsNyBAQCBTdHJpbmcgRmV0Y2hC
b2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKIAotICAgIGF1dG8gdGV4dCA9IFRleHRSZXNvdXJjZURlY29kZXI6OnRl
eHRGcm9tVVRGOChyZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihtX2J1ZmZl
ci0+ZGF0YSgpKSwgbV9idWZmZXItPnNpemUoKSk7CisgICAgYXV0byB0ZXh0ID0gVGV4dFJlc291
cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KG1fYnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXpl
KCkpOwogICAgIG1fYnVmZmVyID0gbnVsbHB0cjsKICAgICByZXR1cm4gdGV4dDsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxS
ZW1vdGVIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
RGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcAppbmRleCBlN2MyMWFlZjViMzA1MTNhZjVjNWNl
OTZkMGZkMzQ0ZmY3MjRlZDY2Li4wMWMxM2Q1ZWRlMWI5ZTU4MzVkOGNiODNmZWZlMjU3ODI4ZGEx
YTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0Rh
dGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCkBAIC04MCw3ICs4MCw3
IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpyZWFkeVRvU2VuZCgpCiAgICAg
bV9pc1JlYWR5VG9TZW5kID0gdHJ1ZTsKIAogICAgIGZvciAoYXV0byYgbWVzc2FnZSA6IG1fcGVu
ZGluZ01lc3NhZ2VzKQotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmREYXRhKG1fcmVtb3RlSWRl
bnRpZmllciwgbWVzc2FnZS5pc1JhdywgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBj
aGFyKj4obWVzc2FnZS5idWZmZXItPmRhdGEoKSksIG1lc3NhZ2UuYnVmZmVyLT5zaXplKCkpOwor
ICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmREYXRhKG1fcmVtb3RlSWRlbnRpZmllciwgbWVzc2Fn
ZS5pc1JhdywgbWVzc2FnZS5idWZmZXItPmRhdGEoKSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7
CiAgICAgbV9wZW5kaW5nTWVzc2FnZXMuY2xlYXIoKTsKIAogICAgIGlmIChtX2lzUGVuZGluZ0Ns
b3NlKQpAQCAtMTAwLDcgKzEwMCw3IEBAIGJvb2wgUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVy
OjpzZW5kU3RyaW5nRGF0YShjb25zdCBDU3RyaW5nJiB0ZXh0KQogICAgICAgICBtX3BlbmRpbmdN
ZXNzYWdlcy5hcHBlbmQoTWVzc2FnZSB7IGZhbHNlLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0
LmRhdGEoKSwgdGV4dC5sZW5ndGgoKSkgfSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
LSAgICBtX2Nvbm5lY3Rpb24tPnNlbmREYXRhKG1fcmVtb3RlSWRlbnRpZmllciwgZmFsc2UsIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KHRleHQuZGF0YSgpKSwgdGV4dC5s
ZW5ndGgoKSk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0YShtX3JlbW90ZUlkZW50aWZpZXIs
IGZhbHNlLCB0ZXh0LmNoYXJhY3RlcnM4KCksIHRleHQubGVuZ3RoKCkpOwogICAgIHJldHVybiB0
cnVlOwogfQogCkBAIC0xMTAsNyArMTEwLDcgQEAgYm9vbCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhh
bmRsZXI6OnNlbmRSYXdEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQogICAg
ICAgICBtX3BlbmRpbmdNZXNzYWdlcy5hcHBlbmQoTWVzc2FnZSB7IHRydWUsIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGRhdGEsIHNpemUpIH0pOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0g
ICAgbV9jb25uZWN0aW9uLT5zZW5kRGF0YShtX3JlbW90ZUlkZW50aWZpZXIsIHRydWUsIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGRhdGEpLCBzaXplKTsKKyAgICBtX2Nv
bm5lY3Rpb24tPnNlbmREYXRhKG1fcmVtb3RlSWRlbnRpZmllciwgdHJ1ZSwgZGF0YSwgc2l6ZSk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VHU3RyZWFtZXIu
Y3BwCmluZGV4IDU2ZWQ2MDFmNDY1YTAxYzBhNzQzYTU5MjU3YTc1NTljMTY3MWUzODUuLjQ1MDEy
ZTMwZTgxOGZiNTg5M2Q0NjM2MzBiYzNlN2E1MWViMDk1YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZUdTdHJlYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlv
U291cmNlR1N0cmVhbWVyLmNwcApAQCAtNDMsOCArNDMsOCBAQCBzdGF0aWMgVmVjdG9yPHNpemVf
dD4gY29weUJ1c0RhdGEoQXVkaW9CdXMmIGJ1cywgR3N0QnVmZmVyKiBidWZmZXIsIGJvb2wgaXNN
dXRlZAogICAgIHNpemVfdCBzaXplID0gbWFwcGVkQnVmZmVyLnNpemUoKSAvIGJ1cy5udW1iZXJP
ZkNoYW5uZWxzKCk7CiAgICAgZm9yIChzaXplX3QgY2hhbm5lbEluZGV4ID0gMDsgY2hhbm5lbElu
ZGV4IDwgYnVzLm51bWJlck9mQ2hhbm5lbHMoKTsgKytjaGFubmVsSW5kZXgpIHsKICAgICAgICAg
Y29uc3QgYXV0byYgY2hhbm5lbCA9ICpidXMuY2hhbm5lbChjaGFubmVsSW5kZXgpOwotICAgICAg
ICBhdXRvIG9mZnNldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90PihjaGFubmVsSW5kZXggKiBz
aXplKTsKLSAgICAgICAgbWVtY3B5KHJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQqPihtYXBwZWRCdWZm
ZXIuZGF0YSgpICsgb2Zmc2V0KSwgY2hhbm5lbC5kYXRhKCksIHNpemVvZihmbG9hdCkgKiBjaGFu
bmVsLmxlbmd0aCgpKTsKKyAgICAgICAgYXV0byBvZmZzZXQgPSBjaGFubmVsSW5kZXggKiBzaXpl
OworICAgICAgICBtZW1jcHkobWFwcGVkQnVmZmVyLmRhdGEoKSArIG9mZnNldCwgY2hhbm5lbC5k
YXRhKCksIHNpemVvZihmbG9hdCkgKiBjaGFubmVsLmxlbmd0aCgpKTsKICAgICAgICAgb2Zmc2V0
cy51bmNoZWNrZWRBcHBlbmQob2Zmc2V0KTsKICAgICB9CiAgICAgcmV0dXJuIG9mZnNldHM7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JS
ZXNwb25zZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGlj
YXRvclJlc3BvbnNlRGF0YS5oCmluZGV4IDIzODBhNDJkNWZhNWFjYzk3YTBmMDZmNTg1MWY4N2Rl
YzNjYzA5ODcuLjU1OTEzNmIyM2Y0NDU0MTVhYmY2MjgyMDNkN2QwZmViZGZjNGRjZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclJlc3Bv
bnNlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGlj
YXRvclJlc3BvbnNlRGF0YS5oCkBAIC01OSw3ICs1OSw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+CiBzdGF0aWMgdm9pZCBlbmNvZGVBcnJheUJ1ZmZlcihFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBBcnJheUJ1ZmZlciYgYnVmZmVyKQogewogICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KGJ1ZmZlci5ieXRlTGVuZ3RoKCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5n
dGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJ1ZmZlci5kYXRhKCkpLCBi
dWZmZXIuYnl0ZUxlbmd0aCgpLCAxKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0
YShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYnVmZmVyLmRhdGEoKSksIGJ1ZmZlci5ieXRl
TGVuZ3RoKCksIDEpOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAtNzUsNyArNzUs
NyBAQCBSZWZQdHI8QXJyYXlCdWZmZXI+IGRlY29kZUFycmF5QnVmZmVyKERlY29kZXImIGRlY29k
ZXIpCiAgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGxlbmd0aC52YWx1
ZSgpLCBzaXplb2YodWludDhfdCkpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJw
cmV0X2Nhc3Q8dWludDhfdCo+KGJ1ZmZlci0+ZGF0YSgpKSwgbGVuZ3RoLnZhbHVlKCksIDEpKQor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEoc3RhdGljX2Nhc3Q8dWludDhf
dCo+KGJ1ZmZlci0+ZGF0YSgpKSwgbGVuZ3RoLnZhbHVlKCksIDEpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICByZXR1cm4gYnVmZmVyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDNlMjRlYTZm
NjU0ZjkyMWU0ODQxN2ZlMGVmYzRjMjhjNGMyNTc5YzAuLjBiNzExYmFlNzI4ZjBhODI1Y2M1ZjZm
Y2Q4YWVkMjlmZTUwOTUwNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTQ5NSw3ICs0OTUsNyBAQCB2b2lk
IFdlYlNvY2tldENoYW5uZWw6OnN0YXJ0Q2xvc2luZ0hhbmRzaGFrZShpbnQgY29kZSwgY29uc3Qg
U3RyaW5nJiByZWFzb24pCiAgICAgICAgIGJ1Zi5hcHBlbmQoaGlnaEJ5dGUpOwogICAgICAgICBi
dWYuYXBwZW5kKGxvd0J5dGUpOwogICAgICAgICBhdXRvIHJlYXNvblVURjggPSByZWFzb24udXRm
OCgpOwotICAgICAgICBidWYuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KHJlYXNvblVURjguZGF0YSgpKSwgcmVhc29uVVRGOC5sZW5ndGgoKSk7CisgICAgICAgIGJ1Zi5h
cHBlbmQocmVhc29uVVRGOC5jaGFyYWN0ZXJzOCgpLCByZWFzb25VVEY4Lmxlbmd0aCgpKTsKICAg
ICB9CiAgICAgZW5xdWV1ZVJhd0ZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGVDbG9zZSwgYnVm
LmRhdGEoKSwgYnVmLnNpemUoKSk7CiAgICAgUmVmPFdlYlNvY2tldENoYW5uZWw+IHByb3RlY3Rl
ZFRoaXMoKnRoaXMpOyAvLyBBbiBhdHRlbXB0IHRvIHNlbmQgY2xvc2luZyBoYW5kc2hha2UgbWF5
IGZhaWwsIHdoaWNoIHdpbGwgZ2V0IHRoZSBjaGFubmVsIGNsb3NlZCBhbmQgZGVyZWZlcmVuY2Vk
LgpAQCAtNzQzLDcgKzc0Myw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc091dGdv
aW5nRnJhbWVRdWV1ZSgpCiAgICAgICAgIGF1dG8gZnJhbWUgPSBtX291dGdvaW5nRnJhbWVRdWV1
ZS50YWtlRmlyc3QoKTsKICAgICAgICAgc3dpdGNoIChmcmFtZS0+ZnJhbWVUeXBlKSB7CiAgICAg
ICAgIGNhc2UgUXVldWVkRnJhbWVUeXBlU3RyaW5nOiB7Ci0gICAgICAgICAgICBzZW5kRnJhbWUo
ZnJhbWUtPm9wQ29kZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZnJhbWUtPnN0
cmluZ0RhdGEuZGF0YSgpKSwgZnJhbWUtPnN0cmluZ0RhdGEubGVuZ3RoKCksIFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChib29sIHN1Y2Nlc3MpIHsKKyAgICAgICAgICAg
IHNlbmRGcmFtZShmcmFtZS0+b3BDb2RlLCBmcmFtZS0+c3RyaW5nRGF0YS5jaGFyYWN0ZXJzOCgp
LCBmcmFtZS0+c3RyaW5nRGF0YS5sZW5ndGgoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKV0gKGJvb2wgc3VjY2VzcykgewogICAgICAgICAgICAgICAgIGlmICghc3VjY2Vz
cykKICAgICAgICAgICAgICAgICAgICAgZmFpbCgiRmFpbGVkIHRvIHNlbmQgV2ViU29ja2V0IGZy
YW1lLiIpOwogICAgICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCmluZGV4IGJlMjQ0MTI1NjA3
YjFiY2MzMjI5MzQ3NGQ1NDQ4NjJiYjU2YWI2ZTQuLmViZjdlZTRhNDc0MjI5NThhZjBlNzQ0MWRi
MWE3NTEzOGY2ZTc4ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCkBAIC0xMDIsMTEgKzEwMiwxMSBAQCBz
dGF0aWMgU3RyaW5nIGdlbmVyYXRlU2VjV2ViU29ja2V0S2V5KCkKIAogU3RyaW5nIFdlYlNvY2tl
dEhhbmRzaGFrZTo6Z2V0RXhwZWN0ZWRXZWJTb2NrZXRBY2NlcHQoY29uc3QgU3RyaW5nJiBzZWNX
ZWJTb2NrZXRLZXkpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHdlYlNvY2tldEtl
eUdVSUQgPSAiMjU4RUFGQTUtRTkxNC00N0RBLTk1Q0EtQzVBQjBEQzg1QjExIjsKKyAgICBjb25z
dGV4cHIgdWludDhfdCB3ZWJTb2NrZXRLZXlHVUlEW10gPSAiMjU4RUFGQTUtRTkxNC00N0RBLTk1
Q0EtQzVBQjBEQzg1QjExIjsKICAgICBTSEExIHNoYTE7CiAgICAgQ1N0cmluZyBrZXlEYXRhID0g
c2VjV2ViU29ja2V0S2V5LmFzY2lpKCk7Ci0gICAgc2hhMS5hZGRCeXRlcyhyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihrZXlEYXRhLmRhdGEoKSksIGtleURhdGEubGVuZ3RoKCkpOwot
ICAgIHNoYTEuYWRkQnl0ZXMocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4od2ViU29j
a2V0S2V5R1VJRCksIHN0cmxlbih3ZWJTb2NrZXRLZXlHVUlEKSk7CisgICAgc2hhMS5hZGRCeXRl
cyhrZXlEYXRhLmNoYXJhY3RlcnM4KCksIGtleURhdGEubGVuZ3RoKCkpOworICAgIHNoYTEuYWRk
Qnl0ZXMod2ViU29ja2V0S2V5R1VJRCwgc3RkOjpzaXplKHdlYlNvY2tldEtleUdVSUQpKTsKICAg
ICBTSEExOjpEaWdlc3QgaGFzaDsKICAgICBzaGExLmNvbXB1dGVIYXNoKGhhc2gpOwogICAgIHJl
dHVybiBiYXNlNjRFbmNvZGVUb1N0cmluZyhoYXNoLmRhdGEoKSwgU0hBMTo6aGFzaFNpemUpOwpA
QCAtMzI4LDggKzMyOCw4IEBAIFVSTCBXZWJTb2NrZXRIYW5kc2hha2U6Omh0dHBVUkxGb3JBdXRo
ZW50aWNhdGlvbkFuZENvb2tpZXMoKSBjb25zdAogLy8gIlRoZSBIVFRQIHZlcnNpb24gTVVTVCBi
ZSBhdCBsZWFzdCAxLjEuIgogc3RhdGljIGlubGluZSBib29sIGhlYWRlckhhc1ZhbGlkSFRUUFZl
cnNpb24oU3RyaW5nVmlldyBodHRwU3RhdHVzTGluZSkKIHsKLSAgICBjb25zdCBjaGFyKiBodHRw
VmVyc2lvblN0YXRpY1ByZWFtYmxlTGl0ZXJhbCA9ICJIVFRQLyI7Ci0gICAgU3RyaW5nVmlldyBo
dHRwVmVyc2lvblN0YXRpY1ByZWFtYmxlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPiho
dHRwVmVyc2lvblN0YXRpY1ByZWFtYmxlTGl0ZXJhbCksIHN0cmxlbihodHRwVmVyc2lvblN0YXRp
Y1ByZWFtYmxlTGl0ZXJhbCkpOworICAgIGNvbnN0ZXhwciB1aW50OF90IGh0dHBWZXJzaW9uU3Rh
dGljUHJlYW1ibGVMaXRlcmFsW10gPSAiSFRUUC8iOworICAgIFN0cmluZ1ZpZXcgaHR0cFZlcnNp
b25TdGF0aWNQcmVhbWJsZShodHRwVmVyc2lvblN0YXRpY1ByZWFtYmxlTGl0ZXJhbCwgc3RkOjpz
aXplKGh0dHBWZXJzaW9uU3RhdGljUHJlYW1ibGVMaXRlcmFsKSk7CiAgICAgaWYgKCFodHRwU3Rh
dHVzTGluZS5zdGFydHNXaXRoKGh0dHBWZXJzaW9uU3RhdGljUHJlYW1ibGUpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCmluZGV4IDlkOWU1MmRhZWMwYzA0ZWQyMTYxZWI4
MjU2YWZhNjc3NTUxNWUyNDguLmM0NTJjODNmYmQ1Y2U4OTViZGQwMzFhY2YxNDY4Zjc4NjUwNjIy
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNv
dXJjZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVm
ZmVyU291cmNlUHJvdmlkZXIuaApAQCAtNTIsMTIgKzUyLDEyIEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgICAgIGlmICghbV9jb250YWluc09ubHlB
U0NJSSkgewotICAgICAgICAgICAgbV9jb250YWluc09ubHlBU0NJSSA9IGNoYXJhY3RlcnNBcmVB
bGxBU0NJSShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4obV9zY3JpcHRCdWZmZXIuYnVm
ZmVyKCktPmRhdGEoKSksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOworICAgICAg
ICAgICAgbV9jb250YWluc09ubHlBU0NJSSA9IGNoYXJhY3RlcnNBcmVBbGxBU0NJSShtX3Njcmlw
dEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgp
KTsKICAgICAgICAgICAgIGlmICgqbV9jb250YWluc09ubHlBU0NJSSkKLSAgICAgICAgICAgICAg
ICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRz
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+
ZGF0YSgpKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7CisgICAgICAgICAgICAg
ICAgbV9zY3JpcHRIYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0
cyhtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIo
KS0+c2l6ZSgpKTsKICAgICAgICAgfQogICAgICAgICBpZiAoKm1fY29udGFpbnNPbmx5QVNDSUkp
Ci0gICAgICAgICAgICByZXR1cm4geyByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4obV9z
Y3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3Nj
cmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKSB9OworICAgICAgICAgICAgcmV0dXJuIHsgbV9z
Y3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2Ny
aXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpIH07CiAKICAgICAgICAgaWYgKCFtX2NhY2hlZFNj
cmlwdFN0cmluZykgewogICAgICAgICAgICAgbV9jYWNoZWRTY3JpcHRTdHJpbmcgPSBtX3Njcmlw
dEJ1ZmZlci50b1N0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggNmM2NGEwNDRmNTYwZmY0MjkwOGM5MGNm
NGM3YzI0NmFkNjdhYzg4Zi4uMGI3ZmRhNGQ4ZDYwZTk5MTUzYTQ0ZjExNGFlZjEwNGFhZWU3ZGZm
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwCkBAIC0yMzQwLDcgKzIzNDAsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAo
aXM4Qml0KSB7CiAgICAgICAgICAgICBpZiAoKGVuZCAtIHB0cikgPCBzdGF0aWNfY2FzdDxpbnQ+
KGxlbmd0aCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgc3Ry
ID0gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihwdHIpLCBsZW5ndGgpOwor
ICAgICAgICAgICAgc3RyID0gU3RyaW5nIHsgcHRyLCBsZW5ndGggfTsKICAgICAgICAgICAgIHB0
ciArPSBsZW5ndGg7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9TZXJpYWxpemVkTkZBLmNwcAppbmRl
eCAwYjMzMzg5YTc2OTI1MDBmMjQ0ZmVmNDhiNzIxNzI1YzNmN2ZhMTNlLi4wNGM2ZGE1YTg0OGQw
ODkxZjMzZjRmODM5ZGE5NTJiOGM3Njc5YTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9TZXJpYWxpemVkTkZBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9TZXJpYWxpemVkTkZBLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIFNl
cmlhbGl6ZWRORkE6OlNlcmlhbGl6ZWRORkEoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBm
aWxlLCBNZXRhZGF0YSYmIG1ldGFkCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogY29uc3QgVCogU2Vy
aWFsaXplZE5GQTo6cG9pbnRlckF0T2Zmc2V0SW5GaWxlKHNpemVfdCBvZmZzZXQpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+KHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KG1fZmlsZS5kYXRhKCkpICsgb2Zmc2V0KTsKKyAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBUKj4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fZmls
ZS5kYXRhKCkpICsgb2Zmc2V0KTsKIH0KIAogYXV0byBTZXJpYWxpemVkTkZBOjpub2RlcygpIGNv
bnN0IC0+IGNvbnN0IFJhbmdlPEltbXV0YWJsZU5GQU5vZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXgg
ZmRhYmNkM2U3Yjg5MmU1MDFkODc5NDMyYWM0NmMzZDcxM2Y4ZWIwMC4uMGVlMDdkYmU2YTIxZThi
MjBlYmJlN2I1ZGJiMWZmMTQyYWUzOWRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMTYwMCwxMCAr
MTYwMCwxMCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBOb2RlOjpzZXRUZXh0Q29udGVudChjb25zdCBT
dHJpbmcmIHRleHQpCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotc3RhdGljIFNIQTE6OkRpZ2VzdCBo
YXNoUG9pbnRlcih2b2lkKiBwb2ludGVyKQorc3RhdGljIFNIQTE6OkRpZ2VzdCBoYXNoUG9pbnRl
cihjb25zdCB2b2lkKiBwb2ludGVyKQogewogICAgIFNIQTEgc2hhMTsKLSAgICBzaGExLmFkZEJ5
dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KCZwb2ludGVyKSwgc2l6ZW9mKHBv
aW50ZXIpKTsKKyAgICBzaGExLmFkZEJ5dGVzKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihw
b2ludGVyKSwgc2l6ZW9mKHBvaW50ZXIpKTsKICAgICBTSEExOjpEaWdlc3QgZGlnZXN0OwogICAg
IHNoYTEuY29tcHV0ZUhhc2goZGlnZXN0KTsKICAgICByZXR1cm4gZGlnZXN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9UZXh0RW5jb2Rlci5jcHAKaW5kZXggZDZkMTQ0M2Q0ZmY5ODUzNzFhMGI4ZGZkNTViZmVjOTRi
NWIzZmM1NS4uMGFiOWYxNDdmMDllYTFlMzY4Zjk1YmUzN2I5Y2RmMTJkYmM3MDc4MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vVGV4dEVuY29kZXIuY3BwCkBAIC00MCw3ICs0MCw3IEBAIFJlZlB0cjxVaW50OEFy
cmF5PiBUZXh0RW5jb2Rlcjo6ZW5jb2RlKFN0cmluZyYmIGlucHV0KSBjb25zdAogewogICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgbm90IG5lZWQgdG8gYWxsb2NhdGUgYSBDU3RyaW5nIHRvIGVuY29k
ZSBpbnRvIGEgVWludDhBcnJheS4KICAgICBDU3RyaW5nIHV0ZjggPSBpbnB1dC51dGY4KCk7Ci0g
ICAgcmV0dXJuIFVpbnQ4QXJyYXk6OnRyeUNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPih1dGY4LmRhdGEoKSksIHV0ZjgubGVuZ3RoKCkpOworICAgIHJldHVybiBVaW50OEFy
cmF5Ojp0cnlDcmVhdGUodXRmOC5jaGFyYWN0ZXJzOCgpLCB1dGY4Lmxlbmd0aCgpKTsKIH0KIAog
YXV0byBUZXh0RW5jb2Rlcjo6ZW5jb2RlSW50byhTdHJpbmcmJiBpbnB1dCwgUmVmPFVpbnQ4QXJy
YXk+JiYgYXJyYXkpIC0+IEVuY29kZUludG9SZXN1bHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9UZXh0RW5jb2RlclN0cmVhbUVuY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L1RleHRFbmNvZGVyU3RyZWFtRW5jb2Rlci5jcHAKaW5kZXggY2UxMDg2NzdiOTY2NWQ3NTY4MTJl
YWRiYTIzZjViMjMwOWI1NDZmZi4uYTEwNGZkZjE0Y2MyMGQyZTE4NDk0YTRhMjNkNWYzYTQ0ZDNl
YmJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyU3RyZWFtRW5j
b2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyU3RyZWFtRW5jb2Rl
ci5jcHAKQEAgLTc3LDggKzc3LDggQEAgUmVmUHRyPFVpbnQ4QXJyYXk+IFRleHRFbmNvZGVyU3Ry
ZWFtRW5jb2Rlcjo6Zmx1c2goKQogICAgIGlmICghbV9wZW5kaW5nSGlnaFN1cnJvZ2F0ZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGJ5dGVTZXF1ZW5jZSA9ICJceEVGXHhC
Rlx4QkQiOwotICAgIHJldHVybiBVaW50OEFycmF5Ojp0cnlDcmVhdGUocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4oYnl0ZVNlcXVlbmNlKSwgMyk7CisgICAgY29uc3RleHByIHVpbnQ4
X3QgYnl0ZVNlcXVlbmNlW10gPSB7IDB4RUYsIDB4QkYsIDB4QkQgfTsKKyAgICByZXR1cm4gVWlu
dDhBcnJheTo6dHJ5Q3JlYXRlKGJ5dGVTZXF1ZW5jZSwgc3RkOjpzaXplKGJ5dGVTZXF1ZW5jZSkp
OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNv
bnRlbnRSZWFkZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29u
dGVudFJlYWRlckNvY29hLm1tCmluZGV4IGE0ZTUzMjMxOTkzM2YwYTg2MTJkMmMyMjUxODI5OGQ1
OWQ0ZTk2YjIuLjc4MDhhZjlhMzVkZDhhMWUxYTdhYzA0NzE0NmRkZTYxM2EwM2JkZTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNv
Y29hLm1tCkBAIC00ODYsNyArNDg2LDcgQEAgc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdp
dGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW0KICAgICAg
ICAgQ1N0cmluZyB1dGY4ID0gc3ViZnJhbWVNYXJrdXAudXRmOCgpOwogICAgICAgICBWZWN0b3I8
dWludDhfdD4gYmxvYkJ1ZmZlcjsKICAgICAgICAgYmxvYkJ1ZmZlci5yZXNlcnZlQ2FwYWNpdHko
dXRmOC5sZW5ndGgoKSk7Ci0gICAgICAgIGJsb2JCdWZmZXIuYXBwZW5kKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KHV0ZjguZGF0YSgpKSwgdXRmOC5sZW5ndGgoKSk7CisgICAgICAg
IGJsb2JCdWZmZXIuYXBwZW5kKHV0ZjguY2hhcmFjdGVyczgoKSwgdXRmOC5sZW5ndGgoKSk7CiAg
ICAgICAgIGF1dG8gYmxvYiA9IEJsb2I6OmNyZWF0ZSgmZGVzdGluYXRpb25Eb2N1bWVudCwgV1RG
TW92ZShibG9iQnVmZmVyKSwgdHlwZSk7CiAKICAgICAgICAgU3RyaW5nIHN1YmZyYW1lQmxvYlVS
TCA9IERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRlc3RpbmF0aW9uRG9jdW1lbnQsIGJsb2IpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmNwcAppbmRleCA2ZDdjOWM4YjBkODM0YjliZTNkODQ1NGIyMjEzYWUwZGExNGE2
NjhiLi4wMjZjZWJiMmIyNzhiMzg3NTAyZTMwMjY5NDg0MDg2OTRmYmViNzgwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmNwcApAQCAtNDk2Miw3ICs0OTYyLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjp0ZXhJbWFnZUFycmF5QnVmZmVyVmlld0hlbHBlcihUZXhJbWFnZUZ1bmN0aW9uSUQKICAg
ICAgICAgc291cmNlVHlwZSA9IFRleEltYWdlRGltZW5zaW9uOjpUZXgzRDsKICAgICBpZiAoIXZh
bGlkYXRlVGV4RnVuY0RhdGEoZnVuY3Rpb25OYW1lLCBzb3VyY2VUeXBlLCB3aWR0aCwgaGVpZ2h0
LCBkZXB0aCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMuZ2V0KCksIG51bGxEaXNwb3NpdGlvbiwgc3Jj
T2Zmc2V0KSkKICAgICAgICAgcmV0dXJuOwotICAgIHVpbnQ4X3QqIGRhdGEgPSByZWludGVycHJl
dF9jYXN0PHVpbnQ4X3QqPihwaXhlbHMgPyBwaXhlbHMtPmJhc2VBZGRyZXNzKCkgOiBudWxscHRy
KTsKKyAgICBhdXRvIGRhdGEgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4ocGl4ZWxzID8gcGl4ZWxz
LT5iYXNlQWRkcmVzcygpIDogbnVsbHB0cik7CiAgICAgaWYgKHNyY09mZnNldCkgewogICAgICAg
ICBBU1NFUlQocGl4ZWxzKTsKICAgICAgICAgLy8gTm8gbmVlZCB0byBjaGVjayBvdmVyZmxvdyBi
ZWNhdXNlIHZhbGlkYXRlVGV4RnVuY0RhdGEoKSBhbHJlYWR5IGRpZC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKaW5kZXggMWYzOTRiYTk3YzhmZjJhZTU0
MmNlNjIxMmViNTM2MGFjYzUzNjQxMy4uMGU5ZGU1MmRlMTBlNzUzNjBiNTUwOWE5NTA1MmRkZjc2
OTg1NGQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3Vw
cG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5j
cHAKQEAgLTM5Nyw3ICszOTcsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBET01QYXRjaFN1cHBvcnQ6
OmlubmVyUGF0Y2hDaGlsZHJlbihDb250YWluZXJOb2RlJiBwYXJlbnROb2RlLAogc3RhdGljIHZv
aWQgYWRkU3RyaW5nVG9TSEExKFNIQTEmIHNoYTEsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewog
ICAgIENTdHJpbmcgY1N0cmluZyA9IHN0cmluZy51dGY4KCk7Ci0gICAgc2hhMS5hZGRCeXRlcyhy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihjU3RyaW5nLmRhdGEoKSksIGNTdHJpbmcu
bGVuZ3RoKCkpOworICAgIHNoYTEuYWRkQnl0ZXMoY1N0cmluZy5jaGFyYWN0ZXJzOCgpLCBjU3Ry
aW5nLmxlbmd0aCgpKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPERPTVBhdGNoU3VwcG9ydDo6RGln
ZXN0PiBET01QYXRjaFN1cHBvcnQ6OmNyZWF0ZURpZ2VzdChOb2RlJiBub2RlLCBVbnVzZWROb2Rl
c01hcCogdW51c2VkTm9kZXNNYXApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
VGV4dFJlc291cmNlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291
cmNlRGVjb2Rlci5jcHAKaW5kZXggMjJiMmJkNzcxYzRmZDM0YzVhY2I0Yzg2MTA2ZjdmYTkyOTY4
YmVlOC4uNDc3MDJhNTc0Y2M4YmY0MmFmOTYzNTYxNTBiNjFiOTY3Y2FhZmFhMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcApAQCAtMzMzLDcgKzMz
Myw3IEBAIFN0cmluZyBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgoY29uc3QgdW5z
aWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuCiAgICAgYXV0byBkZWNvZGVyID0gVGV4dFJl
c291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIiwgIlVURi04Iik7CiAgICAgaWYgKHNo
b3VsZFByZXBlbmRCT00oZGF0YSwgbGVuZ3RoKSkKICAgICAgICAgZGVjb2Rlci0+ZGVjb2RlKCJc
eGVmXHhiYlx4YmYiLCAzKTsKLSAgICByZXR1cm4gZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIGxlbmd0aCk7CisgICAgcmV0dXJuIGRl
Y29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEsIGxlbmd0aCk7CiB9CiAKIHZvaWQgVGV4dFJlc291
cmNlRGVjb2Rlcjo6c2V0RW5jb2RpbmcoY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZywgRW5j
b2RpbmdTb3VyY2Ugc291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U2NyaXB0LmNwcAppbmRleCAxNzQ2YTM4OTk1MmU4YTQ3Y2Q3ZTA0N2I5OWFiNDIzNWYzMmZlYmEw
Li5kYzEwMWNiZTA2ZDliM2YwMjhiN2FhODExNTdiOTQ4NzE5MmVhNmYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcApAQCAtNjIsNyArNjIsNyBAQCBT
dHJpbmdWaWV3IENhY2hlZFNjcmlwdDo6c2NyaXB0KCkKICAgICBpZiAobV9kZWNvZGluZ1N0YXRl
ID09IE5ldmVyRGVjb2RlZAogICAgICAgICAmJiBUZXh0RW5jb2RpbmcoZW5jb2RpbmcoKSkuaXNC
eXRlQmFzZWRFbmNvZGluZygpCiAgICAgICAgICYmIG1fZGF0YS0+c2l6ZSgpCi0gICAgICAgICYm
IGNoYXJhY3RlcnNBcmVBbGxBU0NJSShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4obV9k
YXRhLT5kYXRhKCkpLCBtX2RhdGEtPnNpemUoKSkpIHsKKyAgICAgICAgJiYgY2hhcmFjdGVyc0Fy
ZUFsbEFTQ0lJKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkpIHsKIAogICAgICAgICBt
X2RlY29kaW5nU3RhdGUgPSBEYXRhQW5kRGVjb2RlZFN0cmluZ0hhdmVTYW1lQnl0ZXM7CiAKQEAg
LTcwLDExICs3MCwxMSBAQCBTdHJpbmdWaWV3IENhY2hlZFNjcmlwdDo6c2NyaXB0KCkKICAgICAg
ICAgc2V0RGVjb2RlZFNpemUoMCk7CiAgICAgICAgIG1fZGVjb2RlZERhdGFEZWxldGlvblRpbWVy
LnN0b3AoKTsKIAotICAgICAgICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdIYXNoZXI6OmNvbXB1dGVI
YXNoQW5kTWFza1RvcDhCaXRzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihtX2RhdGEt
PmRhdGEoKSksIG1fZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgbV9zY3JpcHRIYXNoID0gU3RyaW5n
SGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhtX2RhdGEtPmRhdGEoKSwgbV9kYXRh
LT5zaXplKCkpOwogICAgIH0KIAogICAgIGlmIChtX2RlY29kaW5nU3RhdGUgPT0gRGF0YUFuZERl
Y29kZWRTdHJpbmdIYXZlU2FtZUJ5dGVzKQotICAgICAgICByZXR1cm4geyByZWludGVycHJldF9j
YXN0PGNvbnN0IExDaGFyKj4obV9kYXRhLT5kYXRhKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
bV9kYXRhLT5zaXplKCkpIH07CisgICAgICAgIHJldHVybiB7IG1fZGF0YS0+ZGF0YSgpLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4obV9kYXRhLT5zaXplKCkpIH07CiAKICAgICBpZiAoIW1fc2NyaXB0
KSB7CiAgICAgICAgIG1fc2NyaXB0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEt
PmRhdGEoKSwgZW5jb2RlZFNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0KaW5kZXggZTUxOWJlN2E4NGIwMTQ1
NGI0NjNmNmRjMzU4NDM3MDA3MjhmYzhiNi4uMjlkZjhjNmIyYTA3MDk1YWVkNzlmNWViZjNiNDU1
ZTNjYjhjOWJjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJj
ZVVzYWdlT3ZlcmxheUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVz
b3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbQpAQCAtMjY5LDcgKzI2OSw3IEBAIHN0YXRpYyB2b2lk
IHNob3dUZXh0KENHQ29udGV4dFJlZiBjb250ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBDR0NvbG9y
UmVmIGNvbG9yLCBjCiAgICAgQ0ZUeXBlUmVmIHZhbHVlc1tdID0geyBmb250LmdldCgpLCBrQ0ZC
b29sZWFuVHJ1ZSB9OwogICAgIGF1dG8gYXR0cmlidXRlcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5
Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtleXMsIHZhbHVlcywgV1RGX0FSUkFZX0xFTkdU
SChrZXlzKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25h
cnlWYWx1ZUNhbGxCYWNrcykpOwogICAgIENTdHJpbmcgY3N0ciA9IHRleHQuYXNjaWkoKTsKLSAg
ICBhdXRvIHN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXNOb0NvcHkoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGNzdHIuZGF0
YSgpKSwgY3N0ci5sZW5ndGgoKSwga0NGU3RyaW5nRW5jb2RpbmdBU0NJSSwgZmFsc2UsIGtDRkFs
bG9jYXRvck51bGwpKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVX
aXRoQnl0ZXNOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgY3N0ci5jaGFyYWN0ZXJzOCgpLCBj
c3RyLmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ0FTQ0lJLCBmYWxzZSwga0NGQWxsb2NhdG9y
TnVsbCkpOwogICAgIGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0Q0YoQ0ZBdHRyaWJ1dGVk
U3RyaW5nQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0cmluZy5nZXQoKSwgYXR0cmlidXRl
cy5nZXQoKSkpOwogICAgIGF1dG8gbGluZSA9IGFkb3B0Q0YoQ1RMaW5lQ3JlYXRlV2l0aEF0dHJp
YnV0ZWRTdHJpbmcoYXR0cmlidXRlZFN0cmluZy5nZXQoKSkpOwogICAgIENHQ29udGV4dFNldFRl
eHRQb3NpdGlvbihjb250ZXh0LCB4LCB5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcAppbmRleCA1ZTQ0NjZjZDNmMTcxODhhMjdj
MGNkZTFlYThhODAxYjAyYTI0N2Q1Li5lMmEzZjU0MjY3MDM2YWE1Y2U3MWIwZjNmZWMxMzM5Nzc5
MzBiZDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJD
aHVua1JlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
Q2h1bmtSZWFkZXIuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgYm9vbCBTaGFyZWRCdWZmZXJDaHVu
a1JlYWRlcjo6bmV4dENodW5rKFZlY3Rvcjx1aW50OF90PiYgY2h1bmssIGJvb2wgaW5jbHVkZVNl
cGEKICAgICAgICAgaWYgKCFtX3NlZ21lbnRMZW5ndGgpIHsKICAgICAgICAgICAgIG1fcmVhY2hl
ZEVuZE9mRmlsZSA9IHRydWU7CiAgICAgICAgICAgICBpZiAobV9zZXBhcmF0b3JJbmRleCA+IDAp
Ci0gICAgICAgICAgICAgICAgY2h1bmsuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KG1fc2VwYXJhdG9yLmRhdGEoKSksIG1fc2VwYXJhdG9ySW5kZXgpOworICAgICAgICAg
ICAgICAgIGNodW5rLmFwcGVuZChtX3NlcGFyYXRvci5jaGFyYWN0ZXJzOCgpLCBtX3NlcGFyYXRv
ckluZGV4KTsKICAgICAgICAgICAgIHJldHVybiAhY2h1bmsuaXNFbXB0eSgpOwogICAgICAgICB9
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVm
ZmVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3Bw
CmluZGV4IGExMTBkMTM5MzBlODYxMTMwN2RkMDU1ZmYyYTQ3MDBjZjRlOWM5ZTMuLjg5NWViZTA1
MWYxNTJhN2E4M2E0NWM3YjkwZGRjMGMyNzBhNDllZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgUmV0YWluUHRy
PENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEoKSBjb25zdAogICAgICAgICBp
ZiAoYXV0byBkYXRhID0gV1RGOjpnZXRfaWY8UmV0YWluUHRyPENGRGF0YVJlZj4+KG1fc2VnbWVu
dHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSkKICAgICAgICAgICAgIHJldHVybiAqZGF0
YTsKICAgICB9Ci0gICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxwdHIsIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihkYXRhKCkpLCBzaXplKCkpKTsKKyAgICByZXR1cm4g
YWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0ciwgZGF0YSgpLCBzaXplKCkpKTsKIH0KICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5j
b2RlckdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVu
Y29kZXJHZW5lcmljLmNwcAppbmRleCAyMWNjMWViZTRhOTAxYTEzYzc0NDAzZGMwMWNmMmZjODE4
MTMwMTJkLi4wYzMxOTgxN2NlNzY1NjExYWVkMmNmNGRiNDk2Mzc2NDQ0ZWJkZDFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2Vu
ZXJpYy5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgdm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjplbmNv
ZGVTdHJpbmcoY29uc3QgU3RyaW5nJiBrZXkpCiB7CiAgICAgYXV0byB1dGY4ID0ga2V5LnV0Zjgo
KTsKICAgICBtX2VuY29kZXIgPDwgdXRmOC5sZW5ndGgoKTsKLSAgICBtX2VuY29kZXIuZW5jb2Rl
Rml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHV0ZjguZGF0
YSgpKSwgdXRmOC5sZW5ndGgoKSk7CisgICAgbV9lbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0
YSh1dGY4LmNoYXJhY3RlcnM4KCksIHV0ZjgubGVuZ3RoKCkpOwogfQogCiB2b2lkIEtleWVkRW5j
b2RlckdlbmVyaWM6OmVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90
KiBieXRlcywgc2l6ZV90IHNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAKaW5kZXggN2VlNGE3NjkwZTk1ZTI3NmFk
YmI5NDg4YWI5MTU2ZmRlNzdjOWJiMS4uYTdhOTM4MGRmMjcxZTVhNmRlOTE0ODQ1MWQzYjgzMmZk
ZDM5NTU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0R0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dEdMLmNwcApAQCAtNzU3LDcgKzc1Nyw3IEBAIGJvb2wgR3JhcGhpY3ND
b250ZXh0R0w6OnBhY2tJbWFnZURhdGEoSW1hZ2UqIGltYWdlLCBjb25zdCB2b2lkKiBwaXhlbHMs
IEdDR0xlbnVtCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBkYXRhLnJlc2l6ZShwYWNrZWRT
aXplKTsKIAotICAgIGlmICghcGFja1BpeGVscyhyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihwaXhlbHMpLCBzb3VyY2VGb3JtYXQsIHNvdXJjZUltYWdlV2lkdGgsIHNvdXJjZUltYWdl
SGVpZ2h0LCBzb3VyY2VJbWFnZVN1YlJlY3RhbmdsZSwgZGVwdGgsIHNvdXJjZVVucGFja0FsaWdu
bWVudCwgdW5wYWNrSW1hZ2VIZWlnaHQsIGZvcm1hdCwgdHlwZSwgYWxwaGFPcCwgZGF0YS5kYXRh
KCksIGZsaXBZKSkKKyAgICBpZiAoIXBhY2tQaXhlbHMoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhf
dCo+KHBpeGVscyksIHNvdXJjZUZvcm1hdCwgc291cmNlSW1hZ2VXaWR0aCwgc291cmNlSW1hZ2VI
ZWlnaHQsIHNvdXJjZUltYWdlU3ViUmVjdGFuZ2xlLCBkZXB0aCwgc291cmNlVW5wYWNrQWxpZ25t
ZW50LCB1bnBhY2tJbWFnZUhlaWdodCwgZm9ybWF0LCB0eXBlLCBhbHBoYU9wLCBkYXRhLmRhdGEo
KSwgZmxpcFkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKEltYWdlT2JzZXJ2ZXIq
IG9ic2VydmVyID0gaW1hZ2UtPmltYWdlT2JzZXJ2ZXIoKSkKICAgICAgICAgb2JzZXJ2ZXItPmRp
ZERyYXcoKmltYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCmluZGV4IGFkNWQzZTRmMzI3ZWVmNDg3ODU5Y2Jj
NDE1Yjc1NmQxMWUwNDVmYTcuLmQyODc3ZDY4MzBjM2JjOGEwNDIxOGY2YmEzMzQ0ZjMwZmFiZjg2
YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJCYWNrZW5kLmNwcApAQCAtMTE4LDcgKzExOCw3IEBAIHN0ZDo6b3B0aW9uYWw8UGl4
ZWxCdWZmZXI+IEltYWdlQnVmZmVyQmFja2VuZDo6Z2V0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxC
dWZmZXJGCiAgICAgQ29uc3RQaXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3IHNvdXJjZSB7CiAgICAg
ICAgIHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgcGl4ZWxGb3JtYXQo
KSwgY29sb3JTcGFjZSgpIH0sCiAgICAgICAgIGJ5dGVzUGVyUm93KCksCi0gICAgICAgIHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEpICsgc291cmNlUmVjdENsaXBwZWQueSgpICogc291
cmNlLmJ5dGVzUGVyUm93ICsgc291cmNlUmVjdENsaXBwZWQueCgpICogNAorICAgICAgICBzdGF0
aWNfY2FzdDx1aW50OF90Kj4oZGF0YSkgKyBzb3VyY2VSZWN0Q2xpcHBlZC55KCkgKiBzb3VyY2Uu
Ynl0ZXNQZXJSb3cgKyBzb3VyY2VSZWN0Q2xpcHBlZC54KCkgKiA0CiAgICAgfTsKICAgICAKICAg
ICBQaXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3IGRlc3RpbmF0aW9uIHsKQEAgLTE1OSw3ICsxNTks
NyBAQCB2b2lkIEltYWdlQnVmZmVyQmFja2VuZDo6cHV0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxC
dWZmZXImIHNvdXJjZVBpeGVsQnVmZmVyLCBjbwogICAgIFBpeGVsQnVmZmVyQ29udmVyc2lvblZp
ZXcgZGVzdGluYXRpb24gewogICAgICAgICB7IGRlc3RpbmF0aW9uQWxwaGFGb3JtYXQsIHBpeGVs
Rm9ybWF0KCksIGNvbG9yU3BhY2UoKSB9LAogICAgICAgICBieXRlc1BlclJvdygpLAotICAgICAg
ICByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihkYXRhKSArIGRlc3RpbmF0aW9uUmVjdC55KCkg
KiBkZXN0aW5hdGlvbi5ieXRlc1BlclJvdyArIGRlc3RpbmF0aW9uUmVjdC54KCkgKiA0CisgICAg
ICAgIHN0YXRpY19jYXN0PHVpbnQ4X3QqPihkYXRhKSArIGRlc3RpbmF0aW9uUmVjdC55KCkgKiBk
ZXN0aW5hdGlvbi5ieXRlc1BlclJvdyArIGRlc3RpbmF0aW9uUmVjdC54KCkgKiA0CiAgICAgfTsK
IAogICAgIGNvbnZlcnRJbWFnZVBpeGVscyhzb3VyY2UsIGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlv
blJlY3Quc2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZGLmNwcAppbmRleCAxZTYyY2NmN2E1YTM3YTM5NWU1M2YyMzNlNjY5NWMyNzM0NDg2YzM3
Li4zZmE5NjA5ZTFhZjVkNzFiYWJkNTRkY2M0MTJjNjY5MjcyOTBhM2EwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCkBAIC01MzEsNyArNTMx
LDcgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzTmF0aXZlU2FtcGxl
cyhDRkFycmF5UmVmIG5hdGl2ZVNhbXBsZXMsIGMKICAgICAgICAgICAgIC8vIEEgV2ViVlRUIGhl
YWRlciBpcyB0ZXJtaW5hdGVkIGJ5ICJPbmUgb3IgbW9yZSBXZWJWVFQgbGluZSB0ZXJtaW5hdG9y
cyIgc28gYXBwZW5kIHR3byBsaW5lIGZlZWRzIHRvIG1ha2Ugc3VyZSB0aGUgcGFyc2VyCiAgICAg
ICAgICAgICAvLyByZWNjb2duaXplZCB0aGlzIHN0cmluZyBhcyBhIGZ1bGwgaGVhZGVyLgogICAg
ICAgICAgICAgU3RyaW5nQnVpbGRlciBoZWFkZXI7Ci0gICAgICAgICAgICBoZWFkZXIuYXBwZW5k
Q2hhcmFjdGVycyhyZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihDRkRhdGFH
ZXRCeXRlUHRyKHdlYnZ0dEhlYWRlckRhdGEpKSwgbGVuZ3RoKTsKKyAgICAgICAgICAgIGhlYWRl
ci5hcHBlbmRDaGFyYWN0ZXJzKENGRGF0YUdldEJ5dGVQdHIod2VidnR0SGVhZGVyRGF0YSksIGxl
bmd0aCk7CiAgICAgICAgICAgICBoZWFkZXIuYXBwZW5kKCJcblxuIik7CiAKICAgICAgICAgICAg
IElORk9fTE9HKExPR0lERU5USUZJRVIsICJWVFQgaGVhZGVyICIsICZoZWFkZXIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NE
TVNlc3Npb25BVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmNwcAppbmRleCA3
MDljMDgwZDRmZmIwMjEzYzhkYjZmZGQ0YzhiZjc4YTdlMTI1NjZjLi5kNWY3MjU2MjQwZTIxNGY4
MDUwMDdmMWQ0YWQ0ODk3MGVlMjE2NDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2Yv
Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmNwcApAQCAtNzQsMTEgKzc0LDExIEBAIFJlZlB0cjxV
aW50OEFycmF5PiBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Y6OmdlbmVyYXRlS2V5UmVxdWVzdChj
b25zdCBTdHJpbmcmLCBVCiAgICAgfQogCiAgICAgYXV0byBjZXJ0aWZpY2F0ZURhdGEgPSBhZG9w
dENGKENGRGF0YUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgY2VydGlmaWNhdGUt
PmJ5dGVMZW5ndGgoKSkpOwotICAgIENGRGF0YUFwcGVuZEJ5dGVzKGNlcnRpZmljYXRlRGF0YS5n
ZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGNlcnRpZmljYXRlLT5iYXNlQWRk
cmVzcygpKSwgY2VydGlmaWNhdGUtPmJ5dGVMZW5ndGgoKSk7CisgICAgQ0ZEYXRhQXBwZW5kQnl0
ZXMoY2VydGlmaWNhdGVEYXRhLmdldCgpLCBjZXJ0aWZpY2F0ZS0+ZGF0YSgpLCBjZXJ0aWZpY2F0
ZS0+Ynl0ZUxlbmd0aCgpKTsKIAogICAgIGF1dG8gYXNzZXRTdHIgPSBrZXlJRC51dGY4KCk7CiAg
ICAgYXV0byBhc3NldElEID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIGFzc2V0U3RyLmxlbmd0aCgpKSk7Ci0gICAgQ0ZEYXRhQXBwZW5kQnl0ZXMoYXNz
ZXRJRC5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGFzc2V0U3RyLmRhdGEo
KSksIGFzc2V0U3RyLmxlbmd0aCgpKTsKKyAgICBDRkRhdGFBcHBlbmRCeXRlcyhhc3NldElELmdl
dCgpLCBhc3NldFN0ci5jaGFyYWN0ZXJzOCgpLCBhc3NldFN0ci5sZW5ndGgoKSk7CiAKICAgICBD
RkVycm9yUmVmIGNmRXJyb3IgPSBudWxscHRyOwogICAgIGF1dG8ga2V5UmVxdWVzdCA9IGFkb3B0
Q0YoQVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdENyZWF0ZVN0cmVhbWluZ0NvbnRlbnRL
ZXlSZXF1ZXN0RGF0YUZvckFwcChtX3JlcXVlc3QuZ2V0KCksIGNlcnRpZmljYXRlRGF0YS5nZXQo
KSwgYXNzZXRJRC5nZXQoKSwgbnVsbHB0ciwgJmNmRXJyb3IpKTsKQEAgLTExMCw3ICsxMTAsNyBA
QCB2b2lkIENETVNlc3Npb25BVkZvdW5kYXRpb25DRjo6cmVsZWFzZUtleXMoKQogYm9vbCBDRE1T
ZXNzaW9uQVZGb3VuZGF0aW9uQ0Y6OnVwZGF0ZShVaW50OEFycmF5KiBrZXksIFJlZlB0cjxVaW50
OEFycmF5PiYgbmV4dE1lc3NhZ2UsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVpbnQzMl90
JiBzeXN0ZW1Db2RlKQogewogICAgIGF1dG8ga2V5RGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRl
TXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrZXktPmJ5dGVMZW5ndGgoKSkpOwotICAgIENG
RGF0YUFwcGVuZEJ5dGVzKGtleURhdGEuZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUlu
dDgqPihrZXktPmJhc2VBZGRyZXNzKCkpLCBrZXktPmJ5dGVMZW5ndGgoKSk7CisgICAgQ0ZEYXRh
QXBwZW5kQnl0ZXMoa2V5RGF0YS5nZXQoKSwga2V5LT5kYXRhKCksIGtleS0+Ynl0ZUxlbmd0aCgp
KTsKIAogICAgIEFWQ0ZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3RGaW5pc2hMb2FkaW5nV2l0
aFJlc3BvbnNlKG1fcmVxdWVzdC5nZXQoKSwgbnVsbHB0ciwga2V5RGF0YS5nZXQoKSwgbnVsbHB0
cik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWQ0YuY3BwCmluZGV4IGI0NTlmNmYxOWJmNzU0Y2U5ZTU1MjIyOTVjYjJlYWVlODE0YzZmMjcu
LjNlZTYwMWRkMjcwNWIyMGIwMjBlZDdkYzk1N2FkZTg2ZTg3NTA1ZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0
VHJhY2tQcml2YXRlQVZDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGLmNwcApAQCAtMjA0
LDcgKzIwNCw3IEBAIGJvb2wgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0Y6OnJlYWROYXRpdmVT
YW1wbGVCdWZmZXIoQ0ZBcnJheVJlZiBuYXRpdmVTYW1wbGVzCiAgICAgfQogCiAgICAgbV9zYW1w
bGVJbnB1dEJ1ZmZlci5ncm93KG1fc2FtcGxlSW5wdXRCdWZmZXIuc2l6ZSgpICsgYnVmZmVyTGVu
Z3RoKTsKLSAgICBDRkRhdGFHZXRCeXRlcyhzYW1wbGVCdWZmZXItPmJ1ZmZlciwgQ0ZSYW5nZU1h
a2UoMCwgYnVmZmVyTGVuZ3RoKSwgcmVpbnRlcnByZXRfY2FzdDxVSW50OCo+KG1fc2FtcGxlSW5w
dXRCdWZmZXIuZGF0YSgpKSArIG1fc2FtcGxlSW5wdXRCdWZmZXIuc2l6ZSgpIC0gYnVmZmVyTGVu
Z3RoKTsKKyAgICBDRkRhdGFHZXRCeXRlcyhzYW1wbGVCdWZmZXItPmJ1ZmZlciwgQ0ZSYW5nZU1h
a2UoMCwgYnVmZmVyTGVuZ3RoKSwgbV9zYW1wbGVJbnB1dEJ1ZmZlci5kYXRhKCkgKyBtX3NhbXBs
ZUlucHV0QnVmZmVyLnNpemUoKSAtIGJ1ZmZlckxlbmd0aCk7CiAKICAgICBidWZmZXIgPSBBcnJh
eUJ1ZmZlcjo6Y3JlYXRlKG1fc2FtcGxlSW5wdXRCdWZmZXIuZGF0YSgpLCBtX3NhbXBsZUlucHV0
QnVmZmVyLnNpemUoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZl
ci5jcHAKaW5kZXggYzY4MTg3MDQyZDY3MDVmNzgyNmI4NTI1YTI0NzY4OGQ1NmRlZDA1My4uZWU2
YTVkMmVlZDZhM2Y5N2U3NDY4Y2FiOTZlOWVlMzRkNmI4MzA2ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1
ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKQEAgLTcwMiw3ICs3MDIsNyBAQCBJdGVtQnVm
ZmVySGFuZGxlIEl0ZW1CdWZmZXI6OmNyZWF0ZUl0ZW1CdWZmZXIoc2l6ZV90IGNhcGFjaXR5KQog
ICAgIGNvbnN0ZXhwciBzaXplX3QgZGVmYXVsdEl0ZW1CdWZmZXJDYXBhY2l0eSA9IDEgPDwgMTA7
CiAKICAgICBhdXRvIG5ld0J1ZmZlckNhcGFjaXR5ID0gc3RkOjptYXgoY2FwYWNpdHksIGRlZmF1
bHRJdGVtQnVmZmVyQ2FwYWNpdHkpOwotICAgIGF1dG8qIGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDhfdCo+KGZhc3RNYWxsb2MobmV3QnVmZmVyQ2FwYWNpdHkpKTsKKyAgICBhdXRvKiBi
dWZmZXIgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oZmFzdE1hbGxvYyhuZXdCdWZmZXJDYXBhY2l0
eSkpOwogICAgIG1fYWxsb2NhdGVkQnVmZmVycy5hcHBlbmQoYnVmZmVyKTsKICAgICByZXR1cm4g
eyBJdGVtQnVmZmVySWRlbnRpZmllcjo6Z2VuZXJhdGUoKSwgYnVmZmVyLCBuZXdCdWZmZXJDYXBh
Y2l0eSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuY3BwCmluZGV4
IDBhZWYxMjhhYjNiNWI0YjViMDIwMTgwMzMyMmMwNDQ5MzE2N2U1MjQuLmEwYzgyMTRkZDM2NTI2
YTExNzI1YTJmOTY3YzQ3YTFkNjUwYTEwMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVyYXRvci5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBEaXNwbGF5TGlzdDo6SXRlcmF0
b3I6OnVwZGF0ZUN1cnJlbnRJdGVtKCkKICAgICB9CiAKICAgICBhdXRvIHBhZGRlZFNpemVPZlR5
cGVBbmRJdGVtID0gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW1JbkJ5dGVzKGl0ZW1UeXBlKTsKLSAg
ICBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtID0gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW0gPD0gc2l6
ZU9mRml4ZWRCdWZmZXJGb3JDdXJyZW50SXRlbSA/IG1fZml4ZWRCdWZmZXJGb3JDdXJyZW50SXRl
bSA6IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGZhc3RNYWxsb2MocGFkZGVkU2l6ZU9mVHlw
ZUFuZEl0ZW0pKTsKKyAgICBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtID0gcGFkZGVkU2l6ZU9mVHlw
ZUFuZEl0ZW0gPD0gc2l6ZU9mRml4ZWRCdWZmZXJGb3JDdXJyZW50SXRlbSA/IG1fZml4ZWRCdWZm
ZXJGb3JDdXJyZW50SXRlbSA6IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihmYXN0TWFsbG9jKHBhZGRl
ZFNpemVPZlR5cGVBbmRJdGVtKSk7CiAgICAgaWYgKGlzSW5saW5lSXRlbShpdGVtVHlwZSkpIHsK
ICAgICAgICAgaWYgKFVOTElLRUxZKHN0YXRpY19jYXN0PHVpbnQ2NF90PihtX2N1cnJlbnRFbmRP
ZkJ1ZmZlciAtIG1fY3Vyc29yKSA8IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtKSkgewogICAgICAg
ICAgICAgbV9pc1ZhbGlkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCmluZGV4IDQyNzY0
NmMxZGIzMDA4NWViMzJjMDFkYTU3NDZkMmI5M2YwZTRkMjQuLjQyMTQ2ZTAzMjkzMjM2OTk3ODll
YjVlNDJhZjRjNzNkMzRhYjljYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oCkBAIC0yODUsOSAr
Mjg1LDkgQEAgcHJpdmF0ZToKICAgICBib29sIHBhcnNlKHNpemVfdCBkYXRhUG9zaXRpb24sIHNp
emVfdCBsZW4sIGJvb2wgcGFyc2VTaXplT25seSk7CiAgICAgdm9pZCBzZXRSZW1haW5pbmdCeXRl
cyhzaXplX3QpOwogCi0gICAgY29uc3QgdW5zaWduZWQgY2hhciogZGF0YShzaXplX3QgZGF0YVBv
c2l0aW9uKSBjb25zdAorICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoc2l6ZV90IGRhdGFQb3NpdGlv
bikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IHVu
c2lnbmVkIGNoYXIqPihtX2RhdGEtPmRhdGEoKSkgKyBkYXRhUG9zaXRpb247CisgICAgICAgIHJl
dHVybiBtX2RhdGEtPmRhdGEoKSArIGRhdGFQb3NpdGlvbjsKICAgICB9CiAKICAgICB2b2lkIGFk
ZEZyYW1lSWZOZWNlc3NhcnkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9TU0xLZXlHZW5lcmF0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
U1NMS2V5R2VuZXJhdG9yTWFjLm1tCmluZGV4IDhlOTVjNTQ2OWExYTk2M2M2ZGNkYmRmMTM4ODJi
MDczYjJmMDM3NTkuLjEwMGRhY2IwMDUxN2Q2ZWVlNmI1ZGQ3YTAyNWNiMWIxMDRmNjBmMjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5t
bQpAQCAtMTg5LDcgKzE4OSw3IEBAIHN0YXRpYyBTdHJpbmcgc2lnbmVkUHVibGljS2V5QW5kQ2hh
bGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemUsIGNvbnN0IENTdHJpbmcmCiAKICAgICAvLyBM
ZW5ndGggbmVlZHMgdG8gYWNjb3VudCBmb3IgdGhlIG51bGwgdGVybWluYXRvci4KICAgICBzaWdu
ZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2UucHVibGljS2V5QW5kQ2hhbGxlbmdlLmNoYWxsZW5nZS5M
ZW5ndGggPSBjaGFsbGVuZ2UubGVuZ3RoKCkgKyAxOwotICAgIHNpZ25lZFB1YmxpY0tleUFuZENo
YWxsZW5nZS5wdWJsaWNLZXlBbmRDaGFsbGVuZ2UuY2hhbGxlbmdlLkRhdGEgPSByZWludGVycHJl
dF9jYXN0PHVpbnQ4X3QqPihjb25zdF9jYXN0PGNoYXIqPihjaGFsbGVuZ2UuZGF0YSgpKSk7Cisg
ICAgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlLnB1YmxpY0tleUFuZENoYWxsZW5nZS5jaGFs
bGVuZ2UuRGF0YSA9IGNvbnN0X2Nhc3Q8dWludDhfdCo+KGNoYWxsZW5nZS5jaGFyYWN0ZXJzOCgp
KTsKIAogICAgIENTU01fREFUQSBlbmNvZGVkUHVibGljS2V5QW5kQ2hhbGxlbmdlIHsgMCwgbnVs
bHB0ciB9OwogICAgIGlmIChTZWNBc24xRW5jb2RlSXRlbShjb2RlciwgJnNpZ25lZFB1YmxpY0tl
eUFuZENoYWxsZW5nZS5wdWJsaWNLZXlBbmRDaGFsbGVuZ2UsIHB1YmxpY0tleUFuZENoYWxsZW5n
ZVRlbXBsYXRlLCAmZW5jb2RlZFB1YmxpY0tleUFuZENoYWxsZW5nZSkgIT0gbm9FcnIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCmluZGV4IGRmMjE3ZGJhZWNkNDYxYTlkOWJlMzhm
NTViYzc5MzU1ZGIyYjJiMTcuLmY4ODM4MDI4MThhOTdlY2NjMjg0YWZlMzdhNjNiOGIxODU3MTkw
NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCkBAIC0xNDUsNyArMTQ1LDcg
QEAgc3RhdGljIHZvaWQgYWRkU3RyaW5nVG9TSEExKFNIQTEmIHNoYTEsIGNvbnN0IFN0cmluZyYg
c3RyaW5nKQogICAgIH0KIAogICAgIGF1dG8gdXRmOCA9IHN0cmluZy51dGY4KCk7Ci0gICAgc2hh
MS5hZGRCeXRlcyhyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih1dGY4LmRhdGEoKSks
IHV0ZjgubGVuZ3RoKCkgKyAxKTsgLy8gSW5jbHVkZSB0ZXJtaW5hdGluZyBudWxsIGJ5dGUuCisg
ICAgc2hhMS5hZGRCeXRlcyh1dGY4LmNoYXJhY3RlcnM4KCksIHV0ZjgubGVuZ3RoKCkgKyAxKTsg
Ly8gSW5jbHVkZSB0ZXJtaW5hdGluZyBudWxsIGJ5dGUuCiB9CiAKIFN0cmluZyBSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyOjpoYXNoU3RyaW5nV2l0aFNhbHQoY29uc3QgU3RyaW5nJiBpZCwgY29u
c3QgU3RyaW5nJiBoYXNoU2FsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGFCdWlsZGVyLmNwcAppbmRleCA3ZTNkMWI5MWYwNjM3NGU5ODRjZjUxZThj
NzdjNGY3MGQ5MjFkZmE5Li5kMWExZjRmMjAzYWZhZmFiZWI3NmZjNjJlNGE1MzZlNWM4MTEyMmNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVp
bGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1
aWxkZXIuY3BwCkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBhZGRLZXlWYWx1ZVBhaXJBc0Zvcm1E
YXRhKFZlY3RvcjxjaGFyPiYgYnVmZmVyLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwKIAog
dm9pZCBlbmNvZGVTdHJpbmdBc0Zvcm1EYXRhKFZlY3RvcjxjaGFyPiYgYnVmZmVyLCBjb25zdCBD
U3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgYXBwZW5kRm9ybVVSTEVuY29kZWQoYnVmZmVyLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzdHJpbmcuZGF0YSgpKSwgc3RyaW5nLmxlbmd0
aCgpKTsKKyAgICBhcHBlbmRGb3JtVVJMRW5jb2RlZChidWZmZXIsIHN0cmluZy5jaGFyYWN0ZXJz
OCgpLCBzdHJpbmcubGVuZ3RoKCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5jcHAKaW5kZXggNmRlMWEzZjhh
MWY5YjYzZDFlNzFmYjNhYTdjZTQyNTM0MWE2NTFkOS4uYzgyMjJiODljYjYwYzViOTE0YTAwYTU4
Mjc1ZjA2ODQ4NTk0ZGNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlLmNwcApAQCAtNjEsNyArNjEsNyBAQCB2b2lkIFNv
Y2tldFN0cmVhbUhhbmRsZTo6c2VuZEhhbmRzaGFrZShDU3RyaW5nJiYgaGFuZHNoYWtlLCBzdGQ6
Om9wdGlvbmFsPENvb2tpZQogewogICAgIGlmIChtX3N0YXRlID09IENvbm5lY3RpbmcgfHwgbV9z
dGF0ZSA9PSBDbG9zaW5nKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2Us
IGZhbHNlKTsKLSAgICBwbGF0Zm9ybVNlbmRIYW5kc2hha2UocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oaGFuZHNoYWtlLmRhdGEoKSksIGhhbmRzaGFrZS5sZW5ndGgoKSwgV1RGTW92
ZShoZWFkZXJGaWVsZFByb3h5KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIHBs
YXRmb3JtU2VuZEhhbmRzaGFrZShoYW5kc2hha2UuY2hhcmFjdGVyczgoKSwgaGFuZHNoYWtlLmxl
bmd0aCgpLCBXVEZNb3ZlKGhlYWRlckZpZWxkUHJveHkpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9CiAKIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpjbG9zZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0
Q0ZOZXQuY3BwCmluZGV4IGI3ZWY1Yjg3NTg0ZmZiYjY2YWY3ZDlhMTEzZjQzMDZkOTE1YTE2OWIu
LjM4NzUzY2RlYjZjMjczYjFjYjFjMjEzOTkxZjE0MmRmZWUwOTE3YjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0
Q0ZOZXQuY3BwCkBAIC0yMjgsNyArMjI4LDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBk
YXRlUGxhdGZvcm1SZXF1ZXN0KCkKICAgICBTdHJpbmcgcGFydGl0aW9uID0gY2FjaGVQYXJ0aXRp
b24oKTsKICAgICBpZiAoIXBhcnRpdGlvbi5pc051bGwoKSAmJiAhcGFydGl0aW9uLmlzRW1wdHko
KSkgewogICAgICAgICBDU3RyaW5nIHV0ZjhTdHJpbmcgPSBwYXJ0aXRpb24udXRmOCgpOwotICAg
ICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBhcnRpdGlvblZhbHVlID0gYWRvcHRDRihDRlN0
cmluZ0NyZWF0ZVdpdGhCeXRlcygwLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4odXRm
OFN0cmluZy5kYXRhKCkpLCB1dGY4U3RyaW5nLmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VU
RjgsIGZhbHNlKSk7CisgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcGFydGl0aW9uVmFs
dWUgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzKDAsIHV0ZjhTdHJpbmcuY2hhcmFj
dGVyczgoKSwgdXRmOFN0cmluZy5sZW5ndGgoKSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBmYWxz
ZSkpOwogICAgICAgICBfQ0ZVUkxSZXF1ZXN0U2V0UHJvdG9jb2xQcm9wZXJ0eShjZlJlcXVlc3Qu
Z2V0KCksIF9rQ0ZVUkxDYWNoZVBhcnRpdGlvbktleSwgcGFydGl0aW9uVmFsdWUuZ2V0KCkpOwog
ICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5oCmluZGV4IGJjYzYyMjg2NjBlMzg2OGVjN2Mx
YTZiNDdkZWUxZWQ3MWJmMDNkOWMuLmY3MGFjNGU3NTlmYjI1YWExYjAwNjhlMTE1OTNlZDBlOTZk
YmU0ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVz
b3VyY2VSZXF1ZXN0Q0ZOZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmgKQEAgLTEzMSw3ICsxMzEsNyBAQCBpbmxpbmUgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBodHRwSGVhZGVyVmFsdWVVc2luZ1N1aXRhYmxlRW5jb2Rpbmco
SFRUUEhlYWRlck1hcAogICAgIGlmIChoZWFkZXIua2V5QXNIVFRQSGVhZGVyTmFtZSAmJiAqaGVh
ZGVyLmtleUFzSFRUUEhlYWRlck5hbWUgPT0gSFRUUEhlYWRlck5hbWU6Okxhc3RFdmVudElEICYm
ICFoZWFkZXIudmFsdWUuaXNBbGxBU0NJSSgpKSB7CiAgICAgICAgIGF1dG8gdXRmOFZhbHVlID0g
aGVhZGVyLnZhbHVlLnV0ZjgoKTsKICAgICAgICAgLy8gQ29uc3RydWN0aW5nIGEgc3RyaW5nIHdp
dGggdGhlIFVURi04IGJ5dGVzIGJ1dCBjbGFpbWluZyB0aGF0IGl04oCZcyBMYXRpbi0xIGlzIHRo
ZSB3YXkgdG8gZ2V0IENGTmV0d29yayB0byBwdXQgdGhvc2UgVVRGLTggYnl0ZXMgb24gdGhlIHdp
cmUuCi0gICAgICAgIHJldHVybiBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzKG51bGxw
dHIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPih1dGY4VmFsdWUuZGF0YSgpKSwgdXRm
OFZhbHVlLmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgZmFsc2UpKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXMobnVsbHB0ciwgdXRm
OFZhbHVlLmNoYXJhY3RlcnM4KCksIHV0ZjhWYWx1ZS5sZW5ndGgoKSwga0NGU3RyaW5nRW5jb2Rp
bmdJU09MYXRpbjEsIGZhbHNlKSk7CiAgICAgfQogICAgIHJldHVybiBoZWFkZXIudmFsdWUuY3Jl
YXRlQ0ZTdHJpbmcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcAppbmRl
eCBkMTM3OTQ5OGFhYjgxZWUyY2E3YWEwODliMWI1MGY5OTVjMjgyOTQ3Li41NWI5ZjFlZDRhMGQz
MjVhNmIxNmExMTQzODlmMzljN2RlZDM2Y2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBs
Q0ZOZXQuY3BwCkBAIC03MjIsNyArNzIyLDcgQEAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IFNvY2tl
dFN0cmVhbUhhbmRsZUltcGw6OnBsYXRmb3JtU2VuZEludGVybmFsKGNvbnN0IHVpbnQ4X3QKICAg
ICBpZiAoIUNGV3JpdGVTdHJlYW1DYW5BY2NlcHRCeXRlcyhtX3dyaXRlU3RyZWFtLmdldCgpKSkK
ICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBDRkluZGV4IHJlc3VsdCA9IENGV3JpdGVTdHJlYW1X
cml0ZShtX3dyaXRlU3RyZWFtLmdldCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4o
ZGF0YSksIGxlbmd0aCk7CisgICAgQ0ZJbmRleCByZXN1bHQgPSBDRldyaXRlU3RyZWFtV3JpdGUo
bV93cml0ZVN0cmVhbS5nZXQoKSwgZGF0YSwgbGVuZ3RoKTsKICAgICBpZiAocmVzdWx0ID09IC0x
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAppbmRleCAwNWI0
ZTI5YmM5MzFjMTQzNDViNDc5NTk4YmFlZTY3ZWI0YjY4YzJhLi5kMDliN2I1ZGNiMTg0MDU5NDdl
YWVjM2JlZjRhMzBhNWFjNTI0NmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKQEAgLTIxMSw3ICsyMTEsNyBA
QCB2b2lkIEN1cmxDYWNoZUVudHJ5OjpkaWRGaW5pc2hMb2FkaW5nKCkKIHZvaWQgQ3VybENhY2hl
RW50cnk6OmdlbmVyYXRlQmFzZUZpbGVuYW1lKGNvbnN0IENTdHJpbmcmIHVybCkKIHsKICAgICBT
SEExIHNoYTE7Ci0gICAgc2hhMS5hZGRCeXRlcyhyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPih1cmwuZGF0YSgpKSwgdXJsLmxlbmd0aCgpKTsKKyAgICBzaGExLmFkZEJ5dGVzKHVybC5j
aGFyYWN0ZXJzOCgpLCB1cmwubGVuZ3RoKCkpOwogCiAgICAgU0hBMTo6RGlnZXN0IHN1bTsKICAg
ICBzaGExLmNvbXB1dGVIYXNoKHN1bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Nx
bC9TUUxpdGVTdGF0ZW1lbnQuY3BwCmluZGV4IDZkOGRjNzJlZGNiZDQyODg3ZTY3NzVhMTYwMjg1
NDdhOTdjNjMxYjkuLjJkODBmM2IxYjc3NGE4NTNjZjIxMjc1NzBkZjE4ODA1MTJhMmQwMjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCkBA
IC0zMDQsNyArMzA0LDcgQEAgYXV0byBTUUxpdGVTdGF0ZW1lbnQ6OmNvbHVtbkJsb2JWaWV3KGlu
dCBjb2wpIC0+IEJsb2JWaWV3CiAgICAgaWYgKGJsb2JTaXplIDw9IDApCiAgICAgICAgIHJldHVy
biB7IH07CiAKLSAgICByZXR1cm4geyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihi
bG9iKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihibG9iU2l6ZSkgfTsKKyAgICByZXR1cm4geyBzdGF0
aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYmxvYiksIHN0YXRpY19jYXN0PHNpemVfdD4oYmxvYlNp
emUpIH07CiB9CiAKIGJvb2wgU1FMaXRlU3RhdGVtZW50OjpoYXNTdGFydGVkU3RlcHBpbmcoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAppbmRleCA5OTJlNGMxM2E3
ZWU4ZWU0N2U4NDkxZjdiOGUzMDQyMGVkM2VlMjFkLi5iYzMyNDZiZjZiMmMyMDYzOGJmYjQyMjVj
ZjcwZDUxYThmYjMwZjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
RE1GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5
LmNwcApAQCAtMjEzLDcgKzIxMyw3IEBAIGJvb2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YShj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlCiAKIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IE1vY2tDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVm
ZmVyJiByZXNwb25zZSkgY29uc3QKIHsKLSAgICBpZiAoIWNoYXJhY3RlcnNBcmVBbGxBU0NJSShy
ZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4ocmVzcG9uc2UuZGF0YSgpKSwgcmVzcG9uc2Uu
c2l6ZSgpKSkKKyAgICBpZiAoIWNoYXJhY3RlcnNBcmVBbGxBU0NJSShyZXNwb25zZS5kYXRhKCks
IHJlc3BvbnNlLnNpemUoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgVmVjdG9y
PFN0cmluZz4gcmVzcG9uc2VBcnJheSA9IFN0cmluZyhyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNl
LnNpemUoKSkuc3BsaXQoJyAnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0
L0hUVFBQYXJzZXIuY3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRUUFBhcnNlci5jcHAK
aW5kZXggN2E1YjIyOGQ1ZmY3MTQ2ZGE3YjExNzdjYjE0Y2JhNGU0MzBiMzdmYS4uYzgyYWQ5NTdm
NzEzYzNhZTc2OTRjZTg2M2U1NzU0NTAyYmMwMjc0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRy
aXZlci9zb2NrZXQvSFRUUFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQv
SFRUUFBhcnNlci5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCBib29sIEhUVFBQYXJzZXI6OnJlYWRM
aW5lKFN0cmluZyYgbGluZSkKICAgICBpZiAocG9zaXRpb24gPT0gbm90Rm91bmQgfHwgcG9zaXRp
b24gKyAxID09IGxlbmd0aCB8fCBtX2J1ZmZlcltwb3NpdGlvbiArIDFdICE9IDB4MGEpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGxpbmUgPSBTdHJpbmc6OmZyb21VVEY4KHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KG1fYnVmZmVyLmRhdGEoKSksIHBvc2l0aW9uKTsKKyAgICBsaW5lID0g
U3RyaW5nOjpmcm9tVVRGOChtX2J1ZmZlci5kYXRhKCksIHBvc2l0aW9uKTsKICAgICBpZiAobGlu
ZS5pc051bGwoKSkKICAgICAgICAgTE9HX0VSUk9SKCJDbGllbnQgZXJyb3I6IGludmFsaWQgZW5j
b2RpbmcgaW4gSFRUUCBoZWFkZXIuIik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIv
c29ja2V0L1Nlc3Npb25Ib3N0U29ja2V0LmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L1Nl
c3Npb25Ib3N0U29ja2V0LmNwcAppbmRleCAwZjY1NjY4ZmMyZmI4OWZkNGVhYTdkYzQxNDg3YmYx
ZDYxMjBjYWYwLi44MjRmOTAyOTA3YTk0YjhkYmE1YjM4MGE1N2JhYzUwYmZmNWY2ZjUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9TZXNzaW9uSG9zdFNvY2tldC5jcHAKKysr
IGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvU2Vzc2lvbkhvc3RTb2NrZXQuY3BwCkBAIC01MCw3
ICs1MCw3IEBAIHZvaWQgU2Vzc2lvbkhvc3Q6OnNlbmRXZWJJbnNwZWN0b3JFdmVudChjb25zdCBT
dHJpbmcmIGV2ZW50KQogICAgICAgICByZXR1cm47CiAKICAgICBjb25zdCBDU3RyaW5nIG1lc3Nh
Z2UgPSBldmVudC51dGY4KCk7Ci0gICAgc2VuZChtX2NsaWVudElELnZhbHVlKCksIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1lc3NhZ2UuZGF0YSgpKSwgbWVzc2FnZS5sZW5ndGgo
KSk7CisgICAgc2VuZChtX2NsaWVudElELnZhbHVlKCksIG1lc3NhZ2UuY2hhcmFjdGVyczgoKSwg
bWVzc2FnZS5sZW5ndGgoKSk7CiB9CiAKIHZvaWQgU2Vzc2lvbkhvc3Q6OmNvbm5lY3RUb0Jyb3dz
ZXIoRnVuY3Rpb248dm9pZCAoc3RkOjpvcHRpb25hbDxTdHJpbmc+IGVycm9yKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAppbmRleCA0ZjU4ZWQxYzU0MGVlYThhYmMyOTc2
Y2M4MTVmNzg2ZjJkMDY2ODA5Li5iMDdlMzU2MWU5YjdmYmQ4ODk0Yjg1MTczM2Y3NmI5NjYzNDc3
NzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCkBAIC02OTEsNyArNjkxLDcgQEAgdm9pZCBSZW1vdGVN
ZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllcktleU5lZWRlZChVaW50OEFycmF5KiBtZXNzYWdl
KQogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJv
eHk6Om1lZGlhUGxheWVySW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoY29uc3QgU3RyaW5n
JiBpbml0RGF0YVR5cGUsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJiBpbml0RGF0YSkKIHsKLSAgICBt
X3dlYlByb2Nlc3NDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OkluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGluaXREYXRhVHlwZSwgSVBDOjpE
YXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGluaXREYXRhLT5kYXRhKCkp
LCBpbml0RGF0YS0+Ynl0ZUxlbmd0aCgpKSksIG1faWQpOworICAgIG1fd2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6SW5pdGlhbGl6
YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGFUeXBlLCBJUEM6OkRhdGFSZWZlcmVuY2Uoc3Rh
dGljX2Nhc3Q8dWludDhfdCo+KGluaXREYXRhLT5kYXRhKCkpLCBpbml0RGF0YS0+Ynl0ZUxlbmd0
aCgpKSksIG1faWQpOwogfQogCiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxh
eWVyV2FpdGluZ0ZvcktleUNoYW5nZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5jcHAKaW5kZXggOWVjNTVmNjE2ZjU4
NDNiNmM4MDI3YmMxOWRhN2E2MDU4ZDRhYTYwNC4uYjQxYTAyODFmODU4YTEyMmUwZmFhNmJiNzE5
NGVlNTMwY2M5ZjFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZVRleHRUcmFja1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBS
ZW1vdGVUZXh0VHJhY2tQcm94eTo6YWRkRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBj
b25zdCBNZWRpYVRpbWUmIGUKICAgICBpZiAoIW1fY29ubmVjdGlvblRvV2ViUHJvY2VzcykKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpBZGREYXRhQ3VlKG1f
aWRlbnRpZmllciwgc3RhcnQsIGVuZCwgSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpKSwgbV9tZWRpYVBsYXllcklkZW50aWZp
ZXIpOworICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6QWRkRGF0YUN1ZShtX2lkZW50aWZpZXIs
IHN0YXJ0LCBlbmQsIElQQzo6RGF0YVJlZmVyZW5jZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
Kj4oZGF0YSksIGxlbmd0aCkpLCBtX21lZGlhUGxheWVySWRlbnRpZmllcik7CiB9CiAKICNpZiBF
TkFCTEUoREFUQUNVRV9WQUxVRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCmluZGV4IGFiYWE1YmJjNGQ4NDEwNGZh
YTkzMmVjN2E4ZDQyNTc3ZGI4OWZmMmYuLjhjMTI1NDlmMTQzMjg5ZmYxZjJkYmIzNjQ1ODdjMmY2
OGVhY2E2YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVt
b3RlTWVkaWFSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0
Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgUmVtb3Rl
TWVkaWFSZWNvcmRlcjo6dmlkZW9TYW1wbGVBdmFpbGFibGUoV2ViQ29yZTo6UmVtb3RlVmlkZW9T
YW1wbGUmJiByZW1vCiB2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OmZldGNoRGF0YShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKElQQzo6RGF0YVJlZmVyZW5jZSYmLCBkb3VibGUpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIG1fd3JpdGVyLT5mZXRjaERhdGEoW2NvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1dG8mJiBkYXRhLCBhdXRvIHRpbWVDb2Rl
KSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byogcG9pbnRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGRhdGEgPyBkYXRhLT5kYXRhKCkgOiBudWxscHRyKTsKKyAgICAgICAgYXV0
byogcG9pbnRlciA9IGRhdGEgPyBkYXRhLT5kYXRhKCkgOiBudWxscHRyOwogICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihJUEM6OkRhdGFSZWZlcmVuY2UgeyBwb2ludGVyLCBkYXRhID8gZGF0YS0+
c2l6ZSgpIDogMCB9LCB0aW1lQ29kZSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGFDdXJsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YUN1cmwuY3Bw
CmluZGV4IDE5MjQ4MmJmOWY0MzRkYzE5OWQzN2FkNDExODI5NGFlMTlkYzY2Y2EuLjhiZWE4ODkz
YWJhYTc4MTk3ZTY1ODU2ZjI0NTU1ZjdhZmRmNTc4MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YUN1cmwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YUN1cmwuY3Bw
CkBAIC03Myw3ICs3Myw3IEBAIGJvb2wgRGF0YTo6YXBwbHkoY29uc3QgRnVuY3Rpb248Ym9vbChj
b25zdCB1aW50OF90Kiwgc2l6ZV90KT4mIGFwcGxpZXIpIGNvbnN0CiAgICAgaWYgKGlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIGFwcGxpZXIocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSgpKSwgc2l6ZSgpKTsKKyAgICByZXR1cm4gYXBw
bGllcihkYXRhKCksIHNpemUoKSk7CiB9CiAKIERhdGEgRGF0YTo6c3VicmFuZ2Uoc2l6ZV90IG9m
ZnNldCwgc2l6ZV90IHNpemUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUtleS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUtleS5jcHAKaW5kZXggZjhmMzQxMGRjYTA1YWEx
OTQxNmNiYzQ4NTE1ZmEwZWUzNGJjY2UyYS4uZTc5ZjFkNGFkNDcwYTI1MTAyNDA1NzE5YzY0ZjQz
MWI3NzdkNzY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlS2V5LmNwcApAQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMgdm9pZCBo
YXNoU3RyaW5nKFNIQTEmIHNoYTEsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIH0KICAgICBh
dXRvIGNTdHJpbmcgPSBzdHJpbmcudXRmOCgpOwogICAgIC8vIEluY2x1ZGUgdGVybWluYXRpbmcg
bnVsbCBieXRlLgotICAgIHNoYTEuYWRkQnl0ZXMocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4oY1N0cmluZy5kYXRhKCkpLCBjU3RyaW5nLmxlbmd0aCgpICsgMSk7CisgICAgc2hhMS5h
ZGRCeXRlcyhjU3RyaW5nLmNoYXJhY3RlcnM4KCksIGNTdHJpbmcubGVuZ3RoKCkgKyAxKTsKIH0K
IAogS2V5OjpIYXNoVHlwZSBLZXk6OmNvbXB1dGVIYXNoKGNvbnN0IFNhbHQmIHNhbHQpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViS2l0RGly
ZWN0b3J5SW5wdXRTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3Vw
L1dlYktpdERpcmVjdG9yeUlucHV0U3RyZWFtLmNwcAppbmRleCAxNDU0YTFmMDZjN2VkODhjYmFi
NjY2OWFhZWZkNDYyYjkzYWI2Y2UwLi5jZjJhZjkxMjIzZDgwNGJhZTQ3MmU0NzY2NDAxM2FhMTBh
MGE1MGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2Vi
S2l0RGlyZWN0b3J5SW5wdXRTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc291cC9XZWJLaXREaXJlY3RvcnlJbnB1dFN0cmVhbS5jcHAKQEAgLTE1MSw3ICsxNTEs
NyBAQCBzdGF0aWMgZ3NzaXplIHdlYmtpdERpcmVjdG9yeUlucHV0U3RyZWFtUmVhZChHSW5wdXRT
dHJlYW0qIGlucHV0LCB2b2lkKiBidWZmZXIsCiAgICAgICAgIGdzaXplIGJ1ZmZlclNpemU7CiAg
ICAgICAgIGF1dG8qIGJ1ZmZlckRhdGEgPSBnX2J5dGVzX2dldF9kYXRhKHN0cmVhbS0+cHJpdi0+
YnVmZmVyLmdldCgpLCAmYnVmZmVyU2l6ZSk7CiAgICAgICAgIGdzaXplIGJ5dGVzUmVhZCA9IHN0
ZDo6bWluKGJ1ZmZlclNpemUsIGNvdW50IC0gdG90YWxCeXRlc1JlYWQpOwotICAgICAgICBtZW1j
cHkocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oYnVmZmVyKSArIHRvdGFsQnl0ZXNSZWFkLCBidWZm
ZXJEYXRhLCBieXRlc1JlYWQpOworICAgICAgICBtZW1jcHkoc3RhdGljX2Nhc3Q8Y2hhcio+KGJ1
ZmZlcikgKyB0b3RhbEJ5dGVzUmVhZCwgYnVmZmVyRGF0YSwgYnl0ZXNSZWFkKTsKICAgICAgICAg
aWYgKGJ5dGVzUmVhZCA9PSBidWZmZXJTaXplKQogICAgICAgICAgICAgc3RyZWFtLT5wcml2LT5i
dWZmZXIgPSBudWxscHRyOwogICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Bcmd1bWVudENvZGVycy5jcHAKaW5kZXggNzQ2NDI4MTNmNDc4MTk2YzBjNzhjZWI3ODdl
MzY2ZGMyOGRjOTI2Mi4uMWFmOWVlYTZhYWQ0NjJkYTFkYzg1MWQ3ODYyMWYzNjhmZDUwMDI4MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcApAQCAt
ODIsNyArODIsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8Q1N0cmluZz46OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBDU3RyaW5nJiBzdHJpbmcpCiAKICAgICB1aW50MzJfdCBsZW5ndGgg
PSBzdHJpbmcubGVuZ3RoKCk7CiAgICAgZW5jb2RlciA8PCBsZW5ndGg7Ci0gICAgZW5jb2Rlci5l
bmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oc3Ry
aW5nLmRhdGEoKSksIGxlbmd0aCwgMSk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERh
dGEoc3RyaW5nLmNoYXJhY3RlcnM4KCksIGxlbmd0aCwgMSk7CiB9CiAKIFdBUk5fVU5VU0VEX1JF
VFVSTiBib29sIEFyZ3VtZW50Q29kZXI8Q1N0cmluZz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
LCBDU3RyaW5nJiByZXN1bHQpCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBBcmd1bWVudENvZGVy
PFN0cmluZz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTdHJpbmcmIHN0cmluZykK
ICAgICBlbmNvZGVyIDw8IGxlbmd0aCA8PCBpczhCaXQ7CiAKICAgICBpZiAoaXM4Qml0KQotICAg
ICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihzdHJpbmcuY2hhcmFjdGVyczgoKSksIGxlbmd0aCAqIHNpemVvZihMQ2hhciks
IGFsaWdub2YoTENoYXIpKTsKKyAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEo
c3RyaW5nLmNoYXJhY3RlcnM4KCksIGxlbmd0aCAqIHNpemVvZihMQ2hhciksIGFsaWdub2YoTENo
YXIpKTsKICAgICBlbHNlCiAgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0cmluZy5jaGFyYWN0ZXJzMTYoKSksIGxl
bmd0aCAqIHNpemVvZihVQ2hhciksIGFsaWdub2YoVUNoYXIpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NmL1dLU3RyaW5nQ0YubW0gYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvYy9jZi9XS1N0cmluZ0NGLm1tCmluZGV4IDgyNmZlNmI1MGUwOWJkMTBkOTRh
YzRhYTQ3OGRkYWRjYmVmZjUwZmUuLmQxNzhmMDE2ZGYzZjhhMzA3MzU2NTM2OGViYTNkMGY4OTFk
YWJlMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NmL1dLU3RyaW5n
Q0YubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2YvV0tTdHJpbmdDRi5tbQpA
QCAtNTcsNiArNTcsNiBAQCBDRlN0cmluZ1JlZiBXS1N0cmluZ0NvcHlDRlN0cmluZyhDRkFsbG9j
YXRvclJlZiBhbGxvY2F0b3JSZWYsIFdLU3RyaW5nUmVmIHN0cmluZwogICAgIC8vIE5PVEU6IFRo
aXMgZG9lcyBub3QgdXNlIFN0cmluZ0ltcGw6OmNyZWF0ZUNGU3RyaW5nKCkgc2luY2UgdGhhdCBm
dW5jdGlvbgogICAgIC8vIGV4cGVjdHMgdG8gYmUgY2FsbGVkIG9uIHRoZSB0aHJlYWQgcnVubmlu
ZyBXZWJDb3JlLgogICAgIGlmIChXZWJLaXQ6OnRvSW1wbChzdHJpbmdSZWYpLT5zdHJpbmcoKS5p
czhCaXQoKSkKLSAgICAgICAgcmV0dXJuIENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzKGFsbG9jYXRv
clJlZiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KFdlYktpdDo6dG9JbXBsKHN0cmlu
Z1JlZiktPnN0cmluZygpLmNoYXJhY3RlcnM4KCkpLCBXZWJLaXQ6OnRvSW1wbChzdHJpbmdSZWYp
LT5zdHJpbmcoKS5sZW5ndGgoKSwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIHRydWUpOwor
ICAgICAgICByZXR1cm4gQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXMoYWxsb2NhdG9yUmVmLCBXZWJL
aXQ6OnRvSW1wbChzdHJpbmdSZWYpLT5zdHJpbmcoKS5jaGFyYWN0ZXJzOCgpLCBXZWJLaXQ6OnRv
SW1wbChzdHJpbmdSZWYpLT5zdHJpbmcoKS5sZW5ndGgoKSwga0NGU3RyaW5nRW5jb2RpbmdJU09M
YXRpbjEsIHRydWUpOwogICAgIHJldHVybiBDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKGFs
bG9jYXRvclJlZiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVbmlDaGFyKj4oV2ViS2l0Ojp0b0lt
cGwoc3RyaW5nUmVmKS0+c3RyaW5nKCkuY2hhcmFjdGVyczE2KCkpLCBXZWJLaXQ6OnRvSW1wbChz
dHJpbmdSZWYpLT5zdHJpbmcoKS5sZW5ndGgoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvYy9jZi9XS1VSTENGLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L2MvY2YvV0tVUkxDRi5tbQppbmRleCAxZDg1NmYwZDgxZGE3NTEwYTBmNmNiZTM2NGQyZmY1NDk1
YTY3NWMwLi4yN2NkYzUxZGIzYzlhYzljYjBlY2I1ZWYwNzNkMmI1NDNhMzVjOTJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZi9XS1VSTENGLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NmL1dLVVJMQ0YubW0KQEAgLTY3LDUgKzY3LDUgQEAgQ0ZV
UkxSZWYgV0tVUkxDb3B5Q0ZVUkwoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yUmVmLCBXS1VSTFJl
ZiBVUkxSZWYpCiAgICAgLy8gVVRGLTggd2hpY2ggdXNlcyBsZXNzIG1lbW9yeSBhbmQgaXMgd2hh
dCBXZWJLaXQgY2xpZW50cyBtaWdodCBleHBlY3QuCiAKICAgICBDU3RyaW5nIGJ1ZmZlciA9IHN0
cmluZy51dGY4KCk7Ci0gICAgcmV0dXJuIENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMo
bnVsbHB0ciwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGJ1ZmZlci5kYXRhKCkpLCBi
dWZmZXIubGVuZ3RoKCksIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgbnVsbHB0ciwgdHJ1ZSk7Cisg
ICAgcmV0dXJuIENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMobnVsbHB0ciwgYnVmZmVy
LmNoYXJhY3RlcnM4KCksIGJ1ZmZlci5sZW5ndGgoKSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBu
dWxscHRyLCB0cnVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJl
YWJsZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNl
LmNwcAppbmRleCA5NDZhZjQ3ZGZiN2U2MTFmMWFiNDQxNzM0YTliMGUxNDE5ZmJlZDgxLi4wYzBm
MDhmYmRlNTZhOWQ0MmVjOWY5NmJhMzhmYmU1MTI1NTZlMTY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCkBAIC04NCw3ICs4NCw3IEBAIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIoKQogCiAjaWYg
VVNFKENGKQogICAgIGF1dG8gZGVhbGxvY2F0b3IgPSBjcmVhdGVTaGFyZWFibGVSZXNvdXJjZURl
YWxsb2NhdG9yKHRoaXMpOwotICAgIGF1dG8gY2ZEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVX
aXRoQnl0ZXNOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBVSW50OCo+KGRhdGEoKSksIHN0YXRpY19jYXN0PENGSW5kZXg+KHNpemUoKSksIGRlYWxsb2Nh
dG9yLmdldCgpKSk7CisgICAgYXV0byBjZkRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZVdpdGhC
eXRlc05vQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkYXRhKCksIHN0YXRpY19jYXN0PENGSW5k
ZXg+KHNpemUoKSksIGRlYWxsb2NhdG9yLmdldCgpKSk7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKGNmRGF0YS5nZXQoKSk7CiAjZWxpZiBVU0UoR0xJQikKICAgICBHUmVmUHRyPEdC
eXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYoZ19ieXRlc19uZXdfd2l0aF9mcmVlX2Z1bmMoZGF0YSgp
LCBzaXplKCksIFtdKHZvaWQqIGRhdGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1NoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFy
ZWREaXNwbGF5TGlzdEhhbmRsZS5oCmluZGV4IDU4N2Q5M2U0ZjEyNWQ0N2MxNjkwZWRkMDdhYzJj
NzNlN2Q3OWYxNjkuLmNiNmFmYWJiMTU1ZTRiMTBkNzNmNDkwZTZjNjk2MWU2MmZkZWEwYjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaApAQCAt
NDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU2hhcmVkTWVtb3J5JiBzaGFyZWRNZW1v
cnkoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZE1lbW9yeS5nZXQoKTsgfQogCiAgICAgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7
IHJldHVybiBtX2lkZW50aWZpZXI7IH0KLSAgICB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oc2hhcmVkTWVtb3J5KCkuZGF0YSgpKTsgfQor
ICAgIHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDx1aW50OF90Kj4o
c2hhcmVkTWVtb3J5KCkuZGF0YSgpKTsgfQogCiAgICAgdWludDY0X3QgdW5yZWFkQnl0ZXMoKQog
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVu
dFJ1bGVMaXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudFJ1
bGVMaXN0LmNwcAppbmRleCA4NWYyMjNjZmJhYTAxYjllOWY1ZDgyMzIxOWIwYTkwMjkxMDcyN2E5
Li5mNDc0MTRlNTczNjU2Mzg2MTFkYzI1MzdmMTBjYzA0NzU2Zjc3MmE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3QuY3BwCkBAIC00
Niw3ICs0Niw3IEBAIFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0Ojp+V2ViQ29tcGlsZWRDb250
ZW50UnVsZUxpc3QoKQogCiBib29sIFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0Ojpjb25kaXRp
b25zQXBwbHlPbmx5VG9Eb21haW4oKSBjb25zdAogewotICAgIHJldHVybiAqcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50MzJfdCo+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1f
ZGF0YS5kYXRhLT5kYXRhKCkpICsgbV9kYXRhLmNvbmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbk9m
ZnNldCk7CisgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oc3Rh
dGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fZGF0YS5kYXRhLT5kYXRhKCkpICsgbV9kYXRhLmNv
bmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbk9mZnNldCk7CiB9CiAKIGNvbnN0IFdlYkNvcmU6OkNv
bnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZSogV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3Q6
OmZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJl
c3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNh
dGlvbkFzc2VydGlvblJlc3BvbnNlLmNwcAppbmRleCBjNzk3NmZmNTJlYThlMTVhYjY4MGE1NjNl
NDMxMDg2OGVjZDMxMDBlLi5lZWViZDliZDA1ZjU2M2FiNGI1NjM0ZmY0YWZiNmRkODdjYzRhMGIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGlj
YXRpb25Bc3NlcnRpb25SZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuY3BwCkBAIC01MCw3ICs1
MCw3IEBAIFJlZlB0cjxEYXRhPiBXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlOjp1
c2VySGFuZGxlKCkgY29uc3QKICAgICBSZWZQdHI8QVBJOjpEYXRhPiBkYXRhOwogICAgIGlmIChh
dXRvKiB1c2VySGFuZGxlID0gbV9yZXNwb25zZS0+dXNlckhhbmRsZSgpKSB7CiAgICAgICAgIHVz
ZXJIYW5kbGUtPnJlZigpOwotICAgICAgICBkYXRhID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0
Q29weWluZyhyZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPih1c2VySGFuZGxlLT5kYXRh
KCkpLCB1c2VySGFuZGxlLT5ieXRlTGVuZ3RoKCksIFtdICh1bnNpZ25lZCBjaGFyKiwgY29uc3Qg
dm9pZCogZGF0YSkgeworICAgICAgICBkYXRhID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29w
eWluZyhzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4odXNlckhhbmRsZS0+ZGF0YSgpKSwgdXNl
ckhhbmRsZS0+Ynl0ZUxlbmd0aCgpLCBbXSAodW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRh
dGEpIHsKICAgICAgICAgICAgIHN0YXRpY19jYXN0PEFycmF5QnVmZmVyKj4oY29uc3RfY2FzdDx2
b2lkKj4oZGF0YSkpLT5kZXJlZigpOwogICAgICAgICB9LCB1c2VySGFuZGxlKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCBiN2JkMDk4NTQ4MWNl
YTgxZjNlOWM0NmY4ZmQ1OGIyYjZjM2U3MWRjLi43MDJlZmIyOTlhNDFiMDEzYzg1NjkwNWU5ZTZi
ODAyNjI3NzBhZmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAK
QEAgLTI0MSw3ICsyNDEsNyBAQCBzdGF0aWMgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFGcm9tKGNv
bnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIGlmIChzdHJpbmcuaXNOdWxsKCkgfHwgIXN0cmlu
Zy5pczhCaXQoKSkKICAgICAgICAgcmV0dXJuIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4oc3RyaW5nLmNoYXJhY3RlcnMxNigpKSwgc3RyaW5nLmxlbmd0aCgpICogc2l6ZW9mKFVD
aGFyKSB9OwotICAgIHJldHVybiB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0
cmluZy5jaGFyYWN0ZXJzOCgpKSwgc3RyaW5nLmxlbmd0aCgpICogc2l6ZW9mKExDaGFyKSB9Owor
ICAgIHJldHVybiB7IHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkgKiBzaXpl
b2YoTENoYXIpIH07CiB9CiAKIHN0YXRpYyB2b2lkIGxvYWRTdHJpbmcoV0tQYWdlUmVmIHBhZ2VS
ZWYsIFdLU3RyaW5nUmVmIHN0cmluZ1JlZiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3Qg
U3RyaW5nJiBiYXNlVVJMLCBXS1R5cGVSZWYgdXNlckRhdGFSZWYpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vUmVkaXJlY3RTT0F1dGhv
cml6YXRpb25TZXNzaW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRo
b3JpemF0aW9uL1JlZGlyZWN0U09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbQppbmRleCBmYmVmNTQx
NWU4NmQ3MWVjMWY3ZjIxNzFmNGI2MjliYjZjYTMwNGVkLi4wOGM3ZWRkMzgxNTU2MTdjMjg1ZWE2
M2RhMzA5ZTFiNGM1Nzc5ODgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9TT0F1dGhvcml6YXRpb24vUmVkaXJlY3RTT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9SZWRpcmVj
dFNPQXV0aG9yaXphdGlvblNlc3Npb24ubW0KQEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBSZWRpcmVj
dFNPQXV0aG9yaXphdGlvblNlc3Npb246OmNvbXBsZXRlSW50ZXJuYWwoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmUKICAgICAgICAgaWYgKCFuYXZpZ2F0aW9uQWN0aW9uLT5pc1Byb2Nlc3NpbmdV
c2VyR2VzdHVyZSgpKSB7CiAgICAgICAgICAgICBwYWdlLT5zZXRTaG91bGRTdXBwcmVzc1NPQXV0
aG9yaXphdGlvbkluTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbigpOwogICAgICAgICAgICAg
YXV0byBodG1sID0gbWFrZVN0cmluZygiPHNjcmlwdD5sb2NhdGlvbiA9ICciLCByZXNwb25zZS5o
dHRwSGVhZGVyRmllbGRzKCkuZ2V0KEhUVFBIZWFkZXJOYW1lOjpMb2NhdGlvbiksICInPC9zY3Jp
cHQ+IikudXRmOCgpOwotICAgICAgICAgICAgYXV0byBkYXRhID0gSVBDOjpEYXRhUmVmZXJlbmNl
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGh0bWwuZGF0YSgpKSwgaHRtbC5sZW5n
dGgoKSk7CisgICAgICAgICAgICBhdXRvIGRhdGEgPSBJUEM6OkRhdGFSZWZlcmVuY2UoaHRtbC5j
aGFyYWN0ZXJzOCgpLCBodG1sLmxlbmd0aCgpKTsKICAgICAgICAgICAgIHBhZ2UtPmxvYWREYXRh
KGRhdGEsICJ0ZXh0L2h0bWwiX3MsICJVVEYtOCJfcywgbmF2aWdhdGlvbkFjdGlvbi0+cmVxdWVz
dCgpLnVybCgpLnN0cmluZygpLCBudWxscHRyLCBuYXZpZ2F0aW9uQWN0aW9uLT5zaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0L1JlbW90
ZUluc3BlY3RvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Iv
c29ja2V0L1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAKaW5kZXggZWI4NTU5ZTBjM2MzYmE2ZDg0
ZDJmMGExMmJhYWI2NDIyYTc1NTA1Ny4uMTA0MzA3MDY1ZmVjZWYxZjMyODZjM2QyZGRkMTNjMWMz
ZDczZmY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3Nv
Y2tldC9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcApAQCAtMTI0LDcg
KzEyNCw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yQ2xpZW50OjpzZW5kV2ViSW5zcGVjdG9yRXZl
bnQoY29uc3QgU3RyaW5nJiBldmVudCkKICAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKICAg
ICBBU1NFUlQobV9jb25uZWN0aW9uSUQpOwogICAgIGF1dG8gbWVzc2FnZSA9IGV2ZW50LnV0Zjgo
KTsKLSAgICBzZW5kKG1fY29ubmVjdGlvbklELnZhbHVlKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KG1lc3NhZ2UuZGF0YSgpKSwgbWVzc2FnZS5sZW5ndGgoKSk7CisgICAgc2Vu
ZChtX2Nvbm5lY3Rpb25JRC52YWx1ZSgpLCBtZXNzYWdlLmNoYXJhY3RlcnM4KCksIG1lc3NhZ2Uu
bGVuZ3RoKCkpOwogfQogCiBIYXNoTWFwPFN0cmluZywgSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0
b3JDb25uZWN0aW9uQ2xpZW50OjpDYWxsSGFuZGxlcj4mIFJlbW90ZUluc3BlY3RvckNsaWVudDo6
ZGlzcGF0Y2hNYXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCBkZDU2ZTc0ZWVlZGNjYTMwMzAyNmMyOTUzM2Fm
ODNhNjk3N2UxNmI0Li5jNDg1NzU0NTI4YjM1NGE4NmMzY2U4NzhlZmJmNTg5MzNlMzgzZjJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFu
bmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRD
aGFubmVsLmNwcApAQCAtNTYsOCArNTYsOCBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6Om5vdGlm
eVNlbmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlIG9wQ29kZSwgY29uc3QgdWludAogTmV0
d29ya1NlbmRRdWV1ZSBXZWJTb2NrZXRDaGFubmVsOjpjcmVhdGVNZXNzYWdlUXVldWUoRG9jdW1l
bnQmIGRvY3VtZW50LCBXZWJTb2NrZXRDaGFubmVsJiBjaGFubmVsKQogewogICAgIHJldHVybiB7
IGRvY3VtZW50LCBbJmNoYW5uZWxdKGF1dG8mIHV0ZjhTdHJpbmcpIHsKLSAgICAgICAgY2hhbm5l
bC5ub3RpZnlTZW5kRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZTo6T3BDb2RlVGV4dCwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odXRmOFN0cmluZy5kYXRhKCkpLCB1dGY4U3Ry
aW5nLmxlbmd0aCgpKTsKLSAgICAgICAgY2hhbm5lbC5zZW5kTWVzc2FnZShNZXNzYWdlczo6TmV0
d29ya1NvY2tldENoYW5uZWw6OlNlbmRTdHJpbmcgeyBJUEM6OkRhdGFSZWZlcmVuY2UgeyByZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih1dGY4U3RyaW5nLmRhdGEoKSksIHV0ZjhTdHJp
bmcubGVuZ3RoKCkgfSB9LCB1dGY4U3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgY2hhbm5lbC5u
b3RpZnlTZW5kRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZTo6T3BDb2RlVGV4dCwgdXRmOFN0
cmluZy5jaGFyYWN0ZXJzOCgpLCB1dGY4U3RyaW5nLmxlbmd0aCgpKTsKKyAgICAgICAgY2hhbm5l
bC5zZW5kTWVzc2FnZShNZXNzYWdlczo6TmV0d29ya1NvY2tldENoYW5uZWw6OlNlbmRTdHJpbmcg
eyBJUEM6OkRhdGFSZWZlcmVuY2UgeyB1dGY4U3RyaW5nLmNoYXJhY3RlcnM4KCksIHV0ZjhTdHJp
bmcubGVuZ3RoKCkgfSB9LCB1dGY4U3RyaW5nLmxlbmd0aCgpKTsKICAgICB9LCBbJmNoYW5uZWxd
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBieXRlTGVuZ3RoKSB7CiAgICAgICAgIGNoYW5u
ZWwubm90aWZ5U2VuZEZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGU6Ok9wQ29kZUJpbmFyeSwg
ZGF0YSwgYnl0ZUxlbmd0aCk7CiAgICAgICAgIGNoYW5uZWwuc2VuZE1lc3NhZ2UoTWVzc2FnZXM6
Ok5ldHdvcmtTb2NrZXRDaGFubmVsOjpTZW5kRGF0YSB7IElQQzo6RGF0YVJlZmVyZW5jZSB7IGRh
dGEsIGJ5dGVMZW5ndGggfSB9LCBieXRlTGVuZ3RoKTsKQEAgLTI5NSw3ICsyOTUsNyBAQCB2b2lk
IFdlYlNvY2tldENoYW5uZWw6OmRpZFJlY2VpdmVUZXh0KFN0cmluZyYmIG1lc3NhZ2UpCiAgICAg
fQogCiAgICAgYXV0byB1dGY4TWVzc2FnZSA9IG1lc3NhZ2UudXRmOCgpOwotICAgIG1faW5zcGVj
dG9yLmRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZShtX2RvY3VtZW50LmdldCgpLCBjcmVhdGVXZWJT
b2NrZXRGcmFtZUZvcldlYkluc3BlY3RvcihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
Pih1dGY4TWVzc2FnZS5kYXRhKCkpLCB1dGY4TWVzc2FnZS5sZW5ndGgoKSwgV2ViU29ja2V0RnJh
bWU6Ok9wQ29kZTo6T3BDb2RlVGV4dCkpOworICAgIG1faW5zcGVjdG9yLmRpZFJlY2VpdmVXZWJT
b2NrZXRGcmFtZShtX2RvY3VtZW50LmdldCgpLCBjcmVhdGVXZWJTb2NrZXRGcmFtZUZvcldlYklu
c3BlY3Rvcih1dGY4TWVzc2FnZS5jaGFyYWN0ZXJzOCgpLCB1dGY4TWVzc2FnZS5sZW5ndGgoKSwg
V2ViU29ja2V0RnJhbWU6Ok9wQ29kZTo6T3BDb2RlVGV4dCkpOwogCiAgICAgbV9jbGllbnQtPmRp
ZFJlY2VpdmVNZXNzYWdlKG1lc3NhZ2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxS
ZW1vdGVNYW5hZ2VyLmNwcAppbmRleCA3ZWIxMDc4NzdlMmIyYTBhODk5NDM2NzQyMjRmZDFiMjgw
MDRjYTQxLi45ODk3NWNiOGE4Mzg1NGFlOTZlNGY3OTk4NTJmOTQyZDIzZWFiNmZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5u
ZWxSZW1vdGVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyLmNwcApAQCAtMTIzLDcgKzEyMyw3
IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpzZW5kRGF0YShXZWJDb3JlOjpS
VENEYXRhQ2hhbm5lbElkZW50aWZpZXIgc291CiAgICAgICAgIGlmIChpc1JhdykKICAgICAgICAg
ICAgIHNvdXJjZS0+c2VuZFJhd0RhdGEoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgc291cmNlLT5zZW5kU3RyaW5nRGF0YShDU3RyaW5nKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAg
ICAgICAgICAgIHNvdXJjZS0+c2VuZFN0cmluZ0RhdGEoQ1N0cmluZyhkYXRhLmRhdGEoKSwgZGF0
YS5zaXplKCkpKTsKICAgICB9CiB9CiAKQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIFJUQ0RhdGFD
aGFubmVsUmVtb3RlTWFuYWdlcjo6UmVtb3RlU291cmNlQ29ubmVjdGlvbjo6ZGlkQ2hhbmdlUmVh
ZHlTdGF0ZShXZQogdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OlJlbW90ZVNvdXJj
ZUNvbm5lY3Rpb246OmRpZFJlY2VpdmVTdHJpbmdEYXRhKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVs
SWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICBhdXRv
IHRleHQgPSBzdHJpbmcudXRmOCgpOwotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHk6OlJlY2VpdmVEYXRhIHsgaWRlbnRpZmll
ciwgZmFsc2UsIElQQzo6RGF0YVJlZmVyZW5jZSB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5z
aWduZWQgY2hhcio+KHRleHQuZGF0YSgpKSwgdGV4dC5sZW5ndGgoKSB9IH0sIDApOworICAgIG1f
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJv
eHk6OlJlY2VpdmVEYXRhIHsgaWRlbnRpZmllciwgZmFsc2UsIElQQzo6RGF0YVJlZmVyZW5jZSB7
IHRleHQuY2hhcmFjdGVyczgoKSwgdGV4dC5sZW5ndGgoKSB9IH0sIDApOwogfQogCiB2b2lkIFJU
Q0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6UmVtb3RlU291cmNlQ29ubmVjdGlvbjo6ZGlkUmVj
ZWl2ZVJhd0RhdGEoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyIGlkZW50aWZpZXIs
IGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW5TdHJlYW0uY3BwCmluZGV4IGRiZmI4YjZiODExYjM2NDc0YTVkZTZiYjZhN2YzOGM1YjAyNTIw
NmIuLjAzMGY4MWUwMzA5Njg0NWMwYTRhZTc0NDg1NTFmZDVlMWExNGFhNjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2lu
U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIE5ldHNj
YXBlUGx1Z2luU3RyZWFtOjpzZW5kSmF2YVNjcmlwdFN0cmVhbShjb25zdCBTdHJpbmcmIHJlc3Vs
dCkKICAgICBpZiAoIXN0YXJ0KG1fcmVxdWVzdFVSTFN0cmluZywgcmVzdWx0Q1N0cmluZy5sZW5n
dGgoKSwgMCwgInRleHQvcGxhaW4iLCAiIikpCiAgICAgICAgIHJldHVybjsKIAotICAgIGRlbGl2
ZXJEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHJlc3VsdENTdHJpbmcuZGF0
YSgpKSwgcmVzdWx0Q1N0cmluZy5sZW5ndGgoKSk7CisgICAgZGVsaXZlckRhdGEocmVzdWx0Q1N0
cmluZy5jaGFyYWN0ZXJzOCgpLCByZXN1bHRDU3RyaW5nLmxlbmd0aCgpKTsKICAgICBzdG9wKE5Q
UkVTX0RPTkUpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430780</attachid>
            <date>2021-06-07 14:26:17 -0700</date>
            <delta_ts>2021-06-07 14:56:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226743-20210607142616.patch</filename>
            <type>text/plain</type>
            <size>85296</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDZhNDVlZjMwMWIzY2Y3NzBlNjljYWI1
OTA5MGQ0YmE5ZDM5YWJiNWUuLmY3NWFiOGRlNmI0ZmQ0ZjJkMDBmZTg3OTc4NzVkYTk3YzJiNjcx
MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMjEtMDYtMDcgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgdXNlIG9mIHJlaW50ZXJwcmV0X2Nhc3Q8PiBp
biB0aGUgY29kZWJhc2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNjc0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogd3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmNwcDoKKyAgICAgICAg
KiB3dGYvRmFzdE1hbGxvYy5oOgorICAgICAgICAoV1RGOjpGYXN0QWxsb2NhdG9yOjphbGxvY2F0
ZSk6CisgICAgICAgICogd3RmL1NIQTEuaDoKKyAgICAgICAgKFdURjo6U0hBMTo6YWRkQnl0ZXMp
OgorICAgICAgICAqIHd0Zi9TdGFja0NoZWNrLmg6CisgICAgICAgIChXVEY6OlN0YWNrQ2hlY2s6
OlNjb3BlOjpTY29wZSk6CisgICAgICAgIChXVEY6OlN0YWNrQ2hlY2s6OlN0YWNrQ2hlY2spOgor
ICAgICAgICAqIHd0Zi9VUkxIZWxwZXJzLmNwcDoKKyAgICAgICAgKFdURjo6VVJMSGVscGVyczo6
dXNlclZpc2libGVVUkwpOgorICAgICAgICAqIHd0Zi9VUkxQYXJzZXIuY3BwOgorICAgICAgICAo
V1RGOjpVUkxQYXJzZXI6OmZvcm1VUkxEZWNvZGUpOgorICAgICAgICAqIHd0Zi9jZi9VUkxDRi5j
cHA6CisgICAgICAgIChXVEY6OlVSTDo6Y3JlYXRlQ0ZVUkwgY29uc3QpOgorICAgICAgICAqIHd0
Zi9jb2NvYS9VUkxDb2NvYS5tbToKKyAgICAgICAgKFdURjo6VVJMOjpjcmVhdGVDRlVSTCBjb25z
dCk6CisgICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuY3BwOgorICAg
ICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6Q29kZXI8Q1N0cmluZz46OmVuY29kZSk6CisgICAgICAg
IChXVEY6OlBlcnNpc3RlbmNlOjpDb2RlcjxTdHJpbmc+OjplbmNvZGUpOgorICAgICAgICAqIHd0
Zi90ZXh0L0NTdHJpbmcuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuY3BwOgorICAg
ICAgICAoV1RGOjpTdHJpbmc6OmxhdGluMSBjb25zdCk6CisgICAgICAgICogd3RmL3RleHQvY2Yv
U3RyaW5nSW1wbENGLmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Y3JlYXRlQ0ZTdHJp
bmcpOgorCiAyMDIxLTA2LTA3ICBBbGljaWEgQm95YSBHYXJjw61hICA8YWJveWFAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbV1RGXVtHU3RyZWFtZXJdIEZpeCBjbGFuZyBUU0Egd2FybmluZ3MgaW4g
V1RGOjpEYXRhTXV0ZXgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1YmE2NTliMmNjYTAzMTA5N2UwYWIwZTY4M2Q4
YjI5NWViZjEwZDZkLi42NTAyNjVjNTI4YjM4YmFkMDgzMGYwZDYwOTc3NWU0OTUzYzY1YThhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAxIEBACisyMDIxLTA2LTA3ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiByZWludGVycHJldF9jYXN0
PD4gaW4gdGhlIGNvZGViYXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjY3NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Np
b25DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQ2xlYXJLZXk6Omdl
bmVyYXRlS2V5UmVxdWVzdCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojp0YWtlKToKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9k
eUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlQXNCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtl
QXNUZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVt
b3RlSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFJlbW90ZUhh
bmRsZXI6OnJlYWR5VG9TZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsUmVt
b3RlSGFuZGxlcjo6c2VuZFN0cmluZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNo
YW5uZWxSZW1vdGVIYW5kbGVyOjpzZW5kUmF3RGF0YSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNvcHlCdXNEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0
b3JSZXNwb25zZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OmVuY29kZUFycmF5QnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OmRlY29kZUFycmF5QnVmZmVyKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJT
b2NrZXRDaGFubmVsOjpzdGFydENsb3NpbmdIYW5kc2hha2UpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc091dGdvaW5nRnJhbWVRdWV1ZSk6CisgICAgICAgICog
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6OmdldEV4cGVjdGVkV2ViU29ja2V0QWNjZXB0KToKKyAg
ICAgICAgKFdlYkNvcmU6OmhlYWRlckhhc1ZhbGlkSFRUUFZlcnNpb24pOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmg6CisgICAgICAgICogYmluZGlu
Z3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsb25l
RGVzZXJpYWxpemVyOjpyZWFkU3RyaW5nKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9T
ZXJpYWxpemVkTkZBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpT
ZXJpYWxpemVkTkZBOjpwb2ludGVyQXRPZmZzZXRJbkZpbGUgY29uc3QpOgorICAgICAgICAqIGRv
bS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omhhc2hQb2ludGVyKToKKyAgICAgICAgKiBk
b20vVGV4dEVuY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEVuY29kZXI6OmVuY29k
ZSBjb25zdCk6CisgICAgICAgICogZG9tL1RleHRFbmNvZGVyU3RyZWFtRW5jb2Rlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0RW5jb2RlclN0cmVhbUVuY29kZXI6OmZsdXNoKToKKyAgICAg
ICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdl
YkNvcmU6OnNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4SW1hZ2VBcnJheUJ1ZmZlclZpZXdIZWxwZXIpOgorICAg
ICAgICAqIGluc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
YWRkU3RyaW5nVG9TSEExKToKKyAgICAgICAgKiBsb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkU2NyaXB0OjpzY3JpcHQpOgorICAgICAgICAqIHBhZ2UvY29jb2EvUmVzb3Vy
Y2VVc2FnZU92ZXJsYXlDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNob3dUZXh0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6bmV4dENodW5rKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9L
ZXllZEVuY29kZXJHZW5lcmljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2Rlckdl
bmVyaWM6OmVuY29kZVN0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0R0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OnBh
Y2tJbWFnZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFj
a2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmdldFBpeGVs
QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6cHV0
UGl4ZWxCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9J
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NOYXRpdmVTYW1wbGVzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkZvdW5kYXRpb25DRjo6Z2VuZXJhdGVL
ZXlSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkZvdW5kYXRpb25DRjo6
dXBkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWQ0Y6OnJlYWROYXRpdmVTYW1wbGVCdWZmZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXI6OmNyZWF0ZUl0ZW1CdWZm
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlz
dDo6SXRlcmF0b3I6OnVwZGF0ZUN1cnJlbnRJdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKEdJRkltYWdlUmVhZGVy
OjpkYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9yTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5n
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFkZFN0cmluZ1RvU0hBMSk6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Rm9ybURhdGFCdWlsZGVyOjplbmNvZGVTdHJpbmdBc0Zvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
b2NrZXRTdHJlYW1IYW5kbGU6OnNlbmRIYW5kc2hha2UpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5oOgorICAgICAgICAoV2ViQ29yZTo6
aHR0cEhlYWRlclZhbHVlVXNpbmdTdWl0YWJsZUVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpwbGF0Zm9ybVNlbmRJbnRlcm5hbCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkN1cmxDYWNoZUVudHJ5OjpnZW5lcmF0ZUJhc2VGaWxlbmFtZSk6CisgICAg
ICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTUUxpdGVTdGF0ZW1lbnQ6OmNvbHVtbkJsb2JWaWV3KToKKyAgICAgICAgKiB0ZXN0aW5nL01v
Y2tDRE1GYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06OnNhbml0aXplUmVz
cG9uc2UgY29uc3QpOgorCiAyMDIxLTA2LTA3ICBFbGVuaSBNYXJpYSBTdGVhICA8ZXN0ZWFAaWdh
bGlhLmNvbT4KIAogICAgICAgICBDb21waWxlIGVycm9yIGJ5IHRyeWluZyB0byBmaXQgYSBHQ0dM
aW50NjQqIHRvIGEgR0xpbnQ2NCoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cKaW5kZXggY2IxNmNmYmU4ZGViNTEwMDk4
ZTMyMGExNGQ5YjhmZTVmNWE2YWQxOC4uNGRkNmEzODY0NDIzZjg5ZjdkMGUwZDkwZmM2YTc4NzAw
NjY5Y2Q3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wNi0wNyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSB1c2Ugb2YgcmVp
bnRlcnByZXRfY2FzdDw+IGluIHRoZSBjb2RlYmFzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NzQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzb2NrZXQvSFRUUFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJEcml2ZXI6OkhUVFBQYXJzZXI6OnJlYWRMaW5lKToKKyAgICAgICAgKiBzb2NrZXQvU2Vz
c2lvbkhvc3RTb2NrZXQuY3BwOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uSG9zdDo6c2Vu
ZFdlYkluc3BlY3RvckV2ZW50KToKKwogMjAyMS0wNi0wMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIDx3dGYvT3B0aW9uYWwuaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
MjE0YWRhZWMwYjcxOGM4ZTExNmM4YTNiZjJmNjFlMDUyYjc0MjY2OS4uNmNlMmEyN2UzZGUxZmJi
MDdjMmRmOTY5MWQ3MDZjMjI4YjFmNTNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MiBAQAorMjAy
MS0wNi0wNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVj
ZSB1c2Ugb2YgcmVpbnRlcnByZXRfY2FzdDw+IGluIHRoZSBjb2RlYmFzZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NzQzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBs
YXllclByb3h5OjptZWRpYVBsYXllckluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKToKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlVGV4dFRyYWNrUHJveHk6OmFkZERhdGFDdWUpOgorICAgICAgICAq
IEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGFDdXJsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0NhY2hlOjpEYXRhOjphcHBseSBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlS2V5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nh
Y2hlOjpoYXNoU3RyaW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYktpdERp
cmVjdG9yeUlucHV0U3RyZWFtLmNwcDoKKyAgICAgICAgKHdlYmtpdERpcmVjdG9yeUlucHV0U3Ry
ZWFtUmVhZCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcDoKKyAg
ICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxDU3RyaW5nPjo6ZW5jb2RlKToKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxTdHJpbmc+OjplbmNvZGUpOgorICAgICAgICAqIFNoYXJlZC9BUEkv
Yy9jZi9XS1N0cmluZ0NGLm1tOgorICAgICAgICAoV0tTdHJpbmdDb3B5Q0ZTdHJpbmcpOgorICAg
ICAgICAqIFNoYXJlZC9BUEkvYy9jZi9XS1VSTENGLm1tOgorICAgICAgICAoV0tVUkxDb3B5Q0ZV
UkwpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIpOgorICAgICAgICAq
IFNoYXJlZC9TaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5oOgorICAgICAgICAoV2ViS2l0OjpTaGFy
ZWREaXNwbGF5TGlzdEhhbmRsZTo6ZGF0YSBjb25zdCk6CisgICAgICAgICogU2hhcmVkL1dlYkNv
bXBpbGVkQ29udGVudFJ1bGVMaXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcGlsZWRD
b250ZW50UnVsZUxpc3Q6OmNvbmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbiBjb25zdCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNl
LmNwcDoKKyAgICAgICAgKEFQSTo6V2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZTo6
dXNlckhhbmRsZSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6
CisgICAgICAgIChkYXRhRnJvbSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9y
aXphdGlvbi9SZWRpcmVjdFNPQXV0aG9yaXphdGlvblNlc3Npb24ubW06CisgICAgICAgIChXZWJL
aXQ6OlJlZGlyZWN0U09BdXRob3JpemF0aW9uU2Vzc2lvbjo6Y29tcGxldGVJbnRlcm5hbCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yQ2xpZW50OjpzZW5kV2ViSW5z
cGVjdG9yRXZlbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFu
bmVsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0Q2hhbm5lbDo6Y3JlYXRlTWVzc2Fn
ZVF1ZXVlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0Q2hhbm5lbDo6ZGlkUmVjZWl2ZVRl
eHQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxS
ZW1vdGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UlRDRGF0YUNoYW5uZWxSZW1vdGVN
YW5hZ2VyOjpzZW5kRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJUQ0RhdGFDaGFubmVsUmVtb3Rl
TWFuYWdlcjo6UmVtb3RlU291cmNlQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZVN0cmluZ0RhdGEpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVh
bS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luU3RyZWFtOjpzZW5kSmF2YVNj
cmlwdFN0cmVhbSk6CisKIDIwMjEtMDYtMDcgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUu
Y29tPgogCiAgICAgICAgIENvbnZlcnQgV2ViQ29yZTo6U25hcHNob3RPcHRpb25zIGludG8gYW4g
ZW51bSBjbGFzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ3J5cHRvZ3JhcGhpY2FsbHlS
YW5kb21OdW1iZXIuY3BwIGIvU291cmNlL1dURi93dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21O
dW1iZXIuY3BwCmluZGV4IGNiYWI5NjVlOTIzYmE0M2Y5YTUzOTg2NmVkMTYzY2Q0ZjQyNmFjOTcu
LmRmODI1ODQyNWQ5M2UwMDU4Yzg0ZmU3Y2VjMmVlMDZiMjRjNjdiMTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5jcHAKQEAgLTE0OSw3ICsx
NDksNyBAQCB2b2lkIEFSQzRSYW5kb21OdW1iZXJHZW5lcmF0b3I6OnJhbmRvbVZhbHVlcyh2b2lk
KiBidWZmZXIsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9
OwogCi0gICAgdW5zaWduZWQgY2hhciogcmVzdWx0ID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25l
ZCBjaGFyKj4oYnVmZmVyKTsKKyAgICBhdXRvIHJlc3VsdCA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
IGNoYXIqPihidWZmZXIpOwogICAgIHN0aXJJZk5lZWRlZCgpOwogICAgIHdoaWxlIChsZW5ndGgt
LSkgewogICAgICAgICBtX2NvdW50LS07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0
TWFsbG9jLmggYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmgKaW5kZXggMDI0ZjFiOTFjYjlh
YTFkMDRhOGNlNjQ0ZjFiZjVkZmZmMWE1YzRkNi4uNzNkOTY5YjQyMDU2ZjYxY2JmNTQwMGIxZmE1
Yzg3YmI3ZDhkNmY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuaApAQCAtMjAzLDcgKzIwMyw3IEBAIHB1Ymxp
YzoKIAogICAgIFQqIGFsbG9jYXRlKHNpemVfdCBjb3VudCkKICAgICB7Ci0gICAgICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PFQqPihmYXN0TWFsbG9jKHNpemVvZihUKSAqIGNvdW50KSk7Cisg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUKj4oZmFzdE1hbGxvYyhzaXplb2YoVCkgKiBjb3Vu
dCkpOwogICAgIH0KIAogICAgIHZvaWQgZGVhbGxvY2F0ZShUKiBwb2ludGVyLCBzaXplX3QpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TSEExLmggYi9Tb3VyY2UvV1RGL3d0Zi9TSEExLmgK
aW5kZXggMmM3ZDlhMzY0ZTE1OWU0ZGQwNDU5ZjQ3MjA1YzgzZGNkMDYzMjliZi4uNWJkYTQyZWQ2
ZDZkNjgzZTViYWExYjM5OWFlODBjYjE1MTlkYmE5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvU0hBMS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1NIQTEuaApAQCAtNTEsOCArNTEsNyBAQCBw
dWJsaWM6CiAgICAgfQogICAgIHZvaWQgYWRkQnl0ZXMoY29uc3QgQ1N0cmluZyYgaW5wdXQpCiAg
ICAgewotICAgICAgICBjb25zdCBjaGFyKiBzdHJpbmcgPSBpbnB1dC5kYXRhKCk7Ci0gICAgICAg
IGFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0cmluZyksIGlucHV0
Lmxlbmd0aCgpKTsKKyAgICAgICAgYWRkQnl0ZXMoaW5wdXQuY2hhcmFjdGVyczgoKSwgaW5wdXQu
bGVuZ3RoKCkpOwogICAgIH0KICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhZGRCeXRlcyhj
b25zdCB1aW50OF90KiBpbnB1dCwgc2l6ZV90IGxlbmd0aCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL1N0YWNrQ2hlY2suaCBiL1NvdXJjZS9XVEYvd3RmL1N0YWNrQ2hlY2suaAppbmRl
eCA5YzcyNzg2MmMwOWZmMTAzOWEzNzc3MmIyZDYzNjhhNGQ0Y2I0NDExLi5hMTkyZmM3MWUyNTg4
NmJiYzYyMGRiN2FlNWNmN2U1MGIyYjg2NGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9T
dGFja0NoZWNrLmgKKysrIGIvU291cmNlL1dURi93dGYvU3RhY2tDaGVjay5oCkBAIC01Nyw3ICs1
Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIC8vIHRoZW4gd2UgZWl0aGVyIG5lZWQgdG86CiAg
ICAgICAgICAgICAvLyAxLiBicmVhayB0aGUgaW50ZXJ2YWwgaW50byBzbWFsbGVyIHBpZWNlcyAo
aS5lLiBpbnNlcnQgbW9yZSBjaGVja3MpLCBvcgogICAgICAgICAgICAgLy8gMi4gdXNlIGEgbGFy
Z2VyIHJlc2VydmVkWm9uZSBzaXplLgotICAgICAgICAgICAgdWludDhfdCogY3VycmVudFN0YWNr
Q2hlY2twb2ludCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGN1cnJlbnRTdGFja1BvaW50
ZXIoKSk7CisgICAgICAgICAgICB1aW50OF90KiBjdXJyZW50U3RhY2tDaGVja3BvaW50ID0gc3Rh
dGljX2Nhc3Q8dWludDhfdCo+KGN1cnJlbnRTdGFja1BvaW50ZXIoKSk7CiAgICAgICAgICAgICB1
aW50OF90KiBwcmV2aW91c1N0YWNrQ2hlY2twb2ludCA9IG1fY2hlY2tlci5tX2xhc3RTdGFja0No
ZWNrcG9pbnQ7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChwcmV2aW91c1N0YWNrQ2hlY2tw
b2ludCAtIGN1cnJlbnRTdGFja0NoZWNrcG9pbnQgPiAwKTsKICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKHByZXZpb3VzU3RhY2tDaGVja3BvaW50IC0gY3VycmVudFN0YWNrQ2hlY2twb2ludCA8
IHN0YXRpY19jYXN0PHB0cmRpZmZfdD4obV9jaGVja2VyLm1fcmVzZXJ2ZWRab25lKSk7CkBAIC04
Nyw3ICs4Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgOiBtX3N0YWNrTGltaXQoYm91bmRzLnJlY3Vy
c2lvbkxpbWl0KG1pblJlc2VydmVkWm9uZSkpCiAjaWYgVkVSSUZZX1NUQUNLX0NIRUNLX1JFU0VS
VkVEX1pPTkVfU0laRQogICAgICAgICAsIG1fb3duZXJUaHJlYWQoJlRocmVhZDo6Y3VycmVudCgp
KQotICAgICAgICAsIG1fbGFzdFN0YWNrQ2hlY2twb2ludChyZWludGVycHJldF9jYXN0PHVpbnQ4
X3QqPihjdXJyZW50U3RhY2tQb2ludGVyKCkpKQorICAgICAgICAsIG1fbGFzdFN0YWNrQ2hlY2tw
b2ludChzdGF0aWNfY2FzdDx1aW50OF90Kj4oY3VycmVudFN0YWNrUG9pbnRlcigpKSkKICAgICAg
ICAgLCBtX3Jlc2VydmVkWm9uZShtaW5SZXNlcnZlZFpvbmUpCiAjZW5kaWYKICAgICB7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTEhlbHBlcnMuY3BwIGIvU291cmNlL1dURi93dGYv
VVJMSGVscGVycy5jcHAKaW5kZXggOWE5ZDA2MDEzZTc1NWNlY2Q4YWZiOGIyN2YwNDY5M2YyMWRk
MGMwYS4uMGE5ODY1ZTkyNjFkOWYxYzFmY2MwZTFlMWQ1MjlkMDYyNzhjMmExMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvVVJMSGVscGVycy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVVJM
SGVscGVycy5jcHAKQEAgLTgyMiw3ICs4MjIsNyBAQCBzdGF0aWMgU3RyaW5nIGVzY2FwZVVuc2Fm
ZUNoYXJhY3RlcnMoY29uc3QgU3RyaW5nJiBzb3VyY2VCdWZmZXIpCiAKIFN0cmluZyB1c2VyVmlz
aWJsZVVSTChjb25zdCBDU3RyaW5nJiB1cmwpCiB7Ci0gICAgYXV0byogYmVmb3JlID0gcmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4odXJsLmRhdGEoKSk7CisgICAgYXV0byog
YmVmb3JlID0gdXJsLmNoYXJhY3RlcnM4KCk7CiAgICAgaW50IGxlbmd0aCA9IHVybC5sZW5ndGgo
KTsKIAogICAgIGlmICghbGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVJMUGFy
c2VyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1VSTFBhcnNlci5jcHAKaW5kZXggMjkzNjlhMmEzMWVk
MDRhYmVlMGRkNmZmOThkMmIyNmQwNTU2MDhkZi4uOTdmNzcwYjc2NzYwYTU1OWMwYmQ3ODEzNmE4
MWJjZmFjYTM5ZTUwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVVJMUGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIuY3BwCkBAIC0yNzkyLDcgKzI3OTIsNyBAQCBz
dGQ6Om9wdGlvbmFsPFN0cmluZz4gVVJMUGFyc2VyOjpmb3JtVVJMRGVjb2RlKFN0cmluZ1ZpZXcg
aW5wdXQpCiAgICAgYXV0byB1dGY4ID0gaW5wdXQudXRmOChTdHJpY3RDb252ZXJzaW9uKTsKICAg
ICBpZiAodXRmOC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBh
dXRvIHBlcmNlbnREZWNvZGVkID0gcGVyY2VudERlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0
IExDaGFyKj4odXRmOC5kYXRhKCkpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICBhdXRvIHBlcmNlbnRE
ZWNvZGVkID0gcGVyY2VudERlY29kZSh1dGY4LmNoYXJhY3RlcnM4KCksIHV0ZjgubGVuZ3RoKCkp
OwogICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4UmVwbGFjaW5nSW52YWxpZFNlcXVlbmNlcyhw
ZXJjZW50RGVjb2RlZC5kYXRhKCksIHBlcmNlbnREZWNvZGVkLnNpemUoKSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NmL1VSTENGLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2NmL1VS
TENGLmNwcAppbmRleCAxNDNkYzg1NjYyZjRlN2FkMzMyMjZjMzM0ZmZiYWE1ZDRlY2ZmOGU5Li43
YzZlNDc3MDRhOGVmZDcwNDkyOTM4MmY1Y2ZjN2I4YTRiYmZiN2MxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9jZi9VUkxDRi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvY2YvVVJMQ0YuY3Bw
CkBAIC01MiwxMCArNTIsMTAgQEAgUmV0YWluUHRyPENGVVJMUmVmPiBVUkw6OmNyZWF0ZUNGVVJM
KCkgY29uc3QKIHsKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNmVVJMOwogICAgIGlmIChMSUtF
TFkobV9zdHJpbmcuaXM4Qml0KCkgJiYgbV9zdHJpbmcuaXNBbGxBU0NJSSgpKSkKLSAgICAgICAg
Y2ZVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMobnVsbHB0ciwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KG1fc3RyaW5nLmNoYXJhY3RlcnM4KCkpLCBt
X3N0cmluZy5sZW5ndGgoKSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBudWxscHRyLCB0cnVlKSk7
CisgICAgICAgIGNmVVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVz
KG51bGxwdHIsIG1fc3RyaW5nLmNoYXJhY3RlcnM4KCksIG1fc3RyaW5nLmxlbmd0aCgpLCBrQ0ZT
dHJpbmdFbmNvZGluZ1VURjgsIG51bGxwdHIsIHRydWUpKTsKICAgICBlbHNlIHsKICAgICAgICAg
Q1N0cmluZyB1dGY4ID0gbV9zdHJpbmcudXRmOCgpOwotICAgICAgICBjZlVSTCA9IGFkb3B0Q0Yo
Q0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxscHRyLCByZWludGVycHJldF9jYXN0
PGNvbnN0IFVJbnQ4Kj4odXRmOC5kYXRhKCkpLCB1dGY4Lmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNv
ZGluZ1VURjgsIG51bGxwdHIsIHRydWUpKTsKKyAgICAgICAgY2ZVUkwgPSBhZG9wdENGKENGVVJM
Q3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMobnVsbHB0ciwgdXRmOC5jaGFyYWN0ZXJzOCgpLCB1
dGY4Lmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIG51bGxwdHIsIHRydWUpKTsKICAg
ICB9CiAKICAgICBpZiAocHJvdG9jb2xJc0luSFRUUEZhbWlseSgpICYmICFpc0NGVVJMU2FtZU9y
aWdpbihjZlVSTC5nZXQoKSwgKnRoaXMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29j
b2EvVVJMQ29jb2EubW0gYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9VUkxDb2NvYS5tbQppbmRleCBk
MWQxYjFiZGI2YzUyMmJiZGI5OTU3YWIxYTk5Y2M3Nzc2Y2QzM2VkLi41OTE5MDAwYTJiMjMyY2M4
YTNjY2Q1YmQxNjAyYTJhMWQ1MWQwMWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2Nv
YS9VUkxDb2NvYS5tbQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9VUkxDb2NvYS5tbQpAQCAt
NzAsMTAgKzcwLDEwIEBAIFJldGFpblB0cjxDRlVSTFJlZj4gVVJMOjpjcmVhdGVDRlVSTCgpIGNv
bnN0CiAKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNmVVJMOwogICAgIGlmIChMSUtFTFkobV9z
dHJpbmcuaXM4Qml0KCkgJiYgbV9zdHJpbmcuaXNBbGxBU0NJSSgpKSkKLSAgICAgICAgY2ZVUkwg
PSBhZG9wdENGKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMobnVsbHB0ciwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBVSW50OCo+KG1fc3RyaW5nLmNoYXJhY3RlcnM4KCkpLCBtX3N0cmlu
Zy5sZW5ndGgoKSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBudWxscHRyLCB0cnVlKSk7CisgICAg
ICAgIGNmVVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKG51bGxw
dHIsIG1fc3RyaW5nLmNoYXJhY3RlcnM4KCksIG1fc3RyaW5nLmxlbmd0aCgpLCBrQ0ZTdHJpbmdF
bmNvZGluZ1VURjgsIG51bGxwdHIsIHRydWUpKTsKICAgICBlbHNlIHsKICAgICAgICAgQ1N0cmlu
ZyB1dGY4ID0gbV9zdHJpbmcudXRmOCgpOwotICAgICAgICBjZlVSTCA9IGFkb3B0Q0YoQ0ZVUkxD
cmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxscHRyLCByZWludGVycHJldF9jYXN0PGNvbnN0
IFVJbnQ4Kj4odXRmOC5kYXRhKCkpLCB1dGY4Lmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VU
RjgsIG51bGxwdHIsIHRydWUpKTsKKyAgICAgICAgY2ZVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRl
QWJzb2x1dGVVUkxXaXRoQnl0ZXMobnVsbHB0ciwgdXRmOC5jaGFyYWN0ZXJzOCgpLCB1dGY4Lmxl
bmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIG51bGxwdHIsIHRydWUpKTsKICAgICB9CiAK
ICAgICBpZiAocHJvdG9jb2xJc0luSFRUUEZhbWlseSgpICYmICFXVEY6OmlzQ0ZVUkxTYW1lT3Jp
Z2luKGNmVVJMLmdldCgpLCAqdGhpcykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wZXJz
aXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNl
L1BlcnNpc3RlbnRDb2RlcnMuY3BwCmluZGV4IDQ2MzU4YmRjYmY2NTJmNzE0YmE3NzZhNjJlY2Nk
Y2JlMjQ2NjkxYWIuLjhhMTQ0MTY4NDEyZTVhZTVkMWUwMDM4OGViYTE4YzNlODE5Yzc2NjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuY3Bw
CisrKyBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuY3BwCkBA
IC01Nyw3ICs1Nyw3IEBAIHZvaWQgQ29kZXI8Q1N0cmluZz46OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBDU3RyaW5nJiBzdHJpbmcpCiAKICAgICB1aW50MzJfdCBsZW5ndGggPSBzdHJp
bmcubGVuZ3RoKCk7CiAgICAgZW5jb2RlciA8PCBsZW5ndGg7Ci0gICAgZW5jb2Rlci5lbmNvZGVG
aXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oc3RyaW5nLmRh
dGEoKSksIGxlbmd0aCk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoc3RyaW5n
LmNoYXJhY3RlcnM4KCksIGxlbmd0aCk7CiB9CiAKIHN0ZDo6b3B0aW9uYWw8Q1N0cmluZz4gQ29k
ZXI8Q1N0cmluZz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQpAQCAtOTgsNyArOTgsNyBAQCB2
b2lkIENvZGVyPFN0cmluZz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTdHJpbmcm
IHN0cmluZykKICAgICBlbmNvZGVyIDw8IGxlbmd0aCA8PCBpczhCaXQ7CiAKICAgICBpZiAoaXM4
Qml0KQotICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihzdHJpbmcuY2hhcmFjdGVyczgoKSksIGxlbmd0aCAqIHNpemVv
ZihMQ2hhcikpOworICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShzdHJpbmcu
Y2hhcmFjdGVyczgoKSwgbGVuZ3RoICogc2l6ZW9mKExDaGFyKSk7CiAgICAgZWxzZQogICAgICAg
ICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihzdHJpbmcuY2hhcmFjdGVyczE2KCkpLCBsZW5ndGggKiBzaXplb2YoVUNoYXIpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQ1N0cmluZy5oIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9DU3RyaW5nLmgKaW5kZXggZTA1ZGFmNzdmNTNlMTVlM2UwNjNhMzI0ZjczYzJl
ODZkNzRhMzk4MS4uYTExYTg4Yjg4NjBjZDQzMzllZDY5YzNhODNmNDIwZjc5NzJlNDI4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9DU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93
dGYvdGV4dC9DU3RyaW5nLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlIDx3dGYvSGFzaFRy
YWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L0xDaGFyLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCkBAIC02
MSw2ICs2Miw3IEBAIHB1YmxpYzoKICAgICBDU3RyaW5nKCkgeyB9CiAgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIENTdHJpbmcoY29uc3QgY2hhciopOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBDU3Ry
aW5nKGNvbnN0IGNoYXIqLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBDU3RyaW5nKGNvbnN0IExDaGFy
KiBkYXRhLCBzaXplX3QgbGVuZ3RoKSA6IENTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
aGFyKj4oZGF0YSksIGxlbmd0aCkgeyB9CiAgICAgQ1N0cmluZyhDU3RyaW5nQnVmZmVyKiBidWZm
ZXIpIDogbV9idWZmZXIoYnVmZmVyKSB7IH0KICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IENTdHJpbmcgbmV3VW5pbml0aWFsaXplZChzaXplX3QgbGVuZ3RoLCBjaGFyKiYgY2hhcmFjdGVy
QnVmZmVyKTsKICAgICBDU3RyaW5nKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpIDogbV9idWZm
ZXIoSGFzaFRhYmxlRGVsZXRlZFZhbHVlKSB7IH0KQEAgLTY5LDYgKzcxLDkgQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmRhdGEoKSA6IG51bGxw
dHI7CiAgICAgfQorCisgICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnM4KCkgY29uc3QgeyByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGRhdGEoKSk7IH0KKwogICAgIFdURl9F
WFBPUlRfUFJJVkFURSBjaGFyKiBtdXRhYmxlRGF0YSgpOwogICAgIHNpemVfdCBsZW5ndGgoKSBj
b25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNw
cCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAppbmRleCA4NmY5ODM4MGRhMDg1
ZWEzMmJmYmMwMDM3MDEwNjk0Mjk5MmMzYTE1Li5hNmQ0ZGQyMzNkZGE2OGRjZDhhYzIxZDg1YjA4
ZDFjZGEyMjVmMTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCkBAIC02NjAsNyArNjYw
LDcgQEAgQ1N0cmluZyBTdHJpbmc6OmxhdGluMSgpIGNvbnN0CiAgICAgICAgIHJldHVybiBDU3Ry
aW5nKCIiLCAwKTsKIAogICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIENTdHJpbmco
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4odGhpcy0+Y2hhcmFjdGVyczgoKSksIGxlbmd0
aCk7CisgICAgICAgIHJldHVybiBDU3RyaW5nKHRoaXMtPmNoYXJhY3RlcnM4KCksIGxlbmd0aCk7
CiAKICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IHRoaXMtPmNoYXJhY3RlcnMxNigpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAgYi9T
b3VyY2UvV1RGL3d0Zi90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAKaW5kZXggYzA3NWMwZDRhYzg5
MDhhZjI5ZGIyYzUzMzVhYWUzZDljMThmNDMxOC4uMWUyMzY0NzE0ZjhiNzgwYTQ3MTA2Y2IwOTJl
Yjg3ZWIzMTJlNGFlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9jZi9TdHJpbmdJ
bXBsQ0YuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvY2YvU3RyaW5nSW1wbENGLmNwcApA
QCAtMTE5LDcgKzExOSw3IEBAIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gU3RyaW5nSW1wbDo6Y3Jl
YXRlQ0ZTdHJpbmcoKQogewogICAgIGlmICghbV9sZW5ndGggfHwgIWlzTWFpblRocmVhZCgpKSB7
CiAgICAgICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAgICAgIHJldHVybiBhZG9wdENGKENGU3Ry
aW5nQ3JlYXRlV2l0aEJ5dGVzKG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgq
PihjaGFyYWN0ZXJzOCgpKSwgbV9sZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBm
YWxzZSkpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0
ZXMobnVsbHB0ciwgY2hhcmFjdGVyczgoKSwgbV9sZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nSVNP
TGF0aW4xLCBmYWxzZSkpOwogICAgICAgICByZXR1cm4gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdp
dGhDaGFyYWN0ZXJzKG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVW5pQ2hhcio+KGNo
YXJhY3RlcnMxNigpKSwgbV9sZW5ndGgpKTsKICAgICB9CiAgICAgQ0ZBbGxvY2F0b3JSZWYgYWxs
b2NhdG9yID0gU3RyaW5nV3JhcHBlckNGQWxsb2NhdG9yOjphbGxvY2F0b3IoKTsKQEAgLTEzMCw3
ICsxMzAsNyBAQCBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IFN0cmluZ0ltcGw6OmNyZWF0ZUNGU3Ry
aW5nKCkKIAogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3RyaW5nOwogICAgIGlmIChpczhC
aXQoKSkKLSAgICAgICAgc3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhCeXRlc05v
Q29weShhbGxvY2F0b3IsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihjaGFyYWN0ZXJz
OCgpKSwgbV9sZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBmYWxzZSwga0NGQWxs
b2NhdG9yTnVsbCkpOworICAgICAgICBzdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0
aEJ5dGVzTm9Db3B5KGFsbG9jYXRvciwgY2hhcmFjdGVyczgoKSwgbV9sZW5ndGgsIGtDRlN0cmlu
Z0VuY29kaW5nSVNPTGF0aW4xLCBmYWxzZSwga0NGQWxsb2NhdG9yTnVsbCkpOwogICAgIGVsc2UK
ICAgICAgICAgc3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzTm9D
b3B5KGFsbG9jYXRvciwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVbmlDaGFyKj4oY2hhcmFjdGVy
czE2KCkpLCBtX2xlbmd0aCwga0NGQWxsb2NhdG9yTnVsbCkpOwogICAgIC8vIENvcmVGb3VuZGF0
aW9uIG1pZ2h0IG5vdCBoYXZlIHRvIGFsbG9jYXRlIGFueXRoaW5nLCB3ZSBjbGVhciBjdXJyZW50
U3RyaW5nIGluIGNhc2Ugd2UgZGlkIG5vdCBleGVjdXRlIGFsbG9jYXRlKCkuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1T
ZXNzaW9uQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmNwcAppbmRleCBiMjI4Mzg5OWZkNjM2
MTVkMzY3ZDk4MTg2ZmY4ODc2MWVhMTE4YmVmLi5jZTFjMTk4ZmM2YTRkOWU3NmMwNDNkYjQ5MWZk
ODMyZDllNzNiZDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Npb25DbGVh
cktleS5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgUmVmUHRyPFVpbnQ4QXJyYXk+IENETVNlc3Npb25D
bGVhcktleTo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUKICAgICBt
X2luaXREYXRhID0gaW5pdERhdGE7CiAKICAgICBib29sIHNhd0Vycm9yID0gZmFsc2U7Ci0gICAg
U3RyaW5nIGtleUlEID0gVVRGOEVuY29kaW5nKCkuZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3RfcHRy
PGNoYXIqPihtX2luaXREYXRhLT5iYXNlQWRkcmVzcygpKSwgbV9pbml0RGF0YS0+Ynl0ZUxlbmd0
aCgpLCB0cnVlLCBzYXdFcnJvcik7CisgICAgU3RyaW5nIGtleUlEID0gVVRGOEVuY29kaW5nKCku
ZGVjb2RlKHN0YXRpY19jYXN0PGNoYXIqPihtX2luaXREYXRhLT5iYXNlQWRkcmVzcygpKSwgbV9p
bml0RGF0YS0+Ynl0ZUxlbmd0aCgpLCB0cnVlLCBzYXdFcnJvcik7CiAgICAgaWYgKHNhd0Vycm9y
KSB7CiAgICAgICAgIGVycm9yQ29kZSA9IFdlYktpdE1lZGlhS2V5RXJyb3I6Ok1FRElBX0tFWUVS
Ul9DTElFTlQ7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IDQ4MzZkMjgxM2ZlNzRiMTJhMmVkMGEwNWFiYzk5
OTk1ZmRiOTBhNDQuLjBkZDhkZmNkNTFmNDk0OGUyNzMzNjhhYjU2ODAxMzViOGFiNGE3ZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKQEAgLTMwNCw5ICsz
MDQsOSBAQCBGZXRjaEJvZHk6OlRha2VuRGF0YSBGZXRjaEJvZHk6OnRha2UoKQogICAgICAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2RlKHVybFNlYXJj
aFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykp
OwogCiAgICAgaWYgKGlzQXJyYXlCdWZmZXIoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyQm9keSgp
LmRhdGEoKSksIGFycmF5QnVmZmVyQm9keSgpLmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZm
ZXJCb2R5KCkuZGF0YSgpKSwgYXJyYXlCdWZmZXJCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKICAgICBp
ZiAoaXNBcnJheUJ1ZmZlclZpZXcoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyVmlld0JvZHko
KS5iYXNlQWRkcmVzcygpKSwgYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJ5dGVMZW5ndGgoKSk7Cisg
ICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50
OF90Kj4oYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJhc2VBZGRyZXNzKCkpLCBhcnJheUJ1ZmZlclZp
ZXdCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKIAogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRl
eCAyYWIwY2FmMTAwZDBjMzEzOGMyYjYyNjQzZDczYjIxZWM2YmU5ZWI4Li42MDY0NGJmOTk0MTlm
YjM3NzYwZDBmY2JiYzZhMDg2ZTc3NTA5OTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMjc4LDcgKzI3OCw3IEBAIHZv
aWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9t
aXNlLCBjb25zdCBTdHJpbmcmIGNvCiAgICAgICAgICAgICBpZiAoYXV0byBjaHVuayA9IHJlc3Vs
dC5yZXR1cm5WYWx1ZSgpKQogICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0
YSwgY2h1bmstPnNpemUpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc29s
dmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGRhdGEtPmRhdGEoKSksIGRhdGEt
PnNpemUoKSk7CisgICAgICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3Zl
KHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkp
OwogICAgICAgICB9KTsKICAgICAgICAgbV9zaW5rLT5waXBlRnJvbSgqc3RyZWFtKTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtMzU1LDcgKzM1NSw3IEBAIFJlZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1l
cjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgICAgICBy
ZXR1cm4gQmxvYjo6Y3JlYXRlKGNvbnRleHQsIFZlY3Rvcjx1aW50OF90PigpLCBCbG9iOjpub3Jt
YWxpemVkQ29udGVudFR5cGUobV9jb250ZW50VHlwZSkpOwogCiAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCB0cnkgdG8gbW92ZSBtX2J1ZmZlciB0byBCbG9iIHdpdGhvdXQgZG9pbmcgZXh0cmEgY29w
eS4KLSAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRleHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdW5zaWduZWQgY2hhcio+KG1fYnVmZmVyLT5kYXRhKCkpLCBtX2J1ZmZlci0+c2l6ZSgpLCBt
X2NvbnRlbnRUeXBlKTsKKyAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRleHQsIG1fYnVmZmVy
LT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCksIG1fY29udGVudFR5cGUpOwogfQogCiBTdHJpbmcg
RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQpAQCAtMzY0LDcgKzM2NCw3IEBAIFN0cmlu
ZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4dCgpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgYXV0byB0ZXh0ID0gVGV4dFJlc291cmNlRGVj
b2Rlcjo6dGV4dEZyb21VVEY4KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+
KG1fYnVmZmVyLT5kYXRhKCkpLCBtX2J1ZmZlci0+c2l6ZSgpKTsKKyAgICBhdXRvIHRleHQgPSBU
ZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgobV9idWZmZXItPmRhdGEoKSwgbV9idWZm
ZXItPnNpemUoKSk7CiAgICAgbV9idWZmZXIgPSBudWxscHRyOwogICAgIHJldHVybiB0ZXh0Owog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCmluZGV4IGU3YzIxYWVmNWIzMDUx
M2FmNWM1Y2U5NmQwZmQzNDRmZjcyNGVkNjYuLjAxYzEzZDVlZGUxYjllNTgzNWQ4Y2I4M2ZlZmUy
NTc4MjhkYTFhNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKQEAgLTgw
LDcgKzgwLDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnJlYWR5VG9TZW5k
KCkKICAgICBtX2lzUmVhZHlUb1NlbmQgPSB0cnVlOwogCiAgICAgZm9yIChhdXRvJiBtZXNzYWdl
IDogbV9wZW5kaW5nTWVzc2FnZXMpCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9y
ZW1vdGVJZGVudGlmaWVyLCBtZXNzYWdlLmlzUmF3LCByZWludGVycHJldF9jYXN0PGNvbnN0IHVu
c2lnbmVkIGNoYXIqPihtZXNzYWdlLmJ1ZmZlci0+ZGF0YSgpKSwgbWVzc2FnZS5idWZmZXItPnNp
emUoKSk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVy
LCBtZXNzYWdlLmlzUmF3LCBtZXNzYWdlLmJ1ZmZlci0+ZGF0YSgpLCBtZXNzYWdlLmJ1ZmZlci0+
c2l6ZSgpKTsKICAgICBtX3BlbmRpbmdNZXNzYWdlcy5jbGVhcigpOwogCiAgICAgaWYgKG1faXNQ
ZW5kaW5nQ2xvc2UpCkBAIC0xMDAsNyArMTAwLDcgQEAgYm9vbCBSVENEYXRhQ2hhbm5lbFJlbW90
ZUhhbmRsZXI6OnNlbmRTdHJpbmdEYXRhKGNvbnN0IENTdHJpbmcmIHRleHQpCiAgICAgICAgIG1f
cGVuZGluZ01lc3NhZ2VzLmFwcGVuZChNZXNzYWdlIHsgZmFsc2UsIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHRleHQuZGF0YSgpLCB0ZXh0Lmxlbmd0aCgpKSB9KTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQotICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBm
YWxzZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4odGV4dC5kYXRhKCkp
LCB0ZXh0Lmxlbmd0aCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmREYXRhKG1fcmVtb3RlSWRl
bnRpZmllciwgZmFsc2UsIHRleHQuY2hhcmFjdGVyczgoKSwgdGV4dC5sZW5ndGgoKSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTExMCw3ICsxMTAsNyBAQCBib29sIFJUQ0RhdGFDaGFubmVs
UmVtb3RlSGFuZGxlcjo6c2VuZFJhd0RhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNp
emUpCiAgICAgICAgIG1fcGVuZGluZ01lc3NhZ2VzLmFwcGVuZChNZXNzYWdlIHsgdHJ1ZSwgU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSkgfSk7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmREYXRhKG1fcmVtb3RlSWRlbnRpZmllciwgdHJ1
ZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oZGF0YSksIHNpemUpOwor
ICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCB0cnVlLCBkYXRh
LCBzaXplKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlR1N0cmVhbWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZUdT
dHJlYW1lci5jcHAKaW5kZXggNTZlZDYwMWY0NjVhMDFjMGE3NDNhNTkyNTdhNzU1OWMxNjcxZTM4
NS4uNDUwMTJlMzBlODE4ZmI1ODkzZDQ2MzYzMGJjM2U3YTUxZWIwOTViNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlR1N0
cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC00Myw4ICs0Myw4IEBAIHN0YXRpYyBWZWN0
b3I8c2l6ZV90PiBjb3B5QnVzRGF0YShBdWRpb0J1cyYgYnVzLCBHc3RCdWZmZXIqIGJ1ZmZlciwg
Ym9vbCBpc011dGVkCiAgICAgc2l6ZV90IHNpemUgPSBtYXBwZWRCdWZmZXIuc2l6ZSgpIC8gYnVz
Lm51bWJlck9mQ2hhbm5lbHMoKTsKICAgICBmb3IgKHNpemVfdCBjaGFubmVsSW5kZXggPSAwOyBj
aGFubmVsSW5kZXggPCBidXMubnVtYmVyT2ZDaGFubmVscygpOyArK2NoYW5uZWxJbmRleCkgewog
ICAgICAgICBjb25zdCBhdXRvJiBjaGFubmVsID0gKmJ1cy5jaGFubmVsKGNoYW5uZWxJbmRleCk7
Ci0gICAgICAgIGF1dG8gb2Zmc2V0ID0gcmVpbnRlcnByZXRfY2FzdDxzaXplX3Q+KGNoYW5uZWxJ
bmRleCAqIHNpemUpOwotICAgICAgICBtZW1jcHkocmVpbnRlcnByZXRfY2FzdDxmbG9hdCo+KG1h
cHBlZEJ1ZmZlci5kYXRhKCkgKyBvZmZzZXQpLCBjaGFubmVsLmRhdGEoKSwgc2l6ZW9mKGZsb2F0
KSAqIGNoYW5uZWwubGVuZ3RoKCkpOworICAgICAgICBhdXRvIG9mZnNldCA9IGNoYW5uZWxJbmRl
eCAqIHNpemU7CisgICAgICAgIG1lbWNweShtYXBwZWRCdWZmZXIuZGF0YSgpICsgb2Zmc2V0LCBj
aGFubmVsLmRhdGEoKSwgc2l6ZW9mKGZsb2F0KSAqIGNoYW5uZWwubGVuZ3RoKCkpOwogICAgICAg
ICBvZmZzZXRzLnVuY2hlY2tlZEFwcGVuZChvZmZzZXQpOwogICAgIH0KICAgICByZXR1cm4gb2Zm
c2V0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVu
dGljYXRvclJlc3BvbnNlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9B
dXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhLmgKaW5kZXggMjM4MGE0MmQ1ZmE1YWNjOTdhMGYwNmY1
ODUxZjg3ZGVjM2NjMDk4Ny4uNTU5MTM2YjIzZjQ0NTQxNWFiZjYyODIwM2Q3ZDBmZWJkZmM0ZGNk
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNh
dG9yUmVzcG9uc2VEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9B
dXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhLmgKQEAgLTU5LDcgKzU5LDcgQEAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4KIHN0YXRpYyB2b2lkIGVuY29kZUFycmF5QnVmZmVyKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IEFycmF5QnVmZmVyJiBidWZmZXIpCiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4oYnVmZmVyLmJ5dGVMZW5ndGgoKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVG
aXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYnVmZmVyLmRh
dGEoKSksIGJ1ZmZlci5ieXRlTGVuZ3RoKCksIDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRM
ZW5ndGhEYXRhKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihidWZmZXIuZGF0YSgpKSwgYnVm
ZmVyLmJ5dGVMZW5ndGgoKSwgMSk7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CkBAIC03
NSw3ICs3NSw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gZGVjb2RlQXJyYXlCdWZmZXIoRGVjb2Rl
ciYgZGVjb2RlcikKICAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobGVu
Z3RoLnZhbHVlKCksIHNpemVvZih1aW50OF90KSk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEo
cmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oYnVmZmVyLT5kYXRhKCkpLCBsZW5ndGgudmFsdWUo
KSwgMSkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShzdGF0aWNfY2Fz
dDx1aW50OF90Kj4oYnVmZmVyLT5kYXRhKCkpLCBsZW5ndGgudmFsdWUoKSwgMSkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBidWZmZXI7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXgg
M2UyNGVhNmY2NTRmOTIxZTQ4NDE3ZmUwZWZjNGMyOGM0YzI1NzljMC4uMGI3MTFiYWU3MjhmMGE4
MjVjYzVmNmZjZDhhZWQyOWZlNTA5NTA3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtNDk1LDcgKzQ5NSw3
IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6c3RhcnRDbG9zaW5nSGFuZHNoYWtlKGludCBjb2Rl
LCBjb25zdCBTdHJpbmcmIHJlYXNvbikKICAgICAgICAgYnVmLmFwcGVuZChoaWdoQnl0ZSk7CiAg
ICAgICAgIGJ1Zi5hcHBlbmQobG93Qnl0ZSk7CiAgICAgICAgIGF1dG8gcmVhc29uVVRGOCA9IHJl
YXNvbi51dGY4KCk7Ci0gICAgICAgIGJ1Zi5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4ocmVhc29uVVRGOC5kYXRhKCkpLCByZWFzb25VVEY4Lmxlbmd0aCgpKTsKKyAgICAg
ICAgYnVmLmFwcGVuZChyZWFzb25VVEY4LmNoYXJhY3RlcnM4KCksIHJlYXNvblVURjgubGVuZ3Ro
KCkpOwogICAgIH0KICAgICBlbnF1ZXVlUmF3RnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZUNs
b3NlLCBidWYuZGF0YSgpLCBidWYuc2l6ZSgpKTsKICAgICBSZWY8V2ViU29ja2V0Q2hhbm5lbD4g
cHJvdGVjdGVkVGhpcygqdGhpcyk7IC8vIEFuIGF0dGVtcHQgdG8gc2VuZCBjbG9zaW5nIGhhbmRz
aGFrZSBtYXkgZmFpbCwgd2hpY2ggd2lsbCBnZXQgdGhlIGNoYW5uZWwgY2xvc2VkIGFuZCBkZXJl
ZmVyZW5jZWQuCkBAIC03NDMsNyArNzQzLDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpwcm9j
ZXNzT3V0Z29pbmdGcmFtZVF1ZXVlKCkKICAgICAgICAgYXV0byBmcmFtZSA9IG1fb3V0Z29pbmdG
cmFtZVF1ZXVlLnRha2VGaXJzdCgpOwogICAgICAgICBzd2l0Y2ggKGZyYW1lLT5mcmFtZVR5cGUp
IHsKICAgICAgICAgY2FzZSBRdWV1ZWRGcmFtZVR5cGVTdHJpbmc6IHsKLSAgICAgICAgICAgIHNl
bmRGcmFtZShmcmFtZS0+b3BDb2RlLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihm
cmFtZS0+c3RyaW5nRGF0YS5kYXRhKCkpLCBmcmFtZS0+c3RyaW5nRGF0YS5sZW5ndGgoKSwgW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKGJvb2wgc3VjY2VzcykgeworICAg
ICAgICAgICAgc2VuZEZyYW1lKGZyYW1lLT5vcENvZGUsIGZyYW1lLT5zdHJpbmdEYXRhLmNoYXJh
Y3RlcnM4KCksIGZyYW1lLT5zdHJpbmdEYXRhLmxlbmd0aCgpLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpXSAoYm9vbCBzdWNjZXNzKSB7CiAgICAgICAgICAgICAgICAgaWYg
KCFzdWNjZXNzKQogICAgICAgICAgICAgICAgICAgICBmYWlsKCJGYWlsZWQgdG8gc2VuZCBXZWJT
b2NrZXQgZnJhbWUuIik7CiAgICAgICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKaW5kZXggYmUy
NDQxMjU2MDdiMWJjYzMyMjkzNDc0ZDU0NDg2MmJiNTZhYjZlNC4uZWJmN2VlNGE0NzQyMjk1OGFm
MGU3NDQxZGIxYTc1MTM4ZjZlNzhkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKQEAgLTEwMiwxMSArMTAy
LDExIEBAIHN0YXRpYyBTdHJpbmcgZ2VuZXJhdGVTZWNXZWJTb2NrZXRLZXkoKQogCiBTdHJpbmcg
V2ViU29ja2V0SGFuZHNoYWtlOjpnZXRFeHBlY3RlZFdlYlNvY2tldEFjY2VwdChjb25zdCBTdHJp
bmcmIHNlY1dlYlNvY2tldEtleSkKIHsKLSAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qgd2Vi
U29ja2V0S2V5R1VJRCA9ICIyNThFQUZBNS1FOTE0LTQ3REEtOTVDQS1DNUFCMERDODVCMTEiOwor
ICAgIGNvbnN0ZXhwciB1aW50OF90IHdlYlNvY2tldEtleUdVSURbXSA9ICIyNThFQUZBNS1FOTE0
LTQ3REEtOTVDQS1DNUFCMERDODVCMTEiOwogICAgIFNIQTEgc2hhMTsKICAgICBDU3RyaW5nIGtl
eURhdGEgPSBzZWNXZWJTb2NrZXRLZXkuYXNjaWkoKTsKLSAgICBzaGExLmFkZEJ5dGVzKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGtleURhdGEuZGF0YSgpKSwga2V5RGF0YS5sZW5n
dGgoKSk7Ci0gICAgc2hhMS5hZGRCeXRlcyhyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
Pih3ZWJTb2NrZXRLZXlHVUlEKSwgc3RybGVuKHdlYlNvY2tldEtleUdVSUQpKTsKKyAgICBzaGEx
LmFkZEJ5dGVzKGtleURhdGEuY2hhcmFjdGVyczgoKSwga2V5RGF0YS5sZW5ndGgoKSk7CisgICAg
c2hhMS5hZGRCeXRlcyh3ZWJTb2NrZXRLZXlHVUlELCBzdGQ6OnNpemUod2ViU29ja2V0S2V5R1VJ
RCkpOwogICAgIFNIQTE6OkRpZ2VzdCBoYXNoOwogICAgIHNoYTEuY29tcHV0ZUhhc2goaGFzaCk7
CiAgICAgcmV0dXJuIGJhc2U2NEVuY29kZVRvU3RyaW5nKGhhc2guZGF0YSgpLCBTSEExOjpoYXNo
U2l6ZSk7CkBAIC0zMjgsOCArMzI4LDggQEAgVVJMIFdlYlNvY2tldEhhbmRzaGFrZTo6aHR0cFVS
TEZvckF1dGhlbnRpY2F0aW9uQW5kQ29va2llcygpIGNvbnN0CiAvLyAiVGhlIEhUVFAgdmVyc2lv
biBNVVNUIGJlIGF0IGxlYXN0IDEuMS4iCiBzdGF0aWMgaW5saW5lIGJvb2wgaGVhZGVySGFzVmFs
aWRIVFRQVmVyc2lvbihTdHJpbmdWaWV3IGh0dHBTdGF0dXNMaW5lKQogewotICAgIGNvbnN0IGNo
YXIqIGh0dHBWZXJzaW9uU3RhdGljUHJlYW1ibGVMaXRlcmFsID0gIkhUVFAvIjsKLSAgICBTdHJp
bmdWaWV3IGh0dHBWZXJzaW9uU3RhdGljUHJlYW1ibGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBM
Q2hhcio+KGh0dHBWZXJzaW9uU3RhdGljUHJlYW1ibGVMaXRlcmFsKSwgc3RybGVuKGh0dHBWZXJz
aW9uU3RhdGljUHJlYW1ibGVMaXRlcmFsKSk7CisgICAgY29uc3RleHByIHVpbnQ4X3QgaHR0cFZl
cnNpb25TdGF0aWNQcmVhbWJsZUxpdGVyYWxbXSA9ICJIVFRQLyI7CisgICAgU3RyaW5nVmlldyBo
dHRwVmVyc2lvblN0YXRpY1ByZWFtYmxlKGh0dHBWZXJzaW9uU3RhdGljUHJlYW1ibGVMaXRlcmFs
LCBzdGQ6OnNpemUoaHR0cFZlcnNpb25TdGF0aWNQcmVhbWJsZUxpdGVyYWwpKTsKICAgICBpZiAo
IWh0dHBTdGF0dXNMaW5lLnN0YXJ0c1dpdGgoaHR0cFZlcnNpb25TdGF0aWNQcmVhbWJsZSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKaW5kZXggOWQ5ZTUyZGFlYzBjMDRl
ZDIxNjFlYjgyNTZhZmE2Nzc1NTE1ZTI0OC4uYzQ1MmM4M2ZiZDVjZTg5NWJkZDAzMWFjZjE0Njhm
Nzg2NTA2MjJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
QnVmZmVyU291cmNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCkBAIC01MiwxMiArNTIsMTIgQEAgcHVibGljOgog
ICAgICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICAgICAgaWYgKCFtX2NvbnRh
aW5zT25seUFTQ0lJKSB7Ci0gICAgICAgICAgICBtX2NvbnRhaW5zT25seUFTQ0lJID0gY2hhcmFj
dGVyc0FyZUFsbEFTQ0lJKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihtX3NjcmlwdEJ1
ZmZlci5idWZmZXIoKS0+ZGF0YSgpKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7
CisgICAgICAgICAgICBtX2NvbnRhaW5zT25seUFTQ0lJID0gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJ
KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigp
LT5zaXplKCkpOwogICAgICAgICAgICAgaWYgKCptX2NvbnRhaW5zT25seUFTQ0lJKQotICAgICAg
ICAgICAgICAgIG1fc2NyaXB0SGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNr
VG9wOEJpdHMocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KG1fc2NyaXB0QnVmZmVyLmJ1
ZmZlcigpLT5kYXRhKCkpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKKyAgICAg
ICAgICAgICAgICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFz
a1RvcDhCaXRzKG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVy
LmJ1ZmZlcigpLT5zaXplKCkpOwogICAgICAgICB9CiAgICAgICAgIGlmICgqbV9jb250YWluc09u
bHlBU0NJSSkKLSAgICAgICAgICAgIHJldHVybiB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPihtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpIH07CisgICAgICAgICAgICByZXR1
cm4geyBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4obV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSkgfTsKIAogICAgICAgICBpZiAoIW1f
Y2FjaGVkU2NyaXB0U3RyaW5nKSB7CiAgICAgICAgICAgICBtX2NhY2hlZFNjcmlwdFN0cmluZyA9
IG1fc2NyaXB0QnVmZmVyLnRvU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA2YzY0YTA0NGY1NjBmZjQy
OTA4YzkwY2Y0YzdjMjQ2YWQ2N2FjODhmLi4wYjdmZGE0ZDhkNjBlOTkxNTNhNDRmMTE0YWVmMTA0
YWFlZTdkZmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTIzNDAsNyArMjM0MCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIGlmIChpczhCaXQpIHsKICAgICAgICAgICAgIGlmICgoZW5kIC0gcHRyKSA8IHN0YXRpY19j
YXN0PGludD4obGVuZ3RoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
ICAgICBzdHIgPSBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHB0ciksIGxl
bmd0aCk7CisgICAgICAgICAgICBzdHIgPSBTdHJpbmcgeyBwdHIsIGxlbmd0aCB9OwogICAgICAg
ICAgICAgcHRyICs9IGxlbmd0aDsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9TZXJpYWxpemVk
TkZBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1NlcmlhbGl6ZWRORkEu
Y3BwCmluZGV4IDBiMzMzODlhNzY5MjUwMGYyNDRmZWY0OGI3MjE3MjVjM2Y3ZmExM2UuLjA0YzZk
YTVhODQ4ZDA4OTFmMzNmNGY4MzlkYTk1MmI4Yzc2NzlhMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1NlcmlhbGl6ZWRORkEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1NlcmlhbGl6ZWRORkEuY3BwCkBAIC0xMDcsNyArMTA3
LDcgQEAgU2VyaWFsaXplZE5GQTo6U2VyaWFsaXplZE5GQShGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
RGF0YSYmIGZpbGUsIE1ldGFkYXRhJiYgbWV0YWQKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBjb25z
dCBUKiBTZXJpYWxpemVkTkZBOjpwb2ludGVyQXRPZmZzZXRJbkZpbGUoc2l6ZV90IG9mZnNldCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obV9maWxlLmRhdGEoKSkgKyBvZmZzZXQpOworICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IFQqPihzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
Kj4obV9maWxlLmRhdGEoKSkgKyBvZmZzZXQpOwogfQogCiBhdXRvIFNlcmlhbGl6ZWRORkE6Om5v
ZGVzKCkgY29uc3QgLT4gY29uc3QgUmFuZ2U8SW1tdXRhYmxlTkZBTm9kZT4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNw
cAppbmRleCBmZGFiY2QzZTdiODkyZTUwMWQ4Nzk0MzJhYzQ2YzNkNzEzZjhlYjAwLi4wZWUwN2Ri
ZTZhMjFlOGIyMGViYmU3YjVkYmIxZmYxNDJhZTM5ZGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0x
NjAwLDEwICsxNjAwLDEwIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IE5vZGU6OnNldFRleHRDb250ZW50
KGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICByZXR1cm4geyB9OwogfQogCi1zdGF0aWMgU0hBMTo6
RGlnZXN0IGhhc2hQb2ludGVyKHZvaWQqIHBvaW50ZXIpCitzdGF0aWMgU0hBMTo6RGlnZXN0IGhh
c2hQb2ludGVyKGNvbnN0IHZvaWQqIHBvaW50ZXIpCiB7CiAgICAgU0hBMSBzaGExOwotICAgIHNo
YTEuYWRkQnl0ZXMocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oJnBvaW50ZXIpLCBz
aXplb2YocG9pbnRlcikpOworICAgIHNoYTEuYWRkQnl0ZXMoc3RhdGljX2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KHBvaW50ZXIpLCBzaXplb2YocG9pbnRlcikpOwogICAgIFNIQTE6OkRpZ2VzdCBkaWdl
c3Q7CiAgICAgc2hhMS5jb21wdXRlSGFzaChkaWdlc3QpOwogICAgIHJldHVybiBkaWdlc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEVuY29kZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL1RleHRFbmNvZGVyLmNwcAppbmRleCBkNmQxNDQzZDRmZjk4NTM3MWEwYjhkZmQ1
NWJmZWM5NGI1YjNmYzU1Li4wYWI5ZjE0N2YwOWVhMWUzNjhmOTViZTM3YjljZGYxMmRiYzcwNzgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEVuY29kZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UZXh0RW5jb2Rlci5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgUmVmUHRy
PFVpbnQ4QXJyYXk+IFRleHRFbmNvZGVyOjplbmNvZGUoU3RyaW5nJiYgaW5wdXQpIGNvbnN0CiB7
CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgbmVlZCB0byBhbGxvY2F0ZSBhIENTdHJpbmcg
dG8gZW5jb2RlIGludG8gYSBVaW50OEFycmF5LgogICAgIENTdHJpbmcgdXRmOCA9IGlucHV0LnV0
ZjgoKTsKLSAgICByZXR1cm4gVWludDhBcnJheTo6dHJ5Q3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KHV0ZjguZGF0YSgpKSwgdXRmOC5sZW5ndGgoKSk7CisgICAgcmV0dXJu
IFVpbnQ4QXJyYXk6OnRyeUNyZWF0ZSh1dGY4LmNoYXJhY3RlcnM4KCksIHV0ZjgubGVuZ3RoKCkp
OwogfQogCiBhdXRvIFRleHRFbmNvZGVyOjplbmNvZGVJbnRvKFN0cmluZyYmIGlucHV0LCBSZWY8
VWludDhBcnJheT4mJiBhcnJheSkgLT4gRW5jb2RlSW50b1Jlc3VsdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyU3RyZWFtRW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vVGV4dEVuY29kZXJTdHJlYW1FbmNvZGVyLmNwcAppbmRleCBjZTEwODY3N2I5NjY1
ZDc1NjgxMmVhZGJhMjNmNWIyMzA5YjU0NmZmLi5hMTA0ZmRmMTRjYzIwZDJlMTg0OTRhNGEyM2Q1
ZjNhNDRkM2ViYmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEVuY29kZXJT
dHJlYW1FbmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEVuY29kZXJTdHJl
YW1FbmNvZGVyLmNwcApAQCAtNzcsOCArNzcsOCBAQCBSZWZQdHI8VWludDhBcnJheT4gVGV4dEVu
Y29kZXJTdHJlYW1FbmNvZGVyOjpmbHVzaCgpCiAgICAgaWYgKCFtX3BlbmRpbmdIaWdoU3Vycm9n
YXRlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gYnl0ZVNlcXVlbmNlID0g
Ilx4RUZceEJGXHhCRCI7Ci0gICAgcmV0dXJuIFVpbnQ4QXJyYXk6OnRyeUNyZWF0ZShyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihieXRlU2VxdWVuY2UpLCAzKTsKKyAgICBjb25zdGV4
cHIgdWludDhfdCBieXRlU2VxdWVuY2VbXSA9IHsgMHhFRiwgMHhCRiwgMHhCRCB9OworICAgIHJl
dHVybiBVaW50OEFycmF5Ojp0cnlDcmVhdGUoYnl0ZVNlcXVlbmNlLCBzdGQ6OnNpemUoYnl0ZVNl
cXVlbmNlKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggYTRlNTMyMzE5OTMzZjBhODYxMmQyYzIy
NTE4Mjk4ZDU5ZDRlOTZiMi4uNzgwOGFmOWEzNWRkOGExZTFhN2FjMDQ3MTQ2ZGRlNjEzYTAzYmRl
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVh
ZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50
UmVhZGVyQ29jb2EubW0KQEAgLTQ4Niw3ICs0ODYsNyBAQCBzdGF0aWMgU3RyaW5nIHNhbml0aXpl
TWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZGVzdGluYXRpb25Eb2N1
bQogICAgICAgICBDU3RyaW5nIHV0ZjggPSBzdWJmcmFtZU1hcmt1cC51dGY4KCk7CiAgICAgICAg
IFZlY3Rvcjx1aW50OF90PiBibG9iQnVmZmVyOwogICAgICAgICBibG9iQnVmZmVyLnJlc2VydmVD
YXBhY2l0eSh1dGY4Lmxlbmd0aCgpKTsKLSAgICAgICAgYmxvYkJ1ZmZlci5hcHBlbmQocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odXRmOC5kYXRhKCkpLCB1dGY4Lmxlbmd0aCgpKTsK
KyAgICAgICAgYmxvYkJ1ZmZlci5hcHBlbmQodXRmOC5jaGFyYWN0ZXJzOCgpLCB1dGY4Lmxlbmd0
aCgpKTsKICAgICAgICAgYXV0byBibG9iID0gQmxvYjo6Y3JlYXRlKCZkZXN0aW5hdGlvbkRvY3Vt
ZW50LCBXVEZNb3ZlKGJsb2JCdWZmZXIpLCB0eXBlKTsKIAogICAgICAgICBTdHJpbmcgc3ViZnJh
bWVCbG9iVVJMID0gRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZGVzdGluYXRpb25Eb2N1bWVudCwg
YmxvYik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDZkN2M5YzhiMGQ4MzRiOWJlM2Q4NDU0YjIyMTNh
ZTBkYTE0YTY2OGIuLjAyNmNlYmIyYjI3OGIzODc1MDJlMzAyNjk0ODQwODY5NGZiZWI3ODAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UuY3BwCkBAIC00OTYyLDcgKzQ5NjIsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnRleEltYWdlQXJyYXlCdWZmZXJWaWV3SGVscGVyKFRleEltYWdlRnVuY3Rp
b25JRAogICAgICAgICBzb3VyY2VUeXBlID0gVGV4SW1hZ2VEaW1lbnNpb246OlRleDNEOwogICAg
IGlmICghdmFsaWRhdGVUZXhGdW5jRGF0YShmdW5jdGlvbk5hbWUsIHNvdXJjZVR5cGUsIHdpZHRo
LCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIHBpeGVscy5nZXQoKSwgbnVsbERpc3Bvc2l0
aW9uLCBzcmNPZmZzZXQpKQogICAgICAgICByZXR1cm47Ci0gICAgdWludDhfdCogZGF0YSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHBpeGVscyA/IHBpeGVscy0+YmFzZUFkZHJlc3MoKSA6
IG51bGxwdHIpOworICAgIGF1dG8gZGF0YSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihwaXhlbHMg
PyBwaXhlbHMtPmJhc2VBZGRyZXNzKCkgOiBudWxscHRyKTsKICAgICBpZiAoc3JjT2Zmc2V0KSB7
CiAgICAgICAgIEFTU0VSVChwaXhlbHMpOwogICAgICAgICAvLyBObyBuZWVkIHRvIGNoZWNrIG92
ZXJmbG93IGJlY2F1c2UgdmFsaWRhdGVUZXhGdW5jRGF0YSgpIGFscmVhZHkgZGlkLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAppbmRleCAxZjM5NGJhOTdj
OGZmMmFlNTQyY2U2MjEyZWI1MzYwYWNjNTM2NDEzLi4wZTlkZTUyZGUxMGU3NTM2MGI1NTA5YTk1
MDUyZGRmNzY5ODU0ZDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9N
UGF0Y2hTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hT
dXBwb3J0LmNwcApAQCAtMzk3LDcgKzM5Nyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTVBhdGNo
U3VwcG9ydDo6aW5uZXJQYXRjaENoaWxkcmVuKENvbnRhaW5lck5vZGUmIHBhcmVudE5vZGUsCiBz
dGF0aWMgdm9pZCBhZGRTdHJpbmdUb1NIQTEoU0hBMSYgc2hhMSwgY29uc3QgU3RyaW5nJiBzdHJp
bmcpCiB7CiAgICAgQ1N0cmluZyBjU3RyaW5nID0gc3RyaW5nLnV0ZjgoKTsKLSAgICBzaGExLmFk
ZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGNTdHJpbmcuZGF0YSgpKSwg
Y1N0cmluZy5sZW5ndGgoKSk7CisgICAgc2hhMS5hZGRCeXRlcyhjU3RyaW5nLmNoYXJhY3RlcnM4
KCksIGNTdHJpbmcubGVuZ3RoKCkpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8RE9NUGF0Y2hTdXBw
b3J0OjpEaWdlc3Q+IERPTVBhdGNoU3VwcG9ydDo6Y3JlYXRlRGlnZXN0KE5vZGUmIG5vZGUsIFVu
dXNlZE5vZGVzTWFwKiB1bnVzZWROb2Rlc01hcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9U
ZXh0UmVzb3VyY2VEZWNvZGVyLmNwcAppbmRleCAyMmIyYmQ3NzFjNGZkMzRjNWFjYjRjODYxMDZm
N2ZhOTI5NjhiZWU4Li40NzcwMmE1NzRjYzhiZjQyYWY5NjM1NjE1MGI2MWI5NjdjYWFmYWEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwCkBAIC0z
MzMsNyArMzMzLDcgQEAgU3RyaW5nIFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChj
b25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW4KICAgICBhdXRvIGRlY29kZXIg
PSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvcGxhaW4iLCAiVVRGLTgiKTsKICAg
ICBpZiAoc2hvdWxkUHJlcGVuZEJPTShkYXRhLCBsZW5ndGgpKQogICAgICAgICBkZWNvZGVyLT5k
ZWNvZGUoIlx4ZWZceGJiXHhiZiIsIDMpOwotICAgIHJldHVybiBkZWNvZGVyLT5kZWNvZGVBbmRG
bHVzaChyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgbGVuZ3RoKTsKKyAgICBy
ZXR1cm4gZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YSwgbGVuZ3RoKTsKIH0KIAogdm9pZCBU
ZXh0UmVzb3VyY2VEZWNvZGVyOjpzZXRFbmNvZGluZyhjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29k
aW5nLCBFbmNvZGluZ1NvdXJjZSBzb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTY3JpcHQuY3BwCmluZGV4IDE3NDZhMzg5OTUyZThhNDdjZDdlMDQ3Yjk5YWI0MjM1
ZjMyZmViYTAuLmRjMTAxY2JlMDZkOWIzZjAyOGI3YWE4MTE1N2I5NDg3MTkyZWE2ZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC02Miw3ICs2
Miw3IEBAIFN0cmluZ1ZpZXcgQ2FjaGVkU2NyaXB0OjpzY3JpcHQoKQogICAgIGlmIChtX2RlY29k
aW5nU3RhdGUgPT0gTmV2ZXJEZWNvZGVkCiAgICAgICAgICYmIFRleHRFbmNvZGluZyhlbmNvZGlu
ZygpKS5pc0J5dGVCYXNlZEVuY29kaW5nKCkKICAgICAgICAgJiYgbV9kYXRhLT5zaXplKCkKLSAg
ICAgICAgJiYgY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPihtX2RhdGEtPmRhdGEoKSksIG1fZGF0YS0+c2l6ZSgpKSkgeworICAgICAgICAmJiBjaGFy
YWN0ZXJzQXJlQWxsQVNDSUkobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSkgewogCiAg
ICAgICAgIG1fZGVjb2RpbmdTdGF0ZSA9IERhdGFBbmREZWNvZGVkU3RyaW5nSGF2ZVNhbWVCeXRl
czsKIApAQCAtNzAsMTEgKzcwLDExIEBAIFN0cmluZ1ZpZXcgQ2FjaGVkU2NyaXB0OjpzY3JpcHQo
KQogICAgICAgICBzZXREZWNvZGVkU2l6ZSgwKTsKICAgICAgICAgbV9kZWNvZGVkRGF0YURlbGV0
aW9uVGltZXIuc3RvcCgpOwogCi0gICAgICAgIG1fc2NyaXB0SGFzaCA9IFN0cmluZ0hhc2hlcjo6
Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+
KG1fZGF0YS0+ZGF0YSgpKSwgbV9kYXRhLT5zaXplKCkpOworICAgICAgICBtX3NjcmlwdEhhc2gg
PSBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKG1fZGF0YS0+ZGF0YSgp
LCBtX2RhdGEtPnNpemUoKSk7CiAgICAgfQogCiAgICAgaWYgKG1fZGVjb2RpbmdTdGF0ZSA9PSBE
YXRhQW5kRGVjb2RlZFN0cmluZ0hhdmVTYW1lQnl0ZXMpCi0gICAgICAgIHJldHVybiB7IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihtX2RhdGEtPmRhdGEoKSksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihtX2RhdGEtPnNpemUoKSkgfTsKKyAgICAgICAgcmV0dXJuIHsgbV9kYXRhLT5kYXRh
KCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2RhdGEtPnNpemUoKSkgfTsKIAogICAgIGlmICgh
bV9zY3JpcHQpIHsKICAgICAgICAgbV9zY3JpcHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNo
KG1fZGF0YS0+ZGF0YSgpLCBlbmNvZGVkU2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbQppbmRleCBlNTE5YmU3
YTg0YjAxNDU0YjQ2M2Y2ZGMzNTg0MzcwMDcyOGZjOGI2Li4yOWRmOGM2YjJhMDcwOTVhZWQ3OWY1
ZWJmM2I0NTVlM2NiOGM5YmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29h
L1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9j
b2NvYS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tCkBAIC0yNjksNyArMjY5LDcgQEAgc3Rh
dGljIHZvaWQgc2hvd1RleHQoQ0dDb250ZXh0UmVmIGNvbnRleHQsIGZsb2F0IHgsIGZsb2F0IHks
IENHQ29sb3JSZWYgY29sb3IsIGMKICAgICBDRlR5cGVSZWYgdmFsdWVzW10gPSB7IGZvbnQuZ2V0
KCksIGtDRkJvb2xlYW5UcnVlIH07CiAgICAgYXV0byBhdHRyaWJ1dGVzID0gYWRvcHRDRihDRkRp
Y3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga2V5cywgdmFsdWVzLCBXVEZfQVJS
QVlfTEVOR1RIKGtleXMpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBl
RGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAgICAgQ1N0cmluZyBjc3RyID0gdGV4dC5hc2Np
aSgpOwotICAgIGF1dG8gc3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhCeXRlc05v
Q29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4o
Y3N0ci5kYXRhKCkpLCBjc3RyLmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ0FTQ0lJLCBmYWxz
ZSwga0NGQWxsb2NhdG9yTnVsbCkpOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHRDRihDRlN0cmlu
Z0NyZWF0ZVdpdGhCeXRlc05vQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjc3RyLmNoYXJhY3Rl
cnM4KCksIGNzdHIubGVuZ3RoKCksIGtDRlN0cmluZ0VuY29kaW5nQVNDSUksIGZhbHNlLCBrQ0ZB
bGxvY2F0b3JOdWxsKSk7CiAgICAgYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHRDRihDRkF0
dHJpYnV0ZWRTdHJpbmdDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RyaW5nLmdldCgpLCBh
dHRyaWJ1dGVzLmdldCgpKSk7CiAgICAgYXV0byBsaW5lID0gYWRvcHRDRihDVExpbmVDcmVhdGVX
aXRoQXR0cmlidXRlZFN0cmluZyhhdHRyaWJ1dGVkU3RyaW5nLmdldCgpKSk7CiAgICAgQ0dDb250
ZXh0U2V0VGV4dFBvc2l0aW9uKGNvbnRleHQsIHgsIHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCmluZGV4IDVlNDQ2NmNkM2Yx
NzE4OGEyN2MwY2RlMWVhOGE4MDFiMDJhMjQ3ZDUuLmUyYTNmNTQyNjcwMzZhYTVjZTcxYjBmM2Zl
YzEzMzk3NzkzMGJkMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlckNodW5rUmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXJDaHVua1JlYWRlci5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCBib29sIFNoYXJlZEJ1
ZmZlckNodW5rUmVhZGVyOjpuZXh0Q2h1bmsoVmVjdG9yPHVpbnQ4X3Q+JiBjaHVuaywgYm9vbCBp
bmNsdWRlU2VwYQogICAgICAgICBpZiAoIW1fc2VnbWVudExlbmd0aCkgewogICAgICAgICAgICAg
bV9yZWFjaGVkRW5kT2ZGaWxlID0gdHJ1ZTsKICAgICAgICAgICAgIGlmIChtX3NlcGFyYXRvcklu
ZGV4ID4gMCkKLSAgICAgICAgICAgICAgICBjaHVuay5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4obV9zZXBhcmF0b3IuZGF0YSgpKSwgbV9zZXBhcmF0b3JJbmRleCk7Cisg
ICAgICAgICAgICAgICAgY2h1bmsuYXBwZW5kKG1fc2VwYXJhdG9yLmNoYXJhY3RlcnM4KCksIG1f
c2VwYXJhdG9ySW5kZXgpOwogICAgICAgICAgICAgcmV0dXJuICFjaHVuay5pc0VtcHR5KCk7CiAg
ICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9T
aGFyZWRCdWZmZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZm
ZXJDRi5jcHAKaW5kZXggYTExMGQxMzkzMGU4NjExMzA3ZGQwNTVmZjJhNDcwMGNmNGU5YzllMy4u
ODk1ZWJlMDUxZjE1MmE3YTgzYTQ1YzdiOTBkZGMwYzI3MGE0OWVlMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAtNDcsNyArNDcsNyBAQCBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiAg
ICAgICAgIGlmIChhdXRvIGRhdGEgPSBXVEY6OmdldF9pZjxSZXRhaW5QdHI8Q0ZEYXRhUmVmPj4o
bV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2ltbXV0YWJsZURhdGEpKQogICAgICAgICAgICAgcmV0
dXJuICpkYXRhOwogICAgIH0KLSAgICByZXR1cm4gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0
ciwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGRhdGEoKSksIHNpemUoKSkpOworICAg
IHJldHVybiBhZG9wdENGKENGRGF0YUNyZWF0ZShudWxscHRyLCBkYXRhKCksIHNpemUoKSkpOwog
fQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMv
S2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmlj
L0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCmluZGV4IDIxY2MxZWJlNGE5MDFhMTNjNzQ0MDNkYzAx
Y2YyZmM4MTgxMzAxMmQuLjBjMzE5ODE3Y2U3NjU2MTFhZWQyY2Y0ZGI0OTYzNzY0NDRlYmRkMWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVy
R2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVu
Y29kZXJHZW5lcmljLmNwcApAQCAtNDAsNyArNDAsNyBAQCB2b2lkIEtleWVkRW5jb2RlckdlbmVy
aWM6OmVuY29kZVN0cmluZyhjb25zdCBTdHJpbmcmIGtleSkKIHsKICAgICBhdXRvIHV0ZjggPSBr
ZXkudXRmOCgpOwogICAgIG1fZW5jb2RlciA8PCB1dGY4Lmxlbmd0aCgpOwotICAgIG1fZW5jb2Rl
ci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
dXRmOC5kYXRhKCkpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICBtX2VuY29kZXIuZW5jb2RlRml4ZWRM
ZW5ndGhEYXRhKHV0ZjguY2hhcmFjdGVyczgoKSwgdXRmOC5sZW5ndGgoKSk7CiB9CiAKIHZvaWQg
S2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0
IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3Qgc2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRleCA3ZWU0YTc2OTBl
OTVlMjc2YWRiYjk0ODhhYjkxNTZmZGU3N2M5YmIxLi5hN2E5MzgwZGYyNzFlNWE2ZGU5MTQ4NDUx
ZDNiODMyZmRkMzk1NTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC03NTcsNyArNzU3LDcgQEAgYm9vbCBH
cmFwaGljc0NvbnRleHRHTDo6cGFja0ltYWdlRGF0YShJbWFnZSogaW1hZ2UsIGNvbnN0IHZvaWQq
IHBpeGVscywgR0NHTGVudW0KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGRhdGEucmVzaXpl
KHBhY2tlZFNpemUpOwogCi0gICAgaWYgKCFwYWNrUGl4ZWxzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KHBpeGVscyksIHNvdXJjZUZvcm1hdCwgc291cmNlSW1hZ2VXaWR0aCwgc291
cmNlSW1hZ2VIZWlnaHQsIHNvdXJjZUltYWdlU3ViUmVjdGFuZ2xlLCBkZXB0aCwgc291cmNlVW5w
YWNrQWxpZ25tZW50LCB1bnBhY2tJbWFnZUhlaWdodCwgZm9ybWF0LCB0eXBlLCBhbHBoYU9wLCBk
YXRhLmRhdGEoKSwgZmxpcFkpKQorICAgIGlmICghcGFja1BpeGVscyhzdGF0aWNfY2FzdDxjb25z
dCB1aW50OF90Kj4ocGl4ZWxzKSwgc291cmNlRm9ybWF0LCBzb3VyY2VJbWFnZVdpZHRoLCBzb3Vy
Y2VJbWFnZUhlaWdodCwgc291cmNlSW1hZ2VTdWJSZWN0YW5nbGUsIGRlcHRoLCBzb3VyY2VVbnBh
Y2tBbGlnbm1lbnQsIHVucGFja0ltYWdlSGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGFscGhhT3AsIGRh
dGEuZGF0YSgpLCBmbGlwWSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoSW1hZ2VP
YnNlcnZlciogb2JzZXJ2ZXIgPSBpbWFnZS0+aW1hZ2VPYnNlcnZlcigpKQogICAgICAgICBvYnNl
cnZlci0+ZGlkRHJhdygqaW1hZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAKaW5kZXggYWQ1ZDNlNGYzMjdlZWY0
ODc4NTljYmM0MTViNzU2ZDExZTA0NWZhNy4uZDI4NzdkNjgzMGMzYmM4YTA0MjE4ZjZiYTMzNDRm
MzBmYWJmODZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgc3RkOjpvcHRp
b25hbDxQaXhlbEJ1ZmZlcj4gSW1hZ2VCdWZmZXJCYWNrZW5kOjpnZXRQaXhlbEJ1ZmZlcihjb25z
dCBQaXhlbEJ1ZmZlckYKICAgICBDb25zdFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcgc291cmNl
IHsKICAgICAgICAgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBwaXhl
bEZvcm1hdCgpLCBjb2xvclNwYWNlKCkgfSwKICAgICAgICAgYnl0ZXNQZXJSb3coKSwKLSAgICAg
ICAgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZGF0YSkgKyBzb3VyY2VSZWN0Q2xpcHBlZC55
KCkgKiBzb3VyY2UuYnl0ZXNQZXJSb3cgKyBzb3VyY2VSZWN0Q2xpcHBlZC54KCkgKiA0CisgICAg
ICAgIHN0YXRpY19jYXN0PHVpbnQ4X3QqPihkYXRhKSArIHNvdXJjZVJlY3RDbGlwcGVkLnkoKSAq
IHNvdXJjZS5ieXRlc1BlclJvdyArIHNvdXJjZVJlY3RDbGlwcGVkLngoKSAqIDQKICAgICB9Owog
ICAgIAogICAgIFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcgZGVzdGluYXRpb24gewpAQCAtMTU5
LDcgKzE1OSw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRQaXhlbEJ1ZmZlcihjb25z
dCBQaXhlbEJ1ZmZlciYgc291cmNlUGl4ZWxCdWZmZXIsIGNvCiAgICAgUGl4ZWxCdWZmZXJDb252
ZXJzaW9uVmlldyBkZXN0aW5hdGlvbiB7CiAgICAgICAgIHsgZGVzdGluYXRpb25BbHBoYUZvcm1h
dCwgcGl4ZWxGb3JtYXQoKSwgY29sb3JTcGFjZSgpIH0sCiAgICAgICAgIGJ5dGVzUGVyUm93KCks
Ci0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEpICsgZGVzdGluYXRpb25S
ZWN0LnkoKSAqIGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ICsgZGVzdGluYXRpb25SZWN0LngoKSAq
IDQKKyAgICAgICAgc3RhdGljX2Nhc3Q8dWludDhfdCo+KGRhdGEpICsgZGVzdGluYXRpb25SZWN0
LnkoKSAqIGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ICsgZGVzdGluYXRpb25SZWN0LngoKSAqIDQK
ICAgICB9OwogCiAgICAgY29udmVydEltYWdlUGl4ZWxzKHNvdXJjZSwgZGVzdGluYXRpb24sIGRl
c3RpbmF0aW9uUmVjdC5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRU
cmFja1ByaXZhdGVBVkYuY3BwCmluZGV4IDFlNjJjY2Y3YTVhMzdhMzk1ZTUzZjIzM2U2Njk1YzI3
MzQ0ODZjMzcuLjNmYTk2MDllMWFmNWQ3MWJhYmQ1NGRjYzQxMmM2NjkyNzI5MGEzYTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJh
bmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAKQEAgLTUz
MSw3ICs1MzEsNyBAQCB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NOYXRp
dmVTYW1wbGVzKENGQXJyYXlSZWYgbmF0aXZlU2FtcGxlcywgYwogICAgICAgICAgICAgLy8gQSBX
ZWJWVFQgaGVhZGVyIGlzIHRlcm1pbmF0ZWQgYnkgIk9uZSBvciBtb3JlIFdlYlZUVCBsaW5lIHRl
cm1pbmF0b3JzIiBzbyBhcHBlbmQgdHdvIGxpbmUgZmVlZHMgdG8gbWFrZSBzdXJlIHRoZSBwYXJz
ZXIKICAgICAgICAgICAgIC8vIHJlY2NvZ25pemVkIHRoaXMgc3RyaW5nIGFzIGEgZnVsbCBoZWFk
ZXIuCiAgICAgICAgICAgICBTdHJpbmdCdWlsZGVyIGhlYWRlcjsKLSAgICAgICAgICAgIGhlYWRl
ci5hcHBlbmRDaGFyYWN0ZXJzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+
KENGRGF0YUdldEJ5dGVQdHIod2VidnR0SGVhZGVyRGF0YSkpLCBsZW5ndGgpOworICAgICAgICAg
ICAgaGVhZGVyLmFwcGVuZENoYXJhY3RlcnMoQ0ZEYXRhR2V0Qnl0ZVB0cih3ZWJ2dHRIZWFkZXJE
YXRhKSwgbGVuZ3RoKTsKICAgICAgICAgICAgIGhlYWRlci5hcHBlbmQoIlxuXG4iKTsKIAogICAg
ICAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgIlZUVCBoZWFkZXIgIiwgJmhlYWRlcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YuY3Bw
CmluZGV4IDcwOWMwODBkNGZmYjAyMTNjOGRiNmZkZDRjOGJmNzhhN2UxMjU2NmMuLmQ1ZjcyNTYy
NDBlMjE0ZjgwNTAwN2YxZDRhZDQ4OTcwZWUyMTY0MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZGb3VuZGF0
aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9jZi9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0YuY3BwCkBAIC03NCwxMSArNzQsMTEgQEAg
UmVmUHRyPFVpbnQ4QXJyYXk+IENETVNlc3Npb25BVkZvdW5kYXRpb25DRjo6Z2VuZXJhdGVLZXlS
ZXF1ZXN0KGNvbnN0IFN0cmluZyYsIFUKICAgICB9CiAKICAgICBhdXRvIGNlcnRpZmljYXRlRGF0
YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjZXJ0
aWZpY2F0ZS0+Ynl0ZUxlbmd0aCgpKSk7Ci0gICAgQ0ZEYXRhQXBwZW5kQnl0ZXMoY2VydGlmaWNh
dGVEYXRhLmdldCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oY2VydGlmaWNhdGUt
PmJhc2VBZGRyZXNzKCkpLCBjZXJ0aWZpY2F0ZS0+Ynl0ZUxlbmd0aCgpKTsKKyAgICBDRkRhdGFB
cHBlbmRCeXRlcyhjZXJ0aWZpY2F0ZURhdGEuZ2V0KCksIGNlcnRpZmljYXRlLT5kYXRhKCksIGNl
cnRpZmljYXRlLT5ieXRlTGVuZ3RoKCkpOwogCiAgICAgYXV0byBhc3NldFN0ciA9IGtleUlELnV0
ZjgoKTsKICAgICBhdXRvIGFzc2V0SUQgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgYXNzZXRTdHIubGVuZ3RoKCkpKTsKLSAgICBDRkRhdGFBcHBlbmRC
eXRlcyhhc3NldElELmdldCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oYXNzZXRT
dHIuZGF0YSgpKSwgYXNzZXRTdHIubGVuZ3RoKCkpOworICAgIENGRGF0YUFwcGVuZEJ5dGVzKGFz
c2V0SUQuZ2V0KCksIGFzc2V0U3RyLmNoYXJhY3RlcnM4KCksIGFzc2V0U3RyLmxlbmd0aCgpKTsK
IAogICAgIENGRXJyb3JSZWYgY2ZFcnJvciA9IG51bGxwdHI7CiAgICAgYXV0byBrZXlSZXF1ZXN0
ID0gYWRvcHRDRihBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0Q3JlYXRlU3RyZWFtaW5n
Q29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwKG1fcmVxdWVzdC5nZXQoKSwgY2VydGlmaWNhdGVE
YXRhLmdldCgpLCBhc3NldElELmdldCgpLCBudWxscHRyLCAmY2ZFcnJvcikpOwpAQCAtMTEwLDcg
KzExMCw3IEBAIHZvaWQgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGOjpyZWxlYXNlS2V5cygpCiBi
b29sIENETVNlc3Npb25BVkZvdW5kYXRpb25DRjo6dXBkYXRlKFVpbnQ4QXJyYXkqIGtleSwgUmVm
UHRyPFVpbnQ4QXJyYXk+JiBuZXh0TWVzc2FnZSwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwg
dWludDMyX3QmIHN5c3RlbUNvZGUpCiB7CiAgICAgYXV0byBrZXlEYXRhID0gYWRvcHRDRihDRkRh
dGFDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtleS0+Ynl0ZUxlbmd0aCgpKSk7
Ci0gICAgQ0ZEYXRhQXBwZW5kQnl0ZXMoa2V5RGF0YS5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBVSW50OCo+KGtleS0+YmFzZUFkZHJlc3MoKSksIGtleS0+Ynl0ZUxlbmd0aCgpKTsKKyAg
ICBDRkRhdGFBcHBlbmRCeXRlcyhrZXlEYXRhLmdldCgpLCBrZXktPmRhdGEoKSwga2V5LT5ieXRl
TGVuZ3RoKCkpOwogCiAgICAgQVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdEZpbmlzaExv
YWRpbmdXaXRoUmVzcG9uc2UobV9yZXF1ZXN0LmdldCgpLCBudWxscHRyLCBrZXlEYXRhLmdldCgp
LCBudWxscHRyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZDRi5jcHAKaW5kZXggYjQ1OWY2ZjE5YmY3NTRjZTllNTUyMjI5NWNiMmVhZWU4
MTRjNmYyNy4uM2VlNjAxZGQyNzA1YjIwYjAyMGVkN2RjOTU3YWRlODZlODc1MDVmYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0lu
YmFuZFRleHRUcmFja1ByaXZhdGVBVkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YuY3Bw
CkBAIC0yMDQsNyArMjA0LDcgQEAgYm9vbCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRjo6cmVh
ZE5hdGl2ZVNhbXBsZUJ1ZmZlcihDRkFycmF5UmVmIG5hdGl2ZVNhbXBsZXMKICAgICB9CiAKICAg
ICBtX3NhbXBsZUlucHV0QnVmZmVyLmdyb3cobV9zYW1wbGVJbnB1dEJ1ZmZlci5zaXplKCkgKyBi
dWZmZXJMZW5ndGgpOwotICAgIENGRGF0YUdldEJ5dGVzKHNhbXBsZUJ1ZmZlci0+YnVmZmVyLCBD
RlJhbmdlTWFrZSgwLCBidWZmZXJMZW5ndGgpLCByZWludGVycHJldF9jYXN0PFVJbnQ4Kj4obV9z
YW1wbGVJbnB1dEJ1ZmZlci5kYXRhKCkpICsgbV9zYW1wbGVJbnB1dEJ1ZmZlci5zaXplKCkgLSBi
dWZmZXJMZW5ndGgpOworICAgIENGRGF0YUdldEJ5dGVzKHNhbXBsZUJ1ZmZlci0+YnVmZmVyLCBD
RlJhbmdlTWFrZSgwLCBidWZmZXJMZW5ndGgpLCBtX3NhbXBsZUlucHV0QnVmZmVyLmRhdGEoKSAr
IG1fc2FtcGxlSW5wdXRCdWZmZXIuc2l6ZSgpIC0gYnVmZmVyTGVuZ3RoKTsKIAogICAgIGJ1ZmZl
ciA9IEFycmF5QnVmZmVyOjpjcmVhdGUobV9zYW1wbGVJbnB1dEJ1ZmZlci5kYXRhKCksIG1fc2Ft
cGxlSW5wdXRCdWZmZXIuc2l6ZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtQnVmZmVyLmNwcAppbmRleCBjNjgxODcwNDJkNjcwNWY3ODI2Yjg1MjVhMjQ3Njg4ZDU2ZGVk
MDUzLi5lZTZhNWQyZWVkNmEzZjk3ZTc0NjhjYWI5NmU5ZWUzNGQ2YjgzMDZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcApAQCAtNzAyLDcgKzcwMiw3IEBA
IEl0ZW1CdWZmZXJIYW5kbGUgSXRlbUJ1ZmZlcjo6Y3JlYXRlSXRlbUJ1ZmZlcihzaXplX3QgY2Fw
YWNpdHkpCiAgICAgY29uc3RleHByIHNpemVfdCBkZWZhdWx0SXRlbUJ1ZmZlckNhcGFjaXR5ID0g
MSA8PCAxMDsKIAogICAgIGF1dG8gbmV3QnVmZmVyQ2FwYWNpdHkgPSBzdGQ6Om1heChjYXBhY2l0
eSwgZGVmYXVsdEl0ZW1CdWZmZXJDYXBhY2l0eSk7Ci0gICAgYXV0byogYnVmZmVyID0gcmVpbnRl
cnByZXRfY2FzdDx1aW50OF90Kj4oZmFzdE1hbGxvYyhuZXdCdWZmZXJDYXBhY2l0eSkpOworICAg
IGF1dG8qIGJ1ZmZlciA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihmYXN0TWFsbG9jKG5ld0J1ZmZl
ckNhcGFjaXR5KSk7CiAgICAgbV9hbGxvY2F0ZWRCdWZmZXJzLmFwcGVuZChidWZmZXIpOwogICAg
IHJldHVybiB7IEl0ZW1CdWZmZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBidWZmZXIsIG5ld0J1
ZmZlckNhcGFjaXR5IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5j
cHAKaW5kZXggMGFlZjEyOGFiM2I1YjRiNWIwMjAxODAzMzIyYzA0NDkzMTY3ZTUyNC4uYTBjODIx
NGRkMzY1MjZhMTE3MjVhMmY5NjdjNDdhMWQ2NTBhMTAyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZXJhdG9yLmNwcApAQCAtNzksNyArNzksNyBAQCB2b2lkIERpc3BsYXlMaXN0
OjpJdGVyYXRvcjo6dXBkYXRlQ3VycmVudEl0ZW0oKQogICAgIH0KIAogICAgIGF1dG8gcGFkZGVk
U2l6ZU9mVHlwZUFuZEl0ZW0gPSBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMoaXRlbVR5
cGUpOwotICAgIG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gPSBwYWRkZWRTaXplT2ZUeXBlQW5kSXRl
bSA8PSBzaXplT2ZGaXhlZEJ1ZmZlckZvckN1cnJlbnRJdGVtID8gbV9maXhlZEJ1ZmZlckZvckN1
cnJlbnRJdGVtIDogcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZmFzdE1hbGxvYyhwYWRkZWRT
aXplT2ZUeXBlQW5kSXRlbSkpOworICAgIG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gPSBwYWRkZWRT
aXplT2ZUeXBlQW5kSXRlbSA8PSBzaXplT2ZGaXhlZEJ1ZmZlckZvckN1cnJlbnRJdGVtID8gbV9m
aXhlZEJ1ZmZlckZvckN1cnJlbnRJdGVtIDogc3RhdGljX2Nhc3Q8dWludDhfdCo+KGZhc3RNYWxs
b2MocGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW0pKTsKICAgICBpZiAoaXNJbmxpbmVJdGVtKGl0ZW1U
eXBlKSkgewogICAgICAgICBpZiAoVU5MSUtFTFkoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1fY3Vy
cmVudEVuZE9mQnVmZmVyIC0gbV9jdXJzb3IpIDwgcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW0pKSB7
CiAgICAgICAgICAgICBtX2lzVmFsaWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmgKaW5k
ZXggNDI3NjQ2YzFkYjMwMDg1ZWIzMmMwMWRhNTc0NmQyYjkzZjBlNGQyNC4uNDIxNDZlMDMyOTMy
MzY5OTc4OWViNWU0MmFmNGM3M2QzNGFiOWNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmgKQEAg
LTI4NSw5ICsyODUsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgcGFyc2Uoc2l6ZV90IGRhdGFQb3Np
dGlvbiwgc2l6ZV90IGxlbiwgYm9vbCBwYXJzZVNpemVPbmx5KTsKICAgICB2b2lkIHNldFJlbWFp
bmluZ0J5dGVzKHNpemVfdCk7CiAKLSAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhKHNpemVf
dCBkYXRhUG9zaXRpb24pIGNvbnN0CisgICAgY29uc3QgdWludDhfdCogZGF0YShzaXplX3QgZGF0
YVBvc2l0aW9uKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdW5zaWduZWQgY2hhcio+KG1fZGF0YS0+ZGF0YSgpKSArIGRhdGFQb3NpdGlvbjsKKyAg
ICAgICAgcmV0dXJuIG1fZGF0YS0+ZGF0YSgpICsgZGF0YVBvc2l0aW9uOwogICAgIH0KIAogICAg
IHZvaWQgYWRkRnJhbWVJZk5lY2Vzc2FyeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMubW0KaW5kZXggOGU5NWM1NDY5YTFhOTYzYzZkY2Ri
ZGYxMzg4MmIwNzNiMmYwMzc1OS4uMTAwZGFjYjAwNTE3ZDZlZWU2YjVkZDdhMDI1Y2IxYjEwNGY2
MGYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NTTEtleUdlbmVy
YXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJh
dG9yTWFjLm1tCkBAIC0xODksNyArMTg5LDcgQEAgc3RhdGljIFN0cmluZyBzaWduZWRQdWJsaWNL
ZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZSwgY29uc3QgQ1N0cmluZyYKIAog
ICAgIC8vIExlbmd0aCBuZWVkcyB0byBhY2NvdW50IGZvciB0aGUgbnVsbCB0ZXJtaW5hdG9yLgog
ICAgIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZS5wdWJsaWNLZXlBbmRDaGFsbGVuZ2UuY2hh
bGxlbmdlLkxlbmd0aCA9IGNoYWxsZW5nZS5sZW5ndGgoKSArIDE7Ci0gICAgc2lnbmVkUHVibGlj
S2V5QW5kQ2hhbGxlbmdlLnB1YmxpY0tleUFuZENoYWxsZW5nZS5jaGFsbGVuZ2UuRGF0YSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGNvbnN0X2Nhc3Q8Y2hhcio+KGNoYWxsZW5nZS5kYXRh
KCkpKTsKKyAgICBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2UucHVibGljS2V5QW5kQ2hhbGxl
bmdlLmNoYWxsZW5nZS5EYXRhID0gY29uc3RfY2FzdDx1aW50OF90Kj4oY2hhbGxlbmdlLmNoYXJh
Y3RlcnM4KCkpOwogCiAgICAgQ1NTTV9EQVRBIGVuY29kZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2Ug
eyAwLCBudWxscHRyIH07CiAgICAgaWYgKFNlY0FzbjFFbmNvZGVJdGVtKGNvZGVyLCAmc2lnbmVk
UHVibGljS2V5QW5kQ2hhbGxlbmdlLnB1YmxpY0tleUFuZENoYWxsZW5nZSwgcHVibGljS2V5QW5k
Q2hhbGxlbmdlVGVtcGxhdGUsICZlbmNvZGVkUHVibGljS2V5QW5kQ2hhbGxlbmdlKSAhPSBub0Vy
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKaW5kZXggZGYyMTdkYmFlY2Q0NjFh
OWQ5YmUzOGY1NWJjNzkzNTVkYjJiMmIxNy4uZjg4MzgwMjgxOGE5N2VjY2MyODRhZmUzN2E2M2I4
YjE4NTcxOTA3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKQEAgLTE0NSw3
ICsxNDUsNyBAQCBzdGF0aWMgdm9pZCBhZGRTdHJpbmdUb1NIQTEoU0hBMSYgc2hhMSwgY29uc3Qg
U3RyaW5nJiBzdHJpbmcpCiAgICAgfQogCiAgICAgYXV0byB1dGY4ID0gc3RyaW5nLnV0ZjgoKTsK
LSAgICBzaGExLmFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHV0Zjgu
ZGF0YSgpKSwgdXRmOC5sZW5ndGgoKSArIDEpOyAvLyBJbmNsdWRlIHRlcm1pbmF0aW5nIG51bGwg
Ynl0ZS4KKyAgICBzaGExLmFkZEJ5dGVzKHV0ZjguY2hhcmFjdGVyczgoKSwgdXRmOC5sZW5ndGgo
KSArIDEpOyAvLyBJbmNsdWRlIHRlcm1pbmF0aW5nIG51bGwgYnl0ZS4KIH0KIAogU3RyaW5nIFJl
YWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6Omhhc2hTdHJpbmdXaXRoU2FsdChjb25zdCBTdHJpbmcm
IGlkLCBjb25zdCBTdHJpbmcmIGhhc2hTYWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwCmluZGV4IDdlM2QxYjkxZjA2Mzc0ZTk4
NGNmNTFlOGM3N2M0ZjcwZDkyMWRmYTkuLmQxYTFmNGYyMDNhZmFmYWJlYjc2ZmM2MmU0YTUzNmU1
YzgxMTIyY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9y
bURhdGFCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zv
cm1EYXRhQnVpbGRlci5jcHAKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIGFkZEtleVZhbHVlUGFp
ckFzRm9ybURhdGEoVmVjdG9yPGNoYXI+JiBidWZmZXIsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
a2V5LAogCiB2b2lkIGVuY29kZVN0cmluZ0FzRm9ybURhdGEoVmVjdG9yPGNoYXI+JiBidWZmZXIs
IGNvbnN0IENTdHJpbmcmIHN0cmluZykKIHsKLSAgICBhcHBlbmRGb3JtVVJMRW5jb2RlZChidWZm
ZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0cmluZy5kYXRhKCkpLCBzdHJp
bmcubGVuZ3RoKCkpOworICAgIGFwcGVuZEZvcm1VUkxFbmNvZGVkKGJ1ZmZlciwgc3RyaW5nLmNo
YXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlLmNwcAppbmRleCA2
ZGUxYTNmOGExZjliNjNkMWU3MWZiM2FhN2NlNDI1MzQxYTY1MWQ5Li5jODIyMmI4OWNiNjBjNWI5
MTRhMDBhNTgyNzVmMDY4NDg1OTRkY2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuY3BwCkBAIC02MSw3ICs2MSw3IEBA
IHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpzZW5kSGFuZHNoYWtlKENTdHJpbmcmJiBoYW5kc2hh
a2UsIHN0ZDo6b3B0aW9uYWw8Q29va2llCiB7CiAgICAgaWYgKG1fc3RhdGUgPT0gQ29ubmVjdGlu
ZyB8fCBtX3N0YXRlID09IENsb3NpbmcpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cihmYWxzZSwgZmFsc2UpOwotICAgIHBsYXRmb3JtU2VuZEhhbmRzaGFrZShyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihoYW5kc2hha2UuZGF0YSgpKSwgaGFuZHNoYWtlLmxlbmd0aCgp
LCBXVEZNb3ZlKGhlYWRlckZpZWxkUHJveHkpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CisgICAgcGxhdGZvcm1TZW5kSGFuZHNoYWtlKGhhbmRzaGFrZS5jaGFyYWN0ZXJzOCgpLCBoYW5k
c2hha2UubGVuZ3RoKCksIFdURk1vdmUoaGVhZGVyRmllbGRQcm94eSksIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OmNsb3NlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1
ZXN0Q0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZVJlcXVlc3RDRk5ldC5jcHAKaW5kZXggYjdlZjViODc1ODRmZmJiNjZhZjdkOWExMTNmNDMwNmQ5
MTVhMTY5Yi4uMzg3NTNjZGViNmMyNzNiMWNiMWMyMTM5OTFmMTQyZGZlZTA5MTdiOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RD
Rk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZVJlcXVlc3RDRk5ldC5jcHAKQEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVz
dDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKQogICAgIFN0cmluZyBwYXJ0aXRpb24gPSBjYWNo
ZVBhcnRpdGlvbigpOwogICAgIGlmICghcGFydGl0aW9uLmlzTnVsbCgpICYmICFwYXJ0aXRpb24u
aXNFbXB0eSgpKSB7CiAgICAgICAgIENTdHJpbmcgdXRmOFN0cmluZyA9IHBhcnRpdGlvbi51dGY4
KCk7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcGFydGl0aW9uVmFsdWUgPSBhZG9w
dENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzKDAsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUlu
dDgqPih1dGY4U3RyaW5nLmRhdGEoKSksIHV0ZjhTdHJpbmcubGVuZ3RoKCksIGtDRlN0cmluZ0Vu
Y29kaW5nVVRGOCwgZmFsc2UpKTsKKyAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwYXJ0
aXRpb25WYWx1ZSA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXMoMCwgdXRmOFN0cmlu
Zy5jaGFyYWN0ZXJzOCgpLCB1dGY4U3RyaW5nLmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VU
RjgsIGZhbHNlKSk7CiAgICAgICAgIF9DRlVSTFJlcXVlc3RTZXRQcm90b2NvbFByb3BlcnR5KGNm
UmVxdWVzdC5nZXQoKSwgX2tDRlVSTENhY2hlUGFydGl0aW9uS2V5LCBwYXJ0aXRpb25WYWx1ZS5n
ZXQoKSk7CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmgKaW5kZXggYmNjNjIyODY2MGUz
ODY4ZWM3YzFhNmI0N2RlZTFlZDcxYmYwM2Q5Yy4uZjcwYWM0ZTc1OWZiMjVhYTFiMDA2OGUxMTU5
M2VkMGU5NmRiZTRkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaApAQCAtMTMxLDcgKzEzMSw3IEBAIGlu
bGluZSBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGh0dHBIZWFkZXJWYWx1ZVVzaW5nU3VpdGFibGVF
bmNvZGluZyhIVFRQSGVhZGVyTWFwCiAgICAgaWYgKGhlYWRlci5rZXlBc0hUVFBIZWFkZXJOYW1l
ICYmICpoZWFkZXIua2V5QXNIVFRQSGVhZGVyTmFtZSA9PSBIVFRQSGVhZGVyTmFtZTo6TGFzdEV2
ZW50SUQgJiYgIWhlYWRlci52YWx1ZS5pc0FsbEFTQ0lJKCkpIHsKICAgICAgICAgYXV0byB1dGY4
VmFsdWUgPSBoZWFkZXIudmFsdWUudXRmOCgpOwogICAgICAgICAvLyBDb25zdHJ1Y3RpbmcgYSBz
dHJpbmcgd2l0aCB0aGUgVVRGLTggYnl0ZXMgYnV0IGNsYWltaW5nIHRoYXQgaXTigJlzIExhdGlu
LTEgaXMgdGhlIHdheSB0byBnZXQgQ0ZOZXR3b3JrIHRvIHB1dCB0aG9zZSBVVEYtOCBieXRlcyBv
biB0aGUgd2lyZS4KLSAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0
ZXMobnVsbHB0ciwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KHV0ZjhWYWx1ZS5kYXRh
KCkpLCB1dGY4VmFsdWUubGVuZ3RoKCksIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBmYWxz
ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhCeXRlcyhudWxs
cHRyLCB1dGY4VmFsdWUuY2hhcmFjdGVyczgoKSwgdXRmOFZhbHVlLmxlbmd0aCgpLCBrQ0ZTdHJp
bmdFbmNvZGluZ0lTT0xhdGluMSwgZmFsc2UpKTsKICAgICB9CiAgICAgcmV0dXJuIGhlYWRlci52
YWx1ZS5jcmVhdGVDRlN0cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQu
Y3BwCmluZGV4IGQxMzc5NDk4YWFiODFlZTJjYTdhYTA4OWIxYjUwZjk5NWMyODI5NDcuLjU1Yjlm
MWVkNGEwZDMyNWE2YjE2YTExNDM4OWYzOWM3ZGVkMzZjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhh
bmRsZUltcGxDRk5ldC5jcHAKQEAgLTcyMiw3ICs3MjIsNyBAQCBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4gU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6cGxhdGZvcm1TZW5kSW50ZXJuYWwoY29uc3QgdWlu
dDhfdAogICAgIGlmICghQ0ZXcml0ZVN0cmVhbUNhbkFjY2VwdEJ5dGVzKG1fd3JpdGVTdHJlYW0u
Z2V0KCkpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIENGSW5kZXggcmVzdWx0ID0gQ0ZXcml0
ZVN0cmVhbVdyaXRlKG1fd3JpdGVTdHJlYW0uZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
VUludDgqPihkYXRhKSwgbGVuZ3RoKTsKKyAgICBDRkluZGV4IHJlc3VsdCA9IENGV3JpdGVTdHJl
YW1Xcml0ZShtX3dyaXRlU3RyZWFtLmdldCgpLCBkYXRhLCBsZW5ndGgpOwogICAgIGlmIChyZXN1
bHQgPT0gLTEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCmlu
ZGV4IDA1YjRlMjliYzkzMWMxNDM0NWI0Nzk1OThiYWVlNjdlYjRiNjhjMmEuLmQwOWI3YjVkY2Ix
ODQwNTk0N2VhZWMzYmVmNGEzMGE1YWM1MjQ2ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcApAQCAtMjExLDcg
KzIxMSw3IEBAIHZvaWQgQ3VybENhY2hlRW50cnk6OmRpZEZpbmlzaExvYWRpbmcoKQogdm9pZCBD
dXJsQ2FjaGVFbnRyeTo6Z2VuZXJhdGVCYXNlRmlsZW5hbWUoY29uc3QgQ1N0cmluZyYgdXJsKQog
ewogICAgIFNIQTEgc2hhMTsKLSAgICBzaGExLmFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KHVybC5kYXRhKCkpLCB1cmwubGVuZ3RoKCkpOworICAgIHNoYTEuYWRkQnl0
ZXModXJsLmNoYXJhY3RlcnM4KCksIHVybC5sZW5ndGgoKSk7CiAKICAgICBTSEExOjpEaWdlc3Qg
c3VtOwogICAgIHNoYTEuY29tcHV0ZUhhc2goc3VtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAKaW5kZXggNmQ4ZGM3MmVkY2JkNDI4ODdlNjc3
NWExNjAyODU0N2E5N2M2MzFiOS4uMmQ4MGYzYjFiNzc0YTg1M2NmMjEyNzU3MGRmMTg4MDUxMmEy
ZDAyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVu
dC5jcHAKQEAgLTMwNCw3ICszMDQsNyBAQCBhdXRvIFNRTGl0ZVN0YXRlbWVudDo6Y29sdW1uQmxv
YlZpZXcoaW50IGNvbCkgLT4gQmxvYlZpZXcKICAgICBpZiAoYmxvYlNpemUgPD0gMCkKICAgICAg
ICAgcmV0dXJuIHsgfTsKIAotICAgIHJldHVybiB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KGJsb2IpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGJsb2JTaXplKSB9OworICAgIHJldHVy
biB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihibG9iKSwgc3RhdGljX2Nhc3Q8c2l6ZV90
PihibG9iU2l6ZSkgfTsKIH0KIAogYm9vbCBTUUxpdGVTdGF0ZW1lbnQ6Omhhc1N0YXJ0ZWRTdGVw
cGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCmluZGV4IDk5
MmU0YzEzYTdlZThlZTQ3ZTg0OTFmN2I4ZTMwNDIwZWQzZWUyMWQuLmJjMzI0NmJmNmIyYzIwNjM4
YmZiNDIyNWNmNzBkNTFhOGZiMzBmMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0NETUZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NE
TUZhY3RvcnkuY3BwCkBAIC0yMTMsNyArMjEzLDcgQEAgYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0lu
aXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmUK
IAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gTW9ja0NETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBT
aGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewotICAgIGlmICghY2hhcmFjdGVyc0FyZUFs
bEFTQ0lJKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihyZXNwb25zZS5kYXRhKCkpLCBy
ZXNwb25zZS5zaXplKCkpKQorICAgIGlmICghY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKHJlc3BvbnNl
LmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZUFycmF5ID0gU3RyaW5nKHJlc3BvbnNlLmRhdGEoKSwg
cmVzcG9uc2Uuc2l6ZSgpKS5zcGxpdCgnICcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZl
ci9zb2NrZXQvSFRUUFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9IVFRQUGFy
c2VyLmNwcAppbmRleCA3YTViMjI4ZDVmZjcxNDZkYTdiMTE3N2NiMTRjYmE0ZTQzMGIzN2ZhLi5j
ODJhZDk1N2Y3MTNjM2FlNzY5NGNlODYzZTU3NTQ1MDJiYzAyNzRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViRHJpdmVyL3NvY2tldC9IVFRQUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVy
L3NvY2tldC9IVFRQUGFyc2VyLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIGJvb2wgSFRUUFBhcnNl
cjo6cmVhZExpbmUoU3RyaW5nJiBsaW5lKQogICAgIGlmIChwb3NpdGlvbiA9PSBub3RGb3VuZCB8
fCBwb3NpdGlvbiArIDEgPT0gbGVuZ3RoIHx8IG1fYnVmZmVyW3Bvc2l0aW9uICsgMV0gIT0gMHgw
YSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbGluZSA9IFN0cmluZzo6ZnJvbVVURjgo
cmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obV9idWZmZXIuZGF0YSgpKSwgcG9zaXRpb24pOworICAg
IGxpbmUgPSBTdHJpbmc6OmZyb21VVEY4KG1fYnVmZmVyLmRhdGEoKSwgcG9zaXRpb24pOwogICAg
IGlmIChsaW5lLmlzTnVsbCgpKQogICAgICAgICBMT0dfRVJST1IoIkNsaWVudCBlcnJvcjogaW52
YWxpZCBlbmNvZGluZyBpbiBIVFRQIGhlYWRlci4iKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkRyaXZlci9zb2NrZXQvU2Vzc2lvbkhvc3RTb2NrZXQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9z
b2NrZXQvU2Vzc2lvbkhvc3RTb2NrZXQuY3BwCmluZGV4IDBmNjU2NjhmYzJmYjg5ZmQ0ZWFhN2Rj
NDE0ODdiZjFkNjEyMGNhZjAuLjgyNGY5MDI5MDdhOTRiOGRiYTViMzgwYTU3YmFjNTBiZmY1ZjZm
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L1Nlc3Npb25Ib3N0U29ja2V0
LmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9TZXNzaW9uSG9zdFNvY2tldC5jcHAK
QEAgLTUwLDcgKzUwLDcgQEAgdm9pZCBTZXNzaW9uSG9zdDo6c2VuZFdlYkluc3BlY3RvckV2ZW50
KGNvbnN0IFN0cmluZyYgZXZlbnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGNvbnN0IENTdHJp
bmcgbWVzc2FnZSA9IGV2ZW50LnV0ZjgoKTsKLSAgICBzZW5kKG1fY2xpZW50SUQudmFsdWUoKSwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obWVzc2FnZS5kYXRhKCkpLCBtZXNzYWdl
Lmxlbmd0aCgpKTsKKyAgICBzZW5kKG1fY2xpZW50SUQudmFsdWUoKSwgbWVzc2FnZS5jaGFyYWN0
ZXJzOCgpLCBtZXNzYWdlLmxlbmd0aCgpKTsKIH0KIAogdm9pZCBTZXNzaW9uSG9zdDo6Y29ubmVj
dFRvQnJvd3NlcihGdW5jdGlvbjx2b2lkIChzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZXJyb3IpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCmluZGV4IDRmNThlZDFjNTQwZWVh
OGFiYzI5NzZjYzgxNWY3ODZmMmQwNjY4MDkuLmIwN2UzNTYxZTliN2ZiZDg4OTRiODUxNzMzZjc2
Yjk2NjM0Nzc3MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKQEAgLTY5MSw3ICs2OTEsNyBAQCB2b2lk
IFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkq
IG1lc3NhZ2UpCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKIHZvaWQgUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJJbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChjb25z
dCBTdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmUHRyPEFycmF5QnVmZmVyPiYmIGluaXREYXRhKQog
ewotICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6SW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGFUeXBl
LCBJUEM6OkRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaW5pdERhdGEt
PmRhdGEoKSksIGluaXREYXRhLT5ieXRlTGVuZ3RoKCkpKSwgbV9pZCk7CisgICAgbV93ZWJQcm9j
ZXNzQ29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpJ
bml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChpbml0RGF0YVR5cGUsIElQQzo6RGF0YVJlZmVy
ZW5jZShzdGF0aWNfY2FzdDx1aW50OF90Kj4oaW5pdERhdGEtPmRhdGEoKSksIGluaXREYXRhLT5i
eXRlTGVuZ3RoKCkpKSwgbV9pZCk7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6
bWVkaWFQbGF5ZXJXYWl0aW5nRm9yS2V5Q2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmNwcAppbmRleCA5ZWM1
NWY2MTZmNTg0M2I2YzgwMjdiYzE5ZGE3YTYwNThkNGFhNjA0Li5iNDFhMDI4MWY4NThhMTIyZTBm
YWE2YmI3MTk0ZWU1MzBjYzlmMWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5jcHAKQEAgLTExMyw3ICsxMTMsNyBA
QCB2b2lkIFJlbW90ZVRleHRUcmFja1Byb3h5OjphZGREYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYg
c3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZQogICAgIGlmICghbV9jb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OkFkZERh
dGFDdWUobV9pZGVudGlmaWVyLCBzdGFydCwgZW5kLCBJUEM6OkRhdGFSZWZlcmVuY2UocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCkpLCBtX21lZGlhUGxheWVy
SWRlbnRpZmllcik7CisgICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpBZGREYXRhQ3VlKG1faWRl
bnRpZmllciwgc3RhcnQsIGVuZCwgSVBDOjpEYXRhUmVmZXJlbmNlKHN0YXRpY19jYXN0PGNvbnN0
IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKSksIG1fbWVkaWFQbGF5ZXJJZGVudGlmaWVyKTsKIH0K
IAogI2lmIEVOQUJMRShEQVRBQ1VFX1ZBTFVFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKaW5kZXggYWJhYTViYmM0
ZDg0MTA0ZmFhOTMyZWM3YThkNDI1NzdkYjg5ZmYyZi4uOGMxMjU0OWYxNDMyODlmZjFmMmRiYjM2
NDU4N2MyZjY4ZWFjYTZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dl
YnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgdm9p
ZCBSZW1vdGVNZWRpYVJlY29yZGVyOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpSZW1v
dGVWaWRlb1NhbXBsZSYmIHJlbW8KIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6ZmV0Y2hEYXRh
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEYXRhUmVmZXJlbmNlJiYsIGRvdWJsZSk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV93cml0ZXItPmZldGNoRGF0YShbY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYmIGRhdGEsIGF1dG8g
dGltZUNvZGUpIG11dGFibGUgewotICAgICAgICBhdXRvKiBwb2ludGVyID0gcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSA/IGRhdGEtPmRhdGEoKSA6IG51bGxwdHIpOworICAg
ICAgICBhdXRvKiBwb2ludGVyID0gZGF0YSA/IGRhdGEtPmRhdGEoKSA6IG51bGxwdHI7CiAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6RGF0YVJlZmVyZW5jZSB7IHBvaW50ZXIsIGRhdGEg
PyBkYXRhLT5zaXplKCkgOiAwIH0sIHRpbWVDb2RlKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YUN1cmwu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRh
Q3VybC5jcHAKaW5kZXggMTkyNDgyYmY5ZjQzNGRjMTk5ZDM3YWQ0MTE4Mjk0YWUxOWRjNjZjYS4u
OGJlYTg4OTNhYmFhNzgxOTdlNjU4NTZmMjQ1NTVmN2FmZGY1NzgwNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhQ3VybC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRh
Q3VybC5jcHAKQEAgLTczLDcgKzczLDcgQEAgYm9vbCBEYXRhOjphcHBseShjb25zdCBGdW5jdGlv
bjxib29sKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPiYgYXBwbGllcikgY29uc3QKICAgICBpZiAo
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gYXBwbGllcihy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKCkpLCBzaXplKCkpOworICAgIHJl
dHVybiBhcHBsaWVyKGRhdGEoKSwgc2l6ZSgpKTsKIH0KIAogRGF0YSBEYXRhOjpzdWJyYW5nZShz
aXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlS2V5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlS2V5LmNwcAppbmRleCBmOGYzNDEw
ZGNhMDVhYTE5NDE2Y2JjNDg1MTVmYTBlZTM0YmNjZTJhLi5lNzlmMWQ0YWQ0NzBhMjUxMDI0MDU3
MTljNjRmNDMxYjc3N2Q3NjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZUtleS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVLZXkuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHN0YXRp
YyB2b2lkIGhhc2hTdHJpbmcoU0hBMSYgc2hhMSwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAg
fQogICAgIGF1dG8gY1N0cmluZyA9IHN0cmluZy51dGY4KCk7CiAgICAgLy8gSW5jbHVkZSB0ZXJt
aW5hdGluZyBudWxsIGJ5dGUuCi0gICAgc2hhMS5hZGRCeXRlcyhyZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihjU3RyaW5nLmRhdGEoKSksIGNTdHJpbmcubGVuZ3RoKCkgKyAxKTsKKyAg
ICBzaGExLmFkZEJ5dGVzKGNTdHJpbmcuY2hhcmFjdGVyczgoKSwgY1N0cmluZy5sZW5ndGgoKSAr
IDEpOwogfQogCiBLZXk6Okhhc2hUeXBlIEtleTo6Y29tcHV0ZUhhc2goY29uc3QgU2FsdCYgc2Fs
dCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9X
ZWJLaXREaXJlY3RvcnlJbnB1dFN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3NvdXAvV2ViS2l0RGlyZWN0b3J5SW5wdXRTdHJlYW0uY3BwCmluZGV4IDE0NTRhMWYwNmM3
ZWQ4OGNiYWI2NjY5YWFlZmQ0NjJiOTNhYjZjZTAuLmNmMmFmOTEyMjNkODA0YmFlNDcyZTQ3NjY0
MDEzYWExMGEwYTUwYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c291cC9XZWJLaXREaXJlY3RvcnlJbnB1dFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYktpdERpcmVjdG9yeUlucHV0U3RyZWFtLmNwcApAQCAtMTUx
LDcgKzE1MSw3IEBAIHN0YXRpYyBnc3NpemUgd2Via2l0RGlyZWN0b3J5SW5wdXRTdHJlYW1SZWFk
KEdJbnB1dFN0cmVhbSogaW5wdXQsIHZvaWQqIGJ1ZmZlciwKICAgICAgICAgZ3NpemUgYnVmZmVy
U2l6ZTsKICAgICAgICAgYXV0byogYnVmZmVyRGF0YSA9IGdfYnl0ZXNfZ2V0X2RhdGEoc3RyZWFt
LT5wcml2LT5idWZmZXIuZ2V0KCksICZidWZmZXJTaXplKTsKICAgICAgICAgZ3NpemUgYnl0ZXNS
ZWFkID0gc3RkOjptaW4oYnVmZmVyU2l6ZSwgY291bnQgLSB0b3RhbEJ5dGVzUmVhZCk7Ci0gICAg
ICAgIG1lbWNweShyZWludGVycHJldF9jYXN0PGNoYXIqPihidWZmZXIpICsgdG90YWxCeXRlc1Jl
YWQsIGJ1ZmZlckRhdGEsIGJ5dGVzUmVhZCk7CisgICAgICAgIG1lbWNweShzdGF0aWNfY2FzdDxj
aGFyKj4oYnVmZmVyKSArIHRvdGFsQnl0ZXNSZWFkLCBidWZmZXJEYXRhLCBieXRlc1JlYWQpOwog
ICAgICAgICBpZiAoYnl0ZXNSZWFkID09IGJ1ZmZlclNpemUpCiAgICAgICAgICAgICBzdHJlYW0t
PnByaXYtPmJ1ZmZlciA9IG51bGxwdHI7CiAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA3NDY0MjgxM2Y0NzgxOTZjMGM3
OGNlYjc4N2UzNjZkYzI4ZGM5MjYyLi4xYWY5ZWVhNmFhZDQ2MmRhMWRjODUxZDc4NjIxZjM2OGZk
NTAwMjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENv
ZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMu
Y3BwCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxDU3RyaW5nPjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IENTdHJpbmcmIHN0cmluZykKIAogICAgIHVpbnQzMl90
IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKICAgICBlbmNvZGVyIDw8IGxlbmd0aDsKLSAgICBl
bmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihzdHJpbmcuZGF0YSgpKSwgbGVuZ3RoLCAxKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVk
TGVuZ3RoRGF0YShzdHJpbmcuY2hhcmFjdGVyczgoKSwgbGVuZ3RoLCAxKTsKIH0KIAogV0FSTl9V
TlVTRURfUkVUVVJOIGJvb2wgQXJndW1lbnRDb2RlcjxDU3RyaW5nPjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIsIENTdHJpbmcmIHJlc3VsdCkKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIEFyZ3Vt
ZW50Q29kZXI8U3RyaW5nPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFN0cmluZyYg
c3RyaW5nKQogICAgIGVuY29kZXIgPDwgbGVuZ3RoIDw8IGlzOEJpdDsKIAogICAgIGlmIChpczhC
aXQpCi0gICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KHN0cmluZy5jaGFyYWN0ZXJzOCgpKSwgbGVuZ3RoICogc2l6ZW9m
KExDaGFyKSwgYWxpZ25vZihMQ2hhcikpOworICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVu
Z3RoRGF0YShzdHJpbmcuY2hhcmFjdGVyczgoKSwgbGVuZ3RoICogc2l6ZW9mKExDaGFyKSwgYWxp
Z25vZihMQ2hhcikpOwogICAgIGVsc2UKICAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0
aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oc3RyaW5nLmNoYXJhY3RlcnMx
NigpKSwgbGVuZ3RoICogc2l6ZW9mKFVDaGFyKSwgYWxpZ25vZihVQ2hhcikpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2YvV0tTdHJpbmdDRi5tbSBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NmL1dLU3RyaW5nQ0YubW0KaW5kZXggODI2ZmU2YjUwZTA5
YmQxMGQ5NGFjNGFhNDc4ZGRhZGNiZWZmNTBmZS4uZDE3OGYwMTZkZjNmOGEzMDczNTY1MzY4ZWJh
M2QwZjg5MWRhYmUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2Yv
V0tTdHJpbmdDRi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZi9XS1N0cmlu
Z0NGLm1tCkBAIC01Nyw2ICs1Nyw2IEBAIENGU3RyaW5nUmVmIFdLU3RyaW5nQ29weUNGU3RyaW5n
KENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvclJlZiwgV0tTdHJpbmdSZWYgc3RyaW5nCiAgICAgLy8g
Tk9URTogVGhpcyBkb2VzIG5vdCB1c2UgU3RyaW5nSW1wbDo6Y3JlYXRlQ0ZTdHJpbmcoKSBzaW5j
ZSB0aGF0IGZ1bmN0aW9uCiAgICAgLy8gZXhwZWN0cyB0byBiZSBjYWxsZWQgb24gdGhlIHRocmVh
ZCBydW5uaW5nIFdlYkNvcmUuCiAgICAgaWYgKFdlYktpdDo6dG9JbXBsKHN0cmluZ1JlZiktPnN0
cmluZygpLmlzOEJpdCgpKQotICAgICAgICByZXR1cm4gQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXMo
YWxsb2NhdG9yUmVmLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oV2ViS2l0Ojp0b0lt
cGwoc3RyaW5nUmVmKS0+c3RyaW5nKCkuY2hhcmFjdGVyczgoKSksIFdlYktpdDo6dG9JbXBsKHN0
cmluZ1JlZiktPnN0cmluZygpLmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwg
dHJ1ZSk7CisgICAgICAgIHJldHVybiBDRlN0cmluZ0NyZWF0ZVdpdGhCeXRlcyhhbGxvY2F0b3JS
ZWYsIFdlYktpdDo6dG9JbXBsKHN0cmluZ1JlZiktPnN0cmluZygpLmNoYXJhY3RlcnM4KCksIFdl
YktpdDo6dG9JbXBsKHN0cmluZ1JlZiktPnN0cmluZygpLmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNv
ZGluZ0lTT0xhdGluMSwgdHJ1ZSk7CiAgICAgcmV0dXJuIENGU3RyaW5nQ3JlYXRlV2l0aENoYXJh
Y3RlcnMoYWxsb2NhdG9yUmVmLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVuaUNoYXIqPihXZWJL
aXQ6OnRvSW1wbChzdHJpbmdSZWYpLT5zdHJpbmcoKS5jaGFyYWN0ZXJzMTYoKSksIFdlYktpdDo6
dG9JbXBsKHN0cmluZ1JlZiktPnN0cmluZygpLmxlbmd0aCgpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NmL1dLVVJMQ0YubW0gYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvYy9jZi9XS1VSTENGLm1tCmluZGV4IDFkODU2ZjBkODFkYTc1MTBhMGY2Y2JlMzY0
ZDJmZjU0OTVhNjc1YzAuLjI3Y2RjNTFkYjNjOWFjOWNiMGVjYjVlZjA3M2QyYjU0M2EzNWM5MmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NmL1dLVVJMQ0YubW0KKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2YvV0tVUkxDRi5tbQpAQCAtNjcsNSArNjcs
NSBAQCBDRlVSTFJlZiBXS1VSTENvcHlDRlVSTChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3JSZWYs
IFdLVVJMUmVmIFVSTFJlZikKICAgICAvLyBVVEYtOCB3aGljaCB1c2VzIGxlc3MgbWVtb3J5IGFu
ZCBpcyB3aGF0IFdlYktpdCBjbGllbnRzIG1pZ2h0IGV4cGVjdC4KIAogICAgIENTdHJpbmcgYnVm
ZmVyID0gc3RyaW5nLnV0ZjgoKTsKLSAgICByZXR1cm4gQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdp
dGhCeXRlcyhudWxscHRyLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oYnVmZmVyLmRh
dGEoKSksIGJ1ZmZlci5sZW5ndGgoKSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBudWxscHRyLCB0
cnVlKTsKKyAgICByZXR1cm4gQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxscHRy
LCBidWZmZXIuY2hhcmFjdGVyczgoKSwgYnVmZmVyLmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGlu
Z1VURjgsIG51bGxwdHIsIHRydWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxl
UmVzb3VyY2UuY3BwCmluZGV4IDk0NmFmNDdkZmI3ZTYxMWYxYWI0NDE3MzRhOWIwZTE0MTlmYmVk
ODEuLjBjMGYwOGZiZGU1NmE5ZDQyZWM5Zjk2YmEzOGZiZTUxMjU1NmUxNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcigp
CiAKICNpZiBVU0UoQ0YpCiAgICAgYXV0byBkZWFsbG9jYXRvciA9IGNyZWF0ZVNoYXJlYWJsZVJl
c291cmNlRGVhbGxvY2F0b3IodGhpcyk7Ci0gICAgYXV0byBjZkRhdGEgPSBhZG9wdENGKENGRGF0
YUNyZWF0ZVdpdGhCeXRlc05vQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCByZWludGVycHJldF9j
YXN0PGNvbnN0IFVJbnQ4Kj4oZGF0YSgpKSwgc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oc2l6ZSgpKSwg
ZGVhbGxvY2F0b3IuZ2V0KCkpKTsKKyAgICBhdXRvIGNmRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3Jl
YXRlV2l0aEJ5dGVzTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIGRhdGEoKSwgc3RhdGljX2Nh
c3Q8Q0ZJbmRleD4oc2l6ZSgpKSwgZGVhbGxvY2F0b3IuZ2V0KCkpKTsKICAgICByZXR1cm4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoY2ZEYXRhLmdldCgpKTsKICNlbGlmIFVTRShHTElCKQogICAgIEdS
ZWZQdHI8R0J5dGVzPiBieXRlcyA9IGFkb3B0R1JlZihnX2J5dGVzX25ld193aXRoX2ZyZWVfZnVu
YyhkYXRhKCksIHNpemUoKSwgW10odm9pZCogZGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1NoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmgKaW5kZXggNTg3ZDkzZTRmMTI1ZDQ3YzE2OTBl
ZGQwN2FjMmM3M2U3ZDc5ZjE2OS4uY2I2YWZhYmIxNTVlNGIxMGQ3M2Y0OTBlNmM2OTYxZTYyZmRl
YTBiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RI
YW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWREaXNwbGF5TGlzdEhhbmRs
ZS5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBTaGFyZWRNZW1vcnkmIHNo
YXJlZE1lbW9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkTWVtb3J5LmdldCgpOyB9CiAKICAg
ICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllcigp
IGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQotICAgIHVpbnQ4X3QqIGRhdGEoKSBjb25z
dCB7IHJldHVybiByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihzaGFyZWRNZW1vcnkoKS5kYXRh
KCkpOyB9CisgICAgdWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHVp
bnQ4X3QqPihzaGFyZWRNZW1vcnkoKS5kYXRhKCkpOyB9CiAKICAgICB1aW50NjRfdCB1bnJlYWRC
eXRlcygpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29tcGls
ZWRDb250ZW50UnVsZUxpc3QuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29tcGlsZWRD
b250ZW50UnVsZUxpc3QuY3BwCmluZGV4IDg1ZjIyM2NmYmFhMDFiOWU5ZjVkODIzMjE5YjBhOTAy
OTEwNzI3YTkuLmY0NzQxNGU1NzM2NTYzODYxMWRjMjUzN2YxMGNjMDQ3NTZmNzcyYTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdC5j
cHAKQEAgLTQ2LDcgKzQ2LDcgQEAgV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3Q6On5XZWJDb21w
aWxlZENvbnRlbnRSdWxlTGlzdCgpCiAKIGJvb2wgV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3Q6
OmNvbmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICpyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4obV9kYXRhLmRhdGEtPmRhdGEoKSkgKyBtX2RhdGEuY29uZGl0aW9uc0FwcGx5T25seVRv
RG9tYWluT2Zmc2V0KTsKKyAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMy
X3QqPihzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4obV9kYXRhLmRhdGEtPmRhdGEoKSkgKyBt
X2RhdGEuY29uZGl0aW9uc0FwcGx5T25seVRvRG9tYWluT2Zmc2V0KTsKIH0KIAogY29uc3QgV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlKiBXZWJDb21waWxlZENvbnRlbnRS
dWxlTGlzdDo6ZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGUoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uQXNz
ZXJ0aW9uUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1
dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuY3BwCmluZGV4IGM3OTc2ZmY1MmVhOGUxNWFi
NjgwYTU2M2U0MzEwODY4ZWNkMzEwMGUuLmVlZWJkOWJkMDVmNTYzYWI0YjU2MzRmZjRhZmI2ZGQ4
N2NjNGEwYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJB
dXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5jcHAKQEAg
LTUwLDcgKzUwLDcgQEAgUmVmUHRyPERhdGE+IFdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVz
cG9uc2U6OnVzZXJIYW5kbGUoKSBjb25zdAogICAgIFJlZlB0cjxBUEk6OkRhdGE+IGRhdGE7CiAg
ICAgaWYgKGF1dG8qIHVzZXJIYW5kbGUgPSBtX3Jlc3BvbnNlLT51c2VySGFuZGxlKCkpIHsKICAg
ICAgICAgdXNlckhhbmRsZS0+cmVmKCk7Ci0gICAgICAgIGRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0
ZVdpdGhvdXRDb3B5aW5nKHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KHVzZXJIYW5k
bGUtPmRhdGEoKSksIHVzZXJIYW5kbGUtPmJ5dGVMZW5ndGgoKSwgW10gKHVuc2lnbmVkIGNoYXIq
LCBjb25zdCB2b2lkKiBkYXRhKSB7CisgICAgICAgIGRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdp
dGhvdXRDb3B5aW5nKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPih1c2VySGFuZGxlLT5kYXRh
KCkpLCB1c2VySGFuZGxlLT5ieXRlTGVuZ3RoKCksIFtdICh1bnNpZ25lZCBjaGFyKiwgY29uc3Qg
dm9pZCogZGF0YSkgewogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8QXJyYXlCdWZmZXIqPihjb25z
dF9jYXN0PHZvaWQqPihkYXRhKSktPmRlcmVmKCk7CiAgICAgICAgIH0sIHVzZXJIYW5kbGUpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IGI3YmQw
OTg1NDgxY2VhODFmM2U5YzQ2ZjhmZDU4YjJiNmMzZTcxZGMuLjcwMmVmYjI5OWE0MWIwMTNjODU2
OTA1ZTllNmI4MDI2Mjc3MGFmZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlLmNwcApAQCAtMjQxLDcgKzI0MSw3IEBAIHN0YXRpYyBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0
YUZyb20oY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgaWYgKHN0cmluZy5pc051bGwoKSB8
fCAhc3RyaW5nLmlzOEJpdCgpKQogICAgICAgICByZXR1cm4geyByZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihzdHJpbmcuY2hhcmFjdGVyczE2KCkpLCBzdHJpbmcubGVuZ3RoKCkgKiBz
aXplb2YoVUNoYXIpIH07Ci0gICAgcmV0dXJuIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4oc3RyaW5nLmNoYXJhY3RlcnM4KCkpLCBzdHJpbmcubGVuZ3RoKCkgKiBzaXplb2YoTENo
YXIpIH07CisgICAgcmV0dXJuIHsgc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgo
KSAqIHNpemVvZihMQ2hhcikgfTsKIH0KIAogc3RhdGljIHZvaWQgbG9hZFN0cmluZyhXS1BhZ2VS
ZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgc3RyaW5nUmVmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIFdLVHlwZVJlZiB1c2VyRGF0YVJlZikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9SZWRpcmVj
dFNPQXV0aG9yaXphdGlvblNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9TT0F1dGhvcml6YXRpb24vUmVkaXJlY3RTT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCmluZGV4
IGZiZWY1NDE1ZTg2ZDcxZWMxZjdmMjE3MWY0YjYyOWJiNmNhMzA0ZWQuLjA4YzdlZGQzODE1NTYx
N2MyODVlYTYzZGEzMDllMWI0YzU3Nzk4ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9SZWRpcmVjdFNPQXV0aG9yaXphdGlvblNlc3Np
b24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9u
L1JlZGlyZWN0U09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbQpAQCAtNzcsNyArNzcsNyBAQCB2b2lk
IFJlZGlyZWN0U09BdXRob3JpemF0aW9uU2Vzc2lvbjo6Y29tcGxldGVJbnRlcm5hbChjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZQogICAgICAgICBpZiAoIW5hdmlnYXRpb25BY3Rpb24tPmlzUHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlKCkpIHsKICAgICAgICAgICAgIHBhZ2UtPnNldFNob3VsZFN1cHBy
ZXNzU09BdXRob3JpemF0aW9uSW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uKCk7CiAgICAg
ICAgICAgICBhdXRvIGh0bWwgPSBtYWtlU3RyaW5nKCI8c2NyaXB0PmxvY2F0aW9uID0gJyIsIHJl
c3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMoKS5nZXQoSFRUUEhlYWRlck5hbWU6OkxvY2F0aW9uKSwg
Iic8L3NjcmlwdD4iKS51dGY4KCk7Ci0gICAgICAgICAgICBhdXRvIGRhdGEgPSBJUEM6OkRhdGFS
ZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaHRtbC5kYXRhKCkpLCBo
dG1sLmxlbmd0aCgpKTsKKyAgICAgICAgICAgIGF1dG8gZGF0YSA9IElQQzo6RGF0YVJlZmVyZW5j
ZShodG1sLmNoYXJhY3RlcnM4KCksIGh0bWwubGVuZ3RoKCkpOwogICAgICAgICAgICAgcGFnZS0+
bG9hZERhdGEoZGF0YSwgInRleHQvaHRtbCJfcywgIlVURi04Il9zLCBuYXZpZ2F0aW9uQWN0aW9u
LT5yZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCksIG51bGxwdHIsIG5hdmlnYXRpb25BY3Rpb24tPnNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9zb2Nr
ZXQvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0lu
c3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCBlYjg1NTllMGMz
YzNiYTZkODRkMmYwYTEyYmFhYjY0MjJhNzU1MDU3Li4xMDQzMDcwNjVmZWNlZjFmMzI4NmMzZDJk
ZGQxM2MxYzNkNzNmZjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3Ivc29ja2V0L1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwCkBA
IC0xMjQsNyArMTI0LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JDbGllbnQ6OnNlbmRXZWJJbnNw
ZWN0b3JFdmVudChjb25zdCBTdHJpbmcmIGV2ZW50KQogICAgIEFTU0VSVChpc01haW5SdW5Mb29w
KCkpOwogICAgIEFTU0VSVChtX2Nvbm5lY3Rpb25JRCk7CiAgICAgYXV0byBtZXNzYWdlID0gZXZl
bnQudXRmOCgpOwotICAgIHNlbmQobV9jb25uZWN0aW9uSUQudmFsdWUoKSwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4obWVzc2FnZS5kYXRhKCkpLCBtZXNzYWdlLmxlbmd0aCgpKTsK
KyAgICBzZW5kKG1fY29ubmVjdGlvbklELnZhbHVlKCksIG1lc3NhZ2UuY2hhcmFjdGVyczgoKSwg
bWVzc2FnZS5sZW5ndGgoKSk7CiB9CiAKIEhhc2hNYXA8U3RyaW5nLCBJbnNwZWN0b3I6OlJlbW90
ZUluc3BlY3RvckNvbm5lY3Rpb25DbGllbnQ6OkNhbGxIYW5kbGVyPiYgUmVtb3RlSW5zcGVjdG9y
Q2xpZW50OjpkaXNwYXRjaE1hcCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IGRkNTZlNzRlZWVkY2NhMzAzMDI2
YzI5NTMzYWY4M2E2OTc3ZTE2YjQuLmM0ODU3NTQ1MjhiMzU0YTg2YzNjZTg3OGVmYmY1ODkzM2Uz
ODNmMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNv
Y2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlNvY2tldENoYW5uZWwuY3BwCkBAIC01Niw4ICs1Niw4IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5l
bDo6bm90aWZ5U2VuZEZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUgb3BDb2RlLCBjb25zdCB1
aW50CiBOZXR3b3JrU2VuZFF1ZXVlIFdlYlNvY2tldENoYW5uZWw6OmNyZWF0ZU1lc3NhZ2VRdWV1
ZShEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlNvY2tldENoYW5uZWwmIGNoYW5uZWwpCiB7CiAgICAg
cmV0dXJuIHsgZG9jdW1lbnQsIFsmY2hhbm5lbF0oYXV0byYgdXRmOFN0cmluZykgewotICAgICAg
ICBjaGFubmVsLm5vdGlmeVNlbmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlOjpPcENvZGVU
ZXh0LCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih1dGY4U3RyaW5nLmRhdGEoKSks
IHV0ZjhTdHJpbmcubGVuZ3RoKCkpOwotICAgICAgICBjaGFubmVsLnNlbmRNZXNzYWdlKE1lc3Nh
Z2VzOjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6U2VuZFN0cmluZyB7IElQQzo6RGF0YVJlZmVyZW5j
ZSB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHV0ZjhTdHJpbmcuZGF0YSgpKSwg
dXRmOFN0cmluZy5sZW5ndGgoKSB9IH0sIHV0ZjhTdHJpbmcubGVuZ3RoKCkpOworICAgICAgICBj
aGFubmVsLm5vdGlmeVNlbmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlOjpPcENvZGVUZXh0
LCB1dGY4U3RyaW5nLmNoYXJhY3RlcnM4KCksIHV0ZjhTdHJpbmcubGVuZ3RoKCkpOworICAgICAg
ICBjaGFubmVsLnNlbmRNZXNzYWdlKE1lc3NhZ2VzOjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6U2Vu
ZFN0cmluZyB7IElQQzo6RGF0YVJlZmVyZW5jZSB7IHV0ZjhTdHJpbmcuY2hhcmFjdGVyczgoKSwg
dXRmOFN0cmluZy5sZW5ndGgoKSB9IH0sIHV0ZjhTdHJpbmcubGVuZ3RoKCkpOwogICAgIH0sIFsm
Y2hhbm5lbF0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGJ5dGVMZW5ndGgpIHsKICAgICAg
ICAgY2hhbm5lbC5ub3RpZnlTZW5kRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZTo6T3BDb2Rl
QmluYXJ5LCBkYXRhLCBieXRlTGVuZ3RoKTsKICAgICAgICAgY2hhbm5lbC5zZW5kTWVzc2FnZShN
ZXNzYWdlczo6TmV0d29ya1NvY2tldENoYW5uZWw6OlNlbmREYXRhIHsgSVBDOjpEYXRhUmVmZXJl
bmNlIHsgZGF0YSwgYnl0ZUxlbmd0aCB9IH0sIGJ5dGVMZW5ndGgpOwpAQCAtMjk1LDcgKzI5NSw3
IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkUmVjZWl2ZVRleHQoU3RyaW5nJiYgbWVzc2Fn
ZSkKICAgICB9CiAKICAgICBhdXRvIHV0ZjhNZXNzYWdlID0gbWVzc2FnZS51dGY4KCk7Ci0gICAg
bV9pbnNwZWN0b3IuZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lKG1fZG9jdW1lbnQuZ2V0KCksIGNy
ZWF0ZVdlYlNvY2tldEZyYW1lRm9yV2ViSW5zcGVjdG9yKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KHV0ZjhNZXNzYWdlLmRhdGEoKSksIHV0ZjhNZXNzYWdlLmxlbmd0aCgpLCBXZWJT
b2NrZXRGcmFtZTo6T3BDb2RlOjpPcENvZGVUZXh0KSk7CisgICAgbV9pbnNwZWN0b3IuZGlkUmVj
ZWl2ZVdlYlNvY2tldEZyYW1lKG1fZG9jdW1lbnQuZ2V0KCksIGNyZWF0ZVdlYlNvY2tldEZyYW1l
Rm9yV2ViSW5zcGVjdG9yKHV0ZjhNZXNzYWdlLmNoYXJhY3RlcnM4KCksIHV0ZjhNZXNzYWdlLmxl
bmd0aCgpLCBXZWJTb2NrZXRGcmFtZTo6T3BDb2RlOjpPcENvZGVUZXh0KSk7CiAKICAgICBtX2Ns
aWVudC0+ZGlkUmVjZWl2ZU1lc3NhZ2UobWVzc2FnZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9SVENEYXRh
Q2hhbm5lbFJlbW90ZU1hbmFnZXIuY3BwCmluZGV4IDdlYjEwNzg3N2UyYjJhMGE4OTk0MzY3NDIy
NGZkMWIyODAwNGNhNDEuLjk4OTc1Y2I4YTgzODU0YWU5NmU0Zjc5OTg1MmY5NDJkMjNlYWI2ZmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9SVENE
YXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL3dlYnJ0Yy9SVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIuY3BwCkBAIC0xMjMs
NyArMTIzLDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OnNlbmREYXRhKFdl
YkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBzb3UKICAgICAgICAgaWYgKGlzUmF3KQog
ICAgICAgICAgICAgc291cmNlLT5zZW5kUmF3RGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkp
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzb3VyY2UtPnNlbmRTdHJpbmdEYXRhKENTdHJp
bmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUo
KSkpOworICAgICAgICAgICAgc291cmNlLT5zZW5kU3RyaW5nRGF0YShDU3RyaW5nKGRhdGEuZGF0
YSgpLCBkYXRhLnNpemUoKSkpOwogICAgIH0KIH0KIApAQCAtMjI3LDcgKzIyNyw3IEBAIHZvaWQg
UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpSZW1vdGVTb3VyY2VDb25uZWN0aW9uOjpkaWRD
aGFuZ2VSZWFkeVN0YXRlKFdlCiB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6UmVt
b3RlU291cmNlQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZVN0cmluZ0RhdGEoV2ViQ29yZTo6UlRDRGF0
YUNoYW5uZWxJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewog
ICAgIGF1dG8gdGV4dCA9IHN0cmluZy51dGY4KCk7Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1l
c3NhZ2VzOjpSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94eTo6UmVjZWl2ZURhdGEgeyBp
ZGVudGlmaWVyLCBmYWxzZSwgSVBDOjpEYXRhUmVmZXJlbmNlIHsgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1bnNpZ25lZCBjaGFyKj4odGV4dC5kYXRhKCkpLCB0ZXh0Lmxlbmd0aCgpIH0gfSwgMCk7
CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSVENEYXRhQ2hhbm5lbFJlbW90ZU1h
bmFnZXJQcm94eTo6UmVjZWl2ZURhdGEgeyBpZGVudGlmaWVyLCBmYWxzZSwgSVBDOjpEYXRhUmVm
ZXJlbmNlIHsgdGV4dC5jaGFyYWN0ZXJzOCgpLCB0ZXh0Lmxlbmd0aCgpIH0gfSwgMCk7CiB9CiAK
IHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpSZW1vdGVTb3VyY2VDb25uZWN0aW9u
OjpkaWRSZWNlaXZlUmF3RGF0YShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgaWRl
bnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0
cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpblN0cmVhbS5jcHAKaW5kZXggZGJmYjhiNmI4MTFiMzY0NzRhNWRlNmJiNmE3ZjM4
YzViMDI1MjA2Yi4uMDMwZjgxZTAzMDk2ODQ1YzBhNGFlNzQ0ODU1MWZkNWUxYTE0YWE2OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW5TdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIHZv
aWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OnNlbmRKYXZhU2NyaXB0U3RyZWFtKGNvbnN0IFN0cmlu
ZyYgcmVzdWx0KQogICAgIGlmICghc3RhcnQobV9yZXF1ZXN0VVJMU3RyaW5nLCByZXN1bHRDU3Ry
aW5nLmxlbmd0aCgpLCAwLCAidGV4dC9wbGFpbiIsICIiKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgZGVsaXZlckRhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocmVzdWx0Q1N0
cmluZy5kYXRhKCkpLCByZXN1bHRDU3RyaW5nLmxlbmd0aCgpKTsKKyAgICBkZWxpdmVyRGF0YShy
ZXN1bHRDU3RyaW5nLmNoYXJhY3RlcnM4KCksIHJlc3VsdENTdHJpbmcubGVuZ3RoKCkpOwogICAg
IHN0b3AoTlBSRVNfRE9ORSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430784</attachid>
            <date>2021-06-07 14:56:49 -0700</date>
            <delta_ts>2021-06-07 17:19:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226743-20210607145648.patch</filename>
            <type>text/plain</type>
            <size>84517</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDZhNDVlZjMwMWIzY2Y3NzBlNjljYWI1
OTA5MGQ0YmE5ZDM5YWJiNWUuLmY3NWFiOGRlNmI0ZmQ0ZjJkMDBmZTg3OTc4NzVkYTk3YzJiNjcx
MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMjEtMDYtMDcgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgdXNlIG9mIHJlaW50ZXJwcmV0X2Nhc3Q8PiBp
biB0aGUgY29kZWJhc2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNjc0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogd3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmNwcDoKKyAgICAgICAg
KiB3dGYvRmFzdE1hbGxvYy5oOgorICAgICAgICAoV1RGOjpGYXN0QWxsb2NhdG9yOjphbGxvY2F0
ZSk6CisgICAgICAgICogd3RmL1NIQTEuaDoKKyAgICAgICAgKFdURjo6U0hBMTo6YWRkQnl0ZXMp
OgorICAgICAgICAqIHd0Zi9TdGFja0NoZWNrLmg6CisgICAgICAgIChXVEY6OlN0YWNrQ2hlY2s6
OlNjb3BlOjpTY29wZSk6CisgICAgICAgIChXVEY6OlN0YWNrQ2hlY2s6OlN0YWNrQ2hlY2spOgor
ICAgICAgICAqIHd0Zi9VUkxIZWxwZXJzLmNwcDoKKyAgICAgICAgKFdURjo6VVJMSGVscGVyczo6
dXNlclZpc2libGVVUkwpOgorICAgICAgICAqIHd0Zi9VUkxQYXJzZXIuY3BwOgorICAgICAgICAo
V1RGOjpVUkxQYXJzZXI6OmZvcm1VUkxEZWNvZGUpOgorICAgICAgICAqIHd0Zi9jZi9VUkxDRi5j
cHA6CisgICAgICAgIChXVEY6OlVSTDo6Y3JlYXRlQ0ZVUkwgY29uc3QpOgorICAgICAgICAqIHd0
Zi9jb2NvYS9VUkxDb2NvYS5tbToKKyAgICAgICAgKFdURjo6VVJMOjpjcmVhdGVDRlVSTCBjb25z
dCk6CisgICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuY3BwOgorICAg
ICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6Q29kZXI8Q1N0cmluZz46OmVuY29kZSk6CisgICAgICAg
IChXVEY6OlBlcnNpc3RlbmNlOjpDb2RlcjxTdHJpbmc+OjplbmNvZGUpOgorICAgICAgICAqIHd0
Zi90ZXh0L0NTdHJpbmcuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuY3BwOgorICAg
ICAgICAoV1RGOjpTdHJpbmc6OmxhdGluMSBjb25zdCk6CisgICAgICAgICogd3RmL3RleHQvY2Yv
U3RyaW5nSW1wbENGLmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Y3JlYXRlQ0ZTdHJp
bmcpOgorCiAyMDIxLTA2LTA3ICBBbGljaWEgQm95YSBHYXJjw61hICA8YWJveWFAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbV1RGXVtHU3RyZWFtZXJdIEZpeCBjbGFuZyBUU0Egd2FybmluZ3MgaW4g
V1RGOjpEYXRhTXV0ZXgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1YmE2NTliMmNjYTAzMTA5N2UwYWIwZTY4M2Q4
YjI5NWViZjEwZDZkLi42NTAyNjVjNTI4YjM4YmFkMDgzMGYwZDYwOTc3NWU0OTUzYzY1YThhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAxIEBACisyMDIxLTA2LTA3ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiByZWludGVycHJldF9jYXN0
PD4gaW4gdGhlIGNvZGViYXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjY3NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Np
b25DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQ2xlYXJLZXk6Omdl
bmVyYXRlS2V5UmVxdWVzdCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojp0YWtlKToKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9k
eUNvbnN1bWVyOjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVy
Ojp0YWtlQXNCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtl
QXNUZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVt
b3RlSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFJlbW90ZUhh
bmRsZXI6OnJlYWR5VG9TZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsUmVt
b3RlSGFuZGxlcjo6c2VuZFN0cmluZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNo
YW5uZWxSZW1vdGVIYW5kbGVyOjpzZW5kUmF3RGF0YSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNvcHlCdXNEYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0
b3JSZXNwb25zZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OmVuY29kZUFycmF5QnVmZmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OmRlY29kZUFycmF5QnVmZmVyKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJT
b2NrZXRDaGFubmVsOjpzdGFydENsb3NpbmdIYW5kc2hha2UpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc091dGdvaW5nRnJhbWVRdWV1ZSk6CisgICAgICAgICog
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6OmdldEV4cGVjdGVkV2ViU29ja2V0QWNjZXB0KToKKyAg
ICAgICAgKFdlYkNvcmU6OmhlYWRlckhhc1ZhbGlkSFRUUFZlcnNpb24pOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmg6CisgICAgICAgICogYmluZGlu
Z3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsb25l
RGVzZXJpYWxpemVyOjpyZWFkU3RyaW5nKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9T
ZXJpYWxpemVkTkZBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpT
ZXJpYWxpemVkTkZBOjpwb2ludGVyQXRPZmZzZXRJbkZpbGUgY29uc3QpOgorICAgICAgICAqIGRv
bS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omhhc2hQb2ludGVyKToKKyAgICAgICAgKiBk
b20vVGV4dEVuY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEVuY29kZXI6OmVuY29k
ZSBjb25zdCk6CisgICAgICAgICogZG9tL1RleHRFbmNvZGVyU3RyZWFtRW5jb2Rlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0RW5jb2RlclN0cmVhbUVuY29kZXI6OmZsdXNoKToKKyAgICAg
ICAgKiBlZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdl
YkNvcmU6OnNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4SW1hZ2VBcnJheUJ1ZmZlclZpZXdIZWxwZXIpOgorICAg
ICAgICAqIGluc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
YWRkU3RyaW5nVG9TSEExKToKKyAgICAgICAgKiBsb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkU2NyaXB0OjpzY3JpcHQpOgorICAgICAgICAqIHBhZ2UvY29jb2EvUmVzb3Vy
Y2VVc2FnZU92ZXJsYXlDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNob3dUZXh0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6bmV4dENodW5rKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmNyZWF0ZUNGRGF0YSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9L
ZXllZEVuY29kZXJHZW5lcmljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2Rlckdl
bmVyaWM6OmVuY29kZVN0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0R0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OnBh
Y2tJbWFnZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFj
a2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmdldFBpeGVs
QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6cHV0
UGl4ZWxCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9J
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NOYXRpdmVTYW1wbGVzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkZvdW5kYXRpb25DRjo6Z2VuZXJhdGVL
ZXlSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETVNlc3Npb25BVkZvdW5kYXRpb25DRjo6
dXBkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWQ0Y6OnJlYWROYXRpdmVTYW1wbGVCdWZmZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXI6OmNyZWF0ZUl0ZW1CdWZm
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlz
dDo6SXRlcmF0b3I6OnVwZGF0ZUN1cnJlbnRJdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VSZWFkZXIuaDoKKyAgICAgICAgKEdJRkltYWdlUmVhZGVy
OjpkYXRhIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9yTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5n
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFkZFN0cmluZ1RvU0hBMSk6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Rm9ybURhdGFCdWlsZGVyOjplbmNvZGVTdHJpbmdBc0Zvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
b2NrZXRTdHJlYW1IYW5kbGU6OnNlbmRIYW5kc2hha2UpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5oOgorICAgICAgICAoV2ViQ29yZTo6
aHR0cEhlYWRlclZhbHVlVXNpbmdTdWl0YWJsZUVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpwbGF0Zm9ybVNlbmRJbnRlcm5hbCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkN1cmxDYWNoZUVudHJ5OjpnZW5lcmF0ZUJhc2VGaWxlbmFtZSk6CisgICAg
ICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTUUxpdGVTdGF0ZW1lbnQ6OmNvbHVtbkJsb2JWaWV3KToKKyAgICAgICAgKiB0ZXN0aW5nL01v
Y2tDRE1GYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06OnNhbml0aXplUmVz
cG9uc2UgY29uc3QpOgorCiAyMDIxLTA2LTA3ICBFbGVuaSBNYXJpYSBTdGVhICA8ZXN0ZWFAaWdh
bGlhLmNvbT4KIAogICAgICAgICBDb21waWxlIGVycm9yIGJ5IHRyeWluZyB0byBmaXQgYSBHQ0dM
aW50NjQqIHRvIGEgR0xpbnQ2NCoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cKaW5kZXggY2IxNmNmYmU4ZGViNTEwMDk4
ZTMyMGExNGQ5YjhmZTVmNWE2YWQxOC4uNGRkNmEzODY0NDIzZjg5ZjdkMGUwZDkwZmM2YTc4NzAw
NjY5Y2Q3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wNi0wNyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSB1c2Ugb2YgcmVp
bnRlcnByZXRfY2FzdDw+IGluIHRoZSBjb2RlYmFzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NzQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzb2NrZXQvSFRUUFBhcnNlci5jcHA6CisgICAgICAg
IChXZWJEcml2ZXI6OkhUVFBQYXJzZXI6OnJlYWRMaW5lKToKKyAgICAgICAgKiBzb2NrZXQvU2Vz
c2lvbkhvc3RTb2NrZXQuY3BwOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uSG9zdDo6c2Vu
ZFdlYkluc3BlY3RvckV2ZW50KToKKwogMjAyMS0wNi0wMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIDx3dGYvT3B0aW9uYWwuaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
MjE0YWRhZWMwYjcxOGM4ZTExNmM4YTNiZjJmNjFlMDUyYjc0MjY2OS4uNmNlMmEyN2UzZGUxZmJi
MDdjMmRmOTY5MWQ3MDZjMjI4YjFmNTNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MiBAQAorMjAy
MS0wNi0wNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVj
ZSB1c2Ugb2YgcmVpbnRlcnByZXRfY2FzdDw+IGluIHRoZSBjb2RlYmFzZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NzQzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBs
YXllclByb3h5OjptZWRpYVBsYXllckluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKToKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlVGV4dFRyYWNrUHJveHk6OmFkZERhdGFDdWUpOgorICAgICAgICAq
IEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGFDdXJsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0NhY2hlOjpEYXRhOjphcHBseSBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlS2V5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nh
Y2hlOjpoYXNoU3RyaW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYktpdERp
cmVjdG9yeUlucHV0U3RyZWFtLmNwcDoKKyAgICAgICAgKHdlYmtpdERpcmVjdG9yeUlucHV0U3Ry
ZWFtUmVhZCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcDoKKyAg
ICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxDU3RyaW5nPjo6ZW5jb2RlKToKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxTdHJpbmc+OjplbmNvZGUpOgorICAgICAgICAqIFNoYXJlZC9BUEkv
Yy9jZi9XS1N0cmluZ0NGLm1tOgorICAgICAgICAoV0tTdHJpbmdDb3B5Q0ZTdHJpbmcpOgorICAg
ICAgICAqIFNoYXJlZC9BUEkvYy9jZi9XS1VSTENGLm1tOgorICAgICAgICAoV0tVUkxDb3B5Q0ZV
UkwpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIpOgorICAgICAgICAq
IFNoYXJlZC9TaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5oOgorICAgICAgICAoV2ViS2l0OjpTaGFy
ZWREaXNwbGF5TGlzdEhhbmRsZTo6ZGF0YSBjb25zdCk6CisgICAgICAgICogU2hhcmVkL1dlYkNv
bXBpbGVkQ29udGVudFJ1bGVMaXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcGlsZWRD
b250ZW50UnVsZUxpc3Q6OmNvbmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbiBjb25zdCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNl
LmNwcDoKKyAgICAgICAgKEFQSTo6V2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZTo6
dXNlckhhbmRsZSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6
CisgICAgICAgIChkYXRhRnJvbSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9y
aXphdGlvbi9SZWRpcmVjdFNPQXV0aG9yaXphdGlvblNlc3Npb24ubW06CisgICAgICAgIChXZWJL
aXQ6OlJlZGlyZWN0U09BdXRob3JpemF0aW9uU2Vzc2lvbjo6Y29tcGxldGVJbnRlcm5hbCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yQ2xpZW50OjpzZW5kV2ViSW5z
cGVjdG9yRXZlbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFu
bmVsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0Q2hhbm5lbDo6Y3JlYXRlTWVzc2Fn
ZVF1ZXVlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0Q2hhbm5lbDo6ZGlkUmVjZWl2ZVRl
eHQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxS
ZW1vdGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UlRDRGF0YUNoYW5uZWxSZW1vdGVN
YW5hZ2VyOjpzZW5kRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJUQ0RhdGFDaGFubmVsUmVtb3Rl
TWFuYWdlcjo6UmVtb3RlU291cmNlQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZVN0cmluZ0RhdGEpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVh
bS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luU3RyZWFtOjpzZW5kSmF2YVNj
cmlwdFN0cmVhbSk6CisKIDIwMjEtMDYtMDcgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUu
Y29tPgogCiAgICAgICAgIENvbnZlcnQgV2ViQ29yZTo6U25hcHNob3RPcHRpb25zIGludG8gYW4g
ZW51bSBjbGFzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ3J5cHRvZ3JhcGhpY2FsbHlS
YW5kb21OdW1iZXIuY3BwIGIvU291cmNlL1dURi93dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21O
dW1iZXIuY3BwCmluZGV4IGNiYWI5NjVlOTIzYmE0M2Y5YTUzOTg2NmVkMTYzY2Q0ZjQyNmFjOTcu
LmRmODI1ODQyNWQ5M2UwMDU4Yzg0ZmU3Y2VjMmVlMDZiMjRjNjdiMTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5jcHAKQEAgLTE0OSw3ICsx
NDksNyBAQCB2b2lkIEFSQzRSYW5kb21OdW1iZXJHZW5lcmF0b3I6OnJhbmRvbVZhbHVlcyh2b2lk
KiBidWZmZXIsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9
OwogCi0gICAgdW5zaWduZWQgY2hhciogcmVzdWx0ID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25l
ZCBjaGFyKj4oYnVmZmVyKTsKKyAgICBhdXRvIHJlc3VsdCA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
IGNoYXIqPihidWZmZXIpOwogICAgIHN0aXJJZk5lZWRlZCgpOwogICAgIHdoaWxlIChsZW5ndGgt
LSkgewogICAgICAgICBtX2NvdW50LS07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0
TWFsbG9jLmggYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmgKaW5kZXggMDI0ZjFiOTFjYjlh
YTFkMDRhOGNlNjQ0ZjFiZjVkZmZmMWE1YzRkNi4uNzNkOTY5YjQyMDU2ZjYxY2JmNTQwMGIxZmE1
Yzg3YmI3ZDhkNmY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuaApAQCAtMjAzLDcgKzIwMyw3IEBAIHB1Ymxp
YzoKIAogICAgIFQqIGFsbG9jYXRlKHNpemVfdCBjb3VudCkKICAgICB7Ci0gICAgICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PFQqPihmYXN0TWFsbG9jKHNpemVvZihUKSAqIGNvdW50KSk7Cisg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUKj4oZmFzdE1hbGxvYyhzaXplb2YoVCkgKiBjb3Vu
dCkpOwogICAgIH0KIAogICAgIHZvaWQgZGVhbGxvY2F0ZShUKiBwb2ludGVyLCBzaXplX3QpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TSEExLmggYi9Tb3VyY2UvV1RGL3d0Zi9TSEExLmgK
aW5kZXggMmM3ZDlhMzY0ZTE1OWU0ZGQwNDU5ZjQ3MjA1YzgzZGNkMDYzMjliZi4uNWJkYTQyZWQ2
ZDZkNjgzZTViYWExYjM5OWFlODBjYjE1MTlkYmE5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvU0hBMS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1NIQTEuaApAQCAtNTEsOCArNTEsNyBAQCBw
dWJsaWM6CiAgICAgfQogICAgIHZvaWQgYWRkQnl0ZXMoY29uc3QgQ1N0cmluZyYgaW5wdXQpCiAg
ICAgewotICAgICAgICBjb25zdCBjaGFyKiBzdHJpbmcgPSBpbnB1dC5kYXRhKCk7Ci0gICAgICAg
IGFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0cmluZyksIGlucHV0
Lmxlbmd0aCgpKTsKKyAgICAgICAgYWRkQnl0ZXMoaW5wdXQuY2hhcmFjdGVyczgoKSwgaW5wdXQu
bGVuZ3RoKCkpOwogICAgIH0KICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhZGRCeXRlcyhj
b25zdCB1aW50OF90KiBpbnB1dCwgc2l6ZV90IGxlbmd0aCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL1N0YWNrQ2hlY2suaCBiL1NvdXJjZS9XVEYvd3RmL1N0YWNrQ2hlY2suaAppbmRl
eCA5YzcyNzg2MmMwOWZmMTAzOWEzNzc3MmIyZDYzNjhhNGQ0Y2I0NDExLi5hMTkyZmM3MWUyNTg4
NmJiYzYyMGRiN2FlNWNmN2U1MGIyYjg2NGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9T
dGFja0NoZWNrLmgKKysrIGIvU291cmNlL1dURi93dGYvU3RhY2tDaGVjay5oCkBAIC01Nyw3ICs1
Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIC8vIHRoZW4gd2UgZWl0aGVyIG5lZWQgdG86CiAg
ICAgICAgICAgICAvLyAxLiBicmVhayB0aGUgaW50ZXJ2YWwgaW50byBzbWFsbGVyIHBpZWNlcyAo
aS5lLiBpbnNlcnQgbW9yZSBjaGVja3MpLCBvcgogICAgICAgICAgICAgLy8gMi4gdXNlIGEgbGFy
Z2VyIHJlc2VydmVkWm9uZSBzaXplLgotICAgICAgICAgICAgdWludDhfdCogY3VycmVudFN0YWNr
Q2hlY2twb2ludCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGN1cnJlbnRTdGFja1BvaW50
ZXIoKSk7CisgICAgICAgICAgICB1aW50OF90KiBjdXJyZW50U3RhY2tDaGVja3BvaW50ID0gc3Rh
dGljX2Nhc3Q8dWludDhfdCo+KGN1cnJlbnRTdGFja1BvaW50ZXIoKSk7CiAgICAgICAgICAgICB1
aW50OF90KiBwcmV2aW91c1N0YWNrQ2hlY2twb2ludCA9IG1fY2hlY2tlci5tX2xhc3RTdGFja0No
ZWNrcG9pbnQ7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChwcmV2aW91c1N0YWNrQ2hlY2tw
b2ludCAtIGN1cnJlbnRTdGFja0NoZWNrcG9pbnQgPiAwKTsKICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKHByZXZpb3VzU3RhY2tDaGVja3BvaW50IC0gY3VycmVudFN0YWNrQ2hlY2twb2ludCA8
IHN0YXRpY19jYXN0PHB0cmRpZmZfdD4obV9jaGVja2VyLm1fcmVzZXJ2ZWRab25lKSk7CkBAIC04
Nyw3ICs4Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgOiBtX3N0YWNrTGltaXQoYm91bmRzLnJlY3Vy
c2lvbkxpbWl0KG1pblJlc2VydmVkWm9uZSkpCiAjaWYgVkVSSUZZX1NUQUNLX0NIRUNLX1JFU0VS
VkVEX1pPTkVfU0laRQogICAgICAgICAsIG1fb3duZXJUaHJlYWQoJlRocmVhZDo6Y3VycmVudCgp
KQotICAgICAgICAsIG1fbGFzdFN0YWNrQ2hlY2twb2ludChyZWludGVycHJldF9jYXN0PHVpbnQ4
X3QqPihjdXJyZW50U3RhY2tQb2ludGVyKCkpKQorICAgICAgICAsIG1fbGFzdFN0YWNrQ2hlY2tw
b2ludChzdGF0aWNfY2FzdDx1aW50OF90Kj4oY3VycmVudFN0YWNrUG9pbnRlcigpKSkKICAgICAg
ICAgLCBtX3Jlc2VydmVkWm9uZShtaW5SZXNlcnZlZFpvbmUpCiAjZW5kaWYKICAgICB7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTEhlbHBlcnMuY3BwIGIvU291cmNlL1dURi93dGYv
VVJMSGVscGVycy5jcHAKaW5kZXggOWE5ZDA2MDEzZTc1NWNlY2Q4YWZiOGIyN2YwNDY5M2YyMWRk
MGMwYS4uMGE5ODY1ZTkyNjFkOWYxYzFmY2MwZTFlMWQ1MjlkMDYyNzhjMmExMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvVVJMSGVscGVycy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVVJM
SGVscGVycy5jcHAKQEAgLTgyMiw3ICs4MjIsNyBAQCBzdGF0aWMgU3RyaW5nIGVzY2FwZVVuc2Fm
ZUNoYXJhY3RlcnMoY29uc3QgU3RyaW5nJiBzb3VyY2VCdWZmZXIpCiAKIFN0cmluZyB1c2VyVmlz
aWJsZVVSTChjb25zdCBDU3RyaW5nJiB1cmwpCiB7Ci0gICAgYXV0byogYmVmb3JlID0gcmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4odXJsLmRhdGEoKSk7CisgICAgYXV0byog
YmVmb3JlID0gdXJsLmNoYXJhY3RlcnM4KCk7CiAgICAgaW50IGxlbmd0aCA9IHVybC5sZW5ndGgo
KTsKIAogICAgIGlmICghbGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVJMUGFy
c2VyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1VSTFBhcnNlci5jcHAKaW5kZXggMjkzNjlhMmEzMWVk
MDRhYmVlMGRkNmZmOThkMmIyNmQwNTU2MDhkZi4uOTdmNzcwYjc2NzYwYTU1OWMwYmQ3ODEzNmE4
MWJjZmFjYTM5ZTUwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVVJMUGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIuY3BwCkBAIC0yNzkyLDcgKzI3OTIsNyBAQCBz
dGQ6Om9wdGlvbmFsPFN0cmluZz4gVVJMUGFyc2VyOjpmb3JtVVJMRGVjb2RlKFN0cmluZ1ZpZXcg
aW5wdXQpCiAgICAgYXV0byB1dGY4ID0gaW5wdXQudXRmOChTdHJpY3RDb252ZXJzaW9uKTsKICAg
ICBpZiAodXRmOC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBh
dXRvIHBlcmNlbnREZWNvZGVkID0gcGVyY2VudERlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0
IExDaGFyKj4odXRmOC5kYXRhKCkpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICBhdXRvIHBlcmNlbnRE
ZWNvZGVkID0gcGVyY2VudERlY29kZSh1dGY4LmNoYXJhY3RlcnM4KCksIHV0ZjgubGVuZ3RoKCkp
OwogICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4UmVwbGFjaW5nSW52YWxpZFNlcXVlbmNlcyhw
ZXJjZW50RGVjb2RlZC5kYXRhKCksIHBlcmNlbnREZWNvZGVkLnNpemUoKSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NmL1VSTENGLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2NmL1VS
TENGLmNwcAppbmRleCAxNDNkYzg1NjYyZjRlN2FkMzMyMjZjMzM0ZmZiYWE1ZDRlY2ZmOGU5Li43
YzZlNDc3MDRhOGVmZDcwNDkyOTM4MmY1Y2ZjN2I4YTRiYmZiN2MxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9jZi9VUkxDRi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvY2YvVVJMQ0YuY3Bw
CkBAIC01MiwxMCArNTIsMTAgQEAgUmV0YWluUHRyPENGVVJMUmVmPiBVUkw6OmNyZWF0ZUNGVVJM
KCkgY29uc3QKIHsKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNmVVJMOwogICAgIGlmIChMSUtF
TFkobV9zdHJpbmcuaXM4Qml0KCkgJiYgbV9zdHJpbmcuaXNBbGxBU0NJSSgpKSkKLSAgICAgICAg
Y2ZVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMobnVsbHB0ciwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KG1fc3RyaW5nLmNoYXJhY3RlcnM4KCkpLCBt
X3N0cmluZy5sZW5ndGgoKSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBudWxscHRyLCB0cnVlKSk7
CisgICAgICAgIGNmVVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVz
KG51bGxwdHIsIG1fc3RyaW5nLmNoYXJhY3RlcnM4KCksIG1fc3RyaW5nLmxlbmd0aCgpLCBrQ0ZT
dHJpbmdFbmNvZGluZ1VURjgsIG51bGxwdHIsIHRydWUpKTsKICAgICBlbHNlIHsKICAgICAgICAg
Q1N0cmluZyB1dGY4ID0gbV9zdHJpbmcudXRmOCgpOwotICAgICAgICBjZlVSTCA9IGFkb3B0Q0Yo
Q0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxscHRyLCByZWludGVycHJldF9jYXN0
PGNvbnN0IFVJbnQ4Kj4odXRmOC5kYXRhKCkpLCB1dGY4Lmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNv
ZGluZ1VURjgsIG51bGxwdHIsIHRydWUpKTsKKyAgICAgICAgY2ZVUkwgPSBhZG9wdENGKENGVVJM
Q3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMobnVsbHB0ciwgdXRmOC5jaGFyYWN0ZXJzOCgpLCB1
dGY4Lmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIG51bGxwdHIsIHRydWUpKTsKICAg
ICB9CiAKICAgICBpZiAocHJvdG9jb2xJc0luSFRUUEZhbWlseSgpICYmICFpc0NGVVJMU2FtZU9y
aWdpbihjZlVSTC5nZXQoKSwgKnRoaXMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29j
b2EvVVJMQ29jb2EubW0gYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9VUkxDb2NvYS5tbQppbmRleCBk
MWQxYjFiZGI2YzUyMmJiZGI5OTU3YWIxYTk5Y2M3Nzc2Y2QzM2VkLi41OTE5MDAwYTJiMjMyY2M4
YTNjY2Q1YmQxNjAyYTJhMWQ1MWQwMWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2Nv
YS9VUkxDb2NvYS5tbQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9VUkxDb2NvYS5tbQpAQCAt
NzAsMTAgKzcwLDEwIEBAIFJldGFpblB0cjxDRlVSTFJlZj4gVVJMOjpjcmVhdGVDRlVSTCgpIGNv
bnN0CiAKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNmVVJMOwogICAgIGlmIChMSUtFTFkobV9z
dHJpbmcuaXM4Qml0KCkgJiYgbV9zdHJpbmcuaXNBbGxBU0NJSSgpKSkKLSAgICAgICAgY2ZVUkwg
PSBhZG9wdENGKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMobnVsbHB0ciwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBVSW50OCo+KG1fc3RyaW5nLmNoYXJhY3RlcnM4KCkpLCBtX3N0cmlu
Zy5sZW5ndGgoKSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBudWxscHRyLCB0cnVlKSk7CisgICAg
ICAgIGNmVVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKG51bGxw
dHIsIG1fc3RyaW5nLmNoYXJhY3RlcnM4KCksIG1fc3RyaW5nLmxlbmd0aCgpLCBrQ0ZTdHJpbmdF
bmNvZGluZ1VURjgsIG51bGxwdHIsIHRydWUpKTsKICAgICBlbHNlIHsKICAgICAgICAgQ1N0cmlu
ZyB1dGY4ID0gbV9zdHJpbmcudXRmOCgpOwotICAgICAgICBjZlVSTCA9IGFkb3B0Q0YoQ0ZVUkxD
cmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxscHRyLCByZWludGVycHJldF9jYXN0PGNvbnN0
IFVJbnQ4Kj4odXRmOC5kYXRhKCkpLCB1dGY4Lmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VU
RjgsIG51bGxwdHIsIHRydWUpKTsKKyAgICAgICAgY2ZVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRl
QWJzb2x1dGVVUkxXaXRoQnl0ZXMobnVsbHB0ciwgdXRmOC5jaGFyYWN0ZXJzOCgpLCB1dGY4Lmxl
bmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIG51bGxwdHIsIHRydWUpKTsKICAgICB9CiAK
ICAgICBpZiAocHJvdG9jb2xJc0luSFRUUEZhbWlseSgpICYmICFXVEY6OmlzQ0ZVUkxTYW1lT3Jp
Z2luKGNmVVJMLmdldCgpLCAqdGhpcykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wZXJz
aXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNl
L1BlcnNpc3RlbnRDb2RlcnMuY3BwCmluZGV4IDQ2MzU4YmRjYmY2NTJmNzE0YmE3NzZhNjJlY2Nk
Y2JlMjQ2NjkxYWIuLjhhMTQ0MTY4NDEyZTVhZTVkMWUwMDM4OGViYTE4YzNlODE5Yzc2NjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuY3Bw
CisrKyBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuY3BwCkBA
IC01Nyw3ICs1Nyw3IEBAIHZvaWQgQ29kZXI8Q1N0cmluZz46OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBDU3RyaW5nJiBzdHJpbmcpCiAKICAgICB1aW50MzJfdCBsZW5ndGggPSBzdHJp
bmcubGVuZ3RoKCk7CiAgICAgZW5jb2RlciA8PCBsZW5ndGg7Ci0gICAgZW5jb2Rlci5lbmNvZGVG
aXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oc3RyaW5nLmRh
dGEoKSksIGxlbmd0aCk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoc3RyaW5n
LmNoYXJhY3RlcnM4KCksIGxlbmd0aCk7CiB9CiAKIHN0ZDo6b3B0aW9uYWw8Q1N0cmluZz4gQ29k
ZXI8Q1N0cmluZz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQpAQCAtOTgsNyArOTgsNyBAQCB2
b2lkIENvZGVyPFN0cmluZz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTdHJpbmcm
IHN0cmluZykKICAgICBlbmNvZGVyIDw8IGxlbmd0aCA8PCBpczhCaXQ7CiAKICAgICBpZiAoaXM4
Qml0KQotICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9j
YXN0PGNvbnN0IHVpbnQ4X3QqPihzdHJpbmcuY2hhcmFjdGVyczgoKSksIGxlbmd0aCAqIHNpemVv
ZihMQ2hhcikpOworICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShzdHJpbmcu
Y2hhcmFjdGVyczgoKSwgbGVuZ3RoICogc2l6ZW9mKExDaGFyKSk7CiAgICAgZWxzZQogICAgICAg
ICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihzdHJpbmcuY2hhcmFjdGVyczE2KCkpLCBsZW5ndGggKiBzaXplb2YoVUNoYXIpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQ1N0cmluZy5oIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9DU3RyaW5nLmgKaW5kZXggZTA1ZGFmNzdmNTNlMTVlM2UwNjNhMzI0ZjczYzJl
ODZkNzRhMzk4MS4uYTExYTg4Yjg4NjBjZDQzMzllZDY5YzNhODNmNDIwZjc5NzJlNDI4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9DU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93
dGYvdGV4dC9DU3RyaW5nLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlIDx3dGYvSGFzaFRy
YWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L0xDaGFyLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCkBAIC02
MSw2ICs2Miw3IEBAIHB1YmxpYzoKICAgICBDU3RyaW5nKCkgeyB9CiAgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIENTdHJpbmcoY29uc3QgY2hhciopOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBDU3Ry
aW5nKGNvbnN0IGNoYXIqLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBDU3RyaW5nKGNvbnN0IExDaGFy
KiBkYXRhLCBzaXplX3QgbGVuZ3RoKSA6IENTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
aGFyKj4oZGF0YSksIGxlbmd0aCkgeyB9CiAgICAgQ1N0cmluZyhDU3RyaW5nQnVmZmVyKiBidWZm
ZXIpIDogbV9idWZmZXIoYnVmZmVyKSB7IH0KICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IENTdHJpbmcgbmV3VW5pbml0aWFsaXplZChzaXplX3QgbGVuZ3RoLCBjaGFyKiYgY2hhcmFjdGVy
QnVmZmVyKTsKICAgICBDU3RyaW5nKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpIDogbV9idWZm
ZXIoSGFzaFRhYmxlRGVsZXRlZFZhbHVlKSB7IH0KQEAgLTY5LDYgKzcxLDkgQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmRhdGEoKSA6IG51bGxw
dHI7CiAgICAgfQorCisgICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnM4KCkgY29uc3QgeyByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGRhdGEoKSk7IH0KKwogICAgIFdURl9F
WFBPUlRfUFJJVkFURSBjaGFyKiBtdXRhYmxlRGF0YSgpOwogICAgIHNpemVfdCBsZW5ndGgoKSBj
b25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNw
cCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAppbmRleCA4NmY5ODM4MGRhMDg1
ZWEzMmJmYmMwMDM3MDEwNjk0Mjk5MmMzYTE1Li5hNmQ0ZGQyMzNkZGE2OGRjZDhhYzIxZDg1YjA4
ZDFjZGEyMjVmMTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCkBAIC02NjAsNyArNjYw
LDcgQEAgQ1N0cmluZyBTdHJpbmc6OmxhdGluMSgpIGNvbnN0CiAgICAgICAgIHJldHVybiBDU3Ry
aW5nKCIiLCAwKTsKIAogICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIENTdHJpbmco
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4odGhpcy0+Y2hhcmFjdGVyczgoKSksIGxlbmd0
aCk7CisgICAgICAgIHJldHVybiBDU3RyaW5nKHRoaXMtPmNoYXJhY3RlcnM4KCksIGxlbmd0aCk7
CiAKICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IHRoaXMtPmNoYXJhY3RlcnMxNigpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAgYi9T
b3VyY2UvV1RGL3d0Zi90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAKaW5kZXggYzA3NWMwZDRhYzg5
MDhhZjI5ZGIyYzUzMzVhYWUzZDljMThmNDMxOC4uMWUyMzY0NzE0ZjhiNzgwYTQ3MTA2Y2IwOTJl
Yjg3ZWIzMTJlNGFlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9jZi9TdHJpbmdJ
bXBsQ0YuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvY2YvU3RyaW5nSW1wbENGLmNwcApA
QCAtMTE5LDcgKzExOSw3IEBAIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gU3RyaW5nSW1wbDo6Y3Jl
YXRlQ0ZTdHJpbmcoKQogewogICAgIGlmICghbV9sZW5ndGggfHwgIWlzTWFpblRocmVhZCgpKSB7
CiAgICAgICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAgICAgIHJldHVybiBhZG9wdENGKENGU3Ry
aW5nQ3JlYXRlV2l0aEJ5dGVzKG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgq
PihjaGFyYWN0ZXJzOCgpKSwgbV9sZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBm
YWxzZSkpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0
ZXMobnVsbHB0ciwgY2hhcmFjdGVyczgoKSwgbV9sZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nSVNP
TGF0aW4xLCBmYWxzZSkpOwogICAgICAgICByZXR1cm4gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdp
dGhDaGFyYWN0ZXJzKG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVW5pQ2hhcio+KGNo
YXJhY3RlcnMxNigpKSwgbV9sZW5ndGgpKTsKICAgICB9CiAgICAgQ0ZBbGxvY2F0b3JSZWYgYWxs
b2NhdG9yID0gU3RyaW5nV3JhcHBlckNGQWxsb2NhdG9yOjphbGxvY2F0b3IoKTsKQEAgLTEzMCw3
ICsxMzAsNyBAQCBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IFN0cmluZ0ltcGw6OmNyZWF0ZUNGU3Ry
aW5nKCkKIAogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3RyaW5nOwogICAgIGlmIChpczhC
aXQoKSkKLSAgICAgICAgc3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhCeXRlc05v
Q29weShhbGxvY2F0b3IsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihjaGFyYWN0ZXJz
OCgpKSwgbV9sZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBmYWxzZSwga0NGQWxs
b2NhdG9yTnVsbCkpOworICAgICAgICBzdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0
aEJ5dGVzTm9Db3B5KGFsbG9jYXRvciwgY2hhcmFjdGVyczgoKSwgbV9sZW5ndGgsIGtDRlN0cmlu
Z0VuY29kaW5nSVNPTGF0aW4xLCBmYWxzZSwga0NGQWxsb2NhdG9yTnVsbCkpOwogICAgIGVsc2UK
ICAgICAgICAgc3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzTm9D
b3B5KGFsbG9jYXRvciwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVbmlDaGFyKj4oY2hhcmFjdGVy
czE2KCkpLCBtX2xlbmd0aCwga0NGQWxsb2NhdG9yTnVsbCkpOwogICAgIC8vIENvcmVGb3VuZGF0
aW9uIG1pZ2h0IG5vdCBoYXZlIHRvIGFsbG9jYXRlIGFueXRoaW5nLCB3ZSBjbGVhciBjdXJyZW50
U3RyaW5nIGluIGNhc2Ugd2UgZGlkIG5vdCBleGVjdXRlIGFsbG9jYXRlKCkuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1T
ZXNzaW9uQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmNwcAppbmRleCBiMjI4Mzg5OWZkNjM2
MTVkMzY3ZDk4MTg2ZmY4ODc2MWVhMTE4YmVmLi5jZTFjMTk4ZmM2YTRkOWU3NmMwNDNkYjQ5MWZk
ODMyZDllNzNiZDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Npb25DbGVh
cktleS5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgUmVmUHRyPFVpbnQ4QXJyYXk+IENETVNlc3Npb25D
bGVhcktleTo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUKICAgICBt
X2luaXREYXRhID0gaW5pdERhdGE7CiAKICAgICBib29sIHNhd0Vycm9yID0gZmFsc2U7Ci0gICAg
U3RyaW5nIGtleUlEID0gVVRGOEVuY29kaW5nKCkuZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3RfcHRy
PGNoYXIqPihtX2luaXREYXRhLT5iYXNlQWRkcmVzcygpKSwgbV9pbml0RGF0YS0+Ynl0ZUxlbmd0
aCgpLCB0cnVlLCBzYXdFcnJvcik7CisgICAgU3RyaW5nIGtleUlEID0gVVRGOEVuY29kaW5nKCku
ZGVjb2RlKHN0YXRpY19jYXN0PGNoYXIqPihtX2luaXREYXRhLT5iYXNlQWRkcmVzcygpKSwgbV9p
bml0RGF0YS0+Ynl0ZUxlbmd0aCgpLCB0cnVlLCBzYXdFcnJvcik7CiAgICAgaWYgKHNhd0Vycm9y
KSB7CiAgICAgICAgIGVycm9yQ29kZSA9IFdlYktpdE1lZGlhS2V5RXJyb3I6Ok1FRElBX0tFWUVS
Ul9DTElFTlQ7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IDQ4MzZkMjgxM2ZlNzRiMTJhMmVkMGEwNWFiYzk5
OTk1ZmRiOTBhNDQuLjBkZDhkZmNkNTFmNDk0OGUyNzMzNjhhYjU2ODAxMzViOGFiNGE3ZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKQEAgLTMwNCw5ICsz
MDQsOSBAQCBGZXRjaEJvZHk6OlRha2VuRGF0YSBGZXRjaEJvZHk6OnRha2UoKQogICAgICAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2RlKHVybFNlYXJj
aFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykp
OwogCiAgICAgaWYgKGlzQXJyYXlCdWZmZXIoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyQm9keSgp
LmRhdGEoKSksIGFycmF5QnVmZmVyQm9keSgpLmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZm
ZXJCb2R5KCkuZGF0YSgpKSwgYXJyYXlCdWZmZXJCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKICAgICBp
ZiAoaXNBcnJheUJ1ZmZlclZpZXcoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyVmlld0JvZHko
KS5iYXNlQWRkcmVzcygpKSwgYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJ5dGVMZW5ndGgoKSk7Cisg
ICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50
OF90Kj4oYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJhc2VBZGRyZXNzKCkpLCBhcnJheUJ1ZmZlclZp
ZXdCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKIAogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRl
eCAyYWIwY2FmMTAwZDBjMzEzOGMyYjYyNjQzZDczYjIxZWM2YmU5ZWI4Li42MDY0NGJmOTk0MTlm
YjM3NzYwZDBmY2JiYzZhMDg2ZTc3NTA5OTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMjc4LDcgKzI3OCw3IEBAIHZv
aWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9t
aXNlLCBjb25zdCBTdHJpbmcmIGNvCiAgICAgICAgICAgICBpZiAoYXV0byBjaHVuayA9IHJlc3Vs
dC5yZXR1cm5WYWx1ZSgpKQogICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0
YSwgY2h1bmstPnNpemUpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc29s
dmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGRhdGEtPmRhdGEoKSksIGRhdGEt
PnNpemUoKSk7CisgICAgICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3Zl
KHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkp
OwogICAgICAgICB9KTsKICAgICAgICAgbV9zaW5rLT5waXBlRnJvbSgqc3RyZWFtKTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtMzU1LDcgKzM1NSw3IEBAIFJlZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1l
cjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgICAgICBy
ZXR1cm4gQmxvYjo6Y3JlYXRlKGNvbnRleHQsIFZlY3Rvcjx1aW50OF90PigpLCBCbG9iOjpub3Jt
YWxpemVkQ29udGVudFR5cGUobV9jb250ZW50VHlwZSkpOwogCiAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCB0cnkgdG8gbW92ZSBtX2J1ZmZlciB0byBCbG9iIHdpdGhvdXQgZG9pbmcgZXh0cmEgY29w
eS4KLSAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRleHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdW5zaWduZWQgY2hhcio+KG1fYnVmZmVyLT5kYXRhKCkpLCBtX2J1ZmZlci0+c2l6ZSgpLCBt
X2NvbnRlbnRUeXBlKTsKKyAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRleHQsIG1fYnVmZmVy
LT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCksIG1fY29udGVudFR5cGUpOwogfQogCiBTdHJpbmcg
RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQpAQCAtMzY0LDcgKzM2NCw3IEBAIFN0cmlu
ZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4dCgpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgYXV0byB0ZXh0ID0gVGV4dFJlc291cmNlRGVj
b2Rlcjo6dGV4dEZyb21VVEY4KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+
KG1fYnVmZmVyLT5kYXRhKCkpLCBtX2J1ZmZlci0+c2l6ZSgpKTsKKyAgICBhdXRvIHRleHQgPSBU
ZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgobV9idWZmZXItPmRhdGEoKSwgbV9idWZm
ZXItPnNpemUoKSk7CiAgICAgbV9idWZmZXIgPSBudWxscHRyOwogICAgIHJldHVybiB0ZXh0Owog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCmluZGV4IGU3YzIxYWVmNWIzMDUx
M2FmNWM1Y2U5NmQwZmQzNDRmZjcyNGVkNjYuLjAxYzEzZDVlZGUxYjllNTgzNWQ4Y2I4M2ZlZmUy
NTc4MjhkYTFhNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKQEAgLTgw
LDcgKzgwLDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnJlYWR5VG9TZW5k
KCkKICAgICBtX2lzUmVhZHlUb1NlbmQgPSB0cnVlOwogCiAgICAgZm9yIChhdXRvJiBtZXNzYWdl
IDogbV9wZW5kaW5nTWVzc2FnZXMpCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9y
ZW1vdGVJZGVudGlmaWVyLCBtZXNzYWdlLmlzUmF3LCByZWludGVycHJldF9jYXN0PGNvbnN0IHVu
c2lnbmVkIGNoYXIqPihtZXNzYWdlLmJ1ZmZlci0+ZGF0YSgpKSwgbWVzc2FnZS5idWZmZXItPnNp
emUoKSk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVy
LCBtZXNzYWdlLmlzUmF3LCBtZXNzYWdlLmJ1ZmZlci0+ZGF0YSgpLCBtZXNzYWdlLmJ1ZmZlci0+
c2l6ZSgpKTsKICAgICBtX3BlbmRpbmdNZXNzYWdlcy5jbGVhcigpOwogCiAgICAgaWYgKG1faXNQ
ZW5kaW5nQ2xvc2UpCkBAIC0xMDAsNyArMTAwLDcgQEAgYm9vbCBSVENEYXRhQ2hhbm5lbFJlbW90
ZUhhbmRsZXI6OnNlbmRTdHJpbmdEYXRhKGNvbnN0IENTdHJpbmcmIHRleHQpCiAgICAgICAgIG1f
cGVuZGluZ01lc3NhZ2VzLmFwcGVuZChNZXNzYWdlIHsgZmFsc2UsIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHRleHQuZGF0YSgpLCB0ZXh0Lmxlbmd0aCgpKSB9KTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQotICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBm
YWxzZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4odGV4dC5kYXRhKCkp
LCB0ZXh0Lmxlbmd0aCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmREYXRhKG1fcmVtb3RlSWRl
bnRpZmllciwgZmFsc2UsIHRleHQuY2hhcmFjdGVyczgoKSwgdGV4dC5sZW5ndGgoKSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTExMCw3ICsxMTAsNyBAQCBib29sIFJUQ0RhdGFDaGFubmVs
UmVtb3RlSGFuZGxlcjo6c2VuZFJhd0RhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNp
emUpCiAgICAgICAgIG1fcGVuZGluZ01lc3NhZ2VzLmFwcGVuZChNZXNzYWdlIHsgdHJ1ZSwgU2hh
cmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSkgfSk7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmREYXRhKG1fcmVtb3RlSWRlbnRpZmllciwgdHJ1
ZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oZGF0YSksIHNpemUpOwor
ICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCB0cnVlLCBkYXRh
LCBzaXplKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlR1N0cmVhbWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZUdT
dHJlYW1lci5jcHAKaW5kZXggNTZlZDYwMWY0NjVhMDFjMGE3NDNhNTkyNTdhNzU1OWMxNjcxZTM4
NS4uNDUwMTJlMzBlODE4ZmI1ODkzZDQ2MzYzMGJjM2U3YTUxZWIwOTViNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlR1N0
cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC00Myw4ICs0Myw4IEBAIHN0YXRpYyBWZWN0
b3I8c2l6ZV90PiBjb3B5QnVzRGF0YShBdWRpb0J1cyYgYnVzLCBHc3RCdWZmZXIqIGJ1ZmZlciwg
Ym9vbCBpc011dGVkCiAgICAgc2l6ZV90IHNpemUgPSBtYXBwZWRCdWZmZXIuc2l6ZSgpIC8gYnVz
Lm51bWJlck9mQ2hhbm5lbHMoKTsKICAgICBmb3IgKHNpemVfdCBjaGFubmVsSW5kZXggPSAwOyBj
aGFubmVsSW5kZXggPCBidXMubnVtYmVyT2ZDaGFubmVscygpOyArK2NoYW5uZWxJbmRleCkgewog
ICAgICAgICBjb25zdCBhdXRvJiBjaGFubmVsID0gKmJ1cy5jaGFubmVsKGNoYW5uZWxJbmRleCk7
Ci0gICAgICAgIGF1dG8gb2Zmc2V0ID0gcmVpbnRlcnByZXRfY2FzdDxzaXplX3Q+KGNoYW5uZWxJ
bmRleCAqIHNpemUpOwotICAgICAgICBtZW1jcHkocmVpbnRlcnByZXRfY2FzdDxmbG9hdCo+KG1h
cHBlZEJ1ZmZlci5kYXRhKCkgKyBvZmZzZXQpLCBjaGFubmVsLmRhdGEoKSwgc2l6ZW9mKGZsb2F0
KSAqIGNoYW5uZWwubGVuZ3RoKCkpOworICAgICAgICBhdXRvIG9mZnNldCA9IGNoYW5uZWxJbmRl
eCAqIHNpemU7CisgICAgICAgIG1lbWNweShtYXBwZWRCdWZmZXIuZGF0YSgpICsgb2Zmc2V0LCBj
aGFubmVsLmRhdGEoKSwgc2l6ZW9mKGZsb2F0KSAqIGNoYW5uZWwubGVuZ3RoKCkpOwogICAgICAg
ICBvZmZzZXRzLnVuY2hlY2tlZEFwcGVuZChvZmZzZXQpOwogICAgIH0KICAgICByZXR1cm4gb2Zm
c2V0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVu
dGljYXRvclJlc3BvbnNlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9B
dXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhLmgKaW5kZXggMjM4MGE0MmQ1ZmE1YWNjOTdhMGYwNmY1
ODUxZjg3ZGVjM2NjMDk4Ny4uNTU5MTM2YjIzZjQ0NTQxNWFiZjYyODIwM2Q3ZDBmZWJkZmM0ZGNk
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNh
dG9yUmVzcG9uc2VEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9B
dXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhLmgKQEAgLTU5LDcgKzU5LDcgQEAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4KIHN0YXRpYyB2b2lkIGVuY29kZUFycmF5QnVmZmVyKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IEFycmF5QnVmZmVyJiBidWZmZXIpCiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4oYnVmZmVyLmJ5dGVMZW5ndGgoKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVG
aXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYnVmZmVyLmRh
dGEoKSksIGJ1ZmZlci5ieXRlTGVuZ3RoKCksIDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRM
ZW5ndGhEYXRhKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihidWZmZXIuZGF0YSgpKSwgYnVm
ZmVyLmJ5dGVMZW5ndGgoKSwgMSk7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CkBAIC03
NSw3ICs3NSw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gZGVjb2RlQXJyYXlCdWZmZXIoRGVjb2Rl
ciYgZGVjb2RlcikKICAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobGVu
Z3RoLnZhbHVlKCksIHNpemVvZih1aW50OF90KSk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEo
cmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oYnVmZmVyLT5kYXRhKCkpLCBsZW5ndGgudmFsdWUo
KSwgMSkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShzdGF0aWNfY2Fz
dDx1aW50OF90Kj4oYnVmZmVyLT5kYXRhKCkpLCBsZW5ndGgudmFsdWUoKSwgMSkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBidWZmZXI7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXgg
M2UyNGVhNmY2NTRmOTIxZTQ4NDE3ZmUwZWZjNGMyOGM0YzI1NzljMC4uMGI3MTFiYWU3MjhmMGE4
MjVjYzVmNmZjZDhhZWQyOWZlNTA5NTA3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtNDk1LDcgKzQ5NSw3
IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6c3RhcnRDbG9zaW5nSGFuZHNoYWtlKGludCBjb2Rl
LCBjb25zdCBTdHJpbmcmIHJlYXNvbikKICAgICAgICAgYnVmLmFwcGVuZChoaWdoQnl0ZSk7CiAg
ICAgICAgIGJ1Zi5hcHBlbmQobG93Qnl0ZSk7CiAgICAgICAgIGF1dG8gcmVhc29uVVRGOCA9IHJl
YXNvbi51dGY4KCk7Ci0gICAgICAgIGJ1Zi5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4ocmVhc29uVVRGOC5kYXRhKCkpLCByZWFzb25VVEY4Lmxlbmd0aCgpKTsKKyAgICAg
ICAgYnVmLmFwcGVuZChyZWFzb25VVEY4LmNoYXJhY3RlcnM4KCksIHJlYXNvblVURjgubGVuZ3Ro
KCkpOwogICAgIH0KICAgICBlbnF1ZXVlUmF3RnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZUNs
b3NlLCBidWYuZGF0YSgpLCBidWYuc2l6ZSgpKTsKICAgICBSZWY8V2ViU29ja2V0Q2hhbm5lbD4g
cHJvdGVjdGVkVGhpcygqdGhpcyk7IC8vIEFuIGF0dGVtcHQgdG8gc2VuZCBjbG9zaW5nIGhhbmRz
aGFrZSBtYXkgZmFpbCwgd2hpY2ggd2lsbCBnZXQgdGhlIGNoYW5uZWwgY2xvc2VkIGFuZCBkZXJl
ZmVyZW5jZWQuCkBAIC03NDMsNyArNzQzLDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpwcm9j
ZXNzT3V0Z29pbmdGcmFtZVF1ZXVlKCkKICAgICAgICAgYXV0byBmcmFtZSA9IG1fb3V0Z29pbmdG
cmFtZVF1ZXVlLnRha2VGaXJzdCgpOwogICAgICAgICBzd2l0Y2ggKGZyYW1lLT5mcmFtZVR5cGUp
IHsKICAgICAgICAgY2FzZSBRdWV1ZWRGcmFtZVR5cGVTdHJpbmc6IHsKLSAgICAgICAgICAgIHNl
bmRGcmFtZShmcmFtZS0+b3BDb2RlLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihm
cmFtZS0+c3RyaW5nRGF0YS5kYXRhKCkpLCBmcmFtZS0+c3RyaW5nRGF0YS5sZW5ndGgoKSwgW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKGJvb2wgc3VjY2VzcykgeworICAg
ICAgICAgICAgc2VuZEZyYW1lKGZyYW1lLT5vcENvZGUsIGZyYW1lLT5zdHJpbmdEYXRhLmNoYXJh
Y3RlcnM4KCksIGZyYW1lLT5zdHJpbmdEYXRhLmxlbmd0aCgpLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpXSAoYm9vbCBzdWNjZXNzKSB7CiAgICAgICAgICAgICAgICAgaWYg
KCFzdWNjZXNzKQogICAgICAgICAgICAgICAgICAgICBmYWlsKCJGYWlsZWQgdG8gc2VuZCBXZWJT
b2NrZXQgZnJhbWUuIik7CiAgICAgICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKaW5kZXggYmUy
NDQxMjU2MDdiMWJjYzMyMjkzNDc0ZDU0NDg2MmJiNTZhYjZlNC4uZWJmN2VlNGE0NzQyMjk1OGFm
MGU3NDQxZGIxYTc1MTM4ZjZlNzhkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKQEAgLTEwMiwxMSArMTAy
LDExIEBAIHN0YXRpYyBTdHJpbmcgZ2VuZXJhdGVTZWNXZWJTb2NrZXRLZXkoKQogCiBTdHJpbmcg
V2ViU29ja2V0SGFuZHNoYWtlOjpnZXRFeHBlY3RlZFdlYlNvY2tldEFjY2VwdChjb25zdCBTdHJp
bmcmIHNlY1dlYlNvY2tldEtleSkKIHsKLSAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qgd2Vi
U29ja2V0S2V5R1VJRCA9ICIyNThFQUZBNS1FOTE0LTQ3REEtOTVDQS1DNUFCMERDODVCMTEiOwor
ICAgIGNvbnN0ZXhwciB1aW50OF90IHdlYlNvY2tldEtleUdVSURbXSA9ICIyNThFQUZBNS1FOTE0
LTQ3REEtOTVDQS1DNUFCMERDODVCMTEiOwogICAgIFNIQTEgc2hhMTsKICAgICBDU3RyaW5nIGtl
eURhdGEgPSBzZWNXZWJTb2NrZXRLZXkuYXNjaWkoKTsKLSAgICBzaGExLmFkZEJ5dGVzKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGtleURhdGEuZGF0YSgpKSwga2V5RGF0YS5sZW5n
dGgoKSk7Ci0gICAgc2hhMS5hZGRCeXRlcyhyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
Pih3ZWJTb2NrZXRLZXlHVUlEKSwgc3RybGVuKHdlYlNvY2tldEtleUdVSUQpKTsKKyAgICBzaGEx
LmFkZEJ5dGVzKGtleURhdGEuY2hhcmFjdGVyczgoKSwga2V5RGF0YS5sZW5ndGgoKSk7CisgICAg
c2hhMS5hZGRCeXRlcyh3ZWJTb2NrZXRLZXlHVUlELCBzdGQ6OnNpemUod2ViU29ja2V0S2V5R1VJ
RCkpOwogICAgIFNIQTE6OkRpZ2VzdCBoYXNoOwogICAgIHNoYTEuY29tcHV0ZUhhc2goaGFzaCk7
CiAgICAgcmV0dXJuIGJhc2U2NEVuY29kZVRvU3RyaW5nKGhhc2guZGF0YSgpLCBTSEExOjpoYXNo
U2l6ZSk7CkBAIC0zMjgsOCArMzI4LDggQEAgVVJMIFdlYlNvY2tldEhhbmRzaGFrZTo6aHR0cFVS
TEZvckF1dGhlbnRpY2F0aW9uQW5kQ29va2llcygpIGNvbnN0CiAvLyAiVGhlIEhUVFAgdmVyc2lv
biBNVVNUIGJlIGF0IGxlYXN0IDEuMS4iCiBzdGF0aWMgaW5saW5lIGJvb2wgaGVhZGVySGFzVmFs
aWRIVFRQVmVyc2lvbihTdHJpbmdWaWV3IGh0dHBTdGF0dXNMaW5lKQogewotICAgIGNvbnN0IGNo
YXIqIGh0dHBWZXJzaW9uU3RhdGljUHJlYW1ibGVMaXRlcmFsID0gIkhUVFAvIjsKLSAgICBTdHJp
bmdWaWV3IGh0dHBWZXJzaW9uU3RhdGljUHJlYW1ibGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBM
Q2hhcio+KGh0dHBWZXJzaW9uU3RhdGljUHJlYW1ibGVMaXRlcmFsKSwgc3RybGVuKGh0dHBWZXJz
aW9uU3RhdGljUHJlYW1ibGVMaXRlcmFsKSk7CisgICAgY29uc3RleHByIHVpbnQ4X3QgaHR0cFZl
cnNpb25TdGF0aWNQcmVhbWJsZUxpdGVyYWxbXSA9ICJIVFRQLyI7CisgICAgU3RyaW5nVmlldyBo
dHRwVmVyc2lvblN0YXRpY1ByZWFtYmxlKGh0dHBWZXJzaW9uU3RhdGljUHJlYW1ibGVMaXRlcmFs
LCBzdGQ6OnNpemUoaHR0cFZlcnNpb25TdGF0aWNQcmVhbWJsZUxpdGVyYWwpKTsKICAgICBpZiAo
IWh0dHBTdGF0dXNMaW5lLnN0YXJ0c1dpdGgoaHR0cFZlcnNpb25TdGF0aWNQcmVhbWJsZSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKaW5kZXggOWQ5ZTUyZGFlYzBjMDRl
ZDIxNjFlYjgyNTZhZmE2Nzc1NTE1ZTI0OC4uYzQ1MmM4M2ZiZDVjZTg5NWJkZDAzMWFjZjE0Njhm
Nzg2NTA2MjJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
QnVmZmVyU291cmNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCkBAIC01MiwxMiArNTIsMTIgQEAgcHVibGljOgog
ICAgICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICAgICAgaWYgKCFtX2NvbnRh
aW5zT25seUFTQ0lJKSB7Ci0gICAgICAgICAgICBtX2NvbnRhaW5zT25seUFTQ0lJID0gY2hhcmFj
dGVyc0FyZUFsbEFTQ0lJKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihtX3NjcmlwdEJ1
ZmZlci5idWZmZXIoKS0+ZGF0YSgpKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7
CisgICAgICAgICAgICBtX2NvbnRhaW5zT25seUFTQ0lJID0gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJ
KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigp
LT5zaXplKCkpOwogICAgICAgICAgICAgaWYgKCptX2NvbnRhaW5zT25seUFTQ0lJKQotICAgICAg
ICAgICAgICAgIG1fc2NyaXB0SGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNr
VG9wOEJpdHMocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KG1fc2NyaXB0QnVmZmVyLmJ1
ZmZlcigpLT5kYXRhKCkpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKKyAgICAg
ICAgICAgICAgICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFz
a1RvcDhCaXRzKG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVy
LmJ1ZmZlcigpLT5zaXplKCkpOwogICAgICAgICB9CiAgICAgICAgIGlmICgqbV9jb250YWluc09u
bHlBU0NJSSkKLSAgICAgICAgICAgIHJldHVybiB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPihtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpIH07CisgICAgICAgICAgICByZXR1
cm4geyBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4obV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSkgfTsKIAogICAgICAgICBpZiAoIW1f
Y2FjaGVkU2NyaXB0U3RyaW5nKSB7CiAgICAgICAgICAgICBtX2NhY2hlZFNjcmlwdFN0cmluZyA9
IG1fc2NyaXB0QnVmZmVyLnRvU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA2YzY0YTA0NGY1NjBmZjQy
OTA4YzkwY2Y0YzdjMjQ2YWQ2N2FjODhmLi4wYjdmZGE0ZDhkNjBlOTkxNTNhNDRmMTE0YWVmMTA0
YWFlZTdkZmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTIzNDAsNyArMjM0MCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIGlmIChpczhCaXQpIHsKICAgICAgICAgICAgIGlmICgoZW5kIC0gcHRyKSA8IHN0YXRpY19j
YXN0PGludD4obGVuZ3RoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
ICAgICBzdHIgPSBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KHB0ciksIGxl
bmd0aCk7CisgICAgICAgICAgICBzdHIgPSBTdHJpbmcgeyBwdHIsIGxlbmd0aCB9OwogICAgICAg
ICAgICAgcHRyICs9IGxlbmd0aDsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9TZXJpYWxpemVk
TkZBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1NlcmlhbGl6ZWRORkEu
Y3BwCmluZGV4IDBiMzMzODlhNzY5MjUwMGYyNDRmZWY0OGI3MjE3MjVjM2Y3ZmExM2UuLjA0YzZk
YTVhODQ4ZDA4OTFmMzNmNGY4MzlkYTk1MmI4Yzc2NzlhMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1NlcmlhbGl6ZWRORkEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1NlcmlhbGl6ZWRORkEuY3BwCkBAIC0xMDcsNyArMTA3
LDcgQEAgU2VyaWFsaXplZE5GQTo6U2VyaWFsaXplZE5GQShGaWxlU3lzdGVtOjpNYXBwZWRGaWxl
RGF0YSYmIGZpbGUsIE1ldGFkYXRhJiYgbWV0YWQKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBjb25z
dCBUKiBTZXJpYWxpemVkTkZBOjpwb2ludGVyQXRPZmZzZXRJbkZpbGUoc2l6ZV90IG9mZnNldCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4ocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obV9maWxlLmRhdGEoKSkgKyBvZmZzZXQpOworICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IFQqPihzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
Kj4obV9maWxlLmRhdGEoKSkgKyBvZmZzZXQpOwogfQogCiBhdXRvIFNlcmlhbGl6ZWRORkE6Om5v
ZGVzKCkgY29uc3QgLT4gY29uc3QgUmFuZ2U8SW1tdXRhYmxlTkZBTm9kZT4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNw
cAppbmRleCBmZGFiY2QzZTdiODkyZTUwMWQ4Nzk0MzJhYzQ2YzNkNzEzZjhlYjAwLi4wZWUwN2Ri
ZTZhMjFlOGIyMGViYmU3YjVkYmIxZmYxNDJhZTM5ZGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0x
NjAwLDEwICsxNjAwLDEwIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IE5vZGU6OnNldFRleHRDb250ZW50
KGNvbnN0IFN0cmluZyYgdGV4dCkKICAgICByZXR1cm4geyB9OwogfQogCi1zdGF0aWMgU0hBMTo6
RGlnZXN0IGhhc2hQb2ludGVyKHZvaWQqIHBvaW50ZXIpCitzdGF0aWMgU0hBMTo6RGlnZXN0IGhh
c2hQb2ludGVyKGNvbnN0IHZvaWQqIHBvaW50ZXIpCiB7CiAgICAgU0hBMSBzaGExOwotICAgIHNo
YTEuYWRkQnl0ZXMocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oJnBvaW50ZXIpLCBz
aXplb2YocG9pbnRlcikpOworICAgIHNoYTEuYWRkQnl0ZXMoc3RhdGljX2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KHBvaW50ZXIpLCBzaXplb2YocG9pbnRlcikpOwogICAgIFNIQTE6OkRpZ2VzdCBkaWdl
c3Q7CiAgICAgc2hhMS5jb21wdXRlSGFzaChkaWdlc3QpOwogICAgIHJldHVybiBkaWdlc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEVuY29kZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL1RleHRFbmNvZGVyLmNwcAppbmRleCBkNmQxNDQzZDRmZjk4NTM3MWEwYjhkZmQ1
NWJmZWM5NGI1YjNmYzU1Li4wYWI5ZjE0N2YwOWVhMWUzNjhmOTViZTM3YjljZGYxMmRiYzcwNzgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEVuY29kZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UZXh0RW5jb2Rlci5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgUmVmUHRy
PFVpbnQ4QXJyYXk+IFRleHRFbmNvZGVyOjplbmNvZGUoU3RyaW5nJiYgaW5wdXQpIGNvbnN0CiB7
CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgbmVlZCB0byBhbGxvY2F0ZSBhIENTdHJpbmcg
dG8gZW5jb2RlIGludG8gYSBVaW50OEFycmF5LgogICAgIENTdHJpbmcgdXRmOCA9IGlucHV0LnV0
ZjgoKTsKLSAgICByZXR1cm4gVWludDhBcnJheTo6dHJ5Q3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KHV0ZjguZGF0YSgpKSwgdXRmOC5sZW5ndGgoKSk7CisgICAgcmV0dXJu
IFVpbnQ4QXJyYXk6OnRyeUNyZWF0ZSh1dGY4LmNoYXJhY3RlcnM4KCksIHV0ZjgubGVuZ3RoKCkp
OwogfQogCiBhdXRvIFRleHRFbmNvZGVyOjplbmNvZGVJbnRvKFN0cmluZyYmIGlucHV0LCBSZWY8
VWludDhBcnJheT4mJiBhcnJheSkgLT4gRW5jb2RlSW50b1Jlc3VsdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyU3RyZWFtRW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vVGV4dEVuY29kZXJTdHJlYW1FbmNvZGVyLmNwcAppbmRleCBjZTEwODY3N2I5NjY1
ZDc1NjgxMmVhZGJhMjNmNWIyMzA5YjU0NmZmLi5hMTA0ZmRmMTRjYzIwZDJlMTg0OTRhNGEyM2Q1
ZjNhNDRkM2ViYmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEVuY29kZXJT
dHJlYW1FbmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEVuY29kZXJTdHJl
YW1FbmNvZGVyLmNwcApAQCAtNzcsOCArNzcsOCBAQCBSZWZQdHI8VWludDhBcnJheT4gVGV4dEVu
Y29kZXJTdHJlYW1FbmNvZGVyOjpmbHVzaCgpCiAgICAgaWYgKCFtX3BlbmRpbmdIaWdoU3Vycm9n
YXRlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gYnl0ZVNlcXVlbmNlID0g
Ilx4RUZceEJGXHhCRCI7Ci0gICAgcmV0dXJuIFVpbnQ4QXJyYXk6OnRyeUNyZWF0ZShyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihieXRlU2VxdWVuY2UpLCAzKTsKKyAgICBjb25zdGV4
cHIgdWludDhfdCBieXRlU2VxdWVuY2VbXSA9IHsgMHhFRiwgMHhCRiwgMHhCRCB9OworICAgIHJl
dHVybiBVaW50OEFycmF5Ojp0cnlDcmVhdGUoYnl0ZVNlcXVlbmNlLCBzdGQ6OnNpemUoYnl0ZVNl
cXVlbmNlKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29j
b2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggYTRlNTMyMzE5OTMzZjBhODYxMmQyYzIy
NTE4Mjk4ZDU5ZDRlOTZiMi4uNzgwOGFmOWEzNWRkOGExZTFhN2FjMDQ3MTQ2ZGRlNjEzYTAzYmRl
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVh
ZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50
UmVhZGVyQ29jb2EubW0KQEAgLTQ4Niw3ICs0ODYsNyBAQCBzdGF0aWMgU3RyaW5nIHNhbml0aXpl
TWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZGVzdGluYXRpb25Eb2N1
bQogICAgICAgICBDU3RyaW5nIHV0ZjggPSBzdWJmcmFtZU1hcmt1cC51dGY4KCk7CiAgICAgICAg
IFZlY3Rvcjx1aW50OF90PiBibG9iQnVmZmVyOwogICAgICAgICBibG9iQnVmZmVyLnJlc2VydmVD
YXBhY2l0eSh1dGY4Lmxlbmd0aCgpKTsKLSAgICAgICAgYmxvYkJ1ZmZlci5hcHBlbmQocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odXRmOC5kYXRhKCkpLCB1dGY4Lmxlbmd0aCgpKTsK
KyAgICAgICAgYmxvYkJ1ZmZlci5hcHBlbmQodXRmOC5jaGFyYWN0ZXJzOCgpLCB1dGY4Lmxlbmd0
aCgpKTsKICAgICAgICAgYXV0byBibG9iID0gQmxvYjo6Y3JlYXRlKCZkZXN0aW5hdGlvbkRvY3Vt
ZW50LCBXVEZNb3ZlKGJsb2JCdWZmZXIpLCB0eXBlKTsKIAogICAgICAgICBTdHJpbmcgc3ViZnJh
bWVCbG9iVVJMID0gRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZGVzdGluYXRpb25Eb2N1bWVudCwg
YmxvYik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDZkN2M5YzhiMGQ4MzRiOWJlM2Q4NDU0YjIyMTNh
ZTBkYTE0YTY2OGIuLjAyNmNlYmIyYjI3OGIzODc1MDJlMzAyNjk0ODQwODY5NGZiZWI3ODAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UuY3BwCkBAIC00OTYyLDcgKzQ5NjIsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OnRleEltYWdlQXJyYXlCdWZmZXJWaWV3SGVscGVyKFRleEltYWdlRnVuY3Rp
b25JRAogICAgICAgICBzb3VyY2VUeXBlID0gVGV4SW1hZ2VEaW1lbnNpb246OlRleDNEOwogICAg
IGlmICghdmFsaWRhdGVUZXhGdW5jRGF0YShmdW5jdGlvbk5hbWUsIHNvdXJjZVR5cGUsIHdpZHRo
LCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIHBpeGVscy5nZXQoKSwgbnVsbERpc3Bvc2l0
aW9uLCBzcmNPZmZzZXQpKQogICAgICAgICByZXR1cm47Ci0gICAgdWludDhfdCogZGF0YSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHBpeGVscyA/IHBpeGVscy0+YmFzZUFkZHJlc3MoKSA6
IG51bGxwdHIpOworICAgIGF1dG8gZGF0YSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihwaXhlbHMg
PyBwaXhlbHMtPmJhc2VBZGRyZXNzKCkgOiBudWxscHRyKTsKICAgICBpZiAoc3JjT2Zmc2V0KSB7
CiAgICAgICAgIEFTU0VSVChwaXhlbHMpOwogICAgICAgICAvLyBObyBuZWVkIHRvIGNoZWNrIG92
ZXJmbG93IGJlY2F1c2UgdmFsaWRhdGVUZXhGdW5jRGF0YSgpIGFscmVhZHkgZGlkLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAppbmRleCAxZjM5NGJhOTdj
OGZmMmFlNTQyY2U2MjEyZWI1MzYwYWNjNTM2NDEzLi4wZTlkZTUyZGUxMGU3NTM2MGI1NTA5YTk1
MDUyZGRmNzY5ODU0ZDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9N
UGF0Y2hTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hT
dXBwb3J0LmNwcApAQCAtMzk3LDcgKzM5Nyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTVBhdGNo
U3VwcG9ydDo6aW5uZXJQYXRjaENoaWxkcmVuKENvbnRhaW5lck5vZGUmIHBhcmVudE5vZGUsCiBz
dGF0aWMgdm9pZCBhZGRTdHJpbmdUb1NIQTEoU0hBMSYgc2hhMSwgY29uc3QgU3RyaW5nJiBzdHJp
bmcpCiB7CiAgICAgQ1N0cmluZyBjU3RyaW5nID0gc3RyaW5nLnV0ZjgoKTsKLSAgICBzaGExLmFk
ZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGNTdHJpbmcuZGF0YSgpKSwg
Y1N0cmluZy5sZW5ndGgoKSk7CisgICAgc2hhMS5hZGRCeXRlcyhjU3RyaW5nLmNoYXJhY3RlcnM4
KCksIGNTdHJpbmcubGVuZ3RoKCkpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8RE9NUGF0Y2hTdXBw
b3J0OjpEaWdlc3Q+IERPTVBhdGNoU3VwcG9ydDo6Y3JlYXRlRGlnZXN0KE5vZGUmIG5vZGUsIFVu
dXNlZE5vZGVzTWFwKiB1bnVzZWROb2Rlc01hcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9U
ZXh0UmVzb3VyY2VEZWNvZGVyLmNwcAppbmRleCAyMmIyYmQ3NzFjNGZkMzRjNWFjYjRjODYxMDZm
N2ZhOTI5NjhiZWU4Li40NzcwMmE1NzRjYzhiZjQyYWY5NjM1NjE1MGI2MWI5NjdjYWFmYWEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwCkBAIC0z
MzMsNyArMzMzLDcgQEAgU3RyaW5nIFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRGOChj
b25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW4KICAgICBhdXRvIGRlY29kZXIg
PSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvcGxhaW4iLCAiVVRGLTgiKTsKICAg
ICBpZiAoc2hvdWxkUHJlcGVuZEJPTShkYXRhLCBsZW5ndGgpKQogICAgICAgICBkZWNvZGVyLT5k
ZWNvZGUoIlx4ZWZceGJiXHhiZiIsIDMpOwotICAgIHJldHVybiBkZWNvZGVyLT5kZWNvZGVBbmRG
bHVzaChyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgbGVuZ3RoKTsKKyAgICBy
ZXR1cm4gZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YSwgbGVuZ3RoKTsKIH0KIAogdm9pZCBU
ZXh0UmVzb3VyY2VEZWNvZGVyOjpzZXRFbmNvZGluZyhjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29k
aW5nLCBFbmNvZGluZ1NvdXJjZSBzb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTY3JpcHQuY3BwCmluZGV4IDE3NDZhMzg5OTUyZThhNDdjZDdlMDQ3Yjk5YWI0MjM1
ZjMyZmViYTAuLmRjMTAxY2JlMDZkOWIzZjAyOGI3YWE4MTE1N2I5NDg3MTkyZWE2ZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC02Miw3ICs2
Miw3IEBAIFN0cmluZ1ZpZXcgQ2FjaGVkU2NyaXB0OjpzY3JpcHQoKQogICAgIGlmIChtX2RlY29k
aW5nU3RhdGUgPT0gTmV2ZXJEZWNvZGVkCiAgICAgICAgICYmIFRleHRFbmNvZGluZyhlbmNvZGlu
ZygpKS5pc0J5dGVCYXNlZEVuY29kaW5nKCkKICAgICAgICAgJiYgbV9kYXRhLT5zaXplKCkKLSAg
ICAgICAgJiYgY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPihtX2RhdGEtPmRhdGEoKSksIG1fZGF0YS0+c2l6ZSgpKSkgeworICAgICAgICAmJiBjaGFy
YWN0ZXJzQXJlQWxsQVNDSUkobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSkgewogCiAg
ICAgICAgIG1fZGVjb2RpbmdTdGF0ZSA9IERhdGFBbmREZWNvZGVkU3RyaW5nSGF2ZVNhbWVCeXRl
czsKIApAQCAtNzAsMTEgKzcwLDExIEBAIFN0cmluZ1ZpZXcgQ2FjaGVkU2NyaXB0OjpzY3JpcHQo
KQogICAgICAgICBzZXREZWNvZGVkU2l6ZSgwKTsKICAgICAgICAgbV9kZWNvZGVkRGF0YURlbGV0
aW9uVGltZXIuc3RvcCgpOwogCi0gICAgICAgIG1fc2NyaXB0SGFzaCA9IFN0cmluZ0hhc2hlcjo6
Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+
KG1fZGF0YS0+ZGF0YSgpKSwgbV9kYXRhLT5zaXplKCkpOworICAgICAgICBtX3NjcmlwdEhhc2gg
PSBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKG1fZGF0YS0+ZGF0YSgp
LCBtX2RhdGEtPnNpemUoKSk7CiAgICAgfQogCiAgICAgaWYgKG1fZGVjb2RpbmdTdGF0ZSA9PSBE
YXRhQW5kRGVjb2RlZFN0cmluZ0hhdmVTYW1lQnl0ZXMpCi0gICAgICAgIHJldHVybiB7IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihtX2RhdGEtPmRhdGEoKSksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihtX2RhdGEtPnNpemUoKSkgfTsKKyAgICAgICAgcmV0dXJuIHsgbV9kYXRhLT5kYXRh
KCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2RhdGEtPnNpemUoKSkgfTsKIAogICAgIGlmICgh
bV9zY3JpcHQpIHsKICAgICAgICAgbV9zY3JpcHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNo
KG1fZGF0YS0+ZGF0YSgpLCBlbmNvZGVkU2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbQppbmRleCBlNTE5YmU3
YTg0YjAxNDU0YjQ2M2Y2ZGMzNTg0MzcwMDcyOGZjOGI2Li4yOWRmOGM2YjJhMDcwOTVhZWQ3OWY1
ZWJmM2I0NTVlM2NiOGM5YmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29h
L1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9j
b2NvYS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tCkBAIC0yNjksNyArMjY5LDcgQEAgc3Rh
dGljIHZvaWQgc2hvd1RleHQoQ0dDb250ZXh0UmVmIGNvbnRleHQsIGZsb2F0IHgsIGZsb2F0IHks
IENHQ29sb3JSZWYgY29sb3IsIGMKICAgICBDRlR5cGVSZWYgdmFsdWVzW10gPSB7IGZvbnQuZ2V0
KCksIGtDRkJvb2xlYW5UcnVlIH07CiAgICAgYXV0byBhdHRyaWJ1dGVzID0gYWRvcHRDRihDRkRp
Y3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga2V5cywgdmFsdWVzLCBXVEZfQVJS
QVlfTEVOR1RIKGtleXMpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBl
RGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAgICAgQ1N0cmluZyBjc3RyID0gdGV4dC5hc2Np
aSgpOwotICAgIGF1dG8gc3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhCeXRlc05v
Q29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4o
Y3N0ci5kYXRhKCkpLCBjc3RyLmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ0FTQ0lJLCBmYWxz
ZSwga0NGQWxsb2NhdG9yTnVsbCkpOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHRDRihDRlN0cmlu
Z0NyZWF0ZVdpdGhCeXRlc05vQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjc3RyLmNoYXJhY3Rl
cnM4KCksIGNzdHIubGVuZ3RoKCksIGtDRlN0cmluZ0VuY29kaW5nQVNDSUksIGZhbHNlLCBrQ0ZB
bGxvY2F0b3JOdWxsKSk7CiAgICAgYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHRDRihDRkF0
dHJpYnV0ZWRTdHJpbmdDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RyaW5nLmdldCgpLCBh
dHRyaWJ1dGVzLmdldCgpKSk7CiAgICAgYXV0byBsaW5lID0gYWRvcHRDRihDVExpbmVDcmVhdGVX
aXRoQXR0cmlidXRlZFN0cmluZyhhdHRyaWJ1dGVkU3RyaW5nLmdldCgpKSk7CiAgICAgQ0dDb250
ZXh0U2V0VGV4dFBvc2l0aW9uKGNvbnRleHQsIHgsIHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCmluZGV4IGExMTBkMTM5MzBlODYxMTMwN2RkMDU1
ZmYyYTQ3MDBjZjRlOWM5ZTMuLjg5NWViZTA1MWYxNTJhN2E4M2E0NWM3YjkwZGRjMGMyNzBhNDll
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNG
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAK
QEAgLTQ3LDcgKzQ3LDcgQEAgUmV0YWluUHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVh
dGVDRkRhdGEoKSBjb25zdAogICAgICAgICBpZiAoYXV0byBkYXRhID0gV1RGOjpnZXRfaWY8UmV0
YWluUHRyPENGRGF0YVJlZj4+KG1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVEYXRh
KSkKICAgICAgICAgICAgIHJldHVybiAqZGF0YTsKICAgICB9Ci0gICAgcmV0dXJuIGFkb3B0Q0Yo
Q0ZEYXRhQ3JlYXRlKG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihkYXRh
KCkpLCBzaXplKCkpKTsKKyAgICByZXR1cm4gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0ciwg
ZGF0YSgpLCBzaXplKCkpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAppbmRleCAyMWNjMWVi
ZTRhOTAxYTEzYzc0NDAzZGMwMWNmMmZjODE4MTMwMTJkLi4wYzMxOTgxN2NlNzY1NjExYWVkMmNm
NGRiNDk2Mzc2NDQ0ZWJkZDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
ZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgdm9p
ZCBLZXllZEVuY29kZXJHZW5lcmljOjplbmNvZGVTdHJpbmcoY29uc3QgU3RyaW5nJiBrZXkpCiB7
CiAgICAgYXV0byB1dGY4ID0ga2V5LnV0ZjgoKTsKICAgICBtX2VuY29kZXIgPDwgdXRmOC5sZW5n
dGgoKTsKLSAgICBtX2VuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KHV0ZjguZGF0YSgpKSwgdXRmOC5sZW5ndGgoKSk7CisgICAgbV9l
bmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YSh1dGY4LmNoYXJhY3RlcnM4KCksIHV0ZjgubGVu
Z3RoKCkpOwogfQogCiB2b2lkIEtleWVkRW5jb2RlckdlbmVyaWM6OmVuY29kZUJ5dGVzKGNvbnN0
IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IHNpemUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5j
cHAKaW5kZXggN2VlNGE3NjkwZTk1ZTI3NmFkYmI5NDg4YWI5MTU2ZmRlNzdjOWJiMS4uYTdhOTM4
MGRmMjcxZTVhNmRlOTE0ODQ1MWQzYjgzMmZkZDM5NTU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcApAQCAtNzU3
LDcgKzc1Nyw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0w6OnBhY2tJbWFnZURhdGEoSW1hZ2Uq
IGltYWdlLCBjb25zdCB2b2lkKiBwaXhlbHMsIEdDR0xlbnVtCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBkYXRhLnJlc2l6ZShwYWNrZWRTaXplKTsKIAotICAgIGlmICghcGFja1BpeGVscyhy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMpLCBzb3VyY2VGb3JtYXQsIHNv
dXJjZUltYWdlV2lkdGgsIHNvdXJjZUltYWdlSGVpZ2h0LCBzb3VyY2VJbWFnZVN1YlJlY3Rhbmds
ZSwgZGVwdGgsIHNvdXJjZVVucGFja0FsaWdubWVudCwgdW5wYWNrSW1hZ2VIZWlnaHQsIGZvcm1h
dCwgdHlwZSwgYWxwaGFPcCwgZGF0YS5kYXRhKCksIGZsaXBZKSkKKyAgICBpZiAoIXBhY2tQaXhl
bHMoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBpeGVscyksIHNvdXJjZUZvcm1hdCwgc291
cmNlSW1hZ2VXaWR0aCwgc291cmNlSW1hZ2VIZWlnaHQsIHNvdXJjZUltYWdlU3ViUmVjdGFuZ2xl
LCBkZXB0aCwgc291cmNlVW5wYWNrQWxpZ25tZW50LCB1bnBhY2tJbWFnZUhlaWdodCwgZm9ybWF0
LCB0eXBlLCBhbHBoYU9wLCBkYXRhLmRhdGEoKSwgZmxpcFkpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgaWYgKEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyID0gaW1hZ2UtPmltYWdlT2JzZXJ2
ZXIoKSkKICAgICAgICAgb2JzZXJ2ZXItPmRpZERyYXcoKmltYWdlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCmlu
ZGV4IGFkNWQzZTRmMzI3ZWVmNDg3ODU5Y2JjNDE1Yjc1NmQxMWUwNDVmYTcuLmQyODc3ZDY4MzBj
M2JjOGEwNDIxOGY2YmEzMzQ0ZjMwZmFiZjg2YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcApAQCAtMTE4LDcg
KzExOCw3IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEltYWdlQnVmZmVyQmFja2VuZDo6
Z2V0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGCiAgICAgQ29uc3RQaXhlbEJ1ZmZlckNv
bnZlcnNpb25WaWV3IHNvdXJjZSB7CiAgICAgICAgIHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6
UHJlbXVsdGlwbGllZCwgcGl4ZWxGb3JtYXQoKSwgY29sb3JTcGFjZSgpIH0sCiAgICAgICAgIGJ5
dGVzUGVyUm93KCksCi0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEpICsg
c291cmNlUmVjdENsaXBwZWQueSgpICogc291cmNlLmJ5dGVzUGVyUm93ICsgc291cmNlUmVjdENs
aXBwZWQueCgpICogNAorICAgICAgICBzdGF0aWNfY2FzdDx1aW50OF90Kj4oZGF0YSkgKyBzb3Vy
Y2VSZWN0Q2xpcHBlZC55KCkgKiBzb3VyY2UuYnl0ZXNQZXJSb3cgKyBzb3VyY2VSZWN0Q2xpcHBl
ZC54KCkgKiA0CiAgICAgfTsKICAgICAKICAgICBQaXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3IGRl
c3RpbmF0aW9uIHsKQEAgLTE1OSw3ICsxNTksNyBAQCB2b2lkIEltYWdlQnVmZmVyQmFja2VuZDo6
cHV0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXImIHNvdXJjZVBpeGVsQnVmZmVyLCBjbwog
ICAgIFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcgZGVzdGluYXRpb24gewogICAgICAgICB7IGRl
c3RpbmF0aW9uQWxwaGFGb3JtYXQsIHBpeGVsRm9ybWF0KCksIGNvbG9yU3BhY2UoKSB9LAogICAg
ICAgICBieXRlc1BlclJvdygpLAotICAgICAgICByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihk
YXRhKSArIGRlc3RpbmF0aW9uUmVjdC55KCkgKiBkZXN0aW5hdGlvbi5ieXRlc1BlclJvdyArIGRl
c3RpbmF0aW9uUmVjdC54KCkgKiA0CisgICAgICAgIHN0YXRpY19jYXN0PHVpbnQ4X3QqPihkYXRh
KSArIGRlc3RpbmF0aW9uUmVjdC55KCkgKiBkZXN0aW5hdGlvbi5ieXRlc1BlclJvdyArIGRlc3Rp
bmF0aW9uUmVjdC54KCkgKiA0CiAgICAgfTsKIAogICAgIGNvbnZlcnRJbWFnZVBpeGVscyhzb3Vy
Y2UsIGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvblJlY3Quc2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAppbmRleCAxZTYyY2NmN2E1YTM3
YTM5NWU1M2YyMzNlNjY5NWMyNzM0NDg2YzM3Li4zZmE5NjA5ZTFhZjVkNzFiYWJkNTRkY2M0MTJj
NjY5MjcyOTBhM2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1By
aXZhdGVBVkYuY3BwCkBAIC01MzEsNyArNTMxLDcgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZGOjpwcm9jZXNzTmF0aXZlU2FtcGxlcyhDRkFycmF5UmVmIG5hdGl2ZVNhbXBsZXMsIGMK
ICAgICAgICAgICAgIC8vIEEgV2ViVlRUIGhlYWRlciBpcyB0ZXJtaW5hdGVkIGJ5ICJPbmUgb3Ig
bW9yZSBXZWJWVFQgbGluZSB0ZXJtaW5hdG9ycyIgc28gYXBwZW5kIHR3byBsaW5lIGZlZWRzIHRv
IG1ha2Ugc3VyZSB0aGUgcGFyc2VyCiAgICAgICAgICAgICAvLyByZWNjb2duaXplZCB0aGlzIHN0
cmluZyBhcyBhIGZ1bGwgaGVhZGVyLgogICAgICAgICAgICAgU3RyaW5nQnVpbGRlciBoZWFkZXI7
Ci0gICAgICAgICAgICBoZWFkZXIuYXBwZW5kQ2hhcmFjdGVycyhyZWludGVycHJldF9jYXN0PGNv
bnN0IHVuc2lnbmVkIGNoYXIqPihDRkRhdGFHZXRCeXRlUHRyKHdlYnZ0dEhlYWRlckRhdGEpKSwg
bGVuZ3RoKTsKKyAgICAgICAgICAgIGhlYWRlci5hcHBlbmRDaGFyYWN0ZXJzKENGRGF0YUdldEJ5
dGVQdHIod2VidnR0SGVhZGVyRGF0YSksIGxlbmd0aCk7CiAgICAgICAgICAgICBoZWFkZXIuYXBw
ZW5kKCJcblxuIik7CiAKICAgICAgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJWVFQg
aGVhZGVyICIsICZoZWFkZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25DRi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lv
bkFWRm91bmRhdGlvbkNGLmNwcAppbmRleCA3MDljMDgwZDRmZmIwMjEzYzhkYjZmZGQ0YzhiZjc4
YTdlMTI1NjZjLi5kNWY3MjU2MjQwZTIxNGY4MDUwMDdmMWQ0YWQ0ODk3MGVlMjE2NDBkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2Yv
Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmNwcApA
QCAtNzQsMTEgKzc0LDExIEBAIFJlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZGb3VuZGF0
aW9uQ0Y6OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmLCBVCiAgICAgfQogCiAgICAg
YXV0byBjZXJ0aWZpY2F0ZURhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgY2VydGlmaWNhdGUtPmJ5dGVMZW5ndGgoKSkpOwotICAgIENGRGF0YUFw
cGVuZEJ5dGVzKGNlcnRpZmljYXRlRGF0YS5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBV
SW50OCo+KGNlcnRpZmljYXRlLT5iYXNlQWRkcmVzcygpKSwgY2VydGlmaWNhdGUtPmJ5dGVMZW5n
dGgoKSk7CisgICAgQ0ZEYXRhQXBwZW5kQnl0ZXMoY2VydGlmaWNhdGVEYXRhLmdldCgpLCBjZXJ0
aWZpY2F0ZS0+ZGF0YSgpLCBjZXJ0aWZpY2F0ZS0+Ynl0ZUxlbmd0aCgpKTsKIAogICAgIGF1dG8g
YXNzZXRTdHIgPSBrZXlJRC51dGY4KCk7CiAgICAgYXV0byBhc3NldElEID0gYWRvcHRDRihDRkRh
dGFDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGFzc2V0U3RyLmxlbmd0aCgpKSk7
Ci0gICAgQ0ZEYXRhQXBwZW5kQnl0ZXMoYXNzZXRJRC5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBVSW50OCo+KGFzc2V0U3RyLmRhdGEoKSksIGFzc2V0U3RyLmxlbmd0aCgpKTsKKyAgICBD
RkRhdGFBcHBlbmRCeXRlcyhhc3NldElELmdldCgpLCBhc3NldFN0ci5jaGFyYWN0ZXJzOCgpLCBh
c3NldFN0ci5sZW5ndGgoKSk7CiAKICAgICBDRkVycm9yUmVmIGNmRXJyb3IgPSBudWxscHRyOwog
ICAgIGF1dG8ga2V5UmVxdWVzdCA9IGFkb3B0Q0YoQVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVx
dWVzdENyZWF0ZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcChtX3JlcXVlc3Qu
Z2V0KCksIGNlcnRpZmljYXRlRGF0YS5nZXQoKSwgYXNzZXRJRC5nZXQoKSwgbnVsbHB0ciwgJmNm
RXJyb3IpKTsKQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIENETVNlc3Npb25BVkZvdW5kYXRpb25D
Rjo6cmVsZWFzZUtleXMoKQogYm9vbCBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Y6OnVwZGF0ZShV
aW50OEFycmF5KiBrZXksIFJlZlB0cjxVaW50OEFycmF5PiYgbmV4dE1lc3NhZ2UsIHVuc2lnbmVk
IHNob3J0JiBlcnJvckNvZGUsIHVpbnQzMl90JiBzeXN0ZW1Db2RlKQogewogICAgIGF1dG8ga2V5
RGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBr
ZXktPmJ5dGVMZW5ndGgoKSkpOwotICAgIENGRGF0YUFwcGVuZEJ5dGVzKGtleURhdGEuZ2V0KCks
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihrZXktPmJhc2VBZGRyZXNzKCkpLCBrZXkt
PmJ5dGVMZW5ndGgoKSk7CisgICAgQ0ZEYXRhQXBwZW5kQnl0ZXMoa2V5RGF0YS5nZXQoKSwga2V5
LT5kYXRhKCksIGtleS0+Ynl0ZUxlbmd0aCgpKTsKIAogICAgIEFWQ0ZBc3NldFJlc291cmNlTG9h
ZGluZ1JlcXVlc3RGaW5pc2hMb2FkaW5nV2l0aFJlc3BvbnNlKG1fcmVxdWVzdC5nZXQoKSwgbnVs
bHB0ciwga2V5RGF0YS5nZXQoKSwgbnVsbHB0cik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YuY3BwCmluZGV4IGI0NTlmNmYxOWJmNzU0
Y2U5ZTU1MjIyOTVjYjJlYWVlODE0YzZmMjcuLjNlZTYwMWRkMjcwNWIyMGIwMjBlZDdkYzk1N2Fk
ZTg2ZTg3NTA1ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRU
cmFja1ByaXZhdGVBVkNGLmNwcApAQCAtMjA0LDcgKzIwNCw3IEBAIGJvb2wgSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWQ0Y6OnJlYWROYXRpdmVTYW1wbGVCdWZmZXIoQ0ZBcnJheVJlZiBuYXRpdmVT
YW1wbGVzCiAgICAgfQogCiAgICAgbV9zYW1wbGVJbnB1dEJ1ZmZlci5ncm93KG1fc2FtcGxlSW5w
dXRCdWZmZXIuc2l6ZSgpICsgYnVmZmVyTGVuZ3RoKTsKLSAgICBDRkRhdGFHZXRCeXRlcyhzYW1w
bGVCdWZmZXItPmJ1ZmZlciwgQ0ZSYW5nZU1ha2UoMCwgYnVmZmVyTGVuZ3RoKSwgcmVpbnRlcnBy
ZXRfY2FzdDxVSW50OCo+KG1fc2FtcGxlSW5wdXRCdWZmZXIuZGF0YSgpKSArIG1fc2FtcGxlSW5w
dXRCdWZmZXIuc2l6ZSgpIC0gYnVmZmVyTGVuZ3RoKTsKKyAgICBDRkRhdGFHZXRCeXRlcyhzYW1w
bGVCdWZmZXItPmJ1ZmZlciwgQ0ZSYW5nZU1ha2UoMCwgYnVmZmVyTGVuZ3RoKSwgbV9zYW1wbGVJ
bnB1dEJ1ZmZlci5kYXRhKCkgKyBtX3NhbXBsZUlucHV0QnVmZmVyLnNpemUoKSAtIGJ1ZmZlckxl
bmd0aCk7CiAKICAgICBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG1fc2FtcGxlSW5wdXRC
dWZmZXIuZGF0YSgpLCBtX3NhbXBsZUlucHV0QnVmZmVyLnNpemUoKSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1CdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKaW5kZXggYzY4MTg3MDQyZDY3MDVmNzgy
NmI4NTI1YTI0NzY4OGQ1NmRlZDA1My4uZWU2YTVkMmVlZDZhM2Y5N2U3NDY4Y2FiOTZlOWVlMzRk
NmI4MzA2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAK
QEAgLTcwMiw3ICs3MDIsNyBAQCBJdGVtQnVmZmVySGFuZGxlIEl0ZW1CdWZmZXI6OmNyZWF0ZUl0
ZW1CdWZmZXIoc2l6ZV90IGNhcGFjaXR5KQogICAgIGNvbnN0ZXhwciBzaXplX3QgZGVmYXVsdEl0
ZW1CdWZmZXJDYXBhY2l0eSA9IDEgPDwgMTA7CiAKICAgICBhdXRvIG5ld0J1ZmZlckNhcGFjaXR5
ID0gc3RkOjptYXgoY2FwYWNpdHksIGRlZmF1bHRJdGVtQnVmZmVyQ2FwYWNpdHkpOwotICAgIGF1
dG8qIGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGZhc3RNYWxsb2MobmV3QnVm
ZmVyQ2FwYWNpdHkpKTsKKyAgICBhdXRvKiBidWZmZXIgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4o
ZmFzdE1hbGxvYyhuZXdCdWZmZXJDYXBhY2l0eSkpOwogICAgIG1fYWxsb2NhdGVkQnVmZmVycy5h
cHBlbmQoYnVmZmVyKTsKICAgICByZXR1cm4geyBJdGVtQnVmZmVySWRlbnRpZmllcjo6Z2VuZXJh
dGUoKSwgYnVmZmVyLCBuZXdCdWZmZXJDYXBhY2l0eSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlcmF0b3IuY3BwCmluZGV4IDBhZWYxMjhhYjNiNWI0YjViMDIwMTgwMzMyMmMw
NDQ5MzE2N2U1MjQuLmEwYzgyMTRkZDM2NTI2YTExNzI1YTJmOTY3YzQ3YTFkNjUwYTEwMjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5jcHAKQEAgLTc5LDcgKzc5LDcg
QEAgdm9pZCBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6OnVwZGF0ZUN1cnJlbnRJdGVtKCkKICAgICB9
CiAKICAgICBhdXRvIHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtID0gcGFkZGVkU2l6ZU9mVHlwZUFu
ZEl0ZW1JbkJ5dGVzKGl0ZW1UeXBlKTsKLSAgICBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtID0gcGFk
ZGVkU2l6ZU9mVHlwZUFuZEl0ZW0gPD0gc2l6ZU9mRml4ZWRCdWZmZXJGb3JDdXJyZW50SXRlbSA/
IG1fZml4ZWRCdWZmZXJGb3JDdXJyZW50SXRlbSA6IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+
KGZhc3RNYWxsb2MocGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW0pKTsKKyAgICBtX2N1cnJlbnRCdWZm
ZXJGb3JJdGVtID0gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW0gPD0gc2l6ZU9mRml4ZWRCdWZmZXJG
b3JDdXJyZW50SXRlbSA/IG1fZml4ZWRCdWZmZXJGb3JDdXJyZW50SXRlbSA6IHN0YXRpY19jYXN0
PHVpbnQ4X3QqPihmYXN0TWFsbG9jKHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtKSk7CiAgICAgaWYg
KGlzSW5saW5lSXRlbShpdGVtVHlwZSkpIHsKICAgICAgICAgaWYgKFVOTElLRUxZKHN0YXRpY19j
YXN0PHVpbnQ2NF90PihtX2N1cnJlbnRFbmRPZkJ1ZmZlciAtIG1fY3Vyc29yKSA8IHBhZGRlZFNp
emVPZlR5cGVBbmRJdGVtKSkgewogICAgICAgICAgICAgbV9pc1ZhbGlkID0gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1h
Z2VSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9H
SUZJbWFnZVJlYWRlci5oCmluZGV4IDQyNzY0NmMxZGIzMDA4NWViMzJjMDFkYTU3NDZkMmI5M2Yw
ZTRkMjQuLjQyMTQ2ZTAzMjkzMjM2OTk3ODllYjVlNDJhZjRjNzNkMzRhYjljYzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJl
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9H
SUZJbWFnZVJlYWRlci5oCkBAIC0yODUsOSArMjg1LDkgQEAgcHJpdmF0ZToKICAgICBib29sIHBh
cnNlKHNpemVfdCBkYXRhUG9zaXRpb24sIHNpemVfdCBsZW4sIGJvb2wgcGFyc2VTaXplT25seSk7
CiAgICAgdm9pZCBzZXRSZW1haW5pbmdCeXRlcyhzaXplX3QpOwogCi0gICAgY29uc3QgdW5zaWdu
ZWQgY2hhciogZGF0YShzaXplX3QgZGF0YVBvc2l0aW9uKSBjb25zdAorICAgIGNvbnN0IHVpbnQ4
X3QqIGRhdGEoc2l6ZV90IGRhdGFQb3NpdGlvbikgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihtX2RhdGEtPmRhdGEoKSkg
KyBkYXRhUG9zaXRpb247CisgICAgICAgIHJldHVybiBtX2RhdGEtPmRhdGEoKSArIGRhdGFQb3Np
dGlvbjsKICAgICB9CiAKICAgICB2b2lkIGFkZEZyYW1lSWZOZWNlc3NhcnkoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9yTWFjLm1tCmluZGV4IDhl
OTVjNTQ2OWExYTk2M2M2ZGNkYmRmMTM4ODJiMDczYjJmMDM3NTkuLjEwMGRhY2IwMDUxN2Q2ZWVl
NmI1ZGQ3YTAyNWNiMWIxMDRmNjBmMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5tbQpAQCAtMTg5LDcgKzE4OSw3IEBAIHN0YXRpYyBT
dHJpbmcgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemUs
IGNvbnN0IENTdHJpbmcmCiAKICAgICAvLyBMZW5ndGggbmVlZHMgdG8gYWNjb3VudCBmb3IgdGhl
IG51bGwgdGVybWluYXRvci4KICAgICBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2UucHVibGlj
S2V5QW5kQ2hhbGxlbmdlLmNoYWxsZW5nZS5MZW5ndGggPSBjaGFsbGVuZ2UubGVuZ3RoKCkgKyAx
OwotICAgIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZS5wdWJsaWNLZXlBbmRDaGFsbGVuZ2Uu
Y2hhbGxlbmdlLkRhdGEgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihjb25zdF9jYXN0PGNo
YXIqPihjaGFsbGVuZ2UuZGF0YSgpKSk7CisgICAgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdl
LnB1YmxpY0tleUFuZENoYWxsZW5nZS5jaGFsbGVuZ2UuRGF0YSA9IGNvbnN0X2Nhc3Q8dWludDhf
dCo+KGNoYWxsZW5nZS5jaGFyYWN0ZXJzOCgpKTsKIAogICAgIENTU01fREFUQSBlbmNvZGVkUHVi
bGljS2V5QW5kQ2hhbGxlbmdlIHsgMCwgbnVsbHB0ciB9OwogICAgIGlmIChTZWNBc24xRW5jb2Rl
SXRlbShjb2RlciwgJnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZS5wdWJsaWNLZXlBbmRDaGFs
bGVuZ2UsIHB1YmxpY0tleUFuZENoYWxsZW5nZVRlbXBsYXRlLCAmZW5jb2RlZFB1YmxpY0tleUFu
ZENoYWxsZW5nZSkgIT0gbm9FcnIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCmlu
ZGV4IGRmMjE3ZGJhZWNkNDYxYTlkOWJlMzhmNTViYzc5MzU1ZGIyYjJiMTcuLmY4ODM4MDI4MThh
OTdlY2NjMjg0YWZlMzdhNjNiOGIxODU3MTkwNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXIuY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgc3RhdGljIHZvaWQgYWRkU3RyaW5nVG9TSEEx
KFNIQTEmIHNoYTEsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIH0KIAogICAgIGF1dG8gdXRm
OCA9IHN0cmluZy51dGY4KCk7Ci0gICAgc2hhMS5hZGRCeXRlcyhyZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPih1dGY4LmRhdGEoKSksIHV0ZjgubGVuZ3RoKCkgKyAxKTsgLy8gSW5jbHVk
ZSB0ZXJtaW5hdGluZyBudWxsIGJ5dGUuCisgICAgc2hhMS5hZGRCeXRlcyh1dGY4LmNoYXJhY3Rl
cnM4KCksIHV0ZjgubGVuZ3RoKCkgKyAxKTsgLy8gSW5jbHVkZSB0ZXJtaW5hdGluZyBudWxsIGJ5
dGUuCiB9CiAKIFN0cmluZyBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpoYXNoU3RyaW5nV2l0
aFNhbHQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgU3RyaW5nJiBoYXNoU2FsdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmNwcAppbmRl
eCA3ZTNkMWI5MWYwNjM3NGU5ODRjZjUxZThjNzdjNGY3MGQ5MjFkZmE5Li5kMWExZjRmMjAzYWZh
ZmFiZWI3NmZjNjJlNGE1MzZlNWM4MTEyMmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwCkBAIC0yMTEsNyArMjExLDcgQEAg
dm9pZCBhZGRLZXlWYWx1ZVBhaXJBc0Zvcm1EYXRhKFZlY3RvcjxjaGFyPiYgYnVmZmVyLCBjb25z
dCBWZWN0b3I8dWludDhfdD4mIGtleSwKIAogdm9pZCBlbmNvZGVTdHJpbmdBc0Zvcm1EYXRhKFZl
Y3RvcjxjaGFyPiYgYnVmZmVyLCBjb25zdCBDU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgYXBwZW5k
Rm9ybVVSTEVuY29kZWQoYnVmZmVyLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihz
dHJpbmcuZGF0YSgpKSwgc3RyaW5nLmxlbmd0aCgpKTsKKyAgICBhcHBlbmRGb3JtVVJMRW5jb2Rl
ZChidWZmZXIsIHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVh
bUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVh
bUhhbmRsZS5jcHAKaW5kZXggNmRlMWEzZjhhMWY5YjYzZDFlNzFmYjNhYTdjZTQyNTM0MWE2NTFk
OS4uYzgyMjJiODljYjYwYzViOTE0YTAwYTU4Mjc1ZjA2ODQ4NTk0ZGNiMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlLmNw
cApAQCAtNjEsNyArNjEsNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6c2VuZEhhbmRzaGFr
ZShDU3RyaW5nJiYgaGFuZHNoYWtlLCBzdGQ6Om9wdGlvbmFsPENvb2tpZQogewogICAgIGlmICht
X3N0YXRlID09IENvbm5lY3RpbmcgfHwgbV9zdGF0ZSA9PSBDbG9zaW5nKQogICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UsIGZhbHNlKTsKLSAgICBwbGF0Zm9ybVNlbmRIYW5k
c2hha2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaGFuZHNoYWtlLmRhdGEoKSks
IGhhbmRzaGFrZS5sZW5ndGgoKSwgV1RGTW92ZShoZWFkZXJGaWVsZFByb3h5KSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOworICAgIHBsYXRmb3JtU2VuZEhhbmRzaGFrZShoYW5kc2hha2Uu
Y2hhcmFjdGVyczgoKSwgaGFuZHNoYWtlLmxlbmd0aCgpLCBXVEZNb3ZlKGhlYWRlckZpZWxkUHJv
eHkpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgU29ja2V0U3RyZWFt
SGFuZGxlOjpjbG9zZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCmluZGV4IGI3ZWY1Yjg3NTg0ZmZi
YjY2YWY3ZDlhMTEzZjQzMDZkOTE1YTE2OWIuLjM4NzUzY2RlYjZjMjczYjFjYjFjMjEzOTkxZjE0
MmRmZWUwOTE3YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCkBAIC0yMjgsNyArMjI4LDcgQEAg
dm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkKICAgICBTdHJp
bmcgcGFydGl0aW9uID0gY2FjaGVQYXJ0aXRpb24oKTsKICAgICBpZiAoIXBhcnRpdGlvbi5pc051
bGwoKSAmJiAhcGFydGl0aW9uLmlzRW1wdHkoKSkgewogICAgICAgICBDU3RyaW5nIHV0ZjhTdHJp
bmcgPSBwYXJ0aXRpb24udXRmOCgpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBh
cnRpdGlvblZhbHVlID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhCeXRlcygwLCByZWludGVy
cHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4odXRmOFN0cmluZy5kYXRhKCkpLCB1dGY4U3RyaW5nLmxl
bmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIGZhbHNlKSk7CisgICAgICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gcGFydGl0aW9uVmFsdWUgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0
aEJ5dGVzKDAsIHV0ZjhTdHJpbmcuY2hhcmFjdGVyczgoKSwgdXRmOFN0cmluZy5sZW5ndGgoKSwg
a0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBmYWxzZSkpOwogICAgICAgICBfQ0ZVUkxSZXF1ZXN0U2V0
UHJvdG9jb2xQcm9wZXJ0eShjZlJlcXVlc3QuZ2V0KCksIF9rQ0ZVUkxDYWNoZVBhcnRpdGlvbktl
eSwgcGFydGl0aW9uVmFsdWUuZ2V0KCkpOwogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5o
CmluZGV4IGJjYzYyMjg2NjBlMzg2OGVjN2MxYTZiNDdkZWUxZWQ3MWJmMDNkOWMuLmY3MGFjNGU3
NTlmYjI1YWExYjAwNjhlMTE1OTNlZDBlOTZkYmU0ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmgKQEAg
LTEzMSw3ICsxMzEsNyBAQCBpbmxpbmUgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBodHRwSGVhZGVy
VmFsdWVVc2luZ1N1aXRhYmxlRW5jb2RpbmcoSFRUUEhlYWRlck1hcAogICAgIGlmIChoZWFkZXIu
a2V5QXNIVFRQSGVhZGVyTmFtZSAmJiAqaGVhZGVyLmtleUFzSFRUUEhlYWRlck5hbWUgPT0gSFRU
UEhlYWRlck5hbWU6Okxhc3RFdmVudElEICYmICFoZWFkZXIudmFsdWUuaXNBbGxBU0NJSSgpKSB7
CiAgICAgICAgIGF1dG8gdXRmOFZhbHVlID0gaGVhZGVyLnZhbHVlLnV0ZjgoKTsKICAgICAgICAg
Ly8gQ29uc3RydWN0aW5nIGEgc3RyaW5nIHdpdGggdGhlIFVURi04IGJ5dGVzIGJ1dCBjbGFpbWlu
ZyB0aGF0IGl04oCZcyBMYXRpbi0xIGlzIHRoZSB3YXkgdG8gZ2V0IENGTmV0d29yayB0byBwdXQg
dGhvc2UgVVRGLTggYnl0ZXMgb24gdGhlIHdpcmUuCi0gICAgICAgIHJldHVybiBhZG9wdENGKENG
U3RyaW5nQ3JlYXRlV2l0aEJ5dGVzKG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUlu
dDgqPih1dGY4VmFsdWUuZGF0YSgpKSwgdXRmOFZhbHVlLmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNv
ZGluZ0lTT0xhdGluMSwgZmFsc2UpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZTdHJpbmdD
cmVhdGVXaXRoQnl0ZXMobnVsbHB0ciwgdXRmOFZhbHVlLmNoYXJhY3RlcnM4KCksIHV0ZjhWYWx1
ZS5sZW5ndGgoKSwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIGZhbHNlKSk7CiAgICAgfQog
ICAgIHJldHVybiBoZWFkZXIudmFsdWUuY3JlYXRlQ0ZTdHJpbmcoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1w
bENGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3Ry
ZWFtSGFuZGxlSW1wbENGTmV0LmNwcAppbmRleCBkMTM3OTQ5OGFhYjgxZWUyY2E3YWEwODliMWI1
MGY5OTVjMjgyOTQ3Li41NWI5ZjFlZDRhMGQzMjVhNmIxNmExMTQzODlmMzljN2RlZDM2Y2E2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVh
bUhhbmRsZUltcGxDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwCkBAIC03MjIsNyArNzIyLDcgQEAg
c3RkOjpvcHRpb25hbDxzaXplX3Q+IFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnBsYXRmb3JtU2Vu
ZEludGVybmFsKGNvbnN0IHVpbnQ4X3QKICAgICBpZiAoIUNGV3JpdGVTdHJlYW1DYW5BY2NlcHRC
eXRlcyhtX3dyaXRlU3RyZWFtLmdldCgpKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBDRklu
ZGV4IHJlc3VsdCA9IENGV3JpdGVTdHJlYW1Xcml0ZShtX3dyaXRlU3RyZWFtLmdldCgpLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oZGF0YSksIGxlbmd0aCk7CisgICAgQ0ZJbmRleCBy
ZXN1bHQgPSBDRldyaXRlU3RyZWFtV3JpdGUobV93cml0ZVN0cmVhbS5nZXQoKSwgZGF0YSwgbGVu
Z3RoKTsKICAgICBpZiAocmVzdWx0ID09IC0xKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bENhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxDYWNoZUVudHJ5LmNwcAppbmRleCAwNWI0ZTI5YmM5MzFjMTQzNDViNDc5NTk4YmFlZTY3ZWI0
YjY4YzJhLi5kMDliN2I1ZGNiMTg0MDU5NDdlYWVjM2JlZjRhMzBhNWFjNTI0NmZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVF
bnRyeS5jcHAKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIEN1cmxDYWNoZUVudHJ5OjpkaWRGaW5p
c2hMb2FkaW5nKCkKIHZvaWQgQ3VybENhY2hlRW50cnk6OmdlbmVyYXRlQmFzZUZpbGVuYW1lKGNv
bnN0IENTdHJpbmcmIHVybCkKIHsKICAgICBTSEExIHNoYTE7Ci0gICAgc2hhMS5hZGRCeXRlcyhy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih1cmwuZGF0YSgpKSwgdXJsLmxlbmd0aCgp
KTsKKyAgICBzaGExLmFkZEJ5dGVzKHVybC5jaGFyYWN0ZXJzOCgpLCB1cmwubGVuZ3RoKCkpOwog
CiAgICAgU0hBMTo6RGlnZXN0IHN1bTsKICAgICBzaGExLmNvbXB1dGVIYXNoKHN1bSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCmluZGV4IDZk
OGRjNzJlZGNiZDQyODg3ZTY3NzVhMTYwMjg1NDdhOTdjNjMxYjkuLjJkODBmM2IxYjc3NGE4NTNj
ZjIxMjc1NzBkZjE4ODA1MTJhMmQwMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCkBAIC0zMDQsNyArMzA0LDcgQEAgYXV0byBTUUxpdGVT
dGF0ZW1lbnQ6OmNvbHVtbkJsb2JWaWV3KGludCBjb2wpIC0+IEJsb2JWaWV3CiAgICAgaWYgKGJs
b2JTaXplIDw9IDApCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1cm4geyByZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihibG9iKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihibG9i
U2l6ZSkgfTsKKyAgICByZXR1cm4geyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYmxvYiks
IHN0YXRpY19jYXN0PHNpemVfdD4oYmxvYlNpemUpIH07CiB9CiAKIGJvb2wgU1FMaXRlU3RhdGVt
ZW50OjpoYXNTdGFydGVkU3RlcHBpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1G
YWN0b3J5LmNwcAppbmRleCA5OTJlNGMxM2E3ZWU4ZWU0N2U4NDkxZjdiOGUzMDQyMGVkM2VlMjFk
Li5iYzMyNDZiZjZiMmMyMDYzOGJmYjQyMjVjZjcwZDUxYThmYjMwZjAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApAQCAtMjEzLDcgKzIxMyw3IEBAIGJvb2wg
TW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IGNvbnN0IFNoYXJlZEJ1ZmZlCiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IE1vY2tDRE06OnNhbml0
aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKLSAgICBp
ZiAoIWNoYXJhY3RlcnNBcmVBbGxBU0NJSShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4o
cmVzcG9uc2UuZGF0YSgpKSwgcmVzcG9uc2Uuc2l6ZSgpKSkKKyAgICBpZiAoIWNoYXJhY3RlcnNB
cmVBbGxBU0NJSShyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VBcnJheSA9IFN0cmlu
ZyhyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkuc3BsaXQoJyAnKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBQYXJzZXIuY3BwIGIvU291cmNlL1dlYkRy
aXZlci9zb2NrZXQvSFRUUFBhcnNlci5jcHAKaW5kZXggN2E1YjIyOGQ1ZmY3MTQ2ZGE3YjExNzdj
YjE0Y2JhNGU0MzBiMzdmYS4uYzgyYWQ5NTdmNzEzYzNhZTc2OTRjZTg2M2U1NzU0NTAyYmMwMjc0
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRUUFBhcnNlci5jcHAKKysr
IGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRUUFBhcnNlci5jcHAKQEAgLTEzMCw3ICsxMzAs
NyBAQCBib29sIEhUVFBQYXJzZXI6OnJlYWRMaW5lKFN0cmluZyYgbGluZSkKICAgICBpZiAocG9z
aXRpb24gPT0gbm90Rm91bmQgfHwgcG9zaXRpb24gKyAxID09IGxlbmd0aCB8fCBtX2J1ZmZlcltw
b3NpdGlvbiArIDFdICE9IDB4MGEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGxpbmUg
PSBTdHJpbmc6OmZyb21VVEY4KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG1fYnVmZmVyLmRhdGEo
KSksIHBvc2l0aW9uKTsKKyAgICBsaW5lID0gU3RyaW5nOjpmcm9tVVRGOChtX2J1ZmZlci5kYXRh
KCksIHBvc2l0aW9uKTsKICAgICBpZiAobGluZS5pc051bGwoKSkKICAgICAgICAgTE9HX0VSUk9S
KCJDbGllbnQgZXJyb3I6IGludmFsaWQgZW5jb2RpbmcgaW4gSFRUUCBoZWFkZXIuIik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L1Nlc3Npb25Ib3N0U29ja2V0LmNwcCBi
L1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L1Nlc3Npb25Ib3N0U29ja2V0LmNwcAppbmRleCAwZjY1
NjY4ZmMyZmI4OWZkNGVhYTdkYzQxNDg3YmYxZDYxMjBjYWYwLi44MjRmOTAyOTA3YTk0YjhkYmE1
YjM4MGE1N2JhYzUwYmZmNWY2ZjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tl
dC9TZXNzaW9uSG9zdFNvY2tldC5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvU2Vz
c2lvbkhvc3RTb2NrZXQuY3BwCkBAIC01MCw3ICs1MCw3IEBAIHZvaWQgU2Vzc2lvbkhvc3Q6OnNl
bmRXZWJJbnNwZWN0b3JFdmVudChjb25zdCBTdHJpbmcmIGV2ZW50KQogICAgICAgICByZXR1cm47
CiAKICAgICBjb25zdCBDU3RyaW5nIG1lc3NhZ2UgPSBldmVudC51dGY4KCk7Ci0gICAgc2VuZCht
X2NsaWVudElELnZhbHVlKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1lc3Nh
Z2UuZGF0YSgpKSwgbWVzc2FnZS5sZW5ndGgoKSk7CisgICAgc2VuZChtX2NsaWVudElELnZhbHVl
KCksIG1lc3NhZ2UuY2hhcmFjdGVyczgoKSwgbWVzc2FnZS5sZW5ndGgoKSk7CiB9CiAKIHZvaWQg
U2Vzc2lvbkhvc3Q6OmNvbm5lY3RUb0Jyb3dzZXIoRnVuY3Rpb248dm9pZCAoc3RkOjpvcHRpb25h
bDxTdHJpbmc+IGVycm9yKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcApp
bmRleCA0ZjU4ZWQxYzU0MGVlYThhYmMyOTc2Y2M4MTVmNzg2ZjJkMDY2ODA5Li5iMDdlMzU2MWU5
YjdmYmQ4ODk0Yjg1MTczM2Y3NmI5NjYzNDc3NzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCkBAIC02
OTEsNyArNjkxLDcgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllcktl
eU5lZWRlZChVaW50OEFycmF5KiBtZXNzYWdlKQogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
CiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVySW5pdGlhbGl6YXRpb25E
YXRhRW5jb3VudGVyZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZlB0cjxBcnJheUJ1
ZmZlcj4mJiBpbml0RGF0YSkKIHsKLSAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9uLT5zZW5kKE1l
c3NhZ2VzOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OkluaXRpYWxpemF0aW9uRGF0YUVuY291
bnRlcmVkKGluaXREYXRhVHlwZSwgSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8
dWludDhfdCo+KGluaXREYXRhLT5kYXRhKCkpLCBpbml0RGF0YS0+Ynl0ZUxlbmd0aCgpKSksIG1f
aWQpOworICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6SW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGFU
eXBlLCBJUEM6OkRhdGFSZWZlcmVuY2Uoc3RhdGljX2Nhc3Q8dWludDhfdCo+KGluaXREYXRhLT5k
YXRhKCkpLCBpbml0RGF0YS0+Ynl0ZUxlbmd0aCgpKSksIG1faWQpOwogfQogCiB2b2lkIFJlbW90
ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyV2FpdGluZ0ZvcktleUNoYW5nZWQoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1By
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQ
cm94eS5jcHAKaW5kZXggOWVjNTVmNjE2ZjU4NDNiNmM4MDI3YmMxOWRhN2E2MDU4ZDRhYTYwNC4u
YjQxYTAyODFmODU4YTEyMmUwZmFhNmJiNzE5NGVlNTMwY2M5ZjFmMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuY3Bw
CkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBSZW1vdGVUZXh0VHJhY2tQcm94eTo6YWRkRGF0YUN1
ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGUKICAgICBpZiAoIW1f
Y29ubmVjdGlvblRvV2ViUHJvY2VzcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jb25uZWN0
aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpBZGREYXRhQ3VlKG1faWRlbnRpZmllciwgc3RhcnQsIGVuZCwgSVBDOjpE
YXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5n
dGgpKSwgbV9tZWRpYVBsYXllcklkZW50aWZpZXIpOworICAgIG1fY29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6QWRkRGF0YUN1ZShtX2lkZW50aWZpZXIsIHN0YXJ0LCBlbmQsIElQQzo6RGF0YVJlZmVyZW5j
ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCkpLCBtX21lZGlhUGxh
eWVySWRlbnRpZmllcik7CiB9CiAKICNpZiBFTkFCTEUoREFUQUNVRV9WQUxVRSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIu
Y3BwCmluZGV4IGFiYWE1YmJjNGQ4NDEwNGZhYTkzMmVjN2E4ZDQyNTc3ZGI4OWZmMmYuLjhjMTI1
NDlmMTQzMjg5ZmYxZjJkYmIzNjQ1ODdjMmY2OGVhY2E2YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcApAQCAt
MTA3LDcgKzEwNyw3IEBAIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6dmlkZW9TYW1wbGVBdmFp
bGFibGUoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiByZW1vCiB2b2lkIFJlbW90ZU1lZGlh
UmVjb3JkZXI6OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGF0YVJlZmVy
ZW5jZSYmLCBkb3VibGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fd3JpdGVyLT5m
ZXRjaERhdGEoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KGF1dG8mJiBkYXRhLCBhdXRvIHRpbWVDb2RlKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byogcG9p
bnRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEgPyBkYXRhLT5kYXRh
KCkgOiBudWxscHRyKTsKKyAgICAgICAgYXV0byogcG9pbnRlciA9IGRhdGEgPyBkYXRhLT5kYXRh
KCkgOiBudWxscHRyOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkRhdGFSZWZlcmVu
Y2UgeyBwb2ludGVyLCBkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCB9LCB0aW1lQ29kZSk7CiAgICAg
fSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZURhdGFDdXJsLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlRGF0YUN1cmwuY3BwCmluZGV4IDE5MjQ4MmJmOWY0MzRkYzE5OWQzN2Fk
NDExODI5NGFlMTlkYzY2Y2EuLjhiZWE4ODkzYWJhYTc4MTk3ZTY1ODU2ZjI0NTU1ZjdhZmRmNTc4
MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRGF0YUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlRGF0YUN1cmwuY3BwCkBAIC03Myw3ICs3Myw3IEBAIGJvb2wgRGF0YTo6
YXBwbHkoY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT4mIGFwcGxp
ZXIpIGNvbnN0CiAgICAgaWYgKGlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgcmV0dXJuIGFwcGxpZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSgp
KSwgc2l6ZSgpKTsKKyAgICByZXR1cm4gYXBwbGllcihkYXRhKCksIHNpemUoKSk7CiB9CiAKIERh
dGEgRGF0YTo6c3VicmFuZ2Uoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUtl
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUtl
eS5jcHAKaW5kZXggZjhmMzQxMGRjYTA1YWExOTQxNmNiYzQ4NTE1ZmEwZWUzNGJjY2UyYS4uZTc5
ZjFkNGFkNDcwYTI1MTAyNDA1NzE5YzY0ZjQzMWI3NzdkNzY2ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVLZXkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlS2V5LmNwcApAQCAt
OTQsNyArOTQsNyBAQCBzdGF0aWMgdm9pZCBoYXNoU3RyaW5nKFNIQTEmIHNoYTEsIGNvbnN0IFN0
cmluZyYgc3RyaW5nKQogICAgIH0KICAgICBhdXRvIGNTdHJpbmcgPSBzdHJpbmcudXRmOCgpOwog
ICAgIC8vIEluY2x1ZGUgdGVybWluYXRpbmcgbnVsbCBieXRlLgotICAgIHNoYTEuYWRkQnl0ZXMo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oY1N0cmluZy5kYXRhKCkpLCBjU3RyaW5n
Lmxlbmd0aCgpICsgMSk7CisgICAgc2hhMS5hZGRCeXRlcyhjU3RyaW5nLmNoYXJhY3RlcnM4KCks
IGNTdHJpbmcubGVuZ3RoKCkgKyAxKTsKIH0KIAogS2V5OjpIYXNoVHlwZSBLZXk6OmNvbXB1dGVI
YXNoKGNvbnN0IFNhbHQmIHNhbHQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL3NvdXAvV2ViS2l0RGlyZWN0b3J5SW5wdXRTdHJlYW0uY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYktpdERpcmVjdG9yeUlucHV0U3RyZWFtLmNw
cAppbmRleCAxNDU0YTFmMDZjN2VkODhjYmFiNjY2OWFhZWZkNDYyYjkzYWI2Y2UwLi5jZjJhZjkx
MjIzZDgwNGJhZTQ3MmU0NzY2NDAxM2FhMTBhMGE1MGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViS2l0RGlyZWN0b3J5SW5wdXRTdHJlYW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJLaXREaXJlY3RvcnlJbnB1
dFN0cmVhbS5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCBzdGF0aWMgZ3NzaXplIHdlYmtpdERpcmVj
dG9yeUlucHV0U3RyZWFtUmVhZChHSW5wdXRTdHJlYW0qIGlucHV0LCB2b2lkKiBidWZmZXIsCiAg
ICAgICAgIGdzaXplIGJ1ZmZlclNpemU7CiAgICAgICAgIGF1dG8qIGJ1ZmZlckRhdGEgPSBnX2J5
dGVzX2dldF9kYXRhKHN0cmVhbS0+cHJpdi0+YnVmZmVyLmdldCgpLCAmYnVmZmVyU2l6ZSk7CiAg
ICAgICAgIGdzaXplIGJ5dGVzUmVhZCA9IHN0ZDo6bWluKGJ1ZmZlclNpemUsIGNvdW50IC0gdG90
YWxCeXRlc1JlYWQpOwotICAgICAgICBtZW1jcHkocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oYnVm
ZmVyKSArIHRvdGFsQnl0ZXNSZWFkLCBidWZmZXJEYXRhLCBieXRlc1JlYWQpOworICAgICAgICBt
ZW1jcHkoc3RhdGljX2Nhc3Q8Y2hhcio+KGJ1ZmZlcikgKyB0b3RhbEJ5dGVzUmVhZCwgYnVmZmVy
RGF0YSwgYnl0ZXNSZWFkKTsKICAgICAgICAgaWYgKGJ5dGVzUmVhZCA9PSBidWZmZXJTaXplKQog
ICAgICAgICAgICAgc3RyZWFtLT5wcml2LT5idWZmZXIgPSBudWxscHRyOwogICAgICAgICBlbHNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5jcHAKaW5kZXgg
NzQ2NDI4MTNmNDc4MTk2YzBjNzhjZWI3ODdlMzY2ZGMyOGRjOTI2Mi4uMWFmOWVlYTZhYWQ0NjJk
YTFkYzg1MWQ3ODYyMWYzNjhmZDUwMDI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0FyZ3VtZW50Q29kZXJzLmNwcApAQCAtODIsNyArODIsNyBAQCB2b2lkIEFyZ3VtZW50Q29k
ZXI8Q1N0cmluZz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBDU3RyaW5nJiBzdHJp
bmcpCiAKICAgICB1aW50MzJfdCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CiAgICAgZW5jb2Rl
ciA8PCBsZW5ndGg7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oc3RyaW5nLmRhdGEoKSksIGxlbmd0aCwgMSk7CisgICAg
ZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoc3RyaW5nLmNoYXJhY3RlcnM4KCksIGxlbmd0
aCwgMSk7CiB9CiAKIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIEFyZ3VtZW50Q29kZXI8Q1N0cmlu
Zz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBDU3RyaW5nJiByZXN1bHQpCkBAIC0xMjUsNyAr
MTI1LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFN0cmluZz46OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICBlbmNvZGVyIDw8IGxlbmd0aCA8PCBpczhC
aXQ7CiAKICAgICBpZiAoaXM4Qml0KQotICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3Ro
RGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzdHJpbmcuY2hhcmFjdGVyczgo
KSksIGxlbmd0aCAqIHNpemVvZihMQ2hhciksIGFsaWdub2YoTENoYXIpKTsKKyAgICAgICAgZW5j
b2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoc3RyaW5nLmNoYXJhY3RlcnM4KCksIGxlbmd0aCAq
IHNpemVvZihMQ2hhciksIGFsaWdub2YoTENoYXIpKTsKICAgICBlbHNlCiAgICAgICAgIGVuY29k
ZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KHN0cmluZy5jaGFyYWN0ZXJzMTYoKSksIGxlbmd0aCAqIHNpemVvZihVQ2hhciksIGFsaWdub2Yo
VUNoYXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NmL1dL
U3RyaW5nQ0YubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZi9XS1N0cmluZ0NGLm1t
CmluZGV4IDgyNmZlNmI1MGUwOWJkMTBkOTRhYzRhYTQ3OGRkYWRjYmVmZjUwZmUuLmQxNzhmMDE2
ZGYzZjhhMzA3MzU2NTM2OGViYTNkMGY4OTFkYWJlMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9jL2NmL1dLU3RyaW5nQ0YubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL2MvY2YvV0tTdHJpbmdDRi5tbQpAQCAtNTcsNiArNTcsNiBAQCBDRlN0cmluZ1JlZiBX
S1N0cmluZ0NvcHlDRlN0cmluZyhDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3JSZWYsIFdLU3RyaW5n
UmVmIHN0cmluZwogICAgIC8vIE5PVEU6IFRoaXMgZG9lcyBub3QgdXNlIFN0cmluZ0ltcGw6OmNy
ZWF0ZUNGU3RyaW5nKCkgc2luY2UgdGhhdCBmdW5jdGlvbgogICAgIC8vIGV4cGVjdHMgdG8gYmUg
Y2FsbGVkIG9uIHRoZSB0aHJlYWQgcnVubmluZyBXZWJDb3JlLgogICAgIGlmIChXZWJLaXQ6OnRv
SW1wbChzdHJpbmdSZWYpLT5zdHJpbmcoKS5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIENGU3Ry
aW5nQ3JlYXRlV2l0aEJ5dGVzKGFsbG9jYXRvclJlZiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBV
SW50OCo+KFdlYktpdDo6dG9JbXBsKHN0cmluZ1JlZiktPnN0cmluZygpLmNoYXJhY3RlcnM4KCkp
LCBXZWJLaXQ6OnRvSW1wbChzdHJpbmdSZWYpLT5zdHJpbmcoKS5sZW5ndGgoKSwga0NGU3RyaW5n
RW5jb2RpbmdJU09MYXRpbjEsIHRydWUpOworICAgICAgICByZXR1cm4gQ0ZTdHJpbmdDcmVhdGVX
aXRoQnl0ZXMoYWxsb2NhdG9yUmVmLCBXZWJLaXQ6OnRvSW1wbChzdHJpbmdSZWYpLT5zdHJpbmco
KS5jaGFyYWN0ZXJzOCgpLCBXZWJLaXQ6OnRvSW1wbChzdHJpbmdSZWYpLT5zdHJpbmcoKS5sZW5n
dGgoKSwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIHRydWUpOwogICAgIHJldHVybiBDRlN0
cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKGFsbG9jYXRvclJlZiwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBVbmlDaGFyKj4oV2ViS2l0Ojp0b0ltcGwoc3RyaW5nUmVmKS0+c3RyaW5nKCkuY2hhcmFj
dGVyczE2KCkpLCBXZWJLaXQ6OnRvSW1wbChzdHJpbmdSZWYpLT5zdHJpbmcoKS5sZW5ndGgoKSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZi9XS1VSTENGLm1t
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2YvV0tVUkxDRi5tbQppbmRleCAxZDg1NmYw
ZDgxZGE3NTEwYTBmNmNiZTM2NGQyZmY1NDk1YTY3NWMwLi4yN2NkYzUxZGIzYzlhYzljYjBlY2I1
ZWYwNzNkMmI1NDNhMzVjOTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Yy9jZi9XS1VSTENGLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NmL1dLVVJM
Q0YubW0KQEAgLTY3LDUgKzY3LDUgQEAgQ0ZVUkxSZWYgV0tVUkxDb3B5Q0ZVUkwoQ0ZBbGxvY2F0
b3JSZWYgYWxsb2NhdG9yUmVmLCBXS1VSTFJlZiBVUkxSZWYpCiAgICAgLy8gVVRGLTggd2hpY2gg
dXNlcyBsZXNzIG1lbW9yeSBhbmQgaXMgd2hhdCBXZWJLaXQgY2xpZW50cyBtaWdodCBleHBlY3Qu
CiAKICAgICBDU3RyaW5nIGJ1ZmZlciA9IHN0cmluZy51dGY4KCk7Ci0gICAgcmV0dXJuIENGVVJM
Q3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMobnVsbHB0ciwgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBVSW50OCo+KGJ1ZmZlci5kYXRhKCkpLCBidWZmZXIubGVuZ3RoKCksIGtDRlN0cmluZ0VuY29k
aW5nVVRGOCwgbnVsbHB0ciwgdHJ1ZSk7CisgICAgcmV0dXJuIENGVVJMQ3JlYXRlQWJzb2x1dGVV
UkxXaXRoQnl0ZXMobnVsbHB0ciwgYnVmZmVyLmNoYXJhY3RlcnM4KCksIGJ1ZmZlci5sZW5ndGgo
KSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBudWxscHRyLCB0cnVlKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAppbmRleCA5NDZhZjQ3ZGZiN2U2MTFmMWFi
NDQxNzM0YTliMGUxNDE5ZmJlZDgxLi4wYzBmMDhmYmRlNTZhOWQ0MmVjOWY5NmJhMzhmYmU1MTI1
NTZlMTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCkBA
IC04NCw3ICs4NCw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3
cmFwSW5TaGFyZWRCdWZmZXIoKQogCiAjaWYgVVNFKENGKQogICAgIGF1dG8gZGVhbGxvY2F0b3Ig
PSBjcmVhdGVTaGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdG9yKHRoaXMpOwotICAgIGF1dG8gY2ZE
YXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVXaXRoQnl0ZXNOb0NvcHkoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGRhdGEoKSksIHN0YXRpY19jYXN0
PENGSW5kZXg+KHNpemUoKSksIGRlYWxsb2NhdG9yLmdldCgpKSk7CisgICAgYXV0byBjZkRhdGEg
PSBhZG9wdENGKENGRGF0YUNyZWF0ZVdpdGhCeXRlc05vQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBkYXRhKCksIHN0YXRpY19jYXN0PENGSW5kZXg+KHNpemUoKSksIGRlYWxsb2NhdG9yLmdldCgp
KSk7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNmRGF0YS5nZXQoKSk7CiAjZWxp
ZiBVU0UoR0xJQikKICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYoZ19ieXRl
c19uZXdfd2l0aF9mcmVlX2Z1bmMoZGF0YSgpLCBzaXplKCksIFtdKHZvaWQqIGRhdGEpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5oCmluZGV4IDU4
N2Q5M2U0ZjEyNWQ0N2MxNjkwZWRkMDdhYzJjNzNlN2Q3OWYxNjkuLmNiNmFmYWJiMTU1ZTRiMTBk
NzNmNDkwZTZjNjk2MWU2MmZkZWEwYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1NoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hh
cmVkRGlzcGxheUxpc3RIYW5kbGUuaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgY29u
c3QgU2hhcmVkTWVtb3J5JiBzaGFyZWRNZW1vcnkoKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZE1l
bW9yeS5nZXQoKTsgfQogCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KLSAgICB1
aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4o
c2hhcmVkTWVtb3J5KCkuZGF0YSgpKTsgfQorICAgIHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDx1aW50OF90Kj4oc2hhcmVkTWVtb3J5KCkuZGF0YSgpKTsgfQogCiAg
ICAgdWludDY0X3QgdW5yZWFkQnl0ZXMoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0LmNwcAppbmRleCA4NWYyMjNjZmJhYTAx
YjllOWY1ZDgyMzIxOWIwYTkwMjkxMDcyN2E5Li5mNDc0MTRlNTczNjU2Mzg2MTFkYzI1MzdmMTBj
YzA0NzU2Zjc3MmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb21waWxl
ZENvbnRlbnRSdWxlTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29tcGls
ZWRDb250ZW50UnVsZUxpc3QuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFdlYkNvbXBpbGVkQ29udGVu
dFJ1bGVMaXN0Ojp+V2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3QoKQogCiBib29sIFdlYkNvbXBp
bGVkQ29udGVudFJ1bGVMaXN0Ojpjb25kaXRpb25zQXBwbHlPbmx5VG9Eb21haW4oKSBjb25zdAog
ewotICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fZGF0YS5kYXRhLT5kYXRhKCkpICsgbV9kYXRhLmNv
bmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbk9mZnNldCk7CisgICAgcmV0dXJuICpyZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fZGF0
YS5kYXRhLT5kYXRhKCkpICsgbV9kYXRhLmNvbmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbk9mZnNl
dCk7CiB9CiAKIGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZSog
V2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3Q6OmZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVj
b2RlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElX
ZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmNwcAppbmRl
eCBjNzk3NmZmNTJlYThlMTVhYjY4MGE1NjNlNDMxMDg2OGVjZDMxMDBlLi5lZWViZDliZDA1ZjU2
M2FiNGI1NjM0ZmY0YWZiNmRkODdjYzRhMGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0
aW9uUmVzcG9uc2UuY3BwCkBAIC01MCw3ICs1MCw3IEBAIFJlZlB0cjxEYXRhPiBXZWJBdXRoZW50
aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlOjp1c2VySGFuZGxlKCkgY29uc3QKICAgICBSZWZQdHI8
QVBJOjpEYXRhPiBkYXRhOwogICAgIGlmIChhdXRvKiB1c2VySGFuZGxlID0gbV9yZXNwb25zZS0+
dXNlckhhbmRsZSgpKSB7CiAgICAgICAgIHVzZXJIYW5kbGUtPnJlZigpOwotICAgICAgICBkYXRh
ID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZyhyZWludGVycHJldF9jYXN0PHVuc2ln
bmVkIGNoYXIqPih1c2VySGFuZGxlLT5kYXRhKCkpLCB1c2VySGFuZGxlLT5ieXRlTGVuZ3RoKCks
IFtdICh1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9pZCogZGF0YSkgeworICAgICAgICBkYXRhID0g
QVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZyhzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFy
Kj4odXNlckhhbmRsZS0+ZGF0YSgpKSwgdXNlckhhbmRsZS0+Ynl0ZUxlbmd0aCgpLCBbXSAodW5z
aWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRhdGEpIHsKICAgICAgICAgICAgIHN0YXRpY19jYXN0
PEFycmF5QnVmZmVyKj4oY29uc3RfY2FzdDx2b2lkKj4oZGF0YSkpLT5kZXJlZigpOwogICAgICAg
ICB9LCB1c2VySGFuZGxlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlLmNwcAppbmRleCBiN2JkMDk4NTQ4MWNlYTgxZjNlOWM0NmY4ZmQ1OGIyYjZjM2U3MWRjLi43
MDJlZmIyOTlhNDFiMDEzYzg1NjkwNWU5ZTZiODAyNjI3NzBhZmUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTI0MSw3ICsyNDEsNyBAQCBzdGF0aWMgSVBD
OjpEYXRhUmVmZXJlbmNlIGRhdGFGcm9tKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIGlm
IChzdHJpbmcuaXNOdWxsKCkgfHwgIXN0cmluZy5pczhCaXQoKSkKICAgICAgICAgcmV0dXJuIHsg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oc3RyaW5nLmNoYXJhY3RlcnMxNigpKSwg
c3RyaW5nLmxlbmd0aCgpICogc2l6ZW9mKFVDaGFyKSB9OwotICAgIHJldHVybiB7IHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0cmluZy5jaGFyYWN0ZXJzOCgpKSwgc3RyaW5nLmxl
bmd0aCgpICogc2l6ZW9mKExDaGFyKSB9OworICAgIHJldHVybiB7IHN0cmluZy5jaGFyYWN0ZXJz
OCgpLCBzdHJpbmcubGVuZ3RoKCkgKiBzaXplb2YoTENoYXIpIH07CiB9CiAKIHN0YXRpYyB2b2lk
IGxvYWRTdHJpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHN0cmluZ1JlZiwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBXS1R5cGVSZWYgdXNl
ckRhdGFSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1
dGhvcml6YXRpb24vUmVkaXJlY3RTT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1JlZGlyZWN0U09BdXRob3JpemF0
aW9uU2Vzc2lvbi5tbQppbmRleCBmYmVmNTQxNWU4NmQ3MWVjMWY3ZjIxNzFmNGI2MjliYjZjYTMw
NGVkLi4wOGM3ZWRkMzgxNTU2MTdjMjg1ZWE2M2RhMzA5ZTFiNGM1Nzc5ODgxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vUmVkaXJlY3RT
T0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1NPQXV0aG9yaXphdGlvbi9SZWRpcmVjdFNPQXV0aG9yaXphdGlvblNlc3Npb24ubW0KQEAg
LTc3LDcgKzc3LDcgQEAgdm9pZCBSZWRpcmVjdFNPQXV0aG9yaXphdGlvblNlc3Npb246OmNvbXBs
ZXRlSW50ZXJuYWwoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmUKICAgICAgICAgaWYgKCFuYXZp
Z2F0aW9uQWN0aW9uLT5pc1Byb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKSB7CiAgICAgICAgICAgICBw
YWdlLT5zZXRTaG91bGRTdXBwcmVzc1NPQXV0aG9yaXphdGlvbkluTmV4dE5hdmlnYXRpb25Qb2xp
Y3lEZWNpc2lvbigpOwogICAgICAgICAgICAgYXV0byBodG1sID0gbWFrZVN0cmluZygiPHNjcmlw
dD5sb2NhdGlvbiA9ICciLCByZXNwb25zZS5odHRwSGVhZGVyRmllbGRzKCkuZ2V0KEhUVFBIZWFk
ZXJOYW1lOjpMb2NhdGlvbiksICInPC9zY3JpcHQ+IikudXRmOCgpOwotICAgICAgICAgICAgYXV0
byBkYXRhID0gSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KGh0bWwuZGF0YSgpKSwgaHRtbC5sZW5ndGgoKSk7CisgICAgICAgICAgICBhdXRvIGRhdGEg
PSBJUEM6OkRhdGFSZWZlcmVuY2UoaHRtbC5jaGFyYWN0ZXJzOCgpLCBodG1sLmxlbmd0aCgpKTsK
ICAgICAgICAgICAgIHBhZ2UtPmxvYWREYXRhKGRhdGEsICJ0ZXh0L2h0bWwiX3MsICJVVEYtOCJf
cywgbmF2aWdhdGlvbkFjdGlvbi0+cmVxdWVzdCgpLnVybCgpLnN0cmluZygpLCBudWxscHRyLCBu
YXZpZ2F0aW9uQWN0aW9uLT5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCkpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9JbnNwZWN0b3Ivc29ja2V0L1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0L1JlbW90ZUluc3BlY3RvckNsaWVudC5j
cHAKaW5kZXggZWI4NTU5ZTBjM2MzYmE2ZDg0ZDJmMGExMmJhYWI2NDIyYTc1NTA1Ny4uMTA0MzA3
MDY1ZmVjZWYxZjMyODZjM2QyZGRkMTNjMWMzZDczZmY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5z
cGVjdG9yQ2xpZW50LmNwcApAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9y
Q2xpZW50OjpzZW5kV2ViSW5zcGVjdG9yRXZlbnQoY29uc3QgU3RyaW5nJiBldmVudCkKICAgICBB
U1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKICAgICBBU1NFUlQobV9jb25uZWN0aW9uSUQpOwogICAg
IGF1dG8gbWVzc2FnZSA9IGV2ZW50LnV0ZjgoKTsKLSAgICBzZW5kKG1fY29ubmVjdGlvbklELnZh
bHVlKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1lc3NhZ2UuZGF0YSgpKSwg
bWVzc2FnZS5sZW5ndGgoKSk7CisgICAgc2VuZChtX2Nvbm5lY3Rpb25JRC52YWx1ZSgpLCBtZXNz
YWdlLmNoYXJhY3RlcnM4KCksIG1lc3NhZ2UubGVuZ3RoKCkpOwogfQogCiBIYXNoTWFwPFN0cmlu
ZywgSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50OjpDYWxsSGFuZGxl
cj4mIFJlbW90ZUluc3BlY3RvckNsaWVudDo6ZGlzcGF0Y2hNYXAoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCBk
ZDU2ZTc0ZWVlZGNjYTMwMzAyNmMyOTUzM2FmODNhNjk3N2UxNmI0Li5jNDg1NzU0NTI4YjM1NGE4
NmMzY2U4NzhlZmJmNTg5MzNlMzgzZjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtNTYsOCArNTYsOCBAQCB2
b2lkIFdlYlNvY2tldENoYW5uZWw6Om5vdGlmeVNlbmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BD
b2RlIG9wQ29kZSwgY29uc3QgdWludAogTmV0d29ya1NlbmRRdWV1ZSBXZWJTb2NrZXRDaGFubmVs
OjpjcmVhdGVNZXNzYWdlUXVldWUoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJTb2NrZXRDaGFubmVs
JiBjaGFubmVsKQogewogICAgIHJldHVybiB7IGRvY3VtZW50LCBbJmNoYW5uZWxdKGF1dG8mIHV0
ZjhTdHJpbmcpIHsKLSAgICAgICAgY2hhbm5lbC5ub3RpZnlTZW5kRnJhbWUoV2ViU29ja2V0RnJh
bWU6Ok9wQ29kZTo6T3BDb2RlVGV4dCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
dXRmOFN0cmluZy5kYXRhKCkpLCB1dGY4U3RyaW5nLmxlbmd0aCgpKTsKLSAgICAgICAgY2hhbm5l
bC5zZW5kTWVzc2FnZShNZXNzYWdlczo6TmV0d29ya1NvY2tldENoYW5uZWw6OlNlbmRTdHJpbmcg
eyBJUEM6OkRhdGFSZWZlcmVuY2UgeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih1
dGY4U3RyaW5nLmRhdGEoKSksIHV0ZjhTdHJpbmcubGVuZ3RoKCkgfSB9LCB1dGY4U3RyaW5nLmxl
bmd0aCgpKTsKKyAgICAgICAgY2hhbm5lbC5ub3RpZnlTZW5kRnJhbWUoV2ViU29ja2V0RnJhbWU6
Ok9wQ29kZTo6T3BDb2RlVGV4dCwgdXRmOFN0cmluZy5jaGFyYWN0ZXJzOCgpLCB1dGY4U3RyaW5n
Lmxlbmd0aCgpKTsKKyAgICAgICAgY2hhbm5lbC5zZW5kTWVzc2FnZShNZXNzYWdlczo6TmV0d29y
a1NvY2tldENoYW5uZWw6OlNlbmRTdHJpbmcgeyBJUEM6OkRhdGFSZWZlcmVuY2UgeyB1dGY4U3Ry
aW5nLmNoYXJhY3RlcnM4KCksIHV0ZjhTdHJpbmcubGVuZ3RoKCkgfSB9LCB1dGY4U3RyaW5nLmxl
bmd0aCgpKTsKICAgICB9LCBbJmNoYW5uZWxdKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBi
eXRlTGVuZ3RoKSB7CiAgICAgICAgIGNoYW5uZWwubm90aWZ5U2VuZEZyYW1lKFdlYlNvY2tldEZy
YW1lOjpPcENvZGU6Ok9wQ29kZUJpbmFyeSwgZGF0YSwgYnl0ZUxlbmd0aCk7CiAgICAgICAgIGNo
YW5uZWwuc2VuZE1lc3NhZ2UoTWVzc2FnZXM6Ok5ldHdvcmtTb2NrZXRDaGFubmVsOjpTZW5kRGF0
YSB7IElQQzo6RGF0YVJlZmVyZW5jZSB7IGRhdGEsIGJ5dGVMZW5ndGggfSB9LCBieXRlTGVuZ3Ro
KTsKQEAgLTI5NSw3ICsyOTUsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZFJlY2VpdmVU
ZXh0KFN0cmluZyYmIG1lc3NhZ2UpCiAgICAgfQogCiAgICAgYXV0byB1dGY4TWVzc2FnZSA9IG1l
c3NhZ2UudXRmOCgpOwotICAgIG1faW5zcGVjdG9yLmRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZSht
X2RvY3VtZW50LmdldCgpLCBjcmVhdGVXZWJTb2NrZXRGcmFtZUZvcldlYkluc3BlY3RvcihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih1dGY4TWVzc2FnZS5kYXRhKCkpLCB1dGY4TWVz
c2FnZS5sZW5ndGgoKSwgV2ViU29ja2V0RnJhbWU6Ok9wQ29kZTo6T3BDb2RlVGV4dCkpOworICAg
IG1faW5zcGVjdG9yLmRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZShtX2RvY3VtZW50LmdldCgpLCBj
cmVhdGVXZWJTb2NrZXRGcmFtZUZvcldlYkluc3BlY3Rvcih1dGY4TWVzc2FnZS5jaGFyYWN0ZXJz
OCgpLCB1dGY4TWVzc2FnZS5sZW5ndGgoKSwgV2ViU29ja2V0RnJhbWU6Ok9wQ29kZTo6T3BDb2Rl
VGV4dCkpOwogCiAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVNZXNzYWdlKG1lc3NhZ2UpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1JUQ0Rh
dGFDaGFubmVsUmVtb3RlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyLmNwcAppbmRleCA3ZWIxMDc4
NzdlMmIyYTBhODk5NDM2NzQyMjRmZDFiMjgwMDRjYTQxLi45ODk3NWNiOGE4Mzg1NGFlOTZlNGY3
OTk4NTJmOTQyZDIzZWFiNmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVN
YW5hZ2VyLmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVN
YW5hZ2VyOjpzZW5kRGF0YShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgc291CiAg
ICAgICAgIGlmIChpc1JhdykKICAgICAgICAgICAgIHNvdXJjZS0+c2VuZFJhd0RhdGEoZGF0YS5k
YXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc291cmNlLT5z
ZW5kU3RyaW5nRGF0YShDU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEu
ZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICAgICAgICAgIHNvdXJjZS0+c2VuZFN0cmluZ0Rh
dGEoQ1N0cmluZyhkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpKTsKICAgICB9CiB9CiAKQEAgLTIy
Nyw3ICsyMjcsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6UmVtb3RlU291
cmNlQ29ubmVjdGlvbjo6ZGlkQ2hhbmdlUmVhZHlTdGF0ZShXZQogdm9pZCBSVENEYXRhQ2hhbm5l
bFJlbW90ZU1hbmFnZXI6OlJlbW90ZVNvdXJjZUNvbm5lY3Rpb246OmRpZFJlY2VpdmVTdHJpbmdE
YXRhKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIHN0cmluZykKIHsKICAgICBhdXRvIHRleHQgPSBzdHJpbmcudXRmOCgpOwotICAgIG1f
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJv
eHk6OlJlY2VpdmVEYXRhIHsgaWRlbnRpZmllciwgZmFsc2UsIElQQzo6RGF0YVJlZmVyZW5jZSB7
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KHRleHQuZGF0YSgpKSwgdGV4
dC5sZW5ndGgoKSB9IH0sIDApOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UlRD
RGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHk6OlJlY2VpdmVEYXRhIHsgaWRlbnRpZmllciwg
ZmFsc2UsIElQQzo6RGF0YVJlZmVyZW5jZSB7IHRleHQuY2hhcmFjdGVyczgoKSwgdGV4dC5sZW5n
dGgoKSB9IH0sIDApOwogfQogCiB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6UmVt
b3RlU291cmNlQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZVJhd0RhdGEoV2ViQ29yZTo6UlRDRGF0YUNo
YW5uZWxJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBz
aXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwCmluZGV4IGRiZmI4YjZiODEx
YjM2NDc0YTVkZTZiYjZhN2YzOGM1YjAyNTIwNmIuLjAzMGY4MWUwMzA5Njg0NWMwYTRhZTc0NDg1
NTFmZDVlMWExNGFhNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAKQEAg
LTExNyw3ICsxMTcsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpzZW5kSmF2YVNjcmlw
dFN0cmVhbShjb25zdCBTdHJpbmcmIHJlc3VsdCkKICAgICBpZiAoIXN0YXJ0KG1fcmVxdWVzdFVS
TFN0cmluZywgcmVzdWx0Q1N0cmluZy5sZW5ndGgoKSwgMCwgInRleHQvcGxhaW4iLCAiIikpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGRlbGl2ZXJEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KHJlc3VsdENTdHJpbmcuZGF0YSgpKSwgcmVzdWx0Q1N0cmluZy5sZW5ndGgoKSk7
CisgICAgZGVsaXZlckRhdGEocmVzdWx0Q1N0cmluZy5jaGFyYWN0ZXJzOCgpLCByZXN1bHRDU3Ry
aW5nLmxlbmd0aCgpKTsKICAgICBzdG9wKE5QUkVTX0RPTkUpOwogfQogCg==
</data>
<flag name="commit-queue"
          id="452374"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430791</attachid>
            <date>2021-06-07 17:02:07 -0700</date>
            <delta_ts>2021-06-07 20:02:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226743-20210607170206.patch</filename>
            <type>text/plain</type>
            <size>84467</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGNhZDVhZmEyNDcwNzM5ZDhjODJlOTc4
NGRiNTAzZDc3MWI5Y2MzNWMuLjRlN2MzOWUzMTQyMTE2YmRjNzhmNDk1MTM4Njg2NDI3NWIzOWE3
OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMjEtMDYtMDcgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgdXNlIG9mIHJlaW50ZXJwcmV0X2Nhc3Q8PiBp
biB0aGUgY29kZWJhc2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNjc0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogd3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmNwcDoKKyAgICAgICAg
KiB3dGYvRmFzdE1hbGxvYy5oOgorICAgICAgICAoV1RGOjpGYXN0QWxsb2NhdG9yOjphbGxvY2F0
ZSk6CisgICAgICAgICogd3RmL1NIQTEuaDoKKyAgICAgICAgKFdURjo6U0hBMTo6YWRkQnl0ZXMp
OgorICAgICAgICAqIHd0Zi9TdGFja0NoZWNrLmg6CisgICAgICAgIChXVEY6OlN0YWNrQ2hlY2s6
OlNjb3BlOjpTY29wZSk6CisgICAgICAgIChXVEY6OlN0YWNrQ2hlY2s6OlN0YWNrQ2hlY2spOgor
ICAgICAgICAqIHd0Zi9VUkxIZWxwZXJzLmNwcDoKKyAgICAgICAgKFdURjo6VVJMSGVscGVyczo6
dXNlclZpc2libGVVUkwpOgorICAgICAgICAqIHd0Zi9VUkxQYXJzZXIuY3BwOgorICAgICAgICAo
V1RGOjpVUkxQYXJzZXI6OmZvcm1VUkxEZWNvZGUpOgorICAgICAgICAqIHd0Zi9jZi9VUkxDRi5j
cHA6CisgICAgICAgIChXVEY6OlVSTDo6Y3JlYXRlQ0ZVUkwgY29uc3QpOgorICAgICAgICAqIHd0
Zi9jb2NvYS9VUkxDb2NvYS5tbToKKyAgICAgICAgKFdURjo6VVJMOjpjcmVhdGVDRlVSTCBjb25z
dCk6CisgICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuY3BwOgorICAg
ICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6Q29kZXI8Q1N0cmluZz46OmVuY29kZSk6CisgICAgICAg
IChXVEY6OlBlcnNpc3RlbmNlOjpDb2RlcjxTdHJpbmc+OjplbmNvZGUpOgorICAgICAgICAqIHd0
Zi90ZXh0L0NTdHJpbmcuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuY3BwOgorICAg
ICAgICAoV1RGOjpTdHJpbmc6OmxhdGluMSBjb25zdCk6CisgICAgICAgICogd3RmL3RleHQvY2Yv
U3RyaW5nSW1wbENGLmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Y3JlYXRlQ0ZTdHJp
bmcpOgorCiAyMDIxLTA2LTA3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29t
PgogCiAgICAgICAgIFVwc3RyZWFtIFdlYktpdCBzdXBwb3J0IGZvciBMaXZlIFRleHQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCBhZmRiMTdiZDcxMDg1N2E3ZTgyZTkyZTU0YWQ2MzcxOWM0MmRhZDM5Li42NDFhZjk2
ZmI2ODQyNDQ0ODkwYWQwZDdlOWUzYjhiYjUyZDdmOWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTAxIEBACisyMDIxLTA2LTA3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmVkdWNlIHVzZSBvZiByZWludGVycHJldF9jYXN0PD4gaW4gdGhlIGNvZGViYXNlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY3NDMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktleS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQ2xlYXJLZXk6OmdlbmVyYXRlS2V5UmVxdWVzdCk6Cisg
ICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RmV0Y2hCb2R5Ojp0YWtlKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1
bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlKToK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNCbG9iKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZldGNoQm9keUNvbnN1bWVyOjp0YWtlQXNUZXh0KToKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnJlYWR5VG9TZW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6c2VuZFN0cmlu
Z0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyOjpz
ZW5kUmF3RGF0YSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlv
U291cmNlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlCdXNEYXRhKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OmVuY29kZUFycmF5QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmRl
Y29kZUFycmF5QnVmZmVyKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpzdGFydENs
b3NpbmdIYW5kc2hha2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6cHJv
Y2Vzc091dGdvaW5nRnJhbWVRdWV1ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hh
a2U6OmdldEV4cGVjdGVkV2ViU29ja2V0QWNjZXB0KToKKyAgICAgICAgKFdlYkNvcmU6OmhlYWRl
ckhhc1ZhbGlkSFRUUFZlcnNpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZl
clNvdXJjZVByb3ZpZGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkU3Ry
aW5nKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9TZXJpYWxpemVkTkZBLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpTZXJpYWxpemVkTkZBOjpwb2ludGVy
QXRPZmZzZXRJbkZpbGUgY29uc3QpOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Omhhc2hQb2ludGVyKToKKyAgICAgICAgKiBkb20vVGV4dEVuY29kZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dEVuY29kZXI6OmVuY29kZSBjb25zdCk6CisgICAgICAgICog
ZG9tL1RleHRFbmNvZGVyU3RyZWFtRW5jb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
RW5jb2RlclN0cmVhbUVuY29kZXI6OmZsdXNoKToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL1dl
YkNvbnRlbnRSZWFkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXplTWFya3Vw
V2l0aEFyY2hpdmUpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
dGV4SW1hZ2VBcnJheUJ1ZmZlclZpZXdIZWxwZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9ET01Q
YXRjaFN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWRkU3RyaW5nVG9TSEExKToKKyAg
ICAgICAgKiBsb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgpOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0Ojpz
Y3JpcHQpOgorICAgICAgICAqIHBhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5t
bToKKyAgICAgICAgKFdlYkNvcmU6OnNob3dUZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFy
ZWRCdWZmZXJDaHVua1JlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJD
aHVua1JlYWRlcjo6bmV4dENodW5rKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9TaGFyZWRCdWZm
ZXJDRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSBj
b25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OktleWVkRW5jb2RlckdlbmVyaWM6OmVuY29kZVN0cmluZyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0w6OnBhY2tJbWFnZURhdGEpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmdldFBpeGVsQnVmZmVyIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6cHV0UGl4ZWxCdWZmZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnBy
b2Nlc3NOYXRpdmVTYW1wbGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNETVNlc3Npb25BVkZvdW5kYXRpb25DRjo6Z2VuZXJhdGVLZXlSZXF1ZXN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNETVNlc3Npb25BVkZvdW5kYXRpb25DRjo6dXBkYXRlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
Q0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0Y6OnJl
YWROYXRpdmVTYW1wbGVCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1CdWZmZXI6OmNyZWF0ZUl0ZW1CdWZmZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6SXRlcmF0b3I6OnVwZGF0ZUN1
cnJlbnRJdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1h
Z2VSZWFkZXIuaDoKKyAgICAgICAgKEdJRkltYWdlUmVhZGVyOjpkYXRhIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmFkZFN0cmluZ1RvU0hBMSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3Jt
RGF0YUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGFCdWlsZGVyOjplbmNv
ZGVTdHJpbmdBc0Zvcm1EYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0
cmVhbUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGU6OnNl
bmRIYW5kc2hha2UpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1
ZXN0Q0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0
ZVBsYXRmb3JtUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZVJlcXVlc3RDRk5ldC5oOgorICAgICAgICAoV2ViQ29yZTo6aHR0cEhlYWRlclZhbHVlVXNpbmdT
dWl0YWJsZUVuY29kaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0
cmVhbUhhbmRsZUltcGxDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1I
YW5kbGVJbXBsOjpwbGF0Zm9ybVNlbmRJbnRlcm5hbCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNo
ZUVudHJ5OjpnZW5lcmF0ZUJhc2VGaWxlbmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NR
TGl0ZVN0YXRlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ6OmNv
bHVtbkJsb2JWaWV3KToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06OnNhbml0aXplUmVzcG9uc2UgY29uc3QpOgorCiAyMDIx
LTA2LTA3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAg
IFVwc3RyZWFtIFdlYktpdCBzdXBwb3J0IGZvciBMaXZlIFRleHQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJEcml2ZXIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cKaW5kZXgg
Y2IxNmNmYmU4ZGViNTEwMDk4ZTMyMGExNGQ5YjhmZTVmNWE2YWQxOC4uNGRkNmEzODY0NDIzZjg5
ZjdkMGUwZDkwZmM2YTc4NzAwNjY5Y2Q3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBA
QAorMjAyMS0wNi0wNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAg
IFJlZHVjZSB1c2Ugb2YgcmVpbnRlcnByZXRfY2FzdDw+IGluIHRoZSBjb2RlYmFzZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NzQzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzb2NrZXQvSFRUUFBh
cnNlci5jcHA6CisgICAgICAgIChXZWJEcml2ZXI6OkhUVFBQYXJzZXI6OnJlYWRMaW5lKToKKyAg
ICAgICAgKiBzb2NrZXQvU2Vzc2lvbkhvc3RTb2NrZXQuY3BwOgorICAgICAgICAoV2ViRHJpdmVy
OjpTZXNzaW9uSG9zdDo6c2VuZFdlYkluc3BlY3RvckV2ZW50KToKKwogMjAyMS0wNi0wMSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIDx3dGYvT3B0aW9u
YWwuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggMTRkYTdjNTU2MWY3NGQ0N2VjMzY2ZWRjYmYzNzYwMjM5NzY5MDRl
ZS4uNzE2YTNkMGM2YmE4MWU3MDVjMmJmYmZmZTFhN2YyYmE2ZWZlYzRiNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw1MiBAQAorMjAyMS0wNi0wNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgorCisgICAgICAgIFJlZHVjZSB1c2Ugb2YgcmVpbnRlcnByZXRfY2FzdDw+IGluIHRoZSBjb2Rl
YmFzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2
NzQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllckluaXRpYWxpemF0aW9uRGF0
YUVuY291bnRlcmVkKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFj
a1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlVGV4dFRyYWNrUHJveHk6OmFkZERh
dGFDdWUpOgorICAgICAgICAqIEdQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGFDdXJsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhOjphcHBseSBjb25zdCk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlS2V5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0NhY2hlOjpoYXNoU3RyaW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9zb3VwL1dlYktpdERpcmVjdG9yeUlucHV0U3RyZWFtLmNwcDoKKyAgICAgICAgKHdlYmtp
dERpcmVjdG9yeUlucHV0U3RyZWFtUmVhZCk6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3Vt
ZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxDU3RyaW5nPjo6ZW5j
b2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTdHJpbmc+OjplbmNvZGUpOgorICAg
ICAgICAqIFNoYXJlZC9BUEkvYy9jZi9XS1N0cmluZ0NGLm1tOgorICAgICAgICAoV0tTdHJpbmdD
b3B5Q0ZTdHJpbmcpOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9jZi9XS1VSTENGLm1tOgorICAg
ICAgICAoV0tVUkxDb3B5Q0ZVUkwpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJj
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRC
dWZmZXIpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5oOgorICAg
ICAgICAoV2ViS2l0OjpTaGFyZWREaXNwbGF5TGlzdEhhbmRsZTo6ZGF0YSBjb25zdCk6CisgICAg
ICAgICogU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3Q6OmNvbmRpdGlvbnNBcHBseU9ubHlUb0Rv
bWFpbiBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlv
bkFzc2VydGlvblJlc3BvbnNlLmNwcDoKKyAgICAgICAgKEFQSTo6V2ViQXV0aGVudGljYXRpb25B
c3NlcnRpb25SZXNwb25zZTo6dXNlckhhbmRsZSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChkYXRhRnJvbSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9SZWRpcmVjdFNPQXV0aG9yaXphdGlvblNlc3Npb24u
bW06CisgICAgICAgIChXZWJLaXQ6OlJlZGlyZWN0U09BdXRob3JpemF0aW9uU2Vzc2lvbjo6Y29t
cGxldGVJbnRlcm5hbCk6CisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVt
b3RlSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9y
Q2xpZW50OjpzZW5kV2ViSW5zcGVjdG9yRXZlbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0
d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0Q2hh
bm5lbDo6Y3JlYXRlTWVzc2FnZVF1ZXVlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0Q2hh
bm5lbDo6ZGlkUmVjZWl2ZVRleHQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJy
dGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UlRD
RGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpzZW5kRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJU
Q0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6UmVtb3RlU291cmNlQ29ubmVjdGlvbjo6ZGlkUmVj
ZWl2ZVN0cmluZ0RhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZVBsdWdpblN0cmVhbS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2lu
U3RyZWFtOjpzZW5kSmF2YVNjcmlwdFN0cmVhbSk6CisKIDIwMjEtMDYtMDcgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgVXBzdHJlYW0gV2ViS2l0IHN1
cHBvcnQgZm9yIExpdmUgVGV4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ3J5cHRvZ3Jh
cGhpY2FsbHlSYW5kb21OdW1iZXIuY3BwIGIvU291cmNlL1dURi93dGYvQ3J5cHRvZ3JhcGhpY2Fs
bHlSYW5kb21OdW1iZXIuY3BwCmluZGV4IGNiYWI5NjVlOTIzYmE0M2Y5YTUzOTg2NmVkMTYzY2Q0
ZjQyNmFjOTcuLmRmODI1ODQyNWQ5M2UwMDU4Yzg0ZmU3Y2VjMmVlMDZiMjRjNjdiMTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5jcHAKQEAg
LTE0OSw3ICsxNDksNyBAQCB2b2lkIEFSQzRSYW5kb21OdW1iZXJHZW5lcmF0b3I6OnJhbmRvbVZh
bHVlcyh2b2lkKiBidWZmZXIsIHNpemVfdCBsZW5ndGgpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7
IG1fbG9jayB9OwogCi0gICAgdW5zaWduZWQgY2hhciogcmVzdWx0ID0gcmVpbnRlcnByZXRfY2Fz
dDx1bnNpZ25lZCBjaGFyKj4oYnVmZmVyKTsKKyAgICBhdXRvIHJlc3VsdCA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkIGNoYXIqPihidWZmZXIpOwogICAgIHN0aXJJZk5lZWRlZCgpOwogICAgIHdoaWxl
IChsZW5ndGgtLSkgewogICAgICAgICBtX2NvdW50LS07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GYXN0TWFsbG9jLmggYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmgKaW5kZXggMDI0
ZjFiOTFjYjlhYTFkMDRhOGNlNjQ0ZjFiZjVkZmZmMWE1YzRkNi4uNzNkOTY5YjQyMDU2ZjYxY2Jm
NTQwMGIxZmE1Yzg3YmI3ZDhkNmY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmFzdE1h
bGxvYy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuaApAQCAtMjAzLDcgKzIwMyw3
IEBAIHB1YmxpYzoKIAogICAgIFQqIGFsbG9jYXRlKHNpemVfdCBjb3VudCkKICAgICB7Ci0gICAg
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFQqPihmYXN0TWFsbG9jKHNpemVvZihUKSAqIGNv
dW50KSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUKj4oZmFzdE1hbGxvYyhzaXplb2Yo
VCkgKiBjb3VudCkpOwogICAgIH0KIAogICAgIHZvaWQgZGVhbGxvY2F0ZShUKiBwb2ludGVyLCBz
aXplX3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TSEExLmggYi9Tb3VyY2UvV1RGL3d0
Zi9TSEExLmgKaW5kZXggMmM3ZDlhMzY0ZTE1OWU0ZGQwNDU5ZjQ3MjA1YzgzZGNkMDYzMjliZi4u
NWJkYTQyZWQ2ZDZkNjgzZTViYWExYjM5OWFlODBjYjE1MTlkYmE5NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvU0hBMS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1NIQTEuaApAQCAtNTEsOCAr
NTEsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZvaWQgYWRkQnl0ZXMoY29uc3QgQ1N0cmluZyYg
aW5wdXQpCiAgICAgewotICAgICAgICBjb25zdCBjaGFyKiBzdHJpbmcgPSBpbnB1dC5kYXRhKCk7
Ci0gICAgICAgIGFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0cmlu
ZyksIGlucHV0Lmxlbmd0aCgpKTsKKyAgICAgICAgYWRkQnl0ZXMoaW5wdXQuY2hhcmFjdGVyczgo
KSwgaW5wdXQubGVuZ3RoKCkpOwogICAgIH0KICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBh
ZGRCeXRlcyhjb25zdCB1aW50OF90KiBpbnB1dCwgc2l6ZV90IGxlbmd0aCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1N0YWNrQ2hlY2suaCBiL1NvdXJjZS9XVEYvd3RmL1N0YWNrQ2hl
Y2suaAppbmRleCA5YzcyNzg2MmMwOWZmMTAzOWEzNzc3MmIyZDYzNjhhNGQ0Y2I0NDExLi5hMTky
ZmM3MWUyNTg4NmJiYzYyMGRiN2FlNWNmN2U1MGIyYjg2NGJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9TdGFja0NoZWNrLmgKKysrIGIvU291cmNlL1dURi93dGYvU3RhY2tDaGVjay5oCkBA
IC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIC8vIHRoZW4gd2UgZWl0aGVyIG5l
ZWQgdG86CiAgICAgICAgICAgICAvLyAxLiBicmVhayB0aGUgaW50ZXJ2YWwgaW50byBzbWFsbGVy
IHBpZWNlcyAoaS5lLiBpbnNlcnQgbW9yZSBjaGVja3MpLCBvcgogICAgICAgICAgICAgLy8gMi4g
dXNlIGEgbGFyZ2VyIHJlc2VydmVkWm9uZSBzaXplLgotICAgICAgICAgICAgdWludDhfdCogY3Vy
cmVudFN0YWNrQ2hlY2twb2ludCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGN1cnJlbnRT
dGFja1BvaW50ZXIoKSk7CisgICAgICAgICAgICB1aW50OF90KiBjdXJyZW50U3RhY2tDaGVja3Bv
aW50ID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGN1cnJlbnRTdGFja1BvaW50ZXIoKSk7CiAgICAg
ICAgICAgICB1aW50OF90KiBwcmV2aW91c1N0YWNrQ2hlY2twb2ludCA9IG1fY2hlY2tlci5tX2xh
c3RTdGFja0NoZWNrcG9pbnQ7CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChwcmV2aW91c1N0
YWNrQ2hlY2twb2ludCAtIGN1cnJlbnRTdGFja0NoZWNrcG9pbnQgPiAwKTsKICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHByZXZpb3VzU3RhY2tDaGVja3BvaW50IC0gY3VycmVudFN0YWNrQ2hl
Y2twb2ludCA8IHN0YXRpY19jYXN0PHB0cmRpZmZfdD4obV9jaGVja2VyLm1fcmVzZXJ2ZWRab25l
KSk7CkBAIC04Nyw3ICs4Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgOiBtX3N0YWNrTGltaXQoYm91
bmRzLnJlY3Vyc2lvbkxpbWl0KG1pblJlc2VydmVkWm9uZSkpCiAjaWYgVkVSSUZZX1NUQUNLX0NI
RUNLX1JFU0VSVkVEX1pPTkVfU0laRQogICAgICAgICAsIG1fb3duZXJUaHJlYWQoJlRocmVhZDo6
Y3VycmVudCgpKQotICAgICAgICAsIG1fbGFzdFN0YWNrQ2hlY2twb2ludChyZWludGVycHJldF9j
YXN0PHVpbnQ4X3QqPihjdXJyZW50U3RhY2tQb2ludGVyKCkpKQorICAgICAgICAsIG1fbGFzdFN0
YWNrQ2hlY2twb2ludChzdGF0aWNfY2FzdDx1aW50OF90Kj4oY3VycmVudFN0YWNrUG9pbnRlcigp
KSkKICAgICAgICAgLCBtX3Jlc2VydmVkWm9uZShtaW5SZXNlcnZlZFpvbmUpCiAjZW5kaWYKICAg
ICB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTEhlbHBlcnMuY3BwIGIvU291cmNl
L1dURi93dGYvVVJMSGVscGVycy5jcHAKaW5kZXggOWE5ZDA2MDEzZTc1NWNlY2Q4YWZiOGIyN2Yw
NDY5M2YyMWRkMGMwYS4uMGE5ODY1ZTkyNjFkOWYxYzFmY2MwZTFlMWQ1MjlkMDYyNzhjMmExMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVVJMSGVscGVycy5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvVVJMSGVscGVycy5jcHAKQEAgLTgyMiw3ICs4MjIsNyBAQCBzdGF0aWMgU3RyaW5nIGVz
Y2FwZVVuc2FmZUNoYXJhY3RlcnMoY29uc3QgU3RyaW5nJiBzb3VyY2VCdWZmZXIpCiAKIFN0cmlu
ZyB1c2VyVmlzaWJsZVVSTChjb25zdCBDU3RyaW5nJiB1cmwpCiB7Ci0gICAgYXV0byogYmVmb3Jl
ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4odXJsLmRhdGEoKSk7Cisg
ICAgYXV0byogYmVmb3JlID0gdXJsLmNoYXJhY3RlcnM4KCk7CiAgICAgaW50IGxlbmd0aCA9IHVy
bC5sZW5ndGgoKTsKIAogICAgIGlmICghbGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvVVJMUGFyc2VyLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1VSTFBhcnNlci5jcHAKaW5kZXggMjkz
NjlhMmEzMWVkMDRhYmVlMGRkNmZmOThkMmIyNmQwNTU2MDhkZi4uOTdmNzcwYjc2NzYwYTU1OWMw
YmQ3ODEzNmE4MWJjZmFjYTM5ZTUwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVVJMUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIuY3BwCkBAIC0yNzkyLDcgKzI3
OTIsNyBAQCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gVVJMUGFyc2VyOjpmb3JtVVJMRGVjb2RlKFN0
cmluZ1ZpZXcgaW5wdXQpCiAgICAgYXV0byB1dGY4ID0gaW5wdXQudXRmOChTdHJpY3RDb252ZXJz
aW9uKTsKICAgICBpZiAodXRmOC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKLSAgICBhdXRvIHBlcmNlbnREZWNvZGVkID0gcGVyY2VudERlY29kZShyZWludGVycHJldF9j
YXN0PGNvbnN0IExDaGFyKj4odXRmOC5kYXRhKCkpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICBhdXRv
IHBlcmNlbnREZWNvZGVkID0gcGVyY2VudERlY29kZSh1dGY4LmNoYXJhY3RlcnM4KCksIHV0Zjgu
bGVuZ3RoKCkpOwogICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4UmVwbGFjaW5nSW52YWxpZFNl
cXVlbmNlcyhwZXJjZW50RGVjb2RlZC5kYXRhKCksIHBlcmNlbnREZWNvZGVkLnNpemUoKSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NmL1VSTENGLmNwcCBiL1NvdXJjZS9XVEYv
d3RmL2NmL1VSTENGLmNwcAppbmRleCAxNDNkYzg1NjYyZjRlN2FkMzMyMjZjMzM0ZmZiYWE1ZDRl
Y2ZmOGU5Li43YzZlNDc3MDRhOGVmZDcwNDkyOTM4MmY1Y2ZjN2I4YTRiYmZiN2MxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9jZi9VUkxDRi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvY2Yv
VVJMQ0YuY3BwCkBAIC01MiwxMCArNTIsMTAgQEAgUmV0YWluUHRyPENGVVJMUmVmPiBVUkw6OmNy
ZWF0ZUNGVVJMKCkgY29uc3QKIHsKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNmVVJMOwogICAg
IGlmIChMSUtFTFkobV9zdHJpbmcuaXM4Qml0KCkgJiYgbV9zdHJpbmcuaXNBbGxBU0NJSSgpKSkK
LSAgICAgICAgY2ZVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMo
bnVsbHB0ciwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KG1fc3RyaW5nLmNoYXJhY3Rl
cnM4KCkpLCBtX3N0cmluZy5sZW5ndGgoKSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBudWxscHRy
LCB0cnVlKSk7CisgICAgICAgIGNmVVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZUFic29sdXRlVVJM
V2l0aEJ5dGVzKG51bGxwdHIsIG1fc3RyaW5nLmNoYXJhY3RlcnM4KCksIG1fc3RyaW5nLmxlbmd0
aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIG51bGxwdHIsIHRydWUpKTsKICAgICBlbHNlIHsK
ICAgICAgICAgQ1N0cmluZyB1dGY4ID0gbV9zdHJpbmcudXRmOCgpOwotICAgICAgICBjZlVSTCA9
IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxscHRyLCByZWludGVy
cHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4odXRmOC5kYXRhKCkpLCB1dGY4Lmxlbmd0aCgpLCBrQ0ZT
dHJpbmdFbmNvZGluZ1VURjgsIG51bGxwdHIsIHRydWUpKTsKKyAgICAgICAgY2ZVUkwgPSBhZG9w
dENGKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMobnVsbHB0ciwgdXRmOC5jaGFyYWN0
ZXJzOCgpLCB1dGY4Lmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIG51bGxwdHIsIHRy
dWUpKTsKICAgICB9CiAKICAgICBpZiAocHJvdG9jb2xJc0luSFRUUEZhbWlseSgpICYmICFpc0NG
VVJMU2FtZU9yaWdpbihjZlVSTC5nZXQoKSwgKnRoaXMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvY29jb2EvVVJMQ29jb2EubW0gYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9VUkxDb2NvYS5t
bQppbmRleCBkMWQxYjFiZGI2YzUyMmJiZGI5OTU3YWIxYTk5Y2M3Nzc2Y2QzM2VkLi41OTE5MDAw
YTJiMjMyY2M4YTNjY2Q1YmQxNjAyYTJhMWQ1MWQwMWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9jb2NvYS9VUkxDb2NvYS5tbQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9VUkxDb2Nv
YS5tbQpAQCAtNzAsMTAgKzcwLDEwIEBAIFJldGFpblB0cjxDRlVSTFJlZj4gVVJMOjpjcmVhdGVD
RlVSTCgpIGNvbnN0CiAKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNmVVJMOwogICAgIGlmIChM
SUtFTFkobV9zdHJpbmcuaXM4Qml0KCkgJiYgbV9zdHJpbmcuaXNBbGxBU0NJSSgpKSkKLSAgICAg
ICAgY2ZVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMobnVsbHB0
ciwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KG1fc3RyaW5nLmNoYXJhY3RlcnM4KCkp
LCBtX3N0cmluZy5sZW5ndGgoKSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBudWxscHRyLCB0cnVl
KSk7CisgICAgICAgIGNmVVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5
dGVzKG51bGxwdHIsIG1fc3RyaW5nLmNoYXJhY3RlcnM4KCksIG1fc3RyaW5nLmxlbmd0aCgpLCBr
Q0ZTdHJpbmdFbmNvZGluZ1VURjgsIG51bGxwdHIsIHRydWUpKTsKICAgICBlbHNlIHsKICAgICAg
ICAgQ1N0cmluZyB1dGY4ID0gbV9zdHJpbmcudXRmOCgpOwotICAgICAgICBjZlVSTCA9IGFkb3B0
Q0YoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxscHRyLCByZWludGVycHJldF9j
YXN0PGNvbnN0IFVJbnQ4Kj4odXRmOC5kYXRhKCkpLCB1dGY4Lmxlbmd0aCgpLCBrQ0ZTdHJpbmdF
bmNvZGluZ1VURjgsIG51bGxwdHIsIHRydWUpKTsKKyAgICAgICAgY2ZVUkwgPSBhZG9wdENGKENG
VVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMobnVsbHB0ciwgdXRmOC5jaGFyYWN0ZXJzOCgp
LCB1dGY4Lmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIG51bGxwdHIsIHRydWUpKTsK
ICAgICB9CiAKICAgICBpZiAocHJvdG9jb2xJc0luSFRUUEZhbWlseSgpICYmICFXVEY6OmlzQ0ZV
UkxTYW1lT3JpZ2luKGNmVVJMLmdldCgpLCAqdGhpcykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9wZXJzaXN0ZW5jZS9QZXJzaXN0ZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bl
cnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuY3BwCmluZGV4IDQ2MzU4YmRjYmY2NTJmNzE0YmE3
NzZhNjJlY2NkY2JlMjQ2NjkxYWIuLjhhMTQ0MTY4NDEyZTVhZTVkMWUwMDM4OGViYTE4YzNlODE5
Yzc2NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRD
b2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2Rl
cnMuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgQ29kZXI8Q1N0cmluZz46OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyLCBjb25zdCBDU3RyaW5nJiBzdHJpbmcpCiAKICAgICB1aW50MzJfdCBsZW5n
dGggPSBzdHJpbmcubGVuZ3RoKCk7CiAgICAgZW5jb2RlciA8PCBsZW5ndGg7Ci0gICAgZW5jb2Rl
ci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
c3RyaW5nLmRhdGEoKSksIGxlbmd0aCk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERh
dGEoc3RyaW5nLmNoYXJhY3RlcnM4KCksIGxlbmd0aCk7CiB9CiAKIHN0ZDo6b3B0aW9uYWw8Q1N0
cmluZz4gQ29kZXI8Q1N0cmluZz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQpAQCAtOTgsNyAr
OTgsNyBAQCB2b2lkIENvZGVyPFN0cmluZz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBTdHJpbmcmIHN0cmluZykKICAgICBlbmNvZGVyIDw8IGxlbmd0aCA8PCBpczhCaXQ7CiAKICAg
ICBpZiAoaXM4Qml0KQotICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzdHJpbmcuY2hhcmFjdGVyczgoKSksIGxlbmd0
aCAqIHNpemVvZihMQ2hhcikpOworICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0
YShzdHJpbmcuY2hhcmFjdGVyczgoKSwgbGVuZ3RoICogc2l6ZW9mKExDaGFyKSk7CiAgICAgZWxz
ZQogICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihzdHJpbmcuY2hhcmFjdGVyczE2KCkpLCBsZW5ndGggKiBzaXplb2Yo
VUNoYXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQ1N0cmluZy5oIGIv
U291cmNlL1dURi93dGYvdGV4dC9DU3RyaW5nLmgKaW5kZXggZTA1ZGFmNzdmNTNlMTVlM2UwNjNh
MzI0ZjczYzJlODZkNzRhMzk4MS4uYTExYTg4Yjg4NjBjZDQzMzllZDY5YzNhODNmNDIwZjc5NzJl
NDI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9DU3RyaW5nLmgKKysrIGIvU291
cmNlL1dURi93dGYvdGV4dC9DU3RyaW5nLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlIDx3
dGYvSGFzaFRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0xDaGFyLmg+CiAKIG5hbWVzcGFjZSBXVEYg
ewogCkBAIC02MSw2ICs2Miw3IEBAIHB1YmxpYzoKICAgICBDU3RyaW5nKCkgeyB9CiAgICAgV1RG
X0VYUE9SVF9QUklWQVRFIENTdHJpbmcoY29uc3QgY2hhciopOwogICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBDU3RyaW5nKGNvbnN0IGNoYXIqLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBDU3RyaW5nKGNv
bnN0IExDaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKSA6IENTdHJpbmcocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjaGFyKj4oZGF0YSksIGxlbmd0aCkgeyB9CiAgICAgQ1N0cmluZyhDU3RyaW5nQnVm
ZmVyKiBidWZmZXIpIDogbV9idWZmZXIoYnVmZmVyKSB7IH0KICAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIENTdHJpbmcgbmV3VW5pbml0aWFsaXplZChzaXplX3QgbGVuZ3RoLCBjaGFyKiYg
Y2hhcmFjdGVyQnVmZmVyKTsKICAgICBDU3RyaW5nKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUp
IDogbV9idWZmZXIoSGFzaFRhYmxlRGVsZXRlZFZhbHVlKSB7IH0KQEAgLTY5LDYgKzcxLDkgQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmRhdGEo
KSA6IG51bGxwdHI7CiAgICAgfQorCisgICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnM4KCkgY29u
c3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGRhdGEoKSk7IH0KKwog
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBjaGFyKiBtdXRhYmxlRGF0YSgpOwogICAgIHNpemVfdCBs
ZW5ndGgoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RG
U3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAppbmRleCA4NmY5
ODM4MGRhMDg1ZWEzMmJmYmMwMDM3MDEwNjk0Mjk5MmMzYTE1Li5hNmQ0ZGQyMzNkZGE2OGRjZDhh
YzIxZDg1YjA4ZDFjZGEyMjVmMTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dU
RlN0cmluZy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCkBAIC02
NjAsNyArNjYwLDcgQEAgQ1N0cmluZyBTdHJpbmc6OmxhdGluMSgpIGNvbnN0CiAgICAgICAgIHJl
dHVybiBDU3RyaW5nKCIiLCAwKTsKIAogICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAgcmV0dXJu
IENTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4odGhpcy0+Y2hhcmFjdGVyczgo
KSksIGxlbmd0aCk7CisgICAgICAgIHJldHVybiBDU3RyaW5nKHRoaXMtPmNoYXJhY3RlcnM4KCks
IGxlbmd0aCk7CiAKICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IHRoaXMtPmNoYXJhY3Rl
cnMxNigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NmL1N0cmluZ0ltcGxD
Ri5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAKaW5kZXggYzA3
NWMwZDRhYzg5MDhhZjI5ZGIyYzUzMzVhYWUzZDljMThmNDMxOC4uMWUyMzY0NzE0ZjhiNzgwYTQ3
MTA2Y2IwOTJlYjg3ZWIzMTJlNGFlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9j
Zi9TdHJpbmdJbXBsQ0YuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvY2YvU3RyaW5nSW1w
bENGLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gU3RyaW5n
SW1wbDo6Y3JlYXRlQ0ZTdHJpbmcoKQogewogICAgIGlmICghbV9sZW5ndGggfHwgIWlzTWFpblRo
cmVhZCgpKSB7CiAgICAgICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAgICAgIHJldHVybiBhZG9w
dENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzKG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgVUludDgqPihjaGFyYWN0ZXJzOCgpKSwgbV9sZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nSVNP
TGF0aW4xLCBmYWxzZSkpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZTdHJpbmdDcmVh
dGVXaXRoQnl0ZXMobnVsbHB0ciwgY2hhcmFjdGVyczgoKSwgbV9sZW5ndGgsIGtDRlN0cmluZ0Vu
Y29kaW5nSVNPTGF0aW4xLCBmYWxzZSkpOwogICAgICAgICByZXR1cm4gYWRvcHRDRihDRlN0cmlu
Z0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVW5p
Q2hhcio+KGNoYXJhY3RlcnMxNigpKSwgbV9sZW5ndGgpKTsKICAgICB9CiAgICAgQ0ZBbGxvY2F0
b3JSZWYgYWxsb2NhdG9yID0gU3RyaW5nV3JhcHBlckNGQWxsb2NhdG9yOjphbGxvY2F0b3IoKTsK
QEAgLTEzMCw3ICsxMzAsNyBAQCBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IFN0cmluZ0ltcGw6OmNy
ZWF0ZUNGU3RyaW5nKCkKIAogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3RyaW5nOwogICAg
IGlmIChpczhCaXQoKSkKLSAgICAgICAgc3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdp
dGhCeXRlc05vQ29weShhbGxvY2F0b3IsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihj
aGFyYWN0ZXJzOCgpKSwgbV9sZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBmYWxz
ZSwga0NGQWxsb2NhdG9yTnVsbCkpOworICAgICAgICBzdHJpbmcgPSBhZG9wdENGKENGU3RyaW5n
Q3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGFsbG9jYXRvciwgY2hhcmFjdGVyczgoKSwgbV9sZW5ndGgs
IGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBmYWxzZSwga0NGQWxsb2NhdG9yTnVsbCkpOwog
ICAgIGVsc2UKICAgICAgICAgc3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhDaGFy
YWN0ZXJzTm9Db3B5KGFsbG9jYXRvciwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVbmlDaGFyKj4o
Y2hhcmFjdGVyczE2KCkpLCBtX2xlbmd0aCwga0NGQWxsb2NhdG9yTnVsbCkpOwogICAgIC8vIENv
cmVGb3VuZGF0aW9uIG1pZ2h0IG5vdCBoYXZlIHRvIGFsbG9jYXRlIGFueXRoaW5nLCB3ZSBjbGVh
ciBjdXJyZW50U3RyaW5nIGluIGNhc2Ugd2UgZGlkIG5vdCBleGVjdXRlIGFsbG9jYXRlKCkuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9M
ZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmNwcAppbmRleCBiMjI4
Mzg5OWZkNjM2MTVkMzY3ZDk4MTg2ZmY4ODc2MWVhMTE4YmVmLi5jZTFjMTk4ZmM2YTRkOWU3NmMw
NDNkYjQ5MWZkODMyZDllNzNiZDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNl
c3Npb25DbGVhcktleS5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgUmVmUHRyPFVpbnQ4QXJyYXk+IENE
TVNlc3Npb25DbGVhcktleTo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5
cGUKICAgICBtX2luaXREYXRhID0gaW5pdERhdGE7CiAKICAgICBib29sIHNhd0Vycm9yID0gZmFs
c2U7Ci0gICAgU3RyaW5nIGtleUlEID0gVVRGOEVuY29kaW5nKCkuZGVjb2RlKHJlaW50ZXJwcmV0
X2Nhc3RfcHRyPGNoYXIqPihtX2luaXREYXRhLT5iYXNlQWRkcmVzcygpKSwgbV9pbml0RGF0YS0+
Ynl0ZUxlbmd0aCgpLCB0cnVlLCBzYXdFcnJvcik7CisgICAgU3RyaW5nIGtleUlEID0gVVRGOEVu
Y29kaW5nKCkuZGVjb2RlKHN0YXRpY19jYXN0PGNoYXIqPihtX2luaXREYXRhLT5iYXNlQWRkcmVz
cygpKSwgbV9pbml0RGF0YS0+Ynl0ZUxlbmd0aCgpLCB0cnVlLCBzYXdFcnJvcik7CiAgICAgaWYg
KHNhd0Vycm9yKSB7CiAgICAgICAgIGVycm9yQ29kZSA9IFdlYktpdE1lZGlhS2V5RXJyb3I6Ok1F
RElBX0tFWUVSUl9DTElFTlQ7CiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IDQ4MzZkMjgxM2ZlNzRiMTJhMmVk
MGEwNWFiYzk5OTk1ZmRiOTBhNDQuLjBkZDhkZmNkNTFmNDk0OGUyNzMzNjhhYjU2ODAxMzViOGFi
NGE3ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKQEAg
LTMwNCw5ICszMDQsOSBAQCBGZXRjaEJvZHk6OlRha2VuRGF0YSBGZXRjaEJvZHk6OnRha2UoKQog
ICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2Rl
KHVybFNlYXJjaFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpF
bnRpdGllcykpOwogCiAgICAgaWYgKGlzQXJyYXlCdWZmZXIoKSkKLSAgICAgICAgcmV0dXJuIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVm
ZmVyQm9keSgpLmRhdGEoKSksIGFycmF5QnVmZmVyQm9keSgpLmJ5dGVMZW5ndGgoKSk7CisgICAg
ICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4o
YXJyYXlCdWZmZXJCb2R5KCkuZGF0YSgpKSwgYXJyYXlCdWZmZXJCb2R5KCkuYnl0ZUxlbmd0aCgp
KTsKICAgICBpZiAoaXNBcnJheUJ1ZmZlclZpZXcoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVy
Vmlld0JvZHkoKS5iYXNlQWRkcmVzcygpKSwgYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJ5dGVMZW5n
dGgoKSk7CisgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJhc2VBZGRyZXNzKCkpLCBhcnJh
eUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKIAogICAgIHJldHVybiBudWxscHRyOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25z
dW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVy
LmNwcAppbmRleCAyYWIwY2FmMTAwZDBjMzEzOGMyYjYyNjQzZDczYjIxZWM2YmU5ZWI4Li42MDY0
NGJmOTk0MTlmYjM3NzYwZDBmY2JiYzZhMDg2ZTc3NTA5OTk0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMjc4LDcgKzI3
OCw3IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlz
ZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiAgICAgICAgICAgICBpZiAoYXV0byBjaHVu
ayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQogICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChj
aHVuay0+ZGF0YSwgY2h1bmstPnNpemUpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVu
dFR5cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGRhdGEtPmRhdGEo
KSksIGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0
YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwgZGF0YS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkpOwogICAgICAgICB9KTsKICAgICAgICAgbV9zaW5rLT5waXBlRnJvbSgqc3RyZWFt
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzU1LDcgKzM1NSw3IEBAIFJlZjxCbG9iPiBGZXRjaEJv
ZHlDb25zdW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQog
ICAgICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKGNvbnRleHQsIFZlY3Rvcjx1aW50OF90PigpLCBC
bG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUobV9jb250ZW50VHlwZSkpOwogCiAgICAgLy8gRklY
TUU6IFdlIHNob3VsZCB0cnkgdG8gbW92ZSBtX2J1ZmZlciB0byBCbG9iIHdpdGhvdXQgZG9pbmcg
ZXh0cmEgY29weS4KLSAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRleHQsIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KG1fYnVmZmVyLT5kYXRhKCkpLCBtX2J1ZmZlci0+
c2l6ZSgpLCBtX2NvbnRlbnRUeXBlKTsKKyAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRleHQs
IG1fYnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCksIG1fY29udGVudFR5cGUpOwogfQog
CiBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQpAQCAtMzY0LDcgKzM2NCw3
IEBAIFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4dCgpCiAgICAgaWYgKCFtX2J1
ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgYXV0byB0ZXh0ID0gVGV4dFJl
c291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWdu
ZWQgY2hhcio+KG1fYnVmZmVyLT5kYXRhKCkpLCBtX2J1ZmZlci0+c2l6ZSgpKTsKKyAgICBhdXRv
IHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgobV9idWZmZXItPmRhdGEo
KSwgbV9idWZmZXItPnNpemUoKSk7CiAgICAgbV9idWZmZXIgPSBudWxscHRyOwogICAgIHJldHVy
biB0ZXh0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCmluZGV4IGU3YzIx
YWVmNWIzMDUxM2FmNWM1Y2U5NmQwZmQzNDRmZjcyNGVkNjYuLjAxYzEzZDVlZGUxYjllNTgzNWQ4
Y2I4M2ZlZmUyNTc4MjhkYTFhNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5j
cHAKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnJl
YWR5VG9TZW5kKCkKICAgICBtX2lzUmVhZHlUb1NlbmQgPSB0cnVlOwogCiAgICAgZm9yIChhdXRv
JiBtZXNzYWdlIDogbV9wZW5kaW5nTWVzc2FnZXMpCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2Vu
ZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBtZXNzYWdlLmlzUmF3LCByZWludGVycHJldF9jYXN0
PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihtZXNzYWdlLmJ1ZmZlci0+ZGF0YSgpKSwgbWVzc2FnZS5i
dWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJ
ZGVudGlmaWVyLCBtZXNzYWdlLmlzUmF3LCBtZXNzYWdlLmJ1ZmZlci0+ZGF0YSgpLCBtZXNzYWdl
LmJ1ZmZlci0+c2l6ZSgpKTsKICAgICBtX3BlbmRpbmdNZXNzYWdlcy5jbGVhcigpOwogCiAgICAg
aWYgKG1faXNQZW5kaW5nQ2xvc2UpCkBAIC0xMDAsNyArMTAwLDcgQEAgYm9vbCBSVENEYXRhQ2hh
bm5lbFJlbW90ZUhhbmRsZXI6OnNlbmRTdHJpbmdEYXRhKGNvbnN0IENTdHJpbmcmIHRleHQpCiAg
ICAgICAgIG1fcGVuZGluZ01lc3NhZ2VzLmFwcGVuZChNZXNzYWdlIHsgZmFsc2UsIFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHRleHQuZGF0YSgpLCB0ZXh0Lmxlbmd0aCgpKSB9KTsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQotICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVu
dGlmaWVyLCBmYWxzZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4odGV4
dC5kYXRhKCkpLCB0ZXh0Lmxlbmd0aCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmREYXRhKG1f
cmVtb3RlSWRlbnRpZmllciwgZmFsc2UsIHRleHQuY2hhcmFjdGVyczgoKSwgdGV4dC5sZW5ndGgo
KSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTExMCw3ICsxMTAsNyBAQCBib29sIFJUQ0Rh
dGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6c2VuZFJhd0RhdGEoY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUpCiAgICAgICAgIG1fcGVuZGluZ01lc3NhZ2VzLmFwcGVuZChNZXNzYWdlIHsg
dHJ1ZSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSkgfSk7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmREYXRhKG1fcmVtb3RlSWRlbnRp
ZmllciwgdHJ1ZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oZGF0YSks
IHNpemUpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCB0
cnVlLCBkYXRhLCBzaXplKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlR1N0cmVh
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRp
b1NvdXJjZUdTdHJlYW1lci5jcHAKaW5kZXggNTZlZDYwMWY0NjVhMDFjMGE3NDNhNTkyNTdhNzU1
OWMxNjcxZTM4NS4uNDUwMTJlMzBlODE4ZmI1ODkzZDQ2MzYzMGJjM2U3YTUxZWIwOTViNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlv
U291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC00Myw4ICs0Myw4IEBAIHN0
YXRpYyBWZWN0b3I8c2l6ZV90PiBjb3B5QnVzRGF0YShBdWRpb0J1cyYgYnVzLCBHc3RCdWZmZXIq
IGJ1ZmZlciwgYm9vbCBpc011dGVkCiAgICAgc2l6ZV90IHNpemUgPSBtYXBwZWRCdWZmZXIuc2l6
ZSgpIC8gYnVzLm51bWJlck9mQ2hhbm5lbHMoKTsKICAgICBmb3IgKHNpemVfdCBjaGFubmVsSW5k
ZXggPSAwOyBjaGFubmVsSW5kZXggPCBidXMubnVtYmVyT2ZDaGFubmVscygpOyArK2NoYW5uZWxJ
bmRleCkgewogICAgICAgICBjb25zdCBhdXRvJiBjaGFubmVsID0gKmJ1cy5jaGFubmVsKGNoYW5u
ZWxJbmRleCk7Ci0gICAgICAgIGF1dG8gb2Zmc2V0ID0gcmVpbnRlcnByZXRfY2FzdDxzaXplX3Q+
KGNoYW5uZWxJbmRleCAqIHNpemUpOwotICAgICAgICBtZW1jcHkocmVpbnRlcnByZXRfY2FzdDxm
bG9hdCo+KG1hcHBlZEJ1ZmZlci5kYXRhKCkgKyBvZmZzZXQpLCBjaGFubmVsLmRhdGEoKSwgc2l6
ZW9mKGZsb2F0KSAqIGNoYW5uZWwubGVuZ3RoKCkpOworICAgICAgICBhdXRvIG9mZnNldCA9IGNo
YW5uZWxJbmRleCAqIHNpemU7CisgICAgICAgIG1lbWNweShtYXBwZWRCdWZmZXIuZGF0YSgpICsg
b2Zmc2V0LCBjaGFubmVsLmRhdGEoKSwgc2l6ZW9mKGZsb2F0KSAqIGNoYW5uZWwubGVuZ3RoKCkp
OwogICAgICAgICBvZmZzZXRzLnVuY2hlY2tlZEFwcGVuZChvZmZzZXQpOwogICAgIH0KICAgICBy
ZXR1cm4gb2Zmc2V0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0
aG4vQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhLmgKaW5kZXggMjM4MGE0MmQ1ZmE1YWNj
OTdhMGYwNmY1ODUxZjg3ZGVjM2NjMDk4Ny4uNTU5MTM2YjIzZjQ0NTQxNWFiZjYyODIwM2Q3ZDBm
ZWJkZmM0ZGNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9B
dXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhLmgKQEAgLTU5LDcgKzU5LDcgQEAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHN0YXRpYyB2b2lkIGVuY29kZUFycmF5QnVmZmVyKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IEFycmF5QnVmZmVyJiBidWZmZXIpCiB7CiAgICAgZW5jb2RlciA8
PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYnVmZmVyLmJ5dGVMZW5ndGgoKSk7Ci0gICAgZW5jb2Rl
ci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
YnVmZmVyLmRhdGEoKSksIGJ1ZmZlci5ieXRlTGVuZ3RoKCksIDEpOworICAgIGVuY29kZXIuZW5j
b2RlRml4ZWRMZW5ndGhEYXRhKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihidWZmZXIuZGF0
YSgpKSwgYnVmZmVyLmJ5dGVMZW5ndGgoKSwgMSk7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+CkBAIC03NSw3ICs3NSw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZlcj4gZGVjb2RlQXJyYXlCdWZm
ZXIoRGVjb2RlciYgZGVjb2RlcikKICAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjp0cnlD
cmVhdGUobGVuZ3RoLnZhbHVlKCksIHNpemVvZih1aW50OF90KSk7CiAgICAgaWYgKCFidWZmZXIp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExl
bmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oYnVmZmVyLT5kYXRhKCkpLCBsZW5n
dGgudmFsdWUoKSwgMSkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShz
dGF0aWNfY2FzdDx1aW50OF90Kj4oYnVmZmVyLT5kYXRhKCkpLCBsZW5ndGgudmFsdWUoKSwgMSkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBidWZmZXI7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5j
cHAKaW5kZXggM2UyNGVhNmY2NTRmOTIxZTQ4NDE3ZmUwZWZjNGMyOGM0YzI1NzljMC4uMGI3MTFi
YWU3MjhmMGE4MjVjYzVmNmZjZDhhZWQyOWZlNTA5NTA3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtNDk1
LDcgKzQ5NSw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6c3RhcnRDbG9zaW5nSGFuZHNoYWtl
KGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKICAgICAgICAgYnVmLmFwcGVuZChoaWdo
Qnl0ZSk7CiAgICAgICAgIGJ1Zi5hcHBlbmQobG93Qnl0ZSk7CiAgICAgICAgIGF1dG8gcmVhc29u
VVRGOCA9IHJlYXNvbi51dGY4KCk7Ci0gICAgICAgIGJ1Zi5hcHBlbmQocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4ocmVhc29uVVRGOC5kYXRhKCkpLCByZWFzb25VVEY4Lmxlbmd0aCgp
KTsKKyAgICAgICAgYnVmLmFwcGVuZChyZWFzb25VVEY4LmNoYXJhY3RlcnM4KCksIHJlYXNvblVU
RjgubGVuZ3RoKCkpOwogICAgIH0KICAgICBlbnF1ZXVlUmF3RnJhbWUoV2ViU29ja2V0RnJhbWU6
Ok9wQ29kZUNsb3NlLCBidWYuZGF0YSgpLCBidWYuc2l6ZSgpKTsKICAgICBSZWY8V2ViU29ja2V0
Q2hhbm5lbD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7IC8vIEFuIGF0dGVtcHQgdG8gc2VuZCBjbG9z
aW5nIGhhbmRzaGFrZSBtYXkgZmFpbCwgd2hpY2ggd2lsbCBnZXQgdGhlIGNoYW5uZWwgY2xvc2Vk
IGFuZCBkZXJlZmVyZW5jZWQuCkBAIC03NDMsNyArNzQzLDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFu
bmVsOjpwcm9jZXNzT3V0Z29pbmdGcmFtZVF1ZXVlKCkKICAgICAgICAgYXV0byBmcmFtZSA9IG1f
b3V0Z29pbmdGcmFtZVF1ZXVlLnRha2VGaXJzdCgpOwogICAgICAgICBzd2l0Y2ggKGZyYW1lLT5m
cmFtZVR5cGUpIHsKICAgICAgICAgY2FzZSBRdWV1ZWRGcmFtZVR5cGVTdHJpbmc6IHsKLSAgICAg
ICAgICAgIHNlbmRGcmFtZShmcmFtZS0+b3BDb2RlLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihmcmFtZS0+c3RyaW5nRGF0YS5kYXRhKCkpLCBmcmFtZS0+c3RyaW5nRGF0YS5sZW5n
dGgoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKGJvb2wgc3VjY2Vz
cykgeworICAgICAgICAgICAgc2VuZEZyYW1lKGZyYW1lLT5vcENvZGUsIGZyYW1lLT5zdHJpbmdE
YXRhLmNoYXJhY3RlcnM4KCksIGZyYW1lLT5zdHJpbmdEYXRhLmxlbmd0aCgpLCBbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoYm9vbCBzdWNjZXNzKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICAgICAgICAgICAgICBmYWlsKCJGYWlsZWQgdG8g
c2VuZCBXZWJTb2NrZXQgZnJhbWUuIik7CiAgICAgICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAK
aW5kZXggYmUyNDQxMjU2MDdiMWJjYzMyMjkzNDc0ZDU0NDg2MmJiNTZhYjZlNC4uNTE5ZmFiM2Vm
ZTEyYThiNWNiMjZkMWM5MGJlOGMzM2JlN2M1ZDhjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKQEAgLTEw
MiwxMSArMTAyLDExIEBAIHN0YXRpYyBTdHJpbmcgZ2VuZXJhdGVTZWNXZWJTb2NrZXRLZXkoKQog
CiBTdHJpbmcgV2ViU29ja2V0SGFuZHNoYWtlOjpnZXRFeHBlY3RlZFdlYlNvY2tldEFjY2VwdChj
b25zdCBTdHJpbmcmIHNlY1dlYlNvY2tldEtleSkKIHsKLSAgICBzdGF0aWMgY29uc3QgY2hhciog
Y29uc3Qgd2ViU29ja2V0S2V5R1VJRCA9ICIyNThFQUZBNS1FOTE0LTQ3REEtOTVDQS1DNUFCMERD
ODVCMTEiOworICAgIGNvbnN0ZXhwciB1aW50OF90IHdlYlNvY2tldEtleUdVSURbXSA9ICIyNThF
QUZBNS1FOTE0LTQ3REEtOTVDQS1DNUFCMERDODVCMTEiOwogICAgIFNIQTEgc2hhMTsKICAgICBD
U3RyaW5nIGtleURhdGEgPSBzZWNXZWJTb2NrZXRLZXkuYXNjaWkoKTsKLSAgICBzaGExLmFkZEJ5
dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGtleURhdGEuZGF0YSgpKSwga2V5
RGF0YS5sZW5ndGgoKSk7Ci0gICAgc2hhMS5hZGRCeXRlcyhyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPih3ZWJTb2NrZXRLZXlHVUlEKSwgc3RybGVuKHdlYlNvY2tldEtleUdVSUQpKTsK
KyAgICBzaGExLmFkZEJ5dGVzKGtleURhdGEuY2hhcmFjdGVyczgoKSwga2V5RGF0YS5sZW5ndGgo
KSk7CisgICAgc2hhMS5hZGRCeXRlcyh3ZWJTb2NrZXRLZXlHVUlELCBzdGQ6OnNpemUod2ViU29j
a2V0S2V5R1VJRCkgLSAxKTsKICAgICBTSEExOjpEaWdlc3QgaGFzaDsKICAgICBzaGExLmNvbXB1
dGVIYXNoKGhhc2gpOwogICAgIHJldHVybiBiYXNlNjRFbmNvZGVUb1N0cmluZyhoYXNoLmRhdGEo
KSwgU0hBMTo6aGFzaFNpemUpOwpAQCAtMzI4LDggKzMyOCw4IEBAIFVSTCBXZWJTb2NrZXRIYW5k
c2hha2U6Omh0dHBVUkxGb3JBdXRoZW50aWNhdGlvbkFuZENvb2tpZXMoKSBjb25zdAogLy8gIlRo
ZSBIVFRQIHZlcnNpb24gTVVTVCBiZSBhdCBsZWFzdCAxLjEuIgogc3RhdGljIGlubGluZSBib29s
IGhlYWRlckhhc1ZhbGlkSFRUUFZlcnNpb24oU3RyaW5nVmlldyBodHRwU3RhdHVzTGluZSkKIHsK
LSAgICBjb25zdCBjaGFyKiBodHRwVmVyc2lvblN0YXRpY1ByZWFtYmxlTGl0ZXJhbCA9ICJIVFRQ
LyI7Ci0gICAgU3RyaW5nVmlldyBodHRwVmVyc2lvblN0YXRpY1ByZWFtYmxlKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgTENoYXIqPihodHRwVmVyc2lvblN0YXRpY1ByZWFtYmxlTGl0ZXJhbCksIHN0
cmxlbihodHRwVmVyc2lvblN0YXRpY1ByZWFtYmxlTGl0ZXJhbCkpOworICAgIGNvbnN0ZXhwciBj
aGFyIGh0dHBWZXJzaW9uU3RhdGljUHJlYW1ibGVMaXRlcmFsW10gPSAiSFRUUC8iOworICAgIFN0
cmluZ1ZpZXcgaHR0cFZlcnNpb25TdGF0aWNQcmVhbWJsZShodHRwVmVyc2lvblN0YXRpY1ByZWFt
YmxlTGl0ZXJhbCwgc3RybGVuKGh0dHBWZXJzaW9uU3RhdGljUHJlYW1ibGVMaXRlcmFsKSk7CiAg
ICAgaWYgKCFodHRwU3RhdHVzTGluZS5zdGFydHNXaXRoKGh0dHBWZXJzaW9uU3RhdGljUHJlYW1i
bGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCmluZGV4IDlkOWU1MmRh
ZWMwYzA0ZWQyMTYxZWI4MjU2YWZhNjc3NTUxNWUyNDguLmM0NTJjODNmYmQ1Y2U4OTViZGQwMzFh
Y2YxNDY4Zjc4NjUwNjIyZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaApAQCAtNTIsMTIgKzUyLDEyIEBAIHB1
YmxpYzoKICAgICAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgICAgIGlmICgh
bV9jb250YWluc09ubHlBU0NJSSkgewotICAgICAgICAgICAgbV9jb250YWluc09ubHlBU0NJSSA9
IGNoYXJhY3RlcnNBcmVBbGxBU0NJSShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4obV9z
Y3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5z
aXplKCkpOworICAgICAgICAgICAgbV9jb250YWluc09ubHlBU0NJSSA9IGNoYXJhY3RlcnNBcmVB
bGxBU0NJSShtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5i
dWZmZXIoKS0+c2l6ZSgpKTsKICAgICAgICAgICAgIGlmICgqbV9jb250YWluc09ubHlBU0NJSSkK
LSAgICAgICAgICAgICAgICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNo
QW5kTWFza1RvcDhCaXRzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihtX3NjcmlwdEJ1
ZmZlci5idWZmZXIoKS0+ZGF0YSgpKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7
CisgICAgICAgICAgICAgICAgbV9zY3JpcHRIYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFz
aEFuZE1hc2tUb3A4Qml0cyhtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBtX3Njcmlw
dEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKICAgICAgICAgfQogICAgICAgICBpZiAoKm1fY29u
dGFpbnNPbmx5QVNDSUkpCi0gICAgICAgICAgICByZXR1cm4geyByZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4obV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSksIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKSB9OworICAgICAgICAg
ICAgcmV0dXJuIHsgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpIH07CiAKICAgICAgICAg
aWYgKCFtX2NhY2hlZFNjcmlwdFN0cmluZykgewogICAgICAgICAgICAgbV9jYWNoZWRTY3JpcHRT
dHJpbmcgPSBtX3NjcmlwdEJ1ZmZlci50b1N0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggNmM2NGEwNDRm
NTYwZmY0MjkwOGM5MGNmNGM3YzI0NmFkNjdhYzg4Zi4uMGI3ZmRhNGQ4ZDYwZTk5MTUzYTQ0ZjEx
NGFlZjEwNGFhZWU3ZGZmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0yMzQwLDcgKzIzNDAsNyBAQCBwcml2YXRl
OgogICAgICAgICBpZiAoaXM4Qml0KSB7CiAgICAgICAgICAgICBpZiAoKGVuZCAtIHB0cikgPCBz
dGF0aWNfY2FzdDxpbnQ+KGxlbmd0aCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgc3RyID0gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihw
dHIpLCBsZW5ndGgpOworICAgICAgICAgICAgc3RyID0gU3RyaW5nIHsgcHRyLCBsZW5ndGggfTsK
ICAgICAgICAgICAgIHB0ciArPSBsZW5ndGg7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvU2Vy
aWFsaXplZE5GQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9TZXJpYWxp
emVkTkZBLmNwcAppbmRleCAwYjMzMzg5YTc2OTI1MDBmMjQ0ZmVmNDhiNzIxNzI1YzNmN2ZhMTNl
Li4wNGM2ZGE1YTg0OGQwODkxZjMzZjRmODM5ZGE5NTJiOGM3Njc5YTA5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9TZXJpYWxpemVkTkZBLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9TZXJpYWxpemVkTkZBLmNwcApAQCAtMTA3
LDcgKzEwNyw3IEBAIFNlcmlhbGl6ZWRORkE6OlNlcmlhbGl6ZWRORkEoRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGEmJiBmaWxlLCBNZXRhZGF0YSYmIG1ldGFkCiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgogY29uc3QgVCogU2VyaWFsaXplZE5GQTo6cG9pbnRlckF0T2Zmc2V0SW5GaWxlKHNpemVfdCBv
ZmZzZXQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fZmlsZS5kYXRhKCkpICsgb2Zmc2V0KTsK
KyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4oc3RhdGljX2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KG1fZmlsZS5kYXRhKCkpICsgb2Zmc2V0KTsKIH0KIAogYXV0byBTZXJpYWxpemVk
TkZBOjpub2RlcygpIGNvbnN0IC0+IGNvbnN0IFJhbmdlPEltbXV0YWJsZU5GQU5vZGU+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5jcHAKaW5kZXggZmRhYmNkM2U3Yjg5MmU1MDFkODc5NDMyYWM0NmMzZDcxM2Y4ZWIwMC4u
MGVlMDdkYmU2YTIxZThiMjBlYmJlN2I1ZGJiMWZmMTQyYWUzOWRmOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNw
cApAQCAtMTYwMCwxMCArMTYwMCwxMCBAQCBFeGNlcHRpb25Pcjx2b2lkPiBOb2RlOjpzZXRUZXh0
Q29udGVudChjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotc3RhdGlj
IFNIQTE6OkRpZ2VzdCBoYXNoUG9pbnRlcih2b2lkKiBwb2ludGVyKQorc3RhdGljIFNIQTE6OkRp
Z2VzdCBoYXNoUG9pbnRlcihjb25zdCB2b2lkKiBwb2ludGVyKQogewogICAgIFNIQTEgc2hhMTsK
LSAgICBzaGExLmFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KCZwb2lu
dGVyKSwgc2l6ZW9mKHBvaW50ZXIpKTsKKyAgICBzaGExLmFkZEJ5dGVzKHN0YXRpY19jYXN0PGNv
bnN0IHVpbnQ4X3QqPihwb2ludGVyKSwgc2l6ZW9mKHBvaW50ZXIpKTsKICAgICBTSEExOjpEaWdl
c3QgZGlnZXN0OwogICAgIHNoYTEuY29tcHV0ZUhhc2goZGlnZXN0KTsKICAgICByZXR1cm4gZGln
ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UZXh0RW5jb2Rlci5jcHAKaW5kZXggZDZkMTQ0M2Q0ZmY5ODUzNzFh
MGI4ZGZkNTViZmVjOTRiNWIzZmM1NS4uMGFiOWYxNDdmMDllYTFlMzY4Zjk1YmUzN2I5Y2RmMTJk
YmM3MDc4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEVuY29kZXIuY3BwCkBAIC00MCw3ICs0MCw3IEBA
IFJlZlB0cjxVaW50OEFycmF5PiBUZXh0RW5jb2Rlcjo6ZW5jb2RlKFN0cmluZyYmIGlucHV0KSBj
b25zdAogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IG5lZWQgdG8gYWxsb2NhdGUgYSBD
U3RyaW5nIHRvIGVuY29kZSBpbnRvIGEgVWludDhBcnJheS4KICAgICBDU3RyaW5nIHV0ZjggPSBp
bnB1dC51dGY4KCk7Ci0gICAgcmV0dXJuIFVpbnQ4QXJyYXk6OnRyeUNyZWF0ZShyZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih1dGY4LmRhdGEoKSksIHV0ZjgubGVuZ3RoKCkpOworICAg
IHJldHVybiBVaW50OEFycmF5Ojp0cnlDcmVhdGUodXRmOC5jaGFyYWN0ZXJzOCgpLCB1dGY4Lmxl
bmd0aCgpKTsKIH0KIAogYXV0byBUZXh0RW5jb2Rlcjo6ZW5jb2RlSW50byhTdHJpbmcmJiBpbnB1
dCwgUmVmPFVpbnQ4QXJyYXk+JiYgYXJyYXkpIC0+IEVuY29kZUludG9SZXN1bHQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RW5jb2RlclN0cmVhbUVuY29kZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyU3RyZWFtRW5jb2Rlci5jcHAKaW5kZXggY2UxMDg2
NzdiOTY2NWQ3NTY4MTJlYWRiYTIzZjViMjMwOWI1NDZmZi4uYTEwNGZkZjE0Y2MyMGQyZTE4NDk0
YTRhMjNkNWYzYTQ0ZDNlYmJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRF
bmNvZGVyU3RyZWFtRW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNv
ZGVyU3RyZWFtRW5jb2Rlci5jcHAKQEAgLTc3LDggKzc3LDggQEAgUmVmUHRyPFVpbnQ4QXJyYXk+
IFRleHRFbmNvZGVyU3RyZWFtRW5jb2Rlcjo6Zmx1c2goKQogICAgIGlmICghbV9wZW5kaW5nSGln
aFN1cnJvZ2F0ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBhdXRvIGJ5dGVTZXF1
ZW5jZSA9ICJceEVGXHhCRlx4QkQiOwotICAgIHJldHVybiBVaW50OEFycmF5Ojp0cnlDcmVhdGUo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYnl0ZVNlcXVlbmNlKSwgMyk7CisgICAg
Y29uc3RleHByIHVpbnQ4X3QgYnl0ZVNlcXVlbmNlW10gPSB7IDB4RUYsIDB4QkYsIDB4QkQgfTsK
KyAgICByZXR1cm4gVWludDhBcnJheTo6dHJ5Q3JlYXRlKGJ5dGVTZXF1ZW5jZSwgc3RkOjpzaXpl
KGJ5dGVTZXF1ZW5jZSkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCmluZGV4IGE0ZTUzMjMxOTkzM2YwYTg2
MTJkMmMyMjUxODI5OGQ1OWQ0ZTk2YjIuLjc4MDhhZjlhMzVkZDhhMWUxYTdhYzA0NzE0NmRkZTYx
M2EwM2JkZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29u
dGVudFJlYWRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2Vi
Q29udGVudFJlYWRlckNvY29hLm1tCkBAIC00ODYsNyArNDg2LDcgQEAgc3RhdGljIFN0cmluZyBz
YW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0
aW9uRG9jdW0KICAgICAgICAgQ1N0cmluZyB1dGY4ID0gc3ViZnJhbWVNYXJrdXAudXRmOCgpOwog
ICAgICAgICBWZWN0b3I8dWludDhfdD4gYmxvYkJ1ZmZlcjsKICAgICAgICAgYmxvYkJ1ZmZlci5y
ZXNlcnZlQ2FwYWNpdHkodXRmOC5sZW5ndGgoKSk7Ci0gICAgICAgIGJsb2JCdWZmZXIuYXBwZW5k
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHV0ZjguZGF0YSgpKSwgdXRmOC5sZW5n
dGgoKSk7CisgICAgICAgIGJsb2JCdWZmZXIuYXBwZW5kKHV0ZjguY2hhcmFjdGVyczgoKSwgdXRm
OC5sZW5ndGgoKSk7CiAgICAgICAgIGF1dG8gYmxvYiA9IEJsb2I6OmNyZWF0ZSgmZGVzdGluYXRp
b25Eb2N1bWVudCwgV1RGTW92ZShibG9iQnVmZmVyKSwgdHlwZSk7CiAKICAgICAgICAgU3RyaW5n
IHN1YmZyYW1lQmxvYlVSTCA9IERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRlc3RpbmF0aW9uRG9j
dW1lbnQsIGJsb2IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCA2ZDdjOWM4YjBkODM0YjliZTNkODQ1
NGIyMjEzYWUwZGExNGE2NjhiLi4wMjZjZWJiMmIyNzhiMzg3NTAyZTMwMjY5NDg0MDg2OTRmYmVi
NzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtNDk2Miw3ICs0OTYyLDcgQEAgdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp0ZXhJbWFnZUFycmF5QnVmZmVyVmlld0hlbHBlcihUZXhJbWFn
ZUZ1bmN0aW9uSUQKICAgICAgICAgc291cmNlVHlwZSA9IFRleEltYWdlRGltZW5zaW9uOjpUZXgz
RDsKICAgICBpZiAoIXZhbGlkYXRlVGV4RnVuY0RhdGEoZnVuY3Rpb25OYW1lLCBzb3VyY2VUeXBl
LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMuZ2V0KCksIG51bGxE
aXNwb3NpdGlvbiwgc3JjT2Zmc2V0KSkKICAgICAgICAgcmV0dXJuOwotICAgIHVpbnQ4X3QqIGRh
dGEgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihwaXhlbHMgPyBwaXhlbHMtPmJhc2VBZGRy
ZXNzKCkgOiBudWxscHRyKTsKKyAgICBhdXRvIGRhdGEgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4o
cGl4ZWxzID8gcGl4ZWxzLT5iYXNlQWRkcmVzcygpIDogbnVsbHB0cik7CiAgICAgaWYgKHNyY09m
ZnNldCkgewogICAgICAgICBBU1NFUlQocGl4ZWxzKTsKICAgICAgICAgLy8gTm8gbmVlZCB0byBj
aGVjayBvdmVyZmxvdyBiZWNhdXNlIHZhbGlkYXRlVGV4RnVuY0RhdGEoKSBhbHJlYWR5IGRpZC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKaW5kZXggMWYz
OTRiYTk3YzhmZjJhZTU0MmNlNjIxMmViNTM2MGFjYzUzNjQxMy4uMGU5ZGU1MmRlMTBlNzUzNjBi
NTUwOWE5NTA1MmRkZjc2OTg1NGQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RP
TVBhdGNoU3VwcG9ydC5jcHAKQEAgLTM5Nyw3ICszOTcsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBE
T01QYXRjaFN1cHBvcnQ6OmlubmVyUGF0Y2hDaGlsZHJlbihDb250YWluZXJOb2RlJiBwYXJlbnRO
b2RlLAogc3RhdGljIHZvaWQgYWRkU3RyaW5nVG9TSEExKFNIQTEmIHNoYTEsIGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKQogewogICAgIENTdHJpbmcgY1N0cmluZyA9IHN0cmluZy51dGY4KCk7Ci0gICAg
c2hhMS5hZGRCeXRlcyhyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihjU3RyaW5nLmRh
dGEoKSksIGNTdHJpbmcubGVuZ3RoKCkpOworICAgIHNoYTEuYWRkQnl0ZXMoY1N0cmluZy5jaGFy
YWN0ZXJzOCgpLCBjU3RyaW5nLmxlbmd0aCgpKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPERPTVBh
dGNoU3VwcG9ydDo6RGlnZXN0PiBET01QYXRjaFN1cHBvcnQ6OmNyZWF0ZURpZ2VzdChOb2RlJiBu
b2RlLCBVbnVzZWROb2Rlc01hcCogdW51c2VkTm9kZXNNYXApCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHAKaW5kZXggMjJiMmJkNzcxYzRmZDM0YzVhY2I0
Yzg2MTA2ZjdmYTkyOTY4YmVlOC4uNDc3MDJhNTc0Y2M4YmY0MmFmOTYzNTYxNTBiNjFiOTY3Y2Fh
ZmFhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNvdXJjZURlY29k
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNw
cApAQCAtMzMzLDcgKzMzMyw3IEBAIFN0cmluZyBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJv
bVVURjgoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuCiAgICAgYXV0byBk
ZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L3BsYWluIiwgIlVURi04
Iik7CiAgICAgaWYgKHNob3VsZFByZXBlbmRCT00oZGF0YSwgbGVuZ3RoKSkKICAgICAgICAgZGVj
b2Rlci0+ZGVjb2RlKCJceGVmXHhiYlx4YmYiLCAzKTsKLSAgICByZXR1cm4gZGVjb2Rlci0+ZGVj
b2RlQW5kRmx1c2gocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIGxlbmd0aCk7
CisgICAgcmV0dXJuIGRlY29kZXItPmRlY29kZUFuZEZsdXNoKGRhdGEsIGxlbmd0aCk7CiB9CiAK
IHZvaWQgVGV4dFJlc291cmNlRGVjb2Rlcjo6c2V0RW5jb2RpbmcoY29uc3QgVGV4dEVuY29kaW5n
JiBlbmNvZGluZywgRW5jb2RpbmdTb3VyY2Ugc291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcAppbmRleCAxNzQ2YTM4OTk1MmU4YTQ3Y2Q3ZTA0N2I5
OWFiNDIzNWYzMmZlYmEwLi5kYzEwMWNiZTA2ZDliM2YwMjhiN2FhODExNTdiOTQ4NzE5MmVhNmYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcApAQCAt
NjIsNyArNjIsNyBAQCBTdHJpbmdWaWV3IENhY2hlZFNjcmlwdDo6c2NyaXB0KCkKICAgICBpZiAo
bV9kZWNvZGluZ1N0YXRlID09IE5ldmVyRGVjb2RlZAogICAgICAgICAmJiBUZXh0RW5jb2Rpbmco
ZW5jb2RpbmcoKSkuaXNCeXRlQmFzZWRFbmNvZGluZygpCiAgICAgICAgICYmIG1fZGF0YS0+c2l6
ZSgpCi0gICAgICAgICYmIGNoYXJhY3RlcnNBcmVBbGxBU0NJSShyZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4obV9kYXRhLT5kYXRhKCkpLCBtX2RhdGEtPnNpemUoKSkpIHsKKyAgICAgICAg
JiYgY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkp
IHsKIAogICAgICAgICBtX2RlY29kaW5nU3RhdGUgPSBEYXRhQW5kRGVjb2RlZFN0cmluZ0hhdmVT
YW1lQnl0ZXM7CiAKQEAgLTcwLDExICs3MCwxMSBAQCBTdHJpbmdWaWV3IENhY2hlZFNjcmlwdDo6
c2NyaXB0KCkKICAgICAgICAgc2V0RGVjb2RlZFNpemUoMCk7CiAgICAgICAgIG1fZGVjb2RlZERh
dGFEZWxldGlvblRpbWVyLnN0b3AoKTsKIAotICAgICAgICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdI
YXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
TENoYXIqPihtX2RhdGEtPmRhdGEoKSksIG1fZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgbV9zY3Jp
cHRIYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhtX2RhdGEt
PmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOwogICAgIH0KIAogICAgIGlmIChtX2RlY29kaW5nU3Rh
dGUgPT0gRGF0YUFuZERlY29kZWRTdHJpbmdIYXZlU2FtZUJ5dGVzKQotICAgICAgICByZXR1cm4g
eyByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4obV9kYXRhLT5kYXRhKCkpLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4obV9kYXRhLT5zaXplKCkpIH07CisgICAgICAgIHJldHVybiB7IG1fZGF0
YS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9kYXRhLT5zaXplKCkpIH07CiAKICAg
ICBpZiAoIW1fc2NyaXB0KSB7CiAgICAgICAgIG1fc2NyaXB0ID0gbV9kZWNvZGVyLT5kZWNvZGVB
bmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZW5jb2RlZFNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0KaW5kZXgg
ZTUxOWJlN2E4NGIwMTQ1NGI0NjNmNmRjMzU4NDM3MDA3MjhmYzhiNi4uMjlkZjhjNmIyYTA3MDk1
YWVkNzlmNWViZjNiNDU1ZTNjYjhjOWJjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9jb2NvYS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbQpAQCAtMjY5LDcgKzI2OSw3
IEBAIHN0YXRpYyB2b2lkIHNob3dUZXh0KENHQ29udGV4dFJlZiBjb250ZXh0LCBmbG9hdCB4LCBm
bG9hdCB5LCBDR0NvbG9yUmVmIGNvbG9yLCBjCiAgICAgQ0ZUeXBlUmVmIHZhbHVlc1tdID0geyBm
b250LmdldCgpLCBrQ0ZCb29sZWFuVHJ1ZSB9OwogICAgIGF1dG8gYXR0cmlidXRlcyA9IGFkb3B0
Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtleXMsIHZhbHVlcywg
V1RGX0FSUkFZX0xFTkdUSChrZXlzKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAm
a0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogICAgIENTdHJpbmcgY3N0ciA9IHRl
eHQuYXNjaWkoKTsKLSAgICBhdXRvIHN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRo
Qnl0ZXNOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBV
SW50OCo+KGNzdHIuZGF0YSgpKSwgY3N0ci5sZW5ndGgoKSwga0NGU3RyaW5nRW5jb2RpbmdBU0NJ
SSwgZmFsc2UsIGtDRkFsbG9jYXRvck51bGwpKTsKKyAgICBhdXRvIHN0cmluZyA9IGFkb3B0Q0Yo
Q0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXNOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgY3N0ci5j
aGFyYWN0ZXJzOCgpLCBjc3RyLmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ0FTQ0lJLCBmYWxz
ZSwga0NGQWxsb2NhdG9yTnVsbCkpOwogICAgIGF1dG8gYXR0cmlidXRlZFN0cmluZyA9IGFkb3B0
Q0YoQ0ZBdHRyaWJ1dGVkU3RyaW5nQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0cmluZy5n
ZXQoKSwgYXR0cmlidXRlcy5nZXQoKSkpOwogICAgIGF1dG8gbGluZSA9IGFkb3B0Q0YoQ1RMaW5l
Q3JlYXRlV2l0aEF0dHJpYnV0ZWRTdHJpbmcoYXR0cmlidXRlZFN0cmluZy5nZXQoKSkpOwogICAg
IENHQ29udGV4dFNldFRleHRQb3NpdGlvbihjb250ZXh0LCB4LCB5KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAppbmRleCBhMTEwZDEzOTMwZTg2MTEz
MDdkZDA1NWZmMmE0NzAwY2Y0ZTljOWUzLi44OTVlYmUwNTFmMTUyYTdhODNhNDVjN2I5MGRkYzBj
MjcwYTQ5ZWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRC
dWZmZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVy
Q0YuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIFJldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlQ0ZEYXRhKCkgY29uc3QKICAgICAgICAgaWYgKGF1dG8gZGF0YSA9IFdURjo6Z2V0
X2lmPFJldGFpblB0cjxDRkRhdGFSZWY+PihtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPm1faW1tdXRh
YmxlRGF0YSkpCiAgICAgICAgICAgICByZXR1cm4gKmRhdGE7CiAgICAgfQotICAgIHJldHVybiBh
ZG9wdENGKENGRGF0YUNyZWF0ZShudWxscHRyLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4
Kj4oZGF0YSgpKSwgc2l6ZSgpKSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKG51
bGxwdHIsIGRhdGEoKSwgc2l6ZSgpKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKaW5kZXgg
MjFjYzFlYmU0YTkwMWExM2M3NDQwM2RjMDFjZjJmYzgxODEzMDEyZC4uMGMzMTk4MTdjZTc2NTYx
MWFlZDJjZjRkYjQ5NjM3NjQ0NGViZGQxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCkBAIC00MCw3ICs0MCw3
IEBAIHZvaWQgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZW5jb2RlU3RyaW5nKGNvbnN0IFN0cmluZyYg
a2V5KQogewogICAgIGF1dG8gdXRmOCA9IGtleS51dGY4KCk7CiAgICAgbV9lbmNvZGVyIDw8IHV0
ZjgubGVuZ3RoKCk7Ci0gICAgbV9lbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih1dGY4LmRhdGEoKSksIHV0ZjgubGVuZ3RoKCkpOwor
ICAgIG1fZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEodXRmOC5jaGFyYWN0ZXJzOCgpLCB1
dGY4Lmxlbmd0aCgpKTsKIH0KIAogdm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjplbmNvZGVCeXRl
cyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBzaXplKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0R0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0R0wuY3BwCmluZGV4IDdlZTRhNzY5MGU5NWUyNzZhZGJiOTQ4OGFiOTE1NmZkZTc3YzliYjEu
LmE3YTkzODBkZjI3MWU1YTZkZTkxNDg0NTFkM2I4MzJmZGQzOTU1NjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAK
QEAgLTc1Nyw3ICs3NTcsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMOjpwYWNrSW1hZ2VEYXRh
KEltYWdlKiBpbWFnZSwgY29uc3Qgdm9pZCogcGl4ZWxzLCBHQ0dMZW51bQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgZGF0YS5yZXNpemUocGFja2VkU2l6ZSk7CiAKLSAgICBpZiAoIXBhY2tQ
aXhlbHMocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocGl4ZWxzKSwgc291cmNlRm9y
bWF0LCBzb3VyY2VJbWFnZVdpZHRoLCBzb3VyY2VJbWFnZUhlaWdodCwgc291cmNlSW1hZ2VTdWJS
ZWN0YW5nbGUsIGRlcHRoLCBzb3VyY2VVbnBhY2tBbGlnbm1lbnQsIHVucGFja0ltYWdlSGVpZ2h0
LCBmb3JtYXQsIHR5cGUsIGFscGhhT3AsIGRhdGEuZGF0YSgpLCBmbGlwWSkpCisgICAgaWYgKCFw
YWNrUGl4ZWxzKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMpLCBzb3VyY2VGb3Jt
YXQsIHNvdXJjZUltYWdlV2lkdGgsIHNvdXJjZUltYWdlSGVpZ2h0LCBzb3VyY2VJbWFnZVN1YlJl
Y3RhbmdsZSwgZGVwdGgsIHNvdXJjZVVucGFja0FsaWdubWVudCwgdW5wYWNrSW1hZ2VIZWlnaHQs
IGZvcm1hdCwgdHlwZSwgYWxwaGFPcCwgZGF0YS5kYXRhKCksIGZsaXBZKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIGlmIChJbWFnZU9ic2VydmVyKiBvYnNlcnZlciA9IGltYWdlLT5pbWFn
ZU9ic2VydmVyKCkpCiAgICAgICAgIG9ic2VydmVyLT5kaWREcmF3KCppbWFnZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5k
LmNwcAppbmRleCBhZDVkM2U0ZjMyN2VlZjQ4Nzg1OWNiYzQxNWI3NTZkMTFlMDQ1ZmE3Li5kMjg3
N2Q2ODMwYzNiYzhhMDQyMThmNmJhMzM0NGYzMGZhYmY4NmJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAKQEAg
LTExOCw3ICsxMTgsNyBAQCBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBJbWFnZUJ1ZmZlckJh
Y2tlbmQ6OmdldFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRgogICAgIENvbnN0UGl4ZWxC
dWZmZXJDb252ZXJzaW9uVmlldyBzb3VyY2UgewogICAgICAgICB7IEFscGhhUHJlbXVsdGlwbGlj
YXRpb246OlByZW11bHRpcGxpZWQsIHBpeGVsRm9ybWF0KCksIGNvbG9yU3BhY2UoKSB9LAogICAg
ICAgICBieXRlc1BlclJvdygpLAotICAgICAgICByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihk
YXRhKSArIHNvdXJjZVJlY3RDbGlwcGVkLnkoKSAqIHNvdXJjZS5ieXRlc1BlclJvdyArIHNvdXJj
ZVJlY3RDbGlwcGVkLngoKSAqIDQKKyAgICAgICAgc3RhdGljX2Nhc3Q8dWludDhfdCo+KGRhdGEp
ICsgc291cmNlUmVjdENsaXBwZWQueSgpICogc291cmNlLmJ5dGVzUGVyUm93ICsgc291cmNlUmVj
dENsaXBwZWQueCgpICogNAogICAgIH07CiAgICAgCiAgICAgUGl4ZWxCdWZmZXJDb252ZXJzaW9u
VmlldyBkZXN0aW5hdGlvbiB7CkBAIC0xNTksNyArMTU5LDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckJh
Y2tlbmQ6OnB1dFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyJiBzb3VyY2VQaXhlbEJ1ZmZl
ciwgY28KICAgICBQaXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3IGRlc3RpbmF0aW9uIHsKICAgICAg
ICAgeyBkZXN0aW5hdGlvbkFscGhhRm9ybWF0LCBwaXhlbEZvcm1hdCgpLCBjb2xvclNwYWNlKCkg
fSwKICAgICAgICAgYnl0ZXNQZXJSb3coKSwKLSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx1aW50
OF90Kj4oZGF0YSkgKyBkZXN0aW5hdGlvblJlY3QueSgpICogZGVzdGluYXRpb24uYnl0ZXNQZXJS
b3cgKyBkZXN0aW5hdGlvblJlY3QueCgpICogNAorICAgICAgICBzdGF0aWNfY2FzdDx1aW50OF90
Kj4oZGF0YSkgKyBkZXN0aW5hdGlvblJlY3QueSgpICogZGVzdGluYXRpb24uYnl0ZXNQZXJSb3cg
KyBkZXN0aW5hdGlvblJlY3QueCgpICogNAogICAgIH07CiAKICAgICBjb252ZXJ0SW1hZ2VQaXhl
bHMoc291cmNlLCBkZXN0aW5hdGlvbiwgZGVzdGluYXRpb25SZWN0LnNpemUoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAKaW5kZXggMWU2MmNj
ZjdhNWEzN2EzOTVlNTNmMjMzZTY2OTVjMjczNDQ4NmMzNy4uM2ZhOTYwOWUxYWY1ZDcxYmFiZDU0
ZGNjNDEyYzY2OTI3MjkwYTNhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0
VHJhY2tQcml2YXRlQVZGLmNwcApAQCAtNTMxLDcgKzUzMSw3IEBAIHZvaWQgSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc05hdGl2ZVNhbXBsZXMoQ0ZBcnJheVJlZiBuYXRpdmVTYW1w
bGVzLCBjCiAgICAgICAgICAgICAvLyBBIFdlYlZUVCBoZWFkZXIgaXMgdGVybWluYXRlZCBieSAi
T25lIG9yIG1vcmUgV2ViVlRUIGxpbmUgdGVybWluYXRvcnMiIHNvIGFwcGVuZCB0d28gbGluZSBm
ZWVkcyB0byBtYWtlIHN1cmUgdGhlIHBhcnNlcgogICAgICAgICAgICAgLy8gcmVjY29nbml6ZWQg
dGhpcyBzdHJpbmcgYXMgYSBmdWxsIGhlYWRlci4KICAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIg
aGVhZGVyOwotICAgICAgICAgICAgaGVhZGVyLmFwcGVuZENoYXJhY3RlcnMocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oQ0ZEYXRhR2V0Qnl0ZVB0cih3ZWJ2dHRIZWFkZXJE
YXRhKSksIGxlbmd0aCk7CisgICAgICAgICAgICBoZWFkZXIuYXBwZW5kQ2hhcmFjdGVycyhDRkRh
dGFHZXRCeXRlUHRyKHdlYnZ0dEhlYWRlckRhdGEpLCBsZW5ndGgpOwogICAgICAgICAgICAgaGVh
ZGVyLmFwcGVuZCgiXG5cbiIpOwogCiAgICAgICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVS
LCAiVlRUIGhlYWRlciAiLCAmaGVhZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Yu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NE
TVNlc3Npb25BVkZvdW5kYXRpb25DRi5jcHAKaW5kZXggNzA5YzA4MGQ0ZmZiMDIxM2M4ZGI2ZmRk
NGM4YmY3OGE3ZTEyNTY2Yy4uZDVmNzI1NjI0MGUyMTRmODA1MDA3ZjFkNGFkNDg5NzBlZTIxNjQw
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25D
Ri5jcHAKQEAgLTc0LDExICs3NCwxMSBAQCBSZWZQdHI8VWludDhBcnJheT4gQ0RNU2Vzc2lvbkFW
Rm91bmRhdGlvbkNGOjpnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiwgVQogICAgIH0K
IAogICAgIGF1dG8gY2VydGlmaWNhdGVEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGNlcnRpZmljYXRlLT5ieXRlTGVuZ3RoKCkpKTsKLSAgICBD
RkRhdGFBcHBlbmRCeXRlcyhjZXJ0aWZpY2F0ZURhdGEuZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgVUludDgqPihjZXJ0aWZpY2F0ZS0+YmFzZUFkZHJlc3MoKSksIGNlcnRpZmljYXRlLT5i
eXRlTGVuZ3RoKCkpOworICAgIENGRGF0YUFwcGVuZEJ5dGVzKGNlcnRpZmljYXRlRGF0YS5nZXQo
KSwgY2VydGlmaWNhdGUtPmRhdGEoKSwgY2VydGlmaWNhdGUtPmJ5dGVMZW5ndGgoKSk7CiAKICAg
ICBhdXRvIGFzc2V0U3RyID0ga2V5SUQudXRmOCgpOwogICAgIGF1dG8gYXNzZXRJRCA9IGFkb3B0
Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBhc3NldFN0ci5sZW5n
dGgoKSkpOwotICAgIENGRGF0YUFwcGVuZEJ5dGVzKGFzc2V0SUQuZ2V0KCksIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgVUludDgqPihhc3NldFN0ci5kYXRhKCkpLCBhc3NldFN0ci5sZW5ndGgoKSk7
CisgICAgQ0ZEYXRhQXBwZW5kQnl0ZXMoYXNzZXRJRC5nZXQoKSwgYXNzZXRTdHIuY2hhcmFjdGVy
czgoKSwgYXNzZXRTdHIubGVuZ3RoKCkpOwogCiAgICAgQ0ZFcnJvclJlZiBjZkVycm9yID0gbnVs
bHB0cjsKICAgICBhdXRvIGtleVJlcXVlc3QgPSBhZG9wdENGKEFWQ0ZBc3NldFJlc291cmNlTG9h
ZGluZ1JlcXVlc3RDcmVhdGVTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHAobV9y
ZXF1ZXN0LmdldCgpLCBjZXJ0aWZpY2F0ZURhdGEuZ2V0KCksIGFzc2V0SUQuZ2V0KCksIG51bGxw
dHIsICZjZkVycm9yKSk7CkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBDRE1TZXNzaW9uQVZGb3Vu
ZGF0aW9uQ0Y6OnJlbGVhc2VLZXlzKCkKIGJvb2wgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGOjp1
cGRhdGUoVWludDhBcnJheSoga2V5LCBSZWZQdHI8VWludDhBcnJheT4mIG5leHRNZXNzYWdlLCB1
bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYgc3lzdGVtQ29kZSkKIHsKICAgICBh
dXRvIGtleURhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwga2V5LT5ieXRlTGVuZ3RoKCkpKTsKLSAgICBDRkRhdGFBcHBlbmRCeXRlcyhrZXlEYXRh
LmdldCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oa2V5LT5iYXNlQWRkcmVzcygp
KSwga2V5LT5ieXRlTGVuZ3RoKCkpOworICAgIENGRGF0YUFwcGVuZEJ5dGVzKGtleURhdGEuZ2V0
KCksIGtleS0+ZGF0YSgpLCBrZXktPmJ5dGVMZW5ndGgoKSk7CiAKICAgICBBVkNGQXNzZXRSZXNv
dXJjZUxvYWRpbmdSZXF1ZXN0RmluaXNoTG9hZGluZ1dpdGhSZXNwb25zZShtX3JlcXVlc3QuZ2V0
KCksIG51bGxwdHIsIGtleURhdGEuZ2V0KCksIG51bGxwdHIpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGLmNwcAppbmRleCBiNDU5ZjZm
MTliZjc1NGNlOWU1NTIyMjk1Y2IyZWFlZTgxNGM2ZjI3Li4zZWU2MDFkZDI3MDViMjBiMDIwZWQ3
ZGM5NTdhZGU4NmU4NzUwNWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJh
bmRUZXh0VHJhY2tQcml2YXRlQVZDRi5jcHAKQEAgLTIwNCw3ICsyMDQsNyBAQCBib29sIEluYmFu
ZFRleHRUcmFja1ByaXZhdGVBVkNGOjpyZWFkTmF0aXZlU2FtcGxlQnVmZmVyKENGQXJyYXlSZWYg
bmF0aXZlU2FtcGxlcwogICAgIH0KIAogICAgIG1fc2FtcGxlSW5wdXRCdWZmZXIuZ3JvdyhtX3Nh
bXBsZUlucHV0QnVmZmVyLnNpemUoKSArIGJ1ZmZlckxlbmd0aCk7Ci0gICAgQ0ZEYXRhR2V0Qnl0
ZXMoc2FtcGxlQnVmZmVyLT5idWZmZXIsIENGUmFuZ2VNYWtlKDAsIGJ1ZmZlckxlbmd0aCksIHJl
aW50ZXJwcmV0X2Nhc3Q8VUludDgqPihtX3NhbXBsZUlucHV0QnVmZmVyLmRhdGEoKSkgKyBtX3Nh
bXBsZUlucHV0QnVmZmVyLnNpemUoKSAtIGJ1ZmZlckxlbmd0aCk7CisgICAgQ0ZEYXRhR2V0Qnl0
ZXMoc2FtcGxlQnVmZmVyLT5idWZmZXIsIENGUmFuZ2VNYWtlKDAsIGJ1ZmZlckxlbmd0aCksIG1f
c2FtcGxlSW5wdXRCdWZmZXIuZGF0YSgpICsgbV9zYW1wbGVJbnB1dEJ1ZmZlci5zaXplKCkgLSBi
dWZmZXJMZW5ndGgpOwogCiAgICAgYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShtX3NhbXBs
ZUlucHV0QnVmZmVyLmRhdGEoKSwgbV9zYW1wbGVJbnB1dEJ1ZmZlci5zaXplKCkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCmluZGV4IGM2ODE4NzA0MmQ2
NzA1Zjc4MjZiODUyNWEyNDc2ODhkNTZkZWQwNTMuLmVlNmE1ZDJlZWQ2YTNmOTdlNzQ2OGNhYjk2
ZTllZTM0ZDZiODMwNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZm
ZXIuY3BwCkBAIC03MDIsNyArNzAyLDcgQEAgSXRlbUJ1ZmZlckhhbmRsZSBJdGVtQnVmZmVyOjpj
cmVhdGVJdGVtQnVmZmVyKHNpemVfdCBjYXBhY2l0eSkKICAgICBjb25zdGV4cHIgc2l6ZV90IGRl
ZmF1bHRJdGVtQnVmZmVyQ2FwYWNpdHkgPSAxIDw8IDEwOwogCiAgICAgYXV0byBuZXdCdWZmZXJD
YXBhY2l0eSA9IHN0ZDo6bWF4KGNhcGFjaXR5LCBkZWZhdWx0SXRlbUJ1ZmZlckNhcGFjaXR5KTsK
LSAgICBhdXRvKiBidWZmZXIgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihmYXN0TWFsbG9j
KG5ld0J1ZmZlckNhcGFjaXR5KSk7CisgICAgYXV0byogYnVmZmVyID0gc3RhdGljX2Nhc3Q8dWlu
dDhfdCo+KGZhc3RNYWxsb2MobmV3QnVmZmVyQ2FwYWNpdHkpKTsKICAgICBtX2FsbG9jYXRlZEJ1
ZmZlcnMuYXBwZW5kKGJ1ZmZlcik7CiAgICAgcmV0dXJuIHsgSXRlbUJ1ZmZlcklkZW50aWZpZXI6
OmdlbmVyYXRlKCksIGJ1ZmZlciwgbmV3QnVmZmVyQ2FwYWNpdHkgfTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcAppbmRleCAwYWVmMTI4YWIzYjViNGI1YjAyMDE4
MDMzMjJjMDQ0OTMxNjdlNTI0Li5hMGM4MjE0ZGQzNjUyNmExMTcyNWEyZjk2N2M0N2ExZDY1MGEx
MDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlcmF0b3IuY3BwCkBAIC03OSw3
ICs3OSw3IEBAIHZvaWQgRGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjp1cGRhdGVDdXJyZW50SXRlbSgp
CiAgICAgfQogCiAgICAgYXV0byBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbSA9IHBhZGRlZFNpemVP
ZlR5cGVBbmRJdGVtSW5CeXRlcyhpdGVtVHlwZSk7Ci0gICAgbV9jdXJyZW50QnVmZmVyRm9ySXRl
bSA9IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtIDw9IHNpemVPZkZpeGVkQnVmZmVyRm9yQ3VycmVu
dEl0ZW0gPyBtX2ZpeGVkQnVmZmVyRm9yQ3VycmVudEl0ZW0gOiByZWludGVycHJldF9jYXN0PHVp
bnQ4X3QqPihmYXN0TWFsbG9jKHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtKSk7CisgICAgbV9jdXJy
ZW50QnVmZmVyRm9ySXRlbSA9IHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtIDw9IHNpemVPZkZpeGVk
QnVmZmVyRm9yQ3VycmVudEl0ZW0gPyBtX2ZpeGVkQnVmZmVyRm9yQ3VycmVudEl0ZW0gOiBzdGF0
aWNfY2FzdDx1aW50OF90Kj4oZmFzdE1hbGxvYyhwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbSkpOwog
ICAgIGlmIChpc0lubGluZUl0ZW0oaXRlbVR5cGUpKSB7CiAgICAgICAgIGlmIChVTkxJS0VMWShz
dGF0aWNfY2FzdDx1aW50NjRfdD4obV9jdXJyZW50RW5kT2ZCdWZmZXIgLSBtX2N1cnNvcikgPCBw
YWRkZWRTaXplT2ZUeXBlQW5kSXRlbSkpIHsKICAgICAgICAgICAgIG1faXNWYWxpZCA9IGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lm
L0dJRkltYWdlUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9naWYvR0lGSW1hZ2VSZWFkZXIuaAppbmRleCA0Mjc2NDZjMWRiMzAwODVlYjMyYzAxZGE1NzQ2
ZDJiOTNmMGU0ZDI0Li40MjE0NmUwMzI5MzIzNjk5Nzg5ZWI1ZTQyYWY0YzczZDM0YWI5Y2M2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lG
SW1hZ2VSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9naWYvR0lGSW1hZ2VSZWFkZXIuaApAQCAtMjg1LDkgKzI4NSw5IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBwYXJzZShzaXplX3QgZGF0YVBvc2l0aW9uLCBzaXplX3QgbGVuLCBib29sIHBhcnNlU2l6
ZU9ubHkpOwogICAgIHZvaWQgc2V0UmVtYWluaW5nQnl0ZXMoc2l6ZV90KTsKIAotICAgIGNvbnN0
IHVuc2lnbmVkIGNoYXIqIGRhdGEoc2l6ZV90IGRhdGFQb3NpdGlvbikgY29uc3QKKyAgICBjb25z
dCB1aW50OF90KiBkYXRhKHNpemVfdCBkYXRhUG9zaXRpb24pIGNvbnN0CiAgICAgewotICAgICAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4obV9kYXRhLT5k
YXRhKCkpICsgZGF0YVBvc2l0aW9uOworICAgICAgICByZXR1cm4gbV9kYXRhLT5kYXRhKCkgKyBk
YXRhUG9zaXRpb247CiAgICAgfQogCiAgICAgdm9pZCBhZGRGcmFtZUlmTmVjZXNzYXJ5KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9yTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5tbQpp
bmRleCA4ZTk1YzU0NjlhMWE5NjNjNmRjZGJkZjEzODgyYjA3M2IyZjAzNzU5Li4xMDBkYWNiMDA1
MTdkNmVlZTZiNWRkN2EwMjVjYjFiMTA0ZjYwZjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMubW0KQEAgLTE4OSw3ICsxODksNyBAQCBz
dGF0aWMgU3RyaW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBr
ZXlTaXplLCBjb25zdCBDU3RyaW5nJgogCiAgICAgLy8gTGVuZ3RoIG5lZWRzIHRvIGFjY291bnQg
Zm9yIHRoZSBudWxsIHRlcm1pbmF0b3IuCiAgICAgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdl
LnB1YmxpY0tleUFuZENoYWxsZW5nZS5jaGFsbGVuZ2UuTGVuZ3RoID0gY2hhbGxlbmdlLmxlbmd0
aCgpICsgMTsKLSAgICBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2UucHVibGljS2V5QW5kQ2hh
bGxlbmdlLmNoYWxsZW5nZS5EYXRhID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oY29uc3Rf
Y2FzdDxjaGFyKj4oY2hhbGxlbmdlLmRhdGEoKSkpOworICAgIHNpZ25lZFB1YmxpY0tleUFuZENo
YWxsZW5nZS5wdWJsaWNLZXlBbmRDaGFsbGVuZ2UuY2hhbGxlbmdlLkRhdGEgPSBjb25zdF9jYXN0
PHVpbnQ4X3QqPihjaGFsbGVuZ2UuY2hhcmFjdGVyczgoKSk7CiAKICAgICBDU1NNX0RBVEEgZW5j
b2RlZFB1YmxpY0tleUFuZENoYWxsZW5nZSB7IDAsIG51bGxwdHIgfTsKICAgICBpZiAoU2VjQXNu
MUVuY29kZUl0ZW0oY29kZXIsICZzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2UucHVibGljS2V5
QW5kQ2hhbGxlbmdlLCBwdWJsaWNLZXlBbmRDaGFsbGVuZ2VUZW1wbGF0ZSwgJmVuY29kZWRQdWJs
aWNLZXlBbmRDaGFsbGVuZ2UpICE9IG5vRXJyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
LmNwcAppbmRleCBkZjIxN2RiYWVjZDQ2MWE5ZDliZTM4ZjU1YmM3OTM1NWRiMmIyYjE3Li5mODgz
ODAyODE4YTk3ZWNjYzI4NGFmZTM3YTYzYjhiMTg1NzE5MDc2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyLmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIHN0YXRpYyB2b2lkIGFkZFN0cmlu
Z1RvU0hBMShTSEExJiBzaGExLCBjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICB9CiAKICAgICBh
dXRvIHV0ZjggPSBzdHJpbmcudXRmOCgpOwotICAgIHNoYTEuYWRkQnl0ZXMocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4odXRmOC5kYXRhKCkpLCB1dGY4Lmxlbmd0aCgpICsgMSk7IC8v
IEluY2x1ZGUgdGVybWluYXRpbmcgbnVsbCBieXRlLgorICAgIHNoYTEuYWRkQnl0ZXModXRmOC5j
aGFyYWN0ZXJzOCgpLCB1dGY4Lmxlbmd0aCgpICsgMSk7IC8vIEluY2x1ZGUgdGVybWluYXRpbmcg
bnVsbCBieXRlLgogfQogCiBTdHJpbmcgUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6aGFzaFN0
cmluZ1dpdGhTYWx0KGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IFN0cmluZyYgaGFzaFNhbHQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5j
cHAKaW5kZXggN2UzZDFiOTFmMDYzNzRlOTg0Y2Y1MWU4Yzc3YzRmNzBkOTIxZGZhOS4uZDFhMWY0
ZjIwM2FmYWZhYmViNzZmYzYyZTRhNTM2ZTVjODExMjJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmNwcApAQCAtMjExLDcgKzIx
MSw3IEBAIHZvaWQgYWRkS2V5VmFsdWVQYWlyQXNGb3JtRGF0YShWZWN0b3I8Y2hhcj4mIGJ1ZmZl
ciwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksCiAKIHZvaWQgZW5jb2RlU3RyaW5nQXNGb3Jt
RGF0YShWZWN0b3I8Y2hhcj4mIGJ1ZmZlciwgY29uc3QgQ1N0cmluZyYgc3RyaW5nKQogewotICAg
IGFwcGVuZEZvcm1VUkxFbmNvZGVkKGJ1ZmZlciwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4oc3RyaW5nLmRhdGEoKSksIHN0cmluZy5sZW5ndGgoKSk7CisgICAgYXBwZW5kRm9ybVVS
TEVuY29kZWQoYnVmZmVyLCBzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsK
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2Nr
ZXRTdHJlYW1IYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2Nr
ZXRTdHJlYW1IYW5kbGUuY3BwCmluZGV4IDZkZTFhM2Y4YTFmOWI2M2QxZTcxZmIzYWE3Y2U0MjUz
NDFhNjUxZDkuLmM4MjIyYjg5Y2I2MGM1YjkxNGEwMGE1ODI3NWYwNjg0ODU5NGRjYjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhh
bmRsZS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OnNlbmRI
YW5kc2hha2UoQ1N0cmluZyYmIGhhbmRzaGFrZSwgc3RkOjpvcHRpb25hbDxDb29raWUKIHsKICAg
ICBpZiAobV9zdGF0ZSA9PSBDb25uZWN0aW5nIHx8IG1fc3RhdGUgPT0gQ2xvc2luZykKICAgICAg
ICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlLCBmYWxzZSk7Ci0gICAgcGxhdGZvcm1T
ZW5kSGFuZHNoYWtlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGhhbmRzaGFrZS5k
YXRhKCkpLCBoYW5kc2hha2UubGVuZ3RoKCksIFdURk1vdmUoaGVhZGVyRmllbGRQcm94eSksIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBwbGF0Zm9ybVNlbmRIYW5kc2hha2UoaGFu
ZHNoYWtlLmNoYXJhY3RlcnM4KCksIGhhbmRzaGFrZS5sZW5ndGgoKSwgV1RGTW92ZShoZWFkZXJG
aWVsZFByb3h5KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFNvY2tl
dFN0cmVhbUhhbmRsZTo6Y2xvc2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcAppbmRleCBiN2VmNWI4
NzU4NGZmYmI2NmFmN2Q5YTExM2Y0MzA2ZDkxNWExNjliLi4zODc1M2NkZWI2YzI3M2IxY2IxYzIx
Mzk5MWYxNDJkZmVlMDkxN2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcApAQCAtMjI4LDcgKzIy
OCw3IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpCiAg
ICAgU3RyaW5nIHBhcnRpdGlvbiA9IGNhY2hlUGFydGl0aW9uKCk7CiAgICAgaWYgKCFwYXJ0aXRp
b24uaXNOdWxsKCkgJiYgIXBhcnRpdGlvbi5pc0VtcHR5KCkpIHsKICAgICAgICAgQ1N0cmluZyB1
dGY4U3RyaW5nID0gcGFydGl0aW9uLnV0ZjgoKTsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBwYXJ0aXRpb25WYWx1ZSA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXMoMCwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KHV0ZjhTdHJpbmcuZGF0YSgpKSwgdXRmOFN0
cmluZy5sZW5ndGgoKSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBmYWxzZSkpOworICAgICAgICBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBhcnRpdGlvblZhbHVlID0gYWRvcHRDRihDRlN0cmluZ0Ny
ZWF0ZVdpdGhCeXRlcygwLCB1dGY4U3RyaW5nLmNoYXJhY3RlcnM4KCksIHV0ZjhTdHJpbmcubGVu
Z3RoKCksIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgZmFsc2UpKTsKICAgICAgICAgX0NGVVJMUmVx
dWVzdFNldFByb3RvY29sUHJvcGVydHkoY2ZSZXF1ZXN0LmdldCgpLCBfa0NGVVJMQ2FjaGVQYXJ0
aXRpb25LZXksIHBhcnRpdGlvblZhbHVlLmdldCgpKTsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZO
ZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0
Q0ZOZXQuaAppbmRleCBiY2M2MjI4NjYwZTM4NjhlYzdjMWE2YjQ3ZGVlMWVkNzFiZjAzZDljLi5m
NzBhYzRlNzU5ZmIyNWFhMWIwMDY4ZTExNTkzZWQwZTk2ZGJlNGQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5l
dC5oCkBAIC0xMzEsNyArMTMxLDcgQEAgaW5saW5lIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gaHR0
cEhlYWRlclZhbHVlVXNpbmdTdWl0YWJsZUVuY29kaW5nKEhUVFBIZWFkZXJNYXAKICAgICBpZiAo
aGVhZGVyLmtleUFzSFRUUEhlYWRlck5hbWUgJiYgKmhlYWRlci5rZXlBc0hUVFBIZWFkZXJOYW1l
ID09IEhUVFBIZWFkZXJOYW1lOjpMYXN0RXZlbnRJRCAmJiAhaGVhZGVyLnZhbHVlLmlzQWxsQVND
SUkoKSkgewogICAgICAgICBhdXRvIHV0ZjhWYWx1ZSA9IGhlYWRlci52YWx1ZS51dGY4KCk7CiAg
ICAgICAgIC8vIENvbnN0cnVjdGluZyBhIHN0cmluZyB3aXRoIHRoZSBVVEYtOCBieXRlcyBidXQg
Y2xhaW1pbmcgdGhhdCBpdOKAmXMgTGF0aW4tMSBpcyB0aGUgd2F5IHRvIGdldCBDRk5ldHdvcmsg
dG8gcHV0IHRob3NlIFVURi04IGJ5dGVzIG9uIHRoZSB3aXJlLgotICAgICAgICByZXR1cm4gYWRv
cHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhCeXRlcyhudWxscHRyLCByZWludGVycHJldF9jYXN0PGNv
bnN0IFVJbnQ4Kj4odXRmOFZhbHVlLmRhdGEoKSksIHV0ZjhWYWx1ZS5sZW5ndGgoKSwga0NGU3Ry
aW5nRW5jb2RpbmdJU09MYXRpbjEsIGZhbHNlKSk7CisgICAgICAgIHJldHVybiBhZG9wdENGKENG
U3RyaW5nQ3JlYXRlV2l0aEJ5dGVzKG51bGxwdHIsIHV0ZjhWYWx1ZS5jaGFyYWN0ZXJzOCgpLCB1
dGY4VmFsdWUubGVuZ3RoKCksIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBmYWxzZSkpOwog
ICAgIH0KICAgICByZXR1cm4gaGVhZGVyLnZhbHVlLmNyZWF0ZUNGU3RyaW5nKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhh
bmRsZUltcGxDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Nv
Y2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAKaW5kZXggZDEzNzk0OThhYWI4MWVlMmNhN2Fh
MDg5YjFiNTBmOTk1YzI4Mjk0Ny4uNTViOWYxZWQ0YTBkMzI1YTZiMTZhMTE0Mzg5ZjM5YzdkZWQz
NmNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcApAQCAtNzIyLDcgKzcy
Miw3IEBAIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpwbGF0
Zm9ybVNlbmRJbnRlcm5hbChjb25zdCB1aW50OF90CiAgICAgaWYgKCFDRldyaXRlU3RyZWFtQ2Fu
QWNjZXB0Qnl0ZXMobV93cml0ZVN0cmVhbS5nZXQoKSkpCiAgICAgICAgIHJldHVybiAwOwogCi0g
ICAgQ0ZJbmRleCByZXN1bHQgPSBDRldyaXRlU3RyZWFtV3JpdGUobV93cml0ZVN0cmVhbS5nZXQo
KSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGRhdGEpLCBsZW5ndGgpOworICAgIENG
SW5kZXggcmVzdWx0ID0gQ0ZXcml0ZVN0cmVhbVdyaXRlKG1fd3JpdGVTdHJlYW0uZ2V0KCksIGRh
dGEsIGxlbmd0aCk7CiAgICAgaWYgKHJlc3VsdCA9PSAtMSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxDYWNoZUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKaW5kZXggMDViNGUyOWJjOTMxYzE0MzQ1YjQ3OTU5OGJh
ZWU2N2ViNGI2OGMyYS4uZDA5YjdiNWRjYjE4NDA1OTQ3ZWFlYzNiZWY0YTMwYTVhYzUyNDZmZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNo
ZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bENhY2hlRW50cnkuY3BwCkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBDdXJsQ2FjaGVFbnRyeTo6
ZGlkRmluaXNoTG9hZGluZygpCiB2b2lkIEN1cmxDYWNoZUVudHJ5OjpnZW5lcmF0ZUJhc2VGaWxl
bmFtZShjb25zdCBDU3RyaW5nJiB1cmwpCiB7CiAgICAgU0hBMSBzaGExOwotICAgIHNoYTEuYWRk
Qnl0ZXMocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odXJsLmRhdGEoKSksIHVybC5s
ZW5ndGgoKSk7CisgICAgc2hhMS5hZGRCeXRlcyh1cmwuY2hhcmFjdGVyczgoKSwgdXJsLmxlbmd0
aCgpKTsKIAogICAgIFNIQTE6OkRpZ2VzdCBzdW07CiAgICAgc2hhMS5jb21wdXRlSGFzaChzdW0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcApp
bmRleCA2ZDhkYzcyZWRjYmQ0Mjg4N2U2Nzc1YTE2MDI4NTQ3YTk3YzYzMWI5Li4yZDgwZjNiMWI3
NzRhODUzY2YyMTI3NTcwZGYxODgwNTEyYTJkMDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcApAQCAtMzA0LDcgKzMwNCw3IEBAIGF1dG8g
U1FMaXRlU3RhdGVtZW50Ojpjb2x1bW5CbG9iVmlldyhpbnQgY29sKSAtPiBCbG9iVmlldwogICAg
IGlmIChibG9iU2l6ZSA8PSAwKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIHsg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYmxvYiksIHN0YXRpY19jYXN0PHNpemVf
dD4oYmxvYlNpemUpIH07CisgICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGJsb2IpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGJsb2JTaXplKSB9OwogfQogCiBib29sIFNRTGl0
ZVN0YXRlbWVudDo6aGFzU3RhcnRlZFN0ZXBwaW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9N
b2NrQ0RNRmFjdG9yeS5jcHAKaW5kZXggOTkyZTRjMTNhN2VlOGVlNDdlODQ5MWY3YjhlMzA0MjBl
ZDNlZTIxZC4uYmMzMjQ2YmY2YjJjMjA2MzhiZmI0MjI1Y2Y3MGQ1MWE4ZmIzMGYwMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKQEAgLTIxMyw3ICsyMTMsNyBA
QCBib29sIE1vY2tDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERh
dGFUeXBlLCBjb25zdCBTaGFyZWRCdWZmZQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBNb2NrQ0RN
OjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7
Ci0gICAgaWYgKCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUkocmVpbnRlcnByZXRfY2FzdDxjb25zdCBM
Q2hhcio+KHJlc3BvbnNlLmRhdGEoKSksIHJlc3BvbnNlLnNpemUoKSkpCisgICAgaWYgKCFjaGFy
YWN0ZXJzQXJlQWxsQVNDSUkocmVzcG9uc2UuZGF0YSgpLCByZXNwb25zZS5zaXplKCkpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFZlY3RvcjxTdHJpbmc+IHJlc3BvbnNlQXJyYXkg
PSBTdHJpbmcocmVzcG9uc2UuZGF0YSgpLCByZXNwb25zZS5zaXplKCkpLnNwbGl0KCcgJyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9IVFRQUGFyc2VyLmNwcCBiL1NvdXJj
ZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBQYXJzZXIuY3BwCmluZGV4IDdhNWIyMjhkNWZmNzE0NmRh
N2IxMTc3Y2IxNGNiYTRlNDMwYjM3ZmEuLmM4MmFkOTU3ZjcxM2MzYWU3Njk0Y2U4NjNlNTc1NDUw
MmJjMDI3NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBQYXJzZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBQYXJzZXIuY3BwCkBAIC0xMzAs
NyArMTMwLDcgQEAgYm9vbCBIVFRQUGFyc2VyOjpyZWFkTGluZShTdHJpbmcmIGxpbmUpCiAgICAg
aWYgKHBvc2l0aW9uID09IG5vdEZvdW5kIHx8IHBvc2l0aW9uICsgMSA9PSBsZW5ndGggfHwgbV9i
dWZmZXJbcG9zaXRpb24gKyAxXSAhPSAweDBhKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBsaW5lID0gU3RyaW5nOjpmcm9tVVRGOChyZWludGVycHJldF9jYXN0PGNoYXIqPihtX2J1ZmZl
ci5kYXRhKCkpLCBwb3NpdGlvbik7CisgICAgbGluZSA9IFN0cmluZzo6ZnJvbVVURjgobV9idWZm
ZXIuZGF0YSgpLCBwb3NpdGlvbik7CiAgICAgaWYgKGxpbmUuaXNOdWxsKCkpCiAgICAgICAgIExP
R19FUlJPUigiQ2xpZW50IGVycm9yOiBpbnZhbGlkIGVuY29kaW5nIGluIEhUVFAgaGVhZGVyLiIp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9TZXNzaW9uSG9zdFNvY2tl
dC5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9TZXNzaW9uSG9zdFNvY2tldC5jcHAKaW5k
ZXggMGY2NTY2OGZjMmZiODlmZDRlYWE3ZGM0MTQ4N2JmMWQ2MTIwY2FmMC4uODI0ZjkwMjkwN2E5
NGI4ZGJhNWIzODBhNTdiYWM1MGJmZjVmNmY1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZl
ci9zb2NrZXQvU2Vzc2lvbkhvc3RTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvc29j
a2V0L1Nlc3Npb25Ib3N0U29ja2V0LmNwcApAQCAtNTAsNyArNTAsNyBAQCB2b2lkIFNlc3Npb25I
b3N0OjpzZW5kV2ViSW5zcGVjdG9yRXZlbnQoY29uc3QgU3RyaW5nJiBldmVudCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgY29uc3QgQ1N0cmluZyBtZXNzYWdlID0gZXZlbnQudXRmOCgpOwotICAg
IHNlbmQobV9jbGllbnRJRC52YWx1ZSgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihtZXNzYWdlLmRhdGEoKSksIG1lc3NhZ2UubGVuZ3RoKCkpOworICAgIHNlbmQobV9jbGllbnRJ
RC52YWx1ZSgpLCBtZXNzYWdlLmNoYXJhY3RlcnM4KCksIG1lc3NhZ2UubGVuZ3RoKCkpOwogfQog
CiB2b2lkIFNlc3Npb25Ib3N0Ojpjb25uZWN0VG9Ccm93c2VyKEZ1bmN0aW9uPHZvaWQgKHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBlcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94
eS5jcHAKaW5kZXggNGY1OGVkMWM1NDBlZWE4YWJjMjk3NmNjODE1Zjc4NmYyZDA2NjgwOS4uYjA3
ZTM1NjFlOWI3ZmJkODg5NGI4NTE3MzNmNzZiOTY2MzQ3NzcyMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNw
cApAQCAtNjkxLDcgKzY5MSw3IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQ
bGF5ZXJLZXlOZWVkZWQoVWludDhBcnJheSogbWVzc2FnZSkKICNpZiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKQogdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllckluaXRpYWxp
emF0aW9uRGF0YUVuY291bnRlcmVkKGNvbnN0IFN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWZQdHI8
QXJyYXlCdWZmZXI+JiYgaW5pdERhdGEpCiB7Ci0gICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbi0+
c2VuZChNZXNzYWdlczo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpJbml0aWFsaXphdGlvbkRh
dGFFbmNvdW50ZXJlZChpbml0RGF0YVR5cGUsIElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJl
dF9jYXN0PHVpbnQ4X3QqPihpbml0RGF0YS0+ZGF0YSgpKSwgaW5pdERhdGEtPmJ5dGVMZW5ndGgo
KSkpLCBtX2lkKTsKKyAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OkluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGlu
aXREYXRhVHlwZSwgSVBDOjpEYXRhUmVmZXJlbmNlKHN0YXRpY19jYXN0PHVpbnQ4X3QqPihpbml0
RGF0YS0+ZGF0YSgpKSwgaW5pdERhdGEtPmJ5dGVMZW5ndGgoKSkpLCBtX2lkKTsKIH0KIAogdm9p
ZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXllcldhaXRpbmdGb3JLZXlDaGFuZ2Vk
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0
VHJhY2tQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4
dFRyYWNrUHJveHkuY3BwCmluZGV4IDllYzU1ZjYxNmY1ODQzYjZjODAyN2JjMTlkYTdhNjA1OGQ0
YWE2MDQuLmI0MWEwMjgxZjg1OGExMjJlMGZhYTZiYjcxOTRlZTUzMGNjOWYxZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1By
b3h5LmNwcApAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgUmVtb3RlVGV4dFRyYWNrUHJveHk6OmFk
ZERhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlCiAgICAg
aWYgKCFtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
Y29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6QWRkRGF0YUN1ZShtX2lkZW50aWZpZXIsIHN0YXJ0LCBlbmQs
IElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRh
KSwgbGVuZ3RoKSksIG1fbWVkaWFQbGF5ZXJJZGVudGlmaWVyKTsKKyAgICBtX2Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OkFkZERhdGFDdWUobV9pZGVudGlmaWVyLCBzdGFydCwgZW5kLCBJUEM6OkRhdGFS
ZWZlcmVuY2Uoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpKSwgbV9t
ZWRpYVBsYXllcklkZW50aWZpZXIpOwogfQogCiAjaWYgRU5BQkxFKERBVEFDVUVfVkFMVUUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVj
b3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJl
Y29yZGVyLmNwcAppbmRleCBhYmFhNWJiYzRkODQxMDRmYWE5MzJlYzdhOGQ0MjU3N2RiODlmZjJm
Li44YzEyNTQ5ZjE0MzI4OWZmMWYyZGJiMzY0NTg3YzJmNjhlYWNhNmJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5j
cHAKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIFJlbW90ZU1lZGlhUmVjb3JkZXI6OnZpZGVvU2Ft
cGxlQXZhaWxhYmxlKFdlYkNvcmU6OlJlbW90ZVZpZGVvU2FtcGxlJiYgcmVtbwogdm9pZCBSZW1v
dGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRh
dGFSZWZlcmVuY2UmJiwgZG91YmxlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3dy
aXRlci0+ZmV0Y2hEYXRhKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXShhdXRvJiYgZGF0YSwgYXV0byB0aW1lQ29kZSkgbXV0YWJsZSB7Ci0gICAgICAgIGF1
dG8qIHBvaW50ZXIgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhID8gZGF0
YS0+ZGF0YSgpIDogbnVsbHB0cik7CisgICAgICAgIGF1dG8qIHBvaW50ZXIgPSBkYXRhID8gZGF0
YS0+ZGF0YSgpIDogbnVsbHB0cjsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpEYXRh
UmVmZXJlbmNlIHsgcG9pbnRlciwgZGF0YSA/IGRhdGEtPnNpemUoKSA6IDAgfSwgdGltZUNvZGUp
OwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVEYXRhQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGFDdXJsLmNwcAppbmRleCAxOTI0ODJiZjlmNDM0ZGMx
OTlkMzdhZDQxMTgyOTRhZTE5ZGM2NmNhLi44YmVhODg5M2FiYWE3ODE5N2U2NTg1NmYyNDU1NWY3
YWZkZjU3ODA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZURhdGFDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGFDdXJsLmNwcApAQCAtNzMsNyArNzMsNyBAQCBib29s
IERhdGE6OmFwcGx5KGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgdWludDhfdCosIHNpemVfdCk+
JiBhcHBsaWVyKSBjb25zdAogICAgIGlmIChpc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIHJldHVybiBhcHBsaWVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGRhdGEoKSksIHNpemUoKSk7CisgICAgcmV0dXJuIGFwcGxpZXIoZGF0YSgpLCBzaXplKCkpOwog
fQogCiBEYXRhIERhdGE6OnN1YnJhbmdlKHNpemVfdCBvZmZzZXQsIHNpemVfdCBzaXplKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVLZXkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVLZXkuY3BwCmluZGV4IGY4ZjM0MTBkY2EwNWFhMTk0MTZjYmM0ODUxNWZhMGVlMzRiY2Nl
MmEuLmU3OWYxZDRhZDQ3MGEyNTEwMjQwNTcxOWM2NGY0MzFiNzc3ZDc2NmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlS2V5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUtleS5j
cHAKQEAgLTk0LDcgKzk0LDcgQEAgc3RhdGljIHZvaWQgaGFzaFN0cmluZyhTSEExJiBzaGExLCBj
b25zdCBTdHJpbmcmIHN0cmluZykKICAgICB9CiAgICAgYXV0byBjU3RyaW5nID0gc3RyaW5nLnV0
ZjgoKTsKICAgICAvLyBJbmNsdWRlIHRlcm1pbmF0aW5nIG51bGwgYnl0ZS4KLSAgICBzaGExLmFk
ZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGNTdHJpbmcuZGF0YSgpKSwg
Y1N0cmluZy5sZW5ndGgoKSArIDEpOworICAgIHNoYTEuYWRkQnl0ZXMoY1N0cmluZy5jaGFyYWN0
ZXJzOCgpLCBjU3RyaW5nLmxlbmd0aCgpICsgMSk7CiB9CiAKIEtleTo6SGFzaFR5cGUgS2V5Ojpj
b21wdXRlSGFzaChjb25zdCBTYWx0JiBzYWx0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYktpdERpcmVjdG9yeUlucHV0U3RyZWFtLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJLaXREaXJlY3RvcnlJbnB1dFN0
cmVhbS5jcHAKaW5kZXggMTQ1NGExZjA2YzdlZDg4Y2JhYjY2NjlhYWVmZDQ2MmI5M2FiNmNlMC4u
Y2YyYWY5MTIyM2Q4MDRiYWU0NzJlNDc2NjQwMTNhYTEwYTBhNTBhYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYktpdERpcmVjdG9yeUlucHV0U3RyZWFt
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViS2l0RGlyZWN0
b3J5SW5wdXRTdHJlYW0uY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgc3RhdGljIGdzc2l6ZSB3ZWJr
aXREaXJlY3RvcnlJbnB1dFN0cmVhbVJlYWQoR0lucHV0U3RyZWFtKiBpbnB1dCwgdm9pZCogYnVm
ZmVyLAogICAgICAgICBnc2l6ZSBidWZmZXJTaXplOwogICAgICAgICBhdXRvKiBidWZmZXJEYXRh
ID0gZ19ieXRlc19nZXRfZGF0YShzdHJlYW0tPnByaXYtPmJ1ZmZlci5nZXQoKSwgJmJ1ZmZlclNp
emUpOwogICAgICAgICBnc2l6ZSBieXRlc1JlYWQgPSBzdGQ6Om1pbihidWZmZXJTaXplLCBjb3Vu
dCAtIHRvdGFsQnl0ZXNSZWFkKTsKLSAgICAgICAgbWVtY3B5KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hh
cio+KGJ1ZmZlcikgKyB0b3RhbEJ5dGVzUmVhZCwgYnVmZmVyRGF0YSwgYnl0ZXNSZWFkKTsKKyAg
ICAgICAgbWVtY3B5KHN0YXRpY19jYXN0PGNoYXIqPihidWZmZXIpICsgdG90YWxCeXRlc1JlYWQs
IGJ1ZmZlckRhdGEsIGJ5dGVzUmVhZCk7CiAgICAgICAgIGlmIChieXRlc1JlYWQgPT0gYnVmZmVy
U2l6ZSkKICAgICAgICAgICAgIHN0cmVhbS0+cHJpdi0+YnVmZmVyID0gbnVsbHB0cjsKICAgICAg
ICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRD
b2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3Bw
CmluZGV4IDc0NjQyODEzZjQ3ODE5NmMwYzc4Y2ViNzg3ZTM2NmRjMjhkYzkyNjIuLjFhZjllZWE2
YWFkNDYyZGExZGM4NTFkNzg2MjFmMzY4ZmQ1MDAyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBBcmd1
bWVudENvZGVyPENTdHJpbmc+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgQ1N0cmlu
ZyYgc3RyaW5nKQogCiAgICAgdWludDMyX3QgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwogICAg
IGVuY29kZXIgPDwgbGVuZ3RoOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0cmluZy5kYXRhKCkpLCBsZW5ndGgsIDEp
OworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHN0cmluZy5jaGFyYWN0ZXJzOCgp
LCBsZW5ndGgsIDEpOwogfQogCiBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBBcmd1bWVudENvZGVy
PENTdHJpbmc+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgQ1N0cmluZyYgcmVzdWx0KQpAQCAt
MTI1LDcgKzEyNSw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxTdHJpbmc+OjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgZW5jb2RlciA8PCBsZW5ndGgg
PDwgaXM4Qml0OwogCiAgICAgaWYgKGlzOEJpdCkKLSAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhl
ZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oc3RyaW5nLmNoYXJh
Y3RlcnM4KCkpLCBsZW5ndGggKiBzaXplb2YoTENoYXIpLCBhbGlnbm9mKExDaGFyKSk7CisgICAg
ICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBs
ZW5ndGggKiBzaXplb2YoTENoYXIpLCBhbGlnbm9mKExDaGFyKSk7CiAgICAgZWxzZQogICAgICAg
ICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihzdHJpbmcuY2hhcmFjdGVyczE2KCkpLCBsZW5ndGggKiBzaXplb2YoVUNoYXIpLCBh
bGlnbm9mKFVDaGFyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Yy9jZi9XS1N0cmluZ0NGLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2YvV0tTdHJp
bmdDRi5tbQppbmRleCA4MjZmZTZiNTBlMDliZDEwZDk0YWM0YWE0NzhkZGFkY2JlZmY1MGZlLi5k
MTc4ZjAxNmRmM2Y4YTMwNzM1NjUzNjhlYmEzZDBmODkxZGFiZTEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZi9XS1N0cmluZ0NGLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9jL2NmL1dLU3RyaW5nQ0YubW0KQEAgLTU3LDYgKzU3LDYgQEAgQ0ZTdHJp
bmdSZWYgV0tTdHJpbmdDb3B5Q0ZTdHJpbmcoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yUmVmLCBX
S1N0cmluZ1JlZiBzdHJpbmcKICAgICAvLyBOT1RFOiBUaGlzIGRvZXMgbm90IHVzZSBTdHJpbmdJ
bXBsOjpjcmVhdGVDRlN0cmluZygpIHNpbmNlIHRoYXQgZnVuY3Rpb24KICAgICAvLyBleHBlY3Rz
IHRvIGJlIGNhbGxlZCBvbiB0aGUgdGhyZWFkIHJ1bm5pbmcgV2ViQ29yZS4KICAgICBpZiAoV2Vi
S2l0Ojp0b0ltcGwoc3RyaW5nUmVmKS0+c3RyaW5nKCkuaXM4Qml0KCkpCi0gICAgICAgIHJldHVy
biBDRlN0cmluZ0NyZWF0ZVdpdGhCeXRlcyhhbGxvY2F0b3JSZWYsIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgVUludDgqPihXZWJLaXQ6OnRvSW1wbChzdHJpbmdSZWYpLT5zdHJpbmcoKS5jaGFyYWN0
ZXJzOCgpKSwgV2ViS2l0Ojp0b0ltcGwoc3RyaW5nUmVmKS0+c3RyaW5nKCkubGVuZ3RoKCksIGtD
RlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIENGU3RyaW5n
Q3JlYXRlV2l0aEJ5dGVzKGFsbG9jYXRvclJlZiwgV2ViS2l0Ojp0b0ltcGwoc3RyaW5nUmVmKS0+
c3RyaW5nKCkuY2hhcmFjdGVyczgoKSwgV2ViS2l0Ojp0b0ltcGwoc3RyaW5nUmVmKS0+c3RyaW5n
KCkubGVuZ3RoKCksIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCB0cnVlKTsKICAgICByZXR1
cm4gQ0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhhbGxvY2F0b3JSZWYsIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgVW5pQ2hhcio+KFdlYktpdDo6dG9JbXBsKHN0cmluZ1JlZiktPnN0cmluZygp
LmNoYXJhY3RlcnMxNigpKSwgV2ViS2l0Ojp0b0ltcGwoc3RyaW5nUmVmKS0+c3RyaW5nKCkubGVu
Z3RoKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2YvV0tV
UkxDRi5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NmL1dLVVJMQ0YubW0KaW5kZXgg
MWQ4NTZmMGQ4MWRhNzUxMGEwZjZjYmUzNjRkMmZmNTQ5NWE2NzVjMC4uMjdjZGM1MWRiM2M5YWM5
Y2IwZWNiNWVmMDczZDJiNTQzYTM1YzkyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL2MvY2YvV0tVUkxDRi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9j
Zi9XS1VSTENGLm1tCkBAIC02Nyw1ICs2Nyw1IEBAIENGVVJMUmVmIFdLVVJMQ29weUNGVVJMKENG
QWxsb2NhdG9yUmVmIGFsbG9jYXRvclJlZiwgV0tVUkxSZWYgVVJMUmVmKQogICAgIC8vIFVURi04
IHdoaWNoIHVzZXMgbGVzcyBtZW1vcnkgYW5kIGlzIHdoYXQgV2ViS2l0IGNsaWVudHMgbWlnaHQg
ZXhwZWN0LgogCiAgICAgQ1N0cmluZyBidWZmZXIgPSBzdHJpbmcudXRmOCgpOwotICAgIHJldHVy
biBDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgVUludDgqPihidWZmZXIuZGF0YSgpKSwgYnVmZmVyLmxlbmd0aCgpLCBrQ0ZTdHJp
bmdFbmNvZGluZ1VURjgsIG51bGxwdHIsIHRydWUpOworICAgIHJldHVybiBDRlVSTENyZWF0ZUFi
c29sdXRlVVJMV2l0aEJ5dGVzKG51bGxwdHIsIGJ1ZmZlci5jaGFyYWN0ZXJzOCgpLCBidWZmZXIu
bGVuZ3RoKCksIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgbnVsbHB0ciwgdHJ1ZSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKaW5kZXggOTQ2YWY0N2RmYjdl
NjExZjFhYjQ0MTczNGE5YjBlMTQxOWZiZWQ4MS4uMGMwZjA4ZmJkZTU2YTlkNDJlYzlmOTZiYTM4
ZmJlNTEyNTU2ZTE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxl
UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNl
LmNwcApAQCAtODQsNyArODQsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNv
dXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKCkKIAogI2lmIFVTRShDRikKICAgICBhdXRvIGRlYWxs
b2NhdG9yID0gY3JlYXRlU2hhcmVhYmxlUmVzb3VyY2VEZWFsbG9jYXRvcih0aGlzKTsKLSAgICBh
dXRvIGNmRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGtDRkFsbG9j
YXRvckRlZmF1bHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihkYXRhKCkpLCBzdGF0
aWNfY2FzdDxDRkluZGV4PihzaXplKCkpLCBkZWFsbG9jYXRvci5nZXQoKSkpOworICAgIGF1dG8g
Y2ZEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVXaXRoQnl0ZXNOb0NvcHkoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgZGF0YSgpLCBzdGF0aWNfY2FzdDxDRkluZGV4PihzaXplKCkpLCBkZWFsbG9jYXRv
ci5nZXQoKSkpOwogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjZkRhdGEuZ2V0KCkp
OwogI2VsaWYgVVNFKEdMSUIpCiAgICAgR1JlZlB0cjxHQnl0ZXM+IGJ5dGVzID0gYWRvcHRHUmVm
KGdfYnl0ZXNfbmV3X3dpdGhfZnJlZV9mdW5jKGRhdGEoKSwgc2l6ZSgpLCBbXSh2b2lkKiBkYXRh
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWREaXNwbGF5TGlzdEhh
bmRsZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaApp
bmRleCA1ODdkOTNlNGYxMjVkNDdjMTY5MGVkZDA3YWMyYzczZTdkNzlmMTY5Li5jYjZhZmFiYjE1
NWU0YjEwZDczZjQ5MGU2YzY5NjFlNjJmZGVhMGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9TaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1NoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgog
ICAgIGNvbnN0IFNoYXJlZE1lbW9yeSYgc2hhcmVkTWVtb3J5KCkgY29uc3QgeyByZXR1cm4gbV9z
aGFyZWRNZW1vcnkuZ2V0KCk7IH0KIAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVm
ZmVySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9
Ci0gICAgdWludDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDhfdCo+KHNoYXJlZE1lbW9yeSgpLmRhdGEoKSk7IH0KKyAgICB1aW50OF90KiBkYXRhKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDhfdCo+KHNoYXJlZE1lbW9yeSgpLmRhdGEoKSk7
IH0KIAogICAgIHVpbnQ2NF90IHVucmVhZEJ5dGVzKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdC5jcHAKaW5kZXggODVmMjIz
Y2ZiYWEwMWI5ZTlmNWQ4MjMyMTliMGE5MDI5MTA3MjdhOS4uZjQ3NDE0ZTU3MzY1NjM4NjExZGMy
NTM3ZjEwY2MwNDc1NmY3NzJhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29tcGlsZWRDb250ZW50UnVsZUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0LmNwcApAQCAtNDYsNyArNDYsNyBAQCBXZWJDb21waWxl
ZENvbnRlbnRSdWxlTGlzdDo6fldlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0KCkKIAogYm9vbCBX
ZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdDo6Y29uZGl0aW9uc0FwcGx5T25seVRvRG9tYWluKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtX2RhdGEuZGF0YS0+ZGF0YSgpKSArIG1f
ZGF0YS5jb25kaXRpb25zQXBwbHlPbmx5VG9Eb21haW5PZmZzZXQpOworICAgIHJldHVybiAqcmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihtX2RhdGEuZGF0YS0+ZGF0YSgpKSArIG1fZGF0YS5jb25kaXRpb25zQXBwbHlPbmx5VG9Eb21h
aW5PZmZzZXQpOwogfQogCiBjb25zdCBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0
ZWNvZGUqIFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0OjpmaWx0ZXJzV2l0aG91dENvbmRpdGlv
bnNCeXRlY29kZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5j
cHAKaW5kZXggYzc5NzZmZjUyZWE4ZTE1YWI2ODBhNTYzZTQzMTA4NjhlY2QzMTAwZS4uZWVlYmQ5
YmQwNWY1NjNhYjRiNTYzNGZmNGFmYjZkZDg3Y2M0YTBiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlv
bkFzc2VydGlvblJlc3BvbnNlLmNwcApAQCAtNTAsNyArNTAsNyBAQCBSZWZQdHI8RGF0YT4gV2Vi
QXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZTo6dXNlckhhbmRsZSgpIGNvbnN0CiAgICAg
UmVmUHRyPEFQSTo6RGF0YT4gZGF0YTsKICAgICBpZiAoYXV0byogdXNlckhhbmRsZSA9IG1fcmVz
cG9uc2UtPnVzZXJIYW5kbGUoKSkgewogICAgICAgICB1c2VySGFuZGxlLT5yZWYoKTsKLSAgICAg
ICAgZGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcocmVpbnRlcnByZXRfY2Fz
dDx1bnNpZ25lZCBjaGFyKj4odXNlckhhbmRsZS0+ZGF0YSgpKSwgdXNlckhhbmRsZS0+Ynl0ZUxl
bmd0aCgpLCBbXSAodW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRhdGEpIHsKKyAgICAgICAg
ZGF0YSA9IEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgY2hhcio+KHVzZXJIYW5kbGUtPmRhdGEoKSksIHVzZXJIYW5kbGUtPmJ5dGVMZW5ndGgoKSwg
W10gKHVuc2lnbmVkIGNoYXIqLCBjb25zdCB2b2lkKiBkYXRhKSB7CiAgICAgICAgICAgICBzdGF0
aWNfY2FzdDxBcnJheUJ1ZmZlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGRhdGEpKS0+ZGVyZWYoKTsK
ICAgICAgICAgfSwgdXNlckhhbmRsZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZS5jcHAKaW5kZXggYjdiZDA5ODU0ODFjZWE4MWYzZTljNDZmOGZkNThiMmI2YzNl
NzFkYy4uNzAyZWZiMjk5YTQxYjAxM2M4NTY5MDVlOWU2YjgwMjYyNzcwYWZlMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCkBAIC0yNDEsNyArMjQxLDcgQEAgc3Rh
dGljIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhRnJvbShjb25zdCBTdHJpbmcmIHN0cmluZykKIHsK
ICAgICBpZiAoc3RyaW5nLmlzTnVsbCgpIHx8ICFzdHJpbmcuaXM4Qml0KCkpCiAgICAgICAgIHJl
dHVybiB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0cmluZy5jaGFyYWN0ZXJz
MTYoKSksIHN0cmluZy5sZW5ndGgoKSAqIHNpemVvZihVQ2hhcikgfTsKLSAgICByZXR1cm4geyBy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzdHJpbmcuY2hhcmFjdGVyczgoKSksIHN0
cmluZy5sZW5ndGgoKSAqIHNpemVvZihMQ2hhcikgfTsKKyAgICByZXR1cm4geyBzdHJpbmcuY2hh
cmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpICogc2l6ZW9mKExDaGFyKSB9OwogfQogCiBzdGF0
aWMgdm9pZCBsb2FkU3RyaW5nKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBzdHJpbmdS
ZWYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgV0tUeXBl
UmVmIHVzZXJEYXRhUmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvU09BdXRob3JpemF0aW9uL1JlZGlyZWN0U09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9SZWRpcmVjdFNPQXV0
aG9yaXphdGlvblNlc3Npb24ubW0KaW5kZXggZmJlZjU0MTVlODZkNzFlYzFmN2YyMTcxZjRiNjI5
YmI2Y2EzMDRlZC4uMDhjN2VkZDM4MTU1NjE3YzI4NWVhNjNkYTMwOWUxYjRjNTc3OTg4MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1Jl
ZGlyZWN0U09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vUmVkaXJlY3RTT0F1dGhvcml6YXRpb25TZXNzaW9u
Lm1tCkBAIC03Nyw3ICs3Nyw3IEBAIHZvaWQgUmVkaXJlY3RTT0F1dGhvcml6YXRpb25TZXNzaW9u
Ojpjb21wbGV0ZUludGVybmFsKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlCiAgICAgICAgIGlm
ICghbmF2aWdhdGlvbkFjdGlvbi0+aXNQcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkgewogICAgICAg
ICAgICAgcGFnZS0+c2V0U2hvdWxkU3VwcHJlc3NTT0F1dGhvcml6YXRpb25Jbk5leHROYXZpZ2F0
aW9uUG9saWN5RGVjaXNpb24oKTsKICAgICAgICAgICAgIGF1dG8gaHRtbCA9IG1ha2VTdHJpbmco
IjxzY3JpcHQ+bG9jYXRpb24gPSAnIiwgcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygpLmdldChI
VFRQSGVhZGVyTmFtZTo6TG9jYXRpb24pLCAiJzwvc2NyaXB0PiIpLnV0ZjgoKTsKLSAgICAgICAg
ICAgIGF1dG8gZGF0YSA9IElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihodG1sLmRhdGEoKSksIGh0bWwubGVuZ3RoKCkpOworICAgICAgICAgICAgYXV0
byBkYXRhID0gSVBDOjpEYXRhUmVmZXJlbmNlKGh0bWwuY2hhcmFjdGVyczgoKSwgaHRtbC5sZW5n
dGgoKSk7CiAgICAgICAgICAgICBwYWdlLT5sb2FkRGF0YShkYXRhLCAidGV4dC9odG1sIl9zLCAi
VVRGLTgiX3MsIG5hdmlnYXRpb25BY3Rpb24tPnJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKSwgbnVs
bHB0ciwgbmF2aWdhdGlvbkFjdGlvbi0+c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JD
bGllbnQuY3BwCmluZGV4IGViODU1OWUwYzNjM2JhNmQ4NGQyZjBhMTJiYWFiNjQyMmE3NTUwNTcu
LjEwNDMwNzA2NWZlY2VmMWYzMjg2YzNkMmRkZDEzYzFjM2Q3M2ZmNDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0L1Jl
bW90ZUluc3BlY3RvckNsaWVudC5jcHAKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIFJlbW90ZUlu
c3BlY3RvckNsaWVudDo6c2VuZFdlYkluc3BlY3RvckV2ZW50KGNvbnN0IFN0cmluZyYgZXZlbnQp
CiAgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CiAgICAgQVNTRVJUKG1fY29ubmVjdGlvbklE
KTsKICAgICBhdXRvIG1lc3NhZ2UgPSBldmVudC51dGY4KCk7Ci0gICAgc2VuZChtX2Nvbm5lY3Rp
b25JRC52YWx1ZSgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtZXNzYWdlLmRh
dGEoKSksIG1lc3NhZ2UubGVuZ3RoKCkpOworICAgIHNlbmQobV9jb25uZWN0aW9uSUQudmFsdWUo
KSwgbWVzc2FnZS5jaGFyYWN0ZXJzOCgpLCBtZXNzYWdlLmxlbmd0aCgpKTsKIH0KIAogSGFzaE1h
cDxTdHJpbmcsIEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yQ29ubmVjdGlvbkNsaWVudDo6Q2Fs
bEhhbmRsZXI+JiBSZW1vdGVJbnNwZWN0b3JDbGllbnQ6OmRpc3BhdGNoTWFwKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAK
aW5kZXggZGQ1NmU3NGVlZWRjY2EzMDMwMjZjMjk1MzNhZjgzYTY5NzdlMTZiNC4uYzQ4NTc1NDUy
OGIzNTRhODZjM2NlODc4ZWZiZjU4OTMzZTM4M2YyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTU2LDggKzU2
LDggQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpub3RpZnlTZW5kRnJhbWUoV2ViU29ja2V0RnJh
bWU6Ok9wQ29kZSBvcENvZGUsIGNvbnN0IHVpbnQKIE5ldHdvcmtTZW5kUXVldWUgV2ViU29ja2V0
Q2hhbm5lbDo6Y3JlYXRlTWVzc2FnZVF1ZXVlKERvY3VtZW50JiBkb2N1bWVudCwgV2ViU29ja2V0
Q2hhbm5lbCYgY2hhbm5lbCkKIHsKICAgICByZXR1cm4geyBkb2N1bWVudCwgWyZjaGFubmVsXShh
dXRvJiB1dGY4U3RyaW5nKSB7Ci0gICAgICAgIGNoYW5uZWwubm90aWZ5U2VuZEZyYW1lKFdlYlNv
Y2tldEZyYW1lOjpPcENvZGU6Ok9wQ29kZVRleHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KHV0ZjhTdHJpbmcuZGF0YSgpKSwgdXRmOFN0cmluZy5sZW5ndGgoKSk7Ci0gICAgICAg
IGNoYW5uZWwuc2VuZE1lc3NhZ2UoTWVzc2FnZXM6Ok5ldHdvcmtTb2NrZXRDaGFubmVsOjpTZW5k
U3RyaW5nIHsgSVBDOjpEYXRhUmVmZXJlbmNlIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4odXRmOFN0cmluZy5kYXRhKCkpLCB1dGY4U3RyaW5nLmxlbmd0aCgpIH0gfSwgdXRmOFN0
cmluZy5sZW5ndGgoKSk7CisgICAgICAgIGNoYW5uZWwubm90aWZ5U2VuZEZyYW1lKFdlYlNvY2tl
dEZyYW1lOjpPcENvZGU6Ok9wQ29kZVRleHQsIHV0ZjhTdHJpbmcuY2hhcmFjdGVyczgoKSwgdXRm
OFN0cmluZy5sZW5ndGgoKSk7CisgICAgICAgIGNoYW5uZWwuc2VuZE1lc3NhZ2UoTWVzc2FnZXM6
Ok5ldHdvcmtTb2NrZXRDaGFubmVsOjpTZW5kU3RyaW5nIHsgSVBDOjpEYXRhUmVmZXJlbmNlIHsg
dXRmOFN0cmluZy5jaGFyYWN0ZXJzOCgpLCB1dGY4U3RyaW5nLmxlbmd0aCgpIH0gfSwgdXRmOFN0
cmluZy5sZW5ndGgoKSk7CiAgICAgfSwgWyZjaGFubmVsXShjb25zdCB1aW50OF90KiBkYXRhLCBz
aXplX3QgYnl0ZUxlbmd0aCkgewogICAgICAgICBjaGFubmVsLm5vdGlmeVNlbmRGcmFtZShXZWJT
b2NrZXRGcmFtZTo6T3BDb2RlOjpPcENvZGVCaW5hcnksIGRhdGEsIGJ5dGVMZW5ndGgpOwogICAg
ICAgICBjaGFubmVsLnNlbmRNZXNzYWdlKE1lc3NhZ2VzOjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6
U2VuZERhdGEgeyBJUEM6OkRhdGFSZWZlcmVuY2UgeyBkYXRhLCBieXRlTGVuZ3RoIH0gfSwgYnl0
ZUxlbmd0aCk7CkBAIC0yOTUsNyArMjk1LDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRS
ZWNlaXZlVGV4dChTdHJpbmcmJiBtZXNzYWdlKQogICAgIH0KIAogICAgIGF1dG8gdXRmOE1lc3Nh
Z2UgPSBtZXNzYWdlLnV0ZjgoKTsKLSAgICBtX2luc3BlY3Rvci5kaWRSZWNlaXZlV2ViU29ja2V0
RnJhbWUobV9kb2N1bWVudC5nZXQoKSwgY3JlYXRlV2ViU29ja2V0RnJhbWVGb3JXZWJJbnNwZWN0
b3IocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odXRmOE1lc3NhZ2UuZGF0YSgpKSwg
dXRmOE1lc3NhZ2UubGVuZ3RoKCksIFdlYlNvY2tldEZyYW1lOjpPcENvZGU6Ok9wQ29kZVRleHQp
KTsKKyAgICBtX2luc3BlY3Rvci5kaWRSZWNlaXZlV2ViU29ja2V0RnJhbWUobV9kb2N1bWVudC5n
ZXQoKSwgY3JlYXRlV2ViU29ja2V0RnJhbWVGb3JXZWJJbnNwZWN0b3IodXRmOE1lc3NhZ2UuY2hh
cmFjdGVyczgoKSwgdXRmOE1lc3NhZ2UubGVuZ3RoKCksIFdlYlNvY2tldEZyYW1lOjpPcENvZGU6
Ok9wQ29kZVRleHQpKTsKIAogICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlTWVzc2FnZShtZXNzYWdl
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0
Yy9SVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5jcHAKaW5kZXgg
N2ViMTA3ODc3ZTJiMmEwYTg5OTQzNjc0MjI0ZmQxYjI4MDA0Y2E0MS4uOTg5NzVjYjhhODM4NTRh
ZTk2ZTRmNzk5ODUyZjk0MmQyM2VhYjZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1JUQ0RhdGFDaGFubmVs
UmVtb3RlTWFuYWdlci5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVs
UmVtb3RlTWFuYWdlcjo6c2VuZERhdGEoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVy
IHNvdQogICAgICAgICBpZiAoaXNSYXcpCiAgICAgICAgICAgICBzb3VyY2UtPnNlbmRSYXdEYXRh
KGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNv
dXJjZS0+c2VuZFN0cmluZ0RhdGEoQ1N0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIq
PihkYXRhLmRhdGEoKSksIGRhdGEuc2l6ZSgpKSk7CisgICAgICAgICAgICBzb3VyY2UtPnNlbmRT
dHJpbmdEYXRhKENTdHJpbmcoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSk7CiAgICAgfQogfQog
CkBAIC0yMjcsNyArMjI3LDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OlJl
bW90ZVNvdXJjZUNvbm5lY3Rpb246OmRpZENoYW5nZVJlYWR5U3RhdGUoV2UKIHZvaWQgUlRDRGF0
YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpSZW1vdGVTb3VyY2VDb25uZWN0aW9uOjpkaWRSZWNlaXZl
U3RyaW5nRGF0YShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgaWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgYXV0byB0ZXh0ID0gc3RyaW5nLnV0ZjgoKTsK
LSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFu
YWdlclByb3h5OjpSZWNlaXZlRGF0YSB7IGlkZW50aWZpZXIsIGZhbHNlLCBJUEM6OkRhdGFSZWZl
cmVuY2UgeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPih0ZXh0LmRhdGEo
KSksIHRleHQubGVuZ3RoKCkgfSB9LCAwKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2Fn
ZXM6OlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlclByb3h5OjpSZWNlaXZlRGF0YSB7IGlkZW50
aWZpZXIsIGZhbHNlLCBJUEM6OkRhdGFSZWZlcmVuY2UgeyB0ZXh0LmNoYXJhY3RlcnM4KCksIHRl
eHQubGVuZ3RoKCkgfSB9LCAwKTsKIH0KIAogdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFn
ZXI6OlJlbW90ZVNvdXJjZUNvbm5lY3Rpb246OmRpZFJlY2VpdmVSYXdEYXRhKFdlYkNvcmU6OlJU
Q0RhdGFDaGFubmVsSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCB1aW50OF90KiBkYXRhLCBz
aXplX3Qgc2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcAppbmRleCBkYmZi
OGI2YjgxMWIzNjQ3NGE1ZGU2YmI2YTdmMzhjNWIwMjUyMDZiLi4wMzBmODFlMDMwOTY4NDVjMGE0
YWU3NDQ4NTUxZmQ1ZTFhMTRhYTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0u
Y3BwCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6c2VuZEph
dmFTY3JpcHRTdHJlYW0oY29uc3QgU3RyaW5nJiByZXN1bHQpCiAgICAgaWYgKCFzdGFydChtX3Jl
cXVlc3RVUkxTdHJpbmcsIHJlc3VsdENTdHJpbmcubGVuZ3RoKCksIDAsICJ0ZXh0L3BsYWluIiwg
IiIpKQogICAgICAgICByZXR1cm47CiAKLSAgICBkZWxpdmVyRGF0YShyZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihyZXN1bHRDU3RyaW5nLmRhdGEoKSksIHJlc3VsdENTdHJpbmcubGVu
Z3RoKCkpOworICAgIGRlbGl2ZXJEYXRhKHJlc3VsdENTdHJpbmcuY2hhcmFjdGVyczgoKSwgcmVz
dWx0Q1N0cmluZy5sZW5ndGgoKSk7CiAgICAgc3RvcChOUFJFU19ET05FKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430803</attachid>
            <date>2021-06-07 20:02:46 -0700</date>
            <delta_ts>2021-06-08 07:57:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226743-20210607200246.patch</filename>
            <type>text/plain</type>
            <size>84406</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA0ZmY3ZmVmMzU4NzdhYzYzZDI4NDZk
OTI1ZTdhOGU5MzhhYWViZTIuLmU2ODMzMzlmYzViYTVkMmEzMWVhYjVkOTkwNzAxNjU2MzljNmYx
OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMjEtMDYtMDcgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgdXNlIG9mIHJlaW50ZXJwcmV0X2Nhc3Q8PiBp
biB0aGUgY29kZWJhc2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNjc0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogd3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmNwcDoKKyAgICAgICAg
KiB3dGYvRmFzdE1hbGxvYy5oOgorICAgICAgICAoV1RGOjpGYXN0QWxsb2NhdG9yOjphbGxvY2F0
ZSk6CisgICAgICAgICogd3RmL1NIQTEuaDoKKyAgICAgICAgKFdURjo6U0hBMTo6YWRkQnl0ZXMp
OgorICAgICAgICAqIHd0Zi9TdGFja0NoZWNrLmg6CisgICAgICAgIChXVEY6OlN0YWNrQ2hlY2s6
OlNjb3BlOjpTY29wZSk6CisgICAgICAgIChXVEY6OlN0YWNrQ2hlY2s6OlN0YWNrQ2hlY2spOgor
ICAgICAgICAqIHd0Zi9VUkxIZWxwZXJzLmNwcDoKKyAgICAgICAgKFdURjo6VVJMSGVscGVyczo6
dXNlclZpc2libGVVUkwpOgorICAgICAgICAqIHd0Zi9VUkxQYXJzZXIuY3BwOgorICAgICAgICAo
V1RGOjpVUkxQYXJzZXI6OmZvcm1VUkxEZWNvZGUpOgorICAgICAgICAqIHd0Zi9jZi9VUkxDRi5j
cHA6CisgICAgICAgIChXVEY6OlVSTDo6Y3JlYXRlQ0ZVUkwgY29uc3QpOgorICAgICAgICAqIHd0
Zi9jb2NvYS9VUkxDb2NvYS5tbToKKyAgICAgICAgKFdURjo6VVJMOjpjcmVhdGVDRlVSTCBjb25z
dCk6CisgICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuY3BwOgorICAg
ICAgICAoV1RGOjpQZXJzaXN0ZW5jZTo6Q29kZXI8Q1N0cmluZz46OmVuY29kZSk6CisgICAgICAg
IChXVEY6OlBlcnNpc3RlbmNlOjpDb2RlcjxTdHJpbmc+OjplbmNvZGUpOgorICAgICAgICAqIHd0
Zi90ZXh0L0NTdHJpbmcuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuY3BwOgorICAg
ICAgICAoV1RGOjpTdHJpbmc6OmxhdGluMSBjb25zdCk6CisgICAgICAgICogd3RmL3RleHQvY2Yv
U3RyaW5nSW1wbENGLmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Y3JlYXRlQ0ZTdHJp
bmcpOgorCiAyMDIxLTA2LTA3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgQWRvcHQgU2VjVHJ1c3RHZXRDZXJ0aWZpY2F0ZUF0SW5kZXggcmVw
bGFjZW1lbnQgd2hlcmUgYXZhaWxhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzIzMDY0YjM0NWE2YTFiNGJj
OWI5MTA0OTJlZDMzMGYwNTMxYTMwNS4uYWI2ZWEwMTQwMGYzNDQ0M2M3NTYyMmUzYjgxZDMwMjZj
MGRjOWNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMSBAQAorMjAyMS0wNi0wNyAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSB1c2Ugb2YgcmVpbnRl
cnByZXRfY2FzdDw+IGluIHRoZSBjb2RlYmFzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NzQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdh
Y3lDRE1TZXNzaW9uQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkNs
ZWFyS2V5OjpnZW5lcmF0ZUtleVJlcXVlc3QpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0
Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6dGFrZSk6CisgICAgICAg
ICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaEJvZHlDb25zdW1lcjo6cmVzb2x2ZSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHlDb25zdW1lcjo6dGFrZUFzQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25z
dW1lcjo6dGFrZUFzVGV4dCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5u
ZWxSZW1vdGVIYW5kbGVyOjpyZWFkeVRvU2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRh
Q2hhbm5lbFJlbW90ZUhhbmRsZXI6OnNlbmRTdHJpbmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6c2VuZFJhd0RhdGEpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZUdTdHJlYW1lci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjb3B5QnVzRGF0YSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9B
dXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjplbmNvZGVBcnJh
eUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpkZWNvZGVBcnJheUJ1ZmZlcik6CisgICAgICAg
ICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6c3RhcnRDbG9zaW5nSGFuZHNoYWtlKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NPdXRnb2luZ0ZyYW1lUXVldWUpOgor
ICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpnZXRFeHBlY3RlZFdlYlNvY2tldEFj
Y2VwdCk6CisgICAgICAgIChXZWJDb3JlOjpoZWFkZXJIYXNWYWxpZEhUVFBWZXJzaW9uKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDbG9uZURlc2VyaWFsaXplcjo6cmVhZFN0cmluZyk6CisgICAgICAgICogY29udGVudGV4
dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0
ZW5zaW9uczo6U2VyaWFsaXplZE5GQTo6cG9pbnRlckF0T2Zmc2V0SW5GaWxlIGNvbnN0KToKKyAg
ICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYXNoUG9pbnRlcik6Cisg
ICAgICAgICogZG9tL1RleHRFbmNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRFbmNv
ZGVyOjplbmNvZGUgY29uc3QpOgorICAgICAgICAqIGRvbS9UZXh0RW5jb2RlclN0cmVhbUVuY29k
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEVuY29kZXJTdHJlYW1FbmNvZGVyOjpmbHVz
aCk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW06Cisg
ICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKToKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleEltYWdlQXJyYXlCdWZmZXJWaWV3SGVs
cGVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmFkZFN0cmluZ1RvU0hBMSk6CisgICAgICAgICogbG9hZGVyL1RleHRSZXNvdXJj
ZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4
dEZyb21VVEY4KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFNjcmlwdDo6c2NyaXB0KToKKyAgICAgICAgKiBwYWdlL2Nv
Y29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpzaG93
VGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6Om5leHRDaHVuayk6Cisg
ICAgICAgICogcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXll
ZEVuY29kZXJHZW5lcmljOjplbmNvZGVTdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dEdMOjpwYWNrSW1hZ2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5k
OjpnZXRQaXhlbEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJh
Y2tlbmQ6OnB1dFBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzTmF0aXZlU2FtcGxlcyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NETVNlc3Npb25BVkZvdW5k
YXRpb25DRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Y6
OmdlbmVyYXRlS2V5UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZGb3Vu
ZGF0aW9uQ0Y6OnVwZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkluYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGOjpyZWFkTmF0aXZlU2FtcGxlQnVmZmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVm
ZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyOjpjcmVh
dGVJdGVtQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
RGlzcGxheUxpc3Q6Okl0ZXJhdG9yOjp1cGRhdGVDdXJyZW50SXRlbSk6CisgICAgICAgICogcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmg6CisgICAgICAgIChHSUZJ
bWFnZVJlYWRlcjo6ZGF0YSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1NTTEtleUdl
bmVyYXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxs
ZW5nZVN0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGRTdHJpbmdUb1NIQTEpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZvcm1EYXRhQnVpbGRlcjo6ZW5jb2RlU3RyaW5nQXNGb3JtRGF0YSk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlOjpzZW5kSGFuZHNoYWtlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaDoKKyAgICAgICAg
KFdlYkNvcmU6Omh0dHBIZWFkZXJWYWx1ZVVzaW5nU3VpdGFibGVFbmNvZGluZyk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6cGxhdGZvcm1TZW5kSW50
ZXJuYWwpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsQ2FjaGVFbnRyeTo6Z2VuZXJhdGVCYXNlRmlsZW5h
bWUpOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50Ojpjb2x1bW5CbG9iVmlldyk6CisgICAgICAgICog
dGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpz
YW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToKKwogMjAyMS0wNi0wNyAgQWxleCBDaHJpc3RlbnNlbiAg
PGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkb3B0IFNlY1RydXN0R2V0Q2Vy
dGlmaWNhdGVBdEluZGV4IHJlcGxhY2VtZW50IHdoZXJlIGF2YWlsYWJsZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZwpp
bmRleCBjYjE2Y2ZiZThkZWI1MTAwOThlMzIwYTE0ZDliOGZlNWY1YTZhZDE4Li40ZGQ2YTM4NjQ0
MjNmODlmN2QwZTBkOTBmYzZhNzg3MDA2NjljZDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJp
dmVyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE1IEBACisyMDIxLTA2LTA3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmVkdWNlIHVzZSBvZiByZWludGVycHJldF9jYXN0PD4gaW4gdGhlIGNvZGViYXNlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY3NDMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNvY2tldC9I
VFRQUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkRyaXZlcjo6SFRUUFBhcnNlcjo6cmVhZExpbmUp
OgorICAgICAgICAqIHNvY2tldC9TZXNzaW9uSG9zdFNvY2tldC5jcHA6CisgICAgICAgIChXZWJE
cml2ZXI6OlNlc3Npb25Ib3N0OjpzZW5kV2ViSW5zcGVjdG9yRXZlbnQpOgorCiAyMDIxLTA2LTAx
ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgPHd0Zi9P
cHRpb25hbC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCAzZTIxZjFlMGRiMWE4NWJhNWY1ZGE1ZjAyZTdjZTdjZjgz
NWY4ODQxLi44M2ViYmNiNGQwZDkyODJlZDBkMmJhNzZmM2MyNDdmM2U4MWNlZTY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDUyIEBACisyMDIxLTA2LTA3ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmVkdWNlIHVzZSBvZiByZWludGVycHJldF9jYXN0PD4gaW4gdGhl
IGNvZGViYXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjY3NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVySW5pdGlhbGl6YXRp
b25EYXRhRW5jb3VudGVyZWQpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4
dFRyYWNrUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVUZXh0VHJhY2tQcm94eTo6
YWRkRGF0YUN1ZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNv
cmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUmVjb3JkZXI6OmZldGNoRGF0
YSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YUN1cmwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGE6OmFwcGx5IGNvbnN0KToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVLZXkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6Omhhc2hTdHJpbmcpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL3NvdXAvV2ViS2l0RGlyZWN0b3J5SW5wdXRTdHJlYW0uY3BwOgorICAgICAgICAo
d2Via2l0RGlyZWN0b3J5SW5wdXRTdHJlYW1SZWFkKToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMv
QXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPENTdHJpbmc+
OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFN0cmluZz46OmVuY29kZSk6
CisgICAgICAgICogU2hhcmVkL0FQSS9jL2NmL1dLU3RyaW5nQ0YubW06CisgICAgICAgIChXS1N0
cmluZ0NvcHlDRlN0cmluZyk6CisgICAgICAgICogU2hhcmVkL0FQSS9jL2NmL1dLVVJMQ0YubW06
CisgICAgICAgIChXS1VSTENvcHlDRlVSTCk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJl
c291cmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNo
YXJlZEJ1ZmZlcik6CisgICAgICAgICogU2hhcmVkL1NoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmg6
CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZERpc3BsYXlMaXN0SGFuZGxlOjpkYXRhIGNvbnN0KToK
KyAgICAgICAgKiBTaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3QuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdDo6Y29uZGl0aW9uc0FwcGx5T25s
eVRvRG9tYWluIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRp
Y2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuY3BwOgorICAgICAgICAoQVBJOjpXZWJBdXRoZW50aWNh
dGlvbkFzc2VydGlvblJlc3BvbnNlOjp1c2VySGFuZGxlIGNvbnN0KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKGRhdGFGcm9tKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1JlZGlyZWN0U09BdXRob3JpemF0aW9uU2Vz
c2lvbi5tbToKKyAgICAgICAgKFdlYktpdDo6UmVkaXJlY3RTT0F1dGhvcml6YXRpb25TZXNzaW9u
Ojpjb21wbGV0ZUludGVybmFsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tl
dC9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbnNw
ZWN0b3JDbGllbnQ6OnNlbmRXZWJJbnNwZWN0b3JFdmVudCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTb2Nr
ZXRDaGFubmVsOjpjcmVhdGVNZXNzYWdlUXVldWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb2Nr
ZXRDaGFubmVsOjpkaWRSZWNlaXZlVGV4dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3Jr
L3dlYnJ0Yy9SVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OnNlbmREYXRhKToKKyAgICAgICAgKFdlYktp
dDo6UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpSZW1vdGVTb3VyY2VDb25uZWN0aW9uOjpk
aWRSZWNlaXZlU3RyaW5nRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQ
bHVnaW5TdHJlYW06OnNlbmRKYXZhU2NyaXB0U3RyZWFtKToKKwogMjAyMS0wNi0wNyAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkb3B0IFNl
Y1RydXN0R2V0Q2VydGlmaWNhdGVBdEluZGV4IHJlcGxhY2VtZW50IHdoZXJlIGF2YWlsYWJsZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIu
Y3BwIGIvU291cmNlL1dURi93dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuY3BwCmlu
ZGV4IGNiYWI5NjVlOTIzYmE0M2Y5YTUzOTg2NmVkMTYzY2Q0ZjQyNmFjOTcuLmRmODI1ODQyNWQ5
M2UwMDU4Yzg0ZmU3Y2VjMmVlMDZiMjRjNjdiMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9D
cnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5jcHAKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lk
IEFSQzRSYW5kb21OdW1iZXJHZW5lcmF0b3I6OnJhbmRvbVZhbHVlcyh2b2lkKiBidWZmZXIsIHNp
emVfdCBsZW5ndGgpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogCi0gICAgdW5z
aWduZWQgY2hhciogcmVzdWx0ID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyKj4oYnVm
ZmVyKTsKKyAgICBhdXRvIHJlc3VsdCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihidWZm
ZXIpOwogICAgIHN0aXJJZk5lZWRlZCgpOwogICAgIHdoaWxlIChsZW5ndGgtLSkgewogICAgICAg
ICBtX2NvdW50LS07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmggYi9T
b3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmgKaW5kZXggMDI0ZjFiOTFjYjlhYTFkMDRhOGNlNjQ0
ZjFiZjVkZmZmMWE1YzRkNi4uNzNkOTY5YjQyMDU2ZjYxY2JmNTQwMGIxZmE1Yzg3YmI3ZDhkNmY0
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmFzdE1hbGxvYy5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL0Zhc3RNYWxsb2MuaApAQCAtMjAzLDcgKzIwMyw3IEBAIHB1YmxpYzoKIAogICAgIFQq
IGFsbG9jYXRlKHNpemVfdCBjb3VudCkKICAgICB7Ci0gICAgICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PFQqPihmYXN0TWFsbG9jKHNpemVvZihUKSAqIGNvdW50KSk7CisgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxUKj4oZmFzdE1hbGxvYyhzaXplb2YoVCkgKiBjb3VudCkpOwogICAgIH0K
IAogICAgIHZvaWQgZGVhbGxvY2F0ZShUKiBwb2ludGVyLCBzaXplX3QpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9TSEExLmggYi9Tb3VyY2UvV1RGL3d0Zi9TSEExLmgKaW5kZXggMmM3ZDlh
MzY0ZTE1OWU0ZGQwNDU5ZjQ3MjA1YzgzZGNkMDYzMjliZi4uNWJkYTQyZWQ2ZDZkNjgzZTViYWEx
YjM5OWFlODBjYjE1MTlkYmE5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU0hBMS5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL1NIQTEuaApAQCAtNTEsOCArNTEsNyBAQCBwdWJsaWM6CiAgICAg
fQogICAgIHZvaWQgYWRkQnl0ZXMoY29uc3QgQ1N0cmluZyYgaW5wdXQpCiAgICAgewotICAgICAg
ICBjb25zdCBjaGFyKiBzdHJpbmcgPSBpbnB1dC5kYXRhKCk7Ci0gICAgICAgIGFkZEJ5dGVzKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0cmluZyksIGlucHV0Lmxlbmd0aCgpKTsK
KyAgICAgICAgYWRkQnl0ZXMoaW5wdXQuY2hhcmFjdGVyczgoKSwgaW5wdXQubGVuZ3RoKCkpOwog
ICAgIH0KICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhZGRCeXRlcyhjb25zdCB1aW50OF90
KiBpbnB1dCwgc2l6ZV90IGxlbmd0aCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1N0
YWNrQ2hlY2suaCBiL1NvdXJjZS9XVEYvd3RmL1N0YWNrQ2hlY2suaAppbmRleCA5YzcyNzg2MmMw
OWZmMTAzOWEzNzc3MmIyZDYzNjhhNGQ0Y2I0NDExLi5hMTkyZmM3MWUyNTg4NmJiYzYyMGRiN2Fl
NWNmN2U1MGIyYjg2NGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TdGFja0NoZWNrLmgK
KysrIGIvU291cmNlL1dURi93dGYvU3RhY2tDaGVjay5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIC8vIHRoZW4gd2UgZWl0aGVyIG5lZWQgdG86CiAgICAgICAgICAgICAv
LyAxLiBicmVhayB0aGUgaW50ZXJ2YWwgaW50byBzbWFsbGVyIHBpZWNlcyAoaS5lLiBpbnNlcnQg
bW9yZSBjaGVja3MpLCBvcgogICAgICAgICAgICAgLy8gMi4gdXNlIGEgbGFyZ2VyIHJlc2VydmVk
Wm9uZSBzaXplLgotICAgICAgICAgICAgdWludDhfdCogY3VycmVudFN0YWNrQ2hlY2twb2ludCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGN1cnJlbnRTdGFja1BvaW50ZXIoKSk7CisgICAg
ICAgICAgICB1aW50OF90KiBjdXJyZW50U3RhY2tDaGVja3BvaW50ID0gc3RhdGljX2Nhc3Q8dWlu
dDhfdCo+KGN1cnJlbnRTdGFja1BvaW50ZXIoKSk7CiAgICAgICAgICAgICB1aW50OF90KiBwcmV2
aW91c1N0YWNrQ2hlY2twb2ludCA9IG1fY2hlY2tlci5tX2xhc3RTdGFja0NoZWNrcG9pbnQ7CiAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChwcmV2aW91c1N0YWNrQ2hlY2twb2ludCAtIGN1cnJl
bnRTdGFja0NoZWNrcG9pbnQgPiAwKTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHByZXZp
b3VzU3RhY2tDaGVja3BvaW50IC0gY3VycmVudFN0YWNrQ2hlY2twb2ludCA8IHN0YXRpY19jYXN0
PHB0cmRpZmZfdD4obV9jaGVja2VyLm1fcmVzZXJ2ZWRab25lKSk7CkBAIC04Nyw3ICs4Nyw3IEBA
IHB1YmxpYzoKICAgICAgICAgOiBtX3N0YWNrTGltaXQoYm91bmRzLnJlY3Vyc2lvbkxpbWl0KG1p
blJlc2VydmVkWm9uZSkpCiAjaWYgVkVSSUZZX1NUQUNLX0NIRUNLX1JFU0VSVkVEX1pPTkVfU0la
RQogICAgICAgICAsIG1fb3duZXJUaHJlYWQoJlRocmVhZDo6Y3VycmVudCgpKQotICAgICAgICAs
IG1fbGFzdFN0YWNrQ2hlY2twb2ludChyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihjdXJyZW50
U3RhY2tQb2ludGVyKCkpKQorICAgICAgICAsIG1fbGFzdFN0YWNrQ2hlY2twb2ludChzdGF0aWNf
Y2FzdDx1aW50OF90Kj4oY3VycmVudFN0YWNrUG9pbnRlcigpKSkKICAgICAgICAgLCBtX3Jlc2Vy
dmVkWm9uZShtaW5SZXNlcnZlZFpvbmUpCiAjZW5kaWYKICAgICB7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL1VSTEhlbHBlcnMuY3BwIGIvU291cmNlL1dURi93dGYvVVJMSGVscGVycy5j
cHAKaW5kZXggOWE5ZDA2MDEzZTc1NWNlY2Q4YWZiOGIyN2YwNDY5M2YyMWRkMGMwYS4uMGE5ODY1
ZTkyNjFkOWYxYzFmY2MwZTFlMWQ1MjlkMDYyNzhjMmExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvVVJMSGVscGVycy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVVJMSGVscGVycy5jcHAK
QEAgLTgyMiw3ICs4MjIsNyBAQCBzdGF0aWMgU3RyaW5nIGVzY2FwZVVuc2FmZUNoYXJhY3RlcnMo
Y29uc3QgU3RyaW5nJiBzb3VyY2VCdWZmZXIpCiAKIFN0cmluZyB1c2VyVmlzaWJsZVVSTChjb25z
dCBDU3RyaW5nJiB1cmwpCiB7Ci0gICAgYXV0byogYmVmb3JlID0gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1bnNpZ25lZCBjaGFyKj4odXJsLmRhdGEoKSk7CisgICAgYXV0byogYmVmb3JlID0gdXJs
LmNoYXJhY3RlcnM4KCk7CiAgICAgaW50IGxlbmd0aCA9IHVybC5sZW5ndGgoKTsKIAogICAgIGlm
ICghbGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVJMUGFyc2VyLmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL1VSTFBhcnNlci5jcHAKaW5kZXggMjkzNjlhMmEzMWVkMDRhYmVlMGRkNmZm
OThkMmIyNmQwNTU2MDhkZi4uOTdmNzcwYjc2NzYwYTU1OWMwYmQ3ODEzNmE4MWJjZmFjYTM5ZTUw
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVVJMUGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9VUkxQYXJzZXIuY3BwCkBAIC0yNzkyLDcgKzI3OTIsNyBAQCBzdGQ6Om9wdGlvbmFs
PFN0cmluZz4gVVJMUGFyc2VyOjpmb3JtVVJMRGVjb2RlKFN0cmluZ1ZpZXcgaW5wdXQpCiAgICAg
YXV0byB1dGY4ID0gaW5wdXQudXRmOChTdHJpY3RDb252ZXJzaW9uKTsKICAgICBpZiAodXRmOC5p
c051bGwoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBhdXRvIHBlcmNlbnRE
ZWNvZGVkID0gcGVyY2VudERlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4odXRm
OC5kYXRhKCkpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICBhdXRvIHBlcmNlbnREZWNvZGVkID0gcGVy
Y2VudERlY29kZSh1dGY4LmNoYXJhY3RlcnM4KCksIHV0ZjgubGVuZ3RoKCkpOwogICAgIHJldHVy
biBTdHJpbmc6OmZyb21VVEY4UmVwbGFjaW5nSW52YWxpZFNlcXVlbmNlcyhwZXJjZW50RGVjb2Rl
ZC5kYXRhKCksIHBlcmNlbnREZWNvZGVkLnNpemUoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL2NmL1VSTENGLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2NmL1VSTENGLmNwcAppbmRl
eCAxNDNkYzg1NjYyZjRlN2FkMzMyMjZjMzM0ZmZiYWE1ZDRlY2ZmOGU5Li43YzZlNDc3MDRhOGVm
ZDcwNDkyOTM4MmY1Y2ZjN2I4YTRiYmZiN2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9j
Zi9VUkxDRi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvY2YvVVJMQ0YuY3BwCkBAIC01MiwxMCAr
NTIsMTAgQEAgUmV0YWluUHRyPENGVVJMUmVmPiBVUkw6OmNyZWF0ZUNGVVJMKCkgY29uc3QKIHsK
ICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNmVVJMOwogICAgIGlmIChMSUtFTFkobV9zdHJpbmcu
aXM4Qml0KCkgJiYgbV9zdHJpbmcuaXNBbGxBU0NJSSgpKSkKLSAgICAgICAgY2ZVUkwgPSBhZG9w
dENGKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMobnVsbHB0ciwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBVSW50OCo+KG1fc3RyaW5nLmNoYXJhY3RlcnM4KCkpLCBtX3N0cmluZy5sZW5n
dGgoKSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBudWxscHRyLCB0cnVlKSk7CisgICAgICAgIGNm
VVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKG51bGxwdHIsIG1f
c3RyaW5nLmNoYXJhY3RlcnM4KCksIG1fc3RyaW5nLmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGlu
Z1VURjgsIG51bGxwdHIsIHRydWUpKTsKICAgICBlbHNlIHsKICAgICAgICAgQ1N0cmluZyB1dGY4
ID0gbV9zdHJpbmcudXRmOCgpOwotICAgICAgICBjZlVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVB
YnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxscHRyLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4
Kj4odXRmOC5kYXRhKCkpLCB1dGY4Lmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIG51
bGxwdHIsIHRydWUpKTsKKyAgICAgICAgY2ZVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlQWJzb2x1
dGVVUkxXaXRoQnl0ZXMobnVsbHB0ciwgdXRmOC5jaGFyYWN0ZXJzOCgpLCB1dGY4Lmxlbmd0aCgp
LCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIG51bGxwdHIsIHRydWUpKTsKICAgICB9CiAKICAgICBp
ZiAocHJvdG9jb2xJc0luSFRUUEZhbWlseSgpICYmICFpc0NGVVJMU2FtZU9yaWdpbihjZlVSTC5n
ZXQoKSwgKnRoaXMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvVVJMQ29jb2Eu
bW0gYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9VUkxDb2NvYS5tbQppbmRleCBkMWQxYjFiZGI2YzUy
MmJiZGI5OTU3YWIxYTk5Y2M3Nzc2Y2QzM2VkLi41OTE5MDAwYTJiMjMyY2M4YTNjY2Q1YmQxNjAy
YTJhMWQ1MWQwMWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9VUkxDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9VUkxDb2NvYS5tbQpAQCAtNzAsMTAgKzcwLDEw
IEBAIFJldGFpblB0cjxDRlVSTFJlZj4gVVJMOjpjcmVhdGVDRlVSTCgpIGNvbnN0CiAKICAgICBS
ZXRhaW5QdHI8Q0ZVUkxSZWY+IGNmVVJMOwogICAgIGlmIChMSUtFTFkobV9zdHJpbmcuaXM4Qml0
KCkgJiYgbV9zdHJpbmcuaXNBbGxBU0NJSSgpKSkKLSAgICAgICAgY2ZVUkwgPSBhZG9wdENGKENG
VVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMobnVsbHB0ciwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBVSW50OCo+KG1fc3RyaW5nLmNoYXJhY3RlcnM4KCkpLCBtX3N0cmluZy5sZW5ndGgoKSwg
a0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBudWxscHRyLCB0cnVlKSk7CisgICAgICAgIGNmVVJMID0g
YWRvcHRDRihDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKG51bGxwdHIsIG1fc3RyaW5n
LmNoYXJhY3RlcnM4KCksIG1fc3RyaW5nLmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgs
IG51bGxwdHIsIHRydWUpKTsKICAgICBlbHNlIHsKICAgICAgICAgQ1N0cmluZyB1dGY4ID0gbV9z
dHJpbmcudXRmOCgpOwotICAgICAgICBjZlVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVBYnNvbHV0
ZVVSTFdpdGhCeXRlcyhudWxscHRyLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4odXRm
OC5kYXRhKCkpLCB1dGY4Lmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIG51bGxwdHIs
IHRydWUpKTsKKyAgICAgICAgY2ZVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxX
aXRoQnl0ZXMobnVsbHB0ciwgdXRmOC5jaGFyYWN0ZXJzOCgpLCB1dGY4Lmxlbmd0aCgpLCBrQ0ZT
dHJpbmdFbmNvZGluZ1VURjgsIG51bGxwdHIsIHRydWUpKTsKICAgICB9CiAKICAgICBpZiAocHJv
dG9jb2xJc0luSFRUUEZhbWlseSgpICYmICFXVEY6OmlzQ0ZVUkxTYW1lT3JpZ2luKGNmVVJMLmdl
dCgpLCAqdGhpcykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wZXJzaXN0ZW5jZS9QZXJz
aXN0ZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRD
b2RlcnMuY3BwCmluZGV4IDQ2MzU4YmRjYmY2NTJmNzE0YmE3NzZhNjJlY2NkY2JlMjQ2NjkxYWIu
LjhhMTQ0MTY4NDEyZTVhZTVkMWUwMDM4OGViYTE4YzNlODE5Yzc2NjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuY3BwCkBAIC01Nyw3ICs1Nyw3
IEBAIHZvaWQgQ29kZXI8Q1N0cmluZz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBD
U3RyaW5nJiBzdHJpbmcpCiAKICAgICB1aW50MzJfdCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7
CiAgICAgZW5jb2RlciA8PCBsZW5ndGg7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERh
dGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oc3RyaW5nLmRhdGEoKSksIGxlbmd0
aCk7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoc3RyaW5nLmNoYXJhY3RlcnM4
KCksIGxlbmd0aCk7CiB9CiAKIHN0ZDo6b3B0aW9uYWw8Q1N0cmluZz4gQ29kZXI8Q1N0cmluZz46
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQpAQCAtOTgsNyArOTgsNyBAQCB2b2lkIENvZGVyPFN0
cmluZz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTdHJpbmcmIHN0cmluZykKICAg
ICBlbmNvZGVyIDw8IGxlbmd0aCA8PCBpczhCaXQ7CiAKICAgICBpZiAoaXM4Qml0KQotICAgICAg
ICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihzdHJpbmcuY2hhcmFjdGVyczgoKSksIGxlbmd0aCAqIHNpemVvZihMQ2hhcikpOwor
ICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShzdHJpbmcuY2hhcmFjdGVyczgo
KSwgbGVuZ3RoICogc2l6ZW9mKExDaGFyKSk7CiAgICAgZWxzZQogICAgICAgICBlbmNvZGVyLmVu
Y29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzdHJp
bmcuY2hhcmFjdGVyczE2KCkpLCBsZW5ndGggKiBzaXplb2YoVUNoYXIpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQ1N0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9D
U3RyaW5nLmgKaW5kZXggZTA1ZGFmNzdmNTNlMTVlM2UwNjNhMzI0ZjczYzJlODZkNzRhMzk4MS4u
YTExYTg4Yjg4NjBjZDQzMzllZDY5YzNhODNmNDIwZjc5NzJlNDI4YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvdGV4dC9DU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9DU3Ry
aW5nLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L0xDaGFyLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCkBAIC02MSw2ICs2Miw3IEBA
IHB1YmxpYzoKICAgICBDU3RyaW5nKCkgeyB9CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIENTdHJp
bmcoY29uc3QgY2hhciopOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBDU3RyaW5nKGNvbnN0IGNo
YXIqLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBDU3RyaW5nKGNvbnN0IExDaGFyKiBkYXRhLCBzaXpl
X3QgbGVuZ3RoKSA6IENTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSks
IGxlbmd0aCkgeyB9CiAgICAgQ1N0cmluZyhDU3RyaW5nQnVmZmVyKiBidWZmZXIpIDogbV9idWZm
ZXIoYnVmZmVyKSB7IH0KICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIENTdHJpbmcgbmV3
VW5pbml0aWFsaXplZChzaXplX3QgbGVuZ3RoLCBjaGFyKiYgY2hhcmFjdGVyQnVmZmVyKTsKICAg
ICBDU3RyaW5nKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpIDogbV9idWZmZXIoSGFzaFRhYmxl
RGVsZXRlZFZhbHVlKSB7IH0KQEAgLTY5LDYgKzcxLDkgQEAgcHVibGljOgogICAgIHsKICAgICAg
ICAgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPmRhdGEoKSA6IG51bGxwdHI7CiAgICAgfQor
CisgICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnM4KCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBMQ2hhcio+KGRhdGEoKSk7IH0KKwogICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBjaGFyKiBtdXRhYmxlRGF0YSgpOwogICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdAogICAgIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAppbmRleCA4NmY5ODM4MGRhMDg1ZWEzMmJmYmMwMDM3
MDEwNjk0Mjk5MmMzYTE1Li5hNmQ0ZGQyMzNkZGE2OGRjZDhhYzIxZDg1YjA4ZDFjZGEyMjVmMTgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCkBAIC02NjAsNyArNjYwLDcgQEAgQ1N0cmlu
ZyBTdHJpbmc6OmxhdGluMSgpIGNvbnN0CiAgICAgICAgIHJldHVybiBDU3RyaW5nKCIiLCAwKTsK
IAogICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIENTdHJpbmcocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyKj4odGhpcy0+Y2hhcmFjdGVyczgoKSksIGxlbmd0aCk7CisgICAgICAg
IHJldHVybiBDU3RyaW5nKHRoaXMtPmNoYXJhY3RlcnM4KCksIGxlbmd0aCk7CiAKICAgICBjb25z
dCBVQ2hhciogY2hhcmFjdGVycyA9IHRoaXMtPmNoYXJhY3RlcnMxNigpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAgYi9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAKaW5kZXggYzA3NWMwZDRhYzg5MDhhZjI5ZGIyYzUz
MzVhYWUzZDljMThmNDMxOC4uMWUyMzY0NzE0ZjhiNzgwYTQ3MTA2Y2IwOTJlYjg3ZWIzMTJlNGFl
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvY2YvU3RyaW5nSW1wbENGLmNwcApAQCAtMTE5LDcgKzEx
OSw3IEBAIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gU3RyaW5nSW1wbDo6Y3JlYXRlQ0ZTdHJpbmco
KQogewogICAgIGlmICghbV9sZW5ndGggfHwgIWlzTWFpblRocmVhZCgpKSB7CiAgICAgICAgIGlm
IChpczhCaXQoKSkKLSAgICAgICAgICAgIHJldHVybiBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0
aEJ5dGVzKG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihjaGFyYWN0ZXJz
OCgpKSwgbV9sZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBmYWxzZSkpOworICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXMobnVsbHB0ciwg
Y2hhcmFjdGVyczgoKSwgbV9sZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBmYWxz
ZSkpOwogICAgICAgICByZXR1cm4gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJz
KG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVW5pQ2hhcio+KGNoYXJhY3RlcnMxNigp
KSwgbV9sZW5ndGgpKTsKICAgICB9CiAgICAgQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yID0gU3Ry
aW5nV3JhcHBlckNGQWxsb2NhdG9yOjphbGxvY2F0b3IoKTsKQEAgLTEzMCw3ICsxMzAsNyBAQCBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IFN0cmluZ0ltcGw6OmNyZWF0ZUNGU3RyaW5nKCkKIAogICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3RyaW5nOwogICAgIGlmIChpczhCaXQoKSkKLSAgICAg
ICAgc3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhCeXRlc05vQ29weShhbGxvY2F0
b3IsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihjaGFyYWN0ZXJzOCgpKSwgbV9sZW5n
dGgsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBmYWxzZSwga0NGQWxsb2NhdG9yTnVsbCkp
OworICAgICAgICBzdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5
KGFsbG9jYXRvciwgY2hhcmFjdGVyczgoKSwgbV9sZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nSVNP
TGF0aW4xLCBmYWxzZSwga0NGQWxsb2NhdG9yTnVsbCkpOwogICAgIGVsc2UKICAgICAgICAgc3Ry
aW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzTm9Db3B5KGFsbG9jYXRv
ciwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVbmlDaGFyKj4oY2hhcmFjdGVyczE2KCkpLCBtX2xl
bmd0aCwga0NGQWxsb2NhdG9yTnVsbCkpOwogICAgIC8vIENvcmVGb3VuZGF0aW9uIG1pZ2h0IG5v
dCBoYXZlIHRvIGFsbG9jYXRlIGFueXRoaW5nLCB3ZSBjbGVhciBjdXJyZW50U3RyaW5nIGluIGNh
c2Ugd2UgZGlkIG5vdCBleGVjdXRlIGFsbG9jYXRlKCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJL
ZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVn
YWN5Q0RNU2Vzc2lvbkNsZWFyS2V5LmNwcAppbmRleCBiMjI4Mzg5OWZkNjM2MTVkMzY3ZDk4MTg2
ZmY4ODc2MWVhMTE4YmVmLi5jZTFjMTk4ZmM2YTRkOWU3NmMwNDNkYjQ5MWZkODMyZDllNzNiZDU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2Fj
eS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktleS5jcHAKQEAg
LTcwLDcgKzcwLDcgQEAgUmVmUHRyPFVpbnQ4QXJyYXk+IENETVNlc3Npb25DbGVhcktleTo6Z2Vu
ZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUKICAgICBtX2luaXREYXRhID0g
aW5pdERhdGE7CiAKICAgICBib29sIHNhd0Vycm9yID0gZmFsc2U7Ci0gICAgU3RyaW5nIGtleUlE
ID0gVVRGOEVuY29kaW5nKCkuZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3RfcHRyPGNoYXIqPihtX2lu
aXREYXRhLT5iYXNlQWRkcmVzcygpKSwgbV9pbml0RGF0YS0+Ynl0ZUxlbmd0aCgpLCB0cnVlLCBz
YXdFcnJvcik7CisgICAgU3RyaW5nIGtleUlEID0gVVRGOEVuY29kaW5nKCkuZGVjb2RlKHN0YXRp
Y19jYXN0PGNoYXIqPihtX2luaXREYXRhLT5iYXNlQWRkcmVzcygpKSwgbV9pbml0RGF0YS0+Ynl0
ZUxlbmd0aCgpLCB0cnVlLCBzYXdFcnJvcik7CiAgICAgaWYgKHNhd0Vycm9yKSB7CiAgICAgICAg
IGVycm9yQ29kZSA9IFdlYktpdE1lZGlhS2V5RXJyb3I6Ok1FRElBX0tFWUVSUl9DTElFTlQ7CiAg
ICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHkuY3BwCmluZGV4IDQ4MzZkMjgxM2ZlNzRiMTJhMmVkMGEwNWFiYzk5OTk1ZmRiOTBhNDQu
LjBkZDhkZmNkNTFmNDk0OGUyNzMzNjhhYjU2ODAxMzViOGFiNGE3ZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKQEAgLTMwNCw5ICszMDQsOSBAQCBGZXRj
aEJvZHk6OlRha2VuRGF0YSBGZXRjaEJvZHk6OnRha2UoKQogICAgICAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2RlKHVybFNlYXJjaFBhcmFtc0JvZHko
KS50b1N0cmluZygpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwogCiAgICAgaWYg
KGlzQXJyYXlCdWZmZXIoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGFycmF5QnVmZmVyQm9keSgpLmRhdGEoKSksIGFy
cmF5QnVmZmVyQm9keSgpLmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXJCb2R5KCkuZGF0
YSgpKSwgYXJyYXlCdWZmZXJCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKICAgICBpZiAoaXNBcnJheUJ1
ZmZlclZpZXcoKSkKLSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5QnVmZmVyVmlld0JvZHkoKS5iYXNlQWRkcmVz
cygpKSwgYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlC
dWZmZXJWaWV3Qm9keSgpLmJhc2VBZGRyZXNzKCkpLCBhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0
ZUxlbmd0aCgpKTsKIAogICAgIHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCAyYWIwY2FmMTAw
ZDBjMzEzOGMyYjYyNjQzZDczYjIxZWM2YmU5ZWI4Li42MDY0NGJmOTk0MTlmYjM3NzYwZDBmY2Ji
YzZhMDg2ZTc3NTA5OTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtMjc4LDcgKzI3OCw3IEBAIHZvaWQgRmV0Y2hCb2R5
Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBT
dHJpbmcmIGNvCiAgICAgICAgICAgICBpZiAoYXV0byBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1
ZSgpKQogICAgICAgICAgICAgICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSwgY2h1bmstPnNp
emUpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFu
ZERhdGEoV1RGTW92ZShwcm9taXNlKSwgdHlwZSwgY29udGVudFR5cGUsIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGRhdGEtPmRhdGEoKSksIGRhdGEtPnNpemUoKSk7Cisg
ICAgICAgICAgICAgICAgcmVzb2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0
eXBlLCBjb250ZW50VHlwZSwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogICAgICAgICB9
KTsKICAgICAgICAgbV9zaW5rLT5waXBlRnJvbSgqc3RyZWFtKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtMzU1LDcgKzM1NSw3IEBAIFJlZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxv
YihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgICAgICByZXR1cm4gQmxvYjo6
Y3JlYXRlKGNvbnRleHQsIFZlY3Rvcjx1aW50OF90PigpLCBCbG9iOjpub3JtYWxpemVkQ29udGVu
dFR5cGUobV9jb250ZW50VHlwZSkpOwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB0cnkgdG8g
bW92ZSBtX2J1ZmZlciB0byBCbG9iIHdpdGhvdXQgZG9pbmcgZXh0cmEgY29weS4KLSAgICByZXR1
cm4gYmxvYkZyb21EYXRhKGNvbnRleHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQg
Y2hhcio+KG1fYnVmZmVyLT5kYXRhKCkpLCBtX2J1ZmZlci0+c2l6ZSgpLCBtX2NvbnRlbnRUeXBl
KTsKKyAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRleHQsIG1fYnVmZmVyLT5kYXRhKCksIG1f
YnVmZmVyLT5zaXplKCksIG1fY29udGVudFR5cGUpOwogfQogCiBTdHJpbmcgRmV0Y2hCb2R5Q29u
c3VtZXI6OnRha2VBc1RleHQoKQpAQCAtMzY0LDcgKzM2NCw3IEBAIFN0cmluZyBGZXRjaEJvZHlD
b25zdW1lcjo6dGFrZUFzVGV4dCgpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJu
IFN0cmluZygpOwogCi0gICAgYXV0byB0ZXh0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZy
b21VVEY4KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KG1fYnVmZmVyLT5k
YXRhKCkpLCBtX2J1ZmZlci0+c2l6ZSgpKTsKKyAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VE
ZWNvZGVyOjp0ZXh0RnJvbVVURjgobV9idWZmZXItPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSk7
CiAgICAgbV9idWZmZXIgPSBudWxscHRyOwogICAgIHJldHVybiB0ZXh0OwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90
ZUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwCmluZGV4IGU3YzIxYWVmNWIzMDUxM2FmNWM1Y2U5NmQw
ZmQzNDRmZjcyNGVkNjYuLjAxYzEzZDVlZGUxYjllNTgzNWQ4Y2I4M2ZlZmUyNTc4MjhkYTFhNjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNo
YW5uZWxSZW1vdGVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlci5jcHAKQEAgLTgwLDcgKzgwLDcgQEAg
dm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnJlYWR5VG9TZW5kKCkKICAgICBtX2lz
UmVhZHlUb1NlbmQgPSB0cnVlOwogCiAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbV9wZW5kaW5n
TWVzc2FnZXMpCi0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlm
aWVyLCBtZXNzYWdlLmlzUmF3LCByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIq
PihtZXNzYWdlLmJ1ZmZlci0+ZGF0YSgpKSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7CisgICAg
ICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBtZXNzYWdlLmlz
UmF3LCBtZXNzYWdlLmJ1ZmZlci0+ZGF0YSgpLCBtZXNzYWdlLmJ1ZmZlci0+c2l6ZSgpKTsKICAg
ICBtX3BlbmRpbmdNZXNzYWdlcy5jbGVhcigpOwogCiAgICAgaWYgKG1faXNQZW5kaW5nQ2xvc2Up
CkBAIC0xMDAsNyArMTAwLDcgQEAgYm9vbCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnNl
bmRTdHJpbmdEYXRhKGNvbnN0IENTdHJpbmcmIHRleHQpCiAgICAgICAgIG1fcGVuZGluZ01lc3Nh
Z2VzLmFwcGVuZChNZXNzYWdlIHsgZmFsc2UsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHQuZGF0
YSgpLCB0ZXh0Lmxlbmd0aCgpKSB9KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAg
IG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBmYWxzZSwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4odGV4dC5kYXRhKCkpLCB0ZXh0Lmxlbmd0
aCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmREYXRhKG1fcmVtb3RlSWRlbnRpZmllciwgZmFs
c2UsIHRleHQuY2hhcmFjdGVyczgoKSwgdGV4dC5sZW5ndGgoKSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKQEAgLTExMCw3ICsxMTAsNyBAQCBib29sIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxl
cjo6c2VuZFJhd0RhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiAgICAgICAg
IG1fcGVuZGluZ01lc3NhZ2VzLmFwcGVuZChNZXNzYWdlIHsgdHJ1ZSwgU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YSwgc2l6ZSkgfSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBt
X2Nvbm5lY3Rpb24tPnNlbmREYXRhKG1fcmVtb3RlSWRlbnRpZmllciwgdHJ1ZSwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oZGF0YSksIHNpemUpOworICAgIG1fY29ubmVj
dGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCB0cnVlLCBkYXRhLCBzaXplKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZUdTdHJlYW1lci5jcHAK
aW5kZXggNTZlZDYwMWY0NjVhMDFjMGE3NDNhNTkyNTdhNzU1OWMxNjcxZTM4NS4uNDUwMTJlMzBl
ODE4ZmI1ODkzZDQ2MzYzMGJjM2U3YTUxZWIwOTViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlR1N0cmVhbWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3Vy
Y2VHU3RyZWFtZXIuY3BwCkBAIC00Myw4ICs0Myw4IEBAIHN0YXRpYyBWZWN0b3I8c2l6ZV90PiBj
b3B5QnVzRGF0YShBdWRpb0J1cyYgYnVzLCBHc3RCdWZmZXIqIGJ1ZmZlciwgYm9vbCBpc011dGVk
CiAgICAgc2l6ZV90IHNpemUgPSBtYXBwZWRCdWZmZXIuc2l6ZSgpIC8gYnVzLm51bWJlck9mQ2hh
bm5lbHMoKTsKICAgICBmb3IgKHNpemVfdCBjaGFubmVsSW5kZXggPSAwOyBjaGFubmVsSW5kZXgg
PCBidXMubnVtYmVyT2ZDaGFubmVscygpOyArK2NoYW5uZWxJbmRleCkgewogICAgICAgICBjb25z
dCBhdXRvJiBjaGFubmVsID0gKmJ1cy5jaGFubmVsKGNoYW5uZWxJbmRleCk7Ci0gICAgICAgIGF1
dG8gb2Zmc2V0ID0gcmVpbnRlcnByZXRfY2FzdDxzaXplX3Q+KGNoYW5uZWxJbmRleCAqIHNpemUp
OwotICAgICAgICBtZW1jcHkocmVpbnRlcnByZXRfY2FzdDxmbG9hdCo+KG1hcHBlZEJ1ZmZlci5k
YXRhKCkgKyBvZmZzZXQpLCBjaGFubmVsLmRhdGEoKSwgc2l6ZW9mKGZsb2F0KSAqIGNoYW5uZWwu
bGVuZ3RoKCkpOworICAgICAgICBhdXRvIG9mZnNldCA9IGNoYW5uZWxJbmRleCAqIHNpemU7Cisg
ICAgICAgIG1lbWNweShtYXBwZWRCdWZmZXIuZGF0YSgpICsgb2Zmc2V0LCBjaGFubmVsLmRhdGEo
KSwgc2l6ZW9mKGZsb2F0KSAqIGNoYW5uZWwubGVuZ3RoKCkpOwogICAgICAgICBvZmZzZXRzLnVu
Y2hlY2tlZEFwcGVuZChvZmZzZXQpOwogICAgIH0KICAgICByZXR1cm4gb2Zmc2V0czsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclJlc3Bv
bnNlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9y
UmVzcG9uc2VEYXRhLmgKaW5kZXggMjM4MGE0MmQ1ZmE1YWNjOTdhMGYwNmY1ODUxZjg3ZGVjM2Nj
MDk4Ny4uNTU5MTM2YjIzZjQ0NTQxNWFiZjYyODIwM2Q3ZDBmZWJkZmM0ZGNkYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2VE
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9y
UmVzcG9uc2VEYXRhLmgKQEAgLTU5LDcgKzU5LDcgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4K
IHN0YXRpYyB2b2lkIGVuY29kZUFycmF5QnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEFy
cmF5QnVmZmVyJiBidWZmZXIpCiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRf
dD4oYnVmZmVyLmJ5dGVMZW5ndGgoKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERh
dGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYnVmZmVyLmRhdGEoKSksIGJ1ZmZl
ci5ieXRlTGVuZ3RoKCksIDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHN0
YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihidWZmZXIuZGF0YSgpKSwgYnVmZmVyLmJ5dGVMZW5n
dGgoKSwgMSk7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CkBAIC03NSw3ICs3NSw3IEBA
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gZGVjb2RlQXJyYXlCdWZmZXIoRGVjb2RlciYgZGVjb2RlcikK
ICAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobGVuZ3RoLnZhbHVlKCks
IHNpemVvZih1aW50OF90KSk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRf
Y2FzdDx1aW50OF90Kj4oYnVmZmVyLT5kYXRhKCkpLCBsZW5ndGgudmFsdWUoKSwgMSkpCisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShzdGF0aWNfY2FzdDx1aW50OF90Kj4o
YnVmZmVyLT5kYXRhKCkpLCBsZW5ndGgudmFsdWUoKSwgMSkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIHJldHVybiBidWZmZXI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggM2UyNGVhNmY2NTRm
OTIxZTQ4NDE3ZmUwZWZjNGMyOGM0YzI1NzljMC4uMGI3MTFiYWU3MjhmMGE4MjVjYzVmNmZjZDhh
ZWQyOWZlNTA5NTA3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtNDk1LDcgKzQ5NSw3IEBAIHZvaWQgV2Vi
U29ja2V0Q2hhbm5lbDo6c3RhcnRDbG9zaW5nSGFuZHNoYWtlKGludCBjb2RlLCBjb25zdCBTdHJp
bmcmIHJlYXNvbikKICAgICAgICAgYnVmLmFwcGVuZChoaWdoQnl0ZSk7CiAgICAgICAgIGJ1Zi5h
cHBlbmQobG93Qnl0ZSk7CiAgICAgICAgIGF1dG8gcmVhc29uVVRGOCA9IHJlYXNvbi51dGY4KCk7
Ci0gICAgICAgIGJ1Zi5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocmVh
c29uVVRGOC5kYXRhKCkpLCByZWFzb25VVEY4Lmxlbmd0aCgpKTsKKyAgICAgICAgYnVmLmFwcGVu
ZChyZWFzb25VVEY4LmNoYXJhY3RlcnM4KCksIHJlYXNvblVURjgubGVuZ3RoKCkpOwogICAgIH0K
ICAgICBlbnF1ZXVlUmF3RnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZUNsb3NlLCBidWYuZGF0
YSgpLCBidWYuc2l6ZSgpKTsKICAgICBSZWY8V2ViU29ja2V0Q2hhbm5lbD4gcHJvdGVjdGVkVGhp
cygqdGhpcyk7IC8vIEFuIGF0dGVtcHQgdG8gc2VuZCBjbG9zaW5nIGhhbmRzaGFrZSBtYXkgZmFp
bCwgd2hpY2ggd2lsbCBnZXQgdGhlIGNoYW5uZWwgY2xvc2VkIGFuZCBkZXJlZmVyZW5jZWQuCkBA
IC03NDMsNyArNzQzLDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzT3V0Z29pbmdG
cmFtZVF1ZXVlKCkKICAgICAgICAgYXV0byBmcmFtZSA9IG1fb3V0Z29pbmdGcmFtZVF1ZXVlLnRh
a2VGaXJzdCgpOwogICAgICAgICBzd2l0Y2ggKGZyYW1lLT5mcmFtZVR5cGUpIHsKICAgICAgICAg
Y2FzZSBRdWV1ZWRGcmFtZVR5cGVTdHJpbmc6IHsKLSAgICAgICAgICAgIHNlbmRGcmFtZShmcmFt
ZS0+b3BDb2RlLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihmcmFtZS0+c3RyaW5n
RGF0YS5kYXRhKCkpLCBmcmFtZS0+c3RyaW5nRGF0YS5sZW5ndGgoKSwgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKGJvb2wgc3VjY2VzcykgeworICAgICAgICAgICAgc2Vu
ZEZyYW1lKGZyYW1lLT5vcENvZGUsIGZyYW1lLT5zdHJpbmdEYXRhLmNoYXJhY3RlcnM4KCksIGZy
YW1lLT5zdHJpbmdEYXRhLmxlbmd0aCgpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpXSAoYm9vbCBzdWNjZXNzKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFzdWNjZXNzKQog
ICAgICAgICAgICAgICAgICAgICBmYWlsKCJGYWlsZWQgdG8gc2VuZCBXZWJTb2NrZXQgZnJhbWUu
Iik7CiAgICAgICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKaW5kZXggYmUyNDQxMjU2MDdiMWJj
YzMyMjkzNDc0ZDU0NDg2MmJiNTZhYjZlNC4uNTE5ZmFiM2VmZTEyYThiNWNiMjZkMWM5MGJlOGMz
M2JlN2M1ZDhjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKQEAgLTEwMiwxMSArMTAyLDExIEBAIHN0YXRp
YyBTdHJpbmcgZ2VuZXJhdGVTZWNXZWJTb2NrZXRLZXkoKQogCiBTdHJpbmcgV2ViU29ja2V0SGFu
ZHNoYWtlOjpnZXRFeHBlY3RlZFdlYlNvY2tldEFjY2VwdChjb25zdCBTdHJpbmcmIHNlY1dlYlNv
Y2tldEtleSkKIHsKLSAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qgd2ViU29ja2V0S2V5R1VJ
RCA9ICIyNThFQUZBNS1FOTE0LTQ3REEtOTVDQS1DNUFCMERDODVCMTEiOworICAgIGNvbnN0ZXhw
ciB1aW50OF90IHdlYlNvY2tldEtleUdVSURbXSA9ICIyNThFQUZBNS1FOTE0LTQ3REEtOTVDQS1D
NUFCMERDODVCMTEiOwogICAgIFNIQTEgc2hhMTsKICAgICBDU3RyaW5nIGtleURhdGEgPSBzZWNX
ZWJTb2NrZXRLZXkuYXNjaWkoKTsKLSAgICBzaGExLmFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGtleURhdGEuZGF0YSgpKSwga2V5RGF0YS5sZW5ndGgoKSk7Ci0gICAg
c2hhMS5hZGRCeXRlcyhyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih3ZWJTb2NrZXRL
ZXlHVUlEKSwgc3RybGVuKHdlYlNvY2tldEtleUdVSUQpKTsKKyAgICBzaGExLmFkZEJ5dGVzKGtl
eURhdGEuY2hhcmFjdGVyczgoKSwga2V5RGF0YS5sZW5ndGgoKSk7CisgICAgc2hhMS5hZGRCeXRl
cyh3ZWJTb2NrZXRLZXlHVUlELCBzdGQ6OnNpemUod2ViU29ja2V0S2V5R1VJRCkgLSAxKTsKICAg
ICBTSEExOjpEaWdlc3QgaGFzaDsKICAgICBzaGExLmNvbXB1dGVIYXNoKGhhc2gpOwogICAgIHJl
dHVybiBiYXNlNjRFbmNvZGVUb1N0cmluZyhoYXNoLmRhdGEoKSwgU0hBMTo6aGFzaFNpemUpOwpA
QCAtMzI4LDggKzMyOCw4IEBAIFVSTCBXZWJTb2NrZXRIYW5kc2hha2U6Omh0dHBVUkxGb3JBdXRo
ZW50aWNhdGlvbkFuZENvb2tpZXMoKSBjb25zdAogLy8gIlRoZSBIVFRQIHZlcnNpb24gTVVTVCBi
ZSBhdCBsZWFzdCAxLjEuIgogc3RhdGljIGlubGluZSBib29sIGhlYWRlckhhc1ZhbGlkSFRUUFZl
cnNpb24oU3RyaW5nVmlldyBodHRwU3RhdHVzTGluZSkKIHsKLSAgICBjb25zdCBjaGFyKiBodHRw
VmVyc2lvblN0YXRpY1ByZWFtYmxlTGl0ZXJhbCA9ICJIVFRQLyI7Ci0gICAgU3RyaW5nVmlldyBo
dHRwVmVyc2lvblN0YXRpY1ByZWFtYmxlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPiho
dHRwVmVyc2lvblN0YXRpY1ByZWFtYmxlTGl0ZXJhbCksIHN0cmxlbihodHRwVmVyc2lvblN0YXRp
Y1ByZWFtYmxlTGl0ZXJhbCkpOworICAgIGNvbnN0ZXhwciBjaGFyIGh0dHBWZXJzaW9uU3RhdGlj
UHJlYW1ibGVMaXRlcmFsW10gPSAiSFRUUC8iOworICAgIFN0cmluZ1ZpZXcgaHR0cFZlcnNpb25T
dGF0aWNQcmVhbWJsZShodHRwVmVyc2lvblN0YXRpY1ByZWFtYmxlTGl0ZXJhbCwgc3RybGVuKGh0
dHBWZXJzaW9uU3RhdGljUHJlYW1ibGVMaXRlcmFsKSk7CiAgICAgaWYgKCFodHRwU3RhdHVzTGlu
ZS5zdGFydHNXaXRoKGh0dHBWZXJzaW9uU3RhdGljUHJlYW1ibGUpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1
ZmZlclNvdXJjZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRC
dWZmZXJTb3VyY2VQcm92aWRlci5oCmluZGV4IDlkOWU1MmRhZWMwYzA0ZWQyMTYxZWI4MjU2YWZh
Njc3NTUxNWUyNDguLmM0NTJjODNmYmQ1Y2U4OTViZGQwMzFhY2YxNDY4Zjc4NjUwNjIyZDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVBy
b3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291
cmNlUHJvdmlkZXIuaApAQCAtNTIsMTIgKzUyLDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJl
dHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgICAgIGlmICghbV9jb250YWluc09ubHlBU0NJSSkg
ewotICAgICAgICAgICAgbV9jb250YWluc09ubHlBU0NJSSA9IGNoYXJhY3RlcnNBcmVBbGxBU0NJ
SShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4obV9zY3JpcHRCdWZmZXIuYnVmZmVyKCkt
PmRhdGEoKSksIG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOworICAgICAgICAgICAg
bV9jb250YWluc09ubHlBU0NJSSA9IGNoYXJhY3RlcnNBcmVBbGxBU0NJSShtX3NjcmlwdEJ1ZmZl
ci5idWZmZXIoKS0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgpKTsKICAg
ICAgICAgICAgIGlmICgqbV9jb250YWluc09ubHlBU0NJSSkKLSAgICAgICAgICAgICAgICBtX3Nj
cmlwdEhhc2ggPSBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgp
KSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSk7CisgICAgICAgICAgICAgICAgbV9z
Y3JpcHRIYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhtX3Nj
cmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6
ZSgpKTsKICAgICAgICAgfQogICAgICAgICBpZiAoKm1fY29udGFpbnNPbmx5QVNDSUkpCi0gICAg
ICAgICAgICByZXR1cm4geyByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4obV9zY3JpcHRC
dWZmZXIuYnVmZmVyKCktPmRhdGEoKSksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3NjcmlwdEJ1
ZmZlci5idWZmZXIoKS0+c2l6ZSgpKSB9OworICAgICAgICAgICAgcmV0dXJuIHsgbV9zY3JpcHRC
dWZmZXIuYnVmZmVyKCktPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc2NyaXB0QnVm
ZmVyLmJ1ZmZlcigpLT5zaXplKCkpIH07CiAKICAgICAgICAgaWYgKCFtX2NhY2hlZFNjcmlwdFN0
cmluZykgewogICAgICAgICAgICAgbV9jYWNoZWRTY3JpcHRTdHJpbmcgPSBtX3NjcmlwdEJ1ZmZl
ci50b1N0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggNmM2NGEwNDRmNTYwZmY0MjkwOGM5MGNmNGM3YzI0
NmFkNjdhYzg4Zi4uMGI3ZmRhNGQ4ZDYwZTk5MTUzYTQ0ZjExNGFlZjEwNGFhZWU3ZGZmOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwCkBAIC0yMzQwLDcgKzIzNDAsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAoaXM4Qml0
KSB7CiAgICAgICAgICAgICBpZiAoKGVuZCAtIHB0cikgPCBzdGF0aWNfY2FzdDxpbnQ+KGxlbmd0
aCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgc3RyID0gU3Ry
aW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihwdHIpLCBsZW5ndGgpOworICAgICAg
ICAgICAgc3RyID0gU3RyaW5nIHsgcHRyLCBsZW5ndGggfTsKICAgICAgICAgICAgIHB0ciArPSBs
ZW5ndGg7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvU2VyaWFsaXplZE5GQS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9TZXJpYWxpemVkTkZBLmNwcAppbmRleCAwYjMz
Mzg5YTc2OTI1MDBmMjQ0ZmVmNDhiNzIxNzI1YzNmN2ZhMTNlLi4wNGM2ZGE1YTg0OGQwODkxZjMz
ZjRmODM5ZGE5NTJiOGM3Njc5YTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9TZXJpYWxpemVkTkZBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9TZXJpYWxpemVkTkZBLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIFNlcmlhbGl6
ZWRORkE6OlNlcmlhbGl6ZWRORkEoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBmaWxlLCBN
ZXRhZGF0YSYmIG1ldGFkCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogY29uc3QgVCogU2VyaWFsaXpl
ZE5GQTo6cG9pbnRlckF0T2Zmc2V0SW5GaWxlKHNpemVfdCBvZmZzZXQpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KG1fZmlsZS5kYXRhKCkpICsgb2Zmc2V0KTsKKyAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBUKj4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fZmlsZS5kYXRh
KCkpICsgb2Zmc2V0KTsKIH0KIAogYXV0byBTZXJpYWxpemVkTkZBOjpub2RlcygpIGNvbnN0IC0+
IGNvbnN0IFJhbmdlPEltbXV0YWJsZU5GQU5vZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggZmRhYmNk
M2U3Yjg5MmU1MDFkODc5NDMyYWM0NmMzZDcxM2Y4ZWIwMC4uMjQyNjcyOWJmNGQzNTZjZjk1NGQ1
MjAzN2FiNjg5ZWZkNWY3ZDhiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMTYwMCw3ICsxNjAwLDcg
QEAgRXhjZXB0aW9uT3I8dm9pZD4gTm9kZTo6c2V0VGV4dENvbnRlbnQoY29uc3QgU3RyaW5nJiB0
ZXh0KQogICAgIHJldHVybiB7IH07CiB9CiAKLXN0YXRpYyBTSEExOjpEaWdlc3QgaGFzaFBvaW50
ZXIodm9pZCogcG9pbnRlcikKK3N0YXRpYyBTSEExOjpEaWdlc3QgaGFzaFBvaW50ZXIoY29uc3Qg
dm9pZCogcG9pbnRlcikKIHsKICAgICBTSEExIHNoYTE7CiAgICAgc2hhMS5hZGRCeXRlcyhyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPigmcG9pbnRlciksIHNpemVvZihwb2ludGVyKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEVuY29kZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyLmNwcAppbmRleCBkNmQxNDQzZDRmZjk4NTM3MWEwYjhk
ZmQ1NWJmZWM5NGI1YjNmYzU1Li4wYWI5ZjE0N2YwOWVhMWUzNjhmOTViZTM3YjljZGYxMmRiYzcw
NzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEVuY29kZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RW5jb2Rlci5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgUmVm
UHRyPFVpbnQ4QXJyYXk+IFRleHRFbmNvZGVyOjplbmNvZGUoU3RyaW5nJiYgaW5wdXQpIGNvbnN0
CiB7CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgbmVlZCB0byBhbGxvY2F0ZSBhIENTdHJp
bmcgdG8gZW5jb2RlIGludG8gYSBVaW50OEFycmF5LgogICAgIENTdHJpbmcgdXRmOCA9IGlucHV0
LnV0ZjgoKTsKLSAgICByZXR1cm4gVWludDhBcnJheTo6dHJ5Q3JlYXRlKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KHV0ZjguZGF0YSgpKSwgdXRmOC5sZW5ndGgoKSk7CisgICAgcmV0
dXJuIFVpbnQ4QXJyYXk6OnRyeUNyZWF0ZSh1dGY4LmNoYXJhY3RlcnM4KCksIHV0ZjgubGVuZ3Ro
KCkpOwogfQogCiBhdXRvIFRleHRFbmNvZGVyOjplbmNvZGVJbnRvKFN0cmluZyYmIGlucHV0LCBS
ZWY8VWludDhBcnJheT4mJiBhcnJheSkgLT4gRW5jb2RlSW50b1Jlc3VsdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyU3RyZWFtRW5jb2Rlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vVGV4dEVuY29kZXJTdHJlYW1FbmNvZGVyLmNwcAppbmRleCBjZTEwODY3N2I5
NjY1ZDc1NjgxMmVhZGJhMjNmNWIyMzA5YjU0NmZmLi5hMTA0ZmRmMTRjYzIwZDJlMTg0OTRhNGEy
M2Q1ZjNhNDRkM2ViYmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEVuY29k
ZXJTdHJlYW1FbmNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEVuY29kZXJT
dHJlYW1FbmNvZGVyLmNwcApAQCAtNzcsOCArNzcsOCBAQCBSZWZQdHI8VWludDhBcnJheT4gVGV4
dEVuY29kZXJTdHJlYW1FbmNvZGVyOjpmbHVzaCgpCiAgICAgaWYgKCFtX3BlbmRpbmdIaWdoU3Vy
cm9nYXRlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gYnl0ZVNlcXVlbmNl
ID0gIlx4RUZceEJGXHhCRCI7Ci0gICAgcmV0dXJuIFVpbnQ4QXJyYXk6OnRyeUNyZWF0ZShyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihieXRlU2VxdWVuY2UpLCAzKTsKKyAgICBjb25z
dGV4cHIgdWludDhfdCBieXRlU2VxdWVuY2VbXSA9IHsgMHhFRiwgMHhCRiwgMHhCRCB9OworICAg
IHJldHVybiBVaW50OEFycmF5Ojp0cnlDcmVhdGUoYnl0ZVNlcXVlbmNlLCBzdGQ6OnNpemUoYnl0
ZVNlcXVlbmNlKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggYTRlNTMyMzE5OTMzZjBhODYxMmQy
YzIyNTE4Mjk4ZDU5ZDRlOTZiMi4uNzgwOGFmOWEzNWRkOGExZTFhN2FjMDQ3MTQ2ZGRlNjEzYTAz
YmRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50
UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250
ZW50UmVhZGVyQ29jb2EubW0KQEAgLTQ4Niw3ICs0ODYsNyBAQCBzdGF0aWMgU3RyaW5nIHNhbml0
aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBEb2N1bWVudCYgZGVzdGluYXRpb25E
b2N1bQogICAgICAgICBDU3RyaW5nIHV0ZjggPSBzdWJmcmFtZU1hcmt1cC51dGY4KCk7CiAgICAg
ICAgIFZlY3Rvcjx1aW50OF90PiBibG9iQnVmZmVyOwogICAgICAgICBibG9iQnVmZmVyLnJlc2Vy
dmVDYXBhY2l0eSh1dGY4Lmxlbmd0aCgpKTsKLSAgICAgICAgYmxvYkJ1ZmZlci5hcHBlbmQocmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odXRmOC5kYXRhKCkpLCB1dGY4Lmxlbmd0aCgp
KTsKKyAgICAgICAgYmxvYkJ1ZmZlci5hcHBlbmQodXRmOC5jaGFyYWN0ZXJzOCgpLCB1dGY4Lmxl
bmd0aCgpKTsKICAgICAgICAgYXV0byBibG9iID0gQmxvYjo6Y3JlYXRlKCZkZXN0aW5hdGlvbkRv
Y3VtZW50LCBXVEZNb3ZlKGJsb2JCdWZmZXIpLCB0eXBlKTsKIAogICAgICAgICBTdHJpbmcgc3Vi
ZnJhbWVCbG9iVVJMID0gRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZGVzdGluYXRpb25Eb2N1bWVu
dCwgYmxvYik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDZkN2M5YzhiMGQ4MzRiOWJlM2Q4NDU0YjIy
MTNhZTBkYTE0YTY2OGIuLjAyNmNlYmIyYjI3OGIzODc1MDJlMzAyNjk0ODQwODY5NGZiZWI3ODAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwCkBAIC00OTYyLDcgKzQ5NjIsNyBAQCB2b2lkIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OnRleEltYWdlQXJyYXlCdWZmZXJWaWV3SGVscGVyKFRleEltYWdlRnVu
Y3Rpb25JRAogICAgICAgICBzb3VyY2VUeXBlID0gVGV4SW1hZ2VEaW1lbnNpb246OlRleDNEOwog
ICAgIGlmICghdmFsaWRhdGVUZXhGdW5jRGF0YShmdW5jdGlvbk5hbWUsIHNvdXJjZVR5cGUsIHdp
ZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIHBpeGVscy5nZXQoKSwgbnVsbERpc3Bv
c2l0aW9uLCBzcmNPZmZzZXQpKQogICAgICAgICByZXR1cm47Ci0gICAgdWludDhfdCogZGF0YSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHBpeGVscyA/IHBpeGVscy0+YmFzZUFkZHJlc3Mo
KSA6IG51bGxwdHIpOworICAgIGF1dG8gZGF0YSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihwaXhl
bHMgPyBwaXhlbHMtPmJhc2VBZGRyZXNzKCkgOiBudWxscHRyKTsKICAgICBpZiAoc3JjT2Zmc2V0
KSB7CiAgICAgICAgIEFTU0VSVChwaXhlbHMpOwogICAgICAgICAvLyBObyBuZWVkIHRvIGNoZWNr
IG92ZXJmbG93IGJlY2F1c2UgdmFsaWRhdGVUZXhGdW5jRGF0YSgpIGFscmVhZHkgZGlkLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAppbmRleCAxZjM5NGJh
OTdjOGZmMmFlNTQyY2U2MjEyZWI1MzYwYWNjNTM2NDEzLi4wZTlkZTUyZGUxMGU3NTM2MGI1NTA5
YTk1MDUyZGRmNzY5ODU0ZDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
RE9NUGF0Y2hTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0
Y2hTdXBwb3J0LmNwcApAQCAtMzk3LDcgKzM5Nyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTVBh
dGNoU3VwcG9ydDo6aW5uZXJQYXRjaENoaWxkcmVuKENvbnRhaW5lck5vZGUmIHBhcmVudE5vZGUs
CiBzdGF0aWMgdm9pZCBhZGRTdHJpbmdUb1NIQTEoU0hBMSYgc2hhMSwgY29uc3QgU3RyaW5nJiBz
dHJpbmcpCiB7CiAgICAgQ1N0cmluZyBjU3RyaW5nID0gc3RyaW5nLnV0ZjgoKTsKLSAgICBzaGEx
LmFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGNTdHJpbmcuZGF0YSgp
KSwgY1N0cmluZy5sZW5ndGgoKSk7CisgICAgc2hhMS5hZGRCeXRlcyhjU3RyaW5nLmNoYXJhY3Rl
cnM4KCksIGNTdHJpbmcubGVuZ3RoKCkpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8RE9NUGF0Y2hT
dXBwb3J0OjpEaWdlc3Q+IERPTVBhdGNoU3VwcG9ydDo6Y3JlYXRlRGlnZXN0KE5vZGUmIG5vZGUs
IFVudXNlZE5vZGVzTWFwKiB1bnVzZWROb2Rlc01hcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcAppbmRleCAyMmIyYmQ3NzFjNGZkMzRjNWFjYjRjODYx
MDZmN2ZhOTI5NjhiZWU4Li40NzcwMmE1NzRjYzhiZjQyYWY5NjM1NjE1MGI2MWI5NjdjYWFmYWEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3BwCkBA
IC0zMzMsNyArMzMzLDcgQEAgU3RyaW5nIFRleHRSZXNvdXJjZURlY29kZXI6OnRleHRGcm9tVVRG
OChjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW4KICAgICBhdXRvIGRlY29k
ZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvcGxhaW4iLCAiVVRGLTgiKTsK
ICAgICBpZiAoc2hvdWxkUHJlcGVuZEJPTShkYXRhLCBsZW5ndGgpKQogICAgICAgICBkZWNvZGVy
LT5kZWNvZGUoIlx4ZWZceGJiXHhiZiIsIDMpOwotICAgIHJldHVybiBkZWNvZGVyLT5kZWNvZGVB
bmRGbHVzaChyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgbGVuZ3RoKTsKKyAg
ICByZXR1cm4gZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goZGF0YSwgbGVuZ3RoKTsKIH0KIAogdm9p
ZCBUZXh0UmVzb3VyY2VEZWNvZGVyOjpzZXRFbmNvZGluZyhjb25zdCBUZXh0RW5jb2RpbmcmIGVu
Y29kaW5nLCBFbmNvZGluZ1NvdXJjZSBzb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRTY3JpcHQuY3BwCmluZGV4IDE3NDZhMzg5OTUyZThhNDdjZDdlMDQ3Yjk5YWI0
MjM1ZjMyZmViYTAuLmRjMTAxY2JlMDZkOWIzZjAyOGI3YWE4MTE1N2I5NDg3MTkyZWE2ZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC02Miw3
ICs2Miw3IEBAIFN0cmluZ1ZpZXcgQ2FjaGVkU2NyaXB0OjpzY3JpcHQoKQogICAgIGlmIChtX2Rl
Y29kaW5nU3RhdGUgPT0gTmV2ZXJEZWNvZGVkCiAgICAgICAgICYmIFRleHRFbmNvZGluZyhlbmNv
ZGluZygpKS5pc0J5dGVCYXNlZEVuY29kaW5nKCkKICAgICAgICAgJiYgbV9kYXRhLT5zaXplKCkK
LSAgICAgICAgJiYgY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
TENoYXIqPihtX2RhdGEtPmRhdGEoKSksIG1fZGF0YS0+c2l6ZSgpKSkgeworICAgICAgICAmJiBj
aGFyYWN0ZXJzQXJlQWxsQVNDSUkobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSkgewog
CiAgICAgICAgIG1fZGVjb2RpbmdTdGF0ZSA9IERhdGFBbmREZWNvZGVkU3RyaW5nSGF2ZVNhbWVC
eXRlczsKIApAQCAtNzAsMTEgKzcwLDExIEBAIFN0cmluZ1ZpZXcgQ2FjaGVkU2NyaXB0OjpzY3Jp
cHQoKQogICAgICAgICBzZXREZWNvZGVkU2l6ZSgwKTsKICAgICAgICAgbV9kZWNvZGVkRGF0YURl
bGV0aW9uVGltZXIuc3RvcCgpOwogCi0gICAgICAgIG1fc2NyaXB0SGFzaCA9IFN0cmluZ0hhc2hl
cjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hh
cio+KG1fZGF0YS0+ZGF0YSgpKSwgbV9kYXRhLT5zaXplKCkpOworICAgICAgICBtX3NjcmlwdEhh
c2ggPSBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKG1fZGF0YS0+ZGF0
YSgpLCBtX2RhdGEtPnNpemUoKSk7CiAgICAgfQogCiAgICAgaWYgKG1fZGVjb2RpbmdTdGF0ZSA9
PSBEYXRhQW5kRGVjb2RlZFN0cmluZ0hhdmVTYW1lQnl0ZXMpCi0gICAgICAgIHJldHVybiB7IHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihtX2RhdGEtPmRhdGEoKSksIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihtX2RhdGEtPnNpemUoKSkgfTsKKyAgICAgICAgcmV0dXJuIHsgbV9kYXRhLT5k
YXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2RhdGEtPnNpemUoKSkgfTsKIAogICAgIGlm
ICghbV9zY3JpcHQpIHsKICAgICAgICAgbV9zY3JpcHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZs
dXNoKG1fZGF0YS0+ZGF0YSgpLCBlbmNvZGVkU2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlDb2NvYS5tbQppbmRleCBlNTE5
YmU3YTg0YjAxNDU0YjQ2M2Y2ZGMzNTg0MzcwMDcyOGZjOGI2Li4yOWRmOGM2YjJhMDcwOTVhZWQ3
OWY1ZWJmM2I0NTVlM2NiOGM5YmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Nv
Y29hL1Jlc291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9jb2NvYS9SZXNvdXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tCkBAIC0yNjksNyArMjY5LDcgQEAg
c3RhdGljIHZvaWQgc2hvd1RleHQoQ0dDb250ZXh0UmVmIGNvbnRleHQsIGZsb2F0IHgsIGZsb2F0
IHksIENHQ29sb3JSZWYgY29sb3IsIGMKICAgICBDRlR5cGVSZWYgdmFsdWVzW10gPSB7IGZvbnQu
Z2V0KCksIGtDRkJvb2xlYW5UcnVlIH07CiAgICAgYXV0byBhdHRyaWJ1dGVzID0gYWRvcHRDRihD
RkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga2V5cywgdmFsdWVzLCBXVEZf
QVJSQVlfTEVOR1RIKGtleXMpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZU
eXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAgICAgQ1N0cmluZyBjc3RyID0gdGV4dC5h
c2NpaSgpOwotICAgIGF1dG8gc3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhCeXRl
c05vQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4
Kj4oY3N0ci5kYXRhKCkpLCBjc3RyLmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ0FTQ0lJLCBm
YWxzZSwga0NGQWxsb2NhdG9yTnVsbCkpOworICAgIGF1dG8gc3RyaW5nID0gYWRvcHRDRihDRlN0
cmluZ0NyZWF0ZVdpdGhCeXRlc05vQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjc3RyLmNoYXJh
Y3RlcnM4KCksIGNzdHIubGVuZ3RoKCksIGtDRlN0cmluZ0VuY29kaW5nQVNDSUksIGZhbHNlLCBr
Q0ZBbGxvY2F0b3JOdWxsKSk7CiAgICAgYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHRDRihD
RkF0dHJpYnV0ZWRTdHJpbmdDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RyaW5nLmdldCgp
LCBhdHRyaWJ1dGVzLmdldCgpKSk7CiAgICAgYXV0byBsaW5lID0gYWRvcHRDRihDVExpbmVDcmVh
dGVXaXRoQXR0cmlidXRlZFN0cmluZyhhdHRyaWJ1dGVkU3RyaW5nLmdldCgpKSk7CiAgICAgQ0dD
b250ZXh0U2V0VGV4dFBvc2l0aW9uKGNvbnRleHQsIHgsIHkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCmluZGV4IGExMTBkMTM5MzBlODYxMTMwN2Rk
MDU1ZmYyYTQ3MDBjZjRlOWM5ZTMuLjg5NWViZTA1MWYxNTJhN2E4M2E0NWM3YjkwZGRjMGMyNzBh
NDllZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZl
ckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5j
cHAKQEAgLTQ3LDcgKzQ3LDcgQEAgUmV0YWluUHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpj
cmVhdGVDRkRhdGEoKSBjb25zdAogICAgICAgICBpZiAoYXV0byBkYXRhID0gV1RGOjpnZXRfaWY8
UmV0YWluUHRyPENGRGF0YVJlZj4+KG1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVE
YXRhKSkKICAgICAgICAgICAgIHJldHVybiAqZGF0YTsKICAgICB9Ci0gICAgcmV0dXJuIGFkb3B0
Q0YoQ0ZEYXRhQ3JlYXRlKG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihk
YXRhKCkpLCBzaXplKCkpKTsKKyAgICByZXR1cm4gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0
ciwgZGF0YSgpLCBzaXplKCkpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29kZXJHZW5lcmljLmNwcAppbmRleCAyMWNj
MWViZTRhOTAxYTEzYzc0NDAzZGMwMWNmMmZjODE4MTMwMTJkLi4wYzMxOTgxN2NlNzY1NjExYWVk
MmNmNGRiNDk2Mzc2NDQ0ZWJkZDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKQEAgLTQwLDcgKzQwLDcgQEAg
dm9pZCBLZXllZEVuY29kZXJHZW5lcmljOjplbmNvZGVTdHJpbmcoY29uc3QgU3RyaW5nJiBrZXkp
CiB7CiAgICAgYXV0byB1dGY4ID0ga2V5LnV0ZjgoKTsKICAgICBtX2VuY29kZXIgPDwgdXRmOC5s
ZW5ndGgoKTsKLSAgICBtX2VuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHV0ZjguZGF0YSgpKSwgdXRmOC5sZW5ndGgoKSk7CisgICAg
bV9lbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YSh1dGY4LmNoYXJhY3RlcnM4KCksIHV0Zjgu
bGVuZ3RoKCkpOwogfQogCiB2b2lkIEtleWVkRW5jb2RlckdlbmVyaWM6OmVuY29kZUJ5dGVzKGNv
bnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90KiBieXRlcywgc2l6ZV90IHNpemUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRH
TC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRH
TC5jcHAKaW5kZXggN2VlNGE3NjkwZTk1ZTI3NmFkYmI5NDg4YWI5MTU2ZmRlNzdjOWJiMS4uYTdh
OTM4MGRmMjcxZTVhNmRlOTE0ODQ1MWQzYjgzMmZkZDM5NTU2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcApAQCAt
NzU3LDcgKzc1Nyw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0w6OnBhY2tJbWFnZURhdGEoSW1h
Z2UqIGltYWdlLCBjb25zdCB2b2lkKiBwaXhlbHMsIEdDR0xlbnVtCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBkYXRhLnJlc2l6ZShwYWNrZWRTaXplKTsKIAotICAgIGlmICghcGFja1BpeGVs
cyhyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihwaXhlbHMpLCBzb3VyY2VGb3JtYXQs
IHNvdXJjZUltYWdlV2lkdGgsIHNvdXJjZUltYWdlSGVpZ2h0LCBzb3VyY2VJbWFnZVN1YlJlY3Rh
bmdsZSwgZGVwdGgsIHNvdXJjZVVucGFja0FsaWdubWVudCwgdW5wYWNrSW1hZ2VIZWlnaHQsIGZv
cm1hdCwgdHlwZSwgYWxwaGFPcCwgZGF0YS5kYXRhKCksIGZsaXBZKSkKKyAgICBpZiAoIXBhY2tQ
aXhlbHMoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHBpeGVscyksIHNvdXJjZUZvcm1hdCwg
c291cmNlSW1hZ2VXaWR0aCwgc291cmNlSW1hZ2VIZWlnaHQsIHNvdXJjZUltYWdlU3ViUmVjdGFu
Z2xlLCBkZXB0aCwgc291cmNlVW5wYWNrQWxpZ25tZW50LCB1bnBhY2tJbWFnZUhlaWdodCwgZm9y
bWF0LCB0eXBlLCBhbHBoYU9wLCBkYXRhLmRhdGEoKSwgZmxpcFkpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgaWYgKEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyID0gaW1hZ2UtPmltYWdlT2Jz
ZXJ2ZXIoKSkKICAgICAgICAgb2JzZXJ2ZXItPmRpZERyYXcoKmltYWdlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3Bw
CmluZGV4IGFkNWQzZTRmMzI3ZWVmNDg3ODU5Y2JjNDE1Yjc1NmQxMWUwNDVmYTcuLmQyODc3ZDY4
MzBjM2JjOGEwNDIxOGY2YmEzMzQ0ZjMwZmFiZjg2YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcApAQCAtMTE4
LDcgKzExOCw3IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEltYWdlQnVmZmVyQmFja2Vu
ZDo6Z2V0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXJGCiAgICAgQ29uc3RQaXhlbEJ1ZmZl
ckNvbnZlcnNpb25WaWV3IHNvdXJjZSB7CiAgICAgICAgIHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlv
bjo6UHJlbXVsdGlwbGllZCwgcGl4ZWxGb3JtYXQoKSwgY29sb3JTcGFjZSgpIH0sCiAgICAgICAg
IGJ5dGVzUGVyUm93KCksCi0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEp
ICsgc291cmNlUmVjdENsaXBwZWQueSgpICogc291cmNlLmJ5dGVzUGVyUm93ICsgc291cmNlUmVj
dENsaXBwZWQueCgpICogNAorICAgICAgICBzdGF0aWNfY2FzdDx1aW50OF90Kj4oZGF0YSkgKyBz
b3VyY2VSZWN0Q2xpcHBlZC55KCkgKiBzb3VyY2UuYnl0ZXNQZXJSb3cgKyBzb3VyY2VSZWN0Q2xp
cHBlZC54KCkgKiA0CiAgICAgfTsKICAgICAKICAgICBQaXhlbEJ1ZmZlckNvbnZlcnNpb25WaWV3
IGRlc3RpbmF0aW9uIHsKQEAgLTE1OSw3ICsxNTksNyBAQCB2b2lkIEltYWdlQnVmZmVyQmFja2Vu
ZDo6cHV0UGl4ZWxCdWZmZXIoY29uc3QgUGl4ZWxCdWZmZXImIHNvdXJjZVBpeGVsQnVmZmVyLCBj
bwogICAgIFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcgZGVzdGluYXRpb24gewogICAgICAgICB7
IGRlc3RpbmF0aW9uQWxwaGFGb3JtYXQsIHBpeGVsRm9ybWF0KCksIGNvbG9yU3BhY2UoKSB9LAog
ICAgICAgICBieXRlc1BlclJvdygpLAotICAgICAgICByZWludGVycHJldF9jYXN0PHVpbnQ4X3Qq
PihkYXRhKSArIGRlc3RpbmF0aW9uUmVjdC55KCkgKiBkZXN0aW5hdGlvbi5ieXRlc1BlclJvdyAr
IGRlc3RpbmF0aW9uUmVjdC54KCkgKiA0CisgICAgICAgIHN0YXRpY19jYXN0PHVpbnQ4X3QqPihk
YXRhKSArIGRlc3RpbmF0aW9uUmVjdC55KCkgKiBkZXN0aW5hdGlvbi5ieXRlc1BlclJvdyArIGRl
c3RpbmF0aW9uUmVjdC54KCkgKiA0CiAgICAgfTsKIAogICAgIGNvbnZlcnRJbWFnZVBpeGVscyhz
b3VyY2UsIGRlc3RpbmF0aW9uLCBkZXN0aW5hdGlvblJlY3Quc2l6ZSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0
VHJhY2tQcml2YXRlQVZGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAppbmRleCAxZTYyY2NmN2E1
YTM3YTM5NWU1M2YyMzNlNjY5NWMyNzM0NDg2YzM3Li4zZmE5NjA5ZTFhZjVkNzFiYWJkNTRkY2M0
MTJjNjY5MjcyOTBhM2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFj
a1ByaXZhdGVBVkYuY3BwCkBAIC01MzEsNyArNTMxLDcgQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZGOjpwcm9jZXNzTmF0aXZlU2FtcGxlcyhDRkFycmF5UmVmIG5hdGl2ZVNhbXBsZXMs
IGMKICAgICAgICAgICAgIC8vIEEgV2ViVlRUIGhlYWRlciBpcyB0ZXJtaW5hdGVkIGJ5ICJPbmUg
b3IgbW9yZSBXZWJWVFQgbGluZSB0ZXJtaW5hdG9ycyIgc28gYXBwZW5kIHR3byBsaW5lIGZlZWRz
IHRvIG1ha2Ugc3VyZSB0aGUgcGFyc2VyCiAgICAgICAgICAgICAvLyByZWNjb2duaXplZCB0aGlz
IHN0cmluZyBhcyBhIGZ1bGwgaGVhZGVyLgogICAgICAgICAgICAgU3RyaW5nQnVpbGRlciBoZWFk
ZXI7Ci0gICAgICAgICAgICBoZWFkZXIuYXBwZW5kQ2hhcmFjdGVycyhyZWludGVycHJldF9jYXN0
PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihDRkRhdGFHZXRCeXRlUHRyKHdlYnZ0dEhlYWRlckRhdGEp
KSwgbGVuZ3RoKTsKKyAgICAgICAgICAgIGhlYWRlci5hcHBlbmRDaGFyYWN0ZXJzKENGRGF0YUdl
dEJ5dGVQdHIod2VidnR0SGVhZGVyRGF0YSksIGxlbmd0aCk7CiAgICAgICAgICAgICBoZWFkZXIu
YXBwZW5kKCJcblxuIik7CiAKICAgICAgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJW
VFQgaGVhZGVyICIsICZoZWFkZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25DRi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vz
c2lvbkFWRm91bmRhdGlvbkNGLmNwcAppbmRleCA3MDljMDgwZDRmZmIwMjEzYzhkYjZmZGQ0Yzhi
Zjc4YTdlMTI1NjZjLi5kNWY3MjU2MjQwZTIxNGY4MDUwMDdmMWQ0YWQ0ODk3MGVlMjE2NDBkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Y2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmNw
cApAQCAtNzQsMTEgKzc0LDExIEBAIFJlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZGb3Vu
ZGF0aW9uQ0Y6OmdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmLCBVCiAgICAgfQogCiAg
ICAgYXV0byBjZXJ0aWZpY2F0ZURhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgY2VydGlmaWNhdGUtPmJ5dGVMZW5ndGgoKSkpOwotICAgIENGRGF0
YUFwcGVuZEJ5dGVzKGNlcnRpZmljYXRlRGF0YS5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBVSW50OCo+KGNlcnRpZmljYXRlLT5iYXNlQWRkcmVzcygpKSwgY2VydGlmaWNhdGUtPmJ5dGVM
ZW5ndGgoKSk7CisgICAgQ0ZEYXRhQXBwZW5kQnl0ZXMoY2VydGlmaWNhdGVEYXRhLmdldCgpLCBj
ZXJ0aWZpY2F0ZS0+ZGF0YSgpLCBjZXJ0aWZpY2F0ZS0+Ynl0ZUxlbmd0aCgpKTsKIAogICAgIGF1
dG8gYXNzZXRTdHIgPSBrZXlJRC51dGY4KCk7CiAgICAgYXV0byBhc3NldElEID0gYWRvcHRDRihD
RkRhdGFDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGFzc2V0U3RyLmxlbmd0aCgp
KSk7Ci0gICAgQ0ZEYXRhQXBwZW5kQnl0ZXMoYXNzZXRJRC5nZXQoKSwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBVSW50OCo+KGFzc2V0U3RyLmRhdGEoKSksIGFzc2V0U3RyLmxlbmd0aCgpKTsKKyAg
ICBDRkRhdGFBcHBlbmRCeXRlcyhhc3NldElELmdldCgpLCBhc3NldFN0ci5jaGFyYWN0ZXJzOCgp
LCBhc3NldFN0ci5sZW5ndGgoKSk7CiAKICAgICBDRkVycm9yUmVmIGNmRXJyb3IgPSBudWxscHRy
OwogICAgIGF1dG8ga2V5UmVxdWVzdCA9IGFkb3B0Q0YoQVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5n
UmVxdWVzdENyZWF0ZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcChtX3JlcXVl
c3QuZ2V0KCksIGNlcnRpZmljYXRlRGF0YS5nZXQoKSwgYXNzZXRJRC5nZXQoKSwgbnVsbHB0ciwg
JmNmRXJyb3IpKTsKQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIENETVNlc3Npb25BVkZvdW5kYXRp
b25DRjo6cmVsZWFzZUtleXMoKQogYm9vbCBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Y6OnVwZGF0
ZShVaW50OEFycmF5KiBrZXksIFJlZlB0cjxVaW50OEFycmF5PiYgbmV4dE1lc3NhZ2UsIHVuc2ln
bmVkIHNob3J0JiBlcnJvckNvZGUsIHVpbnQzMl90JiBzeXN0ZW1Db2RlKQogewogICAgIGF1dG8g
a2V5RGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBrZXktPmJ5dGVMZW5ndGgoKSkpOwotICAgIENGRGF0YUFwcGVuZEJ5dGVzKGtleURhdGEuZ2V0
KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihrZXktPmJhc2VBZGRyZXNzKCkpLCBr
ZXktPmJ5dGVMZW5ndGgoKSk7CisgICAgQ0ZEYXRhQXBwZW5kQnl0ZXMoa2V5RGF0YS5nZXQoKSwg
a2V5LT5kYXRhKCksIGtleS0+Ynl0ZUxlbmd0aCgpKTsKIAogICAgIEFWQ0ZBc3NldFJlc291cmNl
TG9hZGluZ1JlcXVlc3RGaW5pc2hMb2FkaW5nV2l0aFJlc3BvbnNlKG1fcmVxdWVzdC5nZXQoKSwg
bnVsbHB0ciwga2V5RGF0YS5nZXQoKSwgbnVsbHB0cik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YuY3BwCmluZGV4IGI0NTlmNmYxOWJm
NzU0Y2U5ZTU1MjIyOTVjYjJlYWVlODE0YzZmMjcuLjNlZTYwMWRkMjcwNWIyMGIwMjBlZDdkYzk1
N2FkZTg2ZTg3NTA1ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZDRi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkNGLmNwcApAQCAtMjA0LDcgKzIwNCw3IEBAIGJvb2wgSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWQ0Y6OnJlYWROYXRpdmVTYW1wbGVCdWZmZXIoQ0ZBcnJheVJlZiBuYXRp
dmVTYW1wbGVzCiAgICAgfQogCiAgICAgbV9zYW1wbGVJbnB1dEJ1ZmZlci5ncm93KG1fc2FtcGxl
SW5wdXRCdWZmZXIuc2l6ZSgpICsgYnVmZmVyTGVuZ3RoKTsKLSAgICBDRkRhdGFHZXRCeXRlcyhz
YW1wbGVCdWZmZXItPmJ1ZmZlciwgQ0ZSYW5nZU1ha2UoMCwgYnVmZmVyTGVuZ3RoKSwgcmVpbnRl
cnByZXRfY2FzdDxVSW50OCo+KG1fc2FtcGxlSW5wdXRCdWZmZXIuZGF0YSgpKSArIG1fc2FtcGxl
SW5wdXRCdWZmZXIuc2l6ZSgpIC0gYnVmZmVyTGVuZ3RoKTsKKyAgICBDRkRhdGFHZXRCeXRlcyhz
YW1wbGVCdWZmZXItPmJ1ZmZlciwgQ0ZSYW5nZU1ha2UoMCwgYnVmZmVyTGVuZ3RoKSwgbV9zYW1w
bGVJbnB1dEJ1ZmZlci5kYXRhKCkgKyBtX3NhbXBsZUlucHV0QnVmZmVyLnNpemUoKSAtIGJ1ZmZl
ckxlbmd0aCk7CiAKICAgICBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG1fc2FtcGxlSW5w
dXRCdWZmZXIuZGF0YSgpLCBtX3NhbXBsZUlucHV0QnVmZmVyLnNpemUoKSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1CdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKaW5kZXggYzY4MTg3MDQyZDY3MDVm
NzgyNmI4NTI1YTI0NzY4OGQ1NmRlZDA1My4uZWU2YTVkMmVlZDZhM2Y5N2U3NDY4Y2FiOTZlOWVl
MzRkNmI4MzA2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5j
cHAKQEAgLTcwMiw3ICs3MDIsNyBAQCBJdGVtQnVmZmVySGFuZGxlIEl0ZW1CdWZmZXI6OmNyZWF0
ZUl0ZW1CdWZmZXIoc2l6ZV90IGNhcGFjaXR5KQogICAgIGNvbnN0ZXhwciBzaXplX3QgZGVmYXVs
dEl0ZW1CdWZmZXJDYXBhY2l0eSA9IDEgPDwgMTA7CiAKICAgICBhdXRvIG5ld0J1ZmZlckNhcGFj
aXR5ID0gc3RkOjptYXgoY2FwYWNpdHksIGRlZmF1bHRJdGVtQnVmZmVyQ2FwYWNpdHkpOwotICAg
IGF1dG8qIGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGZhc3RNYWxsb2MobmV3
QnVmZmVyQ2FwYWNpdHkpKTsKKyAgICBhdXRvKiBidWZmZXIgPSBzdGF0aWNfY2FzdDx1aW50OF90
Kj4oZmFzdE1hbGxvYyhuZXdCdWZmZXJDYXBhY2l0eSkpOwogICAgIG1fYWxsb2NhdGVkQnVmZmVy
cy5hcHBlbmQoYnVmZmVyKTsKICAgICByZXR1cm4geyBJdGVtQnVmZmVySWRlbnRpZmllcjo6Z2Vu
ZXJhdGUoKSwgYnVmZmVyLCBuZXdCdWZmZXJDYXBhY2l0eSB9OwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
cmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlcmF0b3IuY3BwCmluZGV4IDBhZWYxMjhhYjNiNWI0YjViMDIwMTgwMzMy
MmMwNDQ5MzE2N2U1MjQuLmEwYzgyMTRkZDM2NTI2YTExNzI1YTJmOTY3YzQ3YTFkNjUwYTEwMjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5jcHAKQEAgLTc5LDcgKzc5
LDcgQEAgdm9pZCBEaXNwbGF5TGlzdDo6SXRlcmF0b3I6OnVwZGF0ZUN1cnJlbnRJdGVtKCkKICAg
ICB9CiAKICAgICBhdXRvIHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtID0gcGFkZGVkU2l6ZU9mVHlw
ZUFuZEl0ZW1JbkJ5dGVzKGl0ZW1UeXBlKTsKLSAgICBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtID0g
cGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW0gPD0gc2l6ZU9mRml4ZWRCdWZmZXJGb3JDdXJyZW50SXRl
bSA/IG1fZml4ZWRCdWZmZXJGb3JDdXJyZW50SXRlbSA6IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhf
dCo+KGZhc3RNYWxsb2MocGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW0pKTsKKyAgICBtX2N1cnJlbnRC
dWZmZXJGb3JJdGVtID0gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW0gPD0gc2l6ZU9mRml4ZWRCdWZm
ZXJGb3JDdXJyZW50SXRlbSA/IG1fZml4ZWRCdWZmZXJGb3JDdXJyZW50SXRlbSA6IHN0YXRpY19j
YXN0PHVpbnQ4X3QqPihmYXN0TWFsbG9jKHBhZGRlZFNpemVPZlR5cGVBbmRJdGVtKSk7CiAgICAg
aWYgKGlzSW5saW5lSXRlbShpdGVtVHlwZSkpIHsKICAgICAgICAgaWYgKFVOTElLRUxZKHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihtX2N1cnJlbnRFbmRPZkJ1ZmZlciAtIG1fY3Vyc29yKSA8IHBhZGRl
ZFNpemVPZlR5cGVBbmRJdGVtKSkgewogICAgICAgICAgICAgbV9pc1ZhbGlkID0gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lG
SW1hZ2VSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dp
Zi9HSUZJbWFnZVJlYWRlci5oCmluZGV4IDQyNzY0NmMxZGIzMDA4NWViMzJjMDFkYTU3NDZkMmI5
M2YwZTRkMjQuLjQyMTQ2ZTAzMjkzMjM2OTk3ODllYjVlNDJhZjRjNzNkMzRhYjljYzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFn
ZVJlYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dp
Zi9HSUZJbWFnZVJlYWRlci5oCkBAIC0yODUsOSArMjg1LDkgQEAgcHJpdmF0ZToKICAgICBib29s
IHBhcnNlKHNpemVfdCBkYXRhUG9zaXRpb24sIHNpemVfdCBsZW4sIGJvb2wgcGFyc2VTaXplT25s
eSk7CiAgICAgdm9pZCBzZXRSZW1haW5pbmdCeXRlcyhzaXplX3QpOwogCi0gICAgY29uc3QgdW5z
aWduZWQgY2hhciogZGF0YShzaXplX3QgZGF0YVBvc2l0aW9uKSBjb25zdAorICAgIGNvbnN0IHVp
bnQ4X3QqIGRhdGEoc2l6ZV90IGRhdGFQb3NpdGlvbikgY29uc3QKICAgICB7Ci0gICAgICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihtX2RhdGEtPmRhdGEo
KSkgKyBkYXRhUG9zaXRpb247CisgICAgICAgIHJldHVybiBtX2RhdGEtPmRhdGEoKSArIGRhdGFQ
b3NpdGlvbjsKICAgICB9CiAKICAgICB2b2lkIGFkZEZyYW1lSWZOZWNlc3NhcnkoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9yTWFjLm1tCmluZGV4
IDhlOTVjNTQ2OWExYTk2M2M2ZGNkYmRmMTM4ODJiMDczYjJmMDM3NTkuLjEwMGRhY2IwMDUxN2Q2
ZWVlNmI1ZGQ3YTAyNWNiMWIxMDRmNjBmMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5tbQpAQCAtMTg5LDcgKzE4OSw3IEBAIHN0YXRp
YyBTdHJpbmcgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNp
emUsIGNvbnN0IENTdHJpbmcmCiAKICAgICAvLyBMZW5ndGggbmVlZHMgdG8gYWNjb3VudCBmb3Ig
dGhlIG51bGwgdGVybWluYXRvci4KICAgICBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2UucHVi
bGljS2V5QW5kQ2hhbGxlbmdlLmNoYWxsZW5nZS5MZW5ndGggPSBjaGFsbGVuZ2UubGVuZ3RoKCkg
KyAxOwotICAgIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZS5wdWJsaWNLZXlBbmRDaGFsbGVu
Z2UuY2hhbGxlbmdlLkRhdGEgPSByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihjb25zdF9jYXN0
PGNoYXIqPihjaGFsbGVuZ2UuZGF0YSgpKSk7CisgICAgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxl
bmdlLnB1YmxpY0tleUFuZENoYWxsZW5nZS5jaGFsbGVuZ2UuRGF0YSA9IGNvbnN0X2Nhc3Q8dWlu
dDhfdCo+KGNoYWxsZW5nZS5jaGFyYWN0ZXJzOCgpKTsKIAogICAgIENTU01fREFUQSBlbmNvZGVk
UHVibGljS2V5QW5kQ2hhbGxlbmdlIHsgMCwgbnVsbHB0ciB9OwogICAgIGlmIChTZWNBc24xRW5j
b2RlSXRlbShjb2RlciwgJnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZS5wdWJsaWNLZXlBbmRD
aGFsbGVuZ2UsIHB1YmxpY0tleUFuZENoYWxsZW5nZVRlbXBsYXRlLCAmZW5jb2RlZFB1YmxpY0tl
eUFuZENoYWxsZW5nZSkgIT0gbm9FcnIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3Bw
CmluZGV4IGRmMjE3ZGJhZWNkNDYxYTlkOWJlMzhmNTViYzc5MzU1ZGIyYjJiMTcuLmY4ODM4MDI4
MThhOTdlY2NjMjg0YWZlMzdhNjNiOGIxODU3MTkwNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXIuY3BwCkBAIC0xNDUsNyArMTQ1LDcgQEAgc3RhdGljIHZvaWQgYWRkU3RyaW5nVG9T
SEExKFNIQTEmIHNoYTEsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIH0KIAogICAgIGF1dG8g
dXRmOCA9IHN0cmluZy51dGY4KCk7Ci0gICAgc2hhMS5hZGRCeXRlcyhyZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPih1dGY4LmRhdGEoKSksIHV0ZjgubGVuZ3RoKCkgKyAxKTsgLy8gSW5j
bHVkZSB0ZXJtaW5hdGluZyBudWxsIGJ5dGUuCisgICAgc2hhMS5hZGRCeXRlcyh1dGY4LmNoYXJh
Y3RlcnM4KCksIHV0ZjgubGVuZ3RoKCkgKyAxKTsgLy8gSW5jbHVkZSB0ZXJtaW5hdGluZyBudWxs
IGJ5dGUuCiB9CiAKIFN0cmluZyBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpoYXNoU3RyaW5n
V2l0aFNhbHQoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgU3RyaW5nJiBoYXNoU2FsdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmNwcApp
bmRleCA3ZTNkMWI5MWYwNjM3NGU5ODRjZjUxZThjNzdjNGY3MGQ5MjFkZmE5Li5kMWExZjRmMjAz
YWZhZmFiZWI3NmZjNjJlNGE1MzZlNWM4MTEyMmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwCkBAIC0yMTEsNyArMjExLDcg
QEAgdm9pZCBhZGRLZXlWYWx1ZVBhaXJBc0Zvcm1EYXRhKFZlY3RvcjxjaGFyPiYgYnVmZmVyLCBj
b25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwKIAogdm9pZCBlbmNvZGVTdHJpbmdBc0Zvcm1EYXRh
KFZlY3RvcjxjaGFyPiYgYnVmZmVyLCBjb25zdCBDU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgYXBw
ZW5kRm9ybVVSTEVuY29kZWQoYnVmZmVyLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihzdHJpbmcuZGF0YSgpKSwgc3RyaW5nLmxlbmd0aCgpKTsKKyAgICBhcHBlbmRGb3JtVVJMRW5j
b2RlZChidWZmZXIsIHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0
cmVhbUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0
cmVhbUhhbmRsZS5jcHAKaW5kZXggNmRlMWEzZjhhMWY5YjYzZDFlNzFmYjNhYTdjZTQyNTM0MWE2
NTFkOS4uYzgyMjJiODljYjYwYzViOTE0YTAwYTU4Mjc1ZjA2ODQ4NTk0ZGNiMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxl
LmNwcApAQCAtNjEsNyArNjEsNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6c2VuZEhhbmRz
aGFrZShDU3RyaW5nJiYgaGFuZHNoYWtlLCBzdGQ6Om9wdGlvbmFsPENvb2tpZQogewogICAgIGlm
IChtX3N0YXRlID09IENvbm5lY3RpbmcgfHwgbV9zdGF0ZSA9PSBDbG9zaW5nKQogICAgICAgICBy
ZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UsIGZhbHNlKTsKLSAgICBwbGF0Zm9ybVNlbmRI
YW5kc2hha2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaGFuZHNoYWtlLmRhdGEo
KSksIGhhbmRzaGFrZS5sZW5ndGgoKSwgV1RGTW92ZShoZWFkZXJGaWVsZFByb3h5KSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIHBsYXRmb3JtU2VuZEhhbmRzaGFrZShoYW5kc2hh
a2UuY2hhcmFjdGVyczgoKSwgaGFuZHNoYWtlLmxlbmd0aCgpLCBXVEZNb3ZlKGhlYWRlckZpZWxk
UHJveHkpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgU29ja2V0U3Ry
ZWFtSGFuZGxlOjpjbG9zZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCmluZGV4IGI3ZWY1Yjg3NTg0
ZmZiYjY2YWY3ZDlhMTEzZjQzMDZkOTE1YTE2OWIuLjM4NzUzY2RlYjZjMjczYjFjYjFjMjEzOTkx
ZjE0MmRmZWUwOTE3YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCkBAIC0yMjgsNyArMjI4LDcg
QEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkKICAgICBT
dHJpbmcgcGFydGl0aW9uID0gY2FjaGVQYXJ0aXRpb24oKTsKICAgICBpZiAoIXBhcnRpdGlvbi5p
c051bGwoKSAmJiAhcGFydGl0aW9uLmlzRW1wdHkoKSkgewogICAgICAgICBDU3RyaW5nIHV0ZjhT
dHJpbmcgPSBwYXJ0aXRpb24udXRmOCgpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IHBhcnRpdGlvblZhbHVlID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhCeXRlcygwLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4odXRmOFN0cmluZy5kYXRhKCkpLCB1dGY4U3RyaW5n
Lmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIGZhbHNlKSk7CisgICAgICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gcGFydGl0aW9uVmFsdWUgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRl
V2l0aEJ5dGVzKDAsIHV0ZjhTdHJpbmcuY2hhcmFjdGVyczgoKSwgdXRmOFN0cmluZy5sZW5ndGgo
KSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBmYWxzZSkpOwogICAgICAgICBfQ0ZVUkxSZXF1ZXN0
U2V0UHJvdG9jb2xQcm9wZXJ0eShjZlJlcXVlc3QuZ2V0KCksIF9rQ0ZVUkxDYWNoZVBhcnRpdGlv
bktleSwgcGFydGl0aW9uVmFsdWUuZ2V0KCkpOwogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5l
dC5oCmluZGV4IGJjYzYyMjg2NjBlMzg2OGVjN2MxYTZiNDdkZWUxZWQ3MWJmMDNkOWMuLmY3MGFj
NGU3NTlmYjI1YWExYjAwNjhlMTE1OTNlZDBlOTZkYmU0ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmgK
QEAgLTEzMSw3ICsxMzEsNyBAQCBpbmxpbmUgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBodHRwSGVh
ZGVyVmFsdWVVc2luZ1N1aXRhYmxlRW5jb2RpbmcoSFRUUEhlYWRlck1hcAogICAgIGlmIChoZWFk
ZXIua2V5QXNIVFRQSGVhZGVyTmFtZSAmJiAqaGVhZGVyLmtleUFzSFRUUEhlYWRlck5hbWUgPT0g
SFRUUEhlYWRlck5hbWU6Okxhc3RFdmVudElEICYmICFoZWFkZXIudmFsdWUuaXNBbGxBU0NJSSgp
KSB7CiAgICAgICAgIGF1dG8gdXRmOFZhbHVlID0gaGVhZGVyLnZhbHVlLnV0ZjgoKTsKICAgICAg
ICAgLy8gQ29uc3RydWN0aW5nIGEgc3RyaW5nIHdpdGggdGhlIFVURi04IGJ5dGVzIGJ1dCBjbGFp
bWluZyB0aGF0IGl04oCZcyBMYXRpbi0xIGlzIHRoZSB3YXkgdG8gZ2V0IENGTmV0d29yayB0byBw
dXQgdGhvc2UgVVRGLTggYnl0ZXMgb24gdGhlIHdpcmUuCi0gICAgICAgIHJldHVybiBhZG9wdENG
KENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzKG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
VUludDgqPih1dGY4VmFsdWUuZGF0YSgpKSwgdXRmOFZhbHVlLmxlbmd0aCgpLCBrQ0ZTdHJpbmdF
bmNvZGluZ0lTT0xhdGluMSwgZmFsc2UpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZTdHJp
bmdDcmVhdGVXaXRoQnl0ZXMobnVsbHB0ciwgdXRmOFZhbHVlLmNoYXJhY3RlcnM4KCksIHV0ZjhW
YWx1ZS5sZW5ndGgoKSwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIGZhbHNlKSk7CiAgICAg
fQogICAgIHJldHVybiBoZWFkZXIudmFsdWUuY3JlYXRlQ0ZTdHJpbmcoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxl
SW1wbENGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0
U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcAppbmRleCBkMTM3OTQ5OGFhYjgxZWUyY2E3YWEwODli
MWI1MGY5OTVjMjgyOTQ3Li41NWI5ZjFlZDRhMGQzMjVhNmIxNmExMTQzODlmMzljN2RlZDM2Y2E2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0
cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwCkBAIC03MjIsNyArNzIyLDcg
QEAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnBsYXRmb3Jt
U2VuZEludGVybmFsKGNvbnN0IHVpbnQ4X3QKICAgICBpZiAoIUNGV3JpdGVTdHJlYW1DYW5BY2Nl
cHRCeXRlcyhtX3dyaXRlU3RyZWFtLmdldCgpKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBD
RkluZGV4IHJlc3VsdCA9IENGV3JpdGVTdHJlYW1Xcml0ZShtX3dyaXRlU3RyZWFtLmdldCgpLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oZGF0YSksIGxlbmd0aCk7CisgICAgQ0ZJbmRl
eCByZXN1bHQgPSBDRldyaXRlU3RyZWFtV3JpdGUobV93cml0ZVN0cmVhbS5nZXQoKSwgZGF0YSwg
bGVuZ3RoKTsKICAgICBpZiAocmVzdWx0ID09IC0xKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybENhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxDYWNoZUVudHJ5LmNwcAppbmRleCAwNWI0ZTI5YmM5MzFjMTQzNDViNDc5NTk4YmFlZTY3
ZWI0YjY4YzJhLi5kMDliN2I1ZGNiMTg0MDU5NDdlYWVjM2JlZjRhMzBhNWFjNTI0NmZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2Fj
aGVFbnRyeS5jcHAKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIEN1cmxDYWNoZUVudHJ5OjpkaWRG
aW5pc2hMb2FkaW5nKCkKIHZvaWQgQ3VybENhY2hlRW50cnk6OmdlbmVyYXRlQmFzZUZpbGVuYW1l
KGNvbnN0IENTdHJpbmcmIHVybCkKIHsKICAgICBTSEExIHNoYTE7Ci0gICAgc2hhMS5hZGRCeXRl
cyhyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih1cmwuZGF0YSgpKSwgdXJsLmxlbmd0
aCgpKTsKKyAgICBzaGExLmFkZEJ5dGVzKHVybC5jaGFyYWN0ZXJzOCgpLCB1cmwubGVuZ3RoKCkp
OwogCiAgICAgU0hBMTo6RGlnZXN0IHN1bTsKICAgICBzaGExLmNvbXB1dGVIYXNoKHN1bSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCmluZGV4
IDZkOGRjNzJlZGNiZDQyODg3ZTY3NzVhMTYwMjg1NDdhOTdjNjMxYjkuLjJkODBmM2IxYjc3NGE4
NTNjZjIxMjc1NzBkZjE4ODA1MTJhMmQwMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCkBAIC0zMDQsNyArMzA0LDcgQEAgYXV0byBTUUxp
dGVTdGF0ZW1lbnQ6OmNvbHVtbkJsb2JWaWV3KGludCBjb2wpIC0+IEJsb2JWaWV3CiAgICAgaWYg
KGJsb2JTaXplIDw9IDApCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1cm4geyByZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihibG9iKSwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihi
bG9iU2l6ZSkgfTsKKyAgICByZXR1cm4geyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYmxv
YiksIHN0YXRpY19jYXN0PHNpemVfdD4oYmxvYlNpemUpIH07CiB9CiAKIGJvb2wgU1FMaXRlU3Rh
dGVtZW50OjpoYXNTdGFydGVkU3RlcHBpbmcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tD
RE1GYWN0b3J5LmNwcAppbmRleCA5OTJlNGMxM2E3ZWU4ZWU0N2U4NDkxZjdiOGUzMDQyMGVkM2Vl
MjFkLi5iYzMyNDZiZjZiMmMyMDYzOGJmYjQyMjVjZjcwZDUxYThmYjMwZjAzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcApAQCAtMjEzLDcgKzIxMyw3IEBAIGJv
b2wgTW9ja0NETTo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5
cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlCiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IE1vY2tDRE06OnNh
bml0aXplUmVzcG9uc2UoY29uc3QgU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKLSAg
ICBpZiAoIWNoYXJhY3RlcnNBcmVBbGxBU0NJSShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFy
Kj4ocmVzcG9uc2UuZGF0YSgpKSwgcmVzcG9uc2Uuc2l6ZSgpKSkKKyAgICBpZiAoIWNoYXJhY3Rl
cnNBcmVBbGxBU0NJSShyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VBcnJheSA9IFN0
cmluZyhyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLnNpemUoKSkuc3BsaXQoJyAnKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBQYXJzZXIuY3BwIGIvU291cmNlL1dl
YkRyaXZlci9zb2NrZXQvSFRUUFBhcnNlci5jcHAKaW5kZXggN2E1YjIyOGQ1ZmY3MTQ2ZGE3YjEx
NzdjYjE0Y2JhNGU0MzBiMzdmYS4uYzgyYWQ5NTdmNzEzYzNhZTc2OTRjZTg2M2U1NzU0NTAyYmMw
Mjc0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRUUFBhcnNlci5jcHAK
KysrIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRUUFBhcnNlci5jcHAKQEAgLTEzMCw3ICsx
MzAsNyBAQCBib29sIEhUVFBQYXJzZXI6OnJlYWRMaW5lKFN0cmluZyYgbGluZSkKICAgICBpZiAo
cG9zaXRpb24gPT0gbm90Rm91bmQgfHwgcG9zaXRpb24gKyAxID09IGxlbmd0aCB8fCBtX2J1ZmZl
cltwb3NpdGlvbiArIDFdICE9IDB4MGEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGxp
bmUgPSBTdHJpbmc6OmZyb21VVEY4KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG1fYnVmZmVyLmRh
dGEoKSksIHBvc2l0aW9uKTsKKyAgICBsaW5lID0gU3RyaW5nOjpmcm9tVVRGOChtX2J1ZmZlci5k
YXRhKCksIHBvc2l0aW9uKTsKICAgICBpZiAobGluZS5pc051bGwoKSkKICAgICAgICAgTE9HX0VS
Uk9SKCJDbGllbnQgZXJyb3I6IGludmFsaWQgZW5jb2RpbmcgaW4gSFRUUCBoZWFkZXIuIik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L1Nlc3Npb25Ib3N0U29ja2V0LmNw
cCBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L1Nlc3Npb25Ib3N0U29ja2V0LmNwcAppbmRleCAw
ZjY1NjY4ZmMyZmI4OWZkNGVhYTdkYzQxNDg3YmYxZDYxMjBjYWYwLi44MjRmOTAyOTA3YTk0Yjhk
YmE1YjM4MGE1N2JhYzUwYmZmNWY2ZjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL3Nv
Y2tldC9TZXNzaW9uSG9zdFNvY2tldC5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQv
U2Vzc2lvbkhvc3RTb2NrZXQuY3BwCkBAIC01MCw3ICs1MCw3IEBAIHZvaWQgU2Vzc2lvbkhvc3Q6
OnNlbmRXZWJJbnNwZWN0b3JFdmVudChjb25zdCBTdHJpbmcmIGV2ZW50KQogICAgICAgICByZXR1
cm47CiAKICAgICBjb25zdCBDU3RyaW5nIG1lc3NhZ2UgPSBldmVudC51dGY4KCk7Ci0gICAgc2Vu
ZChtX2NsaWVudElELnZhbHVlKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1l
c3NhZ2UuZGF0YSgpKSwgbWVzc2FnZS5sZW5ndGgoKSk7CisgICAgc2VuZChtX2NsaWVudElELnZh
bHVlKCksIG1lc3NhZ2UuY2hhcmFjdGVyczgoKSwgbWVzc2FnZS5sZW5ndGgoKSk7CiB9CiAKIHZv
aWQgU2Vzc2lvbkhvc3Q6OmNvbm5lY3RUb0Jyb3dzZXIoRnVuY3Rpb248dm9pZCAoc3RkOjpvcHRp
b25hbDxTdHJpbmc+IGVycm9yKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNw
cAppbmRleCA0ZjU4ZWQxYzU0MGVlYThhYmMyOTc2Y2M4MTVmNzg2ZjJkMDY2ODA5Li5iMDdlMzU2
MWU5YjdmYmQ4ODk0Yjg1MTczM2Y3NmI5NjYzNDc3NzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCkBA
IC02OTEsNyArNjkxLDcgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5OjptZWRpYVBsYXll
cktleU5lZWRlZChVaW50OEFycmF5KiBtZXNzYWdlKQogI2lmIEVOQUJMRShFTkNSWVBURURfTUVE
SUEpCiB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVySW5pdGlhbGl6YXRp
b25EYXRhRW5jb3VudGVyZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4mJiBpbml0RGF0YSkKIHsKLSAgICBtX3dlYlByb2Nlc3NDb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OkluaXRpYWxpemF0aW9uRGF0YUVu
Y291bnRlcmVkKGluaXREYXRhVHlwZSwgSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDhfdCo+KGluaXREYXRhLT5kYXRhKCkpLCBpbml0RGF0YS0+Ynl0ZUxlbmd0aCgpKSks
IG1faWQpOworICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok1lZGlh
UGxheWVyUHJpdmF0ZVJlbW90ZTo6SW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERh
dGFUeXBlLCBJUEM6OkRhdGFSZWZlcmVuY2Uoc3RhdGljX2Nhc3Q8dWludDhfdCo+KGluaXREYXRh
LT5kYXRhKCkpLCBpbml0RGF0YS0+Ynl0ZUxlbmd0aCgpKSksIG1faWQpOwogfQogCiB2b2lkIFJl
bW90ZU1lZGlhUGxheWVyUHJveHk6Om1lZGlhUGxheWVyV2FpdGluZ0ZvcktleUNoYW5nZWQoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFj
a1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJh
Y2tQcm94eS5jcHAKaW5kZXggOWVjNTVmNjE2ZjU4NDNiNmM4MDI3YmMxOWRhN2E2MDU4ZDRhYTYw
NC4uYjQxYTAyODFmODU4YTEyMmUwZmFhNmJiNzE5NGVlNTMwY2M5ZjFmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHku
Y3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBSZW1vdGVUZXh0VHJhY2tQcm94eTo6YWRkRGF0
YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGUKICAgICBpZiAo
IW1fY29ubmVjdGlvblRvV2ViUHJvY2VzcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpBZGREYXRhQ3VlKG1faWRlbnRpZmllciwgc3RhcnQsIGVuZCwgSVBD
OjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBs
ZW5ndGgpKSwgbV9tZWRpYVBsYXllcklkZW50aWZpZXIpOworICAgIG1fY29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy0+Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6QWRkRGF0YUN1ZShtX2lkZW50aWZpZXIsIHN0YXJ0LCBlbmQsIElQQzo6RGF0YVJlZmVy
ZW5jZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCkpLCBtX21lZGlh
UGxheWVySWRlbnRpZmllcik7CiB9CiAKICNpZiBFTkFCTEUoREFUQUNVRV9WQUxVRSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3Jk
ZXIuY3BwCmluZGV4IGFiYWE1YmJjNGQ4NDEwNGZhYTkzMmVjN2E4ZDQyNTc3ZGI4OWZmMmYuLjhj
MTI1NDlmMTQzMjg5ZmYxZjJkYmIzNjQ1ODdjMmY2OGVhY2E2YmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVkaWFSZWNvcmRlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNwcApA
QCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6dmlkZW9TYW1wbGVB
dmFpbGFibGUoV2ViQ29yZTo6UmVtb3RlVmlkZW9TYW1wbGUmJiByZW1vCiB2b2lkIFJlbW90ZU1l
ZGlhUmVjb3JkZXI6OmZldGNoRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGF0YVJl
ZmVyZW5jZSYmLCBkb3VibGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fd3JpdGVy
LT5mZXRjaERhdGEoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKGF1dG8mJiBkYXRhLCBhdXRvIHRpbWVDb2RlKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byog
cG9pbnRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEgPyBkYXRhLT5k
YXRhKCkgOiBudWxscHRyKTsKKyAgICAgICAgYXV0byogcG9pbnRlciA9IGRhdGEgPyBkYXRhLT5k
YXRhKCkgOiBudWxscHRyOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihJUEM6OkRhdGFSZWZl
cmVuY2UgeyBwb2ludGVyLCBkYXRhID8gZGF0YS0+c2l6ZSgpIDogMCB9LCB0aW1lQ29kZSk7CiAg
ICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZURhdGFDdXJsLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlRGF0YUN1cmwuY3BwCmluZGV4IDE5MjQ4MmJmOWY0MzRkYzE5OWQz
N2FkNDExODI5NGFlMTlkYzY2Y2EuLjhiZWE4ODkzYWJhYTc4MTk3ZTY1ODU2ZjI0NTU1ZjdhZmRm
NTc4MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlRGF0YUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlRGF0YUN1cmwuY3BwCkBAIC03Myw3ICs3Myw3IEBAIGJvb2wgRGF0
YTo6YXBwbHkoY29uc3QgRnVuY3Rpb248Ym9vbChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT4mIGFw
cGxpZXIpIGNvbnN0CiAgICAgaWYgKGlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgcmV0dXJuIGFwcGxpZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0
YSgpKSwgc2l6ZSgpKTsKKyAgICByZXR1cm4gYXBwbGllcihkYXRhKCksIHNpemUoKSk7CiB9CiAK
IERhdGEgRGF0YTo6c3VicmFuZ2Uoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUtleS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUtleS5jcHAKaW5kZXggZjhmMzQxMGRjYTA1YWExOTQxNmNiYzQ4NTE1ZmEwZWUzNGJjY2UyYS4u
ZTc5ZjFkNGFkNDcwYTI1MTAyNDA1NzE5YzY0ZjQzMWI3NzdkNzY2ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVLZXkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlS2V5LmNwcApA
QCAtOTQsNyArOTQsNyBAQCBzdGF0aWMgdm9pZCBoYXNoU3RyaW5nKFNIQTEmIHNoYTEsIGNvbnN0
IFN0cmluZyYgc3RyaW5nKQogICAgIH0KICAgICBhdXRvIGNTdHJpbmcgPSBzdHJpbmcudXRmOCgp
OwogICAgIC8vIEluY2x1ZGUgdGVybWluYXRpbmcgbnVsbCBieXRlLgotICAgIHNoYTEuYWRkQnl0
ZXMocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oY1N0cmluZy5kYXRhKCkpLCBjU3Ry
aW5nLmxlbmd0aCgpICsgMSk7CisgICAgc2hhMS5hZGRCeXRlcyhjU3RyaW5nLmNoYXJhY3RlcnM4
KCksIGNTdHJpbmcubGVuZ3RoKCkgKyAxKTsKIH0KIAogS2V5OjpIYXNoVHlwZSBLZXk6OmNvbXB1
dGVIYXNoKGNvbnN0IFNhbHQmIHNhbHQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViS2l0RGlyZWN0b3J5SW5wdXRTdHJlYW0uY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYktpdERpcmVjdG9yeUlucHV0U3RyZWFt
LmNwcAppbmRleCAxNDU0YTFmMDZjN2VkODhjYmFiNjY2OWFhZWZkNDYyYjkzYWI2Y2UwLi5jZjJh
ZjkxMjIzZDgwNGJhZTQ3MmU0NzY2NDAxM2FhMTBhMGE1MGFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViS2l0RGlyZWN0b3J5SW5wdXRTdHJlYW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJLaXREaXJlY3RvcnlJ
bnB1dFN0cmVhbS5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCBzdGF0aWMgZ3NzaXplIHdlYmtpdERp
cmVjdG9yeUlucHV0U3RyZWFtUmVhZChHSW5wdXRTdHJlYW0qIGlucHV0LCB2b2lkKiBidWZmZXIs
CiAgICAgICAgIGdzaXplIGJ1ZmZlclNpemU7CiAgICAgICAgIGF1dG8qIGJ1ZmZlckRhdGEgPSBn
X2J5dGVzX2dldF9kYXRhKHN0cmVhbS0+cHJpdi0+YnVmZmVyLmdldCgpLCAmYnVmZmVyU2l6ZSk7
CiAgICAgICAgIGdzaXplIGJ5dGVzUmVhZCA9IHN0ZDo6bWluKGJ1ZmZlclNpemUsIGNvdW50IC0g
dG90YWxCeXRlc1JlYWQpOwotICAgICAgICBtZW1jcHkocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4o
YnVmZmVyKSArIHRvdGFsQnl0ZXNSZWFkLCBidWZmZXJEYXRhLCBieXRlc1JlYWQpOworICAgICAg
ICBtZW1jcHkoc3RhdGljX2Nhc3Q8Y2hhcio+KGJ1ZmZlcikgKyB0b3RhbEJ5dGVzUmVhZCwgYnVm
ZmVyRGF0YSwgYnl0ZXNSZWFkKTsKICAgICAgICAgaWYgKGJ5dGVzUmVhZCA9PSBidWZmZXJTaXpl
KQogICAgICAgICAgICAgc3RyZWFtLT5wcml2LT5idWZmZXIgPSBudWxscHRyOwogICAgICAgICBl
bHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVy
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5jcHAKaW5k
ZXggNzQ2NDI4MTNmNDc4MTk2YzBjNzhjZWI3ODdlMzY2ZGMyOGRjOTI2Mi4uMWFmOWVlYTZhYWQ0
NjJkYTFkYzg1MWQ3ODYyMWYzNjhmZDUwMDI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcApAQCAtODIsNyArODIsNyBAQCB2b2lkIEFyZ3VtZW50
Q29kZXI8Q1N0cmluZz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBDU3RyaW5nJiBz
dHJpbmcpCiAKICAgICB1aW50MzJfdCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7CiAgICAgZW5j
b2RlciA8PCBsZW5ndGg7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oc3RyaW5nLmRhdGEoKSksIGxlbmd0aCwgMSk7Cisg
ICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoc3RyaW5nLmNoYXJhY3RlcnM4KCksIGxl
bmd0aCwgMSk7CiB9CiAKIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIEFyZ3VtZW50Q29kZXI8Q1N0
cmluZz46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBDU3RyaW5nJiByZXN1bHQpCkBAIC0xMjUs
NyArMTI1LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFN0cmluZz46OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICBlbmNvZGVyIDw8IGxlbmd0aCA8PCBp
czhCaXQ7CiAKICAgICBpZiAoaXM4Qml0KQotICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVu
Z3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzdHJpbmcuY2hhcmFjdGVy
czgoKSksIGxlbmd0aCAqIHNpemVvZihMQ2hhciksIGFsaWdub2YoTENoYXIpKTsKKyAgICAgICAg
ZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoc3RyaW5nLmNoYXJhY3RlcnM4KCksIGxlbmd0
aCAqIHNpemVvZihMQ2hhciksIGFsaWdub2YoTENoYXIpKTsKICAgICBlbHNlCiAgICAgICAgIGVu
Y29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KHN0cmluZy5jaGFyYWN0ZXJzMTYoKSksIGxlbmd0aCAqIHNpemVvZihVQ2hhciksIGFsaWdu
b2YoVUNoYXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2Nm
L1dLU3RyaW5nQ0YubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZi9XS1N0cmluZ0NG
Lm1tCmluZGV4IDgyNmZlNmI1MGUwOWJkMTBkOTRhYzRhYTQ3OGRkYWRjYmVmZjUwZmUuLmQxNzhm
MDE2ZGYzZjhhMzA3MzU2NTM2OGViYTNkMGY4OTFkYWJlMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9jL2NmL1dLU3RyaW5nQ0YubW0KKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL2MvY2YvV0tTdHJpbmdDRi5tbQpAQCAtNTcsNiArNTcsNiBAQCBDRlN0cmluZ1Jl
ZiBXS1N0cmluZ0NvcHlDRlN0cmluZyhDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3JSZWYsIFdLU3Ry
aW5nUmVmIHN0cmluZwogICAgIC8vIE5PVEU6IFRoaXMgZG9lcyBub3QgdXNlIFN0cmluZ0ltcGw6
OmNyZWF0ZUNGU3RyaW5nKCkgc2luY2UgdGhhdCBmdW5jdGlvbgogICAgIC8vIGV4cGVjdHMgdG8g
YmUgY2FsbGVkIG9uIHRoZSB0aHJlYWQgcnVubmluZyBXZWJDb3JlLgogICAgIGlmIChXZWJLaXQ6
OnRvSW1wbChzdHJpbmdSZWYpLT5zdHJpbmcoKS5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIENG
U3RyaW5nQ3JlYXRlV2l0aEJ5dGVzKGFsbG9jYXRvclJlZiwgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBVSW50OCo+KFdlYktpdDo6dG9JbXBsKHN0cmluZ1JlZiktPnN0cmluZygpLmNoYXJhY3RlcnM4
KCkpLCBXZWJLaXQ6OnRvSW1wbChzdHJpbmdSZWYpLT5zdHJpbmcoKS5sZW5ndGgoKSwga0NGU3Ry
aW5nRW5jb2RpbmdJU09MYXRpbjEsIHRydWUpOworICAgICAgICByZXR1cm4gQ0ZTdHJpbmdDcmVh
dGVXaXRoQnl0ZXMoYWxsb2NhdG9yUmVmLCBXZWJLaXQ6OnRvSW1wbChzdHJpbmdSZWYpLT5zdHJp
bmcoKS5jaGFyYWN0ZXJzOCgpLCBXZWJLaXQ6OnRvSW1wbChzdHJpbmdSZWYpLT5zdHJpbmcoKS5s
ZW5ndGgoKSwga0NGU3RyaW5nRW5jb2RpbmdJU09MYXRpbjEsIHRydWUpOwogICAgIHJldHVybiBD
RlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKGFsbG9jYXRvclJlZiwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBVbmlDaGFyKj4oV2ViS2l0Ojp0b0ltcGwoc3RyaW5nUmVmKS0+c3RyaW5nKCkuY2hh
cmFjdGVyczE2KCkpLCBXZWJLaXQ6OnRvSW1wbChzdHJpbmdSZWYpLT5zdHJpbmcoKS5sZW5ndGgo
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZi9XS1VSTENG
Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2YvV0tVUkxDRi5tbQppbmRleCAxZDg1
NmYwZDgxZGE3NTEwYTBmNmNiZTM2NGQyZmY1NDk1YTY3NWMwLi4yN2NkYzUxZGIzYzlhYzljYjBl
Y2I1ZWYwNzNkMmI1NDNhMzVjOTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvYy9jZi9XS1VSTENGLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NmL1dL
VVJMQ0YubW0KQEAgLTY3LDUgKzY3LDUgQEAgQ0ZVUkxSZWYgV0tVUkxDb3B5Q0ZVUkwoQ0ZBbGxv
Y2F0b3JSZWYgYWxsb2NhdG9yUmVmLCBXS1VSTFJlZiBVUkxSZWYpCiAgICAgLy8gVVRGLTggd2hp
Y2ggdXNlcyBsZXNzIG1lbW9yeSBhbmQgaXMgd2hhdCBXZWJLaXQgY2xpZW50cyBtaWdodCBleHBl
Y3QuCiAKICAgICBDU3RyaW5nIGJ1ZmZlciA9IHN0cmluZy51dGY4KCk7Ci0gICAgcmV0dXJuIENG
VVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMobnVsbHB0ciwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBVSW50OCo+KGJ1ZmZlci5kYXRhKCkpLCBidWZmZXIubGVuZ3RoKCksIGtDRlN0cmluZ0Vu
Y29kaW5nVVRGOCwgbnVsbHB0ciwgdHJ1ZSk7CisgICAgcmV0dXJuIENGVVJMQ3JlYXRlQWJzb2x1
dGVVUkxXaXRoQnl0ZXMobnVsbHB0ciwgYnVmZmVyLmNoYXJhY3RlcnM4KCksIGJ1ZmZlci5sZW5n
dGgoKSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBudWxscHRyLCB0cnVlKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAppbmRleCA5NDZhZjQ3ZGZiN2U2MTFm
MWFiNDQxNzM0YTliMGUxNDE5ZmJlZDgxLi4wYzBmMDhmYmRlNTZhOWQ0MmVjOWY5NmJhMzhmYmU1
MTI1NTZlMTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3Bw
CkBAIC04NCw3ICs4NCw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNl
Ojp3cmFwSW5TaGFyZWRCdWZmZXIoKQogCiAjaWYgVVNFKENGKQogICAgIGF1dG8gZGVhbGxvY2F0
b3IgPSBjcmVhdGVTaGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdG9yKHRoaXMpOwotICAgIGF1dG8g
Y2ZEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVXaXRoQnl0ZXNOb0NvcHkoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGRhdGEoKSksIHN0YXRpY19j
YXN0PENGSW5kZXg+KHNpemUoKSksIGRlYWxsb2NhdG9yLmdldCgpKSk7CisgICAgYXV0byBjZkRh
dGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZVdpdGhCeXRlc05vQ29weShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBkYXRhKCksIHN0YXRpY19jYXN0PENGSW5kZXg+KHNpemUoKSksIGRlYWxsb2NhdG9yLmdl
dCgpKSk7CiAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNmRGF0YS5nZXQoKSk7CiAj
ZWxpZiBVU0UoR0xJQikKICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYoZ19i
eXRlc19uZXdfd2l0aF9mcmVlX2Z1bmMoZGF0YSgpLCBzaXplKCksIFtdKHZvaWQqIGRhdGEpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlZERpc3BsYXlMaXN0SGFuZGxl
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5oCmluZGV4
IDU4N2Q5M2U0ZjEyNWQ0N2MxNjkwZWRkMDdhYzJjNzNlN2Q3OWYxNjkuLmNiNmFmYWJiMTU1ZTRi
MTBkNzNmNDkwZTZjNjk2MWU2MmZkZWEwYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1NoYXJlZERpc3BsYXlMaXN0SGFuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
U2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAg
Y29uc3QgU2hhcmVkTWVtb3J5JiBzaGFyZWRNZW1vcnkoKSBjb25zdCB7IHJldHVybiBtX3NoYXJl
ZE1lbW9yeS5nZXQoKTsgfQogCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KLSAg
ICB1aW50OF90KiBkYXRhKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90
Kj4oc2hhcmVkTWVtb3J5KCkuZGF0YSgpKTsgfQorICAgIHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDx1aW50OF90Kj4oc2hhcmVkTWVtb3J5KCkuZGF0YSgpKTsgfQog
CiAgICAgdWludDY0X3QgdW5yZWFkQnl0ZXMoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0LmNwcAppbmRleCA4NWYyMjNjZmJh
YTAxYjllOWY1ZDgyMzIxOWIwYTkwMjkxMDcyN2E5Li5mNDc0MTRlNTczNjU2Mzg2MTFkYzI1Mzdm
MTBjYzA0NzU2Zjc3MmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb21w
aWxlZENvbnRlbnRSdWxlTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29t
cGlsZWRDb250ZW50UnVsZUxpc3QuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFdlYkNvbXBpbGVkQ29u
dGVudFJ1bGVMaXN0Ojp+V2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3QoKQogCiBib29sIFdlYkNv
bXBpbGVkQ29udGVudFJ1bGVMaXN0Ojpjb25kaXRpb25zQXBwbHlPbmx5VG9Eb21haW4oKSBjb25z
dAogewotICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fZGF0YS5kYXRhLT5kYXRhKCkpICsgbV9kYXRh
LmNvbmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbk9mZnNldCk7CisgICAgcmV0dXJuICpyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1f
ZGF0YS5kYXRhLT5kYXRhKCkpICsgbV9kYXRhLmNvbmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbk9m
ZnNldCk7CiB9CiAKIGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29k
ZSogV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3Q6OmZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5
dGVjb2RlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmNwcApp
bmRleCBjNzk3NmZmNTJlYThlMTVhYjY4MGE1NjNlNDMxMDg2OGVjZDMxMDBlLi5lZWViZDliZDA1
ZjU2M2FiNGI1NjM0ZmY0YWZiNmRkODdjYzRhMGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uQXNz
ZXJ0aW9uUmVzcG9uc2UuY3BwCkBAIC01MCw3ICs1MCw3IEBAIFJlZlB0cjxEYXRhPiBXZWJBdXRo
ZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlOjp1c2VySGFuZGxlKCkgY29uc3QKICAgICBSZWZQ
dHI8QVBJOjpEYXRhPiBkYXRhOwogICAgIGlmIChhdXRvKiB1c2VySGFuZGxlID0gbV9yZXNwb25z
ZS0+dXNlckhhbmRsZSgpKSB7CiAgICAgICAgIHVzZXJIYW5kbGUtPnJlZigpOwotICAgICAgICBk
YXRhID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZyhyZWludGVycHJldF9jYXN0PHVu
c2lnbmVkIGNoYXIqPih1c2VySGFuZGxlLT5kYXRhKCkpLCB1c2VySGFuZGxlLT5ieXRlTGVuZ3Ro
KCksIFtdICh1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9pZCogZGF0YSkgeworICAgICAgICBkYXRh
ID0gQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZyhzdGF0aWNfY2FzdDx1bnNpZ25lZCBj
aGFyKj4odXNlckhhbmRsZS0+ZGF0YSgpKSwgdXNlckhhbmRsZS0+Ynl0ZUxlbmd0aCgpLCBbXSAo
dW5zaWduZWQgY2hhciosIGNvbnN0IHZvaWQqIGRhdGEpIHsKICAgICAgICAgICAgIHN0YXRpY19j
YXN0PEFycmF5QnVmZmVyKj4oY29uc3RfY2FzdDx2b2lkKj4oZGF0YSkpLT5kZXJlZigpOwogICAg
ICAgICB9LCB1c2VySGFuZGxlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlLmNwcAppbmRleCBiN2JkMDk4NTQ4MWNlYTgxZjNlOWM0NmY4ZmQ1OGIyYjZjM2U3MWRj
Li43MDJlZmIyOTlhNDFiMDEzYzg1NjkwNWU5ZTZiODAyNjI3NzBhZmUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTI0MSw3ICsyNDEsNyBAQCBzdGF0aWMg
SVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFGcm9tKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAg
IGlmIChzdHJpbmcuaXNOdWxsKCkgfHwgIXN0cmluZy5pczhCaXQoKSkKICAgICAgICAgcmV0dXJu
IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oc3RyaW5nLmNoYXJhY3RlcnMxNigp
KSwgc3RyaW5nLmxlbmd0aCgpICogc2l6ZW9mKFVDaGFyKSB9OwotICAgIHJldHVybiB7IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0cmluZy5jaGFyYWN0ZXJzOCgpKSwgc3RyaW5n
Lmxlbmd0aCgpICogc2l6ZW9mKExDaGFyKSB9OworICAgIHJldHVybiB7IHN0cmluZy5jaGFyYWN0
ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkgKiBzaXplb2YoTENoYXIpIH07CiB9CiAKIHN0YXRpYyB2
b2lkIGxvYWRTdHJpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHN0cmluZ1JlZiwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBXS1R5cGVSZWYg
dXNlckRhdGFSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9T
T0F1dGhvcml6YXRpb24vUmVkaXJlY3RTT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1JlZGlyZWN0U09BdXRob3Jp
emF0aW9uU2Vzc2lvbi5tbQppbmRleCBmYmVmNTQxNWU4NmQ3MWVjMWY3ZjIxNzFmNGI2MjliYjZj
YTMwNGVkLi4wOGM3ZWRkMzgxNTU2MTdjMjg1ZWE2M2RhMzA5ZTFiNGM1Nzc5ODgxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vUmVkaXJl
Y3RTT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1NPQXV0aG9yaXphdGlvbi9SZWRpcmVjdFNPQXV0aG9yaXphdGlvblNlc3Npb24ubW0K
QEAgLTc3LDcgKzc3LDcgQEAgdm9pZCBSZWRpcmVjdFNPQXV0aG9yaXphdGlvblNlc3Npb246OmNv
bXBsZXRlSW50ZXJuYWwoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmUKICAgICAgICAgaWYgKCFu
YXZpZ2F0aW9uQWN0aW9uLT5pc1Byb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKSB7CiAgICAgICAgICAg
ICBwYWdlLT5zZXRTaG91bGRTdXBwcmVzc1NPQXV0aG9yaXphdGlvbkluTmV4dE5hdmlnYXRpb25Q
b2xpY3lEZWNpc2lvbigpOwogICAgICAgICAgICAgYXV0byBodG1sID0gbWFrZVN0cmluZygiPHNj
cmlwdD5sb2NhdGlvbiA9ICciLCByZXNwb25zZS5odHRwSGVhZGVyRmllbGRzKCkuZ2V0KEhUVFBI
ZWFkZXJOYW1lOjpMb2NhdGlvbiksICInPC9zY3JpcHQ+IikudXRmOCgpOwotICAgICAgICAgICAg
YXV0byBkYXRhID0gSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KGh0bWwuZGF0YSgpKSwgaHRtbC5sZW5ndGgoKSk7CisgICAgICAgICAgICBhdXRvIGRh
dGEgPSBJUEM6OkRhdGFSZWZlcmVuY2UoaHRtbC5jaGFyYWN0ZXJzOCgpLCBodG1sLmxlbmd0aCgp
KTsKICAgICAgICAgICAgIHBhZ2UtPmxvYWREYXRhKGRhdGEsICJ0ZXh0L2h0bWwiX3MsICJVVEYt
OCJfcywgbmF2aWdhdGlvbkFjdGlvbi0+cmVxdWVzdCgpLnVybCgpLnN0cmluZygpLCBudWxscHRy
LCBuYXZpZ2F0aW9uQWN0aW9uLT5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCkpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0L1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0L1JlbW90ZUluc3BlY3RvckNsaWVu
dC5jcHAKaW5kZXggZWI4NTU5ZTBjM2MzYmE2ZDg0ZDJmMGExMmJhYWI2NDIyYTc1NTA1Ny4uMTA0
MzA3MDY1ZmVjZWYxZjMyODZjM2QyZGRkMTNjMWMzZDczZmY0MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3Rl
SW5zcGVjdG9yQ2xpZW50LmNwcApAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgUmVtb3RlSW5zcGVj
dG9yQ2xpZW50OjpzZW5kV2ViSW5zcGVjdG9yRXZlbnQoY29uc3QgU3RyaW5nJiBldmVudCkKICAg
ICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKICAgICBBU1NFUlQobV9jb25uZWN0aW9uSUQpOwog
ICAgIGF1dG8gbWVzc2FnZSA9IGV2ZW50LnV0ZjgoKTsKLSAgICBzZW5kKG1fY29ubmVjdGlvbklE
LnZhbHVlKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1lc3NhZ2UuZGF0YSgp
KSwgbWVzc2FnZS5sZW5ndGgoKSk7CisgICAgc2VuZChtX2Nvbm5lY3Rpb25JRC52YWx1ZSgpLCBt
ZXNzYWdlLmNoYXJhY3RlcnM4KCksIG1lc3NhZ2UubGVuZ3RoKCkpOwogfQogCiBIYXNoTWFwPFN0
cmluZywgSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JDb25uZWN0aW9uQ2xpZW50OjpDYWxsSGFu
ZGxlcj4mIFJlbW90ZUluc3BlY3RvckNsaWVudDo6ZGlzcGF0Y2hNYXAoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcAppbmRl
eCBkZDU2ZTc0ZWVlZGNjYTMwMzAyNmMyOTUzM2FmODNhNjk3N2UxNmI0Li5jNDg1NzU0NTI4YjM1
NGE4NmMzY2U4NzhlZmJmNTg5MzNlMzgzZjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtNTYsOCArNTYsOCBA
QCB2b2lkIFdlYlNvY2tldENoYW5uZWw6Om5vdGlmeVNlbmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6
T3BDb2RlIG9wQ29kZSwgY29uc3QgdWludAogTmV0d29ya1NlbmRRdWV1ZSBXZWJTb2NrZXRDaGFu
bmVsOjpjcmVhdGVNZXNzYWdlUXVldWUoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJTb2NrZXRDaGFu
bmVsJiBjaGFubmVsKQogewogICAgIHJldHVybiB7IGRvY3VtZW50LCBbJmNoYW5uZWxdKGF1dG8m
IHV0ZjhTdHJpbmcpIHsKLSAgICAgICAgY2hhbm5lbC5ub3RpZnlTZW5kRnJhbWUoV2ViU29ja2V0
RnJhbWU6Ok9wQ29kZTo6T3BDb2RlVGV4dCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
Kj4odXRmOFN0cmluZy5kYXRhKCkpLCB1dGY4U3RyaW5nLmxlbmd0aCgpKTsKLSAgICAgICAgY2hh
bm5lbC5zZW5kTWVzc2FnZShNZXNzYWdlczo6TmV0d29ya1NvY2tldENoYW5uZWw6OlNlbmRTdHJp
bmcgeyBJUEM6OkRhdGFSZWZlcmVuY2UgeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
Pih1dGY4U3RyaW5nLmRhdGEoKSksIHV0ZjhTdHJpbmcubGVuZ3RoKCkgfSB9LCB1dGY4U3RyaW5n
Lmxlbmd0aCgpKTsKKyAgICAgICAgY2hhbm5lbC5ub3RpZnlTZW5kRnJhbWUoV2ViU29ja2V0RnJh
bWU6Ok9wQ29kZTo6T3BDb2RlVGV4dCwgdXRmOFN0cmluZy5jaGFyYWN0ZXJzOCgpLCB1dGY4U3Ry
aW5nLmxlbmd0aCgpKTsKKyAgICAgICAgY2hhbm5lbC5zZW5kTWVzc2FnZShNZXNzYWdlczo6TmV0
d29ya1NvY2tldENoYW5uZWw6OlNlbmRTdHJpbmcgeyBJUEM6OkRhdGFSZWZlcmVuY2UgeyB1dGY4
U3RyaW5nLmNoYXJhY3RlcnM4KCksIHV0ZjhTdHJpbmcubGVuZ3RoKCkgfSB9LCB1dGY4U3RyaW5n
Lmxlbmd0aCgpKTsKICAgICB9LCBbJmNoYW5uZWxdKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBieXRlTGVuZ3RoKSB7CiAgICAgICAgIGNoYW5uZWwubm90aWZ5U2VuZEZyYW1lKFdlYlNvY2tl
dEZyYW1lOjpPcENvZGU6Ok9wQ29kZUJpbmFyeSwgZGF0YSwgYnl0ZUxlbmd0aCk7CiAgICAgICAg
IGNoYW5uZWwuc2VuZE1lc3NhZ2UoTWVzc2FnZXM6Ok5ldHdvcmtTb2NrZXRDaGFubmVsOjpTZW5k
RGF0YSB7IElQQzo6RGF0YVJlZmVyZW5jZSB7IGRhdGEsIGJ5dGVMZW5ndGggfSB9LCBieXRlTGVu
Z3RoKTsKQEAgLTI5NSw3ICsyOTUsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZFJlY2Vp
dmVUZXh0KFN0cmluZyYmIG1lc3NhZ2UpCiAgICAgfQogCiAgICAgYXV0byB1dGY4TWVzc2FnZSA9
IG1lc3NhZ2UudXRmOCgpOwotICAgIG1faW5zcGVjdG9yLmRpZFJlY2VpdmVXZWJTb2NrZXRGcmFt
ZShtX2RvY3VtZW50LmdldCgpLCBjcmVhdGVXZWJTb2NrZXRGcmFtZUZvcldlYkluc3BlY3Rvcihy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih1dGY4TWVzc2FnZS5kYXRhKCkpLCB1dGY4
TWVzc2FnZS5sZW5ndGgoKSwgV2ViU29ja2V0RnJhbWU6Ok9wQ29kZTo6T3BDb2RlVGV4dCkpOwor
ICAgIG1faW5zcGVjdG9yLmRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZShtX2RvY3VtZW50LmdldCgp
LCBjcmVhdGVXZWJTb2NrZXRGcmFtZUZvcldlYkluc3BlY3Rvcih1dGY4TWVzc2FnZS5jaGFyYWN0
ZXJzOCgpLCB1dGY4TWVzc2FnZS5sZW5ndGgoKSwgV2ViU29ja2V0RnJhbWU6Ok9wQ29kZTo6T3BD
b2RlVGV4dCkpOwogCiAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVNZXNzYWdlKG1lc3NhZ2UpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1JU
Q0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyLmNwcAppbmRleCA3ZWIx
MDc4NzdlMmIyYTBhODk5NDM2NzQyMjRmZDFiMjgwMDRjYTQxLi45ODk3NWNiOGE4Mzg1NGFlOTZl
NGY3OTk4NTJmOTQyZDIzZWFiNmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1v
dGVNYW5hZ2VyLmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1v
dGVNYW5hZ2VyOjpzZW5kRGF0YShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgc291
CiAgICAgICAgIGlmIChpc1JhdykKICAgICAgICAgICAgIHNvdXJjZS0+c2VuZFJhd0RhdGEoZGF0
YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc291cmNl
LT5zZW5kU3RyaW5nRGF0YShDU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRh
dGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpKTsKKyAgICAgICAgICAgIHNvdXJjZS0+c2VuZFN0cmlu
Z0RhdGEoQ1N0cmluZyhkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpKTsKICAgICB9CiB9CiAKQEAg
LTIyNyw3ICsyMjcsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6UmVtb3Rl
U291cmNlQ29ubmVjdGlvbjo6ZGlkQ2hhbmdlUmVhZHlTdGF0ZShXZQogdm9pZCBSVENEYXRhQ2hh
bm5lbFJlbW90ZU1hbmFnZXI6OlJlbW90ZVNvdXJjZUNvbm5lY3Rpb246OmRpZFJlY2VpdmVTdHJp
bmdEYXRhKFdlYkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIHN0cmluZykKIHsKICAgICBhdXRvIHRleHQgPSBzdHJpbmcudXRmOCgpOwotICAg
IG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2Vy
UHJveHk6OlJlY2VpdmVEYXRhIHsgaWRlbnRpZmllciwgZmFsc2UsIElQQzo6RGF0YVJlZmVyZW5j
ZSB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KHRleHQuZGF0YSgpKSwg
dGV4dC5sZW5ndGgoKSB9IH0sIDApOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyUHJveHk6OlJlY2VpdmVEYXRhIHsgaWRlbnRpZmll
ciwgZmFsc2UsIElQQzo6RGF0YVJlZmVyZW5jZSB7IHRleHQuY2hhcmFjdGVyczgoKSwgdGV4dC5s
ZW5ndGgoKSB9IH0sIDApOwogfQogCiB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6
UmVtb3RlU291cmNlQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZVJhd0RhdGEoV2ViQ29yZTo6UlRDRGF0
YUNoYW5uZWxJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBzaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwCmluZGV4IGRiZmI4YjZi
ODExYjM2NDc0YTVkZTZiYjZhN2YzOGM1YjAyNTIwNmIuLjAzMGY4MWUwMzA5Njg0NWMwYTRhZTc0
NDg1NTFmZDVlMWExNGFhNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAK
QEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpzZW5kSmF2YVNj
cmlwdFN0cmVhbShjb25zdCBTdHJpbmcmIHJlc3VsdCkKICAgICBpZiAoIXN0YXJ0KG1fcmVxdWVz
dFVSTFN0cmluZywgcmVzdWx0Q1N0cmluZy5sZW5ndGgoKSwgMCwgInRleHQvcGxhaW4iLCAiIikp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGRlbGl2ZXJEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KHJlc3VsdENTdHJpbmcuZGF0YSgpKSwgcmVzdWx0Q1N0cmluZy5sZW5ndGgo
KSk7CisgICAgZGVsaXZlckRhdGEocmVzdWx0Q1N0cmluZy5jaGFyYWN0ZXJzOCgpLCByZXN1bHRD
U3RyaW5nLmxlbmd0aCgpKTsKICAgICBzdG9wKE5QUkVTX0RPTkUpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430842</attachid>
            <date>2021-06-08 07:57:30 -0700</date>
            <delta_ts>2021-06-08 08:47:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226743-20210608075729.patch</filename>
            <type>text/plain</type>
            <size>84786</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA0ZmY3ZmVmMzU4NzdhYzYzZDI4NDZk
OTI1ZTdhOGU5MzhhYWViZTIuLmMxODgxYTdiYjM5NTdhMmY1YzE3N2FkZDJlOGY2YTg3NTIzMmRi
NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMjEtMDYtMDcgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgdXNlIG9mIHJlaW50ZXJwcmV0X2Nhc3Q8PiBp
biB0aGUgY29kZWJhc2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNjc0MworCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAg
ICAgICogd3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmNwcDoKKyAgICAgICAgKiB3
dGYvRmFzdE1hbGxvYy5oOgorICAgICAgICAoV1RGOjpGYXN0QWxsb2NhdG9yOjphbGxvY2F0ZSk6
CisgICAgICAgICogd3RmL1NIQTEuaDoKKyAgICAgICAgKFdURjo6U0hBMTo6YWRkQnl0ZXMpOgor
ICAgICAgICAqIHd0Zi9TdGFja0NoZWNrLmg6CisgICAgICAgIChXVEY6OlN0YWNrQ2hlY2s6OlNj
b3BlOjpTY29wZSk6CisgICAgICAgIChXVEY6OlN0YWNrQ2hlY2s6OlN0YWNrQ2hlY2spOgorICAg
ICAgICAqIHd0Zi9VUkxIZWxwZXJzLmNwcDoKKyAgICAgICAgKFdURjo6VVJMSGVscGVyczo6dXNl
clZpc2libGVVUkwpOgorICAgICAgICAqIHd0Zi9VUkxQYXJzZXIuY3BwOgorICAgICAgICAoV1RG
OjpVUkxQYXJzZXI6OmZvcm1VUkxEZWNvZGUpOgorICAgICAgICAqIHd0Zi9jZi9VUkxDRi5jcHA6
CisgICAgICAgIChXVEY6OlVSTDo6Y3JlYXRlQ0ZVUkwgY29uc3QpOgorICAgICAgICAqIHd0Zi9j
b2NvYS9VUkxDb2NvYS5tbToKKyAgICAgICAgKFdURjo6VVJMOjpjcmVhdGVDRlVSTCBjb25zdCk6
CisgICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuY3BwOgorICAgICAg
ICAoV1RGOjpQZXJzaXN0ZW5jZTo6Q29kZXI8Q1N0cmluZz46OmVuY29kZSk6CisgICAgICAgIChX
VEY6OlBlcnNpc3RlbmNlOjpDb2RlcjxTdHJpbmc+OjplbmNvZGUpOgorICAgICAgICAqIHd0Zi90
ZXh0L0NTdHJpbmcuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuY3BwOgorICAgICAg
ICAoV1RGOjpTdHJpbmc6OmxhdGluMSBjb25zdCk6CisgICAgICAgICogd3RmL3RleHQvY2YvU3Ry
aW5nSW1wbENGLmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Y3JlYXRlQ0ZTdHJpbmcp
OgorCiAyMDIxLTA2LTA3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgQWRvcHQgU2VjVHJ1c3RHZXRDZXJ0aWZpY2F0ZUF0SW5kZXggcmVwbGFj
ZW1lbnQgd2hlcmUgYXZhaWxhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTk4Mjk3ZTdlMzM4ZjExYTY2OTRj
MWI0M2Y3Zjc1NDA4ZDE0ZTc3MS4uNWQyYzA3ZjhjNWY2NGM5OWZlNWQ4NGFiOTU5ZDIxNzdmMTNl
YTE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMSBAQAorMjAyMS0wNi0wNyAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSB1c2Ugb2YgcmVpbnRlcnBy
ZXRfY2FzdDw+IGluIHRoZSBjb2RlYmFzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NzQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCisKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1T
ZXNzaW9uQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkNsZWFyS2V5
OjpnZW5lcmF0ZUtleVJlcXVlc3QpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6dGFrZSk6CisgICAgICAgICogTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRj
aEJvZHlDb25zdW1lcjo6cmVzb2x2ZSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25z
dW1lcjo6dGFrZUFzQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6
dGFrZUFzVGV4dCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bFJlbW90ZUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxSZW1v
dGVIYW5kbGVyOjpyZWFkeVRvU2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5l
bFJlbW90ZUhhbmRsZXI6OnNlbmRTdHJpbmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0Rh
dGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6c2VuZFJhd0RhdGEpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjb3B5QnVzRGF0YSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50
aWNhdG9yUmVzcG9uc2VEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjplbmNvZGVBcnJheUJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpkZWNvZGVBcnJheUJ1ZmZlcik6CisgICAgICAgICogTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU29ja2V0Q2hhbm5lbDo6c3RhcnRDbG9zaW5nSGFuZHNoYWtlKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NPdXRnb2luZ0ZyYW1lUXVldWUpOgorICAgICAg
ICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpnZXRFeHBlY3RlZFdlYlNvY2tldEFjY2VwdCk6
CisgICAgICAgIChXZWJDb3JlOjpoZWFkZXJIYXNWYWxpZEhUVFBWZXJzaW9uKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
bG9uZURlc2VyaWFsaXplcjo6cmVhZFN0cmluZyk6CisgICAgICAgICogY29udGVudGV4dGVuc2lv
bnMvU2VyaWFsaXplZE5GQS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9u
czo6U2VyaWFsaXplZE5GQTo6cG9pbnRlckF0T2Zmc2V0SW5GaWxlIGNvbnN0KToKKyAgICAgICAg
KiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYXNoUG9pbnRlcik6CisgICAgICAg
ICogZG9tL1RleHRFbmNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRFbmNvZGVyOjpl
bmNvZGUgY29uc3QpOgorICAgICAgICAqIGRvbS9UZXh0RW5jb2RlclN0cmVhbUVuY29kZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dEVuY29kZXJTdHJlYW1FbmNvZGVyOjpmbHVzaCk6Cisg
ICAgICAgICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAg
IChXZWJDb3JlOjpzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKToKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleEltYWdlQXJyYXlCdWZmZXJWaWV3SGVscGVyKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmFkZFN0cmluZ1RvU0hBMSk6CisgICAgICAgICogbG9hZGVyL1RleHRSZXNvdXJjZURlY29k
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21V
VEY4KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFNjcmlwdDo6c2NyaXB0KToKKyAgICAgICAgKiBwYWdlL2NvY29hL1Jl
c291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpzaG93VGV4dCk6
CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6Om5leHRDaHVuayk6CisgICAgICAg
ICogcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVy
aWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29k
ZXJHZW5lcmljOjplbmNvZGVTdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dEdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
OjpwYWNrSW1hZ2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpnZXRQ
aXhlbEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6
OnB1dFBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJh
bmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzTmF0aXZlU2FtcGxlcyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25D
Ri5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Y6OmdlbmVy
YXRlS2V5UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZGb3VuZGF0aW9u
Q0Y6OnVwZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2Nm
L0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFu
ZFRleHRUcmFja1ByaXZhdGVBVkNGOjpyZWFkTmF0aXZlU2FtcGxlQnVmZmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyOjpjcmVhdGVJdGVt
QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxh
eUxpc3Q6Okl0ZXJhdG9yOjp1cGRhdGVDdXJyZW50SXRlbSk6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmg6CisgICAgICAgIChHSUZJbWFnZVJl
YWRlcjo6ZGF0YSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRv
ck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0
cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGRTdHJpbmdUb1NIQTEpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvcm1EYXRhQnVpbGRlcjo6ZW5jb2RlU3RyaW5nQXNGb3JtRGF0YSk6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U29ja2V0U3RyZWFtSGFuZGxlOjpzZW5kSGFuZHNoYWtlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaDoKKyAgICAgICAgKFdlYkNv
cmU6Omh0dHBIZWFkZXJWYWx1ZVVzaW5nU3VpdGFibGVFbmNvZGluZyk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6cGxhdGZvcm1TZW5kSW50ZXJuYWwp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXJsQ2FjaGVFbnRyeTo6Z2VuZXJhdGVCYXNlRmlsZW5hbWUpOgor
ICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1FMaXRlU3RhdGVtZW50Ojpjb2x1bW5CbG9iVmlldyk6CisgICAgICAgICogdGVzdGlu
Zy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzYW5pdGl6
ZVJlc3BvbnNlIGNvbnN0KToKKwogMjAyMS0wNi0wOCAgQWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0xGQ11bVEZDXSBBZGQgaW5pdGlhbCBwZXJjZW50IHZhbHVlIHN1
cHBvcnQgZm9yIGNvbHVtbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cKaW5kZXggY2IxNmNmYmU4ZGViNTEwMDk4ZTMy
MGExNGQ5YjhmZTVmNWE2YWQxOC4uYzAwMWRlMDA1YzA2MDBmMjU5ZWRkZGY1MjNjZDg5MGQ2YTY0
OTkwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkRyaXZlci9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wNi0wNyAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSB1c2Ugb2YgcmVpbnRl
cnByZXRfY2FzdDw+IGluIHRoZSBjb2RlYmFzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NzQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
QWRsZXIuCisKKyAgICAgICAgKiBzb2NrZXQvSFRUUFBhcnNlci5jcHA6CisgICAgICAgIChXZWJE
cml2ZXI6OkhUVFBQYXJzZXI6OnJlYWRMaW5lKToKKyAgICAgICAgKiBzb2NrZXQvU2Vzc2lvbkhv
c3RTb2NrZXQuY3BwOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uSG9zdDo6c2VuZFdlYklu
c3BlY3RvckV2ZW50KToKKwogMjAyMS0wNi0wMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVtb3ZlIDx3dGYvT3B0aW9uYWwuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMTFkNWJh
OGMyZjVlNjczNTQzYjYzMmJlNWRkYTQ5OWY4MGUwM2UwYi4uYzgzMmM2YjMxNjYxZTFiYWM2MDlh
MjBhNDUzOWQ5MGY5NDMyMzQ1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MiBAQAorMjAyMS0wNi0w
NyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSB1c2Ug
b2YgcmVpbnRlcnByZXRfY2FzdDw+IGluIHRoZSBjb2RlYmFzZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NzQzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5
OjptZWRpYVBsYXllckluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKToKKyAgICAgICAgKiBH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlVGV4dFRyYWNrUHJveHk6OmFkZERhdGFDdWUpOgorICAgICAgICAqIEdQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZURhdGFDdXJsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nh
Y2hlOjpEYXRhOjphcHBseSBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlS2V5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpoYXNo
U3RyaW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYktpdERpcmVjdG9yeUlu
cHV0U3RyZWFtLmNwcDoKKyAgICAgICAgKHdlYmtpdERpcmVjdG9yeUlucHV0U3RyZWFtUmVhZCk6
CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxDU3RyaW5nPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxTdHJpbmc+OjplbmNvZGUpOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9jZi9XS1N0
cmluZ0NGLm1tOgorICAgICAgICAoV0tTdHJpbmdDb3B5Q0ZTdHJpbmcpOgorICAgICAgICAqIFNo
YXJlZC9BUEkvYy9jZi9XS1VSTENGLm1tOgorICAgICAgICAoV0tVUkxDb3B5Q0ZVUkwpOgorICAg
ICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNo
YXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIpOgorICAgICAgICAqIFNoYXJlZC9T
aGFyZWREaXNwbGF5TGlzdEhhbmRsZS5oOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWREaXNwbGF5
TGlzdEhhbmRsZTo6ZGF0YSBjb25zdCk6CisgICAgICAgICogU2hhcmVkL1dlYkNvbXBpbGVkQ29u
dGVudFJ1bGVMaXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcGlsZWRDb250ZW50UnVs
ZUxpc3Q6OmNvbmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbiBjb25zdCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmNwcDoKKyAg
ICAgICAgKEFQSTo6V2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZTo6dXNlckhhbmRs
ZSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAg
IChkYXRhRnJvbSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9S
ZWRpcmVjdFNPQXV0aG9yaXphdGlvblNlc3Npb24ubW06CisgICAgICAgIChXZWJLaXQ6OlJlZGly
ZWN0U09BdXRob3JpemF0aW9uU2Vzc2lvbjo6Y29tcGxldGVJbnRlcm5hbCk6CisgICAgICAgICog
VUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yQ2xpZW50OjpzZW5kV2ViSW5zcGVjdG9yRXZl
bnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0Q2hhbm5lbDo6Y3JlYXRlTWVzc2FnZVF1ZXVlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0Q2hhbm5lbDo6ZGlkUmVjZWl2ZVRleHQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5h
Z2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpz
ZW5kRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6
UmVtb3RlU291cmNlQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZVN0cmluZ0RhdGEpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luU3RyZWFtOjpzZW5kSmF2YVNjcmlwdFN0cmVh
bSk6CisKIDIwMjEtMDYtMDggIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbTVNFXSBSZXdvcmsgaGFuZGxpbmcgb2YgU291cmNlQnVmZmVyJ3MgYnVmZmVyIGZ1
bGwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51
bWJlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5j
cHAKaW5kZXggY2JhYjk2NWU5MjNiYTQzZjlhNTM5ODY2ZWQxNjNjZDRmNDI2YWM5Ny4uZGY4MjU4
NDI1ZDkzZTAwNThjODRmZTdjZWMyZWUwNmIyNGM2N2IxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuY3BwCisrKyBiL1NvdXJjZS9XVEYv
d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmNwcApAQCAtMTQ5LDcgKzE0OSw3IEBA
IHZvaWQgQVJDNFJhbmRvbU51bWJlckdlbmVyYXRvcjo6cmFuZG9tVmFsdWVzKHZvaWQqIGJ1ZmZl
ciwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKLSAg
ICB1bnNpZ25lZCBjaGFyKiByZXN1bHQgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIq
PihidWZmZXIpOworICAgIGF1dG8gcmVzdWx0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+
KGJ1ZmZlcik7CiAgICAgc3RpcklmTmVlZGVkKCk7CiAgICAgd2hpbGUgKGxlbmd0aC0tKSB7CiAg
ICAgICAgIG1fY291bnQtLTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2Mu
aCBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuaAppbmRleCAwMjRmMWI5MWNiOWFhMWQwNGE4
Y2U2NDRmMWJmNWRmZmYxYTVjNGQ2Li43M2Q5NjliNDIwNTZmNjFjYmY1NDAwYjFmYTVjODdiYjdk
OGQ2ZjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmgKKysrIGIvU291
cmNlL1dURi93dGYvRmFzdE1hbGxvYy5oCkBAIC0yMDMsNyArMjAzLDcgQEAgcHVibGljOgogCiAg
ICAgVCogYWxsb2NhdGUoc2l6ZV90IGNvdW50KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8VCo+KGZhc3RNYWxsb2Moc2l6ZW9mKFQpICogY291bnQpKTsKKyAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PFQqPihmYXN0TWFsbG9jKHNpemVvZihUKSAqIGNvdW50KSk7CiAg
ICAgfQogCiAgICAgdm9pZCBkZWFsbG9jYXRlKFQqIHBvaW50ZXIsIHNpemVfdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1NIQTEuaCBiL1NvdXJjZS9XVEYvd3RmL1NIQTEuaAppbmRleCAy
YzdkOWEzNjRlMTU5ZTRkZDA0NTlmNDcyMDVjODNkY2QwNjMyOWJmLi4yMDY5MjMyNGU1MzgzY2I2
ODcyNTAwMTg5NmZkNzdhYzk1OTJhZDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TSEEx
LmgKKysrIGIvU291cmNlL1dURi93dGYvU0hBMS5oCkBAIC01MSw4ICs1MSw3IEBAIHB1YmxpYzoK
ICAgICB9CiAgICAgdm9pZCBhZGRCeXRlcyhjb25zdCBDU3RyaW5nJiBpbnB1dCkKICAgICB7Ci0g
ICAgICAgIGNvbnN0IGNoYXIqIHN0cmluZyA9IGlucHV0LmRhdGEoKTsKLSAgICAgICAgYWRkQnl0
ZXMocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oc3RyaW5nKSwgaW5wdXQubGVuZ3Ro
KCkpOworICAgICAgICBhZGRCeXRlcyhpbnB1dC5kYXRhQXNVSW50OFB0cigpLCBpbnB1dC5sZW5n
dGgoKSk7CiAgICAgfQogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFkZEJ5dGVzKGNvbnN0
IHVpbnQ4X3QqIGlucHV0LCBzaXplX3QgbGVuZ3RoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvU3RhY2tDaGVjay5oIGIvU291cmNlL1dURi93dGYvU3RhY2tDaGVjay5oCmluZGV4IDlj
NzI3ODYyYzA5ZmYxMDM5YTM3NzcyYjJkNjM2OGE0ZDRjYjQ0MTEuLmExOTJmYzcxZTI1ODg2YmJj
NjIwZGI3YWU1Y2Y3ZTUwYjJiODY0YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1N0YWNr
Q2hlY2suaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TdGFja0NoZWNrLmgKQEAgLTU3LDcgKzU3LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgLy8gdGhlbiB3ZSBlaXRoZXIgbmVlZCB0bzoKICAgICAg
ICAgICAgIC8vIDEuIGJyZWFrIHRoZSBpbnRlcnZhbCBpbnRvIHNtYWxsZXIgcGllY2VzIChpLmUu
IGluc2VydCBtb3JlIGNoZWNrcyksIG9yCiAgICAgICAgICAgICAvLyAyLiB1c2UgYSBsYXJnZXIg
cmVzZXJ2ZWRab25lIHNpemUuCi0gICAgICAgICAgICB1aW50OF90KiBjdXJyZW50U3RhY2tDaGVj
a3BvaW50ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oY3VycmVudFN0YWNrUG9pbnRlcigp
KTsKKyAgICAgICAgICAgIHVpbnQ4X3QqIGN1cnJlbnRTdGFja0NoZWNrcG9pbnQgPSBzdGF0aWNf
Y2FzdDx1aW50OF90Kj4oY3VycmVudFN0YWNrUG9pbnRlcigpKTsKICAgICAgICAgICAgIHVpbnQ4
X3QqIHByZXZpb3VzU3RhY2tDaGVja3BvaW50ID0gbV9jaGVja2VyLm1fbGFzdFN0YWNrQ2hlY2tw
b2ludDsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHByZXZpb3VzU3RhY2tDaGVja3BvaW50
IC0gY3VycmVudFN0YWNrQ2hlY2twb2ludCA+IDApOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQocHJldmlvdXNTdGFja0NoZWNrcG9pbnQgLSBjdXJyZW50U3RhY2tDaGVja3BvaW50IDwgc3Rh
dGljX2Nhc3Q8cHRyZGlmZl90PihtX2NoZWNrZXIubV9yZXNlcnZlZFpvbmUpKTsKQEAgLTg3LDcg
Kzg3LDcgQEAgcHVibGljOgogICAgICAgICA6IG1fc3RhY2tMaW1pdChib3VuZHMucmVjdXJzaW9u
TGltaXQobWluUmVzZXJ2ZWRab25lKSkKICNpZiBWRVJJRllfU1RBQ0tfQ0hFQ0tfUkVTRVJWRURf
Wk9ORV9TSVpFCiAgICAgICAgICwgbV9vd25lclRocmVhZCgmVGhyZWFkOjpjdXJyZW50KCkpCi0g
ICAgICAgICwgbV9sYXN0U3RhY2tDaGVja3BvaW50KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+
KGN1cnJlbnRTdGFja1BvaW50ZXIoKSkpCisgICAgICAgICwgbV9sYXN0U3RhY2tDaGVja3BvaW50
KHN0YXRpY19jYXN0PHVpbnQ4X3QqPihjdXJyZW50U3RhY2tQb2ludGVyKCkpKQogICAgICAgICAs
IG1fcmVzZXJ2ZWRab25lKG1pblJlc2VydmVkWm9uZSkKICNlbmRpZgogICAgIHsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvVVJMSGVscGVycy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9VUkxI
ZWxwZXJzLmNwcAppbmRleCA5YTlkMDYwMTNlNzU1Y2VjZDhhZmI4YjI3ZjA0NjkzZjIxZGQwYzBh
Li4zZDI4YTI1M2IzYzViMjA4OGYxNDZmNDkxNGE3OTNmNzQ5YWRlMTg3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9VUkxIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VUkxIZWxw
ZXJzLmNwcApAQCAtODIyLDcgKzgyMiw3IEBAIHN0YXRpYyBTdHJpbmcgZXNjYXBlVW5zYWZlQ2hh
cmFjdGVycyhjb25zdCBTdHJpbmcmIHNvdXJjZUJ1ZmZlcikKIAogU3RyaW5nIHVzZXJWaXNpYmxl
VVJMKGNvbnN0IENTdHJpbmcmIHVybCkKIHsKLSAgICBhdXRvKiBiZWZvcmUgPSByZWludGVycHJl
dF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPih1cmwuZGF0YSgpKTsKKyAgICBhdXRvKiBiZWZv
cmUgPSB1cmwuZGF0YUFzVUludDhQdHIoKTsKICAgICBpbnQgbGVuZ3RoID0gdXJsLmxlbmd0aCgp
OwogCiAgICAgaWYgKCFsZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VUkxQYXJz
ZXIuY3BwIGIvU291cmNlL1dURi93dGYvVVJMUGFyc2VyLmNwcAppbmRleCAyOTM2OWEyYTMxZWQw
NGFiZWUwZGQ2ZmY5OGQyYjI2ZDA1NTYwOGRmLi4wMDY3OWFlNDljZTU4YjllNGM2NDBkOGMzNTg4
MjVjOWVlOTFlMDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL1VSTFBhcnNlci5jcHAKQEAgLTI3OTIsNyArMjc5Miw3IEBAIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPiBVUkxQYXJzZXI6OmZvcm1VUkxEZWNvZGUoU3RyaW5nVmlldyBp
bnB1dCkKICAgICBhdXRvIHV0ZjggPSBpbnB1dC51dGY4KFN0cmljdENvbnZlcnNpb24pOwogICAg
IGlmICh1dGY4LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGF1
dG8gcGVyY2VudERlY29kZWQgPSBwZXJjZW50RGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
TENoYXIqPih1dGY4LmRhdGEoKSksIHV0ZjgubGVuZ3RoKCkpOworICAgIGF1dG8gcGVyY2VudERl
Y29kZWQgPSBwZXJjZW50RGVjb2RlKHV0ZjguZGF0YUFzVUludDhQdHIoKSwgdXRmOC5sZW5ndGgo
KSk7CiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjhSZXBsYWNpbmdJbnZhbGlkU2VxdWVuY2Vz
KHBlcmNlbnREZWNvZGVkLmRhdGEoKSwgcGVyY2VudERlY29kZWQuc2l6ZSgpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvY2YvVVJMQ0YuY3BwIGIvU291cmNlL1dURi93dGYvY2Yv
VVJMQ0YuY3BwCmluZGV4IDE0M2RjODU2NjJmNGU3YWQzMzIyNmMzMzRmZmJhYTVkNGVjZmY4ZTku
LjdjNmU0NzcwNGE4ZWZkNzA0OTI5MzgyZjVjZmM3YjhhNGJiZmI3YzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL2NmL1VSTENGLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jZi9VUkxDRi5j
cHAKQEAgLTUyLDEwICs1MiwxMCBAQCBSZXRhaW5QdHI8Q0ZVUkxSZWY+IFVSTDo6Y3JlYXRlQ0ZV
UkwoKSBjb25zdAogewogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gY2ZVUkw7CiAgICAgaWYgKExJ
S0VMWShtX3N0cmluZy5pczhCaXQoKSAmJiBtX3N0cmluZy5pc0FsbEFTQ0lJKCkpKQotICAgICAg
ICBjZlVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxscHRy
LCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4obV9zdHJpbmcuY2hhcmFjdGVyczgoKSks
IG1fc3RyaW5nLmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIG51bGxwdHIsIHRydWUp
KTsKKyAgICAgICAgY2ZVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0
ZXMobnVsbHB0ciwgbV9zdHJpbmcuY2hhcmFjdGVyczgoKSwgbV9zdHJpbmcubGVuZ3RoKCksIGtD
RlN0cmluZ0VuY29kaW5nVVRGOCwgbnVsbHB0ciwgdHJ1ZSkpOwogICAgIGVsc2UgewogICAgICAg
ICBDU3RyaW5nIHV0ZjggPSBtX3N0cmluZy51dGY4KCk7Ci0gICAgICAgIGNmVVJMID0gYWRvcHRD
RihDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgVUludDgqPih1dGY4LmRhdGEoKSksIHV0ZjgubGVuZ3RoKCksIGtDRlN0cmluZ0Vu
Y29kaW5nVVRGOCwgbnVsbHB0ciwgdHJ1ZSkpOworICAgICAgICBjZlVSTCA9IGFkb3B0Q0YoQ0ZV
UkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxscHRyLCB1dGY4LmNoYXJhY3RlcnM4KCks
IHV0ZjgubGVuZ3RoKCksIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgbnVsbHB0ciwgdHJ1ZSkpOwog
ICAgIH0KIAogICAgIGlmIChwcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgJiYgIWlzQ0ZVUkxTYW1l
T3JpZ2luKGNmVVJMLmdldCgpLCAqdGhpcykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9j
b2NvYS9VUkxDb2NvYS5tbSBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1VSTENvY29hLm1tCmluZGV4
IGQxZDFiMWJkYjZjNTIyYmJkYjk5NTdhYjFhOTljYzc3NzZjZDMzZWQuLmNhNDgyMDkwZTIxMGIy
MmVjZGVlNmY1ZjI3NDBlNzY3YTcxODliZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2Nv
Y29hL1VSTENvY29hLm1tCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1VSTENvY29hLm1tCkBA
IC03MCwxMCArNzAsMTAgQEAgUmV0YWluUHRyPENGVVJMUmVmPiBVUkw6OmNyZWF0ZUNGVVJMKCkg
Y29uc3QKIAogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gY2ZVUkw7CiAgICAgaWYgKExJS0VMWSht
X3N0cmluZy5pczhCaXQoKSAmJiBtX3N0cmluZy5pc0FsbEFTQ0lJKCkpKQotICAgICAgICBjZlVS
TCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxscHRyLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4obV9zdHJpbmcuY2hhcmFjdGVyczgoKSksIG1fc3Ry
aW5nLmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIG51bGxwdHIsIHRydWUpKTsKKyAg
ICAgICAgY2ZVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMobnVs
bHB0ciwgbV9zdHJpbmcuY2hhcmFjdGVyczgoKSwgbV9zdHJpbmcubGVuZ3RoKCksIGtDRlN0cmlu
Z0VuY29kaW5nVVRGOCwgbnVsbHB0ciwgdHJ1ZSkpOwogICAgIGVsc2UgewogICAgICAgICBDU3Ry
aW5nIHV0ZjggPSBtX3N0cmluZy51dGY4KCk7Ci0gICAgICAgIGNmVVJMID0gYWRvcHRDRihDRlVS
TENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgVUludDgqPih1dGY4LmRhdGEoKSksIHV0ZjgubGVuZ3RoKCksIGtDRlN0cmluZ0VuY29kaW5n
VVRGOCwgbnVsbHB0ciwgdHJ1ZSkpOworICAgICAgICBjZlVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVh
dGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxscHRyLCB1dGY4LmRhdGFBc1VJbnQ4UHRyKCksIHV0
ZjgubGVuZ3RoKCksIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgbnVsbHB0ciwgdHJ1ZSkpOwogICAg
IH0KIAogICAgIGlmIChwcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgJiYgIVdURjo6aXNDRlVSTFNh
bWVPcmlnaW4oY2ZVUkwuZ2V0KCksICp0aGlzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuY3BwIGIvU291cmNlL1dURi93dGYvcGVyc2lz
dGVuY2UvUGVyc2lzdGVudENvZGVycy5jcHAKaW5kZXggNDYzNThiZGNiZjY1MmY3MTRiYTc3NmE2
MmVjY2RjYmUyNDY2OTFhYi4uZjE2OGFlMjAxM2JjZWI5Nzg1OTU3ZTNhY2YwOGU5ODAwODM1OTFl
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENvZGVy
cy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENvZGVycy5j
cHAKQEAgLTU3LDcgKzU3LDcgQEAgdm9pZCBDb2RlcjxDU3RyaW5nPjo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IENTdHJpbmcmIHN0cmluZykKIAogICAgIHVpbnQzMl90IGxlbmd0aCA9
IHN0cmluZy5sZW5ndGgoKTsKICAgICBlbmNvZGVyIDw8IGxlbmd0aDsKLSAgICBlbmNvZGVyLmVu
Y29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzdHJp
bmcuZGF0YSgpKSwgbGVuZ3RoKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShz
dHJpbmcuZGF0YUFzVUludDhQdHIoKSwgbGVuZ3RoKTsKIH0KIAogc3RkOjpvcHRpb25hbDxDU3Ry
aW5nPiBDb2RlcjxDU3RyaW5nPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCkBAIC05OCw3ICs5
OCw3IEBAIHZvaWQgQ29kZXI8U3RyaW5nPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IFN0cmluZyYgc3RyaW5nKQogICAgIGVuY29kZXIgPDwgbGVuZ3RoIDw8IGlzOEJpdDsKIAogICAg
IGlmIChpczhCaXQpCi0gICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0cmluZy5jaGFyYWN0ZXJzOCgpKSwgbGVuZ3Ro
ICogc2l6ZW9mKExDaGFyKSk7CisgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRh
KHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgpOwogICAgIGVsc2UKICAgICAgICAgZW5jb2Rl
ci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
c3RyaW5nLmNoYXJhY3RlcnMxNigpKSwgbGVuZ3RoICogc2l6ZW9mKFVDaGFyKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0NTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvQ1N0cmluZy5oCmluZGV4IGUwNWRhZjc3ZjUzZTE1ZTNlMDYzYTMyNGY3M2MyZTg2ZDc0YTM5
ODEuLjdmYTZlZjM4MjIyMGRlYTJiM2UzNThhMmRkMGE2ZGUyOTY0NTFiMmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvQ1N0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
Q1N0cmluZy5oCkBAIC02MSw2ICs2MSw3IEBAIHB1YmxpYzoKICAgICBDU3RyaW5nKCkgeyB9CiAg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIENTdHJpbmcoY29uc3QgY2hhciopOwogICAgIFdURl9FWFBP
UlRfUFJJVkFURSBDU3RyaW5nKGNvbnN0IGNoYXIqLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBDU3Ry
aW5nKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpIDogQ1N0cmluZyhyZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgbGVuZ3RoKSB7IH0KICAgICBDU3RyaW5nKENT
dHJpbmdCdWZmZXIqIGJ1ZmZlcikgOiBtX2J1ZmZlcihidWZmZXIpIHsgfQogICAgIFdURl9FWFBP
UlRfUFJJVkFURSBzdGF0aWMgQ1N0cmluZyBuZXdVbmluaXRpYWxpemVkKHNpemVfdCBsZW5ndGgs
IGNoYXIqJiBjaGFyYWN0ZXJCdWZmZXIpOwogICAgIENTdHJpbmcoSGFzaFRhYmxlRGVsZXRlZFZh
bHVlVHlwZSkgOiBtX2J1ZmZlcihIYXNoVGFibGVEZWxldGVkVmFsdWUpIHsgfQpAQCAtNjksNiAr
NzAsOSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZl
ci0+ZGF0YSgpIDogbnVsbHB0cjsKICAgICB9CisKKyAgICBjb25zdCB1aW50OF90KiBkYXRhQXNV
SW50OFB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGRhdGEoKSk7IH0KKwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBjaGFyKiBtdXRhYmxlRGF0YSgp
OwogICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5n
LmNwcAppbmRleCA4NmY5ODM4MGRhMDg1ZWEzMmJmYmMwMDM3MDEwNjk0Mjk5MmMzYTE1Li5hNmQ0
ZGQyMzNkZGE2OGRjZDhhYzIxZDg1YjA4ZDFjZGEyMjVmMTgxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZT
dHJpbmcuY3BwCkBAIC02NjAsNyArNjYwLDcgQEAgQ1N0cmluZyBTdHJpbmc6OmxhdGluMSgpIGNv
bnN0CiAgICAgICAgIHJldHVybiBDU3RyaW5nKCIiLCAwKTsKIAogICAgIGlmIChpczhCaXQoKSkK
LSAgICAgICAgcmV0dXJuIENTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4odGhp
cy0+Y2hhcmFjdGVyczgoKSksIGxlbmd0aCk7CisgICAgICAgIHJldHVybiBDU3RyaW5nKHRoaXMt
PmNoYXJhY3RlcnM4KCksIGxlbmd0aCk7CiAKICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9
IHRoaXMtPmNoYXJhY3RlcnMxNigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L2NmL1N0cmluZ0ltcGxDRi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NmL1N0cmluZ0ltcGxD
Ri5jcHAKaW5kZXggYzA3NWMwZDRhYzg5MDhhZjI5ZGIyYzUzMzVhYWUzZDljMThmNDMxOC4uMWUy
MzY0NzE0ZjhiNzgwYTQ3MTA2Y2IwOTJlYjg3ZWIzMTJlNGFlYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvY2YvU3RyaW5nSW1wbENGLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gU3RyaW5nSW1wbDo6Y3JlYXRlQ0ZTdHJpbmcoKQogewogICAgIGlmICghbV9sZW5n
dGggfHwgIWlzTWFpblRocmVhZCgpKSB7CiAgICAgICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAg
ICAgIHJldHVybiBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzKG51bGxwdHIsIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihjaGFyYWN0ZXJzOCgpKSwgbV9sZW5ndGgsIGtDRlN0
cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBmYWxzZSkpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0
Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXMobnVsbHB0ciwgY2hhcmFjdGVyczgoKSwgbV9sZW5n
dGgsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBmYWxzZSkpOwogICAgICAgICByZXR1cm4g
YWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKG51bGxwdHIsIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgVW5pQ2hhcio+KGNoYXJhY3RlcnMxNigpKSwgbV9sZW5ndGgpKTsKICAgICB9
CiAgICAgQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yID0gU3RyaW5nV3JhcHBlckNGQWxsb2NhdG9y
OjphbGxvY2F0b3IoKTsKQEAgLTEzMCw3ICsxMzAsNyBAQCBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IFN0cmluZ0ltcGw6OmNyZWF0ZUNGU3RyaW5nKCkKIAogICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gc3RyaW5nOwogICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAgc3RyaW5nID0gYWRvcHRDRihD
RlN0cmluZ0NyZWF0ZVdpdGhCeXRlc05vQ29weShhbGxvY2F0b3IsIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgVUludDgqPihjaGFyYWN0ZXJzOCgpKSwgbV9sZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5n
SVNPTGF0aW4xLCBmYWxzZSwga0NGQWxsb2NhdG9yTnVsbCkpOworICAgICAgICBzdHJpbmcgPSBh
ZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGFsbG9jYXRvciwgY2hhcmFjdGVy
czgoKSwgbV9sZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBmYWxzZSwga0NGQWxs
b2NhdG9yTnVsbCkpOwogICAgIGVsc2UKICAgICAgICAgc3RyaW5nID0gYWRvcHRDRihDRlN0cmlu
Z0NyZWF0ZVdpdGhDaGFyYWN0ZXJzTm9Db3B5KGFsbG9jYXRvciwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBVbmlDaGFyKj4oY2hhcmFjdGVyczE2KCkpLCBtX2xlbmd0aCwga0NGQWxsb2NhdG9yTnVs
bCkpOwogICAgIC8vIENvcmVGb3VuZGF0aW9uIG1pZ2h0IG5vdCBoYXZlIHRvIGFsbG9jYXRlIGFu
eXRoaW5nLCB3ZSBjbGVhciBjdXJyZW50U3RyaW5nIGluIGNhc2Ugd2UgZGlkIG5vdCBleGVjdXRl
IGFsbG9jYXRlKCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFyS2V5
LmNwcAppbmRleCBiMjI4Mzg5OWZkNjM2MTVkMzY3ZDk4MTg2ZmY4ODc2MWVhMTE4YmVmLi5jZTFj
MTk4ZmM2YTRkOWU3NmMwNDNkYjQ5MWZkODMyZDllNzNiZDU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xl
YXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVn
YWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktleS5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgUmVmUHRy
PFVpbnQ4QXJyYXk+IENETVNlc3Npb25DbGVhcktleTo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNvbnN0
IFN0cmluZyYgbWltZVR5cGUKICAgICBtX2luaXREYXRhID0gaW5pdERhdGE7CiAKICAgICBib29s
IHNhd0Vycm9yID0gZmFsc2U7Ci0gICAgU3RyaW5nIGtleUlEID0gVVRGOEVuY29kaW5nKCkuZGVj
b2RlKHJlaW50ZXJwcmV0X2Nhc3RfcHRyPGNoYXIqPihtX2luaXREYXRhLT5iYXNlQWRkcmVzcygp
KSwgbV9pbml0RGF0YS0+Ynl0ZUxlbmd0aCgpLCB0cnVlLCBzYXdFcnJvcik7CisgICAgU3RyaW5n
IGtleUlEID0gVVRGOEVuY29kaW5nKCkuZGVjb2RlKHN0YXRpY19jYXN0PGNoYXIqPihtX2luaXRE
YXRhLT5iYXNlQWRkcmVzcygpKSwgbV9pbml0RGF0YS0+Ynl0ZUxlbmd0aCgpLCB0cnVlLCBzYXdF
cnJvcik7CiAgICAgaWYgKHNhd0Vycm9yKSB7CiAgICAgICAgIGVycm9yQ29kZSA9IFdlYktpdE1l
ZGlhS2V5RXJyb3I6Ok1FRElBX0tFWUVSUl9DTElFTlQ7CiAgICAgICAgIHJldHVybiBudWxscHRy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IDQ4MzZk
MjgxM2ZlNzRiMTJhMmVkMGEwNWFiYzk5OTk1ZmRiOTBhNDQuLjBkZDhkZmNkNTFmNDk0OGUyNzMz
NjhhYjU2ODAxMzViOGFiNGE3ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keS5jcHAKQEAgLTMwNCw5ICszMDQsOSBAQCBGZXRjaEJvZHk6OlRha2VuRGF0YSBGZXRj
aEJvZHk6OnRha2UoKQogICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRGOEVu
Y29kaW5nKCkuZW5jb2RlKHVybFNlYXJjaFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBVbmVuY29k
YWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwogCiAgICAgaWYgKGlzQXJyYXlCdWZmZXIoKSkKLSAg
ICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KGFycmF5QnVmZmVyQm9keSgpLmRhdGEoKSksIGFycmF5QnVmZmVyQm9keSgpLmJ5dGVM
ZW5ndGgoKSk7CisgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2Fz
dDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXJCb2R5KCkuZGF0YSgpKSwgYXJyYXlCdWZmZXJCb2R5
KCkuYnl0ZUxlbmd0aCgpKTsKICAgICBpZiAoaXNBcnJheUJ1ZmZlclZpZXcoKSkKLSAgICAgICAg
cmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KGFycmF5QnVmZmVyVmlld0JvZHkoKS5iYXNlQWRkcmVzcygpKSwgYXJyYXlCdWZmZXJWaWV3
Qm9keSgpLmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJhc2VB
ZGRyZXNzKCkpLCBhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKIAogICAgIHJl
dHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCAyYWIwY2FmMTAwZDBjMzEzOGMyYjYyNjQzZDczYjIx
ZWM2YmU5ZWI4Li42MDY0NGJmOTk0MTlmYjM3NzYwZDBmY2JiYzZhMDg2ZTc3NTA5OTk0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNw
cApAQCAtMjc4LDcgKzI3OCw3IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVm
PERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiAgICAgICAgICAg
ICBpZiAoYXV0byBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQogICAgICAgICAgICAgICAg
IGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSwgY2h1bmstPnNpemUpOwogICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNl
KSwgdHlwZSwgY29udGVudFR5cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hh
cio+KGRhdGEtPmRhdGEoKSksIGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgcmVzb2x2
ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwgZGF0
YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogICAgICAgICB9KTsKICAgICAgICAgbV9zaW5rLT5w
aXBlRnJvbSgqc3RyZWFtKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzU1LDcgKzM1NSw3IEBAIFJl
ZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQogICAgICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKGNvbnRleHQsIFZlY3Rv
cjx1aW50OF90PigpLCBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUobV9jb250ZW50VHlwZSkp
OwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB0cnkgdG8gbW92ZSBtX2J1ZmZlciB0byBCbG9i
IHdpdGhvdXQgZG9pbmcgZXh0cmEgY29weS4KLSAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRl
eHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KG1fYnVmZmVyLT5kYXRh
KCkpLCBtX2J1ZmZlci0+c2l6ZSgpLCBtX2NvbnRlbnRUeXBlKTsKKyAgICByZXR1cm4gYmxvYkZy
b21EYXRhKGNvbnRleHQsIG1fYnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCksIG1fY29u
dGVudFR5cGUpOwogfQogCiBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQoKQpA
QCAtMzY0LDcgKzM2NCw3IEBAIFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4dCgp
CiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgYXV0
byB0ZXh0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KG1fYnVmZmVyLT5kYXRhKCkpLCBtX2J1ZmZlci0+c2l6
ZSgpKTsKKyAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVURjgo
bV9idWZmZXItPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSk7CiAgICAgbV9idWZmZXIgPSBudWxs
cHRyOwogICAgIHJldHVybiB0ZXh0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIu
Y3BwCmluZGV4IGU3YzIxYWVmNWIzMDUxM2FmNWM1Y2U5NmQwZmQzNDRmZjcyNGVkNjYuLmU1NzQ3
Yzk1YWMyY2JiYWVjN2Y1YmE4YzY1YmNjZGY2ZDU2NDliNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVs
UmVtb3RlSGFuZGxlci5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbFJl
bW90ZUhhbmRsZXI6OnJlYWR5VG9TZW5kKCkKICAgICBtX2lzUmVhZHlUb1NlbmQgPSB0cnVlOwog
CiAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbV9wZW5kaW5nTWVzc2FnZXMpCi0gICAgICAgIG1f
Y29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBtZXNzYWdlLmlzUmF3LCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihtZXNzYWdlLmJ1ZmZlci0+ZGF0
YSgpKSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2Vu
ZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBtZXNzYWdlLmlzUmF3LCBtZXNzYWdlLmJ1ZmZlci0+
ZGF0YSgpLCBtZXNzYWdlLmJ1ZmZlci0+c2l6ZSgpKTsKICAgICBtX3BlbmRpbmdNZXNzYWdlcy5j
bGVhcigpOwogCiAgICAgaWYgKG1faXNQZW5kaW5nQ2xvc2UpCkBAIC0xMDAsNyArMTAwLDcgQEAg
Ym9vbCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnNlbmRTdHJpbmdEYXRhKGNvbnN0IENT
dHJpbmcmIHRleHQpCiAgICAgICAgIG1fcGVuZGluZ01lc3NhZ2VzLmFwcGVuZChNZXNzYWdlIHsg
ZmFsc2UsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHQuZGF0YSgpLCB0ZXh0Lmxlbmd0aCgpKSB9
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIG1fY29ubmVjdGlvbi0+c2VuZERh
dGEobV9yZW1vdGVJZGVudGlmaWVyLCBmYWxzZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNp
Z25lZCBjaGFyKj4odGV4dC5kYXRhKCkpLCB0ZXh0Lmxlbmd0aCgpKTsKKyAgICBtX2Nvbm5lY3Rp
b24tPnNlbmREYXRhKG1fcmVtb3RlSWRlbnRpZmllciwgZmFsc2UsIHRleHQuZGF0YUFzVUludDhQ
dHIoKSwgdGV4dC5sZW5ndGgoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTExMCw3ICsx
MTAsNyBAQCBib29sIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6c2VuZFJhd0RhdGEoY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiAgICAgICAgIG1fcGVuZGluZ01lc3NhZ2Vz
LmFwcGVuZChNZXNzYWdlIHsgdHJ1ZSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6ZSkg
fSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmRE
YXRhKG1fcmVtb3RlSWRlbnRpZmllciwgdHJ1ZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNp
Z25lZCBjaGFyKj4oZGF0YSksIHNpemUpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9y
ZW1vdGVJZGVudGlmaWVyLCB0cnVlLCBkYXRhLCBzaXplKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVh
bUF1ZGlvU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZUdTdHJlYW1lci5jcHAKaW5kZXggNTZlZDYwMWY0NjVh
MDFjMGE3NDNhNTkyNTdhNzU1OWMxNjcxZTM4NS4uNDUwMTJlMzBlODE4ZmI1ODkzZDQ2MzYzMGJj
M2U3YTUxZWIwOTViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9NZWRpYVN0cmVhbUF1ZGlvU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwCkBA
IC00Myw4ICs0Myw4IEBAIHN0YXRpYyBWZWN0b3I8c2l6ZV90PiBjb3B5QnVzRGF0YShBdWRpb0J1
cyYgYnVzLCBHc3RCdWZmZXIqIGJ1ZmZlciwgYm9vbCBpc011dGVkCiAgICAgc2l6ZV90IHNpemUg
PSBtYXBwZWRCdWZmZXIuc2l6ZSgpIC8gYnVzLm51bWJlck9mQ2hhbm5lbHMoKTsKICAgICBmb3Ig
KHNpemVfdCBjaGFubmVsSW5kZXggPSAwOyBjaGFubmVsSW5kZXggPCBidXMubnVtYmVyT2ZDaGFu
bmVscygpOyArK2NoYW5uZWxJbmRleCkgewogICAgICAgICBjb25zdCBhdXRvJiBjaGFubmVsID0g
KmJ1cy5jaGFubmVsKGNoYW5uZWxJbmRleCk7Ci0gICAgICAgIGF1dG8gb2Zmc2V0ID0gcmVpbnRl
cnByZXRfY2FzdDxzaXplX3Q+KGNoYW5uZWxJbmRleCAqIHNpemUpOwotICAgICAgICBtZW1jcHko
cmVpbnRlcnByZXRfY2FzdDxmbG9hdCo+KG1hcHBlZEJ1ZmZlci5kYXRhKCkgKyBvZmZzZXQpLCBj
aGFubmVsLmRhdGEoKSwgc2l6ZW9mKGZsb2F0KSAqIGNoYW5uZWwubGVuZ3RoKCkpOworICAgICAg
ICBhdXRvIG9mZnNldCA9IGNoYW5uZWxJbmRleCAqIHNpemU7CisgICAgICAgIG1lbWNweShtYXBw
ZWRCdWZmZXIuZGF0YSgpICsgb2Zmc2V0LCBjaGFubmVsLmRhdGEoKSwgc2l6ZW9mKGZsb2F0KSAq
IGNoYW5uZWwubGVuZ3RoKCkpOwogICAgICAgICBvZmZzZXRzLnVuY2hlY2tlZEFwcGVuZChvZmZz
ZXQpOwogICAgIH0KICAgICByZXR1cm4gb2Zmc2V0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhLmgKaW5k
ZXggMjM4MGE0MmQ1ZmE1YWNjOTdhMGYwNmY1ODUxZjg3ZGVjM2NjMDk4Ny4uNTU5MTM2YjIzZjQ0
NTQxNWFiZjYyODIwM2Q3ZDBmZWJkZmM0ZGNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhLmgKQEAg
LTU5LDcgKzU5LDcgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHN0YXRpYyB2b2lkIGVuY29k
ZUFycmF5QnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEFycmF5QnVmZmVyJiBidWZmZXIp
CiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYnVmZmVyLmJ5dGVMZW5n
dGgoKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4oYnVmZmVyLmRhdGEoKSksIGJ1ZmZlci5ieXRlTGVuZ3RoKCksIDEp
OworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHN0YXRpY19jYXN0PGNvbnN0IHVp
bnQ4X3QqPihidWZmZXIuZGF0YSgpKSwgYnVmZmVyLmJ5dGVMZW5ndGgoKSwgMSk7CiB9CiAKIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+CkBAIC03NSw3ICs3NSw3IEBAIFJlZlB0cjxBcnJheUJ1ZmZl
cj4gZGVjb2RlQXJyYXlCdWZmZXIoRGVjb2RlciYgZGVjb2RlcikKICAgICBhdXRvIGJ1ZmZlciA9
IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobGVuZ3RoLnZhbHVlKCksIHNpemVvZih1aW50OF90KSk7
CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGlmICghZGVj
b2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oYnVm
ZmVyLT5kYXRhKCkpLCBsZW5ndGgudmFsdWUoKSwgMSkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZUZpeGVkTGVuZ3RoRGF0YShzdGF0aWNfY2FzdDx1aW50OF90Kj4oYnVmZmVyLT5kYXRhKCkpLCBs
ZW5ndGgudmFsdWUoKSwgMSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBi
dWZmZXI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggM2UyNGVhNmY2NTRmOTIxZTQ4NDE3ZmUwZWZjNGMy
OGM0YzI1NzljMC4uNWViNDI2Y2FjNGRjZDYxZWJjNDJmZmYyMWFmNzJmMWNjMjY4ZjgzZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5u
ZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRD
aGFubmVsLmNwcApAQCAtNDk1LDcgKzQ5NSw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6c3Rh
cnRDbG9zaW5nSGFuZHNoYWtlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKICAgICAg
ICAgYnVmLmFwcGVuZChoaWdoQnl0ZSk7CiAgICAgICAgIGJ1Zi5hcHBlbmQobG93Qnl0ZSk7CiAg
ICAgICAgIGF1dG8gcmVhc29uVVRGOCA9IHJlYXNvbi51dGY4KCk7Ci0gICAgICAgIGJ1Zi5hcHBl
bmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocmVhc29uVVRGOC5kYXRhKCkpLCBy
ZWFzb25VVEY4Lmxlbmd0aCgpKTsKKyAgICAgICAgYnVmLmFwcGVuZChyZWFzb25VVEY4LmRhdGFB
c1VJbnQ4UHRyKCksIHJlYXNvblVURjgubGVuZ3RoKCkpOwogICAgIH0KICAgICBlbnF1ZXVlUmF3
RnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZUNsb3NlLCBidWYuZGF0YSgpLCBidWYuc2l6ZSgp
KTsKICAgICBSZWY8V2ViU29ja2V0Q2hhbm5lbD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7IC8vIEFu
IGF0dGVtcHQgdG8gc2VuZCBjbG9zaW5nIGhhbmRzaGFrZSBtYXkgZmFpbCwgd2hpY2ggd2lsbCBn
ZXQgdGhlIGNoYW5uZWwgY2xvc2VkIGFuZCBkZXJlZmVyZW5jZWQuCkBAIC03NDMsNyArNzQzLDcg
QEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzT3V0Z29pbmdGcmFtZVF1ZXVlKCkKICAg
ICAgICAgYXV0byBmcmFtZSA9IG1fb3V0Z29pbmdGcmFtZVF1ZXVlLnRha2VGaXJzdCgpOwogICAg
ICAgICBzd2l0Y2ggKGZyYW1lLT5mcmFtZVR5cGUpIHsKICAgICAgICAgY2FzZSBRdWV1ZWRGcmFt
ZVR5cGVTdHJpbmc6IHsKLSAgICAgICAgICAgIHNlbmRGcmFtZShmcmFtZS0+b3BDb2RlLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihmcmFtZS0+c3RyaW5nRGF0YS5kYXRhKCkpLCBm
cmFtZS0+c3RyaW5nRGF0YS5sZW5ndGgoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKV0gKGJvb2wgc3VjY2VzcykgeworICAgICAgICAgICAgc2VuZEZyYW1lKGZyYW1lLT5v
cENvZGUsIGZyYW1lLT5zdHJpbmdEYXRhLmRhdGFBc1VJbnQ4UHRyKCksIGZyYW1lLT5zdHJpbmdE
YXRhLmxlbmd0aCgpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoYm9v
bCBzdWNjZXNzKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICAgICAg
ICAgICAgICBmYWlsKCJGYWlsZWQgdG8gc2VuZCBXZWJTb2NrZXQgZnJhbWUuIik7CiAgICAgICAg
ICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXRIYW5kc2hha2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKaW5kZXggYmUyNDQxMjU2MDdiMWJjYzMyMjkzNDc0ZDU0
NDg2MmJiNTZhYjZlNC4uZDgyODIyNDBhMmJiY2I5MmEzNzcyMTUwNzE1Yzc3NGEzMWFmNDRmOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhh
bmRzaGFrZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldEhhbmRzaGFrZS5jcHAKQEAgLTEwMiwxMSArMTAyLDExIEBAIHN0YXRpYyBTdHJpbmcgZ2Vu
ZXJhdGVTZWNXZWJTb2NrZXRLZXkoKQogCiBTdHJpbmcgV2ViU29ja2V0SGFuZHNoYWtlOjpnZXRF
eHBlY3RlZFdlYlNvY2tldEFjY2VwdChjb25zdCBTdHJpbmcmIHNlY1dlYlNvY2tldEtleSkKIHsK
LSAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qgd2ViU29ja2V0S2V5R1VJRCA9ICIyNThFQUZB
NS1FOTE0LTQ3REEtOTVDQS1DNUFCMERDODVCMTEiOworICAgIGNvbnN0ZXhwciB1aW50OF90IHdl
YlNvY2tldEtleUdVSURbXSA9ICIyNThFQUZBNS1FOTE0LTQ3REEtOTVDQS1DNUFCMERDODVCMTEi
OwogICAgIFNIQTEgc2hhMTsKICAgICBDU3RyaW5nIGtleURhdGEgPSBzZWNXZWJTb2NrZXRLZXku
YXNjaWkoKTsKLSAgICBzaGExLmFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KGtleURhdGEuZGF0YSgpKSwga2V5RGF0YS5sZW5ndGgoKSk7Ci0gICAgc2hhMS5hZGRCeXRl
cyhyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih3ZWJTb2NrZXRLZXlHVUlEKSwgc3Ry
bGVuKHdlYlNvY2tldEtleUdVSUQpKTsKKyAgICBzaGExLmFkZEJ5dGVzKGtleURhdGEuZGF0YUFz
VUludDhQdHIoKSwga2V5RGF0YS5sZW5ndGgoKSk7CisgICAgc2hhMS5hZGRCeXRlcyh3ZWJTb2Nr
ZXRLZXlHVUlELCBzdGQ6OnNpemUod2ViU29ja2V0S2V5R1VJRCkgLSAxKTsKICAgICBTSEExOjpE
aWdlc3QgaGFzaDsKICAgICBzaGExLmNvbXB1dGVIYXNoKGhhc2gpOwogICAgIHJldHVybiBiYXNl
NjRFbmNvZGVUb1N0cmluZyhoYXNoLmRhdGEoKSwgU0hBMTo6aGFzaFNpemUpOwpAQCAtMzI4LDEz
ICszMjgsMTIgQEAgVVJMIFdlYlNvY2tldEhhbmRzaGFrZTo6aHR0cFVSTEZvckF1dGhlbnRpY2F0
aW9uQW5kQ29va2llcygpIGNvbnN0CiAvLyAiVGhlIEhUVFAgdmVyc2lvbiBNVVNUIGJlIGF0IGxl
YXN0IDEuMS4iCiBzdGF0aWMgaW5saW5lIGJvb2wgaGVhZGVySGFzVmFsaWRIVFRQVmVyc2lvbihT
dHJpbmdWaWV3IGh0dHBTdGF0dXNMaW5lKQogewotICAgIGNvbnN0IGNoYXIqIGh0dHBWZXJzaW9u
U3RhdGljUHJlYW1ibGVMaXRlcmFsID0gIkhUVFAvIjsKLSAgICBTdHJpbmdWaWV3IGh0dHBWZXJz
aW9uU3RhdGljUHJlYW1ibGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGh0dHBWZXJz
aW9uU3RhdGljUHJlYW1ibGVMaXRlcmFsKSwgc3RybGVuKGh0dHBWZXJzaW9uU3RhdGljUHJlYW1i
bGVMaXRlcmFsKSk7Ci0gICAgaWYgKCFodHRwU3RhdHVzTGluZS5zdGFydHNXaXRoKGh0dHBWZXJz
aW9uU3RhdGljUHJlYW1ibGUpKQorICAgIGNvbnN0ZXhwciBjaGFyIHByZWFtYmxlW10gPSAiSFRU
UC8iOworICAgIGlmICghaHR0cFN0YXR1c0xpbmUuc3RhcnRzV2l0aChwcmVhbWJsZSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIENoZWNrIHRoYXQgdGhlcmUgaXMgYSB2ZXJzaW9u
IG51bWJlciB3aGljaCBzaG91bGQgYmUgYXQgbGVhc3QgdGhyZWUgY2hhcmFjdGVycyBhZnRlciAi
SFRUUC8iCi0gICAgdW5zaWduZWQgcHJlYW1ibGVMZW5ndGggPSBodHRwVmVyc2lvblN0YXRpY1By
ZWFtYmxlLmxlbmd0aCgpOworICAgIHVuc2lnbmVkIHByZWFtYmxlTGVuZ3RoID0gc3RybGVuKHBy
ZWFtYmxlKTsKICAgICBpZiAoaHR0cFN0YXR1c0xpbmUubGVuZ3RoKCkgPCBwcmVhbWJsZUxlbmd0
aCArIDMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKaW5kZXggOWQ5ZTUy
ZGFlYzBjMDRlZDIxNjFlYjgyNTZhZmE2Nzc1NTE1ZTI0OC4uYzQ1MmM4M2ZiZDVjZTg5NWJkZDAz
MWFjZjE0NjhmNzg2NTA2MjJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCkBAIC01MiwxMiArNTIsMTIgQEAg
cHVibGljOgogICAgICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICAgICAgaWYg
KCFtX2NvbnRhaW5zT25seUFTQ0lJKSB7Ci0gICAgICAgICAgICBtX2NvbnRhaW5zT25seUFTQ0lJ
ID0gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPiht
X3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVyKCkt
PnNpemUoKSk7CisgICAgICAgICAgICBtX2NvbnRhaW5zT25seUFTQ0lJID0gY2hhcmFjdGVyc0Fy
ZUFsbEFTQ0lJKG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIG1fc2NyaXB0QnVmZmVy
LmJ1ZmZlcigpLT5zaXplKCkpOwogICAgICAgICAgICAgaWYgKCptX2NvbnRhaW5zT25seUFTQ0lJ
KQotICAgICAgICAgICAgICAgIG1fc2NyaXB0SGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhh
c2hBbmRNYXNrVG9wOEJpdHMocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KG1fc2NyaXB0
QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCkpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6ZSgp
KTsKKyAgICAgICAgICAgICAgICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdIYXNoZXI6OmNvbXB1dGVI
YXNoQW5kTWFza1RvcDhCaXRzKG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIG1fc2Ny
aXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOwogICAgICAgICB9CiAgICAgICAgIGlmICgqbV9j
b250YWluc09ubHlBU0NJSSkKLSAgICAgICAgICAgIHJldHVybiB7IHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgTENoYXIqPihtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpKSwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpIH07CisgICAgICAg
ICAgICByZXR1cm4geyBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4obV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSkgfTsKIAogICAgICAg
ICBpZiAoIW1fY2FjaGVkU2NyaXB0U3RyaW5nKSB7CiAgICAgICAgICAgICBtX2NhY2hlZFNjcmlw
dFN0cmluZyA9IG1fc2NyaXB0QnVmZmVyLnRvU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA2YzY0YTA0
NGY1NjBmZjQyOTA4YzkwY2Y0YzdjMjQ2YWQ2N2FjODhmLi4wYjdmZGE0ZDhkNjBlOTkxNTNhNDRm
MTE0YWVmMTA0YWFlZTdkZmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTIzNDAsNyArMjM0MCw3IEBAIHByaXZh
dGU6CiAgICAgICAgIGlmIChpczhCaXQpIHsKICAgICAgICAgICAgIGlmICgoZW5kIC0gcHRyKSA8
IHN0YXRpY19jYXN0PGludD4obGVuZ3RoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgICAgICBzdHIgPSBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+
KHB0ciksIGxlbmd0aCk7CisgICAgICAgICAgICBzdHIgPSBTdHJpbmcgeyBwdHIsIGxlbmd0aCB9
OwogICAgICAgICAgICAgcHRyICs9IGxlbmd0aDsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9T
ZXJpYWxpemVkTkZBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1Nlcmlh
bGl6ZWRORkEuY3BwCmluZGV4IDBiMzMzODlhNzY5MjUwMGYyNDRmZWY0OGI3MjE3MjVjM2Y3ZmEx
M2UuLjA0YzZkYTVhODQ4ZDA4OTFmMzNmNGY4MzlkYTk1MmI4Yzc2NzlhMDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1NlcmlhbGl6ZWRORkEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1NlcmlhbGl6ZWRORkEuY3BwCkBAIC0x
MDcsNyArMTA3LDcgQEAgU2VyaWFsaXplZE5GQTo6U2VyaWFsaXplZE5GQShGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YSYmIGZpbGUsIE1ldGFkYXRhJiYgbWV0YWQKIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CiBjb25zdCBUKiBTZXJpYWxpemVkTkZBOjpwb2ludGVyQXRPZmZzZXRJbkZpbGUoc2l6ZV90
IG9mZnNldCkgY29uc3QKIHsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBUKj4o
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obV9maWxlLmRhdGEoKSkgKyBvZmZzZXQp
OworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IFQqPihzdGF0aWNfY2FzdDxjb25z
dCB1aW50OF90Kj4obV9maWxlLmRhdGEoKSkgKyBvZmZzZXQpOwogfQogCiBhdXRvIFNlcmlhbGl6
ZWRORkE6Om5vZGVzKCkgY29uc3QgLT4gY29uc3QgUmFuZ2U8SW1tdXRhYmxlTkZBTm9kZT4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcAppbmRleCBmZGFiY2QzZTdiODkyZTUwMWQ4Nzk0MzJhYzQ2YzNkNzEzZjhlYjAw
Li4yNDI2NzI5YmY0ZDM1NmNmOTU0ZDUyMDM3YWI2ODllZmQ1ZjdkOGJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
Y3BwCkBAIC0xNjAwLDcgKzE2MDAsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBOb2RlOjpzZXRUZXh0
Q29udGVudChjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotc3RhdGlj
IFNIQTE6OkRpZ2VzdCBoYXNoUG9pbnRlcih2b2lkKiBwb2ludGVyKQorc3RhdGljIFNIQTE6OkRp
Z2VzdCBoYXNoUG9pbnRlcihjb25zdCB2b2lkKiBwb2ludGVyKQogewogICAgIFNIQTEgc2hhMTsK
ICAgICBzaGExLmFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KCZwb2lu
dGVyKSwgc2l6ZW9mKHBvaW50ZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9U
ZXh0RW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEVuY29kZXIuY3BwCmluZGV4
IGQ2ZDE0NDNkNGZmOTg1MzcxYTBiOGRmZDU1YmZlYzk0YjViM2ZjNTUuLmFlMjM0NzUyNzkyNzIz
N2MxM2UwZGY2MDdjMDUxNTZkNTk5ZGMxOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9UZXh0RW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyLmNw
cApAQCAtNDAsNyArNDAsNyBAQCBSZWZQdHI8VWludDhBcnJheT4gVGV4dEVuY29kZXI6OmVuY29k
ZShTdHJpbmcmJiBpbnB1dCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBu
ZWVkIHRvIGFsbG9jYXRlIGEgQ1N0cmluZyB0byBlbmNvZGUgaW50byBhIFVpbnQ4QXJyYXkuCiAg
ICAgQ1N0cmluZyB1dGY4ID0gaW5wdXQudXRmOCgpOwotICAgIHJldHVybiBVaW50OEFycmF5Ojp0
cnlDcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odXRmOC5kYXRhKCkpLCB1
dGY4Lmxlbmd0aCgpKTsKKyAgICByZXR1cm4gVWludDhBcnJheTo6dHJ5Q3JlYXRlKHV0ZjguZGF0
YUFzVUludDhQdHIoKSwgdXRmOC5sZW5ndGgoKSk7CiB9CiAKIGF1dG8gVGV4dEVuY29kZXI6OmVu
Y29kZUludG8oU3RyaW5nJiYgaW5wdXQsIFJlZjxVaW50OEFycmF5PiYmIGFycmF5KSAtPiBFbmNv
ZGVJbnRvUmVzdWx0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEVuY29kZXJT
dHJlYW1FbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RW5jb2RlclN0cmVhbUVu
Y29kZXIuY3BwCmluZGV4IGNlMTA4Njc3Yjk2NjVkNzU2ODEyZWFkYmEyM2Y1YjIzMDliNTQ2ZmYu
LmExMDRmZGYxNGNjMjBkMmUxODQ5NGE0YTIzZDVmM2E0NGQzZWJiZDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UZXh0RW5jb2RlclN0cmVhbUVuY29kZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9UZXh0RW5jb2RlclN0cmVhbUVuY29kZXIuY3BwCkBAIC03Nyw4ICs3Nyw4
IEBAIFJlZlB0cjxVaW50OEFycmF5PiBUZXh0RW5jb2RlclN0cmVhbUVuY29kZXI6OmZsdXNoKCkK
ICAgICBpZiAoIW1fcGVuZGluZ0hpZ2hTdXJyb2dhdGUpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgYXV0byBieXRlU2VxdWVuY2UgPSAiXHhFRlx4QkZceEJEIjsKLSAgICByZXR1cm4g
VWludDhBcnJheTo6dHJ5Q3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJ5
dGVTZXF1ZW5jZSksIDMpOworICAgIGNvbnN0ZXhwciB1aW50OF90IGJ5dGVTZXF1ZW5jZVtdID0g
eyAweEVGLCAweEJGLCAweEJEIH07CisgICAgcmV0dXJuIFVpbnQ4QXJyYXk6OnRyeUNyZWF0ZShi
eXRlU2VxdWVuY2UsIHN0ZDo6c2l6ZShieXRlU2VxdWVuY2UpKTsKIH0KIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQpp
bmRleCBhNGU1MzIzMTk5MzNmMGE4NjEyZDJjMjI1MTgyOThkNTlkNGU5NmIyLi43OTQyMWQ5MmVj
NWU1ZDM1ZTI2NzlhYzU2OGMzZDAxMmYwMDNhM2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQpAQCAtNDg2LDcgKzQ4
Niw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShGcmFtZSYgZnJh
bWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtCiAgICAgICAgIENTdHJpbmcgdXRmOCA9IHN1
YmZyYW1lTWFya3VwLnV0ZjgoKTsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJsb2JCdWZmZXI7
CiAgICAgICAgIGJsb2JCdWZmZXIucmVzZXJ2ZUNhcGFjaXR5KHV0ZjgubGVuZ3RoKCkpOwotICAg
ICAgICBibG9iQnVmZmVyLmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih1
dGY4LmRhdGEoKSksIHV0ZjgubGVuZ3RoKCkpOworICAgICAgICBibG9iQnVmZmVyLmFwcGVuZCh1
dGY4LmRhdGFBc1VJbnQ4UHRyKCksIHV0ZjgubGVuZ3RoKCkpOwogICAgICAgICBhdXRvIGJsb2Ig
PSBCbG9iOjpjcmVhdGUoJmRlc3RpbmF0aW9uRG9jdW1lbnQsIFdURk1vdmUoYmxvYkJ1ZmZlciks
IHR5cGUpOwogCiAgICAgICAgIFN0cmluZyBzdWJmcmFtZUJsb2JVUkwgPSBET01VUkw6OmNyZWF0
ZU9iamVjdFVSTChkZXN0aW5hdGlvbkRvY3VtZW50LCBibG9iKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5k
ZXggNmQ3YzljOGIwZDgzNGI5YmUzZDg0NTRiMjIxM2FlMGRhMTRhNjY4Yi4uMDI2Y2ViYjJiMjc4
YjM4NzUwMmUzMDI2OTQ4NDA4Njk0ZmJlYjc4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTQ5NjIs
NyArNDk2Miw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4SW1hZ2VBcnJh
eUJ1ZmZlclZpZXdIZWxwZXIoVGV4SW1hZ2VGdW5jdGlvbklECiAgICAgICAgIHNvdXJjZVR5cGUg
PSBUZXhJbWFnZURpbWVuc2lvbjo6VGV4M0Q7CiAgICAgaWYgKCF2YWxpZGF0ZVRleEZ1bmNEYXRh
KGZ1bmN0aW9uTmFtZSwgc291cmNlVHlwZSwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwg
dHlwZSwgcGl4ZWxzLmdldCgpLCBudWxsRGlzcG9zaXRpb24sIHNyY09mZnNldCkpCiAgICAgICAg
IHJldHVybjsKLSAgICB1aW50OF90KiBkYXRhID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4o
cGl4ZWxzID8gcGl4ZWxzLT5iYXNlQWRkcmVzcygpIDogbnVsbHB0cik7CisgICAgYXV0byBkYXRh
ID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KHBpeGVscyA/IHBpeGVscy0+YmFzZUFkZHJlc3MoKSA6
IG51bGxwdHIpOwogICAgIGlmIChzcmNPZmZzZXQpIHsKICAgICAgICAgQVNTRVJUKHBpeGVscyk7
CiAgICAgICAgIC8vIE5vIG5lZWQgdG8gY2hlY2sgb3ZlcmZsb3cgYmVjYXVzZSB2YWxpZGF0ZVRl
eEZ1bmNEYXRhKCkgYWxyZWFkeSBkaWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01Q
YXRjaFN1cHBvcnQuY3BwCmluZGV4IDFmMzk0YmE5N2M4ZmYyYWU1NDJjZTYyMTJlYjUzNjBhY2M1
MzY0MTMuLjZhZjRhOGMwY2YzMTdhNDU0MTJiMTBjZmRmZDgwOWUwNGZiN2E5YTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwCkBAIC0zOTcsNyArMzk3
LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRE9NUGF0Y2hTdXBwb3J0Ojppbm5lclBhdGNoQ2hpbGRy
ZW4oQ29udGFpbmVyTm9kZSYgcGFyZW50Tm9kZSwKIHN0YXRpYyB2b2lkIGFkZFN0cmluZ1RvU0hB
MShTSEExJiBzaGExLCBjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICBDU3RyaW5nIGNTdHJp
bmcgPSBzdHJpbmcudXRmOCgpOwotICAgIHNoYTEuYWRkQnl0ZXMocmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4oY1N0cmluZy5kYXRhKCkpLCBjU3RyaW5nLmxlbmd0aCgpKTsKKyAgICBz
aGExLmFkZEJ5dGVzKGNTdHJpbmcuZGF0YUFzVUludDhQdHIoKSwgY1N0cmluZy5sZW5ndGgoKSk7
CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxET01QYXRjaFN1cHBvcnQ6OkRpZ2VzdD4gRE9NUGF0Y2hT
dXBwb3J0OjpjcmVhdGVEaWdlc3QoTm9kZSYgbm9kZSwgVW51c2VkTm9kZXNNYXAqIHVudXNlZE5v
ZGVzTWFwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNvdXJjZURl
Y29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIuY3Bw
CmluZGV4IDIyYjJiZDc3MWM0ZmQzNGM1YWNiNGM4NjEwNmY3ZmE5Mjk2OGJlZTguLjQ3NzAyYTU3
NGNjOGJmNDJhZjk2MzU2MTUwYjYxYjk2N2NhYWZhYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHAKQEAgLTMzMyw3ICszMzMsNyBAQCBTdHJpbmcg
VGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRh
dGEsIHVuc2lnbmVkIGxlbgogICAgIGF1dG8gZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6
OmNyZWF0ZSgidGV4dC9wbGFpbiIsICJVVEYtOCIpOwogICAgIGlmIChzaG91bGRQcmVwZW5kQk9N
KGRhdGEsIGxlbmd0aCkpCiAgICAgICAgIGRlY29kZXItPmRlY29kZSgiXHhlZlx4YmJceGJmIiwg
Myk7Ci0gICAgcmV0dXJuIGRlY29kZXItPmRlY29kZUFuZEZsdXNoKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KGRhdGEpLCBsZW5ndGgpOworICAgIHJldHVybiBkZWNvZGVyLT5kZWNvZGVB
bmRGbHVzaChkYXRhLCBsZW5ndGgpOwogfQogCiB2b2lkIFRleHRSZXNvdXJjZURlY29kZXI6OnNl
dEVuY29kaW5nKGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmcsIEVuY29kaW5nU291cmNlIHNv
dXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3Jp
cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKaW5k
ZXggMTc0NmEzODk5NTJlOGE0N2NkN2UwNDdiOTlhYjQyMzVmMzJmZWJhMC4uZGMxMDFjYmUwNmQ5
YjNmMDI4YjdhYTgxMTU3Yjk0ODcxOTJlYTZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgU3RyaW5nVmlldyBDYWNo
ZWRTY3JpcHQ6OnNjcmlwdCgpCiAgICAgaWYgKG1fZGVjb2RpbmdTdGF0ZSA9PSBOZXZlckRlY29k
ZWQKICAgICAgICAgJiYgVGV4dEVuY29kaW5nKGVuY29kaW5nKCkpLmlzQnl0ZUJhc2VkRW5jb2Rp
bmcoKQogICAgICAgICAmJiBtX2RhdGEtPnNpemUoKQotICAgICAgICAmJiBjaGFyYWN0ZXJzQXJl
QWxsQVNDSUkocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KG1fZGF0YS0+ZGF0YSgpKSwg
bV9kYXRhLT5zaXplKCkpKSB7CisgICAgICAgICYmIGNoYXJhY3RlcnNBcmVBbGxBU0NJSShtX2Rh
dGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpKSB7CiAKICAgICAgICAgbV9kZWNvZGluZ1N0YXRl
ID0gRGF0YUFuZERlY29kZWRTdHJpbmdIYXZlU2FtZUJ5dGVzOwogCkBAIC03MCwxMSArNzAsMTEg
QEAgU3RyaW5nVmlldyBDYWNoZWRTY3JpcHQ6OnNjcmlwdCgpCiAgICAgICAgIHNldERlY29kZWRT
aXplKDApOwogICAgICAgICBtX2RlY29kZWREYXRhRGVsZXRpb25UaW1lci5zdG9wKCk7CiAKLSAg
ICAgICAgbV9zY3JpcHRIYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4
Qml0cyhyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4obV9kYXRhLT5kYXRhKCkpLCBtX2Rh
dGEtPnNpemUoKSk7CisgICAgICAgIG1fc2NyaXB0SGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0
ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKICAg
ICB9CiAKICAgICBpZiAobV9kZWNvZGluZ1N0YXRlID09IERhdGFBbmREZWNvZGVkU3RyaW5nSGF2
ZVNhbWVCeXRlcykKLSAgICAgICAgcmV0dXJuIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hh
cio+KG1fZGF0YS0+ZGF0YSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fZGF0YS0+c2l6ZSgp
KSB9OworICAgICAgICByZXR1cm4geyBtX2RhdGEtPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KG1fZGF0YS0+c2l6ZSgpKSB9OwogCiAgICAgaWYgKCFtX3NjcmlwdCkgewogICAgICAgICBt
X3NjcmlwdCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGVuY29k
ZWRTaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJj
ZVVzYWdlT3ZlcmxheUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNvdXJj
ZVVzYWdlT3ZlcmxheUNvY29hLm1tCmluZGV4IGU1MTliZTdhODRiMDE0NTRiNDYzZjZkYzM1ODQz
NzAwNzI4ZmM4YjYuLjJiYjgxMjU4N2E5MjE2M2RiMDIxNmMyYTU3MzU0NWU3YWNhZGI0NGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJsYXlD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VPdmVy
bGF5Q29jb2EubW0KQEAgLTI2OSw3ICsyNjksNyBAQCBzdGF0aWMgdm9pZCBzaG93VGV4dChDR0Nv
bnRleHRSZWYgY29udGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgQ0dDb2xvclJlZiBjb2xvciwgYwog
ICAgIENGVHlwZVJlZiB2YWx1ZXNbXSA9IHsgZm9udC5nZXQoKSwga0NGQm9vbGVhblRydWUgfTsK
ICAgICBhdXRvIGF0dHJpYnV0ZXMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBrZXlzLCB2YWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgoa2V5cyksICZrQ0ZU
eXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFj
a3MpKTsKICAgICBDU3RyaW5nIGNzdHIgPSB0ZXh0LmFzY2lpKCk7Ci0gICAgYXV0byBzdHJpbmcg
PSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1
bHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihjc3RyLmRhdGEoKSksIGNzdHIubGVu
Z3RoKCksIGtDRlN0cmluZ0VuY29kaW5nQVNDSUksIGZhbHNlLCBrQ0ZBbGxvY2F0b3JOdWxsKSk7
CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGNzdHIuZGF0YUFzVUludDhQdHIoKSwgY3N0ci5sZW5ndGgo
KSwga0NGU3RyaW5nRW5jb2RpbmdBU0NJSSwgZmFsc2UsIGtDRkFsbG9jYXRvck51bGwpKTsKICAg
ICBhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdENGKENGQXR0cmlidXRlZFN0cmluZ0NyZWF0
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdHJpbmcuZ2V0KCksIGF0dHJpYnV0ZXMuZ2V0KCkpKTsK
ICAgICBhdXRvIGxpbmUgPSBhZG9wdENGKENUTGluZUNyZWF0ZVdpdGhBdHRyaWJ1dGVkU3RyaW5n
KGF0dHJpYnV0ZWRTdHJpbmcuZ2V0KCkpKTsKICAgICBDR0NvbnRleHRTZXRUZXh0UG9zaXRpb24o
Y29udGV4dCwgeCwgeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9T
aGFyZWRCdWZmZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZm
ZXJDRi5jcHAKaW5kZXggYTExMGQxMzkzMGU4NjExMzA3ZGQwNTVmZjJhNDcwMGNmNGU5YzllMy4u
ODk1ZWJlMDUxZjE1MmE3YTgzYTQ1YzdiOTBkZGMwYzI3MGE0OWVlMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAtNDcsNyArNDcsNyBAQCBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiAg
ICAgICAgIGlmIChhdXRvIGRhdGEgPSBXVEY6OmdldF9pZjxSZXRhaW5QdHI8Q0ZEYXRhUmVmPj4o
bV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2ltbXV0YWJsZURhdGEpKQogICAgICAgICAgICAgcmV0
dXJuICpkYXRhOwogICAgIH0KLSAgICByZXR1cm4gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0
ciwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGRhdGEoKSksIHNpemUoKSkpOworICAg
IHJldHVybiBhZG9wdENGKENGRGF0YUNyZWF0ZShudWxscHRyLCBkYXRhKCksIHNpemUoKSkpOwog
fQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMv
S2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmlj
L0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCmluZGV4IDIxY2MxZWJlNGE5MDFhMTNjNzQ0MDNkYzAx
Y2YyZmM4MTgxMzAxMmQuLmM2NWE3ZDViNzE0NjUzZGU2OTJmZTNjZmE5MzYzYTZiNzc5YTc4ZTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNvZGVy
R2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVu
Y29kZXJHZW5lcmljLmNwcApAQCAtNDAsNyArNDAsNyBAQCB2b2lkIEtleWVkRW5jb2RlckdlbmVy
aWM6OmVuY29kZVN0cmluZyhjb25zdCBTdHJpbmcmIGtleSkKIHsKICAgICBhdXRvIHV0ZjggPSBr
ZXkudXRmOCgpOwogICAgIG1fZW5jb2RlciA8PCB1dGY4Lmxlbmd0aCgpOwotICAgIG1fZW5jb2Rl
ci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
dXRmOC5kYXRhKCkpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICBtX2VuY29kZXIuZW5jb2RlRml4ZWRM
ZW5ndGhEYXRhKHV0ZjguZGF0YUFzVUludDhQdHIoKSwgdXRmOC5sZW5ndGgoKSk7CiB9CiAKIHZv
aWQgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXksIGNv
bnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3Qgc2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRleCA3ZWU0YTc2
OTBlOTVlMjc2YWRiYjk0ODhhYjkxNTZmZGU3N2M5YmIxLi5hN2E5MzgwZGYyNzFlNWE2ZGU5MTQ4
NDUxZDNiODMyZmRkMzk1NTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC03NTcsNyArNzU3LDcgQEAgYm9v
bCBHcmFwaGljc0NvbnRleHRHTDo6cGFja0ltYWdlRGF0YShJbWFnZSogaW1hZ2UsIGNvbnN0IHZv
aWQqIHBpeGVscywgR0NHTGVudW0KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGRhdGEucmVz
aXplKHBhY2tlZFNpemUpOwogCi0gICAgaWYgKCFwYWNrUGl4ZWxzKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KHBpeGVscyksIHNvdXJjZUZvcm1hdCwgc291cmNlSW1hZ2VXaWR0aCwg
c291cmNlSW1hZ2VIZWlnaHQsIHNvdXJjZUltYWdlU3ViUmVjdGFuZ2xlLCBkZXB0aCwgc291cmNl
VW5wYWNrQWxpZ25tZW50LCB1bnBhY2tJbWFnZUhlaWdodCwgZm9ybWF0LCB0eXBlLCBhbHBoYU9w
LCBkYXRhLmRhdGEoKSwgZmxpcFkpKQorICAgIGlmICghcGFja1BpeGVscyhzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4ocGl4ZWxzKSwgc291cmNlRm9ybWF0LCBzb3VyY2VJbWFnZVdpZHRoLCBz
b3VyY2VJbWFnZUhlaWdodCwgc291cmNlSW1hZ2VTdWJSZWN0YW5nbGUsIGRlcHRoLCBzb3VyY2VV
bnBhY2tBbGlnbm1lbnQsIHVucGFja0ltYWdlSGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGFscGhhT3As
IGRhdGEuZGF0YSgpLCBmbGlwWSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoSW1h
Z2VPYnNlcnZlciogb2JzZXJ2ZXIgPSBpbWFnZS0+aW1hZ2VPYnNlcnZlcigpKQogICAgICAgICBv
YnNlcnZlci0+ZGlkRHJhdygqaW1hZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAKaW5kZXggYWQ1ZDNlNGYzMjdl
ZWY0ODc4NTljYmM0MTViNzU2ZDExZTA0NWZhNy4uZDI4NzdkNjgzMGMzYmM4YTA0MjE4ZjZiYTMz
NDRmMzBmYWJmODZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgc3RkOjpv
cHRpb25hbDxQaXhlbEJ1ZmZlcj4gSW1hZ2VCdWZmZXJCYWNrZW5kOjpnZXRQaXhlbEJ1ZmZlcihj
b25zdCBQaXhlbEJ1ZmZlckYKICAgICBDb25zdFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcgc291
cmNlIHsKICAgICAgICAgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBw
aXhlbEZvcm1hdCgpLCBjb2xvclNwYWNlKCkgfSwKICAgICAgICAgYnl0ZXNQZXJSb3coKSwKLSAg
ICAgICAgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZGF0YSkgKyBzb3VyY2VSZWN0Q2xpcHBl
ZC55KCkgKiBzb3VyY2UuYnl0ZXNQZXJSb3cgKyBzb3VyY2VSZWN0Q2xpcHBlZC54KCkgKiA0Cisg
ICAgICAgIHN0YXRpY19jYXN0PHVpbnQ4X3QqPihkYXRhKSArIHNvdXJjZVJlY3RDbGlwcGVkLnko
KSAqIHNvdXJjZS5ieXRlc1BlclJvdyArIHNvdXJjZVJlY3RDbGlwcGVkLngoKSAqIDQKICAgICB9
OwogICAgIAogICAgIFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcgZGVzdGluYXRpb24gewpAQCAt
MTU5LDcgKzE1OSw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRQaXhlbEJ1ZmZlcihj
b25zdCBQaXhlbEJ1ZmZlciYgc291cmNlUGl4ZWxCdWZmZXIsIGNvCiAgICAgUGl4ZWxCdWZmZXJD
b252ZXJzaW9uVmlldyBkZXN0aW5hdGlvbiB7CiAgICAgICAgIHsgZGVzdGluYXRpb25BbHBoYUZv
cm1hdCwgcGl4ZWxGb3JtYXQoKSwgY29sb3JTcGFjZSgpIH0sCiAgICAgICAgIGJ5dGVzUGVyUm93
KCksCi0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEpICsgZGVzdGluYXRp
b25SZWN0LnkoKSAqIGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ICsgZGVzdGluYXRpb25SZWN0Lngo
KSAqIDQKKyAgICAgICAgc3RhdGljX2Nhc3Q8dWludDhfdCo+KGRhdGEpICsgZGVzdGluYXRpb25S
ZWN0LnkoKSAqIGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ICsgZGVzdGluYXRpb25SZWN0LngoKSAq
IDQKICAgICB9OwogCiAgICAgY29udmVydEltYWdlUGl4ZWxzKHNvdXJjZSwgZGVzdGluYXRpb24s
IGRlc3RpbmF0aW9uUmVjdC5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkYuY3BwCmluZGV4IDFlNjJjY2Y3YTVhMzdhMzk1ZTUzZjIzM2U2Njk1
YzI3MzQ0ODZjMzcuLmEzNjE0MGFkNDFkZDkwZGQ3ZTU0ZmFhOWZlNTlmMmM5Mzk3MmE2NWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9J
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAKQEAg
LTUzMCwxMiArNTMwLDEwIEBAIHZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vz
c05hdGl2ZVNhbXBsZXMoQ0ZBcnJheVJlZiBuYXRpdmVTYW1wbGVzLCBjCiAKICAgICAgICAgICAg
IC8vIEEgV2ViVlRUIGhlYWRlciBpcyB0ZXJtaW5hdGVkIGJ5ICJPbmUgb3IgbW9yZSBXZWJWVFQg
bGluZSB0ZXJtaW5hdG9ycyIgc28gYXBwZW5kIHR3byBsaW5lIGZlZWRzIHRvIG1ha2Ugc3VyZSB0
aGUgcGFyc2VyCiAgICAgICAgICAgICAvLyByZWNjb2duaXplZCB0aGlzIHN0cmluZyBhcyBhIGZ1
bGwgaGVhZGVyLgotICAgICAgICAgICAgU3RyaW5nQnVpbGRlciBoZWFkZXI7Ci0gICAgICAgICAg
ICBoZWFkZXIuYXBwZW5kQ2hhcmFjdGVycyhyZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVk
IGNoYXIqPihDRkRhdGFHZXRCeXRlUHRyKHdlYnZ0dEhlYWRlckRhdGEpKSwgbGVuZ3RoKTsKLSAg
ICAgICAgICAgIGhlYWRlci5hcHBlbmQoIlxuXG4iKTsKKyAgICAgICAgICAgIGF1dG8gaGVhZGVy
ID0gbWFrZVN0cmluZyhTdHJpbmdWaWV3IHsgQ0ZEYXRhR2V0Qnl0ZVB0cih3ZWJ2dHRIZWFkZXJE
YXRhKSwgbGVuZ3RoIH0sICJcblxuIik7CiAKLSAgICAgICAgICAgIElORk9fTE9HKExPR0lERU5U
SUZJRVIsICJWVFQgaGVhZGVyICIsICZoZWFkZXIpOwotICAgICAgICAgICAgY2xpZW50KCktPnBh
cnNlV2ViVlRURmlsZUhlYWRlcihoZWFkZXIudG9TdHJpbmcoKSk7CisgICAgICAgICAgICBJTkZP
X0xPRyhMT0dJREVOVElGSUVSLCAiVlRUIGhlYWRlciAiLCBoZWFkZXIpOworICAgICAgICAgICAg
Y2xpZW50KCktPnBhcnNlV2ViVlRURmlsZUhlYWRlcihXVEZNb3ZlKGhlYWRlcikpOwogICAgICAg
ICAgICAgbV9oYXZlUmVwb3J0ZWRWVFRIZWFkZXIgPSB0cnVlOwogICAgICAgICB9IHdoaWxlICgw
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNG
LmNwcAppbmRleCA3MDljMDgwZDRmZmIwMjEzYzhkYjZmZGQ0YzhiZjc4YTdlMTI1NjZjLi4xMWFk
MTAxODBmMDBkNDJlMWI3MzRkNWQ2OTUzZTRlMGFhZTViYTBlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91
bmRhdGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmNwcApAQCAtNzQsMTEgKzc0LDEx
IEBAIFJlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Y6OmdlbmVyYXRl
S2V5UmVxdWVzdChjb25zdCBTdHJpbmcmLCBVCiAgICAgfQogCiAgICAgYXV0byBjZXJ0aWZpY2F0
ZURhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
Y2VydGlmaWNhdGUtPmJ5dGVMZW5ndGgoKSkpOwotICAgIENGRGF0YUFwcGVuZEJ5dGVzKGNlcnRp
ZmljYXRlRGF0YS5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGNlcnRpZmlj
YXRlLT5iYXNlQWRkcmVzcygpKSwgY2VydGlmaWNhdGUtPmJ5dGVMZW5ndGgoKSk7CisgICAgQ0ZE
YXRhQXBwZW5kQnl0ZXMoY2VydGlmaWNhdGVEYXRhLmdldCgpLCBjZXJ0aWZpY2F0ZS0+ZGF0YSgp
LCBjZXJ0aWZpY2F0ZS0+Ynl0ZUxlbmd0aCgpKTsKIAogICAgIGF1dG8gYXNzZXRTdHIgPSBrZXlJ
RC51dGY4KCk7CiAgICAgYXV0byBhc3NldElEID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGFzc2V0U3RyLmxlbmd0aCgpKSk7Ci0gICAgQ0ZEYXRhQXBw
ZW5kQnl0ZXMoYXNzZXRJRC5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGFz
c2V0U3RyLmRhdGEoKSksIGFzc2V0U3RyLmxlbmd0aCgpKTsKKyAgICBDRkRhdGFBcHBlbmRCeXRl
cyhhc3NldElELmdldCgpLCBhc3NldFN0ci5kYXRhQXNVSW50UHRyKCksIGFzc2V0U3RyLmxlbmd0
aCgpKTsKIAogICAgIENGRXJyb3JSZWYgY2ZFcnJvciA9IG51bGxwdHI7CiAgICAgYXV0byBrZXlS
ZXF1ZXN0ID0gYWRvcHRDRihBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0Q3JlYXRlU3Ry
ZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwKG1fcmVxdWVzdC5nZXQoKSwgY2VydGlm
aWNhdGVEYXRhLmdldCgpLCBhc3NldElELmdldCgpLCBudWxscHRyLCAmY2ZFcnJvcikpOwpAQCAt
MTEwLDcgKzExMCw3IEBAIHZvaWQgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGOjpyZWxlYXNlS2V5
cygpCiBib29sIENETVNlc3Npb25BVkZvdW5kYXRpb25DRjo6dXBkYXRlKFVpbnQ4QXJyYXkqIGtl
eSwgUmVmUHRyPFVpbnQ4QXJyYXk+JiBuZXh0TWVzc2FnZSwgdW5zaWduZWQgc2hvcnQmIGVycm9y
Q29kZSwgdWludDMyX3QmIHN5c3RlbUNvZGUpCiB7CiAgICAgYXV0byBrZXlEYXRhID0gYWRvcHRD
RihDRkRhdGFDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtleS0+Ynl0ZUxlbmd0
aCgpKSk7Ci0gICAgQ0ZEYXRhQXBwZW5kQnl0ZXMoa2V5RGF0YS5nZXQoKSwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBVSW50OCo+KGtleS0+YmFzZUFkZHJlc3MoKSksIGtleS0+Ynl0ZUxlbmd0aCgp
KTsKKyAgICBDRkRhdGFBcHBlbmRCeXRlcyhrZXlEYXRhLmdldCgpLCBrZXktPmRhdGEoKSwga2V5
LT5ieXRlTGVuZ3RoKCkpOwogCiAgICAgQVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdEZp
bmlzaExvYWRpbmdXaXRoUmVzcG9uc2UobV9yZXF1ZXN0LmdldCgpLCBudWxscHRyLCBrZXlEYXRh
LmdldCgpLCBudWxscHRyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRU
ZXh0VHJhY2tQcml2YXRlQVZDRi5jcHAKaW5kZXggYjQ1OWY2ZjE5YmY3NTRjZTllNTUyMjI5NWNi
MmVhZWU4MTRjNmYyNy4uM2VlNjAxZGQyNzA1YjIwYjAyMGVkN2RjOTU3YWRlODZlODc1MDVmYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L2NmL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
Q0YuY3BwCkBAIC0yMDQsNyArMjA0LDcgQEAgYm9vbCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZD
Rjo6cmVhZE5hdGl2ZVNhbXBsZUJ1ZmZlcihDRkFycmF5UmVmIG5hdGl2ZVNhbXBsZXMKICAgICB9
CiAKICAgICBtX3NhbXBsZUlucHV0QnVmZmVyLmdyb3cobV9zYW1wbGVJbnB1dEJ1ZmZlci5zaXpl
KCkgKyBidWZmZXJMZW5ndGgpOwotICAgIENGRGF0YUdldEJ5dGVzKHNhbXBsZUJ1ZmZlci0+YnVm
ZmVyLCBDRlJhbmdlTWFrZSgwLCBidWZmZXJMZW5ndGgpLCByZWludGVycHJldF9jYXN0PFVJbnQ4
Kj4obV9zYW1wbGVJbnB1dEJ1ZmZlci5kYXRhKCkpICsgbV9zYW1wbGVJbnB1dEJ1ZmZlci5zaXpl
KCkgLSBidWZmZXJMZW5ndGgpOworICAgIENGRGF0YUdldEJ5dGVzKHNhbXBsZUJ1ZmZlci0+YnVm
ZmVyLCBDRlJhbmdlTWFrZSgwLCBidWZmZXJMZW5ndGgpLCBtX3NhbXBsZUlucHV0QnVmZmVyLmRh
dGEoKSArIG1fc2FtcGxlSW5wdXRCdWZmZXIuc2l6ZSgpIC0gYnVmZmVyTGVuZ3RoKTsKIAogICAg
IGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUobV9zYW1wbGVJbnB1dEJ1ZmZlci5kYXRhKCks
IG1fc2FtcGxlSW5wdXRCdWZmZXIuc2l6ZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtQnVmZmVyLmNwcAppbmRleCBjNjgxODcwNDJkNjcwNWY3ODI2Yjg1MjVhMjQ3Njg4
ZDU2ZGVkMDUzLi5lZTZhNWQyZWVkNmEzZjk3ZTc0NjhjYWI5NmU5ZWUzNGQ2YjgzMDZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcApAQCAtNzAyLDcgKzcw
Miw3IEBAIEl0ZW1CdWZmZXJIYW5kbGUgSXRlbUJ1ZmZlcjo6Y3JlYXRlSXRlbUJ1ZmZlcihzaXpl
X3QgY2FwYWNpdHkpCiAgICAgY29uc3RleHByIHNpemVfdCBkZWZhdWx0SXRlbUJ1ZmZlckNhcGFj
aXR5ID0gMSA8PCAxMDsKIAogICAgIGF1dG8gbmV3QnVmZmVyQ2FwYWNpdHkgPSBzdGQ6Om1heChj
YXBhY2l0eSwgZGVmYXVsdEl0ZW1CdWZmZXJDYXBhY2l0eSk7Ci0gICAgYXV0byogYnVmZmVyID0g
cmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZmFzdE1hbGxvYyhuZXdCdWZmZXJDYXBhY2l0eSkp
OworICAgIGF1dG8qIGJ1ZmZlciA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihmYXN0TWFsbG9jKG5l
d0J1ZmZlckNhcGFjaXR5KSk7CiAgICAgbV9hbGxvY2F0ZWRCdWZmZXJzLmFwcGVuZChidWZmZXIp
OwogICAgIHJldHVybiB7IEl0ZW1CdWZmZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBidWZmZXIs
IG5ld0J1ZmZlckNhcGFjaXR5IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVy
YXRvci5jcHAKaW5kZXggMGFlZjEyOGFiM2I1YjRiNWIwMjAxODAzMzIyYzA0NDkzMTY3ZTUyNC4u
YTBjODIxNGRkMzY1MjZhMTE3MjVhMmY5NjdjNDdhMWQ2NTBhMTAyNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcApAQCAtNzksNyArNzksNyBAQCB2b2lkIERpc3Bs
YXlMaXN0OjpJdGVyYXRvcjo6dXBkYXRlQ3VycmVudEl0ZW0oKQogICAgIH0KIAogICAgIGF1dG8g
cGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW0gPSBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0ZXMo
aXRlbVR5cGUpOwotICAgIG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gPSBwYWRkZWRTaXplT2ZUeXBl
QW5kSXRlbSA8PSBzaXplT2ZGaXhlZEJ1ZmZlckZvckN1cnJlbnRJdGVtID8gbV9maXhlZEJ1ZmZl
ckZvckN1cnJlbnRJdGVtIDogcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZmFzdE1hbGxvYyhw
YWRkZWRTaXplT2ZUeXBlQW5kSXRlbSkpOworICAgIG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gPSBw
YWRkZWRTaXplT2ZUeXBlQW5kSXRlbSA8PSBzaXplT2ZGaXhlZEJ1ZmZlckZvckN1cnJlbnRJdGVt
ID8gbV9maXhlZEJ1ZmZlckZvckN1cnJlbnRJdGVtIDogc3RhdGljX2Nhc3Q8dWludDhfdCo+KGZh
c3RNYWxsb2MocGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW0pKTsKICAgICBpZiAoaXNJbmxpbmVJdGVt
KGl0ZW1UeXBlKSkgewogICAgICAgICBpZiAoVU5MSUtFTFkoc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KG1fY3VycmVudEVuZE9mQnVmZmVyIC0gbV9jdXJzb3IpIDwgcGFkZGVkU2l6ZU9mVHlwZUFuZEl0
ZW0pKSB7CiAgICAgICAgICAgICBtX2lzVmFsaWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVy
LmgKaW5kZXggNDI3NjQ2YzFkYjMwMDg1ZWIzMmMwMWRhNTc0NmQyYjkzZjBlNGQyNC4uNDIxNDZl
MDMyOTMyMzY5OTc4OWViNWU0MmFmNGM3M2QzNGFiOWNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVy
LmgKQEAgLTI4NSw5ICsyODUsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgcGFyc2Uoc2l6ZV90IGRh
dGFQb3NpdGlvbiwgc2l6ZV90IGxlbiwgYm9vbCBwYXJzZVNpemVPbmx5KTsKICAgICB2b2lkIHNl
dFJlbWFpbmluZ0J5dGVzKHNpemVfdCk7CiAKLSAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRh
KHNpemVfdCBkYXRhUG9zaXRpb24pIGNvbnN0CisgICAgY29uc3QgdWludDhfdCogZGF0YShzaXpl
X3QgZGF0YVBvc2l0aW9uKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KG1fZGF0YS0+ZGF0YSgpKSArIGRhdGFQb3NpdGlv
bjsKKyAgICAgICAgcmV0dXJuIG1fZGF0YS0+ZGF0YSgpICsgZGF0YVBvc2l0aW9uOwogICAgIH0K
IAogICAgIHZvaWQgYWRkRnJhbWVJZk5lY2Vzc2FyeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMubW0KaW5kZXggOGU5NWM1NDY5YTFhOTYz
YzZkY2RiZGYxMzg4MmIwNzNiMmYwMzc1OS4uOGZkZDE4ZjJiMDRmOTYzNjcyMTFiYzI5OTkwYjgy
M2RjZGMwMTk2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NTTEtl
eUdlbmVyYXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU1NMS2V5
R2VuZXJhdG9yTWFjLm1tCkBAIC0xODksNyArMTg5LDcgQEAgc3RhdGljIFN0cmluZyBzaWduZWRQ
dWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZSwgY29uc3QgQ1N0cmlu
ZyYKIAogICAgIC8vIExlbmd0aCBuZWVkcyB0byBhY2NvdW50IGZvciB0aGUgbnVsbCB0ZXJtaW5h
dG9yLgogICAgIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZS5wdWJsaWNLZXlBbmRDaGFsbGVu
Z2UuY2hhbGxlbmdlLkxlbmd0aCA9IGNoYWxsZW5nZS5sZW5ndGgoKSArIDE7Ci0gICAgc2lnbmVk
UHVibGljS2V5QW5kQ2hhbGxlbmdlLnB1YmxpY0tleUFuZENoYWxsZW5nZS5jaGFsbGVuZ2UuRGF0
YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGNvbnN0X2Nhc3Q8Y2hhcio+KGNoYWxsZW5n
ZS5kYXRhKCkpKTsKKyAgICBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2UucHVibGljS2V5QW5k
Q2hhbGxlbmdlLmNoYWxsZW5nZS5EYXRhID0gY29uc3RfY2FzdDx1aW50OF90Kj4oY2hhbGxlbmdl
LmRhdGFBc1VJbnQ4UHRyKCkpOwogCiAgICAgQ1NTTV9EQVRBIGVuY29kZWRQdWJsaWNLZXlBbmRD
aGFsbGVuZ2UgeyAwLCBudWxscHRyIH07CiAgICAgaWYgKFNlY0FzbjFFbmNvZGVJdGVtKGNvZGVy
LCAmc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlLnB1YmxpY0tleUFuZENoYWxsZW5nZSwgcHVi
bGljS2V5QW5kQ2hhbGxlbmdlVGVtcGxhdGUsICZlbmNvZGVkUHVibGljS2V5QW5kQ2hhbGxlbmdl
KSAhPSBub0VycikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKaW5kZXggZGYyMTdk
YmFlY2Q0NjFhOWQ5YmUzOGY1NWJjNzkzNTVkYjJiMmIxNy4uZTAzZGZhZmQyNDQ4YWU1NDUzZTQx
NWVkODE2YTA1Y2FlZGIwMTJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAK
QEAgLTE0NSw3ICsxNDUsNyBAQCBzdGF0aWMgdm9pZCBhZGRTdHJpbmdUb1NIQTEoU0hBMSYgc2hh
MSwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgfQogCiAgICAgYXV0byB1dGY4ID0gc3RyaW5n
LnV0ZjgoKTsKLSAgICBzaGExLmFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KHV0ZjguZGF0YSgpKSwgdXRmOC5sZW5ndGgoKSArIDEpOyAvLyBJbmNsdWRlIHRlcm1pbmF0
aW5nIG51bGwgYnl0ZS4KKyAgICBzaGExLmFkZEJ5dGVzKHV0ZjguZGF0YUFzVUludDhQdHIoKSwg
dXRmOC5sZW5ndGgoKSArIDEpOyAvLyBJbmNsdWRlIHRlcm1pbmF0aW5nIG51bGwgYnl0ZS4KIH0K
IAogU3RyaW5nIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6Omhhc2hTdHJpbmdXaXRoU2FsdChj
b25zdCBTdHJpbmcmIGlkLCBjb25zdCBTdHJpbmcmIGhhc2hTYWx0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwCmluZGV4IDdlM2Qx
YjkxZjA2Mzc0ZTk4NGNmNTFlOGM3N2M0ZjcwZDkyMWRmYTkuLmRiNzU3MTYwZmNiZGJmYWFlYTBk
YWUwYWUxNjJmNDAzODEzZTEwNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHAKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lkIGFk
ZEtleVZhbHVlUGFpckFzRm9ybURhdGEoVmVjdG9yPGNoYXI+JiBidWZmZXIsIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYga2V5LAogCiB2b2lkIGVuY29kZVN0cmluZ0FzRm9ybURhdGEoVmVjdG9yPGNo
YXI+JiBidWZmZXIsIGNvbnN0IENTdHJpbmcmIHN0cmluZykKIHsKLSAgICBhcHBlbmRGb3JtVVJM
RW5jb2RlZChidWZmZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0cmluZy5k
YXRhKCkpLCBzdHJpbmcubGVuZ3RoKCkpOworICAgIGFwcGVuZEZvcm1VUkxFbmNvZGVkKGJ1ZmZl
ciwgc3RyaW5nLmRhdGFBc1VJbnQ4UHRyKCksIHN0cmluZy5sZW5ndGgoKSk7CiB9CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFu
ZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFu
ZGxlLmNwcAppbmRleCA2ZGUxYTNmOGExZjliNjNkMWU3MWZiM2FhN2NlNDI1MzQxYTY1MWQ5Li4y
NzBjYWNiZTAyMDI4NmY1NzI1MzU3ZjIxNTI5NTFmNWYzNmY3ZTg1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuY3BwCkBA
IC02MSw3ICs2MSw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpzZW5kSGFuZHNoYWtlKENT
dHJpbmcmJiBoYW5kc2hha2UsIHN0ZDo6b3B0aW9uYWw8Q29va2llCiB7CiAgICAgaWYgKG1fc3Rh
dGUgPT0gQ29ubmVjdGluZyB8fCBtX3N0YXRlID09IENsb3NpbmcpCiAgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcihmYWxzZSwgZmFsc2UpOwotICAgIHBsYXRmb3JtU2VuZEhhbmRzaGFr
ZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihoYW5kc2hha2UuZGF0YSgpKSwgaGFu
ZHNoYWtlLmxlbmd0aCgpLCBXVEZNb3ZlKGhlYWRlckZpZWxkUHJveHkpLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CisgICAgcGxhdGZvcm1TZW5kSGFuZHNoYWtlKGhhbmRzaGFrZS5kYXRh
QXNVSW50OFB0cigpLCBoYW5kc2hha2UubGVuZ3RoKCksIFdURk1vdmUoaGVhZGVyRmllbGRQcm94
eSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBTb2NrZXRTdHJlYW1I
YW5kbGU6OmNsb3NlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKaW5kZXggYjdlZjViODc1ODRmZmJi
NjZhZjdkOWExMTNmNDMwNmQ5MTVhMTY5Yi4uZWUxYWRkMDM3NGMzZDYxOTQyNWFiNTcxMjU3Mzdk
MmU0ZWU2OGEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKQEAgLTIyOCw3ICsyMjgsNyBAQCB2
b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKQogICAgIFN0cmlu
ZyBwYXJ0aXRpb24gPSBjYWNoZVBhcnRpdGlvbigpOwogICAgIGlmICghcGFydGl0aW9uLmlzTnVs
bCgpICYmICFwYXJ0aXRpb24uaXNFbXB0eSgpKSB7CiAgICAgICAgIENTdHJpbmcgdXRmOFN0cmlu
ZyA9IHBhcnRpdGlvbi51dGY4KCk7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcGFy
dGl0aW9uVmFsdWUgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzKDAsIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgVUludDgqPih1dGY4U3RyaW5nLmRhdGEoKSksIHV0ZjhTdHJpbmcubGVu
Z3RoKCksIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgZmFsc2UpKTsKKyAgICAgICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBwYXJ0aXRpb25WYWx1ZSA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRo
Qnl0ZXMoMCwgdXRmOFN0cmluZy5kYXRhQXNVSW50OFB0cigpLCB1dGY4U3RyaW5nLmxlbmd0aCgp
LCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIGZhbHNlKSk7CiAgICAgICAgIF9DRlVSTFJlcXVlc3RT
ZXRQcm90b2NvbFByb3BlcnR5KGNmUmVxdWVzdC5nZXQoKSwgX2tDRlVSTENhY2hlUGFydGl0aW9u
S2V5LCBwYXJ0aXRpb25WYWx1ZS5nZXQoKSk7CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0
LmgKaW5kZXggYmNjNjIyODY2MGUzODY4ZWM3YzFhNmI0N2RlZTFlZDcxYmYwM2Q5Yy4uOTYxNjBj
MmU2NzM0NjY3N2IwYjBiNjgxODBiN2EzMjgxYzU3NzIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaApA
QCAtMTMxLDcgKzEzMSw3IEBAIGlubGluZSBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGh0dHBIZWFk
ZXJWYWx1ZVVzaW5nU3VpdGFibGVFbmNvZGluZyhIVFRQSGVhZGVyTWFwCiAgICAgaWYgKGhlYWRl
ci5rZXlBc0hUVFBIZWFkZXJOYW1lICYmICpoZWFkZXIua2V5QXNIVFRQSGVhZGVyTmFtZSA9PSBI
VFRQSGVhZGVyTmFtZTo6TGFzdEV2ZW50SUQgJiYgIWhlYWRlci52YWx1ZS5pc0FsbEFTQ0lJKCkp
IHsKICAgICAgICAgYXV0byB1dGY4VmFsdWUgPSBoZWFkZXIudmFsdWUudXRmOCgpOwogICAgICAg
ICAvLyBDb25zdHJ1Y3RpbmcgYSBzdHJpbmcgd2l0aCB0aGUgVVRGLTggYnl0ZXMgYnV0IGNsYWlt
aW5nIHRoYXQgaXTigJlzIExhdGluLTEgaXMgdGhlIHdheSB0byBnZXQgQ0ZOZXR3b3JrIHRvIHB1
dCB0aG9zZSBVVEYtOCBieXRlcyBvbiB0aGUgd2lyZS4KLSAgICAgICAgcmV0dXJuIGFkb3B0Q0Yo
Q0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXMobnVsbHB0ciwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBV
SW50OCo+KHV0ZjhWYWx1ZS5kYXRhKCkpLCB1dGY4VmFsdWUubGVuZ3RoKCksIGtDRlN0cmluZ0Vu
Y29kaW5nSVNPTGF0aW4xLCBmYWxzZSkpOworICAgICAgICByZXR1cm4gYWRvcHRDRihDRlN0cmlu
Z0NyZWF0ZVdpdGhCeXRlcyhudWxscHRyLCB1dGY4VmFsdWUuZGF0YUFzVUludDhQdHIoKSwgdXRm
OFZhbHVlLmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgZmFsc2UpKTsKICAg
ICB9CiAgICAgcmV0dXJuIGhlYWRlci52YWx1ZS5jcmVhdGVDRlN0cmluZygpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5k
bGVJbXBsQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2Nr
ZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwCmluZGV4IGQxMzc5NDk4YWFiODFlZTJjYTdhYTA4
OWIxYjUwZjk5NWMyODI5NDcuLjU1YjlmMWVkNGEwZDMyNWE2YjE2YTExNDM4OWYzOWM3ZGVkMzZj
YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0
U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAKQEAgLTcyMiw3ICs3MjIs
NyBAQCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6cGxhdGZv
cm1TZW5kSW50ZXJuYWwoY29uc3QgdWludDhfdAogICAgIGlmICghQ0ZXcml0ZVN0cmVhbUNhbkFj
Y2VwdEJ5dGVzKG1fd3JpdGVTdHJlYW0uZ2V0KCkpKQogICAgICAgICByZXR1cm4gMDsKIAotICAg
IENGSW5kZXggcmVzdWx0ID0gQ0ZXcml0ZVN0cmVhbVdyaXRlKG1fd3JpdGVTdHJlYW0uZ2V0KCks
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihkYXRhKSwgbGVuZ3RoKTsKKyAgICBDRklu
ZGV4IHJlc3VsdCA9IENGV3JpdGVTdHJlYW1Xcml0ZShtX3dyaXRlU3RyZWFtLmdldCgpLCBkYXRh
LCBsZW5ndGgpOwogICAgIGlmIChyZXN1bHQgPT0gLTEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybENhY2hlRW50cnkuY3BwCmluZGV4IDA1YjRlMjliYzkzMWMxNDM0NWI0Nzk1OThiYWVl
NjdlYjRiNjhjMmEuLjk5OTU1NWViNTIxMWYxYTQ0MmQwODVkYWRlNjZhODVmODQ1ZGE3N2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVF
bnRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxD
YWNoZUVudHJ5LmNwcApAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgQ3VybENhY2hlRW50cnk6OmRp
ZEZpbmlzaExvYWRpbmcoKQogdm9pZCBDdXJsQ2FjaGVFbnRyeTo6Z2VuZXJhdGVCYXNlRmlsZW5h
bWUoY29uc3QgQ1N0cmluZyYgdXJsKQogewogICAgIFNIQTEgc2hhMTsKLSAgICBzaGExLmFkZEJ5
dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHVybC5kYXRhKCkpLCB1cmwubGVu
Z3RoKCkpOworICAgIHNoYTEuYWRkQnl0ZXModXJsLmRhdGFBc1VJbnQ4UHRyKCksIHVybC5sZW5n
dGgoKSk7CiAKICAgICBTSEExOjpEaWdlc3Qgc3VtOwogICAgIHNoYTEuY29tcHV0ZUhhc2goc3Vt
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAK
aW5kZXggNmQ4ZGM3MmVkY2JkNDI4ODdlNjc3NWExNjAyODU0N2E5N2M2MzFiOS4uMmQ4MGYzYjFi
Nzc0YTg1M2NmMjEyNzU3MGRmMTg4MDUxMmEyZDAyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAKQEAgLTMwNCw3ICszMDQsNyBAQCBhdXRv
IFNRTGl0ZVN0YXRlbWVudDo6Y29sdW1uQmxvYlZpZXcoaW50IGNvbCkgLT4gQmxvYlZpZXcKICAg
ICBpZiAoYmxvYlNpemUgPD0gMCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIHJldHVybiB7
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJsb2IpLCBzdGF0aWNfY2FzdDxzaXpl
X3Q+KGJsb2JTaXplKSB9OworICAgIHJldHVybiB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihibG9iKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihibG9iU2l6ZSkgfTsKIH0KIAogYm9vbCBTUUxp
dGVTdGF0ZW1lbnQ6Omhhc1N0YXJ0ZWRTdGVwcGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
TW9ja0NETUZhY3RvcnkuY3BwCmluZGV4IDk5MmU0YzEzYTdlZThlZTQ3ZTg0OTFmN2I4ZTMwNDIw
ZWQzZWUyMWQuLmJjMzI0NmJmNmIyYzIwNjM4YmZiNDIyNWNmNzBkNTFhOGZiMzBmMDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCkBAIC0yMTMsNyArMjEzLDcg
QEAgYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmUKIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gTW9ja0NE
TTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAog
ewotICAgIGlmICghY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
TENoYXIqPihyZXNwb25zZS5kYXRhKCkpLCByZXNwb25zZS5zaXplKCkpKQorICAgIGlmICghY2hh
cmFjdGVyc0FyZUFsbEFTQ0lJKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZUFycmF5
ID0gU3RyaW5nKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKS5zcGxpdCgnICcpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRUUFBhcnNlci5jcHAgYi9Tb3Vy
Y2UvV2ViRHJpdmVyL3NvY2tldC9IVFRQUGFyc2VyLmNwcAppbmRleCA3YTViMjI4ZDVmZjcxNDZk
YTdiMTE3N2NiMTRjYmE0ZTQzMGIzN2ZhLi5jODJhZDk1N2Y3MTNjM2FlNzY5NGNlODYzZTU3NTQ1
MDJiYzAyNzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9IVFRQUGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9IVFRQUGFyc2VyLmNwcApAQCAtMTMw
LDcgKzEzMCw3IEBAIGJvb2wgSFRUUFBhcnNlcjo6cmVhZExpbmUoU3RyaW5nJiBsaW5lKQogICAg
IGlmIChwb3NpdGlvbiA9PSBub3RGb3VuZCB8fCBwb3NpdGlvbiArIDEgPT0gbGVuZ3RoIHx8IG1f
YnVmZmVyW3Bvc2l0aW9uICsgMV0gIT0gMHgwYSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgbGluZSA9IFN0cmluZzo6ZnJvbVVURjgocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obV9idWZm
ZXIuZGF0YSgpKSwgcG9zaXRpb24pOworICAgIGxpbmUgPSBTdHJpbmc6OmZyb21VVEY4KG1fYnVm
ZmVyLmRhdGEoKSwgcG9zaXRpb24pOwogICAgIGlmIChsaW5lLmlzTnVsbCgpKQogICAgICAgICBM
T0dfRVJST1IoIkNsaWVudCBlcnJvcjogaW52YWxpZCBlbmNvZGluZyBpbiBIVFRQIGhlYWRlci4i
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvU2Vzc2lvbkhvc3RTb2Nr
ZXQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvU2Vzc2lvbkhvc3RTb2NrZXQuY3BwCmlu
ZGV4IDBmNjU2NjhmYzJmYjg5ZmQ0ZWFhN2RjNDE0ODdiZjFkNjEyMGNhZjAuLjY4OTJiM2YzODBj
ZWI3MjU1Mzk1NzcxOTI1NmI1YTA5ZDk5ZTlmOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2
ZXIvc29ja2V0L1Nlc3Npb25Ib3N0U29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL3Nv
Y2tldC9TZXNzaW9uSG9zdFNvY2tldC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgdm9pZCBTZXNzaW9u
SG9zdDo6c2VuZFdlYkluc3BlY3RvckV2ZW50KGNvbnN0IFN0cmluZyYgZXZlbnQpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGNvbnN0IENTdHJpbmcgbWVzc2FnZSA9IGV2ZW50LnV0ZjgoKTsKLSAg
ICBzZW5kKG1fY2xpZW50SUQudmFsdWUoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
Kj4obWVzc2FnZS5kYXRhKCkpLCBtZXNzYWdlLmxlbmd0aCgpKTsKKyAgICBzZW5kKG1fY2xpZW50
SUQudmFsdWUoKSwgbWVzc2FnZS5kYXRhQXNVSW50OFB0cigpLCBtZXNzYWdlLmxlbmd0aCgpKTsK
IH0KIAogdm9pZCBTZXNzaW9uSG9zdDo6Y29ubmVjdFRvQnJvd3NlcihGdW5jdGlvbjx2b2lkIChz
dGQ6Om9wdGlvbmFsPFN0cmluZz4gZXJyb3IpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
UHJveHkuY3BwCmluZGV4IDRmNThlZDFjNTQwZWVhOGFiYzI5NzZjYzgxNWY3ODZmMmQwNjY4MDku
LmIwN2UzNTYxZTliN2ZiZDg4OTRiODUxNzMzZjc2Yjk2NjM0Nzc3MjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94
eS5jcHAKQEAgLTY5MSw3ICs2OTEsNyBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om1l
ZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqIG1lc3NhZ2UpCiAjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJJbml0
aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChjb25zdCBTdHJpbmcmIGluaXREYXRhVHlwZSwgUmVm
UHRyPEFycmF5QnVmZmVyPiYmIGluaXREYXRhKQogewotICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rp
b24tPnNlbmQoTWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6SW5pdGlhbGl6YXRp
b25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGFUeXBlLCBJUEM6OkRhdGFSZWZlcmVuY2UocmVpbnRl
cnByZXRfY2FzdDx1aW50OF90Kj4oaW5pdERhdGEtPmRhdGEoKSksIGluaXREYXRhLT5ieXRlTGVu
Z3RoKCkpKSwgbV9pZCk7CisgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpJbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJl
ZChpbml0RGF0YVR5cGUsIElQQzo6RGF0YVJlZmVyZW5jZShzdGF0aWNfY2FzdDx1aW50OF90Kj4o
aW5pdERhdGEtPmRhdGEoKSksIGluaXREYXRhLT5ieXRlTGVuZ3RoKCkpKSwgbV9pZCk7CiB9CiAK
IHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJXYWl0aW5nRm9yS2V5Q2hh
bmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
VGV4dFRyYWNrUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZVRleHRUcmFja1Byb3h5LmNwcAppbmRleCA5ZWM1NWY2MTZmNTg0M2I2YzgwMjdiYzE5ZGE3YTYw
NThkNGFhNjA0Li5iNDFhMDI4MWY4NThhMTIyZTBmYWE2YmI3MTk0ZWU1MzBjYzlmMWYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJh
Y2tQcm94eS5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIFJlbW90ZVRleHRUcmFja1Byb3h5
OjphZGREYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZQog
ICAgIGlmICghbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OkFkZERhdGFDdWUobV9pZGVudGlmaWVyLCBzdGFydCwg
ZW5kLCBJUEM6OkRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
ZGF0YSksIGxlbmd0aCkpLCBtX21lZGlhUGxheWVySWRlbnRpZmllcik7CisgICAgbV9jb25uZWN0
aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlOjpBZGREYXRhQ3VlKG1faWRlbnRpZmllciwgc3RhcnQsIGVuZCwgSVBDOjpE
YXRhUmVmZXJlbmNlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3RoKSks
IG1fbWVkaWFQbGF5ZXJJZGVudGlmaWVyKTsKIH0KIAogI2lmIEVOQUJMRShEQVRBQ1VFX1ZBTFVF
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRp
YVJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3RlTWVk
aWFSZWNvcmRlci5jcHAKaW5kZXggYWJhYTViYmM0ZDg0MTA0ZmFhOTMyZWM3YThkNDI1NzdkYjg5
ZmYyZi4uOGMxMjU0OWYxNDMyODlmZjFmMmRiYjM2NDU4N2MyZjY4ZWFjYTZiYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3Jk
ZXIuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjp2aWRl
b1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmIHJlbW8KIHZvaWQg
UmVtb3RlTWVkaWFSZWNvcmRlcjo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBD
OjpEYXRhUmVmZXJlbmNlJiYsIGRvdWJsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
bV93cml0ZXItPmZldGNoRGF0YShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oYXV0byYmIGRhdGEsIGF1dG8gdGltZUNvZGUpIG11dGFibGUgewotICAgICAg
ICBhdXRvKiBwb2ludGVyID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSA/
IGRhdGEtPmRhdGEoKSA6IG51bGxwdHIpOworICAgICAgICBhdXRvKiBwb2ludGVyID0gZGF0YSA/
IGRhdGEtPmRhdGEoKSA6IG51bGxwdHI7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6
RGF0YVJlZmVyZW5jZSB7IHBvaW50ZXIsIGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwIH0sIHRpbWVD
b2RlKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YUN1cmwuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhQ3VybC5jcHAKaW5kZXggMTkyNDgyYmY5ZjQz
NGRjMTk5ZDM3YWQ0MTE4Mjk0YWUxOWRjNjZjYS4uOGJlYTg4OTNhYmFhNzgxOTdlNjU4NTZmMjQ1
NTVmN2FmZGY1NzgwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVEYXRhQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhQ3VybC5jcHAKQEAgLTczLDcgKzczLDcgQEAg
Ym9vbCBEYXRhOjphcHBseShjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IHVpbnQ4X3QqLCBzaXpl
X3QpPiYgYXBwbGllcikgY29uc3QKICAgICBpZiAoaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICByZXR1cm4gYXBwbGllcihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihkYXRhKCkpLCBzaXplKCkpOworICAgIHJldHVybiBhcHBsaWVyKGRhdGEoKSwgc2l6ZSgp
KTsKIH0KIAogRGF0YSBEYXRhOjpzdWJyYW5nZShzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlS2V5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlS2V5LmNwcAppbmRleCBmOGYzNDEwZGNhMDVhYTE5NDE2Y2JjNDg1MTVmYTBlZTM0
YmNjZTJhLi4wOGExZGQxMDAzYzA1OTg5Y2IwNWNhZDlkNWEwOGQ3YmY5MWU4Njk2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUtleS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVL
ZXkuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHN0YXRpYyB2b2lkIGhhc2hTdHJpbmcoU0hBMSYgc2hh
MSwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgfQogICAgIGF1dG8gY1N0cmluZyA9IHN0cmlu
Zy51dGY4KCk7CiAgICAgLy8gSW5jbHVkZSB0ZXJtaW5hdGluZyBudWxsIGJ5dGUuCi0gICAgc2hh
MS5hZGRCeXRlcyhyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihjU3RyaW5nLmRhdGEo
KSksIGNTdHJpbmcubGVuZ3RoKCkgKyAxKTsKKyAgICBzaGExLmFkZEJ5dGVzKGNTdHJpbmcuZGF0
YUFzVUludDhQdHIoKSwgY1N0cmluZy5sZW5ndGgoKSArIDEpOwogfQogCiBLZXk6Okhhc2hUeXBl
IEtleTo6Y29tcHV0ZUhhc2goY29uc3QgU2FsdCYgc2FsdCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJLaXREaXJlY3RvcnlJbnB1dFN0cmVh
bS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViS2l0RGlyZWN0b3J5
SW5wdXRTdHJlYW0uY3BwCmluZGV4IDE0NTRhMWYwNmM3ZWQ4OGNiYWI2NjY5YWFlZmQ0NjJiOTNh
YjZjZTAuLmNmMmFmOTEyMjNkODA0YmFlNDcyZTQ3NjY0MDEzYWExMGEwYTUwYWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJLaXREaXJlY3RvcnlJbnB1
dFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYktp
dERpcmVjdG9yeUlucHV0U3RyZWFtLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIHN0YXRpYyBnc3Np
emUgd2Via2l0RGlyZWN0b3J5SW5wdXRTdHJlYW1SZWFkKEdJbnB1dFN0cmVhbSogaW5wdXQsIHZv
aWQqIGJ1ZmZlciwKICAgICAgICAgZ3NpemUgYnVmZmVyU2l6ZTsKICAgICAgICAgYXV0byogYnVm
ZmVyRGF0YSA9IGdfYnl0ZXNfZ2V0X2RhdGEoc3RyZWFtLT5wcml2LT5idWZmZXIuZ2V0KCksICZi
dWZmZXJTaXplKTsKICAgICAgICAgZ3NpemUgYnl0ZXNSZWFkID0gc3RkOjptaW4oYnVmZmVyU2l6
ZSwgY291bnQgLSB0b3RhbEJ5dGVzUmVhZCk7Ci0gICAgICAgIG1lbWNweShyZWludGVycHJldF9j
YXN0PGNoYXIqPihidWZmZXIpICsgdG90YWxCeXRlc1JlYWQsIGJ1ZmZlckRhdGEsIGJ5dGVzUmVh
ZCk7CisgICAgICAgIG1lbWNweShzdGF0aWNfY2FzdDxjaGFyKj4oYnVmZmVyKSArIHRvdGFsQnl0
ZXNSZWFkLCBidWZmZXJEYXRhLCBieXRlc1JlYWQpOwogICAgICAgICBpZiAoYnl0ZXNSZWFkID09
IGJ1ZmZlclNpemUpCiAgICAgICAgICAgICBzdHJlYW0tPnByaXYtPmJ1ZmZlciA9IG51bGxwdHI7
CiAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Fy
Z3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29k
ZXJzLmNwcAppbmRleCA3NDY0MjgxM2Y0NzgxOTZjMGM3OGNlYjc4N2UzNjZkYzI4ZGM5MjYyLi44
MTBlZTJjZTUxZjI3YzJkYmQ2MDdlNTMyYWEyNmQ2MDU2OWFiMjliIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHZv
aWQgQXJndW1lbnRDb2RlcjxDU3RyaW5nPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IENTdHJpbmcmIHN0cmluZykKIAogICAgIHVpbnQzMl90IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgo
KTsKICAgICBlbmNvZGVyIDw8IGxlbmd0aDsKLSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3Ro
RGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzdHJpbmcuZGF0YSgpKSwgbGVu
Z3RoLCAxKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShzdHJpbmcuZGF0YUFz
VUludDhQdHIoKSwgbGVuZ3RoLCAxKTsKIH0KIAogV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgQXJn
dW1lbnRDb2RlcjxDU3RyaW5nPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIENTdHJpbmcmIHJl
c3VsdCkKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIGVuY29kZXIg
PDwgbGVuZ3RoIDw8IGlzOEJpdDsKIAogICAgIGlmIChpczhCaXQpCi0gICAgICAgIGVuY29kZXIu
ZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0
cmluZy5jaGFyYWN0ZXJzOCgpKSwgbGVuZ3RoICogc2l6ZW9mKExDaGFyKSwgYWxpZ25vZihMQ2hh
cikpOworICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShzdHJpbmcuY2hhcmFj
dGVyczgoKSwgbGVuZ3RoICogc2l6ZW9mKExDaGFyKSwgYWxpZ25vZihMQ2hhcikpOwogICAgIGVs
c2UKICAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4oc3RyaW5nLmNoYXJhY3RlcnMxNigpKSwgbGVuZ3RoICogc2l6ZW9m
KFVDaGFyKSwgYWxpZ25vZihVQ2hhcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL2MvY2YvV0tTdHJpbmdDRi5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9j
L2NmL1dLU3RyaW5nQ0YubW0KaW5kZXggODI2ZmU2YjUwZTA5YmQxMGQ5NGFjNGFhNDc4ZGRhZGNi
ZWZmNTBmZS4uZDE3OGYwMTZkZjNmOGEzMDczNTY1MzY4ZWJhM2QwZjg5MWRhYmUxMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2YvV0tTdHJpbmdDRi5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZi9XS1N0cmluZ0NGLm1tCkBAIC01Nyw2ICs1Nyw2
IEBAIENGU3RyaW5nUmVmIFdLU3RyaW5nQ29weUNGU3RyaW5nKENGQWxsb2NhdG9yUmVmIGFsbG9j
YXRvclJlZiwgV0tTdHJpbmdSZWYgc3RyaW5nCiAgICAgLy8gTk9URTogVGhpcyBkb2VzIG5vdCB1
c2UgU3RyaW5nSW1wbDo6Y3JlYXRlQ0ZTdHJpbmcoKSBzaW5jZSB0aGF0IGZ1bmN0aW9uCiAgICAg
Ly8gZXhwZWN0cyB0byBiZSBjYWxsZWQgb24gdGhlIHRocmVhZCBydW5uaW5nIFdlYkNvcmUuCiAg
ICAgaWYgKFdlYktpdDo6dG9JbXBsKHN0cmluZ1JlZiktPnN0cmluZygpLmlzOEJpdCgpKQotICAg
ICAgICByZXR1cm4gQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXMoYWxsb2NhdG9yUmVmLCByZWludGVy
cHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oV2ViS2l0Ojp0b0ltcGwoc3RyaW5nUmVmKS0+c3RyaW5n
KCkuY2hhcmFjdGVyczgoKSksIFdlYktpdDo6dG9JbXBsKHN0cmluZ1JlZiktPnN0cmluZygpLmxl
bmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgdHJ1ZSk7CisgICAgICAgIHJldHVy
biBDRlN0cmluZ0NyZWF0ZVdpdGhCeXRlcyhhbGxvY2F0b3JSZWYsIFdlYktpdDo6dG9JbXBsKHN0
cmluZ1JlZiktPnN0cmluZygpLmNoYXJhY3RlcnM4KCksIFdlYktpdDo6dG9JbXBsKHN0cmluZ1Jl
ZiktPnN0cmluZygpLmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgdHJ1ZSk7
CiAgICAgcmV0dXJuIENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoYWxsb2NhdG9yUmVmLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IFVuaUNoYXIqPihXZWJLaXQ6OnRvSW1wbChzdHJpbmdSZWYp
LT5zdHJpbmcoKS5jaGFyYWN0ZXJzMTYoKSksIFdlYktpdDo6dG9JbXBsKHN0cmluZ1JlZiktPnN0
cmluZygpLmxlbmd0aCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9jL2NmL1dLVVJMQ0YubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZi9XS1VSTENG
Lm1tCmluZGV4IDFkODU2ZjBkODFkYTc1MTBhMGY2Y2JlMzY0ZDJmZjU0OTVhNjc1YzAuLmFjNmQw
ODYzZjUzMDVjMDQ4Mzc3MjZmNGQ2MDBkNzFjZDE5MTE2NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9jL2NmL1dLVVJMQ0YubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL2MvY2YvV0tVUkxDRi5tbQpAQCAtNjcsNSArNjcsNSBAQCBDRlVSTFJlZiBXS1VSTENv
cHlDRlVSTChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3JSZWYsIFdLVVJMUmVmIFVSTFJlZikKICAg
ICAvLyBVVEYtOCB3aGljaCB1c2VzIGxlc3MgbWVtb3J5IGFuZCBpcyB3aGF0IFdlYktpdCBjbGll
bnRzIG1pZ2h0IGV4cGVjdC4KIAogICAgIENTdHJpbmcgYnVmZmVyID0gc3RyaW5nLnV0ZjgoKTsK
LSAgICByZXR1cm4gQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxscHRyLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oYnVmZmVyLmRhdGEoKSksIGJ1ZmZlci5sZW5ndGgo
KSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBudWxscHRyLCB0cnVlKTsKKyAgICByZXR1cm4gQ0ZV
UkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxscHRyLCBidWZmZXIuZGF0YUFzVUludDhQ
dHIoKSwgYnVmZmVyLmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIG51bGxwdHIsIHRy
dWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3Vy
Y2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCmluZGV4
IDk0NmFmNDdkZmI3ZTYxMWYxYWI0NDE3MzRhOWIwZTE0MTlmYmVkODEuLjBjMGYwOGZiZGU1NmE5
ZDQyZWM5Zjk2YmEzOGZiZTUxMjU1NmUxNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFy
ZWFibGVSZXNvdXJjZS5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
U2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcigpCiAKICNpZiBVU0UoQ0YpCiAg
ICAgYXV0byBkZWFsbG9jYXRvciA9IGNyZWF0ZVNoYXJlYWJsZVJlc291cmNlRGVhbGxvY2F0b3Io
dGhpcyk7Ci0gICAgYXV0byBjZkRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZVdpdGhCeXRlc05v
Q29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4o
ZGF0YSgpKSwgc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oc2l6ZSgpKSwgZGVhbGxvY2F0b3IuZ2V0KCkp
KTsKKyAgICBhdXRvIGNmRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGRhdGEoKSwgc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oc2l6ZSgp
KSwgZGVhbGxvY2F0b3IuZ2V0KCkpKTsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
Y2ZEYXRhLmdldCgpKTsKICNlbGlmIFVTRShHTElCKQogICAgIEdSZWZQdHI8R0J5dGVzPiBieXRl
cyA9IGFkb3B0R1JlZihnX2J5dGVzX25ld193aXRoX2ZyZWVfZnVuYyhkYXRhKCksIHNpemUoKSwg
W10odm9pZCogZGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVk
RGlzcGxheUxpc3RIYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlZERpc3BsYXlM
aXN0SGFuZGxlLmgKaW5kZXggNTg3ZDkzZTRmMTI1ZDQ3YzE2OTBlZGQwN2FjMmM3M2U3ZDc5ZjE2
OS4uY2I2YWZhYmIxNTVlNGIxMGQ3M2Y0OTBlNmM2OTYxZTYyZmRlYTBiMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9TaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5oCkBAIC00OCw3ICs0OCw3
IEBAIHB1YmxpYzoKICAgICBjb25zdCBTaGFyZWRNZW1vcnkmIHNoYXJlZE1lbW9yeSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2hhcmVkTWVtb3J5LmdldCgpOyB9CiAKICAgICBXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1f
aWRlbnRpZmllcjsgfQotICAgIHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiByZWludGVy
cHJldF9jYXN0PHVpbnQ4X3QqPihzaGFyZWRNZW1vcnkoKS5kYXRhKCkpOyB9CisgICAgdWludDhf
dCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ4X3QqPihzaGFyZWRNZW1v
cnkoKS5kYXRhKCkpOyB9CiAKICAgICB1aW50NjRfdCB1bnJlYWRCeXRlcygpCiAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3Qu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3QuY3Bw
CmluZGV4IDg1ZjIyM2NmYmFhMDFiOWU5ZjVkODIzMjE5YjBhOTAyOTEwNzI3YTkuLmY0NzQxNGU1
NzM2NTYzODYxMWRjMjUzN2YxMGNjMDQ3NTZmNzcyYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdC5jcHAKQEAgLTQ2LDcgKzQ2LDcg
QEAgV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3Q6On5XZWJDb21waWxlZENvbnRlbnRSdWxlTGlz
dCgpCiAKIGJvb2wgV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3Q6OmNvbmRpdGlvbnNBcHBseU9u
bHlUb0RvbWFpbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQzMl90Kj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obV9kYXRhLmRhdGEt
PmRhdGEoKSkgKyBtX2RhdGEuY29uZGl0aW9uc0FwcGx5T25seVRvRG9tYWluT2Zmc2V0KTsKKyAg
ICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4obV9kYXRhLmRhdGEtPmRhdGEoKSkgKyBtX2RhdGEuY29uZGl0aW9uc0Fw
cGx5T25seVRvRG9tYWluT2Zmc2V0KTsKIH0KIAogY29uc3QgV2ViQ29yZTo6Q29udGVudEV4dGVu
c2lvbnM6OkRGQUJ5dGVjb2RlKiBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdDo6ZmlsdGVyc1dp
dGhvdXRDb25kaXRpb25zQnl0ZWNvZGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2UuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0
aW9uUmVzcG9uc2UuY3BwCmluZGV4IGM3OTc2ZmY1MmVhOGUxNWFiNjgwYTU2M2U0MzEwODY4ZWNk
MzEwMGUuLmVlZWJkOWJkMDVmNTYzYWI0YjU2MzRmZjRhZmI2ZGQ4N2NjNGEwYjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvbkFzc2Vy
dGlvblJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vi
QXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgUmVm
UHRyPERhdGE+IFdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U6OnVzZXJIYW5kbGUo
KSBjb25zdAogICAgIFJlZlB0cjxBUEk6OkRhdGE+IGRhdGE7CiAgICAgaWYgKGF1dG8qIHVzZXJI
YW5kbGUgPSBtX3Jlc3BvbnNlLT51c2VySGFuZGxlKCkpIHsKICAgICAgICAgdXNlckhhbmRsZS0+
cmVmKCk7Ci0gICAgICAgIGRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKHJl
aW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KHVzZXJIYW5kbGUtPmRhdGEoKSksIHVzZXJI
YW5kbGUtPmJ5dGVMZW5ndGgoKSwgW10gKHVuc2lnbmVkIGNoYXIqLCBjb25zdCB2b2lkKiBkYXRh
KSB7CisgICAgICAgIGRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGNoYXIqPih1c2VySGFuZGxlLT5kYXRhKCkpLCB1c2VySGFuZGxlLT5i
eXRlTGVuZ3RoKCksIFtdICh1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9pZCogZGF0YSkgewogICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8QXJyYXlCdWZmZXIqPihjb25zdF9jYXN0PHZvaWQqPihkYXRh
KSktPmRlcmVmKCk7CiAgICAgICAgIH0sIHVzZXJIYW5kbGUpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IGI3YmQwOTg1NDgxY2VhODFmM2U5YzQ2
ZjhmZDU4YjJiNmMzZTcxZGMuLjcwMmVmYjI5OWE0MWIwMTNjODU2OTA1ZTllNmI4MDI2Mjc3MGFm
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtMjQxLDcg
KzI0MSw3IEBAIHN0YXRpYyBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YUZyb20oY29uc3QgU3RyaW5n
JiBzdHJpbmcpCiB7CiAgICAgaWYgKHN0cmluZy5pc051bGwoKSB8fCAhc3RyaW5nLmlzOEJpdCgp
KQogICAgICAgICByZXR1cm4geyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzdHJp
bmcuY2hhcmFjdGVyczE2KCkpLCBzdHJpbmcubGVuZ3RoKCkgKiBzaXplb2YoVUNoYXIpIH07Ci0g
ICAgcmV0dXJuIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oc3RyaW5nLmNoYXJh
Y3RlcnM4KCkpLCBzdHJpbmcubGVuZ3RoKCkgKiBzaXplb2YoTENoYXIpIH07CisgICAgcmV0dXJu
IHsgc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSAqIHNpemVvZihMQ2hhcikg
fTsKIH0KIAogc3RhdGljIHZvaWQgbG9hZFN0cmluZyhXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJp
bmdSZWYgc3RyaW5nUmVmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGJh
c2VVUkwsIFdLVHlwZVJlZiB1c2VyRGF0YVJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9SZWRpcmVjdFNPQXV0aG9yaXphdGlvblNl
c3Npb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24v
UmVkaXJlY3RTT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCmluZGV4IGZiZWY1NDE1ZTg2ZDcxZWMx
ZjdmMjE3MWY0YjYyOWJiNmNhMzA0ZWQuLjk4MzhmNmExMTBkOTFmMDU0ZmUyODQ1OGU4NmVhM2Nm
ZTcwNWVjZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0
aG9yaXphdGlvbi9SZWRpcmVjdFNPQXV0aG9yaXphdGlvblNlc3Npb24ubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1JlZGlyZWN0U09BdXRob3Jp
emF0aW9uU2Vzc2lvbi5tbQpAQCAtNzcsNyArNzcsNyBAQCB2b2lkIFJlZGlyZWN0U09BdXRob3Jp
emF0aW9uU2Vzc2lvbjo6Y29tcGxldGVJbnRlcm5hbChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZQogICAgICAgICBpZiAoIW5hdmlnYXRpb25BY3Rpb24tPmlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJl
KCkpIHsKICAgICAgICAgICAgIHBhZ2UtPnNldFNob3VsZFN1cHByZXNzU09BdXRob3JpemF0aW9u
SW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uKCk7CiAgICAgICAgICAgICBhdXRvIGh0bWwg
PSBtYWtlU3RyaW5nKCI8c2NyaXB0PmxvY2F0aW9uID0gJyIsIHJlc3BvbnNlLmh0dHBIZWFkZXJG
aWVsZHMoKS5nZXQoSFRUUEhlYWRlck5hbWU6OkxvY2F0aW9uKSwgIic8L3NjcmlwdD4iKS51dGY4
KCk7Ci0gICAgICAgICAgICBhdXRvIGRhdGEgPSBJUEM6OkRhdGFSZWZlcmVuY2UocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaHRtbC5kYXRhKCkpLCBodG1sLmxlbmd0aCgpKTsKKyAg
ICAgICAgICAgIGF1dG8gZGF0YSA9IElQQzo6RGF0YVJlZmVyZW5jZShodG1sLmRhdGFBc1VJbnQ4
UHRyKCksIGh0bWwubGVuZ3RoKCkpOwogICAgICAgICAgICAgcGFnZS0+bG9hZERhdGEoZGF0YSwg
InRleHQvaHRtbCJfcywgIlVURi04Il9zLCBuYXZpZ2F0aW9uQWN0aW9uLT5yZXF1ZXN0KCkudXJs
KCkuc3RyaW5nKCksIG51bGxwdHIsIG5hdmlnYXRpb25BY3Rpb24tPnNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3koKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVj
dG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQv
UmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCBlYjg1NTllMGMzYzNiYTZkODRkMmYwYTEy
YmFhYjY0MjJhNzU1MDU3Li4wNjRkYWU4NDUyNjQwYjAwYmY2OWE3NjM0ODY3ZjYwNzg3ZGFiYzYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0L1Jl
bW90ZUluc3BlY3RvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwCkBAIC0xMjQsNyArMTI0LDcg
QEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JDbGllbnQ6OnNlbmRXZWJJbnNwZWN0b3JFdmVudChjb25z
dCBTdHJpbmcmIGV2ZW50KQogICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwogICAgIEFTU0VS
VChtX2Nvbm5lY3Rpb25JRCk7CiAgICAgYXV0byBtZXNzYWdlID0gZXZlbnQudXRmOCgpOwotICAg
IHNlbmQobV9jb25uZWN0aW9uSUQudmFsdWUoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4obWVzc2FnZS5kYXRhKCkpLCBtZXNzYWdlLmxlbmd0aCgpKTsKKyAgICBzZW5kKG1fY29u
bmVjdGlvbklELnZhbHVlKCksIG1lc3NhZ2UuZGF0YUFzVUludDhQdHIoKSwgbWVzc2FnZS5sZW5n
dGgoKSk7CiB9CiAKIEhhc2hNYXA8U3RyaW5nLCBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckNv
bm5lY3Rpb25DbGllbnQ6OkNhbGxIYW5kbGVyPiYgUmVtb3RlSW5zcGVjdG9yQ2xpZW50OjpkaXNw
YXRjaE1hcCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlNvY2tldENoYW5uZWwuY3BwCmluZGV4IGRkNTZlNzRlZWVkY2NhMzAzMDI2YzI5NTMzYWY4M2E2
OTc3ZTE2YjQuLjU2MTI2OTRmY2EyMTI2NmI4Yjc2YmVhZTlmOGNmMDBiYmRlOTcyOWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5u
ZWwuY3BwCkBAIC01Niw4ICs1Niw4IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6bm90aWZ5U2Vu
ZEZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUgb3BDb2RlLCBjb25zdCB1aW50CiBOZXR3b3Jr
U2VuZFF1ZXVlIFdlYlNvY2tldENoYW5uZWw6OmNyZWF0ZU1lc3NhZ2VRdWV1ZShEb2N1bWVudCYg
ZG9jdW1lbnQsIFdlYlNvY2tldENoYW5uZWwmIGNoYW5uZWwpCiB7CiAgICAgcmV0dXJuIHsgZG9j
dW1lbnQsIFsmY2hhbm5lbF0oYXV0byYgdXRmOFN0cmluZykgewotICAgICAgICBjaGFubmVsLm5v
dGlmeVNlbmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlOjpPcENvZGVUZXh0LCByZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih1dGY4U3RyaW5nLmRhdGEoKSksIHV0ZjhTdHJpbmcu
bGVuZ3RoKCkpOwotICAgICAgICBjaGFubmVsLnNlbmRNZXNzYWdlKE1lc3NhZ2VzOjpOZXR3b3Jr
U29ja2V0Q2hhbm5lbDo6U2VuZFN0cmluZyB7IElQQzo6RGF0YVJlZmVyZW5jZSB7IHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHV0ZjhTdHJpbmcuZGF0YSgpKSwgdXRmOFN0cmluZy5s
ZW5ndGgoKSB9IH0sIHV0ZjhTdHJpbmcubGVuZ3RoKCkpOworICAgICAgICBjaGFubmVsLm5vdGlm
eVNlbmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlOjpPcENvZGVUZXh0LCB1dGY4U3RyaW5n
LmRhdGFBc1VJbnQ4UHRyKCksIHV0ZjhTdHJpbmcubGVuZ3RoKCkpOworICAgICAgICBjaGFubmVs
LnNlbmRNZXNzYWdlKE1lc3NhZ2VzOjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6U2VuZFN0cmluZyB7
IElQQzo6RGF0YVJlZmVyZW5jZSB7IHV0ZjhTdHJpbmcuZGF0YUFzVUludDhQdHIoKSwgdXRmOFN0
cmluZy5sZW5ndGgoKSB9IH0sIHV0ZjhTdHJpbmcubGVuZ3RoKCkpOwogICAgIH0sIFsmY2hhbm5l
bF0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGJ5dGVMZW5ndGgpIHsKICAgICAgICAgY2hh
bm5lbC5ub3RpZnlTZW5kRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZTo6T3BDb2RlQmluYXJ5
LCBkYXRhLCBieXRlTGVuZ3RoKTsKICAgICAgICAgY2hhbm5lbC5zZW5kTWVzc2FnZShNZXNzYWdl
czo6TmV0d29ya1NvY2tldENoYW5uZWw6OlNlbmREYXRhIHsgSVBDOjpEYXRhUmVmZXJlbmNlIHsg
ZGF0YSwgYnl0ZUxlbmd0aCB9IH0sIGJ5dGVMZW5ndGgpOwpAQCAtMjk1LDcgKzI5NSw3IEBAIHZv
aWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkUmVjZWl2ZVRleHQoU3RyaW5nJiYgbWVzc2FnZSkKICAg
ICB9CiAKICAgICBhdXRvIHV0ZjhNZXNzYWdlID0gbWVzc2FnZS51dGY4KCk7Ci0gICAgbV9pbnNw
ZWN0b3IuZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lKG1fZG9jdW1lbnQuZ2V0KCksIGNyZWF0ZVdl
YlNvY2tldEZyYW1lRm9yV2ViSW5zcGVjdG9yKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KHV0ZjhNZXNzYWdlLmRhdGEoKSksIHV0ZjhNZXNzYWdlLmxlbmd0aCgpLCBXZWJTb2NrZXRG
cmFtZTo6T3BDb2RlOjpPcENvZGVUZXh0KSk7CisgICAgbV9pbnNwZWN0b3IuZGlkUmVjZWl2ZVdl
YlNvY2tldEZyYW1lKG1fZG9jdW1lbnQuZ2V0KCksIGNyZWF0ZVdlYlNvY2tldEZyYW1lRm9yV2Vi
SW5zcGVjdG9yKHV0ZjhNZXNzYWdlLmRhdGFBc1VJbnQ4UHRyKCksIHV0ZjhNZXNzYWdlLmxlbmd0
aCgpLCBXZWJTb2NrZXRGcmFtZTo6T3BDb2RlOjpPcENvZGVUZXh0KSk7CiAKICAgICBtX2NsaWVu
dC0+ZGlkUmVjZWl2ZU1lc3NhZ2UobWVzc2FnZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9SVENEYXRhQ2hh
bm5lbFJlbW90ZU1hbmFnZXIuY3BwCmluZGV4IDdlYjEwNzg3N2UyYjJhMGE4OTk0MzY3NDIyNGZk
MWIyODAwNGNhNDEuLjVjMTE2OTFlOWZmZTYzZmM1ZGQ3MjU1NjdhMjkyZTY0MTM3N2EyOTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9SVENEYXRh
Q2hhbm5lbFJlbW90ZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL3dlYnJ0Yy9SVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIuY3BwCkBAIC0xMjMsNyAr
MTIzLDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OnNlbmREYXRhKFdlYkNv
cmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBzb3UKICAgICAgICAgaWYgKGlzUmF3KQogICAg
ICAgICAgICAgc291cmNlLT5zZW5kUmF3RGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwog
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBzb3VyY2UtPnNlbmRTdHJpbmdEYXRhKENTdHJpbmco
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSkp
OworICAgICAgICAgICAgc291cmNlLT5zZW5kU3RyaW5nRGF0YShDU3RyaW5nKGRhdGEuZGF0YSgp
LCBkYXRhLnNpemUoKSkpOwogICAgIH0KIH0KIApAQCAtMjI3LDcgKzIyNyw3IEBAIHZvaWQgUlRD
RGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpSZW1vdGVTb3VyY2VDb25uZWN0aW9uOjpkaWRDaGFu
Z2VSZWFkeVN0YXRlKFdlCiB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6UmVtb3Rl
U291cmNlQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZVN0cmluZ0RhdGEoV2ViQ29yZTo6UlRDRGF0YUNo
YW5uZWxJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAg
IGF1dG8gdGV4dCA9IHN0cmluZy51dGY4KCk7Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3Nh
Z2VzOjpSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94eTo6UmVjZWl2ZURhdGEgeyBpZGVu
dGlmaWVyLCBmYWxzZSwgSVBDOjpEYXRhUmVmZXJlbmNlIHsgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1bnNpZ25lZCBjaGFyKj4odGV4dC5kYXRhKCkpLCB0ZXh0Lmxlbmd0aCgpIH0gfSwgMCk7Cisg
ICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFn
ZXJQcm94eTo6UmVjZWl2ZURhdGEgeyBpZGVudGlmaWVyLCBmYWxzZSwgSVBDOjpEYXRhUmVmZXJl
bmNlIHsgdGV4dC5kYXRhQXNVSW50OFB0cigpLCB0ZXh0Lmxlbmd0aCgpIH0gfSwgMCk7CiB9CiAK
IHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpSZW1vdGVTb3VyY2VDb25uZWN0aW9u
OjpkaWRSZWNlaXZlUmF3RGF0YShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIgaWRl
bnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0
cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpblN0cmVhbS5jcHAKaW5kZXggZGJmYjhiNmI4MTFiMzY0NzRhNWRlNmJiNmE3ZjM4
YzViMDI1MjA2Yi4uZjI3MTdlYjE2MzZjOTAxOGFmNTA2MzkzY2U5NDY1Y2Y3MGVkYzU4YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW5TdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIHZv
aWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OnNlbmRKYXZhU2NyaXB0U3RyZWFtKGNvbnN0IFN0cmlu
ZyYgcmVzdWx0KQogICAgIGlmICghc3RhcnQobV9yZXF1ZXN0VVJMU3RyaW5nLCByZXN1bHRDU3Ry
aW5nLmxlbmd0aCgpLCAwLCAidGV4dC9wbGFpbiIsICIiKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgZGVsaXZlckRhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocmVzdWx0Q1N0
cmluZy5kYXRhKCkpLCByZXN1bHRDU3RyaW5nLmxlbmd0aCgpKTsKKyAgICBkZWxpdmVyRGF0YShy
ZXN1bHRDU3RyaW5nLmRhdGFBc1VJbnQ4UHRyKCksIHJlc3VsdENTdHJpbmcubGVuZ3RoKCkpOwog
ICAgIHN0b3AoTlBSRVNfRE9ORSk7CiB9CiAK
</data>
<flag name="commit-queue"
          id="452448"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430845</attachid>
            <date>2021-06-08 08:16:35 -0700</date>
            <delta_ts>2021-06-08 11:59:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226743-20210608081634.patch</filename>
            <type>text/plain</type>
            <size>84789</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA0ZmY3ZmVmMzU4NzdhYzYzZDI4NDZk
OTI1ZTdhOGU5MzhhYWViZTIuLmMxODgxYTdiYjM5NTdhMmY1YzE3N2FkZDJlOGY2YTg3NTIzMmRi
NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMjEtMDYtMDcgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1Y2UgdXNlIG9mIHJlaW50ZXJwcmV0X2Nhc3Q8PiBp
biB0aGUgY29kZWJhc2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNjc0MworCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAg
ICAgICogd3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmNwcDoKKyAgICAgICAgKiB3
dGYvRmFzdE1hbGxvYy5oOgorICAgICAgICAoV1RGOjpGYXN0QWxsb2NhdG9yOjphbGxvY2F0ZSk6
CisgICAgICAgICogd3RmL1NIQTEuaDoKKyAgICAgICAgKFdURjo6U0hBMTo6YWRkQnl0ZXMpOgor
ICAgICAgICAqIHd0Zi9TdGFja0NoZWNrLmg6CisgICAgICAgIChXVEY6OlN0YWNrQ2hlY2s6OlNj
b3BlOjpTY29wZSk6CisgICAgICAgIChXVEY6OlN0YWNrQ2hlY2s6OlN0YWNrQ2hlY2spOgorICAg
ICAgICAqIHd0Zi9VUkxIZWxwZXJzLmNwcDoKKyAgICAgICAgKFdURjo6VVJMSGVscGVyczo6dXNl
clZpc2libGVVUkwpOgorICAgICAgICAqIHd0Zi9VUkxQYXJzZXIuY3BwOgorICAgICAgICAoV1RG
OjpVUkxQYXJzZXI6OmZvcm1VUkxEZWNvZGUpOgorICAgICAgICAqIHd0Zi9jZi9VUkxDRi5jcHA6
CisgICAgICAgIChXVEY6OlVSTDo6Y3JlYXRlQ0ZVUkwgY29uc3QpOgorICAgICAgICAqIHd0Zi9j
b2NvYS9VUkxDb2NvYS5tbToKKyAgICAgICAgKFdURjo6VVJMOjpjcmVhdGVDRlVSTCBjb25zdCk6
CisgICAgICAgICogd3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuY3BwOgorICAgICAg
ICAoV1RGOjpQZXJzaXN0ZW5jZTo6Q29kZXI8Q1N0cmluZz46OmVuY29kZSk6CisgICAgICAgIChX
VEY6OlBlcnNpc3RlbmNlOjpDb2RlcjxTdHJpbmc+OjplbmNvZGUpOgorICAgICAgICAqIHd0Zi90
ZXh0L0NTdHJpbmcuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuY3BwOgorICAgICAg
ICAoV1RGOjpTdHJpbmc6OmxhdGluMSBjb25zdCk6CisgICAgICAgICogd3RmL3RleHQvY2YvU3Ry
aW5nSW1wbENGLmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Y3JlYXRlQ0ZTdHJpbmcp
OgorCiAyMDIxLTA2LTA3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgQWRvcHQgU2VjVHJ1c3RHZXRDZXJ0aWZpY2F0ZUF0SW5kZXggcmVwbGFj
ZW1lbnQgd2hlcmUgYXZhaWxhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTk4Mjk3ZTdlMzM4ZjExYTY2OTRj
MWI0M2Y3Zjc1NDA4ZDE0ZTc3MS4uNWQyYzA3ZjhjNWY2NGM5OWZlNWQ4NGFiOTU5ZDIxNzdmMTNl
YTE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMSBAQAorMjAyMS0wNi0wNyAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSB1c2Ugb2YgcmVpbnRlcnBy
ZXRfY2FzdDw+IGluIHRoZSBjb2RlYmFzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NzQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCisKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1T
ZXNzaW9uQ2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkNsZWFyS2V5
OjpnZW5lcmF0ZUtleVJlcXVlc3QpOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6dGFrZSk6CisgICAgICAgICogTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGZXRj
aEJvZHlDb25zdW1lcjo6cmVzb2x2ZSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25z
dW1lcjo6dGFrZUFzQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6
dGFrZUFzVGV4dCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bFJlbW90ZUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxSZW1v
dGVIYW5kbGVyOjpyZWFkeVRvU2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpSVENEYXRhQ2hhbm5l
bFJlbW90ZUhhbmRsZXI6OnNlbmRTdHJpbmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0Rh
dGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6c2VuZFJhd0RhdGEpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjb3B5QnVzRGF0YSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50
aWNhdG9yUmVzcG9uc2VEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjplbmNvZGVBcnJheUJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpkZWNvZGVBcnJheUJ1ZmZlcik6CisgICAgICAgICogTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU29ja2V0Q2hhbm5lbDo6c3RhcnRDbG9zaW5nSGFuZHNoYWtlKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NPdXRnb2luZ0ZyYW1lUXVldWUpOgorICAgICAg
ICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpnZXRFeHBlY3RlZFdlYlNvY2tldEFjY2VwdCk6
CisgICAgICAgIChXZWJDb3JlOjpoZWFkZXJIYXNWYWxpZEhUVFBWZXJzaW9uKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
bG9uZURlc2VyaWFsaXplcjo6cmVhZFN0cmluZyk6CisgICAgICAgICogY29udGVudGV4dGVuc2lv
bnMvU2VyaWFsaXplZE5GQS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9u
czo6U2VyaWFsaXplZE5GQTo6cG9pbnRlckF0T2Zmc2V0SW5GaWxlIGNvbnN0KToKKyAgICAgICAg
KiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYXNoUG9pbnRlcik6CisgICAgICAg
ICogZG9tL1RleHRFbmNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRFbmNvZGVyOjpl
bmNvZGUgY29uc3QpOgorICAgICAgICAqIGRvbS9UZXh0RW5jb2RlclN0cmVhbUVuY29kZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dEVuY29kZXJTdHJlYW1FbmNvZGVyOjpmbHVzaCk6Cisg
ICAgICAgICogZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAg
IChXZWJDb3JlOjpzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKToKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnRleEltYWdlQXJyYXlCdWZmZXJWaWV3SGVscGVyKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmFkZFN0cmluZ1RvU0hBMSk6CisgICAgICAgICogbG9hZGVyL1RleHRSZXNvdXJjZURlY29k
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21V
VEY4KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFNjcmlwdDo6c2NyaXB0KToKKyAgICAgICAgKiBwYWdlL2NvY29hL1Jl
c291cmNlVXNhZ2VPdmVybGF5Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpzaG93VGV4dCk6
CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6Om5leHRDaHVuayk6CisgICAgICAg
ICogcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVy
aWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXllZEVuY29k
ZXJHZW5lcmljOjplbmNvZGVTdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dEdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
OjpwYWNrSW1hZ2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ckJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpnZXRQ
aXhlbEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6
OnB1dFBpeGVsQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJh
bmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzTmF0aXZlU2FtcGxlcyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25D
Ri5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Y6OmdlbmVy
YXRlS2V5UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1TZXNzaW9uQVZGb3VuZGF0aW9u
Q0Y6OnVwZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2Nm
L0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluYmFu
ZFRleHRUcmFja1ByaXZhdGVBVkNGOjpyZWFkTmF0aXZlU2FtcGxlQnVmZmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyOjpjcmVhdGVJdGVt
QnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxh
eUxpc3Q6Okl0ZXJhdG9yOjp1cGRhdGVDdXJyZW50SXRlbSk6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmg6CisgICAgICAgIChHSUZJbWFnZVJl
YWRlcjo6ZGF0YSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRv
ck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0
cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGRTdHJpbmdUb1NIQTEpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZvcm1EYXRhQnVpbGRlcjo6ZW5jb2RlU3RyaW5nQXNGb3JtRGF0YSk6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U29ja2V0U3RyZWFtSGFuZGxlOjpzZW5kSGFuZHNoYWtlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaDoKKyAgICAgICAgKFdlYkNv
cmU6Omh0dHBIZWFkZXJWYWx1ZVVzaW5nU3VpdGFibGVFbmNvZGluZyk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6cGxhdGZvcm1TZW5kSW50ZXJuYWwp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXJsQ2FjaGVFbnRyeTo6Z2VuZXJhdGVCYXNlRmlsZW5hbWUpOgor
ICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1FMaXRlU3RhdGVtZW50Ojpjb2x1bW5CbG9iVmlldyk6CisgICAgICAgICogdGVzdGlu
Zy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzYW5pdGl6
ZVJlc3BvbnNlIGNvbnN0KToKKwogMjAyMS0wNi0wOCAgQWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0xGQ11bVEZDXSBBZGQgaW5pdGlhbCBwZXJjZW50IHZhbHVlIHN1
cHBvcnQgZm9yIGNvbHVtbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cKaW5kZXggY2IxNmNmYmU4ZGViNTEwMDk4ZTMy
MGExNGQ5YjhmZTVmNWE2YWQxOC4uYzAwMWRlMDA1YzA2MDBmMjU5ZWRkZGY1MjNjZDg5MGQ2YTY0
OTkwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkRyaXZlci9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wNi0wNyAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSB1c2Ugb2YgcmVpbnRl
cnByZXRfY2FzdDw+IGluIHRoZSBjb2RlYmFzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NzQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
QWRsZXIuCisKKyAgICAgICAgKiBzb2NrZXQvSFRUUFBhcnNlci5jcHA6CisgICAgICAgIChXZWJE
cml2ZXI6OkhUVFBQYXJzZXI6OnJlYWRMaW5lKToKKyAgICAgICAgKiBzb2NrZXQvU2Vzc2lvbkhv
c3RTb2NrZXQuY3BwOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uSG9zdDo6c2VuZFdlYklu
c3BlY3RvckV2ZW50KToKKwogMjAyMS0wNi0wMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVtb3ZlIDx3dGYvT3B0aW9uYWwuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMTFkNWJh
OGMyZjVlNjczNTQzYjYzMmJlNWRkYTQ5OWY4MGUwM2UwYi4uYzgzMmM2YjMxNjYxZTFiYWM2MDlh
MjBhNDUzOWQ5MGY5NDMyMzQ1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MiBAQAorMjAyMS0wNi0w
NyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVjZSB1c2Ug
b2YgcmVpbnRlcnByZXRfY2FzdDw+IGluIHRoZSBjb2RlYmFzZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NzQzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5
OjptZWRpYVBsYXllckluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKToKKyAgICAgICAgKiBH
UFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlVGV4dFRyYWNrUHJveHk6OmFkZERhdGFDdWUpOgorICAgICAgICAqIEdQVVByb2Nl
c3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVNZWRpYVJlY29yZGVyOjpmZXRjaERhdGEpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZURhdGFDdXJsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nh
Y2hlOjpEYXRhOjphcHBseSBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlS2V5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpoYXNo
U3RyaW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYktpdERpcmVjdG9yeUlu
cHV0U3RyZWFtLmNwcDoKKyAgICAgICAgKHdlYmtpdERpcmVjdG9yeUlucHV0U3RyZWFtUmVhZCk6
CisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxDU3RyaW5nPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxTdHJpbmc+OjplbmNvZGUpOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9jZi9XS1N0
cmluZ0NGLm1tOgorICAgICAgICAoV0tTdHJpbmdDb3B5Q0ZTdHJpbmcpOgorICAgICAgICAqIFNo
YXJlZC9BUEkvYy9jZi9XS1VSTENGLm1tOgorICAgICAgICAoV0tVUkxDb3B5Q0ZVUkwpOgorICAg
ICAgICAqIFNoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNo
YXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFyZWRCdWZmZXIpOgorICAgICAgICAqIFNoYXJlZC9T
aGFyZWREaXNwbGF5TGlzdEhhbmRsZS5oOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWREaXNwbGF5
TGlzdEhhbmRsZTo6ZGF0YSBjb25zdCk6CisgICAgICAgICogU2hhcmVkL1dlYkNvbXBpbGVkQ29u
dGVudFJ1bGVMaXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcGlsZWRDb250ZW50UnVs
ZUxpc3Q6OmNvbmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbiBjb25zdCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlLmNwcDoKKyAg
ICAgICAgKEFQSTo6V2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZTo6dXNlckhhbmRs
ZSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAg
IChkYXRhRnJvbSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9S
ZWRpcmVjdFNPQXV0aG9yaXphdGlvblNlc3Npb24ubW06CisgICAgICAgIChXZWJLaXQ6OlJlZGly
ZWN0U09BdXRob3JpemF0aW9uU2Vzc2lvbjo6Y29tcGxldGVJbnRlcm5hbCk6CisgICAgICAgICog
VUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yQ2xpZW50OjpzZW5kV2ViSW5zcGVjdG9yRXZl
bnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0Q2hhbm5lbDo6Y3JlYXRlTWVzc2FnZVF1ZXVlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0Q2hhbm5lbDo6ZGlkUmVjZWl2ZVRleHQpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5h
Z2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpz
ZW5kRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6
UmVtb3RlU291cmNlQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZVN0cmluZ0RhdGEpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luU3RyZWFtOjpzZW5kSmF2YVNjcmlwdFN0cmVh
bSk6CisKIDIwMjEtMDYtMDggIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbTVNFXSBSZXdvcmsgaGFuZGxpbmcgb2YgU291cmNlQnVmZmVyJ3MgYnVmZmVyIGZ1
bGwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51
bWJlci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5j
cHAKaW5kZXggY2JhYjk2NWU5MjNiYTQzZjlhNTM5ODY2ZWQxNjNjZDRmNDI2YWM5Ny4uZGY4MjU4
NDI1ZDkzZTAwNThjODRmZTdjZWMyZWUwNmIyNGM2N2IxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuY3BwCisrKyBiL1NvdXJjZS9XVEYv
d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmNwcApAQCAtMTQ5LDcgKzE0OSw3IEBA
IHZvaWQgQVJDNFJhbmRvbU51bWJlckdlbmVyYXRvcjo6cmFuZG9tVmFsdWVzKHZvaWQqIGJ1ZmZl
ciwgc2l6ZV90IGxlbmd0aCkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKLSAg
ICB1bnNpZ25lZCBjaGFyKiByZXN1bHQgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIq
PihidWZmZXIpOworICAgIGF1dG8gcmVzdWx0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+
KGJ1ZmZlcik7CiAgICAgc3RpcklmTmVlZGVkKCk7CiAgICAgd2hpbGUgKGxlbmd0aC0tKSB7CiAg
ICAgICAgIG1fY291bnQtLTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2Mu
aCBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RNYWxsb2MuaAppbmRleCAwMjRmMWI5MWNiOWFhMWQwNGE4
Y2U2NDRmMWJmNWRmZmYxYTVjNGQ2Li43M2Q5NjliNDIwNTZmNjFjYmY1NDAwYjFmYTVjODdiYjdk
OGQ2ZjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0TWFsbG9jLmgKKysrIGIvU291
cmNlL1dURi93dGYvRmFzdE1hbGxvYy5oCkBAIC0yMDMsNyArMjAzLDcgQEAgcHVibGljOgogCiAg
ICAgVCogYWxsb2NhdGUoc2l6ZV90IGNvdW50KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8VCo+KGZhc3RNYWxsb2Moc2l6ZW9mKFQpICogY291bnQpKTsKKyAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PFQqPihmYXN0TWFsbG9jKHNpemVvZihUKSAqIGNvdW50KSk7CiAg
ICAgfQogCiAgICAgdm9pZCBkZWFsbG9jYXRlKFQqIHBvaW50ZXIsIHNpemVfdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1NIQTEuaCBiL1NvdXJjZS9XVEYvd3RmL1NIQTEuaAppbmRleCAy
YzdkOWEzNjRlMTU5ZTRkZDA0NTlmNDcyMDVjODNkY2QwNjMyOWJmLi4yMDY5MjMyNGU1MzgzY2I2
ODcyNTAwMTg5NmZkNzdhYzk1OTJhZDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TSEEx
LmgKKysrIGIvU291cmNlL1dURi93dGYvU0hBMS5oCkBAIC01MSw4ICs1MSw3IEBAIHB1YmxpYzoK
ICAgICB9CiAgICAgdm9pZCBhZGRCeXRlcyhjb25zdCBDU3RyaW5nJiBpbnB1dCkKICAgICB7Ci0g
ICAgICAgIGNvbnN0IGNoYXIqIHN0cmluZyA9IGlucHV0LmRhdGEoKTsKLSAgICAgICAgYWRkQnl0
ZXMocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oc3RyaW5nKSwgaW5wdXQubGVuZ3Ro
KCkpOworICAgICAgICBhZGRCeXRlcyhpbnB1dC5kYXRhQXNVSW50OFB0cigpLCBpbnB1dC5sZW5n
dGgoKSk7CiAgICAgfQogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFkZEJ5dGVzKGNvbnN0
IHVpbnQ4X3QqIGlucHV0LCBzaXplX3QgbGVuZ3RoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvU3RhY2tDaGVjay5oIGIvU291cmNlL1dURi93dGYvU3RhY2tDaGVjay5oCmluZGV4IDlj
NzI3ODYyYzA5ZmYxMDM5YTM3NzcyYjJkNjM2OGE0ZDRjYjQ0MTEuLmExOTJmYzcxZTI1ODg2YmJj
NjIwZGI3YWU1Y2Y3ZTUwYjJiODY0YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1N0YWNr
Q2hlY2suaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TdGFja0NoZWNrLmgKQEAgLTU3LDcgKzU3LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgLy8gdGhlbiB3ZSBlaXRoZXIgbmVlZCB0bzoKICAgICAg
ICAgICAgIC8vIDEuIGJyZWFrIHRoZSBpbnRlcnZhbCBpbnRvIHNtYWxsZXIgcGllY2VzIChpLmUu
IGluc2VydCBtb3JlIGNoZWNrcyksIG9yCiAgICAgICAgICAgICAvLyAyLiB1c2UgYSBsYXJnZXIg
cmVzZXJ2ZWRab25lIHNpemUuCi0gICAgICAgICAgICB1aW50OF90KiBjdXJyZW50U3RhY2tDaGVj
a3BvaW50ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oY3VycmVudFN0YWNrUG9pbnRlcigp
KTsKKyAgICAgICAgICAgIHVpbnQ4X3QqIGN1cnJlbnRTdGFja0NoZWNrcG9pbnQgPSBzdGF0aWNf
Y2FzdDx1aW50OF90Kj4oY3VycmVudFN0YWNrUG9pbnRlcigpKTsKICAgICAgICAgICAgIHVpbnQ4
X3QqIHByZXZpb3VzU3RhY2tDaGVja3BvaW50ID0gbV9jaGVja2VyLm1fbGFzdFN0YWNrQ2hlY2tw
b2ludDsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHByZXZpb3VzU3RhY2tDaGVja3BvaW50
IC0gY3VycmVudFN0YWNrQ2hlY2twb2ludCA+IDApOwogICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQocHJldmlvdXNTdGFja0NoZWNrcG9pbnQgLSBjdXJyZW50U3RhY2tDaGVja3BvaW50IDwgc3Rh
dGljX2Nhc3Q8cHRyZGlmZl90PihtX2NoZWNrZXIubV9yZXNlcnZlZFpvbmUpKTsKQEAgLTg3LDcg
Kzg3LDcgQEAgcHVibGljOgogICAgICAgICA6IG1fc3RhY2tMaW1pdChib3VuZHMucmVjdXJzaW9u
TGltaXQobWluUmVzZXJ2ZWRab25lKSkKICNpZiBWRVJJRllfU1RBQ0tfQ0hFQ0tfUkVTRVJWRURf
Wk9ORV9TSVpFCiAgICAgICAgICwgbV9vd25lclRocmVhZCgmVGhyZWFkOjpjdXJyZW50KCkpCi0g
ICAgICAgICwgbV9sYXN0U3RhY2tDaGVja3BvaW50KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+
KGN1cnJlbnRTdGFja1BvaW50ZXIoKSkpCisgICAgICAgICwgbV9sYXN0U3RhY2tDaGVja3BvaW50
KHN0YXRpY19jYXN0PHVpbnQ4X3QqPihjdXJyZW50U3RhY2tQb2ludGVyKCkpKQogICAgICAgICAs
IG1fcmVzZXJ2ZWRab25lKG1pblJlc2VydmVkWm9uZSkKICNlbmRpZgogICAgIHsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvVVJMSGVscGVycy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9VUkxI
ZWxwZXJzLmNwcAppbmRleCA5YTlkMDYwMTNlNzU1Y2VjZDhhZmI4YjI3ZjA0NjkzZjIxZGQwYzBh
Li4zZDI4YTI1M2IzYzViMjA4OGYxNDZmNDkxNGE3OTNmNzQ5YWRlMTg3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9VUkxIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VUkxIZWxw
ZXJzLmNwcApAQCAtODIyLDcgKzgyMiw3IEBAIHN0YXRpYyBTdHJpbmcgZXNjYXBlVW5zYWZlQ2hh
cmFjdGVycyhjb25zdCBTdHJpbmcmIHNvdXJjZUJ1ZmZlcikKIAogU3RyaW5nIHVzZXJWaXNpYmxl
VVJMKGNvbnN0IENTdHJpbmcmIHVybCkKIHsKLSAgICBhdXRvKiBiZWZvcmUgPSByZWludGVycHJl
dF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPih1cmwuZGF0YSgpKTsKKyAgICBhdXRvKiBiZWZv
cmUgPSB1cmwuZGF0YUFzVUludDhQdHIoKTsKICAgICBpbnQgbGVuZ3RoID0gdXJsLmxlbmd0aCgp
OwogCiAgICAgaWYgKCFsZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VUkxQYXJz
ZXIuY3BwIGIvU291cmNlL1dURi93dGYvVVJMUGFyc2VyLmNwcAppbmRleCAyOTM2OWEyYTMxZWQw
NGFiZWUwZGQ2ZmY5OGQyYjI2ZDA1NTYwOGRmLi4wMDY3OWFlNDljZTU4YjllNGM2NDBkOGMzNTg4
MjVjOWVlOTFlMDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL1VSTFBhcnNlci5jcHAKQEAgLTI3OTIsNyArMjc5Miw3IEBAIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPiBVUkxQYXJzZXI6OmZvcm1VUkxEZWNvZGUoU3RyaW5nVmlldyBp
bnB1dCkKICAgICBhdXRvIHV0ZjggPSBpbnB1dC51dGY4KFN0cmljdENvbnZlcnNpb24pOwogICAg
IGlmICh1dGY4LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGF1
dG8gcGVyY2VudERlY29kZWQgPSBwZXJjZW50RGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
TENoYXIqPih1dGY4LmRhdGEoKSksIHV0ZjgubGVuZ3RoKCkpOworICAgIGF1dG8gcGVyY2VudERl
Y29kZWQgPSBwZXJjZW50RGVjb2RlKHV0ZjguZGF0YUFzVUludDhQdHIoKSwgdXRmOC5sZW5ndGgo
KSk7CiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjhSZXBsYWNpbmdJbnZhbGlkU2VxdWVuY2Vz
KHBlcmNlbnREZWNvZGVkLmRhdGEoKSwgcGVyY2VudERlY29kZWQuc2l6ZSgpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvY2YvVVJMQ0YuY3BwIGIvU291cmNlL1dURi93dGYvY2Yv
VVJMQ0YuY3BwCmluZGV4IDE0M2RjODU2NjJmNGU3YWQzMzIyNmMzMzRmZmJhYTVkNGVjZmY4ZTku
LmVkNTE1YzA4MDg5OTAwZmY4YzUyZGViNzhlMGU3M2RlZTQ4N2ZhM2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL2NmL1VSTENGLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jZi9VUkxDRi5j
cHAKQEAgLTUyLDEwICs1MiwxMCBAQCBSZXRhaW5QdHI8Q0ZVUkxSZWY+IFVSTDo6Y3JlYXRlQ0ZV
UkwoKSBjb25zdAogewogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gY2ZVUkw7CiAgICAgaWYgKExJ
S0VMWShtX3N0cmluZy5pczhCaXQoKSAmJiBtX3N0cmluZy5pc0FsbEFTQ0lJKCkpKQotICAgICAg
ICBjZlVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxscHRy
LCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4obV9zdHJpbmcuY2hhcmFjdGVyczgoKSks
IG1fc3RyaW5nLmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIG51bGxwdHIsIHRydWUp
KTsKKyAgICAgICAgY2ZVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0
ZXMobnVsbHB0ciwgbV9zdHJpbmcuY2hhcmFjdGVyczgoKSwgbV9zdHJpbmcubGVuZ3RoKCksIGtD
RlN0cmluZ0VuY29kaW5nVVRGOCwgbnVsbHB0ciwgdHJ1ZSkpOwogICAgIGVsc2UgewogICAgICAg
ICBDU3RyaW5nIHV0ZjggPSBtX3N0cmluZy51dGY4KCk7Ci0gICAgICAgIGNmVVJMID0gYWRvcHRD
RihDRlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgVUludDgqPih1dGY4LmRhdGEoKSksIHV0ZjgubGVuZ3RoKCksIGtDRlN0cmluZ0Vu
Y29kaW5nVVRGOCwgbnVsbHB0ciwgdHJ1ZSkpOworICAgICAgICBjZlVSTCA9IGFkb3B0Q0YoQ0ZV
UkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxscHRyLCB1dGY4LmRhdGFBc1VJbnQ4UHRy
KCksIHV0ZjgubGVuZ3RoKCksIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgbnVsbHB0ciwgdHJ1ZSkp
OwogICAgIH0KIAogICAgIGlmIChwcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgJiYgIWlzQ0ZVUkxT
YW1lT3JpZ2luKGNmVVJMLmdldCgpLCAqdGhpcykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9jb2NvYS9VUkxDb2NvYS5tbSBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1VSTENvY29hLm1tCmlu
ZGV4IGQxZDFiMWJkYjZjNTIyYmJkYjk5NTdhYjFhOTljYzc3NzZjZDMzZWQuLmNhNDgyMDkwZTIx
MGIyMmVjZGVlNmY1ZjI3NDBlNzY3YTcxODliZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L2NvY29hL1VSTENvY29hLm1tCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL1VSTENvY29hLm1t
CkBAIC03MCwxMCArNzAsMTAgQEAgUmV0YWluUHRyPENGVVJMUmVmPiBVUkw6OmNyZWF0ZUNGVVJM
KCkgY29uc3QKIAogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gY2ZVUkw7CiAgICAgaWYgKExJS0VM
WShtX3N0cmluZy5pczhCaXQoKSAmJiBtX3N0cmluZy5pc0FsbEFTQ0lJKCkpKQotICAgICAgICBj
ZlVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxscHRyLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4obV9zdHJpbmcuY2hhcmFjdGVyczgoKSksIG1f
c3RyaW5nLmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIG51bGxwdHIsIHRydWUpKTsK
KyAgICAgICAgY2ZVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlQWJzb2x1dGVVUkxXaXRoQnl0ZXMo
bnVsbHB0ciwgbV9zdHJpbmcuY2hhcmFjdGVyczgoKSwgbV9zdHJpbmcubGVuZ3RoKCksIGtDRlN0
cmluZ0VuY29kaW5nVVRGOCwgbnVsbHB0ciwgdHJ1ZSkpOwogICAgIGVsc2UgewogICAgICAgICBD
U3RyaW5nIHV0ZjggPSBtX3N0cmluZy51dGY4KCk7Ci0gICAgICAgIGNmVVJMID0gYWRvcHRDRihD
RlVSTENyZWF0ZUFic29sdXRlVVJMV2l0aEJ5dGVzKG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgVUludDgqPih1dGY4LmRhdGEoKSksIHV0ZjgubGVuZ3RoKCksIGtDRlN0cmluZ0VuY29k
aW5nVVRGOCwgbnVsbHB0ciwgdHJ1ZSkpOworICAgICAgICBjZlVSTCA9IGFkb3B0Q0YoQ0ZVUkxD
cmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxscHRyLCB1dGY4LmRhdGFBc1VJbnQ4UHRyKCks
IHV0ZjgubGVuZ3RoKCksIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgbnVsbHB0ciwgdHJ1ZSkpOwog
ICAgIH0KIAogICAgIGlmIChwcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgJiYgIVdURjo6aXNDRlVS
TFNhbWVPcmlnaW4oY2ZVUkwuZ2V0KCksICp0aGlzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3BlcnNpc3RlbmNlL1BlcnNpc3RlbnRDb2RlcnMuY3BwIGIvU291cmNlL1dURi93dGYvcGVy
c2lzdGVuY2UvUGVyc2lzdGVudENvZGVycy5jcHAKaW5kZXggNDYzNThiZGNiZjY1MmY3MTRiYTc3
NmE2MmVjY2RjYmUyNDY2OTFhYi4uZjE2OGFlMjAxM2JjZWI5Nzg1OTU3ZTNhY2YwOGU5ODAwODM1
OTFlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENv
ZGVycy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvcGVyc2lzdGVuY2UvUGVyc2lzdGVudENvZGVy
cy5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgdm9pZCBDb2RlcjxDU3RyaW5nPjo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IENTdHJpbmcmIHN0cmluZykKIAogICAgIHVpbnQzMl90IGxlbmd0
aCA9IHN0cmluZy5sZW5ndGgoKTsKICAgICBlbmNvZGVyIDw8IGxlbmd0aDsKLSAgICBlbmNvZGVy
LmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihz
dHJpbmcuZGF0YSgpKSwgbGVuZ3RoKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0
YShzdHJpbmcuZGF0YUFzVUludDhQdHIoKSwgbGVuZ3RoKTsKIH0KIAogc3RkOjpvcHRpb25hbDxD
U3RyaW5nPiBDb2RlcjxDU3RyaW5nPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCkBAIC05OCw3
ICs5OCw3IEBAIHZvaWQgQ29kZXI8U3RyaW5nPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IFN0cmluZyYgc3RyaW5nKQogICAgIGVuY29kZXIgPDwgbGVuZ3RoIDw8IGlzOEJpdDsKIAog
ICAgIGlmIChpczhCaXQpCi0gICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0cmluZy5jaGFyYWN0ZXJzOCgpKSwgbGVu
Z3RoICogc2l6ZW9mKExDaGFyKSk7CisgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhE
YXRhKHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBsZW5ndGgpOwogICAgIGVsc2UKICAgICAgICAgZW5j
b2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
Kj4oc3RyaW5nLmNoYXJhY3RlcnMxNigpKSwgbGVuZ3RoICogc2l6ZW9mKFVDaGFyKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0NTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvQ1N0cmluZy5oCmluZGV4IGUwNWRhZjc3ZjUzZTE1ZTNlMDYzYTMyNGY3M2MyZTg2ZDc0
YTM5ODEuLjdmYTZlZjM4MjIyMGRlYTJiM2UzNThhMmRkMGE2ZGUyOTY0NTFiMmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQ1N0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvQ1N0cmluZy5oCkBAIC02MSw2ICs2MSw3IEBAIHB1YmxpYzoKICAgICBDU3RyaW5nKCkgeyB9
CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIENTdHJpbmcoY29uc3QgY2hhciopOwogICAgIFdURl9F
WFBPUlRfUFJJVkFURSBDU3RyaW5nKGNvbnN0IGNoYXIqLCBzaXplX3QgbGVuZ3RoKTsKKyAgICBD
U3RyaW5nKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBsZW5ndGgpIDogQ1N0cmluZyhyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgbGVuZ3RoKSB7IH0KICAgICBDU3RyaW5n
KENTdHJpbmdCdWZmZXIqIGJ1ZmZlcikgOiBtX2J1ZmZlcihidWZmZXIpIHsgfQogICAgIFdURl9F
WFBPUlRfUFJJVkFURSBzdGF0aWMgQ1N0cmluZyBuZXdVbmluaXRpYWxpemVkKHNpemVfdCBsZW5n
dGgsIGNoYXIqJiBjaGFyYWN0ZXJCdWZmZXIpOwogICAgIENTdHJpbmcoSGFzaFRhYmxlRGVsZXRl
ZFZhbHVlVHlwZSkgOiBtX2J1ZmZlcihIYXNoVGFibGVEZWxldGVkVmFsdWUpIHsgfQpAQCAtNjks
NiArNzAsOSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gbV9idWZmZXIgPyBtX2J1
ZmZlci0+ZGF0YSgpIDogbnVsbHB0cjsKICAgICB9CisKKyAgICBjb25zdCB1aW50OF90KiBkYXRh
QXNVSW50OFB0cigpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KGRhdGEoKSk7IH0KKwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBjaGFyKiBtdXRhYmxlRGF0
YSgpOwogICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3Ry
aW5nLmNwcAppbmRleCA4NmY5ODM4MGRhMDg1ZWEzMmJmYmMwMDM3MDEwNjk0Mjk5MmMzYTE1Li5h
NmQ0ZGQyMzNkZGE2OGRjZDhhYzIxZDg1YjA4ZDFjZGEyMjVmMTgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9X
VEZTdHJpbmcuY3BwCkBAIC02NjAsNyArNjYwLDcgQEAgQ1N0cmluZyBTdHJpbmc6OmxhdGluMSgp
IGNvbnN0CiAgICAgICAgIHJldHVybiBDU3RyaW5nKCIiLCAwKTsKIAogICAgIGlmIChpczhCaXQo
KSkKLSAgICAgICAgcmV0dXJuIENTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
dGhpcy0+Y2hhcmFjdGVyczgoKSksIGxlbmd0aCk7CisgICAgICAgIHJldHVybiBDU3RyaW5nKHRo
aXMtPmNoYXJhY3RlcnM4KCksIGxlbmd0aCk7CiAKICAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVy
cyA9IHRoaXMtPmNoYXJhY3RlcnMxNigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NmL1N0cmluZ0lt
cGxDRi5jcHAKaW5kZXggYzA3NWMwZDRhYzg5MDhhZjI5ZGIyYzUzMzVhYWUzZDljMThmNDMxOC4u
MWUyMzY0NzE0ZjhiNzgwYTQ3MTA2Y2IwOTJlYjg3ZWIzMTJlNGFlYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvY2YvU3RyaW5nSW1wbENGLmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gU3RyaW5nSW1wbDo6Y3JlYXRlQ0ZTdHJpbmcoKQogewogICAgIGlmICghbV9s
ZW5ndGggfHwgIWlzTWFpblRocmVhZCgpKSB7CiAgICAgICAgIGlmIChpczhCaXQoKSkKLSAgICAg
ICAgICAgIHJldHVybiBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzKG51bGxwdHIsIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihjaGFyYWN0ZXJzOCgpKSwgbV9sZW5ndGgsIGtD
RlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBmYWxzZSkpOworICAgICAgICAgICAgcmV0dXJuIGFk
b3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXMobnVsbHB0ciwgY2hhcmFjdGVyczgoKSwgbV9s
ZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBmYWxzZSkpOwogICAgICAgICByZXR1
cm4gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKG51bGxwdHIsIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgVW5pQ2hhcio+KGNoYXJhY3RlcnMxNigpKSwgbV9sZW5ndGgpKTsKICAg
ICB9CiAgICAgQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yID0gU3RyaW5nV3JhcHBlckNGQWxsb2Nh
dG9yOjphbGxvY2F0b3IoKTsKQEAgLTEzMCw3ICsxMzAsNyBAQCBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IFN0cmluZ0ltcGw6OmNyZWF0ZUNGU3RyaW5nKCkKIAogICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gc3RyaW5nOwogICAgIGlmIChpczhCaXQoKSkKLSAgICAgICAgc3RyaW5nID0gYWRvcHRD
RihDRlN0cmluZ0NyZWF0ZVdpdGhCeXRlc05vQ29weShhbGxvY2F0b3IsIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgVUludDgqPihjaGFyYWN0ZXJzOCgpKSwgbV9sZW5ndGgsIGtDRlN0cmluZ0VuY29k
aW5nSVNPTGF0aW4xLCBmYWxzZSwga0NGQWxsb2NhdG9yTnVsbCkpOworICAgICAgICBzdHJpbmcg
PSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGFsbG9jYXRvciwgY2hhcmFj
dGVyczgoKSwgbV9sZW5ndGgsIGtDRlN0cmluZ0VuY29kaW5nSVNPTGF0aW4xLCBmYWxzZSwga0NG
QWxsb2NhdG9yTnVsbCkpOwogICAgIGVsc2UKICAgICAgICAgc3RyaW5nID0gYWRvcHRDRihDRlN0
cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzTm9Db3B5KGFsbG9jYXRvciwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBVbmlDaGFyKj4oY2hhcmFjdGVyczE2KCkpLCBtX2xlbmd0aCwga0NGQWxsb2NhdG9y
TnVsbCkpOwogICAgIC8vIENvcmVGb3VuZGF0aW9uIG1pZ2h0IG5vdCBoYXZlIHRvIGFsbG9jYXRl
IGFueXRoaW5nLCB3ZSBjbGVhciBjdXJyZW50U3RyaW5nIGluIGNhc2Ugd2UgZGlkIG5vdCBleGVj
dXRlIGFsbG9jYXRlKCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9uQ2xlYXJLZXkuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvTGVnYWN5Q0RNU2Vzc2lvbkNsZWFy
S2V5LmNwcAppbmRleCBiMjI4Mzg5OWZkNjM2MTVkMzY3ZDk4MTg2ZmY4ODc2MWVhMTE4YmVmLi5j
ZTFjMTk4ZmM2YTRkOWU3NmMwNDNkYjQ5MWZkODMyZDllNzNiZDU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9MZWdhY3lDRE1TZXNzaW9u
Q2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
bGVnYWN5L0xlZ2FjeUNETVNlc3Npb25DbGVhcktleS5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgUmVm
UHRyPFVpbnQ4QXJyYXk+IENETVNlc3Npb25DbGVhcktleTo6Z2VuZXJhdGVLZXlSZXF1ZXN0KGNv
bnN0IFN0cmluZyYgbWltZVR5cGUKICAgICBtX2luaXREYXRhID0gaW5pdERhdGE7CiAKICAgICBi
b29sIHNhd0Vycm9yID0gZmFsc2U7Ci0gICAgU3RyaW5nIGtleUlEID0gVVRGOEVuY29kaW5nKCku
ZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3RfcHRyPGNoYXIqPihtX2luaXREYXRhLT5iYXNlQWRkcmVz
cygpKSwgbV9pbml0RGF0YS0+Ynl0ZUxlbmd0aCgpLCB0cnVlLCBzYXdFcnJvcik7CisgICAgU3Ry
aW5nIGtleUlEID0gVVRGOEVuY29kaW5nKCkuZGVjb2RlKHN0YXRpY19jYXN0PGNoYXIqPihtX2lu
aXREYXRhLT5iYXNlQWRkcmVzcygpKSwgbV9pbml0RGF0YS0+Ynl0ZUxlbmd0aCgpLCB0cnVlLCBz
YXdFcnJvcik7CiAgICAgaWYgKHNhd0Vycm9yKSB7CiAgICAgICAgIGVycm9yQ29kZSA9IFdlYktp
dE1lZGlhS2V5RXJyb3I6Ok1FRElBX0tFWUVSUl9DTElFTlQ7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHku
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCmluZGV4IDQ4
MzZkMjgxM2ZlNzRiMTJhMmVkMGEwNWFiYzk5OTk1ZmRiOTBhNDQuLjBkZDhkZmNkNTFmNDk0OGUy
NzMzNjhhYjU2ODAxMzViOGFiNGE3ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keS5jcHAKQEAgLTMwNCw5ICszMDQsOSBAQCBGZXRjaEJvZHk6OlRha2VuRGF0YSBG
ZXRjaEJvZHk6OnRha2UoKQogICAgICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoVVRG
OEVuY29kaW5nKCkuZW5jb2RlKHVybFNlYXJjaFBhcmFtc0JvZHkoKS50b1N0cmluZygpLCBVbmVu
Y29kYWJsZUhhbmRsaW5nOjpFbnRpdGllcykpOwogCiAgICAgaWYgKGlzQXJyYXlCdWZmZXIoKSkK
LSAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgY2hhcio+KGFycmF5QnVmZmVyQm9keSgpLmRhdGEoKSksIGFycmF5QnVmZmVyQm9keSgpLmJ5
dGVMZW5ndGgoKSk7CisgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNf
Y2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXJCb2R5KCkuZGF0YSgpKSwgYXJyYXlCdWZmZXJC
b2R5KCkuYnl0ZUxlbmd0aCgpKTsKICAgICBpZiAoaXNBcnJheUJ1ZmZlclZpZXcoKSkKLSAgICAg
ICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KGFycmF5QnVmZmVyVmlld0JvZHkoKS5iYXNlQWRkcmVzcygpKSwgYXJyYXlCdWZmZXJW
aWV3Qm9keSgpLmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNy
ZWF0ZShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJh
c2VBZGRyZXNzKCkpLCBhcnJheUJ1ZmZlclZpZXdCb2R5KCkuYnl0ZUxlbmd0aCgpKTsKIAogICAg
IHJldHVybiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCAyYWIwY2FmMTAwZDBjMzEzOGMyYjYyNjQzZDcz
YjIxZWM2YmU5ZWI4Li42MDY0NGJmOTk0MTlmYjM3NzYwZDBmY2JiYzZhMDg2ZTc3NTA5OTk0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVy
LmNwcApAQCAtMjc4LDcgKzI3OCw3IEBAIHZvaWQgRmV0Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUo
UmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCBTdHJpbmcmIGNvCiAgICAgICAg
ICAgICBpZiAoYXV0byBjaHVuayA9IHJlc3VsdC5yZXR1cm5WYWx1ZSgpKQogICAgICAgICAgICAg
ICAgIGRhdGEtPmFwcGVuZChjaHVuay0+ZGF0YSwgY2h1bmstPnNpemUpOwogICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9t
aXNlKSwgdHlwZSwgY29udGVudFR5cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQg
Y2hhcio+KGRhdGEtPmRhdGEoKSksIGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICAgICAgcmVz
b2x2ZVdpdGhUeXBlQW5kRGF0YShXVEZNb3ZlKHByb21pc2UpLCB0eXBlLCBjb250ZW50VHlwZSwg
ZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwogICAgICAgICB9KTsKICAgICAgICAgbV9zaW5r
LT5waXBlRnJvbSgqc3RyZWFtKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzU1LDcgKzM1NSw3IEBA
IFJlZjxCbG9iPiBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0KQogICAgICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKGNvbnRleHQsIFZl
Y3Rvcjx1aW50OF90PigpLCBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUobV9jb250ZW50VHlw
ZSkpOwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB0cnkgdG8gbW92ZSBtX2J1ZmZlciB0byBC
bG9iIHdpdGhvdXQgZG9pbmcgZXh0cmEgY29weS4KLSAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNv
bnRleHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KG1fYnVmZmVyLT5k
YXRhKCkpLCBtX2J1ZmZlci0+c2l6ZSgpLCBtX2NvbnRlbnRUeXBlKTsKKyAgICByZXR1cm4gYmxv
YkZyb21EYXRhKGNvbnRleHQsIG1fYnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCksIG1f
Y29udGVudFR5cGUpOwogfQogCiBTdHJpbmcgRmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc1RleHQo
KQpAQCAtMzY0LDcgKzM2NCw3IEBAIFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzVGV4
dCgpCiAgICAgaWYgKCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAg
YXV0byB0ZXh0ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KG1fYnVmZmVyLT5kYXRhKCkpLCBtX2J1ZmZlci0+
c2l6ZSgpKTsKKyAgICBhdXRvIHRleHQgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjp0ZXh0RnJvbVVU
RjgobV9idWZmZXItPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSk7CiAgICAgbV9idWZmZXIgPSBu
dWxscHRyOwogICAgIHJldHVybiB0ZXh0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRs
ZXIuY3BwCmluZGV4IGU3YzIxYWVmNWIzMDUxM2FmNWM1Y2U5NmQwZmQzNDRmZjcyNGVkNjYuLmU1
NzQ3Yzk1YWMyY2JiYWVjN2Y1YmE4YzY1YmNjZGY2ZDU2NDliNTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxSZW1vdGVIYW5kbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFu
bmVsUmVtb3RlSGFuZGxlci5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5l
bFJlbW90ZUhhbmRsZXI6OnJlYWR5VG9TZW5kKCkKICAgICBtX2lzUmVhZHlUb1NlbmQgPSB0cnVl
OwogCiAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbV9wZW5kaW5nTWVzc2FnZXMpCi0gICAgICAg
IG1fY29ubmVjdGlvbi0+c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBtZXNzYWdlLmlzUmF3
LCByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihtZXNzYWdlLmJ1ZmZlci0+
ZGF0YSgpKSwgbWVzc2FnZS5idWZmZXItPnNpemUoKSk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+
c2VuZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBtZXNzYWdlLmlzUmF3LCBtZXNzYWdlLmJ1ZmZl
ci0+ZGF0YSgpLCBtZXNzYWdlLmJ1ZmZlci0+c2l6ZSgpKTsKICAgICBtX3BlbmRpbmdNZXNzYWdl
cy5jbGVhcigpOwogCiAgICAgaWYgKG1faXNQZW5kaW5nQ2xvc2UpCkBAIC0xMDAsNyArMTAwLDcg
QEAgYm9vbCBSVENEYXRhQ2hhbm5lbFJlbW90ZUhhbmRsZXI6OnNlbmRTdHJpbmdEYXRhKGNvbnN0
IENTdHJpbmcmIHRleHQpCiAgICAgICAgIG1fcGVuZGluZ01lc3NhZ2VzLmFwcGVuZChNZXNzYWdl
IHsgZmFsc2UsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHQuZGF0YSgpLCB0ZXh0Lmxlbmd0aCgp
KSB9KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIG1fY29ubmVjdGlvbi0+c2Vu
ZERhdGEobV9yZW1vdGVJZGVudGlmaWVyLCBmYWxzZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
bnNpZ25lZCBjaGFyKj4odGV4dC5kYXRhKCkpLCB0ZXh0Lmxlbmd0aCgpKTsKKyAgICBtX2Nvbm5l
Y3Rpb24tPnNlbmREYXRhKG1fcmVtb3RlSWRlbnRpZmllciwgZmFsc2UsIHRleHQuZGF0YUFzVUlu
dDhQdHIoKSwgdGV4dC5sZW5ndGgoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTExMCw3
ICsxMTAsNyBAQCBib29sIFJUQ0RhdGFDaGFubmVsUmVtb3RlSGFuZGxlcjo6c2VuZFJhd0RhdGEo
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiAgICAgICAgIG1fcGVuZGluZ01lc3Nh
Z2VzLmFwcGVuZChNZXNzYWdlIHsgdHJ1ZSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6
ZSkgfSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBtX2Nvbm5lY3Rpb24tPnNl
bmREYXRhKG1fcmVtb3RlSWRlbnRpZmllciwgdHJ1ZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
bnNpZ25lZCBjaGFyKj4oZGF0YSksIHNpemUpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZERhdGEo
bV9yZW1vdGVJZGVudGlmaWVyLCB0cnVlLCBkYXRhLCBzaXplKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0
cmVhbUF1ZGlvU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZUdTdHJlYW1lci5jcHAKaW5kZXggNTZlZDYwMWY0
NjVhMDFjMGE3NDNhNTkyNTdhNzU1OWMxNjcxZTM4NS4uNDUwMTJlMzBlODE4ZmI1ODkzZDQ2MzYz
MGJjM2U3YTUxZWIwOTViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3Bw
CkBAIC00Myw4ICs0Myw4IEBAIHN0YXRpYyBWZWN0b3I8c2l6ZV90PiBjb3B5QnVzRGF0YShBdWRp
b0J1cyYgYnVzLCBHc3RCdWZmZXIqIGJ1ZmZlciwgYm9vbCBpc011dGVkCiAgICAgc2l6ZV90IHNp
emUgPSBtYXBwZWRCdWZmZXIuc2l6ZSgpIC8gYnVzLm51bWJlck9mQ2hhbm5lbHMoKTsKICAgICBm
b3IgKHNpemVfdCBjaGFubmVsSW5kZXggPSAwOyBjaGFubmVsSW5kZXggPCBidXMubnVtYmVyT2ZD
aGFubmVscygpOyArK2NoYW5uZWxJbmRleCkgewogICAgICAgICBjb25zdCBhdXRvJiBjaGFubmVs
ID0gKmJ1cy5jaGFubmVsKGNoYW5uZWxJbmRleCk7Ci0gICAgICAgIGF1dG8gb2Zmc2V0ID0gcmVp
bnRlcnByZXRfY2FzdDxzaXplX3Q+KGNoYW5uZWxJbmRleCAqIHNpemUpOwotICAgICAgICBtZW1j
cHkocmVpbnRlcnByZXRfY2FzdDxmbG9hdCo+KG1hcHBlZEJ1ZmZlci5kYXRhKCkgKyBvZmZzZXQp
LCBjaGFubmVsLmRhdGEoKSwgc2l6ZW9mKGZsb2F0KSAqIGNoYW5uZWwubGVuZ3RoKCkpOworICAg
ICAgICBhdXRvIG9mZnNldCA9IGNoYW5uZWxJbmRleCAqIHNpemU7CisgICAgICAgIG1lbWNweSht
YXBwZWRCdWZmZXIuZGF0YSgpICsgb2Zmc2V0LCBjaGFubmVsLmRhdGEoKSwgc2l6ZW9mKGZsb2F0
KSAqIGNoYW5uZWwubGVuZ3RoKCkpOwogICAgICAgICBvZmZzZXRzLnVuY2hlY2tlZEFwcGVuZChv
ZmZzZXQpOwogICAgIH0KICAgICByZXR1cm4gb2Zmc2V0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhLmgK
aW5kZXggMjM4MGE0MmQ1ZmE1YWNjOTdhMGYwNmY1ODUxZjg3ZGVjM2NjMDk4Ny4uNTU5MTM2YjIz
ZjQ0NTQxNWFiZjYyODIwM2Q3ZDBmZWJkZmM0ZGNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yUmVzcG9uc2VEYXRhLmgK
QEAgLTU5LDcgKzU5LDcgQEAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHN0YXRpYyB2b2lkIGVu
Y29kZUFycmF5QnVmZmVyKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEFycmF5QnVmZmVyJiBidWZm
ZXIpCiB7CiAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYnVmZmVyLmJ5dGVM
ZW5ndGgoKSk7Ci0gICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4oYnVmZmVyLmRhdGEoKSksIGJ1ZmZlci5ieXRlTGVuZ3RoKCks
IDEpOworICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHN0YXRpY19jYXN0PGNvbnN0
IHVpbnQ4X3QqPihidWZmZXIuZGF0YSgpKSwgYnVmZmVyLmJ5dGVMZW5ndGgoKSwgMSk7CiB9CiAK
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CkBAIC03NSw3ICs3NSw3IEBAIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gZGVjb2RlQXJyYXlCdWZmZXIoRGVjb2RlciYgZGVjb2RlcikKICAgICBhdXRvIGJ1ZmZl
ciA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUobGVuZ3RoLnZhbHVlKCksIHNpemVvZih1aW50OF90
KSk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4o
YnVmZmVyLT5kYXRhKCkpLCBsZW5ndGgudmFsdWUoKSwgMSkpCisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZUZpeGVkTGVuZ3RoRGF0YShzdGF0aWNfY2FzdDx1aW50OF90Kj4oYnVmZmVyLT5kYXRhKCkp
LCBsZW5ndGgudmFsdWUoKSwgMSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVy
biBidWZmZXI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggM2UyNGVhNmY2NTRmOTIxZTQ4NDE3ZmUwZWZj
NGMyOGM0YzI1NzljMC4uNWViNDI2Y2FjNGRjZDYxZWJjNDJmZmYyMWFmNzJmMWNjMjY4ZjgzZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENo
YW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRDaGFubmVsLmNwcApAQCAtNDk1LDcgKzQ5NSw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6
c3RhcnRDbG9zaW5nSGFuZHNoYWtlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKICAg
ICAgICAgYnVmLmFwcGVuZChoaWdoQnl0ZSk7CiAgICAgICAgIGJ1Zi5hcHBlbmQobG93Qnl0ZSk7
CiAgICAgICAgIGF1dG8gcmVhc29uVVRGOCA9IHJlYXNvbi51dGY4KCk7Ci0gICAgICAgIGJ1Zi5h
cHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocmVhc29uVVRGOC5kYXRhKCkp
LCByZWFzb25VVEY4Lmxlbmd0aCgpKTsKKyAgICAgICAgYnVmLmFwcGVuZChyZWFzb25VVEY4LmRh
dGFBc1VJbnQ4UHRyKCksIHJlYXNvblVURjgubGVuZ3RoKCkpOwogICAgIH0KICAgICBlbnF1ZXVl
UmF3RnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZUNsb3NlLCBidWYuZGF0YSgpLCBidWYuc2l6
ZSgpKTsKICAgICBSZWY8V2ViU29ja2V0Q2hhbm5lbD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7IC8v
IEFuIGF0dGVtcHQgdG8gc2VuZCBjbG9zaW5nIGhhbmRzaGFrZSBtYXkgZmFpbCwgd2hpY2ggd2ls
bCBnZXQgdGhlIGNoYW5uZWwgY2xvc2VkIGFuZCBkZXJlZmVyZW5jZWQuCkBAIC03NDMsNyArNzQz
LDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzT3V0Z29pbmdGcmFtZVF1ZXVlKCkK
ICAgICAgICAgYXV0byBmcmFtZSA9IG1fb3V0Z29pbmdGcmFtZVF1ZXVlLnRha2VGaXJzdCgpOwog
ICAgICAgICBzd2l0Y2ggKGZyYW1lLT5mcmFtZVR5cGUpIHsKICAgICAgICAgY2FzZSBRdWV1ZWRG
cmFtZVR5cGVTdHJpbmc6IHsKLSAgICAgICAgICAgIHNlbmRGcmFtZShmcmFtZS0+b3BDb2RlLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihmcmFtZS0+c3RyaW5nRGF0YS5kYXRhKCkp
LCBmcmFtZS0+c3RyaW5nRGF0YS5sZW5ndGgoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKV0gKGJvb2wgc3VjY2VzcykgeworICAgICAgICAgICAgc2VuZEZyYW1lKGZyYW1l
LT5vcENvZGUsIGZyYW1lLT5zdHJpbmdEYXRhLmRhdGFBc1VJbnQ4UHRyKCksIGZyYW1lLT5zdHJp
bmdEYXRhLmxlbmd0aCgpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAo
Ym9vbCBzdWNjZXNzKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICAg
ICAgICAgICAgICBmYWlsKCJGYWlsZWQgdG8gc2VuZCBXZWJTb2NrZXQgZnJhbWUuIik7CiAgICAg
ICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKaW5kZXggYmUyNDQxMjU2MDdiMWJjYzMyMjkzNDc0
ZDU0NDg2MmJiNTZhYjZlNC4uZDgyODIyNDBhMmJiY2I5MmEzNzcyMTUwNzE1Yzc3NGEzMWFmNDRm
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dEhhbmRzaGFrZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZS5jcHAKQEAgLTEwMiwxMSArMTAyLDExIEBAIHN0YXRpYyBTdHJpbmcg
Z2VuZXJhdGVTZWNXZWJTb2NrZXRLZXkoKQogCiBTdHJpbmcgV2ViU29ja2V0SGFuZHNoYWtlOjpn
ZXRFeHBlY3RlZFdlYlNvY2tldEFjY2VwdChjb25zdCBTdHJpbmcmIHNlY1dlYlNvY2tldEtleSkK
IHsKLSAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qgd2ViU29ja2V0S2V5R1VJRCA9ICIyNThF
QUZBNS1FOTE0LTQ3REEtOTVDQS1DNUFCMERDODVCMTEiOworICAgIGNvbnN0ZXhwciB1aW50OF90
IHdlYlNvY2tldEtleUdVSURbXSA9ICIyNThFQUZBNS1FOTE0LTQ3REEtOTVDQS1DNUFCMERDODVC
MTEiOwogICAgIFNIQTEgc2hhMTsKICAgICBDU3RyaW5nIGtleURhdGEgPSBzZWNXZWJTb2NrZXRL
ZXkuYXNjaWkoKTsKLSAgICBzaGExLmFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KGtleURhdGEuZGF0YSgpKSwga2V5RGF0YS5sZW5ndGgoKSk7Ci0gICAgc2hhMS5hZGRC
eXRlcyhyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih3ZWJTb2NrZXRLZXlHVUlEKSwg
c3RybGVuKHdlYlNvY2tldEtleUdVSUQpKTsKKyAgICBzaGExLmFkZEJ5dGVzKGtleURhdGEuZGF0
YUFzVUludDhQdHIoKSwga2V5RGF0YS5sZW5ndGgoKSk7CisgICAgc2hhMS5hZGRCeXRlcyh3ZWJT
b2NrZXRLZXlHVUlELCBzdGQ6OnNpemUod2ViU29ja2V0S2V5R1VJRCkgLSAxKTsKICAgICBTSEEx
OjpEaWdlc3QgaGFzaDsKICAgICBzaGExLmNvbXB1dGVIYXNoKGhhc2gpOwogICAgIHJldHVybiBi
YXNlNjRFbmNvZGVUb1N0cmluZyhoYXNoLmRhdGEoKSwgU0hBMTo6aGFzaFNpemUpOwpAQCAtMzI4
LDEzICszMjgsMTIgQEAgVVJMIFdlYlNvY2tldEhhbmRzaGFrZTo6aHR0cFVSTEZvckF1dGhlbnRp
Y2F0aW9uQW5kQ29va2llcygpIGNvbnN0CiAvLyAiVGhlIEhUVFAgdmVyc2lvbiBNVVNUIGJlIGF0
IGxlYXN0IDEuMS4iCiBzdGF0aWMgaW5saW5lIGJvb2wgaGVhZGVySGFzVmFsaWRIVFRQVmVyc2lv
bihTdHJpbmdWaWV3IGh0dHBTdGF0dXNMaW5lKQogewotICAgIGNvbnN0IGNoYXIqIGh0dHBWZXJz
aW9uU3RhdGljUHJlYW1ibGVMaXRlcmFsID0gIkhUVFAvIjsKLSAgICBTdHJpbmdWaWV3IGh0dHBW
ZXJzaW9uU3RhdGljUHJlYW1ibGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGh0dHBW
ZXJzaW9uU3RhdGljUHJlYW1ibGVMaXRlcmFsKSwgc3RybGVuKGh0dHBWZXJzaW9uU3RhdGljUHJl
YW1ibGVMaXRlcmFsKSk7Ci0gICAgaWYgKCFodHRwU3RhdHVzTGluZS5zdGFydHNXaXRoKGh0dHBW
ZXJzaW9uU3RhdGljUHJlYW1ibGUpKQorICAgIGNvbnN0ZXhwciBjaGFyIHByZWFtYmxlW10gPSAi
SFRUUC8iOworICAgIGlmICghaHR0cFN0YXR1c0xpbmUuc3RhcnRzV2l0aChwcmVhbWJsZSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIENoZWNrIHRoYXQgdGhlcmUgaXMgYSB2ZXJz
aW9uIG51bWJlciB3aGljaCBzaG91bGQgYmUgYXQgbGVhc3QgdGhyZWUgY2hhcmFjdGVycyBhZnRl
ciAiSFRUUC8iCi0gICAgdW5zaWduZWQgcHJlYW1ibGVMZW5ndGggPSBodHRwVmVyc2lvblN0YXRp
Y1ByZWFtYmxlLmxlbmd0aCgpOworICAgIHVuc2lnbmVkIHByZWFtYmxlTGVuZ3RoID0gc3RybGVu
KHByZWFtYmxlKTsKICAgICBpZiAoaHR0cFN0YXR1c0xpbmUubGVuZ3RoKCkgPCBwcmVhbWJsZUxl
bmd0aCArIDMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEJ1ZmZlclNvdXJjZVByb3ZpZGVyLmgKaW5kZXggOWQ5
ZTUyZGFlYzBjMDRlZDIxNjFlYjgyNTZhZmE2Nzc1NTE1ZTI0OC4uYzQ1MmM4M2ZiZDVjZTg5NWJk
ZDAzMWFjZjE0NjhmNzg2NTA2MjJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRCdWZmZXJTb3VyY2VQcm92aWRlci5oCkBAIC01MiwxMiArNTIsMTIg
QEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICAgICAg
aWYgKCFtX2NvbnRhaW5zT25seUFTQ0lJKSB7Ci0gICAgICAgICAgICBtX2NvbnRhaW5zT25seUFT
Q0lJID0gY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIq
PihtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpKSwgbV9zY3JpcHRCdWZmZXIuYnVmZmVy
KCktPnNpemUoKSk7CisgICAgICAgICAgICBtX2NvbnRhaW5zT25seUFTQ0lJID0gY2hhcmFjdGVy
c0FyZUFsbEFTQ0lJKG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIG1fc2NyaXB0QnVm
ZmVyLmJ1ZmZlcigpLT5zaXplKCkpOwogICAgICAgICAgICAgaWYgKCptX2NvbnRhaW5zT25seUFT
Q0lJKQotICAgICAgICAgICAgICAgIG1fc2NyaXB0SGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0
ZUhhc2hBbmRNYXNrVG9wOEJpdHMocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KG1fc2Ny
aXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCkpLCBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+c2l6
ZSgpKTsKKyAgICAgICAgICAgICAgICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdIYXNoZXI6OmNvbXB1
dGVIYXNoQW5kTWFza1RvcDhCaXRzKG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5kYXRhKCksIG1f
c2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpOwogICAgICAgICB9CiAgICAgICAgIGlmICgq
bV9jb250YWluc09ubHlBU0NJSSkKLSAgICAgICAgICAgIHJldHVybiB7IHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgTENoYXIqPihtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpKSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KG1fc2NyaXB0QnVmZmVyLmJ1ZmZlcigpLT5zaXplKCkpIH07CisgICAg
ICAgICAgICByZXR1cm4geyBtX3NjcmlwdEJ1ZmZlci5idWZmZXIoKS0+ZGF0YSgpLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4obV9zY3JpcHRCdWZmZXIuYnVmZmVyKCktPnNpemUoKSkgfTsKIAogICAg
ICAgICBpZiAoIW1fY2FjaGVkU2NyaXB0U3RyaW5nKSB7CiAgICAgICAgICAgICBtX2NhY2hlZFNj
cmlwdFN0cmluZyA9IG1fc2NyaXB0QnVmZmVyLnRvU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA2YzY0
YTA0NGY1NjBmZjQyOTA4YzkwY2Y0YzdjMjQ2YWQ2N2FjODhmLi4wYjdmZGE0ZDhkNjBlOTkxNTNh
NDRmMTE0YWVmMTA0YWFlZTdkZmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTIzNDAsNyArMjM0MCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIGlmIChpczhCaXQpIHsKICAgICAgICAgICAgIGlmICgoZW5kIC0gcHRy
KSA8IHN0YXRpY19jYXN0PGludD4obGVuZ3RoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgICAgICBzdHIgPSBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hh
cio+KHB0ciksIGxlbmd0aCk7CisgICAgICAgICAgICBzdHIgPSBTdHJpbmcgeyBwdHIsIGxlbmd0
aCB9OwogICAgICAgICAgICAgcHRyICs9IGxlbmd0aDsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9TZXJpYWxpemVkTkZBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1Nl
cmlhbGl6ZWRORkEuY3BwCmluZGV4IDBiMzMzODlhNzY5MjUwMGYyNDRmZWY0OGI3MjE3MjVjM2Y3
ZmExM2UuLjA0YzZkYTVhODQ4ZDA4OTFmMzNmNGY4MzlkYTk1MmI4Yzc2NzlhMDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1NlcmlhbGl6ZWRORkEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL1NlcmlhbGl6ZWRORkEuY3BwCkBA
IC0xMDcsNyArMTA3LDcgQEAgU2VyaWFsaXplZE5GQTo6U2VyaWFsaXplZE5GQShGaWxlU3lzdGVt
OjpNYXBwZWRGaWxlRGF0YSYmIGZpbGUsIE1ldGFkYXRhJiYgbWV0YWQKIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+CiBjb25zdCBUKiBTZXJpYWxpemVkTkZBOjpwb2ludGVyQXRPZmZzZXRJbkZpbGUoc2l6
ZV90IG9mZnNldCkgY29uc3QKIHsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBU
Kj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obV9maWxlLmRhdGEoKSkgKyBvZmZz
ZXQpOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IFQqPihzdGF0aWNfY2FzdDxj
b25zdCB1aW50OF90Kj4obV9maWxlLmRhdGEoKSkgKyBvZmZzZXQpOwogfQogCiBhdXRvIFNlcmlh
bGl6ZWRORkE6Om5vZGVzKCkgY29uc3QgLT4gY29uc3QgUmFuZ2U8SW1tdXRhYmxlTkZBTm9kZT4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcAppbmRleCBmZGFiY2QzZTdiODkyZTUwMWQ4Nzk0MzJhYzQ2YzNkNzEzZjhl
YjAwLi4yNDI2NzI5YmY0ZDM1NmNmOTU0ZDUyMDM3YWI2ODllZmQ1ZjdkOGJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCkBAIC0xNjAwLDcgKzE2MDAsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBOb2RlOjpzZXRU
ZXh0Q29udGVudChjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotc3Rh
dGljIFNIQTE6OkRpZ2VzdCBoYXNoUG9pbnRlcih2b2lkKiBwb2ludGVyKQorc3RhdGljIFNIQTE6
OkRpZ2VzdCBoYXNoUG9pbnRlcihjb25zdCB2b2lkKiBwb2ludGVyKQogewogICAgIFNIQTEgc2hh
MTsKICAgICBzaGExLmFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KCZw
b2ludGVyKSwgc2l6ZW9mKHBvaW50ZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9UZXh0RW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEVuY29kZXIuY3BwCmlu
ZGV4IGQ2ZDE0NDNkNGZmOTg1MzcxYTBiOGRmZDU1YmZlYzk0YjViM2ZjNTUuLmFlMjM0NzUyNzky
NzIzN2MxM2UwZGY2MDdjMDUxNTZkNTk5ZGMxOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UZXh0RW5jb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVy
LmNwcApAQCAtNDAsNyArNDAsNyBAQCBSZWZQdHI8VWludDhBcnJheT4gVGV4dEVuY29kZXI6OmVu
Y29kZShTdHJpbmcmJiBpbnB1dCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5v
dCBuZWVkIHRvIGFsbG9jYXRlIGEgQ1N0cmluZyB0byBlbmNvZGUgaW50byBhIFVpbnQ4QXJyYXku
CiAgICAgQ1N0cmluZyB1dGY4ID0gaW5wdXQudXRmOCgpOwotICAgIHJldHVybiBVaW50OEFycmF5
Ojp0cnlDcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odXRmOC5kYXRhKCkp
LCB1dGY4Lmxlbmd0aCgpKTsKKyAgICByZXR1cm4gVWludDhBcnJheTo6dHJ5Q3JlYXRlKHV0Zjgu
ZGF0YUFzVUludDhQdHIoKSwgdXRmOC5sZW5ndGgoKSk7CiB9CiAKIGF1dG8gVGV4dEVuY29kZXI6
OmVuY29kZUludG8oU3RyaW5nJiYgaW5wdXQsIFJlZjxVaW50OEFycmF5PiYmIGFycmF5KSAtPiBF
bmNvZGVJbnRvUmVzdWx0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEVuY29k
ZXJTdHJlYW1FbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RW5jb2RlclN0cmVh
bUVuY29kZXIuY3BwCmluZGV4IGNlMTA4Njc3Yjk2NjVkNzU2ODEyZWFkYmEyM2Y1YjIzMDliNTQ2
ZmYuLmExMDRmZGYxNGNjMjBkMmUxODQ5NGE0YTIzZDVmM2E0NGQzZWJiZDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RW5jb2RlclN0cmVhbUVuY29kZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UZXh0RW5jb2RlclN0cmVhbUVuY29kZXIuY3BwCkBAIC03Nyw4ICs3
Nyw4IEBAIFJlZlB0cjxVaW50OEFycmF5PiBUZXh0RW5jb2RlclN0cmVhbUVuY29kZXI6OmZsdXNo
KCkKICAgICBpZiAoIW1fcGVuZGluZ0hpZ2hTdXJyb2dhdGUpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgYXV0byBieXRlU2VxdWVuY2UgPSAiXHhFRlx4QkZceEJEIjsKLSAgICByZXR1
cm4gVWludDhBcnJheTo6dHJ5Q3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGJ5dGVTZXF1ZW5jZSksIDMpOworICAgIGNvbnN0ZXhwciB1aW50OF90IGJ5dGVTZXF1ZW5jZVtd
ID0geyAweEVGLCAweEJGLCAweEJEIH07CisgICAgcmV0dXJuIFVpbnQ4QXJyYXk6OnRyeUNyZWF0
ZShieXRlU2VxdWVuY2UsIHN0ZDo6c2l6ZShieXRlU2VxdWVuY2UpKTsKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5t
bQppbmRleCBhNGU1MzIzMTk5MzNmMGE4NjEyZDJjMjI1MTgyOThkNTlkNGU5NmIyLi43OTQyMWQ5
MmVjNWU1ZDM1ZTI2NzlhYzU2OGMzZDAxMmYwMDNhM2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQpAQCAtNDg2LDcg
KzQ4Niw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBXaXRoQXJjaGl2ZShGcmFtZSYg
ZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtCiAgICAgICAgIENTdHJpbmcgdXRmOCA9
IHN1YmZyYW1lTWFya3VwLnV0ZjgoKTsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJsb2JCdWZm
ZXI7CiAgICAgICAgIGJsb2JCdWZmZXIucmVzZXJ2ZUNhcGFjaXR5KHV0ZjgubGVuZ3RoKCkpOwot
ICAgICAgICBibG9iQnVmZmVyLmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
Pih1dGY4LmRhdGEoKSksIHV0ZjgubGVuZ3RoKCkpOworICAgICAgICBibG9iQnVmZmVyLmFwcGVu
ZCh1dGY4LmRhdGFBc1VJbnQ4UHRyKCksIHV0ZjgubGVuZ3RoKCkpOwogICAgICAgICBhdXRvIGJs
b2IgPSBCbG9iOjpjcmVhdGUoJmRlc3RpbmF0aW9uRG9jdW1lbnQsIFdURk1vdmUoYmxvYkJ1ZmZl
ciksIHR5cGUpOwogCiAgICAgICAgIFN0cmluZyBzdWJmcmFtZUJsb2JVUkwgPSBET01VUkw6OmNy
ZWF0ZU9iamVjdFVSTChkZXN0aW5hdGlvbkRvY3VtZW50LCBibG9iKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAK
aW5kZXggNmQ3YzljOGIwZDgzNGI5YmUzZDg0NTRiMjIxM2FlMGRhMTRhNjY4Yi4uMDI2Y2ViYjJi
Mjc4YjM4NzUwMmUzMDI2OTQ4NDA4Njk0ZmJlYjc4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTQ5
NjIsNyArNDk2Miw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dGV4SW1hZ2VB
cnJheUJ1ZmZlclZpZXdIZWxwZXIoVGV4SW1hZ2VGdW5jdGlvbklECiAgICAgICAgIHNvdXJjZVR5
cGUgPSBUZXhJbWFnZURpbWVuc2lvbjo6VGV4M0Q7CiAgICAgaWYgKCF2YWxpZGF0ZVRleEZ1bmNE
YXRhKGZ1bmN0aW9uTmFtZSwgc291cmNlVHlwZSwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1h
dCwgdHlwZSwgcGl4ZWxzLmdldCgpLCBudWxsRGlzcG9zaXRpb24sIHNyY09mZnNldCkpCiAgICAg
ICAgIHJldHVybjsKLSAgICB1aW50OF90KiBkYXRhID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90
Kj4ocGl4ZWxzID8gcGl4ZWxzLT5iYXNlQWRkcmVzcygpIDogbnVsbHB0cik7CisgICAgYXV0byBk
YXRhID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KHBpeGVscyA/IHBpeGVscy0+YmFzZUFkZHJlc3Mo
KSA6IG51bGxwdHIpOwogICAgIGlmIChzcmNPZmZzZXQpIHsKICAgICAgICAgQVNTRVJUKHBpeGVs
cyk7CiAgICAgICAgIC8vIE5vIG5lZWQgdG8gY2hlY2sgb3ZlcmZsb3cgYmVjYXVzZSB2YWxpZGF0
ZVRleEZ1bmNEYXRhKCkgYWxyZWFkeSBkaWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9E
T01QYXRjaFN1cHBvcnQuY3BwCmluZGV4IDFmMzk0YmE5N2M4ZmYyYWU1NDJjZTYyMTJlYjUzNjBh
Y2M1MzY0MTMuLjZhZjRhOGMwY2YzMTdhNDU0MTJiMTBjZmRmZDgwOWUwNGZiN2E5YTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwCkBAIC0zOTcsNyAr
Mzk3LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRE9NUGF0Y2hTdXBwb3J0Ojppbm5lclBhdGNoQ2hp
bGRyZW4oQ29udGFpbmVyTm9kZSYgcGFyZW50Tm9kZSwKIHN0YXRpYyB2b2lkIGFkZFN0cmluZ1Rv
U0hBMShTSEExJiBzaGExLCBjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICAgICBDU3RyaW5nIGNT
dHJpbmcgPSBzdHJpbmcudXRmOCgpOwotICAgIHNoYTEuYWRkQnl0ZXMocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90Kj4oY1N0cmluZy5kYXRhKCkpLCBjU3RyaW5nLmxlbmd0aCgpKTsKKyAg
ICBzaGExLmFkZEJ5dGVzKGNTdHJpbmcuZGF0YUFzVUludDhQdHIoKSwgY1N0cmluZy5sZW5ndGgo
KSk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxET01QYXRjaFN1cHBvcnQ6OkRpZ2VzdD4gRE9NUGF0
Y2hTdXBwb3J0OjpjcmVhdGVEaWdlc3QoTm9kZSYgbm9kZSwgVW51c2VkTm9kZXNNYXAqIHVudXNl
ZE5vZGVzTWFwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNvdXJj
ZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRSZXNvdXJjZURlY29kZXIu
Y3BwCmluZGV4IDIyYjJiZDc3MWM0ZmQzNGM1YWNiNGM4NjEwNmY3ZmE5Mjk2OGJlZTguLjQ3NzAy
YTU3NGNjOGJmNDJhZjk2MzU2MTUwYjYxYjk2N2NhYWZhYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9UZXh0UmVzb3VyY2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvVGV4dFJlc291cmNlRGVjb2Rlci5jcHAKQEAgLTMzMyw3ICszMzMsNyBAQCBTdHJp
bmcgVGV4dFJlc291cmNlRGVjb2Rlcjo6dGV4dEZyb21VVEY4KGNvbnN0IHVuc2lnbmVkIGNoYXIq
IGRhdGEsIHVuc2lnbmVkIGxlbgogICAgIGF1dG8gZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29k
ZXI6OmNyZWF0ZSgidGV4dC9wbGFpbiIsICJVVEYtOCIpOwogICAgIGlmIChzaG91bGRQcmVwZW5k
Qk9NKGRhdGEsIGxlbmd0aCkpCiAgICAgICAgIGRlY29kZXItPmRlY29kZSgiXHhlZlx4YmJceGJm
IiwgMyk7Ci0gICAgcmV0dXJuIGRlY29kZXItPmRlY29kZUFuZEZsdXNoKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBsZW5ndGgpOworICAgIHJldHVybiBkZWNvZGVyLT5kZWNv
ZGVBbmRGbHVzaChkYXRhLCBsZW5ndGgpOwogfQogCiB2b2lkIFRleHRSZXNvdXJjZURlY29kZXI6
OnNldEVuY29kaW5nKGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmcsIEVuY29kaW5nU291cmNl
IHNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRT
Y3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAK
aW5kZXggMTc0NmEzODk5NTJlOGE0N2NkN2UwNDdiOTlhYjQyMzVmMzJmZWJhMC4uZGMxMDFjYmUw
NmQ5YjNmMDI4YjdhYTgxMTU3Yjk0ODcxOTJlYTZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgU3RyaW5nVmlldyBD
YWNoZWRTY3JpcHQ6OnNjcmlwdCgpCiAgICAgaWYgKG1fZGVjb2RpbmdTdGF0ZSA9PSBOZXZlckRl
Y29kZWQKICAgICAgICAgJiYgVGV4dEVuY29kaW5nKGVuY29kaW5nKCkpLmlzQnl0ZUJhc2VkRW5j
b2RpbmcoKQogICAgICAgICAmJiBtX2RhdGEtPnNpemUoKQotICAgICAgICAmJiBjaGFyYWN0ZXJz
QXJlQWxsQVNDSUkocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KG1fZGF0YS0+ZGF0YSgp
KSwgbV9kYXRhLT5zaXplKCkpKSB7CisgICAgICAgICYmIGNoYXJhY3RlcnNBcmVBbGxBU0NJSSht
X2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpKSB7CiAKICAgICAgICAgbV9kZWNvZGluZ1N0
YXRlID0gRGF0YUFuZERlY29kZWRTdHJpbmdIYXZlU2FtZUJ5dGVzOwogCkBAIC03MCwxMSArNzAs
MTEgQEAgU3RyaW5nVmlldyBDYWNoZWRTY3JpcHQ6OnNjcmlwdCgpCiAgICAgICAgIHNldERlY29k
ZWRTaXplKDApOwogICAgICAgICBtX2RlY29kZWREYXRhRGVsZXRpb25UaW1lci5zdG9wKCk7CiAK
LSAgICAgICAgbV9zY3JpcHRIYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tU
b3A4Qml0cyhyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4obV9kYXRhLT5kYXRhKCkpLCBt
X2RhdGEtPnNpemUoKSk7CisgICAgICAgIG1fc2NyaXB0SGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29t
cHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsK
ICAgICB9CiAKICAgICBpZiAobV9kZWNvZGluZ1N0YXRlID09IERhdGFBbmREZWNvZGVkU3RyaW5n
SGF2ZVNhbWVCeXRlcykKLSAgICAgICAgcmV0dXJuIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBM
Q2hhcio+KG1fZGF0YS0+ZGF0YSgpKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fZGF0YS0+c2l6
ZSgpKSB9OworICAgICAgICByZXR1cm4geyBtX2RhdGEtPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KG1fZGF0YS0+c2l6ZSgpKSB9OwogCiAgICAgaWYgKCFtX3NjcmlwdCkgewogICAgICAg
ICBtX3NjcmlwdCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGVu
Y29kZWRTaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNv
dXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9SZXNv
dXJjZVVzYWdlT3ZlcmxheUNvY29hLm1tCmluZGV4IGU1MTliZTdhODRiMDE0NTRiNDYzZjZkYzM1
ODQzNzAwNzI4ZmM4YjYuLjJiYjgxMjU4N2E5MjE2M2RiMDIxNmMyYTU3MzU0NWU3YWNhZGI0NGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvUmVzb3VyY2VVc2FnZU92ZXJs
YXlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Jlc291cmNlVXNhZ2VP
dmVybGF5Q29jb2EubW0KQEAgLTI2OSw3ICsyNjksNyBAQCBzdGF0aWMgdm9pZCBzaG93VGV4dChD
R0NvbnRleHRSZWYgY29udGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgQ0dDb2xvclJlZiBjb2xvciwg
YwogICAgIENGVHlwZVJlZiB2YWx1ZXNbXSA9IHsgZm9udC5nZXQoKSwga0NGQm9vbGVhblRydWUg
fTsKICAgICBhdXRvIGF0dHJpYnV0ZXMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBrZXlzLCB2YWx1ZXMsIFdURl9BUlJBWV9MRU5HVEgoa2V5cyksICZr
Q0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxs
QmFja3MpKTsKICAgICBDU3RyaW5nIGNzdHIgPSB0ZXh0LmFzY2lpKCk7Ci0gICAgYXV0byBzdHJp
bmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzTm9Db3B5KGtDRkFsbG9jYXRvckRl
ZmF1bHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihjc3RyLmRhdGEoKSksIGNzdHIu
bGVuZ3RoKCksIGtDRlN0cmluZ0VuY29kaW5nQVNDSUksIGZhbHNlLCBrQ0ZBbGxvY2F0b3JOdWxs
KSk7CisgICAgYXV0byBzdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzTm9D
b3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIGNzdHIuZGF0YUFzVUludDhQdHIoKSwgY3N0ci5sZW5n
dGgoKSwga0NGU3RyaW5nRW5jb2RpbmdBU0NJSSwgZmFsc2UsIGtDRkFsbG9jYXRvck51bGwpKTsK
ICAgICBhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdENGKENGQXR0cmlidXRlZFN0cmluZ0Ny
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdHJpbmcuZ2V0KCksIGF0dHJpYnV0ZXMuZ2V0KCkp
KTsKICAgICBhdXRvIGxpbmUgPSBhZG9wdENGKENUTGluZUNyZWF0ZVdpdGhBdHRyaWJ1dGVkU3Ry
aW5nKGF0dHJpYnV0ZWRTdHJpbmcuZ2V0KCkpKTsKICAgICBDR0NvbnRleHRTZXRUZXh0UG9zaXRp
b24oY29udGV4dCwgeCwgeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
Zi9TaGFyZWRCdWZmZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRC
dWZmZXJDRi5jcHAKaW5kZXggYTExMGQxMzkzMGU4NjExMzA3ZGQwNTVmZjJhNDcwMGNmNGU5Yzll
My4uODk1ZWJlMDUxZjE1MmE3YTgzYTQ1YzdiOTBkZGMwYzI3MGE0OWVlMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAtNDcsNyArNDcsNyBA
QCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUNGRGF0YSgpIGNvbnN0
CiAgICAgICAgIGlmIChhdXRvIGRhdGEgPSBXVEY6OmdldF9pZjxSZXRhaW5QdHI8Q0ZEYXRhUmVm
Pj4obV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2ltbXV0YWJsZURhdGEpKQogICAgICAgICAgICAg
cmV0dXJuICpkYXRhOwogICAgIH0KLSAgICByZXR1cm4gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVs
bHB0ciwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGRhdGEoKSksIHNpemUoKSkpOwor
ICAgIHJldHVybiBhZG9wdENGKENGRGF0YUNyZWF0ZShudWxscHRyLCBkYXRhKCksIHNpemUoKSkp
OwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVy
aWMvS2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5l
cmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCmluZGV4IDIxY2MxZWJlNGE5MDFhMTNjNzQ0MDNk
YzAxY2YyZmM4MTgxMzAxMmQuLmM2NWE3ZDViNzE0NjUzZGU2OTJmZTNjZmE5MzYzYTZiNzc5YTc4
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvS2V5ZWRFbmNv
ZGVyR2VuZXJpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9LZXll
ZEVuY29kZXJHZW5lcmljLmNwcApAQCAtNDAsNyArNDAsNyBAQCB2b2lkIEtleWVkRW5jb2Rlckdl
bmVyaWM6OmVuY29kZVN0cmluZyhjb25zdCBTdHJpbmcmIGtleSkKIHsKICAgICBhdXRvIHV0Zjgg
PSBrZXkudXRmOCgpOwogICAgIG1fZW5jb2RlciA8PCB1dGY4Lmxlbmd0aCgpOwotICAgIG1fZW5j
b2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
Kj4odXRmOC5kYXRhKCkpLCB1dGY4Lmxlbmd0aCgpKTsKKyAgICBtX2VuY29kZXIuZW5jb2RlRml4
ZWRMZW5ndGhEYXRhKHV0ZjguZGF0YUFzVUludDhQdHIoKSwgdXRmOC5sZW5ndGgoKSk7CiB9CiAK
IHZvaWQgS2V5ZWRFbmNvZGVyR2VuZXJpYzo6ZW5jb2RlQnl0ZXMoY29uc3QgU3RyaW5nJiBrZXks
IGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3Qgc2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRleCA3ZWU0
YTc2OTBlOTVlMjc2YWRiYjk0ODhhYjkxNTZmZGU3N2M5YmIxLi5hN2E5MzgwZGYyNzFlNWE2ZGU5
MTQ4NDUxZDNiODMyZmRkMzk1NTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC03NTcsNyArNzU3LDcgQEAg
Ym9vbCBHcmFwaGljc0NvbnRleHRHTDo6cGFja0ltYWdlRGF0YShJbWFnZSogaW1hZ2UsIGNvbnN0
IHZvaWQqIHBpeGVscywgR0NHTGVudW0KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGRhdGEu
cmVzaXplKHBhY2tlZFNpemUpOwogCi0gICAgaWYgKCFwYWNrUGl4ZWxzKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KHBpeGVscyksIHNvdXJjZUZvcm1hdCwgc291cmNlSW1hZ2VXaWR0
aCwgc291cmNlSW1hZ2VIZWlnaHQsIHNvdXJjZUltYWdlU3ViUmVjdGFuZ2xlLCBkZXB0aCwgc291
cmNlVW5wYWNrQWxpZ25tZW50LCB1bnBhY2tJbWFnZUhlaWdodCwgZm9ybWF0LCB0eXBlLCBhbHBo
YU9wLCBkYXRhLmRhdGEoKSwgZmxpcFkpKQorICAgIGlmICghcGFja1BpeGVscyhzdGF0aWNfY2Fz
dDxjb25zdCB1aW50OF90Kj4ocGl4ZWxzKSwgc291cmNlRm9ybWF0LCBzb3VyY2VJbWFnZVdpZHRo
LCBzb3VyY2VJbWFnZUhlaWdodCwgc291cmNlSW1hZ2VTdWJSZWN0YW5nbGUsIGRlcHRoLCBzb3Vy
Y2VVbnBhY2tBbGlnbm1lbnQsIHVucGFja0ltYWdlSGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGFscGhh
T3AsIGRhdGEuZGF0YSgpLCBmbGlwWSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAo
SW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIgPSBpbWFnZS0+aW1hZ2VPYnNlcnZlcigpKQogICAgICAg
ICBvYnNlcnZlci0+ZGlkRHJhdygqaW1hZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5jcHAKaW5kZXggYWQ1ZDNlNGYz
MjdlZWY0ODc4NTljYmM0MTViNzU2ZDExZTA0NWZhNy4uZDI4NzdkNjgzMGMzYmM4YTA0MjE4ZjZi
YTMzNDRmMzBmYWJmODZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgc3Rk
OjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gSW1hZ2VCdWZmZXJCYWNrZW5kOjpnZXRQaXhlbEJ1ZmZl
cihjb25zdCBQaXhlbEJ1ZmZlckYKICAgICBDb25zdFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcg
c291cmNlIHsKICAgICAgICAgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpQcmVtdWx0aXBsaWVk
LCBwaXhlbEZvcm1hdCgpLCBjb2xvclNwYWNlKCkgfSwKICAgICAgICAgYnl0ZXNQZXJSb3coKSwK
LSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZGF0YSkgKyBzb3VyY2VSZWN0Q2xp
cHBlZC55KCkgKiBzb3VyY2UuYnl0ZXNQZXJSb3cgKyBzb3VyY2VSZWN0Q2xpcHBlZC54KCkgKiA0
CisgICAgICAgIHN0YXRpY19jYXN0PHVpbnQ4X3QqPihkYXRhKSArIHNvdXJjZVJlY3RDbGlwcGVk
LnkoKSAqIHNvdXJjZS5ieXRlc1BlclJvdyArIHNvdXJjZVJlY3RDbGlwcGVkLngoKSAqIDQKICAg
ICB9OwogICAgIAogICAgIFBpeGVsQnVmZmVyQ29udmVyc2lvblZpZXcgZGVzdGluYXRpb24gewpA
QCAtMTU5LDcgKzE1OSw3IEBAIHZvaWQgSW1hZ2VCdWZmZXJCYWNrZW5kOjpwdXRQaXhlbEJ1ZmZl
cihjb25zdCBQaXhlbEJ1ZmZlciYgc291cmNlUGl4ZWxCdWZmZXIsIGNvCiAgICAgUGl4ZWxCdWZm
ZXJDb252ZXJzaW9uVmlldyBkZXN0aW5hdGlvbiB7CiAgICAgICAgIHsgZGVzdGluYXRpb25BbHBo
YUZvcm1hdCwgcGl4ZWxGb3JtYXQoKSwgY29sb3JTcGFjZSgpIH0sCiAgICAgICAgIGJ5dGVzUGVy
Um93KCksCi0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRhdGEpICsgZGVzdGlu
YXRpb25SZWN0LnkoKSAqIGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ICsgZGVzdGluYXRpb25SZWN0
LngoKSAqIDQKKyAgICAgICAgc3RhdGljX2Nhc3Q8dWludDhfdCo+KGRhdGEpICsgZGVzdGluYXRp
b25SZWN0LnkoKSAqIGRlc3RpbmF0aW9uLmJ5dGVzUGVyUm93ICsgZGVzdGluYXRpb25SZWN0Lngo
KSAqIDQKICAgICB9OwogCiAgICAgY29udmVydEltYWdlUGl4ZWxzKHNvdXJjZSwgZGVzdGluYXRp
b24sIGRlc3RpbmF0aW9uUmVjdC5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFu
ZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCmluZGV4IDFlNjJjY2Y3YTVhMzdhMzk1ZTUzZjIzM2U2
Njk1YzI3MzQ0ODZjMzcuLmEzNjE0MGFkNDFkZDkwZGQ3ZTU0ZmFhOWZlNTlmMmM5Mzk3MmE2NWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAK
QEAgLTUzMCwxMiArNTMwLDEwIEBAIHZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJv
Y2Vzc05hdGl2ZVNhbXBsZXMoQ0ZBcnJheVJlZiBuYXRpdmVTYW1wbGVzLCBjCiAKICAgICAgICAg
ICAgIC8vIEEgV2ViVlRUIGhlYWRlciBpcyB0ZXJtaW5hdGVkIGJ5ICJPbmUgb3IgbW9yZSBXZWJW
VFQgbGluZSB0ZXJtaW5hdG9ycyIgc28gYXBwZW5kIHR3byBsaW5lIGZlZWRzIHRvIG1ha2Ugc3Vy
ZSB0aGUgcGFyc2VyCiAgICAgICAgICAgICAvLyByZWNjb2duaXplZCB0aGlzIHN0cmluZyBhcyBh
IGZ1bGwgaGVhZGVyLgotICAgICAgICAgICAgU3RyaW5nQnVpbGRlciBoZWFkZXI7Ci0gICAgICAg
ICAgICBoZWFkZXIuYXBwZW5kQ2hhcmFjdGVycyhyZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2ln
bmVkIGNoYXIqPihDRkRhdGFHZXRCeXRlUHRyKHdlYnZ0dEhlYWRlckRhdGEpKSwgbGVuZ3RoKTsK
LSAgICAgICAgICAgIGhlYWRlci5hcHBlbmQoIlxuXG4iKTsKKyAgICAgICAgICAgIGF1dG8gaGVh
ZGVyID0gbWFrZVN0cmluZyhTdHJpbmdWaWV3IHsgQ0ZEYXRhR2V0Qnl0ZVB0cih3ZWJ2dHRIZWFk
ZXJEYXRhKSwgbGVuZ3RoIH0sICJcblxuIik7CiAKLSAgICAgICAgICAgIElORk9fTE9HKExPR0lE
RU5USUZJRVIsICJWVFQgaGVhZGVyICIsICZoZWFkZXIpOwotICAgICAgICAgICAgY2xpZW50KCkt
PnBhcnNlV2ViVlRURmlsZUhlYWRlcihoZWFkZXIudG9TdHJpbmcoKSk7CisgICAgICAgICAgICBJ
TkZPX0xPRyhMT0dJREVOVElGSUVSLCAiVlRUIGhlYWRlciAiLCBoZWFkZXIpOworICAgICAgICAg
ICAgY2xpZW50KCktPnBhcnNlV2ViVlRURmlsZUhlYWRlcihXVEZNb3ZlKGhlYWRlcikpOwogICAg
ICAgICAgICAgbV9oYXZlUmVwb3J0ZWRWVFRIZWFkZXIgPSB0cnVlOwogICAgICAgICB9IHdoaWxl
ICgwKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlv
bkNGLmNwcAppbmRleCA3MDljMDgwZDRmZmIwMjEzYzhkYjZmZGQ0YzhiZjc4YTdlMTI1NjZjLi4x
MWFkMTAxODBmMDBkNDJlMWI3MzRkNWQ2OTUzZTRlMGFhZTViYTBlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFW
Rm91bmRhdGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmNwcApAQCAtNzQsMTEgKzc0
LDExIEBAIFJlZlB0cjxVaW50OEFycmF5PiBDRE1TZXNzaW9uQVZGb3VuZGF0aW9uQ0Y6OmdlbmVy
YXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmLCBVCiAgICAgfQogCiAgICAgYXV0byBjZXJ0aWZp
Y2F0ZURhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgY2VydGlmaWNhdGUtPmJ5dGVMZW5ndGgoKSkpOwotICAgIENGRGF0YUFwcGVuZEJ5dGVzKGNl
cnRpZmljYXRlRGF0YS5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGNlcnRp
ZmljYXRlLT5iYXNlQWRkcmVzcygpKSwgY2VydGlmaWNhdGUtPmJ5dGVMZW5ndGgoKSk7CisgICAg
Q0ZEYXRhQXBwZW5kQnl0ZXMoY2VydGlmaWNhdGVEYXRhLmdldCgpLCBjZXJ0aWZpY2F0ZS0+ZGF0
YSgpLCBjZXJ0aWZpY2F0ZS0+Ynl0ZUxlbmd0aCgpKTsKIAogICAgIGF1dG8gYXNzZXRTdHIgPSBr
ZXlJRC51dGY4KCk7CiAgICAgYXV0byBhc3NldElEID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRh
YmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGFzc2V0U3RyLmxlbmd0aCgpKSk7Ci0gICAgQ0ZEYXRh
QXBwZW5kQnl0ZXMoYXNzZXRJRC5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+
KGFzc2V0U3RyLmRhdGEoKSksIGFzc2V0U3RyLmxlbmd0aCgpKTsKKyAgICBDRkRhdGFBcHBlbmRC
eXRlcyhhc3NldElELmdldCgpLCBhc3NldFN0ci5kYXRhQXNVSW50UHRyKCksIGFzc2V0U3RyLmxl
bmd0aCgpKTsKIAogICAgIENGRXJyb3JSZWYgY2ZFcnJvciA9IG51bGxwdHI7CiAgICAgYXV0byBr
ZXlSZXF1ZXN0ID0gYWRvcHRDRihBVkNGQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0Q3JlYXRl
U3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9yQXBwKG1fcmVxdWVzdC5nZXQoKSwgY2Vy
dGlmaWNhdGVEYXRhLmdldCgpLCBhc3NldElELmdldCgpLCBudWxscHRyLCAmY2ZFcnJvcikpOwpA
QCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGOjpyZWxlYXNl
S2V5cygpCiBib29sIENETVNlc3Npb25BVkZvdW5kYXRpb25DRjo6dXBkYXRlKFVpbnQ4QXJyYXkq
IGtleSwgUmVmUHRyPFVpbnQ4QXJyYXk+JiBuZXh0TWVzc2FnZSwgdW5zaWduZWQgc2hvcnQmIGVy
cm9yQ29kZSwgdWludDMyX3QmIHN5c3RlbUNvZGUpCiB7CiAgICAgYXV0byBrZXlEYXRhID0gYWRv
cHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtleS0+Ynl0ZUxl
bmd0aCgpKSk7Ci0gICAgQ0ZEYXRhQXBwZW5kQnl0ZXMoa2V5RGF0YS5nZXQoKSwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBVSW50OCo+KGtleS0+YmFzZUFkZHJlc3MoKSksIGtleS0+Ynl0ZUxlbmd0
aCgpKTsKKyAgICBDRkRhdGFBcHBlbmRCeXRlcyhrZXlEYXRhLmdldCgpLCBrZXktPmRhdGEoKSwg
a2V5LT5ieXRlTGVuZ3RoKCkpOwogCiAgICAgQVZDRkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVz
dEZpbmlzaExvYWRpbmdXaXRoUmVzcG9uc2UobV9yZXF1ZXN0LmdldCgpLCBudWxscHRyLCBrZXlE
YXRhLmdldCgpLCBudWxscHRyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJh
bmRUZXh0VHJhY2tQcml2YXRlQVZDRi5jcHAKaW5kZXggYjQ1OWY2ZjE5YmY3NTRjZTllNTUyMjI5
NWNiMmVhZWU4MTRjNmYyNy4uM2VlNjAxZGQyNzA1YjIwYjAyMGVkN2RjOTU3YWRlODZlODc1MDVm
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWQ0YuY3BwCkBAIC0yMDQsNyArMjA0LDcgQEAgYm9vbCBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZDRjo6cmVhZE5hdGl2ZVNhbXBsZUJ1ZmZlcihDRkFycmF5UmVmIG5hdGl2ZVNhbXBsZXMKICAg
ICB9CiAKICAgICBtX3NhbXBsZUlucHV0QnVmZmVyLmdyb3cobV9zYW1wbGVJbnB1dEJ1ZmZlci5z
aXplKCkgKyBidWZmZXJMZW5ndGgpOwotICAgIENGRGF0YUdldEJ5dGVzKHNhbXBsZUJ1ZmZlci0+
YnVmZmVyLCBDRlJhbmdlTWFrZSgwLCBidWZmZXJMZW5ndGgpLCByZWludGVycHJldF9jYXN0PFVJ
bnQ4Kj4obV9zYW1wbGVJbnB1dEJ1ZmZlci5kYXRhKCkpICsgbV9zYW1wbGVJbnB1dEJ1ZmZlci5z
aXplKCkgLSBidWZmZXJMZW5ndGgpOworICAgIENGRGF0YUdldEJ5dGVzKHNhbXBsZUJ1ZmZlci0+
YnVmZmVyLCBDRlJhbmdlTWFrZSgwLCBidWZmZXJMZW5ndGgpLCBtX3NhbXBsZUlucHV0QnVmZmVy
LmRhdGEoKSArIG1fc2FtcGxlSW5wdXRCdWZmZXIuc2l6ZSgpIC0gYnVmZmVyTGVuZ3RoKTsKIAog
ICAgIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUobV9zYW1wbGVJbnB1dEJ1ZmZlci5kYXRh
KCksIG1fc2FtcGxlSW5wdXRCdWZmZXIuc2l6ZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtQnVmZmVyLmNwcAppbmRleCBjNjgxODcwNDJkNjcwNWY3ODI2Yjg1MjVhMjQ3
Njg4ZDU2ZGVkMDUzLi5lZTZhNWQyZWVkNmEzZjk3ZTc0NjhjYWI5NmU5ZWUzNGQ2YjgzMDZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcApAQCAtNzAyLDcg
KzcwMiw3IEBAIEl0ZW1CdWZmZXJIYW5kbGUgSXRlbUJ1ZmZlcjo6Y3JlYXRlSXRlbUJ1ZmZlcihz
aXplX3QgY2FwYWNpdHkpCiAgICAgY29uc3RleHByIHNpemVfdCBkZWZhdWx0SXRlbUJ1ZmZlckNh
cGFjaXR5ID0gMSA8PCAxMDsKIAogICAgIGF1dG8gbmV3QnVmZmVyQ2FwYWNpdHkgPSBzdGQ6Om1h
eChjYXBhY2l0eSwgZGVmYXVsdEl0ZW1CdWZmZXJDYXBhY2l0eSk7Ci0gICAgYXV0byogYnVmZmVy
ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZmFzdE1hbGxvYyhuZXdCdWZmZXJDYXBhY2l0
eSkpOworICAgIGF1dG8qIGJ1ZmZlciA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihmYXN0TWFsbG9j
KG5ld0J1ZmZlckNhcGFjaXR5KSk7CiAgICAgbV9hbGxvY2F0ZWRCdWZmZXJzLmFwcGVuZChidWZm
ZXIpOwogICAgIHJldHVybiB7IEl0ZW1CdWZmZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBidWZm
ZXIsIG5ld0J1ZmZlckNhcGFjaXR5IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVyYXRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVyYXRvci5jcHAKaW5kZXggMGFlZjEyOGFiM2I1YjRiNWIwMjAxODAzMzIyYzA0NDkzMTY3ZTUy
NC4uYTBjODIxNGRkMzY1MjZhMTE3MjVhMmY5NjdjNDdhMWQ2NTBhMTAyNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcApAQCAtNzksNyArNzksNyBAQCB2b2lkIERp
c3BsYXlMaXN0OjpJdGVyYXRvcjo6dXBkYXRlQ3VycmVudEl0ZW0oKQogICAgIH0KIAogICAgIGF1
dG8gcGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW0gPSBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbUluQnl0
ZXMoaXRlbVR5cGUpOwotICAgIG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gPSBwYWRkZWRTaXplT2ZU
eXBlQW5kSXRlbSA8PSBzaXplT2ZGaXhlZEJ1ZmZlckZvckN1cnJlbnRJdGVtID8gbV9maXhlZEJ1
ZmZlckZvckN1cnJlbnRJdGVtIDogcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZmFzdE1hbGxv
YyhwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbSkpOworICAgIG1fY3VycmVudEJ1ZmZlckZvckl0ZW0g
PSBwYWRkZWRTaXplT2ZUeXBlQW5kSXRlbSA8PSBzaXplT2ZGaXhlZEJ1ZmZlckZvckN1cnJlbnRJ
dGVtID8gbV9maXhlZEJ1ZmZlckZvckN1cnJlbnRJdGVtIDogc3RhdGljX2Nhc3Q8dWludDhfdCo+
KGZhc3RNYWxsb2MocGFkZGVkU2l6ZU9mVHlwZUFuZEl0ZW0pKTsKICAgICBpZiAoaXNJbmxpbmVJ
dGVtKGl0ZW1UeXBlKSkgewogICAgICAgICBpZiAoVU5MSUtFTFkoc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KG1fY3VycmVudEVuZE9mQnVmZmVyIC0gbV9jdXJzb3IpIDwgcGFkZGVkU2l6ZU9mVHlwZUFu
ZEl0ZW0pKSB7CiAgICAgICAgICAgICBtX2lzVmFsaWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVh
ZGVyLmgKaW5kZXggNDI3NjQ2YzFkYjMwMDg1ZWIzMmMwMWRhNTc0NmQyYjkzZjBlNGQyNC4uNDIx
NDZlMDMyOTMyMzY5OTc4OWViNWU0MmFmNGM3M2QzNGFiOWNjNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVhZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVh
ZGVyLmgKQEAgLTI4NSw5ICsyODUsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgcGFyc2Uoc2l6ZV90
IGRhdGFQb3NpdGlvbiwgc2l6ZV90IGxlbiwgYm9vbCBwYXJzZVNpemVPbmx5KTsKICAgICB2b2lk
IHNldFJlbWFpbmluZ0J5dGVzKHNpemVfdCk7CiAKLSAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBk
YXRhKHNpemVfdCBkYXRhUG9zaXRpb24pIGNvbnN0CisgICAgY29uc3QgdWludDhfdCogZGF0YShz
aXplX3QgZGF0YVBvc2l0aW9uKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KG1fZGF0YS0+ZGF0YSgpKSArIGRhdGFQb3Np
dGlvbjsKKyAgICAgICAgcmV0dXJuIG1fZGF0YS0+ZGF0YSgpICsgZGF0YVBvc2l0aW9uOwogICAg
IH0KIAogICAgIHZvaWQgYWRkRnJhbWVJZk5lY2Vzc2FyeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMubW0KaW5kZXggOGU5NWM1NDY5YTFh
OTYzYzZkY2RiZGYxMzg4MmIwNzNiMmYwMzc1OS4uOGZkZDE4ZjJiMDRmOTYzNjcyMTFiYzI5OTkw
YjgyM2RjZGMwMTk2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NT
TEtleUdlbmVyYXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU1NM
S2V5R2VuZXJhdG9yTWFjLm1tCkBAIC0xODksNyArMTg5LDcgQEAgc3RhdGljIFN0cmluZyBzaWdu
ZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZSwgY29uc3QgQ1N0
cmluZyYKIAogICAgIC8vIExlbmd0aCBuZWVkcyB0byBhY2NvdW50IGZvciB0aGUgbnVsbCB0ZXJt
aW5hdG9yLgogICAgIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZS5wdWJsaWNLZXlBbmRDaGFs
bGVuZ2UuY2hhbGxlbmdlLkxlbmd0aCA9IGNoYWxsZW5nZS5sZW5ndGgoKSArIDE7Ci0gICAgc2ln
bmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlLnB1YmxpY0tleUFuZENoYWxsZW5nZS5jaGFsbGVuZ2Uu
RGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGNvbnN0X2Nhc3Q8Y2hhcio+KGNoYWxs
ZW5nZS5kYXRhKCkpKTsKKyAgICBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2UucHVibGljS2V5
QW5kQ2hhbGxlbmdlLmNoYWxsZW5nZS5EYXRhID0gY29uc3RfY2FzdDx1aW50OF90Kj4oY2hhbGxl
bmdlLmRhdGFBc1VJbnQ4UHRyKCkpOwogCiAgICAgQ1NTTV9EQVRBIGVuY29kZWRQdWJsaWNLZXlB
bmRDaGFsbGVuZ2UgeyAwLCBudWxscHRyIH07CiAgICAgaWYgKFNlY0FzbjFFbmNvZGVJdGVtKGNv
ZGVyLCAmc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlLnB1YmxpY0tleUFuZENoYWxsZW5nZSwg
cHVibGljS2V5QW5kQ2hhbGxlbmdlVGVtcGxhdGUsICZlbmNvZGVkUHVibGljS2V5QW5kQ2hhbGxl
bmdlKSAhPSBub0VycikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKaW5kZXggZGYy
MTdkYmFlY2Q0NjFhOWQ5YmUzOGY1NWJjNzkzNTVkYjJiMmIxNy4uZTAzZGZhZmQyNDQ4YWU1NDUz
ZTQxNWVkODE2YTA1Y2FlZGIwMTJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5j
cHAKQEAgLTE0NSw3ICsxNDUsNyBAQCBzdGF0aWMgdm9pZCBhZGRTdHJpbmdUb1NIQTEoU0hBMSYg
c2hhMSwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgfQogCiAgICAgYXV0byB1dGY4ID0gc3Ry
aW5nLnV0ZjgoKTsKLSAgICBzaGExLmFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KHV0ZjguZGF0YSgpKSwgdXRmOC5sZW5ndGgoKSArIDEpOyAvLyBJbmNsdWRlIHRlcm1p
bmF0aW5nIG51bGwgYnl0ZS4KKyAgICBzaGExLmFkZEJ5dGVzKHV0ZjguZGF0YUFzVUludDhQdHIo
KSwgdXRmOC5sZW5ndGgoKSArIDEpOyAvLyBJbmNsdWRlIHRlcm1pbmF0aW5nIG51bGwgYnl0ZS4K
IH0KIAogU3RyaW5nIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6Omhhc2hTdHJpbmdXaXRoU2Fs
dChjb25zdCBTdHJpbmcmIGlkLCBjb25zdCBTdHJpbmcmIGhhc2hTYWx0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YUJ1aWxkZXIuY3BwCmluZGV4IDdl
M2QxYjkxZjA2Mzc0ZTk4NGNmNTFlOGM3N2M0ZjcwZDkyMWRmYTkuLmRiNzU3MTYwZmNiZGJmYWFl
YTBkYWUwYWUxNjJmNDAzODEzZTEwNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHAKQEAgLTIxMSw3ICsyMTEsNyBAQCB2b2lk
IGFkZEtleVZhbHVlUGFpckFzRm9ybURhdGEoVmVjdG9yPGNoYXI+JiBidWZmZXIsIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYga2V5LAogCiB2b2lkIGVuY29kZVN0cmluZ0FzRm9ybURhdGEoVmVjdG9y
PGNoYXI+JiBidWZmZXIsIGNvbnN0IENTdHJpbmcmIHN0cmluZykKIHsKLSAgICBhcHBlbmRGb3Jt
VVJMRW5jb2RlZChidWZmZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0cmlu
Zy5kYXRhKCkpLCBzdHJpbmcubGVuZ3RoKCkpOworICAgIGFwcGVuZEZvcm1VUkxFbmNvZGVkKGJ1
ZmZlciwgc3RyaW5nLmRhdGFBc1VJbnQ4UHRyKCksIHN0cmluZy5sZW5ndGgoKSk7CiB9CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFt
SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFt
SGFuZGxlLmNwcAppbmRleCA2ZGUxYTNmOGExZjliNjNkMWU3MWZiM2FhN2NlNDI1MzQxYTY1MWQ5
Li4yNzBjYWNiZTAyMDI4NmY1NzI1MzU3ZjIxNTI5NTFmNWYzNmY3ZTg1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGUuY3Bw
CkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpzZW5kSGFuZHNoYWtl
KENTdHJpbmcmJiBoYW5kc2hha2UsIHN0ZDo6b3B0aW9uYWw8Q29va2llCiB7CiAgICAgaWYgKG1f
c3RhdGUgPT0gQ29ubmVjdGluZyB8fCBtX3N0YXRlID09IENsb3NpbmcpCiAgICAgICAgIHJldHVy
biBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSwgZmFsc2UpOwotICAgIHBsYXRmb3JtU2VuZEhhbmRz
aGFrZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihoYW5kc2hha2UuZGF0YSgpKSwg
aGFuZHNoYWtlLmxlbmd0aCgpLCBXVEZNb3ZlKGhlYWRlckZpZWxkUHJveHkpLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CisgICAgcGxhdGZvcm1TZW5kSGFuZHNoYWtlKGhhbmRzaGFrZS5k
YXRhQXNVSW50OFB0cigpLCBoYW5kc2hha2UubGVuZ3RoKCksIFdURk1vdmUoaGVhZGVyRmllbGRQ
cm94eSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBTb2NrZXRTdHJl
YW1IYW5kbGU6OmNsb3NlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKaW5kZXggYjdlZjViODc1ODRm
ZmJiNjZhZjdkOWExMTNmNDMwNmQ5MTVhMTY5Yi4uZWUxYWRkMDM3NGMzZDYxOTQyNWFiNTcxMjU3
MzdkMmU0ZWU2OGEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKQEAgLTIyOCw3ICsyMjgsNyBA
QCB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKQogICAgIFN0
cmluZyBwYXJ0aXRpb24gPSBjYWNoZVBhcnRpdGlvbigpOwogICAgIGlmICghcGFydGl0aW9uLmlz
TnVsbCgpICYmICFwYXJ0aXRpb24uaXNFbXB0eSgpKSB7CiAgICAgICAgIENTdHJpbmcgdXRmOFN0
cmluZyA9IHBhcnRpdGlvbi51dGY4KCk7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
cGFydGl0aW9uVmFsdWUgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEJ5dGVzKDAsIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPih1dGY4U3RyaW5nLmRhdGEoKSksIHV0ZjhTdHJpbmcu
bGVuZ3RoKCksIGtDRlN0cmluZ0VuY29kaW5nVVRGOCwgZmFsc2UpKTsKKyAgICAgICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBwYXJ0aXRpb25WYWx1ZSA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVX
aXRoQnl0ZXMoMCwgdXRmOFN0cmluZy5kYXRhQXNVSW50OFB0cigpLCB1dGY4U3RyaW5nLmxlbmd0
aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIGZhbHNlKSk7CiAgICAgICAgIF9DRlVSTFJlcXVl
c3RTZXRQcm90b2NvbFByb3BlcnR5KGNmUmVxdWVzdC5nZXQoKSwgX2tDRlVSTENhY2hlUGFydGl0
aW9uS2V5LCBwYXJ0aXRpb25WYWx1ZS5nZXQoKSk7CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENG
TmV0LmgKaW5kZXggYmNjNjIyODY2MGUzODY4ZWM3YzFhNmI0N2RlZTFlZDcxYmYwM2Q5Yy4uOTYx
NjBjMmU2NzM0NjY3N2IwYjBiNjgxODBiN2EzMjgxYzU3NzIzOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQu
aApAQCAtMTMxLDcgKzEzMSw3IEBAIGlubGluZSBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGh0dHBI
ZWFkZXJWYWx1ZVVzaW5nU3VpdGFibGVFbmNvZGluZyhIVFRQSGVhZGVyTWFwCiAgICAgaWYgKGhl
YWRlci5rZXlBc0hUVFBIZWFkZXJOYW1lICYmICpoZWFkZXIua2V5QXNIVFRQSGVhZGVyTmFtZSA9
PSBIVFRQSGVhZGVyTmFtZTo6TGFzdEV2ZW50SUQgJiYgIWhlYWRlci52YWx1ZS5pc0FsbEFTQ0lJ
KCkpIHsKICAgICAgICAgYXV0byB1dGY4VmFsdWUgPSBoZWFkZXIudmFsdWUudXRmOCgpOwogICAg
ICAgICAvLyBDb25zdHJ1Y3RpbmcgYSBzdHJpbmcgd2l0aCB0aGUgVVRGLTggYnl0ZXMgYnV0IGNs
YWltaW5nIHRoYXQgaXTigJlzIExhdGluLTEgaXMgdGhlIHdheSB0byBnZXQgQ0ZOZXR3b3JrIHRv
IHB1dCB0aG9zZSBVVEYtOCBieXRlcyBvbiB0aGUgd2lyZS4KLSAgICAgICAgcmV0dXJuIGFkb3B0
Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXMobnVsbHB0ciwgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBVSW50OCo+KHV0ZjhWYWx1ZS5kYXRhKCkpLCB1dGY4VmFsdWUubGVuZ3RoKCksIGtDRlN0cmlu
Z0VuY29kaW5nSVNPTGF0aW4xLCBmYWxzZSkpOworICAgICAgICByZXR1cm4gYWRvcHRDRihDRlN0
cmluZ0NyZWF0ZVdpdGhCeXRlcyhudWxscHRyLCB1dGY4VmFsdWUuZGF0YUFzVUludDhQdHIoKSwg
dXRmOFZhbHVlLmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgZmFsc2UpKTsK
ICAgICB9CiAgICAgcmV0dXJuIGhlYWRlci52YWx1ZS5jcmVhdGVDRlN0cmluZygpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1I
YW5kbGVJbXBsQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9T
b2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwCmluZGV4IGQxMzc5NDk4YWFiODFlZTJjYTdh
YTA4OWIxYjUwZjk5NWMyODI5NDcuLjU1YjlmMWVkNGEwZDMyNWE2YjE2YTExNDM4OWYzOWM3ZGVk
MzZjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29j
a2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAKQEAgLTcyMiw3ICs3
MjIsNyBAQCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6cGxh
dGZvcm1TZW5kSW50ZXJuYWwoY29uc3QgdWludDhfdAogICAgIGlmICghQ0ZXcml0ZVN0cmVhbUNh
bkFjY2VwdEJ5dGVzKG1fd3JpdGVTdHJlYW0uZ2V0KCkpKQogICAgICAgICByZXR1cm4gMDsKIAot
ICAgIENGSW5kZXggcmVzdWx0ID0gQ0ZXcml0ZVN0cmVhbVdyaXRlKG1fd3JpdGVTdHJlYW0uZ2V0
KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihkYXRhKSwgbGVuZ3RoKTsKKyAgICBD
RkluZGV4IHJlc3VsdCA9IENGV3JpdGVTdHJlYW1Xcml0ZShtX3dyaXRlU3RyZWFtLmdldCgpLCBk
YXRhLCBsZW5ndGgpOwogICAgIGlmIChyZXN1bHQgPT0gLTEpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCmluZGV4IDA1YjRlMjliYzkzMWMxNDM0NWI0Nzk1OThi
YWVlNjdlYjRiNjhjMmEuLjk5OTU1NWViNTIxMWYxYTQ0MmQwODVkYWRlNjZhODVmODQ1ZGE3N2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2Fj
aGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxDYWNoZUVudHJ5LmNwcApAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgQ3VybENhY2hlRW50cnk6
OmRpZEZpbmlzaExvYWRpbmcoKQogdm9pZCBDdXJsQ2FjaGVFbnRyeTo6Z2VuZXJhdGVCYXNlRmls
ZW5hbWUoY29uc3QgQ1N0cmluZyYgdXJsKQogewogICAgIFNIQTEgc2hhMTsKLSAgICBzaGExLmFk
ZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHVybC5kYXRhKCkpLCB1cmwu
bGVuZ3RoKCkpOworICAgIHNoYTEuYWRkQnl0ZXModXJsLmRhdGFBc1VJbnQ4UHRyKCksIHVybC5s
ZW5ndGgoKSk7CiAKICAgICBTSEExOjpEaWdlc3Qgc3VtOwogICAgIHNoYTEuY29tcHV0ZUhhc2go
c3VtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5j
cHAKaW5kZXggNmQ4ZGM3MmVkY2JkNDI4ODdlNjc3NWExNjAyODU0N2E5N2M2MzFiOS4uMmQ4MGYz
YjFiNzc0YTg1M2NmMjEyNzU3MGRmMTg4MDUxMmEyZDAyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAKQEAgLTMwNCw3ICszMDQsNyBAQCBh
dXRvIFNRTGl0ZVN0YXRlbWVudDo6Y29sdW1uQmxvYlZpZXcoaW50IGNvbCkgLT4gQmxvYlZpZXcK
ICAgICBpZiAoYmxvYlNpemUgPD0gMCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIHJldHVy
biB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJsb2IpLCBzdGF0aWNfY2FzdDxz
aXplX3Q+KGJsb2JTaXplKSB9OworICAgIHJldHVybiB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4
X3QqPihibG9iKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihibG9iU2l6ZSkgfTsKIH0KIAogYm9vbCBT
UUxpdGVTdGF0ZW1lbnQ6Omhhc1N0YXJ0ZWRTdGVwcGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0NETUZhY3RvcnkuY3BwCmluZGV4IDk5MmU0YzEzYTdlZThlZTQ3ZTg0OTFmN2I4ZTMw
NDIwZWQzZWUyMWQuLmJjMzI0NmJmNmIyYzIwNjM4YmZiNDIyNWNmNzBkNTFhOGZiMzBmMDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCkBAIC0yMTMsNyArMjEz
LDcgQEAgYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgY29uc3QgU2hhcmVkQnVmZmUKIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gTW9j
a0NETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25z
dAogewotICAgIGlmICghY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgTENoYXIqPihyZXNwb25zZS5kYXRhKCkpLCByZXNwb25zZS5zaXplKCkpKQorICAgIGlmICgh
Y2hhcmFjdGVyc0FyZUFsbEFTQ0lJKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZUFy
cmF5ID0gU3RyaW5nKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKS5zcGxpdCgnICcp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRUUFBhcnNlci5jcHAgYi9T
b3VyY2UvV2ViRHJpdmVyL3NvY2tldC9IVFRQUGFyc2VyLmNwcAppbmRleCA3YTViMjI4ZDVmZjcx
NDZkYTdiMTE3N2NiMTRjYmE0ZTQzMGIzN2ZhLi5jODJhZDk1N2Y3MTNjM2FlNzY5NGNlODYzZTU3
NTQ1MDJiYzAyNzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9IVFRQUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9IVFRQUGFyc2VyLmNwcApAQCAt
MTMwLDcgKzEzMCw3IEBAIGJvb2wgSFRUUFBhcnNlcjo6cmVhZExpbmUoU3RyaW5nJiBsaW5lKQog
ICAgIGlmIChwb3NpdGlvbiA9PSBub3RGb3VuZCB8fCBwb3NpdGlvbiArIDEgPT0gbGVuZ3RoIHx8
IG1fYnVmZmVyW3Bvc2l0aW9uICsgMV0gIT0gMHgwYSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgbGluZSA9IFN0cmluZzo6ZnJvbVVURjgocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obV9i
dWZmZXIuZGF0YSgpKSwgcG9zaXRpb24pOworICAgIGxpbmUgPSBTdHJpbmc6OmZyb21VVEY4KG1f
YnVmZmVyLmRhdGEoKSwgcG9zaXRpb24pOwogICAgIGlmIChsaW5lLmlzTnVsbCgpKQogICAgICAg
ICBMT0dfRVJST1IoIkNsaWVudCBlcnJvcjogaW52YWxpZCBlbmNvZGluZyBpbiBIVFRQIGhlYWRl
ci4iKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvU2Vzc2lvbkhvc3RT
b2NrZXQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvU2Vzc2lvbkhvc3RTb2NrZXQuY3Bw
CmluZGV4IDBmNjU2NjhmYzJmYjg5ZmQ0ZWFhN2RjNDE0ODdiZjFkNjEyMGNhZjAuLjY4OTJiM2Yz
ODBjZWI3MjU1Mzk1NzcxOTI1NmI1YTA5ZDk5ZTlmOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJE
cml2ZXIvc29ja2V0L1Nlc3Npb25Ib3N0U29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVy
L3NvY2tldC9TZXNzaW9uSG9zdFNvY2tldC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgdm9pZCBTZXNz
aW9uSG9zdDo6c2VuZFdlYkluc3BlY3RvckV2ZW50KGNvbnN0IFN0cmluZyYgZXZlbnQpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGNvbnN0IENTdHJpbmcgbWVzc2FnZSA9IGV2ZW50LnV0ZjgoKTsK
LSAgICBzZW5kKG1fY2xpZW50SUQudmFsdWUoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4obWVzc2FnZS5kYXRhKCkpLCBtZXNzYWdlLmxlbmd0aCgpKTsKKyAgICBzZW5kKG1fY2xp
ZW50SUQudmFsdWUoKSwgbWVzc2FnZS5kYXRhQXNVSW50OFB0cigpLCBtZXNzYWdlLmxlbmd0aCgp
KTsKIH0KIAogdm9pZCBTZXNzaW9uSG9zdDo6Y29ubmVjdFRvQnJvd3NlcihGdW5jdGlvbjx2b2lk
IChzdGQ6Om9wdGlvbmFsPFN0cmluZz4gZXJyb3IpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyUHJveHkuY3BwCmluZGV4IDRmNThlZDFjNTQwZWVhOGFiYzI5NzZjYzgxNWY3ODZmMmQwNjY4
MDkuLmIwN2UzNTYxZTliN2ZiZDg4OTRiODUxNzMzZjc2Yjk2NjM0Nzc3MjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eS5jcHAKQEAgLTY5MSw3ICs2OTEsNyBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6
Om1lZGlhUGxheWVyS2V5TmVlZGVkKFVpbnQ4QXJyYXkqIG1lc3NhZ2UpCiAjaWYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJJ
bml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChjb25zdCBTdHJpbmcmIGluaXREYXRhVHlwZSwg
UmVmUHRyPEFycmF5QnVmZmVyPiYmIGluaXREYXRhKQogewotICAgIG1fd2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24tPnNlbmQoTWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6SW5pdGlhbGl6
YXRpb25EYXRhRW5jb3VudGVyZWQoaW5pdERhdGFUeXBlLCBJUEM6OkRhdGFSZWZlcmVuY2UocmVp
bnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaW5pdERhdGEtPmRhdGEoKSksIGluaXREYXRhLT5ieXRl
TGVuZ3RoKCkpKSwgbV9pZCk7CisgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpJbml0aWFsaXphdGlvbkRhdGFFbmNvdW50
ZXJlZChpbml0RGF0YVR5cGUsIElQQzo6RGF0YVJlZmVyZW5jZShzdGF0aWNfY2FzdDx1aW50OF90
Kj4oaW5pdERhdGEtPmRhdGEoKSksIGluaXREYXRhLT5ieXRlTGVuZ3RoKCkpKSwgbV9pZCk7CiB9
CiAKIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bWVkaWFQbGF5ZXJXYWl0aW5nRm9yS2V5
Q2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlVGV4dFRyYWNrUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZVRleHRUcmFja1Byb3h5LmNwcAppbmRleCA5ZWM1NWY2MTZmNTg0M2I2YzgwMjdiYzE5ZGE3
YTYwNThkNGFhNjA0Li5iNDFhMDI4MWY4NThhMTIyZTBmYWE2YmI3MTk0ZWU1MzBjYzlmMWYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNr
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0
VHJhY2tQcm94eS5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIFJlbW90ZVRleHRUcmFja1By
b3h5OjphZGREYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYg
ZQogICAgIGlmICghbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OkFkZERhdGFDdWUobV9pZGVudGlmaWVyLCBzdGFy
dCwgZW5kLCBJUEM6OkRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
Kj4oZGF0YSksIGxlbmd0aCkpLCBtX21lZGlhUGxheWVySWRlbnRpZmllcik7CisgICAgbV9jb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLT5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlOjpBZGREYXRhQ3VlKG1faWRlbnRpZmllciwgc3RhcnQsIGVuZCwgSVBD
OjpEYXRhUmVmZXJlbmNlKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgbGVuZ3Ro
KSksIG1fbWVkaWFQbGF5ZXJJZGVudGlmaWVyKTsKIH0KIAogI2lmIEVOQUJMRShEQVRBQ1VFX1ZB
TFVFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVN
ZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy93ZWJydGMvUmVtb3Rl
TWVkaWFSZWNvcmRlci5jcHAKaW5kZXggYWJhYTViYmM0ZDg0MTA0ZmFhOTMyZWM3YThkNDI1Nzdk
Yjg5ZmYyZi4uOGMxMjU0OWYxNDMyODlmZjFmMmRiYjM2NDU4N2MyZjY4ZWFjYTZiYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL3dlYnJ0Yy9SZW1vdGVNZWRpYVJlY29yZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mvd2VicnRjL1JlbW90ZU1lZGlhUmVj
b3JkZXIuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgdm9pZCBSZW1vdGVNZWRpYVJlY29yZGVyOjp2
aWRlb1NhbXBsZUF2YWlsYWJsZShXZWJDb3JlOjpSZW1vdGVWaWRlb1NhbXBsZSYmIHJlbW8KIHZv
aWQgUmVtb3RlTWVkaWFSZWNvcmRlcjo6ZmV0Y2hEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
SVBDOjpEYXRhUmVmZXJlbmNlJiYsIGRvdWJsZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgbV93cml0ZXItPmZldGNoRGF0YShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oYXV0byYmIGRhdGEsIGF1dG8gdGltZUNvZGUpIG11dGFibGUgewotICAg
ICAgICBhdXRvKiBwb2ludGVyID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0
YSA/IGRhdGEtPmRhdGEoKSA6IG51bGxwdHIpOworICAgICAgICBhdXRvKiBwb2ludGVyID0gZGF0
YSA/IGRhdGEtPmRhdGEoKSA6IG51bGxwdHI7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQ
Qzo6RGF0YVJlZmVyZW5jZSB7IHBvaW50ZXIsIGRhdGEgPyBkYXRhLT5zaXplKCkgOiAwIH0sIHRp
bWVDb2RlKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YUN1cmwuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhQ3VybC5jcHAKaW5kZXggMTkyNDgyYmY5
ZjQzNGRjMTk5ZDM3YWQ0MTE4Mjk0YWUxOWRjNjZjYS4uOGJlYTg4OTNhYmFhNzgxOTdlNjU4NTZm
MjQ1NTVmN2FmZGY1NzgwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhQ3VybC5jcHAKQEAgLTczLDcgKzczLDcg
QEAgYm9vbCBEYXRhOjphcHBseShjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IHVpbnQ4X3QqLCBz
aXplX3QpPiYgYXBwbGllcikgY29uc3QKICAgICBpZiAoaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gYXBwbGllcihyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihkYXRhKCkpLCBzaXplKCkpOworICAgIHJldHVybiBhcHBsaWVyKGRhdGEoKSwgc2l6
ZSgpKTsKIH0KIAogRGF0YSBEYXRhOjpzdWJyYW5nZShzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6
ZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlS2V5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlS2V5LmNwcAppbmRleCBmOGYzNDEwZGNhMDVhYTE5NDE2Y2JjNDg1MTVmYTBl
ZTM0YmNjZTJhLi4wOGExZGQxMDAzYzA1OTg5Y2IwNWNhZDlkNWEwOGQ3YmY5MWU4Njk2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUtl
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVLZXkuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHN0YXRpYyB2b2lkIGhhc2hTdHJpbmcoU0hBMSYg
c2hhMSwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgfQogICAgIGF1dG8gY1N0cmluZyA9IHN0
cmluZy51dGY4KCk7CiAgICAgLy8gSW5jbHVkZSB0ZXJtaW5hdGluZyBudWxsIGJ5dGUuCi0gICAg
c2hhMS5hZGRCeXRlcyhyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihjU3RyaW5nLmRh
dGEoKSksIGNTdHJpbmcubGVuZ3RoKCkgKyAxKTsKKyAgICBzaGExLmFkZEJ5dGVzKGNTdHJpbmcu
ZGF0YUFzVUludDhQdHIoKSwgY1N0cmluZy5sZW5ndGgoKSArIDEpOwogfQogCiBLZXk6Okhhc2hU
eXBlIEtleTo6Y29tcHV0ZUhhc2goY29uc3QgU2FsdCYgc2FsdCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJLaXREaXJlY3RvcnlJbnB1dFN0
cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViS2l0RGlyZWN0
b3J5SW5wdXRTdHJlYW0uY3BwCmluZGV4IDE0NTRhMWYwNmM3ZWQ4OGNiYWI2NjY5YWFlZmQ0NjJi
OTNhYjZjZTAuLmNmMmFmOTEyMjNkODA0YmFlNDcyZTQ3NjY0MDEzYWExMGEwYTUwYWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJLaXREaXJlY3RvcnlJ
bnB1dFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dl
YktpdERpcmVjdG9yeUlucHV0U3RyZWFtLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIHN0YXRpYyBn
c3NpemUgd2Via2l0RGlyZWN0b3J5SW5wdXRTdHJlYW1SZWFkKEdJbnB1dFN0cmVhbSogaW5wdXQs
IHZvaWQqIGJ1ZmZlciwKICAgICAgICAgZ3NpemUgYnVmZmVyU2l6ZTsKICAgICAgICAgYXV0byog
YnVmZmVyRGF0YSA9IGdfYnl0ZXNfZ2V0X2RhdGEoc3RyZWFtLT5wcml2LT5idWZmZXIuZ2V0KCks
ICZidWZmZXJTaXplKTsKICAgICAgICAgZ3NpemUgYnl0ZXNSZWFkID0gc3RkOjptaW4oYnVmZmVy
U2l6ZSwgY291bnQgLSB0b3RhbEJ5dGVzUmVhZCk7Ci0gICAgICAgIG1lbWNweShyZWludGVycHJl
dF9jYXN0PGNoYXIqPihidWZmZXIpICsgdG90YWxCeXRlc1JlYWQsIGJ1ZmZlckRhdGEsIGJ5dGVz
UmVhZCk7CisgICAgICAgIG1lbWNweShzdGF0aWNfY2FzdDxjaGFyKj4oYnVmZmVyKSArIHRvdGFs
Qnl0ZXNSZWFkLCBidWZmZXJEYXRhLCBieXRlc1JlYWQpOwogICAgICAgICBpZiAoYnl0ZXNSZWFk
ID09IGJ1ZmZlclNpemUpCiAgICAgICAgICAgICBzdHJlYW0tPnByaXYtPmJ1ZmZlciA9IG51bGxw
dHI7CiAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0FyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FyZ3VtZW50
Q29kZXJzLmNwcAppbmRleCA3NDY0MjgxM2Y0NzgxOTZjMGM3OGNlYjc4N2UzNjZkYzI4ZGM5MjYy
Li44MTBlZTJjZTUxZjI3YzJkYmQ2MDdlNTMyYWEyNmQ2MDU2OWFiMjliIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuY3BwCkBAIC04Miw3ICs4Miw3IEBA
IHZvaWQgQXJndW1lbnRDb2RlcjxDU3RyaW5nPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IENTdHJpbmcmIHN0cmluZykKIAogICAgIHVpbnQzMl90IGxlbmd0aCA9IHN0cmluZy5sZW5n
dGgoKTsKICAgICBlbmNvZGVyIDw8IGxlbmd0aDsKLSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVu
Z3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzdHJpbmcuZGF0YSgpKSwg
bGVuZ3RoLCAxKTsKKyAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShzdHJpbmcuZGF0
YUFzVUludDhQdHIoKSwgbGVuZ3RoLCAxKTsKIH0KIAogV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wg
QXJndW1lbnRDb2RlcjxDU3RyaW5nPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIENTdHJpbmcm
IHJlc3VsdCkKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8U3RyaW5nPjo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIGVuY29k
ZXIgPDwgbGVuZ3RoIDw8IGlzOEJpdDsKIAogICAgIGlmIChpczhCaXQpCi0gICAgICAgIGVuY29k
ZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KHN0cmluZy5jaGFyYWN0ZXJzOCgpKSwgbGVuZ3RoICogc2l6ZW9mKExDaGFyKSwgYWxpZ25vZihM
Q2hhcikpOworICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShzdHJpbmcuY2hh
cmFjdGVyczgoKSwgbGVuZ3RoICogc2l6ZW9mKExDaGFyKSwgYWxpZ25vZihMQ2hhcikpOwogICAg
IGVsc2UKICAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4oc3RyaW5nLmNoYXJhY3RlcnMxNigpKSwgbGVuZ3RoICogc2l6
ZW9mKFVDaGFyKSwgYWxpZ25vZihVQ2hhcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL2MvY2YvV0tTdHJpbmdDRi5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9jL2NmL1dLU3RyaW5nQ0YubW0KaW5kZXggODI2ZmU2YjUwZTA5YmQxMGQ5NGFjNGFhNDc4ZGRh
ZGNiZWZmNTBmZS4uZDE3OGYwMTZkZjNmOGEzMDczNTY1MzY4ZWJhM2QwZjg5MWRhYmUxMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2YvV0tTdHJpbmdDRi5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZi9XS1N0cmluZ0NGLm1tCkBAIC01Nyw2ICs1
Nyw2IEBAIENGU3RyaW5nUmVmIFdLU3RyaW5nQ29weUNGU3RyaW5nKENGQWxsb2NhdG9yUmVmIGFs
bG9jYXRvclJlZiwgV0tTdHJpbmdSZWYgc3RyaW5nCiAgICAgLy8gTk9URTogVGhpcyBkb2VzIG5v
dCB1c2UgU3RyaW5nSW1wbDo6Y3JlYXRlQ0ZTdHJpbmcoKSBzaW5jZSB0aGF0IGZ1bmN0aW9uCiAg
ICAgLy8gZXhwZWN0cyB0byBiZSBjYWxsZWQgb24gdGhlIHRocmVhZCBydW5uaW5nIFdlYkNvcmUu
CiAgICAgaWYgKFdlYktpdDo6dG9JbXBsKHN0cmluZ1JlZiktPnN0cmluZygpLmlzOEJpdCgpKQot
ICAgICAgICByZXR1cm4gQ0ZTdHJpbmdDcmVhdGVXaXRoQnl0ZXMoYWxsb2NhdG9yUmVmLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oV2ViS2l0Ojp0b0ltcGwoc3RyaW5nUmVmKS0+c3Ry
aW5nKCkuY2hhcmFjdGVyczgoKSksIFdlYktpdDo6dG9JbXBsKHN0cmluZ1JlZiktPnN0cmluZygp
Lmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgdHJ1ZSk7CisgICAgICAgIHJl
dHVybiBDRlN0cmluZ0NyZWF0ZVdpdGhCeXRlcyhhbGxvY2F0b3JSZWYsIFdlYktpdDo6dG9JbXBs
KHN0cmluZ1JlZiktPnN0cmluZygpLmNoYXJhY3RlcnM4KCksIFdlYktpdDo6dG9JbXBsKHN0cmlu
Z1JlZiktPnN0cmluZygpLmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ0lTT0xhdGluMSwgdHJ1
ZSk7CiAgICAgcmV0dXJuIENGU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoYWxsb2NhdG9yUmVm
LCByZWludGVycHJldF9jYXN0PGNvbnN0IFVuaUNoYXIqPihXZWJLaXQ6OnRvSW1wbChzdHJpbmdS
ZWYpLT5zdHJpbmcoKS5jaGFyYWN0ZXJzMTYoKSksIFdlYktpdDo6dG9JbXBsKHN0cmluZ1JlZikt
PnN0cmluZygpLmxlbmd0aCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9jL2NmL1dLVVJMQ0YubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jZi9XS1VS
TENGLm1tCmluZGV4IDFkODU2ZjBkODFkYTc1MTBhMGY2Y2JlMzY0ZDJmZjU0OTVhNjc1YzAuLmFj
NmQwODYzZjUzMDVjMDQ4Mzc3MjZmNGQ2MDBkNzFjZDE5MTE2NGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NmL1dLVVJMQ0YubW0KKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL2MvY2YvV0tVUkxDRi5tbQpAQCAtNjcsNSArNjcsNSBAQCBDRlVSTFJlZiBXS1VS
TENvcHlDRlVSTChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3JSZWYsIFdLVVJMUmVmIFVSTFJlZikK
ICAgICAvLyBVVEYtOCB3aGljaCB1c2VzIGxlc3MgbWVtb3J5IGFuZCBpcyB3aGF0IFdlYktpdCBj
bGllbnRzIG1pZ2h0IGV4cGVjdC4KIAogICAgIENTdHJpbmcgYnVmZmVyID0gc3RyaW5nLnV0Zjgo
KTsKLSAgICByZXR1cm4gQ0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxscHRyLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oYnVmZmVyLmRhdGEoKSksIGJ1ZmZlci5sZW5n
dGgoKSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4LCBudWxscHRyLCB0cnVlKTsKKyAgICByZXR1cm4g
Q0ZVUkxDcmVhdGVBYnNvbHV0ZVVSTFdpdGhCeXRlcyhudWxscHRyLCBidWZmZXIuZGF0YUFzVUlu
dDhQdHIoKSwgYnVmZmVyLmxlbmd0aCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgsIG51bGxwdHIs
IHRydWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVz
b3VyY2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCmlu
ZGV4IDk0NmFmNDdkZmI3ZTYxMWYxYWI0NDE3MzRhOWIwZTE0MTlmYmVkODEuLjBjMGYwOGZiZGU1
NmE5ZDQyZWM5Zjk2YmEzOGZiZTUxMjU1NmUxNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9T
aGFyZWFibGVSZXNvdXJjZS5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gU2hhcmVhYmxlUmVzb3VyY2U6OndyYXBJblNoYXJlZEJ1ZmZlcigpCiAKICNpZiBVU0UoQ0Yp
CiAgICAgYXV0byBkZWFsbG9jYXRvciA9IGNyZWF0ZVNoYXJlYWJsZVJlc291cmNlRGVhbGxvY2F0
b3IodGhpcyk7Ci0gICAgYXV0byBjZkRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZVdpdGhCeXRl
c05vQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4
Kj4oZGF0YSgpKSwgc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oc2l6ZSgpKSwgZGVhbGxvY2F0b3IuZ2V0
KCkpKTsKKyAgICBhdXRvIGNmRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlV2l0aEJ5dGVzTm9D
b3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIGRhdGEoKSwgc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oc2l6
ZSgpKSwgZGVhbGxvY2F0b3IuZ2V0KCkpKTsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVh
dGUoY2ZEYXRhLmdldCgpKTsKICNlbGlmIFVTRShHTElCKQogICAgIEdSZWZQdHI8R0J5dGVzPiBi
eXRlcyA9IGFkb3B0R1JlZihnX2J5dGVzX25ld193aXRoX2ZyZWVfZnVuYyhkYXRhKCksIHNpemUo
KSwgW10odm9pZCogZGF0YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hh
cmVkRGlzcGxheUxpc3RIYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlZERpc3Bs
YXlMaXN0SGFuZGxlLmgKaW5kZXggNTg3ZDkzZTRmMTI1ZDQ3YzE2OTBlZGQwN2FjMmM3M2U3ZDc5
ZjE2OS4uY2I2YWZhYmIxNTVlNGIxMGQ3M2Y0OTBlNmM2OTYxZTYyZmRlYTBiMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWREaXNwbGF5TGlzdEhhbmRsZS5oCkBAIC00OCw3ICs0
OCw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBTaGFyZWRNZW1vcnkmIHNoYXJlZE1lbW9yeSgpIGNv
bnN0IHsgcmV0dXJuIG1fc2hhcmVkTWVtb3J5LmdldCgpOyB9CiAKICAgICBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJu
IG1faWRlbnRpZmllcjsgfQotICAgIHVpbnQ4X3QqIGRhdGEoKSBjb25zdCB7IHJldHVybiByZWlu
dGVycHJldF9jYXN0PHVpbnQ4X3QqPihzaGFyZWRNZW1vcnkoKS5kYXRhKCkpOyB9CisgICAgdWlu
dDhfdCogZGF0YSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ4X3QqPihzaGFyZWRN
ZW1vcnkoKS5kYXRhKCkpOyB9CiAKICAgICB1aW50NjRfdCB1bnJlYWRCeXRlcygpCiAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxp
c3QuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3Qu
Y3BwCmluZGV4IDg1ZjIyM2NmYmFhMDFiOWU5ZjVkODIzMjE5YjBhOTAyOTEwNzI3YTkuLmY0NzQx
NGU1NzM2NTYzODYxMWRjMjUzN2YxMGNjMDQ3NTZmNzcyYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdC5jcHAKQEAgLTQ2LDcgKzQ2
LDcgQEAgV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3Q6On5XZWJDb21waWxlZENvbnRlbnRSdWxl
TGlzdCgpCiAKIGJvb2wgV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3Q6OmNvbmRpdGlvbnNBcHBs
eU9ubHlUb0RvbWFpbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQzMl90Kj4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obV9kYXRhLmRh
dGEtPmRhdGEoKSkgKyBtX2RhdGEuY29uZGl0aW9uc0FwcGx5T25seVRvRG9tYWluT2Zmc2V0KTsK
KyAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihzdGF0aWNfY2Fz
dDxjb25zdCB1aW50OF90Kj4obV9kYXRhLmRhdGEtPmRhdGEoKSkgKyBtX2RhdGEuY29uZGl0aW9u
c0FwcGx5T25seVRvRG9tYWluT2Zmc2V0KTsKIH0KIAogY29uc3QgV2ViQ29yZTo6Q29udGVudEV4
dGVuc2lvbnM6OkRGQUJ5dGVjb2RlKiBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdDo6ZmlsdGVy
c1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYkF1dGhlbnRpY2F0aW9uQXNz
ZXJ0aW9uUmVzcG9uc2UuY3BwCmluZGV4IGM3OTc2ZmY1MmVhOGUxNWFiNjgwYTU2M2U0MzEwODY4
ZWNkMzEwMGUuLmVlZWJkOWJkMDVmNTYzYWI0YjU2MzRmZjRhZmI2ZGQ4N2NjNGEwYjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJBdXRoZW50aWNhdGlvbkFz
c2VydGlvblJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
V2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAg
UmVmUHRyPERhdGE+IFdlYkF1dGhlbnRpY2F0aW9uQXNzZXJ0aW9uUmVzcG9uc2U6OnVzZXJIYW5k
bGUoKSBjb25zdAogICAgIFJlZlB0cjxBUEk6OkRhdGE+IGRhdGE7CiAgICAgaWYgKGF1dG8qIHVz
ZXJIYW5kbGUgPSBtX3Jlc3BvbnNlLT51c2VySGFuZGxlKCkpIHsKICAgICAgICAgdXNlckhhbmRs
ZS0+cmVmKCk7Ci0gICAgICAgIGRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5n
KHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KHVzZXJIYW5kbGUtPmRhdGEoKSksIHVz
ZXJIYW5kbGUtPmJ5dGVMZW5ndGgoKSwgW10gKHVuc2lnbmVkIGNoYXIqLCBjb25zdCB2b2lkKiBk
YXRhKSB7CisgICAgICAgIGRhdGEgPSBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKHN0
YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPih1c2VySGFuZGxlLT5kYXRhKCkpLCB1c2VySGFuZGxl
LT5ieXRlTGVuZ3RoKCksIFtdICh1bnNpZ25lZCBjaGFyKiwgY29uc3Qgdm9pZCogZGF0YSkgewog
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8QXJyYXlCdWZmZXIqPihjb25zdF9jYXN0PHZvaWQqPihk
YXRhKSktPmRlcmVmKCk7CiAgICAgICAgIH0sIHVzZXJIYW5kbGUpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IGI3YmQwOTg1NDgxY2VhODFmM2U5
YzQ2ZjhmZDU4YjJiNmMzZTcxZGMuLjcwMmVmYjI5OWE0MWIwMTNjODU2OTA1ZTllNmI4MDI2Mjc3
MGFmZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtMjQx
LDcgKzI0MSw3IEBAIHN0YXRpYyBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YUZyb20oY29uc3QgU3Ry
aW5nJiBzdHJpbmcpCiB7CiAgICAgaWYgKHN0cmluZy5pc051bGwoKSB8fCAhc3RyaW5nLmlzOEJp
dCgpKQogICAgICAgICByZXR1cm4geyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihz
dHJpbmcuY2hhcmFjdGVyczE2KCkpLCBzdHJpbmcubGVuZ3RoKCkgKiBzaXplb2YoVUNoYXIpIH07
Ci0gICAgcmV0dXJuIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oc3RyaW5nLmNo
YXJhY3RlcnM4KCkpLCBzdHJpbmcubGVuZ3RoKCkgKiBzaXplb2YoTENoYXIpIH07CisgICAgcmV0
dXJuIHsgc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5ndGgoKSAqIHNpemVvZihMQ2hh
cikgfTsKIH0KIAogc3RhdGljIHZvaWQgbG9hZFN0cmluZyhXS1BhZ2VSZWYgcGFnZVJlZiwgV0tT
dHJpbmdSZWYgc3RyaW5nUmVmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcm
IGJhc2VVUkwsIFdLVHlwZVJlZiB1c2VyRGF0YVJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9SZWRpcmVjdFNPQXV0aG9yaXphdGlv
blNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRp
b24vUmVkaXJlY3RTT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCmluZGV4IGZiZWY1NDE1ZTg2ZDcx
ZWMxZjdmMjE3MWY0YjYyOWJiNmNhMzA0ZWQuLjk4MzhmNmExMTBkOTFmMDU0ZmUyODQ1OGU4NmVh
M2NmZTcwNWVjZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NP
QXV0aG9yaXphdGlvbi9SZWRpcmVjdFNPQXV0aG9yaXphdGlvblNlc3Npb24ubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1JlZGlyZWN0U09BdXRo
b3JpemF0aW9uU2Vzc2lvbi5tbQpAQCAtNzcsNyArNzcsNyBAQCB2b2lkIFJlZGlyZWN0U09BdXRo
b3JpemF0aW9uU2Vzc2lvbjo6Y29tcGxldGVJbnRlcm5hbChjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZQogICAgICAgICBpZiAoIW5hdmlnYXRpb25BY3Rpb24tPmlzUHJvY2Vzc2luZ1VzZXJHZXN0
dXJlKCkpIHsKICAgICAgICAgICAgIHBhZ2UtPnNldFNob3VsZFN1cHByZXNzU09BdXRob3JpemF0
aW9uSW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uKCk7CiAgICAgICAgICAgICBhdXRvIGh0
bWwgPSBtYWtlU3RyaW5nKCI8c2NyaXB0PmxvY2F0aW9uID0gJyIsIHJlc3BvbnNlLmh0dHBIZWFk
ZXJGaWVsZHMoKS5nZXQoSFRUUEhlYWRlck5hbWU6OkxvY2F0aW9uKSwgIic8L3NjcmlwdD4iKS51
dGY4KCk7Ci0gICAgICAgICAgICBhdXRvIGRhdGEgPSBJUEM6OkRhdGFSZWZlcmVuY2UocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaHRtbC5kYXRhKCkpLCBodG1sLmxlbmd0aCgpKTsK
KyAgICAgICAgICAgIGF1dG8gZGF0YSA9IElQQzo6RGF0YVJlZmVyZW5jZShodG1sLmRhdGFBc1VJ
bnQ4UHRyKCksIGh0bWwubGVuZ3RoKCkpOwogICAgICAgICAgICAgcGFnZS0+bG9hZERhdGEoZGF0
YSwgInRleHQvaHRtbCJfcywgIlVURi04Il9zLCBuYXZpZ2F0aW9uQWN0aW9uLT5yZXF1ZXN0KCku
dXJsKCkuc3RyaW5nKCksIG51bGxwdHIsIG5hdmlnYXRpb25BY3Rpb24tPnNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3koKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5z
cGVjdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9zb2Nr
ZXQvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCBlYjg1NTllMGMzYzNiYTZkODRkMmYw
YTEyYmFhYjY0MjJhNzU1MDU3Li4wNjRkYWU4NDUyNjQwYjAwYmY2OWE3NjM0ODY3ZjYwNzg3ZGFi
YzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0
L1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
SW5zcGVjdG9yL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwCkBAIC0xMjQsNyArMTI0
LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JDbGllbnQ6OnNlbmRXZWJJbnNwZWN0b3JFdmVudChj
b25zdCBTdHJpbmcmIGV2ZW50KQogICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwogICAgIEFT
U0VSVChtX2Nvbm5lY3Rpb25JRCk7CiAgICAgYXV0byBtZXNzYWdlID0gZXZlbnQudXRmOCgpOwot
ICAgIHNlbmQobV9jb25uZWN0aW9uSUQudmFsdWUoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4obWVzc2FnZS5kYXRhKCkpLCBtZXNzYWdlLmxlbmd0aCgpKTsKKyAgICBzZW5kKG1f
Y29ubmVjdGlvbklELnZhbHVlKCksIG1lc3NhZ2UuZGF0YUFzVUludDhQdHIoKSwgbWVzc2FnZS5s
ZW5ndGgoKSk7CiB9CiAKIEhhc2hNYXA8U3RyaW5nLCBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rv
ckNvbm5lY3Rpb25DbGllbnQ6OkNhbGxIYW5kbGVyPiYgUmVtb3RlSW5zcGVjdG9yQ2xpZW50Ojpk
aXNwYXRjaE1hcCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IGRkNTZlNzRlZWVkY2NhMzAzMDI2YzI5NTMzYWY4
M2E2OTc3ZTE2YjQuLjU2MTI2OTRmY2EyMTI2NmI4Yjc2YmVhZTlmOGNmMDBiYmRlOTcyOWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5u
ZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENo
YW5uZWwuY3BwCkBAIC01Niw4ICs1Niw4IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6bm90aWZ5
U2VuZEZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUgb3BDb2RlLCBjb25zdCB1aW50CiBOZXR3
b3JrU2VuZFF1ZXVlIFdlYlNvY2tldENoYW5uZWw6OmNyZWF0ZU1lc3NhZ2VRdWV1ZShEb2N1bWVu
dCYgZG9jdW1lbnQsIFdlYlNvY2tldENoYW5uZWwmIGNoYW5uZWwpCiB7CiAgICAgcmV0dXJuIHsg
ZG9jdW1lbnQsIFsmY2hhbm5lbF0oYXV0byYgdXRmOFN0cmluZykgewotICAgICAgICBjaGFubmVs
Lm5vdGlmeVNlbmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlOjpPcENvZGVUZXh0LCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih1dGY4U3RyaW5nLmRhdGEoKSksIHV0ZjhTdHJp
bmcubGVuZ3RoKCkpOwotICAgICAgICBjaGFubmVsLnNlbmRNZXNzYWdlKE1lc3NhZ2VzOjpOZXR3
b3JrU29ja2V0Q2hhbm5lbDo6U2VuZFN0cmluZyB7IElQQzo6RGF0YVJlZmVyZW5jZSB7IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHV0ZjhTdHJpbmcuZGF0YSgpKSwgdXRmOFN0cmlu
Zy5sZW5ndGgoKSB9IH0sIHV0ZjhTdHJpbmcubGVuZ3RoKCkpOworICAgICAgICBjaGFubmVsLm5v
dGlmeVNlbmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlOjpPcENvZGVUZXh0LCB1dGY4U3Ry
aW5nLmRhdGFBc1VJbnQ4UHRyKCksIHV0ZjhTdHJpbmcubGVuZ3RoKCkpOworICAgICAgICBjaGFu
bmVsLnNlbmRNZXNzYWdlKE1lc3NhZ2VzOjpOZXR3b3JrU29ja2V0Q2hhbm5lbDo6U2VuZFN0cmlu
ZyB7IElQQzo6RGF0YVJlZmVyZW5jZSB7IHV0ZjhTdHJpbmcuZGF0YUFzVUludDhQdHIoKSwgdXRm
OFN0cmluZy5sZW5ndGgoKSB9IH0sIHV0ZjhTdHJpbmcubGVuZ3RoKCkpOwogICAgIH0sIFsmY2hh
bm5lbF0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGJ5dGVMZW5ndGgpIHsKICAgICAgICAg
Y2hhbm5lbC5ub3RpZnlTZW5kRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZTo6T3BDb2RlQmlu
YXJ5LCBkYXRhLCBieXRlTGVuZ3RoKTsKICAgICAgICAgY2hhbm5lbC5zZW5kTWVzc2FnZShNZXNz
YWdlczo6TmV0d29ya1NvY2tldENoYW5uZWw6OlNlbmREYXRhIHsgSVBDOjpEYXRhUmVmZXJlbmNl
IHsgZGF0YSwgYnl0ZUxlbmd0aCB9IH0sIGJ5dGVMZW5ndGgpOwpAQCAtMjk1LDcgKzI5NSw3IEBA
IHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkUmVjZWl2ZVRleHQoU3RyaW5nJiYgbWVzc2FnZSkK
ICAgICB9CiAKICAgICBhdXRvIHV0ZjhNZXNzYWdlID0gbWVzc2FnZS51dGY4KCk7Ci0gICAgbV9p
bnNwZWN0b3IuZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lKG1fZG9jdW1lbnQuZ2V0KCksIGNyZWF0
ZVdlYlNvY2tldEZyYW1lRm9yV2ViSW5zcGVjdG9yKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KHV0ZjhNZXNzYWdlLmRhdGEoKSksIHV0ZjhNZXNzYWdlLmxlbmd0aCgpLCBXZWJTb2Nr
ZXRGcmFtZTo6T3BDb2RlOjpPcENvZGVUZXh0KSk7CisgICAgbV9pbnNwZWN0b3IuZGlkUmVjZWl2
ZVdlYlNvY2tldEZyYW1lKG1fZG9jdW1lbnQuZ2V0KCksIGNyZWF0ZVdlYlNvY2tldEZyYW1lRm9y
V2ViSW5zcGVjdG9yKHV0ZjhNZXNzYWdlLmRhdGFBc1VJbnQ4UHRyKCksIHV0ZjhNZXNzYWdlLmxl
bmd0aCgpLCBXZWJTb2NrZXRGcmFtZTo6T3BDb2RlOjpPcENvZGVUZXh0KSk7CiAKICAgICBtX2Ns
aWVudC0+ZGlkUmVjZWl2ZU1lc3NhZ2UobWVzc2FnZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9SVENEYXRh
Q2hhbm5lbFJlbW90ZU1hbmFnZXIuY3BwCmluZGV4IDdlYjEwNzg3N2UyYjJhMGE4OTk0MzY3NDIy
NGZkMWIyODAwNGNhNDEuLjVjMTE2OTFlOWZmZTYzZmM1ZGQ3MjU1NjdhMjkyZTY0MTM3N2EyOTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9SVENE
YXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL3dlYnJ0Yy9SVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXIuY3BwCkBAIC0xMjMs
NyArMTIzLDcgQEAgdm9pZCBSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXI6OnNlbmREYXRhKFdl
YkNvcmU6OlJUQ0RhdGFDaGFubmVsSWRlbnRpZmllciBzb3UKICAgICAgICAgaWYgKGlzUmF3KQog
ICAgICAgICAgICAgc291cmNlLT5zZW5kUmF3RGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkp
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzb3VyY2UtPnNlbmRTdHJpbmdEYXRhKENTdHJp
bmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUo
KSkpOworICAgICAgICAgICAgc291cmNlLT5zZW5kU3RyaW5nRGF0YShDU3RyaW5nKGRhdGEuZGF0
YSgpLCBkYXRhLnNpemUoKSkpOwogICAgIH0KIH0KIApAQCAtMjI3LDcgKzIyNyw3IEBAIHZvaWQg
UlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpSZW1vdGVTb3VyY2VDb25uZWN0aW9uOjpkaWRD
aGFuZ2VSZWFkeVN0YXRlKFdlCiB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6UmVt
b3RlU291cmNlQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZVN0cmluZ0RhdGEoV2ViQ29yZTo6UlRDRGF0
YUNoYW5uZWxJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewog
ICAgIGF1dG8gdGV4dCA9IHN0cmluZy51dGY4KCk7Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1l
c3NhZ2VzOjpSVENEYXRhQ2hhbm5lbFJlbW90ZU1hbmFnZXJQcm94eTo6UmVjZWl2ZURhdGEgeyBp
ZGVudGlmaWVyLCBmYWxzZSwgSVBDOjpEYXRhUmVmZXJlbmNlIHsgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1bnNpZ25lZCBjaGFyKj4odGV4dC5kYXRhKCkpLCB0ZXh0Lmxlbmd0aCgpIH0gfSwgMCk7
CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpSVENEYXRhQ2hhbm5lbFJlbW90ZU1h
bmFnZXJQcm94eTo6UmVjZWl2ZURhdGEgeyBpZGVudGlmaWVyLCBmYWxzZSwgSVBDOjpEYXRhUmVm
ZXJlbmNlIHsgdGV4dC5kYXRhQXNVSW50OFB0cigpLCB0ZXh0Lmxlbmd0aCgpIH0gfSwgMCk7CiB9
CiAKIHZvaWQgUlRDRGF0YUNoYW5uZWxSZW1vdGVNYW5hZ2VyOjpSZW1vdGVTb3VyY2VDb25uZWN0
aW9uOjpkaWRSZWNlaXZlUmF3RGF0YShXZWJDb3JlOjpSVENEYXRhQ2hhbm5lbElkZW50aWZpZXIg
aWRlbnRpZmllciwgY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdp
blN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAKaW5kZXggZGJmYjhiNmI4MTFiMzY0NzRhNWRlNmJiNmE3
ZjM4YzViMDI1MjA2Yi4uZjI3MTdlYjE2MzZjOTAxOGFmNTA2MzkzY2U5NDY1Y2Y3MGVkYzU4YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0
c2NhcGVQbHVnaW5TdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcApAQCAtMTE3LDcgKzExNyw3IEBA
IHZvaWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OnNlbmRKYXZhU2NyaXB0U3RyZWFtKGNvbnN0IFN0
cmluZyYgcmVzdWx0KQogICAgIGlmICghc3RhcnQobV9yZXF1ZXN0VVJMU3RyaW5nLCByZXN1bHRD
U3RyaW5nLmxlbmd0aCgpLCAwLCAidGV4dC9wbGFpbiIsICIiKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgZGVsaXZlckRhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocmVzdWx0
Q1N0cmluZy5kYXRhKCkpLCByZXN1bHRDU3RyaW5nLmxlbmd0aCgpKTsKKyAgICBkZWxpdmVyRGF0
YShyZXN1bHRDU3RyaW5nLmRhdGFBc1VJbnQ4UHRyKCksIHJlc3VsdENTdHJpbmcubGVuZ3RoKCkp
OwogICAgIHN0b3AoTlBSRVNfRE9ORSk7CiB9CiAK
</data>
<flag name="commit-queue"
          id="452469"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>