<?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>150785</bug_id>
          
          <creation_ts>2015-11-01 14:51:12 -0800</creation_ts>
          <short_desc>Modern IDB: IBDObjectStore.count() support</short_desc>
          <delta_ts>2015-11-02 09:51:10 -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>WebCore Misc.</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=150805</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>149117</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jsbell</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1138387</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-11-01 14:51:12 -0800</bug_when>
    <thetext>Modern IDB: IBDObjectStore.count() support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138389</commentid>
    <comment_count>1</comment_count>
      <attachid>264537</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-11-01 14:53:59 -0800</bug_when>
    <thetext>Created attachment 264537
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138399</commentid>
    <comment_count>2</comment_count>
      <attachid>264537</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-11-01 15:34:12 -0800</bug_when>
    <thetext>Comment on attachment 264537
Patch v1

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

&gt; LayoutTests/storage/indexeddb/modern/idbobjectstore-count-1.html:29
&gt; +        alert(&quot;Count is: &quot; + request.result);

Using alert for all the logging is lame: impractical to run in browser (long series of alerts, unclear which ones are success and which are failure), and ugly when running with the test runner.

But also, the output gives no indication of what is being tested. We’d need to fix that.

We have functions to help write tests that write out pass and fail, and testing practices where we write out the expression we are testing and we try to indicate what we are doing and what’s being tested.

&gt; Source/WebCore/Modules/indexeddb/client/IDBObjectStoreImpl.cpp:335
&gt; +    if (!context) {
&gt; +        ec = INVALID_STATE_ERR;
&gt; +        return nullptr;
&gt; +    }

Is a null value for the context actually a possibility? I think this is dead, untested code. Right way to deal with this slightly longer term is to make sure we pass ScriptExecutionContext&amp; instead. Same comment for all our null checking.

&gt; Source/WebCore/Modules/indexeddb/client/IDBObjectStoreImpl.cpp:391
&gt; +    Ref&lt;IDBRequest&gt; request = m_transaction-&gt;requestCount(context, *this, range);
&gt; +    return WTF::move(request);

Should just do this in one line without a local variable. Also no need for WTF::move when you do that.

&gt; Source/WebCore/Modules/indexeddb/client/IDBObjectStoreImpl.h:88
&gt; +    RefPtr&lt;WebCore::IDBRequest&gt; doCount(ScriptExecutionContext&amp;, const IDBKeyRangeData&amp;, ExceptionCode&amp;);

Can this return null or not? If not, please make it return Ref instead of RefPtr.

&gt; Source/WebCore/Modules/indexeddb/client/IDBTransactionImpl.cpp:444
&gt; +    auto operation = createTransactionOperation(*this, request.get(), &amp;IDBTransaction::didGetCountOnServer, &amp;IDBTransaction::getCountOnServer, range);
&gt; +    scheduleOperation(WTF::move(operation));

Could consider doing this all on one line; would eliminate the need for WTF::move.

&gt; Source/WebCore/Modules/indexeddb/client/IDBTransactionImpl.cpp:446
&gt; +    return WTF::move(request);

I think a return at the end of a function is one case where we never need to do a WTF::move.

&gt; Source/WebCore/Modules/indexeddb/server/MemoryObjectStore.cpp:148
&gt; +        key = lowestKeyWithRecordInRange(range);

A real shame that the loop is structured like this. Can we find a way to not have to repeat this twice?

&gt; Source/WebCore/Modules/indexeddb/server/MemoryObjectStore.cpp:151
&gt; +    WTFLogAlways(&quot;Returning count %llu&quot;, count);

I don’t think we want to use WTFLogAlways for anything like this. Would we really want this to always be logged, even with all logging channels turned off?

Also, %llu for a uint64_t is not portable. You can use unsigned long long with %llu, or you can use the PRIu64 macro with uint64_t.

&gt; Source/WebCore/Modules/indexeddb/server/MemoryObjectStore.cpp:170
&gt; +        return IDBKeyData();

Could do:

    return { };

I think it’s a bit nicer than repeating the type all the time.

&gt; Source/WebCore/Modules/indexeddb/server/MemoryObjectStore.cpp:180
&gt; +        return IDBKeyData();

Ditto, etc.

&gt; Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp:160
&gt; +    m_countCallbacks.set(identifier, callback);

Should say:

    ASSERT(!m_countCallbacks.contains(identifier));
    m_countCallbacks.add(identifier, callback);

Using add rather than set is ever so slightly more efficient.

&gt; Source/WebCore/Modules/indexeddb/shared/IDBResultData.h:99
&gt; +    uint64_t m_resultInteger;

Maybe initialize this to 0 rather than leaving it uninitialized?

&gt; Source/WebCore/Modules/indexeddb/shared/InProcessIDBServer.cpp:164
&gt; +    RefPtr&lt;InProcessIDBServer&gt; self(this);

I think this should be named protectedThis. Calling it “self” is a bit too mysterious.

&gt; Source/WebCore/Modules/indexeddb/shared/InProcessIDBServer.cpp:232
&gt; +    RefPtr&lt;InProcessIDBServer&gt; self(this);

I think this should be named protectedThis. Calling it “self” is a bit too mysterious.

&gt; Source/WebCore/Modules/indexeddb/shared/InProcessIDBServer.cpp:233
&gt; +

Lets not leave this blank line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138429</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-11-01 17:27:54 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 264537 [details]
&gt; Patch v1
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=264537&amp;action=review
&gt; 
&gt; &gt; LayoutTests/storage/indexeddb/modern/idbobjectstore-count-1.html:29
&gt; &gt; +        alert(&quot;Count is: &quot; + request.result);
&gt; 
&gt; Using alert for all the logging is lame: impractical to run in browser (long
&gt; series of alerts, unclear which ones are success and which are failure), and
&gt; ugly when running with the test runner.
&gt; 
&gt; But also, the output gives no indication of what is being tested. We’d need
&gt; to fix that.
&gt; 
&gt; We have functions to help write tests that write out pass and fail, and
&gt; testing practices where we write out the expression we are testing and we
&gt; try to indicate what we are doing and what’s being tested.

and

&gt; &gt; Source/WebCore/Modules/indexeddb/client/IDBObjectStoreImpl.cpp:335
&gt; &gt; +    if (!context) {
&gt; &gt; +        ec = INVALID_STATE_ERR;
&gt; &gt; +        return nullptr;
&gt; &gt; +    }
&gt; 
&gt; Is a null value for the context actually a possibility? I think this is
&gt; dead, untested code. Right way to deal with this slightly longer term is to
&gt; make sure we pass ScriptExecutionContext&amp; instead. Same comment for all our
&gt; null checking.

Points taken.

&gt; &gt; Source/WebCore/Modules/indexeddb/client/IDBObjectStoreImpl.cpp:391
&gt; &gt; +    Ref&lt;IDBRequest&gt; request = m_transaction-&gt;requestCount(context, *this, range);
&gt; &gt; +    return WTF::move(request);
&gt; 
&gt; Should just do this in one line without a local variable. Also no need for
&gt; WTF::move when you do that.
&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/client/IDBObjectStoreImpl.h:88
&gt; &gt; +    RefPtr&lt;WebCore::IDBRequest&gt; doCount(ScriptExecutionContext&amp;, const IDBKeyRangeData&amp;, ExceptionCode&amp;);
&gt; 
&gt; Can this return null or not? If not, please make it return Ref instead of
&gt; RefPtr.

Yes it can (correctly) return nullptr.

&gt; &gt; Source/WebCore/Modules/indexeddb/client/IDBTransactionImpl.cpp:444
&gt; &gt; +    auto operation = createTransactionOperation(*this, request.get(), &amp;IDBTransaction::didGetCountOnServer, &amp;IDBTransaction::getCountOnServer, range);
&gt; &gt; +    scheduleOperation(WTF::move(operation));
&gt; 
&gt; Could consider doing this all on one line; would eliminate the need for
&gt; WTF::move.

Seems reasonable.

&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/client/IDBTransactionImpl.cpp:446
&gt; &gt; +    return WTF::move(request);
&gt; 
&gt; I think a return at the end of a function is one case where we never need to
&gt; do a WTF::move.

I &quot;knew&quot; this, but still have a hard time internalizing this. Will change.

&gt; &gt; Source/WebCore/Modules/indexeddb/server/MemoryObjectStore.cpp:148
&gt; &gt; +        key = lowestKeyWithRecordInRange(range);
&gt; 
&gt; A real shame that the loop is structured like this. Can we find a way to not
&gt; have to repeat this twice?

With a while(true) and a break, yes. I don&apos;t like the loop as much, but will stick with it because it removes that line being written twice.

&gt; &gt; Source/WebCore/Modules/indexeddb/server/MemoryObjectStore.cpp:151
&gt; &gt; +    WTFLogAlways(&quot;Returning count %llu&quot;, count);
&gt; 
&gt; I don’t think we want to use WTFLogAlways for anything like this. Would we
&gt; really want this to always be logged, even with all logging channels turned
&gt; off?
&gt; 
&gt; Also, %llu for a uint64_t is not portable. You can use unsigned long long
&gt; with %llu, or you can use the PRIu64 macro with uint64_t.

This was simply errantly left in the patch and is now gone.

&gt; &gt; Source/WebCore/Modules/indexeddb/server/MemoryObjectStore.cpp:170
&gt; &gt; +        return IDBKeyData();
&gt; 
&gt; Could do:
&gt; 
&gt;     return { };
&gt; 
&gt; I think it’s a bit nicer than repeating the type all the time.
&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/server/MemoryObjectStore.cpp:180
&gt; &gt; +        return IDBKeyData();
&gt; 
&gt; Ditto, etc.

Done, ditto, etc.

&gt; &gt; Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp:160
&gt; &gt; +    m_countCallbacks.set(identifier, callback);
&gt; 
&gt; Should say:
&gt; 
&gt;     ASSERT(!m_countCallbacks.contains(identifier));
&gt;     m_countCallbacks.add(identifier, callback);
&gt; 
&gt; Using add rather than set is ever so slightly more efficient.
&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/shared/IDBResultData.h:99
&gt; &gt; +    uint64_t m_resultInteger;
&gt; 
&gt; Maybe initialize this to 0 rather than leaving it uninitialized?

Undoubtedly. 

&gt; &gt; Source/WebCore/Modules/indexeddb/shared/InProcessIDBServer.cpp:164
&gt; &gt; +    RefPtr&lt;InProcessIDBServer&gt; self(this);
&gt; 
&gt; I think this should be named protectedThis. Calling it “self” is a bit too
&gt; mysterious.
&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/shared/InProcessIDBServer.cpp:232
&gt; &gt; +    RefPtr&lt;InProcessIDBServer&gt; self(this);
&gt; 
&gt; I think this should be named protectedThis. Calling it “self” is a bit too
&gt; mysterious.

I will consider a followup that does a sweep of the whole file, as &quot;self&quot; is rather established practice at this point.

&gt; &gt; Source/WebCore/Modules/indexeddb/shared/InProcessIDBServer.cpp:233
&gt; &gt; +
&gt; 
&gt; Lets not leave this blank line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138430</commentid>
    <comment_count>4</comment_count>
      <attachid>264546</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-11-01 17:31:40 -0800</bug_when>
    <thetext>Created attachment 264546
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138437</commentid>
    <comment_count>5</comment_count>
      <attachid>264546</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-01 18:16:45 -0800</bug_when>
    <thetext>Comment on attachment 264546
Patch for landing.

Rejecting attachment 264546 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;build&apos;, &apos;--no-clean&apos;, &apos;--no-update&apos;, &apos;--build-style=release&apos;, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
bKit/Source/WebCore/Modules/indexeddb/legacy/IDBDatabaseBackend.cpp -o /Volumes/Data/EWS/WebKit/WebKitBuild/WebCore.build/Release/WebCore.build/Objects-normal/x86_64/IDBDatabaseBackend.o

** BUILD FAILED **


The following build commands failed:
	CompileC /Volumes/Data/EWS/WebKit/WebKitBuild/WebCore.build/Release/WebCore.build/Objects-normal/x86_64/IDBConnectionToServer.o Modules/indexeddb/client/IDBConnectionToServer.cpp normal x86_64 c++ com.apple.compilers.llvm.clang.1_0.compiler
(1 failure)

Full output: http://webkit-queues.webkit.org/results/369559</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138445</commentid>
    <comment_count>6</comment_count>
      <attachid>264550</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-11-01 19:11:43 -0800</bug_when>
    <thetext>Created attachment 264550
Patch for landing v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138450</commentid>
    <comment_count>7</comment_count>
      <attachid>264550</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-01 19:58:13 -0800</bug_when>
    <thetext>Comment on attachment 264550
Patch for landing v2

Rejecting attachment 264550 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;build&apos;, &apos;--no-clean&apos;, &apos;--no-update&apos;, &apos;--build-style=release&apos;, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
es/Data/EWS/WebKit/Source/WebCore/svg/graphics/SVGImageForContainer.cpp -o /Volumes/Data/EWS/WebKit/WebKitBuild/WebCore.build/Release/WebCore.build/Objects-normal/x86_64/SVGImageForContainer.o

** BUILD FAILED **


The following build commands failed:
	CompileC /Volumes/Data/EWS/WebKit/WebKitBuild/WebCore.build/Release/WebCore.build/Objects-normal/x86_64/IDBObjectStoreImpl.o Modules/indexeddb/client/IDBObjectStoreImpl.cpp normal x86_64 c++ com.apple.compilers.llvm.clang.1_0.compiler
(1 failure)

Full output: http://webkit-queues.webkit.org/results/369943</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138467</commentid>
    <comment_count>8</comment_count>
      <attachid>264554</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-11-01 22:05:16 -0800</bug_when>
    <thetext>Created attachment 264554
Patch for landing 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138474</commentid>
    <comment_count>9</comment_count>
      <attachid>264554</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-01 22:53:41 -0800</bug_when>
    <thetext>Comment on attachment 264554
Patch for landing 3

Clearing flags on attachment: 264554

Committed r191877: &lt;http://trac.webkit.org/changeset/191877&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264537</attachid>
            <date>2015-11-01 14:53:59 -0800</date>
            <delta_ts>2015-11-01 15:34:12 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>50044</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyYjEzM2E2Li41OWY4ODdmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTUtMTEt
MDEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1vZGVybiBJ
REI6IElCRE9iamVjdFN0b3JlLmNvdW50KCkgc3VwcG9ydC4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDc4NQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lk
Ym9iamVjdHN0b3JlLWNvdW50LTEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtY291bnQtMS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtY291bnQt
ZmFpbHVyZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtY291bnQtZmFpbHVyZXMuaHRtbDogQWRkZWQuCisKIDIw
MTUtMTAtMzEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIHN0
b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJkYXRhYmFzZS1kZWxldGVvYmplY3RzdG9yZS1mYWls
dXJlcy5odG1sIGlzIGZsYWt5LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLWNvdW50LTEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLWNvdW50LTEtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4MTMzN2YKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRi
b2JqZWN0c3RvcmUtY291bnQtMS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1NCBAQAorQUxFUlQ6
IEluaXRpYWwgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gMCBOZXcgdmVyc2lvbiAtIDEK
K0FMRVJUOiBDb3VudCBpczogMQorQUxFUlQ6IENvdW50IGlzOiAwCitBTEVSVDogQ291bnQgaXM6
IDAKK0FMRVJUOiBDb3VudCBpczogMAorQUxFUlQ6IENvdW50IGlzOiAwCitBTEVSVDogQ291bnQg
aXM6IDIKK0FMRVJUOiBDb3VudCBpczogMAorQUxFUlQ6IENvdW50IGlzOiAwCitBTEVSVDogQ291
bnQgaXM6IDAKK0FMRVJUOiBDb3VudCBpczogMAorQUxFUlQ6IENvdW50IGlzOiAzCitBTEVSVDog
Q291bnQgaXM6IDEKK0FMRVJUOiBDb3VudCBpczogMAorQUxFUlQ6IENvdW50IGlzOiAxCitBTEVS
VDogQ291bnQgaXM6IDAKK0FMRVJUOiBDb3VudCBpczogNAorQUxFUlQ6IENvdW50IGlzOiAyCitB
TEVSVDogQ291bnQgaXM6IDEKK0FMRVJUOiBDb3VudCBpczogMgorQUxFUlQ6IENvdW50IGlzOiAw
CitBTEVSVDogQ291bnQgaXM6IDUKK0FMRVJUOiBDb3VudCBpczogMworQUxFUlQ6IENvdW50IGlz
OiAyCitBTEVSVDogQ291bnQgaXM6IDMKK0FMRVJUOiBDb3VudCBpczogMAorQUxFUlQ6IENvdW50
IGlzOiA2CitBTEVSVDogQ291bnQgaXM6IDQKK0FMRVJUOiBDb3VudCBpczogMworQUxFUlQ6IENv
dW50IGlzOiAzCitBTEVSVDogQ291bnQgaXM6IDAKK0FMRVJUOiBDb3VudCBpczogNworQUxFUlQ6
IENvdW50IGlzOiA0CitBTEVSVDogQ291bnQgaXM6IDMKK0FMRVJUOiBDb3VudCBpczogMworQUxF
UlQ6IENvdW50IGlzOiAxCitBTEVSVDogQ291bnQgaXM6IDgKK0FMRVJUOiBDb3VudCBpczogNAor
QUxFUlQ6IENvdW50IGlzOiAzCitBTEVSVDogQ291bnQgaXM6IDMKK0FMRVJUOiBDb3VudCBpczog
MQorQUxFUlQ6IENvdW50IGlzOiA5CitBTEVSVDogQ291bnQgaXM6IDQKK0FMRVJUOiBDb3VudCBp
czogMworQUxFUlQ6IENvdW50IGlzOiAzCitBTEVSVDogQ291bnQgaXM6IDEKK0FMRVJUOiBDb3Vu
dCBpczogMTAKK0FMRVJUOiBDb3VudCBpczogNAorQUxFUlQ6IENvdW50IGlzOiAzCitBTEVSVDog
Q291bnQgaXM6IDMKK0FMRVJUOiBDb3VudCBpczogMQorQUxFUlQ6IEluaXRpYWwgdXBncmFkZSB2
ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRlCitBTEVSVDogRG9uZQorVGhpcyB0ZXN0
IGV4ZXJjaXNlcyB2YXJpb3VzIHVzZXMgb2YgSURCT2JqZWN0U3RvcmUuY291bnQoKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3Jl
LWNvdW50LTEuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJv
YmplY3RzdG9yZS1jb3VudC0xLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uY2RmOTQyZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1jb3VudC0xLmh0bWwKQEAgLTAsMCArMSw5MiBAQAor
VGhpcyB0ZXN0IGV4ZXJjaXNlcyB2YXJpb3VzIHVzZXMgb2YgSURCT2JqZWN0U3RvcmUuY291bnQo
KQorPHNjcmlwdD4KKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cit9CisKK2Z1bmN0
aW9uIGRvbmUoKQoreworICAgIGFsZXJ0KCJEb25lIik7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKwordmFyIGNyZWF0ZVJl
cXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIklEQk9iamVjdFN0b3JlQ291bnQxRGF0YWJh
c2UiLCAxKTsKK3ZhciBkYXRhYmFzZTsKK3ZhciBvYmplY3RTdG9yZTsKKworZnVuY3Rpb24gZ2V0
Q291bnQoYXJnKQoreworICAgIHZhciByZXF1ZXN0OworICAgIGlmIChhcmcgPT0gdW5kZWZpbmVk
KQorICAgICAgICByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuY291bnQoKTsKKyAgICBlbHNlCisgICAg
ICAgIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5jb3VudChhcmcpOworICAgIAorICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGFsZXJ0KCJDb3VudCBpczogIiArIHJl
cXVlc3QucmVzdWx0KTsKKyAgICB9CisgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZXJy
b3IpIHsKKyAgICAgICAgYWxlcnQoIlVuZXhwZWN0ZWQgZXJyb3IgZ2V0dGluZyBjb3VudDogIiAr
IGVycm9yKTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KK30KKworZnVuY3Rpb24gZ2V0Q291bnRz
KCkKK3sKKyAgICBnZXRDb3VudCgpOworICAgIGdldENvdW50KElEQktleVJhbmdlLmJvdW5kKDMs
IDYpKTsgICAgCisgICAgZ2V0Q291bnQoSURCS2V5UmFuZ2UuYm91bmQoMywgNiwgdHJ1ZSwgZmFs
c2UpKTsgICAgCisgICAgZ2V0Q291bnQoSURCS2V5UmFuZ2UuYm91bmQoMywgNiwgZmFsc2UsIHRy
dWUpKTsKKyAgICBnZXRDb3VudCg3KTsgICAgCit9CisKK2NyZWF0ZVJlcXVlc3Qub251cGdyYWRl
bmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBhbGVydCgiSW5pdGlhbCB1cGdyYWRlIG5l
ZWRlZDogT2xkIHZlcnNpb24gLSAiICsgZXZlbnQub2xkVmVyc2lvbiArICIgTmV3IHZlcnNpb24g
LSAiICsgZXZlbnQubmV3VmVyc2lvbik7CisKKyAgICB2YXIgdmVyc2lvblRyYW5zYWN0aW9uID0g
Y3JlYXRlUmVxdWVzdC50cmFuc2FjdGlvbjsKKyAgICBkYXRhYmFzZSA9IGV2ZW50LnRhcmdldC5y
ZXN1bHQ7CisgICAgb2JqZWN0U3RvcmUgPSBkYXRhYmFzZS5jcmVhdGVPYmplY3RTdG9yZSgiVGVz
dE9iamVjdFN0b3JlIik7CisgICAgCisgICAgb2JqZWN0U3RvcmUucHV0KDEsIDEpOworICAgIGdl
dENvdW50cygpOworICAgIG9iamVjdFN0b3JlLnB1dCgyLCAyKTsKKyAgICBnZXRDb3VudHMoKTsK
KyAgICBvYmplY3RTdG9yZS5wdXQoMywgMyk7CisgICAgZ2V0Q291bnRzKCk7CisgICAgb2JqZWN0
U3RvcmUucHV0KDQsIDQpOworICAgIGdldENvdW50cygpOworICAgIG9iamVjdFN0b3JlLnB1dCg1
LCA1KTsKKyAgICBnZXRDb3VudHMoKTsKKyAgICBvYmplY3RTdG9yZS5wdXQoNiwgNik7CisgICAg
Z2V0Q291bnRzKCk7CisgICAgb2JqZWN0U3RvcmUucHV0KDcsIDcpOworICAgIGdldENvdW50cygp
OworICAgIG9iamVjdFN0b3JlLnB1dCg4LCA4KTsKKyAgICBnZXRDb3VudHMoKTsKKyAgICBvYmpl
Y3RTdG9yZS5wdXQoOSwgOSk7CisgICAgZ2V0Q291bnRzKCk7CisgICAgb2JqZWN0U3RvcmUucHV0
KDEwLCAxMCk7CisgICAgZ2V0Q291bnRzKCk7CisKKyAgICAvLyBGSVhNRTogT25jZSBvYmplY3RT
dG9yZS5kZWxldGUoKSBpcyBpbXBsZW1lbnRlZCwgYWxzbyB0ZXN0IGNvdW50cyBhZnRlciBkZWxl
dGluZyBwcmV2aW91cyByZWNvcmRzLgorICAgIAorICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmFi
b3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgYWxlcnQoIkluaXRpYWwgdXBncmFkZSB2
ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnQiKTsKKyAgICAgICAgZG9u
ZSgpOworICAgIH0KKworICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0gZnVuY3Rp
b24oZXZlbnQpIHsKKyAgICAgICAgYWxlcnQoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdl
IHRyYW5zYWN0aW9uIGNvbXBsZXRlIik7CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisKKyAgICB2
ZXJzaW9uVHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGFs
ZXJ0KCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVk
IGVycm9yIiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KK30KKworPC9zY3JpcHQ+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2Jq
ZWN0c3RvcmUtY291bnQtZmFpbHVyZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLWNvdW50LWZhaWx1cmVzLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODNhNjgwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVj
dHN0b3JlLWNvdW50LWZhaWx1cmVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK0FMRVJU
OiBJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtIDAgTmV3IHZlcnNpb24gLSAx
CitBTEVSVDogRmFpbGVkIHRvIGNvdW50IHJlY29yZHMgaW4gb2JqZWN0IHN0b3JlIHdpdGggYW4g
aW52YWxpZCBrZXkKK0FMRVJUOiBGYWlsZWQgdG8gY291bnQgcmVjb3JkcyBpbiBvYmplY3Qgc3Rv
cmUgdGhhdCdzIGJlZW4gZGVsZXRlZAorQUxFUlQ6IEluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hh
bmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRlCitBTEVSVDogRmFpbGVkIHRvIGNvdW50IHJlY29yZHMg
aW4gb2JqZWN0IHN0b3JlIHdoaWxlIHRyYW5zYWN0aW9uIGlzIGluYWN0aXZlCitBTEVSVDogcmVh
ZG9ubHkgdHJhbnNhY3Rpb24gY29tcGxldGUKK0FMRVJUOiBEb25lCitUaGlzIHRlc3RzIHNvbWUg
b2J2aW91cyBmYWlsdXJlcyB0aGF0IGNhbiBoYXBwZW4gd2hpbGUgY2FsbGluZyBJREJPYmplY3RT
dG9yZS5jb3VudCgpLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
bW9kZXJuL2lkYm9iamVjdHN0b3JlLWNvdW50LWZhaWx1cmVzLmh0bWwgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtY291bnQtZmFpbHVyZXMuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzlmNTc4Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0
b3JlLWNvdW50LWZhaWx1cmVzLmh0bWwKQEAgLTAsMCArMSw5OCBAQAorVGhpcyB0ZXN0cyBzb21l
IG9idmlvdXMgZmFpbHVyZXMgdGhhdCBjYW4gaGFwcGVuIHdoaWxlIGNhbGxpbmcgSURCT2JqZWN0
U3RvcmUuY291bnQoKS4KKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworfQorCitmdW5jdGlvbiBkb25lKCkKK3sKKyAgICBhbGVydCgiRG9uZSIpOworICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9CisK
K3ZhciBjcmVhdGVSZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJJREJPYmplY3RTdG9y
ZUNvdW50RmFpbHVyZXNEYXRhYmFzZSIsIDEpOwordmFyIGRhdGFiYXNlOworCitjcmVhdGVSZXF1
ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgYWxlcnQoIkluaXRp
YWwgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gIiArIGV2ZW50Lm9sZFZlcnNpb24gKyAi
IE5ldyB2ZXJzaW9uIC0gIiArIGV2ZW50Lm5ld1ZlcnNpb24pOworCisgICAgdmFyIHZlcnNpb25U
cmFuc2FjdGlvbiA9IGNyZWF0ZVJlcXVlc3QudHJhbnNhY3Rpb247CisgICAgZGF0YWJhc2UgPSBl
dmVudC50YXJnZXQucmVzdWx0OworICAgIHZhciBvYmplY3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0
ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKKyAgICB2YXIgcmVxdWVzdCA9IG9iamVj
dFN0b3JlLnB1dCgiYmFyIiwgImZvbyIpOworCisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbigpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG9iamVjdFN0b3JlLmNvdW50KE5h
Tik7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgYWxlcnQoIkZhaWxlZCB0byBj
b3VudCByZWNvcmRzIGluIG9iamVjdCBzdG9yZSB3aXRoIGFuIGludmFsaWQga2V5Iik7CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIGRhdGFiYXNlLmRlbGV0ZU9iamVjdFN0b3JlKCJUZXN0
T2JqZWN0U3RvcmUiKTsKKyAgICAgICAgCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBvYmpl
Y3RTdG9yZS5jb3VudCgpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGFsZXJ0
KCJGYWlsZWQgdG8gY291bnQgcmVjb3JkcyBpbiBvYmplY3Qgc3RvcmUgdGhhdCdzIGJlZW4gZGVs
ZXRlZCIpOworICAgICAgICB9IAorCisgICAgICAgIC8vIFJlY3JlYXRlIHRoZSBvYmplY3RzdG9y
ZSBiZWNhdXNlIHdlJ2xsIG5lZWQgaXQgaW4gcGhhc2UgMi4KKyAgICAgICAgdmFyIG9iamVjdFN0
b3JlID0gZGF0YWJhc2UuY3JlYXRlT2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOworICAg
ICAgICBvYmplY3RTdG9yZS5wdXQoImJhciIsICJmb28iKTsgICAgCisgICAgfQorICAgIAorICAg
IHZlcnNpb25UcmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAg
YWxlcnQoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0
ZWQgYWJvcnRlZCIpOworICAgICAgICBkb25lKCk7CisgICAgfQorCisgICAgdmVyc2lvblRyYW5z
YWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBhbGVydCgiSW5p
dGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGUiKTsKKyAgICAg
ICAgY29udGludWVUZXN0MSgpOworICAgIH0KKworICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmVy
cm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgYWxlcnQoIkluaXRpYWwgdXBncmFkZSB2
ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IiICsgZXZlbnQpOworICAg
ICAgICBkb25lKCk7CisgICAgfQorfQorCitmdW5jdGlvbiBjb250aW51ZVRlc3QxKCkKK3sKKyAg
ICB2YXIgdHJhbnNhY3Rpb24gPSBkYXRhYmFzZS50cmFuc2FjdGlvbigiVGVzdE9iamVjdFN0b3Jl
IiwgInJlYWRvbmx5Iik7CisgICAgdmFyIG9iamVjdFN0b3JlID0gdHJhbnNhY3Rpb24ub2JqZWN0
U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOworCisgICAgLy8gUXVldWUgdXAgYSB3aG9sZSBidW5j
aCBvZiBnZXRzIHRvIGtlZXAgdGhlIHRyYW5zYWN0aW9uIGFsaXZlIGZvciBhd2hpbGUKKyAgICBm
b3IgKHZhciBpID0gMDsgaSA8IDEwOyArK2kpCisgICAgICAgIG9iamVjdFN0b3JlLmdldCgiZm9v
Iik7CisKKyAgICB2YXIgZ2V0V2hpbGVJbmFjdGl2ZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICB0
cnkgeworICAgICAgICAgICAgb2JqZWN0U3RvcmUuY291bnQoKTsKKyAgICAgICAgfSBjYXRjaChl
KSB7CisgICAgICAgICAgICBhbGVydCgiRmFpbGVkIHRvIGNvdW50IHJlY29yZHMgaW4gb2JqZWN0
IHN0b3JlIHdoaWxlIHRyYW5zYWN0aW9uIGlzIGluYWN0aXZlIik7CisgICAgICAgIH0gCisgICAg
fQorICAgIAorICAgIHNldFRpbWVvdXQoZ2V0V2hpbGVJbmFjdGl2ZSwgMCk7CisgICAgCisgICAg
dHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGFsZXJ0KCJy
ZWFkb25seSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0IiArIGV2ZW50KTsKKyAgICAgICAg
ZG9uZSgpOworICAgIH0KKworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihl
dmVudCkgeworICAgICAgICBhbGVydCgicmVhZG9ubHkgdHJhbnNhY3Rpb24gY29tcGxldGUiKTsK
KyAgICAgICAgZG9uZSgpOworICAgIH0KKworICAgIHRyYW5zYWN0aW9uLm9uZXJyb3IgPSBmdW5j
dGlvbihldmVudCkgeworICAgICAgICBhbGVydCgicmVhZG9ubHkgdHJhbnNhY3Rpb24gdW5leHBl
Y3RlZCBlcnJvciIgKyBldmVudCk7CisgICAgICAgIGRvbmUoKTsKKyAgICB9Cit9CisKKzwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDI2YmEzZWUuLmZiYTNhNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw3OSBAQAorMjAxNS0xMS0wMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgTW9kZXJuIElEQjogSUJET2JqZWN0U3RvcmUuY291bnQoKSBzdXBwb3J0LgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzg1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IHN0b3Jh
Z2UvaW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1jb3VudC0xLmh0bWwKKyAgICAgICAg
ICAgICAgIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1jb3VudC1mYWls
dXJlcy5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVj
dGlvblRvU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVj
dGlvblRvU2VydmVyOjpnZXRDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklE
QkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGlkR2V0Q291bnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyRGVsZWdhdGUuaDoKKyAgICAg
ICAgCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQk9iamVjdFN0b3JlSW1w
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQk9iamVjdFN0b3JlOjpjb3Vu
dCk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQk9iamVjdFN0b3JlOjpkb0NvdW50
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCT2JqZWN0U3RvcmVJbXBs
Lmg6CisgICAgICAgIAorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJSZXF1
ZXN0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQlJlcXVlc3Q6OnNl
dFJlc3VsdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlJlcXVlc3RJ
bXBsLmg6CisgICAgICAgIAorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJU
cmFuc2FjdGlvbkltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJUcmFu
c2FjdGlvbjo6cmVxdWVzdENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURC
VHJhbnNhY3Rpb246OmdldENvdW50T25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xp
ZW50OjpJREJUcmFuc2FjdGlvbjo6ZGlkR2V0Q291bnRPblNlcnZlcik6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlRyYW5zYWN0aW9uSW1wbC5oOgorICAgICAgICAKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmg6CisgICAg
ICAgIAorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9D
bGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9D
bGllbnQ6OmRpZEdldENvdW50KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
SURCQ29ubmVjdGlvblRvQ2xpZW50Lmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlLmg6CisgICAgICAgIAorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OmdldENvdW50KToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmg6CisgICAgICAgIAorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpNZW1vcnlJREJCYWNraW5nU3RvcmU6OmdldENvdW50KToKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmg6Cisg
ICAgICAgIAorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RT
dG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeU9iamVjdFN0b3Jl
Ojpjb3VudEZvcktleVJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5
T2JqZWN0U3RvcmU6OnZhbHVlRm9yS2V5UmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpNZW1vcnlPYmplY3RTdG9yZTo6bG93ZXN0S2V5V2l0aFJlY29yZEluUmFuZ2UpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5oOgorICAg
ICAgICAKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJh
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6
c3RvcmVDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRh
dGFiYXNlOjpnZXRDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlE
QkRhdGFiYXNlOjpwZXJmb3JtR2V0Q291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybUdldENvdW50KToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1Db3VudENhbGxiYWNrKToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaDoK
KyAgICAgICAgCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlx
dWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpnZXRSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpnZXRDb3VudCk6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24uaDoKKyAgICAgICAgCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJl
c3VsdERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVzdWx0RGF0YTo6SURCUmVzdWx0
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXN1bHREYXRhOjpnZXRDb3VudFN1Y2Nlc3Mp
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJSZXN1bHREYXRhOjpyZXN1bHRJbnRlZ2VyKToKKyAgICAgICAg
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEdldENvdW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkluUHJvY2Vzc0lEQlNlcnZlcjo6Z2V0Q291bnQpOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuaDoKKwogMjAx
NS0xMC0zMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgc3Rv
cmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYmRhdGFiYXNlLWRlbGV0ZW9iamVjdHN0b3JlLWZhaWx1
cmVzLmh0bWwgaXMgZmxha3kuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCmluZGV4
IDljZTIwZmYuLjkwMzljMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCkBA
IC0xNzAsNiArMTcwLDIyIEBAIHZvaWQgSURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWRHZXRSZWNv
cmQoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKICAgICBjb21wbGV0ZU9wZXJhdGlv
bihyZXN1bHREYXRhKTsKIH0KIAordm9pZCBJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmdldENvdW50
KFRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0IElEQktleVJhbmdlRGF0YSYg
a2V5UmFuZ2VEYXRhKQoreworICAgIExPRyhJbmRleGVkREIsICJJREJDb25uZWN0aW9uVG9TZXJ2
ZXI6OmdldENvdW50Iik7CisKKyAgICBBU1NFUlQoIWtleVJhbmdlRGF0YS5pc051bGwpOworCisg
ICAgc2F2ZU9wZXJhdGlvbihvcGVyYXRpb24pOworICAgIG1fZGVsZWdhdGUtPmdldENvdW50KElE
QlJlcXVlc3REYXRhKG9wZXJhdGlvbiksIGtleVJhbmdlRGF0YSk7Cit9CisKK3ZvaWQgSURCQ29u
bmVjdGlvblRvU2VydmVyOjpkaWRHZXRDb3VudChjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHRE
YXRhKQoreworICAgIExPRyhJbmRleGVkREIsICJJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRpZEdl
dENvdW50Iik7CisgICAgY29tcGxldGVPcGVyYXRpb24ocmVzdWx0RGF0YSk7Cit9CisKIHZvaWQg
SURCQ29ubmVjdGlvblRvU2VydmVyOjplc3RhYmxpc2hUcmFuc2FjdGlvbihJREJUcmFuc2FjdGlv
biYgdHJhbnNhY3Rpb24pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQkNvbm5lY3Rpb25Ub1Nl
cnZlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIu
aAppbmRleCBiNDEyNDMyLi4zNGE3MWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5o
CkBAIC03Niw2ICs3Niw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFJlY29yZChUcmFuc2FjdGlv
bk9wZXJhdGlvbiYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOwogICAgIHZvaWQgZGlkR2V0UmVj
b3JkKGNvbnN0IElEQlJlc3VsdERhdGEmKTsKIAorICAgIHZvaWQgZ2V0Q291bnQoVHJhbnNhY3Rp
b25PcGVyYXRpb24mLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKTsKKyAgICB2b2lkIGRpZEdldENv
dW50KGNvbnN0IElEQlJlc3VsdERhdGEmKTsKKwogICAgIHZvaWQgY29tbWl0VHJhbnNhY3Rpb24o
SURCVHJhbnNhY3Rpb24mKTsKICAgICB2b2lkIGRpZENvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJFcnJv
ciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGll
bnQvSURCQ29ubmVjdGlvblRvU2VydmVyRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0ZS5oCmluZGV4
IDg5ZjBkMzEuLmU5YzljMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXJE
ZWxlZ2F0ZS5oCkBAIC02MSw2ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xl
YXJPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3Jl
SWRlbnRpZmllcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwdXRPckFkZChjb25zdCBJREJSZXF1
ZXN0RGF0YSYsIElEQktleSosIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYsIGNvbnN0IEluZGV4ZWRE
Qjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFJl
Y29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZ2V0Q291bnQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJ
REJLZXlSYW5nZURhdGEmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGVzdGFibGlzaFRyYW5zYWN0
aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlRyYW5z
YWN0aW9uSW5mbyYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBkYXRhYmFzZUNvbm5lY3Rpb25D
bG9zZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikgPSAwOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQk9iamVjdFN0
b3JlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURC
T2JqZWN0U3RvcmVJbXBsLmNwcAppbmRleCAwMGUzYmFjLi5hMTVmY2M3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCT2JqZWN0U3RvcmVJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCT2Jq
ZWN0U3RvcmVJbXBsLmNwcApAQCAtMzI1LDE5ICszMjUsNzAgQEAgdm9pZCBJREJPYmplY3RTdG9y
ZTo6ZGVsZXRlSW5kZXgoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpCiAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+
IElEQk9iamVjdFN0b3JlOjpjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9u
Q29kZSYpCitSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmNvdW50
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewot
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgTE9HKEluZGV4ZWREQiwgIklE
Qk9iamVjdFN0b3JlOjpjb3VudCIpOworCisgICAgaWYgKCFjb250ZXh0KSB7CisgICAgICAgIGVj
ID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKwor
ICAgIElEQktleVJhbmdlRGF0YSByYW5nZTsKKyAgICByYW5nZS5pc051bGwgPSBmYWxzZTsKKyAg
ICByZXR1cm4gZG9Db3VudCgqY29udGV4dCwgcmFuZ2UsIGVjKTsKIH0KIAotUmVmUHRyPFdlYkNv
cmU6OklEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpjb3VudChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgSURCS2V5UmFuZ2UqLCBFeGNlcHRpb25Db2RlJikKK1JlZlB0cjxXZWJDb3JlOjpJREJS
ZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Y291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBMT0coSW5kZXhl
ZERCLCAiSURCT2JqZWN0U3RvcmU6OmNvdW50Iik7CisKKyAgICBpZiAoIWNvbnRleHQpIHsKKyAg
ICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgfQorCisgICAgRE9NUmVxdWVzdFN0YXRlIHJlcXVlc3RTdGF0ZShjb250ZXh0KTsKKyAgICBS
ZWZQdHI8SURCS2V5PiBpZGJLZXkgPSBzY3JpcHRWYWx1ZVRvSURCS2V5KCZyZXF1ZXN0U3RhdGUs
IGtleSk7CisgICAgaWYgKCFpZGJLZXkgfHwgaWRiS2V5LT50eXBlKCkgPT0gS2V5VHlwZTo6SW52
YWxpZCkgeworICAgICAgICBlYyA9IHN0YXRpY19jYXN0PEV4Y2VwdGlvbkNvZGU+KElEQkV4Y2Vw
dGlvbkNvZGU6OkRhdGFFcnJvcik7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKwor
ICAgIHJldHVybiBkb0NvdW50KCpjb250ZXh0LCBJREJLZXlSYW5nZURhdGEoaWRiS2V5LmdldCgp
KSwgZWMpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6
OmNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSYsIEV4Y2VwdGlvbkNvZGUmKQorUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQk9i
amVjdFN0b3JlOjpjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBJREJLZXlS
YW5nZSogcmFuZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgTE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpjb3VudCIp
OworCisgICAgaWYgKCFjb250ZXh0KSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHJldHVybiBkb0NvdW50KCpj
b250ZXh0LCBJREJLZXlSYW5nZURhdGEocmFuZ2UpLCBlYyk7Cit9CisKK1JlZlB0cjxXZWJDb3Jl
OjpJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6ZG9Db3VudChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlLCBFeGNlcHRpb25Db2Rl
JiBlYykKK3sKKyAgICBpZiAoIW1fdHJhbnNhY3Rpb24tPmlzQWN0aXZlKCkpIHsKKyAgICAgICAg
ZWMgPSBzdGF0aWNfY2FzdDxFeGNlcHRpb25Db2RlPihJREJFeGNlcHRpb25Db2RlOjpUcmFuc2Fj
dGlvbkluYWN0aXZlRXJyb3IpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAg
ICBpZiAobV9kZWxldGVkKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGlmIChyYW5nZS5pc051bGwpIHsKKyAg
ICAgICAgZWMgPSBzdGF0aWNfY2FzdDxFeGNlcHRpb25Db2RlPihJREJFeGNlcHRpb25Db2RlOjpE
YXRhRXJyb3IpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBSZWY8SURC
UmVxdWVzdD4gcmVxdWVzdCA9IG1fdHJhbnNhY3Rpb24tPnJlcXVlc3RDb3VudChjb250ZXh0LCAq
dGhpcywgcmFuZ2UpOworICAgIHJldHVybiBXVEY6Om1vdmUocmVxdWVzdCk7CiB9CiAKIHZvaWQg
SURCT2JqZWN0U3RvcmU6Om1hcmtBc0RlbGV0ZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQk9iamVjdFN0b3JlSW1wbC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQk9iamVjdFN0b3JlSW1wbC5oCmlu
ZGV4IDRiZDUwNDkuLjMzMzY2OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL2NsaWVudC9JREJPYmplY3RTdG9yZUltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCT2JqZWN0U3RvcmVJbXBsLmgKQEAgLTM2LDYg
KzM2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJLZXk7CiAKK3N0cnVjdCBJ
REJLZXlSYW5nZURhdGE7CisKIG5hbWVzcGFjZSBJREJDbGllbnQgewogCiBjbGFzcyBJREJUcmFu
c2FjdGlvbjsKQEAgLTgzLDYgKzg1LDcgQEAgcHJpdmF0ZToKICAgICBJREJPYmplY3RTdG9yZShj
b25zdCBJREJPYmplY3RTdG9yZUluZm8mLCBJREJUcmFuc2FjdGlvbiYpOwogCiAgICAgUmVmUHRy
PFdlYkNvcmU6OklEQlJlcXVlc3Q+IHB1dE9yQWRkKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1Zh
bHVlLCBSZWZQdHI8SURCS2V5PiwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUs
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gZG9Db3Vu
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgRXhjZXB0
aW9uQ29kZSYpOwogCiAgICAgSURCT2JqZWN0U3RvcmVJbmZvIG1faW5mbzsKICAgICBSZWY8SURC
VHJhbnNhY3Rpb24+IG1fdHJhbnNhY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCUmVxdWVzdEltcGwuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlJlcXVlc3RJbXBsLmNwcAppbmRleCBhZGRm
M2ZhLi5kYmQyZDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9jbGllbnQvSURCUmVxdWVzdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL2NsaWVudC9JREJSZXF1ZXN0SW1wbC5jcHAKQEAgLTE4NCw2ICsxODQsMTIgQEAg
dm9pZCBJREJSZXF1ZXN0OjpzZXRSZXN1bHQoY29uc3QgSURCS2V5RGF0YSoga2V5RGF0YSkKICAg
ICBtX3Jlc3VsdCA9IElEQkFueTo6Y3JlYXRlKFdURjo6bW92ZSh2YWx1ZSkpOwogfQogCit2b2lk
IElEQlJlcXVlc3Q6OnNldFJlc3VsdCh1aW50NjRfdCBudW1iZXIpCit7CisgICAgQVNTRVJUKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgbV9yZXN1bHQgPSBJREJBbnk6OmNyZWF0ZShE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnZtKCksIEpT
Qzo6SlNWYWx1ZShudW1iZXIpKSk7Cit9CisKIHZvaWQgSURCUmVxdWVzdDo6c2V0UmVzdWx0VG9T
dHJ1Y3R1cmVkQ2xvbmUoY29uc3QgVGhyZWFkU2FmZURhdGFCdWZmZXImIHZhbHVlRGF0YSkKIHsK
ICAgICBMT0coSW5kZXhlZERCLCAiSURCUmVxdWVzdDo6c2V0UmVzdWx0VG9TdHJ1Y3R1cmVkQ2xv
bmUiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVu
dC9JREJSZXF1ZXN0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xp
ZW50L0lEQlJlcXVlc3RJbXBsLmgKaW5kZXggMGE3ZjgxYS4uMTQ1NjFlZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlJlcXVlc3RJbXBsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlJlcXVlc3RJ
bXBsLmgKQEAgLTc4LDYgKzc4LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVxdWVzdENvbXBsZXRl
ZChjb25zdCBJREJSZXN1bHREYXRhJik7CiAKICAgICB2b2lkIHNldFJlc3VsdChjb25zdCBJREJL
ZXlEYXRhKik7CisgICAgdm9pZCBzZXRSZXN1bHQodWludDY0X3QpOwogICAgIHZvaWQgc2V0UmVz
dWx0VG9TdHJ1Y3R1cmVkQ2xvbmUoY29uc3QgVGhyZWFkU2FmZURhdGFCdWZmZXImKTsKICAgICB2
b2lkIHNldFJlc3VsdFRvVW5kZWZpbmVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJUcmFuc2FjdGlvbkltcGwuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlRyYW5zYWN0aW9uSW1wbC5jcHAK
aW5kZXggNWIxYTkzYS4uNmEyYWJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvY2xpZW50L0lEQlRyYW5zYWN0aW9uSW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlRyYW5zYWN0aW9uSW1wbC5jcHAKQEAg
LTQzMSw2ICs0MzEsMzYgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkR2V0UmVjb3JkT25TZXJ2
ZXIoSURCUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSURCUmVzdWx0RGEKICAgICByZXF1ZXN0LnJl
cXVlc3RDb21wbGV0ZWQocmVzdWx0RGF0YSk7CiB9CiAKK1JlZjxJREJSZXF1ZXN0PiBJREJUcmFu
c2FjdGlvbjo6cmVxdWVzdENvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIElE
Qk9iamVjdFN0b3JlJiBvYmplY3RTdG9yZSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSkK
K3sKKyAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OnJlcXVlc3RDb3VudCIpOwor
ICAgIEFTU0VSVChpc0FjdGl2ZSgpKTsKKyAgICBBU1NFUlQoIXJhbmdlLmlzTnVsbCk7CisKKyAg
ICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdCA9IElEQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBv
YmplY3RTdG9yZSwgKnRoaXMpOworICAgIGFkZFJlcXVlc3QocmVxdWVzdC5nZXQoKSk7CisKKyAg
ICBhdXRvIG9wZXJhdGlvbiA9IGNyZWF0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKCp0aGlzLCByZXF1
ZXN0LmdldCgpLCAmSURCVHJhbnNhY3Rpb246OmRpZEdldENvdW50T25TZXJ2ZXIsICZJREJUcmFu
c2FjdGlvbjo6Z2V0Q291bnRPblNlcnZlciwgcmFuZ2UpOworICAgIHNjaGVkdWxlT3BlcmF0aW9u
KFdURjo6bW92ZShvcGVyYXRpb24pKTsKKworICAgIHJldHVybiBXVEY6Om1vdmUocmVxdWVzdCk7
Cit9CisKK3ZvaWQgSURCVHJhbnNhY3Rpb246OmdldENvdW50T25TZXJ2ZXIoVHJhbnNhY3Rpb25P
cGVyYXRpb24mIG9wZXJhdGlvbiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZSkKK3sK
KyAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmdldENvdW50T25TZXJ2ZXIiKTsK
KworICAgIHNlcnZlckNvbm5lY3Rpb24oKS5nZXRDb3VudChvcGVyYXRpb24sIGtleVJhbmdlKTsK
K30KKwordm9pZCBJREJUcmFuc2FjdGlvbjo6ZGlkR2V0Q291bnRPblNlcnZlcihJREJSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIExPRyhJ
bmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6ZGlkR2V0Q291bnRPblNlcnZlciIpOworCisgICAg
cmVxdWVzdC5zZXRSZXN1bHQocmVzdWx0RGF0YS5yZXN1bHRJbnRlZ2VyKCkpOworICAgIHJlcXVl
c3QucmVxdWVzdENvbXBsZXRlZChyZXN1bHREYXRhKTsKK30KKwogUmVmPElEQlJlcXVlc3Q+IElE
QlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q2xlYXJPYmplY3RTdG9yZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBJREJPYmplY3RTdG9yZSYgb2JqZWN0U3RvcmUpCiB7CiAgICAgTE9HKElu
ZGV4ZWREQiwgIklEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q2xlYXJPYmplY3RTdG9yZSIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlRyYW5z
YWN0aW9uSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lE
QlRyYW5zYWN0aW9uSW1wbC5oCmluZGV4IGExOTA2NjUuLjE2MzE0ZTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJUcmFuc2FjdGlvbkltcGwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCVHJhbnNh
Y3Rpb25JbXBsLmgKQEAgLTkyLDYgKzkyLDcgQEAgcHVibGljOgogICAgIFJlZjxJREJSZXF1ZXN0
PiByZXF1ZXN0UHV0T3JBZGQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIElEQk9iamVjdFN0b3Jl
JiwgSURCS2V5KiwgU2VyaWFsaXplZFNjcmlwdFZhbHVlJiwgSW5kZXhlZERCOjpPYmplY3RTdG9y
ZU92ZXJ3cml0ZU1vZGUpOwogICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0R2V0UmVjb3JkKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBJREJPYmplY3RTdG9yZSYsIGNvbnN0IElEQktleVJhbmdl
RGF0YSYpOwogICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0Q2xlYXJPYmplY3RTdG9yZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiwgSURCT2JqZWN0U3RvcmUmKTsKKyAgICBSZWY8SURCUmVxdWVz
dD4gcmVxdWVzdENvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBJREJPYmplY3RTdG9yZSYs
IGNvbnN0IElEQktleVJhbmdlRGF0YSYpOwogCiAgICAgdm9pZCBkZWxldGVPYmplY3RTdG9yZShj
b25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSk7CiAKQEAgLTEzNiw2ICsxMzcsOSBAQCBwcml2
YXRlOgogICAgIHZvaWQgZ2V0UmVjb3JkT25TZXJ2ZXIoVHJhbnNhY3Rpb25PcGVyYXRpb24mLCBj
b25zdCBJREJLZXlSYW5nZURhdGEmKTsKICAgICB2b2lkIGRpZEdldFJlY29yZE9uU2VydmVyKElE
QlJlcXVlc3QmLCBjb25zdCBJREJSZXN1bHREYXRhJik7CiAKKyAgICB2b2lkIGdldENvdW50T25T
ZXJ2ZXIoVHJhbnNhY3Rpb25PcGVyYXRpb24mLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKTsKKyAg
ICB2b2lkIGRpZEdldENvdW50T25TZXJ2ZXIoSURCUmVxdWVzdCYsIGNvbnN0IElEQlJlc3VsdERh
dGEmKTsKKwogICAgIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmVPblNlcnZlcihUcmFuc2FjdGlvbk9w
ZXJhdGlvbiYsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lKTsKICAgICB2b2lkIGRpZERl
bGV0ZU9iamVjdFN0b3JlT25TZXJ2ZXIoY29uc3QgSURCUmVzdWx0RGF0YSYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0
b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFja2lu
Z1N0b3JlLmgKaW5kZXggOGYzOWM3Mi4uMTM1ZjYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJCYWNraW5nU3RvcmUuaApAQCAt
NjAsNiArNjAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBJREJFcnJvciBkZWxldGVSZWNvcmQo
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2
NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgSURCS2V5RGF0YSYpID0gMDsKICAgICB2
aXJ0dWFsIElEQkVycm9yIHB1dFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRy
YW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25z
dCBJREJLZXlEYXRhJiwgY29uc3QgVGhyZWFkU2FmZURhdGFCdWZmZXImIHZhbHVlKSA9IDA7CiAg
ICAgdmlydHVhbCBJREJFcnJvciBnZXRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwg
Y29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgVGhyZWFkU2FmZURhdGFCdWZmZXImIG91dFZhbHVlKSA9
IDA7CisgICAgdmlydHVhbCBJREJFcnJvciBnZXRDb3VudChjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlm
aWVyLCBjb25zdCBJREJLZXlSYW5nZURhdGEmLCB1aW50NjRfdCYgb3V0Q291bnQpID0gMDsKICAg
ICB2aXJ0dWFsIElEQkVycm9yIGdlbmVyYXRlS2V5TnVtYmVyKGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIHVpbnQ2NF90JiBrZXlOdW1iZXIpID0gMDsKIAogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rp
b25Ub0NsaWVudC5jcHAKaW5kZXggYjEwYzQ1Ni4uMjhkMThjMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5l
Y3Rpb25Ub0NsaWVudC5jcHAKQEAgLTg4LDYgKzg4LDExIEBAIHZvaWQgSURCQ29ubmVjdGlvblRv
Q2xpZW50OjpkaWRHZXRSZWNvcmQoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0KQogICAgIG1f
ZGVsZWdhdGUtPmRpZEdldFJlY29yZChyZXN1bHQpOwogfQogCit2b2lkIElEQkNvbm5lY3Rpb25U
b0NsaWVudDo6ZGlkR2V0Q291bnQoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0KQoreworICAg
IG1fZGVsZWdhdGUtPmRpZEdldENvdW50KHJlc3VsdCk7Cit9CisKIHZvaWQgSURCQ29ubmVjdGlv
blRvQ2xpZW50OjpkaWRDb21taXRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZp
ZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImIGVycm9yKQogewogICAg
IG1fZGVsZWdhdGUtPmRpZENvbW1pdFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllciwg
ZXJyb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5oCmluZGV4IDI0NGQ5OGUuLjc2NjJi
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJDb25uZWN0aW9uVG9DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50LmgKQEAgLTU3LDYgKzU3LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgZGlkQ2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRhJik7
CiAgICAgdm9pZCBkaWRQdXRPckFkZChjb25zdCBJREJSZXN1bHREYXRhJik7CiAgICAgdm9pZCBk
aWRHZXRSZWNvcmQoY29uc3QgSURCUmVzdWx0RGF0YSYpOworICAgIHZvaWQgZGlkR2V0Q291bnQo
Y29uc3QgSURCUmVzdWx0RGF0YSYpOwogCiAgICAgdm9pZCBmaXJlVmVyc2lvbkNoYW5nZUV2ZW50
KFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYsIHVpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24p
OwogICAgIHZvaWQgZGlkU3RhcnRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZp
ZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9D
bGllbnREZWxlZ2F0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQkNvbm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlLmgKaW5kZXggMzFkMGE1MC4uYWQwNDFiNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNv
bm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlLmgKQEAgLTUzLDYg
KzUzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDbGVhck9iamVjdFN0b3JlKGNv
bnN0IElEQlJlc3VsdERhdGEmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFB1dE9yQWRkKGNv
bnN0IElEQlJlc3VsdERhdGEmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEdldFJlY29yZChj
b25zdCBJREJSZXN1bHREYXRhJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRHZXRDb3VudChj
b25zdCBJREJSZXN1bHREYXRhJikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGZpcmVWZXJzaW9u
Q2hhbmdlRXZlbnQoVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiwgdWludDY0X3QgcmVxdWVz
dGVkVmVyc2lvbikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFRyYW5zYWN0aW9uKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJ
REJFcnJvciYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKaW5kZXggNTg4MjM2NS4uNGIwYTc3OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5j
cHAKQEAgLTIxMyw2ICsyMTMsMTcgQEAgdm9pZCBJREJTZXJ2ZXI6OmdldFJlY29yZChjb25zdCBJ
REJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleVJhbmdlRGEKICAgICB0cmFu
c2FjdGlvbi0+Z2V0UmVjb3JkKHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGEpOwogfQogCit2b2lk
IElEQlNlcnZlcjo6Z2V0Q291bnQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBj
b25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSkKK3sKKyAgICBMT0coSW5kZXhlZERC
LCAiSURCU2VydmVyOjpnZXRDb3VudCIpOworCisgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fdHJh
bnNhY3Rpb25zLmdldChyZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSk7CisgICAg
aWYgKCF0cmFuc2FjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgdHJhbnNhY3Rpb24tPmdl
dENvdW50KHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGEpOworfQorCiB2b2lkIElEQlNlcnZlcjo6
ZXN0YWJsaXNoVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmll
ciwgY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBpbmZvKQogewogICAgIExPRyhJbmRleGVkREIs
ICJJREJTZXJ2ZXI6OmVzdGFibGlzaFRyYW5zYWN0aW9uIik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKaW5kZXggNjFiNjkyYy4u
ZjY5Y2I5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9JREJTZXJ2ZXIuaApAQCAtNjQsNiArNjQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVh
ck9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJ
ZGVudGlmaWVyKTsKICAgICB2b2lkIHB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29u
c3QgSURCS2V5RGF0YSYsIGNvbnN0IFRocmVhZFNhZmVEYXRhQnVmZmVyJiB2YWx1ZURhdGEsIElu
ZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlKTsKICAgICB2b2lkIGdldFJlY29yZChj
b25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOworICAgIHZvaWQg
Z2V0Q291bnQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKTsK
ICAgICB2b2lkIGVzdGFibGlzaFRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlv
bklkZW50aWZpZXIsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYpOwogICAgIHZvaWQgZGF0YWJh
c2VDb25uZWN0aW9uQ2xvc2VkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
TWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDIwNjA2YzkuLjcyMmM3
MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9N
ZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCkBAIC0yNTksNiArMjU5LDIz
IEBAIElEQkVycm9yIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgcmV0dXJuIElEQkVycm9yKCk7CiB9CiAK
K0lEQkVycm9yIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQoY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSwgdWludDY0X3QmIG91dENv
dW50KQoreworICAgIExPRyhJbmRleGVkREIsICJNZW1vcnlJREJCYWNraW5nU3RvcmU6OmdldENv
dW50Iik7CisKKyAgICBBU1NFUlQob2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKKworICAgIGlmICgh
bV90cmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAg
cmV0dXJuIElEQkVycm9yKElEQkV4Y2VwdGlvbkNvZGU6OlVua25vd24sIFdURjo6QVNDSUlMaXRl
cmFsKCJObyBiYWNraW5nIHN0b3JlIHRyYW5zYWN0aW9uIGZvdW5kIHRvIGdldCBjb3VudCIpKTsK
KworICAgIE1lbW9yeU9iamVjdFN0b3JlKiBvYmplY3RTdG9yZSA9IG1fb2JqZWN0U3RvcmVzQnlJ
ZGVudGlmaWVyLmdldChvYmplY3RTdG9yZUlkZW50aWZpZXIpOworICAgIGlmICghb2JqZWN0U3Rv
cmUpCisgICAgICAgIHJldHVybiBJREJFcnJvcihJREJFeGNlcHRpb25Db2RlOjpVbmtub3duLCBX
VEY6OkFTQ0lJTGl0ZXJhbCgiTm8gYmFja2luZyBzdG9yZSBvYmplY3Qgc3RvcmUgZm91bmQiKSk7
CisKKyAgICBvdXRDb3VudCA9IG9iamVjdFN0b3JlLT5jb3VudEZvcktleVJhbmdlKHJhbmdlKTsK
KyAgICByZXR1cm4gSURCRXJyb3IoKTsKK30KKwogSURCRXJyb3IgTWVtb3J5SURCQmFja2luZ1N0
b3JlOjpnZW5lcmF0ZUtleU51bWJlcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5z
YWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRf
dCYga2V5TnVtYmVyKQogewogICAgIExPRyhJbmRleGVkREIsICJNZW1vcnlJREJCYWNraW5nU3Rv
cmU6OmdlbmVyYXRlS2V5TnVtYmVyIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmgKaW5k
ZXggMjQ1MWFkOS4uYTI5ZmM5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaApAQCAt
NTksNiArNTksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBJREJFcnJvciBkZWxldGVSZWNvcmQo
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2
NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgSURCS2V5RGF0YSYpIG92ZXJyaWRlIGZp
bmFsOwogICAgIHZpcnR1YWwgSURCRXJyb3IgcHV0UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYgdmFs
dWUpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgSURCRXJyb3IgZ2V0UmVjb3JkKGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBv
YmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIFRocmVhZFNhZmVE
YXRhQnVmZmVyJiBvdXRWYWx1ZSkgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCBJREJFcnJv
ciBnZXRDb3VudChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRp
ZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBJREJLZXlSYW5nZURh
dGEmLCB1aW50NjRfdCYgb3V0Q291bnQpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgSURC
RXJyb3IgZ2VuZXJhdGVLZXlOdW1iZXIoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFu
c2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0
X3QmIGtleU51bWJlcikgb3ZlcnJpZGUgZmluYWw7CiAKICAgICB2b2lkIHJlbW92ZU9iamVjdFN0
b3JlRm9yVmVyc2lvbkNoYW5nZUFib3J0KE1lbW9yeU9iamVjdFN0b3JlJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3Rv
cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9i
amVjdFN0b3JlLmNwcAppbmRleCBlMzBhMDU3Li5kYjBmNGIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RT
dG9yZS5jcHAKQEAgLTEzMSwzNyArMTMxLDY4IEBAIHZvaWQgTWVtb3J5T2JqZWN0U3RvcmU6OnNl
dEtleVZhbHVlKGNvbnN0IElEQktleURhdGEmIGtleURhdGEsIGNvbnN0IFRocmVhZFNhZmVECiAg
ICAgICAgIG1fb3JkZXJlZEtleXMtPmluc2VydChrZXlEYXRhKTsKIH0KIAordWludDY0X3QgTWVt
b3J5T2JqZWN0U3RvcmU6OmNvdW50Rm9yS2V5UmFuZ2UoY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBp
blJhbmdlKSBjb25zdAoreworICAgIExPRyhJbmRleGVkREIsICJNZW1vcnlPYmplY3RTdG9yZTo6
Y291bnRGb3JLZXlSYW5nZSIpOworCisgICAgaWYgKCFtX2tleVZhbHVlU3RvcmUpCisgICAgICAg
IHJldHVybiAwOworCisgICAgdWludDY0X3QgY291bnQgPSAwOworICAgIElEQktleVJhbmdlRGF0
YSByYW5nZSA9IGluUmFuZ2U7CisgICAgYXV0byBrZXkgPSBsb3dlc3RLZXlXaXRoUmVjb3JkSW5S
YW5nZShyYW5nZSk7CisgICAgd2hpbGUgKCFrZXkuaXNOdWxsKCkpIHsKKyAgICAgICAgKytjb3Vu
dDsKKyAgICAgICAgcmFuZ2UubG93ZXJLZXkgPSBrZXk7CisgICAgICAgIHJhbmdlLmxvd2VyT3Bl
biA9IHRydWU7CisgICAgICAgIGtleSA9IGxvd2VzdEtleVdpdGhSZWNvcmRJblJhbmdlKHJhbmdl
KTsKKyAgICB9CisKKyAgICBXVEZMb2dBbHdheXMoIlJldHVybmluZyBjb3VudCAlbGx1IiwgY291
bnQpOworICAgIHJldHVybiBjb3VudDsKK30KKwogVGhyZWFkU2FmZURhdGFCdWZmZXIgTWVtb3J5
T2JqZWN0U3RvcmU6OnZhbHVlRm9yS2V5UmFuZ2UoY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlS
YW5nZURhdGEpIGNvbnN0CiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIk1lbW9yeU9iamVjdFN0b3Jl
Ojp2YWx1ZUZvcktleSIpOwogCi0gICAgaWYgKCFtX2tleVZhbHVlU3RvcmUpCisgICAgSURCS2V5
RGF0YSBrZXkgPSBsb3dlc3RLZXlXaXRoUmVjb3JkSW5SYW5nZShrZXlSYW5nZURhdGEpOworICAg
IGlmIChrZXkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBUaHJlYWRTYWZlRGF0YUJ1ZmZlcigp
OwogCi0gICAgaWYgKGtleVJhbmdlRGF0YS5pc0V4YWN0bHlPbmVLZXkoKSkKLSAgICAgICAgcmV0
dXJuIG1fa2V5VmFsdWVTdG9yZS0+Z2V0KGtleVJhbmdlRGF0YS5sb3dlcktleSk7CisgICAgQVNT
RVJUKG1fa2V5VmFsdWVTdG9yZSk7CisgICAgcmV0dXJuIG1fa2V5VmFsdWVTdG9yZS0+Z2V0KGtl
eSk7Cit9CisKK0lEQktleURhdGEgTWVtb3J5T2JqZWN0U3RvcmU6Omxvd2VzdEtleVdpdGhSZWNv
cmRJblJhbmdlKGNvbnN0IElEQktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhKSBjb25zdAorewor
ICAgIGlmICghbV9rZXlWYWx1ZVN0b3JlKQorICAgICAgICByZXR1cm4gSURCS2V5RGF0YSgpOwor
CisgICAgaWYgKGtleVJhbmdlRGF0YS5pc0V4YWN0bHlPbmVLZXkoKSAmJiBtX2tleVZhbHVlU3Rv
cmUtPmNvbnRhaW5zKGtleVJhbmdlRGF0YS5sb3dlcktleSkpCisgICAgICAgIHJldHVybiBrZXlS
YW5nZURhdGEubG93ZXJLZXk7CiAKICAgICBBU1NFUlQobV9vcmRlcmVkS2V5cyk7CiAKICAgICBh
dXRvIGxvd2VzdEluUmFuZ2UgPSBtX29yZGVyZWRLZXlzLT5sb3dlcl9ib3VuZChrZXlSYW5nZURh
dGEubG93ZXJLZXkpOwogCiAgICAgaWYgKGxvd2VzdEluUmFuZ2UgPT0gbV9vcmRlcmVkS2V5cy0+
ZW5kKCkpCi0gICAgICAgIHJldHVybiBUaHJlYWRTYWZlRGF0YUJ1ZmZlcigpOworICAgICAgICBy
ZXR1cm4gSURCS2V5RGF0YSgpOwogCiAgICAgaWYgKGtleVJhbmdlRGF0YS5sb3dlck9wZW4gJiYg
Kmxvd2VzdEluUmFuZ2UgPT0ga2V5UmFuZ2VEYXRhLmxvd2VyS2V5KQogICAgICAgICArK2xvd2Vz
dEluUmFuZ2U7CiAKICAgICBpZiAobG93ZXN0SW5SYW5nZSA9PSBtX29yZGVyZWRLZXlzLT5lbmQo
KSkKLSAgICAgICAgcmV0dXJuIFRocmVhZFNhZmVEYXRhQnVmZmVyKCk7CisgICAgICAgIHJldHVy
biBJREJLZXlEYXRhKCk7CiAKICAgICBpZiAoIWtleVJhbmdlRGF0YS51cHBlcktleS5pc051bGwo
KSkgewogICAgICAgICBpZiAobG93ZXN0SW5SYW5nZS0+Y29tcGFyZShrZXlSYW5nZURhdGEudXBw
ZXJLZXkpID4gMCkKLSAgICAgICAgICAgIHJldHVybiBUaHJlYWRTYWZlRGF0YUJ1ZmZlcigpOwor
ICAgICAgICAgICAgcmV0dXJuIElEQktleURhdGEoKTsKICAgICAgICAgaWYgKGtleVJhbmdlRGF0
YS51cHBlck9wZW4gJiYgKmxvd2VzdEluUmFuZ2UgPT0ga2V5UmFuZ2VEYXRhLnVwcGVyS2V5KQot
ICAgICAgICAgICAgcmV0dXJuIFRocmVhZFNhZmVEYXRhQnVmZmVyKCk7CisgICAgICAgICAgICBy
ZXR1cm4gSURCS2V5RGF0YSgpOwogICAgIH0KIAotICAgIHJldHVybiBtX2tleVZhbHVlU3RvcmUt
PmdldCgqbG93ZXN0SW5SYW5nZSk7CisgICAgcmV0dXJuICpsb3dlc3RJblJhbmdlOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBJREJTZXJ2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmgKaW5kZXggNTY2NDZh
NS4uZjc0NTNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmgKQEAgLTY5LDEyICs2OSwxNSBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZXBsYWNlS2V5VmFsdWVTdG9yZShzdGQ6OnVuaXF1ZV9wdHI8S2V5
VmFsdWVNYXA+JiYpOwogCiAgICAgVGhyZWFkU2FmZURhdGFCdWZmZXIgdmFsdWVGb3JLZXlSYW5n
ZShjb25zdCBJREJLZXlSYW5nZURhdGEmKSBjb25zdDsKKyAgICB1aW50NjRfdCBjb3VudEZvcktl
eVJhbmdlKGNvbnN0IElEQktleVJhbmdlRGF0YSYpIGNvbnN0OwogCiAgICAgY29uc3QgSURCT2Jq
ZWN0U3RvcmVJbmZvJiBpbmZvKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvOyB9CiAKIHByaXZhdGU6
CiAgICAgTWVtb3J5T2JqZWN0U3RvcmUoY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJik7CiAKKyAg
ICBJREJLZXlEYXRhIGxvd2VzdEtleVdpdGhSZWNvcmRJblJhbmdlKGNvbnN0IElEQktleVJhbmdl
RGF0YSYpIGNvbnN0OworCiAgICAgSURCT2JqZWN0U3RvcmVJbmZvIG1faW5mbzsKIAogICAgIE1l
bW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKiBtX3dyaXRlVHJhbnNhY3Rpb24geyBudWxscHRy
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
VW5pcXVlSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAppbmRleCAwY2I1OTE4Li4xMjk3NWFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURC
RGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKQEAgLTE1NCw2ICsxNTQsMTMgQEAgdWludDY0X3QgVW5p
cXVlSURCRGF0YWJhc2U6OnN0b3JlQ2FsbGJhY2soVmFsdWVEYXRhQ2FsbGJhY2sgY2FsbGJhY2sp
CiAgICAgcmV0dXJuIGlkZW50aWZpZXI7CiB9CiAKK3VpbnQ2NF90IFVuaXF1ZUlEQkRhdGFiYXNl
OjpzdG9yZUNhbGxiYWNrKENvdW50Q2FsbGJhY2sgY2FsbGJhY2spCit7CisgICAgdWludDY0X3Qg
aWRlbnRpZmllciA9IGdlbmVyYXRlVW5pcXVlQ2FsbGJhY2tJZGVudGlmaWVyKCk7CisgICAgbV9j
b3VudENhbGxiYWNrcy5zZXQoaWRlbnRpZmllciwgY2FsbGJhY2spOworICAgIHJldHVybiBpZGVu
dGlmaWVyOworfQorCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpzdGFydFZlcnNpb25DaGFuZ2VU
cmFuc2FjdGlvbigpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIihtYWluKSBVbmlxdWVJREJEYXRh
YmFzZTo6c3RhcnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24iKTsKQEAgLTQzMSw2ICs0MzgsMzcg
QEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybUdldFJlY29yZCh1aW50NjRfdCBj
YWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IEkKICAgICBwZXJmb3JtVmFsdWVEYXRhQ2FsbGJhY2so
Y2FsbGJhY2tJZGVudGlmaWVyLCBlcnJvciwgcmVzdWx0RGF0YSk7CiB9CiAKK3ZvaWQgVW5pcXVl
SURCRGF0YWJhc2U6OmdldENvdW50KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwg
Y29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSwgQ291bnRDYWxsYmFjayBjYWxsYmFjaykKK3sK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIExPRyhJbmRleGVkREIsICIobWFpbikg
VW5pcXVlSURCRGF0YWJhc2U6OmdldENvdW50Iik7CisKKyAgICB1aW50NjRfdCBjYWxsYmFja0lE
ID0gc3RvcmVDYWxsYmFjayhjYWxsYmFjayk7CisgICAgbV9zZXJ2ZXIucG9zdERhdGFiYXNlVGFz
ayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9y
bUdldENvdW50LCBjYWxsYmFja0lELCByZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIo
KSwgcmVxdWVzdERhdGEub2JqZWN0U3RvcmVJZGVudGlmaWVyKCksIHJhbmdlKSk7Cit9CisKK3Zv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1HZXRDb3VudCh1aW50NjRfdCBjYWxsYmFja0lk
ZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlm
aWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IElEQktleVJhbmdlRGF0
YSYga2V5UmFuZ2VEYXRhKQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIExP
RyhJbmRleGVkREIsICIoZGIpIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtR2V0Q291bnQiKTsK
KworICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CisgICAgQVNTRVJUKG9iamVjdFN0b3JlSWRl
bnRpZmllcik7CisKKyAgICB1aW50NjRfdCBjb3VudDsKKyAgICBJREJFcnJvciBlcnJvciA9IG1f
YmFja2luZ1N0b3JlLT5nZXRDb3VudCh0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3Jl
SWRlbnRpZmllciwga2V5UmFuZ2VEYXRhLCBjb3VudCk7CisKKyAgICBtX3NlcnZlci5wb3N0RGF0
YWJhc2VUYXNrUmVwbHkoY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0
YWJhc2U6OmRpZFBlcmZvcm1HZXRDb3VudCwgY2FsbGJhY2tJZGVudGlmaWVyLCBlcnJvciwgY291
bnQpKTsKK30KKwordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybUdldENvdW50KHVp
bnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImIGVycm9yLCB1aW50NjRf
dCBjb3VudCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIExPRyhJbmRleGVk
REIsICIobWFpbikgVW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1HZXRDb3VudCIpOworCisg
ICAgcGVyZm9ybUNvdW50Q2FsbGJhY2soY2FsbGJhY2tJZGVudGlmaWVyLCBlcnJvciwgY291bnQp
OworfQorCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjb21taXRUcmFuc2FjdGlvbihVbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgRXJyb3JDYWxsYmFjayBjYWxsYmFj
aykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAtNzAxLDYgKzczOSwxMyBAQCB2
b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtVmFsdWVEYXRhQ2FsbGJhY2sodWludDY0X3Qg
Y2FsbGJhY2tJZGVudGlmaWVyLCBjbwogICAgIGNhbGxiYWNrKGVycm9yLCByZXN1bHREYXRhKTsK
IH0KIAordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUNvdW50Q2FsbGJhY2sodWludDY0
X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJFcnJvciYgZXJyb3IsIHVpbnQ2NF90IGNv
dW50KQoreworICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NvdW50Q2FsbGJhY2tzLnRha2UoY2FsbGJh
Y2tJZGVudGlmaWVyKTsKKyAgICBBU1NFUlQoY2FsbGJhY2spOworICAgIGNhbGxiYWNrKGVycm9y
LCBjb3VudCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIElEQlNlcnZlcgogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCmluZGV4IGI1Y2ZkYzkuLjFjODgxMjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJ
REJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9VbmlxdWVJREJEYXRhYmFzZS5oCkBAIC01Niw2ICs1Niw3IEBAIGNsYXNzIElEQlNlcnZlcjsK
IHR5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IElEQkVycm9yJik+IEVycm9yQ2FsbGJh
Y2s7CiB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBJREJFcnJvciYsIGNvbnN0IElE
QktleURhdGEmKT4gS2V5RGF0YUNhbGxiYWNrOwogdHlwZWRlZiBzdGQ6OmZ1bmN0aW9uPHZvaWQo
Y29uc3QgSURCRXJyb3ImLCBjb25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYpPiBWYWx1ZURhdGFD
YWxsYmFjazsKK3R5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IElEQkVycm9yJiwgdWlu
dDY0X3QpPiBDb3VudENhbGxiYWNrOwogCiBjbGFzcyBVbmlxdWVJREJEYXRhYmFzZSA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxVbmlxdWVJREJEYXRhYmFzZT4gewogcHVibGljOgpAQCAt
NzQsNiArNzUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhck9iamVjdFN0b3JlKFVuaXF1ZUlE
QkRhdGFiYXNlVHJhbnNhY3Rpb24mLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIEVy
cm9yQ2FsbGJhY2spOwogICAgIHZvaWQgcHV0T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBj
b25zdCBJREJLZXlEYXRhJiwgY29uc3QgVGhyZWFkU2FmZURhdGFCdWZmZXImIHZhbHVlRGF0YSwg
SW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUsIEtleURhdGFDYWxsYmFjayk7CiAg
ICAgdm9pZCBnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5n
ZURhdGEmLCBWYWx1ZURhdGFDYWxsYmFjayk7CisgICAgdm9pZCBnZXRDb3VudChjb25zdCBJREJS
ZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIENvdW50Q2FsbGJhY2spOwogICAg
IHZvaWQgY29tbWl0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbiYsIEVy
cm9yQ2FsbGJhY2spOwogICAgIHZvaWQgYWJvcnRUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uJiwgRXJyb3JDYWxsYmFjayk7CiAgICAgdm9pZCB0cmFuc2FjdGlvbkRlc3Ry
b3llZChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJik7CkBAIC0xMDQsNiArMTA2LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHBlcmZvcm1DbGVhck9iamVjdFN0b3JlKHVpbnQ2NF90IGNhbGxi
YWNrSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklk
ZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcik7CiAgICAgdm9pZCBwZXJm
b3JtUHV0T3JBZGQodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJ
ZGVudGlmaWVyLCBjb25zdCBJREJLZXlEYXRhJiwgY29uc3QgVGhyZWFkU2FmZURhdGFCdWZmZXIm
IHZhbHVlRGF0YSwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUpOwogICAgIHZv
aWQgcGVyZm9ybUdldFJlY29yZCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOworICAgIHZvaWQgcGVy
Zm9ybUdldENvdW50KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7CiAgICAgdm9pZCBwZXJmb3JtQWN0
aXZhdGVUcmFuc2FjdGlvbkluQmFja2luZ1N0b3JlKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmll
ciwgY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJik7CiAKICAgICAvLyBNYWluIHRocmVhZCBjYWxs
YmFja3MKQEAgLTExMyw2ICsxMTYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUGVyZm9ybUNs
ZWFyT2JqZWN0U3RvcmUodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJFcnJv
ciYpOwogICAgIHZvaWQgZGlkUGVyZm9ybVB1dE9yQWRkKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRp
ZmllciwgY29uc3QgSURCRXJyb3ImLCBjb25zdCBJREJLZXlEYXRhJik7CiAgICAgdm9pZCBkaWRQ
ZXJmb3JtR2V0UmVjb3JkKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCRXJy
b3ImLCBjb25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYpOworICAgIHZvaWQgZGlkUGVyZm9ybUdl
dENvdW50KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImLCB1aW50
NjRfdCk7CiAgICAgdm9pZCBkaWRQZXJmb3JtQ29tbWl0VHJhbnNhY3Rpb24odWludDY0X3QgY2Fs
bGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJFcnJvciYsIGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZFBlcmZvcm1BYm9ydFRy
YW5zYWN0aW9uKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImLCBj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiAgICAg
dm9pZCBkaWRQZXJmb3JtQWN0aXZhdGVUcmFuc2FjdGlvbkluQmFja2luZ1N0b3JlKHVpbnQ2NF90
IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImKTsKQEAgLTEyMCwxMCArMTI0LDEy
IEBAIHByaXZhdGU6CiAgICAgdWludDY0X3Qgc3RvcmVDYWxsYmFjayhFcnJvckNhbGxiYWNrKTsK
ICAgICB1aW50NjRfdCBzdG9yZUNhbGxiYWNrKEtleURhdGFDYWxsYmFjayk7CiAgICAgdWludDY0
X3Qgc3RvcmVDYWxsYmFjayhWYWx1ZURhdGFDYWxsYmFjayk7CisgICAgdWludDY0X3Qgc3RvcmVD
YWxsYmFjayhDb3VudENhbGxiYWNrKTsKIAogICAgIHZvaWQgcGVyZm9ybUVycm9yQ2FsbGJhY2so
dWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJFcnJvciYpOwogICAgIHZvaWQg
cGVyZm9ybUtleURhdGFDYWxsYmFjayh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0
IElEQkVycm9yJiwgY29uc3QgSURCS2V5RGF0YSYpOwogICAgIHZvaWQgcGVyZm9ybVZhbHVlRGF0
YUNhbGxiYWNrKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImLCBj
b25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYpOworICAgIHZvaWQgcGVyZm9ybUNvdW50Q2FsbGJh
Y2sodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJFcnJvciYsIHVpbnQ2NF90
KTsKIAogICAgIHZvaWQgaW52b2tlVHJhbnNhY3Rpb25TY2hlZHVsZXIoKTsKICAgICB2b2lkIHRy
YW5zYWN0aW9uU2NoZWR1bGluZ1RpbWVyRmlyZWQoKTsKQEAgLTE0Nyw2ICsxNTMsNyBAQCBwcml2
YXRlOgogICAgIEhhc2hNYXA8dWludDY0X3QsIEVycm9yQ2FsbGJhY2s+IG1fZXJyb3JDYWxsYmFj
a3M7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgS2V5RGF0YUNhbGxiYWNrPiBtX2tleURhdGFDYWxs
YmFja3M7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgVmFsdWVEYXRhQ2FsbGJhY2s+IG1fdmFsdWVE
YXRhQ2FsbGJhY2tzOworICAgIEhhc2hNYXA8dWludDY0X3QsIENvdW50Q2FsbGJhY2s+IG1fY291
bnRDYWxsYmFja3M7CiAKICAgICBUaW1lciBtX3RyYW5zYWN0aW9uU2NoZWR1bGluZ1RpbWVyOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAKaW5kZXggZDYw
MTQxZi4uY2ZmZDI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uLmNwcApAQCAtMTgxLDYgKzE4MSwyMyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNh
Y3Rpb246OmdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsCiAgICAg
fSk7CiB9CiAKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6Z2V0Q291bnQoY29u
c3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtl
eVJhbmdlRGF0YSkKK3sKKyAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbjo6Z2V0Q291bnQiKTsKKworICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uSW5mby5pZGVu
dGlmaWVyKCkgPT0gcmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpOworCisgICAg
UmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+IHNlbGYodGhpcyk7CisgICAgbV9k
YXRhYmFzZUNvbm5lY3Rpb24tPmRhdGFiYXNlKCkuZ2V0Q291bnQocmVxdWVzdERhdGEsIGtleVJh
bmdlRGF0YSwgW3RoaXMsIHNlbGYsIHJlcXVlc3REYXRhXShjb25zdCBJREJFcnJvciYgZXJyb3Is
IHVpbnQ2NF90IGNvdW50KSB7CisgICAgICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uOjpnZXRDb3VudCAoY2FsbGJhY2spIik7CisKKyAgICAgICAgaWYgKGVy
cm9yLmlzTnVsbCgpKQorICAgICAgICAgICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmNvbm5lY3Rp
b25Ub0NsaWVudCgpLmRpZEdldENvdW50KElEQlJlc3VsdERhdGE6OmdldENvdW50U3VjY2Vzcyhy
ZXF1ZXN0RGF0YS5yZXF1ZXN0SWRlbnRpZmllcigpLCBjb3VudCkpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBtX2RhdGFiYXNlQ29ubmVjdGlvbi0+Y29ubmVjdGlvblRvQ2xpZW50KCkuZGlk
R2V0Q291bnQoSURCUmVzdWx0RGF0YTo6ZXJyb3IocmVxdWVzdERhdGEucmVxdWVzdElkZW50aWZp
ZXIoKSwgZXJyb3IpKTsKKyAgICB9KTsKK30KKwogY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgVW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmVJZGVudGlmaWVycygpCiB7CiAg
ICAgaWYgKCFtX29iamVjdFN0b3JlSWRlbnRpZmllcnMuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9V
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmgKaW5kZXggYzNlZDNmNy4uOTM0OGI4NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlE
QkRhdGFiYXNlVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oCkBAIC02OSw2ICs2OSw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERh
dGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpOwogICAgIHZvaWQgcHV0T3JBZGQo
Y29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlEYXRhJiwgY29uc3QgVGhyZWFkU2Fm
ZURhdGFCdWZmZXImIHZhbHVlRGF0YSwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1v
ZGUpOwogICAgIHZvaWQgZ2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURC
S2V5UmFuZ2VEYXRhJik7CisgICAgdm9pZCBnZXRDb3VudChjb25zdCBJREJSZXF1ZXN0RGF0YSYs
IGNvbnN0IElEQktleVJhbmdlRGF0YSYpOwogCiAgICAgdm9pZCBkaWRBY3RpdmF0ZUluQmFja2lu
Z1N0b3JlKGNvbnN0IElEQkVycm9yJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcAppbmRleCAyY2Y1YzNk
Li41NDIyM2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
aGFyZWQvSURCUmVzdWx0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuY3BwCkBAIC01MCw2ICs1MCw3IEBAIElEQlJlc3Vs
dERhdGE6OklEQlJlc3VsdERhdGEoY29uc3QgSURCUmVzdWx0RGF0YSYgb3RoZXIpCiAgICAgLCBt
X3JlcXVlc3RJZGVudGlmaWVyKG90aGVyLm1fcmVxdWVzdElkZW50aWZpZXIpCiAgICAgLCBtX2Vy
cm9yKG90aGVyLm1fZXJyb3IpCiAgICAgLCBtX2RhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIo
b3RoZXIubV9kYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKQorICAgICwgbV9yZXN1bHRJbnRl
Z2VyKG90aGVyLm1fcmVzdWx0SW50ZWdlcikKICAgICAsIG1fcmVzdWx0RGF0YShvdGhlci5tX3Jl
c3VsdERhdGEpCiB7CiAgICAgaWYgKG90aGVyLm1fZGF0YWJhc2VJbmZvKQpAQCAtMTE3LDYgKzEx
OCwxMyBAQCBJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6OmdldFJlY29yZFN1Y2Nlc3MoY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
K0lEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6Z2V0Q291bnRTdWNjZXNzKGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IGNvdW50KQorewor
ICAgIElEQlJlc3VsdERhdGEgcmVzdWx0KElEQlJlc3VsdFR5cGU6OkdldFJlY29yZFN1Y2Nlc3Ms
IHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICByZXN1bHQubV9yZXN1bHRJbnRlZ2VyID0gY291bnQ7
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogY29uc3QgSURCRGF0YWJhc2VJbmZvJiBJREJSZXN1
bHREYXRhOjpkYXRhYmFzZUluZm8oKSBjb25zdAogewogICAgIFJFTEVBU0VfQVNTRVJUKG1fZGF0
YWJhc2VJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JREJSZXN1bHREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zaGFyZWQvSURCUmVzdWx0RGF0YS5oCmluZGV4IDlkNjUzMTYuLjAwNDRlMGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3Vs
dERhdGEuaApAQCAtNDksNiArNDksNyBAQCBlbnVtIGNsYXNzIElEQlJlc3VsdFR5cGUgewogICAg
IENsZWFyT2JqZWN0U3RvcmVTdWNjZXNzLAogICAgIFB1dE9yQWRkU3VjY2VzcywKICAgICBHZXRS
ZWNvcmRTdWNjZXNzLAorICAgIEdldENvdW50U3VjY2VzcywKIH07CiAKIG5hbWVzcGFjZSBJREJT
ZXJ2ZXIgewpAQCAtNjYsNiArNjcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIElEQlJlc3VsdERh
dGEgY2xlYXJPYmplY3RTdG9yZVN1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJik7
CiAgICAgc3RhdGljIElEQlJlc3VsdERhdGEgcHV0T3JBZGRTdWNjZXNzKGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYsIGNvbnN0IElEQktleURhdGEmKTsKICAgICBzdGF0aWMgSURCUmVzdWx0
RGF0YSBnZXRSZWNvcmRTdWNjZXNzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYsIGNvbnN0
IFRocmVhZFNhZmVEYXRhQnVmZmVyJiB2YWx1ZURhdGEpOworICAgIHN0YXRpYyBJREJSZXN1bHRE
YXRhIGdldENvdW50U3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImLCB1aW50NjRf
dCBjb3VudCk7CiAKICAgICBJREJSZXN1bHREYXRhKGNvbnN0IElEQlJlc3VsdERhdGEmKTsKIApA
QCAtODAsNiArODIsNyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBJREJLZXlEYXRhKiByZXN1bHRL
ZXkoKSBjb25zdCB7IHJldHVybiBtX3Jlc3VsdEtleS5nZXQoKTsgfQogICAgIGNvbnN0IFRocmVh
ZFNhZmVEYXRhQnVmZmVyJiByZXN1bHREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9yZXN1bHREYXRh
OyB9CisgICAgdWludDY0X3QgcmVzdWx0SW50ZWdlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdWx0
SW50ZWdlcjsgfQogCiBwcml2YXRlOgogICAgIElEQlJlc3VsdERhdGEoY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJik7CkBAIC05Myw2ICs5Niw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlx
dWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gbV9kYXRhYmFzZUluZm87CiAgICAgc3RkOjp1bmlxdWVf
cHRyPElEQlRyYW5zYWN0aW9uSW5mbz4gbV90cmFuc2FjdGlvbkluZm87CiAgICAgc3RkOjp1bmlx
dWVfcHRyPElEQktleURhdGE+IG1fcmVzdWx0S2V5OworICAgIHVpbnQ2NF90IG1fcmVzdWx0SW50
ZWdlcjsKICAgICBUaHJlYWRTYWZlRGF0YUJ1ZmZlciBtX3Jlc3VsdERhdGE7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNz
SURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9J
blByb2Nlc3NJREJTZXJ2ZXIuY3BwCmluZGV4IDgwZDcyMWIuLjkyM2ZjMWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblBy
b2Nlc3NJREJTZXJ2ZXIuY3BwCkBAIC0xNTksNiArMTU5LDE0IEBAIHZvaWQgSW5Qcm9jZXNzSURC
U2VydmVyOjpkaWRHZXRSZWNvcmQoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKICAg
ICB9KTsKIH0KIAordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEdldENvdW50KGNvbnN0IElE
QlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZl
cj4gc2VsZih0aGlzKTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHNl
bGYsIHJlc3VsdERhdGFdIHsKKyAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZEdldENv
dW50KHJlc3VsdERhdGEpOworICAgIH0pOworfQorCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6
YWJvcnRUcmFuc2FjdGlvbihJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlc291cmNlSWRlbnRpZmll
cikKIHsKICAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBzZWxmKHRoaXMpOwpAQCAtMjE5
LDYgKzIyNywxNCBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6Z2V0UmVjb3JkKGNvbnN0IElE
QlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCSwogICAgIH0pOwogfQogCit2b2lk
IEluUHJvY2Vzc0lEQlNlcnZlcjo6Z2V0Q291bnQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSkKK3sKKyAgICBSZWZQ
dHI8SW5Qcm9jZXNzSURCU2VydmVyPiBzZWxmKHRoaXMpOworCisgICAgUnVuTG9vcDo6Y3VycmVu
dCgpLmRpc3BhdGNoKFt0aGlzLCBzZWxmLCByZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhXSB7Cisg
ICAgICAgIG1fc2VydmVyLT5nZXRDb3VudChyZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhKTsKKyAg
ICB9KTsKK30KIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjplc3RhYmxpc2hUcmFuc2FjdGlvbih1
aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJUcmFuc2FjdGlv
bkluZm8mIGluZm8pCiB7CiAgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2VsZih0aGlz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9J
blByb2Nlc3NJREJTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuaAppbmRleCA0MDhiZjE2Li41MmU3ODI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURC
U2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lu
UHJvY2Vzc0lEQlNlcnZlci5oCkBAIC02Myw2ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgY2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9i
amVjdFN0b3JlSWRlbnRpZmllcikgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCB2b2lkIHB1
dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgSURCS2V5KiwgU2VyaWFsaXplZFNjcmlwdFZh
bHVlJiwgY29uc3QgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUpIG92ZXJyaWRl
IGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCBnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEm
LCBjb25zdCBJREJLZXlSYW5nZURhdGEmKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIHZv
aWQgZ2V0Q291bnQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5nZURhdGEm
KSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIHZvaWQgZXN0YWJsaXNoVHJhbnNhY3Rpb24o
dWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCVHJhbnNhY3Rp
b25JbmZvJikgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCB2b2lkIGRhdGFiYXNlQ29ubmVj
dGlvbkNsb3NlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKSBvdmVycmlk
ZSBmaW5hbDsKIApAQCAtNzcsNiArNzgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRp
ZENsZWFyT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzdWx0RGF0YSYpIG92ZXJyaWRlIGZpbmFsOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRQdXRPckFkZChjb25zdCBJREJSZXN1bHREYXRhJikgb3ZlcnJp
ZGUgZmluYWw7CiAgICAgdmlydHVhbCB2b2lkIGRpZEdldFJlY29yZChjb25zdCBJREJSZXN1bHRE
YXRhJikgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCB2b2lkIGRpZEdldENvdW50KGNvbnN0
IElEQlJlc3VsdERhdGEmKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIHZvaWQgZmlyZVZl
cnNpb25DaGFuZ2VFdmVudChJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYs
IHVpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24pIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRTdGFydFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJh
bnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJFcnJvciYpIG92ZXJyaWRlIGZpbmFsOwogCg==
</data>
<flag name="review"
          id="289648"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264546</attachid>
            <date>2015-11-01 17:31:40 -0800</date>
            <delta_ts>2015-11-01 19:11:43 -0800</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>50573</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxMDc0ZmFlLi41M2E3YzFmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTUtMTEt
MDEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1vZGVybiBJ
REI6IElCRE9iamVjdFN0b3JlLmNvdW50KCkgc3VwcG9ydC4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDc4NQorCisgICAgICAgIFJldmlld2VkIGJ5
IERhcmluIEFkbGVyLgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9i
amVjdHN0b3JlLWNvdW50LTEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtY291bnQtMS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtY291bnQtZmFp
bHVyZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9t
b2Rlcm4vaWRib2JqZWN0c3RvcmUtY291bnQtZmFpbHVyZXMuaHRtbDogQWRkZWQuCisKIDIwMTUt
MTEtMDEgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlLWxhbmQg
YSBwaWVjZSBvZiB0aGUgcGF0Y2ggZm9yOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLWNvdW50LTEtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLWNvdW50
LTEtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4MTMz
N2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rl
cm4vaWRib2JqZWN0c3RvcmUtY291bnQtMS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1NCBAQAor
QUxFUlQ6IEluaXRpYWwgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gMCBOZXcgdmVyc2lv
biAtIDEKK0FMRVJUOiBDb3VudCBpczogMQorQUxFUlQ6IENvdW50IGlzOiAwCitBTEVSVDogQ291
bnQgaXM6IDAKK0FMRVJUOiBDb3VudCBpczogMAorQUxFUlQ6IENvdW50IGlzOiAwCitBTEVSVDog
Q291bnQgaXM6IDIKK0FMRVJUOiBDb3VudCBpczogMAorQUxFUlQ6IENvdW50IGlzOiAwCitBTEVS
VDogQ291bnQgaXM6IDAKK0FMRVJUOiBDb3VudCBpczogMAorQUxFUlQ6IENvdW50IGlzOiAzCitB
TEVSVDogQ291bnQgaXM6IDEKK0FMRVJUOiBDb3VudCBpczogMAorQUxFUlQ6IENvdW50IGlzOiAx
CitBTEVSVDogQ291bnQgaXM6IDAKK0FMRVJUOiBDb3VudCBpczogNAorQUxFUlQ6IENvdW50IGlz
OiAyCitBTEVSVDogQ291bnQgaXM6IDEKK0FMRVJUOiBDb3VudCBpczogMgorQUxFUlQ6IENvdW50
IGlzOiAwCitBTEVSVDogQ291bnQgaXM6IDUKK0FMRVJUOiBDb3VudCBpczogMworQUxFUlQ6IENv
dW50IGlzOiAyCitBTEVSVDogQ291bnQgaXM6IDMKK0FMRVJUOiBDb3VudCBpczogMAorQUxFUlQ6
IENvdW50IGlzOiA2CitBTEVSVDogQ291bnQgaXM6IDQKK0FMRVJUOiBDb3VudCBpczogMworQUxF
UlQ6IENvdW50IGlzOiAzCitBTEVSVDogQ291bnQgaXM6IDAKK0FMRVJUOiBDb3VudCBpczogNwor
QUxFUlQ6IENvdW50IGlzOiA0CitBTEVSVDogQ291bnQgaXM6IDMKK0FMRVJUOiBDb3VudCBpczog
MworQUxFUlQ6IENvdW50IGlzOiAxCitBTEVSVDogQ291bnQgaXM6IDgKK0FMRVJUOiBDb3VudCBp
czogNAorQUxFUlQ6IENvdW50IGlzOiAzCitBTEVSVDogQ291bnQgaXM6IDMKK0FMRVJUOiBDb3Vu
dCBpczogMQorQUxFUlQ6IENvdW50IGlzOiA5CitBTEVSVDogQ291bnQgaXM6IDQKK0FMRVJUOiBD
b3VudCBpczogMworQUxFUlQ6IENvdW50IGlzOiAzCitBTEVSVDogQ291bnQgaXM6IDEKK0FMRVJU
OiBDb3VudCBpczogMTAKK0FMRVJUOiBDb3VudCBpczogNAorQUxFUlQ6IENvdW50IGlzOiAzCitB
TEVSVDogQ291bnQgaXM6IDMKK0FMRVJUOiBDb3VudCBpczogMQorQUxFUlQ6IEluaXRpYWwgdXBn
cmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRlCitBTEVSVDogRG9uZQorVGhp
cyB0ZXN0IGV4ZXJjaXNlcyB2YXJpb3VzIHVzZXMgb2YgSURCT2JqZWN0U3RvcmUuY291bnQoKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVj
dHN0b3JlLWNvdW50LTEuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVy
bi9pZGJvYmplY3RzdG9yZS1jb3VudC0xLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uY2RmOTQyZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1jb3VudC0xLmh0bWwKQEAgLTAsMCArMSw5
MiBAQAorVGhpcyB0ZXN0IGV4ZXJjaXNlcyB2YXJpb3VzIHVzZXMgb2YgSURCT2JqZWN0U3RvcmUu
Y291bnQoKQorPHNjcmlwdD4KKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cit9CisK
K2Z1bmN0aW9uIGRvbmUoKQoreworICAgIGFsZXJ0KCJEb25lIik7CisgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKwordmFyIGNy
ZWF0ZVJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIklEQk9iamVjdFN0b3JlQ291bnQx
RGF0YWJhc2UiLCAxKTsKK3ZhciBkYXRhYmFzZTsKK3ZhciBvYmplY3RTdG9yZTsKKworZnVuY3Rp
b24gZ2V0Q291bnQoYXJnKQoreworICAgIHZhciByZXF1ZXN0OworICAgIGlmIChhcmcgPT0gdW5k
ZWZpbmVkKQorICAgICAgICByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuY291bnQoKTsKKyAgICBlbHNl
CisgICAgICAgIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5jb3VudChhcmcpOworICAgIAorICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGFsZXJ0KCJDb3VudCBpczog
IiArIHJlcXVlc3QucmVzdWx0KTsKKyAgICB9CisgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rp
b24oZXJyb3IpIHsKKyAgICAgICAgYWxlcnQoIlVuZXhwZWN0ZWQgZXJyb3IgZ2V0dGluZyBjb3Vu
dDogIiArIGVycm9yKTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KK30KKworZnVuY3Rpb24gZ2V0
Q291bnRzKCkKK3sKKyAgICBnZXRDb3VudCgpOworICAgIGdldENvdW50KElEQktleVJhbmdlLmJv
dW5kKDMsIDYpKTsgICAgCisgICAgZ2V0Q291bnQoSURCS2V5UmFuZ2UuYm91bmQoMywgNiwgdHJ1
ZSwgZmFsc2UpKTsgICAgCisgICAgZ2V0Q291bnQoSURCS2V5UmFuZ2UuYm91bmQoMywgNiwgZmFs
c2UsIHRydWUpKTsKKyAgICBnZXRDb3VudCg3KTsgICAgCit9CisKK2NyZWF0ZVJlcXVlc3Qub251
cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBhbGVydCgiSW5pdGlhbCB1cGdy
YWRlIG5lZWRlZDogT2xkIHZlcnNpb24gLSAiICsgZXZlbnQub2xkVmVyc2lvbiArICIgTmV3IHZl
cnNpb24gLSAiICsgZXZlbnQubmV3VmVyc2lvbik7CisKKyAgICB2YXIgdmVyc2lvblRyYW5zYWN0
aW9uID0gY3JlYXRlUmVxdWVzdC50cmFuc2FjdGlvbjsKKyAgICBkYXRhYmFzZSA9IGV2ZW50LnRh
cmdldC5yZXN1bHQ7CisgICAgb2JqZWN0U3RvcmUgPSBkYXRhYmFzZS5jcmVhdGVPYmplY3RTdG9y
ZSgiVGVzdE9iamVjdFN0b3JlIik7CisgICAgCisgICAgb2JqZWN0U3RvcmUucHV0KDEsIDEpOwor
ICAgIGdldENvdW50cygpOworICAgIG9iamVjdFN0b3JlLnB1dCgyLCAyKTsKKyAgICBnZXRDb3Vu
dHMoKTsKKyAgICBvYmplY3RTdG9yZS5wdXQoMywgMyk7CisgICAgZ2V0Q291bnRzKCk7CisgICAg
b2JqZWN0U3RvcmUucHV0KDQsIDQpOworICAgIGdldENvdW50cygpOworICAgIG9iamVjdFN0b3Jl
LnB1dCg1LCA1KTsKKyAgICBnZXRDb3VudHMoKTsKKyAgICBvYmplY3RTdG9yZS5wdXQoNiwgNik7
CisgICAgZ2V0Q291bnRzKCk7CisgICAgb2JqZWN0U3RvcmUucHV0KDcsIDcpOworICAgIGdldENv
dW50cygpOworICAgIG9iamVjdFN0b3JlLnB1dCg4LCA4KTsKKyAgICBnZXRDb3VudHMoKTsKKyAg
ICBvYmplY3RTdG9yZS5wdXQoOSwgOSk7CisgICAgZ2V0Q291bnRzKCk7CisgICAgb2JqZWN0U3Rv
cmUucHV0KDEwLCAxMCk7CisgICAgZ2V0Q291bnRzKCk7CisKKyAgICAvLyBGSVhNRTogT25jZSBv
YmplY3RTdG9yZS5kZWxldGUoKSBpcyBpbXBsZW1lbnRlZCwgYWxzbyB0ZXN0IGNvdW50cyBhZnRl
ciBkZWxldGluZyBwcmV2aW91cyByZWNvcmRzLgorICAgIAorICAgIHZlcnNpb25UcmFuc2FjdGlv
bi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgYWxlcnQoIkluaXRpYWwgdXBn
cmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnQiKTsKKyAgICAg
ICAgZG9uZSgpOworICAgIH0KKworICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0g
ZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgYWxlcnQoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9u
Y2hhbmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRlIik7CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisK
KyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAg
ICAgIGFsZXJ0KCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4
cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KK30KKworPC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4v
aWRib2JqZWN0c3RvcmUtY291bnQtZmFpbHVyZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLWNvdW50LWZhaWx1cmVzLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODNhNjgwCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lk
Ym9iamVjdHN0b3JlLWNvdW50LWZhaWx1cmVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAK
K0FMRVJUOiBJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtIDAgTmV3IHZlcnNp
b24gLSAxCitBTEVSVDogRmFpbGVkIHRvIGNvdW50IHJlY29yZHMgaW4gb2JqZWN0IHN0b3JlIHdp
dGggYW4gaW52YWxpZCBrZXkKK0FMRVJUOiBGYWlsZWQgdG8gY291bnQgcmVjb3JkcyBpbiBvYmpl
Y3Qgc3RvcmUgdGhhdCdzIGJlZW4gZGVsZXRlZAorQUxFUlQ6IEluaXRpYWwgdXBncmFkZSB2ZXJz
aW9uY2hhbmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRlCitBTEVSVDogRmFpbGVkIHRvIGNvdW50IHJl
Y29yZHMgaW4gb2JqZWN0IHN0b3JlIHdoaWxlIHRyYW5zYWN0aW9uIGlzIGluYWN0aXZlCitBTEVS
VDogcmVhZG9ubHkgdHJhbnNhY3Rpb24gY29tcGxldGUKK0FMRVJUOiBEb25lCitUaGlzIHRlc3Rz
IHNvbWUgb2J2aW91cyBmYWlsdXJlcyB0aGF0IGNhbiBoYXBwZW4gd2hpbGUgY2FsbGluZyBJREJP
YmplY3RTdG9yZS5jb3VudCgpLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLWNvdW50LWZhaWx1cmVzLmh0bWwgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtY291bnQtZmFpbHVy
ZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzlmNTc4Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9i
amVjdHN0b3JlLWNvdW50LWZhaWx1cmVzLmh0bWwKQEAgLTAsMCArMSw5OCBAQAorVGhpcyB0ZXN0
cyBzb21lIG9idmlvdXMgZmFpbHVyZXMgdGhhdCBjYW4gaGFwcGVuIHdoaWxlIGNhbGxpbmcgSURC
T2JqZWN0U3RvcmUuY291bnQoKS4KKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikg
eworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOworfQorCitmdW5jdGlvbiBkb25lKCkKK3sKKyAgICBhbGVydCgiRG9uZSIpOworICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
Cit9CisKK3ZhciBjcmVhdGVSZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJJREJPYmpl
Y3RTdG9yZUNvdW50RmFpbHVyZXNEYXRhYmFzZSIsIDEpOwordmFyIGRhdGFiYXNlOworCitjcmVh
dGVSZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgYWxlcnQo
IkluaXRpYWwgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gIiArIGV2ZW50Lm9sZFZlcnNp
b24gKyAiIE5ldyB2ZXJzaW9uIC0gIiArIGV2ZW50Lm5ld1ZlcnNpb24pOworCisgICAgdmFyIHZl
cnNpb25UcmFuc2FjdGlvbiA9IGNyZWF0ZVJlcXVlc3QudHJhbnNhY3Rpb247CisgICAgZGF0YWJh
c2UgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgIHZhciBvYmplY3RTdG9yZSA9IGRhdGFiYXNl
LmNyZWF0ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKKyAgICB2YXIgcmVxdWVzdCA9
IG9iamVjdFN0b3JlLnB1dCgiYmFyIiwgImZvbyIpOworCisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG9iamVjdFN0b3JlLmNv
dW50KE5hTik7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgYWxlcnQoIkZhaWxl
ZCB0byBjb3VudCByZWNvcmRzIGluIG9iamVjdCBzdG9yZSB3aXRoIGFuIGludmFsaWQga2V5Iik7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGRhdGFiYXNlLmRlbGV0ZU9iamVjdFN0b3Jl
KCJUZXN0T2JqZWN0U3RvcmUiKTsKKyAgICAgICAgCisgICAgICAgIHRyeSB7CisgICAgICAgICAg
ICBvYmplY3RTdG9yZS5jb3VudCgpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAg
IGFsZXJ0KCJGYWlsZWQgdG8gY291bnQgcmVjb3JkcyBpbiBvYmplY3Qgc3RvcmUgdGhhdCdzIGJl
ZW4gZGVsZXRlZCIpOworICAgICAgICB9IAorCisgICAgICAgIC8vIFJlY3JlYXRlIHRoZSBvYmpl
Y3RzdG9yZSBiZWNhdXNlIHdlJ2xsIG5lZWQgaXQgaW4gcGhhc2UgMi4KKyAgICAgICAgdmFyIG9i
amVjdFN0b3JlID0gZGF0YWJhc2UuY3JlYXRlT2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIp
OworICAgICAgICBvYmplY3RTdG9yZS5wdXQoImJhciIsICJmb28iKTsgICAgCisgICAgfQorICAg
IAorICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAg
ICAgICAgYWxlcnQoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVu
ZXhwZWN0ZWQgYWJvcnRlZCIpOworICAgICAgICBkb25lKCk7CisgICAgfQorCisgICAgdmVyc2lv
blRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBhbGVy
dCgiSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGUiKTsK
KyAgICAgICAgY29udGludWVUZXN0MSgpOworICAgIH0KKworICAgIHZlcnNpb25UcmFuc2FjdGlv
bi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgYWxlcnQoIkluaXRpYWwgdXBn
cmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IiICsgZXZlbnQp
OworICAgICAgICBkb25lKCk7CisgICAgfQorfQorCitmdW5jdGlvbiBjb250aW51ZVRlc3QxKCkK
K3sKKyAgICB2YXIgdHJhbnNhY3Rpb24gPSBkYXRhYmFzZS50cmFuc2FjdGlvbigiVGVzdE9iamVj
dFN0b3JlIiwgInJlYWRvbmx5Iik7CisgICAgdmFyIG9iamVjdFN0b3JlID0gdHJhbnNhY3Rpb24u
b2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOworCisgICAgLy8gUXVldWUgdXAgYSB3aG9s
ZSBidW5jaCBvZiBnZXRzIHRvIGtlZXAgdGhlIHRyYW5zYWN0aW9uIGFsaXZlIGZvciBhd2hpbGUK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwOyArK2kpCisgICAgICAgIG9iamVjdFN0b3JlLmdl
dCgiZm9vIik7CisKKyAgICB2YXIgZ2V0V2hpbGVJbmFjdGl2ZSA9IGZ1bmN0aW9uKCkgeworICAg
ICAgICB0cnkgeworICAgICAgICAgICAgb2JqZWN0U3RvcmUuY291bnQoKTsKKyAgICAgICAgfSBj
YXRjaChlKSB7CisgICAgICAgICAgICBhbGVydCgiRmFpbGVkIHRvIGNvdW50IHJlY29yZHMgaW4g
b2JqZWN0IHN0b3JlIHdoaWxlIHRyYW5zYWN0aW9uIGlzIGluYWN0aXZlIik7CisgICAgICAgIH0g
CisgICAgfQorICAgIAorICAgIHNldFRpbWVvdXQoZ2V0V2hpbGVJbmFjdGl2ZSwgMCk7CisgICAg
CisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGFs
ZXJ0KCJyZWFkb25seSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0IiArIGV2ZW50KTsKKyAg
ICAgICAgZG9uZSgpOworICAgIH0KKworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5j
dGlvbihldmVudCkgeworICAgICAgICBhbGVydCgicmVhZG9ubHkgdHJhbnNhY3Rpb24gY29tcGxl
dGUiKTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKworICAgIHRyYW5zYWN0aW9uLm9uZXJyb3Ig
PSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBhbGVydCgicmVhZG9ubHkgdHJhbnNhY3Rpb24g
dW5leHBlY3RlZCBlcnJvciIgKyBldmVudCk7CisgICAgICAgIGRvbmUoKTsKKyAgICB9Cit9CisK
Kzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDU4MDdhZDAuLjcxMTU2ZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw3OSBAQAorMjAxNS0xMS0wMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5j
b20+CisKKyAgICAgICAgTW9kZXJuIElEQjogSUJET2JqZWN0U3RvcmUuY291bnQoKSBzdXBwb3J0
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzg1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgVGVzdHM6IHN0
b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1jb3VudC0xLmh0bWwKKyAgICAg
ICAgICAgICAgIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1jb3VudC1m
YWlsdXJlcy5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29u
bmVjdGlvblRvU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29u
bmVjdGlvblRvU2VydmVyOjpnZXRDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6
OklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGlkR2V0Q291bnQpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuaDoKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyRGVsZWdhdGUuaDoKKyAg
ICAgICAgCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQk9iamVjdFN0b3Jl
SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQk9iamVjdFN0b3JlOjpj
b3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQk9iamVjdFN0b3JlOjpkb0Nv
dW50KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCT2JqZWN0U3RvcmVJ
bXBsLmg6CisgICAgICAgIAorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJS
ZXF1ZXN0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQlJlcXVlc3Q6
OnNldFJlc3VsdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlJlcXVl
c3RJbXBsLmg6CisgICAgICAgIAorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9J
REJUcmFuc2FjdGlvbkltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJU
cmFuc2FjdGlvbjo6cmVxdWVzdENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6
SURCVHJhbnNhY3Rpb246OmdldENvdW50T25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURC
Q2xpZW50OjpJREJUcmFuc2FjdGlvbjo6ZGlkR2V0Q291bnRPblNlcnZlcik6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlRyYW5zYWN0aW9uSW1wbC5oOgorICAgICAgICAK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmg6Cisg
ICAgICAgIAorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9u
VG9DbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJDb25uZWN0aW9u
VG9DbGllbnQ6OmRpZEdldENvdW50KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50Lmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlLmg6CisgICAgICAgIAorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OmdldENvdW50KToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmg6CisgICAgICAgIAorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJREJCYWNraW5nU3RvcmU6OmdldENvdW50KToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmg6
CisgICAgICAgIAorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmpl
Y3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeU9iamVjdFN0
b3JlOjpjb3VudEZvcktleVJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVt
b3J5T2JqZWN0U3RvcmU6OnZhbHVlRm9yS2V5UmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpNZW1vcnlPYmplY3RTdG9yZTo6bG93ZXN0S2V5V2l0aFJlY29yZEluUmFuZ2UpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5oOgor
ICAgICAgICAKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0
YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFz
ZTo6c3RvcmVDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlE
QkRhdGFiYXNlOjpnZXRDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1
ZUlEQkRhdGFiYXNlOjpwZXJmb3JtR2V0Q291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybUdldENvdW50KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1Db3VudENhbGxiYWNr
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2Uu
aDoKKyAgICAgICAgCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlE
QkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpnZXRSZWNvcmQpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpnZXRDb3VudCk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNh
Y3Rpb24uaDoKKyAgICAgICAgCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lE
QlJlc3VsdERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVzdWx0RGF0YTo6SURCUmVz
dWx0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXN1bHREYXRhOjpnZXRDb3VudFN1Y2Nl
c3MpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmg6
CisgICAgICAgIChXZWJDb3JlOjpJREJSZXN1bHREYXRhOjpyZXN1bHRJbnRlZ2VyKToKKyAgICAg
ICAgCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEdldENvdW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkluUHJvY2Vzc0lEQlNlcnZlcjo6Z2V0Q291bnQpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuaDoKKwog
MjAxNS0xMS0wMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAg
ICAgICAgIENsZWFuIHVwIHNvbWUgQ1NTICYgRm9udCBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9u
VG9TZXJ2ZXIuY3BwCmluZGV4IDljZTIwZmYuLjkwMzljMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0
aW9uVG9TZXJ2ZXIuY3BwCkBAIC0xNzAsNiArMTcwLDIyIEBAIHZvaWQgSURCQ29ubmVjdGlvblRv
U2VydmVyOjpkaWRHZXRSZWNvcmQoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKICAg
ICBjb21wbGV0ZU9wZXJhdGlvbihyZXN1bHREYXRhKTsKIH0KIAordm9pZCBJREJDb25uZWN0aW9u
VG9TZXJ2ZXI6OmdldENvdW50KFRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0
IElEQktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhKQoreworICAgIExPRyhJbmRleGVkREIsICJJ
REJDb25uZWN0aW9uVG9TZXJ2ZXI6OmdldENvdW50Iik7CisKKyAgICBBU1NFUlQoIWtleVJhbmdl
RGF0YS5pc051bGwpOworCisgICAgc2F2ZU9wZXJhdGlvbihvcGVyYXRpb24pOworICAgIG1fZGVs
ZWdhdGUtPmdldENvdW50KElEQlJlcXVlc3REYXRhKG9wZXJhdGlvbiksIGtleVJhbmdlRGF0YSk7
Cit9CisKK3ZvaWQgSURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWRHZXRDb3VudChjb25zdCBJREJS
ZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIExPRyhJbmRleGVkREIsICJJREJDb25uZWN0
aW9uVG9TZXJ2ZXI6OmRpZEdldENvdW50Iik7CisgICAgY29tcGxldGVPcGVyYXRpb24ocmVzdWx0
RGF0YSk7Cit9CisKIHZvaWQgSURCQ29ubmVjdGlvblRvU2VydmVyOjplc3RhYmxpc2hUcmFuc2Fj
dGlvbihJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwg
IklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24iKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9u
VG9TZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJD
b25uZWN0aW9uVG9TZXJ2ZXIuaAppbmRleCBiNDEyNDMyLi4zNGE3MWUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2Vy
dmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNv
bm5lY3Rpb25Ub1NlcnZlci5oCkBAIC03Niw2ICs3Niw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGdl
dFJlY29yZChUcmFuc2FjdGlvbk9wZXJhdGlvbiYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOwog
ICAgIHZvaWQgZGlkR2V0UmVjb3JkKGNvbnN0IElEQlJlc3VsdERhdGEmKTsKIAorICAgIHZvaWQg
Z2V0Q291bnQoVHJhbnNhY3Rpb25PcGVyYXRpb24mLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKTsK
KyAgICB2b2lkIGRpZEdldENvdW50KGNvbnN0IElEQlJlc3VsdERhdGEmKTsKKwogICAgIHZvaWQg
Y29tbWl0VHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb24mKTsKICAgICB2b2lkIGRpZENvbW1pdFRy
YW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlm
aWVyLCBjb25zdCBJREJFcnJvciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyRGVsZWdhdGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2
ZXJEZWxlZ2F0ZS5oCmluZGV4IDg5ZjBkMzEuLmU5YzljMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXJEZWxl
Z2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJD
b25uZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0ZS5oCkBAIC02MSw2ICs2MSw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgY2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYsIHVp
bnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwdXRP
ckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIElEQktleSosIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSYsIGNvbnN0IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktl
eVJhbmdlRGF0YSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0Q291bnQoY29uc3QgSURCUmVx
dWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGVzdGFibGlzaFRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZp
ZXIsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBk
YXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRp
ZmllcikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
Y2xpZW50L0lEQk9iamVjdFN0b3JlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvSURCT2JqZWN0U3RvcmVJbXBsLmNwcAppbmRleCAwMGUzYmFjLi4wMTI4
NmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
SURCT2JqZWN0U3RvcmVJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9jbGllbnQvSURCT2JqZWN0U3RvcmVJbXBsLmNwcApAQCAtMzI1LDE5ICszMjUsNjkgQEAg
dm9pZCBJREJPYmplY3RTdG9yZTo6ZGVsZXRlSW5kZXgoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9u
Q29kZSYpCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotUmVmUHRyPFdl
YkNvcmU6OklEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpjb3VudChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgRXhjZXB0aW9uQ29kZSYpCitSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURC
T2JqZWN0U3RvcmU6OmNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
TE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpjb3VudCIpOworCisgICAgaWYgKCFjb250
ZXh0KSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0KKworICAgIElEQktleVJhbmdlRGF0YSByYW5nZTsKKyAgICByYW5nZS5p
c051bGwgPSBmYWxzZTsKKyAgICByZXR1cm4gZG9Db3VudCgqY29udGV4dCwgcmFuZ2UsIGVjKTsK
IH0KIAotUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpjb3VudChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgSURCS2V5UmFuZ2UqLCBFeGNlcHRpb25Db2RlJikKK1Jl
ZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Y291bnQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtl
eSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICBMT0coSW5kZXhlZERCLCAiSURCT2JqZWN0U3RvcmU6OmNvdW50Iik7CisKKyAgICBp
ZiAoIWNvbnRleHQpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgRE9NUmVxdWVzdFN0YXRlIHJlcXVlc3RTdGF0
ZShjb250ZXh0KTsKKyAgICBSZWZQdHI8SURCS2V5PiBpZGJLZXkgPSBzY3JpcHRWYWx1ZVRvSURC
S2V5KCZyZXF1ZXN0U3RhdGUsIGtleSk7CisgICAgaWYgKCFpZGJLZXkgfHwgaWRiS2V5LT50eXBl
KCkgPT0gS2V5VHlwZTo6SW52YWxpZCkgeworICAgICAgICBlYyA9IHN0YXRpY19jYXN0PEV4Y2Vw
dGlvbkNvZGU+KElEQkV4Y2VwdGlvbkNvZGU6OkRhdGFFcnJvcik7CisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0KKworICAgIHJldHVybiBkb0NvdW50KCpjb250ZXh0LCBJREJLZXlSYW5n
ZURhdGEoaWRiS2V5LmdldCgpKSwgZWMpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVz
dD4gSURCT2JqZWN0U3RvcmU6OmNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIEV4Y2VwdGlvbkNvZGUmKQorUmVmUHRyPFdlYkNvcmU6
OklEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBJREJLZXlSYW5nZSogcmFuZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgTE9HKEluZGV4ZWREQiwgIklEQk9i
amVjdFN0b3JlOjpjb3VudCIpOworCisgICAgaWYgKCFjb250ZXh0KSB7CisgICAgICAgIGVjID0g
SU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAg
IHJldHVybiBkb0NvdW50KCpjb250ZXh0LCBJREJLZXlSYW5nZURhdGEocmFuZ2UpLCBlYyk7Cit9
CisKK1JlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6ZG9Db3VudChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJh
bmdlLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIW1fdHJhbnNhY3Rpb24tPmlzQWN0
aXZlKCkpIHsKKyAgICAgICAgZWMgPSBzdGF0aWNfY2FzdDxFeGNlcHRpb25Db2RlPihJREJFeGNl
cHRpb25Db2RlOjpUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3IpOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICB9CisKKyAgICBpZiAobV9kZWxldGVkKSB7CisgICAgICAgIGVjID0gSU5WQUxJ
RF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGlmIChy
YW5nZS5pc051bGwpIHsKKyAgICAgICAgZWMgPSBzdGF0aWNfY2FzdDxFeGNlcHRpb25Db2RlPihJ
REJFeGNlcHRpb25Db2RlOjpEYXRhRXJyb3IpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9CisKKyAgICByZXR1cm4gbV90cmFuc2FjdGlvbi0+cmVxdWVzdENvdW50KGNvbnRleHQsICp0
aGlzLCByYW5nZSkKIH0KIAogdm9pZCBJREJPYmplY3RTdG9yZTo6bWFya0FzRGVsZXRlZCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCT2Jq
ZWN0U3RvcmVJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
SURCT2JqZWN0U3RvcmVJbXBsLmgKaW5kZXggNGJkNTA0OS4uMzMzNjY4YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQk9iamVjdFN0b3JlSW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPYmpl
Y3RTdG9yZUltcGwuaApAQCAtMzYsNiArMzYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIElEQktleTsKIAorc3RydWN0IElEQktleVJhbmdlRGF0YTsKKwogbmFtZXNwYWNlIElEQkNs
aWVudCB7CiAKIGNsYXNzIElEQlRyYW5zYWN0aW9uOwpAQCAtODMsNiArODUsNyBAQCBwcml2YXRl
OgogICAgIElEQk9iamVjdFN0b3JlKGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYsIElEQlRyYW5z
YWN0aW9uJik7CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gcHV0T3JBZGQoSlND
OjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUsIFJlZlB0cjxJREJLZXk+LCBJbmRleGVkREI6Ok9i
amVjdFN0b3JlT3ZlcndyaXRlTW9kZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJlZlB0cjxXZWJD
b3JlOjpJREJSZXF1ZXN0PiBkb0NvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBJ
REJLZXlSYW5nZURhdGEmLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBJREJPYmplY3RTdG9yZUlu
Zm8gbV9pbmZvOwogICAgIFJlZjxJREJUcmFuc2FjdGlvbj4gbV90cmFuc2FjdGlvbjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJSZXF1ZXN0
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCUmVx
dWVzdEltcGwuY3BwCmluZGV4IGFkZGYzZmEuLmRiZDJkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJSZXF1ZXN0SW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlJlcXVlc3RJbXBsLmNw
cApAQCAtMTg0LDYgKzE4NCwxMiBAQCB2b2lkIElEQlJlcXVlc3Q6OnNldFJlc3VsdChjb25zdCBJ
REJLZXlEYXRhKiBrZXlEYXRhKQogICAgIG1fcmVzdWx0ID0gSURCQW55OjpjcmVhdGUoV1RGOjpt
b3ZlKHZhbHVlKSk7CiB9CiAKK3ZvaWQgSURCUmVxdWVzdDo6c2V0UmVzdWx0KHVpbnQ2NF90IG51
bWJlcikKK3sKKyAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBtX3Jl
c3VsdCA9IElEQkFueTo6Y3JlYXRlKERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+dm0oKSwgSlNDOjpKU1ZhbHVlKG51bWJlcikpKTsKK30KKwogdm9pZCBJ
REJSZXF1ZXN0OjpzZXRSZXN1bHRUb1N0cnVjdHVyZWRDbG9uZShjb25zdCBUaHJlYWRTYWZlRGF0
YUJ1ZmZlciYgdmFsdWVEYXRhKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJSZXF1ZXN0Ojpz
ZXRSZXN1bHRUb1N0cnVjdHVyZWRDbG9uZSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlJlcXVlc3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCUmVxdWVzdEltcGwuaAppbmRleCAwYTdmODFh
Li4xNDU2MWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9j
bGllbnQvSURCUmVxdWVzdEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9jbGllbnQvSURCUmVxdWVzdEltcGwuaApAQCAtNzgsNiArNzgsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCByZXF1ZXN0Q29tcGxldGVkKGNvbnN0IElEQlJlc3VsdERhdGEmKTsKIAogICAgIHZv
aWQgc2V0UmVzdWx0KGNvbnN0IElEQktleURhdGEqKTsKKyAgICB2b2lkIHNldFJlc3VsdCh1aW50
NjRfdCk7CiAgICAgdm9pZCBzZXRSZXN1bHRUb1N0cnVjdHVyZWRDbG9uZShjb25zdCBUaHJlYWRT
YWZlRGF0YUJ1ZmZlciYpOwogICAgIHZvaWQgc2V0UmVzdWx0VG9VbmRlZmluZWQoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlRyYW5z
YWN0aW9uSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
SURCVHJhbnNhY3Rpb25JbXBsLmNwcAppbmRleCA1YjFhOTNhLi44MzE5ZDRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCVHJhbnNhY3Rpb25J
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURC
VHJhbnNhY3Rpb25JbXBsLmNwcApAQCAtNDMxLDYgKzQzMSwzNSBAQCB2b2lkIElEQlRyYW5zYWN0
aW9uOjpkaWRHZXRSZWNvcmRPblNlcnZlcihJREJSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJS
ZXN1bHREYQogICAgIHJlcXVlc3QucmVxdWVzdENvbXBsZXRlZChyZXN1bHREYXRhKTsKIH0KIAor
UmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q291bnQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBjb25zdCBJ
REJLZXlSYW5nZURhdGEmIHJhbmdlKQoreworICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2Fj
dGlvbjo6cmVxdWVzdENvdW50Iik7CisgICAgQVNTRVJUKGlzQWN0aXZlKCkpOworICAgIEFTU0VS
VCghcmFuZ2UuaXNOdWxsKTsKKworICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVx
dWVzdDo6Y3JlYXRlKGNvbnRleHQsIG9iamVjdFN0b3JlLCAqdGhpcyk7CisgICAgYWRkUmVxdWVz
dChyZXF1ZXN0LmdldCgpKTsKKworICAgIHNjaGVkdWxlT3BlcmF0aW9uKGNyZWF0ZVRyYW5zYWN0
aW9uT3BlcmF0aW9uKCp0aGlzLCByZXF1ZXN0LmdldCgpLCAmSURCVHJhbnNhY3Rpb246OmRpZEdl
dENvdW50T25TZXJ2ZXIsICZJREJUcmFuc2FjdGlvbjo6Z2V0Q291bnRPblNlcnZlciwgcmFuZ2Up
KTsKKworICAgIHJldHVybiByZXF1ZXN0OworfQorCit2b2lkIElEQlRyYW5zYWN0aW9uOjpnZXRD
b3VudE9uU2VydmVyKFRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0IElEQktl
eVJhbmdlRGF0YSYga2V5UmFuZ2UpCit7CisgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0
aW9uOjpnZXRDb3VudE9uU2VydmVyIik7CisKKyAgICBzZXJ2ZXJDb25uZWN0aW9uKCkuZ2V0Q291
bnQob3BlcmF0aW9uLCBrZXlSYW5nZSk7Cit9CisKK3ZvaWQgSURCVHJhbnNhY3Rpb246OmRpZEdl
dENvdW50T25TZXJ2ZXIoSURCUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSURCUmVzdWx0RGF0YSYg
cmVzdWx0RGF0YSkKK3sKKyAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmRpZEdl
dENvdW50T25TZXJ2ZXIiKTsKKworICAgIHJlcXVlc3Quc2V0UmVzdWx0KHJlc3VsdERhdGEucmVz
dWx0SW50ZWdlcigpKTsKKyAgICByZXF1ZXN0LnJlcXVlc3RDb21wbGV0ZWQocmVzdWx0RGF0YSk7
Cit9CisKIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdENsZWFyT2JqZWN0
U3RvcmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSURCT2JqZWN0U3RvcmUmIG9i
amVjdFN0b3JlKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVxdWVz
dENsZWFyT2JqZWN0U3RvcmUiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL2NsaWVudC9JREJUcmFuc2FjdGlvbkltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJUcmFuc2FjdGlvbkltcGwuaAppbmRleCBhMTkwNjY1
Li4xNjMxNGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9j
bGllbnQvSURCVHJhbnNhY3Rpb25JbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvY2xpZW50L0lEQlRyYW5zYWN0aW9uSW1wbC5oCkBAIC05Miw2ICs5Miw3IEBAIHB1
YmxpYzoKICAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdFB1dE9yQWRkKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBJREJPYmplY3RTdG9yZSYsIElEQktleSosIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSYsIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlKTsKICAgICBSZWY8SURCUmVx
dWVzdD4gcmVxdWVzdEdldFJlY29yZChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgSURCT2JqZWN0
U3RvcmUmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKTsKICAgICBSZWY8SURCUmVxdWVzdD4gcmVx
dWVzdENsZWFyT2JqZWN0U3RvcmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIElEQk9iamVjdFN0
b3JlJik7CisgICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RDb3VudChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiwgSURCT2JqZWN0U3RvcmUmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKTsKIAogICAg
IHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpOwog
CkBAIC0xMzYsNiArMTM3LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldFJlY29yZE9uU2VydmVy
KFRyYW5zYWN0aW9uT3BlcmF0aW9uJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7CiAgICAgdm9p
ZCBkaWRHZXRSZWNvcmRPblNlcnZlcihJREJSZXF1ZXN0JiwgY29uc3QgSURCUmVzdWx0RGF0YSYp
OwogCisgICAgdm9pZCBnZXRDb3VudE9uU2VydmVyKFRyYW5zYWN0aW9uT3BlcmF0aW9uJiwgY29u
c3QgSURCS2V5UmFuZ2VEYXRhJik7CisgICAgdm9pZCBkaWRHZXRDb3VudE9uU2VydmVyKElEQlJl
cXVlc3QmLCBjb25zdCBJREJSZXN1bHREYXRhJik7CisKICAgICB2b2lkIGRlbGV0ZU9iamVjdFN0
b3JlT25TZXJ2ZXIoVHJhbnNhY3Rpb25PcGVyYXRpb24mLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0
b3JlTmFtZSk7CiAgICAgdm9pZCBkaWREZWxldGVPYmplY3RTdG9yZU9uU2VydmVyKGNvbnN0IElE
QlJlc3VsdERhdGEmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oCmluZGV4IDhmMzljNzIuLjEzNWY2MTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJC
YWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCQmFja2luZ1N0b3JlLmgKQEAgLTYwLDYgKzYwLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgSURCRXJyb3IgZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJh
bnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0
IElEQktleURhdGEmKSA9IDA7CiAgICAgdmlydHVhbCBJREJFcnJvciBwdXRSZWNvcmQoY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9i
amVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IFRocmVhZFNhZmVE
YXRhQnVmZmVyJiB2YWx1ZSkgPSAwOwogICAgIHZpcnR1YWwgSURCRXJyb3IgZ2V0UmVjb3JkKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRf
dCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIFRocmVhZFNh
ZmVEYXRhQnVmZmVyJiBvdXRWYWx1ZSkgPSAwOworICAgIHZpcnR1YWwgSURCRXJyb3IgZ2V0Q291
bnQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVp
bnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgdWlu
dDY0X3QmIG91dENvdW50KSA9IDA7CiAgICAgdmlydHVhbCBJREJFcnJvciBnZW5lcmF0ZUtleU51
bWJlcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwg
dWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCYga2V5TnVtYmVyKSA9IDA7
CiAKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuY3BwCmluZGV4IGIxMGM0NTYuLjI4
ZDE4YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJDb25uZWN0aW9uVG9DbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuY3BwCkBAIC04OCw2ICs4OCwx
MSBAQCB2b2lkIElEQkNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkR2V0UmVjb3JkKGNvbnN0IElEQlJl
c3VsdERhdGEmIHJlc3VsdCkKICAgICBtX2RlbGVnYXRlLT5kaWRHZXRSZWNvcmQocmVzdWx0KTsK
IH0KIAordm9pZCBJREJDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEdldENvdW50KGNvbnN0IElEQlJl
c3VsdERhdGEmIHJlc3VsdCkKK3sKKyAgICBtX2RlbGVnYXRlLT5kaWRHZXRDb3VudChyZXN1bHQp
OworfQorCiB2b2lkIElEQkNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkQ29tbWl0VHJhbnNhY3Rpb24o
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0
IElEQkVycm9yJiBlcnJvcikKIHsKICAgICBtX2RlbGVnYXRlLT5kaWRDb21taXRUcmFuc2FjdGlv
bih0cmFuc2FjdGlvbklkZW50aWZpZXIsIGVycm9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGll
bnQuaAppbmRleCAyNDRkOThlLi43NjYyYjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVu
dC5oCkBAIC01Nyw2ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENsZWFyT2JqZWN0U3Rv
cmUoY29uc3QgSURCUmVzdWx0RGF0YSYpOwogICAgIHZvaWQgZGlkUHV0T3JBZGQoY29uc3QgSURC
UmVzdWx0RGF0YSYpOwogICAgIHZvaWQgZGlkR2V0UmVjb3JkKGNvbnN0IElEQlJlc3VsdERhdGEm
KTsKKyAgICB2b2lkIGRpZEdldENvdW50KGNvbnN0IElEQlJlc3VsdERhdGEmKTsKIAogICAgIHZv
aWQgZmlyZVZlcnNpb25DaGFuZ2VFdmVudChVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mLCB1
aW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uKTsKICAgICB2b2lkIGRpZFN0YXJ0VHJhbnNhY3Rpb24o
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0
IElEQkVycm9yJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50RGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnREZWxlZ2F0ZS5o
CmluZGV4IDMxZDBhNTAuLmFkMDQxYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnREZWxlZ2F0ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9D
bGllbnREZWxlZ2F0ZS5oCkBAIC01Myw2ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgZGlkQ2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRhJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRQdXRPckFkZChjb25zdCBJREJSZXN1bHREYXRhJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRHZXRSZWNvcmQoY29uc3QgSURCUmVzdWx0RGF0YSYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkR2V0Q291bnQoY29uc3QgSURCUmVzdWx0RGF0YSYpID0gMDsKIAogICAg
IHZpcnR1YWwgdm9pZCBmaXJlVmVyc2lvbkNoYW5nZUV2ZW50KFVuaXF1ZUlEQkRhdGFiYXNlQ29u
bmVjdGlvbiYsIHVpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24pID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkU3RhcnRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5z
YWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCmluZGV4IDU4
ODIzNjUuLjRiMGE3NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCkBAIC0yMTMsNiArMjEzLDE3IEBAIHZvaWQgSURC
U2VydmVyOjpnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25z
dCBJREJLZXlSYW5nZURhCiAgICAgdHJhbnNhY3Rpb24tPmdldFJlY29yZChyZXF1ZXN0RGF0YSwg
a2V5UmFuZ2VEYXRhKTsKIH0KIAordm9pZCBJREJTZXJ2ZXI6OmdldENvdW50KGNvbnN0IElEQlJl
cXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURh
dGEpCit7CisgICAgTE9HKEluZGV4ZWREQiwgIklEQlNlcnZlcjo6Z2V0Q291bnQiKTsKKworICAg
IGF1dG8gdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQocmVxdWVzdERhdGEudHJhbnNh
Y3Rpb25JZGVudGlmaWVyKCkpOworICAgIGlmICghdHJhbnNhY3Rpb24pCisgICAgICAgIHJldHVy
bjsKKworICAgIHRyYW5zYWN0aW9uLT5nZXRDb3VudChyZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRh
KTsKK30KKwogdm9pZCBJREJTZXJ2ZXI6OmVzdGFibGlzaFRyYW5zYWN0aW9uKHVpbnQ2NF90IGRh
dGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgaW5m
bykKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCU2VydmVyOjplc3RhYmxpc2hUcmFuc2FjdGlv
biIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQlNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QlNlcnZlci5oCmluZGV4IDYxYjY5MmMuLmY2OWNiOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKQEAgLTY0LDYgKzY0LDcg
QEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0
YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcik7CiAgICAgdm9pZCBwdXRPckFkZChj
b25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBUaHJlYWRTYWZl
RGF0YUJ1ZmZlciYgdmFsdWVEYXRhLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9k
ZSk7CiAgICAgdm9pZCBnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJL
ZXlSYW5nZURhdGEmKTsKKyAgICB2b2lkIGdldENvdW50KGNvbnN0IElEQlJlcXVlc3REYXRhJiwg
Y29uc3QgSURCS2V5UmFuZ2VEYXRhJik7CiAgICAgdm9pZCBlc3RhYmxpc2hUcmFuc2FjdGlvbih1
aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJUcmFuc2FjdGlv
bkluZm8mKTsKICAgICB2b2lkIGRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZCh1aW50NjRfdCBkYXRh
YmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3Jl
LmNwcAppbmRleCAyMDYwNmM5Li43MjJjNzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0
b3JlLmNwcApAQCAtMjU5LDYgKzI1OSwyMyBAQCBJREJFcnJvciBNZW1vcnlJREJCYWNraW5nU3Rv
cmU6OmdldFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAg
IHJldHVybiBJREJFcnJvcigpOwogfQogCitJREJFcnJvciBNZW1vcnlJREJCYWNraW5nU3RvcmU6
OmdldENvdW50KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlm
aWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IElEQktleVJhbmdlRGF0
YSYgcmFuZ2UsIHVpbnQ2NF90JiBvdXRDb3VudCkKK3sKKyAgICBMT0coSW5kZXhlZERCLCAiTWVt
b3J5SURCQmFja2luZ1N0b3JlOjpnZXRDb3VudCIpOworCisgICAgQVNTRVJUKG9iamVjdFN0b3Jl
SWRlbnRpZmllcik7CisKKyAgICBpZiAoIW1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0
aW9uSWRlbnRpZmllcikpCisgICAgICAgIHJldHVybiBJREJFcnJvcihJREJFeGNlcHRpb25Db2Rl
OjpVbmtub3duLCBXVEY6OkFTQ0lJTGl0ZXJhbCgiTm8gYmFja2luZyBzdG9yZSB0cmFuc2FjdGlv
biBmb3VuZCB0byBnZXQgY291bnQiKSk7CisKKyAgICBNZW1vcnlPYmplY3RTdG9yZSogb2JqZWN0
U3RvcmUgPSBtX29iamVjdFN0b3Jlc0J5SWRlbnRpZmllci5nZXQob2JqZWN0U3RvcmVJZGVudGlm
aWVyKTsKKyAgICBpZiAoIW9iamVjdFN0b3JlKQorICAgICAgICByZXR1cm4gSURCRXJyb3IoSURC
RXhjZXB0aW9uQ29kZTo6VW5rbm93biwgV1RGOjpBU0NJSUxpdGVyYWwoIk5vIGJhY2tpbmcgc3Rv
cmUgb2JqZWN0IHN0b3JlIGZvdW5kIikpOworCisgICAgb3V0Q291bnQgPSBvYmplY3RTdG9yZS0+
Y291bnRGb3JLZXlSYW5nZShyYW5nZSk7CisgICAgcmV0dXJuIElEQkVycm9yKCk7Cit9CisKIElE
QkVycm9yIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Z2VuZXJhdGVLZXlOdW1iZXIoY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVj
dFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QmIGtleU51bWJlcikKIHsKICAgICBMT0coSW5kZXhl
ZERCLCAiTWVtb3J5SURCQmFja2luZ1N0b3JlOjpnZW5lcmF0ZUtleU51bWJlciIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJh
Y2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01l
bW9yeUlEQkJhY2tpbmdTdG9yZS5oCmluZGV4IDI0NTFhZDkuLmEyOWZjOTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5n
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVt
b3J5SURCQmFja2luZ1N0b3JlLmgKQEAgLTU5LDYgKzU5LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgSURCRXJyb3IgZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJh
bnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0
IElEQktleURhdGEmKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIElEQkVycm9yIHB1dFJl
Y29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwg
dWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBJREJLZXlEYXRhJiwgY29uc3Qg
VGhyZWFkU2FmZURhdGFCdWZmZXImIHZhbHVlKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFs
IElEQkVycm9yIGdldFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0
aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBJREJL
ZXlSYW5nZURhdGEmLCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYgb3V0VmFsdWUpIG92ZXJyaWRlIGZp
bmFsOworICAgIHZpcnR1YWwgSURCRXJyb3IgZ2V0Q291bnQoY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRp
ZmllciwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgdWludDY0X3QmIG91dENvdW50KSBvdmVycmlk
ZSBmaW5hbDsKICAgICB2aXJ0dWFsIElEQkVycm9yIGdlbmVyYXRlS2V5TnVtYmVyKGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90JiBrZXlOdW1iZXIpIG92ZXJyaWRlIGZpbmFsOwog
CiAgICAgdm9pZCByZW1vdmVPYmplY3RTdG9yZUZvclZlcnNpb25DaGFuZ2VBYm9ydChNZW1vcnlP
YmplY3RTdG9yZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHAKaW5kZXggZTMwYTA1Ny4uNmU3
M2FlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L01lbW9yeU9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwCkBAIC0xMzEsMzcgKzEzMSw2OSBAQCB2
b2lkIE1lbW9yeU9iamVjdFN0b3JlOjpzZXRLZXlWYWx1ZShjb25zdCBJREJLZXlEYXRhJiBrZXlE
YXRhLCBjb25zdCBUaHJlYWRTYWZlRAogICAgICAgICBtX29yZGVyZWRLZXlzLT5pbnNlcnQoa2V5
RGF0YSk7CiB9CiAKK3VpbnQ2NF90IE1lbW9yeU9iamVjdFN0b3JlOjpjb3VudEZvcktleVJhbmdl
KGNvbnN0IElEQktleVJhbmdlRGF0YSYgaW5SYW5nZSkgY29uc3QKK3sKKyAgICBMT0coSW5kZXhl
ZERCLCAiTWVtb3J5T2JqZWN0U3RvcmU6OmNvdW50Rm9yS2V5UmFuZ2UiKTsKKworICAgIGlmICgh
bV9rZXlWYWx1ZVN0b3JlKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHVpbnQ2NF90IGNvdW50
ID0gMDsKKyAgICBJREJLZXlSYW5nZURhdGEgcmFuZ2UgPSBpblJhbmdlOworICAgIHdoaWxlICh0
cnVlKSB7CisgICAgICAgIGF1dG8ga2V5ID0gbG93ZXN0S2V5V2l0aFJlY29yZEluUmFuZ2UocmFu
Z2UpOworICAgICAgICBpZiAoa2V5LmlzTnVsbCgpKQorICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgKytjb3VudDsKKyAgICAgICAgcmFuZ2UubG93ZXJLZXkgPSBrZXk7CisgICAgICAgIHJh
bmdlLmxvd2VyT3BlbiA9IHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGNvdW50OworfQorCiBU
aHJlYWRTYWZlRGF0YUJ1ZmZlciBNZW1vcnlPYmplY3RTdG9yZTo6dmFsdWVGb3JLZXlSYW5nZShj
b25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSkgY29uc3QKIHsKICAgICBMT0coSW5k
ZXhlZERCLCAiTWVtb3J5T2JqZWN0U3RvcmU6OnZhbHVlRm9yS2V5Iik7CiAKLSAgICBpZiAoIW1f
a2V5VmFsdWVTdG9yZSkKKyAgICBJREJLZXlEYXRhIGtleSA9IGxvd2VzdEtleVdpdGhSZWNvcmRJ
blJhbmdlKGtleVJhbmdlRGF0YSk7CisgICAgaWYgKGtleS5pc051bGwoKSkKICAgICAgICAgcmV0
dXJuIFRocmVhZFNhZmVEYXRhQnVmZmVyKCk7CiAKLSAgICBpZiAoa2V5UmFuZ2VEYXRhLmlzRXhh
Y3RseU9uZUtleSgpKQotICAgICAgICByZXR1cm4gbV9rZXlWYWx1ZVN0b3JlLT5nZXQoa2V5UmFu
Z2VEYXRhLmxvd2VyS2V5KTsKKyAgICBBU1NFUlQobV9rZXlWYWx1ZVN0b3JlKTsKKyAgICByZXR1
cm4gbV9rZXlWYWx1ZVN0b3JlLT5nZXQoa2V5KTsKK30KKworSURCS2V5RGF0YSBNZW1vcnlPYmpl
Y3RTdG9yZTo6bG93ZXN0S2V5V2l0aFJlY29yZEluUmFuZ2UoY29uc3QgSURCS2V5UmFuZ2VEYXRh
JiBrZXlSYW5nZURhdGEpIGNvbnN0Cit7CisgICAgaWYgKCFtX2tleVZhbHVlU3RvcmUpCisgICAg
ICAgIHJldHVybiB7IH07CisKKyAgICBpZiAoa2V5UmFuZ2VEYXRhLmlzRXhhY3RseU9uZUtleSgp
ICYmIG1fa2V5VmFsdWVTdG9yZS0+Y29udGFpbnMoa2V5UmFuZ2VEYXRhLmxvd2VyS2V5KSkKKyAg
ICAgICAgcmV0dXJuIGtleVJhbmdlRGF0YS5sb3dlcktleTsKIAogICAgIEFTU0VSVChtX29yZGVy
ZWRLZXlzKTsKIAogICAgIGF1dG8gbG93ZXN0SW5SYW5nZSA9IG1fb3JkZXJlZEtleXMtPmxvd2Vy
X2JvdW5kKGtleVJhbmdlRGF0YS5sb3dlcktleSk7CiAKICAgICBpZiAobG93ZXN0SW5SYW5nZSA9
PSBtX29yZGVyZWRLZXlzLT5lbmQoKSkKLSAgICAgICAgcmV0dXJuIFRocmVhZFNhZmVEYXRhQnVm
ZmVyKCk7CisgICAgICAgIHJldHVybiB7IH07CiAKICAgICBpZiAoa2V5UmFuZ2VEYXRhLmxvd2Vy
T3BlbiAmJiAqbG93ZXN0SW5SYW5nZSA9PSBrZXlSYW5nZURhdGEubG93ZXJLZXkpCiAgICAgICAg
ICsrbG93ZXN0SW5SYW5nZTsKIAogICAgIGlmIChsb3dlc3RJblJhbmdlID09IG1fb3JkZXJlZEtl
eXMtPmVuZCgpKQotICAgICAgICByZXR1cm4gVGhyZWFkU2FmZURhdGFCdWZmZXIoKTsKKyAgICAg
ICAgcmV0dXJuIHsgfTsKIAogICAgIGlmICgha2V5UmFuZ2VEYXRhLnVwcGVyS2V5LmlzTnVsbCgp
KSB7CiAgICAgICAgIGlmIChsb3dlc3RJblJhbmdlLT5jb21wYXJlKGtleVJhbmdlRGF0YS51cHBl
cktleSkgPiAwKQotICAgICAgICAgICAgcmV0dXJuIFRocmVhZFNhZmVEYXRhQnVmZmVyKCk7Cisg
ICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICBpZiAoa2V5UmFuZ2VEYXRhLnVwcGVyT3Bl
biAmJiAqbG93ZXN0SW5SYW5nZSA9PSBrZXlSYW5nZURhdGEudXBwZXJLZXkpCi0gICAgICAgICAg
ICByZXR1cm4gVGhyZWFkU2FmZURhdGFCdWZmZXIoKTsKKyAgICAgICAgICAgIHJldHVybiB7IH07
CiAgICAgfQogCi0gICAgcmV0dXJuIG1fa2V5VmFsdWVTdG9yZS0+Z2V0KCpsb3dlc3RJblJhbmdl
KTsKKyAgICByZXR1cm4gKmxvd2VzdEluUmFuZ2U7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIElEQlNl
cnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L01lbW9yeU9iamVjdFN0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaAppbmRleCA1NjY0NmE1Li5mNzQ1M2ZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVt
b3J5T2JqZWN0U3RvcmUuaApAQCAtNjksMTIgKzY5LDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIHJl
cGxhY2VLZXlWYWx1ZVN0b3JlKHN0ZDo6dW5pcXVlX3B0cjxLZXlWYWx1ZU1hcD4mJik7CiAKICAg
ICBUaHJlYWRTYWZlRGF0YUJ1ZmZlciB2YWx1ZUZvcktleVJhbmdlKGNvbnN0IElEQktleVJhbmdl
RGF0YSYpIGNvbnN0OworICAgIHVpbnQ2NF90IGNvdW50Rm9yS2V5UmFuZ2UoY29uc3QgSURCS2V5
UmFuZ2VEYXRhJikgY29uc3Q7CiAKICAgICBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIGluZm8o
KSBjb25zdCB7IHJldHVybiBtX2luZm87IH0KIAogcHJpdmF0ZToKICAgICBNZW1vcnlPYmplY3RT
dG9yZShjb25zdCBJREJPYmplY3RTdG9yZUluZm8mKTsKIAorICAgIElEQktleURhdGEgbG93ZXN0
S2V5V2l0aFJlY29yZEluUmFuZ2UoY29uc3QgSURCS2V5UmFuZ2VEYXRhJikgY29uc3Q7CisKICAg
ICBJREJPYmplY3RTdG9yZUluZm8gbV9pbmZvOwogCiAgICAgTWVtb3J5QmFja2luZ1N0b3JlVHJh
bnNhY3Rpb24qIG1fd3JpdGVUcmFuc2FjdGlvbiB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0
YWJhc2UuY3BwCmluZGV4IDBjYjU5MTguLmUwZThkODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNl
LmNwcApAQCAtMTM2LDIxICsxMzYsMzIgQEAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlVW5pcXVl
Q2FsbGJhY2tJZGVudGlmaWVyKCkKIHVpbnQ2NF90IFVuaXF1ZUlEQkRhdGFiYXNlOjpzdG9yZUNh
bGxiYWNrKEVycm9yQ2FsbGJhY2sgY2FsbGJhY2spCiB7CiAgICAgdWludDY0X3QgaWRlbnRpZmll
ciA9IGdlbmVyYXRlVW5pcXVlQ2FsbGJhY2tJZGVudGlmaWVyKCk7Ci0gICAgbV9lcnJvckNhbGxi
YWNrcy5zZXQoaWRlbnRpZmllciwgY2FsbGJhY2spOworICAgIEFTU0VSVCghbV9lcnJvckNhbGxi
YWNrcy5jb250YWlucyhpZGVudGlmaWVyKSk7CisgICAgbV9lcnJvckNhbGxiYWNrcy5hZGQoaWRl
bnRpZmllciwgY2FsbGJhY2spOwogICAgIHJldHVybiBpZGVudGlmaWVyOwogfQogCiB1aW50NjRf
dCBVbmlxdWVJREJEYXRhYmFzZTo6c3RvcmVDYWxsYmFjayhLZXlEYXRhQ2FsbGJhY2sgY2FsbGJh
Y2spCiB7CiAgICAgdWludDY0X3QgaWRlbnRpZmllciA9IGdlbmVyYXRlVW5pcXVlQ2FsbGJhY2tJ
ZGVudGlmaWVyKCk7Ci0gICAgbV9rZXlEYXRhQ2FsbGJhY2tzLnNldChpZGVudGlmaWVyLCBjYWxs
YmFjayk7CisgICAgQVNTRVJUKCFtX2tleURhdGFDYWxsYmFja3MuY29udGFpbnMoaWRlbnRpZmll
cikpOworICAgIG1fa2V5RGF0YUNhbGxiYWNrcy5hZGQoaWRlbnRpZmllciwgY2FsbGJhY2spOwog
ICAgIHJldHVybiBpZGVudGlmaWVyOwogfQogCiB1aW50NjRfdCBVbmlxdWVJREJEYXRhYmFzZTo6
c3RvcmVDYWxsYmFjayhWYWx1ZURhdGFDYWxsYmFjayBjYWxsYmFjaykKIHsKICAgICB1aW50NjRf
dCBpZGVudGlmaWVyID0gZ2VuZXJhdGVVbmlxdWVDYWxsYmFja0lkZW50aWZpZXIoKTsKLSAgICBt
X3ZhbHVlRGF0YUNhbGxiYWNrcy5zZXQoaWRlbnRpZmllciwgY2FsbGJhY2spOworICAgIEFTU0VS
VCghbV92YWx1ZURhdGFDYWxsYmFja3MuY29udGFpbnMoaWRlbnRpZmllcikpOworICAgIG1fdmFs
dWVEYXRhQ2FsbGJhY2tzLmFkZChpZGVudGlmaWVyLCBjYWxsYmFjayk7CisgICAgcmV0dXJuIGlk
ZW50aWZpZXI7Cit9CisKK3VpbnQ2NF90IFVuaXF1ZUlEQkRhdGFiYXNlOjpzdG9yZUNhbGxiYWNr
KENvdW50Q2FsbGJhY2sgY2FsbGJhY2spCit7CisgICAgdWludDY0X3QgaWRlbnRpZmllciA9IGdl
bmVyYXRlVW5pcXVlQ2FsbGJhY2tJZGVudGlmaWVyKCk7CisgICAgQVNTRVJUKCFtX2NvdW50Q2Fs
bGJhY2tzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKyAgICBtX2NvdW50Q2FsbGJhY2tzLmFkZChp
ZGVudGlmaWVyLCBjYWxsYmFjayk7CiAgICAgcmV0dXJuIGlkZW50aWZpZXI7CiB9CiAKQEAgLTQz
MSw2ICs0NDIsMzcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybUdldFJlY29y
ZCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IEkKICAgICBwZXJmb3JtVmFsdWVE
YXRhQ2FsbGJhY2soY2FsbGJhY2tJZGVudGlmaWVyLCBlcnJvciwgcmVzdWx0RGF0YSk7CiB9CiAK
K3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmdldENvdW50KGNvbnN0IElEQlJlcXVlc3REYXRhJiBy
ZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSwgQ291bnRDYWxsYmFjayBj
YWxsYmFjaykKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIExPRyhJbmRleGVk
REIsICIobWFpbikgVW5pcXVlSURCRGF0YWJhc2U6OmdldENvdW50Iik7CisKKyAgICB1aW50NjRf
dCBjYWxsYmFja0lEID0gc3RvcmVDYWxsYmFjayhjYWxsYmFjayk7CisgICAgbV9zZXJ2ZXIucG9z
dERhdGFiYXNlVGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRh
YmFzZTo6cGVyZm9ybUdldENvdW50LCBjYWxsYmFja0lELCByZXF1ZXN0RGF0YS50cmFuc2FjdGlv
bklkZW50aWZpZXIoKSwgcmVxdWVzdERhdGEub2JqZWN0U3RvcmVJZGVudGlmaWVyKCksIHJhbmdl
KSk7Cit9CisKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1HZXRDb3VudCh1aW50NjRf
dCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNh
Y3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IElE
QktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhKQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFk
KCkpOworICAgIExPRyhJbmRleGVkREIsICIoZGIpIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3Jt
R2V0Q291bnQiKTsKKworICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CisgICAgQVNTRVJUKG9i
amVjdFN0b3JlSWRlbnRpZmllcik7CisKKyAgICB1aW50NjRfdCBjb3VudDsKKyAgICBJREJFcnJv
ciBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5nZXRDb3VudCh0cmFuc2FjdGlvbklkZW50aWZpZXIs
IG9iamVjdFN0b3JlSWRlbnRpZmllciwga2V5UmFuZ2VEYXRhLCBjb3VudCk7CisKKyAgICBtX3Nl
cnZlci5wb3N0RGF0YWJhc2VUYXNrUmVwbHkoY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAm
VW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1HZXRDb3VudCwgY2FsbGJhY2tJZGVudGlmaWVy
LCBlcnJvciwgY291bnQpKTsKK30KKwordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9y
bUdldENvdW50KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImIGVy
cm9yLCB1aW50NjRfdCBjb3VudCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
IExPRyhJbmRleGVkREIsICIobWFpbikgVW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1HZXRD
b3VudCIpOworCisgICAgcGVyZm9ybUNvdW50Q2FsbGJhY2soY2FsbGJhY2tJZGVudGlmaWVyLCBl
cnJvciwgY291bnQpOworfQorCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjb21taXRUcmFuc2Fj
dGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgRXJyb3JDYWxs
YmFjayBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAtNzAxLDYg
Kzc0MywxMyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtVmFsdWVEYXRhQ2FsbGJh
Y2sodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjbwogICAgIGNhbGxiYWNrKGVycm9yLCBy
ZXN1bHREYXRhKTsKIH0KIAordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUNvdW50Q2Fs
bGJhY2sodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJFcnJvciYgZXJyb3Is
IHVpbnQ2NF90IGNvdW50KQoreworICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NvdW50Q2FsbGJhY2tz
LnRha2UoY2FsbGJhY2tJZGVudGlmaWVyKTsKKyAgICBBU1NFUlQoY2FsbGJhY2spOworICAgIGNh
bGxiYWNrKGVycm9yLCBjb3VudCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIElEQlNlcnZlcgogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCmluZGV4IGI1Y2ZkYzku
LjFjODgxMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCkBAIC01Niw2ICs1Niw3IEBAIGNsYXNz
IElEQlNlcnZlcjsKIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IElEQkVycm9yJik+
IEVycm9yQ2FsbGJhY2s7CiB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBJREJFcnJv
ciYsIGNvbnN0IElEQktleURhdGEmKT4gS2V5RGF0YUNhbGxiYWNrOwogdHlwZWRlZiBzdGQ6OmZ1
bmN0aW9uPHZvaWQoY29uc3QgSURCRXJyb3ImLCBjb25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYp
PiBWYWx1ZURhdGFDYWxsYmFjazsKK3R5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IElE
QkVycm9yJiwgdWludDY0X3QpPiBDb3VudENhbGxiYWNrOwogCiBjbGFzcyBVbmlxdWVJREJEYXRh
YmFzZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxVbmlxdWVJREJEYXRhYmFzZT4gewog
cHVibGljOgpAQCAtNzQsNiArNzUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhck9iamVjdFN0
b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCB1aW50NjRfdCBvYmplY3RTdG9yZUlk
ZW50aWZpZXIsIEVycm9yQ2FsbGJhY2spOwogICAgIHZvaWQgcHV0T3JBZGQoY29uc3QgSURCUmVx
dWVzdERhdGEmLCBjb25zdCBJREJLZXlEYXRhJiwgY29uc3QgVGhyZWFkU2FmZURhdGFCdWZmZXIm
IHZhbHVlRGF0YSwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUsIEtleURhdGFD
YWxsYmFjayk7CiAgICAgdm9pZCBnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25z
dCBJREJLZXlSYW5nZURhdGEmLCBWYWx1ZURhdGFDYWxsYmFjayk7CisgICAgdm9pZCBnZXRDb3Vu
dChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIENvdW50Q2Fs
bGJhY2spOwogICAgIHZvaWQgY29tbWl0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbiYsIEVycm9yQ2FsbGJhY2spOwogICAgIHZvaWQgYWJvcnRUcmFuc2FjdGlvbihVbmlx
dWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgRXJyb3JDYWxsYmFjayk7CiAgICAgdm9pZCB0cmFu
c2FjdGlvbkRlc3Ryb3llZChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJik7CkBAIC0xMDQs
NiArMTA2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBlcmZvcm1DbGVhck9iamVjdFN0b3JlKHVp
bnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0
cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcik7CiAg
ICAgdm9pZCBwZXJmb3JtUHV0T3JBZGQodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qg
b2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBJREJLZXlEYXRhJiwgY29uc3QgVGhyZWFkU2Fm
ZURhdGFCdWZmZXImIHZhbHVlRGF0YSwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1v
ZGUpOwogICAgIHZvaWQgcGVyZm9ybUdldFJlY29yZCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZp
ZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1
aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOwor
ICAgIHZvaWQgcGVyZm9ybUdldENvdW50KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90
IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7CiAgICAgdm9p
ZCBwZXJmb3JtQWN0aXZhdGVUcmFuc2FjdGlvbkluQmFja2luZ1N0b3JlKHVpbnQ2NF90IGNhbGxi
YWNrSWRlbnRpZmllciwgY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJik7CiAKICAgICAvLyBNYWlu
IHRocmVhZCBjYWxsYmFja3MKQEAgLTExMyw2ICsxMTYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGlkUGVyZm9ybUNsZWFyT2JqZWN0U3RvcmUodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBj
b25zdCBJREJFcnJvciYpOwogICAgIHZvaWQgZGlkUGVyZm9ybVB1dE9yQWRkKHVpbnQ2NF90IGNh
bGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImLCBjb25zdCBJREJLZXlEYXRhJik7CiAg
ICAgdm9pZCBkaWRQZXJmb3JtR2V0UmVjb3JkKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwg
Y29uc3QgSURCRXJyb3ImLCBjb25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYpOworICAgIHZvaWQg
ZGlkUGVyZm9ybUdldENvdW50KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURC
RXJyb3ImLCB1aW50NjRfdCk7CiAgICAgdm9pZCBkaWRQZXJmb3JtQ29tbWl0VHJhbnNhY3Rpb24o
dWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJFcnJvciYsIGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZFBl
cmZvcm1BYm9ydFRyYW5zYWN0aW9uKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3Qg
SURCRXJyb3ImLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRp
Zmllcik7CiAgICAgdm9pZCBkaWRQZXJmb3JtQWN0aXZhdGVUcmFuc2FjdGlvbkluQmFja2luZ1N0
b3JlKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImKTsKQEAgLTEy
MCwxMCArMTI0LDEyIEBAIHByaXZhdGU6CiAgICAgdWludDY0X3Qgc3RvcmVDYWxsYmFjayhFcnJv
ckNhbGxiYWNrKTsKICAgICB1aW50NjRfdCBzdG9yZUNhbGxiYWNrKEtleURhdGFDYWxsYmFjayk7
CiAgICAgdWludDY0X3Qgc3RvcmVDYWxsYmFjayhWYWx1ZURhdGFDYWxsYmFjayk7CisgICAgdWlu
dDY0X3Qgc3RvcmVDYWxsYmFjayhDb3VudENhbGxiYWNrKTsKIAogICAgIHZvaWQgcGVyZm9ybUVy
cm9yQ2FsbGJhY2sodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJFcnJvciYp
OwogICAgIHZvaWQgcGVyZm9ybUtleURhdGFDYWxsYmFjayh1aW50NjRfdCBjYWxsYmFja0lkZW50
aWZpZXIsIGNvbnN0IElEQkVycm9yJiwgY29uc3QgSURCS2V5RGF0YSYpOwogICAgIHZvaWQgcGVy
Zm9ybVZhbHVlRGF0YUNhbGxiYWNrKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3Qg
SURCRXJyb3ImLCBjb25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYpOworICAgIHZvaWQgcGVyZm9y
bUNvdW50Q2FsbGJhY2sodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJFcnJv
ciYsIHVpbnQ2NF90KTsKIAogICAgIHZvaWQgaW52b2tlVHJhbnNhY3Rpb25TY2hlZHVsZXIoKTsK
ICAgICB2b2lkIHRyYW5zYWN0aW9uU2NoZWR1bGluZ1RpbWVyRmlyZWQoKTsKQEAgLTE0Nyw2ICsx
NTMsNyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8dWludDY0X3QsIEVycm9yQ2FsbGJhY2s+IG1f
ZXJyb3JDYWxsYmFja3M7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgS2V5RGF0YUNhbGxiYWNrPiBt
X2tleURhdGFDYWxsYmFja3M7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgVmFsdWVEYXRhQ2FsbGJh
Y2s+IG1fdmFsdWVEYXRhQ2FsbGJhY2tzOworICAgIEhhc2hNYXA8dWludDY0X3QsIENvdW50Q2Fs
bGJhY2s+IG1fY291bnRDYWxsYmFja3M7CiAKICAgICBUaW1lciBtX3RyYW5zYWN0aW9uU2NoZWR1
bGluZ1RpbWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5j
cHAKaW5kZXggZDYwMTQxZi4uY2ZmZDI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uLmNwcApAQCAtMTgxLDYgKzE4MSwyMyBAQCB2b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb246OmdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVz
dERhdGEsCiAgICAgfSk7CiB9CiAKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6
Z2V0Q291bnQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlS
YW5nZURhdGEmIGtleVJhbmdlRGF0YSkKK3sKKyAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURC
RGF0YWJhc2VUcmFuc2FjdGlvbjo6Z2V0Q291bnQiKTsKKworICAgIEFTU0VSVChtX3RyYW5zYWN0
aW9uSW5mby5pZGVudGlmaWVyKCkgPT0gcmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVy
KCkpOworCisgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+IHNlbGYodGhp
cyk7CisgICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRhdGFiYXNlKCkuZ2V0Q291bnQocmVxdWVz
dERhdGEsIGtleVJhbmdlRGF0YSwgW3RoaXMsIHNlbGYsIHJlcXVlc3REYXRhXShjb25zdCBJREJF
cnJvciYgZXJyb3IsIHVpbnQ2NF90IGNvdW50KSB7CisgICAgICAgIExPRyhJbmRleGVkREIsICJV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpnZXRDb3VudCAoY2FsbGJhY2spIik7CisKKyAg
ICAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQorICAgICAgICAgICAgbV9kYXRhYmFzZUNvbm5lY3Rp
b24tPmNvbm5lY3Rpb25Ub0NsaWVudCgpLmRpZEdldENvdW50KElEQlJlc3VsdERhdGE6OmdldENv
dW50U3VjY2VzcyhyZXF1ZXN0RGF0YS5yZXF1ZXN0SWRlbnRpZmllcigpLCBjb3VudCkpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBtX2RhdGFiYXNlQ29ubmVjdGlvbi0+Y29ubmVjdGlvblRv
Q2xpZW50KCkuZGlkR2V0Q291bnQoSURCUmVzdWx0RGF0YTo6ZXJyb3IocmVxdWVzdERhdGEucmVx
dWVzdElkZW50aWZpZXIoKSwgZXJyb3IpKTsKKyAgICB9KTsKK30KKwogY29uc3QgVmVjdG9yPHVp
bnQ2NF90PiYgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmVJZGVudGlm
aWVycygpCiB7CiAgICAgaWYgKCFtX29iamVjdFN0b3JlSWRlbnRpZmllcnMuaXNFbXB0eSgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmgKaW5kZXggYzNlZDNmNy4u
OTM0OGI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oCkBA
IC02OSw2ICs2OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyT2JqZWN0U3RvcmUoY29uc3Qg
SURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpOwogICAgIHZv
aWQgcHV0T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlEYXRhJiwgY29u
c3QgVGhyZWFkU2FmZURhdGFCdWZmZXImIHZhbHVlRGF0YSwgSW5kZXhlZERCOjpPYmplY3RTdG9y
ZU92ZXJ3cml0ZU1vZGUpOwogICAgIHZvaWQgZ2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRh
JiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7CisgICAgdm9pZCBnZXRDb3VudChjb25zdCBJREJS
ZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOwogCiAgICAgdm9pZCBkaWRBY3Rp
dmF0ZUluQmFja2luZ1N0b3JlKGNvbnN0IElEQkVycm9yJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcApp
bmRleCAyY2Y1YzNkLi41NDIyM2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuY3BwCkBAIC01MCw2ICs1MCw3
IEBAIElEQlJlc3VsdERhdGE6OklEQlJlc3VsdERhdGEoY29uc3QgSURCUmVzdWx0RGF0YSYgb3Ro
ZXIpCiAgICAgLCBtX3JlcXVlc3RJZGVudGlmaWVyKG90aGVyLm1fcmVxdWVzdElkZW50aWZpZXIp
CiAgICAgLCBtX2Vycm9yKG90aGVyLm1fZXJyb3IpCiAgICAgLCBtX2RhdGFiYXNlQ29ubmVjdGlv
bklkZW50aWZpZXIob3RoZXIubV9kYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKQorICAgICwg
bV9yZXN1bHRJbnRlZ2VyKG90aGVyLm1fcmVzdWx0SW50ZWdlcikKICAgICAsIG1fcmVzdWx0RGF0
YShvdGhlci5tX3Jlc3VsdERhdGEpCiB7CiAgICAgaWYgKG90aGVyLm1fZGF0YWJhc2VJbmZvKQpA
QCAtMTE3LDYgKzExOCwxMyBAQCBJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6OmdldFJlY29y
ZFN1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZQogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKK0lEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6Z2V0Q291bnRTdWNjZXNz
KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90
IGNvdW50KQoreworICAgIElEQlJlc3VsdERhdGEgcmVzdWx0KElEQlJlc3VsdFR5cGU6OkdldFJl
Y29yZFN1Y2Nlc3MsIHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICByZXN1bHQubV9yZXN1bHRJbnRl
Z2VyID0gY291bnQ7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogY29uc3QgSURCRGF0YWJhc2VJ
bmZvJiBJREJSZXN1bHREYXRhOjpkYXRhYmFzZUluZm8oKSBjb25zdAogewogICAgIFJFTEVBU0Vf
QVNTRVJUKG1fZGF0YWJhc2VJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5oCmluZGV4IDlkNjUzMTYuLjNlODlm
ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9J
REJSZXN1bHREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hh
cmVkL0lEQlJlc3VsdERhdGEuaApAQCAtNDksNiArNDksNyBAQCBlbnVtIGNsYXNzIElEQlJlc3Vs
dFR5cGUgewogICAgIENsZWFyT2JqZWN0U3RvcmVTdWNjZXNzLAogICAgIFB1dE9yQWRkU3VjY2Vz
cywKICAgICBHZXRSZWNvcmRTdWNjZXNzLAorICAgIEdldENvdW50U3VjY2VzcywKIH07CiAKIG5h
bWVzcGFjZSBJREJTZXJ2ZXIgewpAQCAtNjYsNiArNjcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IElEQlJlc3VsdERhdGEgY2xlYXJPYmplY3RTdG9yZVN1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJik7CiAgICAgc3RhdGljIElEQlJlc3VsdERhdGEgcHV0T3JBZGRTdWNjZXNzKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYsIGNvbnN0IElEQktleURhdGEmKTsKICAgICBzdGF0
aWMgSURCUmVzdWx0RGF0YSBnZXRSZWNvcmRTdWNjZXNzKGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmllciYsIGNvbnN0IFRocmVhZFNhZmVEYXRhQnVmZmVyJiB2YWx1ZURhdGEpOworICAgIHN0YXRp
YyBJREJSZXN1bHREYXRhIGdldENvdW50U3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZp
ZXImLCB1aW50NjRfdCBjb3VudCk7CiAKICAgICBJREJSZXN1bHREYXRhKGNvbnN0IElEQlJlc3Vs
dERhdGEmKTsKIApAQCAtODAsNiArODIsNyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBJREJLZXlE
YXRhKiByZXN1bHRLZXkoKSBjb25zdCB7IHJldHVybiBtX3Jlc3VsdEtleS5nZXQoKTsgfQogICAg
IGNvbnN0IFRocmVhZFNhZmVEYXRhQnVmZmVyJiByZXN1bHREYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9yZXN1bHREYXRhOyB9CisgICAgdWludDY0X3QgcmVzdWx0SW50ZWdlcigpIGNvbnN0IHsgcmV0
dXJuIG1fcmVzdWx0SW50ZWdlcjsgfQogCiBwcml2YXRlOgogICAgIElEQlJlc3VsdERhdGEoY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJik7CkBAIC05Myw2ICs5Niw3IEBAIHByaXZhdGU6CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gbV9kYXRhYmFzZUluZm87CiAgICAg
c3RkOjp1bmlxdWVfcHRyPElEQlRyYW5zYWN0aW9uSW5mbz4gbV90cmFuc2FjdGlvbkluZm87CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPElEQktleURhdGE+IG1fcmVzdWx0S2V5OworICAgIHVpbnQ2NF90
IG1fcmVzdWx0SW50ZWdlciB7IDAgfQogICAgIFRocmVhZFNhZmVEYXRhQnVmZmVyIG1fcmVzdWx0
RGF0YTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKaW5kZXggODBkNzIxYi4uNDcw
NjMyYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCkBAIC0xNTksNiArMTU5LDE0IEBA
IHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRHZXRSZWNvcmQoY29uc3QgSURCUmVzdWx0RGF0
YSYgcmVzdWx0RGF0YSkKICAgICB9KTsKIH0KIAordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRp
ZEdldENvdW50KGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgUmVmUHRy
PEluUHJvY2Vzc0lEQlNlcnZlcj4gc2VsZih0aGlzKTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCku
ZGlzcGF0Y2goW3RoaXMsIHNlbGYsIHJlc3VsdERhdGFdIHsKKyAgICAgICAgbV9jb25uZWN0aW9u
VG9TZXJ2ZXItPmRpZEdldENvdW50KHJlc3VsdERhdGEpOworICAgIH0pOworfQorCiB2b2lkIElu
UHJvY2Vzc0lEQlNlcnZlcjo6YWJvcnRUcmFuc2FjdGlvbihJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHJlc291cmNlSWRlbnRpZmllcikKIHsKICAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBz
ZWxmKHRoaXMpOwpAQCAtMjE5LDYgKzIyNywxMyBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6
Z2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCSwog
ICAgIH0pOwogfQogCit2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6Z2V0Q291bnQoY29uc3QgSURC
UmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdl
RGF0YSkKK3sKKyAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBzZWxmKHRoaXMpOworICAg
IFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgc2VsZiwgcmVxdWVzdERhdGEsIGtl
eVJhbmdlRGF0YV0geworICAgICAgICBtX3NlcnZlci0+Z2V0Q291bnQocmVxdWVzdERhdGEsIGtl
eVJhbmdlRGF0YSk7CisgICAgfSk7Cit9CiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZXN0YWJs
aXNoVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29u
c3QgSURCVHJhbnNhY3Rpb25JbmZvJiBpbmZvKQogewogICAgIFJlZlB0cjxJblByb2Nlc3NJREJT
ZXJ2ZXI+IHNlbGYodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmgKaW5kZXggNDA4YmYxNi4u
NTJlNzgyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hh
cmVkL0luUHJvY2Vzc0lEQlNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuaApAQCAtNjMsNiArNjMsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERh
dGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpIG92ZXJyaWRlIGZpbmFsOwogICAg
IHZpcnR1YWwgdm9pZCBwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIElEQktleSosIFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSYsIGNvbnN0IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3Jp
dGVNb2RlKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UmVjb3JkKGNvbnN0
IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJikgb3ZlcnJpZGUgZmluYWw7
CisgICAgdmlydHVhbCB2b2lkIGdldENvdW50KGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3Qg
SURCS2V5UmFuZ2VEYXRhJikgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCB2b2lkIGVzdGFi
bGlzaFRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNv
bnN0IElEQlRyYW5zYWN0aW9uSW5mbyYpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgdm9p
ZCBkYXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRl
bnRpZmllcikgb3ZlcnJpZGUgZmluYWw7CiAKQEAgLTc3LDYgKzc4LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBkaWRDbGVhck9iamVjdFN0b3JlKGNvbnN0IElEQlJlc3VsdERhdGEmKSBv
dmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUHV0T3JBZGQoY29uc3QgSURCUmVz
dWx0RGF0YSYpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCBkaWRHZXRSZWNvcmQo
Y29uc3QgSURCUmVzdWx0RGF0YSYpIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgdm9pZCBk
aWRHZXRDb3VudChjb25zdCBJREJSZXN1bHREYXRhJikgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmly
dHVhbCB2b2lkIGZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoSURCU2VydmVyOjpVbmlxdWVJREJEYXRh
YmFzZUNvbm5lY3Rpb24mLCB1aW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uKSBvdmVycmlkZSBmaW5h
bDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImKSBvdmVy
cmlkZSBmaW5hbDsKIAo=
</data>
<flag name="commit-queue"
          id="289661"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264550</attachid>
            <date>2015-11-01 19:11:43 -0800</date>
            <delta_ts>2015-11-01 22:05:16 -0800</delta_ts>
            <desc>Patch for landing v2</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>50574</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxMDc0ZmFlLi41M2E3YzFmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTUtMTEt
MDEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1vZGVybiBJ
REI6IElCRE9iamVjdFN0b3JlLmNvdW50KCkgc3VwcG9ydC4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDc4NQorCisgICAgICAgIFJldmlld2VkIGJ5
IERhcmluIEFkbGVyLgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9i
amVjdHN0b3JlLWNvdW50LTEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtY291bnQtMS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtY291bnQtZmFp
bHVyZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9t
b2Rlcm4vaWRib2JqZWN0c3RvcmUtY291bnQtZmFpbHVyZXMuaHRtbDogQWRkZWQuCisKIDIwMTUt
MTEtMDEgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlLWxhbmQg
YSBwaWVjZSBvZiB0aGUgcGF0Y2ggZm9yOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLWNvdW50LTEtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLWNvdW50
LTEtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4MTMz
N2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rl
cm4vaWRib2JqZWN0c3RvcmUtY291bnQtMS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1NCBAQAor
QUxFUlQ6IEluaXRpYWwgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gMCBOZXcgdmVyc2lv
biAtIDEKK0FMRVJUOiBDb3VudCBpczogMQorQUxFUlQ6IENvdW50IGlzOiAwCitBTEVSVDogQ291
bnQgaXM6IDAKK0FMRVJUOiBDb3VudCBpczogMAorQUxFUlQ6IENvdW50IGlzOiAwCitBTEVSVDog
Q291bnQgaXM6IDIKK0FMRVJUOiBDb3VudCBpczogMAorQUxFUlQ6IENvdW50IGlzOiAwCitBTEVS
VDogQ291bnQgaXM6IDAKK0FMRVJUOiBDb3VudCBpczogMAorQUxFUlQ6IENvdW50IGlzOiAzCitB
TEVSVDogQ291bnQgaXM6IDEKK0FMRVJUOiBDb3VudCBpczogMAorQUxFUlQ6IENvdW50IGlzOiAx
CitBTEVSVDogQ291bnQgaXM6IDAKK0FMRVJUOiBDb3VudCBpczogNAorQUxFUlQ6IENvdW50IGlz
OiAyCitBTEVSVDogQ291bnQgaXM6IDEKK0FMRVJUOiBDb3VudCBpczogMgorQUxFUlQ6IENvdW50
IGlzOiAwCitBTEVSVDogQ291bnQgaXM6IDUKK0FMRVJUOiBDb3VudCBpczogMworQUxFUlQ6IENv
dW50IGlzOiAyCitBTEVSVDogQ291bnQgaXM6IDMKK0FMRVJUOiBDb3VudCBpczogMAorQUxFUlQ6
IENvdW50IGlzOiA2CitBTEVSVDogQ291bnQgaXM6IDQKK0FMRVJUOiBDb3VudCBpczogMworQUxF
UlQ6IENvdW50IGlzOiAzCitBTEVSVDogQ291bnQgaXM6IDAKK0FMRVJUOiBDb3VudCBpczogNwor
QUxFUlQ6IENvdW50IGlzOiA0CitBTEVSVDogQ291bnQgaXM6IDMKK0FMRVJUOiBDb3VudCBpczog
MworQUxFUlQ6IENvdW50IGlzOiAxCitBTEVSVDogQ291bnQgaXM6IDgKK0FMRVJUOiBDb3VudCBp
czogNAorQUxFUlQ6IENvdW50IGlzOiAzCitBTEVSVDogQ291bnQgaXM6IDMKK0FMRVJUOiBDb3Vu
dCBpczogMQorQUxFUlQ6IENvdW50IGlzOiA5CitBTEVSVDogQ291bnQgaXM6IDQKK0FMRVJUOiBD
b3VudCBpczogMworQUxFUlQ6IENvdW50IGlzOiAzCitBTEVSVDogQ291bnQgaXM6IDEKK0FMRVJU
OiBDb3VudCBpczogMTAKK0FMRVJUOiBDb3VudCBpczogNAorQUxFUlQ6IENvdW50IGlzOiAzCitB
TEVSVDogQ291bnQgaXM6IDMKK0FMRVJUOiBDb3VudCBpczogMQorQUxFUlQ6IEluaXRpYWwgdXBn
cmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRlCitBTEVSVDogRG9uZQorVGhp
cyB0ZXN0IGV4ZXJjaXNlcyB2YXJpb3VzIHVzZXMgb2YgSURCT2JqZWN0U3RvcmUuY291bnQoKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVj
dHN0b3JlLWNvdW50LTEuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVy
bi9pZGJvYmplY3RzdG9yZS1jb3VudC0xLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uY2RmOTQyZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1jb3VudC0xLmh0bWwKQEAgLTAsMCArMSw5
MiBAQAorVGhpcyB0ZXN0IGV4ZXJjaXNlcyB2YXJpb3VzIHVzZXMgb2YgSURCT2JqZWN0U3RvcmUu
Y291bnQoKQorPHNjcmlwdD4KKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cit9CisK
K2Z1bmN0aW9uIGRvbmUoKQoreworICAgIGFsZXJ0KCJEb25lIik7CisgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKwordmFyIGNy
ZWF0ZVJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIklEQk9iamVjdFN0b3JlQ291bnQx
RGF0YWJhc2UiLCAxKTsKK3ZhciBkYXRhYmFzZTsKK3ZhciBvYmplY3RTdG9yZTsKKworZnVuY3Rp
b24gZ2V0Q291bnQoYXJnKQoreworICAgIHZhciByZXF1ZXN0OworICAgIGlmIChhcmcgPT0gdW5k
ZWZpbmVkKQorICAgICAgICByZXF1ZXN0ID0gb2JqZWN0U3RvcmUuY291bnQoKTsKKyAgICBlbHNl
CisgICAgICAgIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5jb3VudChhcmcpOworICAgIAorICAgIHJl
cXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGFsZXJ0KCJDb3VudCBpczog
IiArIHJlcXVlc3QucmVzdWx0KTsKKyAgICB9CisgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rp
b24oZXJyb3IpIHsKKyAgICAgICAgYWxlcnQoIlVuZXhwZWN0ZWQgZXJyb3IgZ2V0dGluZyBjb3Vu
dDogIiArIGVycm9yKTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KK30KKworZnVuY3Rpb24gZ2V0
Q291bnRzKCkKK3sKKyAgICBnZXRDb3VudCgpOworICAgIGdldENvdW50KElEQktleVJhbmdlLmJv
dW5kKDMsIDYpKTsgICAgCisgICAgZ2V0Q291bnQoSURCS2V5UmFuZ2UuYm91bmQoMywgNiwgdHJ1
ZSwgZmFsc2UpKTsgICAgCisgICAgZ2V0Q291bnQoSURCS2V5UmFuZ2UuYm91bmQoMywgNiwgZmFs
c2UsIHRydWUpKTsKKyAgICBnZXRDb3VudCg3KTsgICAgCit9CisKK2NyZWF0ZVJlcXVlc3Qub251
cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBhbGVydCgiSW5pdGlhbCB1cGdy
YWRlIG5lZWRlZDogT2xkIHZlcnNpb24gLSAiICsgZXZlbnQub2xkVmVyc2lvbiArICIgTmV3IHZl
cnNpb24gLSAiICsgZXZlbnQubmV3VmVyc2lvbik7CisKKyAgICB2YXIgdmVyc2lvblRyYW5zYWN0
aW9uID0gY3JlYXRlUmVxdWVzdC50cmFuc2FjdGlvbjsKKyAgICBkYXRhYmFzZSA9IGV2ZW50LnRh
cmdldC5yZXN1bHQ7CisgICAgb2JqZWN0U3RvcmUgPSBkYXRhYmFzZS5jcmVhdGVPYmplY3RTdG9y
ZSgiVGVzdE9iamVjdFN0b3JlIik7CisgICAgCisgICAgb2JqZWN0U3RvcmUucHV0KDEsIDEpOwor
ICAgIGdldENvdW50cygpOworICAgIG9iamVjdFN0b3JlLnB1dCgyLCAyKTsKKyAgICBnZXRDb3Vu
dHMoKTsKKyAgICBvYmplY3RTdG9yZS5wdXQoMywgMyk7CisgICAgZ2V0Q291bnRzKCk7CisgICAg
b2JqZWN0U3RvcmUucHV0KDQsIDQpOworICAgIGdldENvdW50cygpOworICAgIG9iamVjdFN0b3Jl
LnB1dCg1LCA1KTsKKyAgICBnZXRDb3VudHMoKTsKKyAgICBvYmplY3RTdG9yZS5wdXQoNiwgNik7
CisgICAgZ2V0Q291bnRzKCk7CisgICAgb2JqZWN0U3RvcmUucHV0KDcsIDcpOworICAgIGdldENv
dW50cygpOworICAgIG9iamVjdFN0b3JlLnB1dCg4LCA4KTsKKyAgICBnZXRDb3VudHMoKTsKKyAg
ICBvYmplY3RTdG9yZS5wdXQoOSwgOSk7CisgICAgZ2V0Q291bnRzKCk7CisgICAgb2JqZWN0U3Rv
cmUucHV0KDEwLCAxMCk7CisgICAgZ2V0Q291bnRzKCk7CisKKyAgICAvLyBGSVhNRTogT25jZSBv
YmplY3RTdG9yZS5kZWxldGUoKSBpcyBpbXBsZW1lbnRlZCwgYWxzbyB0ZXN0IGNvdW50cyBhZnRl
ciBkZWxldGluZyBwcmV2aW91cyByZWNvcmRzLgorICAgIAorICAgIHZlcnNpb25UcmFuc2FjdGlv
bi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgYWxlcnQoIkluaXRpYWwgdXBn
cmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnQiKTsKKyAgICAg
ICAgZG9uZSgpOworICAgIH0KKworICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmNvbXBsZXRlID0g
ZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgYWxlcnQoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9u
Y2hhbmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRlIik7CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisK
KyAgICB2ZXJzaW9uVHJhbnNhY3Rpb24ub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAg
ICAgIGFsZXJ0KCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiB1bmV4
cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KK30KKworPC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4v
aWRib2JqZWN0c3RvcmUtY291bnQtZmFpbHVyZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLWNvdW50LWZhaWx1cmVzLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODNhNjgwCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lk
Ym9iamVjdHN0b3JlLWNvdW50LWZhaWx1cmVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAK
K0FMRVJUOiBJbml0aWFsIHVwZ3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtIDAgTmV3IHZlcnNp
b24gLSAxCitBTEVSVDogRmFpbGVkIHRvIGNvdW50IHJlY29yZHMgaW4gb2JqZWN0IHN0b3JlIHdp
dGggYW4gaW52YWxpZCBrZXkKK0FMRVJUOiBGYWlsZWQgdG8gY291bnQgcmVjb3JkcyBpbiBvYmpl
Y3Qgc3RvcmUgdGhhdCdzIGJlZW4gZGVsZXRlZAorQUxFUlQ6IEluaXRpYWwgdXBncmFkZSB2ZXJz
aW9uY2hhbmdlIHRyYW5zYWN0aW9uIGNvbXBsZXRlCitBTEVSVDogRmFpbGVkIHRvIGNvdW50IHJl
Y29yZHMgaW4gb2JqZWN0IHN0b3JlIHdoaWxlIHRyYW5zYWN0aW9uIGlzIGluYWN0aXZlCitBTEVS
VDogcmVhZG9ubHkgdHJhbnNhY3Rpb24gY29tcGxldGUKK0FMRVJUOiBEb25lCitUaGlzIHRlc3Rz
IHNvbWUgb2J2aW91cyBmYWlsdXJlcyB0aGF0IGNhbiBoYXBwZW4gd2hpbGUgY2FsbGluZyBJREJP
YmplY3RTdG9yZS5jb3VudCgpLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLWNvdW50LWZhaWx1cmVzLmh0bWwgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtY291bnQtZmFpbHVy
ZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzlmNTc4Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9i
amVjdHN0b3JlLWNvdW50LWZhaWx1cmVzLmh0bWwKQEAgLTAsMCArMSw5OCBAQAorVGhpcyB0ZXN0
cyBzb21lIG9idmlvdXMgZmFpbHVyZXMgdGhhdCBjYW4gaGFwcGVuIHdoaWxlIGNhbGxpbmcgSURC
T2JqZWN0U3RvcmUuY291bnQoKS4KKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikg
eworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOworfQorCitmdW5jdGlvbiBkb25lKCkKK3sKKyAgICBhbGVydCgiRG9uZSIpOworICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
Cit9CisKK3ZhciBjcmVhdGVSZXF1ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJJREJPYmpl
Y3RTdG9yZUNvdW50RmFpbHVyZXNEYXRhYmFzZSIsIDEpOwordmFyIGRhdGFiYXNlOworCitjcmVh
dGVSZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgYWxlcnQo
IkluaXRpYWwgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gIiArIGV2ZW50Lm9sZFZlcnNp
b24gKyAiIE5ldyB2ZXJzaW9uIC0gIiArIGV2ZW50Lm5ld1ZlcnNpb24pOworCisgICAgdmFyIHZl
cnNpb25UcmFuc2FjdGlvbiA9IGNyZWF0ZVJlcXVlc3QudHJhbnNhY3Rpb247CisgICAgZGF0YWJh
c2UgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgIHZhciBvYmplY3RTdG9yZSA9IGRhdGFiYXNl
LmNyZWF0ZU9iamVjdFN0b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKKyAgICB2YXIgcmVxdWVzdCA9
IG9iamVjdFN0b3JlLnB1dCgiYmFyIiwgImZvbyIpOworCisgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG9iamVjdFN0b3JlLmNv
dW50KE5hTik7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgYWxlcnQoIkZhaWxl
ZCB0byBjb3VudCByZWNvcmRzIGluIG9iamVjdCBzdG9yZSB3aXRoIGFuIGludmFsaWQga2V5Iik7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGRhdGFiYXNlLmRlbGV0ZU9iamVjdFN0b3Jl
KCJUZXN0T2JqZWN0U3RvcmUiKTsKKyAgICAgICAgCisgICAgICAgIHRyeSB7CisgICAgICAgICAg
ICBvYmplY3RTdG9yZS5jb3VudCgpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAg
IGFsZXJ0KCJGYWlsZWQgdG8gY291bnQgcmVjb3JkcyBpbiBvYmplY3Qgc3RvcmUgdGhhdCdzIGJl
ZW4gZGVsZXRlZCIpOworICAgICAgICB9IAorCisgICAgICAgIC8vIFJlY3JlYXRlIHRoZSBvYmpl
Y3RzdG9yZSBiZWNhdXNlIHdlJ2xsIG5lZWQgaXQgaW4gcGhhc2UgMi4KKyAgICAgICAgdmFyIG9i
amVjdFN0b3JlID0gZGF0YWJhc2UuY3JlYXRlT2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIp
OworICAgICAgICBvYmplY3RTdG9yZS5wdXQoImJhciIsICJmb28iKTsgICAgCisgICAgfQorICAg
IAorICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAg
ICAgICAgYWxlcnQoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVu
ZXhwZWN0ZWQgYWJvcnRlZCIpOworICAgICAgICBkb25lKCk7CisgICAgfQorCisgICAgdmVyc2lv
blRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBhbGVy
dCgiSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGUiKTsK
KyAgICAgICAgY29udGludWVUZXN0MSgpOworICAgIH0KKworICAgIHZlcnNpb25UcmFuc2FjdGlv
bi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgYWxlcnQoIkluaXRpYWwgdXBn
cmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgZXJyb3IiICsgZXZlbnQp
OworICAgICAgICBkb25lKCk7CisgICAgfQorfQorCitmdW5jdGlvbiBjb250aW51ZVRlc3QxKCkK
K3sKKyAgICB2YXIgdHJhbnNhY3Rpb24gPSBkYXRhYmFzZS50cmFuc2FjdGlvbigiVGVzdE9iamVj
dFN0b3JlIiwgInJlYWRvbmx5Iik7CisgICAgdmFyIG9iamVjdFN0b3JlID0gdHJhbnNhY3Rpb24u
b2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOworCisgICAgLy8gUXVldWUgdXAgYSB3aG9s
ZSBidW5jaCBvZiBnZXRzIHRvIGtlZXAgdGhlIHRyYW5zYWN0aW9uIGFsaXZlIGZvciBhd2hpbGUK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwOyArK2kpCisgICAgICAgIG9iamVjdFN0b3JlLmdl
dCgiZm9vIik7CisKKyAgICB2YXIgZ2V0V2hpbGVJbmFjdGl2ZSA9IGZ1bmN0aW9uKCkgeworICAg
ICAgICB0cnkgeworICAgICAgICAgICAgb2JqZWN0U3RvcmUuY291bnQoKTsKKyAgICAgICAgfSBj
YXRjaChlKSB7CisgICAgICAgICAgICBhbGVydCgiRmFpbGVkIHRvIGNvdW50IHJlY29yZHMgaW4g
b2JqZWN0IHN0b3JlIHdoaWxlIHRyYW5zYWN0aW9uIGlzIGluYWN0aXZlIik7CisgICAgICAgIH0g
CisgICAgfQorICAgIAorICAgIHNldFRpbWVvdXQoZ2V0V2hpbGVJbmFjdGl2ZSwgMCk7CisgICAg
CisgICAgdHJhbnNhY3Rpb24ub25hYm9ydCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGFs
ZXJ0KCJyZWFkb25seSB0cmFuc2FjdGlvbiB1bmV4cGVjdGVkIGFib3J0IiArIGV2ZW50KTsKKyAg
ICAgICAgZG9uZSgpOworICAgIH0KKworICAgIHRyYW5zYWN0aW9uLm9uY29tcGxldGUgPSBmdW5j
dGlvbihldmVudCkgeworICAgICAgICBhbGVydCgicmVhZG9ubHkgdHJhbnNhY3Rpb24gY29tcGxl
dGUiKTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KKworICAgIHRyYW5zYWN0aW9uLm9uZXJyb3Ig
PSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBhbGVydCgicmVhZG9ubHkgdHJhbnNhY3Rpb24g
dW5leHBlY3RlZCBlcnJvciIgKyBldmVudCk7CisgICAgICAgIGRvbmUoKTsKKyAgICB9Cit9CisK
Kzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDU4MDdhZDAuLjcxMTU2ZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw3OSBAQAorMjAxNS0xMS0wMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5j
b20+CisKKyAgICAgICAgTW9kZXJuIElEQjogSUJET2JqZWN0U3RvcmUuY291bnQoKSBzdXBwb3J0
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNzg1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgVGVzdHM6IHN0
b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1jb3VudC0xLmh0bWwKKyAgICAg
ICAgICAgICAgIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1jb3VudC1m
YWlsdXJlcy5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29u
bmVjdGlvblRvU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29u
bmVjdGlvblRvU2VydmVyOjpnZXRDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6
OklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZGlkR2V0Q291bnQpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuaDoKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyRGVsZWdhdGUuaDoKKyAg
ICAgICAgCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQk9iamVjdFN0b3Jl
SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQk9iamVjdFN0b3JlOjpj
b3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQk9iamVjdFN0b3JlOjpkb0Nv
dW50KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCT2JqZWN0U3RvcmVJ
bXBsLmg6CisgICAgICAgIAorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJS
ZXF1ZXN0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQlJlcXVlc3Q6
OnNldFJlc3VsdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlJlcXVl
c3RJbXBsLmg6CisgICAgICAgIAorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9J
REJUcmFuc2FjdGlvbkltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJU
cmFuc2FjdGlvbjo6cmVxdWVzdENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6
SURCVHJhbnNhY3Rpb246OmdldENvdW50T25TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURC
Q2xpZW50OjpJREJUcmFuc2FjdGlvbjo6ZGlkR2V0Q291bnRPblNlcnZlcik6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlRyYW5zYWN0aW9uSW1wbC5oOgorICAgICAgICAK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmg6Cisg
ICAgICAgIAorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9u
VG9DbGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJDb25uZWN0aW9u
VG9DbGllbnQ6OmRpZEdldENvdW50KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50Lmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlLmg6CisgICAgICAgIAorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OmdldENvdW50KToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmg6CisgICAgICAgIAorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJREJCYWNraW5nU3RvcmU6OmdldENvdW50KToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmg6
CisgICAgICAgIAorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmpl
Y3RTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeU9iamVjdFN0
b3JlOjpjb3VudEZvcktleVJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVt
b3J5T2JqZWN0U3RvcmU6OnZhbHVlRm9yS2V5UmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpNZW1vcnlPYmplY3RTdG9yZTo6bG93ZXN0S2V5V2l0aFJlY29yZEluUmFuZ2UpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5oOgor
ICAgICAgICAKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0
YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFz
ZTo6c3RvcmVDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlE
QkRhdGFiYXNlOjpnZXRDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1
ZUlEQkRhdGFiYXNlOjpwZXJmb3JtR2V0Q291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybUdldENvdW50KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1Db3VudENhbGxiYWNr
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2Uu
aDoKKyAgICAgICAgCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlE
QkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpnZXRSZWNvcmQpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpnZXRDb3VudCk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNh
Y3Rpb24uaDoKKyAgICAgICAgCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lE
QlJlc3VsdERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVzdWx0RGF0YTo6SURCUmVz
dWx0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXN1bHREYXRhOjpnZXRDb3VudFN1Y2Nl
c3MpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmg6
CisgICAgICAgIChXZWJDb3JlOjpJREJSZXN1bHREYXRhOjpyZXN1bHRJbnRlZ2VyKToKKyAgICAg
ICAgCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEdldENvdW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkluUHJvY2Vzc0lEQlNlcnZlcjo6Z2V0Q291bnQpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuaDoKKwog
MjAxNS0xMS0wMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAg
ICAgICAgIENsZWFuIHVwIHNvbWUgQ1NTICYgRm9udCBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9u
VG9TZXJ2ZXIuY3BwCmluZGV4IDljZTIwZmYuLjkwMzljMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0
aW9uVG9TZXJ2ZXIuY3BwCkBAIC0xNzAsNiArMTcwLDIyIEBAIHZvaWQgSURCQ29ubmVjdGlvblRv
U2VydmVyOjpkaWRHZXRSZWNvcmQoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKICAg
ICBjb21wbGV0ZU9wZXJhdGlvbihyZXN1bHREYXRhKTsKIH0KIAordm9pZCBJREJDb25uZWN0aW9u
VG9TZXJ2ZXI6OmdldENvdW50KFRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0
IElEQktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhKQoreworICAgIExPRyhJbmRleGVkREIsICJJ
REJDb25uZWN0aW9uVG9TZXJ2ZXI6OmdldENvdW50Iik7CisKKyAgICBBU1NFUlQoIWtleVJhbmdl
RGF0YS5pc051bGwpOworCisgICAgc2F2ZU9wZXJhdGlvbihvcGVyYXRpb24pOworICAgIG1fZGVs
ZWdhdGUtPmdldENvdW50KElEQlJlcXVlc3REYXRhKG9wZXJhdGlvbiksIGtleVJhbmdlRGF0YSk7
Cit9CisKK3ZvaWQgSURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWRHZXRDb3VudChjb25zdCBJREJS
ZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIExPRyhJbmRleGVkREIsICJJREJDb25uZWN0
aW9uVG9TZXJ2ZXI6OmRpZEdldENvdW50Iik7CisgICAgY29tcGxldGVPcGVyYXRpb24ocmVzdWx0
RGF0YSk7Cit9CisKIHZvaWQgSURCQ29ubmVjdGlvblRvU2VydmVyOjplc3RhYmxpc2hUcmFuc2Fj
dGlvbihJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCiB7CiAgICAgTE9HKEluZGV4ZWREQiwg
IklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24iKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9u
VG9TZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJD
b25uZWN0aW9uVG9TZXJ2ZXIuaAppbmRleCBiNDEyNDMyLi4zNGE3MWUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2Vy
dmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNv
bm5lY3Rpb25Ub1NlcnZlci5oCkBAIC03Niw2ICs3Niw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGdl
dFJlY29yZChUcmFuc2FjdGlvbk9wZXJhdGlvbiYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOwog
ICAgIHZvaWQgZGlkR2V0UmVjb3JkKGNvbnN0IElEQlJlc3VsdERhdGEmKTsKIAorICAgIHZvaWQg
Z2V0Q291bnQoVHJhbnNhY3Rpb25PcGVyYXRpb24mLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKTsK
KyAgICB2b2lkIGRpZEdldENvdW50KGNvbnN0IElEQlJlc3VsdERhdGEmKTsKKwogICAgIHZvaWQg
Y29tbWl0VHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb24mKTsKICAgICB2b2lkIGRpZENvbW1pdFRy
YW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlm
aWVyLCBjb25zdCBJREJFcnJvciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyRGVsZWdhdGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2
ZXJEZWxlZ2F0ZS5oCmluZGV4IDg5ZjBkMzEuLmU5YzljMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXJEZWxl
Z2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJD
b25uZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0ZS5oCkBAIC02MSw2ICs2MSw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgY2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYsIHVp
bnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwdXRP
ckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIElEQktleSosIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSYsIGNvbnN0IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktl
eVJhbmdlRGF0YSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0Q291bnQoY29uc3QgSURCUmVx
dWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGVzdGFibGlzaFRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZp
ZXIsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBk
YXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRp
ZmllcikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
Y2xpZW50L0lEQk9iamVjdFN0b3JlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvSURCT2JqZWN0U3RvcmVJbXBsLmNwcAppbmRleCAwMGUzYmFjLi4wMTI4
NmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
SURCT2JqZWN0U3RvcmVJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9jbGllbnQvSURCT2JqZWN0U3RvcmVJbXBsLmNwcApAQCAtMzI1LDE5ICszMjUsNjkgQEAg
dm9pZCBJREJPYmplY3RTdG9yZTo6ZGVsZXRlSW5kZXgoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9u
Q29kZSYpCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotUmVmUHRyPFdl
YkNvcmU6OklEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpjb3VudChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgRXhjZXB0aW9uQ29kZSYpCitSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURC
T2JqZWN0U3RvcmU6OmNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
TE9HKEluZGV4ZWREQiwgIklEQk9iamVjdFN0b3JlOjpjb3VudCIpOworCisgICAgaWYgKCFjb250
ZXh0KSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0KKworICAgIElEQktleVJhbmdlRGF0YSByYW5nZTsKKyAgICByYW5nZS5p
c051bGwgPSBmYWxzZTsKKyAgICByZXR1cm4gZG9Db3VudCgqY29udGV4dCwgcmFuZ2UsIGVjKTsK
IH0KIAotUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpjb3VudChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgSURCS2V5UmFuZ2UqLCBFeGNlcHRpb25Db2RlJikKK1Jl
ZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6Y291bnQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtl
eSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICBMT0coSW5kZXhlZERCLCAiSURCT2JqZWN0U3RvcmU6OmNvdW50Iik7CisKKyAgICBp
ZiAoIWNvbnRleHQpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgRE9NUmVxdWVzdFN0YXRlIHJlcXVlc3RTdGF0
ZShjb250ZXh0KTsKKyAgICBSZWZQdHI8SURCS2V5PiBpZGJLZXkgPSBzY3JpcHRWYWx1ZVRvSURC
S2V5KCZyZXF1ZXN0U3RhdGUsIGtleSk7CisgICAgaWYgKCFpZGJLZXkgfHwgaWRiS2V5LT50eXBl
KCkgPT0gS2V5VHlwZTo6SW52YWxpZCkgeworICAgICAgICBlYyA9IHN0YXRpY19jYXN0PEV4Y2Vw
dGlvbkNvZGU+KElEQkV4Y2VwdGlvbkNvZGU6OkRhdGFFcnJvcik7CisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0KKworICAgIHJldHVybiBkb0NvdW50KCpjb250ZXh0LCBJREJLZXlSYW5n
ZURhdGEoaWRiS2V5LmdldCgpKSwgZWMpOwogfQogCi1SZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVz
dD4gSURCT2JqZWN0U3RvcmU6OmNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBE
ZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYsIEV4Y2VwdGlvbkNvZGUmKQorUmVmUHRyPFdlYkNvcmU6
OklEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBJREJLZXlSYW5nZSogcmFuZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgTE9HKEluZGV4ZWREQiwgIklEQk9i
amVjdFN0b3JlOjpjb3VudCIpOworCisgICAgaWYgKCFjb250ZXh0KSB7CisgICAgICAgIGVjID0g
SU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAg
IHJldHVybiBkb0NvdW50KCpjb250ZXh0LCBJREJLZXlSYW5nZURhdGEocmFuZ2UpLCBlYyk7Cit9
CisKK1JlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJREJPYmplY3RTdG9yZTo6ZG9Db3VudChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJh
bmdlLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIW1fdHJhbnNhY3Rpb24tPmlzQWN0
aXZlKCkpIHsKKyAgICAgICAgZWMgPSBzdGF0aWNfY2FzdDxFeGNlcHRpb25Db2RlPihJREJFeGNl
cHRpb25Db2RlOjpUcmFuc2FjdGlvbkluYWN0aXZlRXJyb3IpOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICB9CisKKyAgICBpZiAobV9kZWxldGVkKSB7CisgICAgICAgIGVjID0gSU5WQUxJ
RF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGlmIChy
YW5nZS5pc051bGwpIHsKKyAgICAgICAgZWMgPSBzdGF0aWNfY2FzdDxFeGNlcHRpb25Db2RlPihJ
REJFeGNlcHRpb25Db2RlOjpEYXRhRXJyb3IpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9CisKKyAgICByZXR1cm4gbV90cmFuc2FjdGlvbi0+cmVxdWVzdENvdW50KGNvbnRleHQsICp0
aGlzLCByYW5nZSkKIH0KIAogdm9pZCBJREJPYmplY3RTdG9yZTo6bWFya0FzRGVsZXRlZCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCT2Jq
ZWN0U3RvcmVJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
SURCT2JqZWN0U3RvcmVJbXBsLmgKaW5kZXggNGJkNTA0OS4uMzMzNjY4YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQk9iamVjdFN0b3JlSW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPYmpl
Y3RTdG9yZUltcGwuaApAQCAtMzYsNiArMzYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIElEQktleTsKIAorc3RydWN0IElEQktleVJhbmdlRGF0YTsKKwogbmFtZXNwYWNlIElEQkNs
aWVudCB7CiAKIGNsYXNzIElEQlRyYW5zYWN0aW9uOwpAQCAtODMsNiArODUsNyBAQCBwcml2YXRl
OgogICAgIElEQk9iamVjdFN0b3JlKGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYsIElEQlRyYW5z
YWN0aW9uJik7CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gcHV0T3JBZGQoSlND
OjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUsIFJlZlB0cjxJREJLZXk+LCBJbmRleGVkREI6Ok9i
amVjdFN0b3JlT3ZlcndyaXRlTW9kZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJlZlB0cjxXZWJD
b3JlOjpJREJSZXF1ZXN0PiBkb0NvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBJ
REJLZXlSYW5nZURhdGEmLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBJREJPYmplY3RTdG9yZUlu
Zm8gbV9pbmZvOwogICAgIFJlZjxJREJUcmFuc2FjdGlvbj4gbV90cmFuc2FjdGlvbjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJSZXF1ZXN0
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCUmVx
dWVzdEltcGwuY3BwCmluZGV4IGFkZGYzZmEuLmRiZDJkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJSZXF1ZXN0SW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlJlcXVlc3RJbXBsLmNw
cApAQCAtMTg0LDYgKzE4NCwxMiBAQCB2b2lkIElEQlJlcXVlc3Q6OnNldFJlc3VsdChjb25zdCBJ
REJLZXlEYXRhKiBrZXlEYXRhKQogICAgIG1fcmVzdWx0ID0gSURCQW55OjpjcmVhdGUoV1RGOjpt
b3ZlKHZhbHVlKSk7CiB9CiAKK3ZvaWQgSURCUmVxdWVzdDo6c2V0UmVzdWx0KHVpbnQ2NF90IG51
bWJlcikKK3sKKyAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBtX3Jl
c3VsdCA9IElEQkFueTo6Y3JlYXRlKERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+dm0oKSwgSlNDOjpKU1ZhbHVlKG51bWJlcikpKTsKK30KKwogdm9pZCBJ
REJSZXF1ZXN0OjpzZXRSZXN1bHRUb1N0cnVjdHVyZWRDbG9uZShjb25zdCBUaHJlYWRTYWZlRGF0
YUJ1ZmZlciYgdmFsdWVEYXRhKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJSZXF1ZXN0Ojpz
ZXRSZXN1bHRUb1N0cnVjdHVyZWRDbG9uZSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlJlcXVlc3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCUmVxdWVzdEltcGwuaAppbmRleCAwYTdmODFh
Li4xNDU2MWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9j
bGllbnQvSURCUmVxdWVzdEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9jbGllbnQvSURCUmVxdWVzdEltcGwuaApAQCAtNzgsNiArNzgsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCByZXF1ZXN0Q29tcGxldGVkKGNvbnN0IElEQlJlc3VsdERhdGEmKTsKIAogICAgIHZv
aWQgc2V0UmVzdWx0KGNvbnN0IElEQktleURhdGEqKTsKKyAgICB2b2lkIHNldFJlc3VsdCh1aW50
NjRfdCk7CiAgICAgdm9pZCBzZXRSZXN1bHRUb1N0cnVjdHVyZWRDbG9uZShjb25zdCBUaHJlYWRT
YWZlRGF0YUJ1ZmZlciYpOwogICAgIHZvaWQgc2V0UmVzdWx0VG9VbmRlZmluZWQoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlRyYW5z
YWN0aW9uSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
SURCVHJhbnNhY3Rpb25JbXBsLmNwcAppbmRleCA1YjFhOTNhLi44MzE5ZDRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCVHJhbnNhY3Rpb25J
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURC
VHJhbnNhY3Rpb25JbXBsLmNwcApAQCAtNDMxLDYgKzQzMSwzNSBAQCB2b2lkIElEQlRyYW5zYWN0
aW9uOjpkaWRHZXRSZWNvcmRPblNlcnZlcihJREJSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJREJS
ZXN1bHREYQogICAgIHJlcXVlc3QucmVxdWVzdENvbXBsZXRlZChyZXN1bHREYXRhKTsKIH0KIAor
UmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q291bnQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBjb25zdCBJ
REJLZXlSYW5nZURhdGEmIHJhbmdlKQoreworICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2Fj
dGlvbjo6cmVxdWVzdENvdW50Iik7CisgICAgQVNTRVJUKGlzQWN0aXZlKCkpOworICAgIEFTU0VS
VCghcmFuZ2UuaXNOdWxsKTsKKworICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCUmVx
dWVzdDo6Y3JlYXRlKGNvbnRleHQsIG9iamVjdFN0b3JlLCAqdGhpcyk7CisgICAgYWRkUmVxdWVz
dChyZXF1ZXN0LmdldCgpKTsKKworICAgIHNjaGVkdWxlT3BlcmF0aW9uKGNyZWF0ZVRyYW5zYWN0
aW9uT3BlcmF0aW9uKCp0aGlzLCByZXF1ZXN0LmdldCgpLCAmSURCVHJhbnNhY3Rpb246OmRpZEdl
dENvdW50T25TZXJ2ZXIsICZJREJUcmFuc2FjdGlvbjo6Z2V0Q291bnRPblNlcnZlciwgcmFuZ2Up
KTsKKworICAgIHJldHVybiByZXF1ZXN0OworfQorCit2b2lkIElEQlRyYW5zYWN0aW9uOjpnZXRD
b3VudE9uU2VydmVyKFRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0IElEQktl
eVJhbmdlRGF0YSYga2V5UmFuZ2UpCit7CisgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5zYWN0
aW9uOjpnZXRDb3VudE9uU2VydmVyIik7CisKKyAgICBzZXJ2ZXJDb25uZWN0aW9uKCkuZ2V0Q291
bnQob3BlcmF0aW9uLCBrZXlSYW5nZSk7Cit9CisKK3ZvaWQgSURCVHJhbnNhY3Rpb246OmRpZEdl
dENvdW50T25TZXJ2ZXIoSURCUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSURCUmVzdWx0RGF0YSYg
cmVzdWx0RGF0YSkKK3sKKyAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmRpZEdl
dENvdW50T25TZXJ2ZXIiKTsKKworICAgIHJlcXVlc3Quc2V0UmVzdWx0KHJlc3VsdERhdGEucmVz
dWx0SW50ZWdlcigpKTsKKyAgICByZXF1ZXN0LnJlcXVlc3RDb21wbGV0ZWQocmVzdWx0RGF0YSk7
Cit9CisKIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdENsZWFyT2JqZWN0
U3RvcmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSURCT2JqZWN0U3RvcmUmIG9i
amVjdFN0b3JlKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVxdWVz
dENsZWFyT2JqZWN0U3RvcmUiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL2NsaWVudC9JREJUcmFuc2FjdGlvbkltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJUcmFuc2FjdGlvbkltcGwuaAppbmRleCBhMTkwNjY1
Li4xNjMxNGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9j
bGllbnQvSURCVHJhbnNhY3Rpb25JbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvY2xpZW50L0lEQlRyYW5zYWN0aW9uSW1wbC5oCkBAIC05Miw2ICs5Miw3IEBAIHB1
YmxpYzoKICAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdFB1dE9yQWRkKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBJREJPYmplY3RTdG9yZSYsIElEQktleSosIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSYsIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlKTsKICAgICBSZWY8SURCUmVx
dWVzdD4gcmVxdWVzdEdldFJlY29yZChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgSURCT2JqZWN0
U3RvcmUmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKTsKICAgICBSZWY8SURCUmVxdWVzdD4gcmVx
dWVzdENsZWFyT2JqZWN0U3RvcmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIElEQk9iamVjdFN0
b3JlJik7CisgICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RDb3VudChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiwgSURCT2JqZWN0U3RvcmUmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKTsKIAogICAg
IHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpOwog
CkBAIC0xMzYsNiArMTM3LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldFJlY29yZE9uU2VydmVy
KFRyYW5zYWN0aW9uT3BlcmF0aW9uJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7CiAgICAgdm9p
ZCBkaWRHZXRSZWNvcmRPblNlcnZlcihJREJSZXF1ZXN0JiwgY29uc3QgSURCUmVzdWx0RGF0YSYp
OwogCisgICAgdm9pZCBnZXRDb3VudE9uU2VydmVyKFRyYW5zYWN0aW9uT3BlcmF0aW9uJiwgY29u
c3QgSURCS2V5UmFuZ2VEYXRhJik7CisgICAgdm9pZCBkaWRHZXRDb3VudE9uU2VydmVyKElEQlJl
cXVlc3QmLCBjb25zdCBJREJSZXN1bHREYXRhJik7CisKICAgICB2b2lkIGRlbGV0ZU9iamVjdFN0
b3JlT25TZXJ2ZXIoVHJhbnNhY3Rpb25PcGVyYXRpb24mLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0
b3JlTmFtZSk7CiAgICAgdm9pZCBkaWREZWxldGVPYmplY3RTdG9yZU9uU2VydmVyKGNvbnN0IElE
QlJlc3VsdERhdGEmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oCmluZGV4IDhmMzljNzIuLjEzNWY2MTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJC
YWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCQmFja2luZ1N0b3JlLmgKQEAgLTYwLDYgKzYwLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgSURCRXJyb3IgZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJh
bnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0
IElEQktleURhdGEmKSA9IDA7CiAgICAgdmlydHVhbCBJREJFcnJvciBwdXRSZWNvcmQoY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9i
amVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IFRocmVhZFNhZmVE
YXRhQnVmZmVyJiB2YWx1ZSkgPSAwOwogICAgIHZpcnR1YWwgSURCRXJyb3IgZ2V0UmVjb3JkKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRf
dCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIFRocmVhZFNh
ZmVEYXRhQnVmZmVyJiBvdXRWYWx1ZSkgPSAwOworICAgIHZpcnR1YWwgSURCRXJyb3IgZ2V0Q291
bnQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVp
bnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgdWlu
dDY0X3QmIG91dENvdW50KSA9IDA7CiAgICAgdmlydHVhbCBJREJFcnJvciBnZW5lcmF0ZUtleU51
bWJlcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwg
dWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCYga2V5TnVtYmVyKSA9IDA7
CiAKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuY3BwCmluZGV4IGIxMGM0NTYuLjI4
ZDE4YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJDb25uZWN0aW9uVG9DbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuY3BwCkBAIC04OCw2ICs4OCwx
MSBAQCB2b2lkIElEQkNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkR2V0UmVjb3JkKGNvbnN0IElEQlJl
c3VsdERhdGEmIHJlc3VsdCkKICAgICBtX2RlbGVnYXRlLT5kaWRHZXRSZWNvcmQocmVzdWx0KTsK
IH0KIAordm9pZCBJREJDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEdldENvdW50KGNvbnN0IElEQlJl
c3VsdERhdGEmIHJlc3VsdCkKK3sKKyAgICBtX2RlbGVnYXRlLT5kaWRHZXRDb3VudChyZXN1bHQp
OworfQorCiB2b2lkIElEQkNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkQ29tbWl0VHJhbnNhY3Rpb24o
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0
IElEQkVycm9yJiBlcnJvcikKIHsKICAgICBtX2RlbGVnYXRlLT5kaWRDb21taXRUcmFuc2FjdGlv
bih0cmFuc2FjdGlvbklkZW50aWZpZXIsIGVycm9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGll
bnQuaAppbmRleCAyNDRkOThlLi43NjYyYjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVu
dC5oCkBAIC01Nyw2ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENsZWFyT2JqZWN0U3Rv
cmUoY29uc3QgSURCUmVzdWx0RGF0YSYpOwogICAgIHZvaWQgZGlkUHV0T3JBZGQoY29uc3QgSURC
UmVzdWx0RGF0YSYpOwogICAgIHZvaWQgZGlkR2V0UmVjb3JkKGNvbnN0IElEQlJlc3VsdERhdGEm
KTsKKyAgICB2b2lkIGRpZEdldENvdW50KGNvbnN0IElEQlJlc3VsdERhdGEmKTsKIAogICAgIHZv
aWQgZmlyZVZlcnNpb25DaGFuZ2VFdmVudChVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mLCB1
aW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uKTsKICAgICB2b2lkIGRpZFN0YXJ0VHJhbnNhY3Rpb24o
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0
IElEQkVycm9yJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50RGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnREZWxlZ2F0ZS5o
CmluZGV4IDMxZDBhNTAuLmFkMDQxYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnREZWxlZ2F0ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9D
bGllbnREZWxlZ2F0ZS5oCkBAIC01Myw2ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgZGlkQ2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRhJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRQdXRPckFkZChjb25zdCBJREJSZXN1bHREYXRhJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRHZXRSZWNvcmQoY29uc3QgSURCUmVzdWx0RGF0YSYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkR2V0Q291bnQoY29uc3QgSURCUmVzdWx0RGF0YSYpID0gMDsKIAogICAg
IHZpcnR1YWwgdm9pZCBmaXJlVmVyc2lvbkNoYW5nZUV2ZW50KFVuaXF1ZUlEQkRhdGFiYXNlQ29u
bmVjdGlvbiYsIHVpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24pID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkU3RhcnRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5z
YWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCmluZGV4IDU4
ODIzNjUuLjRiMGE3NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCkBAIC0yMTMsNiArMjEzLDE3IEBAIHZvaWQgSURC
U2VydmVyOjpnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25z
dCBJREJLZXlSYW5nZURhCiAgICAgdHJhbnNhY3Rpb24tPmdldFJlY29yZChyZXF1ZXN0RGF0YSwg
a2V5UmFuZ2VEYXRhKTsKIH0KIAordm9pZCBJREJTZXJ2ZXI6OmdldENvdW50KGNvbnN0IElEQlJl
cXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURh
dGEpCit7CisgICAgTE9HKEluZGV4ZWREQiwgIklEQlNlcnZlcjo6Z2V0Q291bnQiKTsKKworICAg
IGF1dG8gdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQocmVxdWVzdERhdGEudHJhbnNh
Y3Rpb25JZGVudGlmaWVyKCkpOworICAgIGlmICghdHJhbnNhY3Rpb24pCisgICAgICAgIHJldHVy
bjsKKworICAgIHRyYW5zYWN0aW9uLT5nZXRDb3VudChyZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRh
KTsKK30KKwogdm9pZCBJREJTZXJ2ZXI6OmVzdGFibGlzaFRyYW5zYWN0aW9uKHVpbnQ2NF90IGRh
dGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgaW5m
bykKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCU2VydmVyOjplc3RhYmxpc2hUcmFuc2FjdGlv
biIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQlNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QlNlcnZlci5oCmluZGV4IDYxYjY5MmMuLmY2OWNiOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKQEAgLTY0LDYgKzY0LDcg
QEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0
YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcik7CiAgICAgdm9pZCBwdXRPckFkZChj
b25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBUaHJlYWRTYWZl
RGF0YUJ1ZmZlciYgdmFsdWVEYXRhLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9k
ZSk7CiAgICAgdm9pZCBnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJL
ZXlSYW5nZURhdGEmKTsKKyAgICB2b2lkIGdldENvdW50KGNvbnN0IElEQlJlcXVlc3REYXRhJiwg
Y29uc3QgSURCS2V5UmFuZ2VEYXRhJik7CiAgICAgdm9pZCBlc3RhYmxpc2hUcmFuc2FjdGlvbih1
aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJUcmFuc2FjdGlv
bkluZm8mKTsKICAgICB2b2lkIGRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZCh1aW50NjRfdCBkYXRh
YmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3Jl
LmNwcAppbmRleCAyMDYwNmM5Li43MjJjNzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0
b3JlLmNwcApAQCAtMjU5LDYgKzI1OSwyMyBAQCBJREJFcnJvciBNZW1vcnlJREJCYWNraW5nU3Rv
cmU6OmdldFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAg
IHJldHVybiBJREJFcnJvcigpOwogfQogCitJREJFcnJvciBNZW1vcnlJREJCYWNraW5nU3RvcmU6
OmdldENvdW50KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlm
aWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IElEQktleVJhbmdlRGF0
YSYgcmFuZ2UsIHVpbnQ2NF90JiBvdXRDb3VudCkKK3sKKyAgICBMT0coSW5kZXhlZERCLCAiTWVt
b3J5SURCQmFja2luZ1N0b3JlOjpnZXRDb3VudCIpOworCisgICAgQVNTRVJUKG9iamVjdFN0b3Jl
SWRlbnRpZmllcik7CisKKyAgICBpZiAoIW1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0
aW9uSWRlbnRpZmllcikpCisgICAgICAgIHJldHVybiBJREJFcnJvcihJREJFeGNlcHRpb25Db2Rl
OjpVbmtub3duLCBXVEY6OkFTQ0lJTGl0ZXJhbCgiTm8gYmFja2luZyBzdG9yZSB0cmFuc2FjdGlv
biBmb3VuZCB0byBnZXQgY291bnQiKSk7CisKKyAgICBNZW1vcnlPYmplY3RTdG9yZSogb2JqZWN0
U3RvcmUgPSBtX29iamVjdFN0b3Jlc0J5SWRlbnRpZmllci5nZXQob2JqZWN0U3RvcmVJZGVudGlm
aWVyKTsKKyAgICBpZiAoIW9iamVjdFN0b3JlKQorICAgICAgICByZXR1cm4gSURCRXJyb3IoSURC
RXhjZXB0aW9uQ29kZTo6VW5rbm93biwgV1RGOjpBU0NJSUxpdGVyYWwoIk5vIGJhY2tpbmcgc3Rv
cmUgb2JqZWN0IHN0b3JlIGZvdW5kIikpOworCisgICAgb3V0Q291bnQgPSBvYmplY3RTdG9yZS0+
Y291bnRGb3JLZXlSYW5nZShyYW5nZSk7CisgICAgcmV0dXJuIElEQkVycm9yKCk7Cit9CisKIElE
QkVycm9yIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Z2VuZXJhdGVLZXlOdW1iZXIoY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVj
dFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QmIGtleU51bWJlcikKIHsKICAgICBMT0coSW5kZXhl
ZERCLCAiTWVtb3J5SURCQmFja2luZ1N0b3JlOjpnZW5lcmF0ZUtleU51bWJlciIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJh
Y2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01l
bW9yeUlEQkJhY2tpbmdTdG9yZS5oCmluZGV4IDI0NTFhZDkuLmEyOWZjOTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5n
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVt
b3J5SURCQmFja2luZ1N0b3JlLmgKQEAgLTU5LDYgKzU5LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgSURCRXJyb3IgZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJh
bnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0
IElEQktleURhdGEmKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIElEQkVycm9yIHB1dFJl
Y29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwg
dWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBJREJLZXlEYXRhJiwgY29uc3Qg
VGhyZWFkU2FmZURhdGFCdWZmZXImIHZhbHVlKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFs
IElEQkVycm9yIGdldFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0
aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBJREJL
ZXlSYW5nZURhdGEmLCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYgb3V0VmFsdWUpIG92ZXJyaWRlIGZp
bmFsOworICAgIHZpcnR1YWwgSURCRXJyb3IgZ2V0Q291bnQoY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRp
ZmllciwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgdWludDY0X3QmIG91dENvdW50KSBvdmVycmlk
ZSBmaW5hbDsKICAgICB2aXJ0dWFsIElEQkVycm9yIGdlbmVyYXRlS2V5TnVtYmVyKGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90JiBrZXlOdW1iZXIpIG92ZXJyaWRlIGZpbmFsOwog
CiAgICAgdm9pZCByZW1vdmVPYmplY3RTdG9yZUZvclZlcnNpb25DaGFuZ2VBYm9ydChNZW1vcnlP
YmplY3RTdG9yZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHAKaW5kZXggZTMwYTA1Ny4uNmU3
M2FlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L01lbW9yeU9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwCkBAIC0xMzEsMzcgKzEzMSw2OSBAQCB2
b2lkIE1lbW9yeU9iamVjdFN0b3JlOjpzZXRLZXlWYWx1ZShjb25zdCBJREJLZXlEYXRhJiBrZXlE
YXRhLCBjb25zdCBUaHJlYWRTYWZlRAogICAgICAgICBtX29yZGVyZWRLZXlzLT5pbnNlcnQoa2V5
RGF0YSk7CiB9CiAKK3VpbnQ2NF90IE1lbW9yeU9iamVjdFN0b3JlOjpjb3VudEZvcktleVJhbmdl
KGNvbnN0IElEQktleVJhbmdlRGF0YSYgaW5SYW5nZSkgY29uc3QKK3sKKyAgICBMT0coSW5kZXhl
ZERCLCAiTWVtb3J5T2JqZWN0U3RvcmU6OmNvdW50Rm9yS2V5UmFuZ2UiKTsKKworICAgIGlmICgh
bV9rZXlWYWx1ZVN0b3JlKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHVpbnQ2NF90IGNvdW50
ID0gMDsKKyAgICBJREJLZXlSYW5nZURhdGEgcmFuZ2UgPSBpblJhbmdlOworICAgIHdoaWxlICh0
cnVlKSB7CisgICAgICAgIGF1dG8ga2V5ID0gbG93ZXN0S2V5V2l0aFJlY29yZEluUmFuZ2UocmFu
Z2UpOworICAgICAgICBpZiAoa2V5LmlzTnVsbCgpKQorICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgKytjb3VudDsKKyAgICAgICAgcmFuZ2UubG93ZXJLZXkgPSBrZXk7CisgICAgICAgIHJh
bmdlLmxvd2VyT3BlbiA9IHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGNvdW50OworfQorCiBU
aHJlYWRTYWZlRGF0YUJ1ZmZlciBNZW1vcnlPYmplY3RTdG9yZTo6dmFsdWVGb3JLZXlSYW5nZShj
b25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSkgY29uc3QKIHsKICAgICBMT0coSW5k
ZXhlZERCLCAiTWVtb3J5T2JqZWN0U3RvcmU6OnZhbHVlRm9yS2V5Iik7CiAKLSAgICBpZiAoIW1f
a2V5VmFsdWVTdG9yZSkKKyAgICBJREJLZXlEYXRhIGtleSA9IGxvd2VzdEtleVdpdGhSZWNvcmRJ
blJhbmdlKGtleVJhbmdlRGF0YSk7CisgICAgaWYgKGtleS5pc051bGwoKSkKICAgICAgICAgcmV0
dXJuIFRocmVhZFNhZmVEYXRhQnVmZmVyKCk7CiAKLSAgICBpZiAoa2V5UmFuZ2VEYXRhLmlzRXhh
Y3RseU9uZUtleSgpKQotICAgICAgICByZXR1cm4gbV9rZXlWYWx1ZVN0b3JlLT5nZXQoa2V5UmFu
Z2VEYXRhLmxvd2VyS2V5KTsKKyAgICBBU1NFUlQobV9rZXlWYWx1ZVN0b3JlKTsKKyAgICByZXR1
cm4gbV9rZXlWYWx1ZVN0b3JlLT5nZXQoa2V5KTsKK30KKworSURCS2V5RGF0YSBNZW1vcnlPYmpl
Y3RTdG9yZTo6bG93ZXN0S2V5V2l0aFJlY29yZEluUmFuZ2UoY29uc3QgSURCS2V5UmFuZ2VEYXRh
JiBrZXlSYW5nZURhdGEpIGNvbnN0Cit7CisgICAgaWYgKCFtX2tleVZhbHVlU3RvcmUpCisgICAg
ICAgIHJldHVybiB7IH07CisKKyAgICBpZiAoa2V5UmFuZ2VEYXRhLmlzRXhhY3RseU9uZUtleSgp
ICYmIG1fa2V5VmFsdWVTdG9yZS0+Y29udGFpbnMoa2V5UmFuZ2VEYXRhLmxvd2VyS2V5KSkKKyAg
ICAgICAgcmV0dXJuIGtleVJhbmdlRGF0YS5sb3dlcktleTsKIAogICAgIEFTU0VSVChtX29yZGVy
ZWRLZXlzKTsKIAogICAgIGF1dG8gbG93ZXN0SW5SYW5nZSA9IG1fb3JkZXJlZEtleXMtPmxvd2Vy
X2JvdW5kKGtleVJhbmdlRGF0YS5sb3dlcktleSk7CiAKICAgICBpZiAobG93ZXN0SW5SYW5nZSA9
PSBtX29yZGVyZWRLZXlzLT5lbmQoKSkKLSAgICAgICAgcmV0dXJuIFRocmVhZFNhZmVEYXRhQnVm
ZmVyKCk7CisgICAgICAgIHJldHVybiB7IH07CiAKICAgICBpZiAoa2V5UmFuZ2VEYXRhLmxvd2Vy
T3BlbiAmJiAqbG93ZXN0SW5SYW5nZSA9PSBrZXlSYW5nZURhdGEubG93ZXJLZXkpCiAgICAgICAg
ICsrbG93ZXN0SW5SYW5nZTsKIAogICAgIGlmIChsb3dlc3RJblJhbmdlID09IG1fb3JkZXJlZEtl
eXMtPmVuZCgpKQotICAgICAgICByZXR1cm4gVGhyZWFkU2FmZURhdGFCdWZmZXIoKTsKKyAgICAg
ICAgcmV0dXJuIHsgfTsKIAogICAgIGlmICgha2V5UmFuZ2VEYXRhLnVwcGVyS2V5LmlzTnVsbCgp
KSB7CiAgICAgICAgIGlmIChsb3dlc3RJblJhbmdlLT5jb21wYXJlKGtleVJhbmdlRGF0YS51cHBl
cktleSkgPiAwKQotICAgICAgICAgICAgcmV0dXJuIFRocmVhZFNhZmVEYXRhQnVmZmVyKCk7Cisg
ICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICBpZiAoa2V5UmFuZ2VEYXRhLnVwcGVyT3Bl
biAmJiAqbG93ZXN0SW5SYW5nZSA9PSBrZXlSYW5nZURhdGEudXBwZXJLZXkpCi0gICAgICAgICAg
ICByZXR1cm4gVGhyZWFkU2FmZURhdGFCdWZmZXIoKTsKKyAgICAgICAgICAgIHJldHVybiB7IH07
CiAgICAgfQogCi0gICAgcmV0dXJuIG1fa2V5VmFsdWVTdG9yZS0+Z2V0KCpsb3dlc3RJblJhbmdl
KTsKKyAgICByZXR1cm4gKmxvd2VzdEluUmFuZ2U7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIElEQlNl
cnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L01lbW9yeU9iamVjdFN0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaAppbmRleCA1NjY0NmE1Li5mNzQ1M2ZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVt
b3J5T2JqZWN0U3RvcmUuaApAQCAtNjksMTIgKzY5LDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIHJl
cGxhY2VLZXlWYWx1ZVN0b3JlKHN0ZDo6dW5pcXVlX3B0cjxLZXlWYWx1ZU1hcD4mJik7CiAKICAg
ICBUaHJlYWRTYWZlRGF0YUJ1ZmZlciB2YWx1ZUZvcktleVJhbmdlKGNvbnN0IElEQktleVJhbmdl
RGF0YSYpIGNvbnN0OworICAgIHVpbnQ2NF90IGNvdW50Rm9yS2V5UmFuZ2UoY29uc3QgSURCS2V5
UmFuZ2VEYXRhJikgY29uc3Q7CiAKICAgICBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIGluZm8o
KSBjb25zdCB7IHJldHVybiBtX2luZm87IH0KIAogcHJpdmF0ZToKICAgICBNZW1vcnlPYmplY3RT
dG9yZShjb25zdCBJREJPYmplY3RTdG9yZUluZm8mKTsKIAorICAgIElEQktleURhdGEgbG93ZXN0
S2V5V2l0aFJlY29yZEluUmFuZ2UoY29uc3QgSURCS2V5UmFuZ2VEYXRhJikgY29uc3Q7CisKICAg
ICBJREJPYmplY3RTdG9yZUluZm8gbV9pbmZvOwogCiAgICAgTWVtb3J5QmFja2luZ1N0b3JlVHJh
bnNhY3Rpb24qIG1fd3JpdGVUcmFuc2FjdGlvbiB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0
YWJhc2UuY3BwCmluZGV4IDBjYjU5MTguLmUwZThkODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNl
LmNwcApAQCAtMTM2LDIxICsxMzYsMzIgQEAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlVW5pcXVl
Q2FsbGJhY2tJZGVudGlmaWVyKCkKIHVpbnQ2NF90IFVuaXF1ZUlEQkRhdGFiYXNlOjpzdG9yZUNh
bGxiYWNrKEVycm9yQ2FsbGJhY2sgY2FsbGJhY2spCiB7CiAgICAgdWludDY0X3QgaWRlbnRpZmll
ciA9IGdlbmVyYXRlVW5pcXVlQ2FsbGJhY2tJZGVudGlmaWVyKCk7Ci0gICAgbV9lcnJvckNhbGxi
YWNrcy5zZXQoaWRlbnRpZmllciwgY2FsbGJhY2spOworICAgIEFTU0VSVCghbV9lcnJvckNhbGxi
YWNrcy5jb250YWlucyhpZGVudGlmaWVyKSk7CisgICAgbV9lcnJvckNhbGxiYWNrcy5hZGQoaWRl
bnRpZmllciwgY2FsbGJhY2spOwogICAgIHJldHVybiBpZGVudGlmaWVyOwogfQogCiB1aW50NjRf
dCBVbmlxdWVJREJEYXRhYmFzZTo6c3RvcmVDYWxsYmFjayhLZXlEYXRhQ2FsbGJhY2sgY2FsbGJh
Y2spCiB7CiAgICAgdWludDY0X3QgaWRlbnRpZmllciA9IGdlbmVyYXRlVW5pcXVlQ2FsbGJhY2tJ
ZGVudGlmaWVyKCk7Ci0gICAgbV9rZXlEYXRhQ2FsbGJhY2tzLnNldChpZGVudGlmaWVyLCBjYWxs
YmFjayk7CisgICAgQVNTRVJUKCFtX2tleURhdGFDYWxsYmFja3MuY29udGFpbnMoaWRlbnRpZmll
cikpOworICAgIG1fa2V5RGF0YUNhbGxiYWNrcy5hZGQoaWRlbnRpZmllciwgY2FsbGJhY2spOwog
ICAgIHJldHVybiBpZGVudGlmaWVyOwogfQogCiB1aW50NjRfdCBVbmlxdWVJREJEYXRhYmFzZTo6
c3RvcmVDYWxsYmFjayhWYWx1ZURhdGFDYWxsYmFjayBjYWxsYmFjaykKIHsKICAgICB1aW50NjRf
dCBpZGVudGlmaWVyID0gZ2VuZXJhdGVVbmlxdWVDYWxsYmFja0lkZW50aWZpZXIoKTsKLSAgICBt
X3ZhbHVlRGF0YUNhbGxiYWNrcy5zZXQoaWRlbnRpZmllciwgY2FsbGJhY2spOworICAgIEFTU0VS
VCghbV92YWx1ZURhdGFDYWxsYmFja3MuY29udGFpbnMoaWRlbnRpZmllcikpOworICAgIG1fdmFs
dWVEYXRhQ2FsbGJhY2tzLmFkZChpZGVudGlmaWVyLCBjYWxsYmFjayk7CisgICAgcmV0dXJuIGlk
ZW50aWZpZXI7Cit9CisKK3VpbnQ2NF90IFVuaXF1ZUlEQkRhdGFiYXNlOjpzdG9yZUNhbGxiYWNr
KENvdW50Q2FsbGJhY2sgY2FsbGJhY2spCit7CisgICAgdWludDY0X3QgaWRlbnRpZmllciA9IGdl
bmVyYXRlVW5pcXVlQ2FsbGJhY2tJZGVudGlmaWVyKCk7CisgICAgQVNTRVJUKCFtX2NvdW50Q2Fs
bGJhY2tzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKyAgICBtX2NvdW50Q2FsbGJhY2tzLmFkZChp
ZGVudGlmaWVyLCBjYWxsYmFjayk7CiAgICAgcmV0dXJuIGlkZW50aWZpZXI7CiB9CiAKQEAgLTQz
MSw2ICs0NDIsMzcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybUdldFJlY29y
ZCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IEkKICAgICBwZXJmb3JtVmFsdWVE
YXRhQ2FsbGJhY2soY2FsbGJhY2tJZGVudGlmaWVyLCBlcnJvciwgcmVzdWx0RGF0YSk7CiB9CiAK
K3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmdldENvdW50KGNvbnN0IElEQlJlcXVlc3REYXRhJiBy
ZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSwgQ291bnRDYWxsYmFjayBj
YWxsYmFjaykKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIExPRyhJbmRleGVk
REIsICIobWFpbikgVW5pcXVlSURCRGF0YWJhc2U6OmdldENvdW50Iik7CisKKyAgICB1aW50NjRf
dCBjYWxsYmFja0lEID0gc3RvcmVDYWxsYmFjayhjYWxsYmFjayk7CisgICAgbV9zZXJ2ZXIucG9z
dERhdGFiYXNlVGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRh
YmFzZTo6cGVyZm9ybUdldENvdW50LCBjYWxsYmFja0lELCByZXF1ZXN0RGF0YS50cmFuc2FjdGlv
bklkZW50aWZpZXIoKSwgcmVxdWVzdERhdGEub2JqZWN0U3RvcmVJZGVudGlmaWVyKCksIHJhbmdl
KSk7Cit9CisKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1HZXRDb3VudCh1aW50NjRf
dCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNh
Y3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IElE
QktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhKQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFk
KCkpOworICAgIExPRyhJbmRleGVkREIsICIoZGIpIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3Jt
R2V0Q291bnQiKTsKKworICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CisgICAgQVNTRVJUKG9i
amVjdFN0b3JlSWRlbnRpZmllcik7CisKKyAgICB1aW50NjRfdCBjb3VudDsKKyAgICBJREJFcnJv
ciBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5nZXRDb3VudCh0cmFuc2FjdGlvbklkZW50aWZpZXIs
IG9iamVjdFN0b3JlSWRlbnRpZmllciwga2V5UmFuZ2VEYXRhLCBjb3VudCk7CisKKyAgICBtX3Nl
cnZlci5wb3N0RGF0YWJhc2VUYXNrUmVwbHkoY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAm
VW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1HZXRDb3VudCwgY2FsbGJhY2tJZGVudGlmaWVy
LCBlcnJvciwgY291bnQpKTsKK30KKwordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9y
bUdldENvdW50KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImIGVy
cm9yLCB1aW50NjRfdCBjb3VudCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
IExPRyhJbmRleGVkREIsICIobWFpbikgVW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1HZXRD
b3VudCIpOworCisgICAgcGVyZm9ybUNvdW50Q2FsbGJhY2soY2FsbGJhY2tJZGVudGlmaWVyLCBl
cnJvciwgY291bnQpOworfQorCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjb21taXRUcmFuc2Fj
dGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgRXJyb3JDYWxs
YmFjayBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAtNzAxLDYg
Kzc0MywxMyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtVmFsdWVEYXRhQ2FsbGJh
Y2sodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjbwogICAgIGNhbGxiYWNrKGVycm9yLCBy
ZXN1bHREYXRhKTsKIH0KIAordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUNvdW50Q2Fs
bGJhY2sodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJFcnJvciYgZXJyb3Is
IHVpbnQ2NF90IGNvdW50KQoreworICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NvdW50Q2FsbGJhY2tz
LnRha2UoY2FsbGJhY2tJZGVudGlmaWVyKTsKKyAgICBBU1NFUlQoY2FsbGJhY2spOworICAgIGNh
bGxiYWNrKGVycm9yLCBjb3VudCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIElEQlNlcnZlcgogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCmluZGV4IGI1Y2ZkYzku
LjFjODgxMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCkBAIC01Niw2ICs1Niw3IEBAIGNsYXNz
IElEQlNlcnZlcjsKIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IElEQkVycm9yJik+
IEVycm9yQ2FsbGJhY2s7CiB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBJREJFcnJv
ciYsIGNvbnN0IElEQktleURhdGEmKT4gS2V5RGF0YUNhbGxiYWNrOwogdHlwZWRlZiBzdGQ6OmZ1
bmN0aW9uPHZvaWQoY29uc3QgSURCRXJyb3ImLCBjb25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYp
PiBWYWx1ZURhdGFDYWxsYmFjazsKK3R5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IElE
QkVycm9yJiwgdWludDY0X3QpPiBDb3VudENhbGxiYWNrOwogCiBjbGFzcyBVbmlxdWVJREJEYXRh
YmFzZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxVbmlxdWVJREJEYXRhYmFzZT4gewog
cHVibGljOgpAQCAtNzQsNiArNzUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhck9iamVjdFN0
b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCB1aW50NjRfdCBvYmplY3RTdG9yZUlk
ZW50aWZpZXIsIEVycm9yQ2FsbGJhY2spOwogICAgIHZvaWQgcHV0T3JBZGQoY29uc3QgSURCUmVx
dWVzdERhdGEmLCBjb25zdCBJREJLZXlEYXRhJiwgY29uc3QgVGhyZWFkU2FmZURhdGFCdWZmZXIm
IHZhbHVlRGF0YSwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUsIEtleURhdGFD
YWxsYmFjayk7CiAgICAgdm9pZCBnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25z
dCBJREJLZXlSYW5nZURhdGEmLCBWYWx1ZURhdGFDYWxsYmFjayk7CisgICAgdm9pZCBnZXRDb3Vu
dChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIENvdW50Q2Fs
bGJhY2spOwogICAgIHZvaWQgY29tbWl0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbiYsIEVycm9yQ2FsbGJhY2spOwogICAgIHZvaWQgYWJvcnRUcmFuc2FjdGlvbihVbmlx
dWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgRXJyb3JDYWxsYmFjayk7CiAgICAgdm9pZCB0cmFu
c2FjdGlvbkRlc3Ryb3llZChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJik7CkBAIC0xMDQs
NiArMTA2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBlcmZvcm1DbGVhck9iamVjdFN0b3JlKHVp
bnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0
cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcik7CiAg
ICAgdm9pZCBwZXJmb3JtUHV0T3JBZGQodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qg
b2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBJREJLZXlEYXRhJiwgY29uc3QgVGhyZWFkU2Fm
ZURhdGFCdWZmZXImIHZhbHVlRGF0YSwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1v
ZGUpOwogICAgIHZvaWQgcGVyZm9ybUdldFJlY29yZCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZp
ZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1
aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOwor
ICAgIHZvaWQgcGVyZm9ybUdldENvdW50KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90
IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7CiAgICAgdm9p
ZCBwZXJmb3JtQWN0aXZhdGVUcmFuc2FjdGlvbkluQmFja2luZ1N0b3JlKHVpbnQ2NF90IGNhbGxi
YWNrSWRlbnRpZmllciwgY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJik7CiAKICAgICAvLyBNYWlu
IHRocmVhZCBjYWxsYmFja3MKQEAgLTExMyw2ICsxMTYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGlkUGVyZm9ybUNsZWFyT2JqZWN0U3RvcmUodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBj
b25zdCBJREJFcnJvciYpOwogICAgIHZvaWQgZGlkUGVyZm9ybVB1dE9yQWRkKHVpbnQ2NF90IGNh
bGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImLCBjb25zdCBJREJLZXlEYXRhJik7CiAg
ICAgdm9pZCBkaWRQZXJmb3JtR2V0UmVjb3JkKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwg
Y29uc3QgSURCRXJyb3ImLCBjb25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYpOworICAgIHZvaWQg
ZGlkUGVyZm9ybUdldENvdW50KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURC
RXJyb3ImLCB1aW50NjRfdCk7CiAgICAgdm9pZCBkaWRQZXJmb3JtQ29tbWl0VHJhbnNhY3Rpb24o
dWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJFcnJvciYsIGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZFBl
cmZvcm1BYm9ydFRyYW5zYWN0aW9uKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3Qg
SURCRXJyb3ImLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRp
Zmllcik7CiAgICAgdm9pZCBkaWRQZXJmb3JtQWN0aXZhdGVUcmFuc2FjdGlvbkluQmFja2luZ1N0
b3JlKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImKTsKQEAgLTEy
MCwxMCArMTI0LDEyIEBAIHByaXZhdGU6CiAgICAgdWludDY0X3Qgc3RvcmVDYWxsYmFjayhFcnJv
ckNhbGxiYWNrKTsKICAgICB1aW50NjRfdCBzdG9yZUNhbGxiYWNrKEtleURhdGFDYWxsYmFjayk7
CiAgICAgdWludDY0X3Qgc3RvcmVDYWxsYmFjayhWYWx1ZURhdGFDYWxsYmFjayk7CisgICAgdWlu
dDY0X3Qgc3RvcmVDYWxsYmFjayhDb3VudENhbGxiYWNrKTsKIAogICAgIHZvaWQgcGVyZm9ybUVy
cm9yQ2FsbGJhY2sodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJFcnJvciYp
OwogICAgIHZvaWQgcGVyZm9ybUtleURhdGFDYWxsYmFjayh1aW50NjRfdCBjYWxsYmFja0lkZW50
aWZpZXIsIGNvbnN0IElEQkVycm9yJiwgY29uc3QgSURCS2V5RGF0YSYpOwogICAgIHZvaWQgcGVy
Zm9ybVZhbHVlRGF0YUNhbGxiYWNrKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3Qg
SURCRXJyb3ImLCBjb25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYpOworICAgIHZvaWQgcGVyZm9y
bUNvdW50Q2FsbGJhY2sodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJFcnJv
ciYsIHVpbnQ2NF90KTsKIAogICAgIHZvaWQgaW52b2tlVHJhbnNhY3Rpb25TY2hlZHVsZXIoKTsK
ICAgICB2b2lkIHRyYW5zYWN0aW9uU2NoZWR1bGluZ1RpbWVyRmlyZWQoKTsKQEAgLTE0Nyw2ICsx
NTMsNyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8dWludDY0X3QsIEVycm9yQ2FsbGJhY2s+IG1f
ZXJyb3JDYWxsYmFja3M7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgS2V5RGF0YUNhbGxiYWNrPiBt
X2tleURhdGFDYWxsYmFja3M7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgVmFsdWVEYXRhQ2FsbGJh
Y2s+IG1fdmFsdWVEYXRhQ2FsbGJhY2tzOworICAgIEhhc2hNYXA8dWludDY0X3QsIENvdW50Q2Fs
bGJhY2s+IG1fY291bnRDYWxsYmFja3M7CiAKICAgICBUaW1lciBtX3RyYW5zYWN0aW9uU2NoZWR1
bGluZ1RpbWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5j
cHAKaW5kZXggZDYwMTQxZi4uY2ZmZDI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uLmNwcApAQCAtMTgxLDYgKzE4MSwyMyBAQCB2b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb246OmdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVz
dERhdGEsCiAgICAgfSk7CiB9CiAKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6
Z2V0Q291bnQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlS
YW5nZURhdGEmIGtleVJhbmdlRGF0YSkKK3sKKyAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURC
RGF0YWJhc2VUcmFuc2FjdGlvbjo6Z2V0Q291bnQiKTsKKworICAgIEFTU0VSVChtX3RyYW5zYWN0
aW9uSW5mby5pZGVudGlmaWVyKCkgPT0gcmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVy
KCkpOworCisgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+IHNlbGYodGhp
cyk7CisgICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRhdGFiYXNlKCkuZ2V0Q291bnQocmVxdWVz
dERhdGEsIGtleVJhbmdlRGF0YSwgW3RoaXMsIHNlbGYsIHJlcXVlc3REYXRhXShjb25zdCBJREJF
cnJvciYgZXJyb3IsIHVpbnQ2NF90IGNvdW50KSB7CisgICAgICAgIExPRyhJbmRleGVkREIsICJV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpnZXRDb3VudCAoY2FsbGJhY2spIik7CisKKyAg
ICAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQorICAgICAgICAgICAgbV9kYXRhYmFzZUNvbm5lY3Rp
b24tPmNvbm5lY3Rpb25Ub0NsaWVudCgpLmRpZEdldENvdW50KElEQlJlc3VsdERhdGE6OmdldENv
dW50U3VjY2VzcyhyZXF1ZXN0RGF0YS5yZXF1ZXN0SWRlbnRpZmllcigpLCBjb3VudCkpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBtX2RhdGFiYXNlQ29ubmVjdGlvbi0+Y29ubmVjdGlvblRv
Q2xpZW50KCkuZGlkR2V0Q291bnQoSURCUmVzdWx0RGF0YTo6ZXJyb3IocmVxdWVzdERhdGEucmVx
dWVzdElkZW50aWZpZXIoKSwgZXJyb3IpKTsKKyAgICB9KTsKK30KKwogY29uc3QgVmVjdG9yPHVp
bnQ2NF90PiYgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmVJZGVudGlm
aWVycygpCiB7CiAgICAgaWYgKCFtX29iamVjdFN0b3JlSWRlbnRpZmllcnMuaXNFbXB0eSgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmgKaW5kZXggYzNlZDNmNy4u
OTM0OGI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oCkBA
IC02OSw2ICs2OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyT2JqZWN0U3RvcmUoY29uc3Qg
SURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpOwogICAgIHZv
aWQgcHV0T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlEYXRhJiwgY29u
c3QgVGhyZWFkU2FmZURhdGFCdWZmZXImIHZhbHVlRGF0YSwgSW5kZXhlZERCOjpPYmplY3RTdG9y
ZU92ZXJ3cml0ZU1vZGUpOwogICAgIHZvaWQgZ2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRh
JiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7CisgICAgdm9pZCBnZXRDb3VudChjb25zdCBJREJS
ZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOwogCiAgICAgdm9pZCBkaWRBY3Rp
dmF0ZUluQmFja2luZ1N0b3JlKGNvbnN0IElEQkVycm9yJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcApp
bmRleCAyY2Y1YzNkLi41NDIyM2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuY3BwCkBAIC01MCw2ICs1MCw3
IEBAIElEQlJlc3VsdERhdGE6OklEQlJlc3VsdERhdGEoY29uc3QgSURCUmVzdWx0RGF0YSYgb3Ro
ZXIpCiAgICAgLCBtX3JlcXVlc3RJZGVudGlmaWVyKG90aGVyLm1fcmVxdWVzdElkZW50aWZpZXIp
CiAgICAgLCBtX2Vycm9yKG90aGVyLm1fZXJyb3IpCiAgICAgLCBtX2RhdGFiYXNlQ29ubmVjdGlv
bklkZW50aWZpZXIob3RoZXIubV9kYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKQorICAgICwg
bV9yZXN1bHRJbnRlZ2VyKG90aGVyLm1fcmVzdWx0SW50ZWdlcikKICAgICAsIG1fcmVzdWx0RGF0
YShvdGhlci5tX3Jlc3VsdERhdGEpCiB7CiAgICAgaWYgKG90aGVyLm1fZGF0YWJhc2VJbmZvKQpA
QCAtMTE3LDYgKzExOCwxMyBAQCBJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6OmdldFJlY29y
ZFN1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZQogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKK0lEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6Z2V0Q291bnRTdWNjZXNz
KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90
IGNvdW50KQoreworICAgIElEQlJlc3VsdERhdGEgcmVzdWx0KElEQlJlc3VsdFR5cGU6OkdldFJl
Y29yZFN1Y2Nlc3MsIHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICByZXN1bHQubV9yZXN1bHRJbnRl
Z2VyID0gY291bnQ7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogY29uc3QgSURCRGF0YWJhc2VJ
bmZvJiBJREJSZXN1bHREYXRhOjpkYXRhYmFzZUluZm8oKSBjb25zdAogewogICAgIFJFTEVBU0Vf
QVNTRVJUKG1fZGF0YWJhc2VJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5oCmluZGV4IDlkNjUzMTYuLmI4Mzcw
MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9J
REJSZXN1bHREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hh
cmVkL0lEQlJlc3VsdERhdGEuaApAQCAtNDksNiArNDksNyBAQCBlbnVtIGNsYXNzIElEQlJlc3Vs
dFR5cGUgewogICAgIENsZWFyT2JqZWN0U3RvcmVTdWNjZXNzLAogICAgIFB1dE9yQWRkU3VjY2Vz
cywKICAgICBHZXRSZWNvcmRTdWNjZXNzLAorICAgIEdldENvdW50U3VjY2VzcywKIH07CiAKIG5h
bWVzcGFjZSBJREJTZXJ2ZXIgewpAQCAtNjYsNiArNjcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IElEQlJlc3VsdERhdGEgY2xlYXJPYmplY3RTdG9yZVN1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJik7CiAgICAgc3RhdGljIElEQlJlc3VsdERhdGEgcHV0T3JBZGRTdWNjZXNzKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYsIGNvbnN0IElEQktleURhdGEmKTsKICAgICBzdGF0
aWMgSURCUmVzdWx0RGF0YSBnZXRSZWNvcmRTdWNjZXNzKGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmllciYsIGNvbnN0IFRocmVhZFNhZmVEYXRhQnVmZmVyJiB2YWx1ZURhdGEpOworICAgIHN0YXRp
YyBJREJSZXN1bHREYXRhIGdldENvdW50U3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50aWZp
ZXImLCB1aW50NjRfdCBjb3VudCk7CiAKICAgICBJREJSZXN1bHREYXRhKGNvbnN0IElEQlJlc3Vs
dERhdGEmKTsKIApAQCAtODAsNiArODIsNyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBJREJLZXlE
YXRhKiByZXN1bHRLZXkoKSBjb25zdCB7IHJldHVybiBtX3Jlc3VsdEtleS5nZXQoKTsgfQogICAg
IGNvbnN0IFRocmVhZFNhZmVEYXRhQnVmZmVyJiByZXN1bHREYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9yZXN1bHREYXRhOyB9CisgICAgdWludDY0X3QgcmVzdWx0SW50ZWdlcigpIGNvbnN0IHsgcmV0
dXJuIG1fcmVzdWx0SW50ZWdlcjsgfQogCiBwcml2YXRlOgogICAgIElEQlJlc3VsdERhdGEoY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJik7CkBAIC05Myw2ICs5Niw3IEBAIHByaXZhdGU6CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gbV9kYXRhYmFzZUluZm87CiAgICAg
c3RkOjp1bmlxdWVfcHRyPElEQlRyYW5zYWN0aW9uSW5mbz4gbV90cmFuc2FjdGlvbkluZm87CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPElEQktleURhdGE+IG1fcmVzdWx0S2V5OworICAgIHVpbnQ2NF90
IG1fcmVzdWx0SW50ZWdlciB7IDAgfTsKICAgICBUaHJlYWRTYWZlRGF0YUJ1ZmZlciBtX3Jlc3Vs
dERhdGE7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCmluZGV4IDgwZDcyMWIuLjQ3
MDYzMmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcApAQCAtMTU5LDYgKzE1OSwxNCBA
QCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkR2V0UmVjb3JkKGNvbnN0IElEQlJlc3VsdERh
dGEmIHJlc3VsdERhdGEpCiAgICAgfSk7CiB9CiAKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpk
aWRHZXRDb3VudChjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIFJlZlB0
cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7CisgICAgUnVuTG9vcDo6Y3VycmVudCgp
LmRpc3BhdGNoKFt0aGlzLCBzZWxmLCByZXN1bHREYXRhXSB7CisgICAgICAgIG1fY29ubmVjdGlv
blRvU2VydmVyLT5kaWRHZXRDb3VudChyZXN1bHREYXRhKTsKKyAgICB9KTsKK30KKwogdm9pZCBJ
blByb2Nlc3NJREJTZXJ2ZXI6OmFib3J0VHJhbnNhY3Rpb24oSURCUmVzb3VyY2VJZGVudGlmaWVy
JiByZXNvdXJjZUlkZW50aWZpZXIpCiB7CiAgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4g
c2VsZih0aGlzKTsKQEAgLTIxOSw2ICsyMjcsMTMgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6
OmdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQksK
ICAgICB9KTsKIH0KIAordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmdldENvdW50KGNvbnN0IElE
QlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5n
ZURhdGEpCit7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2VsZih0aGlzKTsKKyAg
ICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHNlbGYsIHJlcXVlc3REYXRhLCBr
ZXlSYW5nZURhdGFdIHsKKyAgICAgICAgbV9zZXJ2ZXItPmdldENvdW50KHJlcXVlc3REYXRhLCBr
ZXlSYW5nZURhdGEpOworICAgIH0pOworfQogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmVzdGFi
bGlzaFRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNv
bnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgaW5mbykKIHsKICAgICBSZWZQdHI8SW5Qcm9jZXNzSURC
U2VydmVyPiBzZWxmKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5oCmluZGV4IDQwOGJmMTYu
LjUyZTc4MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmgKQEAgLTYzLDYgKzYzLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBjbGVhck9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3RE
YXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKSBvdmVycmlkZSBmaW5hbDsKICAg
ICB2aXJ0dWFsIHZvaWQgcHV0T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBJREJLZXkqLCBT
ZXJpYWxpemVkU2NyaXB0VmFsdWUmLCBjb25zdCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3Zlcndy
aXRlTW9kZSkgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCB2b2lkIGdldFJlY29yZChjb25z
dCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpIG92ZXJyaWRlIGZpbmFs
OworICAgIHZpcnR1YWwgdm9pZCBnZXRDb3VudChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0
IElEQktleVJhbmdlRGF0YSYpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCBlc3Rh
Ymxpc2hUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBj
b25zdCBJREJUcmFuc2FjdGlvbkluZm8mKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIHZv
aWQgZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklk
ZW50aWZpZXIpIG92ZXJyaWRlIGZpbmFsOwogCkBAIC03Nyw2ICs3OCw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRhJikg
b3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCB2b2lkIGRpZFB1dE9yQWRkKGNvbnN0IElEQlJl
c3VsdERhdGEmKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkR2V0UmVjb3Jk
KGNvbnN0IElEQlJlc3VsdERhdGEmKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkR2V0Q291bnQoY29uc3QgSURCUmVzdWx0RGF0YSYpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZp
cnR1YWwgdm9pZCBmaXJlVmVyc2lvbkNoYW5nZUV2ZW50KElEQlNlcnZlcjo6VW5pcXVlSURCRGF0
YWJhc2VDb25uZWN0aW9uJiwgdWludDY0X3QgcmVxdWVzdGVkVmVyc2lvbikgb3ZlcnJpZGUgZmlu
YWw7CiAgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkVycm9yJikgb3Zl
cnJpZGUgZmluYWw7CiAK
</data>
<flag name="commit-queue"
          id="289665"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264554</attachid>
            <date>2015-11-01 22:05:16 -0800</date>
            <delta_ts>2015-11-01 22:53:41 -0800</delta_ts>
            <desc>Patch for landing 3</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>50577</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxMDc0ZmFlLi45M2U4Mzk1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTUtMTEt
MDEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1vZGVybiBJ
REI6IElCRE9iamVjdFN0b3JlLmNvdW50KCkgc3VwcG9ydC4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDc4NQorCisgICAgICAgIFJldmlld2VkIGJ5
IERhcmluIEFkbGVyLgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9i
amVjdHN0b3JlLWNvdW50LTEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdl
L2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtY291bnQtMS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtY291bnQtZmFp
bHVyZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9t
b2Rlcm4vaWRib2JqZWN0c3RvcmUtY291bnQtZmFpbHVyZXMuaHRtbDogQWRkZWQuCisKKwogMjAx
NS0xMS0wMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmUtbGFu
ZCBhIHBpZWNlIG9mIHRoZSBwYXRjaCBmb3I6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtY291bnQtMS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtY291
bnQtMS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjgx
MzM3ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21v
ZGVybi9pZGJvYmplY3RzdG9yZS1jb3VudC0xLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDU0IEBA
CitBTEVSVDogSW5pdGlhbCB1cGdyYWRlIG5lZWRlZDogT2xkIHZlcnNpb24gLSAwIE5ldyB2ZXJz
aW9uIC0gMQorQUxFUlQ6IENvdW50IGlzOiAxCitBTEVSVDogQ291bnQgaXM6IDAKK0FMRVJUOiBD
b3VudCBpczogMAorQUxFUlQ6IENvdW50IGlzOiAwCitBTEVSVDogQ291bnQgaXM6IDAKK0FMRVJU
OiBDb3VudCBpczogMgorQUxFUlQ6IENvdW50IGlzOiAwCitBTEVSVDogQ291bnQgaXM6IDAKK0FM
RVJUOiBDb3VudCBpczogMAorQUxFUlQ6IENvdW50IGlzOiAwCitBTEVSVDogQ291bnQgaXM6IDMK
K0FMRVJUOiBDb3VudCBpczogMQorQUxFUlQ6IENvdW50IGlzOiAwCitBTEVSVDogQ291bnQgaXM6
IDEKK0FMRVJUOiBDb3VudCBpczogMAorQUxFUlQ6IENvdW50IGlzOiA0CitBTEVSVDogQ291bnQg
aXM6IDIKK0FMRVJUOiBDb3VudCBpczogMQorQUxFUlQ6IENvdW50IGlzOiAyCitBTEVSVDogQ291
bnQgaXM6IDAKK0FMRVJUOiBDb3VudCBpczogNQorQUxFUlQ6IENvdW50IGlzOiAzCitBTEVSVDog
Q291bnQgaXM6IDIKK0FMRVJUOiBDb3VudCBpczogMworQUxFUlQ6IENvdW50IGlzOiAwCitBTEVS
VDogQ291bnQgaXM6IDYKK0FMRVJUOiBDb3VudCBpczogNAorQUxFUlQ6IENvdW50IGlzOiAzCitB
TEVSVDogQ291bnQgaXM6IDMKK0FMRVJUOiBDb3VudCBpczogMAorQUxFUlQ6IENvdW50IGlzOiA3
CitBTEVSVDogQ291bnQgaXM6IDQKK0FMRVJUOiBDb3VudCBpczogMworQUxFUlQ6IENvdW50IGlz
OiAzCitBTEVSVDogQ291bnQgaXM6IDEKK0FMRVJUOiBDb3VudCBpczogOAorQUxFUlQ6IENvdW50
IGlzOiA0CitBTEVSVDogQ291bnQgaXM6IDMKK0FMRVJUOiBDb3VudCBpczogMworQUxFUlQ6IENv
dW50IGlzOiAxCitBTEVSVDogQ291bnQgaXM6IDkKK0FMRVJUOiBDb3VudCBpczogNAorQUxFUlQ6
IENvdW50IGlzOiAzCitBTEVSVDogQ291bnQgaXM6IDMKK0FMRVJUOiBDb3VudCBpczogMQorQUxF
UlQ6IENvdW50IGlzOiAxMAorQUxFUlQ6IENvdW50IGlzOiA0CitBTEVSVDogQ291bnQgaXM6IDMK
K0FMRVJUOiBDb3VudCBpczogMworQUxFUlQ6IENvdW50IGlzOiAxCitBTEVSVDogSW5pdGlhbCB1
cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGUKK0FMRVJUOiBEb25lCitU
aGlzIHRlc3QgZXhlcmNpc2VzIHZhcmlvdXMgdXNlcyBvZiBJREJPYmplY3RTdG9yZS5jb3VudCgp
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2Jq
ZWN0c3RvcmUtY291bnQtMS5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbW9k
ZXJuL2lkYm9iamVjdHN0b3JlLWNvdW50LTEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5jZGY5NDJkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLWNvdW50LTEuaHRtbApAQCAtMCwwICsx
LDkyIEBACitUaGlzIHRlc3QgZXhlcmNpc2VzIHZhcmlvdXMgdXNlcyBvZiBJREJPYmplY3RTdG9y
ZS5jb3VudCgpCis8c2NyaXB0PgorCitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKK30K
KworZnVuY3Rpb24gZG9uZSgpCit7CisgICAgYWxlcnQoIkRvbmUiKTsKKyAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorCit2YXIg
Y3JlYXRlUmVxdWVzdCA9IHdpbmRvdy5pbmRleGVkREIub3BlbigiSURCT2JqZWN0U3RvcmVDb3Vu
dDFEYXRhYmFzZSIsIDEpOwordmFyIGRhdGFiYXNlOwordmFyIG9iamVjdFN0b3JlOworCitmdW5j
dGlvbiBnZXRDb3VudChhcmcpCit7CisgICAgdmFyIHJlcXVlc3Q7CisgICAgaWYgKGFyZyA9PSB1
bmRlZmluZWQpCisgICAgICAgIHJlcXVlc3QgPSBvYmplY3RTdG9yZS5jb3VudCgpOworICAgIGVs
c2UKKyAgICAgICAgcmVxdWVzdCA9IG9iamVjdFN0b3JlLmNvdW50KGFyZyk7CisgICAgCisgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgYWxlcnQoIkNvdW50IGlz
OiAiICsgcmVxdWVzdC5yZXN1bHQpOworICAgIH0KKyAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5j
dGlvbihlcnJvcikgeworICAgICAgICBhbGVydCgiVW5leHBlY3RlZCBlcnJvciBnZXR0aW5nIGNv
dW50OiAiICsgZXJyb3IpOworICAgICAgICBkb25lKCk7CisgICAgfQorfQorCitmdW5jdGlvbiBn
ZXRDb3VudHMoKQoreworICAgIGdldENvdW50KCk7CisgICAgZ2V0Q291bnQoSURCS2V5UmFuZ2Uu
Ym91bmQoMywgNikpOyAgICAKKyAgICBnZXRDb3VudChJREJLZXlSYW5nZS5ib3VuZCgzLCA2LCB0
cnVlLCBmYWxzZSkpOyAgICAKKyAgICBnZXRDb3VudChJREJLZXlSYW5nZS5ib3VuZCgzLCA2LCBm
YWxzZSwgdHJ1ZSkpOworICAgIGdldENvdW50KDcpOyAgICAKK30KKworY3JlYXRlUmVxdWVzdC5v
bnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkgeworICAgIGFsZXJ0KCJJbml0aWFsIHVw
Z3JhZGUgbmVlZGVkOiBPbGQgdmVyc2lvbiAtICIgKyBldmVudC5vbGRWZXJzaW9uICsgIiBOZXcg
dmVyc2lvbiAtICIgKyBldmVudC5uZXdWZXJzaW9uKTsKKworICAgIHZhciB2ZXJzaW9uVHJhbnNh
Y3Rpb24gPSBjcmVhdGVSZXF1ZXN0LnRyYW5zYWN0aW9uOworICAgIGRhdGFiYXNlID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdDsKKyAgICBvYmplY3RTdG9yZSA9IGRhdGFiYXNlLmNyZWF0ZU9iamVjdFN0
b3JlKCJUZXN0T2JqZWN0U3RvcmUiKTsKKyAgICAKKyAgICBvYmplY3RTdG9yZS5wdXQoMSwgMSk7
CisgICAgZ2V0Q291bnRzKCk7CisgICAgb2JqZWN0U3RvcmUucHV0KDIsIDIpOworICAgIGdldENv
dW50cygpOworICAgIG9iamVjdFN0b3JlLnB1dCgzLCAzKTsKKyAgICBnZXRDb3VudHMoKTsKKyAg
ICBvYmplY3RTdG9yZS5wdXQoNCwgNCk7CisgICAgZ2V0Q291bnRzKCk7CisgICAgb2JqZWN0U3Rv
cmUucHV0KDUsIDUpOworICAgIGdldENvdW50cygpOworICAgIG9iamVjdFN0b3JlLnB1dCg2LCA2
KTsKKyAgICBnZXRDb3VudHMoKTsKKyAgICBvYmplY3RTdG9yZS5wdXQoNywgNyk7CisgICAgZ2V0
Q291bnRzKCk7CisgICAgb2JqZWN0U3RvcmUucHV0KDgsIDgpOworICAgIGdldENvdW50cygpOwor
ICAgIG9iamVjdFN0b3JlLnB1dCg5LCA5KTsKKyAgICBnZXRDb3VudHMoKTsKKyAgICBvYmplY3RT
dG9yZS5wdXQoMTAsIDEwKTsKKyAgICBnZXRDb3VudHMoKTsKKworICAgIC8vIEZJWE1FOiBPbmNl
IG9iamVjdFN0b3JlLmRlbGV0ZSgpIGlzIGltcGxlbWVudGVkLCBhbHNvIHRlc3QgY291bnRzIGFm
dGVyIGRlbGV0aW5nIHByZXZpb3VzIHJlY29yZHMuCisgICAgCisgICAgdmVyc2lvblRyYW5zYWN0
aW9uLm9uYWJvcnQgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBhbGVydCgiSW5pdGlhbCB1
cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBhYm9ydCIpOworICAg
ICAgICBkb25lKCk7CisgICAgfQorCisgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uY29tcGxldGUg
PSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBhbGVydCgiSW5pdGlhbCB1cGdyYWRlIHZlcnNp
b25jaGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGUiKTsKKyAgICAgICAgZG9uZSgpOworICAgIH0K
KworICAgIHZlcnNpb25UcmFuc2FjdGlvbi5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAg
ICAgICAgYWxlcnQoIkluaXRpYWwgdXBncmFkZSB2ZXJzaW9uY2hhbmdlIHRyYW5zYWN0aW9uIHVu
ZXhwZWN0ZWQgZXJyb3IiICsgZXZlbnQpOworICAgICAgICBkb25lKCk7CisgICAgfQorfQorCis8
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVy
bi9pZGJvYmplY3RzdG9yZS1jb3VudC1mYWlsdXJlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtY291bnQtZmFpbHVyZXMt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4M2E2ODAK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4v
aWRib2JqZWN0c3RvcmUtY291bnQtZmFpbHVyZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBA
QAorQUxFUlQ6IEluaXRpYWwgdXBncmFkZSBuZWVkZWQ6IE9sZCB2ZXJzaW9uIC0gMCBOZXcgdmVy
c2lvbiAtIDEKK0FMRVJUOiBGYWlsZWQgdG8gY291bnQgcmVjb3JkcyBpbiBvYmplY3Qgc3RvcmUg
d2l0aCBhbiBpbnZhbGlkIGtleQorQUxFUlQ6IEZhaWxlZCB0byBjb3VudCByZWNvcmRzIGluIG9i
amVjdCBzdG9yZSB0aGF0J3MgYmVlbiBkZWxldGVkCitBTEVSVDogSW5pdGlhbCB1cGdyYWRlIHZl
cnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gY29tcGxldGUKK0FMRVJUOiBGYWlsZWQgdG8gY291bnQg
cmVjb3JkcyBpbiBvYmplY3Qgc3RvcmUgd2hpbGUgdHJhbnNhY3Rpb24gaXMgaW5hY3RpdmUKK0FM
RVJUOiByZWFkb25seSB0cmFuc2FjdGlvbiBjb21wbGV0ZQorQUxFUlQ6IERvbmUKK1RoaXMgdGVz
dHMgc29tZSBvYnZpb3VzIGZhaWx1cmVzIHRoYXQgY2FuIGhhcHBlbiB3aGlsZSBjYWxsaW5nIElE
Qk9iamVjdFN0b3JlLmNvdW50KCkuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vaWRib2JqZWN0c3RvcmUtY291bnQtZmFpbHVyZXMuaHRtbCBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1jb3VudC1mYWls
dXJlcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzOWY1NzgKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaWRi
b2JqZWN0c3RvcmUtY291bnQtZmFpbHVyZXMuaHRtbApAQCAtMCwwICsxLDk4IEBACitUaGlzIHRl
c3RzIHNvbWUgb2J2aW91cyBmYWlsdXJlcyB0aGF0IGNhbiBoYXBwZW4gd2hpbGUgY2FsbGluZyBJ
REJPYmplY3RTdG9yZS5jb3VudCgpLgorPHNjcmlwdD4KKworaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7Cit9CisKK2Z1bmN0aW9uIGRvbmUoKQoreworICAgIGFsZXJ0KCJEb25lIik7Cisg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKK30KKwordmFyIGNyZWF0ZVJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4oIklEQk9i
amVjdFN0b3JlQ291bnRGYWlsdXJlc0RhdGFiYXNlIiwgMSk7Cit2YXIgZGF0YWJhc2U7CisKK2Ny
ZWF0ZVJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBhbGVy
dCgiSW5pdGlhbCB1cGdyYWRlIG5lZWRlZDogT2xkIHZlcnNpb24gLSAiICsgZXZlbnQub2xkVmVy
c2lvbiArICIgTmV3IHZlcnNpb24gLSAiICsgZXZlbnQubmV3VmVyc2lvbik7CisKKyAgICB2YXIg
dmVyc2lvblRyYW5zYWN0aW9uID0gY3JlYXRlUmVxdWVzdC50cmFuc2FjdGlvbjsKKyAgICBkYXRh
YmFzZSA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgdmFyIG9iamVjdFN0b3JlID0gZGF0YWJh
c2UuY3JlYXRlT2JqZWN0U3RvcmUoIlRlc3RPYmplY3RTdG9yZSIpOworICAgIHZhciByZXF1ZXN0
ID0gb2JqZWN0U3RvcmUucHV0KCJiYXIiLCAiZm9vIik7CisKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uKCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgb2JqZWN0U3RvcmUu
Y291bnQoTmFOKTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBhbGVydCgiRmFp
bGVkIHRvIGNvdW50IHJlY29yZHMgaW4gb2JqZWN0IHN0b3JlIHdpdGggYW4gaW52YWxpZCBrZXki
KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZGF0YWJhc2UuZGVsZXRlT2JqZWN0U3Rv
cmUoIlRlc3RPYmplY3RTdG9yZSIpOworICAgICAgICAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAg
ICAgIG9iamVjdFN0b3JlLmNvdW50KCk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAg
ICAgYWxlcnQoIkZhaWxlZCB0byBjb3VudCByZWNvcmRzIGluIG9iamVjdCBzdG9yZSB0aGF0J3Mg
YmVlbiBkZWxldGVkIik7CisgICAgICAgIH0gCisKKyAgICAgICAgLy8gUmVjcmVhdGUgdGhlIG9i
amVjdHN0b3JlIGJlY2F1c2Ugd2UnbGwgbmVlZCBpdCBpbiBwaGFzZSAyLgorICAgICAgICB2YXIg
b2JqZWN0U3RvcmUgPSBkYXRhYmFzZS5jcmVhdGVPYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3Jl
Iik7CisgICAgICAgIG9iamVjdFN0b3JlLnB1dCgiYmFyIiwgImZvbyIpOyAgICAKKyAgICB9Cisg
ICAgCisgICAgdmVyc2lvblRyYW5zYWN0aW9uLm9uYWJvcnQgPSBmdW5jdGlvbihldmVudCkgewor
ICAgICAgICBhbGVydCgiSW5pdGlhbCB1cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24g
dW5leHBlY3RlZCBhYm9ydGVkIik7CisgICAgICAgIGRvbmUoKTsKKyAgICB9CisKKyAgICB2ZXJz
aW9uVHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGFs
ZXJ0KCJJbml0aWFsIHVwZ3JhZGUgdmVyc2lvbmNoYW5nZSB0cmFuc2FjdGlvbiBjb21wbGV0ZSIp
OworICAgICAgICBjb250aW51ZVRlc3QxKCk7CisgICAgfQorCisgICAgdmVyc2lvblRyYW5zYWN0
aW9uLm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICBhbGVydCgiSW5pdGlhbCB1
cGdyYWRlIHZlcnNpb25jaGFuZ2UgdHJhbnNhY3Rpb24gdW5leHBlY3RlZCBlcnJvciIgKyBldmVu
dCk7CisgICAgICAgIGRvbmUoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNvbnRpbnVlVGVzdDEo
KQoreworICAgIHZhciB0cmFuc2FjdGlvbiA9IGRhdGFiYXNlLnRyYW5zYWN0aW9uKCJUZXN0T2Jq
ZWN0U3RvcmUiLCAicmVhZG9ubHkiKTsKKyAgICB2YXIgb2JqZWN0U3RvcmUgPSB0cmFuc2FjdGlv
bi5vYmplY3RTdG9yZSgiVGVzdE9iamVjdFN0b3JlIik7CisKKyAgICAvLyBRdWV1ZSB1cCBhIHdo
b2xlIGJ1bmNoIG9mIGdldHMgdG8ga2VlcCB0aGUgdHJhbnNhY3Rpb24gYWxpdmUgZm9yIGF3aGls
ZQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTA7ICsraSkKKyAgICAgICAgb2JqZWN0U3RvcmUu
Z2V0KCJmb28iKTsKKworICAgIHZhciBnZXRXaGlsZUluYWN0aXZlID0gZnVuY3Rpb24oKSB7Cisg
ICAgICAgIHRyeSB7CisgICAgICAgICAgICBvYmplY3RTdG9yZS5jb3VudCgpOworICAgICAgICB9
IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGFsZXJ0KCJGYWlsZWQgdG8gY291bnQgcmVjb3JkcyBp
biBvYmplY3Qgc3RvcmUgd2hpbGUgdHJhbnNhY3Rpb24gaXMgaW5hY3RpdmUiKTsKKyAgICAgICAg
fSAKKyAgICB9CisgICAgCisgICAgc2V0VGltZW91dChnZXRXaGlsZUluYWN0aXZlLCAwKTsKKyAg
ICAKKyAgICB0cmFuc2FjdGlvbi5vbmFib3J0ID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAg
YWxlcnQoInJlYWRvbmx5IHRyYW5zYWN0aW9uIHVuZXhwZWN0ZWQgYWJvcnQiICsgZXZlbnQpOwor
ICAgICAgICBkb25lKCk7CisgICAgfQorCisgICAgdHJhbnNhY3Rpb24ub25jb21wbGV0ZSA9IGZ1
bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGFsZXJ0KCJyZWFkb25seSB0cmFuc2FjdGlvbiBjb21w
bGV0ZSIpOworICAgICAgICBkb25lKCk7CisgICAgfQorCisgICAgdHJhbnNhY3Rpb24ub25lcnJv
ciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGFsZXJ0KCJyZWFkb25seSB0cmFuc2FjdGlv
biB1bmV4cGVjdGVkIGVycm9yIiArIGV2ZW50KTsKKyAgICAgICAgZG9uZSgpOworICAgIH0KK30K
KworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTgwN2FkMC4uNzExNTZkMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDc5IEBACisyMDE1LTExLTAxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxl
LmNvbT4KKworICAgICAgICBNb2Rlcm4gSURCOiBJQkRPYmplY3RTdG9yZS5jb3VudCgpIHN1cHBv
cnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA3
ODUKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBUZXN0czog
c3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLWNvdW50LTEuaHRtbAorICAg
ICAgICAgICAgICAgc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2lkYm9iamVjdHN0b3JlLWNvdW50
LWZhaWx1cmVzLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJD
b25uZWN0aW9uVG9TZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJD
b25uZWN0aW9uVG9TZXJ2ZXI6OmdldENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVu
dDo6SURCQ29ubmVjdGlvblRvU2VydmVyOjpkaWRHZXRDb3VudCk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5oOgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0ZS5oOgor
ICAgICAgICAKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCT2JqZWN0U3Rv
cmVJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCT2JqZWN0U3RvcmU6
OmNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCT2JqZWN0U3RvcmU6OmRv
Q291bnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPYmplY3RTdG9y
ZUltcGwuaDoKKyAgICAgICAgCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lE
QlJlcXVlc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCUmVxdWVz
dDo6c2V0UmVzdWx0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCUmVx
dWVzdEltcGwuaDoKKyAgICAgICAgCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50
L0lEQlRyYW5zYWN0aW9uSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklE
QlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q291bnQpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50
OjpJREJUcmFuc2FjdGlvbjo6Z2V0Q291bnRPblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJ
REJDbGllbnQ6OklEQlRyYW5zYWN0aW9uOjpkaWRHZXRDb3VudE9uU2VydmVyKToKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCVHJhbnNhY3Rpb25JbXBsLmg6CisgICAgICAg
IAorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJCYWNraW5nU3RvcmUuaDoK
KyAgICAgICAgCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rp
b25Ub0NsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQkNvbm5lY3Rp
b25Ub0NsaWVudDo6ZGlkR2V0Q291bnQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50RGVsZWdhdGUuaDoKKyAgICAgICAgCisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6Z2V0Q291bnQpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaDoKKyAgICAgICAgCisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUu
aDoKKyAgICAgICAgCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9i
amVjdFN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5T2JqZWN0
U3RvcmU6OmNvdW50Rm9yS2V5UmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpN
ZW1vcnlPYmplY3RTdG9yZTo6dmFsdWVGb3JLZXlSYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6Ok1lbW9yeU9iamVjdFN0b3JlOjpsb3dlc3RLZXlXaXRoUmVjb3JkSW5SYW5nZSk6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmg6
CisgICAgICAgIAorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJE
YXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFi
YXNlOjpzdG9yZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVl
SURCRGF0YWJhc2U6OmdldENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5p
cXVlSURCRGF0YWJhc2U6OnBlcmZvcm1HZXRDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQZXJmb3JtR2V0Q291bnQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUNvdW50Q2FsbGJh
Y2spOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFz
ZS5oOgorICAgICAgICAKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OmdldFJlY29yZCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OmdldENvdW50KToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbi5oOgorICAgICAgICAKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SURCUmVzdWx0RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXN1bHREYXRhOjpJREJS
ZXN1bHREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlc3VsdERhdGE6OmdldENvdW50U3Vj
Y2Vzcyk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEu
aDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlc3VsdERhdGE6OnJlc3VsdEludGVnZXIpOgorICAg
ICAgICAKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2Vy
dmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkR2V0Q291
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpnZXRDb3VudCk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5oOgor
CiAyMDE1LTExLTAxICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAK
ICAgICAgICAgQ2xlYW4gdXAgc29tZSBDU1MgJiBGb250IGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rp
b25Ub1NlcnZlci5jcHAKaW5kZXggOWNlMjBmZi4uOTAzOWMxYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5l
Y3Rpb25Ub1NlcnZlci5jcHAKQEAgLTE3MCw2ICsxNzAsMjIgQEAgdm9pZCBJREJDb25uZWN0aW9u
VG9TZXJ2ZXI6OmRpZEdldFJlY29yZChjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQog
ICAgIGNvbXBsZXRlT3BlcmF0aW9uKHJlc3VsdERhdGEpOwogfQogCit2b2lkIElEQkNvbm5lY3Rp
b25Ub1NlcnZlcjo6Z2V0Q291bnQoVHJhbnNhY3Rpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwgY29u
c3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEpCit7CisgICAgTE9HKEluZGV4ZWREQiwg
IklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Z2V0Q291bnQiKTsKKworICAgIEFTU0VSVCgha2V5UmFu
Z2VEYXRhLmlzTnVsbCk7CisKKyAgICBzYXZlT3BlcmF0aW9uKG9wZXJhdGlvbik7CisgICAgbV9k
ZWxlZ2F0ZS0+Z2V0Q291bnQoSURCUmVxdWVzdERhdGEob3BlcmF0aW9uKSwga2V5UmFuZ2VEYXRh
KTsKK30KKwordm9pZCBJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmRpZEdldENvdW50KGNvbnN0IElE
QlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgTE9HKEluZGV4ZWREQiwgIklEQkNvbm5l
Y3Rpb25Ub1NlcnZlcjo6ZGlkR2V0Q291bnQiKTsKKyAgICBjb21wbGV0ZU9wZXJhdGlvbihyZXN1
bHREYXRhKTsKK30KKwogdm9pZCBJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OmVzdGFibGlzaFRyYW5z
YWN0aW9uKElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKIHsKICAgICBMT0coSW5kZXhlZERC
LCAiSURCQ29ubmVjdGlvblRvU2VydmVyOjplc3RhYmxpc2hUcmFuc2FjdGlvbiIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rp
b25Ub1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lE
QkNvbm5lY3Rpb25Ub1NlcnZlci5oCmluZGV4IGI0MTI0MzIuLjM0YTcxZTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9T
ZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURC
Q29ubmVjdGlvblRvU2VydmVyLmgKQEAgLTc2LDYgKzc2LDkgQEAgcHVibGljOgogICAgIHZvaWQg
Z2V0UmVjb3JkKFRyYW5zYWN0aW9uT3BlcmF0aW9uJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7
CiAgICAgdm9pZCBkaWRHZXRSZWNvcmQoY29uc3QgSURCUmVzdWx0RGF0YSYpOwogCisgICAgdm9p
ZCBnZXRDb3VudChUcmFuc2FjdGlvbk9wZXJhdGlvbiYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYp
OworICAgIHZvaWQgZGlkR2V0Q291bnQoY29uc3QgSURCUmVzdWx0RGF0YSYpOworCiAgICAgdm9p
ZCBjb21taXRUcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbiYpOwogICAgIHZvaWQgZGlkQ29tbWl0
VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50
aWZpZXIsIGNvbnN0IElEQkVycm9yJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0ZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1Nl
cnZlckRlbGVnYXRlLmgKaW5kZXggODlmMGQzMS4uZTljOWMwYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlckRl
bGVnYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lE
QkNvbm5lY3Rpb25Ub1NlcnZlckRlbGVnYXRlLmgKQEAgLTYxLDYgKzYxLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBjbGVhck9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwg
dWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHB1
dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgSURCS2V5KiwgU2VyaWFsaXplZFNjcmlwdFZh
bHVlJiwgY29uc3QgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZ2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURC
S2V5UmFuZ2VEYXRhJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRDb3VudChjb25zdCBJREJS
ZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZXN0YWJsaXNoVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRp
ZmllciwgY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lk
IGRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVu
dGlmaWVyKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9jbGllbnQvSURCT2JqZWN0U3RvcmVJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL2NsaWVudC9JREJPYmplY3RTdG9yZUltcGwuY3BwCmluZGV4IDAwZTNiYWMuLjI5
ZDIxMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVu
dC9JREJPYmplY3RTdG9yZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9JREJPYmplY3RTdG9yZUltcGwuY3BwCkBAIC0zMjUsMTkgKzMyNSw2OSBA
QCB2b2lkIElEQk9iamVjdFN0b3JlOjpkZWxldGVJbmRleChjb25zdCBTdHJpbmcmLCBFeGNlcHRp
b25Db2RlJikKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1SZWZQdHI8
V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmNvdW50KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJikKK1JlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBJ
REJPYmplY3RTdG9yZTo6Y291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICBMT0coSW5kZXhlZERCLCAiSURCT2JqZWN0U3RvcmU6OmNvdW50Iik7CisKKyAgICBpZiAoIWNv
bnRleHQpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfQorCisgICAgSURCS2V5UmFuZ2VEYXRhIHJhbmdlOworICAgIHJhbmdl
LmlzTnVsbCA9IGZhbHNlOworICAgIHJldHVybiBkb0NvdW50KCpjb250ZXh0LCByYW5nZSwgZWMp
OwogfQogCi1SZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmNvdW50
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBJREJLZXlSYW5nZSosIEV4Y2VwdGlvbkNvZGUmKQor
UmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpjb3VudChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYg
a2V5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIExPRyhJbmRleGVkREIsICJJREJPYmplY3RTdG9yZTo6Y291bnQiKTsKKworICAg
IGlmICghY29udGV4dCkgeworICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBET01SZXF1ZXN0U3RhdGUgcmVxdWVzdFN0
YXRlKGNvbnRleHQpOworICAgIFJlZlB0cjxJREJLZXk+IGlkYktleSA9IHNjcmlwdFZhbHVlVG9J
REJLZXkoJnJlcXVlc3RTdGF0ZSwga2V5KTsKKyAgICBpZiAoIWlkYktleSB8fCBpZGJLZXktPnR5
cGUoKSA9PSBLZXlUeXBlOjpJbnZhbGlkKSB7CisgICAgICAgIGVjID0gc3RhdGljX2Nhc3Q8RXhj
ZXB0aW9uQ29kZT4oSURCRXhjZXB0aW9uQ29kZTo6RGF0YUVycm9yKTsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIGRvQ291bnQoKmNvbnRleHQsIElEQktleVJh
bmdlRGF0YShpZGJLZXkuZ2V0KCkpLCBlYyk7CiB9CiAKLVJlZlB0cjxXZWJDb3JlOjpJREJSZXF1
ZXN0PiBJREJPYmplY3RTdG9yZTo6Y291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwgRXhjZXB0aW9uQ29kZSYpCitSZWZQdHI8V2ViQ29y
ZTo6SURCUmVxdWVzdD4gSURCT2JqZWN0U3RvcmU6OmNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIElEQktleVJhbmdlKiByYW5nZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0g
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBMT0coSW5kZXhlZERCLCAiSURC
T2JqZWN0U3RvcmU6OmNvdW50Iik7CisKKyAgICBpZiAoIWNvbnRleHQpIHsKKyAgICAgICAgZWMg
PSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisg
ICAgcmV0dXJuIGRvQ291bnQoKmNvbnRleHQsIElEQktleVJhbmdlRGF0YShyYW5nZSksIGVjKTsK
K30KKworUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IElEQk9iamVjdFN0b3JlOjpkb0NvdW50
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IElEQktleVJhbmdlRGF0YSYg
cmFuZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghbV90cmFuc2FjdGlvbi0+aXNB
Y3RpdmUoKSkgeworICAgICAgICBlYyA9IHN0YXRpY19jYXN0PEV4Y2VwdGlvbkNvZGU+KElEQkV4
Y2VwdGlvbkNvZGU6OlRyYW5zYWN0aW9uSW5hY3RpdmVFcnJvcik7CisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0KKworICAgIGlmIChtX2RlbGV0ZWQpIHsKKyAgICAgICAgZWMgPSBJTlZB
TElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgaWYg
KHJhbmdlLmlzTnVsbCkgeworICAgICAgICBlYyA9IHN0YXRpY19jYXN0PEV4Y2VwdGlvbkNvZGU+
KElEQkV4Y2VwdGlvbkNvZGU6OkRhdGFFcnJvcik7CisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIH0KKworICAgIHJldHVybiBtX3RyYW5zYWN0aW9uLT5yZXF1ZXN0Q291bnQoY29udGV4dCwg
KnRoaXMsIHJhbmdlKTsKIH0KIAogdm9pZCBJREJPYmplY3RTdG9yZTo6bWFya0FzRGVsZXRlZCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURC
T2JqZWN0U3RvcmVJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGll
bnQvSURCT2JqZWN0U3RvcmVJbXBsLmgKaW5kZXggNGJkNTA0OS4uMzMzNjY4YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQk9iamVjdFN0b3Jl
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJP
YmplY3RTdG9yZUltcGwuaApAQCAtMzYsNiArMzYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIElEQktleTsKIAorc3RydWN0IElEQktleVJhbmdlRGF0YTsKKwogbmFtZXNwYWNlIElE
QkNsaWVudCB7CiAKIGNsYXNzIElEQlRyYW5zYWN0aW9uOwpAQCAtODMsNiArODUsNyBAQCBwcml2
YXRlOgogICAgIElEQk9iamVjdFN0b3JlKGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYsIElEQlRy
YW5zYWN0aW9uJik7CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gcHV0T3JBZGQo
SlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUsIFJlZlB0cjxJREJLZXk+LCBJbmRleGVkREI6
Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJlZlB0cjxX
ZWJDb3JlOjpJREJSZXF1ZXN0PiBkb0NvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25z
dCBJREJLZXlSYW5nZURhdGEmLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBJREJPYmplY3RTdG9y
ZUluZm8gbV9pbmZvOwogICAgIFJlZjxJREJUcmFuc2FjdGlvbj4gbV90cmFuc2FjdGlvbjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJSZXF1
ZXN0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURC
UmVxdWVzdEltcGwuY3BwCmluZGV4IGFkZGYzZmEuLmRiZDJkN2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJSZXF1ZXN0SW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlJlcXVlc3RJbXBs
LmNwcApAQCAtMTg0LDYgKzE4NCwxMiBAQCB2b2lkIElEQlJlcXVlc3Q6OnNldFJlc3VsdChjb25z
dCBJREJLZXlEYXRhKiBrZXlEYXRhKQogICAgIG1fcmVzdWx0ID0gSURCQW55OjpjcmVhdGUoV1RG
Ojptb3ZlKHZhbHVlKSk7CiB9CiAKK3ZvaWQgSURCUmVxdWVzdDo6c2V0UmVzdWx0KHVpbnQ2NF90
IG51bWJlcikKK3sKKyAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBt
X3Jlc3VsdCA9IElEQkFueTo6Y3JlYXRlKERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKS0+dm0oKSwgSlNDOjpKU1ZhbHVlKG51bWJlcikpKTsKK30KKwogdm9p
ZCBJREJSZXF1ZXN0OjpzZXRSZXN1bHRUb1N0cnVjdHVyZWRDbG9uZShjb25zdCBUaHJlYWRTYWZl
RGF0YUJ1ZmZlciYgdmFsdWVEYXRhKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJSZXF1ZXN0
OjpzZXRSZXN1bHRUb1N0cnVjdHVyZWRDbG9uZSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlJlcXVlc3RJbXBsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCUmVxdWVzdEltcGwuaAppbmRleCAwYTdm
ODFhLi4xNDU2MWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9jbGllbnQvSURCUmVxdWVzdEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvSURCUmVxdWVzdEltcGwuaApAQCAtNzgsNiArNzgsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCByZXF1ZXN0Q29tcGxldGVkKGNvbnN0IElEQlJlc3VsdERhdGEmKTsKIAogICAg
IHZvaWQgc2V0UmVzdWx0KGNvbnN0IElEQktleURhdGEqKTsKKyAgICB2b2lkIHNldFJlc3VsdCh1
aW50NjRfdCk7CiAgICAgdm9pZCBzZXRSZXN1bHRUb1N0cnVjdHVyZWRDbG9uZShjb25zdCBUaHJl
YWRTYWZlRGF0YUJ1ZmZlciYpOwogICAgIHZvaWQgc2V0UmVzdWx0VG9VbmRlZmluZWQoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlRy
YW5zYWN0aW9uSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGll
bnQvSURCVHJhbnNhY3Rpb25JbXBsLmNwcAppbmRleCA1YjFhOTNhLi44MzE5ZDRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCVHJhbnNhY3Rp
b25JbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
SURCVHJhbnNhY3Rpb25JbXBsLmNwcApAQCAtNDMxLDYgKzQzMSwzNSBAQCB2b2lkIElEQlRyYW5z
YWN0aW9uOjpkaWRHZXRSZWNvcmRPblNlcnZlcihJREJSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBJ
REJSZXN1bHREYQogICAgIHJlcXVlc3QucmVxdWVzdENvbXBsZXRlZChyZXN1bHREYXRhKTsKIH0K
IAorUmVmPElEQlJlcXVlc3Q+IElEQlRyYW5zYWN0aW9uOjpyZXF1ZXN0Q291bnQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgSURCT2JqZWN0U3RvcmUmIG9iamVjdFN0b3JlLCBjb25z
dCBJREJLZXlSYW5nZURhdGEmIHJhbmdlKQoreworICAgIExPRyhJbmRleGVkREIsICJJREJUcmFu
c2FjdGlvbjo6cmVxdWVzdENvdW50Iik7CisgICAgQVNTRVJUKGlzQWN0aXZlKCkpOworICAgIEFT
U0VSVCghcmFuZ2UuaXNOdWxsKTsKKworICAgIFJlZjxJREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURC
UmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIG9iamVjdFN0b3JlLCAqdGhpcyk7CisgICAgYWRkUmVx
dWVzdChyZXF1ZXN0LmdldCgpKTsKKworICAgIHNjaGVkdWxlT3BlcmF0aW9uKGNyZWF0ZVRyYW5z
YWN0aW9uT3BlcmF0aW9uKCp0aGlzLCByZXF1ZXN0LmdldCgpLCAmSURCVHJhbnNhY3Rpb246OmRp
ZEdldENvdW50T25TZXJ2ZXIsICZJREJUcmFuc2FjdGlvbjo6Z2V0Q291bnRPblNlcnZlciwgcmFu
Z2UpKTsKKworICAgIHJldHVybiByZXF1ZXN0OworfQorCit2b2lkIElEQlRyYW5zYWN0aW9uOjpn
ZXRDb3VudE9uU2VydmVyKFRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIGNvbnN0IElE
QktleVJhbmdlRGF0YSYga2V5UmFuZ2UpCit7CisgICAgTE9HKEluZGV4ZWREQiwgIklEQlRyYW5z
YWN0aW9uOjpnZXRDb3VudE9uU2VydmVyIik7CisKKyAgICBzZXJ2ZXJDb25uZWN0aW9uKCkuZ2V0
Q291bnQob3BlcmF0aW9uLCBrZXlSYW5nZSk7Cit9CisKK3ZvaWQgSURCVHJhbnNhY3Rpb246OmRp
ZEdldENvdW50T25TZXJ2ZXIoSURCUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSURCUmVzdWx0RGF0
YSYgcmVzdWx0RGF0YSkKK3sKKyAgICBMT0coSW5kZXhlZERCLCAiSURCVHJhbnNhY3Rpb246OmRp
ZEdldENvdW50T25TZXJ2ZXIiKTsKKworICAgIHJlcXVlc3Quc2V0UmVzdWx0KHJlc3VsdERhdGEu
cmVzdWx0SW50ZWdlcigpKTsKKyAgICByZXF1ZXN0LnJlcXVlc3RDb21wbGV0ZWQocmVzdWx0RGF0
YSk7Cit9CisKIFJlZjxJREJSZXF1ZXN0PiBJREJUcmFuc2FjdGlvbjo6cmVxdWVzdENsZWFyT2Jq
ZWN0U3RvcmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSURCT2JqZWN0U3RvcmUm
IG9iamVjdFN0b3JlKQogewogICAgIExPRyhJbmRleGVkREIsICJJREJUcmFuc2FjdGlvbjo6cmVx
dWVzdENsZWFyT2JqZWN0U3RvcmUiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL2NsaWVudC9JREJUcmFuc2FjdGlvbkltcGwuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJUcmFuc2FjdGlvbkltcGwuaAppbmRleCBhMTkw
NjY1Li4xNjMxNGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9jbGllbnQvSURCVHJhbnNhY3Rpb25JbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvY2xpZW50L0lEQlRyYW5zYWN0aW9uSW1wbC5oCkBAIC05Miw2ICs5Miw3IEBA
IHB1YmxpYzoKICAgICBSZWY8SURCUmVxdWVzdD4gcmVxdWVzdFB1dE9yQWRkKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmLCBJREJPYmplY3RTdG9yZSYsIElEQktleSosIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSYsIEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlKTsKICAgICBSZWY8SURC
UmVxdWVzdD4gcmVxdWVzdEdldFJlY29yZChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgSURCT2Jq
ZWN0U3RvcmUmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKTsKICAgICBSZWY8SURCUmVxdWVzdD4g
cmVxdWVzdENsZWFyT2JqZWN0U3RvcmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIElEQk9iamVj
dFN0b3JlJik7CisgICAgUmVmPElEQlJlcXVlc3Q+IHJlcXVlc3RDb3VudChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiwgSURCT2JqZWN0U3RvcmUmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKTsKIAog
ICAgIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUp
OwogCkBAIC0xMzYsNiArMTM3LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldFJlY29yZE9uU2Vy
dmVyKFRyYW5zYWN0aW9uT3BlcmF0aW9uJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7CiAgICAg
dm9pZCBkaWRHZXRSZWNvcmRPblNlcnZlcihJREJSZXF1ZXN0JiwgY29uc3QgSURCUmVzdWx0RGF0
YSYpOwogCisgICAgdm9pZCBnZXRDb3VudE9uU2VydmVyKFRyYW5zYWN0aW9uT3BlcmF0aW9uJiwg
Y29uc3QgSURCS2V5UmFuZ2VEYXRhJik7CisgICAgdm9pZCBkaWRHZXRDb3VudE9uU2VydmVyKElE
QlJlcXVlc3QmLCBjb25zdCBJREJSZXN1bHREYXRhJik7CisKICAgICB2b2lkIGRlbGV0ZU9iamVj
dFN0b3JlT25TZXJ2ZXIoVHJhbnNhY3Rpb25PcGVyYXRpb24mLCBjb25zdCBTdHJpbmcmIG9iamVj
dFN0b3JlTmFtZSk7CiAgICAgdm9pZCBkaWREZWxldGVPYmplY3RTdG9yZU9uU2VydmVyKGNvbnN0
IElEQlJlc3VsdERhdGEmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oCmluZGV4IDhmMzljNzIuLjEzNWY2
MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmgKQEAgLTYwLDYgKzYwLDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgSURCRXJyb3IgZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYg
dHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNv
bnN0IElEQktleURhdGEmKSA9IDA7CiAgICAgdmlydHVhbCBJREJFcnJvciBwdXRSZWNvcmQoY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90
IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IFRocmVhZFNh
ZmVEYXRhQnVmZmVyJiB2YWx1ZSkgPSAwOwogICAgIHZpcnR1YWwgSURCRXJyb3IgZ2V0UmVjb3Jk
KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50
NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIFRocmVh
ZFNhZmVEYXRhQnVmZmVyJiBvdXRWYWx1ZSkgPSAwOworICAgIHZpcnR1YWwgSURCRXJyb3IgZ2V0
Q291bnQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIs
IHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwg
dWludDY0X3QmIG91dENvdW50KSA9IDA7CiAgICAgdmlydHVhbCBJREJFcnJvciBnZW5lcmF0ZUtl
eU51bWJlcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmll
ciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCYga2V5TnVtYmVyKSA9
IDA7CiAKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuY3BwCmluZGV4IGIxMGM0NTYu
LjI4ZDE4YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuY3BwCkBAIC04OCw2ICs4
OCwxMSBAQCB2b2lkIElEQkNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkR2V0UmVjb3JkKGNvbnN0IElE
QlJlc3VsdERhdGEmIHJlc3VsdCkKICAgICBtX2RlbGVnYXRlLT5kaWRHZXRSZWNvcmQocmVzdWx0
KTsKIH0KIAordm9pZCBJREJDb25uZWN0aW9uVG9DbGllbnQ6OmRpZEdldENvdW50KGNvbnN0IElE
QlJlc3VsdERhdGEmIHJlc3VsdCkKK3sKKyAgICBtX2RlbGVnYXRlLT5kaWRHZXRDb3VudChyZXN1
bHQpOworfQorCiB2b2lkIElEQkNvbm5lY3Rpb25Ub0NsaWVudDo6ZGlkQ29tbWl0VHJhbnNhY3Rp
b24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNv
bnN0IElEQkVycm9yJiBlcnJvcikKIHsKICAgICBtX2RlbGVnYXRlLT5kaWRDb21taXRUcmFuc2Fj
dGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIsIGVycm9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9D
bGllbnQuaAppbmRleCAyNDRkOThlLi43NjYyYjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0Ns
aWVudC5oCkBAIC01Nyw2ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENsZWFyT2JqZWN0
U3RvcmUoY29uc3QgSURCUmVzdWx0RGF0YSYpOwogICAgIHZvaWQgZGlkUHV0T3JBZGQoY29uc3Qg
SURCUmVzdWx0RGF0YSYpOwogICAgIHZvaWQgZGlkR2V0UmVjb3JkKGNvbnN0IElEQlJlc3VsdERh
dGEmKTsKKyAgICB2b2lkIGRpZEdldENvdW50KGNvbnN0IElEQlJlc3VsdERhdGEmKTsKIAogICAg
IHZvaWQgZmlyZVZlcnNpb25DaGFuZ2VFdmVudChVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24m
LCB1aW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uKTsKICAgICB2b2lkIGRpZFN0YXJ0VHJhbnNhY3Rp
b24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNv
bnN0IElEQkVycm9yJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50RGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnREZWxlZ2F0
ZS5oCmluZGV4IDMxZDBhNTAuLmFkMDQxYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnREZWxlZ2F0ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9u
VG9DbGllbnREZWxlZ2F0ZS5oCkBAIC01Myw2ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZGlkQ2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRhJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRQdXRPckFkZChjb25zdCBJREJSZXN1bHREYXRhJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRHZXRSZWNvcmQoY29uc3QgSURCUmVzdWx0RGF0YSYpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkR2V0Q291bnQoY29uc3QgSURCUmVzdWx0RGF0YSYpID0gMDsKIAog
ICAgIHZpcnR1YWwgdm9pZCBmaXJlVmVyc2lvbkNoYW5nZUV2ZW50KFVuaXF1ZUlEQkRhdGFiYXNl
Q29ubmVjdGlvbiYsIHVpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24pID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkU3RhcnRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRy
YW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImKSA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCmluZGV4
IDU4ODIzNjUuLjRiMGE3NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCkBAIC0yMTMsNiArMjEzLDE3IEBAIHZvaWQg
SURCU2VydmVyOjpnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBj
b25zdCBJREJLZXlSYW5nZURhCiAgICAgdHJhbnNhY3Rpb24tPmdldFJlY29yZChyZXF1ZXN0RGF0
YSwga2V5UmFuZ2VEYXRhKTsKIH0KIAordm9pZCBJREJTZXJ2ZXI6OmdldENvdW50KGNvbnN0IElE
QlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5n
ZURhdGEpCit7CisgICAgTE9HKEluZGV4ZWREQiwgIklEQlNlcnZlcjo6Z2V0Q291bnQiKTsKKwor
ICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQocmVxdWVzdERhdGEudHJh
bnNhY3Rpb25JZGVudGlmaWVyKCkpOworICAgIGlmICghdHJhbnNhY3Rpb24pCisgICAgICAgIHJl
dHVybjsKKworICAgIHRyYW5zYWN0aW9uLT5nZXRDb3VudChyZXF1ZXN0RGF0YSwga2V5UmFuZ2VE
YXRhKTsKK30KKwogdm9pZCBJREJTZXJ2ZXI6OmVzdGFibGlzaFRyYW5zYWN0aW9uKHVpbnQ2NF90
IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYg
aW5mbykKIHsKICAgICBMT0coSW5kZXhlZERCLCAiSURCU2VydmVyOjplc3RhYmxpc2hUcmFuc2Fj
dGlvbiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L0lEQlNlcnZlci5oCmluZGV4IDYxYjY5MmMuLmY2OWNiOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKQEAgLTY0LDYgKzY0
LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0
RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcik7CiAgICAgdm9pZCBwdXRPckFk
ZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBUaHJlYWRT
YWZlRGF0YUJ1ZmZlciYgdmFsdWVEYXRhLCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRl
TW9kZSk7CiAgICAgdm9pZCBnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJ
REJLZXlSYW5nZURhdGEmKTsKKyAgICB2b2lkIGdldENvdW50KGNvbnN0IElEQlJlcXVlc3REYXRh
JiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7CiAgICAgdm9pZCBlc3RhYmxpc2hUcmFuc2FjdGlv
bih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJUcmFuc2Fj
dGlvbkluZm8mKTsKICAgICB2b2lkIGRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZCh1aW50NjRfdCBk
YXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0
b3JlLmNwcAppbmRleCAyMDYwNmM5Li43MjJjNzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2lu
Z1N0b3JlLmNwcApAQCAtMjU5LDYgKzI1OSwyMyBAQCBJREJFcnJvciBNZW1vcnlJREJCYWNraW5n
U3RvcmU6OmdldFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQog
ICAgIHJldHVybiBJREJFcnJvcigpOwogfQogCitJREJFcnJvciBNZW1vcnlJREJCYWNraW5nU3Rv
cmU6OmdldENvdW50KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVu
dGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IElEQktleVJhbmdl
RGF0YSYgcmFuZ2UsIHVpbnQ2NF90JiBvdXRDb3VudCkKK3sKKyAgICBMT0coSW5kZXhlZERCLCAi
TWVtb3J5SURCQmFja2luZ1N0b3JlOjpnZXRDb3VudCIpOworCisgICAgQVNTRVJUKG9iamVjdFN0
b3JlSWRlbnRpZmllcik7CisKKyAgICBpZiAoIW1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5z
YWN0aW9uSWRlbnRpZmllcikpCisgICAgICAgIHJldHVybiBJREJFcnJvcihJREJFeGNlcHRpb25D
b2RlOjpVbmtub3duLCBXVEY6OkFTQ0lJTGl0ZXJhbCgiTm8gYmFja2luZyBzdG9yZSB0cmFuc2Fj
dGlvbiBmb3VuZCB0byBnZXQgY291bnQiKSk7CisKKyAgICBNZW1vcnlPYmplY3RTdG9yZSogb2Jq
ZWN0U3RvcmUgPSBtX29iamVjdFN0b3Jlc0J5SWRlbnRpZmllci5nZXQob2JqZWN0U3RvcmVJZGVu
dGlmaWVyKTsKKyAgICBpZiAoIW9iamVjdFN0b3JlKQorICAgICAgICByZXR1cm4gSURCRXJyb3Io
SURCRXhjZXB0aW9uQ29kZTo6VW5rbm93biwgV1RGOjpBU0NJSUxpdGVyYWwoIk5vIGJhY2tpbmcg
c3RvcmUgb2JqZWN0IHN0b3JlIGZvdW5kIikpOworCisgICAgb3V0Q291bnQgPSBvYmplY3RTdG9y
ZS0+Y291bnRGb3JLZXlSYW5nZShyYW5nZSk7CisgICAgcmV0dXJuIElEQkVycm9yKCk7Cit9CisK
IElEQkVycm9yIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Z2VuZXJhdGVLZXlOdW1iZXIoY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9i
amVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QmIGtleU51bWJlcikKIHsKICAgICBMT0coSW5k
ZXhlZERCLCAiTWVtb3J5SURCQmFja2luZ1N0b3JlOjpnZW5lcmF0ZUtleU51bWJlciIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlE
QkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oCmluZGV4IDI0NTFhZDkuLmEyOWZjOTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNr
aW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
TWVtb3J5SURCQmFja2luZ1N0b3JlLmgKQEAgLTU5LDYgKzU5LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgSURCRXJyb3IgZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYg
dHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNv
bnN0IElEQktleURhdGEmKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIElEQkVycm9yIHB1
dFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmll
ciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBJREJLZXlEYXRhJiwgY29u
c3QgVGhyZWFkU2FmZURhdGFCdWZmZXImIHZhbHVlKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0
dWFsIElEQkVycm9yIGdldFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5z
YWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBJ
REJLZXlSYW5nZURhdGEmLCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYgb3V0VmFsdWUpIG92ZXJyaWRl
IGZpbmFsOworICAgIHZpcnR1YWwgSURCRXJyb3IgZ2V0Q291bnQoY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRl
bnRpZmllciwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgdWludDY0X3QmIG91dENvdW50KSBvdmVy
cmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIElEQkVycm9yIGdlbmVyYXRlS2V5TnVtYmVyKGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBv
YmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90JiBrZXlOdW1iZXIpIG92ZXJyaWRlIGZpbmFs
OwogCiAgICAgdm9pZCByZW1vdmVPYmplY3RTdG9yZUZvclZlcnNpb25DaGFuZ2VBYm9ydChNZW1v
cnlPYmplY3RTdG9yZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHAKaW5kZXggZTMwYTA1Ny4u
NmU3M2FlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwCkBAIC0xMzEsMzcgKzEzMSw2OSBA
QCB2b2lkIE1lbW9yeU9iamVjdFN0b3JlOjpzZXRLZXlWYWx1ZShjb25zdCBJREJLZXlEYXRhJiBr
ZXlEYXRhLCBjb25zdCBUaHJlYWRTYWZlRAogICAgICAgICBtX29yZGVyZWRLZXlzLT5pbnNlcnQo
a2V5RGF0YSk7CiB9CiAKK3VpbnQ2NF90IE1lbW9yeU9iamVjdFN0b3JlOjpjb3VudEZvcktleVJh
bmdlKGNvbnN0IElEQktleVJhbmdlRGF0YSYgaW5SYW5nZSkgY29uc3QKK3sKKyAgICBMT0coSW5k
ZXhlZERCLCAiTWVtb3J5T2JqZWN0U3RvcmU6OmNvdW50Rm9yS2V5UmFuZ2UiKTsKKworICAgIGlm
ICghbV9rZXlWYWx1ZVN0b3JlKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHVpbnQ2NF90IGNv
dW50ID0gMDsKKyAgICBJREJLZXlSYW5nZURhdGEgcmFuZ2UgPSBpblJhbmdlOworICAgIHdoaWxl
ICh0cnVlKSB7CisgICAgICAgIGF1dG8ga2V5ID0gbG93ZXN0S2V5V2l0aFJlY29yZEluUmFuZ2Uo
cmFuZ2UpOworICAgICAgICBpZiAoa2V5LmlzTnVsbCgpKQorICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgKytjb3VudDsKKyAgICAgICAgcmFuZ2UubG93ZXJLZXkgPSBrZXk7CisgICAgICAg
IHJhbmdlLmxvd2VyT3BlbiA9IHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGNvdW50OworfQor
CiBUaHJlYWRTYWZlRGF0YUJ1ZmZlciBNZW1vcnlPYmplY3RTdG9yZTo6dmFsdWVGb3JLZXlSYW5n
ZShjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSkgY29uc3QKIHsKICAgICBMT0co
SW5kZXhlZERCLCAiTWVtb3J5T2JqZWN0U3RvcmU6OnZhbHVlRm9yS2V5Iik7CiAKLSAgICBpZiAo
IW1fa2V5VmFsdWVTdG9yZSkKKyAgICBJREJLZXlEYXRhIGtleSA9IGxvd2VzdEtleVdpdGhSZWNv
cmRJblJhbmdlKGtleVJhbmdlRGF0YSk7CisgICAgaWYgKGtleS5pc051bGwoKSkKICAgICAgICAg
cmV0dXJuIFRocmVhZFNhZmVEYXRhQnVmZmVyKCk7CiAKLSAgICBpZiAoa2V5UmFuZ2VEYXRhLmlz
RXhhY3RseU9uZUtleSgpKQotICAgICAgICByZXR1cm4gbV9rZXlWYWx1ZVN0b3JlLT5nZXQoa2V5
UmFuZ2VEYXRhLmxvd2VyS2V5KTsKKyAgICBBU1NFUlQobV9rZXlWYWx1ZVN0b3JlKTsKKyAgICBy
ZXR1cm4gbV9rZXlWYWx1ZVN0b3JlLT5nZXQoa2V5KTsKK30KKworSURCS2V5RGF0YSBNZW1vcnlP
YmplY3RTdG9yZTo6bG93ZXN0S2V5V2l0aFJlY29yZEluUmFuZ2UoY29uc3QgSURCS2V5UmFuZ2VE
YXRhJiBrZXlSYW5nZURhdGEpIGNvbnN0Cit7CisgICAgaWYgKCFtX2tleVZhbHVlU3RvcmUpCisg
ICAgICAgIHJldHVybiB7IH07CisKKyAgICBpZiAoa2V5UmFuZ2VEYXRhLmlzRXhhY3RseU9uZUtl
eSgpICYmIG1fa2V5VmFsdWVTdG9yZS0+Y29udGFpbnMoa2V5UmFuZ2VEYXRhLmxvd2VyS2V5KSkK
KyAgICAgICAgcmV0dXJuIGtleVJhbmdlRGF0YS5sb3dlcktleTsKIAogICAgIEFTU0VSVChtX29y
ZGVyZWRLZXlzKTsKIAogICAgIGF1dG8gbG93ZXN0SW5SYW5nZSA9IG1fb3JkZXJlZEtleXMtPmxv
d2VyX2JvdW5kKGtleVJhbmdlRGF0YS5sb3dlcktleSk7CiAKICAgICBpZiAobG93ZXN0SW5SYW5n
ZSA9PSBtX29yZGVyZWRLZXlzLT5lbmQoKSkKLSAgICAgICAgcmV0dXJuIFRocmVhZFNhZmVEYXRh
QnVmZmVyKCk7CisgICAgICAgIHJldHVybiB7IH07CiAKICAgICBpZiAoa2V5UmFuZ2VEYXRhLmxv
d2VyT3BlbiAmJiAqbG93ZXN0SW5SYW5nZSA9PSBrZXlSYW5nZURhdGEubG93ZXJLZXkpCiAgICAg
ICAgICsrbG93ZXN0SW5SYW5nZTsKIAogICAgIGlmIChsb3dlc3RJblJhbmdlID09IG1fb3JkZXJl
ZEtleXMtPmVuZCgpKQotICAgICAgICByZXR1cm4gVGhyZWFkU2FmZURhdGFCdWZmZXIoKTsKKyAg
ICAgICAgcmV0dXJuIHsgfTsKIAogICAgIGlmICgha2V5UmFuZ2VEYXRhLnVwcGVyS2V5LmlzTnVs
bCgpKSB7CiAgICAgICAgIGlmIChsb3dlc3RJblJhbmdlLT5jb21wYXJlKGtleVJhbmdlRGF0YS51
cHBlcktleSkgPiAwKQotICAgICAgICAgICAgcmV0dXJuIFRocmVhZFNhZmVEYXRhQnVmZmVyKCk7
CisgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICBpZiAoa2V5UmFuZ2VEYXRhLnVwcGVy
T3BlbiAmJiAqbG93ZXN0SW5SYW5nZSA9PSBrZXlSYW5nZURhdGEudXBwZXJLZXkpCi0gICAgICAg
ICAgICByZXR1cm4gVGhyZWFkU2FmZURhdGFCdWZmZXIoKTsKKyAgICAgICAgICAgIHJldHVybiB7
IH07CiAgICAgfQogCi0gICAgcmV0dXJuIG1fa2V5VmFsdWVTdG9yZS0+Z2V0KCpsb3dlc3RJblJh
bmdlKTsKKyAgICByZXR1cm4gKmxvd2VzdEluUmFuZ2U7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIElE
QlNlcnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL01lbW9yeU9iamVjdFN0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaAppbmRleCA1NjY0NmE1Li5mNzQ1M2ZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2Jq
ZWN0U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
TWVtb3J5T2JqZWN0U3RvcmUuaApAQCAtNjksMTIgKzY5LDE1IEBAIHB1YmxpYzoKICAgICB2b2lk
IHJlcGxhY2VLZXlWYWx1ZVN0b3JlKHN0ZDo6dW5pcXVlX3B0cjxLZXlWYWx1ZU1hcD4mJik7CiAK
ICAgICBUaHJlYWRTYWZlRGF0YUJ1ZmZlciB2YWx1ZUZvcktleVJhbmdlKGNvbnN0IElEQktleVJh
bmdlRGF0YSYpIGNvbnN0OworICAgIHVpbnQ2NF90IGNvdW50Rm9yS2V5UmFuZ2UoY29uc3QgSURC
S2V5UmFuZ2VEYXRhJikgY29uc3Q7CiAKICAgICBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIGlu
Zm8oKSBjb25zdCB7IHJldHVybiBtX2luZm87IH0KIAogcHJpdmF0ZToKICAgICBNZW1vcnlPYmpl
Y3RTdG9yZShjb25zdCBJREJPYmplY3RTdG9yZUluZm8mKTsKIAorICAgIElEQktleURhdGEgbG93
ZXN0S2V5V2l0aFJlY29yZEluUmFuZ2UoY29uc3QgSURCS2V5UmFuZ2VEYXRhJikgY29uc3Q7CisK
ICAgICBJREJPYmplY3RTdG9yZUluZm8gbV9pbmZvOwogCiAgICAgTWVtb3J5QmFja2luZ1N0b3Jl
VHJhbnNhY3Rpb24qIG1fd3JpdGVUcmFuc2FjdGlvbiB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURC
RGF0YWJhc2UuY3BwCmluZGV4IDBjYjU5MTguLmUwZThkODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFi
YXNlLmNwcApAQCAtMTM2LDIxICsxMzYsMzIgQEAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlVW5p
cXVlQ2FsbGJhY2tJZGVudGlmaWVyKCkKIHVpbnQ2NF90IFVuaXF1ZUlEQkRhdGFiYXNlOjpzdG9y
ZUNhbGxiYWNrKEVycm9yQ2FsbGJhY2sgY2FsbGJhY2spCiB7CiAgICAgdWludDY0X3QgaWRlbnRp
ZmllciA9IGdlbmVyYXRlVW5pcXVlQ2FsbGJhY2tJZGVudGlmaWVyKCk7Ci0gICAgbV9lcnJvckNh
bGxiYWNrcy5zZXQoaWRlbnRpZmllciwgY2FsbGJhY2spOworICAgIEFTU0VSVCghbV9lcnJvckNh
bGxiYWNrcy5jb250YWlucyhpZGVudGlmaWVyKSk7CisgICAgbV9lcnJvckNhbGxiYWNrcy5hZGQo
aWRlbnRpZmllciwgY2FsbGJhY2spOwogICAgIHJldHVybiBpZGVudGlmaWVyOwogfQogCiB1aW50
NjRfdCBVbmlxdWVJREJEYXRhYmFzZTo6c3RvcmVDYWxsYmFjayhLZXlEYXRhQ2FsbGJhY2sgY2Fs
bGJhY2spCiB7CiAgICAgdWludDY0X3QgaWRlbnRpZmllciA9IGdlbmVyYXRlVW5pcXVlQ2FsbGJh
Y2tJZGVudGlmaWVyKCk7Ci0gICAgbV9rZXlEYXRhQ2FsbGJhY2tzLnNldChpZGVudGlmaWVyLCBj
YWxsYmFjayk7CisgICAgQVNTRVJUKCFtX2tleURhdGFDYWxsYmFja3MuY29udGFpbnMoaWRlbnRp
ZmllcikpOworICAgIG1fa2V5RGF0YUNhbGxiYWNrcy5hZGQoaWRlbnRpZmllciwgY2FsbGJhY2sp
OwogICAgIHJldHVybiBpZGVudGlmaWVyOwogfQogCiB1aW50NjRfdCBVbmlxdWVJREJEYXRhYmFz
ZTo6c3RvcmVDYWxsYmFjayhWYWx1ZURhdGFDYWxsYmFjayBjYWxsYmFjaykKIHsKICAgICB1aW50
NjRfdCBpZGVudGlmaWVyID0gZ2VuZXJhdGVVbmlxdWVDYWxsYmFja0lkZW50aWZpZXIoKTsKLSAg
ICBtX3ZhbHVlRGF0YUNhbGxiYWNrcy5zZXQoaWRlbnRpZmllciwgY2FsbGJhY2spOworICAgIEFT
U0VSVCghbV92YWx1ZURhdGFDYWxsYmFja3MuY29udGFpbnMoaWRlbnRpZmllcikpOworICAgIG1f
dmFsdWVEYXRhQ2FsbGJhY2tzLmFkZChpZGVudGlmaWVyLCBjYWxsYmFjayk7CisgICAgcmV0dXJu
IGlkZW50aWZpZXI7Cit9CisKK3VpbnQ2NF90IFVuaXF1ZUlEQkRhdGFiYXNlOjpzdG9yZUNhbGxi
YWNrKENvdW50Q2FsbGJhY2sgY2FsbGJhY2spCit7CisgICAgdWludDY0X3QgaWRlbnRpZmllciA9
IGdlbmVyYXRlVW5pcXVlQ2FsbGJhY2tJZGVudGlmaWVyKCk7CisgICAgQVNTRVJUKCFtX2NvdW50
Q2FsbGJhY2tzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKyAgICBtX2NvdW50Q2FsbGJhY2tzLmFk
ZChpZGVudGlmaWVyLCBjYWxsYmFjayk7CiAgICAgcmV0dXJuIGlkZW50aWZpZXI7CiB9CiAKQEAg
LTQzMSw2ICs0NDIsMzcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVyZm9ybUdldFJl
Y29yZCh1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IEkKICAgICBwZXJmb3JtVmFs
dWVEYXRhQ2FsbGJhY2soY2FsbGJhY2tJZGVudGlmaWVyLCBlcnJvciwgcmVzdWx0RGF0YSk7CiB9
CiAKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmdldENvdW50KGNvbnN0IElEQlJlcXVlc3REYXRh
JiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiByYW5nZSwgQ291bnRDYWxsYmFj
ayBjYWxsYmFjaykKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIExPRyhJbmRl
eGVkREIsICIobWFpbikgVW5pcXVlSURCRGF0YWJhc2U6OmdldENvdW50Iik7CisKKyAgICB1aW50
NjRfdCBjYWxsYmFja0lEID0gc3RvcmVDYWxsYmFjayhjYWxsYmFjayk7CisgICAgbV9zZXJ2ZXIu
cG9zdERhdGFiYXNlVGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJE
YXRhYmFzZTo6cGVyZm9ybUdldENvdW50LCBjYWxsYmFja0lELCByZXF1ZXN0RGF0YS50cmFuc2Fj
dGlvbklkZW50aWZpZXIoKSwgcmVxdWVzdERhdGEub2JqZWN0U3RvcmVJZGVudGlmaWVyKCksIHJh
bmdlKSk7Cit9CisKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnBlcmZvcm1HZXRDb3VudCh1aW50
NjRfdCBjYWxsYmFja0lkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJh
bnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0
IElEQktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhKQoreworICAgIEFTU0VSVCghaXNNYWluVGhy
ZWFkKCkpOworICAgIExPRyhJbmRleGVkREIsICIoZGIpIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJm
b3JtR2V0Q291bnQiKTsKKworICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CisgICAgQVNTRVJU
KG9iamVjdFN0b3JlSWRlbnRpZmllcik7CisKKyAgICB1aW50NjRfdCBjb3VudDsKKyAgICBJREJF
cnJvciBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5nZXRDb3VudCh0cmFuc2FjdGlvbklkZW50aWZp
ZXIsIG9iamVjdFN0b3JlSWRlbnRpZmllciwga2V5UmFuZ2VEYXRhLCBjb3VudCk7CisKKyAgICBt
X3NlcnZlci5wb3N0RGF0YWJhc2VUYXNrUmVwbHkoY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlz
LCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1HZXRDb3VudCwgY2FsbGJhY2tJZGVudGlm
aWVyLCBlcnJvciwgY291bnQpKTsKK30KKwordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUGVy
Zm9ybUdldENvdW50KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3Im
IGVycm9yLCB1aW50NjRfdCBjb3VudCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgIExPRyhJbmRleGVkREIsICIobWFpbikgVW5pcXVlSURCRGF0YWJhc2U6OmRpZFBlcmZvcm1H
ZXRDb3VudCIpOworCisgICAgcGVyZm9ybUNvdW50Q2FsbGJhY2soY2FsbGJhY2tJZGVudGlmaWVy
LCBlcnJvciwgY291bnQpOworfQorCiB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjb21taXRUcmFu
c2FjdGlvbihVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgRXJyb3JD
YWxsYmFjayBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAtNzAx
LDYgKzc0MywxMyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtVmFsdWVEYXRhQ2Fs
bGJhY2sodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjbwogICAgIGNhbGxiYWNrKGVycm9y
LCByZXN1bHREYXRhKTsKIH0KIAordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cGVyZm9ybUNvdW50
Q2FsbGJhY2sodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJFcnJvciYgZXJy
b3IsIHVpbnQ2NF90IGNvdW50KQoreworICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NvdW50Q2FsbGJh
Y2tzLnRha2UoY2FsbGJhY2tJZGVudGlmaWVyKTsKKyAgICBBU1NFUlQoY2FsbGJhY2spOworICAg
IGNhbGxiYWNrKGVycm9yLCBjb3VudCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIElEQlNlcnZlcgog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCmluZGV4IGI1Y2Zk
YzkuLjFjODgxMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5oCkBAIC01Niw2ICs1Niw3IEBAIGNs
YXNzIElEQlNlcnZlcjsKIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IElEQkVycm9y
Jik+IEVycm9yQ2FsbGJhY2s7CiB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBJREJF
cnJvciYsIGNvbnN0IElEQktleURhdGEmKT4gS2V5RGF0YUNhbGxiYWNrOwogdHlwZWRlZiBzdGQ6
OmZ1bmN0aW9uPHZvaWQoY29uc3QgSURCRXJyb3ImLCBjb25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZl
ciYpPiBWYWx1ZURhdGFDYWxsYmFjazsKK3R5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0
IElEQkVycm9yJiwgdWludDY0X3QpPiBDb3VudENhbGxiYWNrOwogCiBjbGFzcyBVbmlxdWVJREJE
YXRhYmFzZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxVbmlxdWVJREJEYXRhYmFzZT4g
ewogcHVibGljOgpAQCAtNzQsNiArNzUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhck9iamVj
dFN0b3JlKFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mLCB1aW50NjRfdCBvYmplY3RTdG9y
ZUlkZW50aWZpZXIsIEVycm9yQ2FsbGJhY2spOwogICAgIHZvaWQgcHV0T3JBZGQoY29uc3QgSURC
UmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlEYXRhJiwgY29uc3QgVGhyZWFkU2FmZURhdGFCdWZm
ZXImIHZhbHVlRGF0YSwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0ZU1vZGUsIEtleURh
dGFDYWxsYmFjayk7CiAgICAgdm9pZCBnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBj
b25zdCBJREJLZXlSYW5nZURhdGEmLCBWYWx1ZURhdGFDYWxsYmFjayk7CisgICAgdm9pZCBnZXRD
b3VudChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIENvdW50
Q2FsbGJhY2spOwogICAgIHZvaWQgY29tbWl0VHJhbnNhY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VU
cmFuc2FjdGlvbiYsIEVycm9yQ2FsbGJhY2spOwogICAgIHZvaWQgYWJvcnRUcmFuc2FjdGlvbihV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiwgRXJyb3JDYWxsYmFjayk7CiAgICAgdm9pZCB0
cmFuc2FjdGlvbkRlc3Ryb3llZChVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJik7CkBAIC0x
MDQsNiArMTA2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBlcmZvcm1DbGVhck9iamVjdFN0b3Jl
KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcik7
CiAgICAgdm9pZCBwZXJmb3JtUHV0T3JBZGQodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0
X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBJREJLZXlEYXRhJiwgY29uc3QgVGhyZWFk
U2FmZURhdGFCdWZmZXImIHZhbHVlRGF0YSwgSW5kZXhlZERCOjpPYmplY3RTdG9yZU92ZXJ3cml0
ZU1vZGUpOwogICAgIHZvaWQgcGVyZm9ybUdldFJlY29yZCh1aW50NjRfdCBjYWxsYmFja0lkZW50
aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVy
LCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IElEQktleVJhbmdlRGF0YSYp
OworICAgIHZvaWQgcGVyZm9ybUdldENvdW50KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwg
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2
NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7CiAgICAg
dm9pZCBwZXJmb3JtQWN0aXZhdGVUcmFuc2FjdGlvbkluQmFja2luZ1N0b3JlKHVpbnQ2NF90IGNh
bGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJik7CiAKICAgICAvLyBN
YWluIHRocmVhZCBjYWxsYmFja3MKQEAgLTExMyw2ICsxMTYsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgZGlkUGVyZm9ybUNsZWFyT2JqZWN0U3RvcmUodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVy
LCBjb25zdCBJREJFcnJvciYpOwogICAgIHZvaWQgZGlkUGVyZm9ybVB1dE9yQWRkKHVpbnQ2NF90
IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImLCBjb25zdCBJREJLZXlEYXRhJik7
CiAgICAgdm9pZCBkaWRQZXJmb3JtR2V0UmVjb3JkKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmll
ciwgY29uc3QgSURCRXJyb3ImLCBjb25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYpOworICAgIHZv
aWQgZGlkUGVyZm9ybUdldENvdW50KHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3Qg
SURCRXJyb3ImLCB1aW50NjRfdCk7CiAgICAgdm9pZCBkaWRQZXJmb3JtQ29tbWl0VHJhbnNhY3Rp
b24odWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJFcnJvciYsIGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKICAgICB2b2lkIGRp
ZFBlcmZvcm1BYm9ydFRyYW5zYWN0aW9uKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29u
c3QgSURCRXJyb3ImLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRl
bnRpZmllcik7CiAgICAgdm9pZCBkaWRQZXJmb3JtQWN0aXZhdGVUcmFuc2FjdGlvbkluQmFja2lu
Z1N0b3JlKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImKTsKQEAg
LTEyMCwxMCArMTI0LDEyIEBAIHByaXZhdGU6CiAgICAgdWludDY0X3Qgc3RvcmVDYWxsYmFjayhF
cnJvckNhbGxiYWNrKTsKICAgICB1aW50NjRfdCBzdG9yZUNhbGxiYWNrKEtleURhdGFDYWxsYmFj
ayk7CiAgICAgdWludDY0X3Qgc3RvcmVDYWxsYmFjayhWYWx1ZURhdGFDYWxsYmFjayk7CisgICAg
dWludDY0X3Qgc3RvcmVDYWxsYmFjayhDb3VudENhbGxiYWNrKTsKIAogICAgIHZvaWQgcGVyZm9y
bUVycm9yQ2FsbGJhY2sodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJFcnJv
ciYpOwogICAgIHZvaWQgcGVyZm9ybUtleURhdGFDYWxsYmFjayh1aW50NjRfdCBjYWxsYmFja0lk
ZW50aWZpZXIsIGNvbnN0IElEQkVycm9yJiwgY29uc3QgSURCS2V5RGF0YSYpOwogICAgIHZvaWQg
cGVyZm9ybVZhbHVlRGF0YUNhbGxiYWNrKHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciwgY29u
c3QgSURCRXJyb3ImLCBjb25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYpOworICAgIHZvaWQgcGVy
Zm9ybUNvdW50Q2FsbGJhY2sodWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyLCBjb25zdCBJREJF
cnJvciYsIHVpbnQ2NF90KTsKIAogICAgIHZvaWQgaW52b2tlVHJhbnNhY3Rpb25TY2hlZHVsZXIo
KTsKICAgICB2b2lkIHRyYW5zYWN0aW9uU2NoZWR1bGluZ1RpbWVyRmlyZWQoKTsKQEAgLTE0Nyw2
ICsxNTMsNyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8dWludDY0X3QsIEVycm9yQ2FsbGJhY2s+
IG1fZXJyb3JDYWxsYmFja3M7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgS2V5RGF0YUNhbGxiYWNr
PiBtX2tleURhdGFDYWxsYmFja3M7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgVmFsdWVEYXRhQ2Fs
bGJhY2s+IG1fdmFsdWVEYXRhQ2FsbGJhY2tzOworICAgIEhhc2hNYXA8dWludDY0X3QsIENvdW50
Q2FsbGJhY2s+IG1fY291bnRDYWxsYmFja3M7CiAKICAgICBUaW1lciBtX3RyYW5zYWN0aW9uU2No
ZWR1bGluZ1RpbWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
bi5jcHAKaW5kZXggZDYwMTQxZi4uY2ZmZDI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uLmNwcApAQCAtMTgxLDYgKzE4MSwyMyBAQCB2b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlVHJhbnNhY3Rpb246OmdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVx
dWVzdERhdGEsCiAgICAgfSk7CiB9CiAKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
bjo6Z2V0Q291bnQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJL
ZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSkKK3sKKyAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6Z2V0Q291bnQiKTsKKworICAgIEFTU0VSVChtX3RyYW5z
YWN0aW9uSW5mby5pZGVudGlmaWVyKCkgPT0gcmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlm
aWVyKCkpOworCisgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+IHNlbGYo
dGhpcyk7CisgICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRhdGFiYXNlKCkuZ2V0Q291bnQocmVx
dWVzdERhdGEsIGtleVJhbmdlRGF0YSwgW3RoaXMsIHNlbGYsIHJlcXVlc3REYXRhXShjb25zdCBJ
REJFcnJvciYgZXJyb3IsIHVpbnQ2NF90IGNvdW50KSB7CisgICAgICAgIExPRyhJbmRleGVkREIs
ICJVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpnZXRDb3VudCAoY2FsbGJhY2spIik7CisK
KyAgICAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQorICAgICAgICAgICAgbV9kYXRhYmFzZUNvbm5l
Y3Rpb24tPmNvbm5lY3Rpb25Ub0NsaWVudCgpLmRpZEdldENvdW50KElEQlJlc3VsdERhdGE6Omdl
dENvdW50U3VjY2VzcyhyZXF1ZXN0RGF0YS5yZXF1ZXN0SWRlbnRpZmllcigpLCBjb3VudCkpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2RhdGFiYXNlQ29ubmVjdGlvbi0+Y29ubmVjdGlv
blRvQ2xpZW50KCkuZGlkR2V0Q291bnQoSURCUmVzdWx0RGF0YTo6ZXJyb3IocmVxdWVzdERhdGEu
cmVxdWVzdElkZW50aWZpZXIoKSwgZXJyb3IpKTsKKyAgICB9KTsKK30KKwogY29uc3QgVmVjdG9y
PHVpbnQ2NF90PiYgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmVJZGVu
dGlmaWVycygpCiB7CiAgICAgaWYgKCFtX29iamVjdFN0b3JlSWRlbnRpZmllcnMuaXNFbXB0eSgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1Vu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmgKaW5kZXggYzNlZDNm
Ny4uOTM0OGI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5o
CkBAIC02OSw2ICs2OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyT2JqZWN0U3RvcmUoY29u
c3QgSURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpOwogICAg
IHZvaWQgcHV0T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlEYXRhJiwg
Y29uc3QgVGhyZWFkU2FmZURhdGFCdWZmZXImIHZhbHVlRGF0YSwgSW5kZXhlZERCOjpPYmplY3RT
dG9yZU92ZXJ3cml0ZU1vZGUpOwogICAgIHZvaWQgZ2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3RE
YXRhJiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJik7CisgICAgdm9pZCBnZXRDb3VudChjb25zdCBJ
REJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpOwogCiAgICAgdm9pZCBkaWRB
Y3RpdmF0ZUluQmFja2luZ1N0b3JlKGNvbnN0IElEQkVycm9yJik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNw
cAppbmRleCAyY2Y1YzNkLi41NDIyM2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuY3BwCkBAIC01MCw2ICs1
MCw3IEBAIElEQlJlc3VsdERhdGE6OklEQlJlc3VsdERhdGEoY29uc3QgSURCUmVzdWx0RGF0YSYg
b3RoZXIpCiAgICAgLCBtX3JlcXVlc3RJZGVudGlmaWVyKG90aGVyLm1fcmVxdWVzdElkZW50aWZp
ZXIpCiAgICAgLCBtX2Vycm9yKG90aGVyLm1fZXJyb3IpCiAgICAgLCBtX2RhdGFiYXNlQ29ubmVj
dGlvbklkZW50aWZpZXIob3RoZXIubV9kYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKQorICAg
ICwgbV9yZXN1bHRJbnRlZ2VyKG90aGVyLm1fcmVzdWx0SW50ZWdlcikKICAgICAsIG1fcmVzdWx0
RGF0YShvdGhlci5tX3Jlc3VsdERhdGEpCiB7CiAgICAgaWYgKG90aGVyLm1fZGF0YWJhc2VJbmZv
KQpAQCAtMTE3LDYgKzExOCwxMyBAQCBJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6OmdldFJl
Y29yZFN1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZQogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKK0lEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6Z2V0Q291bnRTdWNj
ZXNzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2
NF90IGNvdW50KQoreworICAgIElEQlJlc3VsdERhdGEgcmVzdWx0KElEQlJlc3VsdFR5cGU6Okdl
dFJlY29yZFN1Y2Nlc3MsIHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICByZXN1bHQubV9yZXN1bHRJ
bnRlZ2VyID0gY291bnQ7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogY29uc3QgSURCRGF0YWJh
c2VJbmZvJiBJREJSZXN1bHREYXRhOjpkYXRhYmFzZUluZm8oKSBjb25zdAogewogICAgIFJFTEVB
U0VfQVNTRVJUKG1fZGF0YWJhc2VJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5oCmluZGV4IDlkNjUzMTYuLmI4
MzcwMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JREJSZXN1bHREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2hhcmVkL0lEQlJlc3VsdERhdGEuaApAQCAtNDksNiArNDksNyBAQCBlbnVtIGNsYXNzIElEQlJl
c3VsdFR5cGUgewogICAgIENsZWFyT2JqZWN0U3RvcmVTdWNjZXNzLAogICAgIFB1dE9yQWRkU3Vj
Y2VzcywKICAgICBHZXRSZWNvcmRTdWNjZXNzLAorICAgIEdldENvdW50U3VjY2VzcywKIH07CiAK
IG5hbWVzcGFjZSBJREJTZXJ2ZXIgewpAQCAtNjYsNiArNjcsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIElEQlJlc3VsdERhdGEgY2xlYXJPYmplY3RTdG9yZVN1Y2Nlc3MoY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJik7CiAgICAgc3RhdGljIElEQlJlc3VsdERhdGEgcHV0T3JBZGRTdWNjZXNz
KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYsIGNvbnN0IElEQktleURhdGEmKTsKICAgICBz
dGF0aWMgSURCUmVzdWx0RGF0YSBnZXRSZWNvcmRTdWNjZXNzKGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYsIGNvbnN0IFRocmVhZFNhZmVEYXRhQnVmZmVyJiB2YWx1ZURhdGEpOworICAgIHN0
YXRpYyBJREJSZXN1bHREYXRhIGdldENvdW50U3VjY2Vzcyhjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImLCB1aW50NjRfdCBjb3VudCk7CiAKICAgICBJREJSZXN1bHREYXRhKGNvbnN0IElEQlJl
c3VsdERhdGEmKTsKIApAQCAtODAsNiArODIsNyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBJREJL
ZXlEYXRhKiByZXN1bHRLZXkoKSBjb25zdCB7IHJldHVybiBtX3Jlc3VsdEtleS5nZXQoKTsgfQog
ICAgIGNvbnN0IFRocmVhZFNhZmVEYXRhQnVmZmVyJiByZXN1bHREYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9yZXN1bHREYXRhOyB9CisgICAgdWludDY0X3QgcmVzdWx0SW50ZWdlcigpIGNvbnN0IHsg
cmV0dXJuIG1fcmVzdWx0SW50ZWdlcjsgfQogCiBwcml2YXRlOgogICAgIElEQlJlc3VsdERhdGEo
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJik7CkBAIC05Myw2ICs5Niw3IEBAIHByaXZhdGU6
CiAgICAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gbV9kYXRhYmFzZUluZm87CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPElEQlRyYW5zYWN0aW9uSW5mbz4gbV90cmFuc2FjdGlvbkluZm87
CiAgICAgc3RkOjp1bmlxdWVfcHRyPElEQktleURhdGE+IG1fcmVzdWx0S2V5OworICAgIHVpbnQ2
NF90IG1fcmVzdWx0SW50ZWdlciB7IDAgfTsKICAgICBUaHJlYWRTYWZlRGF0YUJ1ZmZlciBtX3Jl
c3VsdERhdGE7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCmluZGV4IDgwZDcyMWIu
LjQ3MDYzMmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
aGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcApAQCAtMTU5LDYgKzE1OSwx
NCBAQCB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkR2V0UmVjb3JkKGNvbnN0IElEQlJlc3Vs
dERhdGEmIHJlc3VsdERhdGEpCiAgICAgfSk7CiB9CiAKK3ZvaWQgSW5Qcm9jZXNzSURCU2VydmVy
OjpkaWRHZXRDb3VudChjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIFJl
ZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7CisgICAgUnVuTG9vcDo6Y3VycmVu
dCgpLmRpc3BhdGNoKFt0aGlzLCBzZWxmLCByZXN1bHREYXRhXSB7CisgICAgICAgIG1fY29ubmVj
dGlvblRvU2VydmVyLT5kaWRHZXRDb3VudChyZXN1bHREYXRhKTsKKyAgICB9KTsKK30KKwogdm9p
ZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmFib3J0VHJhbnNhY3Rpb24oSURCUmVzb3VyY2VJZGVudGlm
aWVyJiByZXNvdXJjZUlkZW50aWZpZXIpCiB7CiAgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZl
cj4gc2VsZih0aGlzKTsKQEAgLTIxOSw2ICsyMjcsMTMgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2
ZXI6OmdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElE
QksKICAgICB9KTsKIH0KIAordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmdldENvdW50KGNvbnN0
IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlS
YW5nZURhdGEpCit7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2VsZih0aGlzKTsK
KyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHNlbGYsIHJlcXVlc3REYXRh
LCBrZXlSYW5nZURhdGFdIHsKKyAgICAgICAgbV9zZXJ2ZXItPmdldENvdW50KHJlcXVlc3REYXRh
LCBrZXlSYW5nZURhdGEpOworICAgIH0pOworfQogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmVz
dGFibGlzaFRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIs
IGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgaW5mbykKIHsKICAgICBSZWZQdHI8SW5Qcm9jZXNz
SURCU2VydmVyPiBzZWxmKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5oCmluZGV4IDQwOGJm
MTYuLjUyZTc4MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmgKQEAgLTYzLDYgKzYzLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjbGVhck9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVl
c3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKSBvdmVycmlkZSBmaW5hbDsK
ICAgICB2aXJ0dWFsIHZvaWQgcHV0T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBJREJLZXkq
LCBTZXJpYWxpemVkU2NyaXB0VmFsdWUmLCBjb25zdCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3Zl
cndyaXRlTW9kZSkgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCB2b2lkIGdldFJlY29yZChj
b25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpIG92ZXJyaWRlIGZp
bmFsOworICAgIHZpcnR1YWwgdm9pZCBnZXRDb3VudChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNv
bnN0IElEQktleVJhbmdlRGF0YSYpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCBl
c3RhYmxpc2hUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVy
LCBjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFs
IHZvaWQgZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlv
bklkZW50aWZpZXIpIG92ZXJyaWRlIGZpbmFsOwogCkBAIC03Nyw2ICs3OCw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRh
Jikgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCB2b2lkIGRpZFB1dE9yQWRkKGNvbnN0IElE
QlJlc3VsdERhdGEmKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkR2V0UmVj
b3JkKGNvbnN0IElEQlJlc3VsdERhdGEmKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkR2V0Q291bnQoY29uc3QgSURCUmVzdWx0RGF0YSYpIG92ZXJyaWRlIGZpbmFsOwogICAg
IHZpcnR1YWwgdm9pZCBmaXJlVmVyc2lvbkNoYW5nZUV2ZW50KElEQlNlcnZlcjo6VW5pcXVlSURC
RGF0YWJhc2VDb25uZWN0aW9uJiwgdWludDY0X3QgcmVxdWVzdGVkVmVyc2lvbikgb3ZlcnJpZGUg
ZmluYWw7CiAgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVz
b3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkVycm9yJikg
b3ZlcnJpZGUgZmluYWw7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>