<?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>150033</bug_id>
          
          <creation_ts>2015-10-12 10:15:53 -0700</creation_ts>
          <short_desc>Modern IDB: Start version change transaction for connections to new database</short_desc>
          <delta_ts>2015-10-12 15:52:49 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></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>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1132342</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-10-12 10:15:53 -0700</bug_when>
    <thetext>Modern IDB: Start version change transaction for connections to new database

Can&apos;t do anything with the transaction yet - That&apos;ll be next.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132350</commentid>
    <comment_count>1</comment_count>
      <attachid>262897</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-10-12 10:27:18 -0700</bug_when>
    <thetext>Created attachment 262897
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132387</commentid>
    <comment_count>2</comment_count>
      <attachid>262897</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-10-12 11:23:58 -0700</bug_when>
    <thetext>Comment on attachment 262897
Patch v1

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

Looks good.  Nothing jumps out as wrong.  A few small comments.

&gt; LayoutTests/storage/indexeddb/modern/opendatabase-request-event-expected.txt:3
&gt; +ALERT: upgradeneeded: old version - 0 new version - 1

Ideas for future tests:
Upgrade to a different number, like 42
Upgrade to INT64_MAX
Upgrade to INT64_MAX - 1
Upgrade to a smaller positive number
Upgrade to a negative number and 0
Upgrade to a string or an object.
Upgrade to a non-integer number

&gt; LayoutTests/storage/indexeddb/modern/opendatabase-request-event.html:17
&gt; +    window.indexedDB.open(&quot;TestDatabase&quot;, 0);

Why does this make a Type error?

&gt; Source/WebCore/Modules/indexeddb/client/IDBDatabaseImpl.cpp:133
&gt; +    return WTF::move(transaction);

I don&apos;t think WTF::move is necessary here.

&gt; Source/WebCore/Modules/indexeddb/client/IDBRequestImpl.h:80
&gt; +    RefPtr&lt;IDBAny&gt; m_result;

Why do you have WebCore::IDBAny elsewhere in this same class but not here?

&gt; Source/WebCore/Modules/indexeddb/server/MemoryIDBBackingStore.cpp:31
&gt; +#include &quot;Logging.h&quot;

This isn&apos;t used.

&gt; Source/WebCore/Modules/indexeddb/server/MemoryIDBBackingStore.h:45
&gt; -    
&gt; +

Touching a file for only whitespace?  I don&apos;t think this is necessary.

&gt; Source/WebCore/Modules/indexeddb/shared/IDBResourceIdentifier.cpp:78
&gt; +    return IDBResourceIdentifier(0, 0);

Would return { }; work here?

&gt; Source/WebCore/Modules/indexeddb/shared/IDBTransactionInfo.cpp:53
&gt; +    return WTF::move(result);

These explicit moves might also not be needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132456</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-10-12 13:19:19 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 262897 [details]
&gt; Patch v1
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=262897&amp;action=review
&gt; 
&gt; Looks good.  Nothing jumps out as wrong.  A few small comments.
&gt; 
&gt; &gt; LayoutTests/storage/indexeddb/modern/opendatabase-request-event-expected.txt:3
&gt; &gt; +ALERT: upgradeneeded: old version - 0 new version - 1
&gt; 
&gt; Ideas for future tests:
&gt; Upgrade to a different number, like 42
&gt; Upgrade to INT64_MAX
&gt; Upgrade to INT64_MAX - 1
&gt; Upgrade to a smaller positive number
&gt; Upgrade to a negative number and 0
&gt; Upgrade to a string or an object.
&gt; Upgrade to a non-integer number

These *are* interesting, but require an already-established database to upgrade from, which isn&apos;t yet complete - next patch!

&gt; 
&gt; &gt; LayoutTests/storage/indexeddb/modern/opendatabase-request-event.html:17
&gt; &gt; +    window.indexedDB.open(&quot;TestDatabase&quot;, 0);
&gt; 
&gt; Why does this make a Type error?

The spec demands it.

&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/client/IDBRequestImpl.h:80
&gt; &gt; +    RefPtr&lt;IDBAny&gt; m_result;
&gt; 
&gt; Why do you have WebCore::IDBAny elsewhere in this same class but not here?

Because there&apos;s the abstract WebCore::IDBAny, and then there&apos;s the IDBClient::IDBAny that this member is.

That divide is to support living side-by-side with Legacy IDB, and the ugliness will go away when we drop legacy IDB and fold the abstract classes into the concrete.

&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/server/MemoryIDBBackingStore.cpp:31
&gt; &gt; +#include &quot;Logging.h&quot;
&gt; 
&gt; This isn&apos;t used.

Indeed

&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/server/MemoryIDBBackingStore.h:45
&gt; &gt; -    
&gt; &gt; +
&gt; 
&gt; Touching a file for only whitespace?  I don&apos;t think this is necessary.

Indeed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132459</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-10-12 13:30:28 -0700</bug_when>
    <thetext>With blind attempt to handle the broken efl-wk2 compiler:
https://trac.webkit.org/changeset/190884</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1132542</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-10-12 15:52:49 -0700</bug_when>
    <thetext>Followup landed in https://trac.webkit.org/changeset/190899</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262897</attachid>
            <date>2015-10-12 10:27:18 -0700</date>
            <delta_ts>2015-10-12 11:23:58 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>121379</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4ZTU2MTFmLi42M2JhYzg4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMTAt
MTIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1vZGVybiBJ
REI6IFN0YXJ0IHZlcnNpb24gY2hhbmdlIHRyYW5zYWN0aW9uIGZvciBjb25uZWN0aW9ucyB0byBu
ZXcgZGF0YWJhc2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTAwMzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vcGVuZGF0YWJhc2UtcmVxdWVzdC1ldmVu
dC1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL29wZW5k
YXRhYmFzZS1yZXF1ZXN0LWV2ZW50Lmh0bWw6CisKIDIwMTUtMTAtMTEgIE15bGVzIEMuIE1heGZp
ZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBUZXN0IGZvbnQtdmFyaWFudC0q
IGFuZCBmb250LWZlYXR1cmUtc2V0dGluZ3Mgd2l0aCBtb2NrZWQgcHJlaW5zdGFsbGVkIGZvbnRz
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmRh
dGFiYXNlLXJlcXVlc3QtZXZlbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvbW9kZXJuL29wZW5kYXRhYmFzZS1yZXF1ZXN0LWV2ZW50LWV4cGVjdGVkLnR4dApp
bmRleCBiMzQyZmQ2Li5iNjEwNGY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNlLXJlcXVlc3QtZXZlbnQtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vcGVuZGF0YWJhc2UtcmVx
dWVzdC1ldmVudC1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw1IEBACitBTEVSVDogQ2F1Z2h0IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IKIEFMRVJUOiBbb2JqZWN0IElEQk9wZW5EQlJl
cXVlc3RdCi1BTEVSVDogZXJyb3IgW29iamVjdCBFdmVudF0KK0FMRVJUOiB1cGdyYWRlbmVlZGVk
OiBvbGQgdmVyc2lvbiAtIDAgbmV3IHZlcnNpb24gLSAxCiBBTEVSVDogRG9uZQogVGhpcyB0ZXN0
IGNhbGxzIG9wZW4gb24gd2luZG93LmluZGV4ZWREQiBpbiB2YXJpb3VzIHdheXMsIHZlcmlmeWlu
ZyB0aGF0IElEQk9wZW5EQlJlcXVlc3Qgb2JqZWN0cyBhcmUgcmV0dXJuZWQgd2hlbiBleHBlY3Rl
ZCBhbmQgZXhjZXB0aW9ucyBhcmUgdGhyb3duIHdoZW4gZXhwZWN0ZWQuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmRhdGFiYXNlLXJlcXVlc3Qt
ZXZlbnQuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vcGVuZGF0
YWJhc2UtcmVxdWVzdC1ldmVudC5odG1sCmluZGV4IDEyZjhkMTQuLmU4MjJlZWYgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vcGVuZGF0YWJhc2UtcmVx
dWVzdC1ldmVudC5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21vZGVy
bi9vcGVuZGF0YWJhc2UtcmVxdWVzdC1ldmVudC5odG1sCkBAIC0xMyw2ICsxMywxMiBAQCBmdW5j
dGlvbiBkb25lKCkKICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKK3RyeSB7
CisgICAgd2luZG93LmluZGV4ZWREQi5vcGVuKCJUZXN0RGF0YWJhc2UiLCAwKTsKK30gY2F0Y2gg
KGUpIHsKKyAgICBhbGVydCgiQ2F1Z2h0IGV4Y2VwdGlvbiAiICsgZSk7Cit9CisKIHZhciByZXF1
ZXN0ID0gd2luZG93LmluZGV4ZWREQi5vcGVuKCJUZXN0RGF0YWJhc2UiKTsKIGFsZXJ0KHJlcXVl
c3QpOwogCkBAIC0yNiw0ICszMiwxMCBAQCByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihlKQog
CWFsZXJ0KCJlcnJvciAiICsgZSk7CiAJZG9uZSgpOwogfQorCityZXF1ZXN0Lm9udXBncmFkZW5l
ZWRlZCA9IGZ1bmN0aW9uKGUpCit7CisgICAgYWxlcnQoInVwZ3JhZGVuZWVkZWQ6IG9sZCB2ZXJz
aW9uIC0gIiArIGUub2xkVmVyc2lvbiArICIgbmV3IHZlcnNpb24gLSAiICsgZS5uZXdWZXJzaW9u
KTsKKwlkb25lKCk7Cit9CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggODI0MDg3
NC4uNmViYzMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysr
IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTg3MiwxMCArODcyLDE0IEBAIHNl
dChXZWJDb3JlX1NPVVJDRVMKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdl
RXZlbnQuY3BwCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvV29ya2VyR2xvYmFsU2NvcGVJbmRleGVk
RGF0YWJhc2UuY3BwCiAKKyAgICBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQW55SW1wbC5j
cHAKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmNw
cAorICAgIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJEYXRhYmFzZUltcGwuY3BwCiAgICAg
TW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkZhY3RvcnlJbXBsLmNwcAogICAgIE1vZHVsZXMv
aW5kZXhlZGRiL2NsaWVudC9JREJPcGVuREJSZXF1ZXN0SW1wbC5jcHAKICAgICBNb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvSURCUmVxdWVzdEltcGwuY3BwCisgICAgTW9kdWxlcy9pbmRleGVkZGIv
Y2xpZW50L0lEQlRyYW5zYWN0aW9uSW1wbC5jcHAKKyAgICBNb2R1bGVzL2luZGV4ZWRkYi9jbGll
bnQvSURCVmVyc2lvbkNoYW5nZUV2ZW50SW1wbC5jcHAKIAogICAgIE1vZHVsZXMvaW5kZXhlZGRi
L2xlZ2FjeS9JREJDdXJzb3JCYWNrZW5kLmNwcAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL2xlZ2Fj
eS9JREJDdXJzb3JCYWNrZW5kT3BlcmF0aW9ucy5jcHAKQEAgLTkwMiwxMiArOTA2LDE1IEBAIHNl
dChXZWJDb3JlX1NPVVJDRVMKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVy
T3BlcmF0aW9uLmNwcAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNr
aW5nU3RvcmUuY3BwCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFi
YXNlLmNwcAorICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNv
bm5lY3Rpb24uY3BwCisgICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24uY3BwCiAKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRGF0
YWJhc2VJbmZvLmNwcAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5jcHAK
ICAgICBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuY3BwCiAgICAgTW9k
dWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc291cmNlSWRlbnRpZmllci5jcHAKICAgICBNb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5jcHAKKyAgICBNb2R1bGVzL2luZGV4
ZWRkYi9zaGFyZWQvSURCVHJhbnNhY3Rpb25JbmZvLmNwcAogICAgIE1vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCiAKICAgICBNb2R1bGVzL21lZGlhY29udHJv
bHMvTWVkaWFDb250cm9sc0hvc3QuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjVlM2VmZS4uZTljNDYxZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4OSBAQAorMjAxNS0xMC0xMiAgQnJhZHkgRWlkc29uICA8
YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW9kZXJuIElEQjogU3RhcnQgdmVyc2lvbiBj
aGFuZ2UgdHJhbnNhY3Rpb24gZm9yIGNvbm5lY3Rpb25zIHRvIG5ldyBkYXRhYmFzZS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDAzMworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAo
Q292ZXJlZCBieSBjaGFuZ2VzIHRvIGV4aXN0aW5nIHRlc3RzKS4KKworICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmg6Cisg
ICAgICAgIAorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJBbnlJbXBsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQW55OjpJREJBbnkpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJBbnk6On5JREJBbnkpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ2xpZW50OjpJREJBbnk6OmlkYkRhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkNsaWVudDo6SURCQW55Ojpkb21TdHJpbmdMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNs
aWVudDo6SURCQW55OjppZGJDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJ
REJBbnk6OmlkYkN1cnNvcldpdGhWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6
OklEQkFueTo6aWRiRmFjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkFu
eTo6aWRiSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJBbnk6OmlkYk9i
amVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQW55OjppZGJUcmFu
c2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkFueTo6c2NyaXB0VmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJBbnk6OmludGVnZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJBbnk6OnN0cmluZyk6CisgICAgICAgIChXZWJD
b3JlOjpJREJDbGllbnQ6OklEQkFueTo6a2V5UGF0aCk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvY2xpZW50L0lEQkFueUltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6
SURCQW55OjpjcmVhdGUpOgorICAgICAgICAKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9j
bGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNs
aWVudDo6SURCQ29ubmVjdGlvblRvU2VydmVyOjpmaXJlVmVyc2lvbkNoYW5nZUV2ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblRvU2VydmVyOjpyZWdpc3Rl
ckRhdGFiYXNlQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNv
bm5lY3Rpb25Ub1NlcnZlcjo6dW5yZWdpc3RlckRhdGFiYXNlQ29ubmVjdGlvbik6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZlci5oOgorICAg
ICAgICAKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCRGF0YWJhc2VJbXBs
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkRhdGFiYXNlOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJEYXRhYmFzZTo6SURCRGF0
YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJEYXRhYmFzZTo6fklEQkRh
dGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCRGF0YWJhc2U6Om5hbWUp
OgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJEYXRhYmFzZTo6dmVyc2lvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkRhdGFiYXNlOjpvYmplY3RTdG9yZU5hbWVz
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCRGF0YWJhc2U6OmNyZWF0ZU9iamVj
dFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCRGF0YWJhc2U6OnRyYW5z
YWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCRGF0YWJhc2U6OmRlbGV0
ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCRGF0YWJhc2U6
OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCRGF0YWJhc2U6OmFjdGl2
ZURPTU9iamVjdE5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJEYXRhYmFz
ZTo6Y2FuU3VzcGVuZEZvclBhZ2VDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6
OklEQkRhdGFiYXNlOjpzdGFydFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbik6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkRhdGFiYXNlSW1wbC5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCRGF0YWJhc2U6OmluZm8pOgorICAgICAgICAKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCT3BlbkRCUmVxdWVzdEltcGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJPcGVuREJSZXF1ZXN0OjpvbkVycm9y
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCT3BlbkRCUmVxdWVzdDo6b25TdWNj
ZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCT3BlbkRCUmVxdWVzdDo6b25V
cGdyYWRlTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCT3BlbkRCUmVx
dWVzdDo6cmVxdWVzdENvbXBsZXRlZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xp
ZW50L0lEQk9wZW5EQlJlcXVlc3RJbXBsLmg6CisgICAgICAgIAorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL2NsaWVudC9JREJSZXF1ZXN0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
REJDbGllbnQ6OklEQlJlcXVlc3Q6OklEQlJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURC
Q2xpZW50OjpJREJSZXF1ZXN0OjpyZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50
OjpJREJSZXF1ZXN0Ojpzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ2xpZW50OjpJREJS
ZXF1ZXN0Ojp0cmFuc2FjdGlvbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50
L0lEQlJlcXVlc3RJbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQlJlcXVl
c3Q6OmNvbm5lY3Rpb24pOgorICAgICAgICAKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9j
bGllbnQvSURCVHJhbnNhY3Rpb25JbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVu
dDo6SURCVHJhbnNhY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6
OklEQlRyYW5zYWN0aW9uOjpJREJUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJD
bGllbnQ6OklEQlRyYW5zYWN0aW9uOjp+SURCVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6SURCQ2xpZW50OjpJREJUcmFuc2FjdGlvbjo6bW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJDbGllbnQ6OklEQlRyYW5zYWN0aW9uOjpkYik6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGll
bnQ6OklEQlRyYW5zYWN0aW9uOjplcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6
OklEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGll
bnQ6OklEQlRyYW5zYWN0aW9uOjphYm9ydCk6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6
OklEQlRyYW5zYWN0aW9uOjphY3RpdmVET01PYmplY3ROYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkNsaWVudDo6SURCVHJhbnNhY3Rpb246OmNhblN1c3BlbmRGb3JQYWdlQ2FjaGUpOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJUcmFuc2FjdGlvbkltcGwuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCVHJhbnNhY3Rpb246OmluZm8pOgorICAgICAg
ICAKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCVmVyc2lvbkNoYW5nZUV2
ZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQlZlcnNpb25DaGFu
Z2VFdmVudDo6SURCVmVyc2lvbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkNs
aWVudDo6SURCVmVyc2lvbkNoYW5nZUV2ZW50OjpldmVudEludGVyZmFjZSk6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlZlcnNpb25DaGFuZ2VFdmVudEltcGwuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCVmVyc2lvbkNoYW5nZUV2ZW50OjpjcmVhdGUp
OgorICAgICAgICAKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9sZWdhY3kvTGVnYWN5RGF0
YWJhc2UuaDoKKyAgICAgICAgCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QkNvbm5lY3Rpb25Ub0NsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklE
QkNvbm5lY3Rpb25Ub0NsaWVudDo6ZmlyZVZlcnNpb25DaGFuZ2VFdmVudCk6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5oOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnREZWxlZ2F0
ZS5oOgorICAgICAgICAKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
dmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpyZWdpc3Rl
ckRhdGFiYXNlQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNl
cnZlcjo6dW5yZWdpc3RlckRhdGFiYXNlQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OklEQlNlcnZlcjo6ZGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaDoKKyAgICAgICAgCisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oOgorICAgICAg
ICAKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZTo6aW5m
byk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpoYW5k
bGVPcGVuRGF0YWJhc2VPcGVyYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6
VW5pcXVlSURCRGF0YWJhc2U6Omhhc0FueU9wZW5Db25uZWN0aW9ucyk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjpzdGFydFZlcnNpb25DaGFuZ2VUcmFu
c2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNl
Ojpub3RpZnlDb25uZWN0aW9uc09mVmVyc2lvbkNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlOjphZGRPcGVuRGF0YWJhc2VDb25uZWN0aW9uKToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuaDoK
KyAgICAgICAgCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRh
dGFiYXNlQ29ubmVjdGlvbi5jcHA6IAorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpuZXh0
RGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOjpVbmlxdWVJREJEYXRh
YmFzZUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJE
YXRhYmFzZUNvbm5lY3Rpb246OmZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246OmNyZWF0ZVZlcnNp
b25DaGFuZ2VUcmFuc2FjdGlvbik6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6aWRlbnRpZmllcik6CisgICAgICAg
IChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6ZGF0YWJh
c2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5l
Y3Rpb246OmNvbm5lY3Rpb25Ub0NsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6Y2xvc2VQZW5kaW5nKToKKyAgICAgICAgCisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNh
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlx
dWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uKToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uOjpkYXRhYmFzZUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjppbmZvKToKKyAgICAgICAgCisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkRhdGFiYXNlSW5mby5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUluZm86OklEQkRhdGFiYXNlSW5mbyk6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkRhdGFiYXNlSW5mby5oOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRGF0YWJhc2VJbmZvOjpuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlSW5mbzo6dmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUlu
Zm86OklEQkRhdGFiYXNlSW5mbyk6IERlbGV0ZWQuCisgICAgICAgIAorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5oOgorICAgICAgICAKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SURCUmVxdWVzdERhdGE6OklEQlJlcXVlc3REYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlJlcXVlc3REYXRhOjpyZXF1ZXN0ZWRWZXJzaW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaDoKKyAgICAgICAgCisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc291cmNlSWRlbnRpZmllci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpuZXh0Q2xpZW50UmVzb3VyY2VOdW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6bmV4
dFNlcnZlclJlc291cmNlTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlc291cmNlSWRl
bnRpZmllcjo6SURCUmVzb3VyY2VJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJl
c291cmNlSWRlbnRpZmllcjo6ZW1wdHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXNv
dXJjZUlkZW50aWZpZXI6OmRlbGV0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpuZXh0UmVz
b3VyY2VOdW1iZXIpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJl
ZC9JREJSZXNvdXJjZUlkZW50aWZpZXIuaDoKKyAgICAgICAgCisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
UmVzdWx0RGF0YTo6SURCUmVzdWx0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXN1bHRE
YXRhOjplcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpJREJSZXN1bHREYXRhOjpvcGVuRGF0YWJh
c2VTdWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlc3VsdERhdGE6Om9wZW5EYXRhYmFz
ZVVwZ3JhZGVOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVzdWx0RGF0YTo6ZGF0YWJh
c2VJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlJlc3VsdERhdGE6OnRyYW5zYWN0aW9uSW5m
byk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuaDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQlJlc3VsdERhdGE6OnR5cGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCUmVzdWx0RGF0YTo6ZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcik6CisgICAgICAg
IAorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25JbmZvOjpJREJUcmFuc2FjdGlv
bkluZm8pOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25JbmZvOjp2ZXJzaW9uQ2hh
bmdlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uSW5mbzo6aXNvbGF0ZWRDb3B5
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCVHJhbnNhY3Rpb25JbmZv
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkluZm86OmlkZW50aWZpZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25JbmZvOjptb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlRyYW5zYWN0aW9uSW5mbzo6bmV3VmVyc2lvbik6CisgICAgICAgIAorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjpmaXJlVmVyc2lvbkNoYW5nZUV2ZW50
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVy
Lmg6CisgICAgICAgIAorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25JbmZvPjo6Y29weSk6CisgICAgICAgICog
cGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaDoKKwogMjAxNS0xMC0xMiAgWmFuIERvYmVyc2Vr
ICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgZml4aW5nIGRl
YnVnIGJ1aWxkcyB3aXRoIENsYW5nIG9uIExpbnV4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaAppbmRleCA2NWExYWNiLi41ZDJiM2NjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKQEAgLTMxLDcg
KzMxLDYgQEAKICNpbmNsdWRlICJEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNp
bmNsdWRlICJFdmVudFRhcmdldC5oIgotI2luY2x1ZGUgIklEQkRhdGFiYXNlTWV0YWRhdGEuaCIK
ICNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uLmgi
CiAjaW5jbHVkZSAiSW5kZXhlZERCLmgiCkBAIC02Myw4ICs2Miw2IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRp
b25Db2RlJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpID0gMDsKIAotICAgIHZpcnR1
YWwgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSBtZXRhZGF0YSgpIGNvbnN0ID0gMDsKLQogICAg
IHVzaW5nIFJlZkNvdW50ZWQ8SURCRGF0YWJhc2U+OjpyZWY7CiAgICAgdXNpbmcgUmVmQ291bnRl
ZDxJREJEYXRhYmFzZT46OmRlcmVmOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQW55SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQW55SW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMmZkYWI3ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJBbnlJbXBsLmNwcApAQCAtMCwwICsxLDExMyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJREJBbnlJbXBs
LmgiCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIklEQkFueS5o
IgorI2luY2x1ZGUgIklEQkN1cnNvcldpdGhWYWx1ZS5oIgorI2luY2x1ZGUgIklEQkZhY3Rvcnku
aCIKKyNpbmNsdWRlICJJREJJbmRleC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3Bh
Y2UgSURCQ2xpZW50IHsKKworSURCQW55OjpJREJBbnkoUmVmPElEQkRhdGFiYXNlPiYmIGRhdGFi
YXNlKQorICAgIDogbV90eXBlKElEQkFueTo6VHlwZTo6SURCRGF0YWJhc2UpCisgICAgLCBtX2Rh
dGFiYXNlKGFkb3B0UmVmKCZkYXRhYmFzZS5sZWFrUmVmKCkpKQoreworfQorCitJREJBbnk6On5J
REJBbnkoKQoreworfQorCitSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2U+IElEQkFueTo6aWRi
RGF0YWJhc2UoKQoreworICAgIEFTU0VSVChtX3R5cGUgPT0gSURCQW55OjpUeXBlOjpJREJEYXRh
YmFzZSk7CisgICAgcmV0dXJuIG1fZGF0YWJhc2UuZ2V0KCk7Cit9CisKK1JlZlB0cjxXZWJDb3Jl
OjpET01TdHJpbmdMaXN0PiBJREJBbnk6OmRvbVN0cmluZ0xpc3QoKQoreworICAgIHJldHVybiBu
dWxscHRyOworfQorCitSZWZQdHI8V2ViQ29yZTo6SURCQ3Vyc29yPiBJREJBbnk6OmlkYkN1cnNv
cigpCit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1JlZlB0cjxXZWJDb3JlOjpJREJDdXJz
b3JXaXRoVmFsdWU+IElEQkFueTo6aWRiQ3Vyc29yV2l0aFZhbHVlKCkKK3sKKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKworUmVmUHRyPFdlYkNvcmU6OklEQkZhY3Rvcnk+IElEQkFueTo6aWRiRmFj
dG9yeSgpCit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1JlZlB0cjxXZWJDb3JlOjpJREJJ
bmRleD4gSURCQW55OjppZGJJbmRleCgpCit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1Jl
ZlB0cjxXZWJDb3JlOjpJREJPYmplY3RTdG9yZT4gSURCQW55OjppZGJPYmplY3RTdG9yZSgpCit7
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1JlZlB0cjxXZWJDb3JlOjpJREJUcmFuc2FjdGlv
bj4gSURCQW55OjppZGJUcmFuc2FjdGlvbigpCit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisK
K2NvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBJREJBbnk6OnNjcmlwdFZhbHVlKCkKK3sK
KyAgICByZXR1cm4gbV9zY3JpcHRWYWx1ZTsKK30KKworaW50NjRfdCBJREJBbnk6OmludGVnZXIo
KQoreworICAgIHJldHVybiBtX2ludGVnZXI7Cit9CisKK2NvbnN0IFN0cmluZyYgSURCQW55Ojpz
dHJpbmcoKQoreworICAgIHJldHVybiBtX3N0cmluZzsKK30KKworY29uc3QgSURCS2V5UGF0aCYg
SURCQW55OjprZXlQYXRoKCkKK3sKKyAgICByZXR1cm4gbV9pZGJLZXlQYXRoOworfQorCit9IC8v
IG5hbWVzcGFjZSBJREJDbGllbnQKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkFueUltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL2NsaWVudC9JREJBbnlJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uYzE0MjY1NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJBbnlJbXBsLmgKQEAgLTAsMCArMSw3NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgSURCQW55SW1wbF9oCisjZGVmaW5lIElEQkFueUltcGxfaAorCisj
aWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNpbmNsdWRlICJJREJBbnkuaCIKKyNpbmNs
dWRlICJJREJEYXRhYmFzZUltcGwuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNl
IElEQkNsaWVudCB7CisKK2NsYXNzIElEQkFueSA6IHB1YmxpYyBXZWJDb3JlOjpJREJBbnkgewor
cHVibGljOgorICAgIHN0YXRpYyBSZWZQdHI8SURCQW55PiBjcmVhdGUoUmVmPElEQkRhdGFiYXNl
PiYmIGRhdGFiYXNlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJBbnko
V1RGOjptb3ZlKGRhdGFiYXNlKSkpOworICAgIH0KKworICAgIHZpcnR1YWwgfklEQkFueSgpOwor
CisgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBt
X3R5cGU7IH0KKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpET01TdHJpbmdMaXN0PiBkb21T
dHJpbmdMaXN0KCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6
SURCQ3Vyc29yPiBpZGJDdXJzb3IoKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIFJlZlB0
cjxXZWJDb3JlOjpJREJDdXJzb3JXaXRoVmFsdWU+IGlkYkN1cnNvcldpdGhWYWx1ZSgpIG92ZXJy
aWRlIGZpbmFsOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlPiBpZGJE
YXRhYmFzZSgpIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OklE
QkZhY3Rvcnk+IGlkYkZhY3RvcnkoKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIFJlZlB0
cjxXZWJDb3JlOjpJREJJbmRleD4gaWRiSW5kZXgoKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0
dWFsIFJlZlB0cjxXZWJDb3JlOjpJREJPYmplY3RTdG9yZT4gaWRiT2JqZWN0U3RvcmUoKSBvdmVy
cmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpJREJUcmFuc2FjdGlvbj4g
aWRiVHJhbnNhY3Rpb24oKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIGNvbnN0IERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlJiBzY3JpcHRWYWx1ZSgpIG92ZXJyaWRlIGZpbmFsOworICAgIHZp
cnR1YWwgaW50NjRfdCBpbnRlZ2VyKCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCBjb25z
dCBTdHJpbmcmIHN0cmluZygpIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgY29uc3QgSURC
S2V5UGF0aCYga2V5UGF0aCgpIG92ZXJyaWRlIGZpbmFsOworCitwcml2YXRlOgorICAgIElEQkFu
eShSZWY8SURCRGF0YWJhc2U+JiYpOworCisgICAgSURCQW55OjpUeXBlIG1fdHlwZSB7IElEQkFu
eTo6VHlwZTo6VW5kZWZpbmVkIH07CisgICAgUmVmUHRyPElEQkRhdGFiYXNlPiBtX2RhdGFiYXNl
OworCisgICAgY29uc3QgSURCS2V5UGF0aCBtX2lkYktleVBhdGg7CisgICAgY29uc3QgRGVwcmVj
YXRlZDo6U2NyaXB0VmFsdWUgbV9zY3JpcHRWYWx1ZTsKKyAgICBjb25zdCBTdHJpbmcgbV9zdHJp
bmc7CisgICAgY29uc3QgaW50NjRfdCBtX2ludGVnZXIgeyAwIH07Cit9OworCit9IC8vIG5hbWVz
cGFjZSBJREJDbGllbnQKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQorI2VuZGlmIC8vIElEQkFueUltcGxfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1Nl
cnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29u
bmVjdGlvblRvU2VydmVyLmNwcAppbmRleCA1NjIzNTc4Li4wNjM4Zjg3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2Vy
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURC
Q29ubmVjdGlvblRvU2VydmVyLmNwcApAQCAtOTMsNiArOTMsMjUgQEAgdm9pZCBJREJDb25uZWN0
aW9uVG9TZXJ2ZXI6OmRpZE9wZW5EYXRhYmFzZShjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHRE
YXRhKQogICAgIHJlcXVlc3QtPnJlcXVlc3RDb21wbGV0ZWQocmVzdWx0RGF0YSk7CiB9CiAKK3Zv
aWQgSURCQ29ubmVjdGlvblRvU2VydmVyOjpmaXJlVmVyc2lvbkNoYW5nZUV2ZW50KHVpbnQ2NF90
IC8qZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciovICwgdWludDY0X3QgLypyZXF1ZXN0ZWRW
ZXJzaW9uKi8pCit7CisgICAgTE9HKEluZGV4ZWREQiwgIklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6
ZmlyZVZlcnNpb25DaGFuZ2VFdmVudCIpOworCisgICAgLy8gRklYTUU6IEltcGxlbWVudCB2ZXJz
aW9uY2hhbmdlIGV2ZW50cyBmaXJpbmcgb24gYWxyZWFkeS1vcGVuIHRyYW5zYWN0aW9ucy4KK30K
Kwordm9pZCBJREJDb25uZWN0aW9uVG9TZXJ2ZXI6OnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9u
KElEQkRhdGFiYXNlJiBkYXRhYmFzZSkKK3sKKyAgICBBU1NFUlQoIW1fZGF0YWJhc2VDb25uZWN0
aW9ucy5jb250YWlucygmZGF0YWJhc2UpKTsKKyAgICBtX2RhdGFiYXNlQ29ubmVjdGlvbnMuYWRk
KCZkYXRhYmFzZSk7Cit9CisKK3ZvaWQgSURCQ29ubmVjdGlvblRvU2VydmVyOjp1bnJlZ2lzdGVy
RGF0YWJhc2VDb25uZWN0aW9uKElEQkRhdGFiYXNlJiBkYXRhYmFzZSkKK3sKKyAgICBBU1NFUlQo
bV9kYXRhYmFzZUNvbm5lY3Rpb25zLmNvbnRhaW5zKCZkYXRhYmFzZSkpOworICAgIG1fZGF0YWJh
c2VDb25uZWN0aW9ucy5yZW1vdmUoJmRhdGFiYXNlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSURC
Q2xpZW50CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uVG9TZXJ2
ZXIuaAppbmRleCBlMGEzY2NlLi44MWQ4ZmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblRvU2VydmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Ub1NlcnZl
ci5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSURCQ29ubmVjdGlvblRvU2VydmVyRGVs
ZWdhdGUuaCIKICNpbmNsdWRlICJJREJSZXNvdXJjZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1Jl
Zi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTQwLDYgKzQxLDcgQEAgY2xh
c3MgSURCUmVzdWx0RGF0YTsKIAogbmFtZXNwYWNlIElEQkNsaWVudCB7CiAKK2NsYXNzIElEQkRh
dGFiYXNlOwogY2xhc3MgSURCT3BlbkRCUmVxdWVzdDsKIAogY2xhc3MgSURCQ29ubmVjdGlvblRv
U2VydmVyIDogcHVibGljIFJlZkNvdW50ZWQ8SURCQ29ubmVjdGlvblRvU2VydmVyPiB7CkBAIC01
NCwxMiArNTYsMTggQEAgcHVibGljOgogICAgIHZvaWQgb3BlbkRhdGFiYXNlKElEQk9wZW5EQlJl
cXVlc3QmKTsKICAgICB2b2lkIGRpZE9wZW5EYXRhYmFzZShjb25zdCBJREJSZXN1bHREYXRhJik7
CiAKKyAgICB2b2lkIGZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQodWludDY0X3QgZGF0YWJhc2VDb25u
ZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgcmVxdWVzdGVkVmVyc2lvbik7CisKKyAgICB2b2lk
IHJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKElEQkRhdGFiYXNlJik7CisgICAgdm9pZCB1bnJl
Z2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKElEQkRhdGFiYXNlJik7CisKIHByaXZhdGU6CiAgICAg
SURCQ29ubmVjdGlvblRvU2VydmVyKElEQkNvbm5lY3Rpb25Ub1NlcnZlckRlbGVnYXRlJik7CiAg
ICAgCiAgICAgUmVmPElEQkNvbm5lY3Rpb25Ub1NlcnZlckRlbGVnYXRlPiBtX2RlbGVnYXRlOwog
CiAgICAgSGFzaE1hcDxJREJSZXNvdXJjZUlkZW50aWZpZXIsIFJlZlB0cjxJREJDbGllbnQ6OklE
Qk9wZW5EQlJlcXVlc3Q+PiBtX29wZW5EQlJlcXVlc3RNYXA7CisgICAgSGFzaFNldDxSZWZQdHI8
SURCRGF0YWJhc2U+PiBtX2RhdGFiYXNlQ29ubmVjdGlvbnM7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBJREJDbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L2NsaWVudC9JREJEYXRhYmFzZUltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvY2xpZW50L0lEQkRhdGFiYXNlSW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uYWI0ZWVkZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJEYXRhYmFzZUltcGwuY3BwCkBAIC0wLDAgKzEsMTM5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklEQkRhdGFi
YXNlSW1wbC5oIgorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNpbmNsdWRlICJJ
REJDb25uZWN0aW9uVG9TZXJ2ZXIuaCIKKyNpbmNsdWRlICJJREJPcGVuREJSZXF1ZXN0SW1wbC5o
IgorI2luY2x1ZGUgIklEQlJlc3VsdERhdGEuaCIKKyNpbmNsdWRlICJJREJUcmFuc2FjdGlvbklt
cGwuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVz
cGFjZSBJREJDbGllbnQgeworCitSZWY8SURCRGF0YWJhc2U+IElEQkRhdGFiYXNlOjpjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgSURCQ29ubmVjdGlvblRvU2VydmVyJiBj
b25uZWN0aW9uLCBjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQoreworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IElEQkRhdGFiYXNlKGNvbnRleHQsIGNvbm5lY3Rpb24sIHJlc3VsdERh
dGEpKTsKK30KKworSURCRGF0YWJhc2U6OklEQkRhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIElEQkNvbm5lY3Rpb25Ub1NlcnZlciYgY29ubmVjdGlvbiwgY29uc3QgSURC
UmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKKyAgICA6IFdlYkNvcmU6OklEQkRhdGFiYXNlKCZjb250
ZXh0KQorICAgICwgbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCisgICAgLCBtX2luZm8ocmVzdWx0
RGF0YS5kYXRhYmFzZUluZm8oKSkKK3sKKyAgICBzdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZWxh
eEFkb3B0aW9uUmVxdWlyZW1lbnQoKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnJlZ2lzdGVyRGF0YWJh
c2VDb25uZWN0aW9uKCp0aGlzKTsKK30KKworSURCRGF0YWJhc2U6On5JREJEYXRhYmFzZSgpCit7
CisgICAgbV9jb25uZWN0aW9uLT51bnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKCp0aGlzKTsK
K30KKworY29uc3QgU3RyaW5nIElEQkRhdGFiYXNlOjpuYW1lKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9pbmZvLm5hbWUoKTsKK30KKwordWludDY0X3QgSURCRGF0YWJhc2U6OnZlcnNpb24oKSBj
b25zdAoreworICAgIHJldHVybiBtX2luZm8udmVyc2lvbigpOworfQorCitSZWZQdHI8RE9NU3Ry
aW5nTGlzdD4gSURCRGF0YWJhc2U6Om9iamVjdFN0b3JlTmFtZXMoKSBjb25zdAoreworICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitSZWZQdHI8SURC
T2JqZWN0U3RvcmU+IElEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcm
LCBjb25zdCBEaWN0aW9uYXJ5JiwgRXhjZXB0aW9uQ29kZSYpCit7CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1JlZlB0cjxJREJPYmplY3RTdG9y
ZT4gSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYsIGNvbnN0IElE
QktleVBhdGgmLCBib29sLCBFeGNlcHRpb25Db2RlJikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworUmVmUHRyPFdlYkNvcmU6OklEQlRyYW5z
YWN0aW9uPiBJREJEYXRhYmFzZTo6dHJhbnNhY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpCit7
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1Jl
ZlB0cjxXZWJDb3JlOjpJREJUcmFuc2FjdGlvbj4gSURCRGF0YWJhc2U6OnRyYW5zYWN0aW9uKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBFeGNl
cHRpb25Db2RlJikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbnVs
bHB0cjsKK30KKwordm9pZCBJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgU3Ry
aW5nJiwgRXhjZXB0aW9uQ29kZSYpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisK
K3ZvaWQgSURCRGF0YWJhc2U6OmNsb3NlKCkKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
K30KKworY29uc3QgY2hhciogSURCRGF0YWJhc2U6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25z
dAoreworICAgIHJldHVybiAiSURCRGF0YWJhc2UiOworfQorCitib29sIElEQkRhdGFiYXNlOjpj
YW5TdXNwZW5kRm9yUGFnZUNhY2hlKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogVGhpcyB2YWx1
ZSB3aWxsIHNvbWV0aW1lcyBiZSBmYWxzZSB3aGVuIGRhdGFiYXNlIG9wZXJhdGlvbnMgYXJlIGFj
dHVhbGx5IGluIHByb2dyZXNzLgorICAgIC8vIFN1Y2ggZGF0YWJhc2Ugb3BlcmF0aW9ucyBkbyBu
b3QgeWV0IGV4aXN0LgorICAgIHJldHVybiB0cnVlOworfQorCitSZWY8SURCVHJhbnNhY3Rpb24+
IElEQkRhdGFiYXNlOjpzdGFydFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihjb25zdCBJREJUcmFu
c2FjdGlvbkluZm8mIGluZm8pCit7CisgICAgTE9HKEluZGV4ZWREQiwgIklEQkRhdGFiYXNlOjpz
dGFydFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiIpOworCisgICAgQVNTRVJUKCFtX3ZlcnNpb25D
aGFuZ2VUcmFuc2FjdGlvbik7CisgICAgQVNTRVJUKGluZm8ubW9kZSgpID09IEluZGV4ZWREQjo6
VHJhbnNhY3Rpb25Nb2RlOjpWZXJzaW9uQ2hhbmdlKTsKKworICAgIFJlZjxJREJUcmFuc2FjdGlv
bj4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlKCp0aGlzLCBpbmZvKTsKKyAg
ICBtX3ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiA9ICZ0cmFuc2FjdGlvbi5nZXQoKTsKKyAgICBt
X2FjdGl2ZVRyYW5zYWN0aW9ucy5zZXQodHJhbnNhY3Rpb24tPmluZm8oKS5pZGVudGlmaWVyKCks
ICZ0cmFuc2FjdGlvbi5nZXQoKSk7CisKKyAgICByZXR1cm4gV1RGOjptb3ZlKHRyYW5zYWN0aW9u
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSURCQ2xpZW50Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJEYXRhYmFzZUltcGwuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJEYXRhYmFzZUltcGwuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjIyYjY4Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkRhdGFiYXNl
SW1wbC5oCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIElEQkRhdGFiYXNl
SW1wbF9oCisjZGVmaW5lIElEQkRhdGFiYXNlSW1wbF9oCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKKworI2luY2x1ZGUgIklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oIgorI2luY2x1ZGUg
IklEQkRhdGFiYXNlLmgiCisjaW5jbHVkZSAiSURCRGF0YWJhc2VJbmZvLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgSURCUmVzdWx0RGF0YTsKK2NsYXNzIElEQlRyYW5zYWN0aW9u
OworY2xhc3MgSURCVHJhbnNhY3Rpb25JbmZvOworCituYW1lc3BhY2UgSURCQ2xpZW50IHsKKwor
Y2xhc3MgSURCVHJhbnNhY3Rpb247CisKK2NsYXNzIElEQkRhdGFiYXNlIDogcHVibGljIFdlYkNv
cmU6OklEQkRhdGFiYXNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPElEQkRhdGFiYXNlPiBj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIElEQkNvbm5lY3Rpb25Ub1NlcnZlciYsIGNv
bnN0IElEQlJlc3VsdERhdGEmKTsKKworICAgIHZpcnR1YWwgfklEQkRhdGFiYXNlKCk7CisKKyAg
ICAvLyBJREJEYXRhYmFzZSBJREwKKyAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyBuYW1lKCkgY29u
c3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCB1aW50NjRfdCB2ZXJzaW9uKCkgY29uc3Qg
b3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCBSZWZQdHI8RE9NU3RyaW5nTGlzdD4gb2JqZWN0
U3RvcmVOYW1lcygpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworCisgICAgdmlydHVhbCBSZWZQdHI8
SURCT2JqZWN0U3RvcmU+IGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgRGljdGlvbmFyeSYsIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0
dWFsIFJlZlB0cjxJREJPYmplY3RTdG9yZT4gY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBFeGNlcHRpb25D
b2RlJikgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6SURCVHJh
bnNhY3Rpb24+IHRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYgbW9kZSwgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRl
IGZpbmFsOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uPiB0cmFu
c2FjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiBtb2RlLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCB2
b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYp
IG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpIG92ZXJyaWRlIGZpbmFs
OworCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNl
IGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gSURC
RGF0YWJhc2VFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KKyAgICB2aXJ0dWFsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBvdmVycmlkZSBm
aW5hbCB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsg
fQorICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIGZpbmFsIHsgcmVm
KCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIGZpbmFs
IHsgZGVyZWYoKTsgfQorCisgICAgdmlydHVhbCBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3RO
YW1lKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCBib29sIGNhblN1c3BlbmRG
b3JQYWdlQ2FjaGUoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKworICAgIGNvbnN0IElEQkRhdGFi
YXNlSW5mbyYgaW5mbygpIGNvbnN0IHsgcmV0dXJuIG1faW5mbzsgfQorCisgICAgUmVmPElEQlRy
YW5zYWN0aW9uPiBzdGFydFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihjb25zdCBJREJUcmFuc2Fj
dGlvbkluZm8mKTsKKworcHJpdmF0ZToKKyAgICBJREJEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiwgSURCQ29ubmVjdGlvblRvU2VydmVyJiwgY29uc3QgSURCUmVzdWx0RGF0YSYpOwor
CisgICAgUmVmPElEQkNvbm5lY3Rpb25Ub1NlcnZlcj4gbV9jb25uZWN0aW9uOworICAgIElEQkRh
dGFiYXNlSW5mbyBtX2luZm87CisKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IG1fdmVyc2lv
bkNoYW5nZVRyYW5zYWN0aW9uOworICAgIEhhc2hNYXA8SURCUmVzb3VyY2VJZGVudGlmaWVyLCBS
ZWZQdHI8SURCVHJhbnNhY3Rpb24+PiBtX2FjdGl2ZVRyYW5zYWN0aW9uczsKK307CisKK30gLy8g
bmFtZXNwYWNlIElEQkNsaWVudAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKElOREVYRURfREFUQUJBU0UpCisjZW5kaWYgLy8gSURCRGF0YWJhc2VJbXBsX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPcGVu
REJSZXF1ZXN0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGll
bnQvSURCT3BlbkRCUmVxdWVzdEltcGwuY3BwCmluZGV4IDAzNzM4MDkuLjY1NDQxOGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPcGVuREJS
ZXF1ZXN0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xp
ZW50L0lEQk9wZW5EQlJlcXVlc3RJbXBsLmNwcApAQCAtMjgsOCArMjgsMTEgQEAKIAogI2lmIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCisjaW5jbHVkZSAiSURCRGF0YWJhc2VJbXBsLmgiCiAj
aW5jbHVkZSAiSURCRXJyb3IuaCIKICNpbmNsdWRlICJJREJSZXN1bHREYXRhLmgiCisjaW5jbHVk
ZSAiSURCVHJhbnNhY3Rpb25JbXBsLmgiCisjaW5jbHVkZSAiSURCVmVyc2lvbkNoYW5nZUV2ZW50
SW1wbC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
NTksMTYgKzYyLDUyIEBAIElEQk9wZW5EQlJlcXVlc3Q6On5JREJPcGVuREJSZXF1ZXN0KCkKIHsK
IH0KIAorCit2b2lkIElEQk9wZW5EQlJlcXVlc3Q6Om9uRXJyb3IoY29uc3QgSURCUmVzdWx0RGF0
YSYgZGF0YSkKK3sKKyAgICBtX2RvbUVycm9yID0gRE9NRXJyb3I6OmNyZWF0ZShkYXRhLmVycm9y
KCkubmFtZSgpKTsKKyAgICBlbnF1ZXVlRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
ZXJyb3JFdmVudCwgdHJ1ZSwgdHJ1ZSkpOworfQorCit2b2lkIElEQk9wZW5EQlJlcXVlc3Q6Om9u
U3VjY2Vzcyhjb25zdCBJREJSZXN1bHREYXRhJikKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50
Cit9CisKK3ZvaWQgSURCT3BlbkRCUmVxdWVzdDo6b25VcGdyYWRlTmVlZGVkKGNvbnN0IElEQlJl
c3VsdERhdGEmIHJlc3VsdERhdGEpCit7CisgICAgUmVmPElEQkRhdGFiYXNlPiBkYXRhYmFzZSA9
IElEQkRhdGFiYXNlOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgY29ubmVjdGlv
bigpLCByZXN1bHREYXRhKTsKKyAgICBSZWY8SURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uID0g
ZGF0YWJhc2UtPnN0YXJ0VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKHJlc3VsdERhdGEudHJhbnNh
Y3Rpb25JbmZvKCkpOworCisgICAgQVNTRVJUKHRyYW5zYWN0aW9uLT5pbmZvKCkubW9kZSgpID09
IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlOjpWZXJzaW9uQ2hhbmdlKTsKKworICAgIHVpbnQ2
NF90IG9sZFZlcnNpb24gPSBkYXRhYmFzZS0+aW5mbygpLnZlcnNpb24oKTsKKyAgICB1aW50NjRf
dCBuZXdWZXJzaW9uID0gdHJhbnNhY3Rpb24tPmluZm8oKS5uZXdWZXJzaW9uKCk7CisKKyAgICBM
T0coSW5kZXhlZERCLCAiSURCT3BlbkRCUmVxdWVzdDo6b25VcGdyYWRlTmVlZGVkKCkgLSBjdXJy
ZW50IHZlcnNpb24gaXMgJWxsdSwgbmV3IGlzICVsbHUiLCBvbGRWZXJzaW9uLCBuZXdWZXJzaW9u
KTsKKworICAgIG1fcmVzdWx0ID0gSURCQW55OjpjcmVhdGUoV1RGOjptb3ZlKGRhdGFiYXNlKSk7
CisgICAgbV9yZWFkeVN0YXRlID0gSURCUmVxdWVzdFJlYWR5U3RhdGU6OkRvbmU7CisgICAgbV90
cmFuc2FjdGlvbiA9IGFkb3B0UmVmKCZ0cmFuc2FjdGlvbi5sZWFrUmVmKCkpOworCisgICAgZW5x
dWV1ZUV2ZW50KElEQlZlcnNpb25DaGFuZ2VFdmVudDo6Y3JlYXRlKG9sZFZlcnNpb24sIG5ld1Zl
cnNpb24sIGV2ZW50TmFtZXMoKS51cGdyYWRlbmVlZGVkRXZlbnQpKTsKK30KKwogdm9pZCBJREJP
cGVuREJSZXF1ZXN0OjpyZXF1ZXN0Q29tcGxldGVkKGNvbnN0IElEQlJlc3VsdERhdGEmIGRhdGEp
CiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIklEQk9wZW5EQlJlcXVlc3Q6OnJlcXVlc3RDb21wbGV0
ZWQiKTsKIAotICAgIGlmICghZGF0YS5lcnJvcigpLmlzTnVsbCgpKSB7Ci0gICAgICAgIExPRyhJ
bmRleGVkREIsICIgIHdpdGggZXJyb3I6ICglcykgJyVzJyIsIGRhdGEuZXJyb3IoKS5uYW1lKCku
dXRmOCgpLmRhdGEoKSwgZGF0YS5lcnJvcigpLm1lc3NhZ2UoKS51dGY4KCkuZGF0YSgpKTsKLSAg
ICAgICAgbV9kb21FcnJvciA9IERPTUVycm9yOjpjcmVhdGUoZGF0YS5lcnJvcigpLm5hbWUoKSk7
Ci0gICAgICAgIGVucXVldWVFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lcnJvckV2
ZW50LCB0cnVlLCB0cnVlKSk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGVucXVldWVFdmVudChFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zdWNjZXNzRXZlbnQsIHRydWUsIHRydWUpKTsKKyAgICBz
d2l0Y2ggKGRhdGEudHlwZSgpKSB7CisgICAgY2FzZSBJREJSZXN1bHRUeXBlOjpFcnJvcjoKKyAg
ICAgICAgb25FcnJvcihkYXRhKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJREJSZXN1bHRU
eXBlOjpPcGVuRGF0YWJhc2VTdWNjZXNzOgorICAgICAgICBvblN1Y2Nlc3MoZGF0YSk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgSURCUmVzdWx0VHlwZTo6T3BlbkRhdGFiYXNlVXBncmFkZU5l
ZWRlZDoKKyAgICAgICAgb25VcGdyYWRlTmVlZGVkKGRhdGEpOworICAgICAgICBicmVhazsKKyAg
ICB9CiB9CiAKIH0gLy8gbmFtZXNwYWNlIElEQkNsaWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQk9wZW5EQlJlcXVlc3RJbXBsLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCT3BlbkRCUmVxdWVzdElt
cGwuaAppbmRleCA0ZDMwYTQ2Li5hNmFkYmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCT3BlbkRCUmVxdWVzdEltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCT3BlbkRCUmVxdWVzdEltcGwu
aApAQCAtNTQsNyArNTQsMTEgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIElEQk9wZW5EQlJl
cXVlc3QoSURCQ29ubmVjdGlvblRvU2VydmVyJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNv
bnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYsIHVpbnQ2NF90IHZlcnNpb24pOwotICAgIAorCisg
ICAgdm9pZCBvbkVycm9yKGNvbnN0IElEQlJlc3VsdERhdGEmKTsKKyAgICB2b2lkIG9uU3VjY2Vz
cyhjb25zdCBJREJSZXN1bHREYXRhJik7CisgICAgdm9pZCBvblVwZ3JhZGVOZWVkZWQoY29uc3Qg
SURCUmVzdWx0RGF0YSYpOworCiAgICAgSURCRGF0YWJhc2VJZGVudGlmaWVyIG1fZGF0YWJhc2VJ
ZGVudGlmaWVyOwogICAgIHVpbnQ2NF90IG1fdmVyc2lvbjsKICAgICBSZWZQdHI8RE9NRXJyb3I+
IG1fZG9tRXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9jbGllbnQvSURCUmVxdWVzdEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvY2xpZW50L0lEQlJlcXVlc3RJbXBsLmNwcAppbmRleCAwNWM0YTgwLi42NjRlMDgyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCUmVx
dWVzdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVu
dC9JREJSZXF1ZXN0SW1wbC5jcHAKQEAgLTM3LDExICszNywxMiBAQCBuYW1lc3BhY2UgSURCQ2xp
ZW50IHsKIAogSURCUmVxdWVzdDo6SURCUmVxdWVzdChJREJDb25uZWN0aW9uVG9TZXJ2ZXImIGNv
bm5lY3Rpb24sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgOiBJREJPcGVu
REJSZXF1ZXN0KGNvbnRleHQpCisgICAgLCBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKICAgICAs
IG1fcmVzb3VyY2VJZGVudGlmaWVyKGNvbm5lY3Rpb24pCiB7CiB9CiAKLVJlZlB0cjxJREJBbnk+
IElEQlJlcXVlc3Q6OnJlc3VsdChFeGNlcHRpb25Db2RlJikgY29uc3QKK1JlZlB0cjxXZWJDb3Jl
OjpJREJBbnk+IElEQlJlcXVlc3Q6OnJlc3VsdChFeGNlcHRpb25Db2RlJikgY29uc3QKIHsKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KQEAgLTU2LDE0ICs1NywxNCBAQCBSZWZQdHI8RE9NRXJyb3I+
IElEQlJlcXVlc3Q6OmVycm9yKEV4Y2VwdGlvbkNvZGUmKSBjb25zdAogICAgIHJldHVybiBudWxs
cHRyOwogfQogCi1SZWZQdHI8SURCQW55PiBJREJSZXF1ZXN0Ojpzb3VyY2UoKSBjb25zdAorUmVm
UHRyPFdlYkNvcmU6OklEQkFueT4gSURCUmVxdWVzdDo6c291cmNlKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAotUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBJREJSZXF1ZXN0Ojp0
cmFuc2FjdGlvbigpIGNvbnN0CitSZWZQdHI8V2ViQ29yZTo6SURCVHJhbnNhY3Rpb24+IElEQlJl
cXVlc3Q6OnRyYW5zYWN0aW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBy
ZXR1cm4gbV90cmFuc2FjdGlvbjsKIH0KIAogY29uc3QgU3RyaW5nJiBJREJSZXF1ZXN0OjpyZWFk
eVN0YXRlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL2NsaWVudC9JREJSZXF1ZXN0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvY2xpZW50L0lEQlJlcXVlc3RJbXBsLmgKaW5kZXggMjY4MmMxNC4uMzMxMzI1ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlJlcXVl
c3RJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lE
QlJlcXVlc3RJbXBsLmgKQEAgLTI4LDggKzI4LDEwIEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKIAorI2luY2x1ZGUgIklEQkFueUltcGwuaCIKICNpbmNsdWRlICJJREJPcGVuREJS
ZXF1ZXN0LmgiCiAjaW5jbHVkZSAiSURCUmVzb3VyY2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAi
SURCVHJhbnNhY3Rpb25JbXBsLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtNDUsMTEgKzQ3LDExIEBAIGNsYXNzIElEQlJlcXVlc3QgOiBw
dWJsaWMgV2ViQ29yZTo6SURCT3BlbkRCUmVxdWVzdCwgcHVibGljIFJlZkNvdW50ZWQ8SURCUmVx
dWVzCiBwdWJsaWM6CiAgICAgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXNvdXJjZUlk
ZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlSWRlbnRpZmllcjsgfQogCi0gICAg
dmlydHVhbCBSZWZQdHI8SURCQW55PiByZXN1bHQoRXhjZXB0aW9uQ29kZSYpIGNvbnN0IG92ZXJy
aWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OklEQkFueT4gcmVzdWx0KEV4Y2VwdGlv
bkNvZGUmKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIHNob3J0IGVycm9y
Q29kZShFeGNlcHRpb25Db2RlJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBSZWZQdHI8
RE9NRXJyb3I+IGVycm9yKEV4Y2VwdGlvbkNvZGUmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIFJlZlB0cjxJREJBbnk+IHNvdXJjZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
UmVmUHRyPElEQlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbigpIGNvbnN0IG92ZXJyaWRlOworICAg
IHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OklEQkFueT4gc291cmNlKCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6SURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9u
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIHJlYWR5U3RhdGUo
KSBjb25zdCBvdmVycmlkZTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0CkBAIC02MCw3ICs2Miw5IEBA
IHB1YmxpYzoKICAgICB1c2luZyBSZWZDb3VudGVkPElEQlJlcXVlc3Q+OjpkZXJlZjsKIAogICAg
IHZvaWQgZW5xdWV1ZUV2ZW50KFJlZjxFdmVudD4mJik7Ci0gICAgCisKKyAgICBJREJDb25uZWN0
aW9uVG9TZXJ2ZXImIGNvbm5lY3Rpb24oKSB7IHJldHVybiBtX2Nvbm5lY3Rpb247IH0KKwogcHJv
dGVjdGVkOgogICAgIElEQlJlcXVlc3QoSURCQ29ubmVjdGlvblRvU2VydmVyJiwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCopOwogCkBAIC03Miw2ICs3NiwxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgdmly
dHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgZmluYWwgeyBSZWZDb3VudGVkPElE
QlJlcXVlc3Q+OjpyZWYoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkg
b3ZlcnJpZGUgZmluYWwgeyBSZWZDb3VudGVkPElEQlJlcXVlc3Q+OjpkZXJlZigpOyB9CiAKKyAg
ICBJREJSZXF1ZXN0UmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGUgeyBJREJSZXF1ZXN0UmVhZHlTdGF0
ZTo6UGVuZGluZyB9OworICAgIFJlZlB0cjxJREJBbnk+IG1fcmVzdWx0OworICAgIFJlZlB0cjxJ
REJUcmFuc2FjdGlvbj4gbV90cmFuc2FjdGlvbjsKKworcHJpdmF0ZToKKyAgICBJREJDb25uZWN0
aW9uVG9TZXJ2ZXImIG1fY29ubmVjdGlvbjsKICAgICBJREJSZXNvdXJjZUlkZW50aWZpZXIgbV9y
ZXNvdXJjZUlkZW50aWZpZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCVHJhbnNhY3Rpb25JbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJUcmFuc2FjdGlvbkltcGwuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3ZGYxYzAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCVHJhbnNhY3Rpb25J
bXBsLmNwcApAQCAtMCwwICsxLDEwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkltcGwuaCIKKworI2lmIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQorCisjaW5jbHVkZSAiRE9NRXJyb3IuaCIKKyNpbmNsdWRlICJJREJEYXRhYmFz
ZUltcGwuaCIKKyNpbmNsdWRlICJJREJPYmplY3RTdG9yZS5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CituYW1lc3BhY2UgSURCQ2xpZW50IHsKKworUmVmPElEQlRyYW5zYWN0aW9uPiBJREJUcmFu
c2FjdGlvbjo6Y3JlYXRlKElEQkRhdGFiYXNlJiBkYXRhYmFzZSwgY29uc3QgSURCVHJhbnNhY3Rp
b25JbmZvJiBpbmZvKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IElEQlRyYW5zYWN0aW9u
KGRhdGFiYXNlLCBpbmZvKSk7Cit9CisKK0lEQlRyYW5zYWN0aW9uOjpJREJUcmFuc2FjdGlvbihJ
REJEYXRhYmFzZSYgZGF0YWJhc2UsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgaW5mbykKKyAg
ICA6IFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uKGRhdGFiYXNlLnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSkKKyAgICAsIG1faW5mbyhpbmZvKQoreworICAgIHN1c3BlbmRJZk5lZWRlZCgpOworfQor
CitJREJUcmFuc2FjdGlvbjo6fklEQlRyYW5zYWN0aW9uKCkKK3sKK30KKworY29uc3QgU3RyaW5n
JiBJREJUcmFuc2FjdGlvbjo6bW9kZSgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX2luZm8ubW9k
ZSgpKSB7CisgICAgY2FzZSBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZTo6UmVhZE9ubHk6Cisg
ICAgICAgIHJldHVybiBJREJUcmFuc2FjdGlvbjo6bW9kZVJlYWRPbmx5KCk7CisgICAgY2FzZSBJ
bmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZTo6UmVhZFdyaXRlOgorICAgICAgICByZXR1cm4gSURC
VHJhbnNhY3Rpb246Om1vZGVSZWFkV3JpdGUoKTsKKyAgICBjYXNlIEluZGV4ZWREQjo6VHJhbnNh
Y3Rpb25Nb2RlOjpWZXJzaW9uQ2hhbmdlOgorICAgICAgICByZXR1cm4gSURCVHJhbnNhY3Rpb246
Om1vZGVWZXJzaW9uQ2hhbmdlKCk7CisgICAgfQorfQorCitXZWJDb3JlOjpJREJEYXRhYmFzZSog
SURCVHJhbnNhY3Rpb246OmRiKCkgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworUmVmUHRyPERPTUVycm9yPiBJREJUcmFuc2FjdGlv
bjo6ZXJyb3IoKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBudWxscHRyOworfQorCitSZWZQdHI8SURCT2JqZWN0U3RvcmU+IElEQlRyYW5zYWN0aW9uOjpv
YmplY3RTdG9yZShjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJikKK3sKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBJREJUcmFuc2Fj
dGlvbjo6YWJvcnQoRXhjZXB0aW9uQ29kZSYpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Cit9CisKK2NvbnN0IGNoYXIqIElEQlRyYW5zYWN0aW9uOjphY3RpdmVET01PYmplY3ROYW1lKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gIklEQlRyYW5zYWN0aW9uIjsKK30KKworYm9vbCBJREJUcmFu
c2FjdGlvbjo6Y2FuU3VzcGVuZEZvclBhZ2VDYWNoZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCit9IC8vIG5hbWVzcGFjZSBJREJDbGllbnQKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlRyYW5zYWN0aW9uSW1wbC5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQlRyYW5zYWN0aW9u
SW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1NWEwZDYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURC
VHJhbnNhY3Rpb25JbXBsLmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
SURCVHJhbnNhY3Rpb25JbXBsX2gKKyNkZWZpbmUgSURCVHJhbnNhY3Rpb25JbXBsX2gKKworI2lm
IEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIK
KyNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkluZm8uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
bmFtZXNwYWNlIElEQkNsaWVudCB7CisKK2NsYXNzIElEQkRhdGFiYXNlOworCitjbGFzcyBJREJU
cmFuc2FjdGlvbiA6IHB1YmxpYyBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbiB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFJlZjxJREJUcmFuc2FjdGlvbj4gY3JlYXRlKElEQkRhdGFiYXNlJiwgY29uc3Qg
SURCVHJhbnNhY3Rpb25JbmZvJik7CisKKyAgICB2aXJ0dWFsIH5JREJUcmFuc2FjdGlvbigpIG92
ZXJyaWRlIGZpbmFsOworCisgICAgLy8gSURCVHJhbnNhY3Rpb24gSURMCisgICAgdmlydHVhbCBj
b25zdCBTdHJpbmcmIG1vZGUoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIFdl
YkNvcmU6OklEQkRhdGFiYXNlKiBkYigpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1
YWwgUmVmUHRyPERPTUVycm9yPiBlcnJvcigpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIHZp
cnR1YWwgUmVmUHRyPElEQk9iamVjdFN0b3JlPiBvYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5h
bWUsIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIHZvaWQgYWJv
cnQoRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlIGZpbmFsOworCisgICAgdmlydHVhbCBFdmVudFRh
cmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFs
IHsgcmV0dXJuIElEQlRyYW5zYWN0aW9uRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CisgICAg
dmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkg
Y29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBvdmVy
cmlkZSBmaW5hbCB7IHJlZigpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQo
KSBvdmVycmlkZSBmaW5hbCB7IGRlcmVmKCk7IH0KKworICAgIHZpcnR1YWwgY29uc3QgY2hhciog
YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwg
Ym9vbCBjYW5TdXNwZW5kRm9yUGFnZUNhY2hlKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisKKyAg
ICBjb25zdCBJREJUcmFuc2FjdGlvbkluZm8gaW5mbygpIGNvbnN0IHsgcmV0dXJuIG1faW5mbzsg
fQorCitwcml2YXRlOgorICAgIElEQlRyYW5zYWN0aW9uKElEQkRhdGFiYXNlJiwgY29uc3QgSURC
VHJhbnNhY3Rpb25JbmZvJik7CisKKyAgICBJREJUcmFuc2FjdGlvbkluZm8gbV9pbmZvOworfTsK
KworfSAvLyBuYW1lc3BhY2UgSURCQ2xpZW50Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyNlbmRpZiAvLyBJREJUcmFuc2FjdGlv
bkltcGxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xp
ZW50L0lEQlZlcnNpb25DaGFuZ2VFdmVudEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvY2xpZW50L0lEQlZlcnNpb25DaGFuZ2VFdmVudEltcGwuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1MjY2MjIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCVmVyc2lvbkNoYW5nZUV2
ZW50SW1wbC5jcHAKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJJREJWZXJzaW9uQ2hhbmdlRXZlbnRJbXBsLmgiCisKKyNpZiBFTkFC
TEUoSU5ERVhFRF9EQVRBQkFTRSkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIElE
QkNsaWVudCB7CisKK0lEQlZlcnNpb25DaGFuZ2VFdmVudDo6SURCVmVyc2lvbkNoYW5nZUV2ZW50
KHVpbnQ2NF90IG9sZFZlcnNpb24sIHVpbnQ2NF90IG5ld1ZlcnNpb24sIGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlKQorICAgIDogV2ViQ29yZTo6SURCVmVyc2lvbkNoYW5nZUV2ZW50KGV2
ZW50VHlwZSkKKyAgICAsIG1fb2xkVmVyc2lvbihvbGRWZXJzaW9uKQorICAgICwgbV9uZXdWZXJz
aW9uKG5ld1ZlcnNpb24pCit7Cit9CisKK0V2ZW50SW50ZXJmYWNlIElEQlZlcnNpb25DaGFuZ2VF
dmVudDo6ZXZlbnRJbnRlcmZhY2UoKSBjb25zdAoreworICAgIHJldHVybiBJREJWZXJzaW9uQ2hh
bmdlRXZlbnRJbnRlcmZhY2VUeXBlOworfQorCit9IC8vIG5hbWVzcGFjZSBJREJDbGllbnQKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNF
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lE
QlZlcnNpb25DaGFuZ2VFdmVudEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL2NsaWVudC9JREJWZXJzaW9uQ2hhbmdlRXZlbnRJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uZDZjNWEwMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJWZXJzaW9uQ2hhbmdlRXZlbnRJbXBsLmgK
QEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSURCVmVyc2lvbkNoYW5nZUV2
ZW50SW1wbF9oCisjZGVmaW5lIElEQlZlcnNpb25DaGFuZ2VFdmVudEltcGxfaAorCisjaWYgRU5B
QkxFKElOREVYRURfREFUQUJBU0UpCisKKyNpbmNsdWRlICJJREJWZXJzaW9uQ2hhbmdlRXZlbnQu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIElEQkNsaWVudCB7CisKK2NsYXNz
IElEQlZlcnNpb25DaGFuZ2VFdmVudCA6IHB1YmxpYyBXZWJDb3JlOjpJREJWZXJzaW9uQ2hhbmdl
RXZlbnQgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8SURCVmVyc2lvbkNoYW5nZUV2ZW50PiBj
cmVhdGUodWludDY0X3Qgb2xkVmVyc2lvbiA9IDAsIHVpbnQ2NF90IG5ld1ZlcnNpb24gPSAwLCBj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSA9IEF0b21pY1N0cmluZygpKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSURCVmVyc2lvbkNoYW5nZUV2ZW50KG9sZFZlcnNp
b24sIG5ld1ZlcnNpb24sIGV2ZW50VHlwZSkpOworICAgIH0KKworICAgIHZpcnR1YWwgdWludDY0
X3Qgb2xkVmVyc2lvbigpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIG1fb2xkVmVyc2lv
bjsgfQorICAgIHZpcnR1YWwgdWludDY0X3QgbmV3VmVyc2lvbigpIGNvbnN0IG92ZXJyaWRlIGZp
bmFsIHsgcmV0dXJuIG1fbmV3VmVyc2lvbjsgfQorCisgICAgdmlydHVhbCBFdmVudEludGVyZmFj
ZSBldmVudEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworCitwcml2YXRlOgorICAg
IElEQlZlcnNpb25DaGFuZ2VFdmVudCh1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50NjRfdCBuZXdW
ZXJzaW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSk7CisKKyAgICB1aW50NjRfdCBt
X29sZFZlcnNpb24geyAwIH07CisgICAgdWludDY0X3QgbV9uZXdWZXJzaW9uIHsgMCB9OworfTsK
KworfSAvLyBuYW1lc3BhY2UgSURCQ2xpZW50Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyNlbmRpZiAvLyBJREJWZXJzaW9uQ2hh
bmdlRXZlbnRJbXBsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL2xlZ2FjeS9MZWdhY3lEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvbGVnYWN5L0xlZ2FjeURhdGFiYXNlLmgKaW5kZXggNzMyZWIzYy4uMTEzN2U1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGVnYWN5L0xlZ2FjeURh
dGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGVnYWN5L0xl
Z2FjeURhdGFiYXNlLmgKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0Ns
b3NlUGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fY2xvc2VQZW5kaW5nOyB9CiAgICAgdm9pZCBm
b3JjZUNsb3NlKCk7Ci0gICAgdmlydHVhbCBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRhIG1ldGFk
YXRhKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gbV9tZXRhZGF0YTsgfQorICAgIGNv
bnN0IElEQkRhdGFiYXNlTWV0YWRhdGEgbWV0YWRhdGEoKSBjb25zdCB7IHJldHVybiBtX21ldGFk
YXRhOyB9CiAgICAgdm9pZCBlbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOwogCiAgICAg
dXNpbmcgRXZlbnRUYXJnZXQ6OmRpc3BhdGNoRXZlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9D
bGllbnQuY3BwCmluZGV4IDVkMDJhMTIuLmVlZDgyNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9u
VG9DbGllbnQuY3BwCkBAIC0yOCw2ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRB
QkFTRSkKIAorI2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oIgorCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgSURCU2VydmVyIHsKIApAQCAtNTYsNiArNTgsMTEg
QEAgdm9pZCBJREJDb25uZWN0aW9uVG9DbGllbnQ6OmRpZE9wZW5EYXRhYmFzZShjb25zdCBJREJS
ZXN1bHREYXRhJiByZXN1bHQpCiAgICAgbV9kZWxlZ2F0ZS0+ZGlkT3BlbkRhdGFiYXNlKHJlc3Vs
dCk7CiB9CiAKK3ZvaWQgSURCQ29ubmVjdGlvblRvQ2xpZW50OjpmaXJlVmVyc2lvbkNoYW5nZUV2
ZW50KFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3QgcmVx
dWVzdGVkVmVyc2lvbikKK3sKKyAgICBtX2RlbGVnYXRlLT5maXJlVmVyc2lvbkNoYW5nZUV2ZW50
KGNvbm5lY3Rpb24sIHJlcXVlc3RlZFZlcnNpb24pOworfQorCiB9IC8vIG5hbWVzcGFjZSBJREJT
ZXJ2ZXIKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkNvbm5lY3Rpb25Ub0NsaWVu
dC5oCmluZGV4IDc1NTUwNzQuLjg3NmNiNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQ29ubmVjdGlvblRvQ2xpZW50
LmgKQEAgLTM4LDYgKzM4LDggQEAgY2xhc3MgSURCUmVzdWx0RGF0YTsKIAogbmFtZXNwYWNlIElE
QlNlcnZlciB7CiAKK2NsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjsKKwogY2xhc3Mg
SURCQ29ubmVjdGlvblRvQ2xpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8SURCQ29ubmVjdGlvblRv
Q2xpZW50PiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxJREJDb25uZWN0aW9uVG9DbGllbnQ+
IGNyZWF0ZShJREJDb25uZWN0aW9uVG9DbGllbnREZWxlZ2F0ZSYpOwpAQCAtNDYsNyArNDgsOSBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGRpZERlbGV0ZURhdGFiYXNlKGNvbnN0IElEQlJlc3VsdERh
dGEmKTsKICAgICB2b2lkIGRpZE9wZW5EYXRhYmFzZShjb25zdCBJREJSZXN1bHREYXRhJik7Ci0g
ICAgCisKKyAgICB2b2lkIGZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoVW5pcXVlSURCRGF0YWJhc2VD
b25uZWN0aW9uJiwgdWludDY0X3QgcmVxdWVzdGVkVmVyc2lvbik7CisKIHByaXZhdGU6CiAgICAg
SURCQ29ubmVjdGlvblRvQ2xpZW50KElEQkNvbm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlJik7CiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
SURCQ29ubmVjdGlvblRvQ2xpZW50RGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnREZWxlZ2F0ZS5oCmluZGV4IGIy
YjRiNWMuLjc0MThmYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnREZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJDb25uZWN0aW9uVG9DbGllbnREZWxl
Z2F0ZS5oCkBAIC0zNCw2ICszNCw4IEBAIGNsYXNzIElEQlJlc3VsdERhdGE7CiAKIG5hbWVzcGFj
ZSBJREJTZXJ2ZXIgewogCitjbGFzcyBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb247CisKIGNs
YXNzIElEQkNvbm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5JREJDb25uZWN0aW9uVG9DbGllbnREZWxlZ2F0ZSgpIHsgfQpAQCAtNDMsNiArNDUsOCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZERlbGV0ZURhdGFiYXNlKGNvbnN0IElEQlJlc3Vs
dERhdGEmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZE9wZW5EYXRhYmFzZShjb25zdCBJREJS
ZXN1bHREYXRhJikgPSAwOwogCisgICAgdmlydHVhbCB2b2lkIGZpcmVWZXJzaW9uQ2hhbmdlRXZl
bnQoVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiwgdWludDY0X3QgcmVxdWVzdGVkVmVyc2lv
bikgPSAwOworCiAgICAgdmlydHVhbCB2b2lkIHJlZigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
ZGVyZWYoKSA9IDA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcAppbmRleCA2MWY0ODdmLi4xMTE2YTEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVy
LmNwcApAQCAtNjMsNiArNjMsMTggQEAgdm9pZCBJREJTZXJ2ZXI6OnVucmVnaXN0ZXJDb25uZWN0
aW9uKElEQkNvbm5lY3Rpb25Ub0NsaWVudCYgY29ubmVjdGlvbikKICAgICBtX2Nvbm5lY3Rpb25N
YXAucmVtb3ZlKGNvbm5lY3Rpb24uaWRlbnRpZmllcigpKTsKIH0KIAordm9pZCBJREJTZXJ2ZXI6
OnJlZ2lzdGVyRGF0YWJhc2VDb25uZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYg
Y29ubmVjdGlvbikKK3sKKyAgICBBU1NFUlQoIW1fZGF0YWJhc2VDb25uZWN0aW9ucy5jb250YWlu
cyhjb25uZWN0aW9uLmlkZW50aWZpZXIoKSkpOworICAgIG1fZGF0YWJhc2VDb25uZWN0aW9ucy5z
ZXQoY29ubmVjdGlvbi5pZGVudGlmaWVyKCksICZjb25uZWN0aW9uKTsKK30KKwordm9pZCBJREJT
ZXJ2ZXI6OnVucmVnaXN0ZXJEYXRhYmFzZUNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25u
ZWN0aW9uJiBjb25uZWN0aW9uKQoreworICAgIEFTU0VSVChtX2RhdGFiYXNlQ29ubmVjdGlvbnMu
Y29udGFpbnMoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpKTsKKyAgICBtX2RhdGFiYXNlQ29ubmVj
dGlvbnMucmVtb3ZlKGNvbm5lY3Rpb24uaWRlbnRpZmllcigpKTsKK30KKwogVW5pcXVlSURCRGF0
YWJhc2UmIElEQlNlcnZlcjo6Z2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShjb25zdCBJREJE
YXRhYmFzZUlkZW50aWZpZXImIGlkZW50aWZpZXIpCiB7CiAgICAgYXV0byB1bmlxdWVJREJEYXRh
YmFzZSA9IG1fdW5pcXVlSURCRGF0YWJhc2VNYXAuYWRkKGlkZW50aWZpZXIsIG51bGxwdHIpOwpA
QCAtMTEyLDcgKzEyNCw3IEBAIHZvaWQgSURCU2VydmVyOjpkZWxldGVEYXRhYmFzZShjb25zdCBJ
REJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCiAgICAgCiAgICAgLy8gRklYTUU6IER1cmluZyBi
cmluZ3VwIG9mIG1vZGVybiBJREIsIHRoZSBkYXRhYmFzZSBkZWxldGlvbiBpcyBhIG5vLW9wLCBh
bmQgaXMKICAgICAvLyBpbW1lZGlhdGVseSByZXBvcnRlZCBiYWNrIHRvIHRoZSBXZWJQcm9jZXNz
IGFzIGZhaWx1cmUuCi0gICAgSURCUmVzdWx0RGF0YSByZXN1bHQocmVxdWVzdERhdGEucmVxdWVz
dElkZW50aWZpZXIoKSwgSURCRXJyb3IoSURCRXhjZXB0aW9uQ29kZTo6VW5rbm93bikpOworICAg
IGF1dG8gcmVzdWx0ID0gSURCUmVzdWx0RGF0YTo6ZXJyb3IocmVxdWVzdERhdGEucmVxdWVzdElk
ZW50aWZpZXIoKSwgSURCRXJyb3IoSURCRXhjZXB0aW9uQ29kZTo6VW5rbm93bikpOwogICAgIGNv
bm5lY3Rpb24tPmRpZERlbGV0ZURhdGFiYXNlKHJlc3VsdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaAppbmRleCAzZTFl
NmQxLi5jYTAzNDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcnZlci5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSURCQ29u
bmVjdGlvblRvQ2xpZW50LmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VJZGVudGlmaWVyLmgiCiAj
aW5jbHVkZSAiVW5pcXVlSURCRGF0YWJhc2UuaCIKKyNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFz
ZUNvbm5lY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9M
b2NrLmg+CiAjaW5jbHVkZSA8d3RmL01lc3NhZ2VRdWV1ZS5oPgpAQCAtNjAsNiArNjEsOSBAQCBw
dWJsaWM6CiAgICAgdm9pZCBwb3N0RGF0YWJhc2VUYXNrKHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1Ro
cmVhZFRhc2s+JiYpOwogICAgIHZvaWQgcG9zdERhdGFiYXNlVGFza1JlcGx5KHN0ZDo6dW5pcXVl
X3B0cjxDcm9zc1RocmVhZFRhc2s+JiYpOwogCisgICAgdm9pZCByZWdpc3RlckRhdGFiYXNlQ29u
bmVjdGlvbihVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mKTsKKyAgICB2b2lkIHVucmVnaXN0
ZXJEYXRhYmFzZUNvbm5lY3Rpb24oVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJik7CisKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SURCQmFja2luZ1N0b3JlPiBjcmVhdGVCYWNraW5nU3RvcmUoY29u
c3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJik7CiAKIHByaXZhdGU6CkBAIC04MSw2ICs4NSw4IEBA
IHByaXZhdGU6CiAKICAgICBNZXNzYWdlUXVldWU8Q3Jvc3NUaHJlYWRUYXNrPiBtX2RhdGFiYXNl
UXVldWU7CiAgICAgTWVzc2FnZVF1ZXVlPENyb3NzVGhyZWFkVGFzaz4gbV9kYXRhYmFzZVJlcGx5
UXVldWU7CisKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rp
b24qPiBtX2RhdGFiYXNlQ29ubmVjdGlvbnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJREJTZXJ2
ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9N
ZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggYjA3NDIwNy4uN2JjNzAw
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01l
bW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTI4LDYgKzI4LDggQEAK
IAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCisjaW5jbHVkZSAiTG9nZ2luZy5oIgor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgSURCU2VydmVyIHsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tp
bmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9y
eUlEQkJhY2tpbmdTdG9yZS5oCmluZGV4IDg3NjJkZTQuLmYyODAwN2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5
SURCQmFja2luZ1N0b3JlLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
fk1lbW9yeUlEQkJhY2tpbmdTdG9yZSgpIG92ZXJyaWRlIGZpbmFsOwogCiAgICAgdmlydHVhbCBj
b25zdCBJREJEYXRhYmFzZUluZm8mIGdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKCkgb3ZlcnJp
ZGUgZmluYWw7Ci0gICAgCisKIHByaXZhdGU6CiAgICAgTWVtb3J5SURCQmFja2luZ1N0b3JlKGNv
bnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcApp
bmRleCAyMTI1N2U3Li45NzE2MzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKQEAgLTMx
LDYgKzMxLDcgQEAKICNpbmNsdWRlICJJREJSZXN1bHREYXRhLmgiCiAjaW5jbHVkZSAiSURCU2Vy
dmVyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNl
Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3Rm
L1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAKQEAgLTQzLDYgKzQ0LDEyIEBAIFVuaXF1ZUlEQkRh
dGFiYXNlOjpVbmlxdWVJREJEYXRhYmFzZShJREJTZXJ2ZXImIHNlcnZlciwgY29uc3QgSURCRGF0
YWJhc2VJZGVudGlmCiB7CiB9CiAKK2NvbnN0IElEQkRhdGFiYXNlSW5mbyYgVW5pcXVlSURCRGF0
YWJhc2U6OmluZm8oKSBjb25zdAoreworICAgIFJFTEVBU0VfQVNTRVJUKG1fZGF0YWJhc2VJbmZv
KTsKKyAgICByZXR1cm4gKm1fZGF0YWJhc2VJbmZvOworfQorCiB2b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlOjpvcGVuRGF0YWJhc2VDb25uZWN0aW9uKElEQkNvbm5lY3Rpb25Ub0NsaWVudCYgY29ubmVj
dGlvbiwgY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQogewogICAgIGF1dG8gb3Bl
cmF0aW9uID0gSURCU2VydmVyT3BlcmF0aW9uOjpjcmVhdGUoY29ubmVjdGlvbiwgcmVxdWVzdERh
dGEpOwpAQCAtNjMsMTMgKzcwLDEwNSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpoYW5kbGVP
cGVuRGF0YWJhc2VPcGVyYXRpb25zKCkKIAogICAgIGF1dG8gb3BlcmF0aW9uID0gbV9wZW5kaW5n
T3BlbkRhdGFiYXNlT3BlcmF0aW9ucy50YWtlRmlyc3QoKTsKIAotICAgIC8vIEZJWE1FOiBSZXBv
cnRpbmcgb3BlbiBvcGVyYXRpb25zIGFzIGZhaWx1cmVzIGZvciBub3cuCi0gICAgLy8gQ3JlYXRp
bmcgZGF0YWJhc2UgY29ubmVjdGlvbnMgZm9yIHN1Y2Nlc3Mgd2lsbCBiZSB0aGUgbmV4dCBzdGVw
LgorICAgIC8vIDMuMy4xIE9wZW5pbmcgYSBkYXRhYmFzZQorICAgIC8vIElmIHJlcXVlc3RlZCB2
ZXJzaW9uIGlzIHVuZGVmaW5lZCwgdGhlbiBsZXQgcmVxdWVzdGVkIHZlcnNpb24gYmUgMSBpZiBk
YiB3YXMgY3JlYXRlZCBpbiB0aGUgcHJldmlvdXMgc3RlcCwKKyAgICAvLyBvciB0aGUgY3VycmVu
dCB2ZXJzaW9uIG9mIGRiIG90aGVyd2lzZS4KKyAgICB1aW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9u
ID0gb3BlcmF0aW9uLT5yZXF1ZXN0RGF0YSgpLnJlcXVlc3RlZFZlcnNpb24oKTsKKyAgICBpZiAo
IXJlcXVlc3RlZFZlcnNpb24pCisgICAgICAgIHJlcXVlc3RlZFZlcnNpb24gPSBtX2RhdGFiYXNl
SW5mby0+dmVyc2lvbigpID8gbV9kYXRhYmFzZUluZm8tPnZlcnNpb24oKSA6IDE7CisKKyAgICAv
LyAzLjMuMSBPcGVuaW5nIGEgZGF0YWJhc2UKKyAgICAvLyBJZiB0aGUgZGF0YWJhc2UgdmVyc2lv
biBoaWdoZXIgdGhhbiB0aGUgcmVxdWVzdGVkIHZlcnNpb24sIGFib3J0IHRoZXNlIHN0ZXBzIGFu
ZCByZXR1cm4gYSBWZXJzaW9uRXJyb3IuCisgICAgaWYgKHJlcXVlc3RlZFZlcnNpb24gPCBtX2Rh
dGFiYXNlSW5mby0+dmVyc2lvbigpKSB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gSURCUmVzdWx0
RGF0YTo6ZXJyb3Iob3BlcmF0aW9uLT5yZXF1ZXN0RGF0YSgpLnJlcXVlc3RJZGVudGlmaWVyKCks
IElEQkVycm9yKElEQkV4Y2VwdGlvbkNvZGU6OlZlcnNpb25FcnJvcikpOworICAgICAgICBvcGVy
YXRpb24tPmNvbm5lY3Rpb24oKS5kaWRPcGVuRGF0YWJhc2UocmVzdWx0KTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIFJlZjxVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24+IGNvbm5l
Y3Rpb24gPSBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246OmNyZWF0ZSgqdGhpcywgb3BlcmF0
aW9uLT5jb25uZWN0aW9uKCkpOworICAgIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiogcmF3
Q29ubmVjdGlvbiA9ICZjb25uZWN0aW9uLmdldCgpOworICAgIG1fc2VydmVyLnJlZ2lzdGVyRGF0
YWJhc2VDb25uZWN0aW9uKCpyYXdDb25uZWN0aW9uKTsKKworICAgIGlmIChyZXF1ZXN0ZWRWZXJz
aW9uID09IG1fZGF0YWJhc2VJbmZvLT52ZXJzaW9uKCkpIHsKKyAgICAgICAgYWRkT3BlbkRhdGFi
YXNlQ29ubmVjdGlvbihXVEY6Om1vdmUoY29ubmVjdGlvbikpOworCisgICAgICAgIGF1dG8gcmVz
dWx0ID0gSURCUmVzdWx0RGF0YTo6b3BlbkRhdGFiYXNlU3VjY2VzcyhvcGVyYXRpb24tPnJlcXVl
c3REYXRhKCkucmVxdWVzdElkZW50aWZpZXIoKSwgKnJhd0Nvbm5lY3Rpb24pOworICAgICAgICBv
cGVyYXRpb24tPmNvbm5lY3Rpb24oKS5kaWRPcGVuRGF0YWJhc2UocmVzdWx0KTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVCghbV92ZXJzaW9uQ2hhbmdlT3BlcmF0aW9uKTsK
KyAgICBBU1NFUlQoIW1fdmVyc2lvbkNoYW5nZURhdGFiYXNlQ29ubmVjdGlvbik7CisKKyAgICBt
X3ZlcnNpb25DaGFuZ2VPcGVyYXRpb24gPSBhZG9wdFJlZihvcGVyYXRpb24ubGVha1JlZigpKTsK
KyAgICBtX3ZlcnNpb25DaGFuZ2VEYXRhYmFzZUNvbm5lY3Rpb24gPSByYXdDb25uZWN0aW9uOwor
CisgICAgLy8gMy4zLjcgInZlcnNpb25jaGFuZ2UiIHRyYW5zYWN0aW9uIHN0ZXBzCisgICAgLy8g
SWYgdGhlcmUncyBubyBvdGhlciBvcGVuIGNvbm5lY3Rpb25zIHRvIHRoaXMgZGF0YWJhc2UsIHRo
ZSB2ZXJzaW9uIGNoYW5nZSBwcm9jZXNzIGNhbiBiZWdpbiBpbW1lZGlhdGVseS4KKyAgICBpZiAo
IWhhc0FueU9wZW5Db25uZWN0aW9ucygpKSB7CisgICAgICAgIHN0YXJ0VmVyc2lvbkNoYW5nZVRy
YW5zYWN0aW9uKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBPdGhlcndpc2Ug
d2UgaGF2ZSB0byBub3RpZnkgYWxsIHRob3NlIG9wZW4gY29ubmVjdGlvbnMgYW5kIHdhaXQgZm9y
IHRoZW0gdG8gY2xvc2UuCisgICAgbm90aWZ5Q29ubmVjdGlvbnNPZlZlcnNpb25DaGFuZ2UoKTsK
K30KKworYm9vbCBVbmlxdWVJREJEYXRhYmFzZTo6aGFzQW55T3BlbkNvbm5lY3Rpb25zKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gIW1fb3BlbkRhdGFiYXNlQ29ubmVjdGlvbnMuaXNFbXB0eSgpOwor
fQorCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpzdGFydFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlv
bigpCit7CisgICAgTE9HKEluZGV4ZWREQiwgIihtYWluKSBVbmlxdWVJREJEYXRhYmFzZTo6c3Rh
cnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24iKTsKKworICAgIEFTU0VSVCghbV92ZXJzaW9uQ2hh
bmdlVHJhbnNhY3Rpb24pOworICAgIEFTU0VSVChtX3ZlcnNpb25DaGFuZ2VPcGVyYXRpb24pOwor
ICAgIEFTU0VSVChtX3ZlcnNpb25DaGFuZ2VEYXRhYmFzZUNvbm5lY3Rpb24pOworCisgICAgYXV0
byBvcGVyYXRpb24gPSBtX3ZlcnNpb25DaGFuZ2VPcGVyYXRpb247CisgICAgbV92ZXJzaW9uQ2hh
bmdlT3BlcmF0aW9uID0gbnVsbHB0cjsKIAotICAgIElEQlJlc3VsdERhdGEgcmVzdWx0KG9wZXJh
dGlvbi0+cmVxdWVzdERhdGEoKS5yZXF1ZXN0SWRlbnRpZmllcigpLCBJREJFcnJvcihJREJFeGNl
cHRpb25Db2RlOjpVbmtub3duKSk7CisgICAgdWludDY0X3QgcmVxdWVzdGVkVmVyc2lvbiA9IG9w
ZXJhdGlvbi0+cmVxdWVzdERhdGEoKS5yZXF1ZXN0ZWRWZXJzaW9uKCk7CisgICAgaWYgKCFyZXF1
ZXN0ZWRWZXJzaW9uKQorICAgICAgICByZXF1ZXN0ZWRWZXJzaW9uID0gbV9kYXRhYmFzZUluZm8t
PnZlcnNpb24oKSA/IG1fZGF0YWJhc2VJbmZvLT52ZXJzaW9uKCkgOiAxOworCisgICAgYWRkT3Bl
bkRhdGFiYXNlQ29ubmVjdGlvbigqbV92ZXJzaW9uQ2hhbmdlRGF0YWJhc2VDb25uZWN0aW9uKTsK
KworICAgIG1fdmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uID0gbV92ZXJzaW9uQ2hhbmdlRGF0YWJh
c2VDb25uZWN0aW9uLT5jcmVhdGVWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24ocmVxdWVzdGVkVmVy
c2lvbik7CisgICAgbV9pblByb2dyZXNzVHJhbnNhY3Rpb25zLnNldChtX3ZlcnNpb25DaGFuZ2VU
cmFuc2FjdGlvbi0+aW5mbygpLmlkZW50aWZpZXIoKSwgbV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rp
b24pOworCisgICAgYXV0byByZXN1bHQgPSBJREJSZXN1bHREYXRhOjpvcGVuRGF0YWJhc2VVcGdy
YWRlTmVlZGVkKG9wZXJhdGlvbi0+cmVxdWVzdERhdGEoKS5yZXF1ZXN0SWRlbnRpZmllcigpLCAq
bV92ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pOwogICAgIG9wZXJhdGlvbi0+Y29ubmVjdGlvbigp
LmRpZE9wZW5EYXRhYmFzZShyZXN1bHQpOwogfQogCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpu
b3RpZnlDb25uZWN0aW9uc09mVmVyc2lvbkNoYW5nZSgpCit7CisgICAgQVNTRVJUKG1fdmVyc2lv
bkNoYW5nZU9wZXJhdGlvbik7CisgICAgQVNTRVJUKG1fdmVyc2lvbkNoYW5nZURhdGFiYXNlQ29u
bmVjdGlvbik7CisKKyAgICB1aW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uID0gbV92ZXJzaW9uQ2hh
bmdlT3BlcmF0aW9uLT5yZXF1ZXN0RGF0YSgpLnJlcXVlc3RlZFZlcnNpb24oKTsKKworICAgIExP
RyhJbmRleGVkREIsICIobWFpbikgVW5pcXVlSURCRGF0YWJhc2U6Om5vdGlmeUNvbm5lY3Rpb25z
T2ZWZXJzaW9uQ2hhbmdlIC0gJWxsdSIsIHJlcXVlc3RlZFZlcnNpb24pOworCisgICAgLy8gMy4z
LjcgInZlcnNpb25jaGFuZ2UiIHRyYW5zYWN0aW9uIHN0ZXBzCisgICAgLy8gRmlyZSBhIHZlcnNp
b25jaGFuZ2UgZXZlbnQgYXQgZWFjaCBjb25uZWN0aW9uIGluIG1fb3BlbkRhdGFiYXNlQ29ubmVj
dGlvbnMgdGhhdCBpcyBvcGVuLgorICAgIC8vIFRoZSBldmVudCBtdXN0IG5vdCBiZSBmaXJlZCBv
biBjb25uZWN0aW9ucyB3aGljaCBoYXMgdGhlIGNsb3NlUGVuZGluZyBmbGFnIHNldC4KKyAgICBm
b3IgKGF1dG8gY29ubmVjdGlvbiA6IG1fb3BlbkRhdGFiYXNlQ29ubmVjdGlvbnMpIHsKKyAgICAg
ICAgaWYgKGNvbm5lY3Rpb24tPmNsb3NlUGVuZGluZygpKQorICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgY29ubmVjdGlvbi0+ZmlyZVZlcnNpb25DaGFuZ2VFdmVudChyZXF1ZXN0ZWRW
ZXJzaW9uKTsKKyAgICB9Cit9CisKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmFkZE9wZW5EYXRh
YmFzZUNvbm5lY3Rpb24oUmVmPFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbj4mJiBjb25uZWN0
aW9uKQoreworICAgIEFTU0VSVCghbV9vcGVuRGF0YWJhc2VDb25uZWN0aW9ucy5jb250YWlucygm
Y29ubmVjdGlvbi5nZXQoKSkpOworICAgIG1fb3BlbkRhdGFiYXNlQ29ubmVjdGlvbnMuYWRkKGFk
b3B0UmVmKGNvbm5lY3Rpb24ubGVha1JlZigpKSk7Cit9CisKIHZvaWQgVW5pcXVlSURCRGF0YWJh
c2U6Om9wZW5CYWNraW5nU3RvcmUoY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlm
aWVyKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2Uu
aAppbmRleCA2YmI2MzJkLi44YzQ4NzE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmgKQEAgLTMy
LDcgKzMyLDEwIEBACiAjaW5jbHVkZSAiSURCRGF0YWJhc2VJZGVudGlmaWVyLmgiCiAjaW5jbHVk
ZSAiSURCRGF0YWJhc2VJbmZvLmgiCiAjaW5jbHVkZSAiSURCU2VydmVyT3BlcmF0aW9uLmgiCisj
aW5jbHVkZSAiVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9U
aHJlYWRTYWZlUmVmQ291bnRlZC5oPgogCkBAIC01NCwxMCArNTcsMTcgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBvcGVuRGF0YWJhc2VDb25uZWN0aW9uKElEQkNvbm5lY3Rpb25Ub0NsaWVudCYsIGNv
bnN0IElEQlJlcXVlc3REYXRhJik7CiAKKyAgICBjb25zdCBJREJEYXRhYmFzZUluZm8mIGluZm8o
KSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBVbmlxdWVJREJEYXRhYmFzZShJREJTZXJ2ZXImLCBj
b25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImKTsKICAgICAKICAgICB2b2lkIGhhbmRsZU9wZW5E
YXRhYmFzZU9wZXJhdGlvbnMoKTsKKyAgICB2b2lkIGFkZE9wZW5EYXRhYmFzZUNvbm5lY3Rpb24o
UmVmPFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbj4mJik7CisgICAgYm9vbCBoYXNBbnlPcGVu
Q29ubmVjdGlvbnMoKSBjb25zdDsKKworICAgIHZvaWQgc3RhcnRWZXJzaW9uQ2hhbmdlVHJhbnNh
Y3Rpb24oKTsKKyAgICB2b2lkIG5vdGlmeUNvbm5lY3Rpb25zT2ZWZXJzaW9uQ2hhbmdlKCk7CiAg
ICAgCiAgICAgLy8gRGF0YWJhc2UgdGhyZWFkIG9wZXJhdGlvbnMKICAgICB2b2lkIG9wZW5CYWNr
aW5nU3RvcmUoY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJik7CkBAIC02OSw3ICs3OSwxNSBA
QCBwcml2YXRlOgogICAgIElEQkRhdGFiYXNlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAg
CiAgICAgRGVxdWU8UmVmPElEQlNlcnZlck9wZXJhdGlvbj4+IG1fcGVuZGluZ09wZW5EYXRhYmFz
ZU9wZXJhdGlvbnM7Ci0gICAgCisKKyAgICBIYXNoU2V0PFJlZlB0cjxVbmlxdWVJREJEYXRhYmFz
ZUNvbm5lY3Rpb24+PiBtX29wZW5EYXRhYmFzZUNvbm5lY3Rpb25zOworCisgICAgUmVmUHRyPElE
QlNlcnZlck9wZXJhdGlvbj4gbV92ZXJzaW9uQ2hhbmdlT3BlcmF0aW9uOworICAgIFJlZlB0cjxV
bmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24+IG1fdmVyc2lvbkNoYW5nZURhdGFiYXNlQ29ubmVj
dGlvbjsKKworICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uPiBtX3ZlcnNp
b25DaGFuZ2VUcmFuc2FjdGlvbjsKKyAgICBIYXNoTWFwPElEQlJlc291cmNlSWRlbnRpZmllciwg
UmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+PiBtX2luUHJvZ3Jlc3NUcmFuc2Fj
dGlvbnM7CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCQmFja2luZ1N0b3JlPiBtX2JhY2tpbmdT
dG9yZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VJbmZvPiBtX2RhdGFiYXNlSW5m
bzsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3NDY4YzYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJh
c2VDb25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oIgorCisj
aWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNpbmNsdWRlICJJREJDb25uZWN0aW9uVG9D
bGllbnQuaCIKKyNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkluZm8uaCIKKyNpbmNsdWRlICJMb2dn
aW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBJREJTZXJ2ZXIgeworCitz
dGF0aWMgdWludDY0X3QgbmV4dERhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIoKQoreworICAg
IHN0YXRpYyB1aW50NjRfdCBuZXh0SWRlbnRpZmllciA9IDA7CisgICAgcmV0dXJuICsrbmV4dElk
ZW50aWZpZXI7Cit9CisKK1JlZjxVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24+IFVuaXF1ZUlE
QkRhdGFiYXNlQ29ubmVjdGlvbjo6Y3JlYXRlKFVuaXF1ZUlEQkRhdGFiYXNlJiBkYXRhYmFzZSwg
SURCQ29ubmVjdGlvblRvQ2xpZW50JiBjb25uZWN0aW9uKQoreworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbihkYXRhYmFzZSwgY29ubmVjdGlvbikp
OworfQorCitVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246OlVuaXF1ZUlEQkRhdGFiYXNlQ29u
bmVjdGlvbihVbmlxdWVJREJEYXRhYmFzZSYgZGF0YWJhc2UsIElEQkNvbm5lY3Rpb25Ub0NsaWVu
dCYgY29ubmVjdGlvbikKKyAgICA6IG1faWRlbnRpZmllcihuZXh0RGF0YWJhc2VDb25uZWN0aW9u
SWRlbnRpZmllcigpKQorICAgICwgbV9kYXRhYmFzZShkYXRhYmFzZSkKKyAgICAsIG1fY29ubmVj
dGlvblRvQ2xpZW50KGNvbm5lY3Rpb24pCit7Cit9CisKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2VD
b25uZWN0aW9uOjpmaXJlVmVyc2lvbkNoYW5nZUV2ZW50KHVpbnQ2NF90IHJlcXVlc3RlZFZlcnNp
b24pCit7CisgICAgQVNTRVJUKCFtX2Nsb3NlUGVuZGluZyk7CisgICAgbV9jb25uZWN0aW9uVG9D
bGllbnQuZmlyZVZlcnNpb25DaGFuZ2VFdmVudCgqdGhpcywgcmVxdWVzdGVkVmVyc2lvbik7Cit9
CisKK1JlZjxVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uPiBVbmlxdWVJREJEYXRhYmFzZUNv
bm5lY3Rpb246OmNyZWF0ZVZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbih1aW50NjRfdCBuZXdWZXJz
aW9uKQoreworICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb246
OmNyZWF0ZVZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiIpOworICAgIEFTU0VSVCghbV9jbG9zZVBl
bmRpbmcpOworCisgICAgSURCVHJhbnNhY3Rpb25JbmZvIGluZm8gPSBJREJUcmFuc2FjdGlvbklu
Zm86OnZlcnNpb25DaGFuZ2UobV9jb25uZWN0aW9uVG9DbGllbnQsIG5ld1ZlcnNpb24pOworCisg
ICAgUmVmPFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uID0gVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6Y3JlYXRlKCp0aGlzLCBpbmZvKTsKKyAgICBtX3RyYW5z
YWN0aW9uTWFwLnNldCh0cmFuc2FjdGlvbi0+aW5mbygpLmlkZW50aWZpZXIoKSwgJnRyYW5zYWN0
aW9uLmdldCgpKTsKKworICAgIHJldHVybiBXVEY6Om1vdmUodHJhbnNhY3Rpb24pOworfQorCit9
IC8vIG5hbWVzcGFjZSBJREJTZXJ2ZXIKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNl
Q29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmNzM1ZWUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uX2gKKyNkZWZpbmUgVW5p
cXVlSURCRGF0YWJhc2VDb25uZWN0aW9uX2gKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNF
KQorCisjaW5jbHVkZSAiVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oIgorI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBJREJTZXJ2ZXIgewor
CitjbGFzcyBJREJDb25uZWN0aW9uVG9DbGllbnQ7CitjbGFzcyBVbmlxdWVJREJEYXRhYmFzZTsK
K2NsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb247CisKK2NsYXNzIFVuaXF1ZUlEQkRh
dGFiYXNlQ29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFVuaXF1ZUlEQkRhdGFiYXNlQ29u
bmVjdGlvbj4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8VW5pcXVlSURCRGF0YWJhc2VDb25u
ZWN0aW9uPiBjcmVhdGUoVW5pcXVlSURCRGF0YWJhc2UmLCBJREJDb25uZWN0aW9uVG9DbGllbnQm
KTsKKworICAgIHVpbnQ2NF90IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZp
ZXI7IH0KKyAgICBVbmlxdWVJREJEYXRhYmFzZSYgZGF0YWJhc2UoKSB7IHJldHVybiBtX2RhdGFi
YXNlOyB9CisgICAgSURCQ29ubmVjdGlvblRvQ2xpZW50JiBjb25uZWN0aW9uVG9DbGllbnQoKSB7
IHJldHVybiBtX2Nvbm5lY3Rpb25Ub0NsaWVudDsgfQorCisgICAgYm9vbCBjbG9zZVBlbmRpbmco
KSBjb25zdCB7IHJldHVybiBtX2Nsb3NlUGVuZGluZzsgfQorCisgICAgdm9pZCBmaXJlVmVyc2lv
bkNoYW5nZUV2ZW50KHVpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24pOworICAgIFJlZjxVbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uPiBjcmVhdGVWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24odWlu
dDY0X3QgbmV3VmVyc2lvbik7CisKK3ByaXZhdGU6CisgICAgVW5pcXVlSURCRGF0YWJhc2VDb25u
ZWN0aW9uKFVuaXF1ZUlEQkRhdGFiYXNlJiwgSURCQ29ubmVjdGlvblRvQ2xpZW50Jik7CisKKyAg
ICB1aW50NjRfdCBtX2lkZW50aWZpZXIgeyAwIH07CisgICAgVW5pcXVlSURCRGF0YWJhc2UmIG1f
ZGF0YWJhc2U7CisgICAgSURCQ29ubmVjdGlvblRvQ2xpZW50JiBtX2Nvbm5lY3Rpb25Ub0NsaWVu
dDsKKworICAgIGJvb2wgbV9jbG9zZVBlbmRpbmcgeyBmYWxzZSB9OworCisgICAgSGFzaE1hcDxJ
REJSZXNvdXJjZUlkZW50aWZpZXIsIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9u
Pj4gbV90cmFuc2FjdGlvbk1hcDsKK307CisKK30gLy8gbmFtZXNwYWNlIElEQlNlcnZlcgorfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0Up
CisjZW5kaWYgLy8gVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9V
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi40NzNhNjJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwCkBA
IC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oIgorCisjaWYgRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBJREJTZXJ2ZXIgewor
CitSZWY8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbjo6Y3JlYXRlKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
SURCVHJhbnNhY3Rpb25JbmZvJiBpbmZvKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFVu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24oY29ubmVjdGlvbiwgaW5mbykpOworfQorCitVbmlx
dWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uKFVu
aXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSURCVHJhbnNhY3Rpb25JbmZv
JiBpbmZvKQorICAgIDogbV9kYXRhYmFzZUNvbm5lY3Rpb24oY29ubmVjdGlvbikKKyAgICAsIG1f
dHJhbnNhY3Rpb25JbmZvKGluZm8pCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIElEQlNlcnZlcgor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJB
U0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NTM0MzFhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb24uaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBVbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uX2gKKyNkZWZpbmUgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2Fj
dGlvbl9oCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIklEQlRy
YW5zYWN0aW9uSW5mby5oIgorI2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5o
IgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgSURCU2VydmVyIHsKKworY2xhc3MgVW5pcXVl
SURCRGF0YWJhc2VDb25uZWN0aW9uOworCitjbGFzcyBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0
aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gewor
cHVibGljOgorICAgIHN0YXRpYyBSZWY8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gY3Jl
YXRlKFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYsIElEQlRyYW5zYWN0aW9uSW5mbyYpOwor
CisgICAgVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBkYXRhYmFzZUNvbm5lY3Rpb24oKSB7
IHJldHVybiBtX2RhdGFiYXNlQ29ubmVjdGlvbi5nZXQoKTsgfQorICAgIGNvbnN0IElEQlRyYW5z
YWN0aW9uSW5mbyYgaW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNhY3Rpb25JbmZvOyB9CisK
K3ByaXZhdGU6CisgICAgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbihVbmlxdWVJREJEYXRh
YmFzZUNvbm5lY3Rpb24mLCBJREJUcmFuc2FjdGlvbkluZm8mKTsKKworICAgIFJlZjxVbmlxdWVJ
REJEYXRhYmFzZUNvbm5lY3Rpb24+IG1fZGF0YWJhc2VDb25uZWN0aW9uOworICAgIElEQlRyYW5z
YWN0aW9uSW5mbyBtX3RyYW5zYWN0aW9uSW5mbzsKK307CisKK30gLy8gbmFtZXNwYWNlIElEQlNl
cnZlcgorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCisjZW5kaWYgLy8gVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbl9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRGF0YWJh
c2VJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJE
YXRhYmFzZUluZm8uY3BwCmluZGV4IGFhNzJiNTcuLjM5YjQ2MDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJEYXRhYmFzZUluZm8uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJEYXRhYmFzZUlu
Zm8uY3BwCkBAIC0zMCw2ICszMCwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0lEQkRh
dGFiYXNlSW5mbzo6SURCRGF0YWJhc2VJbmZvKCkKK3sKK30KKwogSURCRGF0YWJhc2VJbmZvOjpJ
REJEYXRhYmFzZUluZm8oY29uc3QgU3RyaW5nJiBuYW1lLCB1aW50NjRfdCB2ZXJzaW9uKQogICAg
IDogbV9uYW1lKG5hbWUpCiAgICAgLCBtX3ZlcnNpb24odmVyc2lvbikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJEYXRhYmFzZUluZm8uaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJEYXRhYmFzZUluZm8u
aAppbmRleCA2ODdmNTlmLi40ZTU4NTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRGF0YWJhc2VJbmZvLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkRhdGFiYXNlSW5mby5oCkBAIC0zOCwxMCAr
MzgsMTEgQEAgcHVibGljOgogCiAgICAgSURCRGF0YWJhc2VJbmZvIGlzb2xhdGVkQ29weSgpIGNv
bnN0OwogCisgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9
CisgICAgdWludDY0X3QgdmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fdmVyc2lvbjsgfQorCiBw
cml2YXRlOgotICAgIElEQkRhdGFiYXNlSW5mbygpCi0gICAgewotICAgIH0KKyAgICBJREJEYXRh
YmFzZUluZm8oKTsKIAogICAgIFN0cmluZyBtX25hbWU7CiAgICAgdWludDY0X3QgbV92ZXJzaW9u
IHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hh
cmVkL0lEQkVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SURCRXJyb3IuaAppbmRleCBlZjVjMTM0Li5iMmQ3MjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuaApAQCAtMzQsNyArMzQsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gY2xhc3MgSURCRXhjZXB0aW9uQ29kZSB7CiAg
ICAgTm9uZSA9IDAsCi0gICAgVW5rbm93biA9IDEsCisgICAgVW5rbm93biwKKyAgICBWZXJzaW9u
RXJyb3IsCiB9OwogCiBjbGFzcyBJREJFcnJvciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlcXVlc3REYXRhLmNwcAppbmRleCBl
ZTNlMTJjLi4xZDY2NTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXF1ZXN0RGF0YS5jcHAKQEAgLTM2LDkgKzM2LDE1IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIElEQlJlcXVlc3REYXRhOjpJREJSZXF1ZXN0RGF0YShjb25z
dCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Ub1NlcnZlciYgY29ubmVjdGlvbiwgY29uc3QgSURC
Q2xpZW50OjpJREJPcGVuREJSZXF1ZXN0JiByZXF1ZXN0KQogICAgIDogbV9yZXF1ZXN0SWRlbnRp
Zmllcihjb25uZWN0aW9uLCByZXF1ZXN0KQogICAgICwgbV9kYXRhYmFzZUlkZW50aWZpZXIocmVx
dWVzdC5kYXRhYmFzZUlkZW50aWZpZXIoKSkKKyAgICAsIG1fcmVxdWVzdGVkVmVyc2lvbihyZXF1
ZXN0LnZlcnNpb24oKSkKIHsKIH0KIAordWludDY0X3QgSURCUmVxdWVzdERhdGE6OnJlcXVlc3Rl
ZFZlcnNpb24oKSBjb25zdAoreworICAgIHJldHVybiBtX3JlcXVlc3RlZFZlcnNpb247Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFC
QVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVk
L0lEQlJlcXVlc3REYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSURCUmVxdWVzdERhdGEuaAppbmRleCBiYWE2YmI1Li5hMWY4MDJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERhdGEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVxdWVzdERh
dGEuaApAQCAtNDUsOSArNDUsMTMgQEAgcHVibGljOgogICAgIElEQlJlc291cmNlSWRlbnRpZmll
ciByZXF1ZXN0SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdElkZW50aWZpZXI7
IH0KICAgICBjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImIGRhdGFiYXNlSWRlbnRpZmllcigp
IGNvbnN0IHsgcmV0dXJuIG1fZGF0YWJhc2VJZGVudGlmaWVyOyB9CiAKKyAgICB1aW50NjRfdCBy
ZXF1ZXN0ZWRWZXJzaW9uKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgSURCUmVzb3VyY2VJZGVu
dGlmaWVyIG1fcmVxdWVzdElkZW50aWZpZXI7CiAgICAgSURCRGF0YWJhc2VJZGVudGlmaWVyIG1f
ZGF0YWJhc2VJZGVudGlmaWVyOworCisgICAgdWludDY0X3QgbV9yZXF1ZXN0ZWRWZXJzaW9uOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc291cmNlSWRlbnRpZmllci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzb3VyY2VJZGVudGlmaWVy
LmNwcAppbmRleCBiMGQyNWNlLi4xOTcxMjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzb3VyY2VJZGVudGlmaWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzb3VyY2VJZGVudGlm
aWVyLmNwcApAQCAtMjgsMjcgKzI4LDM2IEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKIAorI2luY2x1ZGUgIklEQkNvbm5lY3Rpb25Ub0NsaWVudC5oIgogI2luY2x1ZGUgIklEQkNv
bm5lY3Rpb25Ub1NlcnZlci5oIgogI2luY2x1ZGUgIklEQlJlcXVlc3RJbXBsLmgiCiAjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgdWlu
dDY0X3QgbmV4dFJlc291cmNlTnVtYmVyKCkKK3N0YXRpYyB1aW50NjRfdCBuZXh0Q2xpZW50UmVz
b3VyY2VOdW1iZXIoKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgc3RhdGlj
IHVpbnQ2NF90IGN1cnJlbnROdW1iZXIgPSAxOworICAgIHJldHVybiBjdXJyZW50TnVtYmVyICs9
IDI7Cit9CisKK3N0YXRpYyB1aW50NjRfdCBuZXh0U2VydmVyUmVzb3VyY2VOdW1iZXIoKQogewog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgc3RhdGljIHVpbnQ2NF90IGN1cnJlbnRO
dW1iZXIgPSAwOwotICAgIHJldHVybiArK2N1cnJlbnROdW1iZXI7CisgICAgcmV0dXJuIGN1cnJl
bnROdW1iZXIgKz0gMjsKIH0KIAotSURCUmVzb3VyY2VJZGVudGlmaWVyOjpJREJSZXNvdXJjZUlk
ZW50aWZpZXIoKQotICAgIDogbV9yZXNvdXJjZU51bWJlcihuZXh0UmVzb3VyY2VOdW1iZXIoKSkK
K0lEQlJlc291cmNlSWRlbnRpZmllcjo6SURCUmVzb3VyY2VJZGVudGlmaWVyKHVpbnQ2NF90IGNv
bm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIpCisgICAgOiBt
X2lkYkNvbm5lY3Rpb25JZGVudGlmaWVyKGNvbm5lY3Rpb25JZGVudGlmaWVyKQorICAgICwgbV9y
ZXNvdXJjZU51bWJlcihyZXNvdXJjZUlkZW50aWZpZXIpCiB7CiB9CiAKIElEQlJlc291cmNlSWRl
bnRpZmllcjo6SURCUmVzb3VyY2VJZGVudGlmaWVyKGNvbnN0IElEQkNsaWVudDo6SURCQ29ubmVj
dGlvblRvU2VydmVyJiBjb25uZWN0aW9uKQogICAgIDogbV9pZGJDb25uZWN0aW9uSWRlbnRpZmll
cihjb25uZWN0aW9uLmlkZW50aWZpZXIoKSkKLSAgICAsIG1fcmVzb3VyY2VOdW1iZXIobmV4dFJl
c291cmNlTnVtYmVyKCkpCisgICAgLCBtX3Jlc291cmNlTnVtYmVyKG5leHRDbGllbnRSZXNvdXJj
ZU51bWJlcigpKQogewogfQogCkBAIC01OCwyMCArNjcsMjAgQEAgSURCUmVzb3VyY2VJZGVudGlm
aWVyOjpJREJSZXNvdXJjZUlkZW50aWZpZXIoY29uc3QgSURCQ2xpZW50OjpJREJDb25uZWN0aW9u
VG9TZXIKIHsKIH0KIAorSURCUmVzb3VyY2VJZGVudGlmaWVyOjpJREJSZXNvdXJjZUlkZW50aWZp
ZXIoY29uc3QgSURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQmIGNvbm5lY3Rpb24pCisg
ICAgOiBtX2lkYkNvbm5lY3Rpb25JZGVudGlmaWVyKGNvbm5lY3Rpb24uaWRlbnRpZmllcigpKQor
ICAgICwgbV9yZXNvdXJjZU51bWJlcihuZXh0U2VydmVyUmVzb3VyY2VOdW1iZXIoKSkKK3sKK30K
KwogSURCUmVzb3VyY2VJZGVudGlmaWVyIElEQlJlc291cmNlSWRlbnRpZmllcjo6ZW1wdHlWYWx1
ZSgpCiB7Ci0gICAgSURCUmVzb3VyY2VJZGVudGlmaWVyIHJlc3VsdDsKLSAgICByZXN1bHQubV9p
ZGJDb25uZWN0aW9uSWRlbnRpZmllciA9IDA7Ci0gICAgcmVzdWx0Lm1fcmVzb3VyY2VOdW1iZXIg
PSAwOwotICAgIHJldHVybiBXVEY6Om1vdmUocmVzdWx0KTsKKyAgICByZXR1cm4gSURCUmVzb3Vy
Y2VJZGVudGlmaWVyKDAsIDApOwogfQogCiBJREJSZXNvdXJjZUlkZW50aWZpZXIgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyOjpkZWxldGVkVmFsdWUoKQogewotICAgIElEQlJlc291cmNlSWRlbnRpZmll
ciByZXN1bHQ7Ci0gICAgcmVzdWx0Lm1faWRiQ29ubmVjdGlvbklkZW50aWZpZXIgPSBzdGQ6Om51
bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCk7Ci0gICAgcmVzdWx0Lm1fcmVzb3VyY2VOdW1i
ZXIgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCk7Ci0gICAgcmV0dXJuIFdU
Rjo6bW92ZShyZXN1bHQpOworICAgIHJldHVybiBJREJSZXNvdXJjZUlkZW50aWZpZXIoc3RkOjpu
dW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2
NF90Pjo6bWF4KCkpOwogfQogCiBib29sIElEQlJlc291cmNlSWRlbnRpZmllcjo6aXNIYXNoVGFi
bGVEZWxldGVkVmFsdWUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc291cmNlSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc291cmNlSWRlbnRpZmllci5oCmluZGV4
IGMzOGQxZjIuLmQ4N2M0Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NoYXJlZC9JREJSZXNvdXJjZUlkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzb3VyY2VJZGVudGlmaWVyLmgKQEAgLTM3
LDEwICszNywxNSBAQCBjbGFzcyBJREJDb25uZWN0aW9uVG9TZXJ2ZXI7CiBjbGFzcyBJREJSZXF1
ZXN0OwogfQogCituYW1lc3BhY2UgSURCU2VydmVyIHsKK2NsYXNzIElEQkNvbm5lY3Rpb25Ub0Ns
aWVudDsKK30KKwogY2xhc3MgSURCUmVzb3VyY2VJZGVudGlmaWVyIHsKIHB1YmxpYzoKLSAgICBJ
REJSZXNvdXJjZUlkZW50aWZpZXIoY29uc3QgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2
ZXImKTsKKyAgICBleHBsaWNpdCBJREJSZXNvdXJjZUlkZW50aWZpZXIoY29uc3QgSURCQ2xpZW50
OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXImKTsKICAgICBJREJSZXNvdXJjZUlkZW50aWZpZXIoY29u
c3QgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXImLCBjb25zdCBJREJDbGllbnQ6OklE
QlJlcXVlc3QmKTsKKyAgICBleHBsaWNpdCBJREJSZXNvdXJjZUlkZW50aWZpZXIoY29uc3QgSURC
U2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQmKTsKIAogICAgIHN0YXRpYyBJREJSZXNvdXJj
ZUlkZW50aWZpZXIgZGVsZXRlZFZhbHVlKCk7CiAgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRW
YWx1ZSgpIGNvbnN0OwpAQCAtNjYsOSArNzEsMTAgQEAgcHVibGljOgogICAgIHVpbnQ2NF90IGNv
bm5lY3Rpb25JZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGJDb25uZWN0aW9uSWRlbnRp
ZmllcjsgfQogICAgIAogcHJpdmF0ZToKLSAgICBJREJSZXNvdXJjZUlkZW50aWZpZXIoKTsKKyAg
ICBJREJSZXNvdXJjZUlkZW50aWZpZXIoKSA9IGRlbGV0ZTsKKyAgICBJREJSZXNvdXJjZUlkZW50
aWZpZXIodWludDY0X3QgY29ubmVjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IHJlc291cmNlSWRl
bnRpZmllcik7CiAgICAgdWludDY0X3QgbV9pZGJDb25uZWN0aW9uSWRlbnRpZmllciB7IDAgfTsK
LSAgICB1aW50NjRfdCBtX3Jlc291cmNlTnVtYmVyOworICAgIHVpbnQ2NF90IG1fcmVzb3VyY2VO
dW1iZXIgeyAwIH07CiB9OwogCiBzdHJ1Y3QgSURCUmVzb3VyY2VJZGVudGlmaWVySGFzaCB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVz
dWx0RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURC
UmVzdWx0RGF0YS5jcHAKaW5kZXggNTdlOGQ2MC4uNDVmOTBhYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJSZXN1bHREYXRhLmNw
cApAQCAtMjgsMTQgKzI4LDY5IEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAor
I2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNlLmgiCisjaW5jbHVkZSAiVW5pcXVlSURCRGF0YWJh
c2VDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5o
IgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUlEQlJlc3VsdERhdGE6OklEQlJlc3VsdERhdGEo
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgSURC
RXJyb3ImIGVycm9yKQorSURCUmVzdWx0RGF0YTo6SURCUmVzdWx0RGF0YShjb25zdCBJREJSZXNv
dXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyKQogICAgIDogbV9yZXF1ZXN0SWRlbnRp
ZmllcihyZXF1ZXN0SWRlbnRpZmllcikKLSAgICAsIG1fZXJyb3IoZXJyb3IpCiB7CiB9CiAKK0lE
QlJlc3VsdERhdGE6OklEQlJlc3VsdERhdGEoY29uc3QgSURCUmVzdWx0RGF0YSYgb3RoZXIpCisg
ICAgOiBtX3R5cGUob3RoZXIubV90eXBlKQorICAgICwgbV9yZXF1ZXN0SWRlbnRpZmllcihvdGhl
ci5tX3JlcXVlc3RJZGVudGlmaWVyKQorICAgICwgbV9lcnJvcihvdGhlci5tX2Vycm9yKQorICAg
ICwgbV9kYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKG90aGVyLm1fZGF0YWJhc2VDb25uZWN0
aW9uSWRlbnRpZmllcikKK3sKKyAgICBpZiAob3RoZXIubV9kYXRhYmFzZUluZm8pCisgICAgICAg
IG1fZGF0YWJhc2VJbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJEYXRhYmFzZUluZm8+KCpvdGhl
ci5tX2RhdGFiYXNlSW5mbyk7CisgICAgaWYgKG90aGVyLm1fdHJhbnNhY3Rpb25JbmZvKQorICAg
ICAgICBtX3RyYW5zYWN0aW9uSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCVHJhbnNhY3Rpb25J
bmZvPigqb3RoZXIubV90cmFuc2FjdGlvbkluZm8pOworfQorCitJREJSZXN1bHREYXRhIElEQlJl
c3VsdERhdGE6OmVycm9yKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50
aWZpZXIsIGNvbnN0IElEQkVycm9yJiBlcnJvcikKK3sKKyAgICBJREJSZXN1bHREYXRhIHJlc3Vs
dChyZXF1ZXN0SWRlbnRpZmllcik7CisgICAgcmVzdWx0Lm1fdHlwZSA9IElEQlJlc3VsdFR5cGU6
OkVycm9yOworICAgIHJlc3VsdC5tX2Vycm9yID0gZXJyb3I7CisgICAgcmV0dXJuIFdURjo6bW92
ZShyZXN1bHQpOworfQorCitJREJSZXN1bHREYXRhIElEQlJlc3VsdERhdGE6Om9wZW5EYXRhYmFz
ZVN1Y2Nlc3MoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwg
SURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCit7Cisg
ICAgSURCUmVzdWx0RGF0YSByZXN1bHQocmVxdWVzdElkZW50aWZpZXIpOworICAgIHJlc3VsdC5t
X3R5cGUgPSBJREJSZXN1bHRUeXBlOjpPcGVuRGF0YWJhc2VTdWNjZXNzOworICAgIHJlc3VsdC5t
X2RhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIgPSBjb25uZWN0aW9uLmlkZW50aWZpZXIoKTsK
KyAgICByZXN1bHQubV9kYXRhYmFzZUluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPElEQkRhdGFiYXNl
SW5mbz4oY29ubmVjdGlvbi5kYXRhYmFzZSgpLmluZm8oKSk7CisgICAgcmV0dXJuIFdURjo6bW92
ZShyZXN1bHQpOworfQorCisKK0lEQlJlc3VsdERhdGEgSURCUmVzdWx0RGF0YTo6b3BlbkRhdGFi
YXNlVXBncmFkZU5lZWRlZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVu
dGlmaWVyLCBJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mIHRyYW5zYWN0
aW9uKQoreworICAgIElEQlJlc3VsdERhdGEgcmVzdWx0KHJlcXVlc3RJZGVudGlmaWVyKTsKKyAg
ICByZXN1bHQubV90eXBlID0gSURCUmVzdWx0VHlwZTo6T3BlbkRhdGFiYXNlVXBncmFkZU5lZWRl
ZDsKKyAgICByZXN1bHQubV9kYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyID0gdHJhbnNhY3Rp
b24uZGF0YWJhc2VDb25uZWN0aW9uKCkuaWRlbnRpZmllcigpOworICAgIHJlc3VsdC5tX2RhdGFi
YXNlSW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8SURCRGF0YWJhc2VJbmZvPih0cmFuc2FjdGlvbi5k
YXRhYmFzZUNvbm5lY3Rpb24oKS5kYXRhYmFzZSgpLmluZm8oKSk7CisgICAgcmVzdWx0Lm1fdHJh
bnNhY3Rpb25JbmZvID0gc3RkOjptYWtlX3VuaXF1ZTxJREJUcmFuc2FjdGlvbkluZm8+KHRyYW5z
YWN0aW9uLmluZm8oKSk7CisgICAgcmV0dXJuIFdURjo6bW92ZShyZXN1bHQpOworfQorCitjb25z
dCBJREJEYXRhYmFzZUluZm8mIElEQlJlc3VsdERhdGE6OmRhdGFiYXNlSW5mbygpIGNvbnN0Cit7
CisgICAgUkVMRUFTRV9BU1NFUlQobV9kYXRhYmFzZUluZm8pOworICAgIHJldHVybiAqbV9kYXRh
YmFzZUluZm87Cit9CisKK2NvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgSURCUmVzdWx0RGF0YTo6
dHJhbnNhY3Rpb25JbmZvKCkgY29uc3QKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChtX3RyYW5zYWN0
aW9uSW5mbyk7CisgICAgcmV0dXJuICptX3RyYW5zYWN0aW9uSW5mbzsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0
RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3Vs
dERhdGEuaAppbmRleCA4MjU2NzgwLi41ZWQ3MDMyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlJlc3VsdERhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCUmVzdWx0RGF0YS5oCkBAIC0yOCwy
NCArMjgsNTIgQEAKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCisjaW5jbHVkZSAi
SURCRGF0YWJhc2VJbmZvLmgiCiAjaW5jbHVkZSAiSURCRXJyb3IuaCIKICNpbmNsdWRlICJJREJS
ZXNvdXJjZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkluZm8uaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJSZXNvdXJjZUlkZW50aWZpZXI7CiAKK25h
bWVzcGFjZSBJREJTZXJ2ZXIgeworY2xhc3MgVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uOwor
Y2xhc3MgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjsKK30KKworZW51bSBjbGFzcyBJREJS
ZXN1bHRUeXBlIHsKKyAgICBFcnJvciwKKyAgICBPcGVuRGF0YWJhc2VTdWNjZXNzLAorICAgIE9w
ZW5EYXRhYmFzZVVwZ3JhZGVOZWVkZWQsCit9OworCiBjbGFzcyBJREJSZXN1bHREYXRhIHsKIHB1
YmxpYzoKLSAgICBJREJSZXN1bHREYXRhKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYsIGNv
bnN0IElEQkVycm9yJik7CisgICAgc3RhdGljIElEQlJlc3VsdERhdGEgZXJyb3IoY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaWVyJiwgY29uc3QgSURCRXJyb3ImKTsKKyAgICBzdGF0aWMgSURCUmVz
dWx0RGF0YSBvcGVuRGF0YWJhc2VTdWNjZXNzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYs
IElEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJik7CisgICAgc3RhdGljIElE
QlJlc3VsdERhdGEgb3BlbkRhdGFiYXNlVXBncmFkZU5lZWRlZChjb25zdCBJREJSZXNvdXJjZUlk
ZW50aWZpZXImLCBJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24mKTsKKyAg
ICBJREJSZXN1bHREYXRhKGNvbnN0IElEQlJlc3VsdERhdGEmKTsKIAorICAgIElEQlJlc3VsdFR5
cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIElEQlJlc291cmNlSWRlbnRp
ZmllciByZXF1ZXN0SWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdElkZW50aWZp
ZXI7IH0KLSAgICAKKwogICAgIGNvbnN0IElEQkVycm9yJiBlcnJvcigpIGNvbnN0IHsgcmV0dXJu
IG1fZXJyb3I7IH0KLSAgICAKKyAgICB1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlm
aWVyKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyOyB9CisK
KyAgICBjb25zdCBJREJEYXRhYmFzZUluZm8mIGRhdGFiYXNlSW5mbygpIGNvbnN0OworICAgIGNv
bnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgdHJhbnNhY3Rpb25JbmZvKCkgY29uc3Q7CisKIHByaXZh
dGU6CisgICAgSURCUmVzdWx0RGF0YShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImKTsKKwor
ICAgIElEQlJlc3VsdFR5cGUgbV90eXBlOwogICAgIElEQlJlc291cmNlSWRlbnRpZmllciBtX3Jl
cXVlc3RJZGVudGlmaWVyOworCiAgICAgSURCRXJyb3IgbV9lcnJvcjsKKyAgICB1aW50NjRfdCBt
X2RhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIgeyAwIH07CisgICAgc3RkOjp1bmlxdWVfcHRy
PElEQkRhdGFiYXNlSW5mbz4gbV9kYXRhYmFzZUluZm87CisgICAgc3RkOjp1bmlxdWVfcHRyPElE
QlRyYW5zYWN0aW9uSW5mbz4gbV90cmFuc2FjdGlvbkluZm87CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
aGFyZWQvSURCVHJhbnNhY3Rpb25JbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NoYXJlZC9JREJUcmFuc2FjdGlvbkluZm8uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjc1YTQ2ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCVHJhbnNhY3Rpb25JbmZvLmNwcApAQCAtMCww
ICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklE
QlRyYW5zYWN0aW9uSW5mby5oIgorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworSURCVHJhbnNhY3Rpb25JbmZvOjpJREJUcmFuc2FjdGlvbklu
Zm8oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiBpZGVudGlmaWVyKQorICAgIDogbV9pZGVu
dGlmaWVyKGlkZW50aWZpZXIpCit7Cit9CisKK0lEQlRyYW5zYWN0aW9uSW5mbyBJREJUcmFuc2Fj
dGlvbkluZm86OnZlcnNpb25DaGFuZ2UoY29uc3QgSURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9D
bGllbnQmIGNvbm5lY3Rpb24sIHVpbnQ2NF90IG5ld1ZlcnNpb24pCit7CisgICAgSURCVHJhbnNh
Y3Rpb25JbmZvIHJlc3VsdCgoSURCUmVzb3VyY2VJZGVudGlmaWVyKGNvbm5lY3Rpb24pKSk7Cisg
ICAgcmVzdWx0Lm1fbW9kZSA9IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlOjpWZXJzaW9uQ2hh
bmdlOworICAgIHJlc3VsdC5tX25ld1ZlcnNpb24gPSBuZXdWZXJzaW9uOworCisgICAgcmV0dXJu
IFdURjo6bW92ZShyZXN1bHQpOworfQorCitJREJUcmFuc2FjdGlvbkluZm8gSURCVHJhbnNhY3Rp
b25JbmZvOjppc29sYXRlZENvcHkoKSBjb25zdAoreworICAgIElEQlRyYW5zYWN0aW9uSW5mbyBy
ZXN1bHQobV9pZGVudGlmaWVyKTsKKyAgICByZXN1bHQubV9tb2RlID0gbV9tb2RlOworICAgIHJl
c3VsdC5tX25ld1ZlcnNpb24gPSBtX25ld1ZlcnNpb247CisKKyAgICByZXR1cm4gV1RGOjptb3Zl
KHJlc3VsdCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQlRyYW5zYWN0aW9uSW5mby5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhOGQxMDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCVHJhbnNhY3Rpb25JbmZvLmgKQEAg
LTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSURCVHJhbnNhY3Rpb25JbmZvX2gK
KyNkZWZpbmUgSURCVHJhbnNhY3Rpb25JbmZvX2gKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFC
QVNFKQorCisjaW5jbHVkZSAiSURCUmVzb3VyY2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiSW5k
ZXhlZERCLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBJREJTZXJ2ZXIgewor
Y2xhc3MgSURCQ29ubmVjdGlvblRvQ2xpZW50OworfQorCitjbGFzcyBJREJUcmFuc2FjdGlvbklu
Zm8geworcHVibGljOgorICAgIHN0YXRpYyBJREJUcmFuc2FjdGlvbkluZm8gdmVyc2lvbkNoYW5n
ZShjb25zdCBJREJTZXJ2ZXI6OklEQkNvbm5lY3Rpb25Ub0NsaWVudCYsIHVpbnQ2NF90IG5ld1Zl
cnNpb24pOworCisgICAgSURCVHJhbnNhY3Rpb25JbmZvIGlzb2xhdGVkQ29weSgpIGNvbnN0Owor
CisgICAgSURCUmVzb3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBt
X2lkZW50aWZpZXI7IH0KKworICAgIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlIG1vZGUoKSBj
b25zdCB7IHJldHVybiBtX21vZGU7IH0KKyAgICB1aW50NjRfdCBuZXdWZXJzaW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9uZXdWZXJzaW9uOyB9CisKK3ByaXZhdGU6CisgICAgSURCVHJhbnNhY3Rpb25J
bmZvKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYpOworCisgICAgSURCUmVzb3VyY2VJZGVu
dGlmaWVyIG1faWRlbnRpZmllcjsKKworICAgIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlIG1f
bW9kZSB7IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlOjpSZWFkT25seSB9OworICAgIHVpbnQ2
NF90IG1fbmV3VmVyc2lvbiB7IDAgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorI2VuZGlmIC8vIElEQlRyYW5zYWN0
aW9uSW5mb19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
aGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCmluZGV4IDdiMmY4NmQuLjcyOTIy
ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9J
blByb2Nlc3NJREJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCkBAIC0xMDIsNiArMTAyLDE1IEBAIHZv
aWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRPcGVuRGF0YWJhc2UoY29uc3QgSURCUmVzdWx0RGF0
YSYgcmVzdWx0RGF0YSkKICAgICB9KTsKIH0KIAordm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmZp
cmVWZXJzaW9uQ2hhbmdlRXZlbnQoSURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24pCit7CisgICAgUmVmUHRy
PEluUHJvY2Vzc0lEQlNlcnZlcj4gc2VsZih0aGlzKTsKKyAgICB1aW50NjRfdCBkYXRhYmFzZUNv
bm5lY3Rpb25JZGVudGlmaWVyID0gY29ubmVjdGlvbi5pZGVudGlmaWVyKCk7CisgICAgUnVuTG9v
cDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBzZWxmLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVu
dGlmaWVyLCByZXF1ZXN0ZWRWZXJzaW9uXSB7CisgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVy
LT5maXJlVmVyc2lvbkNoYW5nZUV2ZW50KGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHJl
cXVlc3RlZFZlcnNpb24pOworICAgIH0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIu
aAppbmRleCA1ZTFiOWQwLi4wNTM2OWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5oCkBAIC02
MSw2ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHVpbnQ2NF90IGlkZW50aWZpZXIoKSBj
b25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRGVsZXRlRGF0YWJhc2UoY29uc3Qg
SURCUmVzdWx0RGF0YSYpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCBkaWRPcGVu
RGF0YWJhc2UoY29uc3QgSURCUmVzdWx0RGF0YSYpIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1
YWwgdm9pZCBmaXJlVmVyc2lvbkNoYW5nZUV2ZW50KElEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJh
c2VDb25uZWN0aW9uJiwgdWludDY0X3QgcmVxdWVzdGVkVmVyc2lvbikgb3ZlcnJpZGUgZmluYWw7
CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVmKCkgb3ZlcnJpZGUgeyBSZWZDb3VudGVkPEluUHJvY2Vz
c0lEQlNlcnZlcj46OnJlZigpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmKCkgb3ZlcnJpZGUg
eyBSZWZDb3VudGVkPEluUHJvY2Vzc0lEQlNlcnZlcj46OmRlcmVmKCk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhOTgxOTMz
Li5mNTAxNmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0yMDI2LDcgKzIwMjYsNiBAQAogCQk1MTZDNjIyMDE5NTBENDg3MDAz
MzdFNzUgLyogR2FtZXBhZEV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxNkM2MjFEMTk1MEQ0ODcwMDMzN0U3NSAvKiBHYW1lcGFkRXZlbnQu
Y3BwICovOyB9OwogCQk1MTZDNjIyMTE5NTBENDg3MDAzMzdFNzUgLyogR2FtZXBhZEV2ZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTZDNjIxRTE5
NTBENDg3MDAzMzdFNzUgLyogR2FtZXBhZEV2ZW50LmggKi87IH07CiAJCTUxNkM2MjI1MTk1MEUy
QjkwMDMzN0U3NSAvKiBKU0dhbWVwYWRFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTZDNjIyMzE5NTBFMkI5MDAzMzdFNzUgLyogSlNHYW1l
cGFkRXZlbnQuY3BwICovOyB9OwotCQk1MTZEN0Q2RjFCQjVGMEJEMDBBRjdDNzcgLyogSURCQ29u
bmVjdGlvblRvU2VydmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxODVGQ0JDMUJCNUNCNzcwMDEyODk4RiAvKiBJREJDb25uZWN0aW9uVG9TZXJ2
ZXIuY3BwICovOyB9OwogCQk1MTZEN0Q3MDFCQjVGMEJEMDBBRjdDNzcgLyogSURCQ29ubmVjdGlv
blRvU2VydmVyRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxODVGQ0JEMUJCNUNCNzcwMDEyODk4RiAvKiBJREJDb25uZWN0aW9uVG9TZXJ2
ZXJEZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTUxNkQ3RDcxMUJCNUYwQkQwMEFGN0M3NyAvKiBJREJDb25uZWN0aW9uVG9DbGllbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2RDdE
NkQxQkI1RjA2NTAwQUY3Qzc3IC8qIElEQkNvbm5lY3Rpb25Ub0NsaWVudC5jcHAgKi87IH07CiAJ
CTUxNkQ3RDcyMUJCNUYwQkQwMEFGN0M3NyAvKiBJREJDb25uZWN0aW9uVG9DbGllbnREZWxlZ2F0
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2RDdE
NkUxQkI1RjA2NTAwQUY3Qzc3IC8qIElEQkNvbm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTIwNDQsNyAr
MjA0Myw2IEBACiAJCTUxN0E2M0M1MUI3NDMxOEYwMEU3RENEQyAvKiBLZXllZERlY29kZXJDRi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3QTYzQzAx
Qjc0MzE3RTAwRTdEQ0RDIC8qIEtleWVkRGVjb2RlckNGLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE3QTYzQzYxQjc0MzE5MjAwRTdEQ0RDIC8q
IEtleWVkRW5jb2RlckNGLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTdBNjNDMjFCNzQzMTdFMDBFN0RDREMgLyogS2V5ZWRFbmNvZGVyQ0YuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTdGQkExRTE1
MUFCMTdDMDBCNTc5NTkgLyogRE9NV2luZG93RXh0ZW5zaW9uLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0ZCQTE3MTUxQUE3MUIwMEI1Nzk1OSAv
KiBET01XaW5kb3dFeHRlbnNpb24uY3BwICovOyB9OwotCQk1MTg1RkM1QjFCQjRCRTRDMDAxMjg5
OEYgLyogSURCQ29ubmVjdGlvblRvU2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBBNThGRDFCQjA3QTk2MDBDMTkyODIgLyogSURCQ29ubmVj
dGlvblRvU2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNTE4NUZDNzQxQkI0QzRFODAwMTI4OThGIC8qIERPTVdpbmRvd0luZGV4ZWREYXRh
YmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUQ3MTk2QzE4MTEwNkRGMDAxNkRDNTEgLyogRE9NV2luZG93SW5kZXhlZERhdGFiYXNlLmNwcCAq
LzsgfTsKIAkJNTE4NUZDNzUxQkI0QzRFODAwMTI4OThGIC8qIERPTVdpbmRvd0luZGV4ZWREYXRh
YmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFE
NzE5NkQxODExMDZERjAwMTZEQzUxIC8qIERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5oICovOyB9
OwogCQk1MTg1RkM3NzFCQjRDNEU4MDAxMjg5OEYgLyogSURCQW55LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDcxOTZGMTgxMTA2REYwMDE2REM1
MSAvKiBJREJBbnkuY3BwICovOyB9OwpAQCAtMjA1NCw3ICsyMDUyLDcgQEAKIAkJNTE4NUZDN0Qx
QkI0QzRFODAwMTI4OThGIC8qIElEQkN1cnNvcldpdGhWYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTY0NUI0MjFCOUY4ODlCMDBGNzg5Q0Ug
LyogSURCQ3Vyc29yV2l0aFZhbHVlLmNwcCAqLzsgfTsKIAkJNTE4NUZDN0UxQkI0QzRFODAwMTI4
OThGIC8qIElEQkN1cnNvcldpdGhWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTE2NDVCNDMxQjlGODg5QjAwRjc4OUNFIC8qIElEQkN1cnNvcldp
dGhWYWx1ZS5oICovOyB9OwogCQk1MTg1RkM4MDFCQjRDNEU4MDAxMjg5OEYgLyogSURCRGF0YWJh
c2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2
NDVCNDQxQjlGODg5QjAwRjc4OUNFIC8qIElEQkRhdGFiYXNlLmNwcCAqLzsgfTsKLQkJNTE4NUZD
ODExQkI0QzRFODAwMTI4OThGIC8qIElEQkRhdGFiYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTY0NUI0NTFCOUY4ODlCMDBGNzg5Q0UgLyogSURC
RGF0YWJhc2UuaCAqLzsgfTsKKwkJNTE4NUZDODExQkI0QzRFODAwMTI4OThGIC8qIElEQkRhdGFi
YXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTY0
NUI0NTFCOUY4ODlCMDBGNzg5Q0UgLyogSURCRGF0YWJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTg1RkM4MzFCQjRDNEU4MDAxMjg5OEYg
LyogSURCRGF0YWJhc2VFcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFENzE5ODMxODExMDZERjAwMTZEQzUxIC8qIElEQkRhdGFiYXNlRXJyb3Iu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTg1
RkM4NDFCQjRDNEU4MDAxMjg5OEYgLyogSURCRGF0YWJhc2VFeGNlcHRpb24uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFENzE5ODQxODExMDZERjAw
MTZEQzUxIC8qIElEQkRhdGFiYXNlRXhjZXB0aW9uLmNwcCAqLzsgfTsKIAkJNTE4NUZDODUxQkI0
QzRFODAwMTI4OThGIC8qIElEQkRhdGFiYXNlRXhjZXB0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQ3MTk4NTE4MTEwNkRGMDAxNkRDNTEgLyog
SURCRGF0YWJhc2VFeGNlcHRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtMjA4MSw3ICsyMDc5LDcgQEAKIAkJNTE4NUZDOUQxQkI0QzRFODAw
MTI4OThGIC8qIElEQktleVJhbmdlRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTIzQUYxNjE4OTBBNENBMDAzMUNEQzkgLyogSURCS2V5UmFu
Z2VEYXRhLmNwcCAqLzsgfTsKIAkJNTE4NUZDOUUxQkI0QzRFODAwMTI4OThGIC8qIElEQktleVJh
bmdlRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTEyM0FGMTcxODkwQTRDQTAwMzFDREM5IC8qIElEQktleVJhbmdlRGF0YS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxODVGQzlGMUJCNEM0RTgw
MDEyODk4RiAvKiBJREJPYmplY3RTdG9yZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTY0NUI0QTFCOUY4ODlCMDBGNzg5Q0UgLyogSURCT2JqZWN0
U3RvcmUuY3BwICovOyB9OwotCQk1MTg1RkNBMDFCQjRDNEU4MDAxMjg5OEYgLyogSURCT2JqZWN0
U3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
NjQ1QjRCMUI5Rjg4OUIwMEY3ODlDRSAvKiBJREJPYmplY3RTdG9yZS5oICovOyB9OworCQk1MTg1
RkNBMDFCQjRDNEU4MDAxMjg5OEYgLyogSURCT2JqZWN0U3RvcmUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNjQ1QjRCMUI5Rjg4OUIwMEY3ODlDRSAv
KiBJREJPYmplY3RTdG9yZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTUxODVGQ0EyMUJCNEM0RTgwMDEyODk4RiAvKiBJREJPYmplY3RTdG9yZU1l
dGFkYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUFCQjVCNzE4NkQwRUQxMDA4MzkxQTEgLyogSURCT2JqZWN0U3RvcmVNZXRhZGF0YS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxODVGQ0EzMUJC
NEM0RTgwMDEyODk4RiAvKiBJREJPcGVuREJSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNjQ1QjRDMUI5Rjg4OUIwMEY3ODlDRSAvKiBJ
REJPcGVuREJSZXF1ZXN0LmNwcCAqLzsgfTsKIAkJNTE4NUZDQTQxQkI0QzRFODAwMTI4OThGIC8q
IElEQk9wZW5EQlJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxNjQ1QjREMUI5Rjg4OUIwMEY3ODlDRSAvKiBJREJPcGVuREJSZXF1ZXN0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTIxMTMs
NiArMjExMSwyMiBAQAogCQk1MThGNTAwMjE5NENBQzNBMDA4MUJBQUUgLyogSlNHYW1lcGFkLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MThGNEZGRTE5
NENBQzNBMDA4MUJBQUUgLyogSlNHYW1lcGFkLmggKi87IH07CiAJCTUxOEY1MDAzMTk0Q0FDM0Ew
MDgxQkFBRSAvKiBKU0dhbWVwYWRCdXR0b24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4RjRGRkYxOTRDQUMzQTAwODFCQUFFIC8qIEpTR2FtZXBh
ZEJ1dHRvbi5jcHAgKi87IH07CiAJCTUxOEY1MDA0MTk0Q0FDM0EwMDgxQkFBRSAvKiBKU0dhbWVw
YWRCdXR0b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxOEY1MDAwMTk0Q0FDM0EwMDgxQkFBRSAvKiBKU0dhbWVwYWRCdXR0b24uaCAqLzsgfTsKKwkJ
NTE5OEY3QTQxQkJEQjc5MzAwRTJDQzVGIC8qIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTk4RjdB
MjFCQkRBQTI5MDBFMkNDNUYgLyogVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmNwcCAqLzsg
fTsKKwkJNTE5OEY3QTUxQkJEQjc5MzAwRTJDQzVGIC8qIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVj
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE5
OEY3QTMxQkJEQUEyOTAwRTJDQzVGIC8qIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTUxOThGN0E4
MUJCREQzODUwMEUyQ0M1RiAvKiBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxOThGN0E2MUJCREQz
ODEwMEUyQ0M1RiAvKiBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcCAqLzsgfTsKKwkJ
NTE5OEY3QTkxQkJERDM4NTAwRTJDQzVGIC8qIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxOThGN0E3
MUJCREQzODEwMEUyQ0M1RiAvKiBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTE5OEY3QUMxQkJE
RDNFQjAwRTJDQzVGIC8qIElEQlRyYW5zYWN0aW9uSW5mby5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTk4RjdBQTFCQkREM0UzMDBFMkNDNUYgLyog
SURCVHJhbnNhY3Rpb25JbmZvLmNwcCAqLzsgfTsKKwkJNTE5OEY3QUQxQkJERDNFQjAwRTJDQzVG
IC8qIElEQlRyYW5zYWN0aW9uSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE5OEY3QUIxQkJERDNFMzAwRTJDQzVGIC8qIElEQlRyYW5zYWN0aW9u
SW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTUxOThGN0IwMUJCREY1QzgwMEUyQ0M1RiAvKiBJREJEYXRhYmFzZUltcGwuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE5OEY3QUUxQkJERjU5MjAw
RTJDQzVGIC8qIElEQkRhdGFiYXNlSW1wbC5jcHAgKi87IH07CisJCTUxOThGN0IxMUJCREY1Qzgw
MEUyQ0M1RiAvKiBJREJEYXRhYmFzZUltcGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxOThGN0FGMUJCREY1OTIwMEUyQ0M1RiAvKiBJREJEYXRhYmFz
ZUltcGwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk1MTk4RjdCNDFCQkUwMDNDMDBFMkNDNUYgLyogSURCVHJhbnNhY3Rpb25JbXBsLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxOThGN0IyMUJCRTAw
MUQwMEUyQ0M1RiAvKiBJREJUcmFuc2FjdGlvbkltcGwuY3BwICovOyB9OworCQk1MTk4RjdCNTFC
QkUwMDNDMDBFMkNDNUYgLyogSURCVHJhbnNhY3Rpb25JbXBsLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTk4RjdCMzFCQkUwMDFEMDBFMkNDNUYgLyog
SURCVHJhbnNhY3Rpb25JbXBsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJNTE5OEY3QjgxQkMzMTQ1MTAwRTJDQzVGIC8qIElEQlZlcnNpb25DaGFu
Z2VFdmVudEltcGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE5OEY3QjYxQkMzMTQxNzAwRTJDQzVGIC8qIElEQlZlcnNpb25DaGFuZ2VFdmVudElt
cGwuY3BwICovOyB9OworCQk1MTk4RjdCOTFCQzMxNDUxMDBFMkNDNUYgLyogSURCVmVyc2lvbkNo
YW5nZUV2ZW50SW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE5OEY3QjcxQkMzMTQxNzAwRTJDQzVGIC8qIElEQlZlcnNpb25DaGFuZ2VFdmVudElt
cGwuaCAqLzsgfTsKKwkJNTE5OEY3QkUxQkMzMzhBRjAwRTJDQzVGIC8qIElEQkFueUltcGwuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE5OEY3QkMx
QkMzMzhBOTAwRTJDQzVGIC8qIElEQkFueUltcGwuY3BwICovOyB9OworCQk1MTk4RjdCRjFCQzMz
OEFGMDBFMkNDNUYgLyogSURCQW55SW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTE5OEY3QkQxQkMzMzhBOTAwRTJDQzVGIC8qIElEQkFueUltcGwu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1MTk4
RjdDMDFCQzQ4NTY3MDBFMkNDNUYgLyogSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODVGQ0JDMUJCNUNCNzcw
MDEyODk4RiAvKiBJREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwICovOyB9OworCQk1MTk4RjdDMTFC
QzQ4NTY3MDBFMkNDNUYgLyogSURCQ29ubmVjdGlvblRvU2VydmVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBBNThGRDFCQjA3QTk2MDBDMTkyODIg
LyogSURCQ29ubmVjdGlvblRvU2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFBMDUyMzMxMDU4Nzc0RjAwQ0M5RTk1IC8qIENyZWRlbnRp
YWxTdG9yYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MUEwNTIzMTEwNTg3NzRGMDBDQzlFOTUgLyogQ3JlZGVudGlhbFN0b3JhZ2UuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUEwNTIzNDEwNTg3
NzRGMDBDQzlFOTUgLyogQ3JlZGVudGlhbFN0b3JhZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFBMDUyMzIxMDU4Nzc0RjAwQ0M5RTk1IC8qIENy
ZWRlbnRpYWxTdG9yYWdlLmNwcCAqLzsgfTsKIAkJNTFBMDUyNTYxMDU4ODc0MDAwQ0M5RTk1IC8q
IFByb3RlY3Rpb25TcGFjZUhhc2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxQTA1MjU1MTA1ODg3NDAwMENDOUU5NSAvKiBQcm90ZWN0aW9uU3BhY2VI
YXNoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTk0MzYsNiArOTQ1MCwyMCBAQAogCQk1MThGNEZGRTE5NENBQzNBMDA4MUJBQUUgLyogSlNHYW1l
cGFkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2FtZXBhZC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MThGNEZGRjE5NENBQzNBMDA4MUJBQUUgLyogSlNH
YW1lcGFkQnV0dG9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
R2FtZXBhZEJ1dHRvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxOEY1MDAw
MTk0Q0FDM0EwMDgxQkFBRSAvKiBKU0dhbWVwYWRCdXR0b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNHYW1lcGFkQnV0dG9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTUxOThGN0EyMUJCREFBMjkwMEUyQ0M1RiAvKiBVbmlxdWVJREJEYXRhYmFzZUNvbm5l
Y3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVW5pcXVlSURC
RGF0YWJhc2VDb25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE5
OEY3QTMxQkJEQUEyOTAwRTJDQzVGIC8qIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE5OEY3QTYxQkJERDM4MTAwRTJD
QzVGIC8qIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxOThGN0E3MUJCREQzODEwMEUyQ0M1RiAvKiBV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTE5OEY3QUExQkJERDNFMzAwRTJDQzVGIC8qIElEQlRyYW5zYWN0aW9uSW5m
by5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJREJUcmFuc2FjdGlv
bkluZm8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTk4RjdBQjFCQkREM0Uz
MDBFMkNDNUYgLyogSURCVHJhbnNhY3Rpb25JbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IElEQlRyYW5zYWN0aW9uSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1MTk4RjdBRTFCQkRGNTkyMDBFMkNDNUYgLyogSURCRGF0YWJhc2VJbXBsLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQkRhdGFiYXNlSW1wbC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxOThGN0FGMUJCREY1OTIwMEUyQ0M1RiAvKiBJ
REJEYXRhYmFzZUltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCRGF0
YWJhc2VJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxOThGN0IyMUJCRTAw
MUQwMEUyQ0M1RiAvKiBJREJUcmFuc2FjdGlvbkltcGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSURCVHJhbnNhY3Rpb25JbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTE5OEY3QjMxQkJFMDAxRDAwRTJDQzVGIC8qIElEQlRyYW5zYWN0aW9u
SW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJUcmFuc2FjdGlvbklt
cGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE5OEY3QjYxQkMzMTQxNzAwRTJD
QzVGIC8qIElEQlZlcnNpb25DaGFuZ2VFdmVudEltcGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSURCVmVyc2lvbkNoYW5nZUV2ZW50SW1wbC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxOThGN0I3MUJDMzE0MTcwMEUyQ0M1RiAvKiBJREJWZXJz
aW9uQ2hhbmdlRXZlbnRJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElE
QlZlcnNpb25DaGFuZ2VFdmVudEltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NTE5OEY3QkMxQkMzMzhBOTAwRTJDQzVGIC8qIElEQkFueUltcGwuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSURCQW55SW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTUxOThGN0JEMUJDMzM4QTkwMEUyQ0M1RiAvKiBJREJBbnlJbXBsLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQkFueUltcGwuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTE5RkUwQTEwREFENDQ2RTAwQTA4RjIxIC8qIEhUTUxBdHRyaWJ1
dGVOYW1lcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBIVE1MQXR0cmlidXRlTmFtZXMuaW47
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxOUZFMEEyMERBRDQ0NkUwMEEwOEYyMSAv
KiBIVE1MVGFnTmFtZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSFRNTFRhZ05hbWVzLmlu
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUEwNTIzMTEwNTg3NzRGMDBDQzlFOTUg
LyogQ3JlZGVudGlhbFN0b3JhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q3JlZGVudGlhbFN0b3JhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2NjU3
LDE1ICsxNjY4NSwyMyBAQAogCQk1MTAzMTA0MjFCQThDNjRDMDAzMzI5QzAgLyogY2xpZW50ICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1MTk4RjdCQzFC
QzMzOEE5MDBFMkNDNUYgLyogSURCQW55SW1wbC5jcHAgKi8sCisJCQkJNTE5OEY3QkQxQkMzMzhB
OTAwRTJDQzVGIC8qIElEQkFueUltcGwuaCAqLywKIAkJCQk1MTg1RkNCQzFCQjVDQjc3MDAxMjg5
OEYgLyogSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcCAqLywKIAkJCQk1MTBBNThGRDFCQjA3QTk2
MDBDMTkyODIgLyogSURCQ29ubmVjdGlvblRvU2VydmVyLmggKi8sCiAJCQkJNTE4NUZDQkQxQkI1
Q0I3NzAwMTI4OThGIC8qIElEQkNvbm5lY3Rpb25Ub1NlcnZlckRlbGVnYXRlLmggKi8sCisJCQkJ
NTE5OEY3QUUxQkJERjU5MjAwRTJDQzVGIC8qIElEQkRhdGFiYXNlSW1wbC5jcHAgKi8sCisJCQkJ
NTE5OEY3QUYxQkJERjU5MjAwRTJDQzVGIC8qIElEQkRhdGFiYXNlSW1wbC5oICovLAogCQkJCTUx
MDMxMDRBMUJBOEM2QTYwMDMzMjlDMCAvKiBJREJGYWN0b3J5SW1wbC5jcHAgKi8sCiAJCQkJNTEw
MzEwNEIxQkE4QzZBNjAwMzMyOUMwIC8qIElEQkZhY3RvcnlJbXBsLmggKi8sCiAJCQkJNTEwMzEw
NTYxQkE4REIzMDAwMzMyOUMwIC8qIElEQk9wZW5EQlJlcXVlc3RJbXBsLmNwcCAqLywKIAkJCQk1
MTAzMTA1NzFCQThEQjMwMDAzMzI5QzAgLyogSURCT3BlbkRCUmVxdWVzdEltcGwuaCAqLywKIAkJ
CQk1MTAzMTA1ODFCQThEQjMwMDAzMzI5QzAgLyogSURCUmVxdWVzdEltcGwuY3BwICovLAogCQkJ
CTUxMDMxMDU5MUJBOERCMzAwMDMzMjlDMCAvKiBJREJSZXF1ZXN0SW1wbC5oICovLAorCQkJCTUx
OThGN0IyMUJCRTAwMUQwMEUyQ0M1RiAvKiBJREJUcmFuc2FjdGlvbkltcGwuY3BwICovLAorCQkJ
CTUxOThGN0IzMUJCRTAwMUQwMEUyQ0M1RiAvKiBJREJUcmFuc2FjdGlvbkltcGwuaCAqLywKKwkJ
CQk1MTk4RjdCNjFCQzMxNDE3MDBFMkNDNUYgLyogSURCVmVyc2lvbkNoYW5nZUV2ZW50SW1wbC5j
cHAgKi8sCisJCQkJNTE5OEY3QjcxQkMzMTQxNzAwRTJDQzVGIC8qIElEQlZlcnNpb25DaGFuZ2VF
dmVudEltcGwuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gY2xpZW50OwogCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKQEAgLTE2NjgzLDYgKzE2NzE5LDggQEAKIAkJCQk1MTQ1QjEwODFCQzQ4OTBC
MDBFODYyMTkgLyogSURCUmVzb3VyY2VJZGVudGlmaWVyLmggKi8sCiAJCQkJNTFENzIzNkExQkI2
MEJGRTAwNDc4Q0EzIC8qIElEQlJlc3VsdERhdGEuY3BwICovLAogCQkJCTUxRDcyMzZCMUJCNjBC
RkUwMDQ3OENBMyAvKiBJREJSZXN1bHREYXRhLmggKi8sCisJCQkJNTE5OEY3QUExQkJERDNFMzAw
RTJDQzVGIC8qIElEQlRyYW5zYWN0aW9uSW5mby5jcHAgKi8sCisJCQkJNTE5OEY3QUIxQkJERDNF
MzAwRTJDQzVGIC8qIElEQlRyYW5zYWN0aW9uSW5mby5oICovLAogCQkJCTUxMEE1OEUyMUJBQTQw
QUUwMEMxOTI4MiAvKiBJblByb2Nlc3NJREJTZXJ2ZXIuY3BwICovLAogCQkJCTUxMEE1OEUzMUJB
QTQwQUUwMEMxOTI4MiAvKiBJblByb2Nlc3NJREJTZXJ2ZXIuaCAqLywKIAkJCSk7CkBAIC0xNjcw
NCw2ICsxNjc0MiwxMCBAQAogCQkJCTUxQkE0QUM5MUJCQzVCOUUwMERGM0Q2RCAvKiBNZW1vcnlJ
REJCYWNraW5nU3RvcmUuaCAqLywKIAkJCQk1MTg4NjRERTFCQkFGMzBGMDBFNTQwQzkgLyogVW5p
cXVlSURCRGF0YWJhc2UuY3BwICovLAogCQkJCTUxODg2NERGMUJCQUYzMEYwMEU1NDBDOSAvKiBV
bmlxdWVJREJEYXRhYmFzZS5oICovLAorCQkJCTUxOThGN0EyMUJCREFBMjkwMEUyQ0M1RiAvKiBV
bmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uY3BwICovLAorCQkJCTUxOThGN0EzMUJCREFBMjkw
MEUyQ0M1RiAvKiBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaCAqLywKKwkJCQk1MTk4RjdB
NjFCQkREMzgxMDBFMkNDNUYgLyogVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAgKi8s
CisJCQkJNTE5OEY3QTcxQkJERDM4MTAwRTJDQzVGIC8qIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNh
Y3Rpb24uaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gc2VydmVyOwogCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKQEAgLTI1MTc0LDYgKzI1MjE2LDcgQEAKIAkJCQkzQUM2NDhCMjEyOUUxNDY1MDBD
M0VCMjUgLyogRWRpdGluZ0JvdW5kYXJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQk5QkFCNkM2QzEy
NTUwNjMxMDAxNjI2RDQgLyogRWRpdGluZ1N0eWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0QjMw
NDNDRDBBRTAzNzNCMDBBODI2NDcgLyogRWRpdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTk4
RjdCMTFCQkRGNUM4MDBFMkNDNUYgLyogSURCRGF0YWJhc2VJbXBsLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQUYzMjY3OTBENzhCOTQ0MDA2OEYwQzQgLyogRWRpdG9yQ2xpZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0QkFFOTVCMTBCMkZBOUNFMDBBRUQ4QTAgLyogRWRpdG9yRGVsZXRlQWN0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0ZEQUZDQTBCMTEzMDc0MDBFMjc0NkYgLyogRWRpdG9y
SW5zZXJ0QWN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTI2MTM4LDYgKzI2MTgxLDcgQEAKIAkJ
CQlCMkZBM0RFRTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdSZWN0RWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjJGQTNERjEwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUmVuZGVyaW5nSW50
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0RGMzBBQjc1QTZGMDAwRTVBQzQgLyogSlNT
VkdTY3JpcHRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTk4RjdBRDFCQkREM0VCMDBF
MkNDNUYgLyogSURCVHJhbnNhY3Rpb25JbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0RG
NTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdTZXRFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCMkZBM0RGNzBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdTdG9wRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjJGQTNERjkwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHU3RyaW5nTGlzdC5o
IGluIEhlYWRlcnMgKi8sCkBAIC0yNjQwMCw2ICsyNjQ0NCw3IEBACiAJCQkJMDdDNTlCNjkxN0Y3
ODRCQTAwMEZCQ0JCIC8qIE1lZGlhU291cmNlU3RhdGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
NzhFMDkxNTE3RDE0RDFDMDA0MjBBQTEgLyogTWVkaWFTdHJlYW0uaCBpbiBIZWFkZXJzICovLAog
CQkJCTA3OEUwOTRDMTdEMTcwOTYwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRp
b25Ob2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTk4RjdDMTFCQzQ4NTY3MDBFMkNDNUYgLyog
SURCQ29ubmVjdGlvblRvU2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzgzMjI4NTE4MDEz
RUQ4MDA5OTlFMEMgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRkQ2NzFBNzgxNTlCQjA3MDAwMTk3NTU5IC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2Rl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzA1ODUwQjE3RkE0ODI3MDA1RjJCQ0IgLyogTWVkaWFT
dHJlYW1DYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMjY5NDEsNyArMjY5ODYsNiBA
QAogCQkJCTA3OEUwOTJBMTdEMTREMUMwMDQyMEFBMSAvKiBSVENTdGF0c1JlcG9ydC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMDc4RTA5NDUxN0QxNkUxQzAwNDIwQUExIC8qIFJUQ1N0YXRzUmVxdWVz
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc4RTA5MkIxN0QxNEQxQzAwNDIwQUExIC8qIFJUQ1N0
YXRzUmVxdWVzdEltcGwuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxODVGQzVCMUJCNEJFNEMwMDEy
ODk4RiAvKiBJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUw
OTJDMTdEMTREMUMwMDQyMEFBMSAvKiBSVENTdGF0c1Jlc3BvbnNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwNzhFMDk0NjE3RDE2RTFDMDA0MjBBQTEgLyogUlRDU3RhdHNSZXNwb25zZUJhc2UuaCBp
biBIZWFkZXJzICovLAogCQkJCTA3OEUwOTQ3MTdEMTZFMUMwMDQyMEFBMSAvKiBSVENWb2lkUmVx
dWVzdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjk3OSw2ICsyNzAyMyw3IEBACiAJCQkJNDFDNzYw
QjEwRURFMDNEMzAwQzE2NTVGIC8qIFNjcmlwdFN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQky
MjhDMjg0NTEwRDgyNTAwMDA5RDBEMEUgLyogU2NyaXB0V3JhcHBhYmxlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxNDAwRDdBODE3MTM2RUE3MDA3N0NFMDUgLyogU2NyaXB0V3JhcHBhYmxlSW5saW5l
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE5OEY3QjkxQkMzMTQ1MTAwRTJDQzVGIC8qIElEQlZl
cnNpb25DaGFuZ2VFdmVudEltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDOEFFMzRGMTJFQTA5
NkEwMEVCM0FFNiAvKiBTY3JvbGxhYmxlQXJlYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0EzQkY2
N0UxMEQ5OUJBRTAwRTZDRTUzIC8qIFNjcm9sbEFuaW1hdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjE3NzQ4MDEzNzhCNzcyMDA5REE3NkEgLyogU2Nyb2xsQW5pbWF0b3JJT1MuaCBpbiBIZWFk
ZXJzICovLApAQCAtMjcwMzUsNiArMjcwODAsNyBAQAogCQkJCUNEQ0ZBQkJEMThDMEFGNzgwMDZG
ODQ1MCAvKiBTZWxlY3Rpb25TdWJ0cmVlUm9vdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ0QjRC
QjQxNDE2NTBENzAwMkIxRDhCIC8qIFNlbGVjdG9yQ2hlY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDMyRDNGRTgxOEE4NjU4NDAwRDdEQzAzIC8qIFNlbGVjdG9yQ2hlY2tlclRlc3RGdW5jdGlv
bnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxOThGN0JGMUJDMzM4QUYwMEUyQ0M1RiAvKiBJREJB
bnlJbXBsLmggaW4gSGVhZGVycyAqLywKIAkJCQkyNkI5OTk5NzE4MDRENTQyMDBEMDExMjEgLyog
U2VsZWN0b3JDb21waWxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE1MDcxNTgxNjg1MDY3MzAw
QzNDN0IzIC8qIFNlbGVjdG9yRmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MzEwN0JFMjE4
Q0MxOURFMDBDQzE4RTggLyogU2VsZWN0b3JQc2V1ZG9UeXBlTWFwLmggaW4gSGVhZGVycyAqLywK
QEAgLTI3MDU5LDYgKzI3MTA1LDcgQEAKIAkJCQlGRDQ1QTk1MjE3NUQzRjNFMDBDMjFFQzggLyog
U2hhcGVPdXRzaWRlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQxQUYxNTAxNjU2RjE1MTAw
QzZENEY3IC8qIFNoYXBlVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNEE5NTRFMEI0RURD
Q0IwMDJEOEMzQyAvKiBTaGFyZWRCdWZmZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxOThGN0E1
MUJCREI3OTMwMEUyQ0M1RiAvKiBVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTk3QjFGMDJGMTNCMDI1RDIwMEY1MTAzRiAvKiBTaGFyZWRCdWZmZXJDaHVu
a1JlYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlFQTMwOTlFQjc4QzAwNTZFNTgxIC8q
IFNoYXJlZFRpbWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDg5NDRBMzE4MEI1N0Q4MDBGMTY1
RDggLyogU2ltcGxlTGluZUxheW91dC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzQyMSw2ICsyNzQ2
OCw3IEBACiAJCQkJMDgxMDkzREMxMjU1RjBFNzAwRUQ5RDI5IC8qIFNWR1RleHRMYXlvdXRBdHRy
aWJ1dGVzQnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE4NUZDOEIxQkI0QzRFODAwMTI4
OThGIC8qIElEQkV2ZW50RGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDgxNjY4REEx
MjU2MDNENTAwNkYyNURFIC8qIFNWR1RleHRMYXlvdXRFbmdpbmUuaCBpbiBIZWFkZXJzICovLAor
CQkJCTUxOThGN0I1MUJCRTAwM0MwMEUyQ0M1RiAvKiBJREJUcmFuc2FjdGlvbkltcGwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTA4MEU0OTI2MTI1NUYzQkQwMEVGQ0EyNyAvKiBTVkdUZXh0TGF5b3V0
RW5naW5lQmFzZWxpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4MEU0OTI4MTI1NUYzQkQwMEVG
Q0EyNyAvKiBTVkdUZXh0TGF5b3V0RW5naW5lU3BhY2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MDhGMEJGQzYxMjU1QzUzQzAwMDc1MTg1IC8qIFNWR1RleHRNZXRyaWNzLmggaW4gSGVhZGVycyAq
LywKQEAgLTI3ODE3LDYgKzI3ODY1LDcgQEAKIAkJCQkwMEI5MzE4ODEzQkE4REJBMDAzNUE5NDgg
LyogWE1MRG9jdW1lbnRQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTAwQjkzMThDMTNCQThE
Q0MwMDM1QTk0OCAvKiBYTUxEb2N1bWVudFBhcnNlclNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1OUMyODA0NjEzOERDMjQxMDA3OUI3RTIgLyogWE1MRXJyb3JzLmggaW4gSGVhZGVycyAqLywK
KwkJCQk1MTk4RjdBOTFCQkREMzg1MDBFMkNDNUYgLyogVW5pcXVlSURCRGF0YWJhc2VUcmFuc2Fj
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM3NzJDNDcwQzRFQjJDNjAwODMyODVGIC8qIFhN
TEh0dHBSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzYwRDlDOTBEMkEyOUU1MDBCOTkx
OEYgLyogWE1MSHR0cFJlcXVlc3RFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUY5RjBF
RDdBMERCNTBDQTIwMEQxNkRCOSAvKiBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaCBpbiBI
ZWFkZXJzICovLApAQCAtMjg2MTksNiArMjg2NjgsNyBAQAogCQkJCTg1MDMyREU4MEFBOEM5QkUw
MDdEM0I3RCAvKiBET01DU1NTdHlsZVJ1bGUubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NThDMzky
OTBBQThGRjlEMDBCMTg3QTQgLyogRE9NQ1NTU3R5bGVTaGVldC5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUZDRDg4MzJCMTZBNDlGODIwMDk2MjIyNyAvKiBET01DU1NTdXBwb3J0c1J1bGUubW0gaW4g
U291cmNlcyAqLywKKwkJCQk1MTk4RjdBODFCQkREMzg1MDBFMkNDNUYgLyogVW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTAzMkRFQTBBQThDOUJF
MDA3RDNCN0QgLyogRE9NQ1NTVW5rbm93blJ1bGUubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NThD
MzgxRDBBQThFMjk2MDBCMTg3QTQgLyogRE9NQ1NTVmFsdWUubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk4NThDMzgzRDBBQThFRDgyMDBCMTg3QTQgLyogRE9NQ1NTVmFsdWVMaXN0Lm1tIGluIFNvdXJj
ZXMgKi8sCkBAIC0yODk4Myw2ICsyOTAzMyw3IEBACiAJCQkJRkQzMTYwOUExMkIwMjZGNzAwQzFB
MzU5IC8qIEhSVEZEYXRhYmFzZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDMxNjA5
QzEyQjAyNkY3MDBDMUEzNTkgLyogSFJURkVsZXZhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlGRDMxNjA5RTEyQjAyNkY3MDBDMUEzNTkgLyogSFJURktlcm5lbC5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk1MTk4RjdCRTFCQzMzOEFGMDBFMkNDNUYgLyogSURCQW55SW1wbC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlGRDMxNjBBMDEyQjAyNkY3MDBDMUEzNTkgLyogSFJURlBhbm5lci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCQzk3RTIzQjEwOTE0NDk1MDAxMEQzNjEgLyogSFRNTEFsbENv
bGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThDRkY3QTQwQTE1Njk3ODAwMEE0MjM0
IC8qIEhUTUxBbmNob3JFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjkxODgsNiArMjky
MzksNyBAQAogCQkJCUE1ODQwRTFDMTg3Qjc0RDUwMDg0M0IxMCAvKiBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzFCMUUxMjYxNjQwNDkxQTAw
QjE4ODBBIC8qIEluc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUwNEFBQ0NEMTgzNDQ1NTkwMEUzRDlCQyAvKiBJbnNwZWN0b3JOb2RlRmluZGVyLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTUxOThGN0I0MUJCRTAwM0MwMEUyQ0M1RiAvKiBJREJUcmFuc2FjdGlv
bkltcGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M1MjJENEIxNUI0NzdFODAwOUI3Qzk1IC8q
IEluc3BlY3Rvck92ZXJsYXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNEY2RkRENjQxMzQxREVE
RDAwMUY4RUUzIC8qIEluc3BlY3RvclBhZ2VBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5
OUNDMEI2NjE4QkU5RjE1MDA2Q0VCQ0MgLyogSW5zcGVjdG9yUmVwbGF5QWdlbnQuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC0yOTM1Nyw2ICsyOTQwOSw3IEBACiAJCQkJRkQ2Nzc3M0IxOTVDQjFFNjAw
NzJFMEQzIC8qIEpTRE9NV2luZG93Q1NTLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRDlDMjYy
MEMxN0FBNjcwMDVDOTBBMiAvKiBKU0RPTVdpbmRvd0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCQ0JGQjUzQzBEQ0QyOUNGMDAxOUIzRTUgLyogSlNET01XaW5kb3dTaGVsbC5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk1MTk4RjdCODFCQzMxNDUxMDBFMkNDNUYgLyogSURCVmVyc2lvbkNo
YW5nZUV2ZW50SW1wbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDc4NjhCOTEzNkI5OTkyMDBE
NDAzREYgLyogSlNEeW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTY1REYzMUY5MDlEMUNDNjAwMDBCRTMyNSAvKiBKU0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkMyRUQ1NTUwQzZCOUJEMzAwOTIwQkZGIC8qIEpTRWxlbWVudEN1c3RvbS5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTI5Mzk5LDYgKzI5NDUyLDcgQEAKIAkJCQlCQzk3RTQyQzEwOTE1QjA2
MDAxMEQzNjEgLyogSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxQTRBMkRFRjBBMUI4NTJBMDBDODA3RjggLyogSlNIVE1MQW5jaG9yRWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxQTRBMkRGMTBBMUI4NTJBMDBDODA3RjggLyogSlNIVE1MQXBw
bGV0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTk4RjdBQzFCQkREM0VCMDBFMkND
NUYgLyogSURCVHJhbnNhY3Rpb25JbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNEVERUY0
MEMwOEYzRkIwMDdFREQ0OSAvKiBKU0hUTUxBcHBsZXRFbGVtZW50Q3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTFBRTJBQTFFMEExQ0RBQjQwMEI0MkIyNSAvKiBKU0hUTUxBcmVhRWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzlEQkZFRDFBOUM0OUIxMDAwRDZCMjUgLyogSlNI
VE1MQXR0YWNobWVudEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTU1Miw2ICsyOTYw
Niw3IEBACiAJCQkJRTEwNzQwMEQwRTc3QkRDMDAwMzNBRjI0IC8qIEpTTWVzc2FnZUNoYW5uZWwu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFBNUY5OUIwRTdFQUEyNTAwQUY4NUVBIC8qIEpTTWVz
c2FnZUNoYW5uZWxDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzU3OTNFQzgwRDBDRTcy
RDAwN0ZDMEFDIC8qIEpTTWVzc2FnZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxOThG
N0IwMUJCREY1QzgwMEUyQ0M1RiAvKiBJREJEYXRhYmFzZUltcGwuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDEwQjdFNzIxMDQ1RkFCMDAwRDgyMjRGIC8qIEpTTWVzc2FnZUV2ZW50Q3VzdG9tLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUUxQURFRERCMEU3NkJEOTMwMDRBMUE1RSAvKiBKU01lc3Nh
Z2VQb3J0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQURFRDQ3MEU3NkI4REQwMDRBMUE1RSAv
KiBKU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjk4MjYsNyArMjk4
ODEsNiBAQAogCQkJCTA3QjVBMkRCMTQ2NDMyMEEwMEE4MUVDRSAvKiBKU1RleHRUcmFja0xpc3Qu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDdCNUEzMEQxNDY4N0Q3MTAwQTgxRUNFIC8qIEpTVGV4
dFRyYWNrTGlzdEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDQ2MTQxQTBDRDY4MjY5
MDBGQURBNzUgLyogSlNUaW1lUmFuZ2VzLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUxNkQ3RDZG
MUJCNUYwQkQwMEFGN0M3NyAvKiBJREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEZEQTdDMTYxODgzMjJFQjAwQzk1NEI1IC8qIEpTVG91Y2guY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEZEQTdDMTgxODgzMjJFQjAwQzk1NEI1IC8qIEpTVG91Y2hFdmVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRkRBN0MxQTE4ODMyMkVCMDBDOTU0QjUgLyogSlNUb3VjaExp
c3QuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDcwOSw2ICszMDc2Myw3IEBACiAJCQkJQjIyMjc5
OUIwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0NpcmNsZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQjIyMjc5OUUwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0NsaXBQYXRoRWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzlBMTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHQ29sb3Iu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE5OEY3QTQxQkJEQjc5MzAwRTJDQzVGIC8qIFVuaXF1
ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzlBNDBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdCMDUwRDAwQkZGMTAwNzFCNzgyIC8qIFNWR0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0IwNjBE
MDBCRkYxMDA3MUI3ODIgLyogU1ZHQ1NTUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzA4
NDMsNiArMzA4OTgsNyBAQAogCQkJCUIyMjI3QUYyMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdWaWV3
U3BlYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NDg1MjI4QTExOTAxNzNDMDA2RURDN0YgLyog
U1ZHVktlcm5FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QUY1MEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdab29tQW5kUGFuLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxOThGN0Mw
MUJDNDg1NjcwMEUyQ0M1RiAvKiBJREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQjJFNEVDOTcwRDAwQzIyQjAwNDMyNjQzIC8qIFNWR1pvb21FdmVudC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlFMTgwODExMjE2RkNGNDJGMDBCODBEMDcgLyogU3luY2hyb25vdXNM
b2FkZXJDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE4MDgxMTYxNkZDRjlDQjAwQjgw
RDA3IC8qIFN5bmNocm9ub3VzTG9hZGVyQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5jcHAKaW5kZXggODg5Yzg0ZC4u
NmEzMTkzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRD
b3BpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVy
LmNwcApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIklEQkdldFJlc3VsdC5oIgogI2luY2x1
ZGUgIklEQktleURhdGEuaCIKICNpbmNsdWRlICJJREJLZXlSYW5nZURhdGEuaCIKKyNpbmNsdWRl
ICJJREJUcmFuc2FjdGlvbkluZm8uaCIKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC0xMzgsNyArMTM5LDEzIEBAIENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIElE
QkRhdGFiYXNlSWRlbnRpZmllcj46OlR5cGUgQ3Jvc3NUaHJlYWRDb3BpCiB7CiAgICAgcmV0dXJu
IGlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCk7CiB9Ci0jZW5kaWYKKworQ3Jvc3NUaHJlYWRDb3Bp
ZXJCYXNlPGZhbHNlLCBmYWxzZSwgSURCVHJhbnNhY3Rpb25JbmZvPjo6VHlwZSBDcm9zc1RocmVh
ZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBJREJUcmFuc2FjdGlvbkluZm8+Ojpjb3B5KGNvbnN0
IElEQlRyYW5zYWN0aW9uSW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gaW5mby5pc29sYXRlZENv
cHkoKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCiAvLyBUZXN0
IENyb3NzVGhyZWFkQ29waWVyIHVzaW5nIENPTVBJTEVfQVNTRVJULgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaAppbmRleCAxNTZlOGRiLi43YTJmNTE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmgKQEAgLTIwMyw2
ICsyMDMsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgVHlwZSBjb3B5
KGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYpOwogICAgIH07CiAKKyAgICBjbGFzcyBJREJU
cmFuc2FjdGlvbkluZm87CisgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgV0VCQ09SRV9FWFBPUlQgQ3Jv
c3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgSURCVHJhbnNhY3Rpb25JbmZvPiB7Cisg
ICAgICAgIHR5cGVkZWYgSURCVHJhbnNhY3Rpb25JbmZvIFR5cGU7CisgICAgICAgIHN0YXRpYyBU
eXBlIGNvcHkoY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJik7CisgICAgfTsKKwogI2VuZGlmCiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgo=
</data>
<flag name="review"
          id="288078"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>