<?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>233471</bug_id>
          
          <creation_ts>2021-11-24 03:39:39 -0800</creation_ts>
          <short_desc>Preload navigation request if the service worker is not immediately ready to handle the navigation request fetch event</short_desc>
          <delta_ts>2021-11-30 02:49:23 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Service Workers</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>mkwst</cc>
    
    <cc>tomac</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1817611</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-11-24 03:39:39 -0800</bug_when>
    <thetext>Preload navigation request if the service worker is not immediately ready to handle the navigation request fetch event</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817612</commentid>
    <comment_count>1</comment_count>
    <who name="Thomas Steiner">tomac</who>
    <bug_when>2021-11-24 04:20:24 -0800</bug_when>
    <thetext>Is this a duplicate of https://bugs.webkit.org/show_bug.cgi?id=182852?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817619</commentid>
    <comment_count>2</comment_count>
      <attachid>445090</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-11-24 05:16:29 -0800</bug_when>
    <thetext>Created attachment 445090
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817620</commentid>
    <comment_count>3</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-11-24 05:19:03 -0800</bug_when>
    <thetext>(In reply to Thomas Steiner from comment #1)
&gt; Is this a duplicate of https://bugs.webkit.org/show_bug.cgi?id=182852?

Not really, this is restricted to the case where the service worker is not running.
When service worker is running, going to the service worker is usually fast: added delay to the network is a few milliseconds. When service worker is not running, the delay is larger, depending on the size of the service worker script.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817767</commentid>
    <comment_count>4</comment_count>
      <attachid>445130</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-11-25 03:25:10 -0800</bug_when>
    <thetext>Created attachment 445130
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817967</commentid>
    <comment_count>5</comment_count>
      <attachid>445200</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-11-26 06:49:32 -0800</bug_when>
    <thetext>Created attachment 445200
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818435</commentid>
    <comment_count>6</comment_count>
      <attachid>445200</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-11-29 13:17:02 -0800</bug_when>
    <thetext>Comment on attachment 445200
Patch

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

r=me with nits

&gt; Source/WebKit/ChangeLog:10
&gt; +        To optimize this code path, we preload the navigation request in case service worker ins not running or not yet activated.

typo: ins

&gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:82
&gt; +    if (m_preloader) {

This logic comes up so many times, we may want to consider moving it to a cancelPreloadIfNecessary() function.

&gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:345
&gt; +    m_preloader-&gt;waitForResponse([weakThis = WeakPtr { this }, this]() {

WeakPtr { *this } is slightly better as it avoids a null check.

`()` is not needed.

&gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:370
&gt; +    m_preloader-&gt;waitForBody([weakThis = WeakPtr { this }, this](auto&amp;&amp; chunk, int length) {

WeakPtr { *this }

&gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.h:121
&gt; +    bool m_isLoadingFromPreloader { false };

We may want to group the boolean data members together for better padding.

&gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerNavigationPreloader.cpp:77
&gt; +ServiceWorkerNavigationPreloader::~ServiceWorkerNavigationPreloader()

= default;

&gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerNavigationPreloader.cpp:92
&gt; +    didReceiveResponse(ResourceResponse { entry.response() }, [body = RefPtr { entry.buffer() }, weakThis = WeakPtr { this }](auto) mutable {

WeakPtr { *this }

&gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerNavigationPreloader.cpp:132
&gt; +        auto cacheEntry = WTFMove(m_cacheEntry);

Not sure using a local variable improves things here.

&gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerNavigationPreloader.cpp:142
&gt; +        auto callback = std::exchange(m_responseCallback, { });

This could go inside the condition:
```
if (auto callback = std::exchange(m_responseCallback, { }))
    callback();
```

&gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerNavigationPreloader.cpp:174
&gt; +        auto callback = std::exchange(m_responseCallback, { });

This could go inside the if condition.

&gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerNavigationPreloader.h:52
&gt; +    using ResponseCallback = Function&lt;void()&gt;;

Is this a Function instead of a CompletionHandler because it might not get called?
It feels like it could be a CompletionHandler otherwise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818641</commentid>
    <comment_count>7</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-11-30 01:07:17 -0800</bug_when>
    <thetext>Thanks for the review, will update patch accordingly.

&gt; &gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerNavigationPreloader.h:52
&gt; &gt; +    using ResponseCallback = Function&lt;void()&gt;;
&gt; 
&gt; Is this a Function instead of a CompletionHandler because it might not get
&gt; called?
&gt; It feels like it could be a CompletionHandler otherwise.

Yes, if preloaded gets cancelled, it does not seem great to call this callback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818644</commentid>
    <comment_count>8</comment_count>
      <attachid>445394</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-11-30 01:30:44 -0800</bug_when>
    <thetext>Created attachment 445394
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818668</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-30 02:48:11 -0800</bug_when>
    <thetext>Committed r286288 (244647@main): &lt;https://commits.webkit.org/244647@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 445394.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818669</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-30 02:49:23 -0800</bug_when>
    <thetext>&lt;rdar://problem/85857877&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445090</attachid>
            <date>2021-11-24 05:16:29 -0800</date>
            <delta_ts>2021-11-25 03:25:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233471-20211124141627.patch</filename>
            <type>text/plain</type>
            <size>40423</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzY0NDM0NDY5ZTU3MWVh
YzJkMTNjNzc0N2U1Y2VmOTI2NTI3ODUyZS4uNWZhZDQ1MzNhNTliYzM2MzlhZjQ0MzcyMGE2YmNm
NDIxZTdhYjNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTExLTI0ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBQcmVsb2FkIG5hdmlnYXRp
b24gcmVxdWVzdCBpZiB0aGUgc2VydmljZSB3b3JrZXIgaXMgbm90IGltbWVkaWF0ZWx5IHJlYWR5
IHRvIGhhbmRsZSB0aGUgbmF2aWdhdGlvbiByZXF1ZXN0IGZldGNoIGV2ZW50CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NzEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBoZWxwZXIgcm91dGlu
ZS4KKworICAgICAgICAqIGxvYWRlci9GZXRjaE9wdGlvbnMuaDoKKwogMjAyMS0xMS0yMiAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgdG8g
cmV0cmlldmUgd2VicnRjIHNwZWNpZmljIGNvZGVjIGluZm9ybWF0aW9uIGZyb20gTWVkaWFDYXBh
YmlsaXRpZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggOWIyMWY4ZjFmNmVkMDE1YmUwYWJmNTMxOWMyMmQ1YjMzZmQw
ZmFiZC4uNzcwMDViZmU3ZjkwMDMwYjY2M2RjYTk5Y2E0ZDNiZjQ1NmZiN2FiZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyOCBAQAorMjAyMS0xMS0yNCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CisKKyAgICAgICAgUHJlbG9hZCBuYXZpZ2F0aW9uIHJlcXVlc3QgaWYgdGhlIHNlcnZp
Y2Ugd29ya2VyIGlzIG5vdCBpbW1lZGlhdGVseSByZWFkeSB0byBoYW5kbGUgdGhlIG5hdmlnYXRp
b24gcmVxdWVzdCBmZXRjaCBldmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMzNDcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTGF1bmNoaW5nIGEgc2VydmljZSB3b3JrZXIgbWlnaHQgdGFrZSB0aW1l
IGR1ZSB0byBwYXJzaW5nIGFuZCBydW5uaW5nIHRoZSBzZXJ2aWNlIHdvcmtlciBzY3JpcHQuCisg
ICAgICAgIFRoaXMgbWlnaHQgZGVsYXkgbmF2aWdhdGlvbiBsb2FkcywgZXNwZWNpYWxseSBpZiB0
aGUgc2VydmljZSB3b3JrZXIgaXMgcGFzcyB0aHJvdWdoIG9uIHRoZXNlIGxvYWRzLgorICAgICAg
ICBUbyBvcHRpbWl6ZSB0aGlzIGNvZGUgcGF0aCwgd2UgcHJlbG9hZCB0aGUgbmF2aWdhdGlvbiBy
ZXF1ZXN0IGluIGNhc2Ugc2VydmljZSB3b3JrZXIgaW5zIG5vdCBydW5uaW5nIG9yIG5vdCB5ZXQg
YWN0aXZhdGVkLgorICAgICAgICBXZSB0aGVuIHdhaXQgZm9yIHRoZSBzZXJ2aWNlIHdvcmtlciB0
byBoYW5kbGUgdGhlIGZldGNoIGV2ZW50LCB3aGljaCB3aWxsIHRlbGwgdXMgdG8gZWl0aGVyIGdv
IHRvIHRoZSBuZXR3b3JrLCBpbiB3aGljaAorICAgICAgICBjYXNlIHdlIHVzZSB0aGUgcHJlbG9h
ZCwgb3Igd2lsbCBwcm92aWRlIGl0cyBvd24gcmVzcG9uc2UgaW4gd2hpY2ggY2FzZSB3ZSB1c2Ug
aXQgYW5kIGNhbmNlbCB0aGUgcHJlbG9hZC4KKworICAgICAgICBUZXN0OiBodHRwL3dwdC9zZXJ2
aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItcHJlbG9hZC13aGVuLW5vdC1hY3RpdmF0ZWQuaHR0
cHMuaHRtbAorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcDogQWRkZWQu
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2
aWdhdGlvblByZWxvYWRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5oOgorICAgICAgICAqIFNv
dXJjZXMudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
CiAyMDIxLTExLTIyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBMZXQgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5h
Z2VyOjpVbml0IHN3aXRjaCB0byBWUElPIHVuaXQgaWYgVlBJTyBpcyBydW5uaW5nCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRmV0Y2hPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRmV0Y2hPcHRpb25zLmgKaW5kZXggZmM4MjI3NDIwMWI5NDQ0NmVmNzM2ZDQzMTdk
MTZlNGU2NTBiYzNiZi4uMTViOTU3MzkzNjBhMzg2N2U2ODJiZmUwYzczYzE2MjVlZjk3MzNjMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZldGNoT3B0aW9ucy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GZXRjaE9wdGlvbnMuaApAQCAtODEsNiArODEsMTUgQEAgaW5s
aW5lIGJvb2wgaXNQb3RlbnRpYWxOYXZpZ2F0aW9uT3JTdWJyZXNvdXJjZVJlcXVlc3QoRmV0Y2hP
cHRpb25zOjpEZXN0aW5hdGlvbgogICAgICAgICB8fCBkZXN0aW5hdGlvbiA9PSBGZXRjaE9wdGlv
bnM6OkRlc3RpbmF0aW9uOjpFbWJlZDsKIH0KIAorLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3
Zy5vcmcvI25hdmlnYXRpb24tcmVxdWVzdAoraW5saW5lIGJvb2wgaXNOYXZpZ2F0aW9uUmVxdWVz
dChGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uIGRlc3RpbmF0aW9uKQoreworICAgIHJldHVybiBk
ZXN0aW5hdGlvbiA9PSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpEb2N1bWVudAorICAgICAg
ICB8fCBkZXN0aW5hdGlvbiA9PSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpJZnJhbWUKKyAg
ICAgICAgfHwgZGVzdGluYXRpb24gPT0gRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6T2JqZWN0
CisgICAgICAgIHx8IGRlc3RpbmF0aW9uID09IEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OkVt
YmVkOworfQorCiAvLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jbm9uLXN1YnJlc291
cmNlLXJlcXVlc3QKIGlubGluZSBib29sIGlzTm9uU3VicmVzb3VyY2VSZXF1ZXN0KEZldGNoT3B0
aW9uczo6RGVzdGluYXRpb24gZGVzdGluYXRpb24pCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlckZldGNoVGFzay5jcHAKaW5kZXggZTJiZjU4ZDcxMjY0Y2I4N2NmMTIzOTllMjU3ZTg1MDk5
NTZjOTljMS4uODNmYzMwNWRlMzAyNzYyZTJiYjk4YzNhZTc0YzZhYmQzZTkzZjNmOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJGZXRjaFRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcApAQCAtMzMsNiArMzMsNyBAQAog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgogI2luY2x1
ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRlci5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJOYXZp
Z2F0aW9uUHJlbG9hZGVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5o
IgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYlJlc291
cmNlTG9hZGVyTWVzc2FnZXMuaCIKQEAgLTQ5LDcgKzUwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYgc3dTZXJ2ZXJDb25u
ZWN0aW9uLCBOZXR3b3JrUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIs
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25JZGVudGlmaWVyLCBib29sIHNob3VsZFNvZnRVcGRhdGUpCitTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYgc3dT
ZXJ2ZXJDb25uZWN0aW9uLCBOZXR3b3JrUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24sIE5ldHdvcmtTZXNz
aW9uKiBzZXNzaW9uLCBib29sIGlzV29ya2VyUmVhZHkpCiAgICAgOiBtX3N3U2VydmVyQ29ubmVj
dGlvbihzd1NlcnZlckNvbm5lY3Rpb24pCiAgICAgLCBtX2xvYWRlcihsb2FkZXIpCiAgICAgLCBt
X2ZldGNoSWRlbnRpZmllcihXZWJDb3JlOjpGZXRjaElkZW50aWZpZXI6OmdlbmVyYXRlKCkpCkBA
IC01NywxMSArNTgsMTYgQEAgU2VydmljZVdvcmtlckZldGNoVGFzazo6U2VydmljZVdvcmtlckZl
dGNoVGFzayhXZWJTV1NlcnZlckNvbm5lY3Rpb24mIHN3U2VydmVyQ28KICAgICAsIG1fc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIpCiAgICAgLCBtX2N1cnJl
bnRSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCkpCiAgICAgLCBtX3RpbWVvdXRUaW1lcigqdGhpcywg
JlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnRpbWVvdXRUaW1lckZpcmVkKQotICAgICwgbV9zZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcihzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllcikKLSAgICAsIG1fc2hvdWxkU29mdFVwZGF0ZShzaG91bGRTb2Z0VXBkYXRlKQor
ICAgICwgbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcihyZWdpc3RyYXRpb24u
aWRlbnRpZmllcigpKQorICAgICwgbV9zaG91bGRTb2Z0VXBkYXRlKHJlZ2lzdHJhdGlvbi5zaG91
bGRTb2Z0VXBkYXRlKGxvYWRlci5wYXJhbWV0ZXJzKCkub3B0aW9ucykpCiB7CiAgICAgU1dGRVRD
SF9SRUxFQVNFX0xPRygiU2VydmljZVdvcmtlckZldGNoVGFzazogKHNlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyPSUiIFBSSXU2NCAiLCBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
cj0lIiBQUkl1NjQgIiwgc2VydmljZVdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0ICIpIiwgbV9z
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllci50b1VJbnQ2NCgpLCBtX3NlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JZGVudGlmaWVyLnRvVUludDY0KCksIG1fc2VydmljZVdvcmtlcklkZW50aWZpZXIu
dG9VSW50NjQoKSk7CiAgICAgbV90aW1lb3V0VGltZXIuc3RhcnRPbmVTaG90KGxvYWRlci5jb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKCkubmV0d29ya1Byb2Nlc3MoKS5zZXJ2aWNlV29ya2VyRmV0Y2hU
aW1lb3V0KCkpOworCisgICAgLy8gRklYTUU6IENvbnNpZGVyIGV4dGVuZGluZyB0aGlzIGJhc2Vk
IG9uIG5hdmlnYXRpb24gcHJlbG9hZCBtYW5hZ2VyLgorICAgIGJvb2wgc2hvdWxkRG9OYXZpZ2F0
aW9uUHJlbG9hZCA9IGlzTmF2aWdhdGlvblJlcXVlc3QobG9hZGVyLnBhcmFtZXRlcnMoKS5vcHRp
b25zLmRlc3RpbmF0aW9uKSAmJiBsb2FkZXIub3JpZ2luYWxSZXF1ZXN0KCkuaHR0cE1ldGhvZCgp
ID09ICJHRVQiOworICAgIGlmIChzaG91bGREb05hdmlnYXRpb25QcmVsb2FkICYmICFpc1dvcmtl
clJlYWR5KQorICAgICAgICBtX3ByZWxvYWRlciA9IG1ha2VVbmlxdWU8U2VydmljZVdvcmtlck5h
dmlnYXRpb25QcmVsb2FkZXI+KCpzZXNzaW9uLCBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgeyBsb2Fk
ZXIucGFyYW1ldGVycygpIH0pOwogfQogCiBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjp+U2Vydmlj
ZVdvcmtlckZldGNoVGFzaygpCkBAIC02OSw2ICs3NSw5IEBAIFNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s6On5TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKCkKICAgICBTV0ZFVENIX1JFTEVBU0VfTE9HKCJ+
U2VydmljZVdvcmtlckZldGNoVGFzazoiKTsKICAgICBpZiAobV9zZXJ2aWNlV29ya2VyQ29ubmVj
dGlvbikKICAgICAgICAgbV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbi0+dW5yZWdpc3RlckZldGNo
KCp0aGlzKTsKKworICAgIGlmIChtX3ByZWxvYWRlcikKKyAgICAgICAgbV9wcmVsb2FkZXItPmNh
bmNlbCgpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBNZXNzYWdlPiBib29sIFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s6OnNlbmRUb1NlcnZpY2VXb3JrZXIoTWVzc2FnZSYmIG1lc3NhZ2UpCkBAIC0x
MTksMjggKzEyOCw0NSBAQCB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnN0YXJ0RmV0Y2go
KQogICAgIEFTU0VSVF9VTlVTRUQoaXNTZW50LCBpc1NlbnQpOwogfQogCi12b2lkIFNlcnZpY2VX
b3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKFJlc291cmNlUmVzcG9u
c2UmJiByZXNwb25zZSkKK3ZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJl
ZGlyZWN0UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlKQorewor
ICAgIGlmIChtX3ByZWxvYWRlcikKKyAgICAgICAgbV9wcmVsb2FkZXItPmNhbmNlbCgpOworCisg
ICAgcHJvY2Vzc1JlZGlyZWN0UmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSksIFNob3VsZFNldFNv
dXJjZTo6WWVzKTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpwcm9jZXNzUmVk
aXJlY3RSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFNob3VsZFNldFNvdXJj
ZSBzaG91bGRTZXRTb3VyY2UpCiB7CiAgICAgaWYgKG1faXNEb25lKQogICAgICAgICByZXR1cm47
CiAKLSAgICBTV0ZFVENIX1JFTEVBU0VfTE9HKCJkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZToi
KTsKKyAgICBTV0ZFVENIX1JFTEVBU0VfTE9HKCJwcm9jZXNzUmVkaXJlY3RSZXNwb25zZToiKTsK
ICAgICBtX3dhc0hhbmRsZWQgPSB0cnVlOwogICAgIG1fdGltZW91dFRpbWVyLnN0b3AoKTsKICAg
ICBzb2Z0VXBkYXRlSWZOZWVkZWQoKTsKIAotICAgIHJlc3BvbnNlLnNldFNvdXJjZShSZXNvdXJj
ZVJlc3BvbnNlOjpTb3VyY2U6OlNlcnZpY2VXb3JrZXIpOworICAgIGlmIChzaG91bGRTZXRTb3Vy
Y2UgPT0gU2hvdWxkU2V0U291cmNlOjpZZXMpCisgICAgICAgIHJlc3BvbnNlLnNldFNvdXJjZShS
ZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6OlNlcnZpY2VXb3JrZXIpOwogICAgIGF1dG8gbmV3UmVx
dWVzdCA9IG1fY3VycmVudFJlcXVlc3QucmVkaXJlY3RlZFJlcXVlc3QocmVzcG9uc2UsIG1fbG9h
ZGVyLnBhcmFtZXRlcnMoKS5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0
KTsKIAogICAgIHNlbmRUb0NsaWVudChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkZXI6OldpbGxT
ZW5kUmVxdWVzdCB7IG5ld1JlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgeyBuZXdSZXF1
ZXN0Lmh0dHBCb2R5KCkgfSwgcmVzcG9uc2UgfSk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlckZl
dGNoVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwg
Ym9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkKK3ZvaWQgU2Vydmlj
ZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiByZXNwb25zZSwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVz
c2FnZSkKK3sKKyAgICBpZiAobV9wcmVsb2FkZXIpCisgICAgICAgIG1fcHJlbG9hZGVyLT5jYW5j
ZWwoKTsKKworICAgIHByb2Nlc3NSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSwgbmVlZHNDb250
aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UsIFNob3VsZFNldFNvdXJjZTo6WWVzKTsKK30K
Kwordm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpwcm9jZXNzUmVzcG9uc2UoUmVzb3VyY2VS
ZXNwb25zZSYmIHJlc3BvbnNlLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VN
ZXNzYWdlLCBTaG91bGRTZXRTb3VyY2Ugc2hvdWxkU2V0U291cmNlKQogewogICAgIGlmIChtX2lz
RG9uZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU1dGRVRDSF9SRUxFQVNFX0xPRygiZGlkUmVj
ZWl2ZVJlc3BvbnNlOiAoaHR0cFN0YXR1c0NvZGU9JWQsIE1JTUVUeXBlPSUiIFBVQkxJQ19MT0df
U1RSSU5HICIsIGV4cGVjdGVkQ29udGVudExlbmd0aD0lIiBQUklkNjQgIiwgbmVlZHNDb250aW51
ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2U9JWQsIHNvdXJjZT0ldSkiLCByZXNwb25zZS5odHRw
U3RhdHVzQ29kZSgpLCByZXNwb25zZS5taW1lVHlwZSgpLnV0ZjgoKS5kYXRhKCksIHJlc3BvbnNl
LmV4cGVjdGVkQ29udGVudExlbmd0aCgpLCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNl
TWVzc2FnZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlc3BvbnNlLnNvdXJjZSgpKSk7CisgICAg
U1dGRVRDSF9SRUxFQVNFX0xPRygicHJvY2Vzc1Jlc3BvbnNlOiAoaHR0cFN0YXR1c0NvZGU9JWQs
IE1JTUVUeXBlPSUiIFBVQkxJQ19MT0dfU1RSSU5HICIsIGV4cGVjdGVkQ29udGVudExlbmd0aD0l
IiBQUklkNjQgIiwgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2U9JWQsIHNv
dXJjZT0ldSkiLCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpLCByZXNwb25zZS5taW1lVHlwZSgp
LnV0ZjgoKS5kYXRhKCksIHJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpLCBuZWVkc0Nv
bnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJl
c3BvbnNlLnNvdXJjZSgpKSk7CiAgICAgbV93YXNIYW5kbGVkID0gdHJ1ZTsKICAgICBtX3RpbWVv
dXRUaW1lci5zdG9wKCk7CiAgICAgc29mdFVwZGF0ZUlmTmVlZGVkKCk7CkBAIC0xNjUsNyArMTkx
LDggQEAgdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVz
b3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBib28KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIHJlc3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6OlNlcnZpY2VX
b3JrZXIpOworICAgIGlmIChzaG91bGRTZXRTb3VyY2UgPT0gU2hvdWxkU2V0U291cmNlOjpZZXMp
CisgICAgICAgIHJlc3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6OlNl
cnZpY2VXb3JrZXIpOwogICAgIG1fbG9hZGVyLnNlbmREaWRSZWNlaXZlUmVzcG9uc2VQb3RlbnRp
YWxseUluTmV3QnJvd3NpbmdDb250ZXh0R3JvdXAocmVzcG9uc2UsIG5lZWRzQ29udGludWVEaWRS
ZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsKICAgICBpZiAobmVlZHNDb250aW51ZURpZFJlY2VpdmVS
ZXNwb25zZU1lc3NhZ2UpCiAgICAgICAgIG1fbG9hZGVyLnNldFJlc3BvbnNlKFdURk1vdmUocmVz
cG9uc2UpKTsKQEAgLTIwNiw2ICsyMzMsOSBAQCB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6
OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAgICAgICAgIG1fdGltZW91dFRp
bWVyLnN0b3AoKTsKICAgICAgICAgc29mdFVwZGF0ZUlmTmVlZGVkKCk7CiAgICAgfQorICAgIGlm
IChtX3ByZWxvYWRlcikKKyAgICAgICAgbV9wcmVsb2FkZXItPmNhbmNlbCgpOworCiAgICAgU1dG
RVRDSF9SRUxFQVNFX0xPR19FUlJPUigiZGlkRmFpbDogKGVycm9yLmRvbWFpbj0lIiBQVUJMSUNf
TE9HX1NUUklORyAiLCBlcnJvci5jb2RlPSVkKSIsIGVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRh
KCksIGVycm9yLmVycm9yQ29kZSgpKTsKICAgICBtX2xvYWRlci5kaWRGYWlsTG9hZGluZyhlcnJv
cik7CiB9CkBAIC0yMTYsMTAgKzI0NiwxNSBAQCB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6
OmRpZE5vdEhhbmRsZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIFNXRkVUQ0hfUkVMRUFTRV9M
T0coImRpZE5vdEhhbmRsZToiKTsKLSAgICBtX2lzRG9uZSA9IHRydWU7CiAgICAgbV90aW1lb3V0
VGltZXIuc3RvcCgpOwogICAgIHNvZnRVcGRhdGVJZk5lZWRlZCgpOwogCisgICAgaWYgKG1fcHJl
bG9hZGVyKSB7CisgICAgICAgIGxvYWRSZXNwb25zZUZyb21QcmVsb2FkZXIoKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIG1faXNEb25lID0gdHJ1ZTsKICAgICBtX2xvYWRlci5zZXJ2
aWNlV29ya2VyRGlkTm90SGFuZGxlKHRoaXMpOwogfQogCkBAIC0yNDIsNiArMjc3LDEwIEBAIHZv
aWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6Y2FuY2VsRnJvbUNsaWVudCgpCiB2b2lkIFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoKQogewog
ICAgIFNXRkVUQ0hfUkVMRUFTRV9MT0coImNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2U6
Iik7CisgICAgaWYgKG1faXNMb2FkaW5nRnJvbVByZWxvYWRlcikgeworICAgICAgICBsb2FkQm9k
eUZyb21QcmVsb2FkZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBzZW5kVG9TZXJ2
aWNlV29ya2VyKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Q29udGlu
dWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSB7IG1fc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIs
IG1fc2VydmljZVdvcmtlcklkZW50aWZpZXIsIG1fZmV0Y2hJZGVudGlmaWVyIH0pOwogfQogCkBA
IC0yODAsNiArMzE5LDUzIEBAIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6c29mdFVwZGF0
ZUlmTmVlZGVkKCkKICAgICAgICAgcmVnaXN0cmF0aW9uLT5zY2hlZHVsZVNvZnRVcGRhdGUobV9s
b2FkZXIuaXNBcHBJbml0aWF0ZWQoKSA/IFdlYkNvcmU6OklzQXBwSW5pdGlhdGVkOjpZZXMgOiBX
ZWJDb3JlOjpJc0FwcEluaXRpYXRlZDo6Tm8pOwogfQogCit2b2lkIFNlcnZpY2VXb3JrZXJGZXRj
aFRhc2s6OmxvYWRSZXNwb25zZUZyb21QcmVsb2FkZXIoKQoreworICAgIFNXRkVUQ0hfUkVMRUFT
RV9MT0coImxvYWRSZXNwb25zZUZyb21QcmVsb2FkZXIiKTsKKworICAgIEFTU0VSVCghbV9pc0xv
YWRpbmdGcm9tUHJlbG9hZGVyKTsKKyAgICBtX2lzTG9hZGluZ0Zyb21QcmVsb2FkZXIgPSB0cnVl
OworCisgICAgbV9wcmVsb2FkZXItPndhaXRGb3JSZXNwb25zZShbd2Vha1RoaXMgPSBXZWFrUHRy
IHsgdGhpcyB9LCB0aGlzXSgpIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBpZiAoIW1fcHJlbG9hZGVyLT5lcnJvcigpLmlzTnVsbCgpKSB7
CisgICAgICAgICAgICBkaWRGYWlsKG1fcHJlbG9hZGVyLT5lcnJvcigpKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gcmVzcG9uc2UgPSBtX3ByZWxvYWRl
ci0+cmVzcG9uc2UoKTsKKyAgICAgICAgaWYgKHJlc3BvbnNlLmlzUmVkaXJlY3Rpb24oKSAmJiBy
ZXNwb25zZS5odHRwSGVhZGVyRmllbGRzKCkuY29udGFpbnMoSFRUUEhlYWRlck5hbWU6OkxvY2F0
aW9uKSkgeworICAgICAgICAgICAgcHJvY2Vzc1JlZGlyZWN0UmVzcG9uc2UoV1RGTW92ZShyZXNw
b25zZSksIFNob3VsZFNldFNvdXJjZTo6Tm8pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2Fn
ZSA9IHRydWU7CisgICAgICAgIHByb2Nlc3NSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSwgbmVl
ZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UsIFNob3VsZFNldFNvdXJjZTo6Tm8p
OworICAgIH0pOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmxvYWRCb2R5RnJv
bVByZWxvYWRlcigpCit7CisgICAgU1dGRVRDSF9SRUxFQVNFX0xPRygibG9hZEJvZHlGcm9tUHJl
bG9hZGVyIik7CisKKyAgICBBU1NFUlQobV9pc0xvYWRpbmdGcm9tUHJlbG9hZGVyKTsKKyAgICBt
X3ByZWxvYWRlci0+d2FpdEZvckJvZHkoW3dlYWtUaGlzID0gV2Vha1B0ciB7IHRoaXMgfSwgdGhp
c10oYXV0byYmIGNodW5rLCBpbnQgbGVuZ3RoKSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmICghbV9wcmVsb2FkZXItPmVycm9yKCkuaXNO
dWxsKCkpIHsKKyAgICAgICAgICAgIGRpZEZhaWwobV9wcmVsb2FkZXItPmVycm9yKCkpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmICghY2h1bmspIHsKKyAgICAg
ICAgICAgIGRpZEZpbmlzaCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgIGRpZFJlY2VpdmVEYXRhKElQQzo6RGF0YVJlZmVyZW5jZSB7IGNodW5rLT5kYXRhKCksIGNo
dW5rLT5zaXplKCkgfSwgbGVuZ3RoKTsKKyAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CiAKICN1bmRlZiBTV0ZFVENIX1JFTEVBU0VfTE9HCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2suaAppbmRleCAwNDliM2M0MTNhZDdkMjEwMWFlOTk1YzdkOTlhZWU0N2RmYmRl
NGI5Li45MGNkY2FlODU0MDNlNmE2M2Q1MGEwNWNiYTZjN2E5MGEzOWUyZjY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
ckZldGNoVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsK
IGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CitjbGFzcyBTV1NlcnZlclJlZ2lzdHJhdGlvbjsKIH0K
IAogbmFtZXNwYWNlIElQQyB7CkBAIC01MSwxMyArNTIsMTUgQEAgY2xhc3MgRm9ybURhdGFSZWZl
cmVuY2U7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0d29ya1Jlc291cmNlTG9hZGVy
OworY2xhc3MgTmV0d29ya1Nlc3Npb247CitjbGFzcyBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblBy
ZWxvYWRlcjsKIGNsYXNzIFdlYlNXU2VydmVyQ29ubmVjdGlvbjsKIGNsYXNzIFdlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbjsKIAogY2xhc3MgU2VydmljZVdvcmtlckZldGNoVGFzayA6IHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgU2VydmljZVdvcmtlckZldGNoVGFzayhX
ZWJTV1NlcnZlckNvbm5lY3Rpb24mLCBOZXR3b3JrUmVzb3VyY2VMb2FkZXImLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwg
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyLCBib29sIHNob3VsZFNvZnRVcGRhdGUpOworICAgIFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2soV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiwgTmV0d29ya1Jlc291cmNl
TG9hZGVyJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlNXU2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJD
b3JlOjpTV1NlcnZlclJlZ2lzdHJhdGlvbiYsIE5ldHdvcmtTZXNzaW9uKiwgYm9vbCBpc1dvcmtl
clJlYWR5KTsKICAgICB+U2VydmljZVdvcmtlckZldGNoVGFzaygpOwogCiAgICAgdm9pZCBzdGFy
dChXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mKTsKQEAgLTc2LDYgKzc5LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgY29udGV4dENsb3NlZCgpOwogCiBwcml2YXRlOgorICAgIGVudW0gY2xh
c3MgU2hvdWxkU2V0U291cmNlIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICB2b2lkIGRpZFJlY2Vp
dmVSZWRpcmVjdFJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJik7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBib29sIG5l
ZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsKICAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5n
dGgpOwpAQCAtODQsMTAgKzg4LDE1IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2b2lkIGRpZE5vdEhhbmRsZSgpOwogCisg
ICAgdm9pZCBwcm9jZXNzUmVkaXJlY3RSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYsIFNob3VsZFNldFNvdXJjZSk7CisgICAgdm9pZCBwcm9jZXNzUmVzcG9uc2UoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VN
ZXNzYWdlLCBTaG91bGRTZXRTb3VyY2UpOworCiAgICAgdm9pZCBzdGFydEZldGNoKCk7CiAKICAg
ICB2b2lkIHRpbWVvdXRUaW1lckZpcmVkKCk7CiAgICAgdm9pZCBzb2Z0VXBkYXRlSWZOZWVkZWQo
KTsKKyAgICB2b2lkIGxvYWRSZXNwb25zZUZyb21QcmVsb2FkZXIoKTsKKyAgICB2b2lkIGxvYWRC
b2R5RnJvbVByZWxvYWRlcigpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWVzc2FnZT4gYm9v
bCBzZW5kVG9TZXJ2aWNlV29ya2VyKE1lc3NhZ2UmJik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
TWVzc2FnZT4gYm9vbCBzZW5kVG9DbGllbnQoTWVzc2FnZSYmKTsKQEAgLTEwNCw2ICsxMTMsOCBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0RvbmUgeyBmYWxzZSB9OwogICAgIFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIG1fc2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbklkZW50aWZpZXI7CiAgICAgYm9vbCBtX3Nob3VsZFNvZnRVcGRhdGUgeyBmYWxzZSB9Owor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcj4gbV9w
cmVsb2FkZXI7CisgICAgYm9vbCBtX2lzTG9hZGluZ0Zyb21QcmVsb2FkZXIgeyBmYWxzZSB9Owog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblBy
ZWxvYWRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzgxZjk4YjI5NmNiMmExYmY0MmIyMjExYzE2MjcyZTVj
MDFiZjI4YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKQEAgLTAs
MCArMSwxNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaCIKKworI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3b3JrQ2FjaGUu
aCIKKyNpbmNsdWRlICJOZXR3b3JrTG9hZC5oIgorI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgi
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworU2Vy
dmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OlNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJl
bG9hZGVyKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrTG9hZFBhcmFtZXRlcnMmJiBw
YXJhbWV0ZXJzKQorICAgIDogbV9zZXNzaW9uKHNlc3Npb24pCit7CisgICAgaWYgKHNlc3Npb24u
Y2FjaGUoKSkgeworICAgICAgICBzZXNzaW9uLmNhY2hlKCktPnJldHJpZXZlKHBhcmFtZXRlcnMu
cmVxdWVzdCwgTmV0d29ya0NhY2hlOjpHbG9iYWxGcmFtZUlEIHsgfSwgTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW46Ok5vLCBbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcGFy
YW1ldGVycyA9IFdURk1vdmUocGFyYW1ldGVycyldKGF1dG8mJiBlbnRyeSwgYXV0byYmKSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgbV9pc0NhbmNlbGxlZCkKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBpZiAoIW1fc2Vzc2lvbikgeworICAgICAg
ICAgICAgICAgIGRpZEZhaWxMb2FkaW5nKFJlc291cmNlRXJyb3IgeyBSZXNvdXJjZUVycm9yOjpU
eXBlOjpDYW5jZWxsYXRpb24gfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgaWYgKGVudHJ5ICYmICFlbnRyeS0+bmVlZHNWYWxpZGF0aW9uKCkp
IHsKKyAgICAgICAgICAgICAgICBsb2FkV2l0aENhY2hlRW50cnkoKmVudHJ5KTsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHBhcmFtZXRlcnMu
cmVxdWVzdC5zZXRDYWNoZVBvbGljeShSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeTo6UmVmcmVz
aEFueUNhY2hlRGF0YSk7CisgICAgICAgICAgICBpZiAoZW50cnkpIHsKKyAgICAgICAgICAgICAg
ICBtX2NhY2hlRW50cnkgPSBXVEZNb3ZlKGVudHJ5KTsKKworICAgICAgICAgICAgICAgIFN0cmlu
ZyBlVGFnID0gbV9jYWNoZUVudHJ5LT5yZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVh
ZGVyTmFtZTo6RVRhZyk7CisgICAgICAgICAgICAgICAgaWYgKCFlVGFnLmlzRW1wdHkoKSkKKyAg
ICAgICAgICAgICAgICAgICAgcGFyYW1ldGVycy5yZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChI
VFRQSGVhZGVyTmFtZTo6SWZOb25lTWF0Y2gsIGVUYWcpOworCisgICAgICAgICAgICAgICAgU3Ry
aW5nIGxhc3RNb2RpZmllZCA9IG1fY2FjaGVFbnRyeS0+cmVzcG9uc2UoKS5odHRwSGVhZGVyRmll
bGQoSFRUUEhlYWRlck5hbWU6Okxhc3RNb2RpZmllZCk7CisgICAgICAgICAgICAgICAgaWYgKCFs
YXN0TW9kaWZpZWQuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLnJl
cXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpJZk1vZGlmaWVkU2luY2Us
IGxhc3RNb2RpZmllZCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsb2FkRnJvbU5ldHdv
cmsoKm1fc2Vzc2lvbiwgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CisgICAgICAgIH0pOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIGxvYWRGcm9tTmV0d29yayhzZXNzaW9uLCBXVEZNb3ZlKHBh
cmFtZXRlcnMpKTsKK30KKworU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6On5TZXJ2
aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcigpCit7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtl
ck5hdmlnYXRpb25QcmVsb2FkZXI6OmNhbmNlbCgpCit7CisgICAgbV9pc0NhbmNlbGxlZCA9IHRy
dWU7CisgICAgaWYgKG1fcmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgbV9yZXNw
b25zZUNvbXBsZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6SWdub3JlKTsKKyAgICBpZiAobV9u
ZXR3b3JrTG9hZCkKKyAgICAgICAgbV9uZXR3b3JrTG9hZC0+Y2FuY2VsKCk7Cit9CisKK3ZvaWQg
U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmxvYWRXaXRoQ2FjaGVFbnRyeShOZXR3
b3JrQ2FjaGU6OkVudHJ5JiBlbnRyeSkKK3sKKyAgICAvLyBTdG9yZSBlbnRyeS4KKyAgICBkaWRD
b21wbGV0ZSgpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjps
b2FkRnJvbU5ldHdvcmsoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtMb2FkUGFyYW1l
dGVycyYmIHBhcmFtZXRlcnMpCit7CisgICAgbV9uZXR3b3JrTG9hZCA9IG1ha2VVbmlxdWU8TmV0
d29ya0xvYWQ+KCp0aGlzLCBudWxscHRyLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBzZXNzaW9uKTsK
KyAgICBtX25ldHdvcmtMb2FkLT5zdGFydCgpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJOYXZp
Z2F0aW9uUHJlbG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYmLCBSZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlKQorewor
ICAgIGRpZFJlY2VpdmVSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSwgW10oYXV0bykgeyB9KTsK
K30KKwordm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFu
ZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmIChyZXNwb25zZS5odHRwU3RhdHVz
Q29kZSgpID09IDMwNCAmJiBtX2NhY2hlRW50cnkpIHsKKyAgICAgICAgbG9hZFdpdGhDYWNoZUVu
dHJ5KCptX2NhY2hlRW50cnkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rp
b246Oklnbm9yZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3Jlc3BvbnNlID0g
V1RGTW92ZShyZXNwb25zZSk7CisgICAgbV9yZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICBpZiAobV9yZXNwb25zZUNhbGxiYWNrKQor
ICAgICAgICBtX3Jlc3BvbnNlQ2FsbGJhY2soKTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyTmF2
aWdhdGlvblByZWxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit7CisgICAgaWYgKG1fYm9keUNh
bGxiYWNrKQorICAgICAgICBtX2JvZHlDYWxsYmFjayhXVEZNb3ZlKGJ1ZmZlciksIHJlcG9ydGVk
RW5jb2RlZERhdGFMZW5ndGgpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJl
bG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmlj
cyYpCit7CisgICAgZGlkQ29tcGxldGUoKTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdh
dGlvblByZWxvYWRlcjo6ZGlkRmFpbExvYWRpbmcoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3Ip
Cit7CisgICAgbV9lcnJvciA9IGVycm9yOworICAgIGRpZENvbXBsZXRlKCk7Cit9CisKK3ZvaWQg
U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZENvbXBsZXRlKCkKK3sKKyAgICBt
X25ldHdvcmtMb2FkID0gbnVsbHB0cjsKKyAgICBpZiAobV9ib2R5Q2FsbGJhY2spCisgICAgICAg
IG1fYm9keUNhbGxiYWNrKHsgfSwgMCk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRp
b25QcmVsb2FkZXI6OndhaXRGb3JSZXNwb25zZShSZXNwb25zZUNhbGxiYWNrJiYgY2FsbGJhY2sp
Cit7CisgICAgaWYgKCFtX2Vycm9yLmlzTnVsbCgpKSB7CisgICAgICAgIGNhbGxiYWNrKCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1fcmVzcG9uc2VDb21wbGV0aW9uSGFuZGxl
cikgeworICAgICAgICBjYWxsYmFjaygpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
bV9yZXNwb25zZUNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7Cit9CisKK3ZvaWQgU2Vydmlj
ZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OndhaXRGb3JCb2R5KEJvZHlDYWxsYmFjayYmIGNh
bGxiYWNrKQoreworICAgIGlmICghbV9lcnJvci5pc051bGwoKSkgeworICAgICAgICBjYWxsYmFj
ayh7IH0sIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKCFtX3Jlc3Bv
bnNlLmlzTnVsbCgpKTsKKyAgICBBU1NFUlQobV9yZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyKTsK
KyAgICBpZiAobV9yZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICBtX3Jlc3BvbnNl
Q29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpVc2UpOworICAgIG1fYm9keUNhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9h
ZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NGNiYzMyMWE0MDdmMjk5
MjA3MzU1ZWRlMGZkMjgzMDY3NzMzNjk4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJl
bG9hZGVyLmgKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisjaW5jbHVkZSAiTmV0d29ya0NhY2hlRW50cnku
aCIKKyNpbmNsdWRlICJOZXR3b3JrTG9hZENsaWVudC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29u
dGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9D
cm9zc09yaWdpbkVtYmVkZGVyUG9saWN5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GZXRjaE9wdGlv
bnMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJKb2JEYXRhLmg+CisjaW5jbHVk
ZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdDsKK3N0
cnVjdCBTZXJ2aWNlV29ya2VySm9iRGF0YTsKK2NsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7Cit9
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXR3b3JrTG9hZDsKK2NsYXNzIE5ldHdv
cmtMb2FkUGFyYW1ldGVyczsKK2NsYXNzIE5ldHdvcmtTZXNzaW9uOworCitjbGFzcyBTZXJ2aWNl
V29ya2VyTmF2aWdhdGlvblByZWxvYWRlciBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrTG9hZENsaWVu
dCwgcHVibGljIENhbk1ha2VXZWFrUHRyPFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVy
PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgU2VydmljZVdv
cmtlck5hdmlnYXRpb25QcmVsb2FkZXIoTmV0d29ya1Nlc3Npb24mLCBOZXR3b3JrTG9hZFBhcmFt
ZXRlcnMmJik7CisgICAgflNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyKCk7CisKKyAg
ICB2b2lkIGNhbmNlbCgpOworCisgICAgdXNpbmcgUmVzcG9uc2VDYWxsYmFjayA9IENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT47CisgICAgdm9pZCB3YWl0Rm9yUmVzcG9uc2UoUmVzcG9uc2VDYWxs
YmFjayYmKTsKKyAgICB1c2luZyBCb2R5Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKT47
CisgICAgdm9pZCB3YWl0Rm9yQm9keShCb2R5Q2FsbGJhY2smJik7CisKKyAgICBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3I7IH0KKyAg
ICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVzcG9uc2U7IH0KKworcHJpdmF0ZToKKyAgICAvLyBOZXR3b3JrTG9hZENsaWVudC4K
KyAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2ln
bmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIGZpbmFsIHsgfQorICAgIGJvb2wgaXNT
eW5jaHJvbm91cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0Fs
bG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKSBmaW5hbDsKKyAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3Bv
bnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVy
KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVu
Z3RoKSBmaW5hbDsKKyAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0
d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CisKKyAgICB2b2lkIGxvYWRXaXRoQ2FjaGVF
bnRyeShOZXR3b3JrQ2FjaGU6OkVudHJ5Jik7CisgICAgdm9pZCBsb2FkRnJvbU5ldHdvcmsoTmV0
d29ya1Nlc3Npb24mLCBOZXR3b3JrTG9hZFBhcmFtZXRlcnMmJik7CisgICAgdm9pZCBkaWRDb21w
bGV0ZSgpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtMb2FkPiBtX25ldHdvcmtMb2Fk
OworICAgIFdlYWtQdHI8TmV0d29ya1Nlc3Npb24+IG1fc2Vzc2lvbjsKKyAgICBib29sIG1faXND
YW5jZWxsZWQgeyBmYWxzZSB9OworCisgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6
RW50cnk+IG1fY2FjaGVFbnRyeTsKKyAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVz
cG9uc2U7CisgICAgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciBtX3Jlc3BvbnNlQ29tcGxldGlv
bkhhbmRsZXI7CisgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBtX2Vycm9yOworICAgIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fYm9keTsKKworICAgIFJlc3BvbnNlQ2FsbGJhY2sg
bV9yZXNwb25zZUNhbGxiYWNrOworICAgIEJvZHlDYWxsYmFjayBtX2JvZHlDYWxsYmFjazsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IGUzMzUw
OTBhZmE4M2JiOGM5OWZhMmFiZDVhNDI0NzA4ZTU2ZGJhYjUuLjM2OGQzOGY1ZDYzNjM4Y2I5OWQ4
YjcwYmVkMDMxYjJlZGQzZTExZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rp
b24uY3BwCkBAIC0xODQsOSArMTg0LDggQEAgc3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2s+IFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y3JlYXRlRmV0Y2hUYXNrKE4KICAgICB9
CiAKICAgICBhdXRvKiByZWdpc3RyYXRpb24gPSBzZXJ2ZXIoKS5nZXRSZWdpc3RyYXRpb24oKnNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKLSAgICBib29sIHNob3VsZFNvZnRV
cGRhdGUgPSByZWdpc3RyYXRpb24gJiYgcmVnaXN0cmF0aW9uLT5zaG91bGRTb2Z0VXBkYXRlKGxv
YWRlci5wYXJhbWV0ZXJzKCkub3B0aW9ucyk7CiAgICAgaWYgKHdvcmtlci0+c2hvdWxkU2tpcEZl
dGNoRXZlbnQoKSkgewotICAgICAgICBpZiAoc2hvdWxkU29mdFVwZGF0ZSkKKyAgICAgICAgaWYg
KHJlZ2lzdHJhdGlvbiAmJiByZWdpc3RyYXRpb24tPnNob3VsZFNvZnRVcGRhdGUobG9hZGVyLnBh
cmFtZXRlcnMoKS5vcHRpb25zKSkKICAgICAgICAgICAgIHJlZ2lzdHJhdGlvbi0+c2NoZWR1bGVT
b2Z0VXBkYXRlKGxvYWRlci5pc0FwcEluaXRpYXRlZCgpID8gV2ViQ29yZTo6SXNBcHBJbml0aWF0
ZWQ6OlllcyA6IFdlYkNvcmU6OklzQXBwSW5pdGlhdGVkOjpObyk7CiAKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC0xOTcsNyArMTk2LDggQEAgc3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s+IFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y3JlYXRlRmV0Y2hUYXNrKE4KICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0byB0YXNrID0gbWFrZVVuaXF1
ZTxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPigqdGhpcywgbG9hZGVyLCBSZXNvdXJjZVJlcXVlc3Qg
eyByZXF1ZXN0IH0sIGlkZW50aWZpZXIoKSwgd29ya2VyLT5pZGVudGlmaWVyKCksICpzZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgc2hvdWxkU29mdFVwZGF0ZSk7CisgICAgYm9v
bCBpc1dvcmtlclJlYWR5ID0gd29ya2VyLT5pc1J1bm5pbmcoKSAmJiB3b3JrZXItPnN0YXRlKCkg
PT0gU2VydmljZVdvcmtlclN0YXRlOjpBY3RpdmF0ZWQ7CisgICAgYXV0byB0YXNrID0gbWFrZVVu
aXF1ZTxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPigqdGhpcywgbG9hZGVyLCBSZXNvdXJjZVJlcXVl
c3QgeyByZXF1ZXN0IH0sIGlkZW50aWZpZXIoKSwgd29ya2VyLT5pZGVudGlmaWVyKCksICpyZWdp
c3RyYXRpb24sIHNlc3Npb24oKSwgaXNXb3JrZXJSZWFkeSk7CiAgICAgc3RhcnRGZXRjaCgqdGFz
aywgKndvcmtlcik7CiAgICAgcmV0dXJuIHRhc2s7CiB9CkBAIC01MDMsNyArNTAzLDEyIEBAIFBB
TDo6U2Vzc2lvbklEIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c2Vzc2lvbklEKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gc2VydmVyKCkuc2Vzc2lvbklEKCk7CiB9Ci0gICAgCisKK05ldHdvcmtTZXNz
aW9uKiBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnNlc3Npb24oKQoreworICAgIHJldHVybiBtX25l
dHdvcmtQcm9jZXNzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQoKSk7Cit9CisKIHRlbXBsYXRl
PHR5cGVuYW1lIFU+IHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzZW5kVG9Db250ZXh0UHJv
Y2VzcyhXZWJDb3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFUm
JiBtZXNzYWdlKQogewogICAgIHN0YXRpY19jYXN0PFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbiY+KGNvbm5lY3Rpb24pLnNlbmQoV1RGTW92ZShtZXNzYWdlKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLmgKaW5kZXggMjY4NTU1NGY5ZmVjZGQ0NTFlYTZkNzY4ODE0MjQ1
OTk0ODFhN2NhYi4uMjk2NmUwNTY4OGE2YjNmYWQ2NGQ2ODI0NDY5OWJiYzQzMzY3ODc2ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaApAQCAtNzUsNyArNzUsOCBAQCBwdWJs
aWM6CiAgICAgSVBDOjpDb25uZWN0aW9uJiBpcGNDb25uZWN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9jb250ZW50Q29ubmVjdGlvbi5nZXQoKTsgfQogCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKLSAgICAKKworICAgIE5l
dHdvcmtTZXNzaW9uKiBzZXNzaW9uKCk7CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkg
Y29uc3Q7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckZldGNoVGFzaz4gY3Jl
YXRlRmV0Y2hUYXNrKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93
ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5oCmluZGV4IDAxM2IxODVlNmI0NzI2NzUzMzZl
ZmI4MDJhY2ZlZmJhZmIyYThkOWEuLmQzODJiNjVhZjcwOGZlZDk5ZDBjY2Q1YzlkODVkZGRhYTc2
NWNlNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05l
dHdvcmtNRE5TUmVnaXN0ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dl
YnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUg
Ik1ETlNSZWdpc3RlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSVENOZXR3b3JrLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9Qcm9jZXNzUXVhbGlmaWVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5o
PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA2NDFkZjE2NGY5ZTNj
ODVlM2U0Nzg3MTE4YTM1OTNmNjc4NzUxYmE4Li40M2RkNmE3ZDg2M2M1MmY0Yjg4NjJlOGZhYjBm
NDFjNGFkMTFkYmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBi
L1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTEzNiw2ICsxMzYsNyBAQCBOZXR3b3JrUHJv
Y2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1v
bkNsaWVudC5jcHAKIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZh
dGVDbGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5LmNwcAogCiBOZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwIEBuby11bmlmeQorTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAK
IE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2Fk
ZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXT3JpZ2luU3RvcmUuY3Bw
IEBuby11bmlmeQogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5l
Y3Rpb24uY3BwIEBuby11bmlmeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggOGM1NzMwNzIxY2IyMjhlNTAxM2MzNzE1MTBkZmNjYWRkYTU4
NjU4NS4uMTY3OWQwNjRiNjY2NzFhNTg5OWY0MzY1OTRlZGY5MzYzNDU3ZDdhMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zOTk5LDYg
KzM5OTksOCBAQAogCQk0MUUyNDJERjI2RTBDOTA0MDA5QThDNjQgLyogTmV0d29ya1JUQ1V0aWxp
dGllc0NvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmV0d29ya1JUQ1V0aWxpdGllc0Nv
Y29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUU2N0E4QzI1RDJDRkQwMDA3
QjBBNEMgLyogUmVtb3RlUmVhbHRpbWVBdWRpb1NvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1v
dGVSZWFsdGltZUF1ZGlvU291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
RTY3QThEMjVEMkNGRDAwMDdCMEE0QyAvKiBSZW1vdGVSZWFsdGltZUF1ZGlvU291cmNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZVJlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0MUVCNEQzQTI3NENFMDQ1MDBBOTI3MkIgLyogU2Vydmlj
ZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VydmljZVdvcmtl
ck5hdmlnYXRpb25QcmVsb2FkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFF
QjREM0IyNzRDRTA0NTAwQTkyNzJCIC8qIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGMDYwREQxNjU0MzE3NTAwRjMy
ODFDIC8qIFdlYlNvY2tldENoYW5uZWxNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gV2ViU29ja2V0Q2hhbm5lbE1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVk
U291cmNlcy9XZWJLaXQyL1dlYlNvY2tldENoYW5uZWxNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk0MUY5RkQxODIzRUQ4QTgxMDA5OUI1
NzkgLyogTGliV2ViUlRDUmVzb2x2ZXJJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IExpYldlYlJUQ1Jlc29sdmVySWRlbnRpZmllci5oOyBwYXRoID0gTmV0d29y
ay93ZWJydGMvTGliV2ViUlRDUmVzb2x2ZXJJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQxRkFCRDI4MUY0RERGREMwMDZBNkM5NyAvKiBDYWNoZVN0b3JhZ2VFbmdp
bmVDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZVN0b3JhZ2VF
bmdpbmVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTAxNTksNiArMTAx
NjEsOCBAQAogCQkJCTQxNTE4NTM2MjIyNzA0RjYwMDU0MzBDNiAvKiBTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrLmNwcCAqLywKIAkJCQk0MTUxODUzNTIyMjcwNEY1MDA1NDMwQzYgLyogU2VydmljZVdv
cmtlckZldGNoVGFzay5oICovLAogCQkJCTQxNTE4NTM4MjIyNzBGNTMwMDU0MzBDNiAvKiBTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrLm1lc3NhZ2VzLmluICovLAorCQkJCTQxRUI0RDNCMjc0Q0UwNDUw
MEE5MjcyQiAvKiBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAgKi8sCisJCQkJ
NDFFQjREM0EyNzRDRTA0NTAwQTkyNzJCIC8qIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9h
ZGVyLmggKi8sCiAJCQkJNDFENUM2RDkyMzhFQjIwRTAwQjlCM0NCIC8qIFNlcnZpY2VXb3JrZXJT
b2Z0VXBkYXRlTG9hZGVyLmNwcCAqLywKIAkJCQk0MUQ1QzZEODIzOEVCMjBEMDBCOUIzQ0IgLyog
U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuaCAqLywKIAkJCQk5M0JBMDRERjIxNTFBREY0
MDA3RjQ1NUYgLyogV2ViU1dPcmlnaW5TdG9yZS5jcHAgKi8sCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMmFhMDQ0OTc4MTA0
MDdhOTU2OGRhMDc2OTEyNjRmYmNiMDc5ODhiMS4uMDgzMDE1OTU4YzdmM2ZjOGEzNDA2MTdiYzll
Y2FhNzYyNjNjOGIwNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTExLTI0ICBZb3Vlbm4g
RmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBQcmVsb2FkIG5hdmlnYXRpb24g
cmVxdWVzdCBpZiB0aGUgc2VydmljZSB3b3JrZXIgaXMgbm90IGltbWVkaWF0ZWx5IHJlYWR5IHRv
IGhhbmRsZSB0aGUgbmF2aWdhdGlvbiByZXF1ZXN0IGZldGNoIGV2ZW50CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NzEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvd3B0L3NlcnZpY2Utd29y
a2Vycy9zZXJ2aWNlLXdvcmtlci1wcmVsb2FkLXdoZW4tbm90LWFjdGl2YXRlZC1zY3JpcHQucHk6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtl
ci1wcmVsb2FkLXdoZW4tbm90LWFjdGl2YXRlZC13b3JrZXIuanM6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1wcmVsb2FkLXdoZW4tbm90
LWFjdGl2YXRlZC5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0
L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1wcmVsb2FkLXdoZW4tbm90LWFjdGl2YXRl
ZC5odHRwcy5odG1sOiBBZGRlZC4KKwogMjAyMS0xMS0yMSAgQWxhbiBCdWp0YXMgIDx6YWxhbkBh
cHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSW50ZWdyYXRpb25dIEVuYWJsZSBiaWRpIGNvbnRl
bnQgZm9yIG5vbi1pbmxpbmUtYm94IGNhc2VzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItcHJlbG9hZC13aGVuLW5vdC1hY3Rp
dmF0ZWQtc2NyaXB0LnB5IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3Nl
cnZpY2Utd29ya2VyLXByZWxvYWQtd2hlbi1ub3QtYWN0aXZhdGVkLXNjcmlwdC5weQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mYzhjOTQ5M2Y1M2EyYWUwODE1M2E0ZmI0ODNiMDcyNGJhOGZjNTRhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29y
a2VyLXByZWxvYWQtd2hlbi1ub3QtYWN0aXZhdGVkLXNjcmlwdC5weQpAQCAtMCwwICsxLDE4IEBA
CitpbXBvcnQgb3MKK2ltcG9ydCBoYXNobGliCitpbXBvcnQganNvbgorCisKK2RlZiBtYWluKHJl
cXVlc3QsIHJlc3BvbnNlKToKKyAgICB0b2tlbiA9IHJlcXVlc3QuR0VUW2IndG9rZW4nXQorICAg
IHRlc3RJZCA9IGhhc2hsaWIubWQ1KHRva2VuKS5oZXhkaWdlc3QoKQorCisgICAgaWYgcmVxdWVz
dC5tZXRob2QgPT0gIlBPU1QiOgorICAgICAgICByZXF1ZXN0LnNlcnZlci5zdGFzaC50YWtlKHRl
c3RJZCkKKyAgICAgICAgcmVxdWVzdC5zZXJ2ZXIuc3Rhc2gucHV0KHRlc3RJZCwgcmVxdWVzdC5H
RVRbYid2YWx1ZSddKQorICAgICAgICByZXNwb25zZS5oZWFkZXJzLnNldChiIkNvbnRlbnQtVHlw
ZSIsIGIidGV4dC9hc2NpaSIpCisgICAgICAgIHJldHVybiBiInVwZGF0ZWQgdG8gIiArIHJlcXVl
c3QuR0VUW2IndmFsdWUnXQorCisgICAgdmFsdWUgPSByZXF1ZXN0LnNlcnZlci5zdGFzaC50YWtl
KHRlc3RJZCkKKyAgICByZXNwb25zZS5oZWFkZXJzLnNldChiIkNvbnRlbnQtVHlwZSIsIGIidGV4
dC9odG1sIikKKyAgICByZXR1cm4gIjxodG1sPjxib2R5PjxzY3JpcHQ+d2luZG93LnZhbHVlID0g
JyVzJzs8L3NjcmlwdD48L2JvZHk+PC9odG1sPiIgJSB2YWx1ZS5kZWNvZGUoKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXBy
ZWxvYWQtd2hlbi1ub3QtYWN0aXZhdGVkLXdvcmtlci5qcyBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1wcmVsb2FkLXdoZW4tbm90LWFjdGl2YXRl
ZC13b3JrZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmNhYjkzNTBhYzU0Njk1OWQ3MTEzNmJhYjIxMWFmMDYx
MmYwMGJlZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Ut
d29ya2Vycy9zZXJ2aWNlLXdvcmtlci1wcmVsb2FkLXdoZW4tbm90LWFjdGl2YXRlZC13b3JrZXIu
anMKQEAgLTAsMCArMSwyOCBAQAorb25pbnN0YWxsID0gKGV2ZW50KSA9PiB7CisgICAgaWYgKHNl
bGYucG9ydCkKKyAgICAgICAgcmV0dXJuOworICAgIGV2ZW50LndhaXRVbnRpbChuZXcgUHJvbWlz
ZShyZXNvbHZlID0+IHNlbGYuaW5zdGFsbGluZ1Byb21pc2VSZXNvbHZlID0gcmVzb2x2ZSkpOwor
fQorCitvbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHsKKyAgICBpZiAoZXZlbnQuZGF0YS5wb3J0KQor
ICAgICAgICBzZWxmLnBvcnQgPSBldmVudC5kYXRhLnBvcnQ7CisgICAgaWYgKHNlbGYuaW5zdGFs
bGluZ1Byb21pc2VSZXNvbHZlKSB7CisgICAgICAgIHNlbGYuaW5zdGFsbGluZ1Byb21pc2VSZXNv
bHZlKCk7CisgICAgICAgIHNlbGYuaW5zdGFsbGluZ1Byb21pc2VSZXNvbHZlID0gbnVsbDsKKyAg
ICB9CisgICAgaWYgKHNlbGYuYWN0aXZhdGluZ1Byb21pc2VSZXNvbHZlKSB7CisgICAgICAgIHNl
bGYuYWN0aXZhdGluZ1Byb21pc2VSZXNvbHZlKCk7CisgICAgICAgIHNlbGYuYWN0aXZhdGluZ1By
b21pc2VSZXNvbHZlID0gbnVsbDsKKyAgICB9Cit9OworCitvbmFjdGl2YXRlID0gKGV2ZW50KSA9
PiB7CisgICAgZXZlbnQud2FpdFVudGlsKG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2VsZi5hY3Rp
dmF0aW5nUHJvbWlzZVJlc29sdmUgPSByZXNvbHZlKSk7CisgICAgc2VsZi5wb3J0LnBvc3RNZXNz
YWdlKCJhY3RpdmF0aW5nIik7Cit9CisKK3NlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAo
KSA9PiB7CisgICAgaWYgKHNlbGYucG9ydCkKKyAgICAgICAgc2VsZi5wb3J0LnBvc3RNZXNzYWdl
KCJmZXRjaGluZyIpOworfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2
aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItcHJlbG9hZC13aGVuLW5vdC1hY3RpdmF0ZWQuaHR0
cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3Nl
cnZpY2Utd29ya2VyLXByZWxvYWQtd2hlbi1ub3QtYWN0aXZhdGVkLmh0dHBzLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43ZWYyYWRmOWIwMWMyOWEyMGFlZGE0NTJlMDRjYzYwYTFlNzM3ZGE1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3Nl
cnZpY2Utd29ya2VyLXByZWxvYWQtd2hlbi1ub3QtYWN0aXZhdGVkLmh0dHBzLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDUgQEAKKworCitQQVNTIFNldHVwIGFjdGl2YXRpbmcgd29ya2VyCitQQVNT
IFNlcnZpY2Ugd29ya2VyIGxvYWQgdXNlcyBwcmVsb2FkIGlmIGF2YWlsYWJsZSBhbmQgZmV0Y2gg
ZXZlbnQgd2FzIG5vdCBoYW5kbGVkCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0
L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1wcmVsb2FkLXdoZW4tbm90LWFjdGl2YXRl
ZC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZp
Y2Utd29ya2VyLXByZWxvYWQtd2hlbi1ub3QtYWN0aXZhdGVkLmh0dHBzLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZWE0Nzk3YzkwMWM4YmNjNTk3ODdmNjEzNjhiZTUxMTBlNjNhMWY5YgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtl
ci1wcmVsb2FkLXdoZW4tbm90LWFjdGl2YXRlZC5odHRwcy5odG1sCkBAIC0wLDAgKzEsNjkgQEAK
KzwhZG9jdHlwZSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvY29tbW9uL3V0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcm91dGluZXMuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgordmFyIGFjdGl2ZVdvcmtlcjsKK3ZhciB1dWlk
ID0gdG9rZW4oKTsKK3ZhciB1cmwgPSAiL1dlYktpdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13
b3JrZXItcHJlbG9hZC13aGVuLW5vdC1hY3RpdmF0ZWQtc2NyaXB0LnB5P3Rva2VuPSIgKyB1dWlk
OwordmFyIGZyYW1lOworY29uc3QgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpOworCitm
dW5jdGlvbiB3YWl0VW50aWxBY3RpdmF0aW5nKCkKK3sKKyAgICByZXR1cm4gbmV3IFByb21pc2Uo
cmVzb2x2ZSA9PiB7CisgICAgICAgIGNoYW5uZWwucG9ydDIub25tZXNzYWdlID0gKGV2ZW50KSA9
PiB7CisgICAgICAgICAgICBpZiAoZXZlbnQuZGF0YSA9PT0gImFjdGl2YXRpbmciKQorICAgICAg
ICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgfTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24g
dHJpZ2dlckFjdGl2YXRpb24oKQoreworICAgIGFjdGl2ZVdvcmtlci5wb3N0TWVzc2FnZSgiYWN0
aXZhdGUiKTsKK30KKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0VXNlU2VwYXJhdGVTZXJ2
aWNlV29ya2VyUHJvY2Vzcyh0cnVlKTsKKyAgICAgICAgYXdhaXQgZmV0Y2goIiIpLnRoZW4oKCkg
PT4geyB9LCAoKSA9PiB7IH0pOworICAgIH0KKworICAgIGxldCByZWdpc3RyYXRpb24gPSBhd2Fp
dCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcigiL1dlYktpdC9zZXJ2aWNlLXdvcmtl
cnMvc2VydmljZS13b3JrZXItcHJlbG9hZC13aGVuLW5vdC1hY3RpdmF0ZWQtd29ya2VyLmpzIiwg
eyBzY29wZSA6IHVybCB9KTsKKyAgICBpZiAoIXJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nKSB7Cisg
ICAgICAgIHJlZ2lzdHJhdGlvbi51bnJlZ2lzdGVyKCk7CisgICAgICAgIHJlZ2lzdHJhdGlvbiA9
IGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCIvV2ViS2l0L3NlcnZpY2Ut
d29ya2Vycy9zZXJ2aWNlLXdvcmtlci1wcmVsb2FkLXdoZW4tbm90LWFjdGl2YXRlZC13b3JrZXIu
anMiLCB7IHNjb3BlIDogdXJsIH0pOworICAgIH0KKworICAgIGFjdGl2ZVdvcmtlciA9IHJlZ2lz
dHJhdGlvbi5pbnN0YWxsaW5nOworICAgIGFjdGl2ZVdvcmtlci5wb3N0TWVzc2FnZSh7IHBvcnQ6
IGNoYW5uZWwucG9ydDEgfSwgW2NoYW5uZWwucG9ydDFdKTsKKworICAgIHJldHVybiB3YWl0VW50
aWxBY3RpdmF0aW5nKCk7Cit9LCAiU2V0dXAgYWN0aXZhdGluZyB3b3JrZXIiKTsKKworcHJvbWlz
ZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgLy8gU2V0IHZhbHVlIHRvICdiZWZvcmUtbmF2
aWdhdGlvbicKKyAgICBmZXRjaCh1cmwgKyAiJnZhbHVlPWJlZm9yZS1uYXZpZ2F0aW9uIiwgeyBt
ZXRob2Q6ICdQT1NUJyB9KTsKKworICAgIC8vIFN0YXJ0IGxvYWRpbmcgaWZyYW1lLCB3aXRoIGFj
dGl2YXRpbmcgd29ya2VyLCBzbyBvbmx5IHByZWxvYWQgd2lsbCBzdGFydC4KKyAgICBjb25zdCBw
cm9taXNlMiA9IHdpdGhJZnJhbWUodXJsKTsKKworICAgIC8vIFdhaXQgYSBsaXR0bGUgYml0IGFu
ZCBzZXQgdmFsdWUgdG8gJ2FmdGVyLW5hdmlnYXRpb24nLCBsb2FkcyBhZnRlciBuZXh0IGZldGNo
IHdpbGwgaGF2ZSB0aGlzIHZhbHVlLCBidXQgbm90IHRoZSBwcmVsb2FkLgorICAgIGF3YWl0IG5l
dyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCAxMDApKTsKKyAgICBmZXRj
aCh1cmwgKyAiJnZhbHVlPWFmdGVyLW5hdmlnYXRpb24iLCB7IG1ldGhvZDogJ1BPU1QnIH0pOwor
CisgICAgLy8gVHJpZ2dlciBhY3RpdmF0aW9uIHRvIHN0YXJ0IHRoZSBmZXRjaCBldmVudCBoYW5k
bGVyLCB3aGljaCB3aWxsIGRvIG5vdGhpbmcgc28gd2Ugd2lsbCB1c2UgdGhlIHByZWxvYWQuCisg
ICAgdHJpZ2dlckFjdGl2YXRpb24oKTsKKyAgICBmcmFtZSA9IGF3YWl0IHByb21pc2UyOworCisg
ICAgYXNzZXJ0X2VxdWFscyhmcmFtZS5jb250ZW50V2luZG93LnZhbHVlLCAiYmVmb3JlLW5hdmln
YXRpb24iKTsKK30sICJTZXJ2aWNlIHdvcmtlciBsb2FkIHVzZXMgcHJlbG9hZCBpZiBhdmFpbGFi
bGUgYW5kIGZldGNoIGV2ZW50IHdhcyBub3QgaGFuZGxlZCIpOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445130</attachid>
            <date>2021-11-25 03:25:10 -0800</date>
            <delta_ts>2021-11-26 06:49:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233471-20211125122508.patch</filename>
            <type>text/plain</type>
            <size>40855</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzY0NDM0NDY5ZTU3MWVh
YzJkMTNjNzc0N2U1Y2VmOTI2NTI3ODUyZS4uN2RhMzk0OTE5NTQ4NDJhOTE5MzdjNmE4Y2M2MTZh
NTA5NjIwNmFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTExLTI1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBQcmVsb2FkIG5hdmlnYXRp
b24gcmVxdWVzdCBpZiB0aGUgc2VydmljZSB3b3JrZXIgaXMgbm90IGltbWVkaWF0ZWx5IHJlYWR5
IHRvIGhhbmRsZSB0aGUgbmF2aWdhdGlvbiByZXF1ZXN0IGZldGNoIGV2ZW50CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NzEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBoZWxwZXIgcm91dGlu
ZS4KKworICAgICAgICAqIGxvYWRlci9GZXRjaE9wdGlvbnMuaDoKKwogMjAyMS0xMS0yMiAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgdG8g
cmV0cmlldmUgd2VicnRjIHNwZWNpZmljIGNvZGVjIGluZm9ybWF0aW9uIGZyb20gTWVkaWFDYXBh
YmlsaXRpZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggOWIyMWY4ZjFmNmVkMDE1YmUwYWJmNTMxOWMyMmQ1YjMzZmQw
ZmFiZC4uNzgzYzA3ZGU4MzZlOGNlYWQ5ZWQ2YWI5Yzc4YTljZjczMDAxMTVhMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyOCBAQAorMjAyMS0xMS0yNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CisKKyAgICAgICAgUHJlbG9hZCBuYXZpZ2F0aW9uIHJlcXVlc3QgaWYgdGhlIHNlcnZp
Y2Ugd29ya2VyIGlzIG5vdCBpbW1lZGlhdGVseSByZWFkeSB0byBoYW5kbGUgdGhlIG5hdmlnYXRp
b24gcmVxdWVzdCBmZXRjaCBldmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMzNDcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTGF1bmNoaW5nIGEgc2VydmljZSB3b3JrZXIgbWlnaHQgdGFrZSB0aW1l
IGR1ZSB0byBwYXJzaW5nIGFuZCBydW5uaW5nIHRoZSBzZXJ2aWNlIHdvcmtlciBzY3JpcHQuCisg
ICAgICAgIFRoaXMgbWlnaHQgZGVsYXkgbmF2aWdhdGlvbiBsb2FkcywgZXNwZWNpYWxseSBpZiB0
aGUgc2VydmljZSB3b3JrZXIgaXMgcGFzcyB0aHJvdWdoIG9uIHRoZXNlIGxvYWRzLgorICAgICAg
ICBUbyBvcHRpbWl6ZSB0aGlzIGNvZGUgcGF0aCwgd2UgcHJlbG9hZCB0aGUgbmF2aWdhdGlvbiBy
ZXF1ZXN0IGluIGNhc2Ugc2VydmljZSB3b3JrZXIgaW5zIG5vdCBydW5uaW5nIG9yIG5vdCB5ZXQg
YWN0aXZhdGVkLgorICAgICAgICBXZSB0aGVuIHdhaXQgZm9yIHRoZSBzZXJ2aWNlIHdvcmtlciB0
byBoYW5kbGUgdGhlIGZldGNoIGV2ZW50LCB3aGljaCB3aWxsIHRlbGwgdXMgdG8gZWl0aGVyIGdv
IHRvIHRoZSBuZXR3b3JrLCBpbiB3aGljaAorICAgICAgICBjYXNlIHdlIHVzZSB0aGUgcHJlbG9h
ZCwgb3Igd2lsbCBwcm92aWRlIGl0cyBvd24gcmVzcG9uc2UgaW4gd2hpY2ggY2FzZSB3ZSB1c2Ug
aXQgYW5kIGNhbmNlbCB0aGUgcHJlbG9hZC4KKworICAgICAgICBUZXN0OiBodHRwL3dwdC9zZXJ2
aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItcHJlbG9hZC13aGVuLW5vdC1hY3RpdmF0ZWQuaHR0
cHMuaHRtbAorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcDogQWRkZWQu
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2
aWdhdGlvblByZWxvYWRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5oOgorICAgICAgICAqIFNv
dXJjZXMudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
CiAyMDIxLTExLTIyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBMZXQgUmVtb3RlQXVkaW9NZWRpYVN0cmVhbVRyYWNrUmVuZGVyZXJJbnRlcm5hbFVuaXRNYW5h
Z2VyOjpVbml0IHN3aXRjaCB0byBWUElPIHVuaXQgaWYgVlBJTyBpcyBydW5uaW5nCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRmV0Y2hPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRmV0Y2hPcHRpb25zLmgKaW5kZXggZmM4MjI3NDIwMWI5NDQ0NmVmNzM2ZDQzMTdk
MTZlNGU2NTBiYzNiZi4uMTViOTU3MzkzNjBhMzg2N2U2ODJiZmUwYzczYzE2MjVlZjk3MzNjMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZldGNoT3B0aW9ucy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GZXRjaE9wdGlvbnMuaApAQCAtODEsNiArODEsMTUgQEAgaW5s
aW5lIGJvb2wgaXNQb3RlbnRpYWxOYXZpZ2F0aW9uT3JTdWJyZXNvdXJjZVJlcXVlc3QoRmV0Y2hP
cHRpb25zOjpEZXN0aW5hdGlvbgogICAgICAgICB8fCBkZXN0aW5hdGlvbiA9PSBGZXRjaE9wdGlv
bnM6OkRlc3RpbmF0aW9uOjpFbWJlZDsKIH0KIAorLy8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3
Zy5vcmcvI25hdmlnYXRpb24tcmVxdWVzdAoraW5saW5lIGJvb2wgaXNOYXZpZ2F0aW9uUmVxdWVz
dChGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uIGRlc3RpbmF0aW9uKQoreworICAgIHJldHVybiBk
ZXN0aW5hdGlvbiA9PSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpEb2N1bWVudAorICAgICAg
ICB8fCBkZXN0aW5hdGlvbiA9PSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpJZnJhbWUKKyAg
ICAgICAgfHwgZGVzdGluYXRpb24gPT0gRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6T2JqZWN0
CisgICAgICAgIHx8IGRlc3RpbmF0aW9uID09IEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OkVt
YmVkOworfQorCiAvLyBodHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jbm9uLXN1YnJlc291
cmNlLXJlcXVlc3QKIGlubGluZSBib29sIGlzTm9uU3VicmVzb3VyY2VSZXF1ZXN0KEZldGNoT3B0
aW9uczo6RGVzdGluYXRpb24gZGVzdGluYXRpb24pCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdv
cmtlckZldGNoVGFzay5jcHAKaW5kZXggZTJiZjU4ZDcxMjY0Y2I4N2NmMTIzOTllMjU3ZTg1MDk5
NTZjOTljMS4uMGNiZjk4NmY3NDE5MzliMTRlZjI5YmFkYzc5NjFlNWRkMzJmODM3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJGZXRjaFRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcApAQCAtMzMsNiArMzMsNyBAQAog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgogI2luY2x1
ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRlci5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJOYXZp
Z2F0aW9uUHJlbG9hZGVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5o
IgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYlJlc291
cmNlTG9hZGVyTWVzc2FnZXMuaCIKQEAgLTQ5LDcgKzUwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYgc3dTZXJ2ZXJDb25u
ZWN0aW9uLCBOZXR3b3JrUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIs
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25JZGVudGlmaWVyLCBib29sIHNob3VsZFNvZnRVcGRhdGUpCitTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYgc3dT
ZXJ2ZXJDb25uZWN0aW9uLCBOZXR3b3JrUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24sIE5ldHdvcmtTZXNz
aW9uKiBzZXNzaW9uLCBib29sIGlzV29ya2VyUmVhZHkpCiAgICAgOiBtX3N3U2VydmVyQ29ubmVj
dGlvbihzd1NlcnZlckNvbm5lY3Rpb24pCiAgICAgLCBtX2xvYWRlcihsb2FkZXIpCiAgICAgLCBt
X2ZldGNoSWRlbnRpZmllcihXZWJDb3JlOjpGZXRjaElkZW50aWZpZXI6OmdlbmVyYXRlKCkpCkBA
IC01NywxMSArNTgsMTYgQEAgU2VydmljZVdvcmtlckZldGNoVGFzazo6U2VydmljZVdvcmtlckZl
dGNoVGFzayhXZWJTV1NlcnZlckNvbm5lY3Rpb24mIHN3U2VydmVyQ28KICAgICAsIG1fc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIpCiAgICAgLCBtX2N1cnJl
bnRSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCkpCiAgICAgLCBtX3RpbWVvdXRUaW1lcigqdGhpcywg
JlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnRpbWVvdXRUaW1lckZpcmVkKQotICAgICwgbV9zZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcihzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllcikKLSAgICAsIG1fc2hvdWxkU29mdFVwZGF0ZShzaG91bGRTb2Z0VXBkYXRlKQor
ICAgICwgbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcihyZWdpc3RyYXRpb24u
aWRlbnRpZmllcigpKQorICAgICwgbV9zaG91bGRTb2Z0VXBkYXRlKHJlZ2lzdHJhdGlvbi5zaG91
bGRTb2Z0VXBkYXRlKGxvYWRlci5wYXJhbWV0ZXJzKCkub3B0aW9ucykpCiB7CiAgICAgU1dGRVRD
SF9SRUxFQVNFX0xPRygiU2VydmljZVdvcmtlckZldGNoVGFzazogKHNlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyPSUiIFBSSXU2NCAiLCBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
cj0lIiBQUkl1NjQgIiwgc2VydmljZVdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0ICIpIiwgbV9z
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllci50b1VJbnQ2NCgpLCBtX3NlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JZGVudGlmaWVyLnRvVUludDY0KCksIG1fc2VydmljZVdvcmtlcklkZW50aWZpZXIu
dG9VSW50NjQoKSk7CiAgICAgbV90aW1lb3V0VGltZXIuc3RhcnRPbmVTaG90KGxvYWRlci5jb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKCkubmV0d29ya1Byb2Nlc3MoKS5zZXJ2aWNlV29ya2VyRmV0Y2hU
aW1lb3V0KCkpOworCisgICAgLy8gRklYTUU6IENvbnNpZGVyIGV4dGVuZGluZyB0aGlzIGJhc2Vk
IG9uIG5hdmlnYXRpb24gcHJlbG9hZCBtYW5hZ2VyLgorICAgIGJvb2wgc2hvdWxkRG9OYXZpZ2F0
aW9uUHJlbG9hZCA9IGlzTmF2aWdhdGlvblJlcXVlc3QobG9hZGVyLnBhcmFtZXRlcnMoKS5vcHRp
b25zLmRlc3RpbmF0aW9uKSAmJiBsb2FkZXIub3JpZ2luYWxSZXF1ZXN0KCkuaHR0cE1ldGhvZCgp
ID09ICJHRVQiOworICAgIGlmIChzaG91bGREb05hdmlnYXRpb25QcmVsb2FkICYmICFpc1dvcmtl
clJlYWR5KQorICAgICAgICBtX3ByZWxvYWRlciA9IG1ha2VVbmlxdWU8U2VydmljZVdvcmtlck5h
dmlnYXRpb25QcmVsb2FkZXI+KCpzZXNzaW9uLCBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgeyBsb2Fk
ZXIucGFyYW1ldGVycygpIH0pOwogfQogCiBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjp+U2Vydmlj
ZVdvcmtlckZldGNoVGFzaygpCkBAIC02OSw2ICs3NSw5IEBAIFNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s6On5TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKCkKICAgICBTV0ZFVENIX1JFTEVBU0VfTE9HKCJ+
U2VydmljZVdvcmtlckZldGNoVGFzazoiKTsKICAgICBpZiAobV9zZXJ2aWNlV29ya2VyQ29ubmVj
dGlvbikKICAgICAgICAgbV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbi0+dW5yZWdpc3RlckZldGNo
KCp0aGlzKTsKKworICAgIGlmIChtX3ByZWxvYWRlcikKKyAgICAgICAgbV9wcmVsb2FkZXItPmNh
bmNlbCgpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBNZXNzYWdlPiBib29sIFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s6OnNlbmRUb1NlcnZpY2VXb3JrZXIoTWVzc2FnZSYmIG1lc3NhZ2UpCkBAIC0x
MTksMjggKzEyOCw0OSBAQCB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnN0YXJ0RmV0Y2go
KQogICAgIEFTU0VSVF9VTlVTRUQoaXNTZW50LCBpc1NlbnQpOwogfQogCi12b2lkIFNlcnZpY2VX
b3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKFJlc291cmNlUmVzcG9u
c2UmJiByZXNwb25zZSkKK3ZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJl
ZGlyZWN0UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlKQorewor
ICAgIGlmIChtX3ByZWxvYWRlcikgeworICAgICAgICBtX3ByZWxvYWRlci0+Y2FuY2VsKCk7Cisg
ICAgICAgIG1fcHJlbG9hZGVyID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBwcm9jZXNzUmVkaXJl
Y3RSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSwgU2hvdWxkU2V0U291cmNlOjpZZXMpOworfQor
Cit2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnByb2Nlc3NSZWRpcmVjdFJlc3BvbnNlKFJl
c291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgU2hvdWxkU2V0U291cmNlIHNob3VsZFNldFNvdXJj
ZSkKIHsKICAgICBpZiAobV9pc0RvbmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFNXRkVUQ0hf
UkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlOiIpOworICAgIFNXRkVUQ0hf
UkVMRUFTRV9MT0coInByb2Nlc3NSZWRpcmVjdFJlc3BvbnNlOiIpOwogICAgIG1fd2FzSGFuZGxl
ZCA9IHRydWU7CiAgICAgbV90aW1lb3V0VGltZXIuc3RvcCgpOwogICAgIHNvZnRVcGRhdGVJZk5l
ZWRlZCgpOwogCi0gICAgcmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJj
ZTo6U2VydmljZVdvcmtlcik7CisgICAgaWYgKHNob3VsZFNldFNvdXJjZSA9PSBTaG91bGRTZXRT
b3VyY2U6OlllcykKKyAgICAgICAgcmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6
OlNvdXJjZTo6U2VydmljZVdvcmtlcik7CiAgICAgYXV0byBuZXdSZXF1ZXN0ID0gbV9jdXJyZW50
UmVxdWVzdC5yZWRpcmVjdGVkUmVxdWVzdChyZXNwb25zZSwgbV9sb2FkZXIucGFyYW1ldGVycygp
LnNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QpOwogCiAgICAgc2VuZFRv
Q2xpZW50KE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6V2lsbFNlbmRSZXF1ZXN0IHsgbmV3
UmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSB7IG5ld1JlcXVlc3QuaHR0cEJvZHkoKSB9
LCByZXNwb25zZSB9KTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNl
aXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBib29sIG5lZWRzQ29udGlu
dWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQordm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
OjpkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNl
LCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQoreworICAgIGlm
IChtX3ByZWxvYWRlcikgeworICAgICAgICBtX3ByZWxvYWRlci0+Y2FuY2VsKCk7CisgICAgICAg
IG1fcHJlbG9hZGVyID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBwcm9jZXNzUmVzcG9uc2UoV1RG
TW92ZShyZXNwb25zZSksIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlLCBT
aG91bGRTZXRTb3VyY2U6Olllcyk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6
cHJvY2Vzc1Jlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgYm9vbCBuZWVkc0Nv
bnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSwgU2hvdWxkU2V0U291cmNlIHNob3VsZFNl
dFNvdXJjZSkKIHsKICAgICBpZiAobV9pc0RvbmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFNX
RkVUQ0hfUkVMRUFTRV9MT0coImRpZFJlY2VpdmVSZXNwb25zZTogKGh0dHBTdGF0dXNDb2RlPSVk
LCBNSU1FVHlwZT0lIiBQVUJMSUNfTE9HX1NUUklORyAiLCBleHBlY3RlZENvbnRlbnRMZW5ndGg9
JSIgUFJJZDY0ICIsIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlPSVkLCBz
b3VyY2U9JXUpIiwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSwgcmVzcG9uc2UubWltZVR5cGUo
KS51dGY4KCkuZGF0YSgpLCByZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSwgbmVlZHND
b250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihy
ZXNwb25zZS5zb3VyY2UoKSkpOworICAgIFNXRkVUQ0hfUkVMRUFTRV9MT0coInByb2Nlc3NSZXNw
b25zZTogKGh0dHBTdGF0dXNDb2RlPSVkLCBNSU1FVHlwZT0lIiBQVUJMSUNfTE9HX1NUUklORyAi
LCBleHBlY3RlZENvbnRlbnRMZW5ndGg9JSIgUFJJZDY0ICIsIG5lZWRzQ29udGludWVEaWRSZWNl
aXZlUmVzcG9uc2VNZXNzYWdlPSVkLCBzb3VyY2U9JXUpIiwgcmVzcG9uc2UuaHR0cFN0YXR1c0Nv
ZGUoKSwgcmVzcG9uc2UubWltZVR5cGUoKS51dGY4KCkuZGF0YSgpLCByZXNwb25zZS5leHBlY3Rl
ZENvbnRlbnRMZW5ndGgoKSwgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2Us
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZXNwb25zZS5zb3VyY2UoKSkpOwogICAgIG1fd2FzSGFu
ZGxlZCA9IHRydWU7CiAgICAgbV90aW1lb3V0VGltZXIuc3RvcCgpOwogICAgIHNvZnRVcGRhdGVJ
Zk5lZWRlZCgpOwpAQCAtMTY1LDcgKzE5NSw4IEBAIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFz
azo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgYm9vCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICByZXNwb25zZS5zZXRTb3VyY2UoUmVzb3VyY2VS
ZXNwb25zZTo6U291cmNlOjpTZXJ2aWNlV29ya2VyKTsKKyAgICBpZiAoc2hvdWxkU2V0U291cmNl
ID09IFNob3VsZFNldFNvdXJjZTo6WWVzKQorICAgICAgICByZXNwb25zZS5zZXRTb3VyY2UoUmVz
b3VyY2VSZXNwb25zZTo6U291cmNlOjpTZXJ2aWNlV29ya2VyKTsKICAgICBtX2xvYWRlci5zZW5k
RGlkUmVjZWl2ZVJlc3BvbnNlUG90ZW50aWFsbHlJbk5ld0Jyb3dzaW5nQ29udGV4dEdyb3VwKHJl
c3BvbnNlLCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSk7CiAgICAgaWYg
KG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQogICAgICAgICBtX2xvYWRl
ci5zZXRSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSk7CkBAIC0yMDYsNiArMjM3LDkgQEAgdm9p
ZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yKQogICAgICAgICBtX3RpbWVvdXRUaW1lci5zdG9wKCk7CiAgICAgICAgIHNvZnRVcGRhdGVJ
Zk5lZWRlZCgpOwogICAgIH0KKyAgICBpZiAobV9wcmVsb2FkZXIpCisgICAgICAgIG1fcHJlbG9h
ZGVyLT5jYW5jZWwoKTsKKwogICAgIFNXRkVUQ0hfUkVMRUFTRV9MT0dfRVJST1IoImRpZEZhaWw6
IChlcnJvci5kb21haW49JSIgUFVCTElDX0xPR19TVFJJTkcgIiwgZXJyb3IuY29kZT0lZCkiLCBl
cnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpLCBlcnJvci5lcnJvckNvZGUoKSk7CiAgICAgbV9s
b2FkZXIuZGlkRmFpbExvYWRpbmcoZXJyb3IpOwogfQpAQCAtMjE2LDEwICsyNTAsMTUgQEAgdm9p
ZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWROb3RIYW5kbGUoKQogICAgICAgICByZXR1cm47
CiAKICAgICBTV0ZFVENIX1JFTEVBU0VfTE9HKCJkaWROb3RIYW5kbGU6Iik7Ci0gICAgbV9pc0Rv
bmUgPSB0cnVlOwogICAgIG1fdGltZW91dFRpbWVyLnN0b3AoKTsKICAgICBzb2Z0VXBkYXRlSWZO
ZWVkZWQoKTsKIAorICAgIGlmIChtX3ByZWxvYWRlcikgeworICAgICAgICBsb2FkUmVzcG9uc2VG
cm9tUHJlbG9hZGVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2lzRG9uZSA9
IHRydWU7CiAgICAgbV9sb2FkZXIuc2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSh0aGlzKTsKIH0K
IApAQCAtMjQyLDYgKzI4MSwxMCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmNhbmNl
bEZyb21DbGllbnQoKQogdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpjb250aW51ZURpZFJl
Y2VpdmVGZXRjaFJlc3BvbnNlKCkKIHsKICAgICBTV0ZFVENIX1JFTEVBU0VfTE9HKCJjb250aW51
ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlOiIpOworICAgIGlmIChtX2lzTG9hZGluZ0Zyb21QcmVs
b2FkZXIpIHsKKyAgICAgICAgbG9hZEJvZHlGcm9tUHJlbG9hZGVyKCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CiAgICAgc2VuZFRvU2VydmljZVdvcmtlcihNZXNzYWdlczo6V2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb246OkNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UgeyBtX3Nl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBtX2Zl
dGNoSWRlbnRpZmllciB9KTsKIH0KIApAQCAtMjgwLDYgKzMyMyw1MyBAQCB2b2lkIFNlcnZpY2VX
b3JrZXJGZXRjaFRhc2s6OnNvZnRVcGRhdGVJZk5lZWRlZCgpCiAgICAgICAgIHJlZ2lzdHJhdGlv
bi0+c2NoZWR1bGVTb2Z0VXBkYXRlKG1fbG9hZGVyLmlzQXBwSW5pdGlhdGVkKCkgPyBXZWJDb3Jl
OjpJc0FwcEluaXRpYXRlZDo6WWVzIDogV2ViQ29yZTo6SXNBcHBJbml0aWF0ZWQ6Ok5vKTsKIH0K
IAordm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpsb2FkUmVzcG9uc2VGcm9tUHJlbG9hZGVy
KCkKK3sKKyAgICBTV0ZFVENIX1JFTEVBU0VfTE9HKCJsb2FkUmVzcG9uc2VGcm9tUHJlbG9hZGVy
Iik7CisKKyAgICBBU1NFUlQoIW1faXNMb2FkaW5nRnJvbVByZWxvYWRlcik7CisgICAgbV9pc0xv
YWRpbmdGcm9tUHJlbG9hZGVyID0gdHJ1ZTsKKworICAgIG1fcHJlbG9hZGVyLT53YWl0Rm9yUmVz
cG9uc2UoW3dlYWtUaGlzID0gV2Vha1B0ciB7IHRoaXMgfSwgdGhpc10oKSB7CisgICAgICAgIGlm
ICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKCFtX3ByZWxv
YWRlci0+ZXJyb3IoKS5pc051bGwoKSkgeworICAgICAgICAgICAgZGlkRmFpbChtX3ByZWxvYWRl
ci0+ZXJyb3IoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBh
dXRvIHJlc3BvbnNlID0gbV9wcmVsb2FkZXItPnJlc3BvbnNlKCk7CisgICAgICAgIGlmIChyZXNw
b25zZS5pc1JlZGlyZWN0aW9uKCkgJiYgcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygpLmNvbnRh
aW5zKEhUVFBIZWFkZXJOYW1lOjpMb2NhdGlvbikpIHsKKyAgICAgICAgICAgIHByb2Nlc3NSZWRp
cmVjdFJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBTaG91bGRTZXRTb3VyY2U6Ok5vKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgbmVlZHNDb250aW51
ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgPSB0cnVlOworICAgICAgICBwcm9jZXNzUmVzcG9u
c2UoV1RGTW92ZShyZXNwb25zZSksIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNz
YWdlLCBTaG91bGRTZXRTb3VyY2U6Ok5vKTsKKyAgICB9KTsKK30KKwordm9pZCBTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrOjpsb2FkQm9keUZyb21QcmVsb2FkZXIoKQoreworICAgIFNXRkVUQ0hfUkVM
RUFTRV9MT0coImxvYWRCb2R5RnJvbVByZWxvYWRlciIpOworCisgICAgQVNTRVJUKG1faXNMb2Fk
aW5nRnJvbVByZWxvYWRlcik7CisgICAgbV9wcmVsb2FkZXItPndhaXRGb3JCb2R5KFt3ZWFrVGhp
cyA9IFdlYWtQdHIgeyB0aGlzIH0sIHRoaXNdKGF1dG8mJiBjaHVuaywgaW50IGxlbmd0aCkgewor
ICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAo
IW1fcHJlbG9hZGVyLT5lcnJvcigpLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBkaWRGYWlsKG1f
cHJlbG9hZGVyLT5lcnJvcigpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
ICAgICBpZiAoIWNodW5rKSB7CisgICAgICAgICAgICBkaWRGaW5pc2goKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBkaWRSZWNlaXZlRGF0YShJUEM6OkRhdGFSZWZl
cmVuY2UgeyBjaHVuay0+ZGF0YSgpLCBjaHVuay0+c2l6ZSgpIH0sIGxlbmd0aCk7CisgICAgfSk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgU1dGRVRDSF9SRUxFQVNFX0xP
RwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKaW5kZXggMDQ5YjNjNDEzYWQ3
ZDIxMDFhZTk5NWM3ZDk5YWVlNDdkZmJkZTRiOS4uOTBjZGNhZTg1NDAzZTZhNjNkNTBhMDVjYmE2
YzdhOTBhMzllMmY2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCkBA
IC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7
CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOworY2xhc3Mg
U1dTZXJ2ZXJSZWdpc3RyYXRpb247CiB9CiAKIG5hbWVzcGFjZSBJUEMgewpAQCAtNTEsMTMgKzUy
LDE1IEBAIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjsKK2NsYXNzIE5ldHdvcmtTZXNzaW9uOworY2xhc3Mg
U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI7CiBjbGFzcyBXZWJTV1NlcnZlckNvbm5l
Y3Rpb247CiBjbGFzcyBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CiAKIGNsYXNzIFNl
cnZpY2VXb3JrZXJGZXRjaFRhc2sgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U2VydmljZVdvcmtl
ckZldGNoVGFzaz4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IFNlcnZpY2VXb3JrZXJGZXRjaFRhc2soV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiwgTmV0d29ya1Jl
c291cmNlTG9hZGVyJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlNXU2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgYm9vbCBzaG91
bGRTb2Z0VXBkYXRlKTsKKyAgICBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKFdlYlNXU2VydmVyQ29u
bmVjdGlvbiYsIE5ldHdvcmtSZXNvdXJjZUxvYWRlciYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6U1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBOZXR3
b3JrU2Vzc2lvbiosIGJvb2wgaXNXb3JrZXJSZWFkeSk7CiAgICAgflNlcnZpY2VXb3JrZXJGZXRj
aFRhc2soKTsKIAogICAgIHZvaWQgc3RhcnQoV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Jik7CkBAIC03Niw2ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbnRleHRDbG9zZWQoKTsK
IAogcHJpdmF0ZToKKyAgICBlbnVtIGNsYXNzIFNob3VsZFNldFNvdXJjZSA6IGJvb2wgeyBObywg
WWVzIH07CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZShXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJiwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVz
c2FnZSk7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
LCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKTsKQEAgLTg0LDEwICs4OCwxNSBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAg
dm9pZCBkaWROb3RIYW5kbGUoKTsKIAorICAgIHZvaWQgcHJvY2Vzc1JlZGlyZWN0UmVzcG9uc2Uo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBTaG91bGRTZXRTb3VyY2UpOworICAgIHZvaWQg
cHJvY2Vzc1Jlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgYm9vbCBuZWVkc0Nv
bnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSwgU2hvdWxkU2V0U291cmNlKTsKKwogICAg
IHZvaWQgc3RhcnRGZXRjaCgpOwogCiAgICAgdm9pZCB0aW1lb3V0VGltZXJGaXJlZCgpOwogICAg
IHZvaWQgc29mdFVwZGF0ZUlmTmVlZGVkKCk7CisgICAgdm9pZCBsb2FkUmVzcG9uc2VGcm9tUHJl
bG9hZGVyKCk7CisgICAgdm9pZCBsb2FkQm9keUZyb21QcmVsb2FkZXIoKTsKIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIE1lc3NhZ2U+IGJvb2wgc2VuZFRvU2VydmljZVdvcmtlcihNZXNzYWdlJiYp
OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1lc3NhZ2U+IGJvb2wgc2VuZFRvQ2xpZW50KE1lc3Nh
Z2UmJik7CkBAIC0xMDQsNiArMTEzLDggQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNEb25lIHsg
ZmFsc2UgfTsKICAgICBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
ciBtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyOwogICAgIGJvb2wgbV9zaG91
bGRTb2Z0VXBkYXRlIHsgZmFsc2UgfTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtl
ck5hdmlnYXRpb25QcmVsb2FkZXI+IG1fcHJlbG9hZGVyOworICAgIGJvb2wgbV9pc0xvYWRpbmdG
cm9tUHJlbG9hZGVyIHsgZmFsc2UgfTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblBy
ZWxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4MWY5OGIy
OTZjYjJhMWJmNDJiMjIxMWMxNjI3MmU1YzAxYmYyOGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmln
YXRpb25QcmVsb2FkZXIuY3BwCkBAIC0wLDAgKzEsMTc0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVy
LmgiCisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKKyNpbmNsdWRlICJMb2dnaW5nLmgi
CisjaW5jbHVkZSAiTmV0d29ya0NhY2hlLmgiCisjaW5jbHVkZSAiTmV0d29ya0xvYWQuaCIKKyNp
bmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CisKK1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpT
ZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcihOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwg
TmV0d29ya0xvYWRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKKyAgICA6IG1fc2Vzc2lvbihzZXNz
aW9uKQoreworICAgIGlmIChzZXNzaW9uLmNhY2hlKCkpIHsKKyAgICAgICAgc2Vzc2lvbi5jYWNo
ZSgpLT5yZXRyaWV2ZShwYXJhbWV0ZXJzLnJlcXVlc3QsIE5ldHdvcmtDYWNoZTo6R2xvYmFsRnJh
bWVJRCB7IH0sIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObywgW3RoaXMsIHdlYWtUaGlz
ID0gV2Vha1B0ciB7ICp0aGlzIH0sIHBhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMpXShh
dXRvJiYgZW50cnksIGF1dG8mJikgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlz
IHx8IG1faXNDYW5jZWxsZWQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
aWYgKCFtX3Nlc3Npb24pIHsKKyAgICAgICAgICAgICAgICBkaWRGYWlsTG9hZGluZyhSZXNvdXJj
ZUVycm9yIHsgUmVzb3VyY2VFcnJvcjo6VHlwZTo6Q2FuY2VsbGF0aW9uIH0pOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChlbnRyeSAmJiAh
ZW50cnktPm5lZWRzVmFsaWRhdGlvbigpKSB7CisgICAgICAgICAgICAgICAgbG9hZFdpdGhDYWNo
ZUVudHJ5KCplbnRyeSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBwYXJhbWV0ZXJzLnJlcXVlc3Quc2V0Q2FjaGVQb2xpY3koUmVzb3VyY2VS
ZXF1ZXN0Q2FjaGVQb2xpY3k6OlJlZnJlc2hBbnlDYWNoZURhdGEpOworICAgICAgICAgICAgaWYg
KGVudHJ5KSB7CisgICAgICAgICAgICAgICAgbV9jYWNoZUVudHJ5ID0gV1RGTW92ZShlbnRyeSk7
CisKKyAgICAgICAgICAgICAgICBTdHJpbmcgZVRhZyA9IG1fY2FjaGVFbnRyeS0+cmVzcG9uc2Uo
KS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkVUYWcpOworICAgICAgICAgICAgICAg
IGlmICghZVRhZy5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMucmVx
dWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OklmTm9uZU1hdGNoLCBlVGFn
KTsKKworICAgICAgICAgICAgICAgIFN0cmluZyBsYXN0TW9kaWZpZWQgPSBtX2NhY2hlRW50cnkt
PnJlc3BvbnNlKCkuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpMYXN0TW9kaWZpZWQp
OworICAgICAgICAgICAgICAgIGlmICghbGFzdE1vZGlmaWVkLmlzRW1wdHkoKSkKKyAgICAgICAg
ICAgICAgICAgICAgcGFyYW1ldGVycy5yZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVh
ZGVyTmFtZTo6SWZNb2RpZmllZFNpbmNlLCBsYXN0TW9kaWZpZWQpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgbG9hZEZyb21OZXR3b3JrKCptX3Nlc3Npb24sIFdURk1vdmUocGFyYW1ldGVy
cykpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBsb2FkRnJvbU5l
dHdvcmsoc2Vzc2lvbiwgV1RGTW92ZShwYXJhbWV0ZXJzKSk7Cit9CisKK1NlcnZpY2VXb3JrZXJO
YXZpZ2F0aW9uUHJlbG9hZGVyOjp+U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIoKQor
eworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpjYW5jZWwoKQor
eworICAgIG1faXNDYW5jZWxsZWQgPSB0cnVlOworICAgIGlmIChtX3Jlc3BvbnNlQ29tcGxldGlv
bkhhbmRsZXIpCisgICAgICAgIG1fcmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rp
b246Oklnbm9yZSk7CisgICAgaWYgKG1fbmV0d29ya0xvYWQpCisgICAgICAgIG1fbmV0d29ya0xv
YWQtPmNhbmNlbCgpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVy
Ojpsb2FkV2l0aENhY2hlRW50cnkoTmV0d29ya0NhY2hlOjpFbnRyeSYgZW50cnkpCit7CisgICAg
Ly8gU3RvcmUgZW50cnkuCisgICAgZGlkQ29tcGxldGUoKTsKK30KKwordm9pZCBTZXJ2aWNlV29y
a2VyTmF2aWdhdGlvblByZWxvYWRlcjo6bG9hZEZyb21OZXR3b3JrKE5ldHdvcmtTZXNzaW9uJiBz
ZXNzaW9uLCBOZXR3b3JrTG9hZFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQoreworICAgIG1fbmV0
d29ya0xvYWQgPSBtYWtlVW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgbnVsbHB0ciwgV1RGTW92
ZShwYXJhbWV0ZXJzKSwgc2Vzc2lvbik7CisgICAgbV9uZXR3b3JrTG9hZC0+c3RhcnQoKTsKK30K
Kwordm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6d2lsbFNlbmRSZWRpcmVj
dGVkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNl
UmVzcG9uc2UmJiByZXNwb25zZSkKK3sKKyAgICBkaWRSZWNlaXZlUmVzcG9uc2UoV1RGTW92ZShy
ZXNwb25zZSksIFtdKGF1dG8pIHsgfSk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRp
b25QcmVsb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9u
c2UsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBpZiAocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA9PSAzMDQgJiYgbV9jYWNoZUVudHJ5KSB7
CisgICAgICAgIGxvYWRXaXRoQ2FjaGVFbnRyeSgqbV9jYWNoZUVudHJ5KTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpJZ25vcmUpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgbV9yZXNwb25zZSA9IFdURk1vdmUocmVzcG9uc2UpOworICAgIG1fcmVzcG9u
c2VDb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpOworCisgICAg
aWYgKG1fcmVzcG9uc2VDYWxsYmFjaykKKyAgICAgICAgbV9yZXNwb25zZUNhbGxiYWNrKCk7Cit9
CisKK3ZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVCdWZm
ZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVu
Z3RoKQoreworICAgIGlmIChtX2JvZHlDYWxsYmFjaykKKyAgICAgICAgbV9ib2R5Q2FsbGJhY2so
V1RGTW92ZShidWZmZXIpLCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsKK30KKwordm9pZCBT
ZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKQoreworICAgIGRpZENvbXBsZXRlKCk7Cit9CisK
K3ZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZEZhaWxMb2FkaW5nKGNv
bnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQoreworICAgIG1fZXJyb3IgPSBlcnJvcjsKKyAgICBk
aWRDb21wbGV0ZSgpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVy
OjpkaWRDb21wbGV0ZSgpCit7CisgICAgbV9uZXR3b3JrTG9hZCA9IG51bGxwdHI7CisgICAgaWYg
KG1fYm9keUNhbGxiYWNrKQorICAgICAgICBtX2JvZHlDYWxsYmFjayh7IH0sIDApOworfQorCit2
b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjp3YWl0Rm9yUmVzcG9uc2UoUmVz
cG9uc2VDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIGlmICghbV9lcnJvci5pc051bGwoKSkg
eworICAgICAgICBjYWxsYmFjaygpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmICht
X3Jlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpIHsKKyAgICAgICAgY2FsbGJhY2soKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIG1fcmVzcG9uc2VDYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjp3YWl0
Rm9yQm9keShCb2R5Q2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIW1fZXJyb3IuaXNO
dWxsKCkpIHsKKyAgICAgICAgY2FsbGJhY2soeyB9LCAwKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIEFTU0VSVCghbV9yZXNwb25zZS5pc051bGwoKSk7CisgICAgQVNTRVJUKG1fcmVz
cG9uc2VDb21wbGV0aW9uSGFuZGxlcik7CisgICAgaWYgKG1fcmVzcG9uc2VDb21wbGV0aW9uSGFu
ZGxlcikKKyAgICAgICAgbV9yZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6
VXNlKTsKKyAgICBtX2JvZHlDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzRjYmMzMjFhNDA3ZjI5OTIwNzM1NWVkZTBmZDI4MzA2NzczMzY5OAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKworI2lu
Y2x1ZGUgIk5ldHdvcmtDYWNoZUVudHJ5LmgiCisjaW5jbHVkZSAiTmV0d29ya0xvYWRDbGllbnQu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVy
cy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeS5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvRmV0Y2hPcHRpb25zLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNl
V29ya2VySm9iRGF0YS5oPgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2lu
Y2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVjdCBTZXJ2
aWNlV29ya2VyRmV0Y2hSZXN1bHQ7CitzdHJ1Y3QgU2VydmljZVdvcmtlckpvYkRhdGE7CitjbGFz
cyBUZXh0UmVzb3VyY2VEZWNvZGVyOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
TmV0d29ya0xvYWQ7CitjbGFzcyBOZXR3b3JrTG9hZFBhcmFtZXRlcnM7CitjbGFzcyBOZXR3b3Jr
U2Vzc2lvbjsKKworY2xhc3MgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIgZmluYWwg
OiBwdWJsaWMgTmV0d29ya0xvYWRDbGllbnQsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTZXJ2aWNl
V29ya2VyTmF2aWdhdGlvblByZWxvYWRlcj4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OworcHVibGljOgorICAgIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyKE5ldHdvcmtT
ZXNzaW9uJiwgTmV0d29ya0xvYWRQYXJhbWV0ZXJzJiYpOworICAgIH5TZXJ2aWNlV29ya2VyTmF2
aWdhdGlvblByZWxvYWRlcigpOworCisgICAgdm9pZCBjYW5jZWwoKTsKKworICAgIHVzaW5nIFJl
c3BvbnNlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+OworICAgIHZvaWQgd2Fp
dEZvclJlc3BvbnNlKFJlc3BvbnNlQ2FsbGJhY2smJik7CisgICAgdXNpbmcgQm9keUNhbGxiYWNr
ID0gRnVuY3Rpb248dm9pZChSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVw
b3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCk+OworICAgIHZvaWQgd2FpdEZvckJvZHkoQm9keUNhbGxi
YWNrJiYpOworCisgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IoKSBjb25z
dCB7IHJldHVybiBtX2Vycm9yOyB9CisgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlOyB9CisKK3ByaXZhdGU6Cisg
ICAgLy8gTmV0d29ya0xvYWRDbGllbnQuCisgICAgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBs
b25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50
KSBmaW5hbCB7IH0KKyAgICBib29sIGlzU3luY2hyb25vdXMoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBmYWxzZTsgfQorICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVk
UmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJl
Y3RSZXNwb25zZSkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBp
bnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkaWRGaW5pc2hM
b2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOworICAgIHZv
aWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwor
CisgICAgdm9pZCBsb2FkV2l0aENhY2hlRW50cnkoTmV0d29ya0NhY2hlOjpFbnRyeSYpOworICAg
IHZvaWQgbG9hZEZyb21OZXR3b3JrKE5ldHdvcmtTZXNzaW9uJiwgTmV0d29ya0xvYWRQYXJhbWV0
ZXJzJiYpOworICAgIHZvaWQgZGlkQ29tcGxldGUoKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxO
ZXR3b3JrTG9hZD4gbV9uZXR3b3JrTG9hZDsKKyAgICBXZWFrUHRyPE5ldHdvcmtTZXNzaW9uPiBt
X3Nlc3Npb247CisgICAgYm9vbCBtX2lzQ2FuY2VsbGVkIHsgZmFsc2UgfTsKKworICAgIHN0ZDo6
dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hlRW50cnk7CisgICAgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOworICAgIFJlc3BvbnNlQ29tcGxldGlvbkhh
bmRsZXIgbV9yZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyOworICAgIFdlYkNvcmU6OlJlc291cmNl
RXJyb3IgbV9lcnJvcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBtX2JvZHk7
CisKKyAgICBSZXNwb25zZUNhbGxiYWNrIG1fcmVzcG9uc2VDYWxsYmFjazsKKyAgICBCb2R5Q2Fs
bGJhY2sgbV9ib2R5Q2FsbGJhY2s7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmNwcAppbmRleCBlMzM1MDkwYWZhODNiYjhjOTlmYTJhYmQ1YTQyNDcwOGU1NmRi
YWI1Li4zNjhkMzhmNWQ2MzYzOGNiOTlkOGI3MGJlZDAzMWIyZWRkM2UxMWUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtMTg0LDkgKzE4NCw4IEBAIHN0ZDo6
dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiBXZWJTV1NlcnZlckNvbm5lY3Rpb246
OmNyZWF0ZUZldGNoVGFzayhOCiAgICAgfQogCiAgICAgYXV0byogcmVnaXN0cmF0aW9uID0gc2Vy
dmVyKCkuZ2V0UmVnaXN0cmF0aW9uKCpzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
cik7Ci0gICAgYm9vbCBzaG91bGRTb2Z0VXBkYXRlID0gcmVnaXN0cmF0aW9uICYmIHJlZ2lzdHJh
dGlvbi0+c2hvdWxkU29mdFVwZGF0ZShsb2FkZXIucGFyYW1ldGVycygpLm9wdGlvbnMpOwogICAg
IGlmICh3b3JrZXItPnNob3VsZFNraXBGZXRjaEV2ZW50KCkpIHsKLSAgICAgICAgaWYgKHNob3Vs
ZFNvZnRVcGRhdGUpCisgICAgICAgIGlmIChyZWdpc3RyYXRpb24gJiYgcmVnaXN0cmF0aW9uLT5z
aG91bGRTb2Z0VXBkYXRlKGxvYWRlci5wYXJhbWV0ZXJzKCkub3B0aW9ucykpCiAgICAgICAgICAg
ICByZWdpc3RyYXRpb24tPnNjaGVkdWxlU29mdFVwZGF0ZShsb2FkZXIuaXNBcHBJbml0aWF0ZWQo
KSA/IFdlYkNvcmU6OklzQXBwSW5pdGlhdGVkOjpZZXMgOiBXZWJDb3JlOjpJc0FwcEluaXRpYXRl
ZDo6Tm8pOwogCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTk3LDcgKzE5Niw4IEBAIHN0
ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrPiBXZWJTV1NlcnZlckNvbm5lY3Rp
b246OmNyZWF0ZUZldGNoVGFzayhOCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAot
ICAgIGF1dG8gdGFzayA9IG1ha2VVbmlxdWU8U2VydmljZVdvcmtlckZldGNoVGFzaz4oKnRoaXMs
IGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0IHsgcmVxdWVzdCB9LCBpZGVudGlmaWVyKCksIHdvcmtl
ci0+aWRlbnRpZmllcigpLCAqc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIHNo
b3VsZFNvZnRVcGRhdGUpOworICAgIGJvb2wgaXNXb3JrZXJSZWFkeSA9IHdvcmtlci0+aXNSdW5u
aW5nKCkgJiYgd29ya2VyLT5zdGF0ZSgpID09IFNlcnZpY2VXb3JrZXJTdGF0ZTo6QWN0aXZhdGVk
OworICAgIGF1dG8gdGFzayA9IG1ha2VVbmlxdWU8U2VydmljZVdvcmtlckZldGNoVGFzaz4oKnRo
aXMsIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0IHsgcmVxdWVzdCB9LCBpZGVudGlmaWVyKCksIHdv
cmtlci0+aWRlbnRpZmllcigpLCAqcmVnaXN0cmF0aW9uLCBzZXNzaW9uKCksIGlzV29ya2VyUmVh
ZHkpOwogICAgIHN0YXJ0RmV0Y2goKnRhc2ssICp3b3JrZXIpOwogICAgIHJldHVybiB0YXNrOwog
fQpAQCAtNTAzLDcgKzUwMywxMiBAQCBQQUw6OlNlc3Npb25JRCBXZWJTV1NlcnZlckNvbm5lY3Rp
b246OnNlc3Npb25JRCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHNlcnZlcigpLnNlc3Npb25JRCgp
OwogfQotICAgIAorCitOZXR3b3JrU2Vzc2lvbiogV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzZXNz
aW9uKCkKK3sKKyAgICByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzcy0+bmV0d29ya1Nlc3Npb24oc2Vz
c2lvbklEKCkpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiB2b2lkIFdlYlNXU2VydmVyQ29u
bmVjdGlvbjo6c2VuZFRvQ29udGV4dFByb2Nlc3MoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBVJiYgbWVzc2FnZSkKIHsKICAgICBzdGF0aWNfY2FzdDxX
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mPihjb25uZWN0aW9uKS5zZW5kKFdURk1vdmUo
bWVzc2FnZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCmluZGV4IDI2ODU1
NTRmOWZlY2RkNDUxZWE2ZDc2ODgxNDI0NTk5NDgxYTdjYWIuLjI5NjZlMDU2ODhhNmIzZmFkNjRk
NjgyNDQ2OTliYmM0MzM2Nzg3NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
LmgKQEAgLTc1LDcgKzc1LDggQEAgcHVibGljOgogICAgIElQQzo6Q29ubmVjdGlvbiYgaXBjQ29u
bmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudENvbm5lY3Rpb24uZ2V0KCk7IH0KIAog
ICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
JikgZmluYWw7Ci0gICAgCisKKyAgICBOZXR3b3JrU2Vzc2lvbiogc2Vzc2lvbigpOwogICAgIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s+IGNyZWF0ZUZldGNoVGFzayhOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXImLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuaApp
bmRleCAwMTNiMTg1ZTZiNDcyNjc1MzM2ZWZiODAyYWNmZWZiYWZiMmE4ZDlhLi5kMzgyYjY1YWY3
MDhmZWQ5OWQwY2NkNWM5ZDg1ZGRkYWE3NjVjZTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVyLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdpc3Rlci5oCkBAIC0y
OSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJNRE5TUmVnaXN0ZXJJZGVudGlmaWVyLmgiCiAjaW5j
bHVkZSAiUlRDTmV0d29yay5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc1F1YWxpZmllZC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIuaD4K
ICNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNl
cy50eHQKaW5kZXggNjQxZGYxNjRmOWUzYzg1ZTNlNDc4NzExOGEzNTkzZjY3ODc1MWJhOC4uNDNk
ZDZhN2Q4NjNjNTJmNGI4ODYyZThmYWIwZjQxYzRhZDExZGJlNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0x
MzYsNiArMTM2LDcgQEAgTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQuY3BwCiBOZXR3b3JrUHJvY2Vzcy9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5j
cHAKIAogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
LmNwcCBAbm8tdW5pZnkKK05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtl
ck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV09yaWdpblN0b3JlLmNwcCBAbm8tdW5pZnkKIE5ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDhjNTczMDcyMWNi
MjI4ZTUwMTNjMzcxNTEwZGZjY2FkZGE1ODY1ODUuLjE2NzlkMDY0YjY2NjcxYTU4OTlmNDM2NTk0
ZWRmOTM2MzQ1N2Q3YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMzk5OSw2ICszOTk5LDggQEAKIAkJNDFFMjQyREYyNkUwQzkwNDAw
OUE4QzY0IC8qIE5ldHdvcmtSVENVdGlsaXRpZXNDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IE5ldHdvcmtSVENVdGlsaXRpZXNDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDFFNjdBOEMyNUQyQ0ZEMDAwN0IwQTRDIC8qIFJlbW90ZVJlYWx0aW1lQXVkaW9Tb3Vy
Y2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlUmVhbHRpbWVBdWRpb1NvdXJjZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MUU2N0E4RDI1RDJDRkQwMDA3QjBBNEMgLyogUmVtb3Rl
UmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVSZWFsdGlt
ZUF1ZGlvU291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFFQjREM0Ey
NzRDRTA0NTAwQTkyNzJCIC8qIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRUI0RDNCMjc0Q0UwNDUwMEE5MjcyQiAvKiBTZXJ2aWNl
V29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXJ2aWNl
V29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQxRjA2MEREMTY1NDMxNzUwMEYzMjgxQyAvKiBXZWJTb2NrZXRDaGFubmVsTWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYlNvY2tldENoYW5uZWxNZXNzYWdlUmVj
ZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9XZWJTb2NrZXRDaGFubmVs
TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsK
IAkJNDFGOUZEMTgyM0VEOEE4MTAwOTlCNTc5IC8qIExpYldlYlJUQ1Jlc29sdmVySWRlbnRpZmll
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMaWJXZWJSVENSZXNvbHZlcklk
ZW50aWZpZXIuaDsgcGF0aCA9IE5ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Jlc29sdmVySWRlbnRp
Zmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUZBQkQyODFGNERERkRDMDA2
QTZDOTcgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTEwMTU5LDYgKzEwMTYxLDggQEAKIAkJCQk0MTUxODUzNjIyMjcwNEY2MDA1
NDMwQzYgLyogU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAgKi8sCiAJCQkJNDE1MTg1MzUyMjI3
MDRGNTAwNTQzMEM2IC8qIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2suaCAqLywKIAkJCQk0MTUxODUz
ODIyMjcwRjUzMDA1NDMwQzYgLyogU2VydmljZVdvcmtlckZldGNoVGFzay5tZXNzYWdlcy5pbiAq
LywKKwkJCQk0MUVCNEQzQjI3NENFMDQ1MDBBOTI3MkIgLyogU2VydmljZVdvcmtlck5hdmlnYXRp
b25QcmVsb2FkZXIuY3BwICovLAorCQkJCTQxRUI0RDNBMjc0Q0UwNDUwMEE5MjcyQiAvKiBTZXJ2
aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5oICovLAogCQkJCTQxRDVDNkQ5MjM4RUIyMEUw
MEI5QjNDQiAvKiBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAgKi8sCiAJCQkJNDFE
NUM2RDgyMzhFQjIwRDAwQjlCM0NCIC8qIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmgg
Ki8sCiAJCQkJOTNCQTA0REYyMTUxQURGNDAwN0Y0NTVGIC8qIFdlYlNXT3JpZ2luU3RvcmUuY3Bw
ICovLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDJhYTA0NDk3ODEwNDA3YTk1NjhkYTA3NjkxMjY0ZmJjYjA3OTg4YjEuLmIy
YWQwYmQzNjJhOGZmYjNmNTMxNWVhODhiZjEwMmUzNDMwZmMyZDEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAyMS0xMS0yNSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAg
ICAgICAgUHJlbG9hZCBuYXZpZ2F0aW9uIHJlcXVlc3QgaWYgdGhlIHNlcnZpY2Ugd29ya2VyIGlz
IG5vdCBpbW1lZGlhdGVseSByZWFkeSB0byBoYW5kbGUgdGhlIG5hdmlnYXRpb24gcmVxdWVzdCBm
ZXRjaCBldmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjMzNDcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3NlcnZpY2Utd29ya2VyLXBy
ZWxvYWQtd2hlbi1ub3QtYWN0aXZhdGVkLXNjcmlwdC5weTogQWRkZWQuCisgICAgICAgICogaHR0
cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXByZWxvYWQtd2hlbi1ub3QtYWN0
aXZhdGVkLXdvcmtlci5qczogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvc2VydmljZS13b3Jr
ZXJzL3NlcnZpY2Utd29ya2VyLXByZWxvYWQtd2hlbi1ub3QtYWN0aXZhdGVkLmh0dHBzLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZp
Y2Utd29ya2VyLXByZWxvYWQtd2hlbi1ub3QtYWN0aXZhdGVkLmh0dHBzLmh0bWw6IEFkZGVkLgor
CiAyMDIxLTExLTIxICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBb
TEZDXVtJbnRlZ3JhdGlvbl0gRW5hYmxlIGJpZGkgY29udGVudCBmb3Igbm9uLWlubGluZS1ib3gg
Y2FzZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9y
ZXNvdXJjZXMvc2VydmljZS13b3JrZXItcHJlbG9hZC13aGVuLW5vdC1hY3RpdmF0ZWQtc2NyaXB0
LnB5IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy9zZXJ2
aWNlLXdvcmtlci1wcmVsb2FkLXdoZW4tbm90LWFjdGl2YXRlZC1zY3JpcHQucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzgxZTE3MmUyNGY2ZThiZDMzYjAxOWE3ZGI3MjFkMzJiODBmMzFlZAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvc2Vy
dmljZS13b3JrZXItcHJlbG9hZC13aGVuLW5vdC1hY3RpdmF0ZWQtc2NyaXB0LnB5CkBAIC0wLDAg
KzEsMjQgQEAKK2ltcG9ydCBvcworaW1wb3J0IGhhc2hsaWIKK2ltcG9ydCBqc29uCisKKworZGVm
IG1haW4ocmVxdWVzdCwgcmVzcG9uc2UpOgorICAgIHRva2VuID0gcmVxdWVzdC5HRVRbYid0b2tl
biddCisgICAgdGVzdElkID0gaGFzaGxpYi5tZDUodG9rZW4pLmhleGRpZ2VzdCgpCisKKyAgICBp
ZiByZXF1ZXN0Lm1ldGhvZCA9PSAiUE9TVCI6CisgICAgICAgIHJlcXVlc3Quc2VydmVyLnN0YXNo
LnRha2UodGVzdElkKQorICAgICAgICByZXF1ZXN0LnNlcnZlci5zdGFzaC5wdXQodGVzdElkLCBy
ZXF1ZXN0LkdFVFtiJ3ZhbHVlJ10pCisgICAgICAgIHJlc3BvbnNlLmhlYWRlcnMuc2V0KGIiQ29u
dGVudC1UeXBlIiwgYiJ0ZXh0L2FzY2lpIikKKyAgICAgICAgcmV0dXJuIGIidXBkYXRlZCB0byAi
ICsgcmVxdWVzdC5HRVRbYid2YWx1ZSddCisKKyAgICB2YWx1ZSA9IHJlcXVlc3Quc2VydmVyLnN0
YXNoLnRha2UodGVzdElkKQorICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgcmVzcG9uc2UuaGVh
ZGVycy5zZXQoYiJDYWNoZS1Db250cm9sIiwgYiJuby1jYWNoZSIpCisgICAgICAgIHJlc3BvbnNl
LmhlYWRlcnMuc2V0KGIiQ29udGVudC1UeXBlIiwgYiJ0ZXh0L2FzY2lpIikKKyAgICAgICAgcmV0
dXJuICJub3RoaW5nIgorCisgICAgcmVzcG9uc2UuaGVhZGVycy5zZXQoYiJDYWNoZS1Db250cm9s
IiwgYiJuby1jYWNoZSIpCisgICAgcmVzcG9uc2UuaGVhZGVycy5zZXQoYiJDb250ZW50LVR5cGUi
LCBiInRleHQvaHRtbCIpCisgICAgcmV0dXJuICI8aHRtbD48Ym9keT48c2NyaXB0PndpbmRvdy52
YWx1ZSA9ICclcyc7PC9zY3JpcHQ+PC9ib2R5PjwvaHRtbD4iICUgdmFsdWUuZGVjb2RlKCkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdv
cmtlci1wcmVsb2FkLXdoZW4tbm90LWFjdGl2YXRlZC13b3JrZXIuanMgYi9MYXlvdXRUZXN0cy9o
dHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItcHJlbG9hZC13aGVuLW5vdC1h
Y3RpdmF0ZWQtd29ya2VyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJjYWI5MzUwYWM1NDY5NTlkNzExMzZiYWIy
MTFhZjA2MTJmMDBiZWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9z
ZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItcHJlbG9hZC13aGVuLW5vdC1hY3RpdmF0ZWQt
d29ya2VyLmpzCkBAIC0wLDAgKzEsMjggQEAKK29uaW5zdGFsbCA9IChldmVudCkgPT4geworICAg
IGlmIChzZWxmLnBvcnQpCisgICAgICAgIHJldHVybjsKKyAgICBldmVudC53YWl0VW50aWwobmV3
IFByb21pc2UocmVzb2x2ZSA9PiBzZWxmLmluc3RhbGxpbmdQcm9taXNlUmVzb2x2ZSA9IHJlc29s
dmUpKTsKK30KKworb25tZXNzYWdlID0gKGV2ZW50KSA9PiB7CisgICAgaWYgKGV2ZW50LmRhdGEu
cG9ydCkKKyAgICAgICAgc2VsZi5wb3J0ID0gZXZlbnQuZGF0YS5wb3J0OworICAgIGlmIChzZWxm
Lmluc3RhbGxpbmdQcm9taXNlUmVzb2x2ZSkgeworICAgICAgICBzZWxmLmluc3RhbGxpbmdQcm9t
aXNlUmVzb2x2ZSgpOworICAgICAgICBzZWxmLmluc3RhbGxpbmdQcm9taXNlUmVzb2x2ZSA9IG51
bGw7CisgICAgfQorICAgIGlmIChzZWxmLmFjdGl2YXRpbmdQcm9taXNlUmVzb2x2ZSkgeworICAg
ICAgICBzZWxmLmFjdGl2YXRpbmdQcm9taXNlUmVzb2x2ZSgpOworICAgICAgICBzZWxmLmFjdGl2
YXRpbmdQcm9taXNlUmVzb2x2ZSA9IG51bGw7CisgICAgfQorfTsKKworb25hY3RpdmF0ZSA9IChl
dmVudCkgPT4geworICAgIGV2ZW50LndhaXRVbnRpbChuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNl
bGYuYWN0aXZhdGluZ1Byb21pc2VSZXNvbHZlID0gcmVzb2x2ZSkpOworICAgIHNlbGYucG9ydC5w
b3N0TWVzc2FnZSgiYWN0aXZhdGluZyIpOworfQorCitzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2Zl
dGNoJywgKCkgPT4geworICAgIGlmIChzZWxmLnBvcnQpCisgICAgICAgIHNlbGYucG9ydC5wb3N0
TWVzc2FnZSgiZmV0Y2hpbmciKTsKK30pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93
cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXByZWxvYWQtd2hlbi1ub3QtYWN0aXZh
dGVkLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29y
a2Vycy9zZXJ2aWNlLXdvcmtlci1wcmVsb2FkLXdoZW4tbm90LWFjdGl2YXRlZC5odHRwcy1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uN2VmMmFkZjliMDFjMjlhMjBhZWRhNDUyZTA0Y2M2MGExZTcz
N2RhNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29y
a2Vycy9zZXJ2aWNlLXdvcmtlci1wcmVsb2FkLXdoZW4tbm90LWFjdGl2YXRlZC5odHRwcy1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw1IEBACisKKworUEFTUyBTZXR1cCBhY3RpdmF0aW5nIHdvcmtl
cgorUEFTUyBTZXJ2aWNlIHdvcmtlciBsb2FkIHVzZXMgcHJlbG9hZCBpZiBhdmFpbGFibGUgYW5k
IGZldGNoIGV2ZW50IHdhcyBub3QgaGFuZGxlZAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItcHJlbG9hZC13aGVuLW5vdC1h
Y3RpdmF0ZWQuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vy
cy9zZXJ2aWNlLXdvcmtlci1wcmVsb2FkLXdoZW4tbm90LWFjdGl2YXRlZC5odHRwcy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmE2MjM2ODg4YTZiNGFkZjcwOWViMTY2OGEzMWQ5YWNmMGU0NmRhNjMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2Vydmlj
ZS13b3JrZXItcHJlbG9hZC13aGVuLW5vdC1hY3RpdmF0ZWQuaHR0cHMuaHRtbApAQCAtMCwwICsx
LDcyIEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iL3Jl
c291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL2NvbW1vbi91
dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JvdXRpbmVzLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK3ZhciBhY3RpdmVXb3JrZXI7Cit2
YXIgdXVpZCA9IHRva2VuKCk7Cit2YXIgdXJsID0gIi9XZWJLaXQvc2VydmljZS13b3JrZXJzL3Jl
c291cmNlcy9zZXJ2aWNlLXdvcmtlci1wcmVsb2FkLXdoZW4tbm90LWFjdGl2YXRlZC1zY3JpcHQu
cHk/dG9rZW49IiArIHV1aWQ7Cit2YXIgZnJhbWU7Citjb25zdCBjaGFubmVsID0gbmV3IE1lc3Nh
Z2VDaGFubmVsKCk7CisKK2Z1bmN0aW9uIHdhaXRVbnRpbEFjdGl2YXRpbmcoKQoreworICAgIHJl
dHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAgY2hhbm5lbC5wb3J0Mi5vbm1l
c3NhZ2UgPSAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgIGlmIChldmVudC5kYXRhID09PSAiYWN0
aXZhdGluZyIpCisgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICB9OworICAgIH0p
OworfQorCitmdW5jdGlvbiB0cmlnZ2VyQWN0aXZhdGlvbigpCit7CisgICAgYWN0aXZlV29ya2Vy
LnBvc3RNZXNzYWdlKCJhY3RpdmF0ZSIpOworfQorCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3Qp
ID0+IHsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5z
ZXRVc2VTZXBhcmF0ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKHRydWUpOworICAgICAgICBhd2FpdCBm
ZXRjaCgiIikudGhlbigoKSA9PiB7IH0sICgpID0+IHsgfSk7CisgICAgfQorCisgICAgbGV0IHJl
Z2lzdHJhdGlvbiA9IGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCIvV2Vi
S2l0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1wcmVsb2FkLXdoZW4tbm90LWFjdGl2
YXRlZC13b3JrZXIuanMiLCB7IHNjb3BlIDogdXJsIH0pOworICAgIGlmICghcmVnaXN0cmF0aW9u
Lmluc3RhbGxpbmcpIHsKKyAgICAgICAgcmVnaXN0cmF0aW9uLnVucmVnaXN0ZXIoKTsKKyAgICAg
ICAgcmVnaXN0cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIo
Ii9XZWJLaXQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXByZWxvYWQtd2hlbi1ub3Qt
YWN0aXZhdGVkLXdvcmtlci5qcyIsIHsgc2NvcGUgOiB1cmwgfSk7CisgICAgfQorCisgICAgYWN0
aXZlV29ya2VyID0gcmVnaXN0cmF0aW9uLmluc3RhbGxpbmc7CisgICAgYWN0aXZlV29ya2VyLnBv
c3RNZXNzYWdlKHsgcG9ydDogY2hhbm5lbC5wb3J0MSB9LCBbY2hhbm5lbC5wb3J0MV0pOworCisg
ICAgcmV0dXJuIHdhaXRVbnRpbEFjdGl2YXRpbmcoKTsKK30sICJTZXR1cCBhY3RpdmF0aW5nIHdv
cmtlciIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICAvLyBTZXQgdmFs
dWUgdG8gJ2JlZm9yZS1uYXZpZ2F0aW9uJworICAgIGZldGNoKHVybCArICImdmFsdWU9YmVmb3Jl
LW5hdmlnYXRpb24iLCB7IG1ldGhvZDogJ1BPU1QnIH0pOworCisgICAgLy8gU3RhcnQgbG9hZGlu
ZyBpZnJhbWUsIHdpdGggYWN0aXZhdGluZyB3b3JrZXIsIHNvIG9ubHkgcHJlbG9hZCB3aWxsIHN0
YXJ0LgorICAgIGNvbnN0IGlmcmFtZVByb21pc2UgPSB3aXRoSWZyYW1lKHVybCk7CisKKyAgICAv
LyBXYWl0IGEgbGl0dGxlIGJpdCB0byBkbyBhIGZldGNoLiBUaGlzIGZldGNoIHNob3VsZCBoYXBw
ZW4gYWZ0ZXIgdGhlIHByZWxvYWQgYW5kIHNob3VsZCByZWNlaXZlIGEgJ25vdGhpbmcnIGJvZHku
CisgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDEw
MCkpOworICAgIGNvbnN0IGZldGNoUHJvbWlzZSA9IGZldGNoKHVybCk7CisKKyAgICAvLyBUcmln
Z2VyIGFjdGl2YXRpb24gdG8gc3RhcnQgdGhlIGZldGNoIGV2ZW50IGhhbmRsZXIsIHdoaWNoIHdp
bGwgZG8gbm90aGluZyBzbyB3ZSB3aWxsIHVzZSB0aGUgcHJlbG9hZC4KKyAgICB0cmlnZ2VyQWN0
aXZhdGlvbigpOworICAgIGZyYW1lID0gYXdhaXQgaWZyYW1lUHJvbWlzZTsKKworICAgIGFzc2Vy
dF9lcXVhbHMoZnJhbWUuY29udGVudFdpbmRvdy52YWx1ZSwgImJlZm9yZS1uYXZpZ2F0aW9uIik7
CisKKyAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoUHJvbWlzZTsKKyAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IHJlc3BvbnNlLnRleHQoKSwgIm5vdGhpbmciKTsKK30sICJTZXJ2aWNlIHdv
cmtlciBsb2FkIHVzZXMgcHJlbG9hZCBpZiBhdmFpbGFibGUgYW5kIGZldGNoIGV2ZW50IHdhcyBu
b3QgaGFuZGxlZCIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445200</attachid>
            <date>2021-11-26 06:49:32 -0800</date>
            <delta_ts>2021-11-30 01:30:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233471-20211126154930.patch</filename>
            <type>text/plain</type>
            <size>43762</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDVlMjg2MzcwYjYyMWMz
NWIyOTM3MzY0MjQ5ZWEwZTQyNTE3Y2IwMi4uYTBiMTY4YWFlMjNjMGUyNjBhZjQ0ODQxYzhhZjQ1
YzU4MzgzZGQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTExLTI2ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBQcmVsb2FkIG5hdmlnYXRp
b24gcmVxdWVzdCBpZiB0aGUgc2VydmljZSB3b3JrZXIgaXMgbm90IGltbWVkaWF0ZWx5IHJlYWR5
IHRvIGhhbmRsZSB0aGUgbmF2aWdhdGlvbiByZXF1ZXN0IGZldGNoIGV2ZW50CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NzEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBoZWxwZXIgcm91dGlu
ZS4KKworICAgICAgICAqIGxvYWRlci9GZXRjaE9wdGlvbnMuaDoKKwogMjAyMS0xMS0yNiAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQXBwbHkgV2ViUHJlZmVy
ZW5jZXMgb24gU2VydmljZVdvcmtlciBzZXR0aW5ncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4YTI1NjRjYWE1YzFm
MjU5NTFiOTkxMzUyMzc0MzVjMjQ1NzMwMDZkLi40NDljODE4NDc4Yzk0ZGI5YjFmZjRiZTZjOGVl
ZjE5NDQ2ZjkxZWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIxLTExLTI2ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBQcmVsb2FkIG5hdmlnYXRp
b24gcmVxdWVzdCBpZiB0aGUgc2VydmljZSB3b3JrZXIgaXMgbm90IGltbWVkaWF0ZWx5IHJlYWR5
IHRvIGhhbmRsZSB0aGUgbmF2aWdhdGlvbiByZXF1ZXN0IGZldGNoIGV2ZW50CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NzEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBMYXVuY2hpbmcgYSBzZXJ2aWNl
IHdvcmtlciBtaWdodCB0YWtlIHRpbWUgZHVlIHRvIHBhcnNpbmcgYW5kIHJ1bm5pbmcgdGhlIHNl
cnZpY2Ugd29ya2VyIHNjcmlwdC4KKyAgICAgICAgVGhpcyBtaWdodCBkZWxheSBuYXZpZ2F0aW9u
IGxvYWRzLCBlc3BlY2lhbGx5IGlmIHRoZSBzZXJ2aWNlIHdvcmtlciBpcyBwYXNzIHRocm91Z2gg
b24gdGhlc2UgbG9hZHMuCisgICAgICAgIFRvIG9wdGltaXplIHRoaXMgY29kZSBwYXRoLCB3ZSBw
cmVsb2FkIHRoZSBuYXZpZ2F0aW9uIHJlcXVlc3QgaW4gY2FzZSBzZXJ2aWNlIHdvcmtlciBpbnMg
bm90IHJ1bm5pbmcgb3Igbm90IHlldCBhY3RpdmF0ZWQuCisgICAgICAgIFdlIHRoZW4gd2FpdCBm
b3IgdGhlIHNlcnZpY2Ugd29ya2VyIHRvIGhhbmRsZSB0aGUgZmV0Y2ggZXZlbnQsIHdoaWNoIHdp
bGwgdGVsbCB1cyB0byBlaXRoZXIgZ28gdG8gdGhlIG5ldHdvcmssIGluIHdoaWNoCisgICAgICAg
IGNhc2Ugd2UgdXNlIHRoZSBwcmVsb2FkLCBvciB3aWxsIHByb3ZpZGUgaXRzIG93biByZXNwb25z
ZSBpbiB3aGljaCBjYXNlIHdlIHVzZSBpdCBhbmQgY2FuY2VsIHRoZSBwcmVsb2FkLgorCisgICAg
ICAgIFRlc3Q6IGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1wcmVsb2Fk
LXdoZW4tbm90LWFjdGl2YXRlZC5odHRwcy5odG1sCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRp
b25QcmVsb2FkZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmg6IEFkZGVkLgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNw
cDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29u
bmVjdGlvbi5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1Jl
Z2lzdGVyLmg6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjEtMTEtMjYgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFwcGx5IFdlYlByZWZlcmVuY2VzIG9uIFNlcnZpY2VX
b3JrZXIgc2V0dGluZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GZXRjaE9w
dGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GZXRjaE9wdGlvbnMuaAppbmRleCBmYzgy
Mjc0MjAxYjk0NDQ2ZWY3MzZkNDMxN2QxNmU0ZTY1MGJjM2JmLi4xNWI5NTczOTM2MGEzODY3ZTY4
MmJmZTBjNzNjMTYyNWVmOTczM2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RmV0Y2hPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZldGNoT3B0aW9ucy5o
CkBAIC04MSw2ICs4MSwxNSBAQCBpbmxpbmUgYm9vbCBpc1BvdGVudGlhbE5hdmlnYXRpb25PclN1
YnJlc291cmNlUmVxdWVzdChGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uCiAgICAgICAgIHx8IGRl
c3RpbmF0aW9uID09IEZldGNoT3B0aW9uczo6RGVzdGluYXRpb246OkVtYmVkOwogfQogCisvLyBo
dHRwczovL2ZldGNoLnNwZWMud2hhdHdnLm9yZy8jbmF2aWdhdGlvbi1yZXF1ZXN0CitpbmxpbmUg
Ym9vbCBpc05hdmlnYXRpb25SZXF1ZXN0KEZldGNoT3B0aW9uczo6RGVzdGluYXRpb24gZGVzdGlu
YXRpb24pCit7CisgICAgcmV0dXJuIGRlc3RpbmF0aW9uID09IEZldGNoT3B0aW9uczo6RGVzdGlu
YXRpb246OkRvY3VtZW50CisgICAgICAgIHx8IGRlc3RpbmF0aW9uID09IEZldGNoT3B0aW9uczo6
RGVzdGluYXRpb246OklmcmFtZQorICAgICAgICB8fCBkZXN0aW5hdGlvbiA9PSBGZXRjaE9wdGlv
bnM6OkRlc3RpbmF0aW9uOjpPYmplY3QKKyAgICAgICAgfHwgZGVzdGluYXRpb24gPT0gRmV0Y2hP
cHRpb25zOjpEZXN0aW5hdGlvbjo6RW1iZWQ7Cit9CisKIC8vIGh0dHBzOi8vZmV0Y2guc3BlYy53
aGF0d2cub3JnLyNub24tc3VicmVzb3VyY2UtcmVxdWVzdAogaW5saW5lIGJvb2wgaXNOb25TdWJy
ZXNvdXJjZVJlcXVlc3QoRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbiBkZXN0aW5hdGlvbikKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAppbmRleCBlMmJmNThkNzEy
NjRjYjg3Y2YxMjM5OWUyNTdlODUwOTk1NmM5OWMxLi41MDAzMTg5YTc5ZjIyZDQ4NzE3NjZmYWFj
YTA0ODcwYTYwODYzNDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2su
Y3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5l
dHdvcmtQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZGVyLmgiCisjaW5j
bHVkZSAiU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaCIKICNpbmNsdWRlICJTaGFy
ZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oIgpAQCAtNDksNyArNTAs
NyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2soV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uJiBzd1NlcnZlckNvbm5lY3Rpb24sIE5ldHdvcmtSZXNvdXJjZUxvYWRlciYgbG9h
ZGVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIGJvb2wgc2hvdWxkU29mdFVw
ZGF0ZSkKK1NlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2soV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uJiBzd1NlcnZlckNvbm5lY3Rpb24sIE5ldHdvcmtSZXNvdXJjZUxv
YWRlciYgbG9hZGVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTV1NlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJl
Z2lzdHJhdGlvbiwgTmV0d29ya1Nlc3Npb24qIHNlc3Npb24sIGJvb2wgaXNXb3JrZXJSZWFkeSkK
ICAgICA6IG1fc3dTZXJ2ZXJDb25uZWN0aW9uKHN3U2VydmVyQ29ubmVjdGlvbikKICAgICAsIG1f
bG9hZGVyKGxvYWRlcikKICAgICAsIG1fZmV0Y2hJZGVudGlmaWVyKFdlYkNvcmU6OkZldGNoSWRl
bnRpZmllcjo6Z2VuZXJhdGUoKSkKQEAgLTU3LDExICs1OCwxOSBAQCBTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKFdlYlNXU2VydmVyQ29ubmVjdGlvbiYgc3dT
ZXJ2ZXJDbwogICAgICwgbV9zZXJ2aWNlV29ya2VySWRlbnRpZmllcihzZXJ2aWNlV29ya2VySWRl
bnRpZmllcikKICAgICAsIG1fY3VycmVudFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSkKICAgICAs
IG1fdGltZW91dFRpbWVyKCp0aGlzLCAmU2VydmljZVdvcmtlckZldGNoVGFzazo6dGltZW91dFRp
bWVyRmlyZWQpCi0gICAgLCBtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKHNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKQotICAgICwgbV9zaG91bGRTb2Z0VXBk
YXRlKHNob3VsZFNvZnRVcGRhdGUpCisgICAgLCBtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyKHJlZ2lzdHJhdGlvbi5pZGVudGlmaWVyKCkpCisgICAgLCBtX3Nob3VsZFNvZnRV
cGRhdGUocmVnaXN0cmF0aW9uLnNob3VsZFNvZnRVcGRhdGUobG9hZGVyLnBhcmFtZXRlcnMoKS5v
cHRpb25zKSkKIHsKLSAgICBTV0ZFVENIX1JFTEVBU0VfTE9HKCJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrOiAoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXI9JSIgUFJJdTY0ICIsIHNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPSUiIFBSSXU2NCAiLCBzZXJ2aWNlV29ya2VySWRlbnRp
Zmllcj0lIiBQUkl1NjQgIikiLCBtX3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLnRvVUludDY0
KCksIG1fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIudG9VSW50NjQoKSwgbV9z
ZXJ2aWNlV29ya2VySWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBTV0ZFVENIX1JFTEVBU0Vf
TE9HKCJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOiAoc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXI9
JSIgUFJJdTY0ICIsIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPSUiIFBSSXU2
NCAiLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllcj0lIiBQUkl1NjQgIiwgJWQpIiwgbV9zZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllci50b1VJbnQ2NCgpLCBtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25JZGVudGlmaWVyLnRvVUludDY0KCksIG1fc2VydmljZVdvcmtlcklkZW50aWZpZXIudG9VSW50
NjQoKSwgaXNXb3JrZXJSZWFkeSk7CiAgICAgbV90aW1lb3V0VGltZXIuc3RhcnRPbmVTaG90KGxv
YWRlci5jb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkubmV0d29ya1Byb2Nlc3MoKS5zZXJ2aWNlV29y
a2VyRmV0Y2hUaW1lb3V0KCkpOworCisgICAgLy8gRklYTUU6IENvbnNpZGVyIGV4dGVuZGluZyB0
aGlzIGJhc2VkIG9uIG5hdmlnYXRpb24gcHJlbG9hZCBtYW5hZ2VyLgorICAgIGJvb2wgc2hvdWxk
RG9OYXZpZ2F0aW9uUHJlbG9hZCA9IHNlc3Npb24gJiYgaXNOYXZpZ2F0aW9uUmVxdWVzdChsb2Fk
ZXIucGFyYW1ldGVycygpLm9wdGlvbnMuZGVzdGluYXRpb24pICYmIGxvYWRlci5vcmlnaW5hbFJl
cXVlc3QoKS5odHRwTWV0aG9kKCkgPT0gIkdFVCI7CisgICAgaWYgKHNob3VsZERvTmF2aWdhdGlv
blByZWxvYWQgJiYgIWlzV29ya2VyUmVhZHkpIHsKKyAgICAgICAgTmV0d29ya0xvYWRQYXJhbWV0
ZXJzIHBhcmFtZXRlcnMgPSBsb2FkZXIucGFyYW1ldGVycygpOworICAgICAgICBwYXJhbWV0ZXJz
LnJlcXVlc3QgPSBtX2N1cnJlbnRSZXF1ZXN0OworICAgICAgICBtX3ByZWxvYWRlciA9IG1ha2VV
bmlxdWU8U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI+KCpzZXNzaW9uLCBXVEZNb3Zl
KHBhcmFtZXRlcnMpKTsKKyAgICB9CiB9CiAKIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6On5TZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrKCkKQEAgLTY5LDYgKzc4LDExIEBAIFNlcnZpY2VXb3JrZXJGZXRj
aFRhc2s6On5TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKCkKICAgICBTV0ZFVENIX1JFTEVBU0VfTE9H
KCJ+U2VydmljZVdvcmtlckZldGNoVGFzazoiKTsKICAgICBpZiAobV9zZXJ2aWNlV29ya2VyQ29u
bmVjdGlvbikKICAgICAgICAgbV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbi0+dW5yZWdpc3RlckZl
dGNoKCp0aGlzKTsKKworICAgIGlmIChtX3ByZWxvYWRlcikgeworICAgICAgICBtX3ByZWxvYWRl
ci0+Y2FuY2VsKCk7CisgICAgICAgIG1fcHJlbG9hZGVyID0gbnVsbHB0cjsKKyAgICB9CiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIE1lc3NhZ2U+IGJvb2wgU2VydmljZVdvcmtlckZldGNoVGFzazo6
c2VuZFRvU2VydmljZVdvcmtlcihNZXNzYWdlJiYgbWVzc2FnZSkKQEAgLTExOSwyOCArMTMzLDQ5
IEBAIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6c3RhcnRGZXRjaCgpCiAgICAgQVNTRVJU
X1VOVVNFRChpc1NlbnQsIGlzU2VudCk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlckZldGNoVGFz
azo6ZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNl
KQordm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25z
ZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UpCit7CisgICAgaWYgKG1fcHJl
bG9hZGVyKSB7CisgICAgICAgIG1fcHJlbG9hZGVyLT5jYW5jZWwoKTsKKyAgICAgICAgbV9wcmVs
b2FkZXIgPSBudWxscHRyOworICAgIH0KKworICAgIHByb2Nlc3NSZWRpcmVjdFJlc3BvbnNlKFdU
Rk1vdmUocmVzcG9uc2UpLCBTaG91bGRTZXRTb3VyY2U6Olllcyk7Cit9CisKK3ZvaWQgU2Vydmlj
ZVdvcmtlckZldGNoVGFzazo6cHJvY2Vzc1JlZGlyZWN0UmVzcG9uc2UoUmVzb3VyY2VSZXNwb25z
ZSYmIHJlc3BvbnNlLCBTaG91bGRTZXRTb3VyY2Ugc2hvdWxkU2V0U291cmNlKQogewogICAgIGlm
IChtX2lzRG9uZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU1dGRVRDSF9SRUxFQVNFX0xPRygi
ZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2U6Iik7CisgICAgU1dGRVRDSF9SRUxFQVNFX0xPRygi
cHJvY2Vzc1JlZGlyZWN0UmVzcG9uc2U6Iik7CiAgICAgbV93YXNIYW5kbGVkID0gdHJ1ZTsKICAg
ICBtX3RpbWVvdXRUaW1lci5zdG9wKCk7CiAgICAgc29mdFVwZGF0ZUlmTmVlZGVkKCk7CiAKLSAg
ICByZXNwb25zZS5zZXRTb3VyY2UoUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpTZXJ2aWNlV29y
a2VyKTsKKyAgICBpZiAoc2hvdWxkU2V0U291cmNlID09IFNob3VsZFNldFNvdXJjZTo6WWVzKQor
ICAgICAgICByZXNwb25zZS5zZXRTb3VyY2UoUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpTZXJ2
aWNlV29ya2VyKTsKICAgICBhdXRvIG5ld1JlcXVlc3QgPSBtX2N1cnJlbnRSZXF1ZXN0LnJlZGly
ZWN0ZWRSZXF1ZXN0KHJlc3BvbnNlLCBtX2xvYWRlci5wYXJhbWV0ZXJzKCkuc2hvdWxkQ2xlYXJS
ZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCk7CiAKICAgICBzZW5kVG9DbGllbnQoTWVzc2Fn
ZXM6OldlYlJlc291cmNlTG9hZGVyOjpXaWxsU2VuZFJlcXVlc3QgeyBuZXdSZXF1ZXN0LCBJUEM6
OkZvcm1EYXRhUmVmZXJlbmNlIHsgbmV3UmVxdWVzdC5odHRwQm9keSgpIH0sIHJlc3BvbnNlIH0p
OwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZShS
ZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVS
ZXNwb25zZU1lc3NhZ2UpCit2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVS
ZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIGJvb2wgbmVlZHND
b250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCit7CisgICAgaWYgKG1fcHJlbG9hZGVy
KSB7CisgICAgICAgIG1fcHJlbG9hZGVyLT5jYW5jZWwoKTsKKyAgICAgICAgbV9wcmVsb2FkZXIg
PSBudWxscHRyOworICAgIH0KKworICAgIHByb2Nlc3NSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNl
KSwgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UsIFNob3VsZFNldFNvdXJj
ZTo6WWVzKTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpwcm9jZXNzUmVzcG9u
c2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNl
aXZlUmVzcG9uc2VNZXNzYWdlLCBTaG91bGRTZXRTb3VyY2Ugc2hvdWxkU2V0U291cmNlKQogewog
ICAgIGlmIChtX2lzRG9uZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU1dGRVRDSF9SRUxFQVNF
X0xPRygiZGlkUmVjZWl2ZVJlc3BvbnNlOiAoaHR0cFN0YXR1c0NvZGU9JWQsIE1JTUVUeXBlPSUi
IFBVQkxJQ19MT0dfU1RSSU5HICIsIGV4cGVjdGVkQ29udGVudExlbmd0aD0lIiBQUklkNjQgIiwg
bmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2U9JWQsIHNvdXJjZT0ldSkiLCBy
ZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpLCByZXNwb25zZS5taW1lVHlwZSgpLnV0ZjgoKS5kYXRh
KCksIHJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpLCBuZWVkc0NvbnRpbnVlRGlkUmVj
ZWl2ZVJlc3BvbnNlTWVzc2FnZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlc3BvbnNlLnNvdXJj
ZSgpKSk7CisgICAgU1dGRVRDSF9SRUxFQVNFX0xPRygicHJvY2Vzc1Jlc3BvbnNlOiAoaHR0cFN0
YXR1c0NvZGU9JWQsIE1JTUVUeXBlPSUiIFBVQkxJQ19MT0dfU1RSSU5HICIsIGV4cGVjdGVkQ29u
dGVudExlbmd0aD0lIiBQUklkNjQgIiwgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1l
c3NhZ2U9JWQsIHNvdXJjZT0ldSkiLCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpLCByZXNwb25z
ZS5taW1lVHlwZSgpLnV0ZjgoKS5kYXRhKCksIHJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0
aCgpLCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHJlc3BvbnNlLnNvdXJjZSgpKSk7CiAgICAgbV93YXNIYW5kbGVkID0gdHJ1ZTsK
ICAgICBtX3RpbWVvdXRUaW1lci5zdG9wKCk7CiAgICAgc29mdFVwZGF0ZUlmTmVlZGVkKCk7CkBA
IC0xNjUsNyArMjAwLDggQEAgdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZl
UmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBib28KICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIHJlc3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3Vy
Y2U6OlNlcnZpY2VXb3JrZXIpOworICAgIGlmIChzaG91bGRTZXRTb3VyY2UgPT0gU2hvdWxkU2V0
U291cmNlOjpZZXMpCisgICAgICAgIHJlc3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNl
OjpTb3VyY2U6OlNlcnZpY2VXb3JrZXIpOwogICAgIG1fbG9hZGVyLnNlbmREaWRSZWNlaXZlUmVz
cG9uc2VQb3RlbnRpYWxseUluTmV3QnJvd3NpbmdDb250ZXh0R3JvdXAocmVzcG9uc2UsIG5lZWRz
Q29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsKICAgICBpZiAobmVlZHNDb250aW51
ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCiAgICAgICAgIG1fbG9hZGVyLnNldFJlc3BvbnNl
KFdURk1vdmUocmVzcG9uc2UpKTsKQEAgLTE5MCwxMyArMjI2LDE4IEBAIHZvaWQgU2VydmljZVdv
cmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZUZvcm1EYXRhKGNvbnN0IElQQzo6Rm9ybURhdGFSZWZl
cmVuY2UmIGZvCiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkRmluaXNoKCkK
K3sKKyAgICBkaWRGaW5pc2hXaXRoTWV0cmljcyh7IH0pOworfQorCit2b2lkIFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s6OmRpZEZpbmlzaFdpdGhNZXRyaWNzKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbmV0d29ya0xvYWRNZXRyaWNzKQogewogICAgIEFTU0VSVCghbV90aW1lb3V0VGltZXIuaXNB
Y3RpdmUoKSk7Ci0gICAgU1dGRVRDSF9SRUxFQVNFX0xPRygiZGlkRmluaXNoOiIpOworICAgIFNX
RkVUQ0hfUkVMRUFTRV9MT0coImRpZEZpbmlzaFdpdGhNZXRyaWNzOiIpOwogCiAgICAgbV9pc0Rv
bmUgPSB0cnVlOwogICAgIG1fdGltZW91dFRpbWVyLnN0b3AoKTsKLSAgICBzZW5kVG9DbGllbnQo
TWVzc2FnZXM6OldlYlJlc291cmNlTG9hZGVyOjpEaWRGaW5pc2hSZXNvdXJjZUxvYWQgeyB7IH0g
fSk7CisgICAgc2VuZFRvQ2xpZW50KE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkRmlu
aXNoUmVzb3VyY2VMb2FkIHsgbmV0d29ya0xvYWRNZXRyaWNzIH0pOwogfQogCiB2b2lkIFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCkBA
IC0yMDYsNiArMjQ3LDExIEBAIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkRmFpbChj
b25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKICAgICAgICAgbV90aW1lb3V0VGltZXIuc3RvcCgp
OwogICAgICAgICBzb2Z0VXBkYXRlSWZOZWVkZWQoKTsKICAgICB9CisgICAgaWYgKG1fcHJlbG9h
ZGVyKSB7CisgICAgICAgIG1fcHJlbG9hZGVyLT5jYW5jZWwoKTsKKyAgICAgICAgbV9wcmVsb2Fk
ZXIgPSBudWxscHRyOworICAgIH0KKwogICAgIFNXRkVUQ0hfUkVMRUFTRV9MT0dfRVJST1IoImRp
ZEZhaWw6IChlcnJvci5kb21haW49JSIgUFVCTElDX0xPR19TVFJJTkcgIiwgZXJyb3IuY29kZT0l
ZCkiLCBlcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpLCBlcnJvci5lcnJvckNvZGUoKSk7CiAg
ICAgbV9sb2FkZXIuZGlkRmFpbExvYWRpbmcoZXJyb3IpOwogfQpAQCAtMjE2LDEwICsyNjIsMTUg
QEAgdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWROb3RIYW5kbGUoKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBTV0ZFVENIX1JFTEVBU0VfTE9HKCJkaWROb3RIYW5kbGU6Iik7Ci0gICAg
bV9pc0RvbmUgPSB0cnVlOwogICAgIG1fdGltZW91dFRpbWVyLnN0b3AoKTsKICAgICBzb2Z0VXBk
YXRlSWZOZWVkZWQoKTsKIAorICAgIGlmIChtX3ByZWxvYWRlcikgeworICAgICAgICBsb2FkUmVz
cG9uc2VGcm9tUHJlbG9hZGVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2lz
RG9uZSA9IHRydWU7CiAgICAgbV9sb2FkZXIuc2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSh0aGlz
KTsKIH0KIApAQCAtMjQyLDYgKzI5MywxMCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6
OmNhbmNlbEZyb21DbGllbnQoKQogdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpjb250aW51
ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKCkKIHsKICAgICBTV0ZFVENIX1JFTEVBU0VfTE9HKCJj
b250aW51ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlOiIpOworICAgIGlmIChtX2lzTG9hZGluZ0Zy
b21QcmVsb2FkZXIpIHsKKyAgICAgICAgbG9hZEJvZHlGcm9tUHJlbG9hZGVyKCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CiAgICAgc2VuZFRvU2VydmljZVdvcmtlcihNZXNzYWdlczo6V2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb246OkNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2Ug
eyBtX3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBtX2ZldGNoSWRlbnRpZmllciB9KTsKIH0KIApAQCAtMjgwLDYgKzMzNSw1MyBAQCB2b2lkIFNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s6OnNvZnRVcGRhdGVJZk5lZWRlZCgpCiAgICAgICAgIHJlZ2lz
dHJhdGlvbi0+c2NoZWR1bGVTb2Z0VXBkYXRlKG1fbG9hZGVyLmlzQXBwSW5pdGlhdGVkKCkgPyBX
ZWJDb3JlOjpJc0FwcEluaXRpYXRlZDo6WWVzIDogV2ViQ29yZTo6SXNBcHBJbml0aWF0ZWQ6Ok5v
KTsKIH0KIAordm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpsb2FkUmVzcG9uc2VGcm9tUHJl
bG9hZGVyKCkKK3sKKyAgICBTV0ZFVENIX1JFTEVBU0VfTE9HKCJsb2FkUmVzcG9uc2VGcm9tUHJl
bG9hZGVyIik7CisKKyAgICBBU1NFUlQoIW1faXNMb2FkaW5nRnJvbVByZWxvYWRlcik7CisgICAg
bV9pc0xvYWRpbmdGcm9tUHJlbG9hZGVyID0gdHJ1ZTsKKworICAgIG1fcHJlbG9hZGVyLT53YWl0
Rm9yUmVzcG9uc2UoW3dlYWtUaGlzID0gV2Vha1B0ciB7IHRoaXMgfSwgdGhpc10oKSB7CisgICAg
ICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKCFt
X3ByZWxvYWRlci0+ZXJyb3IoKS5pc051bGwoKSkgeworICAgICAgICAgICAgZGlkRmFpbChtX3By
ZWxvYWRlci0+ZXJyb3IoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICBhdXRvIHJlc3BvbnNlID0gbV9wcmVsb2FkZXItPnJlc3BvbnNlKCk7CisgICAgICAgIGlm
IChyZXNwb25zZS5pc1JlZGlyZWN0aW9uKCkgJiYgcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygp
LmNvbnRhaW5zKEhUVFBIZWFkZXJOYW1lOjpMb2NhdGlvbikpIHsKKyAgICAgICAgICAgIHByb2Nl
c3NSZWRpcmVjdFJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBTaG91bGRTZXRTb3VyY2U6Ok5v
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgbmVlZHND
b250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgPSB0cnVlOworICAgICAgICBwcm9jZXNz
UmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSksIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9u
c2VNZXNzYWdlLCBTaG91bGRTZXRTb3VyY2U6Ok5vKTsKKyAgICB9KTsKK30KKwordm9pZCBTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrOjpsb2FkQm9keUZyb21QcmVsb2FkZXIoKQoreworICAgIFNXRkVU
Q0hfUkVMRUFTRV9MT0coImxvYWRCb2R5RnJvbVByZWxvYWRlciIpOworCisgICAgQVNTRVJUKG1f
aXNMb2FkaW5nRnJvbVByZWxvYWRlcik7CisgICAgbV9wcmVsb2FkZXItPndhaXRGb3JCb2R5KFt3
ZWFrVGhpcyA9IFdlYWtQdHIgeyB0aGlzIH0sIHRoaXNdKGF1dG8mJiBjaHVuaywgaW50IGxlbmd0
aCkgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBpZiAoIW1fcHJlbG9hZGVyLT5lcnJvcigpLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBkaWRG
YWlsKG1fcHJlbG9hZGVyLT5lcnJvcigpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBpZiAoIWNodW5rKSB7CisgICAgICAgICAgICBkaWRGaW5pc2hXaXRoTWV0cmlj
cyhtX3ByZWxvYWRlci0+bmV0d29ya0xvYWRNZXRyaWNzKCkpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIGRpZFJlY2VpdmVEYXRhKElQQzo6RGF0YVJlZmVyZW5jZSB7
IGNodW5rLT5kYXRhKCksIGNodW5rLT5zaXplKCkgfSwgbGVuZ3RoKTsKKyAgICB9KTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBTV0ZFVENIX1JFTEVBU0VfTE9HCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlckZldGNoVGFzay5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suaAppbmRleCAwNDliM2M0MTNhZDdkMjEwMWFl
OTk1YzdkOTlhZWU0N2RmYmRlNGI5Li4zZTg2N2E0MWE2MjE4Yjg1ODM1MjAzMWU4NjFkYTAxYTUw
YjhmYTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmgKQEAgLTQwLDYg
KzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNz
IFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CitjbGFzcyBTV1NlcnZl
clJlZ2lzdHJhdGlvbjsKIH0KIAogbmFtZXNwYWNlIElQQyB7CkBAIC00OCwxNiArNDksMjEgQEAg
Y2xhc3MgRGVjb2RlcjsKIGNsYXNzIEZvcm1EYXRhUmVmZXJlbmNlOwogfQogCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsK
K30KIAorbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBOZXR3b3JrUmVzb3VyY2VMb2FkZXI7Citj
bGFzcyBOZXR3b3JrU2Vzc2lvbjsKK2NsYXNzIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9h
ZGVyOwogY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOwogY2xhc3MgV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOwogCiBjbGFzcyBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrIDogcHVibGlj
IENhbk1ha2VXZWFrUHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+IHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKFdlYlNX
U2VydmVyQ29ubmVjdGlvbiYsIE5ldHdvcmtSZXNvdXJjZUxvYWRlciYsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbklkZW50aWZpZXIsIGJvb2wgc2hvdWxkU29mdFVwZGF0ZSk7CisgICAgU2VydmljZVdv
cmtlckZldGNoVGFzayhXZWJTV1NlcnZlckNvbm5lY3Rpb24mLCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXImLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6
OlNXU2VydmVyUmVnaXN0cmF0aW9uJiwgTmV0d29ya1Nlc3Npb24qLCBib29sIGlzV29ya2VyUmVh
ZHkpOwogICAgIH5TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKCk7CiAKICAgICB2b2lkIHN0YXJ0KFdl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYpOwpAQCAtNzYsMTggKzgyLDI1IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNvbnRleHRDbG9zZWQoKTsKIAogcHJpdmF0ZToKKyAgICBlbnVtIGNsYXNz
IFNob3VsZFNldFNvdXJjZSA6IGJvb2wgeyBObywgWWVzIH07CiAgICAgdm9pZCBkaWRSZWNlaXZl
UmVkaXJlY3RSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgYm9vbCBuZWVk
c0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSk7CiAgICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3Ro
KTsKICAgICB2b2lkIGRpZFJlY2VpdmVGb3JtRGF0YShjb25zdCBJUEM6OkZvcm1EYXRhUmVmZXJl
bmNlJik7CiAgICAgdm9pZCBkaWRGaW5pc2goKTsKKyAgICB2b2lkIGRpZEZpbmlzaFdpdGhNZXRy
aWNzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZvaWQgZGlkRmFp
bChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdm9pZCBkaWROb3RIYW5kbGUo
KTsKIAorICAgIHZvaWQgcHJvY2Vzc1JlZGlyZWN0UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmLCBTaG91bGRTZXRTb3VyY2UpOworICAgIHZvaWQgcHJvY2Vzc1Jlc3BvbnNlKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJl
c3BvbnNlTWVzc2FnZSwgU2hvdWxkU2V0U291cmNlKTsKKwogICAgIHZvaWQgc3RhcnRGZXRjaCgp
OwogCiAgICAgdm9pZCB0aW1lb3V0VGltZXJGaXJlZCgpOwogICAgIHZvaWQgc29mdFVwZGF0ZUlm
TmVlZGVkKCk7CisgICAgdm9pZCBsb2FkUmVzcG9uc2VGcm9tUHJlbG9hZGVyKCk7CisgICAgdm9p
ZCBsb2FkQm9keUZyb21QcmVsb2FkZXIoKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1lc3Nh
Z2U+IGJvb2wgc2VuZFRvU2VydmljZVdvcmtlcihNZXNzYWdlJiYpOwogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIE1lc3NhZ2U+IGJvb2wgc2VuZFRvQ2xpZW50KE1lc3NhZ2UmJik7CkBAIC0xMDQsNiAr
MTE3LDggQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNEb25lIHsgZmFsc2UgfTsKICAgICBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBtX3NlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyOwogICAgIGJvb2wgbV9zaG91bGRTb2Z0VXBkYXRlIHsgZmFs
c2UgfTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2Fk
ZXI+IG1fcHJlbG9hZGVyOworICAgIGJvb2wgbV9pc0xvYWRpbmdGcm9tUHJlbG9hZGVyIHsgZmFs
c2UgfTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmln
YXRpb25QcmVsb2FkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjExZjlkNDgwODYzY2ZlYzYwYmM4M2Y0YTUx
NDhiZGEzMTY2M2NiZDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3Bw
CkBAIC0wLDAgKzEsMjE3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgiCisKKyNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCisKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0d29y
a0NhY2hlLmgiCisjaW5jbHVkZSAiTmV0d29ya0xvYWQuaCIKKyNpbmNsdWRlICJOZXR3b3JrU2Vz
c2lvbi5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CisKK1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpTZXJ2aWNlV29ya2VyTmF2aWdh
dGlvblByZWxvYWRlcihOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0xvYWRQYXJhbWV0
ZXJzJiYgcGFyYW1ldGVycykKKyAgICA6IG1fc2Vzc2lvbihzZXNzaW9uKQoreworICAgIFJFTEVB
U0VfTE9HKFNlcnZpY2VXb3JrZXIsICJTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6
U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIgJXAiLCB0aGlzKTsKKyAgICBpZiAoc2Vz
c2lvbi5jYWNoZSgpKSB7CisgICAgICAgIE5ldHdvcmtDYWNoZTo6R2xvYmFsRnJhbWVJRCBnbG9i
YWxJRCB7IHBhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIHBhcmFtZXRlcnMud2ViUGFnZUlELCBw
YXJhbWV0ZXJzLndlYkZyYW1lSUQgfTsKKyAgICAgICAgc2Vzc2lvbi5jYWNoZSgpLT5yZXRyaWV2
ZShwYXJhbWV0ZXJzLnJlcXVlc3QsIGdsb2JhbElELCBwYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4sIFt0aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBwYXJh
bWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKV0oYXV0byYmIGVudHJ5LCBhdXRvJiYpIG11dGFi
bGUgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCBtX2lzQ2FuY2VsbGVkKQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGlmICghbV9zZXNzaW9uKSB7CisgICAgICAg
ICAgICAgICAgZGlkRmFpbExvYWRpbmcoUmVzb3VyY2VFcnJvciB7IFJlc291cmNlRXJyb3I6OlR5
cGU6OkNhbmNlbGxhdGlvbiB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBpZiAoZW50cnkgJiYgIWVudHJ5LT5uZWVkc1ZhbGlkYXRpb24oKSkg
eworICAgICAgICAgICAgICAgIGxvYWRXaXRoQ2FjaGVFbnRyeSgqZW50cnkpOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcGFyYW1ldGVycy5y
ZXF1ZXN0LnNldENhY2hlUG9saWN5KFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5OjpSZWZyZXNo
QW55Q2FjaGVEYXRhKTsKKyAgICAgICAgICAgIGlmIChlbnRyeSkgeworICAgICAgICAgICAgICAg
IG1fY2FjaGVFbnRyeSA9IFdURk1vdmUoZW50cnkpOworCisgICAgICAgICAgICAgICAgYXV0byBl
VGFnID0gbV9jYWNoZUVudHJ5LT5yZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVy
TmFtZTo6RVRhZyk7CisgICAgICAgICAgICAgICAgaWYgKCFlVGFnLmlzRW1wdHkoKSkKKyAgICAg
ICAgICAgICAgICAgICAgcGFyYW1ldGVycy5yZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQ
SGVhZGVyTmFtZTo6SWZOb25lTWF0Y2gsIGVUYWcpOworCisgICAgICAgICAgICAgICAgYXV0byBs
YXN0TW9kaWZpZWQgPSBtX2NhY2hlRW50cnktPnJlc3BvbnNlKCkuaHR0cEhlYWRlckZpZWxkKEhU
VFBIZWFkZXJOYW1lOjpMYXN0TW9kaWZpZWQpOworICAgICAgICAgICAgICAgIGlmICghbGFzdE1v
ZGlmaWVkLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVycy5yZXF1ZXN0
LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6SWZNb2RpZmllZFNpbmNlLCBsYXN0
TW9kaWZpZWQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbG9hZEZyb21OZXR3b3JrKCpt
X3Nlc3Npb24sIFdURk1vdmUocGFyYW1ldGVycykpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBsb2FkRnJvbU5ldHdvcmsoc2Vzc2lvbiwgV1RGTW92ZShwYXJhbWV0
ZXJzKSk7Cit9CisKK1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjp+U2VydmljZVdv
cmtlck5hdmlnYXRpb25QcmVsb2FkZXIoKQoreworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJOYXZp
Z2F0aW9uUHJlbG9hZGVyOjpjYW5jZWwoKQoreworICAgIG1faXNDYW5jZWxsZWQgPSB0cnVlOwor
ICAgIGlmIChtX3Jlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIG1fcmVzcG9uc2VD
b21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CisgICAgaWYgKG1fbmV0d29y
a0xvYWQpCisgICAgICAgIG1fbmV0d29ya0xvYWQtPmNhbmNlbCgpOworfQorCit2b2lkIFNlcnZp
Y2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpsb2FkV2l0aENhY2hlRW50cnkoTmV0d29ya0Nh
Y2hlOjpFbnRyeSYgZW50cnkpCit7CisgICAgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVz
cG9uc2UgeyBlbnRyeS5yZXNwb25zZSgpIH0sIFtib2R5ID0gUmVmUHRyIHsgZW50cnkuYnVmZmVy
KCkgfSwgd2Vha1RoaXMgPSBXZWFrUHRyIHsgdGhpcyB9XShhdXRvKSBtdXRhYmxlIHsKKyAgICAg
ICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoYm9k
eSkgeworICAgICAgICAgICAgYXV0byBzaXplID0gYm9keS0+c2l6ZSgpOworICAgICAgICAgICAg
d2Vha1RoaXMtPmRpZFJlY2VpdmVCdWZmZXIoYm9keS5yZWxlYXNlTm9uTnVsbCgpLCBzaXplKTsK
KyAgICAgICAgfQorCisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgTmV0d29ya0xvYWRNZXRyaWNzIG5ldHdvcmtMb2FkTWV0cmljczsKKyAgICAg
ICAgbmV0d29ya0xvYWRNZXRyaWNzLm1hcmtDb21wbGV0ZSgpOworICAgICAgICBuZXR3b3JrTG9h
ZE1ldHJpY3MucmVzcG9uc2VCb2R5Qnl0ZXNSZWNlaXZlZCA9IDA7CisgICAgICAgIG5ldHdvcmtM
b2FkTWV0cmljcy5yZXNwb25zZUJvZHlEZWNvZGVkU2l6ZSA9IDA7CisgICAgICAgIHdlYWtUaGlz
LT5kaWRGaW5pc2hMb2FkaW5nKG5ldHdvcmtMb2FkTWV0cmljcyk7CisgICAgfSk7CisgICAgZGlk
Q29tcGxldGUoKTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6
bG9hZEZyb21OZXR3b3JrKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrTG9hZFBhcmFt
ZXRlcnMmJiBwYXJhbWV0ZXJzKQoreworICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJT
ZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6bG9hZEZyb21OZXR3b3JrICVwIiwgdGhp
cyk7CisKKyAgICBtX25ldHdvcmtMb2FkID0gbWFrZVVuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMs
IG51bGxwdHIsIFdURk1vdmUocGFyYW1ldGVycyksIHNlc3Npb24pOworICAgIG1fbmV0d29ya0xv
YWQtPnN0YXJ0KCk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6
OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlUmVx
dWVzdCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UpCit7CisgICAgZGlkUmVjZWl2ZVJl
c3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBbXShhdXRvKSB7IH0pOworICAgIGRpZENvbXBsZXRl
KCk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2Vp
dmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxldGlv
bkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBSRUxFQVNFX0xPRyhTZXJ2aWNl
V29ya2VyLCAiU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVSZXNw
b25zZSAlcCIsIHRoaXMpOworCisgICAgaWYgKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0g
MzA0ICYmIG1fY2FjaGVFbnRyeSkgeworICAgICAgICBhdXRvIGNhY2hlRW50cnkgPSBXVEZNb3Zl
KG1fY2FjaGVFbnRyeSk7CisgICAgICAgIGxvYWRXaXRoQ2FjaGVFbnRyeSgqY2FjaGVFbnRyeSk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6SWdub3JlKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIG1fcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKTsK
KyAgICBtX3Jlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKTsKKworICAgIGlmIChtX3Jlc3BvbnNlQ2FsbGJhY2spIHsKKyAgICAgICAgYXV0byBjYWxs
YmFjayA9IHN0ZDo6ZXhjaGFuZ2UobV9yZXNwb25zZUNhbGxiYWNrLCB7IH0pOworICAgICAgICBj
YWxsYmFjaygpOworICAgIH0KK30KKwordm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxv
YWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJl
cG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCit7CisgICAgaWYgKG1fYm9keUNhbGxiYWNrKQorICAg
ICAgICBtX2JvZHlDYWxsYmFjayhXVEZNb3ZlKGJ1ZmZlciksIHJlcG9ydGVkRW5jb2RlZERhdGFM
ZW5ndGgpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRG
aW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNz
KQoreworICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJTZXJ2aWNlV29ya2VyTmF2aWdh
dGlvblByZWxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyAlcCIsIHRoaXMpOworCisgICAgbV9uZXR3
b3JrTG9hZE1ldHJpY3MgPSBuZXR3b3JrTG9hZE1ldHJpY3M7CisgICAgZGlkQ29tcGxldGUoKTsK
K30KKwordm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6ZGlkRmFpbExvYWRp
bmcoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCit7CisgICAgUkVMRUFTRV9MT0coU2Vydmlj
ZVdvcmtlciwgIlNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpkaWRGYWlsTG9hZGlu
ZyAlcCIsIHRoaXMpOworCisgICAgbV9lcnJvciA9IGVycm9yOworICAgIGRpZENvbXBsZXRlKCk7
Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZENvbXBsZXRl
KCkKK3sKKyAgICBtX25ldHdvcmtMb2FkID0gbnVsbHB0cjsKKworICAgIGlmIChtX3Jlc3BvbnNl
Q2FsbGJhY2spIHsKKyAgICAgICAgYXV0byBjYWxsYmFjayA9IHN0ZDo6ZXhjaGFuZ2UobV9yZXNw
b25zZUNhbGxiYWNrLCB7IH0pOworICAgICAgICBjYWxsYmFjaygpOworICAgIH0KKworICAgIGlm
IChtX2JvZHlDYWxsYmFjaykKKyAgICAgICAgbV9ib2R5Q2FsbGJhY2soeyB9LCAwKTsKK30KKwor
dm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6d2FpdEZvclJlc3BvbnNlKFJl
c3BvbnNlQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIW1fZXJyb3IuaXNOdWxsKCkp
IHsKKyAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlm
IChtX3Jlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIpIHsKKyAgICAgICAgY2FsbGJhY2soKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fcmVzcG9uc2VDYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjp3
YWl0Rm9yQm9keShCb2R5Q2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIW1fZXJyb3Iu
aXNOdWxsKCkpIHsKKyAgICAgICAgY2FsbGJhY2soeyB9LCAwKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIEFTU0VSVCghbV9yZXNwb25zZS5pc051bGwoKSk7CisgICAgQVNTRVJUKG1f
cmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciB8fCAhbV9uZXR3b3JrTG9hZCk7CisgICAgaWYgKCFt
X25ldHdvcmtMb2FkKSB7CisgICAgICAgIGNhbGxiYWNrKHsgfSwgMCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgaWYgKG1fcmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAg
bV9yZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6VXNlKTsKKyAgICBtX2Jv
ZHlDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdh
dGlvblByZWxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGFmY2Iw
NzA3ZGFlZDY3ZjBhMjc3OTY3ZDVlYzQ3MmRjMGZlMGM5NwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2
aWdhdGlvblByZWxvYWRlci5oCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKworI2luY2x1ZGUgIk5ldHdvcmtD
YWNoZUVudHJ5LmgiCisjaW5jbHVkZSAiTmV0d29ya0xvYWRDbGllbnQuaCIKKyNpbmNsdWRlIDx3
dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBOZXR3b3JrTG9hZE1l
dHJpY3M7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXR3b3JrTG9hZDsKK2Ns
YXNzIE5ldHdvcmtMb2FkUGFyYW1ldGVyczsKK2NsYXNzIE5ldHdvcmtTZXNzaW9uOworCitjbGFz
cyBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlciBmaW5hbCA6IHB1YmxpYyBOZXR3b3Jr
TG9hZENsaWVudCwgcHVibGljIENhbk1ha2VXZWFrUHRyPFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9u
UHJlbG9hZGVyPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIoTmV0d29ya1Nlc3Npb24mLCBOZXR3b3Jr
TG9hZFBhcmFtZXRlcnMmJik7CisgICAgflNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVy
KCk7CisKKyAgICB2b2lkIGNhbmNlbCgpOworCisgICAgdXNpbmcgUmVzcG9uc2VDYWxsYmFjayA9
IEZ1bmN0aW9uPHZvaWQoKT47CisgICAgdm9pZCB3YWl0Rm9yUmVzcG9uc2UoUmVzcG9uc2VDYWxs
YmFjayYmKTsKKyAgICB1c2luZyBCb2R5Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKT47
CisgICAgdm9pZCB3YWl0Rm9yQm9keShCb2R5Q2FsbGJhY2smJik7CisKKyAgICBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3I7IH0KKyAg
ICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVzcG9uc2U7IH0KKyAgICBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3Mm
IG5ldHdvcmtMb2FkTWV0cmljcygpIGNvbnN0IHsgcmV0dXJuIG1fbmV0d29ya0xvYWRNZXRyaWNz
OyB9CisKK3ByaXZhdGU6CisgICAgLy8gTmV0d29ya0xvYWRDbGllbnQuCisgICAgdm9pZCBkaWRT
ZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcg
dG90YWxCeXRlc1RvQmVTZW50KSBmaW5hbCB7IH0KKyAgICBib29sIGlzU3luY2hyb25vdXMoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2Vy
Rm9yQ3JlZGVudGlhbHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQg
d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSkgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25I
YW5kbGVyJiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgZmluYWw7Cisg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmlj
cyYpIGZpbmFsOworICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpIGZpbmFsOworCisgICAgdm9pZCBsb2FkV2l0aENhY2hlRW50cnkoTmV0d29ya0Nh
Y2hlOjpFbnRyeSYpOworICAgIHZvaWQgbG9hZEZyb21OZXR3b3JrKE5ldHdvcmtTZXNzaW9uJiwg
TmV0d29ya0xvYWRQYXJhbWV0ZXJzJiYpOworICAgIHZvaWQgZGlkQ29tcGxldGUoKTsKKworICAg
IHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrTG9hZD4gbV9uZXR3b3JrTG9hZDsKKyAgICBXZWFrUHRy
PE5ldHdvcmtTZXNzaW9uPiBtX3Nlc3Npb247CisgICAgYm9vbCBtX2lzQ2FuY2VsbGVkIHsgZmFs
c2UgfTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBtX2NhY2hl
RW50cnk7CisgICAgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzIG1fbmV0d29ya0xvYWRNZXRy
aWNzOworICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKKyAgICBSZXNw
b25zZUNvbXBsZXRpb25IYW5kbGVyIG1fcmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcjsKKyAgICBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yIG1fZXJyb3I7CisKKyAgICBSZXNwb25zZUNhbGxiYWNrIG1f
cmVzcG9uc2VDYWxsYmFjazsKKyAgICBCb2R5Q2FsbGJhY2sgbV9ib2R5Q2FsbGJhY2s7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCBlMzM1MDkw
YWZhODNiYjhjOTlmYTJhYmQ1YTQyNDcwOGU1NmRiYWI1Li4zNjhkMzhmNWQ2MzYzOGNiOTlkOGI3
MGJlZDAzMWIyZWRkM2UxMWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
LmNwcApAQCAtMTg0LDkgKzE4NCw4IEBAIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrPiBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmNyZWF0ZUZldGNoVGFzayhOCiAgICAgfQog
CiAgICAgYXV0byogcmVnaXN0cmF0aW9uID0gc2VydmVyKCkuZ2V0UmVnaXN0cmF0aW9uKCpzZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7Ci0gICAgYm9vbCBzaG91bGRTb2Z0VXBk
YXRlID0gcmVnaXN0cmF0aW9uICYmIHJlZ2lzdHJhdGlvbi0+c2hvdWxkU29mdFVwZGF0ZShsb2Fk
ZXIucGFyYW1ldGVycygpLm9wdGlvbnMpOwogICAgIGlmICh3b3JrZXItPnNob3VsZFNraXBGZXRj
aEV2ZW50KCkpIHsKLSAgICAgICAgaWYgKHNob3VsZFNvZnRVcGRhdGUpCisgICAgICAgIGlmIChy
ZWdpc3RyYXRpb24gJiYgcmVnaXN0cmF0aW9uLT5zaG91bGRTb2Z0VXBkYXRlKGxvYWRlci5wYXJh
bWV0ZXJzKCkub3B0aW9ucykpCiAgICAgICAgICAgICByZWdpc3RyYXRpb24tPnNjaGVkdWxlU29m
dFVwZGF0ZShsb2FkZXIuaXNBcHBJbml0aWF0ZWQoKSA/IFdlYkNvcmU6OklzQXBwSW5pdGlhdGVk
OjpZZXMgOiBXZWJDb3JlOjpJc0FwcEluaXRpYXRlZDo6Tm8pOwogCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwpAQCAtMTk3LDcgKzE5Niw4IEBAIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrPiBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmNyZWF0ZUZldGNoVGFzayhOCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8gdGFzayA9IG1ha2VVbmlxdWU8
U2VydmljZVdvcmtlckZldGNoVGFzaz4oKnRoaXMsIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0IHsg
cmVxdWVzdCB9LCBpZGVudGlmaWVyKCksIHdvcmtlci0+aWRlbnRpZmllcigpLCAqc2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIHNob3VsZFNvZnRVcGRhdGUpOworICAgIGJvb2wg
aXNXb3JrZXJSZWFkeSA9IHdvcmtlci0+aXNSdW5uaW5nKCkgJiYgd29ya2VyLT5zdGF0ZSgpID09
IFNlcnZpY2VXb3JrZXJTdGF0ZTo6QWN0aXZhdGVkOworICAgIGF1dG8gdGFzayA9IG1ha2VVbmlx
dWU8U2VydmljZVdvcmtlckZldGNoVGFzaz4oKnRoaXMsIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0
IHsgcmVxdWVzdCB9LCBpZGVudGlmaWVyKCksIHdvcmtlci0+aWRlbnRpZmllcigpLCAqcmVnaXN0
cmF0aW9uLCBzZXNzaW9uKCksIGlzV29ya2VyUmVhZHkpOwogICAgIHN0YXJ0RmV0Y2goKnRhc2ss
ICp3b3JrZXIpOwogICAgIHJldHVybiB0YXNrOwogfQpAQCAtNTAzLDcgKzUwMywxMiBAQCBQQUw6
OlNlc3Npb25JRCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnNlc3Npb25JRCgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIHNlcnZlcigpLnNlc3Npb25JRCgpOwogfQotICAgIAorCitOZXR3b3JrU2Vzc2lv
biogV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzZXNzaW9uKCkKK3sKKyAgICByZXR1cm4gbV9uZXR3
b3JrUHJvY2Vzcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKCkpOworfQorCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBVPiB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c2VuZFRvQ29udGV4dFByb2Nl
c3MoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBVJiYg
bWVzc2FnZSkKIHsKICAgICBzdGF0aWNfY2FzdDxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24mPihjb25uZWN0aW9uKS5zZW5kKFdURk1vdmUobWVzc2FnZSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVj
dGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyQ29ubmVjdGlvbi5oCmluZGV4IDI2ODU1NTRmOWZlY2RkNDUxZWE2ZDc2ODgxNDI0NTk5
NDgxYTdjYWIuLjI5NjZlMDU2ODhhNmIzZmFkNjRkNjgyNDQ2OTliYmM0MzM2Nzg3NmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTc1LDcgKzc1LDggQEAgcHVibGlj
OgogICAgIElQQzo6Q29ubmVjdGlvbiYgaXBjQ29ubmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
Y29udGVudENvbm5lY3Rpb24uZ2V0KCk7IH0KIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7Ci0gICAgCisKKyAgICBOZXR3
b3JrU2Vzc2lvbiogc2Vzc2lvbigpOwogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNv
bnN0OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+IGNyZWF0
ZUZldGNoVGFzayhOZXR3b3JrUmVzb3VyY2VMb2FkZXImLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2Vi
cnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
d2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuaAppbmRleCAwMTNiMTg1ZTZiNDcyNjc1MzM2ZWZi
ODAyYWNmZWZiYWZiMmE4ZDlhLi5kMzgyYjY1YWY3MDhmZWQ5OWQwY2NkNWM5ZDg1ZGRkYWE3NjVj
ZTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3
b3JrTUROU1JlZ2lzdGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJy
dGMvTmV0d29ya01ETlNSZWdpc3Rlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJN
RE5TUmVnaXN0ZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUlRDTmV0d29yay5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvUHJvY2Vzc1F1YWxpZmllZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0
RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggZGMyZGJkNTI2ZDViOGFh
NGU5MTE5MDFiNzIwNDY3ZjBlMjNkMzI5NS4uNDZkMDAxYzUyZGVhMTk3ODdlZTY2N2Y1ZTJlZWNj
Mzg1OTZhYmNmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9T
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0xMzUsNiArMTM1LDcgQEAgTmV0d29ya1Byb2Nl
c3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25D
bGllbnQuY3BwCiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5jcHAKIAogTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBAbm8tdW5pZnkKK05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwCiBO
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVy
LmNwcAogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV09yaWdpblN0b3JlLmNwcCBA
bm8tdW5pZnkKIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uLmNwcCBAbm8tdW5pZnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDY1MmMyYmUzYjhiZjBkNmFjZmRlNzhlYjBjOTAxNTUwYjU5YWQx
NGYuLjZjM2Y1ZTAyZjc5MmNmMzFkZWM2OGI1ODZlOWY3NzA3M2RhZGI2N2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzk5NCw2ICsz
OTk0LDggQEAKIAkJNDFFMjQyREYyNkUwQzkwNDAwOUE4QzY0IC8qIE5ldHdvcmtSVENVdGlsaXRp
ZXNDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5ldHdvcmtSVENVdGlsaXRpZXNDb2Nv
YS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFFNjdBOEMyNUQyQ0ZEMDAwN0Iw
QTRDIC8qIFJlbW90ZVJlYWx0aW1lQXVkaW9Tb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3Rl
UmVhbHRpbWVBdWRpb1NvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUU2
N0E4RDI1RDJDRkQwMDA3QjBBNEMgLyogUmVtb3RlUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZW1vdGVSZWFsdGltZUF1ZGlvU291cmNlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFFQjREM0EyNzRDRTA0NTAwQTkyNzJCIC8qIFNlcnZpY2VX
b3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJO
YXZpZ2F0aW9uUHJlbG9hZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxRUI0
RDNCMjc0Q0UwNDUwMEE5MjcyQiAvKiBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRjA2MEREMTY1NDMxNzUwMEYzMjgx
QyAvKiBXZWJTb2NrZXRDaGFubmVsTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IFdlYlNvY2tldENoYW5uZWxNZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNv
dXJjZXMvV2ViS2l0Mi9XZWJTb2NrZXRDaGFubmVsTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNDFGOUZEMTgyM0VEOEE4MTAwOTlCNTc5
IC8qIExpYldlYlJUQ1Jlc29sdmVySWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBMaWJXZWJSVENSZXNvbHZlcklkZW50aWZpZXIuaDsgcGF0aCA9IE5ldHdvcmsv
d2VicnRjL0xpYldlYlJUQ1Jlc29sdmVySWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MUZBQkQyODFGNERERkRDMDA2QTZDOTcgLyogQ2FjaGVTdG9yYWdlRW5naW5l
Q2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVTdG9yYWdlRW5n
aW5lQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMTM4LDYgKzEwMTQw
LDggQEAKIAkJCQk0MTUxODUzNjIyMjcwNEY2MDA1NDMwQzYgLyogU2VydmljZVdvcmtlckZldGNo
VGFzay5jcHAgKi8sCiAJCQkJNDE1MTg1MzUyMjI3MDRGNTAwNTQzMEM2IC8qIFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2suaCAqLywKIAkJCQk0MTUxODUzODIyMjcwRjUzMDA1NDMwQzYgLyogU2Vydmlj
ZVdvcmtlckZldGNoVGFzay5tZXNzYWdlcy5pbiAqLywKKwkJCQk0MUVCNEQzQjI3NENFMDQ1MDBB
OTI3MkIgLyogU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuY3BwICovLAorCQkJCTQx
RUI0RDNBMjc0Q0UwNDUwMEE5MjcyQiAvKiBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRl
ci5oICovLAogCQkJCTQxRDVDNkQ5MjM4RUIyMEUwMEI5QjNDQiAvKiBTZXJ2aWNlV29ya2VyU29m
dFVwZGF0ZUxvYWRlci5jcHAgKi8sCiAJCQkJNDFENUM2RDgyMzhFQjIwRDAwQjlCM0NCIC8qIFNl
cnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmggKi8sCiAJCQkJOTNCQTA0REYyMTUxQURGNDAw
N0Y0NTVGIC8qIFdlYlNXT3JpZ2luU3RvcmUuY3BwICovLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDYwMWFmMjBjMzNjZTgx
ZjhhMjgxYzg5MTliNjZjOWNjYjYyZWUyYTguLjZmNjVmOGIwNzgxMzk0MDk4MTc3YTAxMjhmNmNi
ZDBkNjFlZWRlYzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0xMS0yNiAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgUHJlbG9hZCBuYXZpZ2F0aW9uIHJl
cXVlc3QgaWYgdGhlIHNlcnZpY2Ugd29ya2VyIGlzIG5vdCBpbW1lZGlhdGVseSByZWFkeSB0byBo
YW5kbGUgdGhlIG5hdmlnYXRpb24gcmVxdWVzdCBmZXRjaCBldmVudAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDcxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtl
cnMvcmVzb3VyY2VzL3NlcnZpY2Utd29ya2VyLXByZWxvYWQtd2hlbi1ub3QtYWN0aXZhdGVkLXNj
cmlwdC5weTogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZp
Y2Utd29ya2VyLXByZWxvYWQtd2hlbi1ub3QtYWN0aXZhdGVkLXdvcmtlci5qczogQWRkZWQuCisg
ICAgICAgICogaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXByZWxvYWQt
d2hlbi1ub3QtYWN0aXZhdGVkLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
aHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXByZWxvYWQtd2hlbi1ub3Qt
YWN0aXZhdGVkLmh0dHBzLmh0bWw6IEFkZGVkLgorCiAyMDIxLTExLTI1ICBTYW0gV2VpbmlnICA8
d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ1NTIENvbG9yIDRdIEFkZCBzdXBwb3J0IGZv
ciBuZXcgc3JnYi1saW5lYXIsIHh5ei1kNTAgYW5kIHh5ei1kNjUgY29sb3JzcGFjZXMKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvc2Vy
dmljZS13b3JrZXItcHJlbG9hZC13aGVuLW5vdC1hY3RpdmF0ZWQtc2NyaXB0LnB5IGIvTGF5b3V0
VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy9zZXJ2aWNlLXdvcmtlci1w
cmVsb2FkLXdoZW4tbm90LWFjdGl2YXRlZC1zY3JpcHQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzgxZTE3MmUy
NGY2ZThiZDMzYjAxOWE3ZGI3MjFkMzJiODBmMzFlZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvc2VydmljZS13b3JrZXIt
cHJlbG9hZC13aGVuLW5vdC1hY3RpdmF0ZWQtc2NyaXB0LnB5CkBAIC0wLDAgKzEsMjQgQEAKK2lt
cG9ydCBvcworaW1wb3J0IGhhc2hsaWIKK2ltcG9ydCBqc29uCisKKworZGVmIG1haW4ocmVxdWVz
dCwgcmVzcG9uc2UpOgorICAgIHRva2VuID0gcmVxdWVzdC5HRVRbYid0b2tlbiddCisgICAgdGVz
dElkID0gaGFzaGxpYi5tZDUodG9rZW4pLmhleGRpZ2VzdCgpCisKKyAgICBpZiByZXF1ZXN0Lm1l
dGhvZCA9PSAiUE9TVCI6CisgICAgICAgIHJlcXVlc3Quc2VydmVyLnN0YXNoLnRha2UodGVzdElk
KQorICAgICAgICByZXF1ZXN0LnNlcnZlci5zdGFzaC5wdXQodGVzdElkLCByZXF1ZXN0LkdFVFti
J3ZhbHVlJ10pCisgICAgICAgIHJlc3BvbnNlLmhlYWRlcnMuc2V0KGIiQ29udGVudC1UeXBlIiwg
YiJ0ZXh0L2FzY2lpIikKKyAgICAgICAgcmV0dXJuIGIidXBkYXRlZCB0byAiICsgcmVxdWVzdC5H
RVRbYid2YWx1ZSddCisKKyAgICB2YWx1ZSA9IHJlcXVlc3Quc2VydmVyLnN0YXNoLnRha2UodGVz
dElkKQorICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgcmVzcG9uc2UuaGVhZGVycy5zZXQoYiJD
YWNoZS1Db250cm9sIiwgYiJuby1jYWNoZSIpCisgICAgICAgIHJlc3BvbnNlLmhlYWRlcnMuc2V0
KGIiQ29udGVudC1UeXBlIiwgYiJ0ZXh0L2FzY2lpIikKKyAgICAgICAgcmV0dXJuICJub3RoaW5n
IgorCisgICAgcmVzcG9uc2UuaGVhZGVycy5zZXQoYiJDYWNoZS1Db250cm9sIiwgYiJuby1jYWNo
ZSIpCisgICAgcmVzcG9uc2UuaGVhZGVycy5zZXQoYiJDb250ZW50LVR5cGUiLCBiInRleHQvaHRt
bCIpCisgICAgcmV0dXJuICI8aHRtbD48Ym9keT48c2NyaXB0PndpbmRvdy52YWx1ZSA9ICclcyc7
PC9zY3JpcHQ+PC9ib2R5PjwvaHRtbD4iICUgdmFsdWUuZGVjb2RlKCkKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1wcmVsb2Fk
LXdoZW4tbm90LWFjdGl2YXRlZC13b3JrZXIuanMgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2
aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItcHJlbG9hZC13aGVuLW5vdC1hY3RpdmF0ZWQtd29y
a2VyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmJjYWI5MzUwYWM1NDY5NTlkNzExMzZiYWIyMTFhZjA2MTJmMDBi
ZWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtl
cnMvc2VydmljZS13b3JrZXItcHJlbG9hZC13aGVuLW5vdC1hY3RpdmF0ZWQtd29ya2VyLmpzCkBA
IC0wLDAgKzEsMjggQEAKK29uaW5zdGFsbCA9IChldmVudCkgPT4geworICAgIGlmIChzZWxmLnBv
cnQpCisgICAgICAgIHJldHVybjsKKyAgICBldmVudC53YWl0VW50aWwobmV3IFByb21pc2UocmVz
b2x2ZSA9PiBzZWxmLmluc3RhbGxpbmdQcm9taXNlUmVzb2x2ZSA9IHJlc29sdmUpKTsKK30KKwor
b25tZXNzYWdlID0gKGV2ZW50KSA9PiB7CisgICAgaWYgKGV2ZW50LmRhdGEucG9ydCkKKyAgICAg
ICAgc2VsZi5wb3J0ID0gZXZlbnQuZGF0YS5wb3J0OworICAgIGlmIChzZWxmLmluc3RhbGxpbmdQ
cm9taXNlUmVzb2x2ZSkgeworICAgICAgICBzZWxmLmluc3RhbGxpbmdQcm9taXNlUmVzb2x2ZSgp
OworICAgICAgICBzZWxmLmluc3RhbGxpbmdQcm9taXNlUmVzb2x2ZSA9IG51bGw7CisgICAgfQor
ICAgIGlmIChzZWxmLmFjdGl2YXRpbmdQcm9taXNlUmVzb2x2ZSkgeworICAgICAgICBzZWxmLmFj
dGl2YXRpbmdQcm9taXNlUmVzb2x2ZSgpOworICAgICAgICBzZWxmLmFjdGl2YXRpbmdQcm9taXNl
UmVzb2x2ZSA9IG51bGw7CisgICAgfQorfTsKKworb25hY3RpdmF0ZSA9IChldmVudCkgPT4gewor
ICAgIGV2ZW50LndhaXRVbnRpbChuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNlbGYuYWN0aXZhdGlu
Z1Byb21pc2VSZXNvbHZlID0gcmVzb2x2ZSkpOworICAgIHNlbGYucG9ydC5wb3N0TWVzc2FnZSgi
YWN0aXZhdGluZyIpOworfQorCitzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKCkgPT4g
eworICAgIGlmIChzZWxmLnBvcnQpCisgICAgICAgIHNlbGYucG9ydC5wb3N0TWVzc2FnZSgiZmV0
Y2hpbmciKTsKK30pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13
b3JrZXJzL3NlcnZpY2Utd29ya2VyLXByZWxvYWQtd2hlbi1ub3QtYWN0aXZhdGVkLmh0dHBzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNl
LXdvcmtlci1wcmVsb2FkLXdoZW4tbm90LWFjdGl2YXRlZC5odHRwcy1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uN2VmMmFkZjliMDFjMjlhMjBhZWRhNDUyZTA0Y2M2MGExZTczN2RhNQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNl
LXdvcmtlci1wcmVsb2FkLXdoZW4tbm90LWFjdGl2YXRlZC5odHRwcy1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw1IEBACisKKworUEFTUyBTZXR1cCBhY3RpdmF0aW5nIHdvcmtlcgorUEFTUyBTZXJ2
aWNlIHdvcmtlciBsb2FkIHVzZXMgcHJlbG9hZCBpZiBhdmFpbGFibGUgYW5kIGZldGNoIGV2ZW50
IHdhcyBub3QgaGFuZGxlZAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2
aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItcHJlbG9hZC13aGVuLW5vdC1hY3RpdmF0ZWQuaHR0
cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdv
cmtlci1wcmVsb2FkLXdoZW4tbm90LWFjdGl2YXRlZC5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYz
ZmE2MGU0ZWU1M2M2MDY0N2U0NjNkZjBiMWE2NDdkOTE1Mjc0YTEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItcHJl
bG9hZC13aGVuLW5vdC1hY3RpdmF0ZWQuaHR0cHMuaHRtbApAQCAtMCwwICsxLDcyIEBACis8IWRv
Y3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL2NvbW1vbi91dGlscy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JvdXRpbmVzLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK3ZhciBhY3RpdmVXb3JrZXI7Cit2YXIgdXVpZCA9IHRv
a2VuKCk7Cit2YXIgdXJsID0gIi9XZWJLaXQvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy9zZXJ2
aWNlLXdvcmtlci1wcmVsb2FkLXdoZW4tbm90LWFjdGl2YXRlZC1zY3JpcHQucHk/dG9rZW49IiAr
IHV1aWQ7Cit2YXIgZnJhbWU7Citjb25zdCBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7
CisKK2Z1bmN0aW9uIHdhaXRVbnRpbEFjdGl2YXRpbmcoKQoreworICAgIHJldHVybiBuZXcgUHJv
bWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAgY2hhbm5lbC5wb3J0Mi5vbm1lc3NhZ2UgPSAoZXZl
bnQpID0+IHsKKyAgICAgICAgICAgIGlmIChldmVudC5kYXRhID09PSAiYWN0aXZhdGluZyIpCisg
ICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICB9OworICAgIH0pOworfQorCitmdW5j
dGlvbiB0cmlnZ2VyQWN0aXZhdGlvbigpCit7CisgICAgYWN0aXZlV29ya2VyLnBvc3RNZXNzYWdl
KCJhY3RpdmF0ZSIpOworfQorCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRVc2VTZXBhcmF0
ZVNlcnZpY2VXb3JrZXJQcm9jZXNzKHRydWUpOworICAgICAgICBhd2FpdCBmZXRjaCgiIikudGhl
bigoKSA9PiB7IH0sICgpID0+IHsgfSk7CisgICAgfQorCisgICAgbGV0IHJlZ2lzdHJhdGlvbiA9
IGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCIvV2ViS2l0L3NlcnZpY2Ut
d29ya2Vycy9zZXJ2aWNlLXdvcmtlci1wcmVsb2FkLXdoZW4tbm90LWFjdGl2YXRlZC13b3JrZXIu
anMiLCB7IHNjb3BlIDogdXJsIH0pOworICAgIGlmICghcmVnaXN0cmF0aW9uLmluc3RhbGxpbmcp
IHsKKyAgICAgICAgcmVnaXN0cmF0aW9uLnVucmVnaXN0ZXIoKTsKKyAgICAgICAgcmVnaXN0cmF0
aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoIi9XZWJLaXQvc2Vy
dmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXByZWxvYWQtd2hlbi1ub3QtYWN0aXZhdGVkLXdv
cmtlci5qcyIsIHsgc2NvcGUgOiB1cmwgfSk7CisgICAgfQorCisgICAgYWN0aXZlV29ya2VyID0g
cmVnaXN0cmF0aW9uLmluc3RhbGxpbmc7CisgICAgYWN0aXZlV29ya2VyLnBvc3RNZXNzYWdlKHsg
cG9ydDogY2hhbm5lbC5wb3J0MSB9LCBbY2hhbm5lbC5wb3J0MV0pOworCisgICAgcmV0dXJuIHdh
aXRVbnRpbEFjdGl2YXRpbmcoKTsKK30sICJTZXR1cCBhY3RpdmF0aW5nIHdvcmtlciIpOworCitw
cm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICAvLyBTZXQgdmFsdWUgdG8gJ2JlZm9y
ZS1uYXZpZ2F0aW9uJworICAgIGF3YWl0IGZldGNoKHVybCArICImdmFsdWU9YmVmb3JlLW5hdmln
YXRpb24iLCB7IG1ldGhvZDogJ1BPU1QnIH0pOworCisgICAgLy8gU3RhcnQgbG9hZGluZyBpZnJh
bWUsIHdpdGggYWN0aXZhdGluZyB3b3JrZXIsIHNvIG9ubHkgcHJlbG9hZCB3aWxsIHN0YXJ0Lgor
ICAgIGNvbnN0IGlmcmFtZVByb21pc2UgPSB3aXRoSWZyYW1lKHVybCk7CisKKyAgICAvLyBXYWl0
IGEgbGl0dGxlIGJpdCB0byBkbyBhIGZldGNoLiBUaGlzIGZldGNoIHNob3VsZCBoYXBwZW4gYWZ0
ZXIgdGhlIHByZWxvYWQgYW5kIHNob3VsZCByZWNlaXZlIGEgJ25vdGhpbmcnIGJvZHkuCisgICAg
YXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDEwMCkpOwor
ICAgIGNvbnN0IGZldGNoUHJvbWlzZSA9IGZldGNoKHVybCk7CisKKyAgICAvLyBUcmlnZ2VyIGFj
dGl2YXRpb24gdG8gc3RhcnQgdGhlIGZldGNoIGV2ZW50IGhhbmRsZXIsIHdoaWNoIHdpbGwgZG8g
bm90aGluZyBzbyB3ZSB3aWxsIHVzZSB0aGUgcHJlbG9hZC4KKyAgICB0cmlnZ2VyQWN0aXZhdGlv
bigpOworCisgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaFByb21pc2U7CisgICAgYXNz
ZXJ0X2VxdWFscyhhd2FpdCByZXNwb25zZS50ZXh0KCksICJub3RoaW5nIik7CisKKyAgICBjb25z
dCBmcmFtZSA9IGF3YWl0IGlmcmFtZVByb21pc2U7CisgICAgYXNzZXJ0X2VxdWFscyhmcmFtZS5j
b250ZW50V2luZG93LnZhbHVlLCAiYmVmb3JlLW5hdmlnYXRpb24iKTsKK30sICJTZXJ2aWNlIHdv
cmtlciBsb2FkIHVzZXMgcHJlbG9hZCBpZiBhdmFpbGFibGUgYW5kIGZldGNoIGV2ZW50IHdhcyBu
b3QgaGFuZGxlZCIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445394</attachid>
            <date>2021-11-30 01:30:44 -0800</date>
            <delta_ts>2021-11-30 02:48:13 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-233471-20211130103042.patch</filename>
            <type>text/plain</type>
            <size>43883</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2Mjg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGNhNWU1ZDlhZmJmZDM5
MTJjMjVhZGJhMWVhY2QxMTVlM2E3YTU1Yy4uYjQ3OTk0ZmFmODA5OWMwNDE1ODEyOWZiMTg3MzMy
ZjBkOTc2ZTFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTExLTMwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBQcmVsb2FkIG5hdmlnYXRp
b24gcmVxdWVzdCBpZiB0aGUgc2VydmljZSB3b3JrZXIgaXMgbm90IGltbWVkaWF0ZWx5IHJlYWR5
IHRvIGhhbmRsZSB0aGUgbmF2aWdhdGlvbiByZXF1ZXN0IGZldGNoIGV2ZW50CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM0NzEKKworICAgICAgICBS
ZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICBBZGQgYSBoZWxwZXIgcm91dGluZS4K
KworICAgICAgICAqIGxvYWRlci9GZXRjaE9wdGlvbnMuaDoKKwogMjAyMS0xMS0zMCAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBUcmFuc2Zvcm1TdHJl
YW1BUElFbmFibGVkIGZsYWcgdG8gU2V0dGluZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZmViNGRkNzVjM2FjMTg5
ZTNjYmU4M2QwN2I5MDg3MjQyOGViNGE0YS4uZDE4MTU3OWM3YmE2ZDNiNWFmMGE5ZDVhMzIwNmM2
NmQ5YzIzOTAyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAyMS0xMS0zMCAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgUHJlbG9hZCBuYXZpZ2F0aW9u
IHJlcXVlc3QgaWYgdGhlIHNlcnZpY2Ugd29ya2VyIGlzIG5vdCBpbW1lZGlhdGVseSByZWFkeSB0
byBoYW5kbGUgdGhlIG5hdmlnYXRpb24gcmVxdWVzdCBmZXRjaCBldmVudAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNDcxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgTGF1bmNoaW5nIGEgc2VydmljZSB3b3Jr
ZXIgbWlnaHQgdGFrZSB0aW1lIGR1ZSB0byBwYXJzaW5nIGFuZCBydW5uaW5nIHRoZSBzZXJ2aWNl
IHdvcmtlciBzY3JpcHQuCisgICAgICAgIFRoaXMgbWlnaHQgZGVsYXkgbmF2aWdhdGlvbiBsb2Fk
cywgZXNwZWNpYWxseSBpZiB0aGUgc2VydmljZSB3b3JrZXIgaXMgcGFzcyB0aHJvdWdoIG9uIHRo
ZXNlIGxvYWRzLgorICAgICAgICBUbyBvcHRpbWl6ZSB0aGlzIGNvZGUgcGF0aCwgd2UgcHJlbG9h
ZCB0aGUgbmF2aWdhdGlvbiByZXF1ZXN0IGluIGNhc2Ugc2VydmljZSB3b3JrZXIgaXMgbm90IHJ1
bm5pbmcgb3Igbm90IHlldCBhY3RpdmF0ZWQuCisgICAgICAgIFdlIHRoZW4gd2FpdCBmb3IgdGhl
IHNlcnZpY2Ugd29ya2VyIHRvIGhhbmRsZSB0aGUgZmV0Y2ggZXZlbnQsIHdoaWNoIHdpbGwgdGVs
bCB1cyB0byBlaXRoZXIgZ28gdG8gdGhlIG5ldHdvcmssIGluIHdoaWNoCisgICAgICAgIGNhc2Ug
d2UgdXNlIHRoZSBwcmVsb2FkLCBvciB3aWxsIHByb3ZpZGUgaXRzIG93biByZXNwb25zZSBpbiB3
aGljaCBjYXNlIHdlIHVzZSBpdCBhbmQgY2FuY2VsIHRoZSBwcmVsb2FkLgorCisgICAgICAgIFRl
c3Q6IGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1wcmVsb2FkLXdoZW4t
bm90LWFjdGl2YXRlZC5odHRwcy5odG1sCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVs
b2FkZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmg6IEFkZGVkLgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlv
bi5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lzdGVy
Lmg6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisKIDIwMjEtMTEtMzAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB1bm5lY2Vzc2FyeSBzZXJ2aWNlIHdvcmtlciBwYWdl
IHNldHRpbmdzIGhhbmRsaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRmV0
Y2hPcHRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRmV0Y2hPcHRpb25zLmgKaW5kZXgg
ZmM4MjI3NDIwMWI5NDQ0NmVmNzM2ZDQzMTdkMTZlNGU2NTBiYzNiZi4uMTViOTU3MzkzNjBhMzg2
N2U2ODJiZmUwYzczYzE2MjVlZjk3MzNjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZldGNoT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GZXRjaE9wdGlv
bnMuaApAQCAtODEsNiArODEsMTUgQEAgaW5saW5lIGJvb2wgaXNQb3RlbnRpYWxOYXZpZ2F0aW9u
T3JTdWJyZXNvdXJjZVJlcXVlc3QoRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbgogICAgICAgICB8
fCBkZXN0aW5hdGlvbiA9PSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpFbWJlZDsKIH0KIAor
Ly8gaHR0cHM6Ly9mZXRjaC5zcGVjLndoYXR3Zy5vcmcvI25hdmlnYXRpb24tcmVxdWVzdAoraW5s
aW5lIGJvb2wgaXNOYXZpZ2F0aW9uUmVxdWVzdChGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uIGRl
c3RpbmF0aW9uKQoreworICAgIHJldHVybiBkZXN0aW5hdGlvbiA9PSBGZXRjaE9wdGlvbnM6OkRl
c3RpbmF0aW9uOjpEb2N1bWVudAorICAgICAgICB8fCBkZXN0aW5hdGlvbiA9PSBGZXRjaE9wdGlv
bnM6OkRlc3RpbmF0aW9uOjpJZnJhbWUKKyAgICAgICAgfHwgZGVzdGluYXRpb24gPT0gRmV0Y2hP
cHRpb25zOjpEZXN0aW5hdGlvbjo6T2JqZWN0CisgICAgICAgIHx8IGRlc3RpbmF0aW9uID09IEZl
dGNoT3B0aW9uczo6RGVzdGluYXRpb246OkVtYmVkOworfQorCiAvLyBodHRwczovL2ZldGNoLnNw
ZWMud2hhdHdnLm9yZy8jbm9uLXN1YnJlc291cmNlLXJlcXVlc3QKIGlubGluZSBib29sIGlzTm9u
U3VicmVzb3VyY2VSZXF1ZXN0KEZldGNoT3B0aW9uczo6RGVzdGluYXRpb24gZGVzdGluYXRpb24p
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKaW5kZXggZTJiZjU4
ZDcxMjY0Y2I4N2NmMTIzOTllMjU3ZTg1MDk5NTZjOTljMS4uYTg0MWIwYTkxNmRkOWQ3ZTUxNjVm
ZTdlNmYzNmY5OWU3M2JlNDA4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRl
ICJOZXR3b3JrUHJvY2Vzcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRlci5oIgor
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgiCiAjaW5jbHVkZSAi
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENv
ZGVycy5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZGVyTWVzc2FnZXMuaCIKQEAgLTQ5LDcg
KzUwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
Ci1TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKFdlYlNXU2Vy
dmVyQ29ubmVjdGlvbiYgc3dTZXJ2ZXJDb25uZWN0aW9uLCBOZXR3b3JrUmVzb3VyY2VMb2FkZXIm
IGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU1dTZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgU2VydmljZVdvcmtlcklkZW50aWZp
ZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVu
dGlmaWVyIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBib29sIHNob3VsZFNv
ZnRVcGRhdGUpCitTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
KFdlYlNXU2VydmVyQ29ubmVjdGlvbiYgc3dTZXJ2ZXJDb25uZWN0aW9uLCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXImIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU1dTZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgU2VydmljZVdvcmtl
cklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNXU2VydmVyUmVnaXN0cmF0aW9u
JiByZWdpc3RyYXRpb24sIE5ldHdvcmtTZXNzaW9uKiBzZXNzaW9uLCBib29sIGlzV29ya2VyUmVh
ZHkpCiAgICAgOiBtX3N3U2VydmVyQ29ubmVjdGlvbihzd1NlcnZlckNvbm5lY3Rpb24pCiAgICAg
LCBtX2xvYWRlcihsb2FkZXIpCiAgICAgLCBtX2ZldGNoSWRlbnRpZmllcihXZWJDb3JlOjpGZXRj
aElkZW50aWZpZXI6OmdlbmVyYXRlKCkpCkBAIC01NywxMSArNTgsMTkgQEAgU2VydmljZVdvcmtl
ckZldGNoVGFzazo6U2VydmljZVdvcmtlckZldGNoVGFzayhXZWJTV1NlcnZlckNvbm5lY3Rpb24m
IHN3U2VydmVyQ28KICAgICAsIG1fc2VydmljZVdvcmtlcklkZW50aWZpZXIoc2VydmljZVdvcmtl
cklkZW50aWZpZXIpCiAgICAgLCBtX2N1cnJlbnRSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCkpCiAg
ICAgLCBtX3RpbWVvdXRUaW1lcigqdGhpcywgJlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnRpbWVv
dXRUaW1lckZpcmVkKQotICAgICwgbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
cihzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcikKLSAgICAsIG1fc2hvdWxkU29m
dFVwZGF0ZShzaG91bGRTb2Z0VXBkYXRlKQorICAgICwgbV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uSWRlbnRpZmllcihyZWdpc3RyYXRpb24uaWRlbnRpZmllcigpKQorICAgICwgbV9zaG91bGRT
b2Z0VXBkYXRlKHJlZ2lzdHJhdGlvbi5zaG91bGRTb2Z0VXBkYXRlKGxvYWRlci5wYXJhbWV0ZXJz
KCkub3B0aW9ucykpCiB7Ci0gICAgU1dGRVRDSF9SRUxFQVNFX0xPRygiU2VydmljZVdvcmtlckZl
dGNoVGFzazogKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyPSUiIFBSSXU2NCAiLCBzZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj0lIiBQUkl1NjQgIiwgc2VydmljZVdvcmtlcklk
ZW50aWZpZXI9JSIgUFJJdTY0ICIpIiwgbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllci50b1VJ
bnQ2NCgpLCBtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLnRvVUludDY0KCks
IG1fc2VydmljZVdvcmtlcklkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgU1dGRVRDSF9SRUxF
QVNFX0xPRygiU2VydmljZVdvcmtlckZldGNoVGFzazogKHNlcnZlckNvbm5lY3Rpb25JZGVudGlm
aWVyPSUiIFBSSXU2NCAiLCBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj0lIiBQ
Ukl1NjQgIiwgc2VydmljZVdvcmtlcklkZW50aWZpZXI9JSIgUFJJdTY0ICIsICVkKSIsIG1fc2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIudG9VSW50NjQoKSwgbV9zZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uSWRlbnRpZmllci50b1VJbnQ2NCgpLCBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyLnRv
VUludDY0KCksIGlzV29ya2VyUmVhZHkpOwogICAgIG1fdGltZW91dFRpbWVyLnN0YXJ0T25lU2hv
dChsb2FkZXIuY29ubmVjdGlvblRvV2ViUHJvY2VzcygpLm5ldHdvcmtQcm9jZXNzKCkuc2Vydmlj
ZVdvcmtlckZldGNoVGltZW91dCgpKTsKKworICAgIC8vIEZJWE1FOiBDb25zaWRlciBleHRlbmRp
bmcgdGhpcyBiYXNlZCBvbiBuYXZpZ2F0aW9uIHByZWxvYWQgbWFuYWdlci4KKyAgICBib29sIHNo
b3VsZERvTmF2aWdhdGlvblByZWxvYWQgPSBzZXNzaW9uICYmIGlzTmF2aWdhdGlvblJlcXVlc3Qo
bG9hZGVyLnBhcmFtZXRlcnMoKS5vcHRpb25zLmRlc3RpbmF0aW9uKSAmJiBsb2FkZXIub3JpZ2lu
YWxSZXF1ZXN0KCkuaHR0cE1ldGhvZCgpID09ICJHRVQiOworICAgIGlmIChzaG91bGREb05hdmln
YXRpb25QcmVsb2FkICYmICFpc1dvcmtlclJlYWR5KSB7CisgICAgICAgIE5ldHdvcmtMb2FkUGFy
YW1ldGVycyBwYXJhbWV0ZXJzID0gbG9hZGVyLnBhcmFtZXRlcnMoKTsKKyAgICAgICAgcGFyYW1l
dGVycy5yZXF1ZXN0ID0gbV9jdXJyZW50UmVxdWVzdDsKKyAgICAgICAgbV9wcmVsb2FkZXIgPSBt
YWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyPigqc2Vzc2lvbiwgV1RG
TW92ZShwYXJhbWV0ZXJzKSk7CisgICAgfQogfQogCiBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjp+
U2VydmljZVdvcmtlckZldGNoVGFzaygpCkBAIC02OSw2ICs3OCw4IEBAIFNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2s6On5TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKCkKICAgICBTV0ZFVENIX1JFTEVBU0Vf
TE9HKCJ+U2VydmljZVdvcmtlckZldGNoVGFzazoiKTsKICAgICBpZiAobV9zZXJ2aWNlV29ya2Vy
Q29ubmVjdGlvbikKICAgICAgICAgbV9zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbi0+dW5yZWdpc3Rl
ckZldGNoKCp0aGlzKTsKKworICAgIGNhbmNlbFByZWxvYWRJZk5lY2Vzc2FyeSgpOwogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBNZXNzYWdlPiBib29sIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnNl
bmRUb1NlcnZpY2VXb3JrZXIoTWVzc2FnZSYmIG1lc3NhZ2UpCkBAIC0xMTksMjggKzEzMCw0MyBA
QCB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OnN0YXJ0RmV0Y2goKQogICAgIEFTU0VSVF9V
TlVTRUQoaXNTZW50LCBpc1NlbnQpOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6
OmRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSkK
K3ZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2Uo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlKQoreworICAgIGNhbmNlbFByZWxv
YWRJZk5lY2Vzc2FyeSgpOworCisgICAgcHJvY2Vzc1JlZGlyZWN0UmVzcG9uc2UoV1RGTW92ZShy
ZXNwb25zZSksIFNob3VsZFNldFNvdXJjZTo6WWVzKTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOjpwcm9jZXNzUmVkaXJlY3RSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVz
cG9uc2UsIFNob3VsZFNldFNvdXJjZSBzaG91bGRTZXRTb3VyY2UpCiB7CiAgICAgaWYgKG1faXNE
b25lKQogICAgICAgICByZXR1cm47CiAKLSAgICBTV0ZFVENIX1JFTEVBU0VfTE9HKCJkaWRSZWNl
aXZlUmVkaXJlY3RSZXNwb25zZToiKTsKKyAgICBTV0ZFVENIX1JFTEVBU0VfTE9HKCJwcm9jZXNz
UmVkaXJlY3RSZXNwb25zZToiKTsKICAgICBtX3dhc0hhbmRsZWQgPSB0cnVlOwogICAgIG1fdGlt
ZW91dFRpbWVyLnN0b3AoKTsKICAgICBzb2Z0VXBkYXRlSWZOZWVkZWQoKTsKIAotICAgIHJlc3Bv
bnNlLnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6OlNlcnZpY2VXb3JrZXIpOwor
ICAgIGlmIChzaG91bGRTZXRTb3VyY2UgPT0gU2hvdWxkU2V0U291cmNlOjpZZXMpCisgICAgICAg
IHJlc3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6OlNlcnZpY2VXb3Jr
ZXIpOwogICAgIGF1dG8gbmV3UmVxdWVzdCA9IG1fY3VycmVudFJlcXVlc3QucmVkaXJlY3RlZFJl
cXVlc3QocmVzcG9uc2UsIG1fbG9hZGVyLnBhcmFtZXRlcnMoKS5zaG91bGRDbGVhclJlZmVycmVy
T25IVFRQU1RvSFRUUFJlZGlyZWN0KTsKIAogICAgIHNlbmRUb0NsaWVudChNZXNzYWdlczo6V2Vi
UmVzb3VyY2VMb2FkZXI6OldpbGxTZW5kUmVxdWVzdCB7IG5ld1JlcXVlc3QsIElQQzo6Rm9ybURh
dGFSZWZlcmVuY2UgeyBuZXdSZXF1ZXN0Lmh0dHBCb2R5KCkgfSwgcmVzcG9uc2UgfSk7CiB9CiAK
LXZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNl
UmVzcG9uc2UmJiByZXNwb25zZSwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNl
TWVzc2FnZSkKK3ZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgYm9vbCBuZWVkc0NvbnRpbnVl
RGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkKK3sKKyAgICBjYW5jZWxQcmVsb2FkSWZOZWNlc3Nh
cnkoKTsKKworICAgIHByb2Nlc3NSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSwgbmVlZHNDb250
aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UsIFNob3VsZFNldFNvdXJjZTo6WWVzKTsKK30K
Kwordm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpwcm9jZXNzUmVzcG9uc2UoUmVzb3VyY2VS
ZXNwb25zZSYmIHJlc3BvbnNlLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VN
ZXNzYWdlLCBTaG91bGRTZXRTb3VyY2Ugc2hvdWxkU2V0U291cmNlKQogewogICAgIGlmIChtX2lz
RG9uZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU1dGRVRDSF9SRUxFQVNFX0xPRygiZGlkUmVj
ZWl2ZVJlc3BvbnNlOiAoaHR0cFN0YXR1c0NvZGU9JWQsIE1JTUVUeXBlPSUiIFBVQkxJQ19MT0df
U1RSSU5HICIsIGV4cGVjdGVkQ29udGVudExlbmd0aD0lIiBQUklkNjQgIiwgbmVlZHNDb250aW51
ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2U9JWQsIHNvdXJjZT0ldSkiLCByZXNwb25zZS5odHRw
U3RhdHVzQ29kZSgpLCByZXNwb25zZS5taW1lVHlwZSgpLnV0ZjgoKS5kYXRhKCksIHJlc3BvbnNl
LmV4cGVjdGVkQ29udGVudExlbmd0aCgpLCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNl
TWVzc2FnZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlc3BvbnNlLnNvdXJjZSgpKSk7CisgICAg
U1dGRVRDSF9SRUxFQVNFX0xPRygicHJvY2Vzc1Jlc3BvbnNlOiAoaHR0cFN0YXR1c0NvZGU9JWQs
IE1JTUVUeXBlPSUiIFBVQkxJQ19MT0dfU1RSSU5HICIsIGV4cGVjdGVkQ29udGVudExlbmd0aD0l
IiBQUklkNjQgIiwgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2U9JWQsIHNv
dXJjZT0ldSkiLCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpLCByZXNwb25zZS5taW1lVHlwZSgp
LnV0ZjgoKS5kYXRhKCksIHJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpLCBuZWVkc0Nv
bnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJl
c3BvbnNlLnNvdXJjZSgpKSk7CiAgICAgbV93YXNIYW5kbGVkID0gdHJ1ZTsKICAgICBtX3RpbWVv
dXRUaW1lci5zdG9wKCk7CiAgICAgc29mdFVwZGF0ZUlmTmVlZGVkKCk7CkBAIC0xNjUsNyArMTkx
LDggQEAgdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVz
b3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBib28KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIHJlc3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6OlNlcnZpY2VX
b3JrZXIpOworICAgIGlmIChzaG91bGRTZXRTb3VyY2UgPT0gU2hvdWxkU2V0U291cmNlOjpZZXMp
CisgICAgICAgIHJlc3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6OlNl
cnZpY2VXb3JrZXIpOwogICAgIG1fbG9hZGVyLnNlbmREaWRSZWNlaXZlUmVzcG9uc2VQb3RlbnRp
YWxseUluTmV3QnJvd3NpbmdDb250ZXh0R3JvdXAocmVzcG9uc2UsIG5lZWRzQ29udGludWVEaWRS
ZWNlaXZlUmVzcG9uc2VNZXNzYWdlKTsKICAgICBpZiAobmVlZHNDb250aW51ZURpZFJlY2VpdmVS
ZXNwb25zZU1lc3NhZ2UpCiAgICAgICAgIG1fbG9hZGVyLnNldFJlc3BvbnNlKFdURk1vdmUocmVz
cG9uc2UpKTsKQEAgLTE5MCwxMyArMjE3LDE4IEBAIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFz
azo6ZGlkUmVjZWl2ZUZvcm1EYXRhKGNvbnN0IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmIGZvCiB9
CiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkRmluaXNoKCkKK3sKKyAgICBkaWRG
aW5pc2hXaXRoTWV0cmljcyh7IH0pOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6
OmRpZEZpbmlzaFdpdGhNZXRyaWNzKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xv
YWRNZXRyaWNzKQogewogICAgIEFTU0VSVCghbV90aW1lb3V0VGltZXIuaXNBY3RpdmUoKSk7Ci0g
ICAgU1dGRVRDSF9SRUxFQVNFX0xPRygiZGlkRmluaXNoOiIpOworICAgIFNXRkVUQ0hfUkVMRUFT
RV9MT0coImRpZEZpbmlzaFdpdGhNZXRyaWNzOiIpOwogCiAgICAgbV9pc0RvbmUgPSB0cnVlOwog
ICAgIG1fdGltZW91dFRpbWVyLnN0b3AoKTsKLSAgICBzZW5kVG9DbGllbnQoTWVzc2FnZXM6Oldl
YlJlc291cmNlTG9hZGVyOjpEaWRGaW5pc2hSZXNvdXJjZUxvYWQgeyB7IH0gfSk7CisgICAgc2Vu
ZFRvQ2xpZW50KE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRlcjo6RGlkRmluaXNoUmVzb3VyY2VM
b2FkIHsgbmV0d29ya0xvYWRNZXRyaWNzIH0pOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRj
aFRhc2s6OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCkBAIC0yMDYsNiArMjM4
LDggQEAgdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRGYWlsKGNvbnN0IFJlc291cmNl
RXJyb3ImIGVycm9yKQogICAgICAgICBtX3RpbWVvdXRUaW1lci5zdG9wKCk7CiAgICAgICAgIHNv
ZnRVcGRhdGVJZk5lZWRlZCgpOwogICAgIH0KKyAgICBjYW5jZWxQcmVsb2FkSWZOZWNlc3Nhcnko
KTsKKwogICAgIFNXRkVUQ0hfUkVMRUFTRV9MT0dfRVJST1IoImRpZEZhaWw6IChlcnJvci5kb21h
aW49JSIgUFVCTElDX0xPR19TVFJJTkcgIiwgZXJyb3IuY29kZT0lZCkiLCBlcnJvci5kb21haW4o
KS51dGY4KCkuZGF0YSgpLCBlcnJvci5lcnJvckNvZGUoKSk7CiAgICAgbV9sb2FkZXIuZGlkRmFp
bExvYWRpbmcoZXJyb3IpOwogfQpAQCAtMjE2LDEwICsyNTAsMTUgQEAgdm9pZCBTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrOjpkaWROb3RIYW5kbGUoKQogICAgICAgICByZXR1cm47CiAKICAgICBTV0ZF
VENIX1JFTEVBU0VfTE9HKCJkaWROb3RIYW5kbGU6Iik7Ci0gICAgbV9pc0RvbmUgPSB0cnVlOwog
ICAgIG1fdGltZW91dFRpbWVyLnN0b3AoKTsKICAgICBzb2Z0VXBkYXRlSWZOZWVkZWQoKTsKIAor
ICAgIGlmIChtX3ByZWxvYWRlcikgeworICAgICAgICBsb2FkUmVzcG9uc2VGcm9tUHJlbG9hZGVy
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2lzRG9uZSA9IHRydWU7CiAgICAg
bV9sb2FkZXIuc2VydmljZVdvcmtlckRpZE5vdEhhbmRsZSh0aGlzKTsKIH0KIApAQCAtMjQyLDYg
KzI4MSwxMCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmNhbmNlbEZyb21DbGllbnQo
KQogdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpjb250aW51ZURpZFJlY2VpdmVGZXRjaFJl
c3BvbnNlKCkKIHsKICAgICBTV0ZFVENIX1JFTEVBU0VfTE9HKCJjb250aW51ZURpZFJlY2VpdmVG
ZXRjaFJlc3BvbnNlOiIpOworICAgIGlmIChtX2lzTG9hZGluZ0Zyb21QcmVsb2FkZXIpIHsKKyAg
ICAgICAgbG9hZEJvZHlGcm9tUHJlbG9hZGVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAg
ICAgc2VuZFRvU2VydmljZVdvcmtlcihNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246OkNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UgeyBtX3NlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyLCBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBtX2ZldGNoSWRlbnRpZmll
ciB9KTsKIH0KIApAQCAtMjgwLDYgKzMyMyw2MSBAQCB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s6OnNvZnRVcGRhdGVJZk5lZWRlZCgpCiAgICAgICAgIHJlZ2lzdHJhdGlvbi0+c2NoZWR1bGVT
b2Z0VXBkYXRlKG1fbG9hZGVyLmlzQXBwSW5pdGlhdGVkKCkgPyBXZWJDb3JlOjpJc0FwcEluaXRp
YXRlZDo6WWVzIDogV2ViQ29yZTo6SXNBcHBJbml0aWF0ZWQ6Ok5vKTsKIH0KIAordm9pZCBTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrOjpsb2FkUmVzcG9uc2VGcm9tUHJlbG9hZGVyKCkKK3sKKyAgICBT
V0ZFVENIX1JFTEVBU0VfTE9HKCJsb2FkUmVzcG9uc2VGcm9tUHJlbG9hZGVyIik7CisKKyAgICBB
U1NFUlQoIW1faXNMb2FkaW5nRnJvbVByZWxvYWRlcik7CisgICAgbV9pc0xvYWRpbmdGcm9tUHJl
bG9hZGVyID0gdHJ1ZTsKKworICAgIG1fcHJlbG9hZGVyLT53YWl0Rm9yUmVzcG9uc2UoW3dlYWtU
aGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHRoaXNdIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoIW1fcHJlbG9hZGVyLT5lcnJvcigp
LmlzTnVsbCgpKSB7CisgICAgICAgICAgICBkaWRGYWlsKG1fcHJlbG9hZGVyLT5lcnJvcigpKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gcmVzcG9uc2Ug
PSBtX3ByZWxvYWRlci0+cmVzcG9uc2UoKTsKKyAgICAgICAgaWYgKHJlc3BvbnNlLmlzUmVkaXJl
Y3Rpb24oKSAmJiByZXNwb25zZS5odHRwSGVhZGVyRmllbGRzKCkuY29udGFpbnMoSFRUUEhlYWRl
ck5hbWU6OkxvY2F0aW9uKSkgeworICAgICAgICAgICAgcHJvY2Vzc1JlZGlyZWN0UmVzcG9uc2Uo
V1RGTW92ZShyZXNwb25zZSksIFNob3VsZFNldFNvdXJjZTo6Tm8pOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJl
c3BvbnNlTWVzc2FnZSA9IHRydWU7CisgICAgICAgIHByb2Nlc3NSZXNwb25zZShXVEZNb3ZlKHJl
c3BvbnNlKSwgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UsIFNob3VsZFNl
dFNvdXJjZTo6Tm8pOworICAgIH0pOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6
OmxvYWRCb2R5RnJvbVByZWxvYWRlcigpCit7CisgICAgU1dGRVRDSF9SRUxFQVNFX0xPRygibG9h
ZEJvZHlGcm9tUHJlbG9hZGVyIik7CisKKyAgICBBU1NFUlQobV9pc0xvYWRpbmdGcm9tUHJlbG9h
ZGVyKTsKKyAgICBtX3ByZWxvYWRlci0+d2FpdEZvckJvZHkoW3dlYWtUaGlzID0gV2Vha1B0ciB7
ICp0aGlzIH0sIHRoaXNdKGF1dG8mJiBjaHVuaywgaW50IGxlbmd0aCkgeworICAgICAgICBpZiAo
IXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoIW1fcHJlbG9hZGVy
LT5lcnJvcigpLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBkaWRGYWlsKG1fcHJlbG9hZGVyLT5l
cnJvcigpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWNo
dW5rKSB7CisgICAgICAgICAgICBkaWRGaW5pc2hXaXRoTWV0cmljcyhtX3ByZWxvYWRlci0+bmV0
d29ya0xvYWRNZXRyaWNzKCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgIGRpZFJlY2VpdmVEYXRhKElQQzo6RGF0YVJlZmVyZW5jZSB7IGNodW5rLT5kYXRhKCksIGNo
dW5rLT5zaXplKCkgfSwgbGVuZ3RoKTsKKyAgICB9KTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOjpjYW5jZWxQcmVsb2FkSWZOZWNlc3NhcnkoKQoreworICAgIGlmICghbV9wcmVs
b2FkZXIpCisgICAgICAgIHJldHVybjsKKyAgICBtX3ByZWxvYWRlci0+Y2FuY2VsKCk7CisgICAg
bV9wcmVsb2FkZXIgPSBudWxscHRyOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3Vu
ZGVmIFNXRkVUQ0hfUkVMRUFTRV9MT0cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFz
ay5oCmluZGV4IDA0OWIzYzQxM2FkN2QyMTAxYWU5OTVjN2Q5OWFlZTQ3ZGZiZGU0YjkuLjhlNTZj
N2IxZThiYjRhODg5OWJhYTZhNTlmYWEyM2RkM2Y3OGU1MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJGZXRjaFRhc2suaApAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVz
b3VyY2VSZXNwb25zZTsKK2NsYXNzIFNXU2VydmVyUmVnaXN0cmF0aW9uOwogfQogCiBuYW1lc3Bh
Y2UgSVBDIHsKQEAgLTQ4LDE2ICs0OSwyMSBAQCBjbGFzcyBEZWNvZGVyOwogY2xhc3MgRm9ybURh
dGFSZWZlcmVuY2U7CiB9CiAKLW5hbWVzcGFjZSBXZWJLaXQgeworbmFtZXNwYWNlIFdlYkNvcmUg
eworY2xhc3MgTmV0d29ya0xvYWRNZXRyaWNzOworfQogCituYW1lc3BhY2UgV2ViS2l0IHsKIGNs
YXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjsKK2NsYXNzIE5ldHdvcmtTZXNzaW9uOworY2xhc3Mg
U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI7CiBjbGFzcyBXZWJTV1NlcnZlckNvbm5l
Y3Rpb247CiBjbGFzcyBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CiAKIGNsYXNzIFNl
cnZpY2VXb3JrZXJGZXRjaFRhc2sgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U2VydmljZVdvcmtl
ckZldGNoVGFzaz4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IFNlcnZpY2VXb3JrZXJGZXRjaFRhc2soV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiwgTmV0d29ya1Jl
c291cmNlTG9hZGVyJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlNXU2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgYm9vbCBzaG91
bGRTb2Z0VXBkYXRlKTsKKyAgICBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrKFdlYlNXU2VydmVyQ29u
bmVjdGlvbiYsIE5ldHdvcmtSZXNvdXJjZUxvYWRlciYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6U1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBOZXR3
b3JrU2Vzc2lvbiosIGJvb2wgaXNXb3JrZXJSZWFkeSk7CiAgICAgflNlcnZpY2VXb3JrZXJGZXRj
aFRhc2soKTsKIAogICAgIHZvaWQgc3RhcnQoV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Jik7CkBAIC03NiwxOCArODIsMjYgQEAgcHVibGljOgogICAgIHZvaWQgY29udGV4dENsb3NlZCgp
OwogCiBwcml2YXRlOgorICAgIGVudW0gY2xhc3MgU2hvdWxkU2V0U291cmNlIDogYm9vbCB7IE5v
LCBZZXMgfTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VN
ZXNzYWdlKTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYsIGludDY0X3QgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUZvcm1E
YXRhKGNvbnN0IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmKTsKICAgICB2b2lkIGRpZEZpbmlzaCgp
OworICAgIHZvaWQgZGlkRmluaXNoV2l0aE1ldHJpY3MoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xv
YWRNZXRyaWNzJik7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImKTsKICAgICB2b2lkIGRpZE5vdEhhbmRsZSgpOwogCisgICAgdm9pZCBwcm9jZXNzUmVkaXJl
Y3RSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFNob3VsZFNldFNvdXJjZSk7
CisgICAgdm9pZCBwcm9jZXNzUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBi
b29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlLCBTaG91bGRTZXRTb3Vy
Y2UpOworCiAgICAgdm9pZCBzdGFydEZldGNoKCk7CiAKICAgICB2b2lkIHRpbWVvdXRUaW1lckZp
cmVkKCk7CiAgICAgdm9pZCBzb2Z0VXBkYXRlSWZOZWVkZWQoKTsKKyAgICB2b2lkIGxvYWRSZXNw
b25zZUZyb21QcmVsb2FkZXIoKTsKKyAgICB2b2lkIGxvYWRCb2R5RnJvbVByZWxvYWRlcigpOwor
ICAgIHZvaWQgY2FuY2VsUHJlbG9hZElmTmVjZXNzYXJ5KCk7CiAKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBNZXNzYWdlPiBib29sIHNlbmRUb1NlcnZpY2VXb3JrZXIoTWVzc2FnZSYmKTsKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBNZXNzYWdlPiBib29sIHNlbmRUb0NsaWVudChNZXNzYWdlJiYpOwpA
QCAtMTAwLDEwICsxMTQsMTIgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyOwogICAgIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCBtX2N1cnJlbnRSZXF1ZXN0OwogICAgIFdlYkNvcmU6OlRpbWVyIG1fdGltZW91
dFRpbWVyOworICAgIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
IG1fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI7CisgICAgc3RkOjp1bmlxdWVf
cHRyPFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyPiBtX3ByZWxvYWRlcjsKICAgICBi
b29sIG1fd2FzSGFuZGxlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzRG9uZSB7IGZhbHNlIH07
Ci0gICAgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgbV9zZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcjsKICAgICBib29sIG1fc2hvdWxkU29mdFVw
ZGF0ZSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzTG9hZGluZ0Zyb21QcmVsb2FkZXIgeyBmYWxz
ZSB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdh
dGlvblByZWxvYWRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzNhOWQ0YjZkZmI4ODEwZDJmNDI3ZTBmODc2
Yjg4MWYwNDBlYzJlNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAK
QEAgLTAsMCArMSwyMTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIuaCIKKworI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3b3Jr
Q2FjaGUuaCIKKyNpbmNsdWRlICJOZXR3b3JrTG9hZC5oIgorI2luY2x1ZGUgIk5ldHdvcmtTZXNz
aW9uLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
KworU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OlNlcnZpY2VXb3JrZXJOYXZpZ2F0
aW9uUHJlbG9hZGVyKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrTG9hZFBhcmFtZXRl
cnMmJiBwYXJhbWV0ZXJzKQorICAgIDogbV9zZXNzaW9uKHNlc3Npb24pCit7CisgICAgUkVMRUFT
RV9MT0coU2VydmljZVdvcmtlciwgIlNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyOjpT
ZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlciAlcCIsIHRoaXMpOworICAgIGlmIChzZXNz
aW9uLmNhY2hlKCkpIHsKKyAgICAgICAgTmV0d29ya0NhY2hlOjpHbG9iYWxGcmFtZUlEIGdsb2Jh
bElEIHsgcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCwgcGFyYW1ldGVycy53ZWJQYWdlSUQsIHBh
cmFtZXRlcnMud2ViRnJhbWVJRCB9OworICAgICAgICBzZXNzaW9uLmNhY2hlKCktPnJldHJpZXZl
KHBhcmFtZXRlcnMucmVxdWVzdCwgZ2xvYmFsSUQsIHBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbiwgW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHBhcmFt
ZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMpXShhdXRvJiYgZW50cnksIGF1dG8mJikgbXV0YWJs
ZSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8IG1faXNDYW5jZWxsZWQpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgaWYgKCFtX3Nlc3Npb24pIHsKKyAgICAgICAg
ICAgICAgICBkaWRGYWlsTG9hZGluZyhSZXNvdXJjZUVycm9yIHsgUmVzb3VyY2VFcnJvcjo6VHlw
ZTo6Q2FuY2VsbGF0aW9uIH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGlmIChlbnRyeSAmJiAhZW50cnktPm5lZWRzVmFsaWRhdGlvbigpKSB7
CisgICAgICAgICAgICAgICAgbG9hZFdpdGhDYWNoZUVudHJ5KCplbnRyeSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwYXJhbWV0ZXJzLnJl
cXVlc3Quc2V0Q2FjaGVQb2xpY3koUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlJlZnJlc2hB
bnlDYWNoZURhdGEpOworICAgICAgICAgICAgaWYgKGVudHJ5KSB7CisgICAgICAgICAgICAgICAg
bV9jYWNoZUVudHJ5ID0gV1RGTW92ZShlbnRyeSk7CisKKyAgICAgICAgICAgICAgICBhdXRvIGVU
YWcgPSBtX2NhY2hlRW50cnktPnJlc3BvbnNlKCkuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJO
YW1lOjpFVGFnKTsKKyAgICAgICAgICAgICAgICBpZiAoIWVUYWcuaXNFbXB0eSgpKQorICAgICAg
ICAgICAgICAgICAgICBwYXJhbWV0ZXJzLnJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBI
ZWFkZXJOYW1lOjpJZk5vbmVNYXRjaCwgZVRhZyk7CisKKyAgICAgICAgICAgICAgICBhdXRvIGxh
c3RNb2RpZmllZCA9IG1fY2FjaGVFbnRyeS0+cmVzcG9uc2UoKS5odHRwSGVhZGVyRmllbGQoSFRU
UEhlYWRlck5hbWU6Okxhc3RNb2RpZmllZCk7CisgICAgICAgICAgICAgICAgaWYgKCFsYXN0TW9k
aWZpZWQuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLnJlcXVlc3Qu
c2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpJZk1vZGlmaWVkU2luY2UsIGxhc3RN
b2RpZmllZCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsb2FkRnJvbU5ldHdvcmsoKm1f
c2Vzc2lvbiwgV1RGTW92ZShwYXJhbWV0ZXJzKSk7CisgICAgICAgIH0pOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGxvYWRGcm9tTmV0d29yayhzZXNzaW9uLCBXVEZNb3ZlKHBhcmFtZXRl
cnMpKTsKK30KKworU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6On5TZXJ2aWNlV29y
a2VyTmF2aWdhdGlvblByZWxvYWRlcigpCit7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlck5hdmln
YXRpb25QcmVsb2FkZXI6OmNhbmNlbCgpCit7CisgICAgbV9pc0NhbmNlbGxlZCA9IHRydWU7Cisg
ICAgaWYgKG1fcmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgbV9yZXNwb25zZUNv
bXBsZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6SWdub3JlKTsKKyAgICBpZiAobV9uZXR3b3Jr
TG9hZCkKKyAgICAgICAgbV9uZXR3b3JrTG9hZC0+Y2FuY2VsKCk7Cit9CisKK3ZvaWQgU2Vydmlj
ZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmxvYWRXaXRoQ2FjaGVFbnRyeShOZXR3b3JrQ2Fj
aGU6OkVudHJ5JiBlbnRyeSkKK3sKKyAgICBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNw
b25zZSB7IGVudHJ5LnJlc3BvbnNlKCkgfSwgW2JvZHkgPSBSZWZQdHIgeyBlbnRyeS5idWZmZXIo
KSB9LCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XShhdXRvKSBtdXRhYmxlIHsKKyAgICAg
ICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoYm9k
eSkgeworICAgICAgICAgICAgYXV0byBzaXplID0gYm9keS0+c2l6ZSgpOworICAgICAgICAgICAg
d2Vha1RoaXMtPmRpZFJlY2VpdmVCdWZmZXIoYm9keS5yZWxlYXNlTm9uTnVsbCgpLCBzaXplKTsK
KyAgICAgICAgfQorCisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgTmV0d29ya0xvYWRNZXRyaWNzIG5ldHdvcmtMb2FkTWV0cmljczsKKyAgICAg
ICAgbmV0d29ya0xvYWRNZXRyaWNzLm1hcmtDb21wbGV0ZSgpOworICAgICAgICBuZXR3b3JrTG9h
ZE1ldHJpY3MucmVzcG9uc2VCb2R5Qnl0ZXNSZWNlaXZlZCA9IDA7CisgICAgICAgIG5ldHdvcmtM
b2FkTWV0cmljcy5yZXNwb25zZUJvZHlEZWNvZGVkU2l6ZSA9IDA7CisgICAgICAgIHdlYWtUaGlz
LT5kaWRGaW5pc2hMb2FkaW5nKG5ldHdvcmtMb2FkTWV0cmljcyk7CisgICAgfSk7CisgICAgZGlk
Q29tcGxldGUoKTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6
bG9hZEZyb21OZXR3b3JrKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrTG9hZFBhcmFt
ZXRlcnMmJiBwYXJhbWV0ZXJzKQoreworICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJT
ZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlcjo6bG9hZEZyb21OZXR3b3JrICVwIiwgdGhp
cyk7CisKKyAgICBtX25ldHdvcmtMb2FkID0gbWFrZVVuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMs
IG51bGxwdHIsIFdURk1vdmUocGFyYW1ldGVycyksIHNlc3Npb24pOworICAgIG1fbmV0d29ya0xv
YWQtPnN0YXJ0KCk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6
OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlUmVx
dWVzdCYmLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UpCit7CisgICAgZGlkUmVjZWl2ZVJl
c3BvbnNlKFdURk1vdmUocmVzcG9uc2UpLCBbXShhdXRvKSB7IH0pOworICAgIGRpZENvbXBsZXRl
KCk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2Vp
dmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxldGlv
bkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBSRUxFQVNFX0xPRyhTZXJ2aWNl
V29ya2VyLCAiU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVSZXNw
b25zZSAlcCIsIHRoaXMpOworCisgICAgaWYgKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0g
MzA0ICYmIG1fY2FjaGVFbnRyeSkgeworICAgICAgICBhdXRvIGNhY2hlRW50cnkgPSBXVEZNb3Zl
KG1fY2FjaGVFbnRyeSk7CisgICAgICAgIGxvYWRXaXRoQ2FjaGVFbnRyeSgqY2FjaGVFbnRyeSk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6SWdub3JlKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIG1fcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKTsK
KyAgICBtX3Jlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKTsKKworICAgIGlmIChhdXRvIGNhbGxiYWNrID0gc3RkOjpleGNoYW5nZShtX3Jlc3BvbnNl
Q2FsbGJhY2ssIHsgfSkpCisgICAgICAgIGNhbGxiYWNrKCk7Cit9CisKK3ZvaWQgU2VydmljZVdv
cmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQoreworICAgIGlmICht
X2JvZHlDYWxsYmFjaykKKyAgICAgICAgbV9ib2R5Q2FsbGJhY2soV1RGTW92ZShidWZmZXIpLCBy
ZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyTmF2aWdh
dGlvblByZWxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
IG5ldHdvcmtMb2FkTWV0cmljcykKK3sKKyAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAi
U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcgJXAiLCB0
aGlzKTsKKworICAgIG1fbmV0d29ya0xvYWRNZXRyaWNzID0gbmV0d29ya0xvYWRNZXRyaWNzOwor
ICAgIGRpZENvbXBsZXRlKCk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVs
b2FkZXI6OmRpZEZhaWxMb2FkaW5nKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQoreworICAg
IFJFTEVBU0VfTE9HKFNlcnZpY2VXb3JrZXIsICJTZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxv
YWRlcjo6ZGlkRmFpbExvYWRpbmcgJXAiLCB0aGlzKTsKKworICAgIG1fZXJyb3IgPSBlcnJvcjsK
KyAgICBkaWRDb21wbGV0ZSgpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJl
bG9hZGVyOjpkaWRDb21wbGV0ZSgpCit7CisgICAgbV9uZXR3b3JrTG9hZCA9IG51bGxwdHI7CisK
KyAgICBpZiAoYXV0byBjYWxsYmFjayA9IHN0ZDo6ZXhjaGFuZ2UobV9yZXNwb25zZUNhbGxiYWNr
LCB7IH0pKQorICAgICAgICBjYWxsYmFjaygpOworCisgICAgaWYgKG1fYm9keUNhbGxiYWNrKQor
ICAgICAgICBtX2JvZHlDYWxsYmFjayh7IH0sIDApOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJO
YXZpZ2F0aW9uUHJlbG9hZGVyOjp3YWl0Rm9yUmVzcG9uc2UoUmVzcG9uc2VDYWxsYmFjayYmIGNh
bGxiYWNrKQoreworICAgIGlmICghbV9lcnJvci5pc051bGwoKSkgeworICAgICAgICBjYWxsYmFj
aygpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fcmVzcG9uc2VDb21wbGV0
aW9uSGFuZGxlcikgeworICAgICAgICBjYWxsYmFjaygpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgbV9yZXNwb25zZUNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7Cit9CisKK3Zv
aWQgU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI6OndhaXRGb3JCb2R5KEJvZHlDYWxs
YmFjayYmIGNhbGxiYWNrKQoreworICAgIGlmICghbV9lcnJvci5pc051bGwoKSkgeworICAgICAg
ICBjYWxsYmFjayh7IH0sIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJU
KCFtX3Jlc3BvbnNlLmlzTnVsbCgpKTsKKyAgICBBU1NFUlQobV9yZXNwb25zZUNvbXBsZXRpb25I
YW5kbGVyIHx8ICFtX25ldHdvcmtMb2FkKTsKKyAgICBpZiAoIW1fbmV0d29ya0xvYWQpIHsKKyAg
ICAgICAgY2FsbGJhY2soeyB9LCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAo
bV9yZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICBtX3Jlc3BvbnNlQ29tcGxldGlv
bkhhbmRsZXIoUG9saWN5QWN0aW9uOjpVc2UpOworICAgIG1fYm9keUNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlck5h
dmlnYXRpb25QcmVsb2FkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYWZjYjA3MDdkYWVkNjdmMGEyNzc5Njdk
NWVjNDcyZGMwZmUwYzk3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmgK
QEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQorCisjaW5jbHVkZSAiTmV0d29ya0NhY2hlRW50cnkuaCIKKyNpbmNs
dWRlICJOZXR3b3JrTG9hZENsaWVudC5oIgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIE5ldHdvcmtMb2FkTWV0cmljczsKK30KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIE5ldHdvcmtMb2FkOworY2xhc3MgTmV0d29ya0xvYWRQYXJh
bWV0ZXJzOworY2xhc3MgTmV0d29ya1Nlc3Npb247CisKK2NsYXNzIFNlcnZpY2VXb3JrZXJOYXZp
Z2F0aW9uUHJlbG9hZGVyIGZpbmFsIDogcHVibGljIE5ldHdvcmtMb2FkQ2xpZW50LCBwdWJsaWMg
Q2FuTWFrZVdlYWtQdHI8U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXI+IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBTZXJ2aWNlV29ya2VyTmF2aWdh
dGlvblByZWxvYWRlcihOZXR3b3JrU2Vzc2lvbiYsIE5ldHdvcmtMb2FkUGFyYW1ldGVycyYmKTsK
KyAgICB+U2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIoKTsKKworICAgIHZvaWQgY2Fu
Y2VsKCk7CisKKyAgICB1c2luZyBSZXNwb25zZUNhbGxiYWNrID0gRnVuY3Rpb248dm9pZCgpPjsK
KyAgICB2b2lkIHdhaXRGb3JSZXNwb25zZShSZXNwb25zZUNhbGxiYWNrJiYpOworICAgIHVzaW5n
IEJvZHlDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJiwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpPjsKKyAgICB2b2lkIHdhaXRGb3JC
b2R5KEJvZHlDYWxsYmFjayYmKTsKKworICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
IGVycm9yKCkgY29uc3QgeyByZXR1cm4gbV9lcnJvcjsgfQorICAgIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQor
ICAgIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNz
KCkgY29uc3QgeyByZXR1cm4gbV9uZXR3b3JrTG9hZE1ldHJpY3M7IH0KKworcHJpdmF0ZToKKyAg
ICAvLyBOZXR3b3JrTG9hZENsaWVudC4KKyAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxv
bmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQp
IGZpbmFsIHsgfQorICAgIGJvb2wgaXNTeW5jaHJvbm91cygpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRS
ZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiByZWRpcmVjdFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVj
dFJlc3BvbnNlKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGlu
dCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRpZEZpbmlzaExv
YWRpbmcoY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CisgICAgdm9p
ZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CisK
KyAgICB2b2lkIGxvYWRXaXRoQ2FjaGVFbnRyeShOZXR3b3JrQ2FjaGU6OkVudHJ5Jik7CisgICAg
dm9pZCBsb2FkRnJvbU5ldHdvcmsoTmV0d29ya1Nlc3Npb24mLCBOZXR3b3JrTG9hZFBhcmFtZXRl
cnMmJik7CisgICAgdm9pZCBkaWRDb21wbGV0ZSgpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPE5l
dHdvcmtMb2FkPiBtX25ldHdvcmtMb2FkOworICAgIFdlYWtQdHI8TmV0d29ya1Nlc3Npb24+IG1f
c2Vzc2lvbjsKKyAgICBib29sIG1faXNDYW5jZWxsZWQgeyBmYWxzZSB9OworCisgICAgc3RkOjp1
bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IG1fY2FjaGVFbnRyeTsKKyAgICBXZWJDb3Jl
OjpOZXR3b3JrTG9hZE1ldHJpY3MgbV9uZXR3b3JrTG9hZE1ldHJpY3M7CisgICAgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOworICAgIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRs
ZXIgbV9yZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyOworICAgIFdlYkNvcmU6OlJlc291cmNlRXJy
b3IgbV9lcnJvcjsKKworICAgIFJlc3BvbnNlQ2FsbGJhY2sgbV9yZXNwb25zZUNhbGxiYWNrOwor
ICAgIEJvZHlDYWxsYmFjayBtX2JvZHlDYWxsYmFjazsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IGUzMzUwOTBhZmE4M2JiOGM5OWZhMmFiZDVh
NDI0NzA4ZTU2ZGJhYjUuLjM2OGQzOGY1ZDYzNjM4Y2I5OWQ4YjcwYmVkMDMxYjJlZGQzZTExZTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0xODQsOSArMTg0
LDggQEAgc3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+IFdlYlNXU2VydmVy
Q29ubmVjdGlvbjo6Y3JlYXRlRmV0Y2hUYXNrKE4KICAgICB9CiAKICAgICBhdXRvKiByZWdpc3Ry
YXRpb24gPSBzZXJ2ZXIoKS5nZXRSZWdpc3RyYXRpb24oKnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25JZGVudGlmaWVyKTsKLSAgICBib29sIHNob3VsZFNvZnRVcGRhdGUgPSByZWdpc3RyYXRpb24g
JiYgcmVnaXN0cmF0aW9uLT5zaG91bGRTb2Z0VXBkYXRlKGxvYWRlci5wYXJhbWV0ZXJzKCkub3B0
aW9ucyk7CiAgICAgaWYgKHdvcmtlci0+c2hvdWxkU2tpcEZldGNoRXZlbnQoKSkgewotICAgICAg
ICBpZiAoc2hvdWxkU29mdFVwZGF0ZSkKKyAgICAgICAgaWYgKHJlZ2lzdHJhdGlvbiAmJiByZWdp
c3RyYXRpb24tPnNob3VsZFNvZnRVcGRhdGUobG9hZGVyLnBhcmFtZXRlcnMoKS5vcHRpb25zKSkK
ICAgICAgICAgICAgIHJlZ2lzdHJhdGlvbi0+c2NoZWR1bGVTb2Z0VXBkYXRlKGxvYWRlci5pc0Fw
cEluaXRpYXRlZCgpID8gV2ViQ29yZTo6SXNBcHBJbml0aWF0ZWQ6OlllcyA6IFdlYkNvcmU6Oklz
QXBwSW5pdGlhdGVkOjpObyk7CiAKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTcsNyAr
MTk2LDggQEAgc3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s+IFdlYlNXU2Vy
dmVyQ29ubmVjdGlvbjo6Y3JlYXRlRmV0Y2hUYXNrKE4KICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCi0gICAgYXV0byB0YXNrID0gbWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrPigqdGhpcywgbG9hZGVyLCBSZXNvdXJjZVJlcXVlc3QgeyByZXF1ZXN0IH0sIGlkZW50aWZp
ZXIoKSwgd29ya2VyLT5pZGVudGlmaWVyKCksICpzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRl
bnRpZmllciwgc2hvdWxkU29mdFVwZGF0ZSk7CisgICAgYm9vbCBpc1dvcmtlclJlYWR5ID0gd29y
a2VyLT5pc1J1bm5pbmcoKSAmJiB3b3JrZXItPnN0YXRlKCkgPT0gU2VydmljZVdvcmtlclN0YXRl
OjpBY3RpdmF0ZWQ7CisgICAgYXV0byB0YXNrID0gbWFrZVVuaXF1ZTxTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrPigqdGhpcywgbG9hZGVyLCBSZXNvdXJjZVJlcXVlc3QgeyByZXF1ZXN0IH0sIGlkZW50
aWZpZXIoKSwgd29ya2VyLT5pZGVudGlmaWVyKCksICpyZWdpc3RyYXRpb24sIHNlc3Npb24oKSwg
aXNXb3JrZXJSZWFkeSk7CiAgICAgc3RhcnRGZXRjaCgqdGFzaywgKndvcmtlcik7CiAgICAgcmV0
dXJuIHRhc2s7CiB9CkBAIC01MDMsNyArNTAzLDEyIEBAIFBBTDo6U2Vzc2lvbklEIFdlYlNXU2Vy
dmVyQ29ubmVjdGlvbjo6c2Vzc2lvbklEKCkgY29uc3QKIHsKICAgICByZXR1cm4gc2VydmVyKCku
c2Vzc2lvbklEKCk7CiB9Ci0gICAgCisKK05ldHdvcmtTZXNzaW9uKiBXZWJTV1NlcnZlckNvbm5l
Y3Rpb246OnNlc3Npb24oKQoreworICAgIHJldHVybiBtX25ldHdvcmtQcm9jZXNzLT5uZXR3b3Jr
U2Vzc2lvbihzZXNzaW9uSUQoKSk7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIFU+IHZvaWQgV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uOjpzZW5kVG9Db250ZXh0UHJvY2VzcyhXZWJDb3JlOjpTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFUmJiBtZXNzYWdlKQogewogICAgIHN0
YXRpY19jYXN0PFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiY+KGNvbm5lY3Rpb24pLnNl
bmQoV1RGTW92ZShtZXNzYWdlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgK
aW5kZXggMjY4NTU1NGY5ZmVjZGQ0NTFlYTZkNzY4ODE0MjQ1OTk0ODFhN2NhYi4uMjk2NmUwNTY4
OGE2YjNmYWQ2NGQ2ODI0NDY5OWJiYzQzMzY3ODc2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
ckNvbm5lY3Rpb24uaApAQCAtNzUsNyArNzUsOCBAQCBwdWJsaWM6CiAgICAgSVBDOjpDb25uZWN0
aW9uJiBpcGNDb25uZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50Q29ubmVjdGlvbi5n
ZXQoKTsgfQogCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImKSBmaW5hbDsKLSAgICAKKworICAgIE5ldHdvcmtTZXNzaW9uKiBzZXNzaW9u
KCk7CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3Q7CiAKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8U2VydmljZVdvcmtlckZldGNoVGFzaz4gY3JlYXRlRmV0Y2hUYXNrKE5ldHdvcmtS
ZXNvdXJjZUxvYWRlciYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya01ETlNSZWdp
c3Rlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy93ZWJydGMvTmV0d29ya01ETlNS
ZWdpc3Rlci5oCmluZGV4IDAxM2IxODVlNmI0NzI2NzUzMzZlZmI4MDJhY2ZlZmJhZmIyYThkOWEu
LmQzODJiNjVhZjcwOGZlZDk5ZDBjY2Q1YzlkODVkZGRhYTc2NWNlNTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvd2VicnRjL05ldHdvcmtNRE5TUmVnaXN0ZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3dlYnJ0Yy9OZXR3b3JrTUROU1JlZ2lz
dGVyLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIk1ETlNSZWdpc3RlcklkZW50aWZp
ZXIuaCIKICNpbmNsdWRlICJSVENOZXR3b3JrLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNz
UXVhbGlmaWVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRFeGVjdXRpb25Db250ZXh0SWRl
bnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dl
YktpdC9Tb3VyY2VzLnR4dAppbmRleCBiMTM4ZmRkMDU3MDU4Yzg1MmQxMDJiZjIyZDhhMDUzMDRl
YzVhZjBiLi45MzM1NjcwYjBhMzFkOGQ0Y2MwN2I2MmZiNjMwYzFkMDI3OGY0OTM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNl
cy50eHQKQEAgLTEzNCw2ICsxMzQsNyBAQCBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNsaWVudC5jcHAKIE5ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFu
YWdlclByb3h5LmNwcAogCiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2suY3BwIEBuby11bmlmeQorTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAKIE5ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCiBOZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXT3JpZ2luU3RvcmUuY3BwIEBuby11bmlmeQogTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwIEBuby11bmlmeQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
Y2MwZTM4ODYwZmMzOWIyNjA5NGRkZmNhNmQ3Y2Q3YmI2ZjExNWQwNi4uZGU3NWI3YzcwMTFiNzgy
Zjg3N2VlYjdiZDlkN2RiMjZjMzNkMjA1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00MTEyLDYgKzQxMTIsOCBAQAogCQk0MUUyNDJE
RjI2RTBDOTA0MDA5QThDNjQgLyogTmV0d29ya1JUQ1V0aWxpdGllc0NvY29hLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gTmV0d29ya1JUQ1V0aWxpdGllc0NvY29hLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MUU2N0E4QzI1RDJDRkQwMDA3QjBBNEMgLyogUmVtb3RlUmVhbHRp
bWVBdWRpb1NvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVSZWFsdGltZUF1ZGlvU291cmNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRTY3QThEMjVEMkNGRDAwMDdCMEE0
QyAvKiBSZW1vdGVSZWFsdGltZUF1ZGlvU291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
bW90ZVJlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0MUVCNEQzQTI3NENFMDQ1MDBBOTI3MkIgLyogU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVs
b2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VydmljZVdvcmtlck5hdmlnYXRpb25QcmVsb2FkZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDFFQjREM0IyNzRDRTA0NTAwQTkyNzJC
IC8qIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDFGMDYwREQxNjU0MzE3NTAwRjMyODFDIC8qIFdlYlNvY2tldENoYW5u
ZWxNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViU29ja2V0Q2hhbm5l
bE1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL1dlYlNv
Y2tldENoYW5uZWxNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OwogCQk0MUY5RkQxODIzRUQ4QTgxMDA5OUI1NzkgLyogTGliV2ViUlRDUmVzb2x2
ZXJJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExpYldlYlJU
Q1Jlc29sdmVySWRlbnRpZmllci5oOyBwYXRoID0gTmV0d29yay93ZWJydGMvTGliV2ViUlRDUmVz
b2x2ZXJJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxRkFCRDI4
MUY0RERGREMwMDZBNkM5NyAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTAyODMsNiArMTAyODUsOCBAQAogCQkJCTQxNTE4NTM2
MjIyNzA0RjYwMDU0MzBDNiAvKiBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCAqLywKIAkJCQk0
MTUxODUzNTIyMjcwNEY1MDA1NDMwQzYgLyogU2VydmljZVdvcmtlckZldGNoVGFzay5oICovLAog
CQkJCTQxNTE4NTM4MjIyNzBGNTMwMDU0MzBDNiAvKiBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLm1l
c3NhZ2VzLmluICovLAorCQkJCTQxRUI0RDNCMjc0Q0UwNDUwMEE5MjcyQiAvKiBTZXJ2aWNlV29y
a2VyTmF2aWdhdGlvblByZWxvYWRlci5jcHAgKi8sCisJCQkJNDFFQjREM0EyNzRDRTA0NTAwQTky
NzJCIC8qIFNlcnZpY2VXb3JrZXJOYXZpZ2F0aW9uUHJlbG9hZGVyLmggKi8sCiAJCQkJNDFENUM2
RDkyMzhFQjIwRTAwQjlCM0NCIC8qIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcCAq
LywKIAkJCQk0MUQ1QzZEODIzOEVCMjBEMDBCOUIzQ0IgLyogU2VydmljZVdvcmtlclNvZnRVcGRh
dGVMb2FkZXIuaCAqLywKIAkJCQk5M0JBMDRERjIxNTFBREY0MDA3RjQ1NUYgLyogV2ViU1dPcmln
aW5TdG9yZS5jcHAgKi8sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzFjMzAwYzc4NmY3NGY3YWUxZDZhZjg3NmFkNjlmYWIx
MTE2ZDlmNi4uYWE3OTI0ZTA0Y2JlZWI2YzU0MmQwMzE0MjA3ZWM0N2FjYzRlZmYwNyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE1IEBACisyMDIxLTExLTMwICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxl
LmNvbT4KKworICAgICAgICBQcmVsb2FkIG5hdmlnYXRpb24gcmVxdWVzdCBpZiB0aGUgc2Vydmlj
ZSB3b3JrZXIgaXMgbm90IGltbWVkaWF0ZWx5IHJlYWR5IHRvIGhhbmRsZSB0aGUgbmF2aWdhdGlv
biByZXF1ZXN0IGZldGNoIGV2ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzM0NzEKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4K
KworICAgICAgICAqIGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvc2VydmljZS13
b3JrZXItcHJlbG9hZC13aGVuLW5vdC1hY3RpdmF0ZWQtc2NyaXB0LnB5OiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItcHJlbG9hZC13aGVu
LW5vdC1hY3RpdmF0ZWQtd29ya2VyLmpzOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC9zZXJ2
aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItcHJlbG9hZC13aGVuLW5vdC1hY3RpdmF0ZWQuaHR0
cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtl
cnMvc2VydmljZS13b3JrZXItcHJlbG9hZC13aGVuLW5vdC1hY3RpdmF0ZWQuaHR0cHMuaHRtbDog
QWRkZWQuCisKIDIwMjEtMTEtMzAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgog
CiAgICAgICAgIE1vdmUgVHJhbnNmb3JtU3RyZWFtQVBJRW5hYmxlZCBmbGFnIHRvIFNldHRpbmdz
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvcmVzb3Vy
Y2VzL3NlcnZpY2Utd29ya2VyLXByZWxvYWQtd2hlbi1ub3QtYWN0aXZhdGVkLXNjcmlwdC5weSBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvc2VydmljZS13
b3JrZXItcHJlbG9hZC13aGVuLW5vdC1hY3RpdmF0ZWQtc2NyaXB0LnB5Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4
MWUxNzJlMjRmNmU4YmQzM2IwMTlhN2RiNzIxZDMyYjgwZjMxZWQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3NlcnZpY2Ut
d29ya2VyLXByZWxvYWQtd2hlbi1ub3QtYWN0aXZhdGVkLXNjcmlwdC5weQpAQCAtMCwwICsxLDI0
IEBACitpbXBvcnQgb3MKK2ltcG9ydCBoYXNobGliCitpbXBvcnQganNvbgorCisKK2RlZiBtYWlu
KHJlcXVlc3QsIHJlc3BvbnNlKToKKyAgICB0b2tlbiA9IHJlcXVlc3QuR0VUW2IndG9rZW4nXQor
ICAgIHRlc3RJZCA9IGhhc2hsaWIubWQ1KHRva2VuKS5oZXhkaWdlc3QoKQorCisgICAgaWYgcmVx
dWVzdC5tZXRob2QgPT0gIlBPU1QiOgorICAgICAgICByZXF1ZXN0LnNlcnZlci5zdGFzaC50YWtl
KHRlc3RJZCkKKyAgICAgICAgcmVxdWVzdC5zZXJ2ZXIuc3Rhc2gucHV0KHRlc3RJZCwgcmVxdWVz
dC5HRVRbYid2YWx1ZSddKQorICAgICAgICByZXNwb25zZS5oZWFkZXJzLnNldChiIkNvbnRlbnQt
VHlwZSIsIGIidGV4dC9hc2NpaSIpCisgICAgICAgIHJldHVybiBiInVwZGF0ZWQgdG8gIiArIHJl
cXVlc3QuR0VUW2IndmFsdWUnXQorCisgICAgdmFsdWUgPSByZXF1ZXN0LnNlcnZlci5zdGFzaC50
YWtlKHRlc3RJZCkKKyAgICBpZiBub3QgdmFsdWU6CisgICAgICAgIHJlc3BvbnNlLmhlYWRlcnMu
c2V0KGIiQ2FjaGUtQ29udHJvbCIsIGIibm8tY2FjaGUiKQorICAgICAgICByZXNwb25zZS5oZWFk
ZXJzLnNldChiIkNvbnRlbnQtVHlwZSIsIGIidGV4dC9hc2NpaSIpCisgICAgICAgIHJldHVybiAi
bm90aGluZyIKKworICAgIHJlc3BvbnNlLmhlYWRlcnMuc2V0KGIiQ2FjaGUtQ29udHJvbCIsIGIi
bm8tY2FjaGUiKQorICAgIHJlc3BvbnNlLmhlYWRlcnMuc2V0KGIiQ29udGVudC1UeXBlIiwgYiJ0
ZXh0L2h0bWwiKQorICAgIHJldHVybiAiPGh0bWw+PGJvZHk+PHNjcmlwdD53aW5kb3cudmFsdWUg
PSAnJXMnOzwvc2NyaXB0PjwvYm9keT48L2h0bWw+IiAlIHZhbHVlLmRlY29kZSgpCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIt
cHJlbG9hZC13aGVuLW5vdC1hY3RpdmF0ZWQtd29ya2VyLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC93
cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXByZWxvYWQtd2hlbi1ub3QtYWN0aXZh
dGVkLXdvcmtlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iY2FiOTM1MGFjNTQ2OTU5ZDcxMTM2YmFiMjExYWYw
NjEyZjAwYmVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2Vydmlj
ZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXByZWxvYWQtd2hlbi1ub3QtYWN0aXZhdGVkLXdvcmtl
ci5qcwpAQCAtMCwwICsxLDI4IEBACitvbmluc3RhbGwgPSAoZXZlbnQpID0+IHsKKyAgICBpZiAo
c2VsZi5wb3J0KQorICAgICAgICByZXR1cm47CisgICAgZXZlbnQud2FpdFVudGlsKG5ldyBQcm9t
aXNlKHJlc29sdmUgPT4gc2VsZi5pbnN0YWxsaW5nUHJvbWlzZVJlc29sdmUgPSByZXNvbHZlKSk7
Cit9CisKK29ubWVzc2FnZSA9IChldmVudCkgPT4geworICAgIGlmIChldmVudC5kYXRhLnBvcnQp
CisgICAgICAgIHNlbGYucG9ydCA9IGV2ZW50LmRhdGEucG9ydDsKKyAgICBpZiAoc2VsZi5pbnN0
YWxsaW5nUHJvbWlzZVJlc29sdmUpIHsKKyAgICAgICAgc2VsZi5pbnN0YWxsaW5nUHJvbWlzZVJl
c29sdmUoKTsKKyAgICAgICAgc2VsZi5pbnN0YWxsaW5nUHJvbWlzZVJlc29sdmUgPSBudWxsOwor
ICAgIH0KKyAgICBpZiAoc2VsZi5hY3RpdmF0aW5nUHJvbWlzZVJlc29sdmUpIHsKKyAgICAgICAg
c2VsZi5hY3RpdmF0aW5nUHJvbWlzZVJlc29sdmUoKTsKKyAgICAgICAgc2VsZi5hY3RpdmF0aW5n
UHJvbWlzZVJlc29sdmUgPSBudWxsOworICAgIH0KK307CisKK29uYWN0aXZhdGUgPSAoZXZlbnQp
ID0+IHsKKyAgICBldmVudC53YWl0VW50aWwobmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZWxmLmFj
dGl2YXRpbmdQcm9taXNlUmVzb2x2ZSA9IHJlc29sdmUpKTsKKyAgICBzZWxmLnBvcnQucG9zdE1l
c3NhZ2UoImFjdGl2YXRpbmciKTsKK30KKworc2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcs
ICgpID0+IHsKKyAgICBpZiAoc2VsZi5wb3J0KQorICAgICAgICBzZWxmLnBvcnQucG9zdE1lc3Nh
Z2UoImZldGNoaW5nIik7Cit9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3Nl
cnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1wcmVsb2FkLXdoZW4tbm90LWFjdGl2YXRlZC5o
dHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMv
c2VydmljZS13b3JrZXItcHJlbG9hZC13aGVuLW5vdC1hY3RpdmF0ZWQuaHR0cHMtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjdlZjJhZGY5YjAxYzI5YTIwYWVkYTQ1MmUwNGNjNjBhMWU3MzdkYTUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMv
c2VydmljZS13b3JrZXItcHJlbG9hZC13aGVuLW5vdC1hY3RpdmF0ZWQuaHR0cHMtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsNSBAQAorCisKK1BBU1MgU2V0dXAgYWN0aXZhdGluZyB3b3JrZXIKK1BB
U1MgU2VydmljZSB3b3JrZXIgbG9hZCB1c2VzIHByZWxvYWQgaWYgYXZhaWxhYmxlIGFuZCBmZXRj
aCBldmVudCB3YXMgbm90IGhhbmRsZWQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93
cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXByZWxvYWQtd2hlbi1ub3QtYWN0aXZh
dGVkLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2Vy
dmljZS13b3JrZXItcHJlbG9hZC13aGVuLW5vdC1hY3RpdmF0ZWQuaHR0cHMuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mM2ZhNjBlNGVlNTNjNjA2NDdlNDYzZGYwYjFhNjQ3ZDkxNTI3NGExCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29y
a2VyLXByZWxvYWQtd2hlbi1ub3QtYWN0aXZhdGVkLmh0dHBzLmh0bWwKQEAgLTAsMCArMSw3MiBA
QAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVz
dGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9jb21tb24vdXRpbHMu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yb3V0aW5lcy5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+Cit2YXIgYWN0aXZlV29ya2VyOwordmFyIHV1
aWQgPSB0b2tlbigpOwordmFyIHVybCA9ICIvV2ViS2l0L3NlcnZpY2Utd29ya2Vycy9yZXNvdXJj
ZXMvc2VydmljZS13b3JrZXItcHJlbG9hZC13aGVuLW5vdC1hY3RpdmF0ZWQtc2NyaXB0LnB5P3Rv
a2VuPSIgKyB1dWlkOwordmFyIGZyYW1lOworY29uc3QgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hh
bm5lbCgpOworCitmdW5jdGlvbiB3YWl0VW50aWxBY3RpdmF0aW5nKCkKK3sKKyAgICByZXR1cm4g
bmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAgICAgIGNoYW5uZWwucG9ydDIub25tZXNzYWdl
ID0gKGV2ZW50KSA9PiB7CisgICAgICAgICAgICBpZiAoZXZlbnQuZGF0YSA9PT0gImFjdGl2YXRp
bmciKQorICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgfTsKKyAgICB9KTsKK30K
KworZnVuY3Rpb24gdHJpZ2dlckFjdGl2YXRpb24oKQoreworICAgIGFjdGl2ZVdvcmtlci5wb3N0
TWVzc2FnZSgiYWN0aXZhdGUiKTsKK30KKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7
CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0VXNl
U2VwYXJhdGVTZXJ2aWNlV29ya2VyUHJvY2Vzcyh0cnVlKTsKKyAgICAgICAgYXdhaXQgZmV0Y2go
IiIpLnRoZW4oKCkgPT4geyB9LCAoKSA9PiB7IH0pOworICAgIH0KKworICAgIGxldCByZWdpc3Ry
YXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcigiL1dlYktpdC9z
ZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItcHJlbG9hZC13aGVuLW5vdC1hY3RpdmF0ZWQt
d29ya2VyLmpzIiwgeyBzY29wZSA6IHVybCB9KTsKKyAgICBpZiAoIXJlZ2lzdHJhdGlvbi5pbnN0
YWxsaW5nKSB7CisgICAgICAgIHJlZ2lzdHJhdGlvbi51bnJlZ2lzdGVyKCk7CisgICAgICAgIHJl
Z2lzdHJhdGlvbiA9IGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCIvV2Vi
S2l0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1wcmVsb2FkLXdoZW4tbm90LWFjdGl2
YXRlZC13b3JrZXIuanMiLCB7IHNjb3BlIDogdXJsIH0pOworICAgIH0KKworICAgIGFjdGl2ZVdv
cmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nOworICAgIGFjdGl2ZVdvcmtlci5wb3N0TWVz
c2FnZSh7IHBvcnQ6IGNoYW5uZWwucG9ydDEgfSwgW2NoYW5uZWwucG9ydDFdKTsKKworICAgIHJl
dHVybiB3YWl0VW50aWxBY3RpdmF0aW5nKCk7Cit9LCAiU2V0dXAgYWN0aXZhdGluZyB3b3JrZXIi
KTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgLy8gU2V0IHZhbHVlIHRv
ICdiZWZvcmUtbmF2aWdhdGlvbicKKyAgICBhd2FpdCBmZXRjaCh1cmwgKyAiJnZhbHVlPWJlZm9y
ZS1uYXZpZ2F0aW9uIiwgeyBtZXRob2Q6ICdQT1NUJyB9KTsKKworICAgIC8vIFN0YXJ0IGxvYWRp
bmcgaWZyYW1lLCB3aXRoIGFjdGl2YXRpbmcgd29ya2VyLCBzbyBvbmx5IHByZWxvYWQgd2lsbCBz
dGFydC4KKyAgICBjb25zdCBpZnJhbWVQcm9taXNlID0gd2l0aElmcmFtZSh1cmwpOworCisgICAg
Ly8gV2FpdCBhIGxpdHRsZSBiaXQgdG8gZG8gYSBmZXRjaC4gVGhpcyBmZXRjaCBzaG91bGQgaGFw
cGVuIGFmdGVyIHRoZSBwcmVsb2FkIGFuZCBzaG91bGQgcmVjZWl2ZSBhICdub3RoaW5nJyBib2R5
LgorICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCAx
MDApKTsKKyAgICBjb25zdCBmZXRjaFByb21pc2UgPSBmZXRjaCh1cmwpOworCisgICAgLy8gVHJp
Z2dlciBhY3RpdmF0aW9uIHRvIHN0YXJ0IHRoZSBmZXRjaCBldmVudCBoYW5kbGVyLCB3aGljaCB3
aWxsIGRvIG5vdGhpbmcgc28gd2Ugd2lsbCB1c2UgdGhlIHByZWxvYWQuCisgICAgdHJpZ2dlckFj
dGl2YXRpb24oKTsKKworICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hQcm9taXNlOwor
ICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgcmVzcG9uc2UudGV4dCgpLCAibm90aGluZyIpOworCisg
ICAgY29uc3QgZnJhbWUgPSBhd2FpdCBpZnJhbWVQcm9taXNlOworICAgIGFzc2VydF9lcXVhbHMo
ZnJhbWUuY29udGVudFdpbmRvdy52YWx1ZSwgImJlZm9yZS1uYXZpZ2F0aW9uIik7Cit9LCAiU2Vy
dmljZSB3b3JrZXIgbG9hZCB1c2VzIHByZWxvYWQgaWYgYXZhaWxhYmxlIGFuZCBmZXRjaCBldmVu
dCB3YXMgbm90IGhhbmRsZWQiKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>