<?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>236695</bug_id>
          
          <creation_ts>2022-02-16 01:40:10 -0800</creation_ts>
          <short_desc>CrashTracer: com.apple.WebKit.WebContent at JavaScriptCore: bmalloc_allocate_impl_impl_slow</short_desc>
          <delta_ts>2022-02-17 01:26:51 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>236736</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jean-Yves Avenard [:jya]">jean-yves.avenard</reporter>
          <assigned_to name="Jean-Yves Avenard [:jya]">jean-yves.avenard</assigned_to>
          <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>mifenton</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1842172</commentid>
    <comment_count>0</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-02-16 01:40:10 -0800</bug_when>
    <thetext>Under some circumstances, we run out of memory

Thread 0 Crashed ↩::   Dispatch queue: com.apple.main-thread
0   JavaScriptCore                	       0x18ccfef34 bmalloc_allocate_impl_impl_slow + 60 (/Library/Caches/com.apple.xbs/Sources/bmalloc/WebKit-7613.1.16.0.4/Source/bmalloc/libpas/src/libpas/pas_utils.h:186)
1   JavaScriptCore                	       0x18ccf7f78 bmalloc_allocate_impl_casual_case + 272 (/Library/Caches/com.apple.xbs/Sources/bmalloc/WebKit-7613.1.16.0.4/Source/bmalloc/libpas/src/libpas/pas_try_allocate_intrinsic.h:173)
2   WebCore                       	       0x191a75728 WebCore::combineSegmentsData(WTF::Vector&lt;WebCore::FragmentedSharedBuffer::DataSegmentVectorEntry, 1ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc&gt; const&amp;, unsigned long) + 72 (/System/Volumes/Data/SWE/iOS/BuildRoots/BuildRoot949/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.4.Internal.sdk/usr/local/include/wtf/FastMalloc.h:219)
3   WebCore                       	       0x191a7566c WebCore::FragmentedSharedBuffer::makeContiguous() const + 280 (/Library/Caches/com.apple.xbs/Sources/WebCore/WebKit-7613.1.16.0.4/Source/WebCore/./platform/SharedBuffer.cpp:120)
4   WebCore                       	       0x1918c3e34 WebCore::CachedRawResource::updateBuffer(WebCore::FragmentedSharedBuffer const&amp;) + 140 (/Library/Caches/com.apple.xbs/Sources/WebCore/WebKit-7613.1.16.0.4/Source/WebCore/./loader/cache/CachedRawResource.cpp:71)
5   WebCore                       	       0x191890b78 WebCore::SubresourceLoader::didReceiveBuffer(WebCore::FragmentedSharedBuffer const&amp;, long long, WebCore::DataPayloadType) + 252 (/Library/Caches/com.apple.xbs/Sources/WebCore/WebKit-7613.1.16.0.4/Source/WebCore/./loader/SubresourceLoader.cpp:545)
6   WebKit                        	       0x18fb7e344 WebKit::WebResourceLoader::didReceiveData(IPC::SharedBufferCopy const&amp;, long long) + 296 (/Library/Caches/com.apple.xbs/Sources/WebKit/WebKit-7613.1.16.0.4/Source/WebKit/WebProcess/Network/WebResourceLoader.cpp:221)
7   WebKit                        	       0x18fd1e340 WebKit::WebResourceLoader::didReceiveWebResourceLoaderMessage(IPC::Connection&amp;, IPC::Decoder&amp;) + 380 (/Library/Caches/com.apple.xbs/Sources/WebKit/WebKit-7613.1.16.0.4/Source/WebKit/Platform/IPC/HandleMessage.h:125)
8   WebKit                        	       0x18f7856d0 IPC::Connection::dispatchMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;) + 788 (/Library/Caches/com.apple.xbs/Sources/WebKit/WebKit-7613.1.16.0.4/Source/WebKit/Platform/IPC/Connection.cpp:1080)
9   WebKit                        	       0x18f787e74 WTF::Detail::CallableWrapper&lt;IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr&lt;IPC::Decoder, std::__1::default_delete&lt;IPC::Decoder&gt; &gt;)::$_13, void&gt;::call() + 252 (/Library/Caches/com.apple.xbs/Sources/WebKit/WebKit-7613.1.16.0.4/Source/WebKit/Platform/IPC/Connection.cpp:1194)
10  JavaScriptCore                	       0x18cc9bb94 WTF::RunLoop::performWork() + 200 (/Library/Caches/com.apple.xbs/Binaries/WTF/install/Root/usr/local/include/wtf/Function.h:82)
11  JavaScriptCore                	       0x18cc9c930 WTF::RunLoop::performWork(void*) + 36 (/Library/Caches/com.apple.xbs/Sources/WTF/WebKit-7613.1.16.0.4/Source/WTF/wtf/cf/RunLoopCF.cpp:46)

While we can&apos;t tell which sites this is occurring with, when using Speedtest.net we get very close to the 1GB memory limit and sometimes ever going over it.

One possible explanation for this high memory usage is that whenever we receive a new partial segment for a XHRRequest, the FragmentedSharedBuffer is flattened by CachedRawResource before being passed to the various listener. Prior bug 233030 this flattening was also occurring (though silently) when SharedBuffer::data() method was called. Bug 233030 changed the signature of the crash.

But not flattening repeatedly the SharedBuffer and only doing it for listener actually needed it we can lower the memory usage (though it may be at the expense of small speed loss as flattening of the SharedBuffer could be done multiple times for the same SharedBuffer).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842173</commentid>
    <comment_count>1</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-02-16 01:40:33 -0800</bug_when>
    <thetext>rdar://87596724</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842178</commentid>
    <comment_count>2</comment_count>
      <attachid>452161</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-02-16 01:48:13 -0800</bug_when>
    <thetext>Created attachment 452161
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842212</commentid>
    <comment_count>3</comment_count>
      <attachid>452169</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-02-16 03:04:40 -0800</bug_when>
    <thetext>Created attachment 452169
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842217</commentid>
    <comment_count>4</comment_count>
      <attachid>452172</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-02-16 03:16:10 -0800</bug_when>
    <thetext>Created attachment 452172
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842423</commentid>
    <comment_count>5</comment_count>
      <attachid>452222</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2022-02-16 11:47:10 -0800</bug_when>
    <thetext>Created attachment 452222
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842447</commentid>
    <comment_count>6</comment_count>
      <attachid>452222</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-02-16 12:23:41 -0800</bug_when>
    <thetext>Comment on attachment 452222
Patch

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        FragmentedSharedBuffer is receieved from the network process, it is proactively coalesced

received

&gt; Source/WebCore/loader/cache/CachedRawResource.cpp:118
&gt; +            if (auto incrementalData = calculateIncrementalDataChunk(contiguousData)) {

this should be using data rather than contiguousData.

Otherwise the client would have received each individual segment, and then a SharedBufferDataView restricting the content to just the last segment received but that actually takes a reference to the entire content. This could potentially means we keep a reference for longer than needed.

&gt; Source/WebCore/loader/cache/CachedScript.cpp:87
&gt;              m_scriptHash = m_script.impl()-&gt;hash();

If the CachedScript received fragmented content, finishLoading would have been called. This version has dropped the makeContiguous to m_data in finishLoading, this could potentially lead to multiple call to makeContiguous on the same buffer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842453</commentid>
    <comment_count>7</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2022-02-16 12:35:59 -0800</bug_when>
    <thetext>(In reply to Jean-Yves Avenard [:jya] from comment #6)
&gt; Comment on attachment 452222 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=452222&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:11
&gt; &gt; +        FragmentedSharedBuffer is receieved from the network process, it is proactively coalesced
&gt; 
&gt; received
&gt; 
&gt; &gt; Source/WebCore/loader/cache/CachedRawResource.cpp:118
&gt; &gt; +            if (auto incrementalData = calculateIncrementalDataChunk(contiguousData)) {
&gt; 
&gt; this should be using data rather than contiguousData.
&gt; 
&gt; Otherwise the client would have received each individual segment, and then a
&gt; SharedBufferDataView restricting the content to just the last segment
&gt; received but that actually takes a reference to the entire content. This
&gt; could potentially means we keep a reference for longer than needed.

Okay. Can we fix that in a future patch? This one keeps the original behavior of coalescing and storing in m_data, then passing m_data in.

&gt; &gt; Source/WebCore/loader/cache/CachedScript.cpp:87
&gt; &gt;              m_scriptHash = m_script.impl()-&gt;hash();
&gt; 
&gt; If the CachedScript received fragmented content, finishLoading would have
&gt; been called. This version has dropped the makeContiguous to m_data in
&gt; finishLoading, this could potentially lead to multiple call to
&gt; makeContiguous on the same buffer

Not sure I understand here; CachedScript::finishLoading() still coalesces the incoming buffer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842498</commentid>
    <comment_count>8</comment_count>
      <attachid>452222</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-02-16 13:33:08 -0800</bug_when>
    <thetext>Comment on attachment 452222
Patch

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

&gt; Source/WebCore/loader/cache/CachedRawResource.cpp:70
&gt; +    m_data = data.copy();

forgot to mention, if you take a copy rather than a reference to data ; you must keep a strong ref to data above, as a call to notifyClientsDataWasReceived will result in a re-entrant call to the CachedRawResource parent that will destroy data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842668</commentid>
    <comment_count>9</comment_count>
      <attachid>452294</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-02-16 19:47:32 -0800</bug_when>
    <thetext>Created attachment 452294
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842670</commentid>
    <comment_count>10</comment_count>
      <attachid>452295</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2022-02-16 19:54:54 -0800</bug_when>
    <thetext>Created attachment 452295
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842777</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-17 01:26:46 -0800</bug_when>
    <thetext>Committed r290005 (247391@main): &lt;https://commits.webkit.org/247391@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 452295.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452161</attachid>
            <date>2022-02-16 01:48:13 -0800</date>
            <delta_ts>2022-02-16 03:12:16 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-236695-20220216204810.patch</filename>
            <type>text/plain</type>
            <size>182396</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5Nzg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODE0M2VkMTYyNTY5YTBl
MTk2YzUxYTVjNTFhZTYwZWEzNjhmNjgwMy4uMzhkOThlN2NiMGY2Yjc0NWFlMmJhODU0ODA2YmVi
MTY5NzE0MTQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5NSBAQAorMjAyMi0wMi0xNiAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIENyYXNoVHJhY2VyOiBj
b20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQgYXQgSmF2YVNjcmlwdENvcmU6IGJtYWxsb2NfYWxs
b2NhdGVfaW1wbF9pbXBsX3Nsb3cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzNjY5NQorICAgICAgICByZGFyOi8vODc1OTY3MjQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMh
KS4KKworICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNETTo6c2FuaXRpemVJbml0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDRE06
OnNhbml0aXplUmVzcG9uc2UpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RN
Lmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1DbGllbnQuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6ZXh0cmFjdEtleUlEc0tleWlkcyk6CisgICAgICAgIChXZWJDb3JlOjpzYW5p
dGl6ZUtleWlkcyk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0
S2V5SURzQ2VuYyk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6
ZUNlbmMpOgorICAgICAgICAoV2ViQ29yZTo6c2FuaXRpemVXZWJNKToKKyAgICAgICAgKFdlYkNv
cmU6OmV4dHJhY3RLZXlJRHNXZWJNKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhUmVnaXN0
cnk6OnNhbml0aXplSW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGFSZWdpc3Ry
eTo6ZXh0cmFjdEtleUlEcyk6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0
RGF0YVJlZ2lzdHJ5Lmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0
ZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjp1cGRhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpyZW1vdmUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFLZXlTZXNzaW9uOjpzZW5kTWVzc2FnZSk6CisgICAgICAgICogTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleXM6OnVu
cmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIE1vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNlc3Np
b24vTWVkaWFNZXRhZGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcnR3b3JrSW1hZ2VMb2Fk
ZXI6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0
ZXIubW06CisgICAgICAgIChmaWxlV3JhcHBlckZvckVsZW1lbnQpOgorICAgICAgICAqIGVkaXRp
bmcvbWFjL0VkaXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6d3JpdGVJbWFn
ZVRvUGFzdGVib2FyZCk6CisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVFbmNsb3Np
bmdJbWFnZVdpdGhEYXRhKToKKyAgICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5o
OgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjpjZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0
YVJlY2VpdmVkKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAg
KiBodG1sL0ltYWdlRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEb2N1bWVu
dDo6dXBkYXRlRHVyaW5nUGFyc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURvY3VtZW50
OjpmaW5pc2hlZFBhcnNpbmcpOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6YWRkUmVz
b3VyY2VTaGFyZWRCdWZmZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNl
RGF0YTo6YnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNE
YXRhOjpSZXNvdXJjZURhdGE6OnNldEJ1ZmZlcik6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFn
ZUFnZW50OjptYWluUmVzb3VyY2VDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clBhZ2VBZ2VudDo6c2hhcmVkQnVmZmVyQ29udGVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZURh
dGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJj
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6ZGlkR2V0TG9hZERl
Y2lzaW9uRm9ySWNvbik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6ZmluaXNo
ZWRMb2FkaW5nSWNvbik6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAg
ICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRlcjo6ZGVsaXZlclJlc3BvbnNlQW5kRGF0YSk6CisgICAgICAgICogbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmg6CisgICAgICAg
IChXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YTo6U3Vic3RpdHV0ZURhdGEpOgorICAgICAgICAqIGxv
YWRlci9TdWJzdGl0dXRlUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN1YnN0aXR1dGVS
ZXNvdXJjZTo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3Vy
Y2U6OlN1YnN0aXR1dGVSZXNvdXJjZSk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hl
UmVzb3VyY2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSk6CisgICAgICAgICogbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6d3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJlY3RvcnkpOgor
ICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oOgorICAg
ICAgICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmFyY2hpdmVGYWN0b3J5Q3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFyY2hpdmVGYWN0
b3J5OjpjcmVhdGUpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5Lmg6
CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFyY2hpdmVSZXNvdXJjZTo6QXJjaGl2ZVJlc291cmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OkFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2
ZS9BcmNoaXZlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lX
ZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0
ZSk6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcpOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZv
bnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUJ1ZmZlcklu
dGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVJbWFnZURhdGEp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1
bmsgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OnVwZGF0ZUJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGlu
Zyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmg6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRSZXNvdXJjZTo6cmVzb3VyY2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRTY3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0OjpzY3Jp
cHQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFhTTFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNl
cmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJjZXMpOgorICAgICAgICAqIHBsYXRmb3JtL05vd1Bs
YXlpbmdNYW5hZ2VyLmg6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXJCdWlsZGVyOjpTaGFyZWRCdWZmZXJCdWlsZGVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oOgorICAgICAgICAqIHBs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmg6CisgICAgICAgICogcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVBy
aXZhdGVDbGVhcktleTo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1JbnN0YW5jZUNsZWFyS2V5OjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVxdWVzdExpY2Vuc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnVwZGF0ZUxpY2Vuc2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2U6OnNldERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZW5zdXJlRGVjb2Rl
ckF2YWlsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6c2V0RGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6cmVzZXREYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjpkYXRhQ2hhbmdlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdFNp
bmZEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6
ZXh0cmFjdEtleUlEc1NpbmYpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUZhaXJQbGF5
U3RyZWFtaW5nOjpzYW5pdGl6ZVNpbmYpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUZh
aXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNrZCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2
YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJhY3RLZXlJRHNTa2QpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJl
YW1pbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6YXRpb25EYXRhRm9yUmVxdWVz
dCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6dGFrZVVuZXhwZWN0ZWRLZXlSZXF1ZXN0Rm9ySW5pdGlhbGl6YXRpb25EYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXRTZXJ2
ZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZUZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6c2Vzc2lvbkZvcktleUlEcyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNl
bnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5j
ZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVSZXF1ZXN0cyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VE
ZWNvZGVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVj
b2RlckNHKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3Ry
ZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbWFnZURlY29k
ZXJHU3RyZWFtZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFn
ZURlY29kZXJHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvZW1lL0NETVRodW5kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZVRodW5k
ZXI6OnNhbml0aXplUmVzcG9uc2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFu
Y2VUaHVuZGVyOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXJz
ZWRSZXNwb25zZU1lc3NhZ2U6OlBhcnNlZFJlc3BvbnNlTWVzc2FnZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYXJzZWRSZXNwb25zZU1lc3NhZ2U6OnBheWxvYWQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFyc2VkUmVzcG9uc2VNZXNzYWdlOjpwYXlsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6
OkNETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmNoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmVycm9yQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVz
dExpY2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6
dXBkYXRlTGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVu
ZGVyOjpsb2FkU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25U
aHVuZGVyOjpyZW1vdmVTZXNzaW9uRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NhbGFi
bGVJbWFnZURlY29kZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvU2NhbGFibGVJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1GYWN0
b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1GYWN0b3J5OjphZGRLZXlzVG9TZXNz
aW9uV2l0aElEKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1GYWN0b3J5OjpyZW1vdmVLZXlz
RnJvbVNlc3Npb25XaXRoSUQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUZhY3Rvcnk6Omtl
eXNGb3JTZXNzaW9uV2l0aElEIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE06OnNh
bml0aXplUmVzcG9uc2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNl
OjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5zdGFu
Y2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNSW5z
dGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKiB0ZXN0aW5nL01vY2tDRE1G
YWN0b3J5Lmg6CisKIDIwMjItMDItMTQgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29t
PgogCiAgICAgICAgIFtDU1MgQ29udGFpbmVyIFF1ZXJpZXNdIFN1cHBvcnQgcmFuZ2Ugb3BlcmF0
b3JzIGluIHNpemUgcXVlcmllcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4MTNiN2Y4MzlmMTY4ZjhkZDUwMjJlM2Ew
YTU0NThiMmU4Y2E5NTY4Li5hNTIwOWU0YjZhYTNjNjE4M2I5Mzc5OTZkNDNlMDgzMjUxZmUyN2Ix
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDIyLTAyLTE2ICBKZWFuLVl2ZXMgQXZlbmFy
ZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQ3Jhc2hUcmFjZXI6IGNvbS5hcHBsZS5XZWJL
aXQuV2ViQ29udGVudCBhdCBKYXZhU2NyaXB0Q29yZTogYm1hbGxvY19hbGxvY2F0ZV9pbXBsX2lt
cGxfc2xvdworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM2Njk1CisgICAgICAgIHJkYXI6Ly84NzU5NjcyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0
YW5jZVByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5OjpyZXF1ZXN0TGljZW5zZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvblByb3h5OjpyZW1vdmVTZXNzaW9uRGF0YSk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpzZW5kTWVzc2FnZSk6CisgICAgICAgICog
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVDRE1Qcm94eTo6c2FuaXRpemVSZXNwb25zZSk6CisgICAgICAgICogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9TaGFyZWRC
dWZmZXJDb3B5LmNwcDoKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6ZGVjb2RlKToK
KyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6ZGF0YSBjb25zdCk6CisgICAgICAgIChJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHk6OnNhZmVCdWZmZXIgY29uc3QpOgorICAgICAgICAqIFBsYXRm
b3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5Lmg6CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNv
cHk6OlNoYXJlZEJ1ZmZlckNvcHkpOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5Ojpi
dWZmZXIgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
OgorICAgICAgICAoSVBDOjpXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj46OmVuY29k
ZSk6CisgICAgICAgIChJUEM6OldlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6ZGVj
b2RlKToKKyAgICAgICAgKElQQzo6V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmVuY29kZSk6Cisg
ICAgICAgIChJUEM6OldlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUpOgorICAgICAgICAo
SVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT46
OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFu
Y2VTZXNzaW9uOjpNZXNzYWdlPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViSGl0VGVzdFJlc3VsdERhdGE6OldlYkhpdFRlc3RSZXN1
bHREYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE06OnNhbml0aXplUmVzcG9uc2UgY29uc3QpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJlbW92ZVNlc3Npb25EYXRhKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24u
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdl
cjo6Y3JlYXRlSW1hZ2VEZWNvZGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGTWFuYWdlcjo6c2V0VXNlR1BVUHJvY2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZy
YW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpzb3VyY2Ug
Y29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUpOgorICAgICAg
ICAoV2ViS2l0OjpyZXNvdXJjZURhdGFGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmRpZEdldExvYWREZWNpc2lvbkZvckljb24pOgorCiAyMDIyLTAyLTE0ICBUaW0gSG9ydG9uICA8
dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIERpcmVjdCB0b3VjaGVzIGRvbid0
IHRyaWdnZXIgb3RoZXIgZ2VzdHVyZSByZWNvZ25pemVycyBpZiBXS01vdXNlR2VzdHVyZVJlY29n
bml6ZXIgc2VlcyB0aGVtIGZpcnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggNjgw
Mzk0ODU4YTE1YjhhMjU2OTZhYWVjN2M4ZDk0YWE3M2FkNzIyMy4uNTBjOGJhMzRiOTMxMWEyNDg5
MWY4ZGQ1N2M0MmRhZjRlOTQyMDUzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIzIEBACisyMDIyLTAyLTE2ICBKZWFuLVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5j
b20+CisKKyAgICAgICAgQ3Jhc2hUcmFjZXI6IGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudCBh
dCBKYXZhU2NyaXB0Q29yZTogYm1hbGxvY19hbGxvY2F0ZV9pbXBsX2ltcGxfc2xvdworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2Njk1CisgICAgICAg
IHJkYXI6Ly84NzU5NjcyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29ucyk6CisgICAgICAgIChX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nSWNvbik6CisgICAgICAgICogV2Vi
Vmlldy9XZWJEYXRhU291cmNlLm1tOgorICAgICAgICAoLVtXZWJEYXRhU291cmNlIGRhdGFdKToK
KyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoY3JlYXRlU2hhcmVN
ZW51SXRlbSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IG5hbWVzT2ZQcm9taXNlZEZpbGVzRHJv
cHBlZEF0RGVzdGluYXRpb246XSk6CisgICAgICAgICogV2ViVmlldy9XZWJSZXNvdXJjZS5tbToK
KyAgICAgICAgKC1bV2ViUmVzb3VyY2UgX3N0cmluZ1ZhbHVlXSk6CisKIDIwMjItMDItMTEgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBmaXgg
YnVpbGQgd2l0aCB0aGUgbGF0ZXN0IGlPUyBTREsuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKaW5kZXggMDE2MTIxOWQxZTI2YjI2MmM0ZWVlYzgxOThj
NDZkOGViMTRjMWIwMi4uMWQzNzAxZTZhYmZlNDZiY2YxNTUxMWZmMjQ2ODQ5ZDk5MDhjNWExNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcApAQCAt
MTM1LDcgKzEzNSw3IEBAIGJvb2wgQ0RNOjpzdXBwb3J0c0luaXREYXRhVHlwZShjb25zdCBBdG9t
U3RyaW5nJiBpbml0RGF0YVR5cGUpIGNvbnN0CiAgICAgcmV0dXJuIG1fcHJpdmF0ZSAmJiBtX3By
aXZhdGUtPnN1cHBvcnRlZEluaXREYXRhVHlwZXMoKS5jb250YWlucyhpbml0RGF0YVR5cGUpOwog
fQogCi1SZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNOjpzYW5pdGl6ZUluaXREYXRh
KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgaW5pdERhdGEpCitSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RN
OjpzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpCiB7CiAgICAgcmV0dXJuIEluaXREYXRh
UmVnaXN0cnk6OnNoYXJlZCgpLnNhbml0aXplSW5pdERhdGEoaW5pdERhdGFUeXBlLCBpbml0RGF0
YSk7CiB9CkBAIC0xNDUsNyArMTQ1LDcgQEAgYm9vbCBDRE06OnN1cHBvcnRzSW5pdERhdGEoY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmUKICAgICBy
ZXR1cm4gbV9wcml2YXRlICYmIG1fcHJpdmF0ZS0+c3VwcG9ydHNJbml0RGF0YShpbml0RGF0YVR5
cGUsIGluaXREYXRhKTsKIH0KIAotUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETTo6
c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkK
K1JlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE06OnNhbml0aXplUmVzcG9u
c2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpCiB7CiAgICAgaWYgKCFt
X3ByaXZhdGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKaW5kZXggZDdiMWQ1M2QwNDkxZjcyNzc5YjU5NGIyZDgz
YzA5YjgzYmNmMjA3Zi4uYmI3YmE5OTI3NDQ5MTNiOTgyMzNiYWJiN2Y2ZGZhMzIzMTU0MmI5MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oCkBAIC03Mywx
MCArNzMsMTAgQEAgcHVibGljOgogICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0Owog
ICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0Owog
Ci0gICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplSW5pdERhdGEoY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Jik7CisgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplSW5p
dERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJik7CiAgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCi0gICAgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAog
ICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvQ0RNQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL0NETUNsaWVudC5oCmluZGV4IDQxMGVkMmZiNjQyNzU2MmNlOWJkOGVkYTRkOTFhODZiYTk4
Y2FhNjEuLmY1ODY3MmExZTI0MjU3ZGNhZWMzOWVmMDk1MzBiOTYyZThiZDcxZDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1DbGllbnQuaApAQCAt
NDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q0RNQ2xpZW50KCkgPSBkZWZhdWx0
OwogCiAgICAgdmlydHVhbCB2b2lkIGNkbUNsaWVudEF0dGVtcHRUb1Jlc3VtZVBsYXliYWNrSWZO
ZWNlc3NhcnkoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNkbUNsaWVudFVucmVxdWVzdGVkSW5p
dGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2RtQ2xpZW50VW5yZXF1ZXN0ZWRJ
bml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8Y29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0
YVJlZ2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5p
dERhdGFSZWdpc3RyeS5jcHAKaW5kZXggNmY4ODhlMTc4NThkZGE2ZDk0NzFlYzFmNmVmNWQwNjZk
ZjBlNDk5MC4uMDdmMTVlMTUwY2ViNjhmZWM2YmFiZmFkMWFjOTVhMzlkOTVlMTU2YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lz
dHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXRE
YXRhUmVnaXN0cnkuY3BwCkBAIC01NCw3ICs1NCw3IEBAIG5hbWVzcGFjZSB7CiAgICAgY29uc3Qg
dWludDMyX3Qga0tleUlkc01heEtleUlkU2l6ZUluQnl0ZXMgPSA1MTI7CiB9CiAKLXN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0
S2V5SURzS2V5aWRzKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRp
YyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
PiBleHRyYWN0S2V5SURzS2V5aWRzKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKIHsKICAgICAvLyAxLiBGb3JtYXQKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5j
cnlwdGVkLW1lZGlhL2Zvcm1hdC1yZWdpc3RyeS9pbml0ZGF0YS9rZXlpZHMuaHRtbCNmb3JtYXQK
QEAgLTc0LDcgKzc0LDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY28KICAgICBpZiAoIWtpZHNB
cnJheSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIFZlY3RvcjxSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKKyAgICBWZWN0b3I8UmVmPGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CiAgICAgZm9yIChhdXRvJiB2YWx1ZSA6ICpraWRz
QXJyYXkpIHsKICAgICAgICAgYXV0byBrZXlJRCA9IHZhbHVlLT5hc1N0cmluZygpOwogICAgICAg
ICBpZiAoIWtleUlEKQpAQCAtOTMsNyArOTMsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0
b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0tleWlkcyhjbwog
ICAgIHJldHVybiBrZXlJRHM7CiB9CiAKLXN0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4gc2FuaXRpemVLZXlpZHMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQorc3RhdGljIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUtl
eWlkcyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gMS4g
Rm9ybWF0CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9mb3Jt
YXQtcmVnaXN0cnkvaW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0CkBAIC0xNTEsOSArMTUxLDkg
QEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0
ZW1TcGVjaWZpY0hlYWRlckJveD4+PiBJbmkKICAgICByZXR1cm4gcHNzaEJveGVzOwogfQogCi1z
dGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBJbml0RGF0
YVJlZ2lzdHJ5OjpleHRyYWN0S2V5SURzQ2VuYyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBidWZmZXIpCitzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4+PiBJbml0RGF0YVJlZ2lzdHJ5OjpleHRyYWN0S2V5SURzQ2VuYyhjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgVmVjdG9yPFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPj4ga2V5SURzOworICAgIFZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+IGtleUlEczsKIAogICAgIGF1dG8gcHNzaEJveGVzID0gZXh0cmFjdFBzc2hC
b3hlc0Zyb21DZW5jKGJ1ZmZlcik7CiAgICAgaWYgKCFwc3NoQm94ZXMpCkBAIC0xODUsNyArMTg1
LDcgQEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4g
SW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUkKICAgICByZXR1cm4ga2V5SURzOwogfQogCi1S
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRpemVD
ZW5jKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUNlbmMoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIDQuIENvbW1vbiBT
eXN0ZW1JRCBhbmQgUFNTSCBCb3ggRm9ybWF0CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlv
L2VuY3J5cHRlZC1tZWRpYS9mb3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEvY2VuYy5odG1sI2NvbW1v
bi1zeXN0ZW0KQEAgLTE5NSw3ICsxOTUsNyBAQCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRpemVDZW5jKGNvbnN0IEZyYWdtZW50ZWRTaAogICAg
IHJldHVybiBidWZmZXIuY29weSgpOwogfQogCi1zdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IHNhbml0aXplV2ViTShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZm
ZXIpCitzdGF0aWMgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXpl
V2ViTShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gQ2hl
Y2sgaWYgdGhlIGJ1ZmZlciBpcyBhIHZhbGlkIFdlYk0gaW5pdERhdGEuCiAgICAgLy8gVGhlIFdl
Yk0gaW5pdERhdGEgaXMgdGhlIENvbnRlbnRFbmNLZXlJRCwgc28gc2hvdWxkIGJlIGxlc3MgdGhh
biBrV2ViTU1heENvbnRlbnRFbmNLZXlJRFNpemUuCkBAIC0yMDUsMTAgKzIwNSwxMCBAQCBzdGF0
aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplV2ViTShjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJgogICAgIHJldHVybiBidWZmZXIuY29weSgpOwogfQogCi1zdGF0
aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0
cmFjdEtleUlEc1dlYk0oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj4+IGV4dHJhY3RLZXlJRHNXZWJNKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZl
cikKIHsKLSAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHM7Ci0g
ICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplZEJ1ZmZlciA9IHNhbml0
aXplV2ViTShidWZmZXIpOworICAgIFZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+IGtleUlEczsKKyAgICBhdXRvIHNhbml0aXplZEJ1ZmZlciA9IHNhbml0aXplV2ViTShi
dWZmZXIpOwogICAgIGlmICghc2FuaXRpemVkQnVmZmVyKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCkBAIC0yMzMsNyArMjMzLDcgQEAgSW5pdERhdGFSZWdpc3RyeTo6SW5pdERhdGFS
ZWdpc3RyeSgpCiAKIEluaXREYXRhUmVnaXN0cnk6On5Jbml0RGF0YVJlZ2lzdHJ5KCkgPSBkZWZh
dWx0OwogCi1SZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gSW5pdERhdGFSZWdpc3RyeTo6
c2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21T
dHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQogewogICAgIGF1dG8gaXRlciA9IG1fdHlwZXMuZmluZChpbml0RGF0YVR5cGUpOwogICAgIGlm
IChpdGVyID09IG1fdHlwZXMuZW5kKCkgfHwgIWl0ZXItPnZhbHVlLnNhbml0aXplSW5pdERhdGEp
CkBAIC0yNDEsNyArMjQxLDcgQEAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEluaXRE
YXRhUmVnaXN0cnk6OnNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmkKICAgICByZXR1cm4g
aXRlci0+dmFsdWUuc2FuaXRpemVJbml0RGF0YShidWZmZXIpOwogfQogCi1zdGQ6Om9wdGlvbmFs
PFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBJbml0RGF0YVJlZ2lzdHJ5Ojpl
eHRyYWN0S2V5SURzKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlE
cyhjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGJ1ZmZlcikKIHsKICAgICBhdXRvIGl0ZXIgPSBtX3R5cGVzLmZpbmQoaW5pdERhdGFU
eXBlKTsKICAgICBpZiAoaXRlciA9PSBtX3R5cGVzLmVuZCgpIHx8ICFpdGVyLT52YWx1ZS5zYW5p
dGl6ZUluaXREYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnkuaAppbmRleCA3N2Q2MDRiMDhiYjdmN2UzOGJjY2Iz
NTQ1YjM0YzhiMTM0MzU1ZWYyLi5iYWU3MWI3ZTkwNzdkOTA5YmQ1MjJhNjc2YWVhMjQ3MTNlZTMw
NjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0lu
aXREYXRhUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL0luaXREYXRhUmVnaXN0cnkuaApAQCAtNDUsMTIgKzQ1LDEyIEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgSW5pdERhdGFSZWdpc3RyeSYgc2hhcmVkKCk7CiAgICAgZnJp
ZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPEluaXREYXRhUmVnaXN0cnk+OwogCi0gICAgUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmlu
ZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+Pj4gZXh0cmFjdEtleUlEcyhjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gc2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5
cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBl
eHRyYWN0S2V5SURzKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpOwogCiAgICAgc3RydWN0IEluaXREYXRhVHlwZUNhbGxiYWNrcyB7
Ci0gICAgICAgIHVzaW5nIFNhbml0aXplSW5pdERhdGFDYWxsYmFjayA9IEZ1bmN0aW9uPFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik+
OwotICAgICAgICB1c2luZyBFeHRyYWN0S2V5SURzQ2FsbGJhY2sgPSBGdW5jdGlvbjxzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+Pihjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJik+OworICAgICAgICB1c2luZyBTYW5pdGl6ZUluaXREYXRhQ2FsbGJh
Y2sgPSBGdW5jdGlvbjxSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4oY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpPjsKKyAgICAgICAgdXNpbmcgRXh0cmFjdEtleUlEc0Nh
bGxiYWNrID0gRnVuY3Rpb248c3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+Pj4oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpPjsKIAogICAg
ICAgICBTYW5pdGl6ZUluaXREYXRhQ2FsbGJhY2sgc2FuaXRpemVJbml0RGF0YTsKICAgICAgICAg
RXh0cmFjdEtleUlEc0NhbGxiYWNrIGV4dHJhY3RLZXlJRHM7CkBAIC02Miw4ICs2Miw4IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgd2VibU5hbWUoKTsKIAogICAgIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SVNPUHJvdGVjdGlvblN5
c3RlbVNwZWNpZmljSGVhZGVyQm94Pj4+IGV4dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyhjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJik7Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNDZW5jKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKLSAgICBzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IHNhbml0aXplQ2VuYyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7Cisg
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNDZW5jKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
KTsKKyAgICBzdGF0aWMgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0
aXplQ2VuYyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKIHByaXZhdGU6CiAgICAg
SW5pdERhdGFSZWdpc3RyeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCmluZGV4IDE0Nzc2YzIwMTUxYmZl
ZmUzODA3OWEzMzczMGM4ODY2MjY4YmE0NmEuLjA2NjhlYjcxNGM2Y2EwMmU1MzY4NDljMWQ0NDIx
ZjE1NDNlZWM5ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lk
IE1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVSZXF1ZXN0KGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgY29uc3QgQnVmZgogICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhp
cywgVGFza1NvdXJjZTo6TmV0d29ya2luZywgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0
aGlzIH0sIGluaXREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoaW5pdERhdGEuZGF0YSgpLCBp
bml0RGF0YS5sZW5ndGgoKSksIGluaXREYXRhVHlwZSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlz
ZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoKSBtdXRhYmxlIHsKICAgICAg
ICAgLy8gMTAuMS4gSWYgdGhlIGluaXQgZGF0YSBpcyBub3QgdmFsaWQgZm9yIGluaXREYXRhVHlw
ZSwgcmVqZWN0IHByb21pc2Ugd2l0aCBhIG5ld2x5IGNyZWF0ZWQgVHlwZUVycm9yLgogICAgICAg
ICAvLyAxMC4yLiBMZXQgc2FuaXRpemVkIGluaXQgZGF0YSBiZSBhIHZhbGlkYXRlZCBhbmQgc2Fu
aXRpemVkIHZlcnNpb24gb2YgaW5pdCBkYXRhLgotICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gc2FuaXRpemVkSW5pdERhdGEgPSBtX2ltcGxlbWVudGF0aW9uLT5zYW5pdGl6
ZUluaXREYXRhKGluaXREYXRhVHlwZSwgaW5pdERhdGEpOworICAgICAgICBSZWZQdHI8Y29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVkSW5pdERhdGEgPSBtX2ltcGxlbWVudGF0
aW9uLT5zYW5pdGl6ZUluaXREYXRhKGluaXREYXRhVHlwZSwgaW5pdERhdGEpOwogCiAgICAgICAg
IC8vIDEwLjMuIElmIHRoZSBwcmVjZWRpbmcgc3RlcCBmYWlsZWQsIHJlamVjdCBwcm9taXNlIHdp
dGggYSBuZXdseSBjcmVhdGVkIFR5cGVFcnJvci4KICAgICAgICAgaWYgKCFzYW5pdGl6ZWRJbml0
RGF0YSkgewpAQCAtMjIzLDcgKzIyMyw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0
ZVJlcXVlc3QoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBCdWZmCiAgICAg
ICAgICAgICBtX2xhdGVzdERlY3J5cHRUaW1lID0gMDsKICAgICAgICAgfQogCi0gICAgICAgIG1f
aW5zdGFuY2VTZXNzaW9uLT5yZXF1ZXN0TGljZW5zZShtX3Nlc3Npb25UeXBlLCBpbml0RGF0YVR5
cGUsIHNhbml0aXplZEluaXREYXRhLnJlbGVhc2VOb25OdWxsKCksIFt0aGlzLCB3ZWFrVGhpcywg
cHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZp
ZXIpXSAoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5n
JiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNz
aW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgbV9pbnN0YW5j
ZVNlc3Npb24tPnJlcXVlc3RMaWNlbnNlKG1fc2Vzc2lvblR5cGUsIGluaXREYXRhVHlwZSwgc2Fu
aXRpemVkSW5pdERhdGEucmVsZWFzZU5vbk51bGwoKSwgW3RoaXMsIHdlYWtUaGlzLCBwcm9taXNl
ID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildIChS
ZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5jZVNlc3Np
b246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCF3
ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTI1OCw3ICsyNTgsNyBAQCB2
b2lkIE1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVSZXF1ZXN0KGNvbnN0IEF0b21TdHJpbmcmIGlu
aXREYXRhVHlwZSwgY29uc3QgQnVmZgogICAgICAgICAgICAgICAgIG1fY2FsbGFibGUgPSB0cnVl
OwogCiAgICAgICAgICAgICAgICAgLy8gMTAuOS4zLiBSdW4gdGhlIFF1ZXVlIGEgIm1lc3NhZ2Ui
IEV2ZW50IGFsZ29yaXRobSBvbiB0aGUgc2Vzc2lvbiwgcHJvdmlkaW5nIG1lc3NhZ2UgdHlwZSBh
bmQgbWVzc2FnZS4KLSAgICAgICAgICAgICAgICBlbnF1ZXVlTWVzc2FnZShtZXNzYWdlVHlwZSwg
bWVzc2FnZSk7CisgICAgICAgICAgICAgICAgZW5xdWV1ZU1lc3NhZ2UobWVzc2FnZVR5cGUsIFdU
Rk1vdmUobWVzc2FnZSkpOwogCiAgICAgICAgICAgICAgICAgLy8gMTAuOS4zLiBSZXNvbHZlIHBy
b21pc2UuCiAgICAgICAgICAgICAgICAgSU5GT19MT0coaWRlbnRpZmllciwgIjo6dGFzaygpIFJl
c29sdmVkIik7CkBAIC00MjIsNyArNDIyLDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OnVwZGF0
ZShjb25zdCBCdWZmZXJTb3VyY2UmIHJlc3BvbnNlLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYKICAg
ICAvLyA2LiBSdW4gdGhlIGZvbGxvd2luZyBzdGVwcyBpbiBwYXJhbGxlbDoKICAgICBxdWV1ZVRh
c2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlz
LCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCByZXNwb25zZSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2UubGVuZ3RoKCkpLCBwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildICgpIG11dGFi
bGUgewogICAgICAgICAvLyA2LjEuIExldCBzYW5pdGl6ZWQgcmVzcG9uc2UgYmUgYSB2YWxpZGF0
ZWQgYW5kL29yIHNhbml0aXplZCB2ZXJzaW9uIG9mIHJlc3BvbnNlIGNvcHkuCi0gICAgICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZWRSZXNwb25zZSA9IG1faW1wbGVt
ZW50YXRpb24tPnNhbml0aXplUmVzcG9uc2UocmVzcG9uc2UpOworICAgICAgICBSZWZQdHI8Y29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVkUmVzcG9uc2UgPSBtX2ltcGxlbWVu
dGF0aW9uLT5zYW5pdGl6ZVJlc3BvbnNlKHJlc3BvbnNlKTsKIAogICAgICAgICAvLyA2LjIuIElm
IHRoZSBwcmVjZWRpbmcgc3RlcCBmYWlsZWQsIG9yIGlmIHNhbml0aXplZCByZXNwb25zZSBpcyBl
bXB0eSwgcmVqZWN0IHByb21pc2Ugd2l0aCBhIG5ld2x5IGNyZWF0ZWQgVHlwZUVycm9yLgogICAg
ICAgICBpZiAoIXNhbml0aXplZFJlc3BvbnNlIHx8IHNhbml0aXplZFJlc3BvbnNlLT5pc0VtcHR5
KCkpIHsKQEAgLTYwMSw3ICs2MDEsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6cmVtb3ZlKFJl
ZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICAgICAgLy8gNC4zLiBMZXQgbWVzc2Fn
ZSB0eXBlIGJlIG51bGwuCiAKICAgICAgICAgLy8gNC40LiBVc2UgdGhlIGNkbSB0byBleGVjdXRl
IHRoZSBmb2xsb3dpbmcgc3RlcHM6Ci0gICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT5yZW1vdmVT
ZXNzaW9uRGF0YShtX3Nlc3Npb25JZCwgbV9zZXNzaW9uVHlwZSwgW3RoaXMsIHdlYWtUaGlzLCBw
cm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmll
cildIChDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYmIGtleXMsIHN0ZDo6b3B0
aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmIG1lc3NhZ2UsIENETUluc3RhbmNl
U2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIG1faW5z
dGFuY2VTZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShtX3Nlc3Npb25JZCwgbV9zZXNzaW9uVHlw
ZSwgW3RoaXMsIHdlYWtUaGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmll
ciA9IFdURk1vdmUoaWRlbnRpZmllcildIChDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1Zl
Y3RvciYmIGtleXMsIHN0ZDo6b3B0aW9uYWw8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+PiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRl
ZCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAg
IHJldHVybjsKIApAQCAtNzE2LDkgKzcxNiw5IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjp1cGRh
dGVLZXlTdGF0dXNlcyhDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYmIGluCiAg
ICAgICAgIH0pOwogfQogCi12b2lkIE1lZGlhS2V5U2Vzc2lvbjo6c2VuZE1lc3NhZ2UoQ0RNTWVz
c2FnZVR5cGUgbWVzc2FnZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3Nh
Z2UpCit2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUgbWVz
c2FnZVR5cGUsIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCiB7
Ci0gICAgZW5xdWV1ZU1lc3NhZ2UobWVzc2FnZVR5cGUsIG1lc3NhZ2UpOworICAgIGVucXVldWVN
ZXNzYWdlKG1lc3NhZ2VUeXBlLCBXVEZNb3ZlKG1lc3NhZ2UpKTsKIH0KIAogdm9pZCBNZWRpYUtl
eVNlc3Npb246OnNlc3Npb25JZENoYW5nZWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vz
c2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNl
c3Npb24uaAppbmRleCAzNjVhY2U1YzA5NWU3ZGMwYzU3MWU3NmNjZjJjMDdhYWZjNjJiYWE2Li5j
ZjNhODQ5OGZkNDUwZWYxODI3NGE4MDkyMTY2NThmMjM0ODJlYWJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgK
QEAgLTg3LDcgKzg3LDcgQEAgcHVibGljOgogICAgIHVzaW5nIENsb3NlZFByb21pc2UgPSBET01Q
cm9taXNlUHJveHk8SURMVW5kZWZpbmVkPjsKICAgICBDbG9zZWRQcm9taXNlJiBjbG9zZWQoKSB7
IHJldHVybiBtX2Nsb3NlZFByb21pc2UuZ2V0KCk7IH0KIAotICAgIGNvbnN0IFZlY3RvcjxzdGQ6
OnBhaXI8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBNZWRpYUtleVN0YXR1cz4+JiBzdGF0
dXNlcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzZXM7IH0KKyAgICBjb25zdCBWZWN0b3I8c3Rk
OjpwYWlyPFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgTWVkaWFLZXlTdGF0dXM+
PiYgc3RhdHVzZXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1c2VzOyB9CiAKICAgICB1bnNpZ25l
ZCBpbnRlcm5hbEluc3RhbmNlU2Vzc2lvbk9iamVjdFJlZkNvdW50KCkgY29uc3QgeyByZXR1cm4g
bV9pbnN0YW5jZVNlc3Npb24tPnJlZkNvdW50KCk7IH0KIApAQCAtMTAwLDcgKzEwMCw3IEBAIHBy
aXZhdGU6CiAKICAgICAvLyBDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQKICAgICB2b2lkIHVwZGF0
ZUtleVN0YXR1c2VzKENETUluc3RhbmNlU2Vzc2lvbkNsaWVudDo6S2V5U3RhdHVzVmVjdG9yJiYp
IG92ZXJyaWRlOwotICAgIHZvaWQgc2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUsIFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpIGZpbmFsOworICAgIHZvaWQgc2VuZE1lc3Nh
Z2UoQ0RNTWVzc2FnZVR5cGUsIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1l
c3NhZ2UpIGZpbmFsOwogICAgIHZvaWQgc2Vzc2lvbklkQ2hhbmdlZChjb25zdCBTdHJpbmcmKSBm
aW5hbDsKICAgICBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSBmaW5hbDsKIApAQCAtMTQw
LDEwICsxNDAsMTAgQEAgcHJpdmF0ZToKICAgICBNZWRpYUtleVNlc3Npb25UeXBlIG1fc2Vzc2lv
blR5cGU7CiAgICAgUmVmPENETT4gbV9pbXBsZW1lbnRhdGlvbjsKICAgICBSZWY8Q0RNSW5zdGFu
Y2VTZXNzaW9uPiBtX2luc3RhbmNlU2Vzc2lvbjsKLSAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+PiBtX3JlY29yZE9mS2V5VXNhZ2U7CisgICAgVmVjdG9yPFJlZjxjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gbV9yZWNvcmRPZktleVVzYWdlOwogICAgIGRvdWJsZSBt
X2ZpcnN0RGVjcnlwdFRpbWUgeyAwIH07CiAgICAgZG91YmxlIG1fbGF0ZXN0RGVjcnlwdFRpbWUg
eyAwIH07Ci0gICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4s
IE1lZGlhS2V5U3RhdHVzPj4gbV9zdGF0dXNlczsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPFJlZjxj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgTWVkaWFLZXlTdGF0dXM+PiBtX3N0YXR1c2Vz
OwogCiAgICAgdXNpbmcgRGlzcGxheUNoYW5nZWRPYnNlcnZlciA9IE9ic2VydmVyPHZvaWQoUGxh
dGZvcm1EaXNwbGF5SUQpPjsKICAgICBEaXNwbGF5Q2hhbmdlZE9ic2VydmVyIG1fZGlzcGxheUNo
YW5nZWRPYnNlcnZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlzLmNwcAppbmRleCAzNjdmMzFkMTg2YjUxNjM5YTljNzQyMTNmMGNmOGU2
ZjJmOGQyNmVhLi42YTU0ZGNkMjkzY2YzMjkxMTU3MDllOTk1MDFkOTNiNzIwMDIxYTJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMu
Y3BwCkBAIC0xNzcsNyArMTc3LDcgQEAgYm9vbCBNZWRpYUtleXM6Omhhc09wZW5TZXNzaW9ucygp
IGNvbnN0CiAgICAgICAgIH0pOwogfQogCi12b2lkIE1lZGlhS2V5czo6dW5yZXF1ZXN0ZWRJbml0
aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEpCit2b2lkIE1lZGlhS2V5czo6dW5yZXF1
ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmIGluaXREYXRhVHlw
ZSwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEpCiB7CiAgICAg
Zm9yIChhdXRvJiBjZG1DbGllbnQgOiBtX2NkbUNsaWVudHMpCiAgICAgICAgIGNkbUNsaWVudC5j
ZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGluaXREYXRhVHlw
ZSwgaW5pdERhdGEuY29weVJlZigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oCmluZGV4IDkxYTFhMDcxMTQzM2JlMjQ3ZGQyYTg1YzVm
NGFkMDkzOGEwOWE3YWMuLjg2NDUyZDg4YjI0OWFlZWJhN2NmNDJkZWY5OGVjNTYxZDkzZjdkZjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eXMuaApAQCAtODYsNyArODYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgTWVkaWFLZXlzKERvY3VtZW50
JiwgYm9vbCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIGJvb2wgcGVyc2lzdGVudFN0YXRlQWxs
b3dlZCwgY29uc3QgVmVjdG9yPE1lZGlhS2V5U2Vzc2lvblR5cGU+JiwgUmVmPENETT4mJiwgUmVm
PENETUluc3RhbmNlPiYmKTsKIAogICAgIC8vIENETUluc3RhbmNlQ2xpZW50Ci0gICAgdm9pZCB1
bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIHVucmVxdWVzdGVkSW5p
dGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAg
ICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCB7IHJldHVybiBtX2xvZ2dlcjsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0
YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRh
LmNwcAppbmRleCA4NzRhYTdmMGIxOGYwZWU3NTg4MGJhNWY1ZWY2N2Q0N2JmYzJiMmI0Li5iZDEw
NjcxNjFhMGQyNWI5M2RlNGY3YWU2YjQ3ZjVmNjFkZmMzNGE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYU1ldGFkYXRhLmNwcApAQCAtNzcs
NyArNzcsNyBAQCB2b2lkIEFydHdvcmtJbWFnZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTAogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIC8vIFNhbml0aXplIHRoZSBpbWFnZSBieSBkZWNvZGluZyBpdCBpbnRvIGEgQml0bWFw
SW1hZ2UuCi0gICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlclRvU2FuaXRp
emUgPSBtX2NhY2hlZEltYWdlLT5pbWFnZSgpLT5kYXRhKCk7CisgICAgYXV0byBidWZmZXJUb1Nh
bml0aXplID0gbV9jYWNoZWRJbWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOwogICAgIGF1dG8gYml0bWFw
SW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7CiAgICAgYml0bWFwSW1hZ2UtPnNldERhdGEo
V1RGTW92ZShidWZmZXJUb1Nhbml0aXplKSwgdHJ1ZSk7CiAgICAgYXV0byBpbWFnZUJ1ZmZlciA9
IEltYWdlQnVmZmVyOjpjcmVhdGUoYml0bWFwSW1hZ2UtPnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6
VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9y
bWF0OjpCR1JBOCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hU
TUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0
ZXIubW0KaW5kZXggNWE2MDU5NGI1ZTQ4MmRkMmE1YTdiYzIwN2U5YmIyNjQwMmQyMGVlOS4uNzhi
ZjI0YzE3ZjczODA2YTMzYzExNGY1ODNiZjljZjRiMWMyYjAxNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtMjMyMCw3ICsyMzIwLDcgQEAg
c3RhdGljIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBmaWxlV3JhcHBlckZvclVSTChEb2N1bWVu
dExvYWRlciogZGF0YVNvdXJjZSwgTlMKIHN0YXRpYyBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4g
ZmlsZVdyYXBwZXJGb3JFbGVtZW50KEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAg
aWYgKENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGVsZW1lbnQuY2FjaGVkSW1hZ2UoKSkgewot
ICAgICAgICBpZiAoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogc2hhcmVkQnVmZmVyID0gY2FjaGVk
SW1hZ2UtPnJlc291cmNlQnVmZmVyKCkpCisgICAgICAgIGlmIChhdXRvKiBzaGFyZWRCdWZmZXIg
PSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSkKICAgICAgICAgICAgIHJldHVybiBhZG9w
dE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOnNo
YXJlZEJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQppbmRleCA3ODYwOTE4
N2Y3NWQwNzZlYjlkNzgxNzNiNTBlNGJjNjQwZGQ1Mjc1Li4wNTVmM2Q2NjgyYmZkNTI2NGUyZmM5
NjQ2ZTdlMDY0MjU2Y2VlYWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21h
Yy9FZGl0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFj
Lm1tCkBAIC0zMzUsOSArMzM1LDggQEAgdm9pZCBFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9h
cmQoUGFzdGVib2FyZCYgcGFzdGVib2FyZCwgRWxlbWVudCYgaW1hZ2VFbGVtZW4KICAgICBwYXN0
ZWJvYXJkSW1hZ2UudXJsLnVybCA9IHVybDsKICAgICBwYXN0ZWJvYXJkSW1hZ2UudXJsLnRpdGxl
ID0gdGl0bGU7CiAgICAgcGFzdGVib2FyZEltYWdlLnVybC51c2VyVmlzaWJsZUZvcm0gPSBXVEY6
OnVzZXJWaXNpYmxlU3RyaW5nKHBhc3RlYm9hcmRJbWFnZS51cmwudXJsKTsKLSAgICBwYXN0ZWJv
YXJkSW1hZ2UucmVzb3VyY2VEYXRhID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCk7Ci0g
ICAgcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUgPSBjYWNoZWRJbWFnZS0+cmVzcG9u
c2UoKS5taW1lVHlwZSgpOwotCisgICAgaWYgKGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigp
KQorICAgICAgICBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhID0gY2FjaGVkSW1hZ2UtPnJl
c291cmNlQnVmZmVyKCktPm1ha2VDb250aWd1b3VzKCk7CiAgICAgcGFzdGVib2FyZC53cml0ZShw
YXN0ZWJvYXJkSW1hZ2UpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBdHRhY2htZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2ht
ZW50RWxlbWVudC5jcHAKaW5kZXggNWEyZGI1ZjhmNzhjMzI2MGYyZDRkMDU5YTg2NzEyYjg0OTg4
NTM0OS4uZDA3NTJlOTg3YzJlOTRjMDM0ZDIyNGMxNmIwY2Q0Nzc3YWVkMjNjMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcApAQCAtMjM1LDcgKzIz
NSw3IEBAIHN0YXRpYyBib29sIG1pbWVUeXBlSXNTdWl0YWJsZUZvcklubGluZUltYWdlQXR0YWNo
bWVudChjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHJldHVybiBNSU1FVHlwZVJlZ2lzdHJ5
Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGUobWltZVR5cGUpIHx8IE1JTUVUeXBlUmVnaXN0cnk6
OmlzUERGTUlNRVR5cGUobWltZVR5cGUpOwogfQogCi12b2lkIEhUTUxBdHRhY2htZW50RWxlbWVu
dDo6dXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIEhUTUxBdHRhY2ht
ZW50RWxlbWVudDo6dXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcmIGNv
bnRlbnRUeXBlLCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7
CiAgICAgaWYgKGJ1ZmZlci0+aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC0yNTMsNyAr
MjUzLDcgQEAgdm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUVuY2xvc2luZ0ltYWdl
V2l0aERhdGEoY29uc3QgU3RyaW5nJiBjb250ZW50VHkKICAgICBpZiAoIW1pbWVUeXBlSXNTdWl0
YWJsZUZvcklubGluZUltYWdlQXR0YWNobWVudChtaW1lVHlwZSkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGVuY2xvc2luZ0ltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQoKSwg
QmxvYjo6Y3JlYXRlKCZkb2N1bWVudCgpLCBidWZmZXItPmV4dHJhY3REYXRhKCksIG1pbWVUeXBl
KSkpOworICAgIGVuY2xvc2luZ0ltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQo
KSwgQmxvYjo6Y3JlYXRlKCZkb2N1bWVudCgpLCBidWZmZXItPmNvcHlEYXRhKCksIG1pbWVUeXBl
KSkpOwogfQogCiB2b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRlVGh1bWJuYWlsKGNv
bnN0IFJlZlB0cjxJbWFnZT4mIHRodW1ibmFpbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxB
dHRhY2htZW50RWxlbWVudC5oCmluZGV4IGZkM2QxYTM4MWYzN2ViNTU5YWIzN2ZlOGMwYTE0MGFk
N2Q5YzgxMGMuLjhjNGM4Y2M4NzY0ODJkYzRmNTljYjBhNmMyNzlhNTYxMDJlYWY1NDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaApAQCAtNTcsNyArNTcs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb3B5Tm9uQXR0cmlidXRlUHJvcGVydGllc0Zyb21FbGVt
ZW50KGNvbnN0IEVsZW1lbnQmKSBmaW5hbDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBk
YXRlQXR0cmlidXRlcyhzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiYmIG5ld0ZpbGVTaXplLCBjb25z
dCBTdHJpbmcmIG5ld0NvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIG5ld0ZpbGVuYW1lKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEoY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSk7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGRhdGEpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlVGh1bWJuYWlsKGNvbnN0
IFJlZlB0cjxJbWFnZT4mIHRodW1ibmFpbCk7CiAKICAgICBJbnNlcnRlZEludG9BbmNlc3RvclJl
c3VsdCBpbnNlcnRlZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJikg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA3MjVj
NTIwYTJlYjE2YTczMmFkYmRmZDBkYThlMTA5ZTdjZTQ1NWNlLi4yNmU0MTZmYzE5MmNjMWZlNThk
ZGUxOWUzZWUzYWNiZGY5M2E0ZjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKQEAgLTI5NDUsNyArMjk0NSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2Rt
Q2xpZW50QXR0ZW1wdFRvUmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpCiAgICAgYXR0ZW1wdFRv
UmVzdW1lUGxheWJhY2tJZk5lY2Vzc2FyeSgpOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OmNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRh
KQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0
aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8Y29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSkKIHsKICAgICBtZWRpYVBsYXllckluaXRp
YWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGluaXREYXRhVHlwZSwgaW5pdERhdGEtPnRyeUNyZWF0
ZUFycmF5QnVmZmVyKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApp
bmRleCA4OWU2YTYyNjhiZjZkNjFjNWUzNzNmMjlhODQ5NmIxZDY3NzNiYWQ0Li5mMzVhNDc2YmI4
MDQ3MGJlMDRhNzg5M2U3ODAyNjg5NTY5Y2Y4ZGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaApAQCAtNzE5LDcgKzcxOSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBDRE1D
bGllbnQKICAgICB2b2lkIGNkbUNsaWVudEF0dGVtcHRUb1Jlc3VtZVBsYXliYWNrSWZOZWNlc3Nh
cnkoKSBmaW5hbDsKLSAgICB2b2lkIGNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25E
YXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYp
IGZpbmFsOworICAgIHZvaWQgY2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFS
ZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JikgZmluYWw7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSAm
JiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9JbWFnZURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5j
cHAKaW5kZXggNGQxMGZiMDU3NzI0NjI4NTc2ODg1MDNkNjY0NzY5N2YwY2IwNGJhMS4uZjQzOGZh
NGIxMTdiOWI2ZTFiZDkxNzc2MGRiODkyOTMyMGJhM2IzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lt
YWdlRG9jdW1lbnQuY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBJbWFnZURvY3VtZW50Ojp1
cGRhdGVEdXJpbmdQYXJzaW5nKCkKICAgICBpZiAoIW1faW1hZ2VFbGVtZW50KQogICAgICAgICBj
cmVhdGVEb2N1bWVudFN0cnVjdHVyZSgpOwogCi0gICAgaWYgKFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBsb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpKQorICAgIGlm
IChhdXRvIGJ1ZmZlciA9IGxvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCkpCiAgICAgICAgIG1f
aW1hZ2VFbGVtZW50LT5jYWNoZWRJbWFnZSgpLT51cGRhdGVCdWZmZXIoKmJ1ZmZlcik7CiAKICAg
ICBpbWFnZVVwZGF0ZWQoKTsKQEAgLTE1MSwxMiArMTUxLDcgQEAgdm9pZCBJbWFnZURvY3VtZW50
OjpmaW5pc2hlZFBhcnNpbmcoKQogewogICAgIGlmICghcGFyc2VyKCktPmlzU3RvcHBlZCgpICYm
IG1faW1hZ2VFbGVtZW50KSB7CiAgICAgICAgIENhY2hlZEltYWdlJiBjYWNoZWRJbWFnZSA9ICpt
X2ltYWdlRWxlbWVudC0+Y2FjaGVkSW1hZ2UoKTsKLSAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IGRhdGEgPSBsb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOwotCi0gICAg
ICAgIC8vIElmIHRoaXMgaXMgYSBtdWx0aXBhcnQgaW1hZ2UsIG1ha2UgYSBjb3B5IG9mIHRoZSBj
dXJyZW50IHBhcnQsIHNpbmNlIHRoZSByZXNvdXJjZSBkYXRhCi0gICAgICAgIC8vIHdpbGwgYmUg
b3ZlcndyaXR0ZW4gYnkgdGhlIG5leHQgcGFydC4KLSAgICAgICAgaWYgKGRhdGEgJiYgbG9hZGVy
KCktPmlzTG9hZGluZ011bHRpcGFydENvbnRlbnQoKSkKLSAgICAgICAgICAgIGRhdGEgPSBkYXRh
LT5jb3B5KCk7CisgICAgICAgIGF1dG8gZGF0YSA9IGxvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRh
KCk7CiAKICAgICAgICAgY2FjaGVkSW1hZ2UuZmluaXNoTG9hZGluZyhkYXRhLmdldCgpLCB7IH0p
OwogICAgICAgICBjYWNoZWRJbWFnZS5maW5pc2goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCmluZGV4IDMyOGViZTdlNjQxMTk1ZTVh
NDY4NTAyNzU1OTEwZjc4YzQ4YjU4ZDguLjQwYmZlZDdhN2M5ZmQxMzEyNjM5Zjk1MDM0OWJmYTc1
NWZmZGIzM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVz
b3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNv
dXJjZXNEYXRhLmNwcApAQCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlc0Rh
dGE6OmFkZENhY2hlZFJlc291cmNlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBDYWNoZWRSZXNv
CiAgICAgcmVzb3VyY2VEYXRhLT5zZXRDYWNoZWRSZXNvdXJjZShjYWNoZWRSZXNvdXJjZSk7CiB9
CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OmFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNv
bnN0IFN0cmluZyYgcmVxdWVzdElkLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSkKK3ZvaWQgTmV0d29ya1Jlc291
cmNlc0RhdGE6OmFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0cmluZyYgcmVxdWVzdElk
LCBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0
cmluZyYgdGV4dEVuY29kaW5nTmFtZSkKIHsKICAgICBSZXNvdXJjZURhdGEqIHJlc291cmNlRGF0
YSA9IHJlc291cmNlRGF0YUZvclJlcXVlc3RJZChyZXF1ZXN0SWQpOwogICAgIGlmICghcmVzb3Vy
Y2VEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNv
dXJjZXNEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0Rh
dGEuaAppbmRleCBjOGNlZDEyYTY0MDdmZGNkNTc0ZWNjMmE3ODE5ZWRlNjYzODAzZGFjLi44NjI3
NGEzNTZjZmY1N2EwYmQ1MGRkNDUyNDZmMzZjYTAwMzY5NzA4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaApAQCAtODgsOCArODgsOCBAQCBw
dWJsaWM6CiAgICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBkZWNvZGVyKCkgY29u
c3QgeyByZXR1cm4gbV9kZWNvZGVyLmNvcHlSZWYoKTsgfQogICAgICAgICB2b2lkIHNldERlY29k
ZXIoUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+JiYgZGVjb2RlcikgeyBtX2RlY29kZXIgPSBX
VEZNb3ZlKGRlY29kZXIpOyB9CiAKLSAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+IGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmNvcHlSZWYoKTsgfQotICAgICAg
ICB2b2lkIHNldEJ1ZmZlcihSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
IHsgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7IH0KKyAgICAgICAgUmVmUHRyPGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmNv
cHlSZWYoKTsgfQorICAgICAgICB2b2lkIHNldEJ1ZmZlcihSZWZQdHI8Y29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7IH0K
IAogICAgICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4mIGNlcnRpZmlj
YXRlSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2VydGlmaWNhdGVJbmZvOyB9CiAgICAgICAgIHZv
aWQgc2V0Q2VydGlmaWNhdGVJbmZvKGNvbnN0IHN0ZDo6b3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZv
PiYgY2VydGlmaWNhdGVJbmZvKSB7IG1fY2VydGlmaWNhdGVJbmZvID0gY2VydGlmaWNhdGVJbmZv
OyB9CkBAIC0xMjAsNyArMTIwLDcgQEAgcHVibGljOgogICAgICAgICBTdHJpbmcgbV9taW1lVHlw
ZTsKICAgICAgICAgUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+IG1fZGVjb2RlcjsKICAgICAg
ICAgU2hhcmVkQnVmZmVyQnVpbGRlciBtX2RhdGFCdWZmZXI7Ci0gICAgICAgIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsKKyAgICAgICAgUmVmUHRyPGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPENlcnRp
ZmljYXRlSW5mbz4gbV9jZXJ0aWZpY2F0ZUluZm87CiAgICAgICAgIENhY2hlZFJlc291cmNlKiBt
X2NhY2hlZFJlc291cmNlIHsgbnVsbHB0ciB9OwogICAgICAgICBJbnNwZWN0b3JQYWdlQWdlbnQ6
OlJlc291cmNlVHlwZSBtX3R5cGUgeyBJbnNwZWN0b3JQYWdlQWdlbnQ6Ok90aGVyUmVzb3VyY2Ug
fTsKQEAgLTE0NCw3ICsxNDQsNyBAQCBwdWJsaWM6CiAgICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBt
YXliZUFkZFJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU2hhcmVk
QnVmZmVyJik7CiAgICAgdm9pZCBtYXliZURlY29kZURhdGFUb0NvbnRlbnQoY29uc3QgU3RyaW5n
JiByZXF1ZXN0SWQpOwogICAgIHZvaWQgYWRkQ2FjaGVkUmVzb3VyY2UoY29uc3QgU3RyaW5nJiBy
ZXF1ZXN0SWQsIENhY2hlZFJlc291cmNlKik7Ci0gICAgdm9pZCBhZGRSZXNvdXJjZVNoYXJlZEJ1
ZmZlcihjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSk7CisgICAgdm9pZCBhZGRSZXNv
dXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgUmVmUHRyPGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSk7
CiAgICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBkYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsK
ICAgICBSZXNvdXJjZURhdGEgY29uc3QqIGRhdGFGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmwpOwog
ICAgIFZlY3RvcjxTdHJpbmc+IHJlbW92ZUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBh
Z2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBh
Z2VBZ2VudC5jcHAKaW5kZXggYTRmZmQxMzYxY2RkZTVhYjdkOTczY2QwMGQxOWE5MTBhZTllZDI5
Zi4uNTAyZmI4MjNiYmI5OGQxMWY4MGM2MDhiZWY4NGY3ZDdmNzNhZDUyZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cApAQCAtMTAwLDEzICsxMDAsMTMgQEAgc3RhdGljIGJvb2wgZGVjb2RlQnVmZmVyKGNvbnN0IHVp
bnQ4X3QqIGJ1ZmZlciwgdW5zaWduZWQgc2l6ZSwgY29uc3QgU3RyaW5nJiB0ZXgKIAogYm9vbCBJ
bnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRlbnQoRnJhbWUqIGZyYW1lLCBib29s
IHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQogewotICAgIFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIo
KS0+bWFpblJlc291cmNlRGF0YSgpOworICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiAgYnVmZmVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPm1haW5S
ZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIHJldHVybiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGJ1ZmZlci0+bWFrZUNv
bnRpZ3VvdXMoKS0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSwgZnJhbWUtPmRvY3VtZW50KCktPmVu
Y29kaW5nKCksIHdpdGhCYXNlNjRFbmNvZGUsIHJlc3VsdCk7CiB9CiAKLWJvb2wgSW5zcGVjdG9y
UGFnZUFnZW50OjpzaGFyZWRCdWZmZXJDb250ZW50KFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhC
YXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KQorYm9vbCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNo
YXJlZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVu
Y29kZSwgU3RyaW5nKiByZXN1bHQpCiB7CiAgICAgcmV0dXJuIGRhdGFDb250ZW50KGJ1ZmZlciA/
IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgYnVmZmVyID8gYnVm
ZmVyLT5zaXplKCkgOiAwLCB0ZXh0RW5jb2RpbmdOYW1lLCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1
bHQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JQYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUGFnZUFnZW50LmgKaW5kZXggM2Q1ZTU2NmRiZTBjNWVjMTFkOWU4ZGY2N2ZjZjBhNzA5ODhh
MmY4Zi4uNWFjOTYxOTJmNDY0NWM5NTNmZTY5OWY0OGQ3NDVlN2I2YTZkOGIwZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5o
CkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICAgICAgT3RoZXJSZXNvdXJjZSwKICAgICB9
OwogCi0gICAgc3RhdGljIGJvb2wgc2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdp
dGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0KTsKKyAgICBzdGF0aWMgYm9vbCBzaGFyZWRC
dWZmZXJDb250ZW50KFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25z
dCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29kZSwgU3RyaW5n
KiByZXN1bHQpOwogICAgIHN0YXRpYyBWZWN0b3I8Q2FjaGVkUmVzb3VyY2UqPiBjYWNoZWRSZXNv
dXJjZXNGb3JGcmFtZShGcmFtZSopOwogICAgIHN0YXRpYyB2b2lkIHJlc291cmNlQ29udGVudChJ
bnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZyYsIEZyYW1lKiwgY29uc3QgVVJMJiwgU3Ry
aW5nKiByZXN1bHQsIGJvb2wqIGJhc2U2NEVuY29kZWQpOwogICAgIHN0YXRpYyBTdHJpbmcgc291
cmNlTWFwVVJMRm9yUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IDM1OWI2Mzg1MTg2ODQyM2MzN2ExMDA2MzUwMWE0
ZGYwNmQ5YWRiYWEuLmYxNWQ2NWFhYjg0OTk4OWY1MjM3ZWRkYmYyMGQ1YTZiMzkzOTI2Y2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMjA3LDcgKzIwNyw3
IEBAIERvY3VtZW50TG9hZGVyOjp+RG9jdW1lbnRMb2FkZXIoKQogI2VuZGlmCiB9CiAKLVJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBEb2N1bWVudExvYWRlcjo6bWFpblJlc291cmNlRGF0
YSgpIGNvbnN0CitSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gRG9jdW1lbnRM
b2FkZXI6Om1haW5SZXNvdXJjZURhdGEoKSBjb25zdAogewogICAgIGlmIChtX3N1YnN0aXR1dGVE
YXRhLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIG1fc3Vic3RpdHV0ZURhdGEuY29udGVudCgp
LT5jb3B5KCk7CkBAIC0xNjcxLDcgKzE2NzEsNyBAQCBBcmNoaXZlUmVzb3VyY2UqIERvY3VtZW50
TG9hZGVyOjphcmNoaXZlUmVzb3VyY2VGb3JVUkwoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiAKIFJl
ZlB0cjxBcmNoaXZlUmVzb3VyY2U+IERvY3VtZW50TG9hZGVyOjptYWluUmVzb3VyY2UoKSBjb25z
dAogewotICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBkYXRhID0gbWFpblJlc291
cmNlRGF0YSgpOworICAgIGF1dG8gZGF0YSA9IG1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAo
IWRhdGEpCiAgICAgICAgIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwogICAgIGF1dG8m
IHJlc3BvbnNlID0gdGhpcy0+cmVzcG9uc2UoKTsKQEAgLTIyOTIsNyArMjI5Miw3IEBAIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OnN0YXJ0SWNvbkxvYWRpbmcoKQogICAgIG1fZnJhbWUtPmxvYWRlcigp
LmNsaWVudCgpLmdldExvYWREZWNpc2lvbkZvckljb25zKGljb25EZWNpc2lvbnMpOwogfQogCi12
b2lkIERvY3VtZW50TG9hZGVyOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNp
b24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgRG9jdW1lbnRM
b2FkZXI6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3Qg
bG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gaWNvbiA9IG1f
aWNvbnNQZW5kaW5nTG9hZERlY2lzaW9uLnRha2UobG9hZElkZW50aWZpZXIpOwogCkBAIC0yMzEz
LDcgKzIzMTMsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJ
Y29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudAogICAgIHJhd0ljb25Mb2FkZXIt
PnN0YXJ0TG9hZGluZygpOwogfQogCi12b2lkIERvY3VtZW50TG9hZGVyOjpmaW5pc2hlZExvYWRp
bmdJY29uKEljb25Mb2FkZXImIGxvYWRlciwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVy
KQordm9pZCBEb2N1bWVudExvYWRlcjo6ZmluaXNoZWRMb2FkaW5nSWNvbihJY29uTG9hZGVyJiBs
b2FkZXIsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKIHsKICAgICAvLyBJ
ZiB0aGUgRG9jdW1lbnRMb2FkZXIgaGFzIGRldGFjaGVkIGZyb20gaXRzIGZyYW1lLCBhbGwgaWNv
biBsb2FkcyBzaG91bGQgaGF2ZSBhbHJlYWR5IGJlZW4gY2FuY2VsbGVkLgogICAgIEFTU0VSVCht
X2ZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKaW5kZXggYzJiZWE2
ZjZhNjliODM2NDcyYzBhZmY3YTBkNzA3MDM5NmJhNmMyYi4uMGE3MzA1MmVkY2FlYjExZjhkNzBj
OGY1MmZjNzUyNDdmNDA2MGIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmgKQEAgLTE4MSw3ICsxODEsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBGcmFt
ZUxvYWRlciogZnJhbWVMb2FkZXIoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBTdWJyZXNv
dXJjZUxvYWRlciogbWFpblJlc291cmNlTG9hZGVyKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEoKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gbWFpblJlc291cmNlRGF0YSgpIGNvbnN0OwogICAgIAogICAgIERvY3VtZW50V3JpdGVyJiB3
cml0ZXIoKSBjb25zdCB7IHJldHVybiBtX3dyaXRlcjsgfQogCkBAIC00MDgsOCArNDA4LDggQEAg
cHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIHN0YXJ0SWNvbkxvYWRpbmcoKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwg
dWludDY0X3QgbG9hZElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciopPiYmKTsKLSAgICB2b2lkIGZpbmlzaGVkTG9hZGluZ0ljb24oSWNvbkxv
YWRlciYsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGRpZEdldExvYWREZWNpc2lvbkZvckljb24oYm9vbCBkZWNpc2lvbiwgdWludDY0X3QgbG9hZElk
ZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciopPiYmKTsKKyAgICB2b2lkIGZpbmlzaGVkTG9hZGluZ0ljb24oSWNvbkxvYWRlciYsIGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKTsKIAogICAgIGNvbnN0IFZlY3RvcjxMaW5rSWNv
bj4mIGxpbmtJY29ucygpIGNvbnN0IHsgcmV0dXJuIG1fbGlua0ljb25zOyB9CiAKQEAgLTYzOCw3
ICs2MzgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV93YWl0aW5nRm9yTmF2aWdhdGlvblBvbGlj
eSB7IGZhbHNlIH07CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBMaW5rSWNvbj4gbV9pY29uc1Bl
bmRpbmdMb2FkRGVjaXNpb247Ci0gICAgSGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8SWNvbkxvYWRl
cj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopPj4gbV9p
Y29uTG9hZGVyczsKKyAgICBIYXNoTWFwPHN0ZDo6dW5pcXVlX3B0cjxJY29uTG9hZGVyPiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik+PiBtX2lj
b25Mb2FkZXJzOwogICAgIFZlY3RvcjxMaW5rSWNvbj4gbV9saW5rSWNvbnM7CiAKICNpZiBFTkFC
TEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDUwY2JkMDI0ODBlZmIzNTA2N2IxM2M3
MzY2MDg5NTI3NzRjM2E2NTYuLjdiYzJiNzc3MTBlYzgwMTVmOTYwNDUxZGRlYzUwN2Y0ZTBiYTBl
NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVM
b2FkZXIuY3BwCkBAIC00OTQsMTUgKzQ5NCwxOCBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxv
YWRlcjo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZgog
CiAgICAgICAgIGF1dG8gcmVzcG9uc2UgPSBtX3Jlc291cmNlLT5yZXNwb25zZSgpOwogCisgICAg
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICAgICAgaWYgKG1fcmVzb3VyY2Ut
PnJlc291cmNlQnVmZmVyKCkpCisgICAgICAgICAgICBidWZmZXIgPSBtX3Jlc291cmNlLT5yZXNv
dXJjZUJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpOwogICAgICAgICBpZiAob3B0aW9ucygpLmZp
bHRlcmluZ1BvbGljeSA9PSBSZXNwb25zZUZpbHRlcmluZ1BvbGljeTo6RGlzYWJsZSkgewogICAg
ICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCByZXNwb25z
ZSk7Ci0gICAgICAgICAgICBpZiAoYXV0byogYnVmZmVyID0gbV9yZXNvdXJjZS0+cmVzb3VyY2VC
dWZmZXIoKSkKKyAgICAgICAgICAgIGlmIChidWZmZXIpCiAgICAgICAgICAgICAgICAgbV9jbGll
bnQtPmRpZFJlY2VpdmVEYXRhKCpidWZmZXIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgQVNTRVJUKHJlc3BvbnNlLnR5cGUoKSA9PSBSZXNvdXJjZVJlc3BvbnNlOjpUeXBlOjpEZWZh
dWx0KTsKIAogICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlm
aWVyLCBSZXNvdXJjZVJlc3BvbnNlOjpmaWx0ZXIocmVzcG9uc2UsIG1fb3B0aW9ucy5jcmVkZW50
aWFscyA9PSBGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpJbmNsdWRlID8gUmVzb3VyY2VSZXNw
b25zZTo6UGVyZm9ybUV4cG9zZUFsbEhlYWRlcnNDaGVjazo6Tm8gOiBSZXNvdXJjZVJlc3BvbnNl
OjpQZXJmb3JtRXhwb3NlQWxsSGVhZGVyc0NoZWNrOjpZZXMpKTsKLSAgICAgICAgICAgIGlmIChh
dXRvKiBidWZmZXIgPSBtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpKQorICAgICAgICAgICAg
aWYgKGJ1ZmZlcikKICAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoKmJ1
ZmZlcik7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmNwcAppbmRleCAxYWRjM2MzY2RiOWJhZmY5YzQzMzYyMTM2ZGU4N2M2MDU3MmZmZmJkLi5h
MWJmMGEwMTc4MTRhYjU4OGRkMzdkMjkzNDhmZDRjNDNjMDgwZmFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lkIFJlc291
cmNlTG9hZGVyOjppbml0KFJlc291cmNlUmVxdWVzdCYmIGNsaWVudFJlcXVlc3QsIENvbXBsZXRp
b25IYW5kbGVyPHZvaQogICAgIH0pOwogfQogCi12b2lkIFJlc291cmNlTG9hZGVyOjpkZWxpdmVy
UmVzcG9uc2VBbmREYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCit2b2lkIFJlc291cmNlTG9hZGVyOjpk
ZWxpdmVyUmVzcG9uc2VBbmREYXRhKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBS
ZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiB7CiAgICAgZGlk
UmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH0sIGJ1ZmZlciA9IFdURk1vdmUoYnVmZmVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYg
KHJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5oCmluZGV4IGU1NTFkMGRjMjE5ODFiNjg5YzQ0YWM2ZDY0ZWExNjgyODRlZDk2MjcuLmM1OTMy
ZDllNTY5ODZmZDJkMTFiNGVhN2JiMDNjZWU5YTNhZmE0YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlci5oCkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgdm9pZCBpbml0KFJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKIAotICAgIHZvaWQgZGVsaXZlclJlc3BvbnNlQW5kRGF0YShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOworICAgIHZvaWQg
ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRMb2FkaW5nKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YnN0aXR1dGVEYXRhLmgKaW5kZXggYThhNDliNDdmOTI3MzQyNzRiYTRjZWFiYzE3MDdmZWZhN2I2
NjQwZC4uZjllNjA5ZmFmNWI0NDMzNmI4NzA5YzY2M2I2MWI3MGI1NzMwNDI0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1N1YnN0aXR1dGVEYXRhLmgKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBTdWJzdGl0dXRlRGF0
YShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBjb250ZW50LCBjb25zdCBVUkwmIGZh
aWxpbmdVUkwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBTZXNzaW9uSGlzdG9y
eVZpc2liaWxpdHkgc2hvdWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSkKKyAgICAgICAgU3Vic3Rp
dHV0ZURhdGEoUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgY29udGVudCwg
Y29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
U2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5IHNob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkpCiAg
ICAgICAgICAgICA6IG1fY29udGVudChXVEZNb3ZlKGNvbnRlbnQpKQogICAgICAgICAgICAgLCBt
X2ZhaWxpbmdVUkwoZmFpbGluZ1VSTCkKICAgICAgICAgICAgICwgbV9yZXNwb25zZShyZXNwb25z
ZSkKQEAgLTYxLDcgKzYxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0K
ICAgICAgICAgCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IG1fY29udGVudDsKKyAgICAgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IG1fY29udGVudDsKICAgICAgICAgVVJMIG1fZmFpbGluZ1VSTDsKICAgICAgICAgUmVz
b3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogICAgICAgICBTZXNzaW9uSGlzdG9yeVZpc2liaWxp
dHkgbV9zaG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5IHsgU2Vzc2lvbkhpc3RvcnlWaXNpYmls
aXR5OjpIaWRkZW4gfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0
dXRlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlUmVzb3VyY2Uu
aAppbmRleCAzZDE5Mjg2MmYyNzcyOWIyZjM4ZGI1NGJkODM2Nzk5NTI1YzAxOWQzLi45NjQ3MjIw
MmI4M2Y2YTFkZjlhNjk4ODUyNDgyYzQ0NDc0YTUxNmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCkBAIC0zNywxNCArMzcsMTQgQEAgcHVibGljOgogCiAg
ICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQot
ICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
cmVmZXJlbmNlX2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4oUmVmIHsgKm1fZGF0YS5nZXQo
KSB9KTsgfQorICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4oUmVmIHsgKm1fZGF0YS5nZXQoKSB9KTsgfQogICAgIHZvaWQgYXBwZW5kKGNvbnN0IFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSB7IG1fZGF0YS5hcHBlbmQoYnVmZmVyKTsgfQogICAgIHZvaWQgY2xl
YXIoKSB7IG1fZGF0YS5lbXB0eSgpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVsaXZlcihSZXNv
dXJjZUxvYWRlciYgbG9hZGVyKSB7IGxvYWRlci5kZWxpdmVyUmVzcG9uc2VBbmREYXRhKG1fcmVz
cG9uc2UsIG1fZGF0YS5jb3B5KCkpOyB9CiAKIHByb3RlY3RlZDoKLSAgICBTdWJzdGl0dXRlUmVz
b3VyY2UoVVJMJiYgdXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpCisgICAgU3Vic3RpdHV0ZVJlc291cmNlKFVSTCYmIHVy
bCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhKQogICAgICAgICA6IG1fdXJsKFdURk1vdmUodXJsKSkKICAgICAgICAg
LCBtX3Jlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpKQogICAgICAgICAsIG1fZGF0YShXVEZNb3Zl
KGRhdGEpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcAppbmRleCAyNTZlODliMjExYjM4YjJkMjFkY2Q2
NjU3ODI2OWU2NjA3MzY3MzI3Li5mZDAxMjUyYTVhYjQxMjZmZDUxM2JlYmQxMDVmNzZiNzAwZjc1
ZDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZVJlc291cmNlLmNwcApAQCAtMjksNyArMjksNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVJlZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IEFwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgdW5zaWduZWQgdHlwZSwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHBhdGgpCitSZWY8QXBwbGljYXRpb25DYWNoZVJl
c291cmNlPiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHVuc2lnbmVkIHR5cGUsIFJlZlB0cjxj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBwYXRo
KQogewogICAgIEFTU0VSVCghdXJsLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKTsKICAgICBpZiAo
IWJ1ZmZlcikKQEAgLTQwLDcgKzQwLDcgQEAgUmVmPEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4g
QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIGMKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoVVJMIHsgdXJsIH0s
IFdURk1vdmUocmVzb3VyY2VSZXNwb25zZSksIHR5cGUsIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgp
LCBwYXRoKSk7CiB9CiAKLUFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6QXBwbGljYXRpb25DYWNo
ZVJlc291cmNlKFVSTCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCB1bnNpZ25l
ZCB0eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBTdHJpbmcm
IHBhdGgpCitBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgdW5zaWduZWQgdHlwZSwg
UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBw
YXRoKQogICAgIDogU3Vic3RpdHV0ZVJlc291cmNlKFdURk1vdmUodXJsKSwgV1RGTW92ZShyZXNw
b25zZSksIFdURk1vdmUoZGF0YSkpCiAgICAgLCBtX3R5cGUodHlwZSkKICAgICAsIG1fc3RvcmFn
ZUlEKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZVJlc291cmNlLmgKaW5kZXggYzI4OGU3MDM2YzY3NjJhZDQ4NzZiYTg4MTQ2
OWE3NWQyMjM3ZTFiYS4uODFjMGZhODkxOTU1Zjg4MWI0MjU1YzIzMmIyZGFiMjE0YTJkZDcyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgICAgIEZh
bGxiYWNrID0gMSA8PCA0CiAgICAgfTsKIAotICAgIHN0YXRpYyBSZWY8QXBwbGljYXRpb25DYWNo
ZVJlc291cmNlPiBjcmVhdGUoY29uc3QgVVJMJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIHVu
c2lnbmVkIHR5cGUsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoKSwgY29uc3QgU3RyaW5nJiBwYXRoID0gU3RyaW5nKCkpOworICAgIHN0YXRp
YyBSZWY8QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiBjcmVhdGUoY29uc3QgVVJMJiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIHVuc2lnbmVkIHR5cGUsIFJlZlB0cjxjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgY29uc3QgU3RyaW5nJiBw
YXRoID0gU3RyaW5nKCkpOwogCiAgICAgdW5zaWduZWQgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dHlwZTsgfQogICAgIHZvaWQgYWRkVHlwZSh1bnNpZ25lZCB0eXBlKTsKQEAgLTU4LDcgKzU4LDcg
QEAgcHVibGljOgogI2VuZGlmCiAgICAgCiBwcml2YXRlOgotICAgIEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZShVUkwmJiwgUmVzb3VyY2VSZXNwb25zZSYmLCB1bnNpZ25lZCB0eXBlLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBwYXRoKTsKKyAgICBBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UoVVJMJiYsIFJlc291cmNlUmVzcG9uc2UmJiwgdW5zaWduZWQgdHlw
ZSwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgcGF0
aCk7CiAKICAgICB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2FkZXImKSBvdmVycmlkZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZS5jcHAKaW5kZXggNmI5ZTdlMjk1ZmQ2ZmIyMGZmMGQ3NGZkY2YyM2ZjNjYwMGE2
MDAzZi4uMTc3YzQzNDdlM2E5MTE4MjIzZTI1MTkyOTRmMzdlMDczM2NlNWI2ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuY3BwCkBAIC0xMjcyLDcgKzEyNzIsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlOjpzaG91bGRTdG9yZVJlc291cmNlQXNGbGF0RmlsZShBcHBsaWNhdGlvbkNhY2hlUmVz
bwogICAgIHJldHVybiBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHR5cGUsICJh
dWRpby8iKSB8fCBzdGFydHNXaXRoTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHR5cGUsICJ2aWRl
by8iKTsKIH0KICAgICAKLWJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OndyaXRlRGF0YVRv
VW5pcXVlRmlsZUluRGlyZWN0b3J5KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0
IFN0cmluZyYgZGlyZWN0b3J5LCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsZUV4dGVu
c2lvbikKK2Jvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OndyaXRlRGF0YVRvVW5pcXVlRmls
ZUluRGlyZWN0b3J5KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0
cmluZyYgZGlyZWN0b3J5LCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsZUV4dGVuc2lv
bikKIHsKICAgICBTdHJpbmcgZnVsbFBhdGg7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCmluZGV4IDQx
MDJhMTgwOGI0NTU1N2I2NDVlMzZlN2U2ODFmYzRjNmQyMDdjZTIuLmUxMmEwNDJlNGEzNGQzMTJj
YzUyN2ViZDRhZTA3ZjFkZmE2ZTgzN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCkBAIC0xMjIsNyArMTIy
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGVuc3VyZU9yaWdpblJlY29yZChjb25zdCBTZWN1cml0
eU9yaWdpbiopOwogICAgIHN0YXRpYyBib29sIHNob3VsZFN0b3JlUmVzb3VyY2VBc0ZsYXRGaWxl
KEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSopOwogICAgIHZvaWQgZGVsZXRlVGFibGVzKCk7Ci0g
ICAgYm9vbCB3cml0ZURhdGFUb1VuaXF1ZUZpbGVJbkRpcmVjdG9yeShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiwgY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIFN0cmluZyYgb3V0RmlsZW5hbWUsIGNv
bnN0IFN0cmluZyYgZmlsZUV4dGVuc2lvbik7CisgICAgYm9vbCB3cml0ZURhdGFUb1VuaXF1ZUZp
bGVJbkRpcmVjdG9yeShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5n
JiBkaXJlY3RvcnksIFN0cmluZyYgb3V0RmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZmlsZUV4dGVu
c2lvbik7CiAKICAgICB2b2lkIGxvYWRNYW5pZmVzdEhvc3RIYXNoZXMoKTsKICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmNwcAppbmRleCA0
ZWY5Y2Q2NmJkMDg4Yjc0YzA0NmMwNjkwZDFlOWQzZTVlMzM2MGZkLi5lZWIwMTY2ZDNlYTU4ZGJj
ZjA0MDMzYTBlOGM3NDJhZTNlZWYzZTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuY3BwCkBAIC00NiwxMiArNDYsMTIgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi10eXBlZGVmIFJlZlB0cjxBcmNoaXZlPiBSYXdEYXRhQ3JlYXRpb25G
dW5jdGlvbihjb25zdCBVUkwmLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7Cit0eXBlZGVmIFJl
ZlB0cjxBcmNoaXZlPiBSYXdEYXRhQ3JlYXRpb25GdW5jdGlvbihjb25zdCBVUkwmLCBjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSYXdEYXRh
Q3JlYXRpb25GdW5jdGlvbiosIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gQXJjaGl2ZU1JTUVU
eXBlc01hcDsKIAogLy8gVGhlIGNyZWF0ZSBmdW5jdGlvbnMgaW4gdGhlIGFyY2hpdmUgY2xhc3Nl
cyByZXR1cm4gUmVmUHRyIHRvIGNvbmNyZXRlIHN1YmNsYXNzZXMKIC8vIG9mIEFyY2hpdmUuIFRo
aXMgYWRhcHRvciBtYWtlcyB0aGUgZnVuY3Rpb25zIGhhdmUgYSB1bmlmb3JtIHJldHVybiB0eXBl
LgotdGVtcGxhdGU8dHlwZW5hbWUgQXJjaGl2ZUNsYXNzPiBzdGF0aWMgUmVmUHRyPEFyY2hpdmU+
IGFyY2hpdmVGYWN0b3J5Q3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBBcmNoaXZlQ2xhc3M+IHN0YXRpYyBSZWZQ
dHI8QXJjaGl2ZT4gYXJjaGl2ZUZhY3RvcnlDcmVhdGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICByZXR1cm4gQXJjaGl2ZUNsYXNz
OjpjcmVhdGUodXJsLCBidWZmZXIpOwogfQpAQCAtODMsNyArODMsNyBAQCBib29sIEFyY2hpdmVG
YWN0b3J5Ojppc0FyY2hpdmVNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHJl
dHVybiAhbWltZVR5cGUuaXNFbXB0eSgpICYmIGFyY2hpdmVNSU1FVHlwZXMoKS5jb250YWlucyht
aW1lVHlwZSk7CiB9CiAKLVJlZlB0cjxBcmNoaXZlPiBBcmNoaXZlRmFjdG9yeTo6Y3JlYXRlKGNv
bnN0IFVSTCYgdXJsLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlKQorUmVmUHRyPEFyY2hpdmU+IEFyY2hpdmVGYWN0b3J5OjpjcmVhdGUoY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpCiB7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5oCmluZGV4
IDU1NjQ1MTVjOWUwZDlkMDMzYjc5MGM3NDcyODVhMjU4NTNhYmUwMmQuLjJhZGU3ODJjMjU1ZDRj
NzRmYmVkNDVlZmI5NTBlYzBhNzU1Mzg1NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL0FyY2hpdmVGYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgQXJjaGl2ZUZhY3RvcnkgewogcHVibGljOgogICAgIHN0
YXRpYyBib29sIGlzQXJjaGl2ZU1JTUVUeXBlKGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyBS
ZWZQdHI8QXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
IGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOworICAgIHN0YXRpYyBSZWZQdHI8QXJjaGl2
ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyS25vd25B
cmNoaXZlTUlNRVR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+
Jik7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNo
aXZlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJl
c291cmNlLmNwcAppbmRleCAwNzM4Mzk0YTgyODcxNGFhMGI5MGVlNzUwNzlkNDg2ZjViMGU4Njk0
Li5iZDdmODU1MWM4ZmJhYTE5YzAxNjhmMmZjN2RmMTFmZGM5MGFmZjViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHAKQEAgLTMzLDcg
KzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbmxpbmUgQXJjaGl2ZVJlc291cmNl
OjpBcmNoaXZlUmVzb3VyY2UoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVu
Y29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCitpbmxpbmUgQXJjaGl2ZVJlc291cmNlOjpBcmNoaXZlUmVzb3VyY2UoUmVmPGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJp
bmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgOiBT
dWJzdGl0dXRlUmVzb3VyY2UoVVJMIHsgdXJsIH0sIFJlc291cmNlUmVzcG9uc2UgeyByZXNwb25z
ZSB9LCBXVEZNb3ZlKGRhdGEpKQogICAgICwgbV9taW1lVHlwZShtaW1lVHlwZSkKICAgICAsIG1f
dGV4dEVuY29kaW5nKHRleHRFbmNvZGluZykKQEAgLTQyLDcgKzQyLDcgQEAgaW5saW5lIEFyY2hp
dmVSZXNvdXJjZTo6QXJjaGl2ZVJlc291cmNlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IGRhdGEsIGNvbnMKIHsKIH0KIAotUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291
cmNlOjpjcmVhdGUoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29k
aW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCitSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShS
ZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNv
bnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkK
IHsKICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNTQsNyArNTQs
NyBAQCBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFy
Y2hpdmVSZXNvdXJjZShkYXRhLnJlbGVhc2VOb25OdWxsKCksIHVybCwgbWltZVR5cGUsIHRleHRF
bmNvZGluZywgZnJhbWVOYW1lLCByZXNwb25zZSkpOwogfQogCi1SZWZQdHI8QXJjaGl2ZVJlc291
cmNlPiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCitSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShSZWZQ
dHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZShX
VEZNb3ZlKGRhdGEpLCB1cmwsIHJlc3BvbnNlLm1pbWVUeXBlKCksIHJlc3BvbnNlLnRleHRFbmNv
ZGluZ05hbWUoKSwgU3RyaW5nKCksIHJlc3BvbnNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmgKaW5kZXggMDU0OGVmNzIxZWZkMjdjMDBj
ZTkzZDEyMjcwZWNlYzQ2YzAyYWY5NC4uOGU0OGM5ZTgyOWI0NGYxMzcxMGViNjdiYTY4NTg4NzRj
MThiNzQzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2
ZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJl
c291cmNlLmgKQEAgLTM0LDggKzM0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBB
cmNoaXZlUmVzb3VyY2UgOiBwdWJsaWMgU3Vic3RpdHV0ZVJlc291cmNlIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNyZWF0ZShS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVVJMJiwKKyAgICBzdGF0aWMg
UmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gY3JlYXRlKFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNyZWF0ZShSZWZQ
dHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVVJMJiwKICAgICAgICAg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0
IFN0cmluZyYgZnJhbWVOYW1lLAogICAgICAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiA9IFJl
c291cmNlUmVzcG9uc2UoKSk7CiAKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIGJvb2wg
c2hvdWxkSWdub3JlV2hlblVuYXJjaGl2aW5nKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRJZ25v
cmVXaGVuVW5hcmNoaXZpbmc7IH0KIAogcHJpdmF0ZToKLSAgICBBcmNoaXZlUmVzb3VyY2UoUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFt
ZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIEFyY2hpdmVSZXNvdXJjZShSZWY8Y29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVO
YW1lLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAKICAgICBTdHJpbmcgbV9taW1lVHlwZTsK
ICAgICBTdHJpbmcgbV90ZXh0RW5jb2Rpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCmluZGV4IDdmNGJhZDZmY2MzYTlj
OTdhNmE1MTdhYjliMjlkMDgwY2E5ZGE3MWIuLjFjZTBhZDFkOGU1NWM2YzU5MGZiZjI5MjFiNDA4
M2U1ZTYzMWVkNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2Nm
L0xlZ2FjeVdlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCkBAIC0yNDgsMTIgKzI0OCwxMiBAQCBSZWY8TGVnYWN5
V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKFJlZjxBcmNoaXZlUmVzb3VyY2U+
JiYgbWFpblJlc291cgogICAgIHJldHVybiBhcmNoaXZlOwogfQogCi1SZWZQdHI8TGVnYWN5V2Vi
QXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGRhdGEpCitSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgcmV0dXJuIGNyZWF0
ZShVUkwoKSwgZGF0YSk7CiB9CiAKLVJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGUoY29uc3QgVVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkK
K1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3Qg
VVJMJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKICAgICBMT0coQXJj
aGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gQ3JlYXRpbmcgZnJvbSByYXcgZGF0YSIpOwogCkBA
IC01NTQsNyArNTU0LDcgQEAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hp
dmU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG1hcmt1cFN0cmluZywgRnIKICAgICAgICAgICAgICAg
ICByZXF1ZXN0LnNldERvbWFpbkZvckNhY2hlUGFydGl0aW9uKGZyYW1lLmRvY3VtZW50KCktPmRv
bWFpbkZvckNhY2hlUGFydGl0aW9uKCkpOwogCiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNh
Y2hlZFJlc291cmNlID0gTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLnJlc291cmNlRm9yUmVxdWVz
dChyZXF1ZXN0LCBmcmFtZS5wYWdlKCktPnNlc3Npb25JRCgpKSkgewotICAgICAgICAgICAgICAg
ICAgICBpZiAoYXV0byByZXNvdXJjZSA9IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKGNhY2hlZFJl
c291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpLCBzdWJyZXNvdXJjZVVSTCwgY2FjaGVkUmVzb3VyY2Ut
PnJlc3BvbnNlKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvIHJlc291cmNlID0g
QXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoY2FjaGVkUmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkt
Pm1ha2VDb250aWd1b3VzKCksIHN1YnJlc291cmNlVVJMLCBjYWNoZWRSZXNvdXJjZS0+cmVzcG9u
c2UoKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnJlc291cmNlcy5hcHBlbmQocmVz
b3VyY2UucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5oCmluZGV4IDVhMDdiMTBiNGJlNmY4NjIwMTFh
NzgyYTdkZWQyMzY3NTkyNDM2MjYuLjNjNDIzMmUxNmUyNjBlNTVmZmVhYzZmZTczNTVlZjllNTli
NzU4OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2Fj
eVdlYkFyY2hpdmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdh
Y3lXZWJBcmNoaXZlLmgKQEAgLTQxLDggKzQxLDggQEAgc3RydWN0IFNpbXBsZVJhbmdlOwogY2xh
c3MgTGVnYWN5V2ViQXJjaGl2ZSBmaW5hbCA6IHB1YmxpYyBBcmNoaXZlIHsKIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZSgpOwot
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRl
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
UHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxMZWdhY3lXZWJBcmNo
aXZlPiBjcmVhdGUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYs
IGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShSZWY8QXJjaGl2ZVJlc291cmNlPiYmIG1h
aW5SZXNvdXJjZSwgVmVjdG9yPFJlZjxBcmNoaXZlUmVzb3VyY2U+PiYmIHN1YnJlc291cmNlcywg
VmVjdG9yPFJlZjxMZWdhY3lXZWJBcmNoaXZlPj4mJiBzdWJmcmFtZUFyY2hpdmVzKTsKICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShOb2Rl
JiwgRnVuY3Rpb248Ym9vbChGcmFtZSYpPiYmIGZyYW1lRmlsdGVyID0geyB9KTsKICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShGcmFtZSYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0
aW9uTWFuaWZlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxp
Y2F0aW9uTWFuaWZlc3QuY3BwCmluZGV4IGRkZDBiMWI4OWIxZDg3MmJiNDI3MjdlZTc4ZDhmZDYz
OWU0Yjg5NDYuLmU5OWZhNWZjYjJiNzJiMDQzZjg2ODk5NTQ4MDg2ZWUwYTBiZTNkMjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlm
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRp
b25NYW5pZmVzdC5jcHAKQEAgLTQzLDkgKzQzLDEwIEBAIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZl
c3Q6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
CiB2b2lkIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRy
aWNzKQogewogICAgIGlmIChkYXRhKSB7Ci0gICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250
aWd1b3VzKCk7CisgICAgICAgIGF1dG8gY29udGlndW91c0RhdGEgPSBkYXRhLT5tYWtlQ29udGln
dW91cygpOwogICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOwotICAgICAgICBt
X3RleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRhLT5z
aXplKCkpOworICAgICAgICBtX3RleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGNvbnRp
Z3VvdXNEYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgIG1fZGF0YSA9IFdURk1v
dmUoY29udGlndW91c0RhdGEpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fZGF0YSA9IG51bGxw
dHI7CiAgICAgICAgIHNldEVuY29kZWRTaXplKDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCmluZGV4IDM4YTJlMTdmMGQwNmM4
YWM5OGRlMjRiMWU1MmI4ZTYwZTkyNDEyMGIuLjcwYjM4ZjYxZmMwZmYwZWI2MjMyYjQ3MDFmZmI2
ODliMGU2MTg2NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRDU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTEwMCwxMCArMTAwLDExIEBAIHZvaWQgQ2FjaGVkQ1NT
U3R5bGVTaGVldDo6c2V0Qm9keURhdGFGcm9tKGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSkKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3Mp
CiB7CiAgICAgaWYgKGRhdGEpIHsKLSAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3Vv
dXMoKTsKKyAgICAgICAgYXV0byBjb250aWd1b3VzRGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3Vz
KCk7CiAgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CiAgICAgICAgIC8vIERl
Y29kZSB0aGUgZGF0YSB0byBmaW5kIG91dCB0aGUgZW5jb2RpbmcgYW5kIGtlZXAgdGhlIHNoZWV0
IHRleHQgYXJvdW5kIGR1cmluZyBjaGVja05vdGlmeSgpCi0gICAgICAgIG1fZGVjb2RlZFNoZWV0
VGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGRhdGEtPnNp
emUoKSk7CisgICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5k
Rmx1c2goY29udGlndW91c0RhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgbV9k
YXRhID0gV1RGTW92ZShjb250aWd1b3VzRGF0YSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9k
YXRhID0gbnVsbHB0cjsKICAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKaW5kZXggZDJiYzI4MjE0NzljNTlhMjMyM2U0
ZjY1Y2Q5NGI2M2I0MjM3MzY0Ni4uMmQ0NTYyZGViZjcxYjY1ZTU2YTA2MDRlNzE3NDc1NTVhNGUw
NWM4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApAQCAt
ODcsNyArODcsMTAgQEAgdm9pZCBDYWNoZWRGb250OjpiZWdpbkxvYWRJZk5lZWRlZChDYWNoZWRS
ZXNvdXJjZUxvYWRlciYgbG9hZGVyKQogCiBib29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZv
bnREYXRhKGNvbnN0IEF0b21TdHJpbmcmKQogewotICAgIHJldHVybiBlbnN1cmVDdXN0b21Gb250
RGF0YShtX2RhdGEuZ2V0KCkpOworICAgIGlmICghbV9kYXRhKQorICAgICAgICByZXR1cm4gZW5z
dXJlQ3VzdG9tRm9udERhdGEobnVsbHB0cik7CisgICAgQVNTRVJUKGlzPFNoYXJlZEJ1ZmZlcj4o
bV9kYXRhKSk7CisgICAgcmV0dXJuIGVuc3VyZUN1c3RvbUZvbnREYXRhKG1fZGF0YS0+bWFrZUNv
bnRpZ3VvdXMoKS5wdHIoKSk7CiB9CiAKIFN0cmluZyBDYWNoZWRGb250OjpjYWxjdWxhdGVJdGVt
SW5Db2xsZWN0aW9uKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuY3BwCmluZGV4IGE4YzdlODdhMTY0YjkyYTBjMmI2NzUxZDU4MWNmOGFmNGNiYWU3NjEu
LjM2MGMyYjRlYjJjZGRkMTFjYjRjZTBkYThjZDQwMjMyYjBkYWU2NzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtNDcwLDcgKzQ3MCw3IEBAIGlu
bGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVhckltYWdlKCkKIAogdm9pZCBDYWNoZWRJbWFnZTo6
dXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIG1f
ZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBtX2RhdGEgPSAmZGF0YTsKICAgICBz
ZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUoKSk7CiAgICAgY3JlYXRlSW1hZ2UoKTsKIApAQCAt
NTQyLDcgKzU0Miw3IEBAIEVuY29kZWREYXRhU3RhdHVzIENhY2hlZEltYWdlOjp1cGRhdGVJbWFn
ZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKCFtX2ltYWdlIHx8ICFtX2Rh
dGEpCiAgICAgICAgIHJldHVybiBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3I7Ci0gICAgRW5jb2Rl
ZERhdGFTdGF0dXMgcmVzdWx0ID0gbV9pbWFnZS0+c2V0RGF0YShtX2RhdGEuZ2V0KCksIGFsbERh
dGFSZWNlaXZlZCk7CisgICAgRW5jb2RlZERhdGFTdGF0dXMgcmVzdWx0ID0gbV9pbWFnZS0+c2V0
RGF0YShtX2RhdGEuY29weVJlZigpLCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIGRpZFVwZGF0ZUlt
YWdlRGF0YSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAppbmRleCA1NWM0NWJlYmZmNGY0YTRj
ZjRkZDk3OTc0N2RhZjhmZTRhMjI0MTVjLi44N2M2NTZkYzhlNzU1NjljYjU0ODc2OGU2YTIyNDI1
NzAxNWNmNjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmF3UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
YXdSZXNvdXJjZS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgQ2FjaGVkUmF3UmVzb3VyY2U6OkNhY2hl
ZFJhd1Jlc291cmNlKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFR5cGUgdHlwZSwK
ICAgICBBU1NFUlQoaXNNYWluT3JNZWRpYU9ySWNvbk9yUmF3UmVzb3VyY2UoKSk7CiB9CiAKLXN0
ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpjYWxj
dWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpIGNvbnN0
CitzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBDYWNoZWRSYXdSZXNvdXJjZTo6
Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgZGF0YSkgY29uc3QKIHsKICAgICBzaXplX3QgcHJldmlvdXNEYXRhTGVuZ3RoID0gZW5jb2Rl
ZFNpemUoKTsKICAgICBpZiAoZGF0YS5zaXplKCkgPD0gcHJldmlvdXNEYXRhTGVuZ3RoKQpAQCAt
NjUsMTAgKzY1LDkgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiAgICAgLy8gV2UgbmVlZCB0byBrZWVwIGEg
c3Ryb25nIHJlZmVyZW5jZSB0byBib3RoIHRoZSBTaGFyZWRCdWZmZXIgYW5kIHRoZSBjdXJyZW50
IENhY2hlZFJhd1Jlc291cmNlIGluc3RhbmNlCiAgICAgLy8gYXMgbm90aWZ5Q2xpZW50c0RhdGFX
YXNSZWNlaXZlZCBjYWxsIG1heSBkZWxldGUgYm90aC4KICAgICBDYWNoZWRSZXNvdXJjZUhhbmRs
ZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBhdXRvIHByb3Rl
Y3RlZERhdGEgPSBSZWYgeyBkYXRhIH07CiAKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGlj
eSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9IGRh
dGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBtX2RhdGEgPSAmZGF0YTsKIAogICAgIC8vIE5vdGlm
eSBjbGllbnRzIG9ubHkgb2YgdGhlIG5ld2x5IGFwcGVuZGVkIGNvbnRlbnQgc2luY2UgdGhlIGxh
c3QgcnVuLgogICAgIGF1dG8gcHJldmlvdXNEYXRhU2l6ZSA9IGVuY29kZWRTaXplKCk7CkBAIC0x
MTIsMTUgKzExMSwxMyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0CiAgICAgQ2FjaGVkUmVzb3Vy
Y2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgRGF0
YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVyaW5nUG9saWN5ID0gdGhpcy0+ZGF0YUJ1ZmZlcmlu
Z1BvbGljeSgpOwogICAgIGlmIChkYXRhQnVmZmVyaW5nUG9saWN5ID09IERhdGFCdWZmZXJpbmdQ
b2xpY3k6OkJ1ZmZlckRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gZGF0YTsKICAgICAgICAgaWYg
KGRhdGEpIHsKLSAgICAgICAgICAgIGlmIChkYXRhICE9IG1fZGF0YS5nZXQoKSkKLSAgICAgICAg
ICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOwogICAgICAgICAgICAgaWYg
KGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoKm1f
ZGF0YSkpIHsKICAgICAgICAgICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOwog
ICAgICAgICAgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxE
YXRhLT5jcmVhdGVTaGFyZWRCdWZmZXIoKSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgfQogICAgIH0KIAogI2lm
IFVTRShRVUlDS19MT09LKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJhd1Jlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmF3UmVzb3VyY2UuaAppbmRleCAzNmU0N2ExZGJhMjMxMjhkYzUzMDczYjcwYjVmM2Y4NTM4MDRh
ZTZhLi45ZGRlMzFiOGRiOWFkMDI1ZmE0NTU2OTFhYmMxMWJmNmVjZTU5Yzk5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaApAQCAtNjcsNyAr
NjcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3dpdGNoQ2xpZW50c1RvUmV2YWxpZGF0ZWRSZXNv
dXJjZSgpIG92ZXJyaWRlOwogICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hbGxvd0VuY29kZWREYXRhUmVwbGFjZW1lbnQ7IH0KIAot
ICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IGNhbGN1bGF0ZUluY3JlbWVu
dGFsRGF0YUNodW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9u
YWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdDsKICAgICB2b2lkIG5vdGlmeUNsaWVu
dHNEYXRhV2FzUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgCiAjaWYgVVNFKFFV
SUNLX0xPT0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5o
CmluZGV4IDUzNGUwMTJjYzRmYTVkZDJiZTFmZDZlZWU1YWE2YWU0ZTVmYWUyMGQuLjgwM2ExNGY1
OTEzODMwNWI2NGQyM2JkNmZlMTk3ZWI3YmQ2MGEzYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0yMTMsNyArMjEzLDcgQEAgcHVibGljOgog
CiAgICAgdm9pZCBjbGVhckxvYWRlcigpOwogCi0gICAgU2hhcmVkQnVmZmVyKiByZXNvdXJjZUJ1
ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQorICAgIGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqIHJlc291cmNlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdl
dCgpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZVJlcXVl
c3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVz
b3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CkBAIC0zMzYsNyArMzM2LDcgQEAgcHJvdGVjdGVkOgog
ICAgIEhhc2hDb3VudGVkU2V0PENhY2hlZFJlc291cmNlQ2xpZW50Kj4gbV9jbGllbnRzOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxSZXNvdXJjZVJlcXVlc3Q+IG1fb3JpZ2luYWxSZXF1ZXN0OyAvLyBO
ZWVkZWQgYnkgUGluZyBsb2Fkcy4KICAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IG1fbG9h
ZGVyOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBSZWZQdHI8Y29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogCiBwcml2YXRlOgogICAgIE1vbm90b25p
Y1RpbWUgbV9sYXN0RGVjb2RlZEFjY2Vzc1RpbWU7IC8vIFVzZWQgYXMgYSAidGhyYXNoIGd1YXJk
IiBpbiB0aGUgY2FjaGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlw
dC5jcHAKaW5kZXggNjJhMTZlODZiMzIxOTNkOGU1NmQ2MTkyZjc3ZTliYzZmNDA4ZTliYi4uNWNi
ODg4NWQ5ODAxZmUwMzc5NmY1OTJlZGYwMDNiZDE0MDA4Zjg5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKQEAgLTU5LDEwICs1OSwxMyBAQCBTdHJp
bmdWaWV3IENhY2hlZFNjcmlwdDo6c2NyaXB0KCkKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAg
cmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKKyAgICBBU1NFUlQobV9kYXRhLT5pc0NvbnRpZ3VvdXMo
KSk7CisgICAgYXV0byBjb250aWd1b3VzRGF0YSA9IG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsK
KwogICAgIGlmIChtX2RlY29kaW5nU3RhdGUgPT0gTmV2ZXJEZWNvZGVkCiAgICAgICAgICYmIFBB
TDo6VGV4dEVuY29kaW5nKGVuY29kaW5nKCkpLmlzQnl0ZUJhc2VkRW5jb2RpbmcoKQogICAgICAg
ICAmJiBtX2RhdGEtPnNpemUoKQotICAgICAgICAmJiBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkobV9k
YXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSkgeworICAgICAgICAmJiBjaGFyYWN0ZXJzQXJl
QWxsQVNDSUkoY29udGlndW91c0RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpKSB7CiAKICAg
ICAgICAgbV9kZWNvZGluZ1N0YXRlID0gRGF0YUFuZERlY29kZWRTdHJpbmdIYXZlU2FtZUJ5dGVz
OwogCkBAIC03MCwxNCArNzMsMTQgQEAgU3RyaW5nVmlldyBDYWNoZWRTY3JpcHQ6OnNjcmlwdCgp
CiAgICAgICAgIHNldERlY29kZWRTaXplKDApOwogICAgICAgICBtX2RlY29kZWREYXRhRGVsZXRp
b25UaW1lci5zdG9wKCk7CiAKLSAgICAgICAgbV9zY3JpcHRIYXNoID0gU3RyaW5nSGFzaGVyOjpj
b21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkp
OworICAgICAgICBtX3NjcmlwdEhhc2ggPSBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFz
a1RvcDhCaXRzKGNvbnRpZ3VvdXNEYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKICAgICB9
CiAKICAgICBpZiAobV9kZWNvZGluZ1N0YXRlID09IERhdGFBbmREZWNvZGVkU3RyaW5nSGF2ZVNh
bWVCeXRlcykKLSAgICAgICAgcmV0dXJuIHsgbV9kYXRhLT5kYXRhKCksIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihtX2RhdGEtPnNpemUoKSkgfTsKKyAgICAgICAgcmV0dXJuIHsgY29udGlndW91c0Rh
dGEtPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fZGF0YS0+c2l6ZSgpKSB9OwogCiAg
ICAgaWYgKCFtX3NjcmlwdCkgewotICAgICAgICBtX3NjcmlwdCA9IG1fZGVjb2Rlci0+ZGVjb2Rl
QW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGVuY29kZWRTaXplKCkpOworICAgICAgICBtX3Njcmlw
dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goY29udGlndW91c0RhdGEtPmRhdGEoKSwgZW5j
b2RlZFNpemUoKSk7CiAgICAgICAgIEFTU0VSVCghbV9zY3JpcHRIYXNoIHx8IG1fc2NyaXB0SGFz
aCA9PSBtX3NjcmlwdC5pbXBsKCktPmhhc2goKSk7CiAgICAgICAgIGlmIChtX2RlY29kaW5nU3Rh
dGUgPT0gTmV2ZXJEZWNvZGVkKQogICAgICAgICAgICAgbV9zY3JpcHRIYXNoID0gbV9zY3JpcHQu
aW1wbCgpLT5oYXNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkWFNMU3R5bGVTaGVldC5jcHAKaW5kZXggZDJlZmYyZDJkNDBjOTI3NzM4NzU2YzRhOGYwY2Ji
OTM0M2JlMTBhYi4uMTdlZmQ2YzNmNmVkNmFhZWM3ZmI0YTU1YTg3NzkxMzM5ZWM0OTcwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0
LmNwcApAQCAtNjQsOSArNjQsMTAgQEAgU3RyaW5nIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmVuY29k
aW5nKCkgY29uc3QKIHZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
IG1ldHJpY3MpCiB7CiAgICAgaWYgKGRhdGEpIHsKLSAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgYXV0byBjb250aWd1b3VzRGF0YSA9IGRhdGEtPm1ha2VD
b250aWd1b3VzKCk7CiAgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7Ci0gICAg
ICAgIG1fc2hlZXQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBl
bmNvZGVkU2l6ZSgpKTsKKyAgICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1
c2goY29udGlndW91c0RhdGEtPmRhdGEoKSwgZW5jb2RlZFNpemUoKSk7CisgICAgICAgIG1fZGF0
YSA9IFdURk1vdmUoY29udGlndW91c0RhdGEpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fZGF0
YSA9IG51bGxwdHI7CiAgICAgICAgIHNldEVuY29kZWRTaXplKDApOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2VTZXJpYWxpemVyLmNwcAppbmRleCAwMjAwMWFiMzQzMDE4YTczMjU1OTk4ZmM0NzRjZWJm
YzQ5ZjhjODQyLi42MTliMTEwMjVkYmVlN2E1Y2YxN2M5ZjU0NjBhY2NkMzdhMzViYjgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcApAQCAtMjczLDcgKzI3Myw3IEBAIHZv
aWQgUGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJjZXMoQ2FjaGVkSW1hZ2UqIGltYWdl
LCBSZW5kZXJFbGVtZW50KiBpbWFnCiAgICAgaWYgKCFpbWFnZSB8fCBpbWFnZS0+aW1hZ2UoKSA9
PSAmSW1hZ2U6Om51bGxJbWFnZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IGltYWdlUmVuZGVyZXIgPyBpbWFnZS0+aW1hZ2VG
b3JSZW5kZXJlcihpbWFnZVJlbmRlcmVyKS0+ZGF0YSgpIDogMDsKKyAgICBSZWZQdHI8Y29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gIGRhdGEgPSBpbWFnZVJlbmRlcmVyID8gaW1hZ2UtPmlt
YWdlRm9yUmVuZGVyZXIoaW1hZ2VSZW5kZXJlciktPmRhdGEoKSA6IDA7CiAgICAgaWYgKCFkYXRh
KQogICAgICAgICBkYXRhID0gaW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTm93UGxheWluZ01hbmFnZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL05vd1BsYXlpbmdNYW5hZ2VyLmgKaW5kZXggZmM2NmMzNjVhMmYyOWE0Yzc4
ZTYwNjE5ZTQ3YTcxYzcyNThkOGZlMy4uMDdkNTgzMDYwNWJiYzJiOTlkYTM2ZGNjNjlkZjAyZDRm
OGUzMDhhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTm93UGxheWluZ01h
bmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ob3dQbGF5aW5nTWFuYWdlci5o
CkBAIC03MCw3ICs3MCw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxOb3dQbGF5aW5n
SW5mbz4gbV9ub3dQbGF5aW5nSW5mbzsKICAgICBzdHJ1Y3QgQXJ0d29ya0NhY2hlIHsKICAgICAg
ICAgU3RyaW5nIHNyYzsKLSAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGlt
YWdlRGF0YTsKKyAgICAgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGlt
YWdlRGF0YTsKICAgICB9OwogICAgIHN0ZDo6b3B0aW9uYWw8QXJ0d29ya0NhY2hlPiBtX25vd1Bs
YXlpbmdJbmZvQXJ0d29yazsKICAgICBib29sIG1fc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24g
eyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCBjYWVm
M2YyNjIwMDMzZGQ4Y2ZmMTU2MjNmMjNjNmI2YzliNTM0YjM3Li40Yzk4MmE2ZmQ4YTZmNWNiZTcy
MDkxNGYzYmUwNTkxM2NiMjU1OWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuaApAQCAtMzA4LDYgKzMwOCw3IEBAIHB1YmxpYzoKICAgICBTaGFyZWRCdWZmZXJCdWlsZGVy
KFNoYXJlZEJ1ZmZlckJ1aWxkZXImJikgPSBkZWZhdWx0OwogICAgIFdFQkNPUkVfRVhQT1JUIGV4
cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYpOwogICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKSB7IGluaXRpYWxpemUoV1RGTW92ZShidWZmZXIpKTsgfQorICAg
IGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKSB7IGFwcGVuZChXVEZNb3ZlKGJ1ZmZlcikpOyB9CiAgICAgZXhwbGlj
aXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAg
ICAgICAgOiBTaGFyZWRCdWZmZXJCdWlsZGVyKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PnsgV1RGTW92ZShidWZmZXIpIH0pIHsgfQogICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIHsgaW5pdGlhbGl6ZShXVEZNb3ZlKGJ1ZmZl
cikpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5
aW5nSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8u
aAppbmRleCAxZDY1YmM0MDNhZDg1MjQzYzY3MjVlNzA0NDhkNmNkYWRjY2NjZTFiLi5jZDZhMGFm
MWFhODcyZjJhMDhhN2YxZTQ3M2MxNTdkMDg4Yzk1YzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQbGF5aW5nSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogc3RydWN0IE5vd1BsYXlpbmdJbmZvQXJ0d29yayB7CiAgICAgU3RyaW5n
IHNyYzsKICAgICBTdHJpbmcgbWltZVR5cGU7Ci0gICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IGltYWdlRGF0YTsKKyAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gaW1hZ2VEYXRhOwogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE5vd1BsYXlpbmdJbmZv
QXJ0d29yayYgb3RoZXIpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmgKaW5kZXggMmRlNDE5MzRkYTE5ODc5
ZDc1YzBkZjhhODllNjRlNTk5YzI5YWUwMy4uOWUzOGVlY2EzOTU1YTBiNTExZjZiZWE1YTViMTYx
NTUyNTk4YzM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNSW5zdGFuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIENETUluc3RhbmNl
Q2xpZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPENETUluc3RhbmNlQ2xpZW50PiB7CiBwdWJs
aWM6CiAgICAgdmlydHVhbCB+Q0RNSW5zdGFuY2VDbGllbnQoKSA9IGRlZmF1bHQ7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBT
dHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYs
IFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7CiB9OwogCiAvLyBKYXZh
U2NyaXB0J3MgaGFuZGxlIHRvIGEgQ0RNSW5zdGFuY2UsIG11c3QgYmUgdXNlZCBmcm9tIHRoZQpA
QCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAgfTsKIAogICAgIHZpcnR1YWwgdm9pZCBpbml0
aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYs
IEFsbG93RGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nl
c3NDYWxsYmFjayYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRl
KFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8Y29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCBj
b25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxD
RE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lv
bi5oCmluZGV4IGQyNTkyMjViYTllMDJhNjRkMGNlY2Q2MTUxZmRmOTNmNGYyNDY2YTguLjhkMjU4
ZmM1NGI5NzY5MjYzNWIzMjc3ZDVmMzg3ODMyOThhNGQ4NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lv
bi5oCkBAIC01MCw5ICs1MCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DRE1JbnN0YW5jZVNl
c3Npb25DbGllbnQoKSA9IGRlZmF1bHQ7CiAKICAgICB1c2luZyBLZXlTdGF0dXMgPSBDRE1LZXlT
dGF0dXM7Ci0gICAgdXNpbmcgS2V5U3RhdHVzVmVjdG9yID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4sIEtleVN0YXR1cz4+OworICAgIHVzaW5nIEtleVN0YXR1
c1ZlY3RvciA9IFZlY3RvcjxzdGQ6OnBhaXI8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+LCBLZXlTdGF0dXM+PjsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlS2V5U3RhdHVzZXMoS2V5
U3RhdHVzVmVjdG9yJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2UoQ0RNTWVz
c2FnZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUsIFJlZjxjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2Vz
c2lvbklkQ2hhbmdlZChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdXNpbmcgUGxhdGZvcm1EaXNw
bGF5SUQgPSB1aW50MzJfdDsKICAgICB2aXJ0dWFsIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJ
RCgpID0gMDsKQEAgLTc4LDEzICs3OCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIFN1Y2NlZWRlZCwK
ICAgICB9OwogCi0gICAgdXNpbmcgTGljZW5zZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBTdWNjZXNzVmFsdWUgc3Vj
Y2VlZGVkKT47Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgPSAwOworICAgIHVzaW5nIExpY2Vuc2VD
YWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJ
bmRpdmlkdWFsaXphdGlvbiwgU3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCk+OworICAgIHZpcnR1YWwg
dm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERh
dGFUeXBlLCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGlj
ZW5zZUNhbGxiYWNrJiYpID0gMDsKIAogICAgIHVzaW5nIEtleVN0YXR1c1ZlY3RvciA9IENETUlu
c3RhbmNlU2Vzc2lvbkNsaWVudDo6S2V5U3RhdHVzVmVjdG9yOwotICAgIHVzaW5nIE1lc3NhZ2Ug
PSBzdGQ6OnBhaXI8TWVzc2FnZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj47Cisg
ICAgdXNpbmcgTWVzc2FnZSA9IHN0ZDo6cGFpcjxNZXNzYWdlVHlwZSwgUmVmPGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+PjsKICAgICB1c2luZyBMaWNlbnNlVXBkYXRlQ2FsbGJhY2sgPSBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgc2Vzc2lvbldhc0Nsb3NlZCwgc3RkOjpvcHRpb25h
bDxLZXlTdGF0dXNWZWN0b3I+JiYgY2hhbmdlZEtleXMsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYm
IGNoYW5nZWRFeHBpcmF0aW9uLCBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2U+JiYgbWVzc2FnZSwgU3Vj
Y2Vzc1ZhbHVlIHN1Y2NlZWRlZCk+OwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVMaWNlbnNlKGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VU
eXBlLCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5z
ZVVwZGF0ZUNhbGxiYWNrJiYpID0gMDsKIAogICAgIGVudW0gY2xhc3MgU2Vzc2lvbkxvYWRGYWls
dXJlIDogdWludDhfdCB7CiAgICAgICAgIE5vbmUsCkBAIC0xMDAsNyArMTAwLDcgQEAgcHVibGlj
OgogICAgIHVzaW5nIENsb3NlU2Vzc2lvbkNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPjsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklkLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSA9IDA7CiAKLSAgICB1c2luZyBSZW1vdmVTZXNz
aW9uRGF0YUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChLZXlTdGF0dXNWZWN0b3Im
Jiwgc3RkOjpvcHRpb25hbDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiYsIFN1Y2Nlc3NW
YWx1ZSk+OworICAgIHVzaW5nIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2sgPSBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEtleVN0YXR1c1ZlY3RvciYmLCBzdGQ6Om9wdGlvbmFsPFJlZjxjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJiwgU3VjY2Vzc1ZhbHVlKT47CiAgICAgdmlydHVhbCB2
b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlw
ZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQg
c3RvcmVSZWNvcmRPZktleVVzYWdlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKSA9IDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgK
aW5kZXggNTJhNjE0OGM4M2NkNTM5M2M4Zjg3NGVkODVhZDhiZjI3ZTViZTUwZi4uZjRjZDllNTI5
OTYxNjY1MTZmODQ2MjNiZWQxZjQwNmQ0OTExY2ZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGUuaApAQCAtNzQsNyArNzQsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3QgPSAwOwogCiBwcm90ZWN0
ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9j
bGVhcmtleS9DRE1DbGVhcktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKaW5kZXggMzFhOWZkZmEwMmQ2ZDAwY2Ey
NjE4MjUyZGVkOTM1MzEzZGM1OGFhOS4uOTk3ZDM5MzQ3ZGVjZGRhOTRhZTg4Y2I2ZDc5N2VhMDY2
YmM1ZjM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcApAQCAtNDA3LDcgKzQwNyw3
IEBAIGJvb2wgQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21T
dHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlQ2xlYXJLZXk6OnNhbml0aXplUmVz
cG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CitSZWZQ
dHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUNsZWFyS2V5OjpzYW5p
dGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25z
dAogewogICAgIC8vIFZhbGlkYXRlIHRoZSByZXNwb25zZSBidWZmZXIgYXMgYW4gSlNPTiBvYmpl
Y3QuCiAgICAgaWYgKCFDRE1VdGlsaXRpZXM6OnBhcnNlSlNPTk9iamVjdChyZXNwb25zZSkpCkBA
IC00MzMsNyArNDMzLDcgQEAgdm9pZCBDRE1JbnN0YW5jZUNsZWFyS2V5Ojppbml0aWFsaXplV2l0
aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXIKICAgICBjYWxsYmFjayhz
dWNjZWVkZWQpOwogfQogCi12b2lkIENETUluc3RhbmNlQ2xlYXJLZXk6OnNldFNlcnZlckNlcnRp
ZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJiBj
YWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6c2V0U2VydmVyQ2VydGlmaWNhdGUo
UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmIGNh
bGxiYWNrKQogewogICAgIC8vIFJlamVjdCBzZXR0aW5nIGFueSBzZXJ2ZXIgY2VydGlmaWNhdGUu
CiAgICAgY2FsbGJhY2soRmFpbGVkKTsKQEAgLTQ1NSw3ICs0NTUsNyBAQCBSZWZQdHI8Q0RNSW5z
dGFuY2VTZXNzaW9uPiBDRE1JbnN0YW5jZUNsZWFyS2V5OjpjcmVhdGVTZXNzaW9uKCkKICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5KCp0aGlzKSk7CiB9
CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlcXVlc3RMaWNlbnNlKExpY2Vu
c2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBz
dGF0aWMgdWludDMyX3Qgc19zZXNzaW9uSWRWYWx1ZSA9IDA7CiAgICAgKytzX3Nlc3Npb25JZFZh
bHVlOwpAQCAtNDc3LDcgKzQ3Nyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6
OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpCiAgICAgICAg
IH0pOwogfQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5Ojp1cGRhdGVMaWNlbnNl
KGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQor
dm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICNp
ZiBMT0dfRElTQUJMRUQKICAgICAvLyBXZSBvbmx5IHVzZSB0aGUgc2VzaW9uIElEIGZvciBkZWJ1
ZyBsb2dnaW5nLiBUaGUgdmVyYm9zZSBwcmVwcm9jZXNzb3IgY2hlY2tzIGFyZSBiZWNhdXNlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Y2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaAppbmRleCA5ZTI3ZmU5MTJjNGRhMDY3ZmIyNmNhZmJjN2Y2
YTY1MWRhNDc1MjhiLi40NjhjZTQ3ZGRiYTI2YmFiZWMyZDA0YWUyODdjYjQxM2YyMzUyMWMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgKQEAgLTg3LDcgKzg3LDcgQEAgcHVibGljOgogICAg
IGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCBmaW5hbDsKICAgICBib29s
IHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzSW5pdERh
dGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25z
dCBmaW5hbDsKLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNw
b25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgUmVm
UHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8
U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIH07
CiAKQEAgLTk5LDcgKzk5LDcgQEAgcHVibGljOgogICAgIC8vIENETUluc3RhbmNlCiAgICAgSW1w
bGVtZW50YXRpb25UeXBlIGltcGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IEltcGxlbWVudGF0aW9uVHlwZTo6Q2xlYXJLZXk7IH0KICAgICB2b2lkIGluaXRpYWxpemVXaXRo
Q29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0
aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNr
JiYpIGZpbmFsOwotICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNl
cnZlckNlcnRpZmljYXRlKFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNj
ZXNzQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0
IFN0cmluZyYpIGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmlu
YWw7CiAgICAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFs
OwpAQCAtMTA5LDggKzEwOSw4IEBAIGNsYXNzIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5IGZp
bmFsIDogcHVibGljIENETUluc3RhbmNlU2Vzc2lvblByb3h5IHsKIHB1YmxpYzoKICAgICBDRE1J
bnN0YW5jZVNlc3Npb25DbGVhcktleShDRE1JbnN0YW5jZUNsZWFyS2V5JiBwYXJlbnQpCiAgICAg
ICAgIDogQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkocGFyZW50KSB7IH0KLSAgICB2b2lkIHJlcXVl
c3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikg
ZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBl
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYp
IGZpbmFsOworICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21T
dHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
aW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vu
c2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2Fk
U2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNl
c3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJp
bmcmLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Np
b25EYXRhKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxi
YWNrJiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3Bw
CmluZGV4IGUzMmEzNmM2MDc2MTkyMTY4YzZhMzc5MzE4Zjc4YWUxNzg5YzQ4MmUuLjcwZDVkNDE5
NDQyOTBmZjRhZmI5Y2I1NGVkNTJiZGFkNWMzMzI5MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCBib29sIEltYWdlOjpp
c1Bvc3RTY3JpcHRSZXNvdXJjZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBVUkwmIHVy
bCkKIH0KIAogCi1FbmNvZGVkRGF0YVN0YXR1cyBJbWFnZTo6c2V0RGF0YShSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK0VuY29kZWRE
YXRhU3RhdHVzIEltYWdlOjpzZXREYXRhKFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIG1fZW5jb2RlZEltYWdl
RGF0YSA9IFdURk1vdmUoZGF0YSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZS5oCmluZGV4IDQ3ZWE5ODllOTZjMzAwNGFmYzM4OGNhYTdiYWY3MGQ3YjJjNmJhZGYuLjNi
MjM3NDc1YTlmOTMyZWI3ZTkwY2RjMzljMGM5ZTk1ZGUxNDk1NTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaApAQCAtMTI0LDcgKzEyNCw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdCB7IHJldHVy
biBzdGQ6Om51bGxvcHQ7IH0KICAgICB2aXJ0dWFsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRp
b24oKSBjb25zdCB7IHJldHVybiBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2U7IH0KIAotICAg
IFdFQkNPUkVfRVhQT1JUIEVuY29kZWREYXRhU3RhdHVzIHNldERhdGEoUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIFdFQkNP
UkVfRVhQT1JUIEVuY29kZWREYXRhU3RhdHVzIHNldERhdGEoUmVmUHRyPGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIHZpcnR1
YWwgRW5jb2RlZERhdGFTdGF0dXMgZGF0YUNoYW5nZWQoYm9vbCAvKmFsbERhdGFSZWNlaXZlZCov
KSB7IHJldHVybiBFbmNvZGVkRGF0YVN0YXR1czo6VW5rbm93bjsgfQogCiAgICAgdmlydHVhbCBT
dHJpbmcgdXRpKCkgY29uc3QgeyByZXR1cm4gU3RyaW5nKCk7IH0gLy8gbnVsbCBzdHJpbmcgaWYg
dW5rbm93bgpAQCAtMTMzLDcgKzEzMyw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBk
ZXN0cm95RGVjb2RlZERhdGEoYm9vbCBkZXN0cm95QWxsID0gdHJ1ZSkgPSAwOwogCi0gICAgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSgpIHsgcmV0dXJuIG1fZW5jb2RlZEltYWdlRGF0YS5n
ZXQoKTsgfQogICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEoKSBjb25zdCB7
IHJldHVybiBtX2VuY29kZWRJbWFnZURhdGEuZ2V0KCk7IH0KIAogICAgIHZpcnR1YWwgRGVzdGlu
YXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UoKTsKQEAgLTIwOSw3ICsyMDgsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgdmlydHVhbCBDb2xvciBzaW5nbGVQaXhlbFNvbGlkQ29sb3IoKSBjb25zdCB7IHJl
dHVybiBDb2xvcigpOyB9CiAKIHByaXZhdGU6Ci0gICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IG1fZW5jb2RlZEltYWdlRGF0YTsKKyAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gbV9lbmNvZGVkSW1hZ2VEYXRhOwogICAgIEltYWdlT2JzZXJ2ZXIqIG1faW1h
Z2VPYnNlcnZlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGltZXI+IG1fYW5pbWF0aW9uU3RhcnRU
aW1lcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VE
ZWNvZGVyLmNwcAppbmRleCA0MGEwZTZjZjAzOTcyZmIxY2M3MWIyZDI4MzBmOTcxZTAwZTU5NzA4
Li4wNTNlZjYyYzU4ZGYzY2QyOTAwZDllMTA0ZWE5N2IwMzlkMzBjZjE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAKQEAgLTgwLDcg
KzgwLDcgQEAgdm9pZCBJbWFnZURlY29kZXI6OmNsZWFyRmFjdG9yaWVzKCkKIH0KICNlbmRpZgog
Ci1SZWZQdHI8SW1hZ2VEZWNvZGVyPiBJbWFnZURlY29kZXI6OmNyZWF0ZShGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBo
YU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pCitSZWZQdHI8SW1hZ2VEZWNvZGVyPiBJbWFnZURlY29kZXI6OmNyZWF0ZShjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBo
YU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24pCiB7CiAgICAgVU5VU0VEX1BBUkFNKG1pbWVUeXBlKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaAppbmRleCA1
YWFlM2NjOTExYzYwNWY3NzJiMDU3ZDAxZWRiYmI4MTEyNWZiMjUzLi42OTJjNzI0MTBkMDEzZWEy
M2Q0MzliM2M3NTZhY2VjMGE1NDVkNDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZURlY29kZXIuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgSW1hZ2VEZWNvZGVyIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPEltYWdlRGVjb2Rlcj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXI+
IGNyZWF0ZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKICAgICB2aXJ0
dWFsIH5JbWFnZURlY29kZXIoKSA9IGRlZmF1bHQ7CiAKICAgICBlbnVtIGNsYXNzIE1lZGlhVHlw
ZSB7CkBAIC05MSw3ICs5MSw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAg
ICAgdXNpbmcgU3VwcG9ydHNNZWRpYVR5cGVGdW5jID0gRnVuY3Rpb248Ym9vbChNZWRpYVR5cGUp
PjsKICAgICB1c2luZyBDYW5EZWNvZGVUeXBlRnVuYyA9IEZ1bmN0aW9uPGJvb2woY29uc3QgU3Ry
aW5nJik+OwotICAgIHVzaW5nIENyZWF0ZUltYWdlRGVjb2RlckZ1bmMgPSBGdW5jdGlvbjxSZWZQ
dHI8SW1hZ2VEZWNvZGVyPihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiwg
QWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKT47CisgICAgdXNpbmcgQ3Jl
YXRlSW1hZ2VEZWNvZGVyRnVuYyA9IEZ1bmN0aW9uPFJlZlB0cjxJbWFnZURlY29kZXI+KGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmLCBBbHBoYU9wdGlvbiwgR2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pPjsKIAogICAgIHN0cnVjdCBJbWFnZURlY29kZXJGYWN0
b3J5IHsKICAgICAgICAgU3VwcG9ydHNNZWRpYVR5cGVGdW5jIHN1cHBvcnRzTWVkaWFUeXBlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmlu
ZGV4IGYyYzk2NDBkNDZkM2E5MzU2MTE0ZjMzYWIxNDA1MmM3ZmVjMjc3OGMuLjU0NTdiZDVhYjM2
ZmE3ZDQxZDAzZDYxYjk1ZGQzNDRhNDM1ZGFmNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgSW1hZ2VT
b3VyY2U6On5JbWFnZVNvdXJjZSgpCiAgICAgQVNTRVJUKCZtX3J1bkxvb3AgPT0gJlJ1bkxvb3A6
OmN1cnJlbnQoKSk7CiB9CiAKLWJvb2wgSW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJBdmFpbGFi
bGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKK2Jvb2wgSW1hZ2VTb3VyY2U6OmVuc3Vy
ZURlY29kZXJBdmFpbGFibGUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsK
ICAgICBpZiAoIWRhdGEgfHwgaXNEZWNvZGVyQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwpAQCAtOTEsNyArOTEsNyBAQCBib29sIEltYWdlU291cmNlOjplbnN1cmVEZWNvZGVyQXZh
aWxhYmxlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXZvaWQgSW1hZ2VTb3VyY2U6OnNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit2b2lkIEltYWdlU291cmNlOjpzZXREYXRhKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewog
ICAgIGlmICghZGF0YSB8fCAhZW5zdXJlRGVjb2RlckF2YWlsYWJsZShkYXRhKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtOTksMTMgKzk5LDEzIEBAIHZvaWQgSW1hZ2VTb3VyY2U6OnNldERhdGEoRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgbV9k
ZWNvZGVyLT5zZXREYXRhKCpkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwogfQogCi12b2lkIEltYWdl
U291cmNlOjpyZXNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKK3ZvaWQgSW1h
Z2VTb3VyY2U6OnJlc2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQog
ewogICAgIG1fZGVjb2RlciA9IG51bGxwdHI7CiAgICAgc2V0RGF0YShkYXRhLCBpc0FsbERhdGFS
ZWNlaXZlZCgpKTsKIH0KIAotRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VTb3VyY2U6OmRhdGFDaGFu
Z2VkKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQor
RW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VTb3VyY2U6OmRhdGFDaGFuZ2VkKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIHNldERh
dGEoZGF0YSwgYWxsRGF0YVJlY2VpdmVkKTsKICAgICBjbGVhck1ldGFkYXRhKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaAppbmRleCBmOTgxNDE3
ZjI0ZWJjN2YyZGJkNTczZGFlMGU1OTI1OTg5NDRlNjZhLi44MjllMDZmYjg5ZTU1ODdhOGY1MjRh
NjllM2NiMjgzOTA2YTIwMmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmgKQEAgLTU2LDkgKzU2LDkgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBJbWFnZVNvdXJjZShXVEZNb3ZlKG5hdGl2ZUltYWdlKSkpOwogICAg
IH0KIAotICAgIHZvaWQgc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBib29s
IGFsbERhdGFSZWNlaXZlZCk7Ci0gICAgdm9pZCByZXNldERhdGEoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciogZGF0YSk7Ci0gICAgRW5jb2RlZERhdGFTdGF0dXMgZGF0YUNoYW5nZWQoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOworICAgIHZvaWQgc2V0
RGF0YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNl
aXZlZCk7CisgICAgdm9pZCByZXNldERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciog
ZGF0YSk7CisgICAgRW5jb2RlZERhdGFTdGF0dXMgZGF0YUNoYW5nZWQoY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIGJvb2wgaXNB
bGxEYXRhUmVjZWl2ZWQoKTsKIAogICAgIHVuc2lnbmVkIGRlY29kZWRTaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9kZWNvZGVkU2l6ZTsgfQpAQCAtMTUxLDcgKzE1MSw3IEBAIHByaXZhdGU6CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBUIGZpcnN0RnJhbWVNZXRhZGF0YUNhY2hlSWZOZWVk
ZWQoVCYgY2FjaGVkVmFsdWUsIE1ldGFkYXRhVHlwZSwgVCAoSW1hZ2VGcmFtZTo6KmZ1bmN0b3Ip
KCkgY29uc3QsIEltYWdlRnJhbWU6OkNhY2hpbmcsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U3Vic2Ft
cGxpbmdMZXZlbD4mID0geyB9KTsKIAotICAgIGJvb2wgZW5zdXJlRGVjb2RlckF2YWlsYWJsZShG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKTsKKyAgICBib29sIGVuc3VyZURlY29kZXJBdmFp
bGFibGUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSk7CiAgICAgYm9vbCBpc0Rl
Y29kZXJBdmFpbGFibGUoKSBjb25zdCB7IHJldHVybiBtX2RlY29kZXI7IH0KICAgICB2b2lkIGRl
c3Ryb3lEZWNvZGVkRGF0YShzaXplX3QgZnJhbWVDb3VudCwgc2l6ZV90IGV4Y2x1ZGVGcmFtZSk7
CiAgICAgdm9pZCBkZWNvZGVkU2l6ZUNoYW5nZWQobG9uZyBsb25nIGRlY29kZWRTaXplKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9D
RE1GYWlyUGxheVN0cmVhbWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuY3BwCmluZGV4IDhiMDRmOWJlOTZj
MzZlMGEyNjIxODBhMjVlYTM3NDU5NjJiM2Q3ZDUuLjc5OGJlODRiMTllYmE5YzdjMmRiYTgzYzRk
MDEyMjliOTExZWZkMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5n
LmNwcApAQCAtODYsNyArODYsNyBAQCBjb25zdCBBdG9tU3RyaW5nJiBDRE1Qcml2YXRlRmFpclBs
YXlTdHJlYW1pbmc6OnNrZE5hbWUoKQogICAgIHJldHVybiBza2Q7CiB9CiAKLXN0YXRpYyBWZWN0
b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBleHRyYWN0U2luZkRhdGEoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFZlY3RvcjxSZWY8Y29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0YShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gSlNPTiBvZiB0aGUgZm9ybWF0OiAieyBzaW5m
OiBbIDxiYXNlNjQtZW5jb2RlZC1zdHJpbmc+IF0gfSIKICAgICBpZiAoYnVmZmVyLnNpemUoKSA+
IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKQEAgLTEwNSw3ICsxMDUsNyBA
QCBzdGF0aWMgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gZXh0cmFjdFNpbmZE
YXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZQogICAgIGlmICghc2luZkFycmF5KQogICAgICAgICBy
ZXR1cm4geyB9OwogCi0gICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gc2lu
ZnM7CisgICAgVmVjdG9yPFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gc2luZnM7
CiAgICAgc2luZnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaW5mQXJyYXktPmxlbmd0aCgpKTsK
IAogICAgIGZvciAoYXV0byYgdmFsdWUgOiAqc2luZkFycmF5KSB7CkBAIC0xNzAsOSArMTcwLDkg
QEAgc3RhdGljIFNjaGVtZUFuZEtleVJlc3VsdCBleHRyYWN0U2NoZW1lQW5kS2V5SWRGcm9tU2lu
Zihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnUKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGQ6
Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBDRE1Qcml2YXRl
RmFpclBsYXlTdHJlYW1pbmc6OmV4dHJhY3RLZXlJRHNTaW5mKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtl
eUlEc1NpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewotICAgIFZl
Y3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKKyAgICBWZWN0b3I8UmVm
PGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CiAgICAgYXV0byByZXN1bHRz
ID0gZXh0cmFjdFNjaGVtZUFuZEtleUlkRnJvbVNpbmYoYnVmZmVyKTsKIAogICAgIGZvciAoYXV0
byYgcmVzdWx0IDogcmVzdWx0cykgewpAQCAtMTgzLDcgKzE4Myw3IEBAIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxheVN0
cmVhbWluZzo6CiAgICAgcmV0dXJuIGtleUlEczsKIH0KIAotUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2FuaXRpemVTaW5mKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK1JlZlB0cjxjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0aXplU2luZihj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gQ29tbW9uIFNJ
TkYgQm94IEZvcm1hdAogICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOwpAQCAtMTkxLDE3ICsxOTEs
MTcgQEAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETVByaXZhdGVGYWlyUGxheVN0
cmVhbWluZzo6c2FuaXRpemVTaW5mKGNvbnN0IEYKICAgICByZXR1cm4gYnVmZmVyLmNvcHkoKTsK
IH0KIAotUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETVByaXZhdGVGYWlyUGxheVN0
cmVhbWluZzo6c2FuaXRpemVTa2QoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVy
KQorUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETVByaXZhdGVGYWlyUGxh
eVN0cmVhbWluZzo6c2FuaXRpemVTa2QoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQogewogICAgIFVOVVNFRF9QQVJBTShidWZmZXIpOwogICAgIG5vdEltcGxlbWVudGVkKCk7
CiAgICAgcmV0dXJuIGJ1ZmZlci5jb3B5KCk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6
ZXh0cmFjdEtleUlEc1NrZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCitz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBD
RE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJhY3RLZXlJRHNTa2QoY29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIEluIHRoZSAnc2tkJyBzY2hlbWUs
IHRoZSBpbml0IGRhdGEgaXMgdGhlIGtleSBJRC4KLSAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+PiBrZXlJRHM7CisgICAgVmVjdG9yPFJlZjxjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4ga2V5SURzOwogICAgIGtleUlEcy5hcHBlbmQoYnVmZmVyLmNvcHkoKSk7CiAg
ICAgcmV0dXJuIGtleUlEczsKIH0KQEAgLTQyMyw3ICs0MjMsNyBAQCBib29sIENETVByaXZhdGVG
YWlyUGxheVN0cmVhbWluZzo6c3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0
RGF0YVR5cAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2FuaXRpemVSZXNwb25zZShjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKK1JlZlB0cjxjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OnNhbml0
aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIHJlc3BvbnNlLmNvcHkoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWlu
Zy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZh
aXJQbGF5U3RyZWFtaW5nLmgKaW5kZXggMzE3YmI4ZDU3ZTg2YzA2MjE0ZTBiNDA1OWRkZjRmODgw
N2M3NGM2Yi4uNmQ4YzI4NGRmMDMxZDFkNzk0MTY3Y2ExNWExNTViZTA3N2E0OTBkZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZh
aXJQbGF5U3RyZWFtaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmgKQEAgLTcyLDE2ICs3MiwxNiBAQCBw
dWJsaWM6CiAgICAgYm9vbCBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcygpIGNvbnN0IG92ZXJy
aWRlOwogICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJv
b2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYpIGNvbnN0IG92ZXJyaWRlOwotICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBj
b25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0
IFN0cmluZyYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcm
IHNpbmZOYW1lKCk7Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNTaW5mKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKTsKLSAgICBzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNh
bml0aXplU2luZihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4
dHJhY3RLZXlJRHNTaW5mKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0
aWMgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplU2luZihjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKICAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmlu
ZyYgc2tkTmFtZSgpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzU2tkKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKTsKLSAgICBzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNh
bml0aXplU2tkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0
cmFjdEtleUlEc1NrZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGlj
IFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVNrZChjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKICAgICBzdGF0aWMgY29uc3QgVmVjdG9yPEZvdXJD
Qz4mIHZhbGlkRmFpclBsYXlTdHJlYW1pbmdTY2hlbWVzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNl
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qy5oCmluZGV4IDU2YjU4YzI1YTI4NzA5ZmIzODIyMTgzOWU1NWJhZTQ1ZWQ5M2NmNjIuLjM5MWRh
YThlYjJjZDExMzM4MTJlMmQ1NmVkMmYzYjhiZTk4Y2ZmYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9i
akMuaApAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgSW1wbGVtZW50YXRpb25UeXBlIGlt
cGxlbWVudGF0aW9uVHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEltcGxlbWVudGF0aW9uVHlw
ZTo6RmFpclBsYXlTdHJlYW1pbmc7IH0KIAogICAgIHZvaWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1
cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZl
SWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJikgZmlu
YWw7Ci0gICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgc2V0U2VydmVyQ2Vy
dGlmaWNhdGUoUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxs
YmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5n
JikgZmluYWw7CiAgICAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigp
IGZpbmFsOwogICAgIHZvaWQgc2V0Q2xpZW50KFdlYWtQdHI8Q0RNSW5zdGFuY2VDbGllbnQ+JiYp
IGZpbmFsOwpAQCAtOTQsMTAgKzk0LDEwIEBAIHB1YmxpYzoKIAogICAgIE5TVVJMICpzdG9yYWdl
VVJMKCkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdlVVJMLmdldCgpOyB9CiAgICAgYm9vbCBwZXJz
aXN0ZW50U3RhdGVBbGxvd2VkKCkgY29uc3QgeyByZXR1cm4gbV9wZXJzaXN0ZW50U3RhdGVBbGxv
d2VkOyB9Ci0gICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogc2VydmVyQ2VydGlmaWNhdGUoKSBj
b25zdCB7IHJldHVybiBtX3NlcnZlckNlcnRpZmljYXRlLmdldCgpOyB9CisgICAgY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciogc2VydmVyQ2VydGlmaWNhdGUoKSBjb25zdCB7IHJldHVybiBt
X3NlcnZlckNlcnRpZmljYXRlLmdldCgpOyB9CiAgICAgQVZDb250ZW50S2V5U2Vzc2lvbiogY29u
dGVudEtleVNlc3Npb24oKTsKIAotICAgIFJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0PiB0
YWtlVW5leHBlY3RlZEtleVJlcXVlc3RGb3JJbml0aWFsaXphdGlvbkRhdGEoY29uc3QgQXRvbVN0
cmluZyYgaW5pdERhdGFUeXBlLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSk7Cisg
ICAgUmV0YWluUHRyPEFWQ29udGVudEtleVJlcXVlc3Q+IHRha2VVbmV4cGVjdGVkS2V5UmVxdWVz
dEZvckluaXRpYWxpemF0aW9uRGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKTsKIAogICAgIC8vIEFWQ29udGVu
dEtleVNlc3Npb25EZWxlZ2F0ZUNsaWVudAogICAgIHZvaWQgZGlkUHJvdmlkZVJlcXVlc3QoQVZD
b250ZW50S2V5UmVxdWVzdCopIGZpbmFsOwpAQCAtMTEyLDcgKzExMiw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIG91dHB1dE9ic2N1cmVkRHVlVG9JbnN1ZmZpY2llbnRFeHRlcm5hbFByb3RlY3Rpb25D
aGFuZ2VkKGJvb2wpIGZpbmFsOwogICAgIHZvaWQgZXh0ZXJuYWxQcm90ZWN0aW9uU3RhdHVzRGlk
Q2hhbmdlRm9yQ29udGVudEtleVJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCopIGZpbmFsOwog
Ci0gICAgdXNpbmcgS2V5cyA9IFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+Owor
ICAgIHVzaW5nIEtleXMgPSBWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
PjsKICAgICBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMqIHNlc3Np
b25Gb3JLZXlJRHMoY29uc3QgS2V5cyYpIGNvbnN0OwogICAgIENETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQyogc2Vzc2lvbkZvckdyb3VwKEFWQ29udGVudEtleVJlcG9y
dEdyb3VwKikgY29uc3Q7CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDKiBzZXNzaW9uRm9yUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KikgY29uc3Q7CkBA
IC0xMjksNyArMTI5LDcgQEAgcHJpdmF0ZToKICAgICBXZWFrUHRyPENETUluc3RhbmNlQ2xpZW50
PiBtX2NsaWVudDsKICAgICBSZXRhaW5QdHI8QVZDb250ZW50S2V5U2Vzc2lvbj4gbV9zZXNzaW9u
OwogICAgIFJldGFpblB0cjxXZWJDb3JlRlBTQ29udGVudEtleVNlc3Npb25EZWxlZ2F0ZT4gbV9k
ZWxlZ2F0ZTsKLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9zZXJ2ZXJDZXJ0
aWZpY2F0ZTsKKyAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9zZXJ2
ZXJDZXJ0aWZpY2F0ZTsKICAgICBib29sIG1fcGVyc2lzdGVudFN0YXRlQWxsb3dlZCB7IHRydWUg
fTsKICAgICBSZXRhaW5QdHI8TlNVUkw+IG1fc3RvcmFnZVVSTDsKICAgICBWZWN0b3I8V2Vha1B0
cjxDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM+PiBtX3Nlc3Npb25z
OwpAQCAtMTUwLDggKzE1MCw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgLy8gQ0RNSW5zdGFu
Y2VTZXNzaW9uCi0gICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRv
bVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0
RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGljZW5zZShj
b25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYs
IExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RMaWNlbnNl
KExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmlu
YWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBS
ZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNr
JiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYsIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9p
ZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ2xvc2VTZXNzaW9uQ2FsbGJhY2smJikgZmlu
YWw7CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlw
ZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNl
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9i
akMubW0KaW5kZXggY2ZlMDQ4YTkzOGMwNWRmNzQ1YzcxNjM1NmFkMWIzYjkwYTU5ZWI3OC4uNjgz
YTU2MmM0M2Q2MzllZmQwMDI0ODU4MjRmNTVkN2MwZDE5YzRmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VG
YWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakMubW0KQEAgLTIxOCw3ICsyMTgsNyBAQCBBTExPV19ORVdfQVBJX1dJVEhPVVRfR1VBUkRT
X0VORAogICAgIHJldHVybiBBdG9tU3RyaW5nKG5zSW5pdFR5cGUpOwogfQogCi1zdGF0aWMgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGluaXRpYWxpemF0aW9uRGF0YUZvclJlcXVlc3QoQVZD
b250ZW50S2V5UmVxdWVzdCogcmVxdWVzdCkKK3N0YXRpYyBSZWY8Y29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gaW5pdGlhbGl6YXRpb25EYXRhRm9yUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1
ZXN0KiByZXF1ZXN0KQogewogICAgIGlmICghcmVxdWVzdCkKICAgICAgICAgcmV0dXJuIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCk7CkBAIC0yNjYsNyArMjY2LDcgQEAgQVZDb250ZW50S2V5U2Vzc2lv
biogQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmNvbnRlbnRLZXlTZXNzaW9u
KCkKICAgICByZXR1cm4gbV9zZXNzaW9uLmdldCgpOwogfQogCi1SZXRhaW5QdHI8QVZDb250ZW50
S2V5UmVxdWVzdD4gQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnRha2VVbmV4
cGVjdGVkS2V5UmVxdWVzdEZvckluaXRpYWxpemF0aW9uRGF0YShjb25zdCBBdG9tU3RyaW5nJiBp
bml0RGF0YVR5cGUsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRhKQorUmV0YWluUHRy
PEFWQ29udGVudEtleVJlcXVlc3Q+IENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Ojp0YWtlVW5leHBlY3RlZEtleVJlcXVlc3RGb3JJbml0aWFsaXphdGlvbkRhdGEoY29uc3QgQXRv
bVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0
RGF0YSkKIHsKICAgICBmb3IgKGF1dG8gcmVxdWVzdEl0ZXIgPSBtX3VuZXhwZWN0ZWRLZXlSZXF1
ZXN0cy5iZWdpbigpOyByZXF1ZXN0SXRlciAhPSBtX3VuZXhwZWN0ZWRLZXlSZXF1ZXN0cy5lbmQo
KTsgKytyZXF1ZXN0SXRlcikgewogICAgICAgICBhdXRvJiByZXF1ZXN0ID0gKnJlcXVlc3RJdGVy
OwpAQCAtMzgwLDcgKzM4MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakM6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LCiAgICAgY2FsbGJh
Y2soaW5pdGlhbGl6ZSgpKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgc2VydmVyQ2VydGlmaWNhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBD
RE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0U2VydmVyQ2VydGlmaWNhdGUo
UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgc2VydmVyQ2VydGlmaWNhdGUsIFN1
Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShM
T0dJREVOVElGSUVSKTsKICAgICBtX3NlcnZlckNlcnRpZmljYXRlID0gV1RGTW92ZShzZXJ2ZXJD
ZXJ0aWZpY2F0ZSk7CkBAIC01ODQsOCArNTg0LDggQEAgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDKiBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzoK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGF1dG8gc2Vzc2lvbktleXMgPSBzZXNz
aW9uSW50ZXJmYWNlLT5rZXlJRHMoKTsKLSAgICAgICAgaWYgKGFueU9mKHNlc3Npb25LZXlzLCBb
Jl0oY29uc3QgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBzZXNzaW9uS2V5KSB7Ci0gICAg
ICAgICAgICByZXR1cm4ga2V5SURzLmZpbmRJZihbJl0oY29uc3QgUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiBrZXlJRCkgeworICAgICAgICBpZiAoYW55T2Yoc2Vzc2lvbktleXMsIFsmXShj
b25zdCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIHNlc3Npb25LZXkpIHsKKyAg
ICAgICAgICAgIHJldHVybiBrZXlJRHMuZmluZElmKFsmXShjb25zdCBSZWY8Y29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mIGtleUlEKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGtleUlE
LmdldCgpID09IHNlc3Npb25LZXkuZ2V0KCk7CiAgICAgICAgICAgICB9KSAhPSBub3RGb3VuZDsK
ICAgICAgICAgfSkpCkBAIC02NzIsNyArNjcyLDcgQEAgS2V5cyBDRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmtleUlEcygpCiAgICAgcmV0dXJuIGtleUlEczsKIH0K
IAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVl
c3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0
RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNl
Q2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYg
KCFpc0xpY2Vuc2VUeXBlU3VwcG9ydGVkKGxpY2Vuc2VUeXBlKSkgewogICAgICAgICBERUJVR19M
T0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUiwgIiBmYWxzZSwgbGljZW5zZVR5cGUgXCIiLCBs
aWNlbnNlVHlwZSwgIlwiIG5vdCBzdXBwb3J0ZWQiKTsKQEAgLTc1Myw3ICs3NTMsNyBAQCBzdGF0
aWMgYm9vbCBpc0VxdWFsKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0
IFN0cmluZyYgdmFsdWUpCiAgICAgcmV0dXJuIHN0cmluZ09yRXhjZXB0aW9uLnJldHVyblZhbHVl
KCkgPT0gdmFsdWU7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURhdGEsIExpY2Vuc2VVcGRhdGVDYWxs
YmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgTGljZW5zZVVwZGF0
ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFtX2V4cGlyZWRTZXNzaW9ucy5pc0Vt
cHR5KCkgJiYgaXNFcXVhbChyZXNwb25zZURhdGEsICJhY2tub3dsZWRnZWQiX3MpKSB7CiAgICAg
ICAgIGF1dG8qIGNlcnRpZmljYXRlID0gbV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKTsK
QEAgLTg1NSw3ICs4NTUsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogICAgICAgICAgICAg
YXV0byBrZXlJRCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoKmtleUlEVmVjdG9yKSk7
CiAgICAgICAgICAgICBhdXRvIGZvdW5kSW5kZXggPSBtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCku
cmVxdWVzdHMuZmluZElmKFsmXSAoYXV0byYgcmVxdWVzdCkgewogICAgICAgICAgICAgICAgIGF1
dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKLSAgICAgICAgICAg
ICAgICByZXR1cm4ga2V5SURzLmZpbmRJZihbJl0oY29uc3QgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiBpZCkgeworICAgICAgICAgICAgICAgIHJldHVybiBrZXlJRHMuZmluZElmKFsmXShj
b25zdCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGlkKSB7CiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBpZC5nZXQoKSA9PSBrZXlJRC5nZXQoKTsKICAgICAgICAgICAgICAg
ICB9KSAhPSBub3RGb3VuZDsKICAgICAgICAgICAgIH0pOwpAQCAtMTE1Myw3ICsxMTUzLDcgQEAg
dm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3Zp
ZGVSZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAgICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2lu
c3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQogICAgICAgICBhcHBJZGVudGlmaWVyID0gY2Vy
dGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwogCi0gICAgdXNpbmcg
UmVxdWVzdHNEYXRhID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4sIFJldGFpblB0cjxOU0RhdGE+Pj47CisgICAgdXNpbmcgUmVxdWVzdHNEYXRhID0gVmVj
dG9yPHN0ZDo6cGFpcjxSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4sIFJldGFp
blB0cjxOU0RhdGE+Pj47CiAgICAgc3RydWN0IENhbGxiYWNrQWdncmVnYXRvciBmaW5hbCA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDYWxsYmFja0FnZ3JlZ2F0b3I+IHsKICAgICAgICAg
dXNpbmcgQ2FsbGJhY2tGdW5jdGlvbiA9IEZ1bmN0aW9uPHZvaWQoUmVxdWVzdHNEYXRhJiYpPjsK
ICAgICAgICAgc3RhdGljIFJlZlB0cjxDYWxsYmFja0FnZ3JlZ2F0b3I+IGNyZWF0ZShDYWxsYmFj
a0Z1bmN0aW9uJiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0xMjA5LDcgKzEyMDksNyBAQCB2b2lk
IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJl
cXVlc3RzKFZlY3RvcjxSZXRhaQogICAgIEB0cnkgewogICAgICAgICBmb3IgKGF1dG8gcmVxdWVz
dCA6IG1fY3VycmVudFJlcXVlc3QudmFsdWUoKS5yZXF1ZXN0cykgewogICAgICAgICAgICAgYXV0
byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwotICAgICAgICAgICAg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGtleUlEID0gV1RGTW92ZShrZXlJRHMuZmly
c3QoKSk7CisgICAgICAgICAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
a2V5SUQgPSBXVEZNb3ZlKGtleUlEcy5maXJzdCgpKTsKICAgICAgICAgICAgIGF1dG8gY29udGVu
dElkZW50aWZpZXIgPSBrZXlJRC0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAg
ICAgICAgICAgICBbcmVxdWVzdCBtYWtlU3RyZWFtaW5nQ29udGVudEtleVJlcXVlc3REYXRhRm9y
QXBwOmFwcElkZW50aWZpZXIuZ2V0KCkgY29udGVudElkZW50aWZpZXI6Y29udGVudElkZW50aWZp
ZXIuZ2V0KCkgb3B0aW9uczpuaWwgY29tcGxldGlvbkhhbmRsZXI6W2tleUlEID0gV1RGTW92ZShr
ZXlJRCksIGFnZ3JlZ2F0b3JdIChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJv
ciAqKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtrZXlJRCA9
IFdURk1vdmUoa2V5SUQpLCBhZ2dyZWdhdG9yID0gV1RGTW92ZShhZ2dyZWdhdG9yKSwgY29udGVu
dEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSldICgpIG11
dGFibGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggNDFkZWVjNzc1ZjIwOTkxOWQ5ZjM2
NjRlNzdiMzMxMWJjMDdmNDE2YS4uMTZhNDYyZjIzNzg0OTZhODQwMGQ5NWJhOWYyNWM1YTYwYjgy
MDcxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0yODgwLDcgKzI4ODAsNyBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmF0dGVtcHRUb0RlY3J5cHRXaXRo
SW5zdGFuY2UoQ0RNSW5zdGFuYwogICAgIGlmICghbV9rZXlJRCB8fCAhbV9jZG1JbnN0YW5jZSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBpbnN0YW5jZVNlc3Npb24gPSBtX2NkbUluc3Rh
bmNlLT5zZXNzaW9uRm9yS2V5SURzKFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
Ojpmcm9tKCptX2tleUlEKSk7CisgICAgYXV0byBpbnN0YW5jZVNlc3Npb24gPSBtX2NkbUluc3Rh
bmNlLT5zZXNzaW9uRm9yS2V5SURzKFZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+Ojpmcm9tKCptX2tleUlEKSk7CiAgICAgaWYgKCFpbnN0YW5jZVNlc3Npb24pCiAgICAg
ICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDLmgKaW5kZXggNzU0YjFlMmVlYzAyZGYzMzk1ZTVjZGI1YzA3ZjhlODhh
OTM1Y2QwOC4uZTYwMGIxNmMyOThlNWIyOWYwY2VmOTA0Nzg2ODBjNjhlZTVjNzRhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5o
CkBAIC0yMjEsNyArMjIxLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikKICAgICBSZWZQdHI8Q0RNSW5z
dGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM+IG1fY2RtSW5zdGFuY2U7Ci0gICAgVmVjdG9y
PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gbV9rZXlJRHM7CisgICAgVmVjdG9yPFJlZjxj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gbV9rZXlJRHM7CiAjZW5kaWYKIAogICAgIHN0
ZDo6b3B0aW9uYWw8RmxvYXRTaXplPiBtX2NhY2hlZFNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggMjQ3
ODE1MDYwMmE4ZDBkNmIwNmQ3YTNhNTgzNWYwYjgzMDcyMTRlNC4uNGY1YWZmZDRiODRmNzIwODZi
YTVjZWQ4OWQ4ODU3NDAxNjQ0MjFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcApAQCAtMjU0LDcgKzI1NCw3IEBA
IHZvaWQgc2hhcmVkQnVmZmVyUmVsZWFzZSh2b2lkKiBpbmZvKQogfQogI2VuZGlmCiAKLUltYWdl
RGVjb2RlckNHOjpJbWFnZURlY29kZXJDRyhGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBB
bHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitJbWFnZURlY29kZXJDRzo6
SW1hZ2VEZWNvZGVyQ0coY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFP
cHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gdXRpSGludDsKICAgICBpZiAoZGF0YS5zaXplKCkgPj0gMzIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaAppbmRl
eCAxNzUxMDg4NzIxZjU2MjFmY2RiZmQwMGYyNmRiMjc3YzgxMTdkZjgxLi4zNjhiMTYyODNlNGJm
ZjQ2Mjg5YTE3ZWM0MDgzMmVmNTAxNWQwMDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKQEAgLTMyLDkgKzMyLDkgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW1hZ2VEZWNvZGVyQ0cgZmluYWwgOiBwdWJsaWMg
SW1hZ2VEZWNvZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAg
ICBJbWFnZURlY29kZXJDRyhGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlv
biwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIEltYWdlRGVjb2RlckNHKGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbik7CiAKLSAgICBzdGF0aWMgUmVmPEltYWdlRGVjb2RlckNHPiBjcmVhdGUo
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorICAg
IHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyQ0c+IGNyZWF0ZShjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURlY29kZXJDRyhkYXRhLCBhbHBoYU9wdGlvbiwgZ2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJH
U3RyZWFtZXIuY3BwCmluZGV4IDI5YzlhYjRlZWRmMmQ2MzliNDFlODJmYTZhYzJkZjM3OWY0YTM0
NzMuLjJmZDg0ZDIxOWI5OGNkYTE1OWIwN2VmYzUxNjllZTAyYTgyNzg3OWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJH
U3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuY3BwCkBAIC04MSwxMiArODEsMTIgQEAgSW1hZ2VE
ZWNvZGVyR1N0cmVhbWVyU2FtcGxlKiB0b1NhbXBsZShJdGVyYXRvciBpdGVyKQogICAgIHJldHVy
biAoSW1hZ2VEZWNvZGVyR1N0cmVhbWVyU2FtcGxlKilpdGVyLT5zZWNvbmQuZ2V0KCk7CiB9CiAK
LVJlZlB0cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+IEltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y3Jl
YXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+IElt
YWdlRGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBH
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsK
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbWFnZURlY29kZXJHU3RyZWFtZXIoZGF0YSwgbWlt
ZVR5cGUsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwogfQogCi1J
bWFnZURlY29kZXJHU3RyZWFtZXI6OkltYWdlRGVjb2RlckdTdHJlYW1lcihGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitJbWFnZURlY29kZXJHU3RyZWFtZXI6OkltYWdlRGVj
b2RlckdTdHJlYW1lcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
CiAgICAgOiBtX21pbWVUeXBlKG1pbWVUeXBlKQogewogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxh
ZyBvbmNlRmxhZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaAppbmRleCAyNjFk
YWZmMjYxNThlMTdhMmE0MjIxZmZiMjQzNTQ2NzcxNmRiZDNiLi4xOWQ4Yzk5ZTMwNjcyZDQ4ODZl
YTg5MGMyNDczMzI5MjNkOTY1M2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1l
ci5oCkBAIC00MSw4ICs0MSw4IEBAIGNsYXNzIEltYWdlRGVjb2RlckdTdHJlYW1lciBmaW5hbCA6
IHB1YmxpYyBJbWFnZURlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlRGVjb2RlckdTdHJlYW1lcik7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXJHU3RyZWFtZXI+IGNyZWF0ZShGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKLSAgICBJbWFnZURlY29kZXJHU3RyZWFtZXIoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBH
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgc3RhdGljIFJlZlB0cjxJbWFnZURlY29k
ZXJHU3RyZWFtZXI+IGNyZWF0ZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KTsKKyAgICBJbWFnZURlY29kZXJHU3RyZWFtZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbik7CiAgICAgdmlydHVhbCB+SW1hZ2VEZWNvZGVyR1N0cmVhbWVyKCkgPSBkZWZh
dWx0OwogCiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNNZWRpYVR5cGUoTWVkaWFUeXBlIHR5cGUp
IHsgcmV0dXJuIHR5cGUgPT0gTWVkaWFUeXBlOjpWaWRlbzsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRl
ci5jcHAKaW5kZXggY2Q4ZGRkOTJmOWU3OTEzOGY2NzVmMTk2ZmJlYTE4ZTgxMDcyZjFhNy4uM2M2
YzFlNTQyNmQyNDAxZjUxNWM2YjE3NzFmYzYyMmIwZDI3N2NhNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRo
dW5kZXIuY3BwCkBAIC0yMzcsNyArMjM3LDcgQEAgYm9vbCBDRE1Qcml2YXRlVGh1bmRlcjo6c3Vw
cG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEYKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLVJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Q
cml2YXRlVGh1bmRlcjo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiByZXNwb25zZSkgY29uc3QKK1JlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBDRE1Qcml2YXRlVGh1bmRlcjo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKICAgICByZXR1cm4gcmVzcG9uc2UuY29weSgp
OwogfQpAQCAtMjYwLDcgKzI2MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VUaHVuZGVyOjppbml0aWFs
aXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhCiAgICAgY2Fs
bGJhY2soU3VjY2VlZGVkKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVRodW5kZXI6OnNldFNlcnZl
ckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCAg
U3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlVGh1bmRlcjo6c2V0
U2VydmVyQ2VydGlmaWNhdGUoUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgY2Vy
dGlmaWNhdGUsICBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBhdXRvIGRhdGEg
PSBjZXJ0aWZpY2F0ZS0+ZXh0cmFjdERhdGEoKTsKICAgICBPcGVuQ0RNRXJyb3IgZXJyb3IgPSBv
cGVuY2RtX3N5c3RlbV9zZXRfc2VydmVyX2NlcnRpZmljYXRlKG1fdGh1bmRlclN5c3RlbS5nZXQo
KSwgY29uc3RfY2FzdDx1aW50OF90Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLnNpemUoKSk7CkBAIC0z
MjYsNyArMzI2LDcgQEAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gQ0RNSW5zdGFuY2VUaHVu
ZGVyOjpjcmVhdGVTZXNzaW9uKCkKIGNsYXNzIFBhcnNlZFJlc3BvbnNlTWVzc2FnZSB7CiAKIHB1
YmxpYzoKLSAgICBQYXJzZWRSZXNwb25zZU1lc3NhZ2UoY29uc3QgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiBidWZmZXIpCisgICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlKGNvbnN0IFJl
ZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQogICAgIHsKICAgICAg
ICAgaWYgKCFidWZmZXIgfHwgIWJ1ZmZlci0+c2l6ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMzQ5LDggKzM0OSw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNWYWxpZDsgfQogICAgIGJvb2wgaGFzUGF5bG9hZCgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PGJvb2w+KG1fcGF5bG9hZCk7IH0KLSAgICBjb25zdCBSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mIHBheWxvYWQoKSBjb25zdCYgeyBBU1NFUlQobV9wYXlsb2FkKTsgcmV0
dXJuIG1fcGF5bG9hZC52YWx1ZSgpOyB9Ci0gICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiBwYXlsb2FkKCkgJiB7IEFTU0VSVChtX3BheWxvYWQpOyByZXR1cm4gbV9wYXlsb2FkLnZhbHVl
KCk7IH0KKyAgICBjb25zdCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIHBheWxv
YWQoKSBjb25zdCYgeyBBU1NFUlQobV9wYXlsb2FkKTsgcmV0dXJuIG1fcGF5bG9hZC52YWx1ZSgp
OyB9CisgICAgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkgJiB7
IEFTU0VSVChtX3BheWxvYWQpOyByZXR1cm4gbV9wYXlsb2FkLnZhbHVlKCk7IH0KICAgICBib29s
IGhhc1R5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUuaGFzX3ZhbHVlKCk7IH0KICAgICBXZWJD
b3JlOjpNZWRpYUtleU1lc3NhZ2VUeXBlIHR5cGUoKSBjb25zdCB7IEFTU0VSVChtX3R5cGUpOyBy
ZXR1cm4gbV90eXBlLnZhbHVlKCk7IH0KICAgICBXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VUeXBl
IHR5cGVPcihXZWJDb3JlOjpNZWRpYUtleU1lc3NhZ2VUeXBlIGFsdGVybmF0ZSkgY29uc3QgeyBy
ZXR1cm4gbV90eXBlID8gbV90eXBlLnZhbHVlKCkgOiBhbHRlcm5hdGU7IH0KQEAgLTM1OSwxMSAr
MzU5LDExIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBib29sIG1faXNWYWxpZCB7IGZhbHNl
IH07Ci0gICAgc3RkOjpvcHRpb25hbDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IG1fcGF5
bG9hZDsKKyAgICBzdGQ6Om9wdGlvbmFsPFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj4gbV9wYXlsb2FkOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdl
VHlwZT4gbV90eXBlOwogfTsKIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpjaGFs
bGVuZ2VHZW5lcmF0ZWRDYWxsYmFjayhSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCit2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmNoYWxsZW5nZUdlbmVyYXRl
ZENhbGxiYWNrKFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
IHsKICAgICBQYXJzZWRSZXNwb25zZU1lc3NhZ2UgcGFyc2VkUmVzcG9uc2VNZXNzYWdlKGJ1ZmZl
cik7CiAgICAgaWYgKCFwYXJzZWRSZXNwb25zZU1lc3NhZ2UpIHsKQEAgLTQ3MCw3ICs0NzAsNyBA
QCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmtleXNVcGRhdGVEb25lQ2FsbGJhY2so
KQogICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuY2xlYXIoKTsKIH0KIAotdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25UaHVuZGVyOjplcnJvckNhbGxiYWNrKFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIG1lc3NhZ2UpCit2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmVy
cm9yQ2FsbGJhY2soUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2Fn
ZSkKIHsKICAgICBHU1RfRVJST1IoIkNETSBlcnJvciIpOwogICAgIGF1dG8gZGF0YSA9IG1lc3Nh
Z2UtPmV4dHJhY3REYXRhKCk7CkBAIC00ODQsNyArNDg0LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25UaHVuZGVyOjplcnJvckNhbGxiYWNrKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIG0KICAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmNsZWFyKCk7CiB9CiAKLXZvaWQg
Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGlj
ZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgaW5pdERhdGFTaGFyZWRCdWZmZXIsCit2b2lkIENETUluc3RhbmNlU2Vz
c2lvblRodW5kZXI6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25z
dCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGluaXREYXRhU2hhcmVkQnVmZmVyLAogICAgIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxi
YWNrKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CkBAIC01MDMsNyArNTAzLDcgQEAg
dm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlw
ZSBsaWNlbnNlVHlwZSwgY29uc3QgQXQKICAgICAgICAgcGF5bG9hZERhdGEuZGF0YSgpLCBwYXls
b2FkRGF0YS5zaXplKCksIG51bGxwdHIsIDAsICZtX3RodW5kZXJTZXNzaW9uQ2FsbGJhY2tzLCB0
aGlzLCAmc2Vzc2lvbik7CiAgICAgaWYgKCFzZXNzaW9uKSB7CiAgICAgICAgIEdTVF9FUlJPUigi
Q291bGQgbm90IGNyZWF0ZSBzZXNzaW9uIik7Ci0gICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBpbml0RGF0YSA9IG1faW5pdERhdGEucGF5bG9hZCgpOworICAgICAgICBSZWZQ
dHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW5pdERhdGEgPSBtX2luaXREYXRhLnBh
eWxvYWQoKTsKICAgICAgICAgY2FsbGJhY2soaW5pdERhdGEucmVsZWFzZU5vbk51bGwoKSwgeyB9
LCBmYWxzZSwgRmFpbGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTUxMiw3ICs1MTIs
NyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnJlcXVlc3RMaWNlbnNlKExpY2Vu
c2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdAogCiAgICAgYXV0byBnZW5lcmF0ZUNoYWxsZW5n
ZSA9IFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUgewogICAg
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gaW5pdERhdGEgPSBtX2luaXREYXRhLnBheWxvYWQoKTsKKyAgICAgICAgUmVm
UHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGluaXREYXRhID0gbV9pbml0RGF0YS5w
YXlsb2FkKCk7CiAgICAgICAgIGlmIChtX3Nlc3Npb25JRC5pc0VtcHR5KCkpIHsKICAgICAgICAg
ICAgIEdTVF9FUlJPUigiY291bGQgbm90IGNyZWF0ZSBzZXNzaW9uIGlkIik7CiAgICAgICAgICAg
ICBjYWxsYmFjayhpbml0RGF0YS5yZWxlYXNlTm9uTnVsbCgpLCB7IH0sIGZhbHNlLCBGYWlsZWQp
OwpAQCAtNTQyLDcgKzU0Miw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6c2Vz
c2lvbkZhaWx1cmUoKQogICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuY2xlYXIoKTsKIH0K
IAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0
cmluZyYgc2Vzc2lvbklELCBMaWNlbnNlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25UaHVuZGVyOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklELCBMaWNlbnNlVHlwZSwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVz
cG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIEFTU0VSVF9V
TlVTRUQoc2Vzc2lvbklELCBzZXNzaW9uSUQgPT0gbV9zZXNzaW9uSUQpOwogCkBAIC01OTgsNyAr
NTk4LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpsb2FkU2Vzc2lvbihMaWNl
bnNlVHlwZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQKICAgICAgICAgICAgICAgICBQYXJzZWRS
ZXNwb25zZU1lc3NhZ2UgcGFyc2VkUmVzcG9uc2VNZXNzYWdlKHJlc3BvbnNlTWVzc2FnZSk7CiAg
ICAgICAgICAgICAgICAgQVNTRVJUKHBhcnNlZFJlc3BvbnNlTWVzc2FnZSk7CiAgICAgICAgICAg
ICAgICAgaWYgKHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5oYXNQYXlsb2FkKCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3Zl
KHBhcnNlZFJlc3BvbnNlTWVzc2FnZS5wYXlsb2FkKCkpOworICAgICAgICAgICAgICAgICAgICBS
ZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2Vk
UmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdTVF9ERUJV
RygiZ290IG1lc3NhZ2Ugb2Ygc2l6ZSAlenUiLCBtZXNzYWdlLT5zaXplKCkpOwogI2lmbmRlZiBH
U1RfRElTQUJMRV9HU1RfREVCVUcKICAgICAgICAgICAgICAgICAgICAgYXV0byBkYXRhID0gbWVz
c2FnZS0+Y29weURhdGEoKTsKQEAgLTY0OCw3ICs2NDgsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vz
c2lvblRodW5kZXI6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBM
aWNlbgogewogICAgIEFTU0VSVF9VTlVTRUQoc2Vzc2lvbklELCBtX3Nlc3Npb25JRCA9PSBzZXNz
aW9uSUQpOwogCi0gICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5hcHBlbmQoW3RoaXMsIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgc3VjY2VzcywgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSBtdXRhYmxlIHsKKyAgICBtX3Nlc3Npb25DaGFuZ2Vk
Q2FsbGJhY2tzLmFwcGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9v
bCBzdWNjZXNzLCBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
IG11dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBpZiAo
c3VjY2VzcykgewogICAgICAgICAgICAgaWYgKCFidWZmZXIpCkBAIC02NTcsNyArNjU3LDcgQEAg
dm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBT
dHJpbmcmIHNlc3Npb25JRCwgTGljZW4KICAgICAgICAgICAgICAgICBQYXJzZWRSZXNwb25zZU1l
c3NhZ2UgcGFyc2VkUmVzcG9uc2VNZXNzYWdlKGJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgQVNT
RVJUKHBhcnNlZFJlc3BvbnNlTWVzc2FnZSk7CiAgICAgICAgICAgICAgICAgaWYgKHBhcnNlZFJl
c3BvbnNlTWVzc2FnZS5oYXNQYXlsb2FkKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1lc3NhZ2UgPSBXVEZNb3ZlKHBhcnNlZFJlc3BvbnNlTWVz
c2FnZS5wYXlsb2FkKCkpOworICAgICAgICAgICAgICAgICAgICBSZWY8Y29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnBh
eWxvYWQoKSk7CiAgICAgICAgICAgICAgICAgICAgIEdTVF9ERUJVRygic2Vzc2lvbiAlcyByZW1v
dmVkLCBtZXNzYWdlIGxlbmd0aCAlenUiLCBtX3Nlc3Npb25JRC51dGY4KCkuZGF0YSgpLCBtZXNz
YWdlLT5zaXplKCkpOwogICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhtX2tleVN0b3JlLmFs
bEtleXNBcyhNZWRpYUtleVN0YXR1czo6UmVsZWFzZWQpLCBXVEZNb3ZlKG1lc3NhZ2UpLCBTdWNj
ZXNzVmFsdWU6OlN1Y2NlZWRlZCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1
bmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9D
RE1UaHVuZGVyLmgKaW5kZXggMTAyMGUxNTMyMjcxYjUzNTFlMTA2ZGRlOGYyMWVhNTQwNWE5YzIz
Ny4uYzk2N2YyMGMxY2E2MzcyNTlkNjQ5ZmQ4YjlhNjg1MWJiMWQyOTI3ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9D
RE1UaHVuZGVyLmgKQEAgLTk0LDcgKzk0LDcgQEAgcHVibGljOgogICAgIGJvb2wgc3VwcG9ydHNT
ZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzU2Vzc2lv
bnMoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0
cmluZyYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKLSAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6
ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0ZToKQEAgLTEx
MCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAgLy8gQ0RNSW5zdGFuY2UKICAgICBJbXBsZW1lbnRh
dGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1wbGVt
ZW50YXRpb25UeXBlOjpUaHVuZGVyOyB9CiAgICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3Vy
YXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93RGlzdGluY3RpdmVJ
ZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5h
bDsKLSAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0
aWZpY2F0ZShSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxi
YWNrJiYpIGZpbmFsOwogICAgIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcm
KSBmaW5hbDsKICAgICBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fa2V5U3lzdGVtOyB9CiAgICAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRl
U2Vzc2lvbigpIGZpbmFsOwpAQCAtMTI2LDggKzEyNiw4IEBAIGNsYXNzIENETUluc3RhbmNlU2Vz
c2lvblRodW5kZXIgZmluYWwgOiBwdWJsaWMgQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkgewogcHVi
bGljOgogICAgIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXIoQ0RNSW5zdGFuY2VUaHVuZGVyJik7
CiAKLSAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5n
JiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBM
aWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0
cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5z
ZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5z
ZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKKyAg
ICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmlu
YWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNsb3Nl
U2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAg
ICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZW1v
dmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpAQCAtMTQxLDE0ICsxNDEsMTQgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICBDRE1JbnN0YW5jZVRodW5kZXIqIGNkbUluc3RhbmNlVGh1bmRl
cigpIGNvbnN0OwogCi0gICAgdXNpbmcgTm90aWZpY2F0aW9uID0gdm9pZCAoQ0RNSW5zdGFuY2VT
ZXNzaW9uVGh1bmRlcjo6KikoUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYpOworICAgIHVzaW5nIE5vdGlmaWNhdGlvbiA9IHZvaWQgKENETUluc3RhbmNlU2Vzc2lvblRo
dW5kZXI6OiopKFJlZlB0cjxjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
KTsKICAgICB1c2luZyBDaGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQo
KT47Ci0gICAgdXNpbmcgU2Vzc2lvbkNoYW5nZWRDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoYm9v
bCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpPjsKKyAgICB1c2luZyBTZXNzaW9u
Q2hhbmdlZENhbGxiYWNrID0gRnVuY3Rpb248dm9pZChib29sLCBSZWZQdHI8Y29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJik+OwogCi0gICAgdm9pZCBjaGFsbGVuZ2VHZW5lcmF0ZWRDYWxs
YmFjayhSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBjaGFsbGVu
Z2VHZW5lcmF0ZWRDYWxsYmFjayhSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
Jik7CiAgICAgdm9pZCBrZXlVcGRhdGVkQ2FsbGJhY2soS2V5SURUeXBlJiYpOwogICAgIHZvaWQg
a2V5c1VwZGF0ZURvbmVDYWxsYmFjaygpOwotICAgIHZvaWQgZXJyb3JDYWxsYmFjayhSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgdm9pZCBlcnJvckNhbGxiYWNrKFJlZlB0
cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICBDRE1JbnN0YW5jZVNlc3Np
b246OktleVN0YXR1cyBzdGF0dXMoY29uc3QgS2V5SURUeXBlJikgY29uc3Q7CiAgICAgdm9pZCBz
ZXNzaW9uRmFpbHVyZSgpOwogCkBAIC0xNTksNyArMTU5LDcgQEAgcHJpdmF0ZToKICAgICBJbml0
RGF0YSBtX2luaXREYXRhOwogICAgIE9wZW5DRE1TZXNzaW9uQ2FsbGJhY2tzIG1fdGh1bmRlclNl
c3Npb25DYWxsYmFja3MgeyB9OwogICAgIEJveFB0cjxPcGVuQ0RNU2Vzc2lvbj4gbV9zZXNzaW9u
OwotICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX21lc3NhZ2U7CisgICAgUmVm
UHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fbWVzc2FnZTsKICAgICBib29sIG1f
bmVlZHNJbmRpdmlkdWFsaXphdGlvbiB7IGZhbHNlIH07CiAgICAgVmVjdG9yPENoYWxsZW5nZUdl
bmVyYXRlZENhbGxiYWNrPiBtX2NoYWxsZW5nZUNhbGxiYWNrczsKICAgICBWZWN0b3I8U2Vzc2lv
bkNoYW5nZWRDYWxsYmFjaz4gbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNv
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxl
SW1hZ2VEZWNvZGVyLmNwcAppbmRleCA4MWNlNjU0MjVlZjUzY2MwMTI0ZWUxMDg1ZDQ2NWFiMTAw
NzAyYmQ0Li45MjgzYmI5NDAyZmE4ZjI0ZWRlNjhkODE2YTBjMjI2Nzk0ZmZjOGUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdl
RGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
U2NhbGFibGVJbWFnZURlY29kZXIuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgYm9vbCBtYXRjaGVz
Q1VSU2lnbmF0dXJlKGNoYXIqIGNvbnRlbnRzKQogCiB9CiAKLVJlZlB0cjxTY2FsYWJsZUltYWdl
RGVjb2Rlcj4gU2NhbGFibGVJbWFnZURlY29kZXI6OmNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitSZWZQdHI8U2NhbGFibGVJbWFnZURl
Y29kZXI+IFNjYWxhYmxlSW1hZ2VEZWNvZGVyOjpjcmVhdGUoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBsZW5ndGhPZkxvbmdlc3RTaWduYXR1cmUgPSAxNDsgLy8gVG8gd2l0OiAiUklG
Rj8/Pz9XRUJQVlAiCiAgICAgY2hhciBjb250ZW50c1tsZW5ndGhPZkxvbmdlc3RTaWduYXR1cmVd
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2Nh
bGFibGVJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKaW5kZXggZDlmZGE3NzZmZDU4ZDg3Y2NlNTRlZjMw
NDQwN2NjYTRkZTA0N2YzNS4uMzAzM2FiMjZmMmJjODI5YmJhMDA1NzZlZGMzNDhhNGM3MzczMGFl
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2Nh
bGFibGVJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoK
IAogICAgIC8vIFJldHVybnMgbnVsbHB0ciBpZiB3ZSBjYW4ndCBzbmlmZiBhIHN1cHBvcnRlZCB0
eXBlIGZyb20gdGhlIHByb3ZpZGVkIGRhdGEgKHBvc3NpYmx5CiAgICAgLy8gYmVjYXVzZSB0aGVy
ZSBpc24ndCBlbm91Z2ggZGF0YSB5ZXQpLgotICAgIHN0YXRpYyBSZWZQdHI8U2NhbGFibGVJbWFn
ZURlY29kZXI+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlv
biwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIHN0YXRpYyBSZWZQdHI8U2NhbGFi
bGVJbWFnZURlY29kZXI+IGNyZWF0ZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRh
LCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogCiAgICAgYm9vbCBw
cmVtdWx0aXBseUFscGhhKCkgY29uc3QgeyByZXR1cm4gbV9wcmVtdWx0aXBseUFscGhhOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHAKaW5kZXggMjA1Mjc5NTUy
ODM2ZTA0NGRkN2MyYThlYTMyMTY4MmQ5MTc5MzhjMC4uOWI4YjRiNmQ1OGM3OGYzNTE3YmI2YmY1
MWEyYjY3ZTQ1YzU3MjU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
Q0RNRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9y
eS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgYm9vbCBNb2NrQ0RNRmFjdG9yeTo6c3VwcG9ydHNLZXlT
eXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0pCiAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdB
U0NJSUNhc2Uoa2V5U3lzdGVtLCAib3JnLndlYmtpdC5tb2NrIik7CiB9CiAKLXZvaWQgTW9ja0NE
TUZhY3Rvcnk6OmFkZEtleXNUb1Nlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCwgVmVjdG9y
PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJiBrZXlzKQordm9pZCBNb2NrQ0RNRmFjdG9y
eTo6YWRkS2V5c1RvU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVmPGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmIGtleXMpCiB7CiAgICAgYXV0byBhZGRSZXN1
bHQgPSBtX3Nlc3Npb25zLmFkZChpZCwgV1RGTW92ZShrZXlzKSk7CiAgICAgaWYgKGFkZFJlc3Vs
dC5pc05ld0VudHJ5KQpAQCAtNzQsNyArNzQsNyBAQCB2b2lkIE1vY2tDRE1GYWN0b3J5OjphZGRL
ZXlzVG9TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQsIFZlY3RvcjxSZWY8RnJhZ21lbgog
ICAgICAgICB2YWx1ZS5hcHBlbmQoV1RGTW92ZShrZXkpKTsKIH0KIAotVmVjdG9yPFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj4gTW9ja0NETUZhY3Rvcnk6OnJlbW92ZUtleXNGcm9tU2Vzc2lv
bldpdGhJRChjb25zdCBTdHJpbmcmIGlkKQorVmVjdG9yPFJlZjxjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4gTW9ja0NETUZhY3Rvcnk6OnJlbW92ZUtleXNGcm9tU2Vzc2lvbldpdGhJRChj
b25zdCBTdHJpbmcmIGlkKQogewogICAgIGF1dG8gaXQgPSBtX3Nlc3Npb25zLmZpbmQoaWQpOwog
ICAgIGlmIChpdCA9PSBtX3Nlc3Npb25zLmVuZCgpKQpAQCAtODMsNyArODMsNyBAQCBWZWN0b3I8
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBNb2NrQ0RNRmFjdG9yeTo6cmVtb3ZlS2V5c0Zy
b21TZXNzaW9uV2l0aElEKAogICAgIHJldHVybiBXVEZNb3ZlKGl0LT52YWx1ZSk7CiB9CiAKLWNv
bnN0IFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KiBNb2NrQ0RNRmFjdG9yeTo6
a2V5c0ZvclNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkgY29uc3QKK2NvbnN0IFZlY3Rv
cjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+KiBNb2NrQ0RNRmFjdG9yeTo6a2V5
c0ZvclNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkgY29uc3QKIHsKICAgICBhdXRvIGl0
ID0gbV9zZXNzaW9ucy5maW5kKGlkKTsKICAgICBpZiAoaXQgPT0gbV9zZXNzaW9ucy5lbmQoKSkK
QEAgLTIxMSw3ICsyMTEsNyBAQCBib29sIE1vY2tDRE06OnN1cHBvcnRzSW5pdERhdGEoY29uc3Qg
QXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkUwogICAgIHJldHVybiB0
cnVlOwogfQogCi1SZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gTW9ja0NETTo6c2FuaXRp
emVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QK
K1JlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBNb2NrQ0RNOjpzYW5pdGl6ZVJl
c3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewog
ICAgIGF1dG8gYnVmZmVyID0gcmVzcG9uc2UubWFrZUNvbnRpZ3VvdXMoKTsKICAgICBpZiAoIWNo
YXJhY3RlcnNBcmVBbGxBU0NJSShidWZmZXItPmRhdGEoKSwgcmVzcG9uc2Uuc2l6ZSgpKSkKQEAg
LTI3MCw5ICsyNzAsMTAgQEAgdm9pZCBNb2NrQ0RNSW5zdGFuY2U6OmluaXRpYWxpemVXaXRoQ29u
ZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXQKICAgICBjYWxsYmFjayhp
bml0aWFsaXplKCkpOwogfQogCi12b2lkIE1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2VydGlm
aWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgY2VydGlmaWNhdGUsIFN1Y2Nlc3ND
YWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBNb2NrQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRp
ZmljYXRlKFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCBT
dWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAgICBTdHJpbmdWaWV3IGNlcnRpZmljYXRl
U3RyaW5nVmlldyhjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBjZXJ0aWZp
Y2F0ZS0+c2l6ZSgpKTsKKyAgICBhdXRvIGNvbnRpZ3VvdXNDZXJ0aWZpY2F0ZSA9IGNlcnRpZmlj
YXRlLT5tYWtlQ29udGlndW91cygpOworICAgIFN0cmluZ1ZpZXcgY2VydGlmaWNhdGVTdHJpbmdW
aWV3KGNvbnRpZ3VvdXNDZXJ0aWZpY2F0ZS0+ZGF0YSgpLCBjZXJ0aWZpY2F0ZS0+c2l6ZSgpKTsK
IAogICAgIGNhbGxiYWNrKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoY2VydGlmaWNhdGVTdHJpbmdW
aWV3LCAidmFsaWQiKSA/IFN1Y2NlZWRlZCA6IEZhaWxlZCk7CiB9CkBAIC0yOTgsNyArMjk5LDcg
QEAgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6TW9ja0NETUluc3RhbmNlU2Vzc2lvbihXZWFrUHRy
PE1vY2tDRE1JbnN0YW5jZT4mJiBpbnN0YW4KIHsKIH0KIAotdm9pZCBNb2NrQ0RNSW5zdGFuY2VT
ZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRv
bVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0
RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIE1vY2tDRE1JbnN0YW5jZVNl
c3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9t
U3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBNb2NrQ0RNRmFj
dG9yeSogZmFjdG9yeSA9IG1faW5zdGFuY2UgPyBtX2luc3RhbmNlLT5mYWN0b3J5KCkgOiBudWxs
cHRyOwogICAgIGlmICghZmFjdG9yeSkgewpAQCAtMzI0LDcgKzMyNSw3IEBAIHZvaWQgTW9ja0NE
TUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUs
IGNvbnN0IEF0b21TCiAgICAgY2FsbGJhY2soU2hhcmVkQnVmZmVyOjpjcmVhdGUobGljZW5zZS5k
YXRhKCksIGxpY2Vuc2UubGVuZ3RoKCkpLCBzZXNzaW9uSUQsIGZhbHNlLCBTdWNjZXNzVmFsdWU6
OlN1Y2NlZWRlZCk7CiB9CiAKLXZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGlj
ZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFj
aykKK3ZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJp
bmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUsIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAg
ICBNb2NrQ0RNRmFjdG9yeSogZmFjdG9yeSA9IG1faW5zdGFuY2UgPyBtX2luc3RhbmNlLT5mYWN0
b3J5KCkgOiBudWxscHRyOwogICAgIGlmICghZmFjdG9yeSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrQ0RNRmFjdG9yeS5oCmluZGV4IGQ5NmMxNTZlZTRkMjc5MWI4YjA5OThkYWY5NDBlYzc1
Mzc4MDdiYzMuLjMzZTMxMWMyODY1MzViMDkzZjEyYzFkODJkOTZjZDhiMjdiMWYzMTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgKQEAgLTc3LDkgKzc3LDkgQEAgcHVi
bGljOgogCiAgICAgYm9vbCBoYXNTZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpIHsgcmV0
dXJuIG1fc2Vzc2lvbnMuY29udGFpbnMoaWQpOyB9CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uV2l0
aElEKGNvbnN0IFN0cmluZyYgaWQpIHsgbV9zZXNzaW9ucy5yZW1vdmUoaWQpOyB9Ci0gICAgdm9p
ZCBhZGRLZXlzVG9TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQsIFZlY3RvcjxSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiYpOwotICAgIGNvbnN0IFZlY3RvcjxSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+KiBrZXlzRm9yU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSBj
b25zdDsKLSAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiByZW1vdmVLZXlz
RnJvbVNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCk7CisgICAgdm9pZCBhZGRLZXlzVG9T
ZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQsIFZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+JiYpOworICAgIGNvbnN0IFZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+KiBrZXlzRm9yU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSBj
b25zdDsKKyAgICBWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiByZW1v
dmVLZXlzRnJvbVNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCk7CiAKIHByaXZhdGU6CiAg
ICAgTW9ja0NETUZhY3RvcnkoKTsKQEAgLTk2LDcgKzk2LDcgQEAgcHJpdmF0ZToKICAgICBib29s
IG1fY2FuQ3JlYXRlSW5zdGFuY2VzIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9zdXBwb3J0c1NlcnZl
ckNlcnRpZmljYXRlcyB7IHRydWUgfTsKICAgICBib29sIG1fc3VwcG9ydHNTZXNzaW9ucyB7IHRy
dWUgfTsKLSAgICBIYXNoTWFwPFN0cmluZywgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4+IG1fc2Vzc2lvbnM7CisgICAgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxSZWY8Y29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBtX3Nlc3Npb25zOwogfTsKIAogY2xhc3MgTW9ja0NE
TSA6IHB1YmxpYyBDRE1Qcml2YXRlIHsKQEAgLTEyMiw3ICsxMjIsNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSBjb25zdCBmaW5hbDsKICAgICBib29s
IHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHN1cHBvcnRzSW5pdERh
dGEoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25z
dCBmaW5hbDsKLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNw
b25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgUmVm
UHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8
U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIAog
ICAgIFdlYWtQdHI8TW9ja0NETUZhY3Rvcnk+IG1fZmFjdG9yeTsKQEAgLTEzOSw3ICsxMzksNyBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlv
blR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5cGU6Ok1vY2s7IH0K
ICAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBNZWRpYUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb24mLCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lz
dGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCBzZXRTZXJ2ZXJD
ZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNr
JiYpIGZpbmFsOworICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lk
IHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgY29uc3QgU3Ry
aW5nJiBrZXlTeXN0ZW0oKSBjb25zdCBmaW5hbDsKICAgICBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNz
aW9uPiBjcmVhdGVTZXNzaW9uKCkgZmluYWw7CkBAIC0xNTQsOCArMTU0LDggQEAgcHVibGljOgog
ICAgIE1vY2tDRE1JbnN0YW5jZVNlc3Npb24oV2Vha1B0cjxNb2NrQ0RNSW5zdGFuY2U+JiYpOwog
CiBwcml2YXRlOgotICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0
b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5p
dERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUxpY2Vuc2Uo
Y29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
LCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0TGljZW5z
ZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8Y29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZp
bmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwg
UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFj
ayYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZv
aWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZp
bmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5
cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuaAppbmRl
eCAwMmM1Y2QzN2FlNTQ4MDJmNmQwYzhkY2NjYjBiYTgwY2YzMzg4YzMzLi5jMDljYTE1NGMyYzkz
ODc5MGNjYjBkMzc2Y2U1MmVkOWU2OWYzYjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgKQEAgLTY2LDcgKzY2
LDcgQEAgcHJpdmF0ZToKICAgICBSZW1vdGVDRE1JbnN0YW5jZVByb3h5KFdlYWtQdHI8UmVtb3Rl
Q0RNUHJveHk+JiYsIFJlZjxXZWJDb3JlOjpDRE1JbnN0YW5jZT4mJiwgVW5pcXVlUmVmPFJlbW90
ZUNETUluc3RhbmNlQ29uZmlndXJhdGlvbj4mJiwgUmVtb3RlQ0RNSW5zdGFuY2VJZGVudGlmaWVy
KTsKIAogICAgIC8vIENETUluc3RhbmNlQ2xpZW50Ci0gICAgdm9pZCB1bnJlcXVlc3RlZEluaXRp
YWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKKyAgICB2b2lkIHVucmVxdWVzdGVkSW5pdGlhbGl6
YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPGNvbnN0IFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2
ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKaW5kZXggN2JhMTY2
NGRmMTQ4ZjJkNGY2NTQzNjE0ZTMxNDA0MGFiOTIyNzllZi4uZDllYTg1ZWVkNDZmMzY2ODQyZjQ2
ODllYzNlNGFlOTczNjFmZTY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwCkBA
IC03MCw3ICs3MCw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnJlcXVl
c3RMaWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUsIEF0b21TdHJpbmcKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIG1fc2Vzc2lvbi0+cmVxdWVzdExpY2Vuc2UodHlwZSwgaW5pdERhdGFUeXBl
LCBpbml0RGF0YS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpLCBbY29tcGxldGlvbiA9IFdURk1v
dmUoY29tcGxldGlvbildIChSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBj
b25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1J
bnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgIG1f
c2Vzc2lvbi0+cmVxdWVzdExpY2Vuc2UodHlwZSwgaW5pdERhdGFUeXBlLCBpbml0RGF0YS5idWZm
ZXIoKS5yZWxlYXNlTm9uTnVsbCgpLCBbY29tcGxldGlvbiA9IFdURk1vdmUoY29tcGxldGlvbild
IChSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5jZVNl
c3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewogICAgICAgICBjb21wbGV0
aW9uKElQQzo6U2hhcmVkQnVmZmVyQ29weShXVEZNb3ZlKG1lc3NhZ2UpKSwgc2Vzc2lvbklkLCBu
ZWVkc0luZGl2aWR1YWxpemF0aW9uLCBzdWNjZWVkZWQgPT0gQ0RNSW5zdGFuY2VTZXNzaW9uOjpT
dWNjZWVkZWQpOwogICAgIH0pOwogfQpAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHk6OmNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCwgQ2xvc2VTCiAKIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnJlbW92ZVNl
c3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSB0eXBlLCBSZW1v
dmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYgY29tcGxldGlvbikKIHsKLSAgICBtX3Nlc3Npb24tPnJl
bW92ZVNlc3Npb25EYXRhKHNlc3Npb25JZCwgdHlwZSwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNv
bXBsZXRpb24pXSAoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0
dXNlcywgc3RkOjpvcHRpb25hbDxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiYgZXhwaXJl
ZFNlc3Npb25zRGF0YSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVk
KSBtdXRhYmxlIHsKKyAgICBtX3Nlc3Npb24tPnJlbW92ZVNlc3Npb25EYXRhKHNlc3Npb25JZCwg
dHlwZSwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoQ0RNSW5zdGFuY2VTZXNz
aW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0dXNlcywgc3RkOjpvcHRpb25hbDxSZWY8Y29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiYgZXhwaXJlZFNlc3Npb25zRGF0YSwgQ0RNSW5z
dGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKICAgICAgICAg
c3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+IGV4cGlyZWRTZXNzaW9uRGF0YVJl
ZmVyZW5jZTsKICAgICAgICAgaWYgKGV4cGlyZWRTZXNzaW9uc0RhdGEpCiAgICAgICAgICAgICBl
eHBpcmVkU2Vzc2lvbkRhdGFSZWZlcmVuY2UgPSBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoV1RGTW92
ZSgqZXhwaXJlZFNlc3Npb25zRGF0YSkpOwpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgUmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnVwZGF0ZUtleVN0YXR1c2VzKEtleVN0YXR1c1ZlY3Rv
ciYmIGtleVN0YXR1CiAgICAgZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy0+Y29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6VXBkYXRlS2V5U3RhdHVz
ZXMoV1RGTW92ZShrZXlTdGF0dXNlcykpLCBtX2lkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSB0eXBl
LCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQordm9pZCBSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eTo6c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUgdHlwZSwgUmVm
PGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkKIHsKICAgICBpZiAoIW1f
Y2RtKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oCmluZGV4IGZl
NzMwOTcxMzFlMGJiMjBhNTAwMWUxNTAxNjAyZDY1MTg2YjMwOTAuLmJmMjczZWFlZGU2MTRjMjdi
YTIwM2NiNjIyOWFjZmY2MzI0NTZiYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5oCkBA
IC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBDRE1JbnN0YW5jZVNlc3Npb25DbGll
bnQKICAgICB2b2lkIHVwZGF0ZUtleVN0YXR1c2VzKEtleVN0YXR1c1ZlY3RvciYmKSBmaW5hbDsK
LSAgICB2b2lkIHNlbmRNZXNzYWdlKFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlLCBSZWY8V2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSBmaW5hbDsKKyAgICB2b2lkIHNl
bmRNZXNzYWdlKFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlLCBSZWY8Y29uc3QgV2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSBmaW5hbDsKICAgICB2b2lkIHNlc3Npb25J
ZENoYW5nZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlz
cGxheUlEKCkgZmluYWwgeyByZXR1cm4gbV9kaXNwbGF5SUQ7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKaW5kZXggZjdjYjZhNjNl
YjkzM2FiZDRkNDUzYTIyYWIyOTRmMTMwMzIzMmIwNi4uYTA0NDcyODU4Y2QxMjM5ZWM4YmFhY2Rj
MmJhNDg1ZmExOGNkYzRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNUHJveHkuY3BwCkBAIC02OCw3ICs2OCw3IEBAIGJvb2wgUmVtb3RlQ0RNUHJv
eHk6OnN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgY29uc3QgRnJhZ21l
bnRlZFNoCiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c3VwcG9ydHNJbml0RGF0YSh0eXBlLCBkYXRh
KTsKIH0KIAotUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFJlbW90ZUNETVByb3h5Ojpz
YW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKQor
UmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IFJlbW90ZUNETVByb3h5OjpzYW5p
dGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKQogewog
ICAgIHJldHVybiBtX3ByaXZhdGUtPnNhbml0aXplUmVzcG9uc2UocmVzcG9uc2UpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaAppbmRleCAz
YjY2Yzc3NTc4NzA2OWU5NzZlZTA2NGY5NmZmMDdjMGY3MTJhOTBiLi5lY2Q2ODlhNjczMTc3MDlk
YmRmZDMwMTg0ZTQwNGE2YTM3OWM5YzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAg
UmVtb3RlQ0RNRmFjdG9yeVByb3h5KiBmYWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9mYWN0b3J5
LmdldCgpOyB9CiAKICAgICBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYs
IGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKLSAgICBSZWZQdHI8V2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSk7CisgICAgUmVmUHRyPGNvbnN0
IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3Qg
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpOwogICAgIHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCk7
CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFy
ZWRCdWZmZXJDb3B5LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZl
ckNvcHkuY3BwCmluZGV4IDdhYWRmOTJlMzYxZGVmYWM1MDhlYmQ0OGQ3ZDA3NTg4YjRlNDdkNDYu
LjYwNjIzNGRlMDRmMWE2MTYyM2YwMjQ2MjNhMWMyYWMxOWEwNzQ4NzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuY3BwCkBAIC00MSw3ICs0MSw3
IEBAIHZvaWQgU2hhcmVkQnVmZmVyQ29weTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiAKIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4gU2hhcmVkQnVmZmVyQ29weTo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
OworICAgIFJlZlB0cjxjb25zdCBTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0
dXJuIHsgSVBDOjpTaGFyZWRCdWZmZXJDb3B5KFdURk1vdmUoYnVmZmVyKSkgfTsKQEAgLTUxLDcg
KzUxLDE0IEBAIGNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlckNvcHk6OmRhdGEoKSBjb25zdAog
ewogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVy
biBkb3duY2FzdDxTaGFyZWRCdWZmZXI+KG1fYnVmZmVyLmdldCgpKS0+ZGF0YSgpOworICAgIHJl
dHVybiBkb3duY2FzdDxjb25zdCBTaGFyZWRCdWZmZXI+KG1fYnVmZmVyLmdldCgpKS0+ZGF0YSgp
OworfQorCitSZWY8Y29uc3QgU2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXJDb3B5OjpzYWZlQnVm
ZmVyKCkgY29uc3QKK3sKKyAgICBpZiAobV9idWZmZXIpCisgICAgICAgIHJldHVybiBidWZmZXIo
KS5yZWxlYXNlTm9uTnVsbCgpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1No
YXJlZEJ1ZmZlckNvcHkuaAppbmRleCAzNzBiODMyOGQ3NmM5YzNmNzcwMDQ3MzVhZDM1OWFlNmQz
ZWQ2MDkyLi5jODdkNDBiYzQzOWFiOTM3MDgzMWJiNzVmYzk2ZmQ1NzgyOTcwYzdjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCkBAIC00MCwxNiAr
NDAsMTggQEAgY2xhc3MgU2hhcmVkQnVmZmVyQ29weSB7CiBwdWJsaWM6CiAgICAgU2hhcmVkQnVm
ZmVyQ29weSgpID0gZGVmYXVsdDsKIAotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckNvcHkoUmVm
UHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgIGV4cGxp
Y2l0IFNoYXJlZEJ1ZmZlckNvcHkoUmVmUHRyPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkg
eyB9CisgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQ29weShSZWY8Y29uc3QgV2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoV1RGTW92
ZShidWZmZXIpKSB7IH0KICAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgOiBtX2J1ZmZlcihX
VEZNb3ZlKGJ1ZmZlcikpIHsgfQotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckNvcHkoUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCisgICAgZXhwbGljaXQgU2hhcmVkQnVm
ZmVyQ29weShSZWY8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAg
ICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQogICAgIGV4cGxpY2l0IFNoYXJlZEJ1
ZmZlckNvcHkoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIDog
bV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KICAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJD
b3B5KGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKLSAgICAg
ICAgOiBtX2J1ZmZlcihjb25zdF9jYXN0PFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
PigmYnVmZmVyKSkgeyB9CisgICAgICAgIDogbV9idWZmZXIoJmJ1ZmZlcikgeyB9CiAKICAgICBz
aXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyID8gbV9idWZmZXItPnNpemUoKSA6
IDA7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVm
ZmVyLT5pc0VtcHR5KCkgOiB0cnVlOyB9CkBAIC01NywxNSArNTksMTUgQEAgcHVibGljOgogICAg
IC8vIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBtdXN0IG9ubHkgYmUgdXNlZCBvbiB0aGUgcmVjZWl2
ZXIncyBJUEMgc2lkZS4KICAgICAvLyBJdCByZWxpZXMgb24gYW4gaW1wbGVtZW50YXRpb24gZGV0
YWlsIHRoYXQgbWFrZXMgbV9idWZmZXIgYmVjb21lcyBhIGNvbnRpZ3VvdXMgU2hhcmVkQnVmZmVy
CiAgICAgLy8gb25jZSBpdCdzIGRlc2VyaWFsaXNlZCBvdmVyIElQQy4KLSAgICBSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+KG1fYnVmZmVyLmdldCgpKTsgfQotICAgIFJlZjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IHNhZmVCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IGJ1ZmZl
cigpLnJlbGVhc2VOb25OdWxsKCkgOiBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOyB9
CisgICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyKCkgY29uc3Qg
eyByZXR1cm4gZG93bmNhc3Q8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyPihtX2J1ZmZlci5n
ZXQoKSk7IH0KKyAgICBSZWY8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBzYWZlQnVmZmVy
KCkgY29uc3Q7CiAgICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwogCiAgICAgdm9pZCBl
bmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gc3Rk
OjpvcHRpb25hbDxTaGFyZWRCdWZmZXJDb3B5PiBkZWNvZGUoRGVjb2RlciYpOwogCiBwcml2YXRl
OgotICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2J1ZmZlcjsK
KyAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9idWZm
ZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDk5ODdiMWE4NDc2OGYyNzM4NjNkYzBiMWE1
NTM5MTUzYzQ5ODE3ODMuLjE2M2I2YmM1NGMxOWJiMDQ3OWI3NmIxOTAyYTY2MzFkNjJkZDk5OGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApA
QCAtMzExMSw2ICszMTExLDYyIEBAIHN0ZDo6b3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+IEFy
Z3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvCiAgICAgcmV0dXJu
IGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOwogfQogCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRy
PGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IFJlZlB0cjxjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIu
Z2V0KCkpOworfQorCitzdGQ6Om9wdGlvbmFsPFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2Rlciwg
YnVmZmVyKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBXVEZN
b3ZlKGJ1ZmZlcik7Cit9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWY8Y29uc3QgV2ViQ29yZTo6
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3Qg
UmVmPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit7Cisg
ICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5wdHIoKSk7Cit9CisKK3N0ZDo6
b3B0aW9uYWw8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVy
PFJlZjxjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQoreworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBp
ZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpIHx8ICFidWZmZXIpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2VOb25O
dWxsKCk7Cit9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZWZQdHI8Y29uc3QgV2ViQ29yZTo6U2hh
cmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWZQdHI8Y29uc3Qg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZl
cihlbmNvZGVyLCBidWZmZXIuZ2V0KCkpOworfQorCitzdGQ6Om9wdGlvbmFsPFJlZlB0cjxjb25z
dCBTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZlB0cjxjb25zdCBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1
ZmZlcikpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gV1RGTW92
ZShidWZmZXIpOworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPGNvbnN0IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPGNvbnN0IFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVTaGFyZWRCdWZmZXIo
ZW5jb2RlciwgYnVmZmVyLnB0cigpKTsKK30KKworc3RkOjpvcHRpb25hbDxSZWY8Y29uc3QgU2hh
cmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWY8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVy
Pj46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlcjsKKyAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpIHx8
ICFidWZmZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gYnVm
ZmVyLnJlbGVhc2VOb25OdWxsKCk7Cit9CisKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNF
KSAmJiBQTEFURk9STShDT0NPQSkKIHN0YXRpYyBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlIHRy
eUNvbnZlcnRUb1NoYXJlYWJsZVJlc291cmNlSGFuZGxlKGNvbnN0IFNjcmlwdEJ1ZmZlciYgc2Ny
aXB0KQogewpAQCAtMzE4MCw3ICszMjM2LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6
OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGUKIHsK
ICAgICBlbmNvZGVyIDw8IG1lc3NhZ2UuZmlyc3Q7CiAKLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gbWVzc2FnZURhdGEgPSBtZXNzYWdlLnNlY29uZC5jb3B5UmVmKCk7CisgICAg
UmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1lc3NhZ2VEYXRhID0gbWVzc2Fn
ZS5zZWNvbmQuY29weVJlZigpOwogICAgIGVuY29kZXIgPDwgbWVzc2FnZURhdGE7CiB9CiAKQEAg
LTMxOTAsNyArMzI0Niw3IEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNz
aW9uOjpNZXNzYWdlPiAgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZSh0eXBlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgUmVmUHRyPGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGJ1
ZmZlcikgfHwgIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCA2ZTI3YTc4NzIw
MjE3MWJiY2VkYmI2NDgzOTIwYTdlNzliZDU4MGJmLi4wNDQzNTllOTg0ZTA5MDQzMTU2NTUzZTZh
ZmZiMGZiM2E1YzA5MTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuaApAQCAtNzcyLDYgKzc3MiwyNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVu
dENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiB7CiAgICAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8UmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7CiB9Owog
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZlB0cjxjb25zdCBXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVy
JiwgY29uc3QgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Jik7
CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmUHRyPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxSZWY8Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZjxjb25zdCBX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFJlZjxjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gZGVjb2RlKERl
Y29kZXImKTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmUHRyPGNv
bnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5j
b2RlciYsIGNvbnN0IFJlZlB0cjxjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Jik7CisgICAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmUHRyPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+
IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVy
PFJlZjxjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiB7CisgICAgc3RhdGljIHZvaWQgZW5j
b2RlKEVuY29kZXImLCBjb25zdCBSZWY8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYpOwor
ICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2Rl
ciYsIGNvbnN0IFdlYkNvcmU6OlNjcmlwdEJ1ZmZlciYpOwogICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlNjcmlwdEJ1ZmZlcj4gZGVjb2RlKERlY29kZXImKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcAppbmRleCBiNjA3YWNlODM4ZTA0
YmNlMWE2YWVlNGRhNTY1NTllMDk2OTgzOThlLi4yZGIxZjcyMzBiZGYxYmRlNjMxMzE3MTE0YmNj
MzJmNWQ1MTUxN2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0
UmVzdWx0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3Vs
dERhdGEuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFdlYkhpdFRlc3RSZXN1bHREYXRhOjpXZWJIaXRU
ZXN0UmVzdWx0RGF0YShjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiBoaXRUZXN0CiAgICAg
ICAgIHJldHVybjsKIAogICAgIGlmIChJbWFnZSogaW1hZ2UgPSBoaXRUZXN0UmVzdWx0LmltYWdl
KCkpIHsKLSAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGlt
YWdlLT5kYXRhKCk7CisgICAgICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgpOwogICAgICAgICBpZiAoYnVmZmVyKSB7CiAgICAgICAg
ICAgICBpbWFnZVNoYXJlZE1lbW9yeSA9IFdlYktpdDo6U2hhcmVkTWVtb3J5Ojpjb3B5QnVmZmVy
KCpidWZmZXIpOwogICAgICAgICAgICAgaW1hZ2VTaXplID0gYnVmZmVyLT5zaXplKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAKaW5kZXgg
YzI4ZmU2NWYwY2YxNjQzOTk4MThhY2EzMmY5ODFjYzc3OGYxZTkxOS4uZWEzY2U4NzZmZmNmMzBh
MWYwNDAxNTVjYmY2YjgzOTdkNDU3M2ZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgUmVt
b3RlQ0RNOjpsb2FkQW5kSW5pdGlhbGl6ZSgpCiAgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1Qcm94eTo6TG9h
ZEFuZEluaXRpYWxpemUoKSwgbV9pZGVudGlmaWVyKTsKIH0KIAotUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IFJlbW90ZUNETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29uc3QKK1JlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBSZW1vdGVDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBjaGVjayB3aWxsIGJl
IGRvbmUsIGxhdGVyLCBpbnNpZGUgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnVwZGF0
ZUxpY2Vuc2UoKS4KICAgICByZXR1cm4gcmVzcG9uc2UuY29weSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmgKaW5kZXggOGM0NTRlYjgzZTU5OTRh
OGU0ZDU5MmQ1MWRmOTFmZjliNTIzY2JlZi4uOWVmY2Q0Yzg4N2NkMWIwMmI4MzhlNjQ2NTA4YTU1
MjIwMWMwNGQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUNETS5oCkBAIC01NCw3ICs1NCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBkaXN0aW5jdGl2
ZUlkZW50aWZpZXJzQXJlVW5pcXVlUGVyT3JpZ2luQW5kQ2xlYXJhYmxlKGNvbnN0IFdlYkNvcmU6
OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKSBjb25zdCBmaW5hbDsKICAgICBSZWZQdHI8V2Vi
Q29yZTo6Q0RNSW5zdGFuY2U+IGNyZWF0ZUluc3RhbmNlKCkgZmluYWw7CiAgICAgdm9pZCBsb2Fk
QW5kSW5pdGlhbGl6ZSgpIGZpbmFsOwotICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+
IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwogCiAgICAgVmVj
dG9yPEF0b21TdHJpbmc+IHN1cHBvcnRlZEluaXREYXRhVHlwZXMoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX2NvbmZpZ3VyYXRpb24uc3VwcG9ydGVkSW5pdERhdGFUeXBlczsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
LmNwcAppbmRleCA3NWQ1ZTVhNzk1MTRkYmMzYWFhYzAwYjk4ODRhNTdkYWMxOThmOWY2Li5iYmRm
YTMxMWVjNTYwYWVmZDhmYTE4M2IxZDBiMzViN2FiYWVkN2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmNwcApA
QCAtNzgsNyArNzgsNyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlOjppbml0aWFsaXplV2l0aENv
bmZpZ3VyYXRpb24oY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQwogICAgIG1fZmFjdG9yeS0+
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVByb3h5OjpJbml0aWFsaXplV2l0aENvbmZpZ3VyYXRp
b24oY29uZmlndXJhdGlvbiwgZGlzdGluY3RpdmVJZGVudGlmaWVycywgcGVyc2lzdGVudFN0YXRl
KSwgV1RGTW92ZShjYWxsYmFjayksIG1faWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlQ0RN
SW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3Zv
aWQgUmVtb3RlQ0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxjb25zdCBXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJh
Y2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1fZmFjdG9yeSkgewogICAgICAgICBjYWxsYmFj
ayhGYWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZS5oCmluZGV4IDJjNzg1MWU0NDBiMDhhNTJhMmFlNzBkYTdlNDE4
ODgyZTNjNjE0MzkuLjEwYTdiYzhmODY1ZjVkYWJmMDM1NTQ5ZWM5ZmY5NTQ3MTI1MWMwNjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHJpdmF0ZToKIAogICAgIEltcGxlbWVudGF0
aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1l
bnRhdGlvblR5cGU6OlJlbW90ZTsgfQogICAgIHZvaWQgaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0
aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mLCBBbGxvd0Rpc3Rp
bmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNjZXNzQ2FsbGJhY2sm
JikgZmluYWw7Ci0gICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8V2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZv
aWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHNldFN0b3Jh
Z2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgY29uc3QgU3RyaW5nJiBrZXlT
eXN0ZW0oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24ua2V5U3lzdGVtOyB9
CiAgICAgUmVmUHRyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigp
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCmluZGV4IDhiZWNkNTliNWViMzdl
MGQzYTUxNDUzOGYzNzM4MWQ3Zjc3ZDhjY2UuLjhkZjkyZWQwNzUxNDFiMDQ4YTM0N2RhNTg1Y2Ex
ZGRkZDBhY2U0OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAKQEAgLTQ5LDcgKzQ5
LDcgQEAgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24o
V2Vha1B0cjxSZW1vdGVDRE1GYWN0b3J5PiYmIGYKIHsKIH0KIAotdm9pZCBSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUsIGNvbnN0IEF0b21T
dHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERh
dGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNl
c3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUsIGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERh
dGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIGlmICghbV9mYWN0b3J5KSB7
CiAgICAgICAgIGNhbGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGVtcHR5U3RyaW5nKCks
IGZhbHNlLCBGYWlsZWQpOwpAQCAtNjUsNyArNjUsNyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgdHlwZSwgY29uc3QgQXRvbVN0cmlu
ZwogICAgIH0sIG1faWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSB0
eXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0
ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6dXBk
YXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUgdHlwZSwgUmVm
PGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVD
YWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIGlmICghbV9mYWN0b3J5KSB7CiAgICAgICAgIGNh
bGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBG
YWlsZWQpOwpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zCiAgICAg
fQogCiAgICAgbV9mYWN0b3J5LT5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5z
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5
OjpSZW1vdmVTZXNzaW9uRGF0YShzZXNzaW9uSWQsIHR5cGUpLCBbY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0gKEtleVN0YXR1c1ZlY3RvciYmIGNoYW5nZWRLZXlzLCBzdGQ6Om9wdGlvbmFs
PElQQzo6U2hhcmVkQnVmZmVyQ29weT4mJiBtZXNzYWdlLCBib29sIHN1Y2NlZWRlZCkgbXV0YWJs
ZSB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBy
ZWFsTWVzc2FnZSA9IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxSZWY8Y29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IHJlYWxNZXNzYWdlID0gc3RkOjpudWxsb3B0Owog
ICAgICAgICBpZiAobWVzc2FnZSAmJiBtZXNzYWdlLnZhbHVlKCkuYnVmZmVyKCkpCiAgICAgICAg
ICAgICByZWFsTWVzc2FnZSA9IG1lc3NhZ2UudmFsdWUoKS5idWZmZXIoKS5yZWxlYXNlTm9uTnVs
bCgpOwogICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGNoYW5nZWRLZXlzKSwgV1RGTW92ZShyZWFs
TWVzc2FnZSksIHN1Y2NlZWRlZCA/IFN1Y2NlZWRlZCA6IEZhaWxlZCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb24uaAppbmRleCA0ZTRjZDJjMDA1YzZiMDA2NWY5Y2RiMTg4YzRiY2UwYjViZmE2NjAx
Li5jNjI1MmZhNzg1MGQ4NzBjYWUxYTkyNmY3MzY4OTMzY2QwOWM4NTVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uLmgKQEAgLTU5LDggKzU5LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0
Q2xpZW50KFdlYWtQdHI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50PiYmIGNsaWVu
dCkgZmluYWwgeyBtX2NsaWVudCA9IFdURk1vdmUoY2xpZW50KTsgfQogICAgIHZvaWQgY2xlYXJD
bGllbnQoKSBmaW5hbCB7IG1fY2xpZW50ID0gbnVsbHB0cjsgfQotICAgIHZvaWQgcmVxdWVzdExp
Y2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFj
ayYmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9u
SWQsIExpY2Vuc2VUeXBlLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBy
ZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVz
dExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVm
PGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vu
c2VDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5n
JiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOwog
ICAgIHZvaWQgbG9hZFNlc3Npb24oTGljZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklk
LCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAg
ICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgQ2xvc2VTZXNzaW9u
Q2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Jl
bW90ZUltYWdlRGVjb2RlckFWRi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVJbWFnZURlY29kZXJBVkYuaAppbmRleCA5YzA4ODE2MWVkZGJmMjM0MGY4N2EwYmI5
NzM0MTM3ZWE3ZTNkNzEzLi5hNTRjZTk2ZGFhMTc1ZmU0YTIyNmU3OWQwYzFlOGNkMTVmMWUxYTFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUlt
YWdlRGVjb2RlckFWRi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGIGZpbmFsCiAgICAgOiBwdWJsaWMgV2ViQ29yZTo6SW1hZ2VEZWNvZGVyCiAg
ICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IGNyZWF0ZShSZW1vdGVJ
bWFnZURlY29kZXJBVkZNYW5hZ2VyJiBtYW5hZ2VyLCBjb25zdCBXZWJDb3JlOjpJbWFnZURlY29k
ZXJJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKKyAgICBzdGF0aWMgUmVmPFJlbW90ZUltYWdlRGVj
b2RlckFWRj4gY3JlYXRlKFJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXImIG1hbmFnZXIsIGNv
bnN0IFdlYkNvcmU6OkltYWdlRGVjb2RlcklkZW50aWZpZXImIGlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1v
dGVJbWFnZURlY29kZXJBVkYobWFuYWdlciwgaWRlbnRpZmllciwgbWltZVR5cGUpKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUlt
YWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcAppbmRleCBiZWRkZWNiYjA3NGQz
NDEyYTliZTkzY2JjZDU5YWUxOTI0N2YyYjRhLi4xODRmZWQ3YWFkMWVkOThhMzczYzc0YzhiYzUx
YWJjNTNiNDg0NjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHAKQEAg
LTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCi1SZWZQdHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBSZW1vdGVJbWFnZURlY29kZXJB
VkZNYW5hZ2VyOjpjcmVhdGVJbWFnZURlY29kZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0
YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorUmVmUHRy
PFJlbW90ZUltYWdlRGVjb2RlckFWRj4gUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlcjo6Y3Jl
YXRlSW1hZ2VEZWNvZGVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICBzdGQ6Om9w
dGlvbmFsPEltYWdlRGVjb2RlcklkZW50aWZpZXI+IGltYWdlRGVjb2RlcklkZW50aWZpZXI7CiAg
ICAgaWYgKCFlbnN1cmVHUFVQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3lu
YyhNZXNzYWdlczo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OkNyZWF0ZURlY29kZXIoSVBD
OjpTaGFyZWRCdWZmZXJDb3B5KGRhdGEpLCBtaW1lVHlwZSksIE1lc3NhZ2VzOjpSZW1vdGVJbWFn
ZURlY29kZXJBVkZQcm94eTo6Q3JlYXRlRGVjb2Rlcjo6UmVwbHkoaW1hZ2VEZWNvZGVySWRlbnRp
ZmllciksIDApKQpAQCAtNDgsNyArNDgsNyBAQCBSZWZQdHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZG
PiBSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyOjpjcmVhdGVJbWFnZURlY29kZXIoRgogICAg
IGlmICghaW1hZ2VEZWNvZGVySWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICBhdXRvIHJlbW90ZUltYWdlRGVjb2RlciA9IFJlbW90ZUltYWdlRGVjb2RlckFWRjo6Y3Jl
YXRlKCp0aGlzLCAqaW1hZ2VEZWNvZGVySWRlbnRpZmllciwgZGF0YSwgbWltZVR5cGUpOworICAg
IGF1dG8gcmVtb3RlSW1hZ2VEZWNvZGVyID0gUmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpjcmVhdGUo
KnRoaXMsICppbWFnZURlY29kZXJJZGVudGlmaWVyLCBtaW1lVHlwZSk7CiAgICAgbV9yZW1vdGVJ
bWFnZURlY29kZXJzLmFkZCgqaW1hZ2VEZWNvZGVySWRlbnRpZmllciwgcmVtb3RlSW1hZ2VEZWNv
ZGVyKTsKIAogICAgIHJldHVybiByZW1vdGVJbWFnZURlY29kZXI7CkBAIC0xMDcsNyArMTA3LDcg
QEAgdm9pZCBSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyOjpzZXRVc2VHUFVQcm9jZXNzKGJv
b2wgdXNlR1BVUHJvY2VzcykKICAgICBJbWFnZURlY29kZXI6Omluc3RhbGxGYWN0b3J5KHsKICAg
ICAgICAgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpzdXBwb3J0c01lZGlhVHlwZSwKICAgICAgICAg
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGOjpjYW5EZWNvZGVUeXBlLAotICAgICAgICBbdGhpc10oRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFP
cHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uKSB7CisgICAgICAgIFt0aGlzXShjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9w
dGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pIHsKICAgICAgICAgICAgIHJldHVybiBjcmVhdGVJbWFnZURlY29kZXIoZGF0YSwgbWltZVR5
cGUsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAgICAgICAgIH0K
ICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmgKaW5kZXggMzYxOGFmZDEy
MDk4YjU1NzZiNGRkNGZmYmYzYzA2ZmJhODQyYTc2NC4uOTkyZWQyMWE0NzJiZGI1N2FkMWQ1ZTFl
MjViZDZkMTg4NWEyOTI5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmgKQEAg
LTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIEdQVVByb2Nlc3NDb25uZWN0aW9uJiBlbnN1cmVH
UFVQcm9jZXNzQ29ubmVjdGlvbigpOwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxSZW1vdGVJbWFn
ZURlY29kZXJBVkY+IGNyZWF0ZUltYWdlRGVjb2RlcihXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBXZWJDb3JlOjpBbHBoYU9wdGlv
biwgV2ViQ29yZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIFJlZlB0cjxSZW1v
dGVJbWFnZURlY29kZXJBVkY+IGNyZWF0ZUltYWdlRGVjb2Rlcihjb25zdCBXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBXZWJDb3Jl
OjpBbHBoYU9wdGlvbiwgV2ViQ29yZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogCiAg
ICAgLy8gR1BVUHJvY2Vzc0Nvbm5lY3Rpb246OkNsaWVudC4KICAgICB2b2lkIGdwdVByb2Nlc3ND
b25uZWN0aW9uRGlkQ2xvc2UoR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNw
cAppbmRleCA0YTAwZjIyOGNkNTBmODVjMDNmOTk3ZjA0N2M2OWNlNTIwZTlmMTc3Li4yMmE1ZWQz
YzI4OTEwMmMzYTkxNDI1M2U4ZmZjMTVkOTVjOTQ5NDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0yMTcs
MTUgKzIxNywxNSBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFByaQogICAgIG1fY29yZUxvYWRlci0+
ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlLCBXVEZNb3ZlKHBvbGljeURlY2lzaW9uQ29tcGxl
dGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGEoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRh
TGVuZ3RoKQordm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFy
ZWRCdWZmZXJDb3B5JiYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBM
T0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGEgb2Ygc2l6ZSAlbHUgZm9yICclcyciLCBkYXRhLnNpemUoKSwgbV9jb3JlTG9hZGVyLT51cmwo
KS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1f
aXNQcm9jZXNzaW5nTmV0d29ya1Jlc3BvbnNlLCAiTmV0d29yayBwcm9jZXNzIHNob3VsZCBub3Qg
c2VuZCBkYXRhIHVudGlsIHdlJ3ZlIHZhbGlkYXRlZCB0aGUgcmVzcG9uc2UiKTsKIAogICAgIGlm
IChVTkxJS0VMWShtX2ludGVyY2VwdENvbnRyb2xsZXIuaXNJbnRlcmNlcHRpbmcobV9jb3JlTG9h
ZGVyLT5pZGVudGlmaWVyKCkpKSkgewotICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuZGVm
ZXIobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVm
IHsgKnRoaXMgfSwgYnVmZmVyID0gZGF0YS5idWZmZXIoKSwgZW5jb2RlZERhdGFMZW5ndGhdKCkg
bXV0YWJsZSB7CisgICAgICAgIG1faW50ZXJjZXB0Q29udHJvbGxlci5kZWZlcihtX2NvcmVMb2Fk
ZXItPmlkZW50aWZpZXIoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBk
YXRhID0gV1RGTW92ZShkYXRhKSwgZW5jb2RlZERhdGFMZW5ndGhdKCkgbXV0YWJsZSB7CiAgICAg
ICAgICAgICBpZiAobV9jb3JlTG9hZGVyKQotICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRh
KElQQzo6U2hhcmVkQnVmZmVyQ29weShXVEZNb3ZlKGJ1ZmZlcikpLCBlbmNvZGVkRGF0YUxlbmd0
aCk7CisgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoV1RGTW92ZShkYXRhKSwgZW5jb2Rl
ZERhdGFMZW5ndGgpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5o
CmluZGV4IGFjMGFkYzliOGQ3YTRmMjFlOGJjYWI1Zjg4OTI0NDU4ZTU0ZTJiMWMuLmJmZGQyOTU1
ZTRhM2Q1OGZjZGEwMjI4ODliMDVlMmRjZWJhN2E0ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaApAQCAtODQsNyArODQs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJik7CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCBieXRl
c1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0JlU2VudCk7CiAgICAgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFByaXZhdGVSZWxheWVk
LCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsKLSAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYgZGF0YSwgaW50NjRf
dCBlbmNvZGVkRGF0YUxlbmd0aCk7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHkmJiBkYXRhLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICB2b2lk
IGRpZEZpbmlzaFJlc291cmNlTG9hZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3Mm
KTsKICAgICB2b2lkIGRpZEZhaWxSZXNvdXJjZUxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYpOwogICAgIHZvaWQgZGlkRmFpbFNlcnZpY2VXb3JrZXJMb2FkKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDI4
ZWM4ZTIzOGNhNWJmZGYwZGM1MjZmNTZkNmVmYjE4OTAwYWNiZDAuLjNiOGFjMzZkMGFlOWQxNzRj
ZmE2NjZiNGJmYzQxNWE4MzBkYTcwZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cApAQCAtMTE4Nyw4ICsxMTg3LDExIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlz
aGVkTG9hZGluZyhEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAgICAgICAgICAgaWYgKCF3ZWJQ
YWdlKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBsb2FkZXItPm1haW5SZXNvdXJj
ZURhdGEoKTsKLSAgICAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKG1h
aW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRh
KCkgOiBudWxscHRyLCBtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+c2l6ZSgp
IDogMCk7CisgICAgICAgICAgICBSZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPiBjb250aWd1b3Vz
RGF0YTsKKyAgICAgICAgICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBt
YWluUmVzb3VyY2VEYXRhID0gbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAgICAgICAg
ICBpZiAobWFpblJlc291cmNlRGF0YSkKKyAgICAgICAgICAgICAgICBjb250aWd1b3VzRGF0YSA9
IG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICBJUEM6OkRh
dGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShjb250aWd1b3VzRGF0YSA/IGNvbnRpZ3VvdXNEYXRh
LT5kYXRhKCkgOiBudWxscHRyLCBjb250aWd1b3VzRGF0YSA/IGNvbnRpZ3VvdXNEYXRhLT5zaXpl
KCkgOiAwKTsKICAgICAgICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21Db250ZW50UHJvdmlkZXIobG9hZGVyLT5y
ZXNwb25zZSgpLnN1Z2dlc3RlZEZpbGVuYW1lKCksIGRhdGFSZWZlcmVuY2UpKTsKICAgICAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5k
ZXggOWRmNDU0YTA2OGJjMDVhYmE4MWY3NjIxNjFhNGZkMjYwZDU4NzNmNy4uNjQ2NmQwZmZiYjJl
MmE3MjQxNmY0M2EwNWFkNTMwNmZhN2U1ZGY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtMzQxLDcgKzM0MSw3IEBAIFN0cmluZyBXZWJG
cmFtZTo6c291cmNlKCkgY29uc3QKICAgICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIg
PSBtX2NvcmVGcmFtZS0+bG9hZGVyKCkuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKTsKICAgICBpZiAo
IWRvY3VtZW50TG9hZGVyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBkb2N1bWVudExvYWRlci0+
bWFpblJlc291cmNlRGF0YSgpOworICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZURhdGEo
KTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURhdGEpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
ICAgICByZXR1cm4gZGVjb2Rlci0+ZW5jb2RpbmcoKS5kZWNvZGUobWFpblJlc291cmNlRGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpLCBtYWluUmVzb3VyY2VEYXRhLT5zaXplKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA2M2FmOTFm
ZGJhNWYyMDEwMDZjNzNjNTlmMjk2YmEyMmYzZDM3YzVkLi40Y2QyNTY4YTIyZGE4ZDdlMTFmMGEw
NGYxMmI1ZTM5N2RhYjRlNWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcApAQCAtMzg3OSw3ICszODc5LDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRTb3Vy
Y2VGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgKIAogdm9pZCBXZWJQYWdlOjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6Om9wdGlvbmFs
PElQQzo6U2hhcmVkQnVmZmVyQ29weT4mKT4mJiBjYWxsYmFjaykKIHsKLSAgICBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpKSB7CiAgICAgICAgIGlmIChQbHVnaW5W
aWV3KiBwbHVnaW5WaWV3ID0gcGx1Z2luVmlld0ZvckZyYW1lKGZyYW1lLT5jb3JlRnJhbWUoKSkp
CiAgICAgICAgICAgICBidWZmZXIgPSBwbHVnaW5WaWV3LT5saXZlUmVzb3VyY2VEYXRhKCk7CkBA
IC0zODkyLDcgKzM4OTIsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldE1haW5SZXNvdXJjZURhdGFPZkZy
YW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBDb21wbGV0aW9uSGFuZAogICAgIGNhbGxiYWNr
KElQQzo6U2hhcmVkQnVmZmVyQ29weShXVEZNb3ZlKGJ1ZmZlcikpKTsKIH0KIAotc3RhdGljIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGFGb3JGcmFtZShGcmFtZSog
ZnJhbWUsIGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpCitzdGF0aWMgUmVmUHRyPGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YUZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29u
c3QgVVJMJiByZXNvdXJjZVVSTCkKIHsKICAgICBEb2N1bWVudExvYWRlciogbG9hZGVyID0gZnJh
bWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCk7CiAgICAgaWYgKCFsb2FkZXIpCkBAIC0zOTA3
LDcgKzM5MDcsNyBAQCBzdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHJlc291
cmNlRGF0YUZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29uc3QgVQogCiB2b2lkIFdlYlBhZ2U6Omdl
dFJlc291cmNlRGF0YUZyb21GcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3Ry
aW5nJiByZXNvdXJjZVVSTFN0cmluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBzdGQ6
Om9wdGlvbmFsPElQQzo6U2hhcmVkQnVmZmVyQ29weT4mKT4mJiBjYWxsYmFjaykKIHsKLSAgICBS
ZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKGF1dG8qIGZyYW1lID0gV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCkpIHsKICAgICAgICAgVVJMIHJl
c291cmNlVVJMKFVSTCgpLCByZXNvdXJjZVVSTFN0cmluZyk7CiAgICAgICAgIGJ1ZmZlciA9IHJl
c291cmNlRGF0YUZvckZyYW1lKGZyYW1lLT5jb3JlRnJhbWUoKSwgcmVzb3VyY2VVUkwpOwpAQCAt
NzA1Nyw3ICs3MDU3LDcgQEAgdm9pZCBXZWJQYWdlOjpkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29u
KGJvb2wgZGVjaXNpb24sIENhbGxiYWNrSUQgbG9hZElkZW50aWZpZXIKICAgICBpZiAoIWRvY3Vt
ZW50TG9hZGVyKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKIAotICAg
IGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGRlY2lzaW9uLCBsb2Fk
SWRlbnRpZmllci50b0ludGVnZXIoKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildIChXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBpY29uRGF0
YSkgbXV0YWJsZSB7CisgICAgZG9jdW1lbnRMb2FkZXItPmRpZEdldExvYWREZWNpc2lvbkZvcklj
b24oZGVjaXNpb24sIGxvYWRJZGVudGlmaWVyLnRvSW50ZWdlcigpLCBbY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8qIGljb25EYXRhKSBtdXRhYmxl
IHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpTaGFyZWRCdWZmZXJDb3B5KFJlZlB0
ciB7IGljb25EYXRhIH0pKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmlu
ZGV4IDhkZjk5M2YyZDc3NWI2YzkzZDJlOGYwOTkwZjcyZjg1ZjYxOGU1OGUuLmVhMjRhODMyZDVm
MWViMWMyNThjYWQyMjE4OTMxMjZjNTIxMzdmNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aApAQCAtMjUwLDcgKzI1MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZW5kSDJQaW5nKGNvbnN0
IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8U2Vjb25kcywgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvcj4mJik+JiYpIGZpbmFsOwogCiAgICAgdm9pZCBnZXRMb2FkRGVjaXNpb25G
b3JJY29ucyhjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFdlYkNvcmU6OkxpbmtJY29uJiwgdWludDY0
X3Q+PiYpIGZpbmFsOwotICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nSWNvbihXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKik7CisgICAgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKGNvbnN0
IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKTsKIAogI2lmICFQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIGJvb2wgbV9sb2FkaW5nSWNvbiB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lm1tCmluZGV4IDg3YTVkNjU3ZjdiNzMzZDA3YzVkYjYwMWY2OTgxZjkwNDk3NzEz
OTMuLjQ0ODBhMDRhNjhhODM4MGU4Y2VjMmEwMDkwNjI5NjUyNDIxNDBkYzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0yMDkzLDcgKzIwOTMsNyBAQCB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29ucyhjb25zdCBWZWN0b3I8c3RkOjpwYWly
PFdlYkNvcgogICAgICAgICB9CiAKICAgICAgICAgbV9sb2FkaW5nSWNvbiA9IHRydWU7Ci0gICAg
ICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKHRydWUsIGljb24t
PnNlY29uZCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIpIHsKKyAgICAgICAgZG9jdW1lbnRMb2FkZXIt
PmRpZEdldExvYWREZWNpc2lvbkZvckljb24odHJ1ZSwgaWNvbi0+c2Vjb25kLCBbdGhpcywgd2Vh
a1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKGF1dG8qIGJ1ZmZlcikgewogICAgICAgICAgICAg
aWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBmaW5p
c2hlZExvYWRpbmdJY29uKGJ1ZmZlcik7CkBAIC0yMTMwLDcgKzIxMzAsNyBAQCBzdGF0aWMgTlNJ
bWFnZSAqd2ViR2V0TlNJbWFnZShXZWJDb3JlOjpJbWFnZSogaW1hZ2UsIE5TU2l6ZSBzaXplKQog
fQogI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQogCi12b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpmaW5pc2hlZExvYWRpbmdJY29uKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqIGljb25EYXRhKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5n
SWNvbihjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBpY29uRGF0YSkKIHsK
ICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBBU1NFUlQobV9sb2FkaW5nSWNvbik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2Uu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KaW5k
ZXggNWViNWQ2YTE5ZTZkOTFmY2IzYmZjODFjY2E5MWVjN2UwZTU2YzQyOC4uMjM4YTQ0YTUzNzNl
OGNjODMyOWJlNmQyMDc3MDdhZDdlOTM4OWIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQpAQCAtNDYwLDcgKzQ2MCw3IEBAIC0gKHZv
aWQpZGVhbGxvYwogCiAtIChOU0RhdGEgKilkYXRhCiB7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSB0b1ByaXZhdGUoX3ByaXZh
dGUpLT5sb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKKyAgICBSZWZQdHI8Y29uc3QgV2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IHRvUHJpdmF0ZShf
cHJpdmF0ZSktPmxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghbWFpblJlc291
cmNlRGF0YSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICByZXR1cm4gbWFpblJlc291cmNlRGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDQ5ODk5
MzE4ZGM5YWM1MmUzYzg4N2I1NGU3ODlhZWM2MGI5NzMwNTAuLjhkNTkxMzRjNWMyZDNkNzZmYTU5
NmQ1NTVjN2I1YjgxMWY0YjAyNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJIVE1MVmlldy5tbQpAQCAtMzU0MSw3ICszNTQxLDcgQEAgc3RhdGljIFJldGFpblB0
cjxOU01lbnVJdGVtPiBjcmVhdGVTaGFyZU1lbnVJdGVtKGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RS
ZXN1bHQmIGgKICAgICB9CiAKICAgICBpZiAoYXV0byogaW1hZ2UgPSBoaXRUZXN0UmVzdWx0Lmlt
YWdlKCkpIHsKLSAgICAgICAgaWYgKFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgpKQorICAgICAgICBpZiAoUmVmUHRyPGNvbnN0IFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGltYWdlLT5kYXRhKCkpCiAg
ICAgICAgICAgICBbaXRlbXMgYWRkT2JqZWN0OmFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0
V2l0aERhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+
ZGF0YSgpIGxlbmd0aDpidWZmZXItPnNpemUoKV1dKS5nZXQoKV07CiAgICAgfQogCkBAIC00MzA3
LDcgKzQzMDcsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAg
ICAgaWYgKGF1dG8qIGJ1ZmZlciA9IHRpZmZSZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkgewog
ICAgICAgICAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSB0aWZmUmVzb3VyY2UtPnJlc3Bv
bnNlKCkubnNVUkxSZXNwb25zZSgpOwogICAgICAgICAgICAgZHJhZ2dpbmdFbGVtZW50VVJMID0g
W3Jlc3BvbnNlIFVSTF07Ci0gICAgICAgICAgICB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdy
YXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpidWZmZXItPmNyZWF0ZU5T
RGF0YSgpLmdldCgpXSk7CisgICAgICAgICAgICB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdy
YXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpidWZmZXItPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgICAgICBOU1N0cmluZyog
ZmlsZW5hbWUgPSBbcmVzcG9uc2Ugc3VnZ2VzdGVkRmlsZW5hbWVdOwogICAgICAgICAgICAgTlNT
dHJpbmcqIHRydWVFeHRlbnNpb24odGlmZlJlc291cmNlLT5pbWFnZSgpLT5maWxlbmFtZUV4dGVu
c2lvbigpKTsKICAgICAgICAgICAgIGlmICghbWF0Y2hlc0V4dGVuc2lvbk9yRXF1aXZhbGVudChm
aWxlbmFtZSwgdHJ1ZUV4dGVuc2lvbikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJSZXNvdXJjZS5tbQppbmRleCAxMmQ1OWMwYTE3NjgxOGU2NjJjNDNjMDc0NGE1M2Ex
MDFjODU2MWVkLi5lMGQwZjczMDYyOTM0ODk1YzNmMThiZTc1ZWViMjUwYjE1YzZiMDViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KQEAgLTM2
Niw4ICszNjYsOCBAQCAtIChOU1N0cmluZyAqKV9zdHJpbmdWYWx1ZQogICAgICAgICBlbmNvZGlu
ZyA9IF9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPnRleHRFbmNvZGluZygpOwogICAgIGlmICghZW5j
b2RpbmcuaXNWYWxpZCgpKQogICAgICAgICBlbmNvZGluZyA9IFBBTDo6V2luZG93c0xhdGluMUVu
Y29kaW5nKCk7Ci0gICAgCi0gICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogY29yZURhdGEgPSBf
cHJpdmF0ZS0+Y29yZVJlc291cmNlID8gJl9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKSA6
IG51bGxwdHI7CisKKyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBjb3JlRGF0YSA9
IF9wcml2YXRlLT5jb3JlUmVzb3VyY2UgPyAmX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgp
IDogbnVsbHB0cjsKICAgICByZXR1cm4gZW5jb2RpbmcuZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KGNvcmVEYXRhID8gY29yZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEo
KSA6IG51bGxwdHIpLCBjb3JlRGF0YSA/IGNvcmVEYXRhLT5zaXplKCkgOiAwKTsKIH0KIAo=
</data>
<flag name="commit-queue"
          id="479111"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452169</attachid>
            <date>2022-02-16 03:04:40 -0800</date>
            <delta_ts>2022-02-16 03:29:45 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-236695-20220216220438.patch</filename>
            <type>text/plain</type>
            <size>190992</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5Nzg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODE0M2VkMTYyNTY5YTBl
MTk2YzUxYTVjNTFhZTYwZWEzNjhmNjgwMy4uOTM4MDI2ZmM1MzViNjlhNzgzYTBkMGQ5MWU1MTRh
Yjc4MmM1MGZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwMyBAQAorMjAyMi0wMi0xNiAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIENyYXNoVHJhY2VyOiBj
b20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQgYXQgSmF2YVNjcmlwdENvcmU6IGJtYWxsb2NfYWxs
b2NhdGVfaW1wbF9pbXBsX3Nsb3cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzNjY5NQorICAgICAgICByZGFyOi8vODc1OTY3MjQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEb24ndCBmbGF0dGVuIHRoZSBm
cmFnbWVudGVkIFNoYXJlZEJ1ZmZlciBhZnRlciBlYWNoIG5ldyBzZWdtZW50cywKKyAgICAgICAg
aW5zdGVhZCBvbmx5IGRvIHNvIG9uY2Ugd2UgaGF2ZSByZWNlaXZlZCB0aGUgZnVsbCBjb250ZW50
LgorICAgICAgICBXZSBjaGFuZ2UgdGhlIGNvbnN0bmVzcyBvZiBTaGFyZWRCdWZmZXIgYW5kIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIgaW52b2x2ZWQ6CisgICAgICAgIGJ5IG1ha2luZyB0aGVtIGNv
bnN0LCB3ZSBjbGVhcmx5IGluZGljYXRlIHRoYXQgdGhleSBhcmUgcmVhZC1vbmx5IGFuZCBpbW11
dGFibGUuCisKKyAgICAgICAgUnVubmluZyBzcGVlZHRlc3QubmV0IHdpdGggYSBnaWdhYml0IGxp
bmssIHdlIHNlZSBhIHJlZHVjdGlvbiBvZiBwZWFrCisgICAgICAgIG1lbW9yeSB1c2UgaW4gdGhl
IGNvbnRlbnQgcHJvY2VzcyBieSBhYm91dCAzNSUgKGZyb20gYXJvdW5kIDgwME1CIHRvIHVuZGVy
IDUwME1CKQorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAg
KiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE06
OnNhbml0aXplSW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpzYW5pdGl6ZVJlc3Bv
bnNlKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oOgorICAgICAgICAq
IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNQ2xpZW50Lmg6CisgICAgICAgICogTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4
dHJhY3RLZXlJRHNLZXlpZHMpOgorICAgICAgICAoV2ViQ29yZTo6c2FuaXRpemVLZXlpZHMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEc0NlbmMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGFSZWdpc3RyeTo6c2FuaXRpemVDZW5jKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNhbml0aXplV2ViTSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5
SURzV2ViTSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUlu
aXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJ
RHMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5o
OgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhS2V5U2Vzc2lvbjo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5
U2Vzc2lvbjo6c2VuZE1lc3NhZ2UpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlTZXNzaW9uLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlzOjp1bnJlcXVlc3RlZEluaXRp
YWxpemF0aW9uRGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5cy5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRh
dGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXJ0d29ya0ltYWdlTG9hZGVyOjpub3RpZnlGaW5p
c2hlZCk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tOgorICAgICAg
ICAoZmlsZVdyYXBwZXJGb3JFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL21hYy9FZGl0b3JN
YWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQp
OgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0
YSk6CisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBo
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6Y2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZCk6Cisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9JbWFnZURv
Y3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRG9jdW1lbnQ6OnVwZGF0ZUR1cmlu
Z1BhcnNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEb2N1bWVudDo6ZmluaXNoZWRQYXJz
aW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OmFkZFJlc291cmNlU2hhcmVkQnVm
ZmVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmJ1ZmZlciBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VE
YXRhOjpzZXRCdWZmZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6bWFpblJl
c291cmNlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnNo
YXJlZEJ1ZmZlckNvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
UGFnZUFnZW50Lmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYWluUmVzb3VyY2VEYXRhIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYWluUmVzb3VyY2UgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24p
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZ0ljb24p
OgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9E
b2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvUmVz
b3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRlbGl2
ZXJSZXNwb25zZUFuZERhdGEpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgor
ICAgICAgICAqIGxvYWRlci9TdWJzdGl0dXRlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Vi
c3RpdHV0ZURhdGE6OlN1YnN0aXR1dGVEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvU3Vic3RpdHV0
ZVJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmRhdGEg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpTdWJzdGl0dXRl
UmVzb3VyY2UpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0
b3JhZ2U6OndyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KToKKyAgICAgICAgKiBsb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaDoKKyAgICAgICAgKiBsb2FkZXIv
YXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcmNoaXZlRmFj
dG9yeUNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcmNoaXZlRmFjdG9yeTo6Y3JlYXRlKToK
KyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5oOgorICAgICAgICAqIGxv
YWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcmNo
aXZlUmVzb3VyY2U6OkFyY2hpdmVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpBcmNoaXZl
UmVzb3VyY2U6OmNyZWF0ZSk6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291
cmNlLmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUpOgorICAgICAgICAq
IGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjplbnN1cmVDdXN0
b21Gb250RGF0YSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbCk6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6dXBkYXRlSW1hZ2VEYXRhKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnJl
c291cmNlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNjcmlwdDo6c2NyaXB0KToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBwYWdlL1Bh
Z2VTZXJpYWxpemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjphZGRJ
bWFnZVRvUmVzb3VyY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9Ob3dQbGF5aW5nTWFuYWdlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVkQnVmZmVyQnVpbGRlcik6CisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1JbnN0YW5jZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETUluc3RhbmNlU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETVByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlQ2xlYXJLZXk6
OnNhbml0aXplUmVzcG9uc2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VD
bGVhcktleTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlcXVlc3RMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5Ojp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpz
ZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZURlY29kZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VE
ZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJBdmFpbGFibGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OnJlc2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJj
ZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5
U3RyZWFtaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RTaW5mRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJhY3RLZXlJRHNT
aW5mKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2Fu
aXRpemVTaW5mKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWlu
Zzo6c2FuaXRpemVTa2QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUZhaXJQbGF5U3Ry
ZWFtaW5nOjpleHRyYWN0S2V5SURzU2tkKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVG
YWlyUGxheVN0cmVhbWluZzo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWly
UGxheVN0cmVhbWluZ0FWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemF0aW9uRGF0YUZvclJlcXVlc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnRha2VVbmV4cGVj
dGVkS2V5UmVxdWVzdEZvckluaXRpYWxpemF0aW9uRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpD
RE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0U2VydmVyQ2VydGlmaWNhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OnNlc3Npb25Gb3JLZXlJRHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZSk6CisgICAgICAg
IChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVw
ZGF0ZUxpY2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjphdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNHOjpJbWFnZURlY29kZXJDRyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVu
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVUaHVuZGVyOjpzYW5pdGl6ZVJl
c3BvbnNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlVGh1bmRlcjo6c2V0
U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFyc2VkUmVzcG9uc2VNZXNz
YWdlOjpQYXJzZWRSZXNwb25zZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFyc2VkUmVz
cG9uc2VNZXNzYWdlOjpwYXlsb2FkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhcnNlZFJl
c3BvbnNlTWVzc2FnZTo6cGF5bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb25UaHVuZGVyOjpjaGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjplcnJvckNhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnJlcXVlc3RMaWNlbnNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnVwZGF0ZUxpY2Vuc2Up
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6bG9hZFNlc3Np
b24pOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVtb3Zl
U2Vzc2lvbkRhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUv
Q0RNVGh1bmRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxl
SW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjYWxhYmxlSW1hZ2VEZWNvZGVy
OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1h
Z2VEZWNvZGVyLmg6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNb2NrQ0RNRmFjdG9yeTo6YWRkS2V5c1RvU2Vzc2lvbldpdGhJRCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNRmFjdG9yeTo6cmVtb3ZlS2V5c0Zyb21TZXNzaW9uV2l0
aElEKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1GYWN0b3J5OjprZXlzRm9yU2Vzc2lvbldp
dGhJRCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2Vy
dGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6cmVx
dWVzdExpY2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6
dXBkYXRlTGljZW5zZSk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oOgorCiAy
MDIyLTAyLTE0ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBb
Q1NTIENvbnRhaW5lciBRdWVyaWVzXSBTdXBwb3J0IHJhbmdlIG9wZXJhdG9ycyBpbiBzaXplIHF1
ZXJpZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggODEzYjdmODM5ZjE2OGY4ZGQ1MDIyZTNhMGE1NDU4YjJlOGNhOTU2
OC4uYTUyMDllNGI2YWEzYzYxODNiOTM3OTk2ZDQzZTA4MzI1MWZlMjdiMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw2NiBAQAorMjAyMi0wMi0xNiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUu
Y29tPgorCisgICAgICAgIENyYXNoVHJhY2VyOiBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQg
YXQgSmF2YVNjcmlwdENvcmU6IGJtYWxsb2NfYWxsb2NhdGVfaW1wbF9pbXBsX3Nsb3cKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjY5NQorICAgICAg
ICByZGFyOi8vODc1OTY3MjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVx
dWVzdExpY2Vuc2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Q
cm94eTo6cmVtb3ZlU2Vzc2lvbkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eTo6c2VuZE1lc3NhZ2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUNETVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJv
eHk6OnNhbml0aXplUmVzcG9uc2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNUHJveHkuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHA6
CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZSk6CisgICAgICAgIChJUEM6
OlNoYXJlZEJ1ZmZlckNvcHk6OmRhdGEgY29uc3QpOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZm
ZXJDb3B5OjpzYWZlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVk
QnVmZmVyQ29weS5oOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpTaGFyZWRCdWZm
ZXJDb3B5KToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyIGNvbnN0KToK
KyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQ
Qzo6V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAo
SVBDOjpXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAg
IChJUEM6OldlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+OjplbmNvZGUpOgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVz
c2FnZT46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
OgorICAgICAgICAqIFNoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkhpdFRlc3RSZXN1bHREYXRhOjpXZWJIaXRUZXN0UmVzdWx0RGF0YSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3Rh
bmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZW1vdmVTZXNzaW9uRGF0YSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXI6OmNyZWF0ZUltYWdl
RGVjb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXI6
OnNldFVzZUdQVVByb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZmluaXNoZWRMb2FkaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6c291cmNlIGNvbnN0KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6cmVz
b3VyY2VEYXRhRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRSZXNvdXJj
ZURhdGFGcm9tRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRHZXRMb2FkRGVj
aXNpb25Gb3JJY29uKToKKwogMjAyMi0wMi0xNCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9u
QGFwcGxlLmNvbT4KIAogICAgICAgICBEaXJlY3QgdG91Y2hlcyBkb24ndCB0cmlnZ2VyIG90aGVy
IGdlc3R1cmUgcmVjb2duaXplcnMgaWYgV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyIHNlZXMgdGhl
bSBmaXJzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDY4MDM5NDg1OGExNWI4YTI1
Njk2YWFlYzdjOGQ5NGFhNzNhZDcyMjMuLjUwYzhiYTM0YjkzMTFhMjQ4OTFmOGRkNTdjNDJkYWY0
ZTk0MjA1MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAor
MjAyMi0wMi0xNiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAg
IENyYXNoVHJhY2VyOiBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQgYXQgSmF2YVNjcmlwdENv
cmU6IGJtYWxsb2NfYWxsb2NhdGVfaW1wbF9pbXBsX3Nsb3cKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjY5NQorICAgICAgICByZGFyOi8vODc1OTY3
MjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNs
aWVudDo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbnMpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmZpbmlzaGVkTG9hZGluZ0ljb24pOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNv
dXJjZS5tbToKKyAgICAgICAgKC1bV2ViRGF0YVNvdXJjZSBkYXRhXSk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKGNyZWF0ZVNoYXJlTWVudUl0ZW0pOgorICAg
ICAgICAoLVtXZWJIVE1MVmlldyBuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0
aW9uOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUmVzb3VyY2UubW06CisgICAgICAgICgtW1dl
YlJlc291cmNlIF9zdHJpbmdWYWx1ZV0pOgorCiAyMDIyLTAyLTExICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgZml4IGJ1aWxkIHdpdGggdGhl
IGxhdGVzdCBpT1MgU0RLLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9DRE0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9DRE0uY3BwCmluZGV4IDAxNjEyMTlkMWUyNmIyNjJjNGVlZWM4MTk4YzQ2ZDhlYjE0YzFiMDIu
LjFkMzcwMWU2YWJmZTQ2YmNmMTU1MTFmZjI0Njg0OWQ5OTA4YzVhMTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKQEAgLTEzNSw3ICsxMzUsNyBA
QCBib29sIENETTo6c3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbVN0cmluZyYgaW5pdERh
dGFUeXBlKSBjb25zdAogICAgIHJldHVybiBtX3ByaXZhdGUgJiYgbV9wcml2YXRlLT5zdXBwb3J0
ZWRJbml0RGF0YVR5cGVzKCkuY29udGFpbnMoaW5pdERhdGFUeXBlKTsKIH0KIAotUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETTo6c2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRh
KQorUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETTo6c2FuaXRpemVJbml0
RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGluaXREYXRhKQogewogICAgIHJldHVybiBJbml0RGF0YVJlZ2lzdHJ5OjpzaGFy
ZWQoKS5zYW5pdGl6ZUluaXREYXRhKGluaXREYXRhVHlwZSwgaW5pdERhdGEpOwogfQpAQCAtMTQ1
LDcgKzE0NSw3IEBAIGJvb2wgQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlCiAgICAgcmV0dXJuIG1fcHJpdmF0
ZSAmJiBtX3ByaXZhdGUtPnN1cHBvcnRzSW5pdERhdGEoaW5pdERhdGFUeXBlLCBpbml0RGF0YSk7
CiB9CiAKLVJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE06OnNhbml0aXplUmVzcG9u
c2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpCitSZWZQdHI8Y29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKQogewogICAgIGlmICghbV9wcml2YXRlKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvQ0RNLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL0NETS5oCmluZGV4IGQ3YjFkNTNkMDQ5MWY3Mjc3OWI1OTRiMmQ4M2MwOWI4M2JjZjIwN2Yu
LmJiN2JhOTkyNzQ0OTEzYjk4MjMzYmFiYjdmNmRmYTMyMzE1NDJiOTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaApAQCAtNzMsMTAgKzczLDEwIEBAIHB1
YmxpYzoKICAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdDsKICAgICBib29sIHN1cHBv
cnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdDsKIAotICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIFJlZlB0
cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0
b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwog
ICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAotICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImKTsKKyAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVS
ZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKICAgICBzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNs
aWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1DbGllbnQu
aAppbmRleCA0MTBlZDJmYjY0Mjc1NjJjZTliZDhlZGE0ZDkxYTg2YmE5OGNhYTYxLi5mNTg2NzJh
MWUyNDI1N2RjYWVjMzllZjA5NTMwYjk2MmU4YmQ3MWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNQ2xpZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgfkNETUNsaWVudCgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1
YWwgdm9pZCBjZG1DbGllbnRBdHRlbXB0VG9SZXN1bWVQbGF5YmFja0lmTmVjZXNzYXJ5KCkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBjZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0
YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25E
YXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnku
Y3BwCmluZGV4IDZmODg4ZTE3ODU4ZGRhNmQ5NDcxZWMxZjZlZjVkMDY2ZGYwZTQ5OTAuLjA3ZjE1
ZTE1MGNlYjY4ZmVjNmJhYmZhZDFhYzk1YTM5ZDk1ZTE1NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNw
cApAQCAtNTQsNyArNTQsNyBAQCBuYW1lc3BhY2UgewogICAgIGNvbnN0IHVpbnQzMl90IGtLZXlJ
ZHNNYXhLZXlJZFNpemVJbkJ5dGVzID0gNTEyOwogfQogCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0tleWlkcyhj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGF0aWMgc3RkOjpvcHRpb25h
bDxWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlE
c0tleWlkcyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8g
MS4gRm9ybWF0CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9m
b3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0CkBAIC03NCw3ICs3NCw3
IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4+PiBleHRyYWN0S2V5SURzS2V5aWRzKGNvCiAgICAgaWYgKCFraWRzQXJyYXkpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+PiBrZXlJRHM7CisgICAgVmVjdG9yPFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4ga2V5SURzOwogICAgIGZvciAoYXV0byYgdmFsdWUgOiAqa2lkc0FycmF5KSB7CiAgICAg
ICAgIGF1dG8ga2V5SUQgPSB2YWx1ZS0+YXNTdHJpbmcoKTsKICAgICAgICAgaWYgKCFrZXlJRCkK
QEAgLTkzLDcgKzkzLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY28KICAgICByZXR1cm4ga2V5
SURzOwogfQogCi1zdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXpl
S2V5aWRzKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBSZWZQ
dHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVLZXlpZHMoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIDEuIEZvcm1hdAogICAgIC8v
IGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2lu
aXRkYXRhL2tleWlkcy5odG1sI2Zvcm1hdApAQCAtMTUxLDkgKzE1MSw5IEBAIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFk
ZXJCb3g+Pj4gSW5pCiAgICAgcmV0dXJuIHBzc2hCb3hlczsKIH0KIAotc3RkOjpvcHRpb25hbDxW
ZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0
cmFjdEtleUlEc0NlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3Rk
OjpvcHRpb25hbDxWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gSW5p
dERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEc0NlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogewotICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
IGtleUlEczsKKyAgICBWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBr
ZXlJRHM7CiAKICAgICBhdXRvIHBzc2hCb3hlcyA9IGV4dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyhi
dWZmZXIpOwogICAgIGlmICghcHNzaEJveGVzKQpAQCAtMTg1LDcgKzE4NSw3IEBAIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IEluaXREYXRhUmVnaXN0
cnk6OmV4dHJhY3RLZXlJCiAgICAgcmV0dXJuIGtleUlEczsKIH0KIAotUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplQ2VuYyhjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCitSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRpemVDZW5jKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyA0LiBDb21tb24gU3lzdGVtSUQgYW5kIFBT
U0ggQm94IEZvcm1hdAogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVk
aWEvZm9ybWF0LXJlZ2lzdHJ5L2luaXRkYXRhL2NlbmMuaHRtbCNjb21tb24tc3lzdGVtCkBAIC0x
OTUsNyArMTk1LDcgQEAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVn
aXN0cnk6OnNhbml0aXplQ2VuYyhjb25zdCBGcmFnbWVudGVkU2gKICAgICByZXR1cm4gYnVmZmVy
LmNvcHkoKTsKIH0KIAotc3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5p
dGl6ZVdlYk0oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFJl
ZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVdlYk0oY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIENoZWNrIGlmIHRoZSBidWZm
ZXIgaXMgYSB2YWxpZCBXZWJNIGluaXREYXRhLgogICAgIC8vIFRoZSBXZWJNIGluaXREYXRhIGlz
IHRoZSBDb250ZW50RW5jS2V5SUQsIHNvIHNob3VsZCBiZSBsZXNzIHRoYW4ga1dlYk1NYXhDb250
ZW50RW5jS2V5SURTaXplLgpAQCAtMjA1LDEwICsyMDUsMTAgQEAgc3RhdGljIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVdlYk0oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYKICAgICByZXR1cm4gYnVmZmVyLmNvcHkoKTsKIH0KIAotc3RhdGljIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNXZWJN
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5
SURzV2ViTShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgVmVj
dG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ga2V5SURzOwotICAgIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZWRCdWZmZXIgPSBzYW5pdGl6ZVdlYk0oYnVmZmVy
KTsKKyAgICBWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHM7
CisgICAgYXV0byBzYW5pdGl6ZWRCdWZmZXIgPSBzYW5pdGl6ZVdlYk0oYnVmZmVyKTsKICAgICBp
ZiAoIXNhbml0aXplZEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAt
MjMzLDcgKzIzMyw3IEBAIEluaXREYXRhUmVnaXN0cnk6OkluaXREYXRhUmVnaXN0cnkoKQogCiBJ
bml0RGF0YVJlZ2lzdHJ5Ojp+SW5pdERhdGFSZWdpc3RyeSgpID0gZGVmYXVsdDsKIAotUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplSW5pdERh
dGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBidWZmZXIpCitSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gSW5p
dERhdGFSZWdpc3RyeTo6c2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBhdXRv
IGl0ZXIgPSBtX3R5cGVzLmZpbmQoaW5pdERhdGFUeXBlKTsKICAgICBpZiAoaXRlciA9PSBtX3R5
cGVzLmVuZCgpIHx8ICFpdGVyLT52YWx1ZS5zYW5pdGl6ZUluaXREYXRhKQpAQCAtMjQxLDcgKzI0
MSw3IEBAIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5Ojpz
YW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpCiAgICAgcmV0dXJuIGl0ZXItPnZhbHVlLnNh
bml0aXplSW5pdERhdGEoYnVmZmVyKTsKIH0KIAotc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEcyhj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJRHMoY29uc3QgQXRvbVN0
cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiB7CiAgICAgYXV0byBpdGVyID0gbV90eXBlcy5maW5kKGluaXREYXRhVHlwZSk7CiAgICAgaWYg
KGl0ZXIgPT0gbV90eXBlcy5lbmQoKSB8fCAhaXRlci0+dmFsdWUuc2FuaXRpemVJbml0RGF0YSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERh
dGFSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0
RGF0YVJlZ2lzdHJ5LmgKaW5kZXggNzdkNjA0YjA4YmI3ZjdlMzhiY2NiMzU0NWIzNGM4YjEzNDM1
NWVmMi4uYmFlNzFiN2U5MDc3ZDkwOWJkNTIyYTY3NmFlYTI0NzEzZWUzMDYxZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJl
Z2lzdHJ5LmgKQEAgLTQ1LDEyICs0NSwxMiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIEluaXREYXRhUmVnaXN0cnkmIHNoYXJlZCgpOwogICAgIGZyaWVuZCBjbGFzcyBOZXZl
ckRlc3Ryb3llZDxJbml0RGF0YVJlZ2lzdHJ5PjsKIAotICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlw
ZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RL
ZXlJRHMoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJik7CisgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNh
bml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEcyhj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImKTsKIAogICAgIHN0cnVjdCBJbml0RGF0YVR5cGVDYWxsYmFja3MgewotICAgICAgICB1c2lu
ZyBTYW5pdGl6ZUluaXREYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjxSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpPjsKLSAgICAgICAgdXNp
bmcgRXh0cmFjdEtleUlEc0NhbGxiYWNrID0gRnVuY3Rpb248c3RkOjpvcHRpb25hbDxWZWN0b3I8
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpPjsKKyAgICAgICAgdXNpbmcgU2FuaXRpemVJbml0RGF0YUNhbGxiYWNrID0gRnVuY3Rpb248
UmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKT47CisgICAgICAgIHVzaW5nIEV4dHJhY3RLZXlJRHNDYWxsYmFjayA9IEZ1bmN0
aW9uPHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj4+KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKT47CiAKICAgICAgICAgU2FuaXRpemVJ
bml0RGF0YUNhbGxiYWNrIHNhbml0aXplSW5pdERhdGE7CiAgICAgICAgIEV4dHJhY3RLZXlJRHND
YWxsYmFjayBleHRyYWN0S2V5SURzOwpAQCAtNjIsOCArNjIsOCBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIGNvbnN0IEF0b21TdHJpbmcmIHdlYm1OYW1lKCk7CiAKICAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hl
YWRlckJveD4+PiBleHRyYWN0UHNzaEJveGVzRnJvbUNlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzQ2VuYyhjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJik7Ci0gICAgc3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5p
dGl6ZUNlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRy
YWN0S2V5SURzQ2VuYyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGlj
IFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUNlbmMoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiBwcml2YXRlOgogICAgIEluaXREYXRhUmVnaXN0
cnkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlTZXNzaW9uLmNwcAppbmRleCAxNDc3NmMyMDE1MWJmZWZlMzgwNzlhMzM3MzBj
ODg2NjI2OGJhNDZhLi4wNjY4ZWI3MTRjNmNhMDJlNTM2ODQ5YzFkNDQyMWYxNTQzZWVjOWQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleVNlc3Npb24uY3BwCkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBNZWRpYUtleVNlc3Np
b246OmdlbmVyYXRlUmVxdWVzdChjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0
IEJ1ZmYKICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6
Ok5ldHdvcmtpbmcsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBpbml0RGF0
YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGluaXREYXRhLmRhdGEoKSwgaW5pdERhdGEubGVuZ3Ro
KCkpLCBpbml0RGF0YVR5cGUsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVy
ID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIC8vIDEwLjEuIElm
IHRoZSBpbml0IGRhdGEgaXMgbm90IHZhbGlkIGZvciBpbml0RGF0YVR5cGUsIHJlamVjdCBwcm9t
aXNlIHdpdGggYSBuZXdseSBjcmVhdGVkIFR5cGVFcnJvci4KICAgICAgICAgLy8gMTAuMi4gTGV0
IHNhbml0aXplZCBpbml0IGRhdGEgYmUgYSB2YWxpZGF0ZWQgYW5kIHNhbml0aXplZCB2ZXJzaW9u
IG9mIGluaXQgZGF0YS4KLSAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNh
bml0aXplZEluaXREYXRhID0gbV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRpemVJbml0RGF0YShpbml0
RGF0YVR5cGUsIGluaXREYXRhKTsKKyAgICAgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IHNhbml0aXplZEluaXREYXRhID0gbV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRpemVJ
bml0RGF0YShpbml0RGF0YVR5cGUsIGluaXREYXRhKTsKIAogICAgICAgICAvLyAxMC4zLiBJZiB0
aGUgcHJlY2VkaW5nIHN0ZXAgZmFpbGVkLCByZWplY3QgcHJvbWlzZSB3aXRoIGEgbmV3bHkgY3Jl
YXRlZCBUeXBlRXJyb3IuCiAgICAgICAgIGlmICghc2FuaXRpemVkSW5pdERhdGEpIHsKQEAgLTIy
Myw3ICsyMjMsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVSZXF1ZXN0KGNvbnN0
IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgQnVmZgogICAgICAgICAgICAgbV9sYXRl
c3REZWNyeXB0VGltZSA9IDA7CiAgICAgICAgIH0KIAotICAgICAgICBtX2luc3RhbmNlU2Vzc2lv
bi0+cmVxdWVzdExpY2Vuc2UobV9zZXNzaW9uVHlwZSwgaW5pdERhdGFUeXBlLCBzYW5pdGl6ZWRJ
bml0RGF0YS5yZWxlYXNlTm9uTnVsbCgpLCBbdGhpcywgd2Vha1RoaXMsIHByb21pc2UgPSBXVEZN
b3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBi
b29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1Zh
bHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT5yZXF1
ZXN0TGljZW5zZShtX3Nlc3Npb25UeXBlLCBpbml0RGF0YVR5cGUsIHNhbml0aXplZEluaXREYXRh
LnJlbGVhc2VOb25OdWxsKCksIFt0aGlzLCB3ZWFrVGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJv
bWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoUmVmPGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJv
b2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFs
dWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0yNTgsNyArMjU4LDcgQEAgdm9pZCBNZWRpYUtleVNl
c3Npb246OmdlbmVyYXRlUmVxdWVzdChjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNv
bnN0IEJ1ZmYKICAgICAgICAgICAgICAgICBtX2NhbGxhYmxlID0gdHJ1ZTsKIAogICAgICAgICAg
ICAgICAgIC8vIDEwLjkuMy4gUnVuIHRoZSBRdWV1ZSBhICJtZXNzYWdlIiBFdmVudCBhbGdvcml0
aG0gb24gdGhlIHNlc3Npb24sIHByb3ZpZGluZyBtZXNzYWdlIHR5cGUgYW5kIG1lc3NhZ2UuCi0g
ICAgICAgICAgICAgICAgZW5xdWV1ZU1lc3NhZ2UobWVzc2FnZVR5cGUsIG1lc3NhZ2UpOworICAg
ICAgICAgICAgICAgIGVucXVldWVNZXNzYWdlKG1lc3NhZ2VUeXBlLCBXVEZNb3ZlKG1lc3NhZ2Up
KTsKIAogICAgICAgICAgICAgICAgIC8vIDEwLjkuMy4gUmVzb2x2ZSBwcm9taXNlLgogICAgICAg
ICAgICAgICAgIElORk9fTE9HKGlkZW50aWZpZXIsICI6OnRhc2soKSBSZXNvbHZlZCIpOwpAQCAt
NDIyLDcgKzQyMiw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjp1cGRhdGUoY29uc3QgQnVmZmVy
U291cmNlJiByZXNwb25zZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mCiAgICAgLy8gNi4gUnVuIHRo
ZSBmb2xsb3dpbmcgc3RlcHMgaW4gcGFyYWxsZWw6CiAgICAgcXVldWVUYXNrS2VlcGluZ09iamVj
dEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpOZXR3b3JraW5nLCBbdGhpcywgd2Vha1RoaXMgPSBX
ZWFrUHRyIHsgKnRoaXMgfSwgcmVzcG9uc2UgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZXNwb25z
ZS5kYXRhKCksIHJlc3BvbnNlLmxlbmd0aCgpKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSks
IGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAg
Ly8gNi4xLiBMZXQgc2FuaXRpemVkIHJlc3BvbnNlIGJlIGEgdmFsaWRhdGVkIGFuZC9vciBzYW5p
dGl6ZWQgdmVyc2lvbiBvZiByZXNwb25zZSBjb3B5LgotICAgICAgICBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVkUmVzcG9uc2UgPSBtX2ltcGxlbWVudGF0aW9uLT5zYW5p
dGl6ZVJlc3BvbnNlKHJlc3BvbnNlKTsKKyAgICAgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IHNhbml0aXplZFJlc3BvbnNlID0gbV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRp
emVSZXNwb25zZShyZXNwb25zZSk7CiAKICAgICAgICAgLy8gNi4yLiBJZiB0aGUgcHJlY2VkaW5n
IHN0ZXAgZmFpbGVkLCBvciBpZiBzYW5pdGl6ZWQgcmVzcG9uc2UgaXMgZW1wdHksIHJlamVjdCBw
cm9taXNlIHdpdGggYSBuZXdseSBjcmVhdGVkIFR5cGVFcnJvci4KICAgICAgICAgaWYgKCFzYW5p
dGl6ZWRSZXNwb25zZSB8fCBzYW5pdGl6ZWRSZXNwb25zZS0+aXNFbXB0eSgpKSB7CkBAIC02MDEs
NyArNjAxLDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OnJlbW92ZShSZWY8RGVmZXJyZWRQcm9t
aXNlPiYmIHByb21pc2UpCiAgICAgICAgIC8vIDQuMy4gTGV0IG1lc3NhZ2UgdHlwZSBiZSBudWxs
LgogCiAgICAgICAgIC8vIDQuNC4gVXNlIHRoZSBjZG0gdG8gZXhlY3V0ZSB0aGUgZm9sbG93aW5n
IHN0ZXBzOgotICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+cmVtb3ZlU2Vzc2lvbkRhdGEobV9z
ZXNzaW9uSWQsIG1fc2Vzc2lvblR5cGUsIFt0aGlzLCB3ZWFrVGhpcywgcHJvbWlzZSA9IFdURk1v
dmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoQ0RNSW5zdGFu
Y2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBrZXlzLCBzdGQ6Om9wdGlvbmFsPFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj4mJiBtZXNzYWdlLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nl
c3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+
cmVtb3ZlU2Vzc2lvbkRhdGEobV9zZXNzaW9uSWQsIG1fc2Vzc2lvblR5cGUsIFt0aGlzLCB3ZWFr
VGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlk
ZW50aWZpZXIpXSAoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBrZXlzLCBz
dGQ6Om9wdGlvbmFsPFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJiBtZXNzYWdl
LCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewog
ICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAg
LTcxNiw5ICs3MTYsOSBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlS2V5U3RhdHVzZXMo
Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBpbgogICAgICAgICB9KTsKIH0K
IAotdm9pZCBNZWRpYUtleVNlc3Npb246OnNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlIG1lc3Nh
Z2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQordm9pZCBNZWRp
YUtleVNlc3Npb246OnNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBSZWY8
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQogewotICAgIGVucXVldWVN
ZXNzYWdlKG1lc3NhZ2VUeXBlLCBtZXNzYWdlKTsKKyAgICBlbnF1ZXVlTWVzc2FnZShtZXNzYWdl
VHlwZSwgV1RGTW92ZShtZXNzYWdlKSk7CiB9CiAKIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpzZXNz
aW9uSWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKaW5kZXgg
MzY1YWNlNWMwOTVlN2RjMGM1NzFlNzZjY2YyYzA3YWFmYzYyYmFhNi4uY2YzYTg0OThmZDQ1MGVm
MTgyNzRhODA5MjE2NjU4ZjIzNDgyZWFiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCkBAIC04Nyw3ICs4Nyw3
IEBAIHB1YmxpYzoKICAgICB1c2luZyBDbG9zZWRQcm9taXNlID0gRE9NUHJvbWlzZVByb3h5PElE
TFVuZGVmaW5lZD47CiAgICAgQ2xvc2VkUHJvbWlzZSYgY2xvc2VkKCkgeyByZXR1cm4gbV9jbG9z
ZWRQcm9taXNlLmdldCgpOyB9CiAKLSAgICBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiwgTWVkaWFLZXlTdGF0dXM+PiYgc3RhdHVzZXMoKSBjb25zdCB7
IHJldHVybiBtX3N0YXR1c2VzOyB9CisgICAgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxSZWY8Y29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4sIE1lZGlhS2V5U3RhdHVzPj4mIHN0YXR1c2VzKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGF0dXNlczsgfQogCiAgICAgdW5zaWduZWQgaW50ZXJuYWxJbnN0
YW5jZVNlc3Npb25PYmplY3RSZWZDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zdGFuY2VTZXNz
aW9uLT5yZWZDb3VudCgpOyB9CiAKQEAgLTEwMCw3ICsxMDAsNyBAQCBwcml2YXRlOgogCiAgICAg
Ly8gQ0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50CiAgICAgdm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhD
RE1JbnN0YW5jZVNlc3Npb25DbGllbnQ6OktleVN0YXR1c1ZlY3RvciYmKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBtZXNzYWdlKSBmaW5hbDsKKyAgICB2b2lkIHNlbmRNZXNzYWdlKENETU1lc3NhZ2VU
eXBlLCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSBmaW5hbDsK
ICAgICB2b2lkIHNlc3Npb25JZENoYW5nZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgUGxh
dGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKCkgZmluYWw7CiAKQEAgLTE0MCwxMCArMTQwLDEwIEBA
IHByaXZhdGU6CiAgICAgTWVkaWFLZXlTZXNzaW9uVHlwZSBtX3Nlc3Npb25UeXBlOwogICAgIFJl
ZjxDRE0+IG1faW1wbGVtZW50YXRpb247CiAgICAgUmVmPENETUluc3RhbmNlU2Vzc2lvbj4gbV9p
bnN0YW5jZVNlc3Npb247Ci0gICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4g
bV9yZWNvcmRPZktleVVzYWdlOworICAgIFZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4+IG1fcmVjb3JkT2ZLZXlVc2FnZTsKICAgICBkb3VibGUgbV9maXJzdERlY3J5cHRU
aW1lIHsgMCB9OwogICAgIGRvdWJsZSBtX2xhdGVzdERlY3J5cHRUaW1lIHsgMCB9OwotICAgIFZl
Y3RvcjxzdGQ6OnBhaXI8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBNZWRpYUtleVN0YXR1
cz4+IG1fc3RhdHVzZXM7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWY8Y29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4sIE1lZGlhS2V5U3RhdHVzPj4gbV9zdGF0dXNlczsKIAogICAgIHVzaW5n
IERpc3BsYXlDaGFuZ2VkT2JzZXJ2ZXIgPSBPYnNlcnZlcjx2b2lkKFBsYXRmb3JtRGlzcGxheUlE
KT47CiAgICAgRGlzcGxheUNoYW5nZWRPYnNlcnZlciBtX2Rpc3BsYXlDaGFuZ2VkT2JzZXJ2ZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
cy5jcHAKaW5kZXggMzY3ZjMxZDE4NmI1MTYzOWE5Yzc0MjEzZjBjZjhlNmYyZjhkMjZlYS4uNmE1
NGRjZDI5M2NmMzI5MTE1NzA5ZTk5NTAxZDkzYjcyMDAyMWEyZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcApAQCAtMTc3LDcg
KzE3Nyw3IEBAIGJvb2wgTWVkaWFLZXlzOjpoYXNPcGVuU2Vzc2lvbnMoKSBjb25zdAogICAgICAg
ICB9KTsKIH0KIAotdm9pZCBNZWRpYUtleXM6OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRh
UmVjZWl2ZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGluaXREYXRhKQordm9pZCBNZWRpYUtleXM6OnVucmVxdWVzdGVkSW5pdGlhbGl6
YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQogewogICAgIGZvciAoYXV0byYgY2Rt
Q2xpZW50IDogbV9jZG1DbGllbnRzKQogICAgICAgICBjZG1DbGllbnQuY2RtQ2xpZW50VW5yZXF1
ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChpbml0RGF0YVR5cGUsIGluaXREYXRhLmNv
cHlSZWYoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5cy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleXMuaAppbmRleCA5MWExYTA3MTE0MzNiZTI0N2RkMmE4NWM1ZjRhZDA5MzhhMDlhN2Fj
Li44NjQ1MmQ4OGIyNDlhZWViYTdjZjQyZGVmOThlYzU2MWQ5M2Y3ZGYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKQEAgLTg2LDcg
Kzg2LDcgQEAgcHJvdGVjdGVkOgogICAgIE1lZGlhS2V5cyhEb2N1bWVudCYsIGJvb2wgdXNlRGlz
dGluY3RpdmVJZGVudGlmaWVyLCBib29sIHBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQsIGNvbnN0IFZl
Y3RvcjxNZWRpYUtleVNlc3Npb25UeXBlPiYsIFJlZjxDRE0+JiYsIFJlZjxDRE1JbnN0YW5jZT4m
Jik7CiAKICAgICAvLyBDRE1JbnN0YW5jZUNsaWVudAotICAgIHZvaWQgdW5yZXF1ZXN0ZWRJbml0
aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0
YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKSBmaW5hbDsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGNvbnN0IExvZ2dl
ciYgbG9nZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dnZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAKaW5kZXggODc0
YWE3ZjBiMThmMGVlNzU4ODBiYTVmNWVmNjdkNDdiZmMyYjJiNC4uYmQxMDY3MTYxYTBkMjViOTNk
ZTRmN2FlNmI0N2Y1ZjYxZGZjMzRhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgdm9p
ZCBBcnR3b3JrSW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNv
dXJjZSwgY29uc3QgTmV0d29ya0wKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAvLyBTYW5p
dGl6ZSB0aGUgaW1hZ2UgYnkgZGVjb2RpbmcgaXQgaW50byBhIEJpdG1hcEltYWdlLgotICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXJUb1Nhbml0aXplID0gbV9jYWNoZWRJ
bWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOworICAgIGF1dG8gYnVmZmVyVG9TYW5pdGl6ZSA9IG1fY2Fj
aGVkSW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKICAgICBhdXRvIGJpdG1hcEltYWdlID0gQml0bWFw
SW1hZ2U6OmNyZWF0ZSgpOwogICAgIGJpdG1hcEltYWdlLT5zZXREYXRhKFdURk1vdmUoYnVmZmVy
VG9TYW5pdGl6ZSksIHRydWUpOwogICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKGJpdG1hcEltYWdlLT5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQs
IDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1t
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4IDVh
NjA1OTRiNWU0ODJkZDJhNWE3YmMyMDdlOWJiMjY0MDJkMjBlZTkuLjc4YmYyNGMxN2Y3MzgwNmEz
M2MxMTRmNTgzYmY5Y2Y0YjFjMmIwMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0hUTUxDb252ZXJ0ZXIubW0KQEAgLTIzMjAsNyArMjMyMCw3IEBAIHN0YXRpYyBSZXRhaW5Q
dHI8TlNGaWxlV3JhcHBlcj4gZmlsZVdyYXBwZXJGb3JVUkwoRG9jdW1lbnRMb2FkZXIqIGRhdGFT
b3VyY2UsIE5TCiBzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9y
RWxlbWVudChIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQogewogICAgIGlmIChDYWNoZWRJbWFn
ZSogY2FjaGVkSW1hZ2UgPSBlbGVtZW50LmNhY2hlZEltYWdlKCkpIHsKLSAgICAgICAgaWYgKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IGNhY2hlZEltYWdlLT5yZXNvdXJj
ZUJ1ZmZlcigpKQorICAgICAgICBpZiAoYXV0byogc2hhcmVkQnVmZmVyID0gY2FjaGVkSW1hZ2Ut
PnJlc291cmNlQnVmZmVyKCkpCiAgICAgICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TRmlsZVdy
YXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpzaGFyZWRCdWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KaW5kZXggODUxZjI5NTBiOTFiYTQ0MGQ5OTkz
YTUyMmY5MTUwZjAxYTU4MWVhZi4uMDkxODdjMGY1N2Q0OWNjYjc5YzJlYzdlMzJlNGU4MTQ1ZTk5
NTZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQpAQCAtMjA0LDcg
KzIwNCw4IEBAIHZvaWQgRWRpdG9yOjp3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQm
IHBhc3RlYm9hcmQsIEVsZW1lbnQmIGltYWdlRWxlbWVuCiAgICAgcGFzdGVib2FyZEltYWdlLnN1
Z2dlc3RlZE5hbWUgPSBpbWFnZVNvdXJjZVVSTC5sYXN0UGF0aENvbXBvbmVudCgpLnRvU3RyaW5n
KCk7CiAgICAgcGFzdGVib2FyZEltYWdlLmltYWdlU2l6ZSA9IGltYWdlLT5zaXplKCk7CiAgICAg
cGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUgPSBwYXN0ZWJvYXJkLnJlc291cmNlTUlN
RVR5cGUoY2FjaGVkSW1hZ2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSk7Ci0gICAgcGFzdGVib2Fy
ZEltYWdlLnJlc291cmNlRGF0YSA9IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpOworICAg
IGlmIChhdXRvKiBidWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSkKKyAgICAg
ICAgcGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YSA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KTsKIAogICAgIGlmICghcGFzdGVib2FyZC5pc1N0YXRpYygpKQogICAgICAgICBjbGllbnQoKS0+
Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEobWFrZVJhbmdlU2VsZWN0aW5nTm9kZShpbWFnZUVsZW1l
bnQpLCBwYXN0ZWJvYXJkSW1hZ2UuY2xpZW50VHlwZXMsIHBhc3RlYm9hcmRJbWFnZS5jbGllbnRE
YXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQppbmRleCA3ODYwOTE4
N2Y3NWQwNzZlYjlkNzgxNzNiNTBlNGJjNjQwZGQ1Mjc1Li5lOWE2MTg0NzExNmY5ZjE0ZjgyNzY2
ZjA3YThjMDYwOTA1NDE2ZTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21h
Yy9FZGl0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFj
Lm1tCkBAIC0zMzUsOSArMzM1LDggQEAgdm9pZCBFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9h
cmQoUGFzdGVib2FyZCYgcGFzdGVib2FyZCwgRWxlbWVudCYgaW1hZ2VFbGVtZW4KICAgICBwYXN0
ZWJvYXJkSW1hZ2UudXJsLnVybCA9IHVybDsKICAgICBwYXN0ZWJvYXJkSW1hZ2UudXJsLnRpdGxl
ID0gdGl0bGU7CiAgICAgcGFzdGVib2FyZEltYWdlLnVybC51c2VyVmlzaWJsZUZvcm0gPSBXVEY6
OnVzZXJWaXNpYmxlU3RyaW5nKHBhc3RlYm9hcmRJbWFnZS51cmwudXJsKTsKLSAgICBwYXN0ZWJv
YXJkSW1hZ2UucmVzb3VyY2VEYXRhID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCk7Ci0g
ICAgcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUgPSBjYWNoZWRJbWFnZS0+cmVzcG9u
c2UoKS5taW1lVHlwZSgpOwotCisgICAgaWYgKGF1dG8qIGJ1ZmZlciA9IGNhY2hlZEltYWdlLT5y
ZXNvdXJjZUJ1ZmZlcigpKQorICAgICAgICBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhID0g
YnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIHBhc3RlYm9hcmQud3JpdGUocGFzdGVib2Fy
ZEltYWdlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNo
bWVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1l
bnQuY3BwCmluZGV4IDVhMmRiNWY4Zjc4YzMyNjBmMmQ0ZDA1OWE4NjcxMmI4NDk4ODUzNDkuLmQw
NzUyZTk4N2MyZTk0YzAzNGQyMjRjMTZiMGNkNDc3N2FlZDIzYzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCBz
dGF0aWMgYm9vbCBtaW1lVHlwZUlzU3VpdGFibGVGb3JJbmxpbmVJbWFnZUF0dGFjaG1lbnQoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICByZXR1cm4gTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBw
b3J0ZWRJbWFnZU1JTUVUeXBlKG1pbWVUeXBlKSB8fCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1BERk1J
TUVUeXBlKG1pbWVUeXBlKTsKIH0KIAotdm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0
ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBIVE1MQXR0YWNobWVudEVsZW1l
bnQ6OnVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEoY29uc3QgU3RyaW5nJiBjb250ZW50VHlw
ZSwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlm
IChidWZmZXItPmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjUzLDcgKzI1Myw3IEBA
IHZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRh
KGNvbnN0IFN0cmluZyYgY29udGVudFR5CiAgICAgaWYgKCFtaW1lVHlwZUlzU3VpdGFibGVGb3JJ
bmxpbmVJbWFnZUF0dGFjaG1lbnQobWltZVR5cGUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBl
bmNsb3NpbmdJbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFt
ZXM6OnNyY0F0dHIsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50KCksIEJsb2I6OmNy
ZWF0ZSgmZG9jdW1lbnQoKSwgYnVmZmVyLT5leHRyYWN0RGF0YSgpLCBtaW1lVHlwZSkpKTsKKyAg
ICBlbmNsb3NpbmdJbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1M
TmFtZXM6OnNyY0F0dHIsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50KCksIEJsb2I6
OmNyZWF0ZSgmZG9jdW1lbnQoKSwgYnVmZmVyLT5jb3B5RGF0YSgpLCBtaW1lVHlwZSkpKTsKIH0K
IAogdm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZVRodW1ibmFpbChjb25zdCBSZWZQ
dHI8SW1hZ2U+JiB0aHVtYm5haWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBdHRhY2htZW50RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVu
dEVsZW1lbnQuaAppbmRleCBmZDNkMWEzODFmMzdlYjU1OWFiMzdmZThjMGExNDBhZDdkOWM4MTBj
Li44YzRjOGNjODc2NDgyZGM0ZjU5Y2IwYTZjMjc5YTU2MTAyZWFmNTQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgY29weU5vbkF0dHJpYnV0ZVByb3BlcnRpZXNGcm9tRWxlbWVudChjb25z
dCBFbGVtZW50JikgZmluYWw7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUF0dHJp
YnV0ZXMoc3RkOjpvcHRpb25hbDx1aW50NjRfdD4mJiBuZXdGaWxlU2l6ZSwgY29uc3QgU3RyaW5n
JiBuZXdDb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBuZXdGaWxlbmFtZSk7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCB1cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlLCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRh
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVRodW1ibmFpbChjb25zdCBSZWZQdHI8
SW1hZ2U+JiB0aHVtYm5haWwpOwogCiAgICAgSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgaW5z
ZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNzI1YzUyMGEyZWIx
NmE3MzJhZGJkZmQwZGE4ZTEwOWU3Y2U0NTVjZS4uMjZlNDE2ZmMxOTJjYzFmZTU4ZGRlMTllM2Vl
M2FjYmRmOTNhNGY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CkBAIC0yOTQ1LDcgKzI5NDUsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNkbUNsaWVudEF0
dGVtcHRUb1Jlc3VtZVBsYXliYWNrSWZOZWNlc3NhcnkoKQogICAgIGF0dGVtcHRUb1Jlc3VtZVBs
YXliYWNrSWZOZWNlc3NhcnkoKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjZG1DbGll
bnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYgaW5p
dERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSkKK3ZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6Y2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFS
ZWNlaXZlZChjb25zdCBTdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgaW5pdERhdGEpCiB7CiAgICAgbWVkaWFQbGF5ZXJJbml0aWFsaXphdGlv
bkRhdGFFbmNvdW50ZXJlZChpbml0RGF0YVR5cGUsIGluaXREYXRhLT50cnlDcmVhdGVBcnJheUJ1
ZmZlcigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggODll
NmE2MjY4YmY2ZDYxYzVlMzczZjI5YTg0OTZiMWQ2NzczYmFkNC4uZjM1YTQ3NmJiODA0NzBiZTA0
YTc4OTNlNzgwMjY4OTU2OWNmOGRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmgKQEAgLTcxOSw3ICs3MTksNyBAQCBwcml2YXRlOgogCiAgICAgLy8gQ0RNQ2xpZW50CiAg
ICAgdm9pZCBjZG1DbGllbnRBdHRlbXB0VG9SZXN1bWVQbGF5YmFja0lmTmVjZXNzYXJ5KCkgZmlu
YWw7Ci0gICAgdm9pZCBjZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2Vp
dmVkKGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsK
KyAgICB2b2lkIGNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQo
Y29uc3QgU3RyaW5nJiwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFs
OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VE
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCmluZGV4
IDRkMTBmYjA1NzcyNDYyODU3Njg4NTAzZDY2NDc2OTdmMGNiMDRiYTEuLmY0MzhmYTRiMTE3Yjli
NmUxYmQ5MTc3NjBkYjg5MjkzMjBiYTNiMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSW1hZ2VEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3Vt
ZW50LmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6dXBkYXRlRHVy
aW5nUGFyc2luZygpCiAgICAgaWYgKCFtX2ltYWdlRWxlbWVudCkKICAgICAgICAgY3JlYXRlRG9j
dW1lbnRTdHJ1Y3R1cmUoKTsKIAotICAgIGlmIChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gbG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKSkKKyAgICBpZiAoYXV0byBi
dWZmZXIgPSBsb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpKQogICAgICAgICBtX2ltYWdlRWxl
bWVudC0+Y2FjaGVkSW1hZ2UoKS0+dXBkYXRlQnVmZmVyKCpidWZmZXIpOwogCiAgICAgaW1hZ2VV
cGRhdGVkKCk7CkBAIC0xNTEsMTIgKzE1MSw3IEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6ZmluaXNo
ZWRQYXJzaW5nKCkKIHsKICAgICBpZiAoIXBhcnNlcigpLT5pc1N0b3BwZWQoKSAmJiBtX2ltYWdl
RWxlbWVudCkgewogICAgICAgICBDYWNoZWRJbWFnZSYgY2FjaGVkSW1hZ2UgPSAqbV9pbWFnZUVs
ZW1lbnQtPmNhY2hlZEltYWdlKCk7Ci0gICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBkYXRhID0gbG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKLQotICAgICAgICAvLyBJ
ZiB0aGlzIGlzIGEgbXVsdGlwYXJ0IGltYWdlLCBtYWtlIGEgY29weSBvZiB0aGUgY3VycmVudCBw
YXJ0LCBzaW5jZSB0aGUgcmVzb3VyY2UgZGF0YQotICAgICAgICAvLyB3aWxsIGJlIG92ZXJ3cml0
dGVuIGJ5IHRoZSBuZXh0IHBhcnQuCi0gICAgICAgIGlmIChkYXRhICYmIGxvYWRlcigpLT5pc0xv
YWRpbmdNdWx0aXBhcnRDb250ZW50KCkpCi0gICAgICAgICAgICBkYXRhID0gZGF0YS0+Y29weSgp
OworICAgICAgICBhdXRvIGRhdGEgPSBsb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOwogCiAg
ICAgICAgIGNhY2hlZEltYWdlLmZpbmlzaExvYWRpbmcoZGF0YS5nZXQoKSwgeyB9KTsKICAgICAg
ICAgY2FjaGVkSW1hZ2UuZmluaXNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAppbmRleCAzMjhlYmU3ZTY0MTE5NWU1YTQ2ODUwMjc1
NTkxMGY3OGM0OGI1OGQ4Li40MGJmZWQ3YTdjOWZkMTMxMjYzOWY5NTAzNDliZmE3NTVmZmRiMzNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0Rh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0
YS5jcHAKQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjphZGRD
YWNoZWRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgQ2FjaGVkUmVzbwogICAgIHJl
c291cmNlRGF0YS0+c2V0Q2FjaGVkUmVzb3VyY2UoY2FjaGVkUmVzb3VyY2UpOwogfQogCi12b2lk
IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjphZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBTdHJp
bmcmIHJlcXVlc3RJZCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBj
b25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpCit2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRh
OjphZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgUmVmUHRy
PGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRl
eHRFbmNvZGluZ05hbWUpCiB7CiAgICAgUmVzb3VyY2VEYXRhKiByZXNvdXJjZURhdGEgPSByZXNv
dXJjZURhdGFGb3JSZXF1ZXN0SWQocmVxdWVzdElkKTsKICAgICBpZiAoIXJlc291cmNlRGF0YSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKaW5k
ZXggYzhjZWQxMmE2NDA3ZmRjZDU3NGVjYzJhNzgxOWVkZTY2MzgwM2RhYy4uODYyNzRhMzU2Y2Zm
NTdhMGJkNTBkZDQ1MjQ2ZjM2Y2EwMDM2OTcwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKQEAgLTg4LDggKzg4LDggQEAgcHVibGljOgog
ICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gZGVjb2RlcigpIGNvbnN0IHsgcmV0
dXJuIG1fZGVjb2Rlci5jb3B5UmVmKCk7IH0KICAgICAgICAgdm9pZCBzZXREZWNvZGVyKFJlZlB0
cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiYmIGRlY29kZXIpIHsgbV9kZWNvZGVyID0gV1RGTW92ZShk
ZWNvZGVyKTsgfQogCi0gICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZm
ZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5jb3B5UmVmKCk7IH0KLSAgICAgICAgdm9pZCBz
ZXRCdWZmZXIoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IG1fYnVm
ZmVyID0gV1RGTW92ZShidWZmZXIpOyB9CisgICAgICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5jb3B5UmVmKCk7
IH0KKyAgICAgICAgdm9pZCBzZXRCdWZmZXIoUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKSB7IG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOyB9CiAKICAgICAg
ICAgY29uc3Qgc3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+JiBjZXJ0aWZpY2F0ZUluZm8o
KSBjb25zdCB7IHJldHVybiBtX2NlcnRpZmljYXRlSW5mbzsgfQogICAgICAgICB2b2lkIHNldENl
cnRpZmljYXRlSW5mbyhjb25zdCBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4mIGNlcnRp
ZmljYXRlSW5mbykgeyBtX2NlcnRpZmljYXRlSW5mbyA9IGNlcnRpZmljYXRlSW5mbzsgfQpAQCAt
MTIwLDcgKzEyMCw3IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAg
ICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CiAgICAgICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhQnVmZmVyOwotICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBtX2J1ZmZlcjsKICAgICAgICAgc3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUlu
Zm8+IG1fY2VydGlmaWNhdGVJbmZvOwogICAgICAgICBDYWNoZWRSZXNvdXJjZSogbV9jYWNoZWRS
ZXNvdXJjZSB7IG51bGxwdHIgfTsKICAgICAgICAgSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJj
ZVR5cGUgbV90eXBlIHsgSW5zcGVjdG9yUGFnZUFnZW50OjpPdGhlclJlc291cmNlIH07CkBAIC0x
NDQsNyArMTQ0LDcgQEAgcHVibGljOgogICAgIFJlc291cmNlRGF0YSBjb25zdCogbWF5YmVBZGRS
ZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFNoYXJlZEJ1ZmZlciYp
OwogICAgIHZvaWQgbWF5YmVEZWNvZGVEYXRhVG9Db250ZW50KGNvbnN0IFN0cmluZyYgcmVxdWVz
dElkKTsKICAgICB2b2lkIGFkZENhY2hlZFJlc291cmNlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElk
LCBDYWNoZWRSZXNvdXJjZSopOwotICAgIHZvaWQgYWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIoY29u
c3QgU3RyaW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBj
b25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpOworICAgIHZvaWQgYWRkUmVzb3VyY2VTaGFy
ZWRCdWZmZXIoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpOwogICAgIFJl
c291cmNlRGF0YSBjb25zdCogZGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CiAgICAgUmVz
b3VyY2VEYXRhIGNvbnN0KiBkYXRhRm9yVVJMKGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICBWZWN0
b3I8U3RyaW5nPiByZW1vdmVDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQu
Y3BwCmluZGV4IGE0ZmZkMTM2MWNkZGU1YWI3ZDk3M2NkMDBkMTlhOTEwYWU5ZWQyOWYuLjUwMmZi
ODIzYmJiOThkMTFmODBjNjA4YmVmODRmN2Q3ZjczYWQ1MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTEw
MCwxMyArMTAwLDEzIEBAIHN0YXRpYyBib29sIGRlY29kZUJ1ZmZlcihjb25zdCB1aW50OF90KiBi
dWZmZXIsIHVuc2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4CiAKIGJvb2wgSW5zcGVjdG9y
UGFnZUFnZW50OjptYWluUmVzb3VyY2VDb250ZW50KEZyYW1lKiBmcmFtZSwgYm9vbCB3aXRoQmFz
ZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKIHsKLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPm1haW5S
ZXNvdXJjZURhdGEoKTsKKyAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
IGJ1ZmZlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5tYWluUmVzb3VyY2VE
YXRhKCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1
cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgpLT5lbmNvZGluZygp
LCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCi1ib29sIEluc3BlY3RvclBhZ2VBZ2Vu
dDo6c2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5j
b2RlLCBTdHJpbmcqIHJlc3VsdCkKK2Jvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZm
ZXJDb250ZW50KFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
Y29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0
cmluZyogcmVzdWx0KQogewogICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIgPyBidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6
ZSgpIDogMCwgdGV4dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFn
ZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VB
Z2VudC5oCmluZGV4IDNkNWU1NjZkYmUwYzVlYzExZDllOGRmNjdmY2YwYTcwOTg4YTJmOGYuLjVh
Yzk2MTkyZjQ2NDVjOTUzZmU2OTlmNDhkNzQ1ZTdiNmE2ZDhiMGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaApAQCAtNzUs
NyArNzUsNyBAQCBwdWJsaWM6CiAgICAgICAgIE90aGVyUmVzb3VyY2UsCiAgICAgfTsKIAotICAg
IHN0YXRpYyBib29sIHNoYXJlZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0
RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCk7CisgICAgc3RhdGljIGJvb2wgc2hhcmVkQnVmZmVyQ29u
dGVudChSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5n
JiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0
KTsKICAgICBzdGF0aWMgVmVjdG9yPENhY2hlZFJlc291cmNlKj4gY2FjaGVkUmVzb3VyY2VzRm9y
RnJhbWUoRnJhbWUqKTsKICAgICBzdGF0aWMgdm9pZCByZXNvdXJjZUNvbnRlbnQoSW5zcGVjdG9y
OjpQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBGcmFtZSosIGNvbnN0IFVSTCYsIFN0cmluZyogcmVz
dWx0LCBib29sKiBiYXNlNjRFbmNvZGVkKTsKICAgICBzdGF0aWMgU3RyaW5nIHNvdXJjZU1hcFVS
TEZvclJlc291cmNlKENhY2hlZFJlc291cmNlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmNwcAppbmRleCAzNTliNjM4NTE4Njg0MjNjMzdhMTAwNjM1MDFhNGRmMDZkOWFk
YmFhLi5mMTVkNjVhYWI4NDk5ODlmNTIzN2VkZGJmMjBkNWE2YjM5MzkyNmNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTIwNyw3ICsyMDcsNyBAQCBEb2N1
bWVudExvYWRlcjo6fkRvY3VtZW50TG9hZGVyKCkKICNlbmRpZgogfQogCi1SZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gRG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZURhdGEoKSBjb25z
dAorUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IERvY3VtZW50TG9hZGVyOjpt
YWluUmVzb3VyY2VEYXRhKCkgY29uc3QKIHsKICAgICBpZiAobV9zdWJzdGl0dXRlRGF0YS5pc1Zh
bGlkKCkpCiAgICAgICAgIHJldHVybiBtX3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKS0+Y29weSgp
OwpAQCAtMTY3MSw3ICsxNjcxLDcgQEAgQXJjaGl2ZVJlc291cmNlKiBEb2N1bWVudExvYWRlcjo6
YXJjaGl2ZVJlc291cmNlRm9yVVJMKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogCiBSZWZQdHI8QXJj
aGl2ZVJlc291cmNlPiBEb2N1bWVudExvYWRlcjo6bWFpblJlc291cmNlKCkgY29uc3QKIHsKLSAg
ICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IG1haW5SZXNvdXJjZURhdGEo
KTsKKyAgICBhdXRvIGRhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFkYXRhKQog
ICAgICAgICBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBhdXRvJiByZXNwb25z
ZSA9IHRoaXMtPnJlc3BvbnNlKCk7CkBAIC0yMjkyLDcgKzIyOTIsNyBAQCB2b2lkIERvY3VtZW50
TG9hZGVyOjpzdGFydEljb25Mb2FkaW5nKCkKICAgICBtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQo
KS5nZXRMb2FkRGVjaXNpb25Gb3JJY29ucyhpY29uRGVjaXNpb25zKTsKIH0KIAotdm9pZCBEb2N1
bWVudExvYWRlcjo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50
NjRfdCBsb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIERvY3VtZW50TG9hZGVyOjpk
aWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIGljb24gPSBtX2ljb25zUGVu
ZGluZ0xvYWREZWNpc2lvbi50YWtlKGxvYWRJZGVudGlmaWVyKTsKIApAQCAtMjMxMyw3ICsyMzEz
LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29s
IGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnQKICAgICByYXdJY29uTG9hZGVyLT5zdGFydExv
YWRpbmcoKTsKIH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6ZmluaXNoZWRMb2FkaW5nSWNvbihJ
Y29uTG9hZGVyJiBsb2FkZXIsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKK3ZvaWQg
RG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZ0ljb24oSWNvbkxvYWRlciYgbG9hZGVyLCBj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgLy8gSWYgdGhlIERv
Y3VtZW50TG9hZGVyIGhhcyBkZXRhY2hlZCBmcm9tIGl0cyBmcmFtZSwgYWxsIGljb24gbG9hZHMg
c2hvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIGNhbmNlbGxlZC4KICAgICBBU1NFUlQobV9mcmFtZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IGMyYmVhNmY2YTY5Yjgz
NjQ3MmMwYWZmN2EwZDcwNzAzOTZiYTZjMmIuLjBhNzMwNTJlZGNhZWIxMWY4ZDcwYzhmNTJmYzc1
MjQ3ZjQwNjBiMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC0x
ODEsNyArMTgxLDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgRnJhbWVMb2FkZXIq
IGZyYW1lTG9hZGVyKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3VicmVzb3VyY2VMb2Fk
ZXIqIG1haW5SZXNvdXJjZUxvYWRlcigpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhKCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1haW5S
ZXNvdXJjZURhdGEoKSBjb25zdDsKICAgICAKICAgICBEb2N1bWVudFdyaXRlciYgd3JpdGVyKCkg
Y29uc3QgeyByZXR1cm4gbV93cml0ZXI7IH0KIApAQCAtNDA4LDggKzQwOCw4IEBAIHB1YmxpYzoK
ICNlbmRpZgogCiAgICAgdm9pZCBzdGFydEljb25Mb2FkaW5nKCk7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90
IGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqKT4mJik7Ci0gICAgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKEljb25Mb2FkZXImLCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRHZXRM
b2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4m
Jik7CisgICAgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKEljb25Mb2FkZXImLCBjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKik7CiAKICAgICBjb25zdCBWZWN0b3I8TGlua0ljb24+JiBsaW5r
SWNvbnMoKSBjb25zdCB7IHJldHVybiBtX2xpbmtJY29uczsgfQogCkBAIC02MzgsNyArNjM4LDcg
QEAgcHJpdmF0ZToKICAgICBib29sIG1fd2FpdGluZ0Zvck5hdmlnYXRpb25Qb2xpY3kgeyBmYWxz
ZSB9OwogCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgTGlua0ljb24+IG1faWNvbnNQZW5kaW5nTG9h
ZERlY2lzaW9uOwotICAgIEhhc2hNYXA8c3RkOjp1bmlxdWVfcHRyPEljb25Mb2FkZXI+LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4+IG1faWNvbkxvYWRl
cnM7CisgICAgSGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8SWNvbkxvYWRlcj4sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopPj4gbV9pY29uTG9hZGVy
czsKICAgICBWZWN0b3I8TGlua0ljb24+IG1fbGlua0ljb25zOwogCiAjaWYgRU5BQkxFKEFQUExJ
Q0FUSU9OX01BTklGRVNUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCA1MGNiZDAyNDgwZWZiMzUwNjdiMTNjNzM2NjA4OTUy
Nzc0YzNhNjU2Li43YmMyYjc3NzEwZWM4MDE1Zjk2MDQ1MWRkZWM1MDdmNGUwYmEwZTQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNw
cApAQCAtNDk0LDE1ICs0OTQsMTggQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRp
ZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWYKIAogICAgICAg
ICBhdXRvIHJlc3BvbnNlID0gbV9yZXNvdXJjZS0+cmVzcG9uc2UoKTsKIAorICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIGlmIChtX3Jlc291cmNlLT5yZXNvdXJj
ZUJ1ZmZlcigpKQorICAgICAgICAgICAgYnVmZmVyID0gbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZm
ZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICAgICAgaWYgKG9wdGlvbnMoKS5maWx0ZXJpbmdQ
b2xpY3kgPT0gUmVzcG9uc2VGaWx0ZXJpbmdQb2xpY3k6OkRpc2FibGUpIHsKICAgICAgICAgICAg
IG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2UpOwotICAg
ICAgICAgICAgaWYgKGF1dG8qIGJ1ZmZlciA9IG1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkp
CisgICAgICAgICAgICBpZiAoYnVmZmVyKQogICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRS
ZWNlaXZlRGF0YSgqYnVmZmVyKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VS
VChyZXNwb25zZS50eXBlKCkgPT0gUmVzb3VyY2VSZXNwb25zZTo6VHlwZTo6RGVmYXVsdCk7CiAK
ICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgUmVz
b3VyY2VSZXNwb25zZTo6ZmlsdGVyKHJlc3BvbnNlLCBtX29wdGlvbnMuY3JlZGVudGlhbHMgPT0g
RmV0Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6SW5jbHVkZSA/IFJlc291cmNlUmVzcG9uc2U6OlBl
cmZvcm1FeHBvc2VBbGxIZWFkZXJzQ2hlY2s6Ok5vIDogUmVzb3VyY2VSZXNwb25zZTo6UGVyZm9y
bUV4cG9zZUFsbEhlYWRlcnNDaGVjazo6WWVzKSk7Ci0gICAgICAgICAgICBpZiAoYXV0byogYnVm
ZmVyID0gbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkKKyAgICAgICAgICAgIGlmIChidWZm
ZXIpCiAgICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKCpidWZmZXIpOwog
ICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAK
aW5kZXggMWFkYzNjM2NkYjliYWZmOWM0MzM2MjEzNmRlODdjNjA1NzJmZmZiZC4uYTFiZjBhMDE3
ODE0YWI1ODhkZDM3ZDI5MzQ4ZmQ0YzQzYzA4MGZhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xOTMsNyArMTkzLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRl
cjo6aW5pdChSZXNvdXJjZVJlcXVlc3QmJiBjbGllbnRSZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2kKICAgICB9KTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGVsaXZlclJlc3BvbnNl
QW5kRGF0YShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGVsaXZlclJl
c3BvbnNlQW5kRGF0YShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGRpZFJlY2VpdmVS
ZXNwb25zZShyZXNwb25zZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBi
dWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChyZWFjaGVk
VGVybWluYWxTdGF0ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAppbmRl
eCBlNTUxZDBkYzIxOTgxYjY4OWM0NGFjNmQ2NGVhMTY4Mjg0ZWQ5NjI3Li5jNTkzMmQ5ZTU2OTg2
ZmQyZDExYjRlYTdiYjAzY2VlOWEzYWZhNGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuaApAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQg
aW5pdChSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CiAKLSAgICB2b2lkIGRlbGl2ZXJSZXNwb25zZUFuZERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGRlbGl2ZXJS
ZXNwb25zZUFuZERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
dmlydHVhbCB2b2lkIHN0YXJ0TG9hZGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3Vic3RpdHV0ZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRl
RGF0YS5oCmluZGV4IGE4YTQ5YjQ3ZjkyNzM0Mjc0YmE0Y2VhYmMxNzA3ZmVmYTdiNjY0MGQuLmY5
ZTYwOWZhZjViNDQzMzZiODcwOWM2NjNiNjFiNzBiNTczMDQyNDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJzdGl0dXRlRGF0YS5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgU3Vic3RpdHV0ZURhdGEoUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgY29udGVudCwgY29uc3QgVVJMJiBmYWlsaW5nVVJM
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgU2Vzc2lvbkhpc3RvcnlWaXNpYmls
aXR5IHNob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkpCisgICAgICAgIFN1YnN0aXR1dGVEYXRh
KFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGNvbnRlbnQsIGNvbnN0IFVS
TCYgZmFpbGluZ1VSTCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFNlc3Npb25I
aXN0b3J5VmlzaWJpbGl0eSBzaG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5KQogICAgICAgICAg
ICAgOiBtX2NvbnRlbnQoV1RGTW92ZShjb250ZW50KSkKICAgICAgICAgICAgICwgbV9mYWlsaW5n
VVJMKGZhaWxpbmdVUkwpCiAgICAgICAgICAgICAsIG1fcmVzcG9uc2UocmVzcG9uc2UpCkBAIC02
MSw3ICs2MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9CiAgICAgICAg
IAogICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBt
X2NvbnRlbnQ7CisgICAgICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBt
X2NvbnRlbnQ7CiAgICAgICAgIFVSTCBtX2ZhaWxpbmdVUkw7CiAgICAgICAgIFJlc291cmNlUmVz
cG9uc2UgbV9yZXNwb25zZTsKICAgICAgICAgU2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5IG1fc2hv
dWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSB7IFNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eTo6SGlk
ZGVuIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291
cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKaW5kZXgg
M2QxOTI4NjJmMjc3MjliMmYzOGRiNTRiZDgzNjc5OTUyNWMwMTlkMy4uOTY0NzIyMDJiODNmNmEx
ZGY5YTY5ODg1MjQ4MmM0NDQ3NGE1MTZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJz
dGl0dXRlUmVzb3VyY2UuaApAQCAtMzcsMTQgKzM3LDE0IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0
IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KLSAgICBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX3JlZmVyZW5j
ZV9jYXN0PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KFJlZiB7ICptX2RhdGEuZ2V0KCkgfSk7IH0K
KyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX3JlZmVyZW5jZV9jYXN0PGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KFJlZiB7
ICptX2RhdGEuZ2V0KCkgfSk7IH0KICAgICB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikgeyBtX2RhdGEuYXBwZW5kKGJ1ZmZlcik7IH0KICAgICB2b2lkIGNsZWFyKCkgeyBt
X2RhdGEuZW1wdHkoKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2Fk
ZXImIGxvYWRlcikgeyBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3BvbnNlLCBt
X2RhdGEuY29weSgpKTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgU3Vic3RpdHV0ZVJlc291cmNlKFVS
TCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhKQorICAgIFN1YnN0aXR1dGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291
cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgZGF0YSkKICAgICAgICAgOiBtX3VybChXVEZNb3ZlKHVybCkpCiAgICAgICAgICwgbV9yZXNw
b25zZShXVEZNb3ZlKHJlc3BvbnNlKSkKICAgICAgICAgLCBtX2RhdGEoV1RGTW92ZShkYXRhKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZS5jcHAKaW5kZXggMjU2ZTg5YjIxMWIzOGIyZDIxZGNkNjY1NzgyNjll
NjYwNzM2NzMyNy4uZmQwMTI1MmE1YWI0MTI2ZmQ1MTNiZWJkMTA1Zjc2YjcwMGY3NWQ4MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZS5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1SZWY8QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiBBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2U6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIHVuc2lnbmVkIHR5cGUsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgY29uc3QgU3RyaW5nJiBwYXRoKQorUmVmPEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4g
QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25lZCB0eXBlLCBSZWZQdHI8Y29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAg
ICBBU1NFUlQoIXVybC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSk7CiAgICAgaWYgKCFidWZmZXIp
CkBAIC00MCw3ICs0MCw3IEBAIFJlZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBjCiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCB7IHVybCB9LCBXVEZNb3Zl
KHJlc291cmNlUmVzcG9uc2UpLCB0eXBlLCBidWZmZXIucmVsZWFzZU5vbk51bGwoKSwgcGF0aCkp
OwogfQogCi1BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgdW5zaWduZWQgdHlwZSwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoKQor
QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoVVJMJiYg
dXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIHVuc2lnbmVkIHR5cGUsIFJlZjxjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCkKICAg
ICA6IFN1YnN0aXR1dGVSZXNvdXJjZShXVEZNb3ZlKHVybCksIFdURk1vdmUocmVzcG9uc2UpLCBX
VEZNb3ZlKGRhdGEpKQogICAgICwgbV90eXBlKHR5cGUpCiAgICAgLCBtX3N0b3JhZ2VJRCgwKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZS5oCmluZGV4IGMyODhlNzAzNmM2NzYyYWQ0ODc2YmE4ODE0NjlhNzVkMjIz
N2UxYmEuLjgxYzBmYTg5MTk1NWY4ODFiNDI1NWMyMzJiMmRhYjIxNGEyZGQ3MjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgICAgICBGYWxsYmFjayA9
IDEgPDwgNAogICAgIH07CiAKLSAgICBzdGF0aWMgUmVmPEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCB1bnNpZ25lZCB0
eXBlLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCksIGNvbnN0IFN0cmluZyYgcGF0aCA9IFN0cmluZygpKTsKKyAgICBzdGF0aWMgUmVmPEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gY3JlYXRlKGNvbnN0IFVSTCYsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCB1bnNpZ25lZCB0eXBlLCBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGNvbnN0IFN0cmluZyYgcGF0aCA9IFN0
cmluZygpKTsKIAogICAgIHVuc2lnbmVkIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0K
ICAgICB2b2lkIGFkZFR5cGUodW5zaWduZWQgdHlwZSk7CkBAIC01OCw3ICs1OCw3IEBAIHB1Ymxp
YzoKICNlbmRpZgogICAgIAogcHJpdmF0ZToKLSAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Uo
VVJMJiYsIFJlc291cmNlUmVzcG9uc2UmJiwgdW5zaWduZWQgdHlwZSwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgcGF0aCk7CisgICAgQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlKFVSTCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYsIHVuc2lnbmVkIHR5cGUsIFJlZjxj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHBhdGgpOwogCiAg
ICAgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UuY3BwCmluZGV4IDZiOWU3ZTI5NWZkNmZiMjBmZjBkNzRmZGNmMjNmYzY2MDBhNjAwM2YuLjE3
N2M0MzQ3ZTNhOTExODIyM2UyNTE5Mjk0ZjM3ZTA3MzNjZTViNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
LmNwcApAQCAtMTI3Miw3ICsxMjcyLDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
c2hvdWxkU3RvcmVSZXNvdXJjZUFzRmxhdEZpbGUoQXBwbGljYXRpb25DYWNoZVJlc28KICAgICBy
ZXR1cm4gc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAiYXVkaW8vIikg
fHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAidmlkZW8vIik7CiB9
CiAgICAgCi1ib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjp3cml0ZURhdGFUb1VuaXF1ZUZp
bGVJbkRpcmVjdG9yeShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcm
IGRpcmVjdG9yeSwgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24pCiti
b29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjp3cml0ZURhdGFUb1VuaXF1ZUZpbGVJbkRpcmVj
dG9yeShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIGRp
cmVjdG9yeSwgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24pCiB7CiAg
ICAgU3RyaW5nIGZ1bGxQYXRoOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaAppbmRleCA0MTAyYTE4MDhi
NDU1NTdiNjQ1ZTM2ZTdlNjgxZmM0YzZkMjA3Y2UyLi5lMTJhMDQyZTRhMzRkMzEyY2M1MjdlYmQ0
YWUwN2YxZGZhNmU4MzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaApAQCAtMTIyLDcgKzEyMiw3IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBlbnN1cmVPcmlnaW5SZWNvcmQoY29uc3QgU2VjdXJpdHlPcmlnaW4q
KTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRTdG9yZVJlc291cmNlQXNGbGF0RmlsZShBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UqKTsKICAgICB2b2lkIGRlbGV0ZVRhYmxlcygpOwotICAgIGJvb2wg
d3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJlY3RvcnkoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYs
IGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBTdHJpbmcmIG91dEZpbGVuYW1lLCBjb25zdCBTdHJp
bmcmIGZpbGVFeHRlbnNpb24pOworICAgIGJvb2wgd3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJl
Y3RvcnkoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgZGlyZWN0
b3J5LCBTdHJpbmcmIG91dEZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24pOwog
CiAgICAgdm9pZCBsb2FkTWFuaWZlc3RIb3N0SGFzaGVzKCk7CiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAKaW5kZXggNGVmOWNkNjZi
ZDA4OGI3NGMwNDZjMDY5MGQxZTlkM2U1ZTMzNjBmZC4uZWViMDE2NmQzZWE1OGRiY2YwNDAzM2Ew
ZThjNzQyYWUzZWVmM2UyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvQXJjaGl2ZUZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L0FyY2hpdmVGYWN0b3J5LmNwcApAQCAtNDYsMTIgKzQ2LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotdHlwZWRlZiBSZWZQdHI8QXJjaGl2ZT4gUmF3RGF0YUNyZWF0aW9uRnVuY3Rpb24o
Y29uc3QgVVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwordHlwZWRlZiBSZWZQdHI8QXJj
aGl2ZT4gUmF3RGF0YUNyZWF0aW9uRnVuY3Rpb24oY29uc3QgVVJMJiwgY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpOwogdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmF3RGF0YUNyZWF0aW9u
RnVuY3Rpb24qLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IEFyY2hpdmVNSU1FVHlwZXNNYXA7
CiAKIC8vIFRoZSBjcmVhdGUgZnVuY3Rpb25zIGluIHRoZSBhcmNoaXZlIGNsYXNzZXMgcmV0dXJu
IFJlZlB0ciB0byBjb25jcmV0ZSBzdWJjbGFzc2VzCiAvLyBvZiBBcmNoaXZlLiBUaGlzIGFkYXB0
b3IgbWFrZXMgdGhlIGZ1bmN0aW9ucyBoYXZlIGEgdW5pZm9ybSByZXR1cm4gdHlwZS4KLXRlbXBs
YXRlPHR5cGVuYW1lIEFyY2hpdmVDbGFzcz4gc3RhdGljIFJlZlB0cjxBcmNoaXZlPiBhcmNoaXZl
RmFjdG9yeUNyZWF0ZShjb25zdCBVUkwmIHVybCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQordGVtcGxhdGU8dHlwZW5hbWUgQXJjaGl2ZUNsYXNzPiBzdGF0aWMgUmVmUHRyPEFyY2hp
dmU+IGFyY2hpdmVGYWN0b3J5Q3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgcmV0dXJuIEFyY2hpdmVDbGFzczo6Y3JlYXRl
KHVybCwgYnVmZmVyKTsKIH0KQEAgLTgzLDcgKzgzLDcgQEAgYm9vbCBBcmNoaXZlRmFjdG9yeTo6
aXNBcmNoaXZlTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICByZXR1cm4gIW1p
bWVUeXBlLmlzRW1wdHkoKSAmJiBhcmNoaXZlTUlNRVR5cGVzKCkuY29udGFpbnMobWltZVR5cGUp
OwogfQogCi1SZWZQdHI8QXJjaGl2ZT4gQXJjaGl2ZUZhY3Rvcnk6OmNyZWF0ZShjb25zdCBVUkwm
IHVybCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSkKK1JlZlB0cjxBcmNoaXZlPiBBcmNoaXZlRmFjdG9yeTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKQogewogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuaAppbmRleCA1NTY0NTE1
YzllMGQ5ZDAzM2I3OTBjNzQ3Mjg1YTI1ODUzYWJlMDJkLi4yYWRlNzgyYzI1NWQ0Yzc0ZmJlZDQ1
ZWZiOTUwZWMwYTc1NTM4NTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9BcmNoaXZlRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L0FyY2hpdmVGYWN0b3J5LmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIEFyY2hpdmVGYWN0b3J5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgYm9v
bCBpc0FyY2hpdmVNSU1FVHlwZShjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgUmVmUHRyPEFy
Y2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKKyAgICBzdGF0aWMgUmVmUHRyPEFyY2hpdmU+IGNyZWF0
ZShjb25zdCBVUkwmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKTsKICAgICBzdGF0aWMgdm9pZCByZWdpc3Rlcktub3duQXJjaGl2ZU1J
TUVUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYpOwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5j
cHAKaW5kZXggMDczODM5NGE4Mjg3MTRhYTBiOTBlZTc1MDc5ZDQ4NmY1YjBlODY5NC4uYmQ3Zjg1
NTFjOGZiYWExOWMwMTY4ZjJmYzdkZjExZmRjOTBhZmY1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuY3BwCkBAIC0zMyw3ICszMyw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotaW5saW5lIEFyY2hpdmVSZXNvdXJjZTo6QXJjaGl2
ZVJlc291cmNlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywg
Y29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
KQoraW5saW5lIEFyY2hpdmVSZXNvdXJjZTo6QXJjaGl2ZVJlc291cmNlKFJlZjxjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFt
ZU5hbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIDogU3Vic3RpdHV0
ZVJlc291cmNlKFVSTCB7IHVybCB9LCBSZXNvdXJjZVJlc3BvbnNlIHsgcmVzcG9uc2UgfSwgV1RG
TW92ZShkYXRhKSkKICAgICAsIG1fbWltZVR5cGUobWltZVR5cGUpCiAgICAgLCBtX3RleHRFbmNv
ZGluZyh0ZXh0RW5jb2RpbmcpCkBAIC00Miw3ICs0Miw3IEBAIGlubGluZSBBcmNoaXZlUmVzb3Vy
Y2U6OkFyY2hpdmVSZXNvdXJjZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBj
b25zCiB7CiB9CiAKLVJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IEFyY2hpdmVSZXNvdXJjZTo6Y3Jl
YXRlKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29u
c3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQor
UmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJp
bmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAg
aWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTU0LDcgKzU0LDcgQEAgUmVm
UHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBcmNoaXZlUmVz
b3VyY2UoZGF0YS5yZWxlYXNlTm9uTnVsbCgpLCB1cmwsIG1pbWVUeXBlLCB0ZXh0RW5jb2Rpbmcs
IGZyYW1lTmFtZSwgcmVzcG9uc2UpKTsKIH0KIAotUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJj
aGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0
YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorUmVm
UHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIHJldHVybiBjcmVhdGUoV1RGTW92ZShk
YXRhKSwgdXJsLCByZXNwb25zZS5taW1lVHlwZSgpLCByZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1l
KCksIFN0cmluZygpLCByZXNwb25zZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5oCmluZGV4IDA1NDhlZjcyMWVmZDI3YzAwY2U5M2QxMjI3
MGVjZWM0NmMwMmFmOTQuLjhlNDhjOWU4MjliNDRmMTM3MTBlYjY3YmE2ODU4ODc0YzE4Yjc0M2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5o
CkBAIC0zNCw4ICszNCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXJjaGl2ZVJl
c291cmNlIDogcHVibGljIFN1YnN0aXR1dGVSZXNvdXJjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNyZWF0ZShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiwgY29uc3QgVVJMJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBjcmVhdGUoUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsCisgICAgc3RhdGljIFJlZlB0cjxB
cmNoaXZlUmVzb3VyY2U+IGNyZWF0ZShSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiwgY29uc3QgVVJMJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBjcmVhdGUoUmVmUHRyPGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsCiAgICAgICAgIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcm
IGZyYW1lTmFtZSwKICAgICAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgPSBSZXNvdXJjZVJl
c3BvbnNlKCkpOwogCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZEln
bm9yZVdoZW5VbmFyY2hpdmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkSWdub3JlV2hlblVu
YXJjaGl2aW5nOyB9CiAKIHByaXZhdGU6Ci0gICAgQXJjaGl2ZVJlc291cmNlKFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBj
b25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBBcmNoaXZlUmVzb3VyY2UoUmVmPGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpOwogCiAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgU3Ry
aW5nIG1fdGV4dEVuY29kaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAppbmRleCA3ZjRiYWQ2ZmNjM2E5Yzk3YTZhNTE3
YWI5YjI5ZDA4MGNhOWRhNzFiLi4xY2UwYWQxZDhlNTVjNmM1OTBmYmYyOTIxYjQwODNlNWU2MzFl
ZDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lX
ZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdh
Y3lXZWJBcmNoaXZlLmNwcApAQCAtMjQ4LDEyICsyNDgsMTIgQEAgUmVmPExlZ2FjeVdlYkFyY2hp
dmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShSZWY8QXJjaGl2ZVJlc291cmNlPiYmIG1haW5S
ZXNvdXIKICAgICByZXR1cm4gYXJjaGl2ZTsKIH0KIAotUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+
IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQor
UmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIHJldHVybiBjcmVhdGUoVVJMKCks
IGRhdGEpOwogfQogCi1SZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6
Y3JlYXRlKGNvbnN0IFVSTCYsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCitSZWZQdHI8
TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYsIGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgTE9HKEFyY2hpdmVzLCAi
TGVnYWN5V2ViQXJjaGl2ZSAtIENyZWF0aW5nIGZyb20gcmF3IGRhdGEiKTsKIApAQCAtNTU0LDcg
KzU1NCw3IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGUoY29uc3QgU3RyaW5nJiBtYXJrdXBTdHJpbmcsIEZyCiAgICAgICAgICAgICAgICAgcmVxdWVz
dC5zZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbihmcmFtZS5kb2N1bWVudCgpLT5kb21haW5Gb3JD
YWNoZVBhcnRpdGlvbigpKTsKIAogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjYWNoZWRSZXNv
dXJjZSA9IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5yZXNvdXJjZUZvclJlcXVlc3QocmVxdWVz
dCwgZnJhbWUucGFnZSgpLT5zZXNzaW9uSUQoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KGF1dG8gcmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShjYWNoZWRSZXNvdXJjZS0+
cmVzb3VyY2VCdWZmZXIoKSwgc3VicmVzb3VyY2VVUkwsIGNhY2hlZFJlc291cmNlLT5yZXNwb25z
ZSgpKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byByZXNvdXJjZSA9IEFyY2hpdmVS
ZXNvdXJjZTo6Y3JlYXRlKGNhY2hlZFJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpLT5tYWtlQ29u
dGlndW91cygpLCBzdWJyZXNvdXJjZVVSTCwgY2FjaGVkUmVzb3VyY2UtPnJlc3BvbnNlKCkpKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICBzdWJyZXNvdXJjZXMuYXBwZW5kKHJlc291cmNlLnJl
bGVhc2VOb25OdWxsKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNo
aXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L2NmL0xlZ2FjeVdlYkFyY2hpdmUuaAppbmRleCA1YTA3YjEwYjRiZTZmODYyMDExYTc4MmE3ZGVk
MjM2NzU5MjQzNjI2Li4zYzQyMzJlMTZlMjYwZTU1ZmZlYWM2ZmU3MzU1ZWY5ZTU5Yjc1ODkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNo
aXZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJj
aGl2ZS5oCkBAIC00MSw4ICs0MSw4IEBAIHN0cnVjdCBTaW1wbGVSYW5nZTsKIGNsYXNzIExlZ2Fj
eVdlYkFyY2hpdmUgZmluYWwgOiBwdWJsaWMgQXJjaGl2ZSB7CiBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxMZWdh
Y3lXZWJBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYp
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3Jl
YXRlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxM
ZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoUmVmPEFyY2hpdmVSZXNvdXJjZT4mJiBtYWluUmVzb3Vy
Y2UsIFZlY3RvcjxSZWY8QXJjaGl2ZVJlc291cmNlPj4mJiBzdWJyZXNvdXJjZXMsIFZlY3RvcjxS
ZWY8TGVnYWN5V2ViQXJjaGl2ZT4+JiYgc3ViZnJhbWVBcmNoaXZlcyk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoTm9kZSYsIEZ1bmN0
aW9uPGJvb2woRnJhbWUmKT4mJiBmcmFtZUZpbHRlciA9IHsgfSk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoRnJhbWUmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3Bw
CmluZGV4IGQwMTM5Zjg3YTA2Zjk2OTc4Yjc0NzdlOWY0OTk5YzM0ZWE5Zjg2MjUuLmQ3NTBlM2My
ODI2YTA2ZTgyM2NkNjEzMzhkNTI5NzQ2MWVkNDA4YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcApAQCAtMTA2LDcgKzEw
Niw3IEBAIFJlZjxNSFRNTEFyY2hpdmU+IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKCkKICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBNSFRNTEFyY2hpdmUpOwogfQogCi1SZWZQdHI8TUhUTUxBcmNoaXZl
PiBNSFRNTEFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgZGF0YSkKK1JlZlB0cjxNSFRNTEFyY2hpdmU+IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAg
IC8vIEZvciBzZWN1cml0eSByZWFzb25zIHdlIG9ubHkgbG9hZCBNSFRNTCBwYWdlcyBmcm9tIGxv
Y2FsIFVSTHMuCiAgICAgaWYgKCFMZWdhY3lTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxT
Y2hlbWVBc0xvY2FsKHVybC5wcm90b2NvbCgpLnRvU3RyaW5nKCkpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaAppbmRleCAyZGZlODdl
ODJlN2E0ZGNlMGYzNDFjMzYxOTQzYzk5MDIwNWM4ZGIxLi5lZjg3YmJmZDQ4NWIxNGExYjAxNzJk
NjFiNDM2NjE0YTcyN2Y4YmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgTUhUTUxBcmNoaXZlIGZpbmFsIDogcHVibGljIEFyY2hp
dmUgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TUhUTUxBcmNoaXZlPiBjcmVhdGUoKTsKLSAg
ICBzdGF0aWMgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gY3JlYXRl
KGNvbnN0IFVSTCYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0YXRp
YyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZ2VuZXJhdGVNSFRNTERhdGEoUGFnZSopOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBh
cnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNl
ci5jcHAKaW5kZXggZTUxODZlZmIwYjRmYTcwY2I2MDkzMWY0ODRlNTAwY2MxMGUwMGJjYi4uZDQ4
ZmNkN2JjM2IyZjFiYjQ3MTM4ZjllYTJhMDk4MDQ1ZjlmYWFlZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcApAQCAtNTEsNyAr
NTEsNyBAQCBzdGF0aWMgYm9vbCBza2lwTGluZXNVbnRpbEJvdW5kYXJ5Rm91bmQoU2hhcmVkQnVm
ZmVyQ2h1bmtSZWFkZXImIGxpbmVSZWFkZXIsIGNvbgogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
TUhUTUxQYXJzZXI6Ok1IVE1MUGFyc2VyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCitN
SFRNTFBhcnNlcjo6TUhUTUxQYXJzZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0
YSkKICAgICA6IG1fbGluZVJlYWRlcihkYXRhLCAiXHJcbiIpCiB7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuaAppbmRleCAwZDYwNDM0
M2YzZDdhZDE3OGNjMjIwMDNjOTc5YzIyZTUwYTNiOTllLi4xMWI4YmRlYzllMWM0YjFkYzUxNzU1
YjVhZDlhNmY1YzgwMGYyOGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNo
aXZlL21odG1sL01IVE1MUGFyc2VyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgTUhUTUxQYXJzZXIgewogcHVibGljOgotICAgIGV4cGxp
Y2l0IE1IVE1MUGFyc2VyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKTsKKyAgICBleHBsaWNpdCBN
SFRNTFBhcnNlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik7CiAKICAgICBSZWZQdHI8
TUhUTUxBcmNoaXZlPiBwYXJzZUFyY2hpdmUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCmluZGV4IGRk
ZDBiMWI4OWIxZDg3MmJiNDI3MjdlZTc4ZDhmZDYzOWU0Yjg5NDYuLmU5OWZhNWZjYjJiNzJiMDQz
Zjg2ODk5NTQ4MDg2ZWUwYTBiZTNkMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKQEAgLTQzLDkgKzQz
LDEwIEBAIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZl
c3QoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxCiB2b2lkIENhY2hlZEFwcGxpY2F0aW9uTWFu
aWZlc3Q6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7Ci0g
ICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGF1dG8gY29u
dGlndW91c0RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOwogICAgICAgICBzZXRFbmNvZGVk
U2l6ZShkYXRhLT5zaXplKCkpOwotICAgICAgICBtX3RleHQgPSBtX2RlY29kZXItPmRlY29kZUFu
ZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICBtX3RleHQgPSBt
X2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGNvbnRpZ3VvdXNEYXRhLT5kYXRhKCksIGRhdGEtPnNp
emUoKSk7CisgICAgICAgIG1fZGF0YSA9IFdURk1vdmUoY29udGlndW91c0RhdGEpOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAgICAgIHNldEVuY29kZWRTaXpl
KDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0
eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxl
U2hlZXQuY3BwCmluZGV4IDM4YTJlMTdmMGQwNmM4YWM5OGRlMjRiMWU1MmI4ZTYwZTkyNDEyMGIu
LjcwYjM4ZjYxZmMwZmYwZWI2MjMyYjQ3MDFmZmI2ODliMGU2MTg2NmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTEw
MCwxMCArMTAwLDExIEBAIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0Qm9keURhdGFGcm9t
KGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVl
dDo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKGRhdGEpIHsKLSAgICAg
ICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgYXV0byBjb250aWd1
b3VzRGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CiAgICAgICAgIHNldEVuY29kZWRTaXpl
KGRhdGEtPnNpemUoKSk7CiAgICAgICAgIC8vIERlY29kZSB0aGUgZGF0YSB0byBmaW5kIG91dCB0
aGUgZW5jb2RpbmcgYW5kIGtlZXAgdGhlIHNoZWV0IHRleHQgYXJvdW5kIGR1cmluZyBjaGVja05v
dGlmeSgpCi0gICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5k
Rmx1c2gobV9kYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgIG1fZGVjb2RlZFNo
ZWV0VGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goY29udGlndW91c0RhdGEtPmRhdGEo
KSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgbV9kYXRhID0gV1RGTW92ZShjb250aWd1b3VzRGF0
YSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKICAgICAgICAgc2V0
RW5jb2RlZFNpemUoMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5j
cHAKaW5kZXggZDJiYzI4MjE0NzljNTlhMjMyM2U0ZjY1Y2Q5NGI2M2I0MjM3MzY0Ni4uMmQ0NTYy
ZGViZjcxYjY1ZTU2YTA2MDRlNzE3NDc1NTVhNGUwNWM4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApAQCAtODcsNyArODcsMTAgQEAgdm9pZCBDYWNoZWRG
b250OjpiZWdpbkxvYWRJZk5lZWRlZChDYWNoZWRSZXNvdXJjZUxvYWRlciYgbG9hZGVyKQogCiBi
b29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmKQog
ewotICAgIHJldHVybiBlbnN1cmVDdXN0b21Gb250RGF0YShtX2RhdGEuZ2V0KCkpOworICAgIGlm
ICghbV9kYXRhKQorICAgICAgICByZXR1cm4gZW5zdXJlQ3VzdG9tRm9udERhdGEobnVsbHB0cik7
CisgICAgQVNTRVJUKGlzPFNoYXJlZEJ1ZmZlcj4obV9kYXRhKSk7CisgICAgcmV0dXJuIGVuc3Vy
ZUN1c3RvbUZvbnREYXRhKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS5wdHIoKSk7CiB9CiAKIFN0
cmluZyBDYWNoZWRGb250OjpjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IGE4YzdlODdhMTY0
YjkyYTBjMmI2NzUxZDU4MWNmOGFmNGNiYWU3NjEuLjM2MGMyYjRlYjJjZGRkMTFjYjRjZTBkYThj
ZDQwMjMyYjBkYWU2NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmNwcApAQCAtNDcwLDcgKzQ3MCw3IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVh
ckltYWdlKCkKIAogdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3Qg
U2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMo
KTsKKyAgICBtX2RhdGEgPSAmZGF0YTsKICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUo
KSk7CiAgICAgY3JlYXRlSW1hZ2UoKTsKIApAQCAtNTQyLDcgKzU0Miw3IEBAIEVuY29kZWREYXRh
U3RhdHVzIENhY2hlZEltYWdlOjp1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
CiB7CiAgICAgaWYgKCFtX2ltYWdlIHx8ICFtX2RhdGEpCiAgICAgICAgIHJldHVybiBFbmNvZGVk
RGF0YVN0YXR1czo6RXJyb3I7Ci0gICAgRW5jb2RlZERhdGFTdGF0dXMgcmVzdWx0ID0gbV9pbWFn
ZS0+c2V0RGF0YShtX2RhdGEuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CisgICAgRW5jb2RlZERh
dGFTdGF0dXMgcmVzdWx0ID0gbV9pbWFnZS0+c2V0RGF0YShtX2RhdGEuY29weVJlZigpLCBhbGxE
YXRhUmVjZWl2ZWQpOwogICAgIGRpZFVwZGF0ZUltYWdlRGF0YSgpOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291
cmNlLmNwcAppbmRleCA1NWM0NWJlYmZmNGY0YTRjZjRkZDk3OTc0N2RhZjhmZTRhMjI0MTVjLi44
N2M2NTZkYzhlNzU1NjljYjU0ODc2OGU2YTIyNDI1NzAxNWNmNjY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKQEAgLTQ4LDcgKzQ4
LDcgQEAgQ2FjaGVkUmF3UmVzb3VyY2U6OkNhY2hlZFJhd1Jlc291cmNlKENhY2hlZFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIFR5cGUgdHlwZSwKICAgICBBU1NFUlQoaXNNYWluT3JNZWRpYU9y
SWNvbk9yUmF3UmVzb3VyY2UoKSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0
YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhj
b25zdCBTaGFyZWRCdWZmZXImIGRhdGEpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZl
ckRhdGFWaWV3PiBDYWNoZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1
bmsoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkgY29uc3QKIHsKICAgICBzaXpl
X3QgcHJldmlvdXNEYXRhTGVuZ3RoID0gZW5jb2RlZFNpemUoKTsKICAgICBpZiAoZGF0YS5zaXpl
KCkgPD0gcHJldmlvdXNEYXRhTGVuZ3RoKQpAQCAtNjUsMTAgKzY1LDkgQEAgdm9pZCBDYWNoZWRS
YXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRh
dGEpCiAgICAgLy8gV2UgbmVlZCB0byBrZWVwIGEgc3Ryb25nIHJlZmVyZW5jZSB0byBib3RoIHRo
ZSBTaGFyZWRCdWZmZXIgYW5kIHRoZSBjdXJyZW50IENhY2hlZFJhd1Jlc291cmNlIGluc3RhbmNl
CiAgICAgLy8gYXMgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZCBjYWxsIG1heSBkZWxldGUg
Ym90aC4KICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVj
dGVkVGhpcyh0aGlzKTsKLSAgICBhdXRvIHByb3RlY3RlZERhdGEgPSBSZWYgeyBkYXRhIH07CiAK
ICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6
OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBt
X2RhdGEgPSAmZGF0YTsKIAogICAgIC8vIE5vdGlmeSBjbGllbnRzIG9ubHkgb2YgdGhlIG5ld2x5
IGFwcGVuZGVkIGNvbnRlbnQgc2luY2UgdGhlIGxhc3QgcnVuLgogICAgIGF1dG8gcHJldmlvdXNE
YXRhU2l6ZSA9IGVuY29kZWRTaXplKCk7CkBAIC0xMTIsMTUgKzExMSwxMyBAQCB2b2lkIENhY2hl
ZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
IGRhdGEsIGNvbnN0CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+
IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVy
aW5nUG9saWN5ID0gdGhpcy0+ZGF0YUJ1ZmZlcmluZ1BvbGljeSgpOwogICAgIGlmIChkYXRhQnVm
ZmVyaW5nUG9saWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpIHsKKyAgICAg
ICAgbV9kYXRhID0gZGF0YTsKICAgICAgICAgaWYgKGRhdGEpIHsKLSAgICAgICAgICAgIGlmIChk
YXRhICE9IG1fZGF0YS5nZXQoKSkKLSAgICAgICAgICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtl
Q29udGlndW91cygpOwogICAgICAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2Fs
Y3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoKm1fZGF0YSkpIHsKICAgICAgICAgICAgICAgICBz
ZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOwogICAgICAgICAgICAgICAgIG5vdGlmeUNsaWVu
dHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5jcmVhdGVTaGFyZWRCdWZmZXIoKSk7
CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbV9kYXRhID0gbnVs
bHB0cjsKKyAgICAgICAgfQogICAgIH0KIAogI2lmIFVTRShRVUlDS19MT09LKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAppbmRleCAzNmU0N2Ex
ZGJhMjMxMjhkYzUzMDczYjcwYjVmM2Y4NTM4MDRhZTZhLi45ZGRlMzFiOGRiOWFkMDI1ZmE0NTU2
OTFhYmMxMWJmNmVjZTU5Yzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmF3UmVzb3VyY2UuaApAQCAtNjcsNyArNjcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
c3dpdGNoQ2xpZW50c1RvUmV2YWxpZGF0ZWRSZXNvdXJjZSgpIG92ZXJyaWRlOwogICAgIGJvb2wg
bWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hbGxv
d0VuY29kZWREYXRhUmVwbGFjZW1lbnQ7IH0KIAotICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVm
ZmVyRGF0YVZpZXc+IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IFNoYXJlZEJ1
ZmZlciYpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IGNh
bGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
KSBjb25zdDsKICAgICB2b2lkIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoY29uc3QgU2hh
cmVkQnVmZmVyJik7CiAgICAgCiAjaWYgVVNFKFFVSUNLX0xPT0spCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IDUzNGUwMTJjYzRmYTVkZDJiZTFm
ZDZlZWU1YWE2YWU0ZTVmYWUyMGQuLjgwM2ExNGY1OTEzODMwNWI2NGQyM2JkNmZlMTk3ZWI3YmQ2
MGEzYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5o
CkBAIC0yMTMsNyArMjEzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhckxvYWRlcigpOwog
Ci0gICAgU2hhcmVkQnVmZmVyKiByZXNvdXJjZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0
YS5nZXQoKTsgfQorICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIHJlc291cmNlQnVm
ZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQg
cmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2
aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CkBA
IC0zMzYsNyArMzM2LDcgQEAgcHJvdGVjdGVkOgogICAgIEhhc2hDb3VudGVkU2V0PENhY2hlZFJl
c291cmNlQ2xpZW50Kj4gbV9jbGllbnRzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZXNvdXJjZVJl
cXVlc3Q+IG1fb3JpZ2luYWxSZXF1ZXN0OyAvLyBOZWVkZWQgYnkgUGluZyBsb2Fkcy4KICAgICBS
ZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IG1fbG9hZGVyOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IG1fZGF0YTsKKyAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9k
YXRhOwogCiBwcml2YXRlOgogICAgIE1vbm90b25pY1RpbWUgbV9sYXN0RGVjb2RlZEFjY2Vzc1Rp
bWU7IC8vIFVzZWQgYXMgYSAidGhyYXNoIGd1YXJkIiBpbiB0aGUgY2FjaGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKaW5kZXggNjJhMTZlODZiMzIxOTNk
OGU1NmQ2MTkyZjc3ZTliYzZmNDA4ZTliYi4uNWNiODg4NWQ5ODAxZmUwMzc5NmY1OTJlZGYwMDNi
ZDE0MDA4Zjg5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlw
dC5jcHAKQEAgLTU5LDEwICs1OSwxMyBAQCBTdHJpbmdWaWV3IENhY2hlZFNjcmlwdDo6c2NyaXB0
KCkKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKKyAg
ICBBU1NFUlQobV9kYXRhLT5pc0NvbnRpZ3VvdXMoKSk7CisgICAgYXV0byBjb250aWd1b3VzRGF0
YSA9IG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKwogICAgIGlmIChtX2RlY29kaW5nU3RhdGUg
PT0gTmV2ZXJEZWNvZGVkCiAgICAgICAgICYmIFBBTDo6VGV4dEVuY29kaW5nKGVuY29kaW5nKCkp
LmlzQnl0ZUJhc2VkRW5jb2RpbmcoKQogICAgICAgICAmJiBtX2RhdGEtPnNpemUoKQotICAgICAg
ICAmJiBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgp
KSkgeworICAgICAgICAmJiBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoY29udGlndW91c0RhdGEtPmRh
dGEoKSwgbV9kYXRhLT5zaXplKCkpKSB7CiAKICAgICAgICAgbV9kZWNvZGluZ1N0YXRlID0gRGF0
YUFuZERlY29kZWRTdHJpbmdIYXZlU2FtZUJ5dGVzOwogCkBAIC03MCwxNCArNzMsMTQgQEAgU3Ry
aW5nVmlldyBDYWNoZWRTY3JpcHQ6OnNjcmlwdCgpCiAgICAgICAgIHNldERlY29kZWRTaXplKDAp
OwogICAgICAgICBtX2RlY29kZWREYXRhRGVsZXRpb25UaW1lci5zdG9wKCk7CiAKLSAgICAgICAg
bV9zY3JpcHRIYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyht
X2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOworICAgICAgICBtX3NjcmlwdEhhc2ggPSBT
dHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKGNvbnRpZ3VvdXNEYXRhLT5k
YXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKICAgICB9CiAKICAgICBpZiAobV9kZWNvZGluZ1N0YXRl
ID09IERhdGFBbmREZWNvZGVkU3RyaW5nSGF2ZVNhbWVCeXRlcykKLSAgICAgICAgcmV0dXJuIHsg
bV9kYXRhLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2RhdGEtPnNpemUoKSkgfTsK
KyAgICAgICAgcmV0dXJuIHsgY29udGlndW91c0RhdGEtPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KG1fZGF0YS0+c2l6ZSgpKSB9OwogCiAgICAgaWYgKCFtX3NjcmlwdCkgewotICAgICAg
ICBtX3NjcmlwdCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGVu
Y29kZWRTaXplKCkpOworICAgICAgICBtX3NjcmlwdCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1
c2goY29udGlndW91c0RhdGEtPmRhdGEoKSwgZW5jb2RlZFNpemUoKSk7CiAgICAgICAgIEFTU0VS
VCghbV9zY3JpcHRIYXNoIHx8IG1fc2NyaXB0SGFzaCA9PSBtX3NjcmlwdC5pbXBsKCktPmhhc2go
KSk7CiAgICAgICAgIGlmIChtX2RlY29kaW5nU3RhdGUgPT0gTmV2ZXJEZWNvZGVkKQogICAgICAg
ICAgICAgbV9zY3JpcHRIYXNoID0gbV9zY3JpcHQuaW1wbCgpLT5oYXNoKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKaW5kZXgg
ZDJlZmYyZDJkNDBjOTI3NzM4NzU2YzRhOGYwY2JiOTM0M2JlMTBhYi4uMTdlZmQ2YzNmNmVkNmFh
ZWM3ZmI0YTU1YTg3NzkxMzM5ZWM0OTcwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcApAQCAtNjQsOSArNjQsMTAgQEAgU3Ry
aW5nIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmVuY29kaW5nKCkgY29uc3QKIHZvaWQgQ2FjaGVkWFNM
U3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKGRhdGEp
IHsKLSAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgYXV0
byBjb250aWd1b3VzRGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CiAgICAgICAgIHNldEVu
Y29kZWRTaXplKGRhdGEtPnNpemUoKSk7Ci0gICAgICAgIG1fc2hlZXQgPSBtX2RlY29kZXItPmRl
Y29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBlbmNvZGVkU2l6ZSgpKTsKKyAgICAgICAgbV9z
aGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goY29udGlndW91c0RhdGEtPmRhdGEoKSwg
ZW5jb2RlZFNpemUoKSk7CisgICAgICAgIG1fZGF0YSA9IFdURk1vdmUoY29udGlndW91c0RhdGEp
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAgICAgIHNldEVu
Y29kZWRTaXplKDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFs
aXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAppbmRleCAw
MjAwMWFiMzQzMDE4YTczMjU1OTk4ZmM0NzRjZWJmYzQ5ZjhjODQyLi42MTliMTEwMjVkYmVlN2E1
Y2YxN2M5ZjU0NjBhY2NkMzdhMzViYjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2VTZXJpYWxpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxp
emVyLmNwcApAQCAtMjczLDcgKzI3Myw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdl
VG9SZXNvdXJjZXMoQ2FjaGVkSW1hZ2UqIGltYWdlLCBSZW5kZXJFbGVtZW50KiBpbWFnCiAgICAg
aWYgKCFpbWFnZSB8fCBpbWFnZS0+aW1hZ2UoKSA9PSAmSW1hZ2U6Om51bGxJbWFnZSgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZGF0YSA9
IGltYWdlUmVuZGVyZXIgPyBpbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihpbWFnZVJlbmRlcmVyKS0+
ZGF0YSgpIDogMDsKKyAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gIGRh
dGEgPSBpbWFnZVJlbmRlcmVyID8gaW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoaW1hZ2VSZW5kZXJl
ciktPmRhdGEoKSA6IDA7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICBkYXRhID0gaW1hZ2UtPmlt
YWdlKCktPmRhdGEoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTm93
UGxheWluZ01hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL05vd1BsYXlpbmdNYW5h
Z2VyLmgKaW5kZXggZmM2NmMzNjVhMmYyOWE0Yzc4ZTYwNjE5ZTQ3YTcxYzcyNThkOGZlMy4uMDdk
NTgzMDYwNWJiYzJiOTlkYTM2ZGNjNjlkZjAyZDRmOGUzMDhhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTm93UGxheWluZ01hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Ob3dQbGF5aW5nTWFuYWdlci5oCkBAIC03MCw3ICs3MCw3IEBAIHByaXZhdGU6
CiAgICAgc3RkOjpvcHRpb25hbDxOb3dQbGF5aW5nSW5mbz4gbV9ub3dQbGF5aW5nSW5mbzsKICAg
ICBzdHJ1Y3QgQXJ0d29ya0NhY2hlIHsKICAgICAgICAgU3RyaW5nIHNyYzsKLSAgICAgICAgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGltYWdlRGF0YTsKKyAgICAgICAgUmVmUHRyPGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGltYWdlRGF0YTsKICAgICB9OwogICAgIHN0ZDo6
b3B0aW9uYWw8QXJ0d29ya0NhY2hlPiBtX25vd1BsYXlpbmdJbmZvQXJ0d29yazsKICAgICBib29s
IG1fc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24geyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCBjYWVmM2YyNjIwMDMzZGQ4Y2ZmMTU2MjNmMjNjNmI2
YzliNTM0YjM3Li40Yzk4MmE2ZmQ4YTZmNWNiZTcyMDkxNGYzYmUwNTkxM2NiMjU1OWQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtMzA4LDYgKzMwOCw3IEBAIHB1
YmxpYzoKICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKFNoYXJlZEJ1ZmZlckJ1aWxkZXImJikgPSBk
ZWZhdWx0OwogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIo
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIGV4cGxpY2l0IFNoYXJlZEJ1
ZmZlckJ1aWxkZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IGluaXRp
YWxpemUoV1RGTW92ZShidWZmZXIpKTsgfQorICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIoUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IGFwcGVuZChX
VEZNb3ZlKGJ1ZmZlcikpOyB9CiAgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgOiBTaGFyZWRCdWZmZXJCdWlsZGVy
KFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPnsgV1RGTW92ZShidWZmZXIpIH0pIHsgfQog
ICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpIHsgaW5pdGlhbGl6ZShXVEZNb3ZlKGJ1ZmZlcikpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAKaW5kZXggOWQwNTVjZTI3
ZDg4YzNkNjJlNWJkMWNkNDZhZDkxZjVjYzQzMWY0OC4uOGZiYTIxNDA2Y2EwNTlhYmE0YjhjMGNj
NjRkNGU2MjlkZWIyNzhmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICNpZiBFTkFCTEUoTUhUTUwpCiAKLVNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpT
aGFyZWRCdWZmZXJDaHVua1JlYWRlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNv
bnN0IFZlY3RvcjxjaGFyPiYgc2VwYXJhdG9yKQorU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNo
YXJlZEJ1ZmZlckNodW5rUmVhZGVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZl
ciwgY29uc3QgVmVjdG9yPGNoYXI+JiBzZXBhcmF0b3IpCiAgICAgOiBtX2l0ZXJhdG9yQ3VycmVu
dChidWZmZXItPmJlZ2luKCkpCiAgICAgLCBtX2l0ZXJhdG9yRW5kKGJ1ZmZlci0+ZW5kKCkpCiAg
ICAgLCBtX3NlZ21lbnQobV9pdGVyYXRvckN1cnJlbnQgIT0gbV9pdGVyYXRvckVuZCA/IG1faXRl
cmF0b3JDdXJyZW50LT5zZWdtZW50LT5kYXRhKCkgOiBudWxscHRyKQpAQCAtNDQsNyArNDQsNyBA
QCBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLAogewogfQogCi1TaGFyZWRCdWZmZXJDaHVua1JlYWRl
cjo6U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVy
LCBjb25zdCBjaGFyKiBzZXBhcmF0b3IpCitTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6U2hhcmVk
QnVmZmVyQ2h1bmtSZWFkZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBj
b25zdCBjaGFyKiBzZXBhcmF0b3IpCiAgICAgOiBtX2l0ZXJhdG9yQ3VycmVudChidWZmZXItPmJl
Z2luKCkpCiAgICAgLCBtX2l0ZXJhdG9yRW5kKGJ1ZmZlci0+ZW5kKCkpCiAgICAgLCBtX3NlZ21l
bnQobV9pdGVyYXRvckN1cnJlbnQgIT0gbV9pdGVyYXRvckVuZCA/IG1faXRlcmF0b3JDdXJyZW50
LT5zZWdtZW50LT5kYXRhKCkgOiBudWxscHRyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmgKaW5kZXggMWM2NDA4ZDRjNzM2YTFjNGE0NWNl
ZTdiM2Y2OTY1N2JjOWEyNjE1YS4uOGE5ZDRlNWRiNTU1MDFiN2MxMzUwYjE2NDQwYjE4MGE2NmU0
NTIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1
bmtSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVu
a1JlYWRlci5oCkBAIC00MSw4ICs0MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIgewogcHVibGljOgotICAgIFNo
YXJlZEJ1ZmZlckNodW5rUmVhZGVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBWZWN0
b3I8Y2hhcj4mIHNlcGFyYXRvcik7Ci0gICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IGNoYXIqIHNlcGFyYXRvcik7CisgICAgU2hhcmVkQnVm
ZmVyQ2h1bmtSZWFkZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IFZlY3Rv
cjxjaGFyPiYgc2VwYXJhdG9yKTsKKyAgICBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgY2hhciogc2VwYXJhdG9yKTsKIAogICAgIHZv
aWQgc2V0U2VwYXJhdG9yKGNvbnN0IFZlY3RvcjxjaGFyPiYpOwogICAgIHZvaWQgc2V0U2VwYXJh
dG9yKGNvbnN0IGNoYXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL05vd1BsYXlpbmdJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQ
bGF5aW5nSW5mby5oCmluZGV4IDFkNjViYzQwM2FkODUyNDNjNjcyNWU3MDQ0OGQ2Y2RhZGNjY2Nl
MWIuLmNkNmEwYWYxYWE4NzJmMmEwOGE3ZjFlNDczYzE1N2QwODhjOTVjMTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaApAQCAtMzYsNyArMzYs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgTm93UGxheWluZ0luZm9BcnR3b3JrIHsK
ICAgICBTdHJpbmcgc3JjOwogICAgIFN0cmluZyBtaW1lVHlwZTsKLSAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOworICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBpbWFnZURhdGE7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTm93
UGxheWluZ0luZm9BcnR3b3JrJiBvdGhlcikgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaAppbmRleCAyZGU0
MTkzNGRhMTk4NzlkNzVjMGRmOGE4OWU2NGU1OTljMjlhZTAzLi45ZTM4ZWVjYTM5NTVhMGI1MTFm
NmJlYTVhNWIxNjE1NTI1OThjMzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmgKQEAgLTU0LDcgKzU0LDcgQEAgY2xhc3Mg
Q0RNSW5zdGFuY2VDbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RNSW5zdGFuY2VDbGll
bnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DRE1JbnN0YW5jZUNsaWVudCgpID0gZGVmYXVs
dDsKIAotICAgIHZpcnR1YWwgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2Vp
dmVkKGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29u
c3QgU3RyaW5nJiwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsKIH07
CiAKIC8vIEphdmFTY3JpcHQncyBoYW5kbGUgdG8gYSBDRE1JbnN0YW5jZSwgbXVzdCBiZSB1c2Vk
IGZyb20gdGhlCkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgdmlydHVh
bCB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25m
aWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRT
dGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2VydmVy
Q2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFj
ayYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpID0gMDsKICAg
ICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNl
U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5z
dGFuY2VTZXNzaW9uLmgKaW5kZXggZDI1OTIyNWJhOWUwMmE2NGQwY2VjZDYxNTFmZGY5M2Y0ZjI0
NjZhOC4uOGQyNThmYzU0Yjk3NjkyNjM1YjMyNzdkNWYzODc4MzI5OGE0ZDg2MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNz
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5z
dGFuY2VTZXNzaW9uLmgKQEAgLTUwLDkgKzUwLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkNE
TUluc3RhbmNlU2Vzc2lvbkNsaWVudCgpID0gZGVmYXVsdDsKIAogICAgIHVzaW5nIEtleVN0YXR1
cyA9IENETUtleVN0YXR1czsKLSAgICB1c2luZyBLZXlTdGF0dXNWZWN0b3IgPSBWZWN0b3I8c3Rk
OjpwYWlyPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgS2V5U3RhdHVzPj47CisgICAgdXNp
bmcgS2V5U3RhdHVzVmVjdG9yID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWY8Y29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4sIEtleVN0YXR1cz4+OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVLZXlT
dGF0dXNlcyhLZXlTdGF0dXNWZWN0b3ImJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVz
c2FnZShDRE1NZXNzYWdlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2Fn
ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSwgUmVm
PGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBzZXNzaW9uSWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB1c2luZyBQ
bGF0Zm9ybURpc3BsYXlJRCA9IHVpbnQzMl90OwogICAgIHZpcnR1YWwgUGxhdGZvcm1EaXNwbGF5
SUQgZGlzcGxheUlEKCkgPSAwOwpAQCAtNzgsMTMgKzc4LDEzIEBAIHB1YmxpYzoKICAgICAgICAg
U3VjY2VlZGVkLAogICAgIH07CiAKLSAgICB1c2luZyBMaWNlbnNlQ2FsbGJhY2sgPSBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UsIGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIFN1Y2Nl
c3NWYWx1ZSBzdWNjZWVkZWQpPjsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGlj
ZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSA9IDA7CisgICAgdXNp
bmcgTGljZW5zZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8Y29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwg
Ym9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKT47Cisg
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGlu
aXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgPSAwOwogCiAgICAgdXNpbmcgS2V5U3RhdHVzVmVj
dG9yID0gQ0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50OjpLZXlTdGF0dXNWZWN0b3I7Ci0gICAgdXNp
bmcgTWVzc2FnZSA9IHN0ZDo6cGFpcjxNZXNzYWdlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+PjsKKyAgICB1c2luZyBNZXNzYWdlID0gc3RkOjpwYWlyPE1lc3NhZ2VUeXBlLCBSZWY8
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OwogICAgIHVzaW5nIExpY2Vuc2VVcGRhdGVD
YWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBzZXNzaW9uV2FzQ2xvc2VkLCBz
dGQ6Om9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2VkS2V5cywgc3RkOjpvcHRpb25h
bDxkb3VibGU+JiYgY2hhbmdlZEV4cGlyYXRpb24sIHN0ZDo6b3B0aW9uYWw8TWVzc2FnZT4mJiBt
ZXNzYWdlLCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKT47Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0
ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCwgTGljZW5zZVR5cGUsIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3Bv
bnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgPSAwOwogCiAgICAgZW51bSBjbGFzcyBTZXNz
aW9uTG9hZEZhaWx1cmUgOiB1aW50OF90IHsKICAgICAgICAgTm9uZSwKQEAgLTEwMCw3ICsxMDAs
NyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQ2xvc2VTZXNzaW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+OwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpID0gMDsKIAotICAgIHVzaW5n
IFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEtleVN0
YXR1c1ZlY3RvciYmLCBzdGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4m
JiwgU3VjY2Vzc1ZhbHVlKT47CisgICAgdXNpbmcgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayA9
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoS2V5U3RhdHVzVmVjdG9yJiYsIHN0ZDo6b3B0aW9uYWw8
UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmLCBTdWNjZXNzVmFsdWUpPjsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQs
IExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpID0gMDsKIAogICAgIHZp
cnR1YWwgdm9pZCBzdG9yZVJlY29yZE9mS2V5VXNhZ2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQp
ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETVByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TVByaXZhdGUuaAppbmRleCA1MmE2MTQ4YzgzY2Q1MzkzYzhmODc0ZWQ4NWFkOGJmMjdlNWJlNTBm
Li5mNGNkOWU1Mjk5NjE2NjUxNmY4NDYyM2JlZDFmNDA2ZDQ5MTFjZmM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCkBAIC03
NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0
aWZpY2F0ZXMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2Vzc2lvbnMo
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRv
bVN0cmluZyYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCA9IDA7Ci0gICAg
dmlydHVhbCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVm
UHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCA9IDA7
CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAppbmRleCAzMWE5ZmRm
YTAyZDZkMDBjYTI2MTgyNTJkZWQ5MzUzMTNkYzU4YWE5Li45OTdkMzkzNDdkZWNkZGE5NGFlODhj
YjZkNzk3ZWEwNjZiYzVmMzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC00
MDcsNyArNDA3LDcgQEAgYm9vbCBDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzSW5pdERhdGEo
Y29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdAogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETVByaXZhdGVDbGVhcktleTo6
c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkg
Y29uc3QKK1JlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlQ2xl
YXJLZXk6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVz
cG9uc2UpIGNvbnN0CiB7CiAgICAgLy8gVmFsaWRhdGUgdGhlIHJlc3BvbnNlIGJ1ZmZlciBhcyBh
biBKU09OIG9iamVjdC4KICAgICBpZiAoIUNETVV0aWxpdGllczo6cGFyc2VKU09OT2JqZWN0KHJl
c3BvbnNlKSkKQEAgLTQzMyw3ICs0MzMsNyBAQCB2b2lkIENETUluc3RhbmNlQ2xlYXJLZXk6Omlu
aXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cgogICAg
IGNhbGxiYWNrKHN1Y2NlZWRlZCk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6c2V0
U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3ND
YWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZUNsZWFyS2V5OjpzZXRTZXJ2ZXJD
ZXJ0aWZpY2F0ZShSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0Nh
bGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgLy8gUmVqZWN0IHNldHRpbmcgYW55IHNlcnZlciBj
ZXJ0aWZpY2F0ZS4KICAgICBjYWxsYmFjayhGYWlsZWQpOwpAQCAtNDU1LDcgKzQ1NSw3IEBAIFJl
ZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IENETUluc3RhbmNlQ2xlYXJLZXk6OmNyZWF0ZVNlc3Np
b24oKQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXko
KnRoaXMpKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVxdWVzdExp
Y2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxi
YWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVxdWVzdExpY2Vuc2UoTGlj
ZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNr
KQogewogICAgIHN0YXRpYyB1aW50MzJfdCBzX3Nlc3Npb25JZFZhbHVlID0gMDsKICAgICArK3Nf
c2Vzc2lvbklkVmFsdWU7CkBAIC00NzcsNyArNDc3LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25DbGVhcktleTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcm
IGkKICAgICAgICAgfSk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnVw
ZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYg
Y2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5Ojp1cGRhdGVMaWNlbnNl
KGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVmPGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxi
YWNrKQogewogI2lmIExPR19ESVNBQkxFRAogICAgIC8vIFdlIG9ubHkgdXNlIHRoZSBzZXNpb24g
SUQgZm9yIGRlYnVnIGxvZ2dpbmcuIFRoZSB2ZXJib3NlIHByZXByb2Nlc3NvciBjaGVja3MgYXJl
IGJlY2F1c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oCmluZGV4IDllMjdmZTkxMmM0ZGEwNjdm
YjI2Y2FmYmM3ZjZhNjUxZGE0NzUyOGIuLjQ2OGNlNDdkZGJhMjZiYWJlYzJkMDRhZTI4N2NiNDEz
ZjIzNTIxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaApAQCAtODcsNyArODcsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcygpIGNvbnN0IGZpbmFs
OwogICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3Vw
cG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpIGNvbnN0IGZpbmFsOwotICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBz
YW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5h
bDsKKyAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNw
b25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CiAgICAgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0
IGZpbmFsOwogfTsKIApAQCAtOTksNyArOTksNyBAQCBwdWJsaWM6CiAgICAgLy8gQ0RNSW5zdGFu
Y2UKICAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpDbGVhcktleTsgfQogICAgIHZvaWQgaW5p
dGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24m
LCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNj
ZXNzQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAg
IHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHNldFN0b3JhZ2VEaXJl
Y3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0o
KSBjb25zdCBmaW5hbDsKICAgICBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNz
aW9uKCkgZmluYWw7CkBAIC0xMDksOCArMTA5LDggQEAgY2xhc3MgQ0RNSW5zdGFuY2VTZXNzaW9u
Q2xlYXJLZXkgZmluYWwgOiBwdWJsaWMgQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkgewogcHVibGlj
OgogICAgIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5KENETUluc3RhbmNlQ2xlYXJLZXkmIHBh
cmVudCkKICAgICAgICAgOiBDRE1JbnN0YW5jZVNlc3Npb25Qcm94eShwYXJlbnQpIHsgfQotICAg
IHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VD
YWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwg
TGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRl
Q2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwg
Y29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQg
dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAg
ICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2VTZXNzaW9u
KGNvbnN0IFN0cmluZyYsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQg
cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Np
b25EYXRhQ2FsbGJhY2smJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZS5jcHAKaW5kZXggZTMyYTM2YzYwNzYxOTIxNjhjNmEzNzkzMThmNzhhZTE3ODljNDgy
ZS4uNzBkNWQ0MTk0NDI5MGZmNGFmYjljYjU0ZWQ1MmJkYWQ1YzMzMjkxYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIGJv
b2wgSW1hZ2U6OmlzUG9zdFNjcmlwdFJlc291cmNlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNv
bnN0IFVSTCYgdXJsKQogfQogCiAKLUVuY29kZWREYXRhU3RhdHVzIEltYWdlOjpzZXREYXRhKFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQorRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2U6OnNldERhdGEoUmVmUHRyPGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgbV9l
bmNvZGVkSW1hZ2VEYXRhID0gV1RGTW92ZShkYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggNDdlYTk4OWU5NmMzMDA0YWZjMzg4Y2FhN2JhZjcwZDdi
MmM2YmFkZi4uM2IyMzc0NzVhOWY5MzJlYjdlOTBjZGMzOWMwYzllOTVkZTE0OTU1MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBAIC0xMjQsNyArMTI0LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNv
bnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIHZpcnR1YWwgSW1hZ2VPcmllbnRhdGlv
biBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIEltYWdlT3JpZW50YXRpb246OkZyb21JbWFn
ZTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgRW5jb2RlZERhdGFTdGF0dXMgc2V0RGF0YShSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgRW5jb2RlZERhdGFTdGF0dXMgc2V0RGF0YShSZWZQdHI8Y29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7
CiAgICAgdmlydHVhbCBFbmNvZGVkRGF0YVN0YXR1cyBkYXRhQ2hhbmdlZChib29sIC8qYWxsRGF0
YVJlY2VpdmVkKi8pIHsgcmV0dXJuIEVuY29kZWREYXRhU3RhdHVzOjpVbmtub3duOyB9CiAKICAg
ICB2aXJ0dWFsIFN0cmluZyB1dGkoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfSAvLyBudWxs
IHN0cmluZyBpZiB1bmtub3duCkBAIC0xMzMsNyArMTMzLDYgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShib29sIGRlc3Ryb3lBbGwgPSB0cnVlKSA9IDA7
CiAKLSAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKCkgeyByZXR1cm4gbV9lbmNvZGVk
SW1hZ2VEYXRhLmdldCgpOyB9CiAgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fZW5jb2RlZEltYWdlRGF0YS5nZXQoKTsgfQogCiAgICAgdmly
dHVhbCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSgpOwpAQCAtMjA5LDcgKzIwOCw3
IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIENvbG9yIHNpbmdsZVBpeGVsU29saWRDb2xvcigp
IGNvbnN0IHsgcmV0dXJuIENvbG9yKCk7IH0KIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gbV9lbmNvZGVkSW1hZ2VEYXRhOworICAgIFJlZlB0cjxjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2VuY29kZWRJbWFnZURhdGE7CiAgICAgSW1hZ2VPYnNl
cnZlciogbV9pbWFnZU9ic2VydmVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUaW1lcj4gbV9hbmlt
YXRpb25TdGFydFRpbWVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZURlY29kZXIuY3BwCmluZGV4IDQwYTBlNmNmMDM5NzJmYjFjYzcxYjJkMjgzMGY5
NzFlMDBlNTk3MDguLjA1M2VmNjJjNThkZjNjZDI5MDBkOWUxMDRlYTk3YjAzOWQzMGNmMTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNw
cApAQCAtODAsNyArODAsNyBAQCB2b2lkIEltYWdlRGVjb2Rlcjo6Y2xlYXJGYWN0b3JpZXMoKQog
fQogI2VuZGlmCiAKLVJlZlB0cjxJbWFnZURlY29kZXI+IEltYWdlRGVjb2Rlcjo6Y3JlYXRlKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhh
T3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxJbWFnZURlY29kZXI+IEltYWdlRGVjb2Rlcjo6Y3Jl
YXRlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
biBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICBVTlVTRURfUEFSQU0obWltZVR5
cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rl
ci5oCmluZGV4IDVhYWUzY2M5MTFjNjA1Zjc3MmIwNTdkMDFlZGJiYjgxMTI1ZmIyNTMuLjY5MmM3
MjQxMGQwMTNlYTIzZDQzOWIzYzc1NmFjZWMwYTU0NWQ0NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oCkBAIC00Miw3ICs0Miw3IEBAIGNs
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBJbWFnZURlY29kZXIgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW1hZ2VEZWNvZGVyPiB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXI+IGNyZWF0
ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFP
cHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBzdGF0aWMgUmVmUHRyPElt
YWdlRGVjb2Rlcj4gY3JlYXRlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
OwogICAgIHZpcnR1YWwgfkltYWdlRGVjb2RlcigpID0gZGVmYXVsdDsKIAogICAgIGVudW0gY2xh
c3MgTWVkaWFUeXBlIHsKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykKICAgICB1c2luZyBTdXBwb3J0c01lZGlhVHlwZUZ1bmMgPSBGdW5jdGlvbjxib29s
KE1lZGlhVHlwZSk+OwogICAgIHVzaW5nIENhbkRlY29kZVR5cGVGdW5jID0gRnVuY3Rpb248Ym9v
bChjb25zdCBTdHJpbmcmKT47Ci0gICAgdXNpbmcgQ3JlYXRlSW1hZ2VEZWNvZGVyRnVuYyA9IEZ1
bmN0aW9uPFJlZlB0cjxJbWFnZURlY29kZXI+KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25z
dCBTdHJpbmcmLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pPjsKKyAg
ICB1c2luZyBDcmVhdGVJbWFnZURlY29kZXJGdW5jID0gRnVuY3Rpb248UmVmUHRyPEltYWdlRGVj
b2Rlcj4oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIEFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik+OwogCiAgICAgc3RydWN0IEltYWdl
RGVjb2RlckZhY3RvcnkgewogICAgICAgICBTdXBwb3J0c01lZGlhVHlwZUZ1bmMgc3VwcG9ydHNN
ZWRpYVR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNv
dXJjZS5jcHAKaW5kZXggZjJjOTY0MGQ0NmQzYTkzNTYxMTRmMzNhYjE0MDUyYzdmZWMyNzc4Yy4u
NTQ1N2JkNWFiMzZmYTdkNDFkMDNkNjFiOTVkZDM0NGE0MzVkYWY1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtNjcsNyArNjcs
NyBAQCBJbWFnZVNvdXJjZTo6fkltYWdlU291cmNlKCkKICAgICBBU1NFUlQoJm1fcnVuTG9vcCA9
PSAmUnVuTG9vcDo6Y3VycmVudCgpKTsKIH0KIAotYm9vbCBJbWFnZVNvdXJjZTo6ZW5zdXJlRGVj
b2RlckF2YWlsYWJsZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQorYm9vbCBJbWFnZVNv
dXJjZTo6ZW5zdXJlRGVjb2RlckF2YWlsYWJsZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiBkYXRhKQogewogICAgIGlmICghZGF0YSB8fCBpc0RlY29kZXJBdmFpbGFibGUoKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CkBAIC05MSw3ICs5MSw3IEBAIGJvb2wgSW1hZ2VTb3VyY2U6OmVuc3Vy
ZURlY29kZXJBdmFpbGFibGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotdm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSW1hZ2VTb3VyY2U6OnNl
dERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCiB7CiAgICAgaWYgKCFkYXRhIHx8ICFlbnN1cmVEZWNvZGVyQXZhaWxhYmxlKGRhdGEp
KQogICAgICAgICByZXR1cm47CkBAIC05OSwxMyArOTksMTMgQEAgdm9pZCBJbWFnZVNvdXJjZTo6
c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZl
ZCkKICAgICBtX2RlY29kZXItPnNldERhdGEoKmRhdGEsIGFsbERhdGFSZWNlaXZlZCk7CiB9CiAK
LXZvaWQgSW1hZ2VTb3VyY2U6OnJlc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRh
KQordm9pZCBJbWFnZVNvdXJjZTo6cmVzZXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqIGRhdGEpCiB7CiAgICAgbV9kZWNvZGVyID0gbnVsbHB0cjsKICAgICBzZXREYXRhKGRhdGEs
IGlzQWxsRGF0YVJlY2VpdmVkKCkpOwogfQogCi1FbmNvZGVkRGF0YVN0YXR1cyBJbWFnZVNvdXJj
ZTo6ZGF0YUNoYW5nZWQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpCitFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZVNvdXJjZTo6ZGF0YUNoYW5nZWQoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7
CiAgICAgc2V0RGF0YShkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIGNsZWFyTWV0YWRhdGEo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291
cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCmlu
ZGV4IGY5ODE0MTdmMjRlYmM3ZjJkYmQ1NzNkYWUwZTU5MjU5ODk0NGU2NmEuLjgyOWUwNmZiODll
NTU4N2E4ZjUyNGE2OWUzY2IyODM5MDZhMjAyYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApAQCAtNTYsOSArNTYsOSBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlU291cmNlKFdURk1vdmUobmF0aXZlSW1h
Z2UpKSk7CiAgICAgfQogCi0gICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAgICB2b2lkIHJlc2V0RGF0YShGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBkYXRhKTsKLSAgICBFbmNvZGVkRGF0YVN0YXR1cyBkYXRhQ2hhbmdl
ZChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7Cisg
ICAgdm9pZCBzZXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKTsKKyAgICB2b2lkIHJlc2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKiBkYXRhKTsKKyAgICBFbmNvZGVkRGF0YVN0YXR1cyBkYXRhQ2hhbmdlZChjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CiAg
ICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpOwogCiAgICAgdW5zaWduZWQgZGVjb2RlZFNpemUo
KSBjb25zdCB7IHJldHVybiBtX2RlY29kZWRTaXplOyB9CkBAIC0xNTEsNyArMTUxLDcgQEAgcHJp
dmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIFQgZmlyc3RGcmFtZU1ldGFkYXRh
Q2FjaGVJZk5lZWRlZChUJiBjYWNoZWRWYWx1ZSwgTWV0YWRhdGFUeXBlLCBUIChJbWFnZUZyYW1l
OjoqZnVuY3RvcikoKSBjb25zdCwgSW1hZ2VGcmFtZTo6Q2FjaGluZywgY29uc3Qgc3RkOjpvcHRp
b25hbDxTdWJzYW1wbGluZ0xldmVsPiYgPSB7IH0pOwogCi0gICAgYm9vbCBlbnN1cmVEZWNvZGVy
QXZhaWxhYmxlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpOworICAgIGJvb2wgZW5zdXJl
RGVjb2RlckF2YWlsYWJsZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKTsKICAg
ICBib29sIGlzRGVjb2RlckF2YWlsYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2RlcjsgfQog
ICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKHNpemVfdCBmcmFtZUNvdW50LCBzaXplX3QgZXhj
bHVkZUZyYW1lKTsKICAgICB2b2lkIGRlY29kZWRTaXplQ2hhbmdlZChsb25nIGxvbmcgZGVjb2Rl
ZFNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKaW5kZXgg
OGIwNGY5YmU5NmMzNmUwYTI2MjE4MGEyNWVhMzc0NTk2MmIzZDdkNS4uNzk4YmU4NGIxOWViYTlj
N2MyZGJhODNjNGQwMTIyOWI5MTFlZmQyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBs
YXlTdHJlYW1pbmcuY3BwCkBAIC04Niw3ICs4Niw3IEBAIGNvbnN0IEF0b21TdHJpbmcmIENETVBy
aXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2tkTmFtZSgpCiAgICAgcmV0dXJuIHNrZDsKIH0KIAot
c3RhdGljIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0
YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGF0aWMgVmVjdG9yPFJl
Zjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBKU09OIG9mIHRoZSBmb3Jt
YXQ6ICJ7IHNpbmY6IFsgPGJhc2U2NC1lbmNvZGVkLXN0cmluZz4gXSB9IgogICAgIGlmIChidWZm
ZXIuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQpAQCAtMTA1
LDcgKzEwNSw3IEBAIHN0YXRpYyBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBl
eHRyYWN0U2luZkRhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlCiAgICAgaWYgKCFzaW5mQXJyYXkp
CiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+PiBzaW5mczsKKyAgICBWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+PiBzaW5mczsKICAgICBzaW5mcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpbmZBcnJheS0+
bGVuZ3RoKCkpOwogCiAgICAgZm9yIChhdXRvJiB2YWx1ZSA6ICpzaW5mQXJyYXkpIHsKQEAgLTE3
MCw5ICsxNzAsOSBAQCBzdGF0aWMgU2NoZW1lQW5kS2V5UmVzdWx0IGV4dHJhY3RTY2hlbWVBbmRL
ZXlJZEZyb21TaW5mKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdQogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+
IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NpbmYoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5n
OjpleHRyYWN0S2V5SURzU2luZihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiB7Ci0gICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ga2V5SURzOworICAg
IFZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKICAgICBh
dXRvIHJlc3VsdHMgPSBleHRyYWN0U2NoZW1lQW5kS2V5SWRGcm9tU2luZihidWZmZXIpOwogCiAg
ICAgZm9yIChhdXRvJiByZXN1bHQgOiByZXN1bHRzKSB7CkBAIC0xODMsNyArMTgzLDcgQEAgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gQ0RNUHJpdmF0
ZUZhaXJQbGF5U3RyZWFtaW5nOjoKICAgICByZXR1cm4ga2V5SURzOwogfQogCi1SZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6
ZVNpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUmVmUHRyPGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2Fu
aXRpemVTaW5mKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAv
LyBDb21tb24gU0lORiBCb3ggRm9ybWF0CiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CkBAIC0x
OTEsMTcgKzE5MSwxNyBAQCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0
ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNpbmYoY29uc3QgRgogICAgIHJldHVybiBidWZm
ZXIuY29weSgpOwogfQogCi1SZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0
ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNrZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCitSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJp
dmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNrZChjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKICAgICByZXR1cm4gYnVmZmVyLmNvcHkoKTsKIH0KIAotc3RkOjpvcHRpb25h
bDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gQ0RNUHJpdmF0ZUZhaXJQbGF5
U3RyZWFtaW5nOjpleHRyYWN0S2V5SURzU2tkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NrZChj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gSW4gdGhlICdz
a2QnIHNjaGVtZSwgdGhlIGluaXQgZGF0YSBpcyB0aGUga2V5IElELgotICAgIFZlY3RvcjxSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKKyAgICBWZWN0b3I8UmVmPGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CiAgICAga2V5SURzLmFwcGVuZChidWZmZXIu
Y29weSgpKTsKICAgICByZXR1cm4ga2V5SURzOwogfQpAQCAtNDIzLDcgKzQyMyw3IEBAIGJvb2wg
Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21T
dHJpbmcmIGluaXREYXRhVHlwCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1SZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVJl
c3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAorUmVm
UHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETVByaXZhdGVGYWlyUGxheVN0cmVh
bWluZzo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNw
b25zZSkgY29uc3QKIHsKICAgICByZXR1cm4gcmVzcG9uc2UuY29weSgpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQ
bGF5U3RyZWFtaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaAppbmRleCAzMTdiYjhkNTdlODZjMDYyMTRlMGI0
MDU5ZGRmNGY4ODA3Yzc0YzZiLi42ZDhjMjg0ZGYwMzFkMWQ3OTQxNjdjYTE1YTE1NWJlMDc3YTQ5
MGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaApAQCAtNzIsMTYg
KzcyLDE2IEBAIHB1YmxpYzoKICAgICBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
KSBjb25zdCBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNz
aW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBzdGF0aWMgY29uc3Qg
QXRvbVN0cmluZyYgc2luZk5hbWUoKTsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc1NpbmYoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpOwotICAgIHN0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gc2FuaXRpemVTaW5mKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+Pj4gZXh0cmFjdEtleUlEc1NpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYp
OworICAgIHN0YXRpYyBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRp
emVTaW5mKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0YXRpYyBjb25z
dCBBdG9tU3RyaW5nJiBza2ROYW1lKCk7Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNTa2QoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpOwotICAgIHN0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gc2FuaXRpemVTa2QoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+PiBleHRyYWN0S2V5SURzU2tkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsK
KyAgICBzdGF0aWMgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXpl
U2tkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0YXRpYyBjb25zdCBW
ZWN0b3I8Rm91ckNDPiYgdmFsaWRGYWlyUGxheVN0cmVhbWluZ1NjaGVtZXMoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDLmgKaW5kZXggNTZiNThjMjVhMjg3MDlmYjM4MjIxODM5ZTU1YmFlNDVlZDkz
Y2Y2Mi4uMzkxZGFhOGViMmNkMTEzMzgxMmUyZDU2ZWQyZjNiOGJlOThjZmZhNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RN
SW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQy5oCkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICBJbXBsZW1lbnRh
dGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1wbGVt
ZW50YXRpb25UeXBlOjpGYWlyUGxheVN0cmVhbWluZzsgfQogCiAgICAgdm9pZCBpbml0aWFsaXpl
V2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93
RGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxs
YmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBz
ZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwg
U3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShj
b25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVh
dGVTZXNzaW9uKCkgZmluYWw7CiAgICAgdm9pZCBzZXRDbGllbnQoV2Vha1B0cjxDRE1JbnN0YW5j
ZUNsaWVudD4mJikgZmluYWw7CkBAIC05NCwxMCArOTQsMTAgQEAgcHVibGljOgogCiAgICAgTlNV
UkwgKnN0b3JhZ2VVUkwoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2VVUkwuZ2V0KCk7IH0KICAg
ICBib29sIHBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQoKSBjb25zdCB7IHJldHVybiBtX3BlcnNpc3Rl
bnRTdGF0ZUFsbG93ZWQ7IH0KLSAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBzZXJ2ZXJDZXJ0
aWZpY2F0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmVyQ2VydGlmaWNhdGUuZ2V0KCk7IH0KKyAg
ICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBzZXJ2ZXJDZXJ0aWZpY2F0ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2VydmVyQ2VydGlmaWNhdGUuZ2V0KCk7IH0KICAgICBBVkNvbnRlbnRLZXlT
ZXNzaW9uKiBjb250ZW50S2V5U2Vzc2lvbigpOwogCi0gICAgUmV0YWluUHRyPEFWQ29udGVudEtl
eVJlcXVlc3Q+IHRha2VVbmV4cGVjdGVkS2V5UmVxdWVzdEZvckluaXRpYWxpemF0aW9uRGF0YShj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGlu
aXREYXRhKTsKKyAgICBSZXRhaW5QdHI8QVZDb250ZW50S2V5UmVxdWVzdD4gdGFrZVVuZXhwZWN0
ZWRLZXlSZXF1ZXN0Rm9ySW5pdGlhbGl6YXRpb25EYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpOwogCiAgICAg
Ly8gQVZDb250ZW50S2V5U2Vzc2lvbkRlbGVnYXRlQ2xpZW50CiAgICAgdm9pZCBkaWRQcm92aWRl
UmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KikgZmluYWw7CkBAIC0xMTIsNyArMTEyLDcgQEAg
cHVibGljOgogICAgIHZvaWQgb3V0cHV0T2JzY3VyZWREdWVUb0luc3VmZmljaWVudEV4dGVybmFs
UHJvdGVjdGlvbkNoYW5nZWQoYm9vbCkgZmluYWw7CiAgICAgdm9pZCBleHRlcm5hbFByb3RlY3Rp
b25TdGF0dXNEaWRDaGFuZ2VGb3JDb250ZW50S2V5UmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0
KikgZmluYWw7CiAKLSAgICB1c2luZyBLZXlzID0gVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj47CisgICAgdXNpbmcgS2V5cyA9IFZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+OwogICAgIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQyogc2Vzc2lvbkZvcktleUlEcyhjb25zdCBLZXlzJikgY29uc3Q7CiAgICAgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKiBzZXNzaW9uRm9yR3JvdXAoQVZDb250
ZW50S2V5UmVwb3J0R3JvdXAqKSBjb25zdDsKICAgICBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakMqIHNlc3Npb25Gb3JSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3Qq
KSBjb25zdDsKQEAgLTEyOSw3ICsxMjksNyBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8Q0RNSW5z
dGFuY2VDbGllbnQ+IG1fY2xpZW50OwogICAgIFJldGFpblB0cjxBVkNvbnRlbnRLZXlTZXNzaW9u
PiBtX3Nlc3Npb247CiAgICAgUmV0YWluUHRyPFdlYkNvcmVGUFNDb250ZW50S2V5U2Vzc2lvbkRl
bGVnYXRlPiBtX2RlbGVnYXRlOwotICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBt
X3NlcnZlckNlcnRpZmljYXRlOworICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBtX3NlcnZlckNlcnRpZmljYXRlOwogICAgIGJvb2wgbV9wZXJzaXN0ZW50U3RhdGVBbGxv
d2VkIHsgdHJ1ZSB9OwogICAgIFJldGFpblB0cjxOU1VSTD4gbV9zdG9yYWdlVVJMOwogICAgIFZl
Y3RvcjxXZWFrUHRyPENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQz4+
IG1fc2Vzc2lvbnM7CkBAIC0xNTAsOCArMTUwLDggQEAgcHVibGljOgogI2VuZGlmCiAKICAgICAv
LyBDRE1JbnN0YW5jZVNlc3Npb24KLSAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBl
LCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRh
dGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgcmVx
dWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwg
UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxs
YmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGlj
ZW5zZVR5cGUsIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBk
YXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5h
bDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25DYWxs
YmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYs
IExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQy5tbQppbmRleCBjZmUwNDhhOTM4YzA1ZGY3NDVjNzE2MzU2YWQxYjNiOTBh
NTllYjc4Li42ODNhNTYyYzQzZDYzOWVmZDAwMjQ4NTgyNGY1NWQ3YzBkMTljNGYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQy5tbQpAQCAtMjE4LDcgKzIxOCw3IEBAIEFMTE9XX05FV19BUElfV0lU
SE9VVF9HVUFSRFNfRU5ECiAgICAgcmV0dXJuIEF0b21TdHJpbmcobnNJbml0VHlwZSk7CiB9CiAK
LXN0YXRpYyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW5pdGlhbGl6YXRpb25EYXRhRm9y
UmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KiByZXF1ZXN0KQorc3RhdGljIFJlZjxjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbml0aWFsaXphdGlvbkRhdGFGb3JSZXF1ZXN0KEFWQ29u
dGVudEtleVJlcXVlc3QqIHJlcXVlc3QpCiB7CiAgICAgaWYgKCFyZXF1ZXN0KQogICAgICAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKQEAgLTI2Niw3ICsyNjYsNyBAQCBBVkNvbnRl
bnRLZXlTZXNzaW9uKiBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6Y29udGVu
dEtleVNlc3Npb24oKQogICAgIHJldHVybiBtX3Nlc3Npb24uZ2V0KCk7CiB9CiAKLVJldGFpblB0
cjxBVkNvbnRlbnRLZXlSZXF1ZXN0PiBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6dGFrZVVuZXhwZWN0ZWRLZXlSZXF1ZXN0Rm9ySW5pdGlhbGl6YXRpb25EYXRhKGNvbnN0IEF0
b21TdHJpbmcmIGluaXREYXRhVHlwZSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEp
CitSZXRhaW5QdHI8QVZDb250ZW50S2V5UmVxdWVzdD4gQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OnRha2VVbmV4cGVjdGVkS2V5UmVxdWVzdEZvckluaXRpYWxpemF0aW9uRGF0
YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGluaXREYXRhKQogewogICAgIGZvciAoYXV0byByZXF1ZXN0SXRlciA9IG1fdW5leHBl
Y3RlZEtleVJlcXVlc3RzLmJlZ2luKCk7IHJlcXVlc3RJdGVyICE9IG1fdW5leHBlY3RlZEtleVJl
cXVlc3RzLmVuZCgpOyArK3JlcXVlc3RJdGVyKSB7CiAgICAgICAgIGF1dG8mIHJlcXVlc3QgPSAq
cmVxdWVzdEl0ZXI7CkBAIC0zODAsNyArMzgwLDcgQEAgdm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQzo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUsK
ICAgICBjYWxsYmFjayhpbml0aWFsaXplKCkpOwogfQogCi12b2lkIENETUluc3RhbmNlRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBzZXJ2ZXJDZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJh
Y2spCit2b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXRTZXJ2ZXJD
ZXJ0aWZpY2F0ZShSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBzZXJ2ZXJDZXJ0
aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgREVCVUdfTE9HX0lG
X1BPU1NJQkxFKExPR0lERU5USUZJRVIpOwogICAgIG1fc2VydmVyQ2VydGlmaWNhdGUgPSBXVEZN
b3ZlKHNlcnZlckNlcnRpZmljYXRlKTsKQEAgLTU4NCw4ICs1ODQsOCBAQCBDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMqIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOgogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgYXV0byBzZXNzaW9u
S2V5cyA9IHNlc3Npb25JbnRlcmZhY2UtPmtleUlEcygpOwotICAgICAgICBpZiAoYW55T2Yoc2Vz
c2lvbktleXMsIFsmXShjb25zdCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIHNlc3Npb25L
ZXkpIHsKLSAgICAgICAgICAgIHJldHVybiBrZXlJRHMuZmluZElmKFsmXShjb25zdCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGtleUlEKSB7CisgICAgICAgIGlmIChhbnlPZihzZXNzaW9u
S2V5cywgWyZdKGNvbnN0IFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgc2Vzc2lv
bktleSkgeworICAgICAgICAgICAgcmV0dXJuIGtleUlEcy5maW5kSWYoWyZdKGNvbnN0IFJlZjxj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYga2V5SUQpIHsKICAgICAgICAgICAgICAgICBy
ZXR1cm4ga2V5SUQuZ2V0KCkgPT0gc2Vzc2lvbktleS5nZXQoKTsKICAgICAgICAgICAgIH0pICE9
IG5vdEZvdW5kOwogICAgICAgICB9KSkKQEAgLTY3Miw3ICs2NzIsNyBAQCBLZXlzIENETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6a2V5SURzKCkKICAgICByZXR1cm4g
a2V5SURzOwogfQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21T
dHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERh
dGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vu
c2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykK
IHsKICAgICBpZiAoIWlzTGljZW5zZVR5cGVTdXBwb3J0ZWQobGljZW5zZVR5cGUpKSB7CiAgICAg
ICAgIERFQlVHX0xPR19JRl9QT1NTSUJMRShMT0dJREVOVElGSUVSLCAiIGZhbHNlLCBsaWNlbnNl
VHlwZSBcIiIsIGxpY2Vuc2VUeXBlLCAiXCIgbm90IHN1cHBvcnRlZCIpOwpAQCAtNzUzLDcgKzc1
Myw3IEBAIHN0YXRpYyBib29sIGlzRXF1YWwoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICByZXR1cm4gc3RyaW5nT3JFeGNlcHRpb24u
cmV0dXJuVmFsdWUoKSA9PSB2YWx1ZTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5z
ZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgTGljZW5z
ZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNl
VHlwZSwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhLCBM
aWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1fZXhwaXJlZFNl
c3Npb25zLmlzRW1wdHkoKSAmJiBpc0VxdWFsKHJlc3BvbnNlRGF0YSwgImFja25vd2xlZGdlZCJf
cykpIHsKICAgICAgICAgYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0
aWZpY2F0ZSgpOwpAQCAtODU1LDcgKzg1NSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpCiAg
ICAgICAgICAgICBhdXRvIGtleUlEID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSgqa2V5
SURWZWN0b3IpKTsKICAgICAgICAgICAgIGF1dG8gZm91bmRJbmRleCA9IG1fY3VycmVudFJlcXVl
c3QudmFsdWUoKS5yZXF1ZXN0cy5maW5kSWYoWyZdIChhdXRvJiByZXF1ZXN0KSB7CiAgICAgICAg
ICAgICAgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOwot
ICAgICAgICAgICAgICAgIHJldHVybiBrZXlJRHMuZmluZElmKFsmXShjb25zdCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mIGlkKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGtleUlEcy5m
aW5kSWYoWyZdKGNvbnN0IFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgaWQpIHsK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlkLmdldCgpID09IGtleUlELmdldCgpOwogICAg
ICAgICAgICAgICAgIH0pICE9IG5vdEZvdW5kOwogICAgICAgICAgICAgfSk7CkBAIC0xMTUzLDcg
KzExNTMsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6ZGlkUHJvdmlkZVJlcXVlc3RzKFZlY3RvcjxSZXRhaQogICAgIGlmIChhdXRvKiBjZXJ0aWZp
Y2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkpCiAgICAgICAgIGFwcElkZW50
aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCk7CiAK
LSAgICB1c2luZyBSZXF1ZXN0c0RhdGEgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiwgUmV0YWluUHRyPE5TRGF0YT4+PjsKKyAgICB1c2luZyBSZXF1ZXN0
c0RhdGEgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiwgUmV0YWluUHRyPE5TRGF0YT4+PjsKICAgICBzdHJ1Y3QgQ2FsbGJhY2tBZ2dyZWdhdG9y
IGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENhbGxiYWNrQWdncmVnYXRvcj4g
ewogICAgICAgICB1c2luZyBDYWxsYmFja0Z1bmN0aW9uID0gRnVuY3Rpb248dm9pZChSZXF1ZXN0
c0RhdGEmJik+OwogICAgICAgICBzdGF0aWMgUmVmUHRyPENhbGxiYWNrQWdncmVnYXRvcj4gY3Jl
YXRlKENhbGxiYWNrRnVuY3Rpb24mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTEyMDksNyArMTIw
OSw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpk
aWRQcm92aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAgICAgQHRyeSB7CiAgICAgICAgIGZvciAo
YXV0byByZXF1ZXN0IDogbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgpLnJlcXVlc3RzKSB7CiAgICAg
ICAgICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdC5nZXQoKSk7Ci0g
ICAgICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4ga2V5SUQgPSBXVEZNb3Zl
KGtleUlEcy5maXJzdCgpKTsKKyAgICAgICAgICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBrZXlJRCA9IFdURk1vdmUoa2V5SURzLmZpcnN0KCkpOwogICAgICAgICAgICAg
YXV0byBjb250ZW50SWRlbnRpZmllciA9IGtleUlELT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVO
U0RhdGEoKTsKICAgICAgICAgICAgIFtyZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVx
dWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250
ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpba2V5SUQg
PSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvcl0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3RE
YXRhLCBOU0Vycm9yICopIG11dGFibGUgewogICAgICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJl
YWQoW2tleUlEID0gV1RGTW92ZShrZXlJRCksIGFnZ3JlZ2F0b3IgPSBXVEZNb3ZlKGFnZ3JlZ2F0
b3IpLCBjb250ZW50S2V5UmVxdWVzdERhdGEgPSByZXRhaW5QdHIoY29udGVudEtleVJlcXVlc3RE
YXRhKV0gKCkgbXV0YWJsZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCA0MWRlZWM3NzVm
MjA5OTE5ZDlmMzY2NGU3N2IzMzExYmMwN2Y0MTZhLi4xNmE0NjJmMjM3ODQ5NmE4NDAwZDk1YmE5
ZjI1YzVhNjBiODIwNzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTI4ODAsNyArMjg4
MCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6YXR0ZW1wdFRv
RGVjcnlwdFdpdGhJbnN0YW5jZShDRE1JbnN0YW5jCiAgICAgaWYgKCFtX2tleUlEIHx8ICFtX2Nk
bUluc3RhbmNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGluc3RhbmNlU2Vzc2lvbiA9
IG1fY2RtSW5zdGFuY2UtPnNlc3Npb25Gb3JLZXlJRHMoVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj46OmZyb20oKm1fa2V5SUQpKTsKKyAgICBhdXRvIGluc3RhbmNlU2Vzc2lvbiA9
IG1fY2RtSW5zdGFuY2UtPnNlc3Npb25Gb3JLZXlJRHMoVmVjdG9yPFJlZjxjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj46OmZyb20oKm1fa2V5SUQpKTsKICAgICBpZiAoIWluc3RhbmNlU2Vz
c2lvbikKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAppbmRleCA3NTRiMWUyZWVjMDJkZjMzOTVlNWNk
YjVjMDdmOGU4OGE5MzVjZDA4Li5lNjAwYjE2YzI5OGU1YjI5ZjBjZWY5MDQ3ODY4MGM2OGVlNWM3
NGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDLmgKQEAgLTIyMSw3ICsyMjEsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAjaWYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQogICAgIFJl
ZlB0cjxDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQz4gbV9jZG1JbnN0YW5jZTsK
LSAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBtX2tleUlEczsKKyAgICBW
ZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBtX2tleUlEczsKICNlbmRp
ZgogCiAgICAgc3RkOjpvcHRpb25hbDxGbG9hdFNpemU+IG1fY2FjaGVkU2l6ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNw
cAppbmRleCAyNDc4MTUwNjAyYThkMGQ2YjA2ZDdhM2E1ODM1ZjBiODMwNzIxNGU0Li40ZjVhZmZk
NGI4NGY3MjA4NmJhNWNlZDg5ZDg4NTc0MDE2NDQyMWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCkBAIC0yNTQs
NyArMjU0LDcgQEAgdm9pZCBzaGFyZWRCdWZmZXJSZWxlYXNlKHZvaWQqIGluZm8pCiB9CiAjZW5k
aWYKIAotSW1hZ2VEZWNvZGVyQ0c6OkltYWdlRGVjb2RlckNHKEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK0ltYWdl
RGVjb2RlckNHOjpJbWFnZURlY29kZXJDRyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBk
YXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiB7CiAgICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiB1dGlIaW50OwogICAgIGlmIChkYXRhLnNpemUoKSA+PSAzMikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVj
b2RlckNHLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29k
ZXJDRy5oCmluZGV4IDE3NTEwODg3MjFmNTYyMWZjZGJmZDAwZjI2ZGIyNzdjODExN2RmODEuLjM2
OGIxNjI4M2U0YmZmNDYyODlhMTdlYzQwODMyZWY1MDE1ZDAwMTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaApAQCAtMzIs
OSArMzIsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbWFnZURlY29kZXJDRyBmaW5h
bCA6IHB1YmxpYyBJbWFnZURlY29kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgotICAgIEltYWdlRGVjb2RlckNHKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEs
IEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgSW1hZ2VEZWNv
ZGVyQ0coY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIAotICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVy
Q0c+IGNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBo
YU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pCisgICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXJDRz4gY3JlYXRlKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGVjb2RlckNHKGRhdGEsIGFscGhhT3B0
aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3Ry
ZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0lt
YWdlRGVjb2RlckdTdHJlYW1lci5jcHAKaW5kZXggMjljOWFiNGVlZGYyZDYzOWI0MWU4MmZhNmFj
MmRmMzc5ZjRhMzQ3My4uMmZkODRkMjE5Yjk4Y2RhMTU5YjA3ZWZjNTE2OWVlMDJhODI3ODc5ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0lt
YWdlRGVjb2RlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAKQEAgLTgxLDEyICs4MSwx
MiBAQCBJbWFnZURlY29kZXJHU3RyZWFtZXJTYW1wbGUqIHRvU2FtcGxlKEl0ZXJhdG9yIGl0ZXIp
CiAgICAgcmV0dXJuIChJbWFnZURlY29kZXJHU3RyZWFtZXJTYW1wbGUqKWl0ZXItPnNlY29uZC5n
ZXQoKTsKIH0KIAotUmVmUHRyPEltYWdlRGVjb2RlckdTdHJlYW1lcj4gSW1hZ2VEZWNvZGVyR1N0
cmVhbWVyOjpjcmVhdGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorUmVmUHRyPEltYWdlRGVjb2RlckdT
dHJlYW1lcj4gSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpjcmVhdGUoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxw
aGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGVjb2RlckdTdHJlYW1l
cihkYXRhLCBtaW1lVHlwZSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KSk7CiB9CiAKLUltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK0ltYWdlRGVjb2RlckdTdHJlYW1l
cjo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRh
dGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbikKICAgICA6IG1fbWltZVR5cGUobWltZVR5cGUpCiB7CiAgICAgc3RhdGljIHN0
ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5o
CmluZGV4IDI2MWRhZmYyNjE1OGUxN2EyYTQyMjFmZmIyNDM1NDY3NzE2ZGJkM2IuLjE5ZDhjOTll
MzA2NzJkNDg4NmVhODkwYzI0NzMzMjkyM2Q5NjUzYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFtZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNv
ZGVyR1N0cmVhbWVyLmgKQEAgLTQxLDggKzQxLDggQEAgY2xhc3MgSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyIGZpbmFsIDogcHVibGljIEltYWdlRGVjb2RlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VEZWNvZGVyR1N0cmVhbWVyKTsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlRGVjb2RlckdTdHJlYW1lcj4gY3JlYXRl
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9w
dGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwotICAgIEltYWdlRGVjb2RlckdTdHJl
YW1lcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxw
aGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBzdGF0aWMgUmVmUHRy
PEltYWdlRGVjb2RlckdTdHJlYW1lcj4gY3JlYXRlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pOworICAgIEltYWdlRGVjb2RlckdTdHJlYW1lcihjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKICAgICB2aXJ0dWFsIH5JbWFnZURlY29kZXJHU3RyZWFt
ZXIoKSA9IGRlZmF1bHQ7CiAKICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c01lZGlhVHlwZShNZWRp
YVR5cGUgdHlwZSkgeyByZXR1cm4gdHlwZSA9PSBNZWRpYVR5cGU6OlZpZGVvOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRo
dW5kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2Vt
ZS9DRE1UaHVuZGVyLmNwcAppbmRleCBjZDhkZGQ5MmY5ZTc5MTM4ZjY3NWYxOTZmYmVhMThlODEw
NzJmMWE3Li4zYzZjMWU1NDI2ZDI0MDFmNTE1YzZiMTc3MWZjNjIyYjBkMjc3Y2E2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRo
dW5kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9lbWUvQ0RNVGh1bmRlci5jcHAKQEAgLTIzNyw3ICsyMzcsNyBAQCBib29sIENETVByaXZhdGVU
aHVuZGVyOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwg
Y29uc3QgRgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IENETVByaXZhdGVUaHVuZGVyOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAorUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IENETVByaXZhdGVUaHVuZGVyOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewogICAgIHJldHVybiByZXNw
b25zZS5jb3B5KCk7CiB9CkBAIC0yNjAsNyArMjYwLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVRodW5k
ZXI6OmluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1
cmEKICAgICBjYWxsYmFjayhTdWNjZWVkZWQpOwogfQogCi12b2lkIENETUluc3RhbmNlVGh1bmRl
cjo6c2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgY2Vy
dGlmaWNhdGUsICBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VU
aHVuZGVyOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgIFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAg
IGF1dG8gZGF0YSA9IGNlcnRpZmljYXRlLT5leHRyYWN0RGF0YSgpOwogICAgIE9wZW5DRE1FcnJv
ciBlcnJvciA9IG9wZW5jZG1fc3lzdGVtX3NldF9zZXJ2ZXJfY2VydGlmaWNhdGUobV90aHVuZGVy
U3lzdGVtLmdldCgpLCBjb25zdF9jYXN0PHVpbnQ4X3QqPihkYXRhLmRhdGEoKSksIGRhdGEuc2l6
ZSgpKTsKQEAgLTMyNiw3ICszMjYsNyBAQCBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBDRE1J
bnN0YW5jZVRodW5kZXI6OmNyZWF0ZVNlc3Npb24oKQogY2xhc3MgUGFyc2VkUmVzcG9uc2VNZXNz
YWdlIHsKIAogcHVibGljOgotICAgIFBhcnNlZFJlc3BvbnNlTWVzc2FnZShjb25zdCBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKKyAgICBQYXJzZWRSZXNwb25zZU1lc3Nh
Z2UoY29uc3QgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBidWZmZXIpCiAg
ICAgewogICAgICAgICBpZiAoIWJ1ZmZlciB8fCAhYnVmZmVyLT5zaXplKCkpCiAgICAgICAgICAg
ICByZXR1cm47CkBAIC0zNDksOCArMzQ5LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1ZhbGlk
KCkgY29uc3QgeyByZXR1cm4gbV9pc1ZhbGlkOyB9CiAgICAgYm9vbCBoYXNQYXlsb2FkKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4obV9wYXlsb2FkKTsgfQotICAgIGNvbnN0IFJl
ZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpIGNvbnN0JiB7IEFTU0VSVChtX3Bh
eWxvYWQpOyByZXR1cm4gbV9wYXlsb2FkLnZhbHVlKCk7IH0KLSAgICBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mIHBheWxvYWQoKSAmIHsgQVNTRVJUKG1fcGF5bG9hZCk7IHJldHVybiBtX3Bh
eWxvYWQudmFsdWUoKTsgfQorICAgIGNvbnN0IFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYgcGF5bG9hZCgpIGNvbnN0JiB7IEFTU0VSVChtX3BheWxvYWQpOyByZXR1cm4gbV9wYXls
b2FkLnZhbHVlKCk7IH0KKyAgICBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIHBh
eWxvYWQoKSAmIHsgQVNTRVJUKG1fcGF5bG9hZCk7IHJldHVybiBtX3BheWxvYWQudmFsdWUoKTsg
fQogICAgIGJvb2wgaGFzVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZS5oYXNfdmFsdWUoKTsg
fQogICAgIFdlYkNvcmU6Ok1lZGlhS2V5TWVzc2FnZVR5cGUgdHlwZSgpIGNvbnN0IHsgQVNTRVJU
KG1fdHlwZSk7IHJldHVybiBtX3R5cGUudmFsdWUoKTsgfQogICAgIFdlYkNvcmU6Ok1lZGlhS2V5
TWVzc2FnZVR5cGUgdHlwZU9yKFdlYkNvcmU6Ok1lZGlhS2V5TWVzc2FnZVR5cGUgYWx0ZXJuYXRl
KSBjb25zdCB7IHJldHVybiBtX3R5cGUgPyBtX3R5cGUudmFsdWUoKSA6IGFsdGVybmF0ZTsgfQpA
QCAtMzU5LDExICszNTksMTEgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGJvb2wgbV9pc1Zh
bGlkIHsgZmFsc2UgfTsKLSAgICBzdGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4gbV9wYXlsb2FkOworICAgIHN0ZDo6b3B0aW9uYWw8UmVmPGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+PiBtX3BheWxvYWQ7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpNZWRp
YUtleU1lc3NhZ2VUeXBlPiBtX3R5cGU7CiB9OwogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvblRo
dW5kZXI6OmNoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6Y2hhbGxl
bmdlR2VuZXJhdGVkQ2FsbGJhY2soUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyKQogewogICAgIFBhcnNlZFJlc3BvbnNlTWVzc2FnZSBwYXJzZWRSZXNwb25zZU1l
c3NhZ2UoYnVmZmVyKTsKICAgICBpZiAoIXBhcnNlZFJlc3BvbnNlTWVzc2FnZSkgewpAQCAtNDcw
LDcgKzQ3MCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6a2V5c1VwZGF0ZURv
bmVDYWxsYmFjaygpCiAgICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5jbGVhcigpOwogfQog
Ci12b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmVycm9yQ2FsbGJhY2soUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9u
VGh1bmRlcjo6ZXJyb3JDYWxsYmFjayhSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBtZXNzYWdlKQogewogICAgIEdTVF9FUlJPUigiQ0RNIGVycm9yIik7CiAgICAgYXV0byBk
YXRhID0gbWVzc2FnZS0+ZXh0cmFjdERhdGEoKTsKQEAgLTQ4NCw3ICs0ODQsNyBAQCB2b2lkIENE
TUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmVycm9yQ2FsbGJhY2soUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgbQogICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuY2xlYXIoKTsK
IH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1ZXN0TGljZW5zZShMaWNl
bnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YVNoYXJlZEJ1ZmZlciwKK3ZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5z
ZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGFTaGFyZWRCdWZmZXIsCiAgICAgTGljZW5zZUNhbGxi
YWNrJiYgY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKQEAgLTUwMyw3
ICs1MDMsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnJlcXVlc3RMaWNlbnNl
KExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdAogICAgICAgICBwYXlsb2FkRGF0YS5k
YXRhKCksIHBheWxvYWREYXRhLnNpemUoKSwgbnVsbHB0ciwgMCwgJm1fdGh1bmRlclNlc3Npb25D
YWxsYmFja3MsIHRoaXMsICZzZXNzaW9uKTsKICAgICBpZiAoIXNlc3Npb24pIHsKICAgICAgICAg
R1NUX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIHNlc3Npb24iKTsKLSAgICAgICAgUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IGluaXREYXRhID0gbV9pbml0RGF0YS5wYXlsb2FkKCk7Cisg
ICAgICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbml0RGF0YSA9IG1f
aW5pdERhdGEucGF5bG9hZCgpOwogICAgICAgICBjYWxsYmFjayhpbml0RGF0YS5yZWxlYXNlTm9u
TnVsbCgpLCB7IH0sIGZhbHNlLCBGYWlsZWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
NTEyLDcgKzUxMiw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVzdExp
Y2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0CiAKICAgICBhdXRvIGdlbmVy
YXRlQ2hhbGxlbmdlID0gW3RoaXMsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0
YWJsZSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbml0RGF0YSA9IG1faW5pdERhdGEucGF5bG9hZCgpOwor
ICAgICAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gaW5pdERhdGEgPSBt
X2luaXREYXRhLnBheWxvYWQoKTsKICAgICAgICAgaWYgKG1fc2Vzc2lvbklELmlzRW1wdHkoKSkg
ewogICAgICAgICAgICAgR1NUX0VSUk9SKCJjb3VsZCBub3QgY3JlYXRlIHNlc3Npb24gaWQiKTsK
ICAgICAgICAgICAgIGNhbGxiYWNrKGluaXREYXRhLnJlbGVhc2VOb25OdWxsKCksIHsgfSwgZmFs
c2UsIEZhaWxlZCk7CkBAIC01NDIsNyArNTQyLDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25U
aHVuZGVyOjpzZXNzaW9uRmFpbHVyZSgpCiAgICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5j
bGVhcigpOwogfQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnVwZGF0ZUxpY2Vu
c2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2sp
Cit2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAg
ICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uSUQsIHNlc3Npb25JRCA9PSBtX3Nlc3Npb25JRCk7CiAK
QEAgLTU5OCw3ICs1OTgsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmxvYWRT
ZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JRAogICAgICAgICAgICAg
ICAgIFBhcnNlZFJlc3BvbnNlTWVzc2FnZSBwYXJzZWRSZXNwb25zZU1lc3NhZ2UocmVzcG9uc2VN
ZXNzYWdlKTsKICAgICAgICAgICAgICAgICBBU1NFUlQocGFyc2VkUmVzcG9uc2VNZXNzYWdlKTsK
ICAgICAgICAgICAgICAgICBpZiAocGFyc2VkUmVzcG9uc2VNZXNzYWdlLmhhc1BheWxvYWQoKSkg
ewotICAgICAgICAgICAgICAgICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2Fn
ZSA9IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CisgICAgICAgICAg
ICAgICAgICAgIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtZXNzYWdlID0gV1RG
TW92ZShwYXJzZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsKICAgICAgICAgICAgICAgICAg
ICAgR1NUX0RFQlVHKCJnb3QgbWVzc2FnZSBvZiBzaXplICV6dSIsIG1lc3NhZ2UtPnNpemUoKSk7
CiAjaWZuZGVmIEdTVF9ESVNBQkxFX0dTVF9ERUJVRwogICAgICAgICAgICAgICAgICAgICBhdXRv
IGRhdGEgPSBtZXNzYWdlLT5jb3B5RGF0YSgpOwpAQCAtNjQ4LDcgKzY0OCw3IEBAIHZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSUQsIExpY2VuCiB7CiAgICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uSUQsIG1fc2Vzc2lv
bklEID09IHNlc3Npb25JRCk7CiAKLSAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmFwcGVu
ZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBzdWNjZXNzLCBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpIG11dGFibGUgeworICAgIG1fc2Vz
c2lvbkNoYW5nZWRDYWxsYmFja3MuYXBwZW5kKFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spXShib29sIHN1Y2Nlc3MsIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAg
ICAgICAgIGlmIChzdWNjZXNzKSB7CiAgICAgICAgICAgICBpZiAoIWJ1ZmZlcikKQEAgLTY1Nyw3
ICs2NTcsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnJlbW92ZVNlc3Npb25E
YXRhKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklELCBMaWNlbgogICAgICAgICAgICAgICAgIFBhcnNl
ZFJlc3BvbnNlTWVzc2FnZSBwYXJzZWRSZXNwb25zZU1lc3NhZ2UoYnVmZmVyKTsKICAgICAgICAg
ICAgICAgICBBU1NFUlQocGFyc2VkUmVzcG9uc2VNZXNzYWdlKTsKICAgICAgICAgICAgICAgICBp
ZiAocGFyc2VkUmVzcG9uc2VNZXNzYWdlLmhhc1BheWxvYWQoKSkgewotICAgICAgICAgICAgICAg
ICAgICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2Vk
UmVzcG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CisgICAgICAgICAgICAgICAgICAgIFJlZjxjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtZXNzYWdlID0gV1RGTW92ZShwYXJzZWRSZXNwb25z
ZU1lc3NhZ2UucGF5bG9hZCgpKTsKICAgICAgICAgICAgICAgICAgICAgR1NUX0RFQlVHKCJzZXNz
aW9uICVzIHJlbW92ZWQsIG1lc3NhZ2UgbGVuZ3RoICV6dSIsIG1fc2Vzc2lvbklELnV0ZjgoKS5k
YXRhKCksIG1lc3NhZ2UtPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG1f
a2V5U3RvcmUuYWxsS2V5c0FzKE1lZGlhS2V5U3RhdHVzOjpSZWxlYXNlZCksIFdURk1vdmUobWVz
c2FnZSksIFN1Y2Nlc3NWYWx1ZTo6U3VjY2VlZGVkKTsKICAgICAgICAgICAgICAgICB9IGVsc2Ug
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L2VtZS9DRE1UaHVuZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvZW1lL0NETVRodW5kZXIuaAppbmRleCAxMDIwZTE1MzIyNzFiNTM1MWUxMDZkZGU4ZjIx
ZWE1NDA1YTljMjM3Li5jOTY3ZjIwYzFjYTYzNzI1OWQ2NDlmZDhiOWE2ODUxYmIxZDI5MjdkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1l
L0NETVRodW5kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvZW1lL0NETVRodW5kZXIuaApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3Vw
cG9ydHNTZXNzaW9ucygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShj
b25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZp
bmFsOwotICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNl
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDxTdHJp
bmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwogCiBwcml2
YXRlOgpAQCAtMTEwLDcgKzExMCw3IEBAIHB1YmxpYzoKICAgICAvLyBDRE1JbnN0YW5jZQogICAg
IEltcGxlbWVudGF0aW9uVHlwZSBpbXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBJbXBsZW1lbnRhdGlvblR5cGU6OlRodW5kZXI7IH0KICAgICB2b2lkIGluaXRpYWxpemVX
aXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dE
aXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxi
YWNrJiYpIGZpbmFsOwotICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNl
dFNlcnZlckNlcnRpZmljYXRlKFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBT
dWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNv
bnN0IFN0cmluZyYpIGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9rZXlTeXN0ZW07IH0KICAgICBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNz
aW9uPiBjcmVhdGVTZXNzaW9uKCkgZmluYWw7CkBAIC0xMjYsOCArMTI2LDggQEAgY2xhc3MgQ0RN
SW5zdGFuY2VTZXNzaW9uVGh1bmRlciBmaW5hbCA6IHB1YmxpYyBDRE1JbnN0YW5jZVNlc3Npb25Q
cm94eSB7CiBwdWJsaWM6CiAgICAgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcihDRE1JbnN0YW5j
ZVRodW5kZXImKTsKIAotICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0
IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
aW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUxpY2Vu
c2UoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0TGlj
ZW5zZShMaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8Y29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYp
IGZpbmFsOworICAgIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlw
ZSwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxs
YmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAg
IHZvaWQgY2xvc2VTZXNzaW9uKGNvbnN0IFN0cmluZyYsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYp
IGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiwgTGljZW5z
ZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJikgZmluYWw7CkBAIC0xNDEsMTQgKzE0
MSwxNCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIENETUluc3RhbmNlVGh1bmRlciogY2RtSW5z
dGFuY2VUaHVuZGVyKCkgY29uc3Q7CiAKLSAgICB1c2luZyBOb3RpZmljYXRpb24gPSB2b2lkIChD
RE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjoqKShSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJik7CisgICAgdXNpbmcgTm90aWZpY2F0aW9uID0gdm9pZCAoQ0RNSW5zdGFu
Y2VTZXNzaW9uVGh1bmRlcjo6KikoUmVmUHRyPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYpOwogICAgIHVzaW5nIENoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrID0gRnVu
Y3Rpb248dm9pZCgpPjsKLSAgICB1c2luZyBTZXNzaW9uQ2hhbmdlZENhbGxiYWNrID0gRnVuY3Rp
b248dm9pZChib29sLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+OworICAgIHVz
aW5nIFNlc3Npb25DaGFuZ2VkQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKGJvb2wsIFJlZlB0cjxj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKT47CiAKLSAgICB2b2lkIGNoYWxsZW5nZUdl
bmVyYXRlZENhbGxiYWNrKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2
b2lkIGNoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrKFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYmKTsKICAgICB2b2lkIGtleVVwZGF0ZWRDYWxsYmFjayhLZXlJRFR5cGUmJik7
CiAgICAgdm9pZCBrZXlzVXBkYXRlRG9uZUNhbGxiYWNrKCk7Ci0gICAgdm9pZCBlcnJvckNhbGxi
YWNrKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGVycm9yQ2Fs
bGJhY2soUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIENETUlu
c3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzIHN0YXR1cyhjb25zdCBLZXlJRFR5cGUmKSBjb25zdDsK
ICAgICB2b2lkIHNlc3Npb25GYWlsdXJlKCk7CiAKQEAgLTE1OSw3ICsxNTksNyBAQCBwcml2YXRl
OgogICAgIEluaXREYXRhIG1faW5pdERhdGE7CiAgICAgT3BlbkNETVNlc3Npb25DYWxsYmFja3Mg
bV90aHVuZGVyU2Vzc2lvbkNhbGxiYWNrcyB7IH07CiAgICAgQm94UHRyPE9wZW5DRE1TZXNzaW9u
PiBtX3Nlc3Npb247Ci0gICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fbWVzc2Fn
ZTsKKyAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9tZXNzYWdlOwog
ICAgIGJvb2wgbV9uZWVkc0luZGl2aWR1YWxpemF0aW9uIHsgZmFsc2UgfTsKICAgICBWZWN0b3I8
Q2hhbGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2s+IG1fY2hhbGxlbmdlQ2FsbGJhY2tzOwogICAgIFZl
Y3RvcjxTZXNzaW9uQ2hhbmdlZENhbGxiYWNrPiBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFi
bGVJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwCmluZGV4IDgxY2U2NTQyNWVmNTNjYzAxMjRlZTEw
ODVkNDY1YWIxMDA3MDJiZDQuLjkyODNiYjk0MDJmYThmMjRlZGU2OGQ4MTZhMGMyMjY3OTRmZmM4
ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1Nj
YWxhYmxlSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCBi
b29sIG1hdGNoZXNDVVJTaWduYXR1cmUoY2hhciogY29udGVudHMpCiAKIH0KIAotUmVmUHRyPFNj
YWxhYmxlSW1hZ2VEZWNvZGVyPiBTY2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlKEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxTY2Fs
YWJsZUltYWdlRGVjb2Rlcj4gU2NhbGFibGVJbWFnZURlY29kZXI6OmNyZWF0ZShjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiB7CiAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIGxlbmd0aE9mTG9uZ2VzdFNpZ25hdHVyZSA9IDE0OyAvLyBU
byB3aXQ6ICJSSUZGPz8/P1dFQlBWUCIKICAgICBjaGFyIGNvbnRlbnRzW2xlbmd0aE9mTG9uZ2Vz
dFNpZ25hdHVyZV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuaAppbmRleCBkOWZkYTc3NmZkNThk
ODdjY2U1NGVmMzA0NDA3Y2NhNGRlMDQ3ZjM1Li4zMDMzYWIyNmYyYmM4MjliYmEwMDU3NmVkYzM0
OGE0YzczNzMwYWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9TY2FsYWJsZUltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmgKQEAgLTYwLDcgKzYwLDcg
QEAgcHVibGljOgogCiAgICAgLy8gUmV0dXJucyBudWxscHRyIGlmIHdlIGNhbid0IHNuaWZmIGEg
c3VwcG9ydGVkIHR5cGUgZnJvbSB0aGUgcHJvdmlkZWQgZGF0YSAocG9zc2libHkKICAgICAvLyBi
ZWNhdXNlIHRoZXJlIGlzbid0IGVub3VnaCBkYXRhIHlldCkuCi0gICAgc3RhdGljIFJlZlB0cjxT
Y2FsYWJsZUltYWdlRGVjb2Rlcj4gY3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEs
IEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgc3RhdGljIFJl
ZlB0cjxTY2FsYWJsZUltYWdlRGVjb2Rlcj4gY3JlYXRlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAK
ICAgICBib29sIHByZW11bHRpcGx5QWxwaGEoKSBjb25zdCB7IHJldHVybiBtX3ByZW11bHRpcGx5
QWxwaGE7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3Rl
Ym9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4u
Y3BwCmluZGV4IDg1Zjk2ZDg1ZDJiMzcyY2ZjMjE3MWE4MzQxMWQ1Mjg2OTIwNzNjZDQuLjNlYjdm
MTUxZWZkOGEwODM2MmY0Yjg2NWY2NGZkMjMxNzM0OGFkNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKQEAgLTk2Niw3ICs5NjYsNyBAQCBzdGF0
aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVEZXNjcmlwdG9yKGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBTdHJpbmcmCiAgICAgcmV0dXJuIG1lbU9iajsKIH0KIAotc3RhdGljIEhHTE9C
QUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBk
YXRhKQorc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudChjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogewogICAgIEhHTE9CQUwgbWVtT2JqID0gR2xv
YmFsQWxsb2MoR1BUUiwgZGF0YS0+c2l6ZSgpKTsKICAgICBpZiAoIW1lbU9iaikgCkBAIC05ODYs
NyArOTg2LDcgQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudChG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQogICAgIHJldHVybiBtZW1PYmo7CiB9CiAKLXN0
YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudChjb25zdCBVUkwmIHVybCwgU3Ry
aW5nJiBmaWxlTmFtZSwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKK3N0YXRpYyBIR0xP
QkFMIGNyZWF0ZUdsb2JhbEhEcm9wQ29udGVudChjb25zdCBVUkwmIHVybCwgU3RyaW5nJiBmaWxl
TmFtZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBpZiAoZmls
ZU5hbWUuaXNFbXB0eSgpIHx8ICFkYXRhKQogICAgICAgICByZXR1cm4gMDsKQEAgLTEwNjMsNyAr
MTA2Myw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVJbWFnZVRvRGF0YU9iamVjdChFbGVtZW50
JiBlbGVtZW50LCBjb25zdCBVUkwmIHVybCkKICAgICBpZiAoIWNhY2hlZEltYWdlIHx8ICFjYWNo
ZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihlbGVtZW50LnJlbmRlcmVyKCkpIHx8ICFjYWNoZWRJ
bWFnZS0+aXNMb2FkZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciogaW1hZ2VCdWZmZXIgPSBjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihlbGVt
ZW50LnJlbmRlcmVyKCkpLT5kYXRhKCk7CisgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciogaW1hZ2VCdWZmZXIgPSBjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihlbGVtZW50LnJl
bmRlcmVyKCkpLT5kYXRhKCk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlciB8fCAhaW1hZ2VCdWZmZXIt
PnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NE
TUZhY3RvcnkuY3BwCmluZGV4IDIwNTI3OTU1MjgzNmUwNDRkZDdjMmE4ZWEzMjE2ODJkOTE3OTM4
YzAuLjliOGI0YjZkNThjNzhmMzUxN2JiNmJmNTFhMmI2N2U0NWM1NzI1NzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCkBAIC02Myw3ICs2Myw3IEBAIGJvb2wg
TW9ja0NETUZhY3Rvcnk6OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVt
KQogICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGtleVN5c3RlbSwgIm9yZy53ZWJr
aXQubW9jayIpOwogfQogCi12b2lkIE1vY2tDRE1GYWN0b3J5OjphZGRLZXlzVG9TZXNzaW9uV2l0
aElEKGNvbnN0IFN0cmluZyYgaWQsIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
JiYga2V5cykKK3ZvaWQgTW9ja0NETUZhY3Rvcnk6OmFkZEtleXNUb1Nlc3Npb25XaXRoSUQoY29u
c3QgU3RyaW5nJiBpZCwgVmVjdG9yPFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4m
JiBrZXlzKQogewogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zZXNzaW9ucy5hZGQoaWQsIFdURk1v
dmUoa2V5cykpOwogICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKQEAgLTc0LDcgKzc0LDcg
QEAgdm9pZCBNb2NrQ0RNRmFjdG9yeTo6YWRkS2V5c1RvU2Vzc2lvbldpdGhJRChjb25zdCBTdHJp
bmcmIGlkLCBWZWN0b3I8UmVmPEZyYWdtZW4KICAgICAgICAgdmFsdWUuYXBwZW5kKFdURk1vdmUo
a2V5KSk7CiB9CiAKLVZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IE1vY2tDRE1G
YWN0b3J5OjpyZW1vdmVLZXlzRnJvbVNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkKK1Zl
Y3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IE1vY2tDRE1GYWN0b3J5Ojpy
ZW1vdmVLZXlzRnJvbVNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkKIHsKICAgICBhdXRv
IGl0ID0gbV9zZXNzaW9ucy5maW5kKGlkKTsKICAgICBpZiAoaXQgPT0gbV9zZXNzaW9ucy5lbmQo
KSkKQEAgLTgzLDcgKzgzLDcgQEAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4g
TW9ja0NETUZhY3Rvcnk6OnJlbW92ZUtleXNGcm9tU2Vzc2lvbldpdGhJRCgKICAgICByZXR1cm4g
V1RGTW92ZShpdC0+dmFsdWUpOwogfQogCi1jb25zdCBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+PiogTW9ja0NETUZhY3Rvcnk6OmtleXNGb3JTZXNzaW9uV2l0aElEKGNvbnN0IFN0
cmluZyYgaWQpIGNvbnN0Citjb25zdCBWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+PiogTW9ja0NETUZhY3Rvcnk6OmtleXNGb3JTZXNzaW9uV2l0aElEKGNvbnN0IFN0cmlu
ZyYgaWQpIGNvbnN0CiB7CiAgICAgYXV0byBpdCA9IG1fc2Vzc2lvbnMuZmluZChpZCk7CiAgICAg
aWYgKGl0ID09IG1fc2Vzc2lvbnMuZW5kKCkpCkBAIC0yMTEsNyArMjExLDcgQEAgYm9vbCBNb2Nr
Q0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29u
c3QgRnJhZ21lbnRlZFMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IE1vY2tDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CitSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gTW9ja0NETTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiByZXNwb25zZSkgY29uc3QKIHsKICAgICBhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlLm1h
a2VDb250aWd1b3VzKCk7CiAgICAgaWYgKCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoYnVmZmVyLT5k
YXRhKCksIHJlc3BvbnNlLnNpemUoKSkpCkBAIC0yNzAsOSArMjcwLDEwIEBAIHZvaWQgTW9ja0NE
TUluc3RhbmNlOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0
ZW1Db25maWd1cmF0CiAgICAgY2FsbGJhY2soaW5pdGlhbGl6ZSgpKTsKIH0KIAotdm9pZCBNb2Nr
Q0RNSW5zdGFuY2U6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgTW9j
a0NETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8Y29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7
Ci0gICAgU3RyaW5nVmlldyBjZXJ0aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUtPm1ha2VD
b250aWd1b3VzKCktPmRhdGEoKSwgY2VydGlmaWNhdGUtPnNpemUoKSk7CisgICAgYXV0byBjb250
aWd1b3VzQ2VydGlmaWNhdGUgPSBjZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBT
dHJpbmdWaWV3IGNlcnRpZmljYXRlU3RyaW5nVmlldyhjb250aWd1b3VzQ2VydGlmaWNhdGUtPmRh
dGEoKSwgY2VydGlmaWNhdGUtPnNpemUoKSk7CiAKICAgICBjYWxsYmFjayhlcXVhbElnbm9yaW5n
QVNDSUlDYXNlKGNlcnRpZmljYXRlU3RyaW5nVmlldywgInZhbGlkIikgPyBTdWNjZWVkZWQgOiBG
YWlsZWQpOwogfQpAQCAtMjk4LDcgKzI5OSw3IEBAIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246Ok1v
Y2tDRE1JbnN0YW5jZVNlc3Npb24oV2Vha1B0cjxNb2NrQ0RNSW5zdGFuY2U+JiYgaW5zdGFuCiB7
CiB9CiAKLXZvaWQgTW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGljZW5z
ZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxi
YWNrKQordm9pZCBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNl
VHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8Y29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYg
Y2FsbGJhY2spCiB7CiAgICAgTW9ja0NETUZhY3RvcnkqIGZhY3RvcnkgPSBtX2luc3RhbmNlID8g
bV9pbnN0YW5jZS0+ZmFjdG9yeSgpIDogbnVsbHB0cjsKICAgICBpZiAoIWZhY3RvcnkpIHsKQEAg
LTMyNCw3ICszMjUsNyBAQCB2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNl
bnNlKExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBlLCBjb25zdCBBdG9tUwogICAgIGNhbGxiYWNrKFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGxpY2Vuc2UuZGF0YSgpLCBsaWNlbnNlLmxlbmd0aCgpKSwgc2Vz
c2lvbklELCBmYWxzZSwgU3VjY2Vzc1ZhbHVlOjpTdWNjZWVkZWQpOwogfQogCi12b2lkIE1vY2tD
RE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQs
IExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGlj
ZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Np
b246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLCBS
ZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0
ZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgTW9ja0NETUZhY3RvcnkqIGZhY3RvcnkgPSBt
X2luc3RhbmNlID8gbV9pbnN0YW5jZS0+ZmFjdG9yeSgpIDogbnVsbHB0cjsKICAgICBpZiAoIWZh
Y3RvcnkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3Rv
cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaAppbmRleCBkOTZj
MTU2ZWU0ZDI3OTFiOGIwOTk4ZGFmOTQwZWM3NTM3ODA3YmMzLi4zM2UzMTFjMjg2NTM1YjA5M2Yx
MmMxZDgyZDk2Y2Q4YjI3YjFmMzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L01vY2tDRE1GYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFj
dG9yeS5oCkBAIC03Nyw5ICs3Nyw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzU2Vzc2lvbldp
dGhJRChjb25zdCBTdHJpbmcmIGlkKSB7IHJldHVybiBtX3Nlc3Npb25zLmNvbnRhaW5zKGlkKTsg
fQogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSB7IG1fc2Vz
c2lvbnMucmVtb3ZlKGlkKTsgfQotICAgIHZvaWQgYWRkS2V5c1RvU2Vzc2lvbldpdGhJRChjb25z
dCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmKTsKLSAg
ICBjb25zdCBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pioga2V5c0ZvclNlc3Np
b25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkgY29uc3Q7Ci0gICAgVmVjdG9yPFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj4gcmVtb3ZlS2V5c0Zyb21TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmlu
ZyYgaWQpOworICAgIHZvaWQgYWRkS2V5c1RvU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlk
LCBWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmKTsKKyAgICBjb25z
dCBWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pioga2V5c0ZvclNlc3Np
b25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkgY29uc3Q7CisgICAgVmVjdG9yPFJlZjxjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gcmVtb3ZlS2V5c0Zyb21TZXNzaW9uV2l0aElEKGNvbnN0
IFN0cmluZyYgaWQpOwogCiBwcml2YXRlOgogICAgIE1vY2tDRE1GYWN0b3J5KCk7CkBAIC05Niw3
ICs5Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NhbkNyZWF0ZUluc3RhbmNlcyB7IHRydWUg
fTsKICAgICBib29sIG1fc3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMgeyB0cnVlIH07CiAgICAg
Ym9vbCBtX3N1cHBvcnRzU2Vzc2lvbnMgeyB0cnVlIH07Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFZl
Y3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBtX3Nlc3Npb25zOworICAgIEhhc2hN
YXA8U3RyaW5nLCBWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gbV9z
ZXNzaW9uczsKIH07CiAKIGNsYXNzIE1vY2tDRE0gOiBwdWJsaWMgQ0RNUHJpdmF0ZSB7CkBAIC0x
MjIsNyArMTIyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNh
dGVzKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QgZmlu
YWw7CiAgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7Ci0gICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpIGNvbnN0IGZpbmFsOworICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25z
dCBmaW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29u
c3QgU3RyaW5nJikgY29uc3QgZmluYWw7CiAKICAgICBXZWFrUHRyPE1vY2tDRE1GYWN0b3J5PiBt
X2ZhY3Rvcnk7CkBAIC0xMzksNyArMTM5LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBJbXBs
ZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
SW1wbGVtZW50YXRpb25UeXBlOjpNb2NrOyB9CiAgICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZp
Z3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5j
dGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYp
IGZpbmFsOwotICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZl
ckNlcnRpZmljYXRlKFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNz
Q2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0
cmluZyYpIGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWw7
CiAgICAgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOwpA
QCAtMTU0LDggKzE1NCw4IEBAIHB1YmxpYzoKICAgICBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uKFdl
YWtQdHI8TW9ja0NETUluc3RhbmNlPiYmKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHJlcXVlc3RM
aWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmlu
YWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZp
bmFsOworICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJp
bmcmIGluaXREYXRhVHlwZSwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5p
dERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2Uo
Y29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vz
c2lvbihMaWNlbnNlVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Np
b25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcm
LCBDbG9zZVNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25E
YXRhKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNr
JiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETUluc3RhbmNlUHJveHkuY3BwCmluZGV4IDUxYzczOWMzMmM3NGQ3NzZkM2IxZjMw
ZTU1ZDVhNTRiZWIxMDgyYzYuLjBkM2MzMGYzOWUxYmFjZGNlNGFkZGQyNmY0NmM2YjI4NWJlZWM2
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VQcm94eS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgUmVtb3RlQ0RNSW5zdGFu
Y2VQcm94eTo6flJlbW90ZUNETUluc3RhbmNlUHJveHkoKQogICAgIG1faW5zdGFuY2UtPmNsZWFy
Q2xpZW50KCk7CiB9CiAKLXZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6dW5yZXF1ZXN0ZWRJ
bml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVByb3h5
Ojp1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYgdHlw
ZSwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEpCiB7CiAgICAg
aWYgKCFtX2NkbSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmgKaW5kZXggMDJjNWNkMzdh
ZTU0ODAyZjZkMGM4ZGNjY2IwYmE4MGNmMzM4OGMzMy4uYzA5Y2ExNTRjMmM5Mzg3OTBjY2IwZDM3
NmNlNTJlZDllNjlmM2IzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oCkBAIC02Niw3ICs2Niw3IEBAIHByaXZh
dGU6CiAgICAgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eShXZWFrUHRyPFJlbW90ZUNETVByb3h5PiYm
LCBSZWY8V2ViQ29yZTo6Q0RNSW5zdGFuY2U+JiYsIFVuaXF1ZVJlZjxSZW1vdGVDRE1JbnN0YW5j
ZUNvbmZpZ3VyYXRpb24+JiYsIFJlbW90ZUNETUluc3RhbmNlSWRlbnRpZmllcik7CiAKICAgICAv
LyBDRE1JbnN0YW5jZUNsaWVudAotICAgIHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRh
dGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJl
Y2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmKSBmaW5hbDsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5h
bDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuY3BwCmluZGV4IDdiYTE2NjRkZjE0OGYyZDRm
NjU0MzYxNGUzMTQwNDBhYjkyMjc5ZWYuLmQ5ZWE4NWVlZDQ2ZjM2Njg0MmY0Njg5ZWMzZTRhZTk3
MzYxZmU2OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmNwcApAQCAtNzAsNyArNzAs
NyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpyZXF1ZXN0TGljZW5zZShM
aWNlbnNlVHlwZSB0eXBlLCBBdG9tU3RyaW5nCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBtX3Nlc3Npb24tPnJlcXVlc3RMaWNlbnNlKHR5cGUsIGluaXREYXRhVHlwZSwgaW5pdERhdGEu
YnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRp
b24pXSAoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5n
JiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNz
aW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICBtX3Nlc3Npb24tPnJl
cXVlc3RMaWNlbnNlKHR5cGUsIGluaXREYXRhVHlwZSwgaW5pdERhdGEuYnVmZmVyKCkucmVsZWFz
ZU5vbk51bGwoKSwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoUmVmPGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9u
SWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNj
ZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKICAgICAgICAgY29tcGxldGlvbihJUEM6OlNo
YXJlZEJ1ZmZlckNvcHkoV1RGTW92ZShtZXNzYWdlKSksIHNlc3Npb25JZCwgbmVlZHNJbmRpdmlk
dWFsaXphdGlvbiwgc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2VlZGVkKTsK
ICAgICB9KTsKIH0KQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vz
c2lvblByb3h5OjpjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlUwog
CiB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpyZW1vdmVTZXNzaW9uRGF0YShj
b25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUgdHlwZSwgUmVtb3ZlU2Vzc2lvbkRh
dGFDYWxsYmFjayYmIGNvbXBsZXRpb24pCiB7Ci0gICAgbV9zZXNzaW9uLT5yZW1vdmVTZXNzaW9u
RGF0YShzZXNzaW9uSWQsIHR5cGUsIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0g
KENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHVzZXMsIHN0ZDo6
b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmIGV4cGlyZWRTZXNzaW9uc0Rh
dGEsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7
CisgICAgbV9zZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShzZXNzaW9uSWQsIHR5cGUsIFtjb21w
bGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3Rh
dHVzVmVjdG9yJiYga2V5U3RhdHVzZXMsIHN0ZDo6b3B0aW9uYWw8UmVmPGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+PiYmIGV4cGlyZWRTZXNzaW9uc0RhdGEsIENETUluc3RhbmNlU2Vzc2lv
bjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgIHN0ZDo6b3B0aW9u
YWw8SVBDOjpTaGFyZWRCdWZmZXJDb3B5PiBleHBpcmVkU2Vzc2lvbkRhdGFSZWZlcmVuY2U7CiAg
ICAgICAgIGlmIChleHBpcmVkU2Vzc2lvbnNEYXRhKQogICAgICAgICAgICAgZXhwaXJlZFNlc3Np
b25EYXRhUmVmZXJlbmNlID0gSVBDOjpTaGFyZWRCdWZmZXJDb3B5KFdURk1vdmUoKmV4cGlyZWRT
ZXNzaW9uc0RhdGEpKTsKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNl
U2Vzc2lvblByb3h5Ojp1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0
dQogICAgIGdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OlVwZGF0ZUtleVN0YXR1c2VzKFdURk1vdmUo
a2V5U3RhdHVzZXMpKSwgbV9pZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb25Qcm94eTo6c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGUgdHlwZSwgUmVmPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHk6OnNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlIHR5cGUsIFJlZjxjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCiB7CiAgICAgaWYgKCFtX2NkbSkKICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaAppbmRleCBmZTczMDk3MTMxZTBi
YjIwYTUwMDFlMTUwMTYwMmQ2NTE4NmIzMDkwLi5iZjI3M2VhZWRlNjE0YzI3YmEyMDNjYjYyMjlh
Y2ZmNjMyNDU2YmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaApAQCAtNzcsNyArNzcs
NyBAQCBwcml2YXRlOgogCiAgICAgLy8gQ0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50CiAgICAgdm9p
ZCB1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0b3ImJikgZmluYWw7Ci0gICAgdm9pZCBz
ZW5kTWVzc2FnZShXZWJDb3JlOjpDRE1NZXNzYWdlVHlwZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkgZmluYWw7CisgICAgdm9pZCBzZW5kTWVzc2FnZShX
ZWJDb3JlOjpDRE1NZXNzYWdlVHlwZSwgUmVmPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgbWVzc2FnZSkgZmluYWw7CiAgICAgdm9pZCBzZXNzaW9uSWRDaGFuZ2VkKGNv
bnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCgpIGZp
bmFsIHsgcmV0dXJuIG1fZGlzcGxheUlEOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQ0RNUHJveHkuY3BwCmluZGV4IGY3Y2I2YTYzZWI5MzNhYmQ0ZDQ1
M2EyMmFiMjk0ZjEzMDMyMzJiMDYuLmEwNDQ3Mjg1OGNkMTIzOWVjOGJhYWNkYzJiYTQ4NWZhMThj
ZGM0ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVD
RE1Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNE
TVByb3h5LmNwcApAQCAtNjgsNyArNjgsNyBAQCBib29sIFJlbW90ZUNETVByb3h5OjpzdXBwb3J0
c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaAogICAg
IHJldHVybiBtX3ByaXZhdGUtPnN1cHBvcnRzSW5pdERhdGEodHlwZSwgZGF0YSk7CiB9CiAKLVJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBSZW1vdGVDRE1Qcm94eTo6c2FuaXRpemVSZXNw
b25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkKK1JlZlB0cjxjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBSZW1vdGVDRE1Qcm94eTo6c2FuaXRpemVSZXNwb25z
ZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkKIHsKICAgICByZXR1cm4g
bV9wcml2YXRlLT5zYW5pdGl6ZVJlc3BvbnNlKHJlc3BvbnNlKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmgKaW5kZXggM2I2NmM3NzU3ODcw
NjllOTc2ZWUwNjRmOTZmZjA3YzBmNzEyYTkwYi4uZWNkNjg5YTY3MzE3NzA5ZGJkZmQzMDE4NGU0
MDRhNmEzNzljOWM1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUNETVByb3h5LmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIFJlbW90ZUNETUZh
Y3RvcnlQcm94eSogZmFjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fZmFjdG9yeS5nZXQoKTsgfQog
CiAgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpOworICAgIFJlZlB0cjxjb25zdCBXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKTsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpOwogCiBwcml2YXRl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29w
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcApp
bmRleCA3YWFkZjkyZTM2MWRlZmFjNTA4ZWJkNDhkN2QwNzU4OGI0ZTQ3ZDQ2Li42MDYyMzRkZTA0
ZjFhNjE2MjNmMDI0NjIzYTFjMmFjMTlhMDc0ODczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcApAQCAtNDEsNyArNDEsNyBAQCB2b2lkIFNo
YXJlZEJ1ZmZlckNvcHk6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogCiBzdGQ6Om9w
dGlvbmFsPFNoYXJlZEJ1ZmZlckNvcHk+IFNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQogewotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQ
dHI8Y29uc3QgU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShi
dWZmZXIpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7IElQQzo6
U2hhcmVkQnVmZmVyQ29weShXVEZNb3ZlKGJ1ZmZlcikpIH07CkBAIC01MSw3ICs1MSwxNCBAQCBj
b25zdCB1aW50OF90KiBTaGFyZWRCdWZmZXJDb3B5OjpkYXRhKCkgY29uc3QKIHsKICAgICBpZiAo
IW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gZG93bmNhc3Q8
U2hhcmVkQnVmZmVyPihtX2J1ZmZlci5nZXQoKSktPmRhdGEoKTsKKyAgICByZXR1cm4gZG93bmNh
c3Q8Y29uc3QgU2hhcmVkQnVmZmVyPihtX2J1ZmZlci5nZXQoKSktPmRhdGEoKTsKK30KKworUmVm
PGNvbnN0IFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyQ29weTo6c2FmZUJ1ZmZlcigpIGNvbnN0
Cit7CisgICAgaWYgKG1fYnVmZmVyKQorICAgICAgICByZXR1cm4gYnVmZmVyKCkucmVsZWFzZU5v
bk51bGwoKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFy
ZWRCdWZmZXJDb3B5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJD
b3B5LmgKaW5kZXggMzcwYjgzMjhkNzZjOWMzZjc3MDA0NzM1YWQzNTlhZTZkM2VkNjA5Mi4uYzg3
ZDQwYmM0MzlhYjkzNzA4MzFiYjc1ZmM5NmZkNTc4Mjk3MGM3YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckNvcHkuaApAQCAtNDAsMTYgKzQwLDE4IEBAIGNs
YXNzIFNoYXJlZEJ1ZmZlckNvcHkgewogcHVibGljOgogICAgIFNoYXJlZEJ1ZmZlckNvcHkoKSA9
IGRlZmF1bHQ7CiAKLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICBleHBsaWNpdCBTaGFyZWRC
dWZmZXJDb3B5KFJlZlB0cjxjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKKyAgICAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQorICAgIGV4
cGxpY2l0IFNoYXJlZEJ1ZmZlckNvcHkoUmVmPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkg
eyB9CiAgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQ29weShSZWY8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZm
ZXIpKSB7IH0KLSAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckNvcHkoUmVm
PGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIDogbV9idWZm
ZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KICAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJDb3B5KFJl
ZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgICAgICA6IG1fYnVmZmVyKFdU
Rk1vdmUoYnVmZmVyKSkgeyB9CiAgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQ29weShjb25zdCBX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZm
ZXIoY29uc3RfY2FzdDxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKj4oJmJ1ZmZlcikp
IHsgfQorICAgICAgICA6IG1fYnVmZmVyKCZidWZmZXIpIHsgfQogCiAgICAgc2l6ZV90IHNpemUo
KSBjb25zdCB7IHJldHVybiBtX2J1ZmZlciA/IG1fYnVmZmVyLT5zaXplKCkgOiAwOyB9CiAgICAg
Ym9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+aXNFbXB0
eSgpIDogdHJ1ZTsgfQpAQCAtNTcsMTUgKzU5LDE1IEBAIHB1YmxpYzoKICAgICAvLyBUaGUgZm9s
bG93aW5nIG1ldGhvZHMgbXVzdCBvbmx5IGJlIHVzZWQgb24gdGhlIHJlY2VpdmVyJ3MgSVBDIHNp
ZGUuCiAgICAgLy8gSXQgcmVsaWVzIG9uIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCB0aGF0IG1h
a2VzIG1fYnVmZmVyIGJlY29tZXMgYSBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlcgogICAgIC8vIG9u
Y2UgaXQncyBkZXNlcmlhbGlzZWQgb3ZlciBJUEMuCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPihtX2J1ZmZlci5nZXQoKSk7IH0KLSAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiBzYWZlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXIgPyBidWZmZXIoKS5yZWxlYXNl
Tm9uTnVsbCgpIDogV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsgfQorICAgIFJlZlB0
cjxjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIGRv
d25jYXN0PGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4obV9idWZmZXIuZ2V0KCkpOyB9Cisg
ICAgUmVmPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gc2FmZUJ1ZmZlcigpIGNvbnN0Owog
ICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdDsKIAogICAgIHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIHN0ZDo6b3B0aW9uYWw8
U2hhcmVkQnVmZmVyQ29weT4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQ
dHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRy
PGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmNwcAppbmRleCA5OTg3YjFhODQ3NjhmMjczODYzZGMwYjFhNTUzOTE1M2M0OTgx
NzgzLi4xNjNiNmJjNTRjMTliYjA0NzliNzZiMTkwMmE2NjMxZDYyZGQ5OThjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTMxMTEsNiAr
MzExMSw2MiBAQCBzdGQ6Om9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVy
PFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjbwogICAgIHJldHVybiBidWZmZXIucmVs
ZWFzZU5vbk51bGwoKTsKIH0KIAordm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxjb25zdCBXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZl
cikKK3sKKyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKK30K
Kworc3RkOjpvcHRpb25hbDxSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IEFy
Z3VtZW50Q29kZXI8UmVmUHRyPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyOworICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gV1RGTW92ZShidWZmZXIp
OworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZjxjb25zdCBX
ZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29kZVNo
YXJlZEJ1ZmZlcihlbmNvZGVyLCBidWZmZXIucHRyKCkpOworfQorCitzdGQ6Om9wdGlvbmFsPFJl
Zjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWY8Y29uc3Qg
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKK3sKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVT
aGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSB8fCAhYnVmZmVyKQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworfQor
Cit2b2lkIEFyZ3VtZW50Q29kZXI8UmVmUHRyPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2Rlciwg
YnVmZmVyLmdldCgpKTsKK30KKworc3RkOjpvcHRpb25hbDxSZWZQdHI8Y29uc3QgU2hhcmVkQnVm
ZmVyPj4gQXJndW1lbnRDb2RlcjxSZWZQdHI8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKKyAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQorICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIFdURk1vdmUoYnVmZmVyKTsK
K30KKwordm9pZCBBcmd1bWVudENvZGVyPFJlZjxjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZjxjb25zdCBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+JiBidWZmZXIpCit7CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1
ZmZlci5wdHIoKSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8UmVmPGNvbnN0IFNoYXJlZEJ1ZmZlcj4+
IEFyZ3VtZW50Q29kZXI8UmVmPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7Cisg
ICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgYnVmZmVyKSB8fCAhYnVmZmVyKQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNl
Tm9uTnVsbCgpOworfQorCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkgJiYgUExBVEZP
Uk0oQ09DT0EpCiBzdGF0aWMgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSB0cnlDb252ZXJ0VG9T
aGFyZWFibGVSZXNvdXJjZUhhbmRsZShjb25zdCBTY3JpcHRCdWZmZXImIHNjcmlwdCkKIHsKQEAg
LTMxODAsNyArMzIzNiw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5j
ZVNlc3Npb246Ok1lc3NhZ2U+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlCiB7CiAgICAgZW5jb2Rl
ciA8PCBtZXNzYWdlLmZpcnN0OwogCi0gICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IG1lc3NhZ2VEYXRhID0gbWVzc2FnZS5zZWNvbmQuY29weVJlZigpOworICAgIFJlZlB0cjxjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtZXNzYWdlRGF0YSA9IG1lc3NhZ2Uuc2Vjb25kLmNv
cHlSZWYoKTsKICAgICBlbmNvZGVyIDw8IG1lc3NhZ2VEYXRhOwogfQogCkBAIC0zMTkwLDcgKzMy
NDYsNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2Fn
ZT4gIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
dHlwZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIpIHx8ICFi
dWZmZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggNmUyN2E3ODcyMDIxNzFiYmNlZGJi
NjQ4MzkyMGE3ZTc5YmQ1ODBiZi4uMDQ0MzU5ZTk4NGUwOTA0MzE1NjU1M2U2YWZmYjBmYjNhNWMw
OTEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgK
QEAgLTc3Miw2ICs3NzIsMjYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gewogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAordGVtcGxhdGU8
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJl
ZlB0cjxjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYpOworICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4gZGVjb2RlKERlY29kZXImKTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8UmVmPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiB7CisgICAg
c3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWY8Y29uc3QgV2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8Y29u
c3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Cit9
OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZlB0cjxjb25zdCBXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25z
dCBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYpOworICAgIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFJlZlB0cjxjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVj
b2RlciYpOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8Y29uc3Qg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVy
JiwgY29uc3QgUmVmPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDxSZWY8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gZGVjb2RlKERl
Y29kZXImKTsKK307CisKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
U2NyaXB0QnVmZmVyPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBX
ZWJDb3JlOjpTY3JpcHRCdWZmZXImKTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpTY3JpcHRCdWZmZXI+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAKaW5kZXggYjYwN2FjZTgzOGUwNGJjZTFhNmFlZTRk
YTU2NTU5ZTA5Njk4Mzk4ZS4uMmRiMWY3MjMwYmRmMWJkZTYzMTMxNzExNGJjYzMyZjVkNTE1MTdi
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcApA
QCAtODUsNyArODUsNyBAQCBXZWJIaXRUZXN0UmVzdWx0RGF0YTo6V2ViSGl0VGVzdFJlc3VsdERh
dGEoY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYgaGl0VGVzdAogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAoSW1hZ2UqIGltYWdlID0gaGl0VGVzdFJlc3VsdC5pbWFnZSgpKSB7Ci0gICAg
ICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgp
OworICAgICAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
aW1hZ2UtPmRhdGEoKTsKICAgICAgICAgaWYgKGJ1ZmZlcikgewogICAgICAgICAgICAgaW1hZ2VT
aGFyZWRNZW1vcnkgPSBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqYnVmZmVyKTsK
ICAgICAgICAgICAgIGltYWdlU2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwCmluZGV4IGMyOGZlNjVmMGNm
MTY0Mzk5ODE4YWNhMzJmOTgxY2M3NzhmMWU5MTkuLmVhM2NlODc2ZmZjZjMwYTFmMDQwMTU1Y2Jm
NmI4Mzk3ZDQ1NzNmYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1JlbW90ZUNETS5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIFJlbW90ZUNETTo6bG9h
ZEFuZEluaXRpYWxpemUoKQogICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5j
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlQ0RNUHJveHk6OkxvYWRBbmRJbml0aWFs
aXplKCksIG1faWRlbnRpZmllcik7CiB9CiAKLVJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBSZW1vdGVDRE06OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYgcmVzcG9uc2UpIGNvbnN0CitSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
UmVtb3RlQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IHJlc3BvbnNlKSBjb25zdAogewogICAgIC8vIFRoaXMgY2hlY2sgd2lsbCBiZSBkb25lLCBsYXRl
ciwgaW5zaWRlIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp1cGRhdGVMaWNlbnNlKCku
CiAgICAgcmV0dXJuIHJlc3BvbnNlLmNvcHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUNETS5oCmluZGV4IDhjNDU0ZWI4M2U1OTk0YThlNGQ1OTJkNTFk
ZjkxZmY5YjUyM2NiZWYuLjllZmNkNGM4ODdjZDFiMDJiODM4ZTY0NjUwOGE1NTIyMDFjMDRkOTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaApA
QCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgZGlzdGluY3RpdmVJZGVudGlmaWVy
c0FyZVVuaXF1ZVBlck9yaWdpbkFuZENsZWFyYWJsZShjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0
ZW1Db25maWd1cmF0aW9uJikgY29uc3QgZmluYWw7CiAgICAgUmVmUHRyPFdlYkNvcmU6OkNETUlu
c3RhbmNlPiBjcmVhdGVJbnN0YW5jZSgpIGZpbmFsOwogICAgIHZvaWQgbG9hZEFuZEluaXRpYWxp
emUoKSBmaW5hbDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
c2FuaXRpemVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikg
Y29uc3QgZmluYWw7CisgICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpIGNvbnN0IGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNl
c3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKIAogICAgIFZlY3RvcjxBdG9tU3Ry
aW5nPiBzdXBwb3J0ZWRJbml0RGF0YVR5cGVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25m
aWd1cmF0aW9uLnN1cHBvcnRlZEluaXREYXRhVHlwZXM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKaW5kZXgg
NzVkNWU1YTc5NTE0ZGJjM2FhYWMwMGI5ODg0YTU3ZGFjMTk4ZjlmNi4uYmJkZmEzMTFlYzU2MGFl
ZmQ4ZmExODNiMWQwYjM1YjdhYmFlZDdmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKQEAgLTc4LDcgKzc4
LDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9u
KGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUMKICAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVt
b3RlQ0RNSW5zdGFuY2VQcm94eTo6SW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbmZpZ3Vy
YXRpb24sIGRpc3RpbmN0aXZlSWRlbnRpZmllcnMsIHBlcnNpc3RlbnRTdGF0ZSksIFdURk1vdmUo
Y2FsbGJhY2spLCBtX2lkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZUNETUluc3RhbmNlOjpz
ZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
JiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIFJlbW90ZUNE
TUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8Y29uc3QgV2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJh
Y2spCiB7CiAgICAgaWYgKCFtX2ZhY3RvcnkpIHsKICAgICAgICAgY2FsbGJhY2soRmFpbGVkKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2UuaAppbmRleCAyYzc4NTFlNDQwYjA4YTUyYTJhZTcwZGE3ZTQxODg4MmUzYzYxNDM5
Li4xMGE3YmM4Zjg2NWY1ZGFiZjAzNTU0OWVjOWZmOTU0NzEyNTFjMDYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5o
CkBAIC01NCw3ICs1NCw3IEBAIHByaXZhdGU6CiAKICAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1w
bGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBl
OjpSZW1vdGU7IH0KICAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBX
ZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50
aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwot
ICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZl
ckNlcnRpZmljYXRlKFJlZjxjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
LCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5
KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLmtleVN5c3RlbTsgfQogICAgIFJlZlB0
cjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcAppbmRleCA4YmVjZDU5YjVlYjM3ZTBkM2E1MTQ1Mzhm
MzczODFkN2Y3N2Q4Y2NlLi44ZGY5MmVkMDc1MTQxYjA0OGEzNDdkYTU4NWNhMWRkZGQwYWNlNDhm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TUluc3RhbmNlU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwCkBAIC00OSw3ICs0OSw3IEBAIFJlbW90
ZUNETUluc3RhbmNlU2Vzc2lvbjo6UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uKFdlYWtQdHI8UmVt
b3RlQ0RNRmFjdG9yeT4mJiBmCiB7CiB9CiAKLXZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0
RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNl
Q2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1
ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5
cGUsIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNl
Q2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAoIW1fZmFjdG9yeSkgewogICAgICAgICBj
YWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBlbXB0eVN0cmluZygpLCBmYWxzZSwgRmFp
bGVkKTsKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJl
cXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIHR5cGUsIGNvbnN0IEF0b21TdHJpbmcKICAgICB9LCBt
X2lkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRl
TGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgTGljZW5zZVR5cGUgdHlwZSwgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYm
IGNhbGxiYWNrKQordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2Uo
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlIHR5cGUsIFJlZjxjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBj
YWxsYmFjaykKIHsKICAgICBpZiAoIW1fZmFjdG9yeSkgewogICAgICAgICBjYWxsYmFjayhmYWxz
ZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgRmFpbGVkKTsKQEAg
LTEwOSw3ICsxMDksNyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVtb3ZlU2Vz
c2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2VucwogICAgIH0KIAogICAgIG1f
ZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6UmVtb3ZlU2Vz
c2lvbkRhdGEoc2Vzc2lvbklkLCB0eXBlKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayld
IChLZXlTdGF0dXNWZWN0b3ImJiBjaGFuZ2VkS2V5cywgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHk+JiYgbWVzc2FnZSwgYm9vbCBzdWNjZWVkZWQpIG11dGFibGUgewotICAgICAg
ICBzdGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gcmVhbE1lc3NhZ2Ug
PSBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVmPGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+PiByZWFsTWVzc2FnZSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYg
KG1lc3NhZ2UgJiYgbWVzc2FnZS52YWx1ZSgpLmJ1ZmZlcigpKQogICAgICAgICAgICAgcmVhbE1l
c3NhZ2UgPSBtZXNzYWdlLnZhbHVlKCkuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKTsKICAgICAg
ICAgY2FsbGJhY2soV1RGTW92ZShjaGFuZ2VkS2V5cyksIFdURk1vdmUocmVhbE1lc3NhZ2UpLCBz
dWNjZWVkZWQgPyBTdWNjZWVkZWQgOiBGYWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgK
aW5kZXggNGU0Y2QyYzAwNWM2YjAwNjVmOWNkYjE4OGM0YmNlMGI1YmZhNjYwMS4uYzYyNTJmYTc4
NTBkODcwY2FlMWE5MjZmNzM2ODkzM2NkMDljODU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lv
bi5oCkBAIC01OSw4ICs1OSw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNldENsaWVudChXZWFr
UHRyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkNsaWVudD4mJiBjbGllbnQpIGZpbmFsIHsg
bV9jbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7IH0KICAgICB2b2lkIGNsZWFyQ2xpZW50KCkgZmlu
YWwgeyBtX2NsaWVudCA9IG51bGxwdHI7IH0KLSAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vu
c2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7
Ci0gICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNl
VHlwZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExp
Y2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExp
Y2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxjb25zdCBXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2sm
JikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklk
LCBMaWNlbnNlVHlwZSwgUmVmPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxv
YWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgU3Ry
aW5nJiBvcmlnaW4sIExvYWRTZXNzaW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9z
ZVNlc3Npb24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYp
IGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9u
SWQsIExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURl
Y29kZXJBVkYuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGLmgKaW5kZXggOWMwODgxNjFlZGRiZjIzNDBmODdhMGJiOTczNDEzN2VhN2Uz
ZDcxMy4uYTU0Y2U5NmRhYTE3NWZlNGEyMjZlNzlkMGMxZThjZDE1ZjFlMWExYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJB
VkYuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdl
RGVjb2RlckFWRi5oCkBAIC00NSw3ICs0NSw3IEBAIGNsYXNzIFJlbW90ZUltYWdlRGVjb2RlckFW
RiBmaW5hbAogICAgIDogcHVibGljIFdlYkNvcmU6OkltYWdlRGVjb2RlcgogICAgICwgcHVibGlj
IENhbk1ha2VXZWFrUHRyPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBjcmVhdGUoUmVtb3RlSW1hZ2VEZWNvZGVy
QVZGTWFuYWdlciYgbWFuYWdlciwgY29uc3QgV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmll
ciYgaWRlbnRpZmllciwgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpCisgICAgc3RhdGljIFJlZjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IGNy
ZWF0ZShSZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyJiBtYW5hZ2VyLCBjb25zdCBXZWJDb3Jl
OjpJbWFnZURlY29kZXJJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGKG1hbmFnZXIsIGlkZW50aWZpZXIsIG1pbWVUeXBlKSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJB
VkZNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3Rl
SW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHAKaW5kZXggYmVkZGVjYmIwNzRkMzQxMmE5YmU5M2Ni
Y2Q1OWFlMTkyNDdmMmI0YS4uMTg0ZmVkN2FhZDFlZDk4YTM3M2M3NGM4YmM1MWFiYzUzYjQ4NDYy
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJ
bWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuY3BwCkBAIC0zOSw3ICszOSw3
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVm
UHRyPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlcjo6
Y3JlYXRlSW1hZ2VEZWNvZGVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxSZW1vdGVJbWFn
ZURlY29kZXJBVkY+IFJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXI6OmNyZWF0ZUltYWdlRGVj
b2Rlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiB7CiAgICAgc3RkOjpvcHRpb25hbDxJbWFn
ZURlY29kZXJJZGVudGlmaWVyPiBpbWFnZURlY29kZXJJZGVudGlmaWVyOwogICAgIGlmICghZW5z
dXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6
OlJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpDcmVhdGVEZWNvZGVyKElQQzo6U2hhcmVkQnVm
ZmVyQ29weShkYXRhKSwgbWltZVR5cGUpLCBNZXNzYWdlczo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZG
UHJveHk6OkNyZWF0ZURlY29kZXI6OlJlcGx5KGltYWdlRGVjb2RlcklkZW50aWZpZXIpLCAwKSkK
QEAgLTQ4LDcgKzQ4LDcgQEAgUmVmUHRyPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGTWFuYWdlcjo6Y3JlYXRlSW1hZ2VEZWNvZGVyKEYKICAgICBpZiAoIWltYWdl
RGVjb2RlcklkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byBy
ZW1vdGVJbWFnZURlY29kZXIgPSBSZW1vdGVJbWFnZURlY29kZXJBVkY6OmNyZWF0ZSgqdGhpcywg
KmltYWdlRGVjb2RlcklkZW50aWZpZXIsIGRhdGEsIG1pbWVUeXBlKTsKKyAgICBhdXRvIHJlbW90
ZUltYWdlRGVjb2RlciA9IFJlbW90ZUltYWdlRGVjb2RlckFWRjo6Y3JlYXRlKCp0aGlzLCAqaW1h
Z2VEZWNvZGVySWRlbnRpZmllciwgbWltZVR5cGUpOwogICAgIG1fcmVtb3RlSW1hZ2VEZWNvZGVy
cy5hZGQoKmltYWdlRGVjb2RlcklkZW50aWZpZXIsIHJlbW90ZUltYWdlRGVjb2Rlcik7CiAKICAg
ICByZXR1cm4gcmVtb3RlSW1hZ2VEZWNvZGVyOwpAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlcjo6c2V0VXNlR1BVUHJvY2Vzcyhib29sIHVzZUdQVVBy
b2Nlc3MpCiAgICAgSW1hZ2VEZWNvZGVyOjppbnN0YWxsRmFjdG9yeSh7CiAgICAgICAgIFJlbW90
ZUltYWdlRGVjb2RlckFWRjo6c3VwcG9ydHNNZWRpYVR5cGUsCiAgICAgICAgIFJlbW90ZUltYWdl
RGVjb2RlckFWRjo6Y2FuRGVjb2RlVHlwZSwKLSAgICAgICAgW3RoaXNdKEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbikgeworICAgICAgICBbdGhpc10oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0
YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSB7CiAgICAg
ICAgICAgICByZXR1cm4gY3JlYXRlSW1hZ2VEZWNvZGVyKGRhdGEsIG1pbWVUeXBlLCBhbHBoYU9w
dGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgICAgICB9CiAgICAgfSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdl
RGVjb2RlckFWRk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5oCmluZGV4IDM2MThhZmQxMjA5OGI1NTc2YjRk
ZDRmZmJmM2MwNmZiYTg0MmE3NjQuLjk5MmVkMjFhNDcyYmRiNTdhZDFkNWUxZTI1YmQ2ZDE4ODVh
MjkyOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVt
b3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5oCkBAIC01OSw3ICs1OSw3
IEBAIHB1YmxpYzoKICAgICBHUFVQcm9jZXNzQ29ubmVjdGlvbiYgZW5zdXJlR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24oKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZG
PiBjcmVhdGVJbWFnZURlY29kZXIoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0
YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgV2ViQ29yZTo6QWxwaGFPcHRpb24sIFdlYkNvcmU6
OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBSZWZQdHI8UmVtb3RlSW1hZ2VEZWNv
ZGVyQVZGPiBjcmVhdGVJbWFnZURlY29kZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgV2ViQ29yZTo6QWxwaGFPcHRp
b24sIFdlYkNvcmU6OkdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIAogICAgIC8vIEdQVVBy
b2Nlc3NDb25uZWN0aW9uOjpDbGllbnQuCiAgICAgdm9pZCBncHVQcm9jZXNzQ29ubmVjdGlvbkRp
ZENsb3NlKEdQVVByb2Nlc3NDb25uZWN0aW9uJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNGEw
MGYyMjhjZDUwZjg1YzAzZjk5N2YwNDdjNjljZTUyMGU5ZjE3Ny4uMjJhNWVkM2MyODkxMDJjM2E5
MTQyNTNlOGZmYzE1ZDk1Yzk0OTQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcApAQCAtMjE3LDE1ICsyMTcsMTUg
QEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBQcmkKICAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVS
ZXNwb25zZShyZXNwb25zZSwgV1RGTW92ZShwb2xpY3lEZWNpc2lvbkNvbXBsZXRpb25IYW5kbGVy
KSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQ
Qzo6U2hhcmVkQnVmZmVyQ29weSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKK3Zv
aWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyQ29w
eSYmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgTE9HKE5ldHdvcmss
ICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhIG9mIHNpemUg
JWx1IGZvciAnJXMnIiwgZGF0YS5zaXplKCksIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCku
bGF0aW4xKCkuZGF0YSgpKTsKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2lu
Z05ldHdvcmtSZXNwb25zZSwgIk5ldHdvcmsgcHJvY2VzcyBzaG91bGQgbm90IHNlbmQgZGF0YSB1
bnRpbCB3ZSd2ZSB2YWxpZGF0ZWQgdGhlIHJlc3BvbnNlIik7CiAKICAgICBpZiAoVU5MSUtFTFko
bV9pbnRlcmNlcHRDb250cm9sbGVyLmlzSW50ZXJjZXB0aW5nKG1fY29yZUxvYWRlci0+aWRlbnRp
ZmllcigpKSkpIHsKLSAgICAgICAgbV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxv
YWRlci0+aWRlbnRpZmllcigpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0s
IGJ1ZmZlciA9IGRhdGEuYnVmZmVyKCksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgewor
ICAgICAgICBtX2ludGVyY2VwdENvbnRyb2xsZXIuZGVmZXIobV9jb3JlTG9hZGVyLT5pZGVudGlm
aWVyKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgZGF0YSA9IFdURk1v
dmUoZGF0YSksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYg
KG1fY29yZUxvYWRlcikKLSAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YShJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHkoV1RGTW92ZShidWZmZXIpKSwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgICAg
ICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKFdURk1vdmUoZGF0YSksIGVuY29kZWREYXRhTGVuZ3Ro
KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAppbmRleCBhYzBh
ZGM5YjhkN2E0ZjIxZThiY2FiNWY4ODkyNDQ1OGU1NGUyYjFjLi5iZmRkMjk1NWU0YTNkNThmY2Rh
MDIyODg5YjA1ZTJkY2ViYTdhNGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKQEAgLTg0LDcgKzg0LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
SVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYpOwogICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgYnl0ZXNTZW50LCB1aW50
NjRfdCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBQcml2YXRlUmVsYXllZCwgYm9vbCBuZWVk
c0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSk7Ci0gICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIGRhdGEsIGludDY0X3QgZW5jb2RlZERh
dGFMZW5ndGgpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJDb3B5
JiYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgdm9pZCBkaWRGaW5pc2hS
ZXNvdXJjZUxvYWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdm9p
ZCBkaWRGYWlsUmVzb3VyY2VMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAg
ICB2b2lkIGRpZEZhaWxTZXJ2aWNlV29ya2VyTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCAyOGVjOGUyMzhjYTVi
ZmRmMGRjNTI2ZjU2ZDZlZmIxODkwMGFjYmQwLi4zYjhhYzM2ZDBhZTlkMTc0Y2ZhNjY2YjRiZmM0
MTVhODMwZGE3MGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTExODcs
OCArMTE4NywxMSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmco
RG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICAgICAgICAgIGlmICghd2ViUGFnZSkKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7Ci0g
ICAgICAgICAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShtYWluUmVzb3VyY2VE
YXRhID8gbWFpblJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0
ciwgbWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSA6IDApOworICAg
ICAgICAgICAgUmVmUHRyPGNvbnN0IFNoYXJlZEJ1ZmZlcj4gY29udGlndW91c0RhdGE7CisgICAg
ICAgICAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNl
RGF0YSA9IGxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOworICAgICAgICAgICAgaWYgKG1haW5S
ZXNvdXJjZURhdGEpCisgICAgICAgICAgICAgICAgY29udGlndW91c0RhdGEgPSBtYWluUmVzb3Vy
Y2VEYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNl
IGRhdGFSZWZlcmVuY2UoY29udGlndW91c0RhdGEgPyBjb250aWd1b3VzRGF0YS0+ZGF0YSgpIDog
bnVsbHB0ciwgY29udGlndW91c0RhdGEgPyBjb250aWd1b3VzRGF0YS0+c2l6ZSgpIDogMCk7CiAg
ICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZpbmlz
aExvYWRpbmdEYXRhRm9yQ3VzdG9tQ29udGVudFByb3ZpZGVyKGxvYWRlci0+cmVzcG9uc2UoKS5z
dWdnZXN0ZWRGaWxlbmFtZSgpLCBkYXRhUmVmZXJlbmNlKSk7CiAgICAgICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDlkZjQ1NGEw
NjhiYzA1YWJhODFmNzYyMTYxYTRmZDI2MGQ1ODczZjcuLjY0NjZkMGZmYmIyZTJhNzI0MTZmNDNh
MDVhZDUzMDZmYTdlNWRmNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5jcHAKQEAgLTM0MSw3ICszNDEsNyBAQCBTdHJpbmcgV2ViRnJhbWU6OnNvdXJj
ZSgpIGNvbnN0CiAgICAgRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gbV9jb3JlRnJh
bWUtPmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCk7CiAgICAgaWYgKCFkb2N1bWVudExv
YWRlcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJj
ZURhdGEoKTsKKyAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWFpblJl
c291cmNlRGF0YSA9IGRvY3VtZW50TG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYg
KCFtYWluUmVzb3VyY2VEYXRhKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgcmV0dXJu
IGRlY29kZXItPmVuY29kaW5nKCkuZGVjb2RlKG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1
b3VzKCktPmRhdGEoKSwgbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNjNhZjkxZmRiYTVmMjAxMDA2
YzczYzU5ZjI5NmJhMjJmM2QzN2M1ZC4uNGNkMjU2OGEyMmRhOGQ3ZTExZjBhMDRmMTJiNWUzOTdk
YWI0ZTVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKQEAgLTM4NzksNyArMzg3OSw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0U291cmNlRm9yRnJhbWUo
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoCiAKIHZvaWQg
V2ViUGFnZTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHk+Jik+JiYgY2FsbGJhY2spCiB7Ci0gICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyOwogICAgIGlmIChXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS53ZWJGcmFtZShmcmFtZUlEKSkgewogICAgICAgICBpZiAoUGx1Z2luVmlldyogcGx1Z2lu
VmlldyA9IHBsdWdpblZpZXdGb3JGcmFtZShmcmFtZS0+Y29yZUZyYW1lKCkpKQogICAgICAgICAg
ICAgYnVmZmVyID0gcGx1Z2luVmlldy0+bGl2ZVJlc291cmNlRGF0YSgpOwpAQCAtMzg5Miw3ICsz
ODkyLDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmQKICAgICBjYWxsYmFjayhJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHkoV1RGTW92ZShidWZmZXIpKSk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gcmVzb3VyY2VEYXRhRm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBjb25z
dCBVUkwmIHJlc291cmNlVVJMKQorc3RhdGljIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiByZXNvdXJjZURhdGFGb3JGcmFtZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgcmVz
b3VyY2VVUkwpCiB7CiAgICAgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciA9IGZyYW1lLT5sb2FkZXIo
KS5kb2N1bWVudExvYWRlcigpOwogICAgIGlmICghbG9hZGVyKQpAQCAtMzkwNyw3ICszOTA3LDcg
QEAgc3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGFGb3JG
cmFtZShGcmFtZSogZnJhbWUsIGNvbnN0IFUKIAogdm9pZCBXZWJQYWdlOjpnZXRSZXNvdXJjZURh
dGFGcm9tRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgcmVzb3Vy
Y2VVUkxTdHJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJ
UEM6OlNoYXJlZEJ1ZmZlckNvcHk+Jik+JiYgY2FsbGJhY2spCiB7Ci0gICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChhdXRvKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpKSB7CiAgICAgICAgIFVSTCByZXNvdXJjZVVSTChV
UkwoKSwgcmVzb3VyY2VVUkxTdHJpbmcpOwogICAgICAgICBidWZmZXIgPSByZXNvdXJjZURhdGFG
b3JGcmFtZShmcmFtZS0+Y29yZUZyYW1lKCksIHJlc291cmNlVVJMKTsKQEAgLTcwNTcsNyArNzA1
Nyw3IEBAIHZvaWQgV2ViUGFnZTo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lz
aW9uLCBDYWxsYmFja0lEIGxvYWRJZGVudGlmaWVyCiAgICAgaWYgKCFkb2N1bWVudExvYWRlcikK
ICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAKLSAgICBkb2N1bWVudExv
YWRlci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihkZWNpc2lvbiwgbG9hZElkZW50aWZpZXIu
dG9JbnRlZ2VyKCksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSAoV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogaWNvbkRhdGEpIG11dGFibGUg
eworICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGRlY2lzaW9u
LCBsb2FkSWRlbnRpZmllci50b0ludGVnZXIoKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildIChhdXRvKiBpY29uRGF0YSkgbXV0YWJsZSB7CiAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKElQQzo6U2hhcmVkQnVmZmVyQ29weShSZWZQdHIgeyBpY29uRGF0
YSB9KSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCA4ZGY5OTNm
MmQ3NzViNmM5M2QyZThmMDk5MGY3MmY4NWY2MThlNThlLi5lYTI0YTgzMmQ1ZjFlYjFjMjU4Y2Fk
MjIxODkzMTI2YzUyMTM3ZjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTI1MCw3
ICsyNTAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VuZEgyUGluZyhjb25zdCBVUkwmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFNlY29uZHMsIFdlYkNvcmU6OlJlc291cmNlRXJy
b3I+JiYpPiYmKSBmaW5hbDsKIAogICAgIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbnMoY29u
c3QgVmVjdG9yPHN0ZDo6cGFpcjxXZWJDb3JlOjpMaW5rSWNvbiYsIHVpbnQ2NF90Pj4mKSBmaW5h
bDsKLSAgICB2b2lkIGZpbmlzaGVkTG9hZGluZ0ljb24oV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciopOworICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nSWNvbihjb25zdCBXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKik7CiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBib29sIG1fbG9hZGluZ0ljb24geyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5t
bQppbmRleCA4N2E1ZDY1N2Y3YjczM2QwN2M1ZGI2MDFmNjk4MWY5MDQ5NzcxMzkzLi40NDgwYTA0
YTY4YTgzODBlOGNlYzJhMDA5MDYyOTY1MjQyMTQwZGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5tbQpAQCAtMjA5Myw3ICsyMDkzLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
Z2V0TG9hZERlY2lzaW9uRm9ySWNvbnMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxXZWJDb3IKICAg
ICAgICAgfQogCiAgICAgICAgIG1fbG9hZGluZ0ljb24gPSB0cnVlOwotICAgICAgICBkb2N1bWVu
dExvYWRlci0+ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbih0cnVlLCBpY29uLT5zZWNvbmQsIFt0
aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoV2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciogYnVmZmVyKSB7CisgICAgICAgIGRvY3VtZW50TG9hZGVyLT5kaWRHZXRMb2Fk
RGVjaXNpb25Gb3JJY29uKHRydWUsIGljb24tPnNlY29uZCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vh
a1B0ciB7ICp0aGlzIH1dIChhdXRvKiBidWZmZXIpIHsKICAgICAgICAgICAgIGlmICghd2Vha1Ro
aXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgZmluaXNoZWRMb2FkaW5n
SWNvbihidWZmZXIpOwpAQCAtMjEzMCw3ICsyMTMwLDcgQEAgc3RhdGljIE5TSW1hZ2UgKndlYkdl
dE5TSW1hZ2UoV2ViQ29yZTo6SW1hZ2UqIGltYWdlLCBOU1NpemUgc2l6ZSkKIH0KICNlbmRpZiAv
LyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Zmlu
aXNoZWRMb2FkaW5nSWNvbihXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBpY29uRGF0
YSkKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZ0ljb24oY29uc3Qg
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogaWNvbkRhdGEpCiB7CiAjaWYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgQVNTRVJUKG1fbG9hZGluZ0ljb24pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCmluZGV4IDVlYjVkNmEx
OWU2ZDkxZmNiM2JmYzgxY2NhOTFlYzdlMGU1NmM0MjguLjIzOGE0NGE1MzczZThjYzgzMjliZTZk
MjA3NzA3YWQ3ZTkzODliMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkRhdGFTb3VyY2UubW0KQEAgLTQ2MCw3ICs0NjAsNyBAQCAtICh2b2lkKWRlYWxsb2MK
IAogLSAoTlNEYXRhICopZGF0YQogewotICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhID0gdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVy
LT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSB0b1ByaXZhdGUoX3ByaXZhdGUpLT5s
b2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIW1haW5SZXNvdXJjZURhdGEpCiAg
ICAgICAgIHJldHVybiBuaWw7CiAgICAgcmV0dXJuIG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250
aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmF1dG9yZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCA0OTg5OTMxOGRjOWFjNTJl
M2M4ODdiNTRlNzg5YWVjNjBiOTczMDUwLi44ZDU5MTM0YzVjMmQzZDc2ZmE1OTZkNTU1YzdiNWI4
MTFmNGIwMjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRN
TFZpZXcubW0KQEAgLTM1NDEsNyArMzU0MSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNNZW51SXRl
bT4gY3JlYXRlU2hhcmVNZW51SXRlbShjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiBoCiAg
ICAgfQogCiAgICAgaWYgKGF1dG8qIGltYWdlID0gaGl0VGVzdFJlc3VsdC5pbWFnZSgpKSB7Ci0g
ICAgICAgIGlmIChSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gaW1hZ2UtPmRhdGEoKSkKKyAgICAgICAgaWYgKFJlZlB0cjxjb25zdCBXZWJDb3JlOjpGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgpKQogICAgICAgICAgICAg
W2l0ZW1zIGFkZE9iamVjdDphZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhEYXRhOltO
U0RhdGEgZGF0YVdpdGhCeXRlczpidWZmZXItPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSBsZW5n
dGg6YnVmZmVyLT5zaXplKCldXSkuZ2V0KCldOwogICAgIH0KIApAQCAtNDMwNyw3ICs0MzA3LDcg
QEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIGlmIChhdXRv
KiBidWZmZXIgPSB0aWZmUmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkpIHsKICAgICAgICAgICAg
IE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gdGlmZlJlc291cmNlLT5yZXNwb25zZSgpLm5zVVJM
UmVzcG9uc2UoKTsKICAgICAgICAgICAgIGRyYWdnaW5nRWxlbWVudFVSTCA9IFtyZXNwb25zZSBV
UkxdOwotICAgICAgICAgICAgd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9j
XSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KV0pOworICAgICAgICAgICAgd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9j
XSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKV0pOwogICAgICAgICAgICAgTlNTdHJpbmcqIGZpbGVuYW1lID0g
W3Jlc3BvbnNlIHN1Z2dlc3RlZEZpbGVuYW1lXTsKICAgICAgICAgICAgIE5TU3RyaW5nKiB0cnVl
RXh0ZW5zaW9uKHRpZmZSZXNvdXJjZS0+aW1hZ2UoKS0+ZmlsZW5hbWVFeHRlbnNpb24oKSk7CiAg
ICAgICAgICAgICBpZiAoIW1hdGNoZXNFeHRlbnNpb25PckVxdWl2YWxlbnQoZmlsZW5hbWUsIHRy
dWVFeHRlbnNpb24pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJSZXNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVz
b3VyY2UubW0KaW5kZXggMTJkNTljMGExNzY4MThlNjYyYzQzYzA3NDRhNTNhMTAxYzg1NjFlZC4u
ZTBkMGY3MzA2MjkzNDg5NWMzZjE4YmU3NWVlYjI1MGIxNWM2YjA1YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCkBAIC0zNjYsOCArMzY2LDgg
QEAgLSAoTlNTdHJpbmcgKilfc3RyaW5nVmFsdWUKICAgICAgICAgZW5jb2RpbmcgPSBfcHJpdmF0
ZS0+Y29yZVJlc291cmNlLT50ZXh0RW5jb2RpbmcoKTsKICAgICBpZiAoIWVuY29kaW5nLmlzVmFs
aWQoKSkKICAgICAgICAgZW5jb2RpbmcgPSBQQUw6OldpbmRvd3NMYXRpbjFFbmNvZGluZygpOwot
ICAgIAotICAgIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGNvcmVEYXRhID0gX3ByaXZhdGUtPmNv
cmVSZXNvdXJjZSA/ICZfcHJpdmF0ZS0+Y29yZVJlc291cmNlLT5kYXRhKCkgOiBudWxscHRyOwor
CisgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogY29yZURhdGEgPSBfcHJpdmF0ZS0+
Y29yZVJlc291cmNlID8gJl9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKSA6IG51bGxwdHI7
CiAgICAgcmV0dXJuIGVuY29kaW5nLmRlY29kZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIq
Pihjb3JlRGF0YSA/IGNvcmVEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkgOiBudWxscHRy
KSwgY29yZURhdGEgPyBjb3JlRGF0YS0+c2l6ZSgpIDogMCk7CiB9CiAK
</data>
<flag name="commit-queue"
          id="479127"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452172</attachid>
            <date>2022-02-16 03:16:10 -0800</date>
            <delta_ts>2022-02-16 11:47:08 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-236695-20220216221607.patch</filename>
            <type>text/plain</type>
            <size>192023</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5Nzg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODE0M2VkMTYyNTY5YTBl
MTk2YzUxYTVjNTFhZTYwZWEzNjhmNjgwMy4uOTM4MDI2ZmM1MzViNjlhNzgzYTBkMGQ5MWU1MTRh
Yjc4MmM1MGZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwMyBAQAorMjAyMi0wMi0xNiAgSmVh
bi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAgIENyYXNoVHJhY2VyOiBj
b20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQgYXQgSmF2YVNjcmlwdENvcmU6IGJtYWxsb2NfYWxs
b2NhdGVfaW1wbF9pbXBsX3Nsb3cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzNjY5NQorICAgICAgICByZGFyOi8vODc1OTY3MjQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEb24ndCBmbGF0dGVuIHRoZSBm
cmFnbWVudGVkIFNoYXJlZEJ1ZmZlciBhZnRlciBlYWNoIG5ldyBzZWdtZW50cywKKyAgICAgICAg
aW5zdGVhZCBvbmx5IGRvIHNvIG9uY2Ugd2UgaGF2ZSByZWNlaXZlZCB0aGUgZnVsbCBjb250ZW50
LgorICAgICAgICBXZSBjaGFuZ2UgdGhlIGNvbnN0bmVzcyBvZiBTaGFyZWRCdWZmZXIgYW5kIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIgaW52b2x2ZWQ6CisgICAgICAgIGJ5IG1ha2luZyB0aGVtIGNv
bnN0LCB3ZSBjbGVhcmx5IGluZGljYXRlIHRoYXQgdGhleSBhcmUgcmVhZC1vbmx5IGFuZCBpbW11
dGFibGUuCisKKyAgICAgICAgUnVubmluZyBzcGVlZHRlc3QubmV0IHdpdGggYSBnaWdhYml0IGxp
bmssIHdlIHNlZSBhIHJlZHVjdGlvbiBvZiBwZWFrCisgICAgICAgIG1lbW9yeSB1c2UgaW4gdGhl
IGNvbnRlbnQgcHJvY2VzcyBieSBhYm91dCAzNSUgKGZyb20gYXJvdW5kIDgwME1CIHRvIHVuZGVy
IDUwME1CKQorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAg
KiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE06
OnNhbml0aXplSW5pdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpzYW5pdGl6ZVJlc3Bv
bnNlKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5oOgorICAgICAgICAq
IE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNQ2xpZW50Lmg6CisgICAgICAgICogTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4
dHJhY3RLZXlJRHNLZXlpZHMpOgorICAgICAgICAoV2ViQ29yZTo6c2FuaXRpemVLZXlpZHMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEc0NlbmMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5pdERhdGFSZWdpc3RyeTo6c2FuaXRpemVDZW5jKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNhbml0aXplV2ViTSk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0S2V5
SURzV2ViTSk6CisgICAgICAgIChXZWJDb3JlOjpJbml0RGF0YVJlZ2lzdHJ5OjpzYW5pdGl6ZUlu
aXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJ
RHMpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5o
OgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhS2V5U2Vzc2lvbjo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5
U2Vzc2lvbjo6c2VuZE1lc3NhZ2UpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlTZXNzaW9uLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlzOjp1bnJlcXVlc3RlZEluaXRp
YWxpemF0aW9uRGF0YVJlY2VpdmVkKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5cy5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRh
dGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXJ0d29ya0ltYWdlTG9hZGVyOjpub3RpZnlGaW5p
c2hlZCk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tOgorICAgICAg
ICAoZmlsZVdyYXBwZXJGb3JFbGVtZW50KToKKyAgICAgICAgKiBlZGl0aW5nL21hYy9FZGl0b3JN
YWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9hcmQp
OgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0
YSk6CisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBo
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6Y2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZCk6Cisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9JbWFnZURv
Y3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRG9jdW1lbnQ6OnVwZGF0ZUR1cmlu
Z1BhcnNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEb2N1bWVudDo6ZmluaXNoZWRQYXJz
aW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OmFkZFJlc291cmNlU2hhcmVkQnVm
ZmVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OmJ1ZmZlciBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VE
YXRhOjpzZXRCdWZmZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFn
ZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6bWFpblJl
c291cmNlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnNo
YXJlZEJ1ZmZlckNvbnRlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
UGFnZUFnZW50Lmg6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYWluUmVzb3VyY2VEYXRhIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjptYWluUmVzb3VyY2UgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmRpZEdldExvYWREZWNpc2lvbkZvckljb24p
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZ0ljb24p
OgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9E
b2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvUmVz
b3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmRlbGl2
ZXJSZXNwb25zZUFuZERhdGEpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5oOgor
ICAgICAgICAqIGxvYWRlci9TdWJzdGl0dXRlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U3Vi
c3RpdHV0ZURhdGE6OlN1YnN0aXR1dGVEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvU3Vic3RpdHV0
ZVJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdWJzdGl0dXRlUmVzb3VyY2U6OmRhdGEg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3Vic3RpdHV0ZVJlc291cmNlOjpTdWJzdGl0dXRl
UmVzb3VyY2UpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpBcHBs
aWNhdGlvbkNhY2hlUmVzb3VyY2UpOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0
b3JhZ2U6OndyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KToKKyAgICAgICAgKiBsb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaDoKKyAgICAgICAgKiBsb2FkZXIv
YXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcmNoaXZlRmFj
dG9yeUNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcmNoaXZlRmFjdG9yeTo6Y3JlYXRlKToK
KyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5oOgorICAgICAgICAqIGxv
YWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcmNo
aXZlUmVzb3VyY2U6OkFyY2hpdmVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpBcmNoaXZl
UmVzb3VyY2U6OmNyZWF0ZSk6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291
cmNlLmg6CisgICAgICAgICogbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUpOgorICAgICAgICAq
IGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaDoKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRDU1NTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkRm9udC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGb250OjplbnN1cmVDdXN0
b21Gb250RGF0YSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjp1cGRhdGVCdWZmZXJJbnRlcm5hbCk6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6dXBkYXRlSW1hZ2VEYXRhKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnJl
c291cmNlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNjcmlwdDo6c2NyaXB0KToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBwYWdlL1Bh
Z2VTZXJpYWxpemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTZXJpYWxpemVyOjphZGRJ
bWFnZVRvUmVzb3VyY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9Ob3dQbGF5aW5nTWFuYWdlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyQnVpbGRlcjo6U2hhcmVkQnVmZmVyQnVpbGRlcik6CisgICAgICAgICogcGxh
dGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0
ZWRtZWRpYS9DRE1JbnN0YW5jZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETUluc3RhbmNlU2Vzc2lvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETVByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtl
eS9DRE1DbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlQ2xlYXJLZXk6
OnNhbml0aXplUmVzcG9uc2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VD
bGVhcktleTo6c2V0U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5z
dGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnJlcXVlc3RMaWNlbnNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5Ojp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlOjpz
ZXREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZURlY29kZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VE
ZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmVuc3VyZURlY29kZXJBdmFpbGFibGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VTb3VyY2U6OnJlc2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJj
ZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5
U3RyZWFtaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RTaW5mRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJhY3RLZXlJRHNT
aW5mKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2Fu
aXRpemVTaW5mKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVGYWlyUGxheVN0cmVhbWlu
Zzo6c2FuaXRpemVTa2QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZUZhaXJQbGF5U3Ry
ZWFtaW5nOjpleHRyYWN0S2V5SURzU2tkKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVG
YWlyUGxheVN0cmVhbWluZzo6c2FuaXRpemVSZXNwb25zZSBjb25zdCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWly
UGxheVN0cmVhbWluZ0FWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemF0aW9uRGF0YUZvclJlcXVlc3QpOgorICAgICAgICAo
V2ViQ29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnRha2VVbmV4cGVj
dGVkS2V5UmVxdWVzdEZvckluaXRpYWxpemF0aW9uRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpD
RE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2V0U2VydmVyQ2VydGlmaWNhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OnNlc3Npb25Gb3JLZXlJRHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZSk6CisgICAgICAg
IChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVw
ZGF0ZUxpY2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdHMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjphdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckNHOjpJbWFnZURlY29kZXJDRyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRGVjb2RlckdTdHJlYW1lcjo6SW1hZ2VEZWNvZGVyR1N0cmVhbWVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVh
bWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVu
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVUaHVuZGVyOjpzYW5pdGl6ZVJl
c3BvbnNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlVGh1bmRlcjo6c2V0
U2VydmVyQ2VydGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFyc2VkUmVzcG9uc2VNZXNz
YWdlOjpQYXJzZWRSZXNwb25zZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFyc2VkUmVz
cG9uc2VNZXNzYWdlOjpwYXlsb2FkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhcnNlZFJl
c3BvbnNlTWVzc2FnZTo6cGF5bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb25UaHVuZGVyOjpjaGFsbGVuZ2VHZW5lcmF0ZWRDYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjplcnJvckNhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnJlcXVlc3RMaWNlbnNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnVwZGF0ZUxpY2Vuc2Up
OgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6bG9hZFNlc3Np
b24pOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVtb3Zl
U2Vzc2lvbkRhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUv
Q0RNVGh1bmRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxl
SW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjYWxhYmxlSW1hZ2VEZWNvZGVy
OjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1h
Z2VEZWNvZGVyLmg6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNb2NrQ0RNRmFjdG9yeTo6YWRkS2V5c1RvU2Vzc2lvbldpdGhJRCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNRmFjdG9yeTo6cmVtb3ZlS2V5c0Zyb21TZXNzaW9uV2l0
aElEKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1GYWN0b3J5OjprZXlzRm9yU2Vzc2lvbldp
dGhJRCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0RNOjpzYW5pdGl6ZVJlc3BvbnNl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDRE1JbnN0YW5jZTo6c2V0U2VydmVyQ2Vy
dGlmaWNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6cmVx
dWVzdExpY2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NETUluc3RhbmNlU2Vzc2lvbjo6
dXBkYXRlTGljZW5zZSk6CisgICAgICAgICogdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oOgorCiAy
MDIyLTAyLTE0ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBb
Q1NTIENvbnRhaW5lciBRdWVyaWVzXSBTdXBwb3J0IHJhbmdlIG9wZXJhdG9ycyBpbiBzaXplIHF1
ZXJpZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggODEzYjdmODM5ZjE2OGY4ZGQ1MDIyZTNhMGE1NDU4YjJlOGNhOTU2
OC4uYTUyMDllNGI2YWEzYzYxODNiOTM3OTk2ZDQzZTA4MzI1MWZlMjdiMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw2NiBAQAorMjAyMi0wMi0xNiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUu
Y29tPgorCisgICAgICAgIENyYXNoVHJhY2VyOiBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQg
YXQgSmF2YVNjcmlwdENvcmU6IGJtYWxsb2NfYWxsb2NhdGVfaW1wbF9pbXBsX3Nsb3cKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjY5NQorICAgICAg
ICByZGFyOi8vODc1OTY3MjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5oOgor
ICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6cmVx
dWVzdExpY2Vuc2UpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Q
cm94eTo6cmVtb3ZlU2Vzc2lvbkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1JbnN0
YW5jZVNlc3Npb25Qcm94eTo6c2VuZE1lc3NhZ2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNz
L21lZGlhL1JlbW90ZUNETVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlQ0RNUHJv
eHk6OnNhbml0aXplUmVzcG9uc2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
Q0RNUHJveHkuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHA6
CisgICAgICAgIChJUEM6OlNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZSk6CisgICAgICAgIChJUEM6
OlNoYXJlZEJ1ZmZlckNvcHk6OmRhdGEgY29uc3QpOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZm
ZXJDb3B5OjpzYWZlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvU2hhcmVk
QnVmZmVyQ29weS5oOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5OjpTaGFyZWRCdWZm
ZXJDb3B5KToKKyAgICAgICAgKElQQzo6U2hhcmVkQnVmZmVyQ29weTo6YnVmZmVyIGNvbnN0KToK
KyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQ
Qzo6V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAo
SVBDOjpXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj46OmRlY29kZSk6CisgICAgICAg
IChJUEM6OldlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+OjplbmNvZGUpOgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVz
c2FnZT46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
OgorICAgICAgICAqIFNoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkhpdFRlc3RSZXN1bHREYXRhOjpXZWJIaXRUZXN0UmVzdWx0RGF0YSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUNETUluc3Rh
bmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvUmVtb3RlQ0RNSW5zdGFuY2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9S
ZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVDRE1J
bnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
Q0RNSW5zdGFuY2VTZXNzaW9uOjp1cGRhdGVMaWNlbnNlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZW1vdmVTZXNzaW9uRGF0YSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXI6OmNyZWF0ZUltYWdl
RGVjb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXI6
OnNldFVzZUdQVVByb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90
ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZmluaXNoZWRMb2FkaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6c291cmNlIGNvbnN0KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6cmVz
b3VyY2VEYXRhRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpnZXRSZXNvdXJj
ZURhdGFGcm9tRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRHZXRMb2FkRGVj
aXNpb25Gb3JJY29uKToKKwogMjAyMi0wMi0xNCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9u
QGFwcGxlLmNvbT4KIAogICAgICAgICBEaXJlY3QgdG91Y2hlcyBkb24ndCB0cmlnZ2VyIG90aGVy
IGdlc3R1cmUgcmVjb2duaXplcnMgaWYgV0tNb3VzZUdlc3R1cmVSZWNvZ25pemVyIHNlZXMgdGhl
bSBmaXJzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDY4MDM5NDg1OGExNWI4YTI1
Njk2YWFlYzdjOGQ5NGFhNzNhZDcyMjMuLjUwYzhiYTM0YjkzMTFhMjQ4OTFmOGRkNTdjNDJkYWY0
ZTk0MjA1MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAor
MjAyMi0wMi0xNiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgorCisgICAgICAg
IENyYXNoVHJhY2VyOiBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQgYXQgSmF2YVNjcmlwdENv
cmU6IGJtYWxsb2NfYWxsb2NhdGVfaW1wbF9pbXBsX3Nsb3cKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjY5NQorICAgICAgICByZGFyOi8vODc1OTY3
MjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNs
aWVudDo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbnMpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmZpbmlzaGVkTG9hZGluZ0ljb24pOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGF0YVNv
dXJjZS5tbToKKyAgICAgICAgKC1bV2ViRGF0YVNvdXJjZSBkYXRhXSk6CisgICAgICAgICogV2Vi
Vmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKGNyZWF0ZVNoYXJlTWVudUl0ZW0pOgorICAg
ICAgICAoLVtXZWJIVE1MVmlldyBuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0
aW9uOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUmVzb3VyY2UubW06CisgICAgICAgICgtW1dl
YlJlc291cmNlIF9zdHJpbmdWYWx1ZV0pOgorCiAyMDIyLTAyLTExICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgZml4IGJ1aWxkIHdpdGggdGhl
IGxhdGVzdCBpT1MgU0RLLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9DRE0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9DRE0uY3BwCmluZGV4IDAxNjEyMTlkMWUyNmIyNjJjNGVlZWM4MTk4YzQ2ZDhlYjE0YzFiMDIu
LjFkMzcwMWU2YWJmZTQ2YmNmMTU1MTFmZjI0Njg0OWQ5OTA4YzVhMTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKQEAgLTEzNSw3ICsxMzUsNyBA
QCBib29sIENETTo6c3VwcG9ydHNJbml0RGF0YVR5cGUoY29uc3QgQXRvbVN0cmluZyYgaW5pdERh
dGFUeXBlKSBjb25zdAogICAgIHJldHVybiBtX3ByaXZhdGUgJiYgbV9wcml2YXRlLT5zdXBwb3J0
ZWRJbml0RGF0YVR5cGVzKCkuY29udGFpbnMoaW5pdERhdGFUeXBlKTsKIH0KIAotUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETTo6c2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGluaXREYXRh
KQorUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETTo6c2FuaXRpemVJbml0
RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGluaXREYXRhKQogewogICAgIHJldHVybiBJbml0RGF0YVJlZ2lzdHJ5OjpzaGFy
ZWQoKS5zYW5pdGl6ZUluaXREYXRhKGluaXREYXRhVHlwZSwgaW5pdERhdGEpOwogfQpAQCAtMTQ1
LDcgKzE0NSw3IEBAIGJvb2wgQ0RNOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlCiAgICAgcmV0dXJuIG1fcHJpdmF0
ZSAmJiBtX3ByaXZhdGUtPnN1cHBvcnRzSW5pdERhdGEoaW5pdERhdGFUeXBlLCBpbml0RGF0YSk7
CiB9CiAKLVJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE06OnNhbml0aXplUmVzcG9u
c2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpCitSZWZQdHI8Y29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNOjpzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKQogewogICAgIGlmICghbV9wcml2YXRlKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvQ0RNLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL0NETS5oCmluZGV4IGQ3YjFkNTNkMDQ5MWY3Mjc3OWI1OTRiMmQ4M2MwOWI4M2JjZjIwN2Yu
LmJiN2JhOTkyNzQ0OTEzYjk4MjMzYmFiYjdmNmRmYTMyMzE1NDJiOTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uaApAQCAtNzMsMTAgKzczLDEwIEBAIHB1
YmxpYzoKICAgICBib29sIHN1cHBvcnRzU2Vzc2lvbnMoKSBjb25zdDsKICAgICBib29sIHN1cHBv
cnRzSW5pdERhdGFUeXBlKGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdDsKIAotICAgIFJlZlB0cjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIFJlZlB0
cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0
b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwog
ICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAotICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImKTsKKyAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVS
ZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAKICAgICBzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNs
aWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1DbGllbnQu
aAppbmRleCA0MTBlZDJmYjY0Mjc1NjJjZTliZDhlZGE0ZDkxYTg2YmE5OGNhYTYxLi5mNTg2NzJh
MWUyNDI1N2RjYWVjMzllZjA5NTMwYjk2MmU4YmQ3MWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNQ2xpZW50LmgKQEAgLTQzLDcgKzQzLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgfkNETUNsaWVudCgpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1
YWwgdm9pZCBjZG1DbGllbnRBdHRlbXB0VG9SZXN1bWVQbGF5YmFja0lmTmVjZXNzYXJ5KCkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBjZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0
YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25E
YXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0luaXREYXRhUmVnaXN0cnku
Y3BwCmluZGV4IDZmODg4ZTE3ODU4ZGRhNmQ5NDcxZWMxZjZlZjVkMDY2ZGYwZTQ5OTAuLjA3ZjE1
ZTE1MGNlYjY4ZmVjNmJhYmZhZDFhYzk1YTM5ZDk1ZTE1NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERhdGFSZWdpc3RyeS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5LmNw
cApAQCAtNTQsNyArNTQsNyBAQCBuYW1lc3BhY2UgewogICAgIGNvbnN0IHVpbnQzMl90IGtLZXlJ
ZHNNYXhLZXlJZFNpemVJbkJ5dGVzID0gNTEyOwogfQogCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc0tleWlkcyhj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGF0aWMgc3RkOjpvcHRpb25h
bDxWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlE
c0tleWlkcyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8g
MS4gRm9ybWF0CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS9m
b3JtYXQtcmVnaXN0cnkvaW5pdGRhdGEva2V5aWRzLmh0bWwjZm9ybWF0CkBAIC03NCw3ICs3NCw3
IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4+PiBleHRyYWN0S2V5SURzS2V5aWRzKGNvCiAgICAgaWYgKCFraWRzQXJyYXkpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+PiBrZXlJRHM7CisgICAgVmVjdG9yPFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPj4ga2V5SURzOwogICAgIGZvciAoYXV0byYgdmFsdWUgOiAqa2lkc0FycmF5KSB7CiAgICAg
ICAgIGF1dG8ga2V5SUQgPSB2YWx1ZS0+YXNTdHJpbmcoKTsKICAgICAgICAgaWYgKCFrZXlJRCkK
QEAgLTkzLDcgKzkzLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNLZXlpZHMoY28KICAgICByZXR1cm4ga2V5
SURzOwogfQogCi1zdGF0aWMgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXpl
S2V5aWRzKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBSZWZQ
dHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVLZXlpZHMoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIDEuIEZvcm1hdAogICAgIC8v
IGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvZm9ybWF0LXJlZ2lzdHJ5L2lu
aXRkYXRhL2tleWlkcy5odG1sI2Zvcm1hdApAQCAtMTUxLDkgKzE1MSw5IEBAIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJU09Qcm90ZWN0aW9uU3lzdGVtU3BlY2lmaWNIZWFk
ZXJCb3g+Pj4gSW5pCiAgICAgcmV0dXJuIHBzc2hCb3hlczsKIH0KIAotc3RkOjpvcHRpb25hbDxW
ZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0
cmFjdEtleUlEc0NlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3Rk
OjpvcHRpb25hbDxWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gSW5p
dERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEc0NlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgYnVmZmVyKQogewotICAgIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+
IGtleUlEczsKKyAgICBWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBr
ZXlJRHM7CiAKICAgICBhdXRvIHBzc2hCb3hlcyA9IGV4dHJhY3RQc3NoQm94ZXNGcm9tQ2VuYyhi
dWZmZXIpOwogICAgIGlmICghcHNzaEJveGVzKQpAQCAtMTg1LDcgKzE4NSw3IEBAIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IEluaXREYXRhUmVnaXN0
cnk6OmV4dHJhY3RLZXlJCiAgICAgcmV0dXJuIGtleUlEczsKIH0KIAotUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplQ2VuYyhjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCitSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gSW5pdERhdGFSZWdpc3RyeTo6c2FuaXRpemVDZW5jKGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyA0LiBDb21tb24gU3lzdGVtSUQgYW5kIFBT
U0ggQm94IEZvcm1hdAogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVk
aWEvZm9ybWF0LXJlZ2lzdHJ5L2luaXRkYXRhL2NlbmMuaHRtbCNjb21tb24tc3lzdGVtCkBAIC0x
OTUsNyArMTk1LDcgQEAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVn
aXN0cnk6OnNhbml0aXplQ2VuYyhjb25zdCBGcmFnbWVudGVkU2gKICAgICByZXR1cm4gYnVmZmVy
LmNvcHkoKTsKIH0KIAotc3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5p
dGl6ZVdlYk0oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RhdGljIFJl
ZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVdlYk0oY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogewogICAgIC8vIENoZWNrIGlmIHRoZSBidWZm
ZXIgaXMgYSB2YWxpZCBXZWJNIGluaXREYXRhLgogICAgIC8vIFRoZSBXZWJNIGluaXREYXRhIGlz
IHRoZSBDb250ZW50RW5jS2V5SUQsIHNvIHNob3VsZCBiZSBsZXNzIHRoYW4ga1dlYk1NYXhDb250
ZW50RW5jS2V5SURTaXplLgpAQCAtMjA1LDEwICsyMDUsMTAgQEAgc3RhdGljIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVdlYk0oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYKICAgICByZXR1cm4gYnVmZmVyLmNvcHkoKTsKIH0KIAotc3RhdGljIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNXZWJN
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3N0YXRpYyBzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5
SURzV2ViTShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgVmVj
dG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ga2V5SURzOwotICAgIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZWRCdWZmZXIgPSBzYW5pdGl6ZVdlYk0oYnVmZmVy
KTsKKyAgICBWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHM7
CisgICAgYXV0byBzYW5pdGl6ZWRCdWZmZXIgPSBzYW5pdGl6ZVdlYk0oYnVmZmVyKTsKICAgICBp
ZiAoIXNhbml0aXplZEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAt
MjMzLDcgKzIzMyw3IEBAIEluaXREYXRhUmVnaXN0cnk6OkluaXREYXRhUmVnaXN0cnkoKQogCiBJ
bml0RGF0YVJlZ2lzdHJ5Ojp+SW5pdERhdGFSZWdpc3RyeSgpID0gZGVmYXVsdDsKIAotUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IEluaXREYXRhUmVnaXN0cnk6OnNhbml0aXplSW5pdERh
dGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBidWZmZXIpCitSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gSW5p
dERhdGFSZWdpc3RyeTo6c2FuaXRpemVJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICBhdXRv
IGl0ZXIgPSBtX3R5cGVzLmZpbmQoaW5pdERhdGFUeXBlKTsKICAgICBpZiAoaXRlciA9PSBtX3R5
cGVzLmVuZCgpIHx8ICFpdGVyLT52YWx1ZS5zYW5pdGl6ZUluaXREYXRhKQpAQCAtMjQxLDcgKzI0
MSw3IEBAIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBJbml0RGF0YVJlZ2lzdHJ5Ojpz
YW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpCiAgICAgcmV0dXJuIGl0ZXItPnZhbHVlLnNh
bml0aXplSW5pdERhdGEoYnVmZmVyKTsKIH0KIAotc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gSW5pdERhdGFSZWdpc3RyeTo6ZXh0cmFjdEtleUlEcyhj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4+IEluaXREYXRhUmVnaXN0cnk6OmV4dHJhY3RLZXlJRHMoY29uc3QgQXRvbVN0
cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiB7CiAgICAgYXV0byBpdGVyID0gbV90eXBlcy5maW5kKGluaXREYXRhVHlwZSk7CiAgICAgaWYg
KGl0ZXIgPT0gbV90eXBlcy5lbmQoKSB8fCAhaXRlci0+dmFsdWUuc2FuaXRpemVJbml0RGF0YSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvSW5pdERh
dGFSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0
RGF0YVJlZ2lzdHJ5LmgKaW5kZXggNzdkNjA0YjA4YmI3ZjdlMzhiY2NiMzU0NWIzNGM4YjEzNDM1
NWVmMi4uYmFlNzFiN2U5MDc3ZDkwOWJkNTIyYTY3NmFlYTI0NzEzZWUzMDYxZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJlZ2lzdHJ5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9Jbml0RGF0YVJl
Z2lzdHJ5LmgKQEAgLTQ1LDEyICs0NSwxMiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIEluaXREYXRhUmVnaXN0cnkmIHNoYXJlZCgpOwogICAgIGZyaWVuZCBjbGFzcyBOZXZl
ckRlc3Ryb3llZDxJbml0RGF0YVJlZ2lzdHJ5PjsKIAotICAgIFJlZlB0cjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBzYW5pdGl6ZUluaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlw
ZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RL
ZXlJRHMoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJik7CisgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNh
bml0aXplSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEcyhj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImKTsKIAogICAgIHN0cnVjdCBJbml0RGF0YVR5cGVDYWxsYmFja3MgewotICAgICAgICB1c2lu
ZyBTYW5pdGl6ZUluaXREYXRhQ2FsbGJhY2sgPSBGdW5jdGlvbjxSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpPjsKLSAgICAgICAgdXNp
bmcgRXh0cmFjdEtleUlEc0NhbGxiYWNrID0gRnVuY3Rpb248c3RkOjpvcHRpb25hbDxWZWN0b3I8
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
ciYpPjsKKyAgICAgICAgdXNpbmcgU2FuaXRpemVJbml0RGF0YUNhbGxiYWNrID0gRnVuY3Rpb248
UmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKT47CisgICAgICAgIHVzaW5nIEV4dHJhY3RLZXlJRHNDYWxsYmFjayA9IEZ1bmN0
aW9uPHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj4+KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKT47CiAKICAgICAgICAgU2FuaXRpemVJ
bml0RGF0YUNhbGxiYWNrIHNhbml0aXplSW5pdERhdGE7CiAgICAgICAgIEV4dHJhY3RLZXlJRHND
YWxsYmFjayBleHRyYWN0S2V5SURzOwpAQCAtNjIsOCArNjIsOCBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIGNvbnN0IEF0b21TdHJpbmcmIHdlYm1OYW1lKCk7CiAKICAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPElTT1Byb3RlY3Rpb25TeXN0ZW1TcGVjaWZpY0hl
YWRlckJveD4+PiBleHRyYWN0UHNzaEJveGVzRnJvbUNlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+PiBleHRyYWN0S2V5SURzQ2VuYyhjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJik7Ci0gICAgc3RhdGljIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5p
dGl6ZUNlbmMoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAgIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+PiBleHRy
YWN0S2V5SURzQ2VuYyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CisgICAgc3RhdGlj
IFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZUNlbmMoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwogCiBwcml2YXRlOgogICAgIEluaXREYXRhUmVnaXN0
cnkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlTZXNzaW9uLmNwcAppbmRleCAxNDc3NmMyMDE1MWJmZWZlMzgwNzlhMzM3MzBj
ODg2NjI2OGJhNDZhLi4wNjY4ZWI3MTRjNmNhMDJlNTM2ODQ5YzFkNDQyMWYxNTQzZWVjOWQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleVNlc3Npb24uY3BwCkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBNZWRpYUtleVNlc3Np
b246OmdlbmVyYXRlUmVxdWVzdChjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0
IEJ1ZmYKICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6
Ok5ldHdvcmtpbmcsIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBpbml0RGF0
YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGluaXREYXRhLmRhdGEoKSwgaW5pdERhdGEubGVuZ3Ro
KCkpLCBpbml0RGF0YVR5cGUsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVy
ID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIC8vIDEwLjEuIElm
IHRoZSBpbml0IGRhdGEgaXMgbm90IHZhbGlkIGZvciBpbml0RGF0YVR5cGUsIHJlamVjdCBwcm9t
aXNlIHdpdGggYSBuZXdseSBjcmVhdGVkIFR5cGVFcnJvci4KICAgICAgICAgLy8gMTAuMi4gTGV0
IHNhbml0aXplZCBpbml0IGRhdGEgYmUgYSB2YWxpZGF0ZWQgYW5kIHNhbml0aXplZCB2ZXJzaW9u
IG9mIGluaXQgZGF0YS4KLSAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNh
bml0aXplZEluaXREYXRhID0gbV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRpemVJbml0RGF0YShpbml0
RGF0YVR5cGUsIGluaXREYXRhKTsKKyAgICAgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IHNhbml0aXplZEluaXREYXRhID0gbV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRpemVJ
bml0RGF0YShpbml0RGF0YVR5cGUsIGluaXREYXRhKTsKIAogICAgICAgICAvLyAxMC4zLiBJZiB0
aGUgcHJlY2VkaW5nIHN0ZXAgZmFpbGVkLCByZWplY3QgcHJvbWlzZSB3aXRoIGEgbmV3bHkgY3Jl
YXRlZCBUeXBlRXJyb3IuCiAgICAgICAgIGlmICghc2FuaXRpemVkSW5pdERhdGEpIHsKQEAgLTIy
Myw3ICsyMjMsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVSZXF1ZXN0KGNvbnN0
IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgQnVmZgogICAgICAgICAgICAgbV9sYXRl
c3REZWNyeXB0VGltZSA9IDA7CiAgICAgICAgIH0KIAotICAgICAgICBtX2luc3RhbmNlU2Vzc2lv
bi0+cmVxdWVzdExpY2Vuc2UobV9zZXNzaW9uVHlwZSwgaW5pdERhdGFUeXBlLCBzYW5pdGl6ZWRJ
bml0RGF0YS5yZWxlYXNlTm9uTnVsbCgpLCBbdGhpcywgd2Vha1RoaXMsIHByb21pc2UgPSBXVEZN
b3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBi
b29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1Zh
bHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT5yZXF1
ZXN0TGljZW5zZShtX3Nlc3Npb25UeXBlLCBpbml0RGF0YVR5cGUsIHNhbml0aXplZEluaXREYXRh
LnJlbGVhc2VOb25OdWxsKCksIFt0aGlzLCB3ZWFrVGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJv
bWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoUmVmPGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJv
b2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFs
dWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0yNTgsNyArMjU4LDcgQEAgdm9pZCBNZWRpYUtleVNl
c3Npb246OmdlbmVyYXRlUmVxdWVzdChjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNv
bnN0IEJ1ZmYKICAgICAgICAgICAgICAgICBtX2NhbGxhYmxlID0gdHJ1ZTsKIAogICAgICAgICAg
ICAgICAgIC8vIDEwLjkuMy4gUnVuIHRoZSBRdWV1ZSBhICJtZXNzYWdlIiBFdmVudCBhbGdvcml0
aG0gb24gdGhlIHNlc3Npb24sIHByb3ZpZGluZyBtZXNzYWdlIHR5cGUgYW5kIG1lc3NhZ2UuCi0g
ICAgICAgICAgICAgICAgZW5xdWV1ZU1lc3NhZ2UobWVzc2FnZVR5cGUsIG1lc3NhZ2UpOworICAg
ICAgICAgICAgICAgIGVucXVldWVNZXNzYWdlKG1lc3NhZ2VUeXBlLCBXVEZNb3ZlKG1lc3NhZ2Up
KTsKIAogICAgICAgICAgICAgICAgIC8vIDEwLjkuMy4gUmVzb2x2ZSBwcm9taXNlLgogICAgICAg
ICAgICAgICAgIElORk9fTE9HKGlkZW50aWZpZXIsICI6OnRhc2soKSBSZXNvbHZlZCIpOwpAQCAt
NDIyLDcgKzQyMiw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjp1cGRhdGUoY29uc3QgQnVmZmVy
U291cmNlJiByZXNwb25zZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mCiAgICAgLy8gNi4gUnVuIHRo
ZSBmb2xsb3dpbmcgc3RlcHMgaW4gcGFyYWxsZWw6CiAgICAgcXVldWVUYXNrS2VlcGluZ09iamVj
dEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpOZXR3b3JraW5nLCBbdGhpcywgd2Vha1RoaXMgPSBX
ZWFrUHRyIHsgKnRoaXMgfSwgcmVzcG9uc2UgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZXNwb25z
ZS5kYXRhKCksIHJlc3BvbnNlLmxlbmd0aCgpKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSks
IGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAg
Ly8gNi4xLiBMZXQgc2FuaXRpemVkIHJlc3BvbnNlIGJlIGEgdmFsaWRhdGVkIGFuZC9vciBzYW5p
dGl6ZWQgdmVyc2lvbiBvZiByZXNwb25zZSBjb3B5LgotICAgICAgICBSZWZQdHI8RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVkUmVzcG9uc2UgPSBtX2ltcGxlbWVudGF0aW9uLT5zYW5p
dGl6ZVJlc3BvbnNlKHJlc3BvbnNlKTsKKyAgICAgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IHNhbml0aXplZFJlc3BvbnNlID0gbV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRp
emVSZXNwb25zZShyZXNwb25zZSk7CiAKICAgICAgICAgLy8gNi4yLiBJZiB0aGUgcHJlY2VkaW5n
IHN0ZXAgZmFpbGVkLCBvciBpZiBzYW5pdGl6ZWQgcmVzcG9uc2UgaXMgZW1wdHksIHJlamVjdCBw
cm9taXNlIHdpdGggYSBuZXdseSBjcmVhdGVkIFR5cGVFcnJvci4KICAgICAgICAgaWYgKCFzYW5p
dGl6ZWRSZXNwb25zZSB8fCBzYW5pdGl6ZWRSZXNwb25zZS0+aXNFbXB0eSgpKSB7CkBAIC02MDEs
NyArNjAxLDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OnJlbW92ZShSZWY8RGVmZXJyZWRQcm9t
aXNlPiYmIHByb21pc2UpCiAgICAgICAgIC8vIDQuMy4gTGV0IG1lc3NhZ2UgdHlwZSBiZSBudWxs
LgogCiAgICAgICAgIC8vIDQuNC4gVXNlIHRoZSBjZG0gdG8gZXhlY3V0ZSB0aGUgZm9sbG93aW5n
IHN0ZXBzOgotICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+cmVtb3ZlU2Vzc2lvbkRhdGEobV9z
ZXNzaW9uSWQsIG1fc2Vzc2lvblR5cGUsIFt0aGlzLCB3ZWFrVGhpcywgcHJvbWlzZSA9IFdURk1v
dmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoQ0RNSW5zdGFu
Y2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBrZXlzLCBzdGQ6Om9wdGlvbmFsPFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPj4mJiBtZXNzYWdlLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nl
c3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+
cmVtb3ZlU2Vzc2lvbkRhdGEobV9zZXNzaW9uSWQsIG1fc2Vzc2lvblR5cGUsIFt0aGlzLCB3ZWFr
VGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlk
ZW50aWZpZXIpXSAoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBrZXlzLCBz
dGQ6Om9wdGlvbmFsPFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJiBtZXNzYWdl
LCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewog
ICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAg
LTcxNiw5ICs3MTYsOSBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlS2V5U3RhdHVzZXMo
Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBpbgogICAgICAgICB9KTsKIH0K
IAotdm9pZCBNZWRpYUtleVNlc3Npb246OnNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlIG1lc3Nh
Z2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQordm9pZCBNZWRp
YUtleVNlc3Npb246OnNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBSZWY8
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQogewotICAgIGVucXVldWVN
ZXNzYWdlKG1lc3NhZ2VUeXBlLCBtZXNzYWdlKTsKKyAgICBlbnF1ZXVlTWVzc2FnZShtZXNzYWdl
VHlwZSwgV1RGTW92ZShtZXNzYWdlKSk7CiB9CiAKIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpzZXNz
aW9uSWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKaW5kZXgg
MzY1YWNlNWMwOTVlN2RjMGM1NzFlNzZjY2YyYzA3YWFmYzYyYmFhNi4uY2YzYTg0OThmZDQ1MGVm
MTgyNzRhODA5MjE2NjU4ZjIzNDgyZWFiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCkBAIC04Nyw3ICs4Nyw3
IEBAIHB1YmxpYzoKICAgICB1c2luZyBDbG9zZWRQcm9taXNlID0gRE9NUHJvbWlzZVByb3h5PElE
TFVuZGVmaW5lZD47CiAgICAgQ2xvc2VkUHJvbWlzZSYgY2xvc2VkKCkgeyByZXR1cm4gbV9jbG9z
ZWRQcm9taXNlLmdldCgpOyB9CiAKLSAgICBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFJlZjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiwgTWVkaWFLZXlTdGF0dXM+PiYgc3RhdHVzZXMoKSBjb25zdCB7
IHJldHVybiBtX3N0YXR1c2VzOyB9CisgICAgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxSZWY8Y29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4sIE1lZGlhS2V5U3RhdHVzPj4mIHN0YXR1c2VzKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGF0dXNlczsgfQogCiAgICAgdW5zaWduZWQgaW50ZXJuYWxJbnN0
YW5jZVNlc3Npb25PYmplY3RSZWZDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zdGFuY2VTZXNz
aW9uLT5yZWZDb3VudCgpOyB9CiAKQEAgLTEwMCw3ICsxMDAsNyBAQCBwcml2YXRlOgogCiAgICAg
Ly8gQ0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50CiAgICAgdm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhD
RE1JbnN0YW5jZVNlc3Npb25DbGllbnQ6OktleVN0YXR1c1ZlY3RvciYmKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBtZXNzYWdlKSBmaW5hbDsKKyAgICB2b2lkIHNlbmRNZXNzYWdlKENETU1lc3NhZ2VU
eXBlLCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKSBmaW5hbDsK
ICAgICB2b2lkIHNlc3Npb25JZENoYW5nZWQoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgUGxh
dGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKCkgZmluYWw7CiAKQEAgLTE0MCwxMCArMTQwLDEwIEBA
IHByaXZhdGU6CiAgICAgTWVkaWFLZXlTZXNzaW9uVHlwZSBtX3Nlc3Npb25UeXBlOwogICAgIFJl
ZjxDRE0+IG1faW1wbGVtZW50YXRpb247CiAgICAgUmVmPENETUluc3RhbmNlU2Vzc2lvbj4gbV9p
bnN0YW5jZVNlc3Npb247Ci0gICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4g
bV9yZWNvcmRPZktleVVzYWdlOworICAgIFZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4+IG1fcmVjb3JkT2ZLZXlVc2FnZTsKICAgICBkb3VibGUgbV9maXJzdERlY3J5cHRU
aW1lIHsgMCB9OwogICAgIGRvdWJsZSBtX2xhdGVzdERlY3J5cHRUaW1lIHsgMCB9OwotICAgIFZl
Y3RvcjxzdGQ6OnBhaXI8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBNZWRpYUtleVN0YXR1
cz4+IG1fc3RhdHVzZXM7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxSZWY8Y29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4sIE1lZGlhS2V5U3RhdHVzPj4gbV9zdGF0dXNlczsKIAogICAgIHVzaW5n
IERpc3BsYXlDaGFuZ2VkT2JzZXJ2ZXIgPSBPYnNlcnZlcjx2b2lkKFBsYXRmb3JtRGlzcGxheUlE
KT47CiAgICAgRGlzcGxheUNoYW5nZWRPYnNlcnZlciBtX2Rpc3BsYXlDaGFuZ2VkT2JzZXJ2ZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
cy5jcHAKaW5kZXggMzY3ZjMxZDE4NmI1MTYzOWE5Yzc0MjEzZjBjZjhlNmYyZjhkMjZlYS4uNmE1
NGRjZDI5M2NmMzI5MTE1NzA5ZTk5NTAxZDkzYjcyMDAyMWEyZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcApAQCAtMTc3LDcg
KzE3Nyw3IEBAIGJvb2wgTWVkaWFLZXlzOjpoYXNPcGVuU2Vzc2lvbnMoKSBjb25zdAogICAgICAg
ICB9KTsKIH0KIAotdm9pZCBNZWRpYUtleXM6OnVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRh
UmVjZWl2ZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGluaXREYXRhKQordm9pZCBNZWRpYUtleXM6OnVucmVxdWVzdGVkSW5pdGlhbGl6
YXRpb25EYXRhUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhKQogewogICAgIGZvciAoYXV0byYgY2Rt
Q2xpZW50IDogbV9jZG1DbGllbnRzKQogICAgICAgICBjZG1DbGllbnQuY2RtQ2xpZW50VW5yZXF1
ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChpbml0RGF0YVR5cGUsIGluaXREYXRhLmNv
cHlSZWYoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5cy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleXMuaAppbmRleCA5MWExYTA3MTE0MzNiZTI0N2RkMmE4NWM1ZjRhZDA5MzhhMDlhN2Fj
Li44NjQ1MmQ4OGIyNDlhZWViYTdjZjQyZGVmOThlYzU2MWQ5M2Y3ZGYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKQEAgLTg2LDcg
Kzg2LDcgQEAgcHJvdGVjdGVkOgogICAgIE1lZGlhS2V5cyhEb2N1bWVudCYsIGJvb2wgdXNlRGlz
dGluY3RpdmVJZGVudGlmaWVyLCBib29sIHBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQsIGNvbnN0IFZl
Y3RvcjxNZWRpYUtleVNlc3Npb25UeXBlPiYsIFJlZjxDRE0+JiYsIFJlZjxDRE1JbnN0YW5jZT4m
Jik7CiAKICAgICAvLyBDRE1JbnN0YW5jZUNsaWVudAotICAgIHZvaWQgdW5yZXF1ZXN0ZWRJbml0
aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJpbmcmLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJikgZmluYWw7CisgICAgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0
YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYsIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmKSBmaW5hbDsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGNvbnN0IExvZ2dl
ciYgbG9nZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dnZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhTWV0YWRhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAKaW5kZXggODc0
YWE3ZjBiMThmMGVlNzU4ODBiYTVmNWVmNjdkNDdiZmMyYjJiNC4uYmQxMDY3MTYxYTBkMjViOTNk
ZTRmN2FlNmI0N2Y1ZjYxZGZjMzRhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNlc3Npb24vTWVkaWFNZXRhZGF0YS5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgdm9p
ZCBBcnR3b3JrSW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNv
dXJjZSwgY29uc3QgTmV0d29ya0wKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAvLyBTYW5p
dGl6ZSB0aGUgaW1hZ2UgYnkgZGVjb2RpbmcgaXQgaW50byBhIEJpdG1hcEltYWdlLgotICAgIFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXJUb1Nhbml0aXplID0gbV9jYWNoZWRJ
bWFnZS0+aW1hZ2UoKS0+ZGF0YSgpOworICAgIGF1dG8gYnVmZmVyVG9TYW5pdGl6ZSA9IG1fY2Fj
aGVkSW1hZ2UtPmltYWdlKCktPmRhdGEoKTsKICAgICBhdXRvIGJpdG1hcEltYWdlID0gQml0bWFw
SW1hZ2U6OmNyZWF0ZSgpOwogICAgIGJpdG1hcEltYWdlLT5zZXREYXRhKFdURk1vdmUoYnVmZmVy
VG9TYW5pdGl6ZSksIHRydWUpOwogICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKGJpdG1hcEltYWdlLT5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQs
IDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1t
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4IDVh
NjA1OTRiNWU0ODJkZDJhNWE3YmMyMDdlOWJiMjY0MDJkMjBlZTkuLjc4YmYyNGMxN2Y3MzgwNmEz
M2MxMTRmNTgzYmY5Y2Y0YjFjMmIwMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0hUTUxDb252ZXJ0ZXIubW0KQEAgLTIzMjAsNyArMjMyMCw3IEBAIHN0YXRpYyBSZXRhaW5Q
dHI8TlNGaWxlV3JhcHBlcj4gZmlsZVdyYXBwZXJGb3JVUkwoRG9jdW1lbnRMb2FkZXIqIGRhdGFT
b3VyY2UsIE5TCiBzdGF0aWMgUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyRm9y
RWxlbWVudChIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQogewogICAgIGlmIChDYWNoZWRJbWFn
ZSogY2FjaGVkSW1hZ2UgPSBlbGVtZW50LmNhY2hlZEltYWdlKCkpIHsKLSAgICAgICAgaWYgKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXIqIHNoYXJlZEJ1ZmZlciA9IGNhY2hlZEltYWdlLT5yZXNvdXJj
ZUJ1ZmZlcigpKQorICAgICAgICBpZiAoYXV0byogc2hhcmVkQnVmZmVyID0gY2FjaGVkSW1hZ2Ut
PnJlc291cmNlQnVmZmVyKCkpCiAgICAgICAgICAgICByZXR1cm4gYWRvcHROUyhbW05TRmlsZVdy
YXBwZXIgYWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpzaGFyZWRCdWZmZXItPm1h
a2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KaW5kZXggODUxZjI5NTBiOTFiYTQ0MGQ5OTkz
YTUyMmY5MTUwZjAxYTU4MWVhZi4uMDkxODdjMGY1N2Q0OWNjYjc5YzJlYzdlMzJlNGU4MTQ1ZTk5
NTZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQpAQCAtMjA0LDcg
KzIwNCw4IEBAIHZvaWQgRWRpdG9yOjp3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQm
IHBhc3RlYm9hcmQsIEVsZW1lbnQmIGltYWdlRWxlbWVuCiAgICAgcGFzdGVib2FyZEltYWdlLnN1
Z2dlc3RlZE5hbWUgPSBpbWFnZVNvdXJjZVVSTC5sYXN0UGF0aENvbXBvbmVudCgpLnRvU3RyaW5n
KCk7CiAgICAgcGFzdGVib2FyZEltYWdlLmltYWdlU2l6ZSA9IGltYWdlLT5zaXplKCk7CiAgICAg
cGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUgPSBwYXN0ZWJvYXJkLnJlc291cmNlTUlN
RVR5cGUoY2FjaGVkSW1hZ2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSk7Ci0gICAgcGFzdGVib2Fy
ZEltYWdlLnJlc291cmNlRGF0YSA9IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpOworICAg
IGlmIChhdXRvKiBidWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIoKSkKKyAgICAg
ICAgcGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YSA9IGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMo
KTsKIAogICAgIGlmICghcGFzdGVib2FyZC5pc1N0YXRpYygpKQogICAgICAgICBjbGllbnQoKS0+
Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEobWFrZVJhbmdlU2VsZWN0aW5nTm9kZShpbWFnZUVsZW1l
bnQpLCBwYXN0ZWJvYXJkSW1hZ2UuY2xpZW50VHlwZXMsIHBhc3RlYm9hcmRJbWFnZS5jbGllbnRE
YXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQppbmRleCA3ODYwOTE4
N2Y3NWQwNzZlYjlkNzgxNzNiNTBlNGJjNjQwZGQ1Mjc1Li5lOWE2MTg0NzExNmY5ZjE0ZjgyNzY2
ZjA3YThjMDYwOTA1NDE2ZTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21h
Yy9FZGl0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFj
Lm1tCkBAIC0zMzUsOSArMzM1LDggQEAgdm9pZCBFZGl0b3I6OndyaXRlSW1hZ2VUb1Bhc3RlYm9h
cmQoUGFzdGVib2FyZCYgcGFzdGVib2FyZCwgRWxlbWVudCYgaW1hZ2VFbGVtZW4KICAgICBwYXN0
ZWJvYXJkSW1hZ2UudXJsLnVybCA9IHVybDsKICAgICBwYXN0ZWJvYXJkSW1hZ2UudXJsLnRpdGxl
ID0gdGl0bGU7CiAgICAgcGFzdGVib2FyZEltYWdlLnVybC51c2VyVmlzaWJsZUZvcm0gPSBXVEY6
OnVzZXJWaXNpYmxlU3RyaW5nKHBhc3RlYm9hcmRJbWFnZS51cmwudXJsKTsKLSAgICBwYXN0ZWJv
YXJkSW1hZ2UucmVzb3VyY2VEYXRhID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVmZmVyKCk7Ci0g
ICAgcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUgPSBjYWNoZWRJbWFnZS0+cmVzcG9u
c2UoKS5taW1lVHlwZSgpOwotCisgICAgaWYgKGF1dG8qIGJ1ZmZlciA9IGNhY2hlZEltYWdlLT5y
ZXNvdXJjZUJ1ZmZlcigpKQorICAgICAgICBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhID0g
YnVmZmVyLT5tYWtlQ29udGlndW91cygpOwogICAgIHBhc3RlYm9hcmQud3JpdGUocGFzdGVib2Fy
ZEltYWdlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNo
bWVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1l
bnQuY3BwCmluZGV4IDVhMmRiNWY4Zjc4YzMyNjBmMmQ0ZDA1OWE4NjcxMmI4NDk4ODUzNDkuLmQw
NzUyZTk4N2MyZTk0YzAzNGQyMjRjMTZiMGNkNDc3N2FlZDIzYzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCBz
dGF0aWMgYm9vbCBtaW1lVHlwZUlzU3VpdGFibGVGb3JJbmxpbmVJbWFnZUF0dGFjaG1lbnQoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICByZXR1cm4gTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBw
b3J0ZWRJbWFnZU1JTUVUeXBlKG1pbWVUeXBlKSB8fCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1BERk1J
TUVUeXBlKG1pbWVUeXBlKTsKIH0KIAotdm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0
ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBIVE1MQXR0YWNobWVudEVsZW1l
bnQ6OnVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEoY29uc3QgU3RyaW5nJiBjb250ZW50VHlw
ZSwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGlm
IChidWZmZXItPmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjUzLDcgKzI1Myw3IEBA
IHZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRh
KGNvbnN0IFN0cmluZyYgY29udGVudFR5CiAgICAgaWYgKCFtaW1lVHlwZUlzU3VpdGFibGVGb3JJ
bmxpbmVJbWFnZUF0dGFjaG1lbnQobWltZVR5cGUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBl
bmNsb3NpbmdJbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFt
ZXM6OnNyY0F0dHIsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50KCksIEJsb2I6OmNy
ZWF0ZSgmZG9jdW1lbnQoKSwgYnVmZmVyLT5leHRyYWN0RGF0YSgpLCBtaW1lVHlwZSkpKTsKKyAg
ICBlbmNsb3NpbmdJbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1M
TmFtZXM6OnNyY0F0dHIsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50KCksIEJsb2I6
OmNyZWF0ZSgmZG9jdW1lbnQoKSwgYnVmZmVyLT5jb3B5RGF0YSgpLCBtaW1lVHlwZSkpKTsKIH0K
IAogdm9pZCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZVRodW1ibmFpbChjb25zdCBSZWZQ
dHI8SW1hZ2U+JiB0aHVtYm5haWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBdHRhY2htZW50RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVu
dEVsZW1lbnQuaAppbmRleCBmZDNkMWEzODFmMzdlYjU1OWFiMzdmZThjMGExNDBhZDdkOWM4MTBj
Li44YzRjOGNjODc2NDgyZGM0ZjU5Y2IwYTZjMjc5YTU2MTAyZWFmNTQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgY29weU5vbkF0dHJpYnV0ZVByb3BlcnRpZXNGcm9tRWxlbWVudChjb25z
dCBFbGVtZW50JikgZmluYWw7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUF0dHJp
YnV0ZXMoc3RkOjpvcHRpb25hbDx1aW50NjRfdD4mJiBuZXdGaWxlU2l6ZSwgY29uc3QgU3RyaW5n
JiBuZXdDb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBuZXdGaWxlbmFtZSk7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCB1cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlLCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRh
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVRodW1ibmFpbChjb25zdCBSZWZQdHI8
SW1hZ2U+JiB0aHVtYm5haWwpOwogCiAgICAgSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgaW5z
ZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNzI1YzUyMGEyZWIx
NmE3MzJhZGJkZmQwZGE4ZTEwOWU3Y2U0NTVjZS4uMjZlNDE2ZmMxOTJjYzFmZTU4ZGRlMTllM2Vl
M2FjYmRmOTNhNGY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CkBAIC0yOTQ1LDcgKzI5NDUsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNkbUNsaWVudEF0
dGVtcHRUb1Jlc3VtZVBsYXliYWNrSWZOZWNlc3NhcnkoKQogICAgIGF0dGVtcHRUb1Jlc3VtZVBs
YXliYWNrSWZOZWNlc3NhcnkoKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjZG1DbGll
bnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYgaW5p
dERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSkKK3ZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6Y2RtQ2xpZW50VW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFS
ZWNlaXZlZChjb25zdCBTdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPGNvbnN0IEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgaW5pdERhdGEpCiB7CiAgICAgbWVkaWFQbGF5ZXJJbml0aWFsaXphdGlv
bkRhdGFFbmNvdW50ZXJlZChpbml0RGF0YVR5cGUsIGluaXREYXRhLT50cnlDcmVhdGVBcnJheUJ1
ZmZlcigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggODll
NmE2MjY4YmY2ZDYxYzVlMzczZjI5YTg0OTZiMWQ2NzczYmFkNC4uZjM1YTQ3NmJiODA0NzBiZTA0
YTc4OTNlNzgwMjY4OTU2OWNmOGRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmgKQEAgLTcxOSw3ICs3MTksNyBAQCBwcml2YXRlOgogCiAgICAgLy8gQ0RNQ2xpZW50CiAg
ICAgdm9pZCBjZG1DbGllbnRBdHRlbXB0VG9SZXN1bWVQbGF5YmFja0lmTmVjZXNzYXJ5KCkgZmlu
YWw7Ci0gICAgdm9pZCBjZG1DbGllbnRVbnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2Vp
dmVkKGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsK
KyAgICB2b2lkIGNkbUNsaWVudFVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQo
Y29uc3QgU3RyaW5nJiwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpIGZpbmFs
OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkgJiYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VE
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQuY3BwCmluZGV4
IDRkMTBmYjA1NzcyNDYyODU3Njg4NTAzZDY2NDc2OTdmMGNiMDRiYTEuLmY0MzhmYTRiMTE3Yjli
NmUxYmQ5MTc3NjBkYjg5MjkzMjBiYTNiMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSW1hZ2VEb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3Vt
ZW50LmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6dXBkYXRlRHVy
aW5nUGFyc2luZygpCiAgICAgaWYgKCFtX2ltYWdlRWxlbWVudCkKICAgICAgICAgY3JlYXRlRG9j
dW1lbnRTdHJ1Y3R1cmUoKTsKIAotICAgIGlmIChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyID0gbG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKSkKKyAgICBpZiAoYXV0byBi
dWZmZXIgPSBsb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpKQogICAgICAgICBtX2ltYWdlRWxl
bWVudC0+Y2FjaGVkSW1hZ2UoKS0+dXBkYXRlQnVmZmVyKCpidWZmZXIpOwogCiAgICAgaW1hZ2VV
cGRhdGVkKCk7CkBAIC0xNTEsMTIgKzE1MSw3IEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6ZmluaXNo
ZWRQYXJzaW5nKCkKIHsKICAgICBpZiAoIXBhcnNlcigpLT5pc1N0b3BwZWQoKSAmJiBtX2ltYWdl
RWxlbWVudCkgewogICAgICAgICBDYWNoZWRJbWFnZSYgY2FjaGVkSW1hZ2UgPSAqbV9pbWFnZUVs
ZW1lbnQtPmNhY2hlZEltYWdlKCk7Ci0gICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBkYXRhID0gbG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKLQotICAgICAgICAvLyBJ
ZiB0aGlzIGlzIGEgbXVsdGlwYXJ0IGltYWdlLCBtYWtlIGEgY29weSBvZiB0aGUgY3VycmVudCBw
YXJ0LCBzaW5jZSB0aGUgcmVzb3VyY2UgZGF0YQotICAgICAgICAvLyB3aWxsIGJlIG92ZXJ3cml0
dGVuIGJ5IHRoZSBuZXh0IHBhcnQuCi0gICAgICAgIGlmIChkYXRhICYmIGxvYWRlcigpLT5pc0xv
YWRpbmdNdWx0aXBhcnRDb250ZW50KCkpCi0gICAgICAgICAgICBkYXRhID0gZGF0YS0+Y29weSgp
OworICAgICAgICBhdXRvIGRhdGEgPSBsb2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOwogCiAg
ICAgICAgIGNhY2hlZEltYWdlLmZpbmlzaExvYWRpbmcoZGF0YS5nZXQoKSwgeyB9KTsKICAgICAg
ICAgY2FjaGVkSW1hZ2UuZmluaXNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAppbmRleCAzMjhlYmU3ZTY0MTE5NWU1YTQ2ODUwMjc1
NTkxMGY3OGM0OGI1OGQ4Li40MGJmZWQ3YTdjOWZkMTMxMjYzOWY5NTAzNDliZmE3NTVmZmRiMzNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0Rh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0
YS5jcHAKQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjphZGRD
YWNoZWRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgQ2FjaGVkUmVzbwogICAgIHJl
c291cmNlRGF0YS0+c2V0Q2FjaGVkUmVzb3VyY2UoY2FjaGVkUmVzb3VyY2UpOwogfQogCi12b2lk
IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjphZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBTdHJp
bmcmIHJlcXVlc3RJZCwgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBj
b25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpCit2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRh
OjphZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgUmVmUHRy
PGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHRl
eHRFbmNvZGluZ05hbWUpCiB7CiAgICAgUmVzb3VyY2VEYXRhKiByZXNvdXJjZURhdGEgPSByZXNv
dXJjZURhdGFGb3JSZXF1ZXN0SWQocmVxdWVzdElkKTsKICAgICBpZiAoIXJlc291cmNlRGF0YSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKaW5k
ZXggYzhjZWQxMmE2NDA3ZmRjZDU3NGVjYzJhNzgxOWVkZTY2MzgwM2RhYy4uODYyNzRhMzU2Y2Zm
NTdhMGJkNTBkZDQ1MjQ2ZjM2Y2EwMDM2OTcwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKQEAgLTg4LDggKzg4LDggQEAgcHVibGljOgog
ICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gZGVjb2RlcigpIGNvbnN0IHsgcmV0
dXJuIG1fZGVjb2Rlci5jb3B5UmVmKCk7IH0KICAgICAgICAgdm9pZCBzZXREZWNvZGVyKFJlZlB0
cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiYmIGRlY29kZXIpIHsgbV9kZWNvZGVyID0gV1RGTW92ZShk
ZWNvZGVyKTsgfQogCi0gICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZm
ZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5jb3B5UmVmKCk7IH0KLSAgICAgICAgdm9pZCBz
ZXRCdWZmZXIoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IG1fYnVm
ZmVyID0gV1RGTW92ZShidWZmZXIpOyB9CisgICAgICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlci5jb3B5UmVmKCk7
IH0KKyAgICAgICAgdm9pZCBzZXRCdWZmZXIoUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKSB7IG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIpOyB9CiAKICAgICAg
ICAgY29uc3Qgc3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUluZm8+JiBjZXJ0aWZpY2F0ZUluZm8o
KSBjb25zdCB7IHJldHVybiBtX2NlcnRpZmljYXRlSW5mbzsgfQogICAgICAgICB2b2lkIHNldENl
cnRpZmljYXRlSW5mbyhjb25zdCBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4mIGNlcnRp
ZmljYXRlSW5mbykgeyBtX2NlcnRpZmljYXRlSW5mbyA9IGNlcnRpZmljYXRlSW5mbzsgfQpAQCAt
MTIwLDcgKzEyMCw3IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAg
ICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CiAgICAgICAgIFNoYXJl
ZEJ1ZmZlckJ1aWxkZXIgbV9kYXRhQnVmZmVyOwotICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBtX2J1ZmZlcjsKICAgICAgICAgc3RkOjpvcHRpb25hbDxDZXJ0aWZpY2F0ZUlu
Zm8+IG1fY2VydGlmaWNhdGVJbmZvOwogICAgICAgICBDYWNoZWRSZXNvdXJjZSogbV9jYWNoZWRS
ZXNvdXJjZSB7IG51bGxwdHIgfTsKICAgICAgICAgSW5zcGVjdG9yUGFnZUFnZW50OjpSZXNvdXJj
ZVR5cGUgbV90eXBlIHsgSW5zcGVjdG9yUGFnZUFnZW50OjpPdGhlclJlc291cmNlIH07CkBAIC0x
NDQsNyArMTQ0LDcgQEAgcHVibGljOgogICAgIFJlc291cmNlRGF0YSBjb25zdCogbWF5YmVBZGRS
ZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFNoYXJlZEJ1ZmZlciYp
OwogICAgIHZvaWQgbWF5YmVEZWNvZGVEYXRhVG9Db250ZW50KGNvbnN0IFN0cmluZyYgcmVxdWVz
dElkKTsKICAgICB2b2lkIGFkZENhY2hlZFJlc291cmNlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElk
LCBDYWNoZWRSZXNvdXJjZSopOwotICAgIHZvaWQgYWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIoY29u
c3QgU3RyaW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBj
b25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpOworICAgIHZvaWQgYWRkUmVzb3VyY2VTaGFy
ZWRCdWZmZXIoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpOwogICAgIFJl
c291cmNlRGF0YSBjb25zdCogZGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CiAgICAgUmVz
b3VyY2VEYXRhIGNvbnN0KiBkYXRhRm9yVVJMKGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICBWZWN0
b3I8U3RyaW5nPiByZW1vdmVDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQu
Y3BwCmluZGV4IGE0ZmZkMTM2MWNkZGU1YWI3ZDk3M2NkMDBkMTlhOTEwYWU5ZWQyOWYuLjUwMmZi
ODIzYmJiOThkMTFmODBjNjA4YmVmODRmN2Q3ZjczYWQ1MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTEw
MCwxMyArMTAwLDEzIEBAIHN0YXRpYyBib29sIGRlY29kZUJ1ZmZlcihjb25zdCB1aW50OF90KiBi
dWZmZXIsIHVuc2lnbmVkIHNpemUsIGNvbnN0IFN0cmluZyYgdGV4CiAKIGJvb2wgSW5zcGVjdG9y
UGFnZUFnZW50OjptYWluUmVzb3VyY2VDb250ZW50KEZyYW1lKiBmcmFtZSwgYm9vbCB3aXRoQmFz
ZTY0RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCkKIHsKLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPm1haW5S
ZXNvdXJjZURhdGEoKTsKKyAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4g
IGJ1ZmZlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5tYWluUmVzb3VyY2VE
YXRhKCk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1
cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIGZyYW1lLT5kb2N1bWVudCgpLT5lbmNvZGluZygp
LCB3aXRoQmFzZTY0RW5jb2RlLCByZXN1bHQpOwogfQogCi1ib29sIEluc3BlY3RvclBhZ2VBZ2Vu
dDo6c2hhcmVkQnVmZmVyQ29udGVudChSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0RW5j
b2RlLCBTdHJpbmcqIHJlc3VsdCkKK2Jvb2wgSW5zcGVjdG9yUGFnZUFnZW50OjpzaGFyZWRCdWZm
ZXJDb250ZW50KFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwg
Y29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0
cmluZyogcmVzdWx0KQogewogICAgIHJldHVybiBkYXRhQ29udGVudChidWZmZXIgPyBidWZmZXIt
Pm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51bGxwdHIsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6
ZSgpIDogMCwgdGV4dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFn
ZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VB
Z2VudC5oCmluZGV4IDNkNWU1NjZkYmUwYzVlYzExZDllOGRmNjdmY2YwYTcwOTg4YTJmOGYuLjVh
Yzk2MTkyZjQ2NDVjOTUzZmU2OTlmNDhkNzQ1ZTdiNmE2ZDhiMGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFnZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuaApAQCAtNzUs
NyArNzUsNyBAQCBwdWJsaWM6CiAgICAgICAgIE90aGVyUmVzb3VyY2UsCiAgICAgfTsKIAotICAg
IHN0YXRpYyBib29sIHNoYXJlZEJ1ZmZlckNvbnRlbnQoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSwgYm9vbCB3aXRoQmFzZTY0
RW5jb2RlLCBTdHJpbmcqIHJlc3VsdCk7CisgICAgc3RhdGljIGJvb2wgc2hhcmVkQnVmZmVyQ29u
dGVudChSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5n
JiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUsIFN0cmluZyogcmVzdWx0
KTsKICAgICBzdGF0aWMgVmVjdG9yPENhY2hlZFJlc291cmNlKj4gY2FjaGVkUmVzb3VyY2VzRm9y
RnJhbWUoRnJhbWUqKTsKICAgICBzdGF0aWMgdm9pZCByZXNvdXJjZUNvbnRlbnQoSW5zcGVjdG9y
OjpQcm90b2NvbDo6RXJyb3JTdHJpbmcmLCBGcmFtZSosIGNvbnN0IFVSTCYsIFN0cmluZyogcmVz
dWx0LCBib29sKiBiYXNlNjRFbmNvZGVkKTsKICAgICBzdGF0aWMgU3RyaW5nIHNvdXJjZU1hcFVS
TEZvclJlc291cmNlKENhY2hlZFJlc291cmNlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmNwcAppbmRleCAzNTliNjM4NTE4Njg0MjNjMzdhMTAwNjM1MDFhNGRmMDZkOWFk
YmFhLi5mMTVkNjVhYWI4NDk5ODlmNTIzN2VkZGJmMjBkNWE2YjM5MzkyNmNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTIwNyw3ICsyMDcsNyBAQCBEb2N1
bWVudExvYWRlcjo6fkRvY3VtZW50TG9hZGVyKCkKICNlbmRpZgogfQogCi1SZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gRG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZURhdGEoKSBjb25z
dAorUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IERvY3VtZW50TG9hZGVyOjpt
YWluUmVzb3VyY2VEYXRhKCkgY29uc3QKIHsKICAgICBpZiAobV9zdWJzdGl0dXRlRGF0YS5pc1Zh
bGlkKCkpCiAgICAgICAgIHJldHVybiBtX3N1YnN0aXR1dGVEYXRhLmNvbnRlbnQoKS0+Y29weSgp
OwpAQCAtMTY3MSw3ICsxNjcxLDcgQEAgQXJjaGl2ZVJlc291cmNlKiBEb2N1bWVudExvYWRlcjo6
YXJjaGl2ZVJlc291cmNlRm9yVVJMKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogCiBSZWZQdHI8QXJj
aGl2ZVJlc291cmNlPiBEb2N1bWVudExvYWRlcjo6bWFpblJlc291cmNlKCkgY29uc3QKIHsKLSAg
ICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IG1haW5SZXNvdXJjZURhdGEo
KTsKKyAgICBhdXRvIGRhdGEgPSBtYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFkYXRhKQog
ICAgICAgICBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKICAgICBhdXRvJiByZXNwb25z
ZSA9IHRoaXMtPnJlc3BvbnNlKCk7CkBAIC0yMjkyLDcgKzIyOTIsNyBAQCB2b2lkIERvY3VtZW50
TG9hZGVyOjpzdGFydEljb25Mb2FkaW5nKCkKICAgICBtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQo
KS5nZXRMb2FkRGVjaXNpb25Gb3JJY29ucyhpY29uRGVjaXNpb25zKTsKIH0KIAotdm9pZCBEb2N1
bWVudExvYWRlcjo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCB1aW50
NjRfdCBsb2FkSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIERvY3VtZW50TG9hZGVyOjpk
aWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIGljb24gPSBtX2ljb25zUGVu
ZGluZ0xvYWREZWNpc2lvbi50YWtlKGxvYWRJZGVudGlmaWVyKTsKIApAQCAtMjMxMyw3ICsyMzEz
LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29s
IGRlY2lzaW9uLCB1aW50NjRfdCBsb2FkSWRlbnQKICAgICByYXdJY29uTG9hZGVyLT5zdGFydExv
YWRpbmcoKTsKIH0KIAotdm9pZCBEb2N1bWVudExvYWRlcjo6ZmluaXNoZWRMb2FkaW5nSWNvbihJ
Y29uTG9hZGVyJiBsb2FkZXIsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKK3ZvaWQg
RG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZ0ljb24oSWNvbkxvYWRlciYgbG9hZGVyLCBj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIpCiB7CiAgICAgLy8gSWYgdGhlIERv
Y3VtZW50TG9hZGVyIGhhcyBkZXRhY2hlZCBmcm9tIGl0cyBmcmFtZSwgYWxsIGljb24gbG9hZHMg
c2hvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIGNhbmNlbGxlZC4KICAgICBBU1NFUlQobV9mcmFtZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IGMyYmVhNmY2YTY5Yjgz
NjQ3MmMwYWZmN2EwZDcwNzAzOTZiYTZjMmIuLjBhNzMwNTJlZGNhZWIxMWY4ZDcwYzhmNTJmYzc1
MjQ3ZjQwNjBiMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC0x
ODEsNyArMTgxLDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgRnJhbWVMb2FkZXIq
IGZyYW1lTG9hZGVyKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3VicmVzb3VyY2VMb2Fk
ZXIqIG1haW5SZXNvdXJjZUxvYWRlcigpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VEYXRhKCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1haW5S
ZXNvdXJjZURhdGEoKSBjb25zdDsKICAgICAKICAgICBEb2N1bWVudFdyaXRlciYgd3JpdGVyKCkg
Y29uc3QgeyByZXR1cm4gbV93cml0ZXI7IH0KIApAQCAtNDA4LDggKzQwOCw4IEBAIHB1YmxpYzoK
ICNlbmRpZgogCiAgICAgdm9pZCBzdGFydEljb25Mb2FkaW5nKCk7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBkaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90
IGxvYWRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXIqKT4mJik7Ci0gICAgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKEljb25Mb2FkZXImLCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRHZXRM
b2FkRGVjaXNpb25Gb3JJY29uKGJvb2wgZGVjaXNpb24sIHVpbnQ2NF90IGxvYWRJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4m
Jik7CisgICAgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKEljb25Mb2FkZXImLCBjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyKik7CiAKICAgICBjb25zdCBWZWN0b3I8TGlua0ljb24+JiBsaW5r
SWNvbnMoKSBjb25zdCB7IHJldHVybiBtX2xpbmtJY29uczsgfQogCkBAIC02MzgsNyArNjM4LDcg
QEAgcHJpdmF0ZToKICAgICBib29sIG1fd2FpdGluZ0Zvck5hdmlnYXRpb25Qb2xpY3kgeyBmYWxz
ZSB9OwogCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgTGlua0ljb24+IG1faWNvbnNQZW5kaW5nTG9h
ZERlY2lzaW9uOwotICAgIEhhc2hNYXA8c3RkOjp1bmlxdWVfcHRyPEljb25Mb2FkZXI+LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKT4+IG1faWNvbkxvYWRl
cnM7CisgICAgSGFzaE1hcDxzdGQ6OnVuaXF1ZV9wdHI8SWNvbkxvYWRlcj4sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciopPj4gbV9pY29uTG9hZGVy
czsKICAgICBWZWN0b3I8TGlua0ljb24+IG1fbGlua0ljb25zOwogCiAjaWYgRU5BQkxFKEFQUExJ
Q0FUSU9OX01BTklGRVNUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCA1MGNiZDAyNDgwZWZiMzUwNjdiMTNjNzM2NjA4OTUy
Nzc0YzNhNjU2Li43YmMyYjc3NzEwZWM4MDE1Zjk2MDQ1MWRkZWM1MDdmNGUwYmEwZTQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNw
cApAQCAtNDk0LDE1ICs0OTQsMTggQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRp
ZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWYKIAogICAgICAg
ICBhdXRvIHJlc3BvbnNlID0gbV9yZXNvdXJjZS0+cmVzcG9uc2UoKTsKIAorICAgICAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIGlmIChtX3Jlc291cmNlLT5yZXNvdXJj
ZUJ1ZmZlcigpKQorICAgICAgICAgICAgYnVmZmVyID0gbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZm
ZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICAgICAgaWYgKG9wdGlvbnMoKS5maWx0ZXJpbmdQ
b2xpY3kgPT0gUmVzcG9uc2VGaWx0ZXJpbmdQb2xpY3k6OkRpc2FibGUpIHsKICAgICAgICAgICAg
IG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2UpOwotICAg
ICAgICAgICAgaWYgKGF1dG8qIGJ1ZmZlciA9IG1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkp
CisgICAgICAgICAgICBpZiAoYnVmZmVyKQogICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRS
ZWNlaXZlRGF0YSgqYnVmZmVyKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VS
VChyZXNwb25zZS50eXBlKCkgPT0gUmVzb3VyY2VSZXNwb25zZTo6VHlwZTo6RGVmYXVsdCk7CiAK
ICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgUmVz
b3VyY2VSZXNwb25zZTo6ZmlsdGVyKHJlc3BvbnNlLCBtX29wdGlvbnMuY3JlZGVudGlhbHMgPT0g
RmV0Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6SW5jbHVkZSA/IFJlc291cmNlUmVzcG9uc2U6OlBl
cmZvcm1FeHBvc2VBbGxIZWFkZXJzQ2hlY2s6Ok5vIDogUmVzb3VyY2VSZXNwb25zZTo6UGVyZm9y
bUV4cG9zZUFsbEhlYWRlcnNDaGVjazo6WWVzKSk7Ci0gICAgICAgICAgICBpZiAoYXV0byogYnVm
ZmVyID0gbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkKKyAgICAgICAgICAgIGlmIChidWZm
ZXIpCiAgICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKCpidWZmZXIpOwog
ICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAK
aW5kZXggMWFkYzNjM2NkYjliYWZmOWM0MzM2MjEzNmRlODdjNjA1NzJmZmZiZC4uYTFiZjBhMDE3
ODE0YWI1ODhkZDM3ZDI5MzQ4ZmQ0YzQzYzA4MGZhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xOTMsNyArMTkzLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRl
cjo6aW5pdChSZXNvdXJjZVJlcXVlc3QmJiBjbGllbnRSZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2kKICAgICB9KTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGVsaXZlclJlc3BvbnNl
QW5kRGF0YShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGVsaXZlclJl
c3BvbnNlQW5kRGF0YShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGRpZFJlY2VpdmVS
ZXNwb25zZShyZXNwb25zZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBi
dWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChyZWFjaGVk
VGVybWluYWxTdGF0ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAppbmRl
eCBlNTUxZDBkYzIxOTgxYjY4OWM0NGFjNmQ2NGVhMTY4Mjg0ZWQ5NjI3Li5jNTkzMmQ5ZTU2OTg2
ZmQyZDExYjRlYTdiYjAzY2VlOWEzYWZhNGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuaApAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQg
aW5pdChSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CiAKLSAgICB2b2lkIGRlbGl2ZXJSZXNwb25zZUFuZERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGRlbGl2ZXJS
ZXNwb25zZUFuZERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJlZlB0cjxjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
dmlydHVhbCB2b2lkIHN0YXJ0TG9hZGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3Vic3RpdHV0ZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRl
RGF0YS5oCmluZGV4IGE4YTQ5YjQ3ZjkyNzM0Mjc0YmE0Y2VhYmMxNzA3ZmVmYTdiNjY0MGQuLmY5
ZTYwOWZhZjViNDQzMzZiODcwOWM2NjNiNjFiNzBiNTczMDQyNDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJzdGl0dXRlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJzdGl0dXRlRGF0YS5oCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgU3Vic3RpdHV0ZURhdGEoUmVmUHRy
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgY29udGVudCwgY29uc3QgVVJMJiBmYWlsaW5nVVJM
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgU2Vzc2lvbkhpc3RvcnlWaXNpYmls
aXR5IHNob3VsZFJldmVhbFRvU2Vzc2lvbkhpc3RvcnkpCisgICAgICAgIFN1YnN0aXR1dGVEYXRh
KFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGNvbnRlbnQsIGNvbnN0IFVS
TCYgZmFpbGluZ1VSTCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFNlc3Npb25I
aXN0b3J5VmlzaWJpbGl0eSBzaG91bGRSZXZlYWxUb1Nlc3Npb25IaXN0b3J5KQogICAgICAgICAg
ICAgOiBtX2NvbnRlbnQoV1RGTW92ZShjb250ZW50KSkKICAgICAgICAgICAgICwgbV9mYWlsaW5n
VVJMKGZhaWxpbmdVUkwpCiAgICAgICAgICAgICAsIG1fcmVzcG9uc2UocmVzcG9uc2UpCkBAIC02
MSw3ICs2MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9CiAgICAgICAg
IAogICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBt
X2NvbnRlbnQ7CisgICAgICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBt
X2NvbnRlbnQ7CiAgICAgICAgIFVSTCBtX2ZhaWxpbmdVUkw7CiAgICAgICAgIFJlc291cmNlUmVz
cG9uc2UgbV9yZXNwb25zZTsKICAgICAgICAgU2Vzc2lvbkhpc3RvcnlWaXNpYmlsaXR5IG1fc2hv
dWxkUmV2ZWFsVG9TZXNzaW9uSGlzdG9yeSB7IFNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eTo6SGlk
ZGVuIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291
cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vic3RpdHV0ZVJlc291cmNlLmgKaW5kZXgg
M2QxOTI4NjJmMjc3MjliMmYzOGRiNTRiZDgzNjc5OTUyNWMwMTlkMy4uOTY0NzIyMDJiODNmNmEx
ZGY5YTY5ODg1MjQ4MmM0NDQ3NGE1MTZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1N1YnN0aXR1dGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJz
dGl0dXRlUmVzb3VyY2UuaApAQCAtMzcsMTQgKzM3LDE0IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0
IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KLSAgICBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX3JlZmVyZW5j
ZV9jYXN0PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KFJlZiB7ICptX2RhdGEuZ2V0KCkgfSk7IH0K
KyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX3JlZmVyZW5jZV9jYXN0PGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+KFJlZiB7
ICptX2RhdGEuZ2V0KCkgfSk7IH0KICAgICB2b2lkIGFwcGVuZChjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikgeyBtX2RhdGEuYXBwZW5kKGJ1ZmZlcik7IH0KICAgICB2b2lkIGNsZWFyKCkgeyBt
X2RhdGEuZW1wdHkoKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRlbGl2ZXIoUmVzb3VyY2VMb2Fk
ZXImIGxvYWRlcikgeyBsb2FkZXIuZGVsaXZlclJlc3BvbnNlQW5kRGF0YShtX3Jlc3BvbnNlLCBt
X2RhdGEuY29weSgpKTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgU3Vic3RpdHV0ZVJlc291cmNlKFVS
TCYmIHVybCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBkYXRhKQorICAgIFN1YnN0aXR1dGVSZXNvdXJjZShVUkwmJiB1cmwsIFJlc291
cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgZGF0YSkKICAgICAgICAgOiBtX3VybChXVEZNb3ZlKHVybCkpCiAgICAgICAgICwgbV9yZXNw
b25zZShXVEZNb3ZlKHJlc3BvbnNlKSkKICAgICAgICAgLCBtX2RhdGEoV1RGTW92ZShkYXRhKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZS5jcHAKaW5kZXggMjU2ZTg5YjIxMWIzOGIyZDIxZGNkNjY1NzgyNjll
NjYwNzM2NzMyNy4uZmQwMTI1MmE1YWI0MTI2ZmQ1MTNiZWJkMTA1Zjc2YjcwMGY3NWQ4MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZS5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1SZWY8QXBwbGljYXRpb25DYWNoZVJlc291cmNlPiBBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2U6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIHVuc2lnbmVkIHR5cGUsIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgY29uc3QgU3RyaW5nJiBwYXRoKQorUmVmPEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4g
QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpjcmVhdGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCB1bnNpZ25lZCB0eXBlLCBSZWZQdHI8Y29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAg
ICBBU1NFUlQoIXVybC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSk7CiAgICAgaWYgKCFidWZmZXIp
CkBAIC00MCw3ICs0MCw3IEBAIFJlZjxBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U+IEFwcGxpY2F0
aW9uQ2FjaGVSZXNvdXJjZTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBjCiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKFVSTCB7IHVybCB9LCBXVEZNb3Zl
KHJlc291cmNlUmVzcG9uc2UpLCB0eXBlLCBidWZmZXIucmVsZWFzZU5vbk51bGwoKSwgcGF0aCkp
OwogfQogCi1BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZShVUkwmJiB1cmwsIFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgdW5zaWduZWQgdHlwZSwg
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoKQor
QXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoVVJMJiYg
dXJsLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIHVuc2lnbmVkIHR5cGUsIFJlZjxjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCkKICAg
ICA6IFN1YnN0aXR1dGVSZXNvdXJjZShXVEZNb3ZlKHVybCksIFdURk1vdmUocmVzcG9uc2UpLCBX
VEZNb3ZlKGRhdGEpKQogICAgICwgbV90eXBlKHR5cGUpCiAgICAgLCBtX3N0b3JhZ2VJRCgwKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVSZXNvdXJjZS5oCmluZGV4IGMyODhlNzAzNmM2NzYyYWQ0ODc2YmE4ODE0NjlhNzVkMjIz
N2UxYmEuLjgxYzBmYTg5MTk1NWY4ODFiNDI1NWMyMzJiMmRhYjIxNGEyZGQ3MjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3Vy
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgICAgICBGYWxsYmFjayA9
IDEgPDwgNAogICAgIH07CiAKLSAgICBzdGF0aWMgUmVmPEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCB1bnNpZ25lZCB0
eXBlLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKCksIGNvbnN0IFN0cmluZyYgcGF0aCA9IFN0cmluZygpKTsKKyAgICBzdGF0aWMgUmVmPEFw
cGxpY2F0aW9uQ2FjaGVSZXNvdXJjZT4gY3JlYXRlKGNvbnN0IFVSTCYsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCB1bnNpZ25lZCB0eXBlLCBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGNvbnN0IFN0cmluZyYgcGF0aCA9IFN0
cmluZygpKTsKIAogICAgIHVuc2lnbmVkIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0K
ICAgICB2b2lkIGFkZFR5cGUodW5zaWduZWQgdHlwZSk7CkBAIC01OCw3ICs1OCw3IEBAIHB1Ymxp
YzoKICNlbmRpZgogICAgIAogcHJpdmF0ZToKLSAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Uo
VVJMJiYsIFJlc291cmNlUmVzcG9uc2UmJiwgdW5zaWduZWQgdHlwZSwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgcGF0aCk7CisgICAgQXBwbGljYXRpb25DYWNo
ZVJlc291cmNlKFVSTCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYsIHVuc2lnbmVkIHR5cGUsIFJlZjxj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHBhdGgpOwogCiAg
ICAgdm9pZCBkZWxpdmVyKFJlc291cmNlTG9hZGVyJikgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UuY3BwCmluZGV4IDZiOWU3ZTI5NWZkNmZiMjBmZjBkNzRmZGNmMjNmYzY2MDBhNjAwM2YuLjE3
N2M0MzQ3ZTNhOTExODIyM2UyNTE5Mjk0ZjM3ZTA3MzNjZTViNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
LmNwcApAQCAtMTI3Miw3ICsxMjcyLDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6
c2hvdWxkU3RvcmVSZXNvdXJjZUFzRmxhdEZpbGUoQXBwbGljYXRpb25DYWNoZVJlc28KICAgICBy
ZXR1cm4gc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAiYXVkaW8vIikg
fHwgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAidmlkZW8vIik7CiB9
CiAgICAgCi1ib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjp3cml0ZURhdGFUb1VuaXF1ZUZp
bGVJbkRpcmVjdG9yeShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcm
IGRpcmVjdG9yeSwgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24pCiti
b29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjp3cml0ZURhdGFUb1VuaXF1ZUZpbGVJbkRpcmVj
dG9yeShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIGRp
cmVjdG9yeSwgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24pCiB7CiAg
ICAgU3RyaW5nIGZ1bGxQYXRoOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaAppbmRleCA0MTAyYTE4MDhi
NDU1NTdiNjQ1ZTM2ZTdlNjgxZmM0YzZkMjA3Y2UyLi5lMTJhMDQyZTRhMzRkMzEyY2M1MjdlYmQ0
YWUwN2YxZGZhNmU4MzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaApAQCAtMTIyLDcgKzEyMiw3IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBlbnN1cmVPcmlnaW5SZWNvcmQoY29uc3QgU2VjdXJpdHlPcmlnaW4q
KTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRTdG9yZVJlc291cmNlQXNGbGF0RmlsZShBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UqKTsKICAgICB2b2lkIGRlbGV0ZVRhYmxlcygpOwotICAgIGJvb2wg
d3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJlY3RvcnkoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYs
IGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBTdHJpbmcmIG91dEZpbGVuYW1lLCBjb25zdCBTdHJp
bmcmIGZpbGVFeHRlbnNpb24pOworICAgIGJvb2wgd3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJl
Y3RvcnkoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgZGlyZWN0
b3J5LCBTdHJpbmcmIG91dEZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVFeHRlbnNpb24pOwog
CiAgICAgdm9pZCBsb2FkTWFuaWZlc3RIb3N0SGFzaGVzKCk7CiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5jcHAKaW5kZXggNGVmOWNkNjZi
ZDA4OGI3NGMwNDZjMDY5MGQxZTlkM2U1ZTMzNjBmZC4uZWViMDE2NmQzZWE1OGRiY2YwNDAzM2Ew
ZThjNzQyYWUzZWVmM2UyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvQXJjaGl2ZUZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L0FyY2hpdmVGYWN0b3J5LmNwcApAQCAtNDYsMTIgKzQ2LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotdHlwZWRlZiBSZWZQdHI8QXJjaGl2ZT4gUmF3RGF0YUNyZWF0aW9uRnVuY3Rpb24o
Y29uc3QgVVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOwordHlwZWRlZiBSZWZQdHI8QXJj
aGl2ZT4gUmF3RGF0YUNyZWF0aW9uRnVuY3Rpb24oY29uc3QgVVJMJiwgY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYpOwogdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmF3RGF0YUNyZWF0aW9u
RnVuY3Rpb24qLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IEFyY2hpdmVNSU1FVHlwZXNNYXA7
CiAKIC8vIFRoZSBjcmVhdGUgZnVuY3Rpb25zIGluIHRoZSBhcmNoaXZlIGNsYXNzZXMgcmV0dXJu
IFJlZlB0ciB0byBjb25jcmV0ZSBzdWJjbGFzc2VzCiAvLyBvZiBBcmNoaXZlLiBUaGlzIGFkYXB0
b3IgbWFrZXMgdGhlIGZ1bmN0aW9ucyBoYXZlIGEgdW5pZm9ybSByZXR1cm4gdHlwZS4KLXRlbXBs
YXRlPHR5cGVuYW1lIEFyY2hpdmVDbGFzcz4gc3RhdGljIFJlZlB0cjxBcmNoaXZlPiBhcmNoaXZl
RmFjdG9yeUNyZWF0ZShjb25zdCBVUkwmIHVybCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVm
ZmVyKQordGVtcGxhdGU8dHlwZW5hbWUgQXJjaGl2ZUNsYXNzPiBzdGF0aWMgUmVmUHRyPEFyY2hp
dmU+IGFyY2hpdmVGYWN0b3J5Q3JlYXRlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgcmV0dXJuIEFyY2hpdmVDbGFzczo6Y3JlYXRl
KHVybCwgYnVmZmVyKTsKIH0KQEAgLTgzLDcgKzgzLDcgQEAgYm9vbCBBcmNoaXZlRmFjdG9yeTo6
aXNBcmNoaXZlTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICByZXR1cm4gIW1p
bWVUeXBlLmlzRW1wdHkoKSAmJiBhcmNoaXZlTUlNRVR5cGVzKCkuY29udGFpbnMobWltZVR5cGUp
OwogfQogCi1SZWZQdHI8QXJjaGl2ZT4gQXJjaGl2ZUZhY3Rvcnk6OmNyZWF0ZShjb25zdCBVUkwm
IHVybCwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSkKK1JlZlB0cjxBcmNoaXZlPiBBcmNoaXZlRmFjdG9yeTo6Y3JlYXRlKGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKQogewogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlRmFjdG9yeS5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZUZhY3RvcnkuaAppbmRleCA1NTY0NTE1
YzllMGQ5ZDAzM2I3OTBjNzQ3Mjg1YTI1ODUzYWJlMDJkLi4yYWRlNzgyYzI1NWQ0Yzc0ZmJlZDQ1
ZWZiOTUwZWMwYTc1NTM4NTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9BcmNoaXZlRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L0FyY2hpdmVGYWN0b3J5LmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcjsKIGNsYXNzIEFyY2hpdmVGYWN0b3J5IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgYm9v
bCBpc0FyY2hpdmVNSU1FVHlwZShjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgUmVmUHRyPEFy
Y2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKKyAgICBzdGF0aWMgUmVmUHRyPEFyY2hpdmU+IGNyZWF0
ZShjb25zdCBVUkwmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKTsKICAgICBzdGF0aWMgdm9pZCByZWdpc3Rlcktub3duQXJjaGl2ZU1J
TUVUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYpOwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5j
cHAKaW5kZXggMDczODM5NGE4Mjg3MTRhYTBiOTBlZTc1MDc5ZDQ4NmY1YjBlODY5NC4uYmQ3Zjg1
NTFjOGZiYWExOWMwMTY4ZjJmYzdkZjExZmRjOTBhZmY1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuY3BwCkBAIC0zMyw3ICszMyw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotaW5saW5lIEFyY2hpdmVSZXNvdXJjZTo6QXJjaGl2
ZVJlc291cmNlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywg
Y29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
KQoraW5saW5lIEFyY2hpdmVSZXNvdXJjZTo6QXJjaGl2ZVJlc291cmNlKFJlZjxjb25zdCBGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFt
ZU5hbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIDogU3Vic3RpdHV0
ZVJlc291cmNlKFVSTCB7IHVybCB9LCBSZXNvdXJjZVJlc3BvbnNlIHsgcmVzcG9uc2UgfSwgV1RG
TW92ZShkYXRhKSkKICAgICAsIG1fbWltZVR5cGUobWltZVR5cGUpCiAgICAgLCBtX3RleHRFbmNv
ZGluZyh0ZXh0RW5jb2RpbmcpCkBAIC00Miw3ICs0Miw3IEBAIGlubGluZSBBcmNoaXZlUmVzb3Vy
Y2U6OkFyY2hpdmVSZXNvdXJjZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBj
b25zCiB7CiB9CiAKLVJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IEFyY2hpdmVSZXNvdXJjZTo6Y3Jl
YXRlKFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29u
c3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQor
UmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJp
bmcmIGZyYW1lTmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAg
aWYgKCFkYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTU0LDcgKzU0LDcgQEAgUmVm
UHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBcmNoaXZlUmVz
b3VyY2UoZGF0YS5yZWxlYXNlTm9uTnVsbCgpLCB1cmwsIG1pbWVUeXBlLCB0ZXh0RW5jb2Rpbmcs
IGZyYW1lTmFtZSwgcmVzcG9uc2UpKTsKIH0KIAotUmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJj
aGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0
YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQorUmVm
UHRyPEFyY2hpdmVSZXNvdXJjZT4gQXJjaGl2ZVJlc291cmNlOjpjcmVhdGUoUmVmUHRyPGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIHJldHVybiBjcmVhdGUoV1RGTW92ZShk
YXRhKSwgdXJsLCByZXNwb25zZS5taW1lVHlwZSgpLCByZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1l
KCksIFN0cmluZygpLCByZXNwb25zZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5oCmluZGV4IDA1NDhlZjcyMWVmZDI3YzAwY2U5M2QxMjI3
MGVjZWM0NmMwMmFmOTQuLjhlNDhjOWU4MjliNDRmMTM3MTBlYjY3YmE2ODU4ODc0YzE4Yjc0M2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL0FyY2hpdmVSZXNvdXJjZS5o
CkBAIC0zNCw4ICszNCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXJjaGl2ZVJl
c291cmNlIDogcHVibGljIFN1YnN0aXR1dGVSZXNvdXJjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IGNyZWF0ZShSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiwgY29uc3QgVVJMJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwotICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBjcmVhdGUoUmVmUHRyPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsCisgICAgc3RhdGljIFJlZlB0cjxB
cmNoaXZlUmVzb3VyY2U+IGNyZWF0ZShSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiwgY29uc3QgVVJMJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBjcmVhdGUoUmVmUHRyPGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsCiAgICAgICAgIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcm
IGZyYW1lTmFtZSwKICAgICAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgPSBSZXNvdXJjZVJl
c3BvbnNlKCkpOwogCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZEln
bm9yZVdoZW5VbmFyY2hpdmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkSWdub3JlV2hlblVu
YXJjaGl2aW5nOyB9CiAKIHByaXZhdGU6Ci0gICAgQXJjaGl2ZVJlc291cmNlKFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBj
b25zdCBTdHJpbmcmIHRleHRFbmNvZGluZywgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBBcmNoaXZlUmVzb3VyY2UoUmVmPGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpOwogCiAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgU3Ry
aW5nIG1fdGV4dEVuY29kaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAppbmRleCA3ZjRiYWQ2ZmNjM2E5Yzk3YTZhNTE3
YWI5YjI5ZDA4MGNhOWRhNzFiLi4xY2UwYWQxZDhlNTVjNmM1OTBmYmYyOTIxYjQwODNlNWU2MzFl
ZDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lX
ZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdh
Y3lXZWJBcmNoaXZlLmNwcApAQCAtMjQ4LDEyICsyNDgsMTIgQEAgUmVmPExlZ2FjeVdlYkFyY2hp
dmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShSZWY8QXJjaGl2ZVJlc291cmNlPiYmIG1haW5S
ZXNvdXIKICAgICByZXR1cm4gYXJjaGl2ZTsKIH0KIAotUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+
IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQor
UmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAgIHJldHVybiBjcmVhdGUoVVJMKCks
IGRhdGEpOwogfQogCi1SZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6
Y3JlYXRlKGNvbnN0IFVSTCYsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCitSZWZQdHI8
TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFVSTCYsIGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpCiB7CiAgICAgTE9HKEFyY2hpdmVzLCAi
TGVnYWN5V2ViQXJjaGl2ZSAtIENyZWF0aW5nIGZyb20gcmF3IGRhdGEiKTsKIApAQCAtNTU0LDcg
KzU1NCw3IEBAIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGUoY29uc3QgU3RyaW5nJiBtYXJrdXBTdHJpbmcsIEZyCiAgICAgICAgICAgICAgICAgcmVxdWVz
dC5zZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbihmcmFtZS5kb2N1bWVudCgpLT5kb21haW5Gb3JD
YWNoZVBhcnRpdGlvbigpKTsKIAogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjYWNoZWRSZXNv
dXJjZSA9IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5yZXNvdXJjZUZvclJlcXVlc3QocmVxdWVz
dCwgZnJhbWUucGFnZSgpLT5zZXNzaW9uSUQoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KGF1dG8gcmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShjYWNoZWRSZXNvdXJjZS0+
cmVzb3VyY2VCdWZmZXIoKSwgc3VicmVzb3VyY2VVUkwsIGNhY2hlZFJlc291cmNlLT5yZXNwb25z
ZSgpKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byByZXNvdXJjZSA9IEFyY2hpdmVS
ZXNvdXJjZTo6Y3JlYXRlKGNhY2hlZFJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpLT5tYWtlQ29u
dGlndW91cygpLCBzdWJyZXNvdXJjZVVSTCwgY2FjaGVkUmVzb3VyY2UtPnJlc3BvbnNlKCkpKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICBzdWJyZXNvdXJjZXMuYXBwZW5kKHJlc291cmNlLnJl
bGVhc2VOb25OdWxsKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNo
aXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZl
L2NmL0xlZ2FjeVdlYkFyY2hpdmUuaAppbmRleCA1YTA3YjEwYjRiZTZmODYyMDExYTc4MmE3ZGVk
MjM2NzU5MjQzNjI2Li4zYzQyMzJlMTZlMjYwZTU1ZmZlYWM2ZmU3MzU1ZWY5ZTU5Yjc1ODkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNo
aXZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJj
aGl2ZS5oCkBAIC00MSw4ICs0MSw4IEBAIHN0cnVjdCBTaW1wbGVSYW5nZTsKIGNsYXNzIExlZ2Fj
eVdlYkFyY2hpdmUgZmluYWwgOiBwdWJsaWMgQXJjaGl2ZSB7CiBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxMZWdh
Y3lXZWJBcmNoaXZlPiBjcmVhdGUoY29uc3QgVVJMJiwgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYp
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gY3Jl
YXRlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGNyZWF0ZShjb25zdCBVUkwmLCBjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxM
ZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoUmVmPEFyY2hpdmVSZXNvdXJjZT4mJiBtYWluUmVzb3Vy
Y2UsIFZlY3RvcjxSZWY8QXJjaGl2ZVJlc291cmNlPj4mJiBzdWJyZXNvdXJjZXMsIFZlY3RvcjxS
ZWY8TGVnYWN5V2ViQXJjaGl2ZT4+JiYgc3ViZnJhbWVBcmNoaXZlcyk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoTm9kZSYsIEZ1bmN0
aW9uPGJvb2woRnJhbWUmKT4mJiBmcmFtZUZpbHRlciA9IHsgfSk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoRnJhbWUmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3Bw
CmluZGV4IGQwMTM5Zjg3YTA2Zjk2OTc4Yjc0NzdlOWY0OTk5YzM0ZWE5Zjg2MjUuLmQ3NTBlM2My
ODI2YTA2ZTgyM2NkNjEzMzhkNTI5NzQ2MWVkNDA4YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcApAQCAtMTA2LDcgKzEw
Niw3IEBAIFJlZjxNSFRNTEFyY2hpdmU+IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKCkKICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBNSFRNTEFyY2hpdmUpOwogfQogCi1SZWZQdHI8TUhUTUxBcmNoaXZl
PiBNSFRNTEFyY2hpdmU6OmNyZWF0ZShjb25zdCBVUkwmIHVybCwgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgZGF0YSkKK1JlZlB0cjxNSFRNTEFyY2hpdmU+IE1IVE1MQXJjaGl2ZTo6Y3JlYXRlKGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhKQogewogICAg
IC8vIEZvciBzZWN1cml0eSByZWFzb25zIHdlIG9ubHkgbG9hZCBNSFRNTCBwYWdlcyBmcm9tIGxv
Y2FsIFVSTHMuCiAgICAgaWYgKCFMZWdhY3lTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxT
Y2hlbWVBc0xvY2FsKHVybC5wcm90b2NvbCgpLnRvU3RyaW5nKCkpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaAppbmRleCAyZGZlODdl
ODJlN2E0ZGNlMGYzNDFjMzYxOTQzYzk5MDIwNWM4ZGIxLi5lZjg3YmJmZDQ4NWIxNGExYjAxNzJk
NjFiNDM2NjE0YTcyN2Y4YmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTEFyY2hpdmUuaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgTUhUTUxBcmNoaXZlIGZpbmFsIDogcHVibGljIEFyY2hp
dmUgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TUhUTUxBcmNoaXZlPiBjcmVhdGUoKTsKLSAg
ICBzdGF0aWMgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gY3JlYXRlKGNvbnN0IFVSTCYsIEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXImKTsKKyAgICBzdGF0aWMgUmVmUHRyPE1IVE1MQXJjaGl2ZT4gY3JlYXRl
KGNvbnN0IFVSTCYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0YXRp
YyBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZ2VuZXJhdGVNSFRNTERhdGEoUGFnZSopOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBh
cnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNl
ci5jcHAKaW5kZXggZTUxODZlZmIwYjRmYTcwY2I2MDkzMWY0ODRlNTAwY2MxMGUwMGJjYi4uZDQ4
ZmNkN2JjM2IyZjFiYjQ3MTM4ZjllYTJhMDk4MDQ1ZjlmYWFlZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MUGFyc2VyLmNwcApAQCAtNTEsNyAr
NTEsNyBAQCBzdGF0aWMgYm9vbCBza2lwTGluZXNVbnRpbEJvdW5kYXJ5Rm91bmQoU2hhcmVkQnVm
ZmVyQ2h1bmtSZWFkZXImIGxpbmVSZWFkZXIsIGNvbgogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
TUhUTUxQYXJzZXI6Ok1IVE1MUGFyc2VyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpCitN
SFRNTFBhcnNlcjo6TUhUTUxQYXJzZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0
YSkKICAgICA6IG1fbGluZVJlYWRlcihkYXRhLCAiXHJcbiIpCiB7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTFBhcnNlci5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxQYXJzZXIuaAppbmRleCAwZDYwNDM0
M2YzZDdhZDE3OGNjMjIwMDNjOTc5YzIyZTUwYTNiOTllLi4xMWI4YmRlYzllMWM0YjFkYzUxNzU1
YjVhZDlhNmY1YzgwMGYyOGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJj
aGl2ZS9taHRtbC9NSFRNTFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNo
aXZlL21odG1sL01IVE1MUGFyc2VyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcjsKIAogY2xhc3MgTUhUTUxQYXJzZXIgewogcHVibGljOgotICAgIGV4cGxp
Y2l0IE1IVE1MUGFyc2VyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKTsKKyAgICBleHBsaWNpdCBN
SFRNTFBhcnNlcihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKik7CiAKICAgICBSZWZQdHI8
TUhUTUxBcmNoaXZlPiBwYXJzZUFyY2hpdmUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCmluZGV4IGRk
ZDBiMWI4OWIxZDg3MmJiNDI3MjdlZTc4ZDhmZDYzOWU0Yjg5NDYuLmU5OWZhNWZjYjJiNzJiMDQz
Zjg2ODk5NTQ4MDg2ZWUwYTBiZTNkMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKQEAgLTQzLDkgKzQz
LDEwIEBAIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZl
c3QoQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxCiB2b2lkIENhY2hlZEFwcGxpY2F0aW9uTWFu
aWZlc3Q6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7Ci0g
ICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGF1dG8gY29u
dGlndW91c0RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOwogICAgICAgICBzZXRFbmNvZGVk
U2l6ZShkYXRhLT5zaXplKCkpOwotICAgICAgICBtX3RleHQgPSBtX2RlY29kZXItPmRlY29kZUFu
ZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICBtX3RleHQgPSBt
X2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGNvbnRpZ3VvdXNEYXRhLT5kYXRhKCksIGRhdGEtPnNp
emUoKSk7CisgICAgICAgIG1fZGF0YSA9IFdURk1vdmUoY29udGlndW91c0RhdGEpOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAgICAgIHNldEVuY29kZWRTaXpl
KDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0
eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxl
U2hlZXQuY3BwCmluZGV4IDM4YTJlMTdmMGQwNmM4YWM5OGRlMjRiMWU1MmI4ZTYwZTkyNDEyMGIu
LjcwYjM4ZjYxZmMwZmYwZWI2MjMyYjQ3MDFmZmI2ODliMGU2MTg2NmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTEw
MCwxMCArMTAwLDExIEBAIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0Qm9keURhdGFGcm9t
KGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVl
dDo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKGRhdGEpIHsKLSAgICAg
ICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgYXV0byBjb250aWd1
b3VzRGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CiAgICAgICAgIHNldEVuY29kZWRTaXpl
KGRhdGEtPnNpemUoKSk7CiAgICAgICAgIC8vIERlY29kZSB0aGUgZGF0YSB0byBmaW5kIG91dCB0
aGUgZW5jb2RpbmcgYW5kIGtlZXAgdGhlIHNoZWV0IHRleHQgYXJvdW5kIGR1cmluZyBjaGVja05v
dGlmeSgpCi0gICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5k
Rmx1c2gobV9kYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgIG1fZGVjb2RlZFNo
ZWV0VGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goY29udGlndW91c0RhdGEtPmRhdGEo
KSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgbV9kYXRhID0gV1RGTW92ZShjb250aWd1b3VzRGF0
YSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKICAgICAgICAgc2V0
RW5jb2RlZFNpemUoMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5j
cHAKaW5kZXggZDJiYzI4MjE0NzljNTlhMjMyM2U0ZjY1Y2Q5NGI2M2I0MjM3MzY0Ni4uMmQ0NTYy
ZGViZjcxYjY1ZTU2YTA2MDRlNzE3NDc1NTVhNGUwNWM4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApAQCAtODcsNyArODcsMTAgQEAgdm9pZCBDYWNoZWRG
b250OjpiZWdpbkxvYWRJZk5lZWRlZChDYWNoZWRSZXNvdXJjZUxvYWRlciYgbG9hZGVyKQogCiBi
b29sIENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmKQog
ewotICAgIHJldHVybiBlbnN1cmVDdXN0b21Gb250RGF0YShtX2RhdGEuZ2V0KCkpOworICAgIGlm
ICghbV9kYXRhKQorICAgICAgICByZXR1cm4gZW5zdXJlQ3VzdG9tRm9udERhdGEobnVsbHB0cik7
CisgICAgQVNTRVJUKGlzPFNoYXJlZEJ1ZmZlcj4obV9kYXRhKSk7CisgICAgcmV0dXJuIGVuc3Vy
ZUN1c3RvbUZvbnREYXRhKG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKS5wdHIoKSk7CiB9CiAKIFN0
cmluZyBDYWNoZWRGb250OjpjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IGE4YzdlODdhMTY0
YjkyYTBjMmI2NzUxZDU4MWNmOGFmNGNiYWU3NjEuLjM2MGMyYjRlYjJjZGRkMTFjYjRjZTBkYThj
ZDQwMjMyYjBkYWU2NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmNwcApAQCAtNDcwLDcgKzQ3MCw3IEBAIGlubGluZSB2b2lkIENhY2hlZEltYWdlOjpjbGVh
ckltYWdlKCkKIAogdm9pZCBDYWNoZWRJbWFnZTo6dXBkYXRlQnVmZmVySW50ZXJuYWwoY29uc3Qg
U2hhcmVkQnVmZmVyJiBkYXRhKQogewotICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMo
KTsKKyAgICBtX2RhdGEgPSAmZGF0YTsKICAgICBzZXRFbmNvZGVkU2l6ZShtX2RhdGEtPnNpemUo
KSk7CiAgICAgY3JlYXRlSW1hZ2UoKTsKIApAQCAtNTQyLDcgKzU0Miw3IEBAIEVuY29kZWREYXRh
U3RhdHVzIENhY2hlZEltYWdlOjp1cGRhdGVJbWFnZURhdGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
CiB7CiAgICAgaWYgKCFtX2ltYWdlIHx8ICFtX2RhdGEpCiAgICAgICAgIHJldHVybiBFbmNvZGVk
RGF0YVN0YXR1czo6RXJyb3I7Ci0gICAgRW5jb2RlZERhdGFTdGF0dXMgcmVzdWx0ID0gbV9pbWFn
ZS0+c2V0RGF0YShtX2RhdGEuZ2V0KCksIGFsbERhdGFSZWNlaXZlZCk7CisgICAgRW5jb2RlZERh
dGFTdGF0dXMgcmVzdWx0ID0gbV9pbWFnZS0+c2V0RGF0YShtX2RhdGEuY29weVJlZigpLCBhbGxE
YXRhUmVjZWl2ZWQpOwogICAgIGRpZFVwZGF0ZUltYWdlRGF0YSgpOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291
cmNlLmNwcAppbmRleCA1NWM0NWJlYmZmNGY0YTRjZjRkZDk3OTc0N2RhZjhmZTRhMjI0MTVjLi44
N2M2NTZkYzhlNzU1NjljYjU0ODc2OGU2YTIyNDI1NzAxNWNmNjY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKQEAgLTQ4LDcgKzQ4
LDcgQEAgQ2FjaGVkUmF3UmVzb3VyY2U6OkNhY2hlZFJhd1Jlc291cmNlKENhY2hlZFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIFR5cGUgdHlwZSwKICAgICBBU1NFUlQoaXNNYWluT3JNZWRpYU9y
SWNvbk9yUmF3UmVzb3VyY2UoKSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0
YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhj
b25zdCBTaGFyZWRCdWZmZXImIGRhdGEpIGNvbnN0CitzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZl
ckRhdGFWaWV3PiBDYWNoZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1
bmsoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkgY29uc3QKIHsKICAgICBzaXpl
X3QgcHJldmlvdXNEYXRhTGVuZ3RoID0gZW5jb2RlZFNpemUoKTsKICAgICBpZiAoZGF0YS5zaXpl
KCkgPD0gcHJldmlvdXNEYXRhTGVuZ3RoKQpAQCAtNjUsMTAgKzY1LDkgQEAgdm9pZCBDYWNoZWRS
YXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRh
dGEpCiAgICAgLy8gV2UgbmVlZCB0byBrZWVwIGEgc3Ryb25nIHJlZmVyZW5jZSB0byBib3RoIHRo
ZSBTaGFyZWRCdWZmZXIgYW5kIHRoZSBjdXJyZW50IENhY2hlZFJhd1Jlc291cmNlIGluc3RhbmNl
CiAgICAgLy8gYXMgbm90aWZ5Q2xpZW50c0RhdGFXYXNSZWNlaXZlZCBjYWxsIG1heSBkZWxldGUg
Ym90aC4KICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVj
dGVkVGhpcyh0aGlzKTsKLSAgICBhdXRvIHByb3RlY3RlZERhdGEgPSBSZWYgeyBkYXRhIH07CiAK
ICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZmZXJpbmdQb2xpY3k6
OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBt
X2RhdGEgPSAmZGF0YTsKIAogICAgIC8vIE5vdGlmeSBjbGllbnRzIG9ubHkgb2YgdGhlIG5ld2x5
IGFwcGVuZGVkIGNvbnRlbnQgc2luY2UgdGhlIGxhc3QgcnVuLgogICAgIGF1dG8gcHJldmlvdXNE
YXRhU2l6ZSA9IGVuY29kZWRTaXplKCk7CkBAIC0xMTIsMTUgKzExMSwxMyBAQCB2b2lkIENhY2hl
ZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
IGRhdGEsIGNvbnN0CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+
IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVy
aW5nUG9saWN5ID0gdGhpcy0+ZGF0YUJ1ZmZlcmluZ1BvbGljeSgpOwogICAgIGlmIChkYXRhQnVm
ZmVyaW5nUG9saWN5ID09IERhdGFCdWZmZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpIHsKKyAgICAg
ICAgbV9kYXRhID0gZGF0YTsKICAgICAgICAgaWYgKGRhdGEpIHsKLSAgICAgICAgICAgIGlmIChk
YXRhICE9IG1fZGF0YS5nZXQoKSkKLSAgICAgICAgICAgICAgICBtX2RhdGEgPSBkYXRhLT5tYWtl
Q29udGlndW91cygpOwogICAgICAgICAgICAgaWYgKGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2Fs
Y3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoKm1fZGF0YSkpIHsKICAgICAgICAgICAgICAgICBz
ZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOwogICAgICAgICAgICAgICAgIG5vdGlmeUNsaWVu
dHNEYXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5jcmVhdGVTaGFyZWRCdWZmZXIoKSk7
CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbV9kYXRhID0gbnVs
bHB0cjsKKyAgICAgICAgfQogICAgIH0KIAogI2lmIFVTRShRVUlDS19MT09LKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAppbmRleCAzNmU0N2Ex
ZGJhMjMxMjhkYzUzMDczYjcwYjVmM2Y4NTM4MDRhZTZhLi45ZGRlMzFiOGRiOWFkMDI1ZmE0NTU2
OTFhYmMxMWJmNmVjZTU5Yzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmF3UmVzb3VyY2UuaApAQCAtNjcsNyArNjcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
c3dpdGNoQ2xpZW50c1RvUmV2YWxpZGF0ZWRSZXNvdXJjZSgpIG92ZXJyaWRlOwogICAgIGJvb2wg
bWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hbGxv
d0VuY29kZWREYXRhUmVwbGFjZW1lbnQ7IH0KIAotICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVm
ZmVyRGF0YVZpZXc+IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IFNoYXJlZEJ1
ZmZlciYpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IGNh
bGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
KSBjb25zdDsKICAgICB2b2lkIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoY29uc3QgU2hh
cmVkQnVmZmVyJik7CiAgICAgCiAjaWYgVVNFKFFVSUNLX0xPT0spCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IDUzNGUwMTJjYzRmYTVkZDJiZTFm
ZDZlZWU1YWE2YWU0ZTVmYWUyMGQuLjgwM2ExNGY1OTEzODMwNWI2NGQyM2JkNmZlMTk3ZWI3YmQ2
MGEzYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5o
CkBAIC0yMTMsNyArMjEzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhckxvYWRlcigpOwog
Ci0gICAgU2hhcmVkQnVmZmVyKiByZXNvdXJjZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0
YS5nZXQoKTsgfQorICAgIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIHJlc291cmNlQnVm
ZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQg
cmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2
aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CkBA
IC0zMzYsNyArMzM2LDcgQEAgcHJvdGVjdGVkOgogICAgIEhhc2hDb3VudGVkU2V0PENhY2hlZFJl
c291cmNlQ2xpZW50Kj4gbV9jbGllbnRzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZXNvdXJjZVJl
cXVlc3Q+IG1fb3JpZ2luYWxSZXF1ZXN0OyAvLyBOZWVkZWQgYnkgUGluZyBsb2Fkcy4KICAgICBS
ZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IG1fbG9hZGVyOwotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IG1fZGF0YTsKKyAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9k
YXRhOwogCiBwcml2YXRlOgogICAgIE1vbm90b25pY1RpbWUgbV9sYXN0RGVjb2RlZEFjY2Vzc1Rp
bWU7IC8vIFVzZWQgYXMgYSAidGhyYXNoIGd1YXJkIiBpbiB0aGUgY2FjaGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKaW5kZXggNjJhMTZlODZiMzIxOTNk
OGU1NmQ2MTkyZjc3ZTliYzZmNDA4ZTliYi4uNWNiODg4NWQ5ODAxZmUwMzc5NmY1OTJlZGYwMDNi
ZDE0MDA4Zjg5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlw
dC5jcHAKQEAgLTU5LDEwICs1OSwxMyBAQCBTdHJpbmdWaWV3IENhY2hlZFNjcmlwdDo6c2NyaXB0
KCkKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKKyAg
ICBBU1NFUlQobV9kYXRhLT5pc0NvbnRpZ3VvdXMoKSk7CisgICAgYXV0byBjb250aWd1b3VzRGF0
YSA9IG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKwogICAgIGlmIChtX2RlY29kaW5nU3RhdGUg
PT0gTmV2ZXJEZWNvZGVkCiAgICAgICAgICYmIFBBTDo6VGV4dEVuY29kaW5nKGVuY29kaW5nKCkp
LmlzQnl0ZUJhc2VkRW5jb2RpbmcoKQogICAgICAgICAmJiBtX2RhdGEtPnNpemUoKQotICAgICAg
ICAmJiBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgp
KSkgeworICAgICAgICAmJiBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoY29udGlndW91c0RhdGEtPmRh
dGEoKSwgbV9kYXRhLT5zaXplKCkpKSB7CiAKICAgICAgICAgbV9kZWNvZGluZ1N0YXRlID0gRGF0
YUFuZERlY29kZWRTdHJpbmdIYXZlU2FtZUJ5dGVzOwogCkBAIC03MCwxNCArNzMsMTQgQEAgU3Ry
aW5nVmlldyBDYWNoZWRTY3JpcHQ6OnNjcmlwdCgpCiAgICAgICAgIHNldERlY29kZWRTaXplKDAp
OwogICAgICAgICBtX2RlY29kZWREYXRhRGVsZXRpb25UaW1lci5zdG9wKCk7CiAKLSAgICAgICAg
bV9zY3JpcHRIYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyht
X2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOworICAgICAgICBtX3NjcmlwdEhhc2ggPSBT
dHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKGNvbnRpZ3VvdXNEYXRhLT5k
YXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKICAgICB9CiAKICAgICBpZiAobV9kZWNvZGluZ1N0YXRl
ID09IERhdGFBbmREZWNvZGVkU3RyaW5nSGF2ZVNhbWVCeXRlcykKLSAgICAgICAgcmV0dXJuIHsg
bV9kYXRhLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2RhdGEtPnNpemUoKSkgfTsK
KyAgICAgICAgcmV0dXJuIHsgY29udGlndW91c0RhdGEtPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KG1fZGF0YS0+c2l6ZSgpKSB9OwogCiAgICAgaWYgKCFtX3NjcmlwdCkgewotICAgICAg
ICBtX3NjcmlwdCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGVu
Y29kZWRTaXplKCkpOworICAgICAgICBtX3NjcmlwdCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1
c2goY29udGlndW91c0RhdGEtPmRhdGEoKSwgZW5jb2RlZFNpemUoKSk7CiAgICAgICAgIEFTU0VS
VCghbV9zY3JpcHRIYXNoIHx8IG1fc2NyaXB0SGFzaCA9PSBtX3NjcmlwdC5pbXBsKCktPmhhc2go
KSk7CiAgICAgICAgIGlmIChtX2RlY29kaW5nU3RhdGUgPT0gTmV2ZXJEZWNvZGVkKQogICAgICAg
ICAgICAgbV9zY3JpcHRIYXNoID0gbV9zY3JpcHQuaW1wbCgpLT5oYXNoKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKaW5kZXgg
ZDJlZmYyZDJkNDBjOTI3NzM4NzU2YzRhOGYwY2JiOTM0M2JlMTBhYi4uMTdlZmQ2YzNmNmVkNmFh
ZWM3ZmI0YTU1YTg3NzkxMzM5ZWM0OTcwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcApAQCAtNjQsOSArNjQsMTAgQEAgU3Ry
aW5nIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmVuY29kaW5nKCkgY29uc3QKIHZvaWQgQ2FjaGVkWFNM
U3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBk
YXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKGRhdGEp
IHsKLSAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgYXV0
byBjb250aWd1b3VzRGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CiAgICAgICAgIHNldEVu
Y29kZWRTaXplKGRhdGEtPnNpemUoKSk7Ci0gICAgICAgIG1fc2hlZXQgPSBtX2RlY29kZXItPmRl
Y29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBlbmNvZGVkU2l6ZSgpKTsKKyAgICAgICAgbV9z
aGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goY29udGlndW91c0RhdGEtPmRhdGEoKSwg
ZW5jb2RlZFNpemUoKSk7CisgICAgICAgIG1fZGF0YSA9IFdURk1vdmUoY29udGlndW91c0RhdGEp
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAgICAgIHNldEVu
Y29kZWRTaXplKDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFs
aXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAppbmRleCAw
MjAwMWFiMzQzMDE4YTczMjU1OTk4ZmM0NzRjZWJmYzQ5ZjhjODQyLi42MTliMTEwMjVkYmVlN2E1
Y2YxN2M5ZjU0NjBhY2NkMzdhMzViYjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2VTZXJpYWxpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxp
emVyLmNwcApAQCAtMjczLDcgKzI3Myw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdl
VG9SZXNvdXJjZXMoQ2FjaGVkSW1hZ2UqIGltYWdlLCBSZW5kZXJFbGVtZW50KiBpbWFnCiAgICAg
aWYgKCFpbWFnZSB8fCBpbWFnZS0+aW1hZ2UoKSA9PSAmSW1hZ2U6Om51bGxJbWFnZSgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gZGF0YSA9
IGltYWdlUmVuZGVyZXIgPyBpbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihpbWFnZVJlbmRlcmVyKS0+
ZGF0YSgpIDogMDsKKyAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gIGRh
dGEgPSBpbWFnZVJlbmRlcmVyID8gaW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoaW1hZ2VSZW5kZXJl
ciktPmRhdGEoKSA6IDA7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICBkYXRhID0gaW1hZ2UtPmlt
YWdlKCktPmRhdGEoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTm93
UGxheWluZ01hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL05vd1BsYXlpbmdNYW5h
Z2VyLmgKaW5kZXggZmM2NmMzNjVhMmYyOWE0Yzc4ZTYwNjE5ZTQ3YTcxYzcyNThkOGZlMy4uMDdk
NTgzMDYwNWJiYzJiOTlkYTM2ZGNjNjlkZjAyZDRmOGUzMDhhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTm93UGxheWluZ01hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Ob3dQbGF5aW5nTWFuYWdlci5oCkBAIC03MCw3ICs3MCw3IEBAIHByaXZhdGU6
CiAgICAgc3RkOjpvcHRpb25hbDxOb3dQbGF5aW5nSW5mbz4gbV9ub3dQbGF5aW5nSW5mbzsKICAg
ICBzdHJ1Y3QgQXJ0d29ya0NhY2hlIHsKICAgICAgICAgU3RyaW5nIHNyYzsKLSAgICAgICAgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGltYWdlRGF0YTsKKyAgICAgICAgUmVmUHRyPGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGltYWdlRGF0YTsKICAgICB9OwogICAgIHN0ZDo6
b3B0aW9uYWw8QXJ0d29ya0NhY2hlPiBtX25vd1BsYXlpbmdJbmZvQXJ0d29yazsKICAgICBib29s
IG1fc2V0QXNOb3dQbGF5aW5nQXBwbGljYXRpb24geyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuaAppbmRleCBjYWVmM2YyNjIwMDMzZGQ4Y2ZmMTU2MjNmMjNjNmI2
YzliNTM0YjM3Li40Yzk4MmE2ZmQ4YTZmNWNiZTcyMDkxNGYzYmUwNTkxM2NiMjU1OWQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaApAQCAtMzA4LDYgKzMwOCw3IEBAIHB1
YmxpYzoKICAgICBTaGFyZWRCdWZmZXJCdWlsZGVyKFNoYXJlZEJ1ZmZlckJ1aWxkZXImJikgPSBk
ZWZhdWx0OwogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIo
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIGV4cGxpY2l0IFNoYXJlZEJ1
ZmZlckJ1aWxkZXIoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IGluaXRp
YWxpemUoV1RGTW92ZShidWZmZXIpKTsgfQorICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxk
ZXIoUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSB7IGFwcGVuZChX
VEZNb3ZlKGJ1ZmZlcikpOyB9CiAgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQnVpbGRlcihSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgOiBTaGFyZWRCdWZmZXJCdWlsZGVy
KFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPnsgV1RGTW92ZShidWZmZXIpIH0pIHsgfQog
ICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckJ1aWxkZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpIHsgaW5pdGlhbGl6ZShXVEZNb3ZlKGJ1ZmZlcikpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAKaW5kZXggOWQwNTVjZTI3
ZDg4YzNkNjJlNWJkMWNkNDZhZDkxZjVjYzQzMWY0OC4uOGZiYTIxNDA2Y2EwNTlhYmE0YjhjMGNj
NjRkNGU2MjlkZWIyNzhmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlckNodW5rUmVhZGVyLmNwcApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICNpZiBFTkFCTEUoTUhUTUwpCiAKLVNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyOjpT
aGFyZWRCdWZmZXJDaHVua1JlYWRlcihGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBidWZmZXIsIGNv
bnN0IFZlY3RvcjxjaGFyPiYgc2VwYXJhdG9yKQorU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXI6OlNo
YXJlZEJ1ZmZlckNodW5rUmVhZGVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGJ1ZmZl
ciwgY29uc3QgVmVjdG9yPGNoYXI+JiBzZXBhcmF0b3IpCiAgICAgOiBtX2l0ZXJhdG9yQ3VycmVu
dChidWZmZXItPmJlZ2luKCkpCiAgICAgLCBtX2l0ZXJhdG9yRW5kKGJ1ZmZlci0+ZW5kKCkpCiAg
ICAgLCBtX3NlZ21lbnQobV9pdGVyYXRvckN1cnJlbnQgIT0gbV9pdGVyYXRvckVuZCA/IG1faXRl
cmF0b3JDdXJyZW50LT5zZWdtZW50LT5kYXRhKCkgOiBudWxscHRyKQpAQCAtNDQsNyArNDQsNyBA
QCBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLAogewogfQogCi1TaGFyZWRCdWZmZXJDaHVua1JlYWRl
cjo6U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVy
LCBjb25zdCBjaGFyKiBzZXBhcmF0b3IpCitTaGFyZWRCdWZmZXJDaHVua1JlYWRlcjo6U2hhcmVk
QnVmZmVyQ2h1bmtSZWFkZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogYnVmZmVyLCBj
b25zdCBjaGFyKiBzZXBhcmF0b3IpCiAgICAgOiBtX2l0ZXJhdG9yQ3VycmVudChidWZmZXItPmJl
Z2luKCkpCiAgICAgLCBtX2l0ZXJhdG9yRW5kKGJ1ZmZlci0+ZW5kKCkpCiAgICAgLCBtX3NlZ21l
bnQobV9pdGVyYXRvckN1cnJlbnQgIT0gbV9pdGVyYXRvckVuZCA/IG1faXRlcmF0b3JDdXJyZW50
LT5zZWdtZW50LT5kYXRhKCkgOiBudWxscHRyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmgKaW5kZXggMWM2NDA4ZDRjNzM2YTFjNGE0NWNl
ZTdiM2Y2OTY1N2JjOWEyNjE1YS4uOGE5ZDRlNWRiNTU1MDFiN2MxMzUwYjE2NDQwYjE4MGE2NmU0
NTIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1
bmtSZWFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVu
a1JlYWRlci5oCkBAIC00MSw4ICs0MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIgewogcHVibGljOgotICAgIFNo
YXJlZEJ1ZmZlckNodW5rUmVhZGVyKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqLCBjb25zdCBWZWN0
b3I8Y2hhcj4mIHNlcGFyYXRvcik7Ci0gICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IGNoYXIqIHNlcGFyYXRvcik7CisgICAgU2hhcmVkQnVm
ZmVyQ2h1bmtSZWFkZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciosIGNvbnN0IFZlY3Rv
cjxjaGFyPiYgc2VwYXJhdG9yKTsKKyAgICBTaGFyZWRCdWZmZXJDaHVua1JlYWRlcihjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiwgY29uc3QgY2hhciogc2VwYXJhdG9yKTsKIAogICAgIHZv
aWQgc2V0U2VwYXJhdG9yKGNvbnN0IFZlY3RvcjxjaGFyPiYpOwogICAgIHZvaWQgc2V0U2VwYXJh
dG9yKGNvbnN0IGNoYXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL05vd1BsYXlpbmdJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9Ob3dQ
bGF5aW5nSW5mby5oCmluZGV4IDFkNjViYzQwM2FkODUyNDNjNjcyNWU3MDQ0OGQ2Y2RhZGNjY2Nl
MWIuLmNkNmEwYWYxYWE4NzJmMmEwOGE3ZjFlNDczYzE1N2QwODhjOTVjMTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL05vd1BsYXlpbmdJbmZvLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vTm93UGxheWluZ0luZm8uaApAQCAtMzYsNyArMzYs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgTm93UGxheWluZ0luZm9BcnR3b3JrIHsK
ICAgICBTdHJpbmcgc3JjOwogICAgIFN0cmluZyBtaW1lVHlwZTsKLSAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gaW1hZ2VEYXRhOworICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBpbWFnZURhdGE7CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTm93
UGxheWluZ0luZm9BcnR3b3JrJiBvdGhlcikgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2UuaAppbmRleCAyZGU0
MTkzNGRhMTk4NzlkNzVjMGRmOGE4OWU2NGU1OTljMjlhZTAzLi45ZTM4ZWVjYTM5NTVhMGI1MTFm
NmJlYTVhNWIxNjE1NTI1OThjMzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1JbnN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlLmgKQEAgLTU0LDcgKzU0LDcgQEAgY2xhc3Mg
Q0RNSW5zdGFuY2VDbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RNSW5zdGFuY2VDbGll
bnQ+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DRE1JbnN0YW5jZUNsaWVudCgpID0gZGVmYXVs
dDsKIAotICAgIHZpcnR1YWwgdm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2Vp
dmVkKGNvbnN0IFN0cmluZyYsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHVucmVxdWVzdGVkSW5pdGlhbGl6YXRpb25EYXRhUmVjZWl2ZWQoY29u
c3QgU3RyaW5nJiwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpID0gMDsKIH07
CiAKIC8vIEphdmFTY3JpcHQncyBoYW5kbGUgdG8gYSBDRE1JbnN0YW5jZSwgbXVzdCBiZSB1c2Vk
IGZyb20gdGhlCkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgdmlydHVh
bCB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25m
aWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3RlbnRT
dGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2VydmVy
Q2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3NDYWxsYmFj
ayYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpID0gMDsKICAg
ICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgUmVmUHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNl
U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5z
dGFuY2VTZXNzaW9uLmgKaW5kZXggZDI1OTIyNWJhOWUwMmE2NGQwY2VjZDYxNTFmZGY5M2Y0ZjI0
NjZhOC4uOGQyNThmYzU0Yjk3NjkyNjM1YjMyNzdkNWYzODc4MzI5OGE0ZDg2MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNz
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5z
dGFuY2VTZXNzaW9uLmgKQEAgLTUwLDkgKzUwLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkNE
TUluc3RhbmNlU2Vzc2lvbkNsaWVudCgpID0gZGVmYXVsdDsKIAogICAgIHVzaW5nIEtleVN0YXR1
cyA9IENETUtleVN0YXR1czsKLSAgICB1c2luZyBLZXlTdGF0dXNWZWN0b3IgPSBWZWN0b3I8c3Rk
OjpwYWlyPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiwgS2V5U3RhdHVzPj47CisgICAgdXNp
bmcgS2V5U3RhdHVzVmVjdG9yID0gVmVjdG9yPHN0ZDo6cGFpcjxSZWY8Y29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4sIEtleVN0YXR1cz4+OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVLZXlT
dGF0dXNlcyhLZXlTdGF0dXNWZWN0b3ImJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVz
c2FnZShDRE1NZXNzYWdlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2Fn
ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSwgUmVm
PGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBzZXNzaW9uSWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB1c2luZyBQ
bGF0Zm9ybURpc3BsYXlJRCA9IHVpbnQzMl90OwogICAgIHZpcnR1YWwgUGxhdGZvcm1EaXNwbGF5
SUQgZGlzcGxheUlEKCkgPSAwOwpAQCAtNzgsMTMgKzc4LDEzIEBAIHB1YmxpYzoKICAgICAgICAg
U3VjY2VlZGVkLAogICAgIH07CiAKLSAgICB1c2luZyBMaWNlbnNlQ2FsbGJhY2sgPSBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UsIGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIFN1Y2Nl
c3NWYWx1ZSBzdWNjZWVkZWQpPjsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGlj
ZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmKSA9IDA7CisgICAgdXNp
bmcgTGljZW5zZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8Y29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwg
Ym9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKT47Cisg
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGlu
aXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgPSAwOwogCiAgICAgdXNpbmcgS2V5U3RhdHVzVmVj
dG9yID0gQ0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50OjpLZXlTdGF0dXNWZWN0b3I7Ci0gICAgdXNp
bmcgTWVzc2FnZSA9IHN0ZDo6cGFpcjxNZXNzYWdlVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+PjsKKyAgICB1c2luZyBNZXNzYWdlID0gc3RkOjpwYWlyPE1lc3NhZ2VUeXBlLCBSZWY8
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+OwogICAgIHVzaW5nIExpY2Vuc2VVcGRhdGVD
YWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBzZXNzaW9uV2FzQ2xvc2VkLCBz
dGQ6Om9wdGlvbmFsPEtleVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2VkS2V5cywgc3RkOjpvcHRpb25h
bDxkb3VibGU+JiYgY2hhbmdlZEV4cGlyYXRpb24sIHN0ZDo6b3B0aW9uYWw8TWVzc2FnZT4mJiBt
ZXNzYWdlLCBTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKT47Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0
ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCwgTGljZW5zZVR5cGUsIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3Bv
bnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJikgPSAwOwogCiAgICAgZW51bSBjbGFzcyBTZXNz
aW9uTG9hZEZhaWx1cmUgOiB1aW50OF90IHsKICAgICAgICAgTm9uZSwKQEAgLTEwMCw3ICsxMDAs
NyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQ2xvc2VTZXNzaW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+OwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpID0gMDsKIAotICAgIHVzaW5n
IFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEtleVN0
YXR1c1ZlY3RvciYmLCBzdGQ6Om9wdGlvbmFsPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4m
JiwgU3VjY2Vzc1ZhbHVlKT47CisgICAgdXNpbmcgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayA9
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoS2V5U3RhdHVzVmVjdG9yJiYsIHN0ZDo6b3B0aW9uYWw8
UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmLCBTdWNjZXNzVmFsdWUpPjsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQs
IExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpID0gMDsKIAogICAgIHZp
cnR1YWwgdm9pZCBzdG9yZVJlY29yZE9mS2V5VXNhZ2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQp
ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlh
L0NETVByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NE
TVByaXZhdGUuaAppbmRleCA1MmE2MTQ4YzgzY2Q1MzkzYzhmODc0ZWQ4NWFkOGJmMjdlNWJlNTBm
Li5mNGNkOWU1Mjk5NjE2NjUxNmY4NDYyM2JlZDFmNDA2ZDQ5MTFjZmM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZS5oCkBAIC03
NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTZXJ2ZXJDZXJ0
aWZpY2F0ZXMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzU2Vzc2lvbnMo
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzSW5pdERhdGEoY29uc3QgQXRv
bVN0cmluZyYsIGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCA9IDA7Ci0gICAg
dmlydHVhbCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVm
UHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcmKSBjb25zdCA9IDA7
CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmNwcAppbmRleCAzMWE5ZmRm
YTAyZDZkMDBjYTI2MTgyNTJkZWQ5MzUzMTNkYzU4YWE5Li45OTdkMzkzNDdkZWNkZGE5NGFlODhj
YjZkNzk3ZWEwNjZiYzVmMzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuY3BwCkBAIC00
MDcsNyArNDA3LDcgQEAgYm9vbCBDRE1Qcml2YXRlQ2xlYXJLZXk6OnN1cHBvcnRzSW5pdERhdGEo
Y29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdAogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETVByaXZhdGVDbGVhcktleTo6
c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkg
Y29uc3QKK1JlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBDRE1Qcml2YXRlQ2xl
YXJLZXk6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVz
cG9uc2UpIGNvbnN0CiB7CiAgICAgLy8gVmFsaWRhdGUgdGhlIHJlc3BvbnNlIGJ1ZmZlciBhcyBh
biBKU09OIG9iamVjdC4KICAgICBpZiAoIUNETVV0aWxpdGllczo6cGFyc2VKU09OT2JqZWN0KHJl
c3BvbnNlKSkKQEAgLTQzMyw3ICs0MzMsNyBAQCB2b2lkIENETUluc3RhbmNlQ2xlYXJLZXk6Omlu
aXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cgogICAg
IGNhbGxiYWNrKHN1Y2NlZWRlZCk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VDbGVhcktleTo6c2V0
U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3ND
YWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZUNsZWFyS2V5OjpzZXRTZXJ2ZXJD
ZXJ0aWZpY2F0ZShSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0Nh
bGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgLy8gUmVqZWN0IHNldHRpbmcgYW55IHNlcnZlciBj
ZXJ0aWZpY2F0ZS4KICAgICBjYWxsYmFjayhGYWlsZWQpOwpAQCAtNDU1LDcgKzQ1NSw3IEBAIFJl
ZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IENETUluc3RhbmNlQ2xlYXJLZXk6OmNyZWF0ZVNlc3Np
b24oKQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXko
KnRoaXMpKTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVxdWVzdExp
Y2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxi
YWNrKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25DbGVhcktleTo6cmVxdWVzdExpY2Vuc2UoTGlj
ZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNr
KQogewogICAgIHN0YXRpYyB1aW50MzJfdCBzX3Nlc3Npb25JZFZhbHVlID0gMDsKICAgICArK3Nf
c2Vzc2lvbklkVmFsdWU7CkBAIC00NzcsNyArNDc3LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Np
b25DbGVhcktleTo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcm
IGkKICAgICAgICAgfSk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xlYXJLZXk6OnVw
ZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYg
Y2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5Ojp1cGRhdGVMaWNlbnNl
KGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVmPGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxi
YWNrKQogewogI2lmIExPR19ESVNBQkxFRAogICAgIC8vIFdlIG9ubHkgdXNlIHRoZSBzZXNpb24g
SUQgZm9yIGRlYnVnIGxvZ2dpbmcuIFRoZSB2ZXJib3NlIHByZXByb2Nlc3NvciBjaGVja3MgYXJl
IGJlY2F1c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNy
eXB0ZWRtZWRpYS9jbGVhcmtleS9DRE1DbGVhcktleS5oCmluZGV4IDllMjdmZTkxMmM0ZGEwNjdm
YjI2Y2FmYmM3ZjZhNjUxZGE0NzUyOGIuLjQ2OGNlNDdkZGJhMjZiYWJlYzJkMDRhZTI4N2NiNDEz
ZjIzNTIxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1l
ZGlhL2NsZWFya2V5L0NETUNsZWFyS2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvY2xlYXJrZXkvQ0RNQ2xlYXJLZXkuaApAQCAtODcsNyArODcsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcygpIGNvbnN0IGZpbmFs
OwogICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3Vw
cG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYpIGNvbnN0IGZpbmFsOwotICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBz
YW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5h
bDsKKyAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNw
b25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CiAgICAgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklkKGNvbnN0IFN0cmluZyYpIGNvbnN0
IGZpbmFsOwogfTsKIApAQCAtOTksNyArOTksNyBAQCBwdWJsaWM6CiAgICAgLy8gQ0RNSW5zdGFu
Y2UKICAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpDbGVhcktleTsgfQogICAgIHZvaWQgaW5p
dGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24m
LCBBbGxvd0Rpc3RpbmN0aXZlSWRlbnRpZmllcnMsIEFsbG93UGVyc2lzdGVudFN0YXRlLCBTdWNj
ZXNzQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOworICAg
IHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYsIFN1Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHNldFN0b3JhZ2VEaXJl
Y3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0o
KSBjb25zdCBmaW5hbDsKICAgICBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNz
aW9uKCkgZmluYWw7CkBAIC0xMDksOCArMTA5LDggQEAgY2xhc3MgQ0RNSW5zdGFuY2VTZXNzaW9u
Q2xlYXJLZXkgZmluYWwgOiBwdWJsaWMgQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHkgewogcHVibGlj
OgogICAgIENETUluc3RhbmNlU2Vzc2lvbkNsZWFyS2V5KENETUluc3RhbmNlQ2xlYXJLZXkmIHBh
cmVudCkKICAgICAgICAgOiBDRE1JbnN0YW5jZVNlc3Npb25Qcm94eShwYXJlbnQpIHsgfQotICAg
IHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VD
YWxsYmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwg
TGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRl
Q2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwg
Y29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQg
dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAg
ICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmLCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2VTZXNzaW9u
KGNvbnN0IFN0cmluZyYsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQg
cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Np
b25EYXRhQ2FsbGJhY2smJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZS5jcHAKaW5kZXggZTMyYTM2YzYwNzYxOTIxNjhjNmEzNzkzMThmNzhhZTE3ODljNDgy
ZS4uNzBkNWQ0MTk0NDI5MGZmNGFmYjljYjU0ZWQ1MmJkYWQ1YzMzMjkxYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIGJv
b2wgSW1hZ2U6OmlzUG9zdFNjcmlwdFJlc291cmNlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNv
bnN0IFVSTCYgdXJsKQogfQogCiAKLUVuY29kZWREYXRhU3RhdHVzIEltYWdlOjpzZXREYXRhKFJl
ZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KQorRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2U6OnNldERhdGEoUmVmUHRyPGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgbV9l
bmNvZGVkSW1hZ2VEYXRhID0gV1RGTW92ZShkYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggNDdlYTk4OWU5NmMzMDA0YWZjMzg4Y2FhN2JhZjcwZDdi
MmM2YmFkZi4uM2IyMzc0NzVhOWY5MzJlYjdlOTBjZGMzOWMwYzllOTVkZTE0OTU1MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBAIC0xMjQsNyArMTI0LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNv
bnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogICAgIHZpcnR1YWwgSW1hZ2VPcmllbnRhdGlv
biBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIEltYWdlT3JpZW50YXRpb246OkZyb21JbWFn
ZTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgRW5jb2RlZERhdGFTdGF0dXMgc2V0RGF0YShSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgRW5jb2RlZERhdGFTdGF0dXMgc2V0RGF0YShSZWZQdHI8Y29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7
CiAgICAgdmlydHVhbCBFbmNvZGVkRGF0YVN0YXR1cyBkYXRhQ2hhbmdlZChib29sIC8qYWxsRGF0
YVJlY2VpdmVkKi8pIHsgcmV0dXJuIEVuY29kZWREYXRhU3RhdHVzOjpVbmtub3duOyB9CiAKICAg
ICB2aXJ0dWFsIFN0cmluZyB1dGkoKSBjb25zdCB7IHJldHVybiBTdHJpbmcoKTsgfSAvLyBudWxs
IHN0cmluZyBpZiB1bmtub3duCkBAIC0xMzMsNyArMTMzLDYgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShib29sIGRlc3Ryb3lBbGwgPSB0cnVlKSA9IDA7
CiAKLSAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKCkgeyByZXR1cm4gbV9lbmNvZGVk
SW1hZ2VEYXRhLmdldCgpOyB9CiAgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fZW5jb2RlZEltYWdlRGF0YS5nZXQoKTsgfQogCiAgICAgdmly
dHVhbCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSgpOwpAQCAtMjA5LDcgKzIwOCw3
IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIENvbG9yIHNpbmdsZVBpeGVsU29saWRDb2xvcigp
IGNvbnN0IHsgcmV0dXJuIENvbG9yKCk7IH0KIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gbV9lbmNvZGVkSW1hZ2VEYXRhOworICAgIFJlZlB0cjxjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtX2VuY29kZWRJbWFnZURhdGE7CiAgICAgSW1hZ2VPYnNl
cnZlciogbV9pbWFnZU9ic2VydmVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUaW1lcj4gbV9hbmlt
YXRpb25TdGFydFRpbWVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZURlY29kZXIuY3BwCmluZGV4IDQwYTBlNmNmMDM5NzJmYjFjYzcxYjJkMjgzMGY5
NzFlMDBlNTk3MDguLjA1M2VmNjJjNThkZjNjZDI5MDBkOWUxMDRlYTk3YjAzOWQzMGNmMTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmNw
cApAQCAtODAsNyArODAsNyBAQCB2b2lkIEltYWdlRGVjb2Rlcjo6Y2xlYXJGYWN0b3JpZXMoKQog
fQogI2VuZGlmCiAKLVJlZlB0cjxJbWFnZURlY29kZXI+IEltYWdlRGVjb2Rlcjo6Y3JlYXRlKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhh
T3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxJbWFnZURlY29kZXI+IEltYWdlRGVjb2Rlcjo6Y3Jl
YXRlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
biBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICBVTlVTRURfUEFSQU0obWltZVR5
cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rl
ci5oCmluZGV4IDVhYWUzY2M5MTFjNjA1Zjc3MmIwNTdkMDFlZGJiYjgxMTI1ZmIyNTMuLjY5MmM3
MjQxMGQwMTNlYTIzZDQzOWIzYzc1NmFjZWMwYTU0NWQ0NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oCkBAIC00Miw3ICs0Miw3IEBAIGNs
YXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBJbWFnZURlY29kZXIgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW1hZ2VEZWNvZGVyPiB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXI+IGNyZWF0
ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFP
cHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBzdGF0aWMgUmVmUHRyPElt
YWdlRGVjb2Rlcj4gY3JlYXRlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
OwogICAgIHZpcnR1YWwgfkltYWdlRGVjb2RlcigpID0gZGVmYXVsdDsKIAogICAgIGVudW0gY2xh
c3MgTWVkaWFUeXBlIHsKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykKICAgICB1c2luZyBTdXBwb3J0c01lZGlhVHlwZUZ1bmMgPSBGdW5jdGlvbjxib29s
KE1lZGlhVHlwZSk+OwogICAgIHVzaW5nIENhbkRlY29kZVR5cGVGdW5jID0gRnVuY3Rpb248Ym9v
bChjb25zdCBTdHJpbmcmKT47Ci0gICAgdXNpbmcgQ3JlYXRlSW1hZ2VEZWNvZGVyRnVuYyA9IEZ1
bmN0aW9uPFJlZlB0cjxJbWFnZURlY29kZXI+KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImLCBjb25z
dCBTdHJpbmcmLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pPjsKKyAg
ICB1c2luZyBDcmVhdGVJbWFnZURlY29kZXJGdW5jID0gRnVuY3Rpb248UmVmUHRyPEltYWdlRGVj
b2Rlcj4oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYsIEFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik+OwogCiAgICAgc3RydWN0IEltYWdl
RGVjb2RlckZhY3RvcnkgewogICAgICAgICBTdXBwb3J0c01lZGlhVHlwZUZ1bmMgc3VwcG9ydHNN
ZWRpYVR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNv
dXJjZS5jcHAKaW5kZXggZjJjOTY0MGQ0NmQzYTkzNTYxMTRmMzNhYjE0MDUyYzdmZWMyNzc4Yy4u
NTQ1N2JkNWFiMzZmYTdkNDFkMDNkNjFiOTVkZDM0NGE0MzVkYWY1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtNjcsNyArNjcs
NyBAQCBJbWFnZVNvdXJjZTo6fkltYWdlU291cmNlKCkKICAgICBBU1NFUlQoJm1fcnVuTG9vcCA9
PSAmUnVuTG9vcDo6Y3VycmVudCgpKTsKIH0KIAotYm9vbCBJbWFnZVNvdXJjZTo6ZW5zdXJlRGVj
b2RlckF2YWlsYWJsZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQorYm9vbCBJbWFnZVNv
dXJjZTo6ZW5zdXJlRGVjb2RlckF2YWlsYWJsZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiBkYXRhKQogewogICAgIGlmICghZGF0YSB8fCBpc0RlY29kZXJBdmFpbGFibGUoKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CkBAIC05MSw3ICs5MSw3IEBAIGJvb2wgSW1hZ2VTb3VyY2U6OmVuc3Vy
ZURlY29kZXJBdmFpbGFibGUoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotdm9pZCBJbWFnZVNvdXJjZTo6c2V0RGF0YShGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkKK3ZvaWQgSW1hZ2VTb3VyY2U6OnNl
dERhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCiB7CiAgICAgaWYgKCFkYXRhIHx8ICFlbnN1cmVEZWNvZGVyQXZhaWxhYmxlKGRhdGEp
KQogICAgICAgICByZXR1cm47CkBAIC05OSwxMyArOTksMTMgQEAgdm9pZCBJbWFnZVNvdXJjZTo6
c2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZl
ZCkKICAgICBtX2RlY29kZXItPnNldERhdGEoKmRhdGEsIGFsbERhdGFSZWNlaXZlZCk7CiB9CiAK
LXZvaWQgSW1hZ2VTb3VyY2U6OnJlc2V0RGF0YShGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRh
KQordm9pZCBJbWFnZVNvdXJjZTo6cmVzZXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXIqIGRhdGEpCiB7CiAgICAgbV9kZWNvZGVyID0gbnVsbHB0cjsKICAgICBzZXREYXRhKGRhdGEs
IGlzQWxsRGF0YVJlY2VpdmVkKCkpOwogfQogCi1FbmNvZGVkRGF0YVN0YXR1cyBJbWFnZVNvdXJj
ZTo6ZGF0YUNoYW5nZWQoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpCitFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZVNvdXJjZTo6ZGF0YUNoYW5nZWQoY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7
CiAgICAgc2V0RGF0YShkYXRhLCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIGNsZWFyTWV0YWRhdGEo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291
cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCmlu
ZGV4IGY5ODE0MTdmMjRlYmM3ZjJkYmQ1NzNkYWUwZTU5MjU5ODk0NGU2NmEuLjgyOWUwNmZiODll
NTU4N2E4ZjUyNGE2OWUzY2IyODM5MDZhMjAyYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApAQCAtNTYsOSArNTYsOSBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlU291cmNlKFdURk1vdmUobmF0aXZlSW1h
Z2UpKSk7CiAgICAgfQogCi0gICAgdm9pZCBzZXREYXRhKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIq
IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAgICB2b2lkIHJlc2V0RGF0YShGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBkYXRhKTsKLSAgICBFbmNvZGVkRGF0YVN0YXR1cyBkYXRhQ2hhbmdl
ZChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7Cisg
ICAgdm9pZCBzZXREYXRhKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKTsKKyAgICB2b2lkIHJlc2V0RGF0YShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKiBkYXRhKTsKKyAgICBFbmNvZGVkRGF0YVN0YXR1cyBkYXRhQ2hhbmdlZChjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CiAg
ICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpOwogCiAgICAgdW5zaWduZWQgZGVjb2RlZFNpemUo
KSBjb25zdCB7IHJldHVybiBtX2RlY29kZWRTaXplOyB9CkBAIC0xNTEsNyArMTUxLDcgQEAgcHJp
dmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIFQgZmlyc3RGcmFtZU1ldGFkYXRh
Q2FjaGVJZk5lZWRlZChUJiBjYWNoZWRWYWx1ZSwgTWV0YWRhdGFUeXBlLCBUIChJbWFnZUZyYW1l
OjoqZnVuY3RvcikoKSBjb25zdCwgSW1hZ2VGcmFtZTo6Q2FjaGluZywgY29uc3Qgc3RkOjpvcHRp
b25hbDxTdWJzYW1wbGluZ0xldmVsPiYgPSB7IH0pOwogCi0gICAgYm9vbCBlbnN1cmVEZWNvZGVy
QXZhaWxhYmxlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEpOworICAgIGJvb2wgZW5zdXJl
RGVjb2RlckF2YWlsYWJsZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKTsKICAg
ICBib29sIGlzRGVjb2RlckF2YWlsYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2RlcjsgfQog
ICAgIHZvaWQgZGVzdHJveURlY29kZWREYXRhKHNpemVfdCBmcmFtZUNvdW50LCBzaXplX3QgZXhj
bHVkZUZyYW1lKTsKICAgICB2b2lkIGRlY29kZWRTaXplQ2hhbmdlZChsb25nIGxvbmcgZGVjb2Rl
ZFNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1GYWlyUGxheVN0cmVhbWluZy5jcHAKaW5kZXgg
OGIwNGY5YmU5NmMzNmUwYTI2MjE4MGEyNWVhMzc0NTk2MmIzZDdkNS4uNzk4YmU4NGIxOWViYTlj
N2MyZGJhODNjNGQwMTIyOWI5MTFlZmQyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQbGF5U3RyZWFtaW5nLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBs
YXlTdHJlYW1pbmcuY3BwCkBAIC04Niw3ICs4Niw3IEBAIGNvbnN0IEF0b21TdHJpbmcmIENETVBy
aXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2tkTmFtZSgpCiAgICAgcmV0dXJuIHNrZDsKIH0KIAot
c3RhdGljIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGV4dHJhY3RTaW5mRGF0
YShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCitzdGF0aWMgVmVjdG9yPFJl
Zjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gZXh0cmFjdFNpbmZEYXRhKGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAvLyBKU09OIG9mIHRoZSBmb3Jt
YXQ6ICJ7IHNpbmY6IFsgPGJhc2U2NC1lbmNvZGVkLXN0cmluZz4gXSB9IgogICAgIGlmIChidWZm
ZXIuc2l6ZSgpID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQpAQCAtMTA1
LDcgKzEwNSw3IEBAIHN0YXRpYyBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBl
eHRyYWN0U2luZkRhdGEoY29uc3QgRnJhZ21lbnRlZFNoYXJlCiAgICAgaWYgKCFzaW5mQXJyYXkp
CiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+PiBzaW5mczsKKyAgICBWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+PiBzaW5mczsKICAgICBzaW5mcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpbmZBcnJheS0+
bGVuZ3RoKCkpOwogCiAgICAgZm9yIChhdXRvJiB2YWx1ZSA6ICpzaW5mQXJyYXkpIHsKQEAgLTE3
MCw5ICsxNzAsOSBAQCBzdGF0aWMgU2NoZW1lQW5kS2V5UmVzdWx0IGV4dHJhY3RTY2hlbWVBbmRL
ZXlJZEZyb21TaW5mKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdQogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+
IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NpbmYoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPGNv
bnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5n
OjpleHRyYWN0S2V5SURzU2luZihjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiB7Ci0gICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4ga2V5SURzOworICAg
IFZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKICAgICBh
dXRvIHJlc3VsdHMgPSBleHRyYWN0U2NoZW1lQW5kS2V5SWRGcm9tU2luZihidWZmZXIpOwogCiAg
ICAgZm9yIChhdXRvJiByZXN1bHQgOiByZXN1bHRzKSB7CkBAIC0xODMsNyArMTgzLDcgQEAgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gQ0RNUHJpdmF0
ZUZhaXJQbGF5U3RyZWFtaW5nOjoKICAgICByZXR1cm4ga2V5SURzOwogfQogCi1SZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6
ZVNpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQorUmVmUHRyPGNvbnN0
IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6c2Fu
aXRpemVTaW5mKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKICAgICAv
LyBDb21tb24gU0lORiBCb3ggRm9ybWF0CiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CkBAIC0x
OTEsMTcgKzE5MSwxNyBAQCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0
ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNpbmYoY29uc3QgRgogICAgIHJldHVybiBidWZm
ZXIuY29weSgpOwogfQogCi1SZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0
ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNrZChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIpCitSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJp
dmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVNrZChjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJiBidWZmZXIpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGJ1ZmZlcik7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKICAgICByZXR1cm4gYnVmZmVyLmNvcHkoKTsKIH0KIAotc3RkOjpvcHRpb25h
bDxWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gQ0RNUHJpdmF0ZUZhaXJQbGF5
U3RyZWFtaW5nOjpleHRyYWN0S2V5SURzU2tkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj4+IENETVByaXZhdGVGYWlyUGxheVN0cmVhbWluZzo6ZXh0cmFjdEtleUlEc1NrZChj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7CiAgICAgLy8gSW4gdGhlICdz
a2QnIHNjaGVtZSwgdGhlIGluaXQgZGF0YSBpcyB0aGUga2V5IElELgotICAgIFZlY3RvcjxSZWY8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IGtleUlEczsKKyAgICBWZWN0b3I8UmVmPGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CiAgICAga2V5SURzLmFwcGVuZChidWZmZXIu
Y29weSgpKTsKICAgICByZXR1cm4ga2V5SURzOwogfQpAQCAtNDIzLDcgKzQyMyw3IEBAIGJvb2wg
Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21T
dHJpbmcmIGluaXREYXRhVHlwCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1SZWZQdHI8RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpzYW5pdGl6ZVJl
c3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAorUmVm
UHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IENETVByaXZhdGVGYWlyUGxheVN0cmVh
bWluZzo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNw
b25zZSkgY29uc3QKIHsKICAgICByZXR1cm4gcmVzcG9uc2UuY29weSgpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETUZhaXJQ
bGF5U3RyZWFtaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaAppbmRleCAzMTdiYjhkNTdlODZjMDYyMTRlMGI0
MDU5ZGRmNGY4ODA3Yzc0YzZiLi42ZDhjMjg0ZGYwMzFkMWQ3OTQxNjdjYTE1YTE1NWJlMDc3YTQ5
MGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNRmFpclBsYXlTdHJlYW1pbmcuaApAQCAtNzIsMTYg
KzcyLDE2IEBAIHB1YmxpYzoKICAgICBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
KSBjb25zdCBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNz
aW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBzdGF0aWMgY29uc3Qg
QXRvbVN0cmluZyYgc2luZk5hbWUoKTsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gZXh0cmFjdEtleUlEc1NpbmYoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpOwotICAgIHN0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gc2FuaXRpemVTaW5mKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKKyAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+Pj4gZXh0cmFjdEtleUlEc1NpbmYoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYp
OworICAgIHN0YXRpYyBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRp
emVTaW5mKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0YXRpYyBjb25z
dCBBdG9tU3RyaW5nJiBza2ROYW1lKCk7Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4+IGV4dHJhY3RLZXlJRHNTa2QoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYpOwotICAgIHN0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gc2FuaXRpemVTa2QoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpOworICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4+PiBleHRyYWN0S2V5SURzU2tkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsK
KyAgICBzdGF0aWMgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXpl
U2tkKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKTsKIAogICAgIHN0YXRpYyBjb25zdCBW
ZWN0b3I8Rm91ckNDPiYgdmFsaWRGYWlyUGxheVN0cmVhbWluZ1NjaGVtZXMoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDLmgKaW5kZXggNTZiNThjMjVhMjg3MDlmYjM4MjIxODM5ZTU1YmFlNDVlZDkz
Y2Y2Mi4uMzkxZGFhOGViMmNkMTEzMzgxMmUyZDU2ZWQyZjNiOGJlOThjZmZhNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RN
SW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQy5oCkBAIC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICBJbXBsZW1lbnRh
dGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1wbGVt
ZW50YXRpb25UeXBlOjpGYWlyUGxheVN0cmVhbWluZzsgfQogCiAgICAgdm9pZCBpbml0aWFsaXpl
V2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYsIEFsbG93
RGlzdGluY3RpdmVJZGVudGlmaWVycywgQWxsb3dQZXJzaXN0ZW50U3RhdGUsIFN1Y2Nlc3NDYWxs
YmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBz
ZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiwg
U3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgc2V0U3RvcmFnZURpcmVjdG9yeShj
b25zdCBTdHJpbmcmKSBmaW5hbDsKICAgICBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVh
dGVTZXNzaW9uKCkgZmluYWw7CiAgICAgdm9pZCBzZXRDbGllbnQoV2Vha1B0cjxDRE1JbnN0YW5j
ZUNsaWVudD4mJikgZmluYWw7CkBAIC05NCwxMCArOTQsMTAgQEAgcHVibGljOgogCiAgICAgTlNV
UkwgKnN0b3JhZ2VVUkwoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2VVUkwuZ2V0KCk7IH0KICAg
ICBib29sIHBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQoKSBjb25zdCB7IHJldHVybiBtX3BlcnNpc3Rl
bnRTdGF0ZUFsbG93ZWQ7IH0KLSAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBzZXJ2ZXJDZXJ0
aWZpY2F0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmVyQ2VydGlmaWNhdGUuZ2V0KCk7IH0KKyAg
ICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBzZXJ2ZXJDZXJ0aWZpY2F0ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2VydmVyQ2VydGlmaWNhdGUuZ2V0KCk7IH0KICAgICBBVkNvbnRlbnRLZXlT
ZXNzaW9uKiBjb250ZW50S2V5U2Vzc2lvbigpOwogCi0gICAgUmV0YWluUHRyPEFWQ29udGVudEtl
eVJlcXVlc3Q+IHRha2VVbmV4cGVjdGVkS2V5UmVxdWVzdEZvckluaXRpYWxpemF0aW9uRGF0YShj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGlu
aXREYXRhKTsKKyAgICBSZXRhaW5QdHI8QVZDb250ZW50S2V5UmVxdWVzdD4gdGFrZVVuZXhwZWN0
ZWRLZXlSZXF1ZXN0Rm9ySW5pdGlhbGl6YXRpb25EYXRhKGNvbnN0IEF0b21TdHJpbmcmIGluaXRE
YXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5pdERhdGEpOwogCiAgICAg
Ly8gQVZDb250ZW50S2V5U2Vzc2lvbkRlbGVnYXRlQ2xpZW50CiAgICAgdm9pZCBkaWRQcm92aWRl
UmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0KikgZmluYWw7CkBAIC0xMTIsNyArMTEyLDcgQEAg
cHVibGljOgogICAgIHZvaWQgb3V0cHV0T2JzY3VyZWREdWVUb0luc3VmZmljaWVudEV4dGVybmFs
UHJvdGVjdGlvbkNoYW5nZWQoYm9vbCkgZmluYWw7CiAgICAgdm9pZCBleHRlcm5hbFByb3RlY3Rp
b25TdGF0dXNEaWRDaGFuZ2VGb3JDb250ZW50S2V5UmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0
KikgZmluYWw7CiAKLSAgICB1c2luZyBLZXlzID0gVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj47CisgICAgdXNpbmcgS2V5cyA9IFZlY3RvcjxSZWY8Y29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+OwogICAgIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQyogc2Vzc2lvbkZvcktleUlEcyhjb25zdCBLZXlzJikgY29uc3Q7CiAgICAgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKiBzZXNzaW9uRm9yR3JvdXAoQVZDb250
ZW50S2V5UmVwb3J0R3JvdXAqKSBjb25zdDsKICAgICBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakMqIHNlc3Npb25Gb3JSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3Qq
KSBjb25zdDsKQEAgLTEyOSw3ICsxMjksNyBAQCBwcml2YXRlOgogICAgIFdlYWtQdHI8Q0RNSW5z
dGFuY2VDbGllbnQ+IG1fY2xpZW50OwogICAgIFJldGFpblB0cjxBVkNvbnRlbnRLZXlTZXNzaW9u
PiBtX3Nlc3Npb247CiAgICAgUmV0YWluUHRyPFdlYkNvcmVGUFNDb250ZW50S2V5U2Vzc2lvbkRl
bGVnYXRlPiBtX2RlbGVnYXRlOwotICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBt
X3NlcnZlckNlcnRpZmljYXRlOworICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBtX3NlcnZlckNlcnRpZmljYXRlOwogICAgIGJvb2wgbV9wZXJzaXN0ZW50U3RhdGVBbGxv
d2VkIHsgdHJ1ZSB9OwogICAgIFJldGFpblB0cjxOU1VSTD4gbV9zdG9yYWdlVVJMOwogICAgIFZl
Y3RvcjxXZWFrUHRyPENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQz4+
IG1fc2Vzc2lvbnM7CkBAIC0xNTAsOCArMTUwLDggQEAgcHVibGljOgogI2VuZGlmCiAKICAgICAv
LyBDRE1JbnN0YW5jZVNlc3Npb24KLSAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBl
LCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRh
dGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgcmVx
dWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwg
UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxs
YmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGlj
ZW5zZVR5cGUsIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBk
YXRlQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5h
bDsKICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25DYWxs
YmFjayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYs
IExpY2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQy5tbQppbmRleCBjZmUwNDhhOTM4YzA1ZGY3NDVjNzE2MzU2YWQxYjNiOTBh
NTllYjc4Li4wZTY5NjdjOGJkMDk1OWU4OGI5YTI5MWJiOTJmYzk0YzJkN2E4NDljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQy5tbQpAQCAtMjY2LDcgKzI2Niw3IEBAIEFWQ29udGVudEtleVNlc3Np
b24qIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpjb250ZW50S2V5U2Vzc2lv
bigpCiAgICAgcmV0dXJuIG1fc2Vzc2lvbi5nZXQoKTsKIH0KIAotUmV0YWluUHRyPEFWQ29udGVu
dEtleVJlcXVlc3Q+IENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjp0YWtlVW5l
eHBlY3RlZEtleVJlcXVlc3RGb3JJbml0aWFsaXphdGlvbkRhdGEoY29uc3QgQXRvbVN0cmluZyYg
aW5pdERhdGFUeXBlLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBpbml0RGF0YSkKK1JldGFpblB0
cjxBVkNvbnRlbnRLZXlSZXF1ZXN0PiBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6dGFrZVVuZXhwZWN0ZWRLZXlSZXF1ZXN0Rm9ySW5pdGlhbGl6YXRpb25EYXRhKGNvbnN0IEF0
b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgaW5p
dERhdGEpCiB7CiAgICAgZm9yIChhdXRvIHJlcXVlc3RJdGVyID0gbV91bmV4cGVjdGVkS2V5UmVx
dWVzdHMuYmVnaW4oKTsgcmVxdWVzdEl0ZXIgIT0gbV91bmV4cGVjdGVkS2V5UmVxdWVzdHMuZW5k
KCk7ICsrcmVxdWVzdEl0ZXIpIHsKICAgICAgICAgYXV0byYgcmVxdWVzdCA9ICpyZXF1ZXN0SXRl
cjsKQEAgLTM4MCw3ICszODAsNyBAQCB2b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjppbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgQ0RNSwogICAgIGNhbGxi
YWNrKGluaXRpYWxpemUoKSk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OnNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIHNlcnZlckNlcnRpZmljYXRlLCBTdWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQg
Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNldFNlcnZlckNlcnRpZmljYXRl
KFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHNlcnZlckNlcnRpZmljYXRlLCBT
dWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBERUJVR19MT0dfSUZfUE9TU0lCTEUo
TE9HSURFTlRJRklFUik7CiAgICAgbV9zZXJ2ZXJDZXJ0aWZpY2F0ZSA9IFdURk1vdmUoc2VydmVy
Q2VydGlmaWNhdGUpOwpAQCAtNTg0LDggKzU4NCw4IEBAIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQyogQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
CiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBhdXRvIHNlc3Npb25LZXlzID0gc2Vz
c2lvbkludGVyZmFjZS0+a2V5SURzKCk7Ci0gICAgICAgIGlmIChhbnlPZihzZXNzaW9uS2V5cywg
WyZdKGNvbnN0IFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgc2Vzc2lvbktleSkgewotICAg
ICAgICAgICAgcmV0dXJuIGtleUlEcy5maW5kSWYoWyZdKGNvbnN0IFJlZjxGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYga2V5SUQpIHsKKyAgICAgICAgaWYgKGFueU9mKHNlc3Npb25LZXlzLCBbJl0o
Y29uc3QgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBzZXNzaW9uS2V5KSB7Cisg
ICAgICAgICAgICByZXR1cm4ga2V5SURzLmZpbmRJZihbJl0oY29uc3QgUmVmPGNvbnN0IEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+JiBrZXlJRCkgewogICAgICAgICAgICAgICAgIHJldHVybiBrZXlJ
RC5nZXQoKSA9PSBzZXNzaW9uS2V5LmdldCgpOwogICAgICAgICAgICAgfSkgIT0gbm90Rm91bmQ7
CiAgICAgICAgIH0pKQpAQCAtNjcyLDcgKzY3Miw3IEBAIEtleXMgQ0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjprZXlJRHMoKQogICAgIHJldHVybiBrZXlJRHM7CiB9
CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpyZXF1
ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXRvbVN0cmluZyYgaW5p
dERhdGFUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5z
ZUNhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNv
bnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIGlm
ICghaXNMaWNlbnNlVHlwZVN1cHBvcnRlZChsaWNlbnNlVHlwZSkpIHsKICAgICAgICAgREVCVUdf
TE9HX0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIsICIgZmFsc2UsIGxpY2Vuc2VUeXBlIFwiIiwg
bGljZW5zZVR5cGUsICJcIiBub3Qgc3VwcG9ydGVkIik7CkBAIC03NTMsNyArNzUzLDcgQEAgc3Rh
dGljIGJvb2wgaXNFcXVhbChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25z
dCBTdHJpbmcmIHZhbHVlKQogICAgIHJldHVybiBzdHJpbmdPckV4Y2VwdGlvbi5yZXR1cm5WYWx1
ZSgpID09IHZhbHVlOwogfQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVm
PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2VEYXRhLCBMaWNlbnNlVXBkYXRlQ2Fs
bGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjp1cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZURhdGEsIExpY2Vuc2VVcGRh
dGVDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIGlmICghbV9leHBpcmVkU2Vzc2lvbnMuaXNF
bXB0eSgpICYmIGlzRXF1YWwocmVzcG9uc2VEYXRhLCAiYWNrbm93bGVkZ2VkIl9zKSkgewogICAg
ICAgICBhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCk7
CkBAIC04NTUsNyArODU1LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGkKICAgICAgICAgICAg
IGF1dG8ga2V5SUQgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKCprZXlJRFZlY3Rvcikp
OwogICAgICAgICAgICAgYXV0byBmb3VuZEluZGV4ID0gbV9jdXJyZW50UmVxdWVzdC52YWx1ZSgp
LnJlcXVlc3RzLmZpbmRJZihbJl0gKGF1dG8mIHJlcXVlc3QpIHsKICAgICAgICAgICAgICAgICBh
dXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdC5nZXQoKSk7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIGtleUlEcy5maW5kSWYoWyZdKGNvbnN0IFJlZjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYgaWQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4ga2V5SURzLmZpbmRJZihbJl0o
Y29uc3QgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBpZCkgewogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gaWQuZ2V0KCkgPT0ga2V5SUQuZ2V0KCk7CiAgICAgICAgICAgICAg
ICAgfSkgIT0gbm90Rm91bmQ7CiAgICAgICAgICAgICB9KTsKQEAgLTExNTMsNyArMTE1Myw3IEBA
IHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92
aWRlUmVxdWVzdHMoVmVjdG9yPFJldGFpCiAgICAgaWYgKGF1dG8qIGNlcnRpZmljYXRlID0gbV9p
bnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkKICAgICAgICAgYXBwSWRlbnRpZmllciA9IGNl
cnRpZmljYXRlLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEoKTsKIAotICAgIHVzaW5n
IFJlcXVlc3RzRGF0YSA9IFZlY3RvcjxzdGQ6OnBhaXI8UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+LCBSZXRhaW5QdHI8TlNEYXRhPj4+OworICAgIHVzaW5nIFJlcXVlc3RzRGF0YSA9IFZl
Y3RvcjxzdGQ6OnBhaXI8UmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+LCBSZXRh
aW5QdHI8TlNEYXRhPj4+OwogICAgIHN0cnVjdCBDYWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7CiAgICAgICAg
IHVzaW5nIENhbGxiYWNrRnVuY3Rpb24gPSBGdW5jdGlvbjx2b2lkKFJlcXVlc3RzRGF0YSYmKT47
CiAgICAgICAgIHN0YXRpYyBSZWZQdHI8Q2FsbGJhY2tBZ2dyZWdhdG9yPiBjcmVhdGUoQ2FsbGJh
Y2tGdW5jdGlvbiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMTIwOSw3ICsxMjA5LDcgQEAgdm9p
ZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRpZFByb3ZpZGVS
ZXF1ZXN0cyhWZWN0b3I8UmV0YWkKICAgICBAdHJ5IHsKICAgICAgICAgZm9yIChhdXRvIHJlcXVl
c3QgOiBtX2N1cnJlbnRSZXF1ZXN0LnZhbHVlKCkucmVxdWVzdHMpIHsKICAgICAgICAgICAgIGF1
dG8ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0LmdldCgpKTsKLSAgICAgICAgICAg
IFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBrZXlJRCA9IFdURk1vdmUoa2V5SURzLmZp
cnN0KCkpOworICAgICAgICAgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
IGtleUlEID0gV1RGTW92ZShrZXlJRHMuZmlyc3QoKSk7CiAgICAgICAgICAgICBhdXRvIGNvbnRl
bnRJZGVudGlmaWVyID0ga2V5SUQtPm1ha2VDb250aWd1b3VzKCktPmNyZWF0ZU5TRGF0YSgpOwog
ICAgICAgICAgICAgW3JlcXVlc3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZv
ckFwcDphcHBJZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlm
aWVyLmdldCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOltrZXlJRCA9IFdURk1vdmUo
a2V5SUQpLCBhZ2dyZWdhdG9yXSAoTlNEYXRhICpjb250ZW50S2V5UmVxdWVzdERhdGEsIE5TRXJy
b3IgKikgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChba2V5SUQg
PSBXVEZNb3ZlKGtleUlEKSwgYWdncmVnYXRvciA9IFdURk1vdmUoYWdncmVnYXRvciksIGNvbnRl
bnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSAoKSBt
dXRhYmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDQxZGVlYzc3NWYyMDk5MTlkOWYz
NjY0ZTc3YjMzMTFiYzA3ZjQxNmEuLjE2YTQ2MmYyMzc4NDk2YTg0MDBkOTViYTlmMjVjNWE2MGI4
MjA3MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMjg4MCw3ICsyODgwLDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjphdHRlbXB0VG9EZWNyeXB0V2l0
aEluc3RhbmNlKENETUluc3RhbmMKICAgICBpZiAoIW1fa2V5SUQgfHwgIW1fY2RtSW5zdGFuY2Up
CiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gaW5zdGFuY2VTZXNzaW9uID0gbV9jZG1JbnN0
YW5jZS0+c2Vzc2lvbkZvcktleUlEcyhWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
Pjo6ZnJvbSgqbV9rZXlJRCkpOworICAgIGF1dG8gaW5zdGFuY2VTZXNzaW9uID0gbV9jZG1JbnN0
YW5jZS0+c2Vzc2lvbkZvcktleUlEcyhWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+Pjo6ZnJvbSgqbV9rZXlJRCkpOwogICAgIGlmICghaW5zdGFuY2VTZXNzaW9uKQogICAg
ICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQy5oCmluZGV4IDc1NGIxZTJlZWMwMmRmMzM5NWU1Y2RiNWMwN2Y4ZTg4
YTkzNWNkMDguLmU2MDBiMTZjMjk4ZTViMjlmMGNlZjkwNDc4NjgwYzY4ZWU1Yzc0YTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMu
aApAQCAtMjIxLDcgKzIyMSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCiAgICAgUmVmUHRyPENETUlu
c3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDPiBtX2NkbUluc3RhbmNlOwotICAgIFZlY3Rv
cjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IG1fa2V5SURzOworICAgIFZlY3RvcjxSZWY8
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IG1fa2V5SURzOwogI2VuZGlmCiAKICAgICBz
dGQ6Om9wdGlvbmFsPEZsb2F0U2l6ZT4gbV9jYWNoZWRTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCmluZGV4IDI0
NzgxNTA2MDJhOGQwZDZiMDZkN2EzYTU4MzVmMGI4MzA3MjE0ZTQuLjRmNWFmZmQ0Yjg0ZjcyMDg2
YmE1Y2VkODlkODg1NzQwMTY0NDIxYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKQEAgLTI1NCw3ICsyNTQsNyBA
QCB2b2lkIHNoYXJlZEJ1ZmZlclJlbGVhc2Uodm9pZCogaW5mbykKIH0KICNlbmRpZgogCi1JbWFn
ZURlY29kZXJDRzo6SW1hZ2VEZWNvZGVyQ0coRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwg
QWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorSW1hZ2VEZWNvZGVyQ0c6
OkltYWdlRGVjb2RlckNHKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IHV0aUhpbnQ7CiAgICAgaWYgKGRhdGEuc2l6ZSgpID49IDMyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKaW5k
ZXggMTc1MTA4ODcyMWY1NjIxZmNkYmZkMDBmMjZkYjI3N2M4MTE3ZGY4MS4uMzY4YjE2MjgzZTRi
ZmY0NjI4OWExN2VjNDA4MzJlZjUwMTVkMDAxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCkBAIC0zMiw5ICszMiw5IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEltYWdlRGVjb2RlckNHIGZpbmFsIDogcHVibGlj
IEltYWdlRGVjb2RlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0g
ICAgSW1hZ2VEZWNvZGVyQ0coRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRp
b24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBJbWFnZURlY29kZXJDRyhjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pOwogCi0gICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXJDRz4gY3JlYXRl
KEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBH
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKKyAg
ICBzdGF0aWMgUmVmPEltYWdlRGVjb2RlckNHPiBjcmVhdGUoY29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgIHsKICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEZWNvZGVyQ0coZGF0YSwgYWxwaGFPcHRpb24sIGdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyLmNwcAppbmRleCAyOWM5YWI0ZWVkZjJkNjM5YjQxZTgyZmE2YWMyZGYzNzlmNGEz
NDczLi4yZmQ4NGQyMTliOThjZGExNTliMDdlZmM1MTY5ZWUwMmE4Mjc4NzlmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVy
R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcApAQCAtODEsMTIgKzgxLDEyIEBAIEltYWdl
RGVjb2RlckdTdHJlYW1lclNhbXBsZSogdG9TYW1wbGUoSXRlcmF0b3IgaXRlcikKICAgICByZXR1
cm4gKEltYWdlRGVjb2RlckdTdHJlYW1lclNhbXBsZSopaXRlci0+c2Vjb25kLmdldCgpOwogfQog
Ci1SZWZQdHI8SW1hZ2VEZWNvZGVyR1N0cmVhbWVyPiBJbWFnZURlY29kZXJHU3RyZWFtZXI6OmNy
ZWF0ZShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitSZWZQdHI8SW1hZ2VEZWNvZGVyR1N0cmVhbWVyPiBJ
bWFnZURlY29kZXJHU3RyZWFtZXI6OmNyZWF0ZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwg
R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiB7
CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyKGRhdGEsIG1p
bWVUeXBlLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKIH0KIAot
SW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbWFnZURlY29kZXJHU3RyZWFtZXIoRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbWFnZURl
Y29kZXJHU3RyZWFtZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KQogICAgIDogbV9taW1lVHlwZShtaW1lVHlwZSkKIHsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2Zs
YWcgb25jZUZsYWc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgKaW5kZXggMjYx
ZGFmZjI2MTU4ZTE3YTJhNDIyMWZmYjI0MzU0Njc3MTZkYmQzYi4uMTlkOGM5OWUzMDY3MmQ0ODg2
ZWE4OTBjMjQ3MzMyOTIzZDk2NTNjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3RyZWFt
ZXIuaApAQCAtNDEsOCArNDEsOCBAQCBjbGFzcyBJbWFnZURlY29kZXJHU3RyZWFtZXIgZmluYWwg
OiBwdWJsaWMgSW1hZ2VEZWNvZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbWFnZURlY29kZXJHU3RyZWFtZXIpOwogcHVibGljOgot
ICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyR1N0cmVhbWVyPiBjcmVhdGUoRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbik7Ci0gICAgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyKEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwg
R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNv
ZGVyR1N0cmVhbWVyPiBjcmVhdGUoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bik7CisgICAgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pOwogICAgIHZpcnR1YWwgfkltYWdlRGVjb2RlckdTdHJlYW1lcigpID0gZGVm
YXVsdDsKIAogICAgIHN0YXRpYyBib29sIHN1cHBvcnRzTWVkaWFUeXBlKE1lZGlhVHlwZSB0eXBl
KSB7IHJldHVybiB0eXBlID09IE1lZGlhVHlwZTo6VmlkZW87IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5k
ZXIuY3BwCmluZGV4IGNkOGRkZDkyZjllNzkxMzhmNjc1ZjE5NmZiZWExOGU4MTA3MmYxYTcuLjM2
NGZiNmJjMzc0NmQyYTY4NGNlOTljZDJmM2RjZTlkZmMwOTMwMmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNVGh1bmRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1U
aHVuZGVyLmNwcApAQCAtMjM3LDcgKzIzNyw3IEBAIGJvb2wgQ0RNUHJpdmF0ZVRodW5kZXI6OnN1
cHBvcnRzSW5pdERhdGEoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBGCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1SZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gQ0RN
UHJpdmF0ZVRodW5kZXI6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlciYgcmVzcG9uc2UpIGNvbnN0CitSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4gQ0RNUHJpdmF0ZVRodW5kZXI6OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJlc3BvbnNlLmNvcHko
KTsKIH0KQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIENETUluc3RhbmNlVGh1bmRlcjo6aW5pdGlh
bGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYQogICAgIGNh
bGxiYWNrKFN1Y2NlZWRlZCk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VUaHVuZGVyOjpzZXRTZXJ2
ZXJDZXJ0aWZpY2F0ZShSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwg
IFN1Y2Nlc3NDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBDRE1JbnN0YW5jZVRodW5kZXI6OnNl
dFNlcnZlckNlcnRpZmljYXRlKFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGNl
cnRpZmljYXRlLCAgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgYXV0byBkYXRh
ID0gY2VydGlmaWNhdGUtPmV4dHJhY3REYXRhKCk7CiAgICAgT3BlbkNETUVycm9yIGVycm9yID0g
b3BlbmNkbV9zeXN0ZW1fc2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZShtX3RodW5kZXJTeXN0ZW0uZ2V0
KCksIGNvbnN0X2Nhc3Q8dWludDhfdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5zaXplKCkpOwpAQCAt
MzI2LDcgKzMyNiw3IEBAIFJlZlB0cjxDRE1JbnN0YW5jZVNlc3Npb24+IENETUluc3RhbmNlVGh1
bmRlcjo6Y3JlYXRlU2Vzc2lvbigpCiBjbGFzcyBQYXJzZWRSZXNwb25zZU1lc3NhZ2UgewogCiBw
dWJsaWM6Ci0gICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlKGNvbnN0IFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYgYnVmZmVyKQorICAgIFBhcnNlZFJlc3BvbnNlTWVzc2FnZShjb25zdCBS
ZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKICAgICB7CiAgICAg
ICAgIGlmICghYnVmZmVyIHx8ICFidWZmZXItPnNpemUoKSkKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTM0OSw4ICszNDksOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7
IHJldHVybiBtX2lzVmFsaWQ7IH0KICAgICBib29sIGhhc1BheWxvYWQoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxib29sPihtX3BheWxvYWQpOyB9Ci0gICAgY29uc3QgUmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiBwYXlsb2FkKCkgY29uc3QmIHsgQVNTRVJUKG1fcGF5bG9hZCk7IHJl
dHVybiBtX3BheWxvYWQudmFsdWUoKTsgfQotICAgIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYgcGF5bG9hZCgpICYgeyBBU1NFUlQobV9wYXlsb2FkKTsgcmV0dXJuIG1fcGF5bG9hZC52YWx1
ZSgpOyB9CisgICAgY29uc3QgUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiBwYXls
b2FkKCkgY29uc3QmIHsgQVNTRVJUKG1fcGF5bG9hZCk7IHJldHVybiBtX3BheWxvYWQudmFsdWUo
KTsgfQorICAgIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYgcGF5bG9hZCgpICYg
eyBBU1NFUlQobV9wYXlsb2FkKTsgcmV0dXJuIG1fcGF5bG9hZC52YWx1ZSgpOyB9CiAgICAgYm9v
bCBoYXNUeXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlLmhhc192YWx1ZSgpOyB9CiAgICAgV2Vi
Q29yZTo6TWVkaWFLZXlNZXNzYWdlVHlwZSB0eXBlKCkgY29uc3QgeyBBU1NFUlQobV90eXBlKTsg
cmV0dXJuIG1fdHlwZS52YWx1ZSgpOyB9CiAgICAgV2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdlVHlw
ZSB0eXBlT3IoV2ViQ29yZTo6TWVkaWFLZXlNZXNzYWdlVHlwZSBhbHRlcm5hdGUpIGNvbnN0IHsg
cmV0dXJuIG1fdHlwZSA/IG1fdHlwZS52YWx1ZSgpIDogYWx0ZXJuYXRlOyB9CkBAIC0zNTksMTEg
KzM1OSwxMSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzVmFsaWQgeyBmYWxz
ZSB9OwotICAgIHN0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiBtX3Bh
eWxvYWQ7CisgICAgc3RkOjpvcHRpb25hbDxSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4+IG1fcGF5bG9hZDsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6Ok1lZGlhS2V5TWVzc2Fn
ZVR5cGU+IG1fdHlwZTsKIH07CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6Y2hh
bGxlbmdlR2VuZXJhdGVkQ2FsbGJhY2soUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpjaGFsbGVuZ2VHZW5lcmF0
ZWRDYWxsYmFjayhSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CiB7CiAgICAgUGFyc2VkUmVzcG9uc2VNZXNzYWdlIHBhcnNlZFJlc3BvbnNlTWVzc2FnZShidWZm
ZXIpOwogICAgIGlmICghcGFyc2VkUmVzcG9uc2VNZXNzYWdlKSB7CkBAIC00NzAsNyArNDcwLDcg
QEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjprZXlzVXBkYXRlRG9uZUNhbGxiYWNr
KCkKICAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmNsZWFyKCk7CiB9CiAKLXZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6ZXJyb3JDYWxsYmFjayhSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiBtZXNzYWdlKQordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpl
cnJvckNhbGxiYWNrKFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIG1lc3Nh
Z2UpCiB7CiAgICAgR1NUX0VSUk9SKCJDRE0gZXJyb3IiKTsKICAgICBhdXRvIGRhdGEgPSBtZXNz
YWdlLT5leHRyYWN0RGF0YSgpOwpAQCAtNDg0LDcgKzQ4NCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VT
ZXNzaW9uVGh1bmRlcjo6ZXJyb3JDYWxsYmFjayhSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
cj4mJiBtCiAgICAgbV9zZXNzaW9uQ2hhbmdlZENhbGxiYWNrcy5jbGVhcigpOwogfQogCi12b2lk
IENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxp
Y2Vuc2VUeXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhU2hhcmVkQnVmZmVyLAordm9pZCBDRE1JbnN0YW5jZVNl
c3Npb25UaHVuZGVyOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBpbml0RGF0YVNoYXJlZEJ1ZmZlciwKICAgICBMaWNlbnNlQ2FsbGJhY2smJiBjYWxs
YmFjaykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAtNTAzLDcgKzUwMyw3IEBA
IHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5
cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0CiAgICAgICAgIHBheWxvYWREYXRhLmRhdGEoKSwgcGF5
bG9hZERhdGEuc2l6ZSgpLCBudWxscHRyLCAwLCAmbV90aHVuZGVyU2Vzc2lvbkNhbGxiYWNrcywg
dGhpcywgJnNlc3Npb24pOwogICAgIGlmICghc2Vzc2lvbikgewogICAgICAgICBHU1RfRVJST1Io
IkNvdWxkIG5vdCBjcmVhdGUgc2Vzc2lvbiIpOwotICAgICAgICBSZWZQdHI8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gaW5pdERhdGEgPSBtX2luaXREYXRhLnBheWxvYWQoKTsKKyAgICAgICAgUmVm
UHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGluaXREYXRhID0gbV9pbml0RGF0YS5w
YXlsb2FkKCk7CiAgICAgICAgIGNhbGxiYWNrKGluaXREYXRhLnJlbGVhc2VOb25OdWxsKCksIHsg
fSwgZmFsc2UsIEZhaWxlZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC01MTIsNyArNTEy
LDcgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25UaHVuZGVyOjpyZXF1ZXN0TGljZW5zZShMaWNl
bnNlVHlwZSBsaWNlbnNlVHlwZSwgY29uc3QgQXQKIAogICAgIGF1dG8gZ2VuZXJhdGVDaGFsbGVu
Z2UgPSBbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAg
ICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IGluaXREYXRhID0gbV9pbml0RGF0YS5wYXlsb2FkKCk7CisgICAgICAgIFJl
ZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBpbml0RGF0YSA9IG1faW5pdERhdGEu
cGF5bG9hZCgpOwogICAgICAgICBpZiAobV9zZXNzaW9uSUQuaXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICBHU1RfRVJST1IoImNvdWxkIG5vdCBjcmVhdGUgc2Vzc2lvbiBpZCIpOwogICAgICAgICAg
ICAgY2FsbGJhY2soaW5pdERhdGEucmVsZWFzZU5vbk51bGwoKSwgeyB9LCBmYWxzZSwgRmFpbGVk
KTsKQEAgLTU0Miw3ICs1NDIsNyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OnNl
c3Npb25GYWlsdXJlKCkKICAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmNsZWFyKCk7CiB9
CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6dXBkYXRlTGljZW5zZShjb25zdCBT
dHJpbmcmIHNlc3Npb25JRCwgTGljZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgQ0RN
SW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmIHNlc3Np
b25JRCwgTGljZW5zZVR5cGUsIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJl
c3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlRf
VU5VU0VEKHNlc3Npb25JRCwgc2Vzc2lvbklEID09IG1fc2Vzc2lvbklEKTsKIApAQCAtNTg3LDcg
KzU4Nyw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6bG9hZFNlc3Npb24oTGlj
ZW5zZVR5cGUsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklECiB7CiAgICAgQVNTRVJUX1VOVVNFRChz
ZXNzaW9uSUQsIHNlc3Npb25JRCA9PSBtX3Nlc3Npb25JRCk7CiAKLSAgICBtX3Nlc3Npb25DaGFu
Z2VkQ2FsbGJhY2tzLmFwcGVuZChbdGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0o
Ym9vbCBzdWNjZXNzLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZU1l
c3NhZ2UpIG11dGFibGUgeworICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3MuYXBwZW5kKFt0
aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIHN1Y2Nlc3MsIFJlZlB0cjxj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlTWVzc2FnZSkgbXV0YWJsZSB7
CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmIChzdWNjZXNzKSB7
CiAgICAgICAgICAgICBpZiAoIXJlc3BvbnNlTWVzc2FnZSkKQEAgLTU5OCw3ICs1OTgsNyBAQCB2
b2lkIENETUluc3RhbmNlU2Vzc2lvblRodW5kZXI6OmxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBj
b25zdCBTdHJpbmcmIHNlc3Npb25JRAogICAgICAgICAgICAgICAgIFBhcnNlZFJlc3BvbnNlTWVz
c2FnZSBwYXJzZWRSZXNwb25zZU1lc3NhZ2UocmVzcG9uc2VNZXNzYWdlKTsKICAgICAgICAgICAg
ICAgICBBU1NFUlQocGFyc2VkUmVzcG9uc2VNZXNzYWdlKTsKICAgICAgICAgICAgICAgICBpZiAo
cGFyc2VkUmVzcG9uc2VNZXNzYWdlLmhhc1BheWxvYWQoKSkgewotICAgICAgICAgICAgICAgICAg
ICBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2VkUmVz
cG9uc2VNZXNzYWdlLnBheWxvYWQoKSk7CisgICAgICAgICAgICAgICAgICAgIFJlZjxjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtZXNzYWdlID0gV1RGTW92ZShwYXJzZWRSZXNwb25zZU1l
c3NhZ2UucGF5bG9hZCgpKTsKICAgICAgICAgICAgICAgICAgICAgR1NUX0RFQlVHKCJnb3QgbWVz
c2FnZSBvZiBzaXplICV6dSIsIG1lc3NhZ2UtPnNpemUoKSk7CiAjaWZuZGVmIEdTVF9ESVNBQkxF
X0dTVF9ERUJVRwogICAgICAgICAgICAgICAgICAgICBhdXRvIGRhdGEgPSBtZXNzYWdlLT5jb3B5
RGF0YSgpOwpAQCAtNjQ4LDcgKzY0OCw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRl
cjo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2VuCiB7CiAg
ICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uSUQsIG1fc2Vzc2lvbklEID09IHNlc3Npb25JRCk7CiAK
LSAgICBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzLmFwcGVuZChbdGhpcywgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBzdWNjZXNzLCBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpIG11dGFibGUgeworICAgIG1fc2Vzc2lvbkNoYW5nZWRDYWxsYmFja3Mu
YXBwZW5kKFt0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShib29sIHN1Y2Nlc3Ms
IFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgbXV0YWJsZSB7
CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIGlmIChzdWNjZXNzKSB7
CiAgICAgICAgICAgICBpZiAoIWJ1ZmZlcikKQEAgLTY1Nyw3ICs2NTcsNyBAQCB2b2lkIENETUlu
c3RhbmNlU2Vzc2lvblRodW5kZXI6OnJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYgc2Vz
c2lvbklELCBMaWNlbgogICAgICAgICAgICAgICAgIFBhcnNlZFJlc3BvbnNlTWVzc2FnZSBwYXJz
ZWRSZXNwb25zZU1lc3NhZ2UoYnVmZmVyKTsKICAgICAgICAgICAgICAgICBBU1NFUlQocGFyc2Vk
UmVzcG9uc2VNZXNzYWdlKTsKICAgICAgICAgICAgICAgICBpZiAocGFyc2VkUmVzcG9uc2VNZXNz
YWdlLmhhc1BheWxvYWQoKSkgewotICAgICAgICAgICAgICAgICAgICBSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4gbWVzc2FnZSA9IFdURk1vdmUocGFyc2VkUmVzcG9uc2VNZXNzYWdlLnBheWxv
YWQoKSk7CisgICAgICAgICAgICAgICAgICAgIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBtZXNzYWdlID0gV1RGTW92ZShwYXJzZWRSZXNwb25zZU1lc3NhZ2UucGF5bG9hZCgpKTsK
ICAgICAgICAgICAgICAgICAgICAgR1NUX0RFQlVHKCJzZXNzaW9uICVzIHJlbW92ZWQsIG1lc3Nh
Z2UgbGVuZ3RoICV6dSIsIG1fc2Vzc2lvbklELnV0ZjgoKS5kYXRhKCksIG1lc3NhZ2UtPnNpemUo
KSk7CiAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG1fa2V5U3RvcmUuYWxsS2V5c0FzKE1l
ZGlhS2V5U3RhdHVzOjpSZWxlYXNlZCksIFdURk1vdmUobWVzc2FnZSksIFN1Y2Nlc3NWYWx1ZTo6
U3VjY2VlZGVkKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1UaHVuZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIu
aAppbmRleCAxMDIwZTE1MzIyNzFiNTM1MWUxMDZkZGU4ZjIxZWE1NDA1YTljMjM3Li5jOTY3ZjIw
YzFjYTYzNzI1OWQ2NDlmZDhiOWE2ODUxYmIxZDI5MjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVRodW5kZXIu
aApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdXBwb3J0c1NlcnZlckNlcnRp
ZmljYXRlcygpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNTZXNzaW9ucygpIGNvbnN0
IGZpbmFsOwogICAgIGJvb2wgc3VwcG9ydHNJbml0RGF0YShjb25zdCBBdG9tU3RyaW5nJiwgY29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwotICAgIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikg
Y29uc3QgZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHNhbml0aXplU2Vzc2lvbklk
KGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwogCiBwcml2YXRlOgpAQCAtMTEwLDcgKzExMCw3
IEBAIHB1YmxpYzoKICAgICAvLyBDRE1JbnN0YW5jZQogICAgIEltcGxlbWVudGF0aW9uVHlwZSBp
bXBsZW1lbnRhdGlvblR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBJbXBsZW1lbnRhdGlvblR5
cGU6OlRodW5kZXI7IH0KICAgICB2b2lkIGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25z
dCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJz
LCBBbGxvd1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZv
aWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1
Y2Nlc3NDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJl
Zjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmlu
YWw7CiAgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOwog
ICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9rZXlT
eXN0ZW07IH0KICAgICBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVTZXNzaW9uKCkg
ZmluYWw7CkBAIC0xMjYsOCArMTI2LDggQEAgY2xhc3MgQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRl
ciBmaW5hbCA6IHB1YmxpYyBDRE1JbnN0YW5jZVNlc3Npb25Qcm94eSB7CiBwdWJsaWM6CiAgICAg
Q0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcihDRE1JbnN0YW5jZVRodW5kZXImKTsKIAotICAgIHZv
aWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRh
VHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxs
YmFjayYmKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGlj
ZW5zZVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRlQ2Fs
bGJhY2smJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSwgY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgdXBk
YXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaWNlbnNlVHlwZSwgUmVmPGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2
b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
LCBMb2FkU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgY2xvc2VTZXNzaW9uKGNv
bnN0IFN0cmluZyYsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgcmVt
b3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiwgTGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25E
YXRhQ2FsbGJhY2smJikgZmluYWw7CkBAIC0xNDEsMTQgKzE0MSwxNCBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIENETUluc3RhbmNlVGh1bmRlciogY2RtSW5zdGFuY2VUaHVuZGVyKCkgY29uc3Q7
CiAKLSAgICB1c2luZyBOb3RpZmljYXRpb24gPSB2b2lkIChDRE1JbnN0YW5jZVNlc3Npb25UaHVu
ZGVyOjoqKShSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik7CisgICAg
dXNpbmcgTm90aWZpY2F0aW9uID0gdm9pZCAoQ0RNSW5zdGFuY2VTZXNzaW9uVGh1bmRlcjo6Kiko
UmVmUHRyPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIHVz
aW5nIENoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrID0gRnVuY3Rpb248dm9pZCgpPjsKLSAgICB1
c2luZyBTZXNzaW9uQ2hhbmdlZENhbGxiYWNrID0gRnVuY3Rpb248dm9pZChib29sLCBSZWZQdHI8
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJik+OworICAgIHVzaW5nIFNlc3Npb25DaGFuZ2VkQ2Fs
bGJhY2sgPSBGdW5jdGlvbjx2b2lkKGJvb2wsIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmKT47CiAKLSAgICB2b2lkIGNoYWxsZW5nZUdlbmVyYXRlZENhbGxiYWNrKFJlZlB0
cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGNoYWxsZW5nZUdlbmVyYXRl
ZENhbGxiYWNrKFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKTsKICAgICB2
b2lkIGtleVVwZGF0ZWRDYWxsYmFjayhLZXlJRFR5cGUmJik7CiAgICAgdm9pZCBrZXlzVXBkYXRl
RG9uZUNhbGxiYWNrKCk7Ci0gICAgdm9pZCBlcnJvckNhbGxiYWNrKFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiYmKTsKKyAgICB2b2lkIGVycm9yQ2FsbGJhY2soUmVmUHRyPGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYpOwogICAgIENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3Rh
dHVzIHN0YXR1cyhjb25zdCBLZXlJRFR5cGUmKSBjb25zdDsKICAgICB2b2lkIHNlc3Npb25GYWls
dXJlKCk7CiAKQEAgLTE1OSw3ICsxNTksNyBAQCBwcml2YXRlOgogICAgIEluaXREYXRhIG1faW5p
dERhdGE7CiAgICAgT3BlbkNETVNlc3Npb25DYWxsYmFja3MgbV90aHVuZGVyU2Vzc2lvbkNhbGxi
YWNrcyB7IH07CiAgICAgQm94UHRyPE9wZW5DRE1TZXNzaW9uPiBtX3Nlc3Npb247Ci0gICAgUmVm
UHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fbWVzc2FnZTsKKyAgICBSZWZQdHI8Y29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9tZXNzYWdlOwogICAgIGJvb2wgbV9uZWVkc0luZGl2
aWR1YWxpemF0aW9uIHsgZmFsc2UgfTsKICAgICBWZWN0b3I8Q2hhbGxlbmdlR2VuZXJhdGVkQ2Fs
bGJhY2s+IG1fY2hhbGxlbmdlQ2FsbGJhY2tzOwogICAgIFZlY3RvcjxTZXNzaW9uQ2hhbmdlZENh
bGxiYWNrPiBtX3Nlc3Npb25DaGFuZ2VkQ2FsbGJhY2tzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29kZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFibGVJbWFnZURlY29k
ZXIuY3BwCmluZGV4IDgxY2U2NTQyNWVmNTNjYzAxMjRlZTEwODVkNDY1YWIxMDA3MDJiZDQuLjky
ODNiYjk0MDJmYThmMjRlZGU2OGQ4MTZhMGMyMjY3OTRmZmM4ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1NjYWxhYmxlSW1hZ2VEZWNvZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUlt
YWdlRGVjb2Rlci5jcHAKQEAgLTEzNSw3ICsxMzUsNyBAQCBib29sIG1hdGNoZXNDVVJTaWduYXR1
cmUoY2hhciogY29udGVudHMpCiAKIH0KIAotUmVmUHRyPFNjYWxhYmxlSW1hZ2VEZWNvZGVyPiBT
Y2FsYWJsZUltYWdlRGVjb2Rlcjo6Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEs
IEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxTY2FsYWJsZUltYWdlRGVjb2Rlcj4gU2Nh
bGFibGVJbWFnZURlY29kZXI6OmNyZWF0ZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBk
YXRhLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24g
Z2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiB7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IGxlbmd0aE9mTG9uZ2VzdFNpZ25hdHVyZSA9IDE0OyAvLyBUbyB3aXQ6ICJSSUZGPz8/P1dFQlBW
UCIKICAgICBjaGFyIGNvbnRlbnRzW2xlbmd0aE9mTG9uZ2VzdFNpZ25hdHVyZV07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdl
RGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvU2NhbGFi
bGVJbWFnZURlY29kZXIuaAppbmRleCBkOWZkYTc3NmZkNThkODdjY2U1NGVmMzA0NDA3Y2NhNGRl
MDQ3ZjM1Li4zMDMzYWIyNmYyYmM4MjliYmEwMDU3NmVkYzM0OGE0YzczNzMwYWU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9TY2FsYWJsZUltYWdl
RGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL1Nj
YWxhYmxlSW1hZ2VEZWNvZGVyLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogCiAgICAgLy8g
UmV0dXJucyBudWxscHRyIGlmIHdlIGNhbid0IHNuaWZmIGEgc3VwcG9ydGVkIHR5cGUgZnJvbSB0
aGUgcHJvdmlkZWQgZGF0YSAocG9zc2libHkKICAgICAvLyBiZWNhdXNlIHRoZXJlIGlzbid0IGVu
b3VnaCBkYXRhIHlldCkuCi0gICAgc3RhdGljIFJlZlB0cjxTY2FsYWJsZUltYWdlRGVjb2Rlcj4g
Y3JlYXRlKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgc3RhdGljIFJlZlB0cjxTY2FsYWJsZUltYWdlRGVj
b2Rlcj4gY3JlYXRlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0
aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAKICAgICBib29sIHByZW11bHRpcGx5
QWxwaGEoKSBjb25zdCB7IHJldHVybiBtX3ByZW11bHRpcGx5QWxwaGE7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IDg1Zjk2ZDg1ZDJi
MzcyY2ZjMjE3MWE4MzQxMWQ1Mjg2OTIwNzNjZDQuLjNlYjdmMTUxZWZkOGEwODM2MmY0Yjg2NWY2
NGZkMjMxNzM0OGFkNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Q
YXN0ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVi
b2FyZFdpbi5jcHAKQEAgLTk2Niw3ICs5NjYsNyBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9i
YWxJbWFnZUZpbGVEZXNjcmlwdG9yKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmCiAg
ICAgcmV0dXJuIG1lbU9iajsKIH0KIAotc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VG
aWxlQ29udGVudChGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhKQorc3RhdGljIEhHTE9CQUwg
Y3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudChjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiBkYXRhKQogewogICAgIEhHTE9CQUwgbWVtT2JqID0gR2xvYmFsQWxsb2MoR1BUUiwgZGF0YS0+
c2l6ZSgpKTsKICAgICBpZiAoIW1lbU9iaikgCkBAIC05ODYsNyArOTg2LDcgQEAgc3RhdGljIEhH
TE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlQ29udGVudChGcmFnbWVudGVkU2hhcmVkQnVmZmVy
KiBkYXRhKQogICAgIHJldHVybiBtZW1PYmo7CiB9CiAKLXN0YXRpYyBIR0xPQkFMIGNyZWF0ZUds
b2JhbEhEcm9wQ29udGVudChjb25zdCBVUkwmIHVybCwgU3RyaW5nJiBmaWxlTmFtZSwgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciogZGF0YSkKK3N0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEhEcm9w
Q29udGVudChjb25zdCBVUkwmIHVybCwgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKICAgICBpZiAoZmlsZU5hbWUuaXNFbXB0eSgpIHx8ICFk
YXRhKQogICAgICAgICByZXR1cm4gMDsKQEAgLTEwNjMsNyArMTA2Myw3IEBAIHZvaWQgUGFzdGVi
b2FyZDo6d3JpdGVJbWFnZVRvRGF0YU9iamVjdChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBVUkwm
IHVybCkKICAgICBpZiAoIWNhY2hlZEltYWdlIHx8ICFjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5k
ZXJlcihlbGVtZW50LnJlbmRlcmVyKCkpIHx8ICFjYWNoZWRJbWFnZS0+aXNMb2FkZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogaW1hZ2VCdWZmZXIg
PSBjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihlbGVtZW50LnJlbmRlcmVyKCkpLT5kYXRh
KCk7CisgICAgY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogaW1hZ2VCdWZmZXIgPSBjYWNo
ZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihlbGVtZW50LnJlbmRlcmVyKCkpLT5kYXRhKCk7CiAg
ICAgaWYgKCFpbWFnZUJ1ZmZlciB8fCAhaW1hZ2VCdWZmZXItPnNpemUoKSkKICAgICAgICAgcmV0
dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuY3BwCmluZGV4IDIw
NTI3OTU1MjgzNmUwNDRkZDdjMmE4ZWEzMjE2ODJkOTE3OTM4YzAuLjliOGI0YjZkNThjNzhmMzUx
N2JiNmJmNTFhMmI2N2U0NWM1NzI1NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0NETUZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NE
TUZhY3RvcnkuY3BwCkBAIC02Myw3ICs2Myw3IEBAIGJvb2wgTW9ja0NETUZhY3Rvcnk6OnN1cHBv
cnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKQogICAgIHJldHVybiBlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKGtleVN5c3RlbSwgIm9yZy53ZWJraXQubW9jayIpOwogfQogCi12b2lk
IE1vY2tDRE1GYWN0b3J5OjphZGRLZXlzVG9TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQs
IFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+JiYga2V5cykKK3ZvaWQgTW9ja0NE
TUZhY3Rvcnk6OmFkZEtleXNUb1Nlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCwgVmVjdG9y
PFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4mJiBrZXlzKQogewogICAgIGF1dG8g
YWRkUmVzdWx0ID0gbV9zZXNzaW9ucy5hZGQoaWQsIFdURk1vdmUoa2V5cykpOwogICAgIGlmIChh
ZGRSZXN1bHQuaXNOZXdFbnRyeSkKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBNb2NrQ0RNRmFjdG9y
eTo6YWRkS2V5c1RvU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVmPEZy
YWdtZW4KICAgICAgICAgdmFsdWUuYXBwZW5kKFdURk1vdmUoa2V5KSk7CiB9CiAKLVZlY3RvcjxS
ZWY8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IE1vY2tDRE1GYWN0b3J5OjpyZW1vdmVLZXlzRnJv
bVNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5nJiBpZCkKK1ZlY3RvcjxSZWY8Y29uc3QgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlcj4+IE1vY2tDRE1GYWN0b3J5OjpyZW1vdmVLZXlzRnJvbVNlc3Npb25X
aXRoSUQoY29uc3QgU3RyaW5nJiBpZCkKIHsKICAgICBhdXRvIGl0ID0gbV9zZXNzaW9ucy5maW5k
KGlkKTsKICAgICBpZiAoaXQgPT0gbV9zZXNzaW9ucy5lbmQoKSkKQEAgLTgzLDcgKzgzLDcgQEAg
VmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gTW9ja0NETUZhY3Rvcnk6OnJlbW92
ZUtleXNGcm9tU2Vzc2lvbldpdGhJRCgKICAgICByZXR1cm4gV1RGTW92ZShpdC0+dmFsdWUpOwog
fQogCi1jb25zdCBWZWN0b3I8UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiogTW9ja0NETUZh
Y3Rvcnk6OmtleXNGb3JTZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpIGNvbnN0Citjb25z
dCBWZWN0b3I8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiogTW9ja0NETUZhY3Rv
cnk6OmtleXNGb3JTZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpIGNvbnN0CiB7CiAgICAg
YXV0byBpdCA9IG1fc2Vzc2lvbnMuZmluZChpZCk7CiAgICAgaWYgKGl0ID09IG1fc2Vzc2lvbnMu
ZW5kKCkpCkBAIC0yMTEsNyArMjExLDcgQEAgYm9vbCBNb2NrQ0RNOjpzdXBwb3J0c0luaXREYXRh
KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgRnJhZ21lbnRlZFMKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IE1vY2tDRE06
OnNhbml0aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2Up
IGNvbnN0CitSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gTW9ja0NETTo6c2Fu
aXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiByZXNwb25zZSkgY29u
c3QKIHsKICAgICBhdXRvIGJ1ZmZlciA9IHJlc3BvbnNlLm1ha2VDb250aWd1b3VzKCk7CiAgICAg
aWYgKCFjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoYnVmZmVyLT5kYXRhKCksIHJlc3BvbnNlLnNpemUo
KSkpCkBAIC0yNzAsOSArMjcwLDEwIEBAIHZvaWQgTW9ja0NETUluc3RhbmNlOjppbml0aWFsaXpl
V2l0aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0CiAgICAgY2Fs
bGJhY2soaW5pdGlhbGl6ZSgpKTsKIH0KIAotdm9pZCBNb2NrQ0RNSW5zdGFuY2U6OnNldFNlcnZl
ckNlcnRpZmljYXRlKFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGNlcnRpZmljYXRlLCBT
dWNjZXNzQ2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgTW9ja0NETUluc3RhbmNlOjpzZXRTZXJ2
ZXJDZXJ0aWZpY2F0ZShSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZp
Y2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7Ci0gICAgU3RyaW5nVmlldyBjZXJ0
aWZpY2F0ZVN0cmluZ1ZpZXcoY2VydGlmaWNhdGUtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwg
Y2VydGlmaWNhdGUtPnNpemUoKSk7CisgICAgYXV0byBjb250aWd1b3VzQ2VydGlmaWNhdGUgPSBj
ZXJ0aWZpY2F0ZS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICBTdHJpbmdWaWV3IGNlcnRpZmljYXRl
U3RyaW5nVmlldyhjb250aWd1b3VzQ2VydGlmaWNhdGUtPmRhdGEoKSwgY2VydGlmaWNhdGUtPnNp
emUoKSk7CiAKICAgICBjYWxsYmFjayhlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGNlcnRpZmljYXRl
U3RyaW5nVmlldywgInZhbGlkIikgPyBTdWNjZWVkZWQgOiBGYWlsZWQpOwogfQpAQCAtMjk4LDcg
KzI5OSw3IEBAIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246Ok1vY2tDRE1JbnN0YW5jZVNlc3Npb24o
V2Vha1B0cjxNb2NrQ0RNSW5zdGFuY2U+JiYgaW5zdGFuCiB7CiB9CiAKLXZvaWQgTW9ja0NETUlu
c3RhbmNlU2Vzc2lvbjo6cmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNv
bnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBNb2NrQ0RNSW5z
dGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwgY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgTW9j
a0NETUZhY3RvcnkqIGZhY3RvcnkgPSBtX2luc3RhbmNlID8gbV9pbnN0YW5jZS0+ZmFjdG9yeSgp
IDogbnVsbHB0cjsKICAgICBpZiAoIWZhY3RvcnkpIHsKQEAgLTMyNCw3ICszMjUsNyBAQCB2b2lk
IE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2Vu
c2VUeXBlLCBjb25zdCBBdG9tUwogICAgIGNhbGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGxp
Y2Vuc2UuZGF0YSgpLCBsaWNlbnNlLmxlbmd0aCgpKSwgc2Vzc2lvbklELCBmYWxzZSwgU3VjY2Vz
c1ZhbHVlOjpTdWNjZWVkZWQpOwogfQogCi12b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVw
ZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLCBSZWY8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYg
Y2FsbGJhY2spCit2b2lkIE1vY2tDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29u
c3QgU3RyaW5nJiBzZXNzaW9uSUQsIExpY2Vuc2VUeXBlLCBSZWY8Y29uc3QgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4mJiByZXNwb25zZSwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYgY2FsbGJhY2sp
CiB7CiAgICAgTW9ja0NETUZhY3RvcnkqIGZhY3RvcnkgPSBtX2luc3RhbmNlID8gbV9pbnN0YW5j
ZS0+ZmFjdG9yeSgpIDogbnVsbHB0cjsKICAgICBpZiAoIWZhY3RvcnkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja0NETUZhY3RvcnkuaAppbmRleCBkOTZjMTU2ZWU0ZDI3OTFiOGIwOTk4ZGFm
OTQwZWM3NTM3ODA3YmMzLi4zM2UzMTFjMjg2NTM1YjA5M2YxMmMxZDgyZDk2Y2Q4YjI3YjFmMzEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE1GYWN0b3J5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrQ0RNRmFjdG9yeS5oCkBAIC03Nyw5ICs3Nyw5
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlk
KSB7IHJldHVybiBtX3Nlc3Npb25zLmNvbnRhaW5zKGlkKTsgfQogICAgIHZvaWQgcmVtb3ZlU2Vz
c2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkKSB7IG1fc2Vzc2lvbnMucmVtb3ZlKGlkKTsgfQot
ICAgIHZvaWQgYWRkS2V5c1RvU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkLCBWZWN0b3I8
UmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmKTsKLSAgICBjb25zdCBWZWN0b3I8UmVmPEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+Pioga2V5c0ZvclNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5n
JiBpZCkgY29uc3Q7Ci0gICAgVmVjdG9yPFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gcmVt
b3ZlS2V5c0Zyb21TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpOworICAgIHZvaWQgYWRk
S2V5c1RvU2Vzc2lvbldpdGhJRChjb25zdCBTdHJpbmcmIGlkLCBWZWN0b3I8UmVmPGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmKTsKKyAgICBjb25zdCBWZWN0b3I8UmVmPGNvbnN0IEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+Pioga2V5c0ZvclNlc3Npb25XaXRoSUQoY29uc3QgU3RyaW5n
JiBpZCkgY29uc3Q7CisgICAgVmVjdG9yPFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
Pj4gcmVtb3ZlS2V5c0Zyb21TZXNzaW9uV2l0aElEKGNvbnN0IFN0cmluZyYgaWQpOwogCiBwcml2
YXRlOgogICAgIE1vY2tDRE1GYWN0b3J5KCk7CkBAIC05Niw3ICs5Niw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX2NhbkNyZWF0ZUluc3RhbmNlcyB7IHRydWUgfTsKICAgICBib29sIG1fc3VwcG9y
dHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMgeyB0cnVlIH07CiAgICAgYm9vbCBtX3N1cHBvcnRzU2Vzc2lv
bnMgeyB0cnVlIH07Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxSZWY8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+PiBtX3Nlc3Npb25zOworICAgIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8UmVm
PGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pj4gbV9zZXNzaW9uczsKIH07CiAKIGNsYXNz
IE1vY2tDRE0gOiBwdWJsaWMgQ0RNUHJpdmF0ZSB7CkBAIC0xMjIsNyArMTIyLDcgQEAgcHJpdmF0
ZToKICAgICBib29sIHN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkgY29uc3QgZmluYWw7CiAg
ICAgYm9vbCBzdXBwb3J0c1Nlc3Npb25zKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBzdXBwb3J0
c0luaXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
JikgY29uc3QgZmluYWw7Ci0gICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0
aXplUmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwor
ICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBzYW5pdGl6ZVJlc3BvbnNl
KGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdCBmaW5hbDsKICAgICBzdGQ6Om9w
dGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQoY29uc3QgU3RyaW5nJikgY29uc3QgZmlu
YWw7CiAKICAgICBXZWFrUHRyPE1vY2tDRE1GYWN0b3J5PiBtX2ZhY3Rvcnk7CkBAIC0xMzksNyAr
MTM5LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVt
ZW50YXRpb25UeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpN
b2NrOyB9CiAgICAgdm9pZCBpbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb24oY29uc3QgTWVkaWFL
ZXlTeXN0ZW1Db25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxv
d1BlcnNpc3RlbnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgc2V0
U2VydmVyQ2VydGlmaWNhdGUoUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3ND
YWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikgZmluYWw7CiAg
ICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIGNv
bnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWw7CiAgICAgUmVmUHRyPENETUluc3Rh
bmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOwpAQCAtMTU0LDggKzE1NCw4IEBAIHB1
YmxpYzoKICAgICBNb2NrQ0RNSW5zdGFuY2VTZXNzaW9uKFdlYWtQdHI8TW9ja0NETUluc3RhbmNl
PiYmKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVM
aWNlbnNlKGNvbnN0IFN0cmluZyYsIExpY2Vuc2VUeXBlLCBSZWY8RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiwgTGljZW5zZVVwZGF0ZUNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVz
dExpY2Vuc2UoTGljZW5zZVR5cGUsIGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgUmVm
PGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEsIExpY2Vuc2VDYWxsYmFj
ayYmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiwgTGljZW5z
ZVR5cGUsIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBMaWNlbnNlVXBkYXRl
Q2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBsb2FkU2Vzc2lvbihMaWNlbnNlVHlwZSwgY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgTG9hZFNlc3Npb25DYWxsYmFjayYmKSBmaW5hbDsK
ICAgICB2b2lkIGNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG9zZVNlc3Npb25DYWxsYmFj
ayYmKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVNlc3Npb25EYXRhKGNvbnN0IFN0cmluZyYsIExp
Y2Vuc2VUeXBlLCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlUHJv
eHkuY3BwCmluZGV4IDUxYzczOWMzMmM3NGQ3NzZkM2IxZjMwZTU1ZDVhNTRiZWIxMDgyYzYuLjBk
M2MzMGYzOWUxYmFjZGNlNGFkZGQyNmY0NmM2YjI4NWJlZWM2MGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VQcm94eS5j
cHAKQEAgLTYxLDcgKzYxLDcgQEAgUmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6flJlbW90ZUNETUlu
c3RhbmNlUHJveHkoKQogICAgIG1faW5zdGFuY2UtPmNsZWFyQ2xpZW50KCk7CiB9CiAKLXZvaWQg
UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6dW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNl
aXZlZChjb25zdCBTdHJpbmcmIHR5cGUsIFJlZjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGlu
aXREYXRhKQordm9pZCBSZW1vdGVDRE1JbnN0YW5jZVByb3h5Ojp1bnJlcXVlc3RlZEluaXRpYWxp
emF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYgdHlwZSwgUmVmPGNvbnN0IEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+JiYgaW5pdERhdGEpCiB7CiAgICAgaWYgKCFtX2NkbSkKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUNETUluc3RhbmNlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZVByb3h5LmgKaW5kZXggMDJjNWNkMzdhZTU0ODAyZjZkMGM4ZGNjY2IwYmE4
MGNmMzM4OGMzMy4uYzA5Y2ExNTRjMmM5Mzg3OTBjY2IwZDM3NmNlNTJlZDllNjlmM2IzYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNl
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5z
dGFuY2VQcm94eS5oCkBAIC02Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAgICAgUmVtb3RlQ0RNSW5z
dGFuY2VQcm94eShXZWFrUHRyPFJlbW90ZUNETVByb3h5PiYmLCBSZWY8V2ViQ29yZTo6Q0RNSW5z
dGFuY2U+JiYsIFVuaXF1ZVJlZjxSZW1vdGVDRE1JbnN0YW5jZUNvbmZpZ3VyYXRpb24+JiYsIFJl
bW90ZUNETUluc3RhbmNlSWRlbnRpZmllcik7CiAKICAgICAvLyBDRE1JbnN0YW5jZUNsaWVudAot
ICAgIHZvaWQgdW5yZXF1ZXN0ZWRJbml0aWFsaXphdGlvbkRhdGFSZWNlaXZlZChjb25zdCBTdHJp
bmcmLCBSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CisgICAg
dm9pZCB1bnJlcXVlc3RlZEluaXRpYWxpemF0aW9uRGF0YVJlY2VpdmVkKGNvbnN0IFN0cmluZyYs
IFJlZjxjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKIAog
ICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHkuY3BwCmluZGV4IDdiYTE2NjRkZjE0OGYyZDRmNjU0MzYxNGUzMTQwNDBhYjkyMjc5
ZWYuLmQ5ZWE4NWVlZDQ2ZjM2Njg0MmY0Njg5ZWMzZTRhZTk3MzYxZmU2OTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Q
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvblByb3h5LmNwcApAQCAtNzAsNyArNzAsNyBAQCB2b2lkIFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvblByb3h5OjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSB0eXBlLCBBdG9t
U3RyaW5nCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Nlc3Npb24tPnJlcXVlc3RM
aWNlbnNlKHR5cGUsIGluaXREYXRhVHlwZSwgaW5pdERhdGEuYnVmZmVyKCkucmVsZWFzZU5vbk51
bGwoKSwgW2NvbXBsZXRpb24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoUmVmPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVl
ZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3Vj
Y2VlZGVkKSBtdXRhYmxlIHsKKyAgICBtX3Nlc3Npb24tPnJlcXVlc3RMaWNlbnNlKHR5cGUsIGlu
aXREYXRhVHlwZSwgaW5pdERhdGEuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKSwgW2NvbXBsZXRp
b24gPSBXVEZNb3ZlKGNvbXBsZXRpb24pXSAoUmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlk
dWFsaXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBt
dXRhYmxlIHsKICAgICAgICAgY29tcGxldGlvbihJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoV1RGTW92
ZShtZXNzYWdlKSksIHNlc3Npb25JZCwgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgc3VjY2VlZGVk
ID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2VlZGVkKTsKICAgICB9KTsKIH0KQEAgLTExNSw3
ICsxMTUsNyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5OjpjbG9zZVNlc3Np
b24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIENsb3NlUwogCiB2b2lkIFJlbW90ZUNETUluc3Rh
bmNlU2Vzc2lvblByb3h5OjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCwgTGljZW5zZVR5cGUgdHlwZSwgUmVtb3ZlU2Vzc2lvbkRhdGFDYWxsYmFjayYmIGNvbXBsZXRp
b24pCiB7Ci0gICAgbV9zZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShzZXNzaW9uSWQsIHR5cGUs
IFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21wbGV0aW9uKV0gKENETUluc3RhbmNlU2Vzc2lvbjo6
S2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHVzZXMsIHN0ZDo6b3B0aW9uYWw8UmVmPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+PiYmIGV4cGlyZWRTZXNzaW9uc0RhdGEsIENETUluc3RhbmNlU2Vzc2lv
bjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgbV9zZXNzaW9uLT5yZW1v
dmVTZXNzaW9uRGF0YShzZXNzaW9uSWQsIHR5cGUsIFtjb21wbGV0aW9uID0gV1RGTW92ZShjb21w
bGV0aW9uKV0gKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJiYga2V5U3RhdHVz
ZXMsIHN0ZDo6b3B0aW9uYWw8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiYmIGV4
cGlyZWRTZXNzaW9uc0RhdGEsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2Nl
ZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8SVBDOjpTaGFyZWRCdWZmZXJD
b3B5PiBleHBpcmVkU2Vzc2lvbkRhdGFSZWZlcmVuY2U7CiAgICAgICAgIGlmIChleHBpcmVkU2Vz
c2lvbnNEYXRhKQogICAgICAgICAgICAgZXhwaXJlZFNlc3Npb25EYXRhUmVmZXJlbmNlID0gSVBD
OjpTaGFyZWRCdWZmZXJDb3B5KFdURk1vdmUoKmV4cGlyZWRTZXNzaW9uc0RhdGEpKTsKQEAgLTE0
OSw3ICsxNDksNyBAQCB2b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvblByb3h5Ojp1cGRhdGVL
ZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0b3ImJiBrZXlTdGF0dQogICAgIGdwdUNvbm5lY3Rpb25U
b1dlYlByb2Nlc3MtPmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb246OlVwZGF0ZUtleVN0YXR1c2VzKFdURk1vdmUoa2V5U3RhdHVzZXMpKSwgbV9pZGVu
dGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6c2VuZE1l
c3NhZ2UoQ0RNTWVzc2FnZVR5cGUgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
bWVzc2FnZSkKK3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uUHJveHk6OnNlbmRNZXNzYWdl
KENETU1lc3NhZ2VUeXBlIHR5cGUsIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IG1lc3NhZ2UpCiB7CiAgICAgaWYgKCFtX2NkbSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lv
blByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFu
Y2VTZXNzaW9uUHJveHkuaAppbmRleCBmZTczMDk3MTMxZTBiYjIwYTUwMDFlMTUwMTYwMmQ2NTE4
NmIzMDkwLi5iZjI3M2VhZWRlNjE0YzI3YmEyMDNjYjYyMjlhY2ZmNjMyNDU2YmIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNz
aW9uUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
SW5zdGFuY2VTZXNzaW9uUHJveHkuaApAQCAtNzcsNyArNzcsNyBAQCBwcml2YXRlOgogCiAgICAg
Ly8gQ0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50CiAgICAgdm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhL
ZXlTdGF0dXNWZWN0b3ImJikgZmluYWw7Ci0gICAgdm9pZCBzZW5kTWVzc2FnZShXZWJDb3JlOjpD
RE1NZXNzYWdlVHlwZSwgUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVz
c2FnZSkgZmluYWw7CisgICAgdm9pZCBzZW5kTWVzc2FnZShXZWJDb3JlOjpDRE1NZXNzYWdlVHlw
ZSwgUmVmPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkg
ZmluYWw7CiAgICAgdm9pZCBzZXNzaW9uSWRDaGFuZ2VkKGNvbnN0IFN0cmluZyYpIGZpbmFsOwog
ICAgIFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCgpIGZpbmFsIHsgcmV0dXJuIG1fZGlzcGxh
eUlEOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVDRE1Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQ0RN
UHJveHkuY3BwCmluZGV4IGY3Y2I2YTYzZWI5MzNhYmQ0ZDQ1M2EyMmFiMjk0ZjEzMDMyMzJiMDYu
LmEwNDQ3Mjg1OGNkMTIzOWVjOGJhYWNkYzJiYTQ4NWZhMThjZGM0ZGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmNwcApAQCAtNjgsNyAr
NjgsNyBAQCBib29sIFJlbW90ZUNETVByb3h5OjpzdXBwb3J0c0luaXREYXRhKGNvbnN0IEF0b21T
dHJpbmcmIHR5cGUsIGNvbnN0IEZyYWdtZW50ZWRTaAogICAgIHJldHVybiBtX3ByaXZhdGUtPnN1
cHBvcnRzSW5pdERhdGEodHlwZSwgZGF0YSk7CiB9CiAKLVJlZlB0cjxGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiBSZW1vdGVDRE1Qcm94eTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiByZXNwb25zZSkKK1JlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBSZW1vdGVDRE1Qcm94eTo6c2FuaXRpemVSZXNwb25zZShjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiByZXNwb25zZSkKIHsKICAgICByZXR1cm4gbV9wcml2YXRlLT5zYW5pdGl6ZVJl
c3BvbnNlKHJlc3BvbnNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVDRE1Qcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZUNETVByb3h5LmgKaW5kZXggM2I2NmM3NzU3ODcwNjllOTc2ZWUwNjRmOTZmZjA3YzBm
NzEyYTkwYi4uZWNkNjg5YTY3MzE3NzA5ZGJkZmQzMDE4NGU0MDRhNmEzNzljOWM1YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUNETVByb3h5LmgKQEAgLTU5
LDcgKzU5LDcgQEAgcHVibGljOgogICAgIFJlbW90ZUNETUZhY3RvcnlQcm94eSogZmFjdG9yeSgp
IGNvbnN0IHsgcmV0dXJuIG1fZmFjdG9yeS5nZXQoKTsgfQogCiAgICAgYm9vbCBzdXBwb3J0c0lu
aXREYXRhKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyJik7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNh
bml0aXplUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVz
cG9uc2UpOworICAgIFJlZlB0cjxjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVy
PiBzYW5pdGl6ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IHJlc3BvbnNlKTsKICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVTZXNzaW9uSWQo
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSWQpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvU2hhcmVkQnVmZmVyQ29weS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmNwcAppbmRleCA3YWFkZjkyZTM2MWRlZmFj
NTA4ZWJkNDhkN2QwNzU4OGI0ZTQ3ZDQ2Li42MDYyMzRkZTA0ZjFhNjE2MjNmMDI0NjIzYTFjMmFj
MTlhMDc0ODczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRC
dWZmZXJDb3B5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZm
ZXJDb3B5LmNwcApAQCAtNDEsNyArNDEsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlckNvcHk6OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogCiBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckNv
cHk+IFNoYXJlZEJ1ZmZlckNvcHk6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBSZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVy
PiBidWZmZXI7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIpKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgIHJldHVybiB7IElQQzo6U2hhcmVkQnVmZmVyQ29weShXVEZN
b3ZlKGJ1ZmZlcikpIH07CkBAIC01MSw3ICs1MSwxNCBAQCBjb25zdCB1aW50OF90KiBTaGFyZWRC
dWZmZXJDb3B5OjpkYXRhKCkgY29uc3QKIHsKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gZG93bmNhc3Q8U2hhcmVkQnVmZmVyPihtX2J1ZmZl
ci5nZXQoKSktPmRhdGEoKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8Y29uc3QgU2hhcmVkQnVmZmVy
PihtX2J1ZmZlci5nZXQoKSktPmRhdGEoKTsKK30KKworUmVmPGNvbnN0IFNoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyQ29weTo6c2FmZUJ1ZmZlcigpIGNvbnN0Cit7CisgICAgaWYgKG1fYnVmZmVy
KQorICAgICAgICByZXR1cm4gYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKTsKKyAgICByZXR1cm4g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJDb3B5LmgKaW5kZXggMzcwYjgzMjhk
NzZjOWMzZjc3MDA0NzM1YWQzNTlhZTZkM2VkNjA5Mi4uYzg3ZDQwYmM0MzlhYjkzNzA4MzFiYjc1
ZmM5NmZkNTc4Mjk3MGM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
U2hhcmVkQnVmZmVyQ29weS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJl
ZEJ1ZmZlckNvcHkuaApAQCAtNDAsMTYgKzQwLDE4IEBAIGNsYXNzIFNoYXJlZEJ1ZmZlckNvcHkg
ewogcHVibGljOgogICAgIFNoYXJlZEJ1ZmZlckNvcHkoKSA9IGRlZmF1bHQ7CiAKLSAgICBleHBs
aWNpdCBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxjb25z
dCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKKyAgICAgICAgOiBt
X2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpIHsgfQorICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckNv
cHkoUmVmPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQog
ICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CiAgICAgZXhwbGljaXQgU2hh
cmVkQnVmZmVyQ29weShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCiAgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7IH0KLSAgICBleHBsaWNp
dCBTaGFyZWRCdWZmZXJDb3B5KFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQorICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlckNvcHkoUmVmPGNvbnN0IFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKSB7
IH0KICAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXJDb3B5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQogICAgICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkgeyB9CiAg
ICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyQ29weShjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyJiBidWZmZXIpCi0gICAgICAgIDogbV9idWZmZXIoY29uc3RfY2FzdDxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKj4oJmJ1ZmZlcikpIHsgfQorICAgICAgICA6IG1fYnVm
ZmVyKCZidWZmZXIpIHsgfQogCiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX2J1
ZmZlciA/IG1fYnVmZmVyLT5zaXplKCkgOiAwOyB9CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Qg
eyByZXR1cm4gbV9idWZmZXIgPyBtX2J1ZmZlci0+aXNFbXB0eSgpIDogdHJ1ZTsgfQpAQCAtNTcs
MTUgKzU5LDE1IEBAIHB1YmxpYzoKICAgICAvLyBUaGUgZm9sbG93aW5nIG1ldGhvZHMgbXVzdCBv
bmx5IGJlIHVzZWQgb24gdGhlIHJlY2VpdmVyJ3MgSVBDIHNpZGUuCiAgICAgLy8gSXQgcmVsaWVz
IG9uIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCB0aGF0IG1ha2VzIG1fYnVmZmVyIGJlY29tZXMg
YSBjb250aWd1b3VzIFNoYXJlZEJ1ZmZlcgogICAgIC8vIG9uY2UgaXQncyBkZXNlcmlhbGlzZWQg
b3ZlciBJUEMuCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyKCkgY29u
c3QgeyByZXR1cm4gZG93bmNhc3Q8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPihtX2J1ZmZlci5nZXQo
KSk7IH0KLSAgICBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBzYWZlQnVmZmVyKCkgY29uc3Qg
eyByZXR1cm4gbV9idWZmZXIgPyBidWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpIDogV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsgfQorICAgIFJlZlB0cjxjb25zdCBXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IGJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PGNvbnN0IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4obV9idWZmZXIuZ2V0KCkpOyB9CisgICAgUmVmPGNvbnN0IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gc2FmZUJ1ZmZlcigpIGNvbnN0OwogICAgIGNvbnN0IHVpbnQ4X3QqIGRh
dGEoKSBjb25zdDsKIAogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICBzdGF0
aWMgV0FSTl9VTlVTRURfUkVUVVJOIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyQ29weT4gZGVj
b2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8V2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CisgICAgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OkZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSVBDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCA5
OTg3YjFhODQ3NjhmMjczODYzZGMwYjFhNTUzOTE1M2M0OTgxNzgzLi4xNjNiNmJjNTRjMTliYjA0
NzliNzZiMTkwMmE2NjMxZDYyZGQ5OThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTMxMTEsNiArMzExMSw2MiBAQCBzdGQ6Om9wdGlv
bmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+Pjo6ZGVjbwogICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKIH0KIAor
dm9pZCBBcmd1bWVudENvZGVyPFJlZlB0cjxjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWZQdHI8Y29uc3QgV2Vi
Q29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBlbmNvZGVTaGFy
ZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKK30KKworc3RkOjpvcHRpb25hbDxSZWZQ
dHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmUHRyPGNv
bnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCit7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgIGlmICghZGVj
b2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGJ1ZmZlcikpCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisKKyAgICByZXR1cm4gV1RGTW92ZShidWZmZXIpOworfQorCit2b2lkIEFyZ3VtZW50
Q29kZXI8UmVmPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+Pjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZjxjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPiYgYnVmZmVyKQoreworICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBi
dWZmZXIucHRyKCkpOworfQorCitzdGQ6Om9wdGlvbmFsPFJlZjxjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWY8Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2Rlciwg
YnVmZmVyKSB8fCAhYnVmZmVyKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAg
cmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8
UmVmUHRyPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgUmVmUHRyPGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIGJ1ZmZlcikK
K3sKKyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgYnVmZmVyLmdldCgpKTsKK30KKwor
c3RkOjpvcHRpb25hbDxSZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxS
ZWZQdHI8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyPj46OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQoreworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAgICBpZiAoIWRlY29k
ZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBidWZmZXIpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworCisgICAgcmV0dXJuIFdURk1vdmUoYnVmZmVyKTsKK30KKwordm9pZCBBcmd1bWVudENv
ZGVyPFJlZjxjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI+Pjo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0IFJlZjxjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiBidWZmZXIpCit7
CisgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGJ1ZmZlci5wdHIoKSk7Cit9CisKK3N0
ZDo6b3B0aW9uYWw8UmVmPGNvbnN0IFNoYXJlZEJ1ZmZlcj4+IEFyZ3VtZW50Q29kZXI8UmVmPGNv
bnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sK
KyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgaWYgKCFkZWNvZGVTaGFyZWRC
dWZmZXIoZGVjb2RlciwgYnVmZmVyKSB8fCAhYnVmZmVyKQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworCisgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworfQorCiAjaWYg
RU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkgJiYgUExBVEZPUk0oQ09DT0EpCiBzdGF0aWMgU2hh
cmVhYmxlUmVzb3VyY2U6OkhhbmRsZSB0cnlDb252ZXJ0VG9TaGFyZWFibGVSZXNvdXJjZUhhbmRs
ZShjb25zdCBTY3JpcHRCdWZmZXImIHNjcmlwdCkKIHsKQEAgLTMxODAsNyArMzIzNiw3IEBAIHZv
aWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlCiB7CiAgICAgZW5jb2RlciA8PCBtZXNzYWdlLmZpcnN0Owog
Ci0gICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1lc3NhZ2VEYXRhID0gbWVzc2Fn
ZS5zZWNvbmQuY29weVJlZigpOworICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyPiBtZXNzYWdlRGF0YSA9IG1lc3NhZ2Uuc2Vjb25kLmNvcHlSZWYoKTsKICAgICBlbmNvZGVy
IDw8IG1lc3NhZ2VEYXRhOwogfQogCkBAIC0zMTkwLDcgKzMyNDYsNyBAQCBzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4gIEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6Q0RNSQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUodHlwZSkpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKLSAgICBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyOworICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBidWZmZXI7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShidWZmZXIpIHx8ICFidWZmZXIpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgKaW5kZXggNmUyN2E3ODcyMDIxNzFiYmNlZGJiNjQ4MzkyMGE3ZTc5YmQ1ODBiZi4u
MDQ0MzU5ZTk4NGUwOTA0MzE1NjU1M2U2YWZmYjBmYjNhNWMwOTEzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTc3Miw2ICs3NzIsMjYgQEAg
dGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
Pj4gewogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
PiBkZWNvZGUoRGVjb2RlciYpOwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2Rl
cjxSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4+IHsKKyAgICBz
dGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFJlZlB0cjxjb25zdCBXZWJDb3JlOjpG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZlB0
cjxjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXIm
KTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPGNvbnN0IFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVu
Y29kZXImLCBjb25zdCBSZWY8Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4m
KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlcj4+IGRlY29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVj
dCBBcmd1bWVudENvZGVyPFJlZlB0cjxjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiB7Cisg
ICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBSZWZQdHI8Y29uc3QgV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZlB0cjxjb25z
dCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiBkZWNvZGUoRGVjb2RlciYpOworfTsKKwordGVtcGxh
dGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVy
Pj4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgUmVmPGNvbnN0IFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8Y29u
c3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKK307CisKIHRlbXBs
YXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6U2NyaXB0QnVmZmVyPiB7CiAgICAg
c3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpTY3JpcHRCdWZmZXIm
KTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTY3JpcHRCdWZmZXI+IGRlY29k
ZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0
UmVzdWx0RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0
YS5jcHAKaW5kZXggYjYwN2FjZTgzOGUwNGJjZTFhNmFlZTRkYTU2NTU5ZTA5Njk4Mzk4ZS4uMmRi
MWY3MjMwYmRmMWJkZTYzMTMxNzExNGJjYzMyZjVkNTE1MTdiZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcApAQCAtODUsNyArODUsNyBAQCBXZWJI
aXRUZXN0UmVzdWx0RGF0YTo6V2ViSGl0VGVzdFJlc3VsdERhdGEoY29uc3QgV2ViQ29yZTo6SGl0
VGVzdFJlc3VsdCYgaGl0VGVzdAogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoSW1hZ2UqIGlt
YWdlID0gaGl0VGVzdFJlc3VsdC5pbWFnZSgpKSB7Ci0gICAgICAgIFJlZlB0cjxGcmFnbWVudGVk
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBpbWFnZS0+ZGF0YSgpOworICAgICAgICBSZWZQdHI8Y29u
c3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaW1hZ2UtPmRhdGEoKTsKICAgICAg
ICAgaWYgKGJ1ZmZlcikgewogICAgICAgICAgICAgaW1hZ2VTaGFyZWRNZW1vcnkgPSBXZWJLaXQ6
OlNoYXJlZE1lbW9yeTo6Y29weUJ1ZmZlcigqYnVmZmVyKTsKICAgICAgICAgICAgIGltYWdlU2l6
ZSA9IGJ1ZmZlci0+c2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9SZW1vdGVDRE0uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9SZW1vdGVDRE0uY3BwCmluZGV4IGMyOGZlNjVmMGNmMTY0Mzk5ODE4YWNhMzJmOTgxY2M3
NzhmMWU5MTkuLmVhM2NlODc2ZmZjZjMwYTFmMDQwMTU1Y2JmNmI4Mzk3ZDQ1NzNmYjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETS5jcHAKQEAg
LTEyOSw3ICsxMjksNyBAQCB2b2lkIFJlbW90ZUNETTo6bG9hZEFuZEluaXRpYWxpemUoKQogICAg
IG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6UmVtb3RlQ0RNUHJveHk6OkxvYWRBbmRJbml0aWFsaXplKCksIG1faWRlbnRpZmllcik7
CiB9CiAKLVJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBSZW1vdGVDRE06OnNhbml0aXpl
UmVzcG9uc2UoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgcmVzcG9uc2UpIGNvbnN0CitS
ZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gUmVtb3RlQ0RNOjpzYW5pdGl6ZVJl
c3BvbnNlKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHJlc3BvbnNlKSBjb25zdAogewog
ICAgIC8vIFRoaXMgY2hlY2sgd2lsbCBiZSBkb25lLCBsYXRlciwgaW5zaWRlIFJlbW90ZUNETUlu
c3RhbmNlU2Vzc2lvblByb3h5Ojp1cGRhdGVMaWNlbnNlKCkuCiAgICAgcmV0dXJuIHJlc3BvbnNl
LmNvcHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
UmVtb3RlQ0RNLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNE
TS5oCmluZGV4IDhjNDU0ZWI4M2U1OTk0YThlNGQ1OTJkNTFkZjkxZmY5YjUyM2NiZWYuLjllZmNk
NGM4ODdjZDFiMDJiODM4ZTY0NjUwOGE1NTIyMDFjMDRkOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE0uaApAQCAtNTQsNyArNTQsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgZGlzdGluY3RpdmVJZGVudGlmaWVyc0FyZVVuaXF1ZVBlck9yaWdpbkFu
ZENsZWFyYWJsZShjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJikgY29u
c3QgZmluYWw7CiAgICAgUmVmUHRyPFdlYkNvcmU6OkNETUluc3RhbmNlPiBjcmVhdGVJbnN0YW5j
ZSgpIGZpbmFsOwogICAgIHZvaWQgbG9hZEFuZEluaXRpYWxpemUoKSBmaW5hbDsKLSAgICBSZWZQ
dHI8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVSZXNwb25zZShjb25z
dCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3QgZmluYWw7CisgICAgUmVm
UHRyPGNvbnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IHNhbml0aXplUmVzcG9u
c2UoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYpIGNvbnN0IGZpbmFsOwog
ICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZVNlc3Npb25JZChjb25zdCBTdHJpbmcm
KSBjb25zdCBmaW5hbDsKIAogICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBzdXBwb3J0ZWRJbml0RGF0
YVR5cGVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLnN1cHBvcnRlZElu
aXREYXRhVHlwZXM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKaW5kZXggNzVkNWU1YTc5NTE0ZGJjM2FhYWMw
MGI5ODg0YTU3ZGFjMTk4ZjlmNi4uYmJkZmEzMTFlYzU2MGFlZmQ4ZmExODNiMWQwYjM1YjdhYmFl
ZDdmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1v
dGVDRE1JbnN0YW5jZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZS5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBSZW1vdGVDRE1J
bnN0YW5jZTo6aW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbnN0IFdlYkNvcmU6OkNETUtl
eVN5c3RlbUMKICAgICBtX2ZhY3RvcnktPmdwdVByb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlQ0RNSW5zdGFuY2VQcm94eTo6
SW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24sIGRpc3RpbmN0aXZlSWRl
bnRpZmllcnMsIHBlcnNpc3RlbnRTdGF0ZSksIFdURk1vdmUoY2FsbGJhY2spLCBtX2lkZW50aWZp
ZXIpOwogfQogCi12b2lkIFJlbW90ZUNETUluc3RhbmNlOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShS
ZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBjZXJ0aWZpY2F0ZSwgU3VjY2Vz
c0NhbGxiYWNrJiYgY2FsbGJhY2spCit2b2lkIFJlbW90ZUNETUluc3RhbmNlOjpzZXRTZXJ2ZXJD
ZXJ0aWZpY2F0ZShSZWY8Y29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBj
ZXJ0aWZpY2F0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKCFtX2Zh
Y3RvcnkpIHsKICAgICAgICAgY2FsbGJhY2soRmFpbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2UuaAppbmRleCAyYzc4
NTFlNDQwYjA4YTUyYTJhZTcwZGE3ZTQxODg4MmUzYzYxNDM5Li4xMGE3YmM4Zjg2NWY1ZGFiZjAz
NTU0OWVjOWZmOTU0NzEyNTFjMDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5jZS5oCkBAIC01NCw3ICs1NCw3IEBAIHBy
aXZhdGU6CiAKICAgICBJbXBsZW1lbnRhdGlvblR5cGUgaW1wbGVtZW50YXRpb25UeXBlKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gSW1wbGVtZW50YXRpb25UeXBlOjpSZW1vdGU7IH0KICAgICB2b2lk
IGluaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbihjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uJiwgQWxsb3dEaXN0aW5jdGl2ZUlkZW50aWZpZXJzLCBBbGxvd1BlcnNpc3Rl
bnRTdGF0ZSwgU3VjY2Vzc0NhbGxiYWNrJiYpIGZpbmFsOwotICAgIHZvaWQgc2V0U2VydmVyQ2Vy
dGlmaWNhdGUoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYsIFN1Y2Nlc3ND
YWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHNldFNlcnZlckNlcnRpZmljYXRlKFJlZjxjb25z
dCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmLCBTdWNjZXNzQ2FsbGJhY2smJikg
ZmluYWw7CiAgICAgdm9pZCBzZXRTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpIGZpbmFs
OwogICAgIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9j
b25maWd1cmF0aW9uLmtleVN5c3RlbTsgfQogICAgIFJlZlB0cjxXZWJDb3JlOjpDRE1JbnN0YW5j
ZVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9u
LmNwcAppbmRleCA4YmVjZDU5YjVlYjM3ZTBkM2E1MTQ1MzhmMzczODFkN2Y3N2Q4Y2NlLi44ZGY5
MmVkMDc1MTQxYjA0OGEzNDdkYTU4NWNhMWRkZGQwYWNlNDhmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVDRE1JbnN0YW5j
ZVNlc3Npb24uY3BwCkBAIC00OSw3ICs0OSw3IEBAIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6
UmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uKFdlYWtQdHI8UmVtb3RlQ0RNRmFjdG9yeT4mJiBmCiB7
CiB9CiAKLXZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNl
bnNlVHlwZSB0eXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykK
K3ZvaWQgUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlw
ZSB0eXBlLCBjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxjb25zdCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykK
IHsKICAgICBpZiAoIW1fZmFjdG9yeSkgewogICAgICAgICBjYWxsYmFjayhTaGFyZWRCdWZmZXI6
OmNyZWF0ZSgpLCBlbXB0eVN0cmluZygpLCBmYWxzZSwgRmFpbGVkKTsKQEAgLTY1LDcgKzY1LDcg
QEAgdm9pZCBSZW1vdGVDRE1JbnN0YW5jZVNlc3Npb246OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VU
eXBlIHR5cGUsIGNvbnN0IEF0b21TdHJpbmcKICAgICB9LCBtX2lkZW50aWZpZXIpOwogfQogCi12
b2lkIFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCwgTGljZW5zZVR5cGUgdHlwZSwgUmVmPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYmIGNhbGxiYWNrKQordm9pZCBSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb246OnVwZGF0ZUxpY2Vuc2UoY29uc3QgU3RyaW5nJiBzZXNzaW9u
SWQsIExpY2Vuc2VUeXBlIHR5cGUsIFJlZjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IHJlc3BvbnNlLCBMaWNlbnNlVXBkYXRlQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKICAgICBpZiAo
IW1fZmFjdG9yeSkgewogICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6
Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgRmFpbGVkKTsKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lk
IFJlbW90ZUNETUluc3RhbmNlU2Vzc2lvbjo6cmVtb3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5n
JiBzZXNzaW9uSWQsIExpY2VucwogICAgIH0KIAogICAgIG1fZmFjdG9yeS0+Z3B1UHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1v
dGVDRE1JbnN0YW5jZVNlc3Npb25Qcm94eTo6UmVtb3ZlU2Vzc2lvbkRhdGEoc2Vzc2lvbklkLCB0
eXBlKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChLZXlTdGF0dXNWZWN0b3ImJiBj
aGFuZ2VkS2V5cywgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+JiYgbWVzc2Fn
ZSwgYm9vbCBzdWNjZWVkZWQpIG11dGFibGUgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZjxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyPj4gcmVhbE1lc3NhZ2UgPSBzdGQ6Om51bGxvcHQ7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8UmVmPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+PiByZWFs
TWVzc2FnZSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgaWYgKG1lc3NhZ2UgJiYgbWVzc2FnZS52
YWx1ZSgpLmJ1ZmZlcigpKQogICAgICAgICAgICAgcmVhbE1lc3NhZ2UgPSBtZXNzYWdlLnZhbHVl
KCkuYnVmZmVyKCkucmVsZWFzZU5vbk51bGwoKTsKICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShj
aGFuZ2VkS2V5cyksIFdURk1vdmUocmVhbE1lc3NhZ2UpLCBzdWNjZWVkZWQgPyBTdWNjZWVkZWQg
OiBGYWlsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvUmVtb3RlQ0RNSW5zdGFuY2VTZXNzaW9uLmgKaW5kZXggNGU0Y2QyYzAwNWM2YjAw
NjVmOWNkYjE4OGM0YmNlMGI1YmZhNjYwMS4uYzYyNTJmYTc4NTBkODcwY2FlMWE5MjZmNzM2ODkz
M2NkMDljODU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9SZW1vdGVDRE1JbnN0YW5jZVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1JlbW90ZUNETUluc3RhbmNlU2Vzc2lvbi5oCkBAIC01OSw4ICs1OSw4IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIHNldENsaWVudChXZWFrUHRyPFdlYkNvcmU6OkNETUluc3Rh
bmNlU2Vzc2lvbkNsaWVudD4mJiBjbGllbnQpIGZpbmFsIHsgbV9jbGllbnQgPSBXVEZNb3ZlKGNs
aWVudCk7IH0KICAgICB2b2lkIGNsZWFyQ2xpZW50KCkgZmluYWwgeyBtX2NsaWVudCA9IG51bGxw
dHI7IH0KLSAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9tU3Ry
aW5nJiBpbml0RGF0YVR5cGUsIFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYm
IGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVMaWNl
bnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVmPFdlYkNvcmU6OkZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VVcGRhdGVDYWxsYmFjayYm
KSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9t
U3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxjb25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB1
cGRhdGVMaWNlbnNlKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBMaWNlbnNlVHlwZSwgUmVmPGNv
bnN0IFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgcmVzcG9uc2UsIExpY2Vuc2VV
cGRhdGVDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRTZXNzaW9uKExpY2Vuc2VUeXBl
LCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIExvYWRTZXNz
aW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBjbG9zZVNlc3Npb24oY29uc3QgU3RyaW5n
JiBzZXNzaW9uSWQsIENsb3NlU2Vzc2lvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgcmVt
b3ZlU2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlLCBSZW1v
dmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGLmgKaW5kZXgg
OWMwODgxNjFlZGRiZjIzNDBmODdhMGJiOTczNDEzN2VhN2UzZDcxMy4uYTU0Y2U5NmRhYTE3NWZl
NGEyMjZlNzlkMGMxZThjZDE1ZjFlMWExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkYuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRi5oCkBAIC00NSw3
ICs0NSw3IEBAIGNsYXNzIFJlbW90ZUltYWdlRGVjb2RlckFWRiBmaW5hbAogICAgIDogcHVibGlj
IFdlYkNvcmU6OkltYWdlRGVjb2RlcgogICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPFJlbW90
ZUltYWdlRGVjb2RlckFWRj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3RlSW1hZ2VE
ZWNvZGVyQVZGPiBjcmVhdGUoUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlciYgbWFuYWdlciwg
Y29uc3QgV2ViQ29yZTo6SW1hZ2VEZWNvZGVySWRlbnRpZmllciYgaWRlbnRpZmllciwgV2ViQ29y
ZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCisgICAg
c3RhdGljIFJlZjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IGNyZWF0ZShSZW1vdGVJbWFnZURlY29k
ZXJBVkZNYW5hZ2VyJiBtYW5hZ2VyLCBjb25zdCBXZWJDb3JlOjpJbWFnZURlY29kZXJJZGVudGlm
aWVyJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHsKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGKG1hbmFnZXIsIGlkZW50
aWZpZXIsIG1pbWVUeXBlKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdl
ci5jcHAKaW5kZXggYmVkZGVjYmIwNzRkMzQxMmE5YmU5M2NiY2Q1OWFlMTkyNDdmMmI0YS4uMTg0
ZmVkN2FhZDFlZDk4YTM3M2M3NGM4YmM1MWFiYzUzYjQ4NDYyYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZNYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdl
RGVjb2RlckFWRk1hbmFnZXIuY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVmUHRyPFJlbW90ZUltYWdlRGVjb2Rl
ckFWRj4gUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlcjo6Y3JlYXRlSW1hZ2VEZWNvZGVyKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIEFscGhh
T3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbikKK1JlZlB0cjxSZW1vdGVJbWFnZURlY29kZXJBVkY+IFJlbW90ZUlt
YWdlRGVjb2RlckFWRk1hbmFnZXI6OmNyZWF0ZUltYWdlRGVjb2Rlcihjb25zdCBGcmFnbWVudGVk
U2hhcmVkQnVmZmVyJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBBbHBoYU9wdGlvbiBh
bHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pCiB7CiAgICAgc3RkOjpvcHRpb25hbDxJbWFnZURlY29kZXJJZGVudGlmaWVyPiBp
bWFnZURlY29kZXJJZGVudGlmaWVyOwogICAgIGlmICghZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6OlJlbW90ZUltYWdlRGVjb2RlckFW
RlByb3h5OjpDcmVhdGVEZWNvZGVyKElQQzo6U2hhcmVkQnVmZmVyQ29weShkYXRhKSwgbWltZVR5
cGUpLCBNZXNzYWdlczo6UmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHk6OkNyZWF0ZURlY29kZXI6
OlJlcGx5KGltYWdlRGVjb2RlcklkZW50aWZpZXIpLCAwKSkKQEAgLTQ4LDcgKzQ4LDcgQEAgUmVm
UHRyPFJlbW90ZUltYWdlRGVjb2RlckFWRj4gUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFuYWdlcjo6
Y3JlYXRlSW1hZ2VEZWNvZGVyKEYKICAgICBpZiAoIWltYWdlRGVjb2RlcklkZW50aWZpZXIpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byByZW1vdGVJbWFnZURlY29kZXIgPSBS
ZW1vdGVJbWFnZURlY29kZXJBVkY6OmNyZWF0ZSgqdGhpcywgKmltYWdlRGVjb2RlcklkZW50aWZp
ZXIsIGRhdGEsIG1pbWVUeXBlKTsKKyAgICBhdXRvIHJlbW90ZUltYWdlRGVjb2RlciA9IFJlbW90
ZUltYWdlRGVjb2RlckFWRjo6Y3JlYXRlKCp0aGlzLCAqaW1hZ2VEZWNvZGVySWRlbnRpZmllciwg
bWltZVR5cGUpOwogICAgIG1fcmVtb3RlSW1hZ2VEZWNvZGVycy5hZGQoKmltYWdlRGVjb2Rlcklk
ZW50aWZpZXIsIHJlbW90ZUltYWdlRGVjb2Rlcik7CiAKICAgICByZXR1cm4gcmVtb3RlSW1hZ2VE
ZWNvZGVyOwpAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFu
YWdlcjo6c2V0VXNlR1BVUHJvY2Vzcyhib29sIHVzZUdQVVByb2Nlc3MpCiAgICAgSW1hZ2VEZWNv
ZGVyOjppbnN0YWxsRmFjdG9yeSh7CiAgICAgICAgIFJlbW90ZUltYWdlRGVjb2RlckFWRjo6c3Vw
cG9ydHNNZWRpYVR5cGUsCiAgICAgICAgIFJlbW90ZUltYWdlRGVjb2RlckFWRjo6Y2FuRGVjb2Rl
VHlwZSwKLSAgICAgICAgW3RoaXNdKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikgeworICAgICAgICBbdGhp
c10oY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
IGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSB7CiAgICAgICAgICAgICByZXR1cm4gY3JlYXRl
SW1hZ2VEZWNvZGVyKGRhdGEsIG1pbWVUeXBlLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pOwogICAgICAgICB9CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1JlbW90ZUltYWdlRGVjb2RlckFWRk1hbmFnZXIuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZG
TWFuYWdlci5oCmluZGV4IDM2MThhZmQxMjA5OGI1NTc2YjRkZDRmZmJmM2MwNmZiYTg0MmE3NjQu
Ljk5MmVkMjFhNDcyYmRiNTdhZDFkNWUxZTI1YmQ2ZDE4ODVhMjkyOTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGTWFu
YWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvUmVtb3RlSW1h
Z2VEZWNvZGVyQVZGTWFuYWdlci5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICBHUFVQ
cm9jZXNzQ29ubmVjdGlvbiYgZW5zdXJlR1BVUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKIAogcHJpdmF0
ZToKLSAgICBSZWZQdHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBjcmVhdGVJbWFnZURlY29kZXIo
V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgV2ViQ29yZTo6QWxwaGFPcHRpb24sIFdlYkNvcmU6OkdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uKTsKKyAgICBSZWZQdHI8UmVtb3RlSW1hZ2VEZWNvZGVyQVZGPiBjcmVhdGVJbWFnZURl
Y29kZXIoY29uc3QgV2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgV2ViQ29yZTo6QWxwaGFPcHRpb24sIFdlYkNvcmU6OkdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uKTsKIAogICAgIC8vIEdQVVByb2Nlc3NDb25uZWN0aW9uOjpDbGll
bnQuCiAgICAgdm9pZCBncHVQcm9jZXNzQ29ubmVjdGlvbkRpZENsb3NlKEdQVVByb2Nlc3NDb25u
ZWN0aW9uJikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNGEwMGYyMjhjZDUwZjg1YzAzZjk5N2Yw
NDdjNjljZTUyMGU5ZjE3Ny4uMjJhNWVkM2MyODkxMDJjM2E5MTQyNTNlOGZmYzE1ZDk1Yzk0OTQ1
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLmNwcApAQCAtMjE3LDE1ICsyMTcsMTUgQEAgdm9pZCBXZWJSZXNvdXJjZUxv
YWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBQcmkKICAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSwgV1RG
TW92ZShwb2xpY3lEZWNpc2lvbkNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYg
ZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVEYXRhKElQQzo6U2hhcmVkQnVmZmVyQ29weSYmIGRhdGEsIGludDY0X3QgZW5j
b2RlZERhdGFMZW5ndGgpCiB7CiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhIG9mIHNpemUgJWx1IGZvciAnJXMnIiwgZGF0YS5z
aXplKCksIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKICAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05ldHdvcmtSZXNwb25zZSwgIk5l
dHdvcmsgcHJvY2VzcyBzaG91bGQgbm90IHNlbmQgZGF0YSB1bnRpbCB3ZSd2ZSB2YWxpZGF0ZWQg
dGhlIHJlc3BvbnNlIik7CiAKICAgICBpZiAoVU5MSUtFTFkobV9pbnRlcmNlcHRDb250cm9sbGVy
LmlzSW50ZXJjZXB0aW5nKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpKSkpIHsKLSAgICAgICAg
bV9pbnRlcmNlcHRDb250cm9sbGVyLmRlZmVyKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGJ1ZmZlciA9IGRhdGEuYnVmZmVy
KCksIGVuY29kZWREYXRhTGVuZ3RoXSgpIG11dGFibGUgeworICAgICAgICBtX2ludGVyY2VwdENv
bnRyb2xsZXIuZGVmZXIobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGVuY29kZWREYXRh
TGVuZ3RoXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKG1fY29yZUxvYWRlcikKLSAgICAg
ICAgICAgICAgICBkaWRSZWNlaXZlRGF0YShJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoV1RGTW92ZShi
dWZmZXIpKSwgZW5jb2RlZERhdGFMZW5ndGgpOworICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVE
YXRhKFdURk1vdmUoZGF0YSksIGVuY29kZWREYXRhTGVuZ3RoKTsKICAgICAgICAgfSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAppbmRleCBhYzBhZGM5YjhkN2E0ZjIxZThiY2FiNWY4
ODkyNDQ1OGU1NGUyYjFjLi5iZmRkMjk1NWU0YTNkNThmY2RhMDIyODg5YjA1ZTJkY2ViYTdhNGU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLmgKQEAgLTg0LDcgKzg0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdpbGxTZW5k
UmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5j
ZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpOwogICAgIHZvaWQg
ZGlkU2VuZERhdGEodWludDY0X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVNl
bnQpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmLCBQcml2YXRlUmVsYXllZCwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJl
c3BvbnNlTWVzc2FnZSk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OlNoYXJl
ZEJ1ZmZlckNvcHkmIGRhdGEsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOworICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiYgZGF0YSwgaW50NjRfdCBlbmNv
ZGVkRGF0YUxlbmd0aCk7CiAgICAgdm9pZCBkaWRGaW5pc2hSZXNvdXJjZUxvYWQoY29uc3QgV2Vi
Q29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdm9pZCBkaWRGYWlsUmVzb3VyY2VMb2Fk
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGRpZEZhaWxTZXJ2aWNl
V29ya2VyTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcAppbmRleCAyOGVjOGUyMzhjYTViZmRmMGRjNTI2ZjU2ZDZlZmIxODkw
MGFjYmQwLi4zYjhhYzM2ZDBhZTlkMTc0Y2ZhNjY2YjRiZmM0MTVhODMwZGE3MGViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTExODcsOCArMTE4NywxMSBAQCB2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqIGxvYWRl
cikKICAgICAgICAgICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAK
LSAgICAgICAgICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtYWluUmVzb3VyY2VE
YXRhID0gbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7Ci0gICAgICAgICAgICBJUEM6OkRhdGFS
ZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgpIDogbnVsbHB0ciwgbWFpblJlc291cmNlRGF0YSA/
IG1haW5SZXNvdXJjZURhdGEtPnNpemUoKSA6IDApOworICAgICAgICAgICAgUmVmUHRyPGNvbnN0
IFNoYXJlZEJ1ZmZlcj4gY29udGlndW91c0RhdGE7CisgICAgICAgICAgICBSZWZQdHI8Y29uc3Qg
RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGxvYWRlci0+bWFpblJl
c291cmNlRGF0YSgpOworICAgICAgICAgICAgaWYgKG1haW5SZXNvdXJjZURhdGEpCisgICAgICAg
ICAgICAgICAgY29udGlndW91c0RhdGEgPSBtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91
cygpOworICAgICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UoY29udGln
dW91c0RhdGEgPyBjb250aWd1b3VzRGF0YS0+ZGF0YSgpIDogbnVsbHB0ciwgY29udGlndW91c0Rh
dGEgPyBjb250aWd1b3VzRGF0YS0+c2l6ZSgpIDogMCk7CiAgICAgICAgICAgICB3ZWJQYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9t
Q29udGVudFByb3ZpZGVyKGxvYWRlci0+cmVzcG9uc2UoKS5zdWdnZXN0ZWRGaWxlbmFtZSgpLCBk
YXRhUmVmZXJlbmNlKSk7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDlkZjQ1NGEwNjhiYzA1YWJhODFmNzYyMTYxYTRm
ZDI2MGQ1ODczZjcuLjY0NjZkMGZmYmIyZTJhNzI0MTZmNDNhMDVhZDUzMDZmYTdlNWRmNGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTM0
MSw3ICszNDEsNyBAQCBTdHJpbmcgV2ViRnJhbWU6OnNvdXJjZSgpIGNvbnN0CiAgICAgRG9jdW1l
bnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gbV9jb3JlRnJhbWUtPmxvYWRlcigpLmFjdGl2ZURv
Y3VtZW50TG9hZGVyKCk7CiAgICAgaWYgKCFkb2N1bWVudExvYWRlcikKICAgICAgICAgcmV0dXJu
IFN0cmluZygpOwotICAgIFJlZlB0cjxGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtYWluUmVzb3Vy
Y2VEYXRhID0gZG9jdW1lbnRMb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKKyAgICBSZWZQdHI8
Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGRvY3VtZW50
TG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAgaWYgKCFtYWluUmVzb3VyY2VEYXRhKQog
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgcmV0dXJuIGRlY29kZXItPmVuY29kaW5nKCku
ZGVjb2RlKG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSwgbWFpblJl
c291cmNlRGF0YS0+c2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKaW5kZXggNjNhZjkxZmRiYTVmMjAxMDA2YzczYzU5ZjI5NmJhMjJmM2QzN2M1
ZC4uNGNkMjU2OGEyMmRhOGQ3ZTExZjBhMDRmMTJiNWUzOTdkYWI0ZTVmYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM4NzksNyArMzg3OSw3
IEBAIHZvaWQgV2ViUGFnZTo6Z2V0U291cmNlRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoCiAKIHZvaWQgV2ViUGFnZTo6Z2V0TWFpblJlc291
cmNlRGF0YU9mRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+Jik+JiYgY2Fs
bGJhY2spCiB7Ci0gICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKKyAg
ICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIGlmIChX
ZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlE
KSkgewogICAgICAgICBpZiAoUGx1Z2luVmlldyogcGx1Z2luVmlldyA9IHBsdWdpblZpZXdGb3JG
cmFtZShmcmFtZS0+Y29yZUZyYW1lKCkpKQogICAgICAgICAgICAgYnVmZmVyID0gcGx1Z2luVmll
dy0+bGl2ZVJlc291cmNlRGF0YSgpOwpAQCAtMzg5Miw3ICszODkyLDcgQEAgdm9pZCBXZWJQYWdl
OjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29t
cGxldGlvbkhhbmQKICAgICBjYWxsYmFjayhJUEM6OlNoYXJlZEJ1ZmZlckNvcHkoV1RGTW92ZShi
dWZmZXIpKSk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gcmVz
b3VyY2VEYXRhRm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHJlc291cmNlVVJMKQor
c3RhdGljIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGFG
b3JGcmFtZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpCiB7CiAgICAgRG9j
dW1lbnRMb2FkZXIqIGxvYWRlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpOwog
ICAgIGlmICghbG9hZGVyKQpAQCAtMzkwNyw3ICszOTA3LDcgQEAgc3RhdGljIFJlZlB0cjxGcmFn
bWVudGVkU2hhcmVkQnVmZmVyPiByZXNvdXJjZURhdGFGb3JGcmFtZShGcmFtZSogZnJhbWUsIGNv
bnN0IFUKIAogdm9pZCBXZWJQYWdlOjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkxTdHJpbmcsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OlNoYXJlZEJ1ZmZlckNvcHk+
Jik+JiYgY2FsbGJhY2spCiB7Ci0gICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1
ZmZlcjsKKyAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwog
ICAgIGlmIChhdXRvKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZy
YW1lSUQpKSB7CiAgICAgICAgIFVSTCByZXNvdXJjZVVSTChVUkwoKSwgcmVzb3VyY2VVUkxTdHJp
bmcpOwogICAgICAgICBidWZmZXIgPSByZXNvdXJjZURhdGFGb3JGcmFtZShmcmFtZS0+Y29yZUZy
YW1lKCksIHJlc291cmNlVVJMKTsKQEAgLTcwNTcsNyArNzA1Nyw3IEBAIHZvaWQgV2ViUGFnZTo6
ZGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihib29sIGRlY2lzaW9uLCBDYWxsYmFja0lEIGxvYWRJ
ZGVudGlmaWVyCiAgICAgaWYgKCFkb2N1bWVudExvYWRlcikKICAgICAgICAgcmV0dXJuIGNvbXBs
ZXRpb25IYW5kbGVyKHsgfSk7CiAKLSAgICBkb2N1bWVudExvYWRlci0+ZGlkR2V0TG9hZERlY2lz
aW9uRm9ySWNvbihkZWNpc2lvbiwgbG9hZElkZW50aWZpZXIudG9JbnRlZ2VyKCksIFtjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoV2ViQ29yZTo6RnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciogaWNvbkRhdGEpIG11dGFibGUgeworICAgIGRvY3VtZW50TG9hZGVy
LT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGRlY2lzaW9uLCBsb2FkSWRlbnRpZmllci50b0lu
dGVnZXIoKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
IChhdXRvKiBpY29uRGF0YSkgbXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQ
Qzo6U2hhcmVkQnVmZmVyQ29weShSZWZQdHIgeyBpY29uRGF0YSB9KSk7CiAgICAgfSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
CmluZGV4IGNhNzVjYjM3NzdlZTM3ZTAyOThhNmYxNjlhN2FjNzllNDY4OWE4ZDMuLmM4NTVmNjhi
ZjVkNmU0ZmVjMmM1ZTQ1OTExZmVjZTFiM2Q3ODE0NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0zMjY4LDcgKzMyNjgs
NyBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1BY3Rpb25PbkVsZW1lbnQodWludDMyX3QgYWN0aW9u
KQogICAgICAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBkb3duY2FzdDxSZW5kZXJJbWFn
ZT4oKmVsZW1lbnQucmVuZGVyZXIoKSkuY2FjaGVkSW1hZ2UoKTsKICAgICAgICAgaWYgKCFjYWNo
ZWRJbWFnZSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgUmVmUHRyPEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZlcigpOworICAg
ICAgICBSZWZQdHI8Y29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gY2FjaGVk
SW1hZ2UtPnJlc291cmNlQnVmZmVyKCk7CiAgICAgICAgIGlmICghYnVmZmVyKQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9y
eTo6Y29weUJ1ZmZlcigqYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDhk
Zjk5M2YyZDc3NWI2YzkzZDJlOGYwOTkwZjcyZjg1ZjYxOGU1OGUuLmVhMjRhODMyZDVmMWViMWMy
NThjYWQyMjE4OTMxMjZjNTIxMzdmNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAt
MjUwLDcgKzI1MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZW5kSDJQaW5nKGNvbnN0IFVSTCYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8U2Vjb25kcywgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvcj4mJik+JiYpIGZpbmFsOwogCiAgICAgdm9pZCBnZXRMb2FkRGVjaXNpb25Gb3JJY29u
cyhjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFdlYkNvcmU6OkxpbmtJY29uJiwgdWludDY0X3Q+PiYp
IGZpbmFsOwotICAgIHZvaWQgZmluaXNoZWRMb2FkaW5nSWNvbihXZWJDb3JlOjpGcmFnbWVudGVk
U2hhcmVkQnVmZmVyKik7CisgICAgdm9pZCBmaW5pc2hlZExvYWRpbmdJY29uKGNvbnN0IFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqKTsKIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIGJvb2wgbV9sb2FkaW5nSWNvbiB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lm1tCmluZGV4IDg3YTVkNjU3ZjdiNzMzZDA3YzVkYjYwMWY2OTgxZjkwNDk3NzEzOTMuLjQ0
ODBhMDRhNjhhODM4MGU4Y2VjMmEwMDkwNjI5NjUyNDIxNDBkYzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lm1tCkBAIC0yMDkzLDcgKzIwOTMsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29ucyhjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFdlYkNv
cgogICAgICAgICB9CiAKICAgICAgICAgbV9sb2FkaW5nSWNvbiA9IHRydWU7Ci0gICAgICAgIGRv
Y3VtZW50TG9hZGVyLT5kaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKHRydWUsIGljb24tPnNlY29u
ZCwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dIChXZWJDb3JlOjpGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyKiBidWZmZXIpIHsKKyAgICAgICAgZG9jdW1lbnRMb2FkZXItPmRpZEdl
dExvYWREZWNpc2lvbkZvckljb24odHJ1ZSwgaWNvbi0+c2Vjb25kLCBbdGhpcywgd2Vha1RoaXMg
PSBXZWFrUHRyIHsgKnRoaXMgfV0gKGF1dG8qIGJ1ZmZlcikgewogICAgICAgICAgICAgaWYgKCF3
ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBmaW5pc2hlZExv
YWRpbmdJY29uKGJ1ZmZlcik7CkBAIC0yMTMwLDcgKzIxMzAsNyBAQCBzdGF0aWMgTlNJbWFnZSAq
d2ViR2V0TlNJbWFnZShXZWJDb3JlOjpJbWFnZSogaW1hZ2UsIE5TU2l6ZSBzaXplKQogfQogI2Vu
ZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpmaW5pc2hlZExvYWRpbmdJY29uKFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGlj
b25EYXRhKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZmluaXNoZWRMb2FkaW5nSWNvbihj
b25zdCBXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBpY29uRGF0YSkKIHsKICNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBBU1NFUlQobV9sb2FkaW5nSWNvbik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KaW5kZXggNWVi
NWQ2YTE5ZTZkOTFmY2IzYmZjODFjY2E5MWVjN2UwZTU2YzQyOC4uMjM4YTQ0YTUzNzNlOGNjODMy
OWJlNmQyMDc3MDdhZDdlOTM4OWIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQpAQCAtNDYwLDcgKzQ2MCw3IEBAIC0gKHZvaWQpZGVh
bGxvYwogCiAtIChOU0RhdGEgKilkYXRhCiB7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSB0b1ByaXZhdGUoX3ByaXZhdGUpLT5s
b2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKKyAgICBSZWZQdHI8Y29uc3QgV2ViQ29yZTo6RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IHRvUHJpdmF0ZShfcHJpdmF0
ZSktPmxvYWRlci0+bWFpblJlc291cmNlRGF0YSgpOwogICAgIGlmICghbWFpblJlc291cmNlRGF0
YSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICByZXR1cm4gbWFpblJlc291cmNlRGF0YS0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuYXV0b3JlbGVhc2UoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDQ5ODk5MzE4ZGM5
YWM1MmUzYzg4N2I1NGU3ODlhZWM2MGI5NzMwNTAuLjhkNTkxMzRjNWMyZDNkNzZmYTU5NmQ1NTVj
N2I1YjgxMWY0YjAyNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJIVE1MVmlldy5tbQpAQCAtMzU0MSw3ICszNTQxLDcgQEAgc3RhdGljIFJldGFpblB0cjxOU01l
bnVJdGVtPiBjcmVhdGVTaGFyZU1lbnVJdGVtKGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQm
IGgKICAgICB9CiAKICAgICBpZiAoYXV0byogaW1hZ2UgPSBoaXRUZXN0UmVzdWx0LmltYWdlKCkp
IHsKLSAgICAgICAgaWYgKFJlZlB0cjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBpbWFnZS0+ZGF0YSgpKQorICAgICAgICBpZiAoUmVmUHRyPGNvbnN0IFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGltYWdlLT5kYXRhKCkpCiAgICAgICAg
ICAgICBbaXRlbXMgYWRkT2JqZWN0OmFkb3B0TlMoW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aERh
dGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+ZGF0YSgp
IGxlbmd0aDpidWZmZXItPnNpemUoKV1dKS5nZXQoKV07CiAgICAgfQogCkBAIC00MzA3LDcgKzQz
MDcsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgaWYg
KGF1dG8qIGJ1ZmZlciA9IHRpZmZSZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkgewogICAgICAg
ICAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSB0aWZmUmVzb3VyY2UtPnJlc3BvbnNlKCku
bnNVUkxSZXNwb25zZSgpOwogICAgICAgICAgICAgZHJhZ2dpbmdFbGVtZW50VVJMID0gW3Jlc3Bv
bnNlIFVSTF07Ci0gICAgICAgICAgICB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIg
YWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpidWZmZXItPmNyZWF0ZU5TRGF0YSgp
LmdldCgpXSk7CisgICAgICAgICAgICB3cmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIg
YWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpidWZmZXItPm1ha2VDb250aWd1b3Vz
KCktPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgICAgICBOU1N0cmluZyogZmlsZW5h
bWUgPSBbcmVzcG9uc2Ugc3VnZ2VzdGVkRmlsZW5hbWVdOwogICAgICAgICAgICAgTlNTdHJpbmcq
IHRydWVFeHRlbnNpb24odGlmZlJlc291cmNlLT5pbWFnZSgpLT5maWxlbmFtZUV4dGVuc2lvbigp
KTsKICAgICAgICAgICAgIGlmICghbWF0Y2hlc0V4dGVuc2lvbk9yRXF1aXZhbGVudChmaWxlbmFt
ZSwgdHJ1ZUV4dGVuc2lvbikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlJlc291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJSZXNvdXJjZS5tbQppbmRleCAxMmQ1OWMwYTE3NjgxOGU2NjJjNDNjMDc0NGE1M2ExMDFjODU2
MWVkLi5lMGQwZjczMDYyOTM0ODk1YzNmMThiZTc1ZWViMjUwYjE1YzZiMDViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlJlc291cmNlLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2UubW0KQEAgLTM2Niw4ICsz
NjYsOCBAQCAtIChOU1N0cmluZyAqKV9zdHJpbmdWYWx1ZQogICAgICAgICBlbmNvZGluZyA9IF9w
cml2YXRlLT5jb3JlUmVzb3VyY2UtPnRleHRFbmNvZGluZygpOwogICAgIGlmICghZW5jb2Rpbmcu
aXNWYWxpZCgpKQogICAgICAgICBlbmNvZGluZyA9IFBBTDo6V2luZG93c0xhdGluMUVuY29kaW5n
KCk7Ci0gICAgCi0gICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogY29yZURhdGEgPSBfcHJpdmF0
ZS0+Y29yZVJlc291cmNlID8gJl9wcml2YXRlLT5jb3JlUmVzb3VyY2UtPmRhdGEoKSA6IG51bGxw
dHI7CisKKyAgICBjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBjb3JlRGF0YSA9IF9wcml2
YXRlLT5jb3JlUmVzb3VyY2UgPyAmX3ByaXZhdGUtPmNvcmVSZXNvdXJjZS0+ZGF0YSgpIDogbnVs
bHB0cjsKICAgICByZXR1cm4gZW5jb2RpbmcuZGVjb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhcio+KGNvcmVEYXRhID8gY29yZURhdGEtPm1ha2VDb250aWd1b3VzKCktPmRhdGEoKSA6IG51
bGxwdHIpLCBjb3JlRGF0YSA/IGNvcmVEYXRhLT5zaXplKCkgOiAwKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452222</attachid>
            <date>2022-02-16 11:47:10 -0800</date>
            <delta_ts>2022-02-16 19:47:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236695-20220216114709.patch</filename>
            <type>text/plain</type>
            <size>14907</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5ODkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWU3OWJlYTJkZDFjOWJl
ZmI1YTE3ZjFjMzEwY2NlOTQ4ZWM2MWEzMC4uODQwZmJjMzdmNDkxZjdiYWQ5M2YxMjQwYTM2MDUy
YWFmNjk2M2Y2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIyLTAyLTE2ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIENyYXNoVHJhY2VyOiBjb20u
YXBwbGUuV2ViS2l0LldlYkNvbnRlbnQgYXQgSmF2YVNjcmlwdENvcmU6IGJtYWxsb2NfYWxsb2Nh
dGVfaW1wbF9pbXBsX3Nsb3cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNjY5NQorICAgICAgICByZGFyOi8vODc1OTY3MjQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBKZWFuLVl2ZXMgZGlzY292ZXJlZCB0
aGUgc291cmNlIG9mIGFuIGluY3JlYXNlZCBhbW91bnQgb2YgbWVtb3J5IHVzYWdlIHdoZW4gc3Ry
ZWFtaW5nIGxhcmdlCisgICAgICAgIHF1YW50aXRpZXMgb2YgZGF0YSB0aHJvdWdoIFhIUi9GZXRj
aCwgYXMgaGFwcGVucyB3aXRoIHNwZWVkIHRlc3Rpbmcgd2Vic2l0ZXMuIFdoZW4gYSBuZXcKKyAg
ICAgICAgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciBpcyByZWNlaWV2ZWQgZnJvbSB0aGUgbmV0d29y
ayBwcm9jZXNzLCBpdCBpcyBwcm9hY3RpdmVseSBjb2FsZXNjZWQKKyAgICAgICAgaW50byBhIFNo
YXJlZEJ1ZmZlciBkdXJpbmcgZWFjaCBjYWxsIHRvIHVwZGF0ZUJ1ZmZlcigpLiBUaGlzIGNhdXNl
cyBhIGxhcmdlIG51bWJlciBvZiByZS0KKyAgICAgICAgYWxsb2NhdGlvbnMgYW5kIGNvcGllczsg
ZXNzZW50aWFsbHkgcmUtYWxsb2NhdGluZyBlYWNoIHRpbWUgdGhlIHJlc291cmNlJ3MgYnVmZmVy
IHJlY2VpZXZlcworICAgICAgICBvbmUgbW9yZSBjaHVuayBvZiBkYXRhLgorCisgICAgICAgIEpl
YW4tWXZlcyBpZGVudGlmaWVkIGEgc29sdXRpb24sIGFuZCBpcyB3b3JraW5nIG9uIGEgcGF0Y2gg
dG8gcmVmYWN0b3IgdGhlIGxvYWRpbmcgY29kZSB0bworICAgICAgICBpZGVudGlmeSBpbmNvbWlu
ZyBidWZmZXJzIGFzIFJlZi9SZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyL0ZyYWdlbWVudGVkU2hh
cmVkQnVmZmVyPi4gCisgICAgICAgIEhvd2V2ZXIsIGluIG9yZGVyIHRvIGZpeCB0aGUgdW5kZXJs
eWluZyBwcm9ibGVtIGluIGEgd2F5IHRoYXQgaXMgZWFzeSB0byBtZXJnZSB0byBhIGJyYW5jaCwK
KyAgICAgICAgSSd2ZSB0YWtlbiBoaXMgcGF0Y2ggYW5kIHJlbW92ZWQgbW9zdCBvZiB0aGUgcmVm
YWN0b3JpbmcsIGxlYXZpbmcganVzdCB0aGUgb3JpZ2luYWwgZml4IHRvCisgICAgICAgIG5vdCBj
b2FsZXNjZSBpbmNvbWluZyBidWZmZXJzIHVudGlsIHRoZSBsb2FkIGlzIGZpbmlzaGVkLgorCisg
ICAgICAgICogZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yOjp3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQXBwbGlj
YXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0Nh
Y2hlZENTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVT
aGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291
cmNlOjpyZXNvdXJjZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHQ6OnNjcmlwdCk6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisKIDIwMjItMDIt
MDMgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBB
ZG9wdCAtc3RyZWFtRGF0YVBhcnNlcjpkaWRQcm92aWRlQ29udGVudEtleVNwZWNpZmllcjpmb3JU
cmFja0lEOiBkZWxlZ2F0ZSBjYWxsYmFjawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4
IDA0ZTFhMTk5ZmQ0NmM2NGYyYWMyMGE1MWMzMjM1ZjJlYTM0NTJhODguLjYwNzdiZDllOWVjNjgw
MjNiM2QyYmRlOTBmZTM4NzQwZDZjMTk4YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNiBAQAorMjAyMi0wMi0xNiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxl
LmNvbT4KKworICAgICAgICBDcmFzaFRyYWNlcjogY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50
IGF0IEphdmFTY3JpcHRDb3JlOiBibWFsbG9jX2FsbG9jYXRlX2ltcGxfaW1wbF9zbG93CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY2OTUKKyAgICAg
ICAgcmRhcjovLzg3NTk2NzI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQ29hbGVzY2UgdGhlIHJlc291cmNlJ3MgYnVmZmVyIGJlZm9yZSB1c2luZyBp
dCB0byBjcmVhdGUgYSBOU0RhdGEuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1t
OgorICAgICAgICAoLVtXZWJIVE1MVmlldyBuYW1lc09mUHJvbWlzZWRGaWxlc0Ryb3BwZWRBdERl
c3RpbmF0aW9uOl0pOgorCiAyMDIyLTAyLTE1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgRG8gcHJlbGltaW5hcnkgd29yayB0byBwYXNzIGRvbWFpbiBuYW1lcyB0
byBDb3JlTG9jYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0Vk
aXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQppbmRl
eCA3ODYwOTE4N2Y3NWQwNzZlYjlkNzgxNzNiNTBlNGJjNjQwZGQ1Mjc1Li5hOTUwODE2ZWVkMTA1
YjhlMmRiOTJjMDNlZjliOGZkODA1OGQ2Zjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMv
RWRpdG9yTWFjLm1tCkBAIC0zMzUsNyArMzM1LDggQEAgdm9pZCBFZGl0b3I6OndyaXRlSW1hZ2VU
b1Bhc3RlYm9hcmQoUGFzdGVib2FyZCYgcGFzdGVib2FyZCwgRWxlbWVudCYgaW1hZ2VFbGVtZW4K
ICAgICBwYXN0ZWJvYXJkSW1hZ2UudXJsLnVybCA9IHVybDsKICAgICBwYXN0ZWJvYXJkSW1hZ2Uu
dXJsLnRpdGxlID0gdGl0bGU7CiAgICAgcGFzdGVib2FyZEltYWdlLnVybC51c2VyVmlzaWJsZUZv
cm0gPSBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHBhc3RlYm9hcmRJbWFnZS51cmwudXJsKTsKLSAg
ICBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVm
ZmVyKCk7CisgICAgaWYgKGF1dG8qIGJ1ZmZlciA9IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZl
cigpKQorICAgICAgICBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhID0gYnVmZmVyLT5tYWtl
Q29udGlndW91cygpOwogICAgIHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlID0gY2Fj
aGVkSW1hZ2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKTsKIAogICAgIHBhc3RlYm9hcmQud3JpdGUo
cGFzdGVib2FyZEltYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggNTBjYmQwMjQ4MGVmYjM1MDY3YjEzYzczNjYwODk1
Mjc3NGMzYTY1Ni4uNmQ2N2M3NDdjNzgwYzA2Y2I4MzRjNzA0NTBkMjg3Njc2OGRkYjBlYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5j
cHAKQEAgLTQ5NywxMyArNDk3LDEzIEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpk
aWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmCiAgICAgICAg
IGlmIChvcHRpb25zKCkuZmlsdGVyaW5nUG9saWN5ID09IFJlc3BvbnNlRmlsdGVyaW5nUG9saWN5
OjpEaXNhYmxlKSB7CiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGlk
ZW50aWZpZXIsIHJlc3BvbnNlKTsKICAgICAgICAgICAgIGlmIChhdXRvKiBidWZmZXIgPSBtX3Jl
c291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRS
ZWNlaXZlRGF0YSgqYnVmZmVyKTsKKyAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2
ZURhdGEoYnVmZmVyLT5tYWtlQ29udGlndW91cygpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIEFTU0VSVChyZXNwb25zZS50eXBlKCkgPT0gUmVzb3VyY2VSZXNwb25zZTo6VHlwZTo6
RGVmYXVsdCk7CiAKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRl
bnRpZmllciwgUmVzb3VyY2VSZXNwb25zZTo6ZmlsdGVyKHJlc3BvbnNlLCBtX29wdGlvbnMuY3Jl
ZGVudGlhbHMgPT0gRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6SW5jbHVkZSA/IFJlc291cmNl
UmVzcG9uc2U6OlBlcmZvcm1FeHBvc2VBbGxIZWFkZXJzQ2hlY2s6Ok5vIDogUmVzb3VyY2VSZXNw
b25zZTo6UGVyZm9ybUV4cG9zZUFsbEhlYWRlcnNDaGVjazo6WWVzKSk7CiAgICAgICAgICAgICBp
ZiAoYXV0byogYnVmZmVyID0gbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkKLSAgICAgICAg
ICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoKmJ1ZmZlcik7CisgICAgICAgICAgICAg
ICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKGJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKSk7CiAg
ICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCBkZGQwYjFiODliMWQ4NzJi
YjQyNzI3ZWU3OGQ4ZmQ2MzllNGI4OTQ2Li4zNWI2MDJlNDkwMzY4YmM3ZjIzYTAyNzhjMjJjODVk
MjRhMTI5MjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
QXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC00NCw4ICs0NCw5IEBAIHZvaWQgQ2Fj
aGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKiBkYXRhCiB7CiAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9kYXRhID0gZGF0
YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgYXV0byYgY29udGlndW91c0RhdGEgPSBkb3du
Y2FzdDxTaGFyZWRCdWZmZXI+KCptX2RhdGEpOwogICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRh
LT5zaXplKCkpOwotICAgICAgICBtX3RleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1f
ZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICBtX3RleHQgPSBtX2RlY29kZXIt
PmRlY29kZUFuZEZsdXNoKGNvbnRpZ3VvdXNEYXRhLmRhdGEoKSwgY29udGlndW91c0RhdGEuc2l6
ZSgpKTsKICAgICB9IGVsc2UgewogICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgICAgICBz
ZXRFbmNvZGVkU2l6ZSgwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRDU1NTdHlsZVNoZWV0LmNwcAppbmRleCAzOGEyZTE3ZjBkMDZjOGFjOThkZTI0YjFlNTJi
OGU2MGU5MjQxMjBiLi4yMzEwM2FjYzIwNDliNDUwNDZkMTRmZTBiMmZhOTY2YjJlOTg5ZTFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVl
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hl
ZXQuY3BwCkBAIC0xMDEsOSArMTAxLDEwIEBAIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6Zmlu
aXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zCiB7CiAg
ICAgaWYgKGRhdGEpIHsKICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsK
KyAgICAgICAgYXV0byYgY29udGlndW91c0RhdGEgPSBkb3duY2FzdDxTaGFyZWRCdWZmZXI+KCpt
X2RhdGEpOwogICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOwogICAgICAgICAv
LyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQgdGhlIGVuY29kaW5nIGFuZCBrZWVwIHRoZSBz
aGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQotICAgICAgICBtX2RlY29kZWRT
aGVldFRleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkpOworICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRlY29k
ZUFuZEZsdXNoKGNvbnRpZ3VvdXNEYXRhLmRhdGEoKSwgY29udGlndW91c0RhdGEuc2l6ZSgpKTsK
ICAgICB9IGVsc2UgewogICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgICAgICBzZXRFbmNv
ZGVkU2l6ZSgwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcApp
bmRleCBkMmJjMjgyMTQ3OWM1OWEyMzIzZTRmNjVjZDk0YjYzYjQyMzczNjQ2Li45ZGJkNTM3OTM1
ZTBkZDBiN2RiZDRlMTIzOTNhZDBlODE0MGRkOTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEZvbnQuY3BwCkBAIC04Nyw3ICs4NywxMSBAQCB2b2lkIENhY2hlZEZvbnQ6
OmJlZ2luTG9hZElmTmVlZGVkKENhY2hlZFJlc291cmNlTG9hZGVyJiBsb2FkZXIpCiAKIGJvb2wg
Q2FjaGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbVN0cmluZyYpCiB7Ci0g
ICAgcmV0dXJuIGVuc3VyZUN1c3RvbUZvbnREYXRhKG1fZGF0YS5nZXQoKSk7CisgICAgaWYgKCFt
X2RhdGEpCisgICAgICAgIHJldHVybiBlbnN1cmVDdXN0b21Gb250RGF0YShudWxscHRyKTsKKyAg
ICBpZiAoIW1fZGF0YS0+aXNDb250aWd1b3VzKCkpCisgICAgICAgIG1fZGF0YSA9IG1fZGF0YS0+
bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICByZXR1cm4gZW5zdXJlQ3VzdG9tRm9udERhdGEoZG93bmNh
c3Q8U2hhcmVkQnVmZmVyPihtX2RhdGEuZ2V0KCkpKTsKIH0KIAogU3RyaW5nIENhY2hlZEZvbnQ6
OmNhbGN1bGF0ZUl0ZW1JbkNvbGxlY3Rpb24oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXggNTVjNDViZWJmZjRmNGE0
Y2Y0ZGQ5Nzk3NDdkYWY4ZmU0YTIyNDE1Yy4uMTM2ODJjYzIwY2JhYTNhNzhiZDAzZDJlNjc4MjEz
ZmQzZjI4M2Y3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmF3UmVzb3VyY2UuY3BwCkBAIC02NSwxMCArNjUsOSBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNl
Ojp1cGRhdGVCdWZmZXIoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKICAgICAv
LyBXZSBuZWVkIHRvIGtlZXAgYSBzdHJvbmcgcmVmZXJlbmNlIHRvIGJvdGggdGhlIFNoYXJlZEJ1
ZmZlciBhbmQgdGhlIGN1cnJlbnQgQ2FjaGVkUmF3UmVzb3VyY2UgaW5zdGFuY2UKICAgICAvLyBh
cyBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkIGNhbGwgbWF5IGRlbGV0ZSBib3RoLgogICAg
IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRo
aXMpOwotICAgIGF1dG8gcHJvdGVjdGVkRGF0YSA9IFJlZiB7IGRhdGEgfTsKIAogICAgIEFTU0VS
VChkYXRhQnVmZmVyaW5nUG9saWN5KCkgPT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0
YSk7Ci0gICAgbV9kYXRhID0gZGF0YS5tYWtlQ29udGlndW91cygpOworICAgIG1fZGF0YSA9IGRh
dGEuY29weSgpOwogCiAgICAgLy8gTm90aWZ5IGNsaWVudHMgb25seSBvZiB0aGUgbmV3bHkgYXBw
ZW5kZWQgY29udGVudCBzaW5jZSB0aGUgbGFzdCBydW4uCiAgICAgYXV0byBwcmV2aW91c0RhdGFT
aXplID0gZW5jb2RlZFNpemUoKTsKQEAgLTExMywxMCArMTEyLDExIEBAIHZvaWQgQ2FjaGVkUmF3
UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0
YSwgY29uc3QKICAgICBEYXRhQnVmZmVyaW5nUG9saWN5IGRhdGFCdWZmZXJpbmdQb2xpY3kgPSB0
aGlzLT5kYXRhQnVmZmVyaW5nUG9saWN5KCk7CiAgICAgaWYgKGRhdGFCdWZmZXJpbmdQb2xpY3kg
PT0gRGF0YUJ1ZmZlcmluZ1BvbGljeTo6QnVmZmVyRGF0YSkgewogICAgICAgICBpZiAoZGF0YSkg
ewotICAgICAgICAgICAgaWYgKGRhdGEgIT0gbV9kYXRhLmdldCgpKQotICAgICAgICAgICAgICAg
IG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7Ci0gICAgICAgICAgICBpZiAoYXV0byBp
bmNyZW1lbnRhbERhdGEgPSBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuaygqbV9kYXRhKSkg
ewotICAgICAgICAgICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7CisgICAgICAg
ICAgICBtX2RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICAgICAgYXV0byYg
Y29udGlndW91c0RhdGEgPSBkb3duY2FzdDxTaGFyZWRCdWZmZXI+KCptX2RhdGEpOworCisgICAg
ICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEgPSBjYWxjdWxhdGVJbmNyZW1lbnRhbERh
dGFDaHVuayhjb250aWd1b3VzRGF0YSkpIHsKKyAgICAgICAgICAgICAgICBzZXRFbmNvZGVkU2l6
ZShjb250aWd1b3VzRGF0YS5zaXplKCkpOwogICAgICAgICAgICAgICAgIG5vdGlmeUNsaWVudHNE
YXRhV2FzUmVjZWl2ZWQoaW5jcmVtZW50YWxEYXRhLT5jcmVhdGVTaGFyZWRCdWZmZXIoKSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuaAppbmRleCA1MzRlMDEyY2M0ZmE1ZGQyYmUxZmQ2ZWVlNWFhNmFl
NGU1ZmFlMjBkLi5mZDFmYzQ2MDRmOTIxYTYxYWM5Y2ZmNjhmMzU4ZjkxNTJmMGNhYzgwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMjEzLDcg
KzIxMyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJMb2FkZXIoKTsKIAotICAgIFNoYXJl
ZEJ1ZmZlciogcmVzb3VyY2VCdWZmZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0K
KyAgICBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiByZXNvdXJjZUJ1ZmZlcigpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YS5nZXQoKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQo
UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJik7CiAgICAgdmlydHVhbCB2b2lkIHJlc3Bv
bnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwpAQCAtMzM2LDcgKzMzNiw3IEBA
IHByb3RlY3RlZDoKICAgICBIYXNoQ291bnRlZFNldDxDYWNoZWRSZXNvdXJjZUNsaWVudCo+IG1f
Y2xpZW50czsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VSZXF1ZXN0PiBtX29yaWdpbmFs
UmVxdWVzdDsgLy8gTmVlZGVkIGJ5IFBpbmcgbG9hZHMuCiAgICAgUmVmUHRyPFN1YnJlc291cmNl
TG9hZGVyPiBtX2xvYWRlcjsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAg
UmVmUHRyPEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+IG1fZGF0YTsKIAogcHJpdmF0ZToKICAgICBN
b25vdG9uaWNUaW1lIG1fbGFzdERlY29kZWRBY2Nlc3NUaW1lOyAvLyBVc2VkIGFzIGEgInRocmFz
aCBndWFyZCIgaW4gdGhlIGNhY2hlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkU2NyaXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTY3JpcHQuY3BwCmluZGV4IDYyYTE2ZTg2YjMyMTkzZDhlNTZkNjE5MmY3N2U5YmM2ZjQwOGU5
YmIuLjhjMzVhZjc0YmJhNjliMTI0NjlkOGMxMmI2Y2IyOWI1ZmYxMjI3NzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC01OSwxMCArNTksMTQg
QEAgU3RyaW5nVmlldyBDYWNoZWRTY3JpcHQ6OnNjcmlwdCgpCiAgICAgaWYgKCFtX2RhdGEpCiAg
ICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCisgICAgaWYgKCFtX2RhdGEtPmlzQ29udGln
dW91cygpKQorICAgICAgICBtX2RhdGEgPSBtX2RhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAg
YXV0byYgY29udGlndW91c0RhdGEgPSBkb3duY2FzdDxTaGFyZWRCdWZmZXI+KCptX2RhdGEpOwor
CiAgICAgaWYgKG1fZGVjb2RpbmdTdGF0ZSA9PSBOZXZlckRlY29kZWQKICAgICAgICAgJiYgUEFM
OjpUZXh0RW5jb2RpbmcoZW5jb2RpbmcoKSkuaXNCeXRlQmFzZWRFbmNvZGluZygpCi0gICAgICAg
ICYmIG1fZGF0YS0+c2l6ZSgpCi0gICAgICAgICYmIGNoYXJhY3RlcnNBcmVBbGxBU0NJSShtX2Rh
dGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpKSB7CisgICAgICAgICYmIGNvbnRpZ3VvdXNEYXRh
LnNpemUoKQorICAgICAgICAmJiBjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoY29udGlndW91c0RhdGEu
ZGF0YSgpLCBjb250aWd1b3VzRGF0YS5zaXplKCkpKSB7CiAKICAgICAgICAgbV9kZWNvZGluZ1N0
YXRlID0gRGF0YUFuZERlY29kZWRTdHJpbmdIYXZlU2FtZUJ5dGVzOwogCkBAIC03MCwxNCArNzQs
MTQgQEAgU3RyaW5nVmlldyBDYWNoZWRTY3JpcHQ6OnNjcmlwdCgpCiAgICAgICAgIHNldERlY29k
ZWRTaXplKDApOwogICAgICAgICBtX2RlY29kZWREYXRhRGVsZXRpb25UaW1lci5zdG9wKCk7CiAK
LSAgICAgICAgbV9zY3JpcHRIYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tU
b3A4Qml0cyhtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOworICAgICAgICBtX3Njcmlw
dEhhc2ggPSBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKGNvbnRpZ3Vv
dXNEYXRhLmRhdGEoKSwgY29udGlndW91c0RhdGEuc2l6ZSgpKTsKICAgICB9CiAKICAgICBpZiAo
bV9kZWNvZGluZ1N0YXRlID09IERhdGFBbmREZWNvZGVkU3RyaW5nSGF2ZVNhbWVCeXRlcykKLSAg
ICAgICAgcmV0dXJuIHsgbV9kYXRhLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2Rh
dGEtPnNpemUoKSkgfTsKKyAgICAgICAgcmV0dXJuIHsgY29udGlndW91c0RhdGEuZGF0YSgpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oY29udGlndW91c0RhdGEuc2l6ZSgpKSB9OwogCiAgICAgaWYg
KCFtX3NjcmlwdCkgewotICAgICAgICBtX3NjcmlwdCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1
c2gobV9kYXRhLT5kYXRhKCksIGVuY29kZWRTaXplKCkpOworICAgICAgICBtX3NjcmlwdCA9IG1f
ZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goY29udGlndW91c0RhdGEuZGF0YSgpLCBlbmNvZGVkU2l6
ZSgpKTsKICAgICAgICAgQVNTRVJUKCFtX3NjcmlwdEhhc2ggfHwgbV9zY3JpcHRIYXNoID09IG1f
c2NyaXB0LmltcGwoKS0+aGFzaCgpKTsKICAgICAgICAgaWYgKG1fZGVjb2RpbmdTdGF0ZSA9PSBO
ZXZlckRlY29kZWQpCiAgICAgICAgICAgICBtX3NjcmlwdEhhc2ggPSBtX3NjcmlwdC5pbXBsKCkt
Pmhhc2goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRY
U0xTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xT
dHlsZVNoZWV0LmNwcAppbmRleCBkMmVmZjJkMmQ0MGM5Mjc3Mzg3NTZjNGE4ZjBjYmI5MzQzYmUx
MGFiLi41YTI3YjM1N2ExZWQ1MjM5MmI3NTFlYThlMTRiOWYwZTcyMTkxY2UwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCkBA
IC02NSw4ICs2NSw5IEBAIHZvaWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhj
b25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zCiB7CiAgICAgaWYgKGRhdGEp
IHsKICAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKLSAgICAgICAgc2V0
RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKLSAgICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+
ZGVjb2RlQW5kRmx1c2gobV9kYXRhLT5kYXRhKCksIGVuY29kZWRTaXplKCkpOworICAgICAgICBh
dXRvJiBjb250aWd1b3VzRGF0YSA9IGRvd25jYXN0PFNoYXJlZEJ1ZmZlcj4oKm1fZGF0YSk7Cisg
ICAgICAgIHNldEVuY29kZWRTaXplKGNvbnRpZ3VvdXNEYXRhLnNpemUoKSk7CisgICAgICAgIG1f
c2hlZXQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGNvbnRpZ3VvdXNEYXRhLmRhdGEoKSwg
ZW5jb2RlZFNpemUoKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsK
ICAgICAgICAgc2V0RW5jb2RlZFNpemUoMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCBhYTk2ZmM3YTFkNWJmN2NlMzI1NmQ0NjI4NzI3
OTNjZDM4NjgwODk5Li5kODVhNmFiZGI3MjVkYzI0ODA4ZTUzYjNmODY2MzNkMDkwZjZmZDhlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAg
LTQzMDgsNyArNDMwOCw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAog
ICAgICAgICBpZiAoYXV0byogYnVmZmVyID0gdGlmZlJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigp
KSB7CiAgICAgICAgICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IHRpZmZSZXNvdXJjZS0+
cmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNlKCk7CiAgICAgICAgICAgICBkcmFnZ2luZ0VsZW1lbnRV
UkwgPSBbcmVzcG9uc2UgVVJMXTsKLSAgICAgICAgICAgIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNG
aWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOmJ1ZmZlci0+Y3Jl
YXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgICAgIHdyYXBwZXIgPSBhZG9wdE5TKFtbTlNG
aWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOmJ1ZmZlci0+bWFr
ZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgICAgIE5TU3Ry
aW5nKiBmaWxlbmFtZSA9IFtyZXNwb25zZSBzdWdnZXN0ZWRGaWxlbmFtZV07CiAgICAgICAgICAg
ICBOU1N0cmluZyogdHJ1ZUV4dGVuc2lvbih0aWZmUmVzb3VyY2UtPmltYWdlKCktPmZpbGVuYW1l
RXh0ZW5zaW9uKCkpOwogICAgICAgICAgICAgaWYgKCFtYXRjaGVzRXh0ZW5zaW9uT3JFcXVpdmFs
ZW50KGZpbGVuYW1lLCB0cnVlRXh0ZW5zaW9uKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452294</attachid>
            <date>2022-02-16 19:47:32 -0800</date>
            <delta_ts>2022-02-16 19:54:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236695-20220217144730.patch</filename>
            <type>text/plain</type>
            <size>21879</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5OTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjE5NjQ4OTc3ZTNmNWEz
ZjZkNDc2NDFhMzE1Y2Y3YWU2YWJjNzI3OC4uZGI1ODU0ZjQ4NDU4MWFjZGIyZThjMmZiYTI1Yjli
NzFiM2NkZmZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDIyLTAyLTE2ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQ3Jhc2hUcmFjZXI6IGNv
bS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudCBhdCBKYXZhU2NyaXB0Q29yZTogYm1hbGxvY19hbGxv
Y2F0ZV9pbXBsX2ltcGxfc2xvdworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM2Njk1CisgICAgICAgIHJkYXI6Ly84NzU5NjcyNAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gYSBuZXcgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciBpcyByZWNlaXZlZCBmcm9tIHRoZSBuZXR3b3JrIHByb2Nlc3MsIGl0IGlz
IHByb2FjdGl2ZWx5IGNvYWxlc2NlZAorICAgICAgICBpbnRvIGEgU2hhcmVkQnVmZmVyIGR1cmlu
ZyBlYWNoIGNhbGwgdG8gQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcigpLiBUaGlzIGNhdXNl
cyBhIGxhcmdlIG51bWJlcgorICAgICAgICBvZiByZS1hbGxvY2F0aW9ucyBhbmQgY29waWVzOyBl
c3NlbnRpYWxseSByZS1hbGxvY2F0aW5nIGVhY2ggdGltZSB0aGUgcmVzb3VyY2UncyBidWZmZXIg
cmVjZWl2ZXMKKyAgICAgICAgb25lIG1vcmUgY2h1bmsgb2YgZGF0YS4KKyAgICAgICAgSW5zdGVh
ZCB3ZSBvbmx5IGZsYXR0ZW4gdGhlIGRhdGEgYnVmZmVyIG9uY2UgYWxsIGRhdGEgaGF2ZSBiZWVu
IHJlY2VpdmVkLgorCisgICAgICAgIFJ1bm5pbmcgc3BlZWR0ZXN0Lm5ldCB3aXRoIGEgZ2lnYWJp
dCBsaW5rLCB3ZSBzZWUgYSByZWR1Y3Rpb24gb2YgcGVhaworICAgICAgICBtZW1vcnkgdXNlIGlu
IHRoZSBjb250ZW50IHByb2Nlc3MgYnkgYWJvdXQgNDAlIChmcm9tIDc0ME1CIHRvIHVuZGVyIDQ0
ME1CKQorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBl
ZGl0aW5nL2lvcy9FZGl0b3JJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OndyaXRl
SW1hZ2VUb1Bhc3RlYm9hcmQpOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZCk6CisgICAg
ICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OmZpbmlzaExvYWRpbmcpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRGb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6
OmVuc3VyZUN1c3RvbUZvbnREYXRhKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OnVwZGF0ZUltYWdlRGF0YSk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVu
ayBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5n
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaDoKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFJlc291cmNlOjpyZXNvdXJjZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFNjcmlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRTY3JpcHQ6OnNjcmlw
dCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisKIDIw
MjItMDItMTYgIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbQ01ha2VdIENhbm5vdCBmaW5kIE9wZW5HTCB3aGVuIHN5c3RlbSBwcm92aWRlcyBv
cGVuZ2wucGMgaW5zdGVhZCBvZiBnbC5wYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBjZTRmOGNhYjQzYmY4YzEwMDJm
OWIzM2IzMTAzZmZhMjgyNThjYmZjLi44YWM1MmM5ZDNjZDlkMzgxMjc0ZGYxMWQzNDk0NjZiNDlj
MzRjOWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIyLTAyLTE2ICBKZWFuLVl2ZXMg
QXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQ3Jhc2hUcmFjZXI6IGNvbS5hcHBs
ZS5XZWJLaXQuV2ViQ29udGVudCBhdCBKYXZhU2NyaXB0Q29yZTogYm1hbGxvY19hbGxvY2F0ZV9p
bXBsX2ltcGxfc2xvdworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM2Njk1CisgICAgICAgIHJkYXI6Ly84NzU5NjcyNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpmaW5pc2hlZExvYWRpbmcpOiBGbHktYnkgZml4LCB0aGUKKyAgICAgICAgSVBD
OjpEYXRhUmVmZXJlbmNlIHdvdWxkIHVzZSBhIGRhbmdsaW5nIHBvaW50ZXIgYXMgdGhlIFNoYXJl
ZEJ1ZmZlciB3b3VsZAorICAgICAgICBnbyBvdXQgb2Ygc2NvcGUgYmVmb3JlIGl0J3Mgc2VudCBv
dmVyIElQQy4KKwogMjAyMi0wMi0xNiAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxl
LmNvbT4KIAogICAgICAgICBBZGQgYW4gYWRkaXRpb25zIHBvaW50IGZvciBgc2hvdWxkUmVjb2du
aXplU2ltdWx0YW5lb3VzbHlXaXRoR2VzdHVyZVJlY29nbml6ZXJgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKaW5kZXggZTI1ZjQ0MjZmNzAxNzEzZGM2OTFmMTVlNmU4ZmZjMTAwNDNmZDFiNy4u
NDNkZmEzOTZhNjM5MmJjZTJhMWI4MjJjNTlhMDE2YWZkOTgyYWNhMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIyLTAyLTE2ICBKZWFuLVl2ZXMgQXZl
bmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQ3Jhc2hUcmFjZXI6IGNvbS5hcHBsZS5X
ZWJLaXQuV2ViQ29udGVudCBhdCBKYXZhU2NyaXB0Q29yZTogYm1hbGxvY19hbGxvY2F0ZV9pbXBs
X2ltcGxfc2xvdworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM2Njk1CisgICAgICAgIHJkYXI6Ly84NzU5NjcyNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAg
ICAgICAgKC1bV2ViSFRNTFZpZXcgbmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5h
dGlvbjpdKToKKwogMjAyMi0wMi0xNiAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIEFOR0xFIGluY2x1ZGVzIGludGVyZmVyZSB3aXRoIHN5c3RlbSBoZWFk
ZXIgaW5jbHVkZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRv
cklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQppbmRleCA4
NTFmMjk1MGI5MWJhNDQwZDk5OTNhNTIyZjkxNTBmMDFhNTgxZWFmLi4wOTE4N2MwZjU3ZDQ5Y2Ni
NzljMmVjN2UzMmU0ZTgxNDVlOTk1NmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2lvcy9FZGl0b3JJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRp
dG9ySU9TLm1tCkBAIC0yMDQsNyArMjA0LDggQEAgdm9pZCBFZGl0b3I6OndyaXRlSW1hZ2VUb1Bh
c3RlYm9hcmQoUGFzdGVib2FyZCYgcGFzdGVib2FyZCwgRWxlbWVudCYgaW1hZ2VFbGVtZW4KICAg
ICBwYXN0ZWJvYXJkSW1hZ2Uuc3VnZ2VzdGVkTmFtZSA9IGltYWdlU291cmNlVVJMLmxhc3RQYXRo
Q29tcG9uZW50KCkudG9TdHJpbmcoKTsKICAgICBwYXN0ZWJvYXJkSW1hZ2UuaW1hZ2VTaXplID0g
aW1hZ2UtPnNpemUoKTsKICAgICBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZSA9IHBh
c3RlYm9hcmQucmVzb3VyY2VNSU1FVHlwZShjYWNoZWRJbWFnZS0+cmVzcG9uc2UoKS5taW1lVHlw
ZSgpKTsKLSAgICBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhID0gY2FjaGVkSW1hZ2UtPnJl
c291cmNlQnVmZmVyKCk7CisgICAgaWYgKGF1dG8qIGJ1ZmZlciA9IGNhY2hlZEltYWdlLT5yZXNv
dXJjZUJ1ZmZlcigpKQorICAgICAgICBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhID0gYnVm
ZmVyLT5tYWtlQ29udGlndW91cygpOwogCiAgICAgaWYgKCFwYXN0ZWJvYXJkLmlzU3RhdGljKCkp
CiAgICAgICAgIGNsaWVudCgpLT5nZXRDbGllbnRQYXN0ZWJvYXJkRGF0YShtYWtlUmFuZ2VTZWxl
Y3RpbmdOb2RlKGltYWdlRWxlbWVudCksIHBhc3RlYm9hcmRJbWFnZS5jbGllbnRUeXBlcywgcGFz
dGVib2FyZEltYWdlLmNsaWVudERhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9y
TWFjLm1tCmluZGV4IDc4NjA5MTg3Zjc1ZDA3NmViOWQ3ODE3M2I1MGU0YmM2NDBkZDUyNzUuLmE5
NTA4MTZlZWQxMDViOGUyZGI5MmMwM2VmOWI4ZmQ4MDU4ZDZmOTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTMzNSw3ICszMzUsOCBAQCB2b2lkIEVkaXRvcjo6
d3JpdGVJbWFnZVRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkLCBFbGVtZW50JiBp
bWFnZUVsZW1lbgogICAgIHBhc3RlYm9hcmRJbWFnZS51cmwudXJsID0gdXJsOwogICAgIHBhc3Rl
Ym9hcmRJbWFnZS51cmwudGl0bGUgPSB0aXRsZTsKICAgICBwYXN0ZWJvYXJkSW1hZ2UudXJsLnVz
ZXJWaXNpYmxlRm9ybSA9IFdURjo6dXNlclZpc2libGVTdHJpbmcocGFzdGVib2FyZEltYWdlLnVy
bC51cmwpOwotICAgIHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEgPSBjYWNoZWRJbWFnZS0+
cmVzb3VyY2VCdWZmZXIoKTsKKyAgICBpZiAoYXV0byogYnVmZmVyID0gY2FjaGVkSW1hZ2UtPnJl
c291cmNlQnVmZmVyKCkpCisgICAgICAgIHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEgPSBi
dWZmZXItPm1ha2VDb250aWd1b3VzKCk7CiAgICAgcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlN
RVR5cGUgPSBjYWNoZWRJbWFnZS0+cmVzcG9uc2UoKS5taW1lVHlwZSgpOwogCiAgICAgcGFzdGVi
b2FyZC53cml0ZShwYXN0ZWJvYXJkSW1hZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCA1MGNiZDAyNDgwZWZiMzUwNjdi
MTNjNzM2NjA4OTUyNzc0YzNhNjU2Li43YmMyYjc3NzEwZWM4MDE1Zjk2MDQ1MWRkZWM1MDdmNGUw
YmEwZTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyLmNwcApAQCAtNDk0LDE1ICs0OTQsMTggQEAgdm9pZCBEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50
aWYKIAogICAgICAgICBhdXRvIHJlc3BvbnNlID0gbV9yZXNvdXJjZS0+cmVzcG9uc2UoKTsKIAor
ICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CisgICAgICAgIGlmIChtX3Jlc291
cmNlLT5yZXNvdXJjZUJ1ZmZlcigpKQorICAgICAgICAgICAgYnVmZmVyID0gbV9yZXNvdXJjZS0+
cmVzb3VyY2VCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICAgICAgaWYgKG9wdGlvbnMo
KS5maWx0ZXJpbmdQb2xpY3kgPT0gUmVzcG9uc2VGaWx0ZXJpbmdQb2xpY3k6OkRpc2FibGUpIHsK
ICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgcmVz
cG9uc2UpOwotICAgICAgICAgICAgaWYgKGF1dG8qIGJ1ZmZlciA9IG1fcmVzb3VyY2UtPnJlc291
cmNlQnVmZmVyKCkpCisgICAgICAgICAgICBpZiAoYnVmZmVyKQogICAgICAgICAgICAgICAgIG1f
Y2xpZW50LT5kaWRSZWNlaXZlRGF0YSgqYnVmZmVyKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIEFTU0VSVChyZXNwb25zZS50eXBlKCkgPT0gUmVzb3VyY2VSZXNwb25zZTo6VHlwZTo6
RGVmYXVsdCk7CiAKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRl
bnRpZmllciwgUmVzb3VyY2VSZXNwb25zZTo6ZmlsdGVyKHJlc3BvbnNlLCBtX29wdGlvbnMuY3Jl
ZGVudGlhbHMgPT0gRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6SW5jbHVkZSA/IFJlc291cmNl
UmVzcG9uc2U6OlBlcmZvcm1FeHBvc2VBbGxIZWFkZXJzQ2hlY2s6Ok5vIDogUmVzb3VyY2VSZXNw
b25zZTo6UGVyZm9ybUV4cG9zZUFsbEhlYWRlcnNDaGVjazo6WWVzKSk7Ci0gICAgICAgICAgICBp
ZiAoYXV0byogYnVmZmVyID0gbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkKKyAgICAgICAg
ICAgIGlmIChidWZmZXIpCiAgICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRh
KCpidWZmZXIpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCmluZGV4IGRkZDBi
MWI4OWIxZDg3MmJiNDI3MjdlZTc4ZDhmZDYzOWU0Yjg5NDYuLmU5OWZhNWZjYjJiNzJiMDQzZjg2
ODk5NTQ4MDg2ZWUwYTBiZTNkMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdC5jcHAKQEAgLTQzLDkgKzQzLDEw
IEBAIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Q6OkNhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3Qo
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0JiYgcmVxCiB2b2lkIENhY2hlZEFwcGxpY2F0aW9uTWFuaWZl
c3Q6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7Ci0gICAg
ICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGF1dG8gY29udGln
dW91c0RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOwogICAgICAgICBzZXRFbmNvZGVkU2l6
ZShkYXRhLT5zaXplKCkpOwotICAgICAgICBtX3RleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZs
dXNoKG1fZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICBtX3RleHQgPSBtX2Rl
Y29kZXItPmRlY29kZUFuZEZsdXNoKGNvbnRpZ3VvdXNEYXRhLT5kYXRhKCksIGRhdGEtPnNpemUo
KSk7CisgICAgICAgIG1fZGF0YSA9IFdURk1vdmUoY29udGlndW91c0RhdGEpOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAgICAgIHNldEVuY29kZWRTaXplKDAp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxl
U2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hl
ZXQuY3BwCmluZGV4IDM4YTJlMTdmMGQwNmM4YWM5OGRlMjRiMWU1MmI4ZTYwZTkyNDEyMGIuLjcw
YjM4ZjYxZmMwZmYwZWI2MjMyYjQ3MDFmZmI2ODliMGU2MTg2NmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTEwMCwx
MCArMTAwLDExIEBAIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6c2V0Qm9keURhdGFGcm9tKGNv
bnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSkKIHZvaWQgQ2FjaGVkQ1NTU3R5bGVTaGVldDo6
ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdCBO
ZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAgICAgaWYgKGRhdGEpIHsKLSAgICAgICAg
bV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgYXV0byBjb250aWd1b3Vz
RGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CiAgICAgICAgIHNldEVuY29kZWRTaXplKGRh
dGEtPnNpemUoKSk7CiAgICAgICAgIC8vIERlY29kZSB0aGUgZGF0YSB0byBmaW5kIG91dCB0aGUg
ZW5jb2RpbmcgYW5kIGtlZXAgdGhlIHNoZWV0IHRleHQgYXJvdW5kIGR1cmluZyBjaGVja05vdGlm
eSgpCi0gICAgICAgIG1fZGVjb2RlZFNoZWV0VGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1
c2gobV9kYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgIG1fZGVjb2RlZFNoZWV0
VGV4dCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goY29udGlndW91c0RhdGEtPmRhdGEoKSwg
ZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgbV9kYXRhID0gV1RGTW92ZShjb250aWd1b3VzRGF0YSk7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKICAgICAgICAgc2V0RW5j
b2RlZFNpemUoMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAK
aW5kZXggZDJiYzI4MjE0NzljNTlhMjMyM2U0ZjY1Y2Q5NGI2M2I0MjM3MzY0Ni4uOWRiZDUzNzkz
NWUwZGQwYjdkYmQ0ZTEyMzkzYWQwZTgxNDBkZDkxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRGb250LmNwcApAQCAtODcsNyArODcsMTEgQEAgdm9pZCBDYWNoZWRGb250
OjpiZWdpbkxvYWRJZk5lZWRlZChDYWNoZWRSZXNvdXJjZUxvYWRlciYgbG9hZGVyKQogCiBib29s
IENhY2hlZEZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhKGNvbnN0IEF0b21TdHJpbmcmKQogewot
ICAgIHJldHVybiBlbnN1cmVDdXN0b21Gb250RGF0YShtX2RhdGEuZ2V0KCkpOworICAgIGlmICgh
bV9kYXRhKQorICAgICAgICByZXR1cm4gZW5zdXJlQ3VzdG9tRm9udERhdGEobnVsbHB0cik7Cisg
ICAgaWYgKCFtX2RhdGEtPmlzQ29udGlndW91cygpKQorICAgICAgICBtX2RhdGEgPSBtX2RhdGEt
Pm1ha2VDb250aWd1b3VzKCk7CisgICAgcmV0dXJuIGVuc3VyZUN1c3RvbUZvbnREYXRhKGRvd25j
YXN0PFNoYXJlZEJ1ZmZlcj4obV9kYXRhLmdldCgpKSk7CiB9CiAKIFN0cmluZyBDYWNoZWRGb250
OjpjYWxjdWxhdGVJdGVtSW5Db2xsZWN0aW9uKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IGE4YzdlODdhMTY0YjkyYTBjMmI2NzUxZDU4
MWNmOGFmNGNiYWU3NjEuLjI4ZmZiMjA4OWVlYTc2MzBhYjMxODE5OWE0YjczNWU0NDQ0YjMyODUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtNTQy
LDcgKzU0Miw3IEBAIEVuY29kZWREYXRhU3RhdHVzIENhY2hlZEltYWdlOjp1cGRhdGVJbWFnZURh
dGEoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgaWYgKCFtX2ltYWdlIHx8ICFtX2RhdGEp
CiAgICAgICAgIHJldHVybiBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3I7Ci0gICAgRW5jb2RlZERh
dGFTdGF0dXMgcmVzdWx0ID0gbV9pbWFnZS0+c2V0RGF0YShtX2RhdGEuZ2V0KCksIGFsbERhdGFS
ZWNlaXZlZCk7CisgICAgRW5jb2RlZERhdGFTdGF0dXMgcmVzdWx0ID0gbV9pbWFnZS0+c2V0RGF0
YShtX2RhdGEuY29weVJlZigpLCBhbGxEYXRhUmVjZWl2ZWQpOwogICAgIGRpZFVwZGF0ZUltYWdl
RGF0YSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAppbmRleCA1NWM0NWJlYmZmNGY0YTRjZjRk
ZDk3OTc0N2RhZjhmZTRhMjI0MTVjLi44NWYxODhiZjc1ZmY1ZDI2YjI0MWNkZDkwZTY4NzA5OTIz
YjVjZmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgQ2FjaGVkUmF3UmVzb3VyY2U6OkNhY2hlZFJh
d1Jlc291cmNlKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFR5cGUgdHlwZSwKICAg
ICBBU1NFUlQoaXNNYWluT3JNZWRpYU9ySWNvbk9yUmF3UmVzb3VyY2UoKSk7CiB9CiAKLXN0ZDo6
b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IENhY2hlZFJhd1Jlc291cmNlOjpjYWxjdWxh
dGVJbmNyZW1lbnRhbERhdGFDaHVuayhjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEpIGNvbnN0Citz
dGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBDYWNoZWRSYXdSZXNvdXJjZTo6Y2Fs
Y3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
ZGF0YSkgY29uc3QKIHsKICAgICBzaXplX3QgcHJldmlvdXNEYXRhTGVuZ3RoID0gZW5jb2RlZFNp
emUoKTsKICAgICBpZiAoZGF0YS5zaXplKCkgPD0gcHJldmlvdXNEYXRhTGVuZ3RoKQpAQCAtNjgs
NyArNjgsOCBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjp1cGRhdGVCdWZmZXIoY29uc3QgRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgZGF0YSkKICAgICBhdXRvIHByb3RlY3RlZERhdGEgPSBSZWYg
eyBkYXRhIH07CiAKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IERhdGFCdWZm
ZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpOwotICAgIG1fZGF0YSA9IGRhdGEubWFrZUNvbnRpZ3Vv
dXMoKTsKKyAgICAvLyBXaGlsZSBtX2RhdGEgaXMgaW1tdXRhYmxlLCB3ZSBuZWVkIHRvIGRyb3Ag
dGhlIGNvbnN0LCB0aGlzIHdpbGwgYmUgcmVtb3ZlZCBpbiBidWcgMjM2NzM2LgorICAgIG1fZGF0
YSA9IGNvbnN0X2Nhc3Q8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcio+KCZkYXRhKTsKIAogICAgIC8v
IE5vdGlmeSBjbGllbnRzIG9ubHkgb2YgdGhlIG5ld2x5IGFwcGVuZGVkIGNvbnRlbnQgc2luY2Ug
dGhlIGxhc3QgcnVuLgogICAgIGF1dG8gcHJldmlvdXNEYXRhU2l6ZSA9IGVuY29kZWRTaXplKCk7
CkBAIC0xMTIsMTUgKzExMywxMyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2Fk
aW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0CiAgICAgQ2FjaGVk
UmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAg
ICAgRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVyaW5nUG9saWN5ID0gdGhpcy0+ZGF0YUJ1
ZmZlcmluZ1BvbGljeSgpOwogICAgIGlmIChkYXRhQnVmZmVyaW5nUG9saWN5ID09IERhdGFCdWZm
ZXJpbmdQb2xpY3k6OkJ1ZmZlckRhdGEpIHsKKyAgICAgICAgbV9kYXRhID0gY29uc3RfY2FzdDxG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKj4oZGF0YSk7CiAgICAgICAgIGlmIChkYXRhKSB7Ci0gICAg
ICAgICAgICBpZiAoZGF0YSAhPSBtX2RhdGEuZ2V0KCkpCi0gICAgICAgICAgICAgICAgbV9kYXRh
ID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKLSAgICAgICAgICAgIGlmIChhdXRvIGluY3JlbWVu
dGFsRGF0YSA9IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKCptX2RhdGEpKSB7CisgICAg
ICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEgPSBjYWxjdWxhdGVJbmNyZW1lbnRhbERh
dGFDaHVuaygqZGF0YSkpIHsKICAgICAgICAgICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5z
aXplKCkpOwogICAgICAgICAgICAgICAgIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoaW5j
cmVtZW50YWxEYXRhLT5jcmVhdGVTaGFyZWRCdWZmZXIoKSk7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgbV9kYXRhID0gbnVsbHB0cjsKKyAgICAgICAgfQogICAg
IH0KIAogI2lmIFVTRShRVUlDS19MT09LKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmF3UmVzb3VyY2UuaAppbmRleCAzNmU0N2ExZGJhMjMxMjhkYzUzMDczYjcwYjVm
M2Y4NTM4MDRhZTZhLi45ZGRlMzFiOGRiOWFkMDI1ZmE0NTU2OTFhYmMxMWJmNmVjZTU5Yzk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaApA
QCAtNjcsNyArNjcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3dpdGNoQ2xpZW50c1RvUmV2YWxp
ZGF0ZWRSZXNvdXJjZSgpIG92ZXJyaWRlOwogICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWRE
YXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hbGxvd0VuY29kZWREYXRhUmVwbGFjZW1l
bnQ7IH0KIAotICAgIHN0ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IGNhbGN1bGF0
ZUluY3JlbWVudGFsRGF0YUNodW5rKGNvbnN0IFNoYXJlZEJ1ZmZlciYpIGNvbnN0OworICAgIHN0
ZDo6b3B0aW9uYWw8U2hhcmVkQnVmZmVyRGF0YVZpZXc+IGNhbGN1bGF0ZUluY3JlbWVudGFsRGF0
YUNodW5rKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImKSBjb25zdDsKICAgICB2b2lkIG5v
dGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoY29uc3QgU2hhcmVkQnVmZmVyJik7CiAgICAgCiAj
aWYgVVNFKFFVSUNLX0xPT0spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5oCmluZGV4IDUzNGUwMTJjYzRmYTVkZDJiZTFmZDZlZWU1YWE2YWU0ZTVmYWUyMGQu
LmZkMWZjNDYwNGY5MjFhNjFhYzljZmY2OGYzNThmOTE1MmYwY2FjODAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0yMTMsNyArMjEzLDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBjbGVhckxvYWRlcigpOwogCi0gICAgU2hhcmVkQnVmZmVyKiBy
ZXNvdXJjZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQorICAgIEZyYWdt
ZW50ZWRTaGFyZWRCdWZmZXIqIHJlc291cmNlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
LmdldCgpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZVJl
cXVlc3QmJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZl
ZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CkBAIC0zMzYsNyArMzM2LDcgQEAgcHJvdGVjdGVk
OgogICAgIEhhc2hDb3VudGVkU2V0PENhY2hlZFJlc291cmNlQ2xpZW50Kj4gbV9jbGllbnRzOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxSZXNvdXJjZVJlcXVlc3Q+IG1fb3JpZ2luYWxSZXF1ZXN0OyAv
LyBOZWVkZWQgYnkgUGluZyBsb2Fkcy4KICAgICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IG1f
bG9hZGVyOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBSZWZQdHI8RnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOwogCiBwcml2YXRlOgogICAgIE1vbm90b25pY1Rp
bWUgbV9sYXN0RGVjb2RlZEFjY2Vzc1RpbWU7IC8vIFVzZWQgYXMgYSAidGhyYXNoIGd1YXJkIiBp
biB0aGUgY2FjaGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRTY3JpcHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5j
cHAKaW5kZXggNjJhMTZlODZiMzIxOTNkOGU1NmQ2MTkyZjc3ZTliYzZmNDA4ZTliYi4uMjVkMDU4
ZjdhNmU2ZDA4NjI3NTM1NTliZmFhMzgyZjQwMzNmM2I4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKQEAgLTU5LDEwICs1OSwxNCBAQCBTdHJpbmdW
aWV3IENhY2hlZFNjcmlwdDo6c2NyaXB0KCkKICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgcmV0
dXJuIGVtcHR5U3RyaW5nKCk7CiAKKyAgICBpZiAoIW1fZGF0YS0+aXNDb250aWd1b3VzKCkpCisg
ICAgICAgIG1fZGF0YSA9IG1fZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKworICAgIGF1dG8mIGNv
bnRpZ3VvdXNEYXRhID0gZG93bmNhc3Q8U2hhcmVkQnVmZmVyPigqbV9kYXRhKTsKICAgICBpZiAo
bV9kZWNvZGluZ1N0YXRlID09IE5ldmVyRGVjb2RlZAogICAgICAgICAmJiBQQUw6OlRleHRFbmNv
ZGluZyhlbmNvZGluZygpKS5pc0J5dGVCYXNlZEVuY29kaW5nKCkKICAgICAgICAgJiYgbV9kYXRh
LT5zaXplKCkKLSAgICAgICAgJiYgY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKG1fZGF0YS0+ZGF0YSgp
LCBtX2RhdGEtPnNpemUoKSkpIHsKKyAgICAgICAgJiYgY2hhcmFjdGVyc0FyZUFsbEFTQ0lJKGNv
bnRpZ3VvdXNEYXRhLmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpKSB7CiAKICAgICAgICAgbV9kZWNv
ZGluZ1N0YXRlID0gRGF0YUFuZERlY29kZWRTdHJpbmdIYXZlU2FtZUJ5dGVzOwogCkBAIC03MCwx
NCArNzQsMTQgQEAgU3RyaW5nVmlldyBDYWNoZWRTY3JpcHQ6OnNjcmlwdCgpCiAgICAgICAgIHNl
dERlY29kZWRTaXplKDApOwogICAgICAgICBtX2RlY29kZWREYXRhRGVsZXRpb25UaW1lci5zdG9w
KCk7CiAKLSAgICAgICAgbV9zY3JpcHRIYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFu
ZE1hc2tUb3A4Qml0cyhtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOworICAgICAgICBt
X3NjcmlwdEhhc2ggPSBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKGNv
bnRpZ3VvdXNEYXRhLmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpOwogICAgIH0KIAogICAgIGlmICht
X2RlY29kaW5nU3RhdGUgPT0gRGF0YUFuZERlY29kZWRTdHJpbmdIYXZlU2FtZUJ5dGVzKQotICAg
ICAgICByZXR1cm4geyBtX2RhdGEtPmRhdGEoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fZGF0
YS0+c2l6ZSgpKSB9OworICAgICAgICByZXR1cm4geyBjb250aWd1b3VzRGF0YS5kYXRhKCksIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihtX2RhdGEtPnNpemUoKSkgfTsKIAogICAgIGlmICghbV9zY3Jp
cHQpIHsKLSAgICAgICAgbV9zY3JpcHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0
YS0+ZGF0YSgpLCBlbmNvZGVkU2l6ZSgpKTsKKyAgICAgICAgbV9zY3JpcHQgPSBtX2RlY29kZXIt
PmRlY29kZUFuZEZsdXNoKGNvbnRpZ3VvdXNEYXRhLmRhdGEoKSwgZW5jb2RlZFNpemUoKSk7CiAg
ICAgICAgIEFTU0VSVCghbV9zY3JpcHRIYXNoIHx8IG1fc2NyaXB0SGFzaCA9PSBtX3NjcmlwdC5p
bXBsKCktPmhhc2goKSk7CiAgICAgICAgIGlmIChtX2RlY29kaW5nU3RhdGUgPT0gTmV2ZXJEZWNv
ZGVkKQogICAgICAgICAgICAgbV9zY3JpcHRIYXNoID0gbV9zY3JpcHQuaW1wbCgpLT5oYXNoKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVT
aGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVl
dC5jcHAKaW5kZXggZDJlZmYyZDJkNDBjOTI3NzM4NzU2YzRhOGYwY2JiOTM0M2JlMTBhYi4uMTdl
ZmQ2YzNmNmVkNmFhZWM3ZmI0YTU1YTg3NzkxMzM5ZWM0OTcwZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcApAQCAtNjQsOSAr
NjQsMTAgQEAgU3RyaW5nIENhY2hlZFhTTFN0eWxlU2hlZXQ6OmVuY29kaW5nKCkgY29uc3QKIHZv
aWQgQ2FjaGVkWFNMU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyhjb25zdCBGcmFnbWVudGVkU2hh
cmVkQnVmZmVyKiBkYXRhLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG1ldHJpY3MpCiB7CiAg
ICAgaWYgKGRhdGEpIHsKLSAgICAgICAgbV9kYXRhID0gZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsK
KyAgICAgICAgYXV0byBjb250aWd1b3VzRGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CiAg
ICAgICAgIHNldEVuY29kZWRTaXplKGRhdGEtPnNpemUoKSk7Ci0gICAgICAgIG1fc2hlZXQgPSBt
X2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+ZGF0YSgpLCBlbmNvZGVkU2l6ZSgpKTsK
KyAgICAgICAgbV9zaGVldCA9IG1fZGVjb2Rlci0+ZGVjb2RlQW5kRmx1c2goY29udGlndW91c0Rh
dGEtPmRhdGEoKSwgZW5jb2RlZFNpemUoKSk7CisgICAgICAgIG1fZGF0YSA9IFdURk1vdmUoY29u
dGlndW91c0RhdGEpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAg
ICAgICAgIHNldEVuY29kZWRTaXplKDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
aW5kZXggMjhlYzhlMjM4Y2E1YmZkZjBkYzUyNmY1NmQ2ZWZiMTg5MDBhY2JkMC4uM2I4YWMzNmQw
YWU5ZDE3NGNmYTY2NmI0YmZjNDE1YTgzMGRhNzBlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwCkBAIC0xMTg3LDggKzExODcsMTEgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgICAgICAgICBp
ZiAoIXdlYlBhZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBSZWZQ
dHI8RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGxvYWRlci0+bWFp
blJlc291cmNlRGF0YSgpOwotICAgICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZl
cmVuY2UobWFpblJlc291cmNlRGF0YSA/IG1haW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3Vz
KCktPmRhdGEoKSA6IG51bGxwdHIsIG1haW5SZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRh
LT5zaXplKCkgOiAwKTsKKyAgICAgICAgICAgIFJlZlB0cjxjb25zdCBTaGFyZWRCdWZmZXI+IGNv
bnRpZ3VvdXNEYXRhOworICAgICAgICAgICAgUmVmUHRyPGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRC
dWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBsb2FkZXItPm1haW5SZXNvdXJjZURhdGEoKTsKKyAg
ICAgICAgICAgIGlmIChtYWluUmVzb3VyY2VEYXRhKQorICAgICAgICAgICAgICAgIGNvbnRpZ3Vv
dXNEYXRhID0gbWFpblJlc291cmNlRGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKKyAgICAgICAgICAg
IElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKGNvbnRpZ3VvdXNEYXRhID8gY29udGln
dW91c0RhdGEtPmRhdGEoKSA6IG51bGxwdHIsIGNvbnRpZ3VvdXNEYXRhID8gY29udGlndW91c0Rh
dGEtPnNpemUoKSA6IDApOwogICAgICAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbUNvbnRlbnRQcm92aWRlcihs
b2FkZXItPnJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUoKSwgZGF0YVJlZmVyZW5jZSkpOwog
ICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxW
aWV3Lm1tCmluZGV4IGFhOTZmYzdhMWQ1YmY3Y2UzMjU2ZDQ2Mjg3Mjc5M2NkMzg2ODA4OTkuLjI1
MWYxN2E1NTJmM2RjOWJiMGY4YjI4MWI1ZDc5NjJmMDJhODUyNTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtNDMwMywxMiArNDMwMywx
MiBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKIHsKICAgICBSZXRhaW5Q
dHI8TlNGaWxlV3JhcHBlcj4gd3JhcHBlcjsKICAgICBOU1VSTCAqZHJhZ2dpbmdFbGVtZW50VVJM
ID0gbmlsOwotICAgIAorCiAgICAgaWYgKGF1dG8gdGlmZlJlc291cmNlID0gX3ByaXZhdGUtPnBy
b21pc2VkRHJhZ1RJRkZEYXRhU291cmNlKSB7CiAgICAgICAgIGlmIChhdXRvKiBidWZmZXIgPSB0
aWZmUmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkpIHsKICAgICAgICAgICAgIE5TVVJMUmVzcG9u
c2UgKnJlc3BvbnNlID0gdGlmZlJlc291cmNlLT5yZXNwb25zZSgpLm5zVVJMUmVzcG9uc2UoKTsK
ICAgICAgICAgICAgIGRyYWdnaW5nRWxlbWVudFVSTCA9IFtyZXNwb25zZSBVUkxdOwotICAgICAg
ICAgICAgd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxh
ckZpbGVXaXRoQ29udGVudHM6YnVmZmVyLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgICAg
ICAgICAgd3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxh
ckZpbGVXaXRoQ29udGVudHM6YnVmZmVyLT5tYWtlQ29udGlndW91cygpLT5jcmVhdGVOU0RhdGEo
KS5nZXQoKV0pOwogICAgICAgICAgICAgTlNTdHJpbmcqIGZpbGVuYW1lID0gW3Jlc3BvbnNlIHN1
Z2dlc3RlZEZpbGVuYW1lXTsKICAgICAgICAgICAgIE5TU3RyaW5nKiB0cnVlRXh0ZW5zaW9uKHRp
ZmZSZXNvdXJjZS0+aW1hZ2UoKS0+ZmlsZW5hbWVFeHRlbnNpb24oKSk7CiAgICAgICAgICAgICBp
ZiAoIW1hdGNoZXNFeHRlbnNpb25PckVxdWl2YWxlbnQoZmlsZW5hbWUsIHRydWVFeHRlbnNpb24p
KQpAQCAtNDMxNiwxNyArNDMxNiwxNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9O
U19FTkQKICAgICAgICAgICAgIFt3cmFwcGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOmZpbGVuYW1l
XTsKICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIGlmICghd3JhcHBlcikgewogICAgICAg
ICBBU1NFUlQoIVtzZWxmIF93ZWJWaWV3XSB8fCBbc2VsZiBfaXNUb3BIVE1MVmlld10pOwogICAg
ICAgICBhdXRvKiBwYWdlID0gY29yZShbc2VsZiBfd2ViVmlld10pOwotICAgICAgICAKKwogICAg
ICAgICAvL0lmIGEgbG9hZCBvY2N1cnMgbWlkd2F5IHRocm91Z2ggYSBkcmFnLCB0aGUgdmlldyBt
YXkgYmUgZGV0YWNoZWQsIHdoaWNoIGdpdmVzCiAgICAgICAgIC8vdXMgbm8gYWJpbGl0eSB0byBn
ZXQgdG8gdGhlIG9yaWdpbmFsIFBhZ2UsIHNvIHdlIGNhbm5vdCBhY2Nlc3MgYW55IGRyYWcgc3Rh
dGUKICAgICAgICAgLy9GSVhNRTogaXMgdGhlcmUgYSB3YXkgdG8gcmVjb3Zlcj8KICAgICAgICAg
aWYgKCFwYWdlKSAKICAgICAgICAgICAgIHJldHVybiBuaWw7IAotICAgICAgICAKKwogICAgICAg
ICBjb25zdCBVUkwmIGltYWdlVVJMID0gcGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS5kcmFnZ2luZ0lt
YWdlVVJMKCk7CiAgICAgICAgIGlmICghaW1hZ2VVUkwuaXNFbXB0eSgpKQogICAgICAgICAgICAg
ZHJhZ2dpbmdFbGVtZW50VVJMID0gaW1hZ2VVUkw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkRhdGFTb3VyY2UuY3BwCmluZGV4IDA4OTdjN2MwNTQ4ZDIwYjFlZjQ1ZTM1ZTFiZjhkOGU0MGVh
NWQzZDQuLjllMDMxZDllZmI3OWQ5NGE5ZDM1NjJiMDZkYmRlZjI3MWU1ZDhjNzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCkBAIC0zNDksNyArMzQ5LDcgQEAg
SFJFU1VMVCBXZWJEYXRhU291cmNlOjpzdWJyZXNvdXJjZUZvclVSTChfSW5fIEJTVFIgdXJsLCBf
Q09NX091dHB0cl9vcHRfIElXZWJSZXMKICAgICBpZiAoIWNhY2hlZFJlc291cmNlKQogICAgICAg
ICByZXR1cm4gRV9GQUlMOwogCi0gICAgKnJlc291cmNlID0gV2ViUmVzb3VyY2U6OmNyZWF0ZUlu
c3RhbmNlKGNhY2hlZFJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpLCBjYWNoZWRSZXNvdXJjZS0+
cmVzcG9uc2UoKSk7CisgICAgKnJlc291cmNlID0gV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNl
KGNhY2hlZFJlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpLT5tYWtlQ29udGlndW91cygpLCBjYWNo
ZWRSZXNvdXJjZS0+cmVzcG9uc2UoKSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452295</attachid>
            <date>2022-02-16 19:54:54 -0800</date>
            <delta_ts>2022-02-17 01:26:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236695-20220217145453.patch</filename>
            <type>text/plain</type>
            <size>21925</size>
            <attacher name="Jean-Yves Avenard [:jya]">jean-yves.avenard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5OTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjE5NjQ4OTc3ZTNmNWEz
ZjZkNDc2NDFhMzE1Y2Y3YWU2YWJjNzI3OC4uOTNmNTQ0YmQ4NjYwMzFjNzQ1YzMxY2ZhNzEyY2Mw
YzI2YjkzOTNiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDIyLTAyLTE2ICBKZWFu
LVl2ZXMgQXZlbmFyZCAgPGp5YUBhcHBsZS5jb20+CisKKyAgICAgICAgQ3Jhc2hUcmFjZXI6IGNv
bS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudCBhdCBKYXZhU2NyaXB0Q29yZTogYm1hbGxvY19hbGxv
Y2F0ZV9pbXBsX2ltcGxfc2xvdworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM2Njk1CisgICAgICAgIHJkYXI6Ly84NzU5NjcyNAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gYSBuZXcgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciBpcyByZWNlaXZlZCBmcm9tIHRoZSBuZXR3b3JrIHByb2Nlc3MsIGl0IGlz
IHByb2FjdGl2ZWx5IGNvYWxlc2NlZAorICAgICAgICBpbnRvIGEgU2hhcmVkQnVmZmVyIGR1cmlu
ZyBlYWNoIGNhbGwgdG8gQ2FjaGVkUmVzb3VyY2U6OnVwZGF0ZUJ1ZmZlcigpLiBUaGlzIGNhdXNl
cyBhIGxhcmdlIG51bWJlcgorICAgICAgICBvZiByZS1hbGxvY2F0aW9ucyBhbmQgY29waWVzOyBl
c3NlbnRpYWxseSByZS1hbGxvY2F0aW5nIGVhY2ggdGltZSB0aGUgcmVzb3VyY2UncyBidWZmZXIg
cmVjZWl2ZXMKKyAgICAgICAgb25lIG1vcmUgY2h1bmsgb2YgZGF0YS4KKyAgICAgICAgSW5zdGVh
ZCB3ZSBvbmx5IGZsYXR0ZW4gdGhlIGRhdGEgYnVmZmVyIG9uY2UgYWxsIGRhdGEgaGF2ZSBiZWVu
IHJlY2VpdmVkLgorCisgICAgICAgIFJ1bm5pbmcgc3BlZWR0ZXN0Lm5ldCB3aXRoIGEgZ2lnYWJp
dCBsaW5rLCB3ZSBzZWUgYSByZWR1Y3Rpb24gb2YgcGVhaworICAgICAgICBtZW1vcnkgdXNlIGlu
IHRoZSBjb250ZW50IHByb2Nlc3MgYnkgYWJvdXQgNDAlIChmcm9tIDc0ME1CIHRvIHVuZGVyIDQ0
ME1CIG9mCisgICAgICAgIHBoeXNpY2FsIG1lbW9yeSwgMS43R0Igb2YgbWVtb3J5IGFsbG9jYXRp
b24gdnMgNTM1TUIpCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAg
ICAgICAqIGVkaXRpbmcvaW9zL0VkaXRvcklPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6d3JpdGVJbWFnZVRvUGFzdGVib2FyZCk6CisgICAgICAgICogZWRpdGluZy9tYWMvRWRpdG9y
TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjp3cml0ZUltYWdlVG9QYXN0ZWJvYXJk
KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkQXBwbGljYXRpb25NYW5pZmVzdDo6ZmluaXNoTG9hZGlu
Zyk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkQ1NTU3R5bGVTaGVldDo6ZmluaXNoTG9hZGluZyk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6dXBkYXRlSW1h
Z2VEYXRhKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFs
RGF0YUNodW5rIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJhd1Jlc291cmNlOjp1
cGRhdGVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlz
aExvYWRpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2U6OnJlc291cmNlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNjcmlw
dDo6c2NyaXB0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRYU0xTdHlsZVNoZWV0OjpmaW5pc2hMb2FkaW5n
KToKKwogMjAyMi0wMi0xNiAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtDTWFrZV0gQ2Fubm90IGZpbmQgT3BlbkdMIHdoZW4gc3lzdGVtIHBy
b3ZpZGVzIG9wZW5nbC5wYyBpbnN0ZWFkIG9mIGdsLnBjCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNlNGY4Y2FiNDNi
ZjhjMTAwMmY5YjMzYjMxMDNmZmEyODI1OGNiZmMuLjExNzg4YmE3NDMxMmNmM2RkZThjOGU5OGM4
MjNkYzc3ZjBhNjBlZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjItMDItMTYgIEpl
YW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KKworICAgICAgICBDcmFzaFRyYWNlcjog
Y29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50IGF0IEphdmFTY3JpcHRDb3JlOiBibWFsbG9jX2Fs
bG9jYXRlX2ltcGxfaW1wbF9zbG93CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzY2OTUKKyAgICAgICAgcmRhcjovLzg3NTk2NzI0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyk6IEZseS1ieSBmaXgsIHRoZQorICAg
ICAgICBJUEM6OkRhdGFSZWZlcmVuY2Ugd291bGQgcmVmZXJlbmNlIGEgU2hhcmVkQnVmZmVyIGdv
aW5nCisgICAgICAgIG91dCBvZiBzY29wZSBiZWZvcmUgaXQgd2FzIHNlbnQgb3ZlciBJUEMuCisK
IDIwMjItMDItMTYgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIGFuIGFkZGl0aW9ucyBwb2ludCBmb3IgYHNob3VsZFJlY29nbml6ZVNpbXVsdGFu
ZW91c2x5V2l0aEdlc3R1cmVSZWNvZ25pemVyYApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmlu
ZGV4IGUyNWY0NDI2ZjcwMTcxM2RjNjkxZjE1ZTZlOGZmYzEwMDQzZmQxYjcuLjQzZGZhMzk2YTYz
OTJiY2UyYTFiODIyYzU5YTAxNmFmZDk4MmFjYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMi0wMi0xNiAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFA
YXBwbGUuY29tPgorCisgICAgICAgIENyYXNoVHJhY2VyOiBjb20uYXBwbGUuV2ViS2l0LldlYkNv
bnRlbnQgYXQgSmF2YVNjcmlwdENvcmU6IGJtYWxsb2NfYWxsb2NhdGVfaW1wbF9pbXBsX3Nsb3cK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjY5NQor
ICAgICAgICByZGFyOi8vODc1OTY3MjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgICgtW1dl
YkhUTUxWaWV3IG5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb246XSk6CisK
IDIwMjItMDItMTYgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBTkdMRSBpbmNsdWRlcyBpbnRlcmZlcmUgd2l0aCBzeXN0ZW0gaGVhZGVyIGluY2x1ZGVz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0gYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KaW5kZXggODUxZjI5NTBiOTFi
YTQ0MGQ5OTkzYTUyMmY5MTUwZjAxYTU4MWVhZi4uMDkxODdjMGY1N2Q0OWNjYjc5YzJlYzdlMzJl
NGU4MTQ1ZTk5NTZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRp
dG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQpA
QCAtMjA0LDcgKzIwNCw4IEBAIHZvaWQgRWRpdG9yOjp3cml0ZUltYWdlVG9QYXN0ZWJvYXJkKFBh
c3RlYm9hcmQmIHBhc3RlYm9hcmQsIEVsZW1lbnQmIGltYWdlRWxlbWVuCiAgICAgcGFzdGVib2Fy
ZEltYWdlLnN1Z2dlc3RlZE5hbWUgPSBpbWFnZVNvdXJjZVVSTC5sYXN0UGF0aENvbXBvbmVudCgp
LnRvU3RyaW5nKCk7CiAgICAgcGFzdGVib2FyZEltYWdlLmltYWdlU2l6ZSA9IGltYWdlLT5zaXpl
KCk7CiAgICAgcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUgPSBwYXN0ZWJvYXJkLnJl
c291cmNlTUlNRVR5cGUoY2FjaGVkSW1hZ2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKSk7Ci0gICAg
cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YSA9IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZl
cigpOworICAgIGlmIChhdXRvKiBidWZmZXIgPSBjYWNoZWRJbWFnZS0+cmVzb3VyY2VCdWZmZXIo
KSkKKyAgICAgICAgcGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YSA9IGJ1ZmZlci0+bWFrZUNv
bnRpZ3VvdXMoKTsKIAogICAgIGlmICghcGFzdGVib2FyZC5pc1N0YXRpYygpKQogICAgICAgICBj
bGllbnQoKS0+Z2V0Q2xpZW50UGFzdGVib2FyZERhdGEobWFrZVJhbmdlU2VsZWN0aW5nTm9kZShp
bWFnZUVsZW1lbnQpLCBwYXN0ZWJvYXJkSW1hZ2UuY2xpZW50VHlwZXMsIHBhc3RlYm9hcmRJbWFn
ZS5jbGllbnREYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0Vk
aXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQppbmRl
eCA3ODYwOTE4N2Y3NWQwNzZlYjlkNzgxNzNiNTBlNGJjNjQwZGQ1Mjc1Li5hOTUwODE2ZWVkMTA1
YjhlMmRiOTJjMDNlZjliOGZkODA1OGQ2Zjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMv
RWRpdG9yTWFjLm1tCkBAIC0zMzUsNyArMzM1LDggQEAgdm9pZCBFZGl0b3I6OndyaXRlSW1hZ2VU
b1Bhc3RlYm9hcmQoUGFzdGVib2FyZCYgcGFzdGVib2FyZCwgRWxlbWVudCYgaW1hZ2VFbGVtZW4K
ICAgICBwYXN0ZWJvYXJkSW1hZ2UudXJsLnVybCA9IHVybDsKICAgICBwYXN0ZWJvYXJkSW1hZ2Uu
dXJsLnRpdGxlID0gdGl0bGU7CiAgICAgcGFzdGVib2FyZEltYWdlLnVybC51c2VyVmlzaWJsZUZv
cm0gPSBXVEY6OnVzZXJWaXNpYmxlU3RyaW5nKHBhc3RlYm9hcmRJbWFnZS51cmwudXJsKTsKLSAg
ICBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhID0gY2FjaGVkSW1hZ2UtPnJlc291cmNlQnVm
ZmVyKCk7CisgICAgaWYgKGF1dG8qIGJ1ZmZlciA9IGNhY2hlZEltYWdlLT5yZXNvdXJjZUJ1ZmZl
cigpKQorICAgICAgICBwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhID0gYnVmZmVyLT5tYWtl
Q29udGlndW91cygpOwogICAgIHBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlID0gY2Fj
aGVkSW1hZ2UtPnJlc3BvbnNlKCkubWltZVR5cGUoKTsKIAogICAgIHBhc3RlYm9hcmQud3JpdGUo
cGFzdGVib2FyZEltYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggNTBjYmQwMjQ4MGVmYjM1MDY3YjEzYzczNjYwODk1
Mjc3NGMzYTY1Ni4uN2JjMmI3NzcxMGVjODAxNWY5NjA0NTFkZGVjNTA3ZjRlMGJhMGU0NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5j
cHAKQEAgLTQ5NCwxNSArNDk0LDE4IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpk
aWRGaW5pc2hMb2FkaW5nKFJlc291cmNlTG9hZGVySWRlbnRpZmllciBpZGVudGlmCiAKICAgICAg
ICAgYXV0byByZXNwb25zZSA9IG1fcmVzb3VyY2UtPnJlc3BvbnNlKCk7CiAKKyAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOworICAgICAgICBpZiAobV9yZXNvdXJjZS0+cmVzb3Vy
Y2VCdWZmZXIoKSkKKyAgICAgICAgICAgIGJ1ZmZlciA9IG1fcmVzb3VyY2UtPnJlc291cmNlQnVm
ZmVyKCktPm1ha2VDb250aWd1b3VzKCk7CiAgICAgICAgIGlmIChvcHRpb25zKCkuZmlsdGVyaW5n
UG9saWN5ID09IFJlc3BvbnNlRmlsdGVyaW5nUG9saWN5OjpEaXNhYmxlKSB7CiAgICAgICAgICAg
ICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKLSAg
ICAgICAgICAgIGlmIChhdXRvKiBidWZmZXIgPSBtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigp
KQorICAgICAgICAgICAgaWYgKGJ1ZmZlcikKICAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlk
UmVjZWl2ZURhdGEoKmJ1ZmZlcik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NF
UlQocmVzcG9uc2UudHlwZSgpID09IFJlc291cmNlUmVzcG9uc2U6OlR5cGU6OkRlZmF1bHQpOwog
CiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIFJl
c291cmNlUmVzcG9uc2U6OmZpbHRlcihyZXNwb25zZSwgbV9vcHRpb25zLmNyZWRlbnRpYWxzID09
IEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6OkluY2x1ZGUgPyBSZXNvdXJjZVJlc3BvbnNlOjpQ
ZXJmb3JtRXhwb3NlQWxsSGVhZGVyc0NoZWNrOjpObyA6IFJlc291cmNlUmVzcG9uc2U6OlBlcmZv
cm1FeHBvc2VBbGxIZWFkZXJzQ2hlY2s6OlllcykpOwotICAgICAgICAgICAgaWYgKGF1dG8qIGJ1
ZmZlciA9IG1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkpCisgICAgICAgICAgICBpZiAoYnVm
ZmVyKQogICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YSgqYnVmZmVyKTsK
ICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0LmNwcAppbmRleCBkZGQwYjFiODliMWQ4NzJi
YjQyNzI3ZWU3OGQ4ZmQ2MzllNGI4OTQ2Li5lOTlmYTVmY2IyYjcyYjA0M2Y4Njg5OTU0ODA4NmVl
MGEwYmUzZDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
QXBwbGljYXRpb25NYW5pZmVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEFwcGxpY2F0aW9uTWFuaWZlc3QuY3BwCkBAIC00Myw5ICs0MywxMCBAQCBDYWNoZWRB
cHBsaWNhdGlvbk1hbmlmZXN0OjpDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0KENhY2hlZFJlc291
cmNlUmVxdWVzdCYmIHJlcQogdm9pZCBDYWNoZWRBcHBsaWNhdGlvbk1hbmlmZXN0OjpmaW5pc2hM
b2FkaW5nKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqIGRhdGEsIGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbWV0cmljcykKIHsKICAgICBpZiAoZGF0YSkgewotICAgICAgICBtX2RhdGEg
PSBkYXRhLT5tYWtlQ29udGlndW91cygpOworICAgICAgICBhdXRvIGNvbnRpZ3VvdXNEYXRhID0g
ZGF0YS0+bWFrZUNvbnRpZ3VvdXMoKTsKICAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6
ZSgpKTsKLSAgICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEt
PmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgbV90ZXh0ID0gbV9kZWNvZGVyLT5kZWNv
ZGVBbmRGbHVzaChjb250aWd1b3VzRGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAg
ICBtX2RhdGEgPSBXVEZNb3ZlKGNvbnRpZ3VvdXNEYXRhKTsKICAgICB9IGVsc2UgewogICAgICAg
ICBtX2RhdGEgPSBudWxscHRyOwogICAgICAgICBzZXRFbmNvZGVkU2l6ZSgwKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAppbmRl
eCAzOGEyZTE3ZjBkMDZjOGFjOThkZTI0YjFlNTJiOGU2MGU5MjQxMjBiLi43MGIzOGY2MWZjMGZm
MGViNjIzMmI0NzAxZmZiNjg5YjBlNjE4NjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCkBAIC0xMDAsMTAgKzEwMCwxMSBA
QCB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OnNldEJvZHlEYXRhRnJvbShjb25zdCBDYWNoZWRS
ZXNvdXJjZSYgcmVzb3VyY2UpCiB2b2lkIENhY2hlZENTU1N0eWxlU2hlZXQ6OmZpbmlzaExvYWRp
bmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciogZGF0YSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRhKSB7Ci0gICAgICAgIG1fZGF0YSA9IGRh
dGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGF1dG8gY29udGlndW91c0RhdGEgPSBkYXRh
LT5tYWtlQ29udGlndW91cygpOwogICAgICAgICBzZXRFbmNvZGVkU2l6ZShkYXRhLT5zaXplKCkp
OwogICAgICAgICAvLyBEZWNvZGUgdGhlIGRhdGEgdG8gZmluZCBvdXQgdGhlIGVuY29kaW5nIGFu
ZCBrZWVwIHRoZSBzaGVldCB0ZXh0IGFyb3VuZCBkdXJpbmcgY2hlY2tOb3RpZnkoKQotICAgICAg
ICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0YS0+
ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICBtX2RlY29kZWRTaGVldFRleHQgPSBtX2Rl
Y29kZXItPmRlY29kZUFuZEZsdXNoKGNvbnRpZ3VvdXNEYXRhLT5kYXRhKCksIGRhdGEtPnNpemUo
KSk7CisgICAgICAgIG1fZGF0YSA9IFdURk1vdmUoY29udGlndW91c0RhdGEpOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CiAgICAgICAgIHNldEVuY29kZWRTaXplKDAp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCmluZGV4IGQyYmMy
ODIxNDc5YzU5YTIzMjNlNGY2NWNkOTRiNjNiNDIzNzM2NDYuLjlkYmQ1Mzc5MzVlMGRkMGI3ZGJk
NGUxMjM5M2FkMGU4MTQwZGQ5MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRGb250LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkRm9udC5jcHAKQEAgLTg3LDcgKzg3LDExIEBAIHZvaWQgQ2FjaGVkRm9udDo6YmVnaW5Mb2Fk
SWZOZWVkZWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXImIGxvYWRlcikKIAogYm9vbCBDYWNoZWRGb250
OjplbnN1cmVDdXN0b21Gb250RGF0YShjb25zdCBBdG9tU3RyaW5nJikKIHsKLSAgICByZXR1cm4g
ZW5zdXJlQ3VzdG9tRm9udERhdGEobV9kYXRhLmdldCgpKTsKKyAgICBpZiAoIW1fZGF0YSkKKyAg
ICAgICAgcmV0dXJuIGVuc3VyZUN1c3RvbUZvbnREYXRhKG51bGxwdHIpOworICAgIGlmICghbV9k
YXRhLT5pc0NvbnRpZ3VvdXMoKSkKKyAgICAgICAgbV9kYXRhID0gbV9kYXRhLT5tYWtlQ29udGln
dW91cygpOworICAgIHJldHVybiBlbnN1cmVDdXN0b21Gb250RGF0YShkb3duY2FzdDxTaGFyZWRC
dWZmZXI+KG1fZGF0YS5nZXQoKSkpOwogfQogCiBTdHJpbmcgQ2FjaGVkRm9udDo6Y2FsY3VsYXRl
SXRlbUluQ29sbGVjdGlvbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcAppbmRleCBhOGM3ZTg3YTE2NGI5MmEwYzJiNjc1MWQ1ODFjZjhhZjRjYmFl
NzYxLi4yOGZmYjIwODllZWE3NjMwYWIzMTgxOTlhNGI3MzVlNDQ0NGIzMjg1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTU0Miw3ICs1NDIsNyBA
QCBFbmNvZGVkRGF0YVN0YXR1cyBDYWNoZWRJbWFnZTo6dXBkYXRlSW1hZ2VEYXRhKGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQogewogICAgIGlmICghbV9pbWFnZSB8fCAhbV9kYXRhKQogICAgICAgICBy
ZXR1cm4gRW5jb2RlZERhdGFTdGF0dXM6OkVycm9yOwotICAgIEVuY29kZWREYXRhU3RhdHVzIHJl
c3VsdCA9IG1faW1hZ2UtPnNldERhdGEobV9kYXRhLmdldCgpLCBhbGxEYXRhUmVjZWl2ZWQpOwor
ICAgIEVuY29kZWREYXRhU3RhdHVzIHJlc3VsdCA9IG1faW1hZ2UtPnNldERhdGEobV9kYXRhLmNv
cHlSZWYoKSwgYWxsRGF0YVJlY2VpdmVkKTsKICAgICBkaWRVcGRhdGVJbWFnZURhdGEoKTsKICAg
ICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXggNTVjNDViZWJmZjRmNGE0Y2Y0ZGQ5Nzk3NDdkYWY4
ZmU0YTIyNDE1Yy4uODVmMTg4YmY3NWZmNWQyNmIyNDFjZGQ5MGU2ODcwOTkyM2I1Y2ZmZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3Bw
CkBAIC00OCw3ICs0OCw3IEBAIENhY2hlZFJhd1Jlc291cmNlOjpDYWNoZWRSYXdSZXNvdXJjZShD
YWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBUeXBlIHR5cGUsCiAgICAgQVNTRVJUKGlz
TWFpbk9yTWVkaWFPckljb25PclJhd1Jlc291cmNlKCkpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFNo
YXJlZEJ1ZmZlckRhdGFWaWV3PiBDYWNoZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50
YWxEYXRhQ2h1bmsoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKSBjb25zdAorc3RkOjpvcHRpb25h
bDxTaGFyZWRCdWZmZXJEYXRhVmlldz4gQ2FjaGVkUmF3UmVzb3VyY2U6OmNhbGN1bGF0ZUluY3Jl
bWVudGFsRGF0YUNodW5rKGNvbnN0IEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGRhdGEpIGNvbnN0
CiB7CiAgICAgc2l6ZV90IHByZXZpb3VzRGF0YUxlbmd0aCA9IGVuY29kZWRTaXplKCk7CiAgICAg
aWYgKGRhdGEuc2l6ZSgpIDw9IHByZXZpb3VzRGF0YUxlbmd0aCkKQEAgLTY4LDcgKzY4LDggQEAg
dm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6dXBkYXRlQnVmZmVyKGNvbnN0IEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXImIGRhdGEpCiAgICAgYXV0byBwcm90ZWN0ZWREYXRhID0gUmVmIHsgZGF0YSB9Owog
CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5
OjpCdWZmZXJEYXRhKTsKLSAgICBtX2RhdGEgPSBkYXRhLm1ha2VDb250aWd1b3VzKCk7CisgICAg
Ly8gV2hpbGUgbV9kYXRhIGlzIGltbXV0YWJsZSwgd2UgbmVlZCB0byBkcm9wIHRoZSBjb25zdCwg
dGhpcyB3aWxsIGJlIHJlbW92ZWQgaW4gYnVnIDIzNjczNi4KKyAgICBtX2RhdGEgPSBjb25zdF9j
YXN0PEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIqPigmZGF0YSk7CiAKICAgICAvLyBOb3RpZnkgY2xp
ZW50cyBvbmx5IG9mIHRoZSBuZXdseSBhcHBlbmRlZCBjb250ZW50IHNpbmNlIHRoZSBsYXN0IHJ1
bi4KICAgICBhdXRvIHByZXZpb3VzRGF0YVNpemUgPSBlbmNvZGVkU2l6ZSgpOwpAQCAtMTEyLDE1
ICsxMTMsMTMgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhjb25zdCBG
cmFnbWVudGVkU2hhcmVkQnVmZmVyKiBkYXRhLCBjb25zdAogICAgIENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIERhdGFCdWZm
ZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1BvbGljeSA9IHRoaXMtPmRhdGFCdWZmZXJpbmdQb2xp
Y3koKTsKICAgICBpZiAoZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBEYXRhQnVmZmVyaW5nUG9saWN5
OjpCdWZmZXJEYXRhKSB7CisgICAgICAgIG1fZGF0YSA9IGNvbnN0X2Nhc3Q8RnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlcio+KGRhdGEpOwogICAgICAgICBpZiAoZGF0YSkgewotICAgICAgICAgICAgaWYg
KGRhdGEgIT0gbV9kYXRhLmdldCgpKQotICAgICAgICAgICAgICAgIG1fZGF0YSA9IGRhdGEtPm1h
a2VDb250aWd1b3VzKCk7Ci0gICAgICAgICAgICBpZiAoYXV0byBpbmNyZW1lbnRhbERhdGEgPSBj
YWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuaygqbV9kYXRhKSkgeworICAgICAgICAgICAgaWYg
KGF1dG8gaW5jcmVtZW50YWxEYXRhID0gY2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoKmRh
dGEpKSB7CiAgICAgICAgICAgICAgICAgc2V0RW5jb2RlZFNpemUoZGF0YS0+c2l6ZSgpKTsKICAg
ICAgICAgICAgICAgICBub3RpZnlDbGllbnRzRGF0YVdhc1JlY2VpdmVkKGluY3JlbWVudGFsRGF0
YS0+Y3JlYXRlU2hhcmVkQnVmZmVyKCkpOwogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgIG1fZGF0YSA9IG51bGxwdHI7CisgICAgICAgIH0KICAgICB9CiAKICNpZiBV
U0UoUVVJQ0tfTE9PSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSYXdSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlLmgKaW5kZXggMzZlNDdhMWRiYTIzMTI4ZGM1MzA3M2I3MGI1ZjNmODUzODA0YWU2
YS4uOWRkZTMxYjhkYjlhZDAyNWZhNDU1NjkxYWJjMTFiZjZlY2U1OWM5OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmgKQEAgLTY3LDcgKzY3
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN3aXRjaENsaWVudHNUb1JldmFsaWRhdGVkUmVzb3Vy
Y2UoKSBvdmVycmlkZTsKICAgICBib29sIG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1fYWxsb3dFbmNvZGVkRGF0YVJlcGxhY2VtZW50OyB9CiAKLSAg
ICBzdGQ6Om9wdGlvbmFsPFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBjYWxjdWxhdGVJbmNyZW1lbnRh
bERhdGFDaHVuayhjb25zdCBTaGFyZWRCdWZmZXImKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFs
PFNoYXJlZEJ1ZmZlckRhdGFWaWV3PiBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhjb25z
dCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJikgY29uc3Q7CiAgICAgdm9pZCBub3RpZnlDbGllbnRz
RGF0YVdhc1JlY2VpdmVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIAogI2lmIFVTRShRVUlD
S19MT09LKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApp
bmRleCA1MzRlMDEyY2M0ZmE1ZGQyYmUxZmQ2ZWVlNWFhNmFlNGU1ZmFlMjBkLi5mZDFmYzQ2MDRm
OTIxYTYxYWM5Y2ZmNjhmMzU4ZjkxNTJmMGNhYzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMjEzLDcgKzIxMyw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgY2xlYXJMb2FkZXIoKTsKIAotICAgIFNoYXJlZEJ1ZmZlciogcmVzb3VyY2VCdWZm
ZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KKyAgICBGcmFnbWVudGVkU2hhcmVk
QnVmZmVyKiByZXNvdXJjZUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQog
CiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VSZXF1ZXN0JiYsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVx
dWVzdCYmKT4mJik7CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYpOwpAQCAtMzM2LDcgKzMzNiw3IEBAIHByb3RlY3RlZDoKICAgICBIYXNo
Q291bnRlZFNldDxDYWNoZWRSZXNvdXJjZUNsaWVudCo+IG1fY2xpZW50czsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8UmVzb3VyY2VSZXF1ZXN0PiBtX29yaWdpbmFsUmVxdWVzdDsgLy8gTmVlZGVkIGJ5
IFBpbmcgbG9hZHMuCiAgICAgUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBtX2xvYWRlcjsKLSAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgUmVmUHRyPEZyYWdtZW50ZWRTaGFy
ZWRCdWZmZXI+IG1fZGF0YTsKIAogcHJpdmF0ZToKICAgICBNb25vdG9uaWNUaW1lIG1fbGFzdERl
Y29kZWRBY2Nlc3NUaW1lOyAvLyBVc2VkIGFzIGEgInRocmFzaCBndWFyZCIgaW4gdGhlIGNhY2hl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCmluZGV4IDYy
YTE2ZTg2YjMyMTkzZDhlNTZkNjE5MmY3N2U5YmM2ZjQwOGU5YmIuLjI1ZDA1OGY3YTZlNmQwODYy
NzUzNTU5YmZhYTM4MmY0MDMzZjNiODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRTY3JpcHQuY3BwCkBAIC01OSwxMCArNTksMTQgQEAgU3RyaW5nVmlldyBDYWNoZWRT
Y3JpcHQ6OnNjcmlwdCgpCiAgICAgaWYgKCFtX2RhdGEpCiAgICAgICAgIHJldHVybiBlbXB0eVN0
cmluZygpOwogCisgICAgaWYgKCFtX2RhdGEtPmlzQ29udGlndW91cygpKQorICAgICAgICBtX2Rh
dGEgPSBtX2RhdGEtPm1ha2VDb250aWd1b3VzKCk7CisKKyAgICBhdXRvJiBjb250aWd1b3VzRGF0
YSA9IGRvd25jYXN0PFNoYXJlZEJ1ZmZlcj4oKm1fZGF0YSk7CiAgICAgaWYgKG1fZGVjb2RpbmdT
dGF0ZSA9PSBOZXZlckRlY29kZWQKICAgICAgICAgJiYgUEFMOjpUZXh0RW5jb2RpbmcoZW5jb2Rp
bmcoKSkuaXNCeXRlQmFzZWRFbmNvZGluZygpCiAgICAgICAgICYmIG1fZGF0YS0+c2l6ZSgpCi0g
ICAgICAgICYmIGNoYXJhY3RlcnNBcmVBbGxBU0NJSShtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5z
aXplKCkpKSB7CisgICAgICAgICYmIGNoYXJhY3RlcnNBcmVBbGxBU0NJSShjb250aWd1b3VzRGF0
YS5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSkgewogCiAgICAgICAgIG1fZGVjb2RpbmdTdGF0ZSA9
IERhdGFBbmREZWNvZGVkU3RyaW5nSGF2ZVNhbWVCeXRlczsKIApAQCAtNzAsMTQgKzc0LDE0IEBA
IFN0cmluZ1ZpZXcgQ2FjaGVkU2NyaXB0OjpzY3JpcHQoKQogICAgICAgICBzZXREZWNvZGVkU2l6
ZSgwKTsKICAgICAgICAgbV9kZWNvZGVkRGF0YURlbGV0aW9uVGltZXIuc3RvcCgpOwogCi0gICAg
ICAgIG1fc2NyaXB0SGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJp
dHMobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgbV9zY3JpcHRIYXNo
ID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhjb250aWd1b3VzRGF0
YS5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKICAgICB9CiAKICAgICBpZiAobV9kZWNvZGluZ1N0
YXRlID09IERhdGFBbmREZWNvZGVkU3RyaW5nSGF2ZVNhbWVCeXRlcykKLSAgICAgICAgcmV0dXJu
IHsgbV9kYXRhLT5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2RhdGEtPnNpemUoKSkg
fTsKKyAgICAgICAgcmV0dXJuIHsgY29udGlndW91c0RhdGEuZGF0YSgpLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4obV9kYXRhLT5zaXplKCkpIH07CiAKICAgICBpZiAoIW1fc2NyaXB0KSB7Ci0gICAg
ICAgIG1fc2NyaXB0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwg
ZW5jb2RlZFNpemUoKSk7CisgICAgICAgIG1fc2NyaXB0ID0gbV9kZWNvZGVyLT5kZWNvZGVBbmRG
bHVzaChjb250aWd1b3VzRGF0YS5kYXRhKCksIGVuY29kZWRTaXplKCkpOwogICAgICAgICBBU1NF
UlQoIW1fc2NyaXB0SGFzaCB8fCBtX3NjcmlwdEhhc2ggPT0gbV9zY3JpcHQuaW1wbCgpLT5oYXNo
KCkpOwogICAgICAgICBpZiAobV9kZWNvZGluZ1N0YXRlID09IE5ldmVyRGVjb2RlZCkKICAgICAg
ICAgICAgIG1fc2NyaXB0SGFzaCA9IG1fc2NyaXB0LmltcGwoKS0+aGFzaCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuY3BwCmluZGV4
IGQyZWZmMmQyZDQwYzkyNzczODc1NmM0YThmMGNiYjkzNDNiZTEwYWIuLjE3ZWZkNmMzZjZlZDZh
YWVjN2ZiNGE1NWE4Nzc5MTMzOWVjNDk3MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAKQEAgLTY0LDkgKzY0LDEwIEBAIFN0
cmluZyBDYWNoZWRYU0xTdHlsZVNoZWV0OjplbmNvZGluZygpIGNvbnN0CiB2b2lkIENhY2hlZFhT
TFN0eWxlU2hlZXQ6OmZpbmlzaExvYWRpbmcoY29uc3QgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciog
ZGF0YSwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBtZXRyaWNzKQogewogICAgIGlmIChkYXRh
KSB7Ci0gICAgICAgIG1fZGF0YSA9IGRhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgIGF1
dG8gY29udGlndW91c0RhdGEgPSBkYXRhLT5tYWtlQ29udGlndW91cygpOwogICAgICAgICBzZXRF
bmNvZGVkU2l6ZShkYXRhLT5zaXplKCkpOwotICAgICAgICBtX3NoZWV0ID0gbV9kZWNvZGVyLT5k
ZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwgZW5jb2RlZFNpemUoKSk7CisgICAgICAgIG1f
c2hlZXQgPSBtX2RlY29kZXItPmRlY29kZUFuZEZsdXNoKGNvbnRpZ3VvdXNEYXRhLT5kYXRhKCks
IGVuY29kZWRTaXplKCkpOworICAgICAgICBtX2RhdGEgPSBXVEZNb3ZlKGNvbnRpZ3VvdXNEYXRh
KTsKICAgICB9IGVsc2UgewogICAgICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgICAgICBzZXRF
bmNvZGVkU2l6ZSgwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDI4ZWM4
ZTIzOGNhNWJmZGYwZGM1MjZmNTZkNmVmYjE4OTAwYWNiZDAuLjNiOGFjMzZkMGFlOWQxNzRjZmE2
NjZiNGJmYzQxNWE4MzBkYTcwZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApA
QCAtMTE4Nyw4ICsxMTg3LDExIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVk
TG9hZGluZyhEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAgICAgICAgICAgaWYgKCF3ZWJQYWdl
KQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgUmVmUHRyPEZyYWdtZW50
ZWRTaGFyZWRCdWZmZXI+IG1haW5SZXNvdXJjZURhdGEgPSBsb2FkZXItPm1haW5SZXNvdXJjZURh
dGEoKTsKLSAgICAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKG1haW5S
ZXNvdXJjZURhdGEgPyBtYWluUmVzb3VyY2VEYXRhLT5tYWtlQ29udGlndW91cygpLT5kYXRhKCkg
OiBudWxscHRyLCBtYWluUmVzb3VyY2VEYXRhID8gbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpIDog
MCk7CisgICAgICAgICAgICBSZWZQdHI8Y29uc3QgU2hhcmVkQnVmZmVyPiBjb250aWd1b3VzRGF0
YTsKKyAgICAgICAgICAgIFJlZlB0cjxjb25zdCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiBtYWlu
UmVzb3VyY2VEYXRhID0gbG9hZGVyLT5tYWluUmVzb3VyY2VEYXRhKCk7CisgICAgICAgICAgICBp
ZiAobWFpblJlc291cmNlRGF0YSkKKyAgICAgICAgICAgICAgICBjb250aWd1b3VzRGF0YSA9IG1h
aW5SZXNvdXJjZURhdGEtPm1ha2VDb250aWd1b3VzKCk7CisgICAgICAgICAgICBJUEM6OkRhdGFS
ZWZlcmVuY2UgZGF0YVJlZmVyZW5jZShjb250aWd1b3VzRGF0YSA/IGNvbnRpZ3VvdXNEYXRhLT5k
YXRhKCkgOiBudWxscHRyLCBjb250aWd1b3VzRGF0YSA/IGNvbnRpZ3VvdXNEYXRhLT5zaXplKCkg
OiAwKTsKICAgICAgICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21Db250ZW50UHJvdmlkZXIobG9hZGVyLT5yZXNw
b25zZSgpLnN1Z2dlc3RlZEZpbGVuYW1lKCksIGRhdGFSZWZlcmVuY2UpKTsKICAgICAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRl
eCBhYTk2ZmM3YTFkNWJmN2NlMzI1NmQ0NjI4NzI3OTNjZDM4NjgwODk5Li4yNTFmMTdhNTUyZjNk
YzliYjBmOGIyODFiNWQ3OTYyZjAyYTg1MjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTQzMDMsMTIgKzQzMDMsMTIgQEAgQUxMT1df
REVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiB7CiAgICAgUmV0YWluUHRyPE5TRmlsZVdy
YXBwZXI+IHdyYXBwZXI7CiAgICAgTlNVUkwgKmRyYWdnaW5nRWxlbWVudFVSTCA9IG5pbDsKLSAg
ICAKKwogICAgIGlmIChhdXRvIHRpZmZSZXNvdXJjZSA9IF9wcml2YXRlLT5wcm9taXNlZERyYWdU
SUZGRGF0YVNvdXJjZSkgewogICAgICAgICBpZiAoYXV0byogYnVmZmVyID0gdGlmZlJlc291cmNl
LT5yZXNvdXJjZUJ1ZmZlcigpKSB7CiAgICAgICAgICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25z
ZSA9IHRpZmZSZXNvdXJjZS0+cmVzcG9uc2UoKS5uc1VSTFJlc3BvbnNlKCk7CiAgICAgICAgICAg
ICBkcmFnZ2luZ0VsZW1lbnRVUkwgPSBbcmVzcG9uc2UgVVJMXTsKLSAgICAgICAgICAgIHdyYXBw
ZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENv
bnRlbnRzOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICAgICAgICAgIHdyYXBw
ZXIgPSBhZG9wdE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENv
bnRlbnRzOmJ1ZmZlci0+bWFrZUNvbnRpZ3VvdXMoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsK
ICAgICAgICAgICAgIE5TU3RyaW5nKiBmaWxlbmFtZSA9IFtyZXNwb25zZSBzdWdnZXN0ZWRGaWxl
bmFtZV07CiAgICAgICAgICAgICBOU1N0cmluZyogdHJ1ZUV4dGVuc2lvbih0aWZmUmVzb3VyY2Ut
PmltYWdlKCktPmZpbGVuYW1lRXh0ZW5zaW9uKCkpOwogICAgICAgICAgICAgaWYgKCFtYXRjaGVz
RXh0ZW5zaW9uT3JFcXVpdmFsZW50KGZpbGVuYW1lLCB0cnVlRXh0ZW5zaW9uKSkKQEAgLTQzMTYs
MTcgKzQzMTYsMTcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAg
ICAgICAgICBbd3JhcHBlciBzZXRQcmVmZXJyZWRGaWxlbmFtZTpmaWxlbmFtZV07CiAgICAgICAg
IH0KICAgICB9Ci0gICAgCisKICAgICBpZiAoIXdyYXBwZXIpIHsKICAgICAgICAgQVNTRVJUKCFb
c2VsZiBfd2ViVmlld10gfHwgW3NlbGYgX2lzVG9wSFRNTFZpZXddKTsKICAgICAgICAgYXV0byog
cGFnZSA9IGNvcmUoW3NlbGYgX3dlYlZpZXddKTsKLSAgICAgICAgCisKICAgICAgICAgLy9JZiBh
IGxvYWQgb2NjdXJzIG1pZHdheSB0aHJvdWdoIGEgZHJhZywgdGhlIHZpZXcgbWF5IGJlIGRldGFj
aGVkLCB3aGljaCBnaXZlcwogICAgICAgICAvL3VzIG5vIGFiaWxpdHkgdG8gZ2V0IHRvIHRoZSBv
cmlnaW5hbCBQYWdlLCBzbyB3ZSBjYW5ub3QgYWNjZXNzIGFueSBkcmFnIHN0YXRlCiAgICAgICAg
IC8vRklYTUU6IGlzIHRoZXJlIGEgd2F5IHRvIHJlY292ZXI/CiAgICAgICAgIGlmICghcGFnZSkg
CiAgICAgICAgICAgICByZXR1cm4gbmlsOyAKLSAgICAgICAgCisKICAgICAgICAgY29uc3QgVVJM
JiBpbWFnZVVSTCA9IHBhZ2UtPmRyYWdDb250cm9sbGVyKCkuZHJhZ2dpbmdJbWFnZVVSTCgpOwog
ICAgICAgICBpZiAoIWltYWdlVVJMLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGRyYWdnaW5nRWxl
bWVudFVSTCA9IGltYWdlVVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNl
LmNwcAppbmRleCAwODk3YzdjMDU0OGQyMGIxZWY0NWUzNWUxYmY4ZDhlNDBlYTVkM2Q0Li45ZTAz
MWQ5ZWZiNzlkOTRhOWQzNTYyYjA2ZGJkZWYyNzFlNWQ4YzczIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcApAQCAtMzQ5LDcgKzM0OSw3IEBAIEhSRVNVTFQgV2Vi
RGF0YVNvdXJjZTo6c3VicmVzb3VyY2VGb3JVUkwoX0luXyBCU1RSIHVybCwgX0NPTV9PdXRwdHJf
b3B0XyBJV2ViUmVzCiAgICAgaWYgKCFjYWNoZWRSZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIEVf
RkFJTDsKIAotICAgICpyZXNvdXJjZSA9IFdlYlJlc291cmNlOjpjcmVhdGVJbnN0YW5jZShjYWNo
ZWRSZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSwgY2FjaGVkUmVzb3VyY2UtPnJlc3BvbnNlKCkp
OworICAgICpyZXNvdXJjZSA9IFdlYlJlc291cmNlOjpjcmVhdGVJbnN0YW5jZShjYWNoZWRSZXNv
dXJjZS0+cmVzb3VyY2VCdWZmZXIoKS0+bWFrZUNvbnRpZ3VvdXMoKSwgY2FjaGVkUmVzb3VyY2Ut
PnJlc3BvbnNlKCkpOwogICAgIHJldHVybiBTX09LOwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>