<?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>234696</bug_id>
          
          <creation_ts>2021-12-26 13:17:10 -0800</creation_ts>
          <short_desc>[Clang][Win] NotificationData.h(47,5): error: reference to &apos;UUID&apos; is ambiguous</short_desc>
          <delta_ts>2023-07-06 18:11:22 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=234571</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=258952</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>255567</dependson>
          <blocked>171618</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Fujii Hironori">fujii</reporter>
          <assigned_to name="Fujii Hironori">fujii</assigned_to>
          <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1826911</commentid>
    <comment_count>0</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-12-26 13:17:10 -0800</bug_when>
    <thetext>After r287412 (Bug 234571), Clang-cl can&apos;t compile WinCairo port.

FAILED: Source/WebCore/CMakeFiles/WebCore.dir/__/__/WebCore/DerivedSources/unified-sources/UnifiedSource-cbdfe323-28.cpp.obj 
C:\PROGRA~1\LLVM\bin\clang-cl.exe (..)UnifiedSource-cbdfe323-28.cpp
In file included from WebCore\DerivedSources\unified-sources\UnifiedSource-cbdfe323-28.cpp:6:
In file included from ..\..\Source\WebCore\Modules/notifications/NotificationData.cpp:27:
..\..\Source\WebCore\Modules\notifications/NotificationData.h(47,5): error: reference to &apos;UUID&apos; is ambiguous
    UUID notificationID;
    ^
WTF\Headers\wtf/UUID.h(143,12): note: candidate found by name lookup is &apos;UUID&apos;
using WTF::UUID;
           ^
C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\shared\rpcdce.h(83,14): note: candidate found by name lookup is &apos;UUID&apos;
typedef GUID UUID;
             ^
1 error generated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826931</commentid>
    <comment_count>1</comment_count>
      <attachid>447994</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-12-26 17:03:23 -0800</bug_when>
    <thetext>Created attachment 447994
repro</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826932</commentid>
    <comment_count>2</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-12-26 17:07:39 -0800</bug_when>
    <thetext>GCC and MSVC can compile, but Clang can&apos;t
https://godbolt.org/z/hfsd5Gxj1

https://stackoverflow.com/q/36204506
https://stackoverflow.com/q/55896837</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827539</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-01-02 13:18:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/87052994&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832533</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-01-20 12:39:10 -0800</bug_when>
    <thetext>We shouldn&apos;t have to make WebKit source code worse to handle one misbehaving compiler.

I&apos;d wager we&apos;ve had to deal with this type of thing in the past - Anybody have any ideas?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852523</commentid>
    <comment_count>5</comment_count>
      <attachid>455038</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2022-03-17 15:40:49 -0700</bug_when>
    <thetext>Created attachment 455038
workaround patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1946618</commentid>
    <comment_count>6</comment_count>
      <attachid>455038</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2023-04-04 15:05:21 -0700</bug_when>
    <thetext>Comment on attachment 455038
workaround patch

I don’t think this is the best workaround.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1946626</commentid>
    <comment_count>7</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2023-04-04 15:20:53 -0700</bug_when>
    <thetext>I don&apos;t intend to land this patch. Sometimes I have to compile Windows port with clang-cl. I need this small workaround patch in such a case.
The best solution is changing WebKit policy to avoid defining names in the global scope.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1946800</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2023-04-05 12:53:53 -0700</bug_when>
    <thetext>OK, but we don’t have consensus on that.


Outside WTF, WebKit coding style absolutely does *not* support adding any identifiers to the global scope.

WTF has an approach where it uses a namespace to avoid link-time conflicts, but it *does* pull identifiers into global scope. Changing that WTF approach would be a *big* deal, and is not going to be decided based on a single identifier or bug. So if you’d like us to move in that direction, it would be good to start the discussion.

As I said we should not try to settle that here, but my first thought is that I think that since we used a short namespace name, WTF, we *could* consider making that change, but it would have far-reaching implications in code style. Writing WTF::String every time instead of just String. But maybe we could get some of the same benefit from importing these names into each of the WebKit namespaces like you did here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1946812</commentid>
    <comment_count>9</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2023-04-05 13:22:28 -0700</bug_when>
    <thetext>I&apos;m proposing removing MSVC support by switch to clang-cl for WinCairo developers. But, some developers disagree.
So, this problem isn&apos;t so important now.
I think the simplest solution might be adding &quot;using namespace WTF;&quot; in all other namespaces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1949066</commentid>
    <comment_count>10</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2023-04-16 18:05:26 -0700</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #9)
&gt; So, this problem isn&apos;t so important now.

I&apos;m going to revive clang-cl builds for Windows port.
This problem is important now.

&gt; I think the simplest solution might be adding &quot;using namespace WTF;&quot; in all
&gt; other namespaces.

This approach doesn&apos;t work. WTF::HashTable and JSC::HashTable conflict.
Source/JavaScriptCore/runtime/Lookup.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1949079</commentid>
    <comment_count>11</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2023-04-16 21:53:57 -0700</bug_when>
    <thetext>I misunderstood. &quot;using namespace WTF;&quot; in each namespace can&apos;t solve this problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1949080</commentid>
    <comment_count>12</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2023-04-16 22:03:48 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/12784</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1949267</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2023-04-17 15:32:36 -0700</bug_when>
    <thetext>Committed 263042@main (16e36e6bc5e6): &lt;https://commits.webkit.org/263042@main&gt;

Reviewed commits have been landed. Closing PR #12784 and removing active labels.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1949322</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2023-04-17 17:52:36 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 255567</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1949328</commentid>
    <comment_count>15</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2023-04-17 17:58:05 -0700</bug_when>
    <thetext>Given that this broke internal build, probably we should stop using `using WTF::UUID`, and always use `WTF::UUID` for this class. Or rename it to some other name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1949353</commentid>
    <comment_count>16</comment_count>
      <attachid>465955</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2023-04-17 19:46:27 -0700</bug_when>
    <thetext>Created attachment 465955
Patch to replace UUID with WTF::UUID

I created a patch to replace UUID with WTF::UUID, but check-webkit-style complains for this patch.
&gt; ERROR: Source/WebKit/Shared/Notifications/NotificationManagerMessageHandler.messages.in:26:  Line contains WTF:: prefix.  [build/messagesin/wtf] [5]

I&apos;m going to create another patch with the first approach and &quot;#if OS(WINDOWS)&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1949359</commentid>
    <comment_count>17</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2023-04-17 20:27:29 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/12843</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1965044</commentid>
    <comment_count>18</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2023-07-04 18:39:08 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/15553</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1965443</commentid>
    <comment_count>19</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2023-07-06 15:18:30 -0700</bug_when>
    <thetext>Committed 265828@main (d8d3aef8dff8): &lt;https://commits.webkit.org/265828@main&gt;

Reviewed commits have been landed. Closing PR #15553 and removing active labels.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>447994</attachid>
            <date>2021-12-26 17:03:23 -0800</date>
            <delta_ts>2021-12-26 17:03:23 -0800</delta_ts>
            <desc>repro</desc>
            <filename>a.cpp</filename>
            <type>text/plain</type>
            <size>142</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">c3RydWN0IF9HVUlEIHsKICAgIGludCB4Owp9OwoKdHlwZWRlZiBfR1VJRCBVVUlEOwoKbmFtZXNw
YWNlIFdURiB7CnN0cnVjdCBVVUlEIHsKICAgIGludCB5Owp9Owp9CnVzaW5nIFdURjo6VVVJRDsK
CmludCBtYWluKCkKewogICAgVVVJRCB4Owp9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455038</attachid>
            <date>2022-03-17 15:40:49 -0700</date>
            <delta_ts>2023-04-17 13:10:49 -0700</delta_ts>
            <desc>workaround patch</desc>
            <filename>uuid.patch</filename>
            <type>text/plain</type>
            <size>1272</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VVSUQuaCBiL1NvdXJjZS9XVEYvd3RmL1VVSUQu
aAppbmRleCBkYWZkNmVhYWRhMzEuLjBhMWQxNmMzYjgyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvVVVJRC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VVSUQuaApAQCAtMTU3LDMgKzE1Nywx
NiBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1ZlcnNpb240VVVJRChTdHJpbmdWaWV3KTsK
IHVzaW5nIFdURjo6VVVJRDsKIHVzaW5nIFdURjo6Y3JlYXRlVmVyc2lvbjRVVUlEU3RyaW5nOwog
dXNpbmcgV1RGOjpib290U2Vzc2lvblVVSURTdHJpbmc7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K3VzaW5nIFdURjo6VVVJRDsKK30KK25hbWVzcGFjZSBXZWJLaXQgewordXNpbmcgV1RGOjpVVUlE
OworfQorbmFtZXNwYWNlIE1lc3NhZ2VzIHsKK3VzaW5nIFdURjo6VVVJRDsKK30KK25hbWVzcGFj
ZSBXVFIgewordXNpbmcgV1RGOjpVVUlEOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggZDUzOGRiNTQw
Nzc5Li4zZmM3NWJlMWRhY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmNwcApAQCAtNjEsNyArNjEsNyBAQCB2b2lk
IFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb25fYihXS05v
dGlmaWNhdGlvbk1hbmFnZXJSZQogICAgIGlmIChzcGFuLnNpemUoKSAhPSAxNikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgdG9JbXBsKG1hbmFnZXJSZWYpLT5wcm92aWRlckRpZENsaWNrTm90aWZp
Y2F0aW9uKFVVSUQgeyBTcGFuPGNvbnN0IHVpbnQ4X3QsIDE2PiB7IHNwYW4uZGF0YSgpLCAxNiB9
IH0pOworICAgIHRvSW1wbChtYW5hZ2VyUmVmKS0+cHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlv
bihXVEY6OlVVSUQgeyBTcGFuPGNvbnN0IHVpbnQ4X3QsIDE2PiB7IHNwYW4uZGF0YSgpLCAxNiB9
IH0pOwogfQogCiB2b2lkIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkQ2xvc2VOb3Rp
ZmljYXRpb25zKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBtYW5hZ2VyUmVmLCBXS0FycmF5UmVm
IG5vdGlmaWNhdGlvbklEcykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>465955</attachid>
            <date>2023-04-17 19:46:27 -0700</date>
            <delta_ts>2023-04-17 19:46:27 -0700</delta_ts>
            <desc>Patch to replace UUID with WTF::UUID</desc>
            <filename>Bug234696-Stop-using-WTF-UUID.diff</filename>
            <type>text/plain</type>
            <size>107826</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaCBiL1NvdXJjZS9XVEYvd3RmL0Zv
cndhcmQuaAppbmRleCBiOWUwMWQxMjY5ODYuLjJmMDNkOTkwNTZmYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvRm9yd2FyZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaApAQCAt
MjMsMTEgKzIzLDYgQEAKICNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDx3dGYvUGxhdGZv
cm0uaD4KIAotLy8gSW5jbHVkZSA8d2luZG93cy5oPiBiZWZvcmUgInVzaW5nIFdURjo6VVVJRCIg
dG8gYXZvaWQgY29uZmxpY3RzIHdpdGggVVVJRCBpbiBXaW5kb3dzIGhlYWRlcnMuCi0jaWYgT1Mo
V0lORE9XUykKLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdURiB7
CiAKIGNsYXNzIEFTQ0lJTGl0ZXJhbDsKQEAgLTE4MSw3ICsxNzYsNiBAQCB1c2luZyBXVEY6OlN1
c3BlbmRhYmxlV29ya1F1ZXVlOwogdXNpbmcgV1RGOjpUZXh0UG9zaXRpb247CiB1c2luZyBXVEY6
OlRleHRTdHJlYW07CiB1c2luZyBXVEY6OlVSTDsKLXVzaW5nIFdURjo6VVVJRDsKIHVzaW5nIFdU
Rjo6VW5pcXVlUmVmOwogdXNpbmcgV1RGOjpWZWN0b3I7CiB1c2luZyBXVEY6OldlYWtQdHI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
LmgKaW5kZXggMDhiNGY5YWJkZDk2Li5lZmEzNDk3NmQyZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKQEAgLTExMSw3ICsx
MTEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYXJrQXNTaG93bigpOwogICAgIHZvaWQgc2hvd1Nv
b24oKTsKIAotICAgIFVVSUQgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmll
cjsgfQorICAgIFdURjo6VVVJRCBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlm
aWVyOyB9CiAKICAgICBib29sIGlzUGVyc2lzdGVudCgpIGNvbnN0IHsgcmV0dXJuICFtX3NlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25VUkwuaXNOdWxsKCk7IH0KIApAQCAtMTM3LDcgKzEzNyw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyBkZXJlZigpOyB9
CiAgICAgdm9pZCBldmVudExpc3RlbmVyc0RpZENoYW5nZSgpIGZpbmFsOwogCi0gICAgVVVJRCBt
X2lkZW50aWZpZXI7CisgICAgV1RGOjpVVUlEIG1faWRlbnRpZmllcjsKIAogICAgIFN0cmluZyBt
X3RpdGxlOwogICAgIERpcmVjdGlvbiBtX2RpcmVjdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25EYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRGF0YS5oCmluZGV4IGY4
ZTAyMzMyZjYwMC4uMDY4OGE5ODQwNTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25EYXRhLmgKQEAgLTU4LDcgKzU4LDcg
QEAgc3RydWN0IE5vdGlmaWNhdGlvbkRhdGEgewogICAgIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRp
cmVjdGlvbiBkaXJlY3Rpb247CiAgICAgU3RyaW5nIG9yaWdpblN0cmluZzsKICAgICBVUkwgc2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvblVSTDsKLSAgICBVVUlEIG5vdGlmaWNhdGlvbklEOworICAg
IFdURjo6VVVJRCBub3RpZmljYXRpb25JRDsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRl
bnRpZmllciBjb250ZXh0SWRlbnRpZmllcjsKICAgICBQQUw6OlNlc3Npb25JRCBzb3VyY2VTZXNz
aW9uOwogICAgIE1vbm90b25pY1RpbWUgY3JlYXRpb25UaW1lOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkRhdGFDb2NvYS5tbSBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25EYXRhQ29j
b2EubW0KaW5kZXggNmRhNWMyY2Q4ZTAwLi44NDEzOTY2OTQ2YzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25EYXRhQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkRh
dGFDb2NvYS5tbQpAQCAtNTYsMTIgKzU2LDEyIEBAIHN0ZDo6b3B0aW9uYWw8Tm90aWZpY2F0aW9u
RGF0YT4gTm90aWZpY2F0aW9uRGF0YTo6ZnJvbURpY3Rpb25hcnkoTlNEaWN0aW9uYXJ5ICpkCiAg
ICAgTlNEYXRhICpub3RpZmljYXRpb25EYXRhID0gZGljdGlvbmFyeVtXZWJOb3RpZmljYXRpb25E
YXRhS2V5XTsKIAogICAgIFN0cmluZyB1dWlkU3RyaW5nID0gZGljdGlvbmFyeVtXZWJOb3RpZmlj
YXRpb25VVUlEU3RyaW5nS2V5XTsKLSAgICBhdXRvIHV1aWQgPSBVVUlEOjpwYXJzZVZlcnNpb240
KHV1aWRTdHJpbmcpOworICAgIGF1dG8gdXVpZCA9IFdURjo6VVVJRDo6cGFyc2VWZXJzaW9uNCh1
dWlkU3RyaW5nKTsKICAgICBpZiAoIXV1aWQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBTdHJpbmcgY29udGV4dFVVSURTdHJpbmcgPSBkaWN0aW9uYXJ5W1dlYk5vdGlmaWNh
dGlvbkNvbnRleHRVVUlEU3RyaW5nS2V5XTsKLSAgICBhdXRvIGNvbnRleHRVVUlEID0gVVVJRDo6
cGFyc2VWZXJzaW9uNChjb250ZXh0VVVJRFN0cmluZyk7CisgICAgYXV0byBjb250ZXh0VVVJRCA9
IFdURjo6VVVJRDo6cGFyc2VWZXJzaW9uNChjb250ZXh0VVVJRFN0cmluZyk7CiAgICAgaWYgKCFj
b250ZXh0VVVJRCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0SWRlbnRpZmllciBjb250ZXh0SWRlbnRpZmllcigqY29udGV4dFVVSUQsIFBy
b2Nlc3M6OmlkZW50aWZpZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3B1c2gtYXBpL1B1c2hEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gt
YXBpL1B1c2hEYXRhYmFzZS5jcHAKaW5kZXggY2FkNDE0YTMwZWJlLi5kMTNmOWIyYzg1NDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaERhdGFiYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hEYXRhYmFzZS5jcHAK
QEAgLTMzNyw3ICszMzcsNyBAQCBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29w
ZSBQdXNoRGF0YWJhc2U6OmJpbmRTdGF0ZW1lbnRPblF1ZXVlKEFTQ0lJTAogICAgIHJldHVybiBz
cWw7CiB9CiAKLXN0YXRpYyBTcGFuPGNvbnN0IHVpbnQ4X3Q+IHV1aWRUb1NwYW4oY29uc3Qgc3Rk
OjpvcHRpb25hbDxVVUlEPiYgdXVpZCkKK3N0YXRpYyBTcGFuPGNvbnN0IHVpbnQ4X3Q+IHV1aWRU
b1NwYW4oY29uc3Qgc3RkOjpvcHRpb25hbDxXVEY6OlVVSUQ+JiB1dWlkKQogewogICAgIGlmICgh
dXVpZCkgewogICAgICAgICAvLyBXZSBzdG9yZSBhIG51bGwgVVVJRCBhcyBhIHplcm8tbGVuZ3Ro
IGJsb2IgcmF0aGVyIHRoYW4gYSBTUUwgTlVMTC4gVGhpcyBpcyBiZWNhdXNlIHRoZQpAQCAtMzU0
LDEyICszNTQsMTIgQEAgc3RhdGljIFNwYW48Y29uc3QgdWludDhfdD4gdXVpZFRvU3Bhbihjb25z
dCBzdGQ6Om9wdGlvbmFsPFVVSUQ+JiB1dWlkKQogICAgIHJldHVybiB1dWlkLT50b1NwYW4oKTsK
IH0KIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8VVVJRD4gdXVpZEZyb21TcGFuKFNwYW48Y29uc3Qg
dWludDhfdD4gc3BhbikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFdURjo6VVVJRD4gdXVpZEZyb21T
cGFuKFNwYW48Y29uc3QgdWludDhfdD4gc3BhbikKIHsKICAgICBpZiAoc3Bhbi5zaXplKCkgIT0g
MTYpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4gVVVJRChzcGFu
LmZpcnN0PDE2PigpKTsKKyAgICByZXR1cm4gV1RGOjpVVUlEKHNwYW4uZmlyc3Q8MTY+KCkpOwog
fQogCiBzdGF0aWMgU1FMVmFsdWUgZXhwaXJhdGlvblRpbWVUb1ZhbHVlKHN0ZDo6b3B0aW9uYWw8
RXBvY2hUaW1lU3RhbXA+IHRpbWVzdGFtcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbklkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbklkZW50aWZpZXIuaAppbmRleCBk
NmQwYzA5ZTVmMTcuLjA0MWUzMmM0MjljNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9wdXNoLWFwaS9QdXNoU3Vic2NyaXB0aW9uSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaFN1YnNjcmlwdGlvbklkZW50aWZpZXIuaApAQCAt
MzksNyArMzksNyBAQCB1c2luZyBQdXNoU3Vic2NyaXB0aW9uSWRlbnRpZmllciA9IE9iamVjdElk
ZW50aWZpZXI8UHVzaFN1YnNjcmlwdGlvbklkZW50aWZpZXJUeQogc3RydWN0IFB1c2hTdWJzY3Jp
cHRpb25TZXRJZGVudGlmaWVyIHsKICAgICBTdHJpbmcgYnVuZGxlSWRlbnRpZmllcjsKICAgICBT
dHJpbmcgcHVzaFBhcnRpdGlvbjsKLSAgICBNYXJrYWJsZTxVVUlEPiBkYXRhU3RvcmVJZGVudGlm
aWVyOworICAgIE1hcmthYmxlPFdURjo6VVVJRD4gZGF0YVN0b3JlSWRlbnRpZmllcjsKIAogICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBQdXNoU3Vic2NyaXB0aW9uU2V0SWRlbnRpZmllciYpIGNv
bnN0OwogICAgIHZvaWQgYWRkKEhhc2hlciYsIGNvbnN0IFB1c2hTdWJzY3JpcHRpb25TZXRJZGVu
dGlmaWVyJik7CkBAIC0xMDgsNyArMTA4LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0
czxXZWJDb3JlOjpQdXNoU3Vic2NyaXB0aW9uU2V0SWRlbnRpZmllcj4gOiBHZW5lcmljSGEKICAg
ICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gZmFsc2U7CiAgICAgc3RhdGlj
IFdlYkNvcmU6OlB1c2hTdWJzY3JpcHRpb25TZXRJZGVudGlmaWVyIGVtcHR5VmFsdWUoKSB7IHJl
dHVybiB7IGVtcHR5U3RyaW5nKCksIGVtcHR5U3RyaW5nKCksIHN0ZDo6bnVsbG9wdCB9OyB9CiAK
LSAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoV2ViQ29yZTo6UHVzaFN1YnNj
cmlwdGlvblNldElkZW50aWZpZXImIHNsb3QpIHsgbmV3IChOb3ROdWxsLCAmc2xvdCkgV2ViQ29y
ZTo6UHVzaFN1YnNjcmlwdGlvblNldElkZW50aWZpZXIgeyBlbXB0eVN0cmluZygpLCBlbXB0eVN0
cmluZygpLCBVVUlEIHsgSGFzaFRhYmxlRGVsZXRlZFZhbHVlIH0gfTsgfQorICAgIHN0YXRpYyB2
b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJDb3JlOjpQdXNoU3Vic2NyaXB0aW9uU2V0SWRl
bnRpZmllciYgc2xvdCkgeyBuZXcgKE5vdE51bGwsICZzbG90KSBXZWJDb3JlOjpQdXNoU3Vic2Ny
aXB0aW9uU2V0SWRlbnRpZmllciB7IGVtcHR5U3RyaW5nKCksIGVtcHR5U3RyaW5nKCksIFdURjo6
VVVJRCB7IEhhc2hUYWJsZURlbGV0ZWRWYWx1ZSB9IH07IH0KICAgICBzdGF0aWMgYm9vbCBpc0Rl
bGV0ZWRWYWx1ZShjb25zdCBXZWJDb3JlOjpQdXNoU3Vic2NyaXB0aW9uU2V0SWRlbnRpZmllciYg
dmFsdWUpIHsgcmV0dXJuIHZhbHVlLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VU
cmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VU
cmFja2VyLmNwcAppbmRleCAwZmZlZjRjZTRjOTcuLmY4Y2NlMDMyOTQ0NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNw
cApAQCAtMzAwLDcgKzMwMCw3IEBAIFN0cmluZyBEYXRhYmFzZVRyYWNrZXI6Om9yaWdpblBhdGgo
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4pIGNvbnN0CiAKIHN0YXRpYyBTdHJpbmcg
Z2VuZXJhdGVEYXRhYmFzZUZpbGVOYW1lKCkKIHsKLSAgICByZXR1cm4gbWFrZVN0cmluZyhVVUlE
OjpjcmVhdGVWZXJzaW9uNCgpLCAiLmRiIl9zKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhXVEY6
OlVVSUQ6OmNyZWF0ZVZlcnNpb240KCksICIuZGIiX3MpOwogfQogCiBTdHJpbmcgRGF0YWJhc2VU
cmFja2VyOjpmdWxsUGF0aEZvckRhdGFiYXNlTm9Mb2NrKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0
YSYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgY3JlYXRlSWZOb3RFeGlzdHMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcAppbmRleCAzYzZhNDUw
MDc0OTEuLmZmYzFjNWI0YjZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L0tleWZyYW1lRWZmZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJh
bWVFZmZlY3QuY3BwCkBAIC01OTIsNyArNTkyLDcgQEAgUmVmPEtleWZyYW1lRWZmZWN0PiBLZXlm
cmFtZUVmZmVjdDo6Y3JlYXRlKGNvbnN0IEVsZW1lbnQmIHRhcmdldCwgUHNldWRvSWQgcHNldWQK
IH0KIAogS2V5ZnJhbWVFZmZlY3Q6OktleWZyYW1lRWZmZWN0KEVsZW1lbnQqIHRhcmdldCwgUHNl
dWRvSWQgcHNldWRvSWQpCi0gICAgOiBtX2tleWZyYW1lc05hbWUobWFrZUF0b21TdHJpbmcoImtl
eWZyYW1lLWVmZmVjdC0iX3MsIFVVSUQ6OmNyZWF0ZVZlcnNpb240V2VhaygpKSkKKyAgICA6IG1f
a2V5ZnJhbWVzTmFtZShtYWtlQXRvbVN0cmluZygia2V5ZnJhbWUtZWZmZWN0LSJfcywgV1RGOjpV
VUlEOjpjcmVhdGVWZXJzaW9uNFdlYWsoKSkpCiAgICAgLCBtX3RhcmdldCh0YXJnZXQpCiAgICAg
LCBtX3BzZXVkb0lkKHBzZXVkb0lkKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNDNi
MzM0NTRmYTEzLi45MDM1NDJmYWJjMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNjQ2
Myw3ICs2NDYzLDcgQEAgU3RyaW5nIERvY3VtZW50OjpvcmlnaW5JZGVudGlmaWVyRm9yUGFzdGVi
b2FyZCgpIGNvbnN0CiAgICAgaWYgKG9yaWdpbiAhPSAibnVsbCJfcykKICAgICAgICAgcmV0dXJu
IG9yaWdpbjsKICAgICBpZiAoIW1fdW5pcXVlSWRlbnRpZmllcikKLSAgICAgICAgbV91bmlxdWVJ
ZGVudGlmaWVyID0gbWFrZVN0cmluZygibnVsbDoiX3MsIFVVSUQ6OmNyZWF0ZVZlcnNpb240KCkp
OworICAgICAgICBtX3VuaXF1ZUlkZW50aWZpZXIgPSBtYWtlU3RyaW5nKCJudWxsOiJfcywgV1RG
OjpVVUlEOjpjcmVhdGVWZXJzaW9uNCgpKTsKICAgICByZXR1cm4gbV91bmlxdWVJZGVudGlmaWVy
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmNwcAppbmRl
eCA5OGE2M2JiYjViN2MuLjQzZDg1MGJkZmNjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVXNl
ckdlc3R1cmVJbmRpY2F0b3IuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHN0YXRpYyBSZWZQdHI8VXNl
ckdlc3R1cmVUb2tlbj4mIGN1cnJlbnRUb2tlbigpCiAgICAgcmV0dXJuIHRva2VuOwogfQogCi1V
c2VyR2VzdHVyZVRva2VuOjpVc2VyR2VzdHVyZVRva2VuKFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0
YXRlIHN0YXRlLCBVc2VyR2VzdHVyZVR5cGUgZ2VzdHVyZVR5cGUsIERvY3VtZW50KiBkb2N1bWVu
dCwgc3RkOjpvcHRpb25hbDxVVUlEPiBhdXRob3JpemF0aW9uVG9rZW4pCitVc2VyR2VzdHVyZVRv
a2VuOjpVc2VyR2VzdHVyZVRva2VuKFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlIHN0YXRlLCBV
c2VyR2VzdHVyZVR5cGUgZ2VzdHVyZVR5cGUsIERvY3VtZW50KiBkb2N1bWVudCwgc3RkOjpvcHRp
b25hbDxXVEY6OlVVSUQ+IGF1dGhvcml6YXRpb25Ub2tlbikKICAgICA6IG1fc3RhdGUoc3RhdGUp
CiAgICAgLCBtX2dlc3R1cmVUeXBlKGdlc3R1cmVUeXBlKQogICAgICwgbV9hdXRob3JpemF0aW9u
VG9rZW4oYXV0aG9yaXphdGlvblRva2VuKQpAQCAtMTAxLDcgKzEwMSw3IEBAIGJvb2wgVXNlckdl
c3R1cmVUb2tlbjo6aXNWYWxpZEZvckRvY3VtZW50KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkg
Y29uc3QKICAgICByZXR1cm4gbV9kb2N1bWVudHNJbXBhY3RlZEJ5VXNlckdlc3R1cmUuY29udGFp
bnMoZG9jdW1lbnQpOwogfQogCi1Vc2VyR2VzdHVyZUluZGljYXRvcjo6VXNlckdlc3R1cmVJbmRp
Y2F0b3Ioc3RkOjpvcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4gc3RhdGUsIERv
Y3VtZW50KiBkb2N1bWVudCwgVXNlckdlc3R1cmVUeXBlIGdlc3R1cmVUeXBlLCBQcm9jZXNzSW50
ZXJhY3Rpb25TdHlsZSBwcm9jZXNzSW50ZXJhY3Rpb25TdHlsZSwgc3RkOjpvcHRpb25hbDxVVUlE
PiBhdXRob3JpemF0aW9uVG9rZW4pCitVc2VyR2VzdHVyZUluZGljYXRvcjo6VXNlckdlc3R1cmVJ
bmRpY2F0b3Ioc3RkOjpvcHRpb25hbDxQcm9jZXNzaW5nVXNlckdlc3R1cmVTdGF0ZT4gc3RhdGUs
IERvY3VtZW50KiBkb2N1bWVudCwgVXNlckdlc3R1cmVUeXBlIGdlc3R1cmVUeXBlLCBQcm9jZXNz
SW50ZXJhY3Rpb25TdHlsZSBwcm9jZXNzSW50ZXJhY3Rpb25TdHlsZSwgc3RkOjpvcHRpb25hbDxX
VEY6OlVVSUQ+IGF1dGhvcml6YXRpb25Ub2tlbikKICAgICA6IG1fcHJldmlvdXNUb2tlbiB7IGN1
cnJlbnRUb2tlbigpIH0KIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAtMTg3LDcg
KzE4Nyw3IEBAIGJvb2wgVXNlckdlc3R1cmVJbmRpY2F0b3I6OnByb2Nlc3NpbmdVc2VyR2VzdHVy
ZUZvck1lZGlhKCkKICAgICByZXR1cm4gY3VycmVudFRva2VuKCkgPyBjdXJyZW50VG9rZW4oKS0+
cHJvY2Vzc2luZ1VzZXJHZXN0dXJlRm9yTWVkaWEoKSA6IGZhbHNlOwogfQogCi1zdGQ6Om9wdGlv
bmFsPFVVSUQ+IFVzZXJHZXN0dXJlSW5kaWNhdG9yOjphdXRob3JpemF0aW9uVG9rZW4oKSBjb25z
dAorc3RkOjpvcHRpb25hbDxXVEY6OlVVSUQ+IFVzZXJHZXN0dXJlSW5kaWNhdG9yOjphdXRob3Jp
emF0aW9uVG9rZW4oKSBjb25zdAogewogICAgIGlmICghaXNNYWluVGhyZWFkKCkpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVXNl
ckdlc3R1cmVJbmRpY2F0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyR2VzdHVyZUluZGlj
YXRvci5oCmluZGV4IDllZjNlNGYwODQwNS4uMjA3MGFlOTkwMTQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vVXNlckdlc3R1cmVJbmRpY2F0b3IuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIGNvbnN0IFNlY29uZHMmIG1heGltdW1JbnRlcnZhbEZvclVzZXJHZXN0dXJlRm9y
d2FyZGluZ0ZvckZldGNoKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0TWF4
aW11bUludGVydmFsRm9yVXNlckdlc3R1cmVGb3J3YXJkaW5nRm9yRmV0Y2hGb3JUZXN0aW5nKFNl
Y29uZHMpOwogCi0gICAgc3RhdGljIFJlZjxVc2VyR2VzdHVyZVRva2VuPiBjcmVhdGUoUHJvY2Vz
c2luZ1VzZXJHZXN0dXJlU3RhdGUgc3RhdGUsIFVzZXJHZXN0dXJlVHlwZSBnZXN0dXJlVHlwZSwg
RG9jdW1lbnQqIGRvY3VtZW50ID0gbnVsbHB0ciwgc3RkOjpvcHRpb25hbDxVVUlEPiBhdXRob3Jp
emF0aW9uVG9rZW4gPSBzdGQ6Om51bGxvcHQpCisgICAgc3RhdGljIFJlZjxVc2VyR2VzdHVyZVRv
a2VuPiBjcmVhdGUoUHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGUgc3RhdGUsIFVzZXJHZXN0dXJl
VHlwZSBnZXN0dXJlVHlwZSwgRG9jdW1lbnQqIGRvY3VtZW50ID0gbnVsbHB0ciwgc3RkOjpvcHRp
b25hbDxXVEY6OlVVSUQ+IGF1dGhvcml6YXRpb25Ub2tlbiA9IHN0ZDo6bnVsbG9wdCkKICAgICB7
CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFVzZXJHZXN0dXJlVG9rZW4oc3RhdGUsIGdl
c3R1cmVUeXBlLCBkb2N1bWVudCwgYXV0aG9yaXphdGlvblRva2VuKSk7CiAgICAgfQpAQCAtMTA0
LDEyICsxMDQsMTIgQEAgcHVibGljOgogCiAgICAgTW9ub3RvbmljVGltZSBzdGFydFRpbWUoKSBj
b25zdCB7IHJldHVybiBtX3N0YXJ0VGltZTsgfQogCi0gICAgc3RkOjpvcHRpb25hbDxVVUlEPiBh
dXRob3JpemF0aW9uVG9rZW4oKSBjb25zdCB7IHJldHVybiBtX2F1dGhvcml6YXRpb25Ub2tlbjsg
fQorICAgIHN0ZDo6b3B0aW9uYWw8V1RGOjpVVUlEPiBhdXRob3JpemF0aW9uVG9rZW4oKSBjb25z
dCB7IHJldHVybiBtX2F1dGhvcml6YXRpb25Ub2tlbjsgfQogCiAgICAgYm9vbCBpc1ZhbGlkRm9y
RG9jdW1lbnQoY29uc3QgRG9jdW1lbnQmKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBVc2VyR2Vz
dHVyZVRva2VuKFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlLCBVc2VyR2VzdHVyZVR5cGUsIERv
Y3VtZW50Kiwgc3RkOjpvcHRpb25hbDxVVUlEPiBhdXRob3JpemF0aW9uVG9rZW4pOworICAgIFVz
ZXJHZXN0dXJlVG9rZW4oUHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGUsIFVzZXJHZXN0dXJlVHlw
ZSwgRG9jdW1lbnQqLCBzdGQ6Om9wdGlvbmFsPFdURjo6VVVJRD4gYXV0aG9yaXphdGlvblRva2Vu
KTsKIAogICAgIFByb2Nlc3NpbmdVc2VyR2VzdHVyZVN0YXRlIG1fc3RhdGUgPSBOb3RQcm9jZXNz
aW5nVXNlckdlc3R1cmU7CiAgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQoVXNlckdlc3R1cmVUb2tl
biYpPj4gbV9kZXN0cnVjdGlvbk9ic2VydmVyczsKQEAgLTExOSw3ICsxMTksNyBAQCBwcml2YXRl
OgogICAgIEdlc3R1cmVTY29wZSBtX3Njb3BlIHsgR2VzdHVyZVNjb3BlOjpBbGwgfTsKICAgICBN
b25vdG9uaWNUaW1lIG1fc3RhcnRUaW1lIHsgTW9ub3RvbmljVGltZTo6bm93KCkgfTsKICAgICBJ
c1Byb3BhZ2F0ZWRGcm9tRmV0Y2ggbV9pc1Byb3BhZ2F0ZWRGcm9tRmV0Y2ggeyBJc1Byb3BhZ2F0
ZWRGcm9tRmV0Y2g6Ok5vIH07Ci0gICAgc3RkOjpvcHRpb25hbDxVVUlEPiBtX2F1dGhvcml6YXRp
b25Ub2tlbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdURjo6VVVJRD4gbV9hdXRob3JpemF0aW9uVG9r
ZW47CiB9OwogCiBjbGFzcyBVc2VyR2VzdHVyZUluZGljYXRvciB7CkBAIC0xMzMsMTEgKzEzMywx
MSBAQCBwdWJsaWM6CiAKICAgICAvLyBJZiBhIGRvY3VtZW50IGlzIHByb3ZpZGVkLCBpdHMgbGFz
dCBrbm93biB1c2VyIGdlc3R1cmUgdGltZXN0YW1wIGlzIHVwZGF0ZWQuCiAgICAgZW51bSBjbGFz
cyBQcm9jZXNzSW50ZXJhY3Rpb25TdHlsZSB7IEltbWVkaWF0ZSwgRGVsYXllZCB9OwotICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IFVzZXJHZXN0dXJlSW5kaWNhdG9yKHN0ZDo6b3B0aW9uYWw8
UHJvY2Vzc2luZ1VzZXJHZXN0dXJlU3RhdGU+LCBEb2N1bWVudCogPSBudWxscHRyLCBVc2VyR2Vz
dHVyZVR5cGUgPSBVc2VyR2VzdHVyZVR5cGU6Ok90aGVyLCBQcm9jZXNzSW50ZXJhY3Rpb25TdHls
ZSA9IFByb2Nlc3NJbnRlcmFjdGlvblN0eWxlOjpJbW1lZGlhdGUsIHN0ZDo6b3B0aW9uYWw8VVVJ
RD4gYXV0aG9yaXphdGlvblRva2VuID0gc3RkOjpudWxsb3B0KTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBleHBsaWNpdCBVc2VyR2VzdHVyZUluZGljYXRvcihzdGQ6Om9wdGlvbmFsPFByb2Nlc3NpbmdV
c2VyR2VzdHVyZVN0YXRlPiwgRG9jdW1lbnQqID0gbnVsbHB0ciwgVXNlckdlc3R1cmVUeXBlID0g
VXNlckdlc3R1cmVUeXBlOjpPdGhlciwgUHJvY2Vzc0ludGVyYWN0aW9uU3R5bGUgPSBQcm9jZXNz
SW50ZXJhY3Rpb25TdHlsZTo6SW1tZWRpYXRlLCBzdGQ6Om9wdGlvbmFsPFdURjo6VVVJRD4gYXV0
aG9yaXphdGlvblRva2VuID0gc3RkOjpudWxsb3B0KTsKICAgICBXRUJDT1JFX0VYUE9SVCBleHBs
aWNpdCBVc2VyR2VzdHVyZUluZGljYXRvcihSZWZQdHI8VXNlckdlc3R1cmVUb2tlbj4sIFVzZXJH
ZXN0dXJlVG9rZW46Okdlc3R1cmVTY29wZSA9IFVzZXJHZXN0dXJlVG9rZW46Okdlc3R1cmVTY29w
ZTo6QWxsLCBVc2VyR2VzdHVyZVRva2VuOjpJc1Byb3BhZ2F0ZWRGcm9tRmV0Y2ggPSBVc2VyR2Vz
dHVyZVRva2VuOjpJc1Byb3BhZ2F0ZWRGcm9tRmV0Y2g6Ok5vKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB+VXNlckdlc3R1cmVJbmRpY2F0b3IoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0
aW9uYWw8VVVJRD4gYXV0aG9yaXphdGlvblRva2VuKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RkOjpvcHRpb25hbDxXVEY6OlVVSUQ+IGF1dGhvcml6YXRpb25Ub2tlbigpIGNvbnN0Owog
CiBwcml2YXRlOgogICAgIFJlZlB0cjxVc2VyR2VzdHVyZVRva2VuPiBtX3ByZXZpb3VzVG9rZW47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuY3BwIGIvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmNwcAppbmRleCBlM2M5ZDA5NDQxY2UuLjU5MTQzNWU2
MjM2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iVVJMLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JVUkwuY3BwCkBAIC05Miw3ICs5Miw3IEBAIGJv
b2wgQmxvYlVSTDo6aXNTZWN1cmVCbG9iVVJMKGNvbnN0IFVSTCYgdXJsKQogVVJMIEJsb2JVUkw6
OmNyZWF0ZUJsb2JVUkwoU3RyaW5nVmlldyBvcmlnaW5TdHJpbmcpCiB7CiAgICAgQVNTRVJUKCFv
cmlnaW5TdHJpbmcuaXNFbXB0eSgpKTsKLSAgICBTdHJpbmcgdXJsU3RyaW5nID0gbWFrZVN0cmlu
ZygiYmxvYjoiX3MsIG9yaWdpblN0cmluZywgJy8nLCBVVUlEOjpjcmVhdGVWZXJzaW9uNCgpKTsK
KyAgICBTdHJpbmcgdXJsU3RyaW5nID0gbWFrZVN0cmluZygiYmxvYjoiX3MsIG9yaWdpblN0cmlu
ZywgJy8nLCBXVEY6OlVVSUQ6OmNyZWF0ZVZlcnNpb240KCkpOwogICAgIHJldHVybiBVUkwoeyB9
LCB1cmxTdHJpbmcpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRmV0
Y2hPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRmV0Y2hPcHRpb25zLmgKaW5kZXgg
YTRkODAwZGRiZGRhLi40ZjJmNmViMDM4NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GZXRjaE9wdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRmV0Y2hPcHRp
b25zLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RydWN0IEZldGNoT3B0aW9ucyB7CiAgICAgdXNpbmcg
UmVkaXJlY3QgPSBGZXRjaE9wdGlvbnNSZWRpcmVjdDsKIAogICAgIEZldGNoT3B0aW9ucygpID0g
ZGVmYXVsdDsKLSAgICBGZXRjaE9wdGlvbnMoRGVzdGluYXRpb24sIE1vZGUsIENyZWRlbnRpYWxz
LCBDYWNoZSwgUmVkaXJlY3QsIFJlZmVycmVyUG9saWN5LCBib29sLCBTdHJpbmcmJiwgTWFya2Fi
bGU8VVVJRD4sIE1hcmthYmxlPFVVSUQ+KTsKKyAgICBGZXRjaE9wdGlvbnMoRGVzdGluYXRpb24s
IE1vZGUsIENyZWRlbnRpYWxzLCBDYWNoZSwgUmVkaXJlY3QsIFJlZmVycmVyUG9saWN5LCBib29s
LCBTdHJpbmcmJiwgTWFya2FibGU8V1RGOjpVVUlEPiwgTWFya2FibGU8V1RGOjpVVUlEPik7CiAg
ICAgRmV0Y2hPcHRpb25zIGlzb2xhdGVkQ29weSgpIGNvbnN0ICYgeyByZXR1cm4geyBkZXN0aW5h
dGlvbiwgbW9kZSwgY3JlZGVudGlhbHMsIGNhY2hlLCByZWRpcmVjdCwgcmVmZXJyZXJQb2xpY3ks
IGtlZXBBbGl2ZSwgaW50ZWdyaXR5Lmlzb2xhdGVkQ29weSgpLCBjbGllbnRJZGVudGlmaWVyLCBy
ZXN1bHRpbmdDbGllbnRJZGVudGlmaWVyIH07IH0KICAgICBGZXRjaE9wdGlvbnMgaXNvbGF0ZWRD
b3B5KCkgJiYgeyByZXR1cm4geyBkZXN0aW5hdGlvbiwgbW9kZSwgY3JlZGVudGlhbHMsIGNhY2hl
LCByZWRpcmVjdCwgcmVmZXJyZXJQb2xpY3ksIGtlZXBBbGl2ZSwgV1RGTW92ZShpbnRlZ3JpdHkp
Lmlzb2xhdGVkQ29weSgpLCBjbGllbnRJZGVudGlmaWVyLCByZXN1bHRpbmdDbGllbnRJZGVudGlm
aWVyIH07IH0KIApAQCAtNjQsMTEgKzY0LDExIEBAIHN0cnVjdCBGZXRjaE9wdGlvbnMgewogICAg
IFJlZmVycmVyUG9saWN5IHJlZmVycmVyUG9saWN5IHsgUmVmZXJyZXJQb2xpY3k6OkVtcHR5U3Ry
aW5nIH07CiAgICAgYm9vbCBrZWVwQWxpdmUgeyBmYWxzZSB9OwogICAgIFN0cmluZyBpbnRlZ3Jp
dHk7Ci0gICAgTWFya2FibGU8VVVJRD4gY2xpZW50SWRlbnRpZmllcjsgLy8gSWRlbnRpZmllciBv
ZiBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC1yZXF1ZXN0LWNsaWVudAot
ICAgIE1hcmthYmxlPFVVSUQ+IHJlc3VsdGluZ0NsaWVudElkZW50aWZpZXI7IC8vIElkZW50aWZp
ZXIgb2YgaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtcmVxdWVzdC1yZXNl
cnZlZC1jbGllbnQKKyAgICBNYXJrYWJsZTxXVEY6OlVVSUQ+IGNsaWVudElkZW50aWZpZXI7IC8v
IElkZW50aWZpZXIgb2YgaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtcmVx
dWVzdC1jbGllbnQKKyAgICBNYXJrYWJsZTxXVEY6OlVVSUQ+IHJlc3VsdGluZ0NsaWVudElkZW50
aWZpZXI7IC8vIElkZW50aWZpZXIgb2YgaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI2Nv
bmNlcHQtcmVxdWVzdC1yZXNlcnZlZC1jbGllbnQKIH07CiAKLWlubGluZSBGZXRjaE9wdGlvbnM6
OkZldGNoT3B0aW9ucyhEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbiwgTW9kZSBtb2RlLCBDcmVkZW50
aWFscyBjcmVkZW50aWFscywgQ2FjaGUgY2FjaGUsIFJlZGlyZWN0IHJlZGlyZWN0LCBSZWZlcnJl
clBvbGljeSByZWZlcnJlclBvbGljeSwgYm9vbCBrZWVwQWxpdmUsIFN0cmluZyYmIGludGVncml0
eSwgTWFya2FibGU8VVVJRD4gY2xpZW50SWRlbnRpZmllciwgTWFya2FibGU8VVVJRD4gcmVzdWx0
aW5nQ2xpZW50SWRlbnRpZmllcikKK2lubGluZSBGZXRjaE9wdGlvbnM6OkZldGNoT3B0aW9ucyhE
ZXN0aW5hdGlvbiBkZXN0aW5hdGlvbiwgTW9kZSBtb2RlLCBDcmVkZW50aWFscyBjcmVkZW50aWFs
cywgQ2FjaGUgY2FjaGUsIFJlZGlyZWN0IHJlZGlyZWN0LCBSZWZlcnJlclBvbGljeSByZWZlcnJl
clBvbGljeSwgYm9vbCBrZWVwQWxpdmUsIFN0cmluZyYmIGludGVncml0eSwgTWFya2FibGU8V1RG
OjpVVUlEPiBjbGllbnRJZGVudGlmaWVyLCBNYXJrYWJsZTxXVEY6OlVVSUQ+IHJlc3VsdGluZ0Ns
aWVudElkZW50aWZpZXIpCiAgICAgOiBkZXN0aW5hdGlvbihkZXN0aW5hdGlvbikKICAgICAsIG1v
ZGUobW9kZSkKICAgICAsIGNyZWRlbnRpYWxzKGNyZWRlbnRpYWxzKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5j
cHAKaW5kZXggN2JhMTlmM2E4ZWJhLi41NjM0MTFiOTJmOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNw
cApAQCAtMTI3OSw3ICsxMjc5LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6d3Jp
dGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJlY3RvcnkoRnJhZ21lbnRlZFNoYXJlZEIKICAgICBTdHJp
bmcgZnVsbFBhdGg7CiAgICAgCiAgICAgZG8gewotICAgICAgICBwYXRoID0gbWFrZVN0cmluZyhV
VUlEOjpjcmVhdGVWZXJzaW9uNCgpLCBmaWxlRXh0ZW5zaW9uKTsKKyAgICAgICAgcGF0aCA9IG1h
a2VTdHJpbmcoV1RGOjpVVUlEOjpjcmVhdGVWZXJzaW9uNCgpLCBmaWxlRXh0ZW5zaW9uKTsKICAg
ICAgICAgaWYgKHBhdGguaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtRXZlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtRXZlbnQuaAppbmRleCAwZDE3YzNm
ODVkNWMuLjZmNTJlOWRmNTcxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGxhdGZvcm1FdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtRXZl
bnQuaApAQCAtMTAzLDcgKzEwMyw3IEBAIHB1YmxpYzoKICAgICBPcHRpb25TZXQ8TW9kaWZpZXI+
IG1vZGlmaWVycygpIGNvbnN0IHsgcmV0dXJuIG1fbW9kaWZpZXJzOyB9CiAKICAgICBXYWxsVGlt
ZSB0aW1lc3RhbXAoKSBjb25zdCB7IHJldHVybiBtX3RpbWVzdGFtcDsgfQotICAgIHN0ZDo6b3B0
aW9uYWw8VVVJRD4gYXV0aG9yaXphdGlvblRva2VuKCkgY29uc3QgeyByZXR1cm4gbV9hdXRob3Jp
emF0aW9uVG9rZW47IH07CisgICAgc3RkOjpvcHRpb25hbDxXVEY6OlVVSUQ+IGF1dGhvcml6YXRp
b25Ub2tlbigpIGNvbnN0IHsgcmV0dXJuIG1fYXV0aG9yaXphdGlvblRva2VuOyB9OwogCiBwcm90
ZWN0ZWQ6CiAgICAgUGxhdGZvcm1FdmVudCgpCkBAIC0xNDQsNyArMTQ0LDcgQEAgcHJvdGVjdGVk
OgogICAgIFdhbGxUaW1lIG1fdGltZXN0YW1wOwogICAgIFR5cGUgbV90eXBlOwogICAgIE9wdGlv
blNldDxNb2RpZmllcj4gbV9tb2RpZmllcnM7Ci0gICAgc3RkOjpvcHRpb25hbDxVVUlEPiBtX2F1
dGhvcml6YXRpb25Ub2tlbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdURjo6VVVJRD4gbV9hdXRob3Jp
emF0aW9uVG9rZW47CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZp
ZXIuaAppbmRleCA4ZGY2MDViMmQxNjMuLjI2YTc4OTVkZjY0NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmll
ci5oCkBAIC0zMiwxNiArMzIsMTYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdGVtcGxhdGUg
PD4KLWNsYXNzIFByb2Nlc3NRdWFsaWZpZWQ8VVVJRD4geworY2xhc3MgUHJvY2Vzc1F1YWxpZmll
ZDxXVEY6OlVVSUQ+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUHJvY2Vzc1F1YWxpZmllZCBnZW5l
cmF0ZSgpIHsgcmV0dXJuIHsgVVVJRDo6Y3JlYXRlVmVyc2lvbjQoKSwgUHJvY2Vzczo6aWRlbnRp
ZmllcigpIH07IH0KKyAgICBzdGF0aWMgUHJvY2Vzc1F1YWxpZmllZCBnZW5lcmF0ZSgpIHsgcmV0
dXJuIHsgV1RGOjpVVUlEOjpjcmVhdGVWZXJzaW9uNCgpLCBQcm9jZXNzOjppZGVudGlmaWVyKCkg
fTsgfQogCiAgICAgUHJvY2Vzc1F1YWxpZmllZCgpCi0gICAgICAgIDogbV9vYmplY3QoVVVJRDo6
ZW1wdHlWYWx1ZSkKKyAgICAgICAgOiBtX29iamVjdChXVEY6OlVVSUQ6OmVtcHR5VmFsdWUpCiAg
ICAgewogICAgIH0KIAotICAgIFByb2Nlc3NRdWFsaWZpZWQoVVVJRCBvYmplY3QsIFByb2Nlc3NJ
ZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKQorICAgIFByb2Nlc3NRdWFsaWZpZWQoV1RGOjpV
VUlEIG9iamVjdCwgUHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIpCiAgICAgICAg
IDogbV9vYmplY3QoV1RGTW92ZShvYmplY3QpKQogICAgICAgICAsIG1fcHJvY2Vzc0lkZW50aWZp
ZXIocHJvY2Vzc0lkZW50aWZpZXIpCiAgICAgewpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAK
ICAgICBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX29iamVjdDsgfQogCi0gICAg
Y29uc3QgVVVJRCYgb2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3Q7IH0KKyAgICBjb25z
dCBXVEY6OlVVSUQmIG9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0OyB9CiAgICAgUHJv
Y2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nl
c3NJZGVudGlmaWVyOyB9CiAKICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29u
c3QgeyByZXR1cm4gbV9wcm9jZXNzSWRlbnRpZmllci5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgp
OyB9CkBAIC02OSwxOSArNjksMTkgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIERl
Y29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb2Nlc3NRdWFsaWZpZWQ+IGRlY29kZShEZWNv
ZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgVVVJRCBtX29iamVjdDsKKyAgICBXVEY6OlVVSUQgbV9v
YmplY3Q7CiAgICAgUHJvY2Vzc0lkZW50aWZpZXIgbV9wcm9jZXNzSWRlbnRpZmllcjsKIH07CiAK
LWlubGluZSB2b2lkIGFkZChIYXNoZXImIGhhc2hlciwgY29uc3QgUHJvY2Vzc1F1YWxpZmllZDxV
VUlEPiYgdXVpZCkKK2lubGluZSB2b2lkIGFkZChIYXNoZXImIGhhc2hlciwgY29uc3QgUHJvY2Vz
c1F1YWxpZmllZDxXVEY6OlVVSUQ+JiB1dWlkKQogewogICAgIC8vIFNpbmNlIFVVSURzIGFyZSB1
bmlxdWUgb24gdGhlaXIgb3duLCBvcHRpbWl6ZSBieSBub3QgaGFzaGluZyB0aGUgcHJvY2VzcyBp
ZGVudGlmaWVyLgogICAgIGFkZChoYXNoZXIsIHV1aWQub2JqZWN0KCkpOwogfQogCi10ZW1wbGF0
ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFsPFByb2Nlc3NRdWFsaWZpZWQ8VVVJRD4+
IFByb2Nlc3NRdWFsaWZpZWQ8VVVJRD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQordGVtcGxh
dGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxQcm9jZXNzUXVhbGlmaWVkPFdURjo6
VVVJRD4+IFByb2Nlc3NRdWFsaWZpZWQ8V1RGOjpVVUlEPjo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCiB7Ci0gICAgc3RkOjpvcHRpb25hbDxVVUlEPiBvYmplY3Q7CisgICAgc3RkOjpvcHRpb25h
bDxXVEY6OlVVSUQ+IG9iamVjdDsKICAgICBkZWNvZGVyID4+IG9iamVjdDsKICAgICBpZiAoIW9i
amVjdCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTkzLDEyICs5MywxMiBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFsPFByb2Nlc3NRdWFsaWZpZWQ8
VVVJRD4+IFByb2Nlc3NRdWFsaWZpZQogfQogCiB0ZW1wbGF0ZSA8PgotaW5saW5lIFRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFByb2Nlc3NRdWFsaWZpZWQ8VVVJ
RD4mIHByb2Nlc3NRdWFsaWZpZWQpCitpbmxpbmUgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgY29uc3QgUHJvY2Vzc1F1YWxpZmllZDxXVEY6OlVVSUQ+JiBwcm9jZXNzUXVh
bGlmaWVkKQogewogICAgIHRzIDw8ICJQcm9jZXNzUXVhbGlmaWVkKCIgPDwgcHJvY2Vzc1F1YWxp
ZmllZC5wcm9jZXNzSWRlbnRpZmllcigpLnRvVUludDY0KCkgPDwgJy0nIDw8IHByb2Nlc3NRdWFs
aWZpZWQub2JqZWN0KCkudG9TdHJpbmcoKSA8PCAnKSc7CiAgICAgcmV0dXJuIHRzOwogfQogCi11
c2luZyBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciA9IFByb2Nlc3NRdWFsaWZpZWQ8
VVVJRD47Cit1c2luZyBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciA9IFByb2Nlc3NR
dWFsaWZpZWQ8V1RGOjpVVUlEPjsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggZTQ5MjlhNzFiNWQz
Li43YzA5MzZjNzU1ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMzA4Miw3ICszMDgyLDcgQEAgdm9p
ZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0ZUFuaW1hdGlvbnMoKQogICAgICAgICBjYUFuaW1hdGlv
bkdyb3VwLT5zZXREdXJhdGlvbihpbmZpbml0ZUR1cmF0aW9uKTsKICAgICAgICAgY2FBbmltYXRp
b25Hcm91cC0+c2V0QW5pbWF0aW9ucyhhbmltYXRpb25zKTsKIAotICAgICAgICBhdXRvIGFuaW1h
dGlvbkdyb3VwID0gTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbihXVEZNb3ZlKGNhQW5pbWF0aW9uR3Jv
dXApLCBtYWtlU3RyaW5nKCJncm91cC0iX3MsIFVVSUQ6OmNyZWF0ZVZlcnNpb240KCkpLCBwcm9w
ZXJ0eSwgMCwgMF9zKTsKKyAgICAgICAgYXV0byBhbmltYXRpb25Hcm91cCA9IExheWVyUHJvcGVy
dHlBbmltYXRpb24oV1RGTW92ZShjYUFuaW1hdGlvbkdyb3VwKSwgbWFrZVN0cmluZygiZ3JvdXAt
Il9zLCBXVEY6OlVVSUQ6OmNyZWF0ZVZlcnNpb240KCkpLCBwcm9wZXJ0eSwgMCwgMF9zKTsKICAg
ICAgICAgYW5pbWF0aW9uR3JvdXAubV9iZWdpblRpbWUgPSBhbmltYXRpb25Hcm91cEJlZ2luVGlt
ZTsKIAogICAgICAgICBzZXRBbmltYXRpb25PbkxheWVyKGFuaW1hdGlvbkdyb3VwKTsKQEAgLTMx
MzAsNyArMzEzMCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVBbmltYXRpb25zKCkK
ICAgICAgICAgY2FBbmltYXRpb24tPnNldEZyb21WYWx1ZShtYXRyaXgpOwogICAgICAgICBjYUFu
aW1hdGlvbi0+c2V0VG9WYWx1ZShtYXRyaXgpOwogCi0gICAgICAgIGF1dG8gYW5pbWF0aW9uID0g
TGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbihXVEZNb3ZlKGNhQW5pbWF0aW9uKSwgbWFrZVN0cmluZygi
YmFzZS10cmFuc2Zvcm0tIl9zLCBVVUlEOjpjcmVhdGVWZXJzaW9uNCgpKSwgcHJvcGVydHksIDAs
IDBfcyk7CisgICAgICAgIGF1dG8gYW5pbWF0aW9uID0gTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbihX
VEZNb3ZlKGNhQW5pbWF0aW9uKSwgbWFrZVN0cmluZygiYmFzZS10cmFuc2Zvcm0tIl9zLCBXVEY6
OlVVSUQ6OmNyZWF0ZVZlcnNpb240KCkpLCBwcm9wZXJ0eSwgMCwgMF9zKTsKICAgICAgICAgaWYg
KGRlbGF5KQogICAgICAgICAgICAgYW5pbWF0aW9uLm1fYmVnaW5UaW1lID0gY3VycmVudFRpbWUg
LSBhbmltYXRpb25Hcm91cEJlZ2luVGltZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCmluZGV4IGMyZjYwZTc1ZDZkYS4uNmM2OTVmZjRhNmM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCkBAIC0yOTI5LDcgKzI5MjksNyBAQCBTdHJpbmcgSW50ZXJuYWxzOjpk
b2N1bWVudElkZW50aWZpZXIoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdAogCiBib29s
IEludGVybmFsczo6aXNEb2N1bWVudEFsaXZlKGNvbnN0IFN0cmluZyYgZG9jdW1lbnRJZGVudGlm
aWVyKSBjb25zdAogewotICAgIGF1dG8gdXVpZCA9IFVVSUQ6OnBhcnNlVmVyc2lvbjQoZG9jdW1l
bnRJZGVudGlmaWVyKTsKKyAgICBhdXRvIHV1aWQgPSBXVEY6OlVVSUQ6OnBhcnNlVmVyc2lvbjQo
ZG9jdW1lbnRJZGVudGlmaWVyKTsKICAgICBBU1NFUlQodXVpZCk7CiAgICAgcmV0dXJuIHV1aWQg
PyBEb2N1bWVudDo6YWxsRG9jdW1lbnRzTWFwKCkuY29udGFpbnMoeyAqdXVpZCwgUHJvY2Vzczo6
aWRlbnRpZmllcigpIH0pIDogZmFsc2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGE1MDAxOWU4OGI0Mi4uYzZhOGM4OTAzMmNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cApAQCAtNDc5LDcgKzQ3OSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFkZFN0b3JhZ2VTZXNz
aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgYm9vbCBzaG91bGRVc2VUCiAKICAgICBhdXRv
IGlkZW50aWZpZXJCYXNlID0gbWFrZVN0cmluZyh1aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyKCks
ICcuJywgc2Vzc2lvbklELnRvVUludDY0KCkpOwogICAgIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VT
ZXNzaW9uUmVmPiBzdG9yYWdlU2Vzc2lvbjsKLSAgICBhdXRvIGNmSWRlbnRpZmllciA9IG1ha2VT
dHJpbmcoaWRlbnRpZmllckJhc2UsICIuUHJpdmF0ZUJyb3dzaW5nLiJfcywgVVVJRDo6Y3JlYXRl
VmVyc2lvbjQoKSkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICBhdXRvIGNmSWRlbnRpZmllciA9IG1h
a2VTdHJpbmcoaWRlbnRpZmllckJhc2UsICIuUHJpdmF0ZUJyb3dzaW5nLiJfcywgV1RGOjpVVUlE
OjpjcmVhdGVWZXJzaW9uNCgpKS5jcmVhdGVDRlN0cmluZygpOwogICAgIGlmIChzZXNzaW9uSUQu
aXNFcGhlbWVyYWwoKSkKICAgICAgICAgc3RvcmFnZVNlc3Npb24gPSBjcmVhdGVQcml2YXRlU3Rv
cmFnZVNlc3Npb24oY2ZJZGVudGlmaWVyLmdldCgpLCBzdGQ6Om51bGxvcHQsIFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6U2hvdWxkRGlzYWJsZUNGVVJMQ2FjaGU6Olllcyk7CiAgICAg
ZWxzZSBpZiAoc2Vzc2lvbklEICE9IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IDA3ZjI1NTdiOGQ5ZS4uYTFj
MjY1ZGE1YjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtMTE4LDcg
KzExOCw3IEBAIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM+
IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzCiAgICAgaWYgKCFzZXNzaW9uSUQpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCi0gICAgc3RkOjpvcHRpb25hbDxNYXJr
YWJsZTxVVUlEPj4gZGF0YVN0b3JlSWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPE1hcmth
YmxlPFdURjo6VVVJRD4+IGRhdGFTdG9yZUlkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiBkYXRh
U3RvcmVJZGVudGlmaWVyOwogICAgIGlmICghZGF0YVN0b3JlSWRlbnRpZmllcikKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCA5
MGU3ZDQxZTM5MjAuLjk2NTFmYjEyNDIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMu
aApAQCAtNTgsNyArNTgsNyBAQCBzdHJ1Y3QgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRl
cnMgewogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJh
bWV0ZXJzPiBkZWNvZGUoSVBDOjpEZWNvZGVyJik7CiAgICAgCiAgICAgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEIHsgUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSB9OwotICAgIE1h
cmthYmxlPFVVSUQ+IGRhdGFTdG9yZUlkZW50aWZpZXI7CisgICAgTWFya2FibGU8V1RGOjpVVUlE
PiBkYXRhU3RvcmVJZGVudGlmaWVyOwogICAgIFN0cmluZyBib3VuZEludGVyZmFjZUlkZW50aWZp
ZXI7CiAgICAgQWxsb3dzQ2VsbHVsYXJBY2Nlc3MgYWxsb3dzQ2VsbHVsYXJBY2Nlc3MgeyBBbGxv
d3NDZWxsdWxhckFjY2Vzczo6WWVzIH07CiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlm
aWNhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAppbmRleCBlMDY1NjNiZGEzOWMu
LjgzMGQzZTY1ZmQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
b3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1h
bmFnZXIuY3BwCkBAIC0xMjAsMTkgKzEyMCwxOSBAQCB2b2lkIE5ldHdvcmtOb3RpZmljYXRpb25N
YW5hZ2VyOjpzaG93Tm90aWZpY2F0aW9uKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcgog
Ly8gICAgc2VuZE1lc3NhZ2VXaXRoUmVwbHk8V2ViUHVzaEQ6Ok1lc3NhZ2VUeXBlOjpFY2hvVHdp
Y2U+KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBTdHJpbmcoIkZJWE1FOiBEbyB1c2VmdWwg
d29yayBoZXJlIikpOwogfQogCi12b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpjYW5j
ZWxOb3RpZmljYXRpb24oY29uc3QgVVVJRCYpCit2b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5h
Z2VyOjpjYW5jZWxOb3RpZmljYXRpb24oY29uc3QgV1RGOjpVVUlEJikKIHsKICAgICBpZiAoIW1f
Y29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogfQogCi12b2lkIE5ldHdvcmtOb3RpZmljYXRp
b25NYW5hZ2VyOjpjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPFVVSUQ+JikKK3ZvaWQg
TmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OmNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0
b3I8V1RGOjpVVUlEPiYpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVy
bjsKIH0KIAotdm9pZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkRGVzdHJveU5vdGlm
aWNhdGlvbihjb25zdCBVVUlEJikKK3ZvaWQgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OmRp
ZERlc3Ryb3lOb3RpZmljYXRpb24oY29uc3QgV1RGOjpVVUlEJikKIHsKICAgICBpZiAoIW1fY29u
bmVjdGlvbikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNh
dGlvbk1hbmFnZXIuaAppbmRleCBkMjgwNjQ2YmE1ZWEuLjBmNGQ2ZTQ3NzM1NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3Rp
ZmljYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmgKQEAgLTczLDkgKzczLDkgQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgcmVxdWVzdFN5c3RlbU5vdGlmaWNhdGlvblBlcm1pc3Npb24o
Y29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpIGZpbmFsOwogICAgIHZvaWQgc2hvd05vdGlmaWNhdGlvbihJUEM6OkNvbm5lY3Rpb24mLCBj
b25zdCBXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRhJiwgUmVmUHRyPFdlYkNvcmU6Ok5vdGlmaWNh
dGlvblJlc291cmNlcz4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKLSAg
ICB2b2lkIGNhbmNlbE5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCkgZmlu
YWw7Ci0gICAgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPFVVSUQ+JiBub3Rp
ZmljYXRpb25JRHMpIGZpbmFsOwotICAgIHZvaWQgZGlkRGVzdHJveU5vdGlmaWNhdGlvbihjb25z
dCBVVUlEJiBub3RpZmljYXRpb25JRCkgZmluYWw7CisgICAgdm9pZCBjYW5jZWxOb3RpZmljYXRp
b24oY29uc3QgV1RGOjpVVUlEJiBub3RpZmljYXRpb25JRCkgZmluYWw7CisgICAgdm9pZCBjbGVh
ck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6VVVJRD4mIG5vdGlmaWNhdGlvbklEcykg
ZmluYWw7CisgICAgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9uKGNvbnN0IFdURjo6VVVJRCYg
bm90aWZpY2F0aW9uSUQpIGZpbmFsOwogCiAgICAgTmV0d29ya1Nlc3Npb24mIG1fbmV0d29ya1Nl
c3Npb247CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlB1c2hEOjpDb25uZWN0aW9uPiBtX2Nvbm5l
Y3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IGQ3MTkxYjU3NjMwNC4uNzNh
ZjMzNzM4NDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtMTM5LDEyICsxMzks
MTIgQEAgc3RhdGljIHZvaWQgZGVsZXRlRW1wdHlPcmlnaW5EaXJlY3RvcnkoY29uc3QgU3RyaW5n
JiBkaXJlY3RvcnkpCiAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkoRmlsZVN5
c3RlbTo6cGFyZW50UGF0aChkaXJlY3RvcnkpKTsKIH0KIAotUmVmPE5ldHdvcmtTdG9yYWdlTWFu
YWdlcj4gTmV0d29ya1N0b3JhZ2VNYW5hZ2VyOjpjcmVhdGUoTmV0d29ya1Byb2Nlc3MmIHByb2Nl
c3MsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgTWFya2FibGU8VVVJRD4gaWRlbnRpZmllciwg
SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IFN0cmluZyYgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0
b21JREJTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21DYWNoZVN0b3JhZ2VQYXRoLCBj
b25zdCBTdHJpbmcmIGN1c3RvbVNlcnZpY2VXb3JrZXJTdG9yYWdlUGF0aCwgdWludDY0X3QgZGVm
YXVsdE9yaWdpblF1b3RhLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gb3JpZ2luUXVvdGFSYXRpbywg
c3RkOjpvcHRpb25hbDxkb3VibGU+IHRvdGFsUXVvdGFSYXRpbywgc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4gdm9sdW1lQ2FwYWNpdHlPdmVycmlkZSwgVW5pZmllZE9yaWdpblN0b3JhZ2VMZXZlbCBs
ZXZlbCkKK1JlZjxOZXR3b3JrU3RvcmFnZU1hbmFnZXI+IE5ldHdvcmtTdG9yYWdlTWFuYWdlcjo6
Y3JlYXRlKE5ldHdvcmtQcm9jZXNzJiBwcm9jZXNzLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IE1hcmthYmxlPFdURjo6VVVJRD4gaWRlbnRpZmllciwgSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJ
RCBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tTG9j
YWxTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21JREJTdG9yYWdlUGF0aCwgY29uc3Qg
U3RyaW5nJiBjdXN0b21DYWNoZVN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbVNlcnZp
Y2VXb3JrZXJTdG9yYWdlUGF0aCwgdWludDY0X3QgZGVmYXVsdE9yaWdpblF1b3RhLCBzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4gb3JpZ2luUXVvdGFSYXRpbywgc3RkOjpvcHRpb25hbDxkb3VibGU+IHRv
dGFsUXVvdGFSYXRpbywgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gdm9sdW1lQ2FwYWNpdHlPdmVy
cmlkZSwgVW5pZmllZE9yaWdpblN0b3JhZ2VMZXZlbCBsZXZlbCkKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBOZXR3b3JrU3RvcmFnZU1hbmFnZXIocHJvY2Vzcywgc2Vzc2lvbklELCBpZGVu
dGlmaWVyLCBjb25uZWN0aW9uLCBwYXRoLCBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoLCBjdXN0b21J
REJTdG9yYWdlUGF0aCwgY3VzdG9tQ2FjaGVTdG9yYWdlUGF0aCwgY3VzdG9tU2VydmljZVdvcmtl
clN0b3JhZ2VQYXRoLCBkZWZhdWx0T3JpZ2luUXVvdGEsIG9yaWdpblF1b3RhUmF0aW8sIHRvdGFs
UXVvdGFSYXRpbywgdm9sdW1lQ2FwYWNpdHlPdmVycmlkZSwgbGV2ZWwpKTsKIH0KIAotTmV0d29y
a1N0b3JhZ2VNYW5hZ2VyOjpOZXR3b3JrU3RvcmFnZU1hbmFnZXIoTmV0d29ya1Byb2Nlc3MmIHBy
b2Nlc3MsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgTWFya2FibGU8VVVJRD4gaWRlbnRpZmll
ciwgSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIHBh
dGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBj
dXN0b21JREJTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21DYWNoZVN0b3JhZ2VQYXRo
LCBjb25zdCBTdHJpbmcmIGN1c3RvbVNlcnZpY2VXb3JrZXJTdG9yYWdlUGF0aCwgdWludDY0X3Qg
ZGVmYXVsdE9yaWdpblF1b3RhLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gb3JpZ2luUXVvdGFSYXRp
bywgc3RkOjpvcHRpb25hbDxkb3VibGU+IHRvdGFsUXVvdGFSYXRpbywgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gdm9sdW1lQ2FwYWNpdHlPdmVycmlkZSwgVW5pZmllZE9yaWdpblN0b3JhZ2VMZXZl
bCBsZXZlbCkKK05ldHdvcmtTdG9yYWdlTWFuYWdlcjo6TmV0d29ya1N0b3JhZ2VNYW5hZ2VyKE5l
dHdvcmtQcm9jZXNzJiBwcm9jZXNzLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE1hcmthYmxl
PFdURjo6VVVJRD4gaWRlbnRpZmllciwgSVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCBjb25uZWN0
aW9uLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tTG9jYWxTdG9yYWdl
UGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21JREJTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBj
dXN0b21DYWNoZVN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbVNlcnZpY2VXb3JrZXJT
dG9yYWdlUGF0aCwgdWludDY0X3QgZGVmYXVsdE9yaWdpblF1b3RhLCBzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4gb3JpZ2luUXVvdGFSYXRpbywgc3RkOjpvcHRpb25hbDxkb3VibGU+IHRvdGFsUXVvdGFS
YXRpbywgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gdm9sdW1lQ2FwYWNpdHlPdmVycmlkZSwgVW5p
ZmllZE9yaWdpblN0b3JhZ2VMZXZlbCBsZXZlbCkKICAgICA6IG1fcHJvY2Vzcyhwcm9jZXNzKQog
ICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogICAgICwgbV9xdWV1ZU5hbWUobWFrZVN0cmlu
ZygiY29tLmFwcGxlLldlYktpdC5TdG9yYWdlLiIsIHNlc3Npb25JRC50b1VJbnQ2NCgpLCAiLiIs
IHN0YXRpY19jYXN0PHVpbnQ2NF90PihpZGVudGlmaWVyLT5kYXRhKCkgPj4gNjQpLCBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4oaWRlbnRpZmllci0+ZGF0YSgpKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2VyLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5hZ2Vy
LmgKaW5kZXggMTM0YWEyNzM0MDQ5Li5hYjJiZDFiYzQyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9OZXR3b3JrU3RvcmFnZU1hbmFnZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTmV0d29ya1N0b3JhZ2VNYW5h
Z2VyLmgKQEAgLTg0LDcgKzg0LDcgQEAgY2xhc3MgU3RvcmFnZUFyZWFSZWdpc3RyeTsKIAogY2xh
c3MgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyIGZpbmFsIDogcHVibGljIElQQzo6V29ya1F1ZXVlTWVz
c2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE5ldHdvcmtTdG9yYWdlTWFu
YWdlcj4gY3JlYXRlKE5ldHdvcmtQcm9jZXNzJiwgUEFMOjpTZXNzaW9uSUQsIE1hcmthYmxlPFVV
SUQ+LCBJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0
IFN0cmluZyYgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21JREJT
dG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21DYWNoZVN0b3JhZ2VQYXRoLCBjb25zdCBT
dHJpbmcmIGN1c3RvbVNlcnZpY2VXb3JrZXJTdG9yYWdlUGF0aCwgdWludDY0X3QgZGVmYXVsdE9y
aWdpblF1b3RhLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gb3JpZ2luUXVvdGFSYXRpbywgc3RkOjpv
cHRpb25hbDxkb3VibGU+IHRvdGFsUXVvdGFSYXRpbywgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4g
dm9sdW1lQ2FwYWNpdHlPdmVycmlkZSwgVW5pZmllZE9yaWdpblN0b3JhZ2VMZXZlbCk7CisgICAg
c3RhdGljIFJlZjxOZXR3b3JrU3RvcmFnZU1hbmFnZXI+IGNyZWF0ZShOZXR3b3JrUHJvY2VzcyYs
IFBBTDo6U2Vzc2lvbklELCBNYXJrYWJsZTxXVEY6OlVVSUQ+LCBJUEM6OkNvbm5lY3Rpb246OlVu
aXF1ZUlELCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tTG9jYWxTdG9y
YWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21JREJTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5n
JiBjdXN0b21DYWNoZVN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbVNlcnZpY2VXb3Jr
ZXJTdG9yYWdlUGF0aCwgdWludDY0X3QgZGVmYXVsdE9yaWdpblF1b3RhLCBzdGQ6Om9wdGlvbmFs
PGRvdWJsZT4gb3JpZ2luUXVvdGFSYXRpbywgc3RkOjpvcHRpb25hbDxkb3VibGU+IHRvdGFsUXVv
dGFSYXRpbywgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gdm9sdW1lQ2FwYWNpdHlPdmVycmlkZSwg
VW5pZmllZE9yaWdpblN0b3JhZ2VMZXZlbCk7CiAgICAgc3RhdGljIGJvb2wgY2FuSGFuZGxlVHlw
ZXMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4pOwogICAgIHN0YXRpYyBPcHRpb25TZXQ8V2Vi
c2l0ZURhdGFUeXBlPiBhbGxNYW5hZ2VkVHlwZXMoKTsKIApAQCAtMTI3LDcgKzEyNyw3IEBAIHB1
YmxpYzoKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKIHByaXZhdGU6Ci0gICAg
TmV0d29ya1N0b3JhZ2VNYW5hZ2VyKE5ldHdvcmtQcm9jZXNzJiwgUEFMOjpTZXNzaW9uSUQsIE1h
cmthYmxlPFVVSUQ+LCBJUEM6OkNvbm5lY3Rpb246OlVuaXF1ZUlELCBjb25zdCBTdHJpbmcmIHBh
dGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tTG9jYWxTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBj
dXN0b21JREJTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21DYWNoZVN0b3JhZ2VQYXRo
LCBjb25zdCBTdHJpbmcmIGN1c3RvbVNlcnZpY2VXb3JrZXJTdG9yYWdlUGF0aCwgdWludDY0X3Qg
ZGVmYXVsdE9yaWdpblF1b3RhLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gb3JpZ2luUXVvdGFSYXRp
bywgc3RkOjpvcHRpb25hbDxkb3VibGU+IHRvdGFsUXVvdGFSYXRpbywgc3RkOjpvcHRpb25hbDx1
aW50NjRfdD4gdm9sdW1lQ2FwYWNpdHlPdmVycmlkZSwgVW5pZmllZE9yaWdpblN0b3JhZ2VMZXZl
bCk7CisgICAgTmV0d29ya1N0b3JhZ2VNYW5hZ2VyKE5ldHdvcmtQcm9jZXNzJiwgUEFMOjpTZXNz
aW9uSUQsIE1hcmthYmxlPFdURjo6VVVJRD4sIElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjdXN0b21Mb2NhbFN0b3JhZ2VQYXRoLCBj
b25zdCBTdHJpbmcmIGN1c3RvbUlEQlN0b3JhZ2VQYXRoLCBjb25zdCBTdHJpbmcmIGN1c3RvbUNh
Y2hlU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgY3VzdG9tU2VydmljZVdvcmtlclN0b3JhZ2VQ
YXRoLCB1aW50NjRfdCBkZWZhdWx0T3JpZ2luUXVvdGEsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBv
cmlnaW5RdW90YVJhdGlvLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gdG90YWxRdW90YVJhdGlvLCBz
dGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVDYXBhY2l0eU92ZXJyaWRlLCBVbmlmaWVkT3Jp
Z2luU3RvcmFnZUxldmVsKTsKICAgICB+TmV0d29ya1N0b3JhZ2VNYW5hZ2VyKCk7CiAgICAgdm9p
ZCB3cml0ZU9yaWdpblRvRmlsZUlmTmVjZXNzYXJ5KGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdp
biYsIFN0b3JhZ2VBcmVhQmFzZSogPSBudWxscHRyKTsKICAgICBlbnVtIGNsYXNzIFNob3VsZFdy
aXRlT3JpZ2luRmlsZSA6IGJvb2wgeyBObywgWWVzIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuY3BwCmlu
ZGV4IDZhNDk1OWM3YmEwNi4uZmY2OGEwODc4N2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmNwcApA
QCAtMTA2LDcgKzEwNiw3IEBAIHN0YXRpYyB2b2lkIHJlZ2lzdGVyTUROU05hbWVDYWxsYmFjayhE
TlNTZXJ2aWNlUmVmLCBETlNSZWNvcmRSZWYgcmVjb3JkLCBETlNTZXJ2CiAKIHZvaWQgTmV0d29y
a01ETlNSZWdpc3Rlcjo6cmVnaXN0ZXJNRE5TTmFtZShNRE5TUmVnaXN0ZXJJZGVudGlmaWVyIHJl
cXVlc3RJZGVudGlmaWVyLCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmll
ciBkb2N1bWVudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaXBBZGRyZXNzKQogewotICAgIGF1
dG8gbmFtZSA9IG1ha2VTdHJpbmcoVVVJRDo6Y3JlYXRlVmVyc2lvbjQoKSwgIi5sb2NhbCJfcyk7
CisgICAgYXV0byBuYW1lID0gbWFrZVN0cmluZyhXVEY6OlVVSUQ6OmNyZWF0ZVZlcnNpb240KCks
ICIubG9jYWwiX3MpOwogCiAgICAgRE5TU2VydmljZVJlZiBzZXJ2aWNlOwogICAgIGF1dG8gaXRl
cmF0b3IgPSBtX3NlcnZpY2VzLmZpbmQoZG9jdW1lbnRJZGVudGlmaWVyKTsKQEAgLTE3Miw3ICsx
NzIsNyBAQCB2b2lkIE5ldHdvcmtNRE5TUmVnaXN0ZXI6OnVucmVnaXN0ZXJNRE5TTmFtZXMoV2Vi
Q29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZQogdm9pZCBOZXR3b3JrTUROU1JlZ2lzdGVy
OjpyZWdpc3Rlck1ETlNOYW1lKE1ETlNSZWdpc3RlcklkZW50aWZpZXIgcmVxdWVzdElkZW50aWZp
ZXIsIFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGRvY3VtZW50SWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBpcEFkZHJlc3MpCiB7CiAgICAgTUROU19SRUxFQVNFX0xP
RygicmVnaXN0ZXJNRE5TTmFtZSBub3QgaW1wbGVtZW50ZWQiKTsKLSAgICBhdXRvIG5hbWUgPSBt
YWtlU3RyaW5nKFVVSUQ6OmNyZWF0ZVZlcnNpb240KCksICIubG9jYWwiX3MpOworICAgIGF1dG8g
bmFtZSA9IG1ha2VTdHJpbmcoV1RGOjpVVUlEOjpjcmVhdGVWZXJzaW9uNCgpLCAiLmxvY2FsIl9z
KTsKIAogICAgIG1fY29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6V2ViTURO
U1JlZ2lzdGVyOjpGaW5pc2hlZFJlZ2lzdGVyaW5nTUROU05hbWUgeyByZXF1ZXN0SWRlbnRpZmll
ciwgbmFtZSwgV2ViQ29yZTo6TUROU1JlZ2lzdGVyRXJyb3I6Ok5vdEltcGxlbWVudGVkIH0sIDAp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGFlbW9uQ29kZXJz
LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EYWVtb25Db2RlcnMuaAppbmRleCBmYWU2
N2FmMzcwOTQuLmVhNmI3Y2RkMzIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9JUEMvRGFlbW9uQ29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGFl
bW9uQ29kZXJzLmgKQEAgLTE2Miw3ICsxNjIsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDb2RlcjxX
VEY6OlVVSUQ+IHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPgogICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFdURjo6VVVJRD4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewot
ICAgICAgICByZXR1cm4gVVVJRDo6ZGVjb2RlKGRlY29kZXIpOworICAgICAgICByZXR1cm4gV1RG
OjpVVUlEOjpkZWNvZGUoZGVjb2Rlcik7CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvTmF2aWdhdGlvbkFjdGlvbkRhdGEuaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL05hdmlnYXRpb25BY3Rpb25EYXRhLmgKaW5kZXggODI4NDgyNzg4YjE1Li4zZTMxZWQ2ODhh
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdmlnYXRpb25BY3Rpb25EYXRh
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTmF2aWdhdGlvbkFjdGlvbkRhdGEuaApAQCAt
NTAsNyArNTAsNyBAQCBzdHJ1Y3QgTmF2aWdhdGlvbkFjdGlvbkRhdGEgewogICAgIFdlYk1vdXNl
RXZlbnRCdXR0b24gbW91c2VCdXR0b24geyBXZWJNb3VzZUV2ZW50QnV0dG9uOjpOb0J1dHRvbiB9
OwogICAgIFdlYk1vdXNlRXZlbnRTeW50aGV0aWNDbGlja1R5cGUgc3ludGhldGljQ2xpY2tUeXBl
IHsgV2ViTW91c2VFdmVudFN5bnRoZXRpY0NsaWNrVHlwZTo6Tm9UYXAgfTsKICAgICB1aW50NjRf
dCB1c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllciB7IDAgfTsKLSAgICBzdGQ6Om9wdGlvbmFsPFVV
SUQ+IHVzZXJHZXN0dXJlQXV0aG9yaXphdGlvblRva2VuOworICAgIHN0ZDo6b3B0aW9uYWw8V1RG
OjpVVUlEPiB1c2VyR2VzdHVyZUF1dGhvcml6YXRpb25Ub2tlbjsKICAgICBib29sIGNhbkhhbmRs
ZVJlcXVlc3QgeyBmYWxzZSB9OwogICAgIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSB7IFdlYkNvcmU6OlNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93IH07CiAgICAgV1RGOjpTdHJpbmcgZG93
bmxvYWRBdHRyaWJ1dGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXZpZ2F0
aW9uQWN0aW9uRGF0YS5zZXJpYWxpemF0aW9uLmluIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTmF2
aWdhdGlvbkFjdGlvbkRhdGEuc2VyaWFsaXphdGlvbi5pbgppbmRleCBmZjM0NzY0MWJhOGIuLjM3
NjQ5YjExMjQxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvTmF2aWdhdGlvbkFj
dGlvbkRhdGEuc2VyaWFsaXphdGlvbi5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXZp
Z2F0aW9uQWN0aW9uRGF0YS5zZXJpYWxpemF0aW9uLmluCkBAIC0yNiw3ICsyNiw3IEBAIHN0cnVj
dCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIHsKICAgICBXZWJLaXQ6OldlYk1vdXNlRXZl
bnRCdXR0b24gbW91c2VCdXR0b247CiAgICAgV2ViS2l0OjpXZWJNb3VzZUV2ZW50U3ludGhldGlj
Q2xpY2tUeXBlIHN5bnRoZXRpY0NsaWNrVHlwZTsKICAgICB1aW50NjRfdCB1c2VyR2VzdHVyZVRv
a2VuSWRlbnRpZmllcjsKLSAgICBzdGQ6Om9wdGlvbmFsPFVVSUQ+IHVzZXJHZXN0dXJlQXV0aG9y
aXphdGlvblRva2VuOworICAgIHN0ZDo6b3B0aW9uYWw8V1RGOjpVVUlEPiB1c2VyR2VzdHVyZUF1
dGhvcml6YXRpb25Ub2tlbjsKICAgICBib29sIGNhbkhhbmRsZVJlcXVlc3Q7CiAgICAgV2ViQ29y
ZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5OwogICAgIFdURjo6U3RyaW5nIGRvd25sb2FkQXR0cmlidXRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2Fn
ZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmgKaW5kZXggNWY0MzM5OTExZGRkLi4zZmYyYzI4MWVk
OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Tm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaApAQCAtNDMs
OSArNDMsOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFN5c3RlbU5vdGlm
aWNhdGlvblBlcm1pc3Npb24oY29uc3QgU3RyaW5nJiBzZWN1cml0eU9yaWdpbiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzaG93Tm90aWZp
Y2F0aW9uKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEm
LCBSZWZQdHI8V2ViQ29yZTo6Tm90aWZpY2F0aW9uUmVzb3VyY2VzPiYmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsTm90aWZpY2F0aW9u
KGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFy
Tm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8VVVJRD4mIG5vdGlmaWNhdGlvbklEcykgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlm
aWNhdGlvbklEKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbE5vdGlmaWNhdGlvbihjb25z
dCBXVEY6OlVVSUQmIG5vdGlmaWNhdGlvbklEKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsZWFy
Tm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpVVUlEPiYgbm90aWZpY2F0aW9uSURzKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZERlc3Ryb3lOb3RpZmljYXRpb24oY29uc3QgV1RGOjpV
VUlEJiBub3RpZmljYXRpb25JRCkgPSAwOwogCiBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ob3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5k
bGVyLm1lc3NhZ2VzLmluCmluZGV4IGM4MzY0YTEzZjgyNC4uNjM4NzRmNjYyMDcyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFn
ZXJNZXNzYWdlSGFuZGxlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9O
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5tZXNzYWdlcy5p
bgpAQCAtMjMsNyArMjMsNyBAQAogbWVzc2FnZXMgLT4gTm90aWZpY2F0aW9uTWFuYWdlck1lc3Nh
Z2VIYW5kbGVyIE5vdFJlZkNvdW50ZWQgewogICAgIFJlcXVlc3RTeXN0ZW1Ob3RpZmljYXRpb25Q
ZXJtaXNzaW9uKFN0cmluZyBvcmlnaW5JZGVudGlmaWVyKSAtPiAoYm9vbCBhbGxvd2VkKQogICAg
IFNob3dOb3RpZmljYXRpb24oc3RydWN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEgbm90aWZp
Y2F0aW9uRGF0YSwgUmVmUHRyPFdlYkNvcmU6Ok5vdGlmaWNhdGlvblJlc291cmNlcz4gbm90aWZp
Y2F0aW9uUmVzb3VyY2VzKSAtPiAoKQotICAgIENhbmNlbE5vdGlmaWNhdGlvbihVVUlEIG5vdGlm
aWNhdGlvbklEKQotICAgIENsZWFyTm90aWZpY2F0aW9ucyhWZWN0b3I8VVVJRD4gbm90aWZpY2F0
aW9uSURzKQotICAgIERpZERlc3Ryb3lOb3RpZmljYXRpb24oVVVJRCBub3RpZmljYXRpb25JRCkK
KyAgICBDYW5jZWxOb3RpZmljYXRpb24oV1RGOjpVVUlEIG5vdGlmaWNhdGlvbklEKQorICAgIENs
ZWFyTm90aWZpY2F0aW9ucyhWZWN0b3I8V1RGOjpVVUlEPiBub3RpZmljYXRpb25JRHMpCisgICAg
RGlkRGVzdHJveU5vdGlmaWNhdGlvbihXVEY6OlVVSUQgbm90aWZpY2F0aW9uSUQpCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuc2VyaWFs
aXphdGlvbi5pbiBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5z
ZXJpYWxpemF0aW9uLmluCmluZGV4IDNlYTlkNDJhYzQzOC4uZjA5ZWU2YzM4Mjc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuc2VyaWFsaXph
dGlvbi5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
c2VyaWFsaXphdGlvbi5pbgpAQCAtODk4LDcgKzg5OCw3IEBAIHN0cnVjdCBXZWJDb3JlOjpOb3Rp
ZmljYXRpb25EYXRhIHsKICAgICBXZWJDb3JlOjpOb3RpZmljYXRpb25EaXJlY3Rpb24gZGlyZWN0
aW9uOwogICAgIFN0cmluZyBvcmlnaW5TdHJpbmc7CiAgICAgVVJMIHNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25VUkw7Ci0gICAgVVVJRCBub3RpZmljYXRpb25JRDsKKyAgICBXVEY6OlVVSUQgbm90
aWZpY2F0aW9uSUQ7CiAgICAgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZp
ZXIgY29udGV4dElkZW50aWZpZXI7CiAgICAgUEFMOjpTZXNzaW9uSUQgc291cmNlU2Vzc2lvbjsK
ICAgICBNb25vdG9uaWNUaW1lIGNyZWF0aW9uVGltZTsKQEAgLTI0OTAsOCArMjQ5MCw4IEBAIHN0
cnVjdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMgewogICAgIFdlYkNvcmU6OlJlZmVycmVyUG9saWN5
IHJlZmVycmVyUG9saWN5OwogICAgIGJvb2wga2VlcEFsaXZlOwogICAgIFN0cmluZyBpbnRlZ3Jp
dHk7Ci0gICAgTWFya2FibGU8VVVJRD4gY2xpZW50SWRlbnRpZmllcjsKLSAgICBNYXJrYWJsZTxV
VUlEPiByZXN1bHRpbmdDbGllbnRJZGVudGlmaWVyOworICAgIE1hcmthYmxlPFdURjo6VVVJRD4g
Y2xpZW50SWRlbnRpZmllcjsKKyAgICBNYXJrYWJsZTxXVEY6OlVVSUQ+IHJlc3VsdGluZ0NsaWVu
dElkZW50aWZpZXI7CiB9CiAKIGVudW0gY2xhc3MgV2ViQ29yZTo6RmV0Y2hIZWFkZXJzR3VhcmQg
OiB1aW50OF90IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkV2ZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkV2ZW50LmNwcAppbmRleCAxMjBjZmNiNTA0YzQu
Ljk1YmIzNGZlMTMwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRXZlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkV2ZW50LmNwcApAQCAtMzQsMTEgKzM0
LDExIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBXZWJFdmVudDo6V2ViRXZlbnQoKQogICAgIDog
bV90eXBlKFdlYkV2ZW50VHlwZTo6Tm9UeXBlKQotICAgICwgbV9hdXRob3JpemF0aW9uVG9rZW4o
VVVJRDo6Y3JlYXRlVmVyc2lvbjQoKSkKKyAgICAsIG1fYXV0aG9yaXphdGlvblRva2VuKFdURjo6
VVVJRDo6Y3JlYXRlVmVyc2lvbjQoKSkKIHsKIH0KIAotV2ViRXZlbnQ6OldlYkV2ZW50KFdlYkV2
ZW50VHlwZSB0eXBlLCBPcHRpb25TZXQ8V2ViRXZlbnRNb2RpZmllcj4gbW9kaWZpZXJzLCBXYWxs
VGltZSB0aW1lc3RhbXAsIFVVSUQgYXV0aG9yaXphdGlvblRva2VuKQorV2ViRXZlbnQ6OldlYkV2
ZW50KFdlYkV2ZW50VHlwZSB0eXBlLCBPcHRpb25TZXQ8V2ViRXZlbnRNb2RpZmllcj4gbW9kaWZp
ZXJzLCBXYWxsVGltZSB0aW1lc3RhbXAsIFdURjo6VVVJRCBhdXRob3JpemF0aW9uVG9rZW4pCiAg
ICAgOiBtX3R5cGUodHlwZSkKICAgICAsIG1fbW9kaWZpZXJzKG1vZGlmaWVycykKICAgICAsIG1f
dGltZXN0YW1wKHRpbWVzdGFtcCkKQEAgLTUwLDcgKzUwLDcgQEAgV2ViRXZlbnQ6OldlYkV2ZW50
KFdlYkV2ZW50VHlwZSB0eXBlLCBPcHRpb25TZXQ8V2ViRXZlbnRNb2RpZmllcj4gbW9kaWZpZXJz
LCBXYWwKICAgICA6IG1fdHlwZSh0eXBlKQogICAgICwgbV9tb2RpZmllcnMobW9kaWZpZXJzKQog
ICAgICwgbV90aW1lc3RhbXAodGltZXN0YW1wKQotICAgICwgbV9hdXRob3JpemF0aW9uVG9rZW4o
VVVJRDo6Y3JlYXRlVmVyc2lvbjQoKSkKKyAgICAsIG1fYXV0aG9yaXphdGlvblRva2VuKFdURjo6
VVVJRDo6Y3JlYXRlVmVyc2lvbjQoKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViRXZlbnQuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkV2ZW50LmgKaW5k
ZXggZTZjNzk3MThlNjczLi4yM2QwMTIxMjlhMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkV2ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRXZlbnQuaApA
QCAtODQsNyArODQsNyBAQCBlbnVtIGNsYXNzIFdlYkV2ZW50VHlwZSA6IGludDhfdCB7CiBjbGFz
cyBXZWJFdmVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAg
V2ViRXZlbnQoV2ViRXZlbnRUeXBlLCBPcHRpb25TZXQ8V2ViRXZlbnRNb2RpZmllcj4sIFdhbGxU
aW1lIHRpbWVzdGFtcCwgVVVJRCBhdXRob3JpemF0aW9uVG9rZW4pOworICAgIFdlYkV2ZW50KFdl
YkV2ZW50VHlwZSwgT3B0aW9uU2V0PFdlYkV2ZW50TW9kaWZpZXI+LCBXYWxsVGltZSB0aW1lc3Rh
bXAsIFdURjo6VVVJRCBhdXRob3JpemF0aW9uVG9rZW4pOwogICAgIFdlYkV2ZW50KFdlYkV2ZW50
VHlwZSwgT3B0aW9uU2V0PFdlYkV2ZW50TW9kaWZpZXI+LCBXYWxsVGltZSB0aW1lc3RhbXApOwog
CiAgICAgV2ViRXZlbnRUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KQEAgLTk5
LDcgKzk5LDcgQEAgcHVibGljOgogCiAgICAgV2FsbFRpbWUgdGltZXN0YW1wKCkgY29uc3QgeyBy
ZXR1cm4gbV90aW1lc3RhbXA7IH0KIAotICAgIFVVSUQgYXV0aG9yaXphdGlvblRva2VuKCkgY29u
c3QgeyByZXR1cm4gbV9hdXRob3JpemF0aW9uVG9rZW47IH0KKyAgICBXVEY6OlVVSUQgYXV0aG9y
aXphdGlvblRva2VuKCkgY29uc3QgeyByZXR1cm4gbV9hdXRob3JpemF0aW9uVG9rZW47IH0KIAog
cHJvdGVjdGVkOgogICAgIFdlYkV2ZW50KCk7CkBAIC0xMDgsNyArMTA4LDcgQEAgcHJpdmF0ZToK
ICAgICBXZWJFdmVudFR5cGUgbV90eXBlOwogICAgIE9wdGlvblNldDxXZWJFdmVudE1vZGlmaWVy
PiBtX21vZGlmaWVyczsKICAgICBXYWxsVGltZSBtX3RpbWVzdGFtcDsKLSAgICBVVUlEIG1fYXV0
aG9yaXphdGlvblRva2VuOworICAgIFdURjo6VVVJRCBtX2F1dGhvcml6YXRpb25Ub2tlbjsKIH07
CiAKIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBXZWJFdmVu
dFR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRXZlbnQuc2VyaWFs
aXphdGlvbi5pbiBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkV2ZW50LnNlcmlhbGl6YXRpb24u
aW4KaW5kZXggNjkxNzc0Zjg1ZTg1Li5iYjc1ZDhmNzZhMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkV2ZW50LnNlcmlhbGl6YXRpb24uaW4KKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViRXZlbnQuc2VyaWFsaXphdGlvbi5pbgpAQCAtMzIsNyArMzIsNyBAQCBjbGFz
cyBXZWJLaXQ6OldlYkV2ZW50IHsKICAgICBXZWJLaXQ6OldlYkV2ZW50VHlwZSB0eXBlKCk7CiAg
ICAgT3B0aW9uU2V0PFdlYktpdDo6V2ViRXZlbnRNb2RpZmllcj4gbW9kaWZpZXJzKCk7CiAgICAg
V2FsbFRpbWUgdGltZXN0YW1wKCk7Ci0gICAgVVVJRCBhdXRob3JpemF0aW9uVG9rZW4oKTsKKyAg
ICBXVEY6OlVVSUQgYXV0aG9yaXphdGlvblRva2VuKCk7CiB9OwogCiBlbnVtIGNsYXNzIFdlYktp
dDo6V2ViRXZlbnRUeXBlIDogaW50OF90IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlB1c2hEYWVtb25Db25uZWN0aW9uQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUHVzaERhZW1vbkNvbm5lY3Rpb25Db25maWd1cmF0aW9uLmgKaW5kZXggODU0
NjE4YmRjZDQzLi41YmY1ODJiZmNlZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlB1c2hEYWVtb25Db25uZWN0aW9uQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlB1c2hEYWVtb25Db25uZWN0aW9uQ29uZmlndXJhdGlvbi5oCkBAIC0zOCw3
ICszOCw3IEBAIHN0cnVjdCBXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbkNvbmZpZ3VyYXRpb24gewog
ICAgIGJvb2wgdXNlTW9ja0J1bmRsZXNGb3JUZXN0aW5nIHsgZmFsc2UgfTsKICAgICBzdGQ6Om9w
dGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gaG9zdEFwcEF1ZGl0VG9rZW5EYXRhOwogICAgIFN0cmlu
ZyBwdXNoUGFydGl0aW9uU3RyaW5nOwotICAgIHN0ZDo6b3B0aW9uYWw8VVVJRD4gZGF0YVN0b3Jl
SWRlbnRpZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdURjo6VVVJRD4gZGF0YVN0b3JlSWRlbnRp
ZmllcjsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CkBAIC02NSw3ICs2NSw3IEBAIHN0
ZDo6b3B0aW9uYWw8V2ViUHVzaERhZW1vbkNvbm5lY3Rpb25Db25maWd1cmF0aW9uPiBXZWJQdXNo
RGFlbW9uQ29ubmVjdGlvbkNvbmZpCiAgICAgaWYgKCFwdXNoUGFydGl0aW9uU3RyaW5nKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlv
bmFsPFVVSUQ+PiBkYXRhU3RvcmVJZGVudGlmaWVyOworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpv
cHRpb25hbDxXVEY6OlVVSUQ+PiBkYXRhU3RvcmVJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4g
ZGF0YVN0b3JlSWRlbnRpZmllcjsKICAgICBpZiAoIWRhdGFTdG9yZUlkZW50aWZpZXIpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQdXNoRGFlbW9uQ29ubmVjdGlvbkNvbmZpZ3VyYXRpb24uc2VyaWFsaXphdGlvbi5pbiBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlB1c2hEYWVtb25Db25uZWN0aW9uQ29uZmlndXJhdGlv
bi5zZXJpYWxpemF0aW9uLmluCmluZGV4IGZlNjU2OTQ2NzU3My4uNzA5MDQ4MWUxZjk4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQdXNoRGFlbW9uQ29ubmVjdGlvbkNvbmZp
Z3VyYXRpb24uc2VyaWFsaXphdGlvbi5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
dXNoRGFlbW9uQ29ubmVjdGlvbkNvbmZpZ3VyYXRpb24uc2VyaWFsaXphdGlvbi5pbgpAQCAtMjUs
NSArMjUsNSBAQCBoZWFkZXI6ICJXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbkNvbmZpZ3VyYXRpb24u
aCIKICAgICBib29sIHVzZU1vY2tCdW5kbGVzRm9yVGVzdGluZzsKICAgICBzdGQ6Om9wdGlvbmFs
PFZlY3Rvcjx1aW50OF90Pj4gaG9zdEFwcEF1ZGl0VG9rZW5EYXRhOwogICAgIFN0cmluZyBwdXNo
UGFydGl0aW9uU3RyaW5nOwotICAgIHN0ZDo6b3B0aW9uYWw8VVVJRD4gZGF0YVN0b3JlSWRlbnRp
ZmllcjsKKyAgICBzdGQ6Om9wdGlvbmFsPFdURjo6VVVJRD4gZGF0YVN0b3JlSWRlbnRpZmllcjsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViRXZlbnRGYWN0b3J5
Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkV2ZW50RmFjdG9yeS5tbQppbmRleCBi
Nzg1YzZhMmU0MmUuLmNiYzZlOTU5NTg4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvbWFjL1dlYkV2ZW50RmFjdG9yeS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMv
V2ViRXZlbnRGYWN0b3J5Lm1tCkBAIC0zNDcsNyArMzQ3LDcgQEAgV2ViTW91c2VFdmVudCBXZWJF
dmVudEZhY3Rvcnk6OmNyZWF0ZVdlYk1vdXNlRXZlbnQoTlNFdmVudCAqZXZlbnQsIE5TRXZlbnQg
Kmxhc3QKICAgICBkb3VibGUgcHJlc3N1cmUgPSBbZXZlbnQgdHlwZV0gPT0gTlNFdmVudFR5cGVQ
cmVzc3VyZSA/IGV2ZW50LnByZXNzdXJlIDogbGFzdFByZXNzdXJlRXZlbnQucHJlc3N1cmU7CiAg
ICAgZG91YmxlIGZvcmNlID0gcHJlc3N1cmUgKyBzdGFnZTsKIAotICAgIHJldHVybiBXZWJNb3Vz
ZUV2ZW50KHsgdHlwZSwgbW9kaWZpZXJzLCB0aW1lc3RhbXAsIFVVSUQ6OmNyZWF0ZVZlcnNpb240
KCkgfSwgYnV0dG9uLCBidXR0b25zLCBXZWJDb3JlOjpJbnRQb2ludChwb3NpdGlvbiksIFdlYkNv
cmU6OkludFBvaW50KGdsb2JhbFBvc2l0aW9uKSwgZGVsdGFYLCBkZWx0YVksIGRlbHRhWiwgY2xp
Y2tDb3VudCwgZm9yY2UsIFdlYk1vdXNlRXZlbnRTeW50aGV0aWNDbGlja1R5cGU6Ok5vVGFwLCBl
dmVudE51bWJlciwgbWVudVR5cGVGb3JFdmVudCk7CisgICAgcmV0dXJuIFdlYk1vdXNlRXZlbnQo
eyB0eXBlLCBtb2RpZmllcnMsIHRpbWVzdGFtcCwgV1RGOjpVVUlEOjpjcmVhdGVWZXJzaW9uNCgp
IH0sIGJ1dHRvbiwgYnV0dG9ucywgV2ViQ29yZTo6SW50UG9pbnQocG9zaXRpb24pLCBXZWJDb3Jl
OjpJbnRQb2ludChnbG9iYWxQb3NpdGlvbiksIGRlbHRhWCwgZGVsdGFZLCBkZWx0YVosIGNsaWNr
Q291bnQsIGZvcmNlLCBXZWJNb3VzZUV2ZW50U3ludGhldGljQ2xpY2tUeXBlOjpOb1RhcCwgZXZl
bnROdW1iZXIsIG1lbnVUeXBlRm9yRXZlbnQpOwogfQogCiBXZWJXaGVlbEV2ZW50IFdlYkV2ZW50
RmFjdG9yeTo6Y3JlYXRlV2ViV2hlZWxFdmVudChOU0V2ZW50ICpldmVudCwgTlNWaWV3ICp3aW5k
b3dWaWV3KQpAQCAtNDMwLDcgKzQzMCw3IEBAIFdlYldoZWVsRXZlbnQgV2ViRXZlbnRGYWN0b3J5
OjpjcmVhdGVXZWJXaGVlbEV2ZW50KE5TRXZlbnQgKmV2ZW50LCBOU1ZpZXcgKndpbmRvCiAgICAg
ICAgIHJhd1BsYXRmb3JtRGVsdGEgPSBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCi0gICAgcmV0dXJu
IFdlYldoZWVsRXZlbnQoeyBXZWJFdmVudFR5cGU6OldoZWVsLCBtb2RpZmllcnMsIHRpbWVzdGFt
cCwgVVVJRDo6Y3JlYXRlVmVyc2lvbjQoKSB9LCBXZWJDb3JlOjpJbnRQb2ludChwb3NpdGlvbiks
IFdlYkNvcmU6OkludFBvaW50KGdsb2JhbFBvc2l0aW9uKSwgV2ViQ29yZTo6RmxvYXRTaXplKGRl
bHRhWCwgZGVsdGFZKSwgV2ViQ29yZTo6RmxvYXRTaXplKHdoZWVsVGlja3NYLCB3aGVlbFRpY2tz
WSksCisgICAgcmV0dXJuIFdlYldoZWVsRXZlbnQoeyBXZWJFdmVudFR5cGU6OldoZWVsLCBtb2Rp
ZmllcnMsIHRpbWVzdGFtcCwgV1RGOjpVVUlEOjpjcmVhdGVWZXJzaW9uNCgpIH0sIFdlYkNvcmU6
OkludFBvaW50KHBvc2l0aW9uKSwgV2ViQ29yZTo6SW50UG9pbnQoZ2xvYmFsUG9zaXRpb24pLCBX
ZWJDb3JlOjpGbG9hdFNpemUoZGVsdGFYLCBkZWx0YVkpLCBXZWJDb3JlOjpGbG9hdFNpemUod2hl
ZWxUaWNrc1gsIHdoZWVsVGlja3NZKSwKICAgICAgICAgZ3JhbnVsYXJpdHksIGRpcmVjdGlvbklu
dmVydGVkRnJvbURldmljZSwgcGhhc2UsIG1vbWVudHVtUGhhc2UsIGhhc1ByZWNpc2VTY3JvbGxp
bmdEZWx0YXMsCiAgICAgICAgIHNjcm9sbENvdW50LCB1bmFjY2VsZXJhdGVkU2Nyb2xsaW5nRGVs
dGEsIGlvSElERXZlbnRXYWxsVGltZSwgcmF3UGxhdGZvcm1EZWx0YSwgbW9tZW50dW1FbmRUeXBl
KTsKIH0KQEAgLTQ3MCw3ICs0NzAsNyBAQCBXZWJLZXlib2FyZEV2ZW50IFdlYkV2ZW50RmFjdG9y
eTo6Y3JlYXRlV2ViS2V5Ym9hcmRFdmVudChOU0V2ZW50ICpldmVudCwgYm9vbCBoYQogICAgICAg
ICB1bm1vZGlmaWVkVGV4dCA9IHRleHQ7CiAgICAgfQogCi0gICAgcmV0dXJuIFdlYktleWJvYXJk
RXZlbnQoeyB0eXBlLCBtb2RpZmllcnMsIHRpbWVzdGFtcCwgVVVJRDo6Y3JlYXRlVmVyc2lvbjQo
KSB9LCB0ZXh0LCB1bm1vZGlmaWVkVGV4dCwga2V5LCBjb2RlLCBrZXlJZGVudGlmaWVyLCB3aW5k
b3dzVmlydHVhbEtleUNvZGUsIG5hdGl2ZVZpcnR1YWxLZXlDb2RlLCBtYWNDaGFyQ29kZSwgaGFu
ZGxlZEJ5SW5wdXRNZXRob2QsIGNvbW1hbmRzLCBhdXRvUmVwZWF0LCBpc0tleXBhZCwgaXNTeXN0
ZW1LZXkpOworICAgIHJldHVybiBXZWJLZXlib2FyZEV2ZW50KHsgdHlwZSwgbW9kaWZpZXJzLCB0
aW1lc3RhbXAsIFdURjo6VVVJRDo6Y3JlYXRlVmVyc2lvbjQoKSB9LCB0ZXh0LCB1bm1vZGlmaWVk
VGV4dCwga2V5LCBjb2RlLCBrZXlJZGVudGlmaWVyLCB3aW5kb3dzVmlydHVhbEtleUNvZGUsIG5h
dGl2ZVZpcnR1YWxLZXlDb2RlLCBtYWNDaGFyQ29kZSwgaGFuZGxlZEJ5SW5wdXRNZXRob2QsIGNv
bW1hbmRzLCBhdXRvUmVwZWF0LCBpc0tleXBhZCwgaXNTeXN0ZW1LZXkpOwogfQogCiBPcHRpb25T
ZXQ8V2ViS2l0OjpXZWJFdmVudE1vZGlmaWVyPiBXZWJFdmVudEZhY3Rvcnk6OndlYkV2ZW50TW9k
aWZpZXJzRm9yTlNFdmVudE1vZGlmaWVyRmxhZ3MoTlNFdmVudE1vZGlmaWVyRmxhZ3MgbW9kaWZp
ZXJGbGFncykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2Vy
SW5pdGlhdGVkQWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlcklu
aXRpYXRlZEFjdGlvbi5oCmluZGV4IDJlYzVjOTg1ZTIwMS4uZDdiODMyYWY2NWRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlckluaXRpYXRlZEFjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VySW5pdGlhdGVkQWN0aW9u
LmgKQEAgLTQzLDEyICs0MywxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDb25zdW1lZCgpIHsg
bV9jb25zdW1lZCA9IHRydWU7IH0KICAgICBib29sIGNvbnN1bWVkKCkgY29uc3QgeyByZXR1cm4g
bV9jb25zdW1lZDsgfQogCi0gICAgdm9pZCBzZXRBdXRob3JpemF0aW9uVG9rZW4oVVVJRCBhdXRo
b3JpemF0aW9uVG9rZW4pIHsgbV9hdXRob3JpemF0aW9uVG9rZW4gPSBhdXRob3JpemF0aW9uVG9r
ZW47IH0KLSAgICBzdGQ6Om9wdGlvbmFsPFVVSUQ+IGF1dGhvcml6YXRpb25Ub2tlbigpIGNvbnN0
IHsgcmV0dXJuIG1fYXV0aG9yaXphdGlvblRva2VuOyB9CisgICAgdm9pZCBzZXRBdXRob3JpemF0
aW9uVG9rZW4oV1RGOjpVVUlEIGF1dGhvcml6YXRpb25Ub2tlbikgeyBtX2F1dGhvcml6YXRpb25U
b2tlbiA9IGF1dGhvcml6YXRpb25Ub2tlbjsgfQorICAgIHN0ZDo6b3B0aW9uYWw8V1RGOjpVVUlE
PiBhdXRob3JpemF0aW9uVG9rZW4oKSBjb25zdCB7IHJldHVybiBtX2F1dGhvcml6YXRpb25Ub2tl
bjsgfQogCiBwcml2YXRlOgogICAgIGJvb2wgbV9jb25zdW1lZCB7IGZhbHNlIH07Ci0gICAgc3Rk
OjpvcHRpb25hbDxVVUlEPiBtX2F1dGhvcml6YXRpb25Ub2tlbjsKKyAgICBzdGQ6Om9wdGlvbmFs
PFdURjo6VVVJRD4gbV9hdXRob3JpemF0aW9uVG9rZW47CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBB
UEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0
aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNh
dGlvbk1hbmFnZXIuY3BwCmluZGV4IGQ1MzhkYjU0MDc3OS4uM2ZjNzViZTFkYWNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05vdGlmaWNhdGlvbk1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTm90aWZpY2F0aW9uTWFu
YWdlci5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92
aWRlckRpZENsaWNrTm90aWZpY2F0aW9uX2IoV0tOb3RpZmljYXRpb25NYW5hZ2VyUmUKICAgICBp
ZiAoc3Bhbi5zaXplKCkgIT0gMTYpCiAgICAgICAgIHJldHVybjsKIAotICAgIHRvSW1wbChtYW5h
Z2VyUmVmKS0+cHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbihVVUlEIHsgU3Bhbjxjb25zdCB1
aW50OF90LCAxNj4geyBzcGFuLmRhdGEoKSwgMTYgfSB9KTsKKyAgICB0b0ltcGwobWFuYWdlclJl
ZiktPnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24oV1RGOjpVVUlEIHsgU3Bhbjxjb25zdCB1
aW50OF90LCAxNj4geyBzcGFuLmRhdGEoKSwgMTYgfSB9KTsKIH0KIAogdm9pZCBXS05vdGlmaWNh
dGlvbk1hbmFnZXJQcm92aWRlckRpZENsb3NlTm90aWZpY2F0aW9ucyhXS05vdGlmaWNhdGlvbk1h
bmFnZXJSZWYgbWFuYWdlclJlZiwgV0tBcnJheVJlZiBub3RpZmljYXRpb25JRHMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3Jl
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZS5tbQppbmRleCBjYTZjMmM5YzM2YTYuLjIxNDNmNjQxNTgwZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBA
IC00NTksNyArNDU5LDcgQEAgKyAodm9pZClfcmVtb3ZlRGF0YVN0b3JlV2l0aElkZW50aWZpZXI6
KE5TVVVJRCAqKWlkZW50aWZpZXIgY29tcGxldGlvbkhhbmRsZXI6KHYKICAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpAIldLV2ViU2l0ZURh
dGFTdG9yZSIgY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpAeyBOU0xvY2FsaXplZERlc2Ny
aXB0aW9uS2V5OkAiSWRlbnRpZmllciBpcyBuaWwiIH1dKTsKIAogICAgIGF1dG8gY29tcGxldGlv
bkhhbmRsZXJDb3B5ID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICBhdXRv
IHV1aWQgPSBVVUlEOjpmcm9tTlNVVUlEKGlkZW50aWZpZXIpOworICAgIGF1dG8gdXVpZCA9IFdU
Rjo6VVVJRDo6ZnJvbU5TVVVJRChpZGVudGlmaWVyKTsKICAgICBpZiAoIXV1aWQpCiAgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihbTlNFcnJvciBlcnJvcldpdGhEb21haW46QCJXS1dl
YlNpdGVEYXRhU3RvcmUiIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86QHsgTlNMb2NhbGl6
ZWREZXNjcmlwdGlvbktleTpAIklkZW50aWZpZXIgaXMgaW52YWxpZCIgfV0pOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViRXh0ZW5zaW9uQ29u
dHJvbGxlckNvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLV2ViRXh0ZW5zaW9uQ29udHJvbGxlckNvbmZpZ3VyYXRpb24ubW0KaW5kZXggM2I5ZjNj
NjkxNzBhLi5iMzRhNWQyMWUyYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tXZWJFeHRlbnNpb25Db250cm9sbGVyQ29uZmlndXJhdGlvbi5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViRXh0ZW5zaW9uQ29udHJv
bGxlckNvbmZpZ3VyYXRpb24ubW0KQEAgLTU5LDcgKzU5LDcgQEAgKyAoaW5zdGFuY2V0eXBlKWNv
bmZpZ3VyYXRpb25XaXRoSWRlbnRpZmllcjooTlNVVUlEICopaWRlbnRpZmllcgogewogICAgIE5T
UGFyYW1ldGVyQXNzZXJ0KGlkZW50aWZpZXIpOwogCi0gICAgYXV0byB1dWlkID0gVVVJRDo6ZnJv
bU5TVVVJRChpZGVudGlmaWVyKTsKKyAgICBhdXRvIHV1aWQgPSBXVEY6OlVVSUQ6OmZyb21OU1VV
SUQoaWRlbnRpZmllcik7CiAgICAgUkVMRUFTRV9BU1NFUlQodXVpZCk7CiAgICAgcmV0dXJuIFdl
YktpdDo6V2ViRXh0ZW5zaW9uQ29udHJvbGxlckNvbmZpZ3VyYXRpb246OmNyZWF0ZSgqdXVpZCkt
PndyYXBwZXIoKTsKIH0KQEAgLTg0LDcgKzg0LDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
Q29kZXI6KE5TQ29kZXIgKiljb2RlcgogICAgIE5TVVVJRCAqaWRlbnRpZmllciA9IFtjb2RlciBk
ZWNvZGVPYmplY3RPZkNsYXNzOk5TVVVJRC5jbGFzcyBmb3JLZXk6aWRlbnRpZmllckNvZGluZ0tl
eV07CiAgICAgQk9PTCBwZXJzaXN0ZW50ID0gW2NvZGVyIGRlY29kZUJvb2xGb3JLZXk6cGVyc2lz
dGVudENvZGluZ0tleV07CiAKLSAgICBhdXRvIHV1aWQgPSBVVUlEOjpmcm9tTlNVVUlEKGlkZW50
aWZpZXIpOworICAgIGF1dG8gdXVpZCA9IFdURjo6VVVJRDo6ZnJvbU5TVVVJRChpZGVudGlmaWVy
KTsKICAgICBpZiAodXVpZCkKICAgICAgICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBl
cjxXZWJLaXQ6OldlYkV4dGVuc2lvbkNvbnRyb2xsZXJDb25maWd1cmF0aW9uPihzZWxmLCAqdXVp
ZCk7CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
R3JvdXBBY3Rpdml0aWVzL1dLR3JvdXBTZXNzaW9uLnN3aWZ0IGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvR3JvdXBBY3Rpdml0aWVzL1dLR3JvdXBTZXNzaW9uLnN3aWZ0CmluZGV4IGFj
NWZjMmM3MzIyYi4uYjQ5ZDI4MjE5MzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9Hcm91cEFjdGl2aXRpZXMvV0tHcm91cFNlc3Npb24uc3dpZnQKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvR3JvdXBBY3Rpdml0aWVzL1dLR3JvdXBTZXNzaW9u
LnN3aWZ0CkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYyBmaW5hbCBjbGFzcyBXS0dyb3VwU2Vzc2lv
bldyYXBwZXIgOiBOU09iamVjdCB7CiAgICAgfQogCiAgICAgQG9iamMgcHVibGljIHZhciBhY3Rp
dml0eTogV0tVUkxBY3Rpdml0eVdyYXBwZXIgeyBzZWxmLmFjdGl2aXR5V3JhcHBlciB9Ci0gICAg
QG9iamMgcHVibGljIHZhciB1dWlkOiBVVUlEIHsgZ3JvdXBTZXNzaW9uLmlkIH0KKyAgICBAb2Jq
YyBwdWJsaWMgdmFyIHV1aWQ6IFdURjo6VVVJRCB7IGdyb3VwU2Vzc2lvbi5pZCB9CiAKICAgICBw
cml2YXRlIHN0YXRpYyBmdW5jIHdyYXBwZXJTZXNzaW9uU3RhdGUoc3RhdGU6IEdyb3VwU2Vzc2lv
bjxVUkxBY3Rpdml0eT4uU3RhdGUpIC0+IFdLR3JvdXBTZXNzaW9uU3RhdGUgewogICAgICAgICBz
d2l0Y2ggc3RhdGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
U3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KaW5kZXggODE4NGQ4MjVlNTc4
Li41NGM2YzkzZjcxNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbQpAQCAtMzU4LDcgKzM1
OCw3IEBAIHZvaWQgU3lzdGVtUHJldmlld0NvbnRyb2xsZXI6OnRyaWdnZXJTeXN0ZW1QcmV2aWV3
QWN0aW9uKCkKIAogdm9pZCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6dHJpZ2dlclN5c3RlbVBy
ZXZpZXdBY3Rpb25XaXRoVGFyZ2V0Rm9yVGVzdGluZyh1aW50NjRfdCBlbGVtZW50SUQsIE5TU3Ry
aW5nKiBkb2N1bWVudElELCB1aW50NjRfdCBwYWdlSUQpCiB7Ci0gICAgYXV0byB1dWlkID0gVVVJ
RDo6cGFyc2VWZXJzaW9uNChTdHJpbmcoZG9jdW1lbnRJRCkpOworICAgIGF1dG8gdXVpZCA9IFdU
Rjo6VVVJRDo6cGFyc2VWZXJzaW9uNChTdHJpbmcoZG9jdW1lbnRJRCkpOwogICAgIEFTU0VSVCh1
dWlkKTsKICAgICBpZiAoIXV1aWQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0V4dGVuc2lvbnMvQ29jb2EvV2ViRXh0ZW5zaW9uQ29udGV4dENv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRXh0ZW5zaW9ucy9Db2NvYS9XZWJFeHRl
bnNpb25Db250ZXh0Q29jb2EubW0KaW5kZXggMmFiNmQ5YjA2ZjNlLi5lMTE2YmNhMWIzYzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0V4dGVuc2lvbnMvQ29jb2EvV2ViRXh0
ZW5zaW9uQ29udGV4dENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0V4dGVu
c2lvbnMvQ29jb2EvV2ViRXh0ZW5zaW9uQ29udGV4dENvY29hLm1tCkBAIC0zMTcsNyArMzE3LDcg
QEAgdm9pZCBXZWJFeHRlbnNpb25Db250ZXh0OjpzZXRVbmlxdWVJZGVudGlmaWVyKFN0cmluZyYm
IHVuaXF1ZUlkZW50aWZpZXIpCiAgICAgbV9jdXN0b21VbmlxdWVJZGVudGlmaWVyID0gIXVuaXF1
ZUlkZW50aWZpZXIuaXNFbXB0eSgpOwogCiAgICAgaWYgKHVuaXF1ZUlkZW50aWZpZXIuaXNFbXB0
eSgpKQotICAgICAgICB1bmlxdWVJZGVudGlmaWVyID0gVVVJRDo6Y3JlYXRlVmVyc2lvbjQoKS50
b1N0cmluZygpOworICAgICAgICB1bmlxdWVJZGVudGlmaWVyID0gV1RGOjpVVUlEOjpjcmVhdGVW
ZXJzaW9uNCgpLnRvU3RyaW5nKCk7CiAKICAgICBtX3VuaXF1ZUlkZW50aWZpZXIgPSB1bmlxdWVJ
ZGVudGlmaWVyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRXh0ZW5z
aW9ucy9Db2NvYS9XZWJFeHRlbnNpb25Db250cm9sbGVyQ29uZmlndXJhdGlvbi5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0V4dGVuc2lvbnMvQ29jb2EvV2ViRXh0ZW5zaW9uQ29udHJvbGxl
ckNvbmZpZ3VyYXRpb24ubW0KaW5kZXggZTEwZGNmZjRjYmI0Li42MzgxNGM5ZjM4ZWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0V4dGVuc2lvbnMvQ29jb2EvV2ViRXh0ZW5z
aW9uQ29udHJvbGxlckNvbmZpZ3VyYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvRXh0ZW5zaW9ucy9Db2NvYS9XZWJFeHRlbnNpb25Db250cm9sbGVyQ29uZmlndXJhdGlvbi5t
bQpAQCAtMzcsNyArMzcsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotU3RyaW5nIFdlYkV4
dGVuc2lvbkNvbnRyb2xsZXJDb25maWd1cmF0aW9uOjpjcmVhdGVTdG9yYWdlRGlyZWN0b3J5UGF0
aChzdGQ6Om9wdGlvbmFsPFVVSUQ+IGlkZW50aWZpZXIpCitTdHJpbmcgV2ViRXh0ZW5zaW9uQ29u
dHJvbGxlckNvbmZpZ3VyYXRpb246OmNyZWF0ZVN0b3JhZ2VEaXJlY3RvcnlQYXRoKHN0ZDo6b3B0
aW9uYWw8V1RGOjpVVUlEPiBpZGVudGlmaWVyKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxTdHJpbmc+IGRlZmF1bHRTdG9yYWdlUGF0aDsKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90
IG9uY2VUb2tlbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0V4dGVuc2lv
bnMvV2ViRXh0ZW5zaW9uQ29udGV4dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRXh0ZW5z
aW9ucy9XZWJFeHRlbnNpb25Db250ZXh0LmgKaW5kZXggMjRkZmJmZGIwNDQ2Li5iNjIxMGRkZDJk
M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0V4dGVuc2lvbnMvV2ViRXh0
ZW5zaW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0V4dGVuc2lvbnMv
V2ViRXh0ZW5zaW9uQ29udGV4dC5oCkBAIC0zMTQsNyArMzE0LDcgQEAgcHJpdmF0ZToKICAgICBX
ZWFrUHRyPFdlYkV4dGVuc2lvbkNvbnRyb2xsZXI+IG1fZXh0ZW5zaW9uQ29udHJvbGxlcjsKIAog
ICAgIFVSTCBtX2Jhc2VVUkw7Ci0gICAgU3RyaW5nIG1fdW5pcXVlSWRlbnRpZmllciA9IFVVSUQ6
OmNyZWF0ZVZlcnNpb240KCkudG9TdHJpbmcoKTsKKyAgICBTdHJpbmcgbV91bmlxdWVJZGVudGlm
aWVyID0gV1RGOjpVVUlEOjpjcmVhdGVWZXJzaW9uNCgpLnRvU3RyaW5nKCk7CiAgICAgYm9vbCBt
X2N1c3RvbVVuaXF1ZUlkZW50aWZpZXIgeyBmYWxzZSB9OwogCiAgICAgYm9vbCBtX2luc3BlY3Rh
YmxlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0V4dGVu
c2lvbnMvV2ViRXh0ZW5zaW9uQ29udHJvbGxlckNvbmZpZ3VyYXRpb24uY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvRXh0ZW5zaW9ucy9XZWJFeHRlbnNpb25Db250cm9sbGVyQ29uZmlndXJh
dGlvbi5jcHAKaW5kZXggMTY1NDcwNTJjOTQyLi4zYTFiOTA1OTE5ZDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0V4dGVuc2lvbnMvV2ViRXh0ZW5zaW9uQ29udHJvbGxlckNv
bmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0V4dGVuc2lvbnMv
V2ViRXh0ZW5zaW9uQ29udHJvbGxlckNvbmZpZ3VyYXRpb24uY3BwCkBAIC0zNSw3ICszNSw3IEBA
IFdlYkV4dGVuc2lvbkNvbnRyb2xsZXJDb25maWd1cmF0aW9uOjpXZWJFeHRlbnNpb25Db250cm9s
bGVyQ29uZmlndXJhdGlvbihJc1BlcnNpCiB7CiB9CiAKLVdlYkV4dGVuc2lvbkNvbnRyb2xsZXJD
b25maWd1cmF0aW9uOjpXZWJFeHRlbnNpb25Db250cm9sbGVyQ29uZmlndXJhdGlvbihjb25zdCBV
VUlEJiBpZGVudGlmaWVyKQorV2ViRXh0ZW5zaW9uQ29udHJvbGxlckNvbmZpZ3VyYXRpb246Oldl
YkV4dGVuc2lvbkNvbnRyb2xsZXJDb25maWd1cmF0aW9uKGNvbnN0IFdURjo6VVVJRCYgaWRlbnRp
ZmllcikKICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgICwgbV9zdG9yYWdlRGly
ZWN0b3J5KGNyZWF0ZVN0b3JhZ2VEaXJlY3RvcnlQYXRoKGlkZW50aWZpZXIpKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRXh0ZW5zaW9ucy9XZWJFeHRlbnNpb25Db250
cm9sbGVyQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRXh0ZW5zaW9u
cy9XZWJFeHRlbnNpb25Db250cm9sbGVyQ29uZmlndXJhdGlvbi5oCmluZGV4IGZlMDdlMjBkMjkw
NC4uMGQ0YjFmYjRjNzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9FeHRl
bnNpb25zL1dlYkV4dGVuc2lvbkNvbnRyb2xsZXJDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvRXh0ZW5zaW9ucy9XZWJFeHRlbnNpb25Db250cm9sbGVyQ29uZmln
dXJhdGlvbi5oCkBAIC00NCwxNCArNDQsMTQgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZjxX
ZWJFeHRlbnNpb25Db250cm9sbGVyQ29uZmlndXJhdGlvbj4gY3JlYXRlRGVmYXVsdCgpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgV2ViRXh0ZW5zaW9uQ29udHJvbGxlckNvbmZpZ3VyYXRpb24oSXNQ
ZXJzaXN0ZW50OjpZZXMpKTsgfQogICAgIHN0YXRpYyBSZWY8V2ViRXh0ZW5zaW9uQ29udHJvbGxl
ckNvbmZpZ3VyYXRpb24+IGNyZWF0ZU5vblBlcnNpc3RlbnQoKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYkV4dGVuc2lvbkNvbnRyb2xsZXJDb25maWd1cmF0aW9uKElzUGVyc2lzdGVudDo6Tm8p
KTsgfQotICAgIHN0YXRpYyBSZWY8V2ViRXh0ZW5zaW9uQ29udHJvbGxlckNvbmZpZ3VyYXRpb24+
IGNyZWF0ZShjb25zdCBVVUlEJiBpZGVudGlmaWVyKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFdl
YkV4dGVuc2lvbkNvbnRyb2xsZXJDb25maWd1cmF0aW9uKGlkZW50aWZpZXIpKTsgfQorICAgIHN0
YXRpYyBSZWY8V2ViRXh0ZW5zaW9uQ29udHJvbGxlckNvbmZpZ3VyYXRpb24+IGNyZWF0ZShjb25z
dCBXVEY6OlVVSUQmIGlkZW50aWZpZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViRXh0ZW5z
aW9uQ29udHJvbGxlckNvbmZpZ3VyYXRpb24oaWRlbnRpZmllcikpOyB9CiAKICAgICBSZWY8V2Vi
RXh0ZW5zaW9uQ29udHJvbGxlckNvbmZpZ3VyYXRpb24+IGNvcHkoKSBjb25zdDsKIAogICAgIGV4
cGxpY2l0IFdlYkV4dGVuc2lvbkNvbnRyb2xsZXJDb25maWd1cmF0aW9uKElzUGVyc2lzdGVudCk7
Ci0gICAgZXhwbGljaXQgV2ViRXh0ZW5zaW9uQ29udHJvbGxlckNvbmZpZ3VyYXRpb24oY29uc3Qg
VVVJRCYpOworICAgIGV4cGxpY2l0IFdlYkV4dGVuc2lvbkNvbnRyb2xsZXJDb25maWd1cmF0aW9u
KGNvbnN0IFdURjo6VVVJRCYpOwogCi0gICAgc3RkOjpvcHRpb25hbDxVVUlEPiBpZGVudGlmaWVy
KCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisgICAgc3RkOjpvcHRpb25hbDxXVEY6
OlVVSUQ+IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KIAogICAg
IGJvb2wgc3RvcmFnZUlzUGVyc2lzdGVudCgpIGNvbnN0IHsgcmV0dXJuICFtX3N0b3JhZ2VEaXJl
Y3RvcnkuaXNFbXB0eSgpOyB9CiAgICAgU3RyaW5nIHN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7
IHJldHVybiBtX3N0b3JhZ2VEaXJlY3Rvcnk7IH0KQEAgLTY0LDkgKzY0LDkgQEAgcHVibGljOgog
I2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIFN0cmluZyBjcmVhdGVTdG9yYWdlRGlyZWN0
b3J5UGF0aChzdGQ6Om9wdGlvbmFsPFVVSUQ+ID0gc3RkOjpudWxsb3B0KTsKKyAgICBzdGF0aWMg
U3RyaW5nIGNyZWF0ZVN0b3JhZ2VEaXJlY3RvcnlQYXRoKHN0ZDo6b3B0aW9uYWw8V1RGOjpVVUlE
PiA9IHN0ZDo6bnVsbG9wdCk7CiAKLSAgICBNYXJrYWJsZTxVVUlEPiBtX2lkZW50aWZpZXI7Cisg
ICAgTWFya2FibGU8V1RGOjpVVUlEPiBtX2lkZW50aWZpZXI7CiAgICAgU3RyaW5nIG1fc3RvcmFn
ZURpcmVjdG9yeTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xh
dW5jaGVyL2dsaWIvQnViYmxld3JhcExhdW5jaGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0xhdW5jaGVyL2dsaWIvQnViYmxld3JhcExhdW5jaGVyLmNwcAppbmRleCA4ZmQyYWRlMDhi
ZTguLmYwMGFmOTJkMzg1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1
bmNoZXIvZ2xpYi9CdWJibGV3cmFwTGF1bmNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0xhdW5jaGVyL2dsaWIvQnViYmxld3JhcExhdW5jaGVyLmNwcApAQCAtMTQ4LDcgKzE0
OCw3IEBAIHN0YXRpYyBTdHJpbmcgZWZmZWN0aXZlQXBwbGljYXRpb25JZCgpCiAKICAgICAvLyBJ
ZiBpdCBpcyBub3QgcG9zc2libGUgdG8gb2J0YWluIHRoZSBleGVjdXRhYmxlIHBhdGgsIGdlbmVy
YXRlCiAgICAgLy8gYSByYW5kb20gaWRlbnRpZmllciBhcyBhIGZhbGxiYWNrLgotICAgIGF1dG8g
dXVpZCA9IFVVSUQ6OmNyZWF0ZVZlcnNpb240V2VhaygpOworICAgIGF1dG8gdXVpZCA9IFdURjo6
VVVJRDo6Y3JlYXRlVmVyc2lvbjRXZWFrKCk7CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIm9yZy53
ZWJraXQuYXBwLSIsIHV1aWQudG9TdHJpbmcoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhh
bmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9TZXJ2aWNl
V29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5jcHAKaW5kZXggOTNjYTRlNjE3MTEyLi4zYmU0ZmI5
NTA1NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMv
U2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXIu
Y3BwCkBAIC00NSw3ICs0NSw3IEBAIHZvaWQgU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRs
ZXI6OnJlcXVlc3RTeXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9uKGNvbnN0CiAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotV2Vic2l0ZURhdGFTdG9yZSogU2VydmljZVdv
cmtlck5vdGlmaWNhdGlvbkhhbmRsZXI6OmRhdGFTdG9yZUZvck5vdGlmaWNhdGlvbklEKGNvbnN0
IFVVSUQmIG5vdGlmaWNhdGlvbklEKQorV2Vic2l0ZURhdGFTdG9yZSogU2VydmljZVdvcmtlck5v
dGlmaWNhdGlvbkhhbmRsZXI6OmRhdGFTdG9yZUZvck5vdGlmaWNhdGlvbklEKGNvbnN0IFdURjo6
VVVJRCYgbm90aWZpY2F0aW9uSUQpCiB7CiAgICAgYXV0byBpdGVyYXRvciA9IG1fbm90aWZpY2F0
aW9uVG9TZXNzaW9uTWFwLmZpbmQobm90aWZpY2F0aW9uSUQpOwogICAgIGlmIChpdGVyYXRvciA9
PSBtX25vdGlmaWNhdGlvblRvU2Vzc2lvbk1hcC5lbmQoKSkKQEAgLTY4LDEzICs2OCwxMyBAQCB2
b2lkIFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyOjpzaG93Tm90aWZpY2F0aW9uKElQ
Qzo6Q29ubmVjdGlvbiYgY29ubmVjdAogICAgIGRhdGFTdG9yZS0+c2hvd1NlcnZpY2VXb3JrZXJO
b3RpZmljYXRpb24oY29ubmVjdGlvbiwgZGF0YSk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlck5v
dGlmaWNhdGlvbkhhbmRsZXI6OmNhbmNlbE5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmlj
YXRpb25JRCkKK3ZvaWQgU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXI6OmNhbmNlbE5v
dGlmaWNhdGlvbihjb25zdCBXVEY6OlVVSUQmIG5vdGlmaWNhdGlvbklEKQogewogICAgIGlmIChh
dXRvKiBkYXRhU3RvcmUgPSBkYXRhU3RvcmVGb3JOb3RpZmljYXRpb25JRChub3RpZmljYXRpb25J
RCkpCiAgICAgICAgIGRhdGFTdG9yZS0+Y2FuY2VsU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbihu
b3RpZmljYXRpb25JRCk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRs
ZXI6OmNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8VVVJRD4mIG5vdGlmaWNhdGlvbklE
cykKK3ZvaWQgU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXI6OmNsZWFyTm90aWZpY2F0
aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpVVUlEPiYgbm90aWZpY2F0aW9uSURzKQogewogICAgIGZv
ciAoYXV0byYgbm90aWZpY2F0aW9uSUQgOiBub3RpZmljYXRpb25JRHMpIHsKICAgICAgICAgaWYg
KGF1dG8qIGRhdGFTdG9yZSA9IGRhdGFTdG9yZUZvck5vdGlmaWNhdGlvbklEKG5vdGlmaWNhdGlv
bklEKSkKQEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFu
ZGxlcjo6Y2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3RvcjxVVUlEPiYgbm8KICAgICB9CiB9
CiAKLXZvaWQgU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXI6OmRpZERlc3Ryb3lOb3Rp
ZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpCit2b2lkIFNlcnZpY2VXb3JrZXJO
b3RpZmljYXRpb25IYW5kbGVyOjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKGNvbnN0IFdURjo6VVVJ
RCYgbm90aWZpY2F0aW9uSUQpCiB7CiAgICAgaWYgKGF1dG8qIGRhdGFTdG9yZSA9IGRhdGFTdG9y
ZUZvck5vdGlmaWNhdGlvbklEKG5vdGlmaWNhdGlvbklEKSkKICAgICAgICAgZGF0YVN0b3JlLT5k
aWREZXN0cm95U2VydmljZVdvcmtlck5vdGlmaWNhdGlvbihub3RpZmljYXRpb25JRCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1NlcnZpY2VXb3Jr
ZXJOb3RpZmljYXRpb25IYW5kbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL1NlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyLmgKaW5kZXggOTk0NzBlN2I3
YTU1Li5hZDE1NzdmNzcyYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05v
dGlmaWNhdGlvbnMvU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1NlcnZpY2VXb3JrZXJOb3RpZmljYXRp
b25IYW5kbGVyLmgKQEAgLTM5LDIwICszOSwyMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFNlcnZp
Y2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyJiBzaW5nbGV0b24oKTsKIAogICAgIHZvaWQgc2hv
d05vdGlmaWNhdGlvbihJUEM6OkNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpOb3RpZmljYXRp
b25EYXRhJiwgUmVmUHRyPFdlYkNvcmU6Ok5vdGlmaWNhdGlvblJlc291cmNlcz4mJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKLSAgICB2b2lkIGNhbmNlbE5vdGlmaWNhdGlv
bihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCkgZmluYWw7Ci0gICAgdm9pZCBjbGVhck5vdGlm
aWNhdGlvbnMoY29uc3QgVmVjdG9yPFVVSUQ+JiBub3RpZmljYXRpb25JRHMpIGZpbmFsOwotICAg
IHZvaWQgZGlkRGVzdHJveU5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCkg
ZmluYWw7CisgICAgdm9pZCBjYW5jZWxOb3RpZmljYXRpb24oY29uc3QgV1RGOjpVVUlEJiBub3Rp
ZmljYXRpb25JRCkgZmluYWw7CisgICAgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVj
dG9yPFdURjo6VVVJRD4mIG5vdGlmaWNhdGlvbklEcykgZmluYWw7CisgICAgdm9pZCBkaWREZXN0
cm95Tm90aWZpY2F0aW9uKGNvbnN0IFdURjo6VVVJRCYgbm90aWZpY2F0aW9uSUQpIGZpbmFsOwog
Ci0gICAgYm9vbCBoYW5kbGVzTm90aWZpY2F0aW9uKFVVSUQgdmFsdWUpIGNvbnN0IHsgcmV0dXJu
IG1fbm90aWZpY2F0aW9uVG9TZXNzaW9uTWFwLmNvbnRhaW5zKHZhbHVlKTsgfQorICAgIGJvb2wg
aGFuZGxlc05vdGlmaWNhdGlvbihXVEY6OlVVSUQgdmFsdWUpIGNvbnN0IHsgcmV0dXJuIG1fbm90
aWZpY2F0aW9uVG9TZXNzaW9uTWFwLmNvbnRhaW5zKHZhbHVlKTsgfQogCiBwcml2YXRlOgogICAg
IGV4cGxpY2l0IFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyKCkgPSBkZWZhdWx0Owog
CiAgICAgdm9pZCByZXF1ZXN0U3lzdGVtTm90aWZpY2F0aW9uUGVybWlzc2lvbihjb25zdCBTdHJp
bmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKIAotICAgIFdlYnNp
dGVEYXRhU3RvcmUqIGRhdGFTdG9yZUZvck5vdGlmaWNhdGlvbklEKGNvbnN0IFVVSUQmKTsKKyAg
ICBXZWJzaXRlRGF0YVN0b3JlKiBkYXRhU3RvcmVGb3JOb3RpZmljYXRpb25JRChjb25zdCBXVEY6
OlVVSUQmKTsKIAotICAgIEhhc2hNYXA8VVVJRCwgUEFMOjpTZXNzaW9uSUQ+IG1fbm90aWZpY2F0
aW9uVG9TZXNzaW9uTWFwOworICAgIEhhc2hNYXA8V1RGOjpVVUlELCBQQUw6OlNlc3Npb25JRD4g
bV9ub3RpZmljYXRpb25Ub1Nlc3Npb25NYXA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90
aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2Vi
Tm90aWZpY2F0aW9uLmNwcAppbmRleCBlZDY5MmMzYWY0NzIuLjkwMmVjNTM0ZTQyYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90
aWZpY2F0aW9uLmNwcApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAot
V2ViTm90aWZpY2F0aW9uOjpXZWJOb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0
aW9uRGF0YSYgZGF0YSwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSWRlbnRpZmllciwgY29u
c3Qgc3RkOjpvcHRpb25hbDxVVUlEPiYgZGF0YVN0b3JlSWRlbnRpZmllciwgSVBDOjpDb25uZWN0
aW9uJiBzb3VyY2VDb25uZWN0aW9uKQorV2ViTm90aWZpY2F0aW9uOjpXZWJOb3RpZmljYXRpb24o
Y29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYgZGF0YSwgV2ViUGFnZVByb3h5SWRlbnRp
ZmllciBwYWdlSWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxXVEY6OlVVSUQ+JiBkYXRh
U3RvcmVJZGVudGlmaWVyLCBJUEM6OkNvbm5lY3Rpb24mIHNvdXJjZUNvbm5lY3Rpb24pCiAgICAg
OiBtX2RhdGEoZGF0YSkKICAgICAsIG1fb3JpZ2luKEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0
ZUZyb21TdHJpbmcoZGF0YS5vcmlnaW5TdHJpbmcpKQogICAgICwgbV9wYWdlSWRlbnRpZmllcihw
YWdlSWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlm
aWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbi5oCmluZGV4IDZiZGViNDQ3M2YzNC4uODE2YjViZmRh
ZWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dl
Yk5vdGlmaWNhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlv
bnMvV2ViTm90aWZpY2F0aW9uLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJOb3RpZmljYXRpb24oZGF0YSwgcGFnZUlkZW50aWZpZXIs
IHN0ZDo6bnVsbG9wdCwgc291cmNlQ29ubmVjdGlvbikpOwogICAgIH0KIAotICAgIHN0YXRpYyBS
ZWY8V2ViTm90aWZpY2F0aW9uPiBjcmVhdGVQZXJzaXN0ZW50KGNvbnN0IFdlYkNvcmU6Ok5vdGlm
aWNhdGlvbkRhdGEmIGRhdGEsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8VVVJRD4mIGRhdGFTdG9yZUlk
ZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbiYgc291cmNlQ29ubmVjdGlvbikKKyAgICBzdGF0aWMg
UmVmPFdlYk5vdGlmaWNhdGlvbj4gY3JlYXRlUGVyc2lzdGVudChjb25zdCBXZWJDb3JlOjpOb3Rp
ZmljYXRpb25EYXRhJiBkYXRhLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdURjo6VVVJRD4mIGRhdGFT
dG9yZUlkZW50aWZpZXIsIElQQzo6Q29ubmVjdGlvbiYgc291cmNlQ29ubmVjdGlvbikKICAgICB7
CiAgICAgICAgIEFTU0VSVChkYXRhLmlzUGVyc2lzdGVudCgpKTsKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2ViTm90aWZpY2F0aW9uKGRhdGEsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIo
KSwgZGF0YVN0b3JlSWRlbnRpZmllciwgc291cmNlQ29ubmVjdGlvbikpOwpAQCAtNjEsOCArNjEs
OCBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiB0YWcoKSBjb25zdCB7IHJldHVybiBtX2Rh
dGEudGFnOyB9CiAgICAgY29uc3QgU3RyaW5nJiBsYW5nKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
Lmxhbmd1YWdlOyB9CiAgICAgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGlyZWN0aW9uIGRpcigpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YS5kaXJlY3Rpb247IH0KLSAgICBjb25zdCBVVUlEJiBjb3JlTm90
aWZpY2F0aW9uSUQoKSBjb25zdCB7IHJldHVybiBtX2RhdGEubm90aWZpY2F0aW9uSUQ7IH0KLSAg
ICBjb25zdCBzdGQ6Om9wdGlvbmFsPFVVSUQ+JiBkYXRhU3RvcmVJZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9kYXRhU3RvcmVJZGVudGlmaWVyOyB9CisgICAgY29uc3QgV1RGOjpVVUlEJiBj
b3JlTm90aWZpY2F0aW9uSUQoKSBjb25zdCB7IHJldHVybiBtX2RhdGEubm90aWZpY2F0aW9uSUQ7
IH0KKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFdURjo6VVVJRD4mIGRhdGFTdG9yZUlkZW50aWZp
ZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGFTdG9yZUlkZW50aWZpZXI7IH0KICAgICBQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuc291cmNlU2Vzc2lvbjsg
fQogCiAgICAgY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYgZGF0YSgpIGNvbnN0IHsg
cmV0dXJuIG1fZGF0YTsgfQpAQCAtNzcsMTIgKzc3LDEyIEBAIHB1YmxpYzoKICAgICBSZWZQdHI8
SVBDOjpDb25uZWN0aW9uPiBzb3VyY2VDb25uZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zb3Vy
Y2VDb25uZWN0aW9uLmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgV2ViTm90aWZpY2F0aW9uKGNv
bnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmLCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBj
b25zdCBzdGQ6Om9wdGlvbmFsPFVVSUQ+JiBkYXRhU3RvcmVJZGVudGlmaWVyLCBJUEM6OkNvbm5l
Y3Rpb24mKTsKKyAgICBXZWJOb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9u
RGF0YSYsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V1RGOjpV
VUlEPiYgZGF0YVN0b3JlSWRlbnRpZmllciwgSVBDOjpDb25uZWN0aW9uJik7CiAKICAgICBXZWJD
b3JlOjpOb3RpZmljYXRpb25EYXRhIG1fZGF0YTsKICAgICBSZWZQdHI8QVBJOjpTZWN1cml0eU9y
aWdpbj4gbV9vcmlnaW47CiAgICAgV2ViUGFnZVByb3h5SWRlbnRpZmllciBtX3BhZ2VJZGVudGlm
aWVyOwotICAgIHN0ZDo6b3B0aW9uYWw8VVVJRD4gbV9kYXRhU3RvcmVJZGVudGlmaWVyOworICAg
IHN0ZDo6b3B0aW9uYWw8V1RGOjpVVUlEPiBtX2RhdGFTdG9yZUlkZW50aWZpZXI7CiAgICAgVGhy
ZWFkU2FmZVdlYWtQdHI8SVBDOjpDb25uZWN0aW9uPiBtX3NvdXJjZUNvbm5lY3Rpb247CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5v
dGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5j
cHAKaW5kZXggMzZjOWRlMmRhZjgzLi5iNjAzZDMzOTY5MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3Nh
Z2VIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25z
L1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5jcHAKQEAgLTU2LDcgKzU2LDcg
QEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6OnNob3dOb3RpZmlj
YXRpb24oSVBDOjpDb25uZWN0aW9uJiBjb24KICAgICBjYWxsYmFjaygpOwogfQogCi12b2lkIFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6Y2FuY2VsTm90aWZpY2F0aW9uKGNv
bnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKQordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVz
c2FnZUhhbmRsZXI6OmNhbmNlbE5vdGlmaWNhdGlvbihjb25zdCBXVEY6OlVVSUQmIG5vdGlmaWNh
dGlvbklEKQogewogICAgIGF1dG8mIHNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5kbGVyID0g
U2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXI6OnNpbmdsZXRvbigpOwogICAgIGlmIChz
ZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5oYW5kbGVzTm90aWZpY2F0aW9uKG5vdGlm
aWNhdGlvbklEKSkgewpAQCAtNjYsMTIgKzY2LDEyIEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFu
YWdlck1lc3NhZ2VIYW5kbGVyOjpjYW5jZWxOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZp
CiAgICAgbV93ZWJQYWdlUHJveHkuY2FuY2VsTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbklEKTsK
IH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6OmNsZWFyTm90
aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8VVVJRD4mIG5vdGlmaWNhdGlvbklEcykKK3ZvaWQgV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpjbGVhck5vdGlmaWNhdGlvbnMoY29u
c3QgVmVjdG9yPFdURjo6VVVJRD4mIG5vdGlmaWNhdGlvbklEcykKIHsKICAgICBhdXRvJiBzZXJ2
aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlciA9IFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25I
YW5kbGVyOjpzaW5nbGV0b24oKTsKIAotICAgIFZlY3RvcjxVVUlEPiBwZXJzaXN0ZW50Tm90aWZp
Y2F0aW9uczsKLSAgICBWZWN0b3I8VVVJRD4gcGFnZU5vdGlmaWNhdGlvbnM7CisgICAgVmVjdG9y
PFdURjo6VVVJRD4gcGVyc2lzdGVudE5vdGlmaWNhdGlvbnM7CisgICAgVmVjdG9yPFdURjo6VVVJ
RD4gcGFnZU5vdGlmaWNhdGlvbnM7CiAgICAgcGVyc2lzdGVudE5vdGlmaWNhdGlvbnMucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShub3RpZmljYXRpb25JRHMuc2l6ZSgpKTsKICAgICBwYWdlTm90aWZp
Y2F0aW9ucy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG5vdGlmaWNhdGlvbklEcy5zaXplKCkpOwog
ICAgIGZvciAoYXV0byYgbm90aWZpY2F0aW9uSUQgOiBub3RpZmljYXRpb25JRHMpIHsKQEAgLTg2
LDcgKzg2LDcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6OmNs
ZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8VVVJRD4KICAgICAgICAgbV93ZWJQYWdlUHJv
eHkuY2xlYXJOb3RpZmljYXRpb25zKHBhZ2VOb3RpZmljYXRpb25zKTsKIH0KIAotdm9pZCBXZWJO
b3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24o
Y29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJN
ZXNzYWdlSGFuZGxlcjo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihjb25zdCBXVEY6OlVVSUQmIG5v
dGlmaWNhdGlvbklEKQogewogICAgIGF1dG8mIHNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25IYW5k
bGVyID0gU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbkhhbmRsZXI6OnNpbmdsZXRvbigpOwogICAg
IGlmIChzZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uSGFuZGxlci5oYW5kbGVzTm90aWZpY2F0aW9u
KG5vdGlmaWNhdGlvbklEKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdl
ck1lc3NhZ2VIYW5kbGVyLmgKaW5kZXggNDgwYWRlMzEwODliLi44NDJlZTg4ZTI3ZTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0
aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaApAQCAt
MzgsOSArMzgsOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZXF1ZXN0U3lzdGVtTm90aWZpY2F0
aW9uUGVybWlzc2lvbihjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmKSBmaW5hbDsKICAgICB2b2lkIHNob3dOb3RpZmljYXRpb24oSVBDOjpDb25uZWN0aW9uJiwg
Y29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YSYsIFJlZlB0cjxXZWJDb3JlOjpOb3RpZmlj
YXRpb25SZXNvdXJjZXM+JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7Ci0g
ICAgdm9pZCBjYW5jZWxOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpIGZp
bmFsOwotICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3RvcjxVVUlEPiYgbm90
aWZpY2F0aW9uSURzKSBmaW5hbDsKLSAgICB2b2lkIGRpZERlc3Ryb3lOb3RpZmljYXRpb24oY29u
c3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpIGZpbmFsOworICAgIHZvaWQgY2FuY2VsTm90aWZpY2F0
aW9uKGNvbnN0IFdURjo6VVVJRCYgbm90aWZpY2F0aW9uSUQpIGZpbmFsOworICAgIHZvaWQgY2xl
YXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3RvcjxXVEY6OlVVSUQ+JiBub3RpZmljYXRpb25JRHMp
IGZpbmFsOworICAgIHZvaWQgZGlkRGVzdHJveU5vdGlmaWNhdGlvbihjb25zdCBXVEY6OlVVSUQm
IG5vdGlmaWNhdGlvbklEKSBmaW5hbDsKIAogICAgIFdlYlBhZ2VQcm94eSYgbV93ZWJQYWdlUHJv
eHk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9u
cy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCmluZGV4IDU0
MjViNjMyOWZhNi4uYTVkODQ1MDBjNjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHkuY3BwCkBAIC0xMjcsNyArMTI3LDcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHk6OnNob3dJbXBsKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgUmVmPFdlYk5vdGlmaWMK
ICAgICBtX3Byb3ZpZGVyLT5zaG93KHdlYlBhZ2UsIG5vdGlmaWNhdGlvbi5nZXQoKSwgV1RGTW92
ZShub3RpZmljYXRpb25SZXNvdXJjZXMpKTsKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHk6OmNhbmNlbChXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFVVSUQmIHBhZ2VOb3Rp
ZmljYXRpb25JRCkKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpjYW5jZWwoV2Vi
UGFnZVByb3h5KiBwYWdlLCBjb25zdCBXVEY6OlVVSUQmIHBhZ2VOb3RpZmljYXRpb25JRCkKIHsK
ICAgICBpZiAoYXV0byB3ZWJOb3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbnMuZ2V0KHBhZ2VO
b3RpZmljYXRpb25JRCkpIHsKICAgICAgICAgbV9wcm92aWRlci0+Y2FuY2VsKCp3ZWJOb3RpZmlj
YXRpb24pOwpAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5OjpjYW5jZWwoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBVVUlEJiBwYWdlTm90CiAgICAg
fQogfQogICAgIAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmRpZERlc3Ryb3lO
b3RpZmljYXRpb24oV2ViUGFnZVByb3h5KiwgY29uc3QgVVVJRCYgcGFnZU5vdGlmaWNhdGlvbklE
KQordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmRpZERlc3Ryb3lOb3RpZmljYXRp
b24oV2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpVVUlEJiBwYWdlTm90aWZpY2F0aW9uSUQpCiB7
CiAgICAgaWYgKGF1dG8gd2ViTm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25zLnRha2UocGFn
ZU5vdGlmaWNhdGlvbklEKSkgewogICAgICAgICBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5yZW1v
dmUod2ViTm90aWZpY2F0aW9uLT5ub3RpZmljYXRpb25JRCgpKTsKQEAgLTE0OSw3ICsxNDksNyBA
QCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2xlYXJOb3RpZmljYXRpb25zKFdl
YlBhZ2VQcm94eSogd2ViUGFnZSkKICAgICBjbGVhck5vdGlmaWNhdGlvbnMod2ViUGFnZSwgeyB9
KTsKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNsZWFyTm90aWZpY2F0
aW9ucyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0IFZlY3RvcjxVVUlEPiYgcGFnZU5vdGlm
aWNhdGlvbklEcykKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpjbGVhck5vdGlm
aWNhdGlvbnMoV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBjb25zdCBWZWN0b3I8V1RGOjpVVUlEPiYg
cGFnZU5vdGlmaWNhdGlvbklEcykKIHsKICAgICBWZWN0b3I8dWludDY0X3Q+IGdsb2JhbE5vdGlm
aWNhdGlvbklEczsKICAgICBnbG9iYWxOb3RpZmljYXRpb25JRHMucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5zaXplKCkpOwpAQCAtMjI4LDcgKzIyOCw3IEBA
IHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZENsaWNrTm90aWZp
Y2F0aW9uKHVpbnQ2NF90IGdsb2JhbE5vCiAgICAgZGlzcGF0Y2hEaWRDbGlja05vdGlmaWNhdGlv
bihtX25vdGlmaWNhdGlvbnMuZ2V0KGl0LT52YWx1ZSkpOwogfQogCi12b2lkIFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbihjb25zdCBVVUlE
JiBjb3JlTm90aWZpY2F0aW9uSUQpCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6
cHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbihjb25zdCBXVEY6OlVVSUQmIGNvcmVOb3RpZmlj
YXRpb25JRCkKIHsKICAgICBkaXNwYXRjaERpZENsaWNrTm90aWZpY2F0aW9uKG1fbm90aWZpY2F0
aW9ucy5nZXQoY29yZU5vdGlmaWNhdGlvbklEKSk7CiB9CkBAIC0yNDIsNyArMjQyLDcgQEAgdm9p
ZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xvc2VOb3RpZmljYXRp
b25zKEFQSTo6QXJyYXkqIGdsb2IKICAgICAgICAgLy8gVGhlIHBhc3NlZCBhcnJheSBtaWdodCBo
YXZlIHVpbnQ2NF90IGlkZW50aWZpZXJzIG9yIFVVSUQgZGF0YSBpZGVudGlmaWVycy4KICAgICAg
ICAgLy8gSGFuZGxlIGJvdGguCiAKLSAgICAgICAgc3RkOjpvcHRpb25hbDxVVUlEPiBjb3JlTm90
aWZpY2F0aW9uSUQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8V1RGOjpVVUlEPiBjb3JlTm90aWZp
Y2F0aW9uSUQ7CiAgICAgICAgIGF1dG8qIGludFZhbHVlID0gZ2xvYmFsTm90aWZpY2F0aW9uSURz
LT5hdDxBUEk6OlVJbnQ2ND4oaSk7CiAgICAgICAgIGlmIChpbnRWYWx1ZSkgewogICAgICAgICAg
ICAgYXV0byBpdCA9IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLmZpbmQoaW50VmFsdWUtPnZhbHVl
KCkpOwpAQCAtMjU5LDcgKzI1OSw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
Ojpwcm92aWRlckRpZENsb3NlTm90aWZpY2F0aW9ucyhBUEk6OkFycmF5KiBnbG9iCiAgICAgICAg
ICAgICBpZiAoc3Bhbi5zaXplKCkgIT0gMTYpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAK
LSAgICAgICAgICAgIGNvcmVOb3RpZmljYXRpb25JRCA9IFVVSUQgeyBTcGFuPGNvbnN0IHVpbnQ4
X3QsIDE2PiB7IHNwYW4uZGF0YSgpLCAxNiB9IH07CisgICAgICAgICAgICBjb3JlTm90aWZpY2F0
aW9uSUQgPSBXVEY6OlVVSUQgeyBTcGFuPGNvbnN0IHVpbnQ4X3QsIDE2PiB7IHNwYW4uZGF0YSgp
LCAxNiB9IH07CiAgICAgICAgIH0KIAogICAgICAgICBBU1NFUlQoY29yZU5vdGlmaWNhdGlvbklE
KTsKQEAgLTI4NSw3ICsyODUsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6
cHJvdmlkZXJEaWRDbG9zZU5vdGlmaWNhdGlvbnMoQVBJOjpBcnJheSogZ2xvYgogICAgIGZvciAo
YXV0byYgbm90aWZpY2F0aW9uIDogY2xvc2VkTm90aWZpY2F0aW9ucykgewogICAgICAgICBpZiAo
YXV0byBjb25uZWN0aW9uID0gbm90aWZpY2F0aW9uLT5zb3VyY2VDb25uZWN0aW9uKCkpIHsKICAg
ICAgICAgICAgIExPRyhOb3RpZmljYXRpb25zLCAiUHJvdmlkZXIgZGlkIGNsb3NlIG5vdGlmaWNh
dGlvbiAoJXMpIiwgbm90aWZpY2F0aW9uLT5jb3JlTm90aWZpY2F0aW9uSUQoKS50b1N0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICAgICAgVmVjdG9yPFVVSUQ+IG5vdGlmaWNhdGlvbklE
cyA9IHsgbm90aWZpY2F0aW9uLT5jb3JlTm90aWZpY2F0aW9uSUQoKSB9OworICAgICAgICAgICAg
VmVjdG9yPFdURjo6VVVJRD4gbm90aWZpY2F0aW9uSURzID0geyBub3RpZmljYXRpb24tPmNvcmVO
b3RpZmljYXRpb25JRCgpIH07CiAgICAgICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpEaWRDbG9zZU5vdGlmaWNhdGlvbnMobm90aWZpY2F0
aW9uSURzKSwgMCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHkuaAppbmRleCAzNmM1OWVmOGExYWMuLjA5YzdkZWYzYWIxNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oCkBAIC02NywxNiArNjcsMTYgQEAgcHVibGljOgog
CiAgICAgdm9pZCBzaG93KFdlYlBhZ2VQcm94eSosIElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFdl
YkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmLCBSZWZQdHI8V2ViQ29yZTo6Tm90aWZpY2F0aW9uUmVz
b3VyY2VzPiYmKTsKICAgICB2b2lkIHNob3coY29uc3QgV2Vic2l0ZURhdGFTdG9yZSYsIElQQzo6
Q29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEmLCBSZWZQdHI8V2Vi
Q29yZTo6Tm90aWZpY2F0aW9uUmVzb3VyY2VzPiYmKTsKLSAgICB2b2lkIGNhbmNlbChXZWJQYWdl
UHJveHkqLCBjb25zdCBVVUlEJiBwYWdlTm90aWZpY2F0aW9uSUQpOworICAgIHZvaWQgY2FuY2Vs
KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6VVVJRCYgcGFnZU5vdGlmaWNhdGlvbklEKTsKICAg
ICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqKTsKLSAgICB2b2lkIGNsZWFy
Tm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqLCBjb25zdCBWZWN0b3I8VVVJRD4mIHBhZ2VOb3Rp
ZmljYXRpb25JRHMpOwotICAgIHZvaWQgZGlkRGVzdHJveU5vdGlmaWNhdGlvbihXZWJQYWdlUHJv
eHkqLCBjb25zdCBVVUlEJiBwYWdlTm90aWZpY2F0aW9uSUQpOworICAgIHZvaWQgY2xlYXJOb3Rp
ZmljYXRpb25zKFdlYlBhZ2VQcm94eSosIGNvbnN0IFZlY3RvcjxXVEY6OlVVSUQ+JiBwYWdlTm90
aWZpY2F0aW9uSURzKTsKKyAgICB2b2lkIGRpZERlc3Ryb3lOb3RpZmljYXRpb24oV2ViUGFnZVBy
b3h5KiwgY29uc3QgV1RGOjpVVUlEJiBwYWdlTm90aWZpY2F0aW9uSUQpOwogCiAgICAgdm9pZCBn
ZXROb3RpZmljYXRpb25zKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIFBBTDo6U2Vzc2lvbklE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpOb3RpZmljYXRpb25EYXRh
PiYmKT4mJik7CiAKICAgICB2b2lkIHByb3ZpZGVyRGlkU2hvd05vdGlmaWNhdGlvbih1aW50NjRf
dCBub3RpZmljYXRpb25JRCk7CiAgICAgdm9pZCBwcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9u
KHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKLSAgICB2b2lkIHByb3ZpZGVyRGlkQ2xpY2tOb3Rp
ZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpOworICAgIHZvaWQgcHJvdmlkZXJE
aWRDbGlja05vdGlmaWNhdGlvbihjb25zdCBXVEY6OlVVSUQmIG5vdGlmaWNhdGlvbklEKTsKICAg
ICB2b2lkIHByb3ZpZGVyRGlkQ2xvc2VOb3RpZmljYXRpb25zKEFQSTo6QXJyYXkqIG5vdGlmaWNh
dGlvbklEcyk7CiAgICAgdm9pZCBwcm92aWRlckRpZFVwZGF0ZU5vdGlmaWNhdGlvblBvbGljeShj
b25zdCBBUEk6OlNlY3VyaXR5T3JpZ2luKiwgYm9vbCBhbGxvd2VkKTsKICAgICB2b2lkIHByb3Zp
ZGVyRGlkUmVtb3ZlTm90aWZpY2F0aW9uUG9saWNpZXMoQVBJOjpBcnJheSogb3JpZ2lucyk7CkBA
IC05Niw4ICs5Niw4IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpOb3Rp
ZmljYXRpb25Qcm92aWRlcj4gbV9wcm92aWRlcjsKIAotICAgIEhhc2hNYXA8dWludDY0X3QsIFVV
SUQ+IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwOwotICAgIEhhc2hNYXA8VVVJRCwgUmVmPFdlYk5v
dGlmaWNhdGlvbj4+IG1fbm90aWZpY2F0aW9uczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBXVEY6
OlVVSUQ+IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwOworICAgIEhhc2hNYXA8V1RGOjpVVUlELCBS
ZWY8V2ViTm90aWZpY2F0aW9uPj4gbV9ub3RpZmljYXRpb25zOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBi
NDkwZWQzYTZhN2EuLjk1ZjQ2OWJiYzFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCkBAIC05NjU0LDE3ICs5NjU0LDE3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpz
aG93Tm90aWZpY2F0aW9uKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgV2ViQ29y
ZTo6CiAgICAgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5kZWxheVN1c3BlbnNpb24oKTsKIH0KIAot
dm9pZCBXZWJQYWdlUHJveHk6OmNhbmNlbE5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmlj
YXRpb25JRCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpjYW5jZWxOb3RpZmljYXRpb24oY29uc3QgV1RG
OjpVVUlEJiBub3RpZmljYXRpb25JRCkKIHsKICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCku
c3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCktPmNhbmNlbCh0aGlzLCBu
b3RpZmljYXRpb25JRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpjbGVhck5vdGlmaWNhdGlv
bnMoY29uc3QgVmVjdG9yPFVVSUQ+JiBub3RpZmljYXRpb25JRHMpCit2b2lkIFdlYlBhZ2VQcm94
eTo6Y2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3RvcjxXVEY6OlVVSUQ+JiBub3RpZmljYXRp
b25JRHMpCiB7CiAgICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnN1cHBsZW1lbnQ8V2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5PigpLT5jbGVhck5vdGlmaWNhdGlvbnModGhpcywgbm90aWZp
Y2F0aW9uSURzKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZERlc3Ryb3lOb3RpZmljYXRp
b24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRGVz
dHJveU5vdGlmaWNhdGlvbihjb25zdCBXVEY6OlVVSUQmIG5vdGlmaWNhdGlvbklEKQogewogICAg
IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJQcm94eT4oKS0+ZGlkRGVzdHJveU5vdGlmaWNhdGlvbih0aGlzLCBub3RpZmljYXRpb25JRCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDE4ZjdkNjk4M2Fj
Zi4uZWVkMTgzYzI2YzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApA
QCAtMjE0OSw5ICsyMTQ5LDkgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIHNob3dOb3Rp
ZmljYXRpb24oSVBDOjpDb25uZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0
YSYsIFJlZlB0cjxXZWJDb3JlOjpOb3RpZmljYXRpb25SZXNvdXJjZXM+JiYpOwotICAgIHZvaWQg
Y2FuY2VsTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKTsKLSAgICB2b2lk
IGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8VVVJRD4mIG5vdGlmaWNhdGlvbklEcyk7
Ci0gICAgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlv
bklEKTsKKyAgICB2b2lkIGNhbmNlbE5vdGlmaWNhdGlvbihjb25zdCBXVEY6OlVVSUQmIG5vdGlm
aWNhdGlvbklEKTsKKyAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8V1RG
OjpVVUlEPiYgbm90aWZpY2F0aW9uSURzKTsKKyAgICB2b2lkIGRpZERlc3Ryb3lOb3RpZmljYXRp
b24oY29uc3QgV1RGOjpVVUlEJiBub3RpZmljYXRpb25JRCk7CiAKICAgICB2b2lkIHJlcXVlc3RD
b29raWVDb25zZW50KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6Q29va2llQ29uc2Vu
dERlY2lzaW9uUmVzdWx0KT4mJik7CiAgICAgdm9pZCBjbGFzc2lmeU1vZGFsQ29udGFpbmVyQ29u
dHJvbHMoVmVjdG9yPFN0cmluZz4mJiB0ZXh0cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8V2ViQ29yZTo6TW9kYWxDb250YWluZXJDb250cm9sVHlwZT4mJik+JiYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggNThjOWVkZTBlMmQ3Li5j
MjllYjkzMmRmYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmNwcApAQCAtMTI3OCw3ICsxMjc4LDcgQEAgYm9vbCBXZWJQcm9jZXNzUHJveHk6Ondhc1ByZXZp
b3VzbHlBcHByb3ZlZEZpbGVVUkwoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiAgICAgcmV0dXJuIG1f
cHJldmlvdXNseUFwcHJvdmVkRmlsZVBhdGhzLmNvbnRhaW5zKGZpbGVTeXN0ZW1QYXRoKTsKIH0K
IAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlY29yZFVzZXJHZXN0dXJlQXV0aG9yaXphdGlvblRv
a2VuKFVVSUQgYXV0aG9yaXphdGlvblRva2VuKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlY29y
ZFVzZXJHZXN0dXJlQXV0aG9yaXphdGlvblRva2VuKFdURjo6VVVJRCBhdXRob3JpemF0aW9uVG9r
ZW4pCiB7CiAgICAgaWYgKCFVc2VySW5pdGlhdGVkQWN0aW9uQnlBdXRob3JpemF0aW9uVG9rZW5N
YXA6OmlzVmFsaWRLZXkoYXV0aG9yaXphdGlvblRva2VuKSB8fCAhYXV0aG9yaXphdGlvblRva2Vu
KQogICAgICAgICByZXR1cm47CkBAIC0xMjk5LDcgKzEyOTksNyBAQCBSZWZQdHI8QVBJOjpVc2Vy
SW5pdGlhdGVkQWN0aW9uPiBXZWJQcm9jZXNzUHJveHk6OnVzZXJJbml0aWF0ZWRBY3Rpdml0eSh1
aW50NjRfdAogICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogfQogCi1SZWZQdHI8
QVBJOjpVc2VySW5pdGlhdGVkQWN0aW9uPiBXZWJQcm9jZXNzUHJveHk6OnVzZXJJbml0aWF0ZWRB
Y3Rpdml0eShzdGQ6Om9wdGlvbmFsPFVVSUQ+IGF1dGhvcml6YXRpb25Ub2tlbiwgdWludDY0X3Qg
aWRlbnRpZmllcikKK1JlZlB0cjxBUEk6OlVzZXJJbml0aWF0ZWRBY3Rpb24+IFdlYlByb2Nlc3NQ
cm94eTo6dXNlckluaXRpYXRlZEFjdGl2aXR5KHN0ZDo6b3B0aW9uYWw8V1RGOjpVVUlEPiBhdXRo
b3JpemF0aW9uVG9rZW4sIHVpbnQ2NF90IGlkZW50aWZpZXIpCiB7CiAgICAgaWYgKCFVc2VySW5p
dGlhdGVkQWN0aW9uTWFwOjppc1ZhbGlkS2V5KGlkZW50aWZpZXIpIHx8ICFpZGVudGlmaWVyKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTEzMTcsNyArMTMxNyw3IEBAIFJlZlB0cjxBUEk6
OlVzZXJJbml0aWF0ZWRBY3Rpb24+IFdlYlByb2Nlc3NQcm94eTo6dXNlckluaXRpYXRlZEFjdGl2
aXR5KHN0ZDo6b3B0CiAgICAgcmV0dXJuIHVzZXJJbml0aWF0ZWRBY3Rpdml0eShpZGVudGlmaWVy
KTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OmNvbnN1bWVJZk5vdFZlcmlmaWFibHlGcm9t
VUlQcm9jZXNzKEFQSTo6VXNlckluaXRpYXRlZEFjdGlvbiYgYWN0aW9uLCBzdGQ6Om9wdGlvbmFs
PFVVSUQ+IGF1dGhUb2tlbikKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpjb25zdW1lSWZOb3RWZXJp
ZmlhYmx5RnJvbVVJUHJvY2VzcyhBUEk6OlVzZXJJbml0aWF0ZWRBY3Rpb24mIGFjdGlvbiwgc3Rk
OjpvcHRpb25hbDxXVEY6OlVVSUQ+IGF1dGhUb2tlbikKIHsKICAgICBpZiAoYXV0aFRva2VuICYm
IG1fdXNlckluaXRpYXRlZEFjdGlvbkJ5QXV0aG9yaXphdGlvblRva2VuTWFwLnJlbW92ZSgqYXV0
aFRva2VuKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaAppbmRleCBkNGZhMDZlNGQ5YzMuLmJmM2M0NWJlNzEyNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTE0Miw3ICsxNDIsNyBAQCBlbnVt
IGNsYXNzIENoZWNrQmFja0ZvcndhcmRMaXN0IDogYm9vbCB7IE5vLCBZZXMgfTsKIGNsYXNzIFdl
YlByb2Nlc3NQcm94eSA6IHB1YmxpYyBBdXhpbGlhcnlQcm9jZXNzUHJveHksIHByaXZhdGUgUHJv
Y2Vzc1Rocm90dGxlckNsaWVudCB7CiBwdWJsaWM6CiAgICAgdXNpbmcgV2ViUGFnZVByb3h5TWFw
ID0gSGFzaE1hcDxXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWFrUHRyPFdlYlBhZ2VQcm94eT4+
OwotICAgIHVzaW5nIFVzZXJJbml0aWF0ZWRBY3Rpb25CeUF1dGhvcml6YXRpb25Ub2tlbk1hcCA9
IEhhc2hNYXA8VVVJRCwgUmVmUHRyPEFQSTo6VXNlckluaXRpYXRlZEFjdGlvbj4+OworICAgIHVz
aW5nIFVzZXJJbml0aWF0ZWRBY3Rpb25CeUF1dGhvcml6YXRpb25Ub2tlbk1hcCA9IEhhc2hNYXA8
V1RGOjpVVUlELCBSZWZQdHI8QVBJOjpVc2VySW5pdGlhdGVkQWN0aW9uPj47CiAgICAgdHlwZWRl
ZiBIYXNoTWFwPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2Vha1B0cjxXZWJGcmFtZVByb3h5
Pj4gV2ViRnJhbWVQcm94eU1hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0
cjxBUEk6OlVzZXJJbml0aWF0ZWRBY3Rpb24+PiBVc2VySW5pdGlhdGVkQWN0aW9uTWFwOwogCkBA
IC0yMzksMTEgKzIzOSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eShXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSYpOwogICAgIHZvaWQg
ZGlkRGVzdHJveVdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5Jik7CiAKLSAgICB2b2lkIHJlY29yZFVzZXJHZXN0dXJlQXV0aG9yaXphdGlv
blRva2VuKFVVSUQpOworICAgIHZvaWQgcmVjb3JkVXNlckdlc3R1cmVBdXRob3JpemF0aW9uVG9r
ZW4oV1RGOjpVVUlEKTsKICAgICBSZWZQdHI8QVBJOjpVc2VySW5pdGlhdGVkQWN0aW9uPiB1c2Vy
SW5pdGlhdGVkQWN0aXZpdHkodWludDY0X3QpOwotICAgIFJlZlB0cjxBUEk6OlVzZXJJbml0aWF0
ZWRBY3Rpb24+IHVzZXJJbml0aWF0ZWRBY3Rpdml0eShzdGQ6Om9wdGlvbmFsPFVVSUQ+LCB1aW50
NjRfdCk7CisgICAgUmVmUHRyPEFQSTo6VXNlckluaXRpYXRlZEFjdGlvbj4gdXNlckluaXRpYXRl
ZEFjdGl2aXR5KHN0ZDo6b3B0aW9uYWw8V1RGOjpVVUlEPiwgdWludDY0X3QpOwogCi0gICAgdm9p
ZCBjb25zdW1lSWZOb3RWZXJpZmlhYmx5RnJvbVVJUHJvY2VzcyhBUEk6OlVzZXJJbml0aWF0ZWRB
Y3Rpb24mLCBzdGQ6Om9wdGlvbmFsPFVVSUQ+KTsKKyAgICB2b2lkIGNvbnN1bWVJZk5vdFZlcmlm
aWFibHlGcm9tVUlQcm9jZXNzKEFQSTo6VXNlckluaXRpYXRlZEFjdGlvbiYsIHN0ZDo6b3B0aW9u
YWw8V1RGOjpVVUlEPik7CiAKICAgICBib29sIGlzUmVzcG9uc2l2ZSgpIGNvbnN0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRl
RGF0YVN0b3JlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9D
b2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KaW5kZXggNTNlMTc5YjJlNjdmLi5lM2JmNTc3
MjViMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0Nv
Y29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KQEAgLTI2MSwxMyAr
MjYxLDEzIEBAIHN0YXRpYyBTdHJpbmcgZGVmYXVsdFdlYnNpdGVEYXRhU3RvcmVSb290RGlyZWN0
b3J5KCkKICAgICByZXR1cm4gd2Vic2l0ZURhdGFTdG9yZURpcmVjdG9yeS5nZXQoKS5nZXQoKS5h
YnNvbHV0ZVVSTC5wYXRoOwogfQogCi12b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoQWxsRGF0
YVN0b3JlSWRlbnRpZmllcnMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8VVVJRD4mJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoQWxsRGF0
YVN0b3JlSWRlbnRpZmllcnMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V1RGOjpVVUlE
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgp
KTsKIAogICAgIHdlYnNpdGVEYXRhU3RvcmVJT1F1ZXVlKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGRpcmVjdG9yeSA9IGRlZmF1bHRX
ZWJzaXRlRGF0YVN0b3JlUm9vdERpcmVjdG9yeSgpLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUg
ewogICAgICAgICBhdXRvIGlkZW50aWZpZXJzID0gV1RGOjpjb21wYWN0TWFwKEZpbGVTeXN0ZW06
Omxpc3REaXJlY3RvcnkoZGlyZWN0b3J5KSwgW10oYXV0byYmIGlkZW50aWZpZXJTdHJpbmcpIHsK
LSAgICAgICAgICAgIHJldHVybiBVVUlEOjpwYXJzZShpZGVudGlmaWVyU3RyaW5nKTsKKyAgICAg
ICAgICAgIHJldHVybiBXVEY6OlVVSUQ6OnBhcnNlKGlkZW50aWZpZXJTdHJpbmcpOwogICAgICAg
ICB9KTsKICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBpZGVudGlmaWVycyA9IGNyb3NzVGhyZWFk
Q29weShXVEZNb3ZlKGlkZW50aWZpZXJzKSldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKGlkZW50aWZpZXJzKSk7CkBAIC0yNzUsNyArMjc1LDcgQEAg
dm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpmZXRjaEFsbERhdGFTdG9yZUlkZW50aWZpZXJzKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVmVjdG8KICAgICB9KTsKIH0KIAotdm9pZCBXZWJzaXRlRGF0YVN0
b3JlOjpyZW1vdmVEYXRhU3RvcmVXaXRoSWRlbnRpZmllcihjb25zdCBVVUlEJiBpZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhU3RvcmVXaXRoSWRlbnRpZmll
cihjb25zdCBXVEY6OlVVSUQmIGlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblJ1
bkxvb3AoKSk7CiAKQEAgLTMwOSw3ICszMDksNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJl
bW92ZURhdGFTdG9yZVdpdGhJZGVudGlmaWVyKGNvbnN0IFVVSUQmIGlkZW50aWZpZXIsIENvbQog
ICAgIH0pOwogfQogCi1TdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYnNpdGVEYXRh
U3RvcmVEaXJlY3RvcnkoY29uc3QgVVVJRCYgaWRlbnRpZmllcikKK1N0cmluZyBXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0V2Vic2l0ZURhdGFTdG9yZURpcmVjdG9yeShjb25zdCBXVEY6OlVVSUQm
IGlkZW50aWZpZXIpCiB7CiAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChkZWZhdWx0V2Vic2l0ZURhdGFTdG9yZVJvb3REaXJlY3RvcnkoKSwgaWRlbnRpZmll
ci50b1N0cmluZygpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggZWIyMmMxYTA4YTgwLi4yZjky
Y2EzZTU4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0yMzgsNyArMjM4LDcgQEAgYm9vbCBXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlRXhpc3RzKCkKICAgICByZXR1cm4gISFnbG9i
YWxEZWZhdWx0RGF0YVN0b3JlKCk7CiB9CiAKLVJlZlB0cjxXZWJzaXRlRGF0YVN0b3JlPiBXZWJz
aXRlRGF0YVN0b3JlOjpleGlzdGluZ0RhdGFTdG9yZUZvcklkZW50aWZpZXIoY29uc3QgVVVJRCYg
aWRlbnRpZmllcikKK1JlZlB0cjxXZWJzaXRlRGF0YVN0b3JlPiBXZWJzaXRlRGF0YVN0b3JlOjpl
eGlzdGluZ0RhdGFTdG9yZUZvcklkZW50aWZpZXIoY29uc3QgV1RGOjpVVUlEJiBpZGVudGlmaWVy
KQogewogICAgIGZvciAoYXV0byogZGF0YVN0b3JlIDogYWxsRGF0YVN0b3JlcygpLnZhbHVlcygp
KSB7CiAgICAgICAgIGlmIChkYXRhU3RvcmUgJiYgZGF0YVN0b3JlLT5jb25maWd1cmF0aW9uKCku
aWRlbnRpZmllcigpID09IGlkZW50aWZpZXIpCkBAIC0yNDksNyArMjQ5LDcgQEAgUmVmUHRyPFdl
YnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6OmV4aXN0aW5nRGF0YVN0b3JlRm9ySWRl
bnRpZmllcihjb25zdAogfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi1SZWY8V2Vic2l0ZURhdGFT
dG9yZT4gV2Vic2l0ZURhdGFTdG9yZTo6ZGF0YVN0b3JlRm9ySWRlbnRpZmllcihjb25zdCBVVUlE
JiB1dWlkKQorUmVmPFdlYnNpdGVEYXRhU3RvcmU+IFdlYnNpdGVEYXRhU3RvcmU6OmRhdGFTdG9y
ZUZvcklkZW50aWZpZXIoY29uc3QgV1RGOjpVVUlEJiB1dWlkKQogewogICAgIFJFTEVBU0VfQVNT
RVJUKHV1aWQuaXNWYWxpZCgpKTsKIApAQCAtMjI5NywxOCArMjI5NywxOCBAQCB2b2lkIFdlYnNp
dGVEYXRhU3RvcmU6OnNob3dTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbgogICAgIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6c2hhcmVkU2Vy
dmljZVdvcmtlck1hbmFnZXIoKS5zaG93KCp0aGlzLCBjb25uZWN0aW9uLCBub3RpZmljYXRpb25E
YXRhLCBudWxscHRyKTsKIH0KIAotdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpjYW5jZWxTZXJ2aWNl
V29ya2VyTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKQordm9pZCBXZWJz
aXRlRGF0YVN0b3JlOjpjYW5jZWxTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uKGNvbnN0IFdURjo6
VVVJRCYgbm90aWZpY2F0aW9uSUQpCiB7CiAgICAgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
OjpzaGFyZWRTZXJ2aWNlV29ya2VyTWFuYWdlcigpLmNhbmNlbChudWxscHRyLCBub3RpZmljYXRp
b25JRCk7CiB9CiAKLXZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6Y2xlYXJTZXJ2aWNlV29ya2VyTm90
aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKQordm9pZCBXZWJzaXRlRGF0YVN0
b3JlOjpjbGVhclNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb24oY29uc3QgV1RGOjpVVUlEJiBub3Rp
ZmljYXRpb25JRCkKIHsKLSAgICBWZWN0b3I8VVVJRD4gbm90aWZpY2F0aW9ucyA9IHsgbm90aWZp
Y2F0aW9uSUQgfTsKKyAgICBWZWN0b3I8V1RGOjpVVUlEPiBub3RpZmljYXRpb25zID0geyBub3Rp
ZmljYXRpb25JRCB9OwogICAgIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6c2hhcmVkU2Vy
dmljZVdvcmtlck1hbmFnZXIoKS5jbGVhck5vdGlmaWNhdGlvbnMobnVsbHB0ciwgbm90aWZpY2F0
aW9ucyk7CiB9CiAKLXZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZGlkRGVzdHJveVNlcnZpY2VXb3Jr
ZXJOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpCit2b2lkIFdlYnNpdGVE
YXRhU3RvcmU6OmRpZERlc3Ryb3lTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uKGNvbnN0IFdURjo6
VVVJRCYgbm90aWZpY2F0aW9uSUQpCiB7CiAgICAgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
OjpzaGFyZWRTZXJ2aWNlV29ya2VyTWFuYWdlcigpLmRpZERlc3Ryb3lOb3RpZmljYXRpb24obnVs
bHB0ciwgbm90aWZpY2F0aW9uSUQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IDA4NDk2ZmIzMWI0OS4u
NTgyNWM0YTM3ZTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0xMjEsMTIgKzEyMSwxMiBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBkZWZhdWx0RGF0YVN0b3JlKCk7CiAg
ICAgc3RhdGljIGJvb2wgZGVmYXVsdERhdGFTdG9yZUV4aXN0cygpOwogICAgIHN0YXRpYyB2b2lk
IGRlbGV0ZURlZmF1bHREYXRhU3RvcmVGb3JUZXN0aW5nKCk7Ci0gICAgc3RhdGljIFJlZlB0cjxX
ZWJzaXRlRGF0YVN0b3JlPiBleGlzdGluZ0RhdGFTdG9yZUZvcklkZW50aWZpZXIoY29uc3QgVVVJ
RCYpOworICAgIHN0YXRpYyBSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4gZXhpc3RpbmdEYXRhU3Rv
cmVGb3JJZGVudGlmaWVyKGNvbnN0IFdURjo6VVVJRCYpOwogICAgIAogICAgIHN0YXRpYyBSZWY8
V2Vic2l0ZURhdGFTdG9yZT4gY3JlYXRlTm9uUGVyc2lzdGVudCgpOwogICAgIHN0YXRpYyBSZWY8
V2Vic2l0ZURhdGFTdG9yZT4gY3JlYXRlKFJlZjxXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bj4mJiwgUEFMOjpTZXNzaW9uSUQpOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHN0YXRpYyBS
ZWY8V2Vic2l0ZURhdGFTdG9yZT4gZGF0YVN0b3JlRm9ySWRlbnRpZmllcihjb25zdCBVVUlEJik7
CisgICAgc3RhdGljIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBkYXRhU3RvcmVGb3JJZGVudGlmaWVy
KGNvbnN0IFdURjo6VVVJRCYpOwogI2VuZGlmCiAKICAgICBXZWJzaXRlRGF0YVN0b3JlKFJlZjxX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4mJiwgUEFMOjpTZXNzaW9uSUQpOwpAQCAtMzU5
LDkgKzM1OSw5IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAg
c3RhdGljIHZvaWQgZmV0Y2hBbGxEYXRhU3RvcmVJZGVudGlmaWVycyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxVVUlEPiYmKT4mJik7Ci0gICAgc3RhdGljIHZvaWQgcmVtb3ZlRGF0YVN0
b3JlV2l0aElkZW50aWZpZXIoY29uc3QgVVVJRCYgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7Ci0gICAgc3RhdGljIFN0cmluZyBkZWZhdWx0V2Vi
c2l0ZURhdGFTdG9yZURpcmVjdG9yeShjb25zdCBVVUlEJiBpZGVudGlmaWVyKTsKKyAgICBzdGF0
aWMgdm9pZCBmZXRjaEFsbERhdGFTdG9yZUlkZW50aWZpZXJzKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFdURjo6VVVJRD4mJik+JiYpOworICAgIHN0YXRpYyB2b2lkIHJlbW92ZURhdGFT
dG9yZVdpdGhJZGVudGlmaWVyKGNvbnN0IFdURjo6VVVJRCYgaWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CisgICAgc3RhdGljIFN0cmluZyBkZWZh
dWx0V2Vic2l0ZURhdGFTdG9yZURpcmVjdG9yeShjb25zdCBXVEY6OlVVSUQmIGlkZW50aWZpZXIp
OwogICAgIHN0YXRpYyBTdHJpbmcgZGVmYXVsdENvb2tpZVN0b3JhZ2VGaWxlKGNvbnN0IFN0cmlu
ZyYgYmFzZURhdGFEaXJlY3RvcnkgPSBudWxsU3RyaW5nKCkpOwogICAgIHN0YXRpYyBTdHJpbmcg
ZGVmYXVsdFNlYXJjaEZpZWxkSGlzdG9yeURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGJhc2VEYXRh
RGlyZWN0b3J5ID0gbnVsbFN0cmluZygpKTsKICNlbmRpZgpAQCAtNDIxLDkgKzQyMSw5IEBAIHB1
YmxpYzoKICAgICB2b2lkIGNvdW50Tm9uRGVmYXVsdFNlc3Npb25TZXRzKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoc2l6ZV90KT4mJik7CiAKICAgICB2b2lkIHNob3dTZXJ2aWNlV29ya2VyTm90aWZp
Y2F0aW9uKElQQzo6Q29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGEm
KTsKLSAgICB2b2lkIGNhbmNlbFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb24oY29uc3QgVVVJRCYg
bm90aWZpY2F0aW9uSUQpOwotICAgIHZvaWQgY2xlYXJTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9u
KGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKTsKLSAgICB2b2lkIGRpZERlc3Ryb3lTZXJ2aWNl
V29ya2VyTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKTsKKyAgICB2b2lk
IGNhbmNlbFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb24oY29uc3QgV1RGOjpVVUlEJiBub3RpZmlj
YXRpb25JRCk7CisgICAgdm9pZCBjbGVhclNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb24oY29uc3Qg
V1RGOjpVVUlEJiBub3RpZmljYXRpb25JRCk7CisgICAgdm9pZCBkaWREZXN0cm95U2VydmljZVdv
cmtlck5vdGlmaWNhdGlvbihjb25zdCBXVEY6OlVVSUQmIG5vdGlmaWNhdGlvbklEKTsKIAogICAg
IHZvaWQgb3BlbldpbmRvd0Zyb21TZXJ2aWNlV29ya2VyKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5n
LCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNlcnZpY2VXb3JrZXJPcmlnaW4s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcj4pPiYmKTsKICAgICB2b2lkIHJlcG9ydFNlcnZpY2VXb3JrZXJDb25zb2xlTWVzc2FnZShj
b25zdCBVUkwmLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBNZXNzYWdlU291
cmNlLCAgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxvbmcg
cmVxdWVzdElkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24u
Y3BwCmluZGV4IGQxYjk3ZTdhMjM3OS4uMTg3ZGFlOWZhODM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCkBAIC01NSw3ICs1NSw3IEBAIFdlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uOjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihJc1BlcnNpc3Rl
bnQgaXNQZXJzCiAKICNpZiBQTEFURk9STShDT0NPQSkKIAotV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb246OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKGNvbnN0IFVVSUQmIGlkZW50
aWZpZXIpCitXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6V2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24oY29uc3QgV1RGOjpVVUlEJiBpZGVudGlmaWVyKQogICAgIDogbV9pc1BlcnNp
c3RlbnQoSXNQZXJzaXN0ZW50OjpZZXMpCiAgICAgLCBtX3VuaWZpZWRPcmlnaW5TdG9yYWdlTGV2
ZWwoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFVuaWZpZWRPcmlnaW5TdG9yYWdlTGV2ZWwoKSkK
ICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uLmgKaW5kZXggNjVmMDYwZWQ4MDdlLi45NmJiOTY1MGRlMDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uPiBjcmVhdGUoY29uc3QgVVVJRCYgaWRlbnRpZmllcikgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihpZGVudGlmaWVyKSk7IH0KLSAg
ICBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihjb25zdCBVVUlEJik7CisgICAgV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24oY29uc3QgV1RGOjpVVUlEJik7CiAjZW5kaWYKIAogI2lm
ICFQTEFURk9STShDT0NPQSkKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAgIFJlZjxXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gY29weSgpIGNvbnN0OwogCiAgICAgYm9vbCBpc1Bl
cnNpc3RlbnQoKSBjb25zdCB7IHJldHVybiBtX2lzUGVyc2lzdGVudCA9PSBJc1BlcnNpc3RlbnQ6
OlllczsgfQotICAgIHN0ZDo6b3B0aW9uYWw8VVVJRD4gaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1faWRlbnRpZmllcjsgfQorICAgIHN0ZDo6b3B0aW9uYWw8V1RGOjpVVUlEPiBpZGVudGlm
aWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKICAgICB1aW50NjRfdCBwZXJP
cmlnaW5TdG9yYWdlUXVvdGEoKSBjb25zdCB7IHJldHVybiBtX3Blck9yaWdpblN0b3JhZ2VRdW90
YTsgfQogICAgIHZvaWQgc2V0UGVyT3JpZ2luU3RvcmFnZVF1b3RhKHVpbnQ2NF90IHF1b3RhKSB7
IG1fcGVyT3JpZ2luU3RvcmFnZVF1b3RhID0gcXVvdGE7IH0KQEAgLTI1MCw3ICsyNTAsNyBAQCBw
cml2YXRlOgogICAgIElzUGVyc2lzdGVudCBtX2lzUGVyc2lzdGVudCB7IElzUGVyc2lzdGVudDo6
Tm8gfTsKIAogICAgIFVuaWZpZWRPcmlnaW5TdG9yYWdlTGV2ZWwgbV91bmlmaWVkT3JpZ2luU3Rv
cmFnZUxldmVsOwotICAgIE1hcmthYmxlPFVVSUQ+IG1faWRlbnRpZmllcjsKKyAgICBNYXJrYWJs
ZTxXVEY6OlVVSUQ+IG1faWRlbnRpZmllcjsKICAgICBTdHJpbmcgbV9iYXNlQ2FjaGVEaXJlY3Rv
cnk7CiAgICAgU3RyaW5nIG1fYmFzZURhdGFEaXJlY3Rvcnk7CiAgICAgU3RyaW5nIG1fY2FjaGVT
dG9yYWdlRGlyZWN0b3J5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLTW9kZWxWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLTW9kZWxWaWV3
Lm1tCmluZGV4IDdmZWVjMWQ0YjFmOC4uNWMzMmM1Zjk1YTAwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tNb2RlbFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLTW9kZWxWaWV3Lm1tCkBAIC0xMDIsNyArMTAyLDcgQEAgLSAoQk9PTClj
cmVhdGVGaWxlRm9yTW9kZWw6KFdlYkNvcmU6Ok1vZGVsJiltb2RlbAogICAgICAgICByZXR1cm4g
Tk87CiAgICAgfQogCi0gICAgU3RyaW5nIGZpbGVOYW1lID0gbWFrZVN0cmluZyhVVUlEOjpjcmVh
dGVWZXJzaW9uNCgpLCAiLnVzZHoiX3MpOworICAgIFN0cmluZyBmaWxlTmFtZSA9IG1ha2VTdHJp
bmcoV1RGOjpVVUlEOjpjcmVhdGVWZXJzaW9uNCgpLCAiLnVzZHoiX3MpOwogICAgIGF1dG8gZmls
ZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aFRvRGlyZWN0
b3J5LCBmaWxlTmFtZSk7CiAgICAgYXV0byBmaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoZmls
ZVBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6VHJ1bmNhdGUpOwogICAgIGlmIChmaWxl
IDw9IDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCBkZDUxYjU4MGRhNzkuLjJhNjQ5NjYwMmY1
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC0zMDksNyArMzA5LDcgQEAgdm9pZCBJbmplY3Rl
ZEJ1bmRsZTo6cmVtb3ZlQWxsV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoV2ViUGFnZSogcGFn
ZSkKICNlbmRpZgogfQogCi1zdGQ6Om9wdGlvbmFsPFVVSUQ+IEluamVjdGVkQnVuZGxlOjp3ZWJO
b3RpZmljYXRpb25JRChKU0NvbnRleHRSZWYganNDb250ZXh0LCBKU1ZhbHVlUmVmIGpzTm90aWZp
Y2F0aW9uKQorc3RkOjpvcHRpb25hbDxXVEY6OlVVSUQ+IEluamVjdGVkQnVuZGxlOjp3ZWJOb3Rp
ZmljYXRpb25JRChKU0NvbnRleHRSZWYganNDb250ZXh0LCBKU1ZhbHVlUmVmIGpzTm90aWZpY2F0
aW9uKQogewogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogICAgIFdlYkNvcmU6Ok5vdGlmaWNh
dGlvbiogbm90aWZpY2F0aW9uID0gSlNOb3RpZmljYXRpb246OnRvV3JhcHBlZCh0b0pTKGpzQ29u
dGV4dCktPnZtKCksIHRvSlModG9KUyhqc0NvbnRleHQpLCBqc05vdGlmaWNhdGlvbikpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuaAppbmRleCBlMzg2YTdlNzhmYzMuLjg2MTBmNGVhYTkyYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmgKQEAgLTEwNiwxMCArMTA2LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFVzZXJTdHls
ZVNoZWV0TG9jYXRpb24oY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzZXRXZWJOb3RpZmljYXRp
b25QZXJtaXNzaW9uKFdlYlBhZ2UqLCBjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZywgYm9vbCBh
bGxvd2VkKTsKICAgICB2b2lkIHJlbW92ZUFsbFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb25zKFdl
YlBhZ2UqKTsKLSAgICBzdGQ6Om9wdGlvbmFsPFVVSUQ+IHdlYk5vdGlmaWNhdGlvbklEKEpTQ29u
dGV4dFJlZiwgSlNWYWx1ZVJlZik7CisgICAgc3RkOjpvcHRpb25hbDxXVEY6OlVVSUQ+IHdlYk5v
dGlmaWNhdGlvbklEKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZik7CiAgICAgUmVmPEFQSTo6RGF0
YT4gY3JlYXRlV2ViRGF0YUZyb21VaW50OEFycmF5KEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZik7
CiAgICAgCi0gICAgdHlwZWRlZiBIYXNoTWFwPFVVSUQsIFN0cmluZz4gRG9jdW1lbnRJRFRvVVJM
TWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxXVEY6OlVVSUQsIFN0cmluZz4gRG9jdW1lbnRJRFRv
VVJMTWFwOwogICAgIERvY3VtZW50SURUb1VSTE1hcCBsaXZlRG9jdW1lbnRVUkxzKGJvb2wgZXhj
bHVkZURvY3VtZW50c0luUGFnZUdyb3VwUGFnZXMpOwogCiAgICAgLy8gR2FyYmFnZSBjb2xsZWN0
aW9uIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9B
UktpdElubGluZVByZXZpZXdNb2RlbFBsYXllck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KaW5kZXgg
ZmY1OWE4NDMwOGEyLi4wYTJlMDc2MzBmNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXJNYWMubW0KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdN
b2RlbFBsYXllck1hYy5tbQpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgQVJLaXRJbmxpbmVQcmV2
aWV3TW9kZWxQbGF5ZXJNYWM6OmNyZWF0ZUZpbGUoV2ViQ29yZTo6TW9kZWwmIG1vZGVsU291cmNl
KQogICAgIH0KIAogICAgIC8vIFdlIG5lZWQgdG8gc3VwcG9ydCAucmVhbGl0eSBmaWxlcyBhcyB3
ZWxsLCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3NTY4LgotICAg
IFN0cmluZyBmaWxlTmFtZSA9IG1ha2VTdHJpbmcoVVVJRDo6Y3JlYXRlVmVyc2lvbjQoKSwgIi51
c2R6Il9zKTsKKyAgICBTdHJpbmcgZmlsZU5hbWUgPSBtYWtlU3RyaW5nKFdURjo6VVVJRDo6Y3Jl
YXRlVmVyc2lvbjQoKSwgIi51c2R6Il9zKTsKICAgICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGhUb0RpcmVjdG9yeSwgZmlsZU5hbWUpOwog
ICAgIGF1dG8gZmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKGZpbGVQYXRoLCBGaWxlU3lzdGVt
OjpGaWxlT3Blbk1vZGU6OlRydW5jYXRlKTsKICAgICBpZiAoZmlsZSA8PSAwKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9u
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJO
b3RpZmljYXRpb25NYW5hZ2VyLmNwcAppbmRleCAxNzFjZjU3MWYzZjQuLmI1NGI2ZGYwYzliOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90
aWZpY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlm
aWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKQEAgLTIyNCw3ICsyMjQsNyBAQCB2
b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24oTm90aWZp
Y2F0aW9uRGF0YSYmIG5vdGlmaWNhdAogI2VuZGlmCiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9u
TWFuYWdlcjo6ZGlkU2hvd05vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCkK
K3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkU2hvd05vdGlmaWNhdGlvbihjb25zdCBX
VEY6OlVVSUQmIG5vdGlmaWNhdGlvbklEKQogewogICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkp
OwogCkBAIC0yNDQsNyArMjQ0LDcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRT
aG93Tm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKQogI2VuZGlmCiB9CiAK
LXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkQ2xpY2tOb3RpZmljYXRpb24oY29uc3Qg
VVVJRCYgbm90aWZpY2F0aW9uSUQpCit2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZENs
aWNrTm90aWZpY2F0aW9uKGNvbnN0IFdURjo6VVVJRCYgbm90aWZpY2F0aW9uSUQpCiB7CiAgICAg
QVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CiAKQEAgLTI3Myw3ICsyNzMsNyBAQCB2b2lkIFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXI6OmRpZENsaWNrTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlm
aWNhdGlvbklEKQogI2VuZGlmCiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlk
Q2xvc2VOb3RpZmljYXRpb25zKGNvbnN0IFZlY3RvcjxVVUlEPiYgbm90aWZpY2F0aW9uSURzKQor
dm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRDbG9zZU5vdGlmaWNhdGlvbnMoY29uc3Qg
VmVjdG9yPFdURjo6VVVJRD4mIG5vdGlmaWNhdGlvbklEcykKIHsKICAgICBBU1NFUlQoaXNNYWlu
UnVuTG9vcCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlm
aWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oCmluZGV4IDVhMjk2NzY4
Mjc4Zi4uNTZlZDQxZWMzYTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5oCkBAIC03
OSw5ICs3OSw5IEBAIHByaXZhdGU6CiAgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwCiAgICAgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKICAg
ICAKLSAgICB2b2lkIGRpZFNob3dOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9u
SUQpOwotICAgIHZvaWQgZGlkQ2xpY2tOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0
aW9uSUQpOwotICAgIHZvaWQgZGlkQ2xvc2VOb3RpZmljYXRpb25zKGNvbnN0IFZlY3RvcjxVVUlE
PiYgbm90aWZpY2F0aW9uSURzKTsKKyAgICB2b2lkIGRpZFNob3dOb3RpZmljYXRpb24oY29uc3Qg
V1RGOjpVVUlEJiBub3RpZmljYXRpb25JRCk7CisgICAgdm9pZCBkaWRDbGlja05vdGlmaWNhdGlv
bihjb25zdCBXVEY6OlVVSUQmIG5vdGlmaWNhdGlvbklEKTsKKyAgICB2b2lkIGRpZENsb3NlTm90
aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8V1RGOjpVVUlEPiYgbm90aWZpY2F0aW9uSURzKTsKICAg
ICB2b2lkIGRpZFJlbW92ZU5vdGlmaWNhdGlvbkRlY2lzaW9ucyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgb3JpZ2luU3RyaW5ncyk7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIHNlbmRO
b3RpZmljYXRpb25NZXNzYWdlKFUmJiBtZXNzYWdlLCBXZWJQYWdlKik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5h
Z2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgppbmRleCBmZGUwMDhkYTc1M2MuLmI2
NWM5YjU2YWI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNh
dGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLm1lc3Nh
Z2VzLmluCkBAIC0yMSw5ICsyMSw5IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1lc3NhZ2VzIC0+IFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXIgTm90UmVmQ291bnRlZCB7Ci0gICAgRGlkU2hvd05vdGlmaWNh
dGlvbihVVUlEIG5vdGlmaWNhdGlvbklEKTsKLSAgICBEaWRDbGlja05vdGlmaWNhdGlvbihVVUlE
IG5vdGlmaWNhdGlvbklEKTsKLSAgICBEaWRDbG9zZU5vdGlmaWNhdGlvbnMoVmVjdG9yPFVVSUQ+
IG5vdGlmaWNhdGlvbklEcyk7CisgICAgRGlkU2hvd05vdGlmaWNhdGlvbihXVEY6OlVVSUQgbm90
aWZpY2F0aW9uSUQpOworICAgIERpZENsaWNrTm90aWZpY2F0aW9uKFdURjo6VVVJRCBub3RpZmlj
YXRpb25JRCk7CisgICAgRGlkQ2xvc2VOb3RpZmljYXRpb25zKFZlY3RvcjxXVEY6OlVVSUQ+IG5v
dGlmaWNhdGlvbklEcyk7CiAgICAgRGlkVXBkYXRlTm90aWZpY2F0aW9uRGVjaXNpb24oU3RyaW5n
IG9yaWdpblN0cmluZywgYm9vbCBhbGxvd2VkKTsKICAgICBEaWRSZW1vdmVOb3RpZmljYXRpb25E
ZWNpc2lvbnMoVmVjdG9yPFN0cmluZz4gb3JpZ2luU3RyaW5ncyk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLmgKaW5kZXggNzBiMjk2YWE0YzBlLi41
ZjE4ZjU5Mjc2N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVu
dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25u
ZWN0aW9uLmgKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIGJvb2wgaG9zdEFwcEhhc1B1
c2hJbmplY3RFbnRpdGxlbWVudCgpOwogCiAgICAgY29uc3QgU3RyaW5nJiBwdXNoUGFydGl0aW9u
U3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9wdXNoUGFydGl0aW9uU3RyaW5nOyB9Ci0gICAgc3Rk
OjpvcHRpb25hbDxVVUlEPiBkYXRhU3RvcmVJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9k
YXRhU3RvcmVJZGVudGlmaWVyOyB9CisgICAgc3RkOjpvcHRpb25hbDxXVEY6OlVVSUQ+IGRhdGFT
dG9yZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGFTdG9yZUlkZW50aWZpZXI7IH0K
IAogICAgIGJvb2wgZGVidWdNb2RlSXNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z01v
ZGVFbmFibGVkOyB9CiAgICAgdm9pZCBzZXREZWJ1Z01vZGVJc0VuYWJsZWQoYm9vbCk7CkBAIC0x
MDAsNyArMTAwLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1faG9zdEFw
cEhhc1B1c2hFbnRpdGxlbWVudDsKIAogICAgIFN0cmluZyBtX3B1c2hQYXJ0aXRpb25TdHJpbmc7
Ci0gICAgTWFya2FibGU8VVVJRD4gbV9kYXRhU3RvcmVJZGVudGlmaWVyOworICAgIE1hcmthYmxl
PFdURjo6VVVJRD4gbV9kYXRhU3RvcmVJZGVudGlmaWVyOwogCiAgICAgRGVxdWU8c3RkOjp1bmlx
dWVfcHRyPEFwcEJ1bmRsZVJlcXVlc3Q+PiBtX3BlbmRpbmdCdW5kbGVSZXF1ZXN0czsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8QXBwQnVuZGxlUmVxdWVzdD4gbV9jdXJyZW50QnVuZGxlUmVxdWVzdDsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VVSUQuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVVVJRC5jcHAKaW5kZXggYTFmYThjYjcyM2M0Li5l
MzU5YTQyYWQ0MmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VV
SUQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VVSUQuY3BwCkBAIC0z
NCw3ICszNCw3IEBAIFRFU1QoV1RGLCBCb290U2Vzc2lvblVVSURJZGVudGl0eSkKIAogc3RhdGlj
IFN0cmluZyBwYXJzZUFuZFN0cmluZ2lmeVVVSUQoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAg
ICBhdXRvIHV1aWQgPSBVVUlEOjpwYXJzZVZlcnNpb240KHZhbHVlKTsKKyAgICBhdXRvIHV1aWQg
PSBXVEY6OlVVSUQ6OnBhcnNlVmVyc2lvbjQodmFsdWUpOwogICAgIGlmICghdXVpZCkKICAgICAg
ICAgcmV0dXJuIHsgfTsKICAgICByZXR1cm4gdXVpZC0+dG9TdHJpbmcoKTsKQEAgLTQ0LDMwICs0
NCwzMCBAQCBURVNUKFdURiwgVGVzdFVVSURWZXJzaW9uNFBhcnNpbmcpCiB7CiAgICAgLy8geHh4
eHh4eHgteHh4eC00eHh4LXl4eHgteHh4eHh4eHh4eHh4CiAKLSAgICBFWFBFQ1RfRkFMU0UoISFV
VUlEOjpwYXJzZVZlcnNpb240KCIxMjM0NTY3OC05YWJjLTVkZTAtODlBQi0wMTIzNDU2Nzg5YWIi
X3MpKTsKLSAgICBFWFBFQ1RfRkFMU0UoISFVVUlEOjpwYXJzZVZlcnNpb240KCIxMjM0NTY3OC05
YWJjLTRkZWEtNzlBQi0wMTIzNDU2Nzg5YWIiX3MpKTsKLSAgICBFWFBFQ1RfRkFMU0UoISFVVUlE
OjpwYXJzZVZlcnNpb240KCIxMjM0NTY3OC05YWJjLTRkZTAtN2ZmZi0wMTIzNDU2Nzg5YWIiX3Mp
KTsKLSAgICBFWFBFQ1RfRkFMU0UoISFVVUlEOjpwYXJzZVZlcnNpb240KCIxMjM0NTY3OC05YWJj
LTRkZTAtYzAwMDAtMDEyMzQ1Njc4OWFiIl9zKSk7CisgICAgRVhQRUNUX0ZBTFNFKCEhV1RGOjpV
VUlEOjpwYXJzZVZlcnNpb240KCIxMjM0NTY3OC05YWJjLTVkZTAtODlBQi0wMTIzNDU2Nzg5YWIi
X3MpKTsKKyAgICBFWFBFQ1RfRkFMU0UoISFXVEY6OlVVSUQ6OnBhcnNlVmVyc2lvbjQoIjEyMzQ1
Njc4LTlhYmMtNGRlYS03OUFCLTAxMjM0NTY3ODlhYiJfcykpOworICAgIEVYUEVDVF9GQUxTRSgh
IVdURjo6VVVJRDo6cGFyc2VWZXJzaW9uNCgiMTIzNDU2NzgtOWFiYy00ZGUwLTdmZmYtMDEyMzQ1
Njc4OWFiIl9zKSk7CisgICAgRVhQRUNUX0ZBTFNFKCEhV1RGOjpVVUlEOjpwYXJzZVZlcnNpb240
KCIxMjM0NTY3OC05YWJjLTRkZTAtYzAwMDAtMDEyMzQ1Njc4OWFiIl9zKSk7CiAKLSAgICBFWFBF
Q1RfRkFMU0UoISFVVUlEOjpwYXJzZVZlcnNpb240KCIrZWY5NDRjMS01Y2I4LTQ4YWEtQWQxMi1D
NWY4MjNmMDA1YzMiX3MpKTsKLSAgICBFWFBFQ1RfRkFMU0UoISFVVUlEOjpwYXJzZVZlcnNpb240
KCI2ZWY5NDRjMS0rY2I4LTQ4YWEtQWQxMi1DNWY4MjNmMDA1YzMiX3MpKTsKLSAgICBFWFBFQ1Rf
RkFMU0UoISFVVUlEOjpwYXJzZVZlcnNpb240KCI2ZWY5NDRjMS01Y2I4LSs4YWEtQWQxMi1DNWY4
MjNmMDA1YzMiX3MpKTsKLSAgICBFWFBFQ1RfRkFMU0UoISFVVUlEOjpwYXJzZVZlcnNpb240KCI2
ZWY5NDRjMS01Y2I4LTQ4YWEtK2QxMi1DNWY4MjNmMDA1YzMiX3MpKTsKLSAgICBFWFBFQ1RfRkFM
U0UoISFVVUlEOjpwYXJzZVZlcnNpb240KCI2ZWY5NDRjMS01Y2I4LTQ4YWEtQWQxMi0rNWY4MjNm
MDA1YzMiX3MpKTsKKyAgICBFWFBFQ1RfRkFMU0UoISFXVEY6OlVVSUQ6OnBhcnNlVmVyc2lvbjQo
IitlZjk0NGMxLTVjYjgtNDhhYS1BZDEyLUM1ZjgyM2YwMDVjMyJfcykpOworICAgIEVYUEVDVF9G
QUxTRSghIVdURjo6VVVJRDo6cGFyc2VWZXJzaW9uNCgiNmVmOTQ0YzEtK2NiOC00OGFhLUFkMTIt
QzVmODIzZjAwNWMzIl9zKSk7CisgICAgRVhQRUNUX0ZBTFNFKCEhV1RGOjpVVUlEOjpwYXJzZVZl
cnNpb240KCI2ZWY5NDRjMS01Y2I4LSs4YWEtQWQxMi1DNWY4MjNmMDA1YzMiX3MpKTsKKyAgICBF
WFBFQ1RfRkFMU0UoISFXVEY6OlVVSUQ6OnBhcnNlVmVyc2lvbjQoIjZlZjk0NGMxLTVjYjgtNDhh
YS0rZDEyLUM1ZjgyM2YwMDVjMyJfcykpOworICAgIEVYUEVDVF9GQUxTRSghIVdURjo6VVVJRDo6
cGFyc2VWZXJzaW9uNCgiNmVmOTQ0YzEtNWNiOC00OGFhLUFkMTItKzVmODIzZjAwNWMzIl9zKSk7
CiAKLSAgICBFWFBFQ1RfRkFMU0UoISFVVUlEOjpwYXJzZVZlcnNpb240KCIwMDAwMDAwMC0wMDAw
LTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiX3MpKTsKLSAgICBFWFBFQ1RfRkFMU0UoISFVVUlEOjpw
YXJzZVZlcnNpb240KCIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDEiX3MpKTsK
LSAgICBFWFBFQ1RfVFJVRSghIVVVSUQ6OnBhcnNlVmVyc2lvbjQoIjAwMDAwMDAwLTAwMDAtNDAw
MC04MDAwLTAwMDAwMDAwMDAwMCJfcykpOwotICAgIEVYUEVDVF9UUlVFKCEhVVVJRDo6cGFyc2VW
ZXJzaW9uNCgiMDAwMDAwMDAtMDAwMC00MDAwLTgwMDAtMDAwMDAwMDAwMDAxIl9zKSk7CisgICAg
RVhQRUNUX0ZBTFNFKCEhV1RGOjpVVUlEOjpwYXJzZVZlcnNpb240KCIwMDAwMDAwMC0wMDAwLTAw
MDAtMDAwMC0wMDAwMDAwMDAwMDAiX3MpKTsKKyAgICBFWFBFQ1RfRkFMU0UoISFXVEY6OlVVSUQ6
OnBhcnNlVmVyc2lvbjQoIjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMSJfcykp
OworICAgIEVYUEVDVF9UUlVFKCEhV1RGOjpVVUlEOjpwYXJzZVZlcnNpb240KCIwMDAwMDAwMC0w
MDAwLTQwMDAtODAwMC0wMDAwMDAwMDAwMDAiX3MpKTsKKyAgICBFWFBFQ1RfVFJVRSghIVdURjo6
VVVJRDo6cGFyc2VWZXJzaW9uNCgiMDAwMDAwMDAtMDAwMC00MDAwLTgwMDAtMDAwMDAwMDAwMDAx
Il9zKSk7CiAKICAgICBmb3IgKHNpemVfdCBjcHRyID0gMDsgY3B0ciA8IDEwOyArK2NwdHIpIHsK
LSAgICAgICAgYXV0byBjcmVhdGVkVVVJRCA9IFVVSUQ6OmNyZWF0ZVZlcnNpb240KCk7CisgICAg
ICAgIGF1dG8gY3JlYXRlZFVVSUQgPSBXVEY6OlVVSUQ6OmNyZWF0ZVZlcnNpb240KCk7CiAgICAg
ICAgIGF1dG8gY3JlYXRlZFN0cmluZyA9IGNyZWF0ZWRVVUlELnRvU3RyaW5nKCk7CiAgICAgICAg
IEVYUEVDVF9FUShjcmVhdGVkU3RyaW5nLmxlbmd0aCgpLCAzNnUpOwogICAgICAgICBFWFBFQ1Rf
RVEoY3JlYXRlZFN0cmluZ1sxNF0sICc0Jyk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGNyZWF0ZWRT
dHJpbmdbMTldID09ICc4JyB8fCBjcmVhdGVkU3RyaW5nWzE5XSA9PSAnOScgfHwgY3JlYXRlZFN0
cmluZ1sxOV0gPT0gJ2EnIHx8IGNyZWF0ZWRTdHJpbmdbMTldID09ICdiJyk7CiAKLSAgICAgICAg
YXV0byB1dWlkID0gVVVJRDo6cGFyc2VWZXJzaW9uNChjcmVhdGVkU3RyaW5nKTsKKyAgICAgICAg
YXV0byB1dWlkID0gV1RGOjpVVUlEOjpwYXJzZVZlcnNpb240KGNyZWF0ZWRTdHJpbmcpOwogICAg
ICAgICBFWFBFQ1RfVFJVRSghIXV1aWQpOwogICAgICAgICBFWFBFQ1RfRVEoKnV1aWQsIGNyZWF0
ZWRVVUlEKTsKICAgICB9CkBAIC04OCwxMCArODgsMTAgQEAgVEVTVChXVEYsIFRlc3RVVUlEVmVy
c2lvbjRQYXJzaW5nKQogVEVTVChXVEYsIFRlc3RVVUlEVmVyc2lvbjRNYWtlU3RyaW5nKQogewog
ICAgIFN0cmluZyB0ZXN0Tm9ybWFsID0gIjEyMzQ1Njc4LTlhYmMtNGRlMC04OWFiLTAxMjM0NTY3
ODlhYiJfczsKLSAgICBhdXRvIHV1aWQgPSBVVUlEOjpwYXJzZVZlcnNpb240KHRlc3ROb3JtYWwp
OworICAgIGF1dG8gdXVpZCA9IFdURjo6VVVJRDo6cGFyc2VWZXJzaW9uNCh0ZXN0Tm9ybWFsKTsK
ICAgICBFWFBFQ1RfVFJVRSghIXV1aWQpOwogICAgIEVYUEVDVF9FUShtYWtlU3RyaW5nKHV1aWQu
dmFsdWUoKSksIHRlc3ROb3JtYWwpOwogICAgIEVYUEVDVF9FUShtYWtlU3RyaW5nKCJrZXlmcmFt
ZS0iLCB1dWlkLnZhbHVlKCkpLCBTdHJpbmcoImtleWZyYW1lLSIgKyB0ZXN0Tm9ybWFsKSk7CiAK
LSAgICBFWFBFQ1RfRVEoV1RGOjpTdHJpbmdUeXBlQWRhcHRlcjxVVUlEPih1dWlkLnZhbHVlKCkp
Lmxlbmd0aCgpLCAzNlUpOworICAgIEVYUEVDVF9FUShXVEY6OlN0cmluZ1R5cGVBZGFwdGVyPFdU
Rjo6VVVJRD4odXVpZC52YWx1ZSgpKS5sZW5ndGgoKSwgMzZVKTsKIH0KZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL2NvY29hL1VVSURDb2NvYS5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL2NvY29hL1VVSURDb2NvYS5tbQppbmRleCA5NmQ2MTU2MTQ1
ZDEuLjY4MjEzZjQ4ZWM3OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvY29jb2EvVVVJRENvY29hLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L2NvY29hL1VVSURDb2NvYS5tbQpAQCAtMzAsMTggKzMwLDE4IEBACiAKIFRFU1QoV1RGLCBOU1VV
SURDb252ZXJzaW9uRm9yRGVsZXRlZFZhbHVlKQogewotICAgIFVVSUQgZGVsZXRlZFVVSUQgeyBV
VUlEOjpkZWxldGVkVmFsdWUgfTsKKyAgICBXVEY6OlVVSUQgZGVsZXRlZFVVSUQgeyBVVUlEOjpk
ZWxldGVkVmFsdWUgfTsKICAgICBOU1VVSUQgKmRlbGV0ZWROU1VVSUQgPSBkZWxldGVkVVVJRDsK
ICAgICBFWFBFQ1RfU1RSRVEoIjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMSIs
IFtbZGVsZXRlZFVVSUQgVVVJRFN0cmluZ10gVVRGOFN0cmluZ10pOwotICAgIGF1dG8gdXVpZCA9
IFVVSUQ6OmZyb21OU1VVSUQoZGVsZXRlZE5TVVVJRCk7CisgICAgYXV0byB1dWlkID0gV1RGOjpV
VUlEOjpmcm9tTlNVVUlEKGRlbGV0ZWROU1VVSUQpOwogICAgIEVYUEVDVF9GQUxTRSh1dWlkKTsK
IH0KIAogVEVTVChXVEYsIE5TVVVJRENvbnZlcnNpb25Gb3JFbXB0eVZhbHVlKQogewotICAgIFVV
SUQgZW1wdHlVVUlEIHsgVVVJRDo6ZW1wdHlWYWx1ZSB9OworICAgIFdURjo6VVVJRCBlbXB0eVVV
SUQgeyBVVUlEOjplbXB0eVZhbHVlIH07CiAgICAgTlNVVUlEICplbXB0eU5TVVVJRCA9IGVtcHR5
VVVJRDsKICAgICBFWFBFQ1RfU1RSRVEoIjAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAw
MDAwMCIsIFtbZW1wdHlOU1VVSUQgVVVJRFN0cmluZ10gVVRGOFN0cmluZ10pOwotICAgIGF1dG8g
dXVpZCA9IFVVSUQ6OmZyb21OU1VVSUQoZW1wdHlOU1VVSUQpOworICAgIGF1dG8gdXVpZCA9IFdU
Rjo6VVVJRDo6ZnJvbU5TVVVJRChlbXB0eU5TVVVJRCk7CiAgICAgRVhQRUNUX0ZBTFNFKHV1aWQp
OwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
ZWJQdXNoRGFlbW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
ZWJQdXNoRGFlbW9uLm1tCmluZGV4IGQzMmVmMjI5OGQ0NS4uNzE2ODNjZGJmNThlIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24u
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNoRGFl
bW9uLm1tCkBAIC00NTMsNyArNDUzLDcgQEAgc2VsZi5hZGRFdmVudExpc3RlbmVyKCJub3RpZmlj
YXRpb25jbGljayIsICgpID0+IHsKIGNsYXNzIFdlYlB1c2hEVGVzdFdlYlZpZXcgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFdlYlB1c2hEVGVzdFdlYlZpZXco
Y29uc3QgU3RyaW5nJiBwdXNoUGFydGl0aW9uLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFVVSUQ+JiBk
YXRhU3RvcmVJZGVudGlmaWVyLCBXS1Byb2Nlc3NQb29sICpwcm9jZXNzUG9vbCwgVGVzdE5vdGlm
aWNhdGlvblByb3ZpZGVyJiBub3RpZmljYXRpb25Qcm92aWRlcikKKyAgICBXZWJQdXNoRFRlc3RX
ZWJWaWV3KGNvbnN0IFN0cmluZyYgcHVzaFBhcnRpdGlvbiwgY29uc3Qgc3RkOjpvcHRpb25hbDxX
VEY6OlVVSUQ+JiBkYXRhU3RvcmVJZGVudGlmaWVyLCBXS1Byb2Nlc3NQb29sICpwcm9jZXNzUG9v
bCwgVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyJiBub3RpZmljYXRpb25Qcm92aWRlcikKICAgICAg
ICAgOiBtX3B1c2hQYXJ0aXRpb24ocHVzaFBhcnRpdGlvbikKICAgICAgICAgLCBtX2RhdGFTdG9y
ZUlkZW50aWZpZXIoZGF0YVN0b3JlSWRlbnRpZmllcikKICAgICAgICAgLCBtX25vdGlmaWNhdGlv
blByb3ZpZGVyKG5vdGlmaWNhdGlvblByb3ZpZGVyKQpAQCAtNTI5LDcgKzUyOSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWFkeSk7CiAgICAgfQogCi0g
ICAgc3RkOjpvcHRpb25hbDxVVUlEPiBkYXRhU3RvcmVJZGVudGlmaWVyKCkgeyByZXR1cm4gbV9k
YXRhU3RvcmVJZGVudGlmaWVyOyB9CisgICAgc3RkOjpvcHRpb25hbDxXVEY6OlVVSUQ+IGRhdGFT
dG9yZUlkZW50aWZpZXIoKSB7IHJldHVybiBtX2RhdGFTdG9yZUlkZW50aWZpZXI7IH0KIAogICAg
IGNvbnN0IFN0cmluZyYgb3JpZ2luKCkgeyByZXR1cm4gbV9vcmlnaW47IH0KIApAQCAtNzE4LDcg
KzcxOCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9wdXNoUGFydGl0aW9u
OwotICAgIE1hcmthYmxlPFVVSUQ+IG1fZGF0YVN0b3JlSWRlbnRpZmllcjsKKyAgICBNYXJrYWJs
ZTxXVEY6OlVVSUQ+IG1fZGF0YVN0b3JlSWRlbnRpZmllcjsKICAgICBTdHJpbmcgbV9vcmlnaW47
CiAgICAgUmV0YWluUHRyPE5TVVJMPiBtX3VybDsKICAgICBSZXRhaW5QdHI8V0tXZWJzaXRlRGF0
YVN0b3JlPiBtX2RhdGFTdG9yZTsKQEAgLTc0NSwxNiArNzQ1LDE2IEBAIHB1YmxpYzoKICAgICAg
ICAgYXV0byB3ZWJWaWV3ID0gbWFrZVVuaXF1ZVJlZjxXZWJQdXNoRFRlc3RXZWJWaWV3PihlbXB0
eVN0cmluZygpLCBzdGQ6Om51bGxvcHQsIHByb2Nlc3NQb29sLmdldCgpLCAqbV9ub3RpZmljYXRp
b25Qcm92aWRlcik7CiAgICAgICAgIG1fd2ViVmlld3MuYXBwZW5kKFdURk1vdmUod2ViVmlldykp
OwogCi0gICAgICAgIGF1dG8gd2ViVmlld1dpdGhJZGVudGlmaWVyMSA9IG1ha2VVbmlxdWVSZWY8
V2ViUHVzaERUZXN0V2ViVmlldz4oZW1wdHlTdHJpbmcoKSwgVVVJRDo6cGFyc2UoIjBiZjUwNTNi
LTE2NGMtNGI3ZC04MTc5LTgzMmU2YmYxNThkZiJfcyksIHByb2Nlc3NQb29sLmdldCgpLCAqbV9u
b3RpZmljYXRpb25Qcm92aWRlcik7CisgICAgICAgIGF1dG8gd2ViVmlld1dpdGhJZGVudGlmaWVy
MSA9IG1ha2VVbmlxdWVSZWY8V2ViUHVzaERUZXN0V2ViVmlldz4oZW1wdHlTdHJpbmcoKSwgV1RG
OjpVVUlEOjpwYXJzZSgiMGJmNTA1M2ItMTY0Yy00YjdkLTgxNzktODMyZTZiZjE1OGRmIl9zKSwg
cHJvY2Vzc1Bvb2wuZ2V0KCksICptX25vdGlmaWNhdGlvblByb3ZpZGVyKTsKICAgICAgICAgbV93
ZWJWaWV3cy5hcHBlbmQoV1RGTW92ZSh3ZWJWaWV3V2l0aElkZW50aWZpZXIxKSk7CiAKLSAgICAg
ICAgYXV0byB3ZWJWaWV3V2l0aElkZW50aWZpZXIyID0gbWFrZVVuaXF1ZVJlZjxXZWJQdXNoRFRl
c3RXZWJWaWV3PihlbXB0eVN0cmluZygpLCBVVUlEOjpwYXJzZSgiOTQwZTc3MjktNzM4ZS00Mzlm
LWEzNjYtMWE4NzE5ZTIzYjJkIl9zKSwgcHJvY2Vzc1Bvb2wuZ2V0KCksICptX25vdGlmaWNhdGlv
blByb3ZpZGVyKTsKKyAgICAgICAgYXV0byB3ZWJWaWV3V2l0aElkZW50aWZpZXIyID0gbWFrZVVu
aXF1ZVJlZjxXZWJQdXNoRFRlc3RXZWJWaWV3PihlbXB0eVN0cmluZygpLCBXVEY6OlVVSUQ6OnBh
cnNlKCI5NDBlNzcyOS03MzhlLTQzOWYtYTM2Ni0xYTg3MTllMjNiMmQiX3MpLCBwcm9jZXNzUG9v
bC5nZXQoKSwgKm1fbm90aWZpY2F0aW9uUHJvdmlkZXIpOwogICAgICAgICBtX3dlYlZpZXdzLmFw
cGVuZChXVEZNb3ZlKHdlYlZpZXdXaXRoSWRlbnRpZmllcjIpKTsKIAogICAgICAgICBhdXRvIHdl
YlZpZXdXaXRoUGFydGl0aW9uID0gbWFrZVVuaXF1ZVJlZjxXZWJQdXNoRFRlc3RXZWJWaWV3Pigi
dGVzdFBhcnRpdGlvbiJfcywgc3RkOjpudWxsb3B0LCBwcm9jZXNzUG9vbC5nZXQoKSwgKm1fbm90
aWZpY2F0aW9uUHJvdmlkZXIpOwogICAgICAgICBtX3dlYlZpZXdzLmFwcGVuZChXVEZNb3ZlKHdl
YlZpZXdXaXRoUGFydGl0aW9uKSk7CiAKLSAgICAgICAgYXV0byB3ZWJWaWV3V2l0aFBhcnRpdGlv
bkFuZElkZW50aWZpZXIgPSBtYWtlVW5pcXVlUmVmPFdlYlB1c2hEVGVzdFdlYlZpZXc+KCJ0ZXN0
UGFydGl0aW9uIl9zLCBVVUlEOjpwYXJzZSgiOTQwZTc3MjktNzM4ZS00MzlmLWEzNjYtMWE4NzE5
ZTIzYjJkIl9zKSwgcHJvY2Vzc1Bvb2wuZ2V0KCksICptX25vdGlmaWNhdGlvblByb3ZpZGVyKTsK
KyAgICAgICAgYXV0byB3ZWJWaWV3V2l0aFBhcnRpdGlvbkFuZElkZW50aWZpZXIgPSBtYWtlVW5p
cXVlUmVmPFdlYlB1c2hEVGVzdFdlYlZpZXc+KCJ0ZXN0UGFydGl0aW9uIl9zLCBXVEY6OlVVSUQ6
OnBhcnNlKCI5NDBlNzcyOS03MzhlLTQzOWYtYTM2Ni0xYTg3MTllMjNiMmQiX3MpLCBwcm9jZXNz
UG9vbC5nZXQoKSwgKm1fbm90aWZpY2F0aW9uUHJvdmlkZXIpOwogICAgICAgICBtX3dlYlZpZXdz
LmFwcGVuZChXVEZNb3ZlKHdlYlZpZXdXaXRoUGFydGl0aW9uQW5kSWRlbnRpZmllcikpOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9EYXRhRnVuY3Rpb25zLmgg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0RhdGFGdW5jdGlvbnMuaAppbmRleCA5YWMyZWU5ZDFj
ODIuLjhkOWYzMzJlZDBiNSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9EYXRh
RnVuY3Rpb25zLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9EYXRhRnVuY3Rpb25zLmgK
QEAgLTMyLDIxICszMiwyMSBAQAogbmFtZXNwYWNlIFdUUiB7CiAKIFdLRGF0YVJlZiBkYXRhVmFs
dWUoV0tUeXBlUmVmKTsKLVVVSUQgZGF0YVRvVVVJRChXS0RhdGFSZWYpOwotV0tSZXRhaW5QdHI8
V0tEYXRhUmVmPiB1dWlkVG9EYXRhKGNvbnN0IFVVSUQmKTsKK1dURjo6VVVJRCBkYXRhVG9VVUlE
KFdLRGF0YVJlZik7CitXS1JldGFpblB0cjxXS0RhdGFSZWY+IHV1aWRUb0RhdGEoY29uc3QgV1RG
OjpVVUlEJik7CiAKIGlubGluZSBXS0RhdGFSZWYgZGF0YVZhbHVlKFdLVHlwZVJlZiB2YWx1ZSkK
IHsKICAgICByZXR1cm4gdmFsdWUgJiYgV0tHZXRUeXBlSUQodmFsdWUpID09IFdLRGF0YUdldFR5
cGVJRCgpID8gc3RhdGljX2Nhc3Q8V0tEYXRhUmVmPih2YWx1ZSkgOiBudWxscHRyOwogfQogCi1p
bmxpbmUgVVVJRCBkYXRhVG9VVUlEKFdLRGF0YVJlZiBkYXRhKQoraW5saW5lIFdURjo6VVVJRCBk
YXRhVG9VVUlEKFdLRGF0YVJlZiBkYXRhKQogewogICAgIFJFTEVBU0VfQVNTRVJUKFdLRGF0YUdl
dFNpemUoZGF0YSkgPT0gMTYpOwotICAgIHJldHVybiBVVUlEIHsgU3Bhbjxjb25zdCB1aW50OF90
LCAxNj4geyBXS0RhdGFHZXRCeXRlcyhkYXRhKSwgMTYgfSB9OworICAgIHJldHVybiBXVEY6OlVV
SUQgeyBTcGFuPGNvbnN0IHVpbnQ4X3QsIDE2PiB7IFdLRGF0YUdldEJ5dGVzKGRhdGEpLCAxNiB9
IH07CiB9CiAKLWlubGluZSBXS1JldGFpblB0cjxXS0RhdGFSZWY+IHV1aWRUb0RhdGEoY29uc3Qg
VVVJRCYgdXVpZCkKK2lubGluZSBXS1JldGFpblB0cjxXS0RhdGFSZWY+IHV1aWRUb0RhdGEoY29u
c3QgV1RGOjpVVUlEJiB1dWlkKQogewogICAgIGF1dG8gc3BhbiA9IHV1aWQudG9TcGFuKCk7CiAg
ICAgcmV0dXJuIGFkb3B0V0soV0tEYXRhQ3JlYXRlKHNwYW4uZGF0YSgpLCBzcGFuLnNpemUoKSkp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJOb3RpZmljYXRpb25Qcm92
aWRlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVy
LmNwcAppbmRleCA1NGRjMjFmNjdmZjkuLmFjZTBmZTk5MzJlNyAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5jcHAKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5jcHAKQEAgLTE0MSw3ICsx
NDEsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOjpyZW1vdmVOb3RpZmljYXRpb25N
YW5hZ2VyKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZgogICAgIGF1dG8gcHJvdGVjdGVkTWFuYWdl
ciA9IG1fa25vd25NYW5hZ2Vycy50YWtlKG1hbmFnZXIpOwogICAgIEFTU0VSVChwcm90ZWN0ZWRN
YW5hZ2VyKTsKIAotICAgIGF1dG8gdG9SZW1vdmUgPSBWZWN0b3I8VVVJRD4geyB9OworICAgIGF1
dG8gdG9SZW1vdmUgPSBWZWN0b3I8V1RGOjpVVUlEPiB7IH07CiAgICAgZm9yIChhdXRvJiBpdGVy
YXRvciA6IG1fb3duaW5nTWFuYWdlcikgewogICAgICAgICBpZiAoaXRlcmF0b3IudmFsdWUgIT0g
bWFuYWdlcikKICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5oCmluZGV4IGI5YTc1ODQ4NGM3Mi4uZTMzMGMz
Mjg0OGFhIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYk5vdGlmaWNhdGlv
blByb3ZpZGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJOb3RpZmljYXRpb25Q
cm92aWRlci5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBIYXNo
U2V0PFdLUmV0YWluUHRyPFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZj4+IG1fa25vd25NYW5hZ2Vy
czsKLSAgICBIYXNoTWFwPFVVSUQsIFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZj4gbV9vd25pbmdN
YW5hZ2VyOworICAgIEhhc2hNYXA8V1RGOjpVVUlELCBXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWY+
IG1fb3duaW5nTWFuYWdlcjsKICAgICBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVm
PiBtX3Blcm1pc3Npb25zOwogCiAgICAgSGFzaFNldDxXS1JldGFpblB0cjxXS05vdGlmaWNhdGlv
blJlZj4+IG1fa25vd25QZXJzaXN0ZW50Tm90aWZpY2F0aW9uczsK
</data>

          </attachment>
      

    </bug>

</bugzilla>