<?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>238544</bug_id>
          
          <creation_ts>2022-03-30 03:08:20 -0700</creation_ts>
          <short_desc>ServiceWorkerRegistration.getNotifications should list all persistent notifications</short_desc>
          <delta_ts>2022-04-01 06:14:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1856346</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-30 03:08:20 -0700</bug_when>
    <thetext>ServiceWorkerRegistration.getNotifications should list all persistent notifications</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856347</commentid>
    <comment_count>1</comment_count>
      <attachid>456109</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-30 03:29:18 -0700</bug_when>
    <thetext>Created attachment 456109
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856746</commentid>
    <comment_count>2</comment_count>
      <attachid>456220</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-31 01:57:07 -0700</bug_when>
    <thetext>Created attachment 456220
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856833</commentid>
    <comment_count>3</comment_count>
      <attachid>456220</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-03-31 09:37:59 -0700</bug_when>
    <thetext>Comment on attachment 456220
Patch

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

Not confident that all this code

&gt; Source/WebCore/workers/service/ServiceWorkerContainer.cpp:627
&gt; +        std::sort(data.begin(), data.end(), [](auto&amp; a, auto&amp; b) { return a.creationTime &lt; b.creationTime; });

Is it safe to use an unstable sort here? If there are any two notifications with the same creationTime, then they could end up shuffled randomly by the sort algorithm. If we used a stable sort, then they would stay in the order they are already in, even if the times happened to be identical.

&gt; Source/WebCore/workers/service/WorkerSWClientConnection.cpp:84
&gt; +    for (auto&amp; callback : navigationPreloadStateCallbacks.values())
&gt; +        callback(Exception { AbortError, &quot;context stopped&quot;_s });

This is in hash table (pseudo-random) order. Is that OK?

&gt; Source/WebCore/workers/service/WorkerSWClientConnection.cpp:88
&gt; +    for (auto&amp; callback : getNotificationsCallbacks.values())
&gt;          callback(Exception { AbortError, &quot;context stopped&quot;_s });

Ditto.

&gt; Source/WebKit/UIProcess/Notifications/WebNotificationManagerProxy.cpp:306
&gt; +    Vector&lt;NotificationData&gt; result;

Should we be reserving initial capacity? Does this typically get sized the same as m_notifications or is it usually a much smaller subset?

&gt; Source/WebKit/UIProcess/Notifications/WebNotificationManagerProxy.cpp:315
&gt; +    callback(WTFMove(result));

Can this vector be long-lived? If so, maybe we should do shrinkToFit after building it and before transferring ownership?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857200</commentid>
    <comment_count>4</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-04-01 02:04:32 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #3)
&gt; Comment on attachment 456220 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=456220&amp;action=review
&gt; 
&gt; Not confident that all this code
&gt; 
&gt; &gt; Source/WebCore/workers/service/ServiceWorkerContainer.cpp:627
&gt; &gt; +        std::sort(data.begin(), data.end(), [](auto&amp; a, auto&amp; b) { return a.creationTime &lt; b.creationTime; });
&gt; 
&gt; Is it safe to use an unstable sort here? If there are any two notifications
&gt; with the same creationTime, then they could end up shuffled randomly by the
&gt; sort algorithm. If we used a stable sort, then they would stay in the order
&gt; they are already in, even if the times happened to be identical.

We get the vector from a UIProcess HashMap, there is no guarantee the order of the pre-sorted Vector will be stable.
To be bullet proof, we would need to do the sorting in UIProcess and rely on both creationTime and UIProcess incrementing counter.
I&apos;ll change this.

&gt; &gt; Source/WebCore/workers/service/WorkerSWClientConnection.cpp:84
&gt; &gt; +    for (auto&amp; callback : navigationPreloadStateCallbacks.values())
&gt; &gt; +        callback(Exception { AbortError, &quot;context stopped&quot;_s });
&gt; 
&gt; This is in hash table (pseudo-random) order. Is that OK?

I think this is ok. These completion handlers can complete in no particular order.

&gt; &gt; Source/WebKit/UIProcess/Notifications/WebNotificationManagerProxy.cpp:306
&gt; &gt; +    Vector&lt;NotificationData&gt; result;
&gt; 
&gt; Should we be reserving initial capacity? Does this typically get sized the
&gt; same as m_notifications or is it usually a much smaller subset?

Difficult to say.
I would expect most web sites to have a single registration doing notifications but that is not guaranteed. If tag is empty, my guess is that it should be roughly the same as m_notifications. If tag is used, it probably means it is only a small subset.

&gt; &gt; Source/WebKit/UIProcess/Notifications/WebNotificationManagerProxy.cpp:315
&gt; &gt; +    callback(WTFMove(result));
&gt; 
&gt; Can this vector be long-lived? If so, maybe we should do shrinkToFit after
&gt; building it and before transferring ownership?

Vector is short lived, it is sent directly to WebProcess through IPC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857204</commentid>
    <comment_count>5</comment_count>
      <attachid>456338</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-04-01 02:12:52 -0700</bug_when>
    <thetext>Created attachment 456338
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857246</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-04-01 06:13:14 -0700</bug_when>
    <thetext>Committed r292218 (249121@main): &lt;https://commits.webkit.org/249121@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 456338.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857247</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-01 06:14:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/91158736&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456109</attachid>
            <date>2022-03-30 03:29:18 -0700</date>
            <delta_ts>2022-03-31 01:57:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238544-20220330122916.patch</filename>
            <type>text/plain</type>
            <size>33269</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMDI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTliZGFmMTZmMzkwNjlm
ZDU5ODJmMTBhZTg2YzgwODM2YjJkYTU2My4uNTU4NWI2NjkwNzI5NWY2ZDI3ODhkOThkYjFjY2Ez
MDA2NDFiOTJjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIyLTAzLTMwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uLmdldE5vdGlmaWNhdGlvbnMgc2hvdWxkIGxpc3QgYWxsIHBlcnNpc3RlbnQgbm90
aWZpY2F0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM4NTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUmVtb3ZlIGNvbnRleHQgYmFzZWQgbm90aWZpY2F0aW9uIGxpc3Qgc2luY2UgdGhlIGxpc3Qg
aXMgZ2xvYmFsLgorICAgICAgICBBZGQgY3JlYXRpb24gdGltZSB0byBub3RpZmljYXRpb24gZGF0
YS4KKyAgICAgICAgSW5zdGVhZCBvZiByZWFkaW5nIHRoZSBsaXN0IGxvY2FsbHksIHVzZSB0aGUg
U1dDbGllbnQgY29ubmVjdGlvbiB0byBnZXQgaXQuCisKKyAgICAgICAgQ292ZXJlZCBieSB1cGRh
dGVkIHRlc3QuCisKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmg6Cisg
ICAgICAgICogTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkRhdGEuaDoKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmg6CisgICAgICAgICogd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwOgorICAgICAgICAqIHdvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmg6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmg6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uaWRsOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9Xb3JrZXJTV0NsaWVudENvbm5lY3Rpb24uY3BwOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9Xb3JrZXJTV0NsaWVudENvbm5lY3Rpb24uaDoKKwogMjAyMi0wMy0zMCAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IFNlcnZpY2VX
b3JrZXIgV2luZG93Q2xpZW50LmFuY2VzdG9yT3JpZ2lucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0YjBkYzMwNjg1
OTc2NjJjMzhkZTIyNGI4Zjc0NjRjY2E3YWVhNGQ3Li4yNGM5YjE0ZmFkMzQzZjAyN2VmYTlmMjEz
ZmQ0MjljODE0ZDhhZDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIyLTAzLTMwICBZ
b3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uLmdldE5vdGlmaWNhdGlvbnMgc2hvdWxkIGxpc3QgYWxsIHBlcnNpc3RlbnQg
bm90aWZpY2F0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM4NTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgR28gZnJvbSBXZWJQcm9jZXNzIHRvIFVJUHJvY2VzcyB0byByZWFkIHRoZSBub3RpZmlj
YXRpb24gbWFwIHRocm91Z2ggSVBDIG1lc3NhZ2luZy4KKyAgICAgICAgRmlsdGVyIG91dCB0aGUg
bm90aWZpY2F0aW9ucyBhY2NvcmRpbmcgdGFnLCBvcmlnaW4gYW5kIHNlc3Npb24uCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHku
Y3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05vdGlm
aWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oOgorCiAyMDIyLTAzLTMwICBZb3Vlbm4g
RmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgU2VydmljZVdv
cmtlciBXaW5kb3dDbGllbnQuYW5jZXN0b3JPcmlnaW5zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCmluZGV4IGQwMmYzNzRk
MTUzZDM1ODU3N2RjMzNlMmQ5Zjg0ZWMxMDExZDQ1YzkuLjE3NGE5YjIzNGZlMGFjZmI2ZDc4NWE1
Mzc2NWI2MTQxN2U5YzM4YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCkBAIC04MSwxMCArODEsOSBAQCBOb3RpZmlj
YXRpb246Ok5vdGlmaWNhdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBTdHJp
bmcmJiB0aXRsZSwgT3B0aQogewogICAgIGlmIChjb250ZXh0LmlzRG9jdW1lbnQoKSkKICAgICAg
ICAgbV9ub3RpZmljYXRpb25Tb3VyY2UgPSBOb3RpZmljYXRpb25Tb3VyY2U6OkRvY3VtZW50Owot
ICAgIGVsc2UgaWYgKGNvbnRleHQuaXNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKSkgeworICAg
IGVsc2UgaWYgKGNvbnRleHQuaXNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKSkKICAgICAgICAg
bV9ub3RpZmljYXRpb25Tb3VyY2UgPSBOb3RpZmljYXRpb25Tb3VyY2U6OlNlcnZpY2VXb3JrZXI7
Ci0gICAgICAgIGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkucmVn
aXN0cmF0aW9uKCkuYWRkTm90aWZpY2F0aW9uVG9MaXN0KCp0aGlzKTsKLSAgICB9IGVsc2UKKyAg
ICBlbHNlCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKICAgICBpZiAo
IW9wdGlvbnMuaWNvbi5pc0VtcHR5KCkpIHsKQEAgLTExMSwxMCArMTEwLDYgQEAgTm90aWZpY2F0
aW9uOjpOb3RpZmljYXRpb24oY29uc3QgTm90aWZpY2F0aW9uJiBvdGhlcikKIAogTm90aWZpY2F0
aW9uOjp+Tm90aWZpY2F0aW9uKCkKIHsKLSAgICBpZiAoYXV0byogY29udGV4dCA9IHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSkgewotICAgICAgICBpZiAoY29udGV4dC0+aXNTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUoKSkKLSAgICAgICAgICAgIGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZT4oY29udGV4dCktPnJlZ2lzdHJhdGlvbigpLnJlbW92ZU5vdGlmaWNhdGlvbkZyb21MaXN0
KCp0aGlzKTsKLSAgICB9CiB9CiAKIFJlZjxOb3RpZmljYXRpb24+IE5vdGlmaWNhdGlvbjo6Y29w
eUZvckdldE5vdGlmaWNhdGlvbnMoKSBjb25zdApAQCAtMTIyLDE3ICsxMTcsNiBAQCBSZWY8Tm90
aWZpY2F0aW9uPiBOb3RpZmljYXRpb246OmNvcHlGb3JHZXROb3RpZmljYXRpb25zKCkgY29uc3QK
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOb3RpZmljYXRpb24oKnRoaXMpKTsKIH0KIAotdm9p
ZCBOb3RpZmljYXRpb246OmNvbnRleHREZXN0cm95ZWQoKQotewotICAgIGF1dG8qIGNvbnRleHQg
PSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoY29udGV4dCk7
Ci0gICAgaWYgKGNvbnRleHQtPmlzU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKCkpCi0gICAgICAg
IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCktPnJlZ2lzdHJhdGlv
bigpLnJlbW92ZU5vdGlmaWNhdGlvbkZyb21MaXN0KCp0aGlzKTsKLQotICAgIEFjdGl2ZURPTU9i
amVjdDo6Y29udGV4dERlc3Ryb3llZCgpOwotfQotCi0KIHZvaWQgTm90aWZpY2F0aW9uOjpzaG93
U29vbigpCiB7CiAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291
cmNlOjpVc2VySW50ZXJhY3Rpb24sIFt0aGlzXSB7CkBAIC0xNzgsMTUgKzE2MiwxMCBAQCB2b2lk
IE5vdGlmaWNhdGlvbjo6Y2xvc2UoKQogICAgIHN3aXRjaCAobV9zdGF0ZSkgewogICAgIGNhc2Ug
SWRsZToKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTaG93aW5nOiB7CisgICAgY2FzZSBTaG93
aW5nOgogICAgICAgICBpZiAoYXV0byogY2xpZW50ID0gY2xpZW50RnJvbUNvbnRleHQoKSkKICAg
ICAgICAgICAgIGNsaWVudC0+Y2FuY2VsKCp0aGlzKTsKLSAgICAgICAgaWYgKGF1dG8qIGNvbnRl
eHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpIHsKLSAgICAgICAgICAgIGlmIChjb250ZXh0
LT5pc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSgpKQotICAgICAgICAgICAgICAgIGRvd25jYXN0
PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCktPnJlZ2lzdHJhdGlvbigpLnJlbW92
ZU5vdGlmaWNhdGlvbkZyb21MaXN0KCp0aGlzKTsKLSAgICAgICAgfQogICAgICAgICBicmVhazsK
LSAgICB9CiAgICAgY2FzZSBDbG9zZWQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTMzOCw2
ICszMTcsNyBAQCBOb3RpZmljYXRpb25EYXRhIE5vdGlmaWNhdGlvbjo6ZGF0YSgpIGNvbnN0CiAg
ICAgICAgIFdURk1vdmUoc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblVSTCkuaXNvbGF0ZWRDb3B5
KCksCiAgICAgICAgIGlkZW50aWZpZXIoKSwKICAgICAgICAgKnNlc3Npb25JRCwKKyAgICAgICAg
TW9ub3RvbmljVGltZTo6bm93KCkKICAgICB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKaW5kZXggNWVkZDM2YjM3NjUw
MGUzMDYyOWFiMmRmYWJiM2Y2YzBmNzE1MzU0YS4uY2Y2MzQ0NzEyZDRiNTk5M2ZjYzA2ODJkZjQ2
MTQ4NzYzZWMyNzQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb24uaApAQCAtMTA5LDggKzEwOSw2IEBAIHByaXZhdGU6CiAgICAg
Tm90aWZpY2F0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBTdHJpbmcmJiB0aXRsZSwgT3B0
aW9ucyYmKTsKICAgICBOb3RpZmljYXRpb24oY29uc3QgTm90aWZpY2F0aW9uJik7CiAKLSAgICB2
b2lkIGNvbnRleHREZXN0cm95ZWQoKSBmaW5hbDsKLQogICAgIE5vdGlmaWNhdGlvbkNsaWVudCog
Y2xpZW50RnJvbUNvbnRleHQoKTsKICAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdl
dEludGVyZmFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIE5vdGlmaWNhdGlvbkV2ZW50VGFyZ2V0
SW50ZXJmYWNlVHlwZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRGF0YS5jcHAKaW5kZXggYmZmYjM4ZTBlNDMxZTFh
MTJmMzE4ZTc0ZjNhYjJkYzAwMmVhZmM5Zi4uZGUxMjZiYmYwNzYyNjgwMjU4NTE0NDMzMWI0MmQz
M2NmMDQ2MzVhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbkRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25EYXRhLmNwcApAQCAtMzAsMTIgKzMwLDEyIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogTm90aWZpY2F0aW9uRGF0YSBOb3RpZmljYXRpb25EYXRhOjppc29s
YXRlZENvcHkoKSBjb25zdCAmCiB7Ci0gICAgcmV0dXJuIHsgdGl0bGUuaXNvbGF0ZWRDb3B5KCks
IGJvZHkuaXNvbGF0ZWRDb3B5KCksIGljb25VUkwuaXNvbGF0ZWRDb3B5KCksIHRhZy5pc29sYXRl
ZENvcHkoKSwgbGFuZ3VhZ2UuaXNvbGF0ZWRDb3B5KCksIGRpcmVjdGlvbiwgb3JpZ2luU3RyaW5n
Lmlzb2xhdGVkQ29weSgpLCBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uVVJMLmlzb2xhdGVkQ29w
eSgpLCBub3RpZmljYXRpb25JRCwgc291cmNlU2Vzc2lvbiB9OworICAgIHJldHVybiB7IHRpdGxl
Lmlzb2xhdGVkQ29weSgpLCBib2R5Lmlzb2xhdGVkQ29weSgpLCBpY29uVVJMLmlzb2xhdGVkQ29w
eSgpLCB0YWcuaXNvbGF0ZWRDb3B5KCksIGxhbmd1YWdlLmlzb2xhdGVkQ29weSgpLCBkaXJlY3Rp
b24sIG9yaWdpblN0cmluZy5pc29sYXRlZENvcHkoKSwgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
blVSTC5pc29sYXRlZENvcHkoKSwgbm90aWZpY2F0aW9uSUQsIHNvdXJjZVNlc3Npb24sIGNyZWF0
aW9uVGltZSB9OwogfQogCiBOb3RpZmljYXRpb25EYXRhIE5vdGlmaWNhdGlvbkRhdGE6Omlzb2xh
dGVkQ29weSgpICYmCiB7Ci0gICAgcmV0dXJuIHsgV1RGTW92ZSh0aXRsZSkuaXNvbGF0ZWRDb3B5
KCksIFdURk1vdmUoYm9keSkuaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUoaWNvblVSTCkuaXNvbGF0
ZWRDb3B5KCksIFdURk1vdmUodGFnKS5pc29sYXRlZENvcHkoKSwgV1RGTW92ZShsYW5ndWFnZSku
aXNvbGF0ZWRDb3B5KCksIGRpcmVjdGlvbiwgV1RGTW92ZShvcmlnaW5TdHJpbmcpLmlzb2xhdGVk
Q29weSgpLCBXVEZNb3ZlKHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25VUkwpLmlzb2xhdGVkQ29w
eSgpLCBub3RpZmljYXRpb25JRCwgc291cmNlU2Vzc2lvbiB9OworICAgIHJldHVybiB7IFdURk1v
dmUodGl0bGUpLmlzb2xhdGVkQ29weSgpLCBXVEZNb3ZlKGJvZHkpLmlzb2xhdGVkQ29weSgpLCBX
VEZNb3ZlKGljb25VUkwpLmlzb2xhdGVkQ29weSgpLCBXVEZNb3ZlKHRhZykuaXNvbGF0ZWRDb3B5
KCksIFdURk1vdmUobGFuZ3VhZ2UpLmlzb2xhdGVkQ29weSgpLCBkaXJlY3Rpb24sIFdURk1vdmUo
b3JpZ2luU3RyaW5nKS5pc29sYXRlZENvcHkoKSwgV1RGTW92ZShzZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uVVJMKS5pc29sYXRlZENvcHkoKSwgbm90aWZpY2F0aW9uSUQsIHNvdXJjZVNlc3Npb24s
IGNyZWF0aW9uVGltZSB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkRhdGEu
aAppbmRleCAzMjIwOTgzM2VkYTIwNDE2NGJkNTYxMTc5NmQ0MDBmN2Y3YTI3YzgzLi40NDZlNzRk
NGM4YWJiOTcyNjk0M2E0NGFmNWZlYmFkNDdiZDdlN2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25EYXRhLmgKQEAgLTI3
LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgPG9wdGlvbmFsPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9u
SUQuaD4KKyNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KICNpbmNsdWRlIDx3dGYvVVVJRC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgpAQCAtNTIsMTIgKzUzLDEzIEBAIHN0cnVjdCBOb3RpZmljYXRpb25EYXRhIHsKICAgICBVUkwg
c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblVSTDsKICAgICBVVUlEIG5vdGlmaWNhdGlvbklEOwog
ICAgIFBBTDo6U2Vzc2lvbklEIHNvdXJjZVNlc3Npb247CisgICAgTW9ub3RvbmljVGltZSBjcmVh
dGlvblRpbWU7CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBOb3RpZmljYXRp
b25EYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8
IHRpdGxlIDw8IGJvZHkgPDwgaWNvblVSTCA8PCB0YWcgPDwgbGFuZ3VhZ2UgPDwgZGlyZWN0aW9u
IDw8IG9yaWdpblN0cmluZyA8PCBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uVVJMIDw8IG5vdGlm
aWNhdGlvbklEIDw8IHNvdXJjZVNlc3Npb247CisgICAgZW5jb2RlciA8PCB0aXRsZSA8PCBib2R5
IDw8IGljb25VUkwgPDwgdGFnIDw8IGxhbmd1YWdlIDw8IGRpcmVjdGlvbiA8PCBvcmlnaW5TdHJp
bmcgPDwgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblVSTCA8PCBub3RpZmljYXRpb25JRCA8PCBz
b3VyY2VTZXNzaW9uIDw8IGNyZWF0aW9uVGltZTsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4KQEAgLTExMyw2ICsxMTUsMTEgQEAgc3RkOjpvcHRpb25hbDxOb3RpZmljYXRpb25EYXRhPiBO
b3RpZmljYXRpb25EYXRhOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBpZiAoIXNvdXJj
ZVNlc3Npb24pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKKyAgICBzdGQ6Om9wdGlv
bmFsPE1vbm90b25pY1RpbWU+IGNyZWF0aW9uVGltZTsKKyAgICBkZWNvZGVyID4+IGNyZWF0aW9u
VGltZTsKKyAgICBpZiAoIWNyZWF0aW9uVGltZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKwogICAgIHJldHVybiB7IHsKICAgICAgICAgV1RGTW92ZSgqdGl0bGUpLAogICAgICAgICBX
VEZNb3ZlKCpib2R5KSwKQEAgLTEyNCw2ICsxMzEsNyBAQCBzdGQ6Om9wdGlvbmFsPE5vdGlmaWNh
dGlvbkRhdGE+IE5vdGlmaWNhdGlvbkRhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAg
ICAgICBXVEZNb3ZlKCpzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uVVJMKSwKICAgICAgICAgV1RG
TW92ZSgqbm90aWZpY2F0aW9uSUQpLAogICAgICAgICBXVEZNb3ZlKCpzb3VyY2VTZXNzaW9uKSwK
KyAgICAgICAgV1RGTW92ZSgqY3JlYXRpb25UaW1lKQogICAgIH0gfTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5oCmluZGV4
IDA1ZmRkMDNhZWY0M2M1ZDA2MGZjN2YxYmNjNDVjOGFjYmM4Yzg1Y2YuLmRkMzM2Y2EyMGVjY2Ri
ZjJhZWQ4ZmU0OGNkYTM5NTQwMzUzMTVkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAog
I2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiTmF2aWdhdGlvblByZWxvYWRTdGF0
ZS5oIgorI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkRhdGEuaCIKICNpbmNsdWRlICJQdXNoUGVybWlz
c2lvblN0YXRlLmgiCiAjaW5jbHVkZSAiUHVzaFN1YnNjcmlwdGlvbkRhdGEuaCIKICNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllci5oIgpAQCAtNDIsNiArNDMsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBTZWN1cml0
eU9yaWdpbjsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBTZXJpYWxpemVk
U2NyaXB0VmFsdWU7CiBjbGFzcyBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOwogY2xhc3MgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbjsKQEAgLTUwLDYgKzUyLDcgQEAgZW51bSBjbGFzcyBTZXJ2aWNl
V29ya2VyU3RhdGUgOiB1aW50OF90OwogZW51bSBjbGFzcyBTaG91bGROb3RpZnlXaGVuUmVzb2x2
ZWQgOiBib29sOwogc3RydWN0IEV4Y2VwdGlvbkRhdGE7CiBzdHJ1Y3QgTWVzc2FnZVdpdGhNZXNz
YWdlUG9ydHM7CitzdHJ1Y3QgTm90aWZpY2F0aW9uRGF0YTsKIHN0cnVjdCBTZXJ2aWNlV29ya2Vy
Q2xpZW50RGF0YTsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyRGF0YTsKIHN0cnVjdCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGF0YTsKQEAgLTEwMSw2ICsxMDQsOSBAQCBwdWJsaWM6CiAgICAgdXNp
bmcgR2V0UHVzaFBlcm1pc3Npb25TdGF0ZUNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChFeGNlcHRpb25PcjxQdXNoUGVybWlzc2lvblN0YXRlPiYmKT47CiAgICAgdmlydHVhbCB2b2lk
IGdldFB1c2hQZXJtaXNzaW9uU3RhdGUoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIsIEdldFB1c2hQZXJtaXNzaW9uU3RhdGVDYWxsYmFjayYmKSA9IDA7CiAKKyAgICB1c2luZyBH
ZXROb3RpZmljYXRpb25zQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlv
bk9yPFZlY3RvcjxOb3RpZmljYXRpb25EYXRhPj4mJik+OworICAgIHZpcnR1YWwgdm9pZCBnZXRO
b3RpZmljYXRpb25zKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIEdldE5vdGlmaWNhdGlvbnND
YWxsYmFjayYmKSA9IDA7CisKICAgICB1c2luZyBFeGNlcHRpb25PclZvaWRDYWxsYmFjayA9IENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8dm9pZD4mJik+OwogICAgIHZpcnR1YWwg
dm9pZCBlbmFibGVOYXZpZ2F0aW9uUHJlbG9hZChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRl
bnRpZmllciwgRXhjZXB0aW9uT3JWb2lkQ2FsbGJhY2smJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNhYmxlTmF2aWdhdGlvblByZWxvYWQoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50
aWZpZXIsIEV4Y2VwdGlvbk9yVm9pZENhbGxiYWNrJiYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcApp
bmRleCA0NzU0MmRkZjQxNmU4ZTM2M2NjNzQyNjIyMjY0MTQxNGE0ZmIxZjBlLi4yNGVmMWNkMzFl
OWNhMDFhNzAxMzI4NGYyMDUwYWVlODk3OGUyMzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCkBAIC02
MTAsNiArNjEwLDI3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6Z2V0UHVzaFBlcm1p
c3Npb25TdGF0ZShTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlCiAgICAgfSk7CiB9CiAKK3Zv
aWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6Z2V0Tm90aWZpY2F0aW9ucyhjb25zdCBVUkwmIHNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25VUkwsIGNvbnN0IFN0cmluZyYgdGFnLCBET01Qcm9taXNl
RGVmZXJyZWQ8SURMU2VxdWVuY2U8SURMSW50ZXJmYWNlPE5vdGlmaWNhdGlvbj4+PiYmIHByb21p
c2UpCit7CisgICAgZW5zdXJlU1dDbGllbnRDb25uZWN0aW9uKCkuZ2V0Tm90aWZpY2F0aW9ucyhz
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uVVJMLCB0YWcsIFtwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKSwgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dKGF1dG8mJiByZXN1bHQpIG11dGFi
bGUgeworICAgICAgICBhdXRvKiBjb250ZXh0ID0gcHJvdGVjdGVkVGhpcy0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOworICAgICAgICBpZiAoIWNvbnRleHQpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICAgICAgcHJv
bWlzZS5yZWplY3QocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICBhdXRvIGRhdGEgPSByZXN1bHQucmVsZWFzZVJldHVy
blZhbHVlKCk7CisgICAgICAgIHN0ZDo6c29ydChkYXRhLmJlZ2luKCksIGRhdGEuZW5kKCksIFtd
KGF1dG8mIGEsIGF1dG8mIGIpIHsgcmV0dXJuIGEuY3JlYXRpb25UaW1lIDwgYi5jcmVhdGlvblRp
bWU7IH0pOworICAgICAgICBhdXRvIG5vdGlmaWNhdGlvbnMgPSBtYXAoZGF0YSwgW2NvbnRleHRd
KGF1dG8mJiBkYXRhKSB7CisgICAgICAgICAgICByZXR1cm4gTm90aWZpY2F0aW9uOjpjcmVhdGUo
KmNvbnRleHQsIFdURk1vdmUoZGF0YSkpOworICAgICAgICB9KTsKKyAgICAgICAgcHJvbWlzZS5y
ZXNvbHZlKFdURk1vdmUobm90aWZpY2F0aW9ucykpOworICAgIH0pOworfQorCiB2b2lkIFNlcnZp
Y2VXb3JrZXJDb250YWluZXI6OnF1ZXVlVGFza1RvRGlzcGF0Y2hDb250cm9sbGVyQ2hhbmdlRXZl
bnQoKQogewogICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1
cnJlbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDb250YWluZXIuaAppbmRleCBhYjJiMjM3NzUyNGEzOTg2MzZhZmUwNDBkOGQx
ZWQ4MDMxNjdkM2YyLi5kMjE2Nzk3Njk0ZThmZDlmNmY0ZjZiNmFkMDhmNGEzMGY2Zjc0Njk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNv
bnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ29udGFpbmVyLmgKQEAgLTkxLDYgKzkxLDcgQEAgcHVibGljOgogICAgIHZvaWQgdW5zdWJz
Y3JpYmVGcm9tUHVzaFNlcnZpY2UoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIs
IFB1c2hTdWJzY3JpcHRpb25JZGVudGlmaWVyLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMQm9vbGVh
bj4mJik7CiAgICAgdm9pZCBnZXRQdXNoU3Vic2NyaXB0aW9uKFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb24mLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMTnVsbGFibGU8SURMSW50ZXJmYWNlPFB1c2hT
dWJzY3JpcHRpb24+Pj4mJik7CiAgICAgdm9pZCBnZXRQdXNoUGVybWlzc2lvblN0YXRlKFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMRW51
bWVyYXRpb248UHVzaFBlcm1pc3Npb25TdGF0ZT4+JiYpOworICAgIHZvaWQgZ2V0Tm90aWZpY2F0
aW9ucyhjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMU2Vx
dWVuY2U8SURMSW50ZXJmYWNlPE5vdGlmaWNhdGlvbj4+PiYmKTsKIAogICAgIFNlcnZpY2VXb3Jr
ZXJKb2IqIGpvYihTZXJ2aWNlV29ya2VySm9iSWRlbnRpZmllcik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uLmNwcAppbmRleCAxZThmNGRlYzEwYTg0NzRmZTEwMDA1ODQ2M2ZmODFmNWRkNmEzZjhiLi40
MTU4ZjhiNmI0ZDIyNzY2YjkyODVmNTdmZWM5ZmYyNzU0YjQxMTI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb24uY3BwCkBAIC0zMDAsNDkgKzMwMCwxMCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb246OnNob3dOb3RpZmljYXRpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dAog
ICAgIH0pOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OmdldE5vdGlmaWNh
dGlvbnMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgR2V0Tm90aWZpY2F0
aW9uT3B0aW9ucyYgZmlsdGVyLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMU2VxdWVuY2U8SURMSW50
ZXJmYWNlPE5vdGlmaWNhdGlvbj4+PiBwcm9taXNlKQordm9pZCBTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uOjpnZXROb3RpZmljYXRpb25zKGNvbnN0IEdldE5vdGlmaWNhdGlvbk9wdGlvbnMmIGZp
bHRlciwgRE9NUHJvbWlzZURlZmVycmVkPElETFNlcXVlbmNlPElETEludGVyZmFjZTxOb3RpZmlj
YXRpb24+Pj4gcHJvbWlzZSkKIHsKLSAgICBhdXRvIG5vdGlmaWNhdGlvbnMgPSBmaWx0ZXJlZE5v
dGlmaWNhdGlvbkxpc3QoZmlsdGVyLnRhZyk7Ci0gICAgY29udGV4dC5ldmVudExvb3AoKS5xdWV1
ZVRhc2soVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUocHJv
bWlzZSksIG5vdGlmaWNhdGlvbnMgPSBXVEZNb3ZlKG5vdGlmaWNhdGlvbnMpXSgpIG11dGFibGUg
ewotICAgICAgICBwcm9taXNlLnJlc29sdmUoV1RGTW92ZShub3RpZmljYXRpb25zKSk7Ci0gICAg
fSk7Ci19Ci0KLXZvaWQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6YWRkTm90aWZpY2F0aW9u
VG9MaXN0KE5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uKQotewotICAgIC8vIEEgTm90aWZpY2F0
aW9uIGF0IHRoaXMgZXhhY3QgYWRkcmVzcyBtaWdodCBwcmV2aW91c2x5IGhhdmUgYmVlbiBpbiB0
aGUgbGlzdCBidXQgbm90IHN1Y2Nlc3NmdWxseSByZW1vdmVkLgotICAgIC8vIFRoZSBXZWFrSGFz
aFNldCBjYXB0dXJlcyB0aGF0IHBvc3NpYmlsaXR5IGhlcmUgdG8gaGVscCB1cyBtYWludGFpbiBj
b25zaXN0ZW5jeS4KLSAgICBhdXRvIGl0ZXIgPSBtX25vdGlmaWNhdGlvbkxpc3QuZmluZCgmbm90
aWZpY2F0aW9uKTsKLSAgICBpZiAoaXRlciAhPSBtX25vdGlmaWNhdGlvbkxpc3QuZW5kKCkpIHsK
LSAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fbm90aWZpY2F0aW9uU2V0LmNvbnRhaW5zKG5vdGlm
aWNhdGlvbikpOwotICAgICAgICBtX25vdGlmaWNhdGlvbkxpc3QucmVtb3ZlKGl0ZXIpOwotICAg
IH0KLQotICAgIG1fbm90aWZpY2F0aW9uTGlzdC5hZGQoJm5vdGlmaWNhdGlvbik7Ci0gICAgYXV0
byByZXN1bHQgPSBtX25vdGlmaWNhdGlvblNldC5hZGQobm90aWZpY2F0aW9uKTsKLSAgICBBU1NF
UlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOworICAgIG1fY29udGFpbmVyLT5n
ZXROb3RpZmljYXRpb25zKG1fcmVnaXN0cmF0aW9uRGF0YS5zY29wZVVSTCwgZmlsdGVyLnRhZywg
V1RGTW92ZShwcm9taXNlKSk7CiB9Ci0KLXZvaWQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6
cmVtb3ZlTm90aWZpY2F0aW9uRnJvbUxpc3QoTm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24pCi17
Ci0gICAgLy8gVGhlIHNhbWUgbm90aWZpY2F0aW9uIG1pZ2h0IHRyeSB0byByZW1vdmUgaXRzZWxm
IGZyb20gdGhpcyBsaXN0IG1vcmUgdGhhbiBvbmNlLCBhbmQgdGhhdCdzIGZpbmUuCi0gICAgbV9u
b3RpZmljYXRpb25MaXN0LnJlbW92ZSgmbm90aWZpY2F0aW9uKTsKLSAgICBtX25vdGlmaWNhdGlv
blNldC5yZW1vdmUobm90aWZpY2F0aW9uKTsKLX0KLQotVmVjdG9yPFJlZjxOb3RpZmljYXRpb24+
PiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpmaWx0ZXJlZE5vdGlmaWNhdGlvbkxpc3QoY29u
c3QgU3RyaW5nJiBmaWx0ZXJlZFRhZykKLXsKLSAgICBWZWN0b3I8UmVmPE5vdGlmaWNhdGlvbj4+
IHJlc3VsdHM7Ci0gICAgZm9yIChhdXRvKiBub3RpZmljYXRpb24gOiBtX25vdGlmaWNhdGlvbkxp
c3QpIHsKLSAgICAgICAgaWYgKCFtX25vdGlmaWNhdGlvblNldC5jb250YWlucygqbm90aWZpY2F0
aW9uKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoZmlsdGVyZWRUYWcuaXNF
bXB0eSgpIHx8IG5vdGlmaWNhdGlvbi0+dGFnKCkgPT0gZmlsdGVyZWRUYWcpCi0gICAgICAgICAg
ICByZXN1bHRzLmFwcGVuZChub3RpZmljYXRpb24tPmNvcHlGb3JHZXROb3RpZmljYXRpb25zKCkp
OwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHRzOwotfQotCiAjZW5kaWYgLy8gRU5BQkxFKE5P
VElGSUNBVElPTl9FVkVOVCkKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uLmgKaW5kZXggZjdjYzkwZWViNDA3OWE0ZmRmMTIxZTJjZjcxZDg1NzBmNTc1ZjZhOS4uNjlm
YjVlM2E3MGU1ZWNjMDFjZDEzZTFhMjg2NTA4NGJmYTAxNWEzOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bi5oCkBAIC0xMDAsMTEgKzEwMCw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgdm9pZCBzaG93
Tm90aWZpY2F0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBTdHJpbmcmJiB0aXRsZSwgTm90
aWZpY2F0aW9uT3B0aW9ucyYmLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7Ci0gICAgdm9p
ZCBnZXROb3RpZmljYXRpb25zKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBHZXROb3Rp
ZmljYXRpb25PcHRpb25zJiBmaWx0ZXIsIERPTVByb21pc2VEZWZlcnJlZDxJRExTZXF1ZW5jZTxJ
RExJbnRlcmZhY2U8Tm90aWZpY2F0aW9uPj4+KTsKLQotICAgIHZvaWQgYWRkTm90aWZpY2F0aW9u
VG9MaXN0KE5vdGlmaWNhdGlvbiYpOwotICAgIHZvaWQgcmVtb3ZlTm90aWZpY2F0aW9uRnJvbUxp
c3QoTm90aWZpY2F0aW9uJik7Ci0gICAgVmVjdG9yPFJlZjxOb3RpZmljYXRpb24+PiBmaWx0ZXJl
ZE5vdGlmaWNhdGlvbkxpc3QoY29uc3QgU3RyaW5nJiBmaWx0ZXJlZFRhZyk7CisgICAgdm9pZCBn
ZXROb3RpZmljYXRpb25zKGNvbnN0IEdldE5vdGlmaWNhdGlvbk9wdGlvbnMmIGZpbHRlciwgRE9N
UHJvbWlzZURlZmVycmVkPElETFNlcXVlbmNlPElETEludGVyZmFjZTxOb3RpZmljYXRpb24+Pj4p
OwogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC0xMjgsMTEgKzEyNCw2IEBAIHByaXZhdGU6CiAgICAg
UmVmUHRyPFNlcnZpY2VXb3JrZXI+IG1fYWN0aXZlV29ya2VyOwogCiAgICAgc3RkOjp1bmlxdWVf
cHRyPE5hdmlnYXRpb25QcmVsb2FkTWFuYWdlcj4gbV9uYXZpZ2F0aW9uUHJlbG9hZDsKLQotI2lm
IEVOQUJMRShOT1RJRklDQVRJT05fRVZFTlQpCi0gICAgTGlzdEhhc2hTZXQ8Tm90aWZpY2F0aW9u
Kj4gbV9ub3RpZmljYXRpb25MaXN0OwotICAgIFdlYWtIYXNoU2V0PE5vdGlmaWNhdGlvbj4gbV9u
b3RpZmljYXRpb25TZXQ7Ci0jZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uLmlkbAppbmRleCBiOTUzZjlkMDMxMzUyNmNkZGJiN2I5YWZjNmRhMWI3
OWYwNDM0YmVhLi4yZWYyMWMzYzk0N2VlNTMzOTFmZThiYzdjZDI0ZjZmODQwMGYyZGFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbi5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb24uaWRsCkBAIC00Niw3ICs0Niw3IEBACiAgICAgW05ld09iamVjdF0g
UHJvbWlzZTxib29sZWFuPiB1bnJlZ2lzdGVyKCk7CiAKICAgICBbQ29uZGl0aW9uYWw9Tk9USUZJ
Q0FUSU9OX0VWRU5ULCBFbmFibGVkQXRSdW50aW1lPU5vdGlmaWNhdGlvbkV2ZW50RW5hYmxlZCwg
Q2FsbFdpdGg9Q3VycmVudFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIFByb21pc2U8dW5kZWZpbmVk
PiBzaG93Tm90aWZpY2F0aW9uKERPTVN0cmluZyB0aXRsZSwgb3B0aW9uYWwgTm90aWZpY2F0aW9u
T3B0aW9ucyBvcHRpb25zKTsKLSAgICBbQ29uZGl0aW9uYWw9Tk9USUZJQ0FUSU9OX0VWRU5ULCBF
bmFibGVkQXRSdW50aW1lPU5vdGlmaWNhdGlvbkV2ZW50RW5hYmxlZCwgQ2FsbFdpdGg9Q3VycmVu
dFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIFByb21pc2U8c2VxdWVuY2U8Tm90aWZpY2F0aW9uPj4g
Z2V0Tm90aWZpY2F0aW9ucyhvcHRpb25hbCBHZXROb3RpZmljYXRpb25PcHRpb25zIGZpbHRlcik7
CisgICAgW0NvbmRpdGlvbmFsPU5PVElGSUNBVElPTl9FVkVOVCwgRW5hYmxlZEF0UnVudGltZT1O
b3RpZmljYXRpb25FdmVudEVuYWJsZWRdIFByb21pc2U8c2VxdWVuY2U8Tm90aWZpY2F0aW9uPj4g
Z2V0Tm90aWZpY2F0aW9ucyhvcHRpb25hbCBHZXROb3RpZmljYXRpb25PcHRpb25zIGZpbHRlcik7
CiAKICAgICAvLyBldmVudAogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb251cGRhdGVmb3Vu
ZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9Xb3JrZXJTV0Ns
aWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1dvcmtl
clNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKaW5kZXggYmUyZjNlZjFjZTBlYWFiODI3MjhhMWMxODRm
ZjEyNWFjNDUyNTdjNi4uYzUyNGVjMGE3NWI2YWZiMjgxN2JmNmUzODIzMTc1NmY5NWI3ZWYyYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1dvcmtlclNXQ2xpZW50
Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1dvcmtl
clNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKIAorI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkRhdGEuaCIKICNpbmNsdWRl
ICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnREYXRhLmgi
CiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckpvYkRhdGEuaCIKQEAgLTc5LDcgKzgwLDExIEBAIFdv
cmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6fldvcmtlclNXQ2xpZW50Q29ubmVjdGlvbigpCiAgICAg
ICAgIGNhbGxiYWNrKEV4Y2VwdGlvbiB7IEFib3J0RXJyb3IsICJjb250ZXh0IHN0b3BwZWQiX3Mg
fSk7CiAKICAgICBhdXRvIG5hdmlnYXRpb25QcmVsb2FkU3RhdGVDYWxsYmFja3MgPSBXVEZNb3Zl
KG1fbmF2aWdhdGlvblByZWxvYWRTdGF0ZUNhbGxiYWNrcyk7Ci0gICAgZm9yIChhdXRvJiBjYWxs
YmFjayA6IG1fbmF2aWdhdGlvblByZWxvYWRTdGF0ZUNhbGxiYWNrcy52YWx1ZXMoKSkKKyAgICBm
b3IgKGF1dG8mIGNhbGxiYWNrIDogbmF2aWdhdGlvblByZWxvYWRTdGF0ZUNhbGxiYWNrcy52YWx1
ZXMoKSkKKyAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uIHsgQWJvcnRFcnJvciwgImNvbnRleHQg
c3RvcHBlZCJfcyB9KTsKKworICAgIGF1dG8gZ2V0Tm90aWZpY2F0aW9uc0NhbGxiYWNrcyA9IFdU
Rk1vdmUobV9nZXROb3RpZmljYXRpb25zQ2FsbGJhY2tzKTsKKyAgICBmb3IgKGF1dG8mIGNhbGxi
YWNrIDogZ2V0Tm90aWZpY2F0aW9uc0NhbGxiYWNrcy52YWx1ZXMoKSkKICAgICAgICAgY2FsbGJh
Y2soRXhjZXB0aW9uIHsgQWJvcnRFcnJvciwgImNvbnRleHQgc3RvcHBlZCJfcyB9KTsKIH0KIApA
QCAtMjkzLDYgKzI5OCwyMiBAQCB2b2lkIFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6Z2V0UHVz
aFBlcm1pc3Npb25TdGF0ZShTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSQogICAgIH0pOwogfQog
Cit2b2lkIFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6Z2V0Tm90aWZpY2F0aW9ucyhjb25zdCBV
UkwmIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25VUkwsIGNvbnN0IFN0cmluZyYgdGFnLCBHZXRO
b3RpZmljYXRpb25zQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICB1aW50NjRfdCByZXF1ZXN0
SWRlbnRpZmllciA9ICsrbV9sYXN0UmVxdWVzdElkZW50aWZpZXI7CisgICAgbV9nZXROb3RpZmlj
YXRpb25zQ2FsbGJhY2tzLmFkZChyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykp
OworICAgIAorICAgIGNhbGxPbk1haW5UaHJlYWQoW3RocmVhZCA9IG1fdGhyZWFkLCByZXF1ZXN0
SWRlbnRpZmllciwgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblVSTCA9IHNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25VUkwuaXNvbGF0ZWRDb3B5KCksIHRhZyA9IHRhZy5pc29sYXRlZENvcHkoKV0o
KSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byYgY29ubmVjdGlvbiA9IFNlcnZpY2VXb3JrZXJQcm92
aWRlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlckNvbm5lY3Rpb24oKTsKKyAgICAgICAgY29u
bmVjdGlvbi5nZXROb3RpZmljYXRpb25zKHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25VUkwsIHRh
ZywgW3RocmVhZCA9IFdURk1vdmUodGhyZWFkKSwgcmVxdWVzdElkZW50aWZpZXJdKGF1dG8mJiBy
ZXN1bHQpIHsKKyAgICAgICAgICAgIHRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShb
cmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdCA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHJlc3Vs
dCkpXShhdXRvJiBzY29wZSkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgYXV0byBjYWxsYmFj
ayA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihzY29wZSkuc3dDbGllbnRDb25uZWN0aW9u
KCkubV9nZXROb3RpZmljYXRpb25zQ2FsbGJhY2tzLnRha2UocmVxdWVzdElkZW50aWZpZXIpOwor
ICAgICAgICAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUocmVzdWx0KSk7CisgICAgICAgICAgICB9
LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9
CisKIHZvaWQgV29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjplbmFibGVOYXZpZ2F0aW9uUHJlbG9h
ZChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciByZWdpc3RyYXRpb25JZGVudGlm
aWVyLCBFeGNlcHRpb25PclZvaWRDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIHVpbnQ2NF90
IHJlcXVlc3RJZGVudGlmaWVyID0gKyttX2xhc3RSZXF1ZXN0SWRlbnRpZmllcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9Xb3JrZXJTV0NsaWVudENvbm5lY3Rp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9Xb3JrZXJTV0NsaWVudENvbm5l
Y3Rpb24uaAppbmRleCA0Nzc5ZGZmMzE2MGVjZDZjMDI4ZjdmMzU3Y2QxM2JjMjlmMzExYmYwLi4y
YWE0YTQwOTRjZGU4OTQ2YmY0OGI0YzFhNzk3OWI3ZWJkZjY0ZTZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvV29ya2VyU1dDbGllbnRDb25uZWN0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1dvcmtlclNXQ2xpZW50Q29ubmVjdGlv
bi5oCkBAIC02MSw2ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1bnN1YnNjcmliZUZyb21Q
dXNoU2VydmljZShTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgUHVzaFN1YnNj
cmlwdGlvbklkZW50aWZpZXIsIFVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlQ2FsbGJhY2smJikg
ZmluYWw7CiAgICAgdm9pZCBnZXRQdXNoU3Vic2NyaXB0aW9uKFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25JZGVudGlmaWVyLCBHZXRQdXNoU3Vic2NyaXB0aW9uQ2FsbGJhY2smJikgZmluYWw7CiAg
ICAgdm9pZCBnZXRQdXNoUGVybWlzc2lvblN0YXRlKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyLCBHZXRQdXNoUGVybWlzc2lvblN0YXRlQ2FsbGJhY2smJikgZmluYWw7CisgICAg
dm9pZCBnZXROb3RpZmljYXRpb25zKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIEdldE5vdGlm
aWNhdGlvbnNDYWxsYmFjayYmKSBmaW5hbDsKIAogICAgIHZvaWQgZW5hYmxlTmF2aWdhdGlvblBy
ZWxvYWQoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIEV4Y2VwdGlvbk9yVm9p
ZENhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgZGlzYWJsZU5hdmlnYXRpb25QcmVsb2FkKFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBFeGNlcHRpb25PclZvaWRDYWxsYmFj
ayYmKSBmaW5hbDsKQEAgLTgwLDYgKzgxLDcgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPHVpbnQ2
NF90LCBHZXRQdXNoUGVybWlzc2lvblN0YXRlQ2FsbGJhY2s+IG1fZ2V0UHVzaFBlcm1pc3Npb25T
dGF0ZUNhbGxiYWNrczsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBFeGNlcHRpb25PclZvaWRDYWxs
YmFjaz4gbV92b2lkQ2FsbGJhY2tzOwogICAgIEhhc2hNYXA8dWludDY0X3QsIEV4Y2VwdGlvbk9y
TmF2aWdhdGlvblByZWxvYWRTdGF0ZUNhbGxiYWNrPiBtX25hdmlnYXRpb25QcmVsb2FkU3RhdGVD
YWxsYmFja3M7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgR2V0Tm90aWZpY2F0aW9uc0NhbGxiYWNr
PiBtX2dldE5vdGlmaWNhdGlvbnNDYWxsYmFja3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
b3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKaW5kZXggZmQxOTZk
MzBmNDdlOGVjYzdkYjBmYzBjZGIyNzYzNzMzMGIzZTFiMy4uOThjYThjZWJjYmFjNGVkMjEyYTdl
YmNkMDc5NmJlNDIyYWM4ZTNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5LmNwcApAQCAtMzAxLDQgKzMwMSwxOCBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eTo6cHJvdmlkZXJEaWRSZW1vdmVOb3RpZmljYXRpb25Qb2xpY2llcyhBUEk6OkFycgogICAg
IHByb2Nlc3NQb29sKCktPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViTm90aWZpY2F0
aW9uTWFuYWdlcjo6RGlkUmVtb3ZlTm90aWZpY2F0aW9uRGVjaXNpb25zKG9yaWdpblN0cmluZ3Mp
KTsKIH0KIAordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmdldE5vdGlmaWNhdGlv
bnMoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGFnLCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPE5vdGlmaWNhdGlvbkRhdGE+JiYp
PiYmIGNhbGxiYWNrKQoreworICAgIFZlY3RvcjxOb3RpZmljYXRpb25EYXRhPiByZXN1bHQ7Cisg
ICAgZm9yIChhdXRvJiBub3RpZmljYXRpb24gOiBtX25vdGlmaWNhdGlvbnMudmFsdWVzKCkpIHsK
KyAgICAgICAgYXV0byYgZGF0YSA9IG5vdGlmaWNhdGlvbi0+ZGF0YSgpOworICAgICAgICBpZiAo
ZGF0YS5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uVVJMICE9IHVybCB8fCBkYXRhLnNvdXJjZVNl
c3Npb24gIT0gc2Vzc2lvbklEKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICgh
dGFnLmlzRW1wdHkoKSAmJiBkYXRhLnRhZyAhPSB0YWcpCisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgcmVzdWx0LmFwcGVuZChkYXRhKTsKKyAgICB9CisgICAgY2FsbGJhY2soV1RGTW92
ZShyZXN1bHQpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHkuaAppbmRleCBlODdkYjEwZjUxYWJjNTcwZDlkMmE5YTc4NjkxNmIx
NTJlYjYxMGU5Li43ZGJlZGEyOGEzYTEyNDRiYzliMGU1ODg0ZGE0ZTU5OTE5YzVjOTYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNh
dGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgKQEAgLTY4LDYgKzY4LDggQEAgcHVi
bGljOgogICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSosIGNvbnN0IFZl
Y3RvcjxVVUlEPiYgcGFnZU5vdGlmaWNhdGlvbklEcyk7CiAgICAgdm9pZCBkaWREZXN0cm95Tm90
aWZpY2F0aW9uKFdlYlBhZ2VQcm94eSosIGNvbnN0IFVVSUQmIHBhZ2VOb3RpZmljYXRpb25JRCk7
CiAKKyAgICB2b2lkIGdldE5vdGlmaWNhdGlvbnMoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwg
UEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6Ok5v
dGlmaWNhdGlvbkRhdGE+JiYpPiYmKTsKKwogICAgIHZvaWQgcHJvdmlkZXJEaWRTaG93Tm90aWZp
Y2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKICAgICB2b2lkIHByb3ZpZGVyRGlkQ2xp
Y2tOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpOwogICAgIHZvaWQgcHJvdmlk
ZXJEaWRDbGlja05vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBiZGM4YTQzMWNk
NTM0NDcwODQ1ZGE1ZGIwZmMxNTJlOWE2NzYwZjA5Li40Zjc4YTEyY2RhOTQ2YmM5ZjljNGJiZTFm
OGUzNTAxY2U4NjllZGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAKQEAgLTIxMDQsNiArMjEwNCwxMSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c3lz
dGVtQmVlcCgpCiAgICAgUEFMOjpzeXN0ZW1CZWVwKCk7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzc1By
b3h5OjpnZXROb3RpZmljYXRpb25zKGNvbnN0IFVSTCYgcmVnaXN0cmF0aW9uVVJMLCBjb25zdCBT
dHJpbmcmIHRhZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8Tm90aWZpY2F0aW9uRGF0
YT4mJik+JiYgY2FsbGJhY2spCit7CisgICAgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpz
aGFyZWRTZXJ2aWNlV29ya2VyTWFuYWdlcigpLmdldE5vdGlmaWNhdGlvbnMocmVnaXN0cmF0aW9u
VVJMLCB0YWcsIHNlc3Npb25JRCgpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgTUVTU0FHRV9DSEVDSwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCBjYjQyNDRiYWY4YTg2OTg1ODUwZjkwNjJmZDYz
MTcyMjgwYjQxNTRjLi4wNTU1ZDNkNTc2MzQ1YmIyNDk2MTA4NThkNjk0NjZlNDkxNTlmMWFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtNzQsNiArNzQs
NyBAQCBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IERlZmVycmFibGVPbmVTaG90VGltZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CitzdHJ1Y3Qg
Tm90aWZpY2F0aW9uRGF0YTsKIHN0cnVjdCBQbHVnaW5JbmZvOwogc3RydWN0IFByZXdhcm1JbmZv
cm1hdGlvbjsKIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CkBAIC00MjcsNiArNDI4LDcgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0Q2FwdGlvbkRpc3BsYXlNb2RlKFdlYkNvcmU6OkNhcHRpb25V
c2VyUHJlZmVyZW5jZXM6OkNhcHRpb25EaXNwbGF5TW9kZSk7CiAgICAgdm9pZCBzZXRDYXB0aW9u
TGFuZ3VhZ2UoY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKKyAgICB2b2lkIGdldE5vdGlmaWNhdGlv
bnMoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8V2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YT4mJik+JiYpOwogCiAgICAgV2ViQ29yZTo6Q3Jv
c3NPcmlnaW5Nb2RlIGNyb3NzT3JpZ2luTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3Jvc3NPcmln
aW5Nb2RlOyB9CiAgICAgQ2FwdGl2ZVBvcnRhbE1vZGUgY2FwdGl2ZVBvcnRhbE1vZGUoKSBjb25z
dCB7IHJldHVybiBtX2NhcHRpdmVQb3J0YWxNb2RlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYjc0Nzk2MDNhZTBi
NThmOWJiZDI1ZGRlNzMwZTM4ZjNhMWYxZTgyNC4uODhhMGY4MjY1NDZlYTM0MzE5MzY0ODlmZjIw
ZWZlM2RhYjlmZTk4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtOTEsNCArOTEsNiBAQCBtZXNzYWdlcyAtPiBXZWJQ
cm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldENhcHRpb25EaXNwbGF5TW9kZShX
ZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpDYXB0aW9uRGlzcGxheU1vZGUgbW9kZSkK
ICAgICBTZXRDYXB0aW9uTGFuZ3VhZ2UoU3RyaW5nIGxhbmd1YWdlKQogI2VuZGlmCisKKyAgICBH
ZXROb3RpZmljYXRpb25zKFVSTCByZWdpc3RyYXRpb25VUkwsIFN0cmluZyB0YWcpIC0+IChWZWN0
b3I8V2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YT4gcmVzdWx0KQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5j
cHAKaW5kZXggNTNkZmQwYzZhNTM3ZmE5MDI3MzNlMDQ3ZmVjM2Y2YjY3YjY3ZTc3NS4uZDkzYjM0
ZDY4ZmE5OTVhYTQxYjA3YmMwZWQzNTJiNzZlNzk3YzVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3Bw
CkBAIC0zOCw3ICszOCw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlBh
Z2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgotI2luY2x1ZGUgIldl
YlByb2Nlc3NQb29sTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIldlYlNXT3JpZ2luVGFibGUuaCIKICNpbmNsdWRlICJXZWJTV1NlcnZl
ckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KQEAg
LTI2OSw2ICsyNjksMTEgQEAgdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmdldFB1c2hQZXJt
aXNzaW9uU3RhdGUoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHIKICAgICB9KTsKIH0KIAor
dm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmdldE5vdGlmaWNhdGlvbnMoY29uc3QgVVJMJiBy
ZWdpc3RyYXRpb25VUkwsIGNvbnN0IFN0cmluZyYgdGFnLCBHZXROb3RpZmljYXRpb25zQ2FsbGJh
Y2smJiBjYWxsYmFjaykKK3sKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3NQ
cm94eTo6R2V0Tm90aWZpY2F0aW9ucyB7IHJlZ2lzdHJhdGlvblVSTCwgdGFnIH0sIFdURk1vdmUo
Y2FsbGJhY2spKTsKK30KKwogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmVuYWJsZU5hdmln
YXRpb25QcmVsb2FkKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
IHJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIEV4Y2VwdGlvbk9yVm9pZENhbGxiYWNrJiYgY2FsbGJh
Y2spCiB7CiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5l
Y3Rpb246OkVuYWJsZU5hdmlnYXRpb25QcmVsb2FkIHsgcmVnaXN0cmF0aW9uSWRlbnRpZmllciB9
LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYmIGVycm9yKSBtdXRhYmxlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50
Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGll
bnRDb25uZWN0aW9uLmgKaW5kZXggNDc3MmI2MjljYWRhN2I2ZTc5Y2FjNmE0MDA4MmEzNGNkZmZh
OWE1MS4uMzc3MTkxMjk2MjNjZTc1ODg0ZmNlYmEyM2IxNzA2ZDA2YTMxODRmYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9u
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25u
ZWN0aW9uLmgKQEAgLTk0LDYgKzk0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVuc3Vic2NyaWJl
RnJvbVB1c2hTZXJ2aWNlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlm
aWVyLCBXZWJDb3JlOjpQdXNoU3Vic2NyaXB0aW9uSWRlbnRpZmllciwgVW5zdWJzY3JpYmVGcm9t
UHVzaFNlcnZpY2VDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGdldFB1c2hTdWJzY3JpcHRp
b24oV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIEdldFB1c2hT
dWJzY3JpcHRpb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGdldFB1c2hQZXJtaXNzaW9u
U3RhdGUoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIEdldFB1
c2hQZXJtaXNzaW9uU3RhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIGdldE5vdGlmaWNh
dGlvbnMoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgR2V0Tm90aWZpY2F0aW9uc0NhbGxiYWNr
JiYpIGZpbmFsOwogCiAgICAgdm9pZCBlbmFibGVOYXZpZ2F0aW9uUHJlbG9hZChXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgRXhjZXB0aW9uT3JWb2lkQ2FsbGJh
Y2smJikgZmluYWw7CiAgICAgdm9pZCBkaXNhYmxlTmF2aWdhdGlvblByZWxvYWQoV2ViQ29yZTo6
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIEV4Y2VwdGlvbk9yVm9pZENhbGxi
YWNrJiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDUxNzY3MTJhOTc1ZmZmMzQ3NzZlOWNlMGU5M2RkYjEwNmI1
Y2I4ZWUuLjFhMjI0YzdjNmNkNTJiMWY4NDk5MjVhNWZmZWE5YzUxYTRkMTM3ZjQgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAyMi0wMy0zMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5j
b20+CisKKyAgICAgICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5nZXROb3RpZmljYXRpb25z
IHNob3VsZCBsaXN0IGFsbCBwZXJzaXN0ZW50IG5vdGlmaWNhdGlvbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODU0NAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3Nl
cnZpY2UvZ2V0bm90aWZpY2F0aW9ucy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0
cy93b3JrZXJzL3NlcnZpY2UvZ2V0bm90aWZpY2F0aW9ucy5odG1sOgorCiAyMDIyLTAzLTMwICBZ
b3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgU2Vy
dmljZVdvcmtlciBXaW5kb3dDbGllbnQuYW5jZXN0b3JPcmlnaW5zCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9nZXRub3RpZmljYXRpb25zLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2dldG5vdGlm
aWNhdGlvbnMtZXhwZWN0ZWQudHh0CmluZGV4IGY4MTA4YzZkOTBlMmI2M2U4YzlhZWU0OTJkYWM2
YWU4MTEzMDU1YjAuLjJjYTI1NzQxYjk5ODdjOWUxZjIyMzQzZmQwODI4YmE3ODNiMmM0YmYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2dldG5vdGlm
aWNhdGlvbnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vy
cy9zZXJ2aWNlL2dldG5vdGlmaWNhdGlvbnMtZXhwZWN0ZWQudHh0CkBAIC0zNyw2ICszNywxMSBA
QCBUaXRsZTogQnVkZHkKIEJvZHk6IEJvZHkzCiBUYWc6IHRhZy1iCiAKK1JldHJpZXZpbmcgbm90
aWZpY2F0aW9ucyBmcm9tIHBhZ2UgcmVnaXN0cmF0aW9uIG9iamVjdCAtIDMKK05vdGlmaWNhdGlv
bjogSGVsbG8gLyBCb2R5MSAvIHRhZy1hCitOb3RpZmljYXRpb246IFRoZXJlIC8gQm9keTIgLyB0
YWctYgorTm90aWZpY2F0aW9uOiBCdWRkeSAvIEJvZHkzIC8gdGFnLWIKK1JldHJpZXZpbmcgbm90
aWZpY2F0aW9ucyBmcm9tIHBhZ2UgcmVnaXN0cmF0aW9uIG9iamVjdCAtIGVuZAogUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9nZXRub3RpZmljYXRpb25zLmh0bWwg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9nZXRub3RpZmljYXRpb25z
Lmh0bWwKaW5kZXggMDQzZDQzMDU0MjYyNTQ3MWYwMDkzZTk4MjEzNjI5NjQwMzBkMjU0OC4uMzRl
ZjMxZWNkNWFlM2YxZDJkODA2NzRkMTRiNTA3OWI4YTE4ZmZlOCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvZ2V0bm90aWZpY2F0aW9ucy5odG1sCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2dldG5vdGlmaWNhdGlv
bnMuaHRtbApAQCAtMiw3ICsyLDYgQEAKIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL25vdGlmaWNhdGlvbnMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KLQogZnVuY3Rpb24gZmFpbFRoZVRlc3Qo
bXNnKQogewogICAgIHRlc3RGYWlsZWQobXNnKTsKQEAgLTE5LDggKzE4LDkgQEAgZGVzY3JpcHRp
b24oIlRoaXMgdGVzdHMgdGhhdCBwZXJzaXN0ZW50IG5vdGlmaWNhdGlvbnMgY3JlYXRlZCBieSBh
IHNlcnZpY2Ugd29ya2UKIAogc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJOb3RpZmljYXRpb24ucGVy
bWlzc2lvbiIsICJncmFudGVkIik7CiAKK3ZhciByZWdpc3RyYXRpb247CiBhc3luYyBmdW5jdGlv
biByZWdpc3RlclNlcnZpY2VXb3JrZXIoKSB7Ci0gICAgdmFyIHJlZ2lzdHJhdGlvbiA9IGF3YWl0
IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCdyZXNvdXJjZXMvc2hvd25vdGlmaWNh
dGlvbi13b3JrZXIuanMnKTsKKyAgICByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2Vy
dmljZVdvcmtlci5yZWdpc3RlcigncmVzb3VyY2VzL3Nob3dub3RpZmljYXRpb24td29ya2VyLmpz
Jyk7CiAgICAgCiAgICAgaWYgKCFyZWdpc3RyYXRpb24pCiAgICAgICAgIHJldHVybiB0ZXN0RmFp
bGVkKCJObyByZWdpc3RyYXRpb24iKTsKQEAgLTQ0LDcgKzQ0LDcgQEAgYXN5bmMgZnVuY3Rpb24g
cmVnaXN0ZXJTZXJ2aWNlV29ya2VyKCkgewogdmFyIG51bWJlclNob3duID0gMDsKIHZhciBudW1i
ZXJHb3QgPSAwOwogCi1mdW5jdGlvbiBnb3ROb3RlcyhldmVudCkKK2FzeW5jIGZ1bmN0aW9uIGdv
dE5vdGVzKGV2ZW50KQogewogICAgICsrbnVtYmVyR290OwogCkBAIC01OCw2ICs1OCwxMyBAQCBm
dW5jdGlvbiBnb3ROb3RlcyhldmVudCkKICAgICAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdl
KCJ0cnlzaG93fFRoZXJlfEJvZHkyfHRhZy1iIik7CiAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0
TWVzc2FnZSgidHJ5c2hvd3xCdWRkeXxCb2R5M3x0YWctYiIpOwogICAgIH0gZWxzZSBpZiAobnVt
YmVyR290ID09IDQpIHsKKyAgICAgICAgY29uc3Qgbm90aWZpY2F0aW9ucyA9IGF3YWl0IHJlZ2lz
dHJhdGlvbi5nZXROb3RpZmljYXRpb25zKHsgdGFnOiAiIiB9KTsKKyAgICAgICAgZGVidWcoIlJl
dHJpZXZpbmcgbm90aWZpY2F0aW9ucyBmcm9tIHBhZ2UgcmVnaXN0cmF0aW9uIG9iamVjdCAtICIg
KyBub3RpZmljYXRpb25zLmxlbmd0aCk7CisgICAgICAgIG5vdGlmaWNhdGlvbnMuZm9yRWFjaChu
b3RpZmljYXRpb24gPT4geworICAgICAgICAgICAgZGVidWcoIk5vdGlmaWNhdGlvbjogIiArIG5v
dGlmaWNhdGlvbi50aXRsZSArICIgLyAiICsgbm90aWZpY2F0aW9uLmJvZHkgKyAiIC8gIiArIG5v
dGlmaWNhdGlvbi50YWcpOworICAgICAgICB9KTsgICAgCisgICAgICAgIGRlYnVnKCJSZXRyaWV2
aW5nIG5vdGlmaWNhdGlvbnMgZnJvbSBwYWdlIHJlZ2lzdHJhdGlvbiBvYmplY3QgLSBlbmQiKTsK
KwogICAgICAgICB0ZXN0Q29tcGxldGVkKCk7CiAgICAgfQogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456220</attachid>
            <date>2022-03-31 01:57:07 -0700</date>
            <delta_ts>2022-04-01 02:12:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238544-20220331105704.patch</filename>
            <type>text/plain</type>
            <size>33416</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmEwMDc3NTEyZDA1YWRl
M2NiYzkwZWRiODRlNjRjNDM0NDNmMjQ1OS4uOWYzZGIyNzczNTQ0ZjQ0N2I2OGIzNjM2YjEwMDg1
N2U5ZTE0MDA1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIyLTAzLTMxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uLmdldE5vdGlmaWNhdGlvbnMgc2hvdWxkIGxpc3QgYWxsIHBlcnNpc3RlbnQgbm90
aWZpY2F0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM4NTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUmVtb3ZlIGNvbnRleHQgYmFzZWQgbm90aWZpY2F0aW9uIGxpc3Qgc2luY2UgdGhlIGxpc3Qg
aXMgZ2xvYmFsLgorICAgICAgICBBZGQgY3JlYXRpb24gdGltZSB0byBub3RpZmljYXRpb24gZGF0
YS4KKyAgICAgICAgSW5zdGVhZCBvZiByZWFkaW5nIHRoZSBsaXN0IGxvY2FsbHksIHVzZSB0aGUg
U1dDbGllbnQgY29ubmVjdGlvbiB0byBnZXQgaXQuCisKKyAgICAgICAgQ292ZXJlZCBieSB1cGRh
dGVkIHRlc3QuCisKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmg6Cisg
ICAgICAgICogTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkRhdGEuaDoKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmg6CisgICAgICAgICogd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwOgorICAgICAgICAqIHdvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmg6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmg6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uaWRsOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9Xb3JrZXJTV0NsaWVudENvbm5lY3Rpb24uY3BwOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9Xb3JrZXJTV0NsaWVudENvbm5lY3Rpb24uaDoKKwogMjAyMi0wMy0zMCAgQW5kcmVz
IEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CiAKICAgICAgICAgU3BsaXQgc3RyZWFt
aW5nIG9mIEFYIHRyZWVzIGZyb20gdGhlIGNsYXNzIEFYTG9nZ2VyLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA5MDBl
MDUzZjRlYjRkMjdiZTBiOTE5M2U4MGIzMjYxYmE4Mzg3Y2NiLi4wNTc0NTgxZjVmOGQ3N2JhZjZm
MDBlZWM1YmI4MWZhMGFkOGE5M2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIyLTAz
LTMxICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uLmdldE5vdGlmaWNhdGlvbnMgc2hvdWxkIGxpc3QgYWxsIHBlcnNp
c3RlbnQgbm90aWZpY2F0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM4NTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgR28gZnJvbSBXZWJQcm9jZXNzIHRvIFVJUHJvY2VzcyB0byByZWFkIHRoZSBu
b3RpZmljYXRpb24gbWFwIHRocm91Z2ggSVBDIG1lc3NhZ2luZy4KKyAgICAgICAgRmlsdGVyIG91
dCB0aGUgbm90aWZpY2F0aW9ucyBhY2NvcmRpbmcgdGFnLCBvcmlnaW4gYW5kIHNlc3Npb24uCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHA6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oOgorCiAyMDIyLTAzLTMwICBT
aW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIENyYXNoIHRo
ZSBXZWJDb250ZW50IHByb2Nlc3MgaWYgdGhlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlByZXBh
cmVCdWZmZXJzRm9yRGlzcGxheSBJUEMgZmFpbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKaW5kZXggYTY5N2FmMzlkYmQ3
Y2JhOTlhOTI2MWU3ZjM4YWE4NjExNTk1ZDQxYi4uMGQ5ZTQ3MTZjYmEyOGU5MTcwMWVhMzlhMjlm
NzUwNWRkZmJlZTM2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKQEAgLTgyLDEwICs4Miw5IEBAIE5vdGlmaWNhdGlv
bjo6Tm90aWZpY2F0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFN0cmluZyYm
IHRpdGxlLCBPcHRpCiB7CiAgICAgaWYgKGNvbnRleHQuaXNEb2N1bWVudCgpKQogICAgICAgICBt
X25vdGlmaWNhdGlvblNvdXJjZSA9IE5vdGlmaWNhdGlvblNvdXJjZTo6RG9jdW1lbnQ7Ci0gICAg
ZWxzZSBpZiAoY29udGV4dC5pc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSgpKSB7CisgICAgZWxz
ZSBpZiAoY29udGV4dC5pc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSgpKQogICAgICAgICBtX25v
dGlmaWNhdGlvblNvdXJjZSA9IE5vdGlmaWNhdGlvblNvdXJjZTo6U2VydmljZVdvcmtlcjsKLSAg
ICAgICAgZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS5yZWdpc3Ry
YXRpb24oKS5hZGROb3RpZmljYXRpb25Ub0xpc3QoKnRoaXMpOwotICAgIH0gZWxzZQorICAgIGVs
c2UKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIAogICAgIGlmICghb3B0
aW9ucy5pY29uLmlzRW1wdHkoKSkgewpAQCAtMTEyLDEwICsxMTEsNiBAQCBOb3RpZmljYXRpb246
Ok5vdGlmaWNhdGlvbihjb25zdCBOb3RpZmljYXRpb24mIG90aGVyKQogCiBOb3RpZmljYXRpb246
On5Ob3RpZmljYXRpb24oKQogewotICAgIGlmIChhdXRvKiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKSB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5pc1NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZSgpKQotICAgICAgICAgICAgZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
Pihjb250ZXh0KS0+cmVnaXN0cmF0aW9uKCkucmVtb3ZlTm90aWZpY2F0aW9uRnJvbUxpc3QoKnRo
aXMpOwotICAgIH0KIH0KIAogUmVmPE5vdGlmaWNhdGlvbj4gTm90aWZpY2F0aW9uOjpjb3B5Rm9y
R2V0Tm90aWZpY2F0aW9ucygpIGNvbnN0CkBAIC0xMjMsMTcgKzExOCw2IEBAIFJlZjxOb3RpZmlj
YXRpb24+IE5vdGlmaWNhdGlvbjo6Y29weUZvckdldE5vdGlmaWNhdGlvbnMoKSBjb25zdAogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IE5vdGlmaWNhdGlvbigqdGhpcykpOwogfQogCi12b2lkIE5v
dGlmaWNhdGlvbjo6Y29udGV4dERlc3Ryb3llZCgpCi17Ci0gICAgYXV0byogY29udGV4dCA9IHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBSRUxFQVNFX0FTU0VSVChjb250ZXh0KTsKLSAg
ICBpZiAoY29udGV4dC0+aXNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKSkKLSAgICAgICAgZG93
bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS0+cmVnaXN0cmF0aW9uKCku
cmVtb3ZlTm90aWZpY2F0aW9uRnJvbUxpc3QoKnRoaXMpOwotCi0gICAgQWN0aXZlRE9NT2JqZWN0
Ojpjb250ZXh0RGVzdHJveWVkKCk7Ci19Ci0KLQogdm9pZCBOb3RpZmljYXRpb246OnNob3dTb29u
KCkKIHsKICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6
OlVzZXJJbnRlcmFjdGlvbiwgW3RoaXNdIHsKQEAgLTE3OSwxNSArMTYzLDEwIEBAIHZvaWQgTm90
aWZpY2F0aW9uOjpjbG9zZSgpCiAgICAgc3dpdGNoIChtX3N0YXRlKSB7CiAgICAgY2FzZSBJZGxl
OgogICAgICAgICBicmVhazsKLSAgICBjYXNlIFNob3dpbmc6IHsKKyAgICBjYXNlIFNob3dpbmc6
CiAgICAgICAgIGlmIChhdXRvKiBjbGllbnQgPSBjbGllbnRGcm9tQ29udGV4dCgpKQogICAgICAg
ICAgICAgY2xpZW50LT5jYW5jZWwoKnRoaXMpOwotICAgICAgICBpZiAoYXV0byogY29udGV4dCA9
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkgewotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmlz
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlKCkpCi0gICAgICAgICAgICAgICAgZG93bmNhc3Q8U2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS0+cmVnaXN0cmF0aW9uKCkucmVtb3ZlTm90
aWZpY2F0aW9uRnJvbUxpc3QoKnRoaXMpOwotICAgICAgICB9CiAgICAgICAgIGJyZWFrOwotICAg
IH0KICAgICBjYXNlIENsb3NlZDoKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMzM5LDYgKzMx
OCw3IEBAIE5vdGlmaWNhdGlvbkRhdGEgTm90aWZpY2F0aW9uOjpkYXRhKCkgY29uc3QKICAgICAg
ICAgV1RGTW92ZShzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uVVJMKS5pc29sYXRlZENvcHkoKSwK
ICAgICAgICAgaWRlbnRpZmllcigpLAogICAgICAgICAqc2Vzc2lvbklELAorICAgICAgICBNb25v
dG9uaWNUaW1lOjpub3coKQogICAgIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaAppbmRleCA1ZWRkMzZiMzc2NTAwZTMw
NjI5YWIyZGZhYmIzZjZjMGY3MTUzNTRhLi5jZjYzNDQ3MTJkNGI1OTkzZmNjMDY4MmRmNDYxNDg3
NjNlYzI3NDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbi5oCkBAIC0xMDksOCArMTA5LDYgQEAgcHJpdmF0ZToKICAgICBOb3Rp
ZmljYXRpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFN0cmluZyYmIHRpdGxlLCBPcHRpb25z
JiYpOwogICAgIE5vdGlmaWNhdGlvbihjb25zdCBOb3RpZmljYXRpb24mKTsKIAotICAgIHZvaWQg
Y29udGV4dERlc3Ryb3llZCgpIGZpbmFsOwotCiAgICAgTm90aWZpY2F0aW9uQ2xpZW50KiBjbGll
bnRGcm9tQ29udGV4dCgpOwogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50
ZXJmYWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gTm90aWZpY2F0aW9uRXZlbnRUYXJnZXRJbnRl
cmZhY2VUeXBlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb25EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25EYXRhLmNwcAppbmRleCBiZmZiMzhlMGU0MzFlMWExMmYz
MThlNzRmM2FiMmRjMDAyZWFmYzlmLi5kZTEyNmJiZjA3NjI2ODAyNTg1MTQ0MzMxYjQyZDMzY2Yw
NDYzNWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvbkRhdGEuY3BwCkBAIC0zMCwxMiArMzAsMTIgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBOb3RpZmljYXRpb25EYXRhIE5vdGlmaWNhdGlvbkRhdGE6Omlzb2xhdGVk
Q29weSgpIGNvbnN0ICYKIHsKLSAgICByZXR1cm4geyB0aXRsZS5pc29sYXRlZENvcHkoKSwgYm9k
eS5pc29sYXRlZENvcHkoKSwgaWNvblVSTC5pc29sYXRlZENvcHkoKSwgdGFnLmlzb2xhdGVkQ29w
eSgpLCBsYW5ndWFnZS5pc29sYXRlZENvcHkoKSwgZGlyZWN0aW9uLCBvcmlnaW5TdHJpbmcuaXNv
bGF0ZWRDb3B5KCksIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25VUkwuaXNvbGF0ZWRDb3B5KCks
IG5vdGlmaWNhdGlvbklELCBzb3VyY2VTZXNzaW9uIH07CisgICAgcmV0dXJuIHsgdGl0bGUuaXNv
bGF0ZWRDb3B5KCksIGJvZHkuaXNvbGF0ZWRDb3B5KCksIGljb25VUkwuaXNvbGF0ZWRDb3B5KCks
IHRhZy5pc29sYXRlZENvcHkoKSwgbGFuZ3VhZ2UuaXNvbGF0ZWRDb3B5KCksIGRpcmVjdGlvbiwg
b3JpZ2luU3RyaW5nLmlzb2xhdGVkQ29weSgpLCBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uVVJM
Lmlzb2xhdGVkQ29weSgpLCBub3RpZmljYXRpb25JRCwgc291cmNlU2Vzc2lvbiwgY3JlYXRpb25U
aW1lIH07CiB9CiAKIE5vdGlmaWNhdGlvbkRhdGEgTm90aWZpY2F0aW9uRGF0YTo6aXNvbGF0ZWRD
b3B5KCkgJiYKIHsKLSAgICByZXR1cm4geyBXVEZNb3ZlKHRpdGxlKS5pc29sYXRlZENvcHkoKSwg
V1RGTW92ZShib2R5KS5pc29sYXRlZENvcHkoKSwgV1RGTW92ZShpY29uVVJMKS5pc29sYXRlZENv
cHkoKSwgV1RGTW92ZSh0YWcpLmlzb2xhdGVkQ29weSgpLCBXVEZNb3ZlKGxhbmd1YWdlKS5pc29s
YXRlZENvcHkoKSwgZGlyZWN0aW9uLCBXVEZNb3ZlKG9yaWdpblN0cmluZykuaXNvbGF0ZWRDb3B5
KCksIFdURk1vdmUoc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblVSTCkuaXNvbGF0ZWRDb3B5KCks
IG5vdGlmaWNhdGlvbklELCBzb3VyY2VTZXNzaW9uIH07CisgICAgcmV0dXJuIHsgV1RGTW92ZSh0
aXRsZSkuaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUoYm9keSkuaXNvbGF0ZWRDb3B5KCksIFdURk1v
dmUoaWNvblVSTCkuaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUodGFnKS5pc29sYXRlZENvcHkoKSwg
V1RGTW92ZShsYW5ndWFnZSkuaXNvbGF0ZWRDb3B5KCksIGRpcmVjdGlvbiwgV1RGTW92ZShvcmln
aW5TdHJpbmcpLmlzb2xhdGVkQ29weSgpLCBXVEZNb3ZlKHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25VUkwpLmlzb2xhdGVkQ29weSgpLCBub3RpZmljYXRpb25JRCwgc291cmNlU2Vzc2lvbiwgY3Jl
YXRpb25UaW1lIH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25EYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRGF0YS5oCmlu
ZGV4IDMyMjA5ODMzZWRhMjA0MTY0YmQ1NjExNzk2ZDQwMGY3ZjdhMjdjODMuLjQ0NmU3NGQ0Yzhh
YmI5NzI2OTQzYTQ0YWY1ZmViYWQ0N2JkN2U3YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25EYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkRhdGEuaApAQCAtMjcsNiAr
MjcsNyBAQAogCiAjaW5jbHVkZSA8b3B0aW9uYWw+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5o
PgorI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgog
I2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBA
IC01MiwxMiArNTMsMTMgQEAgc3RydWN0IE5vdGlmaWNhdGlvbkRhdGEgewogICAgIFVSTCBzZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uVVJMOwogICAgIFVVSUQgbm90aWZpY2F0aW9uSUQ7CiAgICAg
UEFMOjpTZXNzaW9uSUQgc291cmNlU2Vzc2lvbjsKKyAgICBNb25vdG9uaWNUaW1lIGNyZWF0aW9u
VGltZTsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIE5vdGlmaWNhdGlvbkRh
dGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIgPDwgdGl0
bGUgPDwgYm9keSA8PCBpY29uVVJMIDw8IHRhZyA8PCBsYW5ndWFnZSA8PCBkaXJlY3Rpb24gPDwg
b3JpZ2luU3RyaW5nIDw8IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25VUkwgPDwgbm90aWZpY2F0
aW9uSUQgPDwgc291cmNlU2Vzc2lvbjsKKyAgICBlbmNvZGVyIDw8IHRpdGxlIDw8IGJvZHkgPDwg
aWNvblVSTCA8PCB0YWcgPDwgbGFuZ3VhZ2UgPDwgZGlyZWN0aW9uIDw8IG9yaWdpblN0cmluZyA8
PCBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uVVJMIDw8IG5vdGlmaWNhdGlvbklEIDw8IHNvdXJj
ZVNlc3Npb24gPDwgY3JlYXRpb25UaW1lOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpA
QCAtMTEzLDYgKzExNSwxMSBAQCBzdGQ6Om9wdGlvbmFsPE5vdGlmaWNhdGlvbkRhdGE+IE5vdGlm
aWNhdGlvbkRhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIGlmICghc291cmNlU2Vz
c2lvbikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAorICAgIHN0ZDo6b3B0aW9uYWw8
TW9ub3RvbmljVGltZT4gY3JlYXRpb25UaW1lOworICAgIGRlY29kZXIgPj4gY3JlYXRpb25UaW1l
OworICAgIGlmICghY3JlYXRpb25UaW1lKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
CiAgICAgcmV0dXJuIHsgewogICAgICAgICBXVEZNb3ZlKCp0aXRsZSksCiAgICAgICAgIFdURk1v
dmUoKmJvZHkpLApAQCAtMTI0LDYgKzEzMSw3IEBAIHN0ZDo6b3B0aW9uYWw8Tm90aWZpY2F0aW9u
RGF0YT4gTm90aWZpY2F0aW9uRGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAg
IFdURk1vdmUoKnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25VUkwpLAogICAgICAgICBXVEZNb3Zl
KCpub3RpZmljYXRpb25JRCksCiAgICAgICAgIFdURk1vdmUoKnNvdXJjZVNlc3Npb24pLAorICAg
ICAgICBXVEZNb3ZlKCpjcmVhdGlvblRpbWUpCiAgICAgfSB9OwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmgKaW5kZXggMDVm
ZGQwM2FlZjQzYzVkMDYwZmM3ZjFiY2M0NWM4YWNiYzhjODVjZi4uZGQzMzZjYTIwZWNjZGJmMmFl
ZDhmZTQ4Y2RhMzk1NDAzNTMxNWRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5j
bHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJOYXZpZ2F0aW9uUHJlbG9hZFN0YXRlLmgi
CisjaW5jbHVkZSAiTm90aWZpY2F0aW9uRGF0YS5oIgogI2luY2x1ZGUgIlB1c2hQZXJtaXNzaW9u
U3RhdGUuaCIKICNpbmNsdWRlICJQdXNoU3Vic2NyaXB0aW9uRGF0YS5oIgogI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLmgiCkBAIC00Miw2ICs0Myw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFNlY3VyaXR5T3Jp
Z2luOworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTsKIGNsYXNzIFNlcnZpY2VXb3JrZXJDb250YWluZXI7CiBjbGFzcyBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uOwpAQCAtNTAsNiArNTIsNyBAQCBlbnVtIGNsYXNzIFNlcnZpY2VXb3Jr
ZXJTdGF0ZSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCA6
IGJvb2w7CiBzdHJ1Y3QgRXhjZXB0aW9uRGF0YTsKIHN0cnVjdCBNZXNzYWdlV2l0aE1lc3NhZ2VQ
b3J0czsKK3N0cnVjdCBOb3RpZmljYXRpb25EYXRhOwogc3RydWN0IFNlcnZpY2VXb3JrZXJDbGll
bnREYXRhOwogc3RydWN0IFNlcnZpY2VXb3JrZXJEYXRhOwogc3RydWN0IFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EYXRhOwpAQCAtMTAxLDYgKzEwNCw5IEBAIHB1YmxpYzoKICAgICB1c2luZyBH
ZXRQdXNoUGVybWlzc2lvblN0YXRlQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4
Y2VwdGlvbk9yPFB1c2hQZXJtaXNzaW9uU3RhdGU+JiYpPjsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0
UHVzaFBlcm1pc3Npb25TdGF0ZShTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwg
R2V0UHVzaFBlcm1pc3Npb25TdGF0ZUNhbGxiYWNrJiYpID0gMDsKIAorICAgIHVzaW5nIEdldE5v
dGlmaWNhdGlvbnNDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0aW9uT3I8
VmVjdG9yPE5vdGlmaWNhdGlvbkRhdGE+PiYmKT47CisgICAgdmlydHVhbCB2b2lkIGdldE5vdGlm
aWNhdGlvbnMoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgR2V0Tm90aWZpY2F0aW9uc0NhbGxi
YWNrJiYpID0gMDsKKwogICAgIHVzaW5nIEV4Y2VwdGlvbk9yVm9pZENhbGxiYWNrID0gQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25Pcjx2b2lkPiYmKT47CiAgICAgdmlydHVhbCB2b2lk
IGVuYWJsZU5hdmlnYXRpb25QcmVsb2FkKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlm
aWVyLCBFeGNlcHRpb25PclZvaWRDYWxsYmFjayYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRp
c2FibGVOYXZpZ2F0aW9uUHJlbG9hZChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
ciwgRXhjZXB0aW9uT3JWb2lkQ2FsbGJhY2smJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCmluZGV4
IDQ3NTQyZGRmNDE2ZThlMzYzY2M3NDI2MjIyNjQxNDE0YTRmYjFmMGUuLjNjYjFmODI0NGQ1MDA0
MjE0M2RmOGU5YTNmNGVkMjNiMGRjYzhiZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKQEAgLTYxMCw2
ICs2MTAsMjkgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpnZXRQdXNoUGVybWlzc2lv
blN0YXRlKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGUKICAgICB9KTsKIH0KIAorI2lmIEVO
QUJMRShOT1RJRklDQVRJT05TKQordm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpnZXROb3Rp
ZmljYXRpb25zKGNvbnN0IFVSTCYgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblVSTCwgY29uc3Qg
U3RyaW5nJiB0YWcsIERPTVByb21pc2VEZWZlcnJlZDxJRExTZXF1ZW5jZTxJRExJbnRlcmZhY2U8
Tm90aWZpY2F0aW9uPj4+JiYgcHJvbWlzZSkKK3sKKyAgICBlbnN1cmVTV0NsaWVudENvbm5lY3Rp
b24oKS5nZXROb3RpZmljYXRpb25zKHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25VUkwsIHRhZywg
W3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMg
fV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8qIGNvbnRleHQgPSBwcm90
ZWN0ZWRUaGlzLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgICAgIGlmICghY29udGV4
dCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlv
bigpKSB7CisgICAgICAgICAgICBwcm9taXNlLnJlamVjdChyZXN1bHQucmVsZWFzZUV4Y2VwdGlv
bigpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gZGF0
YSA9IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICAgICAgc3RkOjpzb3J0KGRhdGEu
YmVnaW4oKSwgZGF0YS5lbmQoKSwgW10oYXV0byYgYSwgYXV0byYgYikgeyByZXR1cm4gYS5jcmVh
dGlvblRpbWUgPCBiLmNyZWF0aW9uVGltZTsgfSk7CisgICAgICAgIGF1dG8gbm90aWZpY2F0aW9u
cyA9IG1hcChkYXRhLCBbY29udGV4dF0oYXV0byYmIGRhdGEpIHsKKyAgICAgICAgICAgIHJldHVy
biBOb3RpZmljYXRpb246OmNyZWF0ZSgqY29udGV4dCwgV1RGTW92ZShkYXRhKSk7CisgICAgICAg
IH0pOworICAgICAgICBwcm9taXNlLnJlc29sdmUoV1RGTW92ZShub3RpZmljYXRpb25zKSk7Cisg
ICAgfSk7Cit9CisjZW5kaWYKKwogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpxdWV1ZVRh
c2tUb0Rpc3BhdGNoQ29udHJvbGxlckNoYW5nZUV2ZW50KCkKIHsKICAgICBBU1NFUlQobV9jcmVh
dGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgKaW5k
ZXggYWIyYjIzNzc1MjRhMzk4NjM2YWZlMDQwZDhkMWVkODAzMTY3ZDNmMi4uNmJhM2QxY2QyM2I0
YTJlN2FhODMxOWMwNDQ5ODJkZjRjMjk3ZGQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oCkBAIC05MSw2ICs5
MSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlKFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBQdXNoU3Vic2NyaXB0aW9uSWRlbnRpZmll
ciwgRE9NUHJvbWlzZURlZmVycmVkPElETEJvb2xlYW4+JiYpOwogICAgIHZvaWQgZ2V0UHVzaFN1
YnNjcmlwdGlvbihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uJiwgRE9NUHJvbWlzZURlZmVycmVk
PElETE51bGxhYmxlPElETEludGVyZmFjZTxQdXNoU3Vic2NyaXB0aW9uPj4+JiYpOwogICAgIHZv
aWQgZ2V0UHVzaFBlcm1pc3Npb25TdGF0ZShTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRp
ZmllciwgRE9NUHJvbWlzZURlZmVycmVkPElETEVudW1lcmF0aW9uPFB1c2hQZXJtaXNzaW9uU3Rh
dGU+PiYmKTsKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICB2b2lkIGdldE5vdGlmaWNh
dGlvbnMoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgRE9NUHJvbWlzZURlZmVycmVkPElETFNl
cXVlbmNlPElETEludGVyZmFjZTxOb3RpZmljYXRpb24+Pj4mJik7CisjZW5kaWYKIAogICAgIFNl
cnZpY2VXb3JrZXJKb2IqIGpvYihTZXJ2aWNlV29ya2VySm9iSWRlbnRpZmllcik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uLmNwcAppbmRleCBmYjEwMjIxODcxN2RkNTFhNmVlMzEwNDEzOGJkYzFkZmI4
N2YwYzhkLi42ZTcxNjUzNDY5NzY0NGM0NGNjZTE0MDcwOGNjN2NhM2FlY2QwMjc1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb24uY3BwCkBAIC0yOTksNDkgKzI5OSwxMCBAQCB2b2lkIFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb246OnNob3dOb3RpZmljYXRpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dAogICAgIH0pOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246Omdl
dE5vdGlmaWNhdGlvbnMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgR2V0
Tm90aWZpY2F0aW9uT3B0aW9ucyYgZmlsdGVyLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMU2VxdWVu
Y2U8SURMSW50ZXJmYWNlPE5vdGlmaWNhdGlvbj4+PiBwcm9taXNlKQordm9pZCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uOjpnZXROb3RpZmljYXRpb25zKGNvbnN0IEdldE5vdGlmaWNhdGlvbk9w
dGlvbnMmIGZpbHRlciwgRE9NUHJvbWlzZURlZmVycmVkPElETFNlcXVlbmNlPElETEludGVyZmFj
ZTxOb3RpZmljYXRpb24+Pj4gcHJvbWlzZSkKIHsKLSAgICBhdXRvIG5vdGlmaWNhdGlvbnMgPSBm
aWx0ZXJlZE5vdGlmaWNhdGlvbkxpc3QoZmlsdGVyLnRhZyk7Ci0gICAgY29udGV4dC5ldmVudExv
b3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdU
Rk1vdmUocHJvbWlzZSksIG5vdGlmaWNhdGlvbnMgPSBXVEZNb3ZlKG5vdGlmaWNhdGlvbnMpXSgp
IG11dGFibGUgewotICAgICAgICBwcm9taXNlLnJlc29sdmUoV1RGTW92ZShub3RpZmljYXRpb25z
KSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6YWRkTm90
aWZpY2F0aW9uVG9MaXN0KE5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uKQotewotICAgIC8vIEEg
Tm90aWZpY2F0aW9uIGF0IHRoaXMgZXhhY3QgYWRkcmVzcyBtaWdodCBwcmV2aW91c2x5IGhhdmUg
YmVlbiBpbiB0aGUgbGlzdCBidXQgbm90IHN1Y2Nlc3NmdWxseSByZW1vdmVkLgotICAgIC8vIFRo
ZSBXZWFrSGFzaFNldCBjYXB0dXJlcyB0aGF0IHBvc3NpYmlsaXR5IGhlcmUgdG8gaGVscCB1cyBt
YWludGFpbiBjb25zaXN0ZW5jeS4KLSAgICBhdXRvIGl0ZXIgPSBtX25vdGlmaWNhdGlvbkxpc3Qu
ZmluZCgmbm90aWZpY2F0aW9uKTsKLSAgICBpZiAoaXRlciAhPSBtX25vdGlmaWNhdGlvbkxpc3Qu
ZW5kKCkpIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fbm90aWZpY2F0aW9uU2V0LmNvbnRh
aW5zKG5vdGlmaWNhdGlvbikpOwotICAgICAgICBtX25vdGlmaWNhdGlvbkxpc3QucmVtb3ZlKGl0
ZXIpOwotICAgIH0KLQotICAgIG1fbm90aWZpY2F0aW9uTGlzdC5hZGQoJm5vdGlmaWNhdGlvbik7
Ci0gICAgYXV0byByZXN1bHQgPSBtX25vdGlmaWNhdGlvblNldC5hZGQobm90aWZpY2F0aW9uKTsK
LSAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOworICAgIG1fY29u
dGFpbmVyLT5nZXROb3RpZmljYXRpb25zKG1fcmVnaXN0cmF0aW9uRGF0YS5zY29wZVVSTCwgZmls
dGVyLnRhZywgV1RGTW92ZShwcm9taXNlKSk7CiB9Ci0KLXZvaWQgU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbjo6cmVtb3ZlTm90aWZpY2F0aW9uRnJvbUxpc3QoTm90aWZpY2F0aW9uJiBub3RpZmlj
YXRpb24pCi17Ci0gICAgLy8gVGhlIHNhbWUgbm90aWZpY2F0aW9uIG1pZ2h0IHRyeSB0byByZW1v
dmUgaXRzZWxmIGZyb20gdGhpcyBsaXN0IG1vcmUgdGhhbiBvbmNlLCBhbmQgdGhhdCdzIGZpbmUu
Ci0gICAgbV9ub3RpZmljYXRpb25MaXN0LnJlbW92ZSgmbm90aWZpY2F0aW9uKTsKLSAgICBtX25v
dGlmaWNhdGlvblNldC5yZW1vdmUobm90aWZpY2F0aW9uKTsKLX0KLQotVmVjdG9yPFJlZjxOb3Rp
ZmljYXRpb24+PiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpmaWx0ZXJlZE5vdGlmaWNhdGlv
bkxpc3QoY29uc3QgU3RyaW5nJiBmaWx0ZXJlZFRhZykKLXsKLSAgICBWZWN0b3I8UmVmPE5vdGlm
aWNhdGlvbj4+IHJlc3VsdHM7Ci0gICAgZm9yIChhdXRvKiBub3RpZmljYXRpb24gOiBtX25vdGlm
aWNhdGlvbkxpc3QpIHsKLSAgICAgICAgaWYgKCFtX25vdGlmaWNhdGlvblNldC5jb250YWlucygq
bm90aWZpY2F0aW9uKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoZmlsdGVy
ZWRUYWcuaXNFbXB0eSgpIHx8IG5vdGlmaWNhdGlvbi0+dGFnKCkgPT0gZmlsdGVyZWRUYWcpCi0g
ICAgICAgICAgICByZXN1bHRzLmFwcGVuZChub3RpZmljYXRpb24tPmNvcHlGb3JHZXROb3RpZmlj
YXRpb25zKCkpOwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHRzOwotfQotCiAjZW5kaWYgLy8g
RU5BQkxFKE5PVElGSUNBVElPTl9FVkVOVCkKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uLmgKaW5kZXggZjdjYzkwZWViNDA3OWE0ZmRmMTIxZTJjZjcxZDg1NzBmNTc1
ZjZhOS4uNjlmYjVlM2E3MGU1ZWNjMDFjZDEzZTFhMjg2NTA4NGJmYTAxNWEzOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbi5oCkBAIC0xMDAsMTEgKzEwMCw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAg
dm9pZCBzaG93Tm90aWZpY2F0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBTdHJpbmcmJiB0
aXRsZSwgTm90aWZpY2F0aW9uT3B0aW9ucyYmLCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7
Ci0gICAgdm9pZCBnZXROb3RpZmljYXRpb25zKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25z
dCBHZXROb3RpZmljYXRpb25PcHRpb25zJiBmaWx0ZXIsIERPTVByb21pc2VEZWZlcnJlZDxJRExT
ZXF1ZW5jZTxJRExJbnRlcmZhY2U8Tm90aWZpY2F0aW9uPj4+KTsKLQotICAgIHZvaWQgYWRkTm90
aWZpY2F0aW9uVG9MaXN0KE5vdGlmaWNhdGlvbiYpOwotICAgIHZvaWQgcmVtb3ZlTm90aWZpY2F0
aW9uRnJvbUxpc3QoTm90aWZpY2F0aW9uJik7Ci0gICAgVmVjdG9yPFJlZjxOb3RpZmljYXRpb24+
PiBmaWx0ZXJlZE5vdGlmaWNhdGlvbkxpc3QoY29uc3QgU3RyaW5nJiBmaWx0ZXJlZFRhZyk7Cisg
ICAgdm9pZCBnZXROb3RpZmljYXRpb25zKGNvbnN0IEdldE5vdGlmaWNhdGlvbk9wdGlvbnMmIGZp
bHRlciwgRE9NUHJvbWlzZURlZmVycmVkPElETFNlcXVlbmNlPElETEludGVyZmFjZTxOb3RpZmlj
YXRpb24+Pj4pOwogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC0xMjgsMTEgKzEyNCw2IEBAIHByaXZh
dGU6CiAgICAgUmVmUHRyPFNlcnZpY2VXb3JrZXI+IG1fYWN0aXZlV29ya2VyOwogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPE5hdmlnYXRpb25QcmVsb2FkTWFuYWdlcj4gbV9uYXZpZ2F0aW9uUHJlbG9h
ZDsKLQotI2lmIEVOQUJMRShOT1RJRklDQVRJT05fRVZFTlQpCi0gICAgTGlzdEhhc2hTZXQ8Tm90
aWZpY2F0aW9uKj4gbV9ub3RpZmljYXRpb25MaXN0OwotICAgIFdlYWtIYXNoU2V0PE5vdGlmaWNh
dGlvbj4gbV9ub3RpZmljYXRpb25TZXQ7Ci0jZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmlkbAppbmRleCBiOTUzZjlkMDMxMzUyNmNkZGJiN2I5
YWZjNmRhMWI3OWYwNDM0YmVhLi4yZWYyMWMzYzk0N2VlNTMzOTFmZThiYzdjZDI0ZjZmODQwMGYy
ZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbi5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uaWRsCkBAIC00Niw3ICs0Niw3IEBACiAgICAgW05l
d09iamVjdF0gUHJvbWlzZTxib29sZWFuPiB1bnJlZ2lzdGVyKCk7CiAKICAgICBbQ29uZGl0aW9u
YWw9Tk9USUZJQ0FUSU9OX0VWRU5ULCBFbmFibGVkQXRSdW50aW1lPU5vdGlmaWNhdGlvbkV2ZW50
RW5hYmxlZCwgQ2FsbFdpdGg9Q3VycmVudFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIFByb21pc2U8
dW5kZWZpbmVkPiBzaG93Tm90aWZpY2F0aW9uKERPTVN0cmluZyB0aXRsZSwgb3B0aW9uYWwgTm90
aWZpY2F0aW9uT3B0aW9ucyBvcHRpb25zKTsKLSAgICBbQ29uZGl0aW9uYWw9Tk9USUZJQ0FUSU9O
X0VWRU5ULCBFbmFibGVkQXRSdW50aW1lPU5vdGlmaWNhdGlvbkV2ZW50RW5hYmxlZCwgQ2FsbFdp
dGg9Q3VycmVudFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIFByb21pc2U8c2VxdWVuY2U8Tm90aWZp
Y2F0aW9uPj4gZ2V0Tm90aWZpY2F0aW9ucyhvcHRpb25hbCBHZXROb3RpZmljYXRpb25PcHRpb25z
IGZpbHRlcik7CisgICAgW0NvbmRpdGlvbmFsPU5PVElGSUNBVElPTl9FVkVOVCwgRW5hYmxlZEF0
UnVudGltZT1Ob3RpZmljYXRpb25FdmVudEVuYWJsZWRdIFByb21pc2U8c2VxdWVuY2U8Tm90aWZp
Y2F0aW9uPj4gZ2V0Tm90aWZpY2F0aW9ucyhvcHRpb25hbCBHZXROb3RpZmljYXRpb25PcHRpb25z
IGZpbHRlcik7CiAKICAgICAvLyBldmVudAogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb251
cGRhdGVmb3VuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9X
b3JrZXJTV0NsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1dvcmtlclNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKaW5kZXggYmUyZjNlZjFjZTBlYWFiODI3
MjhhMWMxODRmZjEyNWFjNDUyNTdjNi4uYzUyNGVjMGE3NWI2YWZiMjgxN2JmNmUzODIzMTc1NmY5
NWI3ZWYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1dvcmtl
clNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1dvcmtlclNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAorI2luY2x1ZGUgIk5vdGlmaWNhdGlvbkRhdGEuaCIK
ICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGll
bnREYXRhLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckpvYkRhdGEuaCIKQEAgLTc5LDcgKzgw
LDExIEBAIFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6fldvcmtlclNXQ2xpZW50Q29ubmVjdGlv
bigpCiAgICAgICAgIGNhbGxiYWNrKEV4Y2VwdGlvbiB7IEFib3J0RXJyb3IsICJjb250ZXh0IHN0
b3BwZWQiX3MgfSk7CiAKICAgICBhdXRvIG5hdmlnYXRpb25QcmVsb2FkU3RhdGVDYWxsYmFja3Mg
PSBXVEZNb3ZlKG1fbmF2aWdhdGlvblByZWxvYWRTdGF0ZUNhbGxiYWNrcyk7Ci0gICAgZm9yIChh
dXRvJiBjYWxsYmFjayA6IG1fbmF2aWdhdGlvblByZWxvYWRTdGF0ZUNhbGxiYWNrcy52YWx1ZXMo
KSkKKyAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogbmF2aWdhdGlvblByZWxvYWRTdGF0ZUNhbGxi
YWNrcy52YWx1ZXMoKSkKKyAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uIHsgQWJvcnRFcnJvciwg
ImNvbnRleHQgc3RvcHBlZCJfcyB9KTsKKworICAgIGF1dG8gZ2V0Tm90aWZpY2F0aW9uc0NhbGxi
YWNrcyA9IFdURk1vdmUobV9nZXROb3RpZmljYXRpb25zQ2FsbGJhY2tzKTsKKyAgICBmb3IgKGF1
dG8mIGNhbGxiYWNrIDogZ2V0Tm90aWZpY2F0aW9uc0NhbGxiYWNrcy52YWx1ZXMoKSkKICAgICAg
ICAgY2FsbGJhY2soRXhjZXB0aW9uIHsgQWJvcnRFcnJvciwgImNvbnRleHQgc3RvcHBlZCJfcyB9
KTsKIH0KIApAQCAtMjkzLDYgKzI5OCwyMiBAQCB2b2lkIFdvcmtlclNXQ2xpZW50Q29ubmVjdGlv
bjo6Z2V0UHVzaFBlcm1pc3Npb25TdGF0ZShTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSQogICAg
IH0pOwogfQogCit2b2lkIFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6Z2V0Tm90aWZpY2F0aW9u
cyhjb25zdCBVUkwmIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25VUkwsIGNvbnN0IFN0cmluZyYg
dGFnLCBHZXROb3RpZmljYXRpb25zQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICB1aW50NjRf
dCByZXF1ZXN0SWRlbnRpZmllciA9ICsrbV9sYXN0UmVxdWVzdElkZW50aWZpZXI7CisgICAgbV9n
ZXROb3RpZmljYXRpb25zQ2FsbGJhY2tzLmFkZChyZXF1ZXN0SWRlbnRpZmllciwgV1RGTW92ZShj
YWxsYmFjaykpOworICAgIAorICAgIGNhbGxPbk1haW5UaHJlYWQoW3RocmVhZCA9IG1fdGhyZWFk
LCByZXF1ZXN0SWRlbnRpZmllciwgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblVSTCA9IHNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25VUkwuaXNvbGF0ZWRDb3B5KCksIHRhZyA9IHRhZy5pc29sYXRl
ZENvcHkoKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byYgY29ubmVjdGlvbiA9IFNlcnZpY2VX
b3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlckNvbm5lY3Rpb24oKTsKKyAg
ICAgICAgY29ubmVjdGlvbi5nZXROb3RpZmljYXRpb25zKHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25VUkwsIHRhZywgW3RocmVhZCA9IFdURk1vdmUodGhyZWFkKSwgcmVxdWVzdElkZW50aWZpZXJd
KGF1dG8mJiByZXN1bHQpIHsKKyAgICAgICAgICAgIHRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNr
Rm9yTW9kZShbcmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdCA9IGNyb3NzVGhyZWFkQ29weShXVEZN
b3ZlKHJlc3VsdCkpXShhdXRvJiBzY29wZSkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgYXV0
byBjYWxsYmFjayA9IGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihzY29wZSkuc3dDbGllbnRD
b25uZWN0aW9uKCkubV9nZXROb3RpZmljYXRpb25zQ2FsbGJhY2tzLnRha2UocmVxdWVzdElkZW50
aWZpZXIpOworICAgICAgICAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUocmVzdWx0KSk7CisgICAg
ICAgICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKKyAgICAgICAgfSk7Cisg
ICAgfSk7Cit9CisKIHZvaWQgV29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjplbmFibGVOYXZpZ2F0
aW9uUHJlbG9hZChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciByZWdpc3RyYXRp
b25JZGVudGlmaWVyLCBFeGNlcHRpb25PclZvaWRDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAg
IHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyID0gKyttX2xhc3RSZXF1ZXN0SWRlbnRpZmllcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9Xb3JrZXJTV0NsaWVu
dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9Xb3JrZXJTV0Ns
aWVudENvbm5lY3Rpb24uaAppbmRleCA0Nzc5ZGZmMzE2MGVjZDZjMDI4ZjdmMzU3Y2QxM2JjMjlm
MzExYmYwLi4yYWE0YTQwOTRjZGU4OTQ2YmY0OGI0YzFhNzk3OWI3ZWJkZjY0ZTZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvV29ya2VyU1dDbGllbnRDb25uZWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1dvcmtlclNXQ2xpZW50
Q29ubmVjdGlvbi5oCkBAIC02MSw2ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1bnN1YnNj
cmliZUZyb21QdXNoU2VydmljZShTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwg
UHVzaFN1YnNjcmlwdGlvbklkZW50aWZpZXIsIFVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlQ2Fs
bGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBnZXRQdXNoU3Vic2NyaXB0aW9uKFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBHZXRQdXNoU3Vic2NyaXB0aW9uQ2FsbGJhY2smJikg
ZmluYWw7CiAgICAgdm9pZCBnZXRQdXNoUGVybWlzc2lvblN0YXRlKFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25JZGVudGlmaWVyLCBHZXRQdXNoUGVybWlzc2lvblN0YXRlQ2FsbGJhY2smJikgZmlu
YWw7CisgICAgdm9pZCBnZXROb3RpZmljYXRpb25zKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYs
IEdldE5vdGlmaWNhdGlvbnNDYWxsYmFjayYmKSBmaW5hbDsKIAogICAgIHZvaWQgZW5hYmxlTmF2
aWdhdGlvblByZWxvYWQoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIEV4Y2Vw
dGlvbk9yVm9pZENhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgZGlzYWJsZU5hdmlnYXRpb25Q
cmVsb2FkKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBFeGNlcHRpb25PclZv
aWRDYWxsYmFjayYmKSBmaW5hbDsKQEAgLTgwLDYgKzgxLDcgQEAgcHJpdmF0ZToKICAgICBIYXNo
TWFwPHVpbnQ2NF90LCBHZXRQdXNoUGVybWlzc2lvblN0YXRlQ2FsbGJhY2s+IG1fZ2V0UHVzaFBl
cm1pc3Npb25TdGF0ZUNhbGxiYWNrczsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBFeGNlcHRpb25P
clZvaWRDYWxsYmFjaz4gbV92b2lkQ2FsbGJhY2tzOwogICAgIEhhc2hNYXA8dWludDY0X3QsIEV4
Y2VwdGlvbk9yTmF2aWdhdGlvblByZWxvYWRTdGF0ZUNhbGxiYWNrPiBtX25hdmlnYXRpb25QcmVs
b2FkU3RhdGVDYWxsYmFja3M7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgR2V0Tm90aWZpY2F0aW9u
c0NhbGxiYWNrPiBtX2dldE5vdGlmaWNhdGlvbnNDYWxsYmFja3M7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKaW5k
ZXggZmQxOTZkMzBmNDdlOGVjYzdkYjBmYzBjZGIyNzYzNzMzMGIzZTFiMy4uOThjYThjZWJjYmFj
NGVkMjEyYTdlYmNkMDc5NmJlNDIyYWM4ZTNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5LmNwcApAQCAtMzAxLDQgKzMwMSwxOCBAQCB2b2lkIFdlYk5vdGlmaWNhdGlv
bk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRSZW1vdmVOb3RpZmljYXRpb25Qb2xpY2llcyhBUEk6
OkFycgogICAgIHByb2Nlc3NQb29sKCktPnNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2Vi
Tm90aWZpY2F0aW9uTWFuYWdlcjo6RGlkUmVtb3ZlTm90aWZpY2F0aW9uRGVjaXNpb25zKG9yaWdp
blN0cmluZ3MpKTsKIH0KIAordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmdldE5v
dGlmaWNhdGlvbnMoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGFnLCBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPE5vdGlmaWNhdGlv
bkRhdGE+JiYpPiYmIGNhbGxiYWNrKQoreworICAgIFZlY3RvcjxOb3RpZmljYXRpb25EYXRhPiBy
ZXN1bHQ7CisgICAgZm9yIChhdXRvJiBub3RpZmljYXRpb24gOiBtX25vdGlmaWNhdGlvbnMudmFs
dWVzKCkpIHsKKyAgICAgICAgYXV0byYgZGF0YSA9IG5vdGlmaWNhdGlvbi0+ZGF0YSgpOworICAg
ICAgICBpZiAoZGF0YS5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uVVJMICE9IHVybCB8fCBkYXRh
LnNvdXJjZVNlc3Npb24gIT0gc2Vzc2lvbklEKQorICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIGlmICghdGFnLmlzRW1wdHkoKSAmJiBkYXRhLnRhZyAhPSB0YWcpCisgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChkYXRhKTsKKyAgICB9CisgICAgY2FsbGJh
Y2soV1RGTW92ZShyZXN1bHQpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlv
bk1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaAppbmRleCBlODdkYjEwZjUxYWJjNTcwZDlkMmE5
YTc4NjkxNmIxNTJlYjYxMGU5Li43ZGJlZGEyOGEzYTEyNDRiYzliMGU1ODg0ZGE0ZTU5OTE5YzVj
OTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgKQEAgLTY4LDYgKzY4
LDggQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSos
IGNvbnN0IFZlY3RvcjxVVUlEPiYgcGFnZU5vdGlmaWNhdGlvbklEcyk7CiAgICAgdm9pZCBkaWRE
ZXN0cm95Tm90aWZpY2F0aW9uKFdlYlBhZ2VQcm94eSosIGNvbnN0IFVVSUQmIHBhZ2VOb3RpZmlj
YXRpb25JRCk7CiAKKyAgICB2b2lkIGdldE5vdGlmaWNhdGlvbnMoY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJiwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdl
YkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGE+JiYpPiYmKTsKKwogICAgIHZvaWQgcHJvdmlkZXJEaWRT
aG93Tm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKICAgICB2b2lkIHByb3Zp
ZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpOwogICAgIHZv
aWQgcHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25J
RCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBh
OGVmNWRiYzQ3ZTZlY2IyYTQ2M2ZlN2I4NWQxY2VkOWVhMDM0NWVlLi4xZWE2ZWFjNGYyYTdkNDA3
M2M2YWMwZjNlYTY3MzJjMGQ4ZTk4MGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHAKQEAgLTIxMDQsNiArMjEwNCwxMSBAQCB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6c3lzdGVtQmVlcCgpCiAgICAgUEFMOjpzeXN0ZW1CZWVwKCk7CiB9CiAKK3ZvaWQgV2Vi
UHJvY2Vzc1Byb3h5OjpnZXROb3RpZmljYXRpb25zKGNvbnN0IFVSTCYgcmVnaXN0cmF0aW9uVVJM
LCBjb25zdCBTdHJpbmcmIHRhZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8Tm90aWZp
Y2F0aW9uRGF0YT4mJik+JiYgY2FsbGJhY2spCit7CisgICAgV2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5OjpzaGFyZWRTZXJ2aWNlV29ya2VyTWFuYWdlcigpLmdldE5vdGlmaWNhdGlvbnMocmVn
aXN0cmF0aW9uVVJMLCB0YWcsIHNlc3Npb25JRCgpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgTUVTU0FHRV9DSEVDSwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCBjYjQyNDRiYWY4YTg2OTg1ODUw
ZjkwNjJmZDYzMTcyMjgwYjQxNTRjLi4wNTU1ZDNkNTc2MzQ1YmIyNDk2MTA4NThkNjk0NjZlNDkx
NTlmMWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAt
NzQsNiArNzQsNyBAQCBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIERlZmVycmFibGVPbmVTaG90VGltZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7
CitzdHJ1Y3QgTm90aWZpY2F0aW9uRGF0YTsKIHN0cnVjdCBQbHVnaW5JbmZvOwogc3RydWN0IFBy
ZXdhcm1JbmZvcm1hdGlvbjsKIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CkBAIC00MjcsNiAr
NDI4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q2FwdGlvbkRpc3BsYXlNb2RlKFdlYkNvcmU6
OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OkNhcHRpb25EaXNwbGF5TW9kZSk7CiAgICAgdm9pZCBz
ZXRDYXB0aW9uTGFuZ3VhZ2UoY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKKyAgICB2b2lkIGdldE5v
dGlmaWNhdGlvbnMoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8V2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YT4mJik+JiYpOwogCiAgICAgV2Vi
Q29yZTo6Q3Jvc3NPcmlnaW5Nb2RlIGNyb3NzT3JpZ2luTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y3Jvc3NPcmlnaW5Nb2RlOyB9CiAgICAgQ2FwdGl2ZVBvcnRhbE1vZGUgY2FwdGl2ZVBvcnRhbE1v
ZGUoKSBjb25zdCB7IHJldHVybiBtX2NhcHRpdmVQb3J0YWxNb2RlOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYjc0
Nzk2MDNhZTBiNThmOWJiZDI1ZGRlNzMwZTM4ZjNhMWYxZTgyNC4uODhhMGY4MjY1NDZlYTM0MzE5
MzY0ODlmZjIwZWZlM2RhYjlmZTk4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtOTEsNCArOTEsNiBAQCBtZXNzYWdl
cyAtPiBXZWJQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldENhcHRpb25EaXNw
bGF5TW9kZShXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzOjpDYXB0aW9uRGlzcGxheU1v
ZGUgbW9kZSkKICAgICBTZXRDYXB0aW9uTGFuZ3VhZ2UoU3RyaW5nIGxhbmd1YWdlKQogI2VuZGlm
CisKKyAgICBHZXROb3RpZmljYXRpb25zKFVSTCByZWdpc3RyYXRpb25VUkwsIFN0cmluZyB0YWcp
IC0+IChWZWN0b3I8V2ViQ29yZTo6Tm90aWZpY2F0aW9uRGF0YT4gcmVzdWx0KQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29u
bmVjdGlvbi5jcHAKaW5kZXggNTNkZmQwYzZhNTM3ZmE5MDI3MzNlMDQ3ZmVjM2Y2YjY3YjY3ZTc3
NS4uZDkzYjM0ZDY4ZmE5OTVhYTQxYjA3YmMwZWQzNTJiNzZlNzk3YzVmMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5l
Y3Rpb24uY3BwCkBAIC0zOCw3ICszOCw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1
ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgotI2lu
Y2x1ZGUgIldlYlByb2Nlc3NQb29sTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUHJv
eHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNXT3JpZ2luVGFibGUuaCIKICNpbmNsdWRlICJX
ZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1l
bnQuaD4KQEAgLTI2OSw2ICsyNjksMTEgQEAgdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246Omdl
dFB1c2hQZXJtaXNzaW9uU3RhdGUoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHIKICAgICB9
KTsKIH0KIAordm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmdldE5vdGlmaWNhdGlvbnMoY29u
c3QgVVJMJiByZWdpc3RyYXRpb25VUkwsIGNvbnN0IFN0cmluZyYgdGFnLCBHZXROb3RpZmljYXRp
b25zQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Oldl
YlByb2Nlc3NQcm94eTo6R2V0Tm90aWZpY2F0aW9ucyB7IHJlZ2lzdHJhdGlvblVSTCwgdGFnIH0s
IFdURk1vdmUoY2FsbGJhY2spKTsKK30KKwogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmVu
YWJsZU5hdmlnYXRpb25QcmVsb2FkKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
ZGVudGlmaWVyIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIEV4Y2VwdGlvbk9yVm9pZENhbGxiYWNr
JiYgY2FsbGJhY2spCiB7CiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJTV1Nl
cnZlckNvbm5lY3Rpb246OkVuYWJsZU5hdmlnYXRpb25QcmVsb2FkIHsgcmVnaXN0cmF0aW9uSWRl
bnRpZmllciB9LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYmIGVycm9yKSBt
dXRhYmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDbGllbnRDb25uZWN0aW9uLmgKaW5kZXggNDc3MmI2MjljYWRhN2I2ZTc5Y2FjNmE0MDA4
MmEzNGNkZmZhOWE1MS4uMzc3MTkxMjk2MjNjZTc1ODg0ZmNlYmEyM2IxNzA2ZDA2YTMxODRmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRD
b25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
bGllbnRDb25uZWN0aW9uLmgKQEAgLTk0LDYgKzk0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVu
c3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25JZGVudGlmaWVyLCBXZWJDb3JlOjpQdXNoU3Vic2NyaXB0aW9uSWRlbnRpZmllciwgVW5zdWJz
Y3JpYmVGcm9tUHVzaFNlcnZpY2VDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGdldFB1c2hT
dWJzY3JpcHRpb24oV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIs
IEdldFB1c2hTdWJzY3JpcHRpb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGdldFB1c2hQ
ZXJtaXNzaW9uU3RhdGUoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIsIEdldFB1c2hQZXJtaXNzaW9uU3RhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIGdl
dE5vdGlmaWNhdGlvbnMoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgR2V0Tm90aWZpY2F0aW9u
c0NhbGxiYWNrJiYpIGZpbmFsOwogCiAgICAgdm9pZCBlbmFibGVOYXZpZ2F0aW9uUHJlbG9hZChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciwgRXhjZXB0aW9uT3JW
b2lkQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBkaXNhYmxlTmF2aWdhdGlvblByZWxvYWQo
V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIEV4Y2VwdGlvbk9y
Vm9pZENhbGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGEwYzA0OGI3ZmUzNzkzMzQxOTNiMTg2OGE0
NzhkOTM3ZTFjN2M3ODguLmE4ZDIzZDRlNWEwNTVjYWY5ODJiMWUwMzQwZTU2MGY4OWQxMzkyYjcg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wMy0zMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CisKKyAgICAgICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5nZXROb3Rp
ZmljYXRpb25zIHNob3VsZCBsaXN0IGFsbCBwZXJzaXN0ZW50IG5vdGlmaWNhdGlvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODU0NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy93
b3JrZXJzL3NlcnZpY2UvZ2V0bm90aWZpY2F0aW9ucy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
aHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvZ2V0bm90aWZpY2F0aW9ucy5odG1sOgorCiAyMDIy
LTAzLTMwICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgZXhw
bGFuYXRpb24gYXMgdG8gd2h5IGNvbnRhaW4tc2l6ZS1idXR0b24tMDAxLmh0bWwvMDAyLmh0bWwg
V1BUIHRlc3RzIGZhaWwuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtl
cnMvc2VydmljZS9nZXRub3RpZmljYXRpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2dldG5vdGlmaWNhdGlvbnMtZXhwZWN0ZWQudHh0Cmlu
ZGV4IGY4MTA4YzZkOTBlMmI2M2U4YzlhZWU0OTJkYWM2YWU4MTEzMDU1YjAuLjJjYTI1NzQxYjk5
ODdjOWUxZjIyMzQzZmQwODI4YmE3ODNiMmM0YmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2dldG5vdGlmaWNhdGlvbnMtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2dldG5vdGlmaWNhdGlv
bnMtZXhwZWN0ZWQudHh0CkBAIC0zNyw2ICszNywxMSBAQCBUaXRsZTogQnVkZHkKIEJvZHk6IEJv
ZHkzCiBUYWc6IHRhZy1iCiAKK1JldHJpZXZpbmcgbm90aWZpY2F0aW9ucyBmcm9tIHBhZ2UgcmVn
aXN0cmF0aW9uIG9iamVjdCAtIDMKK05vdGlmaWNhdGlvbjogSGVsbG8gLyBCb2R5MSAvIHRhZy1h
CitOb3RpZmljYXRpb246IFRoZXJlIC8gQm9keTIgLyB0YWctYgorTm90aWZpY2F0aW9uOiBCdWRk
eSAvIEJvZHkzIC8gdGFnLWIKK1JldHJpZXZpbmcgbm90aWZpY2F0aW9ucyBmcm9tIHBhZ2UgcmVn
aXN0cmF0aW9uIG9iamVjdCAtIGVuZAogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQog
CiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtl
cnMvc2VydmljZS9nZXRub3RpZmljYXRpb25zLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dvcmtlcnMvc2VydmljZS9nZXRub3RpZmljYXRpb25zLmh0bWwKaW5kZXggMDQzZDQzMDU0MjYy
NTQ3MWYwMDkzZTk4MjEzNjI5NjQwMzBkMjU0OC4uMzRlZjMxZWNkNWFlM2YxZDJkODA2NzRkMTRi
NTA3OWI4YTE4ZmZlOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJz
L3NlcnZpY2UvZ2V0bm90aWZpY2F0aW9ucy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd29ya2Vycy9zZXJ2aWNlL2dldG5vdGlmaWNhdGlvbnMuaHRtbApAQCAtMiw3ICsyLDYgQEAK
IDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQgc3JjPSIvcmVzb3VyY2VzL25vdGlmaWNhdGlvbnMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdD4KLQogZnVuY3Rpb24gZmFpbFRoZVRlc3QobXNnKQogewogICAgIHRlc3RGYWlsZWQo
bXNnKTsKQEAgLTE5LDggKzE4LDkgQEAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCBwZXJz
aXN0ZW50IG5vdGlmaWNhdGlvbnMgY3JlYXRlZCBieSBhIHNlcnZpY2Ugd29ya2UKIAogc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJOb3RpZmljYXRpb24ucGVybWlzc2lvbiIsICJncmFudGVkIik7CiAK
K3ZhciByZWdpc3RyYXRpb247CiBhc3luYyBmdW5jdGlvbiByZWdpc3RlclNlcnZpY2VXb3JrZXIo
KSB7Ci0gICAgdmFyIHJlZ2lzdHJhdGlvbiA9IGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2Vy
LnJlZ2lzdGVyKCdyZXNvdXJjZXMvc2hvd25vdGlmaWNhdGlvbi13b3JrZXIuanMnKTsKKyAgICBy
ZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcigncmVz
b3VyY2VzL3Nob3dub3RpZmljYXRpb24td29ya2VyLmpzJyk7CiAgICAgCiAgICAgaWYgKCFyZWdp
c3RyYXRpb24pCiAgICAgICAgIHJldHVybiB0ZXN0RmFpbGVkKCJObyByZWdpc3RyYXRpb24iKTsK
QEAgLTQ0LDcgKzQ0LDcgQEAgYXN5bmMgZnVuY3Rpb24gcmVnaXN0ZXJTZXJ2aWNlV29ya2VyKCkg
ewogdmFyIG51bWJlclNob3duID0gMDsKIHZhciBudW1iZXJHb3QgPSAwOwogCi1mdW5jdGlvbiBn
b3ROb3RlcyhldmVudCkKK2FzeW5jIGZ1bmN0aW9uIGdvdE5vdGVzKGV2ZW50KQogewogICAgICsr
bnVtYmVyR290OwogCkBAIC01OCw2ICs1OCwxMyBAQCBmdW5jdGlvbiBnb3ROb3RlcyhldmVudCkK
ICAgICAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCJ0cnlzaG93fFRoZXJlfEJvZHkyfHRh
Zy1iIik7CiAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgidHJ5c2hvd3xCdWRkeXxC
b2R5M3x0YWctYiIpOwogICAgIH0gZWxzZSBpZiAobnVtYmVyR290ID09IDQpIHsKKyAgICAgICAg
Y29uc3Qgbm90aWZpY2F0aW9ucyA9IGF3YWl0IHJlZ2lzdHJhdGlvbi5nZXROb3RpZmljYXRpb25z
KHsgdGFnOiAiIiB9KTsKKyAgICAgICAgZGVidWcoIlJldHJpZXZpbmcgbm90aWZpY2F0aW9ucyBm
cm9tIHBhZ2UgcmVnaXN0cmF0aW9uIG9iamVjdCAtICIgKyBub3RpZmljYXRpb25zLmxlbmd0aCk7
CisgICAgICAgIG5vdGlmaWNhdGlvbnMuZm9yRWFjaChub3RpZmljYXRpb24gPT4geworICAgICAg
ICAgICAgZGVidWcoIk5vdGlmaWNhdGlvbjogIiArIG5vdGlmaWNhdGlvbi50aXRsZSArICIgLyAi
ICsgbm90aWZpY2F0aW9uLmJvZHkgKyAiIC8gIiArIG5vdGlmaWNhdGlvbi50YWcpOworICAgICAg
ICB9KTsgICAgCisgICAgICAgIGRlYnVnKCJSZXRyaWV2aW5nIG5vdGlmaWNhdGlvbnMgZnJvbSBw
YWdlIHJlZ2lzdHJhdGlvbiBvYmplY3QgLSBlbmQiKTsKKwogICAgICAgICB0ZXN0Q29tcGxldGVk
KCk7CiAgICAgfQogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456338</attachid>
            <date>2022-04-01 02:12:52 -0700</date>
            <delta_ts>2022-04-01 06:13:16 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-238544-20220401111250.patch</filename>
            <type>text/plain</type>
            <size>33873</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMTYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjRmMjRiNzNkMmI3MmE5
MWI4ZTdkMzZjZTkzMTg2Y2JlNjM1OTZlNy4uNjlmMTllM2Q1ZmE5NzBlZGE1ZWRkMmQ0ZjZhYmJm
MzNiNjYyZWU1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIyLTA0LTAxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uLmdldE5vdGlmaWNhdGlvbnMgc2hvdWxkIGxpc3QgYWxsIHBlcnNpc3RlbnQgbm90
aWZpY2F0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM4NTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAg
UmVtb3ZlIGNvbnRleHQgYmFzZWQgbm90aWZpY2F0aW9uIGxpc3Qgc2luY2UgdGhlIGxpc3QgaXMg
Z2xvYmFsLgorICAgICAgICBBZGQgY3JlYXRpb24gdGltZSB0byBub3RpZmljYXRpb24gZGF0YS4K
KyAgICAgICAgSW5zdGVhZCBvZiByZWFkaW5nIHRoZSBsaXN0IGxvY2FsbHksIHVzZSB0aGUgU1dD
bGllbnQgY29ubmVjdGlvbiB0byBnZXQgaXQuCisKKyAgICAgICAgQ292ZXJlZCBieSB1cGRhdGVk
IHRlc3QuCisKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNw
cDoKKyAgICAgICAgKiBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmg6CisgICAg
ICAgICogTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkRhdGEuaDoKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmg6CisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uaWRsOgorICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9Xb3JrZXJTV0NsaWVudENvbm5lY3Rpb24uY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9Xb3JrZXJTV0NsaWVudENvbm5lY3Rpb24uaDoKKwogMjAyMi0wNC0wMSAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTm90aWZpY2F0aW9uIHNob3VsZCBi
ZSBleHBvc2VkIHRvIFNlcnZpY2VXb3JrZXIgY29udGV4dHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYTY1YWMzNjM4
ZWI4NDM3MzU0MWJmOWVlNGUzZjQzZmZiYmIzODkzZi4uNzVmOGU4YzM2OTVhMWVkMWZlZjZhMGIz
ZWUzN2Y0MzM0ZDc5NWZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAyMi0wNC0wMSAg
WW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbi5nZXROb3RpZmljYXRpb25zIHNob3VsZCBsaXN0IGFsbCBwZXJzaXN0ZW50
IG5vdGlmaWNhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzODU0NAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAg
ICAgIEdvIGZyb20gV2ViUHJvY2VzcyB0byBVSVByb2Nlc3MgdG8gcmVhZCB0aGUgbm90aWZpY2F0
aW9uIG1hcCB0aHJvdWdoIElQQyBtZXNzYWdpbmcuCisgICAgICAgIEZpbHRlciBvdXQgdGhlIG5v
dGlmaWNhdGlvbnMgYWNjb3JkaW5nIHRhZywgb3JpZ2luIGFuZCBzZXNzaW9uLgorICAgICAgICBT
b3J0IHRoZSBub3RpZmljYXRpb25zIGFjY29yZGluZyBjcmVhdGlvblRpbWUgd2l0aCBVSVByb2Nl
c3MgaWRlbnRpZmllciBhcyB0aWUgYnJlYWtlci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgICogVUlQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmlj
YXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGll
bnRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGll
bnRDb25uZWN0aW9uLmg6CisKIDIwMjItMDQtMDEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgogCiAgICAgICAgIFBlcnNpc3RlbnQgbm90aWZpY2F0aW9ucyBzaG91bGQgd29yayBp
biBkb2N1bWVudCBzY29wZXMgYXMgd2VsbCBhcyBzZXJ2aWNlIHdvcmtlciBnbG9iYWwgc2NvcGVz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb24uY3BwCmluZGV4IDBiMjdkM2M3ZWQ3Njk1YTE5MTM5MmNmYmQzODMwMWQyNDZkNmEzNTIu
LjUxMzhiNTI1MTlhNTlkZDllNjVlYjQyMzM2NmQyNzYxOGYzODJiNmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCkBA
IC05NCwxMCArOTQsOSBAQCBOb3RpZmljYXRpb246Ok5vdGlmaWNhdGlvbihTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBTdHJpbmcmJiB0aXRsZSwgT3B0aQogewogICAgIGlmIChjb250
ZXh0LmlzRG9jdW1lbnQoKSkKICAgICAgICAgbV9ub3RpZmljYXRpb25Tb3VyY2UgPSBOb3RpZmlj
YXRpb25Tb3VyY2U6OkRvY3VtZW50OwotICAgIGVsc2UgaWYgKGNvbnRleHQuaXNTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUoKSkgeworICAgIGVsc2UgaWYgKGNvbnRleHQuaXNTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUoKSkKICAgICAgICAgbV9ub3RpZmljYXRpb25Tb3VyY2UgPSBOb3RpZmljYXRp
b25Tb3VyY2U6OlNlcnZpY2VXb3JrZXI7Ci0gICAgICAgIGRvd25jYXN0PFNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZT4oY29udGV4dCkucmVnaXN0cmF0aW9uKCkuYWRkTm90aWZpY2F0aW9uVG9MaXN0
KCp0aGlzKTsKLSAgICB9IGVsc2UKKyAgICBlbHNlCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAKICAgICBpZiAoIW9wdGlvbnMuaWNvbi5pc0VtcHR5KCkpIHsKQEAgLTEy
NCwxMCArMTIzLDYgQEAgTm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24oY29uc3QgTm90aWZpY2F0
aW9uJiBvdGhlcikKIAogTm90aWZpY2F0aW9uOjp+Tm90aWZpY2F0aW9uKCkKIHsKLSAgICBpZiAo
YXV0byogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkgewotICAgICAgICBpZiAo
Y29udGV4dC0+aXNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKSkKLSAgICAgICAgICAgIGRvd25j
YXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCktPnJlZ2lzdHJhdGlvbigpLnJl
bW92ZU5vdGlmaWNhdGlvbkZyb21MaXN0KCp0aGlzKTsKLSAgICB9CiB9CiAKIFJlZjxOb3RpZmlj
YXRpb24+IE5vdGlmaWNhdGlvbjo6Y29weUZvckdldE5vdGlmaWNhdGlvbnMoKSBjb25zdApAQCAt
MTM1LDE3ICsxMzAsNiBAQCBSZWY8Tm90aWZpY2F0aW9uPiBOb3RpZmljYXRpb246OmNvcHlGb3JH
ZXROb3RpZmljYXRpb25zKCkgY29uc3QKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOb3RpZmlj
YXRpb24oKnRoaXMpKTsKIH0KIAotdm9pZCBOb3RpZmljYXRpb246OmNvbnRleHREZXN0cm95ZWQo
KQotewotICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAg
UkVMRUFTRV9BU1NFUlQoY29udGV4dCk7Ci0gICAgaWYgKGNvbnRleHQtPmlzU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlKCkpCi0gICAgICAgIGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZT4oY29udGV4dCktPnJlZ2lzdHJhdGlvbigpLnJlbW92ZU5vdGlmaWNhdGlvbkZyb21MaXN0KCp0
aGlzKTsKLQotICAgIEFjdGl2ZURPTU9iamVjdDo6Y29udGV4dERlc3Ryb3llZCgpOwotfQotCi0K
IHZvaWQgTm90aWZpY2F0aW9uOjpzaG93U29vbigpCiB7CiAgICAgcXVldWVUYXNrS2VlcGluZ09i
amVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpVc2VySW50ZXJhY3Rpb24sIFt0aGlzXSB7CkBA
IC0xOTEsMTUgKzE3NSwxMCBAQCB2b2lkIE5vdGlmaWNhdGlvbjo6Y2xvc2UoKQogICAgIHN3aXRj
aCAobV9zdGF0ZSkgewogICAgIGNhc2UgSWRsZToKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBT
aG93aW5nOiB7CisgICAgY2FzZSBTaG93aW5nOgogICAgICAgICBpZiAoYXV0byogY2xpZW50ID0g
Y2xpZW50RnJvbUNvbnRleHQoKSkKICAgICAgICAgICAgIGNsaWVudC0+Y2FuY2VsKCp0aGlzKTsK
LSAgICAgICAgaWYgKGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpIHsK
LSAgICAgICAgICAgIGlmIChjb250ZXh0LT5pc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSgpKQot
ICAgICAgICAgICAgICAgIGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4
dCktPnJlZ2lzdHJhdGlvbigpLnJlbW92ZU5vdGlmaWNhdGlvbkZyb21MaXN0KCp0aGlzKTsKLSAg
ICAgICAgfQogICAgICAgICBicmVhazsKLSAgICB9CiAgICAgY2FzZSBDbG9zZWQ6CiAgICAgICAg
IGJyZWFrOwogICAgIH0KQEAgLTM0Niw2ICszMjUsNyBAQCBOb3RpZmljYXRpb25EYXRhIE5vdGlm
aWNhdGlvbjo6ZGF0YSgpIGNvbnN0CiAgICAgICAgIG1fc2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
blVSTC5pc29sYXRlZENvcHkoKSwKICAgICAgICAgaWRlbnRpZmllcigpLAogICAgICAgICAqc2Vz
c2lvbklELAorICAgICAgICBNb25vdG9uaWNUaW1lOjpub3coKQogICAgIH07CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaApp
bmRleCBhNGYzZTg1MTlmNjViYTJlMTE3YWM2NzIwNjFhZWRjMTM5NGU2ZTgxLi45NDYxMjM3Njdj
N2Q4MWM2NmI5YzE4MjRlODM0YjRkNzlhYWI5NjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCkBAIC0xMTIsOCArMTEyLDYg
QEAgcHJpdmF0ZToKICAgICBOb3RpZmljYXRpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFN0
cmluZyYmIHRpdGxlLCBPcHRpb25zJiYpOwogICAgIE5vdGlmaWNhdGlvbihjb25zdCBOb3RpZmlj
YXRpb24mKTsKIAotICAgIHZvaWQgY29udGV4dERlc3Ryb3llZCgpIGZpbmFsOwotCiAgICAgTm90
aWZpY2F0aW9uQ2xpZW50KiBjbGllbnRGcm9tQ29udGV4dCgpOwogICAgIEV2ZW50VGFyZ2V0SW50
ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gTm90aWZp
Y2F0aW9uRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25EYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25EYXRhLmNwcAppbmRl
eCBiZmZiMzhlMGU0MzFlMWExMmYzMThlNzRmM2FiMmRjMDAyZWFmYzlmLi5kZTEyNmJiZjA3NjI2
ODAyNTg1MTQ0MzMxYjQyZDMzY2YwNDYzNWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkRhdGEuY3BwCkBAIC0zMCwx
MiArMzAsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBOb3RpZmljYXRpb25EYXRhIE5vdGlm
aWNhdGlvbkRhdGE6Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKIHsKLSAgICByZXR1cm4geyB0aXRs
ZS5pc29sYXRlZENvcHkoKSwgYm9keS5pc29sYXRlZENvcHkoKSwgaWNvblVSTC5pc29sYXRlZENv
cHkoKSwgdGFnLmlzb2xhdGVkQ29weSgpLCBsYW5ndWFnZS5pc29sYXRlZENvcHkoKSwgZGlyZWN0
aW9uLCBvcmlnaW5TdHJpbmcuaXNvbGF0ZWRDb3B5KCksIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25VUkwuaXNvbGF0ZWRDb3B5KCksIG5vdGlmaWNhdGlvbklELCBzb3VyY2VTZXNzaW9uIH07Cisg
ICAgcmV0dXJuIHsgdGl0bGUuaXNvbGF0ZWRDb3B5KCksIGJvZHkuaXNvbGF0ZWRDb3B5KCksIGlj
b25VUkwuaXNvbGF0ZWRDb3B5KCksIHRhZy5pc29sYXRlZENvcHkoKSwgbGFuZ3VhZ2UuaXNvbGF0
ZWRDb3B5KCksIGRpcmVjdGlvbiwgb3JpZ2luU3RyaW5nLmlzb2xhdGVkQ29weSgpLCBzZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uVVJMLmlzb2xhdGVkQ29weSgpLCBub3RpZmljYXRpb25JRCwgc291
cmNlU2Vzc2lvbiwgY3JlYXRpb25UaW1lIH07CiB9CiAKIE5vdGlmaWNhdGlvbkRhdGEgTm90aWZp
Y2F0aW9uRGF0YTo6aXNvbGF0ZWRDb3B5KCkgJiYKIHsKLSAgICByZXR1cm4geyBXVEZNb3ZlKHRp
dGxlKS5pc29sYXRlZENvcHkoKSwgV1RGTW92ZShib2R5KS5pc29sYXRlZENvcHkoKSwgV1RGTW92
ZShpY29uVVJMKS5pc29sYXRlZENvcHkoKSwgV1RGTW92ZSh0YWcpLmlzb2xhdGVkQ29weSgpLCBX
VEZNb3ZlKGxhbmd1YWdlKS5pc29sYXRlZENvcHkoKSwgZGlyZWN0aW9uLCBXVEZNb3ZlKG9yaWdp
blN0cmluZykuaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUoc2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
blVSTCkuaXNvbGF0ZWRDb3B5KCksIG5vdGlmaWNhdGlvbklELCBzb3VyY2VTZXNzaW9uIH07Cisg
ICAgcmV0dXJuIHsgV1RGTW92ZSh0aXRsZSkuaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUoYm9keSku
aXNvbGF0ZWRDb3B5KCksIFdURk1vdmUoaWNvblVSTCkuaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUo
dGFnKS5pc29sYXRlZENvcHkoKSwgV1RGTW92ZShsYW5ndWFnZSkuaXNvbGF0ZWRDb3B5KCksIGRp
cmVjdGlvbiwgV1RGTW92ZShvcmlnaW5TdHJpbmcpLmlzb2xhdGVkQ29weSgpLCBXVEZNb3ZlKHNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25VUkwpLmlzb2xhdGVkQ29weSgpLCBub3RpZmljYXRpb25J
RCwgc291cmNlU2Vzc2lvbiwgY3JlYXRpb25UaW1lIH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb25EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uRGF0YS5oCmluZGV4IDMyMjA5ODMzZWRhMjA0MTY0YmQ1NjExNzk2ZDQwMGY3
ZjdhMjdjODMuLjQ0NmU3NGQ0YzhhYmI5NzI2OTQzYTQ0YWY1ZmViYWQ0N2JkN2U3YjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25E
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbkRhdGEuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSA8b3B0aW9uYWw+CiAjaW5j
bHVkZSA8cGFsL1Nlc3Npb25JRC5oPgorI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CiAj
aW5jbHVkZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CkBAIC01MiwxMiArNTMsMTMgQEAgc3RydWN0IE5vdGlmaWNhdGlv
bkRhdGEgewogICAgIFVSTCBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uVVJMOwogICAgIFVVSUQg
bm90aWZpY2F0aW9uSUQ7CiAgICAgUEFMOjpTZXNzaW9uSUQgc291cmNlU2Vzc2lvbjsKKyAgICBN
b25vdG9uaWNUaW1lIGNyZWF0aW9uVGltZTsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
CiB2b2lkIE5vdGlmaWNhdGlvbkRhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
ewotICAgIGVuY29kZXIgPDwgdGl0bGUgPDwgYm9keSA8PCBpY29uVVJMIDw8IHRhZyA8PCBsYW5n
dWFnZSA8PCBkaXJlY3Rpb24gPDwgb3JpZ2luU3RyaW5nIDw8IHNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25VUkwgPDwgbm90aWZpY2F0aW9uSUQgPDwgc291cmNlU2Vzc2lvbjsKKyAgICBlbmNvZGVy
IDw8IHRpdGxlIDw8IGJvZHkgPDwgaWNvblVSTCA8PCB0YWcgPDwgbGFuZ3VhZ2UgPDwgZGlyZWN0
aW9uIDw8IG9yaWdpblN0cmluZyA8PCBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uVVJMIDw8IG5v
dGlmaWNhdGlvbklEIDw8IHNvdXJjZVNlc3Npb24gPDwgY3JlYXRpb25UaW1lOwogfQogCiB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAtMTEzLDYgKzExNSwxMSBAQCBzdGQ6Om9wdGlvbmFsPE5v
dGlmaWNhdGlvbkRhdGE+IE5vdGlmaWNhdGlvbkRhdGE6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogICAgIGlmICghc291cmNlU2Vzc2lvbikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAorICAgIHN0ZDo6b3B0aW9uYWw8TW9ub3RvbmljVGltZT4gY3JlYXRpb25UaW1lOworICAgIGRl
Y29kZXIgPj4gY3JlYXRpb25UaW1lOworICAgIGlmICghY3JlYXRpb25UaW1lKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworCiAgICAgcmV0dXJuIHsgewogICAgICAgICBXVEZNb3ZlKCp0
aXRsZSksCiAgICAgICAgIFdURk1vdmUoKmJvZHkpLApAQCAtMTI0LDYgKzEzMSw3IEBAIHN0ZDo6
b3B0aW9uYWw8Tm90aWZpY2F0aW9uRGF0YT4gTm90aWZpY2F0aW9uRGF0YTo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiAgICAgICAgIFdURk1vdmUoKnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25V
UkwpLAogICAgICAgICBXVEZNb3ZlKCpub3RpZmljYXRpb25JRCksCiAgICAgICAgIFdURk1vdmUo
KnNvdXJjZVNlc3Npb24pLAorICAgICAgICBXVEZNb3ZlKCpjcmVhdGlvblRpbWUpCiAgICAgfSB9
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGll
bnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRD
b25uZWN0aW9uLmgKaW5kZXggMDVmZGQwM2FlZjQzYzVkMDYwZmM3ZjFiY2M0NWM4YWNiYzhjODVj
Zi4uZGQzMzZjYTIwZWNjZGJmMmFlZDhmZTQ4Y2RhMzk1NDAzNTMxNWRiZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uaApAQCAt
MjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJOYXZp
Z2F0aW9uUHJlbG9hZFN0YXRlLmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uRGF0YS5oIgogI2lu
Y2x1ZGUgIlB1c2hQZXJtaXNzaW9uU3RhdGUuaCIKICNpbmNsdWRlICJQdXNoU3Vic2NyaXB0aW9u
RGF0YS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLmgiCkBA
IC00Miw2ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVzb3VyY2VFcnJv
cjsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsK
IGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIGNsYXNzIFNlcnZpY2VXb3JrZXJDb250YWlu
ZXI7CiBjbGFzcyBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOwpAQCAtNTAsNiArNTIsNyBAQCBl
bnVtIGNsYXNzIFNlcnZpY2VXb3JrZXJTdGF0ZSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFNob3Vs
ZE5vdGlmeVdoZW5SZXNvbHZlZCA6IGJvb2w7CiBzdHJ1Y3QgRXhjZXB0aW9uRGF0YTsKIHN0cnVj
dCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0czsKK3N0cnVjdCBOb3RpZmljYXRpb25EYXRhOwogc3Ry
dWN0IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOwogc3RydWN0IFNlcnZpY2VXb3JrZXJEYXRhOwog
c3RydWN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhOwpAQCAtMTAxLDYgKzEwNCw5IEBA
IHB1YmxpYzoKICAgICB1c2luZyBHZXRQdXNoUGVybWlzc2lvblN0YXRlQ2FsbGJhY2sgPSBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPFB1c2hQZXJtaXNzaW9uU3RhdGU+JiYpPjsK
ICAgICB2aXJ0dWFsIHZvaWQgZ2V0UHVzaFBlcm1pc3Npb25TdGF0ZShTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uSWRlbnRpZmllciwgR2V0UHVzaFBlcm1pc3Npb25TdGF0ZUNhbGxiYWNrJiYpID0g
MDsKIAorICAgIHVzaW5nIEdldE5vdGlmaWNhdGlvbnNDYWxsYmFjayA9IENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoRXhjZXB0aW9uT3I8VmVjdG9yPE5vdGlmaWNhdGlvbkRhdGE+PiYmKT47CisgICAg
dmlydHVhbCB2b2lkIGdldE5vdGlmaWNhdGlvbnMoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwg
R2V0Tm90aWZpY2F0aW9uc0NhbGxiYWNrJiYpID0gMDsKKwogICAgIHVzaW5nIEV4Y2VwdGlvbk9y
Vm9pZENhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25Pcjx2b2lkPiYm
KT47CiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZU5hdmlnYXRpb25QcmVsb2FkKFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBFeGNlcHRpb25PclZvaWRDYWxsYmFjayYmKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGVOYXZpZ2F0aW9uUHJlbG9hZChTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpZmllciwgRXhjZXB0aW9uT3JWb2lkQ2FsbGJhY2smJikgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
b250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDb250YWluZXIuY3BwCmluZGV4IDQ3NTQyZGRmNDE2ZThlMzYzY2M3NDI2MjIyNjQxNDE0YTRm
YjFmMGUuLjQ1YTQyMjAzNzkzMzNjYWQ0NmI0ODZlYjI3MmNiOGQyYThkYjAzZjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNv
bnRhaW5lci5jcHAKQEAgLTYxMCw2ICs2MTAsMjggQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFp
bmVyOjpnZXRQdXNoUGVybWlzc2lvblN0YXRlKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGUK
ICAgICB9KTsKIH0KIAorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQordm9pZCBTZXJ2aWNlV29y
a2VyQ29udGFpbmVyOjpnZXROb3RpZmljYXRpb25zKGNvbnN0IFVSTCYgc2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvblVSTCwgY29uc3QgU3RyaW5nJiB0YWcsIERPTVByb21pc2VEZWZlcnJlZDxJRExT
ZXF1ZW5jZTxJRExJbnRlcmZhY2U8Tm90aWZpY2F0aW9uPj4+JiYgcHJvbWlzZSkKK3sKKyAgICBl
bnN1cmVTV0NsaWVudENvbm5lY3Rpb24oKS5nZXROb3RpZmljYXRpb25zKHNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25VUkwsIHRhZywgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBwcm90ZWN0
ZWRUaGlzID0gUmVmIHsgKnRoaXMgfV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAg
IGF1dG8qIGNvbnRleHQgPSBwcm90ZWN0ZWRUaGlzLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
CisgICAgICAgIGlmICghY29udGV4dCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBp
ZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICBwcm9taXNlLnJlamVjdChy
ZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIGF1dG8gZGF0YSA9IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAg
ICAgICAgYXV0byBub3RpZmljYXRpb25zID0gbWFwKGRhdGEsIFtjb250ZXh0XShhdXRvJiYgZGF0
YSkgeworICAgICAgICAgICAgcmV0dXJuIE5vdGlmaWNhdGlvbjo6Y3JlYXRlKCpjb250ZXh0LCBX
VEZNb3ZlKGRhdGEpKTsKKyAgICAgICAgfSk7CisgICAgICAgIHByb21pc2UucmVzb2x2ZShXVEZN
b3ZlKG5vdGlmaWNhdGlvbnMpKTsKKyAgICB9KTsKK30KKyNlbmRpZgorCiB2b2lkIFNlcnZpY2VX
b3JrZXJDb250YWluZXI6OnF1ZXVlVGFza1RvRGlzcGF0Y2hDb250cm9sbGVyQ2hhbmdlRXZlbnQo
KQogewogICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkLnB0cigpID09ICZUaHJlYWQ6OmN1cnJl
bnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDb250YWluZXIuaAppbmRleCBhYjJiMjM3NzUyNGEzOTg2MzZhZmUwNDBkOGQxZWQ4
MDMxNjdkM2YyLi42YmEzZDFjZDIzYjRhMmU3YWE4MzE5YzA0NDk4MmRmNGMyOTdkZDQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRh
aW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Q29udGFpbmVyLmgKQEAgLTkxLDYgKzkxLDkgQEAgcHVibGljOgogICAgIHZvaWQgdW5zdWJzY3Jp
YmVGcm9tUHVzaFNlcnZpY2UoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIFB1
c2hTdWJzY3JpcHRpb25JZGVudGlmaWVyLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4m
Jik7CiAgICAgdm9pZCBnZXRQdXNoU3Vic2NyaXB0aW9uKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b24mLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMTnVsbGFibGU8SURMSW50ZXJmYWNlPFB1c2hTdWJz
Y3JpcHRpb24+Pj4mJik7CiAgICAgdm9pZCBnZXRQdXNoUGVybWlzc2lvblN0YXRlKFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMRW51bWVy
YXRpb248UHVzaFBlcm1pc3Npb25TdGF0ZT4+JiYpOworI2lmIEVOQUJMRShOT1RJRklDQVRJT05T
KQorICAgIHZvaWQgZ2V0Tm90aWZpY2F0aW9ucyhjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBE
T01Qcm9taXNlRGVmZXJyZWQ8SURMU2VxdWVuY2U8SURMSW50ZXJmYWNlPE5vdGlmaWNhdGlvbj4+
PiYmKTsKKyNlbmRpZgogCiAgICAgU2VydmljZVdvcmtlckpvYiogam9iKFNlcnZpY2VXb3JrZXJK
b2JJZGVudGlmaWVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwCmluZGV4IDVmM2M4NzNjM2I2
ZTU4NDZhY2EyYTNjYTYwMzg0YTZkNWMyNGUwNDIuLmU1YjQ0NDY4MGY4MDc1NGVhNjUxZmU1YzZh
ZmFjOWU0YmIwMTJiOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAKQEAgLTMwMCw0OSArMzAw
LDEwIEBAIHZvaWQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6c2hvd05vdGlmaWNhdGlvbihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0CiAgICAgfSk7CiB9CiAKLXZvaWQgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbjo6Z2V0Tm90aWZpY2F0aW9ucyhTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBjb25zdCBHZXROb3RpZmljYXRpb25PcHRpb25zJiBmaWx0ZXIsIERPTVBy
b21pc2VEZWZlcnJlZDxJRExTZXF1ZW5jZTxJRExJbnRlcmZhY2U8Tm90aWZpY2F0aW9uPj4+IHBy
b21pc2UpCit2b2lkIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OmdldE5vdGlmaWNhdGlvbnMo
Y29uc3QgR2V0Tm90aWZpY2F0aW9uT3B0aW9ucyYgZmlsdGVyLCBET01Qcm9taXNlRGVmZXJyZWQ8
SURMU2VxdWVuY2U8SURMSW50ZXJmYWNlPE5vdGlmaWNhdGlvbj4+PiBwcm9taXNlKQogewotICAg
IGF1dG8gbm90aWZpY2F0aW9ucyA9IGZpbHRlcmVkTm90aWZpY2F0aW9uTGlzdChmaWx0ZXIudGFn
KTsKLSAgICBjb250ZXh0LmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpET01NYW5p
cHVsYXRpb24sIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgbm90aWZpY2F0aW9ucyA9IFdU
Rk1vdmUobm90aWZpY2F0aW9ucyldKCkgbXV0YWJsZSB7Ci0gICAgICAgIHByb21pc2UucmVzb2x2
ZShXVEZNb3ZlKG5vdGlmaWNhdGlvbnMpKTsKLSAgICB9KTsKLX0KLQotdm9pZCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uOjphZGROb3RpZmljYXRpb25Ub0xpc3QoTm90aWZpY2F0aW9uJiBub3Rp
ZmljYXRpb24pCi17Ci0gICAgLy8gQSBOb3RpZmljYXRpb24gYXQgdGhpcyBleGFjdCBhZGRyZXNz
IG1pZ2h0IHByZXZpb3VzbHkgaGF2ZSBiZWVuIGluIHRoZSBsaXN0IGJ1dCBub3Qgc3VjY2Vzc2Z1
bGx5IHJlbW92ZWQuCi0gICAgLy8gVGhlIFdlYWtIYXNoU2V0IGNhcHR1cmVzIHRoYXQgcG9zc2li
aWxpdHkgaGVyZSB0byBoZWxwIHVzIG1haW50YWluIGNvbnNpc3RlbmN5LgotICAgIGF1dG8gaXRl
ciA9IG1fbm90aWZpY2F0aW9uTGlzdC5maW5kKCZub3RpZmljYXRpb24pOwotICAgIGlmIChpdGVy
ICE9IG1fbm90aWZpY2F0aW9uTGlzdC5lbmQoKSkgewotICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
bV9ub3RpZmljYXRpb25TZXQuY29udGFpbnMobm90aWZpY2F0aW9uKSk7Ci0gICAgICAgIG1fbm90
aWZpY2F0aW9uTGlzdC5yZW1vdmUoaXRlcik7Ci0gICAgfQotCi0gICAgbV9ub3RpZmljYXRpb25M
aXN0LmFkZCgmbm90aWZpY2F0aW9uKTsKLSAgICBhdXRvIHJlc3VsdCA9IG1fbm90aWZpY2F0aW9u
U2V0LmFkZChub3RpZmljYXRpb24pOwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQu
aXNOZXdFbnRyeSk7CisgICAgbV9jb250YWluZXItPmdldE5vdGlmaWNhdGlvbnMobV9yZWdpc3Ry
YXRpb25EYXRhLnNjb3BlVVJMLCBmaWx0ZXIudGFnLCBXVEZNb3ZlKHByb21pc2UpKTsKIH0KLQot
dm9pZCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpyZW1vdmVOb3RpZmljYXRpb25Gcm9tTGlz
dChOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbikKLXsKLSAgICAvLyBUaGUgc2FtZSBub3RpZmlj
YXRpb24gbWlnaHQgdHJ5IHRvIHJlbW92ZSBpdHNlbGYgZnJvbSB0aGlzIGxpc3QgbW9yZSB0aGFu
IG9uY2UsIGFuZCB0aGF0J3MgZmluZS4KLSAgICBtX25vdGlmaWNhdGlvbkxpc3QucmVtb3ZlKCZu
b3RpZmljYXRpb24pOwotICAgIG1fbm90aWZpY2F0aW9uU2V0LnJlbW92ZShub3RpZmljYXRpb24p
OwotfQotCi1WZWN0b3I8UmVmPE5vdGlmaWNhdGlvbj4+IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b246OmZpbHRlcmVkTm90aWZpY2F0aW9uTGlzdChjb25zdCBTdHJpbmcmIGZpbHRlcmVkVGFnKQot
ewotICAgIFZlY3RvcjxSZWY8Tm90aWZpY2F0aW9uPj4gcmVzdWx0czsKLSAgICBmb3IgKGF1dG8q
IG5vdGlmaWNhdGlvbiA6IG1fbm90aWZpY2F0aW9uTGlzdCkgewotICAgICAgICBpZiAoIW1fbm90
aWZpY2F0aW9uU2V0LmNvbnRhaW5zKCpub3RpZmljYXRpb24pKQotICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgIGlmIChmaWx0ZXJlZFRhZy5pc0VtcHR5KCkgfHwgbm90aWZpY2F0aW9uLT50
YWcoKSA9PSBmaWx0ZXJlZFRhZykKLSAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG5vdGlmaWNh
dGlvbi0+Y29weUZvckdldE5vdGlmaWNhdGlvbnMoKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJl
c3VsdHM7Ci19Ci0KICNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OX0VWRU5UKQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uaAppbmRleCBmN2NjOTBlZWI0MDc5
YTRmZGYxMjFlMmNmNzFkODU3MGY1NzVmNmE5Li42OWZiNWUzYTcwZTVlY2MwMWNkMTNlMWEyODY1
MDg0YmZhMDE1YTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmgKQEAgLTEwMCwxMSArMTAwLDcgQEAg
cHVibGljOgogICAgIH07CiAKICAgICB2b2lkIHNob3dOb3RpZmljYXRpb24oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIFN0cmluZyYmIHRpdGxlLCBOb3RpZmljYXRpb25PcHRpb25zJiYsIERPTVBy
b21pc2VEZWZlcnJlZDx2b2lkPiYmKTsKLSAgICB2b2lkIGdldE5vdGlmaWNhdGlvbnMoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IEdldE5vdGlmaWNhdGlvbk9wdGlvbnMmIGZpbHRlciwg
RE9NUHJvbWlzZURlZmVycmVkPElETFNlcXVlbmNlPElETEludGVyZmFjZTxOb3RpZmljYXRpb24+
Pj4pOwotCi0gICAgdm9pZCBhZGROb3RpZmljYXRpb25Ub0xpc3QoTm90aWZpY2F0aW9uJik7Ci0g
ICAgdm9pZCByZW1vdmVOb3RpZmljYXRpb25Gcm9tTGlzdChOb3RpZmljYXRpb24mKTsKLSAgICBW
ZWN0b3I8UmVmPE5vdGlmaWNhdGlvbj4+IGZpbHRlcmVkTm90aWZpY2F0aW9uTGlzdChjb25zdCBT
dHJpbmcmIGZpbHRlcmVkVGFnKTsKKyAgICB2b2lkIGdldE5vdGlmaWNhdGlvbnMoY29uc3QgR2V0
Tm90aWZpY2F0aW9uT3B0aW9ucyYgZmlsdGVyLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMU2VxdWVu
Y2U8SURMSW50ZXJmYWNlPE5vdGlmaWNhdGlvbj4+Pik7CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAg
LTEyOCwxMSArMTI0LDYgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8U2VydmljZVdvcmtlcj4gbV9h
Y3RpdmVXb3JrZXI7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TmF2aWdhdGlvblByZWxvYWRNYW5h
Z2VyPiBtX25hdmlnYXRpb25QcmVsb2FkOwotCi0jaWYgRU5BQkxFKE5PVElGSUNBVElPTl9FVkVO
VCkKLSAgICBMaXN0SGFzaFNldDxOb3RpZmljYXRpb24qPiBtX25vdGlmaWNhdGlvbkxpc3Q7Ci0g
ICAgV2Vha0hhc2hTZXQ8Tm90aWZpY2F0aW9uPiBtX25vdGlmaWNhdGlvblNldDsKLSNlbmRpZgog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uaWRsIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uaWRsCmluZGV4
IGI5NTNmOWQwMzEzNTI2Y2RkYmI3YjlhZmM2ZGExYjc5ZjA0MzRiZWEuLjJlZjIxYzNjOTQ3ZWU1
MzM5MWZlOGJjN2NkMjRmNmY4NDAwZjJkYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5pZGwKQEAg
LTQ2LDcgKzQ2LDcgQEAKICAgICBbTmV3T2JqZWN0XSBQcm9taXNlPGJvb2xlYW4+IHVucmVnaXN0
ZXIoKTsKIAogICAgIFtDb25kaXRpb25hbD1OT1RJRklDQVRJT05fRVZFTlQsIEVuYWJsZWRBdFJ1
bnRpbWU9Tm90aWZpY2F0aW9uRXZlbnRFbmFibGVkLCBDYWxsV2l0aD1DdXJyZW50U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dF0gUHJvbWlzZTx1bmRlZmluZWQ+IHNob3dOb3RpZmljYXRpb24oRE9NU3Ry
aW5nIHRpdGxlLCBvcHRpb25hbCBOb3RpZmljYXRpb25PcHRpb25zIG9wdGlvbnMpOwotICAgIFtD
b25kaXRpb25hbD1OT1RJRklDQVRJT05fRVZFTlQsIEVuYWJsZWRBdFJ1bnRpbWU9Tm90aWZpY2F0
aW9uRXZlbnRFbmFibGVkLCBDYWxsV2l0aD1DdXJyZW50U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0g
UHJvbWlzZTxzZXF1ZW5jZTxOb3RpZmljYXRpb24+PiBnZXROb3RpZmljYXRpb25zKG9wdGlvbmFs
IEdldE5vdGlmaWNhdGlvbk9wdGlvbnMgZmlsdGVyKTsKKyAgICBbQ29uZGl0aW9uYWw9Tk9USUZJ
Q0FUSU9OX0VWRU5ULCBFbmFibGVkQXRSdW50aW1lPU5vdGlmaWNhdGlvbkV2ZW50RW5hYmxlZF0g
UHJvbWlzZTxzZXF1ZW5jZTxOb3RpZmljYXRpb24+PiBnZXROb3RpZmljYXRpb25zKG9wdGlvbmFs
IEdldE5vdGlmaWNhdGlvbk9wdGlvbnMgZmlsdGVyKTsKIAogICAgIC8vIGV2ZW50CiAgICAgYXR0
cmlidXRlIEV2ZW50SGFuZGxlciBvbnVwZGF0ZWZvdW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1dvcmtlclNXQ2xpZW50Q29ubmVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvV29ya2VyU1dDbGllbnRDb25uZWN0aW9uLmNwcApp
bmRleCBiZTJmM2VmMWNlMGVhYWI4MjcyOGExYzE4NGZmMTI1YWM0NTI1N2M2Li5jNTI0ZWMwYTc1
YjZhZmIyODE3YmY2ZTM4MjMxNzU2Zjk1YjdlZjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvV29ya2VyU1dDbGllbnRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvV29ya2VyU1dDbGllbnRDb25uZWN0aW9uLmNwcApA
QCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCisjaW5jbHVk
ZSAiTm90aWZpY2F0aW9uRGF0YS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5j
bHVkZSAiU2VydmljZVdvcmtlckNsaWVudERhdGEuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2Vy
Sm9iRGF0YS5oIgpAQCAtNzksNyArODAsMTEgQEAgV29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjp+
V29ya2VyU1dDbGllbnRDb25uZWN0aW9uKCkKICAgICAgICAgY2FsbGJhY2soRXhjZXB0aW9uIHsg
QWJvcnRFcnJvciwgImNvbnRleHQgc3RvcHBlZCJfcyB9KTsKIAogICAgIGF1dG8gbmF2aWdhdGlv
blByZWxvYWRTdGF0ZUNhbGxiYWNrcyA9IFdURk1vdmUobV9uYXZpZ2F0aW9uUHJlbG9hZFN0YXRl
Q2FsbGJhY2tzKTsKLSAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogbV9uYXZpZ2F0aW9uUHJlbG9h
ZFN0YXRlQ2FsbGJhY2tzLnZhbHVlcygpKQorICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBuYXZp
Z2F0aW9uUHJlbG9hZFN0YXRlQ2FsbGJhY2tzLnZhbHVlcygpKQorICAgICAgICBjYWxsYmFjayhF
eGNlcHRpb24geyBBYm9ydEVycm9yLCAiY29udGV4dCBzdG9wcGVkIl9zIH0pOworCisgICAgYXV0
byBnZXROb3RpZmljYXRpb25zQ2FsbGJhY2tzID0gV1RGTW92ZShtX2dldE5vdGlmaWNhdGlvbnND
YWxsYmFja3MpOworICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBnZXROb3RpZmljYXRpb25zQ2Fs
bGJhY2tzLnZhbHVlcygpKQogICAgICAgICBjYWxsYmFjayhFeGNlcHRpb24geyBBYm9ydEVycm9y
LCAiY29udGV4dCBzdG9wcGVkIl9zIH0pOwogfQogCkBAIC0yOTMsNiArMjk4LDIyIEBAIHZvaWQg
V29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjpnZXRQdXNoUGVybWlzc2lvblN0YXRlKFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25JCiAgICAgfSk7CiB9CiAKK3ZvaWQgV29ya2VyU1dDbGllbnRDb25u
ZWN0aW9uOjpnZXROb3RpZmljYXRpb25zKGNvbnN0IFVSTCYgc2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvblVSTCwgY29uc3QgU3RyaW5nJiB0YWcsIEdldE5vdGlmaWNhdGlvbnNDYWxsYmFjayYmIGNh
bGxiYWNrKQoreworICAgIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyID0gKyttX2xhc3RSZXF1
ZXN0SWRlbnRpZmllcjsKKyAgICBtX2dldE5vdGlmaWNhdGlvbnNDYWxsYmFja3MuYWRkKHJlcXVl
c3RJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgCisgICAgY2FsbE9uTWFpblRo
cmVhZChbdGhyZWFkID0gbV90aHJlYWQsIHJlcXVlc3RJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uVVJMID0gc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblVSTC5pc29sYXRlZENv
cHkoKSwgdGFnID0gdGFnLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgeworICAgICAgICBhdXRv
JiBjb25uZWN0aW9uID0gU2VydmljZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKS5zZXJ2aWNl
V29ya2VyQ29ubmVjdGlvbigpOworICAgICAgICBjb25uZWN0aW9uLmdldE5vdGlmaWNhdGlvbnMo
c2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblVSTCwgdGFnLCBbdGhyZWFkID0gV1RGTW92ZSh0aHJl
YWQpLCByZXF1ZXN0SWRlbnRpZmllcl0oYXV0byYmIHJlc3VsdCkgeworICAgICAgICAgICAgdGhy
ZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtyZXF1ZXN0SWRlbnRpZmllciwgcmVzdWx0
ID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUocmVzdWx0KSldKGF1dG8mIHNjb3BlKSBtdXRhYmxl
IHsKKyAgICAgICAgICAgICAgICBhdXRvIGNhbGxiYWNrID0gZG93bmNhc3Q8V29ya2VyR2xvYmFs
U2NvcGU+KHNjb3BlKS5zd0NsaWVudENvbm5lY3Rpb24oKS5tX2dldE5vdGlmaWNhdGlvbnNDYWxs
YmFja3MudGFrZShyZXF1ZXN0SWRlbnRpZmllcik7CisgICAgICAgICAgICAgICAgY2FsbGJhY2so
V1RGTW92ZShyZXN1bHQpKTsKKyAgICAgICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRN
b2RlKCkpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwogdm9pZCBXb3JrZXJTV0NsaWVudENv
bm5lY3Rpb246OmVuYWJsZU5hdmlnYXRpb25QcmVsb2FkKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25JZGVudGlmaWVyIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIEV4Y2VwdGlvbk9yVm9pZENhbGxi
YWNrJiYgY2FsbGJhY2spCiB7CiAgICAgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIgPSArK21f
bGFzdFJlcXVlc3RJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1dvcmtlclNXQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1dvcmtlclNXQ2xpZW50Q29ubmVjdGlvbi5oCmluZGV4IDQ3NzlkZmYzMTYw
ZWNkNmMwMjhmN2YzNTdjZDEzYmMyOWYzMTFiZjAuLjJhYTRhNDA5NGNkZTg5NDZiZjQ4YjRjMWE3
OTc5YjdlYmRmNjRlNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9Xb3JrZXJTV0NsaWVudENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvV29ya2VyU1dDbGllbnRDb25uZWN0aW9uLmgKQEAgLTYxLDYgKzYxLDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlKFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyLCBQdXNoU3Vic2NyaXB0aW9uSWRlbnRpZmllciwgVW5zdWJz
Y3JpYmVGcm9tUHVzaFNlcnZpY2VDYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGdldFB1c2hT
dWJzY3JpcHRpb24oU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIEdldFB1c2hT
dWJzY3JpcHRpb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGdldFB1c2hQZXJtaXNzaW9u
U3RhdGUoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIEdldFB1c2hQZXJtaXNz
aW9uU3RhdGVDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIGdldE5vdGlmaWNhdGlvbnMoY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgR2V0Tm90aWZpY2F0aW9uc0NhbGxiYWNrJiYpIGZpbmFs
OwogCiAgICAgdm9pZCBlbmFibGVOYXZpZ2F0aW9uUHJlbG9hZChTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uSWRlbnRpZmllciwgRXhjZXB0aW9uT3JWb2lkQ2FsbGJhY2smJikgZmluYWw7CiAgICAg
dm9pZCBkaXNhYmxlTmF2aWdhdGlvblByZWxvYWQoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklk
ZW50aWZpZXIsIEV4Y2VwdGlvbk9yVm9pZENhbGxiYWNrJiYpIGZpbmFsOwpAQCAtODAsNiArODEs
NyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8dWludDY0X3QsIEdldFB1c2hQZXJtaXNzaW9uU3Rh
dGVDYWxsYmFjaz4gbV9nZXRQdXNoUGVybWlzc2lvblN0YXRlQ2FsbGJhY2tzOwogICAgIEhhc2hN
YXA8dWludDY0X3QsIEV4Y2VwdGlvbk9yVm9pZENhbGxiYWNrPiBtX3ZvaWRDYWxsYmFja3M7CiAg
ICAgSGFzaE1hcDx1aW50NjRfdCwgRXhjZXB0aW9uT3JOYXZpZ2F0aW9uUHJlbG9hZFN0YXRlQ2Fs
bGJhY2s+IG1fbmF2aWdhdGlvblByZWxvYWRTdGF0ZUNhbGxiYWNrczsKKyAgICBIYXNoTWFwPHVp
bnQ2NF90LCBHZXROb3RpZmljYXRpb25zQ2FsbGJhY2s+IG1fZ2V0Tm90aWZpY2F0aW9uc0NhbGxi
YWNrczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5LmNwcAppbmRleCAwNmUwMWEyOTA1YmEzYjdkNWQ5MzBmNDMzMzA5M2U5
MTkwZDJjZjE4Li44MDA0Nzg4NTM2NzZjNTI0NzMyMTcyOWI0ODczOTk3MDFlMThjZjdmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZp
Y2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCkBAIC0zNDcsNCArMzQ3LDI0
IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZFJlbW92ZU5v
dGlmaWNhdGlvblBvbGljaWVzKEFQSTo6QXJyCiAgICAgICAgIHByb2Nlc3NQb29sKCktPnNlbmRU
b0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6RGlkUmVtb3Zl
Tm90aWZpY2F0aW9uRGVjaXNpb25zKGFwaUFycmF5VG9TZWN1cml0eU9yaWdpblN0cmluZ3Mob3Jp
Z2lucykpKTsKIH0KIAordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmdldE5vdGlm
aWNhdGlvbnMoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGFnLCBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPE5vdGlmaWNhdGlvbkRh
dGE+JiYpPiYmIGNhbGxiYWNrKQoreworICAgIFZlY3RvcjxXZWJOb3RpZmljYXRpb24qPiBub3Rp
ZmljYXRpb25zOworICAgIGZvciAoYXV0byYgbm90aWZpY2F0aW9uIDogbV9ub3RpZmljYXRpb25z
LnZhbHVlcygpKSB7CisgICAgICAgIGF1dG8mIGRhdGEgPSBub3RpZmljYXRpb24tPmRhdGEoKTsK
KyAgICAgICAgaWYgKGRhdGEuc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblVSTCAhPSB1cmwgfHwg
ZGF0YS5zb3VyY2VTZXNzaW9uICE9IHNlc3Npb25JRCkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICBpZiAoIXRhZy5pc0VtcHR5KCkgJiYgZGF0YS50YWcgIT0gdGFnKQorICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIG5vdGlmaWNhdGlvbnMuYXBwZW5kKG5vdGlmaWNhdGlvbi5w
dHIoKSk7CisgICAgfQorICAgIC8vIExldCdzIHNvcnQgYXMgcGVyIGh0dHBzOi8vbm90aWZpY2F0
aW9ucy5zcGVjLndoYXR3Zy5vcmcvI2RvbS1zZXJ2aWNld29ya2VycmVnaXN0cmF0aW9uLWdldG5v
dGlmaWNhdGlvbnMuCisgICAgc3RkOjpzb3J0KG5vdGlmaWNhdGlvbnMuYmVnaW4oKSwgbm90aWZp
Y2F0aW9ucy5lbmQoKSwgW10oYXV0byYgYSwgYXV0byYgYikgeworICAgICAgICBpZiAoYS0+ZGF0
YSgpLmNyZWF0aW9uVGltZSA8IGItPmRhdGEoKS5jcmVhdGlvblRpbWUpCisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGEtPmRhdGEoKS5jcmVhdGlvblRpbWUgPT0gYi0+
ZGF0YSgpLmNyZWF0aW9uVGltZSAmJiBhLT5pZGVudGlmaWVyKCkgPCBiLT5pZGVudGlmaWVyKCk7
CisgICAgfSk7CisgICAgY2FsbGJhY2sobWFwKG5vdGlmaWNhdGlvbnMsIFtdKGF1dG8mIG5vdGlm
aWNhdGlvbikgeyByZXR1cm4gbm90aWZpY2F0aW9uLT5kYXRhKCk7IH0pKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaAppbmRl
eCBlODdkYjEwZjUxYWJjNTcwZDlkMmE5YTc4NjkxNmIxNTJlYjYxMGU5Li43ZGJlZGEyOGEzYTEy
NDRiYzliMGU1ODg0ZGE0ZTU5OTE5YzVjOTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5LmgKQEAgLTY4LDYgKzY4LDggQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJOb3Rp
ZmljYXRpb25zKFdlYlBhZ2VQcm94eSosIGNvbnN0IFZlY3RvcjxVVUlEPiYgcGFnZU5vdGlmaWNh
dGlvbklEcyk7CiAgICAgdm9pZCBkaWREZXN0cm95Tm90aWZpY2F0aW9uKFdlYlBhZ2VQcm94eSos
IGNvbnN0IFVVSUQmIHBhZ2VOb3RpZmljYXRpb25JRCk7CiAKKyAgICB2b2lkIGdldE5vdGlmaWNh
dGlvbnMoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRhdGE+JiYpPiYmKTsK
KwogICAgIHZvaWQgcHJvdmlkZXJEaWRTaG93Tm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNh
dGlvbklEKTsKICAgICB2b2lkIHByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24odWludDY0X3Qg
bm90aWZpY2F0aW9uSUQpOwogICAgIHZvaWQgcHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbihj
b25zdCBVVUlEJiBub3RpZmljYXRpb25JRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcAppbmRleCBhOGVmNWRiYzQ3ZTZlY2IyYTQ2M2ZlN2I4NWQxY2VkOWVh
MDM0NWVlLi4xZWE2ZWFjNGYyYTdkNDA3M2M2YWMwZjNlYTY3MzJjMGQ4ZTk4MGYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTIxMDQsNiArMjEw
NCwxMSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c3lzdGVtQmVlcCgpCiAgICAgUEFMOjpzeXN0
ZW1CZWVwKCk7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXROb3RpZmljYXRpb25zKGNv
bnN0IFVSTCYgcmVnaXN0cmF0aW9uVVJMLCBjb25zdCBTdHJpbmcmIHRhZywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChWZWN0b3I8Tm90aWZpY2F0aW9uRGF0YT4mJik+JiYgY2FsbGJhY2spCit7Cisg
ICAgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpzaGFyZWRTZXJ2aWNlV29ya2VyTWFuYWdl
cigpLmdldE5vdGlmaWNhdGlvbnMocmVnaXN0cmF0aW9uVVJMLCB0YWcsIHNlc3Npb25JRCgpLCBX
VEZNb3ZlKGNhbGxiYWNrKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYg
TUVTU0FHRV9DSEVDSwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApp
bmRleCBjYjQyNDRiYWY4YTg2OTg1ODUwZjkwNjJmZDYzMTcyMjgwYjQxNTRjLi4wNTU1ZDNkNTc2
MzQ1YmIyNDk2MTA4NThkNjk0NjZlNDkxNTlmMWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuaApAQCAtNzQsNiArNzQsNyBAQCBjbGFzcyBQYWdlQ29uZmlndXJh
dGlvbjsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERlZmVycmFibGVPbmVTaG90VGltZXI7
CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CitzdHJ1Y3QgTm90aWZpY2F0aW9uRGF0YTsKIHN0cnVj
dCBQbHVnaW5JbmZvOwogc3RydWN0IFByZXdhcm1JbmZvcm1hdGlvbjsKIHN0cnVjdCBTZWN1cml0
eU9yaWdpbkRhdGE7CkBAIC00MjcsNiArNDI4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q2Fw
dGlvbkRpc3BsYXlNb2RlKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OkNhcHRpb25E
aXNwbGF5TW9kZSk7CiAgICAgdm9pZCBzZXRDYXB0aW9uTGFuZ3VhZ2UoY29uc3QgU3RyaW5nJik7
CiAjZW5kaWYKKyAgICB2b2lkIGdldE5vdGlmaWNhdGlvbnMoY29uc3QgVVJMJiwgY29uc3QgU3Ry
aW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6Tm90aWZpY2F0aW9u
RGF0YT4mJik+JiYpOwogCiAgICAgV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2RlIGNyb3NzT3JpZ2lu
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3Jvc3NPcmlnaW5Nb2RlOyB9CiAgICAgQ2FwdGl2ZVBv
cnRhbE1vZGUgY2FwdGl2ZVBvcnRhbE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NhcHRpdmVQb3J0
YWxNb2RlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkubWVzc2FnZXMuaW4KaW5kZXggYjc0Nzk2MDNhZTBiNThmOWJiZDI1ZGRlNzMwZTM4ZjNhMWYx
ZTgyNC4uODhhMGY4MjY1NDZlYTM0MzE5MzY0ODlmZjIwZWZlM2RhYjlmZTk4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpA
QCAtOTEsNCArOTEsNiBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2
ZXIgewogICAgIFNldENhcHRpb25EaXNwbGF5TW9kZShXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZl
cmVuY2VzOjpDYXB0aW9uRGlzcGxheU1vZGUgbW9kZSkKICAgICBTZXRDYXB0aW9uTGFuZ3VhZ2Uo
U3RyaW5nIGxhbmd1YWdlKQogI2VuZGlmCisKKyAgICBHZXROb3RpZmljYXRpb25zKFVSTCByZWdp
c3RyYXRpb25VUkwsIFN0cmluZyB0YWcpIC0+IChWZWN0b3I8V2ViQ29yZTo6Tm90aWZpY2F0aW9u
RGF0YT4gcmVzdWx0KQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKaW5kZXggNTNkZmQwYzZhNTM3ZmE5
MDI3MzNlMDQ3ZmVjM2Y2YjY3YjY3ZTc3NS4uZDkzYjM0ZDY4ZmE5OTVhYTQxYjA3YmMwZWQzNTJi
NzZlNzk3YzVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCkBAIC0zOCw3ICszOCw3IEBACiAjaW5j
bHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiV2ViUHJvY2Vzcy5oIgotI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sTWVzc2FnZXMuaCIK
KyNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNXT3Jp
Z2luVGFibGUuaCIKICNpbmNsdWRlICJXZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KQEAgLTI2OSw2ICsyNjksMTEgQEAgdm9pZCBX
ZWJTV0NsaWVudENvbm5lY3Rpb246OmdldFB1c2hQZXJtaXNzaW9uU3RhdGUoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlclJlZ2lzdHIKICAgICB9KTsKIH0KIAordm9pZCBXZWJTV0NsaWVudENvbm5lY3Rp
b246OmdldE5vdGlmaWNhdGlvbnMoY29uc3QgVVJMJiByZWdpc3RyYXRpb25VUkwsIGNvbnN0IFN0
cmluZyYgdGFnLCBHZXROb3RpZmljYXRpb25zQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kV2l0
aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0Tm90aWZpY2F0aW9ucyB7
IHJlZ2lzdHJhdGlvblVSTCwgdGFnIH0sIFdURk1vdmUoY2FsbGJhY2spKTsKK30KKwogdm9pZCBX
ZWJTV0NsaWVudENvbm5lY3Rpb246OmVuYWJsZU5hdmlnYXRpb25QcmVsb2FkKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIs
IEV4Y2VwdGlvbk9yVm9pZENhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OkVuYWJsZU5hdmlnYXRpb25Q
cmVsb2FkIHsgcmVnaXN0cmF0aW9uSWRlbnRpZmllciB9LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKV0oYXV0byYmIGVycm9yKSBtdXRhYmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgKaW5kZXggNDc3
MmI2MjljYWRhN2I2ZTc5Y2FjNmE0MDA4MmEzNGNkZmZhOWE1MS4uMzc3MTkxMjk2MjNjZTc1ODg0
ZmNlYmEyM2IxNzA2ZDA2YTMxODRmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgKQEAgLTk0LDYgKzk0LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpQdXNoU3Vic2Ny
aXB0aW9uSWRlbnRpZmllciwgVW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2VDYWxsYmFjayYmKSBm
aW5hbDsKICAgICB2b2lkIGdldFB1c2hTdWJzY3JpcHRpb24oV2ViQ29yZTo6U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIEdldFB1c2hTdWJzY3JpcHRpb25DYWxsYmFjayYmKSBm
aW5hbDsKICAgICB2b2lkIGdldFB1c2hQZXJtaXNzaW9uU3RhdGUoV2ViQ29yZTo6U2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIsIEdldFB1c2hQZXJtaXNzaW9uU3RhdGVDYWxsYmFj
ayYmKSBmaW5hbDsKKyAgICB2b2lkIGdldE5vdGlmaWNhdGlvbnMoY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJiwgR2V0Tm90aWZpY2F0aW9uc0NhbGxiYWNrJiYpIGZpbmFsOwogCiAgICAgdm9pZCBl
bmFibGVOYXZpZ2F0aW9uUHJlbG9hZChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllciwgRXhjZXB0aW9uT3JWb2lkQ2FsbGJhY2smJikgZmluYWw7CiAgICAgdm9pZCBk
aXNhYmxlTmF2aWdhdGlvblByZWxvYWQoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bklkZW50aWZpZXIsIEV4Y2VwdGlvbk9yVm9pZENhbGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDYw
MmM3MjBjNWEwMGRiOWYwNzZiZjcyNGNjNWUwMDlhODE3MTgyYmMuLmFkZDc5N2FhMDJhZGE5NTI2
MDM1OGQ1MzMxMjc5NWY0ZjMwZmI1ZWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wNC0w
MSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbi5nZXROb3RpZmljYXRpb25zIHNob3VsZCBsaXN0IGFsbCBwZXJzaXN0
ZW50IG5vdGlmaWNhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzODU0NAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisg
ICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvZ2V0bm90aWZpY2F0aW9ucy1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvZ2V0bm90aWZp
Y2F0aW9ucy5odG1sOgorCiAyMDIyLTA0LTAxICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxl
LmNvbT4KIAogICAgICAgICBOb3RpZmljYXRpb24gc2hvdWxkIGJlIGV4cG9zZWQgdG8gU2Vydmlj
ZVdvcmtlciBjb250ZXh0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3Jr
ZXJzL3NlcnZpY2UvZ2V0bm90aWZpY2F0aW9ucy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9nZXRub3RpZmljYXRpb25zLWV4cGVjdGVkLnR4dApp
bmRleCBmODEwOGM2ZDkwZTJiNjNlOGM5YWVlNDkyZGFjNmFlODExMzA1NWIwLi4yY2EyNTc0MWI5
OTg3YzllMWYyMjM0M2ZkMDgyOGJhNzgzYjJjNGJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9nZXRub3RpZmljYXRpb25zLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9nZXRub3RpZmljYXRp
b25zLWV4cGVjdGVkLnR4dApAQCAtMzcsNiArMzcsMTEgQEAgVGl0bGU6IEJ1ZGR5CiBCb2R5OiBC
b2R5MwogVGFnOiB0YWctYgogCitSZXRyaWV2aW5nIG5vdGlmaWNhdGlvbnMgZnJvbSBwYWdlIHJl
Z2lzdHJhdGlvbiBvYmplY3QgLSAzCitOb3RpZmljYXRpb246IEhlbGxvIC8gQm9keTEgLyB0YWct
YQorTm90aWZpY2F0aW9uOiBUaGVyZSAvIEJvZHkyIC8gdGFnLWIKK05vdGlmaWNhdGlvbjogQnVk
ZHkgLyBCb2R5MyAvIHRhZy1iCitSZXRyaWV2aW5nIG5vdGlmaWNhdGlvbnMgZnJvbSBwYWdlIHJl
Z2lzdHJhdGlvbiBvYmplY3QgLSBlbmQKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
IAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3Jr
ZXJzL3NlcnZpY2UvZ2V0bm90aWZpY2F0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93b3JrZXJzL3NlcnZpY2UvZ2V0bm90aWZpY2F0aW9ucy5odG1sCmluZGV4IDA0M2Q0MzA1NDI2
MjU0NzFmMDA5M2U5ODIxMzYyOTY0MDMwZDI1NDguLjM0ZWYzMWVjZDVhZTNmMWQyZDgwNjc0ZDE0
YjUwNzliOGExOGZmZTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vy
cy9zZXJ2aWNlL2dldG5vdGlmaWNhdGlvbnMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dvcmtlcnMvc2VydmljZS9nZXRub3RpZmljYXRpb25zLmh0bWwKQEAgLTIsNyArMiw2IEBA
CiA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0iL3Jlc291cmNlcy9ub3RpZmljYXRpb25zLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQ+Ci0KIGZ1bmN0aW9uIGZhaWxUaGVUZXN0KG1zZykKIHsKICAgICB0ZXN0RmFpbGVk
KG1zZyk7CkBAIC0xOSw4ICsxOCw5IEBAIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgcGVy
c2lzdGVudCBub3RpZmljYXRpb25zIGNyZWF0ZWQgYnkgYSBzZXJ2aWNlIHdvcmtlCiAKIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygiTm90aWZpY2F0aW9uLnBlcm1pc3Npb24iLCAiZ3JhbnRlZCIpOwog
Cit2YXIgcmVnaXN0cmF0aW9uOwogYXN5bmMgZnVuY3Rpb24gcmVnaXN0ZXJTZXJ2aWNlV29ya2Vy
KCkgewotICAgIHZhciByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtl
ci5yZWdpc3RlcigncmVzb3VyY2VzL3Nob3dub3RpZmljYXRpb24td29ya2VyLmpzJyk7CisgICAg
cmVnaXN0cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJ3Jl
c291cmNlcy9zaG93bm90aWZpY2F0aW9uLXdvcmtlci5qcycpOwogICAgIAogICAgIGlmICghcmVn
aXN0cmF0aW9uKQogICAgICAgICByZXR1cm4gdGVzdEZhaWxlZCgiTm8gcmVnaXN0cmF0aW9uIik7
CkBAIC00NCw3ICs0NCw3IEBAIGFzeW5jIGZ1bmN0aW9uIHJlZ2lzdGVyU2VydmljZVdvcmtlcigp
IHsKIHZhciBudW1iZXJTaG93biA9IDA7CiB2YXIgbnVtYmVyR290ID0gMDsKIAotZnVuY3Rpb24g
Z290Tm90ZXMoZXZlbnQpCithc3luYyBmdW5jdGlvbiBnb3ROb3RlcyhldmVudCkKIHsKICAgICAr
K251bWJlckdvdDsKIApAQCAtNTgsNiArNTgsMTMgQEAgZnVuY3Rpb24gZ290Tm90ZXMoZXZlbnQp
CiAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgidHJ5c2hvd3xUaGVyZXxCb2R5Mnx0
YWctYiIpOwogICAgICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoInRyeXNob3d8QnVkZHl8
Qm9keTN8dGFnLWIiKTsKICAgICB9IGVsc2UgaWYgKG51bWJlckdvdCA9PSA0KSB7CisgICAgICAg
IGNvbnN0IG5vdGlmaWNhdGlvbnMgPSBhd2FpdCByZWdpc3RyYXRpb24uZ2V0Tm90aWZpY2F0aW9u
cyh7IHRhZzogIiIgfSk7CisgICAgICAgIGRlYnVnKCJSZXRyaWV2aW5nIG5vdGlmaWNhdGlvbnMg
ZnJvbSBwYWdlIHJlZ2lzdHJhdGlvbiBvYmplY3QgLSAiICsgbm90aWZpY2F0aW9ucy5sZW5ndGgp
OworICAgICAgICBub3RpZmljYXRpb25zLmZvckVhY2gobm90aWZpY2F0aW9uID0+IHsKKyAgICAg
ICAgICAgIGRlYnVnKCJOb3RpZmljYXRpb246ICIgKyBub3RpZmljYXRpb24udGl0bGUgKyAiIC8g
IiArIG5vdGlmaWNhdGlvbi5ib2R5ICsgIiAvICIgKyBub3RpZmljYXRpb24udGFnKTsKKyAgICAg
ICAgfSk7ICAgIAorICAgICAgICBkZWJ1ZygiUmV0cmlldmluZyBub3RpZmljYXRpb25zIGZyb20g
cGFnZSByZWdpc3RyYXRpb24gb2JqZWN0IC0gZW5kIik7CisKICAgICAgICAgdGVzdENvbXBsZXRl
ZCgpOwogICAgIH0KIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>