<?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>172759</bug_id>
          
          <creation_ts>2017-05-31 10:23:43 -0700</creation_ts>
          <short_desc>Reland r216808, underlying lldb bug has been fixed.</short_desc>
          <delta_ts>2017-12-18 07:26:54 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>REOPENED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>172785</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Keith Miller">keith_miller</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>csaavedra</cc>
    
    <cc>jralls</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1314203</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-05-31 10:23:43 -0700</bug_when>
    <thetext>Reland r216808, underlying lldb bug has been fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314204</commentid>
    <comment_count>1</comment_count>
      <attachid>311606</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-05-31 10:24:54 -0700</bug_when>
    <thetext>Created attachment 311606
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314210</commentid>
    <comment_count>2</comment_count>
      <attachid>311608</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-05-31 10:38:55 -0700</bug_when>
    <thetext>Created attachment 311608
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314229</commentid>
    <comment_count>3</comment_count>
      <attachid>311608</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-05-31 11:16:56 -0700</bug_when>
    <thetext>Comment on attachment 311608
Patch for landing

Clearing flags on attachment: 311608

Committed r217611: &lt;http://trac.webkit.org/changeset/217611&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314230</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-05-31 11:16:58 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314413</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-05-31 16:22:04 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 172785</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315416</commentid>
    <comment_count>6</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2017-06-03 06:55:08 -0700</bug_when>
    <thetext>Relaned in http://trac.webkit.org/changeset/217669 which broke the Apple Mac cmake build:

/Volumes/Data/slave/elcapitan-cmake-debug/build/Source/WTF/wtf/threads/Signals.cpp:33:10: fatal error: &apos;MachExceptionsServer.h&apos; file not found
#include &quot;MachExceptionsServer.h&quot;
         ^</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1358095</commentid>
    <comment_count>7</comment_count>
    <who name="John Ralls">jralls</who>
    <bug_when>2017-10-08 11:30:17 -0700</bug_when>
    <thetext>Does it break the PLATFORM(MAC) cmake build or just the PLATFORM(GTK) one on Mac?

On PlatformMac.cmake should generate MachExceptionsServer.h but that target isn&apos;t present in PlatformGtk.cmake.

Changing Platform.h line 663 to
#if __has_include(&lt;mach/mach_exc.defs&gt;) &amp;&amp; !(PLATFORM(WATCHOS) || PLATFORM(APPLETV) || PLATFORM(GTK))

resolves the problem for Gtk builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382752</commentid>
    <comment_count>8</comment_count>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2017-12-18 07:26:54 -0800</bug_when>
    <thetext>FWIW I pushed this https://trac.webkit.org/changeset/226035 to fix (partially) the GTK+ build in Darwin.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311606</attachid>
            <date>2017-05-31 10:24:54 -0700</date>
            <delta_ts>2017-05-31 10:38:54 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-172759-20170531102453.patch</filename>
            <type>text/plain</type>
            <size>49980</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3NjAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
YTcxYzU5YTdlYTc1YzI1MjRkYjQxZWNkNTFlOWRhZTYwOWVkYTcyLi5mOTQ2MzVlNDFmZTQxMTFj
MzA5YTJiNzNkOWY3YTllZTBhYjU0ZmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNiBAQAorMjAxNy0wNS0zMSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBSZWxhbmQgcjIxNjgwOCwgdW5kZXJseWluZyBsbGRiIGJ1ZyBoYXMg
YmVlbiBmaXhlZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3Mjc1OQorCisgICAgICAgIFVucmV2aWV3ZWQsIHJlbGFuZGluZyBvbGQgcGF0Y2guCisK
KyAgICAgICAgKiBBUEkvdGVzdHMvRXhlY3V0aW9uVGltZUxpbWl0VGVzdC5jcHA6CisgICAgICAg
IChkaXNwYXRjaFRlcm1pdGF0ZUNhbGxiYWNrKToKKyAgICAgICAgKHRlc3RFeGVjdXRpb25UaW1l
TGltaXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNMb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6SlNM
b2NrOjpkaWRBY3F1aXJlTG9jayk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmNwcDoKKyAg
ICAgICAgKEpTQzo6b3ZlcnJpZGVEZWZhdWx0cyk6CisgICAgICAgIChKU0M6Ok9wdGlvbnM6Omlu
aXRpYWxpemUpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5oOgorICAgICAgICAqIHJ1bnRp
bWUvVk1UcmFwcy5jcHA6CisgICAgICAgIChKU0M6OlNpZ25hbENvbnRleHQ6OlNpZ25hbENvbnRl
eHQpOgorICAgICAgICAoSlNDOjpTaWduYWxDb250ZXh0OjphZGp1c3RQQ1RvUG9pbnRUb1RyYXBw
aW5nSW5zdHJ1Y3Rpb24pOgorICAgICAgICAoSlNDOjppbnN0YWxsU2lnbmFsSGFuZGxlcik6Cisg
ICAgICAgIChKU0M6OlZNVHJhcHM6OlNpZ25hbFNlbmRlcjo6c2VuZCk6CisgICAgICAgICogdG9v
bHMvU2lnaWxsQ3Jhc2hBbmFseXplci5jcHA6CisgICAgICAgIChKU0M6OlNpZ25hbENvbnRleHQ6
OlNpZ25hbENvbnRleHQpOgorICAgICAgICAoSlNDOjpTaWduYWxDb250ZXh0OjpkdW1wKToKKyAg
ICAgICAgKEpTQzo6aW5zdGFsbENyYXNoSGFuZGxlcik6CisgICAgICAgICogd2FzbS9XYXNtQkJR
UGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkJCUVBsYW46OmNvbXBpbGVGdW5jdGlvbnMp
OgorICAgICAgICAqIHdhc20vV2FzbUZhdWx0U2lnbmFsSGFuZGxlci5jcHA6CisgICAgICAgIChK
U0M6Oldhc206OnRyYXBIYW5kbGVyKToKKyAgICAgICAgKEpTQzo6V2FzbTo6ZW5hYmxlRmFzdE1l
bW9yeSk6CisgICAgICAgICogd2FzbS9XYXNtTWFjaGluZVRocmVhZHMuY3BwOgorICAgICAgICAo
SlNDOjpXYXNtOjpyZXNldEluc3RydWN0aW9uQ2FjaGVPbkFsbFRocmVhZHMpOgorCiAyMDE3LTA1
LTMwICBPbGVrc2FuZHIgU2thY2hrb3YgIDxnc2thY2hrb3ZAZ21haWwuY29tPgogCiAgICAgICAg
IFByZXZlbnQgYXN5bmMgbWV0aG9kcyBuYW1lZCAnZnVuY3Rpb24nIGluIE9iamVjdCBsaXRlcmFs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CmluZGV4IGRjMjgxMjVkNzVkMmFlY2ZiMzBlYTAxYmZjYTdlYTMwMzgzZjAzMjQuLjUyMjI1MDQz
MWE2ODVhMmY3YTQ1MTU1MWVjY2I4ZWE1MGYxZWQ2M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIw
MTctMDUtMzEgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVsYW5kIHIyMTY4MDgsIHVuZGVybHlpbmcgbGxkYiBidWcgaGFzIGJlZW4gZml4ZWQuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI3NTkKKwor
ICAgICAgICBVbnJldmlld2VkLCByZWxhbmRpbmcgb2xkIHBhdGNoLgorCisgICAgICAgICogQ29u
ZmlndXJhdGlvbnMvV1RGLnhjY29uZmlnOgorICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorICAgICAgICAqIHd0Zi9QbGF0
Zm9ybVJlZ2lzdGVycy5oOgorICAgICAgICAoV1RGOjpyZWdpc3RlcnNGcm9tVUNvbnRleHQpOgor
ICAgICAgICAqIHd0Zi9TdGFja0JvdW5kcy5oOgorICAgICAgICAoV1RGOjpTdGFja0JvdW5kczo6
U3RhY2tCb3VuZHMpOgorICAgICAgICAqIHd0Zi9UaHJlYWRIb2xkZXIuY3BwOgorICAgICAgICAo
V1RGOjpUaHJlYWRIb2xkZXI6On5UaHJlYWRIb2xkZXIpOgorICAgICAgICAqIHd0Zi9UaHJlYWRN
ZXNzYWdlLmNwcDoKKyAgICAgICAgKFdURjo6c2VuZE1lc3NhZ2VVc2luZ1NpZ25hbCk6CisgICAg
ICAgIChXVEY6OnNlbmRNZXNzYWdlVXNpbmdNYWNoKToKKyAgICAgICAgKFdURjo6ZGVsaXZlck1l
c3NhZ2VzVXNpbmdNYWNoKToKKyAgICAgICAgKFdURjo6c2VuZE1lc3NhZ2VTY29wZWQpOgorICAg
ICAgICAqIHd0Zi9UaHJlYWRNZXNzYWdlLmg6CisgICAgICAgIChXVEY6OnNlbmRNZXNzYWdlKToK
KyAgICAgICAgKiB3dGYvVGhyZWFkaW5nLmg6CisgICAgICAgIChXVEY6OlRocmVhZDo6bWFjaFRo
cmVhZCk6CisgICAgICAgICogd3RmL21hYy9NYWNoRXhjZXB0aW9ucy5kZWZzOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV1RGL3d0Zi9UaHJlYWRNZXNzYWdlLmguCisgICAgICAgICogd3RmL3RocmVhZHMv
U2lnbmFscy5jcHA6CisgICAgICAgIChXVEY6OnN0YXJ0TWFjaEV4Y2VwdGlvbkhhbmRsZXJUaHJl
YWQpOgorICAgICAgICAoV1RGOjpmcm9tTWFjaEV4Y2VwdGlvbik6CisgICAgICAgIChXVEY6OnRv
TWFjaE1hc2spOgorICAgICAgICAoV1RGOjpoYW5kbGVTaWduYWxzV2l0aE1hY2gpOgorICAgICAg
ICAoV1RGOjpzZXRFeGNlcHRpb25Qb3J0cyk6CisgICAgICAgIChXVEY6OmFjdGl2ZVRocmVhZHMp
OgorICAgICAgICAoV1RGOjpyZWdpc3RlclRocmVhZEZvck1hY2hFeGNlcHRpb25IYW5kbGluZyk6
CisgICAgICAgIChXVEY6OnVucmVnaXN0ZXJUaHJlYWRGb3JNYWNoRXhjZXB0aW9uSGFuZGxpbmcp
OgorICAgICAgICAoV1RGOjppbnN0YWxsU2lnbmFsSGFuZGxlcik6CisgICAgICAgIChXVEY6Ompz
Y1NpZ25hbEhhbmRsZXIpOgorICAgICAgICAqIHd0Zi90aHJlYWRzL1NpZ25hbHMuaDoKKwogMjAx
Ny0wNS0zMSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBHZXQgPGNocm9ubz4gb3V0IG9mIFN0ZExpYkV4dHJhcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0V4ZWN1dGlvblRpbWVMaW1pdFRlc3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9FeGVjdXRpb25UaW1lTGltaXRUZXN0LmNwcApp
bmRleCA4NWMyNzJjNDQzNzY3NzU3M2UwZTc1MGFhYWM1NjM5ZWNlODQyZDdmLi5hM2MzOWE3NjFj
MjQ1Y2RkNTk1ODM1YjgzOGFkMDVmYTc3ZjAwZmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL3Rlc3RzL0V4ZWN1dGlvblRpbWVMaW1pdFRlc3QuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvRXhlY3V0aW9uVGltZUxpbWl0VGVzdC5jcHAKQEAg
LTMwLDEwICszMCwxOCBAQAogI2luY2x1ZGUgIkpTQ29udGV4dFJlZlByaXZhdGUuaCIKICNpbmNs
dWRlICJKYXZhU2NyaXB0LmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgorCiAjaW5jbHVkZSA8Y2hy
b25vPgorI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CisjaW5jbHVkZSA8d3RmL0NvbmRpdGlvbi5o
PgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCisjaWYgSEFWRShNQUNIX0VYQ0VQ
VElPTlMpCisjaW5jbHVkZSA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KKyNlbmRpZgorCiB1c2luZyBu
YW1lc3BhY2Ugc3RkOjpjaHJvbm87CiB1c2luZyBKU0M6Ok9wdGlvbnM7CiAKQEAgLTc3LDYgKzg1
LDE1IEBAIHN0YXRpYyBib29sIGV4dGVuZFRlcm1pbmF0ZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBj
dHgsIHZvaWQqKQogICAgIHJldHVybiB0cnVlOwogfQogCisjaWYgSEFWRShNQUNIX0VYQ0VQVElP
TlMpCitib29sIGRpc3BhdGNoVGVybWluYXRlQ2FsbGJhY2tDYWxsZWQgPSBmYWxzZTsKK3N0YXRp
YyBib29sIGRpc3BhdGNoVGVybWl0YXRlQ2FsbGJhY2soSlNDb250ZXh0UmVmLCB2b2lkKikKK3sK
KyAgICBkaXNwYXRjaFRlcm1pbmF0ZUNhbGxiYWNrQ2FsbGVkID0gdHJ1ZTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKyNlbmRpZgorCiBzdHJ1Y3QgVGllck9wdGlvbnMgewogICAgIGNvbnN0IGNoYXIq
IHRpZXI7CiAgICAgdW5zaWduZWQgdGltZUxpbWl0QWRqdXN0bWVudE1pbGxpczsKQEAgLTM2NSw2
ICszODIsNjUgQEAgaW50IHRlc3RFeGVjdXRpb25UaW1lTGltaXQoKQogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAKKyNpZiBIQVZFKE1BQ0hfRVhDRVBUSU9OUykKKyAgICAgICAgLyogVGVzdCBz
Y3JpcHQgdGltZW91dCBmcm9tIGRpc3BhdGNoIHF1ZXVlOiAqLworICAgICAgICB0aW1lTGltaXQg
PSAoMTAwICsgdGllckFkanVzdG1lbnRNaWxsaXMpIC8gMTAwMC4wOworICAgICAgICBKU0NvbnRl
eHRHcm91cFNldEV4ZWN1dGlvblRpbWVMaW1pdChjb250ZXh0R3JvdXAsIHRpbWVMaW1pdCwgZGlz
cGF0Y2hUZXJtaXRhdGVDYWxsYmFjaywgMCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIHVuc2ln
bmVkIHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkID0gMzAwICsgdGllckFkanVzdG1l
bnRNaWxsaXM7CisKKyAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgc2NyaXB0QnVpbGRlcjsKKyAg
ICAgICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiZnVuY3Rpb24gZm9vKCkgeyB2
YXIgc3RhcnRUaW1lID0gY3VycmVudENQVVRpbWUoKTsgd2hpbGUgKHRydWUpIHsgZm9yICh2YXIg
aSA9IDA7IGkgPCAxMDAwOyBpKyspOyBpZiAoY3VycmVudENQVVRpbWUoKSAtIHN0YXJ0VGltZSA+
ICIpOworICAgICAgICAgICAgc2NyaXB0QnVpbGRlci5hcHBlbmROdW1iZXIodGltZUFmdGVyV2F0
Y2hkb2dTaG91bGRIYXZlRmlyZWQgLyAxMDAwLjApOworICAgICAgICAgICAgc2NyaXB0QnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCIpIGJyZWFrOyB9IH0gZm9vKCk7Iik7CisKKyAgICAgICAgICAgIEpT
U3RyaW5nUmVmIHNjcmlwdCA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHNjcmlwdEJ1
aWxkZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGV4Y2VwdGlvbiA9
IG51bGxwdHI7CisgICAgICAgICAgICBkaXNwYXRjaFRlcm1pbmF0ZUNhbGxiYWNrQ2FsbGVkID0g
ZmFsc2U7CisKKyAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8gZG8gdGhpcyBzaW5jZSBibG9ja3Mg
Y2FuIG9ubHkgY2FwdHVyZSB0aGluZ3MgYXMgY29uc3QuCisgICAgICAgICAgICBKU0dsb2JhbENv
bnRleHRSZWYmIGNvbnRleHRSZWYgPSBjb250ZXh0OworICAgICAgICAgICAgSlNTdHJpbmdSZWYm
IHNjcmlwdFJlZiA9IHNjcmlwdDsKKyAgICAgICAgICAgIEpTVmFsdWVSZWYmIGV4Y2VwdGlvblJl
ZiA9IGV4Y2VwdGlvbjsKKworICAgICAgICAgICAgTG9jayBzeW5jTG9jazsKKyAgICAgICAgICAg
IExvY2smIHN5bmNMb2NrUmVmID0gc3luY0xvY2s7CisgICAgICAgICAgICBDb25kaXRpb24gc3lu
Y2hyb25pemU7CisgICAgICAgICAgICBDb25kaXRpb24mIHN5bmNocm9uaXplUmVmID0gc3luY2hy
b25pemU7CisgICAgICAgICAgICBib29sIGRpZFN5bmNocm9uaXplID0gZmFsc2U7CisgICAgICAg
ICAgICBib29sJiBkaWRTeW5jaHJvbml6ZVJlZiA9IGRpZFN5bmNocm9uaXplOworCisgICAgICAg
ICAgICBzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzIHN0YXJ0VGltZTsKKyAgICAgICAgICAgIHN0
ZDo6Y2hyb25vOjptaWNyb3NlY29uZHMgZW5kVGltZTsKKworICAgICAgICAgICAgc3RkOjpjaHJv
bm86Om1pY3Jvc2Vjb25kcyYgc3RhcnRUaW1lUmVmID0gc3RhcnRUaW1lOworICAgICAgICAgICAg
c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcyYgZW5kVGltZVJlZiA9IGVuZFRpbWU7CisKKyAgICAg
ICAgICAgIGRpc3BhdGNoX2dyb3VwX3QgZ3JvdXAgPSBkaXNwYXRjaF9ncm91cF9jcmVhdGUoKTsK
KyAgICAgICAgICAgIGRpc3BhdGNoX2dyb3VwX2FzeW5jKGdyb3VwLCBkaXNwYXRjaF9nZXRfZ2xv
YmFsX3F1ZXVlKDAsIDApLCBeeworICAgICAgICAgICAgICAgIHN0YXJ0VGltZVJlZiA9IGN1cnJl
bnRDUFVUaW1lKCk7CisgICAgICAgICAgICAgICAgSlNFdmFsdWF0ZVNjcmlwdChjb250ZXh0UmVm
LCBzY3JpcHRSZWYsIG51bGxwdHIsIG51bGxwdHIsIDEsICZleGNlcHRpb25SZWYpOworICAgICAg
ICAgICAgICAgIGVuZFRpbWVSZWYgPSBjdXJyZW50Q1BVVGltZSgpOworICAgICAgICAgICAgICAg
IGF1dG8gbG9ja2VyID0gV1RGOjpob2xkTG9jayhzeW5jTG9ja1JlZik7CisgICAgICAgICAgICAg
ICAgZGlkU3luY2hyb25pemVSZWYgPSB0cnVlOworICAgICAgICAgICAgICAgIHN5bmNocm9uaXpl
UmVmLm5vdGlmeUFsbCgpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2soc3luY0xvY2spOworICAgICAgICAgICAgc3luY2hyb25pemUud2FpdChz
eW5jTG9jaywgWyZdIHsgcmV0dXJuIGRpZFN5bmNocm9uaXplOyB9KTsKKworICAgICAgICAgICAg
aWYgKCgoZW5kVGltZSAtIHN0YXJ0VGltZSkgPCBtaWxsaXNlY29uZHModGltZUFmdGVyV2F0Y2hk
b2dTaG91bGRIYXZlRmlyZWQpKSAmJiBkaXNwYXRjaFRlcm1pbmF0ZUNhbGxiYWNrQ2FsbGVkKQor
ICAgICAgICAgICAgICAgIHByaW50ZigiUEFTUzogJXMgc2NyaXB0IG9uIGRpc3BhdGNoIHF1ZXVl
IHRpbWVkIG91dCBhcyBleHBlY3RlZC5cbiIsIHRpZXJPcHRpb25zLnRpZXIpOworICAgICAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKChlbmRUaW1lIC0gc3RhcnRUaW1lKSA+PSBt
aWxsaXNlY29uZHModGltZUFmdGVyV2F0Y2hkb2dTaG91bGRIYXZlRmlyZWQpKQorICAgICAgICAg
ICAgICAgICAgICBwcmludGYoIkZBSUw6ICVzIHNjcmlwdCBvbiBkaXNwYXRjaCBxdWV1ZSBkaWQg
bm90IHRpbWUgb3V0IGFzIGV4cGVjdGVkLlxuIiwgdGllck9wdGlvbnMudGllcik7CisgICAgICAg
ICAgICAgICAgaWYgKCFzaG91bGRUZXJtaW5hdGVDYWxsYmFja1dhc0NhbGxlZCkKKyAgICAgICAg
ICAgICAgICAgICAgcHJpbnRmKCJGQUlMOiAlcyBzY3JpcHQgb24gZGlzcGF0Y2ggcXVldWUgdGlt
ZW91dCBjYWxsYmFjayB3YXMgbm90IGNhbGxlZC5cbiIsIHRpZXJPcHRpb25zLnRpZXIpOworICAg
ICAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyNl
bmRpZgorCiAgICAgICAgIEpTR2xvYmFsQ29udGV4dFJlbGVhc2UoY29udGV4dCk7CiAKICAgICAg
ICAgT3B0aW9uczo6c2V0T3B0aW9ucyhzYXZlZE9wdGlvbnNCdWlsZGVyLnRvU3RyaW5nKCkuYXNj
aWkoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNMb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAKaW5k
ZXggYzE3NWFlMGM0ODJlZDI3YmQ1ZjZiZGM4Nzk2OGU3NWQ0NWFmNTBlZi4uMzFlMmRiNDBiMjE2
ZWFhMmIxMTQyNGI4MDNmYjdmOTFkZDRlMjYxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0xvY2suY3BwCkBAIC0zMCw2ICszMCw4IEBACiAjaW5jbHVkZSAiU2FtcGxpbmdQcm9m
aWxlci5oIgogI2luY2x1ZGUgIldhc21NYWNoaW5lVGhyZWFkcy5oIgogI2luY2x1ZGUgPHRocmVh
ZD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RocmVhZHMvU2ln
bmFscy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMTQ4LDYgKzE1MCwxMCBAQCB2b2lkIEpT
TG9jazo6ZGlkQWNxdWlyZUxvY2soKQogICAgIFdhc206OnN0YXJ0VHJhY2tpbmdDdXJyZW50VGhy
ZWFkKCk7CiAjZW5kaWYKIAorI2lmIEhBVkUoTUFDSF9FWENFUFRJT05TKQorICAgIHJlZ2lzdGVy
VGhyZWFkRm9yTWFjaEV4Y2VwdGlvbkhhbmRsaW5nKCZUaHJlYWQ6OmN1cnJlbnQoKSk7CisjZW5k
aWYKKwogICAgIG1fdm0tPnRyYXBzKCkubm90aWZ5R3JhYkFsbExvY2tzKCk7CiAKICNpZiBFTkFC
TEUoU0FNUExJTkdfUFJPRklMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnMuY3BwCmluZGV4IDM3NTc3ODY4MmFiZmYwNWFlYzUzNGEyNTJlMDE4NjhmYzMyZTIwNTAuLjlm
MTJkZjk1Y2Q5MGNhOTA0N2Q2NmNiMTc2Y2QwZGNlMTAzNTkxNzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RocmVhZHMvU2ln
bmFscy5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSA8Y3J0X2V4dGVybnMuaD4K
QEAgLTM1OCw2ICszNTksMTAgQEAgc3RhdGljIHZvaWQgb3ZlcnJpZGVEZWZhdWx0cygpCiAjaWYg
IUVOQUJMRShXRUJBU1NFTUJMWV9GQVNUX01FTU9SWSkKICAgICBPcHRpb25zOjp1c2VXZWJBc3Nl
bWJseUZhc3RNZW1vcnkoKSA9IGZhbHNlOwogI2VuZGlmCisKKyNpZiAhSEFWRShNQUNIX0VYQ0VQ
VElPTlMpCisgICAgT3B0aW9uczo6dXNlTWFjaEZvckV4Y2VwdGlvbnMoKSA9IGZhbHNlOworI2Vu
ZGlmCiB9CiAKIHN0YXRpYyB2b2lkIHJlY29tcHV0ZURlcGVuZGVudE9wdGlvbnMoKQpAQCAtNTUw
LDYgKzU1NSwxMSBAQCB2b2lkIE9wdGlvbnM6OmluaXRpYWxpemUoKQogCiAgICAgICAgICAgICBk
dW1wT3B0aW9uc0lmTmVlZGVkKCk7CiAgICAgICAgICAgICBlbnN1cmVPcHRpb25zQXJlQ29oZXJl
bnQoKTsKKworI2lmIEhBVkUoTUFDSF9FWENFUFRJT05TKQorICAgICAgICAgICAgaWYgKE9wdGlv
bnM6OnVzZU1hY2hGb3JFeGNlcHRpb25zKCkpCisgICAgICAgICAgICAgICAgaGFuZGxlU2lnbmFs
c1dpdGhNYWNoKCk7CisjZW5kaWYKICAgICAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wdGlvbnMuaAppbmRleCA0YWQxNmVhZmZhMTljOWJmMTFiNGIxOTkxNDZkY2Fl
YWZhOTRiMzNjLi5hMDkzNWQyZGRjMmJmMjkzYzViYWVlZTdjOTE2YzQzYjA5Mzc5ZDNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCkBAIC00MjMsNiArNDIzLDggQEAg
dHlwZWRlZiBjb25zdCBjaGFyKiBvcHRpb25TdHJpbmc7CiAgICAgdih1bnNpZ25lZCwgd2F0Y2hk
b2csIDAsIE5vcm1hbCwgIndhdGNoZG9nIHRpbWVvdXQgKDAgPSBEaXNhYmxlZCwgTiA9IGEgdGlt
ZW91dCBwZXJpb2Qgb2YgTiBtaWxsaXNlY29uZHMpIikgXAogICAgIHYoYm9vbCwgdXNlUG9sbGlu
Z1RyYXBzLCBmYWxzZSwgTm9ybWFsLCAidXNlIHBvbGxpbmcgKGluc3RlYWQgb2Ygc2lnbmFsbGlu
ZykgVk0gdHJhcHMiKSBcCiAgICAgXAorICAgIHYoYm9vbCwgdXNlTWFjaEZvckV4Y2VwdGlvbnMs
IHRydWUsIE5vcm1hbCwgIlVzZSBtYWNoIGV4Y2VwdGlvbnMgcmF0aGVyIHRoYW4gc2lnbmFscyB0
byBoYW5kbGUgZmF1bHRzIGFuZCBwYXNzIHRocmVhZCBtZXNzYWdlcy4gKFRoaXMgZG9lcyBub3Ro
aW5nIG9uIHBsYXRmb3JtcyB3aXRob3V0IG1hY2gpIikgXAorICAgIFwKICAgICB2KGJvb2wsIHVz
ZUlDU3RhdHMsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICBcCiAgICAgdih1bnNpZ25l
ZCwgcHJvdG90eXBlSGl0Q291bnRGb3JMTEludENhY2hpbmcsIDIsIE5vcm1hbCwgIk51bWJlciBv
ZiBwcm90b3R5cGUgcHJvcGVydHkgaGl0cyBiZWZvcmUgY2FjaGluZyBhIHByb3RvdHlwZSBpbiB0
aGUgTExJbnQuIEEgY291bnQgb2YgMCBtZWFucyBuZXZlciBjYWNoZS4iKSBcCkBAIC00NDYsNiAr
NDQ4LDcgQEAgdHlwZWRlZiBjb25zdCBjaGFyKiBvcHRpb25TdHJpbmc7CiAgICAgdih1bnNpZ25l
ZCwgd2ViQXNzZW1ibHlCQlFPcHRpbWl6YXRpb25MZXZlbCwgMSwgTm9ybWFsLCAiQjMgT3B0aW1p
emF0aW9uIGxldmVsIGZvciBCQlEgV2ViIEFzc2VtYmx5IG1vZHVsZSBjb21waWxhdGlvbnMuIikg
XAogICAgIHYodW5zaWduZWQsIHdlYkFzc2VtYmx5T01HT3B0aW1pemF0aW9uTGV2ZWwsIE9wdGlv
bnM6OmRlZmF1bHRCM09wdExldmVsKCksIE5vcm1hbCwgIkIzIE9wdGltaXphdGlvbiBsZXZlbCBm
b3IgT01HIFdlYiBBc3NlbWJseSBtb2R1bGUgY29tcGlsYXRpb25zLiIpIFwKICAgICBcCisgICAg
dihib29sLCB1c2VCQlFUaWVyVXBDaGVja3MsIHRydWUsIE5vcm1hbCwgIkVuYWJsZXMgdGllciB1
cCBjaGVja3MgZm9yIG91ciBCQlEgY29kZS4iKSBcCiAgICAgdih1bnNpZ25lZCwgd2ViQXNzZW1i
bHlPTUdUaWVyVXBDb3VudCwgNTAwMCwgTm9ybWFsLCAiVGhlIGNvdW50ZG93biBiZWZvcmUgd2Ug
dGllciB1cCBhIGZ1bmN0aW9uIHRvIE9NRy4iKSBcCiAgICAgdih1bnNpZ25lZCwgd2ViQXNzZW1i
bHlMb29wRGVjcmVtZW50LCAxNSwgTm9ybWFsLCAiVGhlIGFtb3VudCB0aGUgdGllciB1cCBjb3Vu
dGRvd24gaXMgZGVjcmVtZW50ZWQgb24gZWFjaCBsb29wIGJhY2tlZGdlLiIpIFwKICAgICB2KHVu
c2lnbmVkLCB3ZWJBc3NlbWJseUZ1bmN0aW9uRW50cnlEZWNyZW1lbnQsIDEsIE5vcm1hbCwgIlRo
ZSBhbW91bnQgdGhlIHRpZXIgdXAgY291bnRkb3duIGlzIGRlY3JlbWVudGVkIG9uIGVhY2ggZnVu
Y3Rpb24gZW50cnkuIikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk1UcmFwcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTVRyYXBzLmNw
cAppbmRleCAxYmFhY2U2MDQ0ZTY2MGE4ZTU0NDFmYmFkMDE4ZWE5MDkzMWE0YzkxLi44YzU3YzQ1
NmFlNDM2OGFkZjI4ZWEwYTY0NThlN2MwMzlhOTcwZWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTVRyYXBzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTVRyYXBzLmNwcApAQCAtNTMsMTEgKzUzLDExIEBAIEFMV0FZU19JTkxJTkUg
Vk0mIFZNVHJhcHM6OnZtKCkgY29uc3QKICNpZiBFTkFCTEUoU0lHTkFMX0JBU0VEX1ZNX1RSQVBT
KQogCiBzdHJ1Y3QgU2lnbmFsQ29udGV4dCB7Ci0gICAgU2lnbmFsQ29udGV4dChtY29udGV4dF90
JiBtY29udGV4dCkKLSAgICAgICAgOiBtY29udGV4dChtY29udGV4dCkKLSAgICAgICAgLCB0cmFw
UEMoTWFjaGluZUNvbnRleHQ6Omluc3RydWN0aW9uUG9pbnRlcihtY29udGV4dCkpCi0gICAgICAg
ICwgc3RhY2tQb2ludGVyKE1hY2hpbmVDb250ZXh0OjpzdGFja1BvaW50ZXIobWNvbnRleHQpKQot
ICAgICAgICAsIGZyYW1lUG9pbnRlcihNYWNoaW5lQ29udGV4dDo6ZnJhbWVQb2ludGVyKG1jb250
ZXh0KSkKKyAgICBTaWduYWxDb250ZXh0KFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdpc3RlcnMpCisg
ICAgICAgIDogcmVnaXN0ZXJzKHJlZ2lzdGVycykKKyAgICAgICAgLCB0cmFwUEMoTWFjaGluZUNv
bnRleHQ6Omluc3RydWN0aW9uUG9pbnRlcihyZWdpc3RlcnMpKQorICAgICAgICAsIHN0YWNrUG9p
bnRlcihNYWNoaW5lQ29udGV4dDo6c3RhY2tQb2ludGVyKHJlZ2lzdGVycykpCisgICAgICAgICwg
ZnJhbWVQb2ludGVyKE1hY2hpbmVDb250ZXh0OjpmcmFtZVBvaW50ZXIocmVnaXN0ZXJzKSkKICAg
ICB7CiAjaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKFg4NikKICAgICAgICAgLy8gT24gWDg2XzY0LCBT
SUdUUkFQIHJlcG9ydHMgdGhlIGFkZHJlc3MgYWZ0ZXIgdGhlIHRyYXBwaW5nIFBDLiBTbywgZGVj
IGJ5IDEuCkBAIC02OCwxMSArNjgsMTEgQEAgc3RydWN0IFNpZ25hbENvbnRleHQgewogICAgIHZv
aWQgYWRqdXN0UENUb1BvaW50VG9UcmFwcGluZ0luc3RydWN0aW9uKCkKICAgICB7CiAjaWYgQ1BV
KFg4Nl82NCkgfHwgQ1BVKFg4NikKLSAgICAgICAgTWFjaGluZUNvbnRleHQ6Omluc3RydWN0aW9u
UG9pbnRlcihtY29udGV4dCkgPSB0cmFwUEM7CisgICAgICAgIE1hY2hpbmVDb250ZXh0OjppbnN0
cnVjdGlvblBvaW50ZXIocmVnaXN0ZXJzKSA9IHRyYXBQQzsKICNlbmRpZgogICAgIH0KIAotICAg
IG1jb250ZXh0X3QmIG1jb250ZXh0OworICAgIFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdpc3RlcnM7
CiAgICAgdm9pZCogdHJhcFBDOwogICAgIHZvaWQqIHN0YWNrUG9pbnRlcjsKICAgICB2b2lkKiBm
cmFtZVBvaW50ZXI7CkBAIC0xMzAsOCArMTMwLDggQEAgc3RhdGljIEV4cGVjdGVkPFZNQW5kU3Rh
Y2tCb3VuZHMsIFZNVHJhcHM6OkVycm9yPiBmaW5kQWN0aXZlVk1BbmRTdGFja0JvdW5kcyhTaWcK
IAogc3RhdGljIHZvaWQgaW5zdGFsbFNpZ25hbEhhbmRsZXIoKQogewotICAgIGluc3RhbGxTaWdu
YWxIYW5kbGVyKFNpZ25hbDo6VHJhcCwgW10gKGludCwgc2lnaW5mb190Kiwgdm9pZCogdWFwKSAt
PiBTaWduYWxBY3Rpb24gewotICAgICAgICBTaWduYWxDb250ZXh0IGNvbnRleHQoc3RhdGljX2Nh
c3Q8dWNvbnRleHRfdCo+KHVhcCktPnVjX21jb250ZXh0KTsKKyAgICBpbnN0YWxsU2lnbmFsSGFu
ZGxlcihTaWduYWw6OlRyYXAsIFtdIChTaWduYWwsIFNpZ0luZm8mLCBQbGF0Zm9ybVJlZ2lzdGVy
cyYgcmVnaXN0ZXJzKSAtPiBTaWduYWxBY3Rpb24geworICAgICAgICBTaWduYWxDb250ZXh0IGNv
bnRleHQocmVnaXN0ZXJzKTsKIAogICAgICAgICBpZiAoIWlzSklUUEMoY29udGV4dC50cmFwUEMp
KQogICAgICAgICAgICAgcmV0dXJuIFNpZ25hbEFjdGlvbjo6Tm90SGFuZGxlZDsKQEAgLTQwNCw4
ICs0MDQsOCBAQCB2b2lkIFZNVHJhcHM6OlNpZ25hbFNlbmRlcjo6c2VuZCgpCiAgICAgICAgICAg
ICBWTSYgdm0gPSAqbV92bTsKICAgICAgICAgICAgIGF1dG8gb3B0aW9uYWxPd25lclRocmVhZCA9
IHZtLm93bmVyVGhyZWFkKCk7CiAgICAgICAgICAgICBpZiAob3B0aW9uYWxPd25lclRocmVhZCkg
ewotICAgICAgICAgICAgICAgIHNlbmRNZXNzYWdlKCpvcHRpb25hbE93bmVyVGhyZWFkLnZhbHVl
KCkuZ2V0KCksIFtdIChzaWdpbmZvX3QqLCB1Y29udGV4dF90KiB1Y29udGV4dCkgLT4gdm9pZCB7
Ci0gICAgICAgICAgICAgICAgICAgIFNpZ25hbENvbnRleHQgY29udGV4dCh1Y29udGV4dC0+dWNf
bWNvbnRleHQpOworICAgICAgICAgICAgICAgIHNlbmRNZXNzYWdlKCpvcHRpb25hbE93bmVyVGhy
ZWFkLnZhbHVlKCkuZ2V0KCksIFtdIChQbGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzKSAtPiB2
b2lkIHsKKyAgICAgICAgICAgICAgICAgICAgU2lnbmFsQ29udGV4dCBjb250ZXh0KHJlZ2lzdGVy
cyk7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gYWN0aXZlVk1BbmRTdGFja0JvdW5kcyA9IGZp
bmRBY3RpdmVWTUFuZFN0YWNrQm91bmRzKGNvbnRleHQpOwogICAgICAgICAgICAgICAgICAgICBp
ZiAoYWN0aXZlVk1BbmRTdGFja0JvdW5kcykgewogICAgICAgICAgICAgICAgICAgICAgICAgVk0q
IHZtID0gYWN0aXZlVk1BbmRTdGFja0JvdW5kcy52YWx1ZSgpLnZtOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1NpZ2lsbENyYXNoQW5hbHl6ZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rvb2xzL1NpZ2lsbENyYXNoQW5hbHl6ZXIuY3BwCmluZGV4IDRhZGFl
ZmYxY2RhMmQxZmJjNmY5MDYxZjA2M2UxNGQyZTYzMzAwNDguLjcxYTZlNDI1NWM2NDVkZDZhZjNi
ZGIyNTBjY2YxM2FkOGMxYThhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9TaWdpbGxDcmFzaEFuYWx5emVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvU2lnaWxsQ3Jhc2hBbmFseXplci5jcHAKQEAgLTc4LDExICs3OCwxMSBAQCBwcml2YXRl
OgogI2VuZGlmIC8vIFVTRShPU19MT0cpCiAKIHN0cnVjdCBTaWduYWxDb250ZXh0IHsKLSAgICBT
aWduYWxDb250ZXh0KG1jb250ZXh0X3QmIG1jb250ZXh0KQotICAgICAgICA6IG1jb250ZXh0KG1j
b250ZXh0KQotICAgICAgICAsIG1hY2hpbmVQQyhNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Q
b2ludGVyKG1jb250ZXh0KSkKLSAgICAgICAgLCBzdGFja1BvaW50ZXIoTWFjaGluZUNvbnRleHQ6
OnN0YWNrUG9pbnRlcihtY29udGV4dCkpCi0gICAgICAgICwgZnJhbWVQb2ludGVyKE1hY2hpbmVD
b250ZXh0OjpmcmFtZVBvaW50ZXIobWNvbnRleHQpKQorICAgIFNpZ25hbENvbnRleHQoUGxhdGZv
cm1SZWdpc3RlcnMmIHJlZ2lzdGVycykKKyAgICAgICAgOiByZWdpc3RlcnMocmVnaXN0ZXJzKQor
ICAgICAgICAsIG1hY2hpbmVQQyhNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVyKHJl
Z2lzdGVycykpCisgICAgICAgICwgc3RhY2tQb2ludGVyKE1hY2hpbmVDb250ZXh0OjpzdGFja1Bv
aW50ZXIocmVnaXN0ZXJzKSkKKyAgICAgICAgLCBmcmFtZVBvaW50ZXIoTWFjaGluZUNvbnRleHQ6
OmZyYW1lUG9pbnRlcihyZWdpc3RlcnMpKQogICAgIHsgfQogCiAgICAgdm9pZCBkdW1wKCkKQEAg
LTExMiw3ICsxMTIsNyBAQCBzdHJ1Y3QgU2lnbmFsQ29udGV4dCB7CiAgICAgICAgIHYoZ3MpCiAK
ICNkZWZpbmUgRFVNUF9SRUdJU1RFUihfX3JlZykgXAotICAgICAgICBsb2coIlJlZ2lzdGVyICIg
I19fcmVnICI6ICVwIiwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3MuX18j
I19fcmVnKSk7CisgICAgICAgIGxvZygiUmVnaXN0ZXIgIiAjX19yZWcgIjogJXAiLCByZWludGVy
cHJldF9jYXN0PHZvaWQqPihyZWdpc3RlcnMuX18jI19fcmVnKSk7CiAgICAgICAgIEZPUl9FQUNI
X1JFR0lTVEVSKERVTVBfUkVHSVNURVIpCiAjdW5kZWYgRk9SX0VBQ0hfUkVHSVNURVIKIApAQCAt
MTIwLDIwICsxMjAsMjAgQEAgc3RydWN0IFNpZ25hbENvbnRleHQgewogICAgICAgICBpbnQgaTsK
ICAgICAgICAgZm9yIChpID0gMDsgaSA8IDI4OyBpICs9IDQpIHsKICAgICAgICAgICAgIGxvZygi
eCVkOiAlMDE2bGx4IHglZDogJTAxNmxseCB4JWQ6ICUwMTZsbHggeCVkOiAlMDE2bGx4IiwKLSAg
ICAgICAgICAgICAgICBpLCBtY29udGV4dC0+X19zcy5fX3hbaV0sCi0gICAgICAgICAgICAgICAg
aSsxLCBtY29udGV4dC0+X19zcy5fX3hbaSsxXSwKLSAgICAgICAgICAgICAgICBpKzIsIG1jb250
ZXh0LT5fX3NzLl9feFtpKzJdLAotICAgICAgICAgICAgICAgIGkrMywgbWNvbnRleHQtPl9fc3Mu
X194W2krM10pOworICAgICAgICAgICAgICAgIGksIHJlZ2lzdGVycy5fX3hbaV0sCisgICAgICAg
ICAgICAgICAgaSsxLCByZWdpc3RlcnMuX194W2krMV0sCisgICAgICAgICAgICAgICAgaSsyLCBy
ZWdpc3RlcnMuX194W2krMl0sCisgICAgICAgICAgICAgICAgaSszLCByZWdpc3RlcnMuX194W2kr
M10pOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVChpIDwgMjkpOwogICAgICAgICBsb2coIngl
ZDogJTAxNmxseCBmcDogJTAxNmxseCBscjogJTAxNmxseCIsCi0gICAgICAgICAgICBpLCBtY29u
dGV4dC0+X19zcy5fX3hbaV0sIG1jb250ZXh0LT5fX3NzLl9fZnAsIG1jb250ZXh0LT5fX3NzLl9f
bHIpOworICAgICAgICAgICAgaSwgcmVnaXN0ZXJzLl9feFtpXSwgcmVnaXN0ZXJzLl9fZnAsIHJl
Z2lzdGVycy5fX2xyKTsKICAgICAgICAgbG9nKCJzcDogJTAxNmxseCBwYzogJTAxNmxseCBjcHNy
OiAlMDh4IiwKLSAgICAgICAgICAgIG1jb250ZXh0LT5fX3NzLl9fc3AsIG1jb250ZXh0LT5fX3Nz
Ll9fcGMsIG1jb250ZXh0LT5fX3NzLl9fY3Bzcik7CisgICAgICAgICAgICByZWdpc3RlcnMuX19z
cCwgcmVnaXN0ZXJzLl9fcGMsIHJlZ2lzdGVycy5fX2Nwc3IpOwogI2VuZGlmCiAgICAgfQogCi0g
ICAgbWNvbnRleHRfdCYgbWNvbnRleHQ7CisgICAgUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ2lzdGVy
czsKICAgICB2b2lkKiBtYWNoaW5lUEM7CiAgICAgdm9pZCogc3RhY2tQb2ludGVyOwogICAgIHZv
aWQqIGZyYW1lUG9pbnRlcjsKQEAgLTE0Miw4ICsxNDIsOCBAQCBzdHJ1Y3QgU2lnbmFsQ29udGV4
dCB7CiBzdGF0aWMgdm9pZCBpbnN0YWxsQ3Jhc2hIYW5kbGVyKCkKIHsKICNpZiBDUFUoWDg2XzY0
KSB8fCBDUFUoQVJNNjQpCi0gICAgaW5zdGFsbFNpZ25hbEhhbmRsZXIoU2lnbmFsOjpJbGwsIFtd
IChpbnQsIHNpZ2luZm9fdCosIHZvaWQqIHVhcCkgewotICAgICAgICBTaWduYWxDb250ZXh0IGNv
bnRleHQoc3RhdGljX2Nhc3Q8dWNvbnRleHRfdCo+KHVhcCktPnVjX21jb250ZXh0KTsKKyAgICBp
bnN0YWxsU2lnbmFsSGFuZGxlcihTaWduYWw6OklsbCwgW10gKFNpZ25hbCwgU2lnSW5mbyYsIFBs
YXRmb3JtUmVnaXN0ZXJzJiByZWdpc3RlcnMpIHsKKyAgICAgICAgU2lnbmFsQ29udGV4dCBjb250
ZXh0KHJlZ2lzdGVycyk7CiAKICAgICAgICAgaWYgKCFpc0pJVFBDKGNvbnRleHQubWFjaGluZVBD
KSkKICAgICAgICAgICAgIHJldHVybiBTaWduYWxBY3Rpb246Ok5vdEhhbmRsZWQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKaW5kZXggMWRkMGNkMWQ4MzVjNmMy
ZjIzMWIwMGI4ODZkZGU0YWY3MmMyNjNjZS4uYjFiNTk4ZDIwYzVjMDA3N2Q5ZTlkMDhlMzY4YWQ1
Y2ExNzgzMWJhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJC
UVBsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNw
cApAQCAtMjQyLDcgKzI0Miw3IEBAIHZvaWQgQkJRUGxhbjo6Y29tcGlsZUZ1bmN0aW9ucyhDb21w
aWxhdGlvbkVmZm9ydCBlZmZvcnQpCiAgICAgICAgIEFTU0VSVCh2YWxpZGF0ZUZ1bmN0aW9uKGZ1
bmN0aW9uU3RhcnQsIGZ1bmN0aW9uTGVuZ3RoLCBzaWduYXR1cmUsIG1fbW9kdWxlSW5mb3JtYXRp
b24uZ2V0KCkpKTsKIAogICAgICAgICBtX3VubGlua2VkV2FzbVRvV2FzbUNhbGxzW2Z1bmN0aW9u
SW5kZXhdID0gVmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+KCk7Ci0gICAgICAgIFRpZXJV
cENvdW50KiB0aWVyVXAgPSAmbV90aWVyVXBDb3VudHNbZnVuY3Rpb25JbmRleF07CisgICAgICAg
IFRpZXJVcENvdW50KiB0aWVyVXAgPSBPcHRpb25zOjp1c2VCQlFUaWVyVXBDaGVja3MoKSA/ICZt
X3RpZXJVcENvdW50c1tmdW5jdGlvbkluZGV4XSA6IG51bGxwdHI7CiAgICAgICAgIGF1dG8gcGFy
c2VBbmRDb21waWxlUmVzdWx0ID0gcGFyc2VBbmRDb21waWxlKG1fY29tcGlsYXRpb25Db250ZXh0
c1tmdW5jdGlvbkluZGV4XSwgZnVuY3Rpb25TdGFydCwgZnVuY3Rpb25MZW5ndGgsIHNpZ25hdHVy
ZSwgbV91bmxpbmtlZFdhc21Ub1dhc21DYWxsc1tmdW5jdGlvbkluZGV4XSwgbV9tb2R1bGVJbmZv
cm1hdGlvbi5nZXQoKSwgbV9tb2RlLCBDb21waWxhdGlvbk1vZGU6OkJCUU1vZGUsIGZ1bmN0aW9u
SW5kZXgsIHRpZXJVcCk7CiAKICAgICAgICAgaWYgKFVOTElLRUxZKCFwYXJzZUFuZENvbXBpbGVS
ZXN1bHQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRmF1
bHRTaWduYWxIYW5kbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVs
dFNpZ25hbEhhbmRsZXIuY3BwCmluZGV4IDJlMGM5OWEzOWJlYmQzMTc4YjkxNDhkOTU4ZmU1M2U1
N2E2MjI5N2UuLjI2NGMzNGRlNDVkYTE3NWE1ZDUxNDFjMTcxZWZlOTVlMDYzYzVlMjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRsZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRs
ZXIuY3BwCkBAIC01Miw5ICs1Miw4IEBAIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8SGFzaFNl
dDxzdGQ6OnR1cGxlPHZvaWQqLCB2b2lkKj4+PiBjb2RlTG9jYXRpb25zOyAvLyAoCiAKIHN0YXRp
YyBib29sIGZhc3RIYW5kbGVySW5zdGFsbGVkIHsgZmFsc2UgfTsKIAotc3RhdGljIFNpZ25hbEFj
dGlvbiB0cmFwSGFuZGxlcihpbnQsIHNpZ2luZm9fdCogc2lnSW5mbywgdm9pZCogdWNvbnRleHQp
CitzdGF0aWMgU2lnbmFsQWN0aW9uIHRyYXBIYW5kbGVyKFNpZ25hbCwgU2lnSW5mbyYgc2lnSW5m
bywgUGxhdGZvcm1SZWdpc3RlcnMmIGNvbnRleHQpCiB7Ci0gICAgbWNvbnRleHRfdCYgY29udGV4
dCA9IHN0YXRpY19jYXN0PHVjb250ZXh0X3QqPih1Y29udGV4dCktPnVjX21jb250ZXh0OwogICAg
IHZvaWQqIGZhdWx0aW5nSW5zdHJ1Y3Rpb24gPSBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Q
b2ludGVyKGNvbnRleHQpOwogICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJzdGFydGluZyBoYW5k
bGVyIGZvciBmYXVsdCBhdDogIiwgUmF3UG9pbnRlcihmYXVsdGluZ0luc3RydWN0aW9uKSk7CiAK
QEAgLTY0LDcgKzYzLDcgQEAgc3RhdGljIFNpZ25hbEFjdGlvbiB0cmFwSGFuZGxlcihpbnQsIHNp
Z2luZm9fdCogc2lnSW5mbywgdm9pZCogdWNvbnRleHQpCiAgICAgaWYgKGlzSklUUEMoZmF1bHRp
bmdJbnN0cnVjdGlvbikpIHsKICAgICAgICAgYm9vbCBmYXVsdGVkSW5BY3RpdmVGYXN0TWVtb3J5
ID0gZmFsc2U7CiAgICAgICAgIHsKLSAgICAgICAgICAgIHZvaWQqIGZhdWx0aW5nQWRkcmVzcyA9
IHNpZ0luZm8tPnNpX2FkZHI7CisgICAgICAgICAgICB2b2lkKiBmYXVsdGluZ0FkZHJlc3MgPSBz
aWdJbmZvLmZhdWx0aW5nQWRkcmVzczsKICAgICAgICAgICAgIGRhdGFMb2dMbklmKHZlcmJvc2Us
ICJjaGVja2luZyBmYXVsdGluZyBhZGRyZXNzOiAiLCBSYXdQb2ludGVyKGZhdWx0aW5nQWRkcmVz
cyksICIgaXMgaW4gYW4gYWN0aXZlIGZhc3QgbWVtb3J5Iik7CiAgICAgICAgICAgICBmYXVsdGVk
SW5BY3RpdmVGYXN0TWVtb3J5ID0gV2FzbTo6TWVtb3J5OjphZGRyZXNzSXNJbkFjdGl2ZUZhc3RN
ZW1vcnkoZmF1bHRpbmdBZGRyZXNzKTsKICAgICAgICAgfQpAQCAtMTI0LDExICsxMjMsMTEgQEAg
dm9pZCBlbmFibGVGYXN0TWVtb3J5KCkKICAgICAgICAgICAgIHJldHVybjsKIAogI2lmIEVOQUJM
RShXRUJBU1NFTUJMWV9GQVNUX01FTU9SWSkKLSAgICAgICAgaW5zdGFsbFNpZ25hbEhhbmRsZXIo
U2lnbmFsOjpCdXMsIFtdIChpbnQgc2lnbmFsLCBzaWdpbmZvX3QqIHNpZ0luZm8sIHZvaWQqIHVj
b250ZXh0KSB7CisgICAgICAgIGluc3RhbGxTaWduYWxIYW5kbGVyKFNpZ25hbDo6QnVzLCBbXSAo
U2lnbmFsIHNpZ25hbCwgU2lnSW5mbyYgc2lnSW5mbywgUGxhdGZvcm1SZWdpc3RlcnMmIHVjb250
ZXh0KSB7CiAgICAgICAgICAgICByZXR1cm4gdHJhcEhhbmRsZXIoc2lnbmFsLCBzaWdJbmZvLCB1
Y29udGV4dCk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIGluc3RhbGxTaWduYWxIYW5kbGVyKFNp
Z25hbDo6U2VnViwgW10gKGludCBzaWduYWwsIHNpZ2luZm9fdCogc2lnSW5mbywgdm9pZCogdWNv
bnRleHQpIHsKKyAgICAgICAgaW5zdGFsbFNpZ25hbEhhbmRsZXIoU2lnbmFsOjpTZWdWLCBbXSAo
U2lnbmFsIHNpZ25hbCwgU2lnSW5mbyYgc2lnSW5mbywgUGxhdGZvcm1SZWdpc3RlcnMmIHVjb250
ZXh0KSB7CiAgICAgICAgICAgICByZXR1cm4gdHJhcEhhbmRsZXIoc2lnbmFsLCBzaWdJbmZvLCB1
Y29udGV4dCk7CiAgICAgICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtTWFjaGluZVRocmVhZHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbU1hY2hpbmVUaHJlYWRzLmNwcAppbmRleCA1YWFjODdhY2I1NzQ3YzdmY2EyZjkzNmVj
OWNmNjc4YjQzMTc4MTcxLi4wYTM2N2ZkNWUyMjUyN2U5YzNjODc1MzZlY2ZkNzJiMTNkZjc5ZDVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWFjaGluZVRocmVh
ZHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NYWNoaW5lVGhyZWFk
cy5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJNYWNoaW5lU3RhY2tNYXJrZXIuaCIK
ICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkTWVz
c2FnZS5oPgorI2luY2x1ZGUgPHd0Zi90aHJlYWRzL1NpZ25hbHMuaD4KIAogbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBXYXNtIHsKIApAQCAtNTcsNyArNTgsNyBAQCB2b2lkIHJlc2V0SW5zdHJ1
Y3Rpb25DYWNoZU9uQWxsVGhyZWFkcygpCiAKICAgICBjb25zdCBEb3VibHlMaW5rZWRMaXN0PE1h
Y2hpbmVUaHJlYWRzOjpNYWNoaW5lVGhyZWFkPiYgdGhyZWFkcyA9IHdhc21UaHJlYWRzKCkudGhy
ZWFkc0xpc3RIZWFkKGxvY2tlcik7CiAgICAgZm9yIChjb25zdCBhdXRvKiB0aHJlYWQgPSB0aHJl
YWRzLmhlYWQoKTsgdGhyZWFkOyB0aHJlYWQgPSB0aHJlYWQtPm5leHQoKSkgewotICAgICAgICBz
ZW5kTWVzc2FnZSh0aHJlYWQtPm1fdGhyZWFkLmdldCgpLCBbXSAoc2lnaW5mb190KiwgdWNvbnRl
eHRfdCopIHsKKyAgICAgICAgc2VuZE1lc3NhZ2UodGhyZWFkLT5tX3RocmVhZC5nZXQoKSwgW10g
KGNvbnN0IFBsYXRmb3JtUmVnaXN0ZXJzJikgewogICAgICAgICAgICAgLy8gSXQncyBsaWtlbHkg
dGhhdCB0aGUgc2lnbmFsIGhhbmRsZXIgd2lsbCBhbHJlYWR5IHJlc2V0IHRoZSBpbnN0cnVjdGlv
biBjYWNoZSBidXQgd2UgbWlnaHQgYXMgd2VsbCBiZSBzdXJlLgogICAgICAgICAgICAgV1RGOjpj
cm9zc01vZGlmeWluZ0NvZGVGZW5jZSgpOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvQ29uZmlndXJhdGlvbnMvV1RGLnhjY29uZmlnIGIvU291cmNlL1dURi9Db25maWd1cmF0
aW9ucy9XVEYueGNjb25maWcKaW5kZXggNDIxZWZkOTYxYzE0NjhjZDIwZGRjNWJiZjg4OTYyMGVl
MWNmNThkYy4uYWYxOTljZWI5NTA2Zjg5NTBkMzNhOWNlNDgwN2JhNmRiYjdiMjdlNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi9Db25maWd1cmF0aW9ucy9XVEYueGNjb25maWcKKysrIGIvU291cmNl
L1dURi9Db25maWd1cmF0aW9ucy9XVEYueGNjb25maWcKQEAgLTI3LDMgKzI3LDYgQEAgUFJPRFVD
VF9OQU1FID0gV1RGOwogCiBHQ0NfU1lNQk9MU19QUklWQVRFX0VYVEVSTiA9IFlFUzsKIFNUUklQ
X0lOU1RBTExFRF9QUk9EVUNUID0gTk87CisKK0VYQ0xVREVEX1NPVVJDRV9GSUxFX05BTUVTXyA9
IE1hY2hFeGNlcHRpb25zLmRlZnMKK0VYQ0xVREVEX1NPVVJDRV9GSUxFX05BTUVTW3Nkaz1pcGhv
bmVvcypdID0gJChFWENMVURFRF9TT1VSQ0VfRklMRV9OQU1FU18kKFVTRV9JTlRFUk5BTF9TREsp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTdiM2UwZjc5
ZjYyMzk1OTI1ZWE4ZThhOThkNzEzNGQxMTZlMjhkOS4uZDYyYTc5M2IzZTFmNjc5MTJhNDM3MWQ1
YzBjYWE5YmYyMjE4NDY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC02NCw2ICs2NCw3IEBACiAJCTUyMTgzMDEyQzk5RTQ3NkE4NEVFQkVBOCAvKiBTeW1i
b2xJbXBsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY3MkJCREIxMDdGQTQyNDg4NjE3OEI5RSAvKiBTeW1ib2xJbXBsLmNwcCAqLzsgfTsKIAkJNTMx
MUJENTMxRUE3MUNBRDAwNTI1MjgxIC8qIFNpZ25hbHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMxMUJENTExRUE3MUNBRDAwNTI1MjgxIC8qIFNp
Z25hbHMuY3BwICovOyB9OwogCQk1MzExQkQ1QzFFQTgyMkY5MDA1MjUyODEgLyogVGhyZWFkTWVz
c2FnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MzExQkQ1QjFFQTgyMkY5MDA1MjUyODEgLyogVGhyZWFkTWVzc2FnZS5jcHAgKi87IH07CisJCTUz
NTM0RjJBMUVDMEUxMEUwMDE0MUIyRiAvKiBNYWNoRXhjZXB0aW9ucy5kZWZzIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM1MzRGMjkxRUMwRTEwRTAwMTQx
QjJGIC8qIE1hY2hFeGNlcHRpb25zLmRlZnMgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
Q2xpZW50LCBTZXJ2ZXIsICk7IH07IH07CiAJCTcwQTk5M0ZFMUFENzE1MTMwMEZBNjE1QiAvKiBT
eW1ib2xSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3MEE5OTNGQzFBRDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuY3BwICov
OyB9OwogCQk3MEVDQTYwRDFCMDI0MjY4MDA0NDk3MzkgLyogQXRvbWljU3RyaW5nSW1wbC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEVDQTYwQTFC
MDI0MjY4MDA0NDk3MzkgLyogQXRvbWljU3RyaW5nSW1wbC5jcHAgKi87IH07CiAJCTdBRkVDNkIx
MUVCMjJCNTkwMERBREUzNiAvKiBVVUlELmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkVDNkIwMUVCMjJCNTkwMERBREUzNiAvKiBVVUlELmNwcCAq
LzsgfTsKQEAgLTI5OSw2ICszMDAsNyBAQAogCQk1MzExQkQ1NzFFQTdFMUExMDA1MjUyODEgLyog
U2lnbmFscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaWduYWxzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzMTFCRDU5MUVBODFBOTYwMDUyNTI4MSAvKiBU
aHJlYWRNZXNzYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVhZE1l
c3NhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMxMUJENUIxRUE4MjJGOTAw
NTI1MjgxIC8qIFRocmVhZE1lc3NhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gVGhyZWFkTWVzc2FnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUzNTM0RjI5MUVDMEUxMEUwMDE0MUIyRiAvKiBNYWNoRXhjZXB0aW9ucy5kZWZzICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5taWc7IHBhdGggPSBNYWNoRXhjZXB0aW9ucy5kZWZzOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MzlFQjA2MjFENTUyODQyMDBDODJFRjcgLyogTEVCRGVjb2Rl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMRUJEZWNvZGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzRUMyNTNDMUU5NUFEMzAwMDA4MzFCOSAvKiBQcmlv
cml0eVF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaW9yaXR5UXVl
dWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTUzMDcxQzkxQzQwNDI3MjAwMzg0
ODk4IC8qIFRpbnlMUlVDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBU
aW55TFJVQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMjIsNiArMTAy
NCw3IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQkxQTQyOEI4QjFDOEY4OUREMDA1MUU5RUIgLyog
QXBwS2l0Q29tcGF0aWJpbGl0eURlY2xhcmF0aW9ucy5oICovLAogCQkJCTFBQ0FERDgyMTg4NDQ4
MDEwMEQ4QjcxRCAvKiBEZXByZWNhdGVkU3ltYm9sc1VzZWRCeVNhZmFyaS5tbSAqLywKKwkJCQk1
MzUzNEYyOTFFQzBFMTBFMDAxNDFCMkYgLyogTWFjaEV4Y2VwdGlvbnMuZGVmcyAqLywKIAkJCQlB
OEE0NzJDNTE1MUE4MjVBMDA0MTIzRkYgLyogTWFpblRocmVhZE1hYy5tbSAqLywKIAkJCSk7CiAJ
CQlwYXRoID0gbWFjOwpAQCAtMTM0Niw2ICsxMzQ5LDcgQEAKIAkJCQkxNDNGNjExRjE1NjVGMEY5
MDBEQjUxNEEgLyogUkFNU2l6ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBM0I3MjVFQzk4NzQ0
NkFEOTNGMUE0NDAgLyogUmFuZG9tRGV2aWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3
NDE0MTUxQTgyNUIwMDQxMjNGRiAvKiBSYW5kb21OdW1iZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJNTM1MzRGMkExRUMwRTEwRTAwMTQxQjJGIC8qIE1hY2hFeGNlcHRpb25zLmRlZnMgaW4gU291
cmNlcyAqLywKIAkJCQlBOEE0NzQxQTE1MUE4MjVCMDA0MTIzRkYgLyogUmVmQ291bnRlZExlYWtD
b3VudGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJDREVEMEYzMTgxMTVDODUwMDREQkE3MCAv
KiBSdW5Mb29wLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJDREVEMEVGMTgxMTVDMzgwMDREQkE3
MCAvKiBSdW5Mb29wQ0YuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAppbmRleCA0NWJkOGE4
MTFmOTg4OWM4NWQ4ZjU0ZGRmNjUzOTgxZTJmZThmNjEwLi4wYzk1NmY0ZmY2MzgwNjc1ZTRjNDI3
ZGYyMGVjOTZlNjYwYTBiZDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKQEAgLTY2OSw2ICs2NjksMTAgQEAKICNk
ZWZpbmUgSEFWRV9SRUFETElORSAxCiAjZGVmaW5lIEhBVkVfU1lTX1RJTUVCX0ggMQogCisjaWYg
X19oYXNfaW5jbHVkZSg8bWFjaC9tYWNoX2V4Yy5kZWZzPikgJiYgIShQTEFURk9STShXQVRDSE9T
KSB8fCBQTEFURk9STShBUFBMRVRWKSkKKyNkZWZpbmUgSEFWRV9NQUNIX0VYQ0VQVElPTlMgMQor
I2VuZGlmCisKICNpZiAhUExBVEZPUk0oR1RLKQogI2RlZmluZSBVU0VfQUNDRUxFUkFURSAxCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtUmVnaXN0ZXJzLmggYi9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVJlZ2lzdGVycy5oCmluZGV4IGQ1YjVhYmMyMjFiYmFkODI5
NzYxOTNlY2U1MWMxYzc2MTc1ZGIwNmQuLjg0YmQ4OTM3NDk5ZGE5OWVhYTg2YjczNjk1ZjdjNWI4
MWFjMjYwY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtUmVnaXN0ZXJzLmgK
KysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1SZWdpc3RlcnMuaApAQCAtMjYsOSArMjYsMTEg
QEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgogCiAjaWYgT1MoREFSV0lOKQogI2luY2x1ZGUgPG1hY2gvdGhy
ZWFkX2FjdC5oPgorI2luY2x1ZGUgPHNpZ25hbC5oPgogI2VsaWYgT1MoV0lORE9XUykKICNpbmNs
dWRlIDx3aW5kb3dzLmg+CiAjZWxzZQpAQCAtNTUsNiArNTcsMTEgQEAgdHlwZWRlZiBhcm1fdGhy
ZWFkX3N0YXRlNjRfdCBQbGF0Zm9ybVJlZ2lzdGVyczsKICNlcnJvciBVbmtub3duIEFyY2hpdGVj
dHVyZQogI2VuZGlmCiAKK2lubGluZSBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzRnJvbVVD
b250ZXh0KHVjb250ZXh0X3QqIHVjb250ZXh0KQoreworICAgIHJldHVybiB1Y29udGV4dC0+dWNf
bWNvbnRleHQtPl9fc3M7Cit9CisKICNlbGlmIE9TKFdJTkRPV1MpCiAKIHVzaW5nIFBsYXRmb3Jt
UmVnaXN0ZXJzID0gQ09OVEVYVDsKQEAgLTY1LDYgKzcyLDExIEBAIHN0cnVjdCBQbGF0Zm9ybVJl
Z2lzdGVycyB7CiAgICAgbWNvbnRleHRfdCBtYWNoaW5lQ29udGV4dDsKIH07CiAKK2lubGluZSBQ
bGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzRnJvbVVDb250ZXh0KHVjb250ZXh0X3QqIHVjb250
ZXh0KQoreworICAgIHJldHVybiAqYml0d2lzZV9jYXN0PFBsYXRmb3JtUmVnaXN0ZXJzKj4oJnVj
b250ZXh0LT51Y19tY29udGV4dCk7Cit9CisKICNlbHNlCiAKIHN0cnVjdCBQbGF0Zm9ybVJlZ2lz
dGVycyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TdGFja0JvdW5kcy5oIGIvU291cmNl
L1dURi93dGYvU3RhY2tCb3VuZHMuaAppbmRleCA1NTQ2MDRmMmFiNDg0YzdjZjcxZWUzODYzMGNl
YjRjNzljMzNlOTcyLi5jZDYyYzE0OGE2YzdlZmM5NTE3YThiMDliOGEzMmM3ZmUxOTBjZGVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TdGFja0JvdW5kcy5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL1N0YWNrQm91bmRzLmgKQEAgLTU0LDcgKzU0LDYgQEAgcHVibGljOgogICAgICAgICA6IG1f
b3JpZ2luKG9yaWdpbikKICAgICAgICAgLCBtX2JvdW5kKGVuZCkKICAgICB7Ci0gICAgICAgIGNo
ZWNrQ29uc2lzdGVuY3koKTsKICAgICB9CiAKICAgICB2b2lkKiBvcmlnaW4oKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkSG9sZGVyLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L1RocmVhZEhvbGRlci5jcHAKaW5kZXggZTJhMzFiZTk5NzhhOWRlNDJlYmZhMzNiMDcwNmE1MjQz
M2JkNzJjYi4uOTc3ZDFkZmMxNzM5ZTU3Zjc3OTlkODVhZmUzNmM2MDZhNzU0NWUzNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkSG9sZGVyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9UaHJlYWRIb2xkZXIuY3BwCkBAIC0zNCwxMiArMzQsMTcgQEAKIAogI2luY2x1ZGUgIlRocmVh
ZGluZy5oIgogCisjaW5jbHVkZSA8d3RmL3RocmVhZHMvU2lnbmFscy5oPgorCiBuYW1lc3BhY2Ug
V1RGIHsKIAogVGhyZWFkU3BlY2lmaWNLZXkgVGhyZWFkSG9sZGVyOjptX2tleSA9IEludmFsaWRU
aHJlYWRTcGVjaWZpY0tleTsKIAogVGhyZWFkSG9sZGVyOjp+VGhyZWFkSG9sZGVyKCkKIHsKKyNp
ZiBIQVZFKE1BQ0hfRVhDRVBUSU9OUykKKyAgICB1bnJlZ2lzdGVyVGhyZWFkRm9yTWFjaEV4Y2Vw
dGlvbkhhbmRsaW5nKCZtX3RocmVhZC5nZXQoKSk7CisjZW5kaWYKICAgICBtX3RocmVhZC0+ZGlk
RXhpdCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRNZXNzYWdlLmNw
cCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZE1lc3NhZ2UuY3BwCmluZGV4IGYxNGJjNDVkMzYxNGM3
YzY2MzVlYjE3YWIwZTI3MjgxNmExMzczZGQuLmI5OTRjYWNkNjI2ZDRjNmNmZDVjMTY4MTA5YjU1
YjY5ZGQyM2I5OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZE1lc3NhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZE1lc3NhZ2UuY3BwCkBAIC0zNiw2ICszNiw5IEBA
CiAjaW5jbHVkZSA8d3RmL0xvY2tlci5oPgogI2luY2x1ZGUgPHd0Zi90aHJlYWRzL1NpZ25hbHMu
aD4KIAorI2lmIEhBVkUoTUFDSF9FWENFUFRJT05TKQorI2luY2x1ZGUgPG1hY2gvdGhyZWFkX2Fj
dC5oPgorI2VuZGlmCiAKIG5hbWVzcGFjZSBXVEYgewogCkBAIC04MywxMiArODYsMTIgQEAgdm9p
ZCBpbml0aWFsaXplVGhyZWFkTWVzc2FnZXMoKQogfQogCiBTVVBQUkVTU19BU0FOCi1NZXNzYWdl
U3RhdHVzIHNlbmRNZXNzYWdlU2NvcGVkKFRocmVhZCYgdGhyZWFkLCBjb25zdCBUaHJlYWRNZXNz
YWdlJiBtZXNzYWdlKQorc3RhdGljIE1lc3NhZ2VTdGF0dXMgc2VuZE1lc3NhZ2VVc2luZ1NpZ25h
bChUaHJlYWQmIHRocmVhZCwgY29uc3QgVGhyZWFkTWVzc2FnZSYgbWVzc2FnZSkKIHsKICAgICBj
b25zdGV4cHIgU2lnbmFsIHNpZ25hbCA9IFNpZ25hbDo6VXNyOwogICAgIHN0YXRpYyBzdGQ6Om9u
Y2VfZmxhZyBvbmNlOwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2UsIFtdIHsKLSAgICAgICAgaW5z
dGFsbFNpZ25hbEhhbmRsZXIoc2lnbmFsLCBbXSAoaW50LCBzaWdpbmZvX3QqIGluZm8sIHZvaWQq
IHVhcCkgeworICAgICAgICBpbnN0YWxsU2lnbmFsSGFuZGxlcihzaWduYWwsIFtdIChTaWduYWws
IFNpZ0luZm8mLCBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzKSB7CiAgICAgICAgICAgICBU
aHJlYWQqIHRocmVhZCA9IFRocmVhZDo6Y3VycmVudE1heUJlTnVsbCgpOwogCiAgICAgICAgICAg
ICBpZiAoIXRocmVhZCkgewpAQCAtOTgsNyArMTAxLDcgQEAgTWVzc2FnZVN0YXR1cyBzZW5kTWVz
c2FnZVNjb3BlZChUaHJlYWQmIHRocmVhZCwgY29uc3QgVGhyZWFkTWVzc2FnZSYgbWVzc2FnZSkK
IAogICAgICAgICAgICAgLy8gTm9kZSBzaG91bGQgYmUgZGVsZXRlZCBpbiB0aGUgc2VuZGVyIHRo
cmVhZC4gRGVsZXRpbmcgTm9kZXMgaW4gc2lnbmFsIGhhbmRsZXIgY2F1c2VzIGRlYWQgbG9jay4K
ICAgICAgICAgICAgIHRocmVhZC0+dGhyZWFkTWVzc2FnZXMoKS5jb25zdW1lQWxsV2l0aE5vZGUo
WyZdIChUaHJlYWRNZXNzYWdlRGF0YSogZGF0YSwgTm9kZSogbm9kZSkgewotICAgICAgICAgICAg
ICAgIGRhdGEtPm1lc3NhZ2UoaW5mbywgc3RhdGljX2Nhc3Q8dWNvbnRleHRfdCo+KHVhcCkpOwor
ICAgICAgICAgICAgICAgIGRhdGEtPm1lc3NhZ2UocmVnaXN0ZXJzKTsKICAgICAgICAgICAgICAg
ICAvLyBCeSBzZXR0aW5nIHJhbiB2YXJpYWJsZSwgKDEpIHRoZSBzZW5kZXIgYWNrbm93bGVkZ2Vz
IHRoZSBjb21wbGV0aW9uIGFuZAogICAgICAgICAgICAgICAgIC8vICgyKSBnZXRzIHRoZSBOb2Rl
IHRvIGJlIGRlbGV0ZWQuCiAgICAgICAgICAgICAgICAgZGF0YS0+cmFuLnN0b3JlKG5vZGUpOwpA
QCAtMTU2LDYgKzE1OSw2MiBAQCBNZXNzYWdlU3RhdHVzIHNlbmRNZXNzYWdlU2NvcGVkKFRocmVh
ZCYgdGhyZWFkLCBjb25zdCBUaHJlYWRNZXNzYWdlJiBtZXNzYWdlKQogICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKKyNpZiBIQVZFKE1BQ0hfRVhDRVBUSU9OUykKK3N0YXRp
YyBNZXNzYWdlU3RhdHVzIHNlbmRNZXNzYWdlVXNpbmdNYWNoKFRocmVhZCYgdGhyZWFkLCBjb25z
dCBUaHJlYWRNZXNzYWdlJiBtZXNzYWdlKQoreworICAgIHN0YXRpYyBTdGF0aWNMb2NrIG1lc3Nh
Z2VMb2NrOworICAgIGF1dG8gbG9ja2hvbGRlciA9IGhvbGRMb2NrKG1lc3NhZ2VMb2NrKTsKKwor
ICAgIGF1dG8gcmVzdWx0ID0gdGhyZWFkLnN1c3BlbmQoKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAg
ICAgICAgcmV0dXJuIE1lc3NhZ2VTdGF0dXM6OlRocmVhZEV4aXRlZDsKKworI2lmIENQVShYODYp
CisgICAgdW5zaWduZWQgdXNlckNvdW50ID0gc2l6ZW9mKFBsYXRmb3JtUmVnaXN0ZXJzKSAvIHNp
emVvZihpbnQpOworICAgIHRocmVhZF9zdGF0ZV9mbGF2b3JfdCBmbGF2b3IgPSBpMzg2X1RIUkVB
RF9TVEFURTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgdW5zaWduZWQgdXNlckNvdW50ID0geDg2
X1RIUkVBRF9TVEFURTY0X0NPVU5UOworICAgIHRocmVhZF9zdGF0ZV9mbGF2b3JfdCBmbGF2b3Ig
PSB4ODZfVEhSRUFEX1NUQVRFNjQ7CisjZWxpZiBDUFUoQVJNKQorICAgIHVuc2lnbmVkIHVzZXJD
b3VudCA9IEFSTV9USFJFQURfU1RBVEVfQ09VTlQ7CisgICAgdGhyZWFkX3N0YXRlX2ZsYXZvcl90
IGZsYXZvciA9IEFSTV9USFJFQURfU1RBVEU7CisjZWxpZiBDUFUoQVJNNjQpCisgICAgdW5zaWdu
ZWQgdXNlckNvdW50ID0gQVJNX1RIUkVBRF9TVEFURTY0X0NPVU5UOworICAgIHRocmVhZF9zdGF0
ZV9mbGF2b3JfdCBmbGF2b3IgPSBBUk1fVEhSRUFEX1NUQVRFNjQ7CisjZWxzZQorI2Vycm9yIFVu
a25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKworICAgIFBsYXRmb3JtUmVnaXN0ZXJzIHJlZ2lz
dGVyczsKKyAgICB0aHJlYWRfc3RhdGVfdCBzdGF0ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dGhyZWFk
X3N0YXRlX3Q+KCZyZWdpc3RlcnMpOworICAgIHRocmVhZF9nZXRfc3RhdGUodGhyZWFkLm1hY2hU
aHJlYWQoKSwgZmxhdm9yLCBzdGF0ZSwgJnVzZXJDb3VudCk7CisKKyAgICBtZXNzYWdlKHJlZ2lz
dGVycyk7CisKKyAgICB0aHJlYWRfc2V0X3N0YXRlKHRocmVhZC5tYWNoVGhyZWFkKCksIGZsYXZv
ciwgc3RhdGUsIHVzZXJDb3VudCk7CisKKyAgICB0aHJlYWQucmVzdW1lKCk7CisgICAgcmV0dXJu
IE1lc3NhZ2VTdGF0dXM6Ok1lc3NhZ2VSYW47Cit9CisKK3N0YXRpYyBib29sIHVzZU1hY2ggPSBm
YWxzZTsKK3ZvaWQgZGVsaXZlck1lc3NhZ2VzVXNpbmdNYWNoKCkKK3sKKyAgICB1c2VNYWNoID0g
dHJ1ZTsKK30KKworI2VuZGlmIC8vIEhBVkUoTUFDSF9FWENFUFRJT05TKQorCitNZXNzYWdlU3Rh
dHVzIHNlbmRNZXNzYWdlU2NvcGVkKFRocmVhZCYgdGhyZWFkLCBjb25zdCBUaHJlYWRNZXNzYWdl
JiBtZXNzYWdlKQoreworI2lmIEhBVkUoTUFDSF9FWENFUFRJT05TKQorICAgIGlmICh1c2VNYWNo
KQorICAgICAgICByZXR1cm4gc2VuZE1lc3NhZ2VVc2luZ01hY2godGhyZWFkLCBtZXNzYWdlKTsK
KyNlbmRpZgorICAgIHJldHVybiBzZW5kTWVzc2FnZVVzaW5nU2lnbmFsKHRocmVhZCwgbWVzc2Fn
ZSk7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV1RGCiAKICNlbmRpZiAvLyBVU0UoUFRIUkVBRFMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRNZXNzYWdlLmggYi9Tb3VyY2UvV1RG
L3d0Zi9UaHJlYWRNZXNzYWdlLmgKaW5kZXggMjY4YWRkNDM4NzZlNDE2NGZmMTEzNjVmY2RiNWFi
N2E2MjJiZTk0ZC4uMGY3NDU1MTI5NDYzNzQ2NzdhY2YxYjcwZGM2NjIzNThhMzg0ZmQ2MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkTWVzc2FnZS5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL1RocmVhZE1lc3NhZ2UuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV1RGIHsKIHZv
aWQgaW5pdGlhbGl6ZVRocmVhZE1lc3NhZ2VzKCk7CiAKIGNsYXNzIFRocmVhZE1lc3NhZ2VEYXRh
OwotdXNpbmcgVGhyZWFkTWVzc2FnZSA9IFNjb3BlZExhbWJkYTx2b2lkKHNpZ2luZm9fdCosIHVj
b250ZXh0X3QqKT47Cit1c2luZyBUaHJlYWRNZXNzYWdlID0gU2NvcGVkTGFtYmRhPHZvaWQoUGxh
dGZvcm1SZWdpc3RlcnMmKT47CiAKIGVudW0gY2xhc3MgTWVzc2FnZVN0YXR1cyB7CiAgICAgTWVz
c2FnZVJhbiwKQEAgLTUxLDEwICs1MSwxNCBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgTWVzc2FnZVN0
YXR1cyBzZW5kTWVzc2FnZVNjb3BlZChUaHJlYWQmLCBjb25zdCBUaHJlYWRNZXNzYWdlJgogdGVt
cGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KIE1lc3NhZ2VTdGF0dXMgc2VuZE1lc3NhZ2UoVGhyZWFk
JiB0YXJnZXRUaHJlYWQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmMpCiB7Ci0gICAgYXV0byBsYW1iZGEg
PSBzY29wZWRMYW1iZGFSZWY8dm9pZChzaWdpbmZvX3QqLCB1Y29udGV4dF90Kik+KGZ1bmMpOwor
ICAgIGF1dG8gbGFtYmRhID0gc2NvcGVkTGFtYmRhUmVmPHZvaWQoUGxhdGZvcm1SZWdpc3RlcnMm
KT4oZnVuYyk7CiAgICAgcmV0dXJuIHNlbmRNZXNzYWdlU2NvcGVkKHRhcmdldFRocmVhZCwgbGFt
YmRhKTsKIH0KIAorI2lmIEhBVkUoTUFDSF9FWENFUFRJT05TKQordm9pZCBkZWxpdmVyTWVzc2Fn
ZXNVc2luZ01hY2goKTsKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RG
OjpzZW5kTWVzc2FnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5oIGIv
U291cmNlL1dURi93dGYvVGhyZWFkaW5nLmgKaW5kZXggZDJlNTM2ZGY3YTg2OTZkOGU2Yjk1YmE0
M2UxNzNkM2I1NTBiZjE2YS4uMzUxNGU4YzA5ZjBmYzk0ZDUzNGJlMmYzYjZlN2M0OTUwZTBiY2Yw
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvVGhyZWFkaW5nLmgKQEAgLTEzOCw2ICsxMzgsMTAgQEAgcHVibGljOgogCiAjaWYgVVNF
KFBUSFJFQURTKQogICAgIExvY2tsZXNzQmFnPFRocmVhZE1lc3NhZ2VEYXRhKj4mIHRocmVhZE1l
c3NhZ2VzKCkgeyByZXR1cm4gbV90aHJlYWRNZXNzYWdlczsgfQorCisjaWYgT1MoREFSV0lOKQor
ICAgIG1hY2hfcG9ydF90IG1hY2hUaHJlYWQoKSB7IHJldHVybiBtX3BsYXRmb3JtVGhyZWFkOyB9
CisjZW5kaWYKICNlbmRpZgogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9tYWMvTWFjaEV4Y2VwdGlvbnMuZGVmcyBiL1NvdXJjZS9XVEYvd3RmL21hYy9NYWNoRXhjZXB0
aW9ucy5kZWZzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyMDU3NDJhNGVkNTAwZjgwNjRmZWViNDk1NWE3Yzk3MGQ5
OWFmMGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9tYWMvTWFjaEV4Y2VwdGlv
bnMuZGVmcwpAQCAtMCwwICsxLDI2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgPG1hY2gvbWFjaF9leGMuZGVmcz4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90aHJl
YWRzL1NpZ25hbHMuY3BwCmluZGV4IDg1NWIyOGIzMTcyMTcyN2NmMWY0MzFhOTE4YTI1MWRjMmU2
YTNkZmMuLjcwN2NhOWMyZDMyYTc2ODBhMzk4M2E4MmVjZjBiN2Q2YmZlZWVlY2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5jcHAKKysrIGIvU291cmNlL1dURi93
dGYvdGhyZWFkcy9TaWduYWxzLmNwcApAQCAtMjgsMjEgKzI4LDI2NyBAQAogCiAjaWYgVVNFKFBU
SFJFQURTKQogCisjaWYgSEFWRShNQUNIX0VYQ0VQVElPTlMpCitleHRlcm4gIkMiIHsKKyNpbmNs
dWRlICJNYWNoRXhjZXB0aW9uc1NlcnZlci5oIgorfTsKKyNlbmRpZgorCiAjaW5jbHVkZSA8Y3N0
ZGlvPgogI2luY2x1ZGUgPG11dGV4PgogI2luY2x1ZGUgPHNpZ25hbC5oPgorCisjaWYgSEFWRShN
QUNIX0VYQ0VQVElPTlMpCisjaW5jbHVkZSA8bWFjaC9tYWNoLmg+CisjaW5jbHVkZSA8bWFjaC90
aHJlYWRfYWN0Lmg+CisjZW5kaWYKKwogI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAjaW5jbHVk
ZSA8d3RmL0RhdGFMb2cuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0
Zi9Mb2NrbGVzc0JhZy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1
ZGUgPHd0Zi9UaHJlYWRNZXNzYWdlLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgorCiAK
IG5hbWVzcGFjZSBXVEYgewogCisgICAgCiBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPExvY2ts
ZXNzQmFnPFNpZ25hbEhhbmRsZXI+PiBoYW5kbGVyc1tzdGF0aWNfY2FzdDxzaXplX3Q+KFNpZ25h
bDo6TnVtYmVyT2ZTaWduYWxzKV0gPSB7IH07Ci1zdGF0aWMgc3RydWN0IHNpZ2FjdGlvbiBvbGRB
Y3Rpb25zW3N0YXRpY19jYXN0PHNpemVfdD4oU2lnbmFsOjpOdW1iZXJPZlNpZ25hbHMpXTsKIHN0
YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplT25jZUZsYWdzW3N0YXRpY19jYXN0PHNpemVf
dD4oU2lnbmFsOjpOdW1iZXJPZlNpZ25hbHMpXTsKK3N0YXRpYyBzdHJ1Y3Qgc2lnYWN0aW9uIG9s
ZEFjdGlvbnNbc3RhdGljX2Nhc3Q8c2l6ZV90PihTaWduYWw6Ok51bWJlck9mU2lnbmFscyldOwor
CisjaWYgSEFWRShNQUNIX0VYQ0VQVElPTlMpCisvLyBZb3UgY2FuIHJlYWQgbW9yZSBhYm91dCBt
YWNoIGV4Y2VwdGlvbnMgaGVyZToKKy8vIGh0dHA6Ly93d3cuY3MuY211LmVkdS9hZnMvY3MvcHJv
amVjdC9tYWNoL3B1YmxpYy9kb2MvdW5wdWJsaXNoZWQvZXhjZXB0aW9uLnBzCisvLyBhbmQgdGhl
IE1hY2ggaW50ZXJmYWNlIEdlbmVyYXRvciAoTWlHKSBoZXJlOgorLy8gaHR0cDovL3d3dy5jcy5j
bXUuZWR1L2Fmcy9jcy9wcm9qZWN0L21hY2gvcHVibGljL2RvYy91bnB1Ymxpc2hlZC9taWcucHMK
Kworc3RhdGljIG1hY2hfcG9ydF90IGV4Y2VwdGlvblBvcnQ7CitzdGF0aWMgY29uc3RleHByIHNp
emVfdCBtYXhNZXNzYWdlU2l6ZSA9IDEgKiBLQjsKKworc3RhdGljIHZvaWQgc3RhcnRNYWNoRXhj
ZXB0aW9uSGFuZGxlclRocmVhZCgpCit7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2U7
CisgICAgc3RkOjpjYWxsX29uY2Uob25jZSwgW10geworICAgICAgICBpZiAobWFjaF9wb3J0X2Fs
bG9jYXRlKG1hY2hfdGFza19zZWxmKCksIE1BQ0hfUE9SVF9SSUdIVF9SRUNFSVZFLCAmZXhjZXB0
aW9uUG9ydCkgIT0gS0VSTl9TVUNDRVNTKQorICAgICAgICAgICAgQ1JBU0goKTsKKworICAgICAg
ICBpZiAobWFjaF9wb3J0X2luc2VydF9yaWdodChtYWNoX3Rhc2tfc2VsZigpLCBleGNlcHRpb25Q
b3J0LCBleGNlcHRpb25Qb3J0LCBNQUNIX01TR19UWVBFX01BS0VfU0VORCkgIT0gS0VSTl9TVUND
RVNTKQorICAgICAgICAgICAgQ1JBU0goKTsKKworICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91
bGQgdXNlIGEgZGlzcGF0Y2ggcXVldWUuCisgICAgICAgIC8vIFNlZTogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjAwMworICAgICAgICAodm9pZClUaHJlYWQ6OmNy
ZWF0ZSgKKyAgICAgICAgICAgICJXVEYgTWFjaCBFeGNlcHRpb24gVGhyZWFkIiwgW10gKCkgewor
ICAgICAgICAgICAgICAgIHVuaW9uIE1lc3NhZ2UgeworICAgICAgICAgICAgICAgICAgICBtYWNo
X21zZ19oZWFkZXJfdCBoZWFkZXI7CisgICAgICAgICAgICAgICAgICAgIGNoYXIgZGF0YVttYXhN
ZXNzYWdlU2l6ZV07CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICBNZXNzYWdl
IG1lc3NhZ2VIZWFkZXJJbjsKKyAgICAgICAgICAgICAgICBNZXNzYWdlIG1lc3NhZ2VIZWFkZXJP
dXQ7CisKKyAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgICAgICAg
ICBrZXJuX3JldHVybl90IG1lc3NhZ2VSZXN1bHQgPSBtYWNoX21zZygmbWVzc2FnZUhlYWRlcklu
LmhlYWRlciwgTUFDSF9SQ1ZfTVNHLCAwLCBtYXhNZXNzYWdlU2l6ZSwgZXhjZXB0aW9uUG9ydCwg
TUFDSF9NU0dfVElNRU9VVF9OT05FLCBNQUNIX1BPUlRfTlVMTCk7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChtZXNzYWdlUmVzdWx0ID09IEtFUk5fU1VDQ0VTUykgeworICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCFtYWNoX2V4Y19zZXJ2ZXIoJm1lc3NhZ2VIZWFkZXJJbi5oZWFkZXIsICZt
ZXNzYWdlSGVhZGVyT3V0LmhlYWRlcikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1JB
U0goKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZVJlc3VsdCA9IG1hY2hfbXNn
KCZtZXNzYWdlSGVhZGVyT3V0LmhlYWRlciwgTUFDSF9TRU5EX01TRywgbWVzc2FnZUhlYWRlck91
dC5oZWFkZXIubXNnaF9zaXplLCAwLCBtZXNzYWdlSGVhZGVyT3V0LmhlYWRlci5tc2doX2xvY2Fs
X3BvcnQsIDAsIE1BQ0hfUE9SVF9OVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKG1lc3NhZ2VSZXN1bHQgPT0gS0VSTl9TVUNDRVNTKTsKKyAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiRmFpbGVk
IHRvIHJlY2VpdmUgbWFjaCBtZXNzYWdlIGR1ZSB0byAiLCBtYWNoX2Vycm9yX3N0cmluZyhtZXNz
YWdlUmVzdWx0KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICB9KS5sZWFrUmVmKCk7CisgICAgfSk7Cit9CisKK3N0YXRpYyBTaWduYWwgZnJvbU1hY2hF
eGNlcHRpb24oZXhjZXB0aW9uX3R5cGVfdCB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkgewor
ICAgIGNhc2UgRVhDX0JBRF9BQ0NFU1M6IHJldHVybiBTaWduYWw6OlNlZ1Y7CisgICAgY2FzZSBF
WENfQkFEX0lOU1RSVUNUSU9OOiByZXR1cm4gU2lnbmFsOjpJbGw7CisgICAgY2FzZSBFWENfQlJF
QUtQT0lOVDogcmV0dXJuIFNpZ25hbDo6VHJhcDsKKyAgICBkZWZhdWx0OiBicmVhazsKKyAgICB9
CisgICAgcmV0dXJuIFNpZ25hbDo6VW5rbm93bjsKK30KKworc3RhdGljIGV4Y2VwdGlvbl9tYXNr
X3QgdG9NYWNoTWFzayhTaWduYWwgc2lnbmFsKQoreworICAgIHN3aXRjaCAoc2lnbmFsKSB7Cisg
ICAgY2FzZSBTaWduYWw6OlNlZ1Y6IHJldHVybiBFWENfTUFTS19CQURfQUNDRVNTOworICAgIGNh
c2UgU2lnbmFsOjpJbGw6IHJldHVybiBFWENfTUFTS19CQURfSU5TVFJVQ1RJT047CisgICAgY2Fz
ZSBTaWduYWw6OlRyYXA6IHJldHVybiBFWENfTUFTS19CUkVBS1BPSU5UOworICAgIGRlZmF1bHQ6
IGJyZWFrOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitl
eHRlcm4gIkMiIHsKKworLy8gV2UgbmVlZCB0byBpbXBsZW1lbnQgc3R1YnMgZm9yIGNhdGNoX21h
Y2hfZXhjZXB0aW9uX3JhaXNlIGFuZCBjYXRjaF9tYWNoX2V4Y2VwdGlvbl9yYWlzZV9zdGF0ZV9p
ZGVudGl0eS4KKy8vIFRoZSBNaUcgZ2VuZXJhdGVkIGZpbGUgd2lsbCBmYWlsIHRvIGxpbmsgb3Ro
ZXJ3aXNlLCBldmVuIHRob3VnaCB3ZSBkb24ndCB1c2UgdGhlIGZ1bmN0aW9ucy4gT25seSB0aGUK
Ky8vIGNhdGNoX21hY2hfZXhjZXB0aW9uX3JhaXNlX3N0YXRlIGZ1bmN0aW9uIHNob3VsZCBiZSBj
YWxsZWQgYmVjYXVzZSB3ZSBwYXNzIEVYQ0VQVElPTl9TVEFURSB0bworLy8gdGhyZWFkX3NldF9l
eGNlcHRpb25fcG9ydHMuCitrZXJuX3JldHVybl90IGNhdGNoX21hY2hfZXhjZXB0aW9uX3JhaXNl
KG1hY2hfcG9ydF90LCBtYWNoX3BvcnRfdCwgbWFjaF9wb3J0X3QsIGV4Y2VwdGlvbl90eXBlX3Qs
IG1hY2hfZXhjZXB0aW9uX2RhdGFfdCwgbWFjaF9tc2dfdHlwZV9udW1iZXJfdCkKK3sKKyAgICBk
YXRhTG9nTG4oIldlIHNob3VsZCBub3QgaGF2ZSBjYWxsZWQgY2F0Y2hfZXhjZXB0aW9uX3JhaXNl
KCksIHBsZWFzZSBmaWxlIGEgYnVnIGF0IGJ1Z3Mud2Via2l0Lm9yZyIpOworICAgIHJldHVybiBL
RVJOX0ZBSUxVUkU7Cit9CisKK2tlcm5fcmV0dXJuX3QgY2F0Y2hfbWFjaF9leGNlcHRpb25fcmFp
c2Vfc3RhdGVfaWRlbnRpdHkobWFjaF9wb3J0X3QsIG1hY2hfcG9ydF90LCBtYWNoX3BvcnRfdCwg
ZXhjZXB0aW9uX3R5cGVfdCwgbWFjaF9leGNlcHRpb25fZGF0YV90LCBtYWNoX21zZ190eXBlX251
bWJlcl90LCBpbnQqLCB0aHJlYWRfc3RhdGVfdCwgbWFjaF9tc2dfdHlwZV9udW1iZXJfdCwgdGhy
ZWFkX3N0YXRlX3QsICBtYWNoX21zZ190eXBlX251bWJlcl90KikKK3sKKyAgICBkYXRhTG9nTG4o
IldlIHNob3VsZCBub3QgaGF2ZSBjYWxsZWQgY2F0Y2hfbWFjaF9leGNlcHRpb25fcmFpc2Vfc3Rh
dGVfaWRlbnRpdHksIHBsZWFzZSBmaWxlIGEgYnVnIGF0IGJ1Z3Mud2Via2l0Lm9yZyIpOworICAg
IHJldHVybiBLRVJOX0ZBSUxVUkU7Cit9CisKK2tlcm5fcmV0dXJuX3QgY2F0Y2hfbWFjaF9leGNl
cHRpb25fcmFpc2Vfc3RhdGUoCisgICAgbWFjaF9wb3J0X3QgcG9ydCwKKyAgICBleGNlcHRpb25f
dHlwZV90IGV4Y2VwdGlvblR5cGUsCisgICAgY29uc3QgbWFjaF9leGNlcHRpb25fZGF0YV90IGV4
Y2VwdGlvbkRhdGEsCisgICAgbWFjaF9tc2dfdHlwZV9udW1iZXJfdCBkYXRhQ291bnQsCisgICAg
aW50KiBzdGF0ZUZsYXZvciwKKyAgICBjb25zdCB0aHJlYWRfc3RhdGVfdCBpblN0YXRlLAorICAg
IG1hY2hfbXNnX3R5cGVfbnVtYmVyX3QgaW5TdGF0ZUNvdW50LAorICAgIHRocmVhZF9zdGF0ZV90
IG91dFN0YXRlLAorICAgIG1hY2hfbXNnX3R5cGVfbnVtYmVyX3QqIG91dFN0YXRlQ291bnQpCit7
CisgICAgUkVMRUFTRV9BU1NFUlQocG9ydCA9PSBleGNlcHRpb25Qb3J0KTsKKyAgICBTaWduYWwg
c2lnbmFsID0gZnJvbU1hY2hFeGNlcHRpb24oZXhjZXB0aW9uVHlwZSk7CisgICAgUkVMRUFTRV9B
U1NFUlQoc2lnbmFsICE9IFNpZ25hbDo6VW5rbm93bik7CisKKyAgICBtZW1jcHkob3V0U3RhdGUs
IGluU3RhdGUsIGluU3RhdGVDb3VudCAqIHNpemVvZihpblN0YXRlWzBdKSk7CisgICAgKm91dFN0
YXRlQ291bnQgPSBpblN0YXRlQ291bnQ7CisKKyNpZiBDUFUoWDg2XzY0KQorICAgIFJFTEVBU0Vf
QVNTRVJUKCpzdGF0ZUZsYXZvciA9PSB4ODZfVEhSRUFEX1NUQVRFKTsKKyAgICBQbGF0Zm9ybVJl
Z2lzdGVycyYgcmVnaXN0ZXJzID0gcmVpbnRlcnByZXRfY2FzdDx4ODZfdGhyZWFkX3N0YXRlX3Qq
PihvdXRTdGF0ZSktPnV0cy50czY0OworI2VsaWYgQ1BVKFg4NikKKyAgICBSRUxFQVNFX0FTU0VS
VCgqc3RhdGVGbGF2b3IgPT0geDg2X1RIUkVBRF9TVEFURSk7CisgICAgUGxhdGZvcm1SZWdpc3Rl
cnMmIHJlZ2lzdGVycyA9IHJlaW50ZXJwcmV0X2Nhc3Q8eDg2X3RocmVhZF9zdGF0ZV90Kj4ob3V0
U3RhdGUpLT51dHMudHMzMjsKKyNlbGlmIENQVShBUk02NCkKKyAgICBSRUxFQVNFX0FTU0VSVCgq
c3RhdGVGbGF2b3IgPT0gQVJNX1RIUkVBRF9TVEFURSk7CisgICAgUGxhdGZvcm1SZWdpc3RlcnMm
IHJlZ2lzdGVycyA9IHJlaW50ZXJwcmV0X2Nhc3Q8YXJtX3VuaWZpZWRfdGhyZWFkX3N0YXRlKj4o
b3V0U3RhdGUpLT50c182NDsKKyNlbGlmIENQVShBUk0pCisgICAgUkVMRUFTRV9BU1NFUlQoKnN0
YXRlRmxhdm9yID09IEFSTV9USFJFQURfU1RBVEUpOworICAgIFBsYXRmb3JtUmVnaXN0ZXJzJiBy
ZWdpc3RlcnMgPSByZWludGVycHJldF9jYXN0PGFybV91bmlmaWVkX3RocmVhZF9zdGF0ZSo+KG91
dFN0YXRlKS0+dHNfMzI7CisjZW5kaWYKKworICAgIFNpZ0luZm8gaW5mbzsKKyAgICBpZiAoc2ln
bmFsID09IFNpZ25hbDo6U2VnVikgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGRhdGFDb3VudCwg
ZGF0YUNvdW50ID09IDIpOworICAgICAgICBpbmZvLmZhdWx0aW5nQWRkcmVzcyA9IHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KGV4Y2VwdGlvbkRhdGFbMV0pOworICAgIH0KKworICAgIGJvb2wgZGlk
SGFuZGxlID0gZmFsc2U7CisgICAgaGFuZGxlcnNbc3RhdGljX2Nhc3Q8c2l6ZV90PihzaWduYWwp
XS0+aXRlcmF0ZShbJl0gKGNvbnN0IFNpZ25hbEhhbmRsZXImIGhhbmRsZXIpIHsKKyAgICAgICAg
U2lnbmFsQWN0aW9uIGhhbmRsZXJSZXN1bHQgPSBoYW5kbGVyKHNpZ25hbCwgaW5mbywgcmVnaXN0
ZXJzKTsKKyAgICAgICAgZGlkSGFuZGxlIHw9IGhhbmRsZXJSZXN1bHQgPT0gU2lnbmFsQWN0aW9u
OjpIYW5kbGVkOworICAgIH0pOworCisgICAgaWYgKGRpZEhhbmRsZSkKKyAgICAgICAgcmV0dXJu
IEtFUk5fU1VDQ0VTUzsKKyAgICByZXR1cm4gS0VSTl9GQUlMVVJFOworfQorCit9OworCitzdGF0
aWMgYm9vbCB1c2VNYWNoIHsgZmFsc2UgfTsKK3ZvaWQgaGFuZGxlU2lnbmFsc1dpdGhNYWNoKCkK
K3sKKyAgICBkZWxpdmVyTWVzc2FnZXNVc2luZ01hY2goKTsKKyAgICB1c2VNYWNoID0gdHJ1ZTsK
K30KKworCitzdGF0aWMgU3RhdGljTG9jayB0aHJlYWRMb2NrOworZXhjZXB0aW9uX21hc2tfdCBh
Y3RpdmVFeGNlcHRpb25zIHsgMCB9OwogCi1zdGF0aWMgdm9pZCBqc2NTaWduYWxIYW5kbGVyKGlu
dCBzaWcsIHNpZ2luZm9fdCogaW5mbywgdm9pZCogbWNvbnRleHQpCitpbmxpbmUgdm9pZCBzZXRF
eGNlcHRpb25Qb3J0cyhjb25zdCBBYnN0cmFjdExvY2tlciYsIFRocmVhZCogdGhyZWFkKQorewor
ICAgIGtlcm5fcmV0dXJuX3QgcmVzdWx0ID0gdGhyZWFkX3NldF9leGNlcHRpb25fcG9ydHModGhy
ZWFkLT5tYWNoVGhyZWFkKCksIGFjdGl2ZUV4Y2VwdGlvbnMsIGV4Y2VwdGlvblBvcnQsIEVYQ0VQ
VElPTl9TVEFURSB8IE1BQ0hfRVhDRVBUSU9OX0NPREVTLCBNQUNISU5FX1RIUkVBRF9TVEFURSk7
CisgICAgaWYgKHJlc3VsdCAhPSBLRVJOX1NVQ0NFU1MpIHsKKyAgICAgICAgZGF0YUxvZ0xuKCJ0
aHJlYWQgc2V0IHBvcnQgZmFpbGVkIGR1ZSB0byAiLCBtYWNoX2Vycm9yX3N0cmluZyhyZXN1bHQp
KTsKKyAgICAgICAgQ1JBU0goKTsKKyAgICB9Cit9CisKK2lubGluZSBIYXNoU2V0PFRocmVhZCo+
JiBhY3RpdmVUaHJlYWRzKGNvbnN0IEFic3RyYWN0TG9ja2VyJikKK3sKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8SGFzaFNldDxUaHJlYWQqPj4gYWN0aXZlVGhyZWFkczsKKyAgICByZXR1cm4g
YWN0aXZlVGhyZWFkczsKK30KKwordm9pZCByZWdpc3RlclRocmVhZEZvck1hY2hFeGNlcHRpb25I
YW5kbGluZyhUaHJlYWQqIHRocmVhZCkKK3sKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHRo
cmVhZExvY2spOworICAgIGF1dG8gcmVzdWx0ID0gYWN0aXZlVGhyZWFkcyhsb2NrZXIpLmFkZCh0
aHJlYWQpOworCisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICBzZXRFeGNlcHRp
b25Qb3J0cyhsb2NrZXIsIHRocmVhZCk7Cit9CisKK3ZvaWQgdW5yZWdpc3RlclRocmVhZEZvck1h
Y2hFeGNlcHRpb25IYW5kbGluZyhUaHJlYWQqIHRocmVhZCkKK3sKKyAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKHRocmVhZExvY2spOworICAgIGFjdGl2ZVRocmVhZHMobG9ja2VyKS5yZW1vdmUo
dGhyZWFkKTsKK30KKworI2Vsc2UKK3N0YXRpYyBjb25zdGV4cHIgYm9vbCB1c2VNYWNoID0gZmFs
c2U7CisjZW5kaWYgLy8gSEFWRShNQUNIX0VYQ0VQVElPTlMpCisKK3N0YXRpYyB2b2lkIGpzY1Np
Z25hbEhhbmRsZXIoaW50LCBzaWdpbmZvX3QqLCB2b2lkKik7CisKK3ZvaWQgaW5zdGFsbFNpZ25h
bEhhbmRsZXIoU2lnbmFsIHNpZ25hbCwgU2lnbmFsSGFuZGxlciYmIGhhbmRsZXIpCit7CisgICAg
QVNTRVJUKHNpZ25hbCA8IFNpZ25hbDo6VW5rbm93bik7CisjaWYgSEFWRShNQUNIX0VYQ0VQVElP
TlMpCisgICAgLy8gU2luY2UgbWFjaCBvbmx5IGhhcyBFWENfQkFEX0FDQ0VTUywgd2hpY2ggY292
ZXJzIGJvdGggU2VnViBhbmQgQnVzLCB3ZSBhcmJpdGFyaWx5IGNob29zZSB0byBtYWtlCisgICAg
Ly8gbWFjaCBFWENfQkFEX0FDQ0VTU2VzIG1hcCB0byBTZWdWLgorICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQganVzdCB1c2UgYSBzaW5nbGUgU2lnbmFsOjpCYWRBY2Nlc3MgdmFsdWUgaW5zdGVhZCBv
ZiBTZWdWL0J1cy4KKyAgICAvLyBTZWU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzIwNjMKKyAgICBpZiAoc2lnbmFsID09IFNpZ25hbDo6QnVzICYmIHVzZU1hY2gp
CisgICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQoIXVzZU1hY2ggfHwgc2lnbmFsICE9IFNpZ25h
bDo6VXNyKTsKKworICAgIGlmICh1c2VNYWNoKQorICAgICAgICBzdGFydE1hY2hFeGNlcHRpb25I
YW5kbGVyVGhyZWFkKCk7CisjZW5kaWYKKworICAgIHN0ZDo6Y2FsbF9vbmNlKGluaXRpYWxpemVP
bmNlRmxhZ3Nbc3RhdGljX2Nhc3Q8c2l6ZV90PihzaWduYWwpXSwgWyZdIHsKKyAgICAgICAgaGFu
ZGxlcnNbc3RhdGljX2Nhc3Q8c2l6ZV90PihzaWduYWwpXS5jb25zdHJ1Y3QoKTsKKworICAgICAg
ICBpZiAoIXVzZU1hY2gpIHsKKyAgICAgICAgICAgIHN0cnVjdCBzaWdhY3Rpb24gYWN0aW9uOwor
ICAgICAgICAgICAgYWN0aW9uLnNhX3NpZ2FjdGlvbiA9IGpzY1NpZ25hbEhhbmRsZXI7CisgICAg
ICAgICAgICBhdXRvIHJlc3VsdCA9IHNpZ2ZpbGxzZXQoJmFjdGlvbi5zYV9tYXNrKTsKKyAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKCFyZXN1bHQpOworICAgICAgICAgICAgYWN0aW9uLnNhX2Zs
YWdzID0gU0FfU0lHSU5GTzsKKyAgICAgICAgICAgIHJlc3VsdCA9IHNpZ2FjdGlvbih0b1N5c3Rl
bVNpZ25hbChzaWduYWwpLCAmYWN0aW9uLCAmb2xkQWN0aW9uc1tzdGF0aWNfY2FzdDxzaXplX3Q+
KHNpZ25hbCldKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFyZXN1bHQpOworICAgICAg
ICB9CisKKyAgICB9KTsKKworICAgIGhhbmRsZXJzW3N0YXRpY19jYXN0PHNpemVfdD4oc2lnbmFs
KV0tPmFkZChXVEZNb3ZlKGhhbmRsZXIpKTsKKworI2lmIEhBVkUoTUFDSF9FWENFUFRJT05TKQor
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sodGhyZWFkTG9jayk7CisgICAgaWYgKHVzZU1hY2gp
IHsKKyAgICAgICAgYWN0aXZlRXhjZXB0aW9ucyB8PSB0b01hY2hNYXNrKHNpZ25hbCk7CisKKyAg
ICAgICAgZm9yIChUaHJlYWQqIHRocmVhZCA6IGFjdGl2ZVRocmVhZHMobG9ja2VyKSkKKyAgICAg
ICAgICAgIHNldEV4Y2VwdGlvblBvcnRzKGxvY2tlciwgdGhyZWFkKTsKKyAgICB9CisjZW5kaWYK
K30KKwordm9pZCBqc2NTaWduYWxIYW5kbGVyKGludCBzaWcsIHNpZ2luZm9fdCogaW5mbywgdm9p
ZCogdWNvbnRleHQpCiB7CiAgICAgU2lnbmFsIHNpZ25hbCA9IGZyb21TeXN0ZW1TaWduYWwoc2ln
KTsKIApAQCAtNjIsMTAgKzMwOCwxNiBAQCBzdGF0aWMgdm9pZCBqc2NTaWduYWxIYW5kbGVyKGlu
dCBzaWcsIHNpZ2luZm9fdCogaW5mbywgdm9pZCogbWNvbnRleHQpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKKyAgICBTaWdJbmZvIHNpZ0luZm87CisgICAgaWYgKHNpZ25hbCA9PSBTaWduYWw6
OlNlZ1YgfHwgc2lnbmFsID09IFNpZ25hbDo6QnVzKQorICAgICAgICBzaWdJbmZvLmZhdWx0aW5n
QWRkcmVzcyA9IGluZm8tPnNpX2FkZHI7CisKKyAgICBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0
ZXJzID0gcmVnaXN0ZXJzRnJvbVVDb250ZXh0KHJlaW50ZXJwcmV0X2Nhc3Q8dWNvbnRleHRfdCo+
KHVjb250ZXh0KSk7CisKICAgICBib29sIGRpZEhhbmRsZSA9IGZhbHNlOwogICAgIGJvb2wgcmVz
dG9yZURlZmF1bHRIYW5kbGVyID0gZmFsc2U7CiAgICAgaGFuZGxlcnNbc3RhdGljX2Nhc3Q8c2l6
ZV90PihzaWduYWwpXS0+aXRlcmF0ZShbJl0gKGNvbnN0IFNpZ25hbEhhbmRsZXImIGhhbmRsZXIp
IHsKLSAgICAgICAgc3dpdGNoIChoYW5kbGVyKHNpZywgaW5mbywgbWNvbnRleHQpKSB7CisgICAg
ICAgIHN3aXRjaCAoaGFuZGxlcihzaWduYWwsIHNpZ0luZm8sIHJlZ2lzdGVycykpIHsKICAgICAg
ICAgY2FzZSBTaWduYWxBY3Rpb246OkhhbmRsZWQ6CiAgICAgICAgICAgICBkaWRIYW5kbGUgPSB0
cnVlOwogICAgICAgICAgICAgYnJlYWs7CkBAIC04NSwxMyArMzM3LDEzIEBAIHN0YXRpYyB2b2lk
IGpzY1NpZ25hbEhhbmRsZXIoaW50IHNpZywgc2lnaW5mb190KiBpbmZvLCB2b2lkKiBtY29udGV4
dCkKICAgICBzdHJ1Y3Qgc2lnYWN0aW9uJiBvbGRBY3Rpb24gPSBvbGRBY3Rpb25zW3N0YXRpY19j
YXN0PHNpemVfdD4oc2lnbmFsKV07CiAgICAgaWYgKHNpZ25hbCA9PSBTaWduYWw6OlVzcikgewog
ICAgICAgICBpZiAob2xkQWN0aW9uLnNhX3NpZ2FjdGlvbikKLSAgICAgICAgICAgIG9sZEFjdGlv
bi5zYV9zaWdhY3Rpb24oc2lnLCBpbmZvLCBtY29udGV4dCk7CisgICAgICAgICAgICBvbGRBY3Rp
b24uc2Ffc2lnYWN0aW9uKHNpZywgaW5mbywgdWNvbnRleHQpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCiAgICAgaWYgKCFkaWRIYW5kbGUpIHsKICAgICAgICAgaWYgKG9sZEFjdGlvbi5zYV9z
aWdhY3Rpb24pIHsKLSAgICAgICAgICAgIG9sZEFjdGlvbi5zYV9zaWdhY3Rpb24oc2lnLCBpbmZv
LCBtY29udGV4dCk7CisgICAgICAgICAgICBvbGRBY3Rpb24uc2Ffc2lnYWN0aW9uKHNpZywgaW5m
bywgdWNvbnRleHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTEwMCwy
NCArMzUyLDYgQEAgc3RhdGljIHZvaWQganNjU2lnbmFsSGFuZGxlcihpbnQgc2lnLCBzaWdpbmZv
X3QqIGluZm8sIHZvaWQqIG1jb250ZXh0KQogICAgIH0KIH0KIAotdm9pZCBpbnN0YWxsU2lnbmFs
SGFuZGxlcihTaWduYWwgc2lnbmFsLCBTaWduYWxIYW5kbGVyJiYgaGFuZGxlcikKLXsKLSAgICBB
U1NFUlQoc2lnbmFsIDwgU2lnbmFsOjpVbmtub3duKTsKLSAgICBzdGQ6OmNhbGxfb25jZShpbml0
aWFsaXplT25jZUZsYWdzW3N0YXRpY19jYXN0PHNpemVfdD4oc2lnbmFsKV0sIFsmXSB7Ci0gICAg
ICAgIGhhbmRsZXJzW3N0YXRpY19jYXN0PHNpemVfdD4oc2lnbmFsKV0uY29uc3RydWN0KCk7Ci0K
LSAgICAgICAgc3RydWN0IHNpZ2FjdGlvbiBhY3Rpb247Ci0gICAgICAgIGFjdGlvbi5zYV9zaWdh
Y3Rpb24gPSBqc2NTaWduYWxIYW5kbGVyOwotICAgICAgICBhdXRvIHJlc3VsdCA9IHNpZ2ZpbGxz
ZXQoJmFjdGlvbi5zYV9tYXNrKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXJlc3VsdCk7Ci0g
ICAgICAgIGFjdGlvbi5zYV9mbGFncyA9IFNBX1NJR0lORk87Ci0gICAgICAgIHJlc3VsdCA9IHNp
Z2FjdGlvbih0b1N5c3RlbVNpZ25hbChzaWduYWwpLCAmYWN0aW9uLCAmb2xkQWN0aW9uc1tzdGF0
aWNfY2FzdDxzaXplX3Q+KHNpZ25hbCldKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXJlc3Vs
dCk7Ci0gICAgfSk7Ci0KLSAgICBoYW5kbGVyc1tzdGF0aWNfY2FzdDxzaXplX3Q+KHNpZ25hbCld
LT5hZGQoV1RGTW92ZShoYW5kbGVyKSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdURgogCiAjZW5k
aWYgLy8gVVNFKFBUSFJFQURTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGhyZWFkcy9T
aWduYWxzLmggYi9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuaAppbmRleCBmMjlkNGRk
YjdlOGRmZGJlZjQ3OWMxZWQ5NzdhYmJlZmU2YTFjZjY2Li5mNGJiNTMwNWE0YWUzOWNhMWFhMzli
MTMxZGIzYWVmMmJkYjEwMzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1Np
Z25hbHMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuaApAQCAtMjksNiAr
MjksNyBAQAogCiAjaW5jbHVkZSA8c2lnbmFsLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+
CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtUmVnaXN0ZXJzLmg+CiAKIG5hbWVzcGFjZSBXVEYgewog
CkBAIC03OSw3ICs4MCwxMSBAQCBlbnVtIGNsYXNzIFNpZ25hbEFjdGlvbiB7CiAgICAgRm9yY2VE
ZWZhdWx0CiB9OwogCi11c2luZyBTaWduYWxIYW5kbGVyID0gRnVuY3Rpb248U2lnbmFsQWN0aW9u
KGludCwgc2lnaW5mb190Kiwgdm9pZCopPjsKK3N0cnVjdCBTaWdJbmZvIHsKKyAgICB2b2lkKiBm
YXVsdGluZ0FkZHJlc3MgeyAwIH07Cit9OworCit1c2luZyBTaWduYWxIYW5kbGVyID0gRnVuY3Rp
b248U2lnbmFsQWN0aW9uKFNpZ25hbCwgU2lnSW5mbyYsIFBsYXRmb3JtUmVnaXN0ZXJzJik+Owog
CiAvLyBDYWxsIHRoaXMgbWV0aG9kIHdoZW5ldmVyIHlvdSB3YW50IHRvIGluc3RhbGwgYSBzaWdu
YWwgaGFuZGxlci4gSXQncyBvayB0byBjYWxsIHRoaXMgZnVuY3Rpb24gbGF6aWx5LgogLy8gTm90
ZTogWW91ciBzaWduYWwgaGFuZGxlciB3aWxsIGJlIGNhbGxlZCBldmVyeSB0aW1lIHRoZSBoYW5k
bGVyIGZvciB0aGUgZGVzaXJlZCBzaWduYWwgaXMgY2FsbGVkLgpAQCAtODcsOSArOTIsMjUgQEAg
dXNpbmcgU2lnbmFsSGFuZGxlciA9IEZ1bmN0aW9uPFNpZ25hbEFjdGlvbihpbnQsIHNpZ2luZm9f
dCosIHZvaWQqKT47CiAvLyBUaGlzIGZ1bmN0aW9uIGlzIGN1cnJlbnRseSBhIG9uZSB3YXkgc3Ry
ZWV0IGkuZS4gb25jZSBpbnN0YWxsZWQsIGEgc2lnbmFsIGhhbmRsZXIgY2Fubm90IGJlIHVuaW5z
dGFsbGVkLgogV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgaW5zdGFsbFNpZ25hbEhhbmRsZXIoU2ln
bmFsLCBTaWduYWxIYW5kbGVyJiYpOwogCisKKyNpZiBIQVZFKE1BQ0hfRVhDRVBUSU9OUykKK2Ns
YXNzIFRocmVhZDsKK3ZvaWQgcmVnaXN0ZXJUaHJlYWRGb3JNYWNoRXhjZXB0aW9uSGFuZGxpbmco
VGhyZWFkKik7Cit2b2lkIHVucmVnaXN0ZXJUaHJlYWRGb3JNYWNoRXhjZXB0aW9uSGFuZGxpbmco
VGhyZWFkKik7CisKK3ZvaWQgaGFuZGxlU2lnbmFsc1dpdGhNYWNoKCk7CisjZW5kaWYgLy8gSEFW
RShNQUNIX0VYQ0VQVElPTlMpCisKIH0gLy8gbmFtZXNwYWNlIFdURgogCisjaWYgSEFWRShNQUNI
X0VYQ0VQVElPTlMpCit1c2luZyBXVEY6OnJlZ2lzdGVyVGhyZWFkRm9yTWFjaEV4Y2VwdGlvbkhh
bmRsaW5nOwordXNpbmcgV1RGOjp1bnJlZ2lzdGVyVGhyZWFkRm9yTWFjaEV4Y2VwdGlvbkhhbmRs
aW5nOwordXNpbmcgV1RGOjpoYW5kbGVTaWduYWxzV2l0aE1hY2g7CisjZW5kaWYgLy8gSEFWRShN
QUNIX0VYQ0VQVElPTlMpCisKIHVzaW5nIFdURjo6U2lnbmFsOwordXNpbmcgV1RGOjpTaWdJbmZv
OwogdXNpbmcgV1RGOjp0b1N5c3RlbVNpZ25hbDsKIHVzaW5nIFdURjo6ZnJvbVN5c3RlbVNpZ25h
bDsKIHVzaW5nIFdURjo6U2lnbmFsQWN0aW9uOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDkxMzlmM2NhM2Y1OGI1ZDk4MzRlZWFmNTIxZDg2NDU3
YWIxN2JjMmQuLjg1MDZlOTc2NjNiYzQ3NDVhMTE1MjU4N2IyZjkwMTU0OTYxZjVmNTQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NCBAQAorMjAxNy0wNS0zMSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4K
KworICAgICAgICBSZWxhbmQgcjIxNjgwOCwgdW5kZXJseWluZyBsbGRiIGJ1ZyBoYXMgYmVlbiBm
aXhlZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
Mjc1OQorCisgICAgICAgIFVucmV2aWV3ZWQsIHJlbGFuZGluZyBvbGQgcGF0Y2guCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9UaHJlYWRNZXNzYWdlcy5jcHA6CisgICAgICAg
IChydW5UaHJlYWRNZXNzYWdlVGVzdCk6CisgICAgICAgIChURVNUKToKKwogMjAxNy0wNS0zMSAg
U2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBHZXQgPGNo
cm9ubz4gb3V0IG9mIFN0ZExpYkV4dHJhcy5oCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9UaHJlYWRNZXNzYWdlcy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9UaHJlYWRNZXNzYWdlcy5jcHAKaW5kZXggZDYzZTliZjFlNzUwNjhiNmMxYTdlN2U2
ZThiNjdjNGViMDUxNTg4Mi4uZTZhNTc4OTRiYjUxNmZlMWNlNzEzZDA3YmYxOGYwNzA2ZWZhOTM3
YyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVGhyZWFkTWVzc2Fn
ZXMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1RocmVhZE1lc3NhZ2Vz
LmNwcApAQCAtNTAsNyArNTAsNyBAQCBzdGF0aWMgdm9pZCBydW5UaHJlYWRNZXNzYWdlVGVzdCh1
bnNpZ25lZCBudW1TZW5kZXJzLCB1bnNpZ25lZCBudW1NZXNzYWdlcykKICAgICBmb3IgKHVuc2ln
bmVkIHNlbmRlcklEID0gMDsgc2VuZGVySUQgPCBudW1TZW5kZXJzOyArK3NlbmRlcklEKSB7CiAg
ICAgICAgIHNlbmRlclRocmVhZHNbc2VuZGVySURdID0gVGhyZWFkOjpjcmVhdGUoIlRocmVhZE1l
c3NhZ2Ugc2VuZGVyIiwgW3NlbmRlcklELCBudW1NZXNzYWdlcywgcmVjZWl2ZXJUaHJlYWQsICZt
ZXNzYWdlc1J1biwgJmhhbmRsZXJzUnVuXSAoKSB7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbnVtTWVzc2FnZXM7ICsraSkgewotICAgICAgICAgICAgICAgIGF1dG8gcmVz
dWx0ID0gc2VuZE1lc3NhZ2UoKnJlY2VpdmVyVGhyZWFkLmdldCgpLCBbc2VuZGVySUQsICZoYW5k
bGVyc1J1bl0gKHNpZ2luZm9fdCosIHVjb250ZXh0X3QqKSB7CisgICAgICAgICAgICAgICAgYXV0
byByZXN1bHQgPSBzZW5kTWVzc2FnZSgqcmVjZWl2ZXJUaHJlYWQuZ2V0KCksIFtzZW5kZXJJRCwg
JmhhbmRsZXJzUnVuXSAoUGxhdGZvcm1SZWdpc3RlcnMmKSB7CiAgICAgICAgICAgICAgICAgICAg
IGhhbmRsZXJzUnVuW3NlbmRlcklEXSsrOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAg
ICAgICAgIEVYUEVDVF9UUlVFKHJlc3VsdCA9PSBXVEY6Ok1lc3NhZ2VTdGF0dXM6Ok1lc3NhZ2VS
YW4pOwpAQCAtOTUsNyArOTUsNyBAQCBwdWJsaWM6CiBURVNUKFRocmVhZE1lc3NhZ2UsIFNpZ25h
bHNXb3JrT25FeGl0KQogewogICAgIHN0YXRpYyBib29sIGhhbmRsZXJSYW4gPSBmYWxzZTsKLSAg
ICBpbnN0YWxsU2lnbmFsSGFuZGxlcihTaWduYWw6OlVzciwgW10gKGludCwgc2lnaW5mb190Kiwg
dm9pZCopIC0+IFNpZ25hbEFjdGlvbiB7CisgICAgaW5zdGFsbFNpZ25hbEhhbmRsZXIoU2lnbmFs
OjpVc3IsIFtdIChTaWduYWwsIFNpZ0luZm8mLCBQbGF0Zm9ybVJlZ2lzdGVycyYpIC0+IFNpZ25h
bEFjdGlvbiB7CiAgICAgICAgIGRhdGFMb2dMbigiaGVyZSIpOwogICAgICAgICBoYW5kbGVyUmFu
ID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuIFNpZ25hbEFjdGlvbjo6SGFuZGxlZDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311608</attachid>
            <date>2017-05-31 10:38:55 -0700</date>
            <delta_ts>2017-05-31 11:16:56 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-172759-20170531103854.patch</filename>
            <type>text/plain</type>
            <size>50069</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3NjAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
YTcxYzU5YTdlYTc1YzI1MjRkYjQxZWNkNTFlOWRhZTYwOWVkYTcyLi4xNmY2MzViNzQ2ZDNjZWRk
MDc5N2Y4YTg1NmI5OGVmNzRjOWY4ZjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNyBAQAorMjAxNy0wNS0zMSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBSZWxhbmQgcjIxNjgwOCwgdW5kZXJseWluZyBsbGRiIGJ1ZyBoYXMg
YmVlbiBmaXhlZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3Mjc1OQorCisKKyAgICAgICAgVW5yZXZpZXdlZCwgcmVsYW5kaW5nIG9sZCBwYXRjaC4g
U2VlOiByZGFyOi8vcHJvYmxlbS8zMTE4MzM1MgorCisgICAgICAgICogQVBJL3Rlc3RzL0V4ZWN1
dGlvblRpbWVMaW1pdFRlc3QuY3BwOgorICAgICAgICAoZGlzcGF0Y2hUZXJtaXRhdGVDYWxsYmFj
ayk6CisgICAgICAgICh0ZXN0RXhlY3V0aW9uVGltZUxpbWl0KToKKyAgICAgICAgKiBydW50aW1l
L0pTTG9jay5jcHA6CisgICAgICAgIChKU0M6OkpTTG9jazo6ZGlkQWNxdWlyZUxvY2spOgorICAg
ICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Om92ZXJyaWRlRGVmYXVs
dHMpOgorICAgICAgICAoSlNDOjpPcHRpb25zOjppbml0aWFsaXplKToKKyAgICAgICAgKiBydW50
aW1lL09wdGlvbnMuaDoKKyAgICAgICAgKiBydW50aW1lL1ZNVHJhcHMuY3BwOgorICAgICAgICAo
SlNDOjpTaWduYWxDb250ZXh0OjpTaWduYWxDb250ZXh0KToKKyAgICAgICAgKEpTQzo6U2lnbmFs
Q29udGV4dDo6YWRqdXN0UENUb1BvaW50VG9UcmFwcGluZ0luc3RydWN0aW9uKToKKyAgICAgICAg
KEpTQzo6aW5zdGFsbFNpZ25hbEhhbmRsZXIpOgorICAgICAgICAoSlNDOjpWTVRyYXBzOjpTaWdu
YWxTZW5kZXI6OnNlbmQpOgorICAgICAgICAqIHRvb2xzL1NpZ2lsbENyYXNoQW5hbHl6ZXIuY3Bw
OgorICAgICAgICAoSlNDOjpTaWduYWxDb250ZXh0OjpTaWduYWxDb250ZXh0KToKKyAgICAgICAg
KEpTQzo6U2lnbmFsQ29udGV4dDo6ZHVtcCk6CisgICAgICAgIChKU0M6Omluc3RhbGxDcmFzaEhh
bmRsZXIpOgorICAgICAgICAqIHdhc20vV2FzbUJCUVBsYW4uY3BwOgorICAgICAgICAoSlNDOjpX
YXNtOjpCQlFQbGFuOjpjb21waWxlRnVuY3Rpb25zKToKKyAgICAgICAgKiB3YXNtL1dhc21GYXVs
dFNpZ25hbEhhbmRsZXIuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjp0cmFwSGFuZGxlcik6Cisg
ICAgICAgIChKU0M6Oldhc206OmVuYWJsZUZhc3RNZW1vcnkpOgorICAgICAgICAqIHdhc20vV2Fz
bU1hY2hpbmVUaHJlYWRzLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6cmVzZXRJbnN0cnVjdGlv
bkNhY2hlT25BbGxUaHJlYWRzKToKKwogMjAxNy0wNS0zMCAgT2xla3NhbmRyIFNrYWNoa292ICA8
Z3NrYWNoa292QGdtYWlsLmNvbT4KIAogICAgICAgICBQcmV2ZW50IGFzeW5jIG1ldGhvZHMgbmFt
ZWQgJ2Z1bmN0aW9uJyBpbiBPYmplY3QgbGl0ZXJhbApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBkYzI4MTI1ZDc1ZDJhZWNmYjMw
ZWEwMWJmY2E3ZWEzMDM4M2YwMzI0Li40NjYwOTBlYTExMDBjMjM1ODg2Mjk4YTkxY2U0NDAwN2E1
NmRiMmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RG
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDE3LTA1LTMxICBLZWl0aCBNaWxsZXIgIDxr
ZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlbGFuZCByMjE2ODA4LCB1bmRlcmx5
aW5nIGxsZGIgYnVnIGhhcyBiZWVuIGZpeGVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyNzU5CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcmVsYW5k
aW5nIG9sZCBwYXRjaC4gU2VlOiByZGFyOi8vcHJvYmxlbS8zMTE4MzM1MgorCisgICAgICAgICog
Q29uZmlndXJhdGlvbnMvV1RGLnhjY29uZmlnOgorICAgICAgICAqIFdURi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorICAgICAgICAqIHd0Zi9Q
bGF0Zm9ybVJlZ2lzdGVycy5oOgorICAgICAgICAoV1RGOjpyZWdpc3RlcnNGcm9tVUNvbnRleHQp
OgorICAgICAgICAqIHd0Zi9TdGFja0JvdW5kcy5oOgorICAgICAgICAoV1RGOjpTdGFja0JvdW5k
czo6U3RhY2tCb3VuZHMpOgorICAgICAgICAqIHd0Zi9UaHJlYWRIb2xkZXIuY3BwOgorICAgICAg
ICAoV1RGOjpUaHJlYWRIb2xkZXI6On5UaHJlYWRIb2xkZXIpOgorICAgICAgICAqIHd0Zi9UaHJl
YWRNZXNzYWdlLmNwcDoKKyAgICAgICAgKFdURjo6c2VuZE1lc3NhZ2VVc2luZ1NpZ25hbCk6Cisg
ICAgICAgIChXVEY6OnNlbmRNZXNzYWdlVXNpbmdNYWNoKToKKyAgICAgICAgKFdURjo6ZGVsaXZl
ck1lc3NhZ2VzVXNpbmdNYWNoKToKKyAgICAgICAgKFdURjo6c2VuZE1lc3NhZ2VTY29wZWQpOgor
ICAgICAgICAqIHd0Zi9UaHJlYWRNZXNzYWdlLmg6CisgICAgICAgIChXVEY6OnNlbmRNZXNzYWdl
KToKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nLmg6CisgICAgICAgIChXVEY6OlRocmVhZDo6bWFj
aFRocmVhZCk6CisgICAgICAgICogd3RmL21hYy9NYWNoRXhjZXB0aW9ucy5kZWZzOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV1RGL3d0Zi9UaHJlYWRNZXNzYWdlLmguCisgICAgICAgICogd3RmL3RocmVh
ZHMvU2lnbmFscy5jcHA6CisgICAgICAgIChXVEY6OnN0YXJ0TWFjaEV4Y2VwdGlvbkhhbmRsZXJU
aHJlYWQpOgorICAgICAgICAoV1RGOjpmcm9tTWFjaEV4Y2VwdGlvbik6CisgICAgICAgIChXVEY6
OnRvTWFjaE1hc2spOgorICAgICAgICAoV1RGOjpoYW5kbGVTaWduYWxzV2l0aE1hY2gpOgorICAg
ICAgICAoV1RGOjpzZXRFeGNlcHRpb25Qb3J0cyk6CisgICAgICAgIChXVEY6OmFjdGl2ZVRocmVh
ZHMpOgorICAgICAgICAoV1RGOjpyZWdpc3RlclRocmVhZEZvck1hY2hFeGNlcHRpb25IYW5kbGlu
Zyk6CisgICAgICAgIChXVEY6OnVucmVnaXN0ZXJUaHJlYWRGb3JNYWNoRXhjZXB0aW9uSGFuZGxp
bmcpOgorICAgICAgICAoV1RGOjppbnN0YWxsU2lnbmFsSGFuZGxlcik6CisgICAgICAgIChXVEY6
OmpzY1NpZ25hbEhhbmRsZXIpOgorICAgICAgICAqIHd0Zi90aHJlYWRzL1NpZ25hbHMuaDoKKwog
MjAxNy0wNS0zMSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBHZXQgPGNocm9ubz4gb3V0IG9mIFN0ZExpYkV4dHJhcy5oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0V4ZWN1dGlvblRpbWVMaW1pdFRlc3QuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9FeGVjdXRpb25UaW1lTGltaXRUZXN0LmNw
cAppbmRleCA4NWMyNzJjNDQzNzY3NzU3M2UwZTc1MGFhYWM1NjM5ZWNlODQyZDdmLi5hM2MzOWE3
NjFjMjQ1Y2RkNTk1ODM1YjgzOGFkMDVmYTc3ZjAwZmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0V4ZWN1dGlvblRpbWVMaW1pdFRlc3QuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvRXhlY3V0aW9uVGltZUxpbWl0VGVzdC5jcHAK
QEAgLTMwLDEwICszMCwxOCBAQAogI2luY2x1ZGUgIkpTQ29udGV4dFJlZlByaXZhdGUuaCIKICNp
bmNsdWRlICJKYXZhU2NyaXB0LmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgorCiAjaW5jbHVkZSA8
Y2hyb25vPgorI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CisjaW5jbHVkZSA8d3RmL0NvbmRpdGlv
bi5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCisjaWYgSEFWRShNQUNIX0VY
Q0VQVElPTlMpCisjaW5jbHVkZSA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KKyNlbmRpZgorCiB1c2lu
ZyBuYW1lc3BhY2Ugc3RkOjpjaHJvbm87CiB1c2luZyBKU0M6Ok9wdGlvbnM7CiAKQEAgLTc3LDYg
Kzg1LDE1IEBAIHN0YXRpYyBib29sIGV4dGVuZFRlcm1pbmF0ZUNhbGxiYWNrKEpTQ29udGV4dFJl
ZiBjdHgsIHZvaWQqKQogICAgIHJldHVybiB0cnVlOwogfQogCisjaWYgSEFWRShNQUNIX0VYQ0VQ
VElPTlMpCitib29sIGRpc3BhdGNoVGVybWluYXRlQ2FsbGJhY2tDYWxsZWQgPSBmYWxzZTsKK3N0
YXRpYyBib29sIGRpc3BhdGNoVGVybWl0YXRlQ2FsbGJhY2soSlNDb250ZXh0UmVmLCB2b2lkKikK
K3sKKyAgICBkaXNwYXRjaFRlcm1pbmF0ZUNhbGxiYWNrQ2FsbGVkID0gdHJ1ZTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKyNlbmRpZgorCiBzdHJ1Y3QgVGllck9wdGlvbnMgewogICAgIGNvbnN0IGNo
YXIqIHRpZXI7CiAgICAgdW5zaWduZWQgdGltZUxpbWl0QWRqdXN0bWVudE1pbGxpczsKQEAgLTM2
NSw2ICszODIsNjUgQEAgaW50IHRlc3RFeGVjdXRpb25UaW1lTGltaXQoKQogICAgICAgICAgICAg
fQogICAgICAgICB9CiAKKyNpZiBIQVZFKE1BQ0hfRVhDRVBUSU9OUykKKyAgICAgICAgLyogVGVz
dCBzY3JpcHQgdGltZW91dCBmcm9tIGRpc3BhdGNoIHF1ZXVlOiAqLworICAgICAgICB0aW1lTGlt
aXQgPSAoMTAwICsgdGllckFkanVzdG1lbnRNaWxsaXMpIC8gMTAwMC4wOworICAgICAgICBKU0Nv
bnRleHRHcm91cFNldEV4ZWN1dGlvblRpbWVMaW1pdChjb250ZXh0R3JvdXAsIHRpbWVMaW1pdCwg
ZGlzcGF0Y2hUZXJtaXRhdGVDYWxsYmFjaywgMCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIHVu
c2lnbmVkIHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkID0gMzAwICsgdGllckFkanVz
dG1lbnRNaWxsaXM7CisKKyAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgc2NyaXB0QnVpbGRlcjsK
KyAgICAgICAgICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiZnVuY3Rpb24gZm9vKCkg
eyB2YXIgc3RhcnRUaW1lID0gY3VycmVudENQVVRpbWUoKTsgd2hpbGUgKHRydWUpIHsgZm9yICh2
YXIgaSA9IDA7IGkgPCAxMDAwOyBpKyspOyBpZiAoY3VycmVudENQVVRpbWUoKSAtIHN0YXJ0VGlt
ZSA+ICIpOworICAgICAgICAgICAgc2NyaXB0QnVpbGRlci5hcHBlbmROdW1iZXIodGltZUFmdGVy
V2F0Y2hkb2dTaG91bGRIYXZlRmlyZWQgLyAxMDAwLjApOworICAgICAgICAgICAgc2NyaXB0QnVp
bGRlci5hcHBlbmRMaXRlcmFsKCIpIGJyZWFrOyB9IH0gZm9vKCk7Iik7CisKKyAgICAgICAgICAg
IEpTU3RyaW5nUmVmIHNjcmlwdCA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHNjcmlw
dEJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGV4Y2VwdGlv
biA9IG51bGxwdHI7CisgICAgICAgICAgICBkaXNwYXRjaFRlcm1pbmF0ZUNhbGxiYWNrQ2FsbGVk
ID0gZmFsc2U7CisKKyAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8gZG8gdGhpcyBzaW5jZSBibG9j
a3MgY2FuIG9ubHkgY2FwdHVyZSB0aGluZ3MgYXMgY29uc3QuCisgICAgICAgICAgICBKU0dsb2Jh
bENvbnRleHRSZWYmIGNvbnRleHRSZWYgPSBjb250ZXh0OworICAgICAgICAgICAgSlNTdHJpbmdS
ZWYmIHNjcmlwdFJlZiA9IHNjcmlwdDsKKyAgICAgICAgICAgIEpTVmFsdWVSZWYmIGV4Y2VwdGlv
blJlZiA9IGV4Y2VwdGlvbjsKKworICAgICAgICAgICAgTG9jayBzeW5jTG9jazsKKyAgICAgICAg
ICAgIExvY2smIHN5bmNMb2NrUmVmID0gc3luY0xvY2s7CisgICAgICAgICAgICBDb25kaXRpb24g
c3luY2hyb25pemU7CisgICAgICAgICAgICBDb25kaXRpb24mIHN5bmNocm9uaXplUmVmID0gc3lu
Y2hyb25pemU7CisgICAgICAgICAgICBib29sIGRpZFN5bmNocm9uaXplID0gZmFsc2U7CisgICAg
ICAgICAgICBib29sJiBkaWRTeW5jaHJvbml6ZVJlZiA9IGRpZFN5bmNocm9uaXplOworCisgICAg
ICAgICAgICBzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzIHN0YXJ0VGltZTsKKyAgICAgICAgICAg
IHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHMgZW5kVGltZTsKKworICAgICAgICAgICAgc3RkOjpj
aHJvbm86Om1pY3Jvc2Vjb25kcyYgc3RhcnRUaW1lUmVmID0gc3RhcnRUaW1lOworICAgICAgICAg
ICAgc3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcyYgZW5kVGltZVJlZiA9IGVuZFRpbWU7CisKKyAg
ICAgICAgICAgIGRpc3BhdGNoX2dyb3VwX3QgZ3JvdXAgPSBkaXNwYXRjaF9ncm91cF9jcmVhdGUo
KTsKKyAgICAgICAgICAgIGRpc3BhdGNoX2dyb3VwX2FzeW5jKGdyb3VwLCBkaXNwYXRjaF9nZXRf
Z2xvYmFsX3F1ZXVlKDAsIDApLCBeeworICAgICAgICAgICAgICAgIHN0YXJ0VGltZVJlZiA9IGN1
cnJlbnRDUFVUaW1lKCk7CisgICAgICAgICAgICAgICAgSlNFdmFsdWF0ZVNjcmlwdChjb250ZXh0
UmVmLCBzY3JpcHRSZWYsIG51bGxwdHIsIG51bGxwdHIsIDEsICZleGNlcHRpb25SZWYpOworICAg
ICAgICAgICAgICAgIGVuZFRpbWVSZWYgPSBjdXJyZW50Q1BVVGltZSgpOworICAgICAgICAgICAg
ICAgIGF1dG8gbG9ja2VyID0gV1RGOjpob2xkTG9jayhzeW5jTG9ja1JlZik7CisgICAgICAgICAg
ICAgICAgZGlkU3luY2hyb25pemVSZWYgPSB0cnVlOworICAgICAgICAgICAgICAgIHN5bmNocm9u
aXplUmVmLm5vdGlmeUFsbCgpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2soc3luY0xvY2spOworICAgICAgICAgICAgc3luY2hyb25pemUud2Fp
dChzeW5jTG9jaywgWyZdIHsgcmV0dXJuIGRpZFN5bmNocm9uaXplOyB9KTsKKworICAgICAgICAg
ICAgaWYgKCgoZW5kVGltZSAtIHN0YXJ0VGltZSkgPCBtaWxsaXNlY29uZHModGltZUFmdGVyV2F0
Y2hkb2dTaG91bGRIYXZlRmlyZWQpKSAmJiBkaXNwYXRjaFRlcm1pbmF0ZUNhbGxiYWNrQ2FsbGVk
KQorICAgICAgICAgICAgICAgIHByaW50ZigiUEFTUzogJXMgc2NyaXB0IG9uIGRpc3BhdGNoIHF1
ZXVlIHRpbWVkIG91dCBhcyBleHBlY3RlZC5cbiIsIHRpZXJPcHRpb25zLnRpZXIpOworICAgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKChlbmRUaW1lIC0gc3RhcnRUaW1lKSA+
PSBtaWxsaXNlY29uZHModGltZUFmdGVyV2F0Y2hkb2dTaG91bGRIYXZlRmlyZWQpKQorICAgICAg
ICAgICAgICAgICAgICBwcmludGYoIkZBSUw6ICVzIHNjcmlwdCBvbiBkaXNwYXRjaCBxdWV1ZSBk
aWQgbm90IHRpbWUgb3V0IGFzIGV4cGVjdGVkLlxuIiwgdGllck9wdGlvbnMudGllcik7CisgICAg
ICAgICAgICAgICAgaWYgKCFzaG91bGRUZXJtaW5hdGVDYWxsYmFja1dhc0NhbGxlZCkKKyAgICAg
ICAgICAgICAgICAgICAgcHJpbnRmKCJGQUlMOiAlcyBzY3JpcHQgb24gZGlzcGF0Y2ggcXVldWUg
dGltZW91dCBjYWxsYmFjayB3YXMgbm90IGNhbGxlZC5cbiIsIHRpZXJPcHRpb25zLnRpZXIpOwor
ICAgICAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyNlbmRpZgorCiAgICAgICAgIEpTR2xvYmFsQ29udGV4dFJlbGVhc2UoY29udGV4dCk7CiAKICAg
ICAgICAgT3B0aW9uczo6c2V0T3B0aW9ucyhzYXZlZE9wdGlvbnNCdWlsZGVyLnRvU3RyaW5nKCku
YXNjaWkoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNMb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTG9jay5jcHAK
aW5kZXggYzE3NWFlMGM0ODJlZDI3YmQ1ZjZiZGM4Nzk2OGU3NWQ0NWFmNTBlZi4uMzFlMmRiNDBi
MjE2ZWFhMmIxMTQyNGI4MDNmYjdmOTFkZDRlMjYxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNMb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0xvY2suY3BwCkBAIC0zMCw2ICszMCw4IEBACiAjaW5jbHVkZSAiU2FtcGxpbmdQ
cm9maWxlci5oIgogI2luY2x1ZGUgIldhc21NYWNoaW5lVGhyZWFkcy5oIgogI2luY2x1ZGUgPHRo
cmVhZD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RocmVhZHMv
U2lnbmFscy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMTQ4LDYgKzE1MCwxMCBAQCB2b2lk
IEpTTG9jazo6ZGlkQWNxdWlyZUxvY2soKQogICAgIFdhc206OnN0YXJ0VHJhY2tpbmdDdXJyZW50
VGhyZWFkKCk7CiAjZW5kaWYKIAorI2lmIEhBVkUoTUFDSF9FWENFUFRJT05TKQorICAgIHJlZ2lz
dGVyVGhyZWFkRm9yTWFjaEV4Y2VwdGlvbkhhbmRsaW5nKCZUaHJlYWQ6OmN1cnJlbnQoKSk7Cisj
ZW5kaWYKKwogICAgIG1fdm0tPnRyYXBzKCkubm90aWZ5R3JhYkFsbExvY2tzKCk7CiAKICNpZiBF
TkFCTEUoU0FNUExJTkdfUFJPRklMRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnMuY3BwCmluZGV4IDM3NTc3ODY4MmFiZmYwNWFlYzUzNGEyNTJlMDE4NjhmYzMyZTIwNTAu
LjlmMTJkZjk1Y2Q5MGNhOTA0N2Q2NmNiMTc2Y2QwZGNlMTAzNTkxNzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RocmVhZHMv
U2lnbmFscy5oPgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSA8Y3J0X2V4dGVybnMu
aD4KQEAgLTM1OCw2ICszNTksMTAgQEAgc3RhdGljIHZvaWQgb3ZlcnJpZGVEZWZhdWx0cygpCiAj
aWYgIUVOQUJMRShXRUJBU1NFTUJMWV9GQVNUX01FTU9SWSkKICAgICBPcHRpb25zOjp1c2VXZWJB
c3NlbWJseUZhc3RNZW1vcnkoKSA9IGZhbHNlOwogI2VuZGlmCisKKyNpZiAhSEFWRShNQUNIX0VY
Q0VQVElPTlMpCisgICAgT3B0aW9uczo6dXNlTWFjaEZvckV4Y2VwdGlvbnMoKSA9IGZhbHNlOwor
I2VuZGlmCiB9CiAKIHN0YXRpYyB2b2lkIHJlY29tcHV0ZURlcGVuZGVudE9wdGlvbnMoKQpAQCAt
NTUwLDYgKzU1NSwxMSBAQCB2b2lkIE9wdGlvbnM6OmluaXRpYWxpemUoKQogCiAgICAgICAgICAg
ICBkdW1wT3B0aW9uc0lmTmVlZGVkKCk7CiAgICAgICAgICAgICBlbnN1cmVPcHRpb25zQXJlQ29o
ZXJlbnQoKTsKKworI2lmIEhBVkUoTUFDSF9FWENFUFRJT05TKQorICAgICAgICAgICAgaWYgKE9w
dGlvbnM6OnVzZU1hY2hGb3JFeGNlcHRpb25zKCkpCisgICAgICAgICAgICAgICAgaGFuZGxlU2ln
bmFsc1dpdGhNYWNoKCk7CisjZW5kaWYKICAgICAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnMuaAppbmRleCA0YWQxNmVhZmZhMTljOWJmMTFiNGIxOTkxNDZk
Y2FlYWZhOTRiMzNjLi5hMDkzNWQyZGRjMmJmMjkzYzViYWVlZTdjOTE2YzQzYjA5Mzc5ZDNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCkBAIC00MjMsNiArNDIzLDgg
QEAgdHlwZWRlZiBjb25zdCBjaGFyKiBvcHRpb25TdHJpbmc7CiAgICAgdih1bnNpZ25lZCwgd2F0
Y2hkb2csIDAsIE5vcm1hbCwgIndhdGNoZG9nIHRpbWVvdXQgKDAgPSBEaXNhYmxlZCwgTiA9IGEg
dGltZW91dCBwZXJpb2Qgb2YgTiBtaWxsaXNlY29uZHMpIikgXAogICAgIHYoYm9vbCwgdXNlUG9s
bGluZ1RyYXBzLCBmYWxzZSwgTm9ybWFsLCAidXNlIHBvbGxpbmcgKGluc3RlYWQgb2Ygc2lnbmFs
bGluZykgVk0gdHJhcHMiKSBcCiAgICAgXAorICAgIHYoYm9vbCwgdXNlTWFjaEZvckV4Y2VwdGlv
bnMsIHRydWUsIE5vcm1hbCwgIlVzZSBtYWNoIGV4Y2VwdGlvbnMgcmF0aGVyIHRoYW4gc2lnbmFs
cyB0byBoYW5kbGUgZmF1bHRzIGFuZCBwYXNzIHRocmVhZCBtZXNzYWdlcy4gKFRoaXMgZG9lcyBu
b3RoaW5nIG9uIHBsYXRmb3JtcyB3aXRob3V0IG1hY2gpIikgXAorICAgIFwKICAgICB2KGJvb2ws
IHVzZUlDU3RhdHMsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICBcCiAgICAgdih1bnNp
Z25lZCwgcHJvdG90eXBlSGl0Q291bnRGb3JMTEludENhY2hpbmcsIDIsIE5vcm1hbCwgIk51bWJl
ciBvZiBwcm90b3R5cGUgcHJvcGVydHkgaGl0cyBiZWZvcmUgY2FjaGluZyBhIHByb3RvdHlwZSBp
biB0aGUgTExJbnQuIEEgY291bnQgb2YgMCBtZWFucyBuZXZlciBjYWNoZS4iKSBcCkBAIC00NDYs
NiArNDQ4LDcgQEAgdHlwZWRlZiBjb25zdCBjaGFyKiBvcHRpb25TdHJpbmc7CiAgICAgdih1bnNp
Z25lZCwgd2ViQXNzZW1ibHlCQlFPcHRpbWl6YXRpb25MZXZlbCwgMSwgTm9ybWFsLCAiQjMgT3B0
aW1pemF0aW9uIGxldmVsIGZvciBCQlEgV2ViIEFzc2VtYmx5IG1vZHVsZSBjb21waWxhdGlvbnMu
IikgXAogICAgIHYodW5zaWduZWQsIHdlYkFzc2VtYmx5T01HT3B0aW1pemF0aW9uTGV2ZWwsIE9w
dGlvbnM6OmRlZmF1bHRCM09wdExldmVsKCksIE5vcm1hbCwgIkIzIE9wdGltaXphdGlvbiBsZXZl
bCBmb3IgT01HIFdlYiBBc3NlbWJseSBtb2R1bGUgY29tcGlsYXRpb25zLiIpIFwKICAgICBcCisg
ICAgdihib29sLCB1c2VCQlFUaWVyVXBDaGVja3MsIHRydWUsIE5vcm1hbCwgIkVuYWJsZXMgdGll
ciB1cCBjaGVja3MgZm9yIG91ciBCQlEgY29kZS4iKSBcCiAgICAgdih1bnNpZ25lZCwgd2ViQXNz
ZW1ibHlPTUdUaWVyVXBDb3VudCwgNTAwMCwgTm9ybWFsLCAiVGhlIGNvdW50ZG93biBiZWZvcmUg
d2UgdGllciB1cCBhIGZ1bmN0aW9uIHRvIE9NRy4iKSBcCiAgICAgdih1bnNpZ25lZCwgd2ViQXNz
ZW1ibHlMb29wRGVjcmVtZW50LCAxNSwgTm9ybWFsLCAiVGhlIGFtb3VudCB0aGUgdGllciB1cCBj
b3VudGRvd24gaXMgZGVjcmVtZW50ZWQgb24gZWFjaCBsb29wIGJhY2tlZGdlLiIpIFwKICAgICB2
KHVuc2lnbmVkLCB3ZWJBc3NlbWJseUZ1bmN0aW9uRW50cnlEZWNyZW1lbnQsIDEsIE5vcm1hbCwg
IlRoZSBhbW91bnQgdGhlIHRpZXIgdXAgY291bnRkb3duIGlzIGRlY3JlbWVudGVkIG9uIGVhY2gg
ZnVuY3Rpb24gZW50cnkuIikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk1UcmFwcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTVRyYXBz
LmNwcAppbmRleCAxYmFhY2U2MDQ0ZTY2MGE4ZTU0NDFmYmFkMDE4ZWE5MDkzMWE0YzkxLi44YzU3
YzQ1NmFlNDM2OGFkZjI4ZWEwYTY0NThlN2MwMzlhOTcwZWU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTVRyYXBzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTVRyYXBzLmNwcApAQCAtNTMsMTEgKzUzLDExIEBAIEFMV0FZU19JTkxJ
TkUgVk0mIFZNVHJhcHM6OnZtKCkgY29uc3QKICNpZiBFTkFCTEUoU0lHTkFMX0JBU0VEX1ZNX1RS
QVBTKQogCiBzdHJ1Y3QgU2lnbmFsQ29udGV4dCB7Ci0gICAgU2lnbmFsQ29udGV4dChtY29udGV4
dF90JiBtY29udGV4dCkKLSAgICAgICAgOiBtY29udGV4dChtY29udGV4dCkKLSAgICAgICAgLCB0
cmFwUEMoTWFjaGluZUNvbnRleHQ6Omluc3RydWN0aW9uUG9pbnRlcihtY29udGV4dCkpCi0gICAg
ICAgICwgc3RhY2tQb2ludGVyKE1hY2hpbmVDb250ZXh0OjpzdGFja1BvaW50ZXIobWNvbnRleHQp
KQotICAgICAgICAsIGZyYW1lUG9pbnRlcihNYWNoaW5lQ29udGV4dDo6ZnJhbWVQb2ludGVyKG1j
b250ZXh0KSkKKyAgICBTaWduYWxDb250ZXh0KFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdpc3RlcnMp
CisgICAgICAgIDogcmVnaXN0ZXJzKHJlZ2lzdGVycykKKyAgICAgICAgLCB0cmFwUEMoTWFjaGlu
ZUNvbnRleHQ6Omluc3RydWN0aW9uUG9pbnRlcihyZWdpc3RlcnMpKQorICAgICAgICAsIHN0YWNr
UG9pbnRlcihNYWNoaW5lQ29udGV4dDo6c3RhY2tQb2ludGVyKHJlZ2lzdGVycykpCisgICAgICAg
ICwgZnJhbWVQb2ludGVyKE1hY2hpbmVDb250ZXh0OjpmcmFtZVBvaW50ZXIocmVnaXN0ZXJzKSkK
ICAgICB7CiAjaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKFg4NikKICAgICAgICAgLy8gT24gWDg2XzY0
LCBTSUdUUkFQIHJlcG9ydHMgdGhlIGFkZHJlc3MgYWZ0ZXIgdGhlIHRyYXBwaW5nIFBDLiBTbywg
ZGVjIGJ5IDEuCkBAIC02OCwxMSArNjgsMTEgQEAgc3RydWN0IFNpZ25hbENvbnRleHQgewogICAg
IHZvaWQgYWRqdXN0UENUb1BvaW50VG9UcmFwcGluZ0luc3RydWN0aW9uKCkKICAgICB7CiAjaWYg
Q1BVKFg4Nl82NCkgfHwgQ1BVKFg4NikKLSAgICAgICAgTWFjaGluZUNvbnRleHQ6Omluc3RydWN0
aW9uUG9pbnRlcihtY29udGV4dCkgPSB0cmFwUEM7CisgICAgICAgIE1hY2hpbmVDb250ZXh0Ojpp
bnN0cnVjdGlvblBvaW50ZXIocmVnaXN0ZXJzKSA9IHRyYXBQQzsKICNlbmRpZgogICAgIH0KIAot
ICAgIG1jb250ZXh0X3QmIG1jb250ZXh0OworICAgIFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdpc3Rl
cnM7CiAgICAgdm9pZCogdHJhcFBDOwogICAgIHZvaWQqIHN0YWNrUG9pbnRlcjsKICAgICB2b2lk
KiBmcmFtZVBvaW50ZXI7CkBAIC0xMzAsOCArMTMwLDggQEAgc3RhdGljIEV4cGVjdGVkPFZNQW5k
U3RhY2tCb3VuZHMsIFZNVHJhcHM6OkVycm9yPiBmaW5kQWN0aXZlVk1BbmRTdGFja0JvdW5kcyhT
aWcKIAogc3RhdGljIHZvaWQgaW5zdGFsbFNpZ25hbEhhbmRsZXIoKQogewotICAgIGluc3RhbGxT
aWduYWxIYW5kbGVyKFNpZ25hbDo6VHJhcCwgW10gKGludCwgc2lnaW5mb190Kiwgdm9pZCogdWFw
KSAtPiBTaWduYWxBY3Rpb24gewotICAgICAgICBTaWduYWxDb250ZXh0IGNvbnRleHQoc3RhdGlj
X2Nhc3Q8dWNvbnRleHRfdCo+KHVhcCktPnVjX21jb250ZXh0KTsKKyAgICBpbnN0YWxsU2lnbmFs
SGFuZGxlcihTaWduYWw6OlRyYXAsIFtdIChTaWduYWwsIFNpZ0luZm8mLCBQbGF0Zm9ybVJlZ2lz
dGVycyYgcmVnaXN0ZXJzKSAtPiBTaWduYWxBY3Rpb24geworICAgICAgICBTaWduYWxDb250ZXh0
IGNvbnRleHQocmVnaXN0ZXJzKTsKIAogICAgICAgICBpZiAoIWlzSklUUEMoY29udGV4dC50cmFw
UEMpKQogICAgICAgICAgICAgcmV0dXJuIFNpZ25hbEFjdGlvbjo6Tm90SGFuZGxlZDsKQEAgLTQw
NCw4ICs0MDQsOCBAQCB2b2lkIFZNVHJhcHM6OlNpZ25hbFNlbmRlcjo6c2VuZCgpCiAgICAgICAg
ICAgICBWTSYgdm0gPSAqbV92bTsKICAgICAgICAgICAgIGF1dG8gb3B0aW9uYWxPd25lclRocmVh
ZCA9IHZtLm93bmVyVGhyZWFkKCk7CiAgICAgICAgICAgICBpZiAob3B0aW9uYWxPd25lclRocmVh
ZCkgewotICAgICAgICAgICAgICAgIHNlbmRNZXNzYWdlKCpvcHRpb25hbE93bmVyVGhyZWFkLnZh
bHVlKCkuZ2V0KCksIFtdIChzaWdpbmZvX3QqLCB1Y29udGV4dF90KiB1Y29udGV4dCkgLT4gdm9p
ZCB7Ci0gICAgICAgICAgICAgICAgICAgIFNpZ25hbENvbnRleHQgY29udGV4dCh1Y29udGV4dC0+
dWNfbWNvbnRleHQpOworICAgICAgICAgICAgICAgIHNlbmRNZXNzYWdlKCpvcHRpb25hbE93bmVy
VGhyZWFkLnZhbHVlKCkuZ2V0KCksIFtdIChQbGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzKSAt
PiB2b2lkIHsKKyAgICAgICAgICAgICAgICAgICAgU2lnbmFsQ29udGV4dCBjb250ZXh0KHJlZ2lz
dGVycyk7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gYWN0aXZlVk1BbmRTdGFja0JvdW5kcyA9
IGZpbmRBY3RpdmVWTUFuZFN0YWNrQm91bmRzKGNvbnRleHQpOwogICAgICAgICAgICAgICAgICAg
ICBpZiAoYWN0aXZlVk1BbmRTdGFja0JvdW5kcykgewogICAgICAgICAgICAgICAgICAgICAgICAg
Vk0qIHZtID0gYWN0aXZlVk1BbmRTdGFja0JvdW5kcy52YWx1ZSgpLnZtOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1NpZ2lsbENyYXNoQW5hbHl6ZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL1NpZ2lsbENyYXNoQW5hbHl6ZXIuY3BwCmluZGV4IDRh
ZGFlZmYxY2RhMmQxZmJjNmY5MDYxZjA2M2UxNGQyZTYzMzAwNDguLjcxYTZlNDI1NWM2NDVkZDZh
ZjNiZGIyNTBjY2YxM2FkOGMxYThhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90b29scy9TaWdpbGxDcmFzaEFuYWx5emVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdG9vbHMvU2lnaWxsQ3Jhc2hBbmFseXplci5jcHAKQEAgLTc4LDExICs3OCwxMSBAQCBwcml2
YXRlOgogI2VuZGlmIC8vIFVTRShPU19MT0cpCiAKIHN0cnVjdCBTaWduYWxDb250ZXh0IHsKLSAg
ICBTaWduYWxDb250ZXh0KG1jb250ZXh0X3QmIG1jb250ZXh0KQotICAgICAgICA6IG1jb250ZXh0
KG1jb250ZXh0KQotICAgICAgICAsIG1hY2hpbmVQQyhNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rp
b25Qb2ludGVyKG1jb250ZXh0KSkKLSAgICAgICAgLCBzdGFja1BvaW50ZXIoTWFjaGluZUNvbnRl
eHQ6OnN0YWNrUG9pbnRlcihtY29udGV4dCkpCi0gICAgICAgICwgZnJhbWVQb2ludGVyKE1hY2hp
bmVDb250ZXh0OjpmcmFtZVBvaW50ZXIobWNvbnRleHQpKQorICAgIFNpZ25hbENvbnRleHQoUGxh
dGZvcm1SZWdpc3RlcnMmIHJlZ2lzdGVycykKKyAgICAgICAgOiByZWdpc3RlcnMocmVnaXN0ZXJz
KQorICAgICAgICAsIG1hY2hpbmVQQyhNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rpb25Qb2ludGVy
KHJlZ2lzdGVycykpCisgICAgICAgICwgc3RhY2tQb2ludGVyKE1hY2hpbmVDb250ZXh0OjpzdGFj
a1BvaW50ZXIocmVnaXN0ZXJzKSkKKyAgICAgICAgLCBmcmFtZVBvaW50ZXIoTWFjaGluZUNvbnRl
eHQ6OmZyYW1lUG9pbnRlcihyZWdpc3RlcnMpKQogICAgIHsgfQogCiAgICAgdm9pZCBkdW1wKCkK
QEAgLTExMiw3ICsxMTIsNyBAQCBzdHJ1Y3QgU2lnbmFsQ29udGV4dCB7CiAgICAgICAgIHYoZ3Mp
CiAKICNkZWZpbmUgRFVNUF9SRUdJU1RFUihfX3JlZykgXAotICAgICAgICBsb2coIlJlZ2lzdGVy
ICIgI19fcmVnICI6ICVwIiwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obWNvbnRleHQtPl9fc3Mu
X18jI19fcmVnKSk7CisgICAgICAgIGxvZygiUmVnaXN0ZXIgIiAjX19yZWcgIjogJXAiLCByZWlu
dGVycHJldF9jYXN0PHZvaWQqPihyZWdpc3RlcnMuX18jI19fcmVnKSk7CiAgICAgICAgIEZPUl9F
QUNIX1JFR0lTVEVSKERVTVBfUkVHSVNURVIpCiAjdW5kZWYgRk9SX0VBQ0hfUkVHSVNURVIKIApA
QCAtMTIwLDIwICsxMjAsMjAgQEAgc3RydWN0IFNpZ25hbENvbnRleHQgewogICAgICAgICBpbnQg
aTsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IDI4OyBpICs9IDQpIHsKICAgICAgICAgICAgIGxv
ZygieCVkOiAlMDE2bGx4IHglZDogJTAxNmxseCB4JWQ6ICUwMTZsbHggeCVkOiAlMDE2bGx4IiwK
LSAgICAgICAgICAgICAgICBpLCBtY29udGV4dC0+X19zcy5fX3hbaV0sCi0gICAgICAgICAgICAg
ICAgaSsxLCBtY29udGV4dC0+X19zcy5fX3hbaSsxXSwKLSAgICAgICAgICAgICAgICBpKzIsIG1j
b250ZXh0LT5fX3NzLl9feFtpKzJdLAotICAgICAgICAgICAgICAgIGkrMywgbWNvbnRleHQtPl9f
c3MuX194W2krM10pOworICAgICAgICAgICAgICAgIGksIHJlZ2lzdGVycy5fX3hbaV0sCisgICAg
ICAgICAgICAgICAgaSsxLCByZWdpc3RlcnMuX194W2krMV0sCisgICAgICAgICAgICAgICAgaSsy
LCByZWdpc3RlcnMuX194W2krMl0sCisgICAgICAgICAgICAgICAgaSszLCByZWdpc3RlcnMuX194
W2krM10pOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVChpIDwgMjkpOwogICAgICAgICBsb2co
InglZDogJTAxNmxseCBmcDogJTAxNmxseCBscjogJTAxNmxseCIsCi0gICAgICAgICAgICBpLCBt
Y29udGV4dC0+X19zcy5fX3hbaV0sIG1jb250ZXh0LT5fX3NzLl9fZnAsIG1jb250ZXh0LT5fX3Nz
Ll9fbHIpOworICAgICAgICAgICAgaSwgcmVnaXN0ZXJzLl9feFtpXSwgcmVnaXN0ZXJzLl9fZnAs
IHJlZ2lzdGVycy5fX2xyKTsKICAgICAgICAgbG9nKCJzcDogJTAxNmxseCBwYzogJTAxNmxseCBj
cHNyOiAlMDh4IiwKLSAgICAgICAgICAgIG1jb250ZXh0LT5fX3NzLl9fc3AsIG1jb250ZXh0LT5f
X3NzLl9fcGMsIG1jb250ZXh0LT5fX3NzLl9fY3Bzcik7CisgICAgICAgICAgICByZWdpc3RlcnMu
X19zcCwgcmVnaXN0ZXJzLl9fcGMsIHJlZ2lzdGVycy5fX2Nwc3IpOwogI2VuZGlmCiAgICAgfQog
Ci0gICAgbWNvbnRleHRfdCYgbWNvbnRleHQ7CisgICAgUGxhdGZvcm1SZWdpc3RlcnMmIHJlZ2lz
dGVyczsKICAgICB2b2lkKiBtYWNoaW5lUEM7CiAgICAgdm9pZCogc3RhY2tQb2ludGVyOwogICAg
IHZvaWQqIGZyYW1lUG9pbnRlcjsKQEAgLTE0Miw4ICsxNDIsOCBAQCBzdHJ1Y3QgU2lnbmFsQ29u
dGV4dCB7CiBzdGF0aWMgdm9pZCBpbnN0YWxsQ3Jhc2hIYW5kbGVyKCkKIHsKICNpZiBDUFUoWDg2
XzY0KSB8fCBDUFUoQVJNNjQpCi0gICAgaW5zdGFsbFNpZ25hbEhhbmRsZXIoU2lnbmFsOjpJbGws
IFtdIChpbnQsIHNpZ2luZm9fdCosIHZvaWQqIHVhcCkgewotICAgICAgICBTaWduYWxDb250ZXh0
IGNvbnRleHQoc3RhdGljX2Nhc3Q8dWNvbnRleHRfdCo+KHVhcCktPnVjX21jb250ZXh0KTsKKyAg
ICBpbnN0YWxsU2lnbmFsSGFuZGxlcihTaWduYWw6OklsbCwgW10gKFNpZ25hbCwgU2lnSW5mbyYs
IFBsYXRmb3JtUmVnaXN0ZXJzJiByZWdpc3RlcnMpIHsKKyAgICAgICAgU2lnbmFsQ29udGV4dCBj
b250ZXh0KHJlZ2lzdGVycyk7CiAKICAgICAgICAgaWYgKCFpc0pJVFBDKGNvbnRleHQubWFjaGlu
ZVBDKSkKICAgICAgICAgICAgIHJldHVybiBTaWduYWxBY3Rpb246Ok5vdEhhbmRsZWQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQkJRUGxhbi5jcHAKaW5kZXggMWRkMGNkMWQ4MzVj
NmMyZjIzMWIwMGI4ODZkZGU0YWY3MmMyNjNjZS4uYjFiNTk4ZDIwYzVjMDA3N2Q5ZTlkMDhlMzY4
YWQ1Y2ExNzgzMWJhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUJCUVBsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CQlFQbGFu
LmNwcApAQCAtMjQyLDcgKzI0Miw3IEBAIHZvaWQgQkJRUGxhbjo6Y29tcGlsZUZ1bmN0aW9ucyhD
b21waWxhdGlvbkVmZm9ydCBlZmZvcnQpCiAgICAgICAgIEFTU0VSVCh2YWxpZGF0ZUZ1bmN0aW9u
KGZ1bmN0aW9uU3RhcnQsIGZ1bmN0aW9uTGVuZ3RoLCBzaWduYXR1cmUsIG1fbW9kdWxlSW5mb3Jt
YXRpb24uZ2V0KCkpKTsKIAogICAgICAgICBtX3VubGlua2VkV2FzbVRvV2FzbUNhbGxzW2Z1bmN0
aW9uSW5kZXhdID0gVmVjdG9yPFVubGlua2VkV2FzbVRvV2FzbUNhbGw+KCk7Ci0gICAgICAgIFRp
ZXJVcENvdW50KiB0aWVyVXAgPSAmbV90aWVyVXBDb3VudHNbZnVuY3Rpb25JbmRleF07CisgICAg
ICAgIFRpZXJVcENvdW50KiB0aWVyVXAgPSBPcHRpb25zOjp1c2VCQlFUaWVyVXBDaGVja3MoKSA/
ICZtX3RpZXJVcENvdW50c1tmdW5jdGlvbkluZGV4XSA6IG51bGxwdHI7CiAgICAgICAgIGF1dG8g
cGFyc2VBbmRDb21waWxlUmVzdWx0ID0gcGFyc2VBbmRDb21waWxlKG1fY29tcGlsYXRpb25Db250
ZXh0c1tmdW5jdGlvbkluZGV4XSwgZnVuY3Rpb25TdGFydCwgZnVuY3Rpb25MZW5ndGgsIHNpZ25h
dHVyZSwgbV91bmxpbmtlZFdhc21Ub1dhc21DYWxsc1tmdW5jdGlvbkluZGV4XSwgbV9tb2R1bGVJ
bmZvcm1hdGlvbi5nZXQoKSwgbV9tb2RlLCBDb21waWxhdGlvbk1vZGU6OkJCUU1vZGUsIGZ1bmN0
aW9uSW5kZXgsIHRpZXJVcCk7CiAKICAgICAgICAgaWYgKFVOTElLRUxZKCFwYXJzZUFuZENvbXBp
bGVSZXN1bHQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
RmF1bHRTaWduYWxIYW5kbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21G
YXVsdFNpZ25hbEhhbmRsZXIuY3BwCmluZGV4IDJlMGM5OWEzOWJlYmQzMTc4YjkxNDhkOTU4ZmU1
M2U1N2E2MjI5N2UuLjI2NGMzNGRlNDVkYTE3NWE1ZDUxNDFjMTcxZWZlOTVlMDYzYzVlMjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhhbmRs
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GYXVsdFNpZ25hbEhh
bmRsZXIuY3BwCkBAIC01Miw5ICs1Miw4IEBAIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8SGFz
aFNldDxzdGQ6OnR1cGxlPHZvaWQqLCB2b2lkKj4+PiBjb2RlTG9jYXRpb25zOyAvLyAoCiAKIHN0
YXRpYyBib29sIGZhc3RIYW5kbGVySW5zdGFsbGVkIHsgZmFsc2UgfTsKIAotc3RhdGljIFNpZ25h
bEFjdGlvbiB0cmFwSGFuZGxlcihpbnQsIHNpZ2luZm9fdCogc2lnSW5mbywgdm9pZCogdWNvbnRl
eHQpCitzdGF0aWMgU2lnbmFsQWN0aW9uIHRyYXBIYW5kbGVyKFNpZ25hbCwgU2lnSW5mbyYgc2ln
SW5mbywgUGxhdGZvcm1SZWdpc3RlcnMmIGNvbnRleHQpCiB7Ci0gICAgbWNvbnRleHRfdCYgY29u
dGV4dCA9IHN0YXRpY19jYXN0PHVjb250ZXh0X3QqPih1Y29udGV4dCktPnVjX21jb250ZXh0Owog
ICAgIHZvaWQqIGZhdWx0aW5nSW5zdHJ1Y3Rpb24gPSBNYWNoaW5lQ29udGV4dDo6aW5zdHJ1Y3Rp
b25Qb2ludGVyKGNvbnRleHQpOwogICAgIGRhdGFMb2dMbklmKHZlcmJvc2UsICJzdGFydGluZyBo
YW5kbGVyIGZvciBmYXVsdCBhdDogIiwgUmF3UG9pbnRlcihmYXVsdGluZ0luc3RydWN0aW9uKSk7
CiAKQEAgLTY0LDcgKzYzLDcgQEAgc3RhdGljIFNpZ25hbEFjdGlvbiB0cmFwSGFuZGxlcihpbnQs
IHNpZ2luZm9fdCogc2lnSW5mbywgdm9pZCogdWNvbnRleHQpCiAgICAgaWYgKGlzSklUUEMoZmF1
bHRpbmdJbnN0cnVjdGlvbikpIHsKICAgICAgICAgYm9vbCBmYXVsdGVkSW5BY3RpdmVGYXN0TWVt
b3J5ID0gZmFsc2U7CiAgICAgICAgIHsKLSAgICAgICAgICAgIHZvaWQqIGZhdWx0aW5nQWRkcmVz
cyA9IHNpZ0luZm8tPnNpX2FkZHI7CisgICAgICAgICAgICB2b2lkKiBmYXVsdGluZ0FkZHJlc3Mg
PSBzaWdJbmZvLmZhdWx0aW5nQWRkcmVzczsKICAgICAgICAgICAgIGRhdGFMb2dMbklmKHZlcmJv
c2UsICJjaGVja2luZyBmYXVsdGluZyBhZGRyZXNzOiAiLCBSYXdQb2ludGVyKGZhdWx0aW5nQWRk
cmVzcyksICIgaXMgaW4gYW4gYWN0aXZlIGZhc3QgbWVtb3J5Iik7CiAgICAgICAgICAgICBmYXVs
dGVkSW5BY3RpdmVGYXN0TWVtb3J5ID0gV2FzbTo6TWVtb3J5OjphZGRyZXNzSXNJbkFjdGl2ZUZh
c3RNZW1vcnkoZmF1bHRpbmdBZGRyZXNzKTsKICAgICAgICAgfQpAQCAtMTI0LDExICsxMjMsMTEg
QEAgdm9pZCBlbmFibGVGYXN0TWVtb3J5KCkKICAgICAgICAgICAgIHJldHVybjsKIAogI2lmIEVO
QUJMRShXRUJBU1NFTUJMWV9GQVNUX01FTU9SWSkKLSAgICAgICAgaW5zdGFsbFNpZ25hbEhhbmRs
ZXIoU2lnbmFsOjpCdXMsIFtdIChpbnQgc2lnbmFsLCBzaWdpbmZvX3QqIHNpZ0luZm8sIHZvaWQq
IHVjb250ZXh0KSB7CisgICAgICAgIGluc3RhbGxTaWduYWxIYW5kbGVyKFNpZ25hbDo6QnVzLCBb
XSAoU2lnbmFsIHNpZ25hbCwgU2lnSW5mbyYgc2lnSW5mbywgUGxhdGZvcm1SZWdpc3RlcnMmIHVj
b250ZXh0KSB7CiAgICAgICAgICAgICByZXR1cm4gdHJhcEhhbmRsZXIoc2lnbmFsLCBzaWdJbmZv
LCB1Y29udGV4dCk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIGluc3RhbGxTaWduYWxIYW5kbGVy
KFNpZ25hbDo6U2VnViwgW10gKGludCBzaWduYWwsIHNpZ2luZm9fdCogc2lnSW5mbywgdm9pZCog
dWNvbnRleHQpIHsKKyAgICAgICAgaW5zdGFsbFNpZ25hbEhhbmRsZXIoU2lnbmFsOjpTZWdWLCBb
XSAoU2lnbmFsIHNpZ25hbCwgU2lnSW5mbyYgc2lnSW5mbywgUGxhdGZvcm1SZWdpc3RlcnMmIHVj
b250ZXh0KSB7CiAgICAgICAgICAgICByZXR1cm4gdHJhcEhhbmRsZXIoc2lnbmFsLCBzaWdJbmZv
LCB1Y29udGV4dCk7CiAgICAgICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtTWFjaGluZVRocmVhZHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbU1hY2hpbmVUaHJlYWRzLmNwcAppbmRleCA1YWFjODdhY2I1NzQ3YzdmY2EyZjkz
NmVjOWNmNjc4YjQzMTc4MTcxLi4wYTM2N2ZkNWUyMjUyN2U5YzNjODc1MzZlY2ZkNzJiMTNkZjc5
ZDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWFjaGluZVRo
cmVhZHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NYWNoaW5lVGhy
ZWFkcy5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJNYWNoaW5lU3RhY2tNYXJrZXIu
aCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFk
TWVzc2FnZS5oPgorI2luY2x1ZGUgPHd0Zi90aHJlYWRzL1NpZ25hbHMuaD4KIAogbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIApAQCAtNTcsNyArNTgsNyBAQCB2b2lkIHJlc2V0SW5z
dHJ1Y3Rpb25DYWNoZU9uQWxsVGhyZWFkcygpCiAKICAgICBjb25zdCBEb3VibHlMaW5rZWRMaXN0
PE1hY2hpbmVUaHJlYWRzOjpNYWNoaW5lVGhyZWFkPiYgdGhyZWFkcyA9IHdhc21UaHJlYWRzKCku
dGhyZWFkc0xpc3RIZWFkKGxvY2tlcik7CiAgICAgZm9yIChjb25zdCBhdXRvKiB0aHJlYWQgPSB0
aHJlYWRzLmhlYWQoKTsgdGhyZWFkOyB0aHJlYWQgPSB0aHJlYWQtPm5leHQoKSkgewotICAgICAg
ICBzZW5kTWVzc2FnZSh0aHJlYWQtPm1fdGhyZWFkLmdldCgpLCBbXSAoc2lnaW5mb190KiwgdWNv
bnRleHRfdCopIHsKKyAgICAgICAgc2VuZE1lc3NhZ2UodGhyZWFkLT5tX3RocmVhZC5nZXQoKSwg
W10gKGNvbnN0IFBsYXRmb3JtUmVnaXN0ZXJzJikgewogICAgICAgICAgICAgLy8gSXQncyBsaWtl
bHkgdGhhdCB0aGUgc2lnbmFsIGhhbmRsZXIgd2lsbCBhbHJlYWR5IHJlc2V0IHRoZSBpbnN0cnVj
dGlvbiBjYWNoZSBidXQgd2UgbWlnaHQgYXMgd2VsbCBiZSBzdXJlLgogICAgICAgICAgICAgV1RG
Ojpjcm9zc01vZGlmeWluZ0NvZGVGZW5jZSgpOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvQ29uZmlndXJhdGlvbnMvV1RGLnhjY29uZmlnIGIvU291cmNlL1dURi9Db25maWd1
cmF0aW9ucy9XVEYueGNjb25maWcKaW5kZXggNDIxZWZkOTYxYzE0NjhjZDIwZGRjNWJiZjg4OTYy
MGVlMWNmNThkYy4uYWYxOTljZWI5NTA2Zjg5NTBkMzNhOWNlNDgwN2JhNmRiYjdiMjdlNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi9Db25maWd1cmF0aW9ucy9XVEYueGNjb25maWcKKysrIGIvU291
cmNlL1dURi9Db25maWd1cmF0aW9ucy9XVEYueGNjb25maWcKQEAgLTI3LDMgKzI3LDYgQEAgUFJP
RFVDVF9OQU1FID0gV1RGOwogCiBHQ0NfU1lNQk9MU19QUklWQVRFX0VYVEVSTiA9IFlFUzsKIFNU
UklQX0lOU1RBTExFRF9QUk9EVUNUID0gTk87CisKK0VYQ0xVREVEX1NPVVJDRV9GSUxFX05BTUVT
XyA9IE1hY2hFeGNlcHRpb25zLmRlZnMKK0VYQ0xVREVEX1NPVVJDRV9GSUxFX05BTUVTW3Nkaz1p
cGhvbmVvcypdID0gJChFWENMVURFRF9TT1VSQ0VfRklMRV9OQU1FU18kKFVTRV9JTlRFUk5BTF9T
REspKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTdiM2Uw
Zjc5ZjYyMzk1OTI1ZWE4ZThhOThkNzEzNGQxMTZlMjhkOS4uZDYyYTc5M2IzZTFmNjc5MTJhNDM3
MWQ1YzBjYWE5YmYyMjE4NDY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC02NCw2ICs2NCw3IEBACiAJCTUyMTgzMDEyQzk5RTQ3NkE4NEVFQkVBOCAvKiBT
eW1ib2xJbXBsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEY3MkJCREIxMDdGQTQyNDg4NjE3OEI5RSAvKiBTeW1ib2xJbXBsLmNwcCAqLzsgfTsKIAkJ
NTMxMUJENTMxRUE3MUNBRDAwNTI1MjgxIC8qIFNpZ25hbHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMxMUJENTExRUE3MUNBRDAwNTI1MjgxIC8q
IFNpZ25hbHMuY3BwICovOyB9OwogCQk1MzExQkQ1QzFFQTgyMkY5MDA1MjUyODEgLyogVGhyZWFk
TWVzc2FnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MzExQkQ1QjFFQTgyMkY5MDA1MjUyODEgLyogVGhyZWFkTWVzc2FnZS5jcHAgKi87IH07CisJ
CTUzNTM0RjJBMUVDMEUxMEUwMDE0MUIyRiAvKiBNYWNoRXhjZXB0aW9ucy5kZWZzIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM1MzRGMjkxRUMwRTEwRTAw
MTQxQjJGIC8qIE1hY2hFeGNlcHRpb25zLmRlZnMgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoQ2xpZW50LCBTZXJ2ZXIsICk7IH07IH07CiAJCTcwQTk5M0ZFMUFENzE1MTMwMEZBNjE1QiAv
KiBTeW1ib2xSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MEE5OTNGQzFBRDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuY3Bw
ICovOyB9OwogCQk3MEVDQTYwRDFCMDI0MjY4MDA0NDk3MzkgLyogQXRvbWljU3RyaW5nSW1wbC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEVDQTYw
QTFCMDI0MjY4MDA0NDk3MzkgLyogQXRvbWljU3RyaW5nSW1wbC5jcHAgKi87IH07CiAJCTdBRkVD
NkIxMUVCMjJCNTkwMERBREUzNiAvKiBVVUlELmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkVDNkIwMUVCMjJCNTkwMERBREUzNiAvKiBVVUlELmNw
cCAqLzsgfTsKQEAgLTI5OSw2ICszMDAsNyBAQAogCQk1MzExQkQ1NzFFQTdFMUExMDA1MjUyODEg
LyogU2lnbmFscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaWduYWxzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzMTFCRDU5MUVBODFBOTYwMDUyNTI4MSAv
KiBUaHJlYWRNZXNzYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVh
ZE1lc3NhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMxMUJENUIxRUE4MjJG
OTAwNTI1MjgxIC8qIFRocmVhZE1lc3NhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gVGhyZWFkTWVzc2FnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTUzNTM0RjI5MUVDMEUxMEUwMDE0MUIyRiAvKiBNYWNoRXhjZXB0aW9ucy5kZWZzICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5taWc7IHBhdGggPSBNYWNoRXhjZXB0aW9ucy5kZWZzOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MzlFQjA2MjFENTUyODQyMDBDODJFRjcgLyogTEVCRGVj
b2Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMRUJEZWNvZGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzRUMyNTNDMUU5NUFEMzAwMDA4MzFCOSAvKiBQ
cmlvcml0eVF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaW9yaXR5
UXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTUzMDcxQzkxQzQwNDI3MjAw
Mzg0ODk4IC8qIFRpbnlMUlVDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBUaW55TFJVQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMjIsNiAr
MTAyNCw3IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQkxQTQyOEI4QjFDOEY4OUREMDA1MUU5RUIg
LyogQXBwS2l0Q29tcGF0aWJpbGl0eURlY2xhcmF0aW9ucy5oICovLAogCQkJCTFBQ0FERDgyMTg4
NDQ4MDEwMEQ4QjcxRCAvKiBEZXByZWNhdGVkU3ltYm9sc1VzZWRCeVNhZmFyaS5tbSAqLywKKwkJ
CQk1MzUzNEYyOTFFQzBFMTBFMDAxNDFCMkYgLyogTWFjaEV4Y2VwdGlvbnMuZGVmcyAqLywKIAkJ
CQlBOEE0NzJDNTE1MUE4MjVBMDA0MTIzRkYgLyogTWFpblRocmVhZE1hYy5tbSAqLywKIAkJCSk7
CiAJCQlwYXRoID0gbWFjOwpAQCAtMTM0Niw2ICsxMzQ5LDcgQEAKIAkJCQkxNDNGNjExRjE1NjVG
MEY5MDBEQjUxNEEgLyogUkFNU2l6ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBM0I3MjVFQzk4
NzQ0NkFEOTNGMUE0NDAgLyogUmFuZG9tRGV2aWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4
QTQ3NDE0MTUxQTgyNUIwMDQxMjNGRiAvKiBSYW5kb21OdW1iZXIuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNTM1MzRGMkExRUMwRTEwRTAwMTQxQjJGIC8qIE1hY2hFeGNlcHRpb25zLmRlZnMgaW4g
U291cmNlcyAqLywKIAkJCQlBOEE0NzQxQTE1MUE4MjVCMDA0MTIzRkYgLyogUmVmQ291bnRlZExl
YWtDb3VudGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJDREVEMEYzMTgxMTVDODUwMDREQkE3
MCAvKiBSdW5Mb29wLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJDREVEMEVGMTgxMTVDMzgwMDRE
QkE3MCAvKiBSdW5Mb29wQ0YuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAppbmRleCA0NWJk
OGE4MTFmOTg4OWM4NWQ4ZjU0ZGRmNjUzOTgxZTJmZThmNjEwLi4wYzk1NmY0ZmY2MzgwNjc1ZTRj
NDI3ZGYyMGVjOTZlNjYwYTBiZDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKQEAgLTY2OSw2ICs2NjksMTAgQEAK
ICNkZWZpbmUgSEFWRV9SRUFETElORSAxCiAjZGVmaW5lIEhBVkVfU1lTX1RJTUVCX0ggMQogCisj
aWYgX19oYXNfaW5jbHVkZSg8bWFjaC9tYWNoX2V4Yy5kZWZzPikgJiYgIShQTEFURk9STShXQVRD
SE9TKSB8fCBQTEFURk9STShBUFBMRVRWKSkKKyNkZWZpbmUgSEFWRV9NQUNIX0VYQ0VQVElPTlMg
MQorI2VuZGlmCisKICNpZiAhUExBVEZPUk0oR1RLKQogI2RlZmluZSBVU0VfQUNDRUxFUkFURSAx
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtUmVnaXN0ZXJzLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVJlZ2lzdGVycy5oCmluZGV4IGQ1YjVhYmMyMjFiYmFk
ODI5NzYxOTNlY2U1MWMxYzc2MTc1ZGIwNmQuLjg0YmQ4OTM3NDk5ZGE5OWVhYTg2YjczNjk1Zjdj
NWI4MWFjMjYwY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtUmVnaXN0ZXJz
LmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1SZWdpc3RlcnMuaApAQCAtMjYsOSArMjYs
MTEgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiAjaWYgT1MoREFSV0lOKQogI2luY2x1ZGUgPG1hY2gv
dGhyZWFkX2FjdC5oPgorI2luY2x1ZGUgPHNpZ25hbC5oPgogI2VsaWYgT1MoV0lORE9XUykKICNp
bmNsdWRlIDx3aW5kb3dzLmg+CiAjZWxzZQpAQCAtNTUsNiArNTcsMTEgQEAgdHlwZWRlZiBhcm1f
dGhyZWFkX3N0YXRlNjRfdCBQbGF0Zm9ybVJlZ2lzdGVyczsKICNlcnJvciBVbmtub3duIEFyY2hp
dGVjdHVyZQogI2VuZGlmCiAKK2lubGluZSBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzRnJv
bVVDb250ZXh0KHVjb250ZXh0X3QqIHVjb250ZXh0KQoreworICAgIHJldHVybiB1Y29udGV4dC0+
dWNfbWNvbnRleHQtPl9fc3M7Cit9CisKICNlbGlmIE9TKFdJTkRPV1MpCiAKIHVzaW5nIFBsYXRm
b3JtUmVnaXN0ZXJzID0gQ09OVEVYVDsKQEAgLTY1LDYgKzcyLDExIEBAIHN0cnVjdCBQbGF0Zm9y
bVJlZ2lzdGVycyB7CiAgICAgbWNvbnRleHRfdCBtYWNoaW5lQ29udGV4dDsKIH07CiAKK2lubGlu
ZSBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzRnJvbVVDb250ZXh0KHVjb250ZXh0X3QqIHVj
b250ZXh0KQoreworICAgIHJldHVybiAqYml0d2lzZV9jYXN0PFBsYXRmb3JtUmVnaXN0ZXJzKj4o
JnVjb250ZXh0LT51Y19tY29udGV4dCk7Cit9CisKICNlbHNlCiAKIHN0cnVjdCBQbGF0Zm9ybVJl
Z2lzdGVycyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TdGFja0JvdW5kcy5oIGIvU291
cmNlL1dURi93dGYvU3RhY2tCb3VuZHMuaAppbmRleCA1NTQ2MDRmMmFiNDg0YzdjZjcxZWUzODYz
MGNlYjRjNzljMzNlOTcyLi5jZDYyYzE0OGE2YzdlZmM5NTE3YThiMDliOGEzMmM3ZmUxOTBjZGVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TdGFja0JvdW5kcy5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL1N0YWNrQm91bmRzLmgKQEAgLTU0LDcgKzU0LDYgQEAgcHVibGljOgogICAgICAgICA6
IG1fb3JpZ2luKG9yaWdpbikKICAgICAgICAgLCBtX2JvdW5kKGVuZCkKICAgICB7Ci0gICAgICAg
IGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICB9CiAKICAgICB2b2lkKiBvcmlnaW4oKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkSG9sZGVyLmNwcCBiL1NvdXJjZS9XVEYv
d3RmL1RocmVhZEhvbGRlci5jcHAKaW5kZXggZTJhMzFiZTk5NzhhOWRlNDJlYmZhMzNiMDcwNmE1
MjQzM2JkNzJjYi4uOTc3ZDFkZmMxNzM5ZTU3Zjc3OTlkODVhZmUzNmM2MDZhNzU0NWUzNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkSG9sZGVyLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9UaHJlYWRIb2xkZXIuY3BwCkBAIC0zNCwxMiArMzQsMTcgQEAKIAogI2luY2x1ZGUgIlRo
cmVhZGluZy5oIgogCisjaW5jbHVkZSA8d3RmL3RocmVhZHMvU2lnbmFscy5oPgorCiBuYW1lc3Bh
Y2UgV1RGIHsKIAogVGhyZWFkU3BlY2lmaWNLZXkgVGhyZWFkSG9sZGVyOjptX2tleSA9IEludmFs
aWRUaHJlYWRTcGVjaWZpY0tleTsKIAogVGhyZWFkSG9sZGVyOjp+VGhyZWFkSG9sZGVyKCkKIHsK
KyNpZiBIQVZFKE1BQ0hfRVhDRVBUSU9OUykKKyAgICB1bnJlZ2lzdGVyVGhyZWFkRm9yTWFjaEV4
Y2VwdGlvbkhhbmRsaW5nKCZtX3RocmVhZC5nZXQoKSk7CisjZW5kaWYKICAgICBtX3RocmVhZC0+
ZGlkRXhpdCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRNZXNzYWdl
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZE1lc3NhZ2UuY3BwCmluZGV4IGYxNGJjNDVkMzYx
NGM3YzY2MzVlYjE3YWIwZTI3MjgxNmExMzczZGQuLmI5OTRjYWNkNjI2ZDRjNmNmZDVjMTY4MTA5
YjU1YjY5ZGQyM2I5OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZE1lc3NhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZE1lc3NhZ2UuY3BwCkBAIC0zNiw2ICszNiw5
IEBACiAjaW5jbHVkZSA8d3RmL0xvY2tlci5oPgogI2luY2x1ZGUgPHd0Zi90aHJlYWRzL1NpZ25h
bHMuaD4KIAorI2lmIEhBVkUoTUFDSF9FWENFUFRJT05TKQorI2luY2x1ZGUgPG1hY2gvdGhyZWFk
X2FjdC5oPgorI2VuZGlmCiAKIG5hbWVzcGFjZSBXVEYgewogCkBAIC04MywxMiArODYsMTIgQEAg
dm9pZCBpbml0aWFsaXplVGhyZWFkTWVzc2FnZXMoKQogfQogCiBTVVBQUkVTU19BU0FOCi1NZXNz
YWdlU3RhdHVzIHNlbmRNZXNzYWdlU2NvcGVkKFRocmVhZCYgdGhyZWFkLCBjb25zdCBUaHJlYWRN
ZXNzYWdlJiBtZXNzYWdlKQorc3RhdGljIE1lc3NhZ2VTdGF0dXMgc2VuZE1lc3NhZ2VVc2luZ1Np
Z25hbChUaHJlYWQmIHRocmVhZCwgY29uc3QgVGhyZWFkTWVzc2FnZSYgbWVzc2FnZSkKIHsKICAg
ICBjb25zdGV4cHIgU2lnbmFsIHNpZ25hbCA9IFNpZ25hbDo6VXNyOwogICAgIHN0YXRpYyBzdGQ6
Om9uY2VfZmxhZyBvbmNlOwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2UsIFtdIHsKLSAgICAgICAg
aW5zdGFsbFNpZ25hbEhhbmRsZXIoc2lnbmFsLCBbXSAoaW50LCBzaWdpbmZvX3QqIGluZm8sIHZv
aWQqIHVhcCkgeworICAgICAgICBpbnN0YWxsU2lnbmFsSGFuZGxlcihzaWduYWwsIFtdIChTaWdu
YWwsIFNpZ0luZm8mLCBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVnaXN0ZXJzKSB7CiAgICAgICAgICAg
ICBUaHJlYWQqIHRocmVhZCA9IFRocmVhZDo6Y3VycmVudE1heUJlTnVsbCgpOwogCiAgICAgICAg
ICAgICBpZiAoIXRocmVhZCkgewpAQCAtOTgsNyArMTAxLDcgQEAgTWVzc2FnZVN0YXR1cyBzZW5k
TWVzc2FnZVNjb3BlZChUaHJlYWQmIHRocmVhZCwgY29uc3QgVGhyZWFkTWVzc2FnZSYgbWVzc2Fn
ZSkKIAogICAgICAgICAgICAgLy8gTm9kZSBzaG91bGQgYmUgZGVsZXRlZCBpbiB0aGUgc2VuZGVy
IHRocmVhZC4gRGVsZXRpbmcgTm9kZXMgaW4gc2lnbmFsIGhhbmRsZXIgY2F1c2VzIGRlYWQgbG9j
ay4KICAgICAgICAgICAgIHRocmVhZC0+dGhyZWFkTWVzc2FnZXMoKS5jb25zdW1lQWxsV2l0aE5v
ZGUoWyZdIChUaHJlYWRNZXNzYWdlRGF0YSogZGF0YSwgTm9kZSogbm9kZSkgewotICAgICAgICAg
ICAgICAgIGRhdGEtPm1lc3NhZ2UoaW5mbywgc3RhdGljX2Nhc3Q8dWNvbnRleHRfdCo+KHVhcCkp
OworICAgICAgICAgICAgICAgIGRhdGEtPm1lc3NhZ2UocmVnaXN0ZXJzKTsKICAgICAgICAgICAg
ICAgICAvLyBCeSBzZXR0aW5nIHJhbiB2YXJpYWJsZSwgKDEpIHRoZSBzZW5kZXIgYWNrbm93bGVk
Z2VzIHRoZSBjb21wbGV0aW9uIGFuZAogICAgICAgICAgICAgICAgIC8vICgyKSBnZXRzIHRoZSBO
b2RlIHRvIGJlIGRlbGV0ZWQuCiAgICAgICAgICAgICAgICAgZGF0YS0+cmFuLnN0b3JlKG5vZGUp
OwpAQCAtMTU2LDYgKzE1OSw2MiBAQCBNZXNzYWdlU3RhdHVzIHNlbmRNZXNzYWdlU2NvcGVkKFRo
cmVhZCYgdGhyZWFkLCBjb25zdCBUaHJlYWRNZXNzYWdlJiBtZXNzYWdlKQogICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKKyNpZiBIQVZFKE1BQ0hfRVhDRVBUSU9OUykKK3N0
YXRpYyBNZXNzYWdlU3RhdHVzIHNlbmRNZXNzYWdlVXNpbmdNYWNoKFRocmVhZCYgdGhyZWFkLCBj
b25zdCBUaHJlYWRNZXNzYWdlJiBtZXNzYWdlKQoreworICAgIHN0YXRpYyBTdGF0aWNMb2NrIG1l
c3NhZ2VMb2NrOworICAgIGF1dG8gbG9ja2hvbGRlciA9IGhvbGRMb2NrKG1lc3NhZ2VMb2NrKTsK
KworICAgIGF1dG8gcmVzdWx0ID0gdGhyZWFkLnN1c3BlbmQoKTsKKyAgICBpZiAoIXJlc3VsdCkK
KyAgICAgICAgcmV0dXJuIE1lc3NhZ2VTdGF0dXM6OlRocmVhZEV4aXRlZDsKKworI2lmIENQVShY
ODYpCisgICAgdW5zaWduZWQgdXNlckNvdW50ID0gc2l6ZW9mKFBsYXRmb3JtUmVnaXN0ZXJzKSAv
IHNpemVvZihpbnQpOworICAgIHRocmVhZF9zdGF0ZV9mbGF2b3JfdCBmbGF2b3IgPSBpMzg2X1RI
UkVBRF9TVEFURTsKKyNlbGlmIENQVShYODZfNjQpCisgICAgdW5zaWduZWQgdXNlckNvdW50ID0g
eDg2X1RIUkVBRF9TVEFURTY0X0NPVU5UOworICAgIHRocmVhZF9zdGF0ZV9mbGF2b3JfdCBmbGF2
b3IgPSB4ODZfVEhSRUFEX1NUQVRFNjQ7CisjZWxpZiBDUFUoQVJNKQorICAgIHVuc2lnbmVkIHVz
ZXJDb3VudCA9IEFSTV9USFJFQURfU1RBVEVfQ09VTlQ7CisgICAgdGhyZWFkX3N0YXRlX2ZsYXZv
cl90IGZsYXZvciA9IEFSTV9USFJFQURfU1RBVEU7CisjZWxpZiBDUFUoQVJNNjQpCisgICAgdW5z
aWduZWQgdXNlckNvdW50ID0gQVJNX1RIUkVBRF9TVEFURTY0X0NPVU5UOworICAgIHRocmVhZF9z
dGF0ZV9mbGF2b3JfdCBmbGF2b3IgPSBBUk1fVEhSRUFEX1NUQVRFNjQ7CisjZWxzZQorI2Vycm9y
IFVua25vd24gQXJjaGl0ZWN0dXJlCisjZW5kaWYKKworICAgIFBsYXRmb3JtUmVnaXN0ZXJzIHJl
Z2lzdGVyczsKKyAgICB0aHJlYWRfc3RhdGVfdCBzdGF0ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dGhy
ZWFkX3N0YXRlX3Q+KCZyZWdpc3RlcnMpOworICAgIHRocmVhZF9nZXRfc3RhdGUodGhyZWFkLm1h
Y2hUaHJlYWQoKSwgZmxhdm9yLCBzdGF0ZSwgJnVzZXJDb3VudCk7CisKKyAgICBtZXNzYWdlKHJl
Z2lzdGVycyk7CisKKyAgICB0aHJlYWRfc2V0X3N0YXRlKHRocmVhZC5tYWNoVGhyZWFkKCksIGZs
YXZvciwgc3RhdGUsIHVzZXJDb3VudCk7CisKKyAgICB0aHJlYWQucmVzdW1lKCk7CisgICAgcmV0
dXJuIE1lc3NhZ2VTdGF0dXM6Ok1lc3NhZ2VSYW47Cit9CisKK3N0YXRpYyBib29sIHVzZU1hY2gg
PSBmYWxzZTsKK3ZvaWQgZGVsaXZlck1lc3NhZ2VzVXNpbmdNYWNoKCkKK3sKKyAgICB1c2VNYWNo
ID0gdHJ1ZTsKK30KKworI2VuZGlmIC8vIEhBVkUoTUFDSF9FWENFUFRJT05TKQorCitNZXNzYWdl
U3RhdHVzIHNlbmRNZXNzYWdlU2NvcGVkKFRocmVhZCYgdGhyZWFkLCBjb25zdCBUaHJlYWRNZXNz
YWdlJiBtZXNzYWdlKQoreworI2lmIEhBVkUoTUFDSF9FWENFUFRJT05TKQorICAgIGlmICh1c2VN
YWNoKQorICAgICAgICByZXR1cm4gc2VuZE1lc3NhZ2VVc2luZ01hY2godGhyZWFkLCBtZXNzYWdl
KTsKKyNlbmRpZgorICAgIHJldHVybiBzZW5kTWVzc2FnZVVzaW5nU2lnbmFsKHRocmVhZCwgbWVz
c2FnZSk7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV1RGCiAKICNlbmRpZiAvLyBVU0UoUFRIUkVB
RFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRNZXNzYWdlLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9UaHJlYWRNZXNzYWdlLmgKaW5kZXggMjY4YWRkNDM4NzZlNDE2NGZmMTEzNjVmY2Ri
NWFiN2E2MjJiZTk0ZC4uMGY3NDU1MTI5NDYzNzQ2NzdhY2YxYjcwZGM2NjIzNThhMzg0ZmQ2MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkTWVzc2FnZS5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL1RocmVhZE1lc3NhZ2UuaApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV1RGIHsK
IHZvaWQgaW5pdGlhbGl6ZVRocmVhZE1lc3NhZ2VzKCk7CiAKIGNsYXNzIFRocmVhZE1lc3NhZ2VE
YXRhOwotdXNpbmcgVGhyZWFkTWVzc2FnZSA9IFNjb3BlZExhbWJkYTx2b2lkKHNpZ2luZm9fdCos
IHVjb250ZXh0X3QqKT47Cit1c2luZyBUaHJlYWRNZXNzYWdlID0gU2NvcGVkTGFtYmRhPHZvaWQo
UGxhdGZvcm1SZWdpc3RlcnMmKT47CiAKIGVudW0gY2xhc3MgTWVzc2FnZVN0YXR1cyB7CiAgICAg
TWVzc2FnZVJhbiwKQEAgLTUxLDEwICs1MSwxNCBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgTWVzc2Fn
ZVN0YXR1cyBzZW5kTWVzc2FnZVNjb3BlZChUaHJlYWQmLCBjb25zdCBUaHJlYWRNZXNzYWdlJgog
dGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KIE1lc3NhZ2VTdGF0dXMgc2VuZE1lc3NhZ2UoVGhy
ZWFkJiB0YXJnZXRUaHJlYWQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmMpCiB7Ci0gICAgYXV0byBsYW1i
ZGEgPSBzY29wZWRMYW1iZGFSZWY8dm9pZChzaWdpbmZvX3QqLCB1Y29udGV4dF90Kik+KGZ1bmMp
OworICAgIGF1dG8gbGFtYmRhID0gc2NvcGVkTGFtYmRhUmVmPHZvaWQoUGxhdGZvcm1SZWdpc3Rl
cnMmKT4oZnVuYyk7CiAgICAgcmV0dXJuIHNlbmRNZXNzYWdlU2NvcGVkKHRhcmdldFRocmVhZCwg
bGFtYmRhKTsKIH0KIAorI2lmIEhBVkUoTUFDSF9FWENFUFRJT05TKQordm9pZCBkZWxpdmVyTWVz
c2FnZXNVc2luZ01hY2goKTsKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcg
V1RGOjpzZW5kTWVzc2FnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5o
IGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmgKaW5kZXggZDJlNTM2ZGY3YTg2OTZkOGU2Yjk1
YmE0M2UxNzNkM2I1NTBiZjE2YS4uMzUxNGU4YzA5ZjBmYzk0ZDUzNGJlMmYzYjZlN2M0OTUwZTBi
Y2YwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmgKKysrIGIvU291cmNl
L1dURi93dGYvVGhyZWFkaW5nLmgKQEAgLTEzOCw2ICsxMzgsMTAgQEAgcHVibGljOgogCiAjaWYg
VVNFKFBUSFJFQURTKQogICAgIExvY2tsZXNzQmFnPFRocmVhZE1lc3NhZ2VEYXRhKj4mIHRocmVh
ZE1lc3NhZ2VzKCkgeyByZXR1cm4gbV90aHJlYWRNZXNzYWdlczsgfQorCisjaWYgT1MoREFSV0lO
KQorICAgIG1hY2hfcG9ydF90IG1hY2hUaHJlYWQoKSB7IHJldHVybiBtX3BsYXRmb3JtVGhyZWFk
OyB9CisjZW5kaWYKICNlbmRpZgogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9tYWMvTWFjaEV4Y2VwdGlvbnMuZGVmcyBiL1NvdXJjZS9XVEYvd3RmL21hYy9NYWNoRXhj
ZXB0aW9ucy5kZWZzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyMDU3NDJhNGVkNTAwZjgwNjRmZWViNDk1NWE3Yzk3
MGQ5OWFmMGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9tYWMvTWFjaEV4Y2Vw
dGlvbnMuZGVmcwpAQCAtMCwwICsxLDI2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgPG1hY2gvbWFjaF9leGMuZGVmcz4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90
aHJlYWRzL1NpZ25hbHMuY3BwCmluZGV4IDg1NWIyOGIzMTcyMTcyN2NmMWY0MzFhOTE4YTI1MWRj
MmU2YTNkZmMuLjcwN2NhOWMyZDMyYTc2ODBhMzk4M2E4MmVjZjBiN2Q2YmZlZWVlY2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RocmVhZHMvU2lnbmFscy5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvdGhyZWFkcy9TaWduYWxzLmNwcApAQCAtMjgsMjEgKzI4LDI2NyBAQAogCiAjaWYgVVNF
KFBUSFJFQURTKQogCisjaWYgSEFWRShNQUNIX0VYQ0VQVElPTlMpCitleHRlcm4gIkMiIHsKKyNp
bmNsdWRlICJNYWNoRXhjZXB0aW9uc1NlcnZlci5oIgorfTsKKyNlbmRpZgorCiAjaW5jbHVkZSA8
Y3N0ZGlvPgogI2luY2x1ZGUgPG11dGV4PgogI2luY2x1ZGUgPHNpZ25hbC5oPgorCisjaWYgSEFW
RShNQUNIX0VYQ0VQVElPTlMpCisjaW5jbHVkZSA8bWFjaC9tYWNoLmg+CisjaW5jbHVkZSA8bWFj
aC90aHJlYWRfYWN0Lmg+CisjZW5kaWYKKwogI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CiAjaW5j
bHVkZSA8d3RmL0RhdGFMb2cuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUg
PHd0Zi9Mb2NrbGVzc0JhZy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRNZXNzYWdlLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgor
CiAKIG5hbWVzcGFjZSBXVEYgewogCisgICAgCiBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPExv
Y2tsZXNzQmFnPFNpZ25hbEhhbmRsZXI+PiBoYW5kbGVyc1tzdGF0aWNfY2FzdDxzaXplX3Q+KFNp
Z25hbDo6TnVtYmVyT2ZTaWduYWxzKV0gPSB7IH07Ci1zdGF0aWMgc3RydWN0IHNpZ2FjdGlvbiBv
bGRBY3Rpb25zW3N0YXRpY19jYXN0PHNpemVfdD4oU2lnbmFsOjpOdW1iZXJPZlNpZ25hbHMpXTsK
IHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplT25jZUZsYWdzW3N0YXRpY19jYXN0PHNp
emVfdD4oU2lnbmFsOjpOdW1iZXJPZlNpZ25hbHMpXTsKK3N0YXRpYyBzdHJ1Y3Qgc2lnYWN0aW9u
IG9sZEFjdGlvbnNbc3RhdGljX2Nhc3Q8c2l6ZV90PihTaWduYWw6Ok51bWJlck9mU2lnbmFscyld
OworCisjaWYgSEFWRShNQUNIX0VYQ0VQVElPTlMpCisvLyBZb3UgY2FuIHJlYWQgbW9yZSBhYm91
dCBtYWNoIGV4Y2VwdGlvbnMgaGVyZToKKy8vIGh0dHA6Ly93d3cuY3MuY211LmVkdS9hZnMvY3Mv
cHJvamVjdC9tYWNoL3B1YmxpYy9kb2MvdW5wdWJsaXNoZWQvZXhjZXB0aW9uLnBzCisvLyBhbmQg
dGhlIE1hY2ggaW50ZXJmYWNlIEdlbmVyYXRvciAoTWlHKSBoZXJlOgorLy8gaHR0cDovL3d3dy5j
cy5jbXUuZWR1L2Fmcy9jcy9wcm9qZWN0L21hY2gvcHVibGljL2RvYy91bnB1Ymxpc2hlZC9taWcu
cHMKKworc3RhdGljIG1hY2hfcG9ydF90IGV4Y2VwdGlvblBvcnQ7CitzdGF0aWMgY29uc3RleHBy
IHNpemVfdCBtYXhNZXNzYWdlU2l6ZSA9IDEgKiBLQjsKKworc3RhdGljIHZvaWQgc3RhcnRNYWNo
RXhjZXB0aW9uSGFuZGxlclRocmVhZCgpCit7CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9u
Y2U7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZSwgW10geworICAgICAgICBpZiAobWFjaF9wb3J0
X2FsbG9jYXRlKG1hY2hfdGFza19zZWxmKCksIE1BQ0hfUE9SVF9SSUdIVF9SRUNFSVZFLCAmZXhj
ZXB0aW9uUG9ydCkgIT0gS0VSTl9TVUNDRVNTKQorICAgICAgICAgICAgQ1JBU0goKTsKKworICAg
ICAgICBpZiAobWFjaF9wb3J0X2luc2VydF9yaWdodChtYWNoX3Rhc2tfc2VsZigpLCBleGNlcHRp
b25Qb3J0LCBleGNlcHRpb25Qb3J0LCBNQUNIX01TR19UWVBFX01BS0VfU0VORCkgIT0gS0VSTl9T
VUNDRVNTKQorICAgICAgICAgICAgQ1JBU0goKTsKKworICAgICAgICAvLyBGSVhNRTogVGhpcyBz
aG91bGQgdXNlIGEgZGlzcGF0Y2ggcXVldWUuCisgICAgICAgIC8vIFNlZTogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjAwMworICAgICAgICAodm9pZClUaHJlYWQ6
OmNyZWF0ZSgKKyAgICAgICAgICAgICJXVEYgTWFjaCBFeGNlcHRpb24gVGhyZWFkIiwgW10gKCkg
eworICAgICAgICAgICAgICAgIHVuaW9uIE1lc3NhZ2UgeworICAgICAgICAgICAgICAgICAgICBt
YWNoX21zZ19oZWFkZXJfdCBoZWFkZXI7CisgICAgICAgICAgICAgICAgICAgIGNoYXIgZGF0YVtt
YXhNZXNzYWdlU2l6ZV07CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICBNZXNz
YWdlIG1lc3NhZ2VIZWFkZXJJbjsKKyAgICAgICAgICAgICAgICBNZXNzYWdlIG1lc3NhZ2VIZWFk
ZXJPdXQ7CisKKyAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgICAg
ICAgICBrZXJuX3JldHVybl90IG1lc3NhZ2VSZXN1bHQgPSBtYWNoX21zZygmbWVzc2FnZUhlYWRl
ckluLmhlYWRlciwgTUFDSF9SQ1ZfTVNHLCAwLCBtYXhNZXNzYWdlU2l6ZSwgZXhjZXB0aW9uUG9y
dCwgTUFDSF9NU0dfVElNRU9VVF9OT05FLCBNQUNIX1BPUlRfTlVMTCk7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChtZXNzYWdlUmVzdWx0ID09IEtFUk5fU1VDQ0VTUykgeworICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCFtYWNoX2V4Y19zZXJ2ZXIoJm1lc3NhZ2VIZWFkZXJJbi5oZWFkZXIs
ICZtZXNzYWdlSGVhZGVyT3V0LmhlYWRlcikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q1JBU0goKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZVJlc3VsdCA9IG1hY2hf
bXNnKCZtZXNzYWdlSGVhZGVyT3V0LmhlYWRlciwgTUFDSF9TRU5EX01TRywgbWVzc2FnZUhlYWRl
ck91dC5oZWFkZXIubXNnaF9zaXplLCAwLCBtZXNzYWdlSGVhZGVyT3V0LmhlYWRlci5tc2doX2xv
Y2FsX3BvcnQsIDAsIE1BQ0hfUE9SVF9OVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKG1lc3NhZ2VSZXN1bHQgPT0gS0VSTl9TVUNDRVNTKTsKKyAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiRmFp
bGVkIHRvIHJlY2VpdmUgbWFjaCBtZXNzYWdlIGR1ZSB0byAiLCBtYWNoX2Vycm9yX3N0cmluZyht
ZXNzYWdlUmVzdWx0KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICB9KS5sZWFrUmVmKCk7CisgICAgfSk7Cit9CisKK3N0YXRpYyBTaWduYWwgZnJvbU1h
Y2hFeGNlcHRpb24oZXhjZXB0aW9uX3R5cGVfdCB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkg
eworICAgIGNhc2UgRVhDX0JBRF9BQ0NFU1M6IHJldHVybiBTaWduYWw6OlNlZ1Y7CisgICAgY2Fz
ZSBFWENfQkFEX0lOU1RSVUNUSU9OOiByZXR1cm4gU2lnbmFsOjpJbGw7CisgICAgY2FzZSBFWENf
QlJFQUtQT0lOVDogcmV0dXJuIFNpZ25hbDo6VHJhcDsKKyAgICBkZWZhdWx0OiBicmVhazsKKyAg
ICB9CisgICAgcmV0dXJuIFNpZ25hbDo6VW5rbm93bjsKK30KKworc3RhdGljIGV4Y2VwdGlvbl9t
YXNrX3QgdG9NYWNoTWFzayhTaWduYWwgc2lnbmFsKQoreworICAgIHN3aXRjaCAoc2lnbmFsKSB7
CisgICAgY2FzZSBTaWduYWw6OlNlZ1Y6IHJldHVybiBFWENfTUFTS19CQURfQUNDRVNTOworICAg
IGNhc2UgU2lnbmFsOjpJbGw6IHJldHVybiBFWENfTUFTS19CQURfSU5TVFJVQ1RJT047CisgICAg
Y2FzZSBTaWduYWw6OlRyYXA6IHJldHVybiBFWENfTUFTS19CUkVBS1BPSU5UOworICAgIGRlZmF1
bHQ6IGJyZWFrOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQor
CitleHRlcm4gIkMiIHsKKworLy8gV2UgbmVlZCB0byBpbXBsZW1lbnQgc3R1YnMgZm9yIGNhdGNo
X21hY2hfZXhjZXB0aW9uX3JhaXNlIGFuZCBjYXRjaF9tYWNoX2V4Y2VwdGlvbl9yYWlzZV9zdGF0
ZV9pZGVudGl0eS4KKy8vIFRoZSBNaUcgZ2VuZXJhdGVkIGZpbGUgd2lsbCBmYWlsIHRvIGxpbmsg
b3RoZXJ3aXNlLCBldmVuIHRob3VnaCB3ZSBkb24ndCB1c2UgdGhlIGZ1bmN0aW9ucy4gT25seSB0
aGUKKy8vIGNhdGNoX21hY2hfZXhjZXB0aW9uX3JhaXNlX3N0YXRlIGZ1bmN0aW9uIHNob3VsZCBi
ZSBjYWxsZWQgYmVjYXVzZSB3ZSBwYXNzIEVYQ0VQVElPTl9TVEFURSB0bworLy8gdGhyZWFkX3Nl
dF9leGNlcHRpb25fcG9ydHMuCitrZXJuX3JldHVybl90IGNhdGNoX21hY2hfZXhjZXB0aW9uX3Jh
aXNlKG1hY2hfcG9ydF90LCBtYWNoX3BvcnRfdCwgbWFjaF9wb3J0X3QsIGV4Y2VwdGlvbl90eXBl
X3QsIG1hY2hfZXhjZXB0aW9uX2RhdGFfdCwgbWFjaF9tc2dfdHlwZV9udW1iZXJfdCkKK3sKKyAg
ICBkYXRhTG9nTG4oIldlIHNob3VsZCBub3QgaGF2ZSBjYWxsZWQgY2F0Y2hfZXhjZXB0aW9uX3Jh
aXNlKCksIHBsZWFzZSBmaWxlIGEgYnVnIGF0IGJ1Z3Mud2Via2l0Lm9yZyIpOworICAgIHJldHVy
biBLRVJOX0ZBSUxVUkU7Cit9CisKK2tlcm5fcmV0dXJuX3QgY2F0Y2hfbWFjaF9leGNlcHRpb25f
cmFpc2Vfc3RhdGVfaWRlbnRpdHkobWFjaF9wb3J0X3QsIG1hY2hfcG9ydF90LCBtYWNoX3BvcnRf
dCwgZXhjZXB0aW9uX3R5cGVfdCwgbWFjaF9leGNlcHRpb25fZGF0YV90LCBtYWNoX21zZ190eXBl
X251bWJlcl90LCBpbnQqLCB0aHJlYWRfc3RhdGVfdCwgbWFjaF9tc2dfdHlwZV9udW1iZXJfdCwg
dGhyZWFkX3N0YXRlX3QsICBtYWNoX21zZ190eXBlX251bWJlcl90KikKK3sKKyAgICBkYXRhTG9n
TG4oIldlIHNob3VsZCBub3QgaGF2ZSBjYWxsZWQgY2F0Y2hfbWFjaF9leGNlcHRpb25fcmFpc2Vf
c3RhdGVfaWRlbnRpdHksIHBsZWFzZSBmaWxlIGEgYnVnIGF0IGJ1Z3Mud2Via2l0Lm9yZyIpOwor
ICAgIHJldHVybiBLRVJOX0ZBSUxVUkU7Cit9CisKK2tlcm5fcmV0dXJuX3QgY2F0Y2hfbWFjaF9l
eGNlcHRpb25fcmFpc2Vfc3RhdGUoCisgICAgbWFjaF9wb3J0X3QgcG9ydCwKKyAgICBleGNlcHRp
b25fdHlwZV90IGV4Y2VwdGlvblR5cGUsCisgICAgY29uc3QgbWFjaF9leGNlcHRpb25fZGF0YV90
IGV4Y2VwdGlvbkRhdGEsCisgICAgbWFjaF9tc2dfdHlwZV9udW1iZXJfdCBkYXRhQ291bnQsCisg
ICAgaW50KiBzdGF0ZUZsYXZvciwKKyAgICBjb25zdCB0aHJlYWRfc3RhdGVfdCBpblN0YXRlLAor
ICAgIG1hY2hfbXNnX3R5cGVfbnVtYmVyX3QgaW5TdGF0ZUNvdW50LAorICAgIHRocmVhZF9zdGF0
ZV90IG91dFN0YXRlLAorICAgIG1hY2hfbXNnX3R5cGVfbnVtYmVyX3QqIG91dFN0YXRlQ291bnQp
Cit7CisgICAgUkVMRUFTRV9BU1NFUlQocG9ydCA9PSBleGNlcHRpb25Qb3J0KTsKKyAgICBTaWdu
YWwgc2lnbmFsID0gZnJvbU1hY2hFeGNlcHRpb24oZXhjZXB0aW9uVHlwZSk7CisgICAgUkVMRUFT
RV9BU1NFUlQoc2lnbmFsICE9IFNpZ25hbDo6VW5rbm93bik7CisKKyAgICBtZW1jcHkob3V0U3Rh
dGUsIGluU3RhdGUsIGluU3RhdGVDb3VudCAqIHNpemVvZihpblN0YXRlWzBdKSk7CisgICAgKm91
dFN0YXRlQ291bnQgPSBpblN0YXRlQ291bnQ7CisKKyNpZiBDUFUoWDg2XzY0KQorICAgIFJFTEVB
U0VfQVNTRVJUKCpzdGF0ZUZsYXZvciA9PSB4ODZfVEhSRUFEX1NUQVRFKTsKKyAgICBQbGF0Zm9y
bVJlZ2lzdGVycyYgcmVnaXN0ZXJzID0gcmVpbnRlcnByZXRfY2FzdDx4ODZfdGhyZWFkX3N0YXRl
X3QqPihvdXRTdGF0ZSktPnV0cy50czY0OworI2VsaWYgQ1BVKFg4NikKKyAgICBSRUxFQVNFX0FT
U0VSVCgqc3RhdGVGbGF2b3IgPT0geDg2X1RIUkVBRF9TVEFURSk7CisgICAgUGxhdGZvcm1SZWdp
c3RlcnMmIHJlZ2lzdGVycyA9IHJlaW50ZXJwcmV0X2Nhc3Q8eDg2X3RocmVhZF9zdGF0ZV90Kj4o
b3V0U3RhdGUpLT51dHMudHMzMjsKKyNlbGlmIENQVShBUk02NCkKKyAgICBSRUxFQVNFX0FTU0VS
VCgqc3RhdGVGbGF2b3IgPT0gQVJNX1RIUkVBRF9TVEFURSk7CisgICAgUGxhdGZvcm1SZWdpc3Rl
cnMmIHJlZ2lzdGVycyA9IHJlaW50ZXJwcmV0X2Nhc3Q8YXJtX3VuaWZpZWRfdGhyZWFkX3N0YXRl
Kj4ob3V0U3RhdGUpLT50c182NDsKKyNlbGlmIENQVShBUk0pCisgICAgUkVMRUFTRV9BU1NFUlQo
KnN0YXRlRmxhdm9yID09IEFSTV9USFJFQURfU1RBVEUpOworICAgIFBsYXRmb3JtUmVnaXN0ZXJz
JiByZWdpc3RlcnMgPSByZWludGVycHJldF9jYXN0PGFybV91bmlmaWVkX3RocmVhZF9zdGF0ZSo+
KG91dFN0YXRlKS0+dHNfMzI7CisjZW5kaWYKKworICAgIFNpZ0luZm8gaW5mbzsKKyAgICBpZiAo
c2lnbmFsID09IFNpZ25hbDo6U2VnVikgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGRhdGFDb3Vu
dCwgZGF0YUNvdW50ID09IDIpOworICAgICAgICBpbmZvLmZhdWx0aW5nQWRkcmVzcyA9IHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KGV4Y2VwdGlvbkRhdGFbMV0pOworICAgIH0KKworICAgIGJvb2wg
ZGlkSGFuZGxlID0gZmFsc2U7CisgICAgaGFuZGxlcnNbc3RhdGljX2Nhc3Q8c2l6ZV90PihzaWdu
YWwpXS0+aXRlcmF0ZShbJl0gKGNvbnN0IFNpZ25hbEhhbmRsZXImIGhhbmRsZXIpIHsKKyAgICAg
ICAgU2lnbmFsQWN0aW9uIGhhbmRsZXJSZXN1bHQgPSBoYW5kbGVyKHNpZ25hbCwgaW5mbywgcmVn
aXN0ZXJzKTsKKyAgICAgICAgZGlkSGFuZGxlIHw9IGhhbmRsZXJSZXN1bHQgPT0gU2lnbmFsQWN0
aW9uOjpIYW5kbGVkOworICAgIH0pOworCisgICAgaWYgKGRpZEhhbmRsZSkKKyAgICAgICAgcmV0
dXJuIEtFUk5fU1VDQ0VTUzsKKyAgICByZXR1cm4gS0VSTl9GQUlMVVJFOworfQorCit9OworCitz
dGF0aWMgYm9vbCB1c2VNYWNoIHsgZmFsc2UgfTsKK3ZvaWQgaGFuZGxlU2lnbmFsc1dpdGhNYWNo
KCkKK3sKKyAgICBkZWxpdmVyTWVzc2FnZXNVc2luZ01hY2goKTsKKyAgICB1c2VNYWNoID0gdHJ1
ZTsKK30KKworCitzdGF0aWMgU3RhdGljTG9jayB0aHJlYWRMb2NrOworZXhjZXB0aW9uX21hc2tf
dCBhY3RpdmVFeGNlcHRpb25zIHsgMCB9OwogCi1zdGF0aWMgdm9pZCBqc2NTaWduYWxIYW5kbGVy
KGludCBzaWcsIHNpZ2luZm9fdCogaW5mbywgdm9pZCogbWNvbnRleHQpCitpbmxpbmUgdm9pZCBz
ZXRFeGNlcHRpb25Qb3J0cyhjb25zdCBBYnN0cmFjdExvY2tlciYsIFRocmVhZCogdGhyZWFkKQor
eworICAgIGtlcm5fcmV0dXJuX3QgcmVzdWx0ID0gdGhyZWFkX3NldF9leGNlcHRpb25fcG9ydHMo
dGhyZWFkLT5tYWNoVGhyZWFkKCksIGFjdGl2ZUV4Y2VwdGlvbnMsIGV4Y2VwdGlvblBvcnQsIEVY
Q0VQVElPTl9TVEFURSB8IE1BQ0hfRVhDRVBUSU9OX0NPREVTLCBNQUNISU5FX1RIUkVBRF9TVEFU
RSk7CisgICAgaWYgKHJlc3VsdCAhPSBLRVJOX1NVQ0NFU1MpIHsKKyAgICAgICAgZGF0YUxvZ0xu
KCJ0aHJlYWQgc2V0IHBvcnQgZmFpbGVkIGR1ZSB0byAiLCBtYWNoX2Vycm9yX3N0cmluZyhyZXN1
bHQpKTsKKyAgICAgICAgQ1JBU0goKTsKKyAgICB9Cit9CisKK2lubGluZSBIYXNoU2V0PFRocmVh
ZCo+JiBhY3RpdmVUaHJlYWRzKGNvbnN0IEFic3RyYWN0TG9ja2VyJikKK3sKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxUaHJlYWQqPj4gYWN0aXZlVGhyZWFkczsKKyAgICByZXR1
cm4gYWN0aXZlVGhyZWFkczsKK30KKwordm9pZCByZWdpc3RlclRocmVhZEZvck1hY2hFeGNlcHRp
b25IYW5kbGluZyhUaHJlYWQqIHRocmVhZCkKK3sKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KHRocmVhZExvY2spOworICAgIGF1dG8gcmVzdWx0ID0gYWN0aXZlVGhyZWFkcyhsb2NrZXIpLmFk
ZCh0aHJlYWQpOworCisgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICBzZXRFeGNl
cHRpb25Qb3J0cyhsb2NrZXIsIHRocmVhZCk7Cit9CisKK3ZvaWQgdW5yZWdpc3RlclRocmVhZEZv
ck1hY2hFeGNlcHRpb25IYW5kbGluZyhUaHJlYWQqIHRocmVhZCkKK3sKKyAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKHRocmVhZExvY2spOworICAgIGFjdGl2ZVRocmVhZHMobG9ja2VyKS5yZW1v
dmUodGhyZWFkKTsKK30KKworI2Vsc2UKK3N0YXRpYyBjb25zdGV4cHIgYm9vbCB1c2VNYWNoID0g
ZmFsc2U7CisjZW5kaWYgLy8gSEFWRShNQUNIX0VYQ0VQVElPTlMpCisKK3N0YXRpYyB2b2lkIGpz
Y1NpZ25hbEhhbmRsZXIoaW50LCBzaWdpbmZvX3QqLCB2b2lkKik7CisKK3ZvaWQgaW5zdGFsbFNp
Z25hbEhhbmRsZXIoU2lnbmFsIHNpZ25hbCwgU2lnbmFsSGFuZGxlciYmIGhhbmRsZXIpCit7Cisg
ICAgQVNTRVJUKHNpZ25hbCA8IFNpZ25hbDo6VW5rbm93bik7CisjaWYgSEFWRShNQUNIX0VYQ0VQ
VElPTlMpCisgICAgLy8gU2luY2UgbWFjaCBvbmx5IGhhcyBFWENfQkFEX0FDQ0VTUywgd2hpY2gg
Y292ZXJzIGJvdGggU2VnViBhbmQgQnVzLCB3ZSBhcmJpdGFyaWx5IGNob29zZSB0byBtYWtlCisg
ICAgLy8gbWFjaCBFWENfQkFEX0FDQ0VTU2VzIG1hcCB0byBTZWdWLgorICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQganVzdCB1c2UgYSBzaW5nbGUgU2lnbmFsOjpCYWRBY2Nlc3MgdmFsdWUgaW5zdGVh
ZCBvZiBTZWdWL0J1cy4KKyAgICAvLyBTZWU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzIwNjMKKyAgICBpZiAoc2lnbmFsID09IFNpZ25hbDo6QnVzICYmIHVzZU1h
Y2gpCisgICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQoIXVzZU1hY2ggfHwgc2lnbmFsICE9IFNp
Z25hbDo6VXNyKTsKKworICAgIGlmICh1c2VNYWNoKQorICAgICAgICBzdGFydE1hY2hFeGNlcHRp
b25IYW5kbGVyVGhyZWFkKCk7CisjZW5kaWYKKworICAgIHN0ZDo6Y2FsbF9vbmNlKGluaXRpYWxp
emVPbmNlRmxhZ3Nbc3RhdGljX2Nhc3Q8c2l6ZV90PihzaWduYWwpXSwgWyZdIHsKKyAgICAgICAg
aGFuZGxlcnNbc3RhdGljX2Nhc3Q8c2l6ZV90PihzaWduYWwpXS5jb25zdHJ1Y3QoKTsKKworICAg
ICAgICBpZiAoIXVzZU1hY2gpIHsKKyAgICAgICAgICAgIHN0cnVjdCBzaWdhY3Rpb24gYWN0aW9u
OworICAgICAgICAgICAgYWN0aW9uLnNhX3NpZ2FjdGlvbiA9IGpzY1NpZ25hbEhhbmRsZXI7Cisg
ICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHNpZ2ZpbGxzZXQoJmFjdGlvbi5zYV9tYXNrKTsKKyAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFyZXN1bHQpOworICAgICAgICAgICAgYWN0aW9uLnNh
X2ZsYWdzID0gU0FfU0lHSU5GTzsKKyAgICAgICAgICAgIHJlc3VsdCA9IHNpZ2FjdGlvbih0b1N5
c3RlbVNpZ25hbChzaWduYWwpLCAmYWN0aW9uLCAmb2xkQWN0aW9uc1tzdGF0aWNfY2FzdDxzaXpl
X3Q+KHNpZ25hbCldKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFyZXN1bHQpOworICAg
ICAgICB9CisKKyAgICB9KTsKKworICAgIGhhbmRsZXJzW3N0YXRpY19jYXN0PHNpemVfdD4oc2ln
bmFsKV0tPmFkZChXVEZNb3ZlKGhhbmRsZXIpKTsKKworI2lmIEhBVkUoTUFDSF9FWENFUFRJT05T
KQorICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sodGhyZWFkTG9jayk7CisgICAgaWYgKHVzZU1h
Y2gpIHsKKyAgICAgICAgYWN0aXZlRXhjZXB0aW9ucyB8PSB0b01hY2hNYXNrKHNpZ25hbCk7CisK
KyAgICAgICAgZm9yIChUaHJlYWQqIHRocmVhZCA6IGFjdGl2ZVRocmVhZHMobG9ja2VyKSkKKyAg
ICAgICAgICAgIHNldEV4Y2VwdGlvblBvcnRzKGxvY2tlciwgdGhyZWFkKTsKKyAgICB9CisjZW5k
aWYKK30KKwordm9pZCBqc2NTaWduYWxIYW5kbGVyKGludCBzaWcsIHNpZ2luZm9fdCogaW5mbywg
dm9pZCogdWNvbnRleHQpCiB7CiAgICAgU2lnbmFsIHNpZ25hbCA9IGZyb21TeXN0ZW1TaWduYWwo
c2lnKTsKIApAQCAtNjIsMTAgKzMwOCwxNiBAQCBzdGF0aWMgdm9pZCBqc2NTaWduYWxIYW5kbGVy
KGludCBzaWcsIHNpZ2luZm9fdCogaW5mbywgdm9pZCogbWNvbnRleHQpCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKKyAgICBTaWdJbmZvIHNpZ0luZm87CisgICAgaWYgKHNpZ25hbCA9PSBTaWdu
YWw6OlNlZ1YgfHwgc2lnbmFsID09IFNpZ25hbDo6QnVzKQorICAgICAgICBzaWdJbmZvLmZhdWx0
aW5nQWRkcmVzcyA9IGluZm8tPnNpX2FkZHI7CisKKyAgICBQbGF0Zm9ybVJlZ2lzdGVycyYgcmVn
aXN0ZXJzID0gcmVnaXN0ZXJzRnJvbVVDb250ZXh0KHJlaW50ZXJwcmV0X2Nhc3Q8dWNvbnRleHRf
dCo+KHVjb250ZXh0KSk7CisKICAgICBib29sIGRpZEhhbmRsZSA9IGZhbHNlOwogICAgIGJvb2wg
cmVzdG9yZURlZmF1bHRIYW5kbGVyID0gZmFsc2U7CiAgICAgaGFuZGxlcnNbc3RhdGljX2Nhc3Q8
c2l6ZV90PihzaWduYWwpXS0+aXRlcmF0ZShbJl0gKGNvbnN0IFNpZ25hbEhhbmRsZXImIGhhbmRs
ZXIpIHsKLSAgICAgICAgc3dpdGNoIChoYW5kbGVyKHNpZywgaW5mbywgbWNvbnRleHQpKSB7Cisg
ICAgICAgIHN3aXRjaCAoaGFuZGxlcihzaWduYWwsIHNpZ0luZm8sIHJlZ2lzdGVycykpIHsKICAg
ICAgICAgY2FzZSBTaWduYWxBY3Rpb246OkhhbmRsZWQ6CiAgICAgICAgICAgICBkaWRIYW5kbGUg
PSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CkBAIC04NSwxMyArMzM3LDEzIEBAIHN0YXRpYyB2
b2lkIGpzY1NpZ25hbEhhbmRsZXIoaW50IHNpZywgc2lnaW5mb190KiBpbmZvLCB2b2lkKiBtY29u
dGV4dCkKICAgICBzdHJ1Y3Qgc2lnYWN0aW9uJiBvbGRBY3Rpb24gPSBvbGRBY3Rpb25zW3N0YXRp
Y19jYXN0PHNpemVfdD4oc2lnbmFsKV07CiAgICAgaWYgKHNpZ25hbCA9PSBTaWduYWw6OlVzcikg
ewogICAgICAgICBpZiAob2xkQWN0aW9uLnNhX3NpZ2FjdGlvbikKLSAgICAgICAgICAgIG9sZEFj
dGlvbi5zYV9zaWdhY3Rpb24oc2lnLCBpbmZvLCBtY29udGV4dCk7CisgICAgICAgICAgICBvbGRB
Y3Rpb24uc2Ffc2lnYWN0aW9uKHNpZywgaW5mbywgdWNvbnRleHQpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCiAgICAgaWYgKCFkaWRIYW5kbGUpIHsKICAgICAgICAgaWYgKG9sZEFjdGlvbi5z
YV9zaWdhY3Rpb24pIHsKLSAgICAgICAgICAgIG9sZEFjdGlvbi5zYV9zaWdhY3Rpb24oc2lnLCBp
bmZvLCBtY29udGV4dCk7CisgICAgICAgICAgICBvbGRBY3Rpb24uc2Ffc2lnYWN0aW9uKHNpZywg
aW5mbywgdWNvbnRleHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTEw
MCwyNCArMzUyLDYgQEAgc3RhdGljIHZvaWQganNjU2lnbmFsSGFuZGxlcihpbnQgc2lnLCBzaWdp
bmZvX3QqIGluZm8sIHZvaWQqIG1jb250ZXh0KQogICAgIH0KIH0KIAotdm9pZCBpbnN0YWxsU2ln
bmFsSGFuZGxlcihTaWduYWwgc2lnbmFsLCBTaWduYWxIYW5kbGVyJiYgaGFuZGxlcikKLXsKLSAg
ICBBU1NFUlQoc2lnbmFsIDwgU2lnbmFsOjpVbmtub3duKTsKLSAgICBzdGQ6OmNhbGxfb25jZShp
bml0aWFsaXplT25jZUZsYWdzW3N0YXRpY19jYXN0PHNpemVfdD4oc2lnbmFsKV0sIFsmXSB7Ci0g
ICAgICAgIGhhbmRsZXJzW3N0YXRpY19jYXN0PHNpemVfdD4oc2lnbmFsKV0uY29uc3RydWN0KCk7
Ci0KLSAgICAgICAgc3RydWN0IHNpZ2FjdGlvbiBhY3Rpb247Ci0gICAgICAgIGFjdGlvbi5zYV9z
aWdhY3Rpb24gPSBqc2NTaWduYWxIYW5kbGVyOwotICAgICAgICBhdXRvIHJlc3VsdCA9IHNpZ2Zp
bGxzZXQoJmFjdGlvbi5zYV9tYXNrKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXJlc3VsdCk7
Ci0gICAgICAgIGFjdGlvbi5zYV9mbGFncyA9IFNBX1NJR0lORk87Ci0gICAgICAgIHJlc3VsdCA9
IHNpZ2FjdGlvbih0b1N5c3RlbVNpZ25hbChzaWduYWwpLCAmYWN0aW9uLCAmb2xkQWN0aW9uc1tz
dGF0aWNfY2FzdDxzaXplX3Q+KHNpZ25hbCldKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXJl
c3VsdCk7Ci0gICAgfSk7Ci0KLSAgICBoYW5kbGVyc1tzdGF0aWNfY2FzdDxzaXplX3Q+KHNpZ25h
bCldLT5hZGQoV1RGTW92ZShoYW5kbGVyKSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdURgogCiAj
ZW5kaWYgLy8gVVNFKFBUSFJFQURTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGhyZWFk
cy9TaWduYWxzLmggYi9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuaAppbmRleCBmMjlk
NGRkYjdlOGRmZGJlZjQ3OWMxZWQ5NzdhYmJlZmU2YTFjZjY2Li5mNGJiNTMwNWE0YWUzOWNhMWFh
MzliMTMxZGIzYWVmMmJkYjEwMzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRz
L1NpZ25hbHMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90aHJlYWRzL1NpZ25hbHMuaApAQCAtMjks
NiArMjksNyBAQAogCiAjaW5jbHVkZSA8c2lnbmFsLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9u
Lmg+CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtUmVnaXN0ZXJzLmg+CiAKIG5hbWVzcGFjZSBXVEYg
ewogCkBAIC03OSw3ICs4MCwxMSBAQCBlbnVtIGNsYXNzIFNpZ25hbEFjdGlvbiB7CiAgICAgRm9y
Y2VEZWZhdWx0CiB9OwogCi11c2luZyBTaWduYWxIYW5kbGVyID0gRnVuY3Rpb248U2lnbmFsQWN0
aW9uKGludCwgc2lnaW5mb190Kiwgdm9pZCopPjsKK3N0cnVjdCBTaWdJbmZvIHsKKyAgICB2b2lk
KiBmYXVsdGluZ0FkZHJlc3MgeyAwIH07Cit9OworCit1c2luZyBTaWduYWxIYW5kbGVyID0gRnVu
Y3Rpb248U2lnbmFsQWN0aW9uKFNpZ25hbCwgU2lnSW5mbyYsIFBsYXRmb3JtUmVnaXN0ZXJzJik+
OwogCiAvLyBDYWxsIHRoaXMgbWV0aG9kIHdoZW5ldmVyIHlvdSB3YW50IHRvIGluc3RhbGwgYSBz
aWduYWwgaGFuZGxlci4gSXQncyBvayB0byBjYWxsIHRoaXMgZnVuY3Rpb24gbGF6aWx5LgogLy8g
Tm90ZTogWW91ciBzaWduYWwgaGFuZGxlciB3aWxsIGJlIGNhbGxlZCBldmVyeSB0aW1lIHRoZSBo
YW5kbGVyIGZvciB0aGUgZGVzaXJlZCBzaWduYWwgaXMgY2FsbGVkLgpAQCAtODcsOSArOTIsMjUg
QEAgdXNpbmcgU2lnbmFsSGFuZGxlciA9IEZ1bmN0aW9uPFNpZ25hbEFjdGlvbihpbnQsIHNpZ2lu
Zm9fdCosIHZvaWQqKT47CiAvLyBUaGlzIGZ1bmN0aW9uIGlzIGN1cnJlbnRseSBhIG9uZSB3YXkg
c3RyZWV0IGkuZS4gb25jZSBpbnN0YWxsZWQsIGEgc2lnbmFsIGhhbmRsZXIgY2Fubm90IGJlIHVu
aW5zdGFsbGVkLgogV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgaW5zdGFsbFNpZ25hbEhhbmRsZXIo
U2lnbmFsLCBTaWduYWxIYW5kbGVyJiYpOwogCisKKyNpZiBIQVZFKE1BQ0hfRVhDRVBUSU9OUykK
K2NsYXNzIFRocmVhZDsKK3ZvaWQgcmVnaXN0ZXJUaHJlYWRGb3JNYWNoRXhjZXB0aW9uSGFuZGxp
bmcoVGhyZWFkKik7Cit2b2lkIHVucmVnaXN0ZXJUaHJlYWRGb3JNYWNoRXhjZXB0aW9uSGFuZGxp
bmcoVGhyZWFkKik7CisKK3ZvaWQgaGFuZGxlU2lnbmFsc1dpdGhNYWNoKCk7CisjZW5kaWYgLy8g
SEFWRShNQUNIX0VYQ0VQVElPTlMpCisKIH0gLy8gbmFtZXNwYWNlIFdURgogCisjaWYgSEFWRShN
QUNIX0VYQ0VQVElPTlMpCit1c2luZyBXVEY6OnJlZ2lzdGVyVGhyZWFkRm9yTWFjaEV4Y2VwdGlv
bkhhbmRsaW5nOwordXNpbmcgV1RGOjp1bnJlZ2lzdGVyVGhyZWFkRm9yTWFjaEV4Y2VwdGlvbkhh
bmRsaW5nOwordXNpbmcgV1RGOjpoYW5kbGVTaWduYWxzV2l0aE1hY2g7CisjZW5kaWYgLy8gSEFW
RShNQUNIX0VYQ0VQVElPTlMpCisKIHVzaW5nIFdURjo6U2lnbmFsOwordXNpbmcgV1RGOjpTaWdJ
bmZvOwogdXNpbmcgV1RGOjp0b1N5c3RlbVNpZ25hbDsKIHVzaW5nIFdURjo6ZnJvbVN5c3RlbVNp
Z25hbDsKIHVzaW5nIFdURjo6U2lnbmFsQWN0aW9uOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDkxMzlmM2NhM2Y1OGI1ZDk4MzRlZWFmNTIxZDg2
NDU3YWIxN2JjMmQuLmEwMGMwNGUwNDJjNDgwNDc5YjU4MjFmM2NhNmI4MTFkODIxMTUyOTAgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNCBAQAorMjAxNy0wNS0zMSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNv
bT4KKworICAgICAgICBSZWxhbmQgcjIxNjgwOCwgdW5kZXJseWluZyBsbGRiIGJ1ZyBoYXMgYmVl
biBmaXhlZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3Mjc1OQorCisgICAgICAgIFVucmV2aWV3ZWQsIHJlbGFuZGluZyBvbGQgcGF0Y2guIFNlZTog
cmRhcjovL3Byb2JsZW0vMzExODMzNTIKKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1RocmVhZE1lc3NhZ2VzLmNwcDoKKyAgICAgICAgKHJ1blRocmVhZE1lc3NhZ2VUZXN0KToK
KyAgICAgICAgKFRFU1QpOgorCiAyMDE3LTA1LTMxICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFz
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEdldCA8Y2hyb25vPiBvdXQgb2YgU3RkTGliRXh0cmFz
LmgKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1RocmVhZE1lc3Nh
Z2VzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1RocmVhZE1lc3NhZ2VzLmNw
cAppbmRleCBkNjNlOWJmMWU3NTA2OGI2YzFhN2U3ZTZlOGI2N2M0ZWIwNTE1ODgyLi5lNmE1Nzg5
NGJiNTE2ZmUxY2U3MTNkMDdiZjE4ZjA3MDZlZmE5MzdjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9UaHJlYWRNZXNzYWdlcy5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvVGhyZWFkTWVzc2FnZXMuY3BwCkBAIC01MCw3ICs1MCw3IEBAIHN0
YXRpYyB2b2lkIHJ1blRocmVhZE1lc3NhZ2VUZXN0KHVuc2lnbmVkIG51bVNlbmRlcnMsIHVuc2ln
bmVkIG51bU1lc3NhZ2VzKQogICAgIGZvciAodW5zaWduZWQgc2VuZGVySUQgPSAwOyBzZW5kZXJJ
RCA8IG51bVNlbmRlcnM7ICsrc2VuZGVySUQpIHsKICAgICAgICAgc2VuZGVyVGhyZWFkc1tzZW5k
ZXJJRF0gPSBUaHJlYWQ6OmNyZWF0ZSgiVGhyZWFkTWVzc2FnZSBzZW5kZXIiLCBbc2VuZGVySUQs
IG51bU1lc3NhZ2VzLCByZWNlaXZlclRocmVhZCwgJm1lc3NhZ2VzUnVuLCAmaGFuZGxlcnNSdW5d
ICgpIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1NZXNzYWdlczsg
KytpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byByZXN1bHQgPSBzZW5kTWVzc2FnZSgqcmVjZWl2
ZXJUaHJlYWQuZ2V0KCksIFtzZW5kZXJJRCwgJmhhbmRsZXJzUnVuXSAoc2lnaW5mb190KiwgdWNv
bnRleHRfdCopIHsKKyAgICAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHNlbmRNZXNzYWdlKCpy
ZWNlaXZlclRocmVhZC5nZXQoKSwgW3NlbmRlcklELCAmaGFuZGxlcnNSdW5dIChQbGF0Zm9ybVJl
Z2lzdGVycyYpIHsKICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcnNSdW5bc2VuZGVySURdKys7
CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUocmVzdWx0
ID09IFdURjo6TWVzc2FnZVN0YXR1czo6TWVzc2FnZVJhbik7CkBAIC05NSw3ICs5NSw3IEBAIHB1
YmxpYzoKIFRFU1QoVGhyZWFkTWVzc2FnZSwgU2lnbmFsc1dvcmtPbkV4aXQpCiB7CiAgICAgc3Rh
dGljIGJvb2wgaGFuZGxlclJhbiA9IGZhbHNlOwotICAgIGluc3RhbGxTaWduYWxIYW5kbGVyKFNp
Z25hbDo6VXNyLCBbXSAoaW50LCBzaWdpbmZvX3QqLCB2b2lkKikgLT4gU2lnbmFsQWN0aW9uIHsK
KyAgICBpbnN0YWxsU2lnbmFsSGFuZGxlcihTaWduYWw6OlVzciwgW10gKFNpZ25hbCwgU2lnSW5m
byYsIFBsYXRmb3JtUmVnaXN0ZXJzJikgLT4gU2lnbmFsQWN0aW9uIHsKICAgICAgICAgZGF0YUxv
Z0xuKCJoZXJlIik7CiAgICAgICAgIGhhbmRsZXJSYW4gPSB0cnVlOwogICAgICAgICByZXR1cm4g
U2lnbmFsQWN0aW9uOjpIYW5kbGVkOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>