<?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>227326</bug_id>
          
          <creation_ts>2021-06-23 15:44:07 -0700</creation_ts>
          <short_desc>Clean up App Privacy Report code</short_desc>
          <delta_ts>2021-07-08 13:54:14 -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>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kate Cheney">katherine_cheney</reporter>
          <assigned_to name="Kate Cheney">katherine_cheney</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>mkwst</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1772089</commentid>
    <comment_count>0</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-06-23 15:44:07 -0700</bug_when>
    <thetext>App Privacy Report code needs some cleanup, mainly renaming and deleting unnecessary code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772091</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-23 15:44:31 -0700</bug_when>
    <thetext>&lt;rdar://problem/79696849&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772130</commentid>
    <comment_count>2</comment_count>
      <attachid>432118</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-06-23 17:23:22 -0700</bug_when>
    <thetext>Created attachment 432118
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772324</commentid>
    <comment_count>3</comment_count>
      <attachid>432177</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-06-24 09:59:35 -0700</bug_when>
    <thetext>Created attachment 432177
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772370</commentid>
    <comment_count>4</comment_count>
      <attachid>432193</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-06-24 11:07:08 -0700</bug_when>
    <thetext>Created attachment 432193
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1772391</commentid>
    <comment_count>5</comment_count>
      <attachid>432197</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-06-24 11:40:33 -0700</bug_when>
    <thetext>Created attachment 432197
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1774512</commentid>
    <comment_count>6</comment_count>
      <attachid>432197</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-07-02 11:34:59 -0700</bug_when>
    <thetext>Comment on attachment 432197
Patch

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

I think this looks good, but I&apos;m concerned there are some places where we have the wrong default set, and I&apos;m not sure if the places where &apos;AppBound&apos; was used to set &apos;AppInitiated&apos; is right. r- for those reasons.

&gt; Source/WebCore/workers/service/context/ServiceWorkerThreadProxy.cpp:138
&gt; +    return m_document-&gt;loader() ? m_document-&gt;loader()-&gt;lastNavigationWasAppInitiated() : false;

Shouldn&apos;t this default to &apos;true&apos;?

&gt; Source/WebCore/workers/service/server/RegistrationDatabase.cpp:572
&gt; +        auto contextData = ServiceWorkerContextData { std::nullopt, WTFMove(registration), workerIdentifier, WTFMove(script), WTFMove(*certificateInfo), WTFMove(*contentSecurityPolicy), WTFMove(referrerPolicy), WTFMove(scriptURL), *workerType, true, LastNavigationWasAppInitiated::No, WTFMove(scriptResourceMap) };

Should this be LastNavigationWasAppInitiated::Yes, unless we have data indicating it was user initiated?

&gt; Source/WebCore/workers/service/server/SWServer.cpp:658
&gt; +        return LastNavigationWasAppInitiated::No;

Wouldn&apos;t the assumption be that it&apos;s AppInitiated unless we have data saying it was user initiated? Seems like the default return should be Yes?

&gt; Source/WebCore/workers/service/server/SWServer.cpp:665
&gt; +            return LastNavigationWasAppInitiated::Yes;

Seems like we might want to early return on &apos;No&apos;, since that would be the unusual case.

&gt; Source/WebCore/workers/service/server/SWServer.cpp:668
&gt; +    return LastNavigationWasAppInitiated::No;

And if we early return on No, we would want to return Yes here.

&gt; Source/WebCore/workers/service/server/SWServer.cpp:902
&gt; +    if (data.lastNavigationWasAppInitiated == LastNavigationWasAppInitiated::Yes) {

It seems like we&apos;d almost always be AppInitiated, and would want to relay the User-Initiated nature here, wouldn&apos;t we?

&gt; Source/WebCore/workers/service/server/SWServerRegistration.h:138
&gt; +    bool m_isAppInitiated { false };

Shouldn&apos;t this default to &apos;true&apos;, like the regular ResourceRequest case?

&gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:258
&gt; +        registration-&gt;scheduleSoftUpdate(m_loader.isAppBound() ? WebCore::IsAppInitiated::Yes : WebCore::IsAppInitiated::No);

Is this conditional right? Why does an App-Bound loader indicate it was app initiated? Should loader have an app Initiated predicate?

&gt; Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:191
&gt; +            registration-&gt;scheduleSoftUpdate(loader.isAppBound() ? WebCore::IsAppInitiated::Yes : WebCore::IsAppInitiated::No);

Ditto.

&gt; Source/WebKit/NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:372
&gt; +        retrieveSubresourcesEntry(resourceKey, [this, weakThis = makeWeakPtr(*this), frameID, pendingFrameLoad = WTFMove(pendingFrameLoad), requestIsAppBound = request.isAppInitiated(), isNavigatingToAppBoundDomain](std::unique_ptr&lt;SubresourcesEntry&gt; entry) {

Shouldn&apos;t &apos;requestIsAppBound&apos; be renamed, too?

&gt; LayoutTests/platform/ios-wk2/TestExpectations:-1827
&gt; -http/tests/in-app-browser-privacy/app-bound-attribution-post-request.html [ Skip ]

yay!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775330</commentid>
    <comment_count>7</comment_count>
      <attachid>432197</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-07-07 10:46:18 -0700</bug_when>
    <thetext>Comment on attachment 432197
Patch

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

Thanks for the review! I&apos;ll upload a patch with changes.

&gt;&gt; Source/WebCore/workers/service/context/ServiceWorkerThreadProxy.cpp:138
&gt;&gt; +    return m_document-&gt;loader() ? m_document-&gt;loader()-&gt;lastNavigationWasAppInitiated() : false;
&gt; 
&gt; Shouldn&apos;t this default to &apos;true&apos;?

Yes, good catch.

&gt;&gt; Source/WebCore/workers/service/server/RegistrationDatabase.cpp:572
&gt;&gt; +        auto contextData = ServiceWorkerContextData { std::nullopt, WTFMove(registration), workerIdentifier, WTFMove(script), WTFMove(*certificateInfo), WTFMove(*contentSecurityPolicy), WTFMove(referrerPolicy), WTFMove(scriptURL), *workerType, true, LastNavigationWasAppInitiated::No, WTFMove(scriptResourceMap) };
&gt; 
&gt; Should this be LastNavigationWasAppInitiated::Yes, unless we have data indicating it was user initiated?

Ditto, will fix.

&gt;&gt; Source/WebCore/workers/service/server/SWServer.cpp:658
&gt;&gt; +        return LastNavigationWasAppInitiated::No;
&gt; 
&gt; Wouldn&apos;t the assumption be that it&apos;s AppInitiated unless we have data saying it was user initiated? Seems like the default return should be Yes?

Ditto.

&gt;&gt; Source/WebCore/workers/service/server/SWServer.cpp:665
&gt;&gt; +            return LastNavigationWasAppInitiated::Yes;
&gt; 
&gt; Seems like we might want to early return on &apos;No&apos;, since that would be the unusual case.

Good idea, will change.

&gt;&gt; Source/WebCore/workers/service/server/SWServer.cpp:668
&gt;&gt; +    return LastNavigationWasAppInitiated::No;
&gt; 
&gt; And if we early return on No, we would want to return Yes here.

Ditto.

&gt;&gt; Source/WebCore/workers/service/server/SWServer.cpp:902
&gt;&gt; +    if (data.lastNavigationWasAppInitiated == LastNavigationWasAppInitiated::Yes) {
&gt; 
&gt; It seems like we&apos;d almost always be AppInitiated, and would want to relay the User-Initiated nature here, wouldn&apos;t we?

I don&apos;t think I understand your suggestion. Currently the heuristic we have for service workers is that if one client for a domain is app-initiated, all clients are considered app-initiated. So here we check if the latest registration client is app initiated and if the current app-initiated value is non app-initiated. If both those things are true then we update the value to be app initiated.

&gt;&gt; Source/WebCore/workers/service/server/SWServerRegistration.h:138
&gt;&gt; +    bool m_isAppInitiated { false };
&gt; 
&gt; Shouldn&apos;t this default to &apos;true&apos;, like the regular ResourceRequest case?

Yes, will fix.

&gt;&gt; Source/WebKit/NetworkProcess/ServiceWorker/ServiceWorkerFetchTask.cpp:258
&gt;&gt; +        registration-&gt;scheduleSoftUpdate(m_loader.isAppBound() ? WebCore::IsAppInitiated::Yes : WebCore::IsAppInitiated::No);
&gt; 
&gt; Is this conditional right? Why does an App-Bound loader indicate it was app initiated? Should loader have an app Initiated predicate?

I think it was a rename that I missed. I will fix it.

&gt;&gt; Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerConnection.cpp:191
&gt;&gt; +            registration-&gt;scheduleSoftUpdate(loader.isAppBound() ? WebCore::IsAppInitiated::Yes : WebCore::IsAppInitiated::No);
&gt; 
&gt; Ditto.

Will fix.

&gt;&gt; Source/WebKit/NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:372
&gt;&gt; +        retrieveSubresourcesEntry(resourceKey, [this, weakThis = makeWeakPtr(*this), frameID, pendingFrameLoad = WTFMove(pendingFrameLoad), requestIsAppBound = request.isAppInitiated(), isNavigatingToAppBoundDomain](std::unique_ptr&lt;SubresourcesEntry&gt; entry) {
&gt; 
&gt; Shouldn&apos;t &apos;requestIsAppBound&apos; be renamed, too?

Yes, will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775331</commentid>
    <comment_count>8</comment_count>
      <attachid>432197</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-07-07 10:50:15 -0700</bug_when>
    <thetext>Comment on attachment 432197
Patch

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

&gt; Source/WebCore/workers/service/server/SWServerRegistration.h:110
&gt; +    bool isAppInitiated() { return m_isAppInitiated; }

nit: Should be marked as const.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775533</commentid>
    <comment_count>9</comment_count>
      <attachid>432197</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-07-07 17:03:01 -0700</bug_when>
    <thetext>Comment on attachment 432197
Patch

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

&gt;&gt;&gt; Source/WebCore/workers/service/server/SWServer.cpp:665
&gt;&gt;&gt; +            return LastNavigationWasAppInitiated::Yes;
&gt;&gt; 
&gt;&gt; Seems like we might want to early return on &apos;No&apos;, since that would be the unusual case.
&gt; 
&gt; Good idea, will change.

Ok thinking about this more, I actually think we should keep it this way. The heuristic we have for service workers is that if any client was registered as app-initiated for a specific domain, all clients for that domain are app-initiated. This code is enforcing that heuristic, not returning a default value.

&gt;&gt;&gt; Source/WebCore/workers/service/server/SWServer.cpp:668
&gt;&gt;&gt; +    return LastNavigationWasAppInitiated::No;
&gt;&gt; 
&gt;&gt; And if we early return on No, we would want to return Yes here.
&gt; 
&gt; Ditto.

I think we should keep this as-is for the same reason as above. We want to return LastNavigationWasAppInitiated::No if clients exist and none were registered as app-initiated. The early return in this function should cover the case of no clients, which I will flip to be Yes to match the default value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775550</commentid>
    <comment_count>10</comment_count>
      <attachid>433101</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-07-07 17:48:47 -0700</bug_when>
    <thetext>Created attachment 433101
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775770</commentid>
    <comment_count>11</comment_count>
      <attachid>432197</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-07-08 13:20:18 -0700</bug_when>
    <thetext>Comment on attachment 432197
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/workers/service/server/SWServer.cpp:665
&gt;&gt;&gt;&gt; +            return LastNavigationWasAppInitiated::Yes;
&gt;&gt;&gt; 
&gt;&gt;&gt; Seems like we might want to early return on &apos;No&apos;, since that would be the unusual case.
&gt;&gt; 
&gt;&gt; Good idea, will change.
&gt; 
&gt; Ok thinking about this more, I actually think we should keep it this way. The heuristic we have for service workers is that if any client was registered as app-initiated for a specific domain, all clients for that domain are app-initiated. This code is enforcing that heuristic, not returning a default value.

Ah! Okay -- sounds correct to me.

&gt;&gt;&gt;&gt; Source/WebCore/workers/service/server/SWServer.cpp:668
&gt;&gt;&gt;&gt; +    return LastNavigationWasAppInitiated::No;
&gt;&gt;&gt; 
&gt;&gt;&gt; And if we early return on No, we would want to return Yes here.
&gt;&gt; 
&gt;&gt; Ditto.
&gt; 
&gt; I think we should keep this as-is for the same reason as above. We want to return LastNavigationWasAppInitiated::No if clients exist and none were registered as app-initiated. The early return in this function should cover the case of no clients, which I will flip to be Yes to match the default value.

Agreed.

&gt;&gt;&gt; Source/WebCore/workers/service/server/SWServer.cpp:902
&gt;&gt;&gt; +    if (data.lastNavigationWasAppInitiated == LastNavigationWasAppInitiated::Yes) {
&gt;&gt; 
&gt;&gt; It seems like we&apos;d almost always be AppInitiated, and would want to relay the User-Initiated nature here, wouldn&apos;t we?
&gt; 
&gt; I don&apos;t think I understand your suggestion. Currently the heuristic we have for service workers is that if one client for a domain is app-initiated, all clients are considered app-initiated. So here we check if the latest registration client is app initiated and if the current app-initiated value is non app-initiated. If both those things are true then we update the value to be app initiated.

Got it -- I didn&apos;t understand that, so I think you are correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775771</commentid>
    <comment_count>12</comment_count>
      <attachid>433101</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-07-08 13:24:21 -0700</bug_when>
    <thetext>Comment on attachment 433101
Patch

Thank you for cleaning up those suggestions! r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1775785</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-07-08 13:54:12 -0700</bug_when>
    <thetext>Committed r279750 (239526@main): &lt;https://commits.webkit.org/239526@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 433101.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432118</attachid>
            <date>2021-06-23 17:23:22 -0700</date>
            <delta_ts>2021-06-24 09:59:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227326-20210623172321.patch</filename>
            <type>text/plain</type>
            <size>262446</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGE0OWJkYWY3NGI1MDhj
ZTM0ODY2NDRkN2E0NThjMzY3ZmQ2NjMxOS4uZDQ1NmZkYWExOTNhYjc2ZTdjZTIxOTY0Mjg5NmZm
Njk5NDQzYzA0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDIxLTA2LTIzICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIENsZWFuIHVw
IEFwcCBQcml2YWN5IFJlcG9ydCBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjczMjYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc5Njk2ODQ5
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Rz
OiBodHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1sb2FkLXVybC5odG1s
CisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlv
bi1waW5nLWxvYWQuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1y
ZXBvcnQvYXR0cmlidXRpb24tcG9zdC1yZXF1ZXN0Lmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAv
dGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXByZWZsaWdodC1hc3luYy5odG1s
CisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlv
bi1wcmVmbGlnaHQtc3luYy5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL2FwcC1wcml2
YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1zcGVjdWxhdGl2ZS1yZXZhbGlkYXRpb24uaHRtbAorCisg
ICAgICAgIFJlbmFtZSBBcHAgUHJpdmFjeSBSZXBvcnQgY29kZSB0byBiZXR0ZXIgYWxpZ24gd2l0
aCB0aGUgY29kZSdzIHB1cnBvc2UKKyAgICAgICAgb2YgYXR0cmlidXRpbmcgbG9hZHMgdG8gdGhl
IGFwcCBvciBub3QuIFRoZSBkZWZhdWx0IHZhbHVlIHNob3VsZAorICAgICAgICBiZSBhcHAgaW5p
dGlhdGVkIGJhc2VkIG9uIHRoZSBkb2N1bWVudGF0aW9uLCBzbyB0aGlzIHBhdGNoIGFsc28gYWRq
dXN0cworICAgICAgICB0aGUgZGVmYXVsdCB2YWx1ZSBhcyBuZWVkZWQuCisKKyAgICAgICAgKiBs
b2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUFjY2Vzc0NvbnRyb2xQcmVmbGlnaHRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvRG9j
dW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpsYXN0TmF2
aWdhdGlvbldhc0FwcEluaXRpYXRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6Omxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnNldExhc3ROYXZpZ2F0
aW9uV2FzQXBwQm91bmQpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlcjo6dXBkYXRlUmVxdWVzdEFuZEFkZEV4dHJhRmllbGRzKToKKyAgICAg
ICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVxdWVzdEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
QmFzZTo6c2V0QXNJc29sYXRlZENvcHkpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXF1ZXN0QmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFz
ZTo6aXNBcHBJbml0aWF0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0QmFzZTo6c2V0SXNBcHBJbml0aWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0QmFzZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3RCYXNlOjplbmNvZGVCYXNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdEJhc2U6OmRlY29kZUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0QmFzZTo6aXNBcHBCb3VuZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRJc0FwcEJvdW5kKTogRGVsZXRlZC4KKyAgICAg
ICAgKiB0ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2VydmljZVdvcmtlckludGVybmFsczo6bGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckludGVybmFsczo6bGFzdE5hdmlnYXRp
b25XYXNBcHBCb3VuZCk6IERlbGV0ZWQuCisgICAgICAgICogdGVzdGluZy9TZXJ2aWNlV29ya2Vy
SW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlk
bDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE6Omlzb2xhdGVkQ29w
eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZnJv
bSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmg6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjpkZWNvZGUpOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjppc29sYXRlZENvcHkg
Y29uc3QpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERh
dGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZGVj
b2RlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5
OjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdv
cmtlclRocmVhZFByb3h5OjpzZXRMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6Omxhc3ROYXZpZ2F0aW9uV2Fz
QXBwSW5pdGlhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eTo6c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6Omxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQp
OiBEZWxldGVkLgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eS5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0
cmF0aW9uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVnaXN0cmF0aW9uRGF0YWJh
c2U6OmltcG9ydFJlY29yZHMpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnN0YXJ0U2NyaXB0RmV0Y2gp
OgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnVwZGF0ZVdvcmtlcik6CisgICAgICAgIChX
ZWJDb3JlOjpTV1NlcnZlcjo6Y2xpZW50SXNBcHBJbml0aWF0ZWRGb3JSZWdpc3RyYWJsZURvbWFp
bik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6dXBkYXRlQXBwSW5pdGlhdGVkVmFsdWVG
b3JXb3JrZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpyZWdpc3RlclNlcnZpY2VX
b3JrZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnVucmVnaXN0ZXJTZXJ2
aWNlV29ya2VyQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpjbGllbnRJc0Fw
cEJvdW5kRm9yUmVnaXN0cmFibGVEb21haW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
U1dTZXJ2ZXI6OnVwZGF0ZUFwcEJvdW5kVmFsdWVGb3JXb3JrZXJzKTogRGVsZXRlZC4KKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmg6CisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTV1NlcnZlclJlZ2lzdHJhdGlvbjo6c2NoZWR1bGVTb2Z0VXBkYXRlKToKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmg6CisgICAgICAg
IChXZWJDb3JlOjpTV1NlcnZlclJlZ2lzdHJhdGlvbjo6aXNBcHBJbml0aWF0ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1dTZXJ2ZXJSZWdpc3RyYXRpb246OmlzQXBwQm91bmQpOiBEZWxldGVkLgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjptX2xhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpjb250ZXh0RGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6dXBkYXRlQXBwSW5pdGlhdGVkVmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6bV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjp1cGRhdGVBcHBCb3VuZFZhbHVl
KTogRGVsZXRlZC4KKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29y
a2VyLmg6CisKIDIwMjEtMDYtMjMgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlbW92ZSB1bm5lZWRlZCBleHBsaWNpdCBleGNlcHRpb24gY2hlY2tzIGluIFNjcmlw
dE1vZHVsZUxvYWRlcjo6ZXZhbHVhdGUoKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZjZmYjQ0ZThjNzdlNTI1NmE4
ZDRmZjc2NGQ2ZWFhYWRmZTg4ZDViNC4uYzg5NTc1MTE5ODg1MzlmNjVlNGFmMzVhZmYwZWI1MDQ3
Yjg2Y2U2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzYgQEAKKzIwMjEtMDYtMjMgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAgQXBw
IFByaXZhY3kgUmVwb3J0IGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNzMyNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzk2OTY4NDk+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1lIEFw
cCBQcml2YWN5IFJlcG9ydCBjb2RlIHRvIGJldHRlciBhbGlnbiB3aXRoIHRoZSBjb2RlJ3MgcHVy
cG9zZQorICAgICAgICBvZiBhdHRyaWJ1dGluZyBsb2FkcyB0byB0aGUgYXBwIG9yIG5vdC4gVGhl
IGRlZmF1bHQgdmFsdWUgc2hvdWxkCisgICAgICAgIGJlIGFwcCBpbml0aWF0ZWQgYmFzZWQgb24g
dGhlIGRvY3VtZW50YXRpb24sIHNvIHRoaXMgcGF0Y2ggYWxzbyBhZGp1c3RzCisgICAgICAgIHRo
ZSBkZWZhdWx0IHZhbHVlIGFzIG5lZWRlZC4KKworICAgICAgICBUaGlzIGFsc28gYWRvcHRzIHRo
ZSBuZXcgTlNVUkxSZXF1ZXN0IGF0dHJpYnV0aW9uIEFQSSBhbmQgcmVtb3ZlcworICAgICAgICB0
aGUgZGVwcmVjYXRlZCBfaXNOb25BcHBJbml0aWF0ZWQgU1BJLgorCisgICAgICAgIENvdmVyZWQg
YnkgZXhpc3RpbmcgbGF5b3V0IGFuZCBBUEkgdGVzdHMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
OjpwcmVjb25uZWN0VG8pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YXBwUHJp
dmFjeVJlcG9ydFRlc3RpbmdEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OmNsZWFyQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OmFwcEJvdW5kTmF2aWdhdGlvbkRhdGEpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVXaWxsU2VuZFJlZGlyZWN0ZWRSZXF1
ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjppc0FwcEJvdW5k
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6YXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdE
YXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOjpzb2Z0VXBkYXRlSWZOZWVkZWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6bG9hZEZyb21OZXR3b3Jr
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29u
bmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y29u
dHJvbENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y3Jl
YXRlRmV0Y2hUYXNrKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6dXBkYXRlQXBwSW5pdGlhdGVkVmFsdWUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnVwZGF0ZUFwcEJv
dW5kVmFsdWUpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Y29uc3RydWN0UmV2YWxpZGF0aW9uUmVxdWVzdCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6
cmVnaXN0ZXJMb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2
ZUxvYWRNYW5hZ2VyOjpzdGFydFNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5oOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN1YnJlc291cmNlSW5mbzo6aXNBcHBJbml0aWF0
ZWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN1YnJlc291cmNlSW5m
bzo6c2V0SXNBcHBJbml0aWF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN1
YnJlc291cmNlSW5mbzo6aXNBcHBCb3VuZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDYWNoZTo6U3VicmVzb3VyY2VJbmZvOjpzZXRJc0FwcEJvdW5kKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5t
bToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFz
a0NvY29hKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAg
KGhlYWRlcnNfZm9yX3R5cGUpOgorICAgICAgICAqIFNoYXJlZC9BcHBQcml2YWN5UmVwb3J0Lmg6
CisgICAgICAgIChXZWJLaXQ6OkFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YTo6c2V0RGlkUGVy
Zm9ybVNvZnRVcGRhdGUpOgorICAgICAgICAoV2ViS2l0OjpBcHBQcml2YWN5UmVwb3J0VGVzdGlu
Z0RhdGE6OmNsZWFyQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKToKKyAgICAgICAgKFdlYktp
dDo6QXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhOjpkaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVz
dCk6CisgICAgICAgIChXZWJLaXQ6OkFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YTo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6QXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhOjpk
ZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2Nv
YS5tbToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3Q+OjplbmNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdD46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICog
U2hhcmVkL05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmg6CisgICAgICAgIChXZWJLaXQ6OkFw
cEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhOjpzZXREaWRQZXJmb3JtU29mdFVwZGF0ZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhOjpj
bGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGFUZXN0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6QXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGE6OnVwZGF0ZUFwcEJvdW5kTmF2aWdh
dGlvblRlc3RpbmdEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6QXBwQm91bmROYXZp
Z2F0aW9uVGVzdGluZ0RhdGE6OmVuY29kZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OkFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhOjpkZWNvZGUpOiBEZWxldGVkLgorICAg
ICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVu
Y29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6
OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IF9kaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdDpdKToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IF9kaWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdDpdKToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IF9hcHBCb3VuZE5hdmlnYXRpb25EYXRhRm9yRG9tYWluOmNvbXBsZXRpb25IYW5kbGVy
Ol0pOiBEZWxldGVkLgorICAgICAgICBSZW1vdmVkIG5vdyB0aGF0IHdlIG5vIGxvbmdlciBuZWVk
IHRvIHRlc3QgYXR0cmlidXRpb24gY29udGV4dCwgdGhhdAorICAgICAgICBpcyBhbGwgaXQgd2Fz
IHVzZWQgZm9yLgorCisgICAgICAgICgtW1dLV2ViVmlldyBfZGlkTG9hZEFwcEJvdW5kUmVxdWVz
dDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kaWRMb2FkTm9uQXBwQm91bmRS
ZXF1ZXN0Ol0pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZUZvclRlc3RpbmcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d1Rlc3RpbmcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfbGFzdE5hdmlnYXRpb25XYXNBcHBJ
bml0aWF0ZWQ6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfYXBwUHJpdmFjeVJlcG9ydFRlc3Rp
bmdEYXRhOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2NsZWFyQXBwUHJpdmFjeVJlcG9ydFRl
c3RpbmdEYXRhOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2xhc3ROYXZpZ2F0aW9uV2FzQXBw
Qm91bmQ6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLV2ViVmlldyBfYXBwQm91bmROYXZpZ2F0
aW9uRGF0YTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jbGVhckFwcEJvdW5k
TmF2aWdhdGlvbkRhdGE6XSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dl
YlBhZ2VQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldExh
c3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk6IERl
bGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnByZWNvbm5lY3RUbyk6
CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpw
cmVjb25uZWN0VG8pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFy
YW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YXBwUHJpdmFjeVJlcG9y
dFRlc3RpbmdEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbGVhckFwcFBy
aXZhY3lSZXBvcnRUZXN0aW5nRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
YXBwQm91bmROYXZpZ2F0aW9uRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6Y2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhKTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0
cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNv
dXJjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpwcmVjb25uZWN0VG8p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
Ojp1cGRhdGVBcHBJbml0aWF0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uOjpzdGFydEZldGNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnVwZGF0ZUFwcEJvdW5kVmFsdWUpOiBEZWxldGVkLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWRSZXF1
ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOiBE
ZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnNldExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk6IERl
bGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46
CisKIDIwMjEtMDYtMjMgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+
CiAKICAgICAgICAgTWlncmF0ZSBBcHAgUHJpdmFjeSBSZXBvcnQgY29kZSBmcm9tIFdlYktpdEFk
ZGl0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNj
ZXNzQ29udHJvbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3ND
b250cm9sLmNwcAppbmRleCAyYTFhZTUyNTM4YjA2MGRhMTFmYzlkZmJkNDBiOGE2ZDc4YWRlYjE4
Li4zODk5Mjk3NmM2YTFkYWRjODc3OTRmNzhkYjc4NGQ0ZmU0ZTA1M2U3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcApAQCAtODks
NyArODksNyBAQCBSZXNvdXJjZVJlcXVlc3QgY3JlYXRlQWNjZXNzQ29udHJvbFByZWZsaWdodFJl
cXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZQogICAgIHByZWZsaWdodFJlcXVlc3Qu
c2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpBY2Nlc3NDb250cm9sUmVxdWVzdE1l
dGhvZCwgcmVxdWVzdC5odHRwTWV0aG9kKCkpOwogICAgIHByZWZsaWdodFJlcXVlc3Quc2V0UHJp
b3JpdHkocmVxdWVzdC5wcmlvcml0eSgpKTsKICAgICBwcmVmbGlnaHRSZXF1ZXN0LnNldEZpcnN0
UGFydHlGb3JDb29raWVzKHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSk7Ci0gICAgcHJl
ZmxpZ2h0UmVxdWVzdC5zZXRJc0FwcEJvdW5kKHJlcXVlc3QuaXNBcHBCb3VuZCgpKTsKKyAgICBw
cmVmbGlnaHRSZXF1ZXN0LnNldElzQXBwSW5pdGlhdGVkKHJlcXVlc3QuaXNBcHBJbml0aWF0ZWQo
KSk7CiAgICAgaWYgKCFyZWZlcnJlci5pc051bGwoKSkKICAgICAgICAgcHJlZmxpZ2h0UmVxdWVz
dC5zZXRIVFRQUmVmZXJyZXIocmVmZXJyZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5oCmluZGV4IGU2OTM1MzJlYmQ2NGY1YzA0MmM3YzM3ZDgzOTE4OTU5N2Q2ZTY5MDku
LjM5ZWIwNjI5OWU1NzBjNDc1OWFlY2YwZWYwOTcxODI0ZWI1MDU2MjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC00MTksOCArNDE5LDggQEAgcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgc2V0Q29udHJvbGxpbmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYpOwogI2VuZGlmCiAKLSAgICBib29s
IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoKSBjb25zdCB7IHJldHVybiBtX2xhc3ROYXZpZ2F0
aW9uV2FzQXBwQm91bmQ7IH0KLSAgICB2b2lkIHNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQo
Ym9vbCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKSB7IG1fbGFzdE5hdmlnYXRpb25XYXNBcHBC
b3VuZCA9IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7IH0KKyAgICBib29sIGxhc3ROYXZpZ2F0
aW9uV2FzQXBwSW5pdGlhdGVkKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0TmF2aWdhdGlvbldhc0Fw
cEluaXRpYXRlZDsgfQorICAgIHZvaWQgc2V0TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQo
Ym9vbCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCkgeyBtX2xhc3ROYXZpZ2F0aW9uV2Fz
QXBwSW5pdGlhdGVkID0gbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ7IH0KIAogcHJvdGVj
dGVkOgogICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7CkBAIC02NTksNyArNjU5LDcgQEAgcHJpdmF0
ZToKICAgICBib29sIG1fYWxsb3dzV2ViQXJjaGl2ZUZvck1haW5GcmFtZSB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX2FsbG93c0RhdGFVUkxzRm9yTWFpbkZyYW1lIHsgZmFsc2UgfTsKIAotICAgIGJv
b2wgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIHsgZmFsc2UgfTsKKyAgICBib29sIG1fbGFz
dE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgeyB0cnVlIH07CiB9OwogCiBpbmxpbmUgdm9pZCBE
b2N1bWVudExvYWRlcjo6cmVjb3JkTWVtb3J5Q2FjaGVMb2FkRm9yRnV0dXJlQ2xpZW50Tm90aWZp
Y2F0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCmluZGV4IGQ3MTNmN2RkNGE0OTJjZmMzNmE4M2UxMGRhMjYyMTNkYWJl
Mjc1ZmUuLmE1MDRmYTk1MTVmOWM5NDEzMGEyNjZjMzg0ZWQzYzE4ZmQ5NTQxMTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMTQ5Miw3ICsxNDkyLDcgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6bG9hZChEb2N1bWVudExvYWRlciYgbmV3RG9jdW1lbnRMb2FkZXIpCiAgICAg
UmVzb3VyY2VSZXF1ZXN0JiByID0gbmV3RG9jdW1lbnRMb2FkZXIucmVxdWVzdCgpOwogICAgIC8v
IEZJWE1FOiBVc2luZyBtX2xvYWRUeXBlIHNlZW1zIHdyb25nIGhlcmUuCiAgICAgLy8gSWYgd2Ug
YXJlIG9ubHkgcHJlcGFyaW5nIHRvIGxvYWQgdGhlIG1haW4gcmVzb3VyY2UsIHRoYXQgaXMgcHJl
dmlvdXMgbG9hZCdzIGxvYWQgdHlwZSEKLSAgICB1cGRhdGVSZXF1ZXN0QW5kQWRkRXh0cmFGaWVs
ZHMociwgSXNNYWluUmVzb3VyY2U6OlllcywgbV9sb2FkVHlwZSwgU2hvdWxkVXBkYXRlQXBwQm91
bmRWYWx1ZTo6Tm8pOworICAgIHVwZGF0ZVJlcXVlc3RBbmRBZGRFeHRyYUZpZWxkcyhyLCBJc01h
aW5SZXNvdXJjZTo6WWVzLCBtX2xvYWRUeXBlLCBTaG91bGRVcGRhdGVBcHBJbml0aWF0ZWRWYWx1
ZTo6Tm8pOwogICAgIEZyYW1lTG9hZFR5cGUgdHlwZTsKIAogICAgIGlmIChzaG91bGRUcmVhdFVS
TEFzU2FtZUFzQ3VycmVudChuZXdEb2N1bWVudExvYWRlci5vcmlnaW5hbFJlcXVlc3QoKS51cmwo
KSkpIHsKQEAgLTI4NzgsNyArMjg3OCw3IEBAIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5IEZy
YW1lTG9hZGVyOjpkZWZhdWx0UmVxdWVzdENhY2hpbmdQb2xpY3koY29uc3QgUmVzb3VyCiAgICAg
cmV0dXJuIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5OjpVc2VQcm90b2NvbENhY2hlUG9saWN5
OwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjp1cGRhdGVSZXF1ZXN0QW5kQWRkRXh0cmFGaWVsZHMo
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBJc01haW5SZXNvdXJjZSBtYWluUmVzb3VyY2UsIEZy
YW1lTG9hZFR5cGUgbG9hZFR5cGUsIFNob3VsZFVwZGF0ZUFwcEJvdW5kVmFsdWUgc2hvdWxkVXBk
YXRlKQordm9pZCBGcmFtZUxvYWRlcjo6dXBkYXRlUmVxdWVzdEFuZEFkZEV4dHJhRmllbGRzKFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgSXNNYWluUmVzb3VyY2UgbWFpblJlc291cmNlLCBGcmFt
ZUxvYWRUeXBlIGxvYWRUeXBlLCBTaG91bGRVcGRhdGVBcHBJbml0aWF0ZWRWYWx1ZSBzaG91bGRV
cGRhdGUpCiB7CiAgICAgLy8gSWYgdGhlIHJlcXVlc3QgY2FtZSBmcm9tIGEgcHJldmlvdXMgcHJv
Y2VzcyBkdWUgdG8gcHJvY2Vzcy1zd2FwLW9uLW5hdmlnYXRpb24gdGhlbiB3ZSBzaG91bGQgbm90
IG1vZGlmeSB0aGUgcmVxdWVzdC4KICAgICBpZiAobV9jdXJyZW50TG9hZENvbnRpbnVpbmdTdGF0
ZSA9PSBMb2FkQ29udGludWluZ1N0YXRlOjpDb250aW51aW5nV2l0aFJlcXVlc3QpCkBAIC0yOTQ4
LDggKzI5NDgsOCBAQCB2b2lkIEZyYW1lTG9hZGVyOjp1cGRhdGVSZXF1ZXN0QW5kQWRkRXh0cmFG
aWVsZHMoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBJc01haQogICAgICAgICByZXF1ZXN0LnNl
dFJlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5KCJVVEYtOCIs
IG1fZnJhbWUuZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgbV9mcmFtZS5zZXR0aW5ncygpLmRlZmF1
bHRUZXh0RW5jb2RpbmdOYW1lKCkpOwogICAgIH0KIAotICAgIGlmIChzaG91bGRVcGRhdGUgPT0g
U2hvdWxkVXBkYXRlQXBwQm91bmRWYWx1ZTo6WWVzICYmIG1fZnJhbWUubWFpbkZyYW1lKCkubG9h
ZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkKLSAgICAgICAgcmVxdWVzdC5zZXRJc0FwcEJvdW5kKG1f
ZnJhbWUubWFpbkZyYW1lKCkubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+bGFzdE5hdmlnYXRp
b25XYXNBcHBCb3VuZCgpKTsKKyAgICBpZiAoc2hvdWxkVXBkYXRlID09IFNob3VsZFVwZGF0ZUFw
cEluaXRpYXRlZFZhbHVlOjpZZXMgJiYgbV9mcmFtZS5tYWluRnJhbWUoKS5sb2FkZXIoKS5kb2N1
bWVudExvYWRlcigpKQorICAgICAgICByZXF1ZXN0LnNldElzQXBwSW5pdGlhdGVkKG1fZnJhbWUu
bWFpbkZyYW1lKCkubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+bGFzdE5hdmlnYXRpb25XYXNB
cHBJbml0aWF0ZWQoKSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OnNjaGVkdWxlUmVmcmVzaElm
TmVlZGVkKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBjb250ZW50KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCBmMTIzOTllNWU1NWNmZDczMDRkNjc0ZDFiNjlh
NWQ3OTY3YzgyNjJiLi4yNmNkYjI2ZDU5NjAxYTlhYjg3MzAzMGI0NjE1Mzc1MDUyNzMyNWI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtODUsNyArODUsNyBAQCBlbnVtIGNs
YXNzIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFNob3Vs
ZFRyZWF0QXNDb250aW51aW5nTG9hZCA6IGJvb2w7CiBlbnVtIGNsYXNzIFVzZWRMZWdhY3lUTFMg
OiBib29sOwogZW51bSBjbGFzcyBJc01haW5SZXNvdXJjZSA6IGJvb2wgeyBObywgWWVzIH07Ci1l
bnVtIGNsYXNzIFNob3VsZFVwZGF0ZUFwcEJvdW5kVmFsdWUgOiBib29sIHsgTm8sIFllcyB9Owor
ZW51bSBjbGFzcyBTaG91bGRVcGRhdGVBcHBJbml0aWF0ZWRWYWx1ZSA6IGJvb2wgeyBObywgWWVz
IH07CiAKIHN0cnVjdCBXaW5kb3dGZWF0dXJlczsKIApAQCAtMzE3LDcgKzMxNyw3IEBAIHB1Ymxp
YzoKICAgICBib29sIGFsd2F5c0FsbG93TG9jYWxXZWJhcmNoaXZlKCkgY29uc3QgeyByZXR1cm4g
bV9hbHdheXNBbGxvd0xvY2FsV2ViYXJjaGl2ZTsgfQogCiAgICAgLy8gRm9yIHN1YnJlc291cmNl
IHJlcXVlc3RzIHRoZSBGcmFtZUxvYWRUeXBlIHBhcmFtZXRlciBoYXMgbm8gZWZmZWN0IGFuZCBj
YW4gYmUgc2tpcHBlZC4KLSAgICB2b2lkIHVwZGF0ZVJlcXVlc3RBbmRBZGRFeHRyYUZpZWxkcyhS
ZXNvdXJjZVJlcXVlc3QmLCBJc01haW5SZXNvdXJjZSwgRnJhbWVMb2FkVHlwZSA9IEZyYW1lTG9h
ZFR5cGU6OlN0YW5kYXJkLCBTaG91bGRVcGRhdGVBcHBCb3VuZFZhbHVlID0gU2hvdWxkVXBkYXRl
QXBwQm91bmRWYWx1ZTo6WWVzKTsKKyAgICB2b2lkIHVwZGF0ZVJlcXVlc3RBbmRBZGRFeHRyYUZp
ZWxkcyhSZXNvdXJjZVJlcXVlc3QmLCBJc01haW5SZXNvdXJjZSwgRnJhbWVMb2FkVHlwZSA9IEZy
YW1lTG9hZFR5cGU6OlN0YW5kYXJkLCBTaG91bGRVcGRhdGVBcHBJbml0aWF0ZWRWYWx1ZSA9IFNo
b3VsZFVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlOjpZZXMpOwogCiAgICAgdm9pZCBzY2hlZHVsZVJl
ZnJlc2hJZk5lZWRlZChEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgY29udGVudCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJh
c2UuY3BwCmluZGV4IDQ2ZTc4NTIyOWU2MGY2MmJjN2IzYWNlNGRjODMxYTdmMjc1YTgxYjIuLjQ0
YjU5MzA3MGVjZWQ0MWZmZjcwM2Y3YmM4OTQ3YWYxOTRkYjAyZTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcApA
QCAtOTUsNyArOTUsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdEJhc2U6OnNldEFzSXNvbGF0ZWRD
b3B5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgb3RoZXIpCiAgICAgaWYgKG90aGVyLm1faHR0cEJv
ZHkpCiAgICAgICAgIHNldEhUVFBCb2R5KG90aGVyLm1faHR0cEJvZHktPmlzb2xhdGVkQ29weSgp
KTsKICAgICBzZXRBbGxvd0Nvb2tpZXMob3RoZXIubV9hbGxvd0Nvb2tpZXMpOwotICAgIHNldElz
QXBwQm91bmQob3RoZXIuaXNBcHBCb3VuZCgpKTsKKyAgICBzZXRJc0FwcEluaXRpYXRlZChvdGhl
ci5pc0FwcEluaXRpYXRlZCgpKTsKIH0KIAogYm9vbCBSZXNvdXJjZVJlcXVlc3RCYXNlOjppc0Vt
cHR5KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VSZXF1ZXN0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlcXVlc3RCYXNlLmgKaW5kZXggMjcwZmFkMDRmZDFlNWIzZWE2Mjk0MWNlODA5NTNh
ZWZlNTlmM2RiYS4uMjQ1ZTU5OWE5Y2Y3OGM2MmQ0NWRmYjlhY2UzMDRhMTlhOTJlZGRjOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RC
YXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVl
c3RCYXNlLmgKQEAgLTE5NSw4ICsxOTUsOCBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmKTsKIAotICAgIGJvb2wgaXNBcHBCb3VuZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNB
cHBCb3VuZDsgfQotICAgIHZvaWQgc2V0SXNBcHBCb3VuZChib29sIGlzQXBwQm91bmQpIHsgbV9p
c0FwcEJvdW5kID0gaXNBcHBCb3VuZDsgfTsKKyAgICBib29sIGlzQXBwSW5pdGlhdGVkKCkgY29u
c3QgeyByZXR1cm4gbV9pc0FwcEluaXRpYXRlZDsgfQorICAgIHZvaWQgc2V0SXNBcHBJbml0aWF0
ZWQoYm9vbCBpc0FwcEluaXRpYXRlZCkgeyBtX2lzQXBwSW5pdGlhdGVkID0gaXNBcHBJbml0aWF0
ZWQ7IH07CiAKIHByb3RlY3RlZDoKICAgICAvLyBVc2VkIHdoZW4gUmVzb3VyY2VSZXF1ZXN0IGlz
IGluaXRpYWxpemVkIGZyb20gYSBwbGF0Zm9ybSByZXByZXNlbnRhdGlvbiBvZiB0aGUgcmVxdWVz
dApAQCAtMjA4LDcgKzIwOCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgLCBtX3BsYXRmb3JtUmVx
dWVzdEJvZHlVcGRhdGVkKHRydWUpCiAgICAgICAgICwgbV9oaWRkZW5Gcm9tSW5zcGVjdG9yKGZh
bHNlKQogICAgICAgICAsIG1faXNUb3BTaXRlKGZhbHNlKQotICAgICAgICAsIG1faXNBcHBCb3Vu
ZChmYWxzZSkKKyAgICAgICAgLCBtX2lzQXBwSW5pdGlhdGVkKHRydWUpCiAgICAgewogICAgIH0K
IApAQCAtMjI0LDcgKzIyNCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgLCBtX3BsYXRmb3JtUmVx
dWVzdEJvZHlVcGRhdGVkKGZhbHNlKQogICAgICAgICAsIG1faGlkZGVuRnJvbUluc3BlY3Rvcihm
YWxzZSkKICAgICAgICAgLCBtX2lzVG9wU2l0ZShmYWxzZSkKLSAgICAgICAgLCBtX2lzQXBwQm91
bmQoZmFsc2UpCisgICAgICAgICwgbV9pc0FwcEluaXRpYXRlZCh0cnVlKQogICAgIHsKICAgICB9
CiAKQEAgLTI1OCw3ICsyNTgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgbXV0YWJsZSBib29sIG1fcGxh
dGZvcm1SZXF1ZXN0Qm9keVVwZGF0ZWQgOiAxOwogICAgIGJvb2wgbV9oaWRkZW5Gcm9tSW5zcGVj
dG9yIDogMTsKICAgICBib29sIG1faXNUb3BTaXRlIDogMTsKLSAgICBib29sIG1faXNBcHBCb3Vu
ZCA6IDE7CisgICAgYm9vbCBtX2lzQXBwSW5pdGlhdGVkIDogMTsKICNpZiBVU0UoU1lTVEVNX1BS
RVZJRVcpCiAgICAgc3RkOjpvcHRpb25hbDxTeXN0ZW1QcmV2aWV3SW5mbz4gbV9zeXN0ZW1QcmV2
aWV3SW5mbzsKICNlbmRpZgpAQCAtMjk0LDcgKzI5NCw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBS
ZXNvdXJjZVJlcXVlc3RCYXNlOjplbmNvZGVCYXNlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAg
ICAgZW5jb2RlciA8PCBtX2lzVG9wU2l0ZTsKICAgICBlbmNvZGVyIDw8IG1fcHJpb3JpdHk7CiAg
ICAgZW5jb2RlciA8PCBtX3JlcXVlc3RlcjsKLSAgICBlbmNvZGVyIDw8IG1faXNBcHBCb3VuZDsK
KyAgICBlbmNvZGVyIDw8IG1faXNBcHBJbml0aWF0ZWQ7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+CkBAIC0zNzIsMTEgKzM3MiwxMSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgUmVzb3VyY2VS
ZXF1ZXN0QmFzZTo6ZGVjb2RlQmFzZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgbV9yZXF1ZXN0ZXIgPSAqcmVxdWVzdGVyOwogCi0gICAgc3RkOjpvcHRpb25h
bDxib29sPiBpc0FwcEJvdW5kOwotICAgIGRlY29kZXIgPj4gaXNBcHBCb3VuZDsKLSAgICBpZiAo
IWlzQXBwQm91bmQpCisgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc0FwcEluaXRpYXRlZDsKKyAg
ICBkZWNvZGVyID4+IGlzQXBwSW5pdGlhdGVkOworICAgIGlmICghaXNBcHBJbml0aWF0ZWQpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX2lzQXBwQm91bmQgPSAqaXNBcHBCb3VuZDsKKyAg
ICBtX2lzQXBwSW5pdGlhdGVkID0gKmlzQXBwSW5pdGlhdGVkOwogCiAgICAgcmV0dXJuIHRydWU7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRl
cm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxz
LmNwcAppbmRleCBmMDgwYTkzNWUxOWU1YTVhYTI1ZjNiNjhlNjNjN2I0YmFlNmY2YTQyLi4zNjgy
OThmNGNjNDNkMGMwYWM2ZjQwNWU1ZjgxNjQ0ZDdkYmMxNWY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5jcHAKQEAgLTExOSwxOCArMTE5
LDE4IEBAIGludCBTZXJ2aWNlV29ya2VySW50ZXJuYWxzOjpwcm9jZXNzSWRlbnRpZmllcigpIGNv
bnN0CiAgICAgcmV0dXJuIGdldEN1cnJlbnRQcm9jZXNzSUQoKTsKIH0KIAotdm9pZCBTZXJ2aWNl
V29ya2VySW50ZXJuYWxzOjpsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKFJlZjxEZWZlcnJlZFBy
b21pc2U+JiYgcHJvbWlzZSkKK3ZvaWQgU2VydmljZVdvcmtlckludGVybmFsczo6bGFzdE5hdmln
YXRpb25XYXNBcHBJbml0aWF0ZWQoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewot
ICAgIEFTU0VSVCghbV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kUHJvbWlzZSk7Ci0gICAgbV9s
YXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kUHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSk7CisgICAg
QVNTRVJUKCFtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkUHJvbWlzZSk7CisgICAgbV9s
YXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZFByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpOwog
ICAgIGNhbGxPbk1haW5UaHJlYWQoW2lkZW50aWZpZXIgPSBtX2lkZW50aWZpZXIsIHdlYWtUaGlz
ID0gbWFrZVdlYWtQdHIodGhpcyldKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChhdXRvKiBwcm94
eSA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLndvcmtlckJ5SUQoaWRlbnRpZmllcikp
IHsKLSAgICAgICAgICAgIHByb3h5LT50aHJlYWQoKS5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2Rl
KFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBhcHBCb3VuZCA9IHByb3h5LT5sYXN0TmF2
aWdhdGlvbldhc0FwcEJvdW5kKCldKGF1dG8mKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCF3ZWFr
VGhpcyB8fCAhd2Vha1RoaXMtPm1fbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZFByb21pc2UpCisg
ICAgICAgICAgICBwcm94eS0+dGhyZWFkKCkucnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbd2Vh
a1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgYXBwSW5pdGlhdGVkID0gcHJveHktPmxhc3ROYXZp
Z2F0aW9uV2FzQXBwSW5pdGlhdGVkKCldKGF1dG8mKSB7CisgICAgICAgICAgICAgICAgaWYgKCF3
ZWFrVGhpcyB8fCAhd2Vha1RoaXMtPm1fbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWRQcm9t
aXNlKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgICAgICB3ZWFr
VGhpcy0+bV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kUHJvbWlzZS0+cmVzb2x2ZTxJRExCb29s
ZWFuPihhcHBCb3VuZCk7Ci0gICAgICAgICAgICAgICAgd2Vha1RoaXMtPm1fbGFzdE5hdmlnYXRp
b25XYXNBcHBCb3VuZFByb21pc2UgPSBudWxscHRyOworICAgICAgICAgICAgICAgIHdlYWtUaGlz
LT5tX2xhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkUHJvbWlzZS0+cmVzb2x2ZTxJRExCb29s
ZWFuPihhcHBJbml0aWF0ZWQpOworICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5tX2xhc3ROYXZp
Z2F0aW9uV2FzQXBwSW5pdGlhdGVkUHJvbWlzZSA9IG51bGxwdHI7CiAgICAgICAgICAgICB9LCBX
b3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKICAgICAgICAgfQogICAgIH0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmggYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaAppbmRleCBmNjYw
NTA4ZTJmYzEwZThhNTY3ZmIwMTFjNGI0YmFhODQzNTYwYjFmLi4zMzdlNmE3ZDM5M2UzMDBiNmJk
ZmY2MGY5NjliOGZmNWQ4MWQ4MzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1Nl
cnZpY2VXb3JrZXJJbnRlcm5hbHMuaApAQCAtNjAsMTMgKzYwLDEzIEBAIHB1YmxpYzoKIAogICAg
IGludCBwcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0OwogCi0gICAgdm9pZCBsYXN0TmF2aWdhdGlv
bldhc0FwcEJvdW5kKFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOworICAgIHZvaWQgbGFzdE5hdmln
YXRpb25XYXNBcHBJbml0aWF0ZWQoUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAKIHByaXZhdGU6
CiAgICAgZXhwbGljaXQgU2VydmljZVdvcmtlckludGVybmFscyhTZXJ2aWNlV29ya2VySWRlbnRp
Zmllcik7CiAKICAgICBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBtX2lkZW50aWZpZXI7Ci0gICAg
UmVmUHRyPERlZmVycmVkUHJvbWlzZT4gbV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kUHJvbWlz
ZTsKKyAgICBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwSW5p
dGlhdGVkUHJvbWlzZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRsCmluZGV4IGUxMTBi
NTExYjEwNjU2ZGFjYTM5ZjZkNTNmM2RiMTc1MGVlMzZkMDkuLjk0ODRiNzYyMWZjZjFmYWVjZmQ1
YzUzOTQ2YTZlNTg0ZTI5NTc1MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
U2VydmljZVdvcmtlckludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9T
ZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlkbApAQCAtNDMsNSArNDMsNSBAQAogCiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIGxvbmcgcHJvY2Vzc0lkZW50aWZpZXI7CiAKLSAgICBQcm9taXNlPGJvb2xl
YW4+IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoKTsKKyAgICBQcm9taXNlPGJvb2xlYW4+IGxh
c3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5jcHAKaW5k
ZXggYjYwNzRlMTBmNTc3YTA0MmE0YTEzMzc2YjZiMTFjYTFhMmFkN2QyNy4uMjVkN2MwYTdmNGVi
ZTk0NjY3YmYxODA1NmRlNjc3ZTI3MzBiODcyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuY3BwCkBAIC01
OCw3ICs1OCw3IEBAIHN0YXRpYyBTZXJ2aWNlV29ya2VyQ2xpZW50RnJhbWVUeXBlIHRvU2Vydmlj
ZVdvcmtlckNsaWVudEZyYW1lVHlwZShTY3JpcHRFeGVjdXRpCiAKIFNlcnZpY2VXb3JrZXJDbGll
bnREYXRhIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjppc29sYXRlZENvcHkoKSBjb25zdAogewot
ICAgIHJldHVybiB7IGlkZW50aWZpZXIsIHR5cGUsIGZyYW1lVHlwZSwgdXJsLmlzb2xhdGVkQ29w
eSgpLCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIH07CisgICAgcmV0dXJuIHsgaWRlbnRpZmll
ciwgdHlwZSwgZnJhbWVUeXBlLCB1cmwuaXNvbGF0ZWRDb3B5KCksIGxhc3ROYXZpZ2F0aW9uV2Fz
QXBwSW5pdGlhdGVkIH07CiB9CiAKIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIFNlcnZpY2VXb3Jr
ZXJDbGllbnREYXRhOjpmcm9tKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFNXQ2xp
ZW50Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKQEAgLTY3LDEzICs2NywxMyBAQCBTZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YSBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZnJvbShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjbwogICAgIFJFTEVBU0VfQVNTRVJUKGlzRG9jdW1lbnQpOyAvLyBXZSBkbyBu
b3Qgc3VwcG9ydCBkZWRpY2F0ZWQgd29ya2VycyBhcyBjbGllbnRzIHlldC4KIAogICAgIGF1dG8m
IGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpOwotICAgIGF1dG8gbGFzdE5h
dmlnYXRpb25XYXNBcHBCb3VuZCA9IGRvY3VtZW50LmxvYWRlcigpICYmIGRvY3VtZW50LmxvYWRl
cigpLT5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKCkgPyBMYXN0TmF2aWdhdGlvbldhc0FwcEJv
dW5kOjpZZXMgOiBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOjpObzsKKyAgICBhdXRvIGxhc3RO
YXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkID0gZG9jdW1lbnQubG9hZGVyKCkgJiYgZG9jdW1lbnQu
bG9hZGVyKCktPmxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKCkgPyBMYXN0TmF2aWdhdGlv
bldhc0FwcEluaXRpYXRlZDo6WWVzIDogTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6Ok5v
OwogCiAgICAgcmV0dXJuIHsKICAgICAgICAgeyBjb25uZWN0aW9uLnNlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyKCksIGRvY3VtZW50LmlkZW50aWZpZXIoKSB9LAogICAgICAgICBpc0RvY3VtZW50
ID8gU2VydmljZVdvcmtlckNsaWVudFR5cGU6OldpbmRvdyA6IFNlcnZpY2VXb3JrZXJDbGllbnRU
eXBlOjpXb3JrZXIsCiAgICAgICAgIHRvU2VydmljZVdvcmtlckNsaWVudEZyYW1lVHlwZShjb250
ZXh0KSwKLSAgICAgICAgY29udGV4dC51cmwoKSwgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZAor
ICAgICAgICBjb250ZXh0LnVybCgpLCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZAogICAg
IH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyQ2xpZW50RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDbGllbnREYXRhLmgKaW5kZXggMzNkOTgzODQyNGNiOGYyYzFhZTFkYWQ1Zjhh
ZmJlMTQ5MDE5MjNlOC4uNTdjMjg4YTBhZjE2YzBmMmE4OWNhYTdlNWE2OTIxZGJjMTk4NjQzZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
bGllbnREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDbGllbnREYXRhLmgKQEAgLTM3LDE0ICszNywxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBTV0NsaWVudENvbm5lY3Rpb247CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OwogCi1lbnVtIGNsYXNzIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgOiBib29sIHsgTm8sIFll
cyB9OworZW51bSBjbGFzcyBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCA6IGJvb2wgeyBO
bywgWWVzIH07CiAKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSB7CiAgICAgU2Vydmlj
ZVdvcmtlckNsaWVudElkZW50aWZpZXIgaWRlbnRpZmllcjsKICAgICBTZXJ2aWNlV29ya2VyQ2xp
ZW50VHlwZSB0eXBlOwogICAgIFNlcnZpY2VXb3JrZXJDbGllbnRGcmFtZVR5cGUgZnJhbWVUeXBl
OwogICAgIFVSTCB1cmw7Ci0gICAgTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCBsYXN0TmF2aWdh
dGlvbldhc0FwcEJvdW5kOworICAgIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIGxhc3RO
YXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOwogCiAgICAgU2VydmljZVdvcmtlckNsaWVudERhdGEg
aXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKQEAgLTU3LDcgKzU3LDcgQEAgc3RydWN0IFNlcnZpY2VX
b3JrZXJDbGllbnREYXRhIHsKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFNlcnZpY2VX
b3JrZXJDbGllbnREYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBl
bmNvZGVyIDw8IGlkZW50aWZpZXIgPDwgdHlwZSA8PCBmcmFtZVR5cGUgPDwgdXJsIDw8IGxhc3RO
YXZpZ2F0aW9uV2FzQXBwQm91bmQ7CisgICAgZW5jb2RlciA8PCBpZGVudGlmaWVyIDw8IHR5cGUg
PDwgZnJhbWVUeXBlIDw8IHVybCA8PCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDsKIH0K
IAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KQEAgLTgzLDEyICs4MywxMiBAQCBzdGQ6Om9wdGlv
bmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZGVj
b2RlKERlY29kZXImCiAgICAgaWYgKCF1cmwpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICBzdGQ6Om9wdGlvbmFsPExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ+IGxhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQ7Ci0gICAgZGVjb2RlciA+PiBsYXN0TmF2aWdhdGlvbldhc0FwcEJv
dW5kOwotICAgIGlmICghbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCkKKyAgICBzdGQ6Om9wdGlv
bmFsPExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkPiBsYXN0TmF2aWdhdGlvbldhc0FwcElu
aXRpYXRlZDsKKyAgICBkZWNvZGVyID4+IGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOwor
ICAgIGlmICghbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4geyB7IFdURk1vdmUoKmlkZW50aWZpZXIpLCBXVEZN
b3ZlKCp0eXBlKSwgV1RGTW92ZSgqZnJhbWVUeXBlKSwgV1RGTW92ZSgqdXJsKSwgV1RGTW92ZSgq
bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCkgfSB9OworICAgIHJldHVybiB7IHsgV1RGTW92ZSgq
aWRlbnRpZmllciksIFdURk1vdmUoKnR5cGUpLCBXVEZNb3ZlKCpmcmFtZVR5cGUpLCBXVEZNb3Zl
KCp1cmwpLCBXVEZNb3ZlKCpsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCkgfSB9OwogfQog
CiB1c2luZyBTZXJ2aWNlV29ya2VyQ2xpZW50c01hdGNoQWxsQ2FsbGJhY2sgPSBXVEY6OkNvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYmKT47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNv
bnRleHREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEuY3BwCmluZGV4IGI1YWRkYjMxZGFiY2JhODBiOTRkMDAzNGVhY2YzNjc5
NGYxM2FiNGIuLjU2NGJiZTBmYmZkZDM4MDU3NWE3MTVkMzdmZmFkZTJjNTQyNTFmNDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEuY3BwCkBAIC00NCw3ICs0NCw3IEBAIFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YSBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAg
ICAgIHNjcmlwdFVSTC5pc29sYXRlZENvcHkoKSwKICAgICAgICAgd29ya2VyVHlwZSwKICAgICAg
ICAgbG9hZGVkRnJvbURpc2ssCi0gICAgICAgIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQsCisg
ICAgICAgIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkLAogICAgICAgICBjcm9zc1RocmVh
ZENvcHkoc2NyaXB0UmVzb3VyY2VNYXApCiAgICAgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaAppbmRl
eCAzZDdjZDE3YThiYzA5ZGFlYWE2ZTBlYmY5MGEwNTlhN2M3MDlhMzMzLi5jZWZiNjBmNWU3NTBk
OTY3OTcyZmYzZTdiZTliNTUzNDU2Y2MxN2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oCkBAIC0zOSw3
ICszOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBjbGFzcyBMYXN0TmF2aWdh
dGlvbldhc0FwcEJvdW5kIDogYm9vbDsKK2VudW0gY2xhc3MgTGFzdE5hdmlnYXRpb25XYXNBcHBJ
bml0aWF0ZWQgOiBib29sOwogCiBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsKICAg
ICBzdHJ1Y3QgSW1wb3J0ZWRTY3JpcHQgewpAQCAtODksNyArODksNyBAQCBzdHJ1Y3QgU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhIHsKICAgICBVUkwgc2NyaXB0VVJMOwogICAgIFdvcmtlclR5cGUg
d29ya2VyVHlwZTsKICAgICBib29sIGxvYWRlZEZyb21EaXNrOwotICAgIHN0ZDo6b3B0aW9uYWw8
TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZD4gbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkPiBsYXN0TmF2aWdh
dGlvbldhc0FwcEluaXRpYXRlZDsKICAgICBIYXNoTWFwPFVSTCwgSW1wb3J0ZWRTY3JpcHQ+IHNj
cmlwdFJlc291cmNlTWFwOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OwpAQCAtMTAyLDcgKzEwMiw3IEBAIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+CiB2b2lkIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBqb2JEYXRhSWRlbnRpZmllciA8PCByZWdp
c3RyYXRpb24gPDwgc2VydmljZVdvcmtlcklkZW50aWZpZXIgPDwgc2NyaXB0IDw8IGNvbnRlbnRT
ZWN1cml0eVBvbGljeSA8PCByZWZlcnJlclBvbGljeQotICAgICAgICA8PCBzY3JpcHRVUkwgPDwg
d29ya2VyVHlwZSA8PCBsb2FkZWRGcm9tRGlzayA8PCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5k
IDw8IHNjcmlwdFJlc291cmNlTWFwIDw8IGNlcnRpZmljYXRlSW5mbzsKKyAgICAgICAgPDwgc2Ny
aXB0VVJMIDw8IHdvcmtlclR5cGUgPDwgbG9hZGVkRnJvbURpc2sgPDwgbGFzdE5hdmlnYXRpb25X
YXNBcHBJbml0aWF0ZWQgPDwgc2NyaXB0UmVzb3VyY2VNYXAgPDwgY2VydGlmaWNhdGVJbmZvOwog
fQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAtMTQ3LDggKzE0Nyw4IEBAIHN0ZDo6b3B0
aW9uYWw8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6
OmRlY29kZShEZWNvZGVyCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShsb2FkZWRGcm9tRGlzaykp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPExhc3RO
YXZpZ2F0aW9uV2FzQXBwQm91bmQ+IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7Ci0gICAgaWYg
KCFkZWNvZGVyLmRlY29kZShsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKSkKKyAgICBzdGQ6Om9w
dGlvbmFsPExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkPiBsYXN0TmF2aWdhdGlvbldhc0Fw
cEluaXRpYXRlZDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGxhc3ROYXZpZ2F0aW9uV2FzQXBw
SW5pdGlhdGVkKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEhhc2hNYXA8
VVJMLCBJbXBvcnRlZFNjcmlwdD4gc2NyaXB0UmVzb3VyY2VNYXA7CkBAIC0xNzEsNyArMTcxLDcg
QEAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YTo6ZGVjb2RlKERlY29kZXIKICAgICAgICAgV1RGTW92ZShzY3JpcHRVUkwpLAog
ICAgICAgICB3b3JrZXJUeXBlLAogICAgICAgICBsb2FkZWRGcm9tRGlzaywKLSAgICAgICAgV1RG
TW92ZShsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKSwKKyAgICAgICAgV1RGTW92ZShsYXN0TmF2
aWdhdGlvbldhc0FwcEluaXRpYXRlZCksCiAgICAgICAgIFdURk1vdmUoc2NyaXB0UmVzb3VyY2VN
YXApCiAgICAgfX07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAppbmRl
eCA3MjI4NWZkYzgzOTlmYzM0YjU0ZTkzNjA0OTEzZmExYTNmYzU0OTM3Li41YzFhYWVmOWU5ODMw
Mjg2MjcwZmYyMzNhNDVhYTcxZWMyMmIwOTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eS5jcHAKQEAgLTExNyw4ICsxMTcsOCBAQCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6
OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25maQog
ICAgIG1fcmVtb3RlRGVidWdnYWJsZS0+aW5pdCgpOwogI2VuZGlmCiAKLSAgICBpZiAoZGF0YS5s
YXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKQotICAgICAgICBzZXRMYXN0TmF2aWdhdGlvbldhc0Fw
cEJvdW5kKGRhdGEubGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCA9PSBMYXN0TmF2aWdhdGlvbldh
c0FwcEJvdW5kOjpZZXMpOworICAgIGlmIChkYXRhLmxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlh
dGVkKQorICAgICAgICBzZXRMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZChkYXRhLmxhc3RO
YXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkID09IExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVk
OjpZZXMpOwogfQogCiBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6On5TZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHkoKQpAQCAtMTI3LDE1ICsxMjcsMTUgQEAgU2VydmljZVdvcmtlclRocmVhZFByb3h5
Ojp+U2VydmljZVdvcmtlclRocmVhZFByb3h5KCkKICAgICBhbGxTZXJ2aWNlV29ya2VyVGhyZWFk
UHJveGllcygpLnJlbW92ZSh0aGlzKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHk6OnNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoYm9vbCB3YXNBcHBCb3VuZCkKK3ZvaWQg
U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpzZXRMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRl
ZChib29sIHdhc0FwcEluaXRpYXRlZCkKIHsKICAgICBpZiAobV9kb2N1bWVudC0+bG9hZGVyKCkp
Ci0gICAgICAgIG1fZG9jdW1lbnQtPmxvYWRlcigpLT5zZXRMYXN0TmF2aWdhdGlvbldhc0FwcEJv
dW5kKHdhc0FwcEJvdW5kKTsKKyAgICAgICAgbV9kb2N1bWVudC0+bG9hZGVyKCktPnNldExhc3RO
YXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKHdhc0FwcEluaXRpYXRlZCk7CiB9CiAKLWJvb2wgU2Vy
dmljZVdvcmtlclRocmVhZFByb3h5OjpsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKCkKK2Jvb2wg
U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCgp
CiB7Ci0gICAgcmV0dXJuIG1fZG9jdW1lbnQtPmxvYWRlcigpID8gbV9kb2N1bWVudC0+bG9hZGVy
KCktPmxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoKSA6IGZhbHNlOworICAgIHJldHVybiBtX2Rv
Y3VtZW50LT5sb2FkZXIoKSA/IG1fZG9jdW1lbnQtPmxvYWRlcigpLT5sYXN0TmF2aWdhdGlvbldh
c0FwcEluaXRpYXRlZCgpIDogZmFsc2U7CiB9CiAKIGJvb2wgU2VydmljZVdvcmtlclRocmVhZFBy
b3h5Ojpwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCmluZGV4IGM5ZjFkN2VmNzJiYjNmMzVhYWNkMWMzMDUx
NThjMzhlMjAwYzEwZjAuLjJjNWEyODkyOGZhZTAwYTQ4ZmU4ZGFiOTY4YTg5OTdmYzNkYWVjYzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCkBAIC04MSw4ICs4MSw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KCk7CiAgICAgdm9pZCBkaWRTYXZlU2Ny
aXB0c1RvRGlzayhTY3JpcHRCdWZmZXImJiwgSGFzaE1hcDxVUkwsIFNjcmlwdEJ1ZmZlcj4mJiBp
bXBvcnRlZFNjcmlwdHMpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMYXN0TmF2aWdh
dGlvbldhc0FwcEJvdW5kKGJvb2wpOwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbGFzdE5hdmln
YXRpb25XYXNBcHBCb3VuZCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TGFzdE5hdmln
YXRpb25XYXNBcHBJbml0aWF0ZWQoYm9vbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBsYXN0
TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCgpOwogCiBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQ
T1JUIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShQYWdlQ29uZmlndXJhdGlvbiYmLCBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEmJiwgU3RyaW5nJiYgdXNlckFnZW50LCBDYWNoZVN0b3JhZ2VQcm92
aWRlciYsIFN0b3JhZ2VCbG9ja2luZ1BvbGljeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3Bw
CmluZGV4IGJkYWJiZGZlZWY1YjQxMWMyYmU2OTVmMzhkNmM5Y2YwNzFhZmFjZTUuLjc3YWU2Mzli
OTI0NmQ1OWRiM2M3MTI3YmFjNDQwMjRmMDc1ZTdmMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJh
c2UuY3BwCkBAIC01NjksNyArNTY5LDcgQEAgU3RyaW5nIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpp
bXBvcnRSZWNvcmRzKCkKICAgICAgICAgYXV0byByZWdpc3RyYXRpb25JZGVudGlmaWVyID0gU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI6OmdlbmVyYXRlKCk7CiAgICAgICAgIGF1
dG8gc2VydmljZVdvcmtlckRhdGEgPSBTZXJ2aWNlV29ya2VyRGF0YSB7IHdvcmtlcklkZW50aWZp
ZXIsIHNjcmlwdFVSTCwgU2VydmljZVdvcmtlclN0YXRlOjpBY3RpdmF0ZWQsICp3b3JrZXJUeXBl
LCByZWdpc3RyYXRpb25JZGVudGlmaWVyIH07CiAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uID0g
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEgeyBXVEZNb3ZlKCprZXkpLCByZWdpc3RyYXRp
b25JZGVudGlmaWVyLCBXVEZNb3ZlKHNjb3BlVVJMKSwgKnVwZGF0ZVZpYUNhY2hlLCBsYXN0VXBk
YXRlQ2hlY2tUaW1lLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShzZXJ2aWNl
V29ya2VyRGF0YSkgfTsKLSAgICAgICAgYXV0byBjb250ZXh0RGF0YSA9IFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YSB7IHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShyZWdpc3RyYXRpb24pLCB3b3JrZXJJ
ZGVudGlmaWVyLCBXVEZNb3ZlKHNjcmlwdCksIFdURk1vdmUoKmNlcnRpZmljYXRlSW5mbyksIFdU
Rk1vdmUoKmNvbnRlbnRTZWN1cml0eVBvbGljeSksIFdURk1vdmUocmVmZXJyZXJQb2xpY3kpLCBX
VEZNb3ZlKHNjcmlwdFVSTCksICp3b3JrZXJUeXBlLCB0cnVlLCBMYXN0TmF2aWdhdGlvbldhc0Fw
cEJvdW5kOjpObywgV1RGTW92ZShzY3JpcHRSZXNvdXJjZU1hcCkgfTsKKyAgICAgICAgYXV0byBj
b250ZXh0RGF0YSA9IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7IHN0ZDo6bnVsbG9wdCwgV1RG
TW92ZShyZWdpc3RyYXRpb24pLCB3b3JrZXJJZGVudGlmaWVyLCBXVEZNb3ZlKHNjcmlwdCksIFdU
Rk1vdmUoKmNlcnRpZmljYXRlSW5mbyksIFdURk1vdmUoKmNvbnRlbnRTZWN1cml0eVBvbGljeSks
IFdURk1vdmUocmVmZXJyZXJQb2xpY3kpLCBXVEZNb3ZlKHNjcmlwdFVSTCksICp3b3JrZXJUeXBl
LCB0cnVlLCBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDo6Tm8sIFdURk1vdmUoc2NyaXB0
UmVzb3VyY2VNYXApIH07CiAKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBjb250ZXh0RGF0YSA9IGNvbnRleHREYXRhLmlzb2xhdGVkQ29w
eSgpXSgpIG11dGFibGUgewogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+YWRkUmVnaXN0cmF0
aW9uVG9TdG9yZShXVEZNb3ZlKGNvbnRleHREYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCmluZGV4IDE3ZWRmN2VjMGVlMDE2
MDhjZDgwZjU5YmY2OGQxNTY1MTA2ZjY4M2IuLmQ3MDg3NTA1Y2MxODgwOWVlYzM4OTZiZjg5Yzc3
N2UyYzMzZDM3MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC00NzQsNyArNDc0LDcgQEAgdm9pZCBTV1NlcnZlcjo6c3Rh
cnRTY3JpcHRGZXRjaChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iRGF0YSwgU1dTZXJ2
ZXJSZWcKICAgICAgICAgcmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIob3JpZ2luVVJMKG9yaWdpbiku
c3RyaW5nKCkpOwogICAgICAgICByZXF1ZXN0LnNldEhUVFBVc2VyQWdlbnQoc2VydmljZVdvcmtl
ckNsaWVudFVzZXJBZ2VudChDbGllbnRPcmlnaW4geyBqb2JEYXRhLnRvcE9yaWdpbiwgU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZShqb2JEYXRhLnNjcmlwdFVSTCktPmRhdGEoKSB9KSk7CiAgICAgICAg
IHJlcXVlc3Quc2V0UHJpb3JpdHkoUmVzb3VyY2VMb2FkUHJpb3JpdHk6Okxvdyk7Ci0gICAgICAg
IHJlcXVlc3Quc2V0SXNBcHBCb3VuZChyZWdpc3RyYXRpb24uaXNBcHBCb3VuZCgpKTsKKyAgICAg
ICAgcmVxdWVzdC5zZXRJc0FwcEluaXRpYXRlZChyZWdpc3RyYXRpb24uaXNBcHBJbml0aWF0ZWQo
KSk7CiAKICAgICAgICAgbV9zb2Z0VXBkYXRlQ2FsbGJhY2soU2VydmljZVdvcmtlckpvYkRhdGEg
eyBqb2JEYXRhIH0sIHNob3VsZFJlZnJlc2hDYWNoZSwgV1RGTW92ZShyZXF1ZXN0KSwgW3RoaXMs
IHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKGF1dG8mIHJlc3VsdCkgewogICAgICAgICAg
ICAgaWYgKCF3ZWFrVGhpcykKQEAgLTY0OCwyNCArNjQ4LDI0IEBAIHZvaWQgU1dTZXJ2ZXI6OnJl
bW92ZUNsaWVudFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oQ29ubmVjdGlvbiYgY29ubmVjdGlv
biwgU2VyCiAKIHZvaWQgU1dTZXJ2ZXI6OnVwZGF0ZVdvcmtlcihjb25zdCBTZXJ2aWNlV29ya2Vy
Sm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBTV1NlcnZlclJlZ2lzdHJhdGlv
biYgcmVnaXN0cmF0aW9uLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU2NyaXB0QnVmZmVyJiBzY3Jp
cHQsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBjb25zdCBDb250ZW50
U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgY29u
c3QgU3RyaW5nJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSB0eXBlLCBIYXNoTWFwPFVSTCwg
U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJiBzY3JpcHRSZXNvdXJj
ZU1hcCkKIHsKLSAgICB0cnlJbnN0YWxsQ29udGV4dERhdGEoU2VydmljZVdvcmtlckNvbnRleHRE
YXRhIHsgam9iRGF0YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbi5kYXRhKCksIFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBzY3JpcHQsIGNlcnRpZmljYXRlSW5mbywgY29udGVu
dFNlY3VyaXR5UG9saWN5LCByZWZlcnJlclBvbGljeSwgdXJsLCB0eXBlLCBmYWxzZSwgY2xpZW50
SXNBcHBCb3VuZEZvclJlZ2lzdHJhYmxlRG9tYWluKFJlZ2lzdHJhYmxlRG9tYWluKHVybCkpLCBX
VEZNb3ZlKHNjcmlwdFJlc291cmNlTWFwKSB9KTsKKyAgICB0cnlJbnN0YWxsQ29udGV4dERhdGEo
U2VydmljZVdvcmtlckNvbnRleHREYXRhIHsgam9iRGF0YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlv
bi5kYXRhKCksIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBzY3JpcHQsIGNl
cnRpZmljYXRlSW5mbywgY29udGVudFNlY3VyaXR5UG9saWN5LCByZWZlcnJlclBvbGljeSwgdXJs
LCB0eXBlLCBmYWxzZSwgY2xpZW50SXNBcHBJbml0aWF0ZWRGb3JSZWdpc3RyYWJsZURvbWFpbihS
ZWdpc3RyYWJsZURvbWFpbih1cmwpKSwgV1RGTW92ZShzY3JpcHRSZXNvdXJjZU1hcCkgfSk7CiB9
CiAKLUxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgU1dTZXJ2ZXI6OmNsaWVudElzQXBwQm91bmRG
b3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKQorTGFz
dE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgU1dTZXJ2ZXI6OmNsaWVudElzQXBwSW5pdGlhdGVk
Rm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikKIHsK
ICAgICBhdXRvIGNsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluSXRlcmF0b3IgPSBtX2NsaWVudHNC
eVJlZ2lzdHJhYmxlRG9tYWluLmZpbmQoZG9tYWluKTsKICAgICBpZiAoY2xpZW50c0J5UmVnaXN0
cmFibGVEb21haW5JdGVyYXRvciA9PSBtX2NsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluLmVuZCgp
KQotICAgICAgICByZXR1cm4gTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDo6Tm87CisgICAgICAg
IHJldHVybiBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDo6Tm87CiAKICAgICBhdXRvJiBj
bGllbnRzRm9yUmVnaXN0cmFibGVEb21haW4gPSBjbGllbnRzQnlSZWdpc3RyYWJsZURvbWFpbkl0
ZXJhdG9yLT52YWx1ZTsKICAgICBmb3IgKGF1dG8mIGNsaWVudCA6IGNsaWVudHNGb3JSZWdpc3Ry
YWJsZURvbWFpbikgewogICAgICAgICBhdXRvIGRhdGEgPSBtX2NsaWVudHNCeUlkLmZpbmQoY2xp
ZW50KTsKICAgICAgICAgQVNTRVJUKGRhdGEgIT0gbV9jbGllbnRzQnlJZC5lbmQoKSk7Ci0gICAg
ICAgIGlmIChkYXRhLT52YWx1ZS5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kID09IExhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQ6OlllcykKLSAgICAgICAgICAgIHJldHVybiBMYXN0TmF2aWdhdGlv
bldhc0FwcEJvdW5kOjpZZXM7CisgICAgICAgIGlmIChkYXRhLT52YWx1ZS5sYXN0TmF2aWdhdGlv
bldhc0FwcEluaXRpYXRlZCA9PSBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDo6WWVzKQor
ICAgICAgICAgICAgcmV0dXJuIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpZZXM7CiAg
ICAgfQogCi0gICAgcmV0dXJuIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6Ok5vOworICAgIHJl
dHVybiBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDo6Tm87CiB9CiAKIHZvaWQgU1dTZXJ2
ZXI6OnRyeUluc3RhbGxDb250ZXh0RGF0YShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBkYXRh
KQpAQCAtODg2LDExICs4ODYsMTEgQEAgU1dTZXJ2ZXJSZWdpc3RyYXRpb24qIFNXU2VydmVyOjpy
ZWdpc3RyYXRpb25Gcm9tU2VydmljZVdvcmtlcklkZW50aWZpZXIoU2VydmljZVcKICAgICByZXR1
cm4gaXRlcmF0b3ItPnZhbHVlLT5yZWdpc3RyYXRpb24oKTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6
dXBkYXRlQXBwQm91bmRWYWx1ZUZvcldvcmtlcnMoY29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRP
cmlnaW4sIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3Vu
ZCkKK3ZvaWQgU1dTZXJ2ZXI6OnVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlRm9yV29ya2Vycyhjb25z
dCBDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0
ZWQgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpCiB7CiAgICAgZm9yIChhdXRvJiB3b3Jr
ZXIgOiBtX3J1bm5pbmdPclRlcm1pbmF0aW5nV29ya2Vycy52YWx1ZXMoKSkgewogICAgICAgICBp
ZiAod29ya2VyLT5vcmlnaW4oKS5jbGllbnRSZWdpc3RyYWJsZURvbWFpbigpID09IGNsaWVudE9y
aWdpbi5jbGllbnRSZWdpc3RyYWJsZURvbWFpbigpKQotICAgICAgICAgICAgd29ya2VyLT51cGRh
dGVBcHBCb3VuZFZhbHVlKGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOworICAgICAgICAgICAg
d29ya2VyLT51cGRhdGVBcHBJbml0aWF0ZWRWYWx1ZShsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRp
YXRlZCk7CiAgICAgfQogfQogCkBAIC04OTksOSArODk5LDkgQEAgdm9pZCBTV1NlcnZlcjo6cmVn
aXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KENsaWVudE9yaWdpbiYmIGNsaWVudE9yaWdpbiwgU2Vy
dmljZVcKICAgICBhdXRvIGNsaWVudElkZW50aWZpZXIgPSBkYXRhLmlkZW50aWZpZXI7CiAKICAg
ICAvLyBVcGRhdGUgdGhlIGFwcC1ib3VuZCB2YWx1ZSBpZiB0aGUgbmV3IGNsaWVudCBpcyBhcHAt
Ym91bmQgYW5kIHRoZSBjdXJyZW50IGNsaWVudHMgZm9yIHRoZSBvcmlnaW4gYXJlIG5vdCBtYXJr
ZWQgYXBwLWJvdW5kLgotICAgIGlmIChkYXRhLmxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgPT0g
TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDo6WWVzKSB7Ci0gICAgICAgIGlmIChjbGllbnRJc0Fw
cEJvdW5kRm9yUmVnaXN0cmFibGVEb21haW4oY2xpZW50T3JpZ2luLmNsaWVudFJlZ2lzdHJhYmxl
RG9tYWluKCkpID09IExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6Ok5vKQotICAgICAgICAgICAg
dXBkYXRlQXBwQm91bmRWYWx1ZUZvcldvcmtlcnMoY2xpZW50T3JpZ2luLCBkYXRhLmxhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQpOworICAgIGlmIChkYXRhLmxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5p
dGlhdGVkID09IExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpZZXMpIHsKKyAgICAgICAg
aWYgKGNsaWVudElzQXBwSW5pdGlhdGVkRm9yUmVnaXN0cmFibGVEb21haW4oY2xpZW50T3JpZ2lu
LmNsaWVudFJlZ2lzdHJhYmxlRG9tYWluKCkpID09IExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlh
dGVkOjpObykKKyAgICAgICAgICAgIHVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlRm9yV29ya2Vycyhj
bGllbnRPcmlnaW4sIGRhdGEubGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpOwogICAgIH0K
IAogICAgIEFTU0VSVCghbV9jbGllbnRzQnlJZC5jb250YWlucyhjbGllbnRJZGVudGlmaWVyKSk7
CkBAIC05MzksNyArOTM5LDcgQEAgdm9pZCBTV1NlcnZlcjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2Vy
Q2xpZW50KENsaWVudE9yaWdpbiYmIGNsaWVudE9yaWdpbiwgU2VydmljZVcKIHZvaWQgU1dTZXJ2
ZXI6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IENsaWVudE9yaWdpbiYgY2xp
ZW50T3JpZ2luLCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVy
KQogewogICAgIGF1dG8gY2xpZW50UmVnaXN0cmFibGVEb21haW4gPSBjbGllbnRPcmlnaW4uY2xp
ZW50UmVnaXN0cmFibGVEb21haW4oKTsKLSAgICBhdXRvIGFwcEJvdW5kVmFsdWVCZWZvcmUgPSBj
bGllbnRJc0FwcEJvdW5kRm9yUmVnaXN0cmFibGVEb21haW4oY2xpZW50T3JpZ2luLmNsaWVudFJl
Z2lzdHJhYmxlRG9tYWluKCkpOworICAgIGF1dG8gYXBwSW5pdGlhdGVkVmFsdWVCZWZvcmUgPSBj
bGllbnRJc0FwcEluaXRpYXRlZEZvclJlZ2lzdHJhYmxlRG9tYWluKGNsaWVudE9yaWdpbi5jbGll
bnRSZWdpc3RyYWJsZURvbWFpbigpKTsKIAogICAgIGJvb2wgd2FzUmVtb3ZlZCA9IG1fY2xpZW50
c0J5SWQucmVtb3ZlKGNsaWVudElkZW50aWZpZXIpOwogICAgIEFTU0VSVF9VTlVTRUQod2FzUmVt
b3ZlZCwgd2FzUmVtb3ZlZCk7CkBAIC05ODQsOSArOTg0LDkgQEAgdm9pZCBTV1NlcnZlcjo6dW5y
ZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRPcmln
aW4sIFMKIAogICAgIC8vIElmIHRoZSBhcHAtYm91bmQgdmFsdWUgY2hhbmdlZCBhZnRlciB0aGlz
IGNsaWVudCB3YXMgcmVtb3ZlZCwgd2Uga25vdyBpdCB3YXMgdGhlIG9ubHkgYXBwLWJvdW5kCiAg
ICAgLy8gY2xpZW50IGZvciBpdHMgb3JpZ2luLCBhbmQgd2Ugc2hvdWxkIHVwZGF0ZSBhbGwgd29y
a2VycyB0byByZWZsZWN0IHRoaXMuCi0gICAgYXV0byBhcHBCb3VuZFZhbHVlQWZ0ZXIgPSBjbGll
bnRJc0FwcEJvdW5kRm9yUmVnaXN0cmFibGVEb21haW4oY2xpZW50T3JpZ2luLmNsaWVudFJlZ2lz
dHJhYmxlRG9tYWluKCkpOwotICAgIGlmIChhcHBCb3VuZFZhbHVlQmVmb3JlICE9IGFwcEJvdW5k
VmFsdWVBZnRlcikKLSAgICAgICAgdXBkYXRlQXBwQm91bmRWYWx1ZUZvcldvcmtlcnMoY2xpZW50
T3JpZ2luLCBhcHBCb3VuZFZhbHVlQWZ0ZXIpOworICAgIGF1dG8gYXBwSW5pdGlhdGVkVmFsdWVB
ZnRlciA9IGNsaWVudElzQXBwSW5pdGlhdGVkRm9yUmVnaXN0cmFibGVEb21haW4oY2xpZW50T3Jp
Z2luLmNsaWVudFJlZ2lzdHJhYmxlRG9tYWluKCkpOworICAgIGlmIChhcHBJbml0aWF0ZWRWYWx1
ZUJlZm9yZSAhPSBhcHBJbml0aWF0ZWRWYWx1ZUFmdGVyKQorICAgICAgICB1cGRhdGVBcHBJbml0
aWF0ZWRWYWx1ZUZvcldvcmtlcnMoY2xpZW50T3JpZ2luLCBhcHBJbml0aWF0ZWRWYWx1ZUFmdGVy
KTsKIAogICAgIGF1dG8gcmVnaXN0cmF0aW9uSXRlcmF0b3IgPSBtX2NsaWVudFRvQ29udHJvbGxp
bmdSZWdpc3RyYXRpb24uZmluZChjbGllbnRJZGVudGlmaWVyKTsKICAgICBpZiAocmVnaXN0cmF0
aW9uSXRlcmF0b3IgPT0gbV9jbGllbnRUb0NvbnRyb2xsaW5nUmVnaXN0cmF0aW9uLmVuZCgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCmlu
ZGV4IGNkNjIyNjYzN2EyNTE2YmYzZmM1MDFlYzYxYTI2MWQyOTM2ZmIyOTQuLjZiZDY4OTMzNDRl
ZWRmMmYwY2JkZGQyYTE2MTY2YTkyMWUzM2ZlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTIxNyw3ICsyMTcsNyBAQCBwdWJs
aWM6CiAKICAgICBzdGF0aWMgY29uc3RleHByIFNlY29uZHMgZGVmYXVsdFRlcm1pbmF0aW9uRGVs
YXkgPSAxMF9zOwogCi0gICAgTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCBjbGllbnRJc0FwcEJv
dW5kRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsKKyAgICBM
YXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCBjbGllbnRJc0FwcEluaXRpYXRlZEZvclJlZ2lz
dHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CiAKIHByaXZhdGU6CiAgICAg
dm9pZCB2YWxpZGF0ZVJlZ2lzdHJhdGlvbkRvbWFpbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CkBAIC0yNDQsNyArMjQ0LDcgQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgY29udGV4dENvbm5lY3Rpb25DcmVhdGVkKFNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbiYpOwogCi0gICAgdm9pZCB1cGRhdGVBcHBCb3VuZFZhbHVlRm9yV29y
a2Vycyhjb25zdCBDbGllbnRPcmlnaW4mLCBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKTsKKyAg
ICB2b2lkIHVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlRm9yV29ya2Vycyhjb25zdCBDbGllbnRPcmln
aW4mLCBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk7CiAKICAgICBIYXNoTWFwPFNXU2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0aW9uPj4gbV9j
b25uZWN0aW9uczsKICAgICBIYXNoTWFwPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXksIFdl
YWtQdHI8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+PiBtX3Njb3BlVG9SZWdpc3RyYXRpb25NYXA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
UmVnaXN0cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCmluZGV4IDEyYTk1ZGUwZGYwZmJkNjQ2NjFlNzZmYzI5
N2Q1MDRhNTM2Njc3MjQuLmQ4Y2E2NWY4ZWVmNmRjNDY4OWVkNmM4ZTA1ZWE4NjM0YWE4OTU5MWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJSZWdpc3RyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCkBAIC0zNzAsMTQgKzM3MCwxNCBAQCB2b2lk
IFNXU2VydmVyUmVnaXN0cmF0aW9uOjpzb2Z0VXBkYXRlKCkKICAgICBtX3NlcnZlci5zb2Z0VXBk
YXRlKCp0aGlzKTsKIH0KIAotdm9pZCBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6c2NoZWR1bGVTb2Z0
VXBkYXRlKElzQXBwQm91bmQgaXNBcHBCb3VuZCkKK3ZvaWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246
OnNjaGVkdWxlU29mdFVwZGF0ZShJc0FwcEluaXRpYXRlZCBpc0FwcEluaXRpYXRlZCkKIHsKICAg
ICAvLyBUbyBhdm9pZCBzY2hlZHVsaW5nIG1hbnkgdXBkYXRlcyBkdXJpbmcgYSBzaW5nbGUgcGFn
ZSBsb2FkLCB3ZSBkbyBzb2Z0IHVwZGF0ZXMgb24gYSAxIHNlY29uZCBkZWxheSBhbmQga2VlcCBk
ZWxheWluZwogICAgIC8vIGFzIGxvbmcgYXMgc29mdCB1cGRhdGUgcmVxdWVzdHMga2VlcCBjb21p
bmcuIFRoaXMgc2VlbXMgdG8gbWF0Y2ggQ2hyb21lJ3MgYmVoYXZpb3IuCiAgICAgaWYgKG1fc29m
dFVwZGF0ZVRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1faXNBcHBC
b3VuZCA9IGlzQXBwQm91bmQgPT0gSXNBcHBCb3VuZDo6WWVzOworICAgIG1faXNBcHBJbml0aWF0
ZWQgPSBpc0FwcEluaXRpYXRlZCA9PSBJc0FwcEluaXRpYXRlZDo6WWVzOwogCiAgICAgUkVMRUFT
RV9MT0coU2VydmljZVdvcmtlciwgIlNXU2VydmVyUmVnaXN0cmF0aW9uOjpzb2Z0VXBkYXRlSWZO
ZWVkZWQiKTsKICAgICBtX3NvZnRVcGRhdGVUaW1lci5zdGFydE9uZVNob3Qoc29mdFVwZGF0ZURl
bGF5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJSZWdpc3RyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaAppbmRleCA5ZjdmMDYwZjdjYzA0YTJjODc1YmIw
NDZjN2I4MTU4OGIxMjI4YjQ2Li5mY2MwNThhMzk4NmQzZmFhNjcwOTYzMWViYzJiMjM2MjQyMzQ2
NWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyUmVnaXN0cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5oCkBAIC00Nyw3ICs0Nyw3IEBAIHN0cnVjdCBF
eGNlcHRpb25EYXRhOwogc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTsKIHN0cnVjdCBT
ZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQ7CiAKLWVudW0gY2xhc3MgSXNBcHBCb3VuZCA6IGJvb2wg
eyBObywgWWVzIH07CitlbnVtIGNsYXNzIElzQXBwSW5pdGlhdGVkIDogYm9vbCB7IE5vLCBZZXMg
fTsKIAogY2xhc3MgU1dTZXJ2ZXJSZWdpc3RyYXRpb24gOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
U1dTZXJ2ZXJSZWdpc3RyYXRpb24+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAg
LTEwMSwxMyArMTAxLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGZvckVhY2hDb25uZWN0aW9uKGNv
bnN0IFdURjo6RnVuY3Rpb248dm9pZChTV1NlcnZlcjo6Q29ubmVjdGlvbiYpPiYpOwogCiAgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRTb2Z0VXBkYXRlKGNvbnN0IEZldGNoT3B0aW9ucyYp
IGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2NoZWR1bGVTb2Z0VXBkYXRlKElzQXBw
Qm91bmQpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2NoZWR1bGVTb2Z0VXBkYXRlKElzQXBw
SW5pdGlhdGVkKTsKICAgICBzdGF0aWMgY29uc3RleHByIFNlY29uZHMgc29mdFVwZGF0ZURlbGF5
IHsgMV9zIH07CiAKICAgICBVUkwgc2NvcGVVUkxXaXRob3V0RnJhZ21lbnQoKSBjb25zdCB7IHJl
dHVybiBtX3Njb3BlVVJMOyB9CiAgICAgVVJMIHNjcmlwdFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1f
c2NyaXB0VVJMOyB9CiAKLSAgICBib29sIGlzQXBwQm91bmQoKSB7IHJldHVybiBtX2lzQXBwQm91
bmQ7IH0KKyAgICBib29sIGlzQXBwSW5pdGlhdGVkKCkgeyByZXR1cm4gbV9pc0FwcEluaXRpYXRl
ZDsgfQogCiBwcml2YXRlOgogICAgIHZvaWQgYWN0aXZhdGUoKTsKQEAgLTEzNSw3ICsxMzUsNyBA
QCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6VGltZXIgbV9zb2Z0VXBkYXRlVGltZXI7CiAgICAg
Ci0gICAgYm9vbCBtX2lzQXBwQm91bmQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc0FwcEluaXRp
YXRlZCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCA3ZDVjOGYxNDliNzMzMWQ0MGE0YTJlYWNh
ZDlkNjRiNDIwMDFjNTZkLi4xYzdmMzlkYjdjNmRlY2VlMzRlZTNlMDU0ODY3MTllZmJiYjc4ODY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTUyLDcgKzUyLDcg
QEAgcHVibGljOgogCiAgICAgLy8gTWVzc2FnZXMgdG8gdGhlIFNXIGhvc3QgcHJvY2VzcwogICAg
IHZpcnR1YWwgdm9pZCBpbnN0YWxsU2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgU2VydmljZVdv
cmtlckNvbnRleHREYXRhJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlQXBwQm91bmRWYWx1ZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgTGFz
dE5hdmlnYXRpb25XYXNBcHBCb3VuZCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBcHBJ
bml0aWF0ZWRWYWx1ZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgTGFzdE5hdmlnYXRpb25XYXNB
cHBJbml0aWF0ZWQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmlyZUluc3RhbGxFdmVudChTZXJ2
aWNlV29ya2VySWRlbnRpZmllcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmaXJlQWN0aXZhdGVF
dmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0ZXJt
aW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAK
aW5kZXggNjU5MmRiNDEzZjc5NDVkMTNhMDhlMTYyNTE0YmY0YWZlMGFmYWQwMy4uZDdjY2M2MjA3
NWIxMGU1MTBkYjFjMWYwODM2YWI2NDQxMGY2M2E2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKQEAgLTYy
LDcgKzYyLDcgQEAgU1dTZXJ2ZXJXb3JrZXI6OlNXU2VydmVyV29ya2VyKFNXU2VydmVyJiBzZXJ2
ZXIsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXQKICAgICAsIG1fcmVnaXN0cmFibGVE
b21haW4obV9kYXRhLnNjcmlwdFVSTCkKICAgICAsIG1fc2NyaXB0UmVzb3VyY2VNYXAoV1RGTW92
ZShzY3JpcHRSZXNvdXJjZU1hcCkpCiAgICAgLCBtX3Rlcm1pbmF0aW9uVGltZXIoKnRoaXMsICZT
V1NlcnZlcldvcmtlcjo6dGVybWluYXRpb25UaW1lckZpcmVkKQotICAgICwgbV9sYXN0TmF2aWdh
dGlvbldhc0FwcEJvdW5kKG1fc2VydmVyLT5jbGllbnRJc0FwcEJvdW5kRm9yUmVnaXN0cmFibGVE
b21haW4obV9yZWdpc3RyYWJsZURvbWFpbikpCisgICAgLCBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBw
SW5pdGlhdGVkKG1fc2VydmVyLT5jbGllbnRJc0FwcEluaXRpYXRlZEZvclJlZ2lzdHJhYmxlRG9t
YWluKG1fcmVnaXN0cmFibGVEb21haW4pKQogewogICAgIG1fZGF0YS5zY3JpcHRVUkwucmVtb3Zl
RnJhZ21lbnRJZGVudGlmaWVyKCk7CiAKQEAgLTg3LDE4ICs4NywxOCBAQCBTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEgU1dTZXJ2ZXJXb3JrZXI6OmNvbnRleHREYXRhKCkgY29uc3QKIHsKICAgICBB
U1NFUlQobV9yZWdpc3RyYXRpb24pOwogCi0gICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0LCBtX3Jl
Z2lzdHJhdGlvbi0+ZGF0YSgpLCBtX2RhdGEuaWRlbnRpZmllciwgbV9zY3JpcHQsIG1fY2VydGlm
aWNhdGVJbmZvLCBtX2NvbnRlbnRTZWN1cml0eVBvbGljeSwgbV9yZWZlcnJlclBvbGljeSwgbV9k
YXRhLnNjcmlwdFVSTCwgbV9kYXRhLnR5cGUsIGZhbHNlLCBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBw
Qm91bmQsIG1fc2NyaXB0UmVzb3VyY2VNYXAgfTsKKyAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQs
IG1fcmVnaXN0cmF0aW9uLT5kYXRhKCksIG1fZGF0YS5pZGVudGlmaWVyLCBtX3NjcmlwdCwgbV9j
ZXJ0aWZpY2F0ZUluZm8sIG1fY29udGVudFNlY3VyaXR5UG9saWN5LCBtX3JlZmVycmVyUG9saWN5
LCBtX2RhdGEuc2NyaXB0VVJMLCBtX2RhdGEudHlwZSwgZmFsc2UsIG1fbGFzdE5hdmlnYXRpb25X
YXNBcHBJbml0aWF0ZWQsIG1fc2NyaXB0UmVzb3VyY2VNYXAgfTsKIH0KIAotdm9pZCBTV1NlcnZl
cldvcmtlcjo6dXBkYXRlQXBwQm91bmRWYWx1ZShMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIGxh
c3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpCit2b2lkIFNXU2VydmVyV29ya2VyOjp1cGRhdGVBcHBJ
bml0aWF0ZWRWYWx1ZShMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCBsYXN0TmF2aWdhdGlv
bldhc0FwcEluaXRpYXRlZCkKIHsKLSAgICBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgPSBs
YXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOworICAgIG1fbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0
aWF0ZWQgPSBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDsKIAogICAgIGlmICghaXNSdW5u
aW5nKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gY29u
dGV4dENvbm5lY3Rpb24oKSkKLSAgICAgICAgY29ubmVjdGlvbi0+dXBkYXRlQXBwQm91bmRWYWx1
ZShpZGVudGlmaWVyKCksIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOworICAgICAgICBjb25u
ZWN0aW9uLT51cGRhdGVBcHBJbml0aWF0ZWRWYWx1ZShpZGVudGlmaWVyKCksIGxhc3ROYXZpZ2F0
aW9uV2FzQXBwSW5pdGlhdGVkKTsKIH0KIAogdm9pZCBTV1NlcnZlcldvcmtlcjo6dGVybWluYXRl
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAppbmRleCBi
ZTU1ZWViMWFhMmZlNjJiNjE3MjFlOTMzMTBiMGNhNGRhMTI5ZGZlLi5hYjA3YzcxNzY3NjE3MzQw
MmUwMmEyY2Y1MTE3NTlmYzdiNzg0NGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCkBAIC0xMjcsNyArMTI3LDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0SGFzVGltZWRPdXRBbnlGZXRjaFRhc2tzKCkgeyBtX2hh
c1RpbWVkT3V0QW55RmV0Y2hUYXNrcyA9IHRydWU7IH0KICAgICBib29sIGhhc1RpbWVkT3V0QW55
RmV0Y2hUYXNrcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzVGltZWRPdXRBbnlGZXRjaFRhc2tzOyB9
CiAgICAgdm9pZCBkaWRGYWlsSGVhcnRCZWF0Q2hlY2soKTsKLSAgICB2b2lkIHVwZGF0ZUFwcEJv
dW5kVmFsdWUoTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk7CisgICAgdm9pZCB1cGRhdGVBcHBJ
bml0aWF0ZWRWYWx1ZShMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk7CiAKIHByaXZhdGU6
CiAgICAgU1dTZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXImLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYsIGNv
bnN0IFVSTCYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYsIGNv
bnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIFN0cmluZyYmIHJlZmVy
cmVyUG9saWN5LCBXb3JrZXJUeXBlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgSGFzaE1hcDxV
UkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYpOwpAQCAtMTU4
LDcgKzE1OCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc1RpbWVkT3V0QW55RmV0Y2hUYXNr
cyB7IGZhbHNlIH07CiAgICAgVmVjdG9yPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4+IG1fdGVy
bWluYXRpb25DYWxsYmFja3M7CiAgICAgVGltZXIgbV90ZXJtaW5hdGlvblRpbWVyOwotICAgIExh
c3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOworICAg
IExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIG1fbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0
aWF0ZWQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDQ5YmRkM2ZlYzY4MTM3Y2U0
MzUzOTUwMDM0YWRjNmIyNzUyYWY5ZTUuLmVjY2NhOGY2YWZiZWEwNTI1ZDUxOTY0ZmU5ZjNiODA2
NzVhZmEzZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCkBAIC0xMzYyLDcgKzEzNjIsNyBAQCBib29sIE5ldHdvcmtQcm9jZXNzOjpwcml2
YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnTW9kZUVuYWJsZWQoKSBjb25zdAogICAgIHJldHVybiBt
X3ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdNb2RlRW5hYmxlZDsKIH0KIAotdm9pZCBOZXR3
b3JrUHJvY2Vzczo6cHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFn
ZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
d2ViUGFnZUlELCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFdlYkNv
cmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzdGQ6
Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluLCBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIGxhc3ROYXZpZ2F0aW9uV2FzQXBw
Qm91bmQpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IHVzZXJBZ2VudCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVk
IGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKQogewogICAgIExPRyhOZXR3b3JrLCAiKE5l
dHdvcmtQcm9jZXNzKSBQcmVjb25uZWN0aW5nIHRvIFVSTCAlcyAoc3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3kgJWkpIiwgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIChpbnQpc3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3kpOwogCkBAIC0xMzc4LDcgKzEzNzgsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVu
dGlmaQogCiAgICAgTmV0d29ya0xvYWRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAgICAgcGFyYW1l
dGVycy5yZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0IHsgdXJsIH07Ci0gICAgcGFyYW1ldGVycy5y
ZXF1ZXN0LnNldElzQXBwQm91bmQobGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCA9PSBMYXN0TmF2
aWdhdGlvbldhc0FwcEJvdW5kOjpZZXMpOworICAgIHBhcmFtZXRlcnMucmVxdWVzdC5zZXRJc0Fw
cEluaXRpYXRlZChsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCA9PSBMYXN0TmF2aWdhdGlv
bldhc0FwcEluaXRpYXRlZDo6WWVzKTsKICAgICBwYXJhbWV0ZXJzLnJlcXVlc3Quc2V0Rmlyc3RQ
YXJ0eUZvckNvb2tpZXModXJsKTsKICAgICBwYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlEID0gd2Vi
UGFnZVByb3h5SUQ7CiAgICAgcGFyYW1ldGVycy53ZWJQYWdlSUQgPSB3ZWJQYWdlSUQ7CkBAIC0y
NzY2LDE5ICsyNzY2LDE5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldENPUlNEaXNhYmxpbmdQ
YXR0ZXJucyhQYWdlSWRlbnRpZmllciBwYWdlSWRlbnRpZmllciwgVmVjCiB9CiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmFwcEJvdW5kTmF2aWdhdGlvbkRhdGEo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEFw
cEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IE5ldHdvcmtQcm9jZXNzOjphcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEFwcFByaXZhY3lSZXBv
cnRUZXN0aW5nRGF0YSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBu
ZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIobmV0d29ya1Nlc3Npb24tPmFwcEJvdW5kTmF2aWdhdGlvblRl
c3RpbmdEYXRhKCkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuZXR3b3JrU2Vzc2lvbi0+
YXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmNs
ZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1By
b2Nlc3M6OmNsZWFyQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCkpCi0gICAgICAgIG5ldHdvcmtTZXNzaW9uLT5hcHBCb3VuZE5hdmlnYXRpb25UZXN0
aW5nRGF0YSgpLmNsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YVRlc3RpbmcoKTsKKyAgICAgICAg
bmV0d29ya1Nlc3Npb24tPmFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSgpLmNsZWFyQXBwUHJp
dmFjeVJlcG9ydFRlc3RpbmdEYXRhKCk7CiAKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDQ0
Nzc4NGIxYTc4MzhkZDdiZGM5NWNmMzc0MDU3YmNjNTlkOGEzM2QuLjVmNTg1YWU3OWYxZDBiYTEz
YmViYWJhOGI1NjRiODI4MWU1NmY0ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAK
KyNpbmNsdWRlICJBcHBQcml2YWN5UmVwb3J0LmgiCiAjaW5jbHVkZSAiQXV4aWxpYXJ5UHJvY2Vz
cy5oIgogI2luY2x1ZGUgIkNhY2hlTW9kZWwuaCIKICNpbmNsdWRlICJDYWxsYmFja0lELmgiCkBA
IC0yODgsNyArMjg5LDcgQEAgcHVibGljOgogICAgIHVzaW5nIENhY2hlU3RvcmFnZVJvb3RQYXRo
Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT47CiAgICAgdm9pZCBj
YWNoZVN0b3JhZ2VSb290UGF0aChQQUw6OlNlc3Npb25JRCwgQ2FjaGVTdG9yYWdlUm9vdFBhdGhD
YWxsYmFjayYmKTsKIAotICAgIHZvaWQgcHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklELCBXZWJQ
YWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHN0ZDo6b3B0
aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBMYXN0TmF2aWdhdGlvbldhc0FwcEJv
dW5kKTsKKyAgICB2b2lkIHByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCwgV2ViUGFnZVByb3h5
SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFVSTCYsIGNvbnN0IFN0
cmluZyYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQp
OwogCiAgICAgdm9pZCBzZXRTZXNzaW9uSXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKFBBTDo6U2Vz
c2lvbklELCBib29sKTsKICAgICBib29sIHNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24o
UEFMOjpTZXNzaW9uSUQpIGNvbnN0OwpAQCAtMzc3LDggKzM3OCw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldENPUlNEaXNhYmxpbmdQYXR0ZXJucyhXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgVmVj
dG9yPFN0cmluZz4mJik7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIGFwcEJvdW5k
TmF2aWdhdGlvbkRhdGEoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEmKT4mJik7Ci0gICAgdm9pZCBjbGVhckFw
cEJvdW5kTmF2aWdhdGlvbkRhdGEoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CisgICAgdm9pZCBhcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoUEFMOjpTZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgQXBwUHJpdmFjeVJlcG9ydFRlc3Rp
bmdEYXRhJik+JiYpOworICAgIHZvaWQgY2xlYXJBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEo
UEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAjZW5kaWYKIAog
I2lmIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggYWUxNWZmMGUxMmNhNTQ1MTc4
OTA3ZDk3MmEwOWNlNmQyMzIxYTJkNC4uZTA1ZjJlMzIwNTg0NzM3YjM0N2ZhYjIxYmY2YTJlNjk3
OWE4YzhjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC03Nyw3ICs3Nyw3IEBAIG1lc3NhZ2VzIC0+IE5l
dHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBQcmVwYXJlVG9TdXNwZW5kKGJvb2wg
aXNTdXNwZW5zaW9uSW1taW5lbnQpIC0+ICgpIEFzeW5jCiAgICAgUHJvY2Vzc0RpZFJlc3VtZSgp
CiAKLSAgICBQcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6Oldl
YlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIHdlYlBhZ2VJRCwgVVJMIHVybCwgU3RyaW5nIHVzZXJBZ2VudCwgZW51bTp1aW50OF90IFdl
YkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBl
bnVtOmJvb2wgc3RkOjpvcHRpb25hbDxXZWJLaXQ6Ok5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
PiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBlbnVtOmJvb2wgV2ViS2l0OjpMYXN0TmF2
aWdhdGlvbldhc0FwcEJvdW5kIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOworICAgIFByZWNv
bm5lY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRl
bnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlE
LCBVUkwgdXJsLCBTdHJpbmcgdXNlckFnZW50LCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6U3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGVudW06Ym9vbCBzdGQ6
Om9wdGlvbmFsPFdlYktpdDo6TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4sIGVudW06Ym9vbCBXZWJLaXQ6Okxhc3ROYXZpZ2F0aW9uV2FzQXBw
SW5pdGlhdGVkIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKTsKIAogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgQ2xlYXJQcmV2YWxlbnRSZXNvdXJjZShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlc291cmNl
RG9tYWluKSAtPiAoKSBBc3luYwpAQCAtMTkzLDggKzE5Myw4IEBAIG1lc3NhZ2VzIC0+IE5ldHdv
cmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBDbGVhckJ1bmRsZUlkZW50aWZpZXIoKSAt
PiAoKSBBc3luYwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgQXBwQm91bmROYXZpZ2F0aW9u
RGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChzdHJ1Y3QgV2ViS2l0OjpBcHBCb3Vu
ZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBkYXRhKSBBc3luYwotICAgIENsZWFyQXBwQm91bmROYXZp
Z2F0aW9uRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCisgICAgQXBw
UHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKHN0
cnVjdCBXZWJLaXQ6OkFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSBkYXRhKSBBc3luYworICAg
IENsZWFyQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCkgLT4gKCkgQXN5bmMKICNlbmRpZgogCiAgICAgQWRkV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVy
IHBhZ2VJRCwgV2ViS2l0OjpXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMgcGFyYW1ldGVycykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmNwcAppbmRleCAwMWFhMWI4MzU3M2E0Y2RlNWY2ZWFjYjBjYjNjMmQzYmVkN2MxNjEzLi4z
YmNmYzEzZGE4ODMzMzE3ZjU4NDY2MGE2ZTkwZGYyZDdjYmQzYTZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC04ODIsNyArODgyLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVk
aXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwKIAogdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFJl
c291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVD
bGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhPiYmIHByaXZhdGVDbGlja01l
YXN1cmVtZW50QXR0cmlidXRpb25UcmlnZ2VyRGF0YSkKIHsKLSAgICByZWRpcmVjdFJlcXVlc3Qu
c2V0SXNBcHBCb3VuZChyZXF1ZXN0LmlzQXBwQm91bmQoKSk7CisgICAgcmVkaXJlY3RSZXF1ZXN0
LnNldElzQXBwSW5pdGlhdGVkKHJlcXVlc3QuaXNBcHBJbml0aWF0ZWQoKSk7CiAKICAgICBMT0FE
RVJfUkVMRUFTRV9MT0coImNvbnRpbnVlV2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdDogKG1faXNL
ZXB0QWxpdmU9JWQsIGhhc0FkQ2xpY2tDb252ZXJzaW9uPSVkKSIsIG1faXNLZXB0QWxpdmUsICEh
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRhKTsKICAgICBBU1NF
UlQoIWlzU3luY2hyb25vdXMoKSk7CkBAIC0xNTA2LDcgKzE1MDYsNyBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6c2VydmljZVdvcmtlckRpZE5vdEhhbmRsZShTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrKiBmZQogCiBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6aXNBcHBCb3VuZCgpCiB7
Ci0gICAgcmV0dXJuIG1fcGFyYW1ldGVycy5yZXF1ZXN0LmlzQXBwQm91bmQoKTsKKyAgICByZXR1
cm4gbV9wYXJhbWV0ZXJzLnJlcXVlc3QuaXNBcHBJbml0aWF0ZWQoKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmgKaW5kZXggN2ZhOTI3NDRmMjE1MmRjMzYzMDE1YjhhYzJkODI2NTA0MzVkY2IyNC4uNmZh
ZDdiOGI0ZGJiZDFlZWM3MjIxZGQyYzU5OWFkNjlhYTViYTAwOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtMjUsNiArMjUsNyBAQAogCiAj
cHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkFwcFByaXZhY3lSZXBvcnQuaCIKICNpbmNsdWRlICJO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oIgogI2luY2x1ZGUgIlByZWZldGNoQ2FjaGUuaCIK
ICNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIuaCIKQEAgLTE2
MSw3ICsxNjIsNyBAQCBwdWJsaWM6CiAgICAgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
JiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpIHsgcmV0dXJuICptX3ByaXZhdGVDbGlja01lYXN1
cmVtZW50OyB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBBcHBCb3VuZE5hdmlnYXRpb25U
ZXN0aW5nRGF0YSYgYXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEoKSB7IHJldHVybiBtX2Fw
cEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhOyB9CisgICAgQXBwUHJpdmFjeVJlcG9ydFRlc3Rp
bmdEYXRhJiBhcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoKSB7IHJldHVybiBtX2FwcFByaXZh
Y3lSZXBvcnRUZXN0aW5nRGF0YTsgfQogI2VuZGlmCiAKICAgICB2b2lkIGFkZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50TmV0d29ya0xvYWRlcihzdGQ6OnVuaXF1ZV9wdHI8UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnROZXR3b3JrTG9hZGVyPiYmIGxvYWRlcikgeyBtX3ByaXZhdGVDbGlja01lYXN1cmVt
ZW50TmV0d29ya0xvYWRlcnMuYWRkKFdURk1vdmUobG9hZGVyKSk7IH0KQEAgLTIxOSw3ICsyMjAs
NyBAQCBwcm90ZWN0ZWQ6CiAjZW5kaWYKICAgICAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBB
cHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBtX2FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdE
YXRhOworICAgIEFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSBtX2FwcFByaXZhY3lSZXBvcnRU
ZXN0aW5nRGF0YTsKICNlbmRpZgogCiAgICAgSGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyPj4gbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dE5ldHdvcmtMb2FkZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3Bw
CmluZGV4IDdmZGQ5NTRhZTRjOTFlMTdjNTI2Y2EwZTY4NzZiMzRkYjZkMmRiYjMuLjkxODI0YzAw
NmYyNGExNzY2ZjAwMzc5YWE5ZjBhMTg3MzFlY2UzM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlckZldGNoVGFzay5jcHAKQEAgLTI1NSw3ICsyNTUsNyBAQCB2b2lkIFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s6OnNvZnRVcGRhdGVJZk5lZWRlZCgpCiAgICAgaWYgKCFtX3Nob3VsZFNvZnRV
cGRhdGUpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoYXV0byogcmVnaXN0cmF0aW9uID0gbV9s
b2FkZXIuY29ubmVjdGlvblRvV2ViUHJvY2VzcygpLnN3Q29ubmVjdGlvbigpLnNlcnZlcigpLmdl
dFJlZ2lzdHJhdGlvbihtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKSkKLSAg
ICAgICAgcmVnaXN0cmF0aW9uLT5zY2hlZHVsZVNvZnRVcGRhdGUobV9sb2FkZXIuaXNBcHBCb3Vu
ZCgpID8gV2ViQ29yZTo6SXNBcHBCb3VuZDo6WWVzIDogV2ViQ29yZTo6SXNBcHBCb3VuZDo6Tm8p
OworICAgICAgICByZWdpc3RyYXRpb24tPnNjaGVkdWxlU29mdFVwZGF0ZShtX2xvYWRlci5pc0Fw
cEJvdW5kKCkgPyBXZWJDb3JlOjpJc0FwcEluaXRpYXRlZDo6WWVzIDogV2ViQ29yZTo6SXNBcHBJ
bml0aWF0ZWQ6Ok5vKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNv
ZnRVcGRhdGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAppbmRleCA0ZmYxYjFmZDIz
ZjY2YWYzMTI5OWNjOGJiNWNiMmNlYzVjZWYwYTVjLi4wNGFlZDkzODU3OWQ3MzVlZTA4MzNmOTBl
ZDMzMzRjN2ZlNDZjY2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29m
dFVwZGF0ZUxvYWRlci5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJT
b2Z0VXBkYXRlTG9hZGVyOjpsb2FkRnJvbU5ldHdvcmsoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24s
IFJlcwogICAgIG1fbmV0d29ya0xvYWQtPnN0YXJ0KCk7CiAKICNpZiBQTEFURk9STShDT0NPQSkK
LSAgICBzZXNzaW9uLmFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhKCkuc2V0RGlkUGVyZm9y
bVNvZnRVcGRhdGUoKTsKKyAgICBzZXNzaW9uLmFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSgp
LnNldERpZFBlcmZvcm1Tb2Z0VXBkYXRlKCk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCBjM2E3YjNkZjcwYzM3ZTNkYmU0ZmEzMWVmNjYw
YjYwNzA4ZjM3MmUzLi4yYTY0M2I4YTQ0YTczYWJiMGE0MTA2MTVkMzFlOWRiNTU2MzBkY2ViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtMTQ3LDcgKzE0Nyw3
IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpjb250cm9sQ2xpZW50KFNlcnZpY2VXb3Jr
ZXJDbGllbnRJZGVudGlmaWVyIGNsaWVudElkCiAgICAgICAgIHVucmVnaXN0ZXJTZXJ2aWNlV29y
a2VyQ2xpZW50KGNsaWVudElkZW50aWZpZXIpOwogICAgIH0pOwogCi0gICAgU2VydmljZVdvcmtl
ckNsaWVudERhdGEgZGF0YSB7IGNsaWVudElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJDbGllbnRU
eXBlOjpXaW5kb3csIFNlcnZpY2VXb3JrZXJDbGllbnRGcmFtZVR5cGU6Ok5vbmUsIHJlcXVlc3Qu
dXJsKCksIHJlcXVlc3QuaXNBcHBCb3VuZCgpID8gV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNB
cHBCb3VuZDo6WWVzIDogV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDo6Tm8gfTsK
KyAgICBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSBkYXRhIHsgY2xpZW50SWRlbnRpZmllciwgU2Vy
dmljZVdvcmtlckNsaWVudFR5cGU6OldpbmRvdywgU2VydmljZVdvcmtlckNsaWVudEZyYW1lVHlw
ZTo6Tm9uZSwgcmVxdWVzdC51cmwoKSwgcmVxdWVzdC5pc0FwcEluaXRpYXRlZCgpID8gV2ViQ29y
ZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6OlllcyA6IFdlYkNvcmU6Okxhc3ROYXZp
Z2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpObyB9OwogICAgIHJlZ2lzdGVyU2VydmljZVdvcmtlckNs
aWVudChTZWN1cml0eU9yaWdpbkRhdGEgeyByZWdpc3RyYXRpb24ua2V5KCkudG9wT3JpZ2luKCkg
fSwgV1RGTW92ZShkYXRhKSwgcmVnaXN0cmF0aW9uLmlkZW50aWZpZXIoKSwgcmVxdWVzdC5odHRw
VXNlckFnZW50KCkpOwogfQogCkBAIC0xODgsNyArMTg4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s+IFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y3JlYXRlRmV0Y2hU
YXNrKE4KICAgICBib29sIHNob3VsZFNvZnRVcGRhdGUgPSByZWdpc3RyYXRpb24gJiYgcmVnaXN0
cmF0aW9uLT5zaG91bGRTb2Z0VXBkYXRlKGxvYWRlci5wYXJhbWV0ZXJzKCkub3B0aW9ucyk7CiAg
ICAgaWYgKHdvcmtlci0+c2hvdWxkU2tpcEZldGNoRXZlbnQoKSkgewogICAgICAgICBpZiAoc2hv
dWxkU29mdFVwZGF0ZSkKLSAgICAgICAgICAgIHJlZ2lzdHJhdGlvbi0+c2NoZWR1bGVTb2Z0VXBk
YXRlKGxvYWRlci5pc0FwcEJvdW5kKCkgPyBXZWJDb3JlOjpJc0FwcEJvdW5kOjpZZXMgOiBXZWJD
b3JlOjpJc0FwcEJvdW5kOjpObyk7CisgICAgICAgICAgICByZWdpc3RyYXRpb24tPnNjaGVkdWxl
U29mdFVwZGF0ZShsb2FkZXIuaXNBcHBCb3VuZCgpID8gV2ViQ29yZTo6SXNBcHBJbml0aWF0ZWQ6
OlllcyA6IFdlYkNvcmU6OklzQXBwSW5pdGlhdGVkOjpObyk7CiAKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmNwcAppbmRleCAzZmEwZTk5NzBmMjU1NWNjODA0YjkyNzRiMGY3ZWRkMTk1NzI1
NTJhLi5lOTAyZWMwNzU4MDUwZTk5ZjYwMTdkYmY3MTBkYTgzNTU5YWRjMzZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtOTIs
OSArOTIsOSBAQCB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6aW5zdGFsbFNl
cnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFNlcnZpY2VXbwogICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpJbnN0YWxsU2VydmljZVdvcmtlciB7IGRhdGEs
IHVzZXJBZ2VudCB9KTsKIH0KIAotdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
OnVwZGF0ZUFwcEJvdW5kVmFsdWUoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIFdlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgbGFzdE5hdmln
YXRpb25XYXNBcHBCb3VuZCkKK3ZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp1
cGRhdGVBcHBJbml0aWF0ZWRWYWx1ZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgbGFz
dE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlVwZGF0ZUFwcEJvdW5kVmFsdWUoc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6VXBkYXRlQXBwSW5pdGlhdGVkVmFs
dWUoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVk
KSk7CiB9CiAKIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpmaXJlSW5zdGFs
bEV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCmluZGV4
IGIwMTE0ZDJmOGQ3NjExN2JkOTYwODk2NTk2MDkzZDQ1ODdhYTAxZWMuLmFlM2ExYTU2ODZmYWE1
YjdlZmY0NGRmODA1MzdlYWY3N2YxOGZlNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTg2LDcgKzg2LDcgQEAgcHJpdmF0ZToKIAog
ICAgIC8vIE1lc3NhZ2VzIHRvIHRoZSBTVyBob3N0IFdlYlByb2Nlc3MKICAgICB2b2lkIGluc3Rh
bGxTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVB
cHBCb3VuZFZhbHVlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpM
YXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUFwcEluaXRp
YXRlZFZhbHVlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpMYXN0
TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCkgZmluYWw7CiAgICAgdm9pZCBmaXJlSW5zdGFsbEV2
ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGZp
cmVBY3RpdmF0ZUV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsK
ICAgICB2b2lkIHRlcm1pbmF0ZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
cikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNw
cAppbmRleCBlMWJkZjY5ZDY1NDc1MDBlMmUzYjcwMzg2OGVlMTNmZDEwNzQ0NDY4Li5iYTY2OTQz
MWQwODIwNGRiZGM0MzNkODFlYzM4MjhlZDRkMDAwOWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgc3RhdGljIGlu
bGluZSBSZXNvdXJjZVJlcXVlc3QgY29uc3RydWN0UmV2YWxpZGF0aW9uUmVxdWVzdChjb25zdCBL
ZXkmIGtleSwgY29uc3QKICAgICByZXZhbGlkYXRpb25SZXF1ZXN0LnNldEZpcnN0UGFydHlGb3JD
b29raWVzKHN1YlJlc291cmNlSW5mby5maXJzdFBhcnR5Rm9yQ29va2llcygpKTsKICAgICByZXZh
bGlkYXRpb25SZXF1ZXN0LnNldElzU2FtZVNpdGUoc3ViUmVzb3VyY2VJbmZvLmlzU2FtZVNpdGUo
KSk7CiAgICAgcmV2YWxpZGF0aW9uUmVxdWVzdC5zZXRJc1RvcFNpdGUoc3ViUmVzb3VyY2VJbmZv
LmlzVG9wU2l0ZSgpKTsKLSAgICByZXZhbGlkYXRpb25SZXF1ZXN0LnNldElzQXBwQm91bmQoc3Vi
UmVzb3VyY2VJbmZvLmlzQXBwQm91bmQoKSk7CisgICAgcmV2YWxpZGF0aW9uUmVxdWVzdC5zZXRJ
c0FwcEluaXRpYXRlZChzdWJSZXNvdXJjZUluZm8uaXNBcHBJbml0aWF0ZWQoKSk7CiAKICAgICBp
ZiAoIWtleS5wYXJ0aXRpb24oKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldmFsaWRhdGlvblJlcXVl
c3Quc2V0Q2FjaGVQYXJ0aXRpb24oa2V5LnBhcnRpdGlvbigpKTsKQEAgLTM2OSw3ICszNjksNyBA
QCB2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnJlZ2lzdGVyTG9hZChjb25zdCBHbG9iYWxG
cmFtZUlEJiBmcmFtZUlELCBjb25zdCBSZQogICAgICAgICBtX3BlbmRpbmdGcmFtZUxvYWRzLmFk
ZChmcmFtZUlELCBwZW5kaW5nRnJhbWVMb2FkLmNvcHlSZWYoKSk7CiAKICAgICAgICAgLy8gUmV0
cmlldmUgdGhlIHN1YnJlc291cmNlcyBlbnRyeSBpZiBpdCBleGlzdHMgdG8gc3RhcnQgc3BlY3Vs
YXRpdmUgcmV2YWxpZGF0aW9uIGFuZCB0byB1cGRhdGUgaXQuCi0gICAgICAgIHJldHJpZXZlU3Vi
cmVzb3VyY2VzRW50cnkocmVzb3VyY2VLZXksIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KCp0aGlzKSwgZnJhbWVJRCwgcGVuZGluZ0ZyYW1lTG9hZCA9IFdURk1vdmUocGVuZGluZ0ZyYW1l
TG9hZCksIHJlcXVlc3RJc0FwcEJvdW5kID0gcmVxdWVzdC5pc0FwcEJvdW5kKCksIGlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW5dKHN0ZDo6dW5pcXVlX3B0cjxTdWJyZXNvdXJjZXNFbnRyeT4g
ZW50cnkpIHsKKyAgICAgICAgcmV0cmlldmVTdWJyZXNvdXJjZXNFbnRyeShyZXNvdXJjZUtleSwg
W3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBmcmFtZUlELCBwZW5kaW5nRnJh
bWVMb2FkID0gV1RGTW92ZShwZW5kaW5nRnJhbWVMb2FkKSwgcmVxdWVzdElzQXBwQm91bmQgPSBy
ZXF1ZXN0LmlzQXBwSW5pdGlhdGVkKCksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW5dKHN0
ZDo6dW5pcXVlX3B0cjxTdWJyZXNvdXJjZXNFbnRyeT4gZW50cnkpIHsKICAgICAgICAgICAgIGlm
ICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC01OTYsNyArNTk2LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpzdGFydFNwZWN1bGF0aXZlUmV2YWxpZGF0
aW9uKGNvbnN0IEdsb2JhbEZyYW1lSUQmIGYKIHsKICAgICBmb3IgKGF1dG8mIHN1YnJlc291cmNl
SW5mbyA6IGVudHJ5LnN1YnJlc291cmNlcygpKSB7CiAgICAgICAgIGF1dG8mIGtleSA9IHN1YnJl
c291cmNlSW5mby5rZXkoKTsKLSAgICAgICAgc3VicmVzb3VyY2VJbmZvLnNldElzQXBwQm91bmQo
cmVxdWVzdElzQXBwQm91bmQpOworICAgICAgICBzdWJyZXNvdXJjZUluZm8uc2V0SXNBcHBJbml0
aWF0ZWQocmVxdWVzdElzQXBwQm91bmQpOwogICAgICAgICBpZiAoIXN1YnJlc291cmNlSW5mby5p
c1RyYW5zaWVudCgpKQogICAgICAgICAgICAgcHJlbG9hZEVudHJ5KGtleSwgc3VicmVzb3VyY2VJ
bmZvLCBmcmFtZUlELCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKICAgICAgICAgZWxz
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmgKaW5kZXggNjBhNDA2M2IyMzQ1
ZDkyNWUyYzc4Nzg0NTk5MjBlMTBmMjc4MjMwZS4uNDBjOWIyMDE3ODhmODE4YTU3OGI4M2YxYWUz
NGI3ZmNmNWU0MTNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuaApAQCAt
NTksOCArNTksOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzRmlyc3RQYXJ0eSgpIGNvbnN0Owog
Ci0gICAgYm9vbCBpc0FwcEJvdW5kKCkgY29uc3QgeyByZXR1cm4gbV9pc0FwcEJvdW5kOyB9Ci0g
ICAgdm9pZCBzZXRJc0FwcEJvdW5kKGJvb2wgaXNBcHBCb3VuZCkgeyBtX2lzQXBwQm91bmQgPSBp
c0FwcEJvdW5kOyB9CisgICAgYm9vbCBpc0FwcEluaXRpYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNBcHBJbml0aWF0ZWQ7IH0KKyAgICB2b2lkIHNldElzQXBwSW5pdGlhdGVkKGJvb2wgaXNBcHBJ
bml0aWF0ZWQpIHsgbV9pc0FwcEluaXRpYXRlZCA9IGlzQXBwSW5pdGlhdGVkOyB9CiAKIHByaXZh
dGU6CiAgICAgS2V5IG1fa2V5OwpAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgogICAgIFdhbGxU
aW1lIG1fZmlyc3RTZWVuOwogICAgIGJvb2wgbV9pc1RyYW5zaWVudCB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtX2lzU2FtZVNpdGUgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9pc0FwcEJvdW5kIHsgZmFs
c2UgfTsKKyAgICBib29sIG1faXNBcHBJbml0aWF0ZWQgeyB0cnVlIH07CiAgICAgVVJMIG1fZmly
c3RQYXJ0eUZvckNvb2tpZXM7CiAgICAgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCBtX3JlcXVlc3RI
ZWFkZXJzOwogICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5IG1fcHJpb3JpdHk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRh
VGFza0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
RGF0YVRhc2tDb2NvYS5tbQppbmRleCBmNzRiMzEyOWZlNzJiYzlmY2U2MjM2MDYwNmQzYjM5YjA3
MTJjZjg5Li4zNjhkODczNTJlZjA0MjUzNThhNjI1Nzk4NjU3ZDY4MGQ2MmM0MTRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0Nv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0Rh
dGFUYXNrQ29jb2EubW0KQEAgLTM0MSw5ICszNDEsNyBAQCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6
TmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRh
VAogICAgIFJldGFpblB0cjxOU011dGFibGVVUkxSZXF1ZXN0PiBtdXRhYmxlUmVxdWVzdCA9IGFk
b3B0TlMoW25zUmVxdWVzdC5nZXQoKSBtdXRhYmxlQ29weV0pOwogCiAjaWYgRU5BQkxFKEFQUF9Q
UklWQUNZX1JFUE9SVCkKLSAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgot
ICAgIG11dGFibGVSZXF1ZXN0LmdldCgpLl9pc05vbkFwcEluaXRpYXRlZCA9ICFyZXF1ZXN0Lmlz
QXBwQm91bmQoKTsKLSAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKKyAgICBt
dXRhYmxlUmVxdWVzdC5nZXQoKS5hdHRyaWJ1dGlvbiA9IHJlcXVlc3QuaXNBcHBJbml0aWF0ZWQo
KSA/IE5TVVJMUmVxdWVzdEF0dHJpYnV0aW9uRGV2ZWxvcGVyIDogTlNVUkxSZXF1ZXN0QXR0cmli
dXRpb25Vc2VyOwogI2VuZGlmCiAKICAgICBpZiAocGFyYW1ldGVycy5wY21EYXRhQ2FycmllZCkK
QEAgLTM1MSw3ICszNDksNyBAQCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNr
Q29jb2EoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVAogCiAgICAgbnNSZXF1
ZXN0ID0gbXV0YWJsZVJlcXVlc3Q7CiAKLSAgICBtX3Nlc3Npb24tPmFwcEJvdW5kTmF2aWdhdGlv
blRlc3RpbmdEYXRhKCkudXBkYXRlQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEocmVxdWVz
dCwgcmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygpLmlzRW1wdHkoKSA/IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluKHJlcXVlc3QudXJsKCkpIDogV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4ocmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygpKSk7CisgICAgbV9zZXNzaW9uLT5hcHBQ
cml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoKS5kaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdChuc1Jl
cXVlc3QuZ2V0KCkuYXR0cmlidXRpb24gPT0gTlNVUkxSZXF1ZXN0QXR0cmlidXRpb25EZXZlbG9w
ZXIpOwogCiAgICAgYXBwbHlTbmlmZmluZ1BvbGljaWVzQW5kQmluZFJlcXVlc3RUb0luZmVyZmFj
ZUlmTmVlZGVkKG5zUmVxdWVzdCwgcGFyYW1ldGVycy5jb250ZW50U25pZmZpbmdQb2xpY3kgPT0g
V2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5OjpTbmlmZkNvbnRlbnQgJiYgIXVybC5pc0xv
Y2FsRmlsZSgpLCBwYXJhbWV0ZXJzLmNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5ID09IFdl
YkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5OjpTbmlmZik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDA0MzZiMDM2YTk5YTI4MTU3MmEw
ZTFlYzc1NTlmZjY0M2QzNGNkMTguLjY3Y2M2OGZhNzczYWI5YjU2MDZjMWJlMTJiMzNiOTBkNjEz
NDZmY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtNzAy
LDcgKzcwMiw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViQ29y
ZTo6SW5zcGVjdG9yT3ZlcmxheTo6SGlnaGxpZ2h0JzogWyc8V2ViQ29yZS9JbnNwZWN0b3JPdmVy
bGF5Lmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpLZXlmcmFtZVZhbHVlTGlzdCc6IFsnPFdlYkNv
cmUvR3JhcGhpY3NMYXllci5oPiddLAogICAgICAgICAnV2ViQ29yZTo6S2V5cHJlc3NDb21tYW5k
JzogWyc8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+J10sCi0gICAgICAgICdXZWJDb3JlOjpMYXN0
TmF2aWdhdGlvbldhc0FwcEJvdW5kJzogWyc8V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0
YS5oPiddLAorICAgICAgICAnV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQn
OiBbJzxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmg+J10sCiAgICAgICAgICdXZWJD
b3JlOjpMZWdhY3lDRE1TZXNzaW9uQ2xpZW50OjpNZWRpYUtleUVycm9yQ29kZSc6IFsnPFdlYkNv
cmUvTGVnYWN5Q0RNU2Vzc2lvbi5oPiddLAogICAgICAgICAnV2ViQ29yZTo6TG9ja0JhY2tGb3J3
YXJkTGlzdCc6IFsnPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPiddLAogICAgICAgICAnV2Vi
Q29yZTo6TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhhc0FjdGl2aXR5JzogWyc8V2ViQ29y
ZS9NZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oPiddLApAQCAtNzU3LDggKzc1Nyw4IEBAIGRl
ZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViQ29yZTo6V2lsbENvbnRpbnVl
TG9hZGluZyc6IFsnPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPiddLAogICAgICAgICAnV2Vi
Q29yZTo6U2VsZWN0aW9uR2VvbWV0cnknOiBbJyJFZGl0b3JTdGF0ZS5oIiddLAogICAgICAgICAn
V2ViS2l0OjpBY3Rpdml0eVN0YXRlQ2hhbmdlSUQnOiBbJyJEcmF3aW5nQXJlYUluZm8uaCInXSwK
LSAgICAgICAgJ1dlYktpdDo6QXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEnOiBbJyJOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oIiddLAogICAgICAgICAnV2ViS2l0OjpBbGxvd092ZXJ3
cml0ZSc6IFsnIkRvd25sb2FkSUQuaCInXSwKKyAgICAgICAgJ1dlYktpdDo6QXBwUHJpdmFjeVJl
cG9ydFRlc3RpbmdEYXRhJzogWyciQXBwUHJpdmFjeVJlcG9ydC5oIiddLAogICAgICAgICAnV2Vi
S2l0OjpCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUnOiBbJyJTZXNzaW9uU3RhdGUuaCInXSwKICAg
ICAgICAgJ1dlYktpdDo6Q2FsbERvd25sb2FkRGlkU3RhcnQnOiBbJyJEb3dubG9hZE1hbmFnZXIu
aCInXSwKICAgICAgICAgJ1dlYktpdDo6Q29udGVudFdvcmxkSWRlbnRpZmllcic6IFsnIkNvbnRl
bnRXb3JsZFNoYXJlZC5oIiddLApAQCAtNzY2LDcgKzc2Niw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90
eXBlKHR5cGUpOgogICAgICAgICAnV2ViS2l0OjpGaW5kT3B0aW9ucyc6IFsnIldlYkZpbmRPcHRp
b25zLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyU3RhdGUnOiBbJyJH
ZXN0dXJlVHlwZXMuaCInXSwKICAgICAgICAgJ1dlYktpdDo6R2VzdHVyZVR5cGUnOiBbJyJHZXN0
dXJlVHlwZXMuaCInXSwKLSAgICAgICAgJ1dlYktpdDo6TGFzdE5hdmlnYXRpb25XYXNBcHBCb3Vu
ZCc6IFsnIk5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmgiJ10sCisgICAgICAgICdXZWJLaXQ6
Okxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkJzogWyciQXBwUHJpdmFjeVJlcG9ydC5oIidd
LAogICAgICAgICAnV2ViS2l0OjpMYXllckhvc3RpbmdDb250ZXh0SUQnOiBbJyJMYXllckhvc3Rp
bmdDb250ZXh0LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkxheWVySG9zdGluZ01vZGUnOiBbJyJM
YXllclRyZWVDb250ZXh0LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OlBhZ2VTdGF0ZSc6IFsnIlNl
c3Npb25TdGF0ZS5oIiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwUHJp
dmFjeVJlcG9ydC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwUHJpdmFjeVJlcG9ydC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE4MDVmNDEyMDE4MmI0ZTZhYTUwZWU3MmIwNzcwZDNlN2ZkMjE4N2QKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBQcml2YWN5UmVwb3J0LmgKQEAg
LTAsMCArMSw5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXJn
dW1lbnRDb2Rlci5oIgorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiRGVj
b2Rlci5oIgorI2luY2x1ZGUgIkVuY29kZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
UmVxdWVzdC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBjbGFzcyBMYXN0TmF2aWdh
dGlvbldhc0FwcEluaXRpYXRlZCA6IGJvb2wgeyBObywgWWVzIH07CisKKyNpZiBQTEFURk9STShD
T0NPQSkKK3N0cnVjdCBBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEgeworCisgICAgdm9pZCBz
ZXREaWRQZXJmb3JtU29mdFVwZGF0ZSgpCisgICAgeworICAgICAgICBkaWRQZXJmb3JtU29mdFVw
ZGF0ZSA9IHRydWU7CisgICAgfQorCisgICAgdm9pZCBjbGVhckFwcFByaXZhY3lSZXBvcnRUZXN0
aW5nRGF0YSgpCisgICAgeworICAgICAgICBoYXNMb2FkZWRBcHBJbml0aWF0ZWRSZXF1ZXN0VGVz
dGluZyA9IGZhbHNlOworICAgICAgICBoYXNMb2FkZWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0VGVz
dGluZyA9IGZhbHNlOworICAgICAgICBkaWRQZXJmb3JtU29mdFVwZGF0ZSA9IGZhbHNlOworICAg
IH0KKworICAgIHZvaWQgZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3QoYm9vbCBpc0FwcEluaXRp
YXRlZCkKKyAgICB7CisgICAgICAgIGlzQXBwSW5pdGlhdGVkID8gaGFzTG9hZGVkQXBwSW5pdGlh
dGVkUmVxdWVzdFRlc3RpbmcgPSB0cnVlIDogaGFzTG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVz
dFRlc3RpbmcgPSB0cnVlOworICAgIH0KKworICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgaGFzTG9hZGVkQXBwSW5p
dGlhdGVkUmVxdWVzdFRlc3Rpbmc7CisgICAgICAgIGVuY29kZXIgPDwgaGFzTG9hZGVkTm9uQXBw
SW5pdGlhdGVkUmVxdWVzdFRlc3Rpbmc7CisgICAgICAgIGVuY29kZXIgPDwgZGlkUGVyZm9ybVNv
ZnRVcGRhdGU7CisgICAgfQorCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXBwUHJpdmFjeVJl
cG9ydFRlc3RpbmdEYXRhPiBkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBoYXNMb2FkZWRBcHBJbml0aWF0ZWRSZXF1ZXN0VGVz
dGluZzsKKyAgICAgICAgZGVjb2RlciA+PiBoYXNMb2FkZWRBcHBJbml0aWF0ZWRSZXF1ZXN0VGVz
dGluZzsKKyAgICAgICAgaWYgKCFoYXNMb2FkZWRBcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZykK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxib29sPiBoYXNMb2FkZWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZzsKKyAgICAgICAg
ZGVjb2RlciA+PiBoYXNMb2FkZWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZzsKKyAgICAg
ICAgaWYgKCFoYXNMb2FkZWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZykKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBk
aWRQZXJmb3JtU29mdFVwZGF0ZTsKKyAgICAgICAgZGVjb2RlciA+PiBkaWRQZXJmb3JtU29mdFVw
ZGF0ZTsKKyAgICAgICAgaWYgKCFkaWRQZXJmb3JtU29mdFVwZGF0ZSkKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJuIHt7ICpoYXNMb2FkZWRBcHBJbml0
aWF0ZWRSZXF1ZXN0VGVzdGluZywgKmhhc0xvYWRlZE5vbkFwcEluaXRpYXRlZFJlcXVlc3RUZXN0
aW5nLCAqZGlkUGVyZm9ybVNvZnRVcGRhdGUgfX07CisgICAgfQorCisgICAgYm9vbCBoYXNMb2Fk
ZWRBcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZyB7IGZhbHNlIH07CisgICAgYm9vbCBoYXNMb2Fk
ZWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZyB7IGZhbHNlIH07CisgICAgYm9vbCBkaWRQ
ZXJmb3JtU29mdFVwZGF0ZSB7IGZhbHNlIH07Cit9OworI2VuZGlmCisKK30KKwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhLmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zN2Q4YmZjNThhMzcxZmMyZGQ5NDAzNzYxYmJmZDFlZWY0MTFmYjA1Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRh
LmgKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiQXJndW1lbnRDb2Rlci5oIgorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVk
ZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUgIkVuY29kZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Jl
Z2lzdHJhYmxlRG9tYWluLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gY2xhc3MgTGFzdE5hdmlnYXRpb25XYXNBcHBJ
bml0aWF0ZWQgOiBib29sIHsgTm8sIFllcyB9OworCisjaWYgUExBVEZPUk0oQ09DT0EpCitzdHJ1
Y3QgQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhIHsKKworICAgIHZvaWQgc2V0RGlkUGVyZm9y
bVNvZnRVcGRhdGUoKQorICAgIHsKKyAgICAgICAgZGlkUGVyZm9ybVNvZnRVcGRhdGUgPSB0cnVl
OworICAgIH0KKworICAgIHZvaWQgY2xlYXJBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoKQor
ICAgIHsKKyAgICAgICAgaGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcgPSBmYWxz
ZTsKKyAgICAgICAgaGFzTG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcgPSBmYWxz
ZTsKKyAgICAgICAgZGlkUGVyZm9ybVNvZnRVcGRhdGUgPSBmYWxzZTsKKyAgICB9CisKKyAgICB2
b2lkIGRpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0KGJvb2wgaXNBcHBJbml0aWF0ZWQpCisgICAg
eworICAgICAgICBpc0FwcEluaXRpYXRlZCA/IGhhc0xvYWRlZEFwcEluaXRpYXRlZFJlcXVlc3RU
ZXN0aW5nID0gdHJ1ZSA6IGhhc0xvYWRlZE5vbkFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nID0g
dHJ1ZTsKKyAgICB9CisKKyAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNv
bnN0CisgICAgeworICAgICAgICBlbmNvZGVyIDw8IGhhc0xvYWRlZEFwcEluaXRpYXRlZFJlcXVl
c3RUZXN0aW5nOworICAgICAgICBlbmNvZGVyIDw8IGhhc0xvYWRlZE5vbkFwcEluaXRpYXRlZFJl
cXVlc3RUZXN0aW5nOworICAgICAgICBlbmNvZGVyIDw8IGRpZFBlcmZvcm1Tb2Z0VXBkYXRlOwor
ICAgIH0KKworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEFwcFByaXZhY3lSZXBvcnRUZXN0aW5n
RGF0YT4gZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8Ym9vbD4gaGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3Rpbmc7CisgICAg
ICAgIGRlY29kZXIgPj4gaGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3Rpbmc7CisgICAg
ICAgIGlmICghaGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcpCisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaGFz
TG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3Rpbmc7CisgICAgICAgIGRlY29kZXIgPj4g
aGFzTG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3Rpbmc7CisgICAgICAgIGlmICghaGFz
TG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcpCisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZGlkUGVyZm9ybVNv
ZnRVcGRhdGU7CisgICAgICAgIGRlY29kZXIgPj4gZGlkUGVyZm9ybVNvZnRVcGRhdGU7CisgICAg
ICAgIGlmICghZGlkUGVyZm9ybVNvZnRVcGRhdGUpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworCisgICAgICAgIHJldHVybiB7eyAqaGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVz
dFRlc3RpbmcsICpoYXNMb2FkZWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZywgKmRpZFBl
cmZvcm1Tb2Z0VXBkYXRlIH19OworICAgIH0KKworICAgIGJvb2wgaGFzTG9hZGVkQXBwSW5pdGlh
dGVkUmVxdWVzdFRlc3RpbmcgeyBmYWxzZSB9OworICAgIGJvb2wgaGFzTG9hZGVkTm9uQXBwSW5p
dGlhdGVkUmVxdWVzdFRlc3RpbmcgeyBmYWxzZSB9OworICAgIGJvb2wgZGlkUGVyZm9ybVNvZnRV
cGRhdGUgeyBmYWxzZSB9OworfTsKKyNlbmRpZgorCit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KaW5kZXgg
OTkzNGI2MTFiNTliY2VhMTZlMWQ5Njg2Y2M0NjE0M2M4MzI0YjUxMC4uYWJkZmIzOTJmMWE3ZTg1
MThhMWIzN2ExMDdiOThiYzhiNWNiM2IyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KQEAgLTYxMCw3ICs2
MTAsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5j
b2RlUGxhdGZvcm1EYXRhKEVuY29kZXImIGVuY29kZQogICAgIElQQzo6ZW5jb2RlKGVuY29kZXIs
IHJlcXVlc3RUb1NlcmlhbGl6ZS5nZXQoKSk7CiAKICAgICBlbmNvZGVyIDw8IHJlc291cmNlUmVx
dWVzdC5yZXF1ZXN0ZXIoKTsKLSAgICBlbmNvZGVyIDw8IHJlc291cmNlUmVxdWVzdC5pc0FwcEJv
dW5kKCk7CisgICAgZW5jb2RlciA8PCByZXNvdXJjZVJlcXVlc3QuaXNBcHBJbml0aWF0ZWQoKTsK
IH0KIAogYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD46OmRlY29k
ZVBsYXRmb3JtRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlc291cmNlUmVxdWVzdCkKQEAgLTYzMiwxMyArNjMyLDEzIEBAIGJvb2wgQXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYg
ZGVjb2RlCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXF1ZXN0ZXIpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBib29sIGlzQXBwQm91bmQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShpc0FwcEJvdW5kKSkKKyAgICBib29sIGlzQXBwSW5pdGlhdGVkOworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoaXNBcHBJbml0aWF0ZWQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBy
ZXNvdXJjZVJlcXVlc3QgPSBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QocmVxdWVzdC0+Z2V0KCkp
OwogICAgIHJlc291cmNlUmVxdWVzdC5zZXRSZXF1ZXN0ZXIocmVxdWVzdGVyKTsKLSAgICByZXNv
dXJjZVJlcXVlc3Quc2V0SXNBcHBCb3VuZChpc0FwcEJvdW5kKTsKKyAgICByZXNvdXJjZVJlcXVl
c3Quc2V0SXNBcHBJbml0aWF0ZWQoaXNBcHBJbml0aWF0ZWQpOwogCiAgICAgcmV0dXJuIHRydWU7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbi5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4uaAppbmRleCBlMzRhYzVlNTdmNDExZThhNmQzMDAyYTU2OWEwMzE4MDdjY2Y0NDAwLi40MjMy
ZTBjZTIzYjQyNWE5YWMzZTI5ZDI5NDQwYWMyY2I0ODUxNjUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9OYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmgKQEAgLTM1LDcyICszNSw2
IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogZW51bSBjbGFzcyBOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbiA6IGJvb2wgeyBObywgWWVzIH07Ci1lbnVtIGNsYXNzIExhc3ROYXZpZ2F0aW9uV2Fz
QXBwQm91bmQgOiBib29sIHsgTm8sIFllcyB9OwotCi11c2luZyBDb250ZXh0RG9tYWluID0gV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW47Ci11c2luZyBSZXF1ZXN0RG9tYWluID0gV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW47Ci0KLSNpZiBQTEFURk9STShDT0NPQSkKLXN0cnVjdCBBcHBCb3Vu
ZE5hdmlnYXRpb25UZXN0aW5nRGF0YSB7Ci0KLSAgICB2b2lkIHNldERpZFBlcmZvcm1Tb2Z0VXBk
YXRlKCkKLSAgICB7Ci0gICAgICAgIGRpZFBlcmZvcm1Tb2Z0VXBkYXRlID0gdHJ1ZTsKLSAgICB9
Ci0gICAgCi0gICAgdm9pZCBjbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGFUZXN0aW5nKCkKLSAg
ICB7Ci0gICAgICAgIGhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcgPSBmYWxzZTsKLSAg
ICAgICAgaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZyA9IGZhbHNlOwotICAgICAg
ICBkaWRQZXJmb3JtU29mdFVwZGF0ZSA9IGZhbHNlOwotICAgICAgICBjb250ZXh0RGF0YS5jbGVh
cigpOwotICAgIH0KLQotICAgIHZvaWQgdXBkYXRlQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0Rh
dGEoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiYmIGNvbnRleHREb21haW4pCi0gICAgewotICAgICAgICByZXF1ZXN0Lmlz
QXBwQm91bmQoKSA/IGhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcgPSB0cnVlIDogaGFz
TG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZyA9IHRydWU7Ci0gICAgICAgIGNvbnRleHRE
YXRhLmFkZChXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbihyZXF1ZXN0LnVybCgpKSwgY29udGV4
dERvbWFpbik7Ci0gICAgfQotCi0gICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAotICAgIHsKLSAgICAgICAgZW5jb2RlciA8PCBoYXNMb2FkZWRBcHBCb3VuZFJlcXVl
c3RUZXN0aW5nOwotICAgICAgICBlbmNvZGVyIDw8IGhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVz
dFRlc3Rpbmc7Ci0gICAgICAgIGVuY29kZXIgPDwgZGlkUGVyZm9ybVNvZnRVcGRhdGU7Ci0gICAg
ICAgIGVuY29kZXIgPDwgY29udGV4dERhdGE7Ci0gICAgfQotCi0gICAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8QXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGE+IGRlY29kZShJUEM6OkRlY29kZXIm
IGRlY29kZXIpCi0gICAgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGhhc0xvYWRlZEFw
cEJvdW5kUmVxdWVzdFRlc3Rpbmc7Ci0gICAgICAgIGRlY29kZXIgPj4gaGFzTG9hZGVkQXBwQm91
bmRSZXF1ZXN0VGVzdGluZzsKLSAgICAgICAgaWYgKCFoYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RU
ZXN0aW5nKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGQ6
Om9wdGlvbmFsPGJvb2w+IGhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3Rpbmc7Ci0gICAg
ICAgIGRlY29kZXIgPj4gaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZzsKLSAgICAg
ICAgaWYgKCFoYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nKQotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgCi0gICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gZGlkUGVyZm9ybVNvZnRVcGRhdGU7Ci0gICAgICAgIGRlY29kZXIgPj4gZGlkUGVyZm9ybVNv
ZnRVcGRhdGU7Ci0gICAgICAgIGlmICghZGlkUGVyZm9ybVNvZnRVcGRhdGUpCi0gICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0ZDo6b3B0aW9uYWw8SGFzaE1hcDxS
ZXF1ZXN0RG9tYWluLCBDb250ZXh0RG9tYWluPj4gY29udGV4dERhdGE7Ci0gICAgICAgIGRlY29k
ZXIgPj4gY29udGV4dERhdGE7Ci0gICAgICAgIGlmICghY29udGV4dERhdGEpCi0gICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHJldHVybiB7eyAqaGFzTG9hZGVkQXBw
Qm91bmRSZXF1ZXN0VGVzdGluZywgKmhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3Rpbmcs
ICpkaWRQZXJmb3JtU29mdFVwZGF0ZSwgV1RGTW92ZSgqY29udGV4dERhdGEpIH19OwotICAgIH0K
LQotICAgIGJvb2wgaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZyB7IGZhbHNlIH07Ci0g
ICAgYm9vbCBoYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nIHsgZmFsc2UgfTsKLSAg
ICBib29sIGRpZFBlcmZvcm1Tb2Z0VXBkYXRlIHsgZmFsc2UgfTsKLSAgICBIYXNoTWFwPFJlcXVl
c3REb21haW4sIENvbnRleHREb21haW4+IGNvbnRleHREYXRhOwotfTsKLSNlbmRpZgogCiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5j
cHAKaW5kZXggNmEyNTIzMWY2ZmMyNThjMWUzOGFhMDVjZTEyYWE0NDRmZDcwOTZjOC4uMmJhZWYw
NmNhY2FiM2U1MTVlNzA0NmQ1MTdhNTM1NmJmMDNjM2MzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTE3Myw3ICsxNzMs
NyBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIGVuY29k
ZXIgPDwgbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWluczsKICNlbmRpZgotICAgIGVu
Y29kZXIgPDwgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDsKKyAgICBlbmNvZGVyIDw8IGxhc3RO
YXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOwogICAgIGVuY29kZXIgPDwgc2hvdWxkUmVsYXhUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmc7CiAgICAgZW5jb2RlciA8PCBjYW5Vc2VDcmVkZW50aWFsU3Rv
cmFnZTsKIApAQCAtNTgxLDcgKzU4MSw3IEBAIHN0ZDo6b3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmxpbWl0c05hdmlnYXRpb25zVG9BcHBCb3Vu
ZERvbWFpbnMpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2VuZGlmCi0gICAgaWYg
KCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpKQor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5sYXN0TmF2aWdhdGlvbldhc0FwcElu
aXRpYXRlZCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5o
CmluZGV4IGM1OGU2YzIyMGIxYTAzNzY2YWFlNTQ4NDcyZjE2Yjc4M2UwNDAyYWMuLjY1MTc4OTIy
MTJjMjM5OWUxYWFjMzZlYTZiNmZjM2IxNTJmZDU4OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTI0Miw3ICsyNDIsNyBAQCBz
dHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAjaWYgRU5BQkxFKEFQUF9CT1VORF9E
T01BSU5TKQogICAgIGJvb2wgbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyB7IGZh
bHNlIH07CiAjZW5kaWYKLSAgICBib29sIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgeyBmYWxz
ZSB9OworICAgIGJvb2wgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgeyB0cnVlIH07CiAg
ICAgYm9vbCBjYW5Vc2VDcmVkZW50aWFsU3RvcmFnZSB7IHRydWUgfTsKIAogICAgIFdlYkNvcmU6
OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nIHsgV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmc6Ok5vIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbQppbmRleCAzZTc2YjZhMDUxOTg1NTU2NDEyMWY3NDk3YzcxMWVhODgxY2JlNzliLi4x
NDE4ZTNkNTM5MjU3MjY2NWJhM2FhOTcxOTZlNGNjODk0MDY1MzU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTI0MTEsMzIgKzI0MTEs
MTkgQEAgc3RhdGljIHZvaWQgY29udmVydEFuZEFkZEhpZ2hsaWdodChWZWN0b3I8UmVmPFdlYktp
dDo6U2hhcmVkTWVtb3J5Pj4mIGJ1ZmZlcnMsIE4KICAgICAgICAgX3BhZ2UtPnN3aXRjaEZyb21T
dGF0aWNGb250UmVnaXN0cnlUb1VzZXJGb250UmVnaXN0cnkoKTsKIH0KIAotLSAodm9pZClfYXBw
Qm91bmROYXZpZ2F0aW9uRGF0YUZvckRvbWFpbjooTlNTdHJpbmcgKilkb21haW4gY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKE5TU3RyaW5nICogY29udGV4dCkpY29tcGxldGlvbkhhbmRsZXIK
Ky0gKHZvaWQpX2RpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0Oih2b2lkICheKShCT09MIHJlc3Vs
dCkpY29tcGxldGlvbkhhbmRsZXIKIHsKICAgICBUSFJPV19JRl9TVVNQRU5ERUQ7Ci0gICAgX3Bh
Z2UtPmFwcEJvdW5kTmF2aWdhdGlvbkRhdGEoW3JlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KGRvbWFpbiksIGNvbXBs
ZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8mJiBh
cHBCb3VuZERhdGEpIG11dGFibGUgewotICAgICAgICBpZiAoIWFwcEJvdW5kRGF0YS5jb250ZXh0
RGF0YS5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpIHsKLSAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKG5pbCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihhcHBCb3VuZERhdGEuY29udGV4dERhdGEuZ2V0KHJlZ2lzdHJh
YmxlRG9tYWluKS5zdHJpbmcoKSk7Ci0gICAgfSk7Ci19Ci0KLS0gKHZvaWQpX2RpZExvYWRBcHBC
b3VuZFJlcXVlc3Q6KHZvaWQgKF4pKEJPT0wgcmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcgotewot
ICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKLSAgICBfcGFnZS0+YXBwQm91bmROYXZpZ2F0aW9uRGF0
YShbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAo
YXV0byYmIGFwcEJvdW5kRGF0YSkgbXV0YWJsZSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KGFwcEJvdW5kRGF0YS5oYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nKTsKKyAgICBfcGFn
ZS0+YXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VC
bG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChhdXRvJiYgYXBwUHJpdmFjeVJlcG9ydFRlc3Rp
bmdEYXRhKSBtdXRhYmxlIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXBwUHJpdmFjeVJl
cG9ydFRlc3RpbmdEYXRhLmhhc0xvYWRlZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nKTsKICAg
ICB9KTsKIH0KIAotLSAodm9pZClfZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdDoodm9pZCAoXiko
Qk9PTCByZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyCistICh2b2lkKV9kaWRMb2FkTm9uQXBwSW5p
dGlhdGVkUmVxdWVzdDoodm9pZCAoXikoQk9PTCByZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyCiB7
CiAgICAgVEhST1dfSUZfU1VTUEVOREVEOwotICAgIF9wYWdlLT5hcHBCb3VuZE5hdmlnYXRpb25E
YXRhKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcild
IChhdXRvJiYgYXBwQm91bmREYXRhKSBtdXRhYmxlIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoYXBwQm91bmREYXRhLmhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3RpbmcpOworICAg
IF9wYWdlLT5hcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoW2NvbXBsZXRpb25IYW5kbGVyID0g
bWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8mJiBhcHBQcml2YWN5UmVwb3J0
VGVzdGluZ0RhdGEpIG11dGFibGUgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhcHBQcml2
YWN5UmVwb3J0VGVzdGluZ0RhdGEuaGFzTG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3Rp
bmcpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCAyZTNlOTQ2ZmY3MDQ2MGYyNjYzYTY4MTUy
ODVkNjc5YTUxYzZiOTM1Li5lMmVlYzY2YzJhYWY3YWRkMjMwOTJiY2JlNDY2ZDVjODFlMWExYjk4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdQcml2YXRlLmgKQEAgLTQwNiw5ICs0MDYsOCBAQCBmb3IgdGhpcyBwcm9wZXJ0eS4KICovCiAt
ICh2b2lkKV9zd2l0Y2hGcm9tU3RhdGljRm9udFJlZ2lzdHJ5VG9Vc2VyRm9udFJlZ2lzdHJ5IFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCkpOwogCi0tICh2b2lkKV9hcHBCb3VuZE5hdmlnYXRp
b25EYXRhRm9yRG9tYWluOihOU1N0cmluZyAqKWRvbWFpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikoTlNTdHJpbmcgKiBjb250ZXh0KSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxB
QkxFKG1hY29zKDEyLjApLCBpb3MoMTUuMCkpOwotLSAodm9pZClfZGlkTG9hZEFwcEJvdW5kUmVx
dWVzdDoodm9pZCAoXikoQk9PTCByZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyOwotLSAodm9pZClf
ZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdDoodm9pZCAoXikoQk9PTCByZXN1bHQpKWNvbXBsZXRp
b25IYW5kbGVyOworLSAodm9pZClfZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3Q6KHZvaWQgKF4p
KEJPT0wgcmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpX2RpZExvYWROb25BcHBJ
bml0aWF0ZWRSZXF1ZXN0Oih2b2lkICheKShCT09MIHJlc3VsdCkpY29tcGxldGlvbkhhbmRsZXI7
CiAKIC0gKHZvaWQpX3N1c3BlbmRQYWdlOih2b2lkICheKShCT09MKSljb21wbGV0aW9uSGFuZGxl
ciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEyLjApLCBpb3MoMTUuMCkpOwogLSAodm9pZClfcmVz
dW1lUGFnZToodm9pZCAoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcygxMi4wKSwgaW9zKDE1LjApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmgKaW5k
ZXggYzMwNWZhZjQzZDQ1MTc0NGQyMjcxNTczZWZlOTk4NDQxNTY0ZWJhOC4uNDA4NzQ4NDY2ZWVi
YzlkMjYyOThjNWU0MjI4YWY0Y2Q4YmU2NzJmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5n
LmgKQEAgLTM0LDkgKzM0LDkgQEAgdHlwZWRlZiBlbnVtIHsKICAgICBXS1dlYlZpZXdBdWRpb1Jv
dXRpbmdBcmJpdHJhdGlvblN0YXR1c0FjdGl2ZSwKIH0gV0tXZWJWaWV3QXVkaW9Sb3V0aW5nQXJi
aXRyYXRpb25TdGF0dXM7CiAKLXN0cnVjdCBXS0FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRh
IHsKLSAgICBCT09MIGhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3Rpbmc7Ci0gICAgQk9PTCBo
YXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nOworc3RydWN0IFdLQXBwUHJpdmFjeVJl
cG9ydFRlc3RpbmdEYXRhIHsKKyAgICBCT09MIGhhc0xvYWRlZEFwcEluaXRpYXRlZFJlcXVlc3RU
ZXN0aW5nOworICAgIEJPT0wgaGFzTG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3Rpbmc7
CiAgICAgQk9PTCBkaWRQZXJmb3JtU29mdFVwZGF0ZTsKIH07CiAKQEAgLTEwMiw5ICsxMDIsOSBA
QCBzdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSB7CiAtICh2b2lkKV9zZXRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0
aW5nOihOU1VSTCAqKXVybCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKSh2b2lkKSljb21wbGV0
aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEyLjApLCBpb3MoMTUuMCkpOwogLSAo
dm9pZClfc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRva2VuU2lnbmF0dXJl
VVJMRm9yVGVzdGluZzooTlNVUkwgKil1cmwgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikodm9p
ZCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMi4wKSwgaW9zKDE1
LjApKTsKIAotLSAodm9pZClfbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDoodm9pZCheKShCT09M
KSljb21wbGV0aW9uSGFuZGxlcjsKLS0gKHZvaWQpX2FwcEJvdW5kTmF2aWdhdGlvbkRhdGE6KHZv
aWQoXikoc3RydWN0IFdLQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEgZGF0YSkpY29tcGxl
dGlvbkhhbmRsZXI7Ci0tICh2b2lkKV9jbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGE6KHZvaWQo
Xikodm9pZCkpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKV9sYXN0TmF2aWdhdGlvbldhc0Fw
cEluaXRpYXRlZDoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpX2Fw
cFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YToodm9pZCheKShzdHJ1Y3QgV0tBcHBQcml2YWN5UmVw
b3J0VGVzdGluZ0RhdGEgZGF0YSkpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKV9jbGVhckFw
cFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YToodm9pZCheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxl
cjsKIAogLSAodm9pZClfY3JlYXRlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JGb3JUZXN0aW5nOihp
ZCA8X1dLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I+KXByaXZhdGVDb29yZGluYXRvciBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1Rlc3RpbmcubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVzdGluZy5tbQpp
bmRleCBhNGJjNjFhMmJmNzdlMWYxZGQ4ZGFkYWQ2NDJmZTBiZDM4MTFhY2NkLi5jYmFkMGVkODgz
YWJkNmE1OGFlZDJiZThjOTRjZTBlYmIxNzUxZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVzdGluZy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVzdGluZy5tbQpAQCAtMzY1LDIzICsz
NjUsMjMgQEAKICNlbmRpZgogfQogCi0tICh2b2lkKV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5k
Oih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCistICh2b2lkKV9sYXN0TmF2aWdhdGlv
bldhc0FwcEluaXRpYXRlZDoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgogewotICAg
IF9wYWdlLT5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKFtjb21wbGV0aW9uSGFuZGxlciA9IG1h
a2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChib29sIGlzQXBwQm91bmQpIHsKLSAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoaXNBcHBCb3VuZCk7CisgICAgX3BhZ2UtPmxhc3ROYXZpZ2F0
aW9uV2FzQXBwSW5pdGlhdGVkKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21w
bGV0aW9uSGFuZGxlcildIChib29sIGlzQXBwSW5pdGlhdGVkKSB7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKGlzQXBwSW5pdGlhdGVkKTsKICAgICB9KTsKIH0KIAotLSAodm9pZClfYXBwQm91
bmROYXZpZ2F0aW9uRGF0YToodm9pZCheKShzdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0
aW5nRGF0YSBkYXRhKSljb21wbGV0aW9uSGFuZGxlcgorLSAodm9pZClfYXBwUHJpdmFjeVJlcG9y
dFRlc3RpbmdEYXRhOih2b2lkKF4pKHN0cnVjdCBXS0FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0
YSBkYXRhKSljb21wbGV0aW9uSGFuZGxlcgogewotICAgIF9wYWdlLT5hcHBCb3VuZE5hdmlnYXRp
b25EYXRhKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxl
cildIChhdXRvJiYgYXBwQm91bmREYXRhKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsg
YXBwQm91bmREYXRhLmhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcsIGFwcEJvdW5kRGF0
YS5oYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nLCBhcHBCb3VuZERhdGEuZGlkUGVy
Zm9ybVNvZnRVcGRhdGUgfSk7CisgICAgX3BhZ2UtPmFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0
YShbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAo
YXV0byYmIGFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSkgeworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcih7IGFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YS5oYXNMb2FkZWRBcHBJbml0aWF0
ZWRSZXF1ZXN0VGVzdGluZywgYXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhLmhhc0xvYWRlZE5v
bkFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nLCBhcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEu
ZGlkUGVyZm9ybVNvZnRVcGRhdGUgfSk7CiAgICAgfSk7CiB9CiAKLS0gKHZvaWQpX2NsZWFyQXBw
Qm91bmROYXZpZ2F0aW9uRGF0YToodm9pZCheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgorLSAo
dm9pZClfY2xlYXJBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGE6KHZvaWQoXikodm9pZCkpY29t
cGxldGlvbkhhbmRsZXIKIHsKLSAgICBfcGFnZS0+Y2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRh
KFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIHsK
KyAgICBfcGFnZS0+Y2xlYXJBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoW2NvbXBsZXRpb25I
YW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gewogICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcigpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQppbmRleCBmOWIyNzY1Mzk4ZjdmZmYzMTQ3
YzViZDBhOWMyZGQyNGFlZWRhMTJiLi5hZWY1Y2ZjZmIzYjlhOWY0MDQzYThkNTc4ODg2MjBhOTI3
MTZjMGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdl
UHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdl
UHJveHlDb2NvYS5tbQpAQCAtNjUwLDIwICs2NTAsMTggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJl
cXVlc3RBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm8oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b28KICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RBY3Rp
dmVOb3dQbGF5aW5nU2Vzc2lvbkluZm8oKSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCi12b2lk
IFdlYlBhZ2VQcm94eTo6c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZChSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBJ
bml0aWF0ZWQoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogI2lmIEVOQUJMRShBUFBfUFJJ
VkFDWV9SRVBPUlQpCi0gICAgYXV0byAqbnNSZXF1ZXN0ID0gcmVxdWVzdC5uc1VSTFJlcXVlc3Qo
V2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90VXBkYXRlSFRUUEJvZHkpOwotICAg
IEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgcmVxdWVzdC5zZXRJc0Fw
cEJvdW5kKCFuc1JlcXVlc3QuX2lzTm9uQXBwSW5pdGlhdGVkKTsKLSAgICBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19FTkQKKyAgICBhdXRvIGlzQXBwSW5pdGlhdGVkID0gcmVxdWVzdC5u
c1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90VXBkYXRlSFRU
UEJvZHkpLmF0dHJpYnV0aW9uID09IE5TVVJMUmVxdWVzdEF0dHJpYnV0aW9uRGV2ZWxvcGVyOwor
ICAgIHJlcXVlc3Quc2V0SXNBcHBJbml0aWF0ZWQoaXNBcHBJbml0aWF0ZWQpOworICAgIG1fbGFz
dE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgPSBpc0FwcEluaXRpYXRlZDsKICNlbmRpZgotICAg
IG1fbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCA9IHJlcXVlc3QuaXNBcHBCb3VuZCgpOwogfQog
Ci12b2lkIFdlYlBhZ2VQcm94eTo6bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZChDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdlUHJv
eHk6Omxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpXZWJQYWdlOjpMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKCksIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBh
Z2U6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKCksIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdyYW50QWNjZXNzVG9Bc3NldFNlcnZp
Y2VzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDcyYzRhOWY5YTdlNWQyZGI1OWQzODU3MzJjOTI1NmY5
OTU2YmQ0NDMuLjk1OGMxYjgzYjY4ZjU0YjY1MzBiOWEyOGQ4OTEyYTVjZDhiMTEwYjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcApAQCAtMTUwMiwxMSArMTUwMiwxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OmdldExvY2FsU3RvcmFnZURldGFpbHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21w
bAogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkdldExv
Y2FsU3RvcmFnZU9yaWdpbkRldGFpbHMoc2Vzc2lvbklEKSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnByZWNvbm5lY3RUbyhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5
SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgdXNlckFnZW50LCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBz
dG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgTGFzdE5hdmlnYXRpb25XYXNB
cHBCb3VuZCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKQordm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdl
SUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgV2ViQ29yZTo6U3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHN0ZDo6b3B0aW9u
YWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4sIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5p
dGlhdGVkKQogewogICAgIGlmICghdXJsLmlzVmFsaWQoKSB8fCAhdXJsLnByb3RvY29sSXNJbkhU
VFBGYW1pbHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQ
cm9jZXNzOjpQcmVjb25uZWN0VG8oc2Vzc2lvbklELCB3ZWJQYWdlUHJveHlJRCwgd2ViUGFnZUlE
LCB1cmwsIHVzZXJBZ2VudCwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4sIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpLCAwKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UHJlY29ubmVjdFRvKHNlc3Npb25JRCwgd2ViUGFn
ZVByb3h5SUQsIHdlYlBhZ2VJRCwgdXJsLCB1c2VyQWdlbnQsIHN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5LCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBsYXN0TmF2aWdhdGlvbldhc0FwcElu
aXRpYXRlZCksIDApOwogfQogCiBzdGF0aWMgYm9vbCBhbnlQcm9jZXNzUG9vbEhhc0ZvcmVncm91
bmRXZWJQcm9jZXNzZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA4Y2ZlNTNiYjQ5NGY4Y2NjZjRhNzM2NGU4
OWU0ZmVhMDNjYzA1MTAzLi5iMDFhYWYyNzM1NDEwNmYyOWE0ZGRiOTVkMGMxMGRjMjQ5YTM3NWZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1
ZGUgIkFwcFByaXZhY3lSZXBvcnQuaCIKICNpbmNsdWRlICJBdXhpbGlhcnlQcm9jZXNzUHJveHku
aCIKICNpbmNsdWRlICJDYWxsYmFja0lELmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94
eU1lc3NhZ2VzUmVwbGllcy5oIgpAQCAtMTI4LDcgKzEyOSw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgZ2V0TG9jYWxTdG9yYWdlRGV0YWlscyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxz
PiYmKT4mJik7CiAKLSAgICB2b2lkIHByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCwgV2ViUGFn
ZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFVSTCYsIGNv
bnN0IFN0cmluZyYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzdGQ6Om9wdGlv
bmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgTGFzdE5hdmlnYXRpb25XYXNBcHBCb3Vu
ZCk7CisgICAgdm9pZCBwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBVUkwmLCBjb25zdCBTdHJp
bmcmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc3RkOjpvcHRpb25hbDxOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKTsK
IAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgdm9pZCBjbGVhclBy
ZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAppbmRleCBhNzE4ODViYTQ2YjZkOGMzNzBjZjIzZDQyYjgxZTZlZThmY2Zl
ZDY5Li41MmJhYTNlNWE1YTNkMjJkYjkzOWVlNmZkNGE1YjQ5ODhkMDZmNjNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEzMzIsNyArMTMzMiw3IEBAIFJl
ZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgU2hvCiAgICAgICAgIG5hdmlnYXRpb24tPnNldENsaWVudE5hdmln
YXRpb25BY3Rpdml0eShwcm9jZXNzKCkudGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5KCJD
bGllbnQgbmF2aWdhdGlvbiJfcykpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgc2V0TGFz
dE5hdmlnYXRpb25XYXNBcHBCb3VuZChyZXF1ZXN0KTsKKyAgICBzZXRMYXN0TmF2aWdhdGlvbldh
c0FwcEluaXRpYXRlZChyZXF1ZXN0KTsKICNlbmRpZgogCiAgICAgbG9hZFJlcXVlc3RXaXRoTmF2
aWdhdGlvblNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwgbmF2aWdhdGlv
bi5nZXQoKSwgV1RGTW92ZShyZXF1ZXN0KSwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwg
dXNlckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8sIGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4oKSk7CkBAIC00NTI3LDcgKzQ1MjcsOCBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6cHJlY29ubmVjdFRvKGNvbnN0IFVSTCYgdXJsKQogICAgICAgICByZXR1cm47CiAKICAgICBh
dXRvIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID0gbV9jYW5Vc2VDcmVkZW50aWFsU3RvcmFnZSA/
IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2UgOiBXZWJDb3JlOjpTdG9yZWRD
cmVkZW50aWFsc1BvbGljeTo6RG9Ob3RVc2U7Ci0gICAgd2Vic2l0ZURhdGFTdG9yZSgpLm5ldHdv
cmtQcm9jZXNzKCkucHJlY29ubmVjdFRvKHNlc3Npb25JRCgpLCBpZGVudGlmaWVyKCksIHdlYlBh
Z2VJRCgpLCB1cmwsIHVzZXJBZ2VudCgpLCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgPyBM
YXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOjpZZXMgOiBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5k
OjpObyk7CisKKyAgICB3ZWJzaXRlRGF0YVN0b3JlKCkubmV0d29ya1Byb2Nlc3MoKS5wcmVjb25u
ZWN0VG8oc2Vzc2lvbklEKCksIGlkZW50aWZpZXIoKSwgd2ViUGFnZUlEKCksIHVybCwgdXNlckFn
ZW50KCksIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluKCksIG1fbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgPyBMYXN0TmF2aWdhdGlvbldh
c0FwcEluaXRpYXRlZDo6WWVzIDogTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6Ok5vKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldENhblVzZUNyZWRlbnRpYWxTdG9yYWdlKGJvb2wg
Y2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UpCkBAIC04MTkxLDcgKzgxOTIsNyBAQCBXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKFdlYlByb2Nl
c3NQcm94eSYgcHJvYwogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBwYXJhbWV0
ZXJzLmxpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMgPSBtX2xpbWl0c05hdmlnYXRp
b25zVG9BcHBCb3VuZERvbWFpbnM7CiAjZW5kaWYKLSAgICBwYXJhbWV0ZXJzLmxhc3ROYXZpZ2F0
aW9uV2FzQXBwQm91bmQgPSBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7CisgICAgcGFyYW1l
dGVycy5sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCA9IG1fbGFzdE5hdmlnYXRpb25XYXNB
cHBJbml0aWF0ZWQ7CiAgICAgcGFyYW1ldGVycy5zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVC
bG9ja2luZyA9IG1fY29uZmlndXJhdGlvbi0+c2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmcoKTsKICAgICBwYXJhbWV0ZXJzLmNhblVzZUNyZWRlbnRpYWxTdG9yYWdlID0gbV9jYW5V
c2VDcmVkZW50aWFsU3RvcmFnZTsKIApAQCAtMTA3MDMsMTQgKzEwNzA0LDE0IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpjcmVhdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcihSZWY8TWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3JQcm94CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotdm9pZCBXZWJQ
YWdlUHJveHk6OmFwcEJvdW5kTmF2aWdhdGlvbkRhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBXZWJQYWdlUHJveHk6OmFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewotICAgIHdlYnNpdGVEYXRhU3RvcmUoKS5uZXR3b3JrUHJvY2Vz
cygpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkFwcEJvdW5k
TmF2aWdhdGlvbkRhdGEobV93ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB3ZWJzaXRlRGF0YVN0b3JlKCkubmV0d29ya1Byb2Nl
c3MoKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpBcHBQcml2
YWN5UmVwb3J0VGVzdGluZ0RhdGEobV93ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSksIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmNsZWFy
QXBwQm91bmROYXZpZ2F0aW9uRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJBcHBQcml2YWN5UmVwb3J0VGVz
dGluZ0RhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewotICAgIHdlYnNpdGVEYXRhU3RvcmUoKS5uZXR3b3JrUHJvY2VzcygpLnNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkNsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0
YShtX3dlYnNpdGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpKSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworICAgIHdlYnNpdGVEYXRhU3RvcmUoKS5uZXR3b3JrUHJvY2VzcygpLnNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkNsZWFyQXBwUHJpdmFjeVJlcG9y
dFRlc3RpbmdEYXRhKG1fd2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCkpLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAppbmRleCBlYzVkMGNmMDVlM2I0MzU0N2FmNTkzZGQ2NTM3YzAzNzgxN2U2YTll
Li42MmU5MjdjYzQ3NjE4Yjc2MmFkMmQzNWI1MDg3ZGE2MTlhMDk4NTYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMzczLDcgKzM3Myw3IEBAIGNsYXNzIFdlYldo
ZWVsRXZlbnQ7CiBjbGFzcyBXZWJXaGVlbEV2ZW50Q29hbGVzY2VyOwogY2xhc3MgV2Vic2l0ZURh
dGFTdG9yZTsKIAotc3RydWN0IEFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhOworc3RydWN0
IEFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YTsKIHN0cnVjdCBEYXRhRGV0ZWN0aW9uUmVzdWx0
Owogc3RydWN0IERvY3VtZW50RWRpdGluZ0NvbnRleHQ7CiBzdHJ1Y3QgRG9jdW1lbnRFZGl0aW5n
Q29udGV4dFJlcXVlc3Q7CkBAIC0xOTI2LDEwICsxOTI2LDEwIEBAIHB1YmxpYzoKICNlbmRpZgog
CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBzZXRMYXN0TmF2aWdhdGlvbldhc0FwcEJv
dW5kKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwotICAgIHZvaWQgbGFzdE5hdmlnYXRpb25X
YXNBcHBCb3VuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGFw
cEJvdW5kTmF2aWdhdGlvbkRhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBBcHBCb3Vu
ZE5hdmlnYXRpb25UZXN0aW5nRGF0YSYpPiYmKTsKLSAgICB2b2lkIGNsZWFyQXBwQm91bmROYXZp
Z2F0aW9uRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0TGFz
dE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7Cisg
ICAgdm9pZCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZChDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSYpPiYm
KTsKKyAgICB2b2lkIGNsZWFyQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICBOU0RpY3Rpb25hcnkgKmNvbnRlbnRzT2ZVc2VySW50
ZXJmYWNlSXRlbShOU1N0cmluZyAqdXNlckludGVyZmFjZUl0ZW0pOwogCkBAIC0zMDM2LDcgKzMw
MzYsNyBAQCBwcml2YXRlOgogCiAgICAgc2l6ZV90IG1fc3VzcGVuZE1lZGlhUGxheWJhY2tDb3Vu
dGVyIHsgMCB9OwogCi0gICAgYm9vbCBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgeyBmYWxz
ZSB9OworICAgIGJvb2wgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCB7IHRydWUgfTsK
ICAgICBib29sIG1faXNSdW5uaW5nTW9kYWxKYXZhU2NyaXB0RGlhbG9nIHsgZmFsc2UgfTsKICAg
ICBib29sIG1faXNTdXNwZW5kZWQgeyBmYWxzZSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjMDkzNWM1MjRkY2I0ODVjYWI1YzQw
MDA4YzhkZWNiMzMzYmM0NWE4Li5mMDczM2M3ZGExMGQxNmU1MDIwY2IyNWZkNGFiNDI3NzhlY2Iw
N2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTk4Nyw2ICs5ODcsNyBAQAogCQk0NkRGMDYzQzFGMzkwNUY4MDAxOTgwQkIgLyogTmV0
d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NkRGMDYzQTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQ
cmVmbGlnaHRDaGVja2VyLmggKi87IH07CiAJCTQ2RjM4RThDMjQxNkU2NzMwMDU5Mzc1QSAvKiBS
dW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDZGMzhFOEIyNDE2RTY2RDAwNTkzNzVBIC8qIFJ1bm5pbmdCb2FyZFNl
cnZpY2VzU1BJLmggKi87IH07CiAJCTQ2RjlCMjYzMjM1MjZFRjMwMDZGRTVGQSAvKiBXZWJCYWNr
Rm9yd2FyZENhY2hlRW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2RjlCMjYyMjM1MjZFRDAwMDZGRTVGQSAvKiBXZWJCYWNrRm9yd2FyZENhY2hl
RW50cnkuaCAqLzsgfTsKKwkJNDkzMTAyQkQyNjgzRjNEMDAwMkJCODg1IC8qIEFwcFByaXZhY3lS
ZXBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5
MzEwMkJDMjY4M0YzQTUwMDJCQjg4NSAvKiBBcHBQcml2YWN5UmVwb3J0LmggKi87IH07CiAJCTQ5
NzNERjQ4MjQyMjk0MUYwMEU0QzI2QSAvKiBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk3M0RGNDcyNDIy
OTQxRjAwRTRDMjZBIC8qIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmggKi87IH07CiAJCTQ5
OTAwMDIxMjREMjQyOUMwMDA0OUNCNCAvKiBXS1JlbmRlckxheWVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTkwMDAxRjI0RDI0MjlDMDAwNDlDQjQg
LyogV0tSZW5kZXJMYXllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTQ5OTAwMDI0MjREMjRDMjkwMDA0OUNCNCAvKiBXS1JlbmRlck9iamVjdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk5MDAwMjMy
NEQyNEMxQzAwMDQ5Q0I0IC8qIFdLUmVuZGVyT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM5MzQsNiArMzkzNSw3IEBACiAJCTQ2REYw
NjNBMUYzOTA1RTUwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RjM4RThCMjQxNkU2NkQwMDU5Mzc1
QSAvKiBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NkY5QjI2MjIzNTI2RUQwMDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVu
dHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkJhY2tGb3J3YXJkQ2Fj
aGVFbnRyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0OTMxMDJCQzI2ODNGM0E1
MDAyQkI4ODUgLyogQXBwUHJpdmFjeVJlcG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcHBQcml2YWN5
UmVwb3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5NzNERjQ3MjQyMjk0MUYw
MEU0QzI2QSAvKiBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0OTkwMDAxRTI0RDI0MjlDMDAwNDlDQjQgLyogV0tSZW5kZXJMYXllci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXS1JlbmRlckxheWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDk5MDAwMUYyNEQyNDI5QzAwMDQ5Q0I0IC8qIFdLUmVuZGVyTGF5ZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0tSZW5kZXJMYXllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjc1
Miw2ICs2NzU0LDcgQEAKIAkJCQkyNjMxNzJDRTE4QjQ2OTQ5MDA2NUI5QzMgLyogTmF0aXZlV2Vi
VG91Y2hFdmVudC5oICovLAogCQkJCURGNThDNjMxMTM3MUFDNTgwMEY5QTM3QyAvKiBOYXRpdmVX
ZWJXaGVlbEV2ZW50LmggKi8sCiAJCQkJNDk3M0RGNDcyNDIyOTQxRjAwRTRDMjZBIC8qIE5hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluLmggKi8sCisJCQkJNDkzMTAyQkMyNjgzRjNBNTAwMkJCODg1
IC8qIEFwcFByaXZhY3lSZXBvcnQuaCAqLywKIAkJCQkxQURDQjg2ODE4OTgzMUIzMDAyMkVFNUEg
LyogTmF2aWdhdGlvbkFjdGlvbkRhdGEuY3BwICovLAogCQkJCTFBRENCODY5MTg5ODMxQjMwMDIy
RUU1QSAvKiBOYXZpZ2F0aW9uQWN0aW9uRGF0YS5oICovLAogCQkJCTVDRDc0OEI1MjNDOEVCMTkw
MDkyQTlCNSAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllci5oICovLApAQCAtMTIxMjgs
NiArMTIxMzEsNyBAQAogCQkJCTUxNzk1NTZBMTYyODc2RjMwMEZBNDNCNiAvKiBOZXR3b3JrUHJv
Y2Vzcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE3Q0YwRTQxNjNBNDg2QzAwQzI5NTBFIC8qIE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzE0
MjZFRDFDMjNGODA5MDBENDExODMgLyogTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aCBpbiBIZWFkZXJzICovLAorCQkJCTQ5MzEwMkJEMjY4M0YzRDAwMDJCQjg4NSAvKiBBcHBQcml2
YWN5UmVwb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTYzMTk5NTE2Mjg5QTYzMDBFMjJGMDAg
LyogTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE0QTk1NEEx
NkUwMTZBNDAwNjhERTgyIC8qIE5ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MTc5NTU2RTE2Mjg3N0IzMDBGQTQzQjYgLyogTmV0d29ya1Byb2Nl
c3NQcm94eS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKaW5kZXggYzQyZDJjMDBmNzk4MmVh
M2ZlMTk0MDFjZDA3NmMyNGEwYjY0OWViZi4uNjBlNmEyYjQ4MGZjYWQxMTBmM2RhZTg0YjA1NDk1
NjUzNTc2ZjdlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViTG9hZGVyU3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgV2ViTG9h
ZGVyU3RyYXRlZ3k6OmxvYWRSZXNvdXJjZShGcmFtZSYgZnJhbWUsIENhY2hlZFJlc291cmNlJiBy
ZXNvdXJjZSwgUmVzCiAgICAgaWYgKHJlc291cmNlLnR5cGUoKSAhPSBDYWNoZWRSZXNvdXJjZTo6
VHlwZTo6TWFpblJlc291cmNlIHx8ICFmcmFtZS5pc01haW5GcmFtZSgpKSB7CiAgICAgICAgIGlm
IChhdXRvKiBkb2N1bWVudCA9IGZyYW1lLm1haW5GcmFtZSgpLmRvY3VtZW50KCkpIHsKICAgICAg
ICAgICAgIGlmIChkb2N1bWVudCAmJiBkb2N1bWVudC0+bG9hZGVyKCkpCi0gICAgICAgICAgICAg
ICAgcmVxdWVzdC5zZXRJc0FwcEJvdW5kKGRvY3VtZW50LT5sb2FkZXIoKS0+bGFzdE5hdmlnYXRp
b25XYXNBcHBCb3VuZCgpKTsKKyAgICAgICAgICAgICAgICByZXF1ZXN0LnNldElzQXBwSW5pdGlh
dGVkKGRvY3VtZW50LT5sb2FkZXIoKS0+bGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQoKSk7
CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTc2Nyw3ICs3NjcsNyBAQCB2b2lkIFdlYkxvYWRlclN0
cmF0ZWd5OjpwcmVjb25uZWN0VG8oV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
V2ViUGFnZQogICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IHdlYlBhZ2UubWFpbkZyYW1lKCktPmRv
Y3VtZW50KCkpIHsKICAgICAgICAgcmVxdWVzdC5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhkb2N1
bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSk7CiAgICAgICAgIGlmIChhdXRvKiBsb2FkZXIg
PSBkb2N1bWVudC0+bG9hZGVyKCkpCi0gICAgICAgICAgICByZXF1ZXN0LnNldElzQXBwQm91bmQo
bG9hZGVyLT5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKCkpOworICAgICAgICAgICAgcmVxdWVz
dC5zZXRJc0FwcEluaXRpYXRlZChsb2FkZXItPmxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVk
KCkpOwogICAgIH0KIAogICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHByZWNvbm5lY3Rpb25J
ZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCmluZGV4IDYzODQx
MTdjZDVlMTU1MTZkMDk4Y2VhYjA2ZDNjNTQ5YjdkMWM4ZGIuLmY5OTNlZmMxZWEzYTcyOTUwZjI3
YjNjMDljMTYyNWQxMWEyYjY0ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5j
cHAKQEAgLTEzNSwxMCArMTM1LDEwIEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b246OnVwZGF0ZVByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTCiAgICAgc2V0
U2hvdWxkVXNlU2hvcnRUaW1lb3V0KHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJl
bmNlc0tleTo6c2hvdWxkVXNlU2VydmljZVdvcmtlclNob3J0VGltZW91dEtleSgpKSk7CiB9CiAK
LXZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnVwZGF0ZUFwcEJvdW5kVmFsdWUo
U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6
Okxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCkKK3Zv
aWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnVwZGF0ZUFwcEluaXRpYXRlZFZhbHVl
KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3Jl
OjpMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRp
YXRlZCkKIHsKICAgICBpZiAoYXV0byogc2VydmljZVdvcmtlclRocmVhZFByb3h5ID0gU1dDb250
ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlclRocmVhZFByb3h5KHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKSkKLSAgICAgICAgc2VydmljZVdvcmtlclRocmVhZFByb3h5LT5zZXRM
YXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgPT0gV2Vi
Q29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDo6WWVzKTsKKyAgICAgICAgc2VydmljZVdv
cmtlclRocmVhZFByb3h5LT5zZXRMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZChsYXN0TmF2
aWdhdGlvbldhc0FwcEluaXRpYXRlZCA9PSBXZWJDb3JlOjpMYXN0TmF2aWdhdGlvbldhc0FwcElu
aXRpYXRlZDo6WWVzKTsKIH0KIAogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
aW5zdGFsbFNlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgZGF0YSwgU3Ry
aW5nJiYgdXNlckFnZW50KQpAQCAtMjM0LDcgKzIzNCw3IEBAIHZvaWQgV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb246OnN0YXJ0RmV0Y2goU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBz
ZXJ2CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHktPnNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQocmVxdWVzdC5pc0FwcEJvdW5kKCkpOwor
ICAgIHNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS0+c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0
aWF0ZWQocmVxdWVzdC5pc0FwcEluaXRpYXRlZCgpKTsKIAogICAgIGlmICghaXNWYWxpZEZldGNo
KHJlcXVlc3QsIG9wdGlvbnMsIHNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS0+c2NyaXB0VVJMKCks
IHJlZmVycmVyKSkgewogICAgICAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWROb3RIYW5kbGUgeyB9LCBmZXRj
aElkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKaW5kZXggMzMxNDMz
OWUwOTNiYzY1YzcyZGJhNTJjZWFkYWFjNzQ1MmYxY2RjOS4uZTAyMDU3ZTgxMWMxZTg2ZDJmNWVl
ZDI3NGUzMjBhY2Q1YmZmNzMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBA
IC04Niw3ICs4Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXJ2aWNlV29ya2VyU3RhcnRlZChz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4sIFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIGRvZXNIYW5kbGVGZXRjaCkgZmlu
YWw7CiAgICAgdm9pZCBzZXJ2aWNlV29ya2VyRmFpbGVkVG9TdGFydChzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4sIFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGV4Y2VwdGlvbk1lc3NhZ2UpIGZpbmFsOwog
ICAgIHZvaWQgaW5zdGFsbFNlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRl
eHREYXRhJiYsIFN0cmluZyYmIHVzZXJBZ2VudCk7Ci0gICAgdm9pZCB1cGRhdGVBcHBCb3VuZFZh
bHVlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpMYXN0TmF2aWdh
dGlvbldhc0FwcEJvdW5kKTsKKyAgICB2b2lkIHVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpMYXN0TmF2aWdhdGlvbldhc0Fw
cEluaXRpYXRlZCk7CiAgICAgdm9pZCBzdGFydEZldGNoKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3Jl
OjpGZXRjaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpG
ZXRjaE9wdGlvbnMmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmLCBTdHJpbmcmJiByZWZlcnJl
cik7CiAgICAgdm9pZCBjYW5jZWxGZXRjaChXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJ
ZGVudGlmaWVyKTsKICAgICB2b2lkIGNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoV2Vi
Q29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IGY2NjRhNGU5MTIyYzE1MWUy
YzU2NzU1MDkwNWVjOTUwMjU3N2JiMWEuLjNlMjBkZTM1NGJjNDNkODRhYjQ5MDQyMzQ1Yzk3ZWI5
MmVlZjNmNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluCkBAIC0yNCw3ICsyNCw3IEBACiAKIG1lc3NhZ2VzIC0+IFdlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uIE5vdFJlZkNvdW50ZWQgewogICAgIEluc3RhbGxTZXJ2aWNlV29ya2VyKHN0
cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgY29udGV4dERhdGEsIFN0cmlu
ZyB1c2VyQWdlbnQpCi0gICAgVXBkYXRlQXBwQm91bmRWYWx1ZShXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgZW51bTpib29sIFdlYkNvcmU6
Okxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCkKKyAg
ICBVcGRhdGVBcHBJbml0aWF0ZWRWYWx1ZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgZW51bTpib29sIFdlYkNvcmU6Okxhc3ROYXZpZ2F0
aW9uV2FzQXBwSW5pdGlhdGVkIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKQogICAgIFN0
YXJ0RmV0Y2goV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZp
ZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBzdHJ1Y3QgV2ViQ29yZTo6RmV0
Y2hPcHRpb25zIG9wdGlvbnMsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgcmVxdWVzdEJvZHksIFN0
cmluZyByZWZlcnJlcikKICAgICBDYW5jZWxGZXRjaChXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJ
ZGVudGlmaWVyIGZldGNoSWRlbnRpZmllcikKICAgICBDb250aW51ZURpZFJlY2VpdmVGZXRjaFJl
c3BvbnNlKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggNWRhMmJiOWY0YTJkN2Q0MjNi
ZWU4NTQ0NzFmZTg1M2QzZTRhMjYxZC4uODhlYTY2MmUwNjIzZmY5ZDc5MzdkOGJhMTBlYjY1MzIz
YzNlZTNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0yNDMsMTEgKzI0
MywxMSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxTZW5kUmVxdWVz
dChEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbgogICAgIC8vIFRoZSBBUEkgY2FuIHJldHVy
biBhIGNvbXBsZXRlbHkgbmV3IHJlcXVlc3QuIFdlIHNob3VsZCBlbnN1cmUgdGhhdCBhdCBsZWFz
dCB0aGUgcmVxdWVzdGVyCiAgICAgLy8gaXMga2VwdCwgc28gdGhhdCBpZiB0aGlzIGlzIGEgbWFp
biByZXNvdXJjZSBsb2FkIGl0J3Mgc3RpbGwgY29uc2lkZXJlZCBhcyBzdWNoLgogICAgIGF1dG8g
cmVxdWVzdGVyID0gcmVxdWVzdC5yZXF1ZXN0ZXIoKTsKLSAgICBhdXRvIGFwcEJvdW5kVmFsdWUg
PSByZXF1ZXN0LmlzQXBwQm91bmQoKTsKKyAgICBhdXRvIGFwcEluaXRpYXRlZFZhbHVlID0gcmVx
dWVzdC5pc0FwcEluaXRpYXRlZCgpOwogICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlUmVzb3Vy
Y2VMb2FkQ2xpZW50KCkud2lsbFNlbmRSZXF1ZXN0Rm9yRnJhbWUoKndlYlBhZ2UsIG1fZnJhbWUs
IGlkZW50aWZpZXIsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwogICAgIGlmICghcmVxdWVz
dC5pc051bGwoKSkgewogICAgICAgICByZXF1ZXN0LnNldFJlcXVlc3RlcihyZXF1ZXN0ZXIpOwot
ICAgICAgICByZXF1ZXN0LnNldElzQXBwQm91bmQoYXBwQm91bmRWYWx1ZSk7CisgICAgICAgIHJl
cXVlc3Quc2V0SXNBcHBJbml0aWF0ZWQoYXBwSW5pdGlhdGVkVmFsdWUpOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAzN2I0
M2U5YzdjNWYyZDdjMDk3ZjM4ZDBmZDYwZjljYzhiNGU2ZDE4Li44M2JjOTc0MGQ2ZjQ3ZWUwZTYx
OTRkNGI4NjIxZTNhMWIwODc4MGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcApAQCAtNTM0LDcgKzUzNCw3IEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFn
ZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVy
cykKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgLCBtX2xpbWl0c05hdmlnYXRp
b25zVG9BcHBCb3VuZERvbWFpbnMocGFyYW1ldGVycy5saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91
bmREb21haW5zKQogI2VuZGlmCi0gICAgLCBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQocGFy
YW1ldGVycy5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKQorICAgICwgbV9sYXN0TmF2aWdhdGlv
bldhc0FwcEluaXRpYXRlZChwYXJhbWV0ZXJzLmxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVk
KQogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKICAgICAsIG1fYXBwSGlnaGxpZ2h0c1Zpc2li
bGUocGFyYW1ldGVycy5hcHBIaWdobGlnaHRzVmlzaWJsZSkKICNlbmRpZgpAQCAtMTY2NCw3ICsx
NjY0LDcgQEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybURpZFJlY2VpdmVMb2FkUGFyYW1ldGVycyhj
b25zdCBMb2FkUGFyYW1ldGVycyYgbG9hZFBhcmFtZXQKIAogdm9pZCBXZWJQYWdlOjpsb2FkUmVx
dWVzdChMb2FkUGFyYW1ldGVycyYmIGxvYWRQYXJhbWV0ZXJzKQogewotICAgIHNldExhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQobG9hZFBhcmFtZXRlcnMucmVxdWVzdC5pc0FwcEJvdW5kKCkpOwor
ICAgIHNldExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKGxvYWRQYXJhbWV0ZXJzLnJlcXVl
c3QuaXNBcHBJbml0aWF0ZWQoKSk7CiAKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAg
ICAgc2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihsb2FkUGFyYW1ldGVycy5pc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluLCAmbV9tYWluRnJhbWUuZ2V0KCkpOwpAQCAtNjYxNyw3ICs2
NjE3LDcgQEAgUmVmPERvY3VtZW50TG9hZGVyPiBXZWJQYWdlOjpjcmVhdGVEb2N1bWVudExvYWRl
cihGcmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmUKIHsKICAgICBSZWY8V2ViRG9jdW1lbnRM
b2FkZXI+IGRvY3VtZW50TG9hZGVyID0gV2ViRG9jdW1lbnRMb2FkZXI6OmNyZWF0ZShyZXF1ZXN0
LCBzdWJzdGl0dXRlRGF0YSk7CiAKLSAgICBkb2N1bWVudExvYWRlci0+c2V0TGFzdE5hdmlnYXRp
b25XYXNBcHBCb3VuZChtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOworICAgIGRvY3VtZW50
TG9hZGVyLT5zZXRMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZChtX2xhc3ROYXZpZ2F0aW9u
V2FzQXBwSW5pdGlhdGVkKTsKIAogICAgIGlmIChmcmFtZS5pc01haW5GcmFtZSgpKSB7CiAgICAg
ICAgIGlmIChtX3BlbmRpbmdOYXZpZ2F0aW9uSUQpIHsKQEAgLTc2NTQsOSArNzY1NCw5IEBAIHZv
aWQgV2ViUGFnZTo6Y29uc3VtZU5ldHdvcmtFeHRlbnNpb25TYW5kYm94RXh0ZW5zaW9ucyhjb25z
dCBTYW5kYm94RXh0ZW5zaW9uOjpICiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdlOjpsYXN0TmF2
aWdhdGlvbldhc0FwcEJvdW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2U6Omxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVk
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0g
ICAgY29tcGxldGlvbkhhbmRsZXIobWFpbkZyYW1lKCktPmRvY3VtZW50KCktPmxvYWRlcigpLT5s
YXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKCkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKG1haW5G
cmFtZSgpLT5kb2N1bWVudCgpLT5sb2FkZXIoKS0+bGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0
ZWQoKSk7CiB9CiAKICNpZiBIQVZFKFRSQU5TTEFUSU9OX1VJX1NFUlZJQ0VTKSAmJiBFTkFCTEUo
Q09OVEVYVF9NRU5VUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAppbmRleCA0NGM2YWMyOWI0OTczODEzMDc3NDVkNTlkYTNjNzFiOTQ4NjI1YWEzLi4xNjYxYjJi
MWEwMTI2MDViYTlkMTA1MjI4ZDM3Yjk0MzEzZWU0ODA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xNDQ4LDggKzE0NDgsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBpbnZhbGlkYXRlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IoKTsKICNlbmRpZgogCi0g
ICAgdm9pZCBzZXRMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKGJvb2wgd2FzQXBwQm91bmQpIHsg
bV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kID0gd2FzQXBwQm91bmQ7IH0KLSAgICB2b2lkIGxh
c3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CisgICAgdm9pZCBzZXRMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZChib29sIHdhc0FwcEJv
dW5kKSB7IG1fbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgPSB3YXNBcHBCb3VuZDsgfQor
ICAgIHZvaWQgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJik7CiAKICAgICBib29sIGlzUGFyZW50UHJvY2Vzc0FXZWJCcm93c2VyKCkg
Y29uc3Q7CiAKQEAgLTIzMjIsNyArMjMyMiw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX25hdmln
YXRpb25IYXNPY2N1cmVkIHsgZmFsc2UgfTsKICNlbmRpZgogCi0gICAgYm9vbCBtX2xhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9sYXN0TmF2aWdhdGlvbldh
c0FwcEluaXRpYXRlZCB7IHRydWUgfTsKIAogICAgIGJvb2wgbV9jYW5Vc2VDcmVkZW50aWFsU3Rv
cmFnZSB7IHRydWUgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNWJkZTNmOGRhOTFjNmM1YTY1YzZmYmE4Mzhi
MWVkNjczOGQwMjBkYi4uNTNjMTVlOWJiZjBlYWE4M2VjMjU3MGFhY2UwMmExMzNiZWMzZTAxMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCkBAIC02MzMsNyArNjMzLDcgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29t
bWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKIAog
ICAgIERpc3BhdGNoV2hlZWxFdmVudFdpdGhvdXRTY3JvbGxpbmcoV2ViS2l0OjpXZWJXaGVlbEV2
ZW50IGV2ZW50KSAtPiAoYm9vbCBoYW5kbGVkKSBBc3luYwogCi0gICAgTGFzdE5hdmlnYXRpb25X
YXNBcHBCb3VuZCgpIC0+IChib29sIHdhc0FwcEJvdW5kKSBBc3luYworICAgIExhc3ROYXZpZ2F0
aW9uV2FzQXBwSW5pdGlhdGVkKCkgLT4gKGJvb2wgd2FzQXBwQm91bmQpIEFzeW5jCiAKICNpZiBF
TkFCTEUoTUVESUFfU0VTU0lPTl9DT09SRElOQVRPUikKICAgICBDcmVhdGVNZWRpYVNlc3Npb25D
b29yZGluYXRvcihTdHJpbmcgaWRlbnRpZmllcikgLT4gKGJvb2wgc3VjY2VzcykgQXN5bmMKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlMDBkMmFi
NzA2OTMwNmE3MTEzMDZkNGYzYWQ1NTM4NzA0ZmI1MGY5Li43ODBkOTkyYTUzZTkzYmE0MWEyNDRh
ZWVmZTY3YWY0YWJlNmVjYzMzIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMjEtMDYtMjMgIEthdGUgQ2hlbmV5ICA8
a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAgQXBwIFByaXZh
Y3kgUmVwb3J0IGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNzMyNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzk2OTY4NDk+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVsZXRlIHRlc3Rpbmcg
ZnVuY3Rpb25zIHJlbGF0ZWQgdG8gYXR0cmlidXRpb24gY29udGV4dC4gTW92ZSBBcHAKKyAgICAg
ICAgUHJpdmFjeSBSZXBvcnQgdGVzdHMgaW50byB0aGVpciBvd24gZmlsZS4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9y
dC5tbTogQWRkZWQuCisgICAgICAgIChURVNUKToKKyAgICAgICAgKGNhdGNoKToKKyAgICAgICAg
KGZ1bmN0aW9uKToKKyAgICAgICAgKC1bU1dBcHBJbml0aWF0ZWRSZXF1ZXN0TWVzc2FnZUhhbmRs
ZXIgdXNlckNvbnRlbnRDb250cm9sbGVyOmRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOl0pOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydFBs
dWdJbi5tbTogUmVuYW1lZCBmcm9tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvSW5BcHBCcm93c2VyUHJpdmFjeVBsdWdJbi5tbS4KKyAgICAgICAgKC1bQXBwUHJpdmFjeVJl
cG9ydFBsdWdJbiB3ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOmZyYW1l
OndpbGxTZW5kUmVxdWVzdEZvclJlc291cmNlOnJlcXVlc3Q6cmVkaXJlY3RSZXNwb25zZTpdKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclBy
aXZhY3kubW06CisgICAgICAgICgtW1NXQXBwQm91bmRSZXF1ZXN0TWVzc2FnZUhhbmRsZXIgdXNl
ckNvbnRlbnRDb250cm9sbGVyOmRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOl0pOiBEZWxldGVkLgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvYXBwLXByaXZhY3ktcmVw
b3J0LWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV1RSOjpJ
bmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UpOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6
OlRlc3RSdW5uZXI6OmRpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0KToKKyAgICAgICAgKFdUUjo6
VGVzdFJ1bm5lcjo6ZGlkTG9hZE5vbkFwcEluaXRpYXRlZFJlcXVlc3QpOgorICAgICAgICAoV1RS
OjpUZXN0UnVubmVyOjphcHBCb3VuZFJlcXVlc3RDb250ZXh0RGF0YUZvckRvbWFpbik6IERlbGV0
ZWQuCisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OmNhbGxEaWRSZWNlaXZlQXBwQm91bmRSZXF1
ZXN0Q29udGV4dERhdGFGb3JEb21haW5DYWxsYmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6
OlRlc3RSdW5uZXI6OmRpZExvYWRBcHBCb3VuZFJlcXVlc3QpOiBEZWxldGVkLgorICAgICAgICAo
V1RSOjpUZXN0UnVubmVyOjpkaWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdU
Ujo6VGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAg
ICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3QpOgorICAg
ICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZGlkTG9hZE5vbkFwcEluaXRpYXRlZFJlcXVlc3Qp
OgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y2xlYXJBcHBQcml2YWN5UmVwb3J0VGVz
dGluZ0RhdGEpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6YXBwQm91bmRSZXF1ZXN0
Q29udGV4dERhdGFGb3JEb21haW4pOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6ZGlkTG9hZEFwcEJvdW5kUmVxdWVzdCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OlRl
c3RDb250cm9sbGVyOjpkaWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YSk6IERl
bGV0ZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAoV1RS
OjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgor
ICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2Fn
ZUZyb21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRS
ZWNlaXZlQXBwQm91bmRSZXF1ZXN0Q29udGV4dERhdGFGb3JEb21haW4pOiBEZWxldGVkLgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaDoKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW06CisgICAgICAgIChXVFI6
OlRlc3RDb250cm9sbGVyOjpkaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdCk6CisgICAgICAgIChX
VFI6OlRlc3RDb250cm9sbGVyOjpkaWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdCk6CisgICAg
ICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjbGVhckFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0
YSk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjphcHBCb3VuZFJlcXVlc3RDb250ZXh0
RGF0YUZvckRvbWFpbik6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpk
aWRMb2FkQXBwQm91bmRSZXF1ZXN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6VGVzdENvbnRy
b2xsZXI6OmRpZExvYWROb25BcHBCb3VuZFJlcXVlc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RS
OjpUZXN0Q29udHJvbGxlcjo6Y2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhKTogRGVsZXRlZC4K
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5uZXJXS1dlYlZpZXcuaDoK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5uZXJXS1dlYlZpZXcubW06
CisgICAgICAgICgtW1Rlc3RSdW5uZXJXS1dlYlZpZXcgX2RpZExvYWRBcHBJbml0aWF0ZWRSZXF1
ZXN0Ol0pOgorICAgICAgICAoLVtUZXN0UnVubmVyV0tXZWJWaWV3IF9kaWRMb2FkTm9uQXBwSW5p
dGlhdGVkUmVxdWVzdDpdKToKKyAgICAgICAgKC1bVGVzdFJ1bm5lcldLV2ViVmlldyBfYXBwQm91
bmROYXZpZ2F0aW9uRGF0YUZvckRvbWFpbjpjb21wbGV0aW9uSGFuZGxlcjpdKTogRGVsZXRlZC4K
KyAgICAgICAgKC1bVGVzdFJ1bm5lcldLV2ViVmlldyBfZGlkTG9hZEFwcEJvdW5kUmVxdWVzdDpd
KTogRGVsZXRlZC4KKyAgICAgICAgKC1bVGVzdFJ1bm5lcldLV2ViVmlldyBfZGlkTG9hZE5vbkFw
cEJvdW5kUmVxdWVzdDpdKTogRGVsZXRlZC4KKwogMjAyMS0wNi0yMyAgS2F0ZSBDaGVuZXkgIDxr
YXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBNaWdyYXRlIEFwcCBQcml2YWN5
IFJlcG9ydCBjb2RlIGZyb20gV2ViS2l0QWRkaXRpb25zCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDQ5ZTdlNGE5ZGZmYWJlNmMyYmJkZjBjOWQ2MzhkY2NiNjg4NjFmNjUuLmM1ZTIwZTMzZGYy
MjYyMmNmY2JhMDUzYmE5YmY2NWZkYjRmNTMyODAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0yOTQsNyArMjk0LDcgQEAKIAkJNDZGQUNGNzQyM0U4ODQyMzAwQTlFQkM2IC8qIGJlZm9yZXVu
bG9hZC1zbG93Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDZGQUNGNzMyM0U4ODNFRTAwQTlFQkM2IC8qIGJlZm9yZXVubG9hZC1zbG93
Lmh0bWwgKi87IH07CiAJCTQ5MDhDNzExMjYwOTRFNDEwMDBCMUIyRiAvKiBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ5MDhDNzBGMjYwOTRFMTYwMDBCMUIyRiAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5t
bSAqLzsgfTsKIAkJNDkwOUVFM0EyRDA5NDgwQzg4OTgyRDU2IC8qIE1hcmthYmxlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVDNzlGMTY4QkU0NTRF
NTc5RTQxN0IwNSAvKiBNYXJrYWJsZS5jcHAgKi87IH07Ci0JCTQ5MUFFRUY4MjY1MkUzMzUwMEQ1
MzBBOCAvKiBJbkFwcEJyb3dzZXJQcml2YWN5UGx1Z0luLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDkxQUVFRjQyNjUyREREMDAwRDUzMEE4IC8qIElu
QXBwQnJvd3NlclByaXZhY3lQbHVnSW4ubW0gKi87IH07CisJCTQ5MUFFRUY4MjY1MkUzMzUwMEQ1
MzBBOCAvKiBBcHBQcml2YWN5UmVwb3J0UGx1Z0luLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDkxQUVFRjQyNjUyREREMDAwRDUzMEE4IC8qIEFwcFBy
aXZhY3lSZXBvcnRQbHVnSW4ubW0gKi87IH07CiAJCTQ5MUYzRDUyMjYwMjdFNTMwMDBFMzFGNyAv
KiBwY21XaXRob3V0RnJhdWRQcmV2ZW50aW9uRGF0YWJhc2UuZGIgaW4gQ29weSBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDkxRjNENEYyNjAyN0NGRTAwMEUz
MUY3IC8qIHBjbVdpdGhvdXRGcmF1ZFByZXZlbnRpb25EYXRhYmFzZS5kYiAqLzsgfTsKIAkJNDkx
RjNENTMyNjAyN0U1MzAwMEUzMUY3IC8qIHBjbVdpdGhvdXRGcmF1ZFByZXZlbnRpb25EYXRhYmFz
ZS5kYi1zaG0gaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDkxRjNENTAyNjAyN0NGRTAwMEUzMUY3IC8qIHBjbVdpdGhvdXRGcmF1ZFByZXZlbnRp
b25EYXRhYmFzZS5kYi1zaG0gKi87IH07CiAJCTQ5MUYzRDU0MjYwMjdFNTMwMDBFMzFGNyAvKiBw
Y21XaXRob3V0RnJhdWRQcmV2ZW50aW9uRGF0YWJhc2UuZGItd2FsIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5MUYzRDUxMjYwMjdDRkUwMDBF
MzFGNyAvKiBwY21XaXRob3V0RnJhdWRQcmV2ZW50aW9uRGF0YWJhc2UuZGItd2FsICovOyB9OwpA
QCAtMzEyLDYgKzMxMiw3IEBACiAJCTQ5OEQwMzBBMjYzNzZCMzQwMDlDQkZBRCAvKiByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWlzc2luZ1VuaXF1ZUluZGV4LmRiIGluIENvcHkgUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OEQwMzA5MjYzNzZCMkMwMDlDQkZB
RCAvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWlzc2luZ1VuaXF1ZUluZGV4LmRiICovOyB9Owog
CQk0OTk1QTZGMDI1RTg3NzIwMDBFNUYwQTkgLyogY3NwLWRvY3VtZW50LXVyaS1yZXBvcnQuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
OTk1QTZFRjI1RTg3NkEzMDBFNUYwQTkgLyogY3NwLWRvY3VtZW50LXVyaS1yZXBvcnQuaHRtbCAq
LzsgfTsKIAkJNDlBRUVGNkQyNDA3MzU5RDAwQzg3RTRDIC8qIEluQXBwQnJvd3NlclByaXZhY3ku
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUFFRUY2
QjI0MDczNTg2MDBDODdFNEMgLyogSW5BcHBCcm93c2VyUHJpdmFjeS5tbSAqLzsgfTsKKwkJNDlF
RjZBRDUyNjc3QzBCRTAwNzk2N0RDIC8qIEFwcFByaXZhY3lSZXBvcnQubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVGNkFENDI2NzdDMEJFMDA3OTY3
REMgLyogQXBwUHJpdmFjeVJlcG9ydC5tbSAqLzsgfTsKIAkJNEJGREZGQTcxMzE0Nzc2QzAwNjFG
MjRCIC8qIEhpdFRlc3RSZXN1bHROb2RlSGFuZGxlX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QkZERkZBNjEzMTQ3NzZDMDA2MUYyNEIg
LyogSGl0VGVzdFJlc3VsdE5vZGVIYW5kbGVfQnVuZGxlLmNwcCAqLzsgfTsKIAkJNTEwNDc3NzIx
RDI5OERERDAwOTc0N0VCIC8qIElEQkRlbGV0ZVJlY292ZXJ5LnNxbGl0ZTMgaW4gQ29weSBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwNDc3NkYxRDI5OEQ4
NTAwOTc0N0VCIC8qIElEQkRlbGV0ZVJlY292ZXJ5LnNxbGl0ZTMgKi87IH07CiAJCTUxMDQ3Nzcz
MUQyOThEREQwMDk3NDdFQiAvKiBJREJEZWxldGVSZWNvdmVyeS5zcWxpdGUzLXNobSBpbiBDb3B5
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTA0Nzc3MDFE
Mjk4RDg1MDA5NzQ3RUIgLyogSURCRGVsZXRlUmVjb3Zlcnkuc3FsaXRlMy1zaG0gKi87IH07CkBA
IC0yMTEzLDcgKzIxMTQsNyBAQAogCQk0NkZBMkZFRDIzODQ2QzlBMDAwQ0NCMEMgLyogSFRUUEhl
YWRlck1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVFRQSGVh
ZGVyTWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZGQUNGNzMyM0U4ODNF
RTAwQTlFQkM2IC8qIGJlZm9yZXVubG9hZC1zbG93Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7
IHBhdGggPSAiYmVmb3JldW5sb2FkLXNsb3cuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ5MDhDNzBGMjYwOTRFMTYwMDBCMUIyRiAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFByaXZhdGVDbGlj
a01lYXN1cmVtZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0OTFBRUVGNDI2
NTJEREQwMDBENTMwQTggLyogSW5BcHBCcm93c2VyUHJpdmFjeVBsdWdJbi5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IEluQXBwQnJvd3NlclByaXZhY3lQbHVnSW4ubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQ5MUFFRUY0MjY1MkRERDAwMEQ1MzBBOCAvKiBBcHBQcml2YWN5UmVw
b3J0UGx1Z0luLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXBwUHJpdmFjeVJlcG9ydFBsdWdJ
bi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDkxRjNENEYyNjAyN0NGRTAwMEUz
MUY3IC8qIHBjbVdpdGhvdXRGcmF1ZFByZXZlbnRpb25EYXRhYmFzZS5kYiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGU7IHBhdGggPSBwY21XaXRo
b3V0RnJhdWRQcmV2ZW50aW9uRGF0YWJhc2UuZGI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ5MUYzRDUwMjYwMjdDRkUwMDBFMzFGNyAvKiBwY21XaXRob3V0RnJhdWRQcmV2ZW50aW9u
RGF0YWJhc2UuZGItc2htICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gZmlsZTsgcGF0aCA9ICJwY21XaXRob3V0RnJhdWRQcmV2ZW50aW9uRGF0YWJhc2Uu
ZGItc2htIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDkxRjNENTEyNjAyN0NGRTAw
MEUzMUY3IC8qIHBjbVdpdGhvdXRGcmF1ZFByZXZlbnRpb25EYXRhYmFzZS5kYi13YWwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gInBjbVdpdGhvdXRGcmF1ZFByZXZlbnRpb25EYXRhYmFzZS5kYi13
YWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjEzMiw2ICsyMTMzLDcgQEAKIAkJ
NDlBRUVGNjgyNDA3Mjc2RjAwQzg3RTRDIC8qIEluZm8ucGxpc3QgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBs
aXN0LnhtbDsgcGF0aCA9IEluZm8ucGxpc3Q7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ5QUVFRjZCMjQwNzM1ODYwMEM4N0U0QyAvKiBJbkFwcEJyb3dzZXJQcml2YWN5Lm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSW5BcHBCcm93c2VyUHJpdmFjeS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDlEN0ZCQTcyNDFGREREQTAwQUI2N0ZB
IC8qIGluLWFwcC1icm93c2VyLXByaXZhY3ktbG9jYWwtZmlsZS5odG1sICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImlu
LWFwcC1icm93c2VyLXByaXZhY3ktbG9jYWwtZmlsZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDlFRjZBRDQyNjc3QzBCRTAwNzk2N0RDIC8qIEFwcFByaXZhY3lSZXBvcnQu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBcHBQcml2YWN5UmVwb3J0Lm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0QTQxMEY0QjE5QUY3QkQ2MDAyRUJBQjUgLyogVXNlck1lZGlh
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVzZXJNZWRpYS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBNDEwRjREMTlBRjdCRUYwMDJFQkFCNSAv
KiBnZXRVc2VyTWVkaWEuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IGdldFVzZXJN
ZWRpYS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTQxMEY0RDE5QUY3QkVG
MDAyRUJBQjYgLyogb25kZXZpY2VjaGFuZ2UuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0
aCA9IG9uZGV2aWNlY2hhbmdlLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0z
Mzc5LDYgKzMzODEsOCBAQAogCQkJCTJERTcxQUZEMUQ0OUMwQkQwMDkwNDA5NCAvKiBBbmltYXRl
ZFJlc2l6ZS5tbSAqLywKIAkJCQlBMTc5OEI4MTIyNDMxRDY1MDAwNzY0QkQgLyogQXBwbGVQYXku
bW0gKi8sCiAJCQkJNjNGNjY4MjAxRjk3QzNBQTAwMzJFRTUxIC8qIEFwcGxpY2F0aW9uTWFuaWZl
c3QubW0gKi8sCisJCQkJNDlFRjZBRDQyNjc3QzBCRTAwNzk2N0RDIC8qIEFwcFByaXZhY3lSZXBv
cnQubW0gKi8sCisJCQkJNDkxQUVFRjQyNjUyREREMDAwRDUzMEE4IC8qIEFwcFByaXZhY3lSZXBv
cnRQbHVnSW4ubW0gKi8sCiAJCQkJNTFCNDBEOUQyM0FDOTYwRTAwRTA1MjQxIC8qIEFzeW5jRnVu
Y3Rpb24ubW0gKi8sCiAJCQkJODM0MTM4QzYyMDMyNjFCOTAwRjI2OTYwIC8qIEFzeW5jUG9saWN5
Rm9yTmF2aWdhdGlvblJlc3BvbnNlLm1tICovLAogCQkJCTM3NjBDNEYwMjExMjQ5QUYwMDIzM0FD
QyAvKiBBdHRyU3R5bGUubW0gKi8sCkBAIC0zNDY2LDcgKzM0NzAsNiBAQAogCQkJCTUxMTBGQ0VG
MUUwMUNCQUEwMDZGOEQwQiAvKiBJREJJbmRleFVwZ3JhZGVUb1YyLm1tICovLAogCQkJCTkzQkNC
QzgwMjNDQzZFRTgwMENBMjIyMSAvKiBJREJPYmplY3RTdG9yZUluZm9VcGdyYWRlVG9WMi5tbSAq
LywKIAkJCQk0OUFFRUY2QjI0MDczNTg2MDBDODdFNEMgLyogSW5BcHBCcm93c2VyUHJpdmFjeS5t
bSAqLywKLQkJCQk0OTFBRUVGNDI2NTJEREQwMDBENTMwQTggLyogSW5BcHBCcm93c2VyUHJpdmFj
eVBsdWdJbi5tbSAqLywKIAkJCQk1MUE1ODc4NDFEMjcyRUYzMDA0QkE5QUYgLyogSW5kZXhlZERC
RGF0YWJhc2VQcm9jZXNzS2lsbC5tbSAqLywKIAkJCQlDQUIwRkY1NDIyMzMyQzNBMDA2Q0E1QjAg
LyogSW5kZXhlZERCRmlsZU5hbWUubW0gKi8sCiAJCQkJOTM5OUJBMDEyMzcxMTBBRTAwODM5MkJG
IC8qIEluZGV4ZWREQkluUGFnZUNhY2hlLm1tICovLApAQCAtNTMzNSw2ICs1MzM4LDcgQEAKIAkJ
CQlBMTc5OEI4MjIyNDMxRDY1MDAwNzY0QkQgLyogQXBwbGVQYXkubW0gaW4gU291cmNlcyAqLywK
IAkJCQk2M0Y2NjgyMjFGOTdGN0Y5MDAzMkVFNTEgLyogQXBwbGljYXRpb25NYW5pZmVzdC5tbSBp
biBTb3VyY2VzICovLAogCQkJCTYzNTRGNEQxMUY3QzNBQjUwMEQ4OURGMyAvKiBBcHBsaWNhdGlv
bk1hbmlmZXN0UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ5RUY2QUQ1MjY3N0MwQkUw
MDc5NjdEQyAvKiBBcHBQcml2YWN5UmVwb3J0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFCNDBE
OUUyM0FDOTYyNDAwRTA1MjQxIC8qIEFzeW5jRnVuY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk4MzQxMzhDNzIwMzI2MUNBMDBGMjY5NjAgLyogQXN5bmNQb2xpY3lGb3JOYXZpZ2F0aW9uUmVz
cG9uc2UubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VCNDFBNDExQTdFMDA0NDdDNEMgLyog
QXR0cmlidXRlZFN0cmluZy5tbSBpbiBTb3VyY2VzICovLApAQCAtNTk1Nyw2ICs1OTYxLDcgQEAK
IAkJCWZpbGVzID0gKAogCQkJCTA3N0E1QUYzMjMwNjM4QTYwMEE3MTA1QyAvKiBBY2Nlc3NpYmls
aXR5VGVzdFBsdWdpbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTM3RTdERDY3MUVBMDcxRjMwMDlC
Mzk2RCAvKiBBZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxzUGx1Z2luLm1tIGluIFNvdXJj
ZXMgKi8sCisJCQkJNDkxQUVFRjgyNjUyRTMzNTAwRDUzMEE4IC8qIEFwcFByaXZhY3lSZXBvcnRQ
bHVnSW4ubW0gaW4gU291cmNlcyAqLywKIAkJCQk3NTRDRUM4MTFGNjcyMkYyMDBEMDAzOUEgLyog
QXV0b0ZpbGxBdmFpbGFibGUubW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzQyNTk0NjIyNjZBNjhB
MDAzOUFBN0EgLyogQmFzaWNQcm9wb3NlZENyZWRlbnRpYWxQbHVnSW4ubW0gaW4gU291cmNlcyAq
LywKIAkJCQkzNzRCN0E2MTFERjM3MUNGMDBBQ0NCNkMgLyogQnVuZGxlRWRpdGluZ0RlbGVnYXRl
UGx1Z0luLm1tIGluIFNvdXJjZXMgKi8sCkBAIC01OTcyLDcgKzU5NzcsNiBAQAogCQkJCUY0QjAx
Njg0MjVBRTA4RjgwMEU0NDVDNCAvKiBEaXNhYmxlU3BlbGxjaGVja1BsdWdJbi5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxOEVFNTE5MjBBNzhDRTUwMEUwMjRGMyAvKiBEb3VibGVEZWZlcnNMb2Fk
aW5nUGx1Z2luLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNCNUIzQzIxRkZDNTVDRjAwQzI3QkIw
IC8qIEZyYW1lSGFuZGxlU2VyaWFsaXphdGlvbi5tbSBpbiBTb3VyY2VzICovLAotCQkJCTQ5MUFF
RUY4MjY1MkUzMzUwMEQ1MzBBOCAvKiBJbkFwcEJyb3dzZXJQcml2YWN5UGx1Z0luLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJRjQ2MEY2NUIyNjExMTk1ODAwNjRGMkI2IC8qIEluamVjdGVkQnVuZGxl
SGl0VGVzdFBsdWdJbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBFNDA0QThDMjE2NkRFMEEwMDgy
NzFCQSAvKiBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGVJc1NlbGVjdEVsZW1lbnQubW0gaW4gU291
cmNlcyAqLywKIAkJCQk3OUM1RDQzMTIwOUQ3NjgzMDBGMUU3Q0EgLyogSW5qZWN0ZWRCdW5kbGVO
b2RlSGFuZGxlSXNUZXh0RmllbGQubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44ZDUwMWEwNmZiN2YyZmJjYWQwNGMxYzQwMDQxNDk3ZDAyYTE4M2I4Ci0tLSAv
ZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQ
cml2YWN5UmVwb3J0Lm1tCkBAIC0wLDAgKzEsNzAyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisKKyNpbXBvcnQgIkhUVFBTZXJ2ZXIuaCIKKyNpbXBvcnQgIlBsYXRmb3JtVXRp
bGl0aWVzLmgiCisjaW1wb3J0ICJTZXJ2aWNlV29ya2VyVENQU2VydmVyLmgiCisjaW1wb3J0ICJU
ZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCisjaW1wb3J0ICJUZXN0VUlEZWxlZ2F0ZS5oIgorI2lt
cG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4
dHJhcy5oIgorI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGTlNVUkxDb25uZWN0aW9uLmg+CisjaW1wb3J0
IDxGb3VuZGF0aW9uL05TVVJMUmVxdWVzdC5oPgorI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5j
ZXNQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3Rpbmcu
aD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg+CisjaW1wb3J0
IDx3dGYvUnVuTG9vcC5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKKyNpZiBF
TkFCTEUoQVBQX1BSSVZBQ1lfUkVQT1JUKQorVEVTVChBcHBQcml2YWN5UmVwb3J0LCBEZWZhdWx0
UmVxdWVzdElzQXBwSW5pdGlhdGVkKQoreworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisKKyAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1Jl
Y3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIE5TU3RyaW5n
ICp1cmwgPSBAImh0dHBzOi8vd2Via2l0Lm9yZyI7CisKKyAgICBfX2Jsb2NrIGJvb2wgaXNEb25l
ID0gZmFsc2U7CisgICAgLy8gRG9uJ3Qgc2V0IHRoZSBhdHRyaWJ1dGlvbiBBUEkgb24gTlNVUkxS
ZXF1ZXN0IHRvIG1ha2Ugc3VyZSB0aGUgZGVmYXVsdCBpcyBhcHAgaW5pdGlhdGVkLgorICAgIFt3
ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVS
TFdpdGhTdHJpbmc6dXJsXV1dOworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hO
YXZpZ2F0aW9uXTsKKworICAgIFt3ZWJWaWV3IF9sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRl
ZDpeKEJPT0wgaXNBcHBJbml0aWF0ZWQpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoaXNBcHBJbml0
aWF0ZWQpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworCisgICAgaXNEb25lID0gZmFsc2U7CisgICAgW3dl
YlZpZXcgX2FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YTpeKHN0cnVjdCBXS0FwcFByaXZhY3lS
ZXBvcnRUZXN0aW5nRGF0YSBkYXRhKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKGRhdGEuaGFzTG9h
ZGVkQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcpOworICAgICAgICBFWFBFQ1RfRkFMU0UoZGF0
YS5oYXNMb2FkZWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZyk7CisgICAgICAgIGlzRG9u
ZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9u
ZSk7Cit9CisKK1RFU1QoQXBwUHJpdmFjeVJlcG9ydCwgQXBwSW5pdGlhdGVkUmVxdWVzdCkKK3sK
KyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0pOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKKyAgICBOU1N0cmluZyAqdXJsID0gQCJodHRwczovL3dlYmtpdC5v
cmciOworCisgICAgX19ibG9jayBib29sIGlzRG9uZSA9IGZhbHNlOworICAgIE5TTXV0YWJsZVVS
TFJlcXVlc3QgKmFwcEluaXRpYXRlZFJlcXVlc3QgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1
ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzp1cmxdXTsKKyAgICBhcHBJbml0aWF0ZWRS
ZXF1ZXN0LmF0dHJpYnV0aW9uID0gTlNVUkxSZXF1ZXN0QXR0cmlidXRpb25EZXZlbG9wZXI7CisK
KyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDphcHBJbml0aWF0ZWRSZXF1ZXN0XTsKKyAgICBbd2Vi
VmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisKKyAgICBbd2ViVmlldyBf
bGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6XihCT09MIGlzQXBwSW5pdGlhdGVkKSB7Cisg
ICAgICAgIEVYUEVDVF9UUlVFKGlzQXBwSW5pdGlhdGVkKTsKKyAgICAgICAgaXNEb25lID0gdHJ1
ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKwor
ICAgIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9hcHBQcml2YWN5UmVwb3J0VGVzdGlu
Z0RhdGE6XihzdHJ1Y3QgV0tBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEgZGF0YSkgeworICAg
ICAgICBFWFBFQ1RfVFJVRShkYXRhLmhhc0xvYWRlZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5n
KTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGRhdGEuaGFzTG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVx
dWVzdFRlc3RpbmcpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworfQorCitURVNUKEFwcFByaXZhY3lSZXBv
cnQsIE5vbkFwcEluaXRpYXRlZFJlcXVlc3QpCit7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKworICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
OkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgTlNT
dHJpbmcgKnVybCA9IEAiaHR0cHM6Ly93ZWJraXQub3JnIjsKKworICAgIF9fYmxvY2sgYm9vbCBp
c0RvbmUgPSBmYWxzZTsKKyAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpub25BcHBJbml0aWF0ZWRS
ZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdp
dGhTdHJpbmc6dXJsXV07CisgICAgbm9uQXBwSW5pdGlhdGVkUmVxdWVzdC5hdHRyaWJ1dGlvbiA9
IE5TVVJMUmVxdWVzdEF0dHJpYnV0aW9uVXNlcjsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0
Om5vbkFwcEluaXRpYXRlZFJlcXVlc3RdOworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRG
aW5pc2hOYXZpZ2F0aW9uXTsKKworICAgIFt3ZWJWaWV3IF9sYXN0TmF2aWdhdGlvbldhc0FwcElu
aXRpYXRlZDpeKEJPT0wgaXNBcHBJbml0aWF0ZWQpIHsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGlz
QXBwSW5pdGlhdGVkKTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKworICAgIGlzRG9uZSA9IGZhbHNlOwor
ICAgIFt3ZWJWaWV3IF9hcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGE6XihzdHJ1Y3QgV0tBcHBQ
cml2YWN5UmVwb3J0VGVzdGluZ0RhdGEgZGF0YSkgeworICAgICAgICBFWFBFQ1RfRkFMU0UoZGF0
YS5oYXNMb2FkZWRBcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZyk7CisgICAgICAgIEVYUEVDVF9U
UlVFKGRhdGEuaGFzTG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcpOworICAgICAg
ICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZpc0RvbmUpOworfQorCitURVNUKEFwcFByaXZhY3lSZXBvcnQsIEFwcEluaXRpYXRlZFJlcXVl
c3RXaXRoTmF2aWdhdGlvbikKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworCisgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVy
byBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBOU1N0cmluZyAqYXBw
SW5pdGlhdGVkVVJMID0gQCJodHRwczovL3d3dy53ZWJraXQub3JnIjsKKyAgICBOU1N0cmluZyAq
bm9uQXBwSW5pdGlhdGVkVVJMID0gQCJodHRwczovL3d3dy5hcHBsZS5jb20iOworCisgICAgTlNN
dXRhYmxlVVJMUmVxdWVzdCAqYXBwSW5pdGlhdGVkUmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1
ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOmFwcEluaXRpYXRlZFVSTF1d
OworICAgIGFwcEluaXRpYXRlZFJlcXVlc3QuYXR0cmlidXRpb24gPSBOU1VSTFJlcXVlc3RBdHRy
aWJ1dGlvbkRldmVsb3BlcjsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OmFwcEluaXRpYXRl
ZFJlcXVlc3RdOworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9u
XTsKKworICAgIF9fYmxvY2sgYm9vbCBpc0RvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfbGFz
dE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6XihCT09MIGlzQXBwSW5pdGlhdGVkKSB7CisgICAg
ICAgIEVYUEVDVF9UUlVFKGlzQXBwSW5pdGlhdGVkKTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsK
KyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKworICAg
IGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9hcHBQcml2YWN5UmVwb3J0VGVzdGluZ0Rh
dGE6XihzdHJ1Y3QgV0tBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEgZGF0YSkgeworICAgICAg
ICBFWFBFQ1RfVFJVRShkYXRhLmhhc0xvYWRlZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nKTsK
KyAgICAgICAgRVhQRUNUX0ZBTFNFKGRhdGEuaGFzTG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVz
dFRlc3RpbmcpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworCisgICAgaXNEb25lID0gZmFsc2U7CisgICAg
TlNNdXRhYmxlVVJMUmVxdWVzdCAqbm9uQXBwSW5pdGlhdGVkUmVxdWVzdCA9IFtOU011dGFibGVV
UkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOm5vbkFwcEluaXRp
YXRlZFVSTF1dOworICAgIG5vbkFwcEluaXRpYXRlZFJlcXVlc3QuYXR0cmlidXRpb24gPSBOU1VS
TFJlcXVlc3RBdHRyaWJ1dGlvblVzZXI7CisKKyAgICBpc0RvbmUgPSBmYWxzZTsKKyAgICBbd2Vi
VmlldyBfY2xlYXJBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGE6XnsKKyAgICAgICAgaXNEb25l
ID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25l
KTsKKworICAgIC8vIExvYWQgYSBub24gYXBwIGluaXRhdGVkIHJlcXVlc3QgYW5kIGNvbmZpcm0g
dGhlIGxvYWRzIGFyZSBtYXJrZWQgY29ycmVjdGx5LgorICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0
Om5vbkFwcEluaXRpYXRlZFJlcXVlc3RdOworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRG
aW5pc2hOYXZpZ2F0aW9uXTsKKworICAgIFt3ZWJWaWV3IF9sYXN0TmF2aWdhdGlvbldhc0FwcElu
aXRpYXRlZDpeKEJPT0wgaXNBcHBJbml0aWF0ZWQpIHsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGlz
QXBwSW5pdGlhdGVkKTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKworICAgIGlzRG9uZSA9IGZhbHNlOwor
ICAgIFt3ZWJWaWV3IF9hcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGE6XihzdHJ1Y3QgV0tBcHBQ
cml2YWN5UmVwb3J0VGVzdGluZ0RhdGEgZGF0YSkgeworICAgICAgICBFWFBFQ1RfRkFMU0UoZGF0
YS5oYXNMb2FkZWRBcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZyk7CisgICAgICAgIEVYUEVDVF9U
UlVFKGRhdGEuaGFzTG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcpOworICAgICAg
ICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZpc0RvbmUpOworfQorCitURVNUKEFwcFByaXZhY3lSZXBvcnQsIEFwcEluaXRpYXRlZFJlcXVl
c3RXaXRoU3ViRnJhbWUpCit7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBf
c2V0T3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3k6QCJzY3JpcHQtc3JjICdub25jZS1iJyJd
OworCisgICAgX19ibG9jayBib29sIGlzRG9uZSA9IGZhbHNlOworICAgIGF1dG8gd2ViVmlldyA9
IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAg
IE5TTXV0YWJsZVVSTFJlcXVlc3QgKmFwcEluaXRpYXRlZFJlcXVlc3QgPSBbTlNNdXRhYmxlVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291
cmNlOkAicGFnZS13aXRoLWNzcCIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpA
IlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOworICAgIGFwcEluaXRpYXRlZFJlcXVlc3QuYXR0
cmlidXRpb24gPSBOU1VSTFJlcXVlc3RBdHRyaWJ1dGlvbkRldmVsb3BlcjsKKworICAgIFt3ZWJW
aWV3IGxvYWRSZXF1ZXN0OmFwcEluaXRpYXRlZFJlcXVlc3RdOworCisgICAgW3dlYlZpZXcgd2Fp
dEZvck1lc3NhZ2U6QCJNYWluRnJhbWU6IEIiXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2Fn
ZTpAIlN1YmZyYW1lOiBCIl07CisKKyAgICBbd2ViVmlldyBfYXBwUHJpdmFjeVJlcG9ydFRlc3Rp
bmdEYXRhOiBeKHN0cnVjdCBXS0FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSBkYXRhKSB7Cisg
ICAgICAgIEVYUEVDVF9UUlVFKGRhdGEuaGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3Rp
bmcpOworICAgICAgICBFWFBFQ1RfRkFMU0UoZGF0YS5oYXNMb2FkZWROb25BcHBJbml0aWF0ZWRS
ZXF1ZXN0VGVzdGluZyk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Cit9CisKK1RFU1QoQXBwUHJpdmFjeVJl
cG9ydCwgTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFdpdGhTdWJGcmFtZSkKK3sKKyAgICBhdXRvIGNv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOworICAgIFtjb25maWd1cmF0aW9uIF9zZXRPdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGlj
eTpAInNjcmlwdC1zcmMgJ25vbmNlLWInIl07CisKKyAgICBfX2Jsb2NrIGJvb2wgaXNEb25lID0g
ZmFsc2U7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqbm9uQXBwSW5p
dGlhdGVkUmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNC
dW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJwYWdlLXdpdGgtY3NwIiB3aXRoRXh0
ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07
CisgICAgbm9uQXBwSW5pdGlhdGVkUmVxdWVzdC5hdHRyaWJ1dGlvbiA9IE5TVVJMUmVxdWVzdEF0
dHJpYnV0aW9uVXNlcjsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0Om5vbkFwcEluaXRpYXRl
ZFJlcXVlc3RdOworCisgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJNYWluRnJhbWU6IEIi
XTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIlN1YmZyYW1lOiBCIl07CisKKyAgICBb
d2ViVmlldyBfYXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhOiBeKHN0cnVjdCBXS0FwcFByaXZh
Y3lSZXBvcnRUZXN0aW5nRGF0YSBkYXRhKSB7CisgICAgICAgIEVYUEVDVF9GQUxTRShkYXRhLmhh
c0xvYWRlZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nKTsKKyAgICAgICAgRVhQRUNUX1RSVUUo
ZGF0YS5oYXNMb2FkZWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZyk7CisgICAgICAgIGlz
RG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlz
RG9uZSk7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyKiBtYWluU1dCeXRlcyA9IFIiU1dSRVNPVVJD
RSgKKzxzY3JpcHQ+Cit0cnkgeworICAgIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVy
KCcvc3cuanMnKS50aGVuKGZ1bmN0aW9uKHJlZykgeworICAgICAgICBpZiAocmVnLmFjdGl2ZSkg
eworICAgICAgICAgICAgYWxlcnQoJ3dvcmtlciBhbHJlYWR5IGFjdGl2ZScpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHdvcmtlciA9IHJlZy5pbnN0YWxsaW5nOwor
ICAgICAgICB3b3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignc3RhdGVjaGFuZ2UnLCBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgIGlmICh3b3JrZXIuc3RhdGUgPT0gJ2FjdGl2YXRlZCcpCisgICAgICAg
ICAgICAgICAgYWxlcnQoJ3N1Y2Nlc3NmdWxseSByZWdpc3RlcmVkJyk7CisgICAgICAgIH0pOwor
ICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGVycm9yKSB7CisgICAgICAgIGFsZXJ0KCdSZWdpc3RyYXRp
b24gZmFpbGVkIHdpdGg6ICcgKyBlcnJvcik7CisgICAgfSk7Cit9IGNhdGNoKGUpIHsKKyAgICBh
bGVydCgnRXhjZXB0aW9uOiAnICsgZSk7Cit9Cis8L3NjcmlwdD4KKylTV1JFU09VUkNFIjsKKwor
ZW51bSBjbGFzcyBSZXNwb25zZVR5cGUgeyBTeW50aGV0aWMsIEZldGNoZWQgfTsKK2VudW0gY2xh
c3MgSXNBcHBJbml0aWF0ZWQgOiBib29sIHsgTm8sIFllcyB9Oworc3RhdGljIHZvaWQgcnVuVGVz
dChSZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBlLCBJc0FwcEluaXRpYXRlZCBpc0FwcEluaXRpYXRl
ZCkKK3sKKyAgICBzdGF0aWMgYm9vbCBpc0RvbmUgPSBmYWxzZTsKKyAgICBbW1dLV2Vic2l0ZURh
dGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0
YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50
UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAg
ICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisKKyAgICBjb25z
dCBjaGFyKiBqcyA9IG51bGxwdHI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWRBbGVydCA9IG51
bGxwdHI7CisKKyAgICBzd2l0Y2ggKHJlc3BvbnNlVHlwZSkgeworICAgIGNhc2UgUmVzcG9uc2VU
eXBlOjpTeW50aGV0aWM6CisgICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0
Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgobmV3IFJlc3BvbnNlKG5ldyBCbG9i
KFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyByZXNwb25zZVwiKTwvc2NyaXB0PiddLCB7dHlw
ZTogJ3RleHQvaHRtbCd9KSkpOyB9KSI7CisgICAgICAgIGV4cGVjdGVkQWxlcnQgPSAic3ludGhl
dGljIHJlc3BvbnNlIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSZXNwb25zZVR5cGU6OkZl
dGNoZWQ6CisgICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZl
bnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgoZmV0Y2goJy9mZXRjaGVkLmh0bWwnKSkgfSk7IjsK
KyAgICAgICAgZXhwZWN0ZWRBbGVydCA9ICJmZXRjaGVkIGZyb20gc2VydmVyIjsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorCisgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewor
ICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyIsIHsg
e3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9LAor
ICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIiwgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9t
IHNlcnZlcicpPC9zY3JpcHQ+IiB9IH0sCisgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZl
cjo6UHJvdG9jb2w6Okh0dHBzKTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2Vi
VmlldyBuZXddKTsKKworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlv
bkRlbGVnYXRlIG5ld10pOworICAgIFtkZWxlZ2F0ZSBzZXREaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2U6XihXS1dlYlZpZXcgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAq
Y2hhbGxlbmdlLCB2b2lkICheY2FsbGJhY2spKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNw
b3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICopKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShj
aGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kLCBOU1VSTEF1dGhl
bnRpY2F0aW9uTWV0aG9kU2VydmVyVHJ1c3QpOworICAgICAgICBjYWxsYmFjayhOU1VSTFNlc3Np
b25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgW05TVVJMQ3JlZGVudGlhbCBjcmVkZW50aWFs
Rm9yVHJ1c3Q6Y2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJUcnVzdF0pOworICAgIH1d
OworICAgIHdlYlZpZXcuZ2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7
CisKKyAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVl
c3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6QCJodHRwczovLzEyNy4wLjAuMTolZC8iLCBzZXJ2ZXIucG9ydCgpXV1dOworICAg
IGF1dG8gYXR0cmlidXRpb25WYWx1ZSA9IGlzQXBwSW5pdGlhdGVkID09IElzQXBwSW5pdGlhdGVk
OjpZZXMgPyBOU1VSTFJlcXVlc3RBdHRyaWJ1dGlvbkRldmVsb3BlciA6IE5TVVJMUmVxdWVzdEF0
dHJpYnV0aW9uVXNlcjsKKyAgICByZXF1ZXN0LmF0dHJpYnV0aW9uID0gYXR0cmlidXRpb25WYWx1
ZTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworICAgIEVYUEVDVF9XS19T
VFJFUShbd2ViVmlldyBfdGVzdF93YWl0Rm9yQWxlcnRdLCAic3VjY2Vzc2Z1bGx5IHJlZ2lzdGVy
ZWQiKTsKKworICAgIGlmIChyZXNwb25zZVR5cGUgIT0gUmVzcG9uc2VUeXBlOjpGZXRjaGVkKQor
ICAgICAgICBzZXJ2ZXIuY2FuY2VsKCk7CisKKyAgICBib29sIGV4cGVjdGluZ0FwcEluaXRpYXRl
ZFJlcXVlc3RzID0gaXNBcHBJbml0aWF0ZWQgPT0gSXNBcHBJbml0aWF0ZWQ6OlllczsKKyAgICBp
c0RvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfYXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRh
OiBeKHN0cnVjdCBXS0FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSBkYXRhKSB7CisgICAgICAg
IEVYUEVDVF9FUShkYXRhLmhhc0xvYWRlZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nLCBleHBl
Y3RpbmdBcHBJbml0aWF0ZWRSZXF1ZXN0cyk7CisgICAgICAgIEVYUEVDVF9FUShkYXRhLmhhc0xv
YWRlZE5vbkFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nLCAhZXhwZWN0aW5nQXBwSW5pdGlhdGVk
UmVxdWVzdHMpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgaXNEb25l
ID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2NsZWFyQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRh
Ol57CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmlzRG9uZSk7CisKKyAgICBbd2ViVmlldyByZWxvYWRdOworICAgIEVYUEVD
VF9XS19TVFJFUShbd2ViVmlldyBfdGVzdF93YWl0Rm9yQWxlcnRdLCBleHBlY3RlZEFsZXJ0KTsK
KworICAgIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9hcHBQcml2YWN5UmVwb3J0VGVz
dGluZ0RhdGE6IF4oc3RydWN0IFdLQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhIGRhdGEpIHsK
KyAgICAgICAgaWYgKHJlc3BvbnNlVHlwZSA9PSBSZXNwb25zZVR5cGU6OlN5bnRoZXRpYykgewor
ICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGRhdGEuaGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVz
dFRlc3RpbmcpOworICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGRhdGEuaGFzTG9hZGVkTm9uQXBw
SW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
RVhQRUNUX0VRKGRhdGEuaGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcsIGV4cGVj
dGluZ0FwcEluaXRpYXRlZFJlcXVlc3RzKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShkYXRhLmhh
c0xvYWRlZE5vbkFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nLCAhZXhwZWN0aW5nQXBwSW5pdGlh
dGVkUmVxdWVzdHMpOworICAgICAgICB9CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07
CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Cit9CisKK1RFU1QoQXBw
UHJpdmFjeVJlcG9ydCwgTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFdpdGhTZXJ2aWNlV29ya2VyKQor
eworICAgIHJ1blRlc3QoUmVzcG9uc2VUeXBlOjpTeW50aGV0aWMsIElzQXBwSW5pdGlhdGVkOjpO
byk7CisgICAgcnVuVGVzdChSZXNwb25zZVR5cGU6OkZldGNoZWQsIElzQXBwSW5pdGlhdGVkOjpO
byk7Cit9CisKK1RFU1QoQXBwUHJpdmFjeVJlcG9ydCwgQXBwSW5pdGlhdGVkUmVxdWVzdFdpdGhT
ZXJ2aWNlV29ya2VyKQoreworICAgIHJ1blRlc3QoUmVzcG9uc2VUeXBlOjpTeW50aGV0aWMsIElz
QXBwSW5pdGlhdGVkOjpZZXMpOworICAgIHJ1blRlc3QoUmVzcG9uc2VUeXBlOjpGZXRjaGVkLCBJ
c0FwcEluaXRpYXRlZDo6WWVzKTsKK30KKworVEVTVChBcHBQcml2YWN5UmVwb3J0LCBNdWx0aXBs
ZVdlYlZpZXdzV2l0aFNoYXJlZFNlcnZpY2VXb3JrZXIpCit7CisgICAgc3RhdGljIGJvb2wgaXNE
b25lID0gZmFsc2U7CisKKyAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3Jl
XSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlw
ZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6
XigpIHsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmlzRG9uZSk7CisKKyAgICBjb25zdCBjaGFyKiBqcyA9ICJzZWxmLmFkZEV2
ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNo
KCcvZmV0Y2hlZC5odG1sJykpIH0pIjsKKyAgICBjb25zdCBjaGFyKiBleHBlY3RlZEFsZXJ0ID0g
ImZldGNoZWQgZnJvbSBzZXJ2ZXIiOworCisgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBz
ZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgIHsgIi9z
dy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwg
anMgfSB9LAorICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIiwgeyAiPHNjcmlwdD5hbGVydCgnZmV0
Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+IiB9IH0sCisgICAgfSwgVGVzdFdlYktpdEFQSTo6
SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKKworICAgIGF1dG8gd2ViVmlldzEgPSBhZG9w
dE5TKFtXS1dlYlZpZXcgbmV3XSk7CisgICAgYXV0byB3ZWJWaWV3MiA9IGFkb3B0TlMoW1dLV2Vi
VmlldyBuZXddKTsKKworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlv
bkRlbGVnYXRlIG5ld10pOworICAgIFtkZWxlZ2F0ZSBzZXREaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2U6XihXS1dlYlZpZXcgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAq
Y2hhbGxlbmdlLCB2b2lkICheY2FsbGJhY2spKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNw
b3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICopKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShj
aGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kLCBOU1VSTEF1dGhl
bnRpY2F0aW9uTWV0aG9kU2VydmVyVHJ1c3QpOworICAgICAgICBjYWxsYmFjayhOU1VSTFNlc3Np
b25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgW05TVVJMQ3JlZGVudGlhbCBjcmVkZW50aWFs
Rm9yVHJ1c3Q6Y2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJUcnVzdF0pOworICAgIH1d
OworICAgIHdlYlZpZXcxLmdldCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgp
OworICAgIHdlYlZpZXcyLmdldCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgp
OworCisgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqYXBwSW5pdGlhdGVkUmVxdWVzdCA9IFtOU011
dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyLnBv
cnQoKV1dXTsKKyAgICBhcHBJbml0aWF0ZWRSZXF1ZXN0LmF0dHJpYnV0aW9uID0gTlNVUkxSZXF1
ZXN0QXR0cmlidXRpb25EZXZlbG9wZXI7CisgICAgW3dlYlZpZXcxIGxvYWRSZXF1ZXN0OmFwcElu
aXRpYXRlZFJlcXVlc3RdOworICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldzEgX3Rlc3Rfd2Fp
dEZvckFsZXJ0XSwgInN1Y2Nlc3NmdWxseSByZWdpc3RlcmVkIik7CisKKyAgICBbd2ViVmlldzEg
cmVsb2FkXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcxIF90ZXN0X3dhaXRGb3JBbGVy
dF0sIGV4cGVjdGVkQWxlcnQpOworCisgICAgaXNEb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcx
IF9hcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGE6IF4oc3RydWN0IFdLQXBwUHJpdmFjeVJlcG9y
dFRlc3RpbmdEYXRhIGRhdGEpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoZGF0YS5oYXNMb2FkZWRB
cHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZyk7CisgICAgICAgIEVYUEVDVF9GQUxTRShkYXRhLmhh
c0xvYWRlZE5vbkFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nKTsKKyAgICAgICAgaXNEb25lID0g
dHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsK
KworICAgIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3MSBfY2xlYXJBcHBQcml2YWN5UmVw
b3J0VGVzdGluZ0RhdGE6XnsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKworICAgIGlzRG9uZSA9IGZhbHNl
OworICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5vbkFwcEluaXRpYXRlZFJlcXVlc3QgPSBbTlNN
dXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNT
dHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlci5w
b3J0KCldXV07CisgICAgbm9uQXBwSW5pdGlhdGVkUmVxdWVzdC5hdHRyaWJ1dGlvbiA9IE5TVVJM
UmVxdWVzdEF0dHJpYnV0aW9uVXNlcjsKKyAgICBbd2ViVmlldzIgbG9hZFJlcXVlc3Q6bm9uQXBw
SW5pdGlhdGVkUmVxdWVzdF07CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3MiBfdGVzdF93
YWl0Rm9yQWxlcnRdLCAiZmV0Y2hlZCBmcm9tIHNlcnZlciIpOworCisgICAgW3dlYlZpZXcyIHJl
bG9hZF07CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3MiBfdGVzdF93YWl0Rm9yQWxlcnRd
LCBleHBlY3RlZEFsZXJ0KTsKKworICAgIFt3ZWJWaWV3MiBfYXBwUHJpdmFjeVJlcG9ydFRlc3Rp
bmdEYXRhOiBeKHN0cnVjdCBXS0FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSBkYXRhKSB7Cisg
ICAgICAgIEVYUEVDVF9GQUxTRShkYXRhLmhhc0xvYWRlZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0
aW5nKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoZGF0YS5oYXNMb2FkZWROb25BcHBJbml0aWF0ZWRS
ZXF1ZXN0VGVzdGluZyk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworfQorCitzdGF0aWMgdm9pZCBzb2Z0VXBk
YXRlVGVzdChJc0FwcEluaXRpYXRlZCBpc0FwcEluaXRpYXRlZCkKK3sKKyAgICBzdGF0aWMgYm9v
bCBpc0RvbmUgPSBmYWxzZTsKKyAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0
b3JlXSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRh
VHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRs
ZXI6XigpIHsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhb
VGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBuZXddKTsKKyAgICBbZGVsZWdhdGUgc2V0RGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOl4oV0tXZWJWaWV3ICosIE5TVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwgdm9pZCAoXmNhbGxiYWNrKShOU1VSTFNlc3Npb25BdXRo
Q2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqKSkgeworICAgICAgICBFWFBF
Q1RfV0tfU1RSRVEoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlvbk1ldGhv
ZCwgTlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZFNlcnZlclRydXN0KTsKKyAgICAgICAgY2FsbGJh
Y2soTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWwsIFtOU1VSTENyZWRlbnRp
YWwgY3JlZGVudGlhbEZvclRydXN0OmNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uuc2VydmVyVHJ1
c3RdKTsKKyAgICB9XTsKKworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dl
YlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byB3ZWJWaWV3MSA9IGFk
b3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4
MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgYXV0byB3
ZWJWaWV3MiA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7
CisKKyAgICB3ZWJWaWV3MS5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQo
KTsKKyAgICB3ZWJWaWV3Mi5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQo
KTsKKworICAgIHVpbnQxNl90IHNlcnZlclBvcnQ7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGpz
ID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVz
cG9uZFdpdGgobmV3IFJlc3BvbnNlKG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRp
YyByZXNwb25zZVwiKTwvc2NyaXB0PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9KSI7CisK
KyAgICB7CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMSh7CisgICAg
ICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgICAgICB7ICIvc3cuanMi
LCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0g
fSwKKyAgICAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBz
LCBudWxscHRyLCB0ZXN0SWRlbnRpdHkoKSk7CisgICAgICAgIHNlcnZlclBvcnQgPSBzZXJ2ZXIx
LnBvcnQoKTsKKworICAgICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBzZXJ2ZXIxLnJlcXVl
c3QoKTsKKyAgICAgICAgaWYgKGlzQXBwSW5pdGlhdGVkID09IElzQXBwSW5pdGlhdGVkOjpObykg
eworICAgICAgICAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqbm9uQXBwSW5pdGlhdGVkUmVxdWVz
dCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwg
c2VydmVyMS5wb3J0KCldXV07CisgICAgICAgICAgICBub25BcHBJbml0aWF0ZWRSZXF1ZXN0LmF0
dHJpYnV0aW9uID0gTlNVUkxSZXF1ZXN0QXR0cmlidXRpb25EZXZlbG9wZXI7CisgICAgICAgICAg
ICByZXF1ZXN0ID0gbm9uQXBwSW5pdGlhdGVkUmVxdWVzdDsKKyAgICAgICAgfQorCisgICAgICAg
IFt3ZWJWaWV3MSBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVR
KFt3ZWJWaWV3MSBfdGVzdF93YWl0Rm9yQWxlcnRdLCAic3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyZWQi
KTsKKworICAgICAgICBzZXJ2ZXIxLmNhbmNlbCgpOworICAgIH0KKworICAgIHsKKyAgICAgICAg
VGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIyKHsKKyAgICAgICAgICAgIHsgIi8iLCB7
IG1haW5TV0J5dGVzIH0gfSwKKyAgICAgICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQt
VHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9CisgICAgICAgIH0sIFRl
c3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywgbnVsbHB0ciwgdGVzdElk
ZW50aXR5MigpLCBzZXJ2ZXJQb3J0KTsKKworICAgICAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpy
ZXF1ZXN0MiA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxX
aXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6
JWQvIiwgc2VydmVyMi5wb3J0KCldXV07CisgICAgICAgIGF1dG8gYXR0cmlidXRpb25WYWx1ZSA9
IGlzQXBwSW5pdGlhdGVkID09IElzQXBwSW5pdGlhdGVkOjpZZXMgPyBOU1VSTFJlcXVlc3RBdHRy
aWJ1dGlvbkRldmVsb3BlciA6IE5TVVJMUmVxdWVzdEF0dHJpYnV0aW9uVXNlcjsKKyAgICAgICAg
cmVxdWVzdDIuYXR0cmlidXRpb24gPSBhdHRyaWJ1dGlvblZhbHVlOworCisgICAgICAgIGlzRG9u
ZSA9IGZhbHNlOworICAgICAgICBbd2ViVmlldzEgX2NsZWFyQXBwUHJpdmFjeVJlcG9ydFRlc3Rp
bmdEYXRhOl57CisgICAgICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgICAgICB9XTsKKworICAg
ICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisKKyAgICAgICAgW3dlYlZp
ZXcyIGxvYWRSZXF1ZXN0OnJlcXVlc3QyXTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJW
aWV3MiBfdGVzdF93YWl0Rm9yQWxlcnRdLCAic3ludGhldGljIHJlc3BvbnNlIik7CisgICAgfQor
CisgICAgaXNEb25lID0gZmFsc2U7CisgICAgYm9vbCBleHBlY3RpbmdBcHBJbml0aWF0ZWRSZXF1
ZXN0cyA9IGlzQXBwSW5pdGlhdGVkID09IElzQXBwSW5pdGlhdGVkOjpZZXMgPyB0cnVlIDogZmFs
c2U7CisgICAgd2hpbGUgKCFpc0RvbmUpIHsKKyAgICAgICAgW3dlYlZpZXcyIF9hcHBQcml2YWN5
UmVwb3J0VGVzdGluZ0RhdGE6IF4oc3RydWN0IFdLQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRh
IGRhdGEpIHsKKyAgICAgICAgICAgIGlmICghZGF0YS5kaWRQZXJmb3JtU29mdFVwZGF0ZSkKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIEVYUEVDVF9FUShkYXRhLmhhc0xv
YWRlZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nLCBleHBlY3RpbmdBcHBJbml0aWF0ZWRSZXF1
ZXN0cyk7CisgICAgICAgICAgICBFWFBFQ1RfRVEoZGF0YS5oYXNMb2FkZWROb25BcHBJbml0aWF0
ZWRSZXF1ZXN0VGVzdGluZywgIWV4cGVjdGluZ0FwcEluaXRpYXRlZFJlcXVlc3RzKTsKKyAgICAg
ICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgICAgIH1dOworICAgICAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpzcGluUnVuTG9vcCgxKTsKKyAgICB9Cit9CisKK1RFU1QoQXBwUHJpdmFjeVJlcG9y
dCwgQXBwSW5pdGlhdGVkUmVxdWVzdFdpdGhTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZSkKK3sKKyAg
ICBzb2Z0VXBkYXRlVGVzdChJc0FwcEluaXRpYXRlZDo6WWVzKTsKK30KKworVEVTVChBcHBQcml2
YWN5UmVwb3J0LCBOb25BcHBJbml0aWF0ZWRSZXF1ZXN0V2l0aFNlcnZpY2VXb3JrZXJTb2Z0VXBk
YXRlKQoreworICAgIHNvZnRVcGRhdGVUZXN0KElzQXBwSW5pdGlhdGVkOjpObyk7Cit9CisKK3N0
YXRpYyB2b2lkIHJ1bldlYlByb2Nlc3NQbHVnSW5UZXN0KElzQXBwSW5pdGlhdGVkIGlzQXBwSW5p
dGlhdGVkKQoreworICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5D
bGFzc05hbWU6QCJBcHBQcml2YWN5UmVwb3J0UGx1Z0luIl07CisgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgw
LCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisKKyAgICBOU1N0
cmluZyAqdXJsID0gQCJodHRwczovL3dlYmtpdC5vcmciOworCisgICAgX19ibG9jayBib29sIGlz
RG9uZSA9IGZhbHNlOworICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNNdXRh
YmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzp1cmxdXTsK
KyAgICBhdXRvIGF0dHJpYnV0aW9uVmFsdWUgPSBpc0FwcEluaXRpYXRlZCA9PSBJc0FwcEluaXRp
YXRlZDo6WWVzID8gTlNVUkxSZXF1ZXN0QXR0cmlidXRpb25EZXZlbG9wZXIgOiBOU1VSTFJlcXVl
c3RBdHRyaWJ1dGlvblVzZXI7CisgICAgcmVxdWVzdC5hdHRyaWJ1dGlvbiA9IGF0dHJpYnV0aW9u
VmFsdWU7CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKyAgICBbd2ViVmll
dyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisKKyAgICBpc0RvbmUgPSBmYWxz
ZTsKKyAgICBib29sIGV4cGVjdGluZ0FwcEluaXRpYXRlZFJlcXVlc3RzID0gaXNBcHBJbml0aWF0
ZWQgPT0gSXNBcHBJbml0aWF0ZWQ6OlllcyA/IHRydWUgOiBmYWxzZTsKKyAgICBbd2ViVmlldyBf
YXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhOl4oc3RydWN0IFdLQXBwUHJpdmFjeVJlcG9ydFRl
c3RpbmdEYXRhIGRhdGEpIHsKKyAgICAgICAgRVhQRUNUX0VRKGRhdGEuaGFzTG9hZGVkQXBwSW5p
dGlhdGVkUmVxdWVzdFRlc3RpbmcsIGV4cGVjdGluZ0FwcEluaXRpYXRlZFJlcXVlc3RzKTsKKyAg
ICAgICAgRVhQRUNUX0VRKGRhdGEuaGFzTG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3Rp
bmcsICFleHBlY3RpbmdBcHBJbml0aWF0ZWRSZXF1ZXN0cyk7CisgICAgICAgIGlzRG9uZSA9IHRy
dWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Cit9
CisKK1RFU1QoQXBwUHJpdmFjeVJlcG9ydCwgV2ViUHJvY2Vzc1BsdWdpblRlc3RBcHBJbml0aWF0
ZWQpCit7CisgICAgcnVuV2ViUHJvY2Vzc1BsdWdJblRlc3QoSXNBcHBJbml0aWF0ZWQ6Olllcyk7
Cit9CisKK1RFU1QoQXBwUHJpdmFjeVJlcG9ydCwgV2ViUHJvY2Vzc1BsdWdpblRlc3ROb25BcHBJ
bml0aWF0ZWQpCit7CisgICAgcnVuV2ViUHJvY2Vzc1BsdWdJblRlc3QoSXNBcHBJbml0aWF0ZWQ6
Ok5vKTsKK30KKworI2lmIFdLX0hBVkVfQ19TUEkKKworc3RhdGljIGNvbnN0IGNoYXIqIG1haW5T
V0J5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAorPHNjcmlwdD4KKworZnVuY3Rpb24g
bG9nKG1zZykKK3sKKyAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5zdy5wb3N0TWVz
c2FnZShtc2cpOworfQorCituYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5hZGRFdmVudExpc3RlbmVy
KCJtZXNzYWdlIiwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBsb2coZXZlbnQuZGF0YSk7Cit9KTsK
KwordHJ5IHsKKyAgICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJyku
dGhlbihmdW5jdGlvbihyZWcpIHsKKyAgICAgICAgaWYgKHJlZy5hY3RpdmUpIHsKKyAgICAgICAg
ICAgIHdvcmtlciA9IHJlZy5hY3RpdmU7CisgICAgICAgICAgICB3b3JrZXIucG9zdE1lc3NhZ2Uo
IlNFQ09ORCIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHdvcmtl
ciA9IHJlZy5pbnN0YWxsaW5nOworICAgICAgICB3b3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignc3Rh
dGVjaGFuZ2UnLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGlmICh3b3JrZXIuc3RhdGUgPT0g
J2FjdGl2YXRlZCcpCisgICAgICAgICAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKCJGSVJTVCIp
OworICAgICAgICB9KTsKKyAgICB9KS5jYXRjaChmdW5jdGlvbihlcnJvcikgeworICAgICAgICBs
b2coJ1JlZ2lzdHJhdGlvbiBmYWlsZWQgd2l0aDogJyArIGVycm9yKTsKKyAgICB9KTsKK30gY2F0
Y2goZSkgeworICAgIGxvZygnRXhjZXB0aW9uOiAnICsgZSk7Cit9Cis8L3NjcmlwdD4KKylTV1JF
U09VUkNFIjsKKworc3RhdGljIGNvbnN0IGNoYXIqIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlID0g
UiJTV1JFU09VUkNFKAorc2VsZi5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgYXN5bmMgKGV2
ZW50KSA9PiB7CisgICAgaWYgKCFzZWxmLmludGVybmFscykgeworICAgICAgICBldmVudC5zb3Vy
Y2UucG9zdE1lc3NhZ2UoJ05vIGludGVybmFscycpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgcXVlcnlBcHBQcml2YWN5UmVwb3J0VmFsdWUoZXZlbnQsIGZhbHNlKTsKK30pOworCith
c3luYyBmdW5jdGlvbiBxdWVyeUFwcFByaXZhY3lSZXBvcnRWYWx1ZShldmVudCwgaGF2ZVNlbnRJ
bml0aWFsTWVzc2FnZSkKK3sKKyAgICB2YXIgcmVzdWx0ID0gYXdhaXQgaW50ZXJuYWxzLmxhc3RO
YXZpZ2F0aW9uV2FzQXBwUHJpdmFjeVJlcG9ydCgpOworICAgIGlmIChyZXN1bHQpIHsKKyAgICAg
ICAgaWYgKGV2ZW50LmRhdGEgPT0gIkZJUlNUIikgeworICAgICAgICAgICAgZXZlbnQuc291cmNl
LnBvc3RNZXNzYWdlKCdhcHAgaW5pdGlhdGVkJyk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoIWhhdmVTZW50SW5pdGlhbE1lc3NhZ2UpCisgICAgICAgICAg
ICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoJ3N0YXJ0cyBhcHAgaW5pdGlhdGVkJyk7CisKKyAg
ICAgICAgcXVlcnlBcHBQcml2YWN5UmVwb3J0VmFsdWUoZXZlbnQsIHRydWUpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCdub24gYXBwIGlu
aXRpYXRlZCcpOworfQorCispU1dSRVNPVVJDRSI7CisKKworc3RhdGljIFN0cmluZyBleHBlY3Rl
ZE1lc3NhZ2U7CitzdGF0aWMgYm9vbCByZWNlaXZlZE1lc3NhZ2UgPSBmYWxzZTsKKworQGludGVy
ZmFjZSBTV0FwcEluaXRpYXRlZFJlcXVlc3RNZXNzYWdlSGFuZGxlciA6IE5TT2JqZWN0IDxXS1Nj
cmlwdE1lc3NhZ2VIYW5kbGVyPgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gU1dBcHBJbml0aWF0
ZWRSZXF1ZXN0TWVzc2FnZUhhbmRsZXIKKy0gKHZvaWQpdXNlckNvbnRlbnRDb250cm9sbGVyOihX
S1VzZXJDb250ZW50Q29udHJvbGxlciAqKXVzZXJDb250ZW50Q29udHJvbGxlciBkaWRSZWNlaXZl
U2NyaXB0TWVzc2FnZTooV0tTY3JpcHRNZXNzYWdlICopbWVzc2FnZQoreworICAgIEVYUEVDVF9X
S19TVFJFUShtZXNzYWdlLmJvZHksIGV4cGVjdGVkTWVzc2FnZSk7CisgICAgcmVjZWl2ZWRNZXNz
YWdlID0gdHJ1ZTsKK30KK0BlbmQKKworVEVTVChBcHBQcml2YWN5UmVwb3J0LCBSZWdpc3RlclNl
cnZpY2VXb3JrZXJDbGllbnRVcGRhdGVzQXBwSW5pdGlhdGVkVmFsdWUpCit7CisgICAgc3RhdGlj
IGJvb2wgaXNEb25lID0gZmFsc2U7CisKKyAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0
RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNp
dGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlv
bkhhbmRsZXI6XigpIHsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisKKyAgICBXS1dlYlZpZXdDb25maWd1cmF0
aW9uICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmln
dXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRl
cm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKKyAgICBXS1JldGFpblB0cjxXS0Nv
bnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFRlc3RXZWJLaXRBUEk6OlV0aWw6OmNyZWF0ZUNv
bnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIkludGVybmFsc0luamVjdGVkQnVuZGxlVGVzdCIp
KTsKKyAgICBjb25maWd1cmF0aW9uLnByb2Nlc3NQb29sID0gKFdLUHJvY2Vzc1Bvb2wgKiljb250
ZXh0LmdldCgpOworCisgICAgUmV0YWluUHRyPFNXQXBwSW5pdGlhdGVkUmVxdWVzdE1lc3NhZ2VI
YW5kbGVyPiBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tTV0FwcEluaXRpYXRlZFJlcXVlc3RN
ZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29u
dGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdl
dCgpIG5hbWU6QCJzdyJdOworCisgICAgYXV0byB3ZWJWaWV3MSA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byB3ZWJWaWV3MiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkg
Y29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRv
cHROUyhbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBuZXddKTsKKyAgICBbZGVsZWdhdGUgc2V0RGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOl4oV0tXZWJWaWV3ICosIE5TVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwgdm9pZCAoXmNhbGxiYWNrKShOU1VSTFNlc3Np
b25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqKSkgeworICAgICAg
ICBFWFBFQ1RfV0tfU1RSRVEoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlv
bk1ldGhvZCwgTlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZFNlcnZlclRydXN0KTsKKyAgICAgICAg
Y2FsbGJhY2soTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWwsIFtOU1VSTENy
ZWRlbnRpYWwgY3JlZGVudGlhbEZvclRydXN0OmNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uuc2Vy
dmVyVHJ1c3RdKTsKKyAgICB9XTsKKworICAgIHdlYlZpZXcxLmdldCgpLm5hdmlnYXRpb25EZWxl
Z2F0ZSA9IGRlbGVnYXRlLmdldCgpOworICAgIHdlYlZpZXcyLmdldCgpLm5hdmlnYXRpb25EZWxl
Z2F0ZSA9IGRlbGVnYXRlLmdldCgpOworCisgICAgU2VydmljZVdvcmtlclRDUFNlcnZlciBzZXJ2
ZXIoeworICAgICAgICB7ICJ0ZXh0L2h0bWwiLCBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSB9LAor
ICAgICAgICB7ICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Iiwgc2NyaXB0Qnl0ZXNEZWZhdWx0VmFs
dWUgfSwKKyAgICB9LCB7CisgICAgICAgIHsgInRleHQvaHRtbCIsIG1haW5TV0J5dGVzRGVmYXVs
dFZhbHVlIH0sCisgICAgICAgIHsgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiLCBzY3JpcHRCeXRl
c0RlZmF1bHRWYWx1ZSB9LAorICAgIH0pOworCisgICAgLy8gTG9hZCBXZWJWaWV3IHdpdGggYW4g
YXBwIGluaXRpYXRlZCByZXF1ZXN0LiBXZSBleHBlY3QgdGhlIFNlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eSB0byBiZSBhcHAgaW5pdGlhdGVkLgorICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJhcHAgaW5p
dGlhdGVkIjsKKyAgICBbd2ViVmlldzEgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07Cisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZE1lc3NhZ2UpOworCisgICAgLy8g
TG9hZCBXZWJWaWV3IHdpdGggYSBub24gYXBwIGluaXRpYXRlZCByZXF1ZXN0LiBXZSBleHBlY3Qg
dGhlIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSB0byBiZSBhcHAgaW5pdGlhdGVkCisgICAgLy8g
YXQgZmlyc3QsIGJ1dCB0aGVuIGJlY29tZSBub24gYXBwIGluaXRpYXRlZCBvbmNlIHRoZSBzZWNv
bmQgd2ViVmlldyBpcyBjbG9zZWQgYW5kIGl0cyBjbGllbnQgaXMgdW5yZWdpc3RlcmVkLgorICAg
IGV4cGVjdGVkTWVzc2FnZSA9ICJzdGFydHMgYXBwIGluaXRpYXRlZCI7CisgICAgcmVjZWl2ZWRN
ZXNzYWdlID0gZmFsc2U7CisgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqbm9uQXBwSW5pdGlhdGVk
UmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxX
aXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cDovLzEyNy4wLjAuMTol
ZC9tYWluLmh0bWwiLCBzZXJ2ZXIucG9ydCgpXV1dOworICAgIG5vbkFwcEluaXRpYXRlZFJlcXVl
c3QuYXR0cmlidXRpb24gPSBOU1VSTFJlcXVlc3RBdHRyaWJ1dGlvblVzZXI7CisKKyAgICBbd2Vi
VmlldzIgbG9hZFJlcXVlc3Q6bm9uQXBwSW5pdGlhdGVkUmVxdWVzdF07CisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZE1lc3NhZ2UpOworCisgICAgLy8gQ2xvc2UgdGhlIGFw
cCBpbml0aWF0ZWQgdmlldy4gV2UgZXhwZWN0IHRoYXQgdGhlIGV4aXN0aW5nIHdvcmtlciB3aWxs
IGJlY29tZSBub24gYXBwIGluaXRpYXRlZAorICAgIC8vIG5vdyB0aGF0IGFsbCBhcHAgaW5pdGlh
dGVkIGNsaWVudHMgaGF2ZSBiZWVuIHJlbW92ZWQuCisgICAgZXhwZWN0ZWRNZXNzYWdlID0gIm5v
biBhcHAgaW5pdGlhdGVkIjsKKyAgICByZWNlaXZlZE1lc3NhZ2UgPSBmYWxzZTsKKyAgICBbd2Vi
VmlldzEgX2Nsb3NlXTsKKyAgICB3ZWJWaWV3MSA9IG51bGxwdHI7CisKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkTWVzc2FnZSk7Cit9CisKKyNlbmRpZiAvLyBXS19IQVZF
X0NfU1BJCisKKyNlbmRpZiAvLyBBUFBfUFJJVkFDWV9SRVBPUlQKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydFBsdWdJbi5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9y
dFBsdWdJbi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYTEzN2RkMmUxMzM1NWU5Y2NkMDZhNWQwODJkZTYxMTFl
MjlmNTdmCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0UGx1Z0luLm1tCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMu
aCIKKyNpbXBvcnQgPFdlYktpdC9XS1dlYlByb2Nlc3NQbHVnSW4uaD4KKyNpbXBvcnQgPFdlYktp
dC9XS1dlYlByb2Nlc3NQbHVnSW5Mb2FkRGVsZWdhdGUuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5Q
dHIuaD4KKworQGludGVyZmFjZSBBcHBQcml2YWN5UmVwb3J0UGx1Z0luIDogTlNPYmplY3QgPFdL
V2ViUHJvY2Vzc1BsdWdJbiwgV0tXZWJQcm9jZXNzUGx1Z0luTG9hZERlbGVnYXRlPgorQGVuZAor
CitAaW1wbGVtZW50YXRpb24gQXBwUHJpdmFjeVJlcG9ydFBsdWdJbiB7IH0KKworLSAoTlNVUkxS
ZXF1ZXN0ICopd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjooV0tXZWJQ
cm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyICopY29udHJvbGxlciBmcmFtZToo
V0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUgKilmcmFtZSB3aWxsU2VuZFJlcXVlc3RGb3JSZXNvdXJj
ZToodWludDY0X3QpcmVzb3VyY2UgcmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCByZWRp
cmVjdFJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVkaXJlY3RSZXNwb25zZQoreworICAgIHJl
dHVybiBhZG9wdE5TKFtbTlNVUkxSZXF1ZXN0IGFsbG9jXSBpbml0V2l0aFVSTDpyZXF1ZXN0LlVS
TF0pLmF1dG9yZWxlYXNlKCk7Cit9CisKK0BlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQppbmRl
eCBhNWM0NGNhNTg3OWQ0MmQ4ZTE0Y2M5MzY4OWQ2YTIyZWYxYzU5MTNhLi5kNmNiNmYxMDc3YzVi
ZWQ1MWRkZGFhZTM5MmUyZmY0OTkzMWNhN2QzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCkBA
IC0yNSwxMSArMjUsOSBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKIAotI2ltcG9ydCAiSFRUUFNl
cnZlci5oIgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlNlcnZpY2VX
b3JrZXJUQ1BTZXJ2ZXIuaCIKICNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIKLSNp
bXBvcnQgIlRlc3RVSURlbGVnYXRlLmgiCiAjaW1wb3J0ICJUZXN0VVJMU2NoZW1lSGFuZGxlci5o
IgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgogI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJh
dGlvbkV4dHJhcy5oIgpAQCAtMTQxNyw2MjYgKzE0MTUsMyBAQCBURVNUKEluQXBwQnJvd3NlclBy
aXZhY3ksIEFib3V0QmxhbmtTdWJGcmFtZU1hdGNoZXNUb3BGcmFtZU5vbkFwcEJvdW5kKQogfQog
CiAjZW5kaWYgLy8gRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQotCi0jaWYgRU5BQkxFKEFQUF9Q
UklWQUNZX1JFUE9SVCkKLVRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmRSZXF1ZXN0
KQotewotICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0KLSAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVz
dFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246
Y29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAgIE5TU3RyaW5nICp1cmwgPSBAImh0dHBzOi8vd2Vi
a2l0Lm9yZyI7Ci0KLSAgICBfX2Jsb2NrIGJvb2wgaXNEb25lID0gZmFsc2U7Ci0gICAgTlNNdXRh
YmxlVVJMUmVxdWVzdCAqbm9uQXBwQm91bmRSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3Qg
cmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6dXJsXV07Ci0KLSAgICBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgIG5vbkFwcEJvdW5kUmVxdWVzdC5faXNO
b25BcHBJbml0aWF0ZWQgPSBZRVM7Ci0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
RU5ECi0KLSAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpub25BcHBCb3VuZFJlcXVlc3RdOwotICAg
IFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKLQotICAgIFt3ZWJW
aWV3IF9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOl4oQk9PTCBpc0FwcEJvdW5kKSB7Ci0gICAg
ICAgIEVYUEVDVF9GQUxTRShpc0FwcEJvdW5kKTsKLSAgICAgICAgaXNEb25lID0gdHJ1ZTsKLSAg
ICB9XTsKLQotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKLSAgICAKLSAg
ICBpc0RvbmUgPSBmYWxzZTsKLSAgICBbd2ViVmlldyBfYXBwQm91bmROYXZpZ2F0aW9uRGF0YTpe
KHN0cnVjdCBXS0FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhIGRhdGEpIHsKLSAgICAgICAg
RVhQRUNUX0ZBTFNFKGRhdGEuaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZyk7Ci0gICAg
ICAgIEVYUEVDVF9UUlVFKGRhdGEuaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZyk7
Ci0gICAgICAgIGlzRG9uZSA9IHRydWU7Ci0gICAgfV07Ci0KLSAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmlzRG9uZSk7Ci19Ci0KLVRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91
bmRSZXF1ZXN0V2l0aE5hdmlnYXRpb24pCi17Ci0gICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRv
cHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLQotICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNH
UmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgTlNTdHJp
bmcgKnN0YXJ0aW5nVVJMID0gQCJodHRwczovL3d3dy53ZWJraXQub3JnIjsKLSAgICBOU1N0cmlu
ZyAqbm9uQXBwQm91bmRVUkwgPSBAImh0dHBzOi8vd3d3LmFwcGxlLmNvbSI7Ci0KLSAgICBOU011
dGFibGVVUkxSZXF1ZXN0ICpzdGFydGluZ1JlcXVlc3QgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCBy
ZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpzdGFydGluZ1VSTF1dOwotCi0gICAg
W3dlYlZpZXcgbG9hZFJlcXVlc3Q6c3RhcnRpbmdSZXF1ZXN0XTsKLSAgICBbd2ViVmlldyBfdGVz
dF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07Ci0KLSAgICBfX2Jsb2NrIGJvb2wgaXNEb25l
ID0gZmFsc2U7Ci0gICAgW3dlYlZpZXcgX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6XihCT09M
IGlzQXBwQm91bmQpIHsKLSAgICAgICAgRVhQRUNUX1RSVUUoaXNBcHBCb3VuZCk7Ci0gICAgICAg
IGlzRG9uZSA9IHRydWU7Ci0gICAgfV07Ci0KLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmlzRG9uZSk7Ci0gICAgCi0gICAgaXNEb25lID0gZmFsc2U7Ci0gICAgW3dlYlZpZXcgX2FwcEJv
dW5kTmF2aWdhdGlvbkRhdGE6XihzdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0
YSBkYXRhKSB7Ci0gICAgICAgIEVYUEVDVF9UUlVFKGRhdGEuaGFzTG9hZGVkQXBwQm91bmRSZXF1
ZXN0VGVzdGluZyk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShkYXRhLmhhc0xvYWRlZE5vbkFwcEJv
dW5kUmVxdWVzdFRlc3RpbmcpOwotICAgICAgICBpc0RvbmUgPSB0cnVlOwotICAgIH1dOwotCi0g
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwotICAgIAotICAgIGlzRG9uZSA9
IGZhbHNlOwotICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5vbkFwcEJvdW5kUmVxdWVzdCA9IFtO
U011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOm5v
bkFwcEJvdW5kVVJMXV07Ci0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4K
LSAgICBub25BcHBCb3VuZFJlcXVlc3QuX2lzTm9uQXBwSW5pdGlhdGVkID0gWUVTOwotICAgIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotICAgIAotICAgIGlzRG9uZSA9IGZhbHNl
OwotICAgIFt3ZWJWaWV3IF9jbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGE6XnsKLSAgICAgICAg
aXNEb25lID0gdHJ1ZTsKLSAgICB9XTsKLQotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
aXNEb25lKTsKLQotICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0Om5vbkFwcEJvdW5kUmVxdWVzdF07
Ci0gICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwotCi0gICAg
W3dlYlZpZXcgX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6XihCT09MIGlzQXBwQm91bmQpIHsK
LSAgICAgICAgRVhQRUNUX0ZBTFNFKGlzQXBwQm91bmQpOwotICAgICAgICBpc0RvbmUgPSB0cnVl
OwotICAgIH1dOwotCi0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwotICAg
IAotICAgIGlzRG9uZSA9IGZhbHNlOwotICAgIFt3ZWJWaWV3IF9hcHBCb3VuZE5hdmlnYXRpb25E
YXRhOl4oc3RydWN0IFdLQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEgZGF0YSkgewotICAg
ICAgICBFWFBFQ1RfRkFMU0UoZGF0YS5oYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nKTsK
LSAgICAgICAgRVhQRUNUX1RSVUUoZGF0YS5oYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0
aW5nKTsKLSAgICAgICAgaXNEb25lID0gdHJ1ZTsKLSAgICB9XTsKLQotICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKLX0KLQotVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBB
cHBCb3VuZFJlcXVlc3RXaXRoU3ViRnJhbWUpCi17Ci0gICAgYXV0byBjb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBbY29u
ZmlndXJhdGlvbiBfc2V0T3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3k6QCJzY3JpcHQtc3Jj
ICdub25jZS1iJyJdOwotCi0gICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdl
TmFtZWQ6QCJwYWdlLXdpdGgtY3NwIl07Ci0KLSAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpA
Ik1haW5GcmFtZTogQiJdOwotICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiU3ViZnJhbWU6
IEIiXTsKLQotICAgIF9fYmxvY2sgYm9vbCBpc0RvbmUgPSBmYWxzZTsKLSAgICBbd2ViVmlldyBf
YXBwQm91bmROYXZpZ2F0aW9uRGF0YTpeKHN0cnVjdCBXS0FwcEJvdW5kTmF2aWdhdGlvblRlc3Rp
bmdEYXRhIGRhdGEpIHsKLSAgICAgICAgRVhQRUNUX1RSVUUoZGF0YS5oYXNMb2FkZWRBcHBCb3Vu
ZFJlcXVlc3RUZXN0aW5nKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKGRhdGEuaGFzTG9hZGVkTm9u
QXBwQm91bmRSZXF1ZXN0VGVzdGluZyk7Ci0gICAgICAgIGlzRG9uZSA9IHRydWU7Ci0gICAgfV07
Ci0KLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Ci19OwotCi1URVNUKElu
QXBwQnJvd3NlclByaXZhY3ksIE5vbkFwcEJvdW5kUmVxdWVzdFdpdGhTdWJGcmFtZSkKLXsKLSAg
ICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBh
bGxvY10gaW5pdF0pOwotICAgIFtjb25maWd1cmF0aW9uIF9zZXRPdmVycmlkZUNvbnRlbnRTZWN1
cml0eVBvbGljeTpAInNjcmlwdC1zcmMgJ25vbmNlLWInIl07Ci0KLSAgICBfX2Jsb2NrIGJvb2wg
aXNEb25lID0gZmFsc2U7Ci0gICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAq
bm9uQXBwQm91bmRSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6
W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInBhZ2Utd2l0aC1jc3AiIHdp
dGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNl
cyJdXTsKLSAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgIG5vbkFw
cEJvdW5kUmVxdWVzdC5faXNOb25BcHBJbml0aWF0ZWQgPSBZRVM7Ci0gICAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECi0KLSAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpub25BcHBC
b3VuZFJlcXVlc3RdOwotCi0gICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJNYWluRnJhbWU6
IEIiXTsKLSAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIlN1YmZyYW1lOiBCIl07Ci0KLSAg
ICBbd2ViVmlldyBfYXBwQm91bmROYXZpZ2F0aW9uRGF0YTogXihzdHJ1Y3QgV0tBcHBCb3VuZE5h
dmlnYXRpb25UZXN0aW5nRGF0YSBkYXRhKSB7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShkYXRhLmhh
c0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcpOwotICAgICAgICBFWFBFQ1RfVFJVRShkYXRh
Lmhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3RpbmcpOwotICAgICAgICBpc0RvbmUgPSB0
cnVlOwotICAgIH1dOwotCi0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwot
fTsKLQotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5TV0J5dGVzID0gUiJTV1JFU09VUkNFKAotPHNj
cmlwdD4KLXRyeSB7Ci0gICAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5q
cycpLnRoZW4oZnVuY3Rpb24ocmVnKSB7Ci0gICAgICAgIGlmIChyZWcuYWN0aXZlKSB7Ci0gICAg
ICAgICAgICBhbGVydCgnd29ya2VyIGFscmVhZHkgYWN0aXZlJyk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLSAgICAgICAgd29ya2VyID0gcmVnLmluc3RhbGxpbmc7Ci0gICAgICAg
IHdvcmtlci5hZGRFdmVudExpc3RlbmVyKCdzdGF0ZWNoYW5nZScsIGZ1bmN0aW9uKCkgewotICAg
ICAgICAgICAgaWYgKHdvcmtlci5zdGF0ZSA9PSAnYWN0aXZhdGVkJykKLSAgICAgICAgICAgICAg
ICBhbGVydCgnc3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyZWQnKTsKLSAgICAgICAgfSk7Ci0gICAgfSku
Y2F0Y2goZnVuY3Rpb24oZXJyb3IpIHsKLSAgICAgICAgYWxlcnQoJ1JlZ2lzdHJhdGlvbiBmYWls
ZWQgd2l0aDogJyArIGVycm9yKTsKLSAgICB9KTsKLX0gY2F0Y2goZSkgewotICAgIGFsZXJ0KCdF
eGNlcHRpb246ICcgKyBlKTsKLX0KLTwvc2NyaXB0PgotKVNXUkVTT1VSQ0UiOwotCi1lbnVtIGNs
YXNzIFJlc3BvbnNlVHlwZSB7IFN5bnRoZXRpYywgRmV0Y2hlZCB9OwotZW51bSBjbGFzcyBJc0Fw
cEJvdW5kIDogYm9vbCB7IE5vLCBZZXMgfTsKLXN0YXRpYyB2b2lkIHJ1blRlc3QoUmVzcG9uc2VU
eXBlIHJlc3BvbnNlVHlwZSwgSXNBcHBCb3VuZCBhcHBCb3VuZCkKLXsKLSAgICBzdGF0aWMgYm9v
bCBpc0RvbmUgPSBmYWxzZTsKLSAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0
b3JlXSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRh
VHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRs
ZXI6XigpIHsKLSAgICAgICAgaXNEb25lID0gdHJ1ZTsKLSAgICB9XTsKLSAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Ci0KLSAgICBjb25zdCBjaGFyKiBqcyA9IG51bGxwdHI7
Ci0gICAgY29uc3QgY2hhciogZXhwZWN0ZWRBbGVydCA9IG51bGxwdHI7Ci0KLSAgICBzd2l0Y2gg
KHJlc3BvbnNlVHlwZSkgewotICAgIGNhc2UgUmVzcG9uc2VUeXBlOjpTeW50aGV0aWM6Ci0gICAg
ICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZl
bnQucmVzcG9uZFdpdGgobmV3IFJlc3BvbnNlKG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5
bnRoZXRpYyByZXNwb25zZVwiKTwvc2NyaXB0PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9
KSI7Ci0gICAgICAgIGV4cGVjdGVkQWxlcnQgPSAic3ludGhldGljIHJlc3BvbnNlIjsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBSZXNwb25zZVR5cGU6OkZldGNoZWQ6Ci0gICAgICAgIGpzID0g
InNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9u
ZFdpdGgoZmV0Y2goJy9mZXRjaGVkLmh0bWwnKSkgfSk7IjsKLSAgICAgICAgZXhwZWN0ZWRBbGVy
dCA9ICJmZXRjaGVkIGZyb20gc2VydmVyIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAg
VGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWlu
U1dCeXRlcyB9IH0sCi0gICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJh
cHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9LAotICAgICAgICB7ICIvZmV0Y2hlZC5o
dG1sIiwgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+IiB9
IH0sCi0gICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsK
LQotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKLQotICAgIGF1
dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOwotICAg
IFtkZWxlZ2F0ZSBzZXREaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6XihXS1dlYlZp
ZXcgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLCB2b2lkICheY2Fs
bGJhY2spKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50
aWFsICopKSB7Ci0gICAgICAgIEVYUEVDVF9XS19TVFJFUShjaGFsbGVuZ2UucHJvdGVjdGlvblNw
YWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kLCBOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kU2VydmVy
VHJ1c3QpOwotICAgICAgICBjYWxsYmFjayhOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3Jl
ZGVudGlhbCwgW05TVVJMQ3JlZGVudGlhbCBjcmVkZW50aWFsRm9yVHJ1c3Q6Y2hhbGxlbmdlLnBy
b3RlY3Rpb25TcGFjZS5zZXJ2ZXJUcnVzdF0pOwotICAgIH1dOwotICAgIHdlYlZpZXcuZ2V0KCku
bmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7Ci0KLSAgICBOU1VSTFJlcXVlc3Qg
KnJlcXVlc3QgPSBzZXJ2ZXIucmVxdWVzdCgpOwotICAgIGlmIChhcHBCb3VuZCA9PSBJc0FwcEJv
dW5kOjpObykgewotICAgICAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpub25BcHBCb3VuZFJlcXVl
c3QgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0
cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIs
IHNlcnZlci5wb3J0KCldXV07Ci0gICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0JFR0lOCi0gICAgICAgIG5vbkFwcEJvdW5kUmVxdWVzdC5faXNOb25BcHBJbml0aWF0ZWQgPSBZ
RVM7Ci0gICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotICAgICAgICBy
ZXF1ZXN0ID0gbm9uQXBwQm91bmRSZXF1ZXN0OwotICAgIH0KLQotICAgIFt3ZWJWaWV3IGxvYWRS
ZXF1ZXN0OnJlcXVlc3RdOwotICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldyBfdGVzdF93YWl0
Rm9yQWxlcnRdLCAic3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyZWQiKTsKLQotICAgIGlmIChyZXNwb25z
ZVR5cGUgIT0gUmVzcG9uc2VUeXBlOjpGZXRjaGVkKQotICAgICAgICBzZXJ2ZXIuY2FuY2VsKCk7
Ci0KLSAgICBib29sIGV4cGVjdGluZ0FwcEJvdW5kUmVxdWVzdHMgPSBhcHBCb3VuZCA9PSBJc0Fw
cEJvdW5kOjpZZXM7Ci0gICAgaXNEb25lID0gZmFsc2U7Ci0gICAgW3dlYlZpZXcgX2FwcEJvdW5k
TmF2aWdhdGlvbkRhdGE6IF4oc3RydWN0IFdLQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEg
ZGF0YSkgewotICAgICAgICBFWFBFQ1RfRVEoZGF0YS5oYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RU
ZXN0aW5nLCBleHBlY3RpbmdBcHBCb3VuZFJlcXVlc3RzKTsKLSAgICAgICAgRVhQRUNUX0VRKGRh
dGEuaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZywgIWV4cGVjdGluZ0FwcEJvdW5k
UmVxdWVzdHMpOwotICAgICAgICBpc0RvbmUgPSB0cnVlOwotICAgIH1dOwotCi0gICAgaXNEb25l
ID0gZmFsc2U7Ci0gICAgW3dlYlZpZXcgX2NsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YTpeewot
ICAgICAgICBpc0RvbmUgPSB0cnVlOwotICAgIH1dOwotCi0gICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZpc0RvbmUpOwotCi0gICAgW3dlYlZpZXcgcmVsb2FkXTsKLSAgICBFWFBFQ1RfV0tf
U1RSRVEoW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckFsZXJ0XSwgZXhwZWN0ZWRBbGVydCk7Ci0KLSAg
ICBpc0RvbmUgPSBmYWxzZTsKLSAgICBbd2ViVmlldyBfYXBwQm91bmROYXZpZ2F0aW9uRGF0YTog
XihzdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBkYXRhKSB7Ci0gICAgICAg
IGlmIChyZXNwb25zZVR5cGUgPT0gUmVzcG9uc2VUeXBlOjpTeW50aGV0aWMpIHsKLSAgICAgICAg
ICAgIEVYUEVDVF9GQUxTRShkYXRhLmhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcpOwot
ICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGRhdGEuaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0
VGVzdGluZyk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBFWFBFQ1RfRVEoZGF0YS5o
YXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nLCBleHBlY3RpbmdBcHBCb3VuZFJlcXVlc3Rz
KTsKLSAgICAgICAgICAgIEVYUEVDVF9FUShkYXRhLmhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVz
dFRlc3RpbmcsICFleHBlY3RpbmdBcHBCb3VuZFJlcXVlc3RzKTsKLSAgICAgICAgfQotICAgICAg
ICBpc0RvbmUgPSB0cnVlOwotICAgIH1dOwotCi0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZpc0RvbmUpOwotfQotCi1URVNUKEluQXBwQnJvd3NlclByaXZhY3ksIE5vbkFwcEJvdW5kUmVx
dWVzdFdpdGhTZXJ2aWNlV29ya2VyKQotewotICAgIHJ1blRlc3QoUmVzcG9uc2VUeXBlOjpTeW50
aGV0aWMsIElzQXBwQm91bmQ6Ok5vKTsKLSAgICBydW5UZXN0KFJlc3BvbnNlVHlwZTo6RmV0Y2hl
ZCwgSXNBcHBCb3VuZDo6Tm8pOwotfQotCi1URVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJv
dW5kUmVxdWVzdFdpdGhTZXJ2aWNlV29ya2VyKQotewotICAgIHJ1blRlc3QoUmVzcG9uc2VUeXBl
OjpTeW50aGV0aWMsIElzQXBwQm91bmQ6Olllcyk7Ci0gICAgcnVuVGVzdChSZXNwb25zZVR5cGU6
OkZldGNoZWQsIElzQXBwQm91bmQ6Olllcyk7Ci19Ci0KLVRFU1QoSW5BcHBCcm93c2VyUHJpdmFj
eSwgTXVsdGlwbGVXZWJWaWV3c1dpdGhTaGFyZWRTZXJ2aWNlV29ya2VyKQotewotICAgIHN0YXRp
YyBib29sIGlzRG9uZSA9IGZhbHNlOwotCi0gICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVs
dERhdGFTdG9yZV0gcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJz
aXRlRGF0YVR5cGVzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRp
b25IYW5kbGVyOl4oKSB7Ci0gICAgICAgIGlzRG9uZSA9IHRydWU7Ci0gICAgfV07Ci0gICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwotCi0gICAgY29uc3QgY2hhcioganMgPSAi
c2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25k
V2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KSI7Ci0gICAgY29uc3QgY2hhciogZXhwZWN0
ZWRBbGVydCA9ICJmZXRjaGVkIGZyb20gc2VydmVyIjsKLQotICAgIFRlc3RXZWJLaXRBUEk6OkhU
VFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiLyIsIHsgbWFpblNXQnl0ZXMgfSB9LAotICAg
ICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNj
cmlwdCIgfX0sIGpzIH0gfSwKLSAgICAgICAgeyAiL2ZldGNoZWQuaHRtbCIsIHsgIjxzY3JpcHQ+
YWxlcnQoJ2ZldGNoZWQgZnJvbSBzZXJ2ZXInKTwvc2NyaXB0PiIgfSB9LAotICAgIH0sIFRlc3RX
ZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7Ci0KLSAgICBhdXRvIHdlYlZp
ZXcxID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwotICAgIGF1dG8gd2ViVmlldzIgPSBhZG9w
dE5TKFtXS1dlYlZpZXcgbmV3XSk7Ci0KLSAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVz
dE5hdmlnYXRpb25EZWxlZ2F0ZSBuZXddKTsKLSAgICBbZGVsZWdhdGUgc2V0RGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOl4oV0tXZWJWaWV3ICosIE5TVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UgKmNoYWxsZW5nZSwgdm9pZCAoXmNhbGxiYWNrKShOU1VSTFNlc3Npb25BdXRoQ2hh
bGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqKSkgewotICAgICAgICBFWFBFQ1Rf
V0tfU1RSRVEoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlvbk1ldGhvZCwg
TlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZFNlcnZlclRydXN0KTsKLSAgICAgICAgY2FsbGJhY2so
TlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWwsIFtOU1VSTENyZWRlbnRpYWwg
Y3JlZGVudGlhbEZvclRydXN0OmNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uuc2VydmVyVHJ1c3Rd
KTsKLSAgICB9XTsKLSAgICB3ZWJWaWV3MS5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxl
Z2F0ZS5nZXQoKTsKLSAgICB3ZWJWaWV3Mi5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxl
Z2F0ZS5nZXQoKTsKLQotICAgIFt3ZWJWaWV3MSBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgp
XTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcxIF90ZXN0X3dhaXRGb3JBbGVydF0sICJz
dWNjZXNzZnVsbHkgcmVnaXN0ZXJlZCIpOwotCi0gICAgW3dlYlZpZXcxIHJlbG9hZF07Ci0gICAg
RVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3MSBfdGVzdF93YWl0Rm9yQWxlcnRdLCBleHBlY3RlZEFs
ZXJ0KTsKLQotICAgIGlzRG9uZSA9IGZhbHNlOwotICAgIFt3ZWJWaWV3MSBfYXBwQm91bmROYXZp
Z2F0aW9uRGF0YTogXihzdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBkYXRh
KSB7Ci0gICAgICAgIEVYUEVDVF9UUlVFKGRhdGEuaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVz
dGluZyk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShkYXRhLmhhc0xvYWRlZE5vbkFwcEJvdW5kUmVx
dWVzdFRlc3RpbmcpOwotICAgICAgICBpc0RvbmUgPSB0cnVlOwotICAgIH1dOwotCi0gICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwotCi0gICAgaXNEb25lID0gZmFsc2U7Ci0g
ICAgW3dlYlZpZXcxIF9jbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGE6XnsKLSAgICAgICAgaXNE
b25lID0gdHJ1ZTsKLSAgICB9XTsKLQotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNE
b25lKTsKLQotICAgIGlzRG9uZSA9IGZhbHNlOwotICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5v
bkFwcEJvdW5kUmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltO
U1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8x
MjcuMC4wLjE6JWQvbWFpbi5odG1sIiwgc2VydmVyLnBvcnQoKV1dXTsKLSAgICBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgIG5vbkFwcEJvdW5kUmVxdWVzdC5faXNOb25B
cHBJbml0aWF0ZWQgPSBZRVM7Ci0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5E
Ci0gICAgW3dlYlZpZXcyIGxvYWRSZXF1ZXN0Om5vbkFwcEJvdW5kUmVxdWVzdF07Ci0gICAgRVhQ
RUNUX1dLX1NUUkVRKFt3ZWJWaWV3MiBfdGVzdF93YWl0Rm9yQWxlcnRdLCAiZmV0Y2hlZCBmcm9t
IHNlcnZlciIpOwotCi0gICAgW3dlYlZpZXcyIHJlbG9hZF07Ci0gICAgRVhQRUNUX1dLX1NUUkVR
KFt3ZWJWaWV3MiBfdGVzdF93YWl0Rm9yQWxlcnRdLCBleHBlY3RlZEFsZXJ0KTsKLQotICAgIFt3
ZWJWaWV3MiBfYXBwQm91bmROYXZpZ2F0aW9uRGF0YTogXihzdHJ1Y3QgV0tBcHBCb3VuZE5hdmln
YXRpb25UZXN0aW5nRGF0YSBkYXRhKSB7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShkYXRhLmhhc0xv
YWRlZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcpOwotICAgICAgICBFWFBFQ1RfVFJVRShkYXRhLmhh
c0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3RpbmcpOwotICAgICAgICBpc0RvbmUgPSB0cnVl
OwotICAgIH1dOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKLSAgICBp
c0RvbmUgPSBmYWxzZTsKLX0KLQotc3RhdGljIHZvaWQgc29mdFVwZGF0ZVRlc3QoSXNBcHBCb3Vu
ZCBpc0FwcEJvdW5kKQotewotICAgIF9fYmxvY2sgYm9vbCBpc0RvbmUgPSBmYWxzZTsKLSAgICBb
W1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZUeXBlczpb
V0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05T
RGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKLSAgICAgICAgaXNEb25l
ID0gdHJ1ZTsKLSAgICB9XTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7
Ci0KLSAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBu
ZXddKTsKLSAgICBbZGVsZWdhdGUgc2V0RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Ol4oV0tXZWJWaWV3ICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwg
dm9pZCAoXmNhbGxiYWNrKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5T
VVJMQ3JlZGVudGlhbCAqKSkgewotICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoY2hhbGxlbmdlLnBy
b3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlvbk1ldGhvZCwgTlNVUkxBdXRoZW50aWNhdGlvbk1l
dGhvZFNlcnZlclRydXN0KTsKLSAgICAgICAgY2FsbGJhY2soTlNVUkxTZXNzaW9uQXV0aENoYWxs
ZW5nZVVzZUNyZWRlbnRpYWwsIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbEZvclRydXN0OmNo
YWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uuc2VydmVyVHJ1c3RdKTsKLSAgICB9XTsKLQotICAgIGF1
dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSk7Ci0gICAgYXV0byB3ZWJWaWV3MSA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgYXV0byB3ZWJWaWV3MiA9IGFkb3B0TlMoW1tXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0KLSAgICB3ZWJWaWV3MS5nZXQoKS5u
YXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKLSAgICB3ZWJWaWV3Mi5nZXQoKS5u
YXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKLQotICAgIHVpbnQxNl90IHNlcnZl
clBvcnQ7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5l
cignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgobmV3IFJlc3BvbnNlKG5l
dyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyByZXNwb25zZVwiKTwvc2NyaXB0Pidd
LCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9KSI7Ci0KLSAgICB7Ci0gICAgICAgIFRlc3RXZWJL
aXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAgICAgICB7ICIvIiwgeyBtYWluU1dC
eXRlcyB9IH0sCi0gICAgICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAi
YXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfSwKLSAgICAgICAgfSwgVGVzdFdlYktp
dEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzLCBudWxscHRyLCB0ZXN0SWRlbnRpdHko
KSk7Ci0gICAgICAgIHNlcnZlclBvcnQgPSBzZXJ2ZXIxLnBvcnQoKTsKLQotICAgICAgICBOU1VS
TFJlcXVlc3QgKnJlcXVlc3QgPSBzZXJ2ZXIxLnJlcXVlc3QoKTsKLSAgICAgICAgaWYgKGlzQXBw
Qm91bmQgPT0gSXNBcHBCb3VuZDo6Tm8pIHsKLSAgICAgICAgICAgIE5TTXV0YWJsZVVSTFJlcXVl
c3QgKm5vbkFwcEJvdW5kUmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRo
VVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0
cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyMS5wb3J0KCldXV07Ci0gICAgICAgICAgICBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgICAgICAgICAgbm9uQXBwQm91bmRS
ZXF1ZXN0Ll9pc05vbkFwcEluaXRpYXRlZCA9IFlFUzsKLSAgICAgICAgICAgIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0VORAotICAgICAgICAgICAgcmVxdWVzdCA9IG5vbkFwcEJvdW5k
UmVxdWVzdDsKLSAgICAgICAgfQotCi0gICAgICAgIFt3ZWJWaWV3MSBsb2FkUmVxdWVzdDpyZXF1
ZXN0XTsKLSAgICAgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3MSBfdGVzdF93YWl0Rm9yQWxl
cnRdLCAic3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyZWQiKTsKLQotICAgICAgICBzZXJ2ZXIxLmNhbmNl
bCgpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBz
ZXJ2ZXIyKHsKLSAgICAgICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAg
ICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2Ny
aXB0IiB9fSwganMgfSB9Ci0gICAgICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlBy
b3RvY29sOjpIdHRwcywgbnVsbHB0ciwgdGVzdElkZW50aXR5MigpLCBzZXJ2ZXJQb3J0KTsKLQot
ICAgICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QyID0gc2VydmVyMi5yZXF1ZXN0KCk7Ci0gICAg
ICAgIGlmIChpc0FwcEJvdW5kID09IElzQXBwQm91bmQ6Ok5vKSB7Ci0gICAgICAgICAgICBOU011
dGFibGVVUkxSZXF1ZXN0ICpub25BcHBCb3VuZFJlcXVlc3QgPSBbTlNNdXRhYmxlVVJMUmVxdWVz
dCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlcjIucG9ydCgpXV1dOwotICAg
ICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICAgICAgICAg
IG5vbkFwcEJvdW5kUmVxdWVzdC5faXNOb25BcHBJbml0aWF0ZWQgPSBZRVM7Ci0gICAgICAgICAg
ICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLSAgICAgICAgICAgIHJlcXVlc3Qy
ID0gbm9uQXBwQm91bmRSZXF1ZXN0OwotICAgICAgICB9Ci0KLSAgICAgICAgaXNEb25lID0gZmFs
c2U7Ci0gICAgICAgIFt3ZWJWaWV3MSBfY2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhOl57Ci0g
ICAgICAgICAgICBpc0RvbmUgPSB0cnVlOwotICAgICAgICB9XTsKLQotICAgICAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Ci0KLSAgICAgICAgW3dlYlZpZXcyIGxvYWRSZXF1
ZXN0OnJlcXVlc3QyXTsKLSAgICAgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3MiBfdGVzdF93
YWl0Rm9yQWxlcnRdLCAic3ludGhldGljIHJlc3BvbnNlIik7Ci0gICAgfQotCi0gICAgaXNEb25l
ID0gZmFsc2U7Ci0gICAgYm9vbCBleHBlY3RpbmdBcHBCb3VuZFJlcXVlc3RzID0gaXNBcHBCb3Vu
ZCA9PSBJc0FwcEJvdW5kOjpZZXMgPyB0cnVlIDogZmFsc2U7Ci0gICAgd2hpbGUgKCFpc0RvbmUp
IHsKLSAgICAgICAgW3dlYlZpZXcyIF9hcHBCb3VuZE5hdmlnYXRpb25EYXRhOiBeKHN0cnVjdCBX
S0FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhIGRhdGEpIHsKLSAgICAgICAgICAgIGlmICgh
ZGF0YS5kaWRQZXJmb3JtU29mdFVwZGF0ZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgICAgIEVYUEVDVF9FUShkYXRhLmhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3Rpbmcs
IGV4cGVjdGluZ0FwcEJvdW5kUmVxdWVzdHMpOwotICAgICAgICAgICAgRVhQRUNUX0VRKGRhdGEu
aGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZywgIWV4cGVjdGluZ0FwcEJvdW5kUmVx
dWVzdHMpOwotICAgICAgICAgICAgaXNEb25lID0gdHJ1ZTsKLSAgICAgICAgfV07Ci0gICAgICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29wKDEpOwotICAgIH0KLX0KLQotVEVTVChJ
bkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZFJlcXVlc3RXaXRoU2VydmljZVdvcmtlclNvZnRV
cGRhdGUpCi17Ci0gICAgc29mdFVwZGF0ZVRlc3QoSXNBcHBCb3VuZDo6WWVzKTsKLX0KLQotVEVT
VChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZFJlcXVlc3RXaXRoU2VydmljZVdvcmtl
clNvZnRVcGRhdGUpCi17Ci0gICAgc29mdFVwZGF0ZVRlc3QoSXNBcHBCb3VuZDo6Tm8pOwotfQot
Ci1zdGF0aWMgdm9pZCBydW5XZWJQcm9jZXNzUGx1Z0luVGVzdChJc0FwcEJvdW5kIGlzQXBwQm91
bmQpCi17Ci0gICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtXS1dl
YlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNz
TmFtZTpAIkluQXBwQnJvd3NlclByaXZhY3lQbHVnSW4iXTsKLSAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAs
IDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKLQotICAgIE5TU3Ry
aW5nICp1cmwgPSBAImh0dHBzOi8vd2Via2l0Lm9yZyI7Ci0KLSAgICBfX2Jsb2NrIGJvb2wgaXNE
b25lID0gZmFsc2U7Ci0gICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU011dGFi
bGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOnVybF1dOwot
ICAgIGlmIChpc0FwcEJvdW5kID09IElzQXBwQm91bmQ6Ok5vKSB7Ci0gICAgICAgIE5TTXV0YWJs
ZVVSTFJlcXVlc3QgKm5vbkFwcEJvdW5kUmVxdWVzdCA9IHJlcXVlc3Q7Ci0gICAgICAgIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgICAgIG5vbkFwcEJvdW5kUmVxdWVz
dC5faXNOb25BcHBJbml0aWF0ZWQgPSBZRVM7Ci0gICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0VORAotICAgICAgICByZXF1ZXN0ID0gbm9uQXBwQm91bmRSZXF1ZXN0OwotICAg
IH0KLQotICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwotICAgIFt3ZWJWaWV3IF90
ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKLQotICAgIGlzRG9uZSA9IGZhbHNlOwot
ICAgIGJvb2wgZXhwZWN0aW5nQXBwQm91bmRSZXF1ZXN0cyA9IGlzQXBwQm91bmQgPT0gSXNBcHBC
b3VuZDo6WWVzID8gdHJ1ZSA6IGZhbHNlOwotICAgIFt3ZWJWaWV3IF9hcHBCb3VuZE5hdmlnYXRp
b25EYXRhOl4oc3RydWN0IFdLQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEgZGF0YSkgewot
ICAgICAgICBFWFBFQ1RfRVEoZGF0YS5oYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nLCBl
eHBlY3RpbmdBcHBCb3VuZFJlcXVlc3RzKTsKLSAgICAgICAgRVhQRUNUX0VRKGRhdGEuaGFzTG9h
ZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZywgIWV4cGVjdGluZ0FwcEJvdW5kUmVxdWVzdHMp
OwotICAgICAgICBpc0RvbmUgPSB0cnVlOwotICAgIH1dOwotCi0gICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZpc0RvbmUpOwotfQotCi1URVNUKEluQXBwQnJvd3NlclByaXZhY3ksIFdlYlBy
b2Nlc3NQbHVnaW5UZXN0QXBwQm91bmQpCi17Ci0gICAgcnVuV2ViUHJvY2Vzc1BsdWdJblRlc3Qo
SXNBcHBCb3VuZDo6WWVzKTsKLX0KLQotVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBXZWJQcm9j
ZXNzUGx1Z2luVGVzdE5vbkFwcEJvdW5kKQotewotICAgIHJ1bldlYlByb2Nlc3NQbHVnSW5UZXN0
KElzQXBwQm91bmQ6Ok5vKTsKLX0KLQotI2lmIFdLX0hBVkVfQ19TUEkKLQotc3RhdGljIGNvbnN0
IGNoYXIqIG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAotPHNjcmlwdD4K
LQotZnVuY3Rpb24gbG9nKG1zZykKLXsKLSAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVy
cy5zdy5wb3N0TWVzc2FnZShtc2cpOwotfQotCi1uYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5hZGRF
dmVudExpc3RlbmVyKCJtZXNzYWdlIiwgZnVuY3Rpb24oZXZlbnQpIHsKLSAgICBsb2coZXZlbnQu
ZGF0YSk7Ci19KTsKLQotdHJ5IHsKLSAgICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rl
cignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsKLSAgICAgICAgaWYgKHJlZy5hY3RpdmUp
IHsKLSAgICAgICAgICAgIHdvcmtlciA9IHJlZy5hY3RpdmU7Ci0gICAgICAgICAgICB3b3JrZXIu
cG9zdE1lc3NhZ2UoIlNFQ09ORCIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0g
ICAgICAgIHdvcmtlciA9IHJlZy5pbnN0YWxsaW5nOwotICAgICAgICB3b3JrZXIuYWRkRXZlbnRM
aXN0ZW5lcignc3RhdGVjaGFuZ2UnLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGlmICh3b3Jr
ZXIuc3RhdGUgPT0gJ2FjdGl2YXRlZCcpCi0gICAgICAgICAgICAgICAgd29ya2VyLnBvc3RNZXNz
YWdlKCJGSVJTVCIpOwotICAgICAgICB9KTsKLSAgICB9KS5jYXRjaChmdW5jdGlvbihlcnJvcikg
ewotICAgICAgICBsb2coJ1JlZ2lzdHJhdGlvbiBmYWlsZWQgd2l0aDogJyArIGVycm9yKTsKLSAg
ICB9KTsKLX0gY2F0Y2goZSkgewotICAgIGxvZygnRXhjZXB0aW9uOiAnICsgZSk7Ci19Ci08L3Nj
cmlwdD4KLSlTV1JFU09VUkNFIjsKLQotc3RhdGljIGNvbnN0IGNoYXIqIHNjcmlwdEJ5dGVzRGVm
YXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAotc2VsZi5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdl
JywgYXN5bmMgKGV2ZW50KSA9PiB7Ci0gICAgaWYgKCFzZWxmLmludGVybmFscykgewotICAgICAg
ICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoJ05vIGludGVybmFscycpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgcXVlcnlBcHBCb3VuZFZhbHVlKGV2ZW50LCBmYWxzZSk7Ci19KTsK
LQotYXN5bmMgZnVuY3Rpb24gcXVlcnlBcHBCb3VuZFZhbHVlKGV2ZW50LCBoYXZlU2VudEluaXRp
YWxNZXNzYWdlKQotewotICAgIHZhciByZXN1bHQgPSBhd2FpdCBpbnRlcm5hbHMubGFzdE5hdmln
YXRpb25XYXNBcHBCb3VuZCgpOwotICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgaWYgKGV2ZW50
LmRhdGEgPT0gIkZJUlNUIikgewotICAgICAgICAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdl
KCdhcHAtYm91bmQnKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAg
IGlmICghaGF2ZVNlbnRJbml0aWFsTWVzc2FnZSkKLSAgICAgICAgICAgIGV2ZW50LnNvdXJjZS5w
b3N0TWVzc2FnZSgnc3RhcnRzIGFwcC1ib3VuZCcpOwotCi0gICAgICAgIHF1ZXJ5QXBwQm91bmRW
YWx1ZShldmVudCwgdHJ1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBldmVudC5z
b3VyY2UucG9zdE1lc3NhZ2UoJ25vbiBhcHAtYm91bmQnKTsKLX0KLQotKVNXUkVTT1VSQ0UiOwot
Ci0KLXN0YXRpYyBTdHJpbmcgZXhwZWN0ZWRNZXNzYWdlOwotc3RhdGljIGJvb2wgcmVjZWl2ZWRN
ZXNzYWdlID0gZmFsc2U7Ci0KLUBpbnRlcmZhY2UgU1dBcHBCb3VuZFJlcXVlc3RNZXNzYWdlSGFu
ZGxlciA6IE5TT2JqZWN0IDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyPgotQGVuZAotCi1AaW1wbGVt
ZW50YXRpb24gU1dBcHBCb3VuZFJlcXVlc3RNZXNzYWdlSGFuZGxlcgotLSAodm9pZCl1c2VyQ29u
dGVudENvbnRyb2xsZXI6KFdLVXNlckNvbnRlbnRDb250cm9sbGVyICopdXNlckNvbnRlbnRDb250
cm9sbGVyIGRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOihXS1NjcmlwdE1lc3NhZ2UgKiltZXNzYWdl
Ci17Ci0gICAgRVhQRUNUX1dLX1NUUkVRKG1lc3NhZ2UuYm9keSwgZXhwZWN0ZWRNZXNzYWdlKTsK
LSAgICByZWNlaXZlZE1lc3NhZ2UgPSB0cnVlOwotfQotQGVuZAotCi1URVNUKEluQXBwQnJvd3Nl
clByaXZhY3ksIFJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFVwZGF0ZXNBcHBCb3VuZFZhbHVl
KQotewotICAgIHN0YXRpYyBib29sIGlzRG9uZSA9IGZhbHNlOwotCi0gICAgW1tXS1dlYnNpdGVE
YXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURh
dGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFu
dFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7Ci0gICAgICAgIGlzRG9uZSA9IHRydWU7Ci0g
ICAgfV07Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwotCi0gICAgV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0
aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nl
c3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107Ci0gICAg
V0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJJbnRlcm5hbHNJbmpl
Y3RlZEJ1bmRsZVRlc3QiKSk7Ci0gICAgY29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbCA9IChXS1By
b2Nlc3NQb29sICopY29udGV4dC5nZXQoKTsKLQotICAgIFJldGFpblB0cjxTV0FwcEJvdW5kUmVx
dWVzdE1lc3NhZ2VIYW5kbGVyPiBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tTV0FwcEJvdW5k
UmVxdWVzdE1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7Ci0gICAgW1tjb25maWd1cmF0aW9u
IHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhh
bmRsZXIuZ2V0KCkgbmFtZTpAInN3Il07Ci0KLSAgICBhdXRvIHdlYlZpZXcxID0gYWRvcHROUyhb
W1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAw
KSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKLSAgICBhdXRvIHdlYlZpZXcyID0gYWRv
cHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgw
MCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKLQotICAgIGF1dG8gZGVsZWdh
dGUgPSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOwotICAgIFtkZWxlZ2F0
ZSBzZXREaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6XihXS1dlYlZpZXcgKiwgTlNV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLCB2b2lkICheY2FsbGJhY2spKE5T
VVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICopKSB7
Ci0gICAgICAgIEVYUEVDVF9XS19TVFJFUShjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLmF1dGhl
bnRpY2F0aW9uTWV0aG9kLCBOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kU2VydmVyVHJ1c3QpOwot
ICAgICAgICBjYWxsYmFjayhOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwg
W05TVVJMQ3JlZGVudGlhbCBjcmVkZW50aWFsRm9yVHJ1c3Q6Y2hhbGxlbmdlLnByb3RlY3Rpb25T
cGFjZS5zZXJ2ZXJUcnVzdF0pOwotICAgIH1dOwotCi0gICAgd2ViVmlldzEuZ2V0KCkubmF2aWdh
dGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7Ci0gICAgd2ViVmlldzIuZ2V0KCkubmF2aWdh
dGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7Ci0KLSAgICBTZXJ2aWNlV29ya2VyVENQU2Vy
dmVyIHNlcnZlcih7Ci0gICAgICAgIHsgInRleHQvaHRtbCIsIG1haW5TV0J5dGVzRGVmYXVsdFZh
bHVlIH0sCi0gICAgICAgIHsgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiLCBzY3JpcHRCeXRlc0Rl
ZmF1bHRWYWx1ZSB9LAotICAgIH0sIHsKLSAgICAgICAgeyAidGV4dC9odG1sIiwgbWFpblNXQnl0
ZXNEZWZhdWx0VmFsdWUgfSwKLSAgICAgICAgeyAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIsIHNj
cmlwdEJ5dGVzRGVmYXVsdFZhbHVlIH0sCi0gICAgfSk7Ci0KLSAgICAvLyBMb2FkIFdlYlZpZXcg
d2l0aCBhbiBhcHAtYm91bmQgcmVxdWVzdC4gV2UgZXhwZWN0IHRoZSBTZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHkgdG8gYmUgYXBwLWJvdW5kLgotICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJhcHAtYm91
bmQiOwotICAgIFt3ZWJWaWV3MSBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKLSAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkTWVzc2FnZSk7Ci0KLSAgICAvLyBMb2Fk
IFdlYlZpZXcgd2l0aCBhIG5vbiBhcHAtYm91bmQgcmVxdWVzdC4gV2UgZXhwZWN0IHRoZSBTZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHkgdG8gYmUgYXBwLWJvdW5kCi0gICAgLy8gYXQgZmlyc3QsIGJ1
dCB0aGVuIGJlY29tZSBub24gYXBwLWJvdW5kIG9uY2UgdGhlIHNlY29uZCB3ZWJWaWV3IGlzIGNs
b3NlZCBhbmQgaXRzIGNsaWVudCBpcyB1bnJlZ2lzdGVyZWQuCi0gICAgZXhwZWN0ZWRNZXNzYWdl
ID0gInN0YXJ0cyBhcHAtYm91bmQiOwotICAgIHJlY2VpdmVkTWVzc2FnZSA9IGZhbHNlOwotICAg
IE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5vbkFwcEJvdW5kUmVxdWVzdCA9IFtOU011dGFibGVVUkxS
ZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAiaHR0cDovLzEyNy4wLjAuMTolZC9tYWluLmh0bWwiLCBzZXJ2ZXIucG9y
dCgpXV1dOwotICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgbm9u
QXBwQm91bmRSZXF1ZXN0Ll9pc05vbkFwcEluaXRpYXRlZCA9IFlFUzsKLSAgICBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLQotICAgIFt3ZWJWaWV3MiBsb2FkUmVxdWVzdDpub25B
cHBCb3VuZFJlcXVlc3RdOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRN
ZXNzYWdlKTsKLQotICAgIC8vIENsb3NlIHRoZSBhcHAtYm91bmQgdmlldy4gV2UgZXhwZWN0IHRo
YXQgdGhlIGV4aXN0aW5nIHdvcmtlciB3aWxsIGJlY29tZSBub24gYXBwLWJvdW5kCi0gICAgLy8g
bm93IHRoYXQgYWxsIGFwcC1ib3VuZCBjbGllbnRzIGhhdmUgYmVlbiByZW1vdmVkLgotICAgIGV4
cGVjdGVkTWVzc2FnZSA9ICJub24gYXBwLWJvdW5kIjsKLSAgICByZWNlaXZlZE1lc3NhZ2UgPSBm
YWxzZTsKLSAgICBbd2ViVmlldzEgX2Nsb3NlXTsKLSAgICB3ZWJWaWV3MSA9IG51bGxwdHI7Ci0K
LSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkTWVzc2FnZSk7Ci19Ci0KLSNl
bmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeVBsdWdJbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeVBsdWdJbi5tbQpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODE2YzE1ZjQyYzRmNzE1ODVhZDM5NjdlYjk4MjJiODM2
MDI4MzgxOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3lQ
bHVnSW4ubW0KKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lt
cG9ydCAiY29uZmlnLmgiCi0KLSNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCi0jaW1wb3J0
IDxXZWJLaXQvV0tXZWJQcm9jZXNzUGx1Z0luLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV0tXZWJQcm9j
ZXNzUGx1Z0luTG9hZERlbGVnYXRlLmg+Ci0jaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+Ci0KLUBp
bnRlcmZhY2UgSW5BcHBCcm93c2VyUHJpdmFjeVBsdWdJbiA6IE5TT2JqZWN0IDxXS1dlYlByb2Nl
c3NQbHVnSW4sIFdLV2ViUHJvY2Vzc1BsdWdJbkxvYWREZWxlZ2F0ZT4KLUBlbmQKLQotQGltcGxl
bWVudGF0aW9uIEluQXBwQnJvd3NlclByaXZhY3lQbHVnSW4geyB9Ci0KLS0gKE5TVVJMUmVxdWVz
dCAqKXdlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6KFdLV2ViUHJvY2Vz
c1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgZnJhbWU6KFdLV2Vi
UHJvY2Vzc1BsdWdJbkZyYW1lICopZnJhbWUgd2lsbFNlbmRSZXF1ZXN0Rm9yUmVzb3VyY2U6KHVp
bnQ2NF90KXJlc291cmNlIHJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgcmVkaXJlY3RS
ZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlZGlyZWN0UmVzcG9uc2UKLXsKLSAgICByZXR1cm4g
YWRvcHROUyhbW05TVVJMUmVxdWVzdCBhbGxvY10gaW5pdFdpdGhVUkw6cmVxdWVzdC5VUkxdKS5h
dXRvcmVsZWFzZSgpOwotfQotCi1AZW5kCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL2FwcC1wcml2YWN5LXJlcG9ydC1pZnJhbWUuaHRtbCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvYXBwLXByaXZhY3ktcmVwb3J0LWlmcmFt
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmU2OWRlMjliYjJkMWQ2NDM0YjhiMjlhZTc3NWFkOGMyZTQ4YzUz
OTEKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IDRkYTEzYjE1MzQ0NTk1ZjE0NzZlMTc1
ODZkOTE2OGE1Y2QxM2YyMjkuLjM3YzhjYWUwNWVlMjQxMWM1ZmM0ODk2Y2JkZjkzNTY2OWMyZTEw
MjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtMzg4LDkgKzM4OCw4IEBAIGludGVy
ZmFjZSBUZXN0UnVubmVyIHsKICAgICBib29sZWFuIGhhc0FwcEJvdW5kU2Vzc2lvbigpOwogICAg
IHVuZGVmaW5lZCBjbGVhckFwcEJvdW5kU2Vzc2lvbigpOwogICAgIHVuZGVmaW5lZCBzZXRBcHBC
b3VuZERvbWFpbnMob2JqZWN0IG9yaWdpbnNBcnJheSwgb2JqZWN0IGNhbGxiYWNrKTsKLSAgICB1
bmRlZmluZWQgYXBwQm91bmRSZXF1ZXN0Q29udGV4dERhdGFGb3JEb21haW4oRE9NU3RyaW5nIGRv
bWFpbiwgb2JqZWN0IGNhbGxiYWNrKTsKLSAgICBib29sZWFuIGRpZExvYWRBcHBCb3VuZFJlcXVl
c3QoKTsKLSAgICBib29sZWFuIGRpZExvYWROb25BcHBCb3VuZFJlcXVlc3QoKTsKKyAgICBib29s
ZWFuIGRpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0KCk7CisgICAgYm9vbGVhbiBkaWRMb2FkTm9u
QXBwSW5pdGlhdGVkUmVxdWVzdCgpOwogCiAgICAgdW5kZWZpbmVkIGluamVjdFVzZXJTY3JpcHQo
RE9NU3RyaW5nIHN0cmluZyk7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcg
dXNlclNjcmlwdEluamVjdGVkQ291bnQ7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IDY3YjM1M2YzMDBm
ZmJmNjVkMzQ0NmMyZTRkODIxMjA1ZTYzZTE3YTcuLjZlNDE0Y2NkZTY3MGU3MDYyNjhiNDY0YTQz
MDE2YWIzN2Y1MmM3OGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC00MTUsMTQgKzQxNSw2IEBAIHZv
aWQgSW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlKFdLQnVuZGxlUGFnZVJl
ZiBwYWdlLCBXS1N0cmluZ1JlZiBtCiAgICAgICAgIG1fdGVzdFJ1bm5lci0+Y2FsbERpZFJlY2Vp
dmVMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnNDYWxsYmFjayhXVEZNb3ZlKGRvbWFpbnMpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKLSAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4
Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkNhbGxEaWRSZWNlaXZlQXBwQm91bmRSZXF1ZXN0Q29udGV4
dERhdGFGb3JEb21haW4iKSkgewotICAgICAgICBBU1NFUlQobWVzc2FnZUJvZHkpOwotICAgICAg
ICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLU3RyaW5nR2V0VHlwZUlEKCkp
OwotCi0gICAgICAgIGF1dG8gcmVzdWx0U3RyaW5nID0gdG9XVEZTdHJpbmcoc3RhdGljX2Nhc3Q8
V0tTdHJpbmdSZWY+KG1lc3NhZ2VCb2R5KSk7Ci0gICAgICAgIG1fdGVzdFJ1bm5lci0+Y2FsbERp
ZFJlY2VpdmVBcHBCb3VuZFJlcXVlc3RDb250ZXh0RGF0YUZvckRvbWFpbkNhbGxiYWNrKFdURk1v
dmUocmVzdWx0U3RyaW5nKSk7Ci0gICAgfQogCiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRG
OENTdHJpbmcobWVzc2FnZU5hbWUsICJDYWxsRGlkUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxz
Q2FsbGJhY2siKSkgewogICAgICAgICBtX3Rlc3RSdW5uZXItPmNhbGxEaWRSZW1vdmVBbGxTZXNz
aW9uQ3JlZGVudGlhbHNDYWxsYmFjaygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggM2Y3MmFjMmE0ODE0NmUzMDE0
ODJkZDJlZDRlYmMxOTJmZjU1NWQzMS4uNDZmZjdhNWI3NTRiOGEwN2ExYmU2OTRmNDY5OWE5MjIx
NjhmZmVjMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC02NDUsNyArNjQ1LDYgQEAgZW51bSB7CiAgICAgRGlkU2V0
QXBwQm91bmREb21haW5zQ2FsbGJhY2tJRCwKICAgICBFbnRlckZ1bGxzY3JlZW5Gb3JFbGVtZW50
Q2FsbGJhY2tJRCwKICAgICBFeGl0RnVsbHNjcmVlbkZvckVsZW1lbnRDYWxsYmFja0lELAotICAg
IEFwcEJvdW5kUmVxdWVzdENvbnRleHREYXRhRm9yRG9tYWluQ2FsbGJhY2tJRCwKICAgICBEaWRO
b3RIYW5kbGVUYXBBc01lYW5pbmdmdWxDbGlja0NhbGxiYWNrSUQsCiAgICAgRmlyc3RVSVNjcmlw
dENhbGxiYWNrSUQgPSAxMDAKIH07CkBAIC0yMTE1LDI2ICsyMTE0LDE0IEBAIHZvaWQgVGVzdFJ1
bm5lcjo6ZGlkU2V0QXBwQm91bmREb21haW5zQ2FsbGJhY2soKQogICAgIGNhbGxUZXN0UnVubmVy
Q2FsbGJhY2soRGlkU2V0QXBwQm91bmREb21haW5zQ2FsbGJhY2tJRCk7CiB9CiAKLXZvaWQgVGVz
dFJ1bm5lcjo6YXBwQm91bmRSZXF1ZXN0Q29udGV4dERhdGFGb3JEb21haW4oSlNTdHJpbmdSZWYg
ZG9tYWluLCBKU1ZhbHVlUmVmIGNhbGxiYWNrKQorYm9vbCBUZXN0UnVubmVyOjpkaWRMb2FkQXBw
SW5pdGlhdGVkUmVxdWVzdCgpCiB7Ci0gICAgY2FjaGVUZXN0UnVubmVyQ2FsbGJhY2soQXBwQm91
bmRSZXF1ZXN0Q29udGV4dERhdGFGb3JEb21haW5DYWxsYmFja0lELCBjYWxsYmFjayk7Ci0gICAg
cG9zdE1lc3NhZ2UoIkFwcEJvdW5kUmVxdWVzdENvbnRleHREYXRhRm9yRG9tYWluIiwgZG9tYWlu
KTsKKyAgICByZXR1cm4gcG9zdFN5bmNocm9ub3VzUGFnZU1lc3NhZ2VSZXR1cm5pbmdCb29sZWFu
KCJEaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdCIpOwogfQogCi12b2lkIFRlc3RSdW5uZXI6OmNh
bGxEaWRSZWNlaXZlQXBwQm91bmRSZXF1ZXN0Q29udGV4dERhdGFGb3JEb21haW5DYWxsYmFjayhT
dHJpbmcmJiBjb250ZXh0RG9tYWluKQorYm9vbCBUZXN0UnVubmVyOjpkaWRMb2FkTm9uQXBwSW5p
dGlhdGVkUmVxdWVzdCgpCiB7Ci0gICAgSlNWYWx1ZVJlZiByZXN1bHRWYWx1ZSA9IEpTVmFsdWVN
YWtlU3RyaW5nKG1haW5GcmFtZUpTQ29udGV4dCgpLCBjcmVhdGVKU1N0cmluZyhjb250ZXh0RG9t
YWluLnV0ZjgoKS5kYXRhKCkpLmdldCgpKTsKLSAgICBjYWxsVGVzdFJ1bm5lckNhbGxiYWNrKEFw
cEJvdW5kUmVxdWVzdENvbnRleHREYXRhRm9yRG9tYWluQ2FsbGJhY2tJRCwgMSwgJnJlc3VsdFZh
bHVlKTsKLX0KLQotYm9vbCBUZXN0UnVubmVyOjpkaWRMb2FkQXBwQm91bmRSZXF1ZXN0KCkKLXsK
LSAgICByZXR1cm4gcG9zdFN5bmNocm9ub3VzUGFnZU1lc3NhZ2VSZXR1cm5pbmdCb29sZWFuKCJE
aWRMb2FkQXBwQm91bmRSZXF1ZXN0Iik7Ci19Ci0KLWJvb2wgVGVzdFJ1bm5lcjo6ZGlkTG9hZE5v
bkFwcEJvdW5kUmVxdWVzdCgpCi17Ci0gICAgcmV0dXJuIHBvc3RTeW5jaHJvbm91c1BhZ2VNZXNz
YWdlUmV0dXJuaW5nQm9vbGVhbigiRGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdCIpOworICAgIHJl
dHVybiBwb3N0U3luY2hyb25vdXNQYWdlTWVzc2FnZVJldHVybmluZ0Jvb2xlYW4oIkRpZExvYWRO
b25BcHBJbml0aWF0ZWRSZXF1ZXN0Iik7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0SXNTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkKGJvb2wgZ3JhbnRlZCkKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5kZXggMWJl
NjYzZDhlZDgxYzM5MGMxZDhiOWM2Y2I2MTAwZGJhODQ1MTQyNi4uM2EzNGJhMDczYmMxOWIwYTgx
NGZkZmIyMmEyYzhjZjBmNDgxNDhmYSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKQEAgLTQ5NywxMCArNDk3LDkgQEAgcHVibGlj
OgogICAgIHZvaWQgY2xlYXJBcHBCb3VuZFNlc3Npb24oKTsKICAgICB2b2lkIHNldEFwcEJvdW5k
RG9tYWlucyhKU1ZhbHVlUmVmIG9yaWdpbkFycmF5LCBKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKICAg
ICB2b2lkIGRpZFNldEFwcEJvdW5kRG9tYWluc0NhbGxiYWNrKCk7Ci0gICAgdm9pZCBhcHBCb3Vu
ZFJlcXVlc3RDb250ZXh0RGF0YUZvckRvbWFpbihKU1N0cmluZ1JlZiwgSlNWYWx1ZVJlZik7Ci0g
ICAgdm9pZCBjYWxsRGlkUmVjZWl2ZUFwcEJvdW5kUmVxdWVzdENvbnRleHREYXRhRm9yRG9tYWlu
Q2FsbGJhY2soU3RyaW5nJiYpOwotICAgIGJvb2wgZGlkTG9hZEFwcEJvdW5kUmVxdWVzdCgpOwot
ICAgIGJvb2wgZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdCgpOworCisgICAgYm9vbCBkaWRMb2Fk
QXBwSW5pdGlhdGVkUmVxdWVzdCgpOworICAgIGJvb2wgZGlkTG9hZE5vbkFwcEluaXRpYXRlZFJl
cXVlc3QoKTsKIAogICAgIHNpemVfdCB1c2VyU2NyaXB0SW5qZWN0ZWRDb3VudCgpIGNvbnN0Owog
ICAgIHZvaWQgaW5qZWN0VXNlclNjcmlwdChKU1N0cmluZ1JlZik7CmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGNmYzljNDQ4M2M4MjVkOTEzZWQyN2E0ZDU1
ODg0ZjI0MmQ3NmYwMDIuLjk4M2I4NWIwYTNhMjg0ZjA5Yjc4NDAwZTA4Y2MwNzIwYWNhMzQwMTkg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0xMDc4LDcg
KzEwNzgsNyBAQCBib29sIFRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFs
dWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zLCBSZQogICAgICAgICB1cGRhdGVMaXZlRG9j
dW1lbnRzQWZ0ZXJUZXN0KCk7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIGNsZWFyQXBw
bGljYXRpb25CdW5kbGVJZGVudGlmaWVyVGVzdGluZ092ZXJyaWRlKCk7Ci0gICAgICAgIGNsZWFy
QXBwQm91bmROYXZpZ2F0aW9uRGF0YSgpOworICAgICAgICBjbGVhckFwcFByaXZhY3lSZXBvcnRU
ZXN0aW5nRGF0YSgpOwogI2VuZGlmCiAgICAgICAgIGNsZWFyQnVuZGxlSWRlbnRpZmllckluTmV0
d29ya1Byb2Nlc3MoKTsKICAgICB9CkBAIC0yNzIzLDIxICsyNzIzLDE3IEBAIHZvaWQgVGVzdENv
bnRyb2xsZXI6OnJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscygpCiB7CiB9CiAKLXZvaWQgVGVz
dENvbnRyb2xsZXI6OmFwcEJvdW5kUmVxdWVzdENvbnRleHREYXRhRm9yRG9tYWluKFdLU3RyaW5n
UmVmKQotewotfQotCi1ib29sIFRlc3RDb250cm9sbGVyOjpkaWRMb2FkQXBwQm91bmRSZXF1ZXN0
KCkKK2Jvb2wgVGVzdENvbnRyb2xsZXI6OmRpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0KCkKIHsK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgVGVzdENvbnRyb2xsZXI6OmRpZExvYWROb25B
cHBCb3VuZFJlcXVlc3QoKQorYm9vbCBUZXN0Q29udHJvbGxlcjo6ZGlkTG9hZE5vbkFwcEluaXRp
YXRlZFJlcXVlc3QoKQogewogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBUZXN0Q29udHJv
bGxlcjo6Y2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhKCkKK3ZvaWQgVGVzdENvbnRyb2xsZXI6
OmNsZWFyQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCmluZGV4IGJjMGVjNTI2OTM0NzM2MWMzMTVlNmU0ZDA3
ZGI4MWFiYjZiNDdjNmUuLjcyODY0ODQxY2U2MDQ4OTBmN2I1NjcwMmM0YjZiMDRmZjZjODdiZGEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKQEAgLTI2MiwxMCArMjYy
LDkgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnMoKTsK
ICAgICB2b2lkIGNsZWFyQXBwQm91bmRTZXNzaW9uKCk7CiAgICAgdm9pZCByZWluaXRpYWxpemVB
cHBCb3VuZERvbWFpbnMoKTsKLSAgICB2b2lkIGFwcEJvdW5kUmVxdWVzdENvbnRleHREYXRhRm9y
RG9tYWluKFdLU3RyaW5nUmVmKTsKLSAgICB2b2lkIGNsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0
YSgpOwotICAgIGJvb2wgZGlkTG9hZEFwcEJvdW5kUmVxdWVzdCgpOwotICAgIGJvb2wgZGlkTG9h
ZE5vbkFwcEJvdW5kUmVxdWVzdCgpOworICAgIHZvaWQgY2xlYXJBcHBQcml2YWN5UmVwb3J0VGVz
dGluZ0RhdGEoKTsKKyAgICBib29sIGRpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0KCk7CisgICAg
Ym9vbCBkaWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdCgpOwogCiAgICAgdm9pZCB1cGRhdGVC
dW5kbGVJZGVudGlmaWVySW5OZXR3b3JrUHJvY2Vzcyhjb25zdCBzdGQ6OnN0cmluZyYgYnVuZGxl
SWRlbnRpZmllcik7CiAgICAgdm9pZCBjbGVhckJ1bmRsZUlkZW50aWZpZXJJbk5ldHdvcmtQcm9j
ZXNzKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9u
LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IDVk
MzI3MjM5MmJlZTEwYzdiY2VlYWQ0YzNmOTIxNDZlMWViOTNlYTAuLjhkNzZlNGJhMGRhYmFkOGE5
NGM2ZWE0YWI5YTViM2NkYzBkMWY3OWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdElu
dm9jYXRpb24uY3BwCkBAIC03OTIsMTIgKzc5Miw2IEBAIHZvaWQgVGVzdEludm9jYXRpb246OmRp
ZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1l
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4
Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkFwcEJvdW5kUmVxdWVzdENvbnRleHREYXRhRm9yRG9tYWlu
IikpIHsKLSAgICAgICAgV0tTdHJpbmdSZWYgZG9tYWluID0gc3RyaW5nVmFsdWUobWVzc2FnZUJv
ZHkpOwotICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuYXBwQm91bmRSZXF1ZXN0
Q29udGV4dERhdGFGb3JEb21haW4oZG9tYWluKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCkBAIC0xMDcxLDExICsxMDY1LDExIEBAIFdL
UmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91
c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgIHJldHVybiBhZG9wdFdLKFdLQm9vbGVhbkNy
ZWF0ZShzdGF0aXN0aWNJbkRhdGFiYXNlT25jZSkpOwogICAgIH0KIAotICAgIGlmIChXS1N0cmlu
Z0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiRGlkTG9hZEFwcEJvdW5kUmVxdWVz
dCIpKQotICAgICAgICByZXR1cm4gYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoVGVzdENvbnRyb2xs
ZXI6OnNpbmdsZXRvbigpLmRpZExvYWRBcHBCb3VuZFJlcXVlc3QoKSkpOworICAgIGlmIChXS1N0
cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiRGlkTG9hZEFwcEluaXRpYXRl
ZFJlcXVlc3QiKSkKKyAgICAgICAgcmV0dXJuIGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKFRlc3RD
b250cm9sbGVyOjpzaW5nbGV0b24oKS5kaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdCgpKSk7CiAK
LSAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkRpZExv
YWROb25BcHBCb3VuZFJlcXVlc3QiKSkKLSAgICAgICAgcmV0dXJuIGFkb3B0V0soV0tCb29sZWFu
Q3JlYXRlKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5kaWRMb2FkTm9uQXBwQm91bmRSZXF1
ZXN0KCkpKTsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFt
ZSwgIkRpZExvYWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0IikpCisgICAgICAgIHJldHVybiBhZG9w
dFdLKFdLQm9vbGVhbkNyZWF0ZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuZGlkTG9hZE5v
bkFwcEluaXRpYXRlZFJlcXVlc3QoKSkpOwogCiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRG
OENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRTdGF0aXN0aWNzR3JhbmRmYXRoZXJlZCIpKSB7CiAg
ICAgICAgIGF1dG8gbWVzc2FnZUJvZHlEaWN0aW9uYXJ5ID0gZGljdGlvbmFyeVZhbHVlKG1lc3Nh
Z2VCb2R5KTsKQEAgLTE1ODEsMTIgKzE1NzUsNiBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRS
ZWNlaXZlTG9hZGVkU3VicmVzb3VyY2VEb21haW5zKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucwog
ICAgIHBvc3RQYWdlTWVzc2FnZSgiQ2FsbERpZFJlY2VpdmVMb2FkZWRTdWJyZXNvdXJjZURvbWFp
bnMiLCBtZXNzYWdlQm9keSk7CiB9CiAKLXZvaWQgVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVB
cHBCb3VuZFJlcXVlc3RDb250ZXh0RGF0YUZvckRvbWFpbihTdHJpbmcmJiBkb21haW4pCi17Ci0g
ICAgYXV0byBtZXNzYWdlQm9keSA9IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGRvbWFp
bi51dGY4KCkuZGF0YSgpKTsKLSAgICBwb3N0UGFnZU1lc3NhZ2UoIkNhbGxEaWRSZWNlaXZlQXBw
Qm91bmRSZXF1ZXN0Q29udGV4dERhdGFGb3JEb21haW4iLCBtZXNzYWdlQm9keSk7Ci19Ci0KIHZv
aWQgVGVzdEludm9jYXRpb246OmRpZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscygpCiB7CiAg
ICAgcG9zdFBhZ2VNZXNzYWdlKCJDYWxsRGlkUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzQ2Fs
bGJhY2siKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRp
b24uaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAppbmRleCBhOGM4
NTRlMjc2N2Q2OTgyNmVkOTc2MzNiNzFlMzI1ODFlODZmMjg2Li5mMTEyNmEzZWU1NTJjZWRkNGIw
MWViYmRjZjEzNWEyNWZkYTAyMjYxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RJbnZvY2F0aW9uLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2Nh
dGlvbi5oCkBAIC05Nyw3ICs5Nyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlbW92ZUFsbFNl
c3Npb25DcmVkZW50aWFscygpOwogCiAgICAgdm9pZCBkaWRTZXRBcHBCb3VuZERvbWFpbnMoKTsK
LSAgICB2b2lkIGRpZFJlY2VpdmVBcHBCb3VuZFJlcXVlc3RDb250ZXh0RGF0YUZvckRvbWFpbihT
dHJpbmcmJik7CiAKICAgICB2b2lkIGR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2Nv
YS5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5t
bQppbmRleCA2ZjE0ZmNkN2IzMWY0MzY5NWVlYWExNzM2MDE4ZjI4NTg5MDE0YzA3Li45OGNjYjRk
YjlhYjA4YmFiMjkzMzBhYjRjYmEyZTI0NWU5OTQ0ZjdkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCkBAIC0zODQsMjMgKzM4
NCw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmNsZWFyTG9hZGVkU3VicmVzb3VyY2VEb21haW5z
KCkKICAgICBbW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uKCkgd2Vic2l0ZURhdGFTdG9yZV0g
X2NsZWFyTG9hZGVkU3VicmVzb3VyY2VEb21haW5zRm9yOnBhcmVudFZpZXctPnBsYXRmb3JtVmll
dygpXTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6YXBwQm91bmRSZXF1ZXN0Q29udGV4dERh
dGFGb3JEb21haW4oV0tTdHJpbmdSZWYgZG9tYWluKQotewotICAgIGF1dG8qIHBhcmVudFZpZXcg
PSBtYWluV2ViVmlldygpOwotICAgIGlmICghcGFyZW50VmlldykKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgW21fbWFpbldlYlZpZXctPnBsYXRmb3JtVmlldygpIF9hcHBCb3VuZE5hdmlnYXRpb25E
YXRhRm9yRG9tYWluOnRvV1RGU3RyaW5nKGRvbWFpbikgY29tcGxldGlvbkhhbmRsZXI6XihOU1N0
cmluZyAqY29udGV4dCkgewotICAgICAgICBpZiAoIWNvbnRleHQpIHsKLSAgICAgICAgICAgIG1f
Y3VycmVudEludm9jYXRpb24tPmRpZFJlY2VpdmVBcHBCb3VuZFJlcXVlc3RDb250ZXh0RGF0YUZv
ckRvbWFpbih7IH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAg
bV9jdXJyZW50SW52b2NhdGlvbi0+ZGlkUmVjZWl2ZUFwcEJvdW5kUmVxdWVzdENvbnRleHREYXRh
Rm9yRG9tYWluKFN0cmluZyhjb250ZXh0KSk7Ci0gICAgfV07Ci19Ci0KLWJvb2wgVGVzdENvbnRy
b2xsZXI6OmRpZExvYWRBcHBCb3VuZFJlcXVlc3QoKQorYm9vbCBUZXN0Q29udHJvbGxlcjo6ZGlk
TG9hZEFwcEluaXRpYXRlZFJlcXVlc3QoKQogewogICAgIGF1dG8qIHBhcmVudFZpZXcgPSBtYWlu
V2ViVmlldygpOwogICAgIGlmICghcGFyZW50VmlldykKQEAgLTQwOCw3ICszOTIsNyBAQCBib29s
IFRlc3RDb250cm9sbGVyOjpkaWRMb2FkQXBwQm91bmRSZXF1ZXN0KCkKIAogICAgIF9fYmxvY2sg
Ym9vbCBpc0RvbmUgPSBmYWxzZTsKICAgICBfX2Jsb2NrIGJvb2wgZGlkTG9hZFJlc3VsdCA9IGZh
bHNlOwotICAgIFttX21haW5XZWJWaWV3LT5wbGF0Zm9ybVZpZXcoKSBfZGlkTG9hZEFwcEJvdW5k
UmVxdWVzdDpeKEJPT0wgcmVzdWx0KSB7CisgICAgW21fbWFpbldlYlZpZXctPnBsYXRmb3JtVmll
dygpIF9kaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdDpeKEJPT0wgcmVzdWx0KSB7CiAgICAgICAg
IGRpZExvYWRSZXN1bHQgPSByZXN1bHQ7CiAgICAgICAgIGlzRG9uZSA9IHRydWU7CiAgICAgfV07
CkBAIC00MTYsNyArNDAwLDcgQEAgYm9vbCBUZXN0Q29udHJvbGxlcjo6ZGlkTG9hZEFwcEJvdW5k
UmVxdWVzdCgpCiAgICAgcmV0dXJuIGRpZExvYWRSZXN1bHQ7CiB9CiAKLWJvb2wgVGVzdENvbnRy
b2xsZXI6OmRpZExvYWROb25BcHBCb3VuZFJlcXVlc3QoKQorYm9vbCBUZXN0Q29udHJvbGxlcjo6
ZGlkTG9hZE5vbkFwcEluaXRpYXRlZFJlcXVlc3QoKQogewogICAgIGF1dG8qIHBhcmVudFZpZXcg
PSBtYWluV2ViVmlldygpOwogICAgIGlmICghcGFyZW50VmlldykKQEAgLTQyNCw3ICs0MDgsNyBA
QCBib29sIFRlc3RDb250cm9sbGVyOjpkaWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0KCkKIAogICAg
IF9fYmxvY2sgYm9vbCBpc0RvbmUgPSBmYWxzZTsKICAgICBfX2Jsb2NrIGJvb2wgZGlkTG9hZFJl
c3VsdCA9IGZhbHNlOwotICAgIFttX21haW5XZWJWaWV3LT5wbGF0Zm9ybVZpZXcoKSBfZGlkTG9h
ZE5vbkFwcEJvdW5kUmVxdWVzdDpeKEJPT0wgcmVzdWx0KSB7CisgICAgW21fbWFpbldlYlZpZXct
PnBsYXRmb3JtVmlldygpIF9kaWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdDpeKEJPT0wgcmVz
dWx0KSB7CiAgICAgICAgIGRpZExvYWRSZXN1bHQgPSByZXN1bHQ7CiAgICAgICAgIGlzRG9uZSA9
IHRydWU7CiAgICAgfV07CkBAIC00MzIsMTQgKzQxNiwxNCBAQCBib29sIFRlc3RDb250cm9sbGVy
OjpkaWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0KCkKICAgICByZXR1cm4gZGlkTG9hZFJlc3VsdDsK
IH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6Y2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhKCkK
K3ZvaWQgVGVzdENvbnRyb2xsZXI6OmNsZWFyQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKCkK
IHsKICAgICBhdXRvKiBwYXJlbnRWaWV3ID0gbWFpbldlYlZpZXcoKTsKICAgICBpZiAoIXBhcmVu
dFZpZXcpCiAgICAgICAgIHJldHVybjsKIAogICAgIF9fYmxvY2sgYm9vbCBkb25lQ2xlYXJpbmcg
PSBmYWxzZTsKLSAgICBbbV9tYWluV2ViVmlldy0+cGxhdGZvcm1WaWV3KCkgX2NsZWFyQXBwQm91
bmROYXZpZ2F0aW9uRGF0YTpeeworICAgIFttX21haW5XZWJWaWV3LT5wbGF0Zm9ybVZpZXcoKSBf
Y2xlYXJBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGE6XnsKICAgICAgICAgZG9uZUNsZWFyaW5n
ID0gdHJ1ZTsKICAgICB9XTsKICAgICBwbGF0Zm9ybVJ1blVudGlsKGRvbmVDbGVhcmluZywgbm9U
aW1lb3V0KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFJ1
bm5lcldLV2ViVmlldy5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVubmVy
V0tXZWJWaWV3LmgKaW5kZXggNGNkNmRhMWZkNmY4ZTc0NGYzOTA0ZTA2YWViYzgyNjlmMWFkZWEz
OS4uMDc0NzZiNmUxYWU4OTEwMGU5ZmJiOWRjZWUyMjYzNzM5ODc4MTI4MiAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVubmVyV0tXZWJWaWV3LmgKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVubmVyV0tXZWJWaWV3LmgKQEAgLTgy
LDggKzgyLDcgQEAKIAogLSAodm9pZClkaXNtaXNzQWN0aXZlTWVudTsKIC0gKHZvaWQpcmVzZXRJ
bnRlcmFjdGlvbkNhbGxiYWNrczsKLS0gKHZvaWQpX2FwcEJvdW5kTmF2aWdhdGlvbkRhdGFGb3JE
b21haW46KE5TU3RyaW5nICopZG9tYWluIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1N0
cmluZyAqIGNvbnRleHQpKWNvbXBsZXRpb25IYW5kbGVyOwotLSAodm9pZClfZGlkTG9hZEFwcEJv
dW5kUmVxdWVzdDoodm9pZCAoXikoQk9PTCByZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyOwotLSAo
dm9pZClfZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdDoodm9pZCAoXikoQk9PTCByZXN1bHQpKWNv
bXBsZXRpb25IYW5kbGVyOworLSAodm9pZClfZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3Q6KHZv
aWQgKF4pKEJPT0wgcmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpX2RpZExvYWRO
b25BcHBJbml0aWF0ZWRSZXF1ZXN0Oih2b2lkICheKShCT09MIHJlc3VsdCkpY29tcGxldGlvbkhh
bmRsZXI7CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2Ev
VGVzdFJ1bm5lcldLV2ViVmlldy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVz
dFJ1bm5lcldLV2ViVmlldy5tbQppbmRleCAwZDg0MTE2YWQ0NTM1MWFmMWYxNTViYjUyYzVjYWVm
YjNjZjJjNzUzLi4yZWQ4ZjgwMDc5ZTc4ZTA0ZDljZGI2ZWViM2M1NDJlY2FjOTg4NzBmIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5uZXJXS1dlYlZpZXcu
bW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVubmVyV0tXZWJWaWV3
Lm1tCkBAIC01OTYsMTkgKzU5NiwxNCBAQCBzdGF0aWMgYm9vbCBpc1F1aWNrYm9hcmRWaWV3Q29u
dHJvbGxlcihVSVZpZXdDb250cm9sbGVyICp2aWV3Q29udHJvbGxlcikKICAgICAgICAgc2VsZi5k
aWRIaWRlQ29udGFjdFBpY2tlckNhbGxiYWNrKCk7CiB9CiAKLS0gKHZvaWQpX2FwcEJvdW5kTmF2
aWdhdGlvbkRhdGFGb3JEb21haW46KE5TU3RyaW5nICopZG9tYWluIGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkICheKShOU1N0cmluZyAqIGNvbnRleHQpKWNvbXBsZXRpb25IYW5kbGVyCistICh2b2lk
KV9kaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdDoodm9pZCAoXikoQk9PTCByZXN1bHQpKWNvbXBs
ZXRpb25IYW5kbGVyCiB7Ci0gICAgW3N1cGVyIF9hcHBCb3VuZE5hdmlnYXRpb25EYXRhRm9yRG9t
YWluOmRvbWFpbiBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CisgICAgW3N1
cGVyIF9kaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdDpjb21wbGV0aW9uSGFuZGxlcl07CiB9CiAK
LS0gKHZvaWQpX2RpZExvYWRBcHBCb3VuZFJlcXVlc3Q6KHZvaWQgKF4pKEJPT0wgcmVzdWx0KSlj
b21wbGV0aW9uSGFuZGxlcgorLSAodm9pZClfZGlkTG9hZE5vbkFwcEluaXRpYXRlZFJlcXVlc3Q6
KHZvaWQgKF4pKEJPT0wgcmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcgogewotICAgIFtzdXBlciBf
ZGlkTG9hZEFwcEJvdW5kUmVxdWVzdDpjb21wbGV0aW9uSGFuZGxlcl07Ci19Ci0KLS0gKHZvaWQp
X2RpZExvYWROb25BcHBCb3VuZFJlcXVlc3Q6KHZvaWQgKF4pKEJPT0wgcmVzdWx0KSljb21wbGV0
aW9uSGFuZGxlcgotewotICAgIFtzdXBlciBfZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdDpjb21w
bGV0aW9uSGFuZGxlcl07CisgICAgW3N1cGVyIF9kaWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVz
dDpjb21wbGV0aW9uSGFuZGxlcl07CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3MDhiZWNmNzlmNjk1NTRi
M2M5NTgyNzVlZmE4ZjM4ZTYzYWUxN2VhLi42NzA1ODNlMTY4MjYwNGIzZmM1ODIyNjIzNWMwZTQ4
OWVkNmVhNzJlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMjEtMDYtMjMgIEthdGUgQ2hlbmV5
ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAgQXBwIFBy
aXZhY3kgUmVwb3J0IGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyNzMyNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzk2OTY4NDk+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBBcHAgUHJp
dmFjeSBSZXBvcnQgdGVzdHMgaW50byB0aGVpciBvd24gZGlyZWN0b3J5LgorCisgICAgICAgICog
VGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9y
dC9hdHRyaWJ1dGlvbi1sb2FkLXVybC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLWxvYWQtdXJsLmh0bWw6IFJl
bmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kv
YXBwLWJvdW5kLWF0dHJpYnV0aW9uLWxvYWQtdXJsLmh0bWwuCisgICAgICAgICogaHR0cC90ZXN0
cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tcGluZy1sb2FkLWV4cGVjdGVkLnR4dDog
UmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFj
eS9hcHAtYm91bmQtYXR0cmlidXRpb24tcGluZy1sb2FkLWV4cGVjdGVkLnR4dC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1waW5nLWxvYWQuaHRt
bDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJp
dmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tcGluZy1sb2FkLmh0bWwuCisgICAgICAgICogaHR0
cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tcG9zdC1yZXF1ZXN0LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQv
YXR0cmlidXRpb24tcG9zdC1yZXF1ZXN0Lmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXBv
c3QtcmVxdWVzdC5odG1sLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0
L2F0dHJpYnV0aW9uLXByZWZsaWdodC1hc3luYy1leHBlY3RlZC50eHQ6IFJlbmFtZWQgZnJvbSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0
dHJpYnV0aW9uLXByZWZsaWdodC1hc3luYy1leHBlY3RlZC50eHQuCisgICAgICAgICogaHR0cC90
ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tcHJlZmxpZ2h0LWFzeW5jLmh0bWw6
IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZh
Y3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXByZWZsaWdodC1hc3luYy5odG1sLgorICAgICAgICAq
IGh0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXByZWZsaWdodC1zeW5j
LWV4cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBw
LWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tcHJlZmxpZ2h0LXN5bmMtZXhw
ZWN0ZWQudHh0LgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJp
YnV0aW9uLXByZWZsaWdodC1zeW5jLmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXByZWZs
aWdodC1zeW5jLmh0bWwuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQv
YXR0cmlidXRpb24tc3BlY3VsYXRpdmUtcmV2YWxpZGF0aW9uLWV4cGVjdGVkLnR4dDogUmVuYW1l
ZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAt
Ym91bmQtYXR0cmlidXRpb24tc3BlY3VsYXRpdmUtcmV2YWxpZGF0aW9uLWV4cGVjdGVkLnR4dC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1zcGVj
dWxhdGl2ZS1yZXZhbGlkYXRpb24uaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tc3BlY3Vs
YXRpdmUtcmV2YWxpZGF0aW9uLmh0bWwuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHAtcHJpdmFj
eS1yZXBvcnQvcmVzb3VyY2VzL2ZyYW1lLXdpdGgtYXV0aGVudGljYXRlZC1yZXNvdXJjZS5weTog
UmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFj
eS9yZXNvdXJjZXMvZnJhbWUtd2l0aC1hdXRoZW50aWNhdGVkLXJlc291cmNlLnB5LgorICAgICAg
ICAqIGh0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L3Jlc291cmNlcy9wb3N0LnB5OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9yZXNvdXJjZXMvcmVz
b3VyY2Utd2l0aC1hdXRoLnB5OiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bi1hcHAtYnJvd3Nlci1wcml2YWN5L3Jlc291cmNlcy9yZXNvdXJjZS13aXRoLWF1dGgucHkuCisg
ICAgICAgICogaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRy
aWJ1dGlvbi1sb2FkLXVybC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1wb3N0LXJl
cXVlc3QtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW4tYXBw
LWJyb3dzZXItcHJpdmFjeS9jb250ZXh0LXN0cmluZy1mb3Itc3ViZnJhbWUtZXhwZWN0ZWQudHh0
OiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9j
b250ZXh0LXN0cmluZy1mb3Itc3ViZnJhbWUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvY29udGV4dC1zdHJpbmctcHJlY29ubmVjdC1l
eHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nl
ci1wcml2YWN5L2NvbnRleHQtc3RyaW5nLXByZWNvbm5lY3QuaHRtbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvY29udGV4dC1zdHJpbmctcHJl
ZmxpZ2h0LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luLWFw
cC1icm93c2VyLXByaXZhY3kvY29udGV4dC1zdHJpbmctcHJlZmxpZ2h0Lmh0bWw6IFJlbW92ZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L3Jlc291cmNlcy9w
b3N0LnB5OiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJj
ZXMvY2hlY2stcGluZy1hcHAtaW5pdGlhdGVkLWRhdGEucHk6IFJlbmFtZWQgZnJvbSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2NoZWNrLXBpbmctYXBwLWJvdW5k
LWRhdGEucHkuCisgICAgICAgICogcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zOgor
CiAyMDIxLTA2LTIzICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgog
CiAgICAgICAgIFtXaW5DYWlyb10gVW5yZXZpZXdlZCB0ZXN0IGdhcmRlbmluZwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3Rh
dGlvbnMKaW5kZXggZDdiMzUzNmQ4YWMwMWI5MmVmOTdhN2E1OTMxZmU0OTUyNjg1YWE1OC4uNzAw
YWJjMjYxNGNiZDEzNjBmYTA3Zjc0NGI1MzBkYzBmMmUxODMyZiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25z
CkBAIC0xOTQsNiArMTk0LDkgQEAgZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9zdGFydC1yZWNvZ25p
dGlvbi10aGVuLXN0b3AuaHRtbCBbIFNraXAgXQogZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9zdGFy
dC1zZWNvbmQtcmVjb2duaXRpb24uaHRtbCBbIFNraXAgXQogZmFzdC9zcGVlY2hyZWNvZ25pdGlv
bi9pb3MvIFsgU2tpcCBdCiAKKyMgYXBwLXByaXZhY3ktcmVwb3J0IHRlc3RzIHJlbHkgb24gV2Vi
S2l0QWRkaXRpb25zCitodHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC8gWyBTa2lwIF0KKwog
IyBPbmx5IHBhcnRpYWwgc3VwcG9ydCBvbiBDb2NvYSBwbGF0Zm9ybXMuCiBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3NwZWVjaC1hcGkvIFsgU2tpcCBdCiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLWxvYWQt
dXJsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVw
b3J0L2F0dHJpYnV0aW9uLWxvYWQtdXJsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMDAyNDgw
NDUxNTk5ZmI0MDhlZDAwZjQ4YmZkNjcyOGYyNmQ2ZGY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tbG9hZC11
cmwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorVGVzdCBsb2FkVVJMIHJlcXVlc3RzIGFy
ZSBzdWNjZXNmdWxseSBhdHRyaWJ1dGVkIGFzIGFwcCBpbml0aWF0ZWQuCitQQVNTIHN1Y2Nlc3Nm
dWxseSBsb2FkZWQgb25seSBhcHAgaW5pdGlhdGVkIHJlcXVlc3RzCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLWxvYWQt
dXJsLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRy
aWJ1dGlvbi1sb2FkLXVybC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3YWQ4ZWU1Yzg3Y2MyZDE4NWVkNzk3
ZjViZWYwN2FkNjk0ZThjMDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1sb2FkLXVybC5odG1sCkBAIC0wLDAg
KzEsNDggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJz
ZXRUaW1lb3V0KCdydW5UZXN0KCknLCAwKSI+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+VGVzdCBs
b2FkVVJMIHJlcXVlc3RzIGFyZSBzdWNjZXNmdWxseSBhdHRyaWJ1dGVkIGFzIGFwcCBpbml0aWF0
ZWQuPC9kaXY+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzxzY3JpcHQ+CisgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBs
b2FkVVJMKCkgeworICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5ocmVmID0gZGVzdGluYXRpb25P
cmlnaW4gKyAiL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1sb2FkLXVybC5odG1sIjsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkgeworICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKG1lc3NhZ2UgKyAnXG4nKSk7CisgICAgfQorCisgICAgY29uc3QgZGVzdGluYXRpb25Pcmln
aW4gPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwIjsKKyAgICBjb25zdCBzdGFydGluZ09yaWdpbiA9
ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiOworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAg
ICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5vcmlnaW4gPT09IHN0YXJ0aW5nT3JpZ2luKSB7Cisg
ICAgICAgICAgICBsb2FkVVJMKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB2YXIg
ZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3QgPSB0ZXN0UnVubmVyLmRpZExvYWRBcHBJbml0aWF0
ZWRSZXF1ZXN0KCk7CisgICAgICAgICAgICB2YXIgZGlkTG9hZE5vbkFwcEluaXRpYXRlZFJlcXVl
c3QgPSB0ZXN0UnVubmVyLmRpZExvYWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0KCk7CisKKyAgICAg
ICAgICAgIGlmIChkaWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdCkgeworICAgICAgICAgICAg
ICAgIGxvZygiRkFJTCBkaWQgbG9hZCBub24gYXBwIGluaXRpYXRlZCByZXF1ZXN0Iik7CisgICAg
ICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGlmICghZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3QpIHsKKyAgICAgICAgICAg
ICAgICBsb2coIkZBSUwgZGlkIG5vdCBsb2FkIGFwcCBpbml0aWF0ZWQgcmVxdWVzdCIpOworICAg
ICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBsb2coIlBBU1Mgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBvbmx5IGFwcCBpbml0aWF0
ZWQgcmVxdWVzdHMiKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAg
ICAgICB9CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1waW5n
LWxvYWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1y
ZXBvcnQvYXR0cmlidXRpb24tcGluZy1sb2FkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZDYx
N2VlOTAwYTQ5MDJiOTdhNGJlZDZhMzllOTY1NjZjZTQ1NTlmCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tcGlu
Zy1sb2FkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK0NPTlNPTEUgTUVTU0FHRTogUEFT
UyBzdWNjZXNzZnVsbHkgbG9hZGVkIG9ubHkgYXBwIGluaXRpYXRlZCByZXF1ZXN0cworUGluZyBz
ZW50IHN1Y2Nlc3NmdWxseQorQ09OVEVOVF9UWVBFOiB0ZXh0L3BpbmcKK0hUVFBfSE9TVDogMTI3
LjAuMC4xOjgwMDAKK0hUVFBfUElOR19GUk9NOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvYXBwLXBy
aXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXBpbmctbG9hZC5odG1sCitIVFRQX1BJTkdfVE86IGh0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9uYXZpZ2F0aW9uL3Jlc291cmNlcy9jaGVjay1waW5nLWFwcC1p
bml0aWF0ZWQtZGF0YS5weQorUkVRVUVTVF9NRVRIT0Q6IFBPU1QKK1JFUVVFU1RfVVJJOiAvbmF2
aWdhdGlvbi9yZXNvdXJjZXMvc2F2ZS1waW5nLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1waW5nLWxvYWQuaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXBp
bmctbG9hZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjExMDBjYWUyYzYyY2RhYmRhYTRlMTBlYzM5ZjljOTBh
ODllYmU5OTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1w
cml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1waW5nLWxvYWQuaHRtbApAQCAtMCwwICsxLDMwIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vbmF2aWdh
dGlvbi9waW5nLWF0dHJpYnV0ZS9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93LmludGVybmFscykgeworICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1No
b3VsZERvd25ncmFkZVJlZmVycmVyKGZhbHNlLCBmdW5jdGlvbiAoKSB7IH0pOworICAgIGludGVy
bmFscy5zZXR0aW5ncy5zZXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQodHJ1ZSk7CisgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGNs
aWNrRWxlbWVudChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJpbWciKSk7Cit9CisKK3dpbmRvdy5v
bmxvYWQgPSBmdW5jdGlvbiAoKQoreworICAgIGNsZWFyTGFzdFBpbmdSZXN1bHRBbmRSdW5UZXN0
KHRlc3QpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8aW1nIHNyYz0ibm9u
LWV4aXN0ZW50LWltYWdlLmpwZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiIHVzZW1hcD0iI2lt
YWdlbWFwIj4KKyAgICA8bWFwIG5hbWU9ImltYWdlbWFwIj4KKyAgICAgICAgPGFyZWEgc2hhcGU9
InJlY3QiIGNvb3Jkcz0iMCwwLDEyOCwxMjgiIGhyZWY9Ii4uL25hdmlnYXRpb24vcmVzb3VyY2Vz
L2NoZWNrLXBpbmctYXBwLWluaXRpYXRlZC1kYXRhLnB5IiBwaW5nPSIuLi9uYXZpZ2F0aW9uL3Jl
c291cmNlcy9zYXZlLXBpbmcucHkiPgorICAgIDwvbWFwPgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmli
dXRpb24tcG9zdC1yZXF1ZXN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
YXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXBvc3QtcmVxdWVzdC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZTI0NWUzNDBmMTdkZThlNGYzZTM1OWNjMWI5ZjQxNDc2NmRlY2YxYwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0
L2F0dHJpYnV0aW9uLXBvc3QtcmVxdWVzdC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACitD
T05TT0xFIE1FU1NBR0U6IFBBU1Mgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBvbmx5IGFwcCBpbml0aWF0
ZWQgcmVxdWVzdHMKK1Rlc3RzIGFwcCBpbml0aWF0ZWQgcmVxdWVzdHMgZ2V0IG1hcmtlZCBmb3Ig
UE9TVCByZXF1ZXN0cy4KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Fw
cC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1wb3N0LXJlcXVlc3QuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXBvc3QtcmVxdWVz
dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmFkNzk1NGY3ODAzM2I0ZGU2MDViOTAxYTYwM2Y5YmQzMTllNTEy
ODUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5
LXJlcG9ydC9hdHRyaWJ1dGlvbi1wb3N0LXJlcXVlc3QuaHRtbApAQCAtMCwwICsxLDIyIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHA+VGVzdHMgYXBwIGluaXRpYXRlZCByZXF1ZXN0cyBnZXQgbWFy
a2VkIGZvciBQT1NUIHJlcXVlc3RzLjwvcD4KKzxmb3JtIGlkPSJ0ZXN0Rm9ybSIgYWN0aW9uPSJy
ZXNvdXJjZXMvcG9zdC5weSIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9yZWZlcnJlciIgbWV0aG9k
PSJwb3N0Ij4KKzxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJUZXN0Ij48L2lucHV0PgorPGZv
cm0+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5zZXRDYW5PcGVuV2luZG93cyh0cnVlKTsK
K30KKworZG9jdW1lbnQuZm9ybXNbMF0uc3VibWl0KCk7CisKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1y
ZXBvcnQvYXR0cmlidXRpb24tcHJlZmxpZ2h0LWFzeW5jLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXByZWZsaWdodC1h
c3luYy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWI1ZWVhOTQyMmFkMGNhZWU3NjY3YmNkNDA2
ZGI5M2UwYTVlOWUyZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
YXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXByZWZsaWdodC1hc3luYy1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw2IEBACitDT05TT0xFIE1FU1NBR0U6IFByZWZsaWdodCByZXNwb25zZSBp
cyBub3Qgc3VjY2Vzc2Z1bAorQ09OU09MRSBNRVNTQUdFOiBYTUxIdHRwUmVxdWVzdCBjYW5ub3Qg
bG9hZCBodHRwOi8vbG9jYWxob3N0OjgwMDAveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL3N0YXR1
cy00MDQtd2l0aG91dC1ib2R5LnB5IGR1ZSB0byBhY2Nlc3MgY29udHJvbCBjaGVja3MuCitUZXN0
cyBhcHAgaW5pdGlhdGVkIHJlcXVlc3RzIGdldCBtYXJrZWQgZm9yIGFzeW5jIHByZWZsaWdodHMK
KworUEFTUyBzdWNjZXNzZnVsbHkgbG9hZGVkIG9ubHkgYXBwIGluaXRpYXRlZCByZXF1ZXN0cwor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9h
dHRyaWJ1dGlvbi1wcmVmbGlnaHQtYXN5bmMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
YXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXByZWZsaWdodC1hc3luYy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjM5M2I5ZjNjMjRkYjdlMzBjOWY1MWU5ZjRkMjI3MTZkNjYyZThkYjYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRy
aWJ1dGlvbi1wcmVmbGlnaHQtYXN5bmMuaHRtbApAQCAtMCwwICsxLDQ2IEBACis8cD5UZXN0cyBh
cHAgaW5pdGlhdGVkIHJlcXVlc3RzIGdldCBtYXJrZWQgZm9yIGFzeW5jIHByZWZsaWdodHM8L3A+
CisKKzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBsb2cobWVzc2FnZSkKK3sKKyAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKG1lc3NhZ2UgKyAnXG4nKSk7Cit9CisKK3ZhciBwcmVmbGlnaHRMaW5rRG9tYWluID0g
ImxvY2FsaG9zdCI7Cit2YXIgY29udGV4dEhvc3QgPSAiMTI3LjAuMC4xIjsKK3ZhciB1cmwgPSAi
aHR0cDovL2xvY2FsaG9zdDo4MDAwL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9zdGF0dXMtNDA0
LXdpdGhvdXQtYm9keS5weSIKKworZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgdmFyIHJlcSA9
IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgIHJlcS5vcGVuKCJHRVQiLCB1cmwsIHRydWUpOwor
ICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKCJ4LXdlYmtpdCIsICJmb28iKTsKKworICAgIHJlcS5v
bmVycm9yID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBkaWRMb2FkQXBwSW5pdGlhdGVkUmVx
dWVzdCA9IHRlc3RSdW5uZXIuZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3QoKTsKKyAgICAgICAg
dmFyIGRpZExvYWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0ID0gdGVzdFJ1bm5lci5kaWRMb2FkTm9u
QXBwSW5pdGlhdGVkUmVxdWVzdCgpOworCisgICAgICAgIGlmIChkaWRMb2FkTm9uQXBwSW5pdGlh
dGVkUmVxdWVzdCkgeworICAgICAgICAgICAgbG9nKCJGQUlMIGRpZCBsb2FkIG5vbiBhcHAgaW5p
dGlhdGVkIHJlcXVlc3QiKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKCFkaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdCkgewor
ICAgICAgICAgICAgbG9nKCJGQUlMIGRpZCBub3QgbG9hZCBhcHAgaW5pdGlhdGVkIHJlcXVlc3Qi
KTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9CisKKyAg
ICAgICAgbG9nKCJQQVNTIHN1Y2Nlc3NmdWxseSBsb2FkZWQgb25seSBhcHAgaW5pdGlhdGVkIHJl
cXVlc3RzIik7CisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgIH0KKyAgICBy
ZXEuc2VuZChudWxsKTsKK30KKworcnVuVGVzdCgpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1wcmVm
bGlnaHQtc3luYy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2
YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1wcmVmbGlnaHQtc3luYy1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNDAxNmM1MzFlMDY1OWFkY2RkNjM1NTUyM2VhMWIwYWQyZDVhMmIxYwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJp
YnV0aW9uLXByZWZsaWdodC1zeW5jLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKK0NPTlNP
TEUgTUVTU0FHRTogUHJlZmxpZ2h0IHJlc3BvbnNlIGlzIG5vdCBzdWNjZXNzZnVsCitDT05TT0xF
IE1FU1NBR0U6IFhNTEh0dHBSZXF1ZXN0IGNhbm5vdCBsb2FkIGh0dHA6Ly9sb2NhbGhvc3Q6ODAw
MC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvc3RhdHVzLTQwNC13aXRob3V0LWJvZHkucHkgZHVl
IHRvIGFjY2VzcyBjb250cm9sIGNoZWNrcy4KK1Rlc3RzIGFwcCBpbml0aWF0ZWQgcmVxdWVzdHMg
Z2V0IG1hcmtlZCBmb3Igc3luYyBwcmVmbGlnaHRzCisKK1BBU1M6IE5ldHdvcmtFcnJvcjogIEEg
bmV0d29yayBlcnJvciBvY2N1cnJlZC4KK1BBU1Mgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBvbmx5IGFw
cCBpbml0aWF0ZWQgcmVxdWVzdHMKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tcHJlZmxpZ2h0LXN5bmMuaHRtbCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXByZWZs
aWdodC1zeW5jLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWI1NDA5NWExZmY3YzA0MWQxYWJlNTYwMGZhNWJj
ZTVjZWVlNDNhNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBw
LXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXByZWZsaWdodC1zeW5jLmh0bWwKQEAgLTAsMCAr
MSw0OSBAQAorPHA+VGVzdHMgYXBwIGluaXRpYXRlZCByZXF1ZXN0cyBnZXQgbWFya2VkIGZvciBz
eW5jIHByZWZsaWdodHM8L3A+CisKKzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorPHNjcmlwdD4K
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwor
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBsb2cobWVzc2Fn
ZSkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UgKyAnXG4nKSk7Cit9CisKK3ZhciBwcmVm
bGlnaHRMaW5rRG9tYWluID0gImxvY2FsaG9zdCI7Cit2YXIgY29udGV4dEhvc3QgPSAiMTI3LjAu
MC4xIjsKK3ZhciB1cmwgPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3htbGh0dHByZXF1ZXN0L3Jl
c291cmNlcy9zdGF0dXMtNDA0LXdpdGhvdXQtYm9keS5weSIKKworZnVuY3Rpb24gcnVuVGVzdCgp
Cit7CisgICAgdmFyIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgIHJlcS5vcGVuKCJH
RVQiLCB1cmwsIGZhbHNlKTsKKyAgICByZXEuc2V0UmVxdWVzdEhlYWRlcigieC13ZWJraXQiLCAi
Zm9vIik7CisKKyAgICB0cnkgeworICAgICAgICByZXEuc2VuZChudWxsKTsKKyAgICAgICAgbG9n
KCJQQVNTOiAiICsgcmVxLnJlc3BvbnNlVGV4dCk7CisgICAgfSBjYXRjaCAoZXgpIHsKKyAgICAg
ICAgbG9nKCJQQVNTOiAiICsgZXgpOworICAgICAgICB2YXIgZGlkTG9hZEFwcEluaXRpYXRlZFJl
cXVlc3QgPSB0ZXN0UnVubmVyLmRpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0KCk7CisgICAgICAg
IHZhciBkaWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdCA9IHRlc3RSdW5uZXIuZGlkTG9hZE5v
bkFwcEluaXRpYXRlZFJlcXVlc3QoKTsKKworICAgICAgICBpZiAoZGlkTG9hZE5vbkFwcEluaXRp
YXRlZFJlcXVlc3QpIHsKKyAgICAgICAgICAgIGxvZygiRkFJTCBkaWQgbG9hZCBub24gYXBwIGlu
aXRpYXRlZCByZXF1ZXN0Iik7CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
KyAgICAgICAgfQorCisgICAgICAgIGlmICghZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3QpIHsK
KyAgICAgICAgICAgIGxvZygiRkFJTCBkaWQgbm90IGxvYWQgYXBwIGluaXRpYXRlZCByZXF1ZXN0
Iik7CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGxvZygiUEFTUyBzdWNjZXNzZnVsbHkgbG9hZGVkIG9ubHkgYXBwIGluaXRpYXRlZCBy
ZXF1ZXN0cyIpOworICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICB9Cit9CisK
K3J1blRlc3QoKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tc3BlY3VsYXRpdmUtcmV2YWxpZGF0aW9u
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0
L2F0dHJpYnV0aW9uLXNwZWN1bGF0aXZlLXJldmFsaWRhdGlvbi1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYjIxYzJkNTk5NDE0NGU4MTBlMTU3N2VmZmJjZDA5Y2UwNmRmM2RkZAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJp
YnV0aW9uLXNwZWN1bGF0aXZlLXJldmFsaWRhdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
NCBAQAorMTI3LjAuMC4xOjgwMDAgLSBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Ug
LSBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZUhUVFBCYXNpYyAtIFJlc3BvbmRp
bmcgd2l0aCB0ZXN0VXNlcm5hbWU6dGVzdFBhc3N3b3JkCisxMjcuMC4wLjE6ODAwMCAtIGRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAtIFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0
aW9uU2NoZW1lSFRUUEJhc2ljIC0gU2ltdWxhdGluZyBjYW5jZWxsZWQgYXV0aGVudGljYXRpb24g
c2hlZXQKK1Rlc3RzIHNwZWN1bGF0aXZlIHJldmFsaWRhdGlvbiBvZiBhdXRoZW50aWNhdGVkIHJl
c291cmNlcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgeGhyLnN0YXR1
cyBpcyA0MDEKK1BBU1MgU3VjY2Vzc2Z1bHkgbG9hZGVkLgorUEFTUyBzdWNjZXNzZnVsbHkgbG9h
ZGVkIG9ubHkgYXBwIGluaXRpYXRlZCByZXF1ZXN0cworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXNwZWN1bGF0aXZlLXJldmFsaWRh
dGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0
cmlidXRpb24tc3BlY3VsYXRpdmUtcmV2YWxpZGF0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWI3NWQ2
ZmYxYmU4OWExN2ZiYWRlYWVmYWM5NzQwMDBkYzllODVkMAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXNwZWN1
bGF0aXZlLXJldmFsaWRhdGlvbi5odG1sCkBAIC0wLDAgKzEsNzIgQEAKKzxzY3JpcHQgc3JjPSIv
anMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Rl
c2NyaXB0aW9uKCJUZXN0cyBzcGVjdWxhdGl2ZSByZXZhbGlkYXRpb24gb2YgYXV0aGVudGljYXRl
ZCByZXNvdXJjZXMuIik7Citqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwordGVzdFJ1bm5lci5zZXRI
YW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzKHRydWUpOwordGVzdFJ1bm5lci5zZXRBdXRo
ZW50aWNhdGlvblVzZXJuYW1lKCJ0ZXN0VXNlcm5hbWUiKTsKK3Rlc3RSdW5uZXIuc2V0QXV0aGVu
dGljYXRpb25QYXNzd29yZCgidGVzdFBhc3N3b3JkIik7CisKK3N0YXRlID0gIndhcm11cCI7CisK
K2Z1bmN0aW9uIGNsZWFyQ3JlZGVudGlhbFN0b3JhZ2UoKQoreworICAgIHhociA9IG5ldyBYTUxI
dHRwUmVxdWVzdCgpOworICAgIHhoci5vcGVuKCJHRVQiLCAicmVzb3VyY2VzL3Jlc291cmNlLXdp
dGgtYXV0aC5weT9vdGhlciIsIGZhbHNlLCAiYmFkVXNlcm5hbWUiLCAiYmFkUGFzc3dvcmQiKTsK
KyAgICB4aHIuc2VuZCgpOworICAgIHNob3VsZEJlKCJ4aHIuc3RhdHVzIiwgIjQwMSIpOworfQor
CitmdW5jdGlvbiBsb2cobWVzc2FnZSkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
Y29uc29sZScpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UgKyAn
XG4nKSk7Cit9CisKK2Z1bmN0aW9uIGZyYW1lTG9hZGVkKCkKK3sKKyAgICBpZiAoc3RhdGUgPT0g
Indhcm11cCIpIHsKKyAgICAgICAgLy8gTmF2aWdhdGUgZnJhbWUgdG8gJ2Fib3V0OmJsYW5rJyB0
byBmbHVzaCB0byBzdWJyZXNvdXJjZSBsb2FkcyBtZXRhZGF0YSB0byBkaXNrLgorICAgICAgICBz
dGF0ZSA9ICJmbHVzaGluZ01ldGFkYXRhIjsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRIYW5kbGVz
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VzKGZhbHNlKTsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInRlc3RGcmFtZSIpLnNyYyA9ICJhYm91dDpibGFuayI7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgaWYgKHN0YXRlID09ICJmbHVzaGluZ01ldGFkYXRhIikgeworICAgICAg
ICBjbGVhckNyZWRlbnRpYWxTdG9yYWdlKCk7CisKKyAgICAgICAgaW50ZXJuYWxzLmNsZWFyTWVt
b3J5Q2FjaGUoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRIYW5kbGVzQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VzKGZhbHNlKTsKKworICAgICAgICAvLyBOYXZpZ2F0ZSBmcmFtZSB0byBpdHMgb3Jp
Z2luYWwgbG9jYXRpb24gYWdhaW4uIFRoaXMgdGltZSBpdCBzaG91bGQgc3BlY3VsYXRpdmVseQor
ICAgICAgICAvLyB2YWxpZGF0ZSBzdWJyZXNvdXJjZXMgYXMgd2UgaGF2ZSBzdWJyZXNvdXJjZSBs
b2FkcyBtZXRhZGF0YSBpbiB0aGUgZGlzayBjYWNoZS4KKyAgICAgICAgc3RhdGUgPSAic3BlY3Vs
YXRpdmVSZXZhbGlkYXRpb24iOworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVz
dEZyYW1lIikuc3JjID0gInJlc291cmNlcy9mcmFtZS13aXRoLWF1dGhlbnRpY2F0ZWQtcmVzb3Vy
Y2UucHkiOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChzdGF0ZSA9PSAic3BlY3Vs
YXRpdmVSZXZhbGlkYXRpb24iKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIlN1Y2Nlc3NmdWx5IGxv
YWRlZC4iKTsKKyAgICAgICAgdmFyIGRpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0ID0gdGVzdFJ1
bm5lci5kaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdCgpOworICAgICAgICB2YXIgZGlkTG9hZE5v
bkFwcEluaXRpYXRlZFJlcXVlc3QgPSB0ZXN0UnVubmVyLmRpZExvYWROb25BcHBJbml0aWF0ZWRS
ZXF1ZXN0KCk7CisKKyAgICAgICAgaWYgKGRpZExvYWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0KSB7
CisgICAgICAgICAgICBsb2coIkZBSUwgZGlkIGxvYWQgbm9uIGFwcCBpbml0aWF0ZWQgcmVxdWVz
dCIpOworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoIWRpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0KSB7Cisg
ICAgICAgICAgICBsb2coIkZBSUwgZGlkIG5vdCBsb2FkIGFwcCBpbml0aWF0ZWQgcmVxdWVzdCIp
OworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBsb2coIlBBU1Mgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBvbmx5IGFwcCBp
bml0aWF0ZWQgcmVxdWVzdHMiKTsKKworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KK30KKworPC9zY3JpcHQ+Cis8aWZyYW1lIGlkPSJ0ZXN0RnJhbWUiIHNy
Yz0icmVzb3VyY2VzL2ZyYW1lLXdpdGgtYXV0aGVudGljYXRlZC1yZXNvdXJjZS5weSIgb25sb2Fk
PSJmcmFtZUxvYWRlZCgpIj48L2lmcmFtZT4KKzxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L3Jlc291cmNlcy9mcmFtZS13aXRoLWF1dGhlbnRp
Y2F0ZWQtcmVzb3VyY2UucHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJl
cG9ydC9yZXNvdXJjZXMvZnJhbWUtd2l0aC1hdXRoZW50aWNhdGVkLXJlc291cmNlLnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjg0OGQwZmQxYTZkNmMwOTlhYWQ2MWUwMDQyNDJlMjM4OTU1M2U5NDEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9yZXNv
dXJjZXMvZnJhbWUtd2l0aC1hdXRoZW50aWNhdGVkLXJlc291cmNlLnB5CkBAIC0wLDAgKzEsMTMg
QEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKworaW1wb3J0IHN5cworCitzeXMuc3Rkb3V0Lndy
aXRlKAorICAgICdDYWNoZS1Db250cm9sOiBtYXgtYWdlPTBcclxuJworICAgICdFdGFnOiAxMjM0
NTY3ODlcclxuJworICAgICdDb250ZW50LVR5cGU6IHRleHQvaHRtbFxyXG5cclxuJworICAgICc8
IURPQ1RZUEUgaHRtbD5cbicKKyAgICAnPGJvZHk+XG4nCisgICAgJzxzY3JpcHQgc3JjPSJyZXNv
dXJjZS13aXRoLWF1dGgucHkiPjwvc2NyaXB0PlxuJworICAgICc8L2JvZHk+XG4nCispCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9yZXNvdXJj
ZXMvcG9zdC5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L3Jl
c291cmNlcy9wb3N0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwNmZlZWUyMTJjNzAxY2Y2MmQ5ZDgzMGRmZjJi
NWI4NzYxYjkzOWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Fw
cC1wcml2YWN5LXJlcG9ydC9yZXNvdXJjZXMvcG9zdC5weQpAQCAtMCwwICsxLDI3IEBACisjIS91
c3IvYmluL2VudiBweXRob24zCisKK2ltcG9ydCBvcworaW1wb3J0IHN5cworCityZWZlcmVyID0g
b3MuZW52aXJvbi5nZXQoJ0hUVFBfUkVGRVJFUicsICcnKQorCitzeXMuc3Rkb3V0LndyaXRlKAor
ICAgICdDb250ZW50LVR5cGU6IHRleHQvaHRtbFxyXG5cclxuJworICAgICc8cD5SZWZlcnJlcjog
e3JlZmVyZXJ9PC9wPlxuJworICAgICc8c2NyaXB0PlxuJworICAgICdpZiAod2luZG93LnRlc3RS
dW5uZXIpIHt7XG4nCisgICAgJyAgICB2YXIgZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3QgPSB0
ZXN0UnVubmVyLmRpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0KCk7XG4nCisgICAgJyAgICB2YXIg
ZGlkTG9hZE5vbkFwcEluaXRpYXRlZFJlcXVlc3QgPSB0ZXN0UnVubmVyLmRpZExvYWROb25BcHBJ
bml0aWF0ZWRSZXF1ZXN0KCk7XG4nCisgICAgJyAgICBpZiAoZGlkTG9hZE5vbkFwcEluaXRpYXRl
ZFJlcXVlc3QpIHt7XG4nCisgICAgJyAgICAgICAgY29uc29sZS5sb2coIkZBSUwgZGlkIGxvYWQg
bm9uIGFwcCBpbml0aWF0ZWQgcmVxdWVzdCIpO1xuJworICAgICcgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpO1xuJworICAgICcgICAgfX1cbicKKyAgICAnICAgIGlmICghZGlkTG9hZEFw
cEluaXRpYXRlZFJlcXVlc3QpIHt7XG4nCisgICAgJyAgICAgICAgIGNvbnNvbGUubG9nKCJGQUlM
IGRpZCBub3QgbG9hZCBhcHAgaW5pdGlhdGVkIHJlcXVlc3QiKTtcbicKKyAgICAnICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTtcbicKKyAgICAnICAgICB9fVxuJworICAgICcgICAgY29u
c29sZS5sb2coIlBBU1Mgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBvbmx5IGFwcCBpbml0aWF0ZWQgcmVx
dWVzdHMiKTtcbicKKyAgICAnICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpO1xuJworICAgICd9
fVxuJworICAgICc8L3NjcmlwdD5cbicuZm9ybWF0KHJlZmVyZXI9cmVmZXJlcikKKykKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L3Jlc291cmNl
cy9yZXNvdXJjZS13aXRoLWF1dGgucHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2
YWN5LXJlcG9ydC9yZXNvdXJjZXMvcmVzb3VyY2Utd2l0aC1hdXRoLnB5Cm5ldyBmaWxlIG1vZGUg
MTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdh
ZmI3OGQ4MWM2ZjNjOWRhNDc5ZDI4YmUyNDZhZTE1YmNkMDRkZGUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9yZXNvdXJjZXMvcmVz
b3VyY2Utd2l0aC1hdXRoLnB5CkBAIC0wLDAgKzEsMjkgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhv
bjMKKworaW1wb3J0IGJhc2U2NAoraW1wb3J0IG9zCitpbXBvcnQgc3lzCisKK2NyZWRlbnRpYWxz
ID0gYmFzZTY0LmI2NGRlY29kZShvcy5lbnZpcm9uLmdldCgnSFRUUF9BVVRIT1JJWkFUSU9OJywg
JyBPZz09Jykuc3BsaXQoJyAnKVsxXSkuZGVjb2RlKCkuc3BsaXQoJzonKQordXNlcm5hbWUgPSBj
cmVkZW50aWFsc1swXQorcGFzc3dvcmQgPSAnOicuam9pbihjcmVkZW50aWFsc1sxOl0pCisKK2V4
cGVjdGVkVXNlcm5hbWUgPSAndGVzdFVzZXJuYW1lJworZXhwZWN0ZWRQYXNzd29yZCA9ICd0ZXN0
UGFzc3dvcmQnCityZWFsbSA9IG9zLmVudmlyb24uZ2V0KCdSRVFVRVNUX1VSSScsICcnKQorCitz
eXMuc3Rkb3V0LndyaXRlKAorICAgICdDb250ZW50LVR5cGU6IHRleHQvamF2YXNjcmlwdFxyXG4n
CisgICAgJ0NhY2hlLUNvbnRyb2w6IG1heC1hZ2U9MFxyXG4nCisgICAgJ0V0YWc6IDEyMzQ1Njc4
OVxyXG4nCispCisKK2lmIHVzZXJuYW1lICE9IGV4cGVjdGVkVXNlcm5hbWUgb3IgcGFzc3dvcmQg
IT0gZXhwZWN0ZWRQYXNzd29yZDoKKyAgICBzeXMuc3Rkb3V0LndyaXRlKAorICAgICAgICBmJ1dX
Vy1BdXRoZW50aWNhdGU6IEJhc2ljIHJlYWxtPSJ7cmVhbG19IlxyXG4nCisgICAgICAgICdzdGF0
dXM6IDQwMVxyXG5cclxuJworICAgICAgICBmJ1NlbnQgdXNlcm5hbWU6cGFzc3dvcmQgb2YgKHt1
c2VybmFtZX06e3Bhc3N3b3JkfSkgd2hpY2ggaXMgbm90IHdoYXQgd2FzIGV4cGVjdGVkXG4nCisg
ICAgKQorICAgIHN5cy5leGl0KDApCisKK3N5cy5zdGRvdXQud3JpdGUoJ1xyXG5sb2FkZWQgPSB0
cnVlO1xuJykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dz
ZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tbG9hZC11cmwtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1h
dHRyaWJ1dGlvbi1sb2FkLXVybC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDA3OTgxZjFlMDg0YjBjZTI1N2FmNmYzZTVhNjBkMWY1ZDI1MmVmMmYuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1sb2FkLXVy
bC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLVRlc3QgbG9hZFVS
TCByZXF1ZXN0cyBhcmUgc3VjY2VzZnVsbHkgYXR0cmlidXRlZCBhcyBhcHAtYm91bmQuCi1QQVNT
IHN1Y2Nlc3NmdWxseSBsb2FkZWQgb25seSBhcHAtYm91bmQgcmVxdWVzdHMKLQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3Vu
ZC1hdHRyaWJ1dGlvbi1sb2FkLXVybC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1h
cHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1sb2FkLXVybC5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjY2NiY2YzZjIwMTEyZjFlMTZkNDBlZjc5N2U0
OGQ5ODI3NzVjYTQwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91
bmQtYXR0cmlidXRpb24tbG9hZC11cmwuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLSAgICA8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJzZXRUaW1l
b3V0KCdydW5UZXN0KCknLCAwKSI+Ci08ZGl2IGlkPSJkZXNjcmlwdGlvbiI+VGVzdCBsb2FkVVJM
IHJlcXVlc3RzIGFyZSBzdWNjZXNmdWxseSBhdHRyaWJ1dGVkIGFzIGFwcC1ib3VuZC48L2Rpdj4K
LTxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgotPHNjcmlwdD4KLSAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKLSAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGxvYWRVUkwoKSB7
Ci0gICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgPSBkZXN0aW5hdGlvbk9yaWdpbiArICIv
aW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tbG9hZC11cmwuaHRt
bCI7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKLSAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZShtZXNzYWdlICsgJ1xuJykpOwotICAgIH0KLQotICAgIGNvbnN0IGRlc3RpbmF0aW9u
T3JpZ2luID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCI7Ci0gICAgY29uc3Qgc3RhcnRpbmdPcmln
aW4gPSAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIjsKLSAgICBmdW5jdGlvbiBydW5UZXN0KCkgewot
ICAgICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24ub3JpZ2luID09PSBzdGFydGluZ09yaWdpbikg
ewotICAgICAgICAgICAgbG9hZFVSTCgpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
dmFyIGRpZExvYWRBcHBCb3VuZFJlcXVlc3QgPSB0ZXN0UnVubmVyLmRpZExvYWRBcHBCb3VuZFJl
cXVlc3QoKTsKLSAgICAgICAgICAgIHZhciBkaWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0ID0gdGVz
dFJ1bm5lci5kaWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0KCk7Ci0KLSAgICAgICAgICAgIGlmIChk
aWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0KSB7Ci0gICAgICAgICAgICAgICAgbG9nKCJGQUlMIGRp
ZCBsb2FkIG5vbiBhcHAtYm91bmQgcmVxdWVzdCIpOwotICAgICAgICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoIWRpZExv
YWRBcHBCb3VuZFJlcXVlc3QpIHsKLSAgICAgICAgICAgICAgICBsb2coIkZBSUwgZGlkIG5vdCBs
b2FkIGFwcC1ib3VuZCByZXF1ZXN0Iik7Ci0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGxvZygiUEFTUyBzdWNjZXNz
ZnVsbHkgbG9hZGVkIG9ubHkgYXBwLWJvdW5kIHJlcXVlc3RzIik7Ci0gICAgICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICAgICAgfQotICAgIH0KLTwvc2NyaXB0PgotPC9ib2R5
PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJv
d3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1waW5nLWxvYWQtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3Vu
ZC1hdHRyaWJ1dGlvbi1waW5nLWxvYWQtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA4ZGI3MWFiZjdkZGM4OTA5YmQ0M2JkNDI0OGVhYWZhM2MyZTgyOWJkLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tcGlu
Zy1sb2FkLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotQ09OU09M
RSBNRVNTQUdFOiBQQVNTIHN1Y2Nlc3NmdWxseSBsb2FkZWQgb25seSBhcHAtYm91bmQgcmVxdWVz
dHMKLVBpbmcgc2VudCBzdWNjZXNzZnVsbHkKLUNPTlRFTlRfVFlQRTogdGV4dC9waW5nCi1IVFRQ
X0hPU1Q6IDEyNy4wLjAuMTo4MDAwCi1IVFRQX1BJTkdfRlJPTTogaHR0cDovLzEyNy4wLjAuMTo4
MDAwL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXBpbmctbG9h
ZC5odG1sCi1IVFRQX1BJTkdfVE86IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9uYXZpZ2F0aW9uL3Jl
c291cmNlcy9jaGVjay1waW5nLWFwcC1ib3VuZC1kYXRhLnB5Ci1SRVFVRVNUX01FVEhPRDogUE9T
VAotUkVRVUVTVF9VUkk6IC9uYXZpZ2F0aW9uL3Jlc291cmNlcy9zYXZlLXBpbmcucHkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAt
Ym91bmQtYXR0cmlidXRpb24tcGluZy1sb2FkLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXBpbmctbG9hZC5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMGJiMTA2N2M3ZGE4YjE1MGU5YjAw
YzkxYjhlNTI1ODA0ZDUyZDliLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9h
cHAtYm91bmQtYXR0cmlidXRpb24tcGluZy1sb2FkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwz
MCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0i
Li4vbmF2aWdhdGlvbi9waW5nLWF0dHJpYnV0ZS9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93LmludGVybmFs
cykgewotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgIHRlc3RSdW5uZXIuc2V0U3Rh
dGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVycmVyKGZhbHNlLCBmdW5jdGlvbiAoKSB7IH0pOwot
ICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQodHJ1ZSk7
Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3QoKQot
ewotICAgIGNsaWNrRWxlbWVudChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJpbWciKSk7Ci19Ci0K
LXdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbiAoKQotewotICAgIGNsZWFyTGFzdFBpbmdSZXN1bHRB
bmRSdW5UZXN0KHRlc3QpOwotfQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLSAgICA8aW1n
IHNyYz0ibm9uLWV4aXN0ZW50LWltYWdlLmpwZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiIHVz
ZW1hcD0iI2ltYWdlbWFwIj4KLSAgICA8bWFwIG5hbWU9ImltYWdlbWFwIj4KLSAgICAgICAgPGFy
ZWEgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMCwwLDEyOCwxMjgiIGhyZWY9Ii4uL25hdmlnYXRpb24v
cmVzb3VyY2VzL2NoZWNrLXBpbmctYXBwLWJvdW5kLWRhdGEucHkiIHBpbmc9Ii4uL25hdmlnYXRp
b24vcmVzb3VyY2VzL3NhdmUtcGluZy5weSI+Ci0gICAgPC9tYXA+Ci08L2JvZHk+Ci08L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZh
Y3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXBvc3QtcmVxdWVzdC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJp
YnV0aW9uLXBvc3QtcmVxdWVzdC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDU4YjVlNzk4MTVjNGQ1Nzg5MDk1NjI1ZmUwNTNmM2I4MWI2ZGQxZDAuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1wb3N0LXJl
cXVlc3QtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1DT05TT0xF
IE1FU1NBR0U6IFBBU1Mgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBvbmx5IGFwcC1ib3VuZCByZXF1ZXN0
cwotVGVzdHMgYXBwIGJvdW5kIHJlcXVlc3RzIGdldCBtYXJrZWQgZm9yIFBPU1QgcmVxdWVzdHMu
Ci0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1w
cml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1wb3N0LXJlcXVlc3QuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRp
b24tcG9zdC1yZXF1ZXN0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3NzIz
ZmQzZjRjYmU1Y2EzMzk4OTc2NTk3MDhlOGNjZjE0ZmEzMDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAt
YnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1wb3N0LXJlcXVlc3QuaHRtbAor
KysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08
aGVhZD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08cD5UZXN0
cyBhcHAgYm91bmQgcmVxdWVzdHMgZ2V0IG1hcmtlZCBmb3IgUE9TVCByZXF1ZXN0cy48L3A+Ci08
Zm9ybSBpZD0idGVzdEZvcm0iIGFjdGlvbj0icmVzb3VyY2VzL3Bvc3QucHkiIHRhcmdldD0iX2Js
YW5rIiByZWw9Im5vcmVmZXJyZXIiIG1ldGhvZD0icG9zdCI+Ci08aW5wdXQgdHlwZT0ic3VibWl0
IiB2YWx1ZT0iVGVzdCI+PC9pbnB1dD4KLTxmb3JtPgotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVz
dFJ1bm5lcikgewotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotICAgIHRlc3RSdW5u
ZXIuc2V0Q2FuT3BlbldpbmRvd3ModHJ1ZSk7Ci19Ci0KLWRvY3VtZW50LmZvcm1zWzBdLnN1Ym1p
dCgpOwotCi08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRp
b24tcHJlZmxpZ2h0LWFzeW5jLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tcHJlZmxpZ2h0LWFz
eW5jLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDU4M2VmMDc1
ZjE3NDAyZjYyMDJiZjYzNTkwNTY5YTIzZWU4NWFjNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93
c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXByZWZsaWdodC1hc3luYy1leHBlY3Rl
ZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLUNPTlNPTEUgTUVTU0FHRTogUHJl
ZmxpZ2h0IHJlc3BvbnNlIGlzIG5vdCBzdWNjZXNzZnVsCi1DT05TT0xFIE1FU1NBR0U6IFhNTEh0
dHBSZXF1ZXN0IGNhbm5vdCBsb2FkIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC94bWxodHRwcmVxdWVz
dC9yZXNvdXJjZXMvc3RhdHVzLTQwNC13aXRob3V0LWJvZHkucHkgZHVlIHRvIGFjY2VzcyBjb250
cm9sIGNoZWNrcy4KLVRlc3RzIGFwcCBib3VuZCByZXF1ZXN0cyBnZXQgbWFya2VkIGZvciBhc3lu
YyBwcmVmbGlnaHRzCi0KLVBBU1Mgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBvbmx5IGFwcC1ib3VuZCBy
ZXF1ZXN0cwotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93
c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXByZWZsaWdodC1hc3luYy5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1h
dHRyaWJ1dGlvbi1wcmVmbGlnaHQtYXN5bmMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZWU0ODNlMzhjNDQ1YzZjZWQ4YjExZjVmNjVmZjE2NTYzYWY0YzUwYy4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXByZWZsaWdo
dC1hc3luYy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotPHA+VGVzdHMgYXBw
IGJvdW5kIHJlcXVlc3RzIGdldCBtYXJrZWQgZm9yIGFzeW5jIHByZWZsaWdodHM8L3A+Ci0KLTxw
cmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikg
ewotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOwotfQotCi1mdW5jdGlvbiBsb2cobWVzc2FnZSkKLXsKLSAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnY29uc29sZScpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2Rl
KG1lc3NhZ2UgKyAnXG4nKSk7Ci19Ci0KLXZhciBwcmVmbGlnaHRMaW5rRG9tYWluID0gImxvY2Fs
aG9zdCI7Ci12YXIgY29udGV4dEhvc3QgPSAiMTI3LjAuMC4xIjsKLXZhciB1cmwgPSAiaHR0cDov
L2xvY2FsaG9zdDo4MDAwL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9zdGF0dXMtNDA0LXdpdGhv
dXQtYm9keS5weSIKLQotZnVuY3Rpb24gcnVuVGVzdCgpCi17Ci0gICAgdmFyIHJlcSA9IG5ldyBY
TUxIdHRwUmVxdWVzdCgpOwotICAgIHJlcS5vcGVuKCJHRVQiLCB1cmwsIHRydWUpOwotICAgIHJl
cS5zZXRSZXF1ZXN0SGVhZGVyKCJ4LXdlYmtpdCIsICJmb28iKTsKLQotICAgIHJlcS5vbmVycm9y
ID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciBkaWRMb2FkQXBwQm91bmRSZXF1ZXN0ID0gdGVz
dFJ1bm5lci5kaWRMb2FkQXBwQm91bmRSZXF1ZXN0KCk7Ci0gICAgICAgIHZhciBkaWRMb2FkTm9u
QXBwQm91bmRSZXF1ZXN0ID0gdGVzdFJ1bm5lci5kaWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0KCk7
Ci0KLSAgICAgICAgaWYgKGRpZExvYWROb25BcHBCb3VuZFJlcXVlc3QpIHsKLSAgICAgICAgICAg
IGxvZygiRkFJTCBkaWQgbG9hZCBub24gYXBwLWJvdW5kIHJlcXVlc3QiKTsKLSAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFkaWRM
b2FkQXBwQm91bmRSZXF1ZXN0KSB7Ci0gICAgICAgICAgICBsb2coIkZBSUwgZGlkIG5vdCBsb2Fk
IGFwcC1ib3VuZCByZXF1ZXN0Iik7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKLSAgICAgICAgfQotCi0gICAgICAgIGxvZygiUEFTUyBzdWNjZXNzZnVsbHkgbG9hZGVkIG9u
bHkgYXBwLWJvdW5kIHJlcXVlc3RzIik7Ci0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwotICAgIH0KLSAgICByZXEuc2VuZChudWxsKTsKLX0KLQotcnVuVGVzdCgpOwotPC9zY3JpcHQ+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZh
Y3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXByZWZsaWdodC1zeW5jLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0
cmlidXRpb24tcHJlZmxpZ2h0LXN5bmMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBkZWUwNDUzYjc3ZWM2NTdhYWU4NDQ2ODRmNDNlMmQyOGNmNmQyNWFmLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tcHJl
ZmxpZ2h0LXN5bmMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1D
T05TT0xFIE1FU1NBR0U6IFByZWZsaWdodCByZXNwb25zZSBpcyBub3Qgc3VjY2Vzc2Z1bAotQ09O
U09MRSBNRVNTQUdFOiBYTUxIdHRwUmVxdWVzdCBjYW5ub3QgbG9hZCBodHRwOi8vbG9jYWxob3N0
OjgwMDAveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL3N0YXR1cy00MDQtd2l0aG91dC1ib2R5LnB5
IGR1ZSB0byBhY2Nlc3MgY29udHJvbCBjaGVja3MuCi1UZXN0cyBhcHAgYm91bmQgcmVxdWVzdHMg
Z2V0IG1hcmtlZCBmb3Igc3luYyBwcmVmbGlnaHRzCi0KLVBBU1M6IE5ldHdvcmtFcnJvcjogIEEg
bmV0d29yayBlcnJvciBvY2N1cnJlZC4KLVBBU1Mgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBvbmx5IGFw
cC1ib3VuZCByZXF1ZXN0cwotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
LWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXByZWZsaWdodC1zeW5j
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBw
LWJvdW5kLWF0dHJpYnV0aW9uLXByZWZsaWdodC1zeW5jLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDZjMGYwOGQ1MmZmNzhmYzU5NTFiMzNlZTEwNzBjMDNkMjI3NjYxNzkuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1w
cmVmbGlnaHQtc3luYy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotPHA+VGVz
dHMgYXBwIGJvdW5kIHJlcXVlc3RzIGdldCBtYXJrZWQgZm9yIHN5bmMgcHJlZmxpZ2h0czwvcD4K
LQotPHByZSBpZD0iY29uc29sZSI+PC9wcmU+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIGxvZyhtZXNzYWdlKQotewotICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUobWVzc2FnZSArICdcbicpKTsKLX0KLQotdmFyIHByZWZsaWdodExpbmtEb21haW4gPSAi
bG9jYWxob3N0IjsKLXZhciBjb250ZXh0SG9zdCA9ICIxMjcuMC4wLjEiOwotdmFyIHVybCA9ICJo
dHRwOi8vbG9jYWxob3N0OjgwMDAveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL3N0YXR1cy00MDQt
d2l0aG91dC1ib2R5LnB5IgotCi1mdW5jdGlvbiBydW5UZXN0KCkKLXsKLSAgICB2YXIgcmVxID0g
bmV3IFhNTEh0dHBSZXF1ZXN0KCk7Ci0gICAgcmVxLm9wZW4oIkdFVCIsIHVybCwgZmFsc2UpOwot
ICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKCJ4LXdlYmtpdCIsICJmb28iKTsKLQotICAgIHRyeSB7
Ci0gICAgICAgIHJlcS5zZW5kKG51bGwpOwotICAgICAgICBsb2coIlBBU1M6ICIgKyByZXEucmVz
cG9uc2VUZXh0KTsKLSAgICB9IGNhdGNoIChleCkgewotICAgICAgICBsb2coIlBBU1M6ICIgKyBl
eCk7Ci0gICAgICAgIHZhciBkaWRMb2FkQXBwQm91bmRSZXF1ZXN0ID0gdGVzdFJ1bm5lci5kaWRM
b2FkQXBwQm91bmRSZXF1ZXN0KCk7Ci0gICAgICAgIHZhciBkaWRMb2FkTm9uQXBwQm91bmRSZXF1
ZXN0ID0gdGVzdFJ1bm5lci5kaWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0KCk7Ci0KLSAgICAgICAg
aWYgKGRpZExvYWROb25BcHBCb3VuZFJlcXVlc3QpIHsKLSAgICAgICAgICAgIGxvZygiRkFJTCBk
aWQgbG9hZCBub24gYXBwLWJvdW5kIHJlcXVlc3QiKTsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFkaWRMb2FkQXBwQm91bmRS
ZXF1ZXN0KSB7Ci0gICAgICAgICAgICBsb2coIkZBSUwgZGlkIG5vdCBsb2FkIGFwcC1ib3VuZCBy
ZXF1ZXN0Iik7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICAgICAg
fQotCi0gICAgICAgIGxvZygiUEFTUyBzdWNjZXNzZnVsbHkgbG9hZGVkIG9ubHkgYXBwLWJvdW5k
IHJlcXVlc3RzIik7Ci0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0KLX0K
LQotcnVuVGVzdCgpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXNwZWN1bGF0
aXZlLXJldmFsaWRhdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
LWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXNwZWN1bGF0aXZlLXJl
dmFsaWRhdGlvbi1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYy
YjRkNGE1MTJhYmNlYzVkYmI4ZWE5YjY5NDY4M2U4M2FmMmJkNmQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1h
cHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1zcGVjdWxhdGl2ZS1yZXZh
bGlkYXRpb24tZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotMTI3
LjAuMC4xOjgwMDAgLSBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgLSBQcm90ZWN0
aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZUhUVFBCYXNpYyAtIFJlc3BvbmRpbmcgd2l0aCB0
ZXN0VXNlcm5hbWU6dGVzdFBhc3N3b3JkCi0xMjcuMC4wLjE6ODAwMCAtIGRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSAtIFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1l
SFRUUEJhc2ljIC0gU2ltdWxhdGluZyBjYW5jZWxsZWQgYXV0aGVudGljYXRpb24gc2hlZXQKLVRl
c3RzIHNwZWN1bGF0aXZlIHJldmFsaWRhdGlvbiBvZiBhdXRoZW50aWNhdGVkIHJlc291cmNlcy4K
LQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVBBU1MgeGhyLnN0YXR1cyBpcyA0MDEK
LVBBU1MgU3VjY2Vzc2Z1bHkgbG9hZGVkLgotUEFTUyBzdWNjZXNzZnVsbHkgbG9hZGVkIG9ubHkg
YXBwLWJvdW5kIHJlcXVlc3RzCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRF
U1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAt
YnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1zcGVjdWxhdGl2ZS1yZXZhbGlk
YXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFj
eS9hcHAtYm91bmQtYXR0cmlidXRpb24tc3BlY3VsYXRpdmUtcmV2YWxpZGF0aW9uLmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjMDc2YjVlZTZlY2Y0NDQwYmNiZjYwODEwYjlm
NDcxNzE4YzE2YWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3Vu
ZC1hdHRyaWJ1dGlvbi1zcGVjdWxhdGl2ZS1yZXZhbGlkYXRpb24uaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDcyICswLDAgQEAKLTxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWRlc2NyaXB0aW9uKCJUZXN0cyBzcGVjdWxh
dGl2ZSByZXZhbGlkYXRpb24gb2YgYXV0aGVudGljYXRlZCByZXNvdXJjZXMuIik7Ci1qc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKLQotdGVzdFJ1bm5lci5zZXRIYW5kbGVzQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VzKHRydWUpOwotdGVzdFJ1bm5lci5zZXRBdXRoZW50aWNhdGlvblVzZXJuYW1lKCJ0ZXN0
VXNlcm5hbWUiKTsKLXRlc3RSdW5uZXIuc2V0QXV0aGVudGljYXRpb25QYXNzd29yZCgidGVzdFBh
c3N3b3JkIik7Ci0KLXN0YXRlID0gIndhcm11cCI7Ci0KLWZ1bmN0aW9uIGNsZWFyQ3JlZGVudGlh
bFN0b3JhZ2UoKQotewotICAgIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwotICAgIHhoci5v
cGVuKCJHRVQiLCAicmVzb3VyY2VzL3Jlc291cmNlLXdpdGgtYXV0aC5weT9vdGhlciIsIGZhbHNl
LCAiYmFkVXNlcm5hbWUiLCAiYmFkUGFzc3dvcmQiKTsKLSAgICB4aHIuc2VuZCgpOwotICAgIHNo
b3VsZEJlKCJ4aHIuc3RhdHVzIiwgIjQwMSIpOwotfQotCi1mdW5jdGlvbiBsb2cobWVzc2FnZSkK
LXsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UgKyAnXG4nKSk7Ci19Ci0KLWZ1bmN0aW9uIGZy
YW1lTG9hZGVkKCkKLXsKLSAgICBpZiAoc3RhdGUgPT0gIndhcm11cCIpIHsKLSAgICAgICAgLy8g
TmF2aWdhdGUgZnJhbWUgdG8gJ2Fib3V0OmJsYW5rJyB0byBmbHVzaCB0byBzdWJyZXNvdXJjZSBs
b2FkcyBtZXRhZGF0YSB0byBkaXNrLgotICAgICAgICBzdGF0ZSA9ICJmbHVzaGluZ01ldGFkYXRh
IjsKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRIYW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2Vz
KGZhbHNlKTsKLSAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RGcmFtZSIpLnNy
YyA9ICJhYm91dDpibGFuayI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKHN0YXRl
ID09ICJmbHVzaGluZ01ldGFkYXRhIikgewotICAgICAgICBjbGVhckNyZWRlbnRpYWxTdG9yYWdl
KCk7Ci0KLSAgICAgICAgaW50ZXJuYWxzLmNsZWFyTWVtb3J5Q2FjaGUoKTsKLSAgICAgICAgdGVz
dFJ1bm5lci5zZXRIYW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzKGZhbHNlKTsKLQotICAg
ICAgICAvLyBOYXZpZ2F0ZSBmcmFtZSB0byBpdHMgb3JpZ2luYWwgbG9jYXRpb24gYWdhaW4uIFRo
aXMgdGltZSBpdCBzaG91bGQgc3BlY3VsYXRpdmVseQotICAgICAgICAvLyB2YWxpZGF0ZSBzdWJy
ZXNvdXJjZXMgYXMgd2UgaGF2ZSBzdWJyZXNvdXJjZSBsb2FkcyBtZXRhZGF0YSBpbiB0aGUgZGlz
ayBjYWNoZS4KLSAgICAgICAgc3RhdGUgPSAic3BlY3VsYXRpdmVSZXZhbGlkYXRpb24iOwotICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdEZyYW1lIikuc3JjID0gInJlc291cmNl
cy9mcmFtZS13aXRoLWF1dGhlbnRpY2F0ZWQtcmVzb3VyY2UucHkiOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGlmIChzdGF0ZSA9PSAic3BlY3VsYXRpdmVSZXZhbGlkYXRpb24iKSB7Ci0g
ICAgICAgIHRlc3RQYXNzZWQoIlN1Y2Nlc3NmdWx5IGxvYWRlZC4iKTsKLSAgICAgICAgdmFyIGRp
ZExvYWRBcHBCb3VuZFJlcXVlc3QgPSB0ZXN0UnVubmVyLmRpZExvYWRBcHBCb3VuZFJlcXVlc3Qo
KTsKLSAgICAgICAgdmFyIGRpZExvYWROb25BcHBCb3VuZFJlcXVlc3QgPSB0ZXN0UnVubmVyLmRp
ZExvYWROb25BcHBCb3VuZFJlcXVlc3QoKTsKLQotICAgICAgICBpZiAoZGlkTG9hZE5vbkFwcEJv
dW5kUmVxdWVzdCkgewotICAgICAgICAgICAgbG9nKCJGQUlMIGRpZCBsb2FkIG5vbiBhcHAtYm91
bmQgcmVxdWVzdCIpOwotICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIWRpZExvYWRBcHBCb3VuZFJlcXVlc3Qp
IHsKLSAgICAgICAgICAgIGxvZygiRkFJTCBkaWQgbm90IGxvYWQgYXBwLWJvdW5kIHJlcXVlc3Qi
KTsKLSAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0KLSAgICAgICAgbG9nKCJQQVNTIHN1Y2Nlc3NmdWxseSBsb2FkZWQgb25seSBhcHAt
Ym91bmQgcmVxdWVzdHMiKTsKLQotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLX0KLQotPC9zY3JpcHQ+Ci08aWZyYW1lIGlkPSJ0ZXN0RnJhbWUiIHNyYz0i
cmVzb3VyY2VzL2ZyYW1lLXdpdGgtYXV0aGVudGljYXRlZC1yZXNvdXJjZS5weSIgb25sb2FkPSJm
cmFtZUxvYWRlZCgpIj48L2lmcmFtZT4KLTxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9jb250ZXh0LXN0cmluZy1mb3Itc3ViZnJhbWUt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2
YWN5L2NvbnRleHQtc3RyaW5nLWZvci1zdWJmcmFtZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDlhMzY4ZjY2YjU0ZTE3Mzk5MTcyZmFjMzczNzc2Njc3Yjc3NDZi
ZWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2NvbnRleHQtc3RyaW5nLWZv
ci1zdWJmcmFtZS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1U
ZXN0cyB0aGF0IHRoZSBhcHAtYm91bmQtcmVxdWVzdCBjb250ZXh0IHN0cmluZyBnZXRzIHByb3Bl
cmx5IHNldCBmb3IgYW4gaWZyYW1lCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1Q
QVNTIENvbnRleHQgc3RyaW5nIGZvciBzdWIgZnJhbWUgY29ycmVjdGx5IGNhcHR1cmVkLgotUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9jb250ZXh0
LXN0cmluZy1mb3Itc3ViZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBw
LWJyb3dzZXItcHJpdmFjeS9jb250ZXh0LXN0cmluZy1mb3Itc3ViZnJhbWUuaHRtbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWUzZTliNmIwYjU1Mjk2MmFiZGZmNjRlNzIxMDJiYjIy
Mjg2ZThkMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvY29udGV4dC1zdHJp
bmctZm9yLXN1YmZyYW1lLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi08IURP
Q1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJl
c291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL3V0aWwuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotICAgIGRl
c2NyaXB0aW9uKCJUZXN0cyB0aGF0IHRoZSBhcHAtYm91bmQtcmVxdWVzdCBjb250ZXh0IHN0cmlu
ZyBnZXRzIHByb3Blcmx5IHNldCBmb3IgYW4gaWZyYW1lIik7Ci0gICAganNUZXN0SXNBc3luYyA9
IHRydWU7Ci0KLSAgICBjb25zdCBzdWJGcmFtZUhvc3QgPSAibG9jYWxob3N0IjsKLSAgICBjb25z
dCBjb250ZXh0SG9zdCA9ICIxMjcuMC4wLjEiOwotICAgIGZ1bmN0aW9uIGFza0ZvckNvbnRleHRT
dHJpbmdGb3JTdWJGcmFtZSgpIHsKLSAgICAgICAgdGVzdFJ1bm5lci5hcHBCb3VuZFJlcXVlc3RD
b250ZXh0RGF0YUZvckRvbWFpbihzdWJGcmFtZUhvc3QsIGZ1bmN0aW9uIChjb250ZXh0RGF0YSkg
ewotICAgICAgICAgICAgaWYgKGNvbnRleHREYXRhID09IG51bGwpIHsKLSAgICAgICAgICAgICAg
ICBhc2tGb3JDb250ZXh0U3RyaW5nRm9yU3ViRnJhbWUoKTsKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChjb250ZXh0RGF0YSA9PSBjb250
ZXh0SG9zdCkKLSAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJDb250ZXh0IHN0cmluZyBmb3Ig
c3ViIGZyYW1lIGNvcnJlY3RseSBjYXB0dXJlZC4iKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJDb250ZXh0IHN0cmluZyBmb3Igc3ViIGZyYW1lIE5PVCBj
b3JyZWN0bHkgY2FwdHVyZWQuIik7Ci0KLSAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAg
ICAgICB9KTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBvcGVuSWZyYW1lKHVybCwgb25Mb2FkSGFu
ZGxlcikgewotICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
aWZyYW1lIik7Ci0gICAgICAgIGVsZW1lbnQuc3JjID0gdXJsOwotICAgICAgICBpZiAob25Mb2Fk
SGFuZGxlcikgewotICAgICAgICAgICAgZWxlbWVudC5vbmxvYWQgPSBvbkxvYWRIYW5kbGVyOwot
ICAgICAgICB9Ci0gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVudCk7Ci0g
ICAgfQotCi0gICAgb3BlbklmcmFtZSgiaHR0cDovL2xvY2FsaG9zdDo4MDAwL2luLWFwcC1icm93
c2VyLXByaXZhY3kvcmVzb3VyY2VzL2Jhc2ljLWlmcmFtZS5odG1sJmR1bW15PSIgKyBNYXRoLnJh
bmRvbSgpLCBhc2tGb3JDb250ZXh0U3RyaW5nRm9yU3ViRnJhbWUpOwotPC9zY3JpcHQ+Ci08L2Jv
ZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1i
cm93c2VyLXByaXZhY3kvY29udGV4dC1zdHJpbmctcHJlY29ubmVjdC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvY29udGV4dC1zdHJp
bmctcHJlY29ubmVjdC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDZiNGI1NmZhMDFmZjA2MDNmZjY5OTE3YzM4MGRjMDY5YjkzMDZkYzYuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bi1hcHAtYnJvd3Nlci1wcml2YWN5L2NvbnRleHQtc3RyaW5nLXByZWNvbm5lY3QtZXhwZWN0ZWQu
dHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBTdWNj
ZXNzZnVsbHkgcHJlY29ubmVjdGVkIHRvIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC8KLVRlc3RzIHRo
YXQgcHJlY29ubmVjdCB0YXNrcyBnZXQgbWFya2VkIHdpdGggdGhlIHByb3BlciBjb250ZXh0IHN0
cmluZy4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVBBU1MgQ29udGV4dCBzdHJp
bmcgZm9yIHByZWNvbm5lY3QgY29ycmVjdGx5IGNhcHR1cmVkLgotUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9jb250ZXh0LXN0cmluZy1wcmVjb25u
ZWN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kv
Y29udGV4dC1zdHJpbmctcHJlY29ubmVjdC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA3MWJiYzMyYmYxYzg3MmU0Y2ZlZjNmZmE1NjZmOTRjMTg1NzIwMjZkLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9jb250ZXh0LXN0cmluZy1wcmVjb25uZWN0Lmh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgot
PGhlYWQ+Ci08c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2Ny
aXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQg
cHJlY29ubmVjdCB0YXNrcyBnZXQgbWFya2VkIHdpdGggdGhlIHByb3BlciBjb250ZXh0IHN0cmlu
Zy4iKTsKLWpzVGVzdElzQXN5bmMgPSB0cnVlOwotCi12YXIgcHJlY29ubmVjdExpbmtEb21haW4g
PSAibG9jYWxob3N0IjsKLXZhciBjb250ZXh0SG9zdCA9ICIxMjcuMC4wLjEiOwotCi1mdW5jdGlv
biBhc2tGb3JDb250ZXh0U3RyaW5nRm9yUHJlY29ubmVjdCgpIHsKLSAgICB0ZXN0UnVubmVyLmFw
cEJvdW5kUmVxdWVzdENvbnRleHREYXRhRm9yRG9tYWluKHByZWNvbm5lY3RMaW5rRG9tYWluLCBm
dW5jdGlvbiAoY29udGV4dERhdGEpIHsKLSAgICAgICAgaWYgKGNvbnRleHREYXRhID09IG51bGwp
IHsKLSAgICAgICAgICAgIGFza0ZvckNvbnRleHRTdHJpbmdGb3JQcmVjb25uZWN0KCk7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoY29udGV4dERhdGEgPT0g
Y29udGV4dEhvc3QpCi0gICAgICAgICAgICB0ZXN0UGFzc2VkKCJDb250ZXh0IHN0cmluZyBmb3Ig
cHJlY29ubmVjdCBjb3JyZWN0bHkgY2FwdHVyZWQuIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHRlc3RGYWlsZWQoIkNvbnRleHQgc3RyaW5nIGZvciBwcmVjb25uZWN0IE5PVCBjb3JyZWN0
bHkgY2FwdHVyZWQuIik7Ci0KLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSk7Ci19Ci0K
LWludGVybmFscy5zZXRDb25zb2xlTWVzc2FnZUxpc3RlbmVyKGZ1bmN0aW9uKCkgewotICAgIGFz
a0ZvckNvbnRleHRTdHJpbmdGb3JQcmVjb25uZWN0KCk7Ci19KTsKLQotY29uc3QgdGVzdExpbmsg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaW5rIik7Ci10ZXN0TGluay5yZWwgPSAicHJlY29u
bmVjdCI7Ci10ZXN0TGluay5ocmVmID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCI7Ci1kb2N1bWVu
dC5oZWFkLmFwcGVuZENoaWxkKHRlc3RMaW5rKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2
YWN5L2NvbnRleHQtc3RyaW5nLXByZWZsaWdodC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvY29udGV4dC1zdHJpbmctcHJlZmxpZ2h0
LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTA3OTYxNTBhOTZi
OGIxZDcwN2VmYTdlNDAzMmU0NWVkNzAzYzk1Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2Vy
LXByaXZhY3kvY29udGV4dC1zdHJpbmctcHJlZmxpZ2h0LWV4cGVjdGVkLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDkgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBQcmVmbGlnaHQgcmVzcG9uc2Ug
aXMgbm90IHN1Y2Nlc3NmdWwKLUNPTlNPTEUgTUVTU0FHRTogWE1MSHR0cFJlcXVlc3QgY2Fubm90
IGxvYWQgaHR0cDovL2xvY2FsaG9zdDo4MDAwL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9zdGF0
dXMtNDA0LXdpdGhvdXQtYm9keS5weSBkdWUgdG8gYWNjZXNzIGNvbnRyb2wgY2hlY2tzLgotQ09O
U09MRSBNRVNTQUdFOiBQcmVmbGlnaHQgcmVzcG9uc2UgaXMgbm90IHN1Y2Nlc3NmdWwKLUNPTlNP
TEUgTUVTU0FHRTogWE1MSHR0cFJlcXVlc3QgY2Fubm90IGxvYWQgaHR0cDovL2xvY2FsaG9zdDo4
MDAwL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9zdGF0dXMtNDA0LXdpdGhvdXQtYm9keS5weSBk
dWUgdG8gYWNjZXNzIGNvbnRyb2wgY2hlY2tzLgotVGVzdHMgdGhhdCBub3Qgc3VjY2Vzc2Z1bCBw
cmVmbGlnaHQgcmVzcG9uc2VzIG1ha2UgcHJlZmxpZ2h0IGZhaWxpbmcKLQotUEFTUzogTmV0d29y
a0Vycm9yOiAgQSBuZXR3b3JrIGVycm9yIG9jY3VycmVkLgotUEFTUyBDb250ZXh0IHN0cmluZyBm
b3IgQ09SUyBwcmVmbGlnaHQgY29ycmVjdGx5IGNhcHR1cmVkLgotCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvY29udGV4dC1zdHJpbmct
cHJlZmxpZ2h0Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXBy
aXZhY3kvY29udGV4dC1zdHJpbmctcHJlZmxpZ2h0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDU3YTA1ZDE0NzU5Yzk0MWY4ZDMzZmY3NTAzYjhkNzAwYTkwNGYwYzkuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2NvbnRleHQtc3RyaW5nLXByZWZsaWdodC5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotPHA+VGVzdHMgdGhhdCBub3Qgc3Vj
Y2Vzc2Z1bCBwcmVmbGlnaHQgcmVzcG9uc2VzIG1ha2UgcHJlZmxpZ2h0IGZhaWxpbmc8L3A+Ci0K
LTxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5l
cikgewotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOwotfQotCi1mdW5jdGlvbiBsb2cobWVzc2FnZSkKLXsKLSAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKG1lc3NhZ2UgKyAnXG4nKSk7Ci19Ci0gICAgCi12YXIgcHJlZmxpZ2h0TGlua0RvbWFpbiA9
ICJsb2NhbGhvc3QiOwotdmFyIGNvbnRleHRIb3N0ID0gIjEyNy4wLjAuMSI7Ci12YXIgdXJsID0g
Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvc3RhdHVzLTQw
NC13aXRob3V0LWJvZHkucHkiCi0KLWZ1bmN0aW9uIGFza0ZvckNvbnRleHRTdHJpbmdGb3JQcmVm
bGlnaHQoKSB7Ci0gICAgdGVzdFJ1bm5lci5hcHBCb3VuZFJlcXVlc3RDb250ZXh0RGF0YUZvckRv
bWFpbihwcmVmbGlnaHRMaW5rRG9tYWluLCBmdW5jdGlvbiAoY29udGV4dERhdGEpIHsKLSAgICAg
ICAgaWYgKGNvbnRleHREYXRhID09IG51bGwpIHsKLSAgICAgICAgICAgIGFza0ZvckNvbnRleHRT
dHJpbmdGb3JQcmVmbGlnaHQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0g
ICAgICAgIGlmIChjb250ZXh0RGF0YSA9PSBjb250ZXh0SG9zdCkKLSAgICAgICAgICAgIGxvZygi
UEFTUyBDb250ZXh0IHN0cmluZyBmb3IgQ09SUyBwcmVmbGlnaHQgY29ycmVjdGx5IGNhcHR1cmVk
LiIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBsb2coIkZBSUwgQ29udGV4dCBzdHJpbmcg
Zm9yIENPUlMgcHJlZmxpZ2h0IE5PVCBjb3JyZWN0bHkgY2FwdHVyZWQuIik7Ci0KLSAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19Ci0KLWZ1bmN0aW9uIHJ1blRlc3Qo
KQotewotICAgIHZhciByZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKLSAgICByZXEub3Blbigi
R0VUIiwgdXJsLCBmYWxzZSk7Ci0gICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoIngtd2Via2l0Iiwg
ImZvbyIpOwotCi0gICAgdHJ5IHsKLSAgICAgICAgcmVxLnNlbmQobnVsbCk7Ci0gICAgICAgIGxv
ZygiUEFTUzogIiArIHJlcS5yZXNwb25zZVRleHQpOwotICAgIH0gY2F0Y2ggKGV4KSB7Ci0gICAg
ICAgIGxvZygiUEFTUzogIiArIGV4KTsKLSAgICB9Ci0KLSAgICByZXEgPSBuZXcgWE1MSHR0cFJl
cXVlc3QoKTsKLSAgICByZXEub3BlbigiR0VUIiwgdXJsLCB0cnVlKTsKLSAgICByZXEuc2V0UmVx
dWVzdEhlYWRlcigieC13ZWJraXQiLCAiZm9vIik7Ci0KLSAgICByZXEub25sb2FkID0gZnVuY3Rp
b24oKSB7Ci0gICAgICAgIGFza0ZvckNvbnRleHRTdHJpbmdGb3JQcmVmbGlnaHQoKTsKLSAgICB9
Ci0gICAgcmVxLm9uZXJyb3IgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgYXNrRm9yQ29udGV4dFN0
cmluZ0ZvclByZWZsaWdodCgpOwotICAgIH0KLSAgICByZXEuc2VuZChudWxsKTsKLX0KLQotcnVu
VGVzdCgpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
LWFwcC1icm93c2VyLXByaXZhY3kvcmVzb3VyY2VzL2ZyYW1lLXdpdGgtYXV0aGVudGljYXRlZC1y
ZXNvdXJjZS5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFj
eS9yZXNvdXJjZXMvZnJhbWUtd2l0aC1hdXRoZW50aWNhdGVkLXJlc291cmNlLnB5CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDc1NQppbmRleCA4NDhkMGZkMWE2ZDZjMDk5YWFkNjFlMDA0MjQyZTIzODk1
NTNlOTQxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9yZXNvdXJjZXMvZnJh
bWUtd2l0aC1hdXRoZW50aWNhdGVkLXJlc291cmNlLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTMg
KzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwotCi1pbXBvcnQgc3lzCi0KLXN5cy5zdGRv
dXQud3JpdGUoCi0gICAgJ0NhY2hlLUNvbnRyb2w6IG1heC1hZ2U9MFxyXG4nCi0gICAgJ0V0YWc6
IDEyMzQ1Njc4OVxyXG4nCi0gICAgJ0NvbnRlbnQtVHlwZTogdGV4dC9odG1sXHJcblxyXG4nCi0g
ICAgJzwhRE9DVFlQRSBodG1sPlxuJwotICAgICc8Ym9keT5cbicKLSAgICAnPHNjcmlwdCBzcmM9
InJlc291cmNlLXdpdGgtYXV0aC5weSI+PC9zY3JpcHQ+XG4nCi0gICAgJzwvYm9keT5cbicKLSkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFj
eS9yZXNvdXJjZXMvcG9zdC5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dz
ZXItcHJpdmFjeS9yZXNvdXJjZXMvcG9zdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5k
ZXggMWZjYmMzYTJmYjMyMzExNzJkYjliNTliZWNlNjVjMDhjNzJkZDVhNi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luLWFwcC1icm93c2VyLXByaXZhY3kvcmVzb3VyY2VzL3Bvc3QucHkKKysrIC9kZXYvbnVsbApA
QCAtMSwyNyArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24zCi0KLWltcG9ydCBvcwotaW1w
b3J0IHN5cwotCi1yZWZlcmVyID0gb3MuZW52aXJvbi5nZXQoJ0hUVFBfUkVGRVJFUicsICcnKQot
Ci1zeXMuc3Rkb3V0LndyaXRlKAotICAgICdDb250ZW50LVR5cGU6IHRleHQvaHRtbFxyXG5cclxu
JwotICAgICc8cD5SZWZlcnJlcjoge3JlZmVyZXJ9PC9wPlxuJwotICAgICc8c2NyaXB0PlxuJwot
ICAgICdpZiAod2luZG93LnRlc3RSdW5uZXIpIHt7XG4nCi0gICAgJyAgICB2YXIgZGlkTG9hZEFw
cEJvdW5kUmVxdWVzdCA9IHRlc3RSdW5uZXIuZGlkTG9hZEFwcEJvdW5kUmVxdWVzdCgpO1xuJwot
ICAgICcgICAgdmFyIGRpZExvYWROb25BcHBCb3VuZFJlcXVlc3QgPSB0ZXN0UnVubmVyLmRpZExv
YWROb25BcHBCb3VuZFJlcXVlc3QoKTtcbicKLSAgICAnICAgIGlmIChkaWRMb2FkTm9uQXBwQm91
bmRSZXF1ZXN0KSB7e1xuJwotICAgICcgICAgICAgIGNvbnNvbGUubG9nKCJGQUlMIGRpZCBsb2Fk
IG5vbiBhcHAtYm91bmQgcmVxdWVzdCIpO1xuJwotICAgICcgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpO1xuJwotICAgICcgICAgfX1cbicKLSAgICAnICAgIGlmICghZGlkTG9hZEFwcEJv
dW5kUmVxdWVzdCkge3tcbicKLSAgICAnICAgICAgICAgY29uc29sZS5sb2coIkZBSUwgZGlkIG5v
dCBsb2FkIGFwcC1ib3VuZCByZXF1ZXN0Iik7XG4nCi0gICAgJyAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7XG4nCi0gICAgJyAgICAgfX1cbicKLSAgICAnICAgIGNvbnNvbGUubG9nKCJQ
QVNTIHN1Y2Nlc3NmdWxseSBsb2FkZWQgb25seSBhcHAtYm91bmQgcmVxdWVzdHMiKTtcbicKLSAg
ICAnICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpO1xuJwotICAgICd9fVxuJwotICAgICc8L3Nj
cmlwdD5cbicuZm9ybWF0KHJlZmVyZXI9cmVmZXJlcikKLSkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9yZXNvdXJjZXMvcmVzb3VyY2Ut
d2l0aC1hdXRoLnB5IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2
YWN5L3Jlc291cmNlcy9yZXNvdXJjZS13aXRoLWF1dGgucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NzU1CmluZGV4IDdhZmI3OGQ4MWM2ZjNjOWRhNDc5ZDI4YmUyNDZhZTE1YmNkMDRkZGUuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L3Jlc291cmNlcy9yZXNvdXJjZS13aXRoLWF1
dGgucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRo
b24zCi0KLWltcG9ydCBiYXNlNjQKLWltcG9ydCBvcwotaW1wb3J0IHN5cwotCi1jcmVkZW50aWFs
cyA9IGJhc2U2NC5iNjRkZWNvZGUob3MuZW52aXJvbi5nZXQoJ0hUVFBfQVVUSE9SSVpBVElPTics
ICcgT2c9PScpLnNwbGl0KCcgJylbMV0pLmRlY29kZSgpLnNwbGl0KCc6JykKLXVzZXJuYW1lID0g
Y3JlZGVudGlhbHNbMF0KLXBhc3N3b3JkID0gJzonLmpvaW4oY3JlZGVudGlhbHNbMTpdKQotCi1l
eHBlY3RlZFVzZXJuYW1lID0gJ3Rlc3RVc2VybmFtZScKLWV4cGVjdGVkUGFzc3dvcmQgPSAndGVz
dFBhc3N3b3JkJwotcmVhbG0gPSBvcy5lbnZpcm9uLmdldCgnUkVRVUVTVF9VUkknLCAnJykKLQot
c3lzLnN0ZG91dC53cml0ZSgKLSAgICAnQ29udGVudC1UeXBlOiB0ZXh0L2phdmFzY3JpcHRcclxu
JwotICAgICdDYWNoZS1Db250cm9sOiBtYXgtYWdlPTBcclxuJwotICAgICdFdGFnOiAxMjM0NTY3
ODlcclxuJwotKQotCi1pZiB1c2VybmFtZSAhPSBleHBlY3RlZFVzZXJuYW1lIG9yIHBhc3N3b3Jk
ICE9IGV4cGVjdGVkUGFzc3dvcmQ6Ci0gICAgc3lzLnN0ZG91dC53cml0ZSgKLSAgICAgICAgZidX
V1ctQXV0aGVudGljYXRlOiBCYXNpYyByZWFsbT0ie3JlYWxtfSJcclxuJwotICAgICAgICAnc3Rh
dHVzOiA0MDFcclxuXHJcbicKLSAgICAgICAgZidTZW50IHVzZXJuYW1lOnBhc3N3b3JkIG9mICh7
dXNlcm5hbWV9OntwYXNzd29yZH0pIHdoaWNoIGlzIG5vdCB3aGF0IHdhcyBleHBlY3RlZFxuJwot
ICAgICkKLSAgICBzeXMuZXhpdCgwKQotCi1zeXMuc3Rkb3V0LndyaXRlKCdcclxubG9hZGVkID0g
dHJ1ZTtcbicpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24v
cmVzb3VyY2VzL2NoZWNrLXBpbmctYXBwLWJvdW5kLWRhdGEucHkgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2NoZWNrLXBpbmctYXBwLWJvdW5kLWRhdGEucHkK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDZmZjVkZWYzNDA1MzJmOWRmNmE4MWY4NTQx
MDQwOThlOTMzZDNlZDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9jaGVjay1w
aW5nLWFwcC1ib3VuZC1kYXRhLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotIyEv
dXNyL2Jpbi9lbnYgcHl0aG9uMwotCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLWltcG9ydCB0aW1l
Ci1mcm9tIHBpbmdfZmlsZV9wYXRoIGltcG9ydCBwaW5nX2ZpbGVwYXRoCi0KLXN5cy5zdGRvdXQu
d3JpdGUoJ0NvbnRlbnQtVHlwZTogdGV4dC9odG1sXHJcblxyXG4nKQotCi13aGlsZSBub3Qgb3Mu
cGF0aC5pc2ZpbGUocGluZ19maWxlcGF0aCk6Ci0gICAgdGltZS5zbGVlcCgwLjAxKQotCi1zeXMu
c3Rkb3V0LndyaXRlKAotICAgICc8aHRtbD48Ym9keT5cbicKLSAgICAnUGluZyBzZW50IHN1Y2Nl
c3NmdWxseScKLSkKLQotcGluZ19maWxlID0gb3BlbihwaW5nX2ZpbGVwYXRoLCAncicpCi1mb3Ig
bGluZSBpbiBwaW5nX2ZpbGUucmVhZGxpbmVzKCk6Ci0gICAgc3lzLnN0ZG91dC53cml0ZSgnPGJy
Pnt9Jy5mb3JtYXQobGluZS5zdHJpcCgpKSkKLQotcGluZ19maWxlLmNsb3NlKCkKLWlmIG9zLnBh
dGguaXNmaWxlKHBpbmdfZmlsZXBhdGgpOgotICAgIG9zLnJlbW92ZShwaW5nX2ZpbGVwYXRoKQot
Ci1zeXMuc3Rkb3V0LndyaXRlKAotICAgICc8c2NyaXB0PicKLSAgICAnaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7e1xuJwotICAgICcgICAgdmFyIGRpZExvYWRBcHBCb3VuZFJlcXVlc3QgPSB0ZXN0
UnVubmVyLmRpZExvYWRBcHBCb3VuZFJlcXVlc3QoKTtcbicKLSAgICAnICAgIHZhciBkaWRMb2Fk
Tm9uQXBwQm91bmRSZXF1ZXN0ID0gdGVzdFJ1bm5lci5kaWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0
KCk7XG4nCi0gICAgJyAgICBpZiAoZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdCkge3tcbicKLSAg
ICAnICAgICAgICBjb25zb2xlLmxvZygiRkFJTCBkaWQgbG9hZCBub24gYXBwLWJvdW5kIHJlcXVl
c3QiKTtcbicKLSAgICAnICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTtcbicKLSAgICAn
ICAgIH19XG4nCi0gICAgJyAgICBpZiAoIWRpZExvYWRBcHBCb3VuZFJlcXVlc3QpIHt7XG4nCi0g
ICAgJyAgICAgICAgIGNvbnNvbGUubG9nKCJGQUlMIGRpZCBub3QgbG9hZCBhcHAtYm91bmQgcmVx
dWVzdCIpO1xuJwotICAgICcgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpO1xuJwotICAg
ICcgICAgIH19XG4nCi0gICAgJyAgICBjb25zb2xlLmxvZygiUEFTUyBzdWNjZXNzZnVsbHkgbG9h
ZGVkIG9ubHkgYXBwLWJvdW5kIHJlcXVlc3RzIik7XG4nCi0gICAgJyAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTtcbicKLSAgICAnfX1cbicKLSAgICAnPC9zY3JpcHQ+JwotICAgICc8L2JvZHk+
PC9odG1sPicKLSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlv
bi9yZXNvdXJjZXMvY2hlY2stcGluZy1hcHAtaW5pdGlhdGVkLWRhdGEucHkgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2NoZWNrLXBpbmctYXBwLWluaXRpYXRl
ZC1kYXRhLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwZjNkMmYxNzE5Mjg0NzdlNGIxODg4MDMyMDNlYjBlZjdl
YjQ1NTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRp
b24vcmVzb3VyY2VzL2NoZWNrLXBpbmctYXBwLWluaXRpYXRlZC1kYXRhLnB5CkBAIC0wLDAgKzEs
NDQgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKworaW1wb3J0IG9zCitpbXBvcnQgc3lzCitp
bXBvcnQgdGltZQorZnJvbSBwaW5nX2ZpbGVfcGF0aCBpbXBvcnQgcGluZ19maWxlcGF0aAorCitz
eXMuc3Rkb3V0LndyaXRlKCdDb250ZW50LVR5cGU6IHRleHQvaHRtbFxyXG5cclxuJykKKword2hp
bGUgbm90IG9zLnBhdGguaXNmaWxlKHBpbmdfZmlsZXBhdGgpOgorICAgIHRpbWUuc2xlZXAoMC4w
MSkKKworc3lzLnN0ZG91dC53cml0ZSgKKyAgICAnPGh0bWw+PGJvZHk+XG4nCisgICAgJ1Bpbmcg
c2VudCBzdWNjZXNzZnVsbHknCispCisKK3BpbmdfZmlsZSA9IG9wZW4ocGluZ19maWxlcGF0aCwg
J3InKQorZm9yIGxpbmUgaW4gcGluZ19maWxlLnJlYWRsaW5lcygpOgorICAgIHN5cy5zdGRvdXQu
d3JpdGUoJzxicj57fScuZm9ybWF0KGxpbmUuc3RyaXAoKSkpCisKK3BpbmdfZmlsZS5jbG9zZSgp
CitpZiBvcy5wYXRoLmlzZmlsZShwaW5nX2ZpbGVwYXRoKToKKyAgICBvcy5yZW1vdmUocGluZ19m
aWxlcGF0aCkKKworc3lzLnN0ZG91dC53cml0ZSgKKyAgICAnPHNjcmlwdD4nCisgICAgJ2lmICh3
aW5kb3cudGVzdFJ1bm5lcikge3tcbicKKyAgICAnICAgIHZhciBkaWRMb2FkQXBwSW5pdGlhdGVk
UmVxdWVzdCA9IHRlc3RSdW5uZXIuZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3QoKTtcbicKKyAg
ICAnICAgIHZhciBkaWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdCA9IHRlc3RSdW5uZXIuZGlk
TG9hZE5vbkFwcEluaXRpYXRlZFJlcXVlc3QoKTtcbicKKyAgICAnICAgIGlmIChkaWRMb2FkTm9u
QXBwSW5pdGlhdGVkUmVxdWVzdCkge3tcbicKKyAgICAnICAgICAgICBjb25zb2xlLmxvZygiRkFJ
TCBkaWQgbG9hZCBub24gYXBwIGluaXRpYXRlZCByZXF1ZXN0Iik7XG4nCisgICAgJyAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7XG4nCisgICAgJyAgICB9fVxuJworICAgICcgICAgaWYg
KCFkaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdCkge3tcbicKKyAgICAnICAgICAgICAgY29uc29s
ZS5sb2coIkZBSUwgZGlkIG5vdCBsb2FkIGFwcCBpbml0aWF0ZWQgcmVxdWVzdCIpO1xuJworICAg
ICcgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpO1xuJworICAgICcgICAgIH19XG4nCisg
ICAgJyAgICBjb25zb2xlLmxvZygiUEFTUyBzdWNjZXNzZnVsbHkgbG9hZGVkIG9ubHkgYXBwIGlu
aXRpYXRlZCByZXF1ZXN0cyIpO1xuJworICAgICcgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
XG4nCisgICAgJ319XG4nCisgICAgJzwvc2NyaXB0PicKKyAgICAnPC9ib2R5PjwvaHRtbD4nCisp
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlv
bnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXgg
MmRiMzg4MTFmMjZlMmM3MGM1YWJhN2E1ODJmOTNjOTc5NWM0YWFkNi4uMmU4NDUyNjRlZmM0ODRk
NTQxMGNkYjRmZDQyN2Y3N2UxY2M4MzJjMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lv
cy13azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTgxNSwxNyArMTgxNSw2IEBAIHdlYmtpdC5vcmcv
Yi8yMTQ1OTggZmFzdC9zY3JvbGxpbmcvaW9zL2F1dG9zY3JvbGwtaW5wdXQtd2hlbi12ZXJ5LXpv
b21lZC5odG1sIFsKIAogaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5LyBbIFBhc3Mg
XQogCi0jIFNvbWUgSW4tQXBwIEJyb3dzZXIgUHJpdmFjeSB0ZXN0cyByZWx5IG9uIGZ1bmN0aW9u
cyBpbiBXZWJLaXRBZGRpdGlvbnMuCi1odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kv
Y29udGV4dC1zdHJpbmctZm9yLXN1YmZyYW1lLmh0bWwgWyBTa2lwIF0KLWh0dHAvdGVzdHMvaW4t
YXBwLWJyb3dzZXItcHJpdmFjeS9jb250ZXh0LXN0cmluZy1wcmVjb25uZWN0Lmh0bWwgWyBTa2lw
IF0KLWh0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9jb250ZXh0LXN0cmluZy1wcmVm
bGlnaHQuaHRtbCBbIFNraXAgXQotaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2Fw
cC1ib3VuZC1hdHRyaWJ1dGlvbi1wcmVmbGlnaHQtYXN5bmMuaHRtbCBbIFNraXAgXQotaHR0cC90
ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1wcmVmbGln
aHQtc3luYy5odG1sIFsgU2tpcCBdCi1odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kv
YXBwLWJvdW5kLWF0dHJpYnV0aW9uLXNwZWN1bGF0aXZlLXJldmFsaWRhdGlvbi5odG1sIFsgU2tp
cCBdCi1odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0
aW9uLWxvYWQtdXJsLmh0bWwgWyBTa2lwIF0KLWh0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJp
dmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tcGluZy1sb2FkLmh0bWwgWyBTa2lwIF0KLWh0dHAv
dGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tcG9zdC1y
ZXF1ZXN0Lmh0bWwgWyBTa2lwIF0KLQogd2Via2l0Lm9yZy9iLzE3NTE5MyBmYXN0L2ltYWdlcy9h
c3luYy1pbWFnZS1ib2R5LWJhY2tncm91bmQtaW1hZ2UuaHRtbCBbIFBhc3MgVGltZW91dCBdCiAK
IHdlYmtpdC5vcmcvYi8yMTUxMTAgWyBSZWxlYXNlIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLWFuaW1hdGlvbnMvd2Via2l0LXdyaXRpbmctbW9kZS1jcmFzaC5odG1s
IFsgUGFzcyBGYWlsdXJlIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432177</attachid>
            <date>2021-06-24 09:59:35 -0700</date>
            <delta_ts>2021-06-24 11:07:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227326-20210624095934.patch</filename>
            <type>text/plain</type>
            <size>262446</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGE0OWJkYWY3NGI1MDhj
ZTM0ODY2NDRkN2E0NThjMzY3ZmQ2NjMxOS4uZDQ1NmZkYWExOTNhYjc2ZTdjZTIxOTY0Mjg5NmZm
Njk5NDQzYzA0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDIxLTA2LTIzICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIENsZWFuIHVw
IEFwcCBQcml2YWN5IFJlcG9ydCBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjczMjYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc5Njk2ODQ5
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Rz
OiBodHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1sb2FkLXVybC5odG1s
CisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlv
bi1waW5nLWxvYWQuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1y
ZXBvcnQvYXR0cmlidXRpb24tcG9zdC1yZXF1ZXN0Lmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAv
dGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXByZWZsaWdodC1hc3luYy5odG1s
CisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlv
bi1wcmVmbGlnaHQtc3luYy5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL2FwcC1wcml2
YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1zcGVjdWxhdGl2ZS1yZXZhbGlkYXRpb24uaHRtbAorCisg
ICAgICAgIFJlbmFtZSBBcHAgUHJpdmFjeSBSZXBvcnQgY29kZSB0byBiZXR0ZXIgYWxpZ24gd2l0
aCB0aGUgY29kZSdzIHB1cnBvc2UKKyAgICAgICAgb2YgYXR0cmlidXRpbmcgbG9hZHMgdG8gdGhl
IGFwcCBvciBub3QuIFRoZSBkZWZhdWx0IHZhbHVlIHNob3VsZAorICAgICAgICBiZSBhcHAgaW5p
dGlhdGVkIGJhc2VkIG9uIHRoZSBkb2N1bWVudGF0aW9uLCBzbyB0aGlzIHBhdGNoIGFsc28gYWRq
dXN0cworICAgICAgICB0aGUgZGVmYXVsdCB2YWx1ZSBhcyBuZWVkZWQuCisKKyAgICAgICAgKiBs
b2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUFjY2Vzc0NvbnRyb2xQcmVmbGlnaHRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvRG9j
dW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpsYXN0TmF2
aWdhdGlvbldhc0FwcEluaXRpYXRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6Omxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnNldExhc3ROYXZpZ2F0
aW9uV2FzQXBwQm91bmQpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlcjo6dXBkYXRlUmVxdWVzdEFuZEFkZEV4dHJhRmllbGRzKToKKyAgICAg
ICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVxdWVzdEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
QmFzZTo6c2V0QXNJc29sYXRlZENvcHkpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXF1ZXN0QmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFz
ZTo6aXNBcHBJbml0aWF0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0QmFzZTo6c2V0SXNBcHBJbml0aWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0QmFzZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3RCYXNlOjplbmNvZGVCYXNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdEJhc2U6OmRlY29kZUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0QmFzZTo6aXNBcHBCb3VuZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRJc0FwcEJvdW5kKTogRGVsZXRlZC4KKyAgICAg
ICAgKiB0ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2VydmljZVdvcmtlckludGVybmFsczo6bGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckludGVybmFsczo6bGFzdE5hdmlnYXRp
b25XYXNBcHBCb3VuZCk6IERlbGV0ZWQuCisgICAgICAgICogdGVzdGluZy9TZXJ2aWNlV29ya2Vy
SW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlk
bDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE6Omlzb2xhdGVkQ29w
eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZnJv
bSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmg6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjpkZWNvZGUpOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjppc29sYXRlZENvcHkg
Y29uc3QpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERh
dGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZGVj
b2RlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5
OjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdv
cmtlclRocmVhZFByb3h5OjpzZXRMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6Omxhc3ROYXZpZ2F0aW9uV2Fz
QXBwSW5pdGlhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eTo6c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6Omxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQp
OiBEZWxldGVkLgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eS5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0
cmF0aW9uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVnaXN0cmF0aW9uRGF0YWJh
c2U6OmltcG9ydFJlY29yZHMpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnN0YXJ0U2NyaXB0RmV0Y2gp
OgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnVwZGF0ZVdvcmtlcik6CisgICAgICAgIChX
ZWJDb3JlOjpTV1NlcnZlcjo6Y2xpZW50SXNBcHBJbml0aWF0ZWRGb3JSZWdpc3RyYWJsZURvbWFp
bik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6dXBkYXRlQXBwSW5pdGlhdGVkVmFsdWVG
b3JXb3JrZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpyZWdpc3RlclNlcnZpY2VX
b3JrZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnVucmVnaXN0ZXJTZXJ2
aWNlV29ya2VyQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpjbGllbnRJc0Fw
cEJvdW5kRm9yUmVnaXN0cmFibGVEb21haW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
U1dTZXJ2ZXI6OnVwZGF0ZUFwcEJvdW5kVmFsdWVGb3JXb3JrZXJzKTogRGVsZXRlZC4KKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmg6CisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTV1NlcnZlclJlZ2lzdHJhdGlvbjo6c2NoZWR1bGVTb2Z0VXBkYXRlKToKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmg6CisgICAgICAg
IChXZWJDb3JlOjpTV1NlcnZlclJlZ2lzdHJhdGlvbjo6aXNBcHBJbml0aWF0ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1dTZXJ2ZXJSZWdpc3RyYXRpb246OmlzQXBwQm91bmQpOiBEZWxldGVkLgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjptX2xhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpjb250ZXh0RGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6dXBkYXRlQXBwSW5pdGlhdGVkVmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6bV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjp1cGRhdGVBcHBCb3VuZFZhbHVl
KTogRGVsZXRlZC4KKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29y
a2VyLmg6CisKIDIwMjEtMDYtMjMgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlbW92ZSB1bm5lZWRlZCBleHBsaWNpdCBleGNlcHRpb24gY2hlY2tzIGluIFNjcmlw
dE1vZHVsZUxvYWRlcjo6ZXZhbHVhdGUoKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZjZmYjQ0ZThjNzdlNTI1NmE4
ZDRmZjc2NGQ2ZWFhYWRmZTg4ZDViNC4uYzg5NTc1MTE5ODg1MzlmNjVlNGFmMzVhZmYwZWI1MDQ3
Yjg2Y2U2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzYgQEAKKzIwMjEtMDYtMjMgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAgQXBw
IFByaXZhY3kgUmVwb3J0IGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNzMyNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzk2OTY4NDk+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1lIEFw
cCBQcml2YWN5IFJlcG9ydCBjb2RlIHRvIGJldHRlciBhbGlnbiB3aXRoIHRoZSBjb2RlJ3MgcHVy
cG9zZQorICAgICAgICBvZiBhdHRyaWJ1dGluZyBsb2FkcyB0byB0aGUgYXBwIG9yIG5vdC4gVGhl
IGRlZmF1bHQgdmFsdWUgc2hvdWxkCisgICAgICAgIGJlIGFwcCBpbml0aWF0ZWQgYmFzZWQgb24g
dGhlIGRvY3VtZW50YXRpb24sIHNvIHRoaXMgcGF0Y2ggYWxzbyBhZGp1c3RzCisgICAgICAgIHRo
ZSBkZWZhdWx0IHZhbHVlIGFzIG5lZWRlZC4KKworICAgICAgICBUaGlzIGFsc28gYWRvcHRzIHRo
ZSBuZXcgTlNVUkxSZXF1ZXN0IGF0dHJpYnV0aW9uIEFQSSBhbmQgcmVtb3ZlcworICAgICAgICB0
aGUgZGVwcmVjYXRlZCBfaXNOb25BcHBJbml0aWF0ZWQgU1BJLgorCisgICAgICAgIENvdmVyZWQg
YnkgZXhpc3RpbmcgbGF5b3V0IGFuZCBBUEkgdGVzdHMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
OjpwcmVjb25uZWN0VG8pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YXBwUHJp
dmFjeVJlcG9ydFRlc3RpbmdEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OmNsZWFyQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OmFwcEJvdW5kTmF2aWdhdGlvbkRhdGEpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVXaWxsU2VuZFJlZGlyZWN0ZWRSZXF1
ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjppc0FwcEJvdW5k
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6YXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdE
YXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOjpzb2Z0VXBkYXRlSWZOZWVkZWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6bG9hZEZyb21OZXR3b3Jr
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29u
bmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y29u
dHJvbENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y3Jl
YXRlRmV0Y2hUYXNrKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6dXBkYXRlQXBwSW5pdGlhdGVkVmFsdWUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnVwZGF0ZUFwcEJv
dW5kVmFsdWUpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Y29uc3RydWN0UmV2YWxpZGF0aW9uUmVxdWVzdCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6
cmVnaXN0ZXJMb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2
ZUxvYWRNYW5hZ2VyOjpzdGFydFNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5oOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN1YnJlc291cmNlSW5mbzo6aXNBcHBJbml0aWF0
ZWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN1YnJlc291cmNlSW5m
bzo6c2V0SXNBcHBJbml0aWF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN1
YnJlc291cmNlSW5mbzo6aXNBcHBCb3VuZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDYWNoZTo6U3VicmVzb3VyY2VJbmZvOjpzZXRJc0FwcEJvdW5kKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5t
bToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFz
a0NvY29hKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAg
KGhlYWRlcnNfZm9yX3R5cGUpOgorICAgICAgICAqIFNoYXJlZC9BcHBQcml2YWN5UmVwb3J0Lmg6
CisgICAgICAgIChXZWJLaXQ6OkFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YTo6c2V0RGlkUGVy
Zm9ybVNvZnRVcGRhdGUpOgorICAgICAgICAoV2ViS2l0OjpBcHBQcml2YWN5UmVwb3J0VGVzdGlu
Z0RhdGE6OmNsZWFyQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKToKKyAgICAgICAgKFdlYktp
dDo6QXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhOjpkaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVz
dCk6CisgICAgICAgIChXZWJLaXQ6OkFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YTo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6QXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhOjpk
ZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2Nv
YS5tbToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3Q+OjplbmNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdD46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICog
U2hhcmVkL05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmg6CisgICAgICAgIChXZWJLaXQ6OkFw
cEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhOjpzZXREaWRQZXJmb3JtU29mdFVwZGF0ZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhOjpj
bGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGFUZXN0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6QXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGE6OnVwZGF0ZUFwcEJvdW5kTmF2aWdh
dGlvblRlc3RpbmdEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6QXBwQm91bmROYXZp
Z2F0aW9uVGVzdGluZ0RhdGE6OmVuY29kZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OkFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhOjpkZWNvZGUpOiBEZWxldGVkLgorICAg
ICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVu
Y29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6
OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IF9kaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdDpdKToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IF9kaWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdDpdKToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IF9hcHBCb3VuZE5hdmlnYXRpb25EYXRhRm9yRG9tYWluOmNvbXBsZXRpb25IYW5kbGVy
Ol0pOiBEZWxldGVkLgorICAgICAgICBSZW1vdmVkIG5vdyB0aGF0IHdlIG5vIGxvbmdlciBuZWVk
IHRvIHRlc3QgYXR0cmlidXRpb24gY29udGV4dCwgdGhhdAorICAgICAgICBpcyBhbGwgaXQgd2Fz
IHVzZWQgZm9yLgorCisgICAgICAgICgtW1dLV2ViVmlldyBfZGlkTG9hZEFwcEJvdW5kUmVxdWVz
dDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kaWRMb2FkTm9uQXBwQm91bmRS
ZXF1ZXN0Ol0pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZUZvclRlc3RpbmcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d1Rlc3RpbmcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfbGFzdE5hdmlnYXRpb25XYXNBcHBJ
bml0aWF0ZWQ6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfYXBwUHJpdmFjeVJlcG9ydFRlc3Rp
bmdEYXRhOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2NsZWFyQXBwUHJpdmFjeVJlcG9ydFRl
c3RpbmdEYXRhOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2xhc3ROYXZpZ2F0aW9uV2FzQXBw
Qm91bmQ6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLV2ViVmlldyBfYXBwQm91bmROYXZpZ2F0
aW9uRGF0YTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jbGVhckFwcEJvdW5k
TmF2aWdhdGlvbkRhdGE6XSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dl
YlBhZ2VQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldExh
c3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk6IERl
bGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnByZWNvbm5lY3RUbyk6
CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpw
cmVjb25uZWN0VG8pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFy
YW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YXBwUHJpdmFjeVJlcG9y
dFRlc3RpbmdEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbGVhckFwcFBy
aXZhY3lSZXBvcnRUZXN0aW5nRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
YXBwQm91bmROYXZpZ2F0aW9uRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6Y2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhKTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0
cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNv
dXJjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpwcmVjb25uZWN0VG8p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
Ojp1cGRhdGVBcHBJbml0aWF0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uOjpzdGFydEZldGNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnVwZGF0ZUFwcEJvdW5kVmFsdWUpOiBEZWxldGVkLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWRSZXF1
ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOiBE
ZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnNldExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk6IERl
bGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46
CisKIDIwMjEtMDYtMjMgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+
CiAKICAgICAgICAgTWlncmF0ZSBBcHAgUHJpdmFjeSBSZXBvcnQgY29kZSBmcm9tIFdlYktpdEFk
ZGl0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNj
ZXNzQ29udHJvbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3ND
b250cm9sLmNwcAppbmRleCAyYTFhZTUyNTM4YjA2MGRhMTFmYzlkZmJkNDBiOGE2ZDc4YWRlYjE4
Li4zODk5Mjk3NmM2YTFkYWRjODc3OTRmNzhkYjc4NGQ0ZmU0ZTA1M2U3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcApAQCAtODks
NyArODksNyBAQCBSZXNvdXJjZVJlcXVlc3QgY3JlYXRlQWNjZXNzQ29udHJvbFByZWZsaWdodFJl
cXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZQogICAgIHByZWZsaWdodFJlcXVlc3Qu
c2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpBY2Nlc3NDb250cm9sUmVxdWVzdE1l
dGhvZCwgcmVxdWVzdC5odHRwTWV0aG9kKCkpOwogICAgIHByZWZsaWdodFJlcXVlc3Quc2V0UHJp
b3JpdHkocmVxdWVzdC5wcmlvcml0eSgpKTsKICAgICBwcmVmbGlnaHRSZXF1ZXN0LnNldEZpcnN0
UGFydHlGb3JDb29raWVzKHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSk7Ci0gICAgcHJl
ZmxpZ2h0UmVxdWVzdC5zZXRJc0FwcEJvdW5kKHJlcXVlc3QuaXNBcHBCb3VuZCgpKTsKKyAgICBw
cmVmbGlnaHRSZXF1ZXN0LnNldElzQXBwSW5pdGlhdGVkKHJlcXVlc3QuaXNBcHBJbml0aWF0ZWQo
KSk7CiAgICAgaWYgKCFyZWZlcnJlci5pc051bGwoKSkKICAgICAgICAgcHJlZmxpZ2h0UmVxdWVz
dC5zZXRIVFRQUmVmZXJyZXIocmVmZXJyZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5oCmluZGV4IGU2OTM1MzJlYmQ2NGY1YzA0MmM3YzM3ZDgzOTE4OTU5N2Q2ZTY5MDku
LjM5ZWIwNjI5OWU1NzBjNDc1OWFlY2YwZWYwOTcxODI0ZWI1MDU2MjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC00MTksOCArNDE5LDggQEAgcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgc2V0Q29udHJvbGxpbmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYpOwogI2VuZGlmCiAKLSAgICBib29s
IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoKSBjb25zdCB7IHJldHVybiBtX2xhc3ROYXZpZ2F0
aW9uV2FzQXBwQm91bmQ7IH0KLSAgICB2b2lkIHNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQo
Ym9vbCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKSB7IG1fbGFzdE5hdmlnYXRpb25XYXNBcHBC
b3VuZCA9IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7IH0KKyAgICBib29sIGxhc3ROYXZpZ2F0
aW9uV2FzQXBwSW5pdGlhdGVkKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0TmF2aWdhdGlvbldhc0Fw
cEluaXRpYXRlZDsgfQorICAgIHZvaWQgc2V0TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQo
Ym9vbCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCkgeyBtX2xhc3ROYXZpZ2F0aW9uV2Fz
QXBwSW5pdGlhdGVkID0gbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ7IH0KIAogcHJvdGVj
dGVkOgogICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7CkBAIC02NTksNyArNjU5LDcgQEAgcHJpdmF0
ZToKICAgICBib29sIG1fYWxsb3dzV2ViQXJjaGl2ZUZvck1haW5GcmFtZSB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX2FsbG93c0RhdGFVUkxzRm9yTWFpbkZyYW1lIHsgZmFsc2UgfTsKIAotICAgIGJv
b2wgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIHsgZmFsc2UgfTsKKyAgICBib29sIG1fbGFz
dE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgeyB0cnVlIH07CiB9OwogCiBpbmxpbmUgdm9pZCBE
b2N1bWVudExvYWRlcjo6cmVjb3JkTWVtb3J5Q2FjaGVMb2FkRm9yRnV0dXJlQ2xpZW50Tm90aWZp
Y2F0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCmluZGV4IGQ3MTNmN2RkNGE0OTJjZmMzNmE4M2UxMGRhMjYyMTNkYWJl
Mjc1ZmUuLmE1MDRmYTk1MTVmOWM5NDEzMGEyNjZjMzg0ZWQzYzE4ZmQ5NTQxMTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMTQ5Miw3ICsxNDkyLDcgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6bG9hZChEb2N1bWVudExvYWRlciYgbmV3RG9jdW1lbnRMb2FkZXIpCiAgICAg
UmVzb3VyY2VSZXF1ZXN0JiByID0gbmV3RG9jdW1lbnRMb2FkZXIucmVxdWVzdCgpOwogICAgIC8v
IEZJWE1FOiBVc2luZyBtX2xvYWRUeXBlIHNlZW1zIHdyb25nIGhlcmUuCiAgICAgLy8gSWYgd2Ug
YXJlIG9ubHkgcHJlcGFyaW5nIHRvIGxvYWQgdGhlIG1haW4gcmVzb3VyY2UsIHRoYXQgaXMgcHJl
dmlvdXMgbG9hZCdzIGxvYWQgdHlwZSEKLSAgICB1cGRhdGVSZXF1ZXN0QW5kQWRkRXh0cmFGaWVs
ZHMociwgSXNNYWluUmVzb3VyY2U6OlllcywgbV9sb2FkVHlwZSwgU2hvdWxkVXBkYXRlQXBwQm91
bmRWYWx1ZTo6Tm8pOworICAgIHVwZGF0ZVJlcXVlc3RBbmRBZGRFeHRyYUZpZWxkcyhyLCBJc01h
aW5SZXNvdXJjZTo6WWVzLCBtX2xvYWRUeXBlLCBTaG91bGRVcGRhdGVBcHBJbml0aWF0ZWRWYWx1
ZTo6Tm8pOwogICAgIEZyYW1lTG9hZFR5cGUgdHlwZTsKIAogICAgIGlmIChzaG91bGRUcmVhdFVS
TEFzU2FtZUFzQ3VycmVudChuZXdEb2N1bWVudExvYWRlci5vcmlnaW5hbFJlcXVlc3QoKS51cmwo
KSkpIHsKQEAgLTI4NzgsNyArMjg3OCw3IEBAIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5IEZy
YW1lTG9hZGVyOjpkZWZhdWx0UmVxdWVzdENhY2hpbmdQb2xpY3koY29uc3QgUmVzb3VyCiAgICAg
cmV0dXJuIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5OjpVc2VQcm90b2NvbENhY2hlUG9saWN5
OwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjp1cGRhdGVSZXF1ZXN0QW5kQWRkRXh0cmFGaWVsZHMo
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBJc01haW5SZXNvdXJjZSBtYWluUmVzb3VyY2UsIEZy
YW1lTG9hZFR5cGUgbG9hZFR5cGUsIFNob3VsZFVwZGF0ZUFwcEJvdW5kVmFsdWUgc2hvdWxkVXBk
YXRlKQordm9pZCBGcmFtZUxvYWRlcjo6dXBkYXRlUmVxdWVzdEFuZEFkZEV4dHJhRmllbGRzKFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgSXNNYWluUmVzb3VyY2UgbWFpblJlc291cmNlLCBGcmFt
ZUxvYWRUeXBlIGxvYWRUeXBlLCBTaG91bGRVcGRhdGVBcHBJbml0aWF0ZWRWYWx1ZSBzaG91bGRV
cGRhdGUpCiB7CiAgICAgLy8gSWYgdGhlIHJlcXVlc3QgY2FtZSBmcm9tIGEgcHJldmlvdXMgcHJv
Y2VzcyBkdWUgdG8gcHJvY2Vzcy1zd2FwLW9uLW5hdmlnYXRpb24gdGhlbiB3ZSBzaG91bGQgbm90
IG1vZGlmeSB0aGUgcmVxdWVzdC4KICAgICBpZiAobV9jdXJyZW50TG9hZENvbnRpbnVpbmdTdGF0
ZSA9PSBMb2FkQ29udGludWluZ1N0YXRlOjpDb250aW51aW5nV2l0aFJlcXVlc3QpCkBAIC0yOTQ4
LDggKzI5NDgsOCBAQCB2b2lkIEZyYW1lTG9hZGVyOjp1cGRhdGVSZXF1ZXN0QW5kQWRkRXh0cmFG
aWVsZHMoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBJc01haQogICAgICAgICByZXF1ZXN0LnNl
dFJlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5KCJVVEYtOCIs
IG1fZnJhbWUuZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgbV9mcmFtZS5zZXR0aW5ncygpLmRlZmF1
bHRUZXh0RW5jb2RpbmdOYW1lKCkpOwogICAgIH0KIAotICAgIGlmIChzaG91bGRVcGRhdGUgPT0g
U2hvdWxkVXBkYXRlQXBwQm91bmRWYWx1ZTo6WWVzICYmIG1fZnJhbWUubWFpbkZyYW1lKCkubG9h
ZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkKLSAgICAgICAgcmVxdWVzdC5zZXRJc0FwcEJvdW5kKG1f
ZnJhbWUubWFpbkZyYW1lKCkubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+bGFzdE5hdmlnYXRp
b25XYXNBcHBCb3VuZCgpKTsKKyAgICBpZiAoc2hvdWxkVXBkYXRlID09IFNob3VsZFVwZGF0ZUFw
cEluaXRpYXRlZFZhbHVlOjpZZXMgJiYgbV9mcmFtZS5tYWluRnJhbWUoKS5sb2FkZXIoKS5kb2N1
bWVudExvYWRlcigpKQorICAgICAgICByZXF1ZXN0LnNldElzQXBwSW5pdGlhdGVkKG1fZnJhbWUu
bWFpbkZyYW1lKCkubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+bGFzdE5hdmlnYXRpb25XYXNB
cHBJbml0aWF0ZWQoKSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OnNjaGVkdWxlUmVmcmVzaElm
TmVlZGVkKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBjb250ZW50KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCBmMTIzOTllNWU1NWNmZDczMDRkNjc0ZDFiNjlh
NWQ3OTY3YzgyNjJiLi4yNmNkYjI2ZDU5NjAxYTlhYjg3MzAzMGI0NjE1Mzc1MDUyNzMyNWI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtODUsNyArODUsNyBAQCBlbnVtIGNs
YXNzIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFNob3Vs
ZFRyZWF0QXNDb250aW51aW5nTG9hZCA6IGJvb2w7CiBlbnVtIGNsYXNzIFVzZWRMZWdhY3lUTFMg
OiBib29sOwogZW51bSBjbGFzcyBJc01haW5SZXNvdXJjZSA6IGJvb2wgeyBObywgWWVzIH07Ci1l
bnVtIGNsYXNzIFNob3VsZFVwZGF0ZUFwcEJvdW5kVmFsdWUgOiBib29sIHsgTm8sIFllcyB9Owor
ZW51bSBjbGFzcyBTaG91bGRVcGRhdGVBcHBJbml0aWF0ZWRWYWx1ZSA6IGJvb2wgeyBObywgWWVz
IH07CiAKIHN0cnVjdCBXaW5kb3dGZWF0dXJlczsKIApAQCAtMzE3LDcgKzMxNyw3IEBAIHB1Ymxp
YzoKICAgICBib29sIGFsd2F5c0FsbG93TG9jYWxXZWJhcmNoaXZlKCkgY29uc3QgeyByZXR1cm4g
bV9hbHdheXNBbGxvd0xvY2FsV2ViYXJjaGl2ZTsgfQogCiAgICAgLy8gRm9yIHN1YnJlc291cmNl
IHJlcXVlc3RzIHRoZSBGcmFtZUxvYWRUeXBlIHBhcmFtZXRlciBoYXMgbm8gZWZmZWN0IGFuZCBj
YW4gYmUgc2tpcHBlZC4KLSAgICB2b2lkIHVwZGF0ZVJlcXVlc3RBbmRBZGRFeHRyYUZpZWxkcyhS
ZXNvdXJjZVJlcXVlc3QmLCBJc01haW5SZXNvdXJjZSwgRnJhbWVMb2FkVHlwZSA9IEZyYW1lTG9h
ZFR5cGU6OlN0YW5kYXJkLCBTaG91bGRVcGRhdGVBcHBCb3VuZFZhbHVlID0gU2hvdWxkVXBkYXRl
QXBwQm91bmRWYWx1ZTo6WWVzKTsKKyAgICB2b2lkIHVwZGF0ZVJlcXVlc3RBbmRBZGRFeHRyYUZp
ZWxkcyhSZXNvdXJjZVJlcXVlc3QmLCBJc01haW5SZXNvdXJjZSwgRnJhbWVMb2FkVHlwZSA9IEZy
YW1lTG9hZFR5cGU6OlN0YW5kYXJkLCBTaG91bGRVcGRhdGVBcHBJbml0aWF0ZWRWYWx1ZSA9IFNo
b3VsZFVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlOjpZZXMpOwogCiAgICAgdm9pZCBzY2hlZHVsZVJl
ZnJlc2hJZk5lZWRlZChEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgY29udGVudCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJh
c2UuY3BwCmluZGV4IDQ2ZTc4NTIyOWU2MGY2MmJjN2IzYWNlNGRjODMxYTdmMjc1YTgxYjIuLjQ0
YjU5MzA3MGVjZWQ0MWZmZjcwM2Y3YmM4OTQ3YWYxOTRkYjAyZTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcApA
QCAtOTUsNyArOTUsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdEJhc2U6OnNldEFzSXNvbGF0ZWRD
b3B5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgb3RoZXIpCiAgICAgaWYgKG90aGVyLm1faHR0cEJv
ZHkpCiAgICAgICAgIHNldEhUVFBCb2R5KG90aGVyLm1faHR0cEJvZHktPmlzb2xhdGVkQ29weSgp
KTsKICAgICBzZXRBbGxvd0Nvb2tpZXMob3RoZXIubV9hbGxvd0Nvb2tpZXMpOwotICAgIHNldElz
QXBwQm91bmQob3RoZXIuaXNBcHBCb3VuZCgpKTsKKyAgICBzZXRJc0FwcEluaXRpYXRlZChvdGhl
ci5pc0FwcEluaXRpYXRlZCgpKTsKIH0KIAogYm9vbCBSZXNvdXJjZVJlcXVlc3RCYXNlOjppc0Vt
cHR5KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VSZXF1ZXN0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlcXVlc3RCYXNlLmgKaW5kZXggMjcwZmFkMDRmZDFlNWIzZWE2Mjk0MWNlODA5NTNh
ZWZlNTlmM2RiYS4uMjQ1ZTU5OWE5Y2Y3OGM2MmQ0NWRmYjlhY2UzMDRhMTlhOTJlZGRjOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RC
YXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVl
c3RCYXNlLmgKQEAgLTE5NSw4ICsxOTUsOCBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmKTsKIAotICAgIGJvb2wgaXNBcHBCb3VuZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNB
cHBCb3VuZDsgfQotICAgIHZvaWQgc2V0SXNBcHBCb3VuZChib29sIGlzQXBwQm91bmQpIHsgbV9p
c0FwcEJvdW5kID0gaXNBcHBCb3VuZDsgfTsKKyAgICBib29sIGlzQXBwSW5pdGlhdGVkKCkgY29u
c3QgeyByZXR1cm4gbV9pc0FwcEluaXRpYXRlZDsgfQorICAgIHZvaWQgc2V0SXNBcHBJbml0aWF0
ZWQoYm9vbCBpc0FwcEluaXRpYXRlZCkgeyBtX2lzQXBwSW5pdGlhdGVkID0gaXNBcHBJbml0aWF0
ZWQ7IH07CiAKIHByb3RlY3RlZDoKICAgICAvLyBVc2VkIHdoZW4gUmVzb3VyY2VSZXF1ZXN0IGlz
IGluaXRpYWxpemVkIGZyb20gYSBwbGF0Zm9ybSByZXByZXNlbnRhdGlvbiBvZiB0aGUgcmVxdWVz
dApAQCAtMjA4LDcgKzIwOCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgLCBtX3BsYXRmb3JtUmVx
dWVzdEJvZHlVcGRhdGVkKHRydWUpCiAgICAgICAgICwgbV9oaWRkZW5Gcm9tSW5zcGVjdG9yKGZh
bHNlKQogICAgICAgICAsIG1faXNUb3BTaXRlKGZhbHNlKQotICAgICAgICAsIG1faXNBcHBCb3Vu
ZChmYWxzZSkKKyAgICAgICAgLCBtX2lzQXBwSW5pdGlhdGVkKHRydWUpCiAgICAgewogICAgIH0K
IApAQCAtMjI0LDcgKzIyNCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgLCBtX3BsYXRmb3JtUmVx
dWVzdEJvZHlVcGRhdGVkKGZhbHNlKQogICAgICAgICAsIG1faGlkZGVuRnJvbUluc3BlY3Rvcihm
YWxzZSkKICAgICAgICAgLCBtX2lzVG9wU2l0ZShmYWxzZSkKLSAgICAgICAgLCBtX2lzQXBwQm91
bmQoZmFsc2UpCisgICAgICAgICwgbV9pc0FwcEluaXRpYXRlZCh0cnVlKQogICAgIHsKICAgICB9
CiAKQEAgLTI1OCw3ICsyNTgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgbXV0YWJsZSBib29sIG1fcGxh
dGZvcm1SZXF1ZXN0Qm9keVVwZGF0ZWQgOiAxOwogICAgIGJvb2wgbV9oaWRkZW5Gcm9tSW5zcGVj
dG9yIDogMTsKICAgICBib29sIG1faXNUb3BTaXRlIDogMTsKLSAgICBib29sIG1faXNBcHBCb3Vu
ZCA6IDE7CisgICAgYm9vbCBtX2lzQXBwSW5pdGlhdGVkIDogMTsKICNpZiBVU0UoU1lTVEVNX1BS
RVZJRVcpCiAgICAgc3RkOjpvcHRpb25hbDxTeXN0ZW1QcmV2aWV3SW5mbz4gbV9zeXN0ZW1QcmV2
aWV3SW5mbzsKICNlbmRpZgpAQCAtMjk0LDcgKzI5NCw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBS
ZXNvdXJjZVJlcXVlc3RCYXNlOjplbmNvZGVCYXNlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAg
ICAgZW5jb2RlciA8PCBtX2lzVG9wU2l0ZTsKICAgICBlbmNvZGVyIDw8IG1fcHJpb3JpdHk7CiAg
ICAgZW5jb2RlciA8PCBtX3JlcXVlc3RlcjsKLSAgICBlbmNvZGVyIDw8IG1faXNBcHBCb3VuZDsK
KyAgICBlbmNvZGVyIDw8IG1faXNBcHBJbml0aWF0ZWQ7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+CkBAIC0zNzIsMTEgKzM3MiwxMSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgUmVzb3VyY2VS
ZXF1ZXN0QmFzZTo6ZGVjb2RlQmFzZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgbV9yZXF1ZXN0ZXIgPSAqcmVxdWVzdGVyOwogCi0gICAgc3RkOjpvcHRpb25h
bDxib29sPiBpc0FwcEJvdW5kOwotICAgIGRlY29kZXIgPj4gaXNBcHBCb3VuZDsKLSAgICBpZiAo
IWlzQXBwQm91bmQpCisgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc0FwcEluaXRpYXRlZDsKKyAg
ICBkZWNvZGVyID4+IGlzQXBwSW5pdGlhdGVkOworICAgIGlmICghaXNBcHBJbml0aWF0ZWQpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX2lzQXBwQm91bmQgPSAqaXNBcHBCb3VuZDsKKyAg
ICBtX2lzQXBwSW5pdGlhdGVkID0gKmlzQXBwSW5pdGlhdGVkOwogCiAgICAgcmV0dXJuIHRydWU7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRl
cm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxz
LmNwcAppbmRleCBmMDgwYTkzNWUxOWU1YTVhYTI1ZjNiNjhlNjNjN2I0YmFlNmY2YTQyLi4zNjgy
OThmNGNjNDNkMGMwYWM2ZjQwNWU1ZjgxNjQ0ZDdkYmMxNWY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5jcHAKQEAgLTExOSwxOCArMTE5
LDE4IEBAIGludCBTZXJ2aWNlV29ya2VySW50ZXJuYWxzOjpwcm9jZXNzSWRlbnRpZmllcigpIGNv
bnN0CiAgICAgcmV0dXJuIGdldEN1cnJlbnRQcm9jZXNzSUQoKTsKIH0KIAotdm9pZCBTZXJ2aWNl
V29ya2VySW50ZXJuYWxzOjpsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKFJlZjxEZWZlcnJlZFBy
b21pc2U+JiYgcHJvbWlzZSkKK3ZvaWQgU2VydmljZVdvcmtlckludGVybmFsczo6bGFzdE5hdmln
YXRpb25XYXNBcHBJbml0aWF0ZWQoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewot
ICAgIEFTU0VSVCghbV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kUHJvbWlzZSk7Ci0gICAgbV9s
YXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kUHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSk7CisgICAg
QVNTRVJUKCFtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkUHJvbWlzZSk7CisgICAgbV9s
YXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZFByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpOwog
ICAgIGNhbGxPbk1haW5UaHJlYWQoW2lkZW50aWZpZXIgPSBtX2lkZW50aWZpZXIsIHdlYWtUaGlz
ID0gbWFrZVdlYWtQdHIodGhpcyldKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChhdXRvKiBwcm94
eSA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLndvcmtlckJ5SUQoaWRlbnRpZmllcikp
IHsKLSAgICAgICAgICAgIHByb3h5LT50aHJlYWQoKS5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2Rl
KFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBhcHBCb3VuZCA9IHByb3h5LT5sYXN0TmF2
aWdhdGlvbldhc0FwcEJvdW5kKCldKGF1dG8mKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCF3ZWFr
VGhpcyB8fCAhd2Vha1RoaXMtPm1fbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZFByb21pc2UpCisg
ICAgICAgICAgICBwcm94eS0+dGhyZWFkKCkucnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbd2Vh
a1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgYXBwSW5pdGlhdGVkID0gcHJveHktPmxhc3ROYXZp
Z2F0aW9uV2FzQXBwSW5pdGlhdGVkKCldKGF1dG8mKSB7CisgICAgICAgICAgICAgICAgaWYgKCF3
ZWFrVGhpcyB8fCAhd2Vha1RoaXMtPm1fbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWRQcm9t
aXNlKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgICAgICB3ZWFr
VGhpcy0+bV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kUHJvbWlzZS0+cmVzb2x2ZTxJRExCb29s
ZWFuPihhcHBCb3VuZCk7Ci0gICAgICAgICAgICAgICAgd2Vha1RoaXMtPm1fbGFzdE5hdmlnYXRp
b25XYXNBcHBCb3VuZFByb21pc2UgPSBudWxscHRyOworICAgICAgICAgICAgICAgIHdlYWtUaGlz
LT5tX2xhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkUHJvbWlzZS0+cmVzb2x2ZTxJRExCb29s
ZWFuPihhcHBJbml0aWF0ZWQpOworICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5tX2xhc3ROYXZp
Z2F0aW9uV2FzQXBwSW5pdGlhdGVkUHJvbWlzZSA9IG51bGxwdHI7CiAgICAgICAgICAgICB9LCBX
b3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKICAgICAgICAgfQogICAgIH0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmggYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaAppbmRleCBmNjYw
NTA4ZTJmYzEwZThhNTY3ZmIwMTFjNGI0YmFhODQzNTYwYjFmLi4zMzdlNmE3ZDM5M2UzMDBiNmJk
ZmY2MGY5NjliOGZmNWQ4MWQ4MzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1Nl
cnZpY2VXb3JrZXJJbnRlcm5hbHMuaApAQCAtNjAsMTMgKzYwLDEzIEBAIHB1YmxpYzoKIAogICAg
IGludCBwcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0OwogCi0gICAgdm9pZCBsYXN0TmF2aWdhdGlv
bldhc0FwcEJvdW5kKFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOworICAgIHZvaWQgbGFzdE5hdmln
YXRpb25XYXNBcHBJbml0aWF0ZWQoUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAKIHByaXZhdGU6
CiAgICAgZXhwbGljaXQgU2VydmljZVdvcmtlckludGVybmFscyhTZXJ2aWNlV29ya2VySWRlbnRp
Zmllcik7CiAKICAgICBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBtX2lkZW50aWZpZXI7Ci0gICAg
UmVmUHRyPERlZmVycmVkUHJvbWlzZT4gbV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kUHJvbWlz
ZTsKKyAgICBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwSW5p
dGlhdGVkUHJvbWlzZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRsCmluZGV4IGUxMTBi
NTExYjEwNjU2ZGFjYTM5ZjZkNTNmM2RiMTc1MGVlMzZkMDkuLjk0ODRiNzYyMWZjZjFmYWVjZmQ1
YzUzOTQ2YTZlNTg0ZTI5NTc1MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
U2VydmljZVdvcmtlckludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9T
ZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlkbApAQCAtNDMsNSArNDMsNSBAQAogCiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIGxvbmcgcHJvY2Vzc0lkZW50aWZpZXI7CiAKLSAgICBQcm9taXNlPGJvb2xl
YW4+IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoKTsKKyAgICBQcm9taXNlPGJvb2xlYW4+IGxh
c3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5jcHAKaW5k
ZXggYjYwNzRlMTBmNTc3YTA0MmE0YTEzMzc2YjZiMTFjYTFhMmFkN2QyNy4uMjVkN2MwYTdmNGVi
ZTk0NjY3YmYxODA1NmRlNjc3ZTI3MzBiODcyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuY3BwCkBAIC01
OCw3ICs1OCw3IEBAIHN0YXRpYyBTZXJ2aWNlV29ya2VyQ2xpZW50RnJhbWVUeXBlIHRvU2Vydmlj
ZVdvcmtlckNsaWVudEZyYW1lVHlwZShTY3JpcHRFeGVjdXRpCiAKIFNlcnZpY2VXb3JrZXJDbGll
bnREYXRhIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjppc29sYXRlZENvcHkoKSBjb25zdAogewot
ICAgIHJldHVybiB7IGlkZW50aWZpZXIsIHR5cGUsIGZyYW1lVHlwZSwgdXJsLmlzb2xhdGVkQ29w
eSgpLCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIH07CisgICAgcmV0dXJuIHsgaWRlbnRpZmll
ciwgdHlwZSwgZnJhbWVUeXBlLCB1cmwuaXNvbGF0ZWRDb3B5KCksIGxhc3ROYXZpZ2F0aW9uV2Fz
QXBwSW5pdGlhdGVkIH07CiB9CiAKIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIFNlcnZpY2VXb3Jr
ZXJDbGllbnREYXRhOjpmcm9tKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFNXQ2xp
ZW50Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKQEAgLTY3LDEzICs2NywxMyBAQCBTZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YSBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZnJvbShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjbwogICAgIFJFTEVBU0VfQVNTRVJUKGlzRG9jdW1lbnQpOyAvLyBXZSBkbyBu
b3Qgc3VwcG9ydCBkZWRpY2F0ZWQgd29ya2VycyBhcyBjbGllbnRzIHlldC4KIAogICAgIGF1dG8m
IGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpOwotICAgIGF1dG8gbGFzdE5h
dmlnYXRpb25XYXNBcHBCb3VuZCA9IGRvY3VtZW50LmxvYWRlcigpICYmIGRvY3VtZW50LmxvYWRl
cigpLT5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKCkgPyBMYXN0TmF2aWdhdGlvbldhc0FwcEJv
dW5kOjpZZXMgOiBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOjpObzsKKyAgICBhdXRvIGxhc3RO
YXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkID0gZG9jdW1lbnQubG9hZGVyKCkgJiYgZG9jdW1lbnQu
bG9hZGVyKCktPmxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKCkgPyBMYXN0TmF2aWdhdGlv
bldhc0FwcEluaXRpYXRlZDo6WWVzIDogTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6Ok5v
OwogCiAgICAgcmV0dXJuIHsKICAgICAgICAgeyBjb25uZWN0aW9uLnNlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyKCksIGRvY3VtZW50LmlkZW50aWZpZXIoKSB9LAogICAgICAgICBpc0RvY3VtZW50
ID8gU2VydmljZVdvcmtlckNsaWVudFR5cGU6OldpbmRvdyA6IFNlcnZpY2VXb3JrZXJDbGllbnRU
eXBlOjpXb3JrZXIsCiAgICAgICAgIHRvU2VydmljZVdvcmtlckNsaWVudEZyYW1lVHlwZShjb250
ZXh0KSwKLSAgICAgICAgY29udGV4dC51cmwoKSwgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZAor
ICAgICAgICBjb250ZXh0LnVybCgpLCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZAogICAg
IH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyQ2xpZW50RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDbGllbnREYXRhLmgKaW5kZXggMzNkOTgzODQyNGNiOGYyYzFhZTFkYWQ1Zjhh
ZmJlMTQ5MDE5MjNlOC4uNTdjMjg4YTBhZjE2YzBmMmE4OWNhYTdlNWE2OTIxZGJjMTk4NjQzZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
bGllbnREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDbGllbnREYXRhLmgKQEAgLTM3LDE0ICszNywxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBTV0NsaWVudENvbm5lY3Rpb247CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OwogCi1lbnVtIGNsYXNzIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgOiBib29sIHsgTm8sIFll
cyB9OworZW51bSBjbGFzcyBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCA6IGJvb2wgeyBO
bywgWWVzIH07CiAKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSB7CiAgICAgU2Vydmlj
ZVdvcmtlckNsaWVudElkZW50aWZpZXIgaWRlbnRpZmllcjsKICAgICBTZXJ2aWNlV29ya2VyQ2xp
ZW50VHlwZSB0eXBlOwogICAgIFNlcnZpY2VXb3JrZXJDbGllbnRGcmFtZVR5cGUgZnJhbWVUeXBl
OwogICAgIFVSTCB1cmw7Ci0gICAgTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCBsYXN0TmF2aWdh
dGlvbldhc0FwcEJvdW5kOworICAgIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIGxhc3RO
YXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOwogCiAgICAgU2VydmljZVdvcmtlckNsaWVudERhdGEg
aXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKQEAgLTU3LDcgKzU3LDcgQEAgc3RydWN0IFNlcnZpY2VX
b3JrZXJDbGllbnREYXRhIHsKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFNlcnZpY2VX
b3JrZXJDbGllbnREYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBl
bmNvZGVyIDw8IGlkZW50aWZpZXIgPDwgdHlwZSA8PCBmcmFtZVR5cGUgPDwgdXJsIDw8IGxhc3RO
YXZpZ2F0aW9uV2FzQXBwQm91bmQ7CisgICAgZW5jb2RlciA8PCBpZGVudGlmaWVyIDw8IHR5cGUg
PDwgZnJhbWVUeXBlIDw8IHVybCA8PCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDsKIH0K
IAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KQEAgLTgzLDEyICs4MywxMiBAQCBzdGQ6Om9wdGlv
bmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZGVj
b2RlKERlY29kZXImCiAgICAgaWYgKCF1cmwpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICBzdGQ6Om9wdGlvbmFsPExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ+IGxhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQ7Ci0gICAgZGVjb2RlciA+PiBsYXN0TmF2aWdhdGlvbldhc0FwcEJv
dW5kOwotICAgIGlmICghbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCkKKyAgICBzdGQ6Om9wdGlv
bmFsPExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkPiBsYXN0TmF2aWdhdGlvbldhc0FwcElu
aXRpYXRlZDsKKyAgICBkZWNvZGVyID4+IGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOwor
ICAgIGlmICghbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4geyB7IFdURk1vdmUoKmlkZW50aWZpZXIpLCBXVEZN
b3ZlKCp0eXBlKSwgV1RGTW92ZSgqZnJhbWVUeXBlKSwgV1RGTW92ZSgqdXJsKSwgV1RGTW92ZSgq
bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCkgfSB9OworICAgIHJldHVybiB7IHsgV1RGTW92ZSgq
aWRlbnRpZmllciksIFdURk1vdmUoKnR5cGUpLCBXVEZNb3ZlKCpmcmFtZVR5cGUpLCBXVEZNb3Zl
KCp1cmwpLCBXVEZNb3ZlKCpsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCkgfSB9OwogfQog
CiB1c2luZyBTZXJ2aWNlV29ya2VyQ2xpZW50c01hdGNoQWxsQ2FsbGJhY2sgPSBXVEY6OkNvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYmKT47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNv
bnRleHREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEuY3BwCmluZGV4IGI1YWRkYjMxZGFiY2JhODBiOTRkMDAzNGVhY2YzNjc5
NGYxM2FiNGIuLjU2NGJiZTBmYmZkZDM4MDU3NWE3MTVkMzdmZmFkZTJjNTQyNTFmNDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEuY3BwCkBAIC00NCw3ICs0NCw3IEBAIFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YSBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAg
ICAgIHNjcmlwdFVSTC5pc29sYXRlZENvcHkoKSwKICAgICAgICAgd29ya2VyVHlwZSwKICAgICAg
ICAgbG9hZGVkRnJvbURpc2ssCi0gICAgICAgIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQsCisg
ICAgICAgIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkLAogICAgICAgICBjcm9zc1RocmVh
ZENvcHkoc2NyaXB0UmVzb3VyY2VNYXApCiAgICAgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaAppbmRl
eCAzZDdjZDE3YThiYzA5ZGFlYWE2ZTBlYmY5MGEwNTlhN2M3MDlhMzMzLi5jZWZiNjBmNWU3NTBk
OTY3OTcyZmYzZTdiZTliNTUzNDU2Y2MxN2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oCkBAIC0zOSw3
ICszOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBjbGFzcyBMYXN0TmF2aWdh
dGlvbldhc0FwcEJvdW5kIDogYm9vbDsKK2VudW0gY2xhc3MgTGFzdE5hdmlnYXRpb25XYXNBcHBJ
bml0aWF0ZWQgOiBib29sOwogCiBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsKICAg
ICBzdHJ1Y3QgSW1wb3J0ZWRTY3JpcHQgewpAQCAtODksNyArODksNyBAQCBzdHJ1Y3QgU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhIHsKICAgICBVUkwgc2NyaXB0VVJMOwogICAgIFdvcmtlclR5cGUg
d29ya2VyVHlwZTsKICAgICBib29sIGxvYWRlZEZyb21EaXNrOwotICAgIHN0ZDo6b3B0aW9uYWw8
TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZD4gbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkPiBsYXN0TmF2aWdh
dGlvbldhc0FwcEluaXRpYXRlZDsKICAgICBIYXNoTWFwPFVSTCwgSW1wb3J0ZWRTY3JpcHQ+IHNj
cmlwdFJlc291cmNlTWFwOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OwpAQCAtMTAyLDcgKzEwMiw3IEBAIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+CiB2b2lkIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBqb2JEYXRhSWRlbnRpZmllciA8PCByZWdp
c3RyYXRpb24gPDwgc2VydmljZVdvcmtlcklkZW50aWZpZXIgPDwgc2NyaXB0IDw8IGNvbnRlbnRT
ZWN1cml0eVBvbGljeSA8PCByZWZlcnJlclBvbGljeQotICAgICAgICA8PCBzY3JpcHRVUkwgPDwg
d29ya2VyVHlwZSA8PCBsb2FkZWRGcm9tRGlzayA8PCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5k
IDw8IHNjcmlwdFJlc291cmNlTWFwIDw8IGNlcnRpZmljYXRlSW5mbzsKKyAgICAgICAgPDwgc2Ny
aXB0VVJMIDw8IHdvcmtlclR5cGUgPDwgbG9hZGVkRnJvbURpc2sgPDwgbGFzdE5hdmlnYXRpb25X
YXNBcHBJbml0aWF0ZWQgPDwgc2NyaXB0UmVzb3VyY2VNYXAgPDwgY2VydGlmaWNhdGVJbmZvOwog
fQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAtMTQ3LDggKzE0Nyw4IEBAIHN0ZDo6b3B0
aW9uYWw8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6
OmRlY29kZShEZWNvZGVyCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShsb2FkZWRGcm9tRGlzaykp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPExhc3RO
YXZpZ2F0aW9uV2FzQXBwQm91bmQ+IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7Ci0gICAgaWYg
KCFkZWNvZGVyLmRlY29kZShsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKSkKKyAgICBzdGQ6Om9w
dGlvbmFsPExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkPiBsYXN0TmF2aWdhdGlvbldhc0Fw
cEluaXRpYXRlZDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGxhc3ROYXZpZ2F0aW9uV2FzQXBw
SW5pdGlhdGVkKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEhhc2hNYXA8
VVJMLCBJbXBvcnRlZFNjcmlwdD4gc2NyaXB0UmVzb3VyY2VNYXA7CkBAIC0xNzEsNyArMTcxLDcg
QEAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YTo6ZGVjb2RlKERlY29kZXIKICAgICAgICAgV1RGTW92ZShzY3JpcHRVUkwpLAog
ICAgICAgICB3b3JrZXJUeXBlLAogICAgICAgICBsb2FkZWRGcm9tRGlzaywKLSAgICAgICAgV1RG
TW92ZShsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKSwKKyAgICAgICAgV1RGTW92ZShsYXN0TmF2
aWdhdGlvbldhc0FwcEluaXRpYXRlZCksCiAgICAgICAgIFdURk1vdmUoc2NyaXB0UmVzb3VyY2VN
YXApCiAgICAgfX07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAppbmRl
eCA3MjI4NWZkYzgzOTlmYzM0YjU0ZTkzNjA0OTEzZmExYTNmYzU0OTM3Li41YzFhYWVmOWU5ODMw
Mjg2MjcwZmYyMzNhNDVhYTcxZWMyMmIwOTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eS5jcHAKQEAgLTExNyw4ICsxMTcsOCBAQCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6
OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25maQog
ICAgIG1fcmVtb3RlRGVidWdnYWJsZS0+aW5pdCgpOwogI2VuZGlmCiAKLSAgICBpZiAoZGF0YS5s
YXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKQotICAgICAgICBzZXRMYXN0TmF2aWdhdGlvbldhc0Fw
cEJvdW5kKGRhdGEubGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCA9PSBMYXN0TmF2aWdhdGlvbldh
c0FwcEJvdW5kOjpZZXMpOworICAgIGlmIChkYXRhLmxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlh
dGVkKQorICAgICAgICBzZXRMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZChkYXRhLmxhc3RO
YXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkID09IExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVk
OjpZZXMpOwogfQogCiBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6On5TZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHkoKQpAQCAtMTI3LDE1ICsxMjcsMTUgQEAgU2VydmljZVdvcmtlclRocmVhZFByb3h5
Ojp+U2VydmljZVdvcmtlclRocmVhZFByb3h5KCkKICAgICBhbGxTZXJ2aWNlV29ya2VyVGhyZWFk
UHJveGllcygpLnJlbW92ZSh0aGlzKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHk6OnNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoYm9vbCB3YXNBcHBCb3VuZCkKK3ZvaWQg
U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpzZXRMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRl
ZChib29sIHdhc0FwcEluaXRpYXRlZCkKIHsKICAgICBpZiAobV9kb2N1bWVudC0+bG9hZGVyKCkp
Ci0gICAgICAgIG1fZG9jdW1lbnQtPmxvYWRlcigpLT5zZXRMYXN0TmF2aWdhdGlvbldhc0FwcEJv
dW5kKHdhc0FwcEJvdW5kKTsKKyAgICAgICAgbV9kb2N1bWVudC0+bG9hZGVyKCktPnNldExhc3RO
YXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKHdhc0FwcEluaXRpYXRlZCk7CiB9CiAKLWJvb2wgU2Vy
dmljZVdvcmtlclRocmVhZFByb3h5OjpsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKCkKK2Jvb2wg
U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCgp
CiB7Ci0gICAgcmV0dXJuIG1fZG9jdW1lbnQtPmxvYWRlcigpID8gbV9kb2N1bWVudC0+bG9hZGVy
KCktPmxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoKSA6IGZhbHNlOworICAgIHJldHVybiBtX2Rv
Y3VtZW50LT5sb2FkZXIoKSA/IG1fZG9jdW1lbnQtPmxvYWRlcigpLT5sYXN0TmF2aWdhdGlvbldh
c0FwcEluaXRpYXRlZCgpIDogZmFsc2U7CiB9CiAKIGJvb2wgU2VydmljZVdvcmtlclRocmVhZFBy
b3h5Ojpwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCmluZGV4IGM5ZjFkN2VmNzJiYjNmMzVhYWNkMWMzMDUx
NThjMzhlMjAwYzEwZjAuLjJjNWEyODkyOGZhZTAwYTQ4ZmU4ZGFiOTY4YTg5OTdmYzNkYWVjYzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCkBAIC04MSw4ICs4MSw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KCk7CiAgICAgdm9pZCBkaWRTYXZlU2Ny
aXB0c1RvRGlzayhTY3JpcHRCdWZmZXImJiwgSGFzaE1hcDxVUkwsIFNjcmlwdEJ1ZmZlcj4mJiBp
bXBvcnRlZFNjcmlwdHMpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMYXN0TmF2aWdh
dGlvbldhc0FwcEJvdW5kKGJvb2wpOwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbGFzdE5hdmln
YXRpb25XYXNBcHBCb3VuZCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TGFzdE5hdmln
YXRpb25XYXNBcHBJbml0aWF0ZWQoYm9vbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBsYXN0
TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCgpOwogCiBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQ
T1JUIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShQYWdlQ29uZmlndXJhdGlvbiYmLCBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEmJiwgU3RyaW5nJiYgdXNlckFnZW50LCBDYWNoZVN0b3JhZ2VQcm92
aWRlciYsIFN0b3JhZ2VCbG9ja2luZ1BvbGljeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3Bw
CmluZGV4IGJkYWJiZGZlZWY1YjQxMWMyYmU2OTVmMzhkNmM5Y2YwNzFhZmFjZTUuLjc3YWU2Mzli
OTI0NmQ1OWRiM2M3MTI3YmFjNDQwMjRmMDc1ZTdmMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJh
c2UuY3BwCkBAIC01NjksNyArNTY5LDcgQEAgU3RyaW5nIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpp
bXBvcnRSZWNvcmRzKCkKICAgICAgICAgYXV0byByZWdpc3RyYXRpb25JZGVudGlmaWVyID0gU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI6OmdlbmVyYXRlKCk7CiAgICAgICAgIGF1
dG8gc2VydmljZVdvcmtlckRhdGEgPSBTZXJ2aWNlV29ya2VyRGF0YSB7IHdvcmtlcklkZW50aWZp
ZXIsIHNjcmlwdFVSTCwgU2VydmljZVdvcmtlclN0YXRlOjpBY3RpdmF0ZWQsICp3b3JrZXJUeXBl
LCByZWdpc3RyYXRpb25JZGVudGlmaWVyIH07CiAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uID0g
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEgeyBXVEZNb3ZlKCprZXkpLCByZWdpc3RyYXRp
b25JZGVudGlmaWVyLCBXVEZNb3ZlKHNjb3BlVVJMKSwgKnVwZGF0ZVZpYUNhY2hlLCBsYXN0VXBk
YXRlQ2hlY2tUaW1lLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShzZXJ2aWNl
V29ya2VyRGF0YSkgfTsKLSAgICAgICAgYXV0byBjb250ZXh0RGF0YSA9IFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YSB7IHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShyZWdpc3RyYXRpb24pLCB3b3JrZXJJ
ZGVudGlmaWVyLCBXVEZNb3ZlKHNjcmlwdCksIFdURk1vdmUoKmNlcnRpZmljYXRlSW5mbyksIFdU
Rk1vdmUoKmNvbnRlbnRTZWN1cml0eVBvbGljeSksIFdURk1vdmUocmVmZXJyZXJQb2xpY3kpLCBX
VEZNb3ZlKHNjcmlwdFVSTCksICp3b3JrZXJUeXBlLCB0cnVlLCBMYXN0TmF2aWdhdGlvbldhc0Fw
cEJvdW5kOjpObywgV1RGTW92ZShzY3JpcHRSZXNvdXJjZU1hcCkgfTsKKyAgICAgICAgYXV0byBj
b250ZXh0RGF0YSA9IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7IHN0ZDo6bnVsbG9wdCwgV1RG
TW92ZShyZWdpc3RyYXRpb24pLCB3b3JrZXJJZGVudGlmaWVyLCBXVEZNb3ZlKHNjcmlwdCksIFdU
Rk1vdmUoKmNlcnRpZmljYXRlSW5mbyksIFdURk1vdmUoKmNvbnRlbnRTZWN1cml0eVBvbGljeSks
IFdURk1vdmUocmVmZXJyZXJQb2xpY3kpLCBXVEZNb3ZlKHNjcmlwdFVSTCksICp3b3JrZXJUeXBl
LCB0cnVlLCBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDo6Tm8sIFdURk1vdmUoc2NyaXB0
UmVzb3VyY2VNYXApIH07CiAKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBjb250ZXh0RGF0YSA9IGNvbnRleHREYXRhLmlzb2xhdGVkQ29w
eSgpXSgpIG11dGFibGUgewogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+YWRkUmVnaXN0cmF0
aW9uVG9TdG9yZShXVEZNb3ZlKGNvbnRleHREYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCmluZGV4IDE3ZWRmN2VjMGVlMDE2
MDhjZDgwZjU5YmY2OGQxNTY1MTA2ZjY4M2IuLmQ3MDg3NTA1Y2MxODgwOWVlYzM4OTZiZjg5Yzc3
N2UyYzMzZDM3MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC00NzQsNyArNDc0LDcgQEAgdm9pZCBTV1NlcnZlcjo6c3Rh
cnRTY3JpcHRGZXRjaChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iRGF0YSwgU1dTZXJ2
ZXJSZWcKICAgICAgICAgcmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIob3JpZ2luVVJMKG9yaWdpbiku
c3RyaW5nKCkpOwogICAgICAgICByZXF1ZXN0LnNldEhUVFBVc2VyQWdlbnQoc2VydmljZVdvcmtl
ckNsaWVudFVzZXJBZ2VudChDbGllbnRPcmlnaW4geyBqb2JEYXRhLnRvcE9yaWdpbiwgU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZShqb2JEYXRhLnNjcmlwdFVSTCktPmRhdGEoKSB9KSk7CiAgICAgICAg
IHJlcXVlc3Quc2V0UHJpb3JpdHkoUmVzb3VyY2VMb2FkUHJpb3JpdHk6Okxvdyk7Ci0gICAgICAg
IHJlcXVlc3Quc2V0SXNBcHBCb3VuZChyZWdpc3RyYXRpb24uaXNBcHBCb3VuZCgpKTsKKyAgICAg
ICAgcmVxdWVzdC5zZXRJc0FwcEluaXRpYXRlZChyZWdpc3RyYXRpb24uaXNBcHBJbml0aWF0ZWQo
KSk7CiAKICAgICAgICAgbV9zb2Z0VXBkYXRlQ2FsbGJhY2soU2VydmljZVdvcmtlckpvYkRhdGEg
eyBqb2JEYXRhIH0sIHNob3VsZFJlZnJlc2hDYWNoZSwgV1RGTW92ZShyZXF1ZXN0KSwgW3RoaXMs
IHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKGF1dG8mIHJlc3VsdCkgewogICAgICAgICAg
ICAgaWYgKCF3ZWFrVGhpcykKQEAgLTY0OCwyNCArNjQ4LDI0IEBAIHZvaWQgU1dTZXJ2ZXI6OnJl
bW92ZUNsaWVudFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oQ29ubmVjdGlvbiYgY29ubmVjdGlv
biwgU2VyCiAKIHZvaWQgU1dTZXJ2ZXI6OnVwZGF0ZVdvcmtlcihjb25zdCBTZXJ2aWNlV29ya2Vy
Sm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBTV1NlcnZlclJlZ2lzdHJhdGlv
biYgcmVnaXN0cmF0aW9uLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU2NyaXB0QnVmZmVyJiBzY3Jp
cHQsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBjb25zdCBDb250ZW50
U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgY29u
c3QgU3RyaW5nJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSB0eXBlLCBIYXNoTWFwPFVSTCwg
U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJiBzY3JpcHRSZXNvdXJj
ZU1hcCkKIHsKLSAgICB0cnlJbnN0YWxsQ29udGV4dERhdGEoU2VydmljZVdvcmtlckNvbnRleHRE
YXRhIHsgam9iRGF0YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbi5kYXRhKCksIFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBzY3JpcHQsIGNlcnRpZmljYXRlSW5mbywgY29udGVu
dFNlY3VyaXR5UG9saWN5LCByZWZlcnJlclBvbGljeSwgdXJsLCB0eXBlLCBmYWxzZSwgY2xpZW50
SXNBcHBCb3VuZEZvclJlZ2lzdHJhYmxlRG9tYWluKFJlZ2lzdHJhYmxlRG9tYWluKHVybCkpLCBX
VEZNb3ZlKHNjcmlwdFJlc291cmNlTWFwKSB9KTsKKyAgICB0cnlJbnN0YWxsQ29udGV4dERhdGEo
U2VydmljZVdvcmtlckNvbnRleHREYXRhIHsgam9iRGF0YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlv
bi5kYXRhKCksIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBzY3JpcHQsIGNl
cnRpZmljYXRlSW5mbywgY29udGVudFNlY3VyaXR5UG9saWN5LCByZWZlcnJlclBvbGljeSwgdXJs
LCB0eXBlLCBmYWxzZSwgY2xpZW50SXNBcHBJbml0aWF0ZWRGb3JSZWdpc3RyYWJsZURvbWFpbihS
ZWdpc3RyYWJsZURvbWFpbih1cmwpKSwgV1RGTW92ZShzY3JpcHRSZXNvdXJjZU1hcCkgfSk7CiB9
CiAKLUxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgU1dTZXJ2ZXI6OmNsaWVudElzQXBwQm91bmRG
b3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKQorTGFz
dE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgU1dTZXJ2ZXI6OmNsaWVudElzQXBwSW5pdGlhdGVk
Rm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikKIHsK
ICAgICBhdXRvIGNsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluSXRlcmF0b3IgPSBtX2NsaWVudHNC
eVJlZ2lzdHJhYmxlRG9tYWluLmZpbmQoZG9tYWluKTsKICAgICBpZiAoY2xpZW50c0J5UmVnaXN0
cmFibGVEb21haW5JdGVyYXRvciA9PSBtX2NsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluLmVuZCgp
KQotICAgICAgICByZXR1cm4gTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDo6Tm87CisgICAgICAg
IHJldHVybiBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDo6Tm87CiAKICAgICBhdXRvJiBj
bGllbnRzRm9yUmVnaXN0cmFibGVEb21haW4gPSBjbGllbnRzQnlSZWdpc3RyYWJsZURvbWFpbkl0
ZXJhdG9yLT52YWx1ZTsKICAgICBmb3IgKGF1dG8mIGNsaWVudCA6IGNsaWVudHNGb3JSZWdpc3Ry
YWJsZURvbWFpbikgewogICAgICAgICBhdXRvIGRhdGEgPSBtX2NsaWVudHNCeUlkLmZpbmQoY2xp
ZW50KTsKICAgICAgICAgQVNTRVJUKGRhdGEgIT0gbV9jbGllbnRzQnlJZC5lbmQoKSk7Ci0gICAg
ICAgIGlmIChkYXRhLT52YWx1ZS5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kID09IExhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQ6OlllcykKLSAgICAgICAgICAgIHJldHVybiBMYXN0TmF2aWdhdGlv
bldhc0FwcEJvdW5kOjpZZXM7CisgICAgICAgIGlmIChkYXRhLT52YWx1ZS5sYXN0TmF2aWdhdGlv
bldhc0FwcEluaXRpYXRlZCA9PSBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDo6WWVzKQor
ICAgICAgICAgICAgcmV0dXJuIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpZZXM7CiAg
ICAgfQogCi0gICAgcmV0dXJuIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6Ok5vOworICAgIHJl
dHVybiBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDo6Tm87CiB9CiAKIHZvaWQgU1dTZXJ2
ZXI6OnRyeUluc3RhbGxDb250ZXh0RGF0YShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBkYXRh
KQpAQCAtODg2LDExICs4ODYsMTEgQEAgU1dTZXJ2ZXJSZWdpc3RyYXRpb24qIFNXU2VydmVyOjpy
ZWdpc3RyYXRpb25Gcm9tU2VydmljZVdvcmtlcklkZW50aWZpZXIoU2VydmljZVcKICAgICByZXR1
cm4gaXRlcmF0b3ItPnZhbHVlLT5yZWdpc3RyYXRpb24oKTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6
dXBkYXRlQXBwQm91bmRWYWx1ZUZvcldvcmtlcnMoY29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRP
cmlnaW4sIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3Vu
ZCkKK3ZvaWQgU1dTZXJ2ZXI6OnVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlRm9yV29ya2Vycyhjb25z
dCBDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0
ZWQgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpCiB7CiAgICAgZm9yIChhdXRvJiB3b3Jr
ZXIgOiBtX3J1bm5pbmdPclRlcm1pbmF0aW5nV29ya2Vycy52YWx1ZXMoKSkgewogICAgICAgICBp
ZiAod29ya2VyLT5vcmlnaW4oKS5jbGllbnRSZWdpc3RyYWJsZURvbWFpbigpID09IGNsaWVudE9y
aWdpbi5jbGllbnRSZWdpc3RyYWJsZURvbWFpbigpKQotICAgICAgICAgICAgd29ya2VyLT51cGRh
dGVBcHBCb3VuZFZhbHVlKGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOworICAgICAgICAgICAg
d29ya2VyLT51cGRhdGVBcHBJbml0aWF0ZWRWYWx1ZShsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRp
YXRlZCk7CiAgICAgfQogfQogCkBAIC04OTksOSArODk5LDkgQEAgdm9pZCBTV1NlcnZlcjo6cmVn
aXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KENsaWVudE9yaWdpbiYmIGNsaWVudE9yaWdpbiwgU2Vy
dmljZVcKICAgICBhdXRvIGNsaWVudElkZW50aWZpZXIgPSBkYXRhLmlkZW50aWZpZXI7CiAKICAg
ICAvLyBVcGRhdGUgdGhlIGFwcC1ib3VuZCB2YWx1ZSBpZiB0aGUgbmV3IGNsaWVudCBpcyBhcHAt
Ym91bmQgYW5kIHRoZSBjdXJyZW50IGNsaWVudHMgZm9yIHRoZSBvcmlnaW4gYXJlIG5vdCBtYXJr
ZWQgYXBwLWJvdW5kLgotICAgIGlmIChkYXRhLmxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgPT0g
TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDo6WWVzKSB7Ci0gICAgICAgIGlmIChjbGllbnRJc0Fw
cEJvdW5kRm9yUmVnaXN0cmFibGVEb21haW4oY2xpZW50T3JpZ2luLmNsaWVudFJlZ2lzdHJhYmxl
RG9tYWluKCkpID09IExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6Ok5vKQotICAgICAgICAgICAg
dXBkYXRlQXBwQm91bmRWYWx1ZUZvcldvcmtlcnMoY2xpZW50T3JpZ2luLCBkYXRhLmxhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQpOworICAgIGlmIChkYXRhLmxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5p
dGlhdGVkID09IExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpZZXMpIHsKKyAgICAgICAg
aWYgKGNsaWVudElzQXBwSW5pdGlhdGVkRm9yUmVnaXN0cmFibGVEb21haW4oY2xpZW50T3JpZ2lu
LmNsaWVudFJlZ2lzdHJhYmxlRG9tYWluKCkpID09IExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlh
dGVkOjpObykKKyAgICAgICAgICAgIHVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlRm9yV29ya2Vycyhj
bGllbnRPcmlnaW4sIGRhdGEubGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpOwogICAgIH0K
IAogICAgIEFTU0VSVCghbV9jbGllbnRzQnlJZC5jb250YWlucyhjbGllbnRJZGVudGlmaWVyKSk7
CkBAIC05MzksNyArOTM5LDcgQEAgdm9pZCBTV1NlcnZlcjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2Vy
Q2xpZW50KENsaWVudE9yaWdpbiYmIGNsaWVudE9yaWdpbiwgU2VydmljZVcKIHZvaWQgU1dTZXJ2
ZXI6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IENsaWVudE9yaWdpbiYgY2xp
ZW50T3JpZ2luLCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVy
KQogewogICAgIGF1dG8gY2xpZW50UmVnaXN0cmFibGVEb21haW4gPSBjbGllbnRPcmlnaW4uY2xp
ZW50UmVnaXN0cmFibGVEb21haW4oKTsKLSAgICBhdXRvIGFwcEJvdW5kVmFsdWVCZWZvcmUgPSBj
bGllbnRJc0FwcEJvdW5kRm9yUmVnaXN0cmFibGVEb21haW4oY2xpZW50T3JpZ2luLmNsaWVudFJl
Z2lzdHJhYmxlRG9tYWluKCkpOworICAgIGF1dG8gYXBwSW5pdGlhdGVkVmFsdWVCZWZvcmUgPSBj
bGllbnRJc0FwcEluaXRpYXRlZEZvclJlZ2lzdHJhYmxlRG9tYWluKGNsaWVudE9yaWdpbi5jbGll
bnRSZWdpc3RyYWJsZURvbWFpbigpKTsKIAogICAgIGJvb2wgd2FzUmVtb3ZlZCA9IG1fY2xpZW50
c0J5SWQucmVtb3ZlKGNsaWVudElkZW50aWZpZXIpOwogICAgIEFTU0VSVF9VTlVTRUQod2FzUmVt
b3ZlZCwgd2FzUmVtb3ZlZCk7CkBAIC05ODQsOSArOTg0LDkgQEAgdm9pZCBTV1NlcnZlcjo6dW5y
ZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRPcmln
aW4sIFMKIAogICAgIC8vIElmIHRoZSBhcHAtYm91bmQgdmFsdWUgY2hhbmdlZCBhZnRlciB0aGlz
IGNsaWVudCB3YXMgcmVtb3ZlZCwgd2Uga25vdyBpdCB3YXMgdGhlIG9ubHkgYXBwLWJvdW5kCiAg
ICAgLy8gY2xpZW50IGZvciBpdHMgb3JpZ2luLCBhbmQgd2Ugc2hvdWxkIHVwZGF0ZSBhbGwgd29y
a2VycyB0byByZWZsZWN0IHRoaXMuCi0gICAgYXV0byBhcHBCb3VuZFZhbHVlQWZ0ZXIgPSBjbGll
bnRJc0FwcEJvdW5kRm9yUmVnaXN0cmFibGVEb21haW4oY2xpZW50T3JpZ2luLmNsaWVudFJlZ2lz
dHJhYmxlRG9tYWluKCkpOwotICAgIGlmIChhcHBCb3VuZFZhbHVlQmVmb3JlICE9IGFwcEJvdW5k
VmFsdWVBZnRlcikKLSAgICAgICAgdXBkYXRlQXBwQm91bmRWYWx1ZUZvcldvcmtlcnMoY2xpZW50
T3JpZ2luLCBhcHBCb3VuZFZhbHVlQWZ0ZXIpOworICAgIGF1dG8gYXBwSW5pdGlhdGVkVmFsdWVB
ZnRlciA9IGNsaWVudElzQXBwSW5pdGlhdGVkRm9yUmVnaXN0cmFibGVEb21haW4oY2xpZW50T3Jp
Z2luLmNsaWVudFJlZ2lzdHJhYmxlRG9tYWluKCkpOworICAgIGlmIChhcHBJbml0aWF0ZWRWYWx1
ZUJlZm9yZSAhPSBhcHBJbml0aWF0ZWRWYWx1ZUFmdGVyKQorICAgICAgICB1cGRhdGVBcHBJbml0
aWF0ZWRWYWx1ZUZvcldvcmtlcnMoY2xpZW50T3JpZ2luLCBhcHBJbml0aWF0ZWRWYWx1ZUFmdGVy
KTsKIAogICAgIGF1dG8gcmVnaXN0cmF0aW9uSXRlcmF0b3IgPSBtX2NsaWVudFRvQ29udHJvbGxp
bmdSZWdpc3RyYXRpb24uZmluZChjbGllbnRJZGVudGlmaWVyKTsKICAgICBpZiAocmVnaXN0cmF0
aW9uSXRlcmF0b3IgPT0gbV9jbGllbnRUb0NvbnRyb2xsaW5nUmVnaXN0cmF0aW9uLmVuZCgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCmlu
ZGV4IGNkNjIyNjYzN2EyNTE2YmYzZmM1MDFlYzYxYTI2MWQyOTM2ZmIyOTQuLjZiZDY4OTMzNDRl
ZWRmMmYwY2JkZGQyYTE2MTY2YTkyMWUzM2ZlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTIxNyw3ICsyMTcsNyBAQCBwdWJs
aWM6CiAKICAgICBzdGF0aWMgY29uc3RleHByIFNlY29uZHMgZGVmYXVsdFRlcm1pbmF0aW9uRGVs
YXkgPSAxMF9zOwogCi0gICAgTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCBjbGllbnRJc0FwcEJv
dW5kRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsKKyAgICBM
YXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCBjbGllbnRJc0FwcEluaXRpYXRlZEZvclJlZ2lz
dHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CiAKIHByaXZhdGU6CiAgICAg
dm9pZCB2YWxpZGF0ZVJlZ2lzdHJhdGlvbkRvbWFpbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CkBAIC0yNDQsNyArMjQ0LDcgQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgY29udGV4dENvbm5lY3Rpb25DcmVhdGVkKFNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbiYpOwogCi0gICAgdm9pZCB1cGRhdGVBcHBCb3VuZFZhbHVlRm9yV29y
a2Vycyhjb25zdCBDbGllbnRPcmlnaW4mLCBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKTsKKyAg
ICB2b2lkIHVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlRm9yV29ya2Vycyhjb25zdCBDbGllbnRPcmln
aW4mLCBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk7CiAKICAgICBIYXNoTWFwPFNXU2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0aW9uPj4gbV9j
b25uZWN0aW9uczsKICAgICBIYXNoTWFwPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXksIFdl
YWtQdHI8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+PiBtX3Njb3BlVG9SZWdpc3RyYXRpb25NYXA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
UmVnaXN0cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCmluZGV4IDEyYTk1ZGUwZGYwZmJkNjQ2NjFlNzZmYzI5
N2Q1MDRhNTM2Njc3MjQuLmQ4Y2E2NWY4ZWVmNmRjNDY4OWVkNmM4ZTA1ZWE4NjM0YWE4OTU5MWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJSZWdpc3RyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCkBAIC0zNzAsMTQgKzM3MCwxNCBAQCB2b2lk
IFNXU2VydmVyUmVnaXN0cmF0aW9uOjpzb2Z0VXBkYXRlKCkKICAgICBtX3NlcnZlci5zb2Z0VXBk
YXRlKCp0aGlzKTsKIH0KIAotdm9pZCBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6c2NoZWR1bGVTb2Z0
VXBkYXRlKElzQXBwQm91bmQgaXNBcHBCb3VuZCkKK3ZvaWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246
OnNjaGVkdWxlU29mdFVwZGF0ZShJc0FwcEluaXRpYXRlZCBpc0FwcEluaXRpYXRlZCkKIHsKICAg
ICAvLyBUbyBhdm9pZCBzY2hlZHVsaW5nIG1hbnkgdXBkYXRlcyBkdXJpbmcgYSBzaW5nbGUgcGFn
ZSBsb2FkLCB3ZSBkbyBzb2Z0IHVwZGF0ZXMgb24gYSAxIHNlY29uZCBkZWxheSBhbmQga2VlcCBk
ZWxheWluZwogICAgIC8vIGFzIGxvbmcgYXMgc29mdCB1cGRhdGUgcmVxdWVzdHMga2VlcCBjb21p
bmcuIFRoaXMgc2VlbXMgdG8gbWF0Y2ggQ2hyb21lJ3MgYmVoYXZpb3IuCiAgICAgaWYgKG1fc29m
dFVwZGF0ZVRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1faXNBcHBC
b3VuZCA9IGlzQXBwQm91bmQgPT0gSXNBcHBCb3VuZDo6WWVzOworICAgIG1faXNBcHBJbml0aWF0
ZWQgPSBpc0FwcEluaXRpYXRlZCA9PSBJc0FwcEluaXRpYXRlZDo6WWVzOwogCiAgICAgUkVMRUFT
RV9MT0coU2VydmljZVdvcmtlciwgIlNXU2VydmVyUmVnaXN0cmF0aW9uOjpzb2Z0VXBkYXRlSWZO
ZWVkZWQiKTsKICAgICBtX3NvZnRVcGRhdGVUaW1lci5zdGFydE9uZVNob3Qoc29mdFVwZGF0ZURl
bGF5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJSZWdpc3RyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaAppbmRleCA5ZjdmMDYwZjdjYzA0YTJjODc1YmIw
NDZjN2I4MTU4OGIxMjI4YjQ2Li5mY2MwNThhMzk4NmQzZmFhNjcwOTYzMWViYzJiMjM2MjQyMzQ2
NWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyUmVnaXN0cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5oCkBAIC00Nyw3ICs0Nyw3IEBAIHN0cnVjdCBF
eGNlcHRpb25EYXRhOwogc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTsKIHN0cnVjdCBT
ZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQ7CiAKLWVudW0gY2xhc3MgSXNBcHBCb3VuZCA6IGJvb2wg
eyBObywgWWVzIH07CitlbnVtIGNsYXNzIElzQXBwSW5pdGlhdGVkIDogYm9vbCB7IE5vLCBZZXMg
fTsKIAogY2xhc3MgU1dTZXJ2ZXJSZWdpc3RyYXRpb24gOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
U1dTZXJ2ZXJSZWdpc3RyYXRpb24+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAg
LTEwMSwxMyArMTAxLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGZvckVhY2hDb25uZWN0aW9uKGNv
bnN0IFdURjo6RnVuY3Rpb248dm9pZChTV1NlcnZlcjo6Q29ubmVjdGlvbiYpPiYpOwogCiAgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRTb2Z0VXBkYXRlKGNvbnN0IEZldGNoT3B0aW9ucyYp
IGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2NoZWR1bGVTb2Z0VXBkYXRlKElzQXBw
Qm91bmQpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2NoZWR1bGVTb2Z0VXBkYXRlKElzQXBw
SW5pdGlhdGVkKTsKICAgICBzdGF0aWMgY29uc3RleHByIFNlY29uZHMgc29mdFVwZGF0ZURlbGF5
IHsgMV9zIH07CiAKICAgICBVUkwgc2NvcGVVUkxXaXRob3V0RnJhZ21lbnQoKSBjb25zdCB7IHJl
dHVybiBtX3Njb3BlVVJMOyB9CiAgICAgVVJMIHNjcmlwdFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1f
c2NyaXB0VVJMOyB9CiAKLSAgICBib29sIGlzQXBwQm91bmQoKSB7IHJldHVybiBtX2lzQXBwQm91
bmQ7IH0KKyAgICBib29sIGlzQXBwSW5pdGlhdGVkKCkgeyByZXR1cm4gbV9pc0FwcEluaXRpYXRl
ZDsgfQogCiBwcml2YXRlOgogICAgIHZvaWQgYWN0aXZhdGUoKTsKQEAgLTEzNSw3ICsxMzUsNyBA
QCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6VGltZXIgbV9zb2Z0VXBkYXRlVGltZXI7CiAgICAg
Ci0gICAgYm9vbCBtX2lzQXBwQm91bmQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc0FwcEluaXRp
YXRlZCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCA3ZDVjOGYxNDliNzMzMWQ0MGE0YTJlYWNh
ZDlkNjRiNDIwMDFjNTZkLi4xYzdmMzlkYjdjNmRlY2VlMzRlZTNlMDU0ODY3MTllZmJiYjc4ODY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTUyLDcgKzUyLDcg
QEAgcHVibGljOgogCiAgICAgLy8gTWVzc2FnZXMgdG8gdGhlIFNXIGhvc3QgcHJvY2VzcwogICAg
IHZpcnR1YWwgdm9pZCBpbnN0YWxsU2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgU2VydmljZVdv
cmtlckNvbnRleHREYXRhJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlQXBwQm91bmRWYWx1ZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgTGFz
dE5hdmlnYXRpb25XYXNBcHBCb3VuZCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBcHBJ
bml0aWF0ZWRWYWx1ZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgTGFzdE5hdmlnYXRpb25XYXNB
cHBJbml0aWF0ZWQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmlyZUluc3RhbGxFdmVudChTZXJ2
aWNlV29ya2VySWRlbnRpZmllcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmaXJlQWN0aXZhdGVF
dmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0ZXJt
aW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAK
aW5kZXggNjU5MmRiNDEzZjc5NDVkMTNhMDhlMTYyNTE0YmY0YWZlMGFmYWQwMy4uZDdjY2M2MjA3
NWIxMGU1MTBkYjFjMWYwODM2YWI2NDQxMGY2M2E2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKQEAgLTYy
LDcgKzYyLDcgQEAgU1dTZXJ2ZXJXb3JrZXI6OlNXU2VydmVyV29ya2VyKFNXU2VydmVyJiBzZXJ2
ZXIsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXQKICAgICAsIG1fcmVnaXN0cmFibGVE
b21haW4obV9kYXRhLnNjcmlwdFVSTCkKICAgICAsIG1fc2NyaXB0UmVzb3VyY2VNYXAoV1RGTW92
ZShzY3JpcHRSZXNvdXJjZU1hcCkpCiAgICAgLCBtX3Rlcm1pbmF0aW9uVGltZXIoKnRoaXMsICZT
V1NlcnZlcldvcmtlcjo6dGVybWluYXRpb25UaW1lckZpcmVkKQotICAgICwgbV9sYXN0TmF2aWdh
dGlvbldhc0FwcEJvdW5kKG1fc2VydmVyLT5jbGllbnRJc0FwcEJvdW5kRm9yUmVnaXN0cmFibGVE
b21haW4obV9yZWdpc3RyYWJsZURvbWFpbikpCisgICAgLCBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBw
SW5pdGlhdGVkKG1fc2VydmVyLT5jbGllbnRJc0FwcEluaXRpYXRlZEZvclJlZ2lzdHJhYmxlRG9t
YWluKG1fcmVnaXN0cmFibGVEb21haW4pKQogewogICAgIG1fZGF0YS5zY3JpcHRVUkwucmVtb3Zl
RnJhZ21lbnRJZGVudGlmaWVyKCk7CiAKQEAgLTg3LDE4ICs4NywxOCBAQCBTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEgU1dTZXJ2ZXJXb3JrZXI6OmNvbnRleHREYXRhKCkgY29uc3QKIHsKICAgICBB
U1NFUlQobV9yZWdpc3RyYXRpb24pOwogCi0gICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0LCBtX3Jl
Z2lzdHJhdGlvbi0+ZGF0YSgpLCBtX2RhdGEuaWRlbnRpZmllciwgbV9zY3JpcHQsIG1fY2VydGlm
aWNhdGVJbmZvLCBtX2NvbnRlbnRTZWN1cml0eVBvbGljeSwgbV9yZWZlcnJlclBvbGljeSwgbV9k
YXRhLnNjcmlwdFVSTCwgbV9kYXRhLnR5cGUsIGZhbHNlLCBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBw
Qm91bmQsIG1fc2NyaXB0UmVzb3VyY2VNYXAgfTsKKyAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQs
IG1fcmVnaXN0cmF0aW9uLT5kYXRhKCksIG1fZGF0YS5pZGVudGlmaWVyLCBtX3NjcmlwdCwgbV9j
ZXJ0aWZpY2F0ZUluZm8sIG1fY29udGVudFNlY3VyaXR5UG9saWN5LCBtX3JlZmVycmVyUG9saWN5
LCBtX2RhdGEuc2NyaXB0VVJMLCBtX2RhdGEudHlwZSwgZmFsc2UsIG1fbGFzdE5hdmlnYXRpb25X
YXNBcHBJbml0aWF0ZWQsIG1fc2NyaXB0UmVzb3VyY2VNYXAgfTsKIH0KIAotdm9pZCBTV1NlcnZl
cldvcmtlcjo6dXBkYXRlQXBwQm91bmRWYWx1ZShMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIGxh
c3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpCit2b2lkIFNXU2VydmVyV29ya2VyOjp1cGRhdGVBcHBJ
bml0aWF0ZWRWYWx1ZShMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCBsYXN0TmF2aWdhdGlv
bldhc0FwcEluaXRpYXRlZCkKIHsKLSAgICBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgPSBs
YXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOworICAgIG1fbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0
aWF0ZWQgPSBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDsKIAogICAgIGlmICghaXNSdW5u
aW5nKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gY29u
dGV4dENvbm5lY3Rpb24oKSkKLSAgICAgICAgY29ubmVjdGlvbi0+dXBkYXRlQXBwQm91bmRWYWx1
ZShpZGVudGlmaWVyKCksIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOworICAgICAgICBjb25u
ZWN0aW9uLT51cGRhdGVBcHBJbml0aWF0ZWRWYWx1ZShpZGVudGlmaWVyKCksIGxhc3ROYXZpZ2F0
aW9uV2FzQXBwSW5pdGlhdGVkKTsKIH0KIAogdm9pZCBTV1NlcnZlcldvcmtlcjo6dGVybWluYXRl
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAppbmRleCBi
ZTU1ZWViMWFhMmZlNjJiNjE3MjFlOTMzMTBiMGNhNGRhMTI5ZGZlLi5hYjA3YzcxNzY3NjE3MzQw
MmUwMmEyY2Y1MTE3NTlmYzdiNzg0NGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCkBAIC0xMjcsNyArMTI3LDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0SGFzVGltZWRPdXRBbnlGZXRjaFRhc2tzKCkgeyBtX2hh
c1RpbWVkT3V0QW55RmV0Y2hUYXNrcyA9IHRydWU7IH0KICAgICBib29sIGhhc1RpbWVkT3V0QW55
RmV0Y2hUYXNrcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzVGltZWRPdXRBbnlGZXRjaFRhc2tzOyB9
CiAgICAgdm9pZCBkaWRGYWlsSGVhcnRCZWF0Q2hlY2soKTsKLSAgICB2b2lkIHVwZGF0ZUFwcEJv
dW5kVmFsdWUoTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk7CisgICAgdm9pZCB1cGRhdGVBcHBJ
bml0aWF0ZWRWYWx1ZShMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk7CiAKIHByaXZhdGU6
CiAgICAgU1dTZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXImLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYsIGNv
bnN0IFVSTCYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYsIGNv
bnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIFN0cmluZyYmIHJlZmVy
cmVyUG9saWN5LCBXb3JrZXJUeXBlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgSGFzaE1hcDxV
UkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYpOwpAQCAtMTU4
LDcgKzE1OCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc1RpbWVkT3V0QW55RmV0Y2hUYXNr
cyB7IGZhbHNlIH07CiAgICAgVmVjdG9yPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4+IG1fdGVy
bWluYXRpb25DYWxsYmFja3M7CiAgICAgVGltZXIgbV90ZXJtaW5hdGlvblRpbWVyOwotICAgIExh
c3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOworICAg
IExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIG1fbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0
aWF0ZWQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDQ5YmRkM2ZlYzY4MTM3Y2U0
MzUzOTUwMDM0YWRjNmIyNzUyYWY5ZTUuLmVjY2NhOGY2YWZiZWEwNTI1ZDUxOTY0ZmU5ZjNiODA2
NzVhZmEzZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCkBAIC0xMzYyLDcgKzEzNjIsNyBAQCBib29sIE5ldHdvcmtQcm9jZXNzOjpwcml2
YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnTW9kZUVuYWJsZWQoKSBjb25zdAogICAgIHJldHVybiBt
X3ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdNb2RlRW5hYmxlZDsKIH0KIAotdm9pZCBOZXR3
b3JrUHJvY2Vzczo6cHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFn
ZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
d2ViUGFnZUlELCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFdlYkNv
cmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzdGQ6
Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluLCBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIGxhc3ROYXZpZ2F0aW9uV2FzQXBw
Qm91bmQpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IHVzZXJBZ2VudCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVk
IGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKQogewogICAgIExPRyhOZXR3b3JrLCAiKE5l
dHdvcmtQcm9jZXNzKSBQcmVjb25uZWN0aW5nIHRvIFVSTCAlcyAoc3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3kgJWkpIiwgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIChpbnQpc3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3kpOwogCkBAIC0xMzc4LDcgKzEzNzgsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVu
dGlmaQogCiAgICAgTmV0d29ya0xvYWRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAgICAgcGFyYW1l
dGVycy5yZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0IHsgdXJsIH07Ci0gICAgcGFyYW1ldGVycy5y
ZXF1ZXN0LnNldElzQXBwQm91bmQobGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCA9PSBMYXN0TmF2
aWdhdGlvbldhc0FwcEJvdW5kOjpZZXMpOworICAgIHBhcmFtZXRlcnMucmVxdWVzdC5zZXRJc0Fw
cEluaXRpYXRlZChsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCA9PSBMYXN0TmF2aWdhdGlv
bldhc0FwcEluaXRpYXRlZDo6WWVzKTsKICAgICBwYXJhbWV0ZXJzLnJlcXVlc3Quc2V0Rmlyc3RQ
YXJ0eUZvckNvb2tpZXModXJsKTsKICAgICBwYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlEID0gd2Vi
UGFnZVByb3h5SUQ7CiAgICAgcGFyYW1ldGVycy53ZWJQYWdlSUQgPSB3ZWJQYWdlSUQ7CkBAIC0y
NzY2LDE5ICsyNzY2LDE5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldENPUlNEaXNhYmxpbmdQ
YXR0ZXJucyhQYWdlSWRlbnRpZmllciBwYWdlSWRlbnRpZmllciwgVmVjCiB9CiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmFwcEJvdW5kTmF2aWdhdGlvbkRhdGEo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEFw
cEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IE5ldHdvcmtQcm9jZXNzOjphcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEFwcFByaXZhY3lSZXBv
cnRUZXN0aW5nRGF0YSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBu
ZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIobmV0d29ya1Nlc3Npb24tPmFwcEJvdW5kTmF2aWdhdGlvblRl
c3RpbmdEYXRhKCkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuZXR3b3JrU2Vzc2lvbi0+
YXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmNs
ZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1By
b2Nlc3M6OmNsZWFyQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCkpCi0gICAgICAgIG5ldHdvcmtTZXNzaW9uLT5hcHBCb3VuZE5hdmlnYXRpb25UZXN0
aW5nRGF0YSgpLmNsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YVRlc3RpbmcoKTsKKyAgICAgICAg
bmV0d29ya1Nlc3Npb24tPmFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSgpLmNsZWFyQXBwUHJp
dmFjeVJlcG9ydFRlc3RpbmdEYXRhKCk7CiAKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDQ0
Nzc4NGIxYTc4MzhkZDdiZGM5NWNmMzc0MDU3YmNjNTlkOGEzM2QuLjVmNTg1YWU3OWYxZDBiYTEz
YmViYWJhOGI1NjRiODI4MWU1NmY0ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAK
KyNpbmNsdWRlICJBcHBQcml2YWN5UmVwb3J0LmgiCiAjaW5jbHVkZSAiQXV4aWxpYXJ5UHJvY2Vz
cy5oIgogI2luY2x1ZGUgIkNhY2hlTW9kZWwuaCIKICNpbmNsdWRlICJDYWxsYmFja0lELmgiCkBA
IC0yODgsNyArMjg5LDcgQEAgcHVibGljOgogICAgIHVzaW5nIENhY2hlU3RvcmFnZVJvb3RQYXRo
Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT47CiAgICAgdm9pZCBj
YWNoZVN0b3JhZ2VSb290UGF0aChQQUw6OlNlc3Npb25JRCwgQ2FjaGVTdG9yYWdlUm9vdFBhdGhD
YWxsYmFjayYmKTsKIAotICAgIHZvaWQgcHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklELCBXZWJQ
YWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHN0ZDo6b3B0
aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBMYXN0TmF2aWdhdGlvbldhc0FwcEJv
dW5kKTsKKyAgICB2b2lkIHByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCwgV2ViUGFnZVByb3h5
SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFVSTCYsIGNvbnN0IFN0
cmluZyYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQp
OwogCiAgICAgdm9pZCBzZXRTZXNzaW9uSXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKFBBTDo6U2Vz
c2lvbklELCBib29sKTsKICAgICBib29sIHNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24o
UEFMOjpTZXNzaW9uSUQpIGNvbnN0OwpAQCAtMzc3LDggKzM3OCw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldENPUlNEaXNhYmxpbmdQYXR0ZXJucyhXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgVmVj
dG9yPFN0cmluZz4mJik7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIGFwcEJvdW5k
TmF2aWdhdGlvbkRhdGEoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEmKT4mJik7Ci0gICAgdm9pZCBjbGVhckFw
cEJvdW5kTmF2aWdhdGlvbkRhdGEoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CisgICAgdm9pZCBhcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoUEFMOjpTZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgQXBwUHJpdmFjeVJlcG9ydFRlc3Rp
bmdEYXRhJik+JiYpOworICAgIHZvaWQgY2xlYXJBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEo
UEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAjZW5kaWYKIAog
I2lmIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggYWUxNWZmMGUxMmNhNTQ1MTc4
OTA3ZDk3MmEwOWNlNmQyMzIxYTJkNC4uZTA1ZjJlMzIwNTg0NzM3YjM0N2ZhYjIxYmY2YTJlNjk3
OWE4YzhjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC03Nyw3ICs3Nyw3IEBAIG1lc3NhZ2VzIC0+IE5l
dHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBQcmVwYXJlVG9TdXNwZW5kKGJvb2wg
aXNTdXNwZW5zaW9uSW1taW5lbnQpIC0+ICgpIEFzeW5jCiAgICAgUHJvY2Vzc0RpZFJlc3VtZSgp
CiAKLSAgICBQcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6Oldl
YlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIHdlYlBhZ2VJRCwgVVJMIHVybCwgU3RyaW5nIHVzZXJBZ2VudCwgZW51bTp1aW50OF90IFdl
YkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBl
bnVtOmJvb2wgc3RkOjpvcHRpb25hbDxXZWJLaXQ6Ok5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
PiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBlbnVtOmJvb2wgV2ViS2l0OjpMYXN0TmF2
aWdhdGlvbldhc0FwcEJvdW5kIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOworICAgIFByZWNv
bm5lY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRl
bnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlE
LCBVUkwgdXJsLCBTdHJpbmcgdXNlckFnZW50LCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6U3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGVudW06Ym9vbCBzdGQ6
Om9wdGlvbmFsPFdlYktpdDo6TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4sIGVudW06Ym9vbCBXZWJLaXQ6Okxhc3ROYXZpZ2F0aW9uV2FzQXBw
SW5pdGlhdGVkIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKTsKIAogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgQ2xlYXJQcmV2YWxlbnRSZXNvdXJjZShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlc291cmNl
RG9tYWluKSAtPiAoKSBBc3luYwpAQCAtMTkzLDggKzE5Myw4IEBAIG1lc3NhZ2VzIC0+IE5ldHdv
cmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBDbGVhckJ1bmRsZUlkZW50aWZpZXIoKSAt
PiAoKSBBc3luYwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgQXBwQm91bmROYXZpZ2F0aW9u
RGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChzdHJ1Y3QgV2ViS2l0OjpBcHBCb3Vu
ZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBkYXRhKSBBc3luYwotICAgIENsZWFyQXBwQm91bmROYXZp
Z2F0aW9uRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCisgICAgQXBw
UHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKHN0
cnVjdCBXZWJLaXQ6OkFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSBkYXRhKSBBc3luYworICAg
IENsZWFyQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCkgLT4gKCkgQXN5bmMKICNlbmRpZgogCiAgICAgQWRkV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVy
IHBhZ2VJRCwgV2ViS2l0OjpXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMgcGFyYW1ldGVycykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmNwcAppbmRleCAwMWFhMWI4MzU3M2E0Y2RlNWY2ZWFjYjBjYjNjMmQzYmVkN2MxNjEzLi4z
YmNmYzEzZGE4ODMzMzE3ZjU4NDY2MGE2ZTkwZGYyZDdjYmQzYTZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC04ODIsNyArODgyLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVk
aXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwKIAogdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFJl
c291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVD
bGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhPiYmIHByaXZhdGVDbGlja01l
YXN1cmVtZW50QXR0cmlidXRpb25UcmlnZ2VyRGF0YSkKIHsKLSAgICByZWRpcmVjdFJlcXVlc3Qu
c2V0SXNBcHBCb3VuZChyZXF1ZXN0LmlzQXBwQm91bmQoKSk7CisgICAgcmVkaXJlY3RSZXF1ZXN0
LnNldElzQXBwSW5pdGlhdGVkKHJlcXVlc3QuaXNBcHBJbml0aWF0ZWQoKSk7CiAKICAgICBMT0FE
RVJfUkVMRUFTRV9MT0coImNvbnRpbnVlV2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdDogKG1faXNL
ZXB0QWxpdmU9JWQsIGhhc0FkQ2xpY2tDb252ZXJzaW9uPSVkKSIsIG1faXNLZXB0QWxpdmUsICEh
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRhKTsKICAgICBBU1NF
UlQoIWlzU3luY2hyb25vdXMoKSk7CkBAIC0xNTA2LDcgKzE1MDYsNyBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6c2VydmljZVdvcmtlckRpZE5vdEhhbmRsZShTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrKiBmZQogCiBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6aXNBcHBCb3VuZCgpCiB7
Ci0gICAgcmV0dXJuIG1fcGFyYW1ldGVycy5yZXF1ZXN0LmlzQXBwQm91bmQoKTsKKyAgICByZXR1
cm4gbV9wYXJhbWV0ZXJzLnJlcXVlc3QuaXNBcHBJbml0aWF0ZWQoKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmgKaW5kZXggN2ZhOTI3NDRmMjE1MmRjMzYzMDE1YjhhYzJkODI2NTA0MzVkY2IyNC4uNmZh
ZDdiOGI0ZGJiZDFlZWM3MjIxZGQyYzU5OWFkNjlhYTViYTAwOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtMjUsNiArMjUsNyBAQAogCiAj
cHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkFwcFByaXZhY3lSZXBvcnQuaCIKICNpbmNsdWRlICJO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oIgogI2luY2x1ZGUgIlByZWZldGNoQ2FjaGUuaCIK
ICNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIuaCIKQEAgLTE2
MSw3ICsxNjIsNyBAQCBwdWJsaWM6CiAgICAgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
JiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpIHsgcmV0dXJuICptX3ByaXZhdGVDbGlja01lYXN1
cmVtZW50OyB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBBcHBCb3VuZE5hdmlnYXRpb25U
ZXN0aW5nRGF0YSYgYXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEoKSB7IHJldHVybiBtX2Fw
cEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhOyB9CisgICAgQXBwUHJpdmFjeVJlcG9ydFRlc3Rp
bmdEYXRhJiBhcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoKSB7IHJldHVybiBtX2FwcFByaXZh
Y3lSZXBvcnRUZXN0aW5nRGF0YTsgfQogI2VuZGlmCiAKICAgICB2b2lkIGFkZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50TmV0d29ya0xvYWRlcihzdGQ6OnVuaXF1ZV9wdHI8UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnROZXR3b3JrTG9hZGVyPiYmIGxvYWRlcikgeyBtX3ByaXZhdGVDbGlja01lYXN1cmVt
ZW50TmV0d29ya0xvYWRlcnMuYWRkKFdURk1vdmUobG9hZGVyKSk7IH0KQEAgLTIxOSw3ICsyMjAs
NyBAQCBwcm90ZWN0ZWQ6CiAjZW5kaWYKICAgICAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBB
cHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBtX2FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdE
YXRhOworICAgIEFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSBtX2FwcFByaXZhY3lSZXBvcnRU
ZXN0aW5nRGF0YTsKICNlbmRpZgogCiAgICAgSGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyPj4gbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dE5ldHdvcmtMb2FkZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3Bw
CmluZGV4IDdmZGQ5NTRhZTRjOTFlMTdjNTI2Y2EwZTY4NzZiMzRkYjZkMmRiYjMuLjkxODI0YzAw
NmYyNGExNzY2ZjAwMzc5YWE5ZjBhMTg3MzFlY2UzM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlckZldGNoVGFzay5jcHAKQEAgLTI1NSw3ICsyNTUsNyBAQCB2b2lkIFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s6OnNvZnRVcGRhdGVJZk5lZWRlZCgpCiAgICAgaWYgKCFtX3Nob3VsZFNvZnRV
cGRhdGUpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoYXV0byogcmVnaXN0cmF0aW9uID0gbV9s
b2FkZXIuY29ubmVjdGlvblRvV2ViUHJvY2VzcygpLnN3Q29ubmVjdGlvbigpLnNlcnZlcigpLmdl
dFJlZ2lzdHJhdGlvbihtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKSkKLSAg
ICAgICAgcmVnaXN0cmF0aW9uLT5zY2hlZHVsZVNvZnRVcGRhdGUobV9sb2FkZXIuaXNBcHBCb3Vu
ZCgpID8gV2ViQ29yZTo6SXNBcHBCb3VuZDo6WWVzIDogV2ViQ29yZTo6SXNBcHBCb3VuZDo6Tm8p
OworICAgICAgICByZWdpc3RyYXRpb24tPnNjaGVkdWxlU29mdFVwZGF0ZShtX2xvYWRlci5pc0Fw
cEJvdW5kKCkgPyBXZWJDb3JlOjpJc0FwcEluaXRpYXRlZDo6WWVzIDogV2ViQ29yZTo6SXNBcHBJ
bml0aWF0ZWQ6Ok5vKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNv
ZnRVcGRhdGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAppbmRleCA0ZmYxYjFmZDIz
ZjY2YWYzMTI5OWNjOGJiNWNiMmNlYzVjZWYwYTVjLi4wNGFlZDkzODU3OWQ3MzVlZTA4MzNmOTBl
ZDMzMzRjN2ZlNDZjY2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29m
dFVwZGF0ZUxvYWRlci5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJT
b2Z0VXBkYXRlTG9hZGVyOjpsb2FkRnJvbU5ldHdvcmsoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24s
IFJlcwogICAgIG1fbmV0d29ya0xvYWQtPnN0YXJ0KCk7CiAKICNpZiBQTEFURk9STShDT0NPQSkK
LSAgICBzZXNzaW9uLmFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhKCkuc2V0RGlkUGVyZm9y
bVNvZnRVcGRhdGUoKTsKKyAgICBzZXNzaW9uLmFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSgp
LnNldERpZFBlcmZvcm1Tb2Z0VXBkYXRlKCk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCBjM2E3YjNkZjcwYzM3ZTNkYmU0ZmEzMWVmNjYw
YjYwNzA4ZjM3MmUzLi4yYTY0M2I4YTQ0YTczYWJiMGE0MTA2MTVkMzFlOWRiNTU2MzBkY2ViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtMTQ3LDcgKzE0Nyw3
IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpjb250cm9sQ2xpZW50KFNlcnZpY2VXb3Jr
ZXJDbGllbnRJZGVudGlmaWVyIGNsaWVudElkCiAgICAgICAgIHVucmVnaXN0ZXJTZXJ2aWNlV29y
a2VyQ2xpZW50KGNsaWVudElkZW50aWZpZXIpOwogICAgIH0pOwogCi0gICAgU2VydmljZVdvcmtl
ckNsaWVudERhdGEgZGF0YSB7IGNsaWVudElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJDbGllbnRU
eXBlOjpXaW5kb3csIFNlcnZpY2VXb3JrZXJDbGllbnRGcmFtZVR5cGU6Ok5vbmUsIHJlcXVlc3Qu
dXJsKCksIHJlcXVlc3QuaXNBcHBCb3VuZCgpID8gV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNB
cHBCb3VuZDo6WWVzIDogV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDo6Tm8gfTsK
KyAgICBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSBkYXRhIHsgY2xpZW50SWRlbnRpZmllciwgU2Vy
dmljZVdvcmtlckNsaWVudFR5cGU6OldpbmRvdywgU2VydmljZVdvcmtlckNsaWVudEZyYW1lVHlw
ZTo6Tm9uZSwgcmVxdWVzdC51cmwoKSwgcmVxdWVzdC5pc0FwcEluaXRpYXRlZCgpID8gV2ViQ29y
ZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6OlllcyA6IFdlYkNvcmU6Okxhc3ROYXZp
Z2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpObyB9OwogICAgIHJlZ2lzdGVyU2VydmljZVdvcmtlckNs
aWVudChTZWN1cml0eU9yaWdpbkRhdGEgeyByZWdpc3RyYXRpb24ua2V5KCkudG9wT3JpZ2luKCkg
fSwgV1RGTW92ZShkYXRhKSwgcmVnaXN0cmF0aW9uLmlkZW50aWZpZXIoKSwgcmVxdWVzdC5odHRw
VXNlckFnZW50KCkpOwogfQogCkBAIC0xODgsNyArMTg4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s+IFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y3JlYXRlRmV0Y2hU
YXNrKE4KICAgICBib29sIHNob3VsZFNvZnRVcGRhdGUgPSByZWdpc3RyYXRpb24gJiYgcmVnaXN0
cmF0aW9uLT5zaG91bGRTb2Z0VXBkYXRlKGxvYWRlci5wYXJhbWV0ZXJzKCkub3B0aW9ucyk7CiAg
ICAgaWYgKHdvcmtlci0+c2hvdWxkU2tpcEZldGNoRXZlbnQoKSkgewogICAgICAgICBpZiAoc2hv
dWxkU29mdFVwZGF0ZSkKLSAgICAgICAgICAgIHJlZ2lzdHJhdGlvbi0+c2NoZWR1bGVTb2Z0VXBk
YXRlKGxvYWRlci5pc0FwcEJvdW5kKCkgPyBXZWJDb3JlOjpJc0FwcEJvdW5kOjpZZXMgOiBXZWJD
b3JlOjpJc0FwcEJvdW5kOjpObyk7CisgICAgICAgICAgICByZWdpc3RyYXRpb24tPnNjaGVkdWxl
U29mdFVwZGF0ZShsb2FkZXIuaXNBcHBCb3VuZCgpID8gV2ViQ29yZTo6SXNBcHBJbml0aWF0ZWQ6
OlllcyA6IFdlYkNvcmU6OklzQXBwSW5pdGlhdGVkOjpObyk7CiAKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmNwcAppbmRleCAzZmEwZTk5NzBmMjU1NWNjODA0YjkyNzRiMGY3ZWRkMTk1NzI1
NTJhLi5lOTAyZWMwNzU4MDUwZTk5ZjYwMTdkYmY3MTBkYTgzNTU5YWRjMzZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtOTIs
OSArOTIsOSBAQCB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6aW5zdGFsbFNl
cnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFNlcnZpY2VXbwogICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpJbnN0YWxsU2VydmljZVdvcmtlciB7IGRhdGEs
IHVzZXJBZ2VudCB9KTsKIH0KIAotdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
OnVwZGF0ZUFwcEJvdW5kVmFsdWUoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIFdlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgbGFzdE5hdmln
YXRpb25XYXNBcHBCb3VuZCkKK3ZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp1
cGRhdGVBcHBJbml0aWF0ZWRWYWx1ZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgbGFz
dE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlVwZGF0ZUFwcEJvdW5kVmFsdWUoc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6VXBkYXRlQXBwSW5pdGlhdGVkVmFs
dWUoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVk
KSk7CiB9CiAKIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpmaXJlSW5zdGFs
bEV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCmluZGV4
IGIwMTE0ZDJmOGQ3NjExN2JkOTYwODk2NTk2MDkzZDQ1ODdhYTAxZWMuLmFlM2ExYTU2ODZmYWE1
YjdlZmY0NGRmODA1MzdlYWY3N2YxOGZlNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTg2LDcgKzg2LDcgQEAgcHJpdmF0ZToKIAog
ICAgIC8vIE1lc3NhZ2VzIHRvIHRoZSBTVyBob3N0IFdlYlByb2Nlc3MKICAgICB2b2lkIGluc3Rh
bGxTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVB
cHBCb3VuZFZhbHVlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpM
YXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUFwcEluaXRp
YXRlZFZhbHVlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpMYXN0
TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCkgZmluYWw7CiAgICAgdm9pZCBmaXJlSW5zdGFsbEV2
ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGZp
cmVBY3RpdmF0ZUV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsK
ICAgICB2b2lkIHRlcm1pbmF0ZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
cikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNw
cAppbmRleCBlMWJkZjY5ZDY1NDc1MDBlMmUzYjcwMzg2OGVlMTNmZDEwNzQ0NDY4Li5iYTY2OTQz
MWQwODIwNGRiZGM0MzNkODFlYzM4MjhlZDRkMDAwOWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgc3RhdGljIGlu
bGluZSBSZXNvdXJjZVJlcXVlc3QgY29uc3RydWN0UmV2YWxpZGF0aW9uUmVxdWVzdChjb25zdCBL
ZXkmIGtleSwgY29uc3QKICAgICByZXZhbGlkYXRpb25SZXF1ZXN0LnNldEZpcnN0UGFydHlGb3JD
b29raWVzKHN1YlJlc291cmNlSW5mby5maXJzdFBhcnR5Rm9yQ29va2llcygpKTsKICAgICByZXZh
bGlkYXRpb25SZXF1ZXN0LnNldElzU2FtZVNpdGUoc3ViUmVzb3VyY2VJbmZvLmlzU2FtZVNpdGUo
KSk7CiAgICAgcmV2YWxpZGF0aW9uUmVxdWVzdC5zZXRJc1RvcFNpdGUoc3ViUmVzb3VyY2VJbmZv
LmlzVG9wU2l0ZSgpKTsKLSAgICByZXZhbGlkYXRpb25SZXF1ZXN0LnNldElzQXBwQm91bmQoc3Vi
UmVzb3VyY2VJbmZvLmlzQXBwQm91bmQoKSk7CisgICAgcmV2YWxpZGF0aW9uUmVxdWVzdC5zZXRJ
c0FwcEluaXRpYXRlZChzdWJSZXNvdXJjZUluZm8uaXNBcHBJbml0aWF0ZWQoKSk7CiAKICAgICBp
ZiAoIWtleS5wYXJ0aXRpb24oKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldmFsaWRhdGlvblJlcXVl
c3Quc2V0Q2FjaGVQYXJ0aXRpb24oa2V5LnBhcnRpdGlvbigpKTsKQEAgLTM2OSw3ICszNjksNyBA
QCB2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnJlZ2lzdGVyTG9hZChjb25zdCBHbG9iYWxG
cmFtZUlEJiBmcmFtZUlELCBjb25zdCBSZQogICAgICAgICBtX3BlbmRpbmdGcmFtZUxvYWRzLmFk
ZChmcmFtZUlELCBwZW5kaW5nRnJhbWVMb2FkLmNvcHlSZWYoKSk7CiAKICAgICAgICAgLy8gUmV0
cmlldmUgdGhlIHN1YnJlc291cmNlcyBlbnRyeSBpZiBpdCBleGlzdHMgdG8gc3RhcnQgc3BlY3Vs
YXRpdmUgcmV2YWxpZGF0aW9uIGFuZCB0byB1cGRhdGUgaXQuCi0gICAgICAgIHJldHJpZXZlU3Vi
cmVzb3VyY2VzRW50cnkocmVzb3VyY2VLZXksIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KCp0aGlzKSwgZnJhbWVJRCwgcGVuZGluZ0ZyYW1lTG9hZCA9IFdURk1vdmUocGVuZGluZ0ZyYW1l
TG9hZCksIHJlcXVlc3RJc0FwcEJvdW5kID0gcmVxdWVzdC5pc0FwcEJvdW5kKCksIGlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW5dKHN0ZDo6dW5pcXVlX3B0cjxTdWJyZXNvdXJjZXNFbnRyeT4g
ZW50cnkpIHsKKyAgICAgICAgcmV0cmlldmVTdWJyZXNvdXJjZXNFbnRyeShyZXNvdXJjZUtleSwg
W3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBmcmFtZUlELCBwZW5kaW5nRnJh
bWVMb2FkID0gV1RGTW92ZShwZW5kaW5nRnJhbWVMb2FkKSwgcmVxdWVzdElzQXBwQm91bmQgPSBy
ZXF1ZXN0LmlzQXBwSW5pdGlhdGVkKCksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW5dKHN0
ZDo6dW5pcXVlX3B0cjxTdWJyZXNvdXJjZXNFbnRyeT4gZW50cnkpIHsKICAgICAgICAgICAgIGlm
ICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC01OTYsNyArNTk2LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpzdGFydFNwZWN1bGF0aXZlUmV2YWxpZGF0
aW9uKGNvbnN0IEdsb2JhbEZyYW1lSUQmIGYKIHsKICAgICBmb3IgKGF1dG8mIHN1YnJlc291cmNl
SW5mbyA6IGVudHJ5LnN1YnJlc291cmNlcygpKSB7CiAgICAgICAgIGF1dG8mIGtleSA9IHN1YnJl
c291cmNlSW5mby5rZXkoKTsKLSAgICAgICAgc3VicmVzb3VyY2VJbmZvLnNldElzQXBwQm91bmQo
cmVxdWVzdElzQXBwQm91bmQpOworICAgICAgICBzdWJyZXNvdXJjZUluZm8uc2V0SXNBcHBJbml0
aWF0ZWQocmVxdWVzdElzQXBwQm91bmQpOwogICAgICAgICBpZiAoIXN1YnJlc291cmNlSW5mby5p
c1RyYW5zaWVudCgpKQogICAgICAgICAgICAgcHJlbG9hZEVudHJ5KGtleSwgc3VicmVzb3VyY2VJ
bmZvLCBmcmFtZUlELCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKICAgICAgICAgZWxz
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmgKaW5kZXggNjBhNDA2M2IyMzQ1
ZDkyNWUyYzc4Nzg0NTk5MjBlMTBmMjc4MjMwZS4uNDBjOWIyMDE3ODhmODE4YTU3OGI4M2YxYWUz
NGI3ZmNmNWU0MTNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuaApAQCAt
NTksOCArNTksOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzRmlyc3RQYXJ0eSgpIGNvbnN0Owog
Ci0gICAgYm9vbCBpc0FwcEJvdW5kKCkgY29uc3QgeyByZXR1cm4gbV9pc0FwcEJvdW5kOyB9Ci0g
ICAgdm9pZCBzZXRJc0FwcEJvdW5kKGJvb2wgaXNBcHBCb3VuZCkgeyBtX2lzQXBwQm91bmQgPSBp
c0FwcEJvdW5kOyB9CisgICAgYm9vbCBpc0FwcEluaXRpYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNBcHBJbml0aWF0ZWQ7IH0KKyAgICB2b2lkIHNldElzQXBwSW5pdGlhdGVkKGJvb2wgaXNBcHBJ
bml0aWF0ZWQpIHsgbV9pc0FwcEluaXRpYXRlZCA9IGlzQXBwSW5pdGlhdGVkOyB9CiAKIHByaXZh
dGU6CiAgICAgS2V5IG1fa2V5OwpAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgogICAgIFdhbGxU
aW1lIG1fZmlyc3RTZWVuOwogICAgIGJvb2wgbV9pc1RyYW5zaWVudCB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtX2lzU2FtZVNpdGUgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9pc0FwcEJvdW5kIHsgZmFs
c2UgfTsKKyAgICBib29sIG1faXNBcHBJbml0aWF0ZWQgeyB0cnVlIH07CiAgICAgVVJMIG1fZmly
c3RQYXJ0eUZvckNvb2tpZXM7CiAgICAgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCBtX3JlcXVlc3RI
ZWFkZXJzOwogICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5IG1fcHJpb3JpdHk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRh
VGFza0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
RGF0YVRhc2tDb2NvYS5tbQppbmRleCBmNzRiMzEyOWZlNzJiYzlmY2U2MjM2MDYwNmQzYjM5YjA3
MTJjZjg5Li4zNjhkODczNTJlZjA0MjUzNThhNjI1Nzk4NjU3ZDY4MGQ2MmM0MTRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0Nv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0Rh
dGFUYXNrQ29jb2EubW0KQEAgLTM0MSw5ICszNDEsNyBAQCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6
TmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRh
VAogICAgIFJldGFpblB0cjxOU011dGFibGVVUkxSZXF1ZXN0PiBtdXRhYmxlUmVxdWVzdCA9IGFk
b3B0TlMoW25zUmVxdWVzdC5nZXQoKSBtdXRhYmxlQ29weV0pOwogCiAjaWYgRU5BQkxFKEFQUF9Q
UklWQUNZX1JFUE9SVCkKLSAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgot
ICAgIG11dGFibGVSZXF1ZXN0LmdldCgpLl9pc05vbkFwcEluaXRpYXRlZCA9ICFyZXF1ZXN0Lmlz
QXBwQm91bmQoKTsKLSAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKKyAgICBt
dXRhYmxlUmVxdWVzdC5nZXQoKS5hdHRyaWJ1dGlvbiA9IHJlcXVlc3QuaXNBcHBJbml0aWF0ZWQo
KSA/IE5TVVJMUmVxdWVzdEF0dHJpYnV0aW9uRGV2ZWxvcGVyIDogTlNVUkxSZXF1ZXN0QXR0cmli
dXRpb25Vc2VyOwogI2VuZGlmCiAKICAgICBpZiAocGFyYW1ldGVycy5wY21EYXRhQ2FycmllZCkK
QEAgLTM1MSw3ICszNDksNyBAQCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNr
Q29jb2EoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVAogCiAgICAgbnNSZXF1
ZXN0ID0gbXV0YWJsZVJlcXVlc3Q7CiAKLSAgICBtX3Nlc3Npb24tPmFwcEJvdW5kTmF2aWdhdGlv
blRlc3RpbmdEYXRhKCkudXBkYXRlQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEocmVxdWVz
dCwgcmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygpLmlzRW1wdHkoKSA/IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluKHJlcXVlc3QudXJsKCkpIDogV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4ocmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygpKSk7CisgICAgbV9zZXNzaW9uLT5hcHBQ
cml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoKS5kaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdChuc1Jl
cXVlc3QuZ2V0KCkuYXR0cmlidXRpb24gPT0gTlNVUkxSZXF1ZXN0QXR0cmlidXRpb25EZXZlbG9w
ZXIpOwogCiAgICAgYXBwbHlTbmlmZmluZ1BvbGljaWVzQW5kQmluZFJlcXVlc3RUb0luZmVyZmFj
ZUlmTmVlZGVkKG5zUmVxdWVzdCwgcGFyYW1ldGVycy5jb250ZW50U25pZmZpbmdQb2xpY3kgPT0g
V2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5OjpTbmlmZkNvbnRlbnQgJiYgIXVybC5pc0xv
Y2FsRmlsZSgpLCBwYXJhbWV0ZXJzLmNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5ID09IFdl
YkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5OjpTbmlmZik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDA0MzZiMDM2YTk5YTI4MTU3MmEw
ZTFlYzc1NTlmZjY0M2QzNGNkMTguLjY3Y2M2OGZhNzczYWI5YjU2MDZjMWJlMTJiMzNiOTBkNjEz
NDZmY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtNzAy
LDcgKzcwMiw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViQ29y
ZTo6SW5zcGVjdG9yT3ZlcmxheTo6SGlnaGxpZ2h0JzogWyc8V2ViQ29yZS9JbnNwZWN0b3JPdmVy
bGF5Lmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpLZXlmcmFtZVZhbHVlTGlzdCc6IFsnPFdlYkNv
cmUvR3JhcGhpY3NMYXllci5oPiddLAogICAgICAgICAnV2ViQ29yZTo6S2V5cHJlc3NDb21tYW5k
JzogWyc8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+J10sCi0gICAgICAgICdXZWJDb3JlOjpMYXN0
TmF2aWdhdGlvbldhc0FwcEJvdW5kJzogWyc8V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0
YS5oPiddLAorICAgICAgICAnV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQn
OiBbJzxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmg+J10sCiAgICAgICAgICdXZWJD
b3JlOjpMZWdhY3lDRE1TZXNzaW9uQ2xpZW50OjpNZWRpYUtleUVycm9yQ29kZSc6IFsnPFdlYkNv
cmUvTGVnYWN5Q0RNU2Vzc2lvbi5oPiddLAogICAgICAgICAnV2ViQ29yZTo6TG9ja0JhY2tGb3J3
YXJkTGlzdCc6IFsnPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPiddLAogICAgICAgICAnV2Vi
Q29yZTo6TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhhc0FjdGl2aXR5JzogWyc8V2ViQ29y
ZS9NZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oPiddLApAQCAtNzU3LDggKzc1Nyw4IEBAIGRl
ZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViQ29yZTo6V2lsbENvbnRpbnVl
TG9hZGluZyc6IFsnPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPiddLAogICAgICAgICAnV2Vi
Q29yZTo6U2VsZWN0aW9uR2VvbWV0cnknOiBbJyJFZGl0b3JTdGF0ZS5oIiddLAogICAgICAgICAn
V2ViS2l0OjpBY3Rpdml0eVN0YXRlQ2hhbmdlSUQnOiBbJyJEcmF3aW5nQXJlYUluZm8uaCInXSwK
LSAgICAgICAgJ1dlYktpdDo6QXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEnOiBbJyJOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oIiddLAogICAgICAgICAnV2ViS2l0OjpBbGxvd092ZXJ3
cml0ZSc6IFsnIkRvd25sb2FkSUQuaCInXSwKKyAgICAgICAgJ1dlYktpdDo6QXBwUHJpdmFjeVJl
cG9ydFRlc3RpbmdEYXRhJzogWyciQXBwUHJpdmFjeVJlcG9ydC5oIiddLAogICAgICAgICAnV2Vi
S2l0OjpCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUnOiBbJyJTZXNzaW9uU3RhdGUuaCInXSwKICAg
ICAgICAgJ1dlYktpdDo6Q2FsbERvd25sb2FkRGlkU3RhcnQnOiBbJyJEb3dubG9hZE1hbmFnZXIu
aCInXSwKICAgICAgICAgJ1dlYktpdDo6Q29udGVudFdvcmxkSWRlbnRpZmllcic6IFsnIkNvbnRl
bnRXb3JsZFNoYXJlZC5oIiddLApAQCAtNzY2LDcgKzc2Niw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90
eXBlKHR5cGUpOgogICAgICAgICAnV2ViS2l0OjpGaW5kT3B0aW9ucyc6IFsnIldlYkZpbmRPcHRp
b25zLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyU3RhdGUnOiBbJyJH
ZXN0dXJlVHlwZXMuaCInXSwKICAgICAgICAgJ1dlYktpdDo6R2VzdHVyZVR5cGUnOiBbJyJHZXN0
dXJlVHlwZXMuaCInXSwKLSAgICAgICAgJ1dlYktpdDo6TGFzdE5hdmlnYXRpb25XYXNBcHBCb3Vu
ZCc6IFsnIk5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmgiJ10sCisgICAgICAgICdXZWJLaXQ6
Okxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkJzogWyciQXBwUHJpdmFjeVJlcG9ydC5oIidd
LAogICAgICAgICAnV2ViS2l0OjpMYXllckhvc3RpbmdDb250ZXh0SUQnOiBbJyJMYXllckhvc3Rp
bmdDb250ZXh0LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkxheWVySG9zdGluZ01vZGUnOiBbJyJM
YXllclRyZWVDb250ZXh0LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OlBhZ2VTdGF0ZSc6IFsnIlNl
c3Npb25TdGF0ZS5oIiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwUHJp
dmFjeVJlcG9ydC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwUHJpdmFjeVJlcG9ydC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE4MDVmNDEyMDE4MmI0ZTZhYTUwZWU3MmIwNzcwZDNlN2ZkMjE4N2QKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBQcml2YWN5UmVwb3J0LmgKQEAg
LTAsMCArMSw5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXJn
dW1lbnRDb2Rlci5oIgorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiRGVj
b2Rlci5oIgorI2luY2x1ZGUgIkVuY29kZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
UmVxdWVzdC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSBjbGFzcyBMYXN0TmF2aWdh
dGlvbldhc0FwcEluaXRpYXRlZCA6IGJvb2wgeyBObywgWWVzIH07CisKKyNpZiBQTEFURk9STShD
T0NPQSkKK3N0cnVjdCBBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEgeworCisgICAgdm9pZCBz
ZXREaWRQZXJmb3JtU29mdFVwZGF0ZSgpCisgICAgeworICAgICAgICBkaWRQZXJmb3JtU29mdFVw
ZGF0ZSA9IHRydWU7CisgICAgfQorCisgICAgdm9pZCBjbGVhckFwcFByaXZhY3lSZXBvcnRUZXN0
aW5nRGF0YSgpCisgICAgeworICAgICAgICBoYXNMb2FkZWRBcHBJbml0aWF0ZWRSZXF1ZXN0VGVz
dGluZyA9IGZhbHNlOworICAgICAgICBoYXNMb2FkZWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0VGVz
dGluZyA9IGZhbHNlOworICAgICAgICBkaWRQZXJmb3JtU29mdFVwZGF0ZSA9IGZhbHNlOworICAg
IH0KKworICAgIHZvaWQgZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3QoYm9vbCBpc0FwcEluaXRp
YXRlZCkKKyAgICB7CisgICAgICAgIGlzQXBwSW5pdGlhdGVkID8gaGFzTG9hZGVkQXBwSW5pdGlh
dGVkUmVxdWVzdFRlc3RpbmcgPSB0cnVlIDogaGFzTG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVz
dFRlc3RpbmcgPSB0cnVlOworICAgIH0KKworICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIGVuY29kZXIgPDwgaGFzTG9hZGVkQXBwSW5p
dGlhdGVkUmVxdWVzdFRlc3Rpbmc7CisgICAgICAgIGVuY29kZXIgPDwgaGFzTG9hZGVkTm9uQXBw
SW5pdGlhdGVkUmVxdWVzdFRlc3Rpbmc7CisgICAgICAgIGVuY29kZXIgPDwgZGlkUGVyZm9ybVNv
ZnRVcGRhdGU7CisgICAgfQorCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXBwUHJpdmFjeVJl
cG9ydFRlc3RpbmdEYXRhPiBkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQorICAgIHsKKyAg
ICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBoYXNMb2FkZWRBcHBJbml0aWF0ZWRSZXF1ZXN0VGVz
dGluZzsKKyAgICAgICAgZGVjb2RlciA+PiBoYXNMb2FkZWRBcHBJbml0aWF0ZWRSZXF1ZXN0VGVz
dGluZzsKKyAgICAgICAgaWYgKCFoYXNMb2FkZWRBcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZykK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxib29sPiBoYXNMb2FkZWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZzsKKyAgICAgICAg
ZGVjb2RlciA+PiBoYXNMb2FkZWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZzsKKyAgICAg
ICAgaWYgKCFoYXNMb2FkZWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZykKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBk
aWRQZXJmb3JtU29mdFVwZGF0ZTsKKyAgICAgICAgZGVjb2RlciA+PiBkaWRQZXJmb3JtU29mdFVw
ZGF0ZTsKKyAgICAgICAgaWYgKCFkaWRQZXJmb3JtU29mdFVwZGF0ZSkKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJuIHt7ICpoYXNMb2FkZWRBcHBJbml0
aWF0ZWRSZXF1ZXN0VGVzdGluZywgKmhhc0xvYWRlZE5vbkFwcEluaXRpYXRlZFJlcXVlc3RUZXN0
aW5nLCAqZGlkUGVyZm9ybVNvZnRVcGRhdGUgfX07CisgICAgfQorCisgICAgYm9vbCBoYXNMb2Fk
ZWRBcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZyB7IGZhbHNlIH07CisgICAgYm9vbCBoYXNMb2Fk
ZWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZyB7IGZhbHNlIH07CisgICAgYm9vbCBkaWRQ
ZXJmb3JtU29mdFVwZGF0ZSB7IGZhbHNlIH07Cit9OworI2VuZGlmCisKK30KKwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhLmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zN2Q4YmZjNThhMzcxZmMyZGQ5NDAzNzYxYmJmZDFlZWY0MTFmYjA1Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRh
LmgKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiQXJndW1lbnRDb2Rlci5oIgorI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVk
ZSAiRGVjb2Rlci5oIgorI2luY2x1ZGUgIkVuY29kZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Jl
Z2lzdHJhYmxlRG9tYWluLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gY2xhc3MgTGFzdE5hdmlnYXRpb25XYXNBcHBJ
bml0aWF0ZWQgOiBib29sIHsgTm8sIFllcyB9OworCisjaWYgUExBVEZPUk0oQ09DT0EpCitzdHJ1
Y3QgQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhIHsKKworICAgIHZvaWQgc2V0RGlkUGVyZm9y
bVNvZnRVcGRhdGUoKQorICAgIHsKKyAgICAgICAgZGlkUGVyZm9ybVNvZnRVcGRhdGUgPSB0cnVl
OworICAgIH0KKworICAgIHZvaWQgY2xlYXJBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoKQor
ICAgIHsKKyAgICAgICAgaGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcgPSBmYWxz
ZTsKKyAgICAgICAgaGFzTG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcgPSBmYWxz
ZTsKKyAgICAgICAgZGlkUGVyZm9ybVNvZnRVcGRhdGUgPSBmYWxzZTsKKyAgICB9CisKKyAgICB2
b2lkIGRpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0KGJvb2wgaXNBcHBJbml0aWF0ZWQpCisgICAg
eworICAgICAgICBpc0FwcEluaXRpYXRlZCA/IGhhc0xvYWRlZEFwcEluaXRpYXRlZFJlcXVlc3RU
ZXN0aW5nID0gdHJ1ZSA6IGhhc0xvYWRlZE5vbkFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nID0g
dHJ1ZTsKKyAgICB9CisKKyAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNv
bnN0CisgICAgeworICAgICAgICBlbmNvZGVyIDw8IGhhc0xvYWRlZEFwcEluaXRpYXRlZFJlcXVl
c3RUZXN0aW5nOworICAgICAgICBlbmNvZGVyIDw8IGhhc0xvYWRlZE5vbkFwcEluaXRpYXRlZFJl
cXVlc3RUZXN0aW5nOworICAgICAgICBlbmNvZGVyIDw8IGRpZFBlcmZvcm1Tb2Z0VXBkYXRlOwor
ICAgIH0KKworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEFwcFByaXZhY3lSZXBvcnRUZXN0aW5n
RGF0YT4gZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8Ym9vbD4gaGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3Rpbmc7CisgICAg
ICAgIGRlY29kZXIgPj4gaGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3Rpbmc7CisgICAg
ICAgIGlmICghaGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcpCisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaGFz
TG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3Rpbmc7CisgICAgICAgIGRlY29kZXIgPj4g
aGFzTG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3Rpbmc7CisgICAgICAgIGlmICghaGFz
TG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcpCisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZGlkUGVyZm9ybVNv
ZnRVcGRhdGU7CisgICAgICAgIGRlY29kZXIgPj4gZGlkUGVyZm9ybVNvZnRVcGRhdGU7CisgICAg
ICAgIGlmICghZGlkUGVyZm9ybVNvZnRVcGRhdGUpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworCisgICAgICAgIHJldHVybiB7eyAqaGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVz
dFRlc3RpbmcsICpoYXNMb2FkZWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZywgKmRpZFBl
cmZvcm1Tb2Z0VXBkYXRlIH19OworICAgIH0KKworICAgIGJvb2wgaGFzTG9hZGVkQXBwSW5pdGlh
dGVkUmVxdWVzdFRlc3RpbmcgeyBmYWxzZSB9OworICAgIGJvb2wgaGFzTG9hZGVkTm9uQXBwSW5p
dGlhdGVkUmVxdWVzdFRlc3RpbmcgeyBmYWxzZSB9OworICAgIGJvb2wgZGlkUGVyZm9ybVNvZnRV
cGRhdGUgeyBmYWxzZSB9OworfTsKKyNlbmRpZgorCit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KaW5kZXgg
OTkzNGI2MTFiNTliY2VhMTZlMWQ5Njg2Y2M0NjE0M2M4MzI0YjUxMC4uYWJkZmIzOTJmMWE3ZTg1
MThhMWIzN2ExMDdiOThiYzhiNWNiM2IyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KQEAgLTYxMCw3ICs2
MTAsNyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Pjo6ZW5j
b2RlUGxhdGZvcm1EYXRhKEVuY29kZXImIGVuY29kZQogICAgIElQQzo6ZW5jb2RlKGVuY29kZXIs
IHJlcXVlc3RUb1NlcmlhbGl6ZS5nZXQoKSk7CiAKICAgICBlbmNvZGVyIDw8IHJlc291cmNlUmVx
dWVzdC5yZXF1ZXN0ZXIoKTsKLSAgICBlbmNvZGVyIDw8IHJlc291cmNlUmVxdWVzdC5pc0FwcEJv
dW5kKCk7CisgICAgZW5jb2RlciA8PCByZXNvdXJjZVJlcXVlc3QuaXNBcHBJbml0aWF0ZWQoKTsK
IH0KIAogYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD46OmRlY29k
ZVBsYXRmb3JtRGF0YShEZWNvZGVyJiBkZWNvZGVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlc291cmNlUmVxdWVzdCkKQEAgLTYzMiwxMyArNjMyLDEzIEBAIGJvb2wgQXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYg
ZGVjb2RlCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXF1ZXN0ZXIpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBib29sIGlzQXBwQm91bmQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShpc0FwcEJvdW5kKSkKKyAgICBib29sIGlzQXBwSW5pdGlhdGVkOworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoaXNBcHBJbml0aWF0ZWQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBy
ZXNvdXJjZVJlcXVlc3QgPSBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QocmVxdWVzdC0+Z2V0KCkp
OwogICAgIHJlc291cmNlUmVxdWVzdC5zZXRSZXF1ZXN0ZXIocmVxdWVzdGVyKTsKLSAgICByZXNv
dXJjZVJlcXVlc3Quc2V0SXNBcHBCb3VuZChpc0FwcEJvdW5kKTsKKyAgICByZXNvdXJjZVJlcXVl
c3Quc2V0SXNBcHBJbml0aWF0ZWQoaXNBcHBJbml0aWF0ZWQpOwogCiAgICAgcmV0dXJuIHRydWU7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbi5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4uaAppbmRleCBlMzRhYzVlNTdmNDExZThhNmQzMDAyYTU2OWEwMzE4MDdjY2Y0NDAwLi40MjMy
ZTBjZTIzYjQyNWE5YWMzZTI5ZDI5NDQwYWMyY2I0ODUxNjUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9OYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmgKQEAgLTM1LDcyICszNSw2
IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogZW51bSBjbGFzcyBOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbiA6IGJvb2wgeyBObywgWWVzIH07Ci1lbnVtIGNsYXNzIExhc3ROYXZpZ2F0aW9uV2Fz
QXBwQm91bmQgOiBib29sIHsgTm8sIFllcyB9OwotCi11c2luZyBDb250ZXh0RG9tYWluID0gV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW47Ci11c2luZyBSZXF1ZXN0RG9tYWluID0gV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW47Ci0KLSNpZiBQTEFURk9STShDT0NPQSkKLXN0cnVjdCBBcHBCb3Vu
ZE5hdmlnYXRpb25UZXN0aW5nRGF0YSB7Ci0KLSAgICB2b2lkIHNldERpZFBlcmZvcm1Tb2Z0VXBk
YXRlKCkKLSAgICB7Ci0gICAgICAgIGRpZFBlcmZvcm1Tb2Z0VXBkYXRlID0gdHJ1ZTsKLSAgICB9
Ci0gICAgCi0gICAgdm9pZCBjbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGFUZXN0aW5nKCkKLSAg
ICB7Ci0gICAgICAgIGhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcgPSBmYWxzZTsKLSAg
ICAgICAgaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZyA9IGZhbHNlOwotICAgICAg
ICBkaWRQZXJmb3JtU29mdFVwZGF0ZSA9IGZhbHNlOwotICAgICAgICBjb250ZXh0RGF0YS5jbGVh
cigpOwotICAgIH0KLQotICAgIHZvaWQgdXBkYXRlQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0Rh
dGEoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiYmIGNvbnRleHREb21haW4pCi0gICAgewotICAgICAgICByZXF1ZXN0Lmlz
QXBwQm91bmQoKSA/IGhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcgPSB0cnVlIDogaGFz
TG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZyA9IHRydWU7Ci0gICAgICAgIGNvbnRleHRE
YXRhLmFkZChXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbihyZXF1ZXN0LnVybCgpKSwgY29udGV4
dERvbWFpbik7Ci0gICAgfQotCi0gICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAotICAgIHsKLSAgICAgICAgZW5jb2RlciA8PCBoYXNMb2FkZWRBcHBCb3VuZFJlcXVl
c3RUZXN0aW5nOwotICAgICAgICBlbmNvZGVyIDw8IGhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVz
dFRlc3Rpbmc7Ci0gICAgICAgIGVuY29kZXIgPDwgZGlkUGVyZm9ybVNvZnRVcGRhdGU7Ci0gICAg
ICAgIGVuY29kZXIgPDwgY29udGV4dERhdGE7Ci0gICAgfQotCi0gICAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8QXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGE+IGRlY29kZShJUEM6OkRlY29kZXIm
IGRlY29kZXIpCi0gICAgewotICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGhhc0xvYWRlZEFw
cEJvdW5kUmVxdWVzdFRlc3Rpbmc7Ci0gICAgICAgIGRlY29kZXIgPj4gaGFzTG9hZGVkQXBwQm91
bmRSZXF1ZXN0VGVzdGluZzsKLSAgICAgICAgaWYgKCFoYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RU
ZXN0aW5nKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGQ6
Om9wdGlvbmFsPGJvb2w+IGhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3Rpbmc7Ci0gICAg
ICAgIGRlY29kZXIgPj4gaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZzsKLSAgICAg
ICAgaWYgKCFoYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nKQotICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAgICAgCi0gICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9v
bD4gZGlkUGVyZm9ybVNvZnRVcGRhdGU7Ci0gICAgICAgIGRlY29kZXIgPj4gZGlkUGVyZm9ybVNv
ZnRVcGRhdGU7Ci0gICAgICAgIGlmICghZGlkUGVyZm9ybVNvZnRVcGRhdGUpCi0gICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHN0ZDo6b3B0aW9uYWw8SGFzaE1hcDxS
ZXF1ZXN0RG9tYWluLCBDb250ZXh0RG9tYWluPj4gY29udGV4dERhdGE7Ci0gICAgICAgIGRlY29k
ZXIgPj4gY29udGV4dERhdGE7Ci0gICAgICAgIGlmICghY29udGV4dERhdGEpCi0gICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHJldHVybiB7eyAqaGFzTG9hZGVkQXBw
Qm91bmRSZXF1ZXN0VGVzdGluZywgKmhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3Rpbmcs
ICpkaWRQZXJmb3JtU29mdFVwZGF0ZSwgV1RGTW92ZSgqY29udGV4dERhdGEpIH19OwotICAgIH0K
LQotICAgIGJvb2wgaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZyB7IGZhbHNlIH07Ci0g
ICAgYm9vbCBoYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nIHsgZmFsc2UgfTsKLSAg
ICBib29sIGRpZFBlcmZvcm1Tb2Z0VXBkYXRlIHsgZmFsc2UgfTsKLSAgICBIYXNoTWFwPFJlcXVl
c3REb21haW4sIENvbnRleHREb21haW4+IGNvbnRleHREYXRhOwotfTsKLSNlbmRpZgogCiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5j
cHAKaW5kZXggNmEyNTIzMWY2ZmMyNThjMWUzOGFhMDVjZTEyYWE0NDRmZDcwOTZjOC4uMmJhZWYw
NmNhY2FiM2U1MTVlNzA0NmQ1MTdhNTM1NmJmMDNjM2MzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTE3Myw3ICsxNzMs
NyBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIGVuY29k
ZXIgPDwgbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWluczsKICNlbmRpZgotICAgIGVu
Y29kZXIgPDwgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDsKKyAgICBlbmNvZGVyIDw8IGxhc3RO
YXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOwogICAgIGVuY29kZXIgPDwgc2hvdWxkUmVsYXhUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmc7CiAgICAgZW5jb2RlciA8PCBjYW5Vc2VDcmVkZW50aWFsU3Rv
cmFnZTsKIApAQCAtNTgxLDcgKzU4MSw3IEBAIHN0ZDo6b3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmxpbWl0c05hdmlnYXRpb25zVG9BcHBCb3Vu
ZERvbWFpbnMpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2VuZGlmCi0gICAgaWYg
KCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpKQor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5sYXN0TmF2aWdhdGlvbldhc0FwcElu
aXRpYXRlZCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5o
CmluZGV4IGM1OGU2YzIyMGIxYTAzNzY2YWFlNTQ4NDcyZjE2Yjc4M2UwNDAyYWMuLjY1MTc4OTIy
MTJjMjM5OWUxYWFjMzZlYTZiNmZjM2IxNTJmZDU4OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTI0Miw3ICsyNDIsNyBAQCBz
dHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAjaWYgRU5BQkxFKEFQUF9CT1VORF9E
T01BSU5TKQogICAgIGJvb2wgbGltaXRzTmF2aWdhdGlvbnNUb0FwcEJvdW5kRG9tYWlucyB7IGZh
bHNlIH07CiAjZW5kaWYKLSAgICBib29sIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgeyBmYWxz
ZSB9OworICAgIGJvb2wgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgeyB0cnVlIH07CiAg
ICAgYm9vbCBjYW5Vc2VDcmVkZW50aWFsU3RvcmFnZSB7IHRydWUgfTsKIAogICAgIFdlYkNvcmU6
OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHNob3VsZFJlbGF4VGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nIHsgV2ViQ29yZTo6U2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmc6Ok5vIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbQppbmRleCAzZTc2YjZhMDUxOTg1NTU2NDEyMWY3NDk3YzcxMWVhODgxY2JlNzliLi4x
NDE4ZTNkNTM5MjU3MjY2NWJhM2FhOTcxOTZlNGNjODk0MDY1MzU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTI0MTEsMzIgKzI0MTEs
MTkgQEAgc3RhdGljIHZvaWQgY29udmVydEFuZEFkZEhpZ2hsaWdodChWZWN0b3I8UmVmPFdlYktp
dDo6U2hhcmVkTWVtb3J5Pj4mIGJ1ZmZlcnMsIE4KICAgICAgICAgX3BhZ2UtPnN3aXRjaEZyb21T
dGF0aWNGb250UmVnaXN0cnlUb1VzZXJGb250UmVnaXN0cnkoKTsKIH0KIAotLSAodm9pZClfYXBw
Qm91bmROYXZpZ2F0aW9uRGF0YUZvckRvbWFpbjooTlNTdHJpbmcgKilkb21haW4gY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKE5TU3RyaW5nICogY29udGV4dCkpY29tcGxldGlvbkhhbmRsZXIK
Ky0gKHZvaWQpX2RpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0Oih2b2lkICheKShCT09MIHJlc3Vs
dCkpY29tcGxldGlvbkhhbmRsZXIKIHsKICAgICBUSFJPV19JRl9TVVNQRU5ERUQ7Ci0gICAgX3Bh
Z2UtPmFwcEJvdW5kTmF2aWdhdGlvbkRhdGEoW3JlZ2lzdHJhYmxlRG9tYWluID0gV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KGRvbWFpbiksIGNvbXBs
ZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8mJiBh
cHBCb3VuZERhdGEpIG11dGFibGUgewotICAgICAgICBpZiAoIWFwcEJvdW5kRGF0YS5jb250ZXh0
RGF0YS5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbikpIHsKLSAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKG5pbCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihhcHBCb3VuZERhdGEuY29udGV4dERhdGEuZ2V0KHJlZ2lzdHJh
YmxlRG9tYWluKS5zdHJpbmcoKSk7Ci0gICAgfSk7Ci19Ci0KLS0gKHZvaWQpX2RpZExvYWRBcHBC
b3VuZFJlcXVlc3Q6KHZvaWQgKF4pKEJPT0wgcmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcgotewot
ICAgIFRIUk9XX0lGX1NVU1BFTkRFRDsKLSAgICBfcGFnZS0+YXBwQm91bmROYXZpZ2F0aW9uRGF0
YShbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAo
YXV0byYmIGFwcEJvdW5kRGF0YSkgbXV0YWJsZSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KGFwcEJvdW5kRGF0YS5oYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nKTsKKyAgICBfcGFn
ZS0+YXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VC
bG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChhdXRvJiYgYXBwUHJpdmFjeVJlcG9ydFRlc3Rp
bmdEYXRhKSBtdXRhYmxlIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXBwUHJpdmFjeVJl
cG9ydFRlc3RpbmdEYXRhLmhhc0xvYWRlZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nKTsKICAg
ICB9KTsKIH0KIAotLSAodm9pZClfZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdDoodm9pZCAoXiko
Qk9PTCByZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyCistICh2b2lkKV9kaWRMb2FkTm9uQXBwSW5p
dGlhdGVkUmVxdWVzdDoodm9pZCAoXikoQk9PTCByZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyCiB7
CiAgICAgVEhST1dfSUZfU1VTUEVOREVEOwotICAgIF9wYWdlLT5hcHBCb3VuZE5hdmlnYXRpb25E
YXRhKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcild
IChhdXRvJiYgYXBwQm91bmREYXRhKSBtdXRhYmxlIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoYXBwQm91bmREYXRhLmhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3RpbmcpOworICAg
IF9wYWdlLT5hcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoW2NvbXBsZXRpb25IYW5kbGVyID0g
bWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8mJiBhcHBQcml2YWN5UmVwb3J0
VGVzdGluZ0RhdGEpIG11dGFibGUgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhcHBQcml2
YWN5UmVwb3J0VGVzdGluZ0RhdGEuaGFzTG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3Rp
bmcpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCAyZTNlOTQ2ZmY3MDQ2MGYyNjYzYTY4MTUy
ODVkNjc5YTUxYzZiOTM1Li5lMmVlYzY2YzJhYWY3YWRkMjMwOTJiY2JlNDY2ZDVjODFlMWExYjk4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdQcml2YXRlLmgKQEAgLTQwNiw5ICs0MDYsOCBAQCBmb3IgdGhpcyBwcm9wZXJ0eS4KICovCiAt
ICh2b2lkKV9zd2l0Y2hGcm9tU3RhdGljRm9udFJlZ2lzdHJ5VG9Vc2VyRm9udFJlZ2lzdHJ5IFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCkpOwogCi0tICh2b2lkKV9hcHBCb3VuZE5hdmlnYXRp
b25EYXRhRm9yRG9tYWluOihOU1N0cmluZyAqKWRvbWFpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikoTlNTdHJpbmcgKiBjb250ZXh0KSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxB
QkxFKG1hY29zKDEyLjApLCBpb3MoMTUuMCkpOwotLSAodm9pZClfZGlkTG9hZEFwcEJvdW5kUmVx
dWVzdDoodm9pZCAoXikoQk9PTCByZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyOwotLSAodm9pZClf
ZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdDoodm9pZCAoXikoQk9PTCByZXN1bHQpKWNvbXBsZXRp
b25IYW5kbGVyOworLSAodm9pZClfZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3Q6KHZvaWQgKF4p
KEJPT0wgcmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpX2RpZExvYWROb25BcHBJ
bml0aWF0ZWRSZXF1ZXN0Oih2b2lkICheKShCT09MIHJlc3VsdCkpY29tcGxldGlvbkhhbmRsZXI7
CiAKIC0gKHZvaWQpX3N1c3BlbmRQYWdlOih2b2lkICheKShCT09MKSljb21wbGV0aW9uSGFuZGxl
ciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEyLjApLCBpb3MoMTUuMCkpOwogLSAodm9pZClfcmVz
dW1lUGFnZToodm9pZCAoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcygxMi4wKSwgaW9zKDE1LjApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmgKaW5k
ZXggYzMwNWZhZjQzZDQ1MTc0NGQyMjcxNTczZWZlOTk4NDQxNTY0ZWJhOC4uNDA4NzQ4NDY2ZWVi
YzlkMjYyOThjNWU0MjI4YWY0Y2Q4YmU2NzJmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5n
LmgKQEAgLTM0LDkgKzM0LDkgQEAgdHlwZWRlZiBlbnVtIHsKICAgICBXS1dlYlZpZXdBdWRpb1Jv
dXRpbmdBcmJpdHJhdGlvblN0YXR1c0FjdGl2ZSwKIH0gV0tXZWJWaWV3QXVkaW9Sb3V0aW5nQXJi
aXRyYXRpb25TdGF0dXM7CiAKLXN0cnVjdCBXS0FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRh
IHsKLSAgICBCT09MIGhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3Rpbmc7Ci0gICAgQk9PTCBo
YXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nOworc3RydWN0IFdLQXBwUHJpdmFjeVJl
cG9ydFRlc3RpbmdEYXRhIHsKKyAgICBCT09MIGhhc0xvYWRlZEFwcEluaXRpYXRlZFJlcXVlc3RU
ZXN0aW5nOworICAgIEJPT0wgaGFzTG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3Rpbmc7
CiAgICAgQk9PTCBkaWRQZXJmb3JtU29mdFVwZGF0ZTsKIH07CiAKQEAgLTEwMiw5ICsxMDIsOSBA
QCBzdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSB7CiAtICh2b2lkKV9zZXRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0
aW5nOihOU1VSTCAqKXVybCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKSh2b2lkKSljb21wbGV0
aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEyLjApLCBpb3MoMTUuMCkpOwogLSAo
dm9pZClfc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRva2VuU2lnbmF0dXJl
VVJMRm9yVGVzdGluZzooTlNVUkwgKil1cmwgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikodm9p
ZCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMi4wKSwgaW9zKDE1
LjApKTsKIAotLSAodm9pZClfbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDoodm9pZCheKShCT09M
KSljb21wbGV0aW9uSGFuZGxlcjsKLS0gKHZvaWQpX2FwcEJvdW5kTmF2aWdhdGlvbkRhdGE6KHZv
aWQoXikoc3RydWN0IFdLQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEgZGF0YSkpY29tcGxl
dGlvbkhhbmRsZXI7Ci0tICh2b2lkKV9jbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGE6KHZvaWQo
Xikodm9pZCkpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKV9sYXN0TmF2aWdhdGlvbldhc0Fw
cEluaXRpYXRlZDoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpX2Fw
cFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YToodm9pZCheKShzdHJ1Y3QgV0tBcHBQcml2YWN5UmVw
b3J0VGVzdGluZ0RhdGEgZGF0YSkpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKV9jbGVhckFw
cFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YToodm9pZCheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxl
cjsKIAogLSAodm9pZClfY3JlYXRlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JGb3JUZXN0aW5nOihp
ZCA8X1dLTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3I+KXByaXZhdGVDb29yZGluYXRvciBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1Rlc3RpbmcubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVzdGluZy5tbQpp
bmRleCBhNGJjNjFhMmJmNzdlMWYxZGQ4ZGFkYWQ2NDJmZTBiZDM4MTFhY2NkLi5jYmFkMGVkODgz
YWJkNmE1OGFlZDJiZThjOTRjZTBlYmIxNzUxZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVzdGluZy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3VGVzdGluZy5tbQpAQCAtMzY1LDIzICsz
NjUsMjMgQEAKICNlbmRpZgogfQogCi0tICh2b2lkKV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5k
Oih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCistICh2b2lkKV9sYXN0TmF2aWdhdGlv
bldhc0FwcEluaXRpYXRlZDoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgogewotICAg
IF9wYWdlLT5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKFtjb21wbGV0aW9uSGFuZGxlciA9IG1h
a2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChib29sIGlzQXBwQm91bmQpIHsKLSAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoaXNBcHBCb3VuZCk7CisgICAgX3BhZ2UtPmxhc3ROYXZpZ2F0
aW9uV2FzQXBwSW5pdGlhdGVkKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21w
bGV0aW9uSGFuZGxlcildIChib29sIGlzQXBwSW5pdGlhdGVkKSB7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKGlzQXBwSW5pdGlhdGVkKTsKICAgICB9KTsKIH0KIAotLSAodm9pZClfYXBwQm91
bmROYXZpZ2F0aW9uRGF0YToodm9pZCheKShzdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0
aW5nRGF0YSBkYXRhKSljb21wbGV0aW9uSGFuZGxlcgorLSAodm9pZClfYXBwUHJpdmFjeVJlcG9y
dFRlc3RpbmdEYXRhOih2b2lkKF4pKHN0cnVjdCBXS0FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0
YSBkYXRhKSljb21wbGV0aW9uSGFuZGxlcgogewotICAgIF9wYWdlLT5hcHBCb3VuZE5hdmlnYXRp
b25EYXRhKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxl
cildIChhdXRvJiYgYXBwQm91bmREYXRhKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsg
YXBwQm91bmREYXRhLmhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcsIGFwcEJvdW5kRGF0
YS5oYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nLCBhcHBCb3VuZERhdGEuZGlkUGVy
Zm9ybVNvZnRVcGRhdGUgfSk7CisgICAgX3BhZ2UtPmFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0
YShbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAo
YXV0byYmIGFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSkgeworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcih7IGFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YS5oYXNMb2FkZWRBcHBJbml0aWF0
ZWRSZXF1ZXN0VGVzdGluZywgYXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhLmhhc0xvYWRlZE5v
bkFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nLCBhcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEu
ZGlkUGVyZm9ybVNvZnRVcGRhdGUgfSk7CiAgICAgfSk7CiB9CiAKLS0gKHZvaWQpX2NsZWFyQXBw
Qm91bmROYXZpZ2F0aW9uRGF0YToodm9pZCheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgorLSAo
dm9pZClfY2xlYXJBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGE6KHZvaWQoXikodm9pZCkpY29t
cGxldGlvbkhhbmRsZXIKIHsKLSAgICBfcGFnZS0+Y2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRh
KFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIHsK
KyAgICBfcGFnZS0+Y2xlYXJBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoW2NvbXBsZXRpb25I
YW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gewogICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcigpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQppbmRleCBmOWIyNzY1Mzk4ZjdmZmYzMTQ3
YzViZDBhOWMyZGQyNGFlZWRhMTJiLi5hZWY1Y2ZjZmIzYjlhOWY0MDQzYThkNTc4ODg2MjBhOTI3
MTZjMGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdl
UHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdl
UHJveHlDb2NvYS5tbQpAQCAtNjUwLDIwICs2NTAsMTggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJl
cXVlc3RBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm8oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b28KICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RBY3Rp
dmVOb3dQbGF5aW5nU2Vzc2lvbkluZm8oKSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCi12b2lk
IFdlYlBhZ2VQcm94eTo6c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZChSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QpCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBJ
bml0aWF0ZWQoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogI2lmIEVOQUJMRShBUFBfUFJJ
VkFDWV9SRVBPUlQpCi0gICAgYXV0byAqbnNSZXF1ZXN0ID0gcmVxdWVzdC5uc1VSTFJlcXVlc3Qo
V2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90VXBkYXRlSFRUUEJvZHkpOwotICAg
IEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgcmVxdWVzdC5zZXRJc0Fw
cEJvdW5kKCFuc1JlcXVlc3QuX2lzTm9uQXBwSW5pdGlhdGVkKTsKLSAgICBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19FTkQKKyAgICBhdXRvIGlzQXBwSW5pdGlhdGVkID0gcmVxdWVzdC5u
c1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90VXBkYXRlSFRU
UEJvZHkpLmF0dHJpYnV0aW9uID09IE5TVVJMUmVxdWVzdEF0dHJpYnV0aW9uRGV2ZWxvcGVyOwor
ICAgIHJlcXVlc3Quc2V0SXNBcHBJbml0aWF0ZWQoaXNBcHBJbml0aWF0ZWQpOworICAgIG1fbGFz
dE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgPSBpc0FwcEluaXRpYXRlZDsKICNlbmRpZgotICAg
IG1fbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCA9IHJlcXVlc3QuaXNBcHBCb3VuZCgpOwogfQog
Ci12b2lkIFdlYlBhZ2VQcm94eTo6bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZChDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYWdlUHJv
eHk6Omxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpXZWJQYWdlOjpMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKCksIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBh
Z2U6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKCksIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdyYW50QWNjZXNzVG9Bc3NldFNlcnZp
Y2VzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDcyYzRhOWY5YTdlNWQyZGI1OWQzODU3MzJjOTI1NmY5
OTU2YmQ0NDMuLjk1OGMxYjgzYjY4ZjU0YjY1MzBiOWEyOGQ4OTEyYTVjZDhiMTEwYjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcApAQCAtMTUwMiwxMSArMTUwMiwxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OmdldExvY2FsU3RvcmFnZURldGFpbHMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21w
bAogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkdldExv
Y2FsU3RvcmFnZU9yaWdpbkRldGFpbHMoc2Vzc2lvbklEKSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnByZWNvbm5lY3RUbyhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5
SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgdXNlckFnZW50LCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBz
dG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgTGFzdE5hdmlnYXRpb25XYXNB
cHBCb3VuZCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKQordm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdl
SUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgV2ViQ29yZTo6U3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHN0ZDo6b3B0aW9u
YWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4sIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5p
dGlhdGVkKQogewogICAgIGlmICghdXJsLmlzVmFsaWQoKSB8fCAhdXJsLnByb3RvY29sSXNJbkhU
VFBGYW1pbHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQ
cm9jZXNzOjpQcmVjb25uZWN0VG8oc2Vzc2lvbklELCB3ZWJQYWdlUHJveHlJRCwgd2ViUGFnZUlE
LCB1cmwsIHVzZXJBZ2VudCwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4sIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpLCAwKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UHJlY29ubmVjdFRvKHNlc3Npb25JRCwgd2ViUGFn
ZVByb3h5SUQsIHdlYlBhZ2VJRCwgdXJsLCB1c2VyQWdlbnQsIHN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5LCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBsYXN0TmF2aWdhdGlvbldhc0FwcElu
aXRpYXRlZCksIDApOwogfQogCiBzdGF0aWMgYm9vbCBhbnlQcm9jZXNzUG9vbEhhc0ZvcmVncm91
bmRXZWJQcm9jZXNzZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA4Y2ZlNTNiYjQ5NGY4Y2NjZjRhNzM2NGU4
OWU0ZmVhMDNjYzA1MTAzLi5iMDFhYWYyNzM1NDEwNmYyOWE0ZGRiOTVkMGMxMGRjMjQ5YTM3NWZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1
ZGUgIkFwcFByaXZhY3lSZXBvcnQuaCIKICNpbmNsdWRlICJBdXhpbGlhcnlQcm9jZXNzUHJveHku
aCIKICNpbmNsdWRlICJDYWxsYmFja0lELmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94
eU1lc3NhZ2VzUmVwbGllcy5oIgpAQCAtMTI4LDcgKzEyOSw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgZ2V0TG9jYWxTdG9yYWdlRGV0YWlscyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxz
PiYmKT4mJik7CiAKLSAgICB2b2lkIHByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCwgV2ViUGFn
ZVByb3h5SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFVSTCYsIGNv
bnN0IFN0cmluZyYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzdGQ6Om9wdGlv
bmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgTGFzdE5hdmlnYXRpb25XYXNBcHBCb3Vu
ZCk7CisgICAgdm9pZCBwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBVUkwmLCBjb25zdCBTdHJp
bmcmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc3RkOjpvcHRpb25hbDxOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKTsK
IAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgdm9pZCBjbGVhclBy
ZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAppbmRleCBhNzE4ODViYTQ2YjZkOGMzNzBjZjIzZDQyYjgxZTZlZThmY2Zl
ZDY5Li41MmJhYTNlNWE1YTNkMjJkYjkzOWVlNmZkNGE1YjQ5ODhkMDZmNjNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEzMzIsNyArMTMzMiw3IEBAIFJl
ZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgU2hvCiAgICAgICAgIG5hdmlnYXRpb24tPnNldENsaWVudE5hdmln
YXRpb25BY3Rpdml0eShwcm9jZXNzKCkudGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5KCJD
bGllbnQgbmF2aWdhdGlvbiJfcykpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgc2V0TGFz
dE5hdmlnYXRpb25XYXNBcHBCb3VuZChyZXF1ZXN0KTsKKyAgICBzZXRMYXN0TmF2aWdhdGlvbldh
c0FwcEluaXRpYXRlZChyZXF1ZXN0KTsKICNlbmRpZgogCiAgICAgbG9hZFJlcXVlc3RXaXRoTmF2
aWdhdGlvblNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwgbmF2aWdhdGlv
bi5nZXQoKSwgV1RGTW92ZShyZXF1ZXN0KSwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwg
dXNlckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8sIGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4oKSk7CkBAIC00NTI3LDcgKzQ1MjcsOCBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6cHJlY29ubmVjdFRvKGNvbnN0IFVSTCYgdXJsKQogICAgICAgICByZXR1cm47CiAKICAgICBh
dXRvIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID0gbV9jYW5Vc2VDcmVkZW50aWFsU3RvcmFnZSA/
IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2UgOiBXZWJDb3JlOjpTdG9yZWRD
cmVkZW50aWFsc1BvbGljeTo6RG9Ob3RVc2U7Ci0gICAgd2Vic2l0ZURhdGFTdG9yZSgpLm5ldHdv
cmtQcm9jZXNzKCkucHJlY29ubmVjdFRvKHNlc3Npb25JRCgpLCBpZGVudGlmaWVyKCksIHdlYlBh
Z2VJRCgpLCB1cmwsIHVzZXJBZ2VudCgpLCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgPyBM
YXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOjpZZXMgOiBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5k
OjpObyk7CisKKyAgICB3ZWJzaXRlRGF0YVN0b3JlKCkubmV0d29ya1Byb2Nlc3MoKS5wcmVjb25u
ZWN0VG8oc2Vzc2lvbklEKCksIGlkZW50aWZpZXIoKSwgd2ViUGFnZUlEKCksIHVybCwgdXNlckFn
ZW50KCksIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluKCksIG1fbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgPyBMYXN0TmF2aWdhdGlvbldh
c0FwcEluaXRpYXRlZDo6WWVzIDogTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6Ok5vKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldENhblVzZUNyZWRlbnRpYWxTdG9yYWdlKGJvb2wg
Y2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UpCkBAIC04MTkxLDcgKzgxOTIsNyBAQCBXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKFdlYlByb2Nl
c3NQcm94eSYgcHJvYwogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBwYXJhbWV0
ZXJzLmxpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMgPSBtX2xpbWl0c05hdmlnYXRp
b25zVG9BcHBCb3VuZERvbWFpbnM7CiAjZW5kaWYKLSAgICBwYXJhbWV0ZXJzLmxhc3ROYXZpZ2F0
aW9uV2FzQXBwQm91bmQgPSBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7CisgICAgcGFyYW1l
dGVycy5sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCA9IG1fbGFzdE5hdmlnYXRpb25XYXNB
cHBJbml0aWF0ZWQ7CiAgICAgcGFyYW1ldGVycy5zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVC
bG9ja2luZyA9IG1fY29uZmlndXJhdGlvbi0+c2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmcoKTsKICAgICBwYXJhbWV0ZXJzLmNhblVzZUNyZWRlbnRpYWxTdG9yYWdlID0gbV9jYW5V
c2VDcmVkZW50aWFsU3RvcmFnZTsKIApAQCAtMTA3MDMsMTQgKzEwNzA0LDE0IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpjcmVhdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcihSZWY8TWVkaWFTZXNzaW9u
Q29vcmRpbmF0b3JQcm94CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotdm9pZCBXZWJQ
YWdlUHJveHk6OmFwcEJvdW5kTmF2aWdhdGlvbkRhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBXZWJQYWdlUHJveHk6OmFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewotICAgIHdlYnNpdGVEYXRhU3RvcmUoKS5uZXR3b3JrUHJvY2Vz
cygpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkFwcEJvdW5k
TmF2aWdhdGlvbkRhdGEobV93ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB3ZWJzaXRlRGF0YVN0b3JlKCkubmV0d29ya1Byb2Nl
c3MoKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpBcHBQcml2
YWN5UmVwb3J0VGVzdGluZ0RhdGEobV93ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSksIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmNsZWFy
QXBwQm91bmROYXZpZ2F0aW9uRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJBcHBQcml2YWN5UmVwb3J0VGVz
dGluZ0RhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewotICAgIHdlYnNpdGVEYXRhU3RvcmUoKS5uZXR3b3JrUHJvY2VzcygpLnNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkNsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0
YShtX3dlYnNpdGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpKSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworICAgIHdlYnNpdGVEYXRhU3RvcmUoKS5uZXR3b3JrUHJvY2VzcygpLnNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkNsZWFyQXBwUHJpdmFjeVJlcG9y
dFRlc3RpbmdEYXRhKG1fd2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCkpLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAppbmRleCBlYzVkMGNmMDVlM2I0MzU0N2FmNTkzZGQ2NTM3YzAzNzgxN2U2YTll
Li42MmU5MjdjYzQ3NjE4Yjc2MmFkMmQzNWI1MDg3ZGE2MTlhMDk4NTYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMzczLDcgKzM3Myw3IEBAIGNsYXNzIFdlYldo
ZWVsRXZlbnQ7CiBjbGFzcyBXZWJXaGVlbEV2ZW50Q29hbGVzY2VyOwogY2xhc3MgV2Vic2l0ZURh
dGFTdG9yZTsKIAotc3RydWN0IEFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhOworc3RydWN0
IEFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YTsKIHN0cnVjdCBEYXRhRGV0ZWN0aW9uUmVzdWx0
Owogc3RydWN0IERvY3VtZW50RWRpdGluZ0NvbnRleHQ7CiBzdHJ1Y3QgRG9jdW1lbnRFZGl0aW5n
Q29udGV4dFJlcXVlc3Q7CkBAIC0xOTI2LDEwICsxOTI2LDEwIEBAIHB1YmxpYzoKICNlbmRpZgog
CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBzZXRMYXN0TmF2aWdhdGlvbldhc0FwcEJv
dW5kKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwotICAgIHZvaWQgbGFzdE5hdmlnYXRpb25X
YXNBcHBCb3VuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGFw
cEJvdW5kTmF2aWdhdGlvbkRhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBBcHBCb3Vu
ZE5hdmlnYXRpb25UZXN0aW5nRGF0YSYpPiYmKTsKLSAgICB2b2lkIGNsZWFyQXBwQm91bmROYXZp
Z2F0aW9uRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc2V0TGFz
dE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7Cisg
ICAgdm9pZCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZChDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSYpPiYm
KTsKKyAgICB2b2lkIGNsZWFyQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICBOU0RpY3Rpb25hcnkgKmNvbnRlbnRzT2ZVc2VySW50
ZXJmYWNlSXRlbShOU1N0cmluZyAqdXNlckludGVyZmFjZUl0ZW0pOwogCkBAIC0zMDM2LDcgKzMw
MzYsNyBAQCBwcml2YXRlOgogCiAgICAgc2l6ZV90IG1fc3VzcGVuZE1lZGlhUGxheWJhY2tDb3Vu
dGVyIHsgMCB9OwogCi0gICAgYm9vbCBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgeyBmYWxz
ZSB9OworICAgIGJvb2wgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCB7IHRydWUgfTsK
ICAgICBib29sIG1faXNSdW5uaW5nTW9kYWxKYXZhU2NyaXB0RGlhbG9nIHsgZmFsc2UgfTsKICAg
ICBib29sIG1faXNTdXNwZW5kZWQgeyBmYWxzZSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjMDkzNWM1MjRkY2I0ODVjYWI1YzQw
MDA4YzhkZWNiMzMzYmM0NWE4Li5mMDczM2M3ZGExMGQxNmU1MDIwY2IyNWZkNGFiNDI3NzhlY2Iw
N2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTk4Nyw2ICs5ODcsNyBAQAogCQk0NkRGMDYzQzFGMzkwNUY4MDAxOTgwQkIgLyogTmV0
d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NkRGMDYzQTFGMzkwNUU1MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQ
cmVmbGlnaHRDaGVja2VyLmggKi87IH07CiAJCTQ2RjM4RThDMjQxNkU2NzMwMDU5Mzc1QSAvKiBS
dW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDZGMzhFOEIyNDE2RTY2RDAwNTkzNzVBIC8qIFJ1bm5pbmdCb2FyZFNl
cnZpY2VzU1BJLmggKi87IH07CiAJCTQ2RjlCMjYzMjM1MjZFRjMwMDZGRTVGQSAvKiBXZWJCYWNr
Rm9yd2FyZENhY2hlRW50cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2RjlCMjYyMjM1MjZFRDAwMDZGRTVGQSAvKiBXZWJCYWNrRm9yd2FyZENhY2hl
RW50cnkuaCAqLzsgfTsKKwkJNDkzMTAyQkQyNjgzRjNEMDAwMkJCODg1IC8qIEFwcFByaXZhY3lS
ZXBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5
MzEwMkJDMjY4M0YzQTUwMDJCQjg4NSAvKiBBcHBQcml2YWN5UmVwb3J0LmggKi87IH07CiAJCTQ5
NzNERjQ4MjQyMjk0MUYwMEU0QzI2QSAvKiBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk3M0RGNDcyNDIy
OTQxRjAwRTRDMjZBIC8qIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmggKi87IH07CiAJCTQ5
OTAwMDIxMjREMjQyOUMwMDA0OUNCNCAvKiBXS1JlbmRlckxheWVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTkwMDAxRjI0RDI0MjlDMDAwNDlDQjQg
LyogV0tSZW5kZXJMYXllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTQ5OTAwMDI0MjREMjRDMjkwMDA0OUNCNCAvKiBXS1JlbmRlck9iamVjdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk5MDAwMjMy
NEQyNEMxQzAwMDQ5Q0I0IC8qIFdLUmVuZGVyT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM5MzQsNiArMzkzNSw3IEBACiAJCTQ2REYw
NjNBMUYzOTA1RTUwMDE5ODBCQiAvKiBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RjM4RThCMjQxNkU2NkQwMDU5Mzc1
QSAvKiBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NkY5QjI2MjIzNTI2RUQwMDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVu
dHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkJhY2tGb3J3YXJkQ2Fj
aGVFbnRyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0OTMxMDJCQzI2ODNGM0E1
MDAyQkI4ODUgLyogQXBwUHJpdmFjeVJlcG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcHBQcml2YWN5
UmVwb3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5NzNERjQ3MjQyMjk0MUYw
MEU0QzI2QSAvKiBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0OTkwMDAxRTI0RDI0MjlDMDAwNDlDQjQgLyogV0tSZW5kZXJMYXllci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXS1JlbmRlckxheWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDk5MDAwMUYyNEQyNDI5QzAwMDQ5Q0I0IC8qIFdLUmVuZGVyTGF5ZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0tSZW5kZXJMYXllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjc1
Miw2ICs2NzU0LDcgQEAKIAkJCQkyNjMxNzJDRTE4QjQ2OTQ5MDA2NUI5QzMgLyogTmF0aXZlV2Vi
VG91Y2hFdmVudC5oICovLAogCQkJCURGNThDNjMxMTM3MUFDNTgwMEY5QTM3QyAvKiBOYXRpdmVX
ZWJXaGVlbEV2ZW50LmggKi8sCiAJCQkJNDk3M0RGNDcyNDIyOTQxRjAwRTRDMjZBIC8qIE5hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluLmggKi8sCisJCQkJNDkzMTAyQkMyNjgzRjNBNTAwMkJCODg1
IC8qIEFwcFByaXZhY3lSZXBvcnQuaCAqLywKIAkJCQkxQURDQjg2ODE4OTgzMUIzMDAyMkVFNUEg
LyogTmF2aWdhdGlvbkFjdGlvbkRhdGEuY3BwICovLAogCQkJCTFBRENCODY5MTg5ODMxQjMwMDIy
RUU1QSAvKiBOYXZpZ2F0aW9uQWN0aW9uRGF0YS5oICovLAogCQkJCTVDRDc0OEI1MjNDOEVCMTkw
MDkyQTlCNSAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllci5oICovLApAQCAtMTIxMjgs
NiArMTIxMzEsNyBAQAogCQkJCTUxNzk1NTZBMTYyODc2RjMwMEZBNDNCNiAvKiBOZXR3b3JrUHJv
Y2Vzcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE3Q0YwRTQxNjNBNDg2QzAwQzI5NTBFIC8qIE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzE0
MjZFRDFDMjNGODA5MDBENDExODMgLyogTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aCBpbiBIZWFkZXJzICovLAorCQkJCTQ5MzEwMkJEMjY4M0YzRDAwMDJCQjg4NSAvKiBBcHBQcml2
YWN5UmVwb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTYzMTk5NTE2Mjg5QTYzMDBFMjJGMDAg
LyogTmV0d29ya1Byb2Nlc3NNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE0QTk1NEEx
NkUwMTZBNDAwNjhERTgyIC8qIE5ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MTc5NTU2RTE2Mjg3N0IzMDBGQTQzQjYgLyogTmV0d29ya1Byb2Nl
c3NQcm94eS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKaW5kZXggYzQyZDJjMDBmNzk4MmVh
M2ZlMTk0MDFjZDA3NmMyNGEwYjY0OWViZi4uNjBlNmEyYjQ4MGZjYWQxMTBmM2RhZTg0YjA1NDk1
NjUzNTc2ZjdlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViTG9hZGVyU3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgV2ViTG9h
ZGVyU3RyYXRlZ3k6OmxvYWRSZXNvdXJjZShGcmFtZSYgZnJhbWUsIENhY2hlZFJlc291cmNlJiBy
ZXNvdXJjZSwgUmVzCiAgICAgaWYgKHJlc291cmNlLnR5cGUoKSAhPSBDYWNoZWRSZXNvdXJjZTo6
VHlwZTo6TWFpblJlc291cmNlIHx8ICFmcmFtZS5pc01haW5GcmFtZSgpKSB7CiAgICAgICAgIGlm
IChhdXRvKiBkb2N1bWVudCA9IGZyYW1lLm1haW5GcmFtZSgpLmRvY3VtZW50KCkpIHsKICAgICAg
ICAgICAgIGlmIChkb2N1bWVudCAmJiBkb2N1bWVudC0+bG9hZGVyKCkpCi0gICAgICAgICAgICAg
ICAgcmVxdWVzdC5zZXRJc0FwcEJvdW5kKGRvY3VtZW50LT5sb2FkZXIoKS0+bGFzdE5hdmlnYXRp
b25XYXNBcHBCb3VuZCgpKTsKKyAgICAgICAgICAgICAgICByZXF1ZXN0LnNldElzQXBwSW5pdGlh
dGVkKGRvY3VtZW50LT5sb2FkZXIoKS0+bGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQoKSk7
CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTc2Nyw3ICs3NjcsNyBAQCB2b2lkIFdlYkxvYWRlclN0
cmF0ZWd5OjpwcmVjb25uZWN0VG8oV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
V2ViUGFnZQogICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IHdlYlBhZ2UubWFpbkZyYW1lKCktPmRv
Y3VtZW50KCkpIHsKICAgICAgICAgcmVxdWVzdC5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhkb2N1
bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSk7CiAgICAgICAgIGlmIChhdXRvKiBsb2FkZXIg
PSBkb2N1bWVudC0+bG9hZGVyKCkpCi0gICAgICAgICAgICByZXF1ZXN0LnNldElzQXBwQm91bmQo
bG9hZGVyLT5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKCkpOworICAgICAgICAgICAgcmVxdWVz
dC5zZXRJc0FwcEluaXRpYXRlZChsb2FkZXItPmxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVk
KCkpOwogICAgIH0KIAogICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHByZWNvbm5lY3Rpb25J
ZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCmluZGV4IDYzODQx
MTdjZDVlMTU1MTZkMDk4Y2VhYjA2ZDNjNTQ5YjdkMWM4ZGIuLmY5OTNlZmMxZWEzYTcyOTUwZjI3
YjNjMDljMTYyNWQxMWEyYjY0ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5j
cHAKQEAgLTEzNSwxMCArMTM1LDEwIEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b246OnVwZGF0ZVByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTCiAgICAgc2V0
U2hvdWxkVXNlU2hvcnRUaW1lb3V0KHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJl
bmNlc0tleTo6c2hvdWxkVXNlU2VydmljZVdvcmtlclNob3J0VGltZW91dEtleSgpKSk7CiB9CiAK
LXZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnVwZGF0ZUFwcEJvdW5kVmFsdWUo
U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6
Okxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCkKK3Zv
aWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnVwZGF0ZUFwcEluaXRpYXRlZFZhbHVl
KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3Jl
OjpMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRp
YXRlZCkKIHsKICAgICBpZiAoYXV0byogc2VydmljZVdvcmtlclRocmVhZFByb3h5ID0gU1dDb250
ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlclRocmVhZFByb3h5KHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKSkKLSAgICAgICAgc2VydmljZVdvcmtlclRocmVhZFByb3h5LT5zZXRM
YXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgPT0gV2Vi
Q29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDo6WWVzKTsKKyAgICAgICAgc2VydmljZVdv
cmtlclRocmVhZFByb3h5LT5zZXRMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZChsYXN0TmF2
aWdhdGlvbldhc0FwcEluaXRpYXRlZCA9PSBXZWJDb3JlOjpMYXN0TmF2aWdhdGlvbldhc0FwcElu
aXRpYXRlZDo6WWVzKTsKIH0KIAogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
aW5zdGFsbFNlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgZGF0YSwgU3Ry
aW5nJiYgdXNlckFnZW50KQpAQCAtMjM0LDcgKzIzNCw3IEBAIHZvaWQgV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb246OnN0YXJ0RmV0Y2goU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBz
ZXJ2CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHktPnNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQocmVxdWVzdC5pc0FwcEJvdW5kKCkpOwor
ICAgIHNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS0+c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0
aWF0ZWQocmVxdWVzdC5pc0FwcEluaXRpYXRlZCgpKTsKIAogICAgIGlmICghaXNWYWxpZEZldGNo
KHJlcXVlc3QsIG9wdGlvbnMsIHNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS0+c2NyaXB0VVJMKCks
IHJlZmVycmVyKSkgewogICAgICAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWROb3RIYW5kbGUgeyB9LCBmZXRj
aElkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKaW5kZXggMzMxNDMz
OWUwOTNiYzY1YzcyZGJhNTJjZWFkYWFjNzQ1MmYxY2RjOS4uZTAyMDU3ZTgxMWMxZTg2ZDJmNWVl
ZDI3NGUzMjBhY2Q1YmZmNzMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBA
IC04Niw3ICs4Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXJ2aWNlV29ya2VyU3RhcnRlZChz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4sIFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIGRvZXNIYW5kbGVGZXRjaCkgZmlu
YWw7CiAgICAgdm9pZCBzZXJ2aWNlV29ya2VyRmFpbGVkVG9TdGFydChzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4sIFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGV4Y2VwdGlvbk1lc3NhZ2UpIGZpbmFsOwog
ICAgIHZvaWQgaW5zdGFsbFNlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRl
eHREYXRhJiYsIFN0cmluZyYmIHVzZXJBZ2VudCk7Ci0gICAgdm9pZCB1cGRhdGVBcHBCb3VuZFZh
bHVlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpMYXN0TmF2aWdh
dGlvbldhc0FwcEJvdW5kKTsKKyAgICB2b2lkIHVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpMYXN0TmF2aWdhdGlvbldhc0Fw
cEluaXRpYXRlZCk7CiAgICAgdm9pZCBzdGFydEZldGNoKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3Jl
OjpGZXRjaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpG
ZXRjaE9wdGlvbnMmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmLCBTdHJpbmcmJiByZWZlcnJl
cik7CiAgICAgdm9pZCBjYW5jZWxGZXRjaChXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJ
ZGVudGlmaWVyKTsKICAgICB2b2lkIGNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoV2Vi
Q29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IGY2NjRhNGU5MTIyYzE1MWUy
YzU2NzU1MDkwNWVjOTUwMjU3N2JiMWEuLjNlMjBkZTM1NGJjNDNkODRhYjQ5MDQyMzQ1Yzk3ZWI5
MmVlZjNmNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluCkBAIC0yNCw3ICsyNCw3IEBACiAKIG1lc3NhZ2VzIC0+IFdlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uIE5vdFJlZkNvdW50ZWQgewogICAgIEluc3RhbGxTZXJ2aWNlV29ya2VyKHN0
cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgY29udGV4dERhdGEsIFN0cmlu
ZyB1c2VyQWdlbnQpCi0gICAgVXBkYXRlQXBwQm91bmRWYWx1ZShXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgZW51bTpib29sIFdlYkNvcmU6
Okxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCkKKyAg
ICBVcGRhdGVBcHBJbml0aWF0ZWRWYWx1ZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgZW51bTpib29sIFdlYkNvcmU6Okxhc3ROYXZpZ2F0
aW9uV2FzQXBwSW5pdGlhdGVkIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKQogICAgIFN0
YXJ0RmV0Y2goV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZp
ZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBzdHJ1Y3QgV2ViQ29yZTo6RmV0
Y2hPcHRpb25zIG9wdGlvbnMsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgcmVxdWVzdEJvZHksIFN0
cmluZyByZWZlcnJlcikKICAgICBDYW5jZWxGZXRjaChXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJ
ZGVudGlmaWVyIGZldGNoSWRlbnRpZmllcikKICAgICBDb250aW51ZURpZFJlY2VpdmVGZXRjaFJl
c3BvbnNlKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggNWRhMmJiOWY0YTJkN2Q0MjNi
ZWU4NTQ0NzFmZTg1M2QzZTRhMjYxZC4uODhlYTY2MmUwNjIzZmY5ZDc5MzdkOGJhMTBlYjY1MzIz
YzNlZTNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0yNDMsMTEgKzI0
MywxMSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxTZW5kUmVxdWVz
dChEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbgogICAgIC8vIFRoZSBBUEkgY2FuIHJldHVy
biBhIGNvbXBsZXRlbHkgbmV3IHJlcXVlc3QuIFdlIHNob3VsZCBlbnN1cmUgdGhhdCBhdCBsZWFz
dCB0aGUgcmVxdWVzdGVyCiAgICAgLy8gaXMga2VwdCwgc28gdGhhdCBpZiB0aGlzIGlzIGEgbWFp
biByZXNvdXJjZSBsb2FkIGl0J3Mgc3RpbGwgY29uc2lkZXJlZCBhcyBzdWNoLgogICAgIGF1dG8g
cmVxdWVzdGVyID0gcmVxdWVzdC5yZXF1ZXN0ZXIoKTsKLSAgICBhdXRvIGFwcEJvdW5kVmFsdWUg
PSByZXF1ZXN0LmlzQXBwQm91bmQoKTsKKyAgICBhdXRvIGFwcEluaXRpYXRlZFZhbHVlID0gcmVx
dWVzdC5pc0FwcEluaXRpYXRlZCgpOwogICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlUmVzb3Vy
Y2VMb2FkQ2xpZW50KCkud2lsbFNlbmRSZXF1ZXN0Rm9yRnJhbWUoKndlYlBhZ2UsIG1fZnJhbWUs
IGlkZW50aWZpZXIsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwogICAgIGlmICghcmVxdWVz
dC5pc051bGwoKSkgewogICAgICAgICByZXF1ZXN0LnNldFJlcXVlc3RlcihyZXF1ZXN0ZXIpOwot
ICAgICAgICByZXF1ZXN0LnNldElzQXBwQm91bmQoYXBwQm91bmRWYWx1ZSk7CisgICAgICAgIHJl
cXVlc3Quc2V0SXNBcHBJbml0aWF0ZWQoYXBwSW5pdGlhdGVkVmFsdWUpOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAzN2I0
M2U5YzdjNWYyZDdjMDk3ZjM4ZDBmZDYwZjljYzhiNGU2ZDE4Li44M2JjOTc0MGQ2ZjQ3ZWUwZTYx
OTRkNGI4NjIxZTNhMWIwODc4MGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcApAQCAtNTM0LDcgKzUzNCw3IEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFn
ZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVy
cykKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgLCBtX2xpbWl0c05hdmlnYXRp
b25zVG9BcHBCb3VuZERvbWFpbnMocGFyYW1ldGVycy5saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91
bmREb21haW5zKQogI2VuZGlmCi0gICAgLCBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQocGFy
YW1ldGVycy5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKQorICAgICwgbV9sYXN0TmF2aWdhdGlv
bldhc0FwcEluaXRpYXRlZChwYXJhbWV0ZXJzLmxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVk
KQogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKICAgICAsIG1fYXBwSGlnaGxpZ2h0c1Zpc2li
bGUocGFyYW1ldGVycy5hcHBIaWdobGlnaHRzVmlzaWJsZSkKICNlbmRpZgpAQCAtMTY2NCw3ICsx
NjY0LDcgQEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybURpZFJlY2VpdmVMb2FkUGFyYW1ldGVycyhj
b25zdCBMb2FkUGFyYW1ldGVycyYgbG9hZFBhcmFtZXQKIAogdm9pZCBXZWJQYWdlOjpsb2FkUmVx
dWVzdChMb2FkUGFyYW1ldGVycyYmIGxvYWRQYXJhbWV0ZXJzKQogewotICAgIHNldExhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQobG9hZFBhcmFtZXRlcnMucmVxdWVzdC5pc0FwcEJvdW5kKCkpOwor
ICAgIHNldExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKGxvYWRQYXJhbWV0ZXJzLnJlcXVl
c3QuaXNBcHBJbml0aWF0ZWQoKSk7CiAKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAg
ICAgc2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihsb2FkUGFyYW1ldGVycy5pc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluLCAmbV9tYWluRnJhbWUuZ2V0KCkpOwpAQCAtNjYxNyw3ICs2
NjE3LDcgQEAgUmVmPERvY3VtZW50TG9hZGVyPiBXZWJQYWdlOjpjcmVhdGVEb2N1bWVudExvYWRl
cihGcmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmUKIHsKICAgICBSZWY8V2ViRG9jdW1lbnRM
b2FkZXI+IGRvY3VtZW50TG9hZGVyID0gV2ViRG9jdW1lbnRMb2FkZXI6OmNyZWF0ZShyZXF1ZXN0
LCBzdWJzdGl0dXRlRGF0YSk7CiAKLSAgICBkb2N1bWVudExvYWRlci0+c2V0TGFzdE5hdmlnYXRp
b25XYXNBcHBCb3VuZChtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOworICAgIGRvY3VtZW50
TG9hZGVyLT5zZXRMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZChtX2xhc3ROYXZpZ2F0aW9u
V2FzQXBwSW5pdGlhdGVkKTsKIAogICAgIGlmIChmcmFtZS5pc01haW5GcmFtZSgpKSB7CiAgICAg
ICAgIGlmIChtX3BlbmRpbmdOYXZpZ2F0aW9uSUQpIHsKQEAgLTc2NTQsOSArNzY1NCw5IEBAIHZv
aWQgV2ViUGFnZTo6Y29uc3VtZU5ldHdvcmtFeHRlbnNpb25TYW5kYm94RXh0ZW5zaW9ucyhjb25z
dCBTYW5kYm94RXh0ZW5zaW9uOjpICiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdlOjpsYXN0TmF2
aWdhdGlvbldhc0FwcEJvdW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2U6Omxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVk
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0g
ICAgY29tcGxldGlvbkhhbmRsZXIobWFpbkZyYW1lKCktPmRvY3VtZW50KCktPmxvYWRlcigpLT5s
YXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKCkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKG1haW5G
cmFtZSgpLT5kb2N1bWVudCgpLT5sb2FkZXIoKS0+bGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0
ZWQoKSk7CiB9CiAKICNpZiBIQVZFKFRSQU5TTEFUSU9OX1VJX1NFUlZJQ0VTKSAmJiBFTkFCTEUo
Q09OVEVYVF9NRU5VUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAppbmRleCA0NGM2YWMyOWI0OTczODEzMDc3NDVkNTlkYTNjNzFiOTQ4NjI1YWEzLi4xNjYxYjJi
MWEwMTI2MDViYTlkMTA1MjI4ZDM3Yjk0MzEzZWU0ODA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xNDQ4LDggKzE0NDgsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBpbnZhbGlkYXRlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IoKTsKICNlbmRpZgogCi0g
ICAgdm9pZCBzZXRMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKGJvb2wgd2FzQXBwQm91bmQpIHsg
bV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kID0gd2FzQXBwQm91bmQ7IH0KLSAgICB2b2lkIGxh
c3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CisgICAgdm9pZCBzZXRMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZChib29sIHdhc0FwcEJv
dW5kKSB7IG1fbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgPSB3YXNBcHBCb3VuZDsgfQor
ICAgIHZvaWQgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJik7CiAKICAgICBib29sIGlzUGFyZW50UHJvY2Vzc0FXZWJCcm93c2VyKCkg
Y29uc3Q7CiAKQEAgLTIzMjIsNyArMjMyMiw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX25hdmln
YXRpb25IYXNPY2N1cmVkIHsgZmFsc2UgfTsKICNlbmRpZgogCi0gICAgYm9vbCBtX2xhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9sYXN0TmF2aWdhdGlvbldh
c0FwcEluaXRpYXRlZCB7IHRydWUgfTsKIAogICAgIGJvb2wgbV9jYW5Vc2VDcmVkZW50aWFsU3Rv
cmFnZSB7IHRydWUgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNWJkZTNmOGRhOTFjNmM1YTY1YzZmYmE4Mzhi
MWVkNjczOGQwMjBkYi4uNTNjMTVlOWJiZjBlYWE4M2VjMjU3MGFhY2UwMmExMzNiZWMzZTAxMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCkBAIC02MzMsNyArNjMzLDcgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29t
bWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKIAog
ICAgIERpc3BhdGNoV2hlZWxFdmVudFdpdGhvdXRTY3JvbGxpbmcoV2ViS2l0OjpXZWJXaGVlbEV2
ZW50IGV2ZW50KSAtPiAoYm9vbCBoYW5kbGVkKSBBc3luYwogCi0gICAgTGFzdE5hdmlnYXRpb25X
YXNBcHBCb3VuZCgpIC0+IChib29sIHdhc0FwcEJvdW5kKSBBc3luYworICAgIExhc3ROYXZpZ2F0
aW9uV2FzQXBwSW5pdGlhdGVkKCkgLT4gKGJvb2wgd2FzQXBwQm91bmQpIEFzeW5jCiAKICNpZiBF
TkFCTEUoTUVESUFfU0VTU0lPTl9DT09SRElOQVRPUikKICAgICBDcmVhdGVNZWRpYVNlc3Npb25D
b29yZGluYXRvcihTdHJpbmcgaWRlbnRpZmllcikgLT4gKGJvb2wgc3VjY2VzcykgQXN5bmMKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlMDBkMmFi
NzA2OTMwNmE3MTEzMDZkNGYzYWQ1NTM4NzA0ZmI1MGY5Li43ODBkOTkyYTUzZTkzYmE0MWEyNDRh
ZWVmZTY3YWY0YWJlNmVjYzMzIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMjEtMDYtMjMgIEthdGUgQ2hlbmV5ICA8
a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAgQXBwIFByaXZh
Y3kgUmVwb3J0IGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNzMyNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzk2OTY4NDk+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVsZXRlIHRlc3Rpbmcg
ZnVuY3Rpb25zIHJlbGF0ZWQgdG8gYXR0cmlidXRpb24gY29udGV4dC4gTW92ZSBBcHAKKyAgICAg
ICAgUHJpdmFjeSBSZXBvcnQgdGVzdHMgaW50byB0aGVpciBvd24gZmlsZS4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9y
dC5tbTogQWRkZWQuCisgICAgICAgIChURVNUKToKKyAgICAgICAgKGNhdGNoKToKKyAgICAgICAg
KGZ1bmN0aW9uKToKKyAgICAgICAgKC1bU1dBcHBJbml0aWF0ZWRSZXF1ZXN0TWVzc2FnZUhhbmRs
ZXIgdXNlckNvbnRlbnRDb250cm9sbGVyOmRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOl0pOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydFBs
dWdJbi5tbTogUmVuYW1lZCBmcm9tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvSW5BcHBCcm93c2VyUHJpdmFjeVBsdWdJbi5tbS4KKyAgICAgICAgKC1bQXBwUHJpdmFjeVJl
cG9ydFBsdWdJbiB3ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOmZyYW1l
OndpbGxTZW5kUmVxdWVzdEZvclJlc291cmNlOnJlcXVlc3Q6cmVkaXJlY3RSZXNwb25zZTpdKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclBy
aXZhY3kubW06CisgICAgICAgICgtW1NXQXBwQm91bmRSZXF1ZXN0TWVzc2FnZUhhbmRsZXIgdXNl
ckNvbnRlbnRDb250cm9sbGVyOmRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOl0pOiBEZWxldGVkLgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvYXBwLXByaXZhY3ktcmVw
b3J0LWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV1RSOjpJ
bmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UpOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6
OlRlc3RSdW5uZXI6OmRpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0KToKKyAgICAgICAgKFdUUjo6
VGVzdFJ1bm5lcjo6ZGlkTG9hZE5vbkFwcEluaXRpYXRlZFJlcXVlc3QpOgorICAgICAgICAoV1RS
OjpUZXN0UnVubmVyOjphcHBCb3VuZFJlcXVlc3RDb250ZXh0RGF0YUZvckRvbWFpbik6IERlbGV0
ZWQuCisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OmNhbGxEaWRSZWNlaXZlQXBwQm91bmRSZXF1
ZXN0Q29udGV4dERhdGFGb3JEb21haW5DYWxsYmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6
OlRlc3RSdW5uZXI6OmRpZExvYWRBcHBCb3VuZFJlcXVlc3QpOiBEZWxldGVkLgorICAgICAgICAo
V1RSOjpUZXN0UnVubmVyOjpkaWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdU
Ujo6VGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAg
ICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3QpOgorICAg
ICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZGlkTG9hZE5vbkFwcEluaXRpYXRlZFJlcXVlc3Qp
OgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y2xlYXJBcHBQcml2YWN5UmVwb3J0VGVz
dGluZ0RhdGEpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6YXBwQm91bmRSZXF1ZXN0
Q29udGV4dERhdGFGb3JEb21haW4pOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6ZGlkTG9hZEFwcEJvdW5kUmVxdWVzdCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OlRl
c3RDb250cm9sbGVyOjpkaWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YSk6IERl
bGV0ZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAoV1RS
OjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgor
ICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2Fn
ZUZyb21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRS
ZWNlaXZlQXBwQm91bmRSZXF1ZXN0Q29udGV4dERhdGFGb3JEb21haW4pOiBEZWxldGVkLgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaDoKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW06CisgICAgICAgIChXVFI6
OlRlc3RDb250cm9sbGVyOjpkaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdCk6CisgICAgICAgIChX
VFI6OlRlc3RDb250cm9sbGVyOjpkaWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdCk6CisgICAg
ICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjbGVhckFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0
YSk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjphcHBCb3VuZFJlcXVlc3RDb250ZXh0
RGF0YUZvckRvbWFpbik6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpk
aWRMb2FkQXBwQm91bmRSZXF1ZXN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6VGVzdENvbnRy
b2xsZXI6OmRpZExvYWROb25BcHBCb3VuZFJlcXVlc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RS
OjpUZXN0Q29udHJvbGxlcjo6Y2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhKTogRGVsZXRlZC4K
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5uZXJXS1dlYlZpZXcuaDoK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5uZXJXS1dlYlZpZXcubW06
CisgICAgICAgICgtW1Rlc3RSdW5uZXJXS1dlYlZpZXcgX2RpZExvYWRBcHBJbml0aWF0ZWRSZXF1
ZXN0Ol0pOgorICAgICAgICAoLVtUZXN0UnVubmVyV0tXZWJWaWV3IF9kaWRMb2FkTm9uQXBwSW5p
dGlhdGVkUmVxdWVzdDpdKToKKyAgICAgICAgKC1bVGVzdFJ1bm5lcldLV2ViVmlldyBfYXBwQm91
bmROYXZpZ2F0aW9uRGF0YUZvckRvbWFpbjpjb21wbGV0aW9uSGFuZGxlcjpdKTogRGVsZXRlZC4K
KyAgICAgICAgKC1bVGVzdFJ1bm5lcldLV2ViVmlldyBfZGlkTG9hZEFwcEJvdW5kUmVxdWVzdDpd
KTogRGVsZXRlZC4KKyAgICAgICAgKC1bVGVzdFJ1bm5lcldLV2ViVmlldyBfZGlkTG9hZE5vbkFw
cEJvdW5kUmVxdWVzdDpdKTogRGVsZXRlZC4KKwogMjAyMS0wNi0yMyAgS2F0ZSBDaGVuZXkgIDxr
YXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBNaWdyYXRlIEFwcCBQcml2YWN5
IFJlcG9ydCBjb2RlIGZyb20gV2ViS2l0QWRkaXRpb25zCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDQ5ZTdlNGE5ZGZmYWJlNmMyYmJkZjBjOWQ2MzhkY2NiNjg4NjFmNjUuLmM1ZTIwZTMzZGYy
MjYyMmNmY2JhMDUzYmE5YmY2NWZkYjRmNTMyODAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0yOTQsNyArMjk0LDcgQEAKIAkJNDZGQUNGNzQyM0U4ODQyMzAwQTlFQkM2IC8qIGJlZm9yZXVu
bG9hZC1zbG93Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDZGQUNGNzMyM0U4ODNFRTAwQTlFQkM2IC8qIGJlZm9yZXVubG9hZC1zbG93
Lmh0bWwgKi87IH07CiAJCTQ5MDhDNzExMjYwOTRFNDEwMDBCMUIyRiAvKiBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ5MDhDNzBGMjYwOTRFMTYwMDBCMUIyRiAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5t
bSAqLzsgfTsKIAkJNDkwOUVFM0EyRDA5NDgwQzg4OTgyRDU2IC8qIE1hcmthYmxlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVDNzlGMTY4QkU0NTRF
NTc5RTQxN0IwNSAvKiBNYXJrYWJsZS5jcHAgKi87IH07Ci0JCTQ5MUFFRUY4MjY1MkUzMzUwMEQ1
MzBBOCAvKiBJbkFwcEJyb3dzZXJQcml2YWN5UGx1Z0luLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDkxQUVFRjQyNjUyREREMDAwRDUzMEE4IC8qIElu
QXBwQnJvd3NlclByaXZhY3lQbHVnSW4ubW0gKi87IH07CisJCTQ5MUFFRUY4MjY1MkUzMzUwMEQ1
MzBBOCAvKiBBcHBQcml2YWN5UmVwb3J0UGx1Z0luLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDkxQUVFRjQyNjUyREREMDAwRDUzMEE4IC8qIEFwcFBy
aXZhY3lSZXBvcnRQbHVnSW4ubW0gKi87IH07CiAJCTQ5MUYzRDUyMjYwMjdFNTMwMDBFMzFGNyAv
KiBwY21XaXRob3V0RnJhdWRQcmV2ZW50aW9uRGF0YWJhc2UuZGIgaW4gQ29weSBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDkxRjNENEYyNjAyN0NGRTAwMEUz
MUY3IC8qIHBjbVdpdGhvdXRGcmF1ZFByZXZlbnRpb25EYXRhYmFzZS5kYiAqLzsgfTsKIAkJNDkx
RjNENTMyNjAyN0U1MzAwMEUzMUY3IC8qIHBjbVdpdGhvdXRGcmF1ZFByZXZlbnRpb25EYXRhYmFz
ZS5kYi1zaG0gaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDkxRjNENTAyNjAyN0NGRTAwMEUzMUY3IC8qIHBjbVdpdGhvdXRGcmF1ZFByZXZlbnRp
b25EYXRhYmFzZS5kYi1zaG0gKi87IH07CiAJCTQ5MUYzRDU0MjYwMjdFNTMwMDBFMzFGNyAvKiBw
Y21XaXRob3V0RnJhdWRQcmV2ZW50aW9uRGF0YWJhc2UuZGItd2FsIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5MUYzRDUxMjYwMjdDRkUwMDBF
MzFGNyAvKiBwY21XaXRob3V0RnJhdWRQcmV2ZW50aW9uRGF0YWJhc2UuZGItd2FsICovOyB9OwpA
QCAtMzEyLDYgKzMxMiw3IEBACiAJCTQ5OEQwMzBBMjYzNzZCMzQwMDlDQkZBRCAvKiByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWlzc2luZ1VuaXF1ZUluZGV4LmRiIGluIENvcHkgUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OEQwMzA5MjYzNzZCMkMwMDlDQkZB
RCAvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWlzc2luZ1VuaXF1ZUluZGV4LmRiICovOyB9Owog
CQk0OTk1QTZGMDI1RTg3NzIwMDBFNUYwQTkgLyogY3NwLWRvY3VtZW50LXVyaS1yZXBvcnQuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
OTk1QTZFRjI1RTg3NkEzMDBFNUYwQTkgLyogY3NwLWRvY3VtZW50LXVyaS1yZXBvcnQuaHRtbCAq
LzsgfTsKIAkJNDlBRUVGNkQyNDA3MzU5RDAwQzg3RTRDIC8qIEluQXBwQnJvd3NlclByaXZhY3ku
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUFFRUY2
QjI0MDczNTg2MDBDODdFNEMgLyogSW5BcHBCcm93c2VyUHJpdmFjeS5tbSAqLzsgfTsKKwkJNDlF
RjZBRDUyNjc3QzBCRTAwNzk2N0RDIC8qIEFwcFByaXZhY3lSZXBvcnQubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUVGNkFENDI2NzdDMEJFMDA3OTY3
REMgLyogQXBwUHJpdmFjeVJlcG9ydC5tbSAqLzsgfTsKIAkJNEJGREZGQTcxMzE0Nzc2QzAwNjFG
MjRCIC8qIEhpdFRlc3RSZXN1bHROb2RlSGFuZGxlX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0QkZERkZBNjEzMTQ3NzZDMDA2MUYyNEIg
LyogSGl0VGVzdFJlc3VsdE5vZGVIYW5kbGVfQnVuZGxlLmNwcCAqLzsgfTsKIAkJNTEwNDc3NzIx
RDI5OERERDAwOTc0N0VCIC8qIElEQkRlbGV0ZVJlY292ZXJ5LnNxbGl0ZTMgaW4gQ29weSBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwNDc3NkYxRDI5OEQ4
NTAwOTc0N0VCIC8qIElEQkRlbGV0ZVJlY292ZXJ5LnNxbGl0ZTMgKi87IH07CiAJCTUxMDQ3Nzcz
MUQyOThEREQwMDk3NDdFQiAvKiBJREJEZWxldGVSZWNvdmVyeS5zcWxpdGUzLXNobSBpbiBDb3B5
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTA0Nzc3MDFE
Mjk4RDg1MDA5NzQ3RUIgLyogSURCRGVsZXRlUmVjb3Zlcnkuc3FsaXRlMy1zaG0gKi87IH07CkBA
IC0yMTEzLDcgKzIxMTQsNyBAQAogCQk0NkZBMkZFRDIzODQ2QzlBMDAwQ0NCMEMgLyogSFRUUEhl
YWRlck1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVFRQSGVh
ZGVyTWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZGQUNGNzMyM0U4ODNF
RTAwQTlFQkM2IC8qIGJlZm9yZXVubG9hZC1zbG93Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7
IHBhdGggPSAiYmVmb3JldW5sb2FkLXNsb3cuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ5MDhDNzBGMjYwOTRFMTYwMDBCMUIyRiAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFByaXZhdGVDbGlj
a01lYXN1cmVtZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0OTFBRUVGNDI2
NTJEREQwMDBENTMwQTggLyogSW5BcHBCcm93c2VyUHJpdmFjeVBsdWdJbi5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IEluQXBwQnJvd3NlclByaXZhY3lQbHVnSW4ubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQ5MUFFRUY0MjY1MkRERDAwMEQ1MzBBOCAvKiBBcHBQcml2YWN5UmVw
b3J0UGx1Z0luLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXBwUHJpdmFjeVJlcG9ydFBsdWdJ
bi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDkxRjNENEYyNjAyN0NGRTAwMEUz
MUY3IC8qIHBjbVdpdGhvdXRGcmF1ZFByZXZlbnRpb25EYXRhYmFzZS5kYiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGU7IHBhdGggPSBwY21XaXRo
b3V0RnJhdWRQcmV2ZW50aW9uRGF0YWJhc2UuZGI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ5MUYzRDUwMjYwMjdDRkUwMDBFMzFGNyAvKiBwY21XaXRob3V0RnJhdWRQcmV2ZW50aW9u
RGF0YWJhc2UuZGItc2htICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gZmlsZTsgcGF0aCA9ICJwY21XaXRob3V0RnJhdWRQcmV2ZW50aW9uRGF0YWJhc2Uu
ZGItc2htIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDkxRjNENTEyNjAyN0NGRTAw
MEUzMUY3IC8qIHBjbVdpdGhvdXRGcmF1ZFByZXZlbnRpb25EYXRhYmFzZS5kYi13YWwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gInBjbVdpdGhvdXRGcmF1ZFByZXZlbnRpb25EYXRhYmFzZS5kYi13
YWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjEzMiw2ICsyMTMzLDcgQEAKIAkJ
NDlBRUVGNjgyNDA3Mjc2RjAwQzg3RTRDIC8qIEluZm8ucGxpc3QgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBs
aXN0LnhtbDsgcGF0aCA9IEluZm8ucGxpc3Q7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ5QUVFRjZCMjQwNzM1ODYwMEM4N0U0QyAvKiBJbkFwcEJyb3dzZXJQcml2YWN5Lm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSW5BcHBCcm93c2VyUHJpdmFjeS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDlEN0ZCQTcyNDFGREREQTAwQUI2N0ZB
IC8qIGluLWFwcC1icm93c2VyLXByaXZhY3ktbG9jYWwtZmlsZS5odG1sICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImlu
LWFwcC1icm93c2VyLXByaXZhY3ktbG9jYWwtZmlsZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDlFRjZBRDQyNjc3QzBCRTAwNzk2N0RDIC8qIEFwcFByaXZhY3lSZXBvcnQu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBcHBQcml2YWN5UmVwb3J0Lm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0QTQxMEY0QjE5QUY3QkQ2MDAyRUJBQjUgLyogVXNlck1lZGlh
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVzZXJNZWRpYS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBNDEwRjREMTlBRjdCRUYwMDJFQkFCNSAv
KiBnZXRVc2VyTWVkaWEuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IGdldFVzZXJN
ZWRpYS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTQxMEY0RDE5QUY3QkVG
MDAyRUJBQjYgLyogb25kZXZpY2VjaGFuZ2UuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0
aCA9IG9uZGV2aWNlY2hhbmdlLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0z
Mzc5LDYgKzMzODEsOCBAQAogCQkJCTJERTcxQUZEMUQ0OUMwQkQwMDkwNDA5NCAvKiBBbmltYXRl
ZFJlc2l6ZS5tbSAqLywKIAkJCQlBMTc5OEI4MTIyNDMxRDY1MDAwNzY0QkQgLyogQXBwbGVQYXku
bW0gKi8sCiAJCQkJNjNGNjY4MjAxRjk3QzNBQTAwMzJFRTUxIC8qIEFwcGxpY2F0aW9uTWFuaWZl
c3QubW0gKi8sCisJCQkJNDlFRjZBRDQyNjc3QzBCRTAwNzk2N0RDIC8qIEFwcFByaXZhY3lSZXBv
cnQubW0gKi8sCisJCQkJNDkxQUVFRjQyNjUyREREMDAwRDUzMEE4IC8qIEFwcFByaXZhY3lSZXBv
cnRQbHVnSW4ubW0gKi8sCiAJCQkJNTFCNDBEOUQyM0FDOTYwRTAwRTA1MjQxIC8qIEFzeW5jRnVu
Y3Rpb24ubW0gKi8sCiAJCQkJODM0MTM4QzYyMDMyNjFCOTAwRjI2OTYwIC8qIEFzeW5jUG9saWN5
Rm9yTmF2aWdhdGlvblJlc3BvbnNlLm1tICovLAogCQkJCTM3NjBDNEYwMjExMjQ5QUYwMDIzM0FD
QyAvKiBBdHRyU3R5bGUubW0gKi8sCkBAIC0zNDY2LDcgKzM0NzAsNiBAQAogCQkJCTUxMTBGQ0VG
MUUwMUNCQUEwMDZGOEQwQiAvKiBJREJJbmRleFVwZ3JhZGVUb1YyLm1tICovLAogCQkJCTkzQkNC
QzgwMjNDQzZFRTgwMENBMjIyMSAvKiBJREJPYmplY3RTdG9yZUluZm9VcGdyYWRlVG9WMi5tbSAq
LywKIAkJCQk0OUFFRUY2QjI0MDczNTg2MDBDODdFNEMgLyogSW5BcHBCcm93c2VyUHJpdmFjeS5t
bSAqLywKLQkJCQk0OTFBRUVGNDI2NTJEREQwMDBENTMwQTggLyogSW5BcHBCcm93c2VyUHJpdmFj
eVBsdWdJbi5tbSAqLywKIAkJCQk1MUE1ODc4NDFEMjcyRUYzMDA0QkE5QUYgLyogSW5kZXhlZERC
RGF0YWJhc2VQcm9jZXNzS2lsbC5tbSAqLywKIAkJCQlDQUIwRkY1NDIyMzMyQzNBMDA2Q0E1QjAg
LyogSW5kZXhlZERCRmlsZU5hbWUubW0gKi8sCiAJCQkJOTM5OUJBMDEyMzcxMTBBRTAwODM5MkJG
IC8qIEluZGV4ZWREQkluUGFnZUNhY2hlLm1tICovLApAQCAtNTMzNSw2ICs1MzM4LDcgQEAKIAkJ
CQlBMTc5OEI4MjIyNDMxRDY1MDAwNzY0QkQgLyogQXBwbGVQYXkubW0gaW4gU291cmNlcyAqLywK
IAkJCQk2M0Y2NjgyMjFGOTdGN0Y5MDAzMkVFNTEgLyogQXBwbGljYXRpb25NYW5pZmVzdC5tbSBp
biBTb3VyY2VzICovLAogCQkJCTYzNTRGNEQxMUY3QzNBQjUwMEQ4OURGMyAvKiBBcHBsaWNhdGlv
bk1hbmlmZXN0UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ5RUY2QUQ1MjY3N0MwQkUw
MDc5NjdEQyAvKiBBcHBQcml2YWN5UmVwb3J0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFCNDBE
OUUyM0FDOTYyNDAwRTA1MjQxIC8qIEFzeW5jRnVuY3Rpb24ubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk4MzQxMzhDNzIwMzI2MUNBMDBGMjY5NjAgLyogQXN5bmNQb2xpY3lGb3JOYXZpZ2F0aW9uUmVz
cG9uc2UubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VCNDFBNDExQTdFMDA0NDdDNEMgLyog
QXR0cmlidXRlZFN0cmluZy5tbSBpbiBTb3VyY2VzICovLApAQCAtNTk1Nyw2ICs1OTYxLDcgQEAK
IAkJCWZpbGVzID0gKAogCQkJCTA3N0E1QUYzMjMwNjM4QTYwMEE3MTA1QyAvKiBBY2Nlc3NpYmls
aXR5VGVzdFBsdWdpbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTM3RTdERDY3MUVBMDcxRjMwMDlC
Mzk2RCAvKiBBZGRpdGlvbmFsUmVhZEFjY2Vzc0FsbG93ZWRVUkxzUGx1Z2luLm1tIGluIFNvdXJj
ZXMgKi8sCisJCQkJNDkxQUVFRjgyNjUyRTMzNTAwRDUzMEE4IC8qIEFwcFByaXZhY3lSZXBvcnRQ
bHVnSW4ubW0gaW4gU291cmNlcyAqLywKIAkJCQk3NTRDRUM4MTFGNjcyMkYyMDBEMDAzOUEgLyog
QXV0b0ZpbGxBdmFpbGFibGUubW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzQyNTk0NjIyNjZBNjhB
MDAzOUFBN0EgLyogQmFzaWNQcm9wb3NlZENyZWRlbnRpYWxQbHVnSW4ubW0gaW4gU291cmNlcyAq
LywKIAkJCQkzNzRCN0E2MTFERjM3MUNGMDBBQ0NCNkMgLyogQnVuZGxlRWRpdGluZ0RlbGVnYXRl
UGx1Z0luLm1tIGluIFNvdXJjZXMgKi8sCkBAIC01OTcyLDcgKzU5NzcsNiBAQAogCQkJCUY0QjAx
Njg0MjVBRTA4RjgwMEU0NDVDNCAvKiBEaXNhYmxlU3BlbGxjaGVja1BsdWdJbi5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxOEVFNTE5MjBBNzhDRTUwMEUwMjRGMyAvKiBEb3VibGVEZWZlcnNMb2Fk
aW5nUGx1Z2luLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNCNUIzQzIxRkZDNTVDRjAwQzI3QkIw
IC8qIEZyYW1lSGFuZGxlU2VyaWFsaXphdGlvbi5tbSBpbiBTb3VyY2VzICovLAotCQkJCTQ5MUFF
RUY4MjY1MkUzMzUwMEQ1MzBBOCAvKiBJbkFwcEJyb3dzZXJQcml2YWN5UGx1Z0luLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJRjQ2MEY2NUIyNjExMTk1ODAwNjRGMkI2IC8qIEluamVjdGVkQnVuZGxl
SGl0VGVzdFBsdWdJbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBFNDA0QThDMjE2NkRFMEEwMDgy
NzFCQSAvKiBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGVJc1NlbGVjdEVsZW1lbnQubW0gaW4gU291
cmNlcyAqLywKIAkJCQk3OUM1RDQzMTIwOUQ3NjgzMDBGMUU3Q0EgLyogSW5qZWN0ZWRCdW5kbGVO
b2RlSGFuZGxlSXNUZXh0RmllbGQubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44ZDUwMWEwNmZiN2YyZmJjYWQwNGMxYzQwMDQxNDk3ZDAyYTE4M2I4Ci0tLSAv
ZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQ
cml2YWN5UmVwb3J0Lm1tCkBAIC0wLDAgKzEsNzAyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisKKyNpbXBvcnQgIkhUVFBTZXJ2ZXIuaCIKKyNpbXBvcnQgIlBsYXRmb3JtVXRp
bGl0aWVzLmgiCisjaW1wb3J0ICJTZXJ2aWNlV29ya2VyVENQU2VydmVyLmgiCisjaW1wb3J0ICJU
ZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCisjaW1wb3J0ICJUZXN0VUlEZWxlZ2F0ZS5oIgorI2lt
cG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4
dHJhcy5oIgorI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGTlNVUkxDb25uZWN0aW9uLmg+CisjaW1wb3J0
IDxGb3VuZGF0aW9uL05TVVJMUmVxdWVzdC5oPgorI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5j
ZXNQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3Rpbmcu
aD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg+CisjaW1wb3J0
IDx3dGYvUnVuTG9vcC5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKKyNpZiBF
TkFCTEUoQVBQX1BSSVZBQ1lfUkVQT1JUKQorVEVTVChBcHBQcml2YWN5UmVwb3J0LCBEZWZhdWx0
UmVxdWVzdElzQXBwSW5pdGlhdGVkKQoreworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisKKyAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1Jl
Y3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIE5TU3RyaW5n
ICp1cmwgPSBAImh0dHBzOi8vd2Via2l0Lm9yZyI7CisKKyAgICBfX2Jsb2NrIGJvb2wgaXNEb25l
ID0gZmFsc2U7CisgICAgLy8gRG9uJ3Qgc2V0IHRoZSBhdHRyaWJ1dGlvbiBBUEkgb24gTlNVUkxS
ZXF1ZXN0IHRvIG1ha2Ugc3VyZSB0aGUgZGVmYXVsdCBpcyBhcHAgaW5pdGlhdGVkLgorICAgIFt3
ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVS
TFdpdGhTdHJpbmc6dXJsXV1dOworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hO
YXZpZ2F0aW9uXTsKKworICAgIFt3ZWJWaWV3IF9sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRl
ZDpeKEJPT0wgaXNBcHBJbml0aWF0ZWQpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoaXNBcHBJbml0
aWF0ZWQpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworCisgICAgaXNEb25lID0gZmFsc2U7CisgICAgW3dl
YlZpZXcgX2FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YTpeKHN0cnVjdCBXS0FwcFByaXZhY3lS
ZXBvcnRUZXN0aW5nRGF0YSBkYXRhKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKGRhdGEuaGFzTG9h
ZGVkQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcpOworICAgICAgICBFWFBFQ1RfRkFMU0UoZGF0
YS5oYXNMb2FkZWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZyk7CisgICAgICAgIGlzRG9u
ZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9u
ZSk7Cit9CisKK1RFU1QoQXBwUHJpdmFjeVJlcG9ydCwgQXBwSW5pdGlhdGVkUmVxdWVzdCkKK3sK
KyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0pOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKKyAgICBOU1N0cmluZyAqdXJsID0gQCJodHRwczovL3dlYmtpdC5v
cmciOworCisgICAgX19ibG9jayBib29sIGlzRG9uZSA9IGZhbHNlOworICAgIE5TTXV0YWJsZVVS
TFJlcXVlc3QgKmFwcEluaXRpYXRlZFJlcXVlc3QgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1
ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzp1cmxdXTsKKyAgICBhcHBJbml0aWF0ZWRS
ZXF1ZXN0LmF0dHJpYnV0aW9uID0gTlNVUkxSZXF1ZXN0QXR0cmlidXRpb25EZXZlbG9wZXI7CisK
KyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDphcHBJbml0aWF0ZWRSZXF1ZXN0XTsKKyAgICBbd2Vi
VmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisKKyAgICBbd2ViVmlldyBf
bGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6XihCT09MIGlzQXBwSW5pdGlhdGVkKSB7Cisg
ICAgICAgIEVYUEVDVF9UUlVFKGlzQXBwSW5pdGlhdGVkKTsKKyAgICAgICAgaXNEb25lID0gdHJ1
ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKwor
ICAgIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9hcHBQcml2YWN5UmVwb3J0VGVzdGlu
Z0RhdGE6XihzdHJ1Y3QgV0tBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEgZGF0YSkgeworICAg
ICAgICBFWFBFQ1RfVFJVRShkYXRhLmhhc0xvYWRlZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5n
KTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGRhdGEuaGFzTG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVx
dWVzdFRlc3RpbmcpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworfQorCitURVNUKEFwcFByaXZhY3lSZXBv
cnQsIE5vbkFwcEluaXRpYXRlZFJlcXVlc3QpCit7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKworICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
OkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgTlNT
dHJpbmcgKnVybCA9IEAiaHR0cHM6Ly93ZWJraXQub3JnIjsKKworICAgIF9fYmxvY2sgYm9vbCBp
c0RvbmUgPSBmYWxzZTsKKyAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpub25BcHBJbml0aWF0ZWRS
ZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdp
dGhTdHJpbmc6dXJsXV07CisgICAgbm9uQXBwSW5pdGlhdGVkUmVxdWVzdC5hdHRyaWJ1dGlvbiA9
IE5TVVJMUmVxdWVzdEF0dHJpYnV0aW9uVXNlcjsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0
Om5vbkFwcEluaXRpYXRlZFJlcXVlc3RdOworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRG
aW5pc2hOYXZpZ2F0aW9uXTsKKworICAgIFt3ZWJWaWV3IF9sYXN0TmF2aWdhdGlvbldhc0FwcElu
aXRpYXRlZDpeKEJPT0wgaXNBcHBJbml0aWF0ZWQpIHsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGlz
QXBwSW5pdGlhdGVkKTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKworICAgIGlzRG9uZSA9IGZhbHNlOwor
ICAgIFt3ZWJWaWV3IF9hcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGE6XihzdHJ1Y3QgV0tBcHBQ
cml2YWN5UmVwb3J0VGVzdGluZ0RhdGEgZGF0YSkgeworICAgICAgICBFWFBFQ1RfRkFMU0UoZGF0
YS5oYXNMb2FkZWRBcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZyk7CisgICAgICAgIEVYUEVDVF9U
UlVFKGRhdGEuaGFzTG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcpOworICAgICAg
ICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZpc0RvbmUpOworfQorCitURVNUKEFwcFByaXZhY3lSZXBvcnQsIEFwcEluaXRpYXRlZFJlcXVl
c3RXaXRoTmF2aWdhdGlvbikKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworCisgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVy
byBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBOU1N0cmluZyAqYXBw
SW5pdGlhdGVkVVJMID0gQCJodHRwczovL3d3dy53ZWJraXQub3JnIjsKKyAgICBOU1N0cmluZyAq
bm9uQXBwSW5pdGlhdGVkVVJMID0gQCJodHRwczovL3d3dy5hcHBsZS5jb20iOworCisgICAgTlNN
dXRhYmxlVVJMUmVxdWVzdCAqYXBwSW5pdGlhdGVkUmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1
ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOmFwcEluaXRpYXRlZFVSTF1d
OworICAgIGFwcEluaXRpYXRlZFJlcXVlc3QuYXR0cmlidXRpb24gPSBOU1VSTFJlcXVlc3RBdHRy
aWJ1dGlvbkRldmVsb3BlcjsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OmFwcEluaXRpYXRl
ZFJlcXVlc3RdOworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9u
XTsKKworICAgIF9fYmxvY2sgYm9vbCBpc0RvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfbGFz
dE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6XihCT09MIGlzQXBwSW5pdGlhdGVkKSB7CisgICAg
ICAgIEVYUEVDVF9UUlVFKGlzQXBwSW5pdGlhdGVkKTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsK
KyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKworICAg
IGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9hcHBQcml2YWN5UmVwb3J0VGVzdGluZ0Rh
dGE6XihzdHJ1Y3QgV0tBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEgZGF0YSkgeworICAgICAg
ICBFWFBFQ1RfVFJVRShkYXRhLmhhc0xvYWRlZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nKTsK
KyAgICAgICAgRVhQRUNUX0ZBTFNFKGRhdGEuaGFzTG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVz
dFRlc3RpbmcpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworCisgICAgaXNEb25lID0gZmFsc2U7CisgICAg
TlNNdXRhYmxlVVJMUmVxdWVzdCAqbm9uQXBwSW5pdGlhdGVkUmVxdWVzdCA9IFtOU011dGFibGVV
UkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOm5vbkFwcEluaXRp
YXRlZFVSTF1dOworICAgIG5vbkFwcEluaXRpYXRlZFJlcXVlc3QuYXR0cmlidXRpb24gPSBOU1VS
TFJlcXVlc3RBdHRyaWJ1dGlvblVzZXI7CisKKyAgICBpc0RvbmUgPSBmYWxzZTsKKyAgICBbd2Vi
VmlldyBfY2xlYXJBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGE6XnsKKyAgICAgICAgaXNEb25l
ID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25l
KTsKKworICAgIC8vIExvYWQgYSBub24gYXBwIGluaXRhdGVkIHJlcXVlc3QgYW5kIGNvbmZpcm0g
dGhlIGxvYWRzIGFyZSBtYXJrZWQgY29ycmVjdGx5LgorICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0
Om5vbkFwcEluaXRpYXRlZFJlcXVlc3RdOworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRG
aW5pc2hOYXZpZ2F0aW9uXTsKKworICAgIFt3ZWJWaWV3IF9sYXN0TmF2aWdhdGlvbldhc0FwcElu
aXRpYXRlZDpeKEJPT0wgaXNBcHBJbml0aWF0ZWQpIHsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGlz
QXBwSW5pdGlhdGVkKTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKworICAgIGlzRG9uZSA9IGZhbHNlOwor
ICAgIFt3ZWJWaWV3IF9hcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGE6XihzdHJ1Y3QgV0tBcHBQ
cml2YWN5UmVwb3J0VGVzdGluZ0RhdGEgZGF0YSkgeworICAgICAgICBFWFBFQ1RfRkFMU0UoZGF0
YS5oYXNMb2FkZWRBcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZyk7CisgICAgICAgIEVYUEVDVF9U
UlVFKGRhdGEuaGFzTG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcpOworICAgICAg
ICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZpc0RvbmUpOworfQorCitURVNUKEFwcFByaXZhY3lSZXBvcnQsIEFwcEluaXRpYXRlZFJlcXVl
c3RXaXRoU3ViRnJhbWUpCit7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBf
c2V0T3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3k6QCJzY3JpcHQtc3JjICdub25jZS1iJyJd
OworCisgICAgX19ibG9jayBib29sIGlzRG9uZSA9IGZhbHNlOworICAgIGF1dG8gd2ViVmlldyA9
IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAg
IE5TTXV0YWJsZVVSTFJlcXVlc3QgKmFwcEluaXRpYXRlZFJlcXVlc3QgPSBbTlNNdXRhYmxlVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291
cmNlOkAicGFnZS13aXRoLWNzcCIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpA
IlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOworICAgIGFwcEluaXRpYXRlZFJlcXVlc3QuYXR0
cmlidXRpb24gPSBOU1VSTFJlcXVlc3RBdHRyaWJ1dGlvbkRldmVsb3BlcjsKKworICAgIFt3ZWJW
aWV3IGxvYWRSZXF1ZXN0OmFwcEluaXRpYXRlZFJlcXVlc3RdOworCisgICAgW3dlYlZpZXcgd2Fp
dEZvck1lc3NhZ2U6QCJNYWluRnJhbWU6IEIiXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2Fn
ZTpAIlN1YmZyYW1lOiBCIl07CisKKyAgICBbd2ViVmlldyBfYXBwUHJpdmFjeVJlcG9ydFRlc3Rp
bmdEYXRhOiBeKHN0cnVjdCBXS0FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSBkYXRhKSB7Cisg
ICAgICAgIEVYUEVDVF9UUlVFKGRhdGEuaGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3Rp
bmcpOworICAgICAgICBFWFBFQ1RfRkFMU0UoZGF0YS5oYXNMb2FkZWROb25BcHBJbml0aWF0ZWRS
ZXF1ZXN0VGVzdGluZyk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Cit9CisKK1RFU1QoQXBwUHJpdmFjeVJl
cG9ydCwgTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFdpdGhTdWJGcmFtZSkKK3sKKyAgICBhdXRvIGNv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOworICAgIFtjb25maWd1cmF0aW9uIF9zZXRPdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGlj
eTpAInNjcmlwdC1zcmMgJ25vbmNlLWInIl07CisKKyAgICBfX2Jsb2NrIGJvb2wgaXNEb25lID0g
ZmFsc2U7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqbm9uQXBwSW5p
dGlhdGVkUmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNC
dW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJwYWdlLXdpdGgtY3NwIiB3aXRoRXh0
ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07
CisgICAgbm9uQXBwSW5pdGlhdGVkUmVxdWVzdC5hdHRyaWJ1dGlvbiA9IE5TVVJMUmVxdWVzdEF0
dHJpYnV0aW9uVXNlcjsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0Om5vbkFwcEluaXRpYXRl
ZFJlcXVlc3RdOworCisgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJNYWluRnJhbWU6IEIi
XTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIlN1YmZyYW1lOiBCIl07CisKKyAgICBb
d2ViVmlldyBfYXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhOiBeKHN0cnVjdCBXS0FwcFByaXZh
Y3lSZXBvcnRUZXN0aW5nRGF0YSBkYXRhKSB7CisgICAgICAgIEVYUEVDVF9GQUxTRShkYXRhLmhh
c0xvYWRlZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nKTsKKyAgICAgICAgRVhQRUNUX1RSVUUo
ZGF0YS5oYXNMb2FkZWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZyk7CisgICAgICAgIGlz
RG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlz
RG9uZSk7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyKiBtYWluU1dCeXRlcyA9IFIiU1dSRVNPVVJD
RSgKKzxzY3JpcHQ+Cit0cnkgeworICAgIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVy
KCcvc3cuanMnKS50aGVuKGZ1bmN0aW9uKHJlZykgeworICAgICAgICBpZiAocmVnLmFjdGl2ZSkg
eworICAgICAgICAgICAgYWxlcnQoJ3dvcmtlciBhbHJlYWR5IGFjdGl2ZScpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHdvcmtlciA9IHJlZy5pbnN0YWxsaW5nOwor
ICAgICAgICB3b3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignc3RhdGVjaGFuZ2UnLCBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgIGlmICh3b3JrZXIuc3RhdGUgPT0gJ2FjdGl2YXRlZCcpCisgICAgICAg
ICAgICAgICAgYWxlcnQoJ3N1Y2Nlc3NmdWxseSByZWdpc3RlcmVkJyk7CisgICAgICAgIH0pOwor
ICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGVycm9yKSB7CisgICAgICAgIGFsZXJ0KCdSZWdpc3RyYXRp
b24gZmFpbGVkIHdpdGg6ICcgKyBlcnJvcik7CisgICAgfSk7Cit9IGNhdGNoKGUpIHsKKyAgICBh
bGVydCgnRXhjZXB0aW9uOiAnICsgZSk7Cit9Cis8L3NjcmlwdD4KKylTV1JFU09VUkNFIjsKKwor
ZW51bSBjbGFzcyBSZXNwb25zZVR5cGUgeyBTeW50aGV0aWMsIEZldGNoZWQgfTsKK2VudW0gY2xh
c3MgSXNBcHBJbml0aWF0ZWQgOiBib29sIHsgTm8sIFllcyB9Oworc3RhdGljIHZvaWQgcnVuVGVz
dChSZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBlLCBJc0FwcEluaXRpYXRlZCBpc0FwcEluaXRpYXRl
ZCkKK3sKKyAgICBzdGF0aWMgYm9vbCBpc0RvbmUgPSBmYWxzZTsKKyAgICBbW1dLV2Vic2l0ZURh
dGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0
YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50
UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAg
ICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisKKyAgICBjb25z
dCBjaGFyKiBqcyA9IG51bGxwdHI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWRBbGVydCA9IG51
bGxwdHI7CisKKyAgICBzd2l0Y2ggKHJlc3BvbnNlVHlwZSkgeworICAgIGNhc2UgUmVzcG9uc2VU
eXBlOjpTeW50aGV0aWM6CisgICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0
Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgobmV3IFJlc3BvbnNlKG5ldyBCbG9i
KFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyByZXNwb25zZVwiKTwvc2NyaXB0PiddLCB7dHlw
ZTogJ3RleHQvaHRtbCd9KSkpOyB9KSI7CisgICAgICAgIGV4cGVjdGVkQWxlcnQgPSAic3ludGhl
dGljIHJlc3BvbnNlIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSZXNwb25zZVR5cGU6OkZl
dGNoZWQ6CisgICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZl
bnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgoZmV0Y2goJy9mZXRjaGVkLmh0bWwnKSkgfSk7IjsK
KyAgICAgICAgZXhwZWN0ZWRBbGVydCA9ICJmZXRjaGVkIGZyb20gc2VydmVyIjsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorCisgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewor
ICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyIsIHsg
e3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9LAor
ICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIiwgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9t
IHNlcnZlcicpPC9zY3JpcHQ+IiB9IH0sCisgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZl
cjo6UHJvdG9jb2w6Okh0dHBzKTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2Vi
VmlldyBuZXddKTsKKworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlv
bkRlbGVnYXRlIG5ld10pOworICAgIFtkZWxlZ2F0ZSBzZXREaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2U6XihXS1dlYlZpZXcgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAq
Y2hhbGxlbmdlLCB2b2lkICheY2FsbGJhY2spKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNw
b3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICopKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShj
aGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kLCBOU1VSTEF1dGhl
bnRpY2F0aW9uTWV0aG9kU2VydmVyVHJ1c3QpOworICAgICAgICBjYWxsYmFjayhOU1VSTFNlc3Np
b25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgW05TVVJMQ3JlZGVudGlhbCBjcmVkZW50aWFs
Rm9yVHJ1c3Q6Y2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJUcnVzdF0pOworICAgIH1d
OworICAgIHdlYlZpZXcuZ2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7
CisKKyAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVl
c3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6QCJodHRwczovLzEyNy4wLjAuMTolZC8iLCBzZXJ2ZXIucG9ydCgpXV1dOworICAg
IGF1dG8gYXR0cmlidXRpb25WYWx1ZSA9IGlzQXBwSW5pdGlhdGVkID09IElzQXBwSW5pdGlhdGVk
OjpZZXMgPyBOU1VSTFJlcXVlc3RBdHRyaWJ1dGlvbkRldmVsb3BlciA6IE5TVVJMUmVxdWVzdEF0
dHJpYnV0aW9uVXNlcjsKKyAgICByZXF1ZXN0LmF0dHJpYnV0aW9uID0gYXR0cmlidXRpb25WYWx1
ZTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworICAgIEVYUEVDVF9XS19T
VFJFUShbd2ViVmlldyBfdGVzdF93YWl0Rm9yQWxlcnRdLCAic3VjY2Vzc2Z1bGx5IHJlZ2lzdGVy
ZWQiKTsKKworICAgIGlmIChyZXNwb25zZVR5cGUgIT0gUmVzcG9uc2VUeXBlOjpGZXRjaGVkKQor
ICAgICAgICBzZXJ2ZXIuY2FuY2VsKCk7CisKKyAgICBib29sIGV4cGVjdGluZ0FwcEluaXRpYXRl
ZFJlcXVlc3RzID0gaXNBcHBJbml0aWF0ZWQgPT0gSXNBcHBJbml0aWF0ZWQ6OlllczsKKyAgICBp
c0RvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfYXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRh
OiBeKHN0cnVjdCBXS0FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSBkYXRhKSB7CisgICAgICAg
IEVYUEVDVF9FUShkYXRhLmhhc0xvYWRlZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nLCBleHBl
Y3RpbmdBcHBJbml0aWF0ZWRSZXF1ZXN0cyk7CisgICAgICAgIEVYUEVDVF9FUShkYXRhLmhhc0xv
YWRlZE5vbkFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nLCAhZXhwZWN0aW5nQXBwSW5pdGlhdGVk
UmVxdWVzdHMpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgaXNEb25l
ID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2NsZWFyQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRh
Ol57CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmlzRG9uZSk7CisKKyAgICBbd2ViVmlldyByZWxvYWRdOworICAgIEVYUEVD
VF9XS19TVFJFUShbd2ViVmlldyBfdGVzdF93YWl0Rm9yQWxlcnRdLCBleHBlY3RlZEFsZXJ0KTsK
KworICAgIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9hcHBQcml2YWN5UmVwb3J0VGVz
dGluZ0RhdGE6IF4oc3RydWN0IFdLQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhIGRhdGEpIHsK
KyAgICAgICAgaWYgKHJlc3BvbnNlVHlwZSA9PSBSZXNwb25zZVR5cGU6OlN5bnRoZXRpYykgewor
ICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGRhdGEuaGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVz
dFRlc3RpbmcpOworICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGRhdGEuaGFzTG9hZGVkTm9uQXBw
SW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
RVhQRUNUX0VRKGRhdGEuaGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcsIGV4cGVj
dGluZ0FwcEluaXRpYXRlZFJlcXVlc3RzKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShkYXRhLmhh
c0xvYWRlZE5vbkFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nLCAhZXhwZWN0aW5nQXBwSW5pdGlh
dGVkUmVxdWVzdHMpOworICAgICAgICB9CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07
CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Cit9CisKK1RFU1QoQXBw
UHJpdmFjeVJlcG9ydCwgTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFdpdGhTZXJ2aWNlV29ya2VyKQor
eworICAgIHJ1blRlc3QoUmVzcG9uc2VUeXBlOjpTeW50aGV0aWMsIElzQXBwSW5pdGlhdGVkOjpO
byk7CisgICAgcnVuVGVzdChSZXNwb25zZVR5cGU6OkZldGNoZWQsIElzQXBwSW5pdGlhdGVkOjpO
byk7Cit9CisKK1RFU1QoQXBwUHJpdmFjeVJlcG9ydCwgQXBwSW5pdGlhdGVkUmVxdWVzdFdpdGhT
ZXJ2aWNlV29ya2VyKQoreworICAgIHJ1blRlc3QoUmVzcG9uc2VUeXBlOjpTeW50aGV0aWMsIElz
QXBwSW5pdGlhdGVkOjpZZXMpOworICAgIHJ1blRlc3QoUmVzcG9uc2VUeXBlOjpGZXRjaGVkLCBJ
c0FwcEluaXRpYXRlZDo6WWVzKTsKK30KKworVEVTVChBcHBQcml2YWN5UmVwb3J0LCBNdWx0aXBs
ZVdlYlZpZXdzV2l0aFNoYXJlZFNlcnZpY2VXb3JrZXIpCit7CisgICAgc3RhdGljIGJvb2wgaXNE
b25lID0gZmFsc2U7CisKKyAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3Jl
XSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlw
ZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6
XigpIHsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmlzRG9uZSk7CisKKyAgICBjb25zdCBjaGFyKiBqcyA9ICJzZWxmLmFkZEV2
ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNo
KCcvZmV0Y2hlZC5odG1sJykpIH0pIjsKKyAgICBjb25zdCBjaGFyKiBleHBlY3RlZEFsZXJ0ID0g
ImZldGNoZWQgZnJvbSBzZXJ2ZXIiOworCisgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBz
ZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgIHsgIi9z
dy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwg
anMgfSB9LAorICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIiwgeyAiPHNjcmlwdD5hbGVydCgnZmV0
Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+IiB9IH0sCisgICAgfSwgVGVzdFdlYktpdEFQSTo6
SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKKworICAgIGF1dG8gd2ViVmlldzEgPSBhZG9w
dE5TKFtXS1dlYlZpZXcgbmV3XSk7CisgICAgYXV0byB3ZWJWaWV3MiA9IGFkb3B0TlMoW1dLV2Vi
VmlldyBuZXddKTsKKworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlv
bkRlbGVnYXRlIG5ld10pOworICAgIFtkZWxlZ2F0ZSBzZXREaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2U6XihXS1dlYlZpZXcgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAq
Y2hhbGxlbmdlLCB2b2lkICheY2FsbGJhY2spKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNw
b3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICopKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShj
aGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kLCBOU1VSTEF1dGhl
bnRpY2F0aW9uTWV0aG9kU2VydmVyVHJ1c3QpOworICAgICAgICBjYWxsYmFjayhOU1VSTFNlc3Np
b25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgW05TVVJMQ3JlZGVudGlhbCBjcmVkZW50aWFs
Rm9yVHJ1c3Q6Y2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJUcnVzdF0pOworICAgIH1d
OworICAgIHdlYlZpZXcxLmdldCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgp
OworICAgIHdlYlZpZXcyLmdldCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgp
OworCisgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqYXBwSW5pdGlhdGVkUmVxdWVzdCA9IFtOU011
dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyLnBv
cnQoKV1dXTsKKyAgICBhcHBJbml0aWF0ZWRSZXF1ZXN0LmF0dHJpYnV0aW9uID0gTlNVUkxSZXF1
ZXN0QXR0cmlidXRpb25EZXZlbG9wZXI7CisgICAgW3dlYlZpZXcxIGxvYWRSZXF1ZXN0OmFwcElu
aXRpYXRlZFJlcXVlc3RdOworICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldzEgX3Rlc3Rfd2Fp
dEZvckFsZXJ0XSwgInN1Y2Nlc3NmdWxseSByZWdpc3RlcmVkIik7CisKKyAgICBbd2ViVmlldzEg
cmVsb2FkXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcxIF90ZXN0X3dhaXRGb3JBbGVy
dF0sIGV4cGVjdGVkQWxlcnQpOworCisgICAgaXNEb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcx
IF9hcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGE6IF4oc3RydWN0IFdLQXBwUHJpdmFjeVJlcG9y
dFRlc3RpbmdEYXRhIGRhdGEpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoZGF0YS5oYXNMb2FkZWRB
cHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZyk7CisgICAgICAgIEVYUEVDVF9GQUxTRShkYXRhLmhh
c0xvYWRlZE5vbkFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nKTsKKyAgICAgICAgaXNEb25lID0g
dHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsK
KworICAgIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3MSBfY2xlYXJBcHBQcml2YWN5UmVw
b3J0VGVzdGluZ0RhdGE6XnsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKworICAgIGlzRG9uZSA9IGZhbHNl
OworICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5vbkFwcEluaXRpYXRlZFJlcXVlc3QgPSBbTlNN
dXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNT
dHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlci5w
b3J0KCldXV07CisgICAgbm9uQXBwSW5pdGlhdGVkUmVxdWVzdC5hdHRyaWJ1dGlvbiA9IE5TVVJM
UmVxdWVzdEF0dHJpYnV0aW9uVXNlcjsKKyAgICBbd2ViVmlldzIgbG9hZFJlcXVlc3Q6bm9uQXBw
SW5pdGlhdGVkUmVxdWVzdF07CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3MiBfdGVzdF93
YWl0Rm9yQWxlcnRdLCAiZmV0Y2hlZCBmcm9tIHNlcnZlciIpOworCisgICAgW3dlYlZpZXcyIHJl
bG9hZF07CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3MiBfdGVzdF93YWl0Rm9yQWxlcnRd
LCBleHBlY3RlZEFsZXJ0KTsKKworICAgIFt3ZWJWaWV3MiBfYXBwUHJpdmFjeVJlcG9ydFRlc3Rp
bmdEYXRhOiBeKHN0cnVjdCBXS0FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSBkYXRhKSB7Cisg
ICAgICAgIEVYUEVDVF9GQUxTRShkYXRhLmhhc0xvYWRlZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0
aW5nKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoZGF0YS5oYXNMb2FkZWROb25BcHBJbml0aWF0ZWRS
ZXF1ZXN0VGVzdGluZyk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworfQorCitzdGF0aWMgdm9pZCBzb2Z0VXBk
YXRlVGVzdChJc0FwcEluaXRpYXRlZCBpc0FwcEluaXRpYXRlZCkKK3sKKyAgICBzdGF0aWMgYm9v
bCBpc0RvbmUgPSBmYWxzZTsKKyAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0
b3JlXSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRh
VHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRs
ZXI6XigpIHsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhb
VGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBuZXddKTsKKyAgICBbZGVsZWdhdGUgc2V0RGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOl4oV0tXZWJWaWV3ICosIE5TVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwgdm9pZCAoXmNhbGxiYWNrKShOU1VSTFNlc3Npb25BdXRo
Q2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqKSkgeworICAgICAgICBFWFBF
Q1RfV0tfU1RSRVEoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlvbk1ldGhv
ZCwgTlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZFNlcnZlclRydXN0KTsKKyAgICAgICAgY2FsbGJh
Y2soTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWwsIFtOU1VSTENyZWRlbnRp
YWwgY3JlZGVudGlhbEZvclRydXN0OmNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uuc2VydmVyVHJ1
c3RdKTsKKyAgICB9XTsKKworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dl
YlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byB3ZWJWaWV3MSA9IGFk
b3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4
MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgYXV0byB3
ZWJWaWV3MiA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7
CisKKyAgICB3ZWJWaWV3MS5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQo
KTsKKyAgICB3ZWJWaWV3Mi5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQo
KTsKKworICAgIHVpbnQxNl90IHNlcnZlclBvcnQ7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGpz
ID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVz
cG9uZFdpdGgobmV3IFJlc3BvbnNlKG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRp
YyByZXNwb25zZVwiKTwvc2NyaXB0PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9KSI7CisK
KyAgICB7CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMSh7CisgICAg
ICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgICAgICB7ICIvc3cuanMi
LCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0g
fSwKKyAgICAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBz
LCBudWxscHRyLCB0ZXN0SWRlbnRpdHkoKSk7CisgICAgICAgIHNlcnZlclBvcnQgPSBzZXJ2ZXIx
LnBvcnQoKTsKKworICAgICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBzZXJ2ZXIxLnJlcXVl
c3QoKTsKKyAgICAgICAgaWYgKGlzQXBwSW5pdGlhdGVkID09IElzQXBwSW5pdGlhdGVkOjpObykg
eworICAgICAgICAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqbm9uQXBwSW5pdGlhdGVkUmVxdWVz
dCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwg
c2VydmVyMS5wb3J0KCldXV07CisgICAgICAgICAgICBub25BcHBJbml0aWF0ZWRSZXF1ZXN0LmF0
dHJpYnV0aW9uID0gTlNVUkxSZXF1ZXN0QXR0cmlidXRpb25EZXZlbG9wZXI7CisgICAgICAgICAg
ICByZXF1ZXN0ID0gbm9uQXBwSW5pdGlhdGVkUmVxdWVzdDsKKyAgICAgICAgfQorCisgICAgICAg
IFt3ZWJWaWV3MSBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVR
KFt3ZWJWaWV3MSBfdGVzdF93YWl0Rm9yQWxlcnRdLCAic3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyZWQi
KTsKKworICAgICAgICBzZXJ2ZXIxLmNhbmNlbCgpOworICAgIH0KKworICAgIHsKKyAgICAgICAg
VGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIyKHsKKyAgICAgICAgICAgIHsgIi8iLCB7
IG1haW5TV0J5dGVzIH0gfSwKKyAgICAgICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQt
VHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9CisgICAgICAgIH0sIFRl
c3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywgbnVsbHB0ciwgdGVzdElk
ZW50aXR5MigpLCBzZXJ2ZXJQb3J0KTsKKworICAgICAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpy
ZXF1ZXN0MiA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxX
aXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6
JWQvIiwgc2VydmVyMi5wb3J0KCldXV07CisgICAgICAgIGF1dG8gYXR0cmlidXRpb25WYWx1ZSA9
IGlzQXBwSW5pdGlhdGVkID09IElzQXBwSW5pdGlhdGVkOjpZZXMgPyBOU1VSTFJlcXVlc3RBdHRy
aWJ1dGlvbkRldmVsb3BlciA6IE5TVVJMUmVxdWVzdEF0dHJpYnV0aW9uVXNlcjsKKyAgICAgICAg
cmVxdWVzdDIuYXR0cmlidXRpb24gPSBhdHRyaWJ1dGlvblZhbHVlOworCisgICAgICAgIGlzRG9u
ZSA9IGZhbHNlOworICAgICAgICBbd2ViVmlldzEgX2NsZWFyQXBwUHJpdmFjeVJlcG9ydFRlc3Rp
bmdEYXRhOl57CisgICAgICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgICAgICB9XTsKKworICAg
ICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisKKyAgICAgICAgW3dlYlZp
ZXcyIGxvYWRSZXF1ZXN0OnJlcXVlc3QyXTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJW
aWV3MiBfdGVzdF93YWl0Rm9yQWxlcnRdLCAic3ludGhldGljIHJlc3BvbnNlIik7CisgICAgfQor
CisgICAgaXNEb25lID0gZmFsc2U7CisgICAgYm9vbCBleHBlY3RpbmdBcHBJbml0aWF0ZWRSZXF1
ZXN0cyA9IGlzQXBwSW5pdGlhdGVkID09IElzQXBwSW5pdGlhdGVkOjpZZXMgPyB0cnVlIDogZmFs
c2U7CisgICAgd2hpbGUgKCFpc0RvbmUpIHsKKyAgICAgICAgW3dlYlZpZXcyIF9hcHBQcml2YWN5
UmVwb3J0VGVzdGluZ0RhdGE6IF4oc3RydWN0IFdLQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRh
IGRhdGEpIHsKKyAgICAgICAgICAgIGlmICghZGF0YS5kaWRQZXJmb3JtU29mdFVwZGF0ZSkKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIEVYUEVDVF9FUShkYXRhLmhhc0xv
YWRlZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nLCBleHBlY3RpbmdBcHBJbml0aWF0ZWRSZXF1
ZXN0cyk7CisgICAgICAgICAgICBFWFBFQ1RfRVEoZGF0YS5oYXNMb2FkZWROb25BcHBJbml0aWF0
ZWRSZXF1ZXN0VGVzdGluZywgIWV4cGVjdGluZ0FwcEluaXRpYXRlZFJlcXVlc3RzKTsKKyAgICAg
ICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgICAgIH1dOworICAgICAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpzcGluUnVuTG9vcCgxKTsKKyAgICB9Cit9CisKK1RFU1QoQXBwUHJpdmFjeVJlcG9y
dCwgQXBwSW5pdGlhdGVkUmVxdWVzdFdpdGhTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZSkKK3sKKyAg
ICBzb2Z0VXBkYXRlVGVzdChJc0FwcEluaXRpYXRlZDo6WWVzKTsKK30KKworVEVTVChBcHBQcml2
YWN5UmVwb3J0LCBOb25BcHBJbml0aWF0ZWRSZXF1ZXN0V2l0aFNlcnZpY2VXb3JrZXJTb2Z0VXBk
YXRlKQoreworICAgIHNvZnRVcGRhdGVUZXN0KElzQXBwSW5pdGlhdGVkOjpObyk7Cit9CisKK3N0
YXRpYyB2b2lkIHJ1bldlYlByb2Nlc3NQbHVnSW5UZXN0KElzQXBwSW5pdGlhdGVkIGlzQXBwSW5p
dGlhdGVkKQoreworICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5D
bGFzc05hbWU6QCJBcHBQcml2YWN5UmVwb3J0UGx1Z0luIl07CisgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgw
LCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisKKyAgICBOU1N0
cmluZyAqdXJsID0gQCJodHRwczovL3dlYmtpdC5vcmciOworCisgICAgX19ibG9jayBib29sIGlz
RG9uZSA9IGZhbHNlOworICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNNdXRh
YmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzp1cmxdXTsK
KyAgICBhdXRvIGF0dHJpYnV0aW9uVmFsdWUgPSBpc0FwcEluaXRpYXRlZCA9PSBJc0FwcEluaXRp
YXRlZDo6WWVzID8gTlNVUkxSZXF1ZXN0QXR0cmlidXRpb25EZXZlbG9wZXIgOiBOU1VSTFJlcXVl
c3RBdHRyaWJ1dGlvblVzZXI7CisgICAgcmVxdWVzdC5hdHRyaWJ1dGlvbiA9IGF0dHJpYnV0aW9u
VmFsdWU7CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKyAgICBbd2ViVmll
dyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisKKyAgICBpc0RvbmUgPSBmYWxz
ZTsKKyAgICBib29sIGV4cGVjdGluZ0FwcEluaXRpYXRlZFJlcXVlc3RzID0gaXNBcHBJbml0aWF0
ZWQgPT0gSXNBcHBJbml0aWF0ZWQ6OlllcyA/IHRydWUgOiBmYWxzZTsKKyAgICBbd2ViVmlldyBf
YXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhOl4oc3RydWN0IFdLQXBwUHJpdmFjeVJlcG9ydFRl
c3RpbmdEYXRhIGRhdGEpIHsKKyAgICAgICAgRVhQRUNUX0VRKGRhdGEuaGFzTG9hZGVkQXBwSW5p
dGlhdGVkUmVxdWVzdFRlc3RpbmcsIGV4cGVjdGluZ0FwcEluaXRpYXRlZFJlcXVlc3RzKTsKKyAg
ICAgICAgRVhQRUNUX0VRKGRhdGEuaGFzTG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3Rp
bmcsICFleHBlY3RpbmdBcHBJbml0aWF0ZWRSZXF1ZXN0cyk7CisgICAgICAgIGlzRG9uZSA9IHRy
dWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Cit9
CisKK1RFU1QoQXBwUHJpdmFjeVJlcG9ydCwgV2ViUHJvY2Vzc1BsdWdpblRlc3RBcHBJbml0aWF0
ZWQpCit7CisgICAgcnVuV2ViUHJvY2Vzc1BsdWdJblRlc3QoSXNBcHBJbml0aWF0ZWQ6Olllcyk7
Cit9CisKK1RFU1QoQXBwUHJpdmFjeVJlcG9ydCwgV2ViUHJvY2Vzc1BsdWdpblRlc3ROb25BcHBJ
bml0aWF0ZWQpCit7CisgICAgcnVuV2ViUHJvY2Vzc1BsdWdJblRlc3QoSXNBcHBJbml0aWF0ZWQ6
Ok5vKTsKK30KKworI2lmIFdLX0hBVkVfQ19TUEkKKworc3RhdGljIGNvbnN0IGNoYXIqIG1haW5T
V0J5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAorPHNjcmlwdD4KKworZnVuY3Rpb24g
bG9nKG1zZykKK3sKKyAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5zdy5wb3N0TWVz
c2FnZShtc2cpOworfQorCituYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5hZGRFdmVudExpc3RlbmVy
KCJtZXNzYWdlIiwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBsb2coZXZlbnQuZGF0YSk7Cit9KTsK
KwordHJ5IHsKKyAgICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJyku
dGhlbihmdW5jdGlvbihyZWcpIHsKKyAgICAgICAgaWYgKHJlZy5hY3RpdmUpIHsKKyAgICAgICAg
ICAgIHdvcmtlciA9IHJlZy5hY3RpdmU7CisgICAgICAgICAgICB3b3JrZXIucG9zdE1lc3NhZ2Uo
IlNFQ09ORCIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHdvcmtl
ciA9IHJlZy5pbnN0YWxsaW5nOworICAgICAgICB3b3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignc3Rh
dGVjaGFuZ2UnLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGlmICh3b3JrZXIuc3RhdGUgPT0g
J2FjdGl2YXRlZCcpCisgICAgICAgICAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKCJGSVJTVCIp
OworICAgICAgICB9KTsKKyAgICB9KS5jYXRjaChmdW5jdGlvbihlcnJvcikgeworICAgICAgICBs
b2coJ1JlZ2lzdHJhdGlvbiBmYWlsZWQgd2l0aDogJyArIGVycm9yKTsKKyAgICB9KTsKK30gY2F0
Y2goZSkgeworICAgIGxvZygnRXhjZXB0aW9uOiAnICsgZSk7Cit9Cis8L3NjcmlwdD4KKylTV1JF
U09VUkNFIjsKKworc3RhdGljIGNvbnN0IGNoYXIqIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlID0g
UiJTV1JFU09VUkNFKAorc2VsZi5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgYXN5bmMgKGV2
ZW50KSA9PiB7CisgICAgaWYgKCFzZWxmLmludGVybmFscykgeworICAgICAgICBldmVudC5zb3Vy
Y2UucG9zdE1lc3NhZ2UoJ05vIGludGVybmFscycpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgcXVlcnlBcHBQcml2YWN5UmVwb3J0VmFsdWUoZXZlbnQsIGZhbHNlKTsKK30pOworCith
c3luYyBmdW5jdGlvbiBxdWVyeUFwcFByaXZhY3lSZXBvcnRWYWx1ZShldmVudCwgaGF2ZVNlbnRJ
bml0aWFsTWVzc2FnZSkKK3sKKyAgICB2YXIgcmVzdWx0ID0gYXdhaXQgaW50ZXJuYWxzLmxhc3RO
YXZpZ2F0aW9uV2FzQXBwUHJpdmFjeVJlcG9ydCgpOworICAgIGlmIChyZXN1bHQpIHsKKyAgICAg
ICAgaWYgKGV2ZW50LmRhdGEgPT0gIkZJUlNUIikgeworICAgICAgICAgICAgZXZlbnQuc291cmNl
LnBvc3RNZXNzYWdlKCdhcHAgaW5pdGlhdGVkJyk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoIWhhdmVTZW50SW5pdGlhbE1lc3NhZ2UpCisgICAgICAgICAg
ICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoJ3N0YXJ0cyBhcHAgaW5pdGlhdGVkJyk7CisKKyAg
ICAgICAgcXVlcnlBcHBQcml2YWN5UmVwb3J0VmFsdWUoZXZlbnQsIHRydWUpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCdub24gYXBwIGlu
aXRpYXRlZCcpOworfQorCispU1dSRVNPVVJDRSI7CisKKworc3RhdGljIFN0cmluZyBleHBlY3Rl
ZE1lc3NhZ2U7CitzdGF0aWMgYm9vbCByZWNlaXZlZE1lc3NhZ2UgPSBmYWxzZTsKKworQGludGVy
ZmFjZSBTV0FwcEluaXRpYXRlZFJlcXVlc3RNZXNzYWdlSGFuZGxlciA6IE5TT2JqZWN0IDxXS1Nj
cmlwdE1lc3NhZ2VIYW5kbGVyPgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gU1dBcHBJbml0aWF0
ZWRSZXF1ZXN0TWVzc2FnZUhhbmRsZXIKKy0gKHZvaWQpdXNlckNvbnRlbnRDb250cm9sbGVyOihX
S1VzZXJDb250ZW50Q29udHJvbGxlciAqKXVzZXJDb250ZW50Q29udHJvbGxlciBkaWRSZWNlaXZl
U2NyaXB0TWVzc2FnZTooV0tTY3JpcHRNZXNzYWdlICopbWVzc2FnZQoreworICAgIEVYUEVDVF9X
S19TVFJFUShtZXNzYWdlLmJvZHksIGV4cGVjdGVkTWVzc2FnZSk7CisgICAgcmVjZWl2ZWRNZXNz
YWdlID0gdHJ1ZTsKK30KK0BlbmQKKworVEVTVChBcHBQcml2YWN5UmVwb3J0LCBSZWdpc3RlclNl
cnZpY2VXb3JrZXJDbGllbnRVcGRhdGVzQXBwSW5pdGlhdGVkVmFsdWUpCit7CisgICAgc3RhdGlj
IGJvb2wgaXNEb25lID0gZmFsc2U7CisKKyAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0
RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNp
dGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlv
bkhhbmRsZXI6XigpIHsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisKKyAgICBXS1dlYlZpZXdDb25maWd1cmF0
aW9uICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmln
dXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRl
cm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKKyAgICBXS1JldGFpblB0cjxXS0Nv
bnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFRlc3RXZWJLaXRBUEk6OlV0aWw6OmNyZWF0ZUNv
bnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIkludGVybmFsc0luamVjdGVkQnVuZGxlVGVzdCIp
KTsKKyAgICBjb25maWd1cmF0aW9uLnByb2Nlc3NQb29sID0gKFdLUHJvY2Vzc1Bvb2wgKiljb250
ZXh0LmdldCgpOworCisgICAgUmV0YWluUHRyPFNXQXBwSW5pdGlhdGVkUmVxdWVzdE1lc3NhZ2VI
YW5kbGVyPiBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tTV0FwcEluaXRpYXRlZFJlcXVlc3RN
ZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29u
dGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdl
dCgpIG5hbWU6QCJzdyJdOworCisgICAgYXV0byB3ZWJWaWV3MSA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byB3ZWJWaWV3MiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkg
Y29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRv
cHROUyhbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBuZXddKTsKKyAgICBbZGVsZWdhdGUgc2V0RGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOl4oV0tXZWJWaWV3ICosIE5TVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwgdm9pZCAoXmNhbGxiYWNrKShOU1VSTFNlc3Np
b25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqKSkgeworICAgICAg
ICBFWFBFQ1RfV0tfU1RSRVEoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlv
bk1ldGhvZCwgTlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZFNlcnZlclRydXN0KTsKKyAgICAgICAg
Y2FsbGJhY2soTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWwsIFtOU1VSTENy
ZWRlbnRpYWwgY3JlZGVudGlhbEZvclRydXN0OmNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uuc2Vy
dmVyVHJ1c3RdKTsKKyAgICB9XTsKKworICAgIHdlYlZpZXcxLmdldCgpLm5hdmlnYXRpb25EZWxl
Z2F0ZSA9IGRlbGVnYXRlLmdldCgpOworICAgIHdlYlZpZXcyLmdldCgpLm5hdmlnYXRpb25EZWxl
Z2F0ZSA9IGRlbGVnYXRlLmdldCgpOworCisgICAgU2VydmljZVdvcmtlclRDUFNlcnZlciBzZXJ2
ZXIoeworICAgICAgICB7ICJ0ZXh0L2h0bWwiLCBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSB9LAor
ICAgICAgICB7ICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Iiwgc2NyaXB0Qnl0ZXNEZWZhdWx0VmFs
dWUgfSwKKyAgICB9LCB7CisgICAgICAgIHsgInRleHQvaHRtbCIsIG1haW5TV0J5dGVzRGVmYXVs
dFZhbHVlIH0sCisgICAgICAgIHsgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiLCBzY3JpcHRCeXRl
c0RlZmF1bHRWYWx1ZSB9LAorICAgIH0pOworCisgICAgLy8gTG9hZCBXZWJWaWV3IHdpdGggYW4g
YXBwIGluaXRpYXRlZCByZXF1ZXN0LiBXZSBleHBlY3QgdGhlIFNlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eSB0byBiZSBhcHAgaW5pdGlhdGVkLgorICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJhcHAgaW5p
dGlhdGVkIjsKKyAgICBbd2ViVmlldzEgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07Cisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZE1lc3NhZ2UpOworCisgICAgLy8g
TG9hZCBXZWJWaWV3IHdpdGggYSBub24gYXBwIGluaXRpYXRlZCByZXF1ZXN0LiBXZSBleHBlY3Qg
dGhlIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSB0byBiZSBhcHAgaW5pdGlhdGVkCisgICAgLy8g
YXQgZmlyc3QsIGJ1dCB0aGVuIGJlY29tZSBub24gYXBwIGluaXRpYXRlZCBvbmNlIHRoZSBzZWNv
bmQgd2ViVmlldyBpcyBjbG9zZWQgYW5kIGl0cyBjbGllbnQgaXMgdW5yZWdpc3RlcmVkLgorICAg
IGV4cGVjdGVkTWVzc2FnZSA9ICJzdGFydHMgYXBwIGluaXRpYXRlZCI7CisgICAgcmVjZWl2ZWRN
ZXNzYWdlID0gZmFsc2U7CisgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqbm9uQXBwSW5pdGlhdGVk
UmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxX
aXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cDovLzEyNy4wLjAuMTol
ZC9tYWluLmh0bWwiLCBzZXJ2ZXIucG9ydCgpXV1dOworICAgIG5vbkFwcEluaXRpYXRlZFJlcXVl
c3QuYXR0cmlidXRpb24gPSBOU1VSTFJlcXVlc3RBdHRyaWJ1dGlvblVzZXI7CisKKyAgICBbd2Vi
VmlldzIgbG9hZFJlcXVlc3Q6bm9uQXBwSW5pdGlhdGVkUmVxdWVzdF07CisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZE1lc3NhZ2UpOworCisgICAgLy8gQ2xvc2UgdGhlIGFw
cCBpbml0aWF0ZWQgdmlldy4gV2UgZXhwZWN0IHRoYXQgdGhlIGV4aXN0aW5nIHdvcmtlciB3aWxs
IGJlY29tZSBub24gYXBwIGluaXRpYXRlZAorICAgIC8vIG5vdyB0aGF0IGFsbCBhcHAgaW5pdGlh
dGVkIGNsaWVudHMgaGF2ZSBiZWVuIHJlbW92ZWQuCisgICAgZXhwZWN0ZWRNZXNzYWdlID0gIm5v
biBhcHAgaW5pdGlhdGVkIjsKKyAgICByZWNlaXZlZE1lc3NhZ2UgPSBmYWxzZTsKKyAgICBbd2Vi
VmlldzEgX2Nsb3NlXTsKKyAgICB3ZWJWaWV3MSA9IG51bGxwdHI7CisKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkTWVzc2FnZSk7Cit9CisKKyNlbmRpZiAvLyBXS19IQVZF
X0NfU1BJCisKKyNlbmRpZiAvLyBBUFBfUFJJVkFDWV9SRVBPUlQKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydFBsdWdJbi5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9y
dFBsdWdJbi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYTEzN2RkMmUxMzM1NWU5Y2NkMDZhNWQwODJkZTYxMTFl
MjlmNTdmCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0UGx1Z0luLm1tCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMu
aCIKKyNpbXBvcnQgPFdlYktpdC9XS1dlYlByb2Nlc3NQbHVnSW4uaD4KKyNpbXBvcnQgPFdlYktp
dC9XS1dlYlByb2Nlc3NQbHVnSW5Mb2FkRGVsZWdhdGUuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5Q
dHIuaD4KKworQGludGVyZmFjZSBBcHBQcml2YWN5UmVwb3J0UGx1Z0luIDogTlNPYmplY3QgPFdL
V2ViUHJvY2Vzc1BsdWdJbiwgV0tXZWJQcm9jZXNzUGx1Z0luTG9hZERlbGVnYXRlPgorQGVuZAor
CitAaW1wbGVtZW50YXRpb24gQXBwUHJpdmFjeVJlcG9ydFBsdWdJbiB7IH0KKworLSAoTlNVUkxS
ZXF1ZXN0ICopd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjooV0tXZWJQ
cm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyICopY29udHJvbGxlciBmcmFtZToo
V0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUgKilmcmFtZSB3aWxsU2VuZFJlcXVlc3RGb3JSZXNvdXJj
ZToodWludDY0X3QpcmVzb3VyY2UgcmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCByZWRp
cmVjdFJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVkaXJlY3RSZXNwb25zZQoreworICAgIHJl
dHVybiBhZG9wdE5TKFtbTlNVUkxSZXF1ZXN0IGFsbG9jXSBpbml0V2l0aFVSTDpyZXF1ZXN0LlVS
TF0pLmF1dG9yZWxlYXNlKCk7Cit9CisKK0BlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQppbmRl
eCBhNWM0NGNhNTg3OWQ0MmQ4ZTE0Y2M5MzY4OWQ2YTIyZWYxYzU5MTNhLi5kNmNiNmYxMDc3YzVi
ZWQ1MWRkZGFhZTM5MmUyZmY0OTkzMWNhN2QzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCkBA
IC0yNSwxMSArMjUsOSBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKIAotI2ltcG9ydCAiSFRUUFNl
cnZlci5oIgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlNlcnZpY2VX
b3JrZXJUQ1BTZXJ2ZXIuaCIKICNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIKLSNp
bXBvcnQgIlRlc3RVSURlbGVnYXRlLmgiCiAjaW1wb3J0ICJUZXN0VVJMU2NoZW1lSGFuZGxlci5o
IgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgogI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJh
dGlvbkV4dHJhcy5oIgpAQCAtMTQxNyw2MjYgKzE0MTUsMyBAQCBURVNUKEluQXBwQnJvd3NlclBy
aXZhY3ksIEFib3V0QmxhbmtTdWJGcmFtZU1hdGNoZXNUb3BGcmFtZU5vbkFwcEJvdW5kKQogfQog
CiAjZW5kaWYgLy8gRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQotCi0jaWYgRU5BQkxFKEFQUF9Q
UklWQUNZX1JFUE9SVCkKLVRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmRSZXF1ZXN0
KQotewotICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0KLSAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVz
dFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246
Y29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAgIE5TU3RyaW5nICp1cmwgPSBAImh0dHBzOi8vd2Vi
a2l0Lm9yZyI7Ci0KLSAgICBfX2Jsb2NrIGJvb2wgaXNEb25lID0gZmFsc2U7Ci0gICAgTlNNdXRh
YmxlVVJMUmVxdWVzdCAqbm9uQXBwQm91bmRSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3Qg
cmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6dXJsXV07Ci0KLSAgICBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgIG5vbkFwcEJvdW5kUmVxdWVzdC5faXNO
b25BcHBJbml0aWF0ZWQgPSBZRVM7Ci0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
RU5ECi0KLSAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpub25BcHBCb3VuZFJlcXVlc3RdOwotICAg
IFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKLQotICAgIFt3ZWJW
aWV3IF9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOl4oQk9PTCBpc0FwcEJvdW5kKSB7Ci0gICAg
ICAgIEVYUEVDVF9GQUxTRShpc0FwcEJvdW5kKTsKLSAgICAgICAgaXNEb25lID0gdHJ1ZTsKLSAg
ICB9XTsKLQotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKLSAgICAKLSAg
ICBpc0RvbmUgPSBmYWxzZTsKLSAgICBbd2ViVmlldyBfYXBwQm91bmROYXZpZ2F0aW9uRGF0YTpe
KHN0cnVjdCBXS0FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhIGRhdGEpIHsKLSAgICAgICAg
RVhQRUNUX0ZBTFNFKGRhdGEuaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZyk7Ci0gICAg
ICAgIEVYUEVDVF9UUlVFKGRhdGEuaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZyk7
Ci0gICAgICAgIGlzRG9uZSA9IHRydWU7Ci0gICAgfV07Ci0KLSAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmlzRG9uZSk7Ci19Ci0KLVRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91
bmRSZXF1ZXN0V2l0aE5hdmlnYXRpb24pCi17Ci0gICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRv
cHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLQotICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNH
UmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgTlNTdHJp
bmcgKnN0YXJ0aW5nVVJMID0gQCJodHRwczovL3d3dy53ZWJraXQub3JnIjsKLSAgICBOU1N0cmlu
ZyAqbm9uQXBwQm91bmRVUkwgPSBAImh0dHBzOi8vd3d3LmFwcGxlLmNvbSI7Ci0KLSAgICBOU011
dGFibGVVUkxSZXF1ZXN0ICpzdGFydGluZ1JlcXVlc3QgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCBy
ZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpzdGFydGluZ1VSTF1dOwotCi0gICAg
W3dlYlZpZXcgbG9hZFJlcXVlc3Q6c3RhcnRpbmdSZXF1ZXN0XTsKLSAgICBbd2ViVmlldyBfdGVz
dF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07Ci0KLSAgICBfX2Jsb2NrIGJvb2wgaXNEb25l
ID0gZmFsc2U7Ci0gICAgW3dlYlZpZXcgX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6XihCT09M
IGlzQXBwQm91bmQpIHsKLSAgICAgICAgRVhQRUNUX1RSVUUoaXNBcHBCb3VuZCk7Ci0gICAgICAg
IGlzRG9uZSA9IHRydWU7Ci0gICAgfV07Ci0KLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmlzRG9uZSk7Ci0gICAgCi0gICAgaXNEb25lID0gZmFsc2U7Ci0gICAgW3dlYlZpZXcgX2FwcEJv
dW5kTmF2aWdhdGlvbkRhdGE6XihzdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0
YSBkYXRhKSB7Ci0gICAgICAgIEVYUEVDVF9UUlVFKGRhdGEuaGFzTG9hZGVkQXBwQm91bmRSZXF1
ZXN0VGVzdGluZyk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShkYXRhLmhhc0xvYWRlZE5vbkFwcEJv
dW5kUmVxdWVzdFRlc3RpbmcpOwotICAgICAgICBpc0RvbmUgPSB0cnVlOwotICAgIH1dOwotCi0g
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwotICAgIAotICAgIGlzRG9uZSA9
IGZhbHNlOwotICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5vbkFwcEJvdW5kUmVxdWVzdCA9IFtO
U011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOm5v
bkFwcEJvdW5kVVJMXV07Ci0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4K
LSAgICBub25BcHBCb3VuZFJlcXVlc3QuX2lzTm9uQXBwSW5pdGlhdGVkID0gWUVTOwotICAgIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotICAgIAotICAgIGlzRG9uZSA9IGZhbHNl
OwotICAgIFt3ZWJWaWV3IF9jbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGE6XnsKLSAgICAgICAg
aXNEb25lID0gdHJ1ZTsKLSAgICB9XTsKLQotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
aXNEb25lKTsKLQotICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0Om5vbkFwcEJvdW5kUmVxdWVzdF07
Ci0gICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwotCi0gICAg
W3dlYlZpZXcgX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6XihCT09MIGlzQXBwQm91bmQpIHsK
LSAgICAgICAgRVhQRUNUX0ZBTFNFKGlzQXBwQm91bmQpOwotICAgICAgICBpc0RvbmUgPSB0cnVl
OwotICAgIH1dOwotCi0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwotICAg
IAotICAgIGlzRG9uZSA9IGZhbHNlOwotICAgIFt3ZWJWaWV3IF9hcHBCb3VuZE5hdmlnYXRpb25E
YXRhOl4oc3RydWN0IFdLQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEgZGF0YSkgewotICAg
ICAgICBFWFBFQ1RfRkFMU0UoZGF0YS5oYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nKTsK
LSAgICAgICAgRVhQRUNUX1RSVUUoZGF0YS5oYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0
aW5nKTsKLSAgICAgICAgaXNEb25lID0gdHJ1ZTsKLSAgICB9XTsKLQotICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKLX0KLQotVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBB
cHBCb3VuZFJlcXVlc3RXaXRoU3ViRnJhbWUpCi17Ci0gICAgYXV0byBjb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLSAgICBbY29u
ZmlndXJhdGlvbiBfc2V0T3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3k6QCJzY3JpcHQtc3Jj
ICdub25jZS1iJyJdOwotCi0gICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdl
TmFtZWQ6QCJwYWdlLXdpdGgtY3NwIl07Ci0KLSAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpA
Ik1haW5GcmFtZTogQiJdOwotICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiU3ViZnJhbWU6
IEIiXTsKLQotICAgIF9fYmxvY2sgYm9vbCBpc0RvbmUgPSBmYWxzZTsKLSAgICBbd2ViVmlldyBf
YXBwQm91bmROYXZpZ2F0aW9uRGF0YTpeKHN0cnVjdCBXS0FwcEJvdW5kTmF2aWdhdGlvblRlc3Rp
bmdEYXRhIGRhdGEpIHsKLSAgICAgICAgRVhQRUNUX1RSVUUoZGF0YS5oYXNMb2FkZWRBcHBCb3Vu
ZFJlcXVlc3RUZXN0aW5nKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKGRhdGEuaGFzTG9hZGVkTm9u
QXBwQm91bmRSZXF1ZXN0VGVzdGluZyk7Ci0gICAgICAgIGlzRG9uZSA9IHRydWU7Ci0gICAgfV07
Ci0KLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Ci19OwotCi1URVNUKElu
QXBwQnJvd3NlclByaXZhY3ksIE5vbkFwcEJvdW5kUmVxdWVzdFdpdGhTdWJGcmFtZSkKLXsKLSAg
ICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBh
bGxvY10gaW5pdF0pOwotICAgIFtjb25maWd1cmF0aW9uIF9zZXRPdmVycmlkZUNvbnRlbnRTZWN1
cml0eVBvbGljeTpAInNjcmlwdC1zcmMgJ25vbmNlLWInIl07Ci0KLSAgICBfX2Jsb2NrIGJvb2wg
aXNEb25lID0gZmFsc2U7Ci0gICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAq
bm9uQXBwQm91bmRSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6
W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInBhZ2Utd2l0aC1jc3AiIHdp
dGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNl
cyJdXTsKLSAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgIG5vbkFw
cEJvdW5kUmVxdWVzdC5faXNOb25BcHBJbml0aWF0ZWQgPSBZRVM7Ci0gICAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECi0KLSAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpub25BcHBC
b3VuZFJlcXVlc3RdOwotCi0gICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJNYWluRnJhbWU6
IEIiXTsKLSAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIlN1YmZyYW1lOiBCIl07Ci0KLSAg
ICBbd2ViVmlldyBfYXBwQm91bmROYXZpZ2F0aW9uRGF0YTogXihzdHJ1Y3QgV0tBcHBCb3VuZE5h
dmlnYXRpb25UZXN0aW5nRGF0YSBkYXRhKSB7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShkYXRhLmhh
c0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcpOwotICAgICAgICBFWFBFQ1RfVFJVRShkYXRh
Lmhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3RpbmcpOwotICAgICAgICBpc0RvbmUgPSB0
cnVlOwotICAgIH1dOwotCi0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwot
fTsKLQotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5TV0J5dGVzID0gUiJTV1JFU09VUkNFKAotPHNj
cmlwdD4KLXRyeSB7Ci0gICAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5q
cycpLnRoZW4oZnVuY3Rpb24ocmVnKSB7Ci0gICAgICAgIGlmIChyZWcuYWN0aXZlKSB7Ci0gICAg
ICAgICAgICBhbGVydCgnd29ya2VyIGFscmVhZHkgYWN0aXZlJyk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLSAgICAgICAgd29ya2VyID0gcmVnLmluc3RhbGxpbmc7Ci0gICAgICAg
IHdvcmtlci5hZGRFdmVudExpc3RlbmVyKCdzdGF0ZWNoYW5nZScsIGZ1bmN0aW9uKCkgewotICAg
ICAgICAgICAgaWYgKHdvcmtlci5zdGF0ZSA9PSAnYWN0aXZhdGVkJykKLSAgICAgICAgICAgICAg
ICBhbGVydCgnc3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyZWQnKTsKLSAgICAgICAgfSk7Ci0gICAgfSku
Y2F0Y2goZnVuY3Rpb24oZXJyb3IpIHsKLSAgICAgICAgYWxlcnQoJ1JlZ2lzdHJhdGlvbiBmYWls
ZWQgd2l0aDogJyArIGVycm9yKTsKLSAgICB9KTsKLX0gY2F0Y2goZSkgewotICAgIGFsZXJ0KCdF
eGNlcHRpb246ICcgKyBlKTsKLX0KLTwvc2NyaXB0PgotKVNXUkVTT1VSQ0UiOwotCi1lbnVtIGNs
YXNzIFJlc3BvbnNlVHlwZSB7IFN5bnRoZXRpYywgRmV0Y2hlZCB9OwotZW51bSBjbGFzcyBJc0Fw
cEJvdW5kIDogYm9vbCB7IE5vLCBZZXMgfTsKLXN0YXRpYyB2b2lkIHJ1blRlc3QoUmVzcG9uc2VU
eXBlIHJlc3BvbnNlVHlwZSwgSXNBcHBCb3VuZCBhcHBCb3VuZCkKLXsKLSAgICBzdGF0aWMgYm9v
bCBpc0RvbmUgPSBmYWxzZTsKLSAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0
b3JlXSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRh
VHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRs
ZXI6XigpIHsKLSAgICAgICAgaXNEb25lID0gdHJ1ZTsKLSAgICB9XTsKLSAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Ci0KLSAgICBjb25zdCBjaGFyKiBqcyA9IG51bGxwdHI7
Ci0gICAgY29uc3QgY2hhciogZXhwZWN0ZWRBbGVydCA9IG51bGxwdHI7Ci0KLSAgICBzd2l0Y2gg
KHJlc3BvbnNlVHlwZSkgewotICAgIGNhc2UgUmVzcG9uc2VUeXBlOjpTeW50aGV0aWM6Ci0gICAg
ICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZl
bnQucmVzcG9uZFdpdGgobmV3IFJlc3BvbnNlKG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5
bnRoZXRpYyByZXNwb25zZVwiKTwvc2NyaXB0PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9
KSI7Ci0gICAgICAgIGV4cGVjdGVkQWxlcnQgPSAic3ludGhldGljIHJlc3BvbnNlIjsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBSZXNwb25zZVR5cGU6OkZldGNoZWQ6Ci0gICAgICAgIGpzID0g
InNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9u
ZFdpdGgoZmV0Y2goJy9mZXRjaGVkLmh0bWwnKSkgfSk7IjsKLSAgICAgICAgZXhwZWN0ZWRBbGVy
dCA9ICJmZXRjaGVkIGZyb20gc2VydmVyIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAg
VGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWlu
U1dCeXRlcyB9IH0sCi0gICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJh
cHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9LAotICAgICAgICB7ICIvZmV0Y2hlZC5o
dG1sIiwgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+IiB9
IH0sCi0gICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsK
LQotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKLQotICAgIGF1
dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOwotICAg
IFtkZWxlZ2F0ZSBzZXREaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6XihXS1dlYlZp
ZXcgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLCB2b2lkICheY2Fs
bGJhY2spKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50
aWFsICopKSB7Ci0gICAgICAgIEVYUEVDVF9XS19TVFJFUShjaGFsbGVuZ2UucHJvdGVjdGlvblNw
YWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kLCBOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kU2VydmVy
VHJ1c3QpOwotICAgICAgICBjYWxsYmFjayhOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3Jl
ZGVudGlhbCwgW05TVVJMQ3JlZGVudGlhbCBjcmVkZW50aWFsRm9yVHJ1c3Q6Y2hhbGxlbmdlLnBy
b3RlY3Rpb25TcGFjZS5zZXJ2ZXJUcnVzdF0pOwotICAgIH1dOwotICAgIHdlYlZpZXcuZ2V0KCku
bmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7Ci0KLSAgICBOU1VSTFJlcXVlc3Qg
KnJlcXVlc3QgPSBzZXJ2ZXIucmVxdWVzdCgpOwotICAgIGlmIChhcHBCb3VuZCA9PSBJc0FwcEJv
dW5kOjpObykgewotICAgICAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpub25BcHBCb3VuZFJlcXVl
c3QgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0
cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIs
IHNlcnZlci5wb3J0KCldXV07Ci0gICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0JFR0lOCi0gICAgICAgIG5vbkFwcEJvdW5kUmVxdWVzdC5faXNOb25BcHBJbml0aWF0ZWQgPSBZ
RVM7Ci0gICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotICAgICAgICBy
ZXF1ZXN0ID0gbm9uQXBwQm91bmRSZXF1ZXN0OwotICAgIH0KLQotICAgIFt3ZWJWaWV3IGxvYWRS
ZXF1ZXN0OnJlcXVlc3RdOwotICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldyBfdGVzdF93YWl0
Rm9yQWxlcnRdLCAic3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyZWQiKTsKLQotICAgIGlmIChyZXNwb25z
ZVR5cGUgIT0gUmVzcG9uc2VUeXBlOjpGZXRjaGVkKQotICAgICAgICBzZXJ2ZXIuY2FuY2VsKCk7
Ci0KLSAgICBib29sIGV4cGVjdGluZ0FwcEJvdW5kUmVxdWVzdHMgPSBhcHBCb3VuZCA9PSBJc0Fw
cEJvdW5kOjpZZXM7Ci0gICAgaXNEb25lID0gZmFsc2U7Ci0gICAgW3dlYlZpZXcgX2FwcEJvdW5k
TmF2aWdhdGlvbkRhdGE6IF4oc3RydWN0IFdLQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEg
ZGF0YSkgewotICAgICAgICBFWFBFQ1RfRVEoZGF0YS5oYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RU
ZXN0aW5nLCBleHBlY3RpbmdBcHBCb3VuZFJlcXVlc3RzKTsKLSAgICAgICAgRVhQRUNUX0VRKGRh
dGEuaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZywgIWV4cGVjdGluZ0FwcEJvdW5k
UmVxdWVzdHMpOwotICAgICAgICBpc0RvbmUgPSB0cnVlOwotICAgIH1dOwotCi0gICAgaXNEb25l
ID0gZmFsc2U7Ci0gICAgW3dlYlZpZXcgX2NsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YTpeewot
ICAgICAgICBpc0RvbmUgPSB0cnVlOwotICAgIH1dOwotCi0gICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZpc0RvbmUpOwotCi0gICAgW3dlYlZpZXcgcmVsb2FkXTsKLSAgICBFWFBFQ1RfV0tf
U1RSRVEoW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckFsZXJ0XSwgZXhwZWN0ZWRBbGVydCk7Ci0KLSAg
ICBpc0RvbmUgPSBmYWxzZTsKLSAgICBbd2ViVmlldyBfYXBwQm91bmROYXZpZ2F0aW9uRGF0YTog
XihzdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBkYXRhKSB7Ci0gICAgICAg
IGlmIChyZXNwb25zZVR5cGUgPT0gUmVzcG9uc2VUeXBlOjpTeW50aGV0aWMpIHsKLSAgICAgICAg
ICAgIEVYUEVDVF9GQUxTRShkYXRhLmhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcpOwot
ICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGRhdGEuaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0
VGVzdGluZyk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBFWFBFQ1RfRVEoZGF0YS5o
YXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nLCBleHBlY3RpbmdBcHBCb3VuZFJlcXVlc3Rz
KTsKLSAgICAgICAgICAgIEVYUEVDVF9FUShkYXRhLmhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVz
dFRlc3RpbmcsICFleHBlY3RpbmdBcHBCb3VuZFJlcXVlc3RzKTsKLSAgICAgICAgfQotICAgICAg
ICBpc0RvbmUgPSB0cnVlOwotICAgIH1dOwotCi0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZpc0RvbmUpOwotfQotCi1URVNUKEluQXBwQnJvd3NlclByaXZhY3ksIE5vbkFwcEJvdW5kUmVx
dWVzdFdpdGhTZXJ2aWNlV29ya2VyKQotewotICAgIHJ1blRlc3QoUmVzcG9uc2VUeXBlOjpTeW50
aGV0aWMsIElzQXBwQm91bmQ6Ok5vKTsKLSAgICBydW5UZXN0KFJlc3BvbnNlVHlwZTo6RmV0Y2hl
ZCwgSXNBcHBCb3VuZDo6Tm8pOwotfQotCi1URVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJv
dW5kUmVxdWVzdFdpdGhTZXJ2aWNlV29ya2VyKQotewotICAgIHJ1blRlc3QoUmVzcG9uc2VUeXBl
OjpTeW50aGV0aWMsIElzQXBwQm91bmQ6Olllcyk7Ci0gICAgcnVuVGVzdChSZXNwb25zZVR5cGU6
OkZldGNoZWQsIElzQXBwQm91bmQ6Olllcyk7Ci19Ci0KLVRFU1QoSW5BcHBCcm93c2VyUHJpdmFj
eSwgTXVsdGlwbGVXZWJWaWV3c1dpdGhTaGFyZWRTZXJ2aWNlV29ya2VyKQotewotICAgIHN0YXRp
YyBib29sIGlzRG9uZSA9IGZhbHNlOwotCi0gICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVs
dERhdGFTdG9yZV0gcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJz
aXRlRGF0YVR5cGVzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRp
b25IYW5kbGVyOl4oKSB7Ci0gICAgICAgIGlzRG9uZSA9IHRydWU7Ci0gICAgfV07Ci0gICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwotCi0gICAgY29uc3QgY2hhcioganMgPSAi
c2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25k
V2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KSI7Ci0gICAgY29uc3QgY2hhciogZXhwZWN0
ZWRBbGVydCA9ICJmZXRjaGVkIGZyb20gc2VydmVyIjsKLQotICAgIFRlc3RXZWJLaXRBUEk6OkhU
VFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiLyIsIHsgbWFpblNXQnl0ZXMgfSB9LAotICAg
ICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNj
cmlwdCIgfX0sIGpzIH0gfSwKLSAgICAgICAgeyAiL2ZldGNoZWQuaHRtbCIsIHsgIjxzY3JpcHQ+
YWxlcnQoJ2ZldGNoZWQgZnJvbSBzZXJ2ZXInKTwvc2NyaXB0PiIgfSB9LAotICAgIH0sIFRlc3RX
ZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7Ci0KLSAgICBhdXRvIHdlYlZp
ZXcxID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwotICAgIGF1dG8gd2ViVmlldzIgPSBhZG9w
dE5TKFtXS1dlYlZpZXcgbmV3XSk7Ci0KLSAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVz
dE5hdmlnYXRpb25EZWxlZ2F0ZSBuZXddKTsKLSAgICBbZGVsZWdhdGUgc2V0RGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOl4oV0tXZWJWaWV3ICosIE5TVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UgKmNoYWxsZW5nZSwgdm9pZCAoXmNhbGxiYWNrKShOU1VSTFNlc3Npb25BdXRoQ2hh
bGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqKSkgewotICAgICAgICBFWFBFQ1Rf
V0tfU1RSRVEoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlvbk1ldGhvZCwg
TlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZFNlcnZlclRydXN0KTsKLSAgICAgICAgY2FsbGJhY2so
TlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWwsIFtOU1VSTENyZWRlbnRpYWwg
Y3JlZGVudGlhbEZvclRydXN0OmNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uuc2VydmVyVHJ1c3Rd
KTsKLSAgICB9XTsKLSAgICB3ZWJWaWV3MS5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxl
Z2F0ZS5nZXQoKTsKLSAgICB3ZWJWaWV3Mi5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxl
Z2F0ZS5nZXQoKTsKLQotICAgIFt3ZWJWaWV3MSBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgp
XTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcxIF90ZXN0X3dhaXRGb3JBbGVydF0sICJz
dWNjZXNzZnVsbHkgcmVnaXN0ZXJlZCIpOwotCi0gICAgW3dlYlZpZXcxIHJlbG9hZF07Ci0gICAg
RVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3MSBfdGVzdF93YWl0Rm9yQWxlcnRdLCBleHBlY3RlZEFs
ZXJ0KTsKLQotICAgIGlzRG9uZSA9IGZhbHNlOwotICAgIFt3ZWJWaWV3MSBfYXBwQm91bmROYXZp
Z2F0aW9uRGF0YTogXihzdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBkYXRh
KSB7Ci0gICAgICAgIEVYUEVDVF9UUlVFKGRhdGEuaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVz
dGluZyk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShkYXRhLmhhc0xvYWRlZE5vbkFwcEJvdW5kUmVx
dWVzdFRlc3RpbmcpOwotICAgICAgICBpc0RvbmUgPSB0cnVlOwotICAgIH1dOwotCi0gICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwotCi0gICAgaXNEb25lID0gZmFsc2U7Ci0g
ICAgW3dlYlZpZXcxIF9jbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGE6XnsKLSAgICAgICAgaXNE
b25lID0gdHJ1ZTsKLSAgICB9XTsKLQotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNE
b25lKTsKLQotICAgIGlzRG9uZSA9IGZhbHNlOwotICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5v
bkFwcEJvdW5kUmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltO
U1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8x
MjcuMC4wLjE6JWQvbWFpbi5odG1sIiwgc2VydmVyLnBvcnQoKV1dXTsKLSAgICBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgIG5vbkFwcEJvdW5kUmVxdWVzdC5faXNOb25B
cHBJbml0aWF0ZWQgPSBZRVM7Ci0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5E
Ci0gICAgW3dlYlZpZXcyIGxvYWRSZXF1ZXN0Om5vbkFwcEJvdW5kUmVxdWVzdF07Ci0gICAgRVhQ
RUNUX1dLX1NUUkVRKFt3ZWJWaWV3MiBfdGVzdF93YWl0Rm9yQWxlcnRdLCAiZmV0Y2hlZCBmcm9t
IHNlcnZlciIpOwotCi0gICAgW3dlYlZpZXcyIHJlbG9hZF07Ci0gICAgRVhQRUNUX1dLX1NUUkVR
KFt3ZWJWaWV3MiBfdGVzdF93YWl0Rm9yQWxlcnRdLCBleHBlY3RlZEFsZXJ0KTsKLQotICAgIFt3
ZWJWaWV3MiBfYXBwQm91bmROYXZpZ2F0aW9uRGF0YTogXihzdHJ1Y3QgV0tBcHBCb3VuZE5hdmln
YXRpb25UZXN0aW5nRGF0YSBkYXRhKSB7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShkYXRhLmhhc0xv
YWRlZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcpOwotICAgICAgICBFWFBFQ1RfVFJVRShkYXRhLmhh
c0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3RpbmcpOwotICAgICAgICBpc0RvbmUgPSB0cnVl
OwotICAgIH1dOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKLSAgICBp
c0RvbmUgPSBmYWxzZTsKLX0KLQotc3RhdGljIHZvaWQgc29mdFVwZGF0ZVRlc3QoSXNBcHBCb3Vu
ZCBpc0FwcEJvdW5kKQotewotICAgIF9fYmxvY2sgYm9vbCBpc0RvbmUgPSBmYWxzZTsKLSAgICBb
W1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZUeXBlczpb
V0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05T
RGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKLSAgICAgICAgaXNEb25l
ID0gdHJ1ZTsKLSAgICB9XTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7
Ci0KLSAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBu
ZXddKTsKLSAgICBbZGVsZWdhdGUgc2V0RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Ol4oV0tXZWJWaWV3ICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwg
dm9pZCAoXmNhbGxiYWNrKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5T
VVJMQ3JlZGVudGlhbCAqKSkgewotICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoY2hhbGxlbmdlLnBy
b3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlvbk1ldGhvZCwgTlNVUkxBdXRoZW50aWNhdGlvbk1l
dGhvZFNlcnZlclRydXN0KTsKLSAgICAgICAgY2FsbGJhY2soTlNVUkxTZXNzaW9uQXV0aENoYWxs
ZW5nZVVzZUNyZWRlbnRpYWwsIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbEZvclRydXN0OmNo
YWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uuc2VydmVyVHJ1c3RdKTsKLSAgICB9XTsKLQotICAgIGF1
dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSk7Ci0gICAgYXV0byB3ZWJWaWV3MSA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgYXV0byB3ZWJWaWV3MiA9IGFkb3B0TlMoW1tXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0KLSAgICB3ZWJWaWV3MS5nZXQoKS5u
YXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKLSAgICB3ZWJWaWV3Mi5nZXQoKS5u
YXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKLQotICAgIHVpbnQxNl90IHNlcnZl
clBvcnQ7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5l
cignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgobmV3IFJlc3BvbnNlKG5l
dyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyByZXNwb25zZVwiKTwvc2NyaXB0Pidd
LCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9KSI7Ci0KLSAgICB7Ci0gICAgICAgIFRlc3RXZWJL
aXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAgICAgICB7ICIvIiwgeyBtYWluU1dC
eXRlcyB9IH0sCi0gICAgICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAi
YXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfSwKLSAgICAgICAgfSwgVGVzdFdlYktp
dEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzLCBudWxscHRyLCB0ZXN0SWRlbnRpdHko
KSk7Ci0gICAgICAgIHNlcnZlclBvcnQgPSBzZXJ2ZXIxLnBvcnQoKTsKLQotICAgICAgICBOU1VS
TFJlcXVlc3QgKnJlcXVlc3QgPSBzZXJ2ZXIxLnJlcXVlc3QoKTsKLSAgICAgICAgaWYgKGlzQXBw
Qm91bmQgPT0gSXNBcHBCb3VuZDo6Tm8pIHsKLSAgICAgICAgICAgIE5TTXV0YWJsZVVSTFJlcXVl
c3QgKm5vbkFwcEJvdW5kUmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRo
VVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0
cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyMS5wb3J0KCldXV07Ci0gICAgICAgICAgICBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgICAgICAgICAgbm9uQXBwQm91bmRS
ZXF1ZXN0Ll9pc05vbkFwcEluaXRpYXRlZCA9IFlFUzsKLSAgICAgICAgICAgIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0VORAotICAgICAgICAgICAgcmVxdWVzdCA9IG5vbkFwcEJvdW5k
UmVxdWVzdDsKLSAgICAgICAgfQotCi0gICAgICAgIFt3ZWJWaWV3MSBsb2FkUmVxdWVzdDpyZXF1
ZXN0XTsKLSAgICAgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3MSBfdGVzdF93YWl0Rm9yQWxl
cnRdLCAic3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyZWQiKTsKLQotICAgICAgICBzZXJ2ZXIxLmNhbmNl
bCgpOwotICAgIH0KLQotICAgIHsKLSAgICAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBz
ZXJ2ZXIyKHsKLSAgICAgICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAg
ICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2Ny
aXB0IiB9fSwganMgfSB9Ci0gICAgICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlBy
b3RvY29sOjpIdHRwcywgbnVsbHB0ciwgdGVzdElkZW50aXR5MigpLCBzZXJ2ZXJQb3J0KTsKLQot
ICAgICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QyID0gc2VydmVyMi5yZXF1ZXN0KCk7Ci0gICAg
ICAgIGlmIChpc0FwcEJvdW5kID09IElzQXBwQm91bmQ6Ok5vKSB7Ci0gICAgICAgICAgICBOU011
dGFibGVVUkxSZXF1ZXN0ICpub25BcHBCb3VuZFJlcXVlc3QgPSBbTlNNdXRhYmxlVVJMUmVxdWVz
dCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlcjIucG9ydCgpXV1dOwotICAg
ICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICAgICAgICAg
IG5vbkFwcEJvdW5kUmVxdWVzdC5faXNOb25BcHBJbml0aWF0ZWQgPSBZRVM7Ci0gICAgICAgICAg
ICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLSAgICAgICAgICAgIHJlcXVlc3Qy
ID0gbm9uQXBwQm91bmRSZXF1ZXN0OwotICAgICAgICB9Ci0KLSAgICAgICAgaXNEb25lID0gZmFs
c2U7Ci0gICAgICAgIFt3ZWJWaWV3MSBfY2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhOl57Ci0g
ICAgICAgICAgICBpc0RvbmUgPSB0cnVlOwotICAgICAgICB9XTsKLQotICAgICAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Ci0KLSAgICAgICAgW3dlYlZpZXcyIGxvYWRSZXF1
ZXN0OnJlcXVlc3QyXTsKLSAgICAgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3MiBfdGVzdF93
YWl0Rm9yQWxlcnRdLCAic3ludGhldGljIHJlc3BvbnNlIik7Ci0gICAgfQotCi0gICAgaXNEb25l
ID0gZmFsc2U7Ci0gICAgYm9vbCBleHBlY3RpbmdBcHBCb3VuZFJlcXVlc3RzID0gaXNBcHBCb3Vu
ZCA9PSBJc0FwcEJvdW5kOjpZZXMgPyB0cnVlIDogZmFsc2U7Ci0gICAgd2hpbGUgKCFpc0RvbmUp
IHsKLSAgICAgICAgW3dlYlZpZXcyIF9hcHBCb3VuZE5hdmlnYXRpb25EYXRhOiBeKHN0cnVjdCBX
S0FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhIGRhdGEpIHsKLSAgICAgICAgICAgIGlmICgh
ZGF0YS5kaWRQZXJmb3JtU29mdFVwZGF0ZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgICAgIEVYUEVDVF9FUShkYXRhLmhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3Rpbmcs
IGV4cGVjdGluZ0FwcEJvdW5kUmVxdWVzdHMpOwotICAgICAgICAgICAgRVhQRUNUX0VRKGRhdGEu
aGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZywgIWV4cGVjdGluZ0FwcEJvdW5kUmVx
dWVzdHMpOwotICAgICAgICAgICAgaXNEb25lID0gdHJ1ZTsKLSAgICAgICAgfV07Ci0gICAgICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29wKDEpOwotICAgIH0KLX0KLQotVEVTVChJ
bkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZFJlcXVlc3RXaXRoU2VydmljZVdvcmtlclNvZnRV
cGRhdGUpCi17Ci0gICAgc29mdFVwZGF0ZVRlc3QoSXNBcHBCb3VuZDo6WWVzKTsKLX0KLQotVEVT
VChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZFJlcXVlc3RXaXRoU2VydmljZVdvcmtl
clNvZnRVcGRhdGUpCi17Ci0gICAgc29mdFVwZGF0ZVRlc3QoSXNBcHBCb3VuZDo6Tm8pOwotfQot
Ci1zdGF0aWMgdm9pZCBydW5XZWJQcm9jZXNzUGx1Z0luVGVzdChJc0FwcEJvdW5kIGlzQXBwQm91
bmQpCi17Ci0gICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtXS1dl
YlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNz
TmFtZTpAIkluQXBwQnJvd3NlclByaXZhY3lQbHVnSW4iXTsKLSAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAs
IDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKLQotICAgIE5TU3Ry
aW5nICp1cmwgPSBAImh0dHBzOi8vd2Via2l0Lm9yZyI7Ci0KLSAgICBfX2Jsb2NrIGJvb2wgaXNE
b25lID0gZmFsc2U7Ci0gICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU011dGFi
bGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOnVybF1dOwot
ICAgIGlmIChpc0FwcEJvdW5kID09IElzQXBwQm91bmQ6Ok5vKSB7Ci0gICAgICAgIE5TTXV0YWJs
ZVVSTFJlcXVlc3QgKm5vbkFwcEJvdW5kUmVxdWVzdCA9IHJlcXVlc3Q7Ci0gICAgICAgIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgICAgIG5vbkFwcEJvdW5kUmVxdWVz
dC5faXNOb25BcHBJbml0aWF0ZWQgPSBZRVM7Ci0gICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0VORAotICAgICAgICByZXF1ZXN0ID0gbm9uQXBwQm91bmRSZXF1ZXN0OwotICAg
IH0KLQotICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwotICAgIFt3ZWJWaWV3IF90
ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKLQotICAgIGlzRG9uZSA9IGZhbHNlOwot
ICAgIGJvb2wgZXhwZWN0aW5nQXBwQm91bmRSZXF1ZXN0cyA9IGlzQXBwQm91bmQgPT0gSXNBcHBC
b3VuZDo6WWVzID8gdHJ1ZSA6IGZhbHNlOwotICAgIFt3ZWJWaWV3IF9hcHBCb3VuZE5hdmlnYXRp
b25EYXRhOl4oc3RydWN0IFdLQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEgZGF0YSkgewot
ICAgICAgICBFWFBFQ1RfRVEoZGF0YS5oYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nLCBl
eHBlY3RpbmdBcHBCb3VuZFJlcXVlc3RzKTsKLSAgICAgICAgRVhQRUNUX0VRKGRhdGEuaGFzTG9h
ZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZywgIWV4cGVjdGluZ0FwcEJvdW5kUmVxdWVzdHMp
OwotICAgICAgICBpc0RvbmUgPSB0cnVlOwotICAgIH1dOwotCi0gICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZpc0RvbmUpOwotfQotCi1URVNUKEluQXBwQnJvd3NlclByaXZhY3ksIFdlYlBy
b2Nlc3NQbHVnaW5UZXN0QXBwQm91bmQpCi17Ci0gICAgcnVuV2ViUHJvY2Vzc1BsdWdJblRlc3Qo
SXNBcHBCb3VuZDo6WWVzKTsKLX0KLQotVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBXZWJQcm9j
ZXNzUGx1Z2luVGVzdE5vbkFwcEJvdW5kKQotewotICAgIHJ1bldlYlByb2Nlc3NQbHVnSW5UZXN0
KElzQXBwQm91bmQ6Ok5vKTsKLX0KLQotI2lmIFdLX0hBVkVfQ19TUEkKLQotc3RhdGljIGNvbnN0
IGNoYXIqIG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAotPHNjcmlwdD4K
LQotZnVuY3Rpb24gbG9nKG1zZykKLXsKLSAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVy
cy5zdy5wb3N0TWVzc2FnZShtc2cpOwotfQotCi1uYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5hZGRF
dmVudExpc3RlbmVyKCJtZXNzYWdlIiwgZnVuY3Rpb24oZXZlbnQpIHsKLSAgICBsb2coZXZlbnQu
ZGF0YSk7Ci19KTsKLQotdHJ5IHsKLSAgICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rl
cignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsKLSAgICAgICAgaWYgKHJlZy5hY3RpdmUp
IHsKLSAgICAgICAgICAgIHdvcmtlciA9IHJlZy5hY3RpdmU7Ci0gICAgICAgICAgICB3b3JrZXIu
cG9zdE1lc3NhZ2UoIlNFQ09ORCIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0g
ICAgICAgIHdvcmtlciA9IHJlZy5pbnN0YWxsaW5nOwotICAgICAgICB3b3JrZXIuYWRkRXZlbnRM
aXN0ZW5lcignc3RhdGVjaGFuZ2UnLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGlmICh3b3Jr
ZXIuc3RhdGUgPT0gJ2FjdGl2YXRlZCcpCi0gICAgICAgICAgICAgICAgd29ya2VyLnBvc3RNZXNz
YWdlKCJGSVJTVCIpOwotICAgICAgICB9KTsKLSAgICB9KS5jYXRjaChmdW5jdGlvbihlcnJvcikg
ewotICAgICAgICBsb2coJ1JlZ2lzdHJhdGlvbiBmYWlsZWQgd2l0aDogJyArIGVycm9yKTsKLSAg
ICB9KTsKLX0gY2F0Y2goZSkgewotICAgIGxvZygnRXhjZXB0aW9uOiAnICsgZSk7Ci19Ci08L3Nj
cmlwdD4KLSlTV1JFU09VUkNFIjsKLQotc3RhdGljIGNvbnN0IGNoYXIqIHNjcmlwdEJ5dGVzRGVm
YXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAotc2VsZi5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdl
JywgYXN5bmMgKGV2ZW50KSA9PiB7Ci0gICAgaWYgKCFzZWxmLmludGVybmFscykgewotICAgICAg
ICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoJ05vIGludGVybmFscycpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgcXVlcnlBcHBCb3VuZFZhbHVlKGV2ZW50LCBmYWxzZSk7Ci19KTsK
LQotYXN5bmMgZnVuY3Rpb24gcXVlcnlBcHBCb3VuZFZhbHVlKGV2ZW50LCBoYXZlU2VudEluaXRp
YWxNZXNzYWdlKQotewotICAgIHZhciByZXN1bHQgPSBhd2FpdCBpbnRlcm5hbHMubGFzdE5hdmln
YXRpb25XYXNBcHBCb3VuZCgpOwotICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgaWYgKGV2ZW50
LmRhdGEgPT0gIkZJUlNUIikgewotICAgICAgICAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdl
KCdhcHAtYm91bmQnKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAg
IGlmICghaGF2ZVNlbnRJbml0aWFsTWVzc2FnZSkKLSAgICAgICAgICAgIGV2ZW50LnNvdXJjZS5w
b3N0TWVzc2FnZSgnc3RhcnRzIGFwcC1ib3VuZCcpOwotCi0gICAgICAgIHF1ZXJ5QXBwQm91bmRW
YWx1ZShldmVudCwgdHJ1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBldmVudC5z
b3VyY2UucG9zdE1lc3NhZ2UoJ25vbiBhcHAtYm91bmQnKTsKLX0KLQotKVNXUkVTT1VSQ0UiOwot
Ci0KLXN0YXRpYyBTdHJpbmcgZXhwZWN0ZWRNZXNzYWdlOwotc3RhdGljIGJvb2wgcmVjZWl2ZWRN
ZXNzYWdlID0gZmFsc2U7Ci0KLUBpbnRlcmZhY2UgU1dBcHBCb3VuZFJlcXVlc3RNZXNzYWdlSGFu
ZGxlciA6IE5TT2JqZWN0IDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyPgotQGVuZAotCi1AaW1wbGVt
ZW50YXRpb24gU1dBcHBCb3VuZFJlcXVlc3RNZXNzYWdlSGFuZGxlcgotLSAodm9pZCl1c2VyQ29u
dGVudENvbnRyb2xsZXI6KFdLVXNlckNvbnRlbnRDb250cm9sbGVyICopdXNlckNvbnRlbnRDb250
cm9sbGVyIGRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOihXS1NjcmlwdE1lc3NhZ2UgKiltZXNzYWdl
Ci17Ci0gICAgRVhQRUNUX1dLX1NUUkVRKG1lc3NhZ2UuYm9keSwgZXhwZWN0ZWRNZXNzYWdlKTsK
LSAgICByZWNlaXZlZE1lc3NhZ2UgPSB0cnVlOwotfQotQGVuZAotCi1URVNUKEluQXBwQnJvd3Nl
clByaXZhY3ksIFJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFVwZGF0ZXNBcHBCb3VuZFZhbHVl
KQotewotICAgIHN0YXRpYyBib29sIGlzRG9uZSA9IGZhbHNlOwotCi0gICAgW1tXS1dlYnNpdGVE
YXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURh
dGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFu
dFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7Ci0gICAgICAgIGlzRG9uZSA9IHRydWU7Ci0g
ICAgfV07Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwotCi0gICAgV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0
aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nl
c3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107Ci0gICAg
V0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJJbnRlcm5hbHNJbmpl
Y3RlZEJ1bmRsZVRlc3QiKSk7Ci0gICAgY29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbCA9IChXS1By
b2Nlc3NQb29sICopY29udGV4dC5nZXQoKTsKLQotICAgIFJldGFpblB0cjxTV0FwcEJvdW5kUmVx
dWVzdE1lc3NhZ2VIYW5kbGVyPiBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tTV0FwcEJvdW5k
UmVxdWVzdE1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7Ci0gICAgW1tjb25maWd1cmF0aW9u
IHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhh
bmRsZXIuZ2V0KCkgbmFtZTpAInN3Il07Ci0KLSAgICBhdXRvIHdlYlZpZXcxID0gYWRvcHROUyhb
W1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAw
KSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKLSAgICBhdXRvIHdlYlZpZXcyID0gYWRv
cHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgw
MCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKLQotICAgIGF1dG8gZGVsZWdh
dGUgPSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOwotICAgIFtkZWxlZ2F0
ZSBzZXREaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6XihXS1dlYlZpZXcgKiwgTlNV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLCB2b2lkICheY2FsbGJhY2spKE5T
VVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICopKSB7
Ci0gICAgICAgIEVYUEVDVF9XS19TVFJFUShjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLmF1dGhl
bnRpY2F0aW9uTWV0aG9kLCBOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kU2VydmVyVHJ1c3QpOwot
ICAgICAgICBjYWxsYmFjayhOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwg
W05TVVJMQ3JlZGVudGlhbCBjcmVkZW50aWFsRm9yVHJ1c3Q6Y2hhbGxlbmdlLnByb3RlY3Rpb25T
cGFjZS5zZXJ2ZXJUcnVzdF0pOwotICAgIH1dOwotCi0gICAgd2ViVmlldzEuZ2V0KCkubmF2aWdh
dGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7Ci0gICAgd2ViVmlldzIuZ2V0KCkubmF2aWdh
dGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7Ci0KLSAgICBTZXJ2aWNlV29ya2VyVENQU2Vy
dmVyIHNlcnZlcih7Ci0gICAgICAgIHsgInRleHQvaHRtbCIsIG1haW5TV0J5dGVzRGVmYXVsdFZh
bHVlIH0sCi0gICAgICAgIHsgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiLCBzY3JpcHRCeXRlc0Rl
ZmF1bHRWYWx1ZSB9LAotICAgIH0sIHsKLSAgICAgICAgeyAidGV4dC9odG1sIiwgbWFpblNXQnl0
ZXNEZWZhdWx0VmFsdWUgfSwKLSAgICAgICAgeyAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIsIHNj
cmlwdEJ5dGVzRGVmYXVsdFZhbHVlIH0sCi0gICAgfSk7Ci0KLSAgICAvLyBMb2FkIFdlYlZpZXcg
d2l0aCBhbiBhcHAtYm91bmQgcmVxdWVzdC4gV2UgZXhwZWN0IHRoZSBTZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHkgdG8gYmUgYXBwLWJvdW5kLgotICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJhcHAtYm91
bmQiOwotICAgIFt3ZWJWaWV3MSBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKLSAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkTWVzc2FnZSk7Ci0KLSAgICAvLyBMb2Fk
IFdlYlZpZXcgd2l0aCBhIG5vbiBhcHAtYm91bmQgcmVxdWVzdC4gV2UgZXhwZWN0IHRoZSBTZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHkgdG8gYmUgYXBwLWJvdW5kCi0gICAgLy8gYXQgZmlyc3QsIGJ1
dCB0aGVuIGJlY29tZSBub24gYXBwLWJvdW5kIG9uY2UgdGhlIHNlY29uZCB3ZWJWaWV3IGlzIGNs
b3NlZCBhbmQgaXRzIGNsaWVudCBpcyB1bnJlZ2lzdGVyZWQuCi0gICAgZXhwZWN0ZWRNZXNzYWdl
ID0gInN0YXJ0cyBhcHAtYm91bmQiOwotICAgIHJlY2VpdmVkTWVzc2FnZSA9IGZhbHNlOwotICAg
IE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5vbkFwcEJvdW5kUmVxdWVzdCA9IFtOU011dGFibGVVUkxS
ZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAiaHR0cDovLzEyNy4wLjAuMTolZC9tYWluLmh0bWwiLCBzZXJ2ZXIucG9y
dCgpXV1dOwotICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgbm9u
QXBwQm91bmRSZXF1ZXN0Ll9pc05vbkFwcEluaXRpYXRlZCA9IFlFUzsKLSAgICBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLQotICAgIFt3ZWJWaWV3MiBsb2FkUmVxdWVzdDpub25B
cHBCb3VuZFJlcXVlc3RdOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRN
ZXNzYWdlKTsKLQotICAgIC8vIENsb3NlIHRoZSBhcHAtYm91bmQgdmlldy4gV2UgZXhwZWN0IHRo
YXQgdGhlIGV4aXN0aW5nIHdvcmtlciB3aWxsIGJlY29tZSBub24gYXBwLWJvdW5kCi0gICAgLy8g
bm93IHRoYXQgYWxsIGFwcC1ib3VuZCBjbGllbnRzIGhhdmUgYmVlbiByZW1vdmVkLgotICAgIGV4
cGVjdGVkTWVzc2FnZSA9ICJub24gYXBwLWJvdW5kIjsKLSAgICByZWNlaXZlZE1lc3NhZ2UgPSBm
YWxzZTsKLSAgICBbd2ViVmlldzEgX2Nsb3NlXTsKLSAgICB3ZWJWaWV3MSA9IG51bGxwdHI7Ci0K
LSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkTWVzc2FnZSk7Ci19Ci0KLSNl
bmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeVBsdWdJbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeVBsdWdJbi5tbQpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODE2YzE1ZjQyYzRmNzE1ODVhZDM5NjdlYjk4MjJiODM2
MDI4MzgxOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3lQ
bHVnSW4ubW0KKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lt
cG9ydCAiY29uZmlnLmgiCi0KLSNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCi0jaW1wb3J0
IDxXZWJLaXQvV0tXZWJQcm9jZXNzUGx1Z0luLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV0tXZWJQcm9j
ZXNzUGx1Z0luTG9hZERlbGVnYXRlLmg+Ci0jaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+Ci0KLUBp
bnRlcmZhY2UgSW5BcHBCcm93c2VyUHJpdmFjeVBsdWdJbiA6IE5TT2JqZWN0IDxXS1dlYlByb2Nl
c3NQbHVnSW4sIFdLV2ViUHJvY2Vzc1BsdWdJbkxvYWREZWxlZ2F0ZT4KLUBlbmQKLQotQGltcGxl
bWVudGF0aW9uIEluQXBwQnJvd3NlclByaXZhY3lQbHVnSW4geyB9Ci0KLS0gKE5TVVJMUmVxdWVz
dCAqKXdlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6KFdLV2ViUHJvY2Vz
c1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgZnJhbWU6KFdLV2Vi
UHJvY2Vzc1BsdWdJbkZyYW1lICopZnJhbWUgd2lsbFNlbmRSZXF1ZXN0Rm9yUmVzb3VyY2U6KHVp
bnQ2NF90KXJlc291cmNlIHJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgcmVkaXJlY3RS
ZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlZGlyZWN0UmVzcG9uc2UKLXsKLSAgICByZXR1cm4g
YWRvcHROUyhbW05TVVJMUmVxdWVzdCBhbGxvY10gaW5pdFdpdGhVUkw6cmVxdWVzdC5VUkxdKS5h
dXRvcmVsZWFzZSgpOwotfQotCi1AZW5kCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL2FwcC1wcml2YWN5LXJlcG9ydC1pZnJhbWUuaHRtbCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvYXBwLXByaXZhY3ktcmVwb3J0LWlmcmFt
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmU2OWRlMjliYjJkMWQ2NDM0YjhiMjlhZTc3NWFkOGMyZTQ4YzUz
OTEKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IDRkYTEzYjE1MzQ0NTk1ZjE0NzZlMTc1
ODZkOTE2OGE1Y2QxM2YyMjkuLjM3YzhjYWUwNWVlMjQxMWM1ZmM0ODk2Y2JkZjkzNTY2OWMyZTEw
MjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtMzg4LDkgKzM4OCw4IEBAIGludGVy
ZmFjZSBUZXN0UnVubmVyIHsKICAgICBib29sZWFuIGhhc0FwcEJvdW5kU2Vzc2lvbigpOwogICAg
IHVuZGVmaW5lZCBjbGVhckFwcEJvdW5kU2Vzc2lvbigpOwogICAgIHVuZGVmaW5lZCBzZXRBcHBC
b3VuZERvbWFpbnMob2JqZWN0IG9yaWdpbnNBcnJheSwgb2JqZWN0IGNhbGxiYWNrKTsKLSAgICB1
bmRlZmluZWQgYXBwQm91bmRSZXF1ZXN0Q29udGV4dERhdGFGb3JEb21haW4oRE9NU3RyaW5nIGRv
bWFpbiwgb2JqZWN0IGNhbGxiYWNrKTsKLSAgICBib29sZWFuIGRpZExvYWRBcHBCb3VuZFJlcXVl
c3QoKTsKLSAgICBib29sZWFuIGRpZExvYWROb25BcHBCb3VuZFJlcXVlc3QoKTsKKyAgICBib29s
ZWFuIGRpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0KCk7CisgICAgYm9vbGVhbiBkaWRMb2FkTm9u
QXBwSW5pdGlhdGVkUmVxdWVzdCgpOwogCiAgICAgdW5kZWZpbmVkIGluamVjdFVzZXJTY3JpcHQo
RE9NU3RyaW5nIHN0cmluZyk7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcg
dXNlclNjcmlwdEluamVjdGVkQ291bnQ7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IDY3YjM1M2YzMDBm
ZmJmNjVkMzQ0NmMyZTRkODIxMjA1ZTYzZTE3YTcuLjZlNDE0Y2NkZTY3MGU3MDYyNjhiNDY0YTQz
MDE2YWIzN2Y1MmM3OGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC00MTUsMTQgKzQxNSw2IEBAIHZv
aWQgSW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlKFdLQnVuZGxlUGFnZVJl
ZiBwYWdlLCBXS1N0cmluZ1JlZiBtCiAgICAgICAgIG1fdGVzdFJ1bm5lci0+Y2FsbERpZFJlY2Vp
dmVMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnNDYWxsYmFjayhXVEZNb3ZlKGRvbWFpbnMpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKLSAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4
Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkNhbGxEaWRSZWNlaXZlQXBwQm91bmRSZXF1ZXN0Q29udGV4
dERhdGFGb3JEb21haW4iKSkgewotICAgICAgICBBU1NFUlQobWVzc2FnZUJvZHkpOwotICAgICAg
ICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLU3RyaW5nR2V0VHlwZUlEKCkp
OwotCi0gICAgICAgIGF1dG8gcmVzdWx0U3RyaW5nID0gdG9XVEZTdHJpbmcoc3RhdGljX2Nhc3Q8
V0tTdHJpbmdSZWY+KG1lc3NhZ2VCb2R5KSk7Ci0gICAgICAgIG1fdGVzdFJ1bm5lci0+Y2FsbERp
ZFJlY2VpdmVBcHBCb3VuZFJlcXVlc3RDb250ZXh0RGF0YUZvckRvbWFpbkNhbGxiYWNrKFdURk1v
dmUocmVzdWx0U3RyaW5nKSk7Ci0gICAgfQogCiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRG
OENTdHJpbmcobWVzc2FnZU5hbWUsICJDYWxsRGlkUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxz
Q2FsbGJhY2siKSkgewogICAgICAgICBtX3Rlc3RSdW5uZXItPmNhbGxEaWRSZW1vdmVBbGxTZXNz
aW9uQ3JlZGVudGlhbHNDYWxsYmFjaygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggM2Y3MmFjMmE0ODE0NmUzMDE0
ODJkZDJlZDRlYmMxOTJmZjU1NWQzMS4uNDZmZjdhNWI3NTRiOGEwN2ExYmU2OTRmNDY5OWE5MjIx
NjhmZmVjMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC02NDUsNyArNjQ1LDYgQEAgZW51bSB7CiAgICAgRGlkU2V0
QXBwQm91bmREb21haW5zQ2FsbGJhY2tJRCwKICAgICBFbnRlckZ1bGxzY3JlZW5Gb3JFbGVtZW50
Q2FsbGJhY2tJRCwKICAgICBFeGl0RnVsbHNjcmVlbkZvckVsZW1lbnRDYWxsYmFja0lELAotICAg
IEFwcEJvdW5kUmVxdWVzdENvbnRleHREYXRhRm9yRG9tYWluQ2FsbGJhY2tJRCwKICAgICBEaWRO
b3RIYW5kbGVUYXBBc01lYW5pbmdmdWxDbGlja0NhbGxiYWNrSUQsCiAgICAgRmlyc3RVSVNjcmlw
dENhbGxiYWNrSUQgPSAxMDAKIH07CkBAIC0yMTE1LDI2ICsyMTE0LDE0IEBAIHZvaWQgVGVzdFJ1
bm5lcjo6ZGlkU2V0QXBwQm91bmREb21haW5zQ2FsbGJhY2soKQogICAgIGNhbGxUZXN0UnVubmVy
Q2FsbGJhY2soRGlkU2V0QXBwQm91bmREb21haW5zQ2FsbGJhY2tJRCk7CiB9CiAKLXZvaWQgVGVz
dFJ1bm5lcjo6YXBwQm91bmRSZXF1ZXN0Q29udGV4dERhdGFGb3JEb21haW4oSlNTdHJpbmdSZWYg
ZG9tYWluLCBKU1ZhbHVlUmVmIGNhbGxiYWNrKQorYm9vbCBUZXN0UnVubmVyOjpkaWRMb2FkQXBw
SW5pdGlhdGVkUmVxdWVzdCgpCiB7Ci0gICAgY2FjaGVUZXN0UnVubmVyQ2FsbGJhY2soQXBwQm91
bmRSZXF1ZXN0Q29udGV4dERhdGFGb3JEb21haW5DYWxsYmFja0lELCBjYWxsYmFjayk7Ci0gICAg
cG9zdE1lc3NhZ2UoIkFwcEJvdW5kUmVxdWVzdENvbnRleHREYXRhRm9yRG9tYWluIiwgZG9tYWlu
KTsKKyAgICByZXR1cm4gcG9zdFN5bmNocm9ub3VzUGFnZU1lc3NhZ2VSZXR1cm5pbmdCb29sZWFu
KCJEaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdCIpOwogfQogCi12b2lkIFRlc3RSdW5uZXI6OmNh
bGxEaWRSZWNlaXZlQXBwQm91bmRSZXF1ZXN0Q29udGV4dERhdGFGb3JEb21haW5DYWxsYmFjayhT
dHJpbmcmJiBjb250ZXh0RG9tYWluKQorYm9vbCBUZXN0UnVubmVyOjpkaWRMb2FkTm9uQXBwSW5p
dGlhdGVkUmVxdWVzdCgpCiB7Ci0gICAgSlNWYWx1ZVJlZiByZXN1bHRWYWx1ZSA9IEpTVmFsdWVN
YWtlU3RyaW5nKG1haW5GcmFtZUpTQ29udGV4dCgpLCBjcmVhdGVKU1N0cmluZyhjb250ZXh0RG9t
YWluLnV0ZjgoKS5kYXRhKCkpLmdldCgpKTsKLSAgICBjYWxsVGVzdFJ1bm5lckNhbGxiYWNrKEFw
cEJvdW5kUmVxdWVzdENvbnRleHREYXRhRm9yRG9tYWluQ2FsbGJhY2tJRCwgMSwgJnJlc3VsdFZh
bHVlKTsKLX0KLQotYm9vbCBUZXN0UnVubmVyOjpkaWRMb2FkQXBwQm91bmRSZXF1ZXN0KCkKLXsK
LSAgICByZXR1cm4gcG9zdFN5bmNocm9ub3VzUGFnZU1lc3NhZ2VSZXR1cm5pbmdCb29sZWFuKCJE
aWRMb2FkQXBwQm91bmRSZXF1ZXN0Iik7Ci19Ci0KLWJvb2wgVGVzdFJ1bm5lcjo6ZGlkTG9hZE5v
bkFwcEJvdW5kUmVxdWVzdCgpCi17Ci0gICAgcmV0dXJuIHBvc3RTeW5jaHJvbm91c1BhZ2VNZXNz
YWdlUmV0dXJuaW5nQm9vbGVhbigiRGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdCIpOworICAgIHJl
dHVybiBwb3N0U3luY2hyb25vdXNQYWdlTWVzc2FnZVJldHVybmluZ0Jvb2xlYW4oIkRpZExvYWRO
b25BcHBJbml0aWF0ZWRSZXF1ZXN0Iik7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0SXNTcGVl
Y2hSZWNvZ25pdGlvblBlcm1pc3Npb25HcmFudGVkKGJvb2wgZ3JhbnRlZCkKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5kZXggMWJl
NjYzZDhlZDgxYzM5MGMxZDhiOWM2Y2I2MTAwZGJhODQ1MTQyNi4uM2EzNGJhMDczYmMxOWIwYTgx
NGZkZmIyMmEyYzhjZjBmNDgxNDhmYSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKQEAgLTQ5NywxMCArNDk3LDkgQEAgcHVibGlj
OgogICAgIHZvaWQgY2xlYXJBcHBCb3VuZFNlc3Npb24oKTsKICAgICB2b2lkIHNldEFwcEJvdW5k
RG9tYWlucyhKU1ZhbHVlUmVmIG9yaWdpbkFycmF5LCBKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKICAg
ICB2b2lkIGRpZFNldEFwcEJvdW5kRG9tYWluc0NhbGxiYWNrKCk7Ci0gICAgdm9pZCBhcHBCb3Vu
ZFJlcXVlc3RDb250ZXh0RGF0YUZvckRvbWFpbihKU1N0cmluZ1JlZiwgSlNWYWx1ZVJlZik7Ci0g
ICAgdm9pZCBjYWxsRGlkUmVjZWl2ZUFwcEJvdW5kUmVxdWVzdENvbnRleHREYXRhRm9yRG9tYWlu
Q2FsbGJhY2soU3RyaW5nJiYpOwotICAgIGJvb2wgZGlkTG9hZEFwcEJvdW5kUmVxdWVzdCgpOwot
ICAgIGJvb2wgZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdCgpOworCisgICAgYm9vbCBkaWRMb2Fk
QXBwSW5pdGlhdGVkUmVxdWVzdCgpOworICAgIGJvb2wgZGlkTG9hZE5vbkFwcEluaXRpYXRlZFJl
cXVlc3QoKTsKIAogICAgIHNpemVfdCB1c2VyU2NyaXB0SW5qZWN0ZWRDb3VudCgpIGNvbnN0Owog
ICAgIHZvaWQgaW5qZWN0VXNlclNjcmlwdChKU1N0cmluZ1JlZik7CmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGNmYzljNDQ4M2M4MjVkOTEzZWQyN2E0ZDU1
ODg0ZjI0MmQ3NmYwMDIuLjk4M2I4NWIwYTNhMjg0ZjA5Yjc4NDAwZTA4Y2MwNzIwYWNhMzQwMTkg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0xMDc4LDcg
KzEwNzgsNyBAQCBib29sIFRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFs
dWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zLCBSZQogICAgICAgICB1cGRhdGVMaXZlRG9j
dW1lbnRzQWZ0ZXJUZXN0KCk7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIGNsZWFyQXBw
bGljYXRpb25CdW5kbGVJZGVudGlmaWVyVGVzdGluZ092ZXJyaWRlKCk7Ci0gICAgICAgIGNsZWFy
QXBwQm91bmROYXZpZ2F0aW9uRGF0YSgpOworICAgICAgICBjbGVhckFwcFByaXZhY3lSZXBvcnRU
ZXN0aW5nRGF0YSgpOwogI2VuZGlmCiAgICAgICAgIGNsZWFyQnVuZGxlSWRlbnRpZmllckluTmV0
d29ya1Byb2Nlc3MoKTsKICAgICB9CkBAIC0yNzIzLDIxICsyNzIzLDE3IEBAIHZvaWQgVGVzdENv
bnRyb2xsZXI6OnJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscygpCiB7CiB9CiAKLXZvaWQgVGVz
dENvbnRyb2xsZXI6OmFwcEJvdW5kUmVxdWVzdENvbnRleHREYXRhRm9yRG9tYWluKFdLU3RyaW5n
UmVmKQotewotfQotCi1ib29sIFRlc3RDb250cm9sbGVyOjpkaWRMb2FkQXBwQm91bmRSZXF1ZXN0
KCkKK2Jvb2wgVGVzdENvbnRyb2xsZXI6OmRpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0KCkKIHsK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgVGVzdENvbnRyb2xsZXI6OmRpZExvYWROb25B
cHBCb3VuZFJlcXVlc3QoKQorYm9vbCBUZXN0Q29udHJvbGxlcjo6ZGlkTG9hZE5vbkFwcEluaXRp
YXRlZFJlcXVlc3QoKQogewogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBUZXN0Q29udHJv
bGxlcjo6Y2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhKCkKK3ZvaWQgVGVzdENvbnRyb2xsZXI6
OmNsZWFyQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCmluZGV4IGJjMGVjNTI2OTM0NzM2MWMzMTVlNmU0ZDA3
ZGI4MWFiYjZiNDdjNmUuLjcyODY0ODQxY2U2MDQ4OTBmN2I1NjcwMmM0YjZiMDRmZjZjODdiZGEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKQEAgLTI2MiwxMCArMjYy
LDkgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnMoKTsK
ICAgICB2b2lkIGNsZWFyQXBwQm91bmRTZXNzaW9uKCk7CiAgICAgdm9pZCByZWluaXRpYWxpemVB
cHBCb3VuZERvbWFpbnMoKTsKLSAgICB2b2lkIGFwcEJvdW5kUmVxdWVzdENvbnRleHREYXRhRm9y
RG9tYWluKFdLU3RyaW5nUmVmKTsKLSAgICB2b2lkIGNsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0
YSgpOwotICAgIGJvb2wgZGlkTG9hZEFwcEJvdW5kUmVxdWVzdCgpOwotICAgIGJvb2wgZGlkTG9h
ZE5vbkFwcEJvdW5kUmVxdWVzdCgpOworICAgIHZvaWQgY2xlYXJBcHBQcml2YWN5UmVwb3J0VGVz
dGluZ0RhdGEoKTsKKyAgICBib29sIGRpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0KCk7CisgICAg
Ym9vbCBkaWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdCgpOwogCiAgICAgdm9pZCB1cGRhdGVC
dW5kbGVJZGVudGlmaWVySW5OZXR3b3JrUHJvY2Vzcyhjb25zdCBzdGQ6OnN0cmluZyYgYnVuZGxl
SWRlbnRpZmllcik7CiAgICAgdm9pZCBjbGVhckJ1bmRsZUlkZW50aWZpZXJJbk5ldHdvcmtQcm9j
ZXNzKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9u
LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IDVk
MzI3MjM5MmJlZTEwYzdiY2VlYWQ0YzNmOTIxNDZlMWViOTNlYTAuLjhkNzZlNGJhMGRhYmFkOGE5
NGM2ZWE0YWI5YTViM2NkYzBkMWY3OWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdElu
dm9jYXRpb24uY3BwCkBAIC03OTIsMTIgKzc5Miw2IEBAIHZvaWQgVGVzdEludm9jYXRpb246OmRp
ZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1l
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4
Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkFwcEJvdW5kUmVxdWVzdENvbnRleHREYXRhRm9yRG9tYWlu
IikpIHsKLSAgICAgICAgV0tTdHJpbmdSZWYgZG9tYWluID0gc3RyaW5nVmFsdWUobWVzc2FnZUJv
ZHkpOwotICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuYXBwQm91bmRSZXF1ZXN0
Q29udGV4dERhdGFGb3JEb21haW4oZG9tYWluKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCkBAIC0xMDcxLDExICsxMDY1LDExIEBAIFdL
UmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91
c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgIHJldHVybiBhZG9wdFdLKFdLQm9vbGVhbkNy
ZWF0ZShzdGF0aXN0aWNJbkRhdGFiYXNlT25jZSkpOwogICAgIH0KIAotICAgIGlmIChXS1N0cmlu
Z0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiRGlkTG9hZEFwcEJvdW5kUmVxdWVz
dCIpKQotICAgICAgICByZXR1cm4gYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoVGVzdENvbnRyb2xs
ZXI6OnNpbmdsZXRvbigpLmRpZExvYWRBcHBCb3VuZFJlcXVlc3QoKSkpOworICAgIGlmIChXS1N0
cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiRGlkTG9hZEFwcEluaXRpYXRl
ZFJlcXVlc3QiKSkKKyAgICAgICAgcmV0dXJuIGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKFRlc3RD
b250cm9sbGVyOjpzaW5nbGV0b24oKS5kaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdCgpKSk7CiAK
LSAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkRpZExv
YWROb25BcHBCb3VuZFJlcXVlc3QiKSkKLSAgICAgICAgcmV0dXJuIGFkb3B0V0soV0tCb29sZWFu
Q3JlYXRlKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5kaWRMb2FkTm9uQXBwQm91bmRSZXF1
ZXN0KCkpKTsKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFt
ZSwgIkRpZExvYWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0IikpCisgICAgICAgIHJldHVybiBhZG9w
dFdLKFdLQm9vbGVhbkNyZWF0ZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuZGlkTG9hZE5v
bkFwcEluaXRpYXRlZFJlcXVlc3QoKSkpOwogCiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRG
OENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRTdGF0aXN0aWNzR3JhbmRmYXRoZXJlZCIpKSB7CiAg
ICAgICAgIGF1dG8gbWVzc2FnZUJvZHlEaWN0aW9uYXJ5ID0gZGljdGlvbmFyeVZhbHVlKG1lc3Nh
Z2VCb2R5KTsKQEAgLTE1ODEsMTIgKzE1NzUsNiBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRS
ZWNlaXZlTG9hZGVkU3VicmVzb3VyY2VEb21haW5zKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucwog
ICAgIHBvc3RQYWdlTWVzc2FnZSgiQ2FsbERpZFJlY2VpdmVMb2FkZWRTdWJyZXNvdXJjZURvbWFp
bnMiLCBtZXNzYWdlQm9keSk7CiB9CiAKLXZvaWQgVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVB
cHBCb3VuZFJlcXVlc3RDb250ZXh0RGF0YUZvckRvbWFpbihTdHJpbmcmJiBkb21haW4pCi17Ci0g
ICAgYXV0byBtZXNzYWdlQm9keSA9IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGRvbWFp
bi51dGY4KCkuZGF0YSgpKTsKLSAgICBwb3N0UGFnZU1lc3NhZ2UoIkNhbGxEaWRSZWNlaXZlQXBw
Qm91bmRSZXF1ZXN0Q29udGV4dERhdGFGb3JEb21haW4iLCBtZXNzYWdlQm9keSk7Ci19Ci0KIHZv
aWQgVGVzdEludm9jYXRpb246OmRpZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscygpCiB7CiAg
ICAgcG9zdFBhZ2VNZXNzYWdlKCJDYWxsRGlkUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzQ2Fs
bGJhY2siKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRp
b24uaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAppbmRleCBhOGM4
NTRlMjc2N2Q2OTgyNmVkOTc2MzNiNzFlMzI1ODFlODZmMjg2Li5mMTEyNmEzZWU1NTJjZWRkNGIw
MWViYmRjZjEzNWEyNWZkYTAyMjYxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RJbnZvY2F0aW9uLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2Nh
dGlvbi5oCkBAIC05Nyw3ICs5Nyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlbW92ZUFsbFNl
c3Npb25DcmVkZW50aWFscygpOwogCiAgICAgdm9pZCBkaWRTZXRBcHBCb3VuZERvbWFpbnMoKTsK
LSAgICB2b2lkIGRpZFJlY2VpdmVBcHBCb3VuZFJlcXVlc3RDb250ZXh0RGF0YUZvckRvbWFpbihT
dHJpbmcmJik7CiAKICAgICB2b2lkIGR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCk7CiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2Nv
YS5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5t
bQppbmRleCA2ZjE0ZmNkN2IzMWY0MzY5NWVlYWExNzM2MDE4ZjI4NTg5MDE0YzA3Li45OGNjYjRk
YjlhYjA4YmFiMjkzMzBhYjRjYmEyZTI0NWU5OTQ0ZjdkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCkBAIC0zODQsMjMgKzM4
NCw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmNsZWFyTG9hZGVkU3VicmVzb3VyY2VEb21haW5z
KCkKICAgICBbW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uKCkgd2Vic2l0ZURhdGFTdG9yZV0g
X2NsZWFyTG9hZGVkU3VicmVzb3VyY2VEb21haW5zRm9yOnBhcmVudFZpZXctPnBsYXRmb3JtVmll
dygpXTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6YXBwQm91bmRSZXF1ZXN0Q29udGV4dERh
dGFGb3JEb21haW4oV0tTdHJpbmdSZWYgZG9tYWluKQotewotICAgIGF1dG8qIHBhcmVudFZpZXcg
PSBtYWluV2ViVmlldygpOwotICAgIGlmICghcGFyZW50VmlldykKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgW21fbWFpbldlYlZpZXctPnBsYXRmb3JtVmlldygpIF9hcHBCb3VuZE5hdmlnYXRpb25E
YXRhRm9yRG9tYWluOnRvV1RGU3RyaW5nKGRvbWFpbikgY29tcGxldGlvbkhhbmRsZXI6XihOU1N0
cmluZyAqY29udGV4dCkgewotICAgICAgICBpZiAoIWNvbnRleHQpIHsKLSAgICAgICAgICAgIG1f
Y3VycmVudEludm9jYXRpb24tPmRpZFJlY2VpdmVBcHBCb3VuZFJlcXVlc3RDb250ZXh0RGF0YUZv
ckRvbWFpbih7IH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAg
bV9jdXJyZW50SW52b2NhdGlvbi0+ZGlkUmVjZWl2ZUFwcEJvdW5kUmVxdWVzdENvbnRleHREYXRh
Rm9yRG9tYWluKFN0cmluZyhjb250ZXh0KSk7Ci0gICAgfV07Ci19Ci0KLWJvb2wgVGVzdENvbnRy
b2xsZXI6OmRpZExvYWRBcHBCb3VuZFJlcXVlc3QoKQorYm9vbCBUZXN0Q29udHJvbGxlcjo6ZGlk
TG9hZEFwcEluaXRpYXRlZFJlcXVlc3QoKQogewogICAgIGF1dG8qIHBhcmVudFZpZXcgPSBtYWlu
V2ViVmlldygpOwogICAgIGlmICghcGFyZW50VmlldykKQEAgLTQwOCw3ICszOTIsNyBAQCBib29s
IFRlc3RDb250cm9sbGVyOjpkaWRMb2FkQXBwQm91bmRSZXF1ZXN0KCkKIAogICAgIF9fYmxvY2sg
Ym9vbCBpc0RvbmUgPSBmYWxzZTsKICAgICBfX2Jsb2NrIGJvb2wgZGlkTG9hZFJlc3VsdCA9IGZh
bHNlOwotICAgIFttX21haW5XZWJWaWV3LT5wbGF0Zm9ybVZpZXcoKSBfZGlkTG9hZEFwcEJvdW5k
UmVxdWVzdDpeKEJPT0wgcmVzdWx0KSB7CisgICAgW21fbWFpbldlYlZpZXctPnBsYXRmb3JtVmll
dygpIF9kaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdDpeKEJPT0wgcmVzdWx0KSB7CiAgICAgICAg
IGRpZExvYWRSZXN1bHQgPSByZXN1bHQ7CiAgICAgICAgIGlzRG9uZSA9IHRydWU7CiAgICAgfV07
CkBAIC00MTYsNyArNDAwLDcgQEAgYm9vbCBUZXN0Q29udHJvbGxlcjo6ZGlkTG9hZEFwcEJvdW5k
UmVxdWVzdCgpCiAgICAgcmV0dXJuIGRpZExvYWRSZXN1bHQ7CiB9CiAKLWJvb2wgVGVzdENvbnRy
b2xsZXI6OmRpZExvYWROb25BcHBCb3VuZFJlcXVlc3QoKQorYm9vbCBUZXN0Q29udHJvbGxlcjo6
ZGlkTG9hZE5vbkFwcEluaXRpYXRlZFJlcXVlc3QoKQogewogICAgIGF1dG8qIHBhcmVudFZpZXcg
PSBtYWluV2ViVmlldygpOwogICAgIGlmICghcGFyZW50VmlldykKQEAgLTQyNCw3ICs0MDgsNyBA
QCBib29sIFRlc3RDb250cm9sbGVyOjpkaWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0KCkKIAogICAg
IF9fYmxvY2sgYm9vbCBpc0RvbmUgPSBmYWxzZTsKICAgICBfX2Jsb2NrIGJvb2wgZGlkTG9hZFJl
c3VsdCA9IGZhbHNlOwotICAgIFttX21haW5XZWJWaWV3LT5wbGF0Zm9ybVZpZXcoKSBfZGlkTG9h
ZE5vbkFwcEJvdW5kUmVxdWVzdDpeKEJPT0wgcmVzdWx0KSB7CisgICAgW21fbWFpbldlYlZpZXct
PnBsYXRmb3JtVmlldygpIF9kaWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdDpeKEJPT0wgcmVz
dWx0KSB7CiAgICAgICAgIGRpZExvYWRSZXN1bHQgPSByZXN1bHQ7CiAgICAgICAgIGlzRG9uZSA9
IHRydWU7CiAgICAgfV07CkBAIC00MzIsMTQgKzQxNiwxNCBAQCBib29sIFRlc3RDb250cm9sbGVy
OjpkaWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0KCkKICAgICByZXR1cm4gZGlkTG9hZFJlc3VsdDsK
IH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6Y2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhKCkK
K3ZvaWQgVGVzdENvbnRyb2xsZXI6OmNsZWFyQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKCkK
IHsKICAgICBhdXRvKiBwYXJlbnRWaWV3ID0gbWFpbldlYlZpZXcoKTsKICAgICBpZiAoIXBhcmVu
dFZpZXcpCiAgICAgICAgIHJldHVybjsKIAogICAgIF9fYmxvY2sgYm9vbCBkb25lQ2xlYXJpbmcg
PSBmYWxzZTsKLSAgICBbbV9tYWluV2ViVmlldy0+cGxhdGZvcm1WaWV3KCkgX2NsZWFyQXBwQm91
bmROYXZpZ2F0aW9uRGF0YTpeeworICAgIFttX21haW5XZWJWaWV3LT5wbGF0Zm9ybVZpZXcoKSBf
Y2xlYXJBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGE6XnsKICAgICAgICAgZG9uZUNsZWFyaW5n
ID0gdHJ1ZTsKICAgICB9XTsKICAgICBwbGF0Zm9ybVJ1blVudGlsKGRvbmVDbGVhcmluZywgbm9U
aW1lb3V0KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFJ1
bm5lcldLV2ViVmlldy5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVubmVy
V0tXZWJWaWV3LmgKaW5kZXggNGNkNmRhMWZkNmY4ZTc0NGYzOTA0ZTA2YWViYzgyNjlmMWFkZWEz
OS4uMDc0NzZiNmUxYWU4OTEwMGU5ZmJiOWRjZWUyMjYzNzM5ODc4MTI4MiAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVubmVyV0tXZWJWaWV3LmgKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVubmVyV0tXZWJWaWV3LmgKQEAgLTgy
LDggKzgyLDcgQEAKIAogLSAodm9pZClkaXNtaXNzQWN0aXZlTWVudTsKIC0gKHZvaWQpcmVzZXRJ
bnRlcmFjdGlvbkNhbGxiYWNrczsKLS0gKHZvaWQpX2FwcEJvdW5kTmF2aWdhdGlvbkRhdGFGb3JE
b21haW46KE5TU3RyaW5nICopZG9tYWluIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1N0
cmluZyAqIGNvbnRleHQpKWNvbXBsZXRpb25IYW5kbGVyOwotLSAodm9pZClfZGlkTG9hZEFwcEJv
dW5kUmVxdWVzdDoodm9pZCAoXikoQk9PTCByZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyOwotLSAo
dm9pZClfZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdDoodm9pZCAoXikoQk9PTCByZXN1bHQpKWNv
bXBsZXRpb25IYW5kbGVyOworLSAodm9pZClfZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3Q6KHZv
aWQgKF4pKEJPT0wgcmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpX2RpZExvYWRO
b25BcHBJbml0aWF0ZWRSZXF1ZXN0Oih2b2lkICheKShCT09MIHJlc3VsdCkpY29tcGxldGlvbkhh
bmRsZXI7CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2Ev
VGVzdFJ1bm5lcldLV2ViVmlldy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVz
dFJ1bm5lcldLV2ViVmlldy5tbQppbmRleCAwZDg0MTE2YWQ0NTM1MWFmMWYxNTViYjUyYzVjYWVm
YjNjZjJjNzUzLi4yZWQ4ZjgwMDc5ZTc4ZTA0ZDljZGI2ZWViM2M1NDJlY2FjOTg4NzBmIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5uZXJXS1dlYlZpZXcu
bW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVubmVyV0tXZWJWaWV3
Lm1tCkBAIC01OTYsMTkgKzU5NiwxNCBAQCBzdGF0aWMgYm9vbCBpc1F1aWNrYm9hcmRWaWV3Q29u
dHJvbGxlcihVSVZpZXdDb250cm9sbGVyICp2aWV3Q29udHJvbGxlcikKICAgICAgICAgc2VsZi5k
aWRIaWRlQ29udGFjdFBpY2tlckNhbGxiYWNrKCk7CiB9CiAKLS0gKHZvaWQpX2FwcEJvdW5kTmF2
aWdhdGlvbkRhdGFGb3JEb21haW46KE5TU3RyaW5nICopZG9tYWluIGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkICheKShOU1N0cmluZyAqIGNvbnRleHQpKWNvbXBsZXRpb25IYW5kbGVyCistICh2b2lk
KV9kaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdDoodm9pZCAoXikoQk9PTCByZXN1bHQpKWNvbXBs
ZXRpb25IYW5kbGVyCiB7Ci0gICAgW3N1cGVyIF9hcHBCb3VuZE5hdmlnYXRpb25EYXRhRm9yRG9t
YWluOmRvbWFpbiBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CisgICAgW3N1
cGVyIF9kaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdDpjb21wbGV0aW9uSGFuZGxlcl07CiB9CiAK
LS0gKHZvaWQpX2RpZExvYWRBcHBCb3VuZFJlcXVlc3Q6KHZvaWQgKF4pKEJPT0wgcmVzdWx0KSlj
b21wbGV0aW9uSGFuZGxlcgorLSAodm9pZClfZGlkTG9hZE5vbkFwcEluaXRpYXRlZFJlcXVlc3Q6
KHZvaWQgKF4pKEJPT0wgcmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcgogewotICAgIFtzdXBlciBf
ZGlkTG9hZEFwcEJvdW5kUmVxdWVzdDpjb21wbGV0aW9uSGFuZGxlcl07Ci19Ci0KLS0gKHZvaWQp
X2RpZExvYWROb25BcHBCb3VuZFJlcXVlc3Q6KHZvaWQgKF4pKEJPT0wgcmVzdWx0KSljb21wbGV0
aW9uSGFuZGxlcgotewotICAgIFtzdXBlciBfZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdDpjb21w
bGV0aW9uSGFuZGxlcl07CisgICAgW3N1cGVyIF9kaWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVz
dDpjb21wbGV0aW9uSGFuZGxlcl07CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3MDhiZWNmNzlmNjk1NTRi
M2M5NTgyNzVlZmE4ZjM4ZTYzYWUxN2VhLi42NzA1ODNlMTY4MjYwNGIzZmM1ODIyNjIzNWMwZTQ4
OWVkNmVhNzJlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMjEtMDYtMjMgIEthdGUgQ2hlbmV5
ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAgQXBwIFBy
aXZhY3kgUmVwb3J0IGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyNzMyNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzk2OTY4NDk+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBBcHAgUHJp
dmFjeSBSZXBvcnQgdGVzdHMgaW50byB0aGVpciBvd24gZGlyZWN0b3J5LgorCisgICAgICAgICog
VGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9y
dC9hdHRyaWJ1dGlvbi1sb2FkLXVybC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLWxvYWQtdXJsLmh0bWw6IFJl
bmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kv
YXBwLWJvdW5kLWF0dHJpYnV0aW9uLWxvYWQtdXJsLmh0bWwuCisgICAgICAgICogaHR0cC90ZXN0
cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tcGluZy1sb2FkLWV4cGVjdGVkLnR4dDog
UmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFj
eS9hcHAtYm91bmQtYXR0cmlidXRpb24tcGluZy1sb2FkLWV4cGVjdGVkLnR4dC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1waW5nLWxvYWQuaHRt
bDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJp
dmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tcGluZy1sb2FkLmh0bWwuCisgICAgICAgICogaHR0
cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tcG9zdC1yZXF1ZXN0LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQv
YXR0cmlidXRpb24tcG9zdC1yZXF1ZXN0Lmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXBv
c3QtcmVxdWVzdC5odG1sLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0
L2F0dHJpYnV0aW9uLXByZWZsaWdodC1hc3luYy1leHBlY3RlZC50eHQ6IFJlbmFtZWQgZnJvbSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0
dHJpYnV0aW9uLXByZWZsaWdodC1hc3luYy1leHBlY3RlZC50eHQuCisgICAgICAgICogaHR0cC90
ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tcHJlZmxpZ2h0LWFzeW5jLmh0bWw6
IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZh
Y3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXByZWZsaWdodC1hc3luYy5odG1sLgorICAgICAgICAq
IGh0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXByZWZsaWdodC1zeW5j
LWV4cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBw
LWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tcHJlZmxpZ2h0LXN5bmMtZXhw
ZWN0ZWQudHh0LgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJp
YnV0aW9uLXByZWZsaWdodC1zeW5jLmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXByZWZs
aWdodC1zeW5jLmh0bWwuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQv
YXR0cmlidXRpb24tc3BlY3VsYXRpdmUtcmV2YWxpZGF0aW9uLWV4cGVjdGVkLnR4dDogUmVuYW1l
ZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAt
Ym91bmQtYXR0cmlidXRpb24tc3BlY3VsYXRpdmUtcmV2YWxpZGF0aW9uLWV4cGVjdGVkLnR4dC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1zcGVj
dWxhdGl2ZS1yZXZhbGlkYXRpb24uaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tc3BlY3Vs
YXRpdmUtcmV2YWxpZGF0aW9uLmh0bWwuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHAtcHJpdmFj
eS1yZXBvcnQvcmVzb3VyY2VzL2ZyYW1lLXdpdGgtYXV0aGVudGljYXRlZC1yZXNvdXJjZS5weTog
UmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFj
eS9yZXNvdXJjZXMvZnJhbWUtd2l0aC1hdXRoZW50aWNhdGVkLXJlc291cmNlLnB5LgorICAgICAg
ICAqIGh0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L3Jlc291cmNlcy9wb3N0LnB5OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9yZXNvdXJjZXMvcmVz
b3VyY2Utd2l0aC1hdXRoLnB5OiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bi1hcHAtYnJvd3Nlci1wcml2YWN5L3Jlc291cmNlcy9yZXNvdXJjZS13aXRoLWF1dGgucHkuCisg
ICAgICAgICogaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRy
aWJ1dGlvbi1sb2FkLXVybC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1wb3N0LXJl
cXVlc3QtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW4tYXBw
LWJyb3dzZXItcHJpdmFjeS9jb250ZXh0LXN0cmluZy1mb3Itc3ViZnJhbWUtZXhwZWN0ZWQudHh0
OiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9j
b250ZXh0LXN0cmluZy1mb3Itc3ViZnJhbWUuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvY29udGV4dC1zdHJpbmctcHJlY29ubmVjdC1l
eHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nl
ci1wcml2YWN5L2NvbnRleHQtc3RyaW5nLXByZWNvbm5lY3QuaHRtbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvY29udGV4dC1zdHJpbmctcHJl
ZmxpZ2h0LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luLWFw
cC1icm93c2VyLXByaXZhY3kvY29udGV4dC1zdHJpbmctcHJlZmxpZ2h0Lmh0bWw6IFJlbW92ZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L3Jlc291cmNlcy9w
b3N0LnB5OiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJj
ZXMvY2hlY2stcGluZy1hcHAtaW5pdGlhdGVkLWRhdGEucHk6IFJlbmFtZWQgZnJvbSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2NoZWNrLXBpbmctYXBwLWJvdW5k
LWRhdGEucHkuCisgICAgICAgICogcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zOgor
CiAyMDIxLTA2LTIzICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgog
CiAgICAgICAgIFtXaW5DYWlyb10gVW5yZXZpZXdlZCB0ZXN0IGdhcmRlbmluZwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3Rh
dGlvbnMKaW5kZXggZDdiMzUzNmQ4YWMwMWI5MmVmOTdhN2E1OTMxZmU0OTUyNjg1YWE1OC4uNzAw
YWJjMjYxNGNiZDEzNjBmYTA3Zjc0NGI1MzBkYzBmMmUxODMyZiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25z
CkBAIC0xOTQsNiArMTk0LDkgQEAgZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9zdGFydC1yZWNvZ25p
dGlvbi10aGVuLXN0b3AuaHRtbCBbIFNraXAgXQogZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9zdGFy
dC1zZWNvbmQtcmVjb2duaXRpb24uaHRtbCBbIFNraXAgXQogZmFzdC9zcGVlY2hyZWNvZ25pdGlv
bi9pb3MvIFsgU2tpcCBdCiAKKyMgYXBwLXByaXZhY3ktcmVwb3J0IHRlc3RzIHJlbHkgb24gV2Vi
S2l0QWRkaXRpb25zCitodHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC8gWyBTa2lwIF0KKwog
IyBPbmx5IHBhcnRpYWwgc3VwcG9ydCBvbiBDb2NvYSBwbGF0Zm9ybXMuCiBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3NwZWVjaC1hcGkvIFsgU2tpcCBdCiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLWxvYWQt
dXJsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVw
b3J0L2F0dHJpYnV0aW9uLWxvYWQtdXJsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMDAyNDgw
NDUxNTk5ZmI0MDhlZDAwZjQ4YmZkNjcyOGYyNmQ2ZGY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tbG9hZC11
cmwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorVGVzdCBsb2FkVVJMIHJlcXVlc3RzIGFy
ZSBzdWNjZXNmdWxseSBhdHRyaWJ1dGVkIGFzIGFwcCBpbml0aWF0ZWQuCitQQVNTIHN1Y2Nlc3Nm
dWxseSBsb2FkZWQgb25seSBhcHAgaW5pdGlhdGVkIHJlcXVlc3RzCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLWxvYWQt
dXJsLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRy
aWJ1dGlvbi1sb2FkLXVybC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ3YWQ4ZWU1Yzg3Y2MyZDE4NWVkNzk3
ZjViZWYwN2FkNjk0ZThjMDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1sb2FkLXVybC5odG1sCkBAIC0wLDAg
KzEsNDggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJz
ZXRUaW1lb3V0KCdydW5UZXN0KCknLCAwKSI+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+VGVzdCBs
b2FkVVJMIHJlcXVlc3RzIGFyZSBzdWNjZXNmdWxseSBhdHRyaWJ1dGVkIGFzIGFwcCBpbml0aWF0
ZWQuPC9kaXY+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzxzY3JpcHQ+CisgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBs
b2FkVVJMKCkgeworICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5ocmVmID0gZGVzdGluYXRpb25P
cmlnaW4gKyAiL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1sb2FkLXVybC5odG1sIjsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkgeworICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKG1lc3NhZ2UgKyAnXG4nKSk7CisgICAgfQorCisgICAgY29uc3QgZGVzdGluYXRpb25Pcmln
aW4gPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwIjsKKyAgICBjb25zdCBzdGFydGluZ09yaWdpbiA9
ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiOworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAg
ICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5vcmlnaW4gPT09IHN0YXJ0aW5nT3JpZ2luKSB7Cisg
ICAgICAgICAgICBsb2FkVVJMKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB2YXIg
ZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3QgPSB0ZXN0UnVubmVyLmRpZExvYWRBcHBJbml0aWF0
ZWRSZXF1ZXN0KCk7CisgICAgICAgICAgICB2YXIgZGlkTG9hZE5vbkFwcEluaXRpYXRlZFJlcXVl
c3QgPSB0ZXN0UnVubmVyLmRpZExvYWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0KCk7CisKKyAgICAg
ICAgICAgIGlmIChkaWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdCkgeworICAgICAgICAgICAg
ICAgIGxvZygiRkFJTCBkaWQgbG9hZCBub24gYXBwIGluaXRpYXRlZCByZXF1ZXN0Iik7CisgICAg
ICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGlmICghZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3QpIHsKKyAgICAgICAgICAg
ICAgICBsb2coIkZBSUwgZGlkIG5vdCBsb2FkIGFwcCBpbml0aWF0ZWQgcmVxdWVzdCIpOworICAg
ICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBsb2coIlBBU1Mgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBvbmx5IGFwcCBpbml0aWF0
ZWQgcmVxdWVzdHMiKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAg
ICAgICB9CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1waW5n
LWxvYWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1y
ZXBvcnQvYXR0cmlidXRpb24tcGluZy1sb2FkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZDYx
N2VlOTAwYTQ5MDJiOTdhNGJlZDZhMzllOTY1NjZjZTQ1NTlmCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tcGlu
Zy1sb2FkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK0NPTlNPTEUgTUVTU0FHRTogUEFT
UyBzdWNjZXNzZnVsbHkgbG9hZGVkIG9ubHkgYXBwIGluaXRpYXRlZCByZXF1ZXN0cworUGluZyBz
ZW50IHN1Y2Nlc3NmdWxseQorQ09OVEVOVF9UWVBFOiB0ZXh0L3BpbmcKK0hUVFBfSE9TVDogMTI3
LjAuMC4xOjgwMDAKK0hUVFBfUElOR19GUk9NOiBodHRwOi8vMTI3LjAuMC4xOjgwMDAvYXBwLXBy
aXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXBpbmctbG9hZC5odG1sCitIVFRQX1BJTkdfVE86IGh0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9uYXZpZ2F0aW9uL3Jlc291cmNlcy9jaGVjay1waW5nLWFwcC1p
bml0aWF0ZWQtZGF0YS5weQorUkVRVUVTVF9NRVRIT0Q6IFBPU1QKK1JFUVVFU1RfVVJJOiAvbmF2
aWdhdGlvbi9yZXNvdXJjZXMvc2F2ZS1waW5nLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1waW5nLWxvYWQuaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXBp
bmctbG9hZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjExMDBjYWUyYzYyY2RhYmRhYTRlMTBlYzM5ZjljOTBh
ODllYmU5OTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1w
cml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1waW5nLWxvYWQuaHRtbApAQCAtMCwwICsxLDMwIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vbmF2aWdh
dGlvbi9waW5nLWF0dHJpYnV0ZS9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93LmludGVybmFscykgeworICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1No
b3VsZERvd25ncmFkZVJlZmVycmVyKGZhbHNlLCBmdW5jdGlvbiAoKSB7IH0pOworICAgIGludGVy
bmFscy5zZXR0aW5ncy5zZXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQodHJ1ZSk7CisgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGNs
aWNrRWxlbWVudChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJpbWciKSk7Cit9CisKK3dpbmRvdy5v
bmxvYWQgPSBmdW5jdGlvbiAoKQoreworICAgIGNsZWFyTGFzdFBpbmdSZXN1bHRBbmRSdW5UZXN0
KHRlc3QpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8aW1nIHNyYz0ibm9u
LWV4aXN0ZW50LWltYWdlLmpwZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiIHVzZW1hcD0iI2lt
YWdlbWFwIj4KKyAgICA8bWFwIG5hbWU9ImltYWdlbWFwIj4KKyAgICAgICAgPGFyZWEgc2hhcGU9
InJlY3QiIGNvb3Jkcz0iMCwwLDEyOCwxMjgiIGhyZWY9Ii4uL25hdmlnYXRpb24vcmVzb3VyY2Vz
L2NoZWNrLXBpbmctYXBwLWluaXRpYXRlZC1kYXRhLnB5IiBwaW5nPSIuLi9uYXZpZ2F0aW9uL3Jl
c291cmNlcy9zYXZlLXBpbmcucHkiPgorICAgIDwvbWFwPgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmli
dXRpb24tcG9zdC1yZXF1ZXN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
YXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXBvc3QtcmVxdWVzdC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZTI0NWUzNDBmMTdkZThlNGYzZTM1OWNjMWI5ZjQxNDc2NmRlY2YxYwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0
L2F0dHJpYnV0aW9uLXBvc3QtcmVxdWVzdC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACitD
T05TT0xFIE1FU1NBR0U6IFBBU1Mgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBvbmx5IGFwcCBpbml0aWF0
ZWQgcmVxdWVzdHMKK1Rlc3RzIGFwcCBpbml0aWF0ZWQgcmVxdWVzdHMgZ2V0IG1hcmtlZCBmb3Ig
UE9TVCByZXF1ZXN0cy4KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Fw
cC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1wb3N0LXJlcXVlc3QuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXBvc3QtcmVxdWVz
dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmFkNzk1NGY3ODAzM2I0ZGU2MDViOTAxYTYwM2Y5YmQzMTllNTEy
ODUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5
LXJlcG9ydC9hdHRyaWJ1dGlvbi1wb3N0LXJlcXVlc3QuaHRtbApAQCAtMCwwICsxLDIyIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHA+VGVzdHMgYXBwIGluaXRpYXRlZCByZXF1ZXN0cyBnZXQgbWFy
a2VkIGZvciBQT1NUIHJlcXVlc3RzLjwvcD4KKzxmb3JtIGlkPSJ0ZXN0Rm9ybSIgYWN0aW9uPSJy
ZXNvdXJjZXMvcG9zdC5weSIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9yZWZlcnJlciIgbWV0aG9k
PSJwb3N0Ij4KKzxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJUZXN0Ij48L2lucHV0PgorPGZv
cm0+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5zZXRDYW5PcGVuV2luZG93cyh0cnVlKTsK
K30KKworZG9jdW1lbnQuZm9ybXNbMF0uc3VibWl0KCk7CisKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1y
ZXBvcnQvYXR0cmlidXRpb24tcHJlZmxpZ2h0LWFzeW5jLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXByZWZsaWdodC1h
c3luYy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWI1ZWVhOTQyMmFkMGNhZWU3NjY3YmNkNDA2
ZGI5M2UwYTVlOWUyZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
YXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXByZWZsaWdodC1hc3luYy1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw2IEBACitDT05TT0xFIE1FU1NBR0U6IFByZWZsaWdodCByZXNwb25zZSBp
cyBub3Qgc3VjY2Vzc2Z1bAorQ09OU09MRSBNRVNTQUdFOiBYTUxIdHRwUmVxdWVzdCBjYW5ub3Qg
bG9hZCBodHRwOi8vbG9jYWxob3N0OjgwMDAveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL3N0YXR1
cy00MDQtd2l0aG91dC1ib2R5LnB5IGR1ZSB0byBhY2Nlc3MgY29udHJvbCBjaGVja3MuCitUZXN0
cyBhcHAgaW5pdGlhdGVkIHJlcXVlc3RzIGdldCBtYXJrZWQgZm9yIGFzeW5jIHByZWZsaWdodHMK
KworUEFTUyBzdWNjZXNzZnVsbHkgbG9hZGVkIG9ubHkgYXBwIGluaXRpYXRlZCByZXF1ZXN0cwor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9h
dHRyaWJ1dGlvbi1wcmVmbGlnaHQtYXN5bmMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
YXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXByZWZsaWdodC1hc3luYy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjM5M2I5ZjNjMjRkYjdlMzBjOWY1MWU5ZjRkMjI3MTZkNjYyZThkYjYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRy
aWJ1dGlvbi1wcmVmbGlnaHQtYXN5bmMuaHRtbApAQCAtMCwwICsxLDQ2IEBACis8cD5UZXN0cyBh
cHAgaW5pdGlhdGVkIHJlcXVlc3RzIGdldCBtYXJrZWQgZm9yIGFzeW5jIHByZWZsaWdodHM8L3A+
CisKKzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBsb2cobWVzc2FnZSkKK3sKKyAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKG1lc3NhZ2UgKyAnXG4nKSk7Cit9CisKK3ZhciBwcmVmbGlnaHRMaW5rRG9tYWluID0g
ImxvY2FsaG9zdCI7Cit2YXIgY29udGV4dEhvc3QgPSAiMTI3LjAuMC4xIjsKK3ZhciB1cmwgPSAi
aHR0cDovL2xvY2FsaG9zdDo4MDAwL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9zdGF0dXMtNDA0
LXdpdGhvdXQtYm9keS5weSIKKworZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgdmFyIHJlcSA9
IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgIHJlcS5vcGVuKCJHRVQiLCB1cmwsIHRydWUpOwor
ICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKCJ4LXdlYmtpdCIsICJmb28iKTsKKworICAgIHJlcS5v
bmVycm9yID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBkaWRMb2FkQXBwSW5pdGlhdGVkUmVx
dWVzdCA9IHRlc3RSdW5uZXIuZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3QoKTsKKyAgICAgICAg
dmFyIGRpZExvYWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0ID0gdGVzdFJ1bm5lci5kaWRMb2FkTm9u
QXBwSW5pdGlhdGVkUmVxdWVzdCgpOworCisgICAgICAgIGlmIChkaWRMb2FkTm9uQXBwSW5pdGlh
dGVkUmVxdWVzdCkgeworICAgICAgICAgICAgbG9nKCJGQUlMIGRpZCBsb2FkIG5vbiBhcHAgaW5p
dGlhdGVkIHJlcXVlc3QiKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKCFkaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdCkgewor
ICAgICAgICAgICAgbG9nKCJGQUlMIGRpZCBub3QgbG9hZCBhcHAgaW5pdGlhdGVkIHJlcXVlc3Qi
KTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9CisKKyAg
ICAgICAgbG9nKCJQQVNTIHN1Y2Nlc3NmdWxseSBsb2FkZWQgb25seSBhcHAgaW5pdGlhdGVkIHJl
cXVlc3RzIik7CisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgIH0KKyAgICBy
ZXEuc2VuZChudWxsKTsKK30KKworcnVuVGVzdCgpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1wcmVm
bGlnaHQtc3luYy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2
YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1wcmVmbGlnaHQtc3luYy1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNDAxNmM1MzFlMDY1OWFkY2RkNjM1NTUyM2VhMWIwYWQyZDVhMmIxYwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJp
YnV0aW9uLXByZWZsaWdodC1zeW5jLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKK0NPTlNP
TEUgTUVTU0FHRTogUHJlZmxpZ2h0IHJlc3BvbnNlIGlzIG5vdCBzdWNjZXNzZnVsCitDT05TT0xF
IE1FU1NBR0U6IFhNTEh0dHBSZXF1ZXN0IGNhbm5vdCBsb2FkIGh0dHA6Ly9sb2NhbGhvc3Q6ODAw
MC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvc3RhdHVzLTQwNC13aXRob3V0LWJvZHkucHkgZHVl
IHRvIGFjY2VzcyBjb250cm9sIGNoZWNrcy4KK1Rlc3RzIGFwcCBpbml0aWF0ZWQgcmVxdWVzdHMg
Z2V0IG1hcmtlZCBmb3Igc3luYyBwcmVmbGlnaHRzCisKK1BBU1M6IE5ldHdvcmtFcnJvcjogIEEg
bmV0d29yayBlcnJvciBvY2N1cnJlZC4KK1BBU1Mgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBvbmx5IGFw
cCBpbml0aWF0ZWQgcmVxdWVzdHMKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tcHJlZmxpZ2h0LXN5bmMuaHRtbCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXByZWZs
aWdodC1zeW5jLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWI1NDA5NWExZmY3YzA0MWQxYWJlNTYwMGZhNWJj
ZTVjZWVlNDNhNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBw
LXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXByZWZsaWdodC1zeW5jLmh0bWwKQEAgLTAsMCAr
MSw0OSBAQAorPHA+VGVzdHMgYXBwIGluaXRpYXRlZCByZXF1ZXN0cyBnZXQgbWFya2VkIGZvciBz
eW5jIHByZWZsaWdodHM8L3A+CisKKzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorPHNjcmlwdD4K
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwor
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBsb2cobWVzc2Fn
ZSkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UgKyAnXG4nKSk7Cit9CisKK3ZhciBwcmVm
bGlnaHRMaW5rRG9tYWluID0gImxvY2FsaG9zdCI7Cit2YXIgY29udGV4dEhvc3QgPSAiMTI3LjAu
MC4xIjsKK3ZhciB1cmwgPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3htbGh0dHByZXF1ZXN0L3Jl
c291cmNlcy9zdGF0dXMtNDA0LXdpdGhvdXQtYm9keS5weSIKKworZnVuY3Rpb24gcnVuVGVzdCgp
Cit7CisgICAgdmFyIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgIHJlcS5vcGVuKCJH
RVQiLCB1cmwsIGZhbHNlKTsKKyAgICByZXEuc2V0UmVxdWVzdEhlYWRlcigieC13ZWJraXQiLCAi
Zm9vIik7CisKKyAgICB0cnkgeworICAgICAgICByZXEuc2VuZChudWxsKTsKKyAgICAgICAgbG9n
KCJQQVNTOiAiICsgcmVxLnJlc3BvbnNlVGV4dCk7CisgICAgfSBjYXRjaCAoZXgpIHsKKyAgICAg
ICAgbG9nKCJQQVNTOiAiICsgZXgpOworICAgICAgICB2YXIgZGlkTG9hZEFwcEluaXRpYXRlZFJl
cXVlc3QgPSB0ZXN0UnVubmVyLmRpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0KCk7CisgICAgICAg
IHZhciBkaWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdCA9IHRlc3RSdW5uZXIuZGlkTG9hZE5v
bkFwcEluaXRpYXRlZFJlcXVlc3QoKTsKKworICAgICAgICBpZiAoZGlkTG9hZE5vbkFwcEluaXRp
YXRlZFJlcXVlc3QpIHsKKyAgICAgICAgICAgIGxvZygiRkFJTCBkaWQgbG9hZCBub24gYXBwIGlu
aXRpYXRlZCByZXF1ZXN0Iik7CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
KyAgICAgICAgfQorCisgICAgICAgIGlmICghZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3QpIHsK
KyAgICAgICAgICAgIGxvZygiRkFJTCBkaWQgbm90IGxvYWQgYXBwIGluaXRpYXRlZCByZXF1ZXN0
Iik7CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGxvZygiUEFTUyBzdWNjZXNzZnVsbHkgbG9hZGVkIG9ubHkgYXBwIGluaXRpYXRlZCBy
ZXF1ZXN0cyIpOworICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICB9Cit9CisK
K3J1blRlc3QoKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tc3BlY3VsYXRpdmUtcmV2YWxpZGF0aW9u
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0
L2F0dHJpYnV0aW9uLXNwZWN1bGF0aXZlLXJldmFsaWRhdGlvbi1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYjIxYzJkNTk5NDE0NGU4MTBlMTU3N2VmZmJjZDA5Y2UwNmRmM2RkZAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJp
YnV0aW9uLXNwZWN1bGF0aXZlLXJldmFsaWRhdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
NCBAQAorMTI3LjAuMC4xOjgwMDAgLSBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Ug
LSBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZUhUVFBCYXNpYyAtIFJlc3BvbmRp
bmcgd2l0aCB0ZXN0VXNlcm5hbWU6dGVzdFBhc3N3b3JkCisxMjcuMC4wLjE6ODAwMCAtIGRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAtIFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0
aW9uU2NoZW1lSFRUUEJhc2ljIC0gU2ltdWxhdGluZyBjYW5jZWxsZWQgYXV0aGVudGljYXRpb24g
c2hlZXQKK1Rlc3RzIHNwZWN1bGF0aXZlIHJldmFsaWRhdGlvbiBvZiBhdXRoZW50aWNhdGVkIHJl
c291cmNlcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgeGhyLnN0YXR1
cyBpcyA0MDEKK1BBU1MgU3VjY2Vzc2Z1bHkgbG9hZGVkLgorUEFTUyBzdWNjZXNzZnVsbHkgbG9h
ZGVkIG9ubHkgYXBwIGluaXRpYXRlZCByZXF1ZXN0cworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXNwZWN1bGF0aXZlLXJldmFsaWRh
dGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0
cmlidXRpb24tc3BlY3VsYXRpdmUtcmV2YWxpZGF0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWI3NWQ2
ZmYxYmU4OWExN2ZiYWRlYWVmYWM5NzQwMDBkYzllODVkMAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXNwZWN1
bGF0aXZlLXJldmFsaWRhdGlvbi5odG1sCkBAIC0wLDAgKzEsNzIgQEAKKzxzY3JpcHQgc3JjPSIv
anMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Rl
c2NyaXB0aW9uKCJUZXN0cyBzcGVjdWxhdGl2ZSByZXZhbGlkYXRpb24gb2YgYXV0aGVudGljYXRl
ZCByZXNvdXJjZXMuIik7Citqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwordGVzdFJ1bm5lci5zZXRI
YW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzKHRydWUpOwordGVzdFJ1bm5lci5zZXRBdXRo
ZW50aWNhdGlvblVzZXJuYW1lKCJ0ZXN0VXNlcm5hbWUiKTsKK3Rlc3RSdW5uZXIuc2V0QXV0aGVu
dGljYXRpb25QYXNzd29yZCgidGVzdFBhc3N3b3JkIik7CisKK3N0YXRlID0gIndhcm11cCI7CisK
K2Z1bmN0aW9uIGNsZWFyQ3JlZGVudGlhbFN0b3JhZ2UoKQoreworICAgIHhociA9IG5ldyBYTUxI
dHRwUmVxdWVzdCgpOworICAgIHhoci5vcGVuKCJHRVQiLCAicmVzb3VyY2VzL3Jlc291cmNlLXdp
dGgtYXV0aC5weT9vdGhlciIsIGZhbHNlLCAiYmFkVXNlcm5hbWUiLCAiYmFkUGFzc3dvcmQiKTsK
KyAgICB4aHIuc2VuZCgpOworICAgIHNob3VsZEJlKCJ4aHIuc3RhdHVzIiwgIjQwMSIpOworfQor
CitmdW5jdGlvbiBsb2cobWVzc2FnZSkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
Y29uc29sZScpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UgKyAn
XG4nKSk7Cit9CisKK2Z1bmN0aW9uIGZyYW1lTG9hZGVkKCkKK3sKKyAgICBpZiAoc3RhdGUgPT0g
Indhcm11cCIpIHsKKyAgICAgICAgLy8gTmF2aWdhdGUgZnJhbWUgdG8gJ2Fib3V0OmJsYW5rJyB0
byBmbHVzaCB0byBzdWJyZXNvdXJjZSBsb2FkcyBtZXRhZGF0YSB0byBkaXNrLgorICAgICAgICBz
dGF0ZSA9ICJmbHVzaGluZ01ldGFkYXRhIjsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRIYW5kbGVz
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VzKGZhbHNlKTsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInRlc3RGcmFtZSIpLnNyYyA9ICJhYm91dDpibGFuayI7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgaWYgKHN0YXRlID09ICJmbHVzaGluZ01ldGFkYXRhIikgeworICAgICAg
ICBjbGVhckNyZWRlbnRpYWxTdG9yYWdlKCk7CisKKyAgICAgICAgaW50ZXJuYWxzLmNsZWFyTWVt
b3J5Q2FjaGUoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRIYW5kbGVzQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VzKGZhbHNlKTsKKworICAgICAgICAvLyBOYXZpZ2F0ZSBmcmFtZSB0byBpdHMgb3Jp
Z2luYWwgbG9jYXRpb24gYWdhaW4uIFRoaXMgdGltZSBpdCBzaG91bGQgc3BlY3VsYXRpdmVseQor
ICAgICAgICAvLyB2YWxpZGF0ZSBzdWJyZXNvdXJjZXMgYXMgd2UgaGF2ZSBzdWJyZXNvdXJjZSBs
b2FkcyBtZXRhZGF0YSBpbiB0aGUgZGlzayBjYWNoZS4KKyAgICAgICAgc3RhdGUgPSAic3BlY3Vs
YXRpdmVSZXZhbGlkYXRpb24iOworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVz
dEZyYW1lIikuc3JjID0gInJlc291cmNlcy9mcmFtZS13aXRoLWF1dGhlbnRpY2F0ZWQtcmVzb3Vy
Y2UucHkiOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChzdGF0ZSA9PSAic3BlY3Vs
YXRpdmVSZXZhbGlkYXRpb24iKSB7CisgICAgICAgIHRlc3RQYXNzZWQoIlN1Y2Nlc3NmdWx5IGxv
YWRlZC4iKTsKKyAgICAgICAgdmFyIGRpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0ID0gdGVzdFJ1
bm5lci5kaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdCgpOworICAgICAgICB2YXIgZGlkTG9hZE5v
bkFwcEluaXRpYXRlZFJlcXVlc3QgPSB0ZXN0UnVubmVyLmRpZExvYWROb25BcHBJbml0aWF0ZWRS
ZXF1ZXN0KCk7CisKKyAgICAgICAgaWYgKGRpZExvYWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0KSB7
CisgICAgICAgICAgICBsb2coIkZBSUwgZGlkIGxvYWQgbm9uIGFwcCBpbml0aWF0ZWQgcmVxdWVz
dCIpOworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoIWRpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0KSB7Cisg
ICAgICAgICAgICBsb2coIkZBSUwgZGlkIG5vdCBsb2FkIGFwcCBpbml0aWF0ZWQgcmVxdWVzdCIp
OworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBsb2coIlBBU1Mgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBvbmx5IGFwcCBp
bml0aWF0ZWQgcmVxdWVzdHMiKTsKKworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KK30KKworPC9zY3JpcHQ+Cis8aWZyYW1lIGlkPSJ0ZXN0RnJhbWUiIHNy
Yz0icmVzb3VyY2VzL2ZyYW1lLXdpdGgtYXV0aGVudGljYXRlZC1yZXNvdXJjZS5weSIgb25sb2Fk
PSJmcmFtZUxvYWRlZCgpIj48L2lmcmFtZT4KKzxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L3Jlc291cmNlcy9mcmFtZS13aXRoLWF1dGhlbnRp
Y2F0ZWQtcmVzb3VyY2UucHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJl
cG9ydC9yZXNvdXJjZXMvZnJhbWUtd2l0aC1hdXRoZW50aWNhdGVkLXJlc291cmNlLnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjg0OGQwZmQxYTZkNmMwOTlhYWQ2MWUwMDQyNDJlMjM4OTU1M2U5NDEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9yZXNv
dXJjZXMvZnJhbWUtd2l0aC1hdXRoZW50aWNhdGVkLXJlc291cmNlLnB5CkBAIC0wLDAgKzEsMTMg
QEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKworaW1wb3J0IHN5cworCitzeXMuc3Rkb3V0Lndy
aXRlKAorICAgICdDYWNoZS1Db250cm9sOiBtYXgtYWdlPTBcclxuJworICAgICdFdGFnOiAxMjM0
NTY3ODlcclxuJworICAgICdDb250ZW50LVR5cGU6IHRleHQvaHRtbFxyXG5cclxuJworICAgICc8
IURPQ1RZUEUgaHRtbD5cbicKKyAgICAnPGJvZHk+XG4nCisgICAgJzxzY3JpcHQgc3JjPSJyZXNv
dXJjZS13aXRoLWF1dGgucHkiPjwvc2NyaXB0PlxuJworICAgICc8L2JvZHk+XG4nCispCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9yZXNvdXJj
ZXMvcG9zdC5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L3Jl
c291cmNlcy9wb3N0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwNmZlZWUyMTJjNzAxY2Y2MmQ5ZDgzMGRmZjJi
NWI4NzYxYjkzOWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Fw
cC1wcml2YWN5LXJlcG9ydC9yZXNvdXJjZXMvcG9zdC5weQpAQCAtMCwwICsxLDI3IEBACisjIS91
c3IvYmluL2VudiBweXRob24zCisKK2ltcG9ydCBvcworaW1wb3J0IHN5cworCityZWZlcmVyID0g
b3MuZW52aXJvbi5nZXQoJ0hUVFBfUkVGRVJFUicsICcnKQorCitzeXMuc3Rkb3V0LndyaXRlKAor
ICAgICdDb250ZW50LVR5cGU6IHRleHQvaHRtbFxyXG5cclxuJworICAgICc8cD5SZWZlcnJlcjog
e3JlZmVyZXJ9PC9wPlxuJworICAgICc8c2NyaXB0PlxuJworICAgICdpZiAod2luZG93LnRlc3RS
dW5uZXIpIHt7XG4nCisgICAgJyAgICB2YXIgZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3QgPSB0
ZXN0UnVubmVyLmRpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0KCk7XG4nCisgICAgJyAgICB2YXIg
ZGlkTG9hZE5vbkFwcEluaXRpYXRlZFJlcXVlc3QgPSB0ZXN0UnVubmVyLmRpZExvYWROb25BcHBJ
bml0aWF0ZWRSZXF1ZXN0KCk7XG4nCisgICAgJyAgICBpZiAoZGlkTG9hZE5vbkFwcEluaXRpYXRl
ZFJlcXVlc3QpIHt7XG4nCisgICAgJyAgICAgICAgY29uc29sZS5sb2coIkZBSUwgZGlkIGxvYWQg
bm9uIGFwcCBpbml0aWF0ZWQgcmVxdWVzdCIpO1xuJworICAgICcgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpO1xuJworICAgICcgICAgfX1cbicKKyAgICAnICAgIGlmICghZGlkTG9hZEFw
cEluaXRpYXRlZFJlcXVlc3QpIHt7XG4nCisgICAgJyAgICAgICAgIGNvbnNvbGUubG9nKCJGQUlM
IGRpZCBub3QgbG9hZCBhcHAgaW5pdGlhdGVkIHJlcXVlc3QiKTtcbicKKyAgICAnICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTtcbicKKyAgICAnICAgICB9fVxuJworICAgICcgICAgY29u
c29sZS5sb2coIlBBU1Mgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBvbmx5IGFwcCBpbml0aWF0ZWQgcmVx
dWVzdHMiKTtcbicKKyAgICAnICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpO1xuJworICAgICd9
fVxuJworICAgICc8L3NjcmlwdD5cbicuZm9ybWF0KHJlZmVyZXI9cmVmZXJlcikKKykKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L3Jlc291cmNl
cy9yZXNvdXJjZS13aXRoLWF1dGgucHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2
YWN5LXJlcG9ydC9yZXNvdXJjZXMvcmVzb3VyY2Utd2l0aC1hdXRoLnB5Cm5ldyBmaWxlIG1vZGUg
MTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdh
ZmI3OGQ4MWM2ZjNjOWRhNDc5ZDI4YmUyNDZhZTE1YmNkMDRkZGUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9yZXNvdXJjZXMvcmVz
b3VyY2Utd2l0aC1hdXRoLnB5CkBAIC0wLDAgKzEsMjkgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhv
bjMKKworaW1wb3J0IGJhc2U2NAoraW1wb3J0IG9zCitpbXBvcnQgc3lzCisKK2NyZWRlbnRpYWxz
ID0gYmFzZTY0LmI2NGRlY29kZShvcy5lbnZpcm9uLmdldCgnSFRUUF9BVVRIT1JJWkFUSU9OJywg
JyBPZz09Jykuc3BsaXQoJyAnKVsxXSkuZGVjb2RlKCkuc3BsaXQoJzonKQordXNlcm5hbWUgPSBj
cmVkZW50aWFsc1swXQorcGFzc3dvcmQgPSAnOicuam9pbihjcmVkZW50aWFsc1sxOl0pCisKK2V4
cGVjdGVkVXNlcm5hbWUgPSAndGVzdFVzZXJuYW1lJworZXhwZWN0ZWRQYXNzd29yZCA9ICd0ZXN0
UGFzc3dvcmQnCityZWFsbSA9IG9zLmVudmlyb24uZ2V0KCdSRVFVRVNUX1VSSScsICcnKQorCitz
eXMuc3Rkb3V0LndyaXRlKAorICAgICdDb250ZW50LVR5cGU6IHRleHQvamF2YXNjcmlwdFxyXG4n
CisgICAgJ0NhY2hlLUNvbnRyb2w6IG1heC1hZ2U9MFxyXG4nCisgICAgJ0V0YWc6IDEyMzQ1Njc4
OVxyXG4nCispCisKK2lmIHVzZXJuYW1lICE9IGV4cGVjdGVkVXNlcm5hbWUgb3IgcGFzc3dvcmQg
IT0gZXhwZWN0ZWRQYXNzd29yZDoKKyAgICBzeXMuc3Rkb3V0LndyaXRlKAorICAgICAgICBmJ1dX
Vy1BdXRoZW50aWNhdGU6IEJhc2ljIHJlYWxtPSJ7cmVhbG19IlxyXG4nCisgICAgICAgICdzdGF0
dXM6IDQwMVxyXG5cclxuJworICAgICAgICBmJ1NlbnQgdXNlcm5hbWU6cGFzc3dvcmQgb2YgKHt1
c2VybmFtZX06e3Bhc3N3b3JkfSkgd2hpY2ggaXMgbm90IHdoYXQgd2FzIGV4cGVjdGVkXG4nCisg
ICAgKQorICAgIHN5cy5leGl0KDApCisKK3N5cy5zdGRvdXQud3JpdGUoJ1xyXG5sb2FkZWQgPSB0
cnVlO1xuJykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dz
ZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tbG9hZC11cmwtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1h
dHRyaWJ1dGlvbi1sb2FkLXVybC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDA3OTgxZjFlMDg0YjBjZTI1N2FmNmYzZTVhNjBkMWY1ZDI1MmVmMmYuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1sb2FkLXVy
bC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLVRlc3QgbG9hZFVS
TCByZXF1ZXN0cyBhcmUgc3VjY2VzZnVsbHkgYXR0cmlidXRlZCBhcyBhcHAtYm91bmQuCi1QQVNT
IHN1Y2Nlc3NmdWxseSBsb2FkZWQgb25seSBhcHAtYm91bmQgcmVxdWVzdHMKLQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3Vu
ZC1hdHRyaWJ1dGlvbi1sb2FkLXVybC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1h
cHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1sb2FkLXVybC5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjY2NiY2YzZjIwMTEyZjFlMTZkNDBlZjc5N2U0
OGQ5ODI3NzVjYTQwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91
bmQtYXR0cmlidXRpb24tbG9hZC11cmwuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAg
QEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLSAgICA8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJzZXRUaW1l
b3V0KCdydW5UZXN0KCknLCAwKSI+Ci08ZGl2IGlkPSJkZXNjcmlwdGlvbiI+VGVzdCBsb2FkVVJM
IHJlcXVlc3RzIGFyZSBzdWNjZXNmdWxseSBhdHRyaWJ1dGVkIGFzIGFwcC1ib3VuZC48L2Rpdj4K
LTxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgotPHNjcmlwdD4KLSAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKLSAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0gICAgICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGxvYWRVUkwoKSB7
Ci0gICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgPSBkZXN0aW5hdGlvbk9yaWdpbiArICIv
aW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tbG9hZC11cmwuaHRt
bCI7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKLSAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZShtZXNzYWdlICsgJ1xuJykpOwotICAgIH0KLQotICAgIGNvbnN0IGRlc3RpbmF0aW9u
T3JpZ2luID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCI7Ci0gICAgY29uc3Qgc3RhcnRpbmdPcmln
aW4gPSAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIjsKLSAgICBmdW5jdGlvbiBydW5UZXN0KCkgewot
ICAgICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24ub3JpZ2luID09PSBzdGFydGluZ09yaWdpbikg
ewotICAgICAgICAgICAgbG9hZFVSTCgpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
dmFyIGRpZExvYWRBcHBCb3VuZFJlcXVlc3QgPSB0ZXN0UnVubmVyLmRpZExvYWRBcHBCb3VuZFJl
cXVlc3QoKTsKLSAgICAgICAgICAgIHZhciBkaWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0ID0gdGVz
dFJ1bm5lci5kaWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0KCk7Ci0KLSAgICAgICAgICAgIGlmIChk
aWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0KSB7Ci0gICAgICAgICAgICAgICAgbG9nKCJGQUlMIGRp
ZCBsb2FkIG5vbiBhcHAtYm91bmQgcmVxdWVzdCIpOwotICAgICAgICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoIWRpZExv
YWRBcHBCb3VuZFJlcXVlc3QpIHsKLSAgICAgICAgICAgICAgICBsb2coIkZBSUwgZGlkIG5vdCBs
b2FkIGFwcC1ib3VuZCByZXF1ZXN0Iik7Ci0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGxvZygiUEFTUyBzdWNjZXNz
ZnVsbHkgbG9hZGVkIG9ubHkgYXBwLWJvdW5kIHJlcXVlc3RzIik7Ci0gICAgICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICAgICAgfQotICAgIH0KLTwvc2NyaXB0PgotPC9ib2R5
PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJv
d3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1waW5nLWxvYWQtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3Vu
ZC1hdHRyaWJ1dGlvbi1waW5nLWxvYWQtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA4ZGI3MWFiZjdkZGM4OTA5YmQ0M2JkNDI0OGVhYWZhM2MyZTgyOWJkLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tcGlu
Zy1sb2FkLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotQ09OU09M
RSBNRVNTQUdFOiBQQVNTIHN1Y2Nlc3NmdWxseSBsb2FkZWQgb25seSBhcHAtYm91bmQgcmVxdWVz
dHMKLVBpbmcgc2VudCBzdWNjZXNzZnVsbHkKLUNPTlRFTlRfVFlQRTogdGV4dC9waW5nCi1IVFRQ
X0hPU1Q6IDEyNy4wLjAuMTo4MDAwCi1IVFRQX1BJTkdfRlJPTTogaHR0cDovLzEyNy4wLjAuMTo4
MDAwL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXBpbmctbG9h
ZC5odG1sCi1IVFRQX1BJTkdfVE86IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9uYXZpZ2F0aW9uL3Jl
c291cmNlcy9jaGVjay1waW5nLWFwcC1ib3VuZC1kYXRhLnB5Ci1SRVFVRVNUX01FVEhPRDogUE9T
VAotUkVRVUVTVF9VUkk6IC9uYXZpZ2F0aW9uL3Jlc291cmNlcy9zYXZlLXBpbmcucHkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAt
Ym91bmQtYXR0cmlidXRpb24tcGluZy1sb2FkLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXBpbmctbG9hZC5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMGJiMTA2N2M3ZGE4YjE1MGU5YjAw
YzkxYjhlNTI1ODA0ZDUyZDliLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9h
cHAtYm91bmQtYXR0cmlidXRpb24tcGluZy1sb2FkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwz
MCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0i
Li4vbmF2aWdhdGlvbi9waW5nLWF0dHJpYnV0ZS9yZXNvdXJjZXMvdXRpbGl0aWVzLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93LmludGVybmFs
cykgewotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgIHRlc3RSdW5uZXIuc2V0U3Rh
dGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVycmVyKGZhbHNlLCBmdW5jdGlvbiAoKSB7IH0pOwot
ICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQodHJ1ZSk7
Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIHRlc3QoKQot
ewotICAgIGNsaWNrRWxlbWVudChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJpbWciKSk7Ci19Ci0K
LXdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbiAoKQotewotICAgIGNsZWFyTGFzdFBpbmdSZXN1bHRB
bmRSdW5UZXN0KHRlc3QpOwotfQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLSAgICA8aW1n
IHNyYz0ibm9uLWV4aXN0ZW50LWltYWdlLmpwZyIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiIHVz
ZW1hcD0iI2ltYWdlbWFwIj4KLSAgICA8bWFwIG5hbWU9ImltYWdlbWFwIj4KLSAgICAgICAgPGFy
ZWEgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMCwwLDEyOCwxMjgiIGhyZWY9Ii4uL25hdmlnYXRpb24v
cmVzb3VyY2VzL2NoZWNrLXBpbmctYXBwLWJvdW5kLWRhdGEucHkiIHBpbmc9Ii4uL25hdmlnYXRp
b24vcmVzb3VyY2VzL3NhdmUtcGluZy5weSI+Ci0gICAgPC9tYXA+Ci08L2JvZHk+Ci08L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZh
Y3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXBvc3QtcmVxdWVzdC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJp
YnV0aW9uLXBvc3QtcmVxdWVzdC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDU4YjVlNzk4MTVjNGQ1Nzg5MDk1NjI1ZmUwNTNmM2I4MWI2ZGQxZDAuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1wb3N0LXJl
cXVlc3QtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1DT05TT0xF
IE1FU1NBR0U6IFBBU1Mgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBvbmx5IGFwcC1ib3VuZCByZXF1ZXN0
cwotVGVzdHMgYXBwIGJvdW5kIHJlcXVlc3RzIGdldCBtYXJrZWQgZm9yIFBPU1QgcmVxdWVzdHMu
Ci0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1w
cml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1wb3N0LXJlcXVlc3QuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRp
b24tcG9zdC1yZXF1ZXN0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3NzIz
ZmQzZjRjYmU1Y2EzMzk4OTc2NTk3MDhlOGNjZjE0ZmEzMDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAt
YnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1wb3N0LXJlcXVlc3QuaHRtbAor
KysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08
aGVhZD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08cD5UZXN0
cyBhcHAgYm91bmQgcmVxdWVzdHMgZ2V0IG1hcmtlZCBmb3IgUE9TVCByZXF1ZXN0cy48L3A+Ci08
Zm9ybSBpZD0idGVzdEZvcm0iIGFjdGlvbj0icmVzb3VyY2VzL3Bvc3QucHkiIHRhcmdldD0iX2Js
YW5rIiByZWw9Im5vcmVmZXJyZXIiIG1ldGhvZD0icG9zdCI+Ci08aW5wdXQgdHlwZT0ic3VibWl0
IiB2YWx1ZT0iVGVzdCI+PC9pbnB1dD4KLTxmb3JtPgotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVz
dFJ1bm5lcikgewotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotICAgIHRlc3RSdW5u
ZXIuc2V0Q2FuT3BlbldpbmRvd3ModHJ1ZSk7Ci19Ci0KLWRvY3VtZW50LmZvcm1zWzBdLnN1Ym1p
dCgpOwotCi08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRp
b24tcHJlZmxpZ2h0LWFzeW5jLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tcHJlZmxpZ2h0LWFz
eW5jLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDU4M2VmMDc1
ZjE3NDAyZjYyMDJiZjYzNTkwNTY5YTIzZWU4NWFjNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93
c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXByZWZsaWdodC1hc3luYy1leHBlY3Rl
ZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLUNPTlNPTEUgTUVTU0FHRTogUHJl
ZmxpZ2h0IHJlc3BvbnNlIGlzIG5vdCBzdWNjZXNzZnVsCi1DT05TT0xFIE1FU1NBR0U6IFhNTEh0
dHBSZXF1ZXN0IGNhbm5vdCBsb2FkIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC94bWxodHRwcmVxdWVz
dC9yZXNvdXJjZXMvc3RhdHVzLTQwNC13aXRob3V0LWJvZHkucHkgZHVlIHRvIGFjY2VzcyBjb250
cm9sIGNoZWNrcy4KLVRlc3RzIGFwcCBib3VuZCByZXF1ZXN0cyBnZXQgbWFya2VkIGZvciBhc3lu
YyBwcmVmbGlnaHRzCi0KLVBBU1Mgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBvbmx5IGFwcC1ib3VuZCBy
ZXF1ZXN0cwotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93
c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXByZWZsaWdodC1hc3luYy5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1h
dHRyaWJ1dGlvbi1wcmVmbGlnaHQtYXN5bmMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZWU0ODNlMzhjNDQ1YzZjZWQ4YjExZjVmNjVmZjE2NTYzYWY0YzUwYy4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXByZWZsaWdo
dC1hc3luYy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotPHA+VGVzdHMgYXBw
IGJvdW5kIHJlcXVlc3RzIGdldCBtYXJrZWQgZm9yIGFzeW5jIHByZWZsaWdodHM8L3A+Ci0KLTxw
cmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikg
ewotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOwotfQotCi1mdW5jdGlvbiBsb2cobWVzc2FnZSkKLXsKLSAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnY29uc29sZScpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2Rl
KG1lc3NhZ2UgKyAnXG4nKSk7Ci19Ci0KLXZhciBwcmVmbGlnaHRMaW5rRG9tYWluID0gImxvY2Fs
aG9zdCI7Ci12YXIgY29udGV4dEhvc3QgPSAiMTI3LjAuMC4xIjsKLXZhciB1cmwgPSAiaHR0cDov
L2xvY2FsaG9zdDo4MDAwL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9zdGF0dXMtNDA0LXdpdGhv
dXQtYm9keS5weSIKLQotZnVuY3Rpb24gcnVuVGVzdCgpCi17Ci0gICAgdmFyIHJlcSA9IG5ldyBY
TUxIdHRwUmVxdWVzdCgpOwotICAgIHJlcS5vcGVuKCJHRVQiLCB1cmwsIHRydWUpOwotICAgIHJl
cS5zZXRSZXF1ZXN0SGVhZGVyKCJ4LXdlYmtpdCIsICJmb28iKTsKLQotICAgIHJlcS5vbmVycm9y
ID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciBkaWRMb2FkQXBwQm91bmRSZXF1ZXN0ID0gdGVz
dFJ1bm5lci5kaWRMb2FkQXBwQm91bmRSZXF1ZXN0KCk7Ci0gICAgICAgIHZhciBkaWRMb2FkTm9u
QXBwQm91bmRSZXF1ZXN0ID0gdGVzdFJ1bm5lci5kaWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0KCk7
Ci0KLSAgICAgICAgaWYgKGRpZExvYWROb25BcHBCb3VuZFJlcXVlc3QpIHsKLSAgICAgICAgICAg
IGxvZygiRkFJTCBkaWQgbG9hZCBub24gYXBwLWJvdW5kIHJlcXVlc3QiKTsKLSAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFkaWRM
b2FkQXBwQm91bmRSZXF1ZXN0KSB7Ci0gICAgICAgICAgICBsb2coIkZBSUwgZGlkIG5vdCBsb2Fk
IGFwcC1ib3VuZCByZXF1ZXN0Iik7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKLSAgICAgICAgfQotCi0gICAgICAgIGxvZygiUEFTUyBzdWNjZXNzZnVsbHkgbG9hZGVkIG9u
bHkgYXBwLWJvdW5kIHJlcXVlc3RzIik7Ci0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwotICAgIH0KLSAgICByZXEuc2VuZChudWxsKTsKLX0KLQotcnVuVGVzdCgpOwotPC9zY3JpcHQ+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZh
Y3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXByZWZsaWdodC1zeW5jLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0
cmlidXRpb24tcHJlZmxpZ2h0LXN5bmMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBkZWUwNDUzYjc3ZWM2NTdhYWU4NDQ2ODRmNDNlMmQyOGNmNmQyNWFmLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tcHJl
ZmxpZ2h0LXN5bmMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1D
T05TT0xFIE1FU1NBR0U6IFByZWZsaWdodCByZXNwb25zZSBpcyBub3Qgc3VjY2Vzc2Z1bAotQ09O
U09MRSBNRVNTQUdFOiBYTUxIdHRwUmVxdWVzdCBjYW5ub3QgbG9hZCBodHRwOi8vbG9jYWxob3N0
OjgwMDAveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL3N0YXR1cy00MDQtd2l0aG91dC1ib2R5LnB5
IGR1ZSB0byBhY2Nlc3MgY29udHJvbCBjaGVja3MuCi1UZXN0cyBhcHAgYm91bmQgcmVxdWVzdHMg
Z2V0IG1hcmtlZCBmb3Igc3luYyBwcmVmbGlnaHRzCi0KLVBBU1M6IE5ldHdvcmtFcnJvcjogIEEg
bmV0d29yayBlcnJvciBvY2N1cnJlZC4KLVBBU1Mgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBvbmx5IGFw
cC1ib3VuZCByZXF1ZXN0cwotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
LWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXByZWZsaWdodC1zeW5j
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBw
LWJvdW5kLWF0dHJpYnV0aW9uLXByZWZsaWdodC1zeW5jLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDZjMGYwOGQ1MmZmNzhmYzU5NTFiMzNlZTEwNzBjMDNkMjI3NjYxNzkuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1w
cmVmbGlnaHQtc3luYy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotPHA+VGVz
dHMgYXBwIGJvdW5kIHJlcXVlc3RzIGdldCBtYXJrZWQgZm9yIHN5bmMgcHJlZmxpZ2h0czwvcD4K
LQotPHByZSBpZD0iY29uc29sZSI+PC9wcmU+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIGxvZyhtZXNzYWdlKQotewotICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUobWVzc2FnZSArICdcbicpKTsKLX0KLQotdmFyIHByZWZsaWdodExpbmtEb21haW4gPSAi
bG9jYWxob3N0IjsKLXZhciBjb250ZXh0SG9zdCA9ICIxMjcuMC4wLjEiOwotdmFyIHVybCA9ICJo
dHRwOi8vbG9jYWxob3N0OjgwMDAveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL3N0YXR1cy00MDQt
d2l0aG91dC1ib2R5LnB5IgotCi1mdW5jdGlvbiBydW5UZXN0KCkKLXsKLSAgICB2YXIgcmVxID0g
bmV3IFhNTEh0dHBSZXF1ZXN0KCk7Ci0gICAgcmVxLm9wZW4oIkdFVCIsIHVybCwgZmFsc2UpOwot
ICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKCJ4LXdlYmtpdCIsICJmb28iKTsKLQotICAgIHRyeSB7
Ci0gICAgICAgIHJlcS5zZW5kKG51bGwpOwotICAgICAgICBsb2coIlBBU1M6ICIgKyByZXEucmVz
cG9uc2VUZXh0KTsKLSAgICB9IGNhdGNoIChleCkgewotICAgICAgICBsb2coIlBBU1M6ICIgKyBl
eCk7Ci0gICAgICAgIHZhciBkaWRMb2FkQXBwQm91bmRSZXF1ZXN0ID0gdGVzdFJ1bm5lci5kaWRM
b2FkQXBwQm91bmRSZXF1ZXN0KCk7Ci0gICAgICAgIHZhciBkaWRMb2FkTm9uQXBwQm91bmRSZXF1
ZXN0ID0gdGVzdFJ1bm5lci5kaWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0KCk7Ci0KLSAgICAgICAg
aWYgKGRpZExvYWROb25BcHBCb3VuZFJlcXVlc3QpIHsKLSAgICAgICAgICAgIGxvZygiRkFJTCBk
aWQgbG9hZCBub24gYXBwLWJvdW5kIHJlcXVlc3QiKTsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFkaWRMb2FkQXBwQm91bmRS
ZXF1ZXN0KSB7Ci0gICAgICAgICAgICBsb2coIkZBSUwgZGlkIG5vdCBsb2FkIGFwcC1ib3VuZCBy
ZXF1ZXN0Iik7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICAgICAg
fQotCi0gICAgICAgIGxvZygiUEFTUyBzdWNjZXNzZnVsbHkgbG9hZGVkIG9ubHkgYXBwLWJvdW5k
IHJlcXVlc3RzIik7Ci0gICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0KLX0K
LQotcnVuVGVzdCgpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXNwZWN1bGF0
aXZlLXJldmFsaWRhdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
LWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXNwZWN1bGF0aXZlLXJl
dmFsaWRhdGlvbi1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYy
YjRkNGE1MTJhYmNlYzVkYmI4ZWE5YjY5NDY4M2U4M2FmMmJkNmQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1h
cHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1zcGVjdWxhdGl2ZS1yZXZh
bGlkYXRpb24tZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotMTI3
LjAuMC4xOjgwMDAgLSBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgLSBQcm90ZWN0
aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZUhUVFBCYXNpYyAtIFJlc3BvbmRpbmcgd2l0aCB0
ZXN0VXNlcm5hbWU6dGVzdFBhc3N3b3JkCi0xMjcuMC4wLjE6ODAwMCAtIGRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSAtIFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1l
SFRUUEJhc2ljIC0gU2ltdWxhdGluZyBjYW5jZWxsZWQgYXV0aGVudGljYXRpb24gc2hlZXQKLVRl
c3RzIHNwZWN1bGF0aXZlIHJldmFsaWRhdGlvbiBvZiBhdXRoZW50aWNhdGVkIHJlc291cmNlcy4K
LQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVBBU1MgeGhyLnN0YXR1cyBpcyA0MDEK
LVBBU1MgU3VjY2Vzc2Z1bHkgbG9hZGVkLgotUEFTUyBzdWNjZXNzZnVsbHkgbG9hZGVkIG9ubHkg
YXBwLWJvdW5kIHJlcXVlc3RzCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRF
U1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAt
YnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1zcGVjdWxhdGl2ZS1yZXZhbGlk
YXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFj
eS9hcHAtYm91bmQtYXR0cmlidXRpb24tc3BlY3VsYXRpdmUtcmV2YWxpZGF0aW9uLmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjMDc2YjVlZTZlY2Y0NDQwYmNiZjYwODEwYjlm
NDcxNzE4YzE2YWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3Vu
ZC1hdHRyaWJ1dGlvbi1zcGVjdWxhdGl2ZS1yZXZhbGlkYXRpb24uaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDcyICswLDAgQEAKLTxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWRlc2NyaXB0aW9uKCJUZXN0cyBzcGVjdWxh
dGl2ZSByZXZhbGlkYXRpb24gb2YgYXV0aGVudGljYXRlZCByZXNvdXJjZXMuIik7Ci1qc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKLQotdGVzdFJ1bm5lci5zZXRIYW5kbGVzQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VzKHRydWUpOwotdGVzdFJ1bm5lci5zZXRBdXRoZW50aWNhdGlvblVzZXJuYW1lKCJ0ZXN0
VXNlcm5hbWUiKTsKLXRlc3RSdW5uZXIuc2V0QXV0aGVudGljYXRpb25QYXNzd29yZCgidGVzdFBh
c3N3b3JkIik7Ci0KLXN0YXRlID0gIndhcm11cCI7Ci0KLWZ1bmN0aW9uIGNsZWFyQ3JlZGVudGlh
bFN0b3JhZ2UoKQotewotICAgIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwotICAgIHhoci5v
cGVuKCJHRVQiLCAicmVzb3VyY2VzL3Jlc291cmNlLXdpdGgtYXV0aC5weT9vdGhlciIsIGZhbHNl
LCAiYmFkVXNlcm5hbWUiLCAiYmFkUGFzc3dvcmQiKTsKLSAgICB4aHIuc2VuZCgpOwotICAgIHNo
b3VsZEJlKCJ4aHIuc3RhdHVzIiwgIjQwMSIpOwotfQotCi1mdW5jdGlvbiBsb2cobWVzc2FnZSkK
LXsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UgKyAnXG4nKSk7Ci19Ci0KLWZ1bmN0aW9uIGZy
YW1lTG9hZGVkKCkKLXsKLSAgICBpZiAoc3RhdGUgPT0gIndhcm11cCIpIHsKLSAgICAgICAgLy8g
TmF2aWdhdGUgZnJhbWUgdG8gJ2Fib3V0OmJsYW5rJyB0byBmbHVzaCB0byBzdWJyZXNvdXJjZSBs
b2FkcyBtZXRhZGF0YSB0byBkaXNrLgotICAgICAgICBzdGF0ZSA9ICJmbHVzaGluZ01ldGFkYXRh
IjsKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRIYW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2Vz
KGZhbHNlKTsKLSAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RGcmFtZSIpLnNy
YyA9ICJhYm91dDpibGFuayI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKHN0YXRl
ID09ICJmbHVzaGluZ01ldGFkYXRhIikgewotICAgICAgICBjbGVhckNyZWRlbnRpYWxTdG9yYWdl
KCk7Ci0KLSAgICAgICAgaW50ZXJuYWxzLmNsZWFyTWVtb3J5Q2FjaGUoKTsKLSAgICAgICAgdGVz
dFJ1bm5lci5zZXRIYW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzKGZhbHNlKTsKLQotICAg
ICAgICAvLyBOYXZpZ2F0ZSBmcmFtZSB0byBpdHMgb3JpZ2luYWwgbG9jYXRpb24gYWdhaW4uIFRo
aXMgdGltZSBpdCBzaG91bGQgc3BlY3VsYXRpdmVseQotICAgICAgICAvLyB2YWxpZGF0ZSBzdWJy
ZXNvdXJjZXMgYXMgd2UgaGF2ZSBzdWJyZXNvdXJjZSBsb2FkcyBtZXRhZGF0YSBpbiB0aGUgZGlz
ayBjYWNoZS4KLSAgICAgICAgc3RhdGUgPSAic3BlY3VsYXRpdmVSZXZhbGlkYXRpb24iOwotICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdEZyYW1lIikuc3JjID0gInJlc291cmNl
cy9mcmFtZS13aXRoLWF1dGhlbnRpY2F0ZWQtcmVzb3VyY2UucHkiOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGlmIChzdGF0ZSA9PSAic3BlY3VsYXRpdmVSZXZhbGlkYXRpb24iKSB7Ci0g
ICAgICAgIHRlc3RQYXNzZWQoIlN1Y2Nlc3NmdWx5IGxvYWRlZC4iKTsKLSAgICAgICAgdmFyIGRp
ZExvYWRBcHBCb3VuZFJlcXVlc3QgPSB0ZXN0UnVubmVyLmRpZExvYWRBcHBCb3VuZFJlcXVlc3Qo
KTsKLSAgICAgICAgdmFyIGRpZExvYWROb25BcHBCb3VuZFJlcXVlc3QgPSB0ZXN0UnVubmVyLmRp
ZExvYWROb25BcHBCb3VuZFJlcXVlc3QoKTsKLQotICAgICAgICBpZiAoZGlkTG9hZE5vbkFwcEJv
dW5kUmVxdWVzdCkgewotICAgICAgICAgICAgbG9nKCJGQUlMIGRpZCBsb2FkIG5vbiBhcHAtYm91
bmQgcmVxdWVzdCIpOwotICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIWRpZExvYWRBcHBCb3VuZFJlcXVlc3Qp
IHsKLSAgICAgICAgICAgIGxvZygiRkFJTCBkaWQgbm90IGxvYWQgYXBwLWJvdW5kIHJlcXVlc3Qi
KTsKLSAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0KLSAgICAgICAgbG9nKCJQQVNTIHN1Y2Nlc3NmdWxseSBsb2FkZWQgb25seSBhcHAt
Ym91bmQgcmVxdWVzdHMiKTsKLQotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLX0KLQotPC9zY3JpcHQ+Ci08aWZyYW1lIGlkPSJ0ZXN0RnJhbWUiIHNyYz0i
cmVzb3VyY2VzL2ZyYW1lLXdpdGgtYXV0aGVudGljYXRlZC1yZXNvdXJjZS5weSIgb25sb2FkPSJm
cmFtZUxvYWRlZCgpIj48L2lmcmFtZT4KLTxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9jb250ZXh0LXN0cmluZy1mb3Itc3ViZnJhbWUt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2
YWN5L2NvbnRleHQtc3RyaW5nLWZvci1zdWJmcmFtZS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDlhMzY4ZjY2YjU0ZTE3Mzk5MTcyZmFjMzczNzc2Njc3Yjc3NDZi
ZWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2NvbnRleHQtc3RyaW5nLWZv
ci1zdWJmcmFtZS1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1U
ZXN0cyB0aGF0IHRoZSBhcHAtYm91bmQtcmVxdWVzdCBjb250ZXh0IHN0cmluZyBnZXRzIHByb3Bl
cmx5IHNldCBmb3IgYW4gaWZyYW1lCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1Q
QVNTIENvbnRleHQgc3RyaW5nIGZvciBzdWIgZnJhbWUgY29ycmVjdGx5IGNhcHR1cmVkLgotUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9jb250ZXh0
LXN0cmluZy1mb3Itc3ViZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBw
LWJyb3dzZXItcHJpdmFjeS9jb250ZXh0LXN0cmluZy1mb3Itc3ViZnJhbWUuaHRtbApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWUzZTliNmIwYjU1Mjk2MmFiZGZmNjRlNzIxMDJiYjIy
Mjg2ZThkMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvY29udGV4dC1zdHJp
bmctZm9yLXN1YmZyYW1lLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi08IURP
Q1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJl
c291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL3V0aWwuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotICAgIGRl
c2NyaXB0aW9uKCJUZXN0cyB0aGF0IHRoZSBhcHAtYm91bmQtcmVxdWVzdCBjb250ZXh0IHN0cmlu
ZyBnZXRzIHByb3Blcmx5IHNldCBmb3IgYW4gaWZyYW1lIik7Ci0gICAganNUZXN0SXNBc3luYyA9
IHRydWU7Ci0KLSAgICBjb25zdCBzdWJGcmFtZUhvc3QgPSAibG9jYWxob3N0IjsKLSAgICBjb25z
dCBjb250ZXh0SG9zdCA9ICIxMjcuMC4wLjEiOwotICAgIGZ1bmN0aW9uIGFza0ZvckNvbnRleHRT
dHJpbmdGb3JTdWJGcmFtZSgpIHsKLSAgICAgICAgdGVzdFJ1bm5lci5hcHBCb3VuZFJlcXVlc3RD
b250ZXh0RGF0YUZvckRvbWFpbihzdWJGcmFtZUhvc3QsIGZ1bmN0aW9uIChjb250ZXh0RGF0YSkg
ewotICAgICAgICAgICAgaWYgKGNvbnRleHREYXRhID09IG51bGwpIHsKLSAgICAgICAgICAgICAg
ICBhc2tGb3JDb250ZXh0U3RyaW5nRm9yU3ViRnJhbWUoKTsKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChjb250ZXh0RGF0YSA9PSBjb250
ZXh0SG9zdCkKLSAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJDb250ZXh0IHN0cmluZyBmb3Ig
c3ViIGZyYW1lIGNvcnJlY3RseSBjYXB0dXJlZC4iKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJDb250ZXh0IHN0cmluZyBmb3Igc3ViIGZyYW1lIE5PVCBj
b3JyZWN0bHkgY2FwdHVyZWQuIik7Ci0KLSAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAg
ICAgICB9KTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBvcGVuSWZyYW1lKHVybCwgb25Mb2FkSGFu
ZGxlcikgewotICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
aWZyYW1lIik7Ci0gICAgICAgIGVsZW1lbnQuc3JjID0gdXJsOwotICAgICAgICBpZiAob25Mb2Fk
SGFuZGxlcikgewotICAgICAgICAgICAgZWxlbWVudC5vbmxvYWQgPSBvbkxvYWRIYW5kbGVyOwot
ICAgICAgICB9Ci0gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVudCk7Ci0g
ICAgfQotCi0gICAgb3BlbklmcmFtZSgiaHR0cDovL2xvY2FsaG9zdDo4MDAwL2luLWFwcC1icm93
c2VyLXByaXZhY3kvcmVzb3VyY2VzL2Jhc2ljLWlmcmFtZS5odG1sJmR1bW15PSIgKyBNYXRoLnJh
bmRvbSgpLCBhc2tGb3JDb250ZXh0U3RyaW5nRm9yU3ViRnJhbWUpOwotPC9zY3JpcHQ+Ci08L2Jv
ZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1i
cm93c2VyLXByaXZhY3kvY29udGV4dC1zdHJpbmctcHJlY29ubmVjdC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvY29udGV4dC1zdHJp
bmctcHJlY29ubmVjdC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDZiNGI1NmZhMDFmZjA2MDNmZjY5OTE3YzM4MGRjMDY5YjkzMDZkYzYuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bi1hcHAtYnJvd3Nlci1wcml2YWN5L2NvbnRleHQtc3RyaW5nLXByZWNvbm5lY3QtZXhwZWN0ZWQu
dHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBTdWNj
ZXNzZnVsbHkgcHJlY29ubmVjdGVkIHRvIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC8KLVRlc3RzIHRo
YXQgcHJlY29ubmVjdCB0YXNrcyBnZXQgbWFya2VkIHdpdGggdGhlIHByb3BlciBjb250ZXh0IHN0
cmluZy4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVBBU1MgQ29udGV4dCBzdHJp
bmcgZm9yIHByZWNvbm5lY3QgY29ycmVjdGx5IGNhcHR1cmVkLgotUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9jb250ZXh0LXN0cmluZy1wcmVjb25u
ZWN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kv
Y29udGV4dC1zdHJpbmctcHJlY29ubmVjdC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA3MWJiYzMyYmYxYzg3MmU0Y2ZlZjNmZmE1NjZmOTRjMTg1NzIwMjZkLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9jb250ZXh0LXN0cmluZy1wcmVjb25uZWN0Lmh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgot
PGhlYWQ+Ci08c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2Ny
aXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQg
cHJlY29ubmVjdCB0YXNrcyBnZXQgbWFya2VkIHdpdGggdGhlIHByb3BlciBjb250ZXh0IHN0cmlu
Zy4iKTsKLWpzVGVzdElzQXN5bmMgPSB0cnVlOwotCi12YXIgcHJlY29ubmVjdExpbmtEb21haW4g
PSAibG9jYWxob3N0IjsKLXZhciBjb250ZXh0SG9zdCA9ICIxMjcuMC4wLjEiOwotCi1mdW5jdGlv
biBhc2tGb3JDb250ZXh0U3RyaW5nRm9yUHJlY29ubmVjdCgpIHsKLSAgICB0ZXN0UnVubmVyLmFw
cEJvdW5kUmVxdWVzdENvbnRleHREYXRhRm9yRG9tYWluKHByZWNvbm5lY3RMaW5rRG9tYWluLCBm
dW5jdGlvbiAoY29udGV4dERhdGEpIHsKLSAgICAgICAgaWYgKGNvbnRleHREYXRhID09IG51bGwp
IHsKLSAgICAgICAgICAgIGFza0ZvckNvbnRleHRTdHJpbmdGb3JQcmVjb25uZWN0KCk7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoY29udGV4dERhdGEgPT0g
Y29udGV4dEhvc3QpCi0gICAgICAgICAgICB0ZXN0UGFzc2VkKCJDb250ZXh0IHN0cmluZyBmb3Ig
cHJlY29ubmVjdCBjb3JyZWN0bHkgY2FwdHVyZWQuIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHRlc3RGYWlsZWQoIkNvbnRleHQgc3RyaW5nIGZvciBwcmVjb25uZWN0IE5PVCBjb3JyZWN0
bHkgY2FwdHVyZWQuIik7Ci0KLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfSk7Ci19Ci0K
LWludGVybmFscy5zZXRDb25zb2xlTWVzc2FnZUxpc3RlbmVyKGZ1bmN0aW9uKCkgewotICAgIGFz
a0ZvckNvbnRleHRTdHJpbmdGb3JQcmVjb25uZWN0KCk7Ci19KTsKLQotY29uc3QgdGVzdExpbmsg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaW5rIik7Ci10ZXN0TGluay5yZWwgPSAicHJlY29u
bmVjdCI7Ci10ZXN0TGluay5ocmVmID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCI7Ci1kb2N1bWVu
dC5oZWFkLmFwcGVuZENoaWxkKHRlc3RMaW5rKTsKLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2
YWN5L2NvbnRleHQtc3RyaW5nLXByZWZsaWdodC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvY29udGV4dC1zdHJpbmctcHJlZmxpZ2h0
LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTA3OTYxNTBhOTZi
OGIxZDcwN2VmYTdlNDAzMmU0NWVkNzAzYzk1Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2Vy
LXByaXZhY3kvY29udGV4dC1zdHJpbmctcHJlZmxpZ2h0LWV4cGVjdGVkLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDkgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBQcmVmbGlnaHQgcmVzcG9uc2Ug
aXMgbm90IHN1Y2Nlc3NmdWwKLUNPTlNPTEUgTUVTU0FHRTogWE1MSHR0cFJlcXVlc3QgY2Fubm90
IGxvYWQgaHR0cDovL2xvY2FsaG9zdDo4MDAwL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9zdGF0
dXMtNDA0LXdpdGhvdXQtYm9keS5weSBkdWUgdG8gYWNjZXNzIGNvbnRyb2wgY2hlY2tzLgotQ09O
U09MRSBNRVNTQUdFOiBQcmVmbGlnaHQgcmVzcG9uc2UgaXMgbm90IHN1Y2Nlc3NmdWwKLUNPTlNP
TEUgTUVTU0FHRTogWE1MSHR0cFJlcXVlc3QgY2Fubm90IGxvYWQgaHR0cDovL2xvY2FsaG9zdDo4
MDAwL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9zdGF0dXMtNDA0LXdpdGhvdXQtYm9keS5weSBk
dWUgdG8gYWNjZXNzIGNvbnRyb2wgY2hlY2tzLgotVGVzdHMgdGhhdCBub3Qgc3VjY2Vzc2Z1bCBw
cmVmbGlnaHQgcmVzcG9uc2VzIG1ha2UgcHJlZmxpZ2h0IGZhaWxpbmcKLQotUEFTUzogTmV0d29y
a0Vycm9yOiAgQSBuZXR3b3JrIGVycm9yIG9jY3VycmVkLgotUEFTUyBDb250ZXh0IHN0cmluZyBm
b3IgQ09SUyBwcmVmbGlnaHQgY29ycmVjdGx5IGNhcHR1cmVkLgotCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvY29udGV4dC1zdHJpbmct
cHJlZmxpZ2h0Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXBy
aXZhY3kvY29udGV4dC1zdHJpbmctcHJlZmxpZ2h0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDU3YTA1ZDE0NzU5Yzk0MWY4ZDMzZmY3NTAzYjhkNzAwYTkwNGYwYzkuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2NvbnRleHQtc3RyaW5nLXByZWZsaWdodC5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotPHA+VGVzdHMgdGhhdCBub3Qgc3Vj
Y2Vzc2Z1bCBwcmVmbGlnaHQgcmVzcG9uc2VzIG1ha2UgcHJlZmxpZ2h0IGZhaWxpbmc8L3A+Ci0K
LTxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5l
cikgewotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOwotfQotCi1mdW5jdGlvbiBsb2cobWVzc2FnZSkKLXsKLSAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKG1lc3NhZ2UgKyAnXG4nKSk7Ci19Ci0gICAgCi12YXIgcHJlZmxpZ2h0TGlua0RvbWFpbiA9
ICJsb2NhbGhvc3QiOwotdmFyIGNvbnRleHRIb3N0ID0gIjEyNy4wLjAuMSI7Ci12YXIgdXJsID0g
Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvc3RhdHVzLTQw
NC13aXRob3V0LWJvZHkucHkiCi0KLWZ1bmN0aW9uIGFza0ZvckNvbnRleHRTdHJpbmdGb3JQcmVm
bGlnaHQoKSB7Ci0gICAgdGVzdFJ1bm5lci5hcHBCb3VuZFJlcXVlc3RDb250ZXh0RGF0YUZvckRv
bWFpbihwcmVmbGlnaHRMaW5rRG9tYWluLCBmdW5jdGlvbiAoY29udGV4dERhdGEpIHsKLSAgICAg
ICAgaWYgKGNvbnRleHREYXRhID09IG51bGwpIHsKLSAgICAgICAgICAgIGFza0ZvckNvbnRleHRT
dHJpbmdGb3JQcmVmbGlnaHQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0g
ICAgICAgIGlmIChjb250ZXh0RGF0YSA9PSBjb250ZXh0SG9zdCkKLSAgICAgICAgICAgIGxvZygi
UEFTUyBDb250ZXh0IHN0cmluZyBmb3IgQ09SUyBwcmVmbGlnaHQgY29ycmVjdGx5IGNhcHR1cmVk
LiIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBsb2coIkZBSUwgQ29udGV4dCBzdHJpbmcg
Zm9yIENPUlMgcHJlZmxpZ2h0IE5PVCBjb3JyZWN0bHkgY2FwdHVyZWQuIik7Ci0KLSAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7Ci19Ci0KLWZ1bmN0aW9uIHJ1blRlc3Qo
KQotewotICAgIHZhciByZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKLSAgICByZXEub3Blbigi
R0VUIiwgdXJsLCBmYWxzZSk7Ci0gICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoIngtd2Via2l0Iiwg
ImZvbyIpOwotCi0gICAgdHJ5IHsKLSAgICAgICAgcmVxLnNlbmQobnVsbCk7Ci0gICAgICAgIGxv
ZygiUEFTUzogIiArIHJlcS5yZXNwb25zZVRleHQpOwotICAgIH0gY2F0Y2ggKGV4KSB7Ci0gICAg
ICAgIGxvZygiUEFTUzogIiArIGV4KTsKLSAgICB9Ci0KLSAgICByZXEgPSBuZXcgWE1MSHR0cFJl
cXVlc3QoKTsKLSAgICByZXEub3BlbigiR0VUIiwgdXJsLCB0cnVlKTsKLSAgICByZXEuc2V0UmVx
dWVzdEhlYWRlcigieC13ZWJraXQiLCAiZm9vIik7Ci0KLSAgICByZXEub25sb2FkID0gZnVuY3Rp
b24oKSB7Ci0gICAgICAgIGFza0ZvckNvbnRleHRTdHJpbmdGb3JQcmVmbGlnaHQoKTsKLSAgICB9
Ci0gICAgcmVxLm9uZXJyb3IgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgYXNrRm9yQ29udGV4dFN0
cmluZ0ZvclByZWZsaWdodCgpOwotICAgIH0KLSAgICByZXEuc2VuZChudWxsKTsKLX0KLQotcnVu
VGVzdCgpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
LWFwcC1icm93c2VyLXByaXZhY3kvcmVzb3VyY2VzL2ZyYW1lLXdpdGgtYXV0aGVudGljYXRlZC1y
ZXNvdXJjZS5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFj
eS9yZXNvdXJjZXMvZnJhbWUtd2l0aC1hdXRoZW50aWNhdGVkLXJlc291cmNlLnB5CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDc1NQppbmRleCA4NDhkMGZkMWE2ZDZjMDk5YWFkNjFlMDA0MjQyZTIzODk1
NTNlOTQxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9yZXNvdXJjZXMvZnJh
bWUtd2l0aC1hdXRoZW50aWNhdGVkLXJlc291cmNlLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTMg
KzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwotCi1pbXBvcnQgc3lzCi0KLXN5cy5zdGRv
dXQud3JpdGUoCi0gICAgJ0NhY2hlLUNvbnRyb2w6IG1heC1hZ2U9MFxyXG4nCi0gICAgJ0V0YWc6
IDEyMzQ1Njc4OVxyXG4nCi0gICAgJ0NvbnRlbnQtVHlwZTogdGV4dC9odG1sXHJcblxyXG4nCi0g
ICAgJzwhRE9DVFlQRSBodG1sPlxuJwotICAgICc8Ym9keT5cbicKLSAgICAnPHNjcmlwdCBzcmM9
InJlc291cmNlLXdpdGgtYXV0aC5weSI+PC9zY3JpcHQ+XG4nCi0gICAgJzwvYm9keT5cbicKLSkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFj
eS9yZXNvdXJjZXMvcG9zdC5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dz
ZXItcHJpdmFjeS9yZXNvdXJjZXMvcG9zdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5k
ZXggMWZjYmMzYTJmYjMyMzExNzJkYjliNTliZWNlNjVjMDhjNzJkZDVhNi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luLWFwcC1icm93c2VyLXByaXZhY3kvcmVzb3VyY2VzL3Bvc3QucHkKKysrIC9kZXYvbnVsbApA
QCAtMSwyNyArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24zCi0KLWltcG9ydCBvcwotaW1w
b3J0IHN5cwotCi1yZWZlcmVyID0gb3MuZW52aXJvbi5nZXQoJ0hUVFBfUkVGRVJFUicsICcnKQot
Ci1zeXMuc3Rkb3V0LndyaXRlKAotICAgICdDb250ZW50LVR5cGU6IHRleHQvaHRtbFxyXG5cclxu
JwotICAgICc8cD5SZWZlcnJlcjoge3JlZmVyZXJ9PC9wPlxuJwotICAgICc8c2NyaXB0PlxuJwot
ICAgICdpZiAod2luZG93LnRlc3RSdW5uZXIpIHt7XG4nCi0gICAgJyAgICB2YXIgZGlkTG9hZEFw
cEJvdW5kUmVxdWVzdCA9IHRlc3RSdW5uZXIuZGlkTG9hZEFwcEJvdW5kUmVxdWVzdCgpO1xuJwot
ICAgICcgICAgdmFyIGRpZExvYWROb25BcHBCb3VuZFJlcXVlc3QgPSB0ZXN0UnVubmVyLmRpZExv
YWROb25BcHBCb3VuZFJlcXVlc3QoKTtcbicKLSAgICAnICAgIGlmIChkaWRMb2FkTm9uQXBwQm91
bmRSZXF1ZXN0KSB7e1xuJwotICAgICcgICAgICAgIGNvbnNvbGUubG9nKCJGQUlMIGRpZCBsb2Fk
IG5vbiBhcHAtYm91bmQgcmVxdWVzdCIpO1xuJwotICAgICcgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpO1xuJwotICAgICcgICAgfX1cbicKLSAgICAnICAgIGlmICghZGlkTG9hZEFwcEJv
dW5kUmVxdWVzdCkge3tcbicKLSAgICAnICAgICAgICAgY29uc29sZS5sb2coIkZBSUwgZGlkIG5v
dCBsb2FkIGFwcC1ib3VuZCByZXF1ZXN0Iik7XG4nCi0gICAgJyAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7XG4nCi0gICAgJyAgICAgfX1cbicKLSAgICAnICAgIGNvbnNvbGUubG9nKCJQ
QVNTIHN1Y2Nlc3NmdWxseSBsb2FkZWQgb25seSBhcHAtYm91bmQgcmVxdWVzdHMiKTtcbicKLSAg
ICAnICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpO1xuJwotICAgICd9fVxuJwotICAgICc8L3Nj
cmlwdD5cbicuZm9ybWF0KHJlZmVyZXI9cmVmZXJlcikKLSkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9yZXNvdXJjZXMvcmVzb3VyY2Ut
d2l0aC1hdXRoLnB5IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2
YWN5L3Jlc291cmNlcy9yZXNvdXJjZS13aXRoLWF1dGgucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NzU1CmluZGV4IDdhZmI3OGQ4MWM2ZjNjOWRhNDc5ZDI4YmUyNDZhZTE1YmNkMDRkZGUuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L3Jlc291cmNlcy9yZXNvdXJjZS13aXRoLWF1
dGgucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRo
b24zCi0KLWltcG9ydCBiYXNlNjQKLWltcG9ydCBvcwotaW1wb3J0IHN5cwotCi1jcmVkZW50aWFs
cyA9IGJhc2U2NC5iNjRkZWNvZGUob3MuZW52aXJvbi5nZXQoJ0hUVFBfQVVUSE9SSVpBVElPTics
ICcgT2c9PScpLnNwbGl0KCcgJylbMV0pLmRlY29kZSgpLnNwbGl0KCc6JykKLXVzZXJuYW1lID0g
Y3JlZGVudGlhbHNbMF0KLXBhc3N3b3JkID0gJzonLmpvaW4oY3JlZGVudGlhbHNbMTpdKQotCi1l
eHBlY3RlZFVzZXJuYW1lID0gJ3Rlc3RVc2VybmFtZScKLWV4cGVjdGVkUGFzc3dvcmQgPSAndGVz
dFBhc3N3b3JkJwotcmVhbG0gPSBvcy5lbnZpcm9uLmdldCgnUkVRVUVTVF9VUkknLCAnJykKLQot
c3lzLnN0ZG91dC53cml0ZSgKLSAgICAnQ29udGVudC1UeXBlOiB0ZXh0L2phdmFzY3JpcHRcclxu
JwotICAgICdDYWNoZS1Db250cm9sOiBtYXgtYWdlPTBcclxuJwotICAgICdFdGFnOiAxMjM0NTY3
ODlcclxuJwotKQotCi1pZiB1c2VybmFtZSAhPSBleHBlY3RlZFVzZXJuYW1lIG9yIHBhc3N3b3Jk
ICE9IGV4cGVjdGVkUGFzc3dvcmQ6Ci0gICAgc3lzLnN0ZG91dC53cml0ZSgKLSAgICAgICAgZidX
V1ctQXV0aGVudGljYXRlOiBCYXNpYyByZWFsbT0ie3JlYWxtfSJcclxuJwotICAgICAgICAnc3Rh
dHVzOiA0MDFcclxuXHJcbicKLSAgICAgICAgZidTZW50IHVzZXJuYW1lOnBhc3N3b3JkIG9mICh7
dXNlcm5hbWV9OntwYXNzd29yZH0pIHdoaWNoIGlzIG5vdCB3aGF0IHdhcyBleHBlY3RlZFxuJwot
ICAgICkKLSAgICBzeXMuZXhpdCgwKQotCi1zeXMuc3Rkb3V0LndyaXRlKCdcclxubG9hZGVkID0g
dHJ1ZTtcbicpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24v
cmVzb3VyY2VzL2NoZWNrLXBpbmctYXBwLWJvdW5kLWRhdGEucHkgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2NoZWNrLXBpbmctYXBwLWJvdW5kLWRhdGEucHkK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDZmZjVkZWYzNDA1MzJmOWRmNmE4MWY4NTQx
MDQwOThlOTMzZDNlZDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9jaGVjay1w
aW5nLWFwcC1ib3VuZC1kYXRhLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotIyEv
dXNyL2Jpbi9lbnYgcHl0aG9uMwotCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLWltcG9ydCB0aW1l
Ci1mcm9tIHBpbmdfZmlsZV9wYXRoIGltcG9ydCBwaW5nX2ZpbGVwYXRoCi0KLXN5cy5zdGRvdXQu
d3JpdGUoJ0NvbnRlbnQtVHlwZTogdGV4dC9odG1sXHJcblxyXG4nKQotCi13aGlsZSBub3Qgb3Mu
cGF0aC5pc2ZpbGUocGluZ19maWxlcGF0aCk6Ci0gICAgdGltZS5zbGVlcCgwLjAxKQotCi1zeXMu
c3Rkb3V0LndyaXRlKAotICAgICc8aHRtbD48Ym9keT5cbicKLSAgICAnUGluZyBzZW50IHN1Y2Nl
c3NmdWxseScKLSkKLQotcGluZ19maWxlID0gb3BlbihwaW5nX2ZpbGVwYXRoLCAncicpCi1mb3Ig
bGluZSBpbiBwaW5nX2ZpbGUucmVhZGxpbmVzKCk6Ci0gICAgc3lzLnN0ZG91dC53cml0ZSgnPGJy
Pnt9Jy5mb3JtYXQobGluZS5zdHJpcCgpKSkKLQotcGluZ19maWxlLmNsb3NlKCkKLWlmIG9zLnBh
dGguaXNmaWxlKHBpbmdfZmlsZXBhdGgpOgotICAgIG9zLnJlbW92ZShwaW5nX2ZpbGVwYXRoKQot
Ci1zeXMuc3Rkb3V0LndyaXRlKAotICAgICc8c2NyaXB0PicKLSAgICAnaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7e1xuJwotICAgICcgICAgdmFyIGRpZExvYWRBcHBCb3VuZFJlcXVlc3QgPSB0ZXN0
UnVubmVyLmRpZExvYWRBcHBCb3VuZFJlcXVlc3QoKTtcbicKLSAgICAnICAgIHZhciBkaWRMb2Fk
Tm9uQXBwQm91bmRSZXF1ZXN0ID0gdGVzdFJ1bm5lci5kaWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0
KCk7XG4nCi0gICAgJyAgICBpZiAoZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdCkge3tcbicKLSAg
ICAnICAgICAgICBjb25zb2xlLmxvZygiRkFJTCBkaWQgbG9hZCBub24gYXBwLWJvdW5kIHJlcXVl
c3QiKTtcbicKLSAgICAnICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTtcbicKLSAgICAn
ICAgIH19XG4nCi0gICAgJyAgICBpZiAoIWRpZExvYWRBcHBCb3VuZFJlcXVlc3QpIHt7XG4nCi0g
ICAgJyAgICAgICAgIGNvbnNvbGUubG9nKCJGQUlMIGRpZCBub3QgbG9hZCBhcHAtYm91bmQgcmVx
dWVzdCIpO1xuJwotICAgICcgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpO1xuJwotICAg
ICcgICAgIH19XG4nCi0gICAgJyAgICBjb25zb2xlLmxvZygiUEFTUyBzdWNjZXNzZnVsbHkgbG9h
ZGVkIG9ubHkgYXBwLWJvdW5kIHJlcXVlc3RzIik7XG4nCi0gICAgJyAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTtcbicKLSAgICAnfX1cbicKLSAgICAnPC9zY3JpcHQ+JwotICAgICc8L2JvZHk+
PC9odG1sPicKLSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlv
bi9yZXNvdXJjZXMvY2hlY2stcGluZy1hcHAtaW5pdGlhdGVkLWRhdGEucHkgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2NoZWNrLXBpbmctYXBwLWluaXRpYXRl
ZC1kYXRhLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwZjNkMmYxNzE5Mjg0NzdlNGIxODg4MDMyMDNlYjBlZjdl
YjQ1NTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRp
b24vcmVzb3VyY2VzL2NoZWNrLXBpbmctYXBwLWluaXRpYXRlZC1kYXRhLnB5CkBAIC0wLDAgKzEs
NDQgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKworaW1wb3J0IG9zCitpbXBvcnQgc3lzCitp
bXBvcnQgdGltZQorZnJvbSBwaW5nX2ZpbGVfcGF0aCBpbXBvcnQgcGluZ19maWxlcGF0aAorCitz
eXMuc3Rkb3V0LndyaXRlKCdDb250ZW50LVR5cGU6IHRleHQvaHRtbFxyXG5cclxuJykKKword2hp
bGUgbm90IG9zLnBhdGguaXNmaWxlKHBpbmdfZmlsZXBhdGgpOgorICAgIHRpbWUuc2xlZXAoMC4w
MSkKKworc3lzLnN0ZG91dC53cml0ZSgKKyAgICAnPGh0bWw+PGJvZHk+XG4nCisgICAgJ1Bpbmcg
c2VudCBzdWNjZXNzZnVsbHknCispCisKK3BpbmdfZmlsZSA9IG9wZW4ocGluZ19maWxlcGF0aCwg
J3InKQorZm9yIGxpbmUgaW4gcGluZ19maWxlLnJlYWRsaW5lcygpOgorICAgIHN5cy5zdGRvdXQu
d3JpdGUoJzxicj57fScuZm9ybWF0KGxpbmUuc3RyaXAoKSkpCisKK3BpbmdfZmlsZS5jbG9zZSgp
CitpZiBvcy5wYXRoLmlzZmlsZShwaW5nX2ZpbGVwYXRoKToKKyAgICBvcy5yZW1vdmUocGluZ19m
aWxlcGF0aCkKKworc3lzLnN0ZG91dC53cml0ZSgKKyAgICAnPHNjcmlwdD4nCisgICAgJ2lmICh3
aW5kb3cudGVzdFJ1bm5lcikge3tcbicKKyAgICAnICAgIHZhciBkaWRMb2FkQXBwSW5pdGlhdGVk
UmVxdWVzdCA9IHRlc3RSdW5uZXIuZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3QoKTtcbicKKyAg
ICAnICAgIHZhciBkaWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdCA9IHRlc3RSdW5uZXIuZGlk
TG9hZE5vbkFwcEluaXRpYXRlZFJlcXVlc3QoKTtcbicKKyAgICAnICAgIGlmIChkaWRMb2FkTm9u
QXBwSW5pdGlhdGVkUmVxdWVzdCkge3tcbicKKyAgICAnICAgICAgICBjb25zb2xlLmxvZygiRkFJ
TCBkaWQgbG9hZCBub24gYXBwIGluaXRpYXRlZCByZXF1ZXN0Iik7XG4nCisgICAgJyAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7XG4nCisgICAgJyAgICB9fVxuJworICAgICcgICAgaWYg
KCFkaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdCkge3tcbicKKyAgICAnICAgICAgICAgY29uc29s
ZS5sb2coIkZBSUwgZGlkIG5vdCBsb2FkIGFwcCBpbml0aWF0ZWQgcmVxdWVzdCIpO1xuJworICAg
ICcgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpO1xuJworICAgICcgICAgIH19XG4nCisg
ICAgJyAgICBjb25zb2xlLmxvZygiUEFTUyBzdWNjZXNzZnVsbHkgbG9hZGVkIG9ubHkgYXBwIGlu
aXRpYXRlZCByZXF1ZXN0cyIpO1xuJworICAgICcgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
XG4nCisgICAgJ319XG4nCisgICAgJzwvc2NyaXB0PicKKyAgICAnPC9ib2R5PjwvaHRtbD4nCisp
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlv
bnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXgg
MmRiMzg4MTFmMjZlMmM3MGM1YWJhN2E1ODJmOTNjOTc5NWM0YWFkNi4uMmU4NDUyNjRlZmM0ODRk
NTQxMGNkYjRmZDQyN2Y3N2UxY2M4MzJjMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lv
cy13azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTgxNSwxNyArMTgxNSw2IEBAIHdlYmtpdC5vcmcv
Yi8yMTQ1OTggZmFzdC9zY3JvbGxpbmcvaW9zL2F1dG9zY3JvbGwtaW5wdXQtd2hlbi12ZXJ5LXpv
b21lZC5odG1sIFsKIAogaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5LyBbIFBhc3Mg
XQogCi0jIFNvbWUgSW4tQXBwIEJyb3dzZXIgUHJpdmFjeSB0ZXN0cyByZWx5IG9uIGZ1bmN0aW9u
cyBpbiBXZWJLaXRBZGRpdGlvbnMuCi1odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kv
Y29udGV4dC1zdHJpbmctZm9yLXN1YmZyYW1lLmh0bWwgWyBTa2lwIF0KLWh0dHAvdGVzdHMvaW4t
YXBwLWJyb3dzZXItcHJpdmFjeS9jb250ZXh0LXN0cmluZy1wcmVjb25uZWN0Lmh0bWwgWyBTa2lw
IF0KLWh0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9jb250ZXh0LXN0cmluZy1wcmVm
bGlnaHQuaHRtbCBbIFNraXAgXQotaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2Fw
cC1ib3VuZC1hdHRyaWJ1dGlvbi1wcmVmbGlnaHQtYXN5bmMuaHRtbCBbIFNraXAgXQotaHR0cC90
ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1wcmVmbGln
aHQtc3luYy5odG1sIFsgU2tpcCBdCi1odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kv
YXBwLWJvdW5kLWF0dHJpYnV0aW9uLXNwZWN1bGF0aXZlLXJldmFsaWRhdGlvbi5odG1sIFsgU2tp
cCBdCi1odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0
aW9uLWxvYWQtdXJsLmh0bWwgWyBTa2lwIF0KLWh0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJp
dmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tcGluZy1sb2FkLmh0bWwgWyBTa2lwIF0KLWh0dHAv
dGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tcG9zdC1y
ZXF1ZXN0Lmh0bWwgWyBTa2lwIF0KLQogd2Via2l0Lm9yZy9iLzE3NTE5MyBmYXN0L2ltYWdlcy9h
c3luYy1pbWFnZS1ib2R5LWJhY2tncm91bmQtaW1hZ2UuaHRtbCBbIFBhc3MgVGltZW91dCBdCiAK
IHdlYmtpdC5vcmcvYi8yMTUxMTAgWyBSZWxlYXNlIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLWFuaW1hdGlvbnMvd2Via2l0LXdyaXRpbmctbW9kZS1jcmFzaC5odG1s
IFsgUGFzcyBGYWlsdXJlIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432193</attachid>
            <date>2021-06-24 11:07:08 -0700</date>
            <delta_ts>2021-06-24 11:43:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227326-20210624110707.patch</filename>
            <type>text/plain</type>
            <size>263471</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGE0OWJkYWY3NGI1MDhj
ZTM0ODY2NDRkN2E0NThjMzY3ZmQ2NjMxOS4uZDQ1NmZkYWExOTNhYjc2ZTdjZTIxOTY0Mjg5NmZm
Njk5NDQzYzA0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDIxLTA2LTIzICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIENsZWFuIHVw
IEFwcCBQcml2YWN5IFJlcG9ydCBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjczMjYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc5Njk2ODQ5
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Rz
OiBodHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1sb2FkLXVybC5odG1s
CisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlv
bi1waW5nLWxvYWQuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1y
ZXBvcnQvYXR0cmlidXRpb24tcG9zdC1yZXF1ZXN0Lmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAv
dGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXByZWZsaWdodC1hc3luYy5odG1s
CisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlv
bi1wcmVmbGlnaHQtc3luYy5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL2FwcC1wcml2
YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1zcGVjdWxhdGl2ZS1yZXZhbGlkYXRpb24uaHRtbAorCisg
ICAgICAgIFJlbmFtZSBBcHAgUHJpdmFjeSBSZXBvcnQgY29kZSB0byBiZXR0ZXIgYWxpZ24gd2l0
aCB0aGUgY29kZSdzIHB1cnBvc2UKKyAgICAgICAgb2YgYXR0cmlidXRpbmcgbG9hZHMgdG8gdGhl
IGFwcCBvciBub3QuIFRoZSBkZWZhdWx0IHZhbHVlIHNob3VsZAorICAgICAgICBiZSBhcHAgaW5p
dGlhdGVkIGJhc2VkIG9uIHRoZSBkb2N1bWVudGF0aW9uLCBzbyB0aGlzIHBhdGNoIGFsc28gYWRq
dXN0cworICAgICAgICB0aGUgZGVmYXVsdCB2YWx1ZSBhcyBuZWVkZWQuCisKKyAgICAgICAgKiBs
b2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUFjY2Vzc0NvbnRyb2xQcmVmbGlnaHRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvRG9j
dW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpsYXN0TmF2
aWdhdGlvbldhc0FwcEluaXRpYXRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6Omxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnNldExhc3ROYXZpZ2F0
aW9uV2FzQXBwQm91bmQpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlcjo6dXBkYXRlUmVxdWVzdEFuZEFkZEV4dHJhRmllbGRzKToKKyAgICAg
ICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVxdWVzdEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
QmFzZTo6c2V0QXNJc29sYXRlZENvcHkpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXF1ZXN0QmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFz
ZTo6aXNBcHBJbml0aWF0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0QmFzZTo6c2V0SXNBcHBJbml0aWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0QmFzZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3RCYXNlOjplbmNvZGVCYXNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdEJhc2U6OmRlY29kZUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0QmFzZTo6aXNBcHBCb3VuZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRJc0FwcEJvdW5kKTogRGVsZXRlZC4KKyAgICAg
ICAgKiB0ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2VydmljZVdvcmtlckludGVybmFsczo6bGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckludGVybmFsczo6bGFzdE5hdmlnYXRp
b25XYXNBcHBCb3VuZCk6IERlbGV0ZWQuCisgICAgICAgICogdGVzdGluZy9TZXJ2aWNlV29ya2Vy
SW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlk
bDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE6Omlzb2xhdGVkQ29w
eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZnJv
bSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmg6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjpkZWNvZGUpOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjppc29sYXRlZENvcHkg
Y29uc3QpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERh
dGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZGVj
b2RlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5
OjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdv
cmtlclRocmVhZFByb3h5OjpzZXRMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6Omxhc3ROYXZpZ2F0aW9uV2Fz
QXBwSW5pdGlhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eTo6c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6Omxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQp
OiBEZWxldGVkLgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eS5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0
cmF0aW9uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVnaXN0cmF0aW9uRGF0YWJh
c2U6OmltcG9ydFJlY29yZHMpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnN0YXJ0U2NyaXB0RmV0Y2gp
OgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnVwZGF0ZVdvcmtlcik6CisgICAgICAgIChX
ZWJDb3JlOjpTV1NlcnZlcjo6Y2xpZW50SXNBcHBJbml0aWF0ZWRGb3JSZWdpc3RyYWJsZURvbWFp
bik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6dXBkYXRlQXBwSW5pdGlhdGVkVmFsdWVG
b3JXb3JrZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpyZWdpc3RlclNlcnZpY2VX
b3JrZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnVucmVnaXN0ZXJTZXJ2
aWNlV29ya2VyQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpjbGllbnRJc0Fw
cEJvdW5kRm9yUmVnaXN0cmFibGVEb21haW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
U1dTZXJ2ZXI6OnVwZGF0ZUFwcEJvdW5kVmFsdWVGb3JXb3JrZXJzKTogRGVsZXRlZC4KKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmg6CisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTV1NlcnZlclJlZ2lzdHJhdGlvbjo6c2NoZWR1bGVTb2Z0VXBkYXRlKToKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmg6CisgICAgICAg
IChXZWJDb3JlOjpTV1NlcnZlclJlZ2lzdHJhdGlvbjo6aXNBcHBJbml0aWF0ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1dTZXJ2ZXJSZWdpc3RyYXRpb246OmlzQXBwQm91bmQpOiBEZWxldGVkLgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjptX2xhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpjb250ZXh0RGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6dXBkYXRlQXBwSW5pdGlhdGVkVmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6bV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjp1cGRhdGVBcHBCb3VuZFZhbHVl
KTogRGVsZXRlZC4KKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29y
a2VyLmg6CisKIDIwMjEtMDYtMjMgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlbW92ZSB1bm5lZWRlZCBleHBsaWNpdCBleGNlcHRpb24gY2hlY2tzIGluIFNjcmlw
dE1vZHVsZUxvYWRlcjo6ZXZhbHVhdGUoKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZjZmYjQ0ZThjNzdlNTI1NmE4
ZDRmZjc2NGQ2ZWFhYWRmZTg4ZDViNC4uYzg5NTc1MTE5ODg1MzlmNjVlNGFmMzVhZmYwZWI1MDQ3
Yjg2Y2U2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzYgQEAKKzIwMjEtMDYtMjMgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAgQXBw
IFByaXZhY3kgUmVwb3J0IGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNzMyNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzk2OTY4NDk+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1lIEFw
cCBQcml2YWN5IFJlcG9ydCBjb2RlIHRvIGJldHRlciBhbGlnbiB3aXRoIHRoZSBjb2RlJ3MgcHVy
cG9zZQorICAgICAgICBvZiBhdHRyaWJ1dGluZyBsb2FkcyB0byB0aGUgYXBwIG9yIG5vdC4gVGhl
IGRlZmF1bHQgdmFsdWUgc2hvdWxkCisgICAgICAgIGJlIGFwcCBpbml0aWF0ZWQgYmFzZWQgb24g
dGhlIGRvY3VtZW50YXRpb24sIHNvIHRoaXMgcGF0Y2ggYWxzbyBhZGp1c3RzCisgICAgICAgIHRo
ZSBkZWZhdWx0IHZhbHVlIGFzIG5lZWRlZC4KKworICAgICAgICBUaGlzIGFsc28gYWRvcHRzIHRo
ZSBuZXcgTlNVUkxSZXF1ZXN0IGF0dHJpYnV0aW9uIEFQSSBhbmQgcmVtb3ZlcworICAgICAgICB0
aGUgZGVwcmVjYXRlZCBfaXNOb25BcHBJbml0aWF0ZWQgU1BJLgorCisgICAgICAgIENvdmVyZWQg
YnkgZXhpc3RpbmcgbGF5b3V0IGFuZCBBUEkgdGVzdHMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
OjpwcmVjb25uZWN0VG8pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YXBwUHJp
dmFjeVJlcG9ydFRlc3RpbmdEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OmNsZWFyQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OmFwcEJvdW5kTmF2aWdhdGlvbkRhdGEpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVXaWxsU2VuZFJlZGlyZWN0ZWRSZXF1
ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjppc0FwcEJvdW5k
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6YXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdE
YXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOjpzb2Z0VXBkYXRlSWZOZWVkZWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6bG9hZEZyb21OZXR3b3Jr
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29u
bmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y29u
dHJvbENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y3Jl
YXRlRmV0Y2hUYXNrKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6dXBkYXRlQXBwSW5pdGlhdGVkVmFsdWUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnVwZGF0ZUFwcEJv
dW5kVmFsdWUpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Y29uc3RydWN0UmV2YWxpZGF0aW9uUmVxdWVzdCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6
cmVnaXN0ZXJMb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2
ZUxvYWRNYW5hZ2VyOjpzdGFydFNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5oOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN1YnJlc291cmNlSW5mbzo6aXNBcHBJbml0aWF0
ZWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN1YnJlc291cmNlSW5m
bzo6c2V0SXNBcHBJbml0aWF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN1
YnJlc291cmNlSW5mbzo6aXNBcHBCb3VuZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDYWNoZTo6U3VicmVzb3VyY2VJbmZvOjpzZXRJc0FwcEJvdW5kKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5t
bToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFz
a0NvY29hKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAg
KGhlYWRlcnNfZm9yX3R5cGUpOgorICAgICAgICAqIFNoYXJlZC9BcHBQcml2YWN5UmVwb3J0Lmg6
CisgICAgICAgIChXZWJLaXQ6OkFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YTo6c2V0RGlkUGVy
Zm9ybVNvZnRVcGRhdGUpOgorICAgICAgICAoV2ViS2l0OjpBcHBQcml2YWN5UmVwb3J0VGVzdGlu
Z0RhdGE6OmNsZWFyQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKToKKyAgICAgICAgKFdlYktp
dDo6QXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhOjpkaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVz
dCk6CisgICAgICAgIChXZWJLaXQ6OkFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YTo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6QXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhOjpk
ZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2Nv
YS5tbToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3Q+OjplbmNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdD46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICog
U2hhcmVkL05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmg6CisgICAgICAgIChXZWJLaXQ6OkFw
cEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhOjpzZXREaWRQZXJmb3JtU29mdFVwZGF0ZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhOjpj
bGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGFUZXN0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6QXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGE6OnVwZGF0ZUFwcEJvdW5kTmF2aWdh
dGlvblRlc3RpbmdEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6QXBwQm91bmROYXZp
Z2F0aW9uVGVzdGluZ0RhdGE6OmVuY29kZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OkFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhOjpkZWNvZGUpOiBEZWxldGVkLgorICAg
ICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVu
Y29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6
OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IF9kaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdDpdKToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IF9kaWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdDpdKToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IF9hcHBCb3VuZE5hdmlnYXRpb25EYXRhRm9yRG9tYWluOmNvbXBsZXRpb25IYW5kbGVy
Ol0pOiBEZWxldGVkLgorICAgICAgICBSZW1vdmVkIG5vdyB0aGF0IHdlIG5vIGxvbmdlciBuZWVk
IHRvIHRlc3QgYXR0cmlidXRpb24gY29udGV4dCwgdGhhdAorICAgICAgICBpcyBhbGwgaXQgd2Fz
IHVzZWQgZm9yLgorCisgICAgICAgICgtW1dLV2ViVmlldyBfZGlkTG9hZEFwcEJvdW5kUmVxdWVz
dDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kaWRMb2FkTm9uQXBwQm91bmRS
ZXF1ZXN0Ol0pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZUZvclRlc3RpbmcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d1Rlc3RpbmcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfbGFzdE5hdmlnYXRpb25XYXNBcHBJ
bml0aWF0ZWQ6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfYXBwUHJpdmFjeVJlcG9ydFRlc3Rp
bmdEYXRhOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2NsZWFyQXBwUHJpdmFjeVJlcG9ydFRl
c3RpbmdEYXRhOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2xhc3ROYXZpZ2F0aW9uV2FzQXBw
Qm91bmQ6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLV2ViVmlldyBfYXBwQm91bmROYXZpZ2F0
aW9uRGF0YTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jbGVhckFwcEJvdW5k
TmF2aWdhdGlvbkRhdGE6XSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dl
YlBhZ2VQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldExh
c3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk6IERl
bGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnByZWNvbm5lY3RUbyk6
CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpw
cmVjb25uZWN0VG8pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFy
YW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YXBwUHJpdmFjeVJlcG9y
dFRlc3RpbmdEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbGVhckFwcFBy
aXZhY3lSZXBvcnRUZXN0aW5nRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
YXBwQm91bmROYXZpZ2F0aW9uRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6Y2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhKTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0
cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNv
dXJjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpwcmVjb25uZWN0VG8p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
Ojp1cGRhdGVBcHBJbml0aWF0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uOjpzdGFydEZldGNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnVwZGF0ZUFwcEJvdW5kVmFsdWUpOiBEZWxldGVkLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWRSZXF1
ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOiBE
ZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnNldExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk6IERl
bGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46
CisKIDIwMjEtMDYtMjMgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+
CiAKICAgICAgICAgTWlncmF0ZSBBcHAgUHJpdmFjeSBSZXBvcnQgY29kZSBmcm9tIFdlYktpdEFk
ZGl0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNj
ZXNzQ29udHJvbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3ND
b250cm9sLmNwcAppbmRleCAyYTFhZTUyNTM4YjA2MGRhMTFmYzlkZmJkNDBiOGE2ZDc4YWRlYjE4
Li4zODk5Mjk3NmM2YTFkYWRjODc3OTRmNzhkYjc4NGQ0ZmU0ZTA1M2U3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcApAQCAtODks
NyArODksNyBAQCBSZXNvdXJjZVJlcXVlc3QgY3JlYXRlQWNjZXNzQ29udHJvbFByZWZsaWdodFJl
cXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZQogICAgIHByZWZsaWdodFJlcXVlc3Qu
c2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpBY2Nlc3NDb250cm9sUmVxdWVzdE1l
dGhvZCwgcmVxdWVzdC5odHRwTWV0aG9kKCkpOwogICAgIHByZWZsaWdodFJlcXVlc3Quc2V0UHJp
b3JpdHkocmVxdWVzdC5wcmlvcml0eSgpKTsKICAgICBwcmVmbGlnaHRSZXF1ZXN0LnNldEZpcnN0
UGFydHlGb3JDb29raWVzKHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSk7Ci0gICAgcHJl
ZmxpZ2h0UmVxdWVzdC5zZXRJc0FwcEJvdW5kKHJlcXVlc3QuaXNBcHBCb3VuZCgpKTsKKyAgICBw
cmVmbGlnaHRSZXF1ZXN0LnNldElzQXBwSW5pdGlhdGVkKHJlcXVlc3QuaXNBcHBJbml0aWF0ZWQo
KSk7CiAgICAgaWYgKCFyZWZlcnJlci5pc051bGwoKSkKICAgICAgICAgcHJlZmxpZ2h0UmVxdWVz
dC5zZXRIVFRQUmVmZXJyZXIocmVmZXJyZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5oCmluZGV4IGU2OTM1MzJlYmQ2NGY1YzA0MmM3YzM3ZDgzOTE4OTU5N2Q2ZTY5MDku
LjM5ZWIwNjI5OWU1NzBjNDc1OWFlY2YwZWYwOTcxODI0ZWI1MDU2MjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC00MTksOCArNDE5LDggQEAgcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgc2V0Q29udHJvbGxpbmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYpOwogI2VuZGlmCiAKLSAgICBib29s
IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoKSBjb25zdCB7IHJldHVybiBtX2xhc3ROYXZpZ2F0
aW9uV2FzQXBwQm91bmQ7IH0KLSAgICB2b2lkIHNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQo
Ym9vbCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKSB7IG1fbGFzdE5hdmlnYXRpb25XYXNBcHBC
b3VuZCA9IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7IH0KKyAgICBib29sIGxhc3ROYXZpZ2F0
aW9uV2FzQXBwSW5pdGlhdGVkKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0TmF2aWdhdGlvbldhc0Fw
cEluaXRpYXRlZDsgfQorICAgIHZvaWQgc2V0TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQo
Ym9vbCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCkgeyBtX2xhc3ROYXZpZ2F0aW9uV2Fz
QXBwSW5pdGlhdGVkID0gbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ7IH0KIAogcHJvdGVj
dGVkOgogICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7CkBAIC02NTksNyArNjU5LDcgQEAgcHJpdmF0
ZToKICAgICBib29sIG1fYWxsb3dzV2ViQXJjaGl2ZUZvck1haW5GcmFtZSB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX2FsbG93c0RhdGFVUkxzRm9yTWFpbkZyYW1lIHsgZmFsc2UgfTsKIAotICAgIGJv
b2wgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIHsgZmFsc2UgfTsKKyAgICBib29sIG1fbGFz
dE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgeyB0cnVlIH07CiB9OwogCiBpbmxpbmUgdm9pZCBE
b2N1bWVudExvYWRlcjo6cmVjb3JkTWVtb3J5Q2FjaGVMb2FkRm9yRnV0dXJlQ2xpZW50Tm90aWZp
Y2F0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCmluZGV4IGQ3MTNmN2RkNGE0OTJjZmMzNmE4M2UxMGRhMjYyMTNkYWJl
Mjc1ZmUuLmE1MDRmYTk1MTVmOWM5NDEzMGEyNjZjMzg0ZWQzYzE4ZmQ5NTQxMTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMTQ5Miw3ICsxNDkyLDcgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6bG9hZChEb2N1bWVudExvYWRlciYgbmV3RG9jdW1lbnRMb2FkZXIpCiAgICAg
UmVzb3VyY2VSZXF1ZXN0JiByID0gbmV3RG9jdW1lbnRMb2FkZXIucmVxdWVzdCgpOwogICAgIC8v
IEZJWE1FOiBVc2luZyBtX2xvYWRUeXBlIHNlZW1zIHdyb25nIGhlcmUuCiAgICAgLy8gSWYgd2Ug
YXJlIG9ubHkgcHJlcGFyaW5nIHRvIGxvYWQgdGhlIG1haW4gcmVzb3VyY2UsIHRoYXQgaXMgcHJl
dmlvdXMgbG9hZCdzIGxvYWQgdHlwZSEKLSAgICB1cGRhdGVSZXF1ZXN0QW5kQWRkRXh0cmFGaWVs
ZHMociwgSXNNYWluUmVzb3VyY2U6OlllcywgbV9sb2FkVHlwZSwgU2hvdWxkVXBkYXRlQXBwQm91
bmRWYWx1ZTo6Tm8pOworICAgIHVwZGF0ZVJlcXVlc3RBbmRBZGRFeHRyYUZpZWxkcyhyLCBJc01h
aW5SZXNvdXJjZTo6WWVzLCBtX2xvYWRUeXBlLCBTaG91bGRVcGRhdGVBcHBJbml0aWF0ZWRWYWx1
ZTo6Tm8pOwogICAgIEZyYW1lTG9hZFR5cGUgdHlwZTsKIAogICAgIGlmIChzaG91bGRUcmVhdFVS
TEFzU2FtZUFzQ3VycmVudChuZXdEb2N1bWVudExvYWRlci5vcmlnaW5hbFJlcXVlc3QoKS51cmwo
KSkpIHsKQEAgLTI4NzgsNyArMjg3OCw3IEBAIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5IEZy
YW1lTG9hZGVyOjpkZWZhdWx0UmVxdWVzdENhY2hpbmdQb2xpY3koY29uc3QgUmVzb3VyCiAgICAg
cmV0dXJuIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5OjpVc2VQcm90b2NvbENhY2hlUG9saWN5
OwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjp1cGRhdGVSZXF1ZXN0QW5kQWRkRXh0cmFGaWVsZHMo
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBJc01haW5SZXNvdXJjZSBtYWluUmVzb3VyY2UsIEZy
YW1lTG9hZFR5cGUgbG9hZFR5cGUsIFNob3VsZFVwZGF0ZUFwcEJvdW5kVmFsdWUgc2hvdWxkVXBk
YXRlKQordm9pZCBGcmFtZUxvYWRlcjo6dXBkYXRlUmVxdWVzdEFuZEFkZEV4dHJhRmllbGRzKFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgSXNNYWluUmVzb3VyY2UgbWFpblJlc291cmNlLCBGcmFt
ZUxvYWRUeXBlIGxvYWRUeXBlLCBTaG91bGRVcGRhdGVBcHBJbml0aWF0ZWRWYWx1ZSBzaG91bGRV
cGRhdGUpCiB7CiAgICAgLy8gSWYgdGhlIHJlcXVlc3QgY2FtZSBmcm9tIGEgcHJldmlvdXMgcHJv
Y2VzcyBkdWUgdG8gcHJvY2Vzcy1zd2FwLW9uLW5hdmlnYXRpb24gdGhlbiB3ZSBzaG91bGQgbm90
IG1vZGlmeSB0aGUgcmVxdWVzdC4KICAgICBpZiAobV9jdXJyZW50TG9hZENvbnRpbnVpbmdTdGF0
ZSA9PSBMb2FkQ29udGludWluZ1N0YXRlOjpDb250aW51aW5nV2l0aFJlcXVlc3QpCkBAIC0yOTQ4
LDggKzI5NDgsOCBAQCB2b2lkIEZyYW1lTG9hZGVyOjp1cGRhdGVSZXF1ZXN0QW5kQWRkRXh0cmFG
aWVsZHMoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBJc01haQogICAgICAgICByZXF1ZXN0LnNl
dFJlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5KCJVVEYtOCIs
IG1fZnJhbWUuZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgbV9mcmFtZS5zZXR0aW5ncygpLmRlZmF1
bHRUZXh0RW5jb2RpbmdOYW1lKCkpOwogICAgIH0KIAotICAgIGlmIChzaG91bGRVcGRhdGUgPT0g
U2hvdWxkVXBkYXRlQXBwQm91bmRWYWx1ZTo6WWVzICYmIG1fZnJhbWUubWFpbkZyYW1lKCkubG9h
ZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkKLSAgICAgICAgcmVxdWVzdC5zZXRJc0FwcEJvdW5kKG1f
ZnJhbWUubWFpbkZyYW1lKCkubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+bGFzdE5hdmlnYXRp
b25XYXNBcHBCb3VuZCgpKTsKKyAgICBpZiAoc2hvdWxkVXBkYXRlID09IFNob3VsZFVwZGF0ZUFw
cEluaXRpYXRlZFZhbHVlOjpZZXMgJiYgbV9mcmFtZS5tYWluRnJhbWUoKS5sb2FkZXIoKS5kb2N1
bWVudExvYWRlcigpKQorICAgICAgICByZXF1ZXN0LnNldElzQXBwSW5pdGlhdGVkKG1fZnJhbWUu
bWFpbkZyYW1lKCkubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+bGFzdE5hdmlnYXRpb25XYXNB
cHBJbml0aWF0ZWQoKSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OnNjaGVkdWxlUmVmcmVzaElm
TmVlZGVkKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBjb250ZW50KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCBmMTIzOTllNWU1NWNmZDczMDRkNjc0ZDFiNjlh
NWQ3OTY3YzgyNjJiLi4yNmNkYjI2ZDU5NjAxYTlhYjg3MzAzMGI0NjE1Mzc1MDUyNzMyNWI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtODUsNyArODUsNyBAQCBlbnVtIGNs
YXNzIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFNob3Vs
ZFRyZWF0QXNDb250aW51aW5nTG9hZCA6IGJvb2w7CiBlbnVtIGNsYXNzIFVzZWRMZWdhY3lUTFMg
OiBib29sOwogZW51bSBjbGFzcyBJc01haW5SZXNvdXJjZSA6IGJvb2wgeyBObywgWWVzIH07Ci1l
bnVtIGNsYXNzIFNob3VsZFVwZGF0ZUFwcEJvdW5kVmFsdWUgOiBib29sIHsgTm8sIFllcyB9Owor
ZW51bSBjbGFzcyBTaG91bGRVcGRhdGVBcHBJbml0aWF0ZWRWYWx1ZSA6IGJvb2wgeyBObywgWWVz
IH07CiAKIHN0cnVjdCBXaW5kb3dGZWF0dXJlczsKIApAQCAtMzE3LDcgKzMxNyw3IEBAIHB1Ymxp
YzoKICAgICBib29sIGFsd2F5c0FsbG93TG9jYWxXZWJhcmNoaXZlKCkgY29uc3QgeyByZXR1cm4g
bV9hbHdheXNBbGxvd0xvY2FsV2ViYXJjaGl2ZTsgfQogCiAgICAgLy8gRm9yIHN1YnJlc291cmNl
IHJlcXVlc3RzIHRoZSBGcmFtZUxvYWRUeXBlIHBhcmFtZXRlciBoYXMgbm8gZWZmZWN0IGFuZCBj
YW4gYmUgc2tpcHBlZC4KLSAgICB2b2lkIHVwZGF0ZVJlcXVlc3RBbmRBZGRFeHRyYUZpZWxkcyhS
ZXNvdXJjZVJlcXVlc3QmLCBJc01haW5SZXNvdXJjZSwgRnJhbWVMb2FkVHlwZSA9IEZyYW1lTG9h
ZFR5cGU6OlN0YW5kYXJkLCBTaG91bGRVcGRhdGVBcHBCb3VuZFZhbHVlID0gU2hvdWxkVXBkYXRl
QXBwQm91bmRWYWx1ZTo6WWVzKTsKKyAgICB2b2lkIHVwZGF0ZVJlcXVlc3RBbmRBZGRFeHRyYUZp
ZWxkcyhSZXNvdXJjZVJlcXVlc3QmLCBJc01haW5SZXNvdXJjZSwgRnJhbWVMb2FkVHlwZSA9IEZy
YW1lTG9hZFR5cGU6OlN0YW5kYXJkLCBTaG91bGRVcGRhdGVBcHBJbml0aWF0ZWRWYWx1ZSA9IFNo
b3VsZFVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlOjpZZXMpOwogCiAgICAgdm9pZCBzY2hlZHVsZVJl
ZnJlc2hJZk5lZWRlZChEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgY29udGVudCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJh
c2UuY3BwCmluZGV4IDQ2ZTc4NTIyOWU2MGY2MmJjN2IzYWNlNGRjODMxYTdmMjc1YTgxYjIuLjQ0
YjU5MzA3MGVjZWQ0MWZmZjcwM2Y3YmM4OTQ3YWYxOTRkYjAyZTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcApA
QCAtOTUsNyArOTUsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdEJhc2U6OnNldEFzSXNvbGF0ZWRD
b3B5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgb3RoZXIpCiAgICAgaWYgKG90aGVyLm1faHR0cEJv
ZHkpCiAgICAgICAgIHNldEhUVFBCb2R5KG90aGVyLm1faHR0cEJvZHktPmlzb2xhdGVkQ29weSgp
KTsKICAgICBzZXRBbGxvd0Nvb2tpZXMob3RoZXIubV9hbGxvd0Nvb2tpZXMpOwotICAgIHNldElz
QXBwQm91bmQob3RoZXIuaXNBcHBCb3VuZCgpKTsKKyAgICBzZXRJc0FwcEluaXRpYXRlZChvdGhl
ci5pc0FwcEluaXRpYXRlZCgpKTsKIH0KIAogYm9vbCBSZXNvdXJjZVJlcXVlc3RCYXNlOjppc0Vt
cHR5KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VSZXF1ZXN0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlcXVlc3RCYXNlLmgKaW5kZXggMjcwZmFkMDRmZDFlNWIzZWE2Mjk0MWNlODA5NTNh
ZWZlNTlmM2RiYS4uMjQ1ZTU5OWE5Y2Y3OGM2MmQ0NWRmYjlhY2UzMDRhMTlhOTJlZGRjOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RC
YXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVl
c3RCYXNlLmgKQEAgLTE5NSw4ICsxOTUsOCBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmKTsKIAotICAgIGJvb2wgaXNBcHBCb3VuZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNB
cHBCb3VuZDsgfQotICAgIHZvaWQgc2V0SXNBcHBCb3VuZChib29sIGlzQXBwQm91bmQpIHsgbV9p
c0FwcEJvdW5kID0gaXNBcHBCb3VuZDsgfTsKKyAgICBib29sIGlzQXBwSW5pdGlhdGVkKCkgY29u
c3QgeyByZXR1cm4gbV9pc0FwcEluaXRpYXRlZDsgfQorICAgIHZvaWQgc2V0SXNBcHBJbml0aWF0
ZWQoYm9vbCBpc0FwcEluaXRpYXRlZCkgeyBtX2lzQXBwSW5pdGlhdGVkID0gaXNBcHBJbml0aWF0
ZWQ7IH07CiAKIHByb3RlY3RlZDoKICAgICAvLyBVc2VkIHdoZW4gUmVzb3VyY2VSZXF1ZXN0IGlz
IGluaXRpYWxpemVkIGZyb20gYSBwbGF0Zm9ybSByZXByZXNlbnRhdGlvbiBvZiB0aGUgcmVxdWVz
dApAQCAtMjA4LDcgKzIwOCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgLCBtX3BsYXRmb3JtUmVx
dWVzdEJvZHlVcGRhdGVkKHRydWUpCiAgICAgICAgICwgbV9oaWRkZW5Gcm9tSW5zcGVjdG9yKGZh
bHNlKQogICAgICAgICAsIG1faXNUb3BTaXRlKGZhbHNlKQotICAgICAgICAsIG1faXNBcHBCb3Vu
ZChmYWxzZSkKKyAgICAgICAgLCBtX2lzQXBwSW5pdGlhdGVkKHRydWUpCiAgICAgewogICAgIH0K
IApAQCAtMjI0LDcgKzIyNCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgLCBtX3BsYXRmb3JtUmVx
dWVzdEJvZHlVcGRhdGVkKGZhbHNlKQogICAgICAgICAsIG1faGlkZGVuRnJvbUluc3BlY3Rvcihm
YWxzZSkKICAgICAgICAgLCBtX2lzVG9wU2l0ZShmYWxzZSkKLSAgICAgICAgLCBtX2lzQXBwQm91
bmQoZmFsc2UpCisgICAgICAgICwgbV9pc0FwcEluaXRpYXRlZCh0cnVlKQogICAgIHsKICAgICB9
CiAKQEAgLTI1OCw3ICsyNTgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgbXV0YWJsZSBib29sIG1fcGxh
dGZvcm1SZXF1ZXN0Qm9keVVwZGF0ZWQgOiAxOwogICAgIGJvb2wgbV9oaWRkZW5Gcm9tSW5zcGVj
dG9yIDogMTsKICAgICBib29sIG1faXNUb3BTaXRlIDogMTsKLSAgICBib29sIG1faXNBcHBCb3Vu
ZCA6IDE7CisgICAgYm9vbCBtX2lzQXBwSW5pdGlhdGVkIDogMTsKICNpZiBVU0UoU1lTVEVNX1BS
RVZJRVcpCiAgICAgc3RkOjpvcHRpb25hbDxTeXN0ZW1QcmV2aWV3SW5mbz4gbV9zeXN0ZW1QcmV2
aWV3SW5mbzsKICNlbmRpZgpAQCAtMjk0LDcgKzI5NCw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBS
ZXNvdXJjZVJlcXVlc3RCYXNlOjplbmNvZGVCYXNlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAg
ICAgZW5jb2RlciA8PCBtX2lzVG9wU2l0ZTsKICAgICBlbmNvZGVyIDw8IG1fcHJpb3JpdHk7CiAg
ICAgZW5jb2RlciA8PCBtX3JlcXVlc3RlcjsKLSAgICBlbmNvZGVyIDw8IG1faXNBcHBCb3VuZDsK
KyAgICBlbmNvZGVyIDw8IG1faXNBcHBJbml0aWF0ZWQ7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+CkBAIC0zNzIsMTEgKzM3MiwxMSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgUmVzb3VyY2VS
ZXF1ZXN0QmFzZTo6ZGVjb2RlQmFzZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgbV9yZXF1ZXN0ZXIgPSAqcmVxdWVzdGVyOwogCi0gICAgc3RkOjpvcHRpb25h
bDxib29sPiBpc0FwcEJvdW5kOwotICAgIGRlY29kZXIgPj4gaXNBcHBCb3VuZDsKLSAgICBpZiAo
IWlzQXBwQm91bmQpCisgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc0FwcEluaXRpYXRlZDsKKyAg
ICBkZWNvZGVyID4+IGlzQXBwSW5pdGlhdGVkOworICAgIGlmICghaXNBcHBJbml0aWF0ZWQpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX2lzQXBwQm91bmQgPSAqaXNBcHBCb3VuZDsKKyAg
ICBtX2lzQXBwSW5pdGlhdGVkID0gKmlzQXBwSW5pdGlhdGVkOwogCiAgICAgcmV0dXJuIHRydWU7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRl
cm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxz
LmNwcAppbmRleCBmMDgwYTkzNWUxOWU1YTVhYTI1ZjNiNjhlNjNjN2I0YmFlNmY2YTQyLi4zNjgy
OThmNGNjNDNkMGMwYWM2ZjQwNWU1ZjgxNjQ0ZDdkYmMxNWY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5jcHAKQEAgLTExOSwxOCArMTE5
LDE4IEBAIGludCBTZXJ2aWNlV29ya2VySW50ZXJuYWxzOjpwcm9jZXNzSWRlbnRpZmllcigpIGNv
bnN0CiAgICAgcmV0dXJuIGdldEN1cnJlbnRQcm9jZXNzSUQoKTsKIH0KIAotdm9pZCBTZXJ2aWNl
V29ya2VySW50ZXJuYWxzOjpsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKFJlZjxEZWZlcnJlZFBy
b21pc2U+JiYgcHJvbWlzZSkKK3ZvaWQgU2VydmljZVdvcmtlckludGVybmFsczo6bGFzdE5hdmln
YXRpb25XYXNBcHBJbml0aWF0ZWQoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewot
ICAgIEFTU0VSVCghbV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kUHJvbWlzZSk7Ci0gICAgbV9s
YXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kUHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSk7CisgICAg
QVNTRVJUKCFtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkUHJvbWlzZSk7CisgICAgbV9s
YXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZFByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpOwog
ICAgIGNhbGxPbk1haW5UaHJlYWQoW2lkZW50aWZpZXIgPSBtX2lkZW50aWZpZXIsIHdlYWtUaGlz
ID0gbWFrZVdlYWtQdHIodGhpcyldKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChhdXRvKiBwcm94
eSA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLndvcmtlckJ5SUQoaWRlbnRpZmllcikp
IHsKLSAgICAgICAgICAgIHByb3h5LT50aHJlYWQoKS5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2Rl
KFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBhcHBCb3VuZCA9IHByb3h5LT5sYXN0TmF2
aWdhdGlvbldhc0FwcEJvdW5kKCldKGF1dG8mKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCF3ZWFr
VGhpcyB8fCAhd2Vha1RoaXMtPm1fbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZFByb21pc2UpCisg
ICAgICAgICAgICBwcm94eS0+dGhyZWFkKCkucnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbd2Vh
a1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgYXBwSW5pdGlhdGVkID0gcHJveHktPmxhc3ROYXZp
Z2F0aW9uV2FzQXBwSW5pdGlhdGVkKCldKGF1dG8mKSB7CisgICAgICAgICAgICAgICAgaWYgKCF3
ZWFrVGhpcyB8fCAhd2Vha1RoaXMtPm1fbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWRQcm9t
aXNlKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgICAgICB3ZWFr
VGhpcy0+bV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kUHJvbWlzZS0+cmVzb2x2ZTxJRExCb29s
ZWFuPihhcHBCb3VuZCk7Ci0gICAgICAgICAgICAgICAgd2Vha1RoaXMtPm1fbGFzdE5hdmlnYXRp
b25XYXNBcHBCb3VuZFByb21pc2UgPSBudWxscHRyOworICAgICAgICAgICAgICAgIHdlYWtUaGlz
LT5tX2xhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkUHJvbWlzZS0+cmVzb2x2ZTxJRExCb29s
ZWFuPihhcHBJbml0aWF0ZWQpOworICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5tX2xhc3ROYXZp
Z2F0aW9uV2FzQXBwSW5pdGlhdGVkUHJvbWlzZSA9IG51bGxwdHI7CiAgICAgICAgICAgICB9LCBX
b3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKICAgICAgICAgfQogICAgIH0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmggYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaAppbmRleCBmNjYw
NTA4ZTJmYzEwZThhNTY3ZmIwMTFjNGI0YmFhODQzNTYwYjFmLi4zMzdlNmE3ZDM5M2UzMDBiNmJk
ZmY2MGY5NjliOGZmNWQ4MWQ4MzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1Nl
cnZpY2VXb3JrZXJJbnRlcm5hbHMuaApAQCAtNjAsMTMgKzYwLDEzIEBAIHB1YmxpYzoKIAogICAg
IGludCBwcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0OwogCi0gICAgdm9pZCBsYXN0TmF2aWdhdGlv
bldhc0FwcEJvdW5kKFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOworICAgIHZvaWQgbGFzdE5hdmln
YXRpb25XYXNBcHBJbml0aWF0ZWQoUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAKIHByaXZhdGU6
CiAgICAgZXhwbGljaXQgU2VydmljZVdvcmtlckludGVybmFscyhTZXJ2aWNlV29ya2VySWRlbnRp
Zmllcik7CiAKICAgICBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBtX2lkZW50aWZpZXI7Ci0gICAg
UmVmUHRyPERlZmVycmVkUHJvbWlzZT4gbV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kUHJvbWlz
ZTsKKyAgICBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwSW5p
dGlhdGVkUHJvbWlzZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRsCmluZGV4IGUxMTBi
NTExYjEwNjU2ZGFjYTM5ZjZkNTNmM2RiMTc1MGVlMzZkMDkuLjk0ODRiNzYyMWZjZjFmYWVjZmQ1
YzUzOTQ2YTZlNTg0ZTI5NTc1MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
U2VydmljZVdvcmtlckludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9T
ZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlkbApAQCAtNDMsNSArNDMsNSBAQAogCiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIGxvbmcgcHJvY2Vzc0lkZW50aWZpZXI7CiAKLSAgICBQcm9taXNlPGJvb2xl
YW4+IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoKTsKKyAgICBQcm9taXNlPGJvb2xlYW4+IGxh
c3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5jcHAKaW5k
ZXggYjYwNzRlMTBmNTc3YTA0MmE0YTEzMzc2YjZiMTFjYTFhMmFkN2QyNy4uMjVkN2MwYTdmNGVi
ZTk0NjY3YmYxODA1NmRlNjc3ZTI3MzBiODcyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuY3BwCkBAIC01
OCw3ICs1OCw3IEBAIHN0YXRpYyBTZXJ2aWNlV29ya2VyQ2xpZW50RnJhbWVUeXBlIHRvU2Vydmlj
ZVdvcmtlckNsaWVudEZyYW1lVHlwZShTY3JpcHRFeGVjdXRpCiAKIFNlcnZpY2VXb3JrZXJDbGll
bnREYXRhIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjppc29sYXRlZENvcHkoKSBjb25zdAogewot
ICAgIHJldHVybiB7IGlkZW50aWZpZXIsIHR5cGUsIGZyYW1lVHlwZSwgdXJsLmlzb2xhdGVkQ29w
eSgpLCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIH07CisgICAgcmV0dXJuIHsgaWRlbnRpZmll
ciwgdHlwZSwgZnJhbWVUeXBlLCB1cmwuaXNvbGF0ZWRDb3B5KCksIGxhc3ROYXZpZ2F0aW9uV2Fz
QXBwSW5pdGlhdGVkIH07CiB9CiAKIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIFNlcnZpY2VXb3Jr
ZXJDbGllbnREYXRhOjpmcm9tKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFNXQ2xp
ZW50Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKQEAgLTY3LDEzICs2NywxMyBAQCBTZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YSBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZnJvbShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjbwogICAgIFJFTEVBU0VfQVNTRVJUKGlzRG9jdW1lbnQpOyAvLyBXZSBkbyBu
b3Qgc3VwcG9ydCBkZWRpY2F0ZWQgd29ya2VycyBhcyBjbGllbnRzIHlldC4KIAogICAgIGF1dG8m
IGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpOwotICAgIGF1dG8gbGFzdE5h
dmlnYXRpb25XYXNBcHBCb3VuZCA9IGRvY3VtZW50LmxvYWRlcigpICYmIGRvY3VtZW50LmxvYWRl
cigpLT5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKCkgPyBMYXN0TmF2aWdhdGlvbldhc0FwcEJv
dW5kOjpZZXMgOiBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOjpObzsKKyAgICBhdXRvIGxhc3RO
YXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkID0gZG9jdW1lbnQubG9hZGVyKCkgJiYgZG9jdW1lbnQu
bG9hZGVyKCktPmxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKCkgPyBMYXN0TmF2aWdhdGlv
bldhc0FwcEluaXRpYXRlZDo6WWVzIDogTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6Ok5v
OwogCiAgICAgcmV0dXJuIHsKICAgICAgICAgeyBjb25uZWN0aW9uLnNlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyKCksIGRvY3VtZW50LmlkZW50aWZpZXIoKSB9LAogICAgICAgICBpc0RvY3VtZW50
ID8gU2VydmljZVdvcmtlckNsaWVudFR5cGU6OldpbmRvdyA6IFNlcnZpY2VXb3JrZXJDbGllbnRU
eXBlOjpXb3JrZXIsCiAgICAgICAgIHRvU2VydmljZVdvcmtlckNsaWVudEZyYW1lVHlwZShjb250
ZXh0KSwKLSAgICAgICAgY29udGV4dC51cmwoKSwgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZAor
ICAgICAgICBjb250ZXh0LnVybCgpLCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZAogICAg
IH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyQ2xpZW50RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDbGllbnREYXRhLmgKaW5kZXggMzNkOTgzODQyNGNiOGYyYzFhZTFkYWQ1Zjhh
ZmJlMTQ5MDE5MjNlOC4uNTdjMjg4YTBhZjE2YzBmMmE4OWNhYTdlNWE2OTIxZGJjMTk4NjQzZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
bGllbnREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDbGllbnREYXRhLmgKQEAgLTM3LDE0ICszNywxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBTV0NsaWVudENvbm5lY3Rpb247CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OwogCi1lbnVtIGNsYXNzIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgOiBib29sIHsgTm8sIFll
cyB9OworZW51bSBjbGFzcyBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCA6IGJvb2wgeyBO
bywgWWVzIH07CiAKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSB7CiAgICAgU2Vydmlj
ZVdvcmtlckNsaWVudElkZW50aWZpZXIgaWRlbnRpZmllcjsKICAgICBTZXJ2aWNlV29ya2VyQ2xp
ZW50VHlwZSB0eXBlOwogICAgIFNlcnZpY2VXb3JrZXJDbGllbnRGcmFtZVR5cGUgZnJhbWVUeXBl
OwogICAgIFVSTCB1cmw7Ci0gICAgTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCBsYXN0TmF2aWdh
dGlvbldhc0FwcEJvdW5kOworICAgIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIGxhc3RO
YXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOwogCiAgICAgU2VydmljZVdvcmtlckNsaWVudERhdGEg
aXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKQEAgLTU3LDcgKzU3LDcgQEAgc3RydWN0IFNlcnZpY2VX
b3JrZXJDbGllbnREYXRhIHsKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFNlcnZpY2VX
b3JrZXJDbGllbnREYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBl
bmNvZGVyIDw8IGlkZW50aWZpZXIgPDwgdHlwZSA8PCBmcmFtZVR5cGUgPDwgdXJsIDw8IGxhc3RO
YXZpZ2F0aW9uV2FzQXBwQm91bmQ7CisgICAgZW5jb2RlciA8PCBpZGVudGlmaWVyIDw8IHR5cGUg
PDwgZnJhbWVUeXBlIDw8IHVybCA8PCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDsKIH0K
IAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KQEAgLTgzLDEyICs4MywxMiBAQCBzdGQ6Om9wdGlv
bmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZGVj
b2RlKERlY29kZXImCiAgICAgaWYgKCF1cmwpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICBzdGQ6Om9wdGlvbmFsPExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ+IGxhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQ7Ci0gICAgZGVjb2RlciA+PiBsYXN0TmF2aWdhdGlvbldhc0FwcEJv
dW5kOwotICAgIGlmICghbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCkKKyAgICBzdGQ6Om9wdGlv
bmFsPExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkPiBsYXN0TmF2aWdhdGlvbldhc0FwcElu
aXRpYXRlZDsKKyAgICBkZWNvZGVyID4+IGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOwor
ICAgIGlmICghbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4geyB7IFdURk1vdmUoKmlkZW50aWZpZXIpLCBXVEZN
b3ZlKCp0eXBlKSwgV1RGTW92ZSgqZnJhbWVUeXBlKSwgV1RGTW92ZSgqdXJsKSwgV1RGTW92ZSgq
bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCkgfSB9OworICAgIHJldHVybiB7IHsgV1RGTW92ZSgq
aWRlbnRpZmllciksIFdURk1vdmUoKnR5cGUpLCBXVEZNb3ZlKCpmcmFtZVR5cGUpLCBXVEZNb3Zl
KCp1cmwpLCBXVEZNb3ZlKCpsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCkgfSB9OwogfQog
CiB1c2luZyBTZXJ2aWNlV29ya2VyQ2xpZW50c01hdGNoQWxsQ2FsbGJhY2sgPSBXVEY6OkNvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYmKT47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNv
bnRleHREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEuY3BwCmluZGV4IGI1YWRkYjMxZGFiY2JhODBiOTRkMDAzNGVhY2YzNjc5
NGYxM2FiNGIuLjU2NGJiZTBmYmZkZDM4MDU3NWE3MTVkMzdmZmFkZTJjNTQyNTFmNDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEuY3BwCkBAIC00NCw3ICs0NCw3IEBAIFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YSBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAg
ICAgIHNjcmlwdFVSTC5pc29sYXRlZENvcHkoKSwKICAgICAgICAgd29ya2VyVHlwZSwKICAgICAg
ICAgbG9hZGVkRnJvbURpc2ssCi0gICAgICAgIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQsCisg
ICAgICAgIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkLAogICAgICAgICBjcm9zc1RocmVh
ZENvcHkoc2NyaXB0UmVzb3VyY2VNYXApCiAgICAgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaAppbmRl
eCAzZDdjZDE3YThiYzA5ZGFlYWE2ZTBlYmY5MGEwNTlhN2M3MDlhMzMzLi5jZWZiNjBmNWU3NTBk
OTY3OTcyZmYzZTdiZTliNTUzNDU2Y2MxN2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oCkBAIC0zOSw3
ICszOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBjbGFzcyBMYXN0TmF2aWdh
dGlvbldhc0FwcEJvdW5kIDogYm9vbDsKK2VudW0gY2xhc3MgTGFzdE5hdmlnYXRpb25XYXNBcHBJ
bml0aWF0ZWQgOiBib29sOwogCiBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsKICAg
ICBzdHJ1Y3QgSW1wb3J0ZWRTY3JpcHQgewpAQCAtODksNyArODksNyBAQCBzdHJ1Y3QgU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhIHsKICAgICBVUkwgc2NyaXB0VVJMOwogICAgIFdvcmtlclR5cGUg
d29ya2VyVHlwZTsKICAgICBib29sIGxvYWRlZEZyb21EaXNrOwotICAgIHN0ZDo6b3B0aW9uYWw8
TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZD4gbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkPiBsYXN0TmF2aWdh
dGlvbldhc0FwcEluaXRpYXRlZDsKICAgICBIYXNoTWFwPFVSTCwgSW1wb3J0ZWRTY3JpcHQ+IHNj
cmlwdFJlc291cmNlTWFwOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OwpAQCAtMTAyLDcgKzEwMiw3IEBAIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+CiB2b2lkIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBqb2JEYXRhSWRlbnRpZmllciA8PCByZWdp
c3RyYXRpb24gPDwgc2VydmljZVdvcmtlcklkZW50aWZpZXIgPDwgc2NyaXB0IDw8IGNvbnRlbnRT
ZWN1cml0eVBvbGljeSA8PCByZWZlcnJlclBvbGljeQotICAgICAgICA8PCBzY3JpcHRVUkwgPDwg
d29ya2VyVHlwZSA8PCBsb2FkZWRGcm9tRGlzayA8PCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5k
IDw8IHNjcmlwdFJlc291cmNlTWFwIDw8IGNlcnRpZmljYXRlSW5mbzsKKyAgICAgICAgPDwgc2Ny
aXB0VVJMIDw8IHdvcmtlclR5cGUgPDwgbG9hZGVkRnJvbURpc2sgPDwgbGFzdE5hdmlnYXRpb25X
YXNBcHBJbml0aWF0ZWQgPDwgc2NyaXB0UmVzb3VyY2VNYXAgPDwgY2VydGlmaWNhdGVJbmZvOwog
fQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAtMTQ3LDggKzE0Nyw4IEBAIHN0ZDo6b3B0
aW9uYWw8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6
OmRlY29kZShEZWNvZGVyCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShsb2FkZWRGcm9tRGlzaykp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPExhc3RO
YXZpZ2F0aW9uV2FzQXBwQm91bmQ+IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7Ci0gICAgaWYg
KCFkZWNvZGVyLmRlY29kZShsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKSkKKyAgICBzdGQ6Om9w
dGlvbmFsPExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkPiBsYXN0TmF2aWdhdGlvbldhc0Fw
cEluaXRpYXRlZDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGxhc3ROYXZpZ2F0aW9uV2FzQXBw
SW5pdGlhdGVkKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEhhc2hNYXA8
VVJMLCBJbXBvcnRlZFNjcmlwdD4gc2NyaXB0UmVzb3VyY2VNYXA7CkBAIC0xNzEsNyArMTcxLDcg
QEAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YTo6ZGVjb2RlKERlY29kZXIKICAgICAgICAgV1RGTW92ZShzY3JpcHRVUkwpLAog
ICAgICAgICB3b3JrZXJUeXBlLAogICAgICAgICBsb2FkZWRGcm9tRGlzaywKLSAgICAgICAgV1RG
TW92ZShsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKSwKKyAgICAgICAgV1RGTW92ZShsYXN0TmF2
aWdhdGlvbldhc0FwcEluaXRpYXRlZCksCiAgICAgICAgIFdURk1vdmUoc2NyaXB0UmVzb3VyY2VN
YXApCiAgICAgfX07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAppbmRl
eCA3MjI4NWZkYzgzOTlmYzM0YjU0ZTkzNjA0OTEzZmExYTNmYzU0OTM3Li41YzFhYWVmOWU5ODMw
Mjg2MjcwZmYyMzNhNDVhYTcxZWMyMmIwOTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eS5jcHAKQEAgLTExNyw4ICsxMTcsOCBAQCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6
OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25maQog
ICAgIG1fcmVtb3RlRGVidWdnYWJsZS0+aW5pdCgpOwogI2VuZGlmCiAKLSAgICBpZiAoZGF0YS5s
YXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKQotICAgICAgICBzZXRMYXN0TmF2aWdhdGlvbldhc0Fw
cEJvdW5kKGRhdGEubGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCA9PSBMYXN0TmF2aWdhdGlvbldh
c0FwcEJvdW5kOjpZZXMpOworICAgIGlmIChkYXRhLmxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlh
dGVkKQorICAgICAgICBzZXRMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZChkYXRhLmxhc3RO
YXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkID09IExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVk
OjpZZXMpOwogfQogCiBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6On5TZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHkoKQpAQCAtMTI3LDE1ICsxMjcsMTUgQEAgU2VydmljZVdvcmtlclRocmVhZFByb3h5
Ojp+U2VydmljZVdvcmtlclRocmVhZFByb3h5KCkKICAgICBhbGxTZXJ2aWNlV29ya2VyVGhyZWFk
UHJveGllcygpLnJlbW92ZSh0aGlzKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHk6OnNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoYm9vbCB3YXNBcHBCb3VuZCkKK3ZvaWQg
U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpzZXRMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRl
ZChib29sIHdhc0FwcEluaXRpYXRlZCkKIHsKICAgICBpZiAobV9kb2N1bWVudC0+bG9hZGVyKCkp
Ci0gICAgICAgIG1fZG9jdW1lbnQtPmxvYWRlcigpLT5zZXRMYXN0TmF2aWdhdGlvbldhc0FwcEJv
dW5kKHdhc0FwcEJvdW5kKTsKKyAgICAgICAgbV9kb2N1bWVudC0+bG9hZGVyKCktPnNldExhc3RO
YXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKHdhc0FwcEluaXRpYXRlZCk7CiB9CiAKLWJvb2wgU2Vy
dmljZVdvcmtlclRocmVhZFByb3h5OjpsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKCkKK2Jvb2wg
U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCgp
CiB7Ci0gICAgcmV0dXJuIG1fZG9jdW1lbnQtPmxvYWRlcigpID8gbV9kb2N1bWVudC0+bG9hZGVy
KCktPmxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoKSA6IGZhbHNlOworICAgIHJldHVybiBtX2Rv
Y3VtZW50LT5sb2FkZXIoKSA/IG1fZG9jdW1lbnQtPmxvYWRlcigpLT5sYXN0TmF2aWdhdGlvbldh
c0FwcEluaXRpYXRlZCgpIDogZmFsc2U7CiB9CiAKIGJvb2wgU2VydmljZVdvcmtlclRocmVhZFBy
b3h5Ojpwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCmluZGV4IGM5ZjFkN2VmNzJiYjNmMzVhYWNkMWMzMDUx
NThjMzhlMjAwYzEwZjAuLjJjNWEyODkyOGZhZTAwYTQ4ZmU4ZGFiOTY4YTg5OTdmYzNkYWVjYzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCkBAIC04MSw4ICs4MSw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KCk7CiAgICAgdm9pZCBkaWRTYXZlU2Ny
aXB0c1RvRGlzayhTY3JpcHRCdWZmZXImJiwgSGFzaE1hcDxVUkwsIFNjcmlwdEJ1ZmZlcj4mJiBp
bXBvcnRlZFNjcmlwdHMpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMYXN0TmF2aWdh
dGlvbldhc0FwcEJvdW5kKGJvb2wpOwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbGFzdE5hdmln
YXRpb25XYXNBcHBCb3VuZCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TGFzdE5hdmln
YXRpb25XYXNBcHBJbml0aWF0ZWQoYm9vbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBsYXN0
TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCgpOwogCiBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQ
T1JUIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShQYWdlQ29uZmlndXJhdGlvbiYmLCBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEmJiwgU3RyaW5nJiYgdXNlckFnZW50LCBDYWNoZVN0b3JhZ2VQcm92
aWRlciYsIFN0b3JhZ2VCbG9ja2luZ1BvbGljeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3Bw
CmluZGV4IGJkYWJiZGZlZWY1YjQxMWMyYmU2OTVmMzhkNmM5Y2YwNzFhZmFjZTUuLjc3YWU2Mzli
OTI0NmQ1OWRiM2M3MTI3YmFjNDQwMjRmMDc1ZTdmMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJh
c2UuY3BwCkBAIC01NjksNyArNTY5LDcgQEAgU3RyaW5nIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpp
bXBvcnRSZWNvcmRzKCkKICAgICAgICAgYXV0byByZWdpc3RyYXRpb25JZGVudGlmaWVyID0gU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI6OmdlbmVyYXRlKCk7CiAgICAgICAgIGF1
dG8gc2VydmljZVdvcmtlckRhdGEgPSBTZXJ2aWNlV29ya2VyRGF0YSB7IHdvcmtlcklkZW50aWZp
ZXIsIHNjcmlwdFVSTCwgU2VydmljZVdvcmtlclN0YXRlOjpBY3RpdmF0ZWQsICp3b3JrZXJUeXBl
LCByZWdpc3RyYXRpb25JZGVudGlmaWVyIH07CiAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uID0g
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEgeyBXVEZNb3ZlKCprZXkpLCByZWdpc3RyYXRp
b25JZGVudGlmaWVyLCBXVEZNb3ZlKHNjb3BlVVJMKSwgKnVwZGF0ZVZpYUNhY2hlLCBsYXN0VXBk
YXRlQ2hlY2tUaW1lLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShzZXJ2aWNl
V29ya2VyRGF0YSkgfTsKLSAgICAgICAgYXV0byBjb250ZXh0RGF0YSA9IFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YSB7IHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShyZWdpc3RyYXRpb24pLCB3b3JrZXJJ
ZGVudGlmaWVyLCBXVEZNb3ZlKHNjcmlwdCksIFdURk1vdmUoKmNlcnRpZmljYXRlSW5mbyksIFdU
Rk1vdmUoKmNvbnRlbnRTZWN1cml0eVBvbGljeSksIFdURk1vdmUocmVmZXJyZXJQb2xpY3kpLCBX
VEZNb3ZlKHNjcmlwdFVSTCksICp3b3JrZXJUeXBlLCB0cnVlLCBMYXN0TmF2aWdhdGlvbldhc0Fw
cEJvdW5kOjpObywgV1RGTW92ZShzY3JpcHRSZXNvdXJjZU1hcCkgfTsKKyAgICAgICAgYXV0byBj
b250ZXh0RGF0YSA9IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7IHN0ZDo6bnVsbG9wdCwgV1RG
TW92ZShyZWdpc3RyYXRpb24pLCB3b3JrZXJJZGVudGlmaWVyLCBXVEZNb3ZlKHNjcmlwdCksIFdU
Rk1vdmUoKmNlcnRpZmljYXRlSW5mbyksIFdURk1vdmUoKmNvbnRlbnRTZWN1cml0eVBvbGljeSks
IFdURk1vdmUocmVmZXJyZXJQb2xpY3kpLCBXVEZNb3ZlKHNjcmlwdFVSTCksICp3b3JrZXJUeXBl
LCB0cnVlLCBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDo6Tm8sIFdURk1vdmUoc2NyaXB0
UmVzb3VyY2VNYXApIH07CiAKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBjb250ZXh0RGF0YSA9IGNvbnRleHREYXRhLmlzb2xhdGVkQ29w
eSgpXSgpIG11dGFibGUgewogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+YWRkUmVnaXN0cmF0
aW9uVG9TdG9yZShXVEZNb3ZlKGNvbnRleHREYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCmluZGV4IDE3ZWRmN2VjMGVlMDE2
MDhjZDgwZjU5YmY2OGQxNTY1MTA2ZjY4M2IuLmQ3MDg3NTA1Y2MxODgwOWVlYzM4OTZiZjg5Yzc3
N2UyYzMzZDM3MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC00NzQsNyArNDc0LDcgQEAgdm9pZCBTV1NlcnZlcjo6c3Rh
cnRTY3JpcHRGZXRjaChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iRGF0YSwgU1dTZXJ2
ZXJSZWcKICAgICAgICAgcmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIob3JpZ2luVVJMKG9yaWdpbiku
c3RyaW5nKCkpOwogICAgICAgICByZXF1ZXN0LnNldEhUVFBVc2VyQWdlbnQoc2VydmljZVdvcmtl
ckNsaWVudFVzZXJBZ2VudChDbGllbnRPcmlnaW4geyBqb2JEYXRhLnRvcE9yaWdpbiwgU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZShqb2JEYXRhLnNjcmlwdFVSTCktPmRhdGEoKSB9KSk7CiAgICAgICAg
IHJlcXVlc3Quc2V0UHJpb3JpdHkoUmVzb3VyY2VMb2FkUHJpb3JpdHk6Okxvdyk7Ci0gICAgICAg
IHJlcXVlc3Quc2V0SXNBcHBCb3VuZChyZWdpc3RyYXRpb24uaXNBcHBCb3VuZCgpKTsKKyAgICAg
ICAgcmVxdWVzdC5zZXRJc0FwcEluaXRpYXRlZChyZWdpc3RyYXRpb24uaXNBcHBJbml0aWF0ZWQo
KSk7CiAKICAgICAgICAgbV9zb2Z0VXBkYXRlQ2FsbGJhY2soU2VydmljZVdvcmtlckpvYkRhdGEg
eyBqb2JEYXRhIH0sIHNob3VsZFJlZnJlc2hDYWNoZSwgV1RGTW92ZShyZXF1ZXN0KSwgW3RoaXMs
IHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKGF1dG8mIHJlc3VsdCkgewogICAgICAgICAg
ICAgaWYgKCF3ZWFrVGhpcykKQEAgLTY0OCwyNCArNjQ4LDI0IEBAIHZvaWQgU1dTZXJ2ZXI6OnJl
bW92ZUNsaWVudFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oQ29ubmVjdGlvbiYgY29ubmVjdGlv
biwgU2VyCiAKIHZvaWQgU1dTZXJ2ZXI6OnVwZGF0ZVdvcmtlcihjb25zdCBTZXJ2aWNlV29ya2Vy
Sm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBTV1NlcnZlclJlZ2lzdHJhdGlv
biYgcmVnaXN0cmF0aW9uLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU2NyaXB0QnVmZmVyJiBzY3Jp
cHQsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBjb25zdCBDb250ZW50
U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgY29u
c3QgU3RyaW5nJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSB0eXBlLCBIYXNoTWFwPFVSTCwg
U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJiBzY3JpcHRSZXNvdXJj
ZU1hcCkKIHsKLSAgICB0cnlJbnN0YWxsQ29udGV4dERhdGEoU2VydmljZVdvcmtlckNvbnRleHRE
YXRhIHsgam9iRGF0YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbi5kYXRhKCksIFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBzY3JpcHQsIGNlcnRpZmljYXRlSW5mbywgY29udGVu
dFNlY3VyaXR5UG9saWN5LCByZWZlcnJlclBvbGljeSwgdXJsLCB0eXBlLCBmYWxzZSwgY2xpZW50
SXNBcHBCb3VuZEZvclJlZ2lzdHJhYmxlRG9tYWluKFJlZ2lzdHJhYmxlRG9tYWluKHVybCkpLCBX
VEZNb3ZlKHNjcmlwdFJlc291cmNlTWFwKSB9KTsKKyAgICB0cnlJbnN0YWxsQ29udGV4dERhdGEo
U2VydmljZVdvcmtlckNvbnRleHREYXRhIHsgam9iRGF0YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlv
bi5kYXRhKCksIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBzY3JpcHQsIGNl
cnRpZmljYXRlSW5mbywgY29udGVudFNlY3VyaXR5UG9saWN5LCByZWZlcnJlclBvbGljeSwgdXJs
LCB0eXBlLCBmYWxzZSwgY2xpZW50SXNBcHBJbml0aWF0ZWRGb3JSZWdpc3RyYWJsZURvbWFpbihS
ZWdpc3RyYWJsZURvbWFpbih1cmwpKSwgV1RGTW92ZShzY3JpcHRSZXNvdXJjZU1hcCkgfSk7CiB9
CiAKLUxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgU1dTZXJ2ZXI6OmNsaWVudElzQXBwQm91bmRG
b3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKQorTGFz
dE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgU1dTZXJ2ZXI6OmNsaWVudElzQXBwSW5pdGlhdGVk
Rm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikKIHsK
ICAgICBhdXRvIGNsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluSXRlcmF0b3IgPSBtX2NsaWVudHNC
eVJlZ2lzdHJhYmxlRG9tYWluLmZpbmQoZG9tYWluKTsKICAgICBpZiAoY2xpZW50c0J5UmVnaXN0
cmFibGVEb21haW5JdGVyYXRvciA9PSBtX2NsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluLmVuZCgp
KQotICAgICAgICByZXR1cm4gTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDo6Tm87CisgICAgICAg
IHJldHVybiBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDo6Tm87CiAKICAgICBhdXRvJiBj
bGllbnRzRm9yUmVnaXN0cmFibGVEb21haW4gPSBjbGllbnRzQnlSZWdpc3RyYWJsZURvbWFpbkl0
ZXJhdG9yLT52YWx1ZTsKICAgICBmb3IgKGF1dG8mIGNsaWVudCA6IGNsaWVudHNGb3JSZWdpc3Ry
YWJsZURvbWFpbikgewogICAgICAgICBhdXRvIGRhdGEgPSBtX2NsaWVudHNCeUlkLmZpbmQoY2xp
ZW50KTsKICAgICAgICAgQVNTRVJUKGRhdGEgIT0gbV9jbGllbnRzQnlJZC5lbmQoKSk7Ci0gICAg
ICAgIGlmIChkYXRhLT52YWx1ZS5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kID09IExhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQ6OlllcykKLSAgICAgICAgICAgIHJldHVybiBMYXN0TmF2aWdhdGlv
bldhc0FwcEJvdW5kOjpZZXM7CisgICAgICAgIGlmIChkYXRhLT52YWx1ZS5sYXN0TmF2aWdhdGlv
bldhc0FwcEluaXRpYXRlZCA9PSBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDo6WWVzKQor
ICAgICAgICAgICAgcmV0dXJuIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpZZXM7CiAg
ICAgfQogCi0gICAgcmV0dXJuIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6Ok5vOworICAgIHJl
dHVybiBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDo6Tm87CiB9CiAKIHZvaWQgU1dTZXJ2
ZXI6OnRyeUluc3RhbGxDb250ZXh0RGF0YShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBkYXRh
KQpAQCAtODg2LDExICs4ODYsMTEgQEAgU1dTZXJ2ZXJSZWdpc3RyYXRpb24qIFNXU2VydmVyOjpy
ZWdpc3RyYXRpb25Gcm9tU2VydmljZVdvcmtlcklkZW50aWZpZXIoU2VydmljZVcKICAgICByZXR1
cm4gaXRlcmF0b3ItPnZhbHVlLT5yZWdpc3RyYXRpb24oKTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6
dXBkYXRlQXBwQm91bmRWYWx1ZUZvcldvcmtlcnMoY29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRP
cmlnaW4sIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3Vu
ZCkKK3ZvaWQgU1dTZXJ2ZXI6OnVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlRm9yV29ya2Vycyhjb25z
dCBDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0
ZWQgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpCiB7CiAgICAgZm9yIChhdXRvJiB3b3Jr
ZXIgOiBtX3J1bm5pbmdPclRlcm1pbmF0aW5nV29ya2Vycy52YWx1ZXMoKSkgewogICAgICAgICBp
ZiAod29ya2VyLT5vcmlnaW4oKS5jbGllbnRSZWdpc3RyYWJsZURvbWFpbigpID09IGNsaWVudE9y
aWdpbi5jbGllbnRSZWdpc3RyYWJsZURvbWFpbigpKQotICAgICAgICAgICAgd29ya2VyLT51cGRh
dGVBcHBCb3VuZFZhbHVlKGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOworICAgICAgICAgICAg
d29ya2VyLT51cGRhdGVBcHBJbml0aWF0ZWRWYWx1ZShsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRp
YXRlZCk7CiAgICAgfQogfQogCkBAIC04OTksOSArODk5LDkgQEAgdm9pZCBTV1NlcnZlcjo6cmVn
aXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KENsaWVudE9yaWdpbiYmIGNsaWVudE9yaWdpbiwgU2Vy
dmljZVcKICAgICBhdXRvIGNsaWVudElkZW50aWZpZXIgPSBkYXRhLmlkZW50aWZpZXI7CiAKICAg
ICAvLyBVcGRhdGUgdGhlIGFwcC1ib3VuZCB2YWx1ZSBpZiB0aGUgbmV3IGNsaWVudCBpcyBhcHAt
Ym91bmQgYW5kIHRoZSBjdXJyZW50IGNsaWVudHMgZm9yIHRoZSBvcmlnaW4gYXJlIG5vdCBtYXJr
ZWQgYXBwLWJvdW5kLgotICAgIGlmIChkYXRhLmxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgPT0g
TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDo6WWVzKSB7Ci0gICAgICAgIGlmIChjbGllbnRJc0Fw
cEJvdW5kRm9yUmVnaXN0cmFibGVEb21haW4oY2xpZW50T3JpZ2luLmNsaWVudFJlZ2lzdHJhYmxl
RG9tYWluKCkpID09IExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6Ok5vKQotICAgICAgICAgICAg
dXBkYXRlQXBwQm91bmRWYWx1ZUZvcldvcmtlcnMoY2xpZW50T3JpZ2luLCBkYXRhLmxhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQpOworICAgIGlmIChkYXRhLmxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5p
dGlhdGVkID09IExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpZZXMpIHsKKyAgICAgICAg
aWYgKGNsaWVudElzQXBwSW5pdGlhdGVkRm9yUmVnaXN0cmFibGVEb21haW4oY2xpZW50T3JpZ2lu
LmNsaWVudFJlZ2lzdHJhYmxlRG9tYWluKCkpID09IExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlh
dGVkOjpObykKKyAgICAgICAgICAgIHVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlRm9yV29ya2Vycyhj
bGllbnRPcmlnaW4sIGRhdGEubGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpOwogICAgIH0K
IAogICAgIEFTU0VSVCghbV9jbGllbnRzQnlJZC5jb250YWlucyhjbGllbnRJZGVudGlmaWVyKSk7
CkBAIC05MzksNyArOTM5LDcgQEAgdm9pZCBTV1NlcnZlcjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2Vy
Q2xpZW50KENsaWVudE9yaWdpbiYmIGNsaWVudE9yaWdpbiwgU2VydmljZVcKIHZvaWQgU1dTZXJ2
ZXI6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IENsaWVudE9yaWdpbiYgY2xp
ZW50T3JpZ2luLCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVy
KQogewogICAgIGF1dG8gY2xpZW50UmVnaXN0cmFibGVEb21haW4gPSBjbGllbnRPcmlnaW4uY2xp
ZW50UmVnaXN0cmFibGVEb21haW4oKTsKLSAgICBhdXRvIGFwcEJvdW5kVmFsdWVCZWZvcmUgPSBj
bGllbnRJc0FwcEJvdW5kRm9yUmVnaXN0cmFibGVEb21haW4oY2xpZW50T3JpZ2luLmNsaWVudFJl
Z2lzdHJhYmxlRG9tYWluKCkpOworICAgIGF1dG8gYXBwSW5pdGlhdGVkVmFsdWVCZWZvcmUgPSBj
bGllbnRJc0FwcEluaXRpYXRlZEZvclJlZ2lzdHJhYmxlRG9tYWluKGNsaWVudE9yaWdpbi5jbGll
bnRSZWdpc3RyYWJsZURvbWFpbigpKTsKIAogICAgIGJvb2wgd2FzUmVtb3ZlZCA9IG1fY2xpZW50
c0J5SWQucmVtb3ZlKGNsaWVudElkZW50aWZpZXIpOwogICAgIEFTU0VSVF9VTlVTRUQod2FzUmVt
b3ZlZCwgd2FzUmVtb3ZlZCk7CkBAIC05ODQsOSArOTg0LDkgQEAgdm9pZCBTV1NlcnZlcjo6dW5y
ZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRPcmln
aW4sIFMKIAogICAgIC8vIElmIHRoZSBhcHAtYm91bmQgdmFsdWUgY2hhbmdlZCBhZnRlciB0aGlz
IGNsaWVudCB3YXMgcmVtb3ZlZCwgd2Uga25vdyBpdCB3YXMgdGhlIG9ubHkgYXBwLWJvdW5kCiAg
ICAgLy8gY2xpZW50IGZvciBpdHMgb3JpZ2luLCBhbmQgd2Ugc2hvdWxkIHVwZGF0ZSBhbGwgd29y
a2VycyB0byByZWZsZWN0IHRoaXMuCi0gICAgYXV0byBhcHBCb3VuZFZhbHVlQWZ0ZXIgPSBjbGll
bnRJc0FwcEJvdW5kRm9yUmVnaXN0cmFibGVEb21haW4oY2xpZW50T3JpZ2luLmNsaWVudFJlZ2lz
dHJhYmxlRG9tYWluKCkpOwotICAgIGlmIChhcHBCb3VuZFZhbHVlQmVmb3JlICE9IGFwcEJvdW5k
VmFsdWVBZnRlcikKLSAgICAgICAgdXBkYXRlQXBwQm91bmRWYWx1ZUZvcldvcmtlcnMoY2xpZW50
T3JpZ2luLCBhcHBCb3VuZFZhbHVlQWZ0ZXIpOworICAgIGF1dG8gYXBwSW5pdGlhdGVkVmFsdWVB
ZnRlciA9IGNsaWVudElzQXBwSW5pdGlhdGVkRm9yUmVnaXN0cmFibGVEb21haW4oY2xpZW50T3Jp
Z2luLmNsaWVudFJlZ2lzdHJhYmxlRG9tYWluKCkpOworICAgIGlmIChhcHBJbml0aWF0ZWRWYWx1
ZUJlZm9yZSAhPSBhcHBJbml0aWF0ZWRWYWx1ZUFmdGVyKQorICAgICAgICB1cGRhdGVBcHBJbml0
aWF0ZWRWYWx1ZUZvcldvcmtlcnMoY2xpZW50T3JpZ2luLCBhcHBJbml0aWF0ZWRWYWx1ZUFmdGVy
KTsKIAogICAgIGF1dG8gcmVnaXN0cmF0aW9uSXRlcmF0b3IgPSBtX2NsaWVudFRvQ29udHJvbGxp
bmdSZWdpc3RyYXRpb24uZmluZChjbGllbnRJZGVudGlmaWVyKTsKICAgICBpZiAocmVnaXN0cmF0
aW9uSXRlcmF0b3IgPT0gbV9jbGllbnRUb0NvbnRyb2xsaW5nUmVnaXN0cmF0aW9uLmVuZCgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCmlu
ZGV4IGNkNjIyNjYzN2EyNTE2YmYzZmM1MDFlYzYxYTI2MWQyOTM2ZmIyOTQuLjZiZDY4OTMzNDRl
ZWRmMmYwY2JkZGQyYTE2MTY2YTkyMWUzM2ZlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTIxNyw3ICsyMTcsNyBAQCBwdWJs
aWM6CiAKICAgICBzdGF0aWMgY29uc3RleHByIFNlY29uZHMgZGVmYXVsdFRlcm1pbmF0aW9uRGVs
YXkgPSAxMF9zOwogCi0gICAgTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCBjbGllbnRJc0FwcEJv
dW5kRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsKKyAgICBM
YXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCBjbGllbnRJc0FwcEluaXRpYXRlZEZvclJlZ2lz
dHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CiAKIHByaXZhdGU6CiAgICAg
dm9pZCB2YWxpZGF0ZVJlZ2lzdHJhdGlvbkRvbWFpbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CkBAIC0yNDQsNyArMjQ0LDcgQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgY29udGV4dENvbm5lY3Rpb25DcmVhdGVkKFNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbiYpOwogCi0gICAgdm9pZCB1cGRhdGVBcHBCb3VuZFZhbHVlRm9yV29y
a2Vycyhjb25zdCBDbGllbnRPcmlnaW4mLCBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKTsKKyAg
ICB2b2lkIHVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlRm9yV29ya2Vycyhjb25zdCBDbGllbnRPcmln
aW4mLCBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk7CiAKICAgICBIYXNoTWFwPFNXU2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0aW9uPj4gbV9j
b25uZWN0aW9uczsKICAgICBIYXNoTWFwPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXksIFdl
YWtQdHI8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+PiBtX3Njb3BlVG9SZWdpc3RyYXRpb25NYXA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
UmVnaXN0cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCmluZGV4IDEyYTk1ZGUwZGYwZmJkNjQ2NjFlNzZmYzI5
N2Q1MDRhNTM2Njc3MjQuLmQ4Y2E2NWY4ZWVmNmRjNDY4OWVkNmM4ZTA1ZWE4NjM0YWE4OTU5MWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJSZWdpc3RyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCkBAIC0zNzAsMTQgKzM3MCwxNCBAQCB2b2lk
IFNXU2VydmVyUmVnaXN0cmF0aW9uOjpzb2Z0VXBkYXRlKCkKICAgICBtX3NlcnZlci5zb2Z0VXBk
YXRlKCp0aGlzKTsKIH0KIAotdm9pZCBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6c2NoZWR1bGVTb2Z0
VXBkYXRlKElzQXBwQm91bmQgaXNBcHBCb3VuZCkKK3ZvaWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246
OnNjaGVkdWxlU29mdFVwZGF0ZShJc0FwcEluaXRpYXRlZCBpc0FwcEluaXRpYXRlZCkKIHsKICAg
ICAvLyBUbyBhdm9pZCBzY2hlZHVsaW5nIG1hbnkgdXBkYXRlcyBkdXJpbmcgYSBzaW5nbGUgcGFn
ZSBsb2FkLCB3ZSBkbyBzb2Z0IHVwZGF0ZXMgb24gYSAxIHNlY29uZCBkZWxheSBhbmQga2VlcCBk
ZWxheWluZwogICAgIC8vIGFzIGxvbmcgYXMgc29mdCB1cGRhdGUgcmVxdWVzdHMga2VlcCBjb21p
bmcuIFRoaXMgc2VlbXMgdG8gbWF0Y2ggQ2hyb21lJ3MgYmVoYXZpb3IuCiAgICAgaWYgKG1fc29m
dFVwZGF0ZVRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1faXNBcHBC
b3VuZCA9IGlzQXBwQm91bmQgPT0gSXNBcHBCb3VuZDo6WWVzOworICAgIG1faXNBcHBJbml0aWF0
ZWQgPSBpc0FwcEluaXRpYXRlZCA9PSBJc0FwcEluaXRpYXRlZDo6WWVzOwogCiAgICAgUkVMRUFT
RV9MT0coU2VydmljZVdvcmtlciwgIlNXU2VydmVyUmVnaXN0cmF0aW9uOjpzb2Z0VXBkYXRlSWZO
ZWVkZWQiKTsKICAgICBtX3NvZnRVcGRhdGVUaW1lci5zdGFydE9uZVNob3Qoc29mdFVwZGF0ZURl
bGF5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJSZWdpc3RyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaAppbmRleCA5ZjdmMDYwZjdjYzA0YTJjODc1YmIw
NDZjN2I4MTU4OGIxMjI4YjQ2Li5mY2MwNThhMzk4NmQzZmFhNjcwOTYzMWViYzJiMjM2MjQyMzQ2
NWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyUmVnaXN0cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5oCkBAIC00Nyw3ICs0Nyw3IEBAIHN0cnVjdCBF
eGNlcHRpb25EYXRhOwogc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTsKIHN0cnVjdCBT
ZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQ7CiAKLWVudW0gY2xhc3MgSXNBcHBCb3VuZCA6IGJvb2wg
eyBObywgWWVzIH07CitlbnVtIGNsYXNzIElzQXBwSW5pdGlhdGVkIDogYm9vbCB7IE5vLCBZZXMg
fTsKIAogY2xhc3MgU1dTZXJ2ZXJSZWdpc3RyYXRpb24gOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
U1dTZXJ2ZXJSZWdpc3RyYXRpb24+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAg
LTEwMSwxMyArMTAxLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGZvckVhY2hDb25uZWN0aW9uKGNv
bnN0IFdURjo6RnVuY3Rpb248dm9pZChTV1NlcnZlcjo6Q29ubmVjdGlvbiYpPiYpOwogCiAgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRTb2Z0VXBkYXRlKGNvbnN0IEZldGNoT3B0aW9ucyYp
IGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2NoZWR1bGVTb2Z0VXBkYXRlKElzQXBw
Qm91bmQpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2NoZWR1bGVTb2Z0VXBkYXRlKElzQXBw
SW5pdGlhdGVkKTsKICAgICBzdGF0aWMgY29uc3RleHByIFNlY29uZHMgc29mdFVwZGF0ZURlbGF5
IHsgMV9zIH07CiAKICAgICBVUkwgc2NvcGVVUkxXaXRob3V0RnJhZ21lbnQoKSBjb25zdCB7IHJl
dHVybiBtX3Njb3BlVVJMOyB9CiAgICAgVVJMIHNjcmlwdFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1f
c2NyaXB0VVJMOyB9CiAKLSAgICBib29sIGlzQXBwQm91bmQoKSB7IHJldHVybiBtX2lzQXBwQm91
bmQ7IH0KKyAgICBib29sIGlzQXBwSW5pdGlhdGVkKCkgeyByZXR1cm4gbV9pc0FwcEluaXRpYXRl
ZDsgfQogCiBwcml2YXRlOgogICAgIHZvaWQgYWN0aXZhdGUoKTsKQEAgLTEzNSw3ICsxMzUsNyBA
QCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6VGltZXIgbV9zb2Z0VXBkYXRlVGltZXI7CiAgICAg
Ci0gICAgYm9vbCBtX2lzQXBwQm91bmQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc0FwcEluaXRp
YXRlZCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCA3ZDVjOGYxNDliNzMzMWQ0MGE0YTJlYWNh
ZDlkNjRiNDIwMDFjNTZkLi4xYzdmMzlkYjdjNmRlY2VlMzRlZTNlMDU0ODY3MTllZmJiYjc4ODY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTUyLDcgKzUyLDcg
QEAgcHVibGljOgogCiAgICAgLy8gTWVzc2FnZXMgdG8gdGhlIFNXIGhvc3QgcHJvY2VzcwogICAg
IHZpcnR1YWwgdm9pZCBpbnN0YWxsU2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgU2VydmljZVdv
cmtlckNvbnRleHREYXRhJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlQXBwQm91bmRWYWx1ZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgTGFz
dE5hdmlnYXRpb25XYXNBcHBCb3VuZCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBcHBJ
bml0aWF0ZWRWYWx1ZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgTGFzdE5hdmlnYXRpb25XYXNB
cHBJbml0aWF0ZWQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmlyZUluc3RhbGxFdmVudChTZXJ2
aWNlV29ya2VySWRlbnRpZmllcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmaXJlQWN0aXZhdGVF
dmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0ZXJt
aW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAK
aW5kZXggNjU5MmRiNDEzZjc5NDVkMTNhMDhlMTYyNTE0YmY0YWZlMGFmYWQwMy4uZDdjY2M2MjA3
NWIxMGU1MTBkYjFjMWYwODM2YWI2NDQxMGY2M2E2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKQEAgLTYy
LDcgKzYyLDcgQEAgU1dTZXJ2ZXJXb3JrZXI6OlNXU2VydmVyV29ya2VyKFNXU2VydmVyJiBzZXJ2
ZXIsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXQKICAgICAsIG1fcmVnaXN0cmFibGVE
b21haW4obV9kYXRhLnNjcmlwdFVSTCkKICAgICAsIG1fc2NyaXB0UmVzb3VyY2VNYXAoV1RGTW92
ZShzY3JpcHRSZXNvdXJjZU1hcCkpCiAgICAgLCBtX3Rlcm1pbmF0aW9uVGltZXIoKnRoaXMsICZT
V1NlcnZlcldvcmtlcjo6dGVybWluYXRpb25UaW1lckZpcmVkKQotICAgICwgbV9sYXN0TmF2aWdh
dGlvbldhc0FwcEJvdW5kKG1fc2VydmVyLT5jbGllbnRJc0FwcEJvdW5kRm9yUmVnaXN0cmFibGVE
b21haW4obV9yZWdpc3RyYWJsZURvbWFpbikpCisgICAgLCBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBw
SW5pdGlhdGVkKG1fc2VydmVyLT5jbGllbnRJc0FwcEluaXRpYXRlZEZvclJlZ2lzdHJhYmxlRG9t
YWluKG1fcmVnaXN0cmFibGVEb21haW4pKQogewogICAgIG1fZGF0YS5zY3JpcHRVUkwucmVtb3Zl
RnJhZ21lbnRJZGVudGlmaWVyKCk7CiAKQEAgLTg3LDE4ICs4NywxOCBAQCBTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEgU1dTZXJ2ZXJXb3JrZXI6OmNvbnRleHREYXRhKCkgY29uc3QKIHsKICAgICBB
U1NFUlQobV9yZWdpc3RyYXRpb24pOwogCi0gICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0LCBtX3Jl
Z2lzdHJhdGlvbi0+ZGF0YSgpLCBtX2RhdGEuaWRlbnRpZmllciwgbV9zY3JpcHQsIG1fY2VydGlm
aWNhdGVJbmZvLCBtX2NvbnRlbnRTZWN1cml0eVBvbGljeSwgbV9yZWZlcnJlclBvbGljeSwgbV9k
YXRhLnNjcmlwdFVSTCwgbV9kYXRhLnR5cGUsIGZhbHNlLCBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBw
Qm91bmQsIG1fc2NyaXB0UmVzb3VyY2VNYXAgfTsKKyAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQs
IG1fcmVnaXN0cmF0aW9uLT5kYXRhKCksIG1fZGF0YS5pZGVudGlmaWVyLCBtX3NjcmlwdCwgbV9j
ZXJ0aWZpY2F0ZUluZm8sIG1fY29udGVudFNlY3VyaXR5UG9saWN5LCBtX3JlZmVycmVyUG9saWN5
LCBtX2RhdGEuc2NyaXB0VVJMLCBtX2RhdGEudHlwZSwgZmFsc2UsIG1fbGFzdE5hdmlnYXRpb25X
YXNBcHBJbml0aWF0ZWQsIG1fc2NyaXB0UmVzb3VyY2VNYXAgfTsKIH0KIAotdm9pZCBTV1NlcnZl
cldvcmtlcjo6dXBkYXRlQXBwQm91bmRWYWx1ZShMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIGxh
c3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpCit2b2lkIFNXU2VydmVyV29ya2VyOjp1cGRhdGVBcHBJ
bml0aWF0ZWRWYWx1ZShMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCBsYXN0TmF2aWdhdGlv
bldhc0FwcEluaXRpYXRlZCkKIHsKLSAgICBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgPSBs
YXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOworICAgIG1fbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0
aWF0ZWQgPSBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDsKIAogICAgIGlmICghaXNSdW5u
aW5nKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gY29u
dGV4dENvbm5lY3Rpb24oKSkKLSAgICAgICAgY29ubmVjdGlvbi0+dXBkYXRlQXBwQm91bmRWYWx1
ZShpZGVudGlmaWVyKCksIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOworICAgICAgICBjb25u
ZWN0aW9uLT51cGRhdGVBcHBJbml0aWF0ZWRWYWx1ZShpZGVudGlmaWVyKCksIGxhc3ROYXZpZ2F0
aW9uV2FzQXBwSW5pdGlhdGVkKTsKIH0KIAogdm9pZCBTV1NlcnZlcldvcmtlcjo6dGVybWluYXRl
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAppbmRleCBi
ZTU1ZWViMWFhMmZlNjJiNjE3MjFlOTMzMTBiMGNhNGRhMTI5ZGZlLi5hYjA3YzcxNzY3NjE3MzQw
MmUwMmEyY2Y1MTE3NTlmYzdiNzg0NGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCkBAIC0xMjcsNyArMTI3LDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0SGFzVGltZWRPdXRBbnlGZXRjaFRhc2tzKCkgeyBtX2hh
c1RpbWVkT3V0QW55RmV0Y2hUYXNrcyA9IHRydWU7IH0KICAgICBib29sIGhhc1RpbWVkT3V0QW55
RmV0Y2hUYXNrcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzVGltZWRPdXRBbnlGZXRjaFRhc2tzOyB9
CiAgICAgdm9pZCBkaWRGYWlsSGVhcnRCZWF0Q2hlY2soKTsKLSAgICB2b2lkIHVwZGF0ZUFwcEJv
dW5kVmFsdWUoTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk7CisgICAgdm9pZCB1cGRhdGVBcHBJ
bml0aWF0ZWRWYWx1ZShMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk7CiAKIHByaXZhdGU6
CiAgICAgU1dTZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXImLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYsIGNv
bnN0IFVSTCYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYsIGNv
bnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIFN0cmluZyYmIHJlZmVy
cmVyUG9saWN5LCBXb3JrZXJUeXBlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgSGFzaE1hcDxV
UkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYpOwpAQCAtMTU4
LDcgKzE1OCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc1RpbWVkT3V0QW55RmV0Y2hUYXNr
cyB7IGZhbHNlIH07CiAgICAgVmVjdG9yPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4+IG1fdGVy
bWluYXRpb25DYWxsYmFja3M7CiAgICAgVGltZXIgbV90ZXJtaW5hdGlvblRpbWVyOwotICAgIExh
c3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOworICAg
IExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIG1fbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0
aWF0ZWQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDQ5YmRkM2ZlYzY4MTM3Y2U0
MzUzOTUwMDM0YWRjNmIyNzUyYWY5ZTUuLmVjY2NhOGY2YWZiZWEwNTI1ZDUxOTY0ZmU5ZjNiODA2
NzVhZmEzZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCkBAIC0xMzYyLDcgKzEzNjIsNyBAQCBib29sIE5ldHdvcmtQcm9jZXNzOjpwcml2
YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnTW9kZUVuYWJsZWQoKSBjb25zdAogICAgIHJldHVybiBt
X3ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdNb2RlRW5hYmxlZDsKIH0KIAotdm9pZCBOZXR3
b3JrUHJvY2Vzczo6cHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFn
ZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
d2ViUGFnZUlELCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFdlYkNv
cmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzdGQ6
Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluLCBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIGxhc3ROYXZpZ2F0aW9uV2FzQXBw
Qm91bmQpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IHVzZXJBZ2VudCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVk
IGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKQogewogICAgIExPRyhOZXR3b3JrLCAiKE5l
dHdvcmtQcm9jZXNzKSBQcmVjb25uZWN0aW5nIHRvIFVSTCAlcyAoc3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3kgJWkpIiwgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIChpbnQpc3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3kpOwogCkBAIC0xMzc4LDcgKzEzNzgsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVu
dGlmaQogCiAgICAgTmV0d29ya0xvYWRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAgICAgcGFyYW1l
dGVycy5yZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0IHsgdXJsIH07Ci0gICAgcGFyYW1ldGVycy5y
ZXF1ZXN0LnNldElzQXBwQm91bmQobGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCA9PSBMYXN0TmF2
aWdhdGlvbldhc0FwcEJvdW5kOjpZZXMpOworICAgIHBhcmFtZXRlcnMucmVxdWVzdC5zZXRJc0Fw
cEluaXRpYXRlZChsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCA9PSBMYXN0TmF2aWdhdGlv
bldhc0FwcEluaXRpYXRlZDo6WWVzKTsKICAgICBwYXJhbWV0ZXJzLnJlcXVlc3Quc2V0Rmlyc3RQ
YXJ0eUZvckNvb2tpZXModXJsKTsKICAgICBwYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlEID0gd2Vi
UGFnZVByb3h5SUQ7CiAgICAgcGFyYW1ldGVycy53ZWJQYWdlSUQgPSB3ZWJQYWdlSUQ7CkBAIC0y
NzY2LDE5ICsyNzY2LDE5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldENPUlNEaXNhYmxpbmdQ
YXR0ZXJucyhQYWdlSWRlbnRpZmllciBwYWdlSWRlbnRpZmllciwgVmVjCiB9CiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmFwcEJvdW5kTmF2aWdhdGlvbkRhdGEo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEFw
cEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IE5ldHdvcmtQcm9jZXNzOjphcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEFwcFByaXZhY3lSZXBv
cnRUZXN0aW5nRGF0YSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBu
ZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIobmV0d29ya1Nlc3Npb24tPmFwcEJvdW5kTmF2aWdhdGlvblRl
c3RpbmdEYXRhKCkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuZXR3b3JrU2Vzc2lvbi0+
YXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmNs
ZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1By
b2Nlc3M6OmNsZWFyQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCkpCi0gICAgICAgIG5ldHdvcmtTZXNzaW9uLT5hcHBCb3VuZE5hdmlnYXRpb25UZXN0
aW5nRGF0YSgpLmNsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YVRlc3RpbmcoKTsKKyAgICAgICAg
bmV0d29ya1Nlc3Npb24tPmFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSgpLmNsZWFyQXBwUHJp
dmFjeVJlcG9ydFRlc3RpbmdEYXRhKCk7CiAKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDQ0
Nzc4NGIxYTc4MzhkZDdiZGM5NWNmMzc0MDU3YmNjNTlkOGEzM2QuLjVmNTg1YWU3OWYxZDBiYTEz
YmViYWJhOGI1NjRiODI4MWU1NmY0ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAK
KyNpbmNsdWRlICJBcHBQcml2YWN5UmVwb3J0LmgiCiAjaW5jbHVkZSAiQXV4aWxpYXJ5UHJvY2Vz
cy5oIgogI2luY2x1ZGUgIkNhY2hlTW9kZWwuaCIKICNpbmNsdWRlICJDYWxsYmFja0lELmgiCkBA
IC0yODgsNyArMjg5LDcgQEAgcHVibGljOgogICAgIHVzaW5nIENhY2hlU3RvcmFnZVJvb3RQYXRo
Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT47CiAgICAgdm9pZCBj
YWNoZVN0b3JhZ2VSb290UGF0aChQQUw6OlNlc3Npb25JRCwgQ2FjaGVTdG9yYWdlUm9vdFBhdGhD
YWxsYmFjayYmKTsKIAotICAgIHZvaWQgcHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklELCBXZWJQ
YWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHN0ZDo6b3B0
aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBMYXN0TmF2aWdhdGlvbldhc0FwcEJv
dW5kKTsKKyAgICB2b2lkIHByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCwgV2ViUGFnZVByb3h5
SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFVSTCYsIGNvbnN0IFN0
cmluZyYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQp
OwogCiAgICAgdm9pZCBzZXRTZXNzaW9uSXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKFBBTDo6U2Vz
c2lvbklELCBib29sKTsKICAgICBib29sIHNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24o
UEFMOjpTZXNzaW9uSUQpIGNvbnN0OwpAQCAtMzc3LDggKzM3OCw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldENPUlNEaXNhYmxpbmdQYXR0ZXJucyhXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgVmVj
dG9yPFN0cmluZz4mJik7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIGFwcEJvdW5k
TmF2aWdhdGlvbkRhdGEoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEmKT4mJik7Ci0gICAgdm9pZCBjbGVhckFw
cEJvdW5kTmF2aWdhdGlvbkRhdGEoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CisgICAgdm9pZCBhcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoUEFMOjpTZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgQXBwUHJpdmFjeVJlcG9ydFRlc3Rp
bmdEYXRhJik+JiYpOworICAgIHZvaWQgY2xlYXJBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEo
UEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAjZW5kaWYKIAog
I2lmIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggYWUxNWZmMGUxMmNhNTQ1MTc4
OTA3ZDk3MmEwOWNlNmQyMzIxYTJkNC4uZTA1ZjJlMzIwNTg0NzM3YjM0N2ZhYjIxYmY2YTJlNjk3
OWE4YzhjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC03Nyw3ICs3Nyw3IEBAIG1lc3NhZ2VzIC0+IE5l
dHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBQcmVwYXJlVG9TdXNwZW5kKGJvb2wg
aXNTdXNwZW5zaW9uSW1taW5lbnQpIC0+ICgpIEFzeW5jCiAgICAgUHJvY2Vzc0RpZFJlc3VtZSgp
CiAKLSAgICBQcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6Oldl
YlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIHdlYlBhZ2VJRCwgVVJMIHVybCwgU3RyaW5nIHVzZXJBZ2VudCwgZW51bTp1aW50OF90IFdl
YkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBl
bnVtOmJvb2wgc3RkOjpvcHRpb25hbDxXZWJLaXQ6Ok5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
PiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBlbnVtOmJvb2wgV2ViS2l0OjpMYXN0TmF2
aWdhdGlvbldhc0FwcEJvdW5kIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOworICAgIFByZWNv
bm5lY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRl
bnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlE
LCBVUkwgdXJsLCBTdHJpbmcgdXNlckFnZW50LCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6U3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGVudW06Ym9vbCBzdGQ6
Om9wdGlvbmFsPFdlYktpdDo6TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4sIGVudW06Ym9vbCBXZWJLaXQ6Okxhc3ROYXZpZ2F0aW9uV2FzQXBw
SW5pdGlhdGVkIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKTsKIAogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgQ2xlYXJQcmV2YWxlbnRSZXNvdXJjZShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlc291cmNl
RG9tYWluKSAtPiAoKSBBc3luYwpAQCAtMTkzLDggKzE5Myw4IEBAIG1lc3NhZ2VzIC0+IE5ldHdv
cmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBDbGVhckJ1bmRsZUlkZW50aWZpZXIoKSAt
PiAoKSBBc3luYwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgQXBwQm91bmROYXZpZ2F0aW9u
RGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChzdHJ1Y3QgV2ViS2l0OjpBcHBCb3Vu
ZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBkYXRhKSBBc3luYwotICAgIENsZWFyQXBwQm91bmROYXZp
Z2F0aW9uRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCisgICAgQXBw
UHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKHN0
cnVjdCBXZWJLaXQ6OkFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSBkYXRhKSBBc3luYworICAg
IENsZWFyQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCkgLT4gKCkgQXN5bmMKICNlbmRpZgogCiAgICAgQWRkV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVy
IHBhZ2VJRCwgV2ViS2l0OjpXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMgcGFyYW1ldGVycykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmNwcAppbmRleCAwMWFhMWI4MzU3M2E0Y2RlNWY2ZWFjYjBjYjNjMmQzYmVkN2MxNjEzLi4z
YmNmYzEzZGE4ODMzMzE3ZjU4NDY2MGE2ZTkwZGYyZDdjYmQzYTZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC04ODIsNyArODgyLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVk
aXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwKIAogdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFJl
c291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVD
bGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhPiYmIHByaXZhdGVDbGlja01l
YXN1cmVtZW50QXR0cmlidXRpb25UcmlnZ2VyRGF0YSkKIHsKLSAgICByZWRpcmVjdFJlcXVlc3Qu
c2V0SXNBcHBCb3VuZChyZXF1ZXN0LmlzQXBwQm91bmQoKSk7CisgICAgcmVkaXJlY3RSZXF1ZXN0
LnNldElzQXBwSW5pdGlhdGVkKHJlcXVlc3QuaXNBcHBJbml0aWF0ZWQoKSk7CiAKICAgICBMT0FE
RVJfUkVMRUFTRV9MT0coImNvbnRpbnVlV2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdDogKG1faXNL
ZXB0QWxpdmU9JWQsIGhhc0FkQ2xpY2tDb252ZXJzaW9uPSVkKSIsIG1faXNLZXB0QWxpdmUsICEh
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRhKTsKICAgICBBU1NF
UlQoIWlzU3luY2hyb25vdXMoKSk7CkBAIC0xNTA2LDcgKzE1MDYsNyBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6c2VydmljZVdvcmtlckRpZE5vdEhhbmRsZShTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrKiBmZQogCiBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6aXNBcHBCb3VuZCgpCiB7
Ci0gICAgcmV0dXJuIG1fcGFyYW1ldGVycy5yZXF1ZXN0LmlzQXBwQm91bmQoKTsKKyAgICByZXR1
cm4gbV9wYXJhbWV0ZXJzLnJlcXVlc3QuaXNBcHBJbml0aWF0ZWQoKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmgKaW5kZXggN2ZhOTI3NDRmMjE1MmRjMzYzMDE1YjhhYzJkODI2NTA0MzVkY2IyNC4uNmZh
ZDdiOGI0ZGJiZDFlZWM3MjIxZGQyYzU5OWFkNjlhYTViYTAwOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtMjUsNiArMjUsNyBAQAogCiAj
cHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkFwcFByaXZhY3lSZXBvcnQuaCIKICNpbmNsdWRlICJO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oIgogI2luY2x1ZGUgIlByZWZldGNoQ2FjaGUuaCIK
ICNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIuaCIKQEAgLTE2
MSw3ICsxNjIsNyBAQCBwdWJsaWM6CiAgICAgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
JiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpIHsgcmV0dXJuICptX3ByaXZhdGVDbGlja01lYXN1
cmVtZW50OyB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBBcHBCb3VuZE5hdmlnYXRpb25U
ZXN0aW5nRGF0YSYgYXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEoKSB7IHJldHVybiBtX2Fw
cEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhOyB9CisgICAgQXBwUHJpdmFjeVJlcG9ydFRlc3Rp
bmdEYXRhJiBhcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoKSB7IHJldHVybiBtX2FwcFByaXZh
Y3lSZXBvcnRUZXN0aW5nRGF0YTsgfQogI2VuZGlmCiAKICAgICB2b2lkIGFkZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50TmV0d29ya0xvYWRlcihzdGQ6OnVuaXF1ZV9wdHI8UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnROZXR3b3JrTG9hZGVyPiYmIGxvYWRlcikgeyBtX3ByaXZhdGVDbGlja01lYXN1cmVt
ZW50TmV0d29ya0xvYWRlcnMuYWRkKFdURk1vdmUobG9hZGVyKSk7IH0KQEAgLTIxOSw3ICsyMjAs
NyBAQCBwcm90ZWN0ZWQ6CiAjZW5kaWYKICAgICAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBB
cHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBtX2FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdE
YXRhOworICAgIEFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSBtX2FwcFByaXZhY3lSZXBvcnRU
ZXN0aW5nRGF0YTsKICNlbmRpZgogCiAgICAgSGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyPj4gbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dE5ldHdvcmtMb2FkZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3Bw
CmluZGV4IDdmZGQ5NTRhZTRjOTFlMTdjNTI2Y2EwZTY4NzZiMzRkYjZkMmRiYjMuLjkxODI0YzAw
NmYyNGExNzY2ZjAwMzc5YWE5ZjBhMTg3MzFlY2UzM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlckZldGNoVGFzay5jcHAKQEAgLTI1NSw3ICsyNTUsNyBAQCB2b2lkIFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s6OnNvZnRVcGRhdGVJZk5lZWRlZCgpCiAgICAgaWYgKCFtX3Nob3VsZFNvZnRV
cGRhdGUpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoYXV0byogcmVnaXN0cmF0aW9uID0gbV9s
b2FkZXIuY29ubmVjdGlvblRvV2ViUHJvY2VzcygpLnN3Q29ubmVjdGlvbigpLnNlcnZlcigpLmdl
dFJlZ2lzdHJhdGlvbihtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKSkKLSAg
ICAgICAgcmVnaXN0cmF0aW9uLT5zY2hlZHVsZVNvZnRVcGRhdGUobV9sb2FkZXIuaXNBcHBCb3Vu
ZCgpID8gV2ViQ29yZTo6SXNBcHBCb3VuZDo6WWVzIDogV2ViQ29yZTo6SXNBcHBCb3VuZDo6Tm8p
OworICAgICAgICByZWdpc3RyYXRpb24tPnNjaGVkdWxlU29mdFVwZGF0ZShtX2xvYWRlci5pc0Fw
cEJvdW5kKCkgPyBXZWJDb3JlOjpJc0FwcEluaXRpYXRlZDo6WWVzIDogV2ViQ29yZTo6SXNBcHBJ
bml0aWF0ZWQ6Ok5vKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNv
ZnRVcGRhdGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAppbmRleCA0ZmYxYjFmZDIz
ZjY2YWYzMTI5OWNjOGJiNWNiMmNlYzVjZWYwYTVjLi4wNGFlZDkzODU3OWQ3MzVlZTA4MzNmOTBl
ZDMzMzRjN2ZlNDZjY2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29m
dFVwZGF0ZUxvYWRlci5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJT
b2Z0VXBkYXRlTG9hZGVyOjpsb2FkRnJvbU5ldHdvcmsoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24s
IFJlcwogICAgIG1fbmV0d29ya0xvYWQtPnN0YXJ0KCk7CiAKICNpZiBQTEFURk9STShDT0NPQSkK
LSAgICBzZXNzaW9uLmFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhKCkuc2V0RGlkUGVyZm9y
bVNvZnRVcGRhdGUoKTsKKyAgICBzZXNzaW9uLmFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSgp
LnNldERpZFBlcmZvcm1Tb2Z0VXBkYXRlKCk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCBjM2E3YjNkZjcwYzM3ZTNkYmU0ZmEzMWVmNjYw
YjYwNzA4ZjM3MmUzLi4yYTY0M2I4YTQ0YTczYWJiMGE0MTA2MTVkMzFlOWRiNTU2MzBkY2ViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtMTQ3LDcgKzE0Nyw3
IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpjb250cm9sQ2xpZW50KFNlcnZpY2VXb3Jr
ZXJDbGllbnRJZGVudGlmaWVyIGNsaWVudElkCiAgICAgICAgIHVucmVnaXN0ZXJTZXJ2aWNlV29y
a2VyQ2xpZW50KGNsaWVudElkZW50aWZpZXIpOwogICAgIH0pOwogCi0gICAgU2VydmljZVdvcmtl
ckNsaWVudERhdGEgZGF0YSB7IGNsaWVudElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJDbGllbnRU
eXBlOjpXaW5kb3csIFNlcnZpY2VXb3JrZXJDbGllbnRGcmFtZVR5cGU6Ok5vbmUsIHJlcXVlc3Qu
dXJsKCksIHJlcXVlc3QuaXNBcHBCb3VuZCgpID8gV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNB
cHBCb3VuZDo6WWVzIDogV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDo6Tm8gfTsK
KyAgICBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSBkYXRhIHsgY2xpZW50SWRlbnRpZmllciwgU2Vy
dmljZVdvcmtlckNsaWVudFR5cGU6OldpbmRvdywgU2VydmljZVdvcmtlckNsaWVudEZyYW1lVHlw
ZTo6Tm9uZSwgcmVxdWVzdC51cmwoKSwgcmVxdWVzdC5pc0FwcEluaXRpYXRlZCgpID8gV2ViQ29y
ZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6OlllcyA6IFdlYkNvcmU6Okxhc3ROYXZp
Z2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpObyB9OwogICAgIHJlZ2lzdGVyU2VydmljZVdvcmtlckNs
aWVudChTZWN1cml0eU9yaWdpbkRhdGEgeyByZWdpc3RyYXRpb24ua2V5KCkudG9wT3JpZ2luKCkg
fSwgV1RGTW92ZShkYXRhKSwgcmVnaXN0cmF0aW9uLmlkZW50aWZpZXIoKSwgcmVxdWVzdC5odHRw
VXNlckFnZW50KCkpOwogfQogCkBAIC0xODgsNyArMTg4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s+IFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y3JlYXRlRmV0Y2hU
YXNrKE4KICAgICBib29sIHNob3VsZFNvZnRVcGRhdGUgPSByZWdpc3RyYXRpb24gJiYgcmVnaXN0
cmF0aW9uLT5zaG91bGRTb2Z0VXBkYXRlKGxvYWRlci5wYXJhbWV0ZXJzKCkub3B0aW9ucyk7CiAg
ICAgaWYgKHdvcmtlci0+c2hvdWxkU2tpcEZldGNoRXZlbnQoKSkgewogICAgICAgICBpZiAoc2hv
dWxkU29mdFVwZGF0ZSkKLSAgICAgICAgICAgIHJlZ2lzdHJhdGlvbi0+c2NoZWR1bGVTb2Z0VXBk
YXRlKGxvYWRlci5pc0FwcEJvdW5kKCkgPyBXZWJDb3JlOjpJc0FwcEJvdW5kOjpZZXMgOiBXZWJD
b3JlOjpJc0FwcEJvdW5kOjpObyk7CisgICAgICAgICAgICByZWdpc3RyYXRpb24tPnNjaGVkdWxl
U29mdFVwZGF0ZShsb2FkZXIuaXNBcHBCb3VuZCgpID8gV2ViQ29yZTo6SXNBcHBJbml0aWF0ZWQ6
OlllcyA6IFdlYkNvcmU6OklzQXBwSW5pdGlhdGVkOjpObyk7CiAKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmNwcAppbmRleCAzZmEwZTk5NzBmMjU1NWNjODA0YjkyNzRiMGY3ZWRkMTk1NzI1
NTJhLi5lOTAyZWMwNzU4MDUwZTk5ZjYwMTdkYmY3MTBkYTgzNTU5YWRjMzZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtOTIs
OSArOTIsOSBAQCB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6aW5zdGFsbFNl
cnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFNlcnZpY2VXbwogICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpJbnN0YWxsU2VydmljZVdvcmtlciB7IGRhdGEs
IHVzZXJBZ2VudCB9KTsKIH0KIAotdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
OnVwZGF0ZUFwcEJvdW5kVmFsdWUoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIFdlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgbGFzdE5hdmln
YXRpb25XYXNBcHBCb3VuZCkKK3ZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp1
cGRhdGVBcHBJbml0aWF0ZWRWYWx1ZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgbGFz
dE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlVwZGF0ZUFwcEJvdW5kVmFsdWUoc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6VXBkYXRlQXBwSW5pdGlhdGVkVmFs
dWUoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVk
KSk7CiB9CiAKIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpmaXJlSW5zdGFs
bEV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCmluZGV4
IGIwMTE0ZDJmOGQ3NjExN2JkOTYwODk2NTk2MDkzZDQ1ODdhYTAxZWMuLmFlM2ExYTU2ODZmYWE1
YjdlZmY0NGRmODA1MzdlYWY3N2YxOGZlNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTg2LDcgKzg2LDcgQEAgcHJpdmF0ZToKIAog
ICAgIC8vIE1lc3NhZ2VzIHRvIHRoZSBTVyBob3N0IFdlYlByb2Nlc3MKICAgICB2b2lkIGluc3Rh
bGxTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVB
cHBCb3VuZFZhbHVlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpM
YXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUFwcEluaXRp
YXRlZFZhbHVlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpMYXN0
TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCkgZmluYWw7CiAgICAgdm9pZCBmaXJlSW5zdGFsbEV2
ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGZp
cmVBY3RpdmF0ZUV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsK
ICAgICB2b2lkIHRlcm1pbmF0ZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
cikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNw
cAppbmRleCBlMWJkZjY5ZDY1NDc1MDBlMmUzYjcwMzg2OGVlMTNmZDEwNzQ0NDY4Li5iYTY2OTQz
MWQwODIwNGRiZGM0MzNkODFlYzM4MjhlZDRkMDAwOWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgc3RhdGljIGlu
bGluZSBSZXNvdXJjZVJlcXVlc3QgY29uc3RydWN0UmV2YWxpZGF0aW9uUmVxdWVzdChjb25zdCBL
ZXkmIGtleSwgY29uc3QKICAgICByZXZhbGlkYXRpb25SZXF1ZXN0LnNldEZpcnN0UGFydHlGb3JD
b29raWVzKHN1YlJlc291cmNlSW5mby5maXJzdFBhcnR5Rm9yQ29va2llcygpKTsKICAgICByZXZh
bGlkYXRpb25SZXF1ZXN0LnNldElzU2FtZVNpdGUoc3ViUmVzb3VyY2VJbmZvLmlzU2FtZVNpdGUo
KSk7CiAgICAgcmV2YWxpZGF0aW9uUmVxdWVzdC5zZXRJc1RvcFNpdGUoc3ViUmVzb3VyY2VJbmZv
LmlzVG9wU2l0ZSgpKTsKLSAgICByZXZhbGlkYXRpb25SZXF1ZXN0LnNldElzQXBwQm91bmQoc3Vi
UmVzb3VyY2VJbmZvLmlzQXBwQm91bmQoKSk7CisgICAgcmV2YWxpZGF0aW9uUmVxdWVzdC5zZXRJ
c0FwcEluaXRpYXRlZChzdWJSZXNvdXJjZUluZm8uaXNBcHBJbml0aWF0ZWQoKSk7CiAKICAgICBp
ZiAoIWtleS5wYXJ0aXRpb24oKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldmFsaWRhdGlvblJlcXVl
c3Quc2V0Q2FjaGVQYXJ0aXRpb24oa2V5LnBhcnRpdGlvbigpKTsKQEAgLTM2OSw3ICszNjksNyBA
QCB2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnJlZ2lzdGVyTG9hZChjb25zdCBHbG9iYWxG
cmFtZUlEJiBmcmFtZUlELCBjb25zdCBSZQogICAgICAgICBtX3BlbmRpbmdGcmFtZUxvYWRzLmFk
ZChmcmFtZUlELCBwZW5kaW5nRnJhbWVMb2FkLmNvcHlSZWYoKSk7CiAKICAgICAgICAgLy8gUmV0
cmlldmUgdGhlIHN1YnJlc291cmNlcyBlbnRyeSBpZiBpdCBleGlzdHMgdG8gc3RhcnQgc3BlY3Vs
YXRpdmUgcmV2YWxpZGF0aW9uIGFuZCB0byB1cGRhdGUgaXQuCi0gICAgICAgIHJldHJpZXZlU3Vi
cmVzb3VyY2VzRW50cnkocmVzb3VyY2VLZXksIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KCp0aGlzKSwgZnJhbWVJRCwgcGVuZGluZ0ZyYW1lTG9hZCA9IFdURk1vdmUocGVuZGluZ0ZyYW1l
TG9hZCksIHJlcXVlc3RJc0FwcEJvdW5kID0gcmVxdWVzdC5pc0FwcEJvdW5kKCksIGlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW5dKHN0ZDo6dW5pcXVlX3B0cjxTdWJyZXNvdXJjZXNFbnRyeT4g
ZW50cnkpIHsKKyAgICAgICAgcmV0cmlldmVTdWJyZXNvdXJjZXNFbnRyeShyZXNvdXJjZUtleSwg
W3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBmcmFtZUlELCBwZW5kaW5nRnJh
bWVMb2FkID0gV1RGTW92ZShwZW5kaW5nRnJhbWVMb2FkKSwgcmVxdWVzdElzQXBwQm91bmQgPSBy
ZXF1ZXN0LmlzQXBwSW5pdGlhdGVkKCksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW5dKHN0
ZDo6dW5pcXVlX3B0cjxTdWJyZXNvdXJjZXNFbnRyeT4gZW50cnkpIHsKICAgICAgICAgICAgIGlm
ICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC01OTYsNyArNTk2LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpzdGFydFNwZWN1bGF0aXZlUmV2YWxpZGF0
aW9uKGNvbnN0IEdsb2JhbEZyYW1lSUQmIGYKIHsKICAgICBmb3IgKGF1dG8mIHN1YnJlc291cmNl
SW5mbyA6IGVudHJ5LnN1YnJlc291cmNlcygpKSB7CiAgICAgICAgIGF1dG8mIGtleSA9IHN1YnJl
c291cmNlSW5mby5rZXkoKTsKLSAgICAgICAgc3VicmVzb3VyY2VJbmZvLnNldElzQXBwQm91bmQo
cmVxdWVzdElzQXBwQm91bmQpOworICAgICAgICBzdWJyZXNvdXJjZUluZm8uc2V0SXNBcHBJbml0
aWF0ZWQocmVxdWVzdElzQXBwQm91bmQpOwogICAgICAgICBpZiAoIXN1YnJlc291cmNlSW5mby5p
c1RyYW5zaWVudCgpKQogICAgICAgICAgICAgcHJlbG9hZEVudHJ5KGtleSwgc3VicmVzb3VyY2VJ
bmZvLCBmcmFtZUlELCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKICAgICAgICAgZWxz
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmgKaW5kZXggNjBhNDA2M2IyMzQ1
ZDkyNWUyYzc4Nzg0NTk5MjBlMTBmMjc4MjMwZS4uNDBjOWIyMDE3ODhmODE4YTU3OGI4M2YxYWUz
NGI3ZmNmNWU0MTNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuaApAQCAt
NTksOCArNTksOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzRmlyc3RQYXJ0eSgpIGNvbnN0Owog
Ci0gICAgYm9vbCBpc0FwcEJvdW5kKCkgY29uc3QgeyByZXR1cm4gbV9pc0FwcEJvdW5kOyB9Ci0g
ICAgdm9pZCBzZXRJc0FwcEJvdW5kKGJvb2wgaXNBcHBCb3VuZCkgeyBtX2lzQXBwQm91bmQgPSBp
c0FwcEJvdW5kOyB9CisgICAgYm9vbCBpc0FwcEluaXRpYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNBcHBJbml0aWF0ZWQ7IH0KKyAgICB2b2lkIHNldElzQXBwSW5pdGlhdGVkKGJvb2wgaXNBcHBJ
bml0aWF0ZWQpIHsgbV9pc0FwcEluaXRpYXRlZCA9IGlzQXBwSW5pdGlhdGVkOyB9CiAKIHByaXZh
dGU6CiAgICAgS2V5IG1fa2V5OwpAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgogICAgIFdhbGxU
aW1lIG1fZmlyc3RTZWVuOwogICAgIGJvb2wgbV9pc1RyYW5zaWVudCB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtX2lzU2FtZVNpdGUgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9pc0FwcEJvdW5kIHsgZmFs
c2UgfTsKKyAgICBib29sIG1faXNBcHBJbml0aWF0ZWQgeyB0cnVlIH07CiAgICAgVVJMIG1fZmly
c3RQYXJ0eUZvckNvb2tpZXM7CiAgICAgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCBtX3JlcXVlc3RI
ZWFkZXJzOwogICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5IG1fcHJpb3JpdHk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRh
VGFza0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
RGF0YVRhc2tDb2NvYS5tbQppbmRleCBmNzRiMzEyOWZlNzJiYzlmY2U2MjM2MDYwNmQzYjM5YjA3
MTJjZjg5Li5kM2ZmOGViZWI2Nzg1NTI0N2Y0YzI1NjNjODIwOWJlY2M1OGQ4YmIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0Nv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0Rh
dGFUYXNrQ29jb2EubW0KQEAgLTM0MSw5ICszNDEsNyBAQCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6
TmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRh
VAogICAgIFJldGFpblB0cjxOU011dGFibGVVUkxSZXF1ZXN0PiBtdXRhYmxlUmVxdWVzdCA9IGFk
b3B0TlMoW25zUmVxdWVzdC5nZXQoKSBtdXRhYmxlQ29weV0pOwogCiAjaWYgRU5BQkxFKEFQUF9Q
UklWQUNZX1JFUE9SVCkKLSAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgot
ICAgIG11dGFibGVSZXF1ZXN0LmdldCgpLl9pc05vbkFwcEluaXRpYXRlZCA9ICFyZXF1ZXN0Lmlz
QXBwQm91bmQoKTsKLSAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKKyAgICBt
dXRhYmxlUmVxdWVzdC5nZXQoKS5hdHRyaWJ1dGlvbiA9IHJlcXVlc3QuaXNBcHBJbml0aWF0ZWQo
KSA/IE5TVVJMUmVxdWVzdEF0dHJpYnV0aW9uRGV2ZWxvcGVyIDogTlNVUkxSZXF1ZXN0QXR0cmli
dXRpb25Vc2VyOwogI2VuZGlmCiAKICAgICBpZiAocGFyYW1ldGVycy5wY21EYXRhQ2FycmllZCkK
QEAgLTM1MSw3ICszNDksOSBAQCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNr
Q29jb2EoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVAogCiAgICAgbnNSZXF1
ZXN0ID0gbXV0YWJsZVJlcXVlc3Q7CiAKLSAgICBtX3Nlc3Npb24tPmFwcEJvdW5kTmF2aWdhdGlv
blRlc3RpbmdEYXRhKCkudXBkYXRlQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEocmVxdWVz
dCwgcmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygpLmlzRW1wdHkoKSA/IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluKHJlcXVlc3QudXJsKCkpIDogV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4ocmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygpKSk7CisjaWYgRU5BQkxFKEFQUF9QUklW
QUNZX1JFUE9SVCkKKyAgICBtX3Nlc3Npb24tPmFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSgp
LmRpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0KG5zUmVxdWVzdC5nZXQoKS5hdHRyaWJ1dGlvbiA9
PSBOU1VSTFJlcXVlc3RBdHRyaWJ1dGlvbkRldmVsb3Blcik7CisjZW5kaWYKIAogICAgIGFwcGx5
U25pZmZpbmdQb2xpY2llc0FuZEJpbmRSZXF1ZXN0VG9JbmZlcmZhY2VJZk5lZWRlZChuc1JlcXVl
c3QsIHBhcmFtZXRlcnMuY29udGVudFNuaWZmaW5nUG9saWN5ID09IFdlYkNvcmU6OkNvbnRlbnRT
bmlmZmluZ1BvbGljeTo6U25pZmZDb250ZW50ICYmICF1cmwuaXNMb2NhbEZpbGUoKSwgcGFyYW1l
dGVycy5jb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSA9PSBXZWJDb3JlOjpDb250ZW50RW5j
b2RpbmdTbmlmZmluZ1BvbGljeTo6U25pZmYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9tZXNzYWdlcy5weQppbmRleCAwNDM2YjAzNmE5OWEyODE1NzJhMGUxZWM3NTU5ZmY2NDNkMzRj
ZDE4Li42N2NjNjhmYTc3M2FiOWI1NjA2YzFiZTEyYjMzYjkwZDYxMzQ2ZmNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTcwMiw3ICs3MDIsNyBAQCBkZWYg
aGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dlYkNvcmU6Okluc3BlY3Rvck92ZXJs
YXk6OkhpZ2hsaWdodCc6IFsnPFdlYkNvcmUvSW5zcGVjdG9yT3ZlcmxheS5oPiddLAogICAgICAg
ICAnV2ViQ29yZTo6S2V5ZnJhbWVWYWx1ZUxpc3QnOiBbJzxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIu
aD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OktleXByZXNzQ29tbWFuZCc6IFsnPFdlYkNvcmUvS2V5
Ym9hcmRFdmVudC5oPiddLAotICAgICAgICAnV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBC
b3VuZCc6IFsnPFdlYkNvcmUvU2VydmljZVdvcmtlckNsaWVudERhdGEuaD4nXSwKKyAgICAgICAg
J1dlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkJzogWyc8V2ViQ29yZS9TZXJ2
aWNlV29ya2VyQ2xpZW50RGF0YS5oPiddLAogICAgICAgICAnV2ViQ29yZTo6TGVnYWN5Q0RNU2Vz
c2lvbkNsaWVudDo6TWVkaWFLZXlFcnJvckNvZGUnOiBbJzxXZWJDb3JlL0xlZ2FjeUNETVNlc3Np
b24uaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkxvY2tCYWNrRm9yd2FyZExpc3QnOiBbJzxXZWJD
b3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6Ok1lc3NhZ2VQb3J0
Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eSc6IFsnPFdlYkNvcmUvTWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXIuaD4nXSwKQEAgLTc1Nyw4ICs3NTcsOCBAQCBkZWYgaGVhZGVyc19mb3JfdHlw
ZSh0eXBlKToKICAgICAgICAgJ1dlYkNvcmU6OldpbGxDb250aW51ZUxvYWRpbmcnOiBbJzxXZWJD
b3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlNlbGVjdGlvbkdl
b21ldHJ5JzogWyciRWRpdG9yU3RhdGUuaCInXSwKICAgICAgICAgJ1dlYktpdDo6QWN0aXZpdHlT
dGF0ZUNoYW5nZUlEJzogWyciRHJhd2luZ0FyZWFJbmZvLmgiJ10sCi0gICAgICAgICdXZWJLaXQ6
OkFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhJzogWyciTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4uaCInXSwKICAgICAgICAgJ1dlYktpdDo6QWxsb3dPdmVyd3JpdGUnOiBbJyJEb3dubG9h
ZElELmgiJ10sCisgICAgICAgICdXZWJLaXQ6OkFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSc6
IFsnIkFwcFByaXZhY3lSZXBvcnQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6QmFja0ZvcndhcmRM
aXN0SXRlbVN0YXRlJzogWyciU2Vzc2lvblN0YXRlLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkNh
bGxEb3dubG9hZERpZFN0YXJ0JzogWyciRG93bmxvYWRNYW5hZ2VyLmgiJ10sCiAgICAgICAgICdX
ZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXInOiBbJyJDb250ZW50V29ybGRTaGFyZWQuaCIn
XSwKQEAgLTc2Niw3ICs3NjYsNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAg
ICAgJ1dlYktpdDo6RmluZE9wdGlvbnMnOiBbJyJXZWJGaW5kT3B0aW9ucy5oIiddLAogICAgICAg
ICAnV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplclN0YXRlJzogWyciR2VzdHVyZVR5cGVzLmgiJ10s
CiAgICAgICAgICdXZWJLaXQ6Okdlc3R1cmVUeXBlJzogWyciR2VzdHVyZVR5cGVzLmgiJ10sCi0g
ICAgICAgICdXZWJLaXQ6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQnOiBbJyJOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbi5oIiddLAorICAgICAgICAnV2ViS2l0OjpMYXN0TmF2aWdhdGlvbldh
c0FwcEluaXRpYXRlZCc6IFsnIkFwcFByaXZhY3lSZXBvcnQuaCInXSwKICAgICAgICAgJ1dlYktp
dDo6TGF5ZXJIb3N0aW5nQ29udGV4dElEJzogWyciTGF5ZXJIb3N0aW5nQ29udGV4dC5oIiddLAog
ICAgICAgICAnV2ViS2l0OjpMYXllckhvc3RpbmdNb2RlJzogWyciTGF5ZXJUcmVlQ29udGV4dC5o
IiddLAogICAgICAgICAnV2ViS2l0OjpQYWdlU3RhdGUnOiBbJyJTZXNzaW9uU3RhdGUuaCInXSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcFByaXZhY3lSZXBvcnQuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FwcFByaXZhY3lSZXBvcnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODA1ZjQx
MjAxODJiNGU2YWE1MGVlNzJiMDc3MGQzZTdmZDIxODdkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQXBwUHJpdmFjeVJlcG9ydC5oCkBAIC0wLDAgKzEsOTIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXIuaCIKKyNp
bmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkRlY29kZXIuaCIKKyNpbmNsdWRl
ICJFbmNvZGVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2VudW0gY2xhc3MgTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0
ZWQgOiBib29sIHsgTm8sIFllcyB9OworCisjaWYgUExBVEZPUk0oQ09DT0EpCitzdHJ1Y3QgQXBw
UHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhIHsKKworICAgIHZvaWQgc2V0RGlkUGVyZm9ybVNvZnRV
cGRhdGUoKQorICAgIHsKKyAgICAgICAgZGlkUGVyZm9ybVNvZnRVcGRhdGUgPSB0cnVlOworICAg
IH0KKworICAgIHZvaWQgY2xlYXJBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoKQorICAgIHsK
KyAgICAgICAgaGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcgPSBmYWxzZTsKKyAg
ICAgICAgaGFzTG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcgPSBmYWxzZTsKKyAg
ICAgICAgZGlkUGVyZm9ybVNvZnRVcGRhdGUgPSBmYWxzZTsKKyAgICB9CisKKyAgICB2b2lkIGRp
ZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0KGJvb2wgaXNBcHBJbml0aWF0ZWQpCisgICAgeworICAg
ICAgICBpc0FwcEluaXRpYXRlZCA/IGhhc0xvYWRlZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5n
ID0gdHJ1ZSA6IGhhc0xvYWRlZE5vbkFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nID0gdHJ1ZTsK
KyAgICB9CisKKyAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0Cisg
ICAgeworICAgICAgICBlbmNvZGVyIDw8IGhhc0xvYWRlZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0
aW5nOworICAgICAgICBlbmNvZGVyIDw8IGhhc0xvYWRlZE5vbkFwcEluaXRpYXRlZFJlcXVlc3RU
ZXN0aW5nOworICAgICAgICBlbmNvZGVyIDw8IGRpZFBlcmZvcm1Tb2Z0VXBkYXRlOworICAgIH0K
KworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YT4g
ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gaGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3Rpbmc7CisgICAgICAgIGRl
Y29kZXIgPj4gaGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3Rpbmc7CisgICAgICAgIGlm
ICghaGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcpCisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaGFzTG9hZGVk
Tm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3Rpbmc7CisgICAgICAgIGRlY29kZXIgPj4gaGFzTG9h
ZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3Rpbmc7CisgICAgICAgIGlmICghaGFzTG9hZGVk
Tm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZGlkUGVyZm9ybVNvZnRVcGRh
dGU7CisgICAgICAgIGRlY29kZXIgPj4gZGlkUGVyZm9ybVNvZnRVcGRhdGU7CisgICAgICAgIGlm
ICghZGlkUGVyZm9ybVNvZnRVcGRhdGUpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworCisgICAgICAgIHJldHVybiB7eyAqaGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3Rp
bmcsICpoYXNMb2FkZWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZywgKmRpZFBlcmZvcm1T
b2Z0VXBkYXRlIH19OworICAgIH0KKworICAgIGJvb2wgaGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVx
dWVzdFRlc3RpbmcgeyBmYWxzZSB9OworICAgIGJvb2wgaGFzTG9hZGVkTm9uQXBwSW5pdGlhdGVk
UmVxdWVzdFRlc3RpbmcgeyBmYWxzZSB9OworICAgIGJvb2wgZGlkUGVyZm9ybVNvZnRVcGRhdGUg
eyBmYWxzZSB9OworfTsKKyNlbmRpZgorCit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YS5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzdkOGJmYzU4YTM3
MWZjMmRkOTQwMzc2MWJiZmQxZWVmNDExZmIwNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YS5oCkBAIC0wLDAgKzEsOTMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXIu
aCIKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkRlY29kZXIuaCIKKyNp
bmNsdWRlICJFbmNvZGVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitlbnVtIGNsYXNzIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIDogYm9vbCB7
IE5vLCBZZXMgfTsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorc3RydWN0IEFwcFByaXZhY3lSZXBv
cnRUZXN0aW5nRGF0YSB7CisKKyAgICB2b2lkIHNldERpZFBlcmZvcm1Tb2Z0VXBkYXRlKCkKKyAg
ICB7CisgICAgICAgIGRpZFBlcmZvcm1Tb2Z0VXBkYXRlID0gdHJ1ZTsKKyAgICB9CisKKyAgICB2
b2lkIGNsZWFyQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKCkKKyAgICB7CisgICAgICAgIGhh
c0xvYWRlZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nID0gZmFsc2U7CisgICAgICAgIGhhc0xv
YWRlZE5vbkFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nID0gZmFsc2U7CisgICAgICAgIGRpZFBl
cmZvcm1Tb2Z0VXBkYXRlID0gZmFsc2U7CisgICAgfQorCisgICAgdm9pZCBkaWRMb2FkQXBwSW5p
dGlhdGVkUmVxdWVzdChib29sIGlzQXBwSW5pdGlhdGVkKQorICAgIHsKKyAgICAgICAgaXNBcHBJ
bml0aWF0ZWQgPyBoYXNMb2FkZWRBcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZyA9IHRydWUgOiBo
YXNMb2FkZWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZyA9IHRydWU7CisgICAgfQorCisg
ICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAg
ICAgZW5jb2RlciA8PCBoYXNMb2FkZWRBcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZzsKKyAgICAg
ICAgZW5jb2RlciA8PCBoYXNMb2FkZWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZzsKKyAg
ICAgICAgZW5jb2RlciA8PCBkaWRQZXJmb3JtU29mdFVwZGF0ZTsKKyAgICB9CisKKyAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGE+IGRlY29kZShJUEM6
OkRlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGhh
c0xvYWRlZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nOworICAgICAgICBkZWNvZGVyID4+IGhh
c0xvYWRlZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nOworICAgICAgICBpZiAoIWhhc0xvYWRl
ZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGhhc0xvYWRlZE5vbkFwcEluaXRp
YXRlZFJlcXVlc3RUZXN0aW5nOworICAgICAgICBkZWNvZGVyID4+IGhhc0xvYWRlZE5vbkFwcElu
aXRpYXRlZFJlcXVlc3RUZXN0aW5nOworICAgICAgICBpZiAoIWhhc0xvYWRlZE5vbkFwcEluaXRp
YXRlZFJlcXVlc3RUZXN0aW5nKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGRpZFBlcmZvcm1Tb2Z0VXBkYXRlOworICAgICAg
ICBkZWNvZGVyID4+IGRpZFBlcmZvcm1Tb2Z0VXBkYXRlOworICAgICAgICBpZiAoIWRpZFBlcmZv
cm1Tb2Z0VXBkYXRlKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAg
ICByZXR1cm4ge3sgKmhhc0xvYWRlZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nLCAqaGFzTG9h
ZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcsICpkaWRQZXJmb3JtU29mdFVwZGF0ZSB9
fTsKKyAgICB9CisKKyAgICBib29sIGhhc0xvYWRlZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5n
IHsgZmFsc2UgfTsKKyAgICBib29sIGhhc0xvYWRlZE5vbkFwcEluaXRpYXRlZFJlcXVlc3RUZXN0
aW5nIHsgZmFsc2UgfTsKKyAgICBib29sIGRpZFBlcmZvcm1Tb2Z0VXBkYXRlIHsgZmFsc2UgfTsK
K307CisjZW5kaWYKKworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
Y29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCmluZGV4IDk5MzRiNjExYjU5YmNlYTE2
ZTFkOTY4NmNjNDYxNDNjODMyNGI1MTAuLmFiZGZiMzkyZjFhN2U4NTE4YTFiMzdhMTA3Yjk4YmM4
YjVjYjNiMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVB
cmd1bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dl
YkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCkBAIC02MTAsNyArNjEwLDcgQEAgdm9pZCBBcmd1
bWVudENvZGVyPFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD46OmVuY29kZVBsYXRmb3JtRGF0YShF
bmNvZGVyJiBlbmNvZGUKICAgICBJUEM6OmVuY29kZShlbmNvZGVyLCByZXF1ZXN0VG9TZXJpYWxp
emUuZ2V0KCkpOwogCiAgICAgZW5jb2RlciA8PCByZXNvdXJjZVJlcXVlc3QucmVxdWVzdGVyKCk7
Ci0gICAgZW5jb2RlciA8PCByZXNvdXJjZVJlcXVlc3QuaXNBcHBCb3VuZCgpOworICAgIGVuY29k
ZXIgPDwgcmVzb3VyY2VSZXF1ZXN0LmlzQXBwSW5pdGlhdGVkKCk7CiB9CiAKIGJvb2wgQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVj
b2RlciYgZGVjb2RlciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3Qp
CkBAIC02MzIsMTMgKzYzMiwxMyBAQCBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImIGRlY29kZQogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocmVxdWVzdGVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
Ym9vbCBpc0FwcEJvdW5kOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXNBcHBCb3VuZCkpCisg
ICAgYm9vbCBpc0FwcEluaXRpYXRlZDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzQXBwSW5p
dGlhdGVkKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmVzb3VyY2VSZXF1ZXN0ID0g
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QtPmdldCgpKTsKICAgICByZXNvdXJjZVJl
cXVlc3Quc2V0UmVxdWVzdGVyKHJlcXVlc3Rlcik7Ci0gICAgcmVzb3VyY2VSZXF1ZXN0LnNldElz
QXBwQm91bmQoaXNBcHBCb3VuZCk7CisgICAgcmVzb3VyY2VSZXF1ZXN0LnNldElzQXBwSW5pdGlh
dGVkKGlzQXBwSW5pdGlhdGVkKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmgKaW5kZXggZTM0YWM1
ZTU3ZjQxMWU4YTZkMzAwMmE1NjlhMDMxODA3Y2NmNDQwMC4uNDIzMmUwY2UyM2I0MjVhOWFjM2Uy
OWQyOTQ0MGFjMmNiNDg1MTY1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oCkBAIC0zNSw3MiArMzUsNiBAQAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIGVudW0gY2xhc3MgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gOiBib29sIHsg
Tm8sIFllcyB9OwotZW51bSBjbGFzcyBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIDogYm9vbCB7
IE5vLCBZZXMgfTsKLQotdXNpbmcgQ29udGV4dERvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluOwotdXNpbmcgUmVxdWVzdERvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
OwotCi0jaWYgUExBVEZPUk0oQ09DT0EpCi1zdHJ1Y3QgQXBwQm91bmROYXZpZ2F0aW9uVGVzdGlu
Z0RhdGEgewotCi0gICAgdm9pZCBzZXREaWRQZXJmb3JtU29mdFVwZGF0ZSgpCi0gICAgewotICAg
ICAgICBkaWRQZXJmb3JtU29mdFVwZGF0ZSA9IHRydWU7Ci0gICAgfQotICAgIAotICAgIHZvaWQg
Y2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhVGVzdGluZygpCi0gICAgewotICAgICAgICBoYXNM
b2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nID0gZmFsc2U7Ci0gICAgICAgIGhhc0xvYWRlZE5v
bkFwcEJvdW5kUmVxdWVzdFRlc3RpbmcgPSBmYWxzZTsKLSAgICAgICAgZGlkUGVyZm9ybVNvZnRV
cGRhdGUgPSBmYWxzZTsKLSAgICAgICAgY29udGV4dERhdGEuY2xlYXIoKTsKLSAgICB9Ci0KLSAg
ICB2b2lkIHVwZGF0ZUFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBj
b250ZXh0RG9tYWluKQotICAgIHsKLSAgICAgICAgcmVxdWVzdC5pc0FwcEJvdW5kKCkgPyBoYXNM
b2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nID0gdHJ1ZSA6IGhhc0xvYWRlZE5vbkFwcEJvdW5k
UmVxdWVzdFRlc3RpbmcgPSB0cnVlOwotICAgICAgICBjb250ZXh0RGF0YS5hZGQoV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4ocmVxdWVzdC51cmwoKSksIGNvbnRleHREb21haW4pOwotICAgIH0K
LQotICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKLSAgICB7Ci0g
ICAgICAgIGVuY29kZXIgPDwgaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZzsKLSAgICAg
ICAgZW5jb2RlciA8PCBoYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nOwotICAgICAg
ICBlbmNvZGVyIDw8IGRpZFBlcmZvcm1Tb2Z0VXBkYXRlOwotICAgICAgICBlbmNvZGVyIDw8IGNv
bnRleHREYXRhOwotICAgIH0KLQotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEFwcEJvdW5kTmF2
aWdhdGlvblRlc3RpbmdEYXRhPiBkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQotICAgIHsK
LSAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBoYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0
aW5nOwotICAgICAgICBkZWNvZGVyID4+IGhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3Rpbmc7
Ci0gICAgICAgIGlmICghaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZykKLSAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBo
YXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nOwotICAgICAgICBkZWNvZGVyID4+IGhh
c0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3Rpbmc7Ci0gICAgICAgIGlmICghaGFzTG9hZGVk
Tm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZykKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7Ci0gICAgICAgIAotICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGRpZFBlcmZvcm1Tb2Z0
VXBkYXRlOwotICAgICAgICBkZWNvZGVyID4+IGRpZFBlcmZvcm1Tb2Z0VXBkYXRlOwotICAgICAg
ICBpZiAoIWRpZFBlcmZvcm1Tb2Z0VXBkYXRlKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKLQotICAgICAgICBzdGQ6Om9wdGlvbmFsPEhhc2hNYXA8UmVxdWVzdERvbWFpbiwgQ29u
dGV4dERvbWFpbj4+IGNvbnRleHREYXRhOwotICAgICAgICBkZWNvZGVyID4+IGNvbnRleHREYXRh
OwotICAgICAgICBpZiAoIWNvbnRleHREYXRhKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKLQotICAgICAgICByZXR1cm4ge3sgKmhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3Rp
bmcsICpoYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nLCAqZGlkUGVyZm9ybVNvZnRV
cGRhdGUsIFdURk1vdmUoKmNvbnRleHREYXRhKSB9fTsKLSAgICB9Ci0KLSAgICBib29sIGhhc0xv
YWRlZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcgeyBmYWxzZSB9OwotICAgIGJvb2wgaGFzTG9hZGVk
Tm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZyB7IGZhbHNlIH07Ci0gICAgYm9vbCBkaWRQZXJmb3Jt
U29mdFVwZGF0ZSB7IGZhbHNlIH07Ci0gICAgSGFzaE1hcDxSZXF1ZXN0RG9tYWluLCBDb250ZXh0
RG9tYWluPiBjb250ZXh0RGF0YTsKLX07Ci0jZW5kaWYKIAogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IDZhMjUyMzFm
NmZjMjU4YzFlMzhhYTA1Y2UxMmFhNDQ0ZmQ3MDk2YzguLjJiYWVmMDZjYWNhYjNlNTE1ZTcwNDZk
NTE3YTUzNTZiZjAzYzNjMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC0xNzMsNyArMTczLDcgQEAgdm9pZCBXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
I2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBlbmNvZGVyIDw8IGxpbWl0c05hdmln
YXRpb25zVG9BcHBCb3VuZERvbWFpbnM7CiAjZW5kaWYKLSAgICBlbmNvZGVyIDw8IGxhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQ7CisgICAgZW5jb2RlciA8PCBsYXN0TmF2aWdhdGlvbldhc0FwcElu
aXRpYXRlZDsKICAgICBlbmNvZGVyIDw8IHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nOwogICAgIGVuY29kZXIgPDwgY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2U7CiAKQEAgLTU4MSw3
ICs1ODEsNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OgogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocGFyYW1ldGVycy5saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKSkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbmRpZgotICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cGFyYW1ldGVycy5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKSkKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHBhcmFtZXRlcnMubGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0
ZXJzLnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCBjNThlNmMyMjBi
MWEwMzc2NmFhZTU0ODQ3MmYxNmI3ODNlMDQwMmFjLi42NTE3ODkyMjEyYzIzOTllMWFhYzM2ZWE2
YjZmYzNiMTUyZmQ1ODlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0yNDIsNyArMjQyLDcgQEAgc3RydWN0IFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMgewogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBib29s
IGxpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMgeyBmYWxzZSB9OwogI2VuZGlmCi0g
ICAgYm9vbCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIHsgZmFsc2UgfTsKKyAgICBib29sIGxh
c3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIHsgdHJ1ZSB9OwogICAgIGJvb2wgY2FuVXNlQ3Jl
ZGVudGlhbFN0b3JhZ2UgeyB0cnVlIH07CiAKICAgICBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJk
UGFydHlDb29raWVCbG9ja2luZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyB7
IFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOjpObyB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggM2U3
NmI2YTA1MTk4NTU1NjQxMjFmNzQ5N2M3MTFlYTg4MWNiZTc5Yi4uMTQxOGUzZDUzOTI1NzI2NjVi
YTNhYTk3MTk2ZTRjYzg5NDA2NTM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0yNDExLDMyICsyNDExLDE5IEBAIHN0YXRpYyB2b2lk
IGNvbnZlcnRBbmRBZGRIaWdobGlnaHQoVmVjdG9yPFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4+
JiBidWZmZXJzLCBOCiAgICAgICAgIF9wYWdlLT5zd2l0Y2hGcm9tU3RhdGljRm9udFJlZ2lzdHJ5
VG9Vc2VyRm9udFJlZ2lzdHJ5KCk7CiB9CiAKLS0gKHZvaWQpX2FwcEJvdW5kTmF2aWdhdGlvbkRh
dGFGb3JEb21haW46KE5TU3RyaW5nICopZG9tYWluIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KShOU1N0cmluZyAqIGNvbnRleHQpKWNvbXBsZXRpb25IYW5kbGVyCistICh2b2lkKV9kaWRMb2Fk
QXBwSW5pdGlhdGVkUmVxdWVzdDoodm9pZCAoXikoQk9PTCByZXN1bHQpKWNvbXBsZXRpb25IYW5k
bGVyCiB7CiAgICAgVEhST1dfSUZfU1VTUEVOREVEOwotICAgIF9wYWdlLT5hcHBCb3VuZE5hdmln
YXRpb25EYXRhKFtyZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
Ojp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChkb21haW4pLCBjb21wbGV0aW9uSGFuZGxlciA9IG1h
a2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChhdXRvJiYgYXBwQm91bmREYXRhKSBtdXRh
YmxlIHsKLSAgICAgICAgaWYgKCFhcHBCb3VuZERhdGEuY29udGV4dERhdGEuY29udGFpbnMocmVn
aXN0cmFibGVEb21haW4pKSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuaWwpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoYXBwQm91bmREYXRhLmNvbnRleHREYXRhLmdldChyZWdpc3RyYWJsZURvbWFpbikuc3RyaW5n
KCkpOwotICAgIH0pOwotfQotCi0tICh2b2lkKV9kaWRMb2FkQXBwQm91bmRSZXF1ZXN0Oih2b2lk
ICheKShCT09MIHJlc3VsdCkpY29tcGxldGlvbkhhbmRsZXIKLXsKLSAgICBUSFJPV19JRl9TVVNQ
RU5ERUQ7Ci0gICAgX3BhZ2UtPmFwcEJvdW5kTmF2aWdhdGlvbkRhdGEoW2NvbXBsZXRpb25IYW5k
bGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8mJiBhcHBCb3VuZERh
dGEpIG11dGFibGUgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhcHBCb3VuZERhdGEuaGFz
TG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZyk7CisgICAgX3BhZ2UtPmFwcFByaXZhY3lSZXBv
cnRUZXN0aW5nRGF0YShbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlv
bkhhbmRsZXIpXSAoYXV0byYmIGFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSkgbXV0YWJsZSB7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YS5o
YXNMb2FkZWRBcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZyk7CiAgICAgfSk7CiB9CiAKLS0gKHZv
aWQpX2RpZExvYWROb25BcHBCb3VuZFJlcXVlc3Q6KHZvaWQgKF4pKEJPT0wgcmVzdWx0KSljb21w
bGV0aW9uSGFuZGxlcgorLSAodm9pZClfZGlkTG9hZE5vbkFwcEluaXRpYXRlZFJlcXVlc3Q6KHZv
aWQgKF4pKEJPT0wgcmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcgogewogICAgIFRIUk9XX0lGX1NV
U1BFTkRFRDsKLSAgICBfcGFnZS0+YXBwQm91bmROYXZpZ2F0aW9uRGF0YShbY29tcGxldGlvbkhh
bmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byYmIGFwcEJvdW5k
RGF0YSkgbXV0YWJsZSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGFwcEJvdW5kRGF0YS5o
YXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nKTsKKyAgICBfcGFnZS0+YXBwUHJpdmFj
eVJlcG9ydFRlc3RpbmdEYXRhKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21w
bGV0aW9uSGFuZGxlcildIChhdXRvJiYgYXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKSBtdXRh
YmxlIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdE
YXRhLmhhc0xvYWRlZE5vbkFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nKTsKICAgICB9KTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmgKaW5kZXggMmUzZTk0NmZmNzA0NjBmMjY2M2E2ODE1Mjg1ZDY3OWE1MWM2YjkzNS4u
ZTJlZWM2NmMyYWFmN2FkZDIzMDkyYmNiZTQ2NmQ1YzgxZTFhMWI5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC00
MDYsOSArNDA2LDggQEAgZm9yIHRoaXMgcHJvcGVydHkuCiAqLwogLSAodm9pZClfc3dpdGNoRnJv
bVN0YXRpY0ZvbnRSZWdpc3RyeVRvVXNlckZvbnRSZWdpc3RyeSBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKDEyLjApKTsKIAotLSAodm9pZClfYXBwQm91bmROYXZpZ2F0aW9uRGF0YUZvckRvbWFpbjoo
TlNTdHJpbmcgKilkb21haW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TU3RyaW5nICog
Y29udGV4dCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMi4wKSwg
aW9zKDE1LjApKTsKLS0gKHZvaWQpX2RpZExvYWRBcHBCb3VuZFJlcXVlc3Q6KHZvaWQgKF4pKEJP
T0wgcmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcjsKLS0gKHZvaWQpX2RpZExvYWROb25BcHBCb3Vu
ZFJlcXVlc3Q6KHZvaWQgKF4pKEJPT0wgcmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZv
aWQpX2RpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0Oih2b2lkICheKShCT09MIHJlc3VsdCkpY29t
cGxldGlvbkhhbmRsZXI7CistICh2b2lkKV9kaWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdDoo
dm9pZCAoXikoQk9PTCByZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyOwogCiAtICh2b2lkKV9zdXNw
ZW5kUGFnZToodm9pZCAoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcygxMi4wKSwgaW9zKDE1LjApKTsKIC0gKHZvaWQpX3Jlc3VtZVBhZ2U6KHZvaWQgKF4p
KEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCksIGlv
cygxNS4wKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oCmluZGV4IGMzMDVmYWY0M2Q0NTE3
NDRkMjI3MTU3M2VmZTk5ODQ0MTU2NGViYTguLjQwODc0ODQ2NmVlYmM5ZDI2Mjk4YzVlNDIyOGFm
NGNkOGJlNjcyZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oCkBAIC0zNCw5ICszNCw5
IEBAIHR5cGVkZWYgZW51bSB7CiAgICAgV0tXZWJWaWV3QXVkaW9Sb3V0aW5nQXJiaXRyYXRpb25T
dGF0dXNBY3RpdmUsCiB9IFdLV2ViVmlld0F1ZGlvUm91dGluZ0FyYml0cmF0aW9uU3RhdHVzOwog
Ci1zdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSB7Ci0gICAgQk9PTCBoYXNM
b2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nOwotICAgIEJPT0wgaGFzTG9hZGVkTm9uQXBwQm91
bmRSZXF1ZXN0VGVzdGluZzsKK3N0cnVjdCBXS0FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSB7
CisgICAgQk9PTCBoYXNMb2FkZWRBcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZzsKKyAgICBCT09M
IGhhc0xvYWRlZE5vbkFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nOwogICAgIEJPT0wgZGlkUGVy
Zm9ybVNvZnRVcGRhdGU7CiB9OwogCkBAIC0xMDIsOSArMTAyLDkgQEAgc3RydWN0IFdLQXBwQm91
bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEgewogLSAodm9pZClfc2V0UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRBdHRyaWJ1dGlvblRva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZzooTlNVUkwgKil1cmwg
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcygxMi4wKSwgaW9zKDE1LjApKTsKIC0gKHZvaWQpX3NldFByaXZhdGVD
bGlja01lYXN1cmVtZW50QXR0cmlidXRpb25Ub2tlblNpZ25hdHVyZVVSTEZvclRlc3Rpbmc6KE5T
VVJMICopdXJsIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5k
bGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCksIGlvcygxNS4wKSk7CiAKLS0gKHZvaWQp
X2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRs
ZXI7Ci0tICh2b2lkKV9hcHBCb3VuZE5hdmlnYXRpb25EYXRhOih2b2lkKF4pKHN0cnVjdCBXS0Fw
cEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhIGRhdGEpKWNvbXBsZXRpb25IYW5kbGVyOwotLSAo
dm9pZClfY2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhOih2b2lkKF4pKHZvaWQpKWNvbXBsZXRp
b25IYW5kbGVyOworLSAodm9pZClfbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6KHZvaWQo
XikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKV9hcHBQcml2YWN5UmVwb3J0VGVz
dGluZ0RhdGE6KHZvaWQoXikoc3RydWN0IFdLQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhIGRh
dGEpKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClfY2xlYXJBcHBQcml2YWN5UmVwb3J0VGVz
dGluZ0RhdGE6KHZvaWQoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXI7CiAKIC0gKHZvaWQpX2Ny
ZWF0ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yRm9yVGVzdGluZzooaWQgPF9XS01lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yPilwcml2YXRlQ29vcmRpbmF0b3IgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQo
XikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5nLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1Rlc3RpbmcubW0KaW5kZXggYTRiYzYxYTJiZjc3
ZTFmMWRkOGRhZGFkNjQyZmUwYmQzODExYWNjZC4uY2JhZDBlZDg4M2FiZDZhNThhZWQyYmU4Yzk0
Y2UwZWJiMTc1MWVmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld1Rlc3RpbmcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld1Rlc3RpbmcubW0KQEAgLTM2NSwyMyArMzY1LDIzIEBACiAjZW5kaWYK
IH0KIAotLSAodm9pZClfbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDoodm9pZCheKShCT09MKSlj
b21wbGV0aW9uSGFuZGxlcgorLSAodm9pZClfbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6
KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIKIHsKLSAgICBfcGFnZS0+bGFzdE5hdmln
YXRpb25XYXNBcHBCb3VuZChbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxl
dGlvbkhhbmRsZXIpXSAoYm9vbCBpc0FwcEJvdW5kKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGlzQXBwQm91bmQpOworICAgIF9wYWdlLT5sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRl
ZChbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAo
Ym9vbCBpc0FwcEluaXRpYXRlZCkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihpc0FwcElu
aXRpYXRlZCk7CiAgICAgfSk7CiB9CiAKLS0gKHZvaWQpX2FwcEJvdW5kTmF2aWdhdGlvbkRhdGE6
KHZvaWQoXikoc3RydWN0IFdLQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEgZGF0YSkpY29t
cGxldGlvbkhhbmRsZXIKKy0gKHZvaWQpX2FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YToodm9p
ZCheKShzdHJ1Y3QgV0tBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEgZGF0YSkpY29tcGxldGlv
bkhhbmRsZXIKIHsKLSAgICBfcGFnZS0+YXBwQm91bmROYXZpZ2F0aW9uRGF0YShbY29tcGxldGlv
bkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byYmIGFwcEJv
dW5kRGF0YSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IGFwcEJvdW5kRGF0YS5oYXNM
b2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nLCBhcHBCb3VuZERhdGEuaGFzTG9hZGVkTm9uQXBw
Qm91bmRSZXF1ZXN0VGVzdGluZywgYXBwQm91bmREYXRhLmRpZFBlcmZvcm1Tb2Z0VXBkYXRlIH0p
OworICAgIF9wYWdlLT5hcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoW2NvbXBsZXRpb25IYW5k
bGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8mJiBhcHBQcml2YWN5
UmVwb3J0VGVzdGluZ0RhdGEpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyBhcHBQcml2
YWN5UmVwb3J0VGVzdGluZ0RhdGEuaGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3Rpbmcs
IGFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YS5oYXNMb2FkZWROb25BcHBJbml0aWF0ZWRSZXF1
ZXN0VGVzdGluZywgYXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhLmRpZFBlcmZvcm1Tb2Z0VXBk
YXRlIH0pOwogICAgIH0pOwogfQogCi0tICh2b2lkKV9jbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRh
dGE6KHZvaWQoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKKy0gKHZvaWQpX2NsZWFyQXBwUHJp
dmFjeVJlcG9ydFRlc3RpbmdEYXRhOih2b2lkKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCiB7
Ci0gICAgX3BhZ2UtPmNsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YShbY29tcGxldGlvbkhhbmRs
ZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSB7CisgICAgX3BhZ2UtPmNsZWFy
QXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9j
a1B0cihjb21wbGV0aW9uSGFuZGxlcildIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsK
ICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlBhZ2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFn
ZVByb3h5Q29jb2EubW0KaW5kZXggZjliMjc2NTM5OGY3ZmZmMzE0N2M1YmQwYTljMmRkMjRhZWVk
YTEyYi4uYWVmNWNmY2ZiM2I5YTlmNDA0M2E4ZDU3ODg4NjIwYTkyNzE2YzBjNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KQEAg
LTY1MCwyMCArNjUwLDE4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0QWN0aXZlTm93UGxh
eWluZ1Nlc3Npb25JbmZvKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vCiAgICAgc2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0QWN0aXZlTm93UGxheWluZ1Nlc3Np
b25JbmZvKCksIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNl
dExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQordm9p
ZCBXZWJQYWdlUHJveHk6OnNldExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCkKIHsKICNpZiBFTkFCTEUoQVBQX1BSSVZBQ1lfUkVQT1JUKQotICAg
IGF1dG8gKm5zUmVxdWVzdCA9IHJlcXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5
VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KTsKLSAgICBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19CRUdJTgotICAgIHJlcXVlc3Quc2V0SXNBcHBCb3VuZCghbnNSZXF1ZXN0
Ll9pc05vbkFwcEluaXRpYXRlZCk7Ci0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
RU5ECisgICAgYXV0byBpc0FwcEluaXRpYXRlZCA9IHJlcXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNv
cmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KS5hdHRyaWJ1dGlv
biA9PSBOU1VSTFJlcXVlc3RBdHRyaWJ1dGlvbkRldmVsb3BlcjsKKyAgICByZXF1ZXN0LnNldElz
QXBwSW5pdGlhdGVkKGlzQXBwSW5pdGlhdGVkKTsKKyAgICBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBw
SW5pdGlhdGVkID0gaXNBcHBJbml0aWF0ZWQ7CiAjZW5kaWYKLSAgICBtX2xhc3ROYXZpZ2F0aW9u
V2FzQXBwQm91bmQgPSByZXF1ZXN0LmlzQXBwQm91bmQoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJv
eHk6Omxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFnZVByb3h5OjpsYXN0TmF2aWdhdGlv
bldhc0FwcEluaXRpYXRlZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewotICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6
TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpMYXN0TmF2aWdhdGlv
bldhc0FwcEluaXRpYXRlZCgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpncmFudEFjY2Vzc1RvQXNzZXRTZXJ2aWNlcygpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cAppbmRleCA3MmM0YTlmOWE3ZTVkMmRiNTlkMzg1NzMyYzkyNTZmOTk1NmJkNDQzLi45NThjMWI4
M2I2OGY1NGI2NTMwYjlhMjhkODkxMmE1Y2Q4YjExMGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTE1
MDIsMTEgKzE1MDIsMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXRMb2NhbFN0b3Jh
Z2VEZXRhaWxzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGwKICAgICBzZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpHZXRMb2NhbFN0b3JhZ2VPcmlnaW5E
ZXRhaWxzKHNlc3Npb25JRCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciB3ZWJQYWdlSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJB
Z2VudCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3ksIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4sIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgbGFzdE5hdmln
YXRpb25XYXNBcHBCb3VuZCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cHJlY29ubmVjdFRv
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdl
UHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBMYXN0TmF2aWdhdGlv
bldhc0FwcEluaXRpYXRlZCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCkKIHsKICAgICBp
ZiAoIXVybC5pc1ZhbGlkKCkgfHwgIXVybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpCiAgICAg
ICAgIHJldHVybjsKLSAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UHJlY29ubmVj
dFRvKHNlc3Npb25JRCwgd2ViUGFnZVByb3h5SUQsIHdlYlBhZ2VJRCwgdXJsLCB1c2VyQWdlbnQs
IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBs
YXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKSwgMCk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3M6OlByZWNvbm5lY3RUbyhzZXNzaW9uSUQsIHdlYlBhZ2VQcm94eUlELCB3ZWJQYWdl
SUQsIHVybCwgdXNlckFnZW50LCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbiwgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpLCAwKTsKIH0K
IAogc3RhdGljIGJvb2wgYW55UHJvY2Vzc1Bvb2xIYXNGb3JlZ3JvdW5kV2ViUHJvY2Vzc2VzKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmgKaW5kZXggOGNmZTUzYmI0OTRmOGNjY2Y0YTczNjRlODllNGZlYTAzY2MwNTEwMy4u
YjAxYWFmMjczNTQxMDZmMjlhNGRkYjk1ZDBjMTBkYzI0OWEzNzVmZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAg
LTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJBcHBQcml2YWN5UmVw
b3J0LmgiCiAjaW5jbHVkZSAiQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiQ2Fs
bGJhY2tJRC5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlc1JlcGxpZXMu
aCIKQEAgLTEyOCw3ICsxMjksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdldExvY2FsU3RvcmFn
ZURldGFpbHMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPExv
Y2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlscz4mJik+JiYpOwogCi0gICAg
dm9pZCBwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBXZWJD
b3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbj4sIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOworICAgIHZvaWQgcHJl
Y29ubmVjdFRvKFBBTDo6U2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6U3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4+LCBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk7CiAKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIHZvaWQgY2xlYXJQcmV2YWxlbnRSZXNvdXJjZShQ
QUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5k
ZXggYTcxODg1YmE0NmI2ZDhjMzcwY2YyM2Q0MmI4MWU2ZWU4ZmNmZWQ2OS4uNTJiYWEzZTVhNWEz
ZDIyZGI5MzllZTZmZDRhNWI0OTg4ZDA2ZjYzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCkBAIC0xMzMyLDcgKzEzMzIsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0
aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IFNobwogICAgICAgICBuYXZpZ2F0aW9uLT5zZXRDbGllbnROYXZpZ2F0aW9uQWN0aXZpdHkocHJv
Y2VzcygpLnRocm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eSgiQ2xpZW50IG5hdmlnYXRpb24i
X3MpKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHNldExhc3ROYXZpZ2F0aW9uV2FzQXBw
Qm91bmQocmVxdWVzdCk7CisgICAgc2V0TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQocmVx
dWVzdCk7CiAjZW5kaWYKIAogICAgIGxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQobV9w
cm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIG5hdmlnYXRpb24uZ2V0KCksIFdURk1vdmUo
cmVxdWVzdCksIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHVzZXJEYXRhLCBTaG91bGRU
cmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCkp
OwpAQCAtNDUyNyw3ICs0NTI3LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnByZWNvbm5lY3RUbyhj
b25zdCBVUkwmIHVybCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBzdG9yZWRDcmVkZW50
aWFsc1BvbGljeSA9IG1fY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UgPyBXZWJDb3JlOjpTdG9yZWRD
cmVkZW50aWFsc1BvbGljeTo6VXNlIDogV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6
OkRvTm90VXNlOwotICAgIHdlYnNpdGVEYXRhU3RvcmUoKS5uZXR3b3JrUHJvY2VzcygpLnByZWNv
bm5lY3RUbyhzZXNzaW9uSUQoKSwgaWRlbnRpZmllcigpLCB3ZWJQYWdlSUQoKSwgdXJsLCB1c2Vy
QWdlbnQoKSwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4oKSwgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kID8gTGFzdE5hdmlnYXRpb25XYXNB
cHBCb3VuZDo6WWVzIDogTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDo6Tm8pOworCisgICAgd2Vi
c2l0ZURhdGFTdG9yZSgpLm5ldHdvcmtQcm9jZXNzKCkucHJlY29ubmVjdFRvKHNlc3Npb25JRCgp
LCBpZGVudGlmaWVyKCksIHdlYlBhZ2VJRCgpLCB1cmwsIHVzZXJBZ2VudCgpLCBzdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBtX2xhc3ROYXZp
Z2F0aW9uV2FzQXBwSW5pdGlhdGVkID8gTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6Olll
cyA6IExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpObyk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRDYW5Vc2VDcmVkZW50aWFsU3RvcmFnZShib29sIGNhblVzZUNyZWRlbnRpYWxT
dG9yYWdlKQpAQCAtODE5MSw3ICs4MTkyLDcgQEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBX
ZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyhXZWJQcm9jZXNzUHJveHkmIHByb2MKICNp
ZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgcGFyYW1ldGVycy5saW1pdHNOYXZpZ2F0
aW9uc1RvQXBwQm91bmREb21haW5zID0gbV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21h
aW5zOwogI2VuZGlmCi0gICAgcGFyYW1ldGVycy5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kID0g
bV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOworICAgIHBhcmFtZXRlcnMubGFzdE5hdmlnYXRp
b25XYXNBcHBJbml0aWF0ZWQgPSBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOwogICAg
IHBhcmFtZXRlcnMuc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgPSBtX2NvbmZp
Z3VyYXRpb24tPnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKCk7CiAgICAgcGFy
YW1ldGVycy5jYW5Vc2VDcmVkZW50aWFsU3RvcmFnZSA9IG1fY2FuVXNlQ3JlZGVudGlhbFN0b3Jh
Z2U7CiAKQEAgLTEwNzAzLDE0ICsxMDcwNCwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRl
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IoUmVmPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveAog
I2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLXZvaWQgV2ViUGFnZVByb3h5OjphcHBCb3Vu
ZE5hdmlnYXRpb25EYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgQXBwQm91bmROYXZp
Z2F0aW9uVGVzdGluZ0RhdGEmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFnZVBy
b3h5OjphcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKLSAgICB3ZWJzaXRlRGF0YVN0b3JlKCkubmV0d29ya1Byb2Nlc3MoKS5zZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpBcHBCb3VuZE5hdmlnYXRpb25EYXRhKG1f
d2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCkpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CisgICAgd2Vic2l0ZURhdGFTdG9yZSgpLm5ldHdvcmtQcm9jZXNzKCkuc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6QXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdE
YXRhKG1fd2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCkpLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpjbGVhckFwcEJvdW5kTmF2aWdhdGlv
bkRhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBXZWJQYWdlUHJveHk6OmNsZWFyQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICB3ZWJzaXRlRGF0
YVN0b3JlKCkubmV0d29ya1Byb2Nlc3MoKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5l
dHdvcmtQcm9jZXNzOjpDbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGEobV93ZWJzaXRlRGF0YVN0
b3JlLT5zZXNzaW9uSUQoKSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB3ZWJz
aXRlRGF0YVN0b3JlKCkubmV0d29ya1Byb2Nlc3MoKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzOjpDbGVhckFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YShtX3dl
YnNpdGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXgg
ZWM1ZDBjZjA1ZTNiNDM1NDdhZjU5M2RkNjUzN2MwMzc4MTdlNmE5ZS4uNjJlOTI3Y2M0NzYxOGI3
NjJhZDJkMzViNTA4N2RhNjE5YTA5ODU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKQEAgLTM3Myw3ICszNzMsNyBAQCBjbGFzcyBXZWJXaGVlbEV2ZW50OwogY2xhc3Mg
V2ViV2hlZWxFdmVudENvYWxlc2NlcjsKIGNsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CiAKLXN0cnVj
dCBBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YTsKK3N0cnVjdCBBcHBQcml2YWN5UmVwb3J0
VGVzdGluZ0RhdGE7CiBzdHJ1Y3QgRGF0YURldGVjdGlvblJlc3VsdDsKIHN0cnVjdCBEb2N1bWVu
dEVkaXRpbmdDb250ZXh0Owogc3RydWN0IERvY3VtZW50RWRpdGluZ0NvbnRleHRSZXF1ZXN0OwpA
QCAtMTkyNiwxMCArMTkyNiwxMCBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENP
Q09BKQotICAgIHZvaWQgc2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmKTsKLSAgICB2b2lkIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBhcHBCb3VuZE5hdmlnYXRpb25E
YXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgQXBwQm91bmROYXZpZ2F0aW9uVGVzdGlu
Z0RhdGEmKT4mJik7Ci0gICAgdm9pZCBjbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGEoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldExhc3ROYXZpZ2F0aW9uV2FzQXBw
SW5pdGlhdGVkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworICAgIHZvaWQgbGFzdE5hdmln
YXRpb25XYXNBcHBJbml0aWF0ZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Cisg
ICAgdm9pZCBhcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEmKT4mJik7CisgICAgdm9pZCBjbGVh
ckFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogCiAgICAgTlNEaWN0aW9uYXJ5ICpjb250ZW50c09mVXNlckludGVyZmFjZUl0ZW0oTlNTdHJp
bmcgKnVzZXJJbnRlcmZhY2VJdGVtKTsKIApAQCAtMzAzNiw3ICszMDM2LDcgQEAgcHJpdmF0ZToK
IAogICAgIHNpemVfdCBtX3N1c3BlbmRNZWRpYVBsYXliYWNrQ291bnRlciB7IDAgfTsKIAotICAg
IGJvb2wgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIHsgZmFsc2UgfTsKKyAgICBib29sIG1f
bGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgeyB0cnVlIH07CiAgICAgYm9vbCBtX2lzUnVu
bmluZ01vZGFsSmF2YVNjcmlwdERpYWxvZyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzU3VzcGVu
ZGVkIHsgZmFsc2UgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggYzA5MzVjNTI0ZGNiNDg1Y2FiNWM0MDAwOGM4ZGVjYjMzM2JjNDVh
OC4uNDE0MDQ0ODFlOTgwNWVmNzExNzBjMjcxZGUyNGMxNjBlYzA2YWRiOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05ODcsNiArOTg3
LDcgQEAKIAkJNDZERjA2M0MxRjM5MDVGODAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0
Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDZERjA2M0ExRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5o
ICovOyB9OwogCQk0NkYzOEU4QzI0MTZFNjczMDA1OTM3NUEgLyogUnVubmluZ0JvYXJkU2Vydmlj
ZXNTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
RjM4RThCMjQxNkU2NkQwMDU5Mzc1QSAvKiBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oICovOyB9
OwogCQk0NkY5QjI2MzIzNTI2RUYzMDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkY5QjI2
MjIzNTI2RUQwMDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmggKi87IH07CisJ
CTQ5MzEwMkJEMjY4M0YzRDAwMDJCQjg4NSAvKiBBcHBQcml2YWN5UmVwb3J0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTMxMDJCQzI2ODNGM0E1MDAy
QkI4ODUgLyogQXBwUHJpdmFjeVJlcG9ydC5oICovOyB9OwogCQk0OTczREY0ODI0MjI5NDFGMDBF
NEMyNkEgLyogTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5NzNERjQ3MjQyMjk0MUYwMEU0QzI2QSAvKiBO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oICovOyB9OwogCQk0OTkwMDAyMTI0RDI0MjlDMDAw
NDlDQjQgLyogV0tSZW5kZXJMYXllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDk5MDAwMUYyNEQyNDI5QzAwMDQ5Q0I0IC8qIFdLUmVuZGVyTGF5ZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0OTkw
MDAyNDI0RDI0QzI5MDAwNDlDQjQgLyogV0tSZW5kZXJPYmplY3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OTAwMDIzMjREMjRDMUMwMDA0OUNCNCAv
KiBXS1JlbmRlck9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC0zOTM0LDYgKzM5MzUsNyBAQAogCQk0NkRGMDYzQTFGMzkwNUU1MDAxOTgw
QkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NkYzOEU4QjI0MTZFNjZEMDA1OTM3NUEgLyogUnVubmluZ0JvYXJk
U2VydmljZXNTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUnVubmluZ0Jv
YXJkU2VydmljZXNTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZGOUIyNjIy
MzUyNkVEMDAwNkZFNUZBIC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDkzMTAyQkMyNjgzRjNBNTAwMkJCODg1IC8qIEFwcFBy
aXZhY3lSZXBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXBwUHJpdmFjeVJlcG9ydC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0OTczREY0NzI0MjI5NDFGMDBFNEMyNkEgLyogTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDk5MDAwMUUyNEQyNDI5
QzAwMDQ5Q0I0IC8qIFdLUmVuZGVyTGF5ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tSZW5k
ZXJMYXllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5OTAwMDFGMjREMjQy
OUMwMDA0OUNCNCAvKiBXS1JlbmRlckxheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUmVuZGVyTGF5
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY3MDAsNiArNjcwMiw3IEBACiAJ
CQkJQkMzMjlEOTkxNkFDQ0U5OTAwMzE2REUyIC8qIEFQSVdlYkFyY2hpdmUubW0gKi8sCiAJCQkJ
QkMzMjlEOUYxNkFDRDQ3ODAwMzE2REUyIC8qIEFQSVdlYkFyY2hpdmVSZXNvdXJjZS5oICovLAog
CQkJCUJDMzI5RDlFMTZBQ0Q0NzgwMDMxNkRFMiAvKiBBUElXZWJBcmNoaXZlUmVzb3VyY2UubW0g
Ki8sCisJCQkJNDkzMTAyQkMyNjgzRjNBNTAwMkJCODg1IC8qIEFwcFByaXZhY3lSZXBvcnQuaCAq
LywKIAkJCQk1MTVFNzcyNTE4M0RENkY2MDAwNzIwM0YgLyogQXN5bmNSZXF1ZXN0LmNwcCAqLywK
IAkJCQk1MTVFNzcyNjE4M0RENkY2MDAwNzIwM0YgLyogQXN5bmNSZXF1ZXN0LmggKi8sCiAJCQkJ
MUEyRDk1NkUxMjg0ODU2NDAwMUVCOTYyIC8qIEF1eGlsaWFyeVByb2Nlc3MuY3BwICovLApAQCAt
MTE4ODAsNiArMTE4ODMsNyBAQAogCQkJCUY0OEQyQTg1MjE1ODNBN0UwMEM2NzUyQiAvKiBBcHBL
aXRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0RUM5NEUzMjM1NkNDNTcwMDBCQjYxNCAvKiBB
cHBsaWNhdGlvblNlcnZpY2VzU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUQ0QzE5MzFCMzlG
MzMyMDBBQkMyOEUgLyogQXBwbGljYXRpb25TdGF0ZVRyYWNrZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCTQ5MzEwMkJEMjY4M0YzRDAwMDJCQjg4NSAvKiBBcHBQcml2YWN5UmVwb3J0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQUVGRDI3OTExRDE2QzgxMDA4MjE5RDMgLyogQXJndW1lbnRDb2Rlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFRkQyRjcxMUQxODA3QjAwODIxOUQzIC8qIEFyZ3VtZW50
Q29kZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUFGMEM0QTEyQjE2MzM0MDA4RTQ5RTIgLyog
QXJndW1lbnRDb2RlcnNDRi5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNDEyOCw3ICsxNDEzMiw2IEBA
CiAJCQkJQ0RBOTNEQjEyMkY4QkNGNDAwNDkwQTY5IC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJp
c3RpY1BhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzFBMTUyRDcyNEU1QTI5QTAw
OTc4QzhCIC8qIEhhbmRsZVhQQ0VuZHBvaW50TWVzc2FnZXMubW0gaW4gU291cmNlcyAqLywKIAkJ
CQkyNzQ5RjY0NDIxNDY1NjFCMDA4MzgwQkYgLyogSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNw
cCBpbiBTb3VyY2VzICovLAotCQkJCUNERjFCOTFCMjY3MDI1NTUwMDA3RUMxMCAvKiBXZWJLaXRT
d2lmdFNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMjc0OUY2NDUyMTQ2NTYxRTAwODM4
MEJGIC8qIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OUJGNUVDNjQyNTQxMTQ1NjAwOTg0RTc3IC8qIEpTSVBDQmluZGluZy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkyRDkxMzQ0MTIxMkNGOUYwMDAxMjhBRkQgLyogSlNOUE1ldGhvZC5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTE0NDcyLDYgKzE0NDc1LDcgQEAKIAkJCQkxQTYyODBGMzE5MTk5ODJBMDA2
QUQ5RjkgLyogV2ViS2l0Lm0gaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc4QjIxMkI2QUIxMDBG
NDkzRkQgLyogV2ViS2l0MkluaXRpYWxpemUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE4MUE3
OTgyMUFDQzc0QjAwNTlBMzE2IC8qIFdlYktpdEFkZGl0aW9ucy5tbSBpbiBTb3VyY2VzICovLAor
CQkJCUNERjFCOTFCMjY3MDI1NTUwMDA3RUMxMCAvKiBXZWJLaXRTd2lmdFNvZnRMaW5rLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODJGIC8qIFdlYk1ETlNSZWdp
c3Rlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc4QzIxMkI2
QUIxMDBGNDkzRkQgLyogV2ViTW91c2VFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMUJB
OTI0RDE0ODgzMTI2MDA2MkVEQjUgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCBjNDJkMmMwMGY3OTgyZWEz
ZmUxOTQwMWNkMDc2YzI0YTBiNjQ5ZWJmLi42MGU2YTJiNDgwZmNhZDExMGYzZGFlODRiMDU0OTU2
NTM1NzZmN2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgdm9pZCBXZWJMb2Fk
ZXJTdHJhdGVneTo6bG9hZFJlc291cmNlKEZyYW1lJiBmcmFtZSwgQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlLCBSZXMKICAgICBpZiAocmVzb3VyY2UudHlwZSgpICE9IENhY2hlZFJlc291cmNlOjpU
eXBlOjpNYWluUmVzb3VyY2UgfHwgIWZyYW1lLmlzTWFpbkZyYW1lKCkpIHsKICAgICAgICAgaWYg
KGF1dG8qIGRvY3VtZW50ID0gZnJhbWUubWFpbkZyYW1lKCkuZG9jdW1lbnQoKSkgewogICAgICAg
ICAgICAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LT5sb2FkZXIoKSkKLSAgICAgICAgICAgICAg
ICByZXF1ZXN0LnNldElzQXBwQm91bmQoZG9jdW1lbnQtPmxvYWRlcigpLT5sYXN0TmF2aWdhdGlv
bldhc0FwcEJvdW5kKCkpOworICAgICAgICAgICAgICAgIHJlcXVlc3Quc2V0SXNBcHBJbml0aWF0
ZWQoZG9jdW1lbnQtPmxvYWRlcigpLT5sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCgpKTsK
ICAgICAgICAgfQogICAgIH0KIApAQCAtNzY3LDcgKzc2Nyw3IEBAIHZvaWQgV2ViTG9hZGVyU3Ry
YXRlZ3k6OnByZWNvbm5lY3RUbyhXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBX
ZWJQYWdlCiAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gd2ViUGFnZS5tYWluRnJhbWUoKS0+ZG9j
dW1lbnQoKSkgewogICAgICAgICByZXF1ZXN0LnNldEZpcnN0UGFydHlGb3JDb29raWVzKGRvY3Vt
ZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpKTsKICAgICAgICAgaWYgKGF1dG8qIGxvYWRlciA9
IGRvY3VtZW50LT5sb2FkZXIoKSkKLSAgICAgICAgICAgIHJlcXVlc3Quc2V0SXNBcHBCb3VuZChs
b2FkZXItPmxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoKSk7CisgICAgICAgICAgICByZXF1ZXN0
LnNldElzQXBwSW5pdGlhdGVkKGxvYWRlci0+bGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQo
KSk7CiAgICAgfQogCiAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcHJlY29ubmVjdGlvbklk
ZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggNjM4NDEx
N2NkNWUxNTUxNmQwOThjZWFiMDZkM2M1NDliN2QxYzhkYi4uZjk5M2VmYzFlYTNhNzI5NTBmMjdi
M2MwOWMxNjI1ZDExYTJiNjRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNw
cApAQCAtMTM1LDEwICsxMzUsMTAgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6dXBkYXRlUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1MKICAgICBzZXRT
aG91bGRVc2VTaG9ydFRpbWVvdXQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVu
Y2VzS2V5OjpzaG91bGRVc2VTZXJ2aWNlV29ya2VyU2hvcnRUaW1lb3V0S2V5KCkpKTsKIH0KIAot
dm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6dXBkYXRlQXBwQm91bmRWYWx1ZShT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6
TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKQordm9p
ZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6dXBkYXRlQXBwSW5pdGlhdGVkVmFsdWUo
U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6
Okxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlh
dGVkKQogewogICAgIGlmIChhdXRvKiBzZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgPSBTV0NvbnRl
eHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkoc2VydmljZVdv
cmtlcklkZW50aWZpZXIpKQotICAgICAgICBzZXJ2aWNlV29ya2VyVGhyZWFkUHJveHktPnNldExh
c3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQobGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCA9PSBXZWJD
b3JlOjpMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOjpZZXMpOworICAgICAgICBzZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHktPnNldExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKGxhc3ROYXZp
Z2F0aW9uV2FzQXBwSW5pdGlhdGVkID09IFdlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5p
dGlhdGVkOjpZZXMpOwogfQogCiB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpp
bnN0YWxsU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBkYXRhLCBTdHJp
bmcmJiB1c2VyQWdlbnQpCkBAIC0yMzQsNyArMjM0LDcgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaChTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNl
cnYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eS0+c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZChyZXF1ZXN0LmlzQXBwQm91bmQoKSk7Cisg
ICAgc2VydmljZVdvcmtlclRocmVhZFByb3h5LT5zZXRMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRp
YXRlZChyZXF1ZXN0LmlzQXBwSW5pdGlhdGVkKCkpOwogCiAgICAgaWYgKCFpc1ZhbGlkRmV0Y2go
cmVxdWVzdCwgb3B0aW9ucywgc2VydmljZVdvcmtlclRocmVhZFByb3h5LT5zY3JpcHRVUkwoKSwg
cmVmZXJyZXIpKSB7CiAgICAgICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZE5vdEhhbmRsZSB7IH0sIGZldGNo
SWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAppbmRleCAzMzE0MzM5
ZTA5M2JjNjVjNzJkYmE1MmNlYWRhYWM3NDUyZjFjZGM5Li5lMDIwNTdlODExYzFlODZkMmY1ZWVk
Mjc0ZTMyMGFjZDViZmY3MzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAg
LTg2LDcgKzg2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNlcnZpY2VXb3JrZXJTdGFydGVkKHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiwgV2Vi
Q29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgZG9lc0hhbmRsZUZldGNoKSBmaW5h
bDsKICAgICB2b2lkIHNlcnZpY2VXb3JrZXJGYWlsZWRUb1N0YXJ0KHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiwgV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXhjZXB0aW9uTWVzc2FnZSkgZmluYWw7CiAg
ICAgdm9pZCBpbnN0YWxsU2VydmljZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEmJiwgU3RyaW5nJiYgdXNlckFnZW50KTsKLSAgICB2b2lkIHVwZGF0ZUFwcEJvdW5kVmFs
dWUoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6Okxhc3ROYXZpZ2F0
aW9uV2FzQXBwQm91bmQpOworICAgIHZvaWQgdXBkYXRlQXBwSW5pdGlhdGVkVmFsdWUoV2ViQ29y
ZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2FzQXBw
SW5pdGlhdGVkKTsKICAgICB2b2lkIHN0YXJ0RmV0Y2goV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6
OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OkZl
dGNoT3B0aW9ucyYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYsIFN0cmluZyYmIHJlZmVycmVy
KTsKICAgICB2b2lkIGNhbmNlbEZldGNoKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElk
ZW50aWZpZXIpOwogICAgIHZvaWQgY29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZShXZWJD
b3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggZjY2NGE0ZTkxMjJjMTUxZTJj
NTY3NTUwOTA1ZWM5NTAyNTc3YmIxYS4uM2UyMGRlMzU0YmM0M2Q4NGFiNDkwNDIzNDVjOTdlYjky
ZWVmM2Y2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4KQEAgLTI0LDcgKzI0LDcgQEAKIAogbWVzc2FnZXMgLT4gV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CiAgICAgSW5zdGFsbFNlcnZpY2VXb3JrZXIoc3Ry
dWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBjb250ZXh0RGF0YSwgU3RyaW5n
IHVzZXJBZ2VudCkKLSAgICBVcGRhdGVBcHBCb3VuZFZhbHVlKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBlbnVtOmJvb2wgV2ViQ29yZTo6
TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKQorICAg
IFVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBlbnVtOmJvb2wgV2ViQ29yZTo6TGFzdE5hdmlnYXRp
b25XYXNBcHBJbml0aWF0ZWQgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpCiAgICAgU3Rh
cnRGZXRjaChXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmll
ciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHN0cnVjdCBXZWJDb3JlOjpGZXRj
aE9wdGlvbnMgb3B0aW9ucywgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXF1ZXN0Qm9keSwgU3Ry
aW5nIHJlZmVycmVyKQogICAgIENhbmNlbEZldGNoKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElk
ZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyKQogICAgIENvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVz
cG9uc2UoV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdv
cmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA1ZGEyYmI5ZjRhMmQ3ZDQyM2Jl
ZTg1NDQ3MWZlODUzZDNlNGEyNjFkLi44OGVhNjYyZTA2MjNmZjlkNzkzN2Q4YmExMGViNjUzMjNj
M2VlM2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTI0MywxMSArMjQz
LDExIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0
KERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uCiAgICAgLy8gVGhlIEFQSSBjYW4gcmV0dXJu
IGEgY29tcGxldGVseSBuZXcgcmVxdWVzdC4gV2Ugc2hvdWxkIGVuc3VyZSB0aGF0IGF0IGxlYXN0
IHRoZSByZXF1ZXN0ZXIKICAgICAvLyBpcyBrZXB0LCBzbyB0aGF0IGlmIHRoaXMgaXMgYSBtYWlu
IHJlc291cmNlIGxvYWQgaXQncyBzdGlsbCBjb25zaWRlcmVkIGFzIHN1Y2guCiAgICAgYXV0byBy
ZXF1ZXN0ZXIgPSByZXF1ZXN0LnJlcXVlc3RlcigpOwotICAgIGF1dG8gYXBwQm91bmRWYWx1ZSA9
IHJlcXVlc3QuaXNBcHBCb3VuZCgpOworICAgIGF1dG8gYXBwSW5pdGlhdGVkVmFsdWUgPSByZXF1
ZXN0LmlzQXBwSW5pdGlhdGVkKCk7CiAgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVSZXNvdXJj
ZUxvYWRDbGllbnQoKS53aWxsU2VuZFJlcXVlc3RGb3JGcmFtZSgqd2ViUGFnZSwgbV9mcmFtZSwg
aWRlbnRpZmllciwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CiAgICAgaWYgKCFyZXF1ZXN0
LmlzTnVsbCgpKSB7CiAgICAgICAgIHJlcXVlc3Quc2V0UmVxdWVzdGVyKHJlcXVlc3Rlcik7Ci0g
ICAgICAgIHJlcXVlc3Quc2V0SXNBcHBCb3VuZChhcHBCb3VuZFZhbHVlKTsKKyAgICAgICAgcmVx
dWVzdC5zZXRJc0FwcEluaXRpYXRlZChhcHBJbml0aWF0ZWRWYWx1ZSk7CiAgICAgfQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDM3YjQz
ZTljN2M1ZjJkN2MwOTdmMzhkMGZkNjBmOWNjOGI0ZTZkMTguLjgzYmM5NzQwZDZmNDdlZTBlNjE5
NGQ0Yjg2MjFlM2ExYjA4NzgwZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCkBAIC01MzQsNyArNTM0LDcgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdl
SWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJz
KQogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICAsIG1fbGltaXRzTmF2aWdhdGlv
bnNUb0FwcEJvdW5kRG9tYWlucyhwYXJhbWV0ZXJzLmxpbWl0c05hdmlnYXRpb25zVG9BcHBCb3Vu
ZERvbWFpbnMpCiAjZW5kaWYKLSAgICAsIG1fbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZChwYXJh
bWV0ZXJzLmxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpCisgICAgLCBtX2xhc3ROYXZpZ2F0aW9u
V2FzQXBwSW5pdGlhdGVkKHBhcmFtZXRlcnMubGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQp
CiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQogICAgICwgbV9hcHBIaWdobGlnaHRzVmlzaWJs
ZShwYXJhbWV0ZXJzLmFwcEhpZ2hsaWdodHNWaXNpYmxlKQogI2VuZGlmCkBAIC0xNjY0LDcgKzE2
NjQsNyBAQCB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKGNv
bnN0IExvYWRQYXJhbWV0ZXJzJiBsb2FkUGFyYW1ldAogCiB2b2lkIFdlYlBhZ2U6OmxvYWRSZXF1
ZXN0KExvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMpCiB7Ci0gICAgc2V0TGFzdE5hdmln
YXRpb25XYXNBcHBCb3VuZChsb2FkUGFyYW1ldGVycy5yZXF1ZXN0LmlzQXBwQm91bmQoKSk7Cisg
ICAgc2V0TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQobG9hZFBhcmFtZXRlcnMucmVxdWVz
dC5pc0FwcEluaXRpYXRlZCgpKTsKIAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAg
ICBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKGxvYWRQYXJhbWV0ZXJzLmlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4sICZtX21haW5GcmFtZS5nZXQoKSk7CkBAIC02NjE3LDcgKzY2
MTcsNyBAQCBSZWY8RG9jdW1lbnRMb2FkZXI+IFdlYlBhZ2U6OmNyZWF0ZURvY3VtZW50TG9hZGVy
KEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZQogewogICAgIFJlZjxXZWJEb2N1bWVudExv
YWRlcj4gZG9jdW1lbnRMb2FkZXIgPSBXZWJEb2N1bWVudExvYWRlcjo6Y3JlYXRlKHJlcXVlc3Qs
IHN1YnN0aXR1dGVEYXRhKTsKIAotICAgIGRvY3VtZW50TG9hZGVyLT5zZXRMYXN0TmF2aWdhdGlv
bldhc0FwcEJvdW5kKG1fbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk7CisgICAgZG9jdW1lbnRM
b2FkZXItPnNldExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKG1fbGFzdE5hdmlnYXRpb25X
YXNBcHBJbml0aWF0ZWQpOwogCiAgICAgaWYgKGZyYW1lLmlzTWFpbkZyYW1lKCkpIHsKICAgICAg
ICAgaWYgKG1fcGVuZGluZ05hdmlnYXRpb25JRCkgewpAQCAtNzY1NCw5ICs3NjU0LDkgQEAgdm9p
ZCBXZWJQYWdlOjpjb25zdW1lTmV0d29ya0V4dGVuc2lvblNhbmRib3hFeHRlbnNpb25zKGNvbnN0
IFNhbmRib3hFeHRlbnNpb246OkgKIH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2U6Omxhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFnZTo6bGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAg
ICBjb21wbGV0aW9uSGFuZGxlcihtYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS0+bG9hZGVyKCktPmxh
c3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoKSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIobWFpbkZy
YW1lKCktPmRvY3VtZW50KCktPmxvYWRlcigpLT5sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRl
ZCgpKTsKIH0KIAogI2lmIEhBVkUoVFJBTlNMQVRJT05fVUlfU0VSVklDRVMpICYmIEVOQUJMRShD
T05URVhUX01FTlVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CmluZGV4IDQ0YzZhYzI5YjQ5NzM4MTMwNzc0NWQ1OWRhM2M3MWI5NDg2MjVhYTMuLjE2NjFiMmIx
YTAxMjYwNWJhOWQxMDUyMjhkMzdiOTQzMTNlZTQ4MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE0NDgsOCArMTQ0OCw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGludmFsaWRhdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcigpOwogI2VuZGlmCiAKLSAg
ICB2b2lkIHNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoYm9vbCB3YXNBcHBCb3VuZCkgeyBt
X2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgPSB3YXNBcHBCb3VuZDsgfQotICAgIHZvaWQgbGFz
dE5hdmlnYXRpb25XYXNBcHBCb3VuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsK
KyAgICB2b2lkIHNldExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKGJvb2wgd2FzQXBwQm91
bmQpIHsgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCA9IHdhc0FwcEJvdW5kOyB9Cisg
ICAgdm9pZCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZChDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKTsKIAogICAgIGJvb2wgaXNQYXJlbnRQcm9jZXNzQVdlYkJyb3dzZXIoKSBj
b25zdDsKIApAQCAtMjMyMiw3ICsyMzIyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbmF2aWdh
dGlvbkhhc09jY3VyZWQgeyBmYWxzZSB9OwogI2VuZGlmCiAKLSAgICBib29sIG1fbGFzdE5hdmln
YXRpb25XYXNBcHBCb3VuZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2xhc3ROYXZpZ2F0aW9uV2Fz
QXBwSW5pdGlhdGVkIHsgdHJ1ZSB9OwogCiAgICAgYm9vbCBtX2NhblVzZUNyZWRlbnRpYWxTdG9y
YWdlIHsgdHJ1ZSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA1YmRlM2Y4ZGE5MWM2YzVhNjVjNmZiYTgzOGIx
ZWQ2NzM4ZDAyMGRiLi41M2MxNWU5YmJmMGVhYTgzZWMyNTcwYWFjZTAyYTEzM2JlYzNlMDEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4KQEAgLTYzMyw3ICs2MzMsNyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21t
YW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogCiAg
ICAgRGlzcGF0Y2hXaGVlbEV2ZW50V2l0aG91dFNjcm9sbGluZyhXZWJLaXQ6OldlYldoZWVsRXZl
bnQgZXZlbnQpIC0+IChib29sIGhhbmRsZWQpIEFzeW5jCiAKLSAgICBMYXN0TmF2aWdhdGlvbldh
c0FwcEJvdW5kKCkgLT4gKGJvb2wgd2FzQXBwQm91bmQpIEFzeW5jCisgICAgTGFzdE5hdmlnYXRp
b25XYXNBcHBJbml0aWF0ZWQoKSAtPiAoYm9vbCB3YXNBcHBCb3VuZCkgQXN5bmMKIAogI2lmIEVO
QUJMRShNRURJQV9TRVNTSU9OX0NPT1JESU5BVE9SKQogICAgIENyZWF0ZU1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yKFN0cmluZyBpZGVudGlmaWVyKSAtPiAoYm9vbCBzdWNjZXNzKSBBc3luYwpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGUwMGQyYWI3
MDY5MzA2YTcxMTMwNmQ0ZjNhZDU1Mzg3MDRmYjUwZjkuLjc4MGQ5OTJhNTNlOTNiYTQxYTI0NGFl
ZWZlNjdhZjRhYmU2ZWNjMzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NyBAQAorMjAyMS0wNi0yMyAgS2F0ZSBDaGVuZXkgIDxr
YXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBDbGVhbiB1cCBBcHAgUHJpdmFj
eSBSZXBvcnQgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjI3MzI2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83OTY5Njg0OT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEZWxldGUgdGVzdGluZyBm
dW5jdGlvbnMgcmVsYXRlZCB0byBhdHRyaWJ1dGlvbiBjb250ZXh0LiBNb3ZlIEFwcAorICAgICAg
ICBQcml2YWN5IFJlcG9ydCB0ZXN0cyBpbnRvIHRoZWlyIG93biBmaWxlLgorCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0
Lm1tOiBBZGRlZC4KKyAgICAgICAgKFRFU1QpOgorICAgICAgICAoY2F0Y2gpOgorICAgICAgICAo
ZnVuY3Rpb24pOgorICAgICAgICAoLVtTV0FwcEluaXRpYXRlZFJlcXVlc3RNZXNzYWdlSGFuZGxl
ciB1c2VyQ29udGVudENvbnRyb2xsZXI6ZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6XSk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0UGx1
Z0luLm1tOiBSZW5hbWVkIGZyb20gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9JbkFwcEJyb3dzZXJQcml2YWN5UGx1Z0luLm1tLgorICAgICAgICAoLVtBcHBQcml2YWN5UmVw
b3J0UGx1Z0luIHdlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6ZnJhbWU6
d2lsbFNlbmRSZXF1ZXN0Rm9yUmVzb3VyY2U6cmVxdWVzdDpyZWRpcmVjdFJlc3BvbnNlOl0pOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJp
dmFjeS5tbToKKyAgICAgICAgKC1bU1dBcHBCb3VuZFJlcXVlc3RNZXNzYWdlSGFuZGxlciB1c2Vy
Q29udGVudENvbnRyb2xsZXI6ZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6XSk6IERlbGV0ZWQuCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9hcHAtcHJpdmFjeS1yZXBv
cnQtaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXVFI6Oklu
amVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZSk6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6
VGVzdFJ1bm5lcjo6ZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3QpOgorICAgICAgICAoV1RSOjpU
ZXN0UnVubmVyOjpkaWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdCk6CisgICAgICAgIChXVFI6
OlRlc3RSdW5uZXI6OmFwcEJvdW5kUmVxdWVzdENvbnRleHREYXRhRm9yRG9tYWluKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6Y2FsbERpZFJlY2VpdmVBcHBCb3VuZFJlcXVl
c3RDb250ZXh0RGF0YUZvckRvbWFpbkNhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6
VGVzdFJ1bm5lcjo6ZGlkTG9hZEFwcEJvdW5kUmVxdWVzdCk6IERlbGV0ZWQuCisgICAgICAgIChX
VFI6OlRlc3RSdW5uZXI6OmRpZExvYWROb25BcHBCb3VuZFJlcXVlc3QpOiBEZWxldGVkLgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RS
OjpUZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAg
IChXVFI6OlRlc3RDb250cm9sbGVyOjpkaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdCk6CisgICAg
ICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkaWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdCk6
CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjbGVhckFwcFByaXZhY3lSZXBvcnRUZXN0
aW5nRGF0YSk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjphcHBCb3VuZFJlcXVlc3RD
b250ZXh0RGF0YUZvckRvbWFpbik6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OlRlc3RDb250cm9s
bGVyOjpkaWRMb2FkQXBwQm91bmRSZXF1ZXN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6VGVz
dENvbnRyb2xsZXI6OmRpZExvYWROb25BcHBCb3VuZFJlcXVlc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6
OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6Cisg
ICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdl
RnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJl
Y2VpdmVBcHBCb3VuZFJlcXVlc3RDb250ZXh0RGF0YUZvckRvbWFpbik6IERlbGV0ZWQuCisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbToKKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OmRpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0KToKKyAgICAgICAgKFdU
Ujo6VGVzdENvbnRyb2xsZXI6OmRpZExvYWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0KToKKyAgICAg
ICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNsZWFyQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRh
KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmFwcEJvdW5kUmVxdWVzdENvbnRleHRE
YXRhRm9yRG9tYWluKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRp
ZExvYWRBcHBCb3VuZFJlcXVlc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6ZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6
OlRlc3RDb250cm9sbGVyOjpjbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGEpOiBEZWxldGVkLgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFJ1bm5lcldLV2ViVmlldy5oOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFJ1bm5lcldLV2ViVmlldy5tbToK
KyAgICAgICAgKC1bVGVzdFJ1bm5lcldLV2ViVmlldyBfZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVl
c3Q6XSk6CisgICAgICAgICgtW1Rlc3RSdW5uZXJXS1dlYlZpZXcgX2RpZExvYWROb25BcHBJbml0
aWF0ZWRSZXF1ZXN0Ol0pOgorICAgICAgICAoLVtUZXN0UnVubmVyV0tXZWJWaWV3IF9hcHBCb3Vu
ZE5hdmlnYXRpb25EYXRhRm9yRG9tYWluOmNvbXBsZXRpb25IYW5kbGVyOl0pOiBEZWxldGVkLgor
ICAgICAgICAoLVtUZXN0UnVubmVyV0tXZWJWaWV3IF9kaWRMb2FkQXBwQm91bmRSZXF1ZXN0Ol0p
OiBEZWxldGVkLgorICAgICAgICAoLVtUZXN0UnVubmVyV0tXZWJWaWV3IF9kaWRMb2FkTm9uQXBw
Qm91bmRSZXF1ZXN0Ol0pOiBEZWxldGVkLgorCiAyMDIxLTA2LTIzICBLYXRlIENoZW5leSAgPGth
dGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIE1pZ3JhdGUgQXBwIFByaXZhY3kg
UmVwb3J0IGNvZGUgZnJvbSBXZWJLaXRBZGRpdGlvbnMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggNDllN2U0YTlkZmZhYmU2YzJiYmRmMGM5ZDYzOGRjY2I2ODg2MWY2NS4uYzVlMjBlMzNkZjIy
NjIyY2ZjYmEwNTNiYTliZjY1ZmRiNGY1MzI4MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTI5NCw3ICsyOTQsNyBAQAogCQk0NkZBQ0Y3NDIzRTg4NDIzMDBBOUVCQzYgLyogYmVmb3JldW5s
b2FkLXNsb3cuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NkZBQ0Y3MzIzRTg4M0VFMDBBOUVCQzYgLyogYmVmb3JldW5sb2FkLXNsb3cu
aHRtbCAqLzsgfTsKIAkJNDkwOEM3MTEyNjA5NEU0MTAwMEIxQjJGIC8qIFByaXZhdGVDbGlja01l
YXN1cmVtZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDkwOEM3MEYyNjA5NEUxNjAwMEIxQjJGIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50Lm1t
ICovOyB9OwogCQk0OTA5RUUzQTJEMDk0ODBDODg5ODJENTYgLyogTWFya2FibGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUM3OUYxNjhCRTQ1NEU1
NzlFNDE3QjA1IC8qIE1hcmthYmxlLmNwcCAqLzsgfTsKLQkJNDkxQUVFRjgyNjUyRTMzNTAwRDUz
MEE4IC8qIEluQXBwQnJvd3NlclByaXZhY3lQbHVnSW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTFBRUVGNDI2NTJEREQwMDBENTMwQTggLyogSW5B
cHBCcm93c2VyUHJpdmFjeVBsdWdJbi5tbSAqLzsgfTsKKwkJNDkxQUVFRjgyNjUyRTMzNTAwRDUz
MEE4IC8qIEFwcFByaXZhY3lSZXBvcnRQbHVnSW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTFBRUVGNDI2NTJEREQwMDBENTMwQTggLyogQXBwUHJp
dmFjeVJlcG9ydFBsdWdJbi5tbSAqLzsgfTsKIAkJNDkxRjNENTIyNjAyN0U1MzAwMEUzMUY3IC8q
IHBjbVdpdGhvdXRGcmF1ZFByZXZlbnRpb25EYXRhYmFzZS5kYiBpbiBDb3B5IFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTFGM0Q0RjI2MDI3Q0ZFMDAwRTMx
RjcgLyogcGNtV2l0aG91dEZyYXVkUHJldmVudGlvbkRhdGFiYXNlLmRiICovOyB9OwogCQk0OTFG
M0Q1MzI2MDI3RTUzMDAwRTMxRjcgLyogcGNtV2l0aG91dEZyYXVkUHJldmVudGlvbkRhdGFiYXNl
LmRiLXNobSBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0OTFGM0Q1MDI2MDI3Q0ZFMDAwRTMxRjcgLyogcGNtV2l0aG91dEZyYXVkUHJldmVudGlv
bkRhdGFiYXNlLmRiLXNobSAqLzsgfTsKIAkJNDkxRjNENTQyNjAyN0U1MzAwMEUzMUY3IC8qIHBj
bVdpdGhvdXRGcmF1ZFByZXZlbnRpb25EYXRhYmFzZS5kYi13YWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDkxRjNENTEyNjAyN0NGRTAwMEUz
MUY3IC8qIHBjbVdpdGhvdXRGcmF1ZFByZXZlbnRpb25EYXRhYmFzZS5kYi13YWwgKi87IH07CkBA
IC0zMTIsNiArMzEyLDcgQEAKIAkJNDk4RDAzMEEyNjM3NkIzNDAwOUNCRkFEIC8qIHJlc291cmNl
TG9hZFN0YXRpc3RpY3NNaXNzaW5nVW5pcXVlSW5kZXguZGIgaW4gQ29weSBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk4RDAzMDkyNjM3NkIyQzAwOUNCRkFE
IC8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3NNaXNzaW5nVW5pcXVlSW5kZXguZGIgKi87IH07CiAJ
CTQ5OTVBNkYwMjVFODc3MjAwMEU1RjBBOSAvKiBjc3AtZG9jdW1lbnQtdXJpLXJlcG9ydC5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5
OTVBNkVGMjVFODc2QTMwMEU1RjBBOSAvKiBjc3AtZG9jdW1lbnQtdXJpLXJlcG9ydC5odG1sICov
OyB9OwogCQk0OUFFRUY2RDI0MDczNTlEMDBDODdFNEMgLyogSW5BcHBCcm93c2VyUHJpdmFjeS5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QUVFRjZC
MjQwNzM1ODYwMEM4N0U0QyAvKiBJbkFwcEJyb3dzZXJQcml2YWN5Lm1tICovOyB9OworCQk0OUVG
NkFENTI2NzdDMEJFMDA3OTY3REMgLyogQXBwUHJpdmFjeVJlcG9ydC5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUY2QUQ0MjY3N0MwQkUwMDc5NjdE
QyAvKiBBcHBQcml2YWN5UmVwb3J0Lm1tICovOyB9OwogCQk0QkZERkZBNzEzMTQ3NzZDMDA2MUYy
NEIgLyogSGl0VGVzdFJlc3VsdE5vZGVIYW5kbGVfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCRkRGRkE2MTMxNDc3NkMwMDYxRjI0QiAv
KiBIaXRUZXN0UmVzdWx0Tm9kZUhhbmRsZV9CdW5kbGUuY3BwICovOyB9OwogCQk1MTA0Nzc3MjFE
Mjk4REREMDA5NzQ3RUIgLyogSURCRGVsZXRlUmVjb3Zlcnkuc3FsaXRlMyBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTA0Nzc2RjFEMjk4RDg1
MDA5NzQ3RUIgLyogSURCRGVsZXRlUmVjb3Zlcnkuc3FsaXRlMyAqLzsgfTsKIAkJNTEwNDc3NzMx
RDI5OERERDAwOTc0N0VCIC8qIElEQkRlbGV0ZVJlY292ZXJ5LnNxbGl0ZTMtc2htIGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDQ3NzcwMUQy
OThEODUwMDk3NDdFQiAvKiBJREJEZWxldGVSZWNvdmVyeS5zcWxpdGUzLXNobSAqLzsgfTsKQEAg
LTIxMTMsNyArMjExNCw3IEBACiAJCTQ2RkEyRkVEMjM4NDZDOUEwMDBDQ0IwQyAvKiBIVFRQSGVh
ZGVyTWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUVFBIZWFk
ZXJNYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkZBQ0Y3MzIzRTg4M0VF
MDBBOUVCQzYgLyogYmVmb3JldW5sb2FkLXNsb3cuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsg
cGF0aCA9ICJiZWZvcmV1bmxvYWQtc2xvdy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDkwOEM3MEYyNjA5NEUxNjAwMEIxQjJGIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5MUFFRUY0MjY1
MkRERDAwMEQ1MzBBOCAvKiBJbkFwcEJyb3dzZXJQcml2YWN5UGx1Z0luLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gSW5BcHBCcm93c2VyUHJpdmFjeVBsdWdJbi5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDkxQUVFRjQyNjUyREREMDAwRDUzMEE4IC8qIEFwcFByaXZhY3lSZXBv
cnRQbHVnSW4ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBcHBQcml2YWN5UmVwb3J0UGx1Z0lu
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTFGM0Q0RjI2MDI3Q0ZFMDAwRTMx
RjcgLyogcGNtV2l0aG91dEZyYXVkUHJldmVudGlvbkRhdGFiYXNlLmRiICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgcGF0aCA9IHBjbVdpdGhv
dXRGcmF1ZFByZXZlbnRpb25EYXRhYmFzZS5kYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDkxRjNENTAyNjAyN0NGRTAwMEUzMUY3IC8qIHBjbVdpdGhvdXRGcmF1ZFByZXZlbnRpb25E
YXRhYmFzZS5kYi1zaG0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBmaWxlOyBwYXRoID0gInBjbVdpdGhvdXRGcmF1ZFByZXZlbnRpb25EYXRhYmFzZS5k
Yi1zaG0iOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTFGM0Q1MTI2MDI3Q0ZFMDAw
RTMxRjcgLyogcGNtV2l0aG91dEZyYXVkUHJldmVudGlvbkRhdGFiYXNlLmRiLXdhbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSAicGNtV2l0aG91dEZyYXVkUHJldmVudGlvbkRhdGFiYXNlLmRiLXdh
bCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTMyLDYgKzIxMzMsNyBAQAogCQk0
OUFFRUY2ODI0MDcyNzZGMDBDODdFNEMgLyogSW5mby5wbGlzdCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxp
c3QueG1sOyBwYXRoID0gSW5mby5wbGlzdDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDlBRUVGNkIyNDA3MzU4NjAwQzg3RTRDIC8qIEluQXBwQnJvd3NlclByaXZhY3kubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBJbkFwcEJyb3dzZXJQcml2YWN5Lm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUQ3RkJBNzI0MUZERERBMDBBQjY3RkEg
LyogaW4tYXBwLWJyb3dzZXItcHJpdmFjeS1sb2NhbC1maWxlLmh0bWwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiaW4t
YXBwLWJyb3dzZXItcHJpdmFjeS1sb2NhbC1maWxlLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0OUVGNkFENDI2NzdDMEJFMDA3OTY3REMgLyogQXBwUHJpdmFjeVJlcG9ydC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFwcFByaXZhY3lSZXBvcnQubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTRBNDEwRjRCMTlBRjdCRDYwMDJFQkFCNSAvKiBVc2VyTWVkaWEu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVXNlck1lZGlhLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE0MTBGNEQxOUFGN0JFRjAwMkVCQUI1IC8q
IGdldFVzZXJNZWRpYS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gZ2V0VXNlck1l
ZGlhLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBNDEwRjREMTlBRjdCRUYw
MDJFQkFCNiAvKiBvbmRldmljZWNoYW5nZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRo
ID0gb25kZXZpY2VjaGFuZ2UuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMz
NzksNiArMzM4MSw4IEBACiAJCQkJMkRFNzFBRkQxRDQ5QzBCRDAwOTA0MDk0IC8qIEFuaW1hdGVk
UmVzaXplLm1tICovLAogCQkJCUExNzk4QjgxMjI0MzFENjUwMDA3NjRCRCAvKiBBcHBsZVBheS5t
bSAqLywKIAkJCQk2M0Y2NjgyMDFGOTdDM0FBMDAzMkVFNTEgLyogQXBwbGljYXRpb25NYW5pZmVz
dC5tbSAqLywKKwkJCQk0OUVGNkFENDI2NzdDMEJFMDA3OTY3REMgLyogQXBwUHJpdmFjeVJlcG9y
dC5tbSAqLywKKwkJCQk0OTFBRUVGNDI2NTJEREQwMDBENTMwQTggLyogQXBwUHJpdmFjeVJlcG9y
dFBsdWdJbi5tbSAqLywKIAkJCQk1MUI0MEQ5RDIzQUM5NjBFMDBFMDUyNDEgLyogQXN5bmNGdW5j
dGlvbi5tbSAqLywKIAkJCQk4MzQxMzhDNjIwMzI2MUI5MDBGMjY5NjAgLyogQXN5bmNQb2xpY3lG
b3JOYXZpZ2F0aW9uUmVzcG9uc2UubW0gKi8sCiAJCQkJMzc2MEM0RjAyMTEyNDlBRjAwMjMzQUND
IC8qIEF0dHJTdHlsZS5tbSAqLywKQEAgLTM0NjYsNyArMzQ3MCw2IEBACiAJCQkJNTExMEZDRUYx
RTAxQ0JBQTAwNkY4RDBCIC8qIElEQkluZGV4VXBncmFkZVRvVjIubW0gKi8sCiAJCQkJOTNCQ0JD
ODAyM0NDNkVFODAwQ0EyMjIxIC8qIElEQk9iamVjdFN0b3JlSW5mb1VwZ3JhZGVUb1YyLm1tICov
LAogCQkJCTQ5QUVFRjZCMjQwNzM1ODYwMEM4N0U0QyAvKiBJbkFwcEJyb3dzZXJQcml2YWN5Lm1t
ICovLAotCQkJCTQ5MUFFRUY0MjY1MkRERDAwMEQ1MzBBOCAvKiBJbkFwcEJyb3dzZXJQcml2YWN5
UGx1Z0luLm1tICovLAogCQkJCTUxQTU4Nzg0MUQyNzJFRjMwMDRCQTlBRiAvKiBJbmRleGVkREJE
YXRhYmFzZVByb2Nlc3NLaWxsLm1tICovLAogCQkJCUNBQjBGRjU0MjIzMzJDM0EwMDZDQTVCMCAv
KiBJbmRleGVkREJGaWxlTmFtZS5tbSAqLywKIAkJCQk5Mzk5QkEwMTIzNzExMEFFMDA4MzkyQkYg
LyogSW5kZXhlZERCSW5QYWdlQ2FjaGUubW0gKi8sCkBAIC01MzM1LDYgKzUzMzgsNyBAQAogCQkJ
CUExNzk4QjgyMjI0MzFENjUwMDA3NjRCRCAvKiBBcHBsZVBheS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTYzRjY2ODIyMUY5N0Y3RjkwMDMyRUU1MSAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNjM1NEY0RDExRjdDM0FCNTAwRDg5REYzIC8qIEFwcGxpY2F0aW9u
TWFuaWZlc3RQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDlFRjZBRDUyNjc3QzBCRTAw
Nzk2N0RDIC8qIEFwcFByaXZhY3lSZXBvcnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MUI0MEQ5
RTIzQUM5NjI0MDBFMDUyNDEgLyogQXN5bmNGdW5jdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTgzNDEzOEM3MjAzMjYxQ0EwMEYyNjk2MCAvKiBBc3luY1BvbGljeUZvck5hdmlnYXRpb25SZXNw
b25zZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUI0MUE0MTFBN0UwMDQ0N0M0QyAvKiBB
dHRyaWJ1dGVkU3RyaW5nLm1tIGluIFNvdXJjZXMgKi8sCkBAIC01OTU3LDYgKzU5NjEsNyBAQAog
CQkJZmlsZXMgPSAoCiAJCQkJMDc3QTVBRjMyMzA2MzhBNjAwQTcxMDVDIC8qIEFjY2Vzc2liaWxp
dHlUZXN0UGx1Z2luLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzdFN0RENjcxRUEwNzFGMzAwOUIz
OTZEIC8qIEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHNQbHVnaW4ubW0gaW4gU291cmNl
cyAqLywKKwkJCQk0OTFBRUVGODI2NTJFMzM1MDBENTMwQTggLyogQXBwUHJpdmFjeVJlcG9ydFBs
dWdJbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTc1NENFQzgxMUY2NzIyRjIwMEQwMDM5QSAvKiBB
dXRvRmlsbEF2YWlsYWJsZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDNDI1OTQ2MjI2NkE2OEEw
MDM5QUE3QSAvKiBCYXNpY1Byb3Bvc2VkQ3JlZGVudGlhbFBsdWdJbi5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTM3NEI3QTYxMURGMzcxQ0YwMEFDQ0I2QyAvKiBCdW5kbGVFZGl0aW5nRGVsZWdhdGVQ
bHVnSW4ubW0gaW4gU291cmNlcyAqLywKQEAgLTU5NzIsNyArNTk3Nyw2IEBACiAJCQkJRjRCMDE2
ODQyNUFFMDhGODAwRTQ0NUM0IC8qIERpc2FibGVTcGVsbGNoZWNrUGx1Z0luLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTE4RUU1MTkyMEE3OENFNTAwRTAyNEYzIC8qIERvdWJsZURlZmVyc0xvYWRp
bmdQbHVnaW4ubW0gaW4gU291cmNlcyAqLywKIAkJCQk1Q0I1QjNDMjFGRkM1NUNGMDBDMjdCQjAg
LyogRnJhbWVIYW5kbGVTZXJpYWxpemF0aW9uLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNDkxQUVF
RjgyNjUyRTMzNTAwRDUzMEE4IC8qIEluQXBwQnJvd3NlclByaXZhY3lQbHVnSW4ubW0gaW4gU291
cmNlcyAqLywKIAkJCQlGNDYwRjY1QjI2MTExOTU4MDA2NEYyQjYgLyogSW5qZWN0ZWRCdW5kbGVI
aXRUZXN0UGx1Z0luLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEU0MDRBOEMyMTY2REUwQTAwODI3
MUJBIC8qIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZUlzU2VsZWN0RWxlbWVudC5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTc5QzVENDMxMjA5RDc2ODMwMEYxRTdDQSAvKiBJbmplY3RlZEJ1bmRsZU5v
ZGVIYW5kbGVJc1RleHRGaWVsZC5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjhkNTAxYTA2ZmI3ZjJmYmNhZDA0YzFjNDAwNDE0OTdkMDJhMTgzYjgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFBy
aXZhY3lSZXBvcnQubW0KQEAgLTAsMCArMSw3MDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJj
b25maWcuaCIKKworI2ltcG9ydCAiSFRUUFNlcnZlci5oIgorI2ltcG9ydCAiUGxhdGZvcm1VdGls
aXRpZXMuaCIKKyNpbXBvcnQgIlNlcnZpY2VXb3JrZXJUQ1BTZXJ2ZXIuaCIKKyNpbXBvcnQgIlRl
c3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIKKyNpbXBvcnQgIlRlc3RVSURlbGVnYXRlLmgiCisjaW1w
b3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0aW9uRXh0
cmFzLmgiCisjaW1wb3J0IDxDRk5ldHdvcmsvQ0ZOU1VSTENvbm5lY3Rpb24uaD4KKyNpbXBvcnQg
PEZvdW5kYXRpb24vTlNVUkxSZXF1ZXN0Lmg+CisjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNl
c1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5o
PgorI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4KKyNpbXBvcnQg
PHd0Zi9SdW5Mb29wLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworI2lmIEVO
QUJMRShBUFBfUFJJVkFDWV9SRVBPUlQpCitURVNUKEFwcFByaXZhY3lSZXBvcnQsIERlZmF1bHRS
ZXF1ZXN0SXNBcHBJbml0aWF0ZWQpCit7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKworICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVj
dFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgTlNTdHJpbmcg
KnVybCA9IEAiaHR0cHM6Ly93ZWJraXQub3JnIjsKKworICAgIF9fYmxvY2sgYm9vbCBpc0RvbmUg
PSBmYWxzZTsKKyAgICAvLyBEb24ndCBzZXQgdGhlIGF0dHJpYnV0aW9uIEFQSSBvbiBOU1VSTFJl
cXVlc3QgdG8gbWFrZSBzdXJlIHRoZSBkZWZhdWx0IGlzIGFwcCBpbml0aWF0ZWQuCisgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJM
V2l0aFN0cmluZzp1cmxdXV07CisgICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5h
dmlnYXRpb25dOworCisgICAgW3dlYlZpZXcgX2xhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVk
Ol4oQk9PTCBpc0FwcEluaXRpYXRlZCkgeworICAgICAgICBFWFBFQ1RfVFJVRShpc0FwcEluaXRp
YXRlZCk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisKKyAgICBpc0RvbmUgPSBmYWxzZTsKKyAgICBbd2Vi
VmlldyBfYXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhOl4oc3RydWN0IFdLQXBwUHJpdmFjeVJl
cG9ydFRlc3RpbmdEYXRhIGRhdGEpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoZGF0YS5oYXNMb2Fk
ZWRBcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZyk7CisgICAgICAgIEVYUEVDVF9GQUxTRShkYXRh
Lmhhc0xvYWRlZE5vbkFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nKTsKKyAgICAgICAgaXNEb25l
ID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25l
KTsKK30KKworVEVTVChBcHBQcml2YWN5UmVwb3J0LCBBcHBJbml0aWF0ZWRSZXF1ZXN0KQorewor
ICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmln
dXJhdGlvbi5nZXQoKV0pOworICAgIE5TU3RyaW5nICp1cmwgPSBAImh0dHBzOi8vd2Via2l0Lm9y
ZyI7CisKKyAgICBfX2Jsb2NrIGJvb2wgaXNEb25lID0gZmFsc2U7CisgICAgTlNNdXRhYmxlVVJM
UmVxdWVzdCAqYXBwSW5pdGlhdGVkUmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVl
c3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOnVybF1dOworICAgIGFwcEluaXRpYXRlZFJl
cXVlc3QuYXR0cmlidXRpb24gPSBOU1VSTFJlcXVlc3RBdHRyaWJ1dGlvbkRldmVsb3BlcjsKKwor
ICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OmFwcEluaXRpYXRlZFJlcXVlc3RdOworICAgIFt3ZWJW
aWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKworICAgIFt3ZWJWaWV3IF9s
YXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDpeKEJPT0wgaXNBcHBJbml0aWF0ZWQpIHsKKyAg
ICAgICAgRVhQRUNUX1RSVUUoaXNBcHBJbml0aWF0ZWQpOworICAgICAgICBpc0RvbmUgPSB0cnVl
OworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworCisg
ICAgaXNEb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2FwcFByaXZhY3lSZXBvcnRUZXN0aW5n
RGF0YTpeKHN0cnVjdCBXS0FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSBkYXRhKSB7CisgICAg
ICAgIEVYUEVDVF9UUlVFKGRhdGEuaGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3Rpbmcp
OworICAgICAgICBFWFBFQ1RfRkFMU0UoZGF0YS5oYXNMb2FkZWROb25BcHBJbml0aWF0ZWRSZXF1
ZXN0VGVzdGluZyk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Cit9CisKK1RFU1QoQXBwUHJpdmFjeVJlcG9y
dCwgTm9uQXBwSW5pdGlhdGVkUmVxdWVzdCkKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworCisgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBOU1N0
cmluZyAqdXJsID0gQCJodHRwczovL3dlYmtpdC5vcmciOworCisgICAgX19ibG9jayBib29sIGlz
RG9uZSA9IGZhbHNlOworICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5vbkFwcEluaXRpYXRlZFJl
cXVlc3QgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0
aFN0cmluZzp1cmxdXTsKKyAgICBub25BcHBJbml0aWF0ZWRSZXF1ZXN0LmF0dHJpYnV0aW9uID0g
TlNVUkxSZXF1ZXN0QXR0cmlidXRpb25Vc2VyOworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6
bm9uQXBwSW5pdGlhdGVkUmVxdWVzdF07CisgICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZp
bmlzaE5hdmlnYXRpb25dOworCisgICAgW3dlYlZpZXcgX2xhc3ROYXZpZ2F0aW9uV2FzQXBwSW5p
dGlhdGVkOl4oQk9PTCBpc0FwcEluaXRpYXRlZCkgeworICAgICAgICBFWFBFQ1RfRkFMU0UoaXNB
cHBJbml0aWF0ZWQpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworCisgICAgaXNEb25lID0gZmFsc2U7Cisg
ICAgW3dlYlZpZXcgX2FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YTpeKHN0cnVjdCBXS0FwcFBy
aXZhY3lSZXBvcnRUZXN0aW5nRGF0YSBkYXRhKSB7CisgICAgICAgIEVYUEVDVF9GQUxTRShkYXRh
Lmhhc0xvYWRlZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nKTsKKyAgICAgICAgRVhQRUNUX1RS
VUUoZGF0YS5oYXNMb2FkZWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZyk7CisgICAgICAg
IGlzRG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmlzRG9uZSk7Cit9CisKK1RFU1QoQXBwUHJpdmFjeVJlcG9ydCwgQXBwSW5pdGlhdGVkUmVxdWVz
dFdpdGhOYXZpZ2F0aW9uKQoreworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisKKyAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJv
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIE5TU3RyaW5nICphcHBJ
bml0aWF0ZWRVUkwgPSBAImh0dHBzOi8vd3d3LndlYmtpdC5vcmciOworICAgIE5TU3RyaW5nICpu
b25BcHBJbml0aWF0ZWRVUkwgPSBAImh0dHBzOi8vd3d3LmFwcGxlLmNvbSI7CisKKyAgICBOU011
dGFibGVVUkxSZXF1ZXN0ICphcHBJbml0aWF0ZWRSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVl
c3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6YXBwSW5pdGlhdGVkVVJMXV07
CisgICAgYXBwSW5pdGlhdGVkUmVxdWVzdC5hdHRyaWJ1dGlvbiA9IE5TVVJMUmVxdWVzdEF0dHJp
YnV0aW9uRGV2ZWxvcGVyOworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6YXBwSW5pdGlhdGVk
UmVxdWVzdF07CisgICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25d
OworCisgICAgX19ibG9jayBib29sIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9sYXN0
TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDpeKEJPT0wgaXNBcHBJbml0aWF0ZWQpIHsKKyAgICAg
ICAgRVhQRUNUX1RSVUUoaXNBcHBJbml0aWF0ZWQpOworICAgICAgICBpc0RvbmUgPSB0cnVlOwor
ICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworCisgICAg
aXNEb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0
YTpeKHN0cnVjdCBXS0FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSBkYXRhKSB7CisgICAgICAg
IEVYUEVDVF9UUlVFKGRhdGEuaGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcpOwor
ICAgICAgICBFWFBFQ1RfRkFMU0UoZGF0YS5oYXNMb2FkZWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0
VGVzdGluZyk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisKKyAgICBpc0RvbmUgPSBmYWxzZTsKKyAgICBO
U011dGFibGVVUkxSZXF1ZXN0ICpub25BcHBJbml0aWF0ZWRSZXF1ZXN0ID0gW05TTXV0YWJsZVVS
TFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6bm9uQXBwSW5pdGlh
dGVkVVJMXV07CisgICAgbm9uQXBwSW5pdGlhdGVkUmVxdWVzdC5hdHRyaWJ1dGlvbiA9IE5TVVJM
UmVxdWVzdEF0dHJpYnV0aW9uVXNlcjsKKworICAgIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJW
aWV3IF9jbGVhckFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YTpeeworICAgICAgICBpc0RvbmUg
PSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUp
OworCisgICAgLy8gTG9hZCBhIG5vbiBhcHAgaW5pdGF0ZWQgcmVxdWVzdCBhbmQgY29uZmlybSB0
aGUgbG9hZHMgYXJlIG1hcmtlZCBjb3JyZWN0bHkuCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6
bm9uQXBwSW5pdGlhdGVkUmVxdWVzdF07CisgICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZp
bmlzaE5hdmlnYXRpb25dOworCisgICAgW3dlYlZpZXcgX2xhc3ROYXZpZ2F0aW9uV2FzQXBwSW5p
dGlhdGVkOl4oQk9PTCBpc0FwcEluaXRpYXRlZCkgeworICAgICAgICBFWFBFQ1RfRkFMU0UoaXNB
cHBJbml0aWF0ZWQpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworCisgICAgaXNEb25lID0gZmFsc2U7Cisg
ICAgW3dlYlZpZXcgX2FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YTpeKHN0cnVjdCBXS0FwcFBy
aXZhY3lSZXBvcnRUZXN0aW5nRGF0YSBkYXRhKSB7CisgICAgICAgIEVYUEVDVF9GQUxTRShkYXRh
Lmhhc0xvYWRlZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nKTsKKyAgICAgICAgRVhQRUNUX1RS
VUUoZGF0YS5oYXNMb2FkZWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZyk7CisgICAgICAg
IGlzRG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmlzRG9uZSk7Cit9CisKK1RFU1QoQXBwUHJpdmFjeVJlcG9ydCwgQXBwSW5pdGlhdGVkUmVxdWVz
dFdpdGhTdWJGcmFtZSkKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIF9z
ZXRPdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeTpAInNjcmlwdC1zcmMgJ25vbmNlLWInIl07
CisKKyAgICBfX2Jsb2NrIGJvb2wgaXNEb25lID0gZmFsc2U7CisgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAg
TlNNdXRhYmxlVVJMUmVxdWVzdCAqYXBwSW5pdGlhdGVkUmVxdWVzdCA9IFtOU011dGFibGVVUkxS
ZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3Vy
Y2U6QCJwYWdlLXdpdGgtY3NwIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAi
VGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CisgICAgYXBwSW5pdGlhdGVkUmVxdWVzdC5hdHRy
aWJ1dGlvbiA9IE5TVVJMUmVxdWVzdEF0dHJpYnV0aW9uRGV2ZWxvcGVyOworCisgICAgW3dlYlZp
ZXcgbG9hZFJlcXVlc3Q6YXBwSW5pdGlhdGVkUmVxdWVzdF07CisKKyAgICBbd2ViVmlldyB3YWl0
Rm9yTWVzc2FnZTpAIk1haW5GcmFtZTogQiJdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdl
OkAiU3ViZnJhbWU6IEIiXTsKKworICAgIFt3ZWJWaWV3IF9hcHBQcml2YWN5UmVwb3J0VGVzdGlu
Z0RhdGE6IF4oc3RydWN0IFdLQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhIGRhdGEpIHsKKyAg
ICAgICAgRVhQRUNUX1RSVUUoZGF0YS5oYXNMb2FkZWRBcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGlu
Zyk7CisgICAgICAgIEVYUEVDVF9GQUxTRShkYXRhLmhhc0xvYWRlZE5vbkFwcEluaXRpYXRlZFJl
cXVlc3RUZXN0aW5nKTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKK30KKworVEVTVChBcHBQcml2YWN5UmVw
b3J0LCBOb25BcHBJbml0aWF0ZWRSZXF1ZXN0V2l0aFN1YkZyYW1lKQoreworICAgIGF1dG8gY29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gX3NldE92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5
OkAic2NyaXB0LXNyYyAnbm9uY2UtYiciXTsKKworICAgIF9fYmxvY2sgYm9vbCBpc0RvbmUgPSBm
YWxzZTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpub25BcHBJbml0
aWF0ZWRSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1
bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInBhZ2Utd2l0aC1jc3AiIHdpdGhFeHRl
bnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsK
KyAgICBub25BcHBJbml0aWF0ZWRSZXF1ZXN0LmF0dHJpYnV0aW9uID0gTlNVUkxSZXF1ZXN0QXR0
cmlidXRpb25Vc2VyOworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6bm9uQXBwSW5pdGlhdGVk
UmVxdWVzdF07CisKKyAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIk1haW5GcmFtZTogQiJd
OworICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiU3ViZnJhbWU6IEIiXTsKKworICAgIFt3
ZWJWaWV3IF9hcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGE6IF4oc3RydWN0IFdLQXBwUHJpdmFj
eVJlcG9ydFRlc3RpbmdEYXRhIGRhdGEpIHsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGRhdGEuaGFz
TG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcpOworICAgICAgICBFWFBFQ1RfVFJVRShk
YXRhLmhhc0xvYWRlZE5vbkFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nKTsKKyAgICAgICAgaXNE
b25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNE
b25lKTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIqIG1haW5TV0J5dGVzID0gUiJTV1JFU09VUkNF
KAorPHNjcmlwdD4KK3RyeSB7CisgICAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIo
Jy9zdy5qcycpLnRoZW4oZnVuY3Rpb24ocmVnKSB7CisgICAgICAgIGlmIChyZWcuYWN0aXZlKSB7
CisgICAgICAgICAgICBhbGVydCgnd29ya2VyIGFscmVhZHkgYWN0aXZlJyk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgd29ya2VyID0gcmVnLmluc3RhbGxpbmc7Cisg
ICAgICAgIHdvcmtlci5hZGRFdmVudExpc3RlbmVyKCdzdGF0ZWNoYW5nZScsIGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgaWYgKHdvcmtlci5zdGF0ZSA9PSAnYWN0aXZhdGVkJykKKyAgICAgICAg
ICAgICAgICBhbGVydCgnc3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyZWQnKTsKKyAgICAgICAgfSk7Cisg
ICAgfSkuY2F0Y2goZnVuY3Rpb24oZXJyb3IpIHsKKyAgICAgICAgYWxlcnQoJ1JlZ2lzdHJhdGlv
biBmYWlsZWQgd2l0aDogJyArIGVycm9yKTsKKyAgICB9KTsKK30gY2F0Y2goZSkgeworICAgIGFs
ZXJ0KCdFeGNlcHRpb246ICcgKyBlKTsKK30KKzwvc2NyaXB0PgorKVNXUkVTT1VSQ0UiOworCitl
bnVtIGNsYXNzIFJlc3BvbnNlVHlwZSB7IFN5bnRoZXRpYywgRmV0Y2hlZCB9OworZW51bSBjbGFz
cyBJc0FwcEluaXRpYXRlZCA6IGJvb2wgeyBObywgWWVzIH07CitzdGF0aWMgdm9pZCBydW5UZXN0
KFJlc3BvbnNlVHlwZSByZXNwb25zZVR5cGUsIElzQXBwSW5pdGlhdGVkIGlzQXBwSW5pdGlhdGVk
KQoreworICAgIHN0YXRpYyBib29sIGlzRG9uZSA9IGZhbHNlOworICAgIFtbV0tXZWJzaXRlRGF0
YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRh
U3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQ
YXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgeworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAg
IH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKworICAgIGNvbnN0
IGNoYXIqIGpzID0gbnVsbHB0cjsKKyAgICBjb25zdCBjaGFyKiBleHBlY3RlZEFsZXJ0ID0gbnVs
bHB0cjsKKworICAgIHN3aXRjaCAocmVzcG9uc2VUeXBlKSB7CisgICAgY2FzZSBSZXNwb25zZVR5
cGU6OlN5bnRoZXRpYzoKKyAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRj
aCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2Io
Wyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBl
OiAndGV4dC9odG1sJ30pKSk7IH0pIjsKKyAgICAgICAgZXhwZWN0ZWRBbGVydCA9ICJzeW50aGV0
aWMgcmVzcG9uc2UiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFJlc3BvbnNlVHlwZTo6RmV0
Y2hlZDoKKyAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVu
dCkgPT4geyBldmVudC5yZXNwb25kV2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KTsiOwor
ICAgICAgICBleHBlY3RlZEFsZXJ0ID0gImZldGNoZWQgZnJvbSBzZXJ2ZXIiOworICAgICAgICBi
cmVhazsKKyAgICB9CisKKyAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Cisg
ICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIiwgeyB7
eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCisg
ICAgICAgIHsgIi9mZXRjaGVkLmh0bWwiLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20g
c2VydmVyJyk8L3NjcmlwdD4iIH0gfSwKKyAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVy
OjpQcm90b2NvbDo6SHR0cHMpOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJW
aWV3IG5ld10pOworCisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9u
RGVsZWdhdGUgbmV3XSk7CisgICAgW2RlbGVnYXRlIHNldERpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZTpeKFdLV2ViVmlldyAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpj
aGFsbGVuZ2UsIHZvaWQgKF5jYWxsYmFjaykoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bv
c2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKikpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGNo
YWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRob2QsIE5TVVJMQXV0aGVu
dGljYXRpb25NZXRob2RTZXJ2ZXJUcnVzdCk7CisgICAgICAgIGNhbGxiYWNrKE5TVVJMU2Vzc2lv
bkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxG
b3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0XSk7CisgICAgfV07
CisgICAgd2ViVmlldy5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsK
KworICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNNdXRhYmxlVVJMUmVxdWVz
dCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlci5wb3J0KCldXV07CisgICAg
YXV0byBhdHRyaWJ1dGlvblZhbHVlID0gaXNBcHBJbml0aWF0ZWQgPT0gSXNBcHBJbml0aWF0ZWQ6
OlllcyA/IE5TVVJMUmVxdWVzdEF0dHJpYnV0aW9uRGV2ZWxvcGVyIDogTlNVUkxSZXF1ZXN0QXR0
cmlidXRpb25Vc2VyOworICAgIHJlcXVlc3QuYXR0cmlidXRpb24gPSBhdHRyaWJ1dGlvblZhbHVl
OworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisgICAgRVhQRUNUX1dLX1NU
UkVRKFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JBbGVydF0sICJzdWNjZXNzZnVsbHkgcmVnaXN0ZXJl
ZCIpOworCisgICAgaWYgKHJlc3BvbnNlVHlwZSAhPSBSZXNwb25zZVR5cGU6OkZldGNoZWQpCisg
ICAgICAgIHNlcnZlci5jYW5jZWwoKTsKKworICAgIGJvb2wgZXhwZWN0aW5nQXBwSW5pdGlhdGVk
UmVxdWVzdHMgPSBpc0FwcEluaXRpYXRlZCA9PSBJc0FwcEluaXRpYXRlZDo6WWVzOworICAgIGlz
RG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9hcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGE6
IF4oc3RydWN0IFdLQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhIGRhdGEpIHsKKyAgICAgICAg
RVhQRUNUX0VRKGRhdGEuaGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcsIGV4cGVj
dGluZ0FwcEluaXRpYXRlZFJlcXVlc3RzKTsKKyAgICAgICAgRVhQRUNUX0VRKGRhdGEuaGFzTG9h
ZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcsICFleHBlY3RpbmdBcHBJbml0aWF0ZWRS
ZXF1ZXN0cyk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBpc0RvbmUg
PSBmYWxzZTsKKyAgICBbd2ViVmlldyBfY2xlYXJBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGE6
XnsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmaXNEb25lKTsKKworICAgIFt3ZWJWaWV3IHJlbG9hZF07CisgICAgRVhQRUNU
X1dLX1NUUkVRKFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JBbGVydF0sIGV4cGVjdGVkQWxlcnQpOwor
CisgICAgaXNEb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2FwcFByaXZhY3lSZXBvcnRUZXN0
aW5nRGF0YTogXihzdHJ1Y3QgV0tBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEgZGF0YSkgewor
ICAgICAgICBpZiAocmVzcG9uc2VUeXBlID09IFJlc3BvbnNlVHlwZTo6U3ludGhldGljKSB7Cisg
ICAgICAgICAgICBFWFBFQ1RfRkFMU0UoZGF0YS5oYXNMb2FkZWRBcHBJbml0aWF0ZWRSZXF1ZXN0
VGVzdGluZyk7CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoZGF0YS5oYXNMb2FkZWROb25BcHBJ
bml0aWF0ZWRSZXF1ZXN0VGVzdGluZyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBF
WFBFQ1RfRVEoZGF0YS5oYXNMb2FkZWRBcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZywgZXhwZWN0
aW5nQXBwSW5pdGlhdGVkUmVxdWVzdHMpOworICAgICAgICAgICAgRVhQRUNUX0VRKGRhdGEuaGFz
TG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcsICFleHBlY3RpbmdBcHBJbml0aWF0
ZWRSZXF1ZXN0cyk7CisgICAgICAgIH0KKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsK
KworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKK30KKworVEVTVChBcHBQ
cml2YWN5UmVwb3J0LCBOb25BcHBJbml0aWF0ZWRSZXF1ZXN0V2l0aFNlcnZpY2VXb3JrZXIpCit7
CisgICAgcnVuVGVzdChSZXNwb25zZVR5cGU6OlN5bnRoZXRpYywgSXNBcHBJbml0aWF0ZWQ6Ok5v
KTsKKyAgICBydW5UZXN0KFJlc3BvbnNlVHlwZTo6RmV0Y2hlZCwgSXNBcHBJbml0aWF0ZWQ6Ok5v
KTsKK30KKworVEVTVChBcHBQcml2YWN5UmVwb3J0LCBBcHBJbml0aWF0ZWRSZXF1ZXN0V2l0aFNl
cnZpY2VXb3JrZXIpCit7CisgICAgcnVuVGVzdChSZXNwb25zZVR5cGU6OlN5bnRoZXRpYywgSXNB
cHBJbml0aWF0ZWQ6Olllcyk7CisgICAgcnVuVGVzdChSZXNwb25zZVR5cGU6OkZldGNoZWQsIElz
QXBwSW5pdGlhdGVkOjpZZXMpOworfQorCitURVNUKEFwcFByaXZhY3lSZXBvcnQsIE11bHRpcGxl
V2ViVmlld3NXaXRoU2hhcmVkU2VydmljZVdvcmtlcikKK3sKKyAgICBzdGF0aWMgYm9vbCBpc0Rv
bmUgPSBmYWxzZTsKKworICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVd
IHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBl
c10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpe
KCkgeworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmaXNEb25lKTsKKworICAgIGNvbnN0IGNoYXIqIGpzID0gInNlbGYuYWRkRXZl
bnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgoZmV0Y2go
Jy9mZXRjaGVkLmh0bWwnKSkgfSkiOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkQWxlcnQgPSAi
ZmV0Y2hlZCBmcm9tIHNlcnZlciI7CisKKyAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNl
cnZlcih7CisgICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKKyAgICAgICAgeyAiL3N3
LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBq
cyB9IH0sCisgICAgICAgIHsgIi9mZXRjaGVkLmh0bWwiLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRj
aGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iIH0gfSwKKyAgICB9LCBUZXN0V2ViS2l0QVBJOjpI
VFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOworCisgICAgYXV0byB3ZWJWaWV3MSA9IGFkb3B0
TlMoW1dLV2ViVmlldyBuZXddKTsKKyAgICBhdXRvIHdlYlZpZXcyID0gYWRvcHROUyhbV0tXZWJW
aWV3IG5ld10pOworCisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9u
RGVsZWdhdGUgbmV3XSk7CisgICAgW2RlbGVnYXRlIHNldERpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZTpeKFdLV2ViVmlldyAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpj
aGFsbGVuZ2UsIHZvaWQgKF5jYWxsYmFjaykoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bv
c2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKikpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGNo
YWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRob2QsIE5TVVJMQXV0aGVu
dGljYXRpb25NZXRob2RTZXJ2ZXJUcnVzdCk7CisgICAgICAgIGNhbGxiYWNrKE5TVVJMU2Vzc2lv
bkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxG
b3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0XSk7CisgICAgfV07
CisgICAgd2ViVmlldzEuZ2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7
CisgICAgd2ViVmlldzIuZ2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7
CisKKyAgICBOU011dGFibGVVUkxSZXF1ZXN0ICphcHBJbml0aWF0ZWRSZXF1ZXN0ID0gW05TTXV0
YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwczovLzEyNy4wLjAuMTolZC8iLCBzZXJ2ZXIucG9y
dCgpXV1dOworICAgIGFwcEluaXRpYXRlZFJlcXVlc3QuYXR0cmlidXRpb24gPSBOU1VSTFJlcXVl
c3RBdHRyaWJ1dGlvbkRldmVsb3BlcjsKKyAgICBbd2ViVmlldzEgbG9hZFJlcXVlc3Q6YXBwSW5p
dGlhdGVkUmVxdWVzdF07CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3MSBfdGVzdF93YWl0
Rm9yQWxlcnRdLCAic3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyZWQiKTsKKworICAgIFt3ZWJWaWV3MSBy
ZWxvYWRdOworICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldzEgX3Rlc3Rfd2FpdEZvckFsZXJ0
XSwgZXhwZWN0ZWRBbGVydCk7CisKKyAgICBpc0RvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldzEg
X2FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YTogXihzdHJ1Y3QgV0tBcHBQcml2YWN5UmVwb3J0
VGVzdGluZ0RhdGEgZGF0YSkgeworICAgICAgICBFWFBFQ1RfVFJVRShkYXRhLmhhc0xvYWRlZEFw
cEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGRhdGEuaGFz
TG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcpOworICAgICAgICBpc0RvbmUgPSB0
cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwor
CisgICAgaXNEb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcxIF9jbGVhckFwcFByaXZhY3lSZXBv
cnRUZXN0aW5nRGF0YTpeeworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworCisgICAgaXNEb25lID0gZmFsc2U7
CisgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqbm9uQXBwSW5pdGlhdGVkUmVxdWVzdCA9IFtOU011
dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyLnBv
cnQoKV1dXTsKKyAgICBub25BcHBJbml0aWF0ZWRSZXF1ZXN0LmF0dHJpYnV0aW9uID0gTlNVUkxS
ZXF1ZXN0QXR0cmlidXRpb25Vc2VyOworICAgIFt3ZWJWaWV3MiBsb2FkUmVxdWVzdDpub25BcHBJ
bml0aWF0ZWRSZXF1ZXN0XTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcyIF90ZXN0X3dh
aXRGb3JBbGVydF0sICJmZXRjaGVkIGZyb20gc2VydmVyIik7CisKKyAgICBbd2ViVmlldzIgcmVs
b2FkXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcyIF90ZXN0X3dhaXRGb3JBbGVydF0s
IGV4cGVjdGVkQWxlcnQpOworCisgICAgW3dlYlZpZXcyIF9hcHBQcml2YWN5UmVwb3J0VGVzdGlu
Z0RhdGE6IF4oc3RydWN0IFdLQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhIGRhdGEpIHsKKyAg
ICAgICAgRVhQRUNUX0ZBTFNFKGRhdGEuaGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3Rp
bmcpOworICAgICAgICBFWFBFQ1RfVFJVRShkYXRhLmhhc0xvYWRlZE5vbkFwcEluaXRpYXRlZFJl
cXVlc3RUZXN0aW5nKTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Cit9CisKK3N0YXRpYyB2b2lkIHNvZnRVcGRh
dGVUZXN0KElzQXBwSW5pdGlhdGVkIGlzQXBwSW5pdGlhdGVkKQoreworICAgIHN0YXRpYyBib29s
IGlzRG9uZSA9IGZhbHNlOworICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3Rv
cmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFU
eXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxl
cjpeKCkgeworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtU
ZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOworICAgIFtkZWxlZ2F0ZSBzZXREaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6XihXS1dlYlZpZXcgKiwgTlNVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSAqY2hhbGxlbmdlLCB2b2lkICheY2FsbGJhY2spKE5TVVJMU2Vzc2lvbkF1dGhD
aGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICopKSB7CisgICAgICAgIEVYUEVD
VF9XS19TVFJFUShjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9k
LCBOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kU2VydmVyVHJ1c3QpOworICAgICAgICBjYWxsYmFj
ayhOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgW05TVVJMQ3JlZGVudGlh
bCBjcmVkZW50aWFsRm9yVHJ1c3Q6Y2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJUcnVz
dF0pOworICAgIH1dOworCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIHdlYlZpZXcxID0gYWRv
cHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgw
MCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBhdXRvIHdl
YlZpZXcyID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsK
KworICAgIHdlYlZpZXcxLmdldCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgp
OworICAgIHdlYlZpZXcyLmdldCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgp
OworCisgICAgdWludDE2X3Qgc2VydmVyUG9ydDsKKyAgICBzdGF0aWMgY29uc3QgY2hhcioganMg
PSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNw
b25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGlj
IHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIjsKKwor
ICAgIHsKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIxKHsKKyAgICAg
ICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKKyAgICAgICAgICAgIHsgIi9zdy5qcyIs
IHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9
LAorICAgICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMs
IG51bGxwdHIsIHRlc3RJZGVudGl0eSgpKTsKKyAgICAgICAgc2VydmVyUG9ydCA9IHNlcnZlcjEu
cG9ydCgpOworCisgICAgICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IHNlcnZlcjEucmVxdWVz
dCgpOworICAgICAgICBpZiAoaXNBcHBJbml0aWF0ZWQgPT0gSXNBcHBJbml0aWF0ZWQ6Ok5vKSB7
CisgICAgICAgICAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpub25BcHBJbml0aWF0ZWRSZXF1ZXN0
ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJp
bmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwczovLzEyNy4wLjAuMTolZC8iLCBz
ZXJ2ZXIxLnBvcnQoKV1dXTsKKyAgICAgICAgICAgIG5vbkFwcEluaXRpYXRlZFJlcXVlc3QuYXR0
cmlidXRpb24gPSBOU1VSTFJlcXVlc3RBdHRyaWJ1dGlvbkRldmVsb3BlcjsKKyAgICAgICAgICAg
IHJlcXVlc3QgPSBub25BcHBJbml0aWF0ZWRSZXF1ZXN0OworICAgICAgICB9CisKKyAgICAgICAg
W3dlYlZpZXcxIGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEo
W3dlYlZpZXcxIF90ZXN0X3dhaXRGb3JBbGVydF0sICJzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZCIp
OworCisgICAgICAgIHNlcnZlcjEuY2FuY2VsKCk7CisgICAgfQorCisgICAgeworICAgICAgICBU
ZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcjIoeworICAgICAgICAgICAgeyAiLyIsIHsg
bWFpblNXQnl0ZXMgfSB9LAorICAgICAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1U
eXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0KKyAgICAgICAgfSwgVGVz
dFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzLCBudWxscHRyLCB0ZXN0SWRl
bnRpdHkyKCksIHNlcnZlclBvcnQpOworCisgICAgICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKnJl
cXVlc3QyID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdp
dGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwczovLzEyNy4wLjAuMTol
ZC8iLCBzZXJ2ZXIyLnBvcnQoKV1dXTsKKyAgICAgICAgYXV0byBhdHRyaWJ1dGlvblZhbHVlID0g
aXNBcHBJbml0aWF0ZWQgPT0gSXNBcHBJbml0aWF0ZWQ6OlllcyA/IE5TVVJMUmVxdWVzdEF0dHJp
YnV0aW9uRGV2ZWxvcGVyIDogTlNVUkxSZXF1ZXN0QXR0cmlidXRpb25Vc2VyOworICAgICAgICBy
ZXF1ZXN0Mi5hdHRyaWJ1dGlvbiA9IGF0dHJpYnV0aW9uVmFsdWU7CisKKyAgICAgICAgaXNEb25l
ID0gZmFsc2U7CisgICAgICAgIFt3ZWJWaWV3MSBfY2xlYXJBcHBQcml2YWN5UmVwb3J0VGVzdGlu
Z0RhdGE6XnsKKyAgICAgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgICAgIH1dOworCisgICAg
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKworICAgICAgICBbd2ViVmll
dzIgbG9hZFJlcXVlc3Q6cmVxdWVzdDJdOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZp
ZXcyIF90ZXN0X3dhaXRGb3JBbGVydF0sICJzeW50aGV0aWMgcmVzcG9uc2UiKTsKKyAgICB9CisK
KyAgICBpc0RvbmUgPSBmYWxzZTsKKyAgICBib29sIGV4cGVjdGluZ0FwcEluaXRpYXRlZFJlcXVl
c3RzID0gaXNBcHBJbml0aWF0ZWQgPT0gSXNBcHBJbml0aWF0ZWQ6OlllcyA/IHRydWUgOiBmYWxz
ZTsKKyAgICB3aGlsZSAoIWlzRG9uZSkgeworICAgICAgICBbd2ViVmlldzIgX2FwcFByaXZhY3lS
ZXBvcnRUZXN0aW5nRGF0YTogXihzdHJ1Y3QgV0tBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEg
ZGF0YSkgeworICAgICAgICAgICAgaWYgKCFkYXRhLmRpZFBlcmZvcm1Tb2Z0VXBkYXRlKQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgRVhQRUNUX0VRKGRhdGEuaGFzTG9h
ZGVkQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcsIGV4cGVjdGluZ0FwcEluaXRpYXRlZFJlcXVl
c3RzKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShkYXRhLmhhc0xvYWRlZE5vbkFwcEluaXRpYXRl
ZFJlcXVlc3RUZXN0aW5nLCAhZXhwZWN0aW5nQXBwSW5pdGlhdGVkUmVxdWVzdHMpOworICAgICAg
ICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICAgICAgfV07CisgICAgICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnNwaW5SdW5Mb29wKDEpOworICAgIH0KK30KKworVEVTVChBcHBQcml2YWN5UmVwb3J0
LCBBcHBJbml0aWF0ZWRSZXF1ZXN0V2l0aFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlKQoreworICAg
IHNvZnRVcGRhdGVUZXN0KElzQXBwSW5pdGlhdGVkOjpZZXMpOworfQorCitURVNUKEFwcFByaXZh
Y3lSZXBvcnQsIE5vbkFwcEluaXRpYXRlZFJlcXVlc3RXaXRoU2VydmljZVdvcmtlclNvZnRVcGRh
dGUpCit7CisgICAgc29mdFVwZGF0ZVRlc3QoSXNBcHBJbml0aWF0ZWQ6Ok5vKTsKK30KKworc3Rh
dGljIHZvaWQgcnVuV2ViUHJvY2Vzc1BsdWdJblRlc3QoSXNBcHBJbml0aWF0ZWQgaXNBcHBJbml0
aWF0ZWQpCit7CisgICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtX
S1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNs
YXNzTmFtZTpAIkFwcFByaXZhY3lSZXBvcnRQbHVnSW4iXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAs
IDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKworICAgIE5TU3Ry
aW5nICp1cmwgPSBAImh0dHBzOi8vd2Via2l0Lm9yZyI7CisKKyAgICBfX2Jsb2NrIGJvb2wgaXNE
b25lID0gZmFsc2U7CisgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU011dGFi
bGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOnVybF1dOwor
ICAgIGF1dG8gYXR0cmlidXRpb25WYWx1ZSA9IGlzQXBwSW5pdGlhdGVkID09IElzQXBwSW5pdGlh
dGVkOjpZZXMgPyBOU1VSTFJlcXVlc3RBdHRyaWJ1dGlvbkRldmVsb3BlciA6IE5TVVJMUmVxdWVz
dEF0dHJpYnV0aW9uVXNlcjsKKyAgICByZXF1ZXN0LmF0dHJpYnV0aW9uID0gYXR0cmlidXRpb25W
YWx1ZTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworICAgIFt3ZWJWaWV3
IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKworICAgIGlzRG9uZSA9IGZhbHNl
OworICAgIGJvb2wgZXhwZWN0aW5nQXBwSW5pdGlhdGVkUmVxdWVzdHMgPSBpc0FwcEluaXRpYXRl
ZCA9PSBJc0FwcEluaXRpYXRlZDo6WWVzID8gdHJ1ZSA6IGZhbHNlOworICAgIFt3ZWJWaWV3IF9h
cHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGE6XihzdHJ1Y3QgV0tBcHBQcml2YWN5UmVwb3J0VGVz
dGluZ0RhdGEgZGF0YSkgeworICAgICAgICBFWFBFQ1RfRVEoZGF0YS5oYXNMb2FkZWRBcHBJbml0
aWF0ZWRSZXF1ZXN0VGVzdGluZywgZXhwZWN0aW5nQXBwSW5pdGlhdGVkUmVxdWVzdHMpOworICAg
ICAgICBFWFBFQ1RfRVEoZGF0YS5oYXNMb2FkZWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGlu
ZywgIWV4cGVjdGluZ0FwcEluaXRpYXRlZFJlcXVlc3RzKTsKKyAgICAgICAgaXNEb25lID0gdHJ1
ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKK30K
KworVEVTVChBcHBQcml2YWN5UmVwb3J0LCBXZWJQcm9jZXNzUGx1Z2luVGVzdEFwcEluaXRpYXRl
ZCkKK3sKKyAgICBydW5XZWJQcm9jZXNzUGx1Z0luVGVzdChJc0FwcEluaXRpYXRlZDo6WWVzKTsK
K30KKworVEVTVChBcHBQcml2YWN5UmVwb3J0LCBXZWJQcm9jZXNzUGx1Z2luVGVzdE5vbkFwcElu
aXRpYXRlZCkKK3sKKyAgICBydW5XZWJQcm9jZXNzUGx1Z0luVGVzdChJc0FwcEluaXRpYXRlZDo6
Tm8pOworfQorCisjaWYgV0tfSEFWRV9DX1NQSQorCitzdGF0aWMgY29uc3QgY2hhciogbWFpblNX
Qnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCis8c2NyaXB0PgorCitmdW5jdGlvbiBs
b2cobXNnKQoreworICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnN3LnBvc3RNZXNz
YWdlKG1zZyk7Cit9CisKK25hdmlnYXRvci5zZXJ2aWNlV29ya2VyLmFkZEV2ZW50TGlzdGVuZXIo
Im1lc3NhZ2UiLCBmdW5jdGlvbihldmVudCkgeworICAgIGxvZyhldmVudC5kYXRhKTsKK30pOwor
Cit0cnkgeworICAgIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKS50
aGVuKGZ1bmN0aW9uKHJlZykgeworICAgICAgICBpZiAocmVnLmFjdGl2ZSkgeworICAgICAgICAg
ICAgd29ya2VyID0gcmVnLmFjdGl2ZTsKKyAgICAgICAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSgi
U0VDT05EIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgd29ya2Vy
ID0gcmVnLmluc3RhbGxpbmc7CisgICAgICAgIHdvcmtlci5hZGRFdmVudExpc3RlbmVyKCdzdGF0
ZWNoYW5nZScsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgaWYgKHdvcmtlci5zdGF0ZSA9PSAn
YWN0aXZhdGVkJykKKyAgICAgICAgICAgICAgICB3b3JrZXIucG9zdE1lc3NhZ2UoIkZJUlNUIik7
CisgICAgICAgIH0pOworICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGVycm9yKSB7CisgICAgICAgIGxv
ZygnUmVnaXN0cmF0aW9uIGZhaWxlZCB3aXRoOiAnICsgZXJyb3IpOworICAgIH0pOworfSBjYXRj
aChlKSB7CisgICAgbG9nKCdFeGNlcHRpb246ICcgKyBlKTsKK30KKzwvc2NyaXB0PgorKVNXUkVT
T1VSQ0UiOworCitzdGF0aWMgY29uc3QgY2hhciogc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgPSBS
IlNXUkVTT1VSQ0UoCitzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBhc3luYyAoZXZl
bnQpID0+IHsKKyAgICBpZiAoIXNlbGYuaW50ZXJuYWxzKSB7CisgICAgICAgIGV2ZW50LnNvdXJj
ZS5wb3N0TWVzc2FnZSgnTm8gaW50ZXJuYWxzJyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBxdWVyeUFwcFByaXZhY3lSZXBvcnRWYWx1ZShldmVudCwgZmFsc2UpOworfSk7CisKK2Fz
eW5jIGZ1bmN0aW9uIHF1ZXJ5QXBwUHJpdmFjeVJlcG9ydFZhbHVlKGV2ZW50LCBoYXZlU2VudElu
aXRpYWxNZXNzYWdlKQoreworICAgIHZhciByZXN1bHQgPSBhd2FpdCBpbnRlcm5hbHMubGFzdE5h
dmlnYXRpb25XYXNBcHBQcml2YWN5UmVwb3J0KCk7CisgICAgaWYgKHJlc3VsdCkgeworICAgICAg
ICBpZiAoZXZlbnQuZGF0YSA9PSAiRklSU1QiKSB7CisgICAgICAgICAgICBldmVudC5zb3VyY2Uu
cG9zdE1lc3NhZ2UoJ2FwcCBpbml0aWF0ZWQnKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmICghaGF2ZVNlbnRJbml0aWFsTWVzc2FnZSkKKyAgICAgICAgICAg
IGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgnc3RhcnRzIGFwcCBpbml0aWF0ZWQnKTsKKworICAg
ICAgICBxdWVyeUFwcFByaXZhY3lSZXBvcnRWYWx1ZShldmVudCwgdHJ1ZSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoJ25vbiBhcHAgaW5p
dGlhdGVkJyk7Cit9CisKKylTV1JFU09VUkNFIjsKKworCitzdGF0aWMgU3RyaW5nIGV4cGVjdGVk
TWVzc2FnZTsKK3N0YXRpYyBib29sIHJlY2VpdmVkTWVzc2FnZSA9IGZhbHNlOworCitAaW50ZXJm
YWNlIFNXQXBwSW5pdGlhdGVkUmVxdWVzdE1lc3NhZ2VIYW5kbGVyIDogTlNPYmplY3QgPFdLU2Ny
aXB0TWVzc2FnZUhhbmRsZXI+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBTV0FwcEluaXRpYXRl
ZFJlcXVlc3RNZXNzYWdlSGFuZGxlcgorLSAodm9pZCl1c2VyQ29udGVudENvbnRyb2xsZXI6KFdL
VXNlckNvbnRlbnRDb250cm9sbGVyICopdXNlckNvbnRlbnRDb250cm9sbGVyIGRpZFJlY2VpdmVT
Y3JpcHRNZXNzYWdlOihXS1NjcmlwdE1lc3NhZ2UgKiltZXNzYWdlCit7CisgICAgRVhQRUNUX1dL
X1NUUkVRKG1lc3NhZ2UuYm9keSwgZXhwZWN0ZWRNZXNzYWdlKTsKKyAgICByZWNlaXZlZE1lc3Nh
Z2UgPSB0cnVlOworfQorQGVuZAorCitURVNUKEFwcFByaXZhY3lSZXBvcnQsIFJlZ2lzdGVyU2Vy
dmljZVdvcmtlckNsaWVudFVwZGF0ZXNBcHBJbml0aWF0ZWRWYWx1ZSkKK3sKKyAgICBzdGF0aWMg
Ym9vbCBpc0RvbmUgPSBmYWxzZTsKKworICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHRE
YXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0
ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9u
SGFuZGxlcjpeKCkgeworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKworICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRp
b24gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1
cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVy
bmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOworICAgIFdLUmV0YWluUHRyPFdLQ29u
dGV4dFJlZj4gY29udGV4dCA9IGFkb3B0V0soVGVzdFdlYktpdEFQSTo6VXRpbDo6Y3JlYXRlQ29u
dGV4dEZvckluamVjdGVkQnVuZGxlVGVzdCgiSW50ZXJuYWxzSW5qZWN0ZWRCdW5kbGVUZXN0Iikp
OworICAgIGNvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wgPSAoV0tQcm9jZXNzUG9vbCAqKWNvbnRl
eHQuZ2V0KCk7CisKKyAgICBSZXRhaW5QdHI8U1dBcHBJbml0aWF0ZWRSZXF1ZXN0TWVzc2FnZUhh
bmRsZXI+IG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1NXQXBwSW5pdGlhdGVkUmVxdWVzdE1l
c3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250
ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0
KCkgbmFtZTpAInN3Il07CisKKyAgICBhdXRvIHdlYlZpZXcxID0gYWRvcHROUyhbW1dLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1
cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIHdlYlZpZXcyID0gYWRvcHROUyhbW1dL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9w
dE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOworICAgIFtkZWxlZ2F0ZSBzZXREaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6XihXS1dlYlZpZXcgKiwgTlNVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLCB2b2lkICheY2FsbGJhY2spKE5TVVJMU2Vzc2lv
bkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICopKSB7CisgICAgICAg
IEVYUEVDVF9XS19TVFJFUShjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9u
TWV0aG9kLCBOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kU2VydmVyVHJ1c3QpOworICAgICAgICBj
YWxsYmFjayhOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgW05TVVJMQ3Jl
ZGVudGlhbCBjcmVkZW50aWFsRm9yVHJ1c3Q6Y2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5zZXJ2
ZXJUcnVzdF0pOworICAgIH1dOworCisgICAgd2ViVmlldzEuZ2V0KCkubmF2aWdhdGlvbkRlbGVn
YXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgd2ViVmlldzIuZ2V0KCkubmF2aWdhdGlvbkRlbGVn
YXRlID0gZGVsZWdhdGUuZ2V0KCk7CisKKyAgICBTZXJ2aWNlV29ya2VyVENQU2VydmVyIHNlcnZl
cih7CisgICAgICAgIHsgInRleHQvaHRtbCIsIG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlIH0sCisg
ICAgICAgIHsgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiLCBzY3JpcHRCeXRlc0RlZmF1bHRWYWx1
ZSB9LAorICAgIH0sIHsKKyAgICAgICAgeyAidGV4dC9odG1sIiwgbWFpblNXQnl0ZXNEZWZhdWx0
VmFsdWUgfSwKKyAgICAgICAgeyAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIsIHNjcmlwdEJ5dGVz
RGVmYXVsdFZhbHVlIH0sCisgICAgfSk7CisKKyAgICAvLyBMb2FkIFdlYlZpZXcgd2l0aCBhbiBh
cHAgaW5pdGlhdGVkIHJlcXVlc3QuIFdlIGV4cGVjdCB0aGUgU2VydmljZVdvcmtlclRocmVhZFBy
b3h5IHRvIGJlIGFwcCBpbml0aWF0ZWQuCisgICAgZXhwZWN0ZWRNZXNzYWdlID0gImFwcCBpbml0
aWF0ZWQiOworICAgIFt3ZWJWaWV3MSBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkTWVzc2FnZSk7CisKKyAgICAvLyBM
b2FkIFdlYlZpZXcgd2l0aCBhIG5vbiBhcHAgaW5pdGlhdGVkIHJlcXVlc3QuIFdlIGV4cGVjdCB0
aGUgU2VydmljZVdvcmtlclRocmVhZFByb3h5IHRvIGJlIGFwcCBpbml0aWF0ZWQKKyAgICAvLyBh
dCBmaXJzdCwgYnV0IHRoZW4gYmVjb21lIG5vbiBhcHAgaW5pdGlhdGVkIG9uY2UgdGhlIHNlY29u
ZCB3ZWJWaWV3IGlzIGNsb3NlZCBhbmQgaXRzIGNsaWVudCBpcyB1bnJlZ2lzdGVyZWQuCisgICAg
ZXhwZWN0ZWRNZXNzYWdlID0gInN0YXJ0cyBhcHAgaW5pdGlhdGVkIjsKKyAgICByZWNlaXZlZE1l
c3NhZ2UgPSBmYWxzZTsKKyAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpub25BcHBJbml0aWF0ZWRS
ZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdp
dGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwOi8vMTI3LjAuMC4xOiVk
L21haW4uaHRtbCIsIHNlcnZlci5wb3J0KCldXV07CisgICAgbm9uQXBwSW5pdGlhdGVkUmVxdWVz
dC5hdHRyaWJ1dGlvbiA9IE5TVVJMUmVxdWVzdEF0dHJpYnV0aW9uVXNlcjsKKworICAgIFt3ZWJW
aWV3MiBsb2FkUmVxdWVzdDpub25BcHBJbml0aWF0ZWRSZXF1ZXN0XTsKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkTWVzc2FnZSk7CisKKyAgICAvLyBDbG9zZSB0aGUgYXBw
IGluaXRpYXRlZCB2aWV3LiBXZSBleHBlY3QgdGhhdCB0aGUgZXhpc3Rpbmcgd29ya2VyIHdpbGwg
YmVjb21lIG5vbiBhcHAgaW5pdGlhdGVkCisgICAgLy8gbm93IHRoYXQgYWxsIGFwcCBpbml0aWF0
ZWQgY2xpZW50cyBoYXZlIGJlZW4gcmVtb3ZlZC4KKyAgICBleHBlY3RlZE1lc3NhZ2UgPSAibm9u
IGFwcCBpbml0aWF0ZWQiOworICAgIHJlY2VpdmVkTWVzc2FnZSA9IGZhbHNlOworICAgIFt3ZWJW
aWV3MSBfY2xvc2VdOworICAgIHdlYlZpZXcxID0gbnVsbHB0cjsKKworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRNZXNzYWdlKTsKK30KKworI2VuZGlmIC8vIFdLX0hBVkVf
Q19TUEkKKworI2VuZGlmIC8vIEFQUF9QUklWQUNZX1JFUE9SVApkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0UGx1Z0luLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0
UGx1Z0luLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhMTM3ZGQyZTEzMzU1ZTljY2QwNmE1ZDA4MmRlNjExMWUy
OWY1N2YKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0FwcFByaXZhY3lSZXBvcnRQbHVnSW4ubW0KQEAgLTAsMCArMSw0MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5o
IgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViUHJvY2Vzc1BsdWdJbi5oPgorI2ltcG9ydCA8V2ViS2l0
L1dLV2ViUHJvY2Vzc1BsdWdJbkxvYWREZWxlZ2F0ZS5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0
ci5oPgorCitAaW50ZXJmYWNlIEFwcFByaXZhY3lSZXBvcnRQbHVnSW4gOiBOU09iamVjdCA8V0tX
ZWJQcm9jZXNzUGx1Z0luLCBXS1dlYlByb2Nlc3NQbHVnSW5Mb2FkRGVsZWdhdGU+CitAZW5kCisK
K0BpbXBsZW1lbnRhdGlvbiBBcHBQcml2YWN5UmVwb3J0UGx1Z0luIHsgfQorCistIChOU1VSTFJl
cXVlc3QgKil3ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOihXS1dlYlBy
b2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKiljb250cm9sbGVyIGZyYW1lOihX
S1dlYlByb2Nlc3NQbHVnSW5GcmFtZSAqKWZyYW1lIHdpbGxTZW5kUmVxdWVzdEZvclJlc291cmNl
Oih1aW50NjRfdClyZXNvdXJjZSByZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHJlZGly
ZWN0UmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZWRpcmVjdFJlc3BvbnNlCit7CisgICAgcmV0
dXJuIGFkb3B0TlMoW1tOU1VSTFJlcXVlc3QgYWxsb2NdIGluaXRXaXRoVVJMOnJlcXVlc3QuVVJM
XSkuYXV0b3JlbGVhc2UoKTsKK30KKworQGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCmluZGV4
IGE1YzQ0Y2E1ODc5ZDQyZDhlMTRjYzkzNjg5ZDZhMjJlZjFjNTkxM2EuLmQ2Y2I2ZjEwNzdjNWJl
ZDUxZGRkYWFlMzkyZTJmZjQ5OTMxY2E3ZDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KQEAg
LTI1LDExICsyNSw5IEBACiAKICNpbXBvcnQgImNvbmZpZy5oIgogCi0jaW1wb3J0ICJIVFRQU2Vy
dmVyLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiU2VydmljZVdv
cmtlclRDUFNlcnZlci5oIgogI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgotI2lt
cG9ydCAiVGVzdFVJRGVsZWdhdGUuaCIKICNpbXBvcnQgIlRlc3RVUkxTY2hlbWVIYW5kbGVyLmgi
CiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0
aW9uRXh0cmFzLmgiCkBAIC0xNDE3LDYyNiArMTQxNSwzIEBAIFRFU1QoSW5BcHBCcm93c2VyUHJp
dmFjeSwgQWJvdXRCbGFua1N1YkZyYW1lTWF0Y2hlc1RvcEZyYW1lTm9uQXBwQm91bmQpCiB9CiAK
ICNlbmRpZiAvLyBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCi0KLSNpZiBFTkFCTEUoQVBQX1BS
SVZBQ1lfUkVQT1JUKQotVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZFJlcXVlc3Qp
Ci17Ci0gICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsKLQotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgTlNTdHJpbmcgKnVybCA9IEAiaHR0cHM6Ly93ZWJr
aXQub3JnIjsKLQotICAgIF9fYmxvY2sgYm9vbCBpc0RvbmUgPSBmYWxzZTsKLSAgICBOU011dGFi
bGVVUkxSZXF1ZXN0ICpub25BcHBCb3VuZFJlcXVlc3QgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCBy
ZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzp1cmxdXTsKLQotICAgIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgbm9uQXBwQm91bmRSZXF1ZXN0Ll9pc05v
bkFwcEluaXRpYXRlZCA9IFlFUzsKLSAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19F
TkQKLQotICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0Om5vbkFwcEJvdW5kUmVxdWVzdF07Ci0gICAg
W3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwotCi0gICAgW3dlYlZp
ZXcgX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6XihCT09MIGlzQXBwQm91bmQpIHsKLSAgICAg
ICAgRVhQRUNUX0ZBTFNFKGlzQXBwQm91bmQpOwotICAgICAgICBpc0RvbmUgPSB0cnVlOwotICAg
IH1dOwotCi0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwotICAgIAotICAg
IGlzRG9uZSA9IGZhbHNlOwotICAgIFt3ZWJWaWV3IF9hcHBCb3VuZE5hdmlnYXRpb25EYXRhOl4o
c3RydWN0IFdLQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEgZGF0YSkgewotICAgICAgICBF
WFBFQ1RfRkFMU0UoZGF0YS5oYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nKTsKLSAgICAg
ICAgRVhQRUNUX1RSVUUoZGF0YS5oYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nKTsK
LSAgICAgICAgaXNEb25lID0gdHJ1ZTsKLSAgICB9XTsKLQotICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmaXNEb25lKTsKLX0KLQotVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3Vu
ZFJlcXVlc3RXaXRoTmF2aWdhdGlvbikKLXsKLSAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotCi0gICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dS
ZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBOU1N0cmlu
ZyAqc3RhcnRpbmdVUkwgPSBAImh0dHBzOi8vd3d3LndlYmtpdC5vcmciOwotICAgIE5TU3RyaW5n
ICpub25BcHBCb3VuZFVSTCA9IEAiaHR0cHM6Ly93d3cuYXBwbGUuY29tIjsKLQotICAgIE5TTXV0
YWJsZVVSTFJlcXVlc3QgKnN0YXJ0aW5nUmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJl
cXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOnN0YXJ0aW5nVVJMXV07Ci0KLSAgICBb
d2ViVmlldyBsb2FkUmVxdWVzdDpzdGFydGluZ1JlcXVlc3RdOwotICAgIFt3ZWJWaWV3IF90ZXN0
X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKLQotICAgIF9fYmxvY2sgYm9vbCBpc0RvbmUg
PSBmYWxzZTsKLSAgICBbd2ViVmlldyBfbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDpeKEJPT0wg
aXNBcHBCb3VuZCkgewotICAgICAgICBFWFBFQ1RfVFJVRShpc0FwcEJvdW5kKTsKLSAgICAgICAg
aXNEb25lID0gdHJ1ZTsKLSAgICB9XTsKLQotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
aXNEb25lKTsKLSAgICAKLSAgICBpc0RvbmUgPSBmYWxzZTsKLSAgICBbd2ViVmlldyBfYXBwQm91
bmROYXZpZ2F0aW9uRGF0YTpeKHN0cnVjdCBXS0FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRh
IGRhdGEpIHsKLSAgICAgICAgRVhQRUNUX1RSVUUoZGF0YS5oYXNMb2FkZWRBcHBCb3VuZFJlcXVl
c3RUZXN0aW5nKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKGRhdGEuaGFzTG9hZGVkTm9uQXBwQm91
bmRSZXF1ZXN0VGVzdGluZyk7Ci0gICAgICAgIGlzRG9uZSA9IHRydWU7Ci0gICAgfV07Ci0KLSAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Ci0gICAgCi0gICAgaXNEb25lID0g
ZmFsc2U7Ci0gICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqbm9uQXBwQm91bmRSZXF1ZXN0ID0gW05T
TXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6bm9u
QXBwQm91bmRVUkxdXTsKLSAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgot
ICAgIG5vbkFwcEJvdW5kUmVxdWVzdC5faXNOb25BcHBJbml0aWF0ZWQgPSBZRVM7Ci0gICAgQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi0gICAgCi0gICAgaXNEb25lID0gZmFsc2U7
Ci0gICAgW3dlYlZpZXcgX2NsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YTpeewotICAgICAgICBp
c0RvbmUgPSB0cnVlOwotICAgIH1dOwotCi0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZp
c0RvbmUpOwotCi0gICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6bm9uQXBwQm91bmRSZXF1ZXN0XTsK
LSAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07Ci0KLSAgICBb
d2ViVmlldyBfbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDpeKEJPT0wgaXNBcHBCb3VuZCkgewot
ICAgICAgICBFWFBFQ1RfRkFMU0UoaXNBcHBCb3VuZCk7Ci0gICAgICAgIGlzRG9uZSA9IHRydWU7
Ci0gICAgfV07Ci0KLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Ci0gICAg
Ci0gICAgaXNEb25lID0gZmFsc2U7Ci0gICAgW3dlYlZpZXcgX2FwcEJvdW5kTmF2aWdhdGlvbkRh
dGE6XihzdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBkYXRhKSB7Ci0gICAg
ICAgIEVYUEVDVF9GQUxTRShkYXRhLmhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcpOwot
ICAgICAgICBFWFBFQ1RfVFJVRShkYXRhLmhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3Rp
bmcpOwotICAgICAgICBpc0RvbmUgPSB0cnVlOwotICAgIH1dOwotCi0gICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZpc0RvbmUpOwotfQotCi1URVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFw
cEJvdW5kUmVxdWVzdFdpdGhTdWJGcmFtZSkKLXsKLSAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIFtjb25m
aWd1cmF0aW9uIF9zZXRPdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeTpAInNjcmlwdC1zcmMg
J25vbmNlLWInIl07Ci0KLSAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1
cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VO
YW1lZDpAInBhZ2Utd2l0aC1jc3AiXTsKLQotICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAi
TWFpbkZyYW1lOiBCIl07Ci0gICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJTdWJmcmFtZTog
QiJdOwotCi0gICAgX19ibG9jayBib29sIGlzRG9uZSA9IGZhbHNlOwotICAgIFt3ZWJWaWV3IF9h
cHBCb3VuZE5hdmlnYXRpb25EYXRhOl4oc3RydWN0IFdLQXBwQm91bmROYXZpZ2F0aW9uVGVzdGlu
Z0RhdGEgZGF0YSkgewotICAgICAgICBFWFBFQ1RfVFJVRShkYXRhLmhhc0xvYWRlZEFwcEJvdW5k
UmVxdWVzdFRlc3RpbmcpOwotICAgICAgICBFWFBFQ1RfRkFMU0UoZGF0YS5oYXNMb2FkZWROb25B
cHBCb3VuZFJlcXVlc3RUZXN0aW5nKTsKLSAgICAgICAgaXNEb25lID0gdHJ1ZTsKLSAgICB9XTsK
LQotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKLX07Ci0KLVRFU1QoSW5B
cHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmRSZXF1ZXN0V2l0aFN1YkZyYW1lKQotewotICAg
IGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSk7Ci0gICAgW2NvbmZpZ3VyYXRpb24gX3NldE92ZXJyaWRlQ29udGVudFNlY3Vy
aXR5UG9saWN5OkAic2NyaXB0LXNyYyAnbm9uY2UtYiciXTsKLQotICAgIF9fYmxvY2sgYm9vbCBp
c0RvbmUgPSBmYWxzZTsKLSAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1
cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpu
b25BcHBCb3VuZFJlcXVlc3QgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpb
W05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAicGFnZS13aXRoLWNzcCIgd2l0
aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2Vz
Il1dOwotICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgbm9uQXBw
Qm91bmRSZXF1ZXN0Ll9pc05vbkFwcEluaXRpYXRlZCA9IFlFUzsKLSAgICBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19FTkQKLQotICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0Om5vbkFwcEJv
dW5kUmVxdWVzdF07Ci0KLSAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIk1haW5GcmFtZTog
QiJdOwotICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiU3ViZnJhbWU6IEIiXTsKLQotICAg
IFt3ZWJWaWV3IF9hcHBCb3VuZE5hdmlnYXRpb25EYXRhOiBeKHN0cnVjdCBXS0FwcEJvdW5kTmF2
aWdhdGlvblRlc3RpbmdEYXRhIGRhdGEpIHsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKGRhdGEuaGFz
TG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZyk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKGRhdGEu
aGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZyk7Ci0gICAgICAgIGlzRG9uZSA9IHRy
dWU7Ci0gICAgfV07Ci0KLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Ci19
OwotCi1zdGF0aWMgY29uc3QgY2hhciogbWFpblNXQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCi08c2Ny
aXB0PgotdHJ5IHsKLSAgICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3Lmpz
JykudGhlbihmdW5jdGlvbihyZWcpIHsKLSAgICAgICAgaWYgKHJlZy5hY3RpdmUpIHsKLSAgICAg
ICAgICAgIGFsZXJ0KCd3b3JrZXIgYWxyZWFkeSBhY3RpdmUnKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotICAgICAgICB3b3JrZXIgPSByZWcuaW5zdGFsbGluZzsKLSAgICAgICAg
d29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoJ3N0YXRlY2hhbmdlJywgZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICAgICBpZiAod29ya2VyLnN0YXRlID09ICdhY3RpdmF0ZWQnKQotICAgICAgICAgICAgICAg
IGFsZXJ0KCdzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZCcpOwotICAgICAgICB9KTsKLSAgICB9KS5j
YXRjaChmdW5jdGlvbihlcnJvcikgewotICAgICAgICBhbGVydCgnUmVnaXN0cmF0aW9uIGZhaWxl
ZCB3aXRoOiAnICsgZXJyb3IpOwotICAgIH0pOwotfSBjYXRjaChlKSB7Ci0gICAgYWxlcnQoJ0V4
Y2VwdGlvbjogJyArIGUpOwotfQotPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7Ci0KLWVudW0gY2xh
c3MgUmVzcG9uc2VUeXBlIHsgU3ludGhldGljLCBGZXRjaGVkIH07Ci1lbnVtIGNsYXNzIElzQXBw
Qm91bmQgOiBib29sIHsgTm8sIFllcyB9Owotc3RhdGljIHZvaWQgcnVuVGVzdChSZXNwb25zZVR5
cGUgcmVzcG9uc2VUeXBlLCBJc0FwcEJvdW5kIGFwcEJvdW5kKQotewotICAgIHN0YXRpYyBib29s
IGlzRG9uZSA9IGZhbHNlOwotICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3Rv
cmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFU
eXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxl
cjpeKCkgewotICAgICAgICBpc0RvbmUgPSB0cnVlOwotICAgIH1dOwotICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKLQotICAgIGNvbnN0IGNoYXIqIGpzID0gbnVsbHB0cjsK
LSAgICBjb25zdCBjaGFyKiBleHBlY3RlZEFsZXJ0ID0gbnVsbHB0cjsKLQotICAgIHN3aXRjaCAo
cmVzcG9uc2VUeXBlKSB7Ci0gICAgY2FzZSBSZXNwb25zZVR5cGU6OlN5bnRoZXRpYzoKLSAgICAg
ICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVu
dC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3lu
dGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0p
IjsKLSAgICAgICAgZXhwZWN0ZWRBbGVydCA9ICJzeW50aGV0aWMgcmVzcG9uc2UiOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIFJlc3BvbnNlVHlwZTo6RmV0Y2hlZDoKLSAgICAgICAganMgPSAi
c2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25k
V2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KTsiOwotICAgICAgICBleHBlY3RlZEFsZXJ0
ID0gImZldGNoZWQgZnJvbSBzZXJ2ZXIiOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBU
ZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5T
V0J5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFw
cGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCi0gICAgICAgIHsgIi9mZXRjaGVkLmh0
bWwiLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iIH0g
fSwKLSAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwot
Ci0gICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwotCi0gICAgYXV0
byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7Ci0gICAg
W2RlbGVnYXRlIHNldERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpeKFdLV2ViVmll
dyAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UsIHZvaWQgKF5jYWxs
YmFjaykoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRp
YWwgKikpIHsKLSAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3Bh
Y2UuYXV0aGVudGljYXRpb25NZXRob2QsIE5TVVJMQXV0aGVudGljYXRpb25NZXRob2RTZXJ2ZXJU
cnVzdCk7Ci0gICAgICAgIGNhbGxiYWNrKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVk
ZW50aWFsLCBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJv
dGVjdGlvblNwYWNlLnNlcnZlclRydXN0XSk7Ci0gICAgfV07Ci0gICAgd2ViVmlldy5nZXQoKS5u
YXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKLQotICAgIE5TVVJMUmVxdWVzdCAq
cmVxdWVzdCA9IHNlcnZlci5yZXF1ZXN0KCk7Ci0gICAgaWYgKGFwcEJvdW5kID09IElzQXBwQm91
bmQ6Ok5vKSB7Ci0gICAgICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5vbkFwcEJvdW5kUmVxdWVz
dCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwg
c2VydmVyLnBvcnQoKV1dXTsKLSAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
QkVHSU4KLSAgICAgICAgbm9uQXBwQm91bmRSZXF1ZXN0Ll9pc05vbkFwcEluaXRpYXRlZCA9IFlF
UzsKLSAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi0gICAgICAgIHJl
cXVlc3QgPSBub25BcHBCb3VuZFJlcXVlc3Q7Ci0gICAgfQotCi0gICAgW3dlYlZpZXcgbG9hZFJl
cXVlc3Q6cmVxdWVzdF07Ci0gICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IF90ZXN0X3dhaXRG
b3JBbGVydF0sICJzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZCIpOwotCi0gICAgaWYgKHJlc3BvbnNl
VHlwZSAhPSBSZXNwb25zZVR5cGU6OkZldGNoZWQpCi0gICAgICAgIHNlcnZlci5jYW5jZWwoKTsK
LQotICAgIGJvb2wgZXhwZWN0aW5nQXBwQm91bmRSZXF1ZXN0cyA9IGFwcEJvdW5kID09IElzQXBw
Qm91bmQ6OlllczsKLSAgICBpc0RvbmUgPSBmYWxzZTsKLSAgICBbd2ViVmlldyBfYXBwQm91bmRO
YXZpZ2F0aW9uRGF0YTogXihzdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBk
YXRhKSB7Ci0gICAgICAgIEVYUEVDVF9FUShkYXRhLmhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRl
c3RpbmcsIGV4cGVjdGluZ0FwcEJvdW5kUmVxdWVzdHMpOwotICAgICAgICBFWFBFQ1RfRVEoZGF0
YS5oYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nLCAhZXhwZWN0aW5nQXBwQm91bmRS
ZXF1ZXN0cyk7Ci0gICAgICAgIGlzRG9uZSA9IHRydWU7Ci0gICAgfV07Ci0KLSAgICBpc0RvbmUg
PSBmYWxzZTsKLSAgICBbd2ViVmlldyBfY2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhOl57Ci0g
ICAgICAgIGlzRG9uZSA9IHRydWU7Ci0gICAgfV07Ci0KLSAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmlzRG9uZSk7Ci0KLSAgICBbd2ViVmlldyByZWxvYWRdOwotICAgIEVYUEVDVF9XS19T
VFJFUShbd2ViVmlldyBfdGVzdF93YWl0Rm9yQWxlcnRdLCBleHBlY3RlZEFsZXJ0KTsKLQotICAg
IGlzRG9uZSA9IGZhbHNlOwotICAgIFt3ZWJWaWV3IF9hcHBCb3VuZE5hdmlnYXRpb25EYXRhOiBe
KHN0cnVjdCBXS0FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhIGRhdGEpIHsKLSAgICAgICAg
aWYgKHJlc3BvbnNlVHlwZSA9PSBSZXNwb25zZVR5cGU6OlN5bnRoZXRpYykgewotICAgICAgICAg
ICAgRVhQRUNUX0ZBTFNFKGRhdGEuaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZyk7Ci0g
ICAgICAgICAgICBFWFBFQ1RfRkFMU0UoZGF0YS5oYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RU
ZXN0aW5nKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIEVYUEVDVF9FUShkYXRhLmhh
c0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcsIGV4cGVjdGluZ0FwcEJvdW5kUmVxdWVzdHMp
OwotICAgICAgICAgICAgRVhQRUNUX0VRKGRhdGEuaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0
VGVzdGluZywgIWV4cGVjdGluZ0FwcEJvdW5kUmVxdWVzdHMpOwotICAgICAgICB9Ci0gICAgICAg
IGlzRG9uZSA9IHRydWU7Ci0gICAgfV07Ci0KLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmlzRG9uZSk7Ci19Ci0KLVRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmRSZXF1
ZXN0V2l0aFNlcnZpY2VXb3JrZXIpCi17Ci0gICAgcnVuVGVzdChSZXNwb25zZVR5cGU6OlN5bnRo
ZXRpYywgSXNBcHBCb3VuZDo6Tm8pOwotICAgIHJ1blRlc3QoUmVzcG9uc2VUeXBlOjpGZXRjaGVk
LCBJc0FwcEJvdW5kOjpObyk7Ci19Ci0KLVRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91
bmRSZXF1ZXN0V2l0aFNlcnZpY2VXb3JrZXIpCi17Ci0gICAgcnVuVGVzdChSZXNwb25zZVR5cGU6
OlN5bnRoZXRpYywgSXNBcHBCb3VuZDo6WWVzKTsKLSAgICBydW5UZXN0KFJlc3BvbnNlVHlwZTo6
RmV0Y2hlZCwgSXNBcHBCb3VuZDo6WWVzKTsKLX0KLQotVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5
LCBNdWx0aXBsZVdlYlZpZXdzV2l0aFNoYXJlZFNlcnZpY2VXb3JrZXIpCi17Ci0gICAgc3RhdGlj
IGJvb2wgaXNEb25lID0gZmFsc2U7Ci0KLSAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0
RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNp
dGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlv
bkhhbmRsZXI6XigpIHsKLSAgICAgICAgaXNEb25lID0gdHJ1ZTsKLSAgICB9XTsKLSAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Ci0KLSAgICBjb25zdCBjaGFyKiBqcyA9ICJz
ZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRX
aXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pIjsKLSAgICBjb25zdCBjaGFyKiBleHBlY3Rl
ZEFsZXJ0ID0gImZldGNoZWQgZnJvbSBzZXJ2ZXIiOwotCi0gICAgVGVzdFdlYktpdEFQSTo6SFRU
UFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAg
ICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2Ny
aXB0IiB9fSwganMgfSB9LAotICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIiwgeyAiPHNjcmlwdD5h
bGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+IiB9IH0sCi0gICAgfSwgVGVzdFdl
YktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKLQotICAgIGF1dG8gd2ViVmll
dzEgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7Ci0gICAgYXV0byB3ZWJWaWV3MiA9IGFkb3B0
TlMoW1dLV2ViVmlldyBuZXddKTsKLQotICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0
TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOwotICAgIFtkZWxlZ2F0ZSBzZXREaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2U6XihXS1dlYlZpZXcgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSAqY2hhbGxlbmdlLCB2b2lkICheY2FsbGJhY2spKE5TVVJMU2Vzc2lvbkF1dGhDaGFs
bGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICopKSB7Ci0gICAgICAgIEVYUEVDVF9X
S19TVFJFUShjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kLCBO
U1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kU2VydmVyVHJ1c3QpOwotICAgICAgICBjYWxsYmFjayhO
U1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgW05TVVJMQ3JlZGVudGlhbCBj
cmVkZW50aWFsRm9yVHJ1c3Q6Y2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJUcnVzdF0p
OwotICAgIH1dOwotICAgIHdlYlZpZXcxLmdldCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVn
YXRlLmdldCgpOwotICAgIHdlYlZpZXcyLmdldCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVn
YXRlLmdldCgpOwotCi0gICAgW3dlYlZpZXcxIGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCld
OwotICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldzEgX3Rlc3Rfd2FpdEZvckFsZXJ0XSwgInN1
Y2Nlc3NmdWxseSByZWdpc3RlcmVkIik7Ci0KLSAgICBbd2ViVmlldzEgcmVsb2FkXTsKLSAgICBF
WFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcxIF90ZXN0X3dhaXRGb3JBbGVydF0sIGV4cGVjdGVkQWxl
cnQpOwotCi0gICAgaXNEb25lID0gZmFsc2U7Ci0gICAgW3dlYlZpZXcxIF9hcHBCb3VuZE5hdmln
YXRpb25EYXRhOiBeKHN0cnVjdCBXS0FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhIGRhdGEp
IHsKLSAgICAgICAgRVhQRUNUX1RSVUUoZGF0YS5oYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0
aW5nKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKGRhdGEuaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1
ZXN0VGVzdGluZyk7Ci0gICAgICAgIGlzRG9uZSA9IHRydWU7Ci0gICAgfV07Ci0KLSAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Ci0KLSAgICBpc0RvbmUgPSBmYWxzZTsKLSAg
ICBbd2ViVmlldzEgX2NsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YTpeewotICAgICAgICBpc0Rv
bmUgPSB0cnVlOwotICAgIH1dOwotCi0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0Rv
bmUpOwotCi0gICAgaXNEb25lID0gZmFsc2U7Ci0gICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqbm9u
QXBwQm91bmRSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05T
VVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwczovLzEy
Ny4wLjAuMTolZC9tYWluLmh0bWwiLCBzZXJ2ZXIucG9ydCgpXV1dOwotICAgIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgbm9uQXBwQm91bmRSZXF1ZXN0Ll9pc05vbkFw
cEluaXRpYXRlZCA9IFlFUzsKLSAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQK
LSAgICBbd2ViVmlldzIgbG9hZFJlcXVlc3Q6bm9uQXBwQm91bmRSZXF1ZXN0XTsKLSAgICBFWFBF
Q1RfV0tfU1RSRVEoW3dlYlZpZXcyIF90ZXN0X3dhaXRGb3JBbGVydF0sICJmZXRjaGVkIGZyb20g
c2VydmVyIik7Ci0KLSAgICBbd2ViVmlldzIgcmVsb2FkXTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEo
W3dlYlZpZXcyIF90ZXN0X3dhaXRGb3JBbGVydF0sIGV4cGVjdGVkQWxlcnQpOwotCi0gICAgW3dl
YlZpZXcyIF9hcHBCb3VuZE5hdmlnYXRpb25EYXRhOiBeKHN0cnVjdCBXS0FwcEJvdW5kTmF2aWdh
dGlvblRlc3RpbmdEYXRhIGRhdGEpIHsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKGRhdGEuaGFzTG9h
ZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZyk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKGRhdGEuaGFz
TG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZyk7Ci0gICAgICAgIGlzRG9uZSA9IHRydWU7
Ci0gICAgfV07Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwotICAgIGlz
RG9uZSA9IGZhbHNlOwotfQotCi1zdGF0aWMgdm9pZCBzb2Z0VXBkYXRlVGVzdChJc0FwcEJvdW5k
IGlzQXBwQm91bmQpCi17Ci0gICAgX19ibG9jayBib29sIGlzRG9uZSA9IGZhbHNlOwotICAgIFtb
V0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltX
S1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNE
YXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgewotICAgICAgICBpc0RvbmUg
PSB0cnVlOwotICAgIH1dOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsK
LQotICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5l
d10pOwotICAgIFtkZWxlZ2F0ZSBzZXREaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6
XihXS1dlYlZpZXcgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLCB2
b2lkICheY2FsbGJhY2spKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNV
UkxDcmVkZW50aWFsICopKSB7Ci0gICAgICAgIEVYUEVDVF9XS19TVFJFUShjaGFsbGVuZ2UucHJv
dGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kLCBOU1VSTEF1dGhlbnRpY2F0aW9uTWV0
aG9kU2VydmVyVHJ1c3QpOwotICAgICAgICBjYWxsYmFjayhOU1VSTFNlc3Npb25BdXRoQ2hhbGxl
bmdlVXNlQ3JlZGVudGlhbCwgW05TVVJMQ3JlZGVudGlhbCBjcmVkZW50aWFsRm9yVHJ1c3Q6Y2hh
bGxlbmdlLnByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJUcnVzdF0pOwotICAgIH1dOwotCi0gICAgYXV0
byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKLSAgICBhdXRvIHdlYlZpZXcxID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBhdXRvIHdlYlZpZXcyID0gYWRvcHROUyhbW1dLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLQotICAgIHdlYlZpZXcxLmdldCgpLm5h
dmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwotICAgIHdlYlZpZXcyLmdldCgpLm5h
dmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwotCi0gICAgdWludDE2X3Qgc2VydmVy
UG9ydDsKLSAgICBzdGF0aWMgY29uc3QgY2hhcioganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVy
KCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3
IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10s
IHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIjsKLQotICAgIHsKLSAgICAgICAgVGVzdFdlYktp
dEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIxKHsKLSAgICAgICAgICAgIHsgIi8iLCB7IG1haW5TV0J5
dGVzIH0gfSwKLSAgICAgICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJh
cHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9LAotICAgICAgICB9LCBUZXN0V2ViS2l0
QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIHRlc3RJZGVudGl0eSgp
KTsKLSAgICAgICAgc2VydmVyUG9ydCA9IHNlcnZlcjEucG9ydCgpOwotCi0gICAgICAgIE5TVVJM
UmVxdWVzdCAqcmVxdWVzdCA9IHNlcnZlcjEucmVxdWVzdCgpOwotICAgICAgICBpZiAoaXNBcHBC
b3VuZCA9PSBJc0FwcEJvdW5kOjpObykgewotICAgICAgICAgICAgTlNNdXRhYmxlVVJMUmVxdWVz
dCAqbm9uQXBwQm91bmRSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhV
Ukw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRw
czovLzEyNy4wLjAuMTolZC8iLCBzZXJ2ZXIxLnBvcnQoKV1dXTsKLSAgICAgICAgICAgIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgICAgICAgICBub25BcHBCb3VuZFJl
cXVlc3QuX2lzTm9uQXBwSW5pdGlhdGVkID0gWUVTOwotICAgICAgICAgICAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECi0gICAgICAgICAgICByZXF1ZXN0ID0gbm9uQXBwQm91bmRS
ZXF1ZXN0OwotICAgICAgICB9Ci0KLSAgICAgICAgW3dlYlZpZXcxIGxvYWRSZXF1ZXN0OnJlcXVl
c3RdOwotICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcxIF90ZXN0X3dhaXRGb3JBbGVy
dF0sICJzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZCIpOwotCi0gICAgICAgIHNlcnZlcjEuY2FuY2Vs
KCk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNl
cnZlcjIoewotICAgICAgICAgICAgeyAiLyIsIHsgbWFpblNXQnl0ZXMgfSB9LAotICAgICAgICAg
ICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3Jp
cHQiIH19LCBqcyB9IH0KLSAgICAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJv
dG9jb2w6Okh0dHBzLCBudWxscHRyLCB0ZXN0SWRlbnRpdHkyKCksIHNlcnZlclBvcnQpOwotCi0g
ICAgICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdDIgPSBzZXJ2ZXIyLnJlcXVlc3QoKTsKLSAgICAg
ICAgaWYgKGlzQXBwQm91bmQgPT0gSXNBcHBCb3VuZDo6Tm8pIHsKLSAgICAgICAgICAgIE5TTXV0
YWJsZVVSTFJlcXVlc3QgKm5vbkFwcEJvdW5kUmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0
IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyMi5wb3J0KCldXV07Ci0gICAg
ICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgICAgICAgICAg
bm9uQXBwQm91bmRSZXF1ZXN0Ll9pc05vbkFwcEluaXRpYXRlZCA9IFlFUzsKLSAgICAgICAgICAg
IEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotICAgICAgICAgICAgcmVxdWVzdDIg
PSBub25BcHBCb3VuZFJlcXVlc3Q7Ci0gICAgICAgIH0KLQotICAgICAgICBpc0RvbmUgPSBmYWxz
ZTsKLSAgICAgICAgW3dlYlZpZXcxIF9jbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGE6XnsKLSAg
ICAgICAgICAgIGlzRG9uZSA9IHRydWU7Ci0gICAgICAgIH1dOwotCi0gICAgICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKLQotICAgICAgICBbd2ViVmlldzIgbG9hZFJlcXVl
c3Q6cmVxdWVzdDJdOwotICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcyIF90ZXN0X3dh
aXRGb3JBbGVydF0sICJzeW50aGV0aWMgcmVzcG9uc2UiKTsKLSAgICB9Ci0KLSAgICBpc0RvbmUg
PSBmYWxzZTsKLSAgICBib29sIGV4cGVjdGluZ0FwcEJvdW5kUmVxdWVzdHMgPSBpc0FwcEJvdW5k
ID09IElzQXBwQm91bmQ6OlllcyA/IHRydWUgOiBmYWxzZTsKLSAgICB3aGlsZSAoIWlzRG9uZSkg
ewotICAgICAgICBbd2ViVmlldzIgX2FwcEJvdW5kTmF2aWdhdGlvbkRhdGE6IF4oc3RydWN0IFdL
QXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEgZGF0YSkgewotICAgICAgICAgICAgaWYgKCFk
YXRhLmRpZFBlcmZvcm1Tb2Z0VXBkYXRlKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICAgICAgRVhQRUNUX0VRKGRhdGEuaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZywg
ZXhwZWN0aW5nQXBwQm91bmRSZXF1ZXN0cyk7Ci0gICAgICAgICAgICBFWFBFQ1RfRVEoZGF0YS5o
YXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nLCAhZXhwZWN0aW5nQXBwQm91bmRSZXF1
ZXN0cyk7Ci0gICAgICAgICAgICBpc0RvbmUgPSB0cnVlOwotICAgICAgICB9XTsKLSAgICAgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6c3BpblJ1bkxvb3AoMSk7Ci0gICAgfQotfQotCi1URVNUKElu
QXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kUmVxdWVzdFdpdGhTZXJ2aWNlV29ya2VyU29mdFVw
ZGF0ZSkKLXsKLSAgICBzb2Z0VXBkYXRlVGVzdChJc0FwcEJvdW5kOjpZZXMpOwotfQotCi1URVNU
KEluQXBwQnJvd3NlclByaXZhY3ksIE5vbkFwcEJvdW5kUmVxdWVzdFdpdGhTZXJ2aWNlV29ya2Vy
U29mdFVwZGF0ZSkKLXsKLSAgICBzb2Z0VXBkYXRlVGVzdChJc0FwcEJvdW5kOjpObyk7Ci19Ci0K
LXN0YXRpYyB2b2lkIHJ1bldlYlByb2Nlc3NQbHVnSW5UZXN0KElzQXBwQm91bmQgaXNBcHBCb3Vu
ZCkKLXsKLSAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NO
YW1lOkAiSW5BcHBCcm93c2VyUHJpdmFjeVBsdWdJbiJdOwotICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwg
MCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOwotCi0gICAgTlNTdHJp
bmcgKnVybCA9IEAiaHR0cHM6Ly93ZWJraXQub3JnIjsKLQotICAgIF9fYmxvY2sgYm9vbCBpc0Rv
bmUgPSBmYWxzZTsKLSAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TTXV0YWJs
ZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6dXJsXV07Ci0g
ICAgaWYgKGlzQXBwQm91bmQgPT0gSXNBcHBCb3VuZDo6Tm8pIHsKLSAgICAgICAgTlNNdXRhYmxl
VVJMUmVxdWVzdCAqbm9uQXBwQm91bmRSZXF1ZXN0ID0gcmVxdWVzdDsKLSAgICAgICAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICAgICAgbm9uQXBwQm91bmRSZXF1ZXN0
Ll9pc05vbkFwcEluaXRpYXRlZCA9IFlFUzsKLSAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfRU5ECi0gICAgICAgIHJlcXVlc3QgPSBub25BcHBCb3VuZFJlcXVlc3Q7Ci0gICAg
fQotCi0gICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07Ci0gICAgW3dlYlZpZXcgX3Rl
c3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwotCi0gICAgaXNEb25lID0gZmFsc2U7Ci0g
ICAgYm9vbCBleHBlY3RpbmdBcHBCb3VuZFJlcXVlc3RzID0gaXNBcHBCb3VuZCA9PSBJc0FwcEJv
dW5kOjpZZXMgPyB0cnVlIDogZmFsc2U7Ci0gICAgW3dlYlZpZXcgX2FwcEJvdW5kTmF2aWdhdGlv
bkRhdGE6XihzdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBkYXRhKSB7Ci0g
ICAgICAgIEVYUEVDVF9FUShkYXRhLmhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcsIGV4
cGVjdGluZ0FwcEJvdW5kUmVxdWVzdHMpOwotICAgICAgICBFWFBFQ1RfRVEoZGF0YS5oYXNMb2Fk
ZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nLCAhZXhwZWN0aW5nQXBwQm91bmRSZXF1ZXN0cyk7
Ci0gICAgICAgIGlzRG9uZSA9IHRydWU7Ci0gICAgfV07Ci0KLSAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmlzRG9uZSk7Ci19Ci0KLVRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgV2ViUHJv
Y2Vzc1BsdWdpblRlc3RBcHBCb3VuZCkKLXsKLSAgICBydW5XZWJQcm9jZXNzUGx1Z0luVGVzdChJ
c0FwcEJvdW5kOjpZZXMpOwotfQotCi1URVNUKEluQXBwQnJvd3NlclByaXZhY3ksIFdlYlByb2Nl
c3NQbHVnaW5UZXN0Tm9uQXBwQm91bmQpCi17Ci0gICAgcnVuV2ViUHJvY2Vzc1BsdWdJblRlc3Qo
SXNBcHBCb3VuZDo6Tm8pOwotfQotCi0jaWYgV0tfSEFWRV9DX1NQSQotCi1zdGF0aWMgY29uc3Qg
Y2hhciogbWFpblNXQnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCi08c2NyaXB0Pgot
Ci1mdW5jdGlvbiBsb2cobXNnKQotewotICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJz
LnN3LnBvc3RNZXNzYWdlKG1zZyk7Ci19Ci0KLW5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLmFkZEV2
ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBmdW5jdGlvbihldmVudCkgewotICAgIGxvZyhldmVudC5k
YXRhKTsKLX0pOwotCi10cnkgewotICAgIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVy
KCcvc3cuanMnKS50aGVuKGZ1bmN0aW9uKHJlZykgewotICAgICAgICBpZiAocmVnLmFjdGl2ZSkg
ewotICAgICAgICAgICAgd29ya2VyID0gcmVnLmFjdGl2ZTsKLSAgICAgICAgICAgIHdvcmtlci5w
b3N0TWVzc2FnZSgiU0VDT05EIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAg
ICAgICAgd29ya2VyID0gcmVnLmluc3RhbGxpbmc7Ci0gICAgICAgIHdvcmtlci5hZGRFdmVudExp
c3RlbmVyKCdzdGF0ZWNoYW5nZScsIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgaWYgKHdvcmtl
ci5zdGF0ZSA9PSAnYWN0aXZhdGVkJykKLSAgICAgICAgICAgICAgICB3b3JrZXIucG9zdE1lc3Nh
Z2UoIkZJUlNUIik7Ci0gICAgICAgIH0pOwotICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGVycm9yKSB7
Ci0gICAgICAgIGxvZygnUmVnaXN0cmF0aW9uIGZhaWxlZCB3aXRoOiAnICsgZXJyb3IpOwotICAg
IH0pOwotfSBjYXRjaChlKSB7Ci0gICAgbG9nKCdFeGNlcHRpb246ICcgKyBlKTsKLX0KLTwvc2Ny
aXB0PgotKVNXUkVTT1VSQ0UiOwotCi1zdGF0aWMgY29uc3QgY2hhciogc2NyaXB0Qnl0ZXNEZWZh
dWx0VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCi1zZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2Un
LCBhc3luYyAoZXZlbnQpID0+IHsKLSAgICBpZiAoIXNlbGYuaW50ZXJuYWxzKSB7Ci0gICAgICAg
IGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgnTm8gaW50ZXJuYWxzJyk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBxdWVyeUFwcEJvdW5kVmFsdWUoZXZlbnQsIGZhbHNlKTsKLX0pOwot
Ci1hc3luYyBmdW5jdGlvbiBxdWVyeUFwcEJvdW5kVmFsdWUoZXZlbnQsIGhhdmVTZW50SW5pdGlh
bE1lc3NhZ2UpCi17Ci0gICAgdmFyIHJlc3VsdCA9IGF3YWl0IGludGVybmFscy5sYXN0TmF2aWdh
dGlvbldhc0FwcEJvdW5kKCk7Ci0gICAgaWYgKHJlc3VsdCkgewotICAgICAgICBpZiAoZXZlbnQu
ZGF0YSA9PSAiRklSU1QiKSB7Ci0gICAgICAgICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2Uo
J2FwcC1ib3VuZCcpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAg
aWYgKCFoYXZlU2VudEluaXRpYWxNZXNzYWdlKQotICAgICAgICAgICAgZXZlbnQuc291cmNlLnBv
c3RNZXNzYWdlKCdzdGFydHMgYXBwLWJvdW5kJyk7Ci0KLSAgICAgICAgcXVlcnlBcHBCb3VuZFZh
bHVlKGV2ZW50LCB0cnVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGV2ZW50LnNv
dXJjZS5wb3N0TWVzc2FnZSgnbm9uIGFwcC1ib3VuZCcpOwotfQotCi0pU1dSRVNPVVJDRSI7Ci0K
LQotc3RhdGljIFN0cmluZyBleHBlY3RlZE1lc3NhZ2U7Ci1zdGF0aWMgYm9vbCByZWNlaXZlZE1l
c3NhZ2UgPSBmYWxzZTsKLQotQGludGVyZmFjZSBTV0FwcEJvdW5kUmVxdWVzdE1lc3NhZ2VIYW5k
bGVyIDogTlNPYmplY3QgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+Ci1AZW5kCi0KLUBpbXBsZW1l
bnRhdGlvbiBTV0FwcEJvdW5kUmVxdWVzdE1lc3NhZ2VIYW5kbGVyCi0tICh2b2lkKXVzZXJDb250
ZW50Q29udHJvbGxlcjooV0tVc2VyQ29udGVudENvbnRyb2xsZXIgKil1c2VyQ29udGVudENvbnRy
b2xsZXIgZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6KFdLU2NyaXB0TWVzc2FnZSAqKW1lc3NhZ2UK
LXsKLSAgICBFWFBFQ1RfV0tfU1RSRVEobWVzc2FnZS5ib2R5LCBleHBlY3RlZE1lc3NhZ2UpOwot
ICAgIHJlY2VpdmVkTWVzc2FnZSA9IHRydWU7Ci19Ci1AZW5kCi0KLVRFU1QoSW5BcHBCcm93c2Vy
UHJpdmFjeSwgUmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50VXBkYXRlc0FwcEJvdW5kVmFsdWUp
Ci17Ci0gICAgc3RhdGljIGJvb2wgaXNEb25lID0gZmFsc2U7Ci0KLSAgICBbW1dLV2Vic2l0ZURh
dGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0
YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50
UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKLSAgICAgICAgaXNEb25lID0gdHJ1ZTsKLSAg
ICB9XTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Ci0KLSAgICBXS1dl
YlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vz
c1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKLSAgICBX
S1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFRlc3RXZWJLaXRBUEk6
OlV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIkludGVybmFsc0luamVj
dGVkQnVuZGxlVGVzdCIpKTsKLSAgICBjb25maWd1cmF0aW9uLnByb2Nlc3NQb29sID0gKFdLUHJv
Y2Vzc1Bvb2wgKiljb250ZXh0LmdldCgpOwotCi0gICAgUmV0YWluUHRyPFNXQXBwQm91bmRSZXF1
ZXN0TWVzc2FnZUhhbmRsZXI+IG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1NXQXBwQm91bmRS
ZXF1ZXN0TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKLSAgICBbW2NvbmZpZ3VyYXRpb24g
dXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFu
ZGxlci5nZXQoKSBuYW1lOkAic3ciXTsKLQotICAgIGF1dG8gd2ViVmlldzEgPSBhZG9wdE5TKFtb
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOwotICAgIGF1dG8gd2ViVmlldzIgPSBhZG9w
dE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAw
LCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOwotCi0gICAgYXV0byBkZWxlZ2F0
ZSA9IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7Ci0gICAgW2RlbGVnYXRl
IHNldERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpeKFdLV2ViVmlldyAqLCBOU1VS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UsIHZvaWQgKF5jYWxsYmFjaykoTlNV
UkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKikpIHsK
LSAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuYXV0aGVu
dGljYXRpb25NZXRob2QsIE5TVVJMQXV0aGVudGljYXRpb25NZXRob2RTZXJ2ZXJUcnVzdCk7Ci0g
ICAgICAgIGNhbGxiYWNrKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBb
TlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlvblNw
YWNlLnNlcnZlclRydXN0XSk7Ci0gICAgfV07Ci0KLSAgICB3ZWJWaWV3MS5nZXQoKS5uYXZpZ2F0
aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKLSAgICB3ZWJWaWV3Mi5nZXQoKS5uYXZpZ2F0
aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKLQotICAgIFNlcnZpY2VXb3JrZXJUQ1BTZXJ2
ZXIgc2VydmVyKHsKLSAgICAgICAgeyAidGV4dC9odG1sIiwgbWFpblNXQnl0ZXNEZWZhdWx0VmFs
dWUgfSwKLSAgICAgICAgeyAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIsIHNjcmlwdEJ5dGVzRGVm
YXVsdFZhbHVlIH0sCi0gICAgfSwgewotICAgICAgICB7ICJ0ZXh0L2h0bWwiLCBtYWluU1dCeXRl
c0RlZmF1bHRWYWx1ZSB9LAotICAgICAgICB7ICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Iiwgc2Ny
aXB0Qnl0ZXNEZWZhdWx0VmFsdWUgfSwKLSAgICB9KTsKLQotICAgIC8vIExvYWQgV2ViVmlldyB3
aXRoIGFuIGFwcC1ib3VuZCByZXF1ZXN0LiBXZSBleHBlY3QgdGhlIFNlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eSB0byBiZSBhcHAtYm91bmQuCi0gICAgZXhwZWN0ZWRNZXNzYWdlID0gImFwcC1ib3Vu
ZCI7Ci0gICAgW3dlYlZpZXcxIGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOwotICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRNZXNzYWdlKTsKLQotICAgIC8vIExvYWQg
V2ViVmlldyB3aXRoIGEgbm9uIGFwcC1ib3VuZCByZXF1ZXN0LiBXZSBleHBlY3QgdGhlIFNlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eSB0byBiZSBhcHAtYm91bmQKLSAgICAvLyBhdCBmaXJzdCwgYnV0
IHRoZW4gYmVjb21lIG5vbiBhcHAtYm91bmQgb25jZSB0aGUgc2Vjb25kIHdlYlZpZXcgaXMgY2xv
c2VkIGFuZCBpdHMgY2xpZW50IGlzIHVucmVnaXN0ZXJlZC4KLSAgICBleHBlY3RlZE1lc3NhZ2Ug
PSAic3RhcnRzIGFwcC1ib3VuZCI7Ci0gICAgcmVjZWl2ZWRNZXNzYWdlID0gZmFsc2U7Ci0gICAg
TlNNdXRhYmxlVVJMUmVxdWVzdCAqbm9uQXBwQm91bmRSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJl
cXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmlu
Z1dpdGhGb3JtYXQ6QCJodHRwOi8vMTI3LjAuMC4xOiVkL21haW4uaHRtbCIsIHNlcnZlci5wb3J0
KCldXV07Ci0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICBub25B
cHBCb3VuZFJlcXVlc3QuX2lzTm9uQXBwSW5pdGlhdGVkID0gWUVTOwotICAgIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0VORAotCi0gICAgW3dlYlZpZXcyIGxvYWRSZXF1ZXN0Om5vbkFw
cEJvdW5kUmVxdWVzdF07Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZE1l
c3NhZ2UpOwotCi0gICAgLy8gQ2xvc2UgdGhlIGFwcC1ib3VuZCB2aWV3LiBXZSBleHBlY3QgdGhh
dCB0aGUgZXhpc3Rpbmcgd29ya2VyIHdpbGwgYmVjb21lIG5vbiBhcHAtYm91bmQKLSAgICAvLyBu
b3cgdGhhdCBhbGwgYXBwLWJvdW5kIGNsaWVudHMgaGF2ZSBiZWVuIHJlbW92ZWQuCi0gICAgZXhw
ZWN0ZWRNZXNzYWdlID0gIm5vbiBhcHAtYm91bmQiOwotICAgIHJlY2VpdmVkTWVzc2FnZSA9IGZh
bHNlOwotICAgIFt3ZWJWaWV3MSBfY2xvc2VdOwotICAgIHdlYlZpZXcxID0gbnVsbHB0cjsKLQot
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRNZXNzYWdlKTsKLX0KLQotI2Vu
ZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5UGx1Z0luLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5UGx1Z0luLm1tCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MTZjMTVmNDJjNGY3MTU4NWFkMzk2N2ViOTgyMmI4MzYw
MjgzODE4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeVBs
dWdJbi5tbQorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1w
b3J0ICJjb25maWcuaCIKLQotI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKLSNpbXBvcnQg
PFdlYktpdC9XS1dlYlByb2Nlc3NQbHVnSW4uaD4KLSNpbXBvcnQgPFdlYktpdC9XS1dlYlByb2Nl
c3NQbHVnSW5Mb2FkRGVsZWdhdGUuaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KLQotQGlu
dGVyZmFjZSBJbkFwcEJyb3dzZXJQcml2YWN5UGx1Z0luIDogTlNPYmplY3QgPFdLV2ViUHJvY2Vz
c1BsdWdJbiwgV0tXZWJQcm9jZXNzUGx1Z0luTG9hZERlbGVnYXRlPgotQGVuZAotCi1AaW1wbGVt
ZW50YXRpb24gSW5BcHBCcm93c2VyUHJpdmFjeVBsdWdJbiB7IH0KLQotLSAoTlNVUkxSZXF1ZXN0
ICopd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjooV0tXZWJQcm9jZXNz
UGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyICopY29udHJvbGxlciBmcmFtZTooV0tXZWJQ
cm9jZXNzUGx1Z0luRnJhbWUgKilmcmFtZSB3aWxsU2VuZFJlcXVlc3RGb3JSZXNvdXJjZToodWlu
dDY0X3QpcmVzb3VyY2UgcmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCByZWRpcmVjdFJl
c3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVkaXJlY3RSZXNwb25zZQotewotICAgIHJldHVybiBh
ZG9wdE5TKFtbTlNVUkxSZXF1ZXN0IGFsbG9jXSBpbml0V2l0aFVSTDpyZXF1ZXN0LlVSTF0pLmF1
dG9yZWxlYXNlKCk7Ci19Ci0KLUBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvYXBwLXByaXZhY3ktcmVwb3J0LWlmcmFtZS5odG1sIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9hcHAtcHJpdmFjeS1yZXBvcnQtaWZyYW1l
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTY5ZGUyOWJiMmQxZDY0MzRiOGIyOWFlNzc1YWQ4YzJlNDhjNTM5
MQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5k
aW5ncy9UZXN0UnVubmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKaW5kZXggNGRhMTNiMTUzNDQ1OTVmMTQ3NmUxNzU4
NmQ5MTY4YTVjZDEzZjIyOS4uMzdjOGNhZTA1ZWUyNDExYzVmYzQ4OTZjYmRmOTM1NjY5YzJlMTAy
OSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5k
aW5ncy9UZXN0UnVubmVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCkBAIC0zODgsOSArMzg4LDggQEAgaW50ZXJm
YWNlIFRlc3RSdW5uZXIgewogICAgIGJvb2xlYW4gaGFzQXBwQm91bmRTZXNzaW9uKCk7CiAgICAg
dW5kZWZpbmVkIGNsZWFyQXBwQm91bmRTZXNzaW9uKCk7CiAgICAgdW5kZWZpbmVkIHNldEFwcEJv
dW5kRG9tYWlucyhvYmplY3Qgb3JpZ2luc0FycmF5LCBvYmplY3QgY2FsbGJhY2spOwotICAgIHVu
ZGVmaW5lZCBhcHBCb3VuZFJlcXVlc3RDb250ZXh0RGF0YUZvckRvbWFpbihET01TdHJpbmcgZG9t
YWluLCBvYmplY3QgY2FsbGJhY2spOwotICAgIGJvb2xlYW4gZGlkTG9hZEFwcEJvdW5kUmVxdWVz
dCgpOwotICAgIGJvb2xlYW4gZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdCgpOworICAgIGJvb2xl
YW4gZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3QoKTsKKyAgICBib29sZWFuIGRpZExvYWROb25B
cHBJbml0aWF0ZWRSZXF1ZXN0KCk7CiAKICAgICB1bmRlZmluZWQgaW5qZWN0VXNlclNjcmlwdChE
T01TdHJpbmcgc3RyaW5nKTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyB1
c2VyU2NyaXB0SW5qZWN0ZWRDb3VudDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggNjdiMzUzZjMwMGZm
YmY2NWQzNDQ2YzJlNGQ4MjEyMDVlNjNlMTdhNy4uNmU0MTRjY2RlNjcwZTcwNjI2OGI0NjRhNDMw
MTZhYjM3ZjUyYzc4ZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTQxNSwxNCArNDE1LDYgQEAgdm9p
ZCBJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UoV0tCdW5kbGVQYWdlUmVm
IHBhZ2UsIFdLU3RyaW5nUmVmIG0KICAgICAgICAgbV90ZXN0UnVubmVyLT5jYWxsRGlkUmVjZWl2
ZUxvYWRlZFN1YnJlc291cmNlRG9tYWluc0NhbGxiYWNrKFdURk1vdmUoZG9tYWlucykpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIAotICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhD
U3RyaW5nKG1lc3NhZ2VOYW1lLCAiQ2FsbERpZFJlY2VpdmVBcHBCb3VuZFJlcXVlc3RDb250ZXh0
RGF0YUZvckRvbWFpbiIpKSB7Ci0gICAgICAgIEFTU0VSVChtZXNzYWdlQm9keSk7Ci0gICAgICAg
IEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tTdHJpbmdHZXRUeXBlSUQoKSk7
Ci0KLSAgICAgICAgYXV0byByZXN1bHRTdHJpbmcgPSB0b1dURlN0cmluZyhzdGF0aWNfY2FzdDxX
S1N0cmluZ1JlZj4obWVzc2FnZUJvZHkpKTsKLSAgICAgICAgbV90ZXN0UnVubmVyLT5jYWxsRGlk
UmVjZWl2ZUFwcEJvdW5kUmVxdWVzdENvbnRleHREYXRhRm9yRG9tYWluQ2FsbGJhY2soV1RGTW92
ZShyZXN1bHRTdHJpbmcpKTsKLSAgICB9CiAKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4
Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkNhbGxEaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHND
YWxsYmFjayIpKSB7CiAgICAgICAgIG1fdGVzdFJ1bm5lci0+Y2FsbERpZFJlbW92ZUFsbFNlc3Np
b25DcmVkZW50aWFsc0NhbGxiYWNrKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCAzZjcyYWMyYTQ4MTQ2ZTMwMTQ4
MmRkMmVkNGViYzE5MmZmNTU1ZDMxLi40NmZmN2E1Yjc1NGI4YTA3YTFiZTY5NGY0Njk5YTkyMjE2
OGZmZWMyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5jcHAKQEAgLTY0NSw3ICs2NDUsNiBAQCBlbnVtIHsKICAgICBEaWRTZXRB
cHBCb3VuZERvbWFpbnNDYWxsYmFja0lELAogICAgIEVudGVyRnVsbHNjcmVlbkZvckVsZW1lbnRD
YWxsYmFja0lELAogICAgIEV4aXRGdWxsc2NyZWVuRm9yRWxlbWVudENhbGxiYWNrSUQsCi0gICAg
QXBwQm91bmRSZXF1ZXN0Q29udGV4dERhdGFGb3JEb21haW5DYWxsYmFja0lELAogICAgIERpZE5v
dEhhbmRsZVRhcEFzTWVhbmluZ2Z1bENsaWNrQ2FsbGJhY2tJRCwKICAgICBGaXJzdFVJU2NyaXB0
Q2FsbGJhY2tJRCA9IDEwMAogfTsKQEAgLTIxMTUsMjYgKzIxMTQsMTQgQEAgdm9pZCBUZXN0UnVu
bmVyOjpkaWRTZXRBcHBCb3VuZERvbWFpbnNDYWxsYmFjaygpCiAgICAgY2FsbFRlc3RSdW5uZXJD
YWxsYmFjayhEaWRTZXRBcHBCb3VuZERvbWFpbnNDYWxsYmFja0lEKTsKIH0KIAotdm9pZCBUZXN0
UnVubmVyOjphcHBCb3VuZFJlcXVlc3RDb250ZXh0RGF0YUZvckRvbWFpbihKU1N0cmluZ1JlZiBk
b21haW4sIEpTVmFsdWVSZWYgY2FsbGJhY2spCitib29sIFRlc3RSdW5uZXI6OmRpZExvYWRBcHBJ
bml0aWF0ZWRSZXF1ZXN0KCkKIHsKLSAgICBjYWNoZVRlc3RSdW5uZXJDYWxsYmFjayhBcHBCb3Vu
ZFJlcXVlc3RDb250ZXh0RGF0YUZvckRvbWFpbkNhbGxiYWNrSUQsIGNhbGxiYWNrKTsKLSAgICBw
b3N0TWVzc2FnZSgiQXBwQm91bmRSZXF1ZXN0Q29udGV4dERhdGFGb3JEb21haW4iLCBkb21haW4p
OworICAgIHJldHVybiBwb3N0U3luY2hyb25vdXNQYWdlTWVzc2FnZVJldHVybmluZ0Jvb2xlYW4o
IkRpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0Iik7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6Y2Fs
bERpZFJlY2VpdmVBcHBCb3VuZFJlcXVlc3RDb250ZXh0RGF0YUZvckRvbWFpbkNhbGxiYWNrKFN0
cmluZyYmIGNvbnRleHREb21haW4pCitib29sIFRlc3RSdW5uZXI6OmRpZExvYWROb25BcHBJbml0
aWF0ZWRSZXF1ZXN0KCkKIHsKLSAgICBKU1ZhbHVlUmVmIHJlc3VsdFZhbHVlID0gSlNWYWx1ZU1h
a2VTdHJpbmcobWFpbkZyYW1lSlNDb250ZXh0KCksIGNyZWF0ZUpTU3RyaW5nKGNvbnRleHREb21h
aW4udXRmOCgpLmRhdGEoKSkuZ2V0KCkpOwotICAgIGNhbGxUZXN0UnVubmVyQ2FsbGJhY2soQXBw
Qm91bmRSZXF1ZXN0Q29udGV4dERhdGFGb3JEb21haW5DYWxsYmFja0lELCAxLCAmcmVzdWx0VmFs
dWUpOwotfQotCi1ib29sIFRlc3RSdW5uZXI6OmRpZExvYWRBcHBCb3VuZFJlcXVlc3QoKQotewot
ICAgIHJldHVybiBwb3N0U3luY2hyb25vdXNQYWdlTWVzc2FnZVJldHVybmluZ0Jvb2xlYW4oIkRp
ZExvYWRBcHBCb3VuZFJlcXVlc3QiKTsKLX0KLQotYm9vbCBUZXN0UnVubmVyOjpkaWRMb2FkTm9u
QXBwQm91bmRSZXF1ZXN0KCkKLXsKLSAgICByZXR1cm4gcG9zdFN5bmNocm9ub3VzUGFnZU1lc3Nh
Z2VSZXR1cm5pbmdCb29sZWFuKCJEaWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0Iik7CisgICAgcmV0
dXJuIHBvc3RTeW5jaHJvbm91c1BhZ2VNZXNzYWdlUmV0dXJuaW5nQm9vbGVhbigiRGlkTG9hZE5v
bkFwcEluaXRpYXRlZFJlcXVlc3QiKTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpzZXRJc1NwZWVj
aFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQoYm9vbCBncmFudGVkKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCAxYmU2
NjNkOGVkODFjMzkwYzFkOGI5YzZjYjYxMDBkYmE4NDUxNDI2Li4zYTM0YmEwNzNiYzE5YjBhODE0
ZmRmYjIyYTJjOGNmMGY0ODE0OGZhIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtNDk3LDEwICs0OTcsOSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBjbGVhckFwcEJvdW5kU2Vzc2lvbigpOwogICAgIHZvaWQgc2V0QXBwQm91bmRE
b21haW5zKEpTVmFsdWVSZWYgb3JpZ2luQXJyYXksIEpTVmFsdWVSZWYgY2FsbGJhY2spOwogICAg
IHZvaWQgZGlkU2V0QXBwQm91bmREb21haW5zQ2FsbGJhY2soKTsKLSAgICB2b2lkIGFwcEJvdW5k
UmVxdWVzdENvbnRleHREYXRhRm9yRG9tYWluKEpTU3RyaW5nUmVmLCBKU1ZhbHVlUmVmKTsKLSAg
ICB2b2lkIGNhbGxEaWRSZWNlaXZlQXBwQm91bmRSZXF1ZXN0Q29udGV4dERhdGFGb3JEb21haW5D
YWxsYmFjayhTdHJpbmcmJik7Ci0gICAgYm9vbCBkaWRMb2FkQXBwQm91bmRSZXF1ZXN0KCk7Ci0g
ICAgYm9vbCBkaWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0KCk7CisKKyAgICBib29sIGRpZExvYWRB
cHBJbml0aWF0ZWRSZXF1ZXN0KCk7CisgICAgYm9vbCBkaWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVx
dWVzdCgpOwogCiAgICAgc2l6ZV90IHVzZXJTY3JpcHRJbmplY3RlZENvdW50KCkgY29uc3Q7CiAg
ICAgdm9pZCBpbmplY3RVc2VyU2NyaXB0KEpTU3RyaW5nUmVmKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggY2ZjOWM0NDgzYzgyNWQ5MTNlZDI3YTRkNTU4
ODRmMjQyZDc2ZjAwMi4uOTgzYjg1YjBhM2EyODRmMDliNzg0MDBlMDhjYzA3MjBhY2EzNDAxOSAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTEwNzgsNyAr
MTA3OCw3IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1
ZXMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMsIFJlCiAgICAgICAgIHVwZGF0ZUxpdmVEb2N1
bWVudHNBZnRlclRlc3QoKTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgY2xlYXJBcHBs
aWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJUZXN0aW5nT3ZlcnJpZGUoKTsKLSAgICAgICAgY2xlYXJB
cHBCb3VuZE5hdmlnYXRpb25EYXRhKCk7CisgICAgICAgIGNsZWFyQXBwUHJpdmFjeVJlcG9ydFRl
c3RpbmdEYXRhKCk7CiAjZW5kaWYKICAgICAgICAgY2xlYXJCdW5kbGVJZGVudGlmaWVySW5OZXR3
b3JrUHJvY2VzcygpOwogICAgIH0KQEAgLTI3MjMsMjEgKzI3MjMsMTcgQEAgdm9pZCBUZXN0Q29u
dHJvbGxlcjo6cmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKCkKIHsKIH0KIAotdm9pZCBUZXN0
Q29udHJvbGxlcjo6YXBwQm91bmRSZXF1ZXN0Q29udGV4dERhdGFGb3JEb21haW4oV0tTdHJpbmdS
ZWYpCi17Ci19Ci0KLWJvb2wgVGVzdENvbnRyb2xsZXI6OmRpZExvYWRBcHBCb3VuZFJlcXVlc3Qo
KQorYm9vbCBUZXN0Q29udHJvbGxlcjo6ZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3QoKQogewog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBUZXN0Q29udHJvbGxlcjo6ZGlkTG9hZE5vbkFw
cEJvdW5kUmVxdWVzdCgpCitib29sIFRlc3RDb250cm9sbGVyOjpkaWRMb2FkTm9uQXBwSW5pdGlh
dGVkUmVxdWVzdCgpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFRlc3RDb250cm9s
bGVyOjpjbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGEoKQordm9pZCBUZXN0Q29udHJvbGxlcjo6
Y2xlYXJBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoKQogewogfQogCmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXggYmMwZWM1MjY5MzQ3MzYxYzMxNWU2ZTRkMDdk
YjgxYWJiNmI0N2M2ZS4uNzI4NjQ4NDFjZTYwNDg5MGY3YjU2NzAyYzRiNmIwNGZmNmM4N2JkYSAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMjYyLDEwICsyNjIs
OSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhckxvYWRlZFN1YnJlc291cmNlRG9tYWlucygpOwog
ICAgIHZvaWQgY2xlYXJBcHBCb3VuZFNlc3Npb24oKTsKICAgICB2b2lkIHJlaW5pdGlhbGl6ZUFw
cEJvdW5kRG9tYWlucygpOwotICAgIHZvaWQgYXBwQm91bmRSZXF1ZXN0Q29udGV4dERhdGFGb3JE
b21haW4oV0tTdHJpbmdSZWYpOwotICAgIHZvaWQgY2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRh
KCk7Ci0gICAgYm9vbCBkaWRMb2FkQXBwQm91bmRSZXF1ZXN0KCk7Ci0gICAgYm9vbCBkaWRMb2Fk
Tm9uQXBwQm91bmRSZXF1ZXN0KCk7CisgICAgdm9pZCBjbGVhckFwcFByaXZhY3lSZXBvcnRUZXN0
aW5nRGF0YSgpOworICAgIGJvb2wgZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3QoKTsKKyAgICBi
b29sIGRpZExvYWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0KCk7CiAKICAgICB2b2lkIHVwZGF0ZUJ1
bmRsZUlkZW50aWZpZXJJbk5ldHdvcmtQcm9jZXNzKGNvbnN0IHN0ZDo6c3RyaW5nJiBidW5kbGVJ
ZGVudGlmaWVyKTsKICAgICB2b2lkIGNsZWFyQnVuZGxlSWRlbnRpZmllckluTmV0d29ya1Byb2Nl
c3MoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24u
Y3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXggNWQz
MjcyMzkyYmVlMTBjN2JjZWVhZDRjM2Y5MjE0NmUxZWI5M2VhMC4uOGQ3NmU0YmEwZGFiYWQ4YTk0
YzZlYTRhYjlhNWIzY2RjMGQxZjc5ZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52
b2NhdGlvbi5jcHAKQEAgLTc5MiwxMiArNzkyLDYgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlk
UmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhD
U3RyaW5nKG1lc3NhZ2VOYW1lLCAiQXBwQm91bmRSZXF1ZXN0Q29udGV4dERhdGFGb3JEb21haW4i
KSkgewotICAgICAgICBXS1N0cmluZ1JlZiBkb21haW4gPSBzdHJpbmdWYWx1ZShtZXNzYWdlQm9k
eSk7Ci0gICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5hcHBCb3VuZFJlcXVlc3RD
b250ZXh0RGF0YUZvckRvbWFpbihkb21haW4pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKQEAgLTEwNzEsMTEgKzEwNjUsMTEgQEAgV0tS
ZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3Vz
TWVzc2FnZUZyb21JbmplY3RlZEIKICAgICAgICAgcmV0dXJuIGFkb3B0V0soV0tCb29sZWFuQ3Jl
YXRlKHN0YXRpc3RpY0luRGF0YWJhc2VPbmNlKSk7CiAgICAgfQogCi0gICAgaWYgKFdLU3RyaW5n
SXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJEaWRMb2FkQXBwQm91bmRSZXF1ZXN0
IikpCi0gICAgICAgIHJldHVybiBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShUZXN0Q29udHJvbGxl
cjo6c2luZ2xldG9uKCkuZGlkTG9hZEFwcEJvdW5kUmVxdWVzdCgpKSk7CisgICAgaWYgKFdLU3Ry
aW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJEaWRMb2FkQXBwSW5pdGlhdGVk
UmVxdWVzdCIpKQorICAgICAgICByZXR1cm4gYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoVGVzdENv
bnRyb2xsZXI6OnNpbmdsZXRvbigpLmRpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0KCkpKTsKIAot
ICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiRGlkTG9h
ZE5vbkFwcEJvdW5kUmVxdWVzdCIpKQotICAgICAgICByZXR1cm4gYWRvcHRXSyhXS0Jvb2xlYW5D
cmVhdGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmRpZExvYWROb25BcHBCb3VuZFJlcXVl
c3QoKSkpOworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1l
LCAiRGlkTG9hZE5vbkFwcEluaXRpYXRlZFJlcXVlc3QiKSkKKyAgICAgICAgcmV0dXJuIGFkb3B0
V0soV0tCb29sZWFuQ3JlYXRlKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5kaWRMb2FkTm9u
QXBwSW5pdGlhdGVkUmVxdWVzdCgpKSk7CiAKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4
Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldFN0YXRpc3RpY3NHcmFuZGZhdGhlcmVkIikpIHsKICAg
ICAgICAgYXV0byBtZXNzYWdlQm9keURpY3Rpb25hcnkgPSBkaWN0aW9uYXJ5VmFsdWUobWVzc2Fn
ZUJvZHkpOwpAQCAtMTU4MSwxMiArMTU3NSw2IEBAIHZvaWQgVGVzdEludm9jYXRpb246OmRpZFJl
Y2VpdmVMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnMoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zCiAg
ICAgcG9zdFBhZ2VNZXNzYWdlKCJDYWxsRGlkUmVjZWl2ZUxvYWRlZFN1YnJlc291cmNlRG9tYWlu
cyIsIG1lc3NhZ2VCb2R5KTsKIH0KIAotdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZUFw
cEJvdW5kUmVxdWVzdENvbnRleHREYXRhRm9yRG9tYWluKFN0cmluZyYmIGRvbWFpbikKLXsKLSAg
ICBhdXRvIG1lc3NhZ2VCb2R5ID0gV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoZG9tYWlu
LnV0ZjgoKS5kYXRhKCkpOwotICAgIHBvc3RQYWdlTWVzc2FnZSgiQ2FsbERpZFJlY2VpdmVBcHBC
b3VuZFJlcXVlc3RDb250ZXh0RGF0YUZvckRvbWFpbiIsIG1lc3NhZ2VCb2R5KTsKLX0KLQogdm9p
ZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKCkKIHsKICAg
ICBwb3N0UGFnZU1lc3NhZ2UoIkNhbGxEaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHNDYWxs
YmFjayIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlv
bi5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCmluZGV4IGE4Yzg1
NGUyNzY3ZDY5ODI2ZWQ5NzYzM2I3MWUzMjU4MWU4NmYyODYuLmYxMTI2YTNlZTU1MmNlZGQ0YjAx
ZWJiZGNmMTM1YTI1ZmRhMDIyNjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdEludm9jYXRpb24uaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmgKQEAgLTk3LDcgKzk3LDYgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVtb3ZlQWxsU2Vz
c2lvbkNyZWRlbnRpYWxzKCk7CiAKICAgICB2b2lkIGRpZFNldEFwcEJvdW5kRG9tYWlucygpOwot
ICAgIHZvaWQgZGlkUmVjZWl2ZUFwcEJvdW5kUmVxdWVzdENvbnRleHREYXRhRm9yRG9tYWluKFN0
cmluZyYmKTsKIAogICAgIHZvaWQgZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKIApkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29h
Lm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1t
CmluZGV4IDZmMTRmY2Q3YjMxZjQzNjk1ZWVhYTE3MzYwMThmMjg1ODkwMTRjMDcuLjk4Y2NiNGRi
OWFiMDhiYWIyOTMzMGFiNGNiYTJlMjQ1ZTk5NDRmN2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KQEAgLTM4NCwyMyArMzg0
LDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Y2xlYXJMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnMo
KQogICAgIFtbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24oKSB3ZWJzaXRlRGF0YVN0b3JlXSBf
Y2xlYXJMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnNGb3I6cGFyZW50Vmlldy0+cGxhdGZvcm1WaWV3
KCldOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjphcHBCb3VuZFJlcXVlc3RDb250ZXh0RGF0
YUZvckRvbWFpbihXS1N0cmluZ1JlZiBkb21haW4pCi17Ci0gICAgYXV0byogcGFyZW50VmlldyA9
IG1haW5XZWJWaWV3KCk7Ci0gICAgaWYgKCFwYXJlbnRWaWV3KQotICAgICAgICByZXR1cm47Ci0K
LSAgICBbbV9tYWluV2ViVmlldy0+cGxhdGZvcm1WaWV3KCkgX2FwcEJvdW5kTmF2aWdhdGlvbkRh
dGFGb3JEb21haW46dG9XVEZTdHJpbmcoZG9tYWluKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TU3Ry
aW5nICpjb250ZXh0KSB7Ci0gICAgICAgIGlmICghY29udGV4dCkgewotICAgICAgICAgICAgbV9j
dXJyZW50SW52b2NhdGlvbi0+ZGlkUmVjZWl2ZUFwcEJvdW5kUmVxdWVzdENvbnRleHREYXRhRm9y
RG9tYWluKHsgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBt
X2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRSZWNlaXZlQXBwQm91bmRSZXF1ZXN0Q29udGV4dERhdGFG
b3JEb21haW4oU3RyaW5nKGNvbnRleHQpKTsKLSAgICB9XTsKLX0KLQotYm9vbCBUZXN0Q29udHJv
bGxlcjo6ZGlkTG9hZEFwcEJvdW5kUmVxdWVzdCgpCitib29sIFRlc3RDb250cm9sbGVyOjpkaWRM
b2FkQXBwSW5pdGlhdGVkUmVxdWVzdCgpCiB7CiAgICAgYXV0byogcGFyZW50VmlldyA9IG1haW5X
ZWJWaWV3KCk7CiAgICAgaWYgKCFwYXJlbnRWaWV3KQpAQCAtNDA4LDcgKzM5Miw3IEBAIGJvb2wg
VGVzdENvbnRyb2xsZXI6OmRpZExvYWRBcHBCb3VuZFJlcXVlc3QoKQogCiAgICAgX19ibG9jayBi
b29sIGlzRG9uZSA9IGZhbHNlOwogICAgIF9fYmxvY2sgYm9vbCBkaWRMb2FkUmVzdWx0ID0gZmFs
c2U7Ci0gICAgW21fbWFpbldlYlZpZXctPnBsYXRmb3JtVmlldygpIF9kaWRMb2FkQXBwQm91bmRS
ZXF1ZXN0Ol4oQk9PTCByZXN1bHQpIHsKKyAgICBbbV9tYWluV2ViVmlldy0+cGxhdGZvcm1WaWV3
KCkgX2RpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0Ol4oQk9PTCByZXN1bHQpIHsKICAgICAgICAg
ZGlkTG9hZFJlc3VsdCA9IHJlc3VsdDsKICAgICAgICAgaXNEb25lID0gdHJ1ZTsKICAgICB9XTsK
QEAgLTQxNiw3ICs0MDAsNyBAQCBib29sIFRlc3RDb250cm9sbGVyOjpkaWRMb2FkQXBwQm91bmRS
ZXF1ZXN0KCkKICAgICByZXR1cm4gZGlkTG9hZFJlc3VsdDsKIH0KIAotYm9vbCBUZXN0Q29udHJv
bGxlcjo6ZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdCgpCitib29sIFRlc3RDb250cm9sbGVyOjpk
aWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdCgpCiB7CiAgICAgYXV0byogcGFyZW50VmlldyA9
IG1haW5XZWJWaWV3KCk7CiAgICAgaWYgKCFwYXJlbnRWaWV3KQpAQCAtNDI0LDcgKzQwOCw3IEBA
IGJvb2wgVGVzdENvbnRyb2xsZXI6OmRpZExvYWROb25BcHBCb3VuZFJlcXVlc3QoKQogCiAgICAg
X19ibG9jayBib29sIGlzRG9uZSA9IGZhbHNlOwogICAgIF9fYmxvY2sgYm9vbCBkaWRMb2FkUmVz
dWx0ID0gZmFsc2U7Ci0gICAgW21fbWFpbldlYlZpZXctPnBsYXRmb3JtVmlldygpIF9kaWRMb2Fk
Tm9uQXBwQm91bmRSZXF1ZXN0Ol4oQk9PTCByZXN1bHQpIHsKKyAgICBbbV9tYWluV2ViVmlldy0+
cGxhdGZvcm1WaWV3KCkgX2RpZExvYWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0Ol4oQk9PTCByZXN1
bHQpIHsKICAgICAgICAgZGlkTG9hZFJlc3VsdCA9IHJlc3VsdDsKICAgICAgICAgaXNEb25lID0g
dHJ1ZTsKICAgICB9XTsKQEAgLTQzMiwxNCArNDE2LDE0IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6
OmRpZExvYWROb25BcHBCb3VuZFJlcXVlc3QoKQogICAgIHJldHVybiBkaWRMb2FkUmVzdWx0Owog
fQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpjbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGEoKQor
dm9pZCBUZXN0Q29udHJvbGxlcjo6Y2xlYXJBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoKQog
ewogICAgIGF1dG8qIHBhcmVudFZpZXcgPSBtYWluV2ViVmlldygpOwogICAgIGlmICghcGFyZW50
VmlldykKICAgICAgICAgcmV0dXJuOwogCiAgICAgX19ibG9jayBib29sIGRvbmVDbGVhcmluZyA9
IGZhbHNlOwotICAgIFttX21haW5XZWJWaWV3LT5wbGF0Zm9ybVZpZXcoKSBfY2xlYXJBcHBCb3Vu
ZE5hdmlnYXRpb25EYXRhOl57CisgICAgW21fbWFpbldlYlZpZXctPnBsYXRmb3JtVmlldygpIF9j
bGVhckFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YTpeewogICAgICAgICBkb25lQ2xlYXJpbmcg
PSB0cnVlOwogICAgIH1dOwogICAgIHBsYXRmb3JtUnVuVW50aWwoZG9uZUNsZWFyaW5nLCBub1Rp
bWVvdXQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVu
bmVyV0tXZWJWaWV3LmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5uZXJX
S1dlYlZpZXcuaAppbmRleCA0Y2Q2ZGExZmQ2ZjhlNzQ0ZjM5MDRlMDZhZWJjODI2OWYxYWRlYTM5
Li4wNzQ3NmI2ZTFhZTg5MTAwZTlmYmI5ZGNlZTIyNjM3Mzk4NzgxMjgyIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5uZXJXS1dlYlZpZXcuaAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5uZXJXS1dlYlZpZXcuaApAQCAtODIs
OCArODIsNyBAQAogCiAtICh2b2lkKWRpc21pc3NBY3RpdmVNZW51OwogLSAodm9pZClyZXNldElu
dGVyYWN0aW9uQ2FsbGJhY2tzOwotLSAodm9pZClfYXBwQm91bmROYXZpZ2F0aW9uRGF0YUZvckRv
bWFpbjooTlNTdHJpbmcgKilkb21haW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TU3Ry
aW5nICogY29udGV4dCkpY29tcGxldGlvbkhhbmRsZXI7Ci0tICh2b2lkKV9kaWRMb2FkQXBwQm91
bmRSZXF1ZXN0Oih2b2lkICheKShCT09MIHJlc3VsdCkpY29tcGxldGlvbkhhbmRsZXI7Ci0tICh2
b2lkKV9kaWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0Oih2b2lkICheKShCT09MIHJlc3VsdCkpY29t
cGxldGlvbkhhbmRsZXI7CistICh2b2lkKV9kaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdDoodm9p
ZCAoXikoQk9PTCByZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClfZGlkTG9hZE5v
bkFwcEluaXRpYXRlZFJlcXVlc3Q6KHZvaWQgKF4pKEJPT0wgcmVzdWx0KSljb21wbGV0aW9uSGFu
ZGxlcjsKIAogQGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9U
ZXN0UnVubmVyV0tXZWJWaWV3Lm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0
UnVubmVyV0tXZWJWaWV3Lm1tCmluZGV4IDBkODQxMTZhZDQ1MzUxYWYxZjE1NWJiNTJjNWNhZWZi
M2NmMmM3NTMuLjJlZDhmODAwNzllNzhlMDRkOWNkYjZlZWIzYzU0MmVjYWM5ODg3MGYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFJ1bm5lcldLV2ViVmlldy5t
bQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5uZXJXS1dlYlZpZXcu
bW0KQEAgLTU5NiwxOSArNTk2LDE0IEBAIHN0YXRpYyBib29sIGlzUXVpY2tib2FyZFZpZXdDb250
cm9sbGVyKFVJVmlld0NvbnRyb2xsZXIgKnZpZXdDb250cm9sbGVyKQogICAgICAgICBzZWxmLmRp
ZEhpZGVDb250YWN0UGlja2VyQ2FsbGJhY2soKTsKIH0KIAotLSAodm9pZClfYXBwQm91bmROYXZp
Z2F0aW9uRGF0YUZvckRvbWFpbjooTlNTdHJpbmcgKilkb21haW4gY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQgKF4pKE5TU3RyaW5nICogY29udGV4dCkpY29tcGxldGlvbkhhbmRsZXIKKy0gKHZvaWQp
X2RpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0Oih2b2lkICheKShCT09MIHJlc3VsdCkpY29tcGxl
dGlvbkhhbmRsZXIKIHsKLSAgICBbc3VwZXIgX2FwcEJvdW5kTmF2aWdhdGlvbkRhdGFGb3JEb21h
aW46ZG9tYWluIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKKyAgICBbc3Vw
ZXIgX2RpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0OmNvbXBsZXRpb25IYW5kbGVyXTsKIH0KIAot
LSAodm9pZClfZGlkTG9hZEFwcEJvdW5kUmVxdWVzdDoodm9pZCAoXikoQk9PTCByZXN1bHQpKWNv
bXBsZXRpb25IYW5kbGVyCistICh2b2lkKV9kaWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdDoo
dm9pZCAoXikoQk9PTCByZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0gICAgW3N1cGVyIF9k
aWRMb2FkQXBwQm91bmRSZXF1ZXN0OmNvbXBsZXRpb25IYW5kbGVyXTsKLX0KLQotLSAodm9pZClf
ZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdDoodm9pZCAoXikoQk9PTCByZXN1bHQpKWNvbXBsZXRp
b25IYW5kbGVyCi17Ci0gICAgW3N1cGVyIF9kaWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0OmNvbXBs
ZXRpb25IYW5kbGVyXTsKKyAgICBbc3VwZXIgX2RpZExvYWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0
OmNvbXBsZXRpb25IYW5kbGVyXTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDcwOGJlY2Y3OWY2OTU1NGIz
Yzk1ODI3NWVmYThmMzhlNjNhZTE3ZWEuLjY3MDU4M2UxNjgyNjA0YjNmYzU4MjI2MjM1YzBlNDg5
ZWQ2ZWE3MmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAyMS0wNi0yMyAgS2F0ZSBDaGVuZXkg
IDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBDbGVhbiB1cCBBcHAgUHJp
dmFjeSBSZXBvcnQgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI3MzI2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83OTY5Njg0OT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIEFwcCBQcml2
YWN5IFJlcG9ydCB0ZXN0cyBpbnRvIHRoZWlyIG93biBkaXJlY3RvcnkuCisKKyAgICAgICAgKiBU
ZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0
L2F0dHJpYnV0aW9uLWxvYWQtdXJsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tbG9hZC11cmwuaHRtbDogUmVu
YW1lZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9h
cHAtYm91bmQtYXR0cmlidXRpb24tbG9hZC11cmwuaHRtbC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1waW5nLWxvYWQtZXhwZWN0ZWQudHh0OiBS
ZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5
L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1waW5nLWxvYWQtZXhwZWN0ZWQudHh0LgorICAgICAgICAq
IGh0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXBpbmctbG9hZC5odG1s
OiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2
YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1waW5nLWxvYWQuaHRtbC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1wb3N0LXJlcXVlc3QtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9h
dHRyaWJ1dGlvbi1wb3N0LXJlcXVlc3QuaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tcG9z
dC1yZXF1ZXN0Lmh0bWwuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQv
YXR0cmlidXRpb24tcHJlZmxpZ2h0LWFzeW5jLWV4cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0
cmlidXRpb24tcHJlZmxpZ2h0LWFzeW5jLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1wcmVmbGlnaHQtYXN5bmMuaHRtbDog
UmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFj
eS9hcHAtYm91bmQtYXR0cmlidXRpb24tcHJlZmxpZ2h0LWFzeW5jLmh0bWwuCisgICAgICAgICog
aHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tcHJlZmxpZ2h0LXN5bmMt
ZXhwZWN0ZWQudHh0OiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAt
YnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1wcmVmbGlnaHQtc3luYy1leHBl
Y3RlZC50eHQuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmli
dXRpb24tcHJlZmxpZ2h0LXN5bmMuaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tcHJlZmxp
Z2h0LXN5bmMuaHRtbC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9h
dHRyaWJ1dGlvbi1zcGVjdWxhdGl2ZS1yZXZhbGlkYXRpb24tZXhwZWN0ZWQudHh0OiBSZW5hbWVk
IGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1i
b3VuZC1hdHRyaWJ1dGlvbi1zcGVjdWxhdGl2ZS1yZXZhbGlkYXRpb24tZXhwZWN0ZWQudHh0Lgor
ICAgICAgICAqIGh0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXNwZWN1
bGF0aXZlLXJldmFsaWRhdGlvbi5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1zcGVjdWxh
dGl2ZS1yZXZhbGlkYXRpb24uaHRtbC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcC1wcml2YWN5
LXJlcG9ydC9yZXNvdXJjZXMvZnJhbWUtd2l0aC1hdXRoZW50aWNhdGVkLXJlc291cmNlLnB5OiBS
ZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5
L3Jlc291cmNlcy9mcmFtZS13aXRoLWF1dGhlbnRpY2F0ZWQtcmVzb3VyY2UucHkuCisgICAgICAg
ICogaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvcmVzb3VyY2VzL3Bvc3QucHk6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L3Jlc291cmNlcy9yZXNv
dXJjZS13aXRoLWF1dGgucHk6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
LWFwcC1icm93c2VyLXByaXZhY3kvcmVzb3VyY2VzL3Jlc291cmNlLXdpdGgtYXV0aC5weS4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJp
YnV0aW9uLWxvYWQtdXJsLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXBvc3QtcmVx
dWVzdC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbi1hcHAt
YnJvd3Nlci1wcml2YWN5L2NvbnRleHQtc3RyaW5nLWZvci1zdWJmcmFtZS1leHBlY3RlZC50eHQ6
IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2Nv
bnRleHQtc3RyaW5nLWZvci1zdWJmcmFtZS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9jb250ZXh0LXN0cmluZy1wcmVjb25uZWN0LWV4
cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luLWFwcC1icm93c2Vy
LXByaXZhY3kvY29udGV4dC1zdHJpbmctcHJlY29ubmVjdC5odG1sOiBSZW1vdmVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9jb250ZXh0LXN0cmluZy1wcmVm
bGlnaHQtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW4tYXBw
LWJyb3dzZXItcHJpdmFjeS9jb250ZXh0LXN0cmluZy1wcmVmbGlnaHQuaHRtbDogUmVtb3ZlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvcmVzb3VyY2VzL3Bv
c3QucHk6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNl
cy9jaGVjay1waW5nLWFwcC1pbml0aWF0ZWQtZGF0YS5weTogUmVuYW1lZCBmcm9tIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvY2hlY2stcGluZy1hcHAtYm91bmQt
ZGF0YS5weS4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisK
IDIwMjEtMDYtMjMgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAK
ICAgICAgICAgW1dpbkNhaXJvXSBVbnJldmlld2VkIHRlc3QgZ2FyZGVuaW5nCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0
aW9ucwppbmRleCBkN2IzNTM2ZDhhYzAxYjkyZWY5N2E3YTU5MzFmZTQ5NTI2ODVhYTU4Li43MDBh
YmMyNjE0Y2JkMTM2MGZhMDdmNzQ0YjUzMGRjMGYyZTE4MzJmIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMK
QEAgLTE5NCw2ICsxOTQsOSBAQCBmYXN0L3NwZWVjaHJlY29nbml0aW9uL3N0YXJ0LXJlY29nbml0
aW9uLXRoZW4tc3RvcC5odG1sIFsgU2tpcCBdCiBmYXN0L3NwZWVjaHJlY29nbml0aW9uL3N0YXJ0
LXNlY29uZC1yZWNvZ25pdGlvbi5odG1sIFsgU2tpcCBdCiBmYXN0L3NwZWVjaHJlY29nbml0aW9u
L2lvcy8gWyBTa2lwIF0KIAorIyBhcHAtcHJpdmFjeS1yZXBvcnQgdGVzdHMgcmVseSBvbiBXZWJL
aXRBZGRpdGlvbnMKK2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0LyBbIFNraXAgXQorCiAj
IE9ubHkgcGFydGlhbCBzdXBwb3J0IG9uIENvY29hIHBsYXRmb3Jtcy4KIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc3BlZWNoLWFwaS8gWyBTa2lwIF0KIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tbG9hZC11
cmwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBv
cnQvYXR0cmlidXRpb24tbG9hZC11cmwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEwMDI0ODA0
NTE1OTlmYjQwOGVkMDBmNDhiZmQ2NzI4ZjI2ZDZkZjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1sb2FkLXVy
bC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitUZXN0IGxvYWRVUkwgcmVxdWVzdHMgYXJl
IHN1Y2Nlc2Z1bGx5IGF0dHJpYnV0ZWQgYXMgYXBwIGluaXRpYXRlZC4KK1BBU1Mgc3VjY2Vzc2Z1
bGx5IGxvYWRlZCBvbmx5IGFwcCBpbml0aWF0ZWQgcmVxdWVzdHMKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tbG9hZC11
cmwuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJp
YnV0aW9uLWxvYWQtdXJsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDdhZDhlZTVjODdjYzJkMTg1ZWQ3OTdm
NWJlZjA3YWQ2OTRlOGMwNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLWxvYWQtdXJsLmh0bWwKQEAgLTAsMCAr
MSw0OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InNl
dFRpbWVvdXQoJ3J1blRlc3QoKScsIDApIj4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj5UZXN0IGxv
YWRVUkwgcmVxdWVzdHMgYXJlIHN1Y2Nlc2Z1bGx5IGF0dHJpYnV0ZWQgYXMgYXBwIGluaXRpYXRl
ZC48L2Rpdj4KKzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorPHNjcmlwdD4KKyAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cisg
ICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGxv
YWRVUkwoKSB7CisgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgPSBkZXN0aW5hdGlvbk9y
aWdpbiArICIvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLWxvYWQtdXJsLmh0bWwiOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdjb25zb2xlJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUobWVzc2FnZSArICdcbicpKTsKKyAgICB9CisKKyAgICBjb25zdCBkZXN0aW5hdGlvbk9yaWdp
biA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAiOworICAgIGNvbnN0IHN0YXJ0aW5nT3JpZ2luID0g
Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMCI7CisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAg
ICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLm9yaWdpbiA9PT0gc3RhcnRpbmdPcmlnaW4pIHsKKyAg
ICAgICAgICAgIGxvYWRVUkwoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHZhciBk
aWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdCA9IHRlc3RSdW5uZXIuZGlkTG9hZEFwcEluaXRpYXRl
ZFJlcXVlc3QoKTsKKyAgICAgICAgICAgIHZhciBkaWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVz
dCA9IHRlc3RSdW5uZXIuZGlkTG9hZE5vbkFwcEluaXRpYXRlZFJlcXVlc3QoKTsKKworICAgICAg
ICAgICAgaWYgKGRpZExvYWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0KSB7CisgICAgICAgICAgICAg
ICAgbG9nKCJGQUlMIGRpZCBsb2FkIG5vbiBhcHAgaW5pdGlhdGVkIHJlcXVlc3QiKTsKKyAgICAg
ICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgaWYgKCFkaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdCkgeworICAgICAgICAgICAg
ICAgIGxvZygiRkFJTCBkaWQgbm90IGxvYWQgYXBwIGluaXRpYXRlZCByZXF1ZXN0Iik7CisgICAg
ICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGxvZygiUEFTUyBzdWNjZXNzZnVsbHkgbG9hZGVkIG9ubHkgYXBwIGluaXRpYXRl
ZCByZXF1ZXN0cyIpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAg
ICAgIH0KKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXBpbmct
bG9hZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJl
cG9ydC9hdHRyaWJ1dGlvbi1waW5nLWxvYWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBkNjE3
ZWU5MDBhNDkwMmI5N2E0YmVkNmEzOWU5NjU2NmNlNDU1OWYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1waW5n
LWxvYWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorQ09OU09MRSBNRVNTQUdFOiBQQVNT
IHN1Y2Nlc3NmdWxseSBsb2FkZWQgb25seSBhcHAgaW5pdGlhdGVkIHJlcXVlc3RzCitQaW5nIHNl
bnQgc3VjY2Vzc2Z1bGx5CitDT05URU5UX1RZUEU6IHRleHQvcGluZworSFRUUF9IT1NUOiAxMjcu
MC4wLjE6ODAwMAorSFRUUF9QSU5HX0ZST006IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9hcHAtcHJp
dmFjeS1yZXBvcnQvYXR0cmlidXRpb24tcGluZy1sb2FkLmh0bWwKK0hUVFBfUElOR19UTzogaHR0
cDovLzEyNy4wLjAuMTo4MDAwL25hdmlnYXRpb24vcmVzb3VyY2VzL2NoZWNrLXBpbmctYXBwLWlu
aXRpYXRlZC1kYXRhLnB5CitSRVFVRVNUX01FVEhPRDogUE9TVAorUkVRVUVTVF9VUkk6IC9uYXZp
Z2F0aW9uL3Jlc291cmNlcy9zYXZlLXBpbmcucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXBpbmctbG9hZC5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tcGlu
Zy1sb2FkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTEwMGNhZTJjNjJjZGFiZGFhNGUxMGVjMzlmOWM5MGE4
OWViZTk5NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXBy
aXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXBpbmctbG9hZC5odG1sCkBAIC0wLDAgKzEsMzAgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9uYXZpZ2F0
aW9uL3BpbmctYXR0cmlidXRlL3Jlc291cmNlcy91dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAg
dGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzU2hv
dWxkRG93bmdyYWRlUmVmZXJyZXIoZmFsc2UsIGZ1bmN0aW9uICgpIHsgfSk7CisgICAgaW50ZXJu
YWxzLnNldHRpbmdzLnNldEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZCh0cnVlKTsKKyAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgY2xp
Y2tFbGVtZW50KGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImltZyIpKTsKK30KKword2luZG93Lm9u
bG9hZCA9IGZ1bmN0aW9uICgpCit7CisgICAgY2xlYXJMYXN0UGluZ1Jlc3VsdEFuZFJ1blRlc3Qo
dGVzdCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxpbWcgc3JjPSJub24t
ZXhpc3RlbnQtaW1hZ2UuanBnIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCIgdXNlbWFwPSIjaW1h
Z2VtYXAiPgorICAgIDxtYXAgbmFtZT0iaW1hZ2VtYXAiPgorICAgICAgICA8YXJlYSBzaGFwZT0i
cmVjdCIgY29vcmRzPSIwLDAsMTI4LDEyOCIgaHJlZj0iLi4vbmF2aWdhdGlvbi9yZXNvdXJjZXMv
Y2hlY2stcGluZy1hcHAtaW5pdGlhdGVkLWRhdGEucHkiIHBpbmc9Ii4uL25hdmlnYXRpb24vcmVz
b3VyY2VzL3NhdmUtcGluZy5weSI+CisgICAgPC9tYXA+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1
dGlvbi1wb3N0LXJlcXVlc3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9h
cHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tcG9zdC1yZXF1ZXN0LWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lMjQ1ZTM0MGYxN2RlOGU0ZjNlMzU5Y2MxYjlmNDE0NzY2ZGVjZjFjCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQv
YXR0cmlidXRpb24tcG9zdC1yZXF1ZXN0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK0NP
TlNPTEUgTUVTU0FHRTogUEFTUyBzdWNjZXNzZnVsbHkgbG9hZGVkIG9ubHkgYXBwIGluaXRpYXRl
ZCByZXF1ZXN0cworVGVzdHMgYXBwIGluaXRpYXRlZCByZXF1ZXN0cyBnZXQgbWFya2VkIGZvciBQ
T1NUIHJlcXVlc3RzLgorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBw
LXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXBvc3QtcmVxdWVzdC5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tcG9zdC1yZXF1ZXN0
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYWQ3OTU0Zjc4MDMzYjRkZTYwNWI5MDFhNjAzZjliZDMxOWU1MTI4
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3kt
cmVwb3J0L2F0dHJpYnV0aW9uLXBvc3QtcmVxdWVzdC5odG1sCkBAIC0wLDAgKzEsMjIgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8cD5UZXN0cyBhcHAgaW5pdGlhdGVkIHJlcXVlc3RzIGdldCBtYXJr
ZWQgZm9yIFBPU1QgcmVxdWVzdHMuPC9wPgorPGZvcm0gaWQ9InRlc3RGb3JtIiBhY3Rpb249InJl
c291cmNlcy9wb3N0LnB5IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub3JlZmVycmVyIiBtZXRob2Q9
InBvc3QiPgorPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IlRlc3QiPjwvaW5wdXQ+Cis8Zm9y
bT4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLnNldENhbk9wZW5XaW5kb3dzKHRydWUpOwor
fQorCitkb2N1bWVudC5mb3Jtc1swXS5zdWJtaXQoKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJl
cG9ydC9hdHRyaWJ1dGlvbi1wcmVmbGlnaHQtYXN5bmMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tcHJlZmxpZ2h0LWFz
eW5jLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YjVlZWE5NDIyYWQwY2FlZTc2NjdiY2Q0MDZk
YjkzZTBhNWU5ZTJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9h
cHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tcHJlZmxpZ2h0LWFzeW5jLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDYgQEAKK0NPTlNPTEUgTUVTU0FHRTogUHJlZmxpZ2h0IHJlc3BvbnNlIGlz
IG5vdCBzdWNjZXNzZnVsCitDT05TT0xFIE1FU1NBR0U6IFhNTEh0dHBSZXF1ZXN0IGNhbm5vdCBs
b2FkIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvc3RhdHVz
LTQwNC13aXRob3V0LWJvZHkucHkgZHVlIHRvIGFjY2VzcyBjb250cm9sIGNoZWNrcy4KK1Rlc3Rz
IGFwcCBpbml0aWF0ZWQgcmVxdWVzdHMgZ2V0IG1hcmtlZCBmb3IgYXN5bmMgcHJlZmxpZ2h0cwor
CitQQVNTIHN1Y2Nlc3NmdWxseSBsb2FkZWQgb25seSBhcHAgaW5pdGlhdGVkIHJlcXVlc3RzCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0
dHJpYnV0aW9uLXByZWZsaWdodC1hc3luYy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9h
cHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tcHJlZmxpZ2h0LWFzeW5jLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMzkzYjlmM2MyNGRiN2UzMGM5ZjUxZTlmNGQyMjcxNmQ2NjJlOGRiNgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJp
YnV0aW9uLXByZWZsaWdodC1hc3luYy5odG1sCkBAIC0wLDAgKzEsNDYgQEAKKzxwPlRlc3RzIGFw
cCBpbml0aWF0ZWQgcmVxdWVzdHMgZ2V0IG1hcmtlZCBmb3IgYXN5bmMgcHJlZmxpZ2h0czwvcD4K
KworPHByZSBpZD0iY29uc29sZSI+PC9wcmU+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUobWVzc2FnZSArICdcbicpKTsKK30KKwordmFyIHByZWZsaWdodExpbmtEb21haW4gPSAi
bG9jYWxob3N0IjsKK3ZhciBjb250ZXh0SG9zdCA9ICIxMjcuMC4wLjEiOwordmFyIHVybCA9ICJo
dHRwOi8vbG9jYWxob3N0OjgwMDAveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL3N0YXR1cy00MDQt
d2l0aG91dC1ib2R5LnB5IgorCitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICB2YXIgcmVxID0g
bmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisgICAgcmVxLm9wZW4oIkdFVCIsIHVybCwgdHJ1ZSk7Cisg
ICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoIngtd2Via2l0IiwgImZvbyIpOworCisgICAgcmVxLm9u
ZXJyb3IgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIGRpZExvYWRBcHBJbml0aWF0ZWRSZXF1
ZXN0ID0gdGVzdFJ1bm5lci5kaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdCgpOworICAgICAgICB2
YXIgZGlkTG9hZE5vbkFwcEluaXRpYXRlZFJlcXVlc3QgPSB0ZXN0UnVubmVyLmRpZExvYWROb25B
cHBJbml0aWF0ZWRSZXF1ZXN0KCk7CisKKyAgICAgICAgaWYgKGRpZExvYWROb25BcHBJbml0aWF0
ZWRSZXF1ZXN0KSB7CisgICAgICAgICAgICBsb2coIkZBSUwgZGlkIGxvYWQgbm9uIGFwcCBpbml0
aWF0ZWQgcmVxdWVzdCIpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoIWRpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0KSB7Cisg
ICAgICAgICAgICBsb2coIkZBSUwgZGlkIG5vdCBsb2FkIGFwcCBpbml0aWF0ZWQgcmVxdWVzdCIp
OworICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgIH0KKworICAg
ICAgICBsb2coIlBBU1Mgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBvbmx5IGFwcCBpbml0aWF0ZWQgcmVx
dWVzdHMiKTsKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfQorICAgIHJl
cS5zZW5kKG51bGwpOworfQorCitydW5UZXN0KCk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXByZWZs
aWdodC1zeW5jLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZh
Y3ktcmVwb3J0L2F0dHJpYnV0aW9uLXByZWZsaWdodC1zeW5jLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40MDE2YzUzMWUwNjU5YWRjZGQ2MzU1NTIzZWExYjBhZDJkNWEyYjFjCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmli
dXRpb24tcHJlZmxpZ2h0LXN5bmMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorQ09OU09M
RSBNRVNTQUdFOiBQcmVmbGlnaHQgcmVzcG9uc2UgaXMgbm90IHN1Y2Nlc3NmdWwKK0NPTlNPTEUg
TUVTU0FHRTogWE1MSHR0cFJlcXVlc3QgY2Fubm90IGxvYWQgaHR0cDovL2xvY2FsaG9zdDo4MDAw
L3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9zdGF0dXMtNDA0LXdpdGhvdXQtYm9keS5weSBkdWUg
dG8gYWNjZXNzIGNvbnRyb2wgY2hlY2tzLgorVGVzdHMgYXBwIGluaXRpYXRlZCByZXF1ZXN0cyBn
ZXQgbWFya2VkIGZvciBzeW5jIHByZWZsaWdodHMKKworUEFTUzogTmV0d29ya0Vycm9yOiAgQSBu
ZXR3b3JrIGVycm9yIG9jY3VycmVkLgorUEFTUyBzdWNjZXNzZnVsbHkgbG9hZGVkIG9ubHkgYXBw
IGluaXRpYXRlZCByZXF1ZXN0cworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1wcmVmbGlnaHQtc3luYy5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tcHJlZmxp
Z2h0LXN5bmMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYjU0MDk1YTFmZjdjMDQxZDFhYmU1NjAwZmE1YmNl
NWNlZWU0M2E1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAt
cHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tcHJlZmxpZ2h0LXN5bmMuaHRtbApAQCAtMCwwICsx
LDQ5IEBACis8cD5UZXN0cyBhcHAgaW5pdGlhdGVkIHJlcXVlc3RzIGdldCBtYXJrZWQgZm9yIHN5
bmMgcHJlZmxpZ2h0czwvcD4KKworPHByZSBpZD0iY29uc29sZSI+PC9wcmU+Cis8c2NyaXB0Pgor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cisg
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdl
KQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSArICdcbicpKTsKK30KKwordmFyIHByZWZs
aWdodExpbmtEb21haW4gPSAibG9jYWxob3N0IjsKK3ZhciBjb250ZXh0SG9zdCA9ICIxMjcuMC4w
LjEiOwordmFyIHVybCA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAveG1saHR0cHJlcXVlc3QvcmVz
b3VyY2VzL3N0YXR1cy00MDQtd2l0aG91dC1ib2R5LnB5IgorCitmdW5jdGlvbiBydW5UZXN0KCkK
K3sKKyAgICB2YXIgcmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisgICAgcmVxLm9wZW4oIkdF
VCIsIHVybCwgZmFsc2UpOworICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKCJ4LXdlYmtpdCIsICJm
b28iKTsKKworICAgIHRyeSB7CisgICAgICAgIHJlcS5zZW5kKG51bGwpOworICAgICAgICBsb2co
IlBBU1M6ICIgKyByZXEucmVzcG9uc2VUZXh0KTsKKyAgICB9IGNhdGNoIChleCkgeworICAgICAg
ICBsb2coIlBBU1M6ICIgKyBleCk7CisgICAgICAgIHZhciBkaWRMb2FkQXBwSW5pdGlhdGVkUmVx
dWVzdCA9IHRlc3RSdW5uZXIuZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3QoKTsKKyAgICAgICAg
dmFyIGRpZExvYWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0ID0gdGVzdFJ1bm5lci5kaWRMb2FkTm9u
QXBwSW5pdGlhdGVkUmVxdWVzdCgpOworCisgICAgICAgIGlmIChkaWRMb2FkTm9uQXBwSW5pdGlh
dGVkUmVxdWVzdCkgeworICAgICAgICAgICAgbG9nKCJGQUlMIGRpZCBsb2FkIG5vbiBhcHAgaW5p
dGlhdGVkIHJlcXVlc3QiKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKCFkaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdCkgewor
ICAgICAgICAgICAgbG9nKCJGQUlMIGRpZCBub3QgbG9hZCBhcHAgaW5pdGlhdGVkIHJlcXVlc3Qi
KTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9CisKKyAg
ICAgICAgbG9nKCJQQVNTIHN1Y2Nlc3NmdWxseSBsb2FkZWQgb25seSBhcHAgaW5pdGlhdGVkIHJl
cXVlc3RzIik7CisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgIH0KK30KKwor
cnVuVGVzdCgpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1zcGVjdWxhdGl2ZS1yZXZhbGlkYXRpb24t
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQv
YXR0cmlidXRpb24tc3BlY3VsYXRpdmUtcmV2YWxpZGF0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iMjFjMmQ1OTk0MTQ0ZTgxMGUxNTc3ZWZmYmNkMDljZTA2ZGYzZGRkCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmli
dXRpb24tc3BlY3VsYXRpdmUtcmV2YWxpZGF0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0
IEBACisxMjcuMC4wLjE6ODAwMCAtIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAt
IFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lSFRUUEJhc2ljIC0gUmVzcG9uZGlu
ZyB3aXRoIHRlc3RVc2VybmFtZTp0ZXN0UGFzc3dvcmQKKzEyNy4wLjAuMTo4MDAwIC0gZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIC0gUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRp
b25TY2hlbWVIVFRQQmFzaWMgLSBTaW11bGF0aW5nIGNhbmNlbGxlZCBhdXRoZW50aWNhdGlvbiBz
aGVldAorVGVzdHMgc3BlY3VsYXRpdmUgcmV2YWxpZGF0aW9uIG9mIGF1dGhlbnRpY2F0ZWQgcmVz
b3VyY2VzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyB4aHIuc3RhdHVz
IGlzIDQwMQorUEFTUyBTdWNjZXNzZnVseSBsb2FkZWQuCitQQVNTIHN1Y2Nlc3NmdWxseSBsb2Fk
ZWQgb25seSBhcHAgaW5pdGlhdGVkIHJlcXVlc3RzCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tc3BlY3VsYXRpdmUtcmV2YWxpZGF0
aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRy
aWJ1dGlvbi1zcGVjdWxhdGl2ZS1yZXZhbGlkYXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYjc1ZDZm
ZjFiZTg5YTE3ZmJhZGVhZWZhYzk3NDAwMGRjOWU4NWQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tc3BlY3Vs
YXRpdmUtcmV2YWxpZGF0aW9uLmh0bWwKQEAgLTAsMCArMSw3MiBAQAorPHNjcmlwdCBzcmM9Ii9q
cy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZGVz
Y3JpcHRpb24oIlRlc3RzIHNwZWN1bGF0aXZlIHJldmFsaWRhdGlvbiBvZiBhdXRoZW50aWNhdGVk
IHJlc291cmNlcy4iKTsKK2pzVGVzdElzQXN5bmMgPSB0cnVlOworCit0ZXN0UnVubmVyLnNldEhh
bmRsZXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZXModHJ1ZSk7Cit0ZXN0UnVubmVyLnNldEF1dGhl
bnRpY2F0aW9uVXNlcm5hbWUoInRlc3RVc2VybmFtZSIpOwordGVzdFJ1bm5lci5zZXRBdXRoZW50
aWNhdGlvblBhc3N3b3JkKCJ0ZXN0UGFzc3dvcmQiKTsKKworc3RhdGUgPSAid2FybXVwIjsKKwor
ZnVuY3Rpb24gY2xlYXJDcmVkZW50aWFsU3RvcmFnZSgpCit7CisgICAgeGhyID0gbmV3IFhNTEh0
dHBSZXF1ZXN0KCk7CisgICAgeGhyLm9wZW4oIkdFVCIsICJyZXNvdXJjZXMvcmVzb3VyY2Utd2l0
aC1hdXRoLnB5P290aGVyIiwgZmFsc2UsICJiYWRVc2VybmFtZSIsICJiYWRQYXNzd29yZCIpOwor
ICAgIHhoci5zZW5kKCk7CisgICAgc2hvdWxkQmUoInhoci5zdGF0dXMiLCAiNDAxIik7Cit9CisK
K2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdj
b25zb2xlJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSArICdc
bicpKTsKK30KKworZnVuY3Rpb24gZnJhbWVMb2FkZWQoKQoreworICAgIGlmIChzdGF0ZSA9PSAi
d2FybXVwIikgeworICAgICAgICAvLyBOYXZpZ2F0ZSBmcmFtZSB0byAnYWJvdXQ6YmxhbmsnIHRv
IGZsdXNoIHRvIHN1YnJlc291cmNlIGxvYWRzIG1ldGFkYXRhIHRvIGRpc2suCisgICAgICAgIHN0
YXRlID0gImZsdXNoaW5nTWV0YWRhdGEiOworICAgICAgICB0ZXN0UnVubmVyLnNldEhhbmRsZXNB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZXMoZmFsc2UpOworICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgidGVzdEZyYW1lIikuc3JjID0gImFib3V0OmJsYW5rIjsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICBpZiAoc3RhdGUgPT0gImZsdXNoaW5nTWV0YWRhdGEiKSB7CisgICAgICAg
IGNsZWFyQ3JlZGVudGlhbFN0b3JhZ2UoKTsKKworICAgICAgICBpbnRlcm5hbHMuY2xlYXJNZW1v
cnlDYWNoZSgpOworICAgICAgICB0ZXN0UnVubmVyLnNldEhhbmRsZXNBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZXMoZmFsc2UpOworCisgICAgICAgIC8vIE5hdmlnYXRlIGZyYW1lIHRvIGl0cyBvcmln
aW5hbCBsb2NhdGlvbiBhZ2Fpbi4gVGhpcyB0aW1lIGl0IHNob3VsZCBzcGVjdWxhdGl2ZWx5Cisg
ICAgICAgIC8vIHZhbGlkYXRlIHN1YnJlc291cmNlcyBhcyB3ZSBoYXZlIHN1YnJlc291cmNlIGxv
YWRzIG1ldGFkYXRhIGluIHRoZSBkaXNrIGNhY2hlLgorICAgICAgICBzdGF0ZSA9ICJzcGVjdWxh
dGl2ZVJldmFsaWRhdGlvbiI7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0
RnJhbWUiKS5zcmMgPSAicmVzb3VyY2VzL2ZyYW1lLXdpdGgtYXV0aGVudGljYXRlZC1yZXNvdXJj
ZS5weSI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKHN0YXRlID09ICJzcGVjdWxh
dGl2ZVJldmFsaWRhdGlvbiIpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiU3VjY2Vzc2Z1bHkgbG9h
ZGVkLiIpOworICAgICAgICB2YXIgZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3QgPSB0ZXN0UnVu
bmVyLmRpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0KCk7CisgICAgICAgIHZhciBkaWRMb2FkTm9u
QXBwSW5pdGlhdGVkUmVxdWVzdCA9IHRlc3RSdW5uZXIuZGlkTG9hZE5vbkFwcEluaXRpYXRlZFJl
cXVlc3QoKTsKKworICAgICAgICBpZiAoZGlkTG9hZE5vbkFwcEluaXRpYXRlZFJlcXVlc3QpIHsK
KyAgICAgICAgICAgIGxvZygiRkFJTCBkaWQgbG9hZCBub24gYXBwIGluaXRpYXRlZCByZXF1ZXN0
Iik7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmICghZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3QpIHsKKyAg
ICAgICAgICAgIGxvZygiRkFJTCBkaWQgbm90IGxvYWQgYXBwIGluaXRpYXRlZCByZXF1ZXN0Iik7
CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIGxvZygiUEFTUyBzdWNjZXNzZnVsbHkgbG9hZGVkIG9ubHkgYXBwIGlu
aXRpYXRlZCByZXF1ZXN0cyIpOworCisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorfQorCis8L3NjcmlwdD4KKzxpZnJhbWUgaWQ9InRlc3RGcmFtZSIgc3Jj
PSJyZXNvdXJjZXMvZnJhbWUtd2l0aC1hdXRoZW50aWNhdGVkLXJlc291cmNlLnB5IiBvbmxvYWQ9
ImZyYW1lTG9hZGVkKCkiPjwvaWZyYW1lPgorPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvcmVzb3VyY2VzL2ZyYW1lLXdpdGgtYXV0aGVudGlj
YXRlZC1yZXNvdXJjZS5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVw
b3J0L3Jlc291cmNlcy9mcmFtZS13aXRoLWF1dGhlbnRpY2F0ZWQtcmVzb3VyY2UucHkKbmV3IGZp
bGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODQ4ZDBmZDFhNmQ2YzA5OWFhZDYxZTAwNDI0MmUyMzg5NTUzZTk0MQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L3Jlc291
cmNlcy9mcmFtZS13aXRoLWF1dGhlbnRpY2F0ZWQtcmVzb3VyY2UucHkKQEAgLTAsMCArMSwxMyBA
QAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworCitpbXBvcnQgc3lzCisKK3N5cy5zdGRvdXQud3Jp
dGUoCisgICAgJ0NhY2hlLUNvbnRyb2w6IG1heC1hZ2U9MFxyXG4nCisgICAgJ0V0YWc6IDEyMzQ1
Njc4OVxyXG4nCisgICAgJ0NvbnRlbnQtVHlwZTogdGV4dC9odG1sXHJcblxyXG4nCisgICAgJzwh
RE9DVFlQRSBodG1sPlxuJworICAgICc8Ym9keT5cbicKKyAgICAnPHNjcmlwdCBzcmM9InJlc291
cmNlLXdpdGgtYXV0aC5weSI+PC9zY3JpcHQ+XG4nCisgICAgJzwvYm9keT5cbicKKykKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L3Jlc291cmNl
cy9wb3N0LnB5IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvcmVz
b3VyY2VzL3Bvc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDA2ZmVlZTIxMmM3MDFjZjYyZDlkODMwZGZmMmI1
Yjg3NjFiOTM5ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBw
LXByaXZhY3ktcmVwb3J0L3Jlc291cmNlcy9wb3N0LnB5CkBAIC0wLDAgKzEsMjcgQEAKKyMhL3Vz
ci9iaW4vZW52IHB5dGhvbjMKKworaW1wb3J0IG9zCitpbXBvcnQgc3lzCisKK3JlZmVyZXIgPSBv
cy5lbnZpcm9uLmdldCgnSFRUUF9SRUZFUkVSJywgJycpCisKK3N5cy5zdGRvdXQud3JpdGUoCisg
ICAgJ0NvbnRlbnQtVHlwZTogdGV4dC9odG1sXHJcblxyXG4nCisgICAgJzxwPlJlZmVycmVyOiB7
cmVmZXJlcn08L3A+XG4nCisgICAgJzxzY3JpcHQ+XG4nCisgICAgJ2lmICh3aW5kb3cudGVzdFJ1
bm5lcikge3tcbicKKyAgICAnICAgIHZhciBkaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdCA9IHRl
c3RSdW5uZXIuZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3QoKTtcbicKKyAgICAnICAgIHZhciBk
aWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdCA9IHRlc3RSdW5uZXIuZGlkTG9hZE5vbkFwcElu
aXRpYXRlZFJlcXVlc3QoKTtcbicKKyAgICAnICAgIGlmIChkaWRMb2FkTm9uQXBwSW5pdGlhdGVk
UmVxdWVzdCkge3tcbicKKyAgICAnICAgICAgICBjb25zb2xlLmxvZygiRkFJTCBkaWQgbG9hZCBu
b24gYXBwIGluaXRpYXRlZCByZXF1ZXN0Iik7XG4nCisgICAgJyAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7XG4nCisgICAgJyAgICB9fVxuJworICAgICcgICAgaWYgKCFkaWRMb2FkQXBw
SW5pdGlhdGVkUmVxdWVzdCkge3tcbicKKyAgICAnICAgICAgICAgY29uc29sZS5sb2coIkZBSUwg
ZGlkIG5vdCBsb2FkIGFwcCBpbml0aWF0ZWQgcmVxdWVzdCIpO1xuJworICAgICcgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpO1xuJworICAgICcgICAgIH19XG4nCisgICAgJyAgICBjb25z
b2xlLmxvZygiUEFTUyBzdWNjZXNzZnVsbHkgbG9hZGVkIG9ubHkgYXBwIGluaXRpYXRlZCByZXF1
ZXN0cyIpO1xuJworICAgICcgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7XG4nCisgICAgJ319
XG4nCisgICAgJzwvc2NyaXB0PlxuJy5mb3JtYXQocmVmZXJlcj1yZWZlcmVyKQorKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvcmVzb3VyY2Vz
L3Jlc291cmNlLXdpdGgtYXV0aC5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZh
Y3ktcmVwb3J0L3Jlc291cmNlcy9yZXNvdXJjZS13aXRoLWF1dGgucHkKbmV3IGZpbGUgbW9kZSAx
MDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Fm
Yjc4ZDgxYzZmM2M5ZGE0NzlkMjhiZTI0NmFlMTViY2QwNGRkZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L3Jlc291cmNlcy9yZXNv
dXJjZS13aXRoLWF1dGgucHkKQEAgLTAsMCArMSwyOSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9u
MworCitpbXBvcnQgYmFzZTY0CitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKKworY3JlZGVudGlhbHMg
PSBiYXNlNjQuYjY0ZGVjb2RlKG9zLmVudmlyb24uZ2V0KCdIVFRQX0FVVEhPUklaQVRJT04nLCAn
IE9nPT0nKS5zcGxpdCgnICcpWzFdKS5kZWNvZGUoKS5zcGxpdCgnOicpCit1c2VybmFtZSA9IGNy
ZWRlbnRpYWxzWzBdCitwYXNzd29yZCA9ICc6Jy5qb2luKGNyZWRlbnRpYWxzWzE6XSkKKworZXhw
ZWN0ZWRVc2VybmFtZSA9ICd0ZXN0VXNlcm5hbWUnCitleHBlY3RlZFBhc3N3b3JkID0gJ3Rlc3RQ
YXNzd29yZCcKK3JlYWxtID0gb3MuZW52aXJvbi5nZXQoJ1JFUVVFU1RfVVJJJywgJycpCisKK3N5
cy5zdGRvdXQud3JpdGUoCisgICAgJ0NvbnRlbnQtVHlwZTogdGV4dC9qYXZhc2NyaXB0XHJcbicK
KyAgICAnQ2FjaGUtQ29udHJvbDogbWF4LWFnZT0wXHJcbicKKyAgICAnRXRhZzogMTIzNDU2Nzg5
XHJcbicKKykKKworaWYgdXNlcm5hbWUgIT0gZXhwZWN0ZWRVc2VybmFtZSBvciBwYXNzd29yZCAh
PSBleHBlY3RlZFBhc3N3b3JkOgorICAgIHN5cy5zdGRvdXQud3JpdGUoCisgICAgICAgIGYnV1dX
LUF1dGhlbnRpY2F0ZTogQmFzaWMgcmVhbG09IntyZWFsbX0iXHJcbicKKyAgICAgICAgJ3N0YXR1
czogNDAxXHJcblxyXG4nCisgICAgICAgIGYnU2VudCB1c2VybmFtZTpwYXNzd29yZCBvZiAoe3Vz
ZXJuYW1lfTp7cGFzc3dvcmR9KSB3aGljaCBpcyBub3Qgd2hhdCB3YXMgZXhwZWN0ZWRcbicKKyAg
ICApCisgICAgc3lzLmV4aXQoMCkKKworc3lzLnN0ZG91dC53cml0ZSgnXHJcbmxvYWRlZCA9IHRy
dWU7XG4nKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nl
ci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1sb2FkLXVybC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0
dHJpYnV0aW9uLWxvYWQtdXJsLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDc5ODFmMWUwODRiMGNlMjU3YWY2ZjNlNWE2MGQxZjVkMjUyZWYyZi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLWxvYWQtdXJs
LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotVGVzdCBsb2FkVVJM
IHJlcXVlc3RzIGFyZSBzdWNjZXNmdWxseSBhdHRyaWJ1dGVkIGFzIGFwcC1ib3VuZC4KLVBBU1Mg
c3VjY2Vzc2Z1bGx5IGxvYWRlZCBvbmx5IGFwcC1ib3VuZCByZXF1ZXN0cwotCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5k
LWF0dHJpYnV0aW9uLWxvYWQtdXJsLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFw
cC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLWxvYWQtdXJsLmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjY2JjZjNmMjAxMTJmMWUxNmQ0MGVmNzk3ZTQ4
ZDk4Mjc3NWNhNDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3Vu
ZC1hdHRyaWJ1dGlvbi1sb2FkLXVybC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBA
QAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotICAgIDxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InNldFRpbWVv
dXQoJ3J1blRlc3QoKScsIDApIj4KLTxkaXYgaWQ9ImRlc2NyaXB0aW9uIj5UZXN0IGxvYWRVUkwg
cmVxdWVzdHMgYXJlIHN1Y2Nlc2Z1bGx5IGF0dHJpYnV0ZWQgYXMgYXBwLWJvdW5kLjwvZGl2Pgot
PHByZSBpZD0iY29uc29sZSI+PC9wcmU+Ci08c2NyaXB0PgotICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikgewotICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICAgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gbG9hZFVSTCgpIHsK
LSAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaHJlZiA9IGRlc3RpbmF0aW9uT3JpZ2luICsgIi9p
bi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1sb2FkLXVybC5odG1s
IjsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkgewotICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKG1lc3NhZ2UgKyAnXG4nKSk7Ci0gICAgfQotCi0gICAgY29uc3QgZGVzdGluYXRpb25P
cmlnaW4gPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwIjsKLSAgICBjb25zdCBzdGFydGluZ09yaWdp
biA9ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiOwotICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7Ci0g
ICAgICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5vcmlnaW4gPT09IHN0YXJ0aW5nT3JpZ2luKSB7
Ci0gICAgICAgICAgICBsb2FkVVJMKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB2
YXIgZGlkTG9hZEFwcEJvdW5kUmVxdWVzdCA9IHRlc3RSdW5uZXIuZGlkTG9hZEFwcEJvdW5kUmVx
dWVzdCgpOwotICAgICAgICAgICAgdmFyIGRpZExvYWROb25BcHBCb3VuZFJlcXVlc3QgPSB0ZXN0
UnVubmVyLmRpZExvYWROb25BcHBCb3VuZFJlcXVlc3QoKTsKLQotICAgICAgICAgICAgaWYgKGRp
ZExvYWROb25BcHBCb3VuZFJlcXVlc3QpIHsKLSAgICAgICAgICAgICAgICBsb2coIkZBSUwgZGlk
IGxvYWQgbm9uIGFwcC1ib3VuZCByZXF1ZXN0Iik7Ci0gICAgICAgICAgICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICghZGlkTG9h
ZEFwcEJvdW5kUmVxdWVzdCkgewotICAgICAgICAgICAgICAgIGxvZygiRkFJTCBkaWQgbm90IGxv
YWQgYXBwLWJvdW5kIHJlcXVlc3QiKTsKLSAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbG9nKCJQQVNTIHN1Y2Nlc3Nm
dWxseSBsb2FkZWQgb25seSBhcHAtYm91bmQgcmVxdWVzdHMiKTsKLSAgICAgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOwotICAgICAgICB9Ci0gICAgfQotPC9zY3JpcHQ+Ci08L2JvZHk+
Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93
c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXBpbmctbG9hZC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5k
LWF0dHJpYnV0aW9uLXBpbmctbG9hZC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDhkYjcxYWJmN2RkYzg5MDliZDQzYmQ0MjQ4ZWFhZmEzYzJlODI5YmQuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1waW5n
LWxvYWQtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1DT05TT0xF
IE1FU1NBR0U6IFBBU1Mgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBvbmx5IGFwcC1ib3VuZCByZXF1ZXN0
cwotUGluZyBzZW50IHN1Y2Nlc3NmdWxseQotQ09OVEVOVF9UWVBFOiB0ZXh0L3BpbmcKLUhUVFBf
SE9TVDogMTI3LjAuMC4xOjgwMDAKLUhUVFBfUElOR19GUk9NOiBodHRwOi8vMTI3LjAuMC4xOjgw
MDAvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tcGluZy1sb2Fk
Lmh0bWwKLUhUVFBfUElOR19UTzogaHR0cDovLzEyNy4wLjAuMTo4MDAwL25hdmlnYXRpb24vcmVz
b3VyY2VzL2NoZWNrLXBpbmctYXBwLWJvdW5kLWRhdGEucHkKLVJFUVVFU1RfTUVUSE9EOiBQT1NU
Ci1SRVFVRVNUX1VSSTogL25hdmlnYXRpb24vcmVzb3VyY2VzL3NhdmUtcGluZy5weQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1i
b3VuZC1hdHRyaWJ1dGlvbi1waW5nLWxvYWQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tcGluZy1sb2FkLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwYmIxMDY3YzdkYThiMTUwZTliMDBj
OTFiOGU1MjU4MDRkNTJkOWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2Fw
cC1ib3VuZC1hdHRyaWJ1dGlvbi1waW5nLWxvYWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDMw
ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIu
Li9uYXZpZ2F0aW9uL3BpbmctYXR0cmlidXRlL3Jlc291cmNlcy91dGlsaXRpZXMuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuaW50ZXJuYWxz
KSB7Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAgdGVzdFJ1bm5lci5zZXRTdGF0
aXN0aWNzU2hvdWxkRG93bmdyYWRlUmVmZXJyZXIoZmFsc2UsIGZ1bmN0aW9uICgpIHsgfSk7Ci0g
ICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZCh0cnVlKTsK
LSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLX0KLQotZnVuY3Rpb24gdGVzdCgpCi17
Ci0gICAgY2xpY2tFbGVtZW50KGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImltZyIpKTsKLX0KLQot
d2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uICgpCi17Ci0gICAgY2xlYXJMYXN0UGluZ1Jlc3VsdEFu
ZFJ1blRlc3QodGVzdCk7Ci19Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotICAgIDxpbWcg
c3JjPSJub24tZXhpc3RlbnQtaW1hZ2UuanBnIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCIgdXNl
bWFwPSIjaW1hZ2VtYXAiPgotICAgIDxtYXAgbmFtZT0iaW1hZ2VtYXAiPgotICAgICAgICA8YXJl
YSBzaGFwZT0icmVjdCIgY29vcmRzPSIwLDAsMTI4LDEyOCIgaHJlZj0iLi4vbmF2aWdhdGlvbi9y
ZXNvdXJjZXMvY2hlY2stcGluZy1hcHAtYm91bmQtZGF0YS5weSIgcGluZz0iLi4vbmF2aWdhdGlv
bi9yZXNvdXJjZXMvc2F2ZS1waW5nLnB5Ij4KLSAgICA8L21hcD4KLTwvYm9keT4KLTwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFj
eS9hcHAtYm91bmQtYXR0cmlidXRpb24tcG9zdC1yZXF1ZXN0LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmli
dXRpb24tcG9zdC1yZXF1ZXN0LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNThiNWU3OTgxNWM0ZDU3ODkwOTU2MjVmZTA1M2YzYjgxYjZkZDFkMC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXBvc3QtcmVx
dWVzdC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLUNPTlNPTEUg
TUVTU0FHRTogUEFTUyBzdWNjZXNzZnVsbHkgbG9hZGVkIG9ubHkgYXBwLWJvdW5kIHJlcXVlc3Rz
Ci1UZXN0cyBhcHAgYm91bmQgcmVxdWVzdHMgZ2V0IG1hcmtlZCBmb3IgUE9TVCByZXF1ZXN0cy4K
LQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXBy
aXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXBvc3QtcmVxdWVzdC5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlv
bi1wb3N0LXJlcXVlc3QuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTc3MjNm
ZDNmNGNiZTVjYTMzOTg5NzY1OTcwOGU4Y2NmMTRmYTMwMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1i
cm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXBvc3QtcmVxdWVzdC5odG1sCisr
KyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxo
ZWFkPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxwPlRlc3Rz
IGFwcCBib3VuZCByZXF1ZXN0cyBnZXQgbWFya2VkIGZvciBQT1NUIHJlcXVlc3RzLjwvcD4KLTxm
b3JtIGlkPSJ0ZXN0Rm9ybSIgYWN0aW9uPSJyZXNvdXJjZXMvcG9zdC5weSIgdGFyZ2V0PSJfYmxh
bmsiIHJlbD0ibm9yZWZlcnJlciIgbWV0aG9kPSJwb3N0Ij4KLTxpbnB1dCB0eXBlPSJzdWJtaXQi
IHZhbHVlPSJUZXN0Ij48L2lucHV0PgotPGZvcm0+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0gICAgdGVzdFJ1bm5l
ci5zZXRDYW5PcGVuV2luZG93cyh0cnVlKTsKLX0KLQotZG9jdW1lbnQuZm9ybXNbMF0uc3VibWl0
KCk7Ci0KLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlv
bi1wcmVmbGlnaHQtYXN5bmMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1wcmVmbGlnaHQtYXN5
bmMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNTgzZWYwNzVm
MTc0MDJmNjIwMmJmNjM1OTA1NjlhMjNlZTg1YWM1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dz
ZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tcHJlZmxpZ2h0LWFzeW5jLWV4cGVjdGVk
LnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBQcmVm
bGlnaHQgcmVzcG9uc2UgaXMgbm90IHN1Y2Nlc3NmdWwKLUNPTlNPTEUgTUVTU0FHRTogWE1MSHR0
cFJlcXVlc3QgY2Fubm90IGxvYWQgaHR0cDovL2xvY2FsaG9zdDo4MDAwL3htbGh0dHByZXF1ZXN0
L3Jlc291cmNlcy9zdGF0dXMtNDA0LXdpdGhvdXQtYm9keS5weSBkdWUgdG8gYWNjZXNzIGNvbnRy
b2wgY2hlY2tzLgotVGVzdHMgYXBwIGJvdW5kIHJlcXVlc3RzIGdldCBtYXJrZWQgZm9yIGFzeW5j
IHByZWZsaWdodHMKLQotUEFTUyBzdWNjZXNzZnVsbHkgbG9hZGVkIG9ubHkgYXBwLWJvdW5kIHJl
cXVlc3RzCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dz
ZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tcHJlZmxpZ2h0LWFzeW5jLmh0bWwgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0
dHJpYnV0aW9uLXByZWZsaWdodC1hc3luYy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBlZTQ4M2UzOGM0NDVjNmNlZDhiMTFmNWY2NWZmMTY1NjNhZjRjNTBjLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tcHJlZmxpZ2h0
LWFzeW5jLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi08cD5UZXN0cyBhcHAg
Ym91bmQgcmVxdWVzdHMgZ2V0IG1hcmtlZCBmb3IgYXN5bmMgcHJlZmxpZ2h0czwvcD4KLQotPHBy
ZSBpZD0iY29uc29sZSI+PC9wcmU+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7Ci19Ci0KLWZ1bmN0aW9uIGxvZyhtZXNzYWdlKQotewotICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdjb25zb2xlJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUo
bWVzc2FnZSArICdcbicpKTsKLX0KLQotdmFyIHByZWZsaWdodExpbmtEb21haW4gPSAibG9jYWxo
b3N0IjsKLXZhciBjb250ZXh0SG9zdCA9ICIxMjcuMC4wLjEiOwotdmFyIHVybCA9ICJodHRwOi8v
bG9jYWxob3N0OjgwMDAveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL3N0YXR1cy00MDQtd2l0aG91
dC1ib2R5LnB5IgotCi1mdW5jdGlvbiBydW5UZXN0KCkKLXsKLSAgICB2YXIgcmVxID0gbmV3IFhN
TEh0dHBSZXF1ZXN0KCk7Ci0gICAgcmVxLm9wZW4oIkdFVCIsIHVybCwgdHJ1ZSk7Ci0gICAgcmVx
LnNldFJlcXVlc3RIZWFkZXIoIngtd2Via2l0IiwgImZvbyIpOwotCi0gICAgcmVxLm9uZXJyb3Ig
PSBmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIGRpZExvYWRBcHBCb3VuZFJlcXVlc3QgPSB0ZXN0
UnVubmVyLmRpZExvYWRBcHBCb3VuZFJlcXVlc3QoKTsKLSAgICAgICAgdmFyIGRpZExvYWROb25B
cHBCb3VuZFJlcXVlc3QgPSB0ZXN0UnVubmVyLmRpZExvYWROb25BcHBCb3VuZFJlcXVlc3QoKTsK
LQotICAgICAgICBpZiAoZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdCkgewotICAgICAgICAgICAg
bG9nKCJGQUlMIGRpZCBsb2FkIG5vbiBhcHAtYm91bmQgcmVxdWVzdCIpOwotICAgICAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIWRpZExv
YWRBcHBCb3VuZFJlcXVlc3QpIHsKLSAgICAgICAgICAgIGxvZygiRkFJTCBkaWQgbm90IGxvYWQg
YXBwLWJvdW5kIHJlcXVlc3QiKTsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OwotICAgICAgICB9Ci0KLSAgICAgICAgbG9nKCJQQVNTIHN1Y2Nlc3NmdWxseSBsb2FkZWQgb25s
eSBhcHAtYm91bmQgcmVxdWVzdHMiKTsKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
Ci0gICAgfQotICAgIHJlcS5zZW5kKG51bGwpOwotfQotCi1ydW5UZXN0KCk7Ci08L3NjcmlwdD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFj
eS9hcHAtYm91bmQtYXR0cmlidXRpb24tcHJlZmxpZ2h0LXN5bmMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRy
aWJ1dGlvbi1wcmVmbGlnaHQtc3luYy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGRlZTA0NTNiNzdlYzY1N2FhZTg0NDY4NGY0M2UyZDI4Y2Y2ZDI1YWYuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1wcmVm
bGlnaHQtc3luYy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLUNP
TlNPTEUgTUVTU0FHRTogUHJlZmxpZ2h0IHJlc3BvbnNlIGlzIG5vdCBzdWNjZXNzZnVsCi1DT05T
T0xFIE1FU1NBR0U6IFhNTEh0dHBSZXF1ZXN0IGNhbm5vdCBsb2FkIGh0dHA6Ly9sb2NhbGhvc3Q6
ODAwMC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvc3RhdHVzLTQwNC13aXRob3V0LWJvZHkucHkg
ZHVlIHRvIGFjY2VzcyBjb250cm9sIGNoZWNrcy4KLVRlc3RzIGFwcCBib3VuZCByZXF1ZXN0cyBn
ZXQgbWFya2VkIGZvciBzeW5jIHByZWZsaWdodHMKLQotUEFTUzogTmV0d29ya0Vycm9yOiAgQSBu
ZXR3b3JrIGVycm9yIG9jY3VycmVkLgotUEFTUyBzdWNjZXNzZnVsbHkgbG9hZGVkIG9ubHkgYXBw
LWJvdW5kIHJlcXVlc3RzCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4t
YXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tcHJlZmxpZ2h0LXN5bmMu
aHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAt
Ym91bmQtYXR0cmlidXRpb24tcHJlZmxpZ2h0LXN5bmMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNmMwZjA4ZDUyZmY3OGZjNTk1MWIzM2VlMTA3MGMwM2QyMjc2NjE3OS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXBy
ZWZsaWdodC1zeW5jLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi08cD5UZXN0
cyBhcHAgYm91bmQgcmVxdWVzdHMgZ2V0IG1hcmtlZCBmb3Igc3luYyBwcmVmbGlnaHRzPC9wPgot
Ci08cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKLSAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKLX0KLQotZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCi17Ci0gICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZShtZXNzYWdlICsgJ1xuJykpOwotfQotCi12YXIgcHJlZmxpZ2h0TGlua0RvbWFpbiA9ICJs
b2NhbGhvc3QiOwotdmFyIGNvbnRleHRIb3N0ID0gIjEyNy4wLjAuMSI7Ci12YXIgdXJsID0gImh0
dHA6Ly9sb2NhbGhvc3Q6ODAwMC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvc3RhdHVzLTQwNC13
aXRob3V0LWJvZHkucHkiCi0KLWZ1bmN0aW9uIHJ1blRlc3QoKQotewotICAgIHZhciByZXEgPSBu
ZXcgWE1MSHR0cFJlcXVlc3QoKTsKLSAgICByZXEub3BlbigiR0VUIiwgdXJsLCBmYWxzZSk7Ci0g
ICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoIngtd2Via2l0IiwgImZvbyIpOwotCi0gICAgdHJ5IHsK
LSAgICAgICAgcmVxLnNlbmQobnVsbCk7Ci0gICAgICAgIGxvZygiUEFTUzogIiArIHJlcS5yZXNw
b25zZVRleHQpOwotICAgIH0gY2F0Y2ggKGV4KSB7Ci0gICAgICAgIGxvZygiUEFTUzogIiArIGV4
KTsKLSAgICAgICAgdmFyIGRpZExvYWRBcHBCb3VuZFJlcXVlc3QgPSB0ZXN0UnVubmVyLmRpZExv
YWRBcHBCb3VuZFJlcXVlc3QoKTsKLSAgICAgICAgdmFyIGRpZExvYWROb25BcHBCb3VuZFJlcXVl
c3QgPSB0ZXN0UnVubmVyLmRpZExvYWROb25BcHBCb3VuZFJlcXVlc3QoKTsKLQotICAgICAgICBp
ZiAoZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdCkgewotICAgICAgICAgICAgbG9nKCJGQUlMIGRp
ZCBsb2FkIG5vbiBhcHAtYm91bmQgcmVxdWVzdCIpOwotICAgICAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIWRpZExvYWRBcHBCb3VuZFJl
cXVlc3QpIHsKLSAgICAgICAgICAgIGxvZygiRkFJTCBkaWQgbm90IGxvYWQgYXBwLWJvdW5kIHJl
cXVlc3QiKTsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgICAgICB9
Ci0KLSAgICAgICAgbG9nKCJQQVNTIHN1Y2Nlc3NmdWxseSBsb2FkZWQgb25seSBhcHAtYm91bmQg
cmVxdWVzdHMiKTsKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfQotfQot
Ci1ydW5UZXN0KCk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tc3BlY3VsYXRp
dmUtcmV2YWxpZGF0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4t
YXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tc3BlY3VsYXRpdmUtcmV2
YWxpZGF0aW9uLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjJi
NGQ0YTUxMmFiY2VjNWRiYjhlYTliNjk0NjgzZTgzYWYyYmQ2ZC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFw
cC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXNwZWN1bGF0aXZlLXJldmFs
aWRhdGlvbi1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi0xMjcu
MC4wLjE6ODAwMCAtIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAtIFByb3RlY3Rp
b25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lSFRUUEJhc2ljIC0gUmVzcG9uZGluZyB3aXRoIHRl
c3RVc2VybmFtZTp0ZXN0UGFzc3dvcmQKLTEyNy4wLjAuMTo4MDAwIC0gZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlIC0gUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVI
VFRQQmFzaWMgLSBTaW11bGF0aW5nIGNhbmNlbGxlZCBhdXRoZW50aWNhdGlvbiBzaGVldAotVGVz
dHMgc3BlY3VsYXRpdmUgcmV2YWxpZGF0aW9uIG9mIGF1dGhlbnRpY2F0ZWQgcmVzb3VyY2VzLgot
Ci1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotUEFTUyB4aHIuc3RhdHVzIGlzIDQwMQot
UEFTUyBTdWNjZXNzZnVseSBsb2FkZWQuCi1QQVNTIHN1Y2Nlc3NmdWxseSBsb2FkZWQgb25seSBh
cHAtYm91bmQgcmVxdWVzdHMKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVT
VCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1i
cm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXNwZWN1bGF0aXZlLXJldmFsaWRh
dGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5
L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1zcGVjdWxhdGl2ZS1yZXZhbGlkYXRpb24uaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGMwNzZiNWVlNmVjZjQ0NDBiY2JmNjA4MTBiOWY0
NzE3MThjMTZhYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5k
LWF0dHJpYnV0aW9uLXNwZWN1bGF0aXZlLXJldmFsaWRhdGlvbi5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsNzIgKzAsMCBAQAotPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotZGVzY3JpcHRpb24oIlRlc3RzIHNwZWN1bGF0
aXZlIHJldmFsaWRhdGlvbiBvZiBhdXRoZW50aWNhdGVkIHJlc291cmNlcy4iKTsKLWpzVGVzdElz
QXN5bmMgPSB0cnVlOwotCi10ZXN0UnVubmVyLnNldEhhbmRsZXNBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZXModHJ1ZSk7Ci10ZXN0UnVubmVyLnNldEF1dGhlbnRpY2F0aW9uVXNlcm5hbWUoInRlc3RV
c2VybmFtZSIpOwotdGVzdFJ1bm5lci5zZXRBdXRoZW50aWNhdGlvblBhc3N3b3JkKCJ0ZXN0UGFz
c3dvcmQiKTsKLQotc3RhdGUgPSAid2FybXVwIjsKLQotZnVuY3Rpb24gY2xlYXJDcmVkZW50aWFs
U3RvcmFnZSgpCi17Ci0gICAgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Ci0gICAgeGhyLm9w
ZW4oIkdFVCIsICJyZXNvdXJjZXMvcmVzb3VyY2Utd2l0aC1hdXRoLnB5P290aGVyIiwgZmFsc2Us
ICJiYWRVc2VybmFtZSIsICJiYWRQYXNzd29yZCIpOwotICAgIHhoci5zZW5kKCk7Ci0gICAgc2hv
dWxkQmUoInhoci5zdGF0dXMiLCAiNDAxIik7Ci19Ci0KLWZ1bmN0aW9uIGxvZyhtZXNzYWdlKQot
ewotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSArICdcbicpKTsKLX0KLQotZnVuY3Rpb24gZnJh
bWVMb2FkZWQoKQotewotICAgIGlmIChzdGF0ZSA9PSAid2FybXVwIikgewotICAgICAgICAvLyBO
YXZpZ2F0ZSBmcmFtZSB0byAnYWJvdXQ6YmxhbmsnIHRvIGZsdXNoIHRvIHN1YnJlc291cmNlIGxv
YWRzIG1ldGFkYXRhIHRvIGRpc2suCi0gICAgICAgIHN0YXRlID0gImZsdXNoaW5nTWV0YWRhdGEi
OwotICAgICAgICB0ZXN0UnVubmVyLnNldEhhbmRsZXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZXMo
ZmFsc2UpOwotICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdEZyYW1lIikuc3Jj
ID0gImFib3V0OmJsYW5rIjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoc3RhdGUg
PT0gImZsdXNoaW5nTWV0YWRhdGEiKSB7Ci0gICAgICAgIGNsZWFyQ3JlZGVudGlhbFN0b3JhZ2Uo
KTsKLQotICAgICAgICBpbnRlcm5hbHMuY2xlYXJNZW1vcnlDYWNoZSgpOwotICAgICAgICB0ZXN0
UnVubmVyLnNldEhhbmRsZXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZXMoZmFsc2UpOwotCi0gICAg
ICAgIC8vIE5hdmlnYXRlIGZyYW1lIHRvIGl0cyBvcmlnaW5hbCBsb2NhdGlvbiBhZ2Fpbi4gVGhp
cyB0aW1lIGl0IHNob3VsZCBzcGVjdWxhdGl2ZWx5Ci0gICAgICAgIC8vIHZhbGlkYXRlIHN1YnJl
c291cmNlcyBhcyB3ZSBoYXZlIHN1YnJlc291cmNlIGxvYWRzIG1ldGFkYXRhIGluIHRoZSBkaXNr
IGNhY2hlLgotICAgICAgICBzdGF0ZSA9ICJzcGVjdWxhdGl2ZVJldmFsaWRhdGlvbiI7Ci0gICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0RnJhbWUiKS5zcmMgPSAicmVzb3VyY2Vz
L2ZyYW1lLXdpdGgtYXV0aGVudGljYXRlZC1yZXNvdXJjZS5weSI7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgaWYgKHN0YXRlID09ICJzcGVjdWxhdGl2ZVJldmFsaWRhdGlvbiIpIHsKLSAg
ICAgICAgdGVzdFBhc3NlZCgiU3VjY2Vzc2Z1bHkgbG9hZGVkLiIpOwotICAgICAgICB2YXIgZGlk
TG9hZEFwcEJvdW5kUmVxdWVzdCA9IHRlc3RSdW5uZXIuZGlkTG9hZEFwcEJvdW5kUmVxdWVzdCgp
OwotICAgICAgICB2YXIgZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdCA9IHRlc3RSdW5uZXIuZGlk
TG9hZE5vbkFwcEJvdW5kUmVxdWVzdCgpOwotCi0gICAgICAgIGlmIChkaWRMb2FkTm9uQXBwQm91
bmRSZXF1ZXN0KSB7Ci0gICAgICAgICAgICBsb2coIkZBSUwgZGlkIGxvYWQgbm9uIGFwcC1ib3Vu
ZCByZXF1ZXN0Iik7Ci0gICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghZGlkTG9hZEFwcEJvdW5kUmVxdWVzdCkg
ewotICAgICAgICAgICAgbG9nKCJGQUlMIGRpZCBub3QgbG9hZCBhcHAtYm91bmQgcmVxdWVzdCIp
OwotICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLQotICAgICAgICBsb2coIlBBU1Mgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBvbmx5IGFwcC1i
b3VuZCByZXF1ZXN0cyIpOwotCi0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotfQotCi08L3NjcmlwdD4KLTxpZnJhbWUgaWQ9InRlc3RGcmFtZSIgc3JjPSJy
ZXNvdXJjZXMvZnJhbWUtd2l0aC1hdXRoZW50aWNhdGVkLXJlc291cmNlLnB5IiBvbmxvYWQ9ImZy
YW1lTG9hZGVkKCkiPjwvaWZyYW1lPgotPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2NvbnRleHQtc3RyaW5nLWZvci1zdWJmcmFtZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZh
Y3kvY29udGV4dC1zdHJpbmctZm9yLXN1YmZyYW1lLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggOWEzNjhmNjZiNTRlMTczOTkxNzJmYWMzNzM3NzY2NzdiNzc0NmJl
Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvY29udGV4dC1zdHJpbmctZm9y
LXN1YmZyYW1lLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLVRl
c3RzIHRoYXQgdGhlIGFwcC1ib3VuZC1yZXF1ZXN0IGNvbnRleHQgc3RyaW5nIGdldHMgcHJvcGVy
bHkgc2V0IGZvciBhbiBpZnJhbWUKLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVBB
U1MgQ29udGV4dCBzdHJpbmcgZm9yIHN1YiBmcmFtZSBjb3JyZWN0bHkgY2FwdHVyZWQuCi1QQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2NvbnRleHQt
c3RyaW5nLWZvci1zdWJmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAt
YnJvd3Nlci1wcml2YWN5L2NvbnRleHQtc3RyaW5nLWZvci1zdWJmcmFtZS5odG1sCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZTNlOWI2YjBiNTUyOTYyYWJkZmY2NGU3MjEwMmJiMjIy
ODZlOGQwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9jb250ZXh0LXN0cmlu
Zy1mb3Itc3ViZnJhbWUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLTwhRE9D
VFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLSAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVz
b3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJj
ZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci0gICAgZGVz
Y3JpcHRpb24oIlRlc3RzIHRoYXQgdGhlIGFwcC1ib3VuZC1yZXF1ZXN0IGNvbnRleHQgc3RyaW5n
IGdldHMgcHJvcGVybHkgc2V0IGZvciBhbiBpZnJhbWUiKTsKLSAgICBqc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKLQotICAgIGNvbnN0IHN1YkZyYW1lSG9zdCA9ICJsb2NhbGhvc3QiOwotICAgIGNvbnN0
IGNvbnRleHRIb3N0ID0gIjEyNy4wLjAuMSI7Ci0gICAgZnVuY3Rpb24gYXNrRm9yQ29udGV4dFN0
cmluZ0ZvclN1YkZyYW1lKCkgewotICAgICAgICB0ZXN0UnVubmVyLmFwcEJvdW5kUmVxdWVzdENv
bnRleHREYXRhRm9yRG9tYWluKHN1YkZyYW1lSG9zdCwgZnVuY3Rpb24gKGNvbnRleHREYXRhKSB7
Ci0gICAgICAgICAgICBpZiAoY29udGV4dERhdGEgPT0gbnVsbCkgewotICAgICAgICAgICAgICAg
IGFza0ZvckNvbnRleHRTdHJpbmdGb3JTdWJGcmFtZSgpOwotICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKGNvbnRleHREYXRhID09IGNvbnRl
eHRIb3N0KQotICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkNvbnRleHQgc3RyaW5nIGZvciBz
dWIgZnJhbWUgY29ycmVjdGx5IGNhcHR1cmVkLiIpOwotICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoIkNvbnRleHQgc3RyaW5nIGZvciBzdWIgZnJhbWUgTk9UIGNv
cnJlY3RseSBjYXB0dXJlZC4iKTsKLQotICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAg
ICAgIH0pOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIG9wZW5JZnJhbWUodXJsLCBvbkxvYWRIYW5k
bGVyKSB7Ci0gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJp
ZnJhbWUiKTsKLSAgICAgICAgZWxlbWVudC5zcmMgPSB1cmw7Ci0gICAgICAgIGlmIChvbkxvYWRI
YW5kbGVyKSB7Ci0gICAgICAgICAgICBlbGVtZW50Lm9ubG9hZCA9IG9uTG9hZEhhbmRsZXI7Ci0g
ICAgICAgIH0KLSAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50KTsKLSAg
ICB9Ci0KLSAgICBvcGVuSWZyYW1lKCJodHRwOi8vbG9jYWxob3N0OjgwMDAvaW4tYXBwLWJyb3dz
ZXItcHJpdmFjeS9yZXNvdXJjZXMvYmFzaWMtaWZyYW1lLmh0bWwmZHVtbXk9IiArIE1hdGgucmFu
ZG9tKCksIGFza0ZvckNvbnRleHRTdHJpbmdGb3JTdWJGcmFtZSk7Ci08L3NjcmlwdD4KLTwvYm9k
eT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJy
b3dzZXItcHJpdmFjeS9jb250ZXh0LXN0cmluZy1wcmVjb25uZWN0LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9jb250ZXh0LXN0cmlu
Zy1wcmVjb25uZWN0LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NmI0YjU2ZmEwMWZmMDYwM2ZmNjk5MTdjMzgwZGMwNjliOTMwNmRjNi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
LWFwcC1icm93c2VyLXByaXZhY3kvY29udGV4dC1zdHJpbmctcHJlY29ubmVjdC1leHBlY3RlZC50
eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1DT05TT0xFIE1FU1NBR0U6IFN1Y2Nl
c3NmdWxseSBwcmVjb25uZWN0ZWQgdG8gaHR0cDovL2xvY2FsaG9zdDo4MDAwLwotVGVzdHMgdGhh
dCBwcmVjb25uZWN0IHRhc2tzIGdldCBtYXJrZWQgd2l0aCB0aGUgcHJvcGVyIGNvbnRleHQgc3Ry
aW5nLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotUEFTUyBDb250ZXh0IHN0cmlu
ZyBmb3IgcHJlY29ubmVjdCBjb3JyZWN0bHkgY2FwdHVyZWQuCi1QQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2NvbnRleHQtc3RyaW5nLXByZWNvbm5l
Y3QuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9j
b250ZXh0LXN0cmluZy1wcmVjb25uZWN0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDcxYmJjMzJiZjFjODcyZTRjZmVmM2ZmYTU2NmY5NGMxODU3MjAyNmQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2NvbnRleHQtc3RyaW5nLXByZWNvbm5lY3QuaHRtbAor
KysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08
aGVhZD4KLTxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3Jp
cHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci1kZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBw
cmVjb25uZWN0IHRhc2tzIGdldCBtYXJrZWQgd2l0aCB0aGUgcHJvcGVyIGNvbnRleHQgc3RyaW5n
LiIpOwotanNUZXN0SXNBc3luYyA9IHRydWU7Ci0KLXZhciBwcmVjb25uZWN0TGlua0RvbWFpbiA9
ICJsb2NhbGhvc3QiOwotdmFyIGNvbnRleHRIb3N0ID0gIjEyNy4wLjAuMSI7Ci0KLWZ1bmN0aW9u
IGFza0ZvckNvbnRleHRTdHJpbmdGb3JQcmVjb25uZWN0KCkgewotICAgIHRlc3RSdW5uZXIuYXBw
Qm91bmRSZXF1ZXN0Q29udGV4dERhdGFGb3JEb21haW4ocHJlY29ubmVjdExpbmtEb21haW4sIGZ1
bmN0aW9uIChjb250ZXh0RGF0YSkgewotICAgICAgICBpZiAoY29udGV4dERhdGEgPT0gbnVsbCkg
ewotICAgICAgICAgICAgYXNrRm9yQ29udGV4dFN0cmluZ0ZvclByZWNvbm5lY3QoKTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChjb250ZXh0RGF0YSA9PSBj
b250ZXh0SG9zdCkKLSAgICAgICAgICAgIHRlc3RQYXNzZWQoIkNvbnRleHQgc3RyaW5nIGZvciBw
cmVjb25uZWN0IGNvcnJlY3RseSBjYXB0dXJlZC4iKTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiQ29udGV4dCBzdHJpbmcgZm9yIHByZWNvbm5lY3QgTk9UIGNvcnJlY3Rs
eSBjYXB0dXJlZC4iKTsKLQotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsKLX0KLQot
aW50ZXJuYWxzLnNldENvbnNvbGVNZXNzYWdlTGlzdGVuZXIoZnVuY3Rpb24oKSB7Ci0gICAgYXNr
Rm9yQ29udGV4dFN0cmluZ0ZvclByZWNvbm5lY3QoKTsKLX0pOwotCi1jb25zdCB0ZXN0TGluayA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpbmsiKTsKLXRlc3RMaW5rLnJlbCA9ICJwcmVjb25u
ZWN0IjsKLXRlc3RMaW5rLmhyZWYgPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwIjsKLWRvY3VtZW50
LmhlYWQuYXBwZW5kQ2hpbGQodGVzdExpbmspOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZh
Y3kvY29udGV4dC1zdHJpbmctcHJlZmxpZ2h0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9jb250ZXh0LXN0cmluZy1wcmVmbGlnaHQt
ZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMDc5NjE1MGE5NmI4
YjFkNzA3ZWZhN2U0MDMyZTQ1ZWQ3MDNjOTVmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXIt
cHJpdmFjeS9jb250ZXh0LXN0cmluZy1wcmVmbGlnaHQtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251
bGwKQEAgLTEsOSArMCwwIEBACi1DT05TT0xFIE1FU1NBR0U6IFByZWZsaWdodCByZXNwb25zZSBp
cyBub3Qgc3VjY2Vzc2Z1bAotQ09OU09MRSBNRVNTQUdFOiBYTUxIdHRwUmVxdWVzdCBjYW5ub3Qg
bG9hZCBodHRwOi8vbG9jYWxob3N0OjgwMDAveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL3N0YXR1
cy00MDQtd2l0aG91dC1ib2R5LnB5IGR1ZSB0byBhY2Nlc3MgY29udHJvbCBjaGVja3MuCi1DT05T
T0xFIE1FU1NBR0U6IFByZWZsaWdodCByZXNwb25zZSBpcyBub3Qgc3VjY2Vzc2Z1bAotQ09OU09M
RSBNRVNTQUdFOiBYTUxIdHRwUmVxdWVzdCBjYW5ub3QgbG9hZCBodHRwOi8vbG9jYWxob3N0Ojgw
MDAveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL3N0YXR1cy00MDQtd2l0aG91dC1ib2R5LnB5IGR1
ZSB0byBhY2Nlc3MgY29udHJvbCBjaGVja3MuCi1UZXN0cyB0aGF0IG5vdCBzdWNjZXNzZnVsIHBy
ZWZsaWdodCByZXNwb25zZXMgbWFrZSBwcmVmbGlnaHQgZmFpbGluZwotCi1QQVNTOiBOZXR3b3Jr
RXJyb3I6ICBBIG5ldHdvcmsgZXJyb3Igb2NjdXJyZWQuCi1QQVNTIENvbnRleHQgc3RyaW5nIGZv
ciBDT1JTIHByZWZsaWdodCBjb3JyZWN0bHkgY2FwdHVyZWQuCi0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9jb250ZXh0LXN0cmluZy1w
cmVmbGlnaHQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJp
dmFjeS9jb250ZXh0LXN0cmluZy1wcmVmbGlnaHQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNTdhMDVkMTQ3NTljOTQxZjhkMzNmZjc1MDNiOGQ3MDBhOTA0ZjBjOS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvY29udGV4dC1zdHJpbmctcHJlZmxpZ2h0Lmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi08cD5UZXN0cyB0aGF0IG5vdCBzdWNj
ZXNzZnVsIHByZWZsaWdodCByZXNwb25zZXMgbWFrZSBwcmVmbGlnaHQgZmFpbGluZzwvcD4KLQot
PHByZSBpZD0iY29uc29sZSI+PC9wcmU+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIGxvZyhtZXNzYWdlKQotewotICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdjb25zb2xlJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUobWVzc2FnZSArICdcbicpKTsKLX0KLSAgICAKLXZhciBwcmVmbGlnaHRMaW5rRG9tYWluID0g
ImxvY2FsaG9zdCI7Ci12YXIgY29udGV4dEhvc3QgPSAiMTI3LjAuMC4xIjsKLXZhciB1cmwgPSAi
aHR0cDovL2xvY2FsaG9zdDo4MDAwL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9zdGF0dXMtNDA0
LXdpdGhvdXQtYm9keS5weSIKLQotZnVuY3Rpb24gYXNrRm9yQ29udGV4dFN0cmluZ0ZvclByZWZs
aWdodCgpIHsKLSAgICB0ZXN0UnVubmVyLmFwcEJvdW5kUmVxdWVzdENvbnRleHREYXRhRm9yRG9t
YWluKHByZWZsaWdodExpbmtEb21haW4sIGZ1bmN0aW9uIChjb250ZXh0RGF0YSkgewotICAgICAg
ICBpZiAoY29udGV4dERhdGEgPT0gbnVsbCkgewotICAgICAgICAgICAgYXNrRm9yQ29udGV4dFN0
cmluZ0ZvclByZWZsaWdodCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAg
ICAgICAgaWYgKGNvbnRleHREYXRhID09IGNvbnRleHRIb3N0KQotICAgICAgICAgICAgbG9nKCJQ
QVNTIENvbnRleHQgc3RyaW5nIGZvciBDT1JTIHByZWZsaWdodCBjb3JyZWN0bHkgY2FwdHVyZWQu
Iik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGxvZygiRkFJTCBDb250ZXh0IHN0cmluZyBm
b3IgQ09SUyBwcmVmbGlnaHQgTk9UIGNvcnJlY3RseSBjYXB0dXJlZC4iKTsKLQotICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0KLQotZnVuY3Rpb24gcnVuVGVzdCgp
Ci17Ci0gICAgdmFyIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwotICAgIHJlcS5vcGVuKCJH
RVQiLCB1cmwsIGZhbHNlKTsKLSAgICByZXEuc2V0UmVxdWVzdEhlYWRlcigieC13ZWJraXQiLCAi
Zm9vIik7Ci0KLSAgICB0cnkgewotICAgICAgICByZXEuc2VuZChudWxsKTsKLSAgICAgICAgbG9n
KCJQQVNTOiAiICsgcmVxLnJlc3BvbnNlVGV4dCk7Ci0gICAgfSBjYXRjaCAoZXgpIHsKLSAgICAg
ICAgbG9nKCJQQVNTOiAiICsgZXgpOwotICAgIH0KLQotICAgIHJlcSA9IG5ldyBYTUxIdHRwUmVx
dWVzdCgpOwotICAgIHJlcS5vcGVuKCJHRVQiLCB1cmwsIHRydWUpOwotICAgIHJlcS5zZXRSZXF1
ZXN0SGVhZGVyKCJ4LXdlYmtpdCIsICJmb28iKTsKLQotICAgIHJlcS5vbmxvYWQgPSBmdW5jdGlv
bigpIHsKLSAgICAgICAgYXNrRm9yQ29udGV4dFN0cmluZ0ZvclByZWZsaWdodCgpOwotICAgIH0K
LSAgICByZXEub25lcnJvciA9IGZ1bmN0aW9uKCkgewotICAgICAgICBhc2tGb3JDb250ZXh0U3Ry
aW5nRm9yUHJlZmxpZ2h0KCk7Ci0gICAgfQotICAgIHJlcS5zZW5kKG51bGwpOwotfQotCi1ydW5U
ZXN0KCk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4t
YXBwLWJyb3dzZXItcHJpdmFjeS9yZXNvdXJjZXMvZnJhbWUtd2l0aC1hdXRoZW50aWNhdGVkLXJl
c291cmNlLnB5IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5
L3Jlc291cmNlcy9mcmFtZS13aXRoLWF1dGhlbnRpY2F0ZWQtcmVzb3VyY2UucHkKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNzU1CmluZGV4IDg0OGQwZmQxYTZkNmMwOTlhYWQ2MWUwMDQyNDJlMjM4OTU1
M2U5NDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L3Jlc291cmNlcy9mcmFt
ZS13aXRoLWF1dGhlbnRpY2F0ZWQtcmVzb3VyY2UucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMyAr
MCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24zCi0KLWltcG9ydCBzeXMKLQotc3lzLnN0ZG91
dC53cml0ZSgKLSAgICAnQ2FjaGUtQ29udHJvbDogbWF4LWFnZT0wXHJcbicKLSAgICAnRXRhZzog
MTIzNDU2Nzg5XHJcbicKLSAgICAnQ29udGVudC1UeXBlOiB0ZXh0L2h0bWxcclxuXHJcbicKLSAg
ICAnPCFET0NUWVBFIGh0bWw+XG4nCi0gICAgJzxib2R5PlxuJwotICAgICc8c2NyaXB0IHNyYz0i
cmVzb3VyY2Utd2l0aC1hdXRoLnB5Ij48L3NjcmlwdD5cbicKLSAgICAnPC9ib2R5PlxuJwotKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5
L3Jlc291cmNlcy9wb3N0LnB5IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nl
ci1wcml2YWN5L3Jlc291cmNlcy9wb3N0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRl
eCAxZmNiYzNhMmZiMzIzMTE3MmRiOWI1OWJlY2U2NWMwOGM3MmRkNWE2Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW4tYXBwLWJyb3dzZXItcHJpdmFjeS9yZXNvdXJjZXMvcG9zdC5weQorKysgL2Rldi9udWxsCkBA
IC0xLDI3ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbjMKLQotaW1wb3J0IG9zCi1pbXBv
cnQgc3lzCi0KLXJlZmVyZXIgPSBvcy5lbnZpcm9uLmdldCgnSFRUUF9SRUZFUkVSJywgJycpCi0K
LXN5cy5zdGRvdXQud3JpdGUoCi0gICAgJ0NvbnRlbnQtVHlwZTogdGV4dC9odG1sXHJcblxyXG4n
Ci0gICAgJzxwPlJlZmVycmVyOiB7cmVmZXJlcn08L3A+XG4nCi0gICAgJzxzY3JpcHQ+XG4nCi0g
ICAgJ2lmICh3aW5kb3cudGVzdFJ1bm5lcikge3tcbicKLSAgICAnICAgIHZhciBkaWRMb2FkQXBw
Qm91bmRSZXF1ZXN0ID0gdGVzdFJ1bm5lci5kaWRMb2FkQXBwQm91bmRSZXF1ZXN0KCk7XG4nCi0g
ICAgJyAgICB2YXIgZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdCA9IHRlc3RSdW5uZXIuZGlkTG9h
ZE5vbkFwcEJvdW5kUmVxdWVzdCgpO1xuJwotICAgICcgICAgaWYgKGRpZExvYWROb25BcHBCb3Vu
ZFJlcXVlc3QpIHt7XG4nCi0gICAgJyAgICAgICAgY29uc29sZS5sb2coIkZBSUwgZGlkIGxvYWQg
bm9uIGFwcC1ib3VuZCByZXF1ZXN0Iik7XG4nCi0gICAgJyAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7XG4nCi0gICAgJyAgICB9fVxuJwotICAgICcgICAgaWYgKCFkaWRMb2FkQXBwQm91
bmRSZXF1ZXN0KSB7e1xuJwotICAgICcgICAgICAgICBjb25zb2xlLmxvZygiRkFJTCBkaWQgbm90
IGxvYWQgYXBwLWJvdW5kIHJlcXVlc3QiKTtcbicKLSAgICAnICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTtcbicKLSAgICAnICAgICB9fVxuJwotICAgICcgICAgY29uc29sZS5sb2coIlBB
U1Mgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBvbmx5IGFwcC1ib3VuZCByZXF1ZXN0cyIpO1xuJwotICAg
ICcgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7XG4nCi0gICAgJ319XG4nCi0gICAgJzwvc2Ny
aXB0PlxuJy5mb3JtYXQocmVmZXJlcj1yZWZlcmVyKQotKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L3Jlc291cmNlcy9yZXNvdXJjZS13
aXRoLWF1dGgucHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZh
Y3kvcmVzb3VyY2VzL3Jlc291cmNlLXdpdGgtYXV0aC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3
NTUKaW5kZXggN2FmYjc4ZDgxYzZmM2M5ZGE0NzlkMjhiZTI0NmFlMTViY2QwNGRkZS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvcmVzb3VyY2VzL3Jlc291cmNlLXdpdGgtYXV0
aC5weQorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhv
bjMKLQotaW1wb3J0IGJhc2U2NAotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi0KLWNyZWRlbnRpYWxz
ID0gYmFzZTY0LmI2NGRlY29kZShvcy5lbnZpcm9uLmdldCgnSFRUUF9BVVRIT1JJWkFUSU9OJywg
JyBPZz09Jykuc3BsaXQoJyAnKVsxXSkuZGVjb2RlKCkuc3BsaXQoJzonKQotdXNlcm5hbWUgPSBj
cmVkZW50aWFsc1swXQotcGFzc3dvcmQgPSAnOicuam9pbihjcmVkZW50aWFsc1sxOl0pCi0KLWV4
cGVjdGVkVXNlcm5hbWUgPSAndGVzdFVzZXJuYW1lJwotZXhwZWN0ZWRQYXNzd29yZCA9ICd0ZXN0
UGFzc3dvcmQnCi1yZWFsbSA9IG9zLmVudmlyb24uZ2V0KCdSRVFVRVNUX1VSSScsICcnKQotCi1z
eXMuc3Rkb3V0LndyaXRlKAotICAgICdDb250ZW50LVR5cGU6IHRleHQvamF2YXNjcmlwdFxyXG4n
Ci0gICAgJ0NhY2hlLUNvbnRyb2w6IG1heC1hZ2U9MFxyXG4nCi0gICAgJ0V0YWc6IDEyMzQ1Njc4
OVxyXG4nCi0pCi0KLWlmIHVzZXJuYW1lICE9IGV4cGVjdGVkVXNlcm5hbWUgb3IgcGFzc3dvcmQg
IT0gZXhwZWN0ZWRQYXNzd29yZDoKLSAgICBzeXMuc3Rkb3V0LndyaXRlKAotICAgICAgICBmJ1dX
Vy1BdXRoZW50aWNhdGU6IEJhc2ljIHJlYWxtPSJ7cmVhbG19IlxyXG4nCi0gICAgICAgICdzdGF0
dXM6IDQwMVxyXG5cclxuJwotICAgICAgICBmJ1NlbnQgdXNlcm5hbWU6cGFzc3dvcmQgb2YgKHt1
c2VybmFtZX06e3Bhc3N3b3JkfSkgd2hpY2ggaXMgbm90IHdoYXQgd2FzIGV4cGVjdGVkXG4nCi0g
ICAgKQotICAgIHN5cy5leGl0KDApCi0KLXN5cy5zdGRvdXQud3JpdGUoJ1xyXG5sb2FkZWQgPSB0
cnVlO1xuJykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9y
ZXNvdXJjZXMvY2hlY2stcGluZy1hcHAtYm91bmQtZGF0YS5weSBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvY2hlY2stcGluZy1hcHAtYm91bmQtZGF0YS5weQpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNmZmNWRlZjM0MDUzMmY5ZGY2YTgxZjg1NDEw
NDA5OGU5MzNkM2VkOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2NoZWNrLXBp
bmctYXBwLWJvdW5kLWRhdGEucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi0jIS91
c3IvYmluL2VudiBweXRob24zCi0KLWltcG9ydCBvcwotaW1wb3J0IHN5cwotaW1wb3J0IHRpbWUK
LWZyb20gcGluZ19maWxlX3BhdGggaW1wb3J0IHBpbmdfZmlsZXBhdGgKLQotc3lzLnN0ZG91dC53
cml0ZSgnQ29udGVudC1UeXBlOiB0ZXh0L2h0bWxcclxuXHJcbicpCi0KLXdoaWxlIG5vdCBvcy5w
YXRoLmlzZmlsZShwaW5nX2ZpbGVwYXRoKToKLSAgICB0aW1lLnNsZWVwKDAuMDEpCi0KLXN5cy5z
dGRvdXQud3JpdGUoCi0gICAgJzxodG1sPjxib2R5PlxuJwotICAgICdQaW5nIHNlbnQgc3VjY2Vz
c2Z1bGx5JwotKQotCi1waW5nX2ZpbGUgPSBvcGVuKHBpbmdfZmlsZXBhdGgsICdyJykKLWZvciBs
aW5lIGluIHBpbmdfZmlsZS5yZWFkbGluZXMoKToKLSAgICBzeXMuc3Rkb3V0LndyaXRlKCc8YnI+
e30nLmZvcm1hdChsaW5lLnN0cmlwKCkpKQotCi1waW5nX2ZpbGUuY2xvc2UoKQotaWYgb3MucGF0
aC5pc2ZpbGUocGluZ19maWxlcGF0aCk6Ci0gICAgb3MucmVtb3ZlKHBpbmdfZmlsZXBhdGgpCi0K
LXN5cy5zdGRvdXQud3JpdGUoCi0gICAgJzxzY3JpcHQ+JwotICAgICdpZiAod2luZG93LnRlc3RS
dW5uZXIpIHt7XG4nCi0gICAgJyAgICB2YXIgZGlkTG9hZEFwcEJvdW5kUmVxdWVzdCA9IHRlc3RS
dW5uZXIuZGlkTG9hZEFwcEJvdW5kUmVxdWVzdCgpO1xuJwotICAgICcgICAgdmFyIGRpZExvYWRO
b25BcHBCb3VuZFJlcXVlc3QgPSB0ZXN0UnVubmVyLmRpZExvYWROb25BcHBCb3VuZFJlcXVlc3Qo
KTtcbicKLSAgICAnICAgIGlmIChkaWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0KSB7e1xuJwotICAg
ICcgICAgICAgIGNvbnNvbGUubG9nKCJGQUlMIGRpZCBsb2FkIG5vbiBhcHAtYm91bmQgcmVxdWVz
dCIpO1xuJwotICAgICcgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpO1xuJwotICAgICcg
ICAgfX1cbicKLSAgICAnICAgIGlmICghZGlkTG9hZEFwcEJvdW5kUmVxdWVzdCkge3tcbicKLSAg
ICAnICAgICAgICAgY29uc29sZS5sb2coIkZBSUwgZGlkIG5vdCBsb2FkIGFwcC1ib3VuZCByZXF1
ZXN0Iik7XG4nCi0gICAgJyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7XG4nCi0gICAg
JyAgICAgfX1cbicKLSAgICAnICAgIGNvbnNvbGUubG9nKCJQQVNTIHN1Y2Nlc3NmdWxseSBsb2Fk
ZWQgb25seSBhcHAtYm91bmQgcmVxdWVzdHMiKTtcbicKLSAgICAnICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpO1xuJwotICAgICd9fVxuJwotICAgICc8L3NjcmlwdD4nCi0gICAgJzwvYm9keT48
L2h0bWw+JwotKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9u
L3Jlc291cmNlcy9jaGVjay1waW5nLWFwcC1pbml0aWF0ZWQtZGF0YS5weSBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvY2hlY2stcGluZy1hcHAtaW5pdGlhdGVk
LWRhdGEucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMjBmM2QyZjE3MTkyODQ3N2U0YjE4ODgwMzIwM2ViMGVmN2Vi
NDU1MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlv
bi9yZXNvdXJjZXMvY2hlY2stcGluZy1hcHAtaW5pdGlhdGVkLWRhdGEucHkKQEAgLTAsMCArMSw0
NCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKK2lt
cG9ydCB0aW1lCitmcm9tIHBpbmdfZmlsZV9wYXRoIGltcG9ydCBwaW5nX2ZpbGVwYXRoCisKK3N5
cy5zdGRvdXQud3JpdGUoJ0NvbnRlbnQtVHlwZTogdGV4dC9odG1sXHJcblxyXG4nKQorCit3aGls
ZSBub3Qgb3MucGF0aC5pc2ZpbGUocGluZ19maWxlcGF0aCk6CisgICAgdGltZS5zbGVlcCgwLjAx
KQorCitzeXMuc3Rkb3V0LndyaXRlKAorICAgICc8aHRtbD48Ym9keT5cbicKKyAgICAnUGluZyBz
ZW50IHN1Y2Nlc3NmdWxseScKKykKKworcGluZ19maWxlID0gb3BlbihwaW5nX2ZpbGVwYXRoLCAn
cicpCitmb3IgbGluZSBpbiBwaW5nX2ZpbGUucmVhZGxpbmVzKCk6CisgICAgc3lzLnN0ZG91dC53
cml0ZSgnPGJyPnt9Jy5mb3JtYXQobGluZS5zdHJpcCgpKSkKKworcGluZ19maWxlLmNsb3NlKCkK
K2lmIG9zLnBhdGguaXNmaWxlKHBpbmdfZmlsZXBhdGgpOgorICAgIG9zLnJlbW92ZShwaW5nX2Zp
bGVwYXRoKQorCitzeXMuc3Rkb3V0LndyaXRlKAorICAgICc8c2NyaXB0PicKKyAgICAnaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7e1xuJworICAgICcgICAgdmFyIGRpZExvYWRBcHBJbml0aWF0ZWRS
ZXF1ZXN0ID0gdGVzdFJ1bm5lci5kaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdCgpO1xuJworICAg
ICcgICAgdmFyIGRpZExvYWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0ID0gdGVzdFJ1bm5lci5kaWRM
b2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdCgpO1xuJworICAgICcgICAgaWYgKGRpZExvYWROb25B
cHBJbml0aWF0ZWRSZXF1ZXN0KSB7e1xuJworICAgICcgICAgICAgIGNvbnNvbGUubG9nKCJGQUlM
IGRpZCBsb2FkIG5vbiBhcHAgaW5pdGlhdGVkIHJlcXVlc3QiKTtcbicKKyAgICAnICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTtcbicKKyAgICAnICAgIH19XG4nCisgICAgJyAgICBpZiAo
IWRpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0KSB7e1xuJworICAgICcgICAgICAgICBjb25zb2xl
LmxvZygiRkFJTCBkaWQgbm90IGxvYWQgYXBwIGluaXRpYXRlZCByZXF1ZXN0Iik7XG4nCisgICAg
JyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7XG4nCisgICAgJyAgICAgfX1cbicKKyAg
ICAnICAgIGNvbnNvbGUubG9nKCJQQVNTIHN1Y2Nlc3NmdWxseSBsb2FkZWQgb25seSBhcHAgaW5p
dGlhdGVkIHJlcXVlc3RzIik7XG4nCisgICAgJyAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTtc
bicKKyAgICAnfX1cbicKKyAgICAnPC9zY3JpcHQ+JworICAgICc8L2JvZHk+PC9odG1sPicKKykK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvVGVzdEV4cGVjdGF0aW9u
cyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAy
ZGIzODgxMWYyNmUyYzcwYzVhYmE3YTU4MmY5M2M5Nzk1YzRhYWQ2Li4yZTg0NTI2NGVmYzQ4NGQ1
NDEwY2RiNGZkNDI3Zjc3ZTFjYzgzMmMyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9z
LXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC0xODE1LDE3ICsxODE1LDYgQEAgd2Via2l0Lm9yZy9i
LzIxNDU5OCBmYXN0L3Njcm9sbGluZy9pb3MvYXV0b3Njcm9sbC1pbnB1dC13aGVuLXZlcnktem9v
bWVkLmh0bWwgWwogCiBodHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvIFsgUGFzcyBd
CiAKLSMgU29tZSBJbi1BcHAgQnJvd3NlciBQcml2YWN5IHRlc3RzIHJlbHkgb24gZnVuY3Rpb25z
IGluIFdlYktpdEFkZGl0aW9ucy4KLWh0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9j
b250ZXh0LXN0cmluZy1mb3Itc3ViZnJhbWUuaHRtbCBbIFNraXAgXQotaHR0cC90ZXN0cy9pbi1h
cHAtYnJvd3Nlci1wcml2YWN5L2NvbnRleHQtc3RyaW5nLXByZWNvbm5lY3QuaHRtbCBbIFNraXAg
XQotaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2NvbnRleHQtc3RyaW5nLXByZWZs
aWdodC5odG1sIFsgU2tpcCBdCi1odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBw
LWJvdW5kLWF0dHJpYnV0aW9uLXByZWZsaWdodC1hc3luYy5odG1sIFsgU2tpcCBdCi1odHRwL3Rl
c3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXByZWZsaWdo
dC1zeW5jLmh0bWwgWyBTa2lwIF0KLWh0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9h
cHAtYm91bmQtYXR0cmlidXRpb24tc3BlY3VsYXRpdmUtcmV2YWxpZGF0aW9uLmh0bWwgWyBTa2lw
IF0KLWh0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRp
b24tbG9hZC11cmwuaHRtbCBbIFNraXAgXQotaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2
YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1waW5nLWxvYWQuaHRtbCBbIFNraXAgXQotaHR0cC90
ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1wb3N0LXJl
cXVlc3QuaHRtbCBbIFNraXAgXQotCiB3ZWJraXQub3JnL2IvMTc1MTkzIGZhc3QvaW1hZ2VzL2Fz
eW5jLWltYWdlLWJvZHktYmFja2dyb3VuZC1pbWFnZS5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIAog
d2Via2l0Lm9yZy9iLzIxNTExMCBbIFJlbGVhc2UgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtYW5pbWF0aW9ucy93ZWJraXQtd3JpdGluZy1tb2RlLWNyYXNoLmh0bWwg
WyBQYXNzIEZhaWx1cmUgXQo=
</data>
<flag name="commit-queue"
          id="454173"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>432197</attachid>
            <date>2021-06-24 11:40:33 -0700</date>
            <delta_ts>2021-07-07 17:48:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227326-20210624114032.patch</filename>
            <type>text/plain</type>
            <size>263705</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5MTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGE0OWJkYWY3NGI1MDhj
ZTM0ODY2NDRkN2E0NThjMzY3ZmQ2NjMxOS4uZDQ1NmZkYWExOTNhYjc2ZTdjZTIxOTY0Mjg5NmZm
Njk5NDQzYzA0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDIxLTA2LTIzICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIENsZWFuIHVw
IEFwcCBQcml2YWN5IFJlcG9ydCBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjczMjYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc5Njk2ODQ5
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Rz
OiBodHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1sb2FkLXVybC5odG1s
CisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlv
bi1waW5nLWxvYWQuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1y
ZXBvcnQvYXR0cmlidXRpb24tcG9zdC1yZXF1ZXN0Lmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAv
dGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXByZWZsaWdodC1hc3luYy5odG1s
CisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlv
bi1wcmVmbGlnaHQtc3luYy5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL2FwcC1wcml2
YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1zcGVjdWxhdGl2ZS1yZXZhbGlkYXRpb24uaHRtbAorCisg
ICAgICAgIFJlbmFtZSBBcHAgUHJpdmFjeSBSZXBvcnQgY29kZSB0byBiZXR0ZXIgYWxpZ24gd2l0
aCB0aGUgY29kZSdzIHB1cnBvc2UKKyAgICAgICAgb2YgYXR0cmlidXRpbmcgbG9hZHMgdG8gdGhl
IGFwcCBvciBub3QuIFRoZSBkZWZhdWx0IHZhbHVlIHNob3VsZAorICAgICAgICBiZSBhcHAgaW5p
dGlhdGVkIGJhc2VkIG9uIHRoZSBkb2N1bWVudGF0aW9uLCBzbyB0aGlzIHBhdGNoIGFsc28gYWRq
dXN0cworICAgICAgICB0aGUgZGVmYXVsdCB2YWx1ZSBhcyBuZWVkZWQuCisKKyAgICAgICAgKiBs
b2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUFjY2Vzc0NvbnRyb2xQcmVmbGlnaHRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvRG9j
dW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpsYXN0TmF2
aWdhdGlvbldhc0FwcEluaXRpYXRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6Omxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnNldExhc3ROYXZpZ2F0
aW9uV2FzQXBwQm91bmQpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlcjo6dXBkYXRlUmVxdWVzdEFuZEFkZEV4dHJhRmllbGRzKToKKyAgICAg
ICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVxdWVzdEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
QmFzZTo6c2V0QXNJc29sYXRlZENvcHkpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXF1ZXN0QmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFz
ZTo6aXNBcHBJbml0aWF0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0QmFzZTo6c2V0SXNBcHBJbml0aWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0QmFzZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3RCYXNlOjplbmNvZGVCYXNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdEJhc2U6OmRlY29kZUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0QmFzZTo6aXNBcHBCb3VuZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRJc0FwcEJvdW5kKTogRGVsZXRlZC4KKyAgICAg
ICAgKiB0ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2VydmljZVdvcmtlckludGVybmFsczo6bGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckludGVybmFsczo6bGFzdE5hdmlnYXRp
b25XYXNBcHBCb3VuZCk6IERlbGV0ZWQuCisgICAgICAgICogdGVzdGluZy9TZXJ2aWNlV29ya2Vy
SW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlk
bDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE6Omlzb2xhdGVkQ29w
eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZnJv
bSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmg6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjpkZWNvZGUpOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjppc29sYXRlZENvcHkg
Y29uc3QpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERh
dGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZGVj
b2RlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5
OjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdv
cmtlclRocmVhZFByb3h5OjpzZXRMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6Omxhc3ROYXZpZ2F0aW9uV2Fz
QXBwSW5pdGlhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eTo6c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6Omxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQp
OiBEZWxldGVkLgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eS5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0
cmF0aW9uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVnaXN0cmF0aW9uRGF0YWJh
c2U6OmltcG9ydFJlY29yZHMpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnN0YXJ0U2NyaXB0RmV0Y2gp
OgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnVwZGF0ZVdvcmtlcik6CisgICAgICAgIChX
ZWJDb3JlOjpTV1NlcnZlcjo6Y2xpZW50SXNBcHBJbml0aWF0ZWRGb3JSZWdpc3RyYWJsZURvbWFp
bik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6dXBkYXRlQXBwSW5pdGlhdGVkVmFsdWVG
b3JXb3JrZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpyZWdpc3RlclNlcnZpY2VX
b3JrZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnVucmVnaXN0ZXJTZXJ2
aWNlV29ya2VyQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpjbGllbnRJc0Fw
cEJvdW5kRm9yUmVnaXN0cmFibGVEb21haW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
U1dTZXJ2ZXI6OnVwZGF0ZUFwcEJvdW5kVmFsdWVGb3JXb3JrZXJzKTogRGVsZXRlZC4KKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmg6CisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTV1NlcnZlclJlZ2lzdHJhdGlvbjo6c2NoZWR1bGVTb2Z0VXBkYXRlKToKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmg6CisgICAgICAg
IChXZWJDb3JlOjpTV1NlcnZlclJlZ2lzdHJhdGlvbjo6aXNBcHBJbml0aWF0ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1dTZXJ2ZXJSZWdpc3RyYXRpb246OmlzQXBwQm91bmQpOiBEZWxldGVkLgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjptX2xhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpjb250ZXh0RGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6dXBkYXRlQXBwSW5pdGlhdGVkVmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6bV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjp1cGRhdGVBcHBCb3VuZFZhbHVl
KTogRGVsZXRlZC4KKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29y
a2VyLmg6CisKIDIwMjEtMDYtMjMgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlbW92ZSB1bm5lZWRlZCBleHBsaWNpdCBleGNlcHRpb24gY2hlY2tzIGluIFNjcmlw
dE1vZHVsZUxvYWRlcjo6ZXZhbHVhdGUoKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZjZmYjQ0ZThjNzdlNTI1NmE4
ZDRmZjc2NGQ2ZWFhYWRmZTg4ZDViNC4uYzg5NTc1MTE5ODg1MzlmNjVlNGFmMzVhZmYwZWI1MDQ3
Yjg2Y2U2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzYgQEAKKzIwMjEtMDYtMjMgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAgQXBw
IFByaXZhY3kgUmVwb3J0IGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNzMyNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzk2OTY4NDk+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1lIEFw
cCBQcml2YWN5IFJlcG9ydCBjb2RlIHRvIGJldHRlciBhbGlnbiB3aXRoIHRoZSBjb2RlJ3MgcHVy
cG9zZQorICAgICAgICBvZiBhdHRyaWJ1dGluZyBsb2FkcyB0byB0aGUgYXBwIG9yIG5vdC4gVGhl
IGRlZmF1bHQgdmFsdWUgc2hvdWxkCisgICAgICAgIGJlIGFwcCBpbml0aWF0ZWQgYmFzZWQgb24g
dGhlIGRvY3VtZW50YXRpb24sIHNvIHRoaXMgcGF0Y2ggYWxzbyBhZGp1c3RzCisgICAgICAgIHRo
ZSBkZWZhdWx0IHZhbHVlIGFzIG5lZWRlZC4KKworICAgICAgICBUaGlzIGFsc28gYWRvcHRzIHRo
ZSBuZXcgTlNVUkxSZXF1ZXN0IGF0dHJpYnV0aW9uIEFQSSBhbmQgcmVtb3ZlcworICAgICAgICB0
aGUgZGVwcmVjYXRlZCBfaXNOb25BcHBJbml0aWF0ZWQgU1BJLgorCisgICAgICAgIENvdmVyZWQg
YnkgZXhpc3RpbmcgbGF5b3V0IGFuZCBBUEkgdGVzdHMuCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNz
OjpwcmVjb25uZWN0VG8pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6YXBwUHJp
dmFjeVJlcG9ydFRlc3RpbmdEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OmNsZWFyQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OmFwcEJvdW5kTmF2aWdhdGlvbkRhdGEpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVXaWxsU2VuZFJlZGlyZWN0ZWRSZXF1
ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjppc0FwcEJvdW5k
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6YXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OmFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdE
YXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOjpzb2Z0VXBkYXRlSWZOZWVkZWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6bG9hZEZyb21OZXR3b3Jr
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29u
bmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y29u
dHJvbENsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y3Jl
YXRlRmV0Y2hUYXNrKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6dXBkYXRlQXBwSW5pdGlhdGVkVmFsdWUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnVwZGF0ZUFwcEJv
dW5kVmFsdWUpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Y29uc3RydWN0UmV2YWxpZGF0aW9uUmVxdWVzdCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6
cmVnaXN0ZXJMb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2
ZUxvYWRNYW5hZ2VyOjpzdGFydFNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5oOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN1YnJlc291cmNlSW5mbzo6aXNBcHBJbml0aWF0
ZWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN1YnJlc291cmNlSW5m
bzo6c2V0SXNBcHBJbml0aWF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN1
YnJlc291cmNlSW5mbzo6aXNBcHBCb3VuZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDYWNoZTo6U3VicmVzb3VyY2VJbmZvOjpzZXRJc0FwcEJvdW5kKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5t
bToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFz
a0NvY29hKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAg
KGhlYWRlcnNfZm9yX3R5cGUpOgorICAgICAgICAqIFNoYXJlZC9BcHBQcml2YWN5UmVwb3J0Lmg6
CisgICAgICAgIChXZWJLaXQ6OkFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YTo6c2V0RGlkUGVy
Zm9ybVNvZnRVcGRhdGUpOgorICAgICAgICAoV2ViS2l0OjpBcHBQcml2YWN5UmVwb3J0VGVzdGlu
Z0RhdGE6OmNsZWFyQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKToKKyAgICAgICAgKFdlYktp
dDo6QXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhOjpkaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVz
dCk6CisgICAgICAgIChXZWJLaXQ6OkFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YTo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6QXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhOjpk
ZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2Nv
YS5tbToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3Q+OjplbmNvZGVQbGF0Zm9ybURhdGEpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdD46OmRlY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgICog
U2hhcmVkL05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmg6CisgICAgICAgIChXZWJLaXQ6OkFw
cEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhOjpzZXREaWRQZXJmb3JtU29mdFVwZGF0ZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OkFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhOjpj
bGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGFUZXN0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6QXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGE6OnVwZGF0ZUFwcEJvdW5kTmF2aWdh
dGlvblRlc3RpbmdEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6QXBwQm91bmROYXZp
Z2F0aW9uVGVzdGluZ0RhdGE6OmVuY29kZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OkFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhOjpkZWNvZGUpOiBEZWxldGVkLgorICAg
ICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVu
Y29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6
OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1b
V0tXZWJWaWV3IF9kaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdDpdKToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IF9kaWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdDpdKToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IF9hcHBCb3VuZE5hdmlnYXRpb25EYXRhRm9yRG9tYWluOmNvbXBsZXRpb25IYW5kbGVy
Ol0pOiBEZWxldGVkLgorICAgICAgICBSZW1vdmVkIG5vdyB0aGF0IHdlIG5vIGxvbmdlciBuZWVk
IHRvIHRlc3QgYXR0cmlidXRpb24gY29udGV4dCwgdGhhdAorICAgICAgICBpcyBhbGwgaXQgd2Fz
IHVzZWQgZm9yLgorCisgICAgICAgICgtW1dLV2ViVmlldyBfZGlkTG9hZEFwcEJvdW5kUmVxdWVz
dDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kaWRMb2FkTm9uQXBwQm91bmRS
ZXF1ZXN0Ol0pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZUZvclRlc3RpbmcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d1Rlc3RpbmcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfbGFzdE5hdmlnYXRpb25XYXNBcHBJ
bml0aWF0ZWQ6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfYXBwUHJpdmFjeVJlcG9ydFRlc3Rp
bmdEYXRhOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2NsZWFyQXBwUHJpdmFjeVJlcG9ydFRl
c3RpbmdEYXRhOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2xhc3ROYXZpZ2F0aW9uV2FzQXBw
Qm91bmQ6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLV2ViVmlldyBfYXBwQm91bmROYXZpZ2F0
aW9uRGF0YTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jbGVhckFwcEJvdW5k
TmF2aWdhdGlvbkRhdGE6XSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dl
YlBhZ2VQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldExh
c3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk6IERl
bGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnByZWNvbm5lY3RUbyk6
CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpw
cmVjb25uZWN0VG8pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFy
YW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YXBwUHJpdmFjeVJlcG9y
dFRlc3RpbmdEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbGVhckFwcFBy
aXZhY3lSZXBvcnRUZXN0aW5nRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
YXBwQm91bmROYXZpZ2F0aW9uRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6Y2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhKTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0
cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNv
dXJjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpwcmVjb25uZWN0VG8p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
Ojp1cGRhdGVBcHBJbml0aWF0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uOjpzdGFydEZldGNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnVwZGF0ZUFwcEJvdW5kVmFsdWUpOiBEZWxldGVkLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWRSZXF1
ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y3JlYXRlRG9jdW1lbnRMb2FkZXIpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOiBE
ZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OnNldExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk6IERl
bGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46
CisKIDIwMjEtMDYtMjMgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+
CiAKICAgICAgICAgTWlncmF0ZSBBcHAgUHJpdmFjeSBSZXBvcnQgY29kZSBmcm9tIFdlYktpdEFk
ZGl0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luQWNj
ZXNzQ29udHJvbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3ND
b250cm9sLmNwcAppbmRleCAyYTFhZTUyNTM4YjA2MGRhMTFmYzlkZmJkNDBiOGE2ZDc4YWRlYjE4
Li4zODk5Mjk3NmM2YTFkYWRjODc3OTRmNzhkYjc4NGQ0ZmU0ZTA1M2U3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcApAQCAtODks
NyArODksNyBAQCBSZXNvdXJjZVJlcXVlc3QgY3JlYXRlQWNjZXNzQ29udHJvbFByZWZsaWdodFJl
cXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZQogICAgIHByZWZsaWdodFJlcXVlc3Qu
c2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpBY2Nlc3NDb250cm9sUmVxdWVzdE1l
dGhvZCwgcmVxdWVzdC5odHRwTWV0aG9kKCkpOwogICAgIHByZWZsaWdodFJlcXVlc3Quc2V0UHJp
b3JpdHkocmVxdWVzdC5wcmlvcml0eSgpKTsKICAgICBwcmVmbGlnaHRSZXF1ZXN0LnNldEZpcnN0
UGFydHlGb3JDb29raWVzKHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSk7Ci0gICAgcHJl
ZmxpZ2h0UmVxdWVzdC5zZXRJc0FwcEJvdW5kKHJlcXVlc3QuaXNBcHBCb3VuZCgpKTsKKyAgICBw
cmVmbGlnaHRSZXF1ZXN0LnNldElzQXBwSW5pdGlhdGVkKHJlcXVlc3QuaXNBcHBJbml0aWF0ZWQo
KSk7CiAgICAgaWYgKCFyZWZlcnJlci5pc051bGwoKSkKICAgICAgICAgcHJlZmxpZ2h0UmVxdWVz
dC5zZXRIVFRQUmVmZXJyZXIocmVmZXJyZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5oCmluZGV4IGU2OTM1MzJlYmQ2NGY1YzA0MmM3YzM3ZDgzOTE4OTU5N2Q2ZTY5MDku
LjM5ZWIwNjI5OWU1NzBjNDc1OWFlY2YwZWYwOTcxODI0ZWI1MDU2MjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC00MTksOCArNDE5LDggQEAgcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgc2V0Q29udHJvbGxpbmdTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYpOwogI2VuZGlmCiAKLSAgICBib29s
IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoKSBjb25zdCB7IHJldHVybiBtX2xhc3ROYXZpZ2F0
aW9uV2FzQXBwQm91bmQ7IH0KLSAgICB2b2lkIHNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQo
Ym9vbCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKSB7IG1fbGFzdE5hdmlnYXRpb25XYXNBcHBC
b3VuZCA9IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7IH0KKyAgICBib29sIGxhc3ROYXZpZ2F0
aW9uV2FzQXBwSW5pdGlhdGVkKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0TmF2aWdhdGlvbldhc0Fw
cEluaXRpYXRlZDsgfQorICAgIHZvaWQgc2V0TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQo
Ym9vbCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCkgeyBtX2xhc3ROYXZpZ2F0aW9uV2Fz
QXBwSW5pdGlhdGVkID0gbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ7IH0KIAogcHJvdGVj
dGVkOgogICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJik7CkBAIC02NTksNyArNjU5LDcgQEAgcHJpdmF0
ZToKICAgICBib29sIG1fYWxsb3dzV2ViQXJjaGl2ZUZvck1haW5GcmFtZSB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX2FsbG93c0RhdGFVUkxzRm9yTWFpbkZyYW1lIHsgZmFsc2UgfTsKIAotICAgIGJv
b2wgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIHsgZmFsc2UgfTsKKyAgICBib29sIG1fbGFz
dE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgeyB0cnVlIH07CiB9OwogCiBpbmxpbmUgdm9pZCBE
b2N1bWVudExvYWRlcjo6cmVjb3JkTWVtb3J5Q2FjaGVMb2FkRm9yRnV0dXJlQ2xpZW50Tm90aWZp
Y2F0aW9uKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCmluZGV4IGQ3MTNmN2RkNGE0OTJjZmMzNmE4M2UxMGRhMjYyMTNkYWJl
Mjc1ZmUuLmE1MDRmYTk1MTVmOWM5NDEzMGEyNjZjMzg0ZWQzYzE4ZmQ5NTQxMTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMTQ5Miw3ICsxNDkyLDcgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6bG9hZChEb2N1bWVudExvYWRlciYgbmV3RG9jdW1lbnRMb2FkZXIpCiAgICAg
UmVzb3VyY2VSZXF1ZXN0JiByID0gbmV3RG9jdW1lbnRMb2FkZXIucmVxdWVzdCgpOwogICAgIC8v
IEZJWE1FOiBVc2luZyBtX2xvYWRUeXBlIHNlZW1zIHdyb25nIGhlcmUuCiAgICAgLy8gSWYgd2Ug
YXJlIG9ubHkgcHJlcGFyaW5nIHRvIGxvYWQgdGhlIG1haW4gcmVzb3VyY2UsIHRoYXQgaXMgcHJl
dmlvdXMgbG9hZCdzIGxvYWQgdHlwZSEKLSAgICB1cGRhdGVSZXF1ZXN0QW5kQWRkRXh0cmFGaWVs
ZHMociwgSXNNYWluUmVzb3VyY2U6OlllcywgbV9sb2FkVHlwZSwgU2hvdWxkVXBkYXRlQXBwQm91
bmRWYWx1ZTo6Tm8pOworICAgIHVwZGF0ZVJlcXVlc3RBbmRBZGRFeHRyYUZpZWxkcyhyLCBJc01h
aW5SZXNvdXJjZTo6WWVzLCBtX2xvYWRUeXBlLCBTaG91bGRVcGRhdGVBcHBJbml0aWF0ZWRWYWx1
ZTo6Tm8pOwogICAgIEZyYW1lTG9hZFR5cGUgdHlwZTsKIAogICAgIGlmIChzaG91bGRUcmVhdFVS
TEFzU2FtZUFzQ3VycmVudChuZXdEb2N1bWVudExvYWRlci5vcmlnaW5hbFJlcXVlc3QoKS51cmwo
KSkpIHsKQEAgLTI4NzgsNyArMjg3OCw3IEBAIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5IEZy
YW1lTG9hZGVyOjpkZWZhdWx0UmVxdWVzdENhY2hpbmdQb2xpY3koY29uc3QgUmVzb3VyCiAgICAg
cmV0dXJuIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5OjpVc2VQcm90b2NvbENhY2hlUG9saWN5
OwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjp1cGRhdGVSZXF1ZXN0QW5kQWRkRXh0cmFGaWVsZHMo
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBJc01haW5SZXNvdXJjZSBtYWluUmVzb3VyY2UsIEZy
YW1lTG9hZFR5cGUgbG9hZFR5cGUsIFNob3VsZFVwZGF0ZUFwcEJvdW5kVmFsdWUgc2hvdWxkVXBk
YXRlKQordm9pZCBGcmFtZUxvYWRlcjo6dXBkYXRlUmVxdWVzdEFuZEFkZEV4dHJhRmllbGRzKFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgSXNNYWluUmVzb3VyY2UgbWFpblJlc291cmNlLCBGcmFt
ZUxvYWRUeXBlIGxvYWRUeXBlLCBTaG91bGRVcGRhdGVBcHBJbml0aWF0ZWRWYWx1ZSBzaG91bGRV
cGRhdGUpCiB7CiAgICAgLy8gSWYgdGhlIHJlcXVlc3QgY2FtZSBmcm9tIGEgcHJldmlvdXMgcHJv
Y2VzcyBkdWUgdG8gcHJvY2Vzcy1zd2FwLW9uLW5hdmlnYXRpb24gdGhlbiB3ZSBzaG91bGQgbm90
IG1vZGlmeSB0aGUgcmVxdWVzdC4KICAgICBpZiAobV9jdXJyZW50TG9hZENvbnRpbnVpbmdTdGF0
ZSA9PSBMb2FkQ29udGludWluZ1N0YXRlOjpDb250aW51aW5nV2l0aFJlcXVlc3QpCkBAIC0yOTQ4
LDggKzI5NDgsOCBAQCB2b2lkIEZyYW1lTG9hZGVyOjp1cGRhdGVSZXF1ZXN0QW5kQWRkRXh0cmFG
aWVsZHMoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBJc01haQogICAgICAgICByZXF1ZXN0LnNl
dFJlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5KCJVVEYtOCIs
IG1fZnJhbWUuZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgbV9mcmFtZS5zZXR0aW5ncygpLmRlZmF1
bHRUZXh0RW5jb2RpbmdOYW1lKCkpOwogICAgIH0KIAotICAgIGlmIChzaG91bGRVcGRhdGUgPT0g
U2hvdWxkVXBkYXRlQXBwQm91bmRWYWx1ZTo6WWVzICYmIG1fZnJhbWUubWFpbkZyYW1lKCkubG9h
ZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkKLSAgICAgICAgcmVxdWVzdC5zZXRJc0FwcEJvdW5kKG1f
ZnJhbWUubWFpbkZyYW1lKCkubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+bGFzdE5hdmlnYXRp
b25XYXNBcHBCb3VuZCgpKTsKKyAgICBpZiAoc2hvdWxkVXBkYXRlID09IFNob3VsZFVwZGF0ZUFw
cEluaXRpYXRlZFZhbHVlOjpZZXMgJiYgbV9mcmFtZS5tYWluRnJhbWUoKS5sb2FkZXIoKS5kb2N1
bWVudExvYWRlcigpKQorICAgICAgICByZXF1ZXN0LnNldElzQXBwSW5pdGlhdGVkKG1fZnJhbWUu
bWFpbkZyYW1lKCkubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+bGFzdE5hdmlnYXRpb25XYXNB
cHBJbml0aWF0ZWQoKSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OnNjaGVkdWxlUmVmcmVzaElm
TmVlZGVkKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBjb250ZW50KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCBmMTIzOTllNWU1NWNmZDczMDRkNjc0ZDFiNjlh
NWQ3OTY3YzgyNjJiLi4yNmNkYjI2ZDU5NjAxYTlhYjg3MzAzMGI0NjE1Mzc1MDUyNzMyNWI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtODUsNyArODUsNyBAQCBlbnVtIGNs
YXNzIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFNob3Vs
ZFRyZWF0QXNDb250aW51aW5nTG9hZCA6IGJvb2w7CiBlbnVtIGNsYXNzIFVzZWRMZWdhY3lUTFMg
OiBib29sOwogZW51bSBjbGFzcyBJc01haW5SZXNvdXJjZSA6IGJvb2wgeyBObywgWWVzIH07Ci1l
bnVtIGNsYXNzIFNob3VsZFVwZGF0ZUFwcEJvdW5kVmFsdWUgOiBib29sIHsgTm8sIFllcyB9Owor
ZW51bSBjbGFzcyBTaG91bGRVcGRhdGVBcHBJbml0aWF0ZWRWYWx1ZSA6IGJvb2wgeyBObywgWWVz
IH07CiAKIHN0cnVjdCBXaW5kb3dGZWF0dXJlczsKIApAQCAtMzE3LDcgKzMxNyw3IEBAIHB1Ymxp
YzoKICAgICBib29sIGFsd2F5c0FsbG93TG9jYWxXZWJhcmNoaXZlKCkgY29uc3QgeyByZXR1cm4g
bV9hbHdheXNBbGxvd0xvY2FsV2ViYXJjaGl2ZTsgfQogCiAgICAgLy8gRm9yIHN1YnJlc291cmNl
IHJlcXVlc3RzIHRoZSBGcmFtZUxvYWRUeXBlIHBhcmFtZXRlciBoYXMgbm8gZWZmZWN0IGFuZCBj
YW4gYmUgc2tpcHBlZC4KLSAgICB2b2lkIHVwZGF0ZVJlcXVlc3RBbmRBZGRFeHRyYUZpZWxkcyhS
ZXNvdXJjZVJlcXVlc3QmLCBJc01haW5SZXNvdXJjZSwgRnJhbWVMb2FkVHlwZSA9IEZyYW1lTG9h
ZFR5cGU6OlN0YW5kYXJkLCBTaG91bGRVcGRhdGVBcHBCb3VuZFZhbHVlID0gU2hvdWxkVXBkYXRl
QXBwQm91bmRWYWx1ZTo6WWVzKTsKKyAgICB2b2lkIHVwZGF0ZVJlcXVlc3RBbmRBZGRFeHRyYUZp
ZWxkcyhSZXNvdXJjZVJlcXVlc3QmLCBJc01haW5SZXNvdXJjZSwgRnJhbWVMb2FkVHlwZSA9IEZy
YW1lTG9hZFR5cGU6OlN0YW5kYXJkLCBTaG91bGRVcGRhdGVBcHBJbml0aWF0ZWRWYWx1ZSA9IFNo
b3VsZFVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlOjpZZXMpOwogCiAgICAgdm9pZCBzY2hlZHVsZVJl
ZnJlc2hJZk5lZWRlZChEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgY29udGVudCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJh
c2UuY3BwCmluZGV4IDQ2ZTc4NTIyOWU2MGY2MmJjN2IzYWNlNGRjODMxYTdmMjc1YTgxYjIuLjQ0
YjU5MzA3MGVjZWQ0MWZmZjcwM2Y3YmM4OTQ3YWYxOTRkYjAyZTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcApA
QCAtOTUsNyArOTUsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdEJhc2U6OnNldEFzSXNvbGF0ZWRD
b3B5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgb3RoZXIpCiAgICAgaWYgKG90aGVyLm1faHR0cEJv
ZHkpCiAgICAgICAgIHNldEhUVFBCb2R5KG90aGVyLm1faHR0cEJvZHktPmlzb2xhdGVkQ29weSgp
KTsKICAgICBzZXRBbGxvd0Nvb2tpZXMob3RoZXIubV9hbGxvd0Nvb2tpZXMpOwotICAgIHNldElz
QXBwQm91bmQob3RoZXIuaXNBcHBCb3VuZCgpKTsKKyAgICBzZXRJc0FwcEluaXRpYXRlZChvdGhl
ci5pc0FwcEluaXRpYXRlZCgpKTsKIH0KIAogYm9vbCBSZXNvdXJjZVJlcXVlc3RCYXNlOjppc0Vt
cHR5KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VSZXF1ZXN0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZVJlcXVlc3RCYXNlLmgKaW5kZXggMjcwZmFkMDRmZDFlNWIzZWE2Mjk0MWNlODA5NTNh
ZWZlNTlmM2RiYS4uMjQ1ZTU5OWE5Y2Y3OGM2MmQ0NWRmYjlhY2UzMDRhMTlhOTJlZGRjOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RC
YXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVl
c3RCYXNlLmgKQEAgLTE5NSw4ICsxOTUsOCBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmKTsKIAotICAgIGJvb2wgaXNBcHBCb3VuZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNB
cHBCb3VuZDsgfQotICAgIHZvaWQgc2V0SXNBcHBCb3VuZChib29sIGlzQXBwQm91bmQpIHsgbV9p
c0FwcEJvdW5kID0gaXNBcHBCb3VuZDsgfTsKKyAgICBib29sIGlzQXBwSW5pdGlhdGVkKCkgY29u
c3QgeyByZXR1cm4gbV9pc0FwcEluaXRpYXRlZDsgfQorICAgIHZvaWQgc2V0SXNBcHBJbml0aWF0
ZWQoYm9vbCBpc0FwcEluaXRpYXRlZCkgeyBtX2lzQXBwSW5pdGlhdGVkID0gaXNBcHBJbml0aWF0
ZWQ7IH07CiAKIHByb3RlY3RlZDoKICAgICAvLyBVc2VkIHdoZW4gUmVzb3VyY2VSZXF1ZXN0IGlz
IGluaXRpYWxpemVkIGZyb20gYSBwbGF0Zm9ybSByZXByZXNlbnRhdGlvbiBvZiB0aGUgcmVxdWVz
dApAQCAtMjA4LDcgKzIwOCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgLCBtX3BsYXRmb3JtUmVx
dWVzdEJvZHlVcGRhdGVkKHRydWUpCiAgICAgICAgICwgbV9oaWRkZW5Gcm9tSW5zcGVjdG9yKGZh
bHNlKQogICAgICAgICAsIG1faXNUb3BTaXRlKGZhbHNlKQotICAgICAgICAsIG1faXNBcHBCb3Vu
ZChmYWxzZSkKKyAgICAgICAgLCBtX2lzQXBwSW5pdGlhdGVkKHRydWUpCiAgICAgewogICAgIH0K
IApAQCAtMjI0LDcgKzIyNCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgLCBtX3BsYXRmb3JtUmVx
dWVzdEJvZHlVcGRhdGVkKGZhbHNlKQogICAgICAgICAsIG1faGlkZGVuRnJvbUluc3BlY3Rvcihm
YWxzZSkKICAgICAgICAgLCBtX2lzVG9wU2l0ZShmYWxzZSkKLSAgICAgICAgLCBtX2lzQXBwQm91
bmQoZmFsc2UpCisgICAgICAgICwgbV9pc0FwcEluaXRpYXRlZCh0cnVlKQogICAgIHsKICAgICB9
CiAKQEAgLTI1OCw3ICsyNTgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgbXV0YWJsZSBib29sIG1fcGxh
dGZvcm1SZXF1ZXN0Qm9keVVwZGF0ZWQgOiAxOwogICAgIGJvb2wgbV9oaWRkZW5Gcm9tSW5zcGVj
dG9yIDogMTsKICAgICBib29sIG1faXNUb3BTaXRlIDogMTsKLSAgICBib29sIG1faXNBcHBCb3Vu
ZCA6IDE7CisgICAgYm9vbCBtX2lzQXBwSW5pdGlhdGVkIDogMTsKICNpZiBVU0UoU1lTVEVNX1BS
RVZJRVcpCiAgICAgc3RkOjpvcHRpb25hbDxTeXN0ZW1QcmV2aWV3SW5mbz4gbV9zeXN0ZW1QcmV2
aWV3SW5mbzsKICNlbmRpZgpAQCAtMjk0LDcgKzI5NCw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBS
ZXNvdXJjZVJlcXVlc3RCYXNlOjplbmNvZGVCYXNlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAg
ICAgZW5jb2RlciA8PCBtX2lzVG9wU2l0ZTsKICAgICBlbmNvZGVyIDw8IG1fcHJpb3JpdHk7CiAg
ICAgZW5jb2RlciA8PCBtX3JlcXVlc3RlcjsKLSAgICBlbmNvZGVyIDw8IG1faXNBcHBCb3VuZDsK
KyAgICBlbmNvZGVyIDw8IG1faXNBcHBJbml0aWF0ZWQ7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+CkBAIC0zNzIsMTEgKzM3MiwxMSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgUmVzb3VyY2VS
ZXF1ZXN0QmFzZTo6ZGVjb2RlQmFzZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgbV9yZXF1ZXN0ZXIgPSAqcmVxdWVzdGVyOwogCi0gICAgc3RkOjpvcHRpb25h
bDxib29sPiBpc0FwcEJvdW5kOwotICAgIGRlY29kZXIgPj4gaXNBcHBCb3VuZDsKLSAgICBpZiAo
IWlzQXBwQm91bmQpCisgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc0FwcEluaXRpYXRlZDsKKyAg
ICBkZWNvZGVyID4+IGlzQXBwSW5pdGlhdGVkOworICAgIGlmICghaXNBcHBJbml0aWF0ZWQpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX2lzQXBwQm91bmQgPSAqaXNBcHBCb3VuZDsKKyAg
ICBtX2lzQXBwSW5pdGlhdGVkID0gKmlzQXBwSW5pdGlhdGVkOwogCiAgICAgcmV0dXJuIHRydWU7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRl
cm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxz
LmNwcAppbmRleCBmMDgwYTkzNWUxOWU1YTVhYTI1ZjNiNjhlNjNjN2I0YmFlNmY2YTQyLi4zNjgy
OThmNGNjNDNkMGMwYWM2ZjQwNWU1ZjgxNjQ0ZDdkYmMxNWY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5jcHAKQEAgLTExOSwxOCArMTE5
LDE4IEBAIGludCBTZXJ2aWNlV29ya2VySW50ZXJuYWxzOjpwcm9jZXNzSWRlbnRpZmllcigpIGNv
bnN0CiAgICAgcmV0dXJuIGdldEN1cnJlbnRQcm9jZXNzSUQoKTsKIH0KIAotdm9pZCBTZXJ2aWNl
V29ya2VySW50ZXJuYWxzOjpsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKFJlZjxEZWZlcnJlZFBy
b21pc2U+JiYgcHJvbWlzZSkKK3ZvaWQgU2VydmljZVdvcmtlckludGVybmFsczo6bGFzdE5hdmln
YXRpb25XYXNBcHBJbml0aWF0ZWQoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewot
ICAgIEFTU0VSVCghbV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kUHJvbWlzZSk7Ci0gICAgbV9s
YXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kUHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSk7CisgICAg
QVNTRVJUKCFtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkUHJvbWlzZSk7CisgICAgbV9s
YXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZFByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpOwog
ICAgIGNhbGxPbk1haW5UaHJlYWQoW2lkZW50aWZpZXIgPSBtX2lkZW50aWZpZXIsIHdlYWtUaGlz
ID0gbWFrZVdlYWtQdHIodGhpcyldKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChhdXRvKiBwcm94
eSA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLndvcmtlckJ5SUQoaWRlbnRpZmllcikp
IHsKLSAgICAgICAgICAgIHByb3h5LT50aHJlYWQoKS5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2Rl
KFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBhcHBCb3VuZCA9IHByb3h5LT5sYXN0TmF2
aWdhdGlvbldhc0FwcEJvdW5kKCldKGF1dG8mKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCF3ZWFr
VGhpcyB8fCAhd2Vha1RoaXMtPm1fbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZFByb21pc2UpCisg
ICAgICAgICAgICBwcm94eS0+dGhyZWFkKCkucnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbd2Vh
a1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgYXBwSW5pdGlhdGVkID0gcHJveHktPmxhc3ROYXZp
Z2F0aW9uV2FzQXBwSW5pdGlhdGVkKCldKGF1dG8mKSB7CisgICAgICAgICAgICAgICAgaWYgKCF3
ZWFrVGhpcyB8fCAhd2Vha1RoaXMtPm1fbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWRQcm9t
aXNlKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgICAgICB3ZWFr
VGhpcy0+bV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kUHJvbWlzZS0+cmVzb2x2ZTxJRExCb29s
ZWFuPihhcHBCb3VuZCk7Ci0gICAgICAgICAgICAgICAgd2Vha1RoaXMtPm1fbGFzdE5hdmlnYXRp
b25XYXNBcHBCb3VuZFByb21pc2UgPSBudWxscHRyOworICAgICAgICAgICAgICAgIHdlYWtUaGlz
LT5tX2xhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkUHJvbWlzZS0+cmVzb2x2ZTxJRExCb29s
ZWFuPihhcHBJbml0aWF0ZWQpOworICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5tX2xhc3ROYXZp
Z2F0aW9uV2FzQXBwSW5pdGlhdGVkUHJvbWlzZSA9IG51bGxwdHI7CiAgICAgICAgICAgICB9LCBX
b3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKICAgICAgICAgfQogICAgIH0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmggYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaAppbmRleCBmNjYw
NTA4ZTJmYzEwZThhNTY3ZmIwMTFjNGI0YmFhODQzNTYwYjFmLi4zMzdlNmE3ZDM5M2UzMDBiNmJk
ZmY2MGY5NjliOGZmNWQ4MWQ4MzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1Nl
cnZpY2VXb3JrZXJJbnRlcm5hbHMuaApAQCAtNjAsMTMgKzYwLDEzIEBAIHB1YmxpYzoKIAogICAg
IGludCBwcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0OwogCi0gICAgdm9pZCBsYXN0TmF2aWdhdGlv
bldhc0FwcEJvdW5kKFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOworICAgIHZvaWQgbGFzdE5hdmln
YXRpb25XYXNBcHBJbml0aWF0ZWQoUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAKIHByaXZhdGU6
CiAgICAgZXhwbGljaXQgU2VydmljZVdvcmtlckludGVybmFscyhTZXJ2aWNlV29ya2VySWRlbnRp
Zmllcik7CiAKICAgICBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBtX2lkZW50aWZpZXI7Ci0gICAg
UmVmUHRyPERlZmVycmVkUHJvbWlzZT4gbV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kUHJvbWlz
ZTsKKyAgICBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwSW5p
dGlhdGVkUHJvbWlzZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRsCmluZGV4IGUxMTBi
NTExYjEwNjU2ZGFjYTM5ZjZkNTNmM2RiMTc1MGVlMzZkMDkuLjk0ODRiNzYyMWZjZjFmYWVjZmQ1
YzUzOTQ2YTZlNTg0ZTI5NTc1MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
U2VydmljZVdvcmtlckludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9T
ZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlkbApAQCAtNDMsNSArNDMsNSBAQAogCiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIGxvbmcgcHJvY2Vzc0lkZW50aWZpZXI7CiAKLSAgICBQcm9taXNlPGJvb2xl
YW4+IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoKTsKKyAgICBQcm9taXNlPGJvb2xlYW4+IGxh
c3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5jcHAKaW5k
ZXggYjYwNzRlMTBmNTc3YTA0MmE0YTEzMzc2YjZiMTFjYTFhMmFkN2QyNy4uMjVkN2MwYTdmNGVi
ZTk0NjY3YmYxODA1NmRlNjc3ZTI3MzBiODcyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuY3BwCkBAIC01
OCw3ICs1OCw3IEBAIHN0YXRpYyBTZXJ2aWNlV29ya2VyQ2xpZW50RnJhbWVUeXBlIHRvU2Vydmlj
ZVdvcmtlckNsaWVudEZyYW1lVHlwZShTY3JpcHRFeGVjdXRpCiAKIFNlcnZpY2VXb3JrZXJDbGll
bnREYXRhIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjppc29sYXRlZENvcHkoKSBjb25zdAogewot
ICAgIHJldHVybiB7IGlkZW50aWZpZXIsIHR5cGUsIGZyYW1lVHlwZSwgdXJsLmlzb2xhdGVkQ29w
eSgpLCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIH07CisgICAgcmV0dXJuIHsgaWRlbnRpZmll
ciwgdHlwZSwgZnJhbWVUeXBlLCB1cmwuaXNvbGF0ZWRDb3B5KCksIGxhc3ROYXZpZ2F0aW9uV2Fz
QXBwSW5pdGlhdGVkIH07CiB9CiAKIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIFNlcnZpY2VXb3Jr
ZXJDbGllbnREYXRhOjpmcm9tKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFNXQ2xp
ZW50Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKQEAgLTY3LDEzICs2NywxMyBAQCBTZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YSBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZnJvbShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjbwogICAgIFJFTEVBU0VfQVNTRVJUKGlzRG9jdW1lbnQpOyAvLyBXZSBkbyBu
b3Qgc3VwcG9ydCBkZWRpY2F0ZWQgd29ya2VycyBhcyBjbGllbnRzIHlldC4KIAogICAgIGF1dG8m
IGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpOwotICAgIGF1dG8gbGFzdE5h
dmlnYXRpb25XYXNBcHBCb3VuZCA9IGRvY3VtZW50LmxvYWRlcigpICYmIGRvY3VtZW50LmxvYWRl
cigpLT5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKCkgPyBMYXN0TmF2aWdhdGlvbldhc0FwcEJv
dW5kOjpZZXMgOiBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOjpObzsKKyAgICBhdXRvIGxhc3RO
YXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkID0gZG9jdW1lbnQubG9hZGVyKCkgJiYgZG9jdW1lbnQu
bG9hZGVyKCktPmxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKCkgPyBMYXN0TmF2aWdhdGlv
bldhc0FwcEluaXRpYXRlZDo6WWVzIDogTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6Ok5v
OwogCiAgICAgcmV0dXJuIHsKICAgICAgICAgeyBjb25uZWN0aW9uLnNlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyKCksIGRvY3VtZW50LmlkZW50aWZpZXIoKSB9LAogICAgICAgICBpc0RvY3VtZW50
ID8gU2VydmljZVdvcmtlckNsaWVudFR5cGU6OldpbmRvdyA6IFNlcnZpY2VXb3JrZXJDbGllbnRU
eXBlOjpXb3JrZXIsCiAgICAgICAgIHRvU2VydmljZVdvcmtlckNsaWVudEZyYW1lVHlwZShjb250
ZXh0KSwKLSAgICAgICAgY29udGV4dC51cmwoKSwgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZAor
ICAgICAgICBjb250ZXh0LnVybCgpLCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZAogICAg
IH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyQ2xpZW50RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDbGllbnREYXRhLmgKaW5kZXggMzNkOTgzODQyNGNiOGYyYzFhZTFkYWQ1Zjhh
ZmJlMTQ5MDE5MjNlOC4uNTdjMjg4YTBhZjE2YzBmMmE4OWNhYTdlNWE2OTIxZGJjMTk4NjQzZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
bGllbnREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDbGllbnREYXRhLmgKQEAgLTM3LDE0ICszNywxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBTV0NsaWVudENvbm5lY3Rpb247CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OwogCi1lbnVtIGNsYXNzIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgOiBib29sIHsgTm8sIFll
cyB9OworZW51bSBjbGFzcyBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCA6IGJvb2wgeyBO
bywgWWVzIH07CiAKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSB7CiAgICAgU2Vydmlj
ZVdvcmtlckNsaWVudElkZW50aWZpZXIgaWRlbnRpZmllcjsKICAgICBTZXJ2aWNlV29ya2VyQ2xp
ZW50VHlwZSB0eXBlOwogICAgIFNlcnZpY2VXb3JrZXJDbGllbnRGcmFtZVR5cGUgZnJhbWVUeXBl
OwogICAgIFVSTCB1cmw7Ci0gICAgTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCBsYXN0TmF2aWdh
dGlvbldhc0FwcEJvdW5kOworICAgIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIGxhc3RO
YXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOwogCiAgICAgU2VydmljZVdvcmtlckNsaWVudERhdGEg
aXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKQEAgLTU3LDcgKzU3LDcgQEAgc3RydWN0IFNlcnZpY2VX
b3JrZXJDbGllbnREYXRhIHsKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFNlcnZpY2VX
b3JrZXJDbGllbnREYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBl
bmNvZGVyIDw8IGlkZW50aWZpZXIgPDwgdHlwZSA8PCBmcmFtZVR5cGUgPDwgdXJsIDw8IGxhc3RO
YXZpZ2F0aW9uV2FzQXBwQm91bmQ7CisgICAgZW5jb2RlciA8PCBpZGVudGlmaWVyIDw8IHR5cGUg
PDwgZnJhbWVUeXBlIDw8IHVybCA8PCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDsKIH0K
IAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KQEAgLTgzLDEyICs4MywxMiBAQCBzdGQ6Om9wdGlv
bmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZGVj
b2RlKERlY29kZXImCiAgICAgaWYgKCF1cmwpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICBzdGQ6Om9wdGlvbmFsPExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ+IGxhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQ7Ci0gICAgZGVjb2RlciA+PiBsYXN0TmF2aWdhdGlvbldhc0FwcEJv
dW5kOwotICAgIGlmICghbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCkKKyAgICBzdGQ6Om9wdGlv
bmFsPExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkPiBsYXN0TmF2aWdhdGlvbldhc0FwcElu
aXRpYXRlZDsKKyAgICBkZWNvZGVyID4+IGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOwor
ICAgIGlmICghbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4geyB7IFdURk1vdmUoKmlkZW50aWZpZXIpLCBXVEZN
b3ZlKCp0eXBlKSwgV1RGTW92ZSgqZnJhbWVUeXBlKSwgV1RGTW92ZSgqdXJsKSwgV1RGTW92ZSgq
bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCkgfSB9OworICAgIHJldHVybiB7IHsgV1RGTW92ZSgq
aWRlbnRpZmllciksIFdURk1vdmUoKnR5cGUpLCBXVEZNb3ZlKCpmcmFtZVR5cGUpLCBXVEZNb3Zl
KCp1cmwpLCBXVEZNb3ZlKCpsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCkgfSB9OwogfQog
CiB1c2luZyBTZXJ2aWNlV29ya2VyQ2xpZW50c01hdGNoQWxsQ2FsbGJhY2sgPSBXVEY6OkNvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYmKT47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNv
bnRleHREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEuY3BwCmluZGV4IGI1YWRkYjMxZGFiY2JhODBiOTRkMDAzNGVhY2YzNjc5
NGYxM2FiNGIuLjU2NGJiZTBmYmZkZDM4MDU3NWE3MTVkMzdmZmFkZTJjNTQyNTFmNDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEuY3BwCkBAIC00NCw3ICs0NCw3IEBAIFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YSBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAg
ICAgIHNjcmlwdFVSTC5pc29sYXRlZENvcHkoKSwKICAgICAgICAgd29ya2VyVHlwZSwKICAgICAg
ICAgbG9hZGVkRnJvbURpc2ssCi0gICAgICAgIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQsCisg
ICAgICAgIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkLAogICAgICAgICBjcm9zc1RocmVh
ZENvcHkoc2NyaXB0UmVzb3VyY2VNYXApCiAgICAgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaAppbmRl
eCAzZDdjZDE3YThiYzA5ZGFlYWE2ZTBlYmY5MGEwNTlhN2M3MDlhMzMzLi5jZWZiNjBmNWU3NTBk
OTY3OTcyZmYzZTdiZTliNTUzNDU2Y2MxN2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oCkBAIC0zOSw3
ICszOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBjbGFzcyBMYXN0TmF2aWdh
dGlvbldhc0FwcEJvdW5kIDogYm9vbDsKK2VudW0gY2xhc3MgTGFzdE5hdmlnYXRpb25XYXNBcHBJ
bml0aWF0ZWQgOiBib29sOwogCiBzdHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhIHsKICAg
ICBzdHJ1Y3QgSW1wb3J0ZWRTY3JpcHQgewpAQCAtODksNyArODksNyBAQCBzdHJ1Y3QgU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhIHsKICAgICBVUkwgc2NyaXB0VVJMOwogICAgIFdvcmtlclR5cGUg
d29ya2VyVHlwZTsKICAgICBib29sIGxvYWRlZEZyb21EaXNrOwotICAgIHN0ZDo6b3B0aW9uYWw8
TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZD4gbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDsKKyAg
ICBzdGQ6Om9wdGlvbmFsPExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkPiBsYXN0TmF2aWdh
dGlvbldhc0FwcEluaXRpYXRlZDsKICAgICBIYXNoTWFwPFVSTCwgSW1wb3J0ZWRTY3JpcHQ+IHNj
cmlwdFJlc291cmNlTWFwOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYpIGNvbnN0OwpAQCAtMTAyLDcgKzEwMiw3IEBAIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+CiB2b2lkIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBqb2JEYXRhSWRlbnRpZmllciA8PCByZWdp
c3RyYXRpb24gPDwgc2VydmljZVdvcmtlcklkZW50aWZpZXIgPDwgc2NyaXB0IDw8IGNvbnRlbnRT
ZWN1cml0eVBvbGljeSA8PCByZWZlcnJlclBvbGljeQotICAgICAgICA8PCBzY3JpcHRVUkwgPDwg
d29ya2VyVHlwZSA8PCBsb2FkZWRGcm9tRGlzayA8PCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5k
IDw8IHNjcmlwdFJlc291cmNlTWFwIDw8IGNlcnRpZmljYXRlSW5mbzsKKyAgICAgICAgPDwgc2Ny
aXB0VVJMIDw8IHdvcmtlclR5cGUgPDwgbG9hZGVkRnJvbURpc2sgPDwgbGFzdE5hdmlnYXRpb25X
YXNBcHBJbml0aWF0ZWQgPDwgc2NyaXB0UmVzb3VyY2VNYXAgPDwgY2VydGlmaWNhdGVJbmZvOwog
fQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAtMTQ3LDggKzE0Nyw4IEBAIHN0ZDo6b3B0
aW9uYWw8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6
OmRlY29kZShEZWNvZGVyCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShsb2FkZWRGcm9tRGlzaykp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPExhc3RO
YXZpZ2F0aW9uV2FzQXBwQm91bmQ+IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7Ci0gICAgaWYg
KCFkZWNvZGVyLmRlY29kZShsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKSkKKyAgICBzdGQ6Om9w
dGlvbmFsPExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkPiBsYXN0TmF2aWdhdGlvbldhc0Fw
cEluaXRpYXRlZDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGxhc3ROYXZpZ2F0aW9uV2FzQXBw
SW5pdGlhdGVkKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEhhc2hNYXA8
VVJMLCBJbXBvcnRlZFNjcmlwdD4gc2NyaXB0UmVzb3VyY2VNYXA7CkBAIC0xNzEsNyArMTcxLDcg
QEAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YTo6ZGVjb2RlKERlY29kZXIKICAgICAgICAgV1RGTW92ZShzY3JpcHRVUkwpLAog
ICAgICAgICB3b3JrZXJUeXBlLAogICAgICAgICBsb2FkZWRGcm9tRGlzaywKLSAgICAgICAgV1RG
TW92ZShsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKSwKKyAgICAgICAgV1RGTW92ZShsYXN0TmF2
aWdhdGlvbldhc0FwcEluaXRpYXRlZCksCiAgICAgICAgIFdURk1vdmUoc2NyaXB0UmVzb3VyY2VN
YXApCiAgICAgfX07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAppbmRl
eCA3MjI4NWZkYzgzOTlmYzM0YjU0ZTkzNjA0OTEzZmExYTNmYzU0OTM3Li41YzFhYWVmOWU5ODMw
Mjg2MjcwZmYyMzNhNDVhYTcxZWMyMmIwOTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eS5jcHAKQEAgLTExNyw4ICsxMTcsOCBAQCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6
OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25maQog
ICAgIG1fcmVtb3RlRGVidWdnYWJsZS0+aW5pdCgpOwogI2VuZGlmCiAKLSAgICBpZiAoZGF0YS5s
YXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKQotICAgICAgICBzZXRMYXN0TmF2aWdhdGlvbldhc0Fw
cEJvdW5kKGRhdGEubGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCA9PSBMYXN0TmF2aWdhdGlvbldh
c0FwcEJvdW5kOjpZZXMpOworICAgIGlmIChkYXRhLmxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlh
dGVkKQorICAgICAgICBzZXRMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZChkYXRhLmxhc3RO
YXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkID09IExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVk
OjpZZXMpOwogfQogCiBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6On5TZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHkoKQpAQCAtMTI3LDE1ICsxMjcsMTUgQEAgU2VydmljZVdvcmtlclRocmVhZFByb3h5
Ojp+U2VydmljZVdvcmtlclRocmVhZFByb3h5KCkKICAgICBhbGxTZXJ2aWNlV29ya2VyVGhyZWFk
UHJveGllcygpLnJlbW92ZSh0aGlzKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHk6OnNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoYm9vbCB3YXNBcHBCb3VuZCkKK3ZvaWQg
U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpzZXRMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRl
ZChib29sIHdhc0FwcEluaXRpYXRlZCkKIHsKICAgICBpZiAobV9kb2N1bWVudC0+bG9hZGVyKCkp
Ci0gICAgICAgIG1fZG9jdW1lbnQtPmxvYWRlcigpLT5zZXRMYXN0TmF2aWdhdGlvbldhc0FwcEJv
dW5kKHdhc0FwcEJvdW5kKTsKKyAgICAgICAgbV9kb2N1bWVudC0+bG9hZGVyKCktPnNldExhc3RO
YXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKHdhc0FwcEluaXRpYXRlZCk7CiB9CiAKLWJvb2wgU2Vy
dmljZVdvcmtlclRocmVhZFByb3h5OjpsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKCkKK2Jvb2wg
U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCgp
CiB7Ci0gICAgcmV0dXJuIG1fZG9jdW1lbnQtPmxvYWRlcigpID8gbV9kb2N1bWVudC0+bG9hZGVy
KCktPmxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoKSA6IGZhbHNlOworICAgIHJldHVybiBtX2Rv
Y3VtZW50LT5sb2FkZXIoKSA/IG1fZG9jdW1lbnQtPmxvYWRlcigpLT5sYXN0TmF2aWdhdGlvbldh
c0FwcEluaXRpYXRlZCgpIDogZmFsc2U7CiB9CiAKIGJvb2wgU2VydmljZVdvcmtlclRocmVhZFBy
b3h5Ojpwb3N0VGFza0Zvck1vZGVUb1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCmluZGV4IGM5ZjFkN2VmNzJiYjNmMzVhYWNkMWMzMDUx
NThjMzhlMjAwYzEwZjAuLjJjNWEyODkyOGZhZTAwYTQ4ZmU4ZGFiOTY4YTg5OTdmYzNkYWVjYzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCkBAIC04MSw4ICs4MSw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KCk7CiAgICAgdm9pZCBkaWRTYXZlU2Ny
aXB0c1RvRGlzayhTY3JpcHRCdWZmZXImJiwgSGFzaE1hcDxVUkwsIFNjcmlwdEJ1ZmZlcj4mJiBp
bXBvcnRlZFNjcmlwdHMpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMYXN0TmF2aWdh
dGlvbldhc0FwcEJvdW5kKGJvb2wpOwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgbGFzdE5hdmln
YXRpb25XYXNBcHBCb3VuZCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TGFzdE5hdmln
YXRpb25XYXNBcHBJbml0aWF0ZWQoYm9vbCk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBsYXN0
TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCgpOwogCiBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQ
T1JUIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShQYWdlQ29uZmlndXJhdGlvbiYmLCBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEmJiwgU3RyaW5nJiYgdXNlckFnZW50LCBDYWNoZVN0b3JhZ2VQcm92
aWRlciYsIFN0b3JhZ2VCbG9ja2luZ1BvbGljeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3Bw
CmluZGV4IGJkYWJiZGZlZWY1YjQxMWMyYmU2OTVmMzhkNmM5Y2YwNzFhZmFjZTUuLjc3YWU2Mzli
OTI0NmQ1OWRiM2M3MTI3YmFjNDQwMjRmMDc1ZTdmMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJh
c2UuY3BwCkBAIC01NjksNyArNTY5LDcgQEAgU3RyaW5nIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpp
bXBvcnRSZWNvcmRzKCkKICAgICAgICAgYXV0byByZWdpc3RyYXRpb25JZGVudGlmaWVyID0gU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI6OmdlbmVyYXRlKCk7CiAgICAgICAgIGF1
dG8gc2VydmljZVdvcmtlckRhdGEgPSBTZXJ2aWNlV29ya2VyRGF0YSB7IHdvcmtlcklkZW50aWZp
ZXIsIHNjcmlwdFVSTCwgU2VydmljZVdvcmtlclN0YXRlOjpBY3RpdmF0ZWQsICp3b3JrZXJUeXBl
LCByZWdpc3RyYXRpb25JZGVudGlmaWVyIH07CiAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uID0g
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEgeyBXVEZNb3ZlKCprZXkpLCByZWdpc3RyYXRp
b25JZGVudGlmaWVyLCBXVEZNb3ZlKHNjb3BlVVJMKSwgKnVwZGF0ZVZpYUNhY2hlLCBsYXN0VXBk
YXRlQ2hlY2tUaW1lLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShzZXJ2aWNl
V29ya2VyRGF0YSkgfTsKLSAgICAgICAgYXV0byBjb250ZXh0RGF0YSA9IFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YSB7IHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShyZWdpc3RyYXRpb24pLCB3b3JrZXJJ
ZGVudGlmaWVyLCBXVEZNb3ZlKHNjcmlwdCksIFdURk1vdmUoKmNlcnRpZmljYXRlSW5mbyksIFdU
Rk1vdmUoKmNvbnRlbnRTZWN1cml0eVBvbGljeSksIFdURk1vdmUocmVmZXJyZXJQb2xpY3kpLCBX
VEZNb3ZlKHNjcmlwdFVSTCksICp3b3JrZXJUeXBlLCB0cnVlLCBMYXN0TmF2aWdhdGlvbldhc0Fw
cEJvdW5kOjpObywgV1RGTW92ZShzY3JpcHRSZXNvdXJjZU1hcCkgfTsKKyAgICAgICAgYXV0byBj
b250ZXh0RGF0YSA9IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB7IHN0ZDo6bnVsbG9wdCwgV1RG
TW92ZShyZWdpc3RyYXRpb24pLCB3b3JrZXJJZGVudGlmaWVyLCBXVEZNb3ZlKHNjcmlwdCksIFdU
Rk1vdmUoKmNlcnRpZmljYXRlSW5mbyksIFdURk1vdmUoKmNvbnRlbnRTZWN1cml0eVBvbGljeSks
IFdURk1vdmUocmVmZXJyZXJQb2xpY3kpLCBXVEZNb3ZlKHNjcmlwdFVSTCksICp3b3JrZXJUeXBl
LCB0cnVlLCBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDo6Tm8sIFdURk1vdmUoc2NyaXB0
UmVzb3VyY2VNYXApIH07CiAKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBjb250ZXh0RGF0YSA9IGNvbnRleHREYXRhLmlzb2xhdGVkQ29w
eSgpXSgpIG11dGFibGUgewogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+YWRkUmVnaXN0cmF0
aW9uVG9TdG9yZShXVEZNb3ZlKGNvbnRleHREYXRhKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCmluZGV4IDE3ZWRmN2VjMGVlMDE2
MDhjZDgwZjU5YmY2OGQxNTY1MTA2ZjY4M2IuLmQ3MDg3NTA1Y2MxODgwOWVlYzM4OTZiZjg5Yzc3
N2UyYzMzZDM3MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC00NzQsNyArNDc0LDcgQEAgdm9pZCBTV1NlcnZlcjo6c3Rh
cnRTY3JpcHRGZXRjaChjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iRGF0YSwgU1dTZXJ2
ZXJSZWcKICAgICAgICAgcmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIob3JpZ2luVVJMKG9yaWdpbiku
c3RyaW5nKCkpOwogICAgICAgICByZXF1ZXN0LnNldEhUVFBVc2VyQWdlbnQoc2VydmljZVdvcmtl
ckNsaWVudFVzZXJBZ2VudChDbGllbnRPcmlnaW4geyBqb2JEYXRhLnRvcE9yaWdpbiwgU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZShqb2JEYXRhLnNjcmlwdFVSTCktPmRhdGEoKSB9KSk7CiAgICAgICAg
IHJlcXVlc3Quc2V0UHJpb3JpdHkoUmVzb3VyY2VMb2FkUHJpb3JpdHk6Okxvdyk7Ci0gICAgICAg
IHJlcXVlc3Quc2V0SXNBcHBCb3VuZChyZWdpc3RyYXRpb24uaXNBcHBCb3VuZCgpKTsKKyAgICAg
ICAgcmVxdWVzdC5zZXRJc0FwcEluaXRpYXRlZChyZWdpc3RyYXRpb24uaXNBcHBJbml0aWF0ZWQo
KSk7CiAKICAgICAgICAgbV9zb2Z0VXBkYXRlQ2FsbGJhY2soU2VydmljZVdvcmtlckpvYkRhdGEg
eyBqb2JEYXRhIH0sIHNob3VsZFJlZnJlc2hDYWNoZSwgV1RGTW92ZShyZXF1ZXN0KSwgW3RoaXMs
IHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldKGF1dG8mIHJlc3VsdCkgewogICAgICAgICAg
ICAgaWYgKCF3ZWFrVGhpcykKQEAgLTY0OCwyNCArNjQ4LDI0IEBAIHZvaWQgU1dTZXJ2ZXI6OnJl
bW92ZUNsaWVudFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oQ29ubmVjdGlvbiYgY29ubmVjdGlv
biwgU2VyCiAKIHZvaWQgU1dTZXJ2ZXI6OnVwZGF0ZVdvcmtlcihjb25zdCBTZXJ2aWNlV29ya2Vy
Sm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBTV1NlcnZlclJlZ2lzdHJhdGlv
biYgcmVnaXN0cmF0aW9uLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU2NyaXB0QnVmZmVyJiBzY3Jp
cHQsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBjb25zdCBDb250ZW50
U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmIGNvbnRlbnRTZWN1cml0eVBvbGljeSwgY29u
c3QgU3RyaW5nJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSB0eXBlLCBIYXNoTWFwPFVSTCwg
U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4mJiBzY3JpcHRSZXNvdXJj
ZU1hcCkKIHsKLSAgICB0cnlJbnN0YWxsQ29udGV4dERhdGEoU2VydmljZVdvcmtlckNvbnRleHRE
YXRhIHsgam9iRGF0YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbi5kYXRhKCksIFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBzY3JpcHQsIGNlcnRpZmljYXRlSW5mbywgY29udGVu
dFNlY3VyaXR5UG9saWN5LCByZWZlcnJlclBvbGljeSwgdXJsLCB0eXBlLCBmYWxzZSwgY2xpZW50
SXNBcHBCb3VuZEZvclJlZ2lzdHJhYmxlRG9tYWluKFJlZ2lzdHJhYmxlRG9tYWluKHVybCkpLCBX
VEZNb3ZlKHNjcmlwdFJlc291cmNlTWFwKSB9KTsKKyAgICB0cnlJbnN0YWxsQ29udGV4dERhdGEo
U2VydmljZVdvcmtlckNvbnRleHREYXRhIHsgam9iRGF0YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlv
bi5kYXRhKCksIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyOjpnZW5lcmF0ZSgpLCBzY3JpcHQsIGNl
cnRpZmljYXRlSW5mbywgY29udGVudFNlY3VyaXR5UG9saWN5LCByZWZlcnJlclBvbGljeSwgdXJs
LCB0eXBlLCBmYWxzZSwgY2xpZW50SXNBcHBJbml0aWF0ZWRGb3JSZWdpc3RyYWJsZURvbWFpbihS
ZWdpc3RyYWJsZURvbWFpbih1cmwpKSwgV1RGTW92ZShzY3JpcHRSZXNvdXJjZU1hcCkgfSk7CiB9
CiAKLUxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgU1dTZXJ2ZXI6OmNsaWVudElzQXBwQm91bmRG
b3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKQorTGFz
dE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgU1dTZXJ2ZXI6OmNsaWVudElzQXBwSW5pdGlhdGVk
Rm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikKIHsK
ICAgICBhdXRvIGNsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluSXRlcmF0b3IgPSBtX2NsaWVudHNC
eVJlZ2lzdHJhYmxlRG9tYWluLmZpbmQoZG9tYWluKTsKICAgICBpZiAoY2xpZW50c0J5UmVnaXN0
cmFibGVEb21haW5JdGVyYXRvciA9PSBtX2NsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluLmVuZCgp
KQotICAgICAgICByZXR1cm4gTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDo6Tm87CisgICAgICAg
IHJldHVybiBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDo6Tm87CiAKICAgICBhdXRvJiBj
bGllbnRzRm9yUmVnaXN0cmFibGVEb21haW4gPSBjbGllbnRzQnlSZWdpc3RyYWJsZURvbWFpbkl0
ZXJhdG9yLT52YWx1ZTsKICAgICBmb3IgKGF1dG8mIGNsaWVudCA6IGNsaWVudHNGb3JSZWdpc3Ry
YWJsZURvbWFpbikgewogICAgICAgICBhdXRvIGRhdGEgPSBtX2NsaWVudHNCeUlkLmZpbmQoY2xp
ZW50KTsKICAgICAgICAgQVNTRVJUKGRhdGEgIT0gbV9jbGllbnRzQnlJZC5lbmQoKSk7Ci0gICAg
ICAgIGlmIChkYXRhLT52YWx1ZS5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kID09IExhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQ6OlllcykKLSAgICAgICAgICAgIHJldHVybiBMYXN0TmF2aWdhdGlv
bldhc0FwcEJvdW5kOjpZZXM7CisgICAgICAgIGlmIChkYXRhLT52YWx1ZS5sYXN0TmF2aWdhdGlv
bldhc0FwcEluaXRpYXRlZCA9PSBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDo6WWVzKQor
ICAgICAgICAgICAgcmV0dXJuIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpZZXM7CiAg
ICAgfQogCi0gICAgcmV0dXJuIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6Ok5vOworICAgIHJl
dHVybiBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDo6Tm87CiB9CiAKIHZvaWQgU1dTZXJ2
ZXI6OnRyeUluc3RhbGxDb250ZXh0RGF0YShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBkYXRh
KQpAQCAtODg2LDExICs4ODYsMTEgQEAgU1dTZXJ2ZXJSZWdpc3RyYXRpb24qIFNXU2VydmVyOjpy
ZWdpc3RyYXRpb25Gcm9tU2VydmljZVdvcmtlcklkZW50aWZpZXIoU2VydmljZVcKICAgICByZXR1
cm4gaXRlcmF0b3ItPnZhbHVlLT5yZWdpc3RyYXRpb24oKTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6
dXBkYXRlQXBwQm91bmRWYWx1ZUZvcldvcmtlcnMoY29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRP
cmlnaW4sIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3Vu
ZCkKK3ZvaWQgU1dTZXJ2ZXI6OnVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlRm9yV29ya2Vycyhjb25z
dCBDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0
ZWQgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpCiB7CiAgICAgZm9yIChhdXRvJiB3b3Jr
ZXIgOiBtX3J1bm5pbmdPclRlcm1pbmF0aW5nV29ya2Vycy52YWx1ZXMoKSkgewogICAgICAgICBp
ZiAod29ya2VyLT5vcmlnaW4oKS5jbGllbnRSZWdpc3RyYWJsZURvbWFpbigpID09IGNsaWVudE9y
aWdpbi5jbGllbnRSZWdpc3RyYWJsZURvbWFpbigpKQotICAgICAgICAgICAgd29ya2VyLT51cGRh
dGVBcHBCb3VuZFZhbHVlKGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOworICAgICAgICAgICAg
d29ya2VyLT51cGRhdGVBcHBJbml0aWF0ZWRWYWx1ZShsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRp
YXRlZCk7CiAgICAgfQogfQogCkBAIC04OTksOSArODk5LDkgQEAgdm9pZCBTV1NlcnZlcjo6cmVn
aXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KENsaWVudE9yaWdpbiYmIGNsaWVudE9yaWdpbiwgU2Vy
dmljZVcKICAgICBhdXRvIGNsaWVudElkZW50aWZpZXIgPSBkYXRhLmlkZW50aWZpZXI7CiAKICAg
ICAvLyBVcGRhdGUgdGhlIGFwcC1ib3VuZCB2YWx1ZSBpZiB0aGUgbmV3IGNsaWVudCBpcyBhcHAt
Ym91bmQgYW5kIHRoZSBjdXJyZW50IGNsaWVudHMgZm9yIHRoZSBvcmlnaW4gYXJlIG5vdCBtYXJr
ZWQgYXBwLWJvdW5kLgotICAgIGlmIChkYXRhLmxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgPT0g
TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDo6WWVzKSB7Ci0gICAgICAgIGlmIChjbGllbnRJc0Fw
cEJvdW5kRm9yUmVnaXN0cmFibGVEb21haW4oY2xpZW50T3JpZ2luLmNsaWVudFJlZ2lzdHJhYmxl
RG9tYWluKCkpID09IExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6Ok5vKQotICAgICAgICAgICAg
dXBkYXRlQXBwQm91bmRWYWx1ZUZvcldvcmtlcnMoY2xpZW50T3JpZ2luLCBkYXRhLmxhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQpOworICAgIGlmIChkYXRhLmxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5p
dGlhdGVkID09IExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpZZXMpIHsKKyAgICAgICAg
aWYgKGNsaWVudElzQXBwSW5pdGlhdGVkRm9yUmVnaXN0cmFibGVEb21haW4oY2xpZW50T3JpZ2lu
LmNsaWVudFJlZ2lzdHJhYmxlRG9tYWluKCkpID09IExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlh
dGVkOjpObykKKyAgICAgICAgICAgIHVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlRm9yV29ya2Vycyhj
bGllbnRPcmlnaW4sIGRhdGEubGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpOwogICAgIH0K
IAogICAgIEFTU0VSVCghbV9jbGllbnRzQnlJZC5jb250YWlucyhjbGllbnRJZGVudGlmaWVyKSk7
CkBAIC05MzksNyArOTM5LDcgQEAgdm9pZCBTV1NlcnZlcjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2Vy
Q2xpZW50KENsaWVudE9yaWdpbiYmIGNsaWVudE9yaWdpbiwgU2VydmljZVcKIHZvaWQgU1dTZXJ2
ZXI6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IENsaWVudE9yaWdpbiYgY2xp
ZW50T3JpZ2luLCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBjbGllbnRJZGVudGlmaWVy
KQogewogICAgIGF1dG8gY2xpZW50UmVnaXN0cmFibGVEb21haW4gPSBjbGllbnRPcmlnaW4uY2xp
ZW50UmVnaXN0cmFibGVEb21haW4oKTsKLSAgICBhdXRvIGFwcEJvdW5kVmFsdWVCZWZvcmUgPSBj
bGllbnRJc0FwcEJvdW5kRm9yUmVnaXN0cmFibGVEb21haW4oY2xpZW50T3JpZ2luLmNsaWVudFJl
Z2lzdHJhYmxlRG9tYWluKCkpOworICAgIGF1dG8gYXBwSW5pdGlhdGVkVmFsdWVCZWZvcmUgPSBj
bGllbnRJc0FwcEluaXRpYXRlZEZvclJlZ2lzdHJhYmxlRG9tYWluKGNsaWVudE9yaWdpbi5jbGll
bnRSZWdpc3RyYWJsZURvbWFpbigpKTsKIAogICAgIGJvb2wgd2FzUmVtb3ZlZCA9IG1fY2xpZW50
c0J5SWQucmVtb3ZlKGNsaWVudElkZW50aWZpZXIpOwogICAgIEFTU0VSVF9VTlVTRUQod2FzUmVt
b3ZlZCwgd2FzUmVtb3ZlZCk7CkBAIC05ODQsOSArOTg0LDkgQEAgdm9pZCBTV1NlcnZlcjo6dW5y
ZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRPcmln
aW4sIFMKIAogICAgIC8vIElmIHRoZSBhcHAtYm91bmQgdmFsdWUgY2hhbmdlZCBhZnRlciB0aGlz
IGNsaWVudCB3YXMgcmVtb3ZlZCwgd2Uga25vdyBpdCB3YXMgdGhlIG9ubHkgYXBwLWJvdW5kCiAg
ICAgLy8gY2xpZW50IGZvciBpdHMgb3JpZ2luLCBhbmQgd2Ugc2hvdWxkIHVwZGF0ZSBhbGwgd29y
a2VycyB0byByZWZsZWN0IHRoaXMuCi0gICAgYXV0byBhcHBCb3VuZFZhbHVlQWZ0ZXIgPSBjbGll
bnRJc0FwcEJvdW5kRm9yUmVnaXN0cmFibGVEb21haW4oY2xpZW50T3JpZ2luLmNsaWVudFJlZ2lz
dHJhYmxlRG9tYWluKCkpOwotICAgIGlmIChhcHBCb3VuZFZhbHVlQmVmb3JlICE9IGFwcEJvdW5k
VmFsdWVBZnRlcikKLSAgICAgICAgdXBkYXRlQXBwQm91bmRWYWx1ZUZvcldvcmtlcnMoY2xpZW50
T3JpZ2luLCBhcHBCb3VuZFZhbHVlQWZ0ZXIpOworICAgIGF1dG8gYXBwSW5pdGlhdGVkVmFsdWVB
ZnRlciA9IGNsaWVudElzQXBwSW5pdGlhdGVkRm9yUmVnaXN0cmFibGVEb21haW4oY2xpZW50T3Jp
Z2luLmNsaWVudFJlZ2lzdHJhYmxlRG9tYWluKCkpOworICAgIGlmIChhcHBJbml0aWF0ZWRWYWx1
ZUJlZm9yZSAhPSBhcHBJbml0aWF0ZWRWYWx1ZUFmdGVyKQorICAgICAgICB1cGRhdGVBcHBJbml0
aWF0ZWRWYWx1ZUZvcldvcmtlcnMoY2xpZW50T3JpZ2luLCBhcHBJbml0aWF0ZWRWYWx1ZUFmdGVy
KTsKIAogICAgIGF1dG8gcmVnaXN0cmF0aW9uSXRlcmF0b3IgPSBtX2NsaWVudFRvQ29udHJvbGxp
bmdSZWdpc3RyYXRpb24uZmluZChjbGllbnRJZGVudGlmaWVyKTsKICAgICBpZiAocmVnaXN0cmF0
aW9uSXRlcmF0b3IgPT0gbV9jbGllbnRUb0NvbnRyb2xsaW5nUmVnaXN0cmF0aW9uLmVuZCgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCmlu
ZGV4IGNkNjIyNjYzN2EyNTE2YmYzZmM1MDFlYzYxYTI2MWQyOTM2ZmIyOTQuLjZiZDY4OTMzNDRl
ZWRmMmYwY2JkZGQyYTE2MTY2YTkyMWUzM2ZlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTIxNyw3ICsyMTcsNyBAQCBwdWJs
aWM6CiAKICAgICBzdGF0aWMgY29uc3RleHByIFNlY29uZHMgZGVmYXVsdFRlcm1pbmF0aW9uRGVs
YXkgPSAxMF9zOwogCi0gICAgTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCBjbGllbnRJc0FwcEJv
dW5kRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsKKyAgICBM
YXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCBjbGllbnRJc0FwcEluaXRpYXRlZEZvclJlZ2lz
dHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CiAKIHByaXZhdGU6CiAgICAg
dm9pZCB2YWxpZGF0ZVJlZ2lzdHJhdGlvbkRvbWFpbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CkBAIC0yNDQsNyArMjQ0LDcgQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgY29udGV4dENvbm5lY3Rpb25DcmVhdGVkKFNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbiYpOwogCi0gICAgdm9pZCB1cGRhdGVBcHBCb3VuZFZhbHVlRm9yV29y
a2Vycyhjb25zdCBDbGllbnRPcmlnaW4mLCBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKTsKKyAg
ICB2b2lkIHVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlRm9yV29ya2Vycyhjb25zdCBDbGllbnRPcmln
aW4mLCBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk7CiAKICAgICBIYXNoTWFwPFNXU2Vy
dmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0aW9uPj4gbV9j
b25uZWN0aW9uczsKICAgICBIYXNoTWFwPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXksIFdl
YWtQdHI8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+PiBtX3Njb3BlVG9SZWdpc3RyYXRpb25NYXA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
UmVnaXN0cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCmluZGV4IDEyYTk1ZGUwZGYwZmJkNjQ2NjFlNzZmYzI5
N2Q1MDRhNTM2Njc3MjQuLmQ4Y2E2NWY4ZWVmNmRjNDY4OWVkNmM4ZTA1ZWE4NjM0YWE4OTU5MWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJSZWdpc3RyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCkBAIC0zNzAsMTQgKzM3MCwxNCBAQCB2b2lk
IFNXU2VydmVyUmVnaXN0cmF0aW9uOjpzb2Z0VXBkYXRlKCkKICAgICBtX3NlcnZlci5zb2Z0VXBk
YXRlKCp0aGlzKTsKIH0KIAotdm9pZCBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6c2NoZWR1bGVTb2Z0
VXBkYXRlKElzQXBwQm91bmQgaXNBcHBCb3VuZCkKK3ZvaWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246
OnNjaGVkdWxlU29mdFVwZGF0ZShJc0FwcEluaXRpYXRlZCBpc0FwcEluaXRpYXRlZCkKIHsKICAg
ICAvLyBUbyBhdm9pZCBzY2hlZHVsaW5nIG1hbnkgdXBkYXRlcyBkdXJpbmcgYSBzaW5nbGUgcGFn
ZSBsb2FkLCB3ZSBkbyBzb2Z0IHVwZGF0ZXMgb24gYSAxIHNlY29uZCBkZWxheSBhbmQga2VlcCBk
ZWxheWluZwogICAgIC8vIGFzIGxvbmcgYXMgc29mdCB1cGRhdGUgcmVxdWVzdHMga2VlcCBjb21p
bmcuIFRoaXMgc2VlbXMgdG8gbWF0Y2ggQ2hyb21lJ3MgYmVoYXZpb3IuCiAgICAgaWYgKG1fc29m
dFVwZGF0ZVRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1faXNBcHBC
b3VuZCA9IGlzQXBwQm91bmQgPT0gSXNBcHBCb3VuZDo6WWVzOworICAgIG1faXNBcHBJbml0aWF0
ZWQgPSBpc0FwcEluaXRpYXRlZCA9PSBJc0FwcEluaXRpYXRlZDo6WWVzOwogCiAgICAgUkVMRUFT
RV9MT0coU2VydmljZVdvcmtlciwgIlNXU2VydmVyUmVnaXN0cmF0aW9uOjpzb2Z0VXBkYXRlSWZO
ZWVkZWQiKTsKICAgICBtX3NvZnRVcGRhdGVUaW1lci5zdGFydE9uZVNob3Qoc29mdFVwZGF0ZURl
bGF5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJSZWdpc3RyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaAppbmRleCA5ZjdmMDYwZjdjYzA0YTJjODc1YmIw
NDZjN2I4MTU4OGIxMjI4YjQ2Li5mY2MwNThhMzk4NmQzZmFhNjcwOTYzMWViYzJiMjM2MjQyMzQ2
NWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyUmVnaXN0cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5oCkBAIC00Nyw3ICs0Nyw3IEBAIHN0cnVjdCBF
eGNlcHRpb25EYXRhOwogc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTsKIHN0cnVjdCBT
ZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQ7CiAKLWVudW0gY2xhc3MgSXNBcHBCb3VuZCA6IGJvb2wg
eyBObywgWWVzIH07CitlbnVtIGNsYXNzIElzQXBwSW5pdGlhdGVkIDogYm9vbCB7IE5vLCBZZXMg
fTsKIAogY2xhc3MgU1dTZXJ2ZXJSZWdpc3RyYXRpb24gOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
U1dTZXJ2ZXJSZWdpc3RyYXRpb24+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAg
LTEwMSwxMyArMTAxLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGZvckVhY2hDb25uZWN0aW9uKGNv
bnN0IFdURjo6RnVuY3Rpb248dm9pZChTV1NlcnZlcjo6Q29ubmVjdGlvbiYpPiYpOwogCiAgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRTb2Z0VXBkYXRlKGNvbnN0IEZldGNoT3B0aW9ucyYp
IGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2NoZWR1bGVTb2Z0VXBkYXRlKElzQXBw
Qm91bmQpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2NoZWR1bGVTb2Z0VXBkYXRlKElzQXBw
SW5pdGlhdGVkKTsKICAgICBzdGF0aWMgY29uc3RleHByIFNlY29uZHMgc29mdFVwZGF0ZURlbGF5
IHsgMV9zIH07CiAKICAgICBVUkwgc2NvcGVVUkxXaXRob3V0RnJhZ21lbnQoKSBjb25zdCB7IHJl
dHVybiBtX3Njb3BlVVJMOyB9CiAgICAgVVJMIHNjcmlwdFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1f
c2NyaXB0VVJMOyB9CiAKLSAgICBib29sIGlzQXBwQm91bmQoKSB7IHJldHVybiBtX2lzQXBwQm91
bmQ7IH0KKyAgICBib29sIGlzQXBwSW5pdGlhdGVkKCkgeyByZXR1cm4gbV9pc0FwcEluaXRpYXRl
ZDsgfQogCiBwcml2YXRlOgogICAgIHZvaWQgYWN0aXZhdGUoKTsKQEAgLTEzNSw3ICsxMzUsNyBA
QCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6VGltZXIgbV9zb2Z0VXBkYXRlVGltZXI7CiAgICAg
Ci0gICAgYm9vbCBtX2lzQXBwQm91bmQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pc0FwcEluaXRp
YXRlZCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCA3ZDVjOGYxNDliNzMzMWQ0MGE0YTJlYWNh
ZDlkNjRiNDIwMDFjNTZkLi4xYzdmMzlkYjdjNmRlY2VlMzRlZTNlMDU0ODY3MTllZmJiYjc4ODY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTUyLDcgKzUyLDcg
QEAgcHVibGljOgogCiAgICAgLy8gTWVzc2FnZXMgdG8gdGhlIFNXIGhvc3QgcHJvY2VzcwogICAg
IHZpcnR1YWwgdm9pZCBpbnN0YWxsU2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgU2VydmljZVdv
cmtlckNvbnRleHREYXRhJiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlQXBwQm91bmRWYWx1ZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgTGFz
dE5hdmlnYXRpb25XYXNBcHBCb3VuZCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBcHBJ
bml0aWF0ZWRWYWx1ZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgTGFzdE5hdmlnYXRpb25XYXNB
cHBJbml0aWF0ZWQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmlyZUluc3RhbGxFdmVudChTZXJ2
aWNlV29ya2VySWRlbnRpZmllcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmaXJlQWN0aXZhdGVF
dmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0ZXJt
aW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAK
aW5kZXggNjU5MmRiNDEzZjc5NDVkMTNhMDhlMTYyNTE0YmY0YWZlMGFmYWQwMy4uZDdjY2M2MjA3
NWIxMGU1MTBkYjFjMWYwODM2YWI2NDQxMGY2M2E2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKQEAgLTYy
LDcgKzYyLDcgQEAgU1dTZXJ2ZXJXb3JrZXI6OlNXU2VydmVyV29ya2VyKFNXU2VydmVyJiBzZXJ2
ZXIsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXQKICAgICAsIG1fcmVnaXN0cmFibGVE
b21haW4obV9kYXRhLnNjcmlwdFVSTCkKICAgICAsIG1fc2NyaXB0UmVzb3VyY2VNYXAoV1RGTW92
ZShzY3JpcHRSZXNvdXJjZU1hcCkpCiAgICAgLCBtX3Rlcm1pbmF0aW9uVGltZXIoKnRoaXMsICZT
V1NlcnZlcldvcmtlcjo6dGVybWluYXRpb25UaW1lckZpcmVkKQotICAgICwgbV9sYXN0TmF2aWdh
dGlvbldhc0FwcEJvdW5kKG1fc2VydmVyLT5jbGllbnRJc0FwcEJvdW5kRm9yUmVnaXN0cmFibGVE
b21haW4obV9yZWdpc3RyYWJsZURvbWFpbikpCisgICAgLCBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBw
SW5pdGlhdGVkKG1fc2VydmVyLT5jbGllbnRJc0FwcEluaXRpYXRlZEZvclJlZ2lzdHJhYmxlRG9t
YWluKG1fcmVnaXN0cmFibGVEb21haW4pKQogewogICAgIG1fZGF0YS5zY3JpcHRVUkwucmVtb3Zl
RnJhZ21lbnRJZGVudGlmaWVyKCk7CiAKQEAgLTg3LDE4ICs4NywxOCBAQCBTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEgU1dTZXJ2ZXJXb3JrZXI6OmNvbnRleHREYXRhKCkgY29uc3QKIHsKICAgICBB
U1NFUlQobV9yZWdpc3RyYXRpb24pOwogCi0gICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0LCBtX3Jl
Z2lzdHJhdGlvbi0+ZGF0YSgpLCBtX2RhdGEuaWRlbnRpZmllciwgbV9zY3JpcHQsIG1fY2VydGlm
aWNhdGVJbmZvLCBtX2NvbnRlbnRTZWN1cml0eVBvbGljeSwgbV9yZWZlcnJlclBvbGljeSwgbV9k
YXRhLnNjcmlwdFVSTCwgbV9kYXRhLnR5cGUsIGZhbHNlLCBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBw
Qm91bmQsIG1fc2NyaXB0UmVzb3VyY2VNYXAgfTsKKyAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQs
IG1fcmVnaXN0cmF0aW9uLT5kYXRhKCksIG1fZGF0YS5pZGVudGlmaWVyLCBtX3NjcmlwdCwgbV9j
ZXJ0aWZpY2F0ZUluZm8sIG1fY29udGVudFNlY3VyaXR5UG9saWN5LCBtX3JlZmVycmVyUG9saWN5
LCBtX2RhdGEuc2NyaXB0VVJMLCBtX2RhdGEudHlwZSwgZmFsc2UsIG1fbGFzdE5hdmlnYXRpb25X
YXNBcHBJbml0aWF0ZWQsIG1fc2NyaXB0UmVzb3VyY2VNYXAgfTsKIH0KIAotdm9pZCBTV1NlcnZl
cldvcmtlcjo6dXBkYXRlQXBwQm91bmRWYWx1ZShMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIGxh
c3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpCit2b2lkIFNXU2VydmVyV29ya2VyOjp1cGRhdGVBcHBJ
bml0aWF0ZWRWYWx1ZShMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCBsYXN0TmF2aWdhdGlv
bldhc0FwcEluaXRpYXRlZCkKIHsKLSAgICBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgPSBs
YXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOworICAgIG1fbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0
aWF0ZWQgPSBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDsKIAogICAgIGlmICghaXNSdW5u
aW5nKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gY29u
dGV4dENvbm5lY3Rpb24oKSkKLSAgICAgICAgY29ubmVjdGlvbi0+dXBkYXRlQXBwQm91bmRWYWx1
ZShpZGVudGlmaWVyKCksIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOworICAgICAgICBjb25u
ZWN0aW9uLT51cGRhdGVBcHBJbml0aWF0ZWRWYWx1ZShpZGVudGlmaWVyKCksIGxhc3ROYXZpZ2F0
aW9uV2FzQXBwSW5pdGlhdGVkKTsKIH0KIAogdm9pZCBTV1NlcnZlcldvcmtlcjo6dGVybWluYXRl
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAppbmRleCBi
ZTU1ZWViMWFhMmZlNjJiNjE3MjFlOTMzMTBiMGNhNGRhMTI5ZGZlLi5hYjA3YzcxNzY3NjE3MzQw
MmUwMmEyY2Y1MTE3NTlmYzdiNzg0NGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCkBAIC0xMjcsNyArMTI3LDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0SGFzVGltZWRPdXRBbnlGZXRjaFRhc2tzKCkgeyBtX2hh
c1RpbWVkT3V0QW55RmV0Y2hUYXNrcyA9IHRydWU7IH0KICAgICBib29sIGhhc1RpbWVkT3V0QW55
RmV0Y2hUYXNrcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzVGltZWRPdXRBbnlGZXRjaFRhc2tzOyB9
CiAgICAgdm9pZCBkaWRGYWlsSGVhcnRCZWF0Q2hlY2soKTsKLSAgICB2b2lkIHVwZGF0ZUFwcEJv
dW5kVmFsdWUoTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk7CisgICAgdm9pZCB1cGRhdGVBcHBJ
bml0aWF0ZWRWYWx1ZShMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk7CiAKIHByaXZhdGU6
CiAgICAgU1dTZXJ2ZXJXb3JrZXIoU1dTZXJ2ZXImLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYsIGNv
bnN0IFVSTCYsIGNvbnN0IFNjcmlwdEJ1ZmZlciYsIGNvbnN0IENlcnRpZmljYXRlSW5mbyYsIGNv
bnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIFN0cmluZyYmIHJlZmVy
cmVyUG9saWN5LCBXb3JrZXJUeXBlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgSGFzaE1hcDxV
UkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYpOwpAQCAtMTU4
LDcgKzE1OCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc1RpbWVkT3V0QW55RmV0Y2hUYXNr
cyB7IGZhbHNlIH07CiAgICAgVmVjdG9yPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4+IG1fdGVy
bWluYXRpb25DYWxsYmFja3M7CiAgICAgVGltZXIgbV90ZXJtaW5hdGlvblRpbWVyOwotICAgIExh
c3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOworICAg
IExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIG1fbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0
aWF0ZWQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDQ5YmRkM2ZlYzY4MTM3Y2U0
MzUzOTUwMDM0YWRjNmIyNzUyYWY5ZTUuLmVjY2NhOGY2YWZiZWEwNTI1ZDUxOTY0ZmU5ZjNiODA2
NzVhZmEzZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCkBAIC0xMzYyLDcgKzEzNjIsNyBAQCBib29sIE5ldHdvcmtQcm9jZXNzOjpwcml2
YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnTW9kZUVuYWJsZWQoKSBjb25zdAogICAgIHJldHVybiBt
X3ByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdNb2RlRW5hYmxlZDsKIH0KIAotdm9pZCBOZXR3
b3JrUHJvY2Vzczo6cHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFn
ZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
d2ViUGFnZUlELCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFdlYkNv
cmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzdGQ6
Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluLCBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIGxhc3ROYXZpZ2F0aW9uV2FzQXBw
Qm91bmQpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IHVzZXJBZ2VudCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVk
IGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKQogewogICAgIExPRyhOZXR3b3JrLCAiKE5l
dHdvcmtQcm9jZXNzKSBQcmVjb25uZWN0aW5nIHRvIFVSTCAlcyAoc3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3kgJWkpIiwgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIChpbnQpc3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3kpOwogCkBAIC0xMzc4LDcgKzEzNzgsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVu
dGlmaQogCiAgICAgTmV0d29ya0xvYWRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAgICAgcGFyYW1l
dGVycy5yZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0IHsgdXJsIH07Ci0gICAgcGFyYW1ldGVycy5y
ZXF1ZXN0LnNldElzQXBwQm91bmQobGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCA9PSBMYXN0TmF2
aWdhdGlvbldhc0FwcEJvdW5kOjpZZXMpOworICAgIHBhcmFtZXRlcnMucmVxdWVzdC5zZXRJc0Fw
cEluaXRpYXRlZChsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCA9PSBMYXN0TmF2aWdhdGlv
bldhc0FwcEluaXRpYXRlZDo6WWVzKTsKICAgICBwYXJhbWV0ZXJzLnJlcXVlc3Quc2V0Rmlyc3RQ
YXJ0eUZvckNvb2tpZXModXJsKTsKICAgICBwYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlEID0gd2Vi
UGFnZVByb3h5SUQ7CiAgICAgcGFyYW1ldGVycy53ZWJQYWdlSUQgPSB3ZWJQYWdlSUQ7CkBAIC0y
NzY2LDE5ICsyNzY2LDE5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldENPUlNEaXNhYmxpbmdQ
YXR0ZXJucyhQYWdlSWRlbnRpZmllciBwYWdlSWRlbnRpZmllciwgVmVjCiB9CiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmFwcEJvdW5kTmF2aWdhdGlvbkRhdGEo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEFw
cEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IE5ldHdvcmtQcm9jZXNzOjphcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEFwcFByaXZhY3lSZXBv
cnRUZXN0aW5nRGF0YSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBu
ZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIobmV0d29ya1Nlc3Npb24tPmFwcEJvdW5kTmF2aWdhdGlvblRl
c3RpbmdEYXRhKCkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuZXR3b3JrU2Vzc2lvbi0+
YXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmNs
ZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1By
b2Nlc3M6OmNsZWFyQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCkpCi0gICAgICAgIG5ldHdvcmtTZXNzaW9uLT5hcHBCb3VuZE5hdmlnYXRpb25UZXN0
aW5nRGF0YSgpLmNsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YVRlc3RpbmcoKTsKKyAgICAgICAg
bmV0d29ya1Nlc3Npb24tPmFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSgpLmNsZWFyQXBwUHJp
dmFjeVJlcG9ydFRlc3RpbmdEYXRhKCk7CiAKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDQ0
Nzc4NGIxYTc4MzhkZDdiZGM5NWNmMzc0MDU3YmNjNTlkOGEzM2QuLjVmNTg1YWU3OWYxZDBiYTEz
YmViYWJhOGI1NjRiODI4MWU1NmY0ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAK
KyNpbmNsdWRlICJBcHBQcml2YWN5UmVwb3J0LmgiCiAjaW5jbHVkZSAiQXV4aWxpYXJ5UHJvY2Vz
cy5oIgogI2luY2x1ZGUgIkNhY2hlTW9kZWwuaCIKICNpbmNsdWRlICJDYWxsYmFja0lELmgiCkBA
IC0yODgsNyArMjg5LDcgQEAgcHVibGljOgogICAgIHVzaW5nIENhY2hlU3RvcmFnZVJvb3RQYXRo
Q2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT47CiAgICAgdm9pZCBj
YWNoZVN0b3JhZ2VSb290UGF0aChQQUw6OlNlc3Npb25JRCwgQ2FjaGVTdG9yYWdlUm9vdFBhdGhD
YWxsYmFjayYmKTsKIAotICAgIHZvaWQgcHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklELCBXZWJQ
YWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHN0ZDo6b3B0
aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBMYXN0TmF2aWdhdGlvbldhc0FwcEJv
dW5kKTsKKyAgICB2b2lkIHByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCwgV2ViUGFnZVByb3h5
SWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFVSTCYsIGNvbnN0IFN0
cmluZyYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQp
OwogCiAgICAgdm9pZCBzZXRTZXNzaW9uSXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKFBBTDo6U2Vz
c2lvbklELCBib29sKTsKICAgICBib29sIHNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24o
UEFMOjpTZXNzaW9uSUQpIGNvbnN0OwpAQCAtMzc3LDggKzM3OCw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldENPUlNEaXNhYmxpbmdQYXR0ZXJucyhXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgVmVj
dG9yPFN0cmluZz4mJik7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2b2lkIGFwcEJvdW5k
TmF2aWdhdGlvbkRhdGEoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEmKT4mJik7Ci0gICAgdm9pZCBjbGVhckFw
cEJvdW5kTmF2aWdhdGlvbkRhdGEoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CisgICAgdm9pZCBhcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoUEFMOjpTZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgQXBwUHJpdmFjeVJlcG9ydFRlc3Rp
bmdEYXRhJik+JiYpOworICAgIHZvaWQgY2xlYXJBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEo
UEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAjZW5kaWYKIAog
I2lmIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggYWUxNWZmMGUxMmNhNTQ1MTc4
OTA3ZDk3MmEwOWNlNmQyMzIxYTJkNC4uZTA1ZjJlMzIwNTg0NzM3YjM0N2ZhYjIxYmY2YTJlNjk3
OWE4YzhjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC03Nyw3ICs3Nyw3IEBAIG1lc3NhZ2VzIC0+IE5l
dHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBQcmVwYXJlVG9TdXNwZW5kKGJvb2wg
aXNTdXNwZW5zaW9uSW1taW5lbnQpIC0+ICgpIEFzeW5jCiAgICAgUHJvY2Vzc0RpZFJlc3VtZSgp
CiAKLSAgICBQcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6Oldl
YlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIHdlYlBhZ2VJRCwgVVJMIHVybCwgU3RyaW5nIHVzZXJBZ2VudCwgZW51bTp1aW50OF90IFdl
YkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBl
bnVtOmJvb2wgc3RkOjpvcHRpb25hbDxXZWJLaXQ6Ok5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
PiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBlbnVtOmJvb2wgV2ViS2l0OjpMYXN0TmF2
aWdhdGlvbldhc0FwcEJvdW5kIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOworICAgIFByZWNv
bm5lY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRl
bnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlE
LCBVUkwgdXJsLCBTdHJpbmcgdXNlckFnZW50LCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6U3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGVudW06Ym9vbCBzdGQ6
Om9wdGlvbmFsPFdlYktpdDo6TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4sIGVudW06Ym9vbCBXZWJLaXQ6Okxhc3ROYXZpZ2F0aW9uV2FzQXBw
SW5pdGlhdGVkIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKTsKIAogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgQ2xlYXJQcmV2YWxlbnRSZXNvdXJjZShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlc291cmNl
RG9tYWluKSAtPiAoKSBBc3luYwpAQCAtMTkzLDggKzE5Myw4IEBAIG1lc3NhZ2VzIC0+IE5ldHdv
cmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBDbGVhckJ1bmRsZUlkZW50aWZpZXIoKSAt
PiAoKSBBc3luYwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgQXBwQm91bmROYXZpZ2F0aW9u
RGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChzdHJ1Y3QgV2ViS2l0OjpBcHBCb3Vu
ZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBkYXRhKSBBc3luYwotICAgIENsZWFyQXBwQm91bmROYXZp
Z2F0aW9uRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCisgICAgQXBw
UHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKHN0
cnVjdCBXZWJLaXQ6OkFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSBkYXRhKSBBc3luYworICAg
IENsZWFyQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCkgLT4gKCkgQXN5bmMKICNlbmRpZgogCiAgICAgQWRkV2ViUGFnZU5ldHdvcmtQYXJhbWV0ZXJz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVy
IHBhZ2VJRCwgV2ViS2l0OjpXZWJQYWdlTmV0d29ya1BhcmFtZXRlcnMgcGFyYW1ldGVycykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmNwcAppbmRleCAwMWFhMWI4MzU3M2E0Y2RlNWY2ZWFjYjBjYjNjMmQzYmVkN2MxNjEzLi4z
YmNmYzEzZGE4ODMzMzE3ZjU4NDY2MGE2ZTkwZGYyZDdjYmQzYTZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC04ODIsNyArODgyLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVk
aXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwKIAogdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFJl
c291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVD
bGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhPiYmIHByaXZhdGVDbGlja01l
YXN1cmVtZW50QXR0cmlidXRpb25UcmlnZ2VyRGF0YSkKIHsKLSAgICByZWRpcmVjdFJlcXVlc3Qu
c2V0SXNBcHBCb3VuZChyZXF1ZXN0LmlzQXBwQm91bmQoKSk7CisgICAgcmVkaXJlY3RSZXF1ZXN0
LnNldElzQXBwSW5pdGlhdGVkKHJlcXVlc3QuaXNBcHBJbml0aWF0ZWQoKSk7CiAKICAgICBMT0FE
RVJfUkVMRUFTRV9MT0coImNvbnRpbnVlV2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdDogKG1faXNL
ZXB0QWxpdmU9JWQsIGhhc0FkQ2xpY2tDb252ZXJzaW9uPSVkKSIsIG1faXNLZXB0QWxpdmUsICEh
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRhKTsKICAgICBBU1NF
UlQoIWlzU3luY2hyb25vdXMoKSk7CkBAIC0xNTA2LDcgKzE1MDYsNyBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6c2VydmljZVdvcmtlckRpZE5vdEhhbmRsZShTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrKiBmZQogCiBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6aXNBcHBCb3VuZCgpCiB7
Ci0gICAgcmV0dXJuIG1fcGFyYW1ldGVycy5yZXF1ZXN0LmlzQXBwQm91bmQoKTsKKyAgICByZXR1
cm4gbV9wYXJhbWV0ZXJzLnJlcXVlc3QuaXNBcHBJbml0aWF0ZWQoKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmgKaW5kZXggN2ZhOTI3NDRmMjE1MmRjMzYzMDE1YjhhYzJkODI2NTA0MzVkY2IyNC4uNmZh
ZDdiOGI0ZGJiZDFlZWM3MjIxZGQyYzU5OWFkNjlhYTViYTAwOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtMjUsNiArMjUsNyBAQAogCiAj
cHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkFwcFByaXZhY3lSZXBvcnQuaCIKICNpbmNsdWRlICJO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oIgogI2luY2x1ZGUgIlByZWZldGNoQ2FjaGUuaCIK
ICNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIuaCIKQEAgLTE2
MSw3ICsxNjIsNyBAQCBwdWJsaWM6CiAgICAgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
JiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpIHsgcmV0dXJuICptX3ByaXZhdGVDbGlja01lYXN1
cmVtZW50OyB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBBcHBCb3VuZE5hdmlnYXRpb25U
ZXN0aW5nRGF0YSYgYXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEoKSB7IHJldHVybiBtX2Fw
cEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhOyB9CisgICAgQXBwUHJpdmFjeVJlcG9ydFRlc3Rp
bmdEYXRhJiBhcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoKSB7IHJldHVybiBtX2FwcFByaXZh
Y3lSZXBvcnRUZXN0aW5nRGF0YTsgfQogI2VuZGlmCiAKICAgICB2b2lkIGFkZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50TmV0d29ya0xvYWRlcihzdGQ6OnVuaXF1ZV9wdHI8UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnROZXR3b3JrTG9hZGVyPiYmIGxvYWRlcikgeyBtX3ByaXZhdGVDbGlja01lYXN1cmVt
ZW50TmV0d29ya0xvYWRlcnMuYWRkKFdURk1vdmUobG9hZGVyKSk7IH0KQEAgLTIxOSw3ICsyMjAs
NyBAQCBwcm90ZWN0ZWQ6CiAjZW5kaWYKICAgICAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBB
cHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBtX2FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdE
YXRhOworICAgIEFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSBtX2FwcFByaXZhY3lSZXBvcnRU
ZXN0aW5nRGF0YTsKICNlbmRpZgogCiAgICAgSGFzaFNldDxzdGQ6OnVuaXF1ZV9wdHI8UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyPj4gbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dE5ldHdvcmtMb2FkZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3Bw
CmluZGV4IDdmZGQ5NTRhZTRjOTFlMTdjNTI2Y2EwZTY4NzZiMzRkYjZkMmRiYjMuLjkxODI0YzAw
NmYyNGExNzY2ZjAwMzc5YWE5ZjBhMTg3MzFlY2UzM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vydmlj
ZVdvcmtlckZldGNoVGFzay5jcHAKQEAgLTI1NSw3ICsyNTUsNyBAQCB2b2lkIFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s6OnNvZnRVcGRhdGVJZk5lZWRlZCgpCiAgICAgaWYgKCFtX3Nob3VsZFNvZnRV
cGRhdGUpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoYXV0byogcmVnaXN0cmF0aW9uID0gbV9s
b2FkZXIuY29ubmVjdGlvblRvV2ViUHJvY2VzcygpLnN3Q29ubmVjdGlvbigpLnNlcnZlcigpLmdl
dFJlZ2lzdHJhdGlvbihtX3NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKSkKLSAg
ICAgICAgcmVnaXN0cmF0aW9uLT5zY2hlZHVsZVNvZnRVcGRhdGUobV9sb2FkZXIuaXNBcHBCb3Vu
ZCgpID8gV2ViQ29yZTo6SXNBcHBCb3VuZDo6WWVzIDogV2ViQ29yZTo6SXNBcHBCb3VuZDo6Tm8p
OworICAgICAgICByZWdpc3RyYXRpb24tPnNjaGVkdWxlU29mdFVwZGF0ZShtX2xvYWRlci5pc0Fw
cEJvdW5kKCkgPyBXZWJDb3JlOjpJc0FwcEluaXRpYXRlZDo6WWVzIDogV2ViQ29yZTo6SXNBcHBJ
bml0aWF0ZWQ6Ok5vKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNv
ZnRVcGRhdGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAppbmRleCA0ZmYxYjFmZDIz
ZjY2YWYzMTI5OWNjOGJiNWNiMmNlYzVjZWYwYTVjLi4wNGFlZDkzODU3OWQ3MzVlZTA4MzNmOTBl
ZDMzMzRjN2ZlNDZjY2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29m
dFVwZGF0ZUxvYWRlci5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJT
b2Z0VXBkYXRlTG9hZGVyOjpsb2FkRnJvbU5ldHdvcmsoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24s
IFJlcwogICAgIG1fbmV0d29ya0xvYWQtPnN0YXJ0KCk7CiAKICNpZiBQTEFURk9STShDT0NPQSkK
LSAgICBzZXNzaW9uLmFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhKCkuc2V0RGlkUGVyZm9y
bVNvZnRVcGRhdGUoKTsKKyAgICBzZXNzaW9uLmFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSgp
LnNldERpZFBlcmZvcm1Tb2Z0VXBkYXRlKCk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCBjM2E3YjNkZjcwYzM3ZTNkYmU0ZmEzMWVmNjYw
YjYwNzA4ZjM3MmUzLi4yYTY0M2I4YTQ0YTczYWJiMGE0MTA2MTVkMzFlOWRiNTU2MzBkY2ViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtMTQ3LDcgKzE0Nyw3
IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpjb250cm9sQ2xpZW50KFNlcnZpY2VXb3Jr
ZXJDbGllbnRJZGVudGlmaWVyIGNsaWVudElkCiAgICAgICAgIHVucmVnaXN0ZXJTZXJ2aWNlV29y
a2VyQ2xpZW50KGNsaWVudElkZW50aWZpZXIpOwogICAgIH0pOwogCi0gICAgU2VydmljZVdvcmtl
ckNsaWVudERhdGEgZGF0YSB7IGNsaWVudElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJDbGllbnRU
eXBlOjpXaW5kb3csIFNlcnZpY2VXb3JrZXJDbGllbnRGcmFtZVR5cGU6Ok5vbmUsIHJlcXVlc3Qu
dXJsKCksIHJlcXVlc3QuaXNBcHBCb3VuZCgpID8gV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNB
cHBCb3VuZDo6WWVzIDogV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDo6Tm8gfTsK
KyAgICBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSBkYXRhIHsgY2xpZW50SWRlbnRpZmllciwgU2Vy
dmljZVdvcmtlckNsaWVudFR5cGU6OldpbmRvdywgU2VydmljZVdvcmtlckNsaWVudEZyYW1lVHlw
ZTo6Tm9uZSwgcmVxdWVzdC51cmwoKSwgcmVxdWVzdC5pc0FwcEluaXRpYXRlZCgpID8gV2ViQ29y
ZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6OlllcyA6IFdlYkNvcmU6Okxhc3ROYXZp
Z2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpObyB9OwogICAgIHJlZ2lzdGVyU2VydmljZVdvcmtlckNs
aWVudChTZWN1cml0eU9yaWdpbkRhdGEgeyByZWdpc3RyYXRpb24ua2V5KCkudG9wT3JpZ2luKCkg
fSwgV1RGTW92ZShkYXRhKSwgcmVnaXN0cmF0aW9uLmlkZW50aWZpZXIoKSwgcmVxdWVzdC5odHRw
VXNlckFnZW50KCkpOwogfQogCkBAIC0xODgsNyArMTg4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s+IFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y3JlYXRlRmV0Y2hU
YXNrKE4KICAgICBib29sIHNob3VsZFNvZnRVcGRhdGUgPSByZWdpc3RyYXRpb24gJiYgcmVnaXN0
cmF0aW9uLT5zaG91bGRTb2Z0VXBkYXRlKGxvYWRlci5wYXJhbWV0ZXJzKCkub3B0aW9ucyk7CiAg
ICAgaWYgKHdvcmtlci0+c2hvdWxkU2tpcEZldGNoRXZlbnQoKSkgewogICAgICAgICBpZiAoc2hv
dWxkU29mdFVwZGF0ZSkKLSAgICAgICAgICAgIHJlZ2lzdHJhdGlvbi0+c2NoZWR1bGVTb2Z0VXBk
YXRlKGxvYWRlci5pc0FwcEJvdW5kKCkgPyBXZWJDb3JlOjpJc0FwcEJvdW5kOjpZZXMgOiBXZWJD
b3JlOjpJc0FwcEJvdW5kOjpObyk7CisgICAgICAgICAgICByZWdpc3RyYXRpb24tPnNjaGVkdWxl
U29mdFVwZGF0ZShsb2FkZXIuaXNBcHBCb3VuZCgpID8gV2ViQ29yZTo6SXNBcHBJbml0aWF0ZWQ6
OlllcyA6IFdlYkNvcmU6OklzQXBwSW5pdGlhdGVkOjpObyk7CiAKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmNwcAppbmRleCAzZmEwZTk5NzBmMjU1NWNjODA0YjkyNzRiMGY3ZWRkMTk1NzI1
NTJhLi5lOTAyZWMwNzU4MDUwZTk5ZjYwMTdkYmY3MTBkYTgzNTU5YWRjMzZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtOTIs
OSArOTIsOSBAQCB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6aW5zdGFsbFNl
cnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFNlcnZpY2VXbwogICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpJbnN0YWxsU2VydmljZVdvcmtlciB7IGRhdGEs
IHVzZXJBZ2VudCB9KTsKIH0KIAotdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
OnVwZGF0ZUFwcEJvdW5kVmFsdWUoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIFdlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgbGFzdE5hdmln
YXRpb25XYXNBcHBCb3VuZCkKK3ZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp1
cGRhdGVBcHBJbml0aWF0ZWRWYWx1ZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgbGFz
dE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlVwZGF0ZUFwcEJvdW5kVmFsdWUoc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6VXBkYXRlQXBwSW5pdGlhdGVkVmFs
dWUoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVk
KSk7CiB9CiAKIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpmaXJlSW5zdGFs
bEV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCmluZGV4
IGIwMTE0ZDJmOGQ3NjExN2JkOTYwODk2NTk2MDkzZDQ1ODdhYTAxZWMuLmFlM2ExYTU2ODZmYWE1
YjdlZmY0NGRmODA1MzdlYWY3N2YxOGZlNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTg2LDcgKzg2LDcgQEAgcHJpdmF0ZToKIAog
ICAgIC8vIE1lc3NhZ2VzIHRvIHRoZSBTVyBob3N0IFdlYlByb2Nlc3MKICAgICB2b2lkIGluc3Rh
bGxTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVB
cHBCb3VuZFZhbHVlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpM
YXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUFwcEluaXRp
YXRlZFZhbHVlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpMYXN0
TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCkgZmluYWw7CiAgICAgdm9pZCBmaXJlSW5zdGFsbEV2
ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGZp
cmVBY3RpdmF0ZUV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsK
ICAgICB2b2lkIHRlcm1pbmF0ZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
cikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNw
cAppbmRleCBlMWJkZjY5ZDY1NDc1MDBlMmUzYjcwMzg2OGVlMTNmZDEwNzQ0NDY4Li5iYTY2OTQz
MWQwODIwNGRiZGM0MzNkODFlYzM4MjhlZDRkMDAwOWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgc3RhdGljIGlu
bGluZSBSZXNvdXJjZVJlcXVlc3QgY29uc3RydWN0UmV2YWxpZGF0aW9uUmVxdWVzdChjb25zdCBL
ZXkmIGtleSwgY29uc3QKICAgICByZXZhbGlkYXRpb25SZXF1ZXN0LnNldEZpcnN0UGFydHlGb3JD
b29raWVzKHN1YlJlc291cmNlSW5mby5maXJzdFBhcnR5Rm9yQ29va2llcygpKTsKICAgICByZXZh
bGlkYXRpb25SZXF1ZXN0LnNldElzU2FtZVNpdGUoc3ViUmVzb3VyY2VJbmZvLmlzU2FtZVNpdGUo
KSk7CiAgICAgcmV2YWxpZGF0aW9uUmVxdWVzdC5zZXRJc1RvcFNpdGUoc3ViUmVzb3VyY2VJbmZv
LmlzVG9wU2l0ZSgpKTsKLSAgICByZXZhbGlkYXRpb25SZXF1ZXN0LnNldElzQXBwQm91bmQoc3Vi
UmVzb3VyY2VJbmZvLmlzQXBwQm91bmQoKSk7CisgICAgcmV2YWxpZGF0aW9uUmVxdWVzdC5zZXRJ
c0FwcEluaXRpYXRlZChzdWJSZXNvdXJjZUluZm8uaXNBcHBJbml0aWF0ZWQoKSk7CiAKICAgICBp
ZiAoIWtleS5wYXJ0aXRpb24oKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldmFsaWRhdGlvblJlcXVl
c3Quc2V0Q2FjaGVQYXJ0aXRpb24oa2V5LnBhcnRpdGlvbigpKTsKQEAgLTM2OSw3ICszNjksNyBA
QCB2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnJlZ2lzdGVyTG9hZChjb25zdCBHbG9iYWxG
cmFtZUlEJiBmcmFtZUlELCBjb25zdCBSZQogICAgICAgICBtX3BlbmRpbmdGcmFtZUxvYWRzLmFk
ZChmcmFtZUlELCBwZW5kaW5nRnJhbWVMb2FkLmNvcHlSZWYoKSk7CiAKICAgICAgICAgLy8gUmV0
cmlldmUgdGhlIHN1YnJlc291cmNlcyBlbnRyeSBpZiBpdCBleGlzdHMgdG8gc3RhcnQgc3BlY3Vs
YXRpdmUgcmV2YWxpZGF0aW9uIGFuZCB0byB1cGRhdGUgaXQuCi0gICAgICAgIHJldHJpZXZlU3Vi
cmVzb3VyY2VzRW50cnkocmVzb3VyY2VLZXksIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KCp0aGlzKSwgZnJhbWVJRCwgcGVuZGluZ0ZyYW1lTG9hZCA9IFdURk1vdmUocGVuZGluZ0ZyYW1l
TG9hZCksIHJlcXVlc3RJc0FwcEJvdW5kID0gcmVxdWVzdC5pc0FwcEJvdW5kKCksIGlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW5dKHN0ZDo6dW5pcXVlX3B0cjxTdWJyZXNvdXJjZXNFbnRyeT4g
ZW50cnkpIHsKKyAgICAgICAgcmV0cmlldmVTdWJyZXNvdXJjZXNFbnRyeShyZXNvdXJjZUtleSwg
W3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBmcmFtZUlELCBwZW5kaW5nRnJh
bWVMb2FkID0gV1RGTW92ZShwZW5kaW5nRnJhbWVMb2FkKSwgcmVxdWVzdElzQXBwQm91bmQgPSBy
ZXF1ZXN0LmlzQXBwSW5pdGlhdGVkKCksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW5dKHN0
ZDo6dW5pcXVlX3B0cjxTdWJyZXNvdXJjZXNFbnRyeT4gZW50cnkpIHsKICAgICAgICAgICAgIGlm
ICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC01OTYsNyArNTk2LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpzdGFydFNwZWN1bGF0aXZlUmV2YWxpZGF0
aW9uKGNvbnN0IEdsb2JhbEZyYW1lSUQmIGYKIHsKICAgICBmb3IgKGF1dG8mIHN1YnJlc291cmNl
SW5mbyA6IGVudHJ5LnN1YnJlc291cmNlcygpKSB7CiAgICAgICAgIGF1dG8mIGtleSA9IHN1YnJl
c291cmNlSW5mby5rZXkoKTsKLSAgICAgICAgc3VicmVzb3VyY2VJbmZvLnNldElzQXBwQm91bmQo
cmVxdWVzdElzQXBwQm91bmQpOworICAgICAgICBzdWJyZXNvdXJjZUluZm8uc2V0SXNBcHBJbml0
aWF0ZWQocmVxdWVzdElzQXBwQm91bmQpOwogICAgICAgICBpZiAoIXN1YnJlc291cmNlSW5mby5p
c1RyYW5zaWVudCgpKQogICAgICAgICAgICAgcHJlbG9hZEVudHJ5KGtleSwgc3VicmVzb3VyY2VJ
bmZvLCBmcmFtZUlELCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKICAgICAgICAgZWxz
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmgKaW5kZXggNjBhNDA2M2IyMzQ1
ZDkyNWUyYzc4Nzg0NTk5MjBlMTBmMjc4MjMwZS4uNDBjOWIyMDE3ODhmODE4YTU3OGI4M2YxYWUz
NGI3ZmNmNWU0MTNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50cnkuaApAQCAt
NTksOCArNTksOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzRmlyc3RQYXJ0eSgpIGNvbnN0Owog
Ci0gICAgYm9vbCBpc0FwcEJvdW5kKCkgY29uc3QgeyByZXR1cm4gbV9pc0FwcEJvdW5kOyB9Ci0g
ICAgdm9pZCBzZXRJc0FwcEJvdW5kKGJvb2wgaXNBcHBCb3VuZCkgeyBtX2lzQXBwQm91bmQgPSBp
c0FwcEJvdW5kOyB9CisgICAgYm9vbCBpc0FwcEluaXRpYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNBcHBJbml0aWF0ZWQ7IH0KKyAgICB2b2lkIHNldElzQXBwSW5pdGlhdGVkKGJvb2wgaXNBcHBJ
bml0aWF0ZWQpIHsgbV9pc0FwcEluaXRpYXRlZCA9IGlzQXBwSW5pdGlhdGVkOyB9CiAKIHByaXZh
dGU6CiAgICAgS2V5IG1fa2V5OwpAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgogICAgIFdhbGxU
aW1lIG1fZmlyc3RTZWVuOwogICAgIGJvb2wgbV9pc1RyYW5zaWVudCB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtX2lzU2FtZVNpdGUgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9pc0FwcEJvdW5kIHsgZmFs
c2UgfTsKKyAgICBib29sIG1faXNBcHBJbml0aWF0ZWQgeyB0cnVlIH07CiAgICAgVVJMIG1fZmly
c3RQYXJ0eUZvckNvb2tpZXM7CiAgICAgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCBtX3JlcXVlc3RI
ZWFkZXJzOwogICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5IG1fcHJpb3JpdHk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRh
VGFza0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
RGF0YVRhc2tDb2NvYS5tbQppbmRleCBmNzRiMzEyOWZlNzJiYzlmY2U2MjM2MDYwNmQzYjM5YjA3
MTJjZjg5Li5kM2ZmOGViZWI2Nzg1NTI0N2Y0YzI1NjNjODIwOWJlY2M1OGQ4YmIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0Nv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0Rh
dGFUYXNrQ29jb2EubW0KQEAgLTM0MSw5ICszNDEsNyBAQCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6
TmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRh
VAogICAgIFJldGFpblB0cjxOU011dGFibGVVUkxSZXF1ZXN0PiBtdXRhYmxlUmVxdWVzdCA9IGFk
b3B0TlMoW25zUmVxdWVzdC5nZXQoKSBtdXRhYmxlQ29weV0pOwogCiAjaWYgRU5BQkxFKEFQUF9Q
UklWQUNZX1JFUE9SVCkKLSAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgot
ICAgIG11dGFibGVSZXF1ZXN0LmdldCgpLl9pc05vbkFwcEluaXRpYXRlZCA9ICFyZXF1ZXN0Lmlz
QXBwQm91bmQoKTsKLSAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKKyAgICBt
dXRhYmxlUmVxdWVzdC5nZXQoKS5hdHRyaWJ1dGlvbiA9IHJlcXVlc3QuaXNBcHBJbml0aWF0ZWQo
KSA/IE5TVVJMUmVxdWVzdEF0dHJpYnV0aW9uRGV2ZWxvcGVyIDogTlNVUkxSZXF1ZXN0QXR0cmli
dXRpb25Vc2VyOwogI2VuZGlmCiAKICAgICBpZiAocGFyYW1ldGVycy5wY21EYXRhQ2FycmllZCkK
QEAgLTM1MSw3ICszNDksOSBAQCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNr
Q29jb2EoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVAogCiAgICAgbnNSZXF1
ZXN0ID0gbXV0YWJsZVJlcXVlc3Q7CiAKLSAgICBtX3Nlc3Npb24tPmFwcEJvdW5kTmF2aWdhdGlv
blRlc3RpbmdEYXRhKCkudXBkYXRlQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEocmVxdWVz
dCwgcmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygpLmlzRW1wdHkoKSA/IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluKHJlcXVlc3QudXJsKCkpIDogV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4ocmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygpKSk7CisjaWYgRU5BQkxFKEFQUF9QUklW
QUNZX1JFUE9SVCkKKyAgICBtX3Nlc3Npb24tPmFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSgp
LmRpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0KG5zUmVxdWVzdC5nZXQoKS5hdHRyaWJ1dGlvbiA9
PSBOU1VSTFJlcXVlc3RBdHRyaWJ1dGlvbkRldmVsb3Blcik7CisjZW5kaWYKIAogICAgIGFwcGx5
U25pZmZpbmdQb2xpY2llc0FuZEJpbmRSZXF1ZXN0VG9JbmZlcmZhY2VJZk5lZWRlZChuc1JlcXVl
c3QsIHBhcmFtZXRlcnMuY29udGVudFNuaWZmaW5nUG9saWN5ID09IFdlYkNvcmU6OkNvbnRlbnRT
bmlmZmluZ1BvbGljeTo6U25pZmZDb250ZW50ICYmICF1cmwuaXNMb2NhbEZpbGUoKSwgcGFyYW1l
dGVycy5jb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSA9PSBXZWJDb3JlOjpDb250ZW50RW5j
b2RpbmdTbmlmZmluZ1BvbGljeTo6U25pZmYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9tZXNzYWdlcy5weQppbmRleCAwNDM2YjAzNmE5OWEyODE1NzJhMGUxZWM3NTU5ZmY2NDNkMzRj
ZDE4Li42N2NjNjhmYTc3M2FiOWI1NjA2YzFiZTEyYjMzYjkwZDYxMzQ2ZmNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTcwMiw3ICs3MDIsNyBAQCBkZWYg
aGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dlYkNvcmU6Okluc3BlY3Rvck92ZXJs
YXk6OkhpZ2hsaWdodCc6IFsnPFdlYkNvcmUvSW5zcGVjdG9yT3ZlcmxheS5oPiddLAogICAgICAg
ICAnV2ViQ29yZTo6S2V5ZnJhbWVWYWx1ZUxpc3QnOiBbJzxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIu
aD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OktleXByZXNzQ29tbWFuZCc6IFsnPFdlYkNvcmUvS2V5
Ym9hcmRFdmVudC5oPiddLAotICAgICAgICAnV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBC
b3VuZCc6IFsnPFdlYkNvcmUvU2VydmljZVdvcmtlckNsaWVudERhdGEuaD4nXSwKKyAgICAgICAg
J1dlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkJzogWyc8V2ViQ29yZS9TZXJ2
aWNlV29ya2VyQ2xpZW50RGF0YS5oPiddLAogICAgICAgICAnV2ViQ29yZTo6TGVnYWN5Q0RNU2Vz
c2lvbkNsaWVudDo6TWVkaWFLZXlFcnJvckNvZGUnOiBbJzxXZWJDb3JlL0xlZ2FjeUNETVNlc3Np
b24uaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkxvY2tCYWNrRm9yd2FyZExpc3QnOiBbJzxXZWJD
b3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6Ok1lc3NhZ2VQb3J0
Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eSc6IFsnPFdlYkNvcmUvTWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXIuaD4nXSwKQEAgLTc1Nyw4ICs3NTcsOCBAQCBkZWYgaGVhZGVyc19mb3JfdHlw
ZSh0eXBlKToKICAgICAgICAgJ1dlYkNvcmU6OldpbGxDb250aW51ZUxvYWRpbmcnOiBbJzxXZWJD
b3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlNlbGVjdGlvbkdl
b21ldHJ5JzogWyciRWRpdG9yU3RhdGUuaCInXSwKICAgICAgICAgJ1dlYktpdDo6QWN0aXZpdHlT
dGF0ZUNoYW5nZUlEJzogWyciRHJhd2luZ0FyZWFJbmZvLmgiJ10sCi0gICAgICAgICdXZWJLaXQ6
OkFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhJzogWyciTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4uaCInXSwKICAgICAgICAgJ1dlYktpdDo6QWxsb3dPdmVyd3JpdGUnOiBbJyJEb3dubG9h
ZElELmgiJ10sCisgICAgICAgICdXZWJLaXQ6OkFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSc6
IFsnIkFwcFByaXZhY3lSZXBvcnQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6QmFja0ZvcndhcmRM
aXN0SXRlbVN0YXRlJzogWyciU2Vzc2lvblN0YXRlLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkNh
bGxEb3dubG9hZERpZFN0YXJ0JzogWyciRG93bmxvYWRNYW5hZ2VyLmgiJ10sCiAgICAgICAgICdX
ZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXInOiBbJyJDb250ZW50V29ybGRTaGFyZWQuaCIn
XSwKQEAgLTc2Niw3ICs3NjYsNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAg
ICAgJ1dlYktpdDo6RmluZE9wdGlvbnMnOiBbJyJXZWJGaW5kT3B0aW9ucy5oIiddLAogICAgICAg
ICAnV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplclN0YXRlJzogWyciR2VzdHVyZVR5cGVzLmgiJ10s
CiAgICAgICAgICdXZWJLaXQ6Okdlc3R1cmVUeXBlJzogWyciR2VzdHVyZVR5cGVzLmgiJ10sCi0g
ICAgICAgICdXZWJLaXQ6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQnOiBbJyJOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbi5oIiddLAorICAgICAgICAnV2ViS2l0OjpMYXN0TmF2aWdhdGlvbldh
c0FwcEluaXRpYXRlZCc6IFsnIkFwcFByaXZhY3lSZXBvcnQuaCInXSwKICAgICAgICAgJ1dlYktp
dDo6TGF5ZXJIb3N0aW5nQ29udGV4dElEJzogWyciTGF5ZXJIb3N0aW5nQ29udGV4dC5oIiddLAog
ICAgICAgICAnV2ViS2l0OjpMYXllckhvc3RpbmdNb2RlJzogWyciTGF5ZXJUcmVlQ29udGV4dC5o
IiddLAogICAgICAgICAnV2ViS2l0OjpQYWdlU3RhdGUnOiBbJyJTZXNzaW9uU3RhdGUuaCInXSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcFByaXZhY3lSZXBvcnQuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FwcFByaXZhY3lSZXBvcnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODA1ZjQx
MjAxODJiNGU2YWE1MGVlNzJiMDc3MGQzZTdmZDIxODdkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQXBwUHJpdmFjeVJlcG9ydC5oCkBAIC0wLDAgKzEsOTIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXIuaCIKKyNp
bmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkRlY29kZXIuaCIKKyNpbmNsdWRl
ICJFbmNvZGVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2VudW0gY2xhc3MgTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0
ZWQgOiBib29sIHsgTm8sIFllcyB9OworCisjaWYgUExBVEZPUk0oQ09DT0EpCitzdHJ1Y3QgQXBw
UHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhIHsKKworICAgIHZvaWQgc2V0RGlkUGVyZm9ybVNvZnRV
cGRhdGUoKQorICAgIHsKKyAgICAgICAgZGlkUGVyZm9ybVNvZnRVcGRhdGUgPSB0cnVlOworICAg
IH0KKworICAgIHZvaWQgY2xlYXJBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoKQorICAgIHsK
KyAgICAgICAgaGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcgPSBmYWxzZTsKKyAg
ICAgICAgaGFzTG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcgPSBmYWxzZTsKKyAg
ICAgICAgZGlkUGVyZm9ybVNvZnRVcGRhdGUgPSBmYWxzZTsKKyAgICB9CisKKyAgICB2b2lkIGRp
ZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0KGJvb2wgaXNBcHBJbml0aWF0ZWQpCisgICAgeworICAg
ICAgICBpc0FwcEluaXRpYXRlZCA/IGhhc0xvYWRlZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5n
ID0gdHJ1ZSA6IGhhc0xvYWRlZE5vbkFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nID0gdHJ1ZTsK
KyAgICB9CisKKyAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0Cisg
ICAgeworICAgICAgICBlbmNvZGVyIDw8IGhhc0xvYWRlZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0
aW5nOworICAgICAgICBlbmNvZGVyIDw8IGhhc0xvYWRlZE5vbkFwcEluaXRpYXRlZFJlcXVlc3RU
ZXN0aW5nOworICAgICAgICBlbmNvZGVyIDw8IGRpZFBlcmZvcm1Tb2Z0VXBkYXRlOworICAgIH0K
KworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YT4g
ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gaGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3Rpbmc7CisgICAgICAgIGRl
Y29kZXIgPj4gaGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3Rpbmc7CisgICAgICAgIGlm
ICghaGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcpCisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gaGFzTG9hZGVk
Tm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3Rpbmc7CisgICAgICAgIGRlY29kZXIgPj4gaGFzTG9h
ZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3Rpbmc7CisgICAgICAgIGlmICghaGFzTG9hZGVk
Tm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZGlkUGVyZm9ybVNvZnRVcGRh
dGU7CisgICAgICAgIGRlY29kZXIgPj4gZGlkUGVyZm9ybVNvZnRVcGRhdGU7CisgICAgICAgIGlm
ICghZGlkUGVyZm9ybVNvZnRVcGRhdGUpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworCisgICAgICAgIHJldHVybiB7eyAqaGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3Rp
bmcsICpoYXNMb2FkZWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZywgKmRpZFBlcmZvcm1T
b2Z0VXBkYXRlIH19OworICAgIH0KKworICAgIGJvb2wgaGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVx
dWVzdFRlc3RpbmcgeyBmYWxzZSB9OworICAgIGJvb2wgaGFzTG9hZGVkTm9uQXBwSW5pdGlhdGVk
UmVxdWVzdFRlc3RpbmcgeyBmYWxzZSB9OworICAgIGJvb2wgZGlkUGVyZm9ybVNvZnRVcGRhdGUg
eyBmYWxzZSB9OworfTsKKyNlbmRpZgorCit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YS5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzdkOGJmYzU4YTM3
MWZjMmRkOTQwMzc2MWJiZmQxZWVmNDExZmIwNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YS5oCkBAIC0wLDAgKzEsOTMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29kZXIu
aCIKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkRlY29kZXIuaCIKKyNp
bmNsdWRlICJFbmNvZGVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitlbnVtIGNsYXNzIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIDogYm9vbCB7
IE5vLCBZZXMgfTsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorc3RydWN0IEFwcFByaXZhY3lSZXBv
cnRUZXN0aW5nRGF0YSB7CisKKyAgICB2b2lkIHNldERpZFBlcmZvcm1Tb2Z0VXBkYXRlKCkKKyAg
ICB7CisgICAgICAgIGRpZFBlcmZvcm1Tb2Z0VXBkYXRlID0gdHJ1ZTsKKyAgICB9CisKKyAgICB2
b2lkIGNsZWFyQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKCkKKyAgICB7CisgICAgICAgIGhh
c0xvYWRlZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nID0gZmFsc2U7CisgICAgICAgIGhhc0xv
YWRlZE5vbkFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nID0gZmFsc2U7CisgICAgICAgIGRpZFBl
cmZvcm1Tb2Z0VXBkYXRlID0gZmFsc2U7CisgICAgfQorCisgICAgdm9pZCBkaWRMb2FkQXBwSW5p
dGlhdGVkUmVxdWVzdChib29sIGlzQXBwSW5pdGlhdGVkKQorICAgIHsKKyAgICAgICAgaXNBcHBJ
bml0aWF0ZWQgPyBoYXNMb2FkZWRBcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZyA9IHRydWUgOiBo
YXNMb2FkZWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZyA9IHRydWU7CisgICAgfQorCisg
ICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorICAgIHsKKyAgICAg
ICAgZW5jb2RlciA8PCBoYXNMb2FkZWRBcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZzsKKyAgICAg
ICAgZW5jb2RlciA8PCBoYXNMb2FkZWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZzsKKyAg
ICAgICAgZW5jb2RlciA8PCBkaWRQZXJmb3JtU29mdFVwZGF0ZTsKKyAgICB9CisKKyAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGE+IGRlY29kZShJUEM6
OkRlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGhh
c0xvYWRlZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nOworICAgICAgICBkZWNvZGVyID4+IGhh
c0xvYWRlZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nOworICAgICAgICBpZiAoIWhhc0xvYWRl
ZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGhhc0xvYWRlZE5vbkFwcEluaXRp
YXRlZFJlcXVlc3RUZXN0aW5nOworICAgICAgICBkZWNvZGVyID4+IGhhc0xvYWRlZE5vbkFwcElu
aXRpYXRlZFJlcXVlc3RUZXN0aW5nOworICAgICAgICBpZiAoIWhhc0xvYWRlZE5vbkFwcEluaXRp
YXRlZFJlcXVlc3RUZXN0aW5nKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGRpZFBlcmZvcm1Tb2Z0VXBkYXRlOworICAgICAg
ICBkZWNvZGVyID4+IGRpZFBlcmZvcm1Tb2Z0VXBkYXRlOworICAgICAgICBpZiAoIWRpZFBlcmZv
cm1Tb2Z0VXBkYXRlKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAg
ICByZXR1cm4ge3sgKmhhc0xvYWRlZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nLCAqaGFzTG9h
ZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcsICpkaWRQZXJmb3JtU29mdFVwZGF0ZSB9
fTsKKyAgICB9CisKKyAgICBib29sIGhhc0xvYWRlZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5n
IHsgZmFsc2UgfTsKKyAgICBib29sIGhhc0xvYWRlZE5vbkFwcEluaXRpYXRlZFJlcXVlc3RUZXN0
aW5nIHsgZmFsc2UgfTsKKyAgICBib29sIGRpZFBlcmZvcm1Tb2Z0VXBkYXRlIHsgZmFsc2UgfTsK
K307CisjZW5kaWYKKworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
Y29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCmluZGV4IDk5MzRiNjExYjU5YmNlYTE2
ZTFkOTY4NmNjNDYxNDNjODMyNGI1MTAuLmFiZGZiMzkyZjFhN2U4NTE4YTFiMzdhMTA3Yjk4YmM4
YjVjYjNiMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVB
cmd1bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dl
YkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCkBAIC02MTAsNyArNjEwLDcgQEAgdm9pZCBBcmd1
bWVudENvZGVyPFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD46OmVuY29kZVBsYXRmb3JtRGF0YShF
bmNvZGVyJiBlbmNvZGUKICAgICBJUEM6OmVuY29kZShlbmNvZGVyLCByZXF1ZXN0VG9TZXJpYWxp
emUuZ2V0KCkpOwogCiAgICAgZW5jb2RlciA8PCByZXNvdXJjZVJlcXVlc3QucmVxdWVzdGVyKCk7
Ci0gICAgZW5jb2RlciA8PCByZXNvdXJjZVJlcXVlc3QuaXNBcHBCb3VuZCgpOworICAgIGVuY29k
ZXIgPDwgcmVzb3VyY2VSZXF1ZXN0LmlzQXBwSW5pdGlhdGVkKCk7CiB9CiAKIGJvb2wgQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGVQbGF0Zm9ybURhdGEoRGVj
b2RlciYgZGVjb2RlciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3Qp
CkBAIC02MzIsMTMgKzYzMiwxMyBAQCBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImIGRlY29kZQogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocmVxdWVzdGVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
Ym9vbCBpc0FwcEJvdW5kOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXNBcHBCb3VuZCkpCisg
ICAgYm9vbCBpc0FwcEluaXRpYXRlZDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzQXBwSW5p
dGlhdGVkKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmVzb3VyY2VSZXF1ZXN0ID0g
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QtPmdldCgpKTsKICAgICByZXNvdXJjZVJl
cXVlc3Quc2V0UmVxdWVzdGVyKHJlcXVlc3Rlcik7Ci0gICAgcmVzb3VyY2VSZXF1ZXN0LnNldElz
QXBwQm91bmQoaXNBcHBCb3VuZCk7CisgICAgcmVzb3VyY2VSZXF1ZXN0LnNldElzQXBwSW5pdGlh
dGVkKGlzQXBwSW5pdGlhdGVkKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmgKaW5kZXggZTM0YWM1
ZTU3ZjQxMWU4YTZkMzAwMmE1NjlhMDMxODA3Y2NmNDQwMC4uNDIzMmUwY2UyM2I0MjVhOWFjM2Uy
OWQyOTQ0MGFjMmNiNDg1MTY1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oCkBAIC0zNSw3MiArMzUsNiBAQAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIGVudW0gY2xhc3MgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gOiBib29sIHsg
Tm8sIFllcyB9OwotZW51bSBjbGFzcyBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIDogYm9vbCB7
IE5vLCBZZXMgfTsKLQotdXNpbmcgQ29udGV4dERvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluOwotdXNpbmcgUmVxdWVzdERvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
OwotCi0jaWYgUExBVEZPUk0oQ09DT0EpCi1zdHJ1Y3QgQXBwQm91bmROYXZpZ2F0aW9uVGVzdGlu
Z0RhdGEgewotCi0gICAgdm9pZCBzZXREaWRQZXJmb3JtU29mdFVwZGF0ZSgpCi0gICAgewotICAg
ICAgICBkaWRQZXJmb3JtU29mdFVwZGF0ZSA9IHRydWU7Ci0gICAgfQotICAgIAotICAgIHZvaWQg
Y2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhVGVzdGluZygpCi0gICAgewotICAgICAgICBoYXNM
b2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nID0gZmFsc2U7Ci0gICAgICAgIGhhc0xvYWRlZE5v
bkFwcEJvdW5kUmVxdWVzdFRlc3RpbmcgPSBmYWxzZTsKLSAgICAgICAgZGlkUGVyZm9ybVNvZnRV
cGRhdGUgPSBmYWxzZTsKLSAgICAgICAgY29udGV4dERhdGEuY2xlYXIoKTsKLSAgICB9Ci0KLSAg
ICB2b2lkIHVwZGF0ZUFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBj
b250ZXh0RG9tYWluKQotICAgIHsKLSAgICAgICAgcmVxdWVzdC5pc0FwcEJvdW5kKCkgPyBoYXNM
b2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nID0gdHJ1ZSA6IGhhc0xvYWRlZE5vbkFwcEJvdW5k
UmVxdWVzdFRlc3RpbmcgPSB0cnVlOwotICAgICAgICBjb250ZXh0RGF0YS5hZGQoV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4ocmVxdWVzdC51cmwoKSksIGNvbnRleHREb21haW4pOwotICAgIH0K
LQotICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKLSAgICB7Ci0g
ICAgICAgIGVuY29kZXIgPDwgaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZzsKLSAgICAg
ICAgZW5jb2RlciA8PCBoYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nOwotICAgICAg
ICBlbmNvZGVyIDw8IGRpZFBlcmZvcm1Tb2Z0VXBkYXRlOwotICAgICAgICBlbmNvZGVyIDw8IGNv
bnRleHREYXRhOwotICAgIH0KLQotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEFwcEJvdW5kTmF2
aWdhdGlvblRlc3RpbmdEYXRhPiBkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQotICAgIHsK
LSAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBoYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0
aW5nOwotICAgICAgICBkZWNvZGVyID4+IGhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3Rpbmc7
Ci0gICAgICAgIGlmICghaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZykKLSAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBo
YXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nOwotICAgICAgICBkZWNvZGVyID4+IGhh
c0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3Rpbmc7Ci0gICAgICAgIGlmICghaGFzTG9hZGVk
Tm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZykKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7Ci0gICAgICAgIAotICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGRpZFBlcmZvcm1Tb2Z0
VXBkYXRlOwotICAgICAgICBkZWNvZGVyID4+IGRpZFBlcmZvcm1Tb2Z0VXBkYXRlOwotICAgICAg
ICBpZiAoIWRpZFBlcmZvcm1Tb2Z0VXBkYXRlKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKLQotICAgICAgICBzdGQ6Om9wdGlvbmFsPEhhc2hNYXA8UmVxdWVzdERvbWFpbiwgQ29u
dGV4dERvbWFpbj4+IGNvbnRleHREYXRhOwotICAgICAgICBkZWNvZGVyID4+IGNvbnRleHREYXRh
OwotICAgICAgICBpZiAoIWNvbnRleHREYXRhKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKLQotICAgICAgICByZXR1cm4ge3sgKmhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3Rp
bmcsICpoYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nLCAqZGlkUGVyZm9ybVNvZnRV
cGRhdGUsIFdURk1vdmUoKmNvbnRleHREYXRhKSB9fTsKLSAgICB9Ci0KLSAgICBib29sIGhhc0xv
YWRlZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcgeyBmYWxzZSB9OwotICAgIGJvb2wgaGFzTG9hZGVk
Tm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZyB7IGZhbHNlIH07Ci0gICAgYm9vbCBkaWRQZXJmb3Jt
U29mdFVwZGF0ZSB7IGZhbHNlIH07Ci0gICAgSGFzaE1hcDxSZXF1ZXN0RG9tYWluLCBDb250ZXh0
RG9tYWluPiBjb250ZXh0RGF0YTsKLX07Ci0jZW5kaWYKIAogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IDZhMjUyMzFm
NmZjMjU4YzFlMzhhYTA1Y2UxMmFhNDQ0ZmQ3MDk2YzguLjJiYWVmMDZjYWNhYjNlNTE1ZTcwNDZk
NTE3YTUzNTZiZjAzYzNjMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC0xNzMsNyArMTczLDcgQEAgdm9pZCBXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
I2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBlbmNvZGVyIDw8IGxpbWl0c05hdmln
YXRpb25zVG9BcHBCb3VuZERvbWFpbnM7CiAjZW5kaWYKLSAgICBlbmNvZGVyIDw8IGxhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQ7CisgICAgZW5jb2RlciA8PCBsYXN0TmF2aWdhdGlvbldhc0FwcElu
aXRpYXRlZDsKICAgICBlbmNvZGVyIDw8IHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nOwogICAgIGVuY29kZXIgPDwgY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2U7CiAKQEAgLTU4MSw3
ICs1ODEsNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OgogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocGFyYW1ldGVycy5saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKSkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbmRpZgotICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cGFyYW1ldGVycy5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKSkKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHBhcmFtZXRlcnMubGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0
ZXJzLnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCBjNThlNmMyMjBi
MWEwMzc2NmFhZTU0ODQ3MmYxNmI3ODNlMDQwMmFjLi42NTE3ODkyMjEyYzIzOTllMWFhYzM2ZWE2
YjZmYzNiMTUyZmQ1ODlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0yNDIsNyArMjQyLDcgQEAgc3RydWN0IFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMgewogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBib29s
IGxpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMgeyBmYWxzZSB9OwogI2VuZGlmCi0g
ICAgYm9vbCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIHsgZmFsc2UgfTsKKyAgICBib29sIGxh
c3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIHsgdHJ1ZSB9OwogICAgIGJvb2wgY2FuVXNlQ3Jl
ZGVudGlhbFN0b3JhZ2UgeyB0cnVlIH07CiAKICAgICBXZWJDb3JlOjpTaG91bGRSZWxheFRoaXJk
UGFydHlDb29raWVCbG9ja2luZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyB7
IFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOjpObyB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggM2U3
NmI2YTA1MTk4NTU1NjQxMjFmNzQ5N2M3MTFlYTg4MWNiZTc5Yi4uMTQxOGUzZDUzOTI1NzI2NjVi
YTNhYTk3MTk2ZTRjYzg5NDA2NTM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0yNDExLDMyICsyNDExLDE5IEBAIHN0YXRpYyB2b2lk
IGNvbnZlcnRBbmRBZGRIaWdobGlnaHQoVmVjdG9yPFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4+
JiBidWZmZXJzLCBOCiAgICAgICAgIF9wYWdlLT5zd2l0Y2hGcm9tU3RhdGljRm9udFJlZ2lzdHJ5
VG9Vc2VyRm9udFJlZ2lzdHJ5KCk7CiB9CiAKLS0gKHZvaWQpX2FwcEJvdW5kTmF2aWdhdGlvbkRh
dGFGb3JEb21haW46KE5TU3RyaW5nICopZG9tYWluIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KShOU1N0cmluZyAqIGNvbnRleHQpKWNvbXBsZXRpb25IYW5kbGVyCistICh2b2lkKV9kaWRMb2Fk
QXBwSW5pdGlhdGVkUmVxdWVzdDoodm9pZCAoXikoQk9PTCByZXN1bHQpKWNvbXBsZXRpb25IYW5k
bGVyCiB7CiAgICAgVEhST1dfSUZfU1VTUEVOREVEOwotICAgIF9wYWdlLT5hcHBCb3VuZE5hdmln
YXRpb25EYXRhKFtyZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
Ojp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChkb21haW4pLCBjb21wbGV0aW9uSGFuZGxlciA9IG1h
a2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChhdXRvJiYgYXBwQm91bmREYXRhKSBtdXRh
YmxlIHsKLSAgICAgICAgaWYgKCFhcHBCb3VuZERhdGEuY29udGV4dERhdGEuY29udGFpbnMocmVn
aXN0cmFibGVEb21haW4pKSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuaWwpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoYXBwQm91bmREYXRhLmNvbnRleHREYXRhLmdldChyZWdpc3RyYWJsZURvbWFpbikuc3RyaW5n
KCkpOwotICAgIH0pOwotfQotCi0tICh2b2lkKV9kaWRMb2FkQXBwQm91bmRSZXF1ZXN0Oih2b2lk
ICheKShCT09MIHJlc3VsdCkpY29tcGxldGlvbkhhbmRsZXIKLXsKLSAgICBUSFJPV19JRl9TVVNQ
RU5ERUQ7Ci0gICAgX3BhZ2UtPmFwcEJvdW5kTmF2aWdhdGlvbkRhdGEoW2NvbXBsZXRpb25IYW5k
bGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8mJiBhcHBCb3VuZERh
dGEpIG11dGFibGUgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhcHBCb3VuZERhdGEuaGFz
TG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZyk7CisgICAgX3BhZ2UtPmFwcFByaXZhY3lSZXBv
cnRUZXN0aW5nRGF0YShbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlv
bkhhbmRsZXIpXSAoYXV0byYmIGFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSkgbXV0YWJsZSB7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YS5o
YXNMb2FkZWRBcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZyk7CiAgICAgfSk7CiB9CiAKLS0gKHZv
aWQpX2RpZExvYWROb25BcHBCb3VuZFJlcXVlc3Q6KHZvaWQgKF4pKEJPT0wgcmVzdWx0KSljb21w
bGV0aW9uSGFuZGxlcgorLSAodm9pZClfZGlkTG9hZE5vbkFwcEluaXRpYXRlZFJlcXVlc3Q6KHZv
aWQgKF4pKEJPT0wgcmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcgogewogICAgIFRIUk9XX0lGX1NV
U1BFTkRFRDsKLSAgICBfcGFnZS0+YXBwQm91bmROYXZpZ2F0aW9uRGF0YShbY29tcGxldGlvbkhh
bmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byYmIGFwcEJvdW5k
RGF0YSkgbXV0YWJsZSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGFwcEJvdW5kRGF0YS5o
YXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nKTsKKyAgICBfcGFnZS0+YXBwUHJpdmFj
eVJlcG9ydFRlc3RpbmdEYXRhKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21w
bGV0aW9uSGFuZGxlcildIChhdXRvJiYgYXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKSBtdXRh
YmxlIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdE
YXRhLmhhc0xvYWRlZE5vbkFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nKTsKICAgICB9KTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmgKaW5kZXggMmUzZTk0NmZmNzA0NjBmMjY2M2E2ODE1Mjg1ZDY3OWE1MWM2YjkzNS4u
ZTJlZWM2NmMyYWFmN2FkZDIzMDkyYmNiZTQ2NmQ1YzgxZTFhMWI5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC00
MDYsOSArNDA2LDggQEAgZm9yIHRoaXMgcHJvcGVydHkuCiAqLwogLSAodm9pZClfc3dpdGNoRnJv
bVN0YXRpY0ZvbnRSZWdpc3RyeVRvVXNlckZvbnRSZWdpc3RyeSBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKDEyLjApKTsKIAotLSAodm9pZClfYXBwQm91bmROYXZpZ2F0aW9uRGF0YUZvckRvbWFpbjoo
TlNTdHJpbmcgKilkb21haW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TU3RyaW5nICog
Y29udGV4dCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMi4wKSwg
aW9zKDE1LjApKTsKLS0gKHZvaWQpX2RpZExvYWRBcHBCb3VuZFJlcXVlc3Q6KHZvaWQgKF4pKEJP
T0wgcmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcjsKLS0gKHZvaWQpX2RpZExvYWROb25BcHBCb3Vu
ZFJlcXVlc3Q6KHZvaWQgKF4pKEJPT0wgcmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZv
aWQpX2RpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0Oih2b2lkICheKShCT09MIHJlc3VsdCkpY29t
cGxldGlvbkhhbmRsZXI7CistICh2b2lkKV9kaWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdDoo
dm9pZCAoXikoQk9PTCByZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyOwogCiAtICh2b2lkKV9zdXNw
ZW5kUGFnZToodm9pZCAoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcygxMi4wKSwgaW9zKDE1LjApKTsKIC0gKHZvaWQpX3Jlc3VtZVBhZ2U6KHZvaWQgKF4p
KEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCksIGlv
cygxNS4wKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oCmluZGV4IGMzMDVmYWY0M2Q0NTE3
NDRkMjI3MTU3M2VmZTk5ODQ0MTU2NGViYTguLjQwODc0ODQ2NmVlYmM5ZDI2Mjk4YzVlNDIyOGFm
NGNkOGJlNjcyZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oCkBAIC0zNCw5ICszNCw5
IEBAIHR5cGVkZWYgZW51bSB7CiAgICAgV0tXZWJWaWV3QXVkaW9Sb3V0aW5nQXJiaXRyYXRpb25T
dGF0dXNBY3RpdmUsCiB9IFdLV2ViVmlld0F1ZGlvUm91dGluZ0FyYml0cmF0aW9uU3RhdHVzOwog
Ci1zdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSB7Ci0gICAgQk9PTCBoYXNM
b2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nOwotICAgIEJPT0wgaGFzTG9hZGVkTm9uQXBwQm91
bmRSZXF1ZXN0VGVzdGluZzsKK3N0cnVjdCBXS0FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSB7
CisgICAgQk9PTCBoYXNMb2FkZWRBcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZzsKKyAgICBCT09M
IGhhc0xvYWRlZE5vbkFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nOwogICAgIEJPT0wgZGlkUGVy
Zm9ybVNvZnRVcGRhdGU7CiB9OwogCkBAIC0xMDIsOSArMTAyLDkgQEAgc3RydWN0IFdLQXBwQm91
bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEgewogLSAodm9pZClfc2V0UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRBdHRyaWJ1dGlvblRva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZzooTlNVUkwgKil1cmwg
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcygxMi4wKSwgaW9zKDE1LjApKTsKIC0gKHZvaWQpX3NldFByaXZhdGVD
bGlja01lYXN1cmVtZW50QXR0cmlidXRpb25Ub2tlblNpZ25hdHVyZVVSTEZvclRlc3Rpbmc6KE5T
VVJMICopdXJsIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5k
bGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCksIGlvcygxNS4wKSk7CiAKLS0gKHZvaWQp
X2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRs
ZXI7Ci0tICh2b2lkKV9hcHBCb3VuZE5hdmlnYXRpb25EYXRhOih2b2lkKF4pKHN0cnVjdCBXS0Fw
cEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhIGRhdGEpKWNvbXBsZXRpb25IYW5kbGVyOwotLSAo
dm9pZClfY2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhOih2b2lkKF4pKHZvaWQpKWNvbXBsZXRp
b25IYW5kbGVyOworLSAodm9pZClfbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6KHZvaWQo
XikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKV9hcHBQcml2YWN5UmVwb3J0VGVz
dGluZ0RhdGE6KHZvaWQoXikoc3RydWN0IFdLQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhIGRh
dGEpKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClfY2xlYXJBcHBQcml2YWN5UmVwb3J0VGVz
dGluZ0RhdGE6KHZvaWQoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXI7CiAKIC0gKHZvaWQpX2Ny
ZWF0ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yRm9yVGVzdGluZzooaWQgPF9XS01lZGlhU2Vzc2lv
bkNvb3JkaW5hdG9yPilwcml2YXRlQ29vcmRpbmF0b3IgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQo
XikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5nLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1Rlc3RpbmcubW0KaW5kZXggYTRiYzYxYTJiZjc3
ZTFmMWRkOGRhZGFkNjQyZmUwYmQzODExYWNjZC4uY2JhZDBlZDg4M2FiZDZhNThhZWQyYmU4Yzk0
Y2UwZWJiMTc1MWVmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld1Rlc3RpbmcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld1Rlc3RpbmcubW0KQEAgLTM2NSwyMyArMzY1LDIzIEBACiAjZW5kaWYK
IH0KIAotLSAodm9pZClfbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDoodm9pZCheKShCT09MKSlj
b21wbGV0aW9uSGFuZGxlcgorLSAodm9pZClfbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6
KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIKIHsKLSAgICBfcGFnZS0+bGFzdE5hdmln
YXRpb25XYXNBcHBCb3VuZChbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxl
dGlvbkhhbmRsZXIpXSAoYm9vbCBpc0FwcEJvdW5kKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGlzQXBwQm91bmQpOworICAgIF9wYWdlLT5sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRl
ZChbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAo
Ym9vbCBpc0FwcEluaXRpYXRlZCkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihpc0FwcElu
aXRpYXRlZCk7CiAgICAgfSk7CiB9CiAKLS0gKHZvaWQpX2FwcEJvdW5kTmF2aWdhdGlvbkRhdGE6
KHZvaWQoXikoc3RydWN0IFdLQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEgZGF0YSkpY29t
cGxldGlvbkhhbmRsZXIKKy0gKHZvaWQpX2FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YToodm9p
ZCheKShzdHJ1Y3QgV0tBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEgZGF0YSkpY29tcGxldGlv
bkhhbmRsZXIKIHsKLSAgICBfcGFnZS0+YXBwQm91bmROYXZpZ2F0aW9uRGF0YShbY29tcGxldGlv
bkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byYmIGFwcEJv
dW5kRGF0YSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IGFwcEJvdW5kRGF0YS5oYXNM
b2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nLCBhcHBCb3VuZERhdGEuaGFzTG9hZGVkTm9uQXBw
Qm91bmRSZXF1ZXN0VGVzdGluZywgYXBwQm91bmREYXRhLmRpZFBlcmZvcm1Tb2Z0VXBkYXRlIH0p
OworICAgIF9wYWdlLT5hcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoW2NvbXBsZXRpb25IYW5k
bGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8mJiBhcHBQcml2YWN5
UmVwb3J0VGVzdGluZ0RhdGEpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyBhcHBQcml2
YWN5UmVwb3J0VGVzdGluZ0RhdGEuaGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3Rpbmcs
IGFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YS5oYXNMb2FkZWROb25BcHBJbml0aWF0ZWRSZXF1
ZXN0VGVzdGluZywgYXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhLmRpZFBlcmZvcm1Tb2Z0VXBk
YXRlIH0pOwogICAgIH0pOwogfQogCi0tICh2b2lkKV9jbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRh
dGE6KHZvaWQoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKKy0gKHZvaWQpX2NsZWFyQXBwUHJp
dmFjeVJlcG9ydFRlc3RpbmdEYXRhOih2b2lkKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCiB7
Ci0gICAgX3BhZ2UtPmNsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YShbY29tcGxldGlvbkhhbmRs
ZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSB7CisgICAgX3BhZ2UtPmNsZWFy
QXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9j
a1B0cihjb21wbGV0aW9uSGFuZGxlcildIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsK
ICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlBhZ2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFn
ZVByb3h5Q29jb2EubW0KaW5kZXggZjliMjc2NTM5OGY3ZmZmMzE0N2M1YmQwYTljMmRkMjRhZWVk
YTEyYi4uYWVmNWNmY2ZiM2I5YTlmNDA0M2E4ZDU3ODg4NjIwYTkyNzE2YzBjNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KQEAg
LTY1MCwyMCArNjUwLDE4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0QWN0aXZlTm93UGxh
eWluZ1Nlc3Npb25JbmZvKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vCiAgICAgc2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0QWN0aXZlTm93UGxheWluZ1Nlc3Np
b25JbmZvKCksIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNl
dExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQordm9p
ZCBXZWJQYWdlUHJveHk6OnNldExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCkKIHsKICNpZiBFTkFCTEUoQVBQX1BSSVZBQ1lfUkVQT1JUKQotICAg
IGF1dG8gKm5zUmVxdWVzdCA9IHJlcXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5
VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KTsKLSAgICBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19CRUdJTgotICAgIHJlcXVlc3Quc2V0SXNBcHBCb3VuZCghbnNSZXF1ZXN0
Ll9pc05vbkFwcEluaXRpYXRlZCk7Ci0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
RU5ECisgICAgYXV0byBpc0FwcEluaXRpYXRlZCA9IHJlcXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNv
cmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KS5hdHRyaWJ1dGlv
biA9PSBOU1VSTFJlcXVlc3RBdHRyaWJ1dGlvbkRldmVsb3BlcjsKKyAgICByZXF1ZXN0LnNldElz
QXBwSW5pdGlhdGVkKGlzQXBwSW5pdGlhdGVkKTsKKyAgICBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBw
SW5pdGlhdGVkID0gaXNBcHBJbml0aWF0ZWQ7CiAjZW5kaWYKLSAgICBtX2xhc3ROYXZpZ2F0aW9u
V2FzQXBwQm91bmQgPSByZXF1ZXN0LmlzQXBwQm91bmQoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJv
eHk6Omxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFnZVByb3h5OjpsYXN0TmF2aWdhdGlv
bldhc0FwcEluaXRpYXRlZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewotICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6
TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpMYXN0TmF2aWdhdGlv
bldhc0FwcEluaXRpYXRlZCgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpncmFudEFjY2Vzc1RvQXNzZXRTZXJ2aWNlcygpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cAppbmRleCA3MmM0YTlmOWE3ZTVkMmRiNTlkMzg1NzMyYzkyNTZmOTk1NmJkNDQzLi45NThjMWI4
M2I2OGY1NGI2NTMwYjlhMjhkODkxMmE1Y2Q4YjExMGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTE1
MDIsMTEgKzE1MDIsMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXRMb2NhbFN0b3Jh
Z2VEZXRhaWxzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGwKICAgICBzZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpHZXRMb2NhbFN0b3JhZ2VPcmlnaW5E
ZXRhaWxzKHNlc3Npb25JRCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciB3ZWJQYWdlSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJB
Z2VudCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3ksIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4sIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgbGFzdE5hdmln
YXRpb25XYXNBcHBCb3VuZCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cHJlY29ubmVjdFRv
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdl
UHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBMYXN0TmF2aWdhdGlv
bldhc0FwcEluaXRpYXRlZCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCkKIHsKICAgICBp
ZiAoIXVybC5pc1ZhbGlkKCkgfHwgIXVybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpCiAgICAg
ICAgIHJldHVybjsKLSAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UHJlY29ubmVj
dFRvKHNlc3Npb25JRCwgd2ViUGFnZVByb3h5SUQsIHdlYlBhZ2VJRCwgdXJsLCB1c2VyQWdlbnQs
IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBs
YXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKSwgMCk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3M6OlByZWNvbm5lY3RUbyhzZXNzaW9uSUQsIHdlYlBhZ2VQcm94eUlELCB3ZWJQYWdl
SUQsIHVybCwgdXNlckFnZW50LCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbiwgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpLCAwKTsKIH0K
IAogc3RhdGljIGJvb2wgYW55UHJvY2Vzc1Bvb2xIYXNGb3JlZ3JvdW5kV2ViUHJvY2Vzc2VzKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmgKaW5kZXggOGNmZTUzYmI0OTRmOGNjY2Y0YTczNjRlODllNGZlYTAzY2MwNTEwMy4u
YjAxYWFmMjczNTQxMDZmMjlhNGRkYjk1ZDBjMTBkYzI0OWEzNzVmZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAg
LTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJBcHBQcml2YWN5UmVw
b3J0LmgiCiAjaW5jbHVkZSAiQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiQ2Fs
bGJhY2tJRC5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlc1JlcGxpZXMu
aCIKQEAgLTEyOCw3ICsxMjksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdldExvY2FsU3RvcmFn
ZURldGFpbHMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPExv
Y2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlscz4mJik+JiYpOwogCi0gICAg
dm9pZCBwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBXZWJD
b3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbj4sIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOworICAgIHZvaWQgcHJl
Y29ubmVjdFRvKFBBTDo6U2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6U3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4+LCBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk7CiAKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIHZvaWQgY2xlYXJQcmV2YWxlbnRSZXNvdXJjZShQ
QUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5k
ZXggYTcxODg1YmE0NmI2ZDhjMzcwY2YyM2Q0MmI4MWU2ZWU4ZmNmZWQ2OS4uNTJiYWEzZTVhNWEz
ZDIyZGI5MzllZTZmZDRhNWI0OTg4ZDA2ZjYzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCkBAIC0xMzMyLDcgKzEzMzIsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0
aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IFNobwogICAgICAgICBuYXZpZ2F0aW9uLT5zZXRDbGllbnROYXZpZ2F0aW9uQWN0aXZpdHkocHJv
Y2VzcygpLnRocm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eSgiQ2xpZW50IG5hdmlnYXRpb24i
X3MpKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHNldExhc3ROYXZpZ2F0aW9uV2FzQXBw
Qm91bmQocmVxdWVzdCk7CisgICAgc2V0TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQocmVx
dWVzdCk7CiAjZW5kaWYKIAogICAgIGxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQobV9w
cm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIG5hdmlnYXRpb24uZ2V0KCksIFdURk1vdmUo
cmVxdWVzdCksIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHVzZXJEYXRhLCBTaG91bGRU
cmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCkp
OwpAQCAtNDUyNyw3ICs0NTI3LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnByZWNvbm5lY3RUbyhj
b25zdCBVUkwmIHVybCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBzdG9yZWRDcmVkZW50
aWFsc1BvbGljeSA9IG1fY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UgPyBXZWJDb3JlOjpTdG9yZWRD
cmVkZW50aWFsc1BvbGljeTo6VXNlIDogV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6
OkRvTm90VXNlOwotICAgIHdlYnNpdGVEYXRhU3RvcmUoKS5uZXR3b3JrUHJvY2VzcygpLnByZWNv
bm5lY3RUbyhzZXNzaW9uSUQoKSwgaWRlbnRpZmllcigpLCB3ZWJQYWdlSUQoKSwgdXJsLCB1c2Vy
QWdlbnQoKSwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4oKSwgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kID8gTGFzdE5hdmlnYXRpb25XYXNB
cHBCb3VuZDo6WWVzIDogTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDo6Tm8pOworCisgICAgd2Vi
c2l0ZURhdGFTdG9yZSgpLm5ldHdvcmtQcm9jZXNzKCkucHJlY29ubmVjdFRvKHNlc3Npb25JRCgp
LCBpZGVudGlmaWVyKCksIHdlYlBhZ2VJRCgpLCB1cmwsIHVzZXJBZ2VudCgpLCBzdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBtX2xhc3ROYXZp
Z2F0aW9uV2FzQXBwSW5pdGlhdGVkID8gTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6Olll
cyA6IExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpObyk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRDYW5Vc2VDcmVkZW50aWFsU3RvcmFnZShib29sIGNhblVzZUNyZWRlbnRpYWxT
dG9yYWdlKQpAQCAtODE5MSw3ICs4MTkyLDcgQEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBX
ZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyhXZWJQcm9jZXNzUHJveHkmIHByb2MKICNp
ZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgcGFyYW1ldGVycy5saW1pdHNOYXZpZ2F0
aW9uc1RvQXBwQm91bmREb21haW5zID0gbV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21h
aW5zOwogI2VuZGlmCi0gICAgcGFyYW1ldGVycy5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kID0g
bV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOworICAgIHBhcmFtZXRlcnMubGFzdE5hdmlnYXRp
b25XYXNBcHBJbml0aWF0ZWQgPSBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOwogICAg
IHBhcmFtZXRlcnMuc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcgPSBtX2NvbmZp
Z3VyYXRpb24tPnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKCk7CiAgICAgcGFy
YW1ldGVycy5jYW5Vc2VDcmVkZW50aWFsU3RvcmFnZSA9IG1fY2FuVXNlQ3JlZGVudGlhbFN0b3Jh
Z2U7CiAKQEAgLTEwNzAzLDE0ICsxMDcwNCwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRl
TWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IoUmVmPE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJveAog
I2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLXZvaWQgV2ViUGFnZVByb3h5OjphcHBCb3Vu
ZE5hdmlnYXRpb25EYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgQXBwQm91bmROYXZp
Z2F0aW9uVGVzdGluZ0RhdGEmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFnZVBy
b3h5OjphcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKLSAgICB3ZWJzaXRlRGF0YVN0b3JlKCkubmV0d29ya1Byb2Nlc3MoKS5zZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpBcHBCb3VuZE5hdmlnYXRpb25EYXRhKG1f
d2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCkpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CisgICAgd2Vic2l0ZURhdGFTdG9yZSgpLm5ldHdvcmtQcm9jZXNzKCkuc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6QXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdE
YXRhKG1fd2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCkpLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpjbGVhckFwcEJvdW5kTmF2aWdhdGlv
bkRhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBXZWJQYWdlUHJveHk6OmNsZWFyQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICB3ZWJzaXRlRGF0
YVN0b3JlKCkubmV0d29ya1Byb2Nlc3MoKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5l
dHdvcmtQcm9jZXNzOjpDbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGEobV93ZWJzaXRlRGF0YVN0
b3JlLT5zZXNzaW9uSUQoKSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB3ZWJz
aXRlRGF0YVN0b3JlKCkubmV0d29ya1Byb2Nlc3MoKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzOjpDbGVhckFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YShtX3dl
YnNpdGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXgg
ZWM1ZDBjZjA1ZTNiNDM1NDdhZjU5M2RkNjUzN2MwMzc4MTdlNmE5ZS4uNjJlOTI3Y2M0NzYxOGI3
NjJhZDJkMzViNTA4N2RhNjE5YTA5ODU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKQEAgLTM3Myw3ICszNzMsNyBAQCBjbGFzcyBXZWJXaGVlbEV2ZW50OwogY2xhc3Mg
V2ViV2hlZWxFdmVudENvYWxlc2NlcjsKIGNsYXNzIFdlYnNpdGVEYXRhU3RvcmU7CiAKLXN0cnVj
dCBBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YTsKK3N0cnVjdCBBcHBQcml2YWN5UmVwb3J0
VGVzdGluZ0RhdGE7CiBzdHJ1Y3QgRGF0YURldGVjdGlvblJlc3VsdDsKIHN0cnVjdCBEb2N1bWVu
dEVkaXRpbmdDb250ZXh0Owogc3RydWN0IERvY3VtZW50RWRpdGluZ0NvbnRleHRSZXF1ZXN0OwpA
QCAtMTkyNiwxMCArMTkyNiwxMCBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENP
Q09BKQotICAgIHZvaWQgc2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmKTsKLSAgICB2b2lkIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBhcHBCb3VuZE5hdmlnYXRpb25E
YXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgQXBwQm91bmROYXZpZ2F0aW9uVGVzdGlu
Z0RhdGEmKT4mJik7Ci0gICAgdm9pZCBjbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGEoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldExhc3ROYXZpZ2F0aW9uV2FzQXBw
SW5pdGlhdGVkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworICAgIHZvaWQgbGFzdE5hdmln
YXRpb25XYXNBcHBJbml0aWF0ZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Cisg
ICAgdm9pZCBhcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEmKT4mJik7CisgICAgdm9pZCBjbGVh
ckFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogCiAgICAgTlNEaWN0aW9uYXJ5ICpjb250ZW50c09mVXNlckludGVyZmFjZUl0ZW0oTlNTdHJp
bmcgKnVzZXJJbnRlcmZhY2VJdGVtKTsKIApAQCAtMzAzNiw3ICszMDM2LDcgQEAgcHJpdmF0ZToK
IAogICAgIHNpemVfdCBtX3N1c3BlbmRNZWRpYVBsYXliYWNrQ291bnRlciB7IDAgfTsKIAotICAg
IGJvb2wgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIHsgZmFsc2UgfTsKKyAgICBib29sIG1f
bGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgeyB0cnVlIH07CiAgICAgYm9vbCBtX2lzUnVu
bmluZ01vZGFsSmF2YVNjcmlwdERpYWxvZyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzU3VzcGVu
ZGVkIHsgZmFsc2UgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggYzA5MzVjNTI0ZGNiNDg1Y2FiNWM0MDAwOGM4ZGVjYjMzM2JjNDVh
OC4uNDE0MDQ0ODFlOTgwNWVmNzExNzBjMjcxZGUyNGMxNjBlYzA2YWRiOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05ODcsNiArOTg3
LDcgQEAKIAkJNDZERjA2M0MxRjM5MDVGODAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0
Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDZERjA2M0ExRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5o
ICovOyB9OwogCQk0NkYzOEU4QzI0MTZFNjczMDA1OTM3NUEgLyogUnVubmluZ0JvYXJkU2Vydmlj
ZXNTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
RjM4RThCMjQxNkU2NkQwMDU5Mzc1QSAvKiBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oICovOyB9
OwogCQk0NkY5QjI2MzIzNTI2RUYzMDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkY5QjI2
MjIzNTI2RUQwMDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmggKi87IH07CisJ
CTQ5MzEwMkJEMjY4M0YzRDAwMDJCQjg4NSAvKiBBcHBQcml2YWN5UmVwb3J0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTMxMDJCQzI2ODNGM0E1MDAy
QkI4ODUgLyogQXBwUHJpdmFjeVJlcG9ydC5oICovOyB9OwogCQk0OTczREY0ODI0MjI5NDFGMDBF
NEMyNkEgLyogTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5NzNERjQ3MjQyMjk0MUYwMEU0QzI2QSAvKiBO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oICovOyB9OwogCQk0OTkwMDAyMTI0RDI0MjlDMDAw
NDlDQjQgLyogV0tSZW5kZXJMYXllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDk5MDAwMUYyNEQyNDI5QzAwMDQ5Q0I0IC8qIFdLUmVuZGVyTGF5ZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0OTkw
MDAyNDI0RDI0QzI5MDAwNDlDQjQgLyogV0tSZW5kZXJPYmplY3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OTAwMDIzMjREMjRDMUMwMDA0OUNCNCAv
KiBXS1JlbmRlck9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC0zOTM0LDYgKzM5MzUsNyBAQAogCQk0NkRGMDYzQTFGMzkwNUU1MDAxOTgw
QkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NkYzOEU4QjI0MTZFNjZEMDA1OTM3NUEgLyogUnVubmluZ0JvYXJk
U2VydmljZXNTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUnVubmluZ0Jv
YXJkU2VydmljZXNTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZGOUIyNjIy
MzUyNkVEMDAwNkZFNUZBIC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDkzMTAyQkMyNjgzRjNBNTAwMkJCODg1IC8qIEFwcFBy
aXZhY3lSZXBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXBwUHJpdmFjeVJlcG9ydC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0OTczREY0NzI0MjI5NDFGMDBFNEMyNkEgLyogTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDk5MDAwMUUyNEQyNDI5
QzAwMDQ5Q0I0IC8qIFdLUmVuZGVyTGF5ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tSZW5k
ZXJMYXllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5OTAwMDFGMjREMjQy
OUMwMDA0OUNCNCAvKiBXS1JlbmRlckxheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUmVuZGVyTGF5
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY3MDAsNiArNjcwMiw3IEBACiAJ
CQkJQkMzMjlEOTkxNkFDQ0U5OTAwMzE2REUyIC8qIEFQSVdlYkFyY2hpdmUubW0gKi8sCiAJCQkJ
QkMzMjlEOUYxNkFDRDQ3ODAwMzE2REUyIC8qIEFQSVdlYkFyY2hpdmVSZXNvdXJjZS5oICovLAog
CQkJCUJDMzI5RDlFMTZBQ0Q0NzgwMDMxNkRFMiAvKiBBUElXZWJBcmNoaXZlUmVzb3VyY2UubW0g
Ki8sCisJCQkJNDkzMTAyQkMyNjgzRjNBNTAwMkJCODg1IC8qIEFwcFByaXZhY3lSZXBvcnQuaCAq
LywKIAkJCQk1MTVFNzcyNTE4M0RENkY2MDAwNzIwM0YgLyogQXN5bmNSZXF1ZXN0LmNwcCAqLywK
IAkJCQk1MTVFNzcyNjE4M0RENkY2MDAwNzIwM0YgLyogQXN5bmNSZXF1ZXN0LmggKi8sCiAJCQkJ
MUEyRDk1NkUxMjg0ODU2NDAwMUVCOTYyIC8qIEF1eGlsaWFyeVByb2Nlc3MuY3BwICovLApAQCAt
MTE4ODAsNiArMTE4ODMsNyBAQAogCQkJCUY0OEQyQTg1MjE1ODNBN0UwMEM2NzUyQiAvKiBBcHBL
aXRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0RUM5NEUzMjM1NkNDNTcwMDBCQjYxNCAvKiBB
cHBsaWNhdGlvblNlcnZpY2VzU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUQ0QzE5MzFCMzlG
MzMyMDBBQkMyOEUgLyogQXBwbGljYXRpb25TdGF0ZVRyYWNrZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCTQ5MzEwMkJEMjY4M0YzRDAwMDJCQjg4NSAvKiBBcHBQcml2YWN5UmVwb3J0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQUVGRDI3OTExRDE2QzgxMDA4MjE5RDMgLyogQXJndW1lbnRDb2Rlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFRkQyRjcxMUQxODA3QjAwODIxOUQzIC8qIEFyZ3VtZW50
Q29kZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUFGMEM0QTEyQjE2MzM0MDA4RTQ5RTIgLyog
QXJndW1lbnRDb2RlcnNDRi5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNDEyOCw3ICsxNDEzMiw2IEBA
CiAJCQkJQ0RBOTNEQjEyMkY4QkNGNDAwNDkwQTY5IC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hldXJp
c3RpY1BhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzFBMTUyRDcyNEU1QTI5QTAw
OTc4QzhCIC8qIEhhbmRsZVhQQ0VuZHBvaW50TWVzc2FnZXMubW0gaW4gU291cmNlcyAqLywKIAkJ
CQkyNzQ5RjY0NDIxNDY1NjFCMDA4MzgwQkYgLyogSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNw
cCBpbiBTb3VyY2VzICovLAotCQkJCUNERjFCOTFCMjY3MDI1NTUwMDA3RUMxMCAvKiBXZWJLaXRT
d2lmdFNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMjc0OUY2NDUyMTQ2NTYxRTAwODM4
MEJGIC8qIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OUJGNUVDNjQyNTQxMTQ1NjAwOTg0RTc3IC8qIEpTSVBDQmluZGluZy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkyRDkxMzQ0MTIxMkNGOUYwMDAxMjhBRkQgLyogSlNOUE1ldGhvZC5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTE0NDcyLDYgKzE0NDc1LDcgQEAKIAkJCQkxQTYyODBGMzE5MTk5ODJBMDA2
QUQ5RjkgLyogV2ViS2l0Lm0gaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc4QjIxMkI2QUIxMDBG
NDkzRkQgLyogV2ViS2l0MkluaXRpYWxpemUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTE4MUE3
OTgyMUFDQzc0QjAwNTlBMzE2IC8qIFdlYktpdEFkZGl0aW9ucy5tbSBpbiBTb3VyY2VzICovLAor
CQkJCUNERjFCOTFCMjY3MDI1NTUwMDA3RUMxMCAvKiBXZWJLaXRTd2lmdFNvZnRMaW5rLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTFGMDYwRTExNjU0MzE4NTAwRjMyODJGIC8qIFdlYk1ETlNSZWdp
c3Rlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDkyQTc4QzIxMkI2
QUIxMDBGNDkzRkQgLyogV2ViTW91c2VFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMUJB
OTI0RDE0ODgzMTI2MDA2MkVEQjUgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCBjNDJkMmMwMGY3OTgyZWEz
ZmUxOTQwMWNkMDc2YzI0YTBiNjQ5ZWJmLi42MGU2YTJiNDgwZmNhZDExMGYzZGFlODRiMDU0OTU2
NTM1NzZmN2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgdm9pZCBXZWJMb2Fk
ZXJTdHJhdGVneTo6bG9hZFJlc291cmNlKEZyYW1lJiBmcmFtZSwgQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlLCBSZXMKICAgICBpZiAocmVzb3VyY2UudHlwZSgpICE9IENhY2hlZFJlc291cmNlOjpU
eXBlOjpNYWluUmVzb3VyY2UgfHwgIWZyYW1lLmlzTWFpbkZyYW1lKCkpIHsKICAgICAgICAgaWYg
KGF1dG8qIGRvY3VtZW50ID0gZnJhbWUubWFpbkZyYW1lKCkuZG9jdW1lbnQoKSkgewogICAgICAg
ICAgICAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LT5sb2FkZXIoKSkKLSAgICAgICAgICAgICAg
ICByZXF1ZXN0LnNldElzQXBwQm91bmQoZG9jdW1lbnQtPmxvYWRlcigpLT5sYXN0TmF2aWdhdGlv
bldhc0FwcEJvdW5kKCkpOworICAgICAgICAgICAgICAgIHJlcXVlc3Quc2V0SXNBcHBJbml0aWF0
ZWQoZG9jdW1lbnQtPmxvYWRlcigpLT5sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCgpKTsK
ICAgICAgICAgfQogICAgIH0KIApAQCAtNzY3LDcgKzc2Nyw3IEBAIHZvaWQgV2ViTG9hZGVyU3Ry
YXRlZ3k6OnByZWNvbm5lY3RUbyhXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBX
ZWJQYWdlCiAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gd2ViUGFnZS5tYWluRnJhbWUoKS0+ZG9j
dW1lbnQoKSkgewogICAgICAgICByZXF1ZXN0LnNldEZpcnN0UGFydHlGb3JDb29raWVzKGRvY3Vt
ZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpKTsKICAgICAgICAgaWYgKGF1dG8qIGxvYWRlciA9
IGRvY3VtZW50LT5sb2FkZXIoKSkKLSAgICAgICAgICAgIHJlcXVlc3Quc2V0SXNBcHBCb3VuZChs
b2FkZXItPmxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoKSk7CisgICAgICAgICAgICByZXF1ZXN0
LnNldElzQXBwSW5pdGlhdGVkKGxvYWRlci0+bGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQo
KSk7CiAgICAgfQogCiAgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gcHJlY29ubmVjdGlvbklk
ZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggNjM4NDEx
N2NkNWUxNTUxNmQwOThjZWFiMDZkM2M1NDliN2QxYzhkYi4uZjk5M2VmYzFlYTNhNzI5NTBmMjdi
M2MwOWMxNjI1ZDExYTJiNjRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNw
cApAQCAtMTM1LDEwICsxMzUsMTAgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6dXBkYXRlUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1MKICAgICBzZXRT
aG91bGRVc2VTaG9ydFRpbWVvdXQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVu
Y2VzS2V5OjpzaG91bGRVc2VTZXJ2aWNlV29ya2VyU2hvcnRUaW1lb3V0S2V5KCkpKTsKIH0KIAot
dm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6dXBkYXRlQXBwQm91bmRWYWx1ZShT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6
TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKQordm9p
ZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6dXBkYXRlQXBwSW5pdGlhdGVkVmFsdWUo
U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6
Okxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlh
dGVkKQogewogICAgIGlmIChhdXRvKiBzZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgPSBTV0NvbnRl
eHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkoc2VydmljZVdv
cmtlcklkZW50aWZpZXIpKQotICAgICAgICBzZXJ2aWNlV29ya2VyVGhyZWFkUHJveHktPnNldExh
c3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQobGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCA9PSBXZWJD
b3JlOjpMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOjpZZXMpOworICAgICAgICBzZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHktPnNldExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKGxhc3ROYXZp
Z2F0aW9uV2FzQXBwSW5pdGlhdGVkID09IFdlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5p
dGlhdGVkOjpZZXMpOwogfQogCiB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpp
bnN0YWxsU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBkYXRhLCBTdHJp
bmcmJiB1c2VyQWdlbnQpCkBAIC0yMzQsNyArMjM0LDcgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaChTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNl
cnYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eS0+c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZChyZXF1ZXN0LmlzQXBwQm91bmQoKSk7Cisg
ICAgc2VydmljZVdvcmtlclRocmVhZFByb3h5LT5zZXRMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRp
YXRlZChyZXF1ZXN0LmlzQXBwSW5pdGlhdGVkKCkpOwogCiAgICAgaWYgKCFpc1ZhbGlkRmV0Y2go
cmVxdWVzdCwgb3B0aW9ucywgc2VydmljZVdvcmtlclRocmVhZFByb3h5LT5zY3JpcHRVUkwoKSwg
cmVmZXJyZXIpKSB7CiAgICAgICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZE5vdEhhbmRsZSB7IH0sIGZldGNo
SWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAppbmRleCAzMzE0MzM5
ZTA5M2JjNjVjNzJkYmE1MmNlYWRhYWM3NDUyZjFjZGM5Li5lMDIwNTdlODExYzFlODZkMmY1ZWVk
Mjc0ZTMyMGFjZDViZmY3MzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAg
LTg2LDcgKzg2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNlcnZpY2VXb3JrZXJTdGFydGVkKHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiwgV2Vi
Q29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgZG9lc0hhbmRsZUZldGNoKSBmaW5h
bDsKICAgICB2b2lkIHNlcnZpY2VXb3JrZXJGYWlsZWRUb1N0YXJ0KHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiwgV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXhjZXB0aW9uTWVzc2FnZSkgZmluYWw7CiAg
ICAgdm9pZCBpbnN0YWxsU2VydmljZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEmJiwgU3RyaW5nJiYgdXNlckFnZW50KTsKLSAgICB2b2lkIHVwZGF0ZUFwcEJvdW5kVmFs
dWUoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6Okxhc3ROYXZpZ2F0
aW9uV2FzQXBwQm91bmQpOworICAgIHZvaWQgdXBkYXRlQXBwSW5pdGlhdGVkVmFsdWUoV2ViQ29y
ZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2FzQXBw
SW5pdGlhdGVkKTsKICAgICB2b2lkIHN0YXJ0RmV0Y2goV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6
OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OkZl
dGNoT3B0aW9ucyYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYsIFN0cmluZyYmIHJlZmVycmVy
KTsKICAgICB2b2lkIGNhbmNlbEZldGNoKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElk
ZW50aWZpZXIpOwogICAgIHZvaWQgY29udGludWVEaWRSZWNlaXZlRmV0Y2hSZXNwb25zZShXZWJD
b3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggZjY2NGE0ZTkxMjJjMTUxZTJj
NTY3NTUwOTA1ZWM5NTAyNTc3YmIxYS4uM2UyMGRlMzU0YmM0M2Q4NGFiNDkwNDIzNDVjOTdlYjky
ZWVmM2Y2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4KQEAgLTI0LDcgKzI0LDcgQEAKIAogbWVzc2FnZXMgLT4gV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CiAgICAgSW5zdGFsbFNlcnZpY2VXb3JrZXIoc3Ry
dWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBjb250ZXh0RGF0YSwgU3RyaW5n
IHVzZXJBZ2VudCkKLSAgICBVcGRhdGVBcHBCb3VuZFZhbHVlKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBlbnVtOmJvb2wgV2ViQ29yZTo6
TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKQorICAg
IFVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBlbnVtOmJvb2wgV2ViQ29yZTo6TGFzdE5hdmlnYXRp
b25XYXNBcHBJbml0aWF0ZWQgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpCiAgICAgU3Rh
cnRGZXRjaChXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmll
ciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHN0cnVjdCBXZWJDb3JlOjpGZXRj
aE9wdGlvbnMgb3B0aW9ucywgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXF1ZXN0Qm9keSwgU3Ry
aW5nIHJlZmVycmVyKQogICAgIENhbmNlbEZldGNoKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlv
bklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElk
ZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyKQogICAgIENvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVz
cG9uc2UoV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdv
cmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA1ZGEyYmI5ZjRhMmQ3ZDQyM2Jl
ZTg1NDQ3MWZlODUzZDNlNGEyNjFkLi44OGVhNjYyZTA2MjNmZjlkNzkzN2Q4YmExMGViNjUzMjNj
M2VlM2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTI0MywxMSArMjQz
LDExIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0
KERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uCiAgICAgLy8gVGhlIEFQSSBjYW4gcmV0dXJu
IGEgY29tcGxldGVseSBuZXcgcmVxdWVzdC4gV2Ugc2hvdWxkIGVuc3VyZSB0aGF0IGF0IGxlYXN0
IHRoZSByZXF1ZXN0ZXIKICAgICAvLyBpcyBrZXB0LCBzbyB0aGF0IGlmIHRoaXMgaXMgYSBtYWlu
IHJlc291cmNlIGxvYWQgaXQncyBzdGlsbCBjb25zaWRlcmVkIGFzIHN1Y2guCiAgICAgYXV0byBy
ZXF1ZXN0ZXIgPSByZXF1ZXN0LnJlcXVlc3RlcigpOwotICAgIGF1dG8gYXBwQm91bmRWYWx1ZSA9
IHJlcXVlc3QuaXNBcHBCb3VuZCgpOworICAgIGF1dG8gYXBwSW5pdGlhdGVkVmFsdWUgPSByZXF1
ZXN0LmlzQXBwSW5pdGlhdGVkKCk7CiAgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVSZXNvdXJj
ZUxvYWRDbGllbnQoKS53aWxsU2VuZFJlcXVlc3RGb3JGcmFtZSgqd2ViUGFnZSwgbV9mcmFtZSwg
aWRlbnRpZmllciwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CiAgICAgaWYgKCFyZXF1ZXN0
LmlzTnVsbCgpKSB7CiAgICAgICAgIHJlcXVlc3Quc2V0UmVxdWVzdGVyKHJlcXVlc3Rlcik7Ci0g
ICAgICAgIHJlcXVlc3Quc2V0SXNBcHBCb3VuZChhcHBCb3VuZFZhbHVlKTsKKyAgICAgICAgcmVx
dWVzdC5zZXRJc0FwcEluaXRpYXRlZChhcHBJbml0aWF0ZWRWYWx1ZSk7CiAgICAgfQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDM3YjQz
ZTljN2M1ZjJkN2MwOTdmMzhkMGZkNjBmOWNjOGI0ZTZkMTguLjgzYmM5NzQwZDZmNDdlZTBlNjE5
NGQ0Yjg2MjFlM2ExYjA4NzgwZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCkBAIC01MzQsNyArNTM0LDcgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdl
SWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJz
KQogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICAsIG1fbGltaXRzTmF2aWdhdGlv
bnNUb0FwcEJvdW5kRG9tYWlucyhwYXJhbWV0ZXJzLmxpbWl0c05hdmlnYXRpb25zVG9BcHBCb3Vu
ZERvbWFpbnMpCiAjZW5kaWYKLSAgICAsIG1fbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZChwYXJh
bWV0ZXJzLmxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpCisgICAgLCBtX2xhc3ROYXZpZ2F0aW9u
V2FzQXBwSW5pdGlhdGVkKHBhcmFtZXRlcnMubGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQp
CiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQogICAgICwgbV9hcHBIaWdobGlnaHRzVmlzaWJs
ZShwYXJhbWV0ZXJzLmFwcEhpZ2hsaWdodHNWaXNpYmxlKQogI2VuZGlmCkBAIC0xNjY0LDcgKzE2
NjQsNyBAQCB2b2lkIFdlYlBhZ2U6OnBsYXRmb3JtRGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKGNv
bnN0IExvYWRQYXJhbWV0ZXJzJiBsb2FkUGFyYW1ldAogCiB2b2lkIFdlYlBhZ2U6OmxvYWRSZXF1
ZXN0KExvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMpCiB7Ci0gICAgc2V0TGFzdE5hdmln
YXRpb25XYXNBcHBCb3VuZChsb2FkUGFyYW1ldGVycy5yZXF1ZXN0LmlzQXBwQm91bmQoKSk7Cisg
ICAgc2V0TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQobG9hZFBhcmFtZXRlcnMucmVxdWVz
dC5pc0FwcEluaXRpYXRlZCgpKTsKIAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAg
ICBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKGxvYWRQYXJhbWV0ZXJzLmlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4sICZtX21haW5GcmFtZS5nZXQoKSk7CkBAIC02NjE3LDcgKzY2
MTcsNyBAQCBSZWY8RG9jdW1lbnRMb2FkZXI+IFdlYlBhZ2U6OmNyZWF0ZURvY3VtZW50TG9hZGVy
KEZyYW1lJiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZQogewogICAgIFJlZjxXZWJEb2N1bWVudExv
YWRlcj4gZG9jdW1lbnRMb2FkZXIgPSBXZWJEb2N1bWVudExvYWRlcjo6Y3JlYXRlKHJlcXVlc3Qs
IHN1YnN0aXR1dGVEYXRhKTsKIAotICAgIGRvY3VtZW50TG9hZGVyLT5zZXRMYXN0TmF2aWdhdGlv
bldhc0FwcEJvdW5kKG1fbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk7CisgICAgZG9jdW1lbnRM
b2FkZXItPnNldExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKG1fbGFzdE5hdmlnYXRpb25X
YXNBcHBJbml0aWF0ZWQpOwogCiAgICAgaWYgKGZyYW1lLmlzTWFpbkZyYW1lKCkpIHsKICAgICAg
ICAgaWYgKG1fcGVuZGluZ05hdmlnYXRpb25JRCkgewpAQCAtNzY1NCw5ICs3NjU0LDkgQEAgdm9p
ZCBXZWJQYWdlOjpjb25zdW1lTmV0d29ya0V4dGVuc2lvblNhbmRib3hFeHRlbnNpb25zKGNvbnN0
IFNhbmRib3hFeHRlbnNpb246OkgKIH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2U6Omxhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFnZTo6bGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAg
ICBjb21wbGV0aW9uSGFuZGxlcihtYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS0+bG9hZGVyKCktPmxh
c3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoKSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIobWFpbkZy
YW1lKCktPmRvY3VtZW50KCktPmxvYWRlcigpLT5sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRl
ZCgpKTsKIH0KIAogI2lmIEhBVkUoVFJBTlNMQVRJT05fVUlfU0VSVklDRVMpICYmIEVOQUJMRShD
T05URVhUX01FTlVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CmluZGV4IDQ0YzZhYzI5YjQ5NzM4MTMwNzc0NWQ1OWRhM2M3MWI5NDg2MjVhYTMuLjE2NjFiMmIx
YTAxMjYwNWJhOWQxMDUyMjhkMzdiOTQzMTNlZTQ4MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE0NDgsOCArMTQ0OCw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGludmFsaWRhdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcigpOwogI2VuZGlmCiAKLSAg
ICB2b2lkIHNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoYm9vbCB3YXNBcHBCb3VuZCkgeyBt
X2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgPSB3YXNBcHBCb3VuZDsgfQotICAgIHZvaWQgbGFz
dE5hdmlnYXRpb25XYXNBcHBCb3VuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsK
KyAgICB2b2lkIHNldExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKGJvb2wgd2FzQXBwQm91
bmQpIHsgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCA9IHdhc0FwcEJvdW5kOyB9Cisg
ICAgdm9pZCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZChDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKTsKIAogICAgIGJvb2wgaXNQYXJlbnRQcm9jZXNzQVdlYkJyb3dzZXIoKSBj
b25zdDsKIApAQCAtMjMyMiw3ICsyMzIyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fbmF2aWdh
dGlvbkhhc09jY3VyZWQgeyBmYWxzZSB9OwogI2VuZGlmCiAKLSAgICBib29sIG1fbGFzdE5hdmln
YXRpb25XYXNBcHBCb3VuZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2xhc3ROYXZpZ2F0aW9uV2Fz
QXBwSW5pdGlhdGVkIHsgdHJ1ZSB9OwogCiAgICAgYm9vbCBtX2NhblVzZUNyZWRlbnRpYWxTdG9y
YWdlIHsgdHJ1ZSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA1YmRlM2Y4ZGE5MWM2YzVhNjVjNmZiYTgzOGIx
ZWQ2NzM4ZDAyMGRiLi41M2MxNWU5YmJmMGVhYTgzZWMyNTcwYWFjZTAyYTEzM2JlYzNlMDEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4KQEAgLTYzMyw3ICs2MzMsNyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21t
YW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogCiAg
ICAgRGlzcGF0Y2hXaGVlbEV2ZW50V2l0aG91dFNjcm9sbGluZyhXZWJLaXQ6OldlYldoZWVsRXZl
bnQgZXZlbnQpIC0+IChib29sIGhhbmRsZWQpIEFzeW5jCiAKLSAgICBMYXN0TmF2aWdhdGlvbldh
c0FwcEJvdW5kKCkgLT4gKGJvb2wgd2FzQXBwQm91bmQpIEFzeW5jCisgICAgTGFzdE5hdmlnYXRp
b25XYXNBcHBJbml0aWF0ZWQoKSAtPiAoYm9vbCB3YXNBcHBCb3VuZCkgQXN5bmMKIAogI2lmIEVO
QUJMRShNRURJQV9TRVNTSU9OX0NPT1JESU5BVE9SKQogICAgIENyZWF0ZU1lZGlhU2Vzc2lvbkNv
b3JkaW5hdG9yKFN0cmluZyBpZGVudGlmaWVyKSAtPiAoYm9vbCBzdWNjZXNzKSBBc3luYwpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGUwMGQyYWI3
MDY5MzA2YTcxMTMwNmQ0ZjNhZDU1Mzg3MDRmYjUwZjkuLjc4MGQ5OTJhNTNlOTNiYTQxYTI0NGFl
ZWZlNjdhZjRhYmU2ZWNjMzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NyBAQAorMjAyMS0wNi0yMyAgS2F0ZSBDaGVuZXkgIDxr
YXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBDbGVhbiB1cCBBcHAgUHJpdmFj
eSBSZXBvcnQgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjI3MzI2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83OTY5Njg0OT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEZWxldGUgdGVzdGluZyBm
dW5jdGlvbnMgcmVsYXRlZCB0byBhdHRyaWJ1dGlvbiBjb250ZXh0LiBNb3ZlIEFwcAorICAgICAg
ICBQcml2YWN5IFJlcG9ydCB0ZXN0cyBpbnRvIHRoZWlyIG93biBmaWxlLgorCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0
Lm1tOiBBZGRlZC4KKyAgICAgICAgKFRFU1QpOgorICAgICAgICAoY2F0Y2gpOgorICAgICAgICAo
ZnVuY3Rpb24pOgorICAgICAgICAoLVtTV0FwcEluaXRpYXRlZFJlcXVlc3RNZXNzYWdlSGFuZGxl
ciB1c2VyQ29udGVudENvbnRyb2xsZXI6ZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6XSk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0UGx1
Z0luLm1tOiBSZW5hbWVkIGZyb20gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9JbkFwcEJyb3dzZXJQcml2YWN5UGx1Z0luLm1tLgorICAgICAgICAoLVtBcHBQcml2YWN5UmVw
b3J0UGx1Z0luIHdlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6ZnJhbWU6
d2lsbFNlbmRSZXF1ZXN0Rm9yUmVzb3VyY2U6cmVxdWVzdDpyZWRpcmVjdFJlc3BvbnNlOl0pOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJp
dmFjeS5tbToKKyAgICAgICAgKC1bU1dBcHBCb3VuZFJlcXVlc3RNZXNzYWdlSGFuZGxlciB1c2Vy
Q29udGVudENvbnRyb2xsZXI6ZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6XSk6IERlbGV0ZWQuCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9hcHAtcHJpdmFjeS1yZXBv
cnQtaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXVFI6Oklu
amVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZSk6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6
VGVzdFJ1bm5lcjo6ZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3QpOgorICAgICAgICAoV1RSOjpU
ZXN0UnVubmVyOjpkaWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdCk6CisgICAgICAgIChXVFI6
OlRlc3RSdW5uZXI6OmFwcEJvdW5kUmVxdWVzdENvbnRleHREYXRhRm9yRG9tYWluKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6Y2FsbERpZFJlY2VpdmVBcHBCb3VuZFJlcXVl
c3RDb250ZXh0RGF0YUZvckRvbWFpbkNhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6
VGVzdFJ1bm5lcjo6ZGlkTG9hZEFwcEJvdW5kUmVxdWVzdCk6IERlbGV0ZWQuCisgICAgICAgIChX
VFI6OlRlc3RSdW5uZXI6OmRpZExvYWROb25BcHBCb3VuZFJlcXVlc3QpOiBEZWxldGVkLgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RS
OjpUZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAg
IChXVFI6OlRlc3RDb250cm9sbGVyOjpkaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdCk6CisgICAg
ICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkaWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdCk6
CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjbGVhckFwcFByaXZhY3lSZXBvcnRUZXN0
aW5nRGF0YSk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjphcHBCb3VuZFJlcXVlc3RD
b250ZXh0RGF0YUZvckRvbWFpbik6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OlRlc3RDb250cm9s
bGVyOjpkaWRMb2FkQXBwQm91bmRSZXF1ZXN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6VGVz
dENvbnRyb2xsZXI6OmRpZExvYWROb25BcHBCb3VuZFJlcXVlc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6
OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6Cisg
ICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdl
RnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJl
Y2VpdmVBcHBCb3VuZFJlcXVlc3RDb250ZXh0RGF0YUZvckRvbWFpbik6IERlbGV0ZWQuCisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbToKKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OmRpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0KToKKyAgICAgICAgKFdU
Ujo6VGVzdENvbnRyb2xsZXI6OmRpZExvYWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0KToKKyAgICAg
ICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNsZWFyQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRh
KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmFwcEJvdW5kUmVxdWVzdENvbnRleHRE
YXRhRm9yRG9tYWluKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRp
ZExvYWRBcHBCb3VuZFJlcXVlc3QpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6ZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6
OlRlc3RDb250cm9sbGVyOjpjbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGEpOiBEZWxldGVkLgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFJ1bm5lcldLV2ViVmlldy5oOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFJ1bm5lcldLV2ViVmlldy5tbToK
KyAgICAgICAgKC1bVGVzdFJ1bm5lcldLV2ViVmlldyBfZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVl
c3Q6XSk6CisgICAgICAgICgtW1Rlc3RSdW5uZXJXS1dlYlZpZXcgX2RpZExvYWROb25BcHBJbml0
aWF0ZWRSZXF1ZXN0Ol0pOgorICAgICAgICAoLVtUZXN0UnVubmVyV0tXZWJWaWV3IF9hcHBCb3Vu
ZE5hdmlnYXRpb25EYXRhRm9yRG9tYWluOmNvbXBsZXRpb25IYW5kbGVyOl0pOiBEZWxldGVkLgor
ICAgICAgICAoLVtUZXN0UnVubmVyV0tXZWJWaWV3IF9kaWRMb2FkQXBwQm91bmRSZXF1ZXN0Ol0p
OiBEZWxldGVkLgorICAgICAgICAoLVtUZXN0UnVubmVyV0tXZWJWaWV3IF9kaWRMb2FkTm9uQXBw
Qm91bmRSZXF1ZXN0Ol0pOiBEZWxldGVkLgorCiAyMDIxLTA2LTIzICBLYXRlIENoZW5leSAgPGth
dGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIE1pZ3JhdGUgQXBwIFByaXZhY3kg
UmVwb3J0IGNvZGUgZnJvbSBXZWJLaXRBZGRpdGlvbnMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggNDllN2U0YTlkZmZhYmU2YzJiYmRmMGM5ZDYzOGRjY2I2ODg2MWY2NS4uYzVlMjBlMzNkZjIy
NjIyY2ZjYmEwNTNiYTliZjY1ZmRiNGY1MzI4MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTI5NCw3ICsyOTQsNyBAQAogCQk0NkZBQ0Y3NDIzRTg4NDIzMDBBOUVCQzYgLyogYmVmb3JldW5s
b2FkLXNsb3cuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NkZBQ0Y3MzIzRTg4M0VFMDBBOUVCQzYgLyogYmVmb3JldW5sb2FkLXNsb3cu
aHRtbCAqLzsgfTsKIAkJNDkwOEM3MTEyNjA5NEU0MTAwMEIxQjJGIC8qIFByaXZhdGVDbGlja01l
YXN1cmVtZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDkwOEM3MEYyNjA5NEUxNjAwMEIxQjJGIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50Lm1t
ICovOyB9OwogCQk0OTA5RUUzQTJEMDk0ODBDODg5ODJENTYgLyogTWFya2FibGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUM3OUYxNjhCRTQ1NEU1
NzlFNDE3QjA1IC8qIE1hcmthYmxlLmNwcCAqLzsgfTsKLQkJNDkxQUVFRjgyNjUyRTMzNTAwRDUz
MEE4IC8qIEluQXBwQnJvd3NlclByaXZhY3lQbHVnSW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTFBRUVGNDI2NTJEREQwMDBENTMwQTggLyogSW5B
cHBCcm93c2VyUHJpdmFjeVBsdWdJbi5tbSAqLzsgfTsKKwkJNDkxQUVFRjgyNjUyRTMzNTAwRDUz
MEE4IC8qIEFwcFByaXZhY3lSZXBvcnRQbHVnSW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTFBRUVGNDI2NTJEREQwMDBENTMwQTggLyogQXBwUHJp
dmFjeVJlcG9ydFBsdWdJbi5tbSAqLzsgfTsKIAkJNDkxRjNENTIyNjAyN0U1MzAwMEUzMUY3IC8q
IHBjbVdpdGhvdXRGcmF1ZFByZXZlbnRpb25EYXRhYmFzZS5kYiBpbiBDb3B5IFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTFGM0Q0RjI2MDI3Q0ZFMDAwRTMx
RjcgLyogcGNtV2l0aG91dEZyYXVkUHJldmVudGlvbkRhdGFiYXNlLmRiICovOyB9OwogCQk0OTFG
M0Q1MzI2MDI3RTUzMDAwRTMxRjcgLyogcGNtV2l0aG91dEZyYXVkUHJldmVudGlvbkRhdGFiYXNl
LmRiLXNobSBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0OTFGM0Q1MDI2MDI3Q0ZFMDAwRTMxRjcgLyogcGNtV2l0aG91dEZyYXVkUHJldmVudGlv
bkRhdGFiYXNlLmRiLXNobSAqLzsgfTsKIAkJNDkxRjNENTQyNjAyN0U1MzAwMEUzMUY3IC8qIHBj
bVdpdGhvdXRGcmF1ZFByZXZlbnRpb25EYXRhYmFzZS5kYi13YWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDkxRjNENTEyNjAyN0NGRTAwMEUz
MUY3IC8qIHBjbVdpdGhvdXRGcmF1ZFByZXZlbnRpb25EYXRhYmFzZS5kYi13YWwgKi87IH07CkBA
IC0zMTIsNiArMzEyLDcgQEAKIAkJNDk4RDAzMEEyNjM3NkIzNDAwOUNCRkFEIC8qIHJlc291cmNl
TG9hZFN0YXRpc3RpY3NNaXNzaW5nVW5pcXVlSW5kZXguZGIgaW4gQ29weSBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk4RDAzMDkyNjM3NkIyQzAwOUNCRkFE
IC8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3NNaXNzaW5nVW5pcXVlSW5kZXguZGIgKi87IH07CiAJ
CTQ5OTVBNkYwMjVFODc3MjAwMEU1RjBBOSAvKiBjc3AtZG9jdW1lbnQtdXJpLXJlcG9ydC5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5
OTVBNkVGMjVFODc2QTMwMEU1RjBBOSAvKiBjc3AtZG9jdW1lbnQtdXJpLXJlcG9ydC5odG1sICov
OyB9OwogCQk0OUFFRUY2RDI0MDczNTlEMDBDODdFNEMgLyogSW5BcHBCcm93c2VyUHJpdmFjeS5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QUVFRjZC
MjQwNzM1ODYwMEM4N0U0QyAvKiBJbkFwcEJyb3dzZXJQcml2YWN5Lm1tICovOyB9OworCQk0OUVG
NkFENTI2NzdDMEJFMDA3OTY3REMgLyogQXBwUHJpdmFjeVJlcG9ydC5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5RUY2QUQ0MjY3N0MwQkUwMDc5NjdE
QyAvKiBBcHBQcml2YWN5UmVwb3J0Lm1tICovOyB9OwogCQk0QkZERkZBNzEzMTQ3NzZDMDA2MUYy
NEIgLyogSGl0VGVzdFJlc3VsdE5vZGVIYW5kbGVfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCRkRGRkE2MTMxNDc3NkMwMDYxRjI0QiAv
KiBIaXRUZXN0UmVzdWx0Tm9kZUhhbmRsZV9CdW5kbGUuY3BwICovOyB9OwogCQk1MTA0Nzc3MjFE
Mjk4REREMDA5NzQ3RUIgLyogSURCRGVsZXRlUmVjb3Zlcnkuc3FsaXRlMyBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTA0Nzc2RjFEMjk4RDg1
MDA5NzQ3RUIgLyogSURCRGVsZXRlUmVjb3Zlcnkuc3FsaXRlMyAqLzsgfTsKIAkJNTEwNDc3NzMx
RDI5OERERDAwOTc0N0VCIC8qIElEQkRlbGV0ZVJlY292ZXJ5LnNxbGl0ZTMtc2htIGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDQ3NzcwMUQy
OThEODUwMDk3NDdFQiAvKiBJREJEZWxldGVSZWNvdmVyeS5zcWxpdGUzLXNobSAqLzsgfTsKQEAg
LTIxMTMsNyArMjExNCw3IEBACiAJCTQ2RkEyRkVEMjM4NDZDOUEwMDBDQ0IwQyAvKiBIVFRQSGVh
ZGVyTWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUVFBIZWFk
ZXJNYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkZBQ0Y3MzIzRTg4M0VF
MDBBOUVCQzYgLyogYmVmb3JldW5sb2FkLXNsb3cuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsg
cGF0aCA9ICJiZWZvcmV1bmxvYWQtc2xvdy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDkwOEM3MEYyNjA5NEUxNjAwMEIxQjJGIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ5MUFFRUY0MjY1
MkRERDAwMEQ1MzBBOCAvKiBJbkFwcEJyb3dzZXJQcml2YWN5UGx1Z0luLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gSW5BcHBCcm93c2VyUHJpdmFjeVBsdWdJbi5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDkxQUVFRjQyNjUyREREMDAwRDUzMEE4IC8qIEFwcFByaXZhY3lSZXBv
cnRQbHVnSW4ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBcHBQcml2YWN5UmVwb3J0UGx1Z0lu
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTFGM0Q0RjI2MDI3Q0ZFMDAwRTMx
RjcgLyogcGNtV2l0aG91dEZyYXVkUHJldmVudGlvbkRhdGFiYXNlLmRiICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgcGF0aCA9IHBjbVdpdGhv
dXRGcmF1ZFByZXZlbnRpb25EYXRhYmFzZS5kYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDkxRjNENTAyNjAyN0NGRTAwMEUzMUY3IC8qIHBjbVdpdGhvdXRGcmF1ZFByZXZlbnRpb25E
YXRhYmFzZS5kYi1zaG0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBmaWxlOyBwYXRoID0gInBjbVdpdGhvdXRGcmF1ZFByZXZlbnRpb25EYXRhYmFzZS5k
Yi1zaG0iOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTFGM0Q1MTI2MDI3Q0ZFMDAw
RTMxRjcgLyogcGNtV2l0aG91dEZyYXVkUHJldmVudGlvbkRhdGFiYXNlLmRiLXdhbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSAicGNtV2l0aG91dEZyYXVkUHJldmVudGlvbkRhdGFiYXNlLmRiLXdh
bCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTMyLDYgKzIxMzMsNyBAQAogCQk0
OUFFRUY2ODI0MDcyNzZGMDBDODdFNEMgLyogSW5mby5wbGlzdCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxp
c3QueG1sOyBwYXRoID0gSW5mby5wbGlzdDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDlBRUVGNkIyNDA3MzU4NjAwQzg3RTRDIC8qIEluQXBwQnJvd3NlclByaXZhY3kubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBJbkFwcEJyb3dzZXJQcml2YWN5Lm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OUQ3RkJBNzI0MUZERERBMDBBQjY3RkEg
LyogaW4tYXBwLWJyb3dzZXItcHJpdmFjeS1sb2NhbC1maWxlLmh0bWwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiaW4t
YXBwLWJyb3dzZXItcHJpdmFjeS1sb2NhbC1maWxlLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0OUVGNkFENDI2NzdDMEJFMDA3OTY3REMgLyogQXBwUHJpdmFjeVJlcG9ydC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFwcFByaXZhY3lSZXBvcnQubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTRBNDEwRjRCMTlBRjdCRDYwMDJFQkFCNSAvKiBVc2VyTWVkaWEu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVXNlck1lZGlhLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE0MTBGNEQxOUFGN0JFRjAwMkVCQUI1IC8q
IGdldFVzZXJNZWRpYS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gZ2V0VXNlck1l
ZGlhLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBNDEwRjREMTlBRjdCRUYw
MDJFQkFCNiAvKiBvbmRldmljZWNoYW5nZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRo
ID0gb25kZXZpY2VjaGFuZ2UuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMz
NzksNiArMzM4MSw4IEBACiAJCQkJMkRFNzFBRkQxRDQ5QzBCRDAwOTA0MDk0IC8qIEFuaW1hdGVk
UmVzaXplLm1tICovLAogCQkJCUExNzk4QjgxMjI0MzFENjUwMDA3NjRCRCAvKiBBcHBsZVBheS5t
bSAqLywKIAkJCQk2M0Y2NjgyMDFGOTdDM0FBMDAzMkVFNTEgLyogQXBwbGljYXRpb25NYW5pZmVz
dC5tbSAqLywKKwkJCQk0OUVGNkFENDI2NzdDMEJFMDA3OTY3REMgLyogQXBwUHJpdmFjeVJlcG9y
dC5tbSAqLywKKwkJCQk0OTFBRUVGNDI2NTJEREQwMDBENTMwQTggLyogQXBwUHJpdmFjeVJlcG9y
dFBsdWdJbi5tbSAqLywKIAkJCQk1MUI0MEQ5RDIzQUM5NjBFMDBFMDUyNDEgLyogQXN5bmNGdW5j
dGlvbi5tbSAqLywKIAkJCQk4MzQxMzhDNjIwMzI2MUI5MDBGMjY5NjAgLyogQXN5bmNQb2xpY3lG
b3JOYXZpZ2F0aW9uUmVzcG9uc2UubW0gKi8sCiAJCQkJMzc2MEM0RjAyMTEyNDlBRjAwMjMzQUND
IC8qIEF0dHJTdHlsZS5tbSAqLywKQEAgLTM0NjYsNyArMzQ3MCw2IEBACiAJCQkJNTExMEZDRUYx
RTAxQ0JBQTAwNkY4RDBCIC8qIElEQkluZGV4VXBncmFkZVRvVjIubW0gKi8sCiAJCQkJOTNCQ0JD
ODAyM0NDNkVFODAwQ0EyMjIxIC8qIElEQk9iamVjdFN0b3JlSW5mb1VwZ3JhZGVUb1YyLm1tICov
LAogCQkJCTQ5QUVFRjZCMjQwNzM1ODYwMEM4N0U0QyAvKiBJbkFwcEJyb3dzZXJQcml2YWN5Lm1t
ICovLAotCQkJCTQ5MUFFRUY0MjY1MkRERDAwMEQ1MzBBOCAvKiBJbkFwcEJyb3dzZXJQcml2YWN5
UGx1Z0luLm1tICovLAogCQkJCTUxQTU4Nzg0MUQyNzJFRjMwMDRCQTlBRiAvKiBJbmRleGVkREJE
YXRhYmFzZVByb2Nlc3NLaWxsLm1tICovLAogCQkJCUNBQjBGRjU0MjIzMzJDM0EwMDZDQTVCMCAv
KiBJbmRleGVkREJGaWxlTmFtZS5tbSAqLywKIAkJCQk5Mzk5QkEwMTIzNzExMEFFMDA4MzkyQkYg
LyogSW5kZXhlZERCSW5QYWdlQ2FjaGUubW0gKi8sCkBAIC01MzM1LDYgKzUzMzgsNyBAQAogCQkJ
CUExNzk4QjgyMjI0MzFENjUwMDA3NjRCRCAvKiBBcHBsZVBheS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTYzRjY2ODIyMUY5N0Y3RjkwMDMyRUU1MSAvKiBBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNjM1NEY0RDExRjdDM0FCNTAwRDg5REYzIC8qIEFwcGxpY2F0aW9u
TWFuaWZlc3RQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDlFRjZBRDUyNjc3QzBCRTAw
Nzk2N0RDIC8qIEFwcFByaXZhY3lSZXBvcnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MUI0MEQ5
RTIzQUM5NjI0MDBFMDUyNDEgLyogQXN5bmNGdW5jdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTgzNDEzOEM3MjAzMjYxQ0EwMEYyNjk2MCAvKiBBc3luY1BvbGljeUZvck5hdmlnYXRpb25SZXNw
b25zZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUI0MUE0MTFBN0UwMDQ0N0M0QyAvKiBB
dHRyaWJ1dGVkU3RyaW5nLm1tIGluIFNvdXJjZXMgKi8sCkBAIC01OTU3LDYgKzU5NjEsNyBAQAog
CQkJZmlsZXMgPSAoCiAJCQkJMDc3QTVBRjMyMzA2MzhBNjAwQTcxMDVDIC8qIEFjY2Vzc2liaWxp
dHlUZXN0UGx1Z2luLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzdFN0RENjcxRUEwNzFGMzAwOUIz
OTZEIC8qIEFkZGl0aW9uYWxSZWFkQWNjZXNzQWxsb3dlZFVSTHNQbHVnaW4ubW0gaW4gU291cmNl
cyAqLywKKwkJCQk0OTFBRUVGODI2NTJFMzM1MDBENTMwQTggLyogQXBwUHJpdmFjeVJlcG9ydFBs
dWdJbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTc1NENFQzgxMUY2NzIyRjIwMEQwMDM5QSAvKiBB
dXRvRmlsbEF2YWlsYWJsZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDNDI1OTQ2MjI2NkE2OEEw
MDM5QUE3QSAvKiBCYXNpY1Byb3Bvc2VkQ3JlZGVudGlhbFBsdWdJbi5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTM3NEI3QTYxMURGMzcxQ0YwMEFDQ0I2QyAvKiBCdW5kbGVFZGl0aW5nRGVsZWdhdGVQ
bHVnSW4ubW0gaW4gU291cmNlcyAqLywKQEAgLTU5NzIsNyArNTk3Nyw2IEBACiAJCQkJRjRCMDE2
ODQyNUFFMDhGODAwRTQ0NUM0IC8qIERpc2FibGVTcGVsbGNoZWNrUGx1Z0luLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTE4RUU1MTkyMEE3OENFNTAwRTAyNEYzIC8qIERvdWJsZURlZmVyc0xvYWRp
bmdQbHVnaW4ubW0gaW4gU291cmNlcyAqLywKIAkJCQk1Q0I1QjNDMjFGRkM1NUNGMDBDMjdCQjAg
LyogRnJhbWVIYW5kbGVTZXJpYWxpemF0aW9uLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNDkxQUVF
RjgyNjUyRTMzNTAwRDUzMEE4IC8qIEluQXBwQnJvd3NlclByaXZhY3lQbHVnSW4ubW0gaW4gU291
cmNlcyAqLywKIAkJCQlGNDYwRjY1QjI2MTExOTU4MDA2NEYyQjYgLyogSW5qZWN0ZWRCdW5kbGVI
aXRUZXN0UGx1Z0luLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEU0MDRBOEMyMTY2REUwQTAwODI3
MUJBIC8qIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZUlzU2VsZWN0RWxlbWVudC5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTc5QzVENDMxMjA5RDc2ODMwMEYxRTdDQSAvKiBJbmplY3RlZEJ1bmRsZU5v
ZGVIYW5kbGVJc1RleHRGaWVsZC5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQ3OWNiMzM0ZWYzZDBiYzdhZTA5ZGY5YjRlZGU5Y2UwZjgzOTA1N2YKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFBy
aXZhY3lSZXBvcnQubW0KQEAgLTAsMCArMSw3MDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJj
b25maWcuaCIKKworI2ltcG9ydCAiSFRUUFNlcnZlci5oIgorI2ltcG9ydCAiUGxhdGZvcm1VdGls
aXRpZXMuaCIKKyNpbXBvcnQgIlNlcnZpY2VXb3JrZXJUQ1BTZXJ2ZXIuaCIKKyNpbXBvcnQgIlRl
c3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIKKyNpbXBvcnQgIlRlc3RVSURlbGVnYXRlLmgiCisjaW1w
b3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0aW9uRXh0
cmFzLmgiCisjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMUmVxdWVzdC5oPgorI2ltcG9ydCA8V2Vi
S2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJp
dmF0ZUZvclRlc3RpbmcuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVQcml2
YXRlLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgorI2ltcG9ydCA8d3Rm
L1J1bkxvb3AuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisjaWYgRU5BQkxF
KEFQUF9QUklWQUNZX1JFUE9SVCkKK1RFU1QoQXBwUHJpdmFjeVJlcG9ydCwgRGVmYXVsdFJlcXVl
c3RJc0FwcEluaXRpYXRlZCkKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworCisgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVy
byBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBOU1N0cmluZyAqdXJs
ID0gQCJodHRwczovL3dlYmtpdC5vcmciOworCisgICAgX19ibG9jayBib29sIGlzRG9uZSA9IGZh
bHNlOworICAgIC8vIERvbid0IHNldCB0aGUgYXR0cmlidXRpb24gQVBJIG9uIE5TVVJMUmVxdWVz
dCB0byBtYWtlIHN1cmUgdGhlIGRlZmF1bHQgaXMgYXBwIGluaXRpYXRlZC4KKyAgICBbd2ViVmll
dyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRo
U3RyaW5nOnVybF1dXTsKKyAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdh
dGlvbl07CisKKyAgICBbd2ViVmlldyBfbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6XihC
T09MIGlzQXBwSW5pdGlhdGVkKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKGlzQXBwSW5pdGlhdGVk
KTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmaXNEb25lKTsKKworICAgIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3
IF9hcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGE6XihzdHJ1Y3QgV0tBcHBQcml2YWN5UmVwb3J0
VGVzdGluZ0RhdGEgZGF0YSkgeworICAgICAgICBFWFBFQ1RfVFJVRShkYXRhLmhhc0xvYWRlZEFw
cEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGRhdGEuaGFz
TG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcpOworICAgICAgICBpc0RvbmUgPSB0
cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwor
fQorCitURVNUKEFwcFByaXZhY3lSZXBvcnQsIEFwcEluaXRpYXRlZFJlcXVlc3QpCit7CisgICAg
YXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdKTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0
aW9uLmdldCgpXSk7CisgICAgTlNTdHJpbmcgKnVybCA9IEAiaHR0cHM6Ly93ZWJraXQub3JnIjsK
KworICAgIF9fYmxvY2sgYm9vbCBpc0RvbmUgPSBmYWxzZTsKKyAgICBOU011dGFibGVVUkxSZXF1
ZXN0ICphcHBJbml0aWF0ZWRSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdp
dGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6dXJsXV07CisgICAgYXBwSW5pdGlhdGVkUmVxdWVz
dC5hdHRyaWJ1dGlvbiA9IE5TVVJMUmVxdWVzdEF0dHJpYnV0aW9uRGV2ZWxvcGVyOworCisgICAg
W3dlYlZpZXcgbG9hZFJlcXVlc3Q6YXBwSW5pdGlhdGVkUmVxdWVzdF07CisgICAgW3dlYlZpZXcg
X3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworCisgICAgW3dlYlZpZXcgX2xhc3RO
YXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOl4oQk9PTCBpc0FwcEluaXRpYXRlZCkgeworICAgICAg
ICBFWFBFQ1RfVFJVRShpc0FwcEluaXRpYXRlZCk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7Cisg
ICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisKKyAgICBp
c0RvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfYXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRh
Ol4oc3RydWN0IFdLQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhIGRhdGEpIHsKKyAgICAgICAg
RVhQRUNUX1RSVUUoZGF0YS5oYXNMb2FkZWRBcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZyk7Cisg
ICAgICAgIEVYUEVDVF9GQUxTRShkYXRhLmhhc0xvYWRlZE5vbkFwcEluaXRpYXRlZFJlcXVlc3RU
ZXN0aW5nKTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKK30KKworVEVTVChBcHBQcml2YWN5UmVwb3J0LCBO
b25BcHBJbml0aWF0ZWRSZXF1ZXN0KQoreworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisKKyAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1Jl
Y3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIE5TU3RyaW5n
ICp1cmwgPSBAImh0dHBzOi8vd2Via2l0Lm9yZyI7CisKKyAgICBfX2Jsb2NrIGJvb2wgaXNEb25l
ID0gZmFsc2U7CisgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqbm9uQXBwSW5pdGlhdGVkUmVxdWVz
dCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOnVybF1dOworICAgIG5vbkFwcEluaXRpYXRlZFJlcXVlc3QuYXR0cmlidXRpb24gPSBOU1VS
TFJlcXVlc3RBdHRyaWJ1dGlvblVzZXI7CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpub25B
cHBJbml0aWF0ZWRSZXF1ZXN0XTsKKyAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNo
TmF2aWdhdGlvbl07CisKKyAgICBbd2ViVmlldyBfbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0
ZWQ6XihCT09MIGlzQXBwSW5pdGlhdGVkKSB7CisgICAgICAgIEVYUEVDVF9GQUxTRShpc0FwcElu
aXRpYXRlZCk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisKKyAgICBpc0RvbmUgPSBmYWxzZTsKKyAgICBb
d2ViVmlldyBfYXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhOl4oc3RydWN0IFdLQXBwUHJpdmFj
eVJlcG9ydFRlc3RpbmdEYXRhIGRhdGEpIHsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGRhdGEuaGFz
TG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcpOworICAgICAgICBFWFBFQ1RfVFJVRShk
YXRhLmhhc0xvYWRlZE5vbkFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nKTsKKyAgICAgICAgaXNE
b25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNE
b25lKTsKK30KKworVEVTVChBcHBQcml2YWN5UmVwb3J0LCBBcHBJbml0aWF0ZWRSZXF1ZXN0V2l0
aE5hdmlnYXRpb24pCit7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgTlNTdHJpbmcgKmFwcEluaXRp
YXRlZFVSTCA9IEAiaHR0cHM6Ly93d3cud2Via2l0Lm9yZyI7CisgICAgTlNTdHJpbmcgKm5vbkFw
cEluaXRpYXRlZFVSTCA9IEAiaHR0cHM6Ly93d3cuYXBwbGUuY29tIjsKKworICAgIE5TTXV0YWJs
ZVVSTFJlcXVlc3QgKmFwcEluaXRpYXRlZFJlcXVlc3QgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCBy
ZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzphcHBJbml0aWF0ZWRVUkxdXTsKKyAg
ICBhcHBJbml0aWF0ZWRSZXF1ZXN0LmF0dHJpYnV0aW9uID0gTlNVUkxSZXF1ZXN0QXR0cmlidXRp
b25EZXZlbG9wZXI7CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDphcHBJbml0aWF0ZWRSZXF1
ZXN0XTsKKyAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisK
KyAgICBfX2Jsb2NrIGJvb2wgaXNEb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2xhc3ROYXZp
Z2F0aW9uV2FzQXBwSW5pdGlhdGVkOl4oQk9PTCBpc0FwcEluaXRpYXRlZCkgeworICAgICAgICBF
WFBFQ1RfVFJVRShpc0FwcEluaXRpYXRlZCk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAg
fV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisKKyAgICBpc0Rv
bmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfYXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhOl4o
c3RydWN0IFdLQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhIGRhdGEpIHsKKyAgICAgICAgRVhQ
RUNUX1RSVUUoZGF0YS5oYXNMb2FkZWRBcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZyk7CisgICAg
ICAgIEVYUEVDVF9GQUxTRShkYXRhLmhhc0xvYWRlZE5vbkFwcEluaXRpYXRlZFJlcXVlc3RUZXN0
aW5nKTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKworICAgIGlzRG9uZSA9IGZhbHNlOworICAgIE5TTXV0
YWJsZVVSTFJlcXVlc3QgKm5vbkFwcEluaXRpYXRlZFJlcXVlc3QgPSBbTlNNdXRhYmxlVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpub25BcHBJbml0aWF0ZWRV
UkxdXTsKKyAgICBub25BcHBJbml0aWF0ZWRSZXF1ZXN0LmF0dHJpYnV0aW9uID0gTlNVUkxSZXF1
ZXN0QXR0cmlidXRpb25Vc2VyOworCisgICAgaXNEb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcg
X2NsZWFyQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhOl57CisgICAgICAgIGlzRG9uZSA9IHRy
dWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisK
KyAgICAvLyBMb2FkIGEgbm9uIGFwcCBpbml0YXRlZCByZXF1ZXN0IGFuZCBjb25maXJtIHRoZSBs
b2FkcyBhcmUgbWFya2VkIGNvcnJlY3RseS4KKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpub25B
cHBJbml0aWF0ZWRSZXF1ZXN0XTsKKyAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNo
TmF2aWdhdGlvbl07CisKKyAgICBbd2ViVmlldyBfbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0
ZWQ6XihCT09MIGlzQXBwSW5pdGlhdGVkKSB7CisgICAgICAgIEVYUEVDVF9GQUxTRShpc0FwcElu
aXRpYXRlZCk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisKKyAgICBpc0RvbmUgPSBmYWxzZTsKKyAgICBb
d2ViVmlldyBfYXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhOl4oc3RydWN0IFdLQXBwUHJpdmFj
eVJlcG9ydFRlc3RpbmdEYXRhIGRhdGEpIHsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGRhdGEuaGFz
TG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcpOworICAgICAgICBFWFBFQ1RfVFJVRShk
YXRhLmhhc0xvYWRlZE5vbkFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nKTsKKyAgICAgICAgaXNE
b25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNE
b25lKTsKK30KKworVEVTVChBcHBQcml2YWN5UmVwb3J0LCBBcHBJbml0aWF0ZWRSZXF1ZXN0V2l0
aFN1YkZyYW1lKQoreworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gX3NldE92
ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5OkAic2NyaXB0LXNyYyAnbm9uY2UtYiciXTsKKwor
ICAgIF9fYmxvY2sgYm9vbCBpc0RvbmUgPSBmYWxzZTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBOU011
dGFibGVVUkxSZXF1ZXN0ICphcHBJbml0aWF0ZWRSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVl
c3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpA
InBhZ2Utd2l0aC1jc3AiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0
V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKKyAgICBhcHBJbml0aWF0ZWRSZXF1ZXN0LmF0dHJpYnV0
aW9uID0gTlNVUkxSZXF1ZXN0QXR0cmlidXRpb25EZXZlbG9wZXI7CisKKyAgICBbd2ViVmlldyBs
b2FkUmVxdWVzdDphcHBJbml0aWF0ZWRSZXF1ZXN0XTsKKworICAgIFt3ZWJWaWV3IHdhaXRGb3JN
ZXNzYWdlOkAiTWFpbkZyYW1lOiBCIl07CisgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJT
dWJmcmFtZTogQiJdOworCisgICAgW3dlYlZpZXcgX2FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0
YTogXihzdHJ1Y3QgV0tBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEgZGF0YSkgeworICAgICAg
ICBFWFBFQ1RfVFJVRShkYXRhLmhhc0xvYWRlZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nKTsK
KyAgICAgICAgRVhQRUNUX0ZBTFNFKGRhdGEuaGFzTG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVz
dFRlc3RpbmcpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworfQorCitURVNUKEFwcFByaXZhY3lSZXBvcnQs
IE5vbkFwcEluaXRpYXRlZFJlcXVlc3RXaXRoU3ViRnJhbWUpCit7CisgICAgYXV0byBjb25maWd1
cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsK
KyAgICBbY29uZmlndXJhdGlvbiBfc2V0T3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3k6QCJz
Y3JpcHQtc3JjICdub25jZS1iJyJdOworCisgICAgX19ibG9jayBib29sIGlzRG9uZSA9IGZhbHNl
OworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmln
dXJhdGlvbi5nZXQoKV0pOworICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5vbkFwcEluaXRpYXRl
ZFJlcXVlc3QgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxl
IG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAicGFnZS13aXRoLWNzcCIgd2l0aEV4dGVuc2lv
bjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOworICAg
IG5vbkFwcEluaXRpYXRlZFJlcXVlc3QuYXR0cmlidXRpb24gPSBOU1VSTFJlcXVlc3RBdHRyaWJ1
dGlvblVzZXI7CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpub25BcHBJbml0aWF0ZWRSZXF1
ZXN0XTsKKworICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiTWFpbkZyYW1lOiBCIl07Cisg
ICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJTdWJmcmFtZTogQiJdOworCisgICAgW3dlYlZp
ZXcgX2FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YTogXihzdHJ1Y3QgV0tBcHBQcml2YWN5UmVw
b3J0VGVzdGluZ0RhdGEgZGF0YSkgeworICAgICAgICBFWFBFQ1RfRkFMU0UoZGF0YS5oYXNMb2Fk
ZWRBcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZyk7CisgICAgICAgIEVYUEVDVF9UUlVFKGRhdGEu
aGFzTG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcpOworICAgICAgICBpc0RvbmUg
PSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUp
OworfQorCitzdGF0aWMgY29uc3QgY2hhciogbWFpblNXQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCis8
c2NyaXB0PgordHJ5IHsKKyAgICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3
LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsKKyAgICAgICAgaWYgKHJlZy5hY3RpdmUpIHsKKyAg
ICAgICAgICAgIGFsZXJ0KCd3b3JrZXIgYWxyZWFkeSBhY3RpdmUnKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgICAgICB3b3JrZXIgPSByZWcuaW5zdGFsbGluZzsKKyAgICAg
ICAgd29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoJ3N0YXRlY2hhbmdlJywgZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICBpZiAod29ya2VyLnN0YXRlID09ICdhY3RpdmF0ZWQnKQorICAgICAgICAgICAg
ICAgIGFsZXJ0KCdzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZCcpOworICAgICAgICB9KTsKKyAgICB9
KS5jYXRjaChmdW5jdGlvbihlcnJvcikgeworICAgICAgICBhbGVydCgnUmVnaXN0cmF0aW9uIGZh
aWxlZCB3aXRoOiAnICsgZXJyb3IpOworICAgIH0pOworfSBjYXRjaChlKSB7CisgICAgYWxlcnQo
J0V4Y2VwdGlvbjogJyArIGUpOworfQorPC9zY3JpcHQ+CispU1dSRVNPVVJDRSI7CisKK2VudW0g
Y2xhc3MgUmVzcG9uc2VUeXBlIHsgU3ludGhldGljLCBGZXRjaGVkIH07CitlbnVtIGNsYXNzIElz
QXBwSW5pdGlhdGVkIDogYm9vbCB7IE5vLCBZZXMgfTsKK3N0YXRpYyB2b2lkIHJ1blRlc3QoUmVz
cG9uc2VUeXBlIHJlc3BvbnNlVHlwZSwgSXNBcHBJbml0aWF0ZWQgaXNBcHBJbml0aWF0ZWQpCit7
CisgICAgc3RhdGljIGJvb2wgaXNEb25lID0gZmFsc2U7CisgICAgW1tXS1dlYnNpdGVEYXRhU3Rv
cmUgZGVmYXVsdERhdGFTdG9yZV0gcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9y
ZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3Rd
IGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworCisgICAgY29uc3QgY2hh
cioganMgPSBudWxscHRyOworICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkQWxlcnQgPSBudWxscHRy
OworCisgICAgc3dpdGNoIChyZXNwb25zZVR5cGUpIHsKKyAgICBjYXNlIFJlc3BvbnNlVHlwZTo6
U3ludGhldGljOgorICAgICAgICBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywg
KGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZShuZXcgQmxvYihbJzxz
Y3JpcHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9uc2VcIik8L3NjcmlwdD4nXSwge3R5cGU6ICd0
ZXh0L2h0bWwnfSkpKTsgfSkiOworICAgICAgICBleHBlY3RlZEFsZXJ0ID0gInN5bnRoZXRpYyBy
ZXNwb25zZSI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUmVzcG9uc2VUeXBlOjpGZXRjaGVk
OgorICAgICAgICBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9
PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pOyI7CisgICAg
ICAgIGV4cGVjdGVkQWxlcnQgPSAiZmV0Y2hlZCBmcm9tIHNlcnZlciI7CisgICAgICAgIGJyZWFr
OworICAgIH0KKworICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKKyAgICAg
ICAgeyAiLyIsIHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJD
b250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfSwKKyAgICAg
ICAgeyAiL2ZldGNoZWQuaHRtbCIsIHsgIjxzY3JpcHQ+YWxlcnQoJ2ZldGNoZWQgZnJvbSBzZXJ2
ZXInKTwvc2NyaXB0PiIgfSB9LAorICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlBy
b3RvY29sOjpIdHRwcyk7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcg
bmV3XSk7CisKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdE5hdmlnYXRpb25EZWxl
Z2F0ZSBuZXddKTsKKyAgICBbZGVsZWdhdGUgc2V0RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOl4oV0tXZWJWaWV3ICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxs
ZW5nZSwgdm9pZCAoXmNhbGxiYWNrKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRp
b24sIE5TVVJMQ3JlZGVudGlhbCAqKSkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoY2hhbGxl
bmdlLnByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlvbk1ldGhvZCwgTlNVUkxBdXRoZW50aWNh
dGlvbk1ldGhvZFNlcnZlclRydXN0KTsKKyAgICAgICAgY2FsbGJhY2soTlNVUkxTZXNzaW9uQXV0
aENoYWxsZW5nZVVzZUNyZWRlbnRpYWwsIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbEZvclRy
dXN0OmNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uuc2VydmVyVHJ1c3RdKTsKKyAgICB9XTsKKyAg
ICB3ZWJWaWV3LmdldCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworCisg
ICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJl
cXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9y
bWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyLnBvcnQoKV1dXTsKKyAgICBhdXRv
IGF0dHJpYnV0aW9uVmFsdWUgPSBpc0FwcEluaXRpYXRlZCA9PSBJc0FwcEluaXRpYXRlZDo6WWVz
ID8gTlNVUkxSZXF1ZXN0QXR0cmlidXRpb25EZXZlbG9wZXIgOiBOU1VSTFJlcXVlc3RBdHRyaWJ1
dGlvblVzZXI7CisgICAgcmVxdWVzdC5hdHRyaWJ1dGlvbiA9IGF0dHJpYnV0aW9uVmFsdWU7CisK
KyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEo
W3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckFsZXJ0XSwgInN1Y2Nlc3NmdWxseSByZWdpc3RlcmVkIik7
CisKKyAgICBpZiAocmVzcG9uc2VUeXBlICE9IFJlc3BvbnNlVHlwZTo6RmV0Y2hlZCkKKyAgICAg
ICAgc2VydmVyLmNhbmNlbCgpOworCisgICAgYm9vbCBleHBlY3RpbmdBcHBJbml0aWF0ZWRSZXF1
ZXN0cyA9IGlzQXBwSW5pdGlhdGVkID09IElzQXBwSW5pdGlhdGVkOjpZZXM7CisgICAgaXNEb25l
ID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YTogXihz
dHJ1Y3QgV0tBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEgZGF0YSkgeworICAgICAgICBFWFBF
Q1RfRVEoZGF0YS5oYXNMb2FkZWRBcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZywgZXhwZWN0aW5n
QXBwSW5pdGlhdGVkUmVxdWVzdHMpOworICAgICAgICBFWFBFQ1RfRVEoZGF0YS5oYXNMb2FkZWRO
b25BcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZywgIWV4cGVjdGluZ0FwcEluaXRpYXRlZFJlcXVl
c3RzKTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIGlzRG9uZSA9IGZh
bHNlOworICAgIFt3ZWJWaWV3IF9jbGVhckFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YTpeewor
ICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZpc0RvbmUpOworCisgICAgW3dlYlZpZXcgcmVsb2FkXTsKKyAgICBFWFBFQ1RfV0tf
U1RSRVEoW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckFsZXJ0XSwgZXhwZWN0ZWRBbGVydCk7CisKKyAg
ICBpc0RvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfYXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdE
YXRhOiBeKHN0cnVjdCBXS0FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSBkYXRhKSB7CisgICAg
ICAgIGlmIChyZXNwb25zZVR5cGUgPT0gUmVzcG9uc2VUeXBlOjpTeW50aGV0aWMpIHsKKyAgICAg
ICAgICAgIEVYUEVDVF9GQUxTRShkYXRhLmhhc0xvYWRlZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0
aW5nKTsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShkYXRhLmhhc0xvYWRlZE5vbkFwcEluaXRp
YXRlZFJlcXVlc3RUZXN0aW5nKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEVYUEVD
VF9FUShkYXRhLmhhc0xvYWRlZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nLCBleHBlY3RpbmdB
cHBJbml0aWF0ZWRSZXF1ZXN0cyk7CisgICAgICAgICAgICBFWFBFQ1RfRVEoZGF0YS5oYXNMb2Fk
ZWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZywgIWV4cGVjdGluZ0FwcEluaXRpYXRlZFJl
cXVlc3RzKTsKKyAgICAgICAgfQorICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworfQorCitURVNUKEFwcFByaXZh
Y3lSZXBvcnQsIE5vbkFwcEluaXRpYXRlZFJlcXVlc3RXaXRoU2VydmljZVdvcmtlcikKK3sKKyAg
ICBydW5UZXN0KFJlc3BvbnNlVHlwZTo6U3ludGhldGljLCBJc0FwcEluaXRpYXRlZDo6Tm8pOwor
ICAgIHJ1blRlc3QoUmVzcG9uc2VUeXBlOjpGZXRjaGVkLCBJc0FwcEluaXRpYXRlZDo6Tm8pOwor
fQorCitURVNUKEFwcFByaXZhY3lSZXBvcnQsIEFwcEluaXRpYXRlZFJlcXVlc3RXaXRoU2Vydmlj
ZVdvcmtlcikKK3sKKyAgICBydW5UZXN0KFJlc3BvbnNlVHlwZTo6U3ludGhldGljLCBJc0FwcElu
aXRpYXRlZDo6WWVzKTsKKyAgICBydW5UZXN0KFJlc3BvbnNlVHlwZTo6RmV0Y2hlZCwgSXNBcHBJ
bml0aWF0ZWQ6Olllcyk7Cit9CisKK1RFU1QoQXBwUHJpdmFjeVJlcG9ydCwgTXVsdGlwbGVXZWJW
aWV3c1dpdGhTaGFyZWRTZXJ2aWNlV29ya2VyKQoreworICAgIHN0YXRpYyBib29sIGlzRG9uZSA9
IGZhbHNlOworCisgICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gcmVt
b3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBt
b2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7
CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZpc0RvbmUpOworCisgICAgY29uc3QgY2hhcioganMgPSAic2VsZi5hZGRFdmVudExp
c3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChmZXRjaCgnL2Zl
dGNoZWQuaHRtbCcpKSB9KSI7CisgICAgY29uc3QgY2hhciogZXhwZWN0ZWRBbGVydCA9ICJmZXRj
aGVkIGZyb20gc2VydmVyIjsKKworICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVy
KHsKKyAgICAgICAgeyAiLyIsIHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMi
LCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0g
fSwKKyAgICAgICAgeyAiL2ZldGNoZWQuaHRtbCIsIHsgIjxzY3JpcHQ+YWxlcnQoJ2ZldGNoZWQg
ZnJvbSBzZXJ2ZXInKTwvc2NyaXB0PiIgfSB9LAorICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBT
ZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CisKKyAgICBhdXRvIHdlYlZpZXcxID0gYWRvcHROUyhb
V0tXZWJWaWV3IG5ld10pOworICAgIGF1dG8gd2ViVmlldzIgPSBhZG9wdE5TKFtXS1dlYlZpZXcg
bmV3XSk7CisKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdE5hdmlnYXRpb25EZWxl
Z2F0ZSBuZXddKTsKKyAgICBbZGVsZWdhdGUgc2V0RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOl4oV0tXZWJWaWV3ICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxs
ZW5nZSwgdm9pZCAoXmNhbGxiYWNrKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRp
b24sIE5TVVJMQ3JlZGVudGlhbCAqKSkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoY2hhbGxl
bmdlLnByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlvbk1ldGhvZCwgTlNVUkxBdXRoZW50aWNh
dGlvbk1ldGhvZFNlcnZlclRydXN0KTsKKyAgICAgICAgY2FsbGJhY2soTlNVUkxTZXNzaW9uQXV0
aENoYWxsZW5nZVVzZUNyZWRlbnRpYWwsIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbEZvclRy
dXN0OmNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uuc2VydmVyVHJ1c3RdKTsKKyAgICB9XTsKKyAg
ICB3ZWJWaWV3MS5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKyAg
ICB3ZWJWaWV3Mi5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKwor
ICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKmFwcEluaXRpYXRlZFJlcXVlc3QgPSBbTlNNdXRhYmxl
VVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcg
c3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlci5wb3J0KCld
XV07CisgICAgYXBwSW5pdGlhdGVkUmVxdWVzdC5hdHRyaWJ1dGlvbiA9IE5TVVJMUmVxdWVzdEF0
dHJpYnV0aW9uRGV2ZWxvcGVyOworICAgIFt3ZWJWaWV3MSBsb2FkUmVxdWVzdDphcHBJbml0aWF0
ZWRSZXF1ZXN0XTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcxIF90ZXN0X3dhaXRGb3JB
bGVydF0sICJzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZCIpOworCisgICAgW3dlYlZpZXcxIHJlbG9h
ZF07CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3MSBfdGVzdF93YWl0Rm9yQWxlcnRdLCBl
eHBlY3RlZEFsZXJ0KTsKKworICAgIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3MSBfYXBw
UHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhOiBeKHN0cnVjdCBXS0FwcFByaXZhY3lSZXBvcnRUZXN0
aW5nRGF0YSBkYXRhKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKGRhdGEuaGFzTG9hZGVkQXBwSW5p
dGlhdGVkUmVxdWVzdFRlc3RpbmcpOworICAgICAgICBFWFBFQ1RfRkFMU0UoZGF0YS5oYXNMb2Fk
ZWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZyk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7
CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisKKyAg
ICBpc0RvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldzEgX2NsZWFyQXBwUHJpdmFjeVJlcG9ydFRl
c3RpbmdEYXRhOl57CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisKKyAgICBpc0RvbmUgPSBmYWxzZTsKKyAg
ICBOU011dGFibGVVUkxSZXF1ZXN0ICpub25BcHBJbml0aWF0ZWRSZXF1ZXN0ID0gW05TTXV0YWJs
ZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5n
IHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwczovLzEyNy4wLjAuMTolZC8iLCBzZXJ2ZXIucG9ydCgp
XV1dOworICAgIG5vbkFwcEluaXRpYXRlZFJlcXVlc3QuYXR0cmlidXRpb24gPSBOU1VSTFJlcXVl
c3RBdHRyaWJ1dGlvblVzZXI7CisgICAgW3dlYlZpZXcyIGxvYWRSZXF1ZXN0Om5vbkFwcEluaXRp
YXRlZFJlcXVlc3RdOworICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldzIgX3Rlc3Rfd2FpdEZv
ckFsZXJ0XSwgImZldGNoZWQgZnJvbSBzZXJ2ZXIiKTsKKworICAgIFt3ZWJWaWV3MiByZWxvYWRd
OworICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldzIgX3Rlc3Rfd2FpdEZvckFsZXJ0XSwgZXhw
ZWN0ZWRBbGVydCk7CisKKyAgICBbd2ViVmlldzIgX2FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0
YTogXihzdHJ1Y3QgV0tBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEgZGF0YSkgeworICAgICAg
ICBFWFBFQ1RfRkFMU0UoZGF0YS5oYXNMb2FkZWRBcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZyk7
CisgICAgICAgIEVYUEVDVF9UUlVFKGRhdGEuaGFzTG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVz
dFRlc3RpbmcpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKK30KKworc3RhdGljIHZvaWQgc29mdFVwZGF0ZVRl
c3QoSXNBcHBJbml0aWF0ZWQgaXNBcHBJbml0aWF0ZWQpCit7CisgICAgc3RhdGljIGJvb2wgaXNE
b25lID0gZmFsc2U7CisgICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0g
cmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVz
XSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4o
KSB7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZpc0RvbmUpOworCisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3RO
YXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7CisgICAgW2RlbGVnYXRlIHNldERpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZTpeKFdLV2ViVmlldyAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlICpjaGFsbGVuZ2UsIHZvaWQgKF5jYWxsYmFjaykoTlNVUkxTZXNzaW9uQXV0aENoYWxs
ZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKikpIHsKKyAgICAgICAgRVhQRUNUX1dL
X1NUUkVRKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRob2QsIE5T
VVJMQXV0aGVudGljYXRpb25NZXRob2RTZXJ2ZXJUcnVzdCk7CisgICAgICAgIGNhbGxiYWNrKE5T
VVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNVUkxDcmVkZW50aWFsIGNy
ZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0XSk7
CisgICAgfV07CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gd2ViVmlldzEgPSBhZG9wdE5T
KFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2
MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8gd2ViVmll
dzIgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworCisg
ICAgd2ViVmlldzEuZ2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7Cisg
ICAgd2ViVmlldzIuZ2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisK
KyAgICB1aW50MTZfdCBzZXJ2ZXJQb3J0OworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBqcyA9ICJz
ZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRX
aXRoKG5ldyBSZXNwb25zZShuZXcgQmxvYihbJzxzY3JpcHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVz
cG9uc2VcIik8L3NjcmlwdD4nXSwge3R5cGU6ICd0ZXh0L2h0bWwnfSkpKTsgfSkiOworCisgICAg
eworICAgICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcjEoeworICAgICAgICAg
ICAgeyAiLyIsIHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICAgICAgeyAiL3N3LmpzIiwgeyB7
eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCisg
ICAgICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywgbnVs
bHB0ciwgdGVzdElkZW50aXR5KCkpOworICAgICAgICBzZXJ2ZXJQb3J0ID0gc2VydmVyMS5wb3J0
KCk7CisKKyAgICAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gc2VydmVyMS5yZXF1ZXN0KCk7
CisgICAgICAgIGlmIChpc0FwcEluaXRpYXRlZCA9PSBJc0FwcEluaXRpYXRlZDo6Tm8pIHsKKyAg
ICAgICAgICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5vbkFwcEluaXRpYXRlZFJlcXVlc3QgPSBb
TlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZl
cjEucG9ydCgpXV1dOworICAgICAgICAgICAgbm9uQXBwSW5pdGlhdGVkUmVxdWVzdC5hdHRyaWJ1
dGlvbiA9IE5TVVJMUmVxdWVzdEF0dHJpYnV0aW9uRGV2ZWxvcGVyOworICAgICAgICAgICAgcmVx
dWVzdCA9IG5vbkFwcEluaXRpYXRlZFJlcXVlc3Q7CisgICAgICAgIH0KKworICAgICAgICBbd2Vi
VmlldzEgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShbd2Vi
VmlldzEgX3Rlc3Rfd2FpdEZvckFsZXJ0XSwgInN1Y2Nlc3NmdWxseSByZWdpc3RlcmVkIik7CisK
KyAgICAgICAgc2VydmVyMS5jYW5jZWwoKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFRlc3RX
ZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMih7CisgICAgICAgICAgICB7ICIvIiwgeyBtYWlu
U1dCeXRlcyB9IH0sCisgICAgICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUi
LCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfQorICAgICAgICB9LCBUZXN0V2Vi
S2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIHRlc3RJZGVudGl0
eTIoKSwgc2VydmVyUG9ydCk7CisKKyAgICAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqcmVxdWVz
dDIgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0
cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIs
IHNlcnZlcjIucG9ydCgpXV1dOworICAgICAgICBhdXRvIGF0dHJpYnV0aW9uVmFsdWUgPSBpc0Fw
cEluaXRpYXRlZCA9PSBJc0FwcEluaXRpYXRlZDo6WWVzID8gTlNVUkxSZXF1ZXN0QXR0cmlidXRp
b25EZXZlbG9wZXIgOiBOU1VSTFJlcXVlc3RBdHRyaWJ1dGlvblVzZXI7CisgICAgICAgIHJlcXVl
c3QyLmF0dHJpYnV0aW9uID0gYXR0cmlidXRpb25WYWx1ZTsKKworICAgICAgICBpc0RvbmUgPSBm
YWxzZTsKKyAgICAgICAgW3dlYlZpZXcxIF9jbGVhckFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0
YTpeeworICAgICAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICAgICAgfV07CisKKyAgICAgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworCisgICAgICAgIFt3ZWJWaWV3MiBs
b2FkUmVxdWVzdDpyZXF1ZXN0Ml07CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldzIg
X3Rlc3Rfd2FpdEZvckFsZXJ0XSwgInN5bnRoZXRpYyByZXNwb25zZSIpOworICAgIH0KKworICAg
IGlzRG9uZSA9IGZhbHNlOworICAgIGJvb2wgZXhwZWN0aW5nQXBwSW5pdGlhdGVkUmVxdWVzdHMg
PSBpc0FwcEluaXRpYXRlZCA9PSBJc0FwcEluaXRpYXRlZDo6WWVzID8gdHJ1ZSA6IGZhbHNlOwor
ICAgIHdoaWxlICghaXNEb25lKSB7CisgICAgICAgIFt3ZWJWaWV3MiBfYXBwUHJpdmFjeVJlcG9y
dFRlc3RpbmdEYXRhOiBeKHN0cnVjdCBXS0FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSBkYXRh
KSB7CisgICAgICAgICAgICBpZiAoIWRhdGEuZGlkUGVyZm9ybVNvZnRVcGRhdGUpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBFWFBFQ1RfRVEoZGF0YS5oYXNMb2FkZWRB
cHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZywgZXhwZWN0aW5nQXBwSW5pdGlhdGVkUmVxdWVzdHMp
OworICAgICAgICAgICAgRVhQRUNUX0VRKGRhdGEuaGFzTG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVx
dWVzdFRlc3RpbmcsICFleHBlY3RpbmdBcHBJbml0aWF0ZWRSZXF1ZXN0cyk7CisgICAgICAgICAg
ICBpc0RvbmUgPSB0cnVlOworICAgICAgICB9XTsKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6c3BpblJ1bkxvb3AoMSk7CisgICAgfQorfQorCitURVNUKEFwcFByaXZhY3lSZXBvcnQsIEFw
cEluaXRpYXRlZFJlcXVlc3RXaXRoU2VydmljZVdvcmtlclNvZnRVcGRhdGUpCit7CisgICAgc29m
dFVwZGF0ZVRlc3QoSXNBcHBJbml0aWF0ZWQ6Olllcyk7Cit9CisKK1RFU1QoQXBwUHJpdmFjeVJl
cG9ydCwgTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFdpdGhTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZSkK
K3sKKyAgICBzb2Z0VXBkYXRlVGVzdChJc0FwcEluaXRpYXRlZDo6Tm8pOworfQorCitzdGF0aWMg
dm9pZCBydW5XZWJQcm9jZXNzUGx1Z0luVGVzdChJc0FwcEluaXRpYXRlZCBpc0FwcEluaXRpYXRl
ZCkKK3sKKyAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NO
YW1lOkAiQXBwUHJpdmFjeVJlcG9ydFBsdWdJbiJdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwg
MzIwLCA1MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworCisgICAgTlNTdHJpbmcg
KnVybCA9IEAiaHR0cHM6Ly93ZWJraXQub3JnIjsKKworICAgIF9fYmxvY2sgYm9vbCBpc0RvbmUg
PSBmYWxzZTsKKyAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TTXV0YWJsZVVS
TFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6dXJsXV07CisgICAg
YXV0byBhdHRyaWJ1dGlvblZhbHVlID0gaXNBcHBJbml0aWF0ZWQgPT0gSXNBcHBJbml0aWF0ZWQ6
OlllcyA/IE5TVVJMUmVxdWVzdEF0dHJpYnV0aW9uRGV2ZWxvcGVyIDogTlNVUkxSZXF1ZXN0QXR0
cmlidXRpb25Vc2VyOworICAgIHJlcXVlc3QuYXR0cmlidXRpb24gPSBhdHRyaWJ1dGlvblZhbHVl
OworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisgICAgW3dlYlZpZXcgX3Rl
c3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworCisgICAgaXNEb25lID0gZmFsc2U7Cisg
ICAgYm9vbCBleHBlY3RpbmdBcHBJbml0aWF0ZWRSZXF1ZXN0cyA9IGlzQXBwSW5pdGlhdGVkID09
IElzQXBwSW5pdGlhdGVkOjpZZXMgPyB0cnVlIDogZmFsc2U7CisgICAgW3dlYlZpZXcgX2FwcFBy
aXZhY3lSZXBvcnRUZXN0aW5nRGF0YTpeKHN0cnVjdCBXS0FwcFByaXZhY3lSZXBvcnRUZXN0aW5n
RGF0YSBkYXRhKSB7CisgICAgICAgIEVYUEVDVF9FUShkYXRhLmhhc0xvYWRlZEFwcEluaXRpYXRl
ZFJlcXVlc3RUZXN0aW5nLCBleHBlY3RpbmdBcHBJbml0aWF0ZWRSZXF1ZXN0cyk7CisgICAgICAg
IEVYUEVDVF9FUShkYXRhLmhhc0xvYWRlZE5vbkFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nLCAh
ZXhwZWN0aW5nQXBwSW5pdGlhdGVkUmVxdWVzdHMpOworICAgICAgICBpc0RvbmUgPSB0cnVlOwor
ICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworfQorCitU
RVNUKEFwcFByaXZhY3lSZXBvcnQsIFdlYlByb2Nlc3NQbHVnaW5UZXN0QXBwSW5pdGlhdGVkKQor
eworICAgIHJ1bldlYlByb2Nlc3NQbHVnSW5UZXN0KElzQXBwSW5pdGlhdGVkOjpZZXMpOworfQor
CitURVNUKEFwcFByaXZhY3lSZXBvcnQsIFdlYlByb2Nlc3NQbHVnaW5UZXN0Tm9uQXBwSW5pdGlh
dGVkKQoreworICAgIHJ1bldlYlByb2Nlc3NQbHVnSW5UZXN0KElzQXBwSW5pdGlhdGVkOjpObyk7
Cit9CisKKyNpZiBXS19IQVZFX0NfU1BJCisKK3N0YXRpYyBjb25zdCBjaGFyKiBtYWluU1dCeXRl
c0RlZmF1bHRWYWx1ZSA9IFIiU1dSRVNPVVJDRSgKKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIGxvZyht
c2cpCit7CisgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMuc3cucG9zdE1lc3NhZ2Uo
bXNnKTsKK30KKworbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcigibWVz
c2FnZSIsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgbG9nKGV2ZW50LmRhdGEpOworfSk7CisKK3Ry
eSB7CisgICAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4o
ZnVuY3Rpb24ocmVnKSB7CisgICAgICAgIGlmIChyZWcuYWN0aXZlKSB7CisgICAgICAgICAgICB3
b3JrZXIgPSByZWcuYWN0aXZlOworICAgICAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKCJTRUNP
TkQiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICB3b3JrZXIgPSBy
ZWcuaW5zdGFsbGluZzsKKyAgICAgICAgd29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoJ3N0YXRlY2hh
bmdlJywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBpZiAod29ya2VyLnN0YXRlID09ICdhY3Rp
dmF0ZWQnKQorICAgICAgICAgICAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSgiRklSU1QiKTsKKyAg
ICAgICAgfSk7CisgICAgfSkuY2F0Y2goZnVuY3Rpb24oZXJyb3IpIHsKKyAgICAgICAgbG9nKCdS
ZWdpc3RyYXRpb24gZmFpbGVkIHdpdGg6ICcgKyBlcnJvcik7CisgICAgfSk7Cit9IGNhdGNoKGUp
IHsKKyAgICBsb2coJ0V4Y2VwdGlvbjogJyArIGUpOworfQorPC9zY3JpcHQ+CispU1dSRVNPVVJD
RSI7CisKK3N0YXRpYyBjb25zdCBjaGFyKiBzY3JpcHRCeXRlc0RlZmF1bHRWYWx1ZSA9IFIiU1dS
RVNPVVJDRSgKK3NlbGYuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGFzeW5jIChldmVudCkg
PT4geworICAgIGlmICghc2VsZi5pbnRlcm5hbHMpIHsKKyAgICAgICAgZXZlbnQuc291cmNlLnBv
c3RNZXNzYWdlKCdObyBpbnRlcm5hbHMnKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IHF1ZXJ5QXBwUHJpdmFjeVJlcG9ydFZhbHVlKGV2ZW50LCBmYWxzZSk7Cit9KTsKKworYXN5bmMg
ZnVuY3Rpb24gcXVlcnlBcHBQcml2YWN5UmVwb3J0VmFsdWUoZXZlbnQsIGhhdmVTZW50SW5pdGlh
bE1lc3NhZ2UpCit7CisgICAgdmFyIHJlc3VsdCA9IGF3YWl0IGludGVybmFscy5sYXN0TmF2aWdh
dGlvbldhc0FwcFByaXZhY3lSZXBvcnQoKTsKKyAgICBpZiAocmVzdWx0KSB7CisgICAgICAgIGlm
IChldmVudC5kYXRhID09ICJGSVJTVCIpIHsKKyAgICAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0
TWVzc2FnZSgnYXBwIGluaXRpYXRlZCcpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKCFoYXZlU2VudEluaXRpYWxNZXNzYWdlKQorICAgICAgICAgICAgZXZl
bnQuc291cmNlLnBvc3RNZXNzYWdlKCdzdGFydHMgYXBwIGluaXRpYXRlZCcpOworCisgICAgICAg
IHF1ZXJ5QXBwUHJpdmFjeVJlcG9ydFZhbHVlKGV2ZW50LCB0cnVlKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgnbm9uIGFwcCBpbml0aWF0
ZWQnKTsKK30KKworKVNXUkVTT1VSQ0UiOworCisKK3N0YXRpYyBTdHJpbmcgZXhwZWN0ZWRNZXNz
YWdlOworc3RhdGljIGJvb2wgcmVjZWl2ZWRNZXNzYWdlID0gZmFsc2U7CisKK0BpbnRlcmZhY2Ug
U1dBcHBJbml0aWF0ZWRSZXF1ZXN0TWVzc2FnZUhhbmRsZXIgOiBOU09iamVjdCA8V0tTY3JpcHRN
ZXNzYWdlSGFuZGxlcj4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFNXQXBwSW5pdGlhdGVkUmVx
dWVzdE1lc3NhZ2VIYW5kbGVyCistICh2b2lkKXVzZXJDb250ZW50Q29udHJvbGxlcjooV0tVc2Vy
Q29udGVudENvbnRyb2xsZXIgKil1c2VyQ29udGVudENvbnRyb2xsZXIgZGlkUmVjZWl2ZVNjcmlw
dE1lc3NhZ2U6KFdLU2NyaXB0TWVzc2FnZSAqKW1lc3NhZ2UKK3sKKyAgICBFWFBFQ1RfV0tfU1RS
RVEobWVzc2FnZS5ib2R5LCBleHBlY3RlZE1lc3NhZ2UpOworICAgIHJlY2VpdmVkTWVzc2FnZSA9
IHRydWU7Cit9CitAZW5kCisKK1RFU1QoQXBwUHJpdmFjeVJlcG9ydCwgUmVnaXN0ZXJTZXJ2aWNl
V29ya2VyQ2xpZW50VXBkYXRlc0FwcEluaXRpYXRlZFZhbHVlKQoreworICAgIHN0YXRpYyBib29s
IGlzRG9uZSA9IGZhbHNlOworCisgICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFT
dG9yZV0gcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0
YVR5cGVzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5k
bGVyOl4oKSB7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworCisgICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAq
Y29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRp
b25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxz
IiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CisgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0
UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhUZXN0V2ViS2l0QVBJOjpVdGlsOjpjcmVhdGVDb250ZXh0
Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJJbnRlcm5hbHNJbmplY3RlZEJ1bmRsZVRlc3QiKSk7Cisg
ICAgY29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbCA9IChXS1Byb2Nlc3NQb29sICopY29udGV4dC5n
ZXQoKTsKKworICAgIFJldGFpblB0cjxTV0FwcEluaXRpYXRlZFJlcXVlc3RNZXNzYWdlSGFuZGxl
cj4gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbU1dBcHBJbml0aWF0ZWRSZXF1ZXN0TWVzc2Fn
ZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRD
b250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFuZGxlci5nZXQoKSBu
YW1lOkAic3ciXTsKKworICAgIGF1dG8gd2ViVmlldzEgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gd2ViVmlldzIgPSBhZG9wdE5TKFtbV0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworCisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMo
W1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7CisgICAgW2RlbGVnYXRlIHNldERpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpeKFdLV2ViVmlldyAqLCBOU1VSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UsIHZvaWQgKF5jYWxsYmFjaykoTlNVUkxTZXNzaW9uQXV0
aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKikpIHsKKyAgICAgICAgRVhQ
RUNUX1dLX1NUUkVRKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRo
b2QsIE5TVVJMQXV0aGVudGljYXRpb25NZXRob2RTZXJ2ZXJUcnVzdCk7CisgICAgICAgIGNhbGxi
YWNrKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNVUkxDcmVkZW50
aWFsIGNyZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRy
dXN0XSk7CisgICAgfV07CisKKyAgICB3ZWJWaWV3MS5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUg
PSBkZWxlZ2F0ZS5nZXQoKTsKKyAgICB3ZWJWaWV3Mi5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUg
PSBkZWxlZ2F0ZS5nZXQoKTsKKworICAgIFNlcnZpY2VXb3JrZXJUQ1BTZXJ2ZXIgc2VydmVyKHsK
KyAgICAgICAgeyAidGV4dC9odG1sIiwgbWFpblNXQnl0ZXNEZWZhdWx0VmFsdWUgfSwKKyAgICAg
ICAgeyAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIsIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlIH0s
CisgICAgfSwgeworICAgICAgICB7ICJ0ZXh0L2h0bWwiLCBtYWluU1dCeXRlc0RlZmF1bHRWYWx1
ZSB9LAorICAgICAgICB7ICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Iiwgc2NyaXB0Qnl0ZXNEZWZh
dWx0VmFsdWUgfSwKKyAgICB9KTsKKworICAgIC8vIExvYWQgV2ViVmlldyB3aXRoIGFuIGFwcCBp
bml0aWF0ZWQgcmVxdWVzdC4gV2UgZXhwZWN0IHRoZSBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkg
dG8gYmUgYXBwIGluaXRpYXRlZC4KKyAgICBleHBlY3RlZE1lc3NhZ2UgPSAiYXBwIGluaXRpYXRl
ZCI7CisgICAgW3dlYlZpZXcxIGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRNZXNzYWdlKTsKKworICAgIC8vIExvYWQg
V2ViVmlldyB3aXRoIGEgbm9uIGFwcCBpbml0aWF0ZWQgcmVxdWVzdC4gV2UgZXhwZWN0IHRoZSBT
ZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgdG8gYmUgYXBwIGluaXRpYXRlZAorICAgIC8vIGF0IGZp
cnN0LCBidXQgdGhlbiBiZWNvbWUgbm9uIGFwcCBpbml0aWF0ZWQgb25jZSB0aGUgc2Vjb25kIHdl
YlZpZXcgaXMgY2xvc2VkIGFuZCBpdHMgY2xpZW50IGlzIHVucmVnaXN0ZXJlZC4KKyAgICBleHBl
Y3RlZE1lc3NhZ2UgPSAic3RhcnRzIGFwcCBpbml0aWF0ZWQiOworICAgIHJlY2VpdmVkTWVzc2Fn
ZSA9IGZhbHNlOworICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5vbkFwcEluaXRpYXRlZFJlcXVl
c3QgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0
cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHA6Ly8xMjcuMC4wLjE6JWQvbWFp
bi5odG1sIiwgc2VydmVyLnBvcnQoKV1dXTsKKyAgICBub25BcHBJbml0aWF0ZWRSZXF1ZXN0LmF0
dHJpYnV0aW9uID0gTlNVUkxSZXF1ZXN0QXR0cmlidXRpb25Vc2VyOworCisgICAgW3dlYlZpZXcy
IGxvYWRSZXF1ZXN0Om5vbkFwcEluaXRpYXRlZFJlcXVlc3RdOworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmcmVjZWl2ZWRNZXNzYWdlKTsKKworICAgIC8vIENsb3NlIHRoZSBhcHAgaW5p
dGlhdGVkIHZpZXcuIFdlIGV4cGVjdCB0aGF0IHRoZSBleGlzdGluZyB3b3JrZXIgd2lsbCBiZWNv
bWUgbm9uIGFwcCBpbml0aWF0ZWQKKyAgICAvLyBub3cgdGhhdCBhbGwgYXBwIGluaXRpYXRlZCBj
bGllbnRzIGhhdmUgYmVlbiByZW1vdmVkLgorICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJub24gYXBw
IGluaXRpYXRlZCI7CisgICAgcmVjZWl2ZWRNZXNzYWdlID0gZmFsc2U7CisgICAgW3dlYlZpZXcx
IF9jbG9zZV07CisgICAgd2ViVmlldzEgPSBudWxscHRyOworCisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZyZWNlaXZlZE1lc3NhZ2UpOworfQorCisjZW5kaWYgLy8gV0tfSEFWRV9DX1NQ
SQorCisjZW5kaWYgLy8gQVBQX1BSSVZBQ1lfUkVQT1JUCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnRQbHVnSW4ubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnRQbHVn
SW4ubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMGExMzdkZDJlMTMzNTVlOWNjZDA2YTVkMDgyZGU2MTExZTI5ZjU3
ZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvQXBwUHJpdmFjeVJlcG9ydFBsdWdJbi5tbQpAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisj
aW1wb3J0IDxXZWJLaXQvV0tXZWJQcm9jZXNzUGx1Z0luLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tX
ZWJQcm9jZXNzUGx1Z0luTG9hZERlbGVnYXRlLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CisKK0BpbnRlcmZhY2UgQXBwUHJpdmFjeVJlcG9ydFBsdWdJbiA6IE5TT2JqZWN0IDxXS1dlYlBy
b2Nlc3NQbHVnSW4sIFdLV2ViUHJvY2Vzc1BsdWdJbkxvYWREZWxlZ2F0ZT4KK0BlbmQKKworQGlt
cGxlbWVudGF0aW9uIEFwcFByaXZhY3lSZXBvcnRQbHVnSW4geyB9CisKKy0gKE5TVVJMUmVxdWVz
dCAqKXdlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6KFdLV2ViUHJvY2Vz
c1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgZnJhbWU6KFdLV2Vi
UHJvY2Vzc1BsdWdJbkZyYW1lICopZnJhbWUgd2lsbFNlbmRSZXF1ZXN0Rm9yUmVzb3VyY2U6KHVp
bnQ2NF90KXJlc291cmNlIHJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgcmVkaXJlY3RS
ZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlZGlyZWN0UmVzcG9uc2UKK3sKKyAgICByZXR1cm4g
YWRvcHROUyhbW05TVVJMUmVxdWVzdCBhbGxvY10gaW5pdFdpdGhVUkw6cmVxdWVzdC5VUkxdKS5h
dXRvcmVsZWFzZSgpOworfQorCitAZW5kCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KaW5kZXggYTVj
NDRjYTU4NzlkNDJkOGUxNGNjOTM2ODlkNmEyMmVmMWM1OTEzYS4uOWJkNWQxOTJmYmEwMTkwMzIw
ZDNlM2MwNjVjMWRiNTc0YzRjYTYwOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQpAQCAtMjUs
MTEgKzI1LDkgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAKLSNpbXBvcnQgIkhUVFBTZXJ2ZXIu
aCIKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJTZXJ2aWNlV29ya2Vy
VENQU2VydmVyLmgiCiAjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCi0jaW1wb3J0
ICJUZXN0VUlEZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdFVSTFNjaGVtZUhhbmRsZXIuaCIKICNp
bXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKICNpbXBvcnQgIldLV2ViVmlld0NvbmZpZ3VyYXRpb25F
eHRyYXMuaCIKQEAgLTQ0LDcgKzQyLDYgQEAKICNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRh
U3RvcmVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLVXNlckNvbnRlbnRXb3JsZC5oPgog
I2ltcG9ydCA8V2ViS2l0L19XS1VzZXJTdHlsZVNoZWV0Lmg+Ci0jaW1wb3J0IDxwYWwvc3BpL2Nm
L0NGTmV0d29ya1NQSS5oPgogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KICNpbXBvcnQgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCkBAIC0xNDE3LDYyNiArMTQxNCwzIEBAIFRFU1QoSW5BcHBCcm93
c2VyUHJpdmFjeSwgQWJvdXRCbGFua1N1YkZyYW1lTWF0Y2hlc1RvcEZyYW1lTm9uQXBwQm91bmQp
CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCi0KLSNpZiBFTkFCTEUo
QVBQX1BSSVZBQ1lfUkVQT1JUKQotVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZFJl
cXVlc3QpCi17Ci0gICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLQotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJh
dGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgTlNTdHJpbmcgKnVybCA9IEAiaHR0cHM6
Ly93ZWJraXQub3JnIjsKLQotICAgIF9fYmxvY2sgYm9vbCBpc0RvbmUgPSBmYWxzZTsKLSAgICBO
U011dGFibGVVUkxSZXF1ZXN0ICpub25BcHBCb3VuZFJlcXVlc3QgPSBbTlNNdXRhYmxlVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzp1cmxdXTsKLQotICAgIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgbm9uQXBwQm91bmRSZXF1ZXN0
Ll9pc05vbkFwcEluaXRpYXRlZCA9IFlFUzsKLSAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19FTkQKLQotICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0Om5vbkFwcEJvdW5kUmVxdWVzdF07
Ci0gICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwotCi0gICAg
W3dlYlZpZXcgX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6XihCT09MIGlzQXBwQm91bmQpIHsK
LSAgICAgICAgRVhQRUNUX0ZBTFNFKGlzQXBwQm91bmQpOwotICAgICAgICBpc0RvbmUgPSB0cnVl
OwotICAgIH1dOwotCi0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwotICAg
IAotICAgIGlzRG9uZSA9IGZhbHNlOwotICAgIFt3ZWJWaWV3IF9hcHBCb3VuZE5hdmlnYXRpb25E
YXRhOl4oc3RydWN0IFdLQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEgZGF0YSkgewotICAg
ICAgICBFWFBFQ1RfRkFMU0UoZGF0YS5oYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nKTsK
LSAgICAgICAgRVhQRUNUX1RSVUUoZGF0YS5oYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0
aW5nKTsKLSAgICAgICAgaXNEb25lID0gdHJ1ZTsKLSAgICB9XTsKLQotICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKLX0KLQotVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBB
cHBCb3VuZFJlcXVlc3RXaXRoTmF2aWdhdGlvbikKLXsKLSAgICBhdXRvIGNvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotCi0gICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBO
U1N0cmluZyAqc3RhcnRpbmdVUkwgPSBAImh0dHBzOi8vd3d3LndlYmtpdC5vcmciOwotICAgIE5T
U3RyaW5nICpub25BcHBCb3VuZFVSTCA9IEAiaHR0cHM6Ly93d3cuYXBwbGUuY29tIjsKLQotICAg
IE5TTXV0YWJsZVVSTFJlcXVlc3QgKnN0YXJ0aW5nUmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1
ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOnN0YXJ0aW5nVVJMXV07Ci0K
LSAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzdGFydGluZ1JlcXVlc3RdOwotICAgIFt3ZWJWaWV3
IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKLQotICAgIF9fYmxvY2sgYm9vbCBp
c0RvbmUgPSBmYWxzZTsKLSAgICBbd2ViVmlldyBfbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDpe
KEJPT0wgaXNBcHBCb3VuZCkgewotICAgICAgICBFWFBFQ1RfVFJVRShpc0FwcEJvdW5kKTsKLSAg
ICAgICAgaXNEb25lID0gdHJ1ZTsKLSAgICB9XTsKLQotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmaXNEb25lKTsKLSAgICAKLSAgICBpc0RvbmUgPSBmYWxzZTsKLSAgICBbd2ViVmlldyBf
YXBwQm91bmROYXZpZ2F0aW9uRGF0YTpeKHN0cnVjdCBXS0FwcEJvdW5kTmF2aWdhdGlvblRlc3Rp
bmdEYXRhIGRhdGEpIHsKLSAgICAgICAgRVhQRUNUX1RSVUUoZGF0YS5oYXNMb2FkZWRBcHBCb3Vu
ZFJlcXVlc3RUZXN0aW5nKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKGRhdGEuaGFzTG9hZGVkTm9u
QXBwQm91bmRSZXF1ZXN0VGVzdGluZyk7Ci0gICAgICAgIGlzRG9uZSA9IHRydWU7Ci0gICAgfV07
Ci0KLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Ci0gICAgCi0gICAgaXNE
b25lID0gZmFsc2U7Ci0gICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqbm9uQXBwQm91bmRSZXF1ZXN0
ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJp
bmc6bm9uQXBwQm91bmRVUkxdXTsKLSAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19C
RUdJTgotICAgIG5vbkFwcEJvdW5kUmVxdWVzdC5faXNOb25BcHBJbml0aWF0ZWQgPSBZRVM7Ci0g
ICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi0gICAgCi0gICAgaXNEb25lID0g
ZmFsc2U7Ci0gICAgW3dlYlZpZXcgX2NsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YTpeewotICAg
ICAgICBpc0RvbmUgPSB0cnVlOwotICAgIH1dOwotCi0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZpc0RvbmUpOwotCi0gICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6bm9uQXBwQm91bmRSZXF1
ZXN0XTsKLSAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07Ci0K
LSAgICBbd2ViVmlldyBfbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDpeKEJPT0wgaXNBcHBCb3Vu
ZCkgewotICAgICAgICBFWFBFQ1RfRkFMU0UoaXNBcHBCb3VuZCk7Ci0gICAgICAgIGlzRG9uZSA9
IHRydWU7Ci0gICAgfV07Ci0KLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7
Ci0gICAgCi0gICAgaXNEb25lID0gZmFsc2U7Ci0gICAgW3dlYlZpZXcgX2FwcEJvdW5kTmF2aWdh
dGlvbkRhdGE6XihzdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBkYXRhKSB7
Ci0gICAgICAgIEVYUEVDVF9GQUxTRShkYXRhLmhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3Rp
bmcpOwotICAgICAgICBFWFBFQ1RfVFJVRShkYXRhLmhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVz
dFRlc3RpbmcpOwotICAgICAgICBpc0RvbmUgPSB0cnVlOwotICAgIH1dOwotCi0gICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwotfQotCi1URVNUKEluQXBwQnJvd3NlclByaXZh
Y3ksIEFwcEJvdW5kUmVxdWVzdFdpdGhTdWJGcmFtZSkKLXsKLSAgICBhdXRvIGNvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAg
IFtjb25maWd1cmF0aW9uIF9zZXRPdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeTpAInNjcmlw
dC1zcmMgJ25vbmNlLWInIl07Ci0KLSAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBbd2ViVmlldyBsb2FkVGVz
dFBhZ2VOYW1lZDpAInBhZ2Utd2l0aC1jc3AiXTsKLQotICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNz
YWdlOkAiTWFpbkZyYW1lOiBCIl07Ci0gICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJTdWJm
cmFtZTogQiJdOwotCi0gICAgX19ibG9jayBib29sIGlzRG9uZSA9IGZhbHNlOwotICAgIFt3ZWJW
aWV3IF9hcHBCb3VuZE5hdmlnYXRpb25EYXRhOl4oc3RydWN0IFdLQXBwQm91bmROYXZpZ2F0aW9u
VGVzdGluZ0RhdGEgZGF0YSkgewotICAgICAgICBFWFBFQ1RfVFJVRShkYXRhLmhhc0xvYWRlZEFw
cEJvdW5kUmVxdWVzdFRlc3RpbmcpOwotICAgICAgICBFWFBFQ1RfRkFMU0UoZGF0YS5oYXNMb2Fk
ZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nKTsKLSAgICAgICAgaXNEb25lID0gdHJ1ZTsKLSAg
ICB9XTsKLQotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKLX07Ci0KLVRF
U1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmRSZXF1ZXN0V2l0aFN1YkZyYW1lKQot
ewotICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgW2NvbmZpZ3VyYXRpb24gX3NldE92ZXJyaWRlQ29udGVu
dFNlY3VyaXR5UG9saWN5OkAic2NyaXB0LXNyYyAnbm9uY2UtYiciXTsKLQotICAgIF9fYmxvY2sg
Ym9vbCBpc0RvbmUgPSBmYWxzZTsKLSAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBOU011dGFibGVVUkxSZXF1
ZXN0ICpub25BcHBCb3VuZFJlcXVlc3QgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0
aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAicGFnZS13aXRoLWNz
cCIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVz
b3VyY2VzIl1dOwotICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAg
bm9uQXBwQm91bmRSZXF1ZXN0Ll9pc05vbkFwcEluaXRpYXRlZCA9IFlFUzsKLSAgICBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLQotICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0Om5v
bkFwcEJvdW5kUmVxdWVzdF07Ci0KLSAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIk1haW5G
cmFtZTogQiJdOwotICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiU3ViZnJhbWU6IEIiXTsK
LQotICAgIFt3ZWJWaWV3IF9hcHBCb3VuZE5hdmlnYXRpb25EYXRhOiBeKHN0cnVjdCBXS0FwcEJv
dW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhIGRhdGEpIHsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKGRh
dGEuaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZyk7Ci0gICAgICAgIEVYUEVDVF9UUlVF
KGRhdGEuaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZyk7Ci0gICAgICAgIGlzRG9u
ZSA9IHRydWU7Ci0gICAgfV07Ci0KLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9u
ZSk7Ci19OwotCi1zdGF0aWMgY29uc3QgY2hhciogbWFpblNXQnl0ZXMgPSBSIlNXUkVTT1VSQ0Uo
Ci08c2NyaXB0PgotdHJ5IHsKLSAgICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rlcign
L3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsKLSAgICAgICAgaWYgKHJlZy5hY3RpdmUpIHsK
LSAgICAgICAgICAgIGFsZXJ0KCd3b3JrZXIgYWxyZWFkeSBhY3RpdmUnKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotICAgICAgICB3b3JrZXIgPSByZWcuaW5zdGFsbGluZzsKLSAg
ICAgICAgd29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoJ3N0YXRlY2hhbmdlJywgZnVuY3Rpb24oKSB7
Ci0gICAgICAgICAgICBpZiAod29ya2VyLnN0YXRlID09ICdhY3RpdmF0ZWQnKQotICAgICAgICAg
ICAgICAgIGFsZXJ0KCdzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZCcpOwotICAgICAgICB9KTsKLSAg
ICB9KS5jYXRjaChmdW5jdGlvbihlcnJvcikgewotICAgICAgICBhbGVydCgnUmVnaXN0cmF0aW9u
IGZhaWxlZCB3aXRoOiAnICsgZXJyb3IpOwotICAgIH0pOwotfSBjYXRjaChlKSB7Ci0gICAgYWxl
cnQoJ0V4Y2VwdGlvbjogJyArIGUpOwotfQotPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7Ci0KLWVu
dW0gY2xhc3MgUmVzcG9uc2VUeXBlIHsgU3ludGhldGljLCBGZXRjaGVkIH07Ci1lbnVtIGNsYXNz
IElzQXBwQm91bmQgOiBib29sIHsgTm8sIFllcyB9Owotc3RhdGljIHZvaWQgcnVuVGVzdChSZXNw
b25zZVR5cGUgcmVzcG9uc2VUeXBlLCBJc0FwcEJvdW5kIGFwcEJvdW5kKQotewotICAgIHN0YXRp
YyBib29sIGlzRG9uZSA9IGZhbHNlOwotICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHRE
YXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0
ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9u
SGFuZGxlcjpeKCkgewotICAgICAgICBpc0RvbmUgPSB0cnVlOwotICAgIH1dOwotICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKLQotICAgIGNvbnN0IGNoYXIqIGpzID0gbnVs
bHB0cjsKLSAgICBjb25zdCBjaGFyKiBleHBlY3RlZEFsZXJ0ID0gbnVsbHB0cjsKLQotICAgIHN3
aXRjaCAocmVzcG9uc2VUeXBlKSB7Ci0gICAgY2FzZSBSZXNwb25zZVR5cGU6OlN5bnRoZXRpYzoK
LSAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4g
eyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0
KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30p
KSk7IH0pIjsKLSAgICAgICAgZXhwZWN0ZWRBbGVydCA9ICJzeW50aGV0aWMgcmVzcG9uc2UiOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIFJlc3BvbnNlVHlwZTo6RmV0Y2hlZDoKLSAgICAgICAg
anMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5y
ZXNwb25kV2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KTsiOwotICAgICAgICBleHBlY3Rl
ZEFsZXJ0ID0gImZldGNoZWQgZnJvbSBzZXJ2ZXIiOwotICAgICAgICBicmVhazsKLSAgICB9Ci0K
LSAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7
IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBl
IiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCi0gICAgICAgIHsgIi9mZXRj
aGVkLmh0bWwiLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3Njcmlw
dD4iIH0gfSwKLSAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0
cHMpOwotCi0gICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwotCi0g
ICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7
Ci0gICAgW2RlbGVnYXRlIHNldERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpeKFdL
V2ViVmlldyAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UsIHZvaWQg
KF5jYWxsYmFjaykoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENy
ZWRlbnRpYWwgKikpIHsKLSAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGNoYWxsZW5nZS5wcm90ZWN0
aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRob2QsIE5TVVJMQXV0aGVudGljYXRpb25NZXRob2RT
ZXJ2ZXJUcnVzdCk7Ci0gICAgICAgIGNhbGxiYWNrKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VV
c2VDcmVkZW50aWFsLCBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVu
Z2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0XSk7Ci0gICAgfV07Ci0gICAgd2ViVmlldy5n
ZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKLQotICAgIE5TVVJMUmVx
dWVzdCAqcmVxdWVzdCA9IHNlcnZlci5yZXF1ZXN0KCk7Ci0gICAgaWYgKGFwcEJvdW5kID09IElz
QXBwQm91bmQ6Ok5vKSB7Ci0gICAgICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5vbkFwcEJvdW5k
UmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxX
aXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6
JWQvIiwgc2VydmVyLnBvcnQoKV1dXTsKLSAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfQkVHSU4KLSAgICAgICAgbm9uQXBwQm91bmRSZXF1ZXN0Ll9pc05vbkFwcEluaXRpYXRl
ZCA9IFlFUzsKLSAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi0gICAg
ICAgIHJlcXVlc3QgPSBub25BcHBCb3VuZFJlcXVlc3Q7Ci0gICAgfQotCi0gICAgW3dlYlZpZXcg
bG9hZFJlcXVlc3Q6cmVxdWVzdF07Ci0gICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IF90ZXN0
X3dhaXRGb3JBbGVydF0sICJzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZCIpOwotCi0gICAgaWYgKHJl
c3BvbnNlVHlwZSAhPSBSZXNwb25zZVR5cGU6OkZldGNoZWQpCi0gICAgICAgIHNlcnZlci5jYW5j
ZWwoKTsKLQotICAgIGJvb2wgZXhwZWN0aW5nQXBwQm91bmRSZXF1ZXN0cyA9IGFwcEJvdW5kID09
IElzQXBwQm91bmQ6OlllczsKLSAgICBpc0RvbmUgPSBmYWxzZTsKLSAgICBbd2ViVmlldyBfYXBw
Qm91bmROYXZpZ2F0aW9uRGF0YTogXihzdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5n
RGF0YSBkYXRhKSB7Ci0gICAgICAgIEVYUEVDVF9FUShkYXRhLmhhc0xvYWRlZEFwcEJvdW5kUmVx
dWVzdFRlc3RpbmcsIGV4cGVjdGluZ0FwcEJvdW5kUmVxdWVzdHMpOwotICAgICAgICBFWFBFQ1Rf
RVEoZGF0YS5oYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nLCAhZXhwZWN0aW5nQXBw
Qm91bmRSZXF1ZXN0cyk7Ci0gICAgICAgIGlzRG9uZSA9IHRydWU7Ci0gICAgfV07Ci0KLSAgICBp
c0RvbmUgPSBmYWxzZTsKLSAgICBbd2ViVmlldyBfY2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRh
Ol57Ci0gICAgICAgIGlzRG9uZSA9IHRydWU7Ci0gICAgfV07Ci0KLSAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmlzRG9uZSk7Ci0KLSAgICBbd2ViVmlldyByZWxvYWRdOwotICAgIEVYUEVD
VF9XS19TVFJFUShbd2ViVmlldyBfdGVzdF93YWl0Rm9yQWxlcnRdLCBleHBlY3RlZEFsZXJ0KTsK
LQotICAgIGlzRG9uZSA9IGZhbHNlOwotICAgIFt3ZWJWaWV3IF9hcHBCb3VuZE5hdmlnYXRpb25E
YXRhOiBeKHN0cnVjdCBXS0FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhIGRhdGEpIHsKLSAg
ICAgICAgaWYgKHJlc3BvbnNlVHlwZSA9PSBSZXNwb25zZVR5cGU6OlN5bnRoZXRpYykgewotICAg
ICAgICAgICAgRVhQRUNUX0ZBTFNFKGRhdGEuaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGlu
Zyk7Ci0gICAgICAgICAgICBFWFBFQ1RfRkFMU0UoZGF0YS5oYXNMb2FkZWROb25BcHBCb3VuZFJl
cXVlc3RUZXN0aW5nKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIEVYUEVDVF9FUShk
YXRhLmhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcsIGV4cGVjdGluZ0FwcEJvdW5kUmVx
dWVzdHMpOwotICAgICAgICAgICAgRVhQRUNUX0VRKGRhdGEuaGFzTG9hZGVkTm9uQXBwQm91bmRS
ZXF1ZXN0VGVzdGluZywgIWV4cGVjdGluZ0FwcEJvdW5kUmVxdWVzdHMpOwotICAgICAgICB9Ci0g
ICAgICAgIGlzRG9uZSA9IHRydWU7Ci0gICAgfV07Ci0KLSAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmlzRG9uZSk7Ci19Ci0KLVRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91
bmRSZXF1ZXN0V2l0aFNlcnZpY2VXb3JrZXIpCi17Ci0gICAgcnVuVGVzdChSZXNwb25zZVR5cGU6
OlN5bnRoZXRpYywgSXNBcHBCb3VuZDo6Tm8pOwotICAgIHJ1blRlc3QoUmVzcG9uc2VUeXBlOjpG
ZXRjaGVkLCBJc0FwcEJvdW5kOjpObyk7Ci19Ci0KLVRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwg
QXBwQm91bmRSZXF1ZXN0V2l0aFNlcnZpY2VXb3JrZXIpCi17Ci0gICAgcnVuVGVzdChSZXNwb25z
ZVR5cGU6OlN5bnRoZXRpYywgSXNBcHBCb3VuZDo6WWVzKTsKLSAgICBydW5UZXN0KFJlc3BvbnNl
VHlwZTo6RmV0Y2hlZCwgSXNBcHBCb3VuZDo6WWVzKTsKLX0KLQotVEVTVChJbkFwcEJyb3dzZXJQ
cml2YWN5LCBNdWx0aXBsZVdlYlZpZXdzV2l0aFNoYXJlZFNlcnZpY2VXb3JrZXIpCi17Ci0gICAg
c3RhdGljIGJvb2wgaXNEb25lID0gZmFsc2U7Ci0KLSAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBk
ZWZhdWx0RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFs
bFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29t
cGxldGlvbkhhbmRsZXI6XigpIHsKLSAgICAgICAgaXNEb25lID0gdHJ1ZTsKLSAgICB9XTsKLSAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Ci0KLSAgICBjb25zdCBjaGFyKiBq
cyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJl
c3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pIjsKLSAgICBjb25zdCBjaGFyKiBl
eHBlY3RlZEFsZXJ0ID0gImZldGNoZWQgZnJvbSBzZXJ2ZXIiOwotCi0gICAgVGVzdFdlYktpdEFQ
STo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0s
Ci0gICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9q
YXZhc2NyaXB0IiB9fSwganMgfSB9LAotICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIiwgeyAiPHNj
cmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+IiB9IH0sCi0gICAgfSwg
VGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKLQotICAgIGF1dG8g
d2ViVmlldzEgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7Ci0gICAgYXV0byB3ZWJWaWV3MiA9
IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKLQotICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5T
KFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOwotICAgIFtkZWxlZ2F0ZSBzZXREaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6XihXS1dlYlZpZXcgKiwgTlNVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLCB2b2lkICheY2FsbGJhY2spKE5TVVJMU2Vzc2lvbkF1
dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICopKSB7Ci0gICAgICAgIEVY
UEVDVF9XS19TVFJFUShjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0
aG9kLCBOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kU2VydmVyVHJ1c3QpOwotICAgICAgICBjYWxs
YmFjayhOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgW05TVVJMQ3JlZGVu
dGlhbCBjcmVkZW50aWFsRm9yVHJ1c3Q6Y2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJU
cnVzdF0pOwotICAgIH1dOwotICAgIHdlYlZpZXcxLmdldCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9
IGRlbGVnYXRlLmdldCgpOwotICAgIHdlYlZpZXcyLmdldCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9
IGRlbGVnYXRlLmdldCgpOwotCi0gICAgW3dlYlZpZXcxIGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1
ZXN0KCldOwotICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldzEgX3Rlc3Rfd2FpdEZvckFsZXJ0
XSwgInN1Y2Nlc3NmdWxseSByZWdpc3RlcmVkIik7Ci0KLSAgICBbd2ViVmlldzEgcmVsb2FkXTsK
LSAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcxIF90ZXN0X3dhaXRGb3JBbGVydF0sIGV4cGVj
dGVkQWxlcnQpOwotCi0gICAgaXNEb25lID0gZmFsc2U7Ci0gICAgW3dlYlZpZXcxIF9hcHBCb3Vu
ZE5hdmlnYXRpb25EYXRhOiBeKHN0cnVjdCBXS0FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRh
IGRhdGEpIHsKLSAgICAgICAgRVhQRUNUX1RSVUUoZGF0YS5oYXNMb2FkZWRBcHBCb3VuZFJlcXVl
c3RUZXN0aW5nKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKGRhdGEuaGFzTG9hZGVkTm9uQXBwQm91
bmRSZXF1ZXN0VGVzdGluZyk7Ci0gICAgICAgIGlzRG9uZSA9IHRydWU7Ci0gICAgfV07Ci0KLSAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Ci0KLSAgICBpc0RvbmUgPSBmYWxz
ZTsKLSAgICBbd2ViVmlldzEgX2NsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YTpeewotICAgICAg
ICBpc0RvbmUgPSB0cnVlOwotICAgIH1dOwotCi0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZpc0RvbmUpOwotCi0gICAgaXNEb25lID0gZmFsc2U7Ci0gICAgTlNNdXRhYmxlVVJMUmVxdWVz
dCAqbm9uQXBwQm91bmRSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhV
Ukw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRw
czovLzEyNy4wLjAuMTolZC9tYWluLmh0bWwiLCBzZXJ2ZXIucG9ydCgpXV1dOwotICAgIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgbm9uQXBwQm91bmRSZXF1ZXN0Ll9p
c05vbkFwcEluaXRpYXRlZCA9IFlFUzsKLSAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19FTkQKLSAgICBbd2ViVmlldzIgbG9hZFJlcXVlc3Q6bm9uQXBwQm91bmRSZXF1ZXN0XTsKLSAg
ICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcyIF90ZXN0X3dhaXRGb3JBbGVydF0sICJmZXRjaGVk
IGZyb20gc2VydmVyIik7Ci0KLSAgICBbd2ViVmlldzIgcmVsb2FkXTsKLSAgICBFWFBFQ1RfV0tf
U1RSRVEoW3dlYlZpZXcyIF90ZXN0X3dhaXRGb3JBbGVydF0sIGV4cGVjdGVkQWxlcnQpOwotCi0g
ICAgW3dlYlZpZXcyIF9hcHBCb3VuZE5hdmlnYXRpb25EYXRhOiBeKHN0cnVjdCBXS0FwcEJvdW5k
TmF2aWdhdGlvblRlc3RpbmdEYXRhIGRhdGEpIHsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKGRhdGEu
aGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZyk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKGRh
dGEuaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZyk7Ci0gICAgICAgIGlzRG9uZSA9
IHRydWU7Ci0gICAgfV07Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwot
ICAgIGlzRG9uZSA9IGZhbHNlOwotfQotCi1zdGF0aWMgdm9pZCBzb2Z0VXBkYXRlVGVzdChJc0Fw
cEJvdW5kIGlzQXBwQm91bmQpCi17Ci0gICAgX19ibG9jayBib29sIGlzRG9uZSA9IGZhbHNlOwot
ICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5
cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5j
ZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgewotICAgICAgICBp
c0RvbmUgPSB0cnVlOwotICAgIH1dOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNE
b25lKTsKLQotICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVn
YXRlIG5ld10pOwotICAgIFtkZWxlZ2F0ZSBzZXREaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2U6XihXS1dlYlZpZXcgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxl
bmdlLCB2b2lkICheY2FsbGJhY2spKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlv
biwgTlNVUkxDcmVkZW50aWFsICopKSB7Ci0gICAgICAgIEVYUEVDVF9XS19TVFJFUShjaGFsbGVu
Z2UucHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kLCBOU1VSTEF1dGhlbnRpY2F0
aW9uTWV0aG9kU2VydmVyVHJ1c3QpOwotICAgICAgICBjYWxsYmFjayhOU1VSTFNlc3Npb25BdXRo
Q2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgW05TVVJMQ3JlZGVudGlhbCBjcmVkZW50aWFsRm9yVHJ1
c3Q6Y2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJUcnVzdF0pOwotICAgIH1dOwotCi0g
ICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKLSAgICBhdXRvIHdlYlZpZXcxID0gYWRvcHROUyhbW1dLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBhdXRvIHdlYlZpZXcyID0gYWRvcHROUyhb
W1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAw
KSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLQotICAgIHdlYlZpZXcxLmdl
dCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwotICAgIHdlYlZpZXcyLmdl
dCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwotCi0gICAgdWludDE2X3Qg
c2VydmVyUG9ydDsKLSAgICBzdGF0aWMgY29uc3QgY2hhcioganMgPSAic2VsZi5hZGRFdmVudExp
c3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9u
c2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3Jp
cHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIjsKLQotICAgIHsKLSAgICAgICAgVGVz
dFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIxKHsKLSAgICAgICAgICAgIHsgIi8iLCB7IG1h
aW5TV0J5dGVzIH0gfSwKLSAgICAgICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlw
ZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9LAotICAgICAgICB9LCBUZXN0
V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIHRlc3RJZGVu
dGl0eSgpKTsKLSAgICAgICAgc2VydmVyUG9ydCA9IHNlcnZlcjEucG9ydCgpOwotCi0gICAgICAg
IE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IHNlcnZlcjEucmVxdWVzdCgpOwotICAgICAgICBpZiAo
aXNBcHBCb3VuZCA9PSBJc0FwcEJvdW5kOjpObykgewotICAgICAgICAgICAgTlNNdXRhYmxlVVJM
UmVxdWVzdCAqbm9uQXBwQm91bmRSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVz
dFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
QCJodHRwczovLzEyNy4wLjAuMTolZC8iLCBzZXJ2ZXIxLnBvcnQoKV1dXTsKLSAgICAgICAgICAg
IEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgICAgICAgICBub25BcHBC
b3VuZFJlcXVlc3QuX2lzTm9uQXBwSW5pdGlhdGVkID0gWUVTOwotICAgICAgICAgICAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi0gICAgICAgICAgICByZXF1ZXN0ID0gbm9uQXBw
Qm91bmRSZXF1ZXN0OwotICAgICAgICB9Ci0KLSAgICAgICAgW3dlYlZpZXcxIGxvYWRSZXF1ZXN0
OnJlcXVlc3RdOwotICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcxIF90ZXN0X3dhaXRG
b3JBbGVydF0sICJzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZCIpOwotCi0gICAgICAgIHNlcnZlcjEu
Y2FuY2VsKCk7Ci0gICAgfQotCi0gICAgewotICAgICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2Vy
dmVyIHNlcnZlcjIoewotICAgICAgICAgICAgeyAiLyIsIHsgbWFpblNXQnl0ZXMgfSB9LAotICAg
ICAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2ph
dmFzY3JpcHQiIH19LCBqcyB9IH0KLSAgICAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZl
cjo6UHJvdG9jb2w6Okh0dHBzLCBudWxscHRyLCB0ZXN0SWRlbnRpdHkyKCksIHNlcnZlclBvcnQp
OwotCi0gICAgICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdDIgPSBzZXJ2ZXIyLnJlcXVlc3QoKTsK
LSAgICAgICAgaWYgKGlzQXBwQm91bmQgPT0gSXNBcHBCb3VuZDo6Tm8pIHsKLSAgICAgICAgICAg
IE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5vbkFwcEJvdW5kUmVxdWVzdCA9IFtOU011dGFibGVVUkxS
ZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyMi5wb3J0KCldXV07
Ci0gICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgICAg
ICAgICAgbm9uQXBwQm91bmRSZXF1ZXN0Ll9pc05vbkFwcEluaXRpYXRlZCA9IFlFUzsKLSAgICAg
ICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotICAgICAgICAgICAgcmVx
dWVzdDIgPSBub25BcHBCb3VuZFJlcXVlc3Q7Ci0gICAgICAgIH0KLQotICAgICAgICBpc0RvbmUg
PSBmYWxzZTsKLSAgICAgICAgW3dlYlZpZXcxIF9jbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGE6
XnsKLSAgICAgICAgICAgIGlzRG9uZSA9IHRydWU7Ci0gICAgICAgIH1dOwotCi0gICAgICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKLQotICAgICAgICBbd2ViVmlldzIgbG9h
ZFJlcXVlc3Q6cmVxdWVzdDJdOwotICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcyIF90
ZXN0X3dhaXRGb3JBbGVydF0sICJzeW50aGV0aWMgcmVzcG9uc2UiKTsKLSAgICB9Ci0KLSAgICBp
c0RvbmUgPSBmYWxzZTsKLSAgICBib29sIGV4cGVjdGluZ0FwcEJvdW5kUmVxdWVzdHMgPSBpc0Fw
cEJvdW5kID09IElzQXBwQm91bmQ6OlllcyA/IHRydWUgOiBmYWxzZTsKLSAgICB3aGlsZSAoIWlz
RG9uZSkgewotICAgICAgICBbd2ViVmlldzIgX2FwcEJvdW5kTmF2aWdhdGlvbkRhdGE6IF4oc3Ry
dWN0IFdLQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEgZGF0YSkgewotICAgICAgICAgICAg
aWYgKCFkYXRhLmRpZFBlcmZvcm1Tb2Z0VXBkYXRlKQotICAgICAgICAgICAgICAgIHJldHVybjsK
LQotICAgICAgICAgICAgRVhQRUNUX0VRKGRhdGEuaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVz
dGluZywgZXhwZWN0aW5nQXBwQm91bmRSZXF1ZXN0cyk7Ci0gICAgICAgICAgICBFWFBFQ1RfRVEo
ZGF0YS5oYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nLCAhZXhwZWN0aW5nQXBwQm91
bmRSZXF1ZXN0cyk7Ci0gICAgICAgICAgICBpc0RvbmUgPSB0cnVlOwotICAgICAgICB9XTsKLSAg
ICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c3BpblJ1bkxvb3AoMSk7Ci0gICAgfQotfQotCi1U
RVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kUmVxdWVzdFdpdGhTZXJ2aWNlV29ya2Vy
U29mdFVwZGF0ZSkKLXsKLSAgICBzb2Z0VXBkYXRlVGVzdChJc0FwcEJvdW5kOjpZZXMpOwotfQot
Ci1URVNUKEluQXBwQnJvd3NlclByaXZhY3ksIE5vbkFwcEJvdW5kUmVxdWVzdFdpdGhTZXJ2aWNl
V29ya2VyU29mdFVwZGF0ZSkKLXsKLSAgICBzb2Z0VXBkYXRlVGVzdChJc0FwcEJvdW5kOjpObyk7
Ci19Ci0KLXN0YXRpYyB2b2lkIHJ1bldlYlByb2Nlc3NQbHVnSW5UZXN0KElzQXBwQm91bmQgaXNB
cHBCb3VuZCkKLXsKLSAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0g
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0lu
Q2xhc3NOYW1lOkAiSW5BcHBCcm93c2VyUHJpdmFjeVBsdWdJbiJdOwotICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1h
a2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOwotCi0gICAg
TlNTdHJpbmcgKnVybCA9IEAiaHR0cHM6Ly93ZWJraXQub3JnIjsKLQotICAgIF9fYmxvY2sgYm9v
bCBpc0RvbmUgPSBmYWxzZTsKLSAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05T
TXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6dXJs
XV07Ci0gICAgaWYgKGlzQXBwQm91bmQgPT0gSXNBcHBCb3VuZDo6Tm8pIHsKLSAgICAgICAgTlNN
dXRhYmxlVVJMUmVxdWVzdCAqbm9uQXBwQm91bmRSZXF1ZXN0ID0gcmVxdWVzdDsKLSAgICAgICAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICAgICAgbm9uQXBwQm91bmRS
ZXF1ZXN0Ll9pc05vbkFwcEluaXRpYXRlZCA9IFlFUzsKLSAgICAgICAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfRU5ECi0gICAgICAgIHJlcXVlc3QgPSBub25BcHBCb3VuZFJlcXVlc3Q7
Ci0gICAgfQotCi0gICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07Ci0gICAgW3dlYlZp
ZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwotCi0gICAgaXNEb25lID0gZmFs
c2U7Ci0gICAgYm9vbCBleHBlY3RpbmdBcHBCb3VuZFJlcXVlc3RzID0gaXNBcHBCb3VuZCA9PSBJ
c0FwcEJvdW5kOjpZZXMgPyB0cnVlIDogZmFsc2U7Ci0gICAgW3dlYlZpZXcgX2FwcEJvdW5kTmF2
aWdhdGlvbkRhdGE6XihzdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBkYXRh
KSB7Ci0gICAgICAgIEVYUEVDVF9FUShkYXRhLmhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3Rp
bmcsIGV4cGVjdGluZ0FwcEJvdW5kUmVxdWVzdHMpOwotICAgICAgICBFWFBFQ1RfRVEoZGF0YS5o
YXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nLCAhZXhwZWN0aW5nQXBwQm91bmRSZXF1
ZXN0cyk7Ci0gICAgICAgIGlzRG9uZSA9IHRydWU7Ci0gICAgfV07Ci0KLSAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Ci19Ci0KLVRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwg
V2ViUHJvY2Vzc1BsdWdpblRlc3RBcHBCb3VuZCkKLXsKLSAgICBydW5XZWJQcm9jZXNzUGx1Z0lu
VGVzdChJc0FwcEJvdW5kOjpZZXMpOwotfQotCi1URVNUKEluQXBwQnJvd3NlclByaXZhY3ksIFdl
YlByb2Nlc3NQbHVnaW5UZXN0Tm9uQXBwQm91bmQpCi17Ci0gICAgcnVuV2ViUHJvY2Vzc1BsdWdJ
blRlc3QoSXNBcHBCb3VuZDo6Tm8pOwotfQotCi0jaWYgV0tfSEFWRV9DX1NQSQotCi1zdGF0aWMg
Y29uc3QgY2hhciogbWFpblNXQnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCi08c2Ny
aXB0PgotCi1mdW5jdGlvbiBsb2cobXNnKQotewotICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhh
bmRsZXJzLnN3LnBvc3RNZXNzYWdlKG1zZyk7Ci19Ci0KLW5hdmlnYXRvci5zZXJ2aWNlV29ya2Vy
LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBmdW5jdGlvbihldmVudCkgewotICAgIGxvZyhl
dmVudC5kYXRhKTsKLX0pOwotCi10cnkgewotICAgIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJl
Z2lzdGVyKCcvc3cuanMnKS50aGVuKGZ1bmN0aW9uKHJlZykgewotICAgICAgICBpZiAocmVnLmFj
dGl2ZSkgewotICAgICAgICAgICAgd29ya2VyID0gcmVnLmFjdGl2ZTsKLSAgICAgICAgICAgIHdv
cmtlci5wb3N0TWVzc2FnZSgiU0VDT05EIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLSAgICAgICAgd29ya2VyID0gcmVnLmluc3RhbGxpbmc7Ci0gICAgICAgIHdvcmtlci5hZGRF
dmVudExpc3RlbmVyKCdzdGF0ZWNoYW5nZScsIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgaWYg
KHdvcmtlci5zdGF0ZSA9PSAnYWN0aXZhdGVkJykKLSAgICAgICAgICAgICAgICB3b3JrZXIucG9z
dE1lc3NhZ2UoIkZJUlNUIik7Ci0gICAgICAgIH0pOwotICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGVy
cm9yKSB7Ci0gICAgICAgIGxvZygnUmVnaXN0cmF0aW9uIGZhaWxlZCB3aXRoOiAnICsgZXJyb3Ip
OwotICAgIH0pOwotfSBjYXRjaChlKSB7Ci0gICAgbG9nKCdFeGNlcHRpb246ICcgKyBlKTsKLX0K
LTwvc2NyaXB0PgotKVNXUkVTT1VSQ0UiOwotCi1zdGF0aWMgY29uc3QgY2hhciogc2NyaXB0Qnl0
ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCi1zZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ21l
c3NhZ2UnLCBhc3luYyAoZXZlbnQpID0+IHsKLSAgICBpZiAoIXNlbGYuaW50ZXJuYWxzKSB7Ci0g
ICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgnTm8gaW50ZXJuYWxzJyk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBxdWVyeUFwcEJvdW5kVmFsdWUoZXZlbnQsIGZhbHNlKTsK
LX0pOwotCi1hc3luYyBmdW5jdGlvbiBxdWVyeUFwcEJvdW5kVmFsdWUoZXZlbnQsIGhhdmVTZW50
SW5pdGlhbE1lc3NhZ2UpCi17Ci0gICAgdmFyIHJlc3VsdCA9IGF3YWl0IGludGVybmFscy5sYXN0
TmF2aWdhdGlvbldhc0FwcEJvdW5kKCk7Ci0gICAgaWYgKHJlc3VsdCkgewotICAgICAgICBpZiAo
ZXZlbnQuZGF0YSA9PSAiRklSU1QiKSB7Ci0gICAgICAgICAgICBldmVudC5zb3VyY2UucG9zdE1l
c3NhZ2UoJ2FwcC1ib3VuZCcpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAg
ICAgICAgaWYgKCFoYXZlU2VudEluaXRpYWxNZXNzYWdlKQotICAgICAgICAgICAgZXZlbnQuc291
cmNlLnBvc3RNZXNzYWdlKCdzdGFydHMgYXBwLWJvdW5kJyk7Ci0KLSAgICAgICAgcXVlcnlBcHBC
b3VuZFZhbHVlKGV2ZW50LCB0cnVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGV2
ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgnbm9uIGFwcC1ib3VuZCcpOwotfQotCi0pU1dSRVNPVVJD
RSI7Ci0KLQotc3RhdGljIFN0cmluZyBleHBlY3RlZE1lc3NhZ2U7Ci1zdGF0aWMgYm9vbCByZWNl
aXZlZE1lc3NhZ2UgPSBmYWxzZTsKLQotQGludGVyZmFjZSBTV0FwcEJvdW5kUmVxdWVzdE1lc3Nh
Z2VIYW5kbGVyIDogTlNPYmplY3QgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+Ci1AZW5kCi0KLUBp
bXBsZW1lbnRhdGlvbiBTV0FwcEJvdW5kUmVxdWVzdE1lc3NhZ2VIYW5kbGVyCi0tICh2b2lkKXVz
ZXJDb250ZW50Q29udHJvbGxlcjooV0tVc2VyQ29udGVudENvbnRyb2xsZXIgKil1c2VyQ29udGVu
dENvbnRyb2xsZXIgZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6KFdLU2NyaXB0TWVzc2FnZSAqKW1l
c3NhZ2UKLXsKLSAgICBFWFBFQ1RfV0tfU1RSRVEobWVzc2FnZS5ib2R5LCBleHBlY3RlZE1lc3Nh
Z2UpOwotICAgIHJlY2VpdmVkTWVzc2FnZSA9IHRydWU7Ci19Ci1AZW5kCi0KLVRFU1QoSW5BcHBC
cm93c2VyUHJpdmFjeSwgUmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50VXBkYXRlc0FwcEJvdW5k
VmFsdWUpCi17Ci0gICAgc3RhdGljIGJvb2wgaXNEb25lID0gZmFsc2U7Ci0KLSAgICBbW1dLV2Vi
c2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJz
aXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBk
aXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKLSAgICAgICAgaXNEb25lID0gdHJ1
ZTsKLSAgICB9XTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Ci0KLSAg
ICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2Vi
UHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsK
LSAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFRlc3RXZWJL
aXRBUEk6OlV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIkludGVybmFs
c0luamVjdGVkQnVuZGxlVGVzdCIpKTsKLSAgICBjb25maWd1cmF0aW9uLnByb2Nlc3NQb29sID0g
KFdLUHJvY2Vzc1Bvb2wgKiljb250ZXh0LmdldCgpOwotCi0gICAgUmV0YWluUHRyPFNXQXBwQm91
bmRSZXF1ZXN0TWVzc2FnZUhhbmRsZXI+IG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1NXQXBw
Qm91bmRSZXF1ZXN0TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKLSAgICBbW2NvbmZpZ3Vy
YXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNz
YWdlSGFuZGxlci5nZXQoKSBuYW1lOkAic3ciXTsKLQotICAgIGF1dG8gd2ViVmlldzEgPSBhZG9w
dE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAw
LCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOwotICAgIGF1dG8gd2ViVmlldzIg
PSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOwotCi0gICAgYXV0byBk
ZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7Ci0gICAgW2Rl
bGVnYXRlIHNldERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpeKFdLV2ViVmlldyAq
LCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UsIHZvaWQgKF5jYWxsYmFj
aykoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwg
KikpIHsKLSAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uu
YXV0aGVudGljYXRpb25NZXRob2QsIE5TVVJMQXV0aGVudGljYXRpb25NZXRob2RTZXJ2ZXJUcnVz
dCk7Ci0gICAgICAgIGNhbGxiYWNrKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50
aWFsLCBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVj
dGlvblNwYWNlLnNlcnZlclRydXN0XSk7Ci0gICAgfV07Ci0KLSAgICB3ZWJWaWV3MS5nZXQoKS5u
YXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKLSAgICB3ZWJWaWV3Mi5nZXQoKS5u
YXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKLQotICAgIFNlcnZpY2VXb3JrZXJU
Q1BTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAidGV4dC9odG1sIiwgbWFpblNXQnl0ZXNEZWZh
dWx0VmFsdWUgfSwKLSAgICAgICAgeyAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIsIHNjcmlwdEJ5
dGVzRGVmYXVsdFZhbHVlIH0sCi0gICAgfSwgewotICAgICAgICB7ICJ0ZXh0L2h0bWwiLCBtYWlu
U1dCeXRlc0RlZmF1bHRWYWx1ZSB9LAotICAgICAgICB7ICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0
Iiwgc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgfSwKLSAgICB9KTsKLQotICAgIC8vIExvYWQgV2Vi
VmlldyB3aXRoIGFuIGFwcC1ib3VuZCByZXF1ZXN0LiBXZSBleHBlY3QgdGhlIFNlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eSB0byBiZSBhcHAtYm91bmQuCi0gICAgZXhwZWN0ZWRNZXNzYWdlID0gImFw
cC1ib3VuZCI7Ci0gICAgW3dlYlZpZXcxIGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOwot
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRNZXNzYWdlKTsKLQotICAgIC8v
IExvYWQgV2ViVmlldyB3aXRoIGEgbm9uIGFwcC1ib3VuZCByZXF1ZXN0LiBXZSBleHBlY3QgdGhl
IFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSB0byBiZSBhcHAtYm91bmQKLSAgICAvLyBhdCBmaXJz
dCwgYnV0IHRoZW4gYmVjb21lIG5vbiBhcHAtYm91bmQgb25jZSB0aGUgc2Vjb25kIHdlYlZpZXcg
aXMgY2xvc2VkIGFuZCBpdHMgY2xpZW50IGlzIHVucmVnaXN0ZXJlZC4KLSAgICBleHBlY3RlZE1l
c3NhZ2UgPSAic3RhcnRzIGFwcC1ib3VuZCI7Ci0gICAgcmVjZWl2ZWRNZXNzYWdlID0gZmFsc2U7
Ci0gICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqbm9uQXBwQm91bmRSZXF1ZXN0ID0gW05TTXV0YWJs
ZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5n
IHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwOi8vMTI3LjAuMC4xOiVkL21haW4uaHRtbCIsIHNlcnZl
ci5wb3J0KCldXV07Ci0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAg
ICBub25BcHBCb3VuZFJlcXVlc3QuX2lzTm9uQXBwSW5pdGlhdGVkID0gWUVTOwotICAgIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotCi0gICAgW3dlYlZpZXcyIGxvYWRSZXF1ZXN0
Om5vbkFwcEJvdW5kUmVxdWVzdF07Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNl
aXZlZE1lc3NhZ2UpOwotCi0gICAgLy8gQ2xvc2UgdGhlIGFwcC1ib3VuZCB2aWV3LiBXZSBleHBl
Y3QgdGhhdCB0aGUgZXhpc3Rpbmcgd29ya2VyIHdpbGwgYmVjb21lIG5vbiBhcHAtYm91bmQKLSAg
ICAvLyBub3cgdGhhdCBhbGwgYXBwLWJvdW5kIGNsaWVudHMgaGF2ZSBiZWVuIHJlbW92ZWQuCi0g
ICAgZXhwZWN0ZWRNZXNzYWdlID0gIm5vbiBhcHAtYm91bmQiOwotICAgIHJlY2VpdmVkTWVzc2Fn
ZSA9IGZhbHNlOwotICAgIFt3ZWJWaWV3MSBfY2xvc2VdOwotICAgIHdlYlZpZXcxID0gbnVsbHB0
cjsKLQotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRNZXNzYWdlKTsKLX0K
LQotI2VuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5UGx1Z0luLm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5UGx1Z0luLm1tCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MTZjMTVmNDJjNGY3MTU4NWFkMzk2N2ViOTgy
MmI4MzYwMjgzODE4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJp
dmFjeVBsdWdJbi5tbQorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW1wb3J0ICJjb25maWcuaCIKLQotI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKLSNp
bXBvcnQgPFdlYktpdC9XS1dlYlByb2Nlc3NQbHVnSW4uaD4KLSNpbXBvcnQgPFdlYktpdC9XS1dl
YlByb2Nlc3NQbHVnSW5Mb2FkRGVsZWdhdGUuaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
LQotQGludGVyZmFjZSBJbkFwcEJyb3dzZXJQcml2YWN5UGx1Z0luIDogTlNPYmplY3QgPFdLV2Vi
UHJvY2Vzc1BsdWdJbiwgV0tXZWJQcm9jZXNzUGx1Z0luTG9hZERlbGVnYXRlPgotQGVuZAotCi1A
aW1wbGVtZW50YXRpb24gSW5BcHBCcm93c2VyUHJpdmFjeVBsdWdJbiB7IH0KLQotLSAoTlNVUkxS
ZXF1ZXN0ICopd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjooV0tXZWJQ
cm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyICopY29udHJvbGxlciBmcmFtZToo
V0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUgKilmcmFtZSB3aWxsU2VuZFJlcXVlc3RGb3JSZXNvdXJj
ZToodWludDY0X3QpcmVzb3VyY2UgcmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCByZWRp
cmVjdFJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVkaXJlY3RSZXNwb25zZQotewotICAgIHJl
dHVybiBhZG9wdE5TKFtbTlNVUkxSZXF1ZXN0IGFsbG9jXSBpbml0V2l0aFVSTDpyZXF1ZXN0LlVS
TF0pLmF1dG9yZWxlYXNlKCk7Ci19Ci0KLUBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvYXBwLXByaXZhY3ktcmVwb3J0LWlmcmFtZS5odG1sIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9hcHAtcHJpdmFjeS1yZXBvcnQt
aWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTY5ZGUyOWJiMmQxZDY0MzRiOGIyOWFlNzc1YWQ4YzJl
NDhjNTM5MQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKaW5kZXggNGRhMTNiMTUzNDQ1OTVmMTQ3
NmUxNzU4NmQ5MTY4YTVjZDEzZjIyOS4uMzdjOGNhZTA1ZWUyNDExYzVmYzQ4OTZjYmRmOTM1NjY5
YzJlMTAyOSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCkBAIC0zODgsOSArMzg4LDggQEAg
aW50ZXJmYWNlIFRlc3RSdW5uZXIgewogICAgIGJvb2xlYW4gaGFzQXBwQm91bmRTZXNzaW9uKCk7
CiAgICAgdW5kZWZpbmVkIGNsZWFyQXBwQm91bmRTZXNzaW9uKCk7CiAgICAgdW5kZWZpbmVkIHNl
dEFwcEJvdW5kRG9tYWlucyhvYmplY3Qgb3JpZ2luc0FycmF5LCBvYmplY3QgY2FsbGJhY2spOwot
ICAgIHVuZGVmaW5lZCBhcHBCb3VuZFJlcXVlc3RDb250ZXh0RGF0YUZvckRvbWFpbihET01TdHJp
bmcgZG9tYWluLCBvYmplY3QgY2FsbGJhY2spOwotICAgIGJvb2xlYW4gZGlkTG9hZEFwcEJvdW5k
UmVxdWVzdCgpOwotICAgIGJvb2xlYW4gZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdCgpOworICAg
IGJvb2xlYW4gZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3QoKTsKKyAgICBib29sZWFuIGRpZExv
YWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0KCk7CiAKICAgICB1bmRlZmluZWQgaW5qZWN0VXNlclNj
cmlwdChET01TdHJpbmcgc3RyaW5nKTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQg
bG9uZyB1c2VyU2NyaXB0SW5qZWN0ZWRDb3VudDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggNjdiMzUz
ZjMwMGZmYmY2NWQzNDQ2YzJlNGQ4MjEyMDVlNjNlMTdhNy4uNmU0MTRjY2RlNjcwZTcwNjI2OGI0
NjRhNDMwMTZhYjM3ZjUyYzc4ZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTQxNSwxNCArNDE1LDYg
QEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UoV0tCdW5kbGVQ
YWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG0KICAgICAgICAgbV90ZXN0UnVubmVyLT5jYWxsRGlk
UmVjZWl2ZUxvYWRlZFN1YnJlc291cmNlRG9tYWluc0NhbGxiYWNrKFdURk1vdmUoZG9tYWlucykp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAotICAgIGlmIChXS1N0cmluZ0lzRXF1YWxU
b1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQ2FsbERpZFJlY2VpdmVBcHBCb3VuZFJlcXVlc3RD
b250ZXh0RGF0YUZvckRvbWFpbiIpKSB7Ci0gICAgICAgIEFTU0VSVChtZXNzYWdlQm9keSk7Ci0g
ICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tTdHJpbmdHZXRUeXBl
SUQoKSk7Ci0KLSAgICAgICAgYXV0byByZXN1bHRTdHJpbmcgPSB0b1dURlN0cmluZyhzdGF0aWNf
Y2FzdDxXS1N0cmluZ1JlZj4obWVzc2FnZUJvZHkpKTsKLSAgICAgICAgbV90ZXN0UnVubmVyLT5j
YWxsRGlkUmVjZWl2ZUFwcEJvdW5kUmVxdWVzdENvbnRleHREYXRhRm9yRG9tYWluQ2FsbGJhY2so
V1RGTW92ZShyZXN1bHRTdHJpbmcpKTsKLSAgICB9CiAKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFs
VG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkNhbGxEaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVu
dGlhbHNDYWxsYmFjayIpKSB7CiAgICAgICAgIG1fdGVzdFJ1bm5lci0+Y2FsbERpZFJlbW92ZUFs
bFNlc3Npb25DcmVkZW50aWFsc0NhbGxiYWNrKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCAzZjcyYWMyYTQ4MTQ2
ZTMwMTQ4MmRkMmVkNGViYzE5MmZmNTU1ZDMxLi40NmZmN2E1Yjc1NGI4YTA3YTFiZTY5NGY0Njk5
YTkyMjE2OGZmZWMyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTY0NSw3ICs2NDUsNiBAQCBlbnVtIHsKICAgICBE
aWRTZXRBcHBCb3VuZERvbWFpbnNDYWxsYmFja0lELAogICAgIEVudGVyRnVsbHNjcmVlbkZvckVs
ZW1lbnRDYWxsYmFja0lELAogICAgIEV4aXRGdWxsc2NyZWVuRm9yRWxlbWVudENhbGxiYWNrSUQs
Ci0gICAgQXBwQm91bmRSZXF1ZXN0Q29udGV4dERhdGFGb3JEb21haW5DYWxsYmFja0lELAogICAg
IERpZE5vdEhhbmRsZVRhcEFzTWVhbmluZ2Z1bENsaWNrQ2FsbGJhY2tJRCwKICAgICBGaXJzdFVJ
U2NyaXB0Q2FsbGJhY2tJRCA9IDEwMAogfTsKQEAgLTIxMTUsMjYgKzIxMTQsMTQgQEAgdm9pZCBU
ZXN0UnVubmVyOjpkaWRTZXRBcHBCb3VuZERvbWFpbnNDYWxsYmFjaygpCiAgICAgY2FsbFRlc3RS
dW5uZXJDYWxsYmFjayhEaWRTZXRBcHBCb3VuZERvbWFpbnNDYWxsYmFja0lEKTsKIH0KIAotdm9p
ZCBUZXN0UnVubmVyOjphcHBCb3VuZFJlcXVlc3RDb250ZXh0RGF0YUZvckRvbWFpbihKU1N0cmlu
Z1JlZiBkb21haW4sIEpTVmFsdWVSZWYgY2FsbGJhY2spCitib29sIFRlc3RSdW5uZXI6OmRpZExv
YWRBcHBJbml0aWF0ZWRSZXF1ZXN0KCkKIHsKLSAgICBjYWNoZVRlc3RSdW5uZXJDYWxsYmFjayhB
cHBCb3VuZFJlcXVlc3RDb250ZXh0RGF0YUZvckRvbWFpbkNhbGxiYWNrSUQsIGNhbGxiYWNrKTsK
LSAgICBwb3N0TWVzc2FnZSgiQXBwQm91bmRSZXF1ZXN0Q29udGV4dERhdGFGb3JEb21haW4iLCBk
b21haW4pOworICAgIHJldHVybiBwb3N0U3luY2hyb25vdXNQYWdlTWVzc2FnZVJldHVybmluZ0Jv
b2xlYW4oIkRpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0Iik7CiB9CiAKLXZvaWQgVGVzdFJ1bm5l
cjo6Y2FsbERpZFJlY2VpdmVBcHBCb3VuZFJlcXVlc3RDb250ZXh0RGF0YUZvckRvbWFpbkNhbGxi
YWNrKFN0cmluZyYmIGNvbnRleHREb21haW4pCitib29sIFRlc3RSdW5uZXI6OmRpZExvYWROb25B
cHBJbml0aWF0ZWRSZXF1ZXN0KCkKIHsKLSAgICBKU1ZhbHVlUmVmIHJlc3VsdFZhbHVlID0gSlNW
YWx1ZU1ha2VTdHJpbmcobWFpbkZyYW1lSlNDb250ZXh0KCksIGNyZWF0ZUpTU3RyaW5nKGNvbnRl
eHREb21haW4udXRmOCgpLmRhdGEoKSkuZ2V0KCkpOwotICAgIGNhbGxUZXN0UnVubmVyQ2FsbGJh
Y2soQXBwQm91bmRSZXF1ZXN0Q29udGV4dERhdGFGb3JEb21haW5DYWxsYmFja0lELCAxLCAmcmVz
dWx0VmFsdWUpOwotfQotCi1ib29sIFRlc3RSdW5uZXI6OmRpZExvYWRBcHBCb3VuZFJlcXVlc3Qo
KQotewotICAgIHJldHVybiBwb3N0U3luY2hyb25vdXNQYWdlTWVzc2FnZVJldHVybmluZ0Jvb2xl
YW4oIkRpZExvYWRBcHBCb3VuZFJlcXVlc3QiKTsKLX0KLQotYm9vbCBUZXN0UnVubmVyOjpkaWRM
b2FkTm9uQXBwQm91bmRSZXF1ZXN0KCkKLXsKLSAgICByZXR1cm4gcG9zdFN5bmNocm9ub3VzUGFn
ZU1lc3NhZ2VSZXR1cm5pbmdCb29sZWFuKCJEaWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0Iik7Cisg
ICAgcmV0dXJuIHBvc3RTeW5jaHJvbm91c1BhZ2VNZXNzYWdlUmV0dXJuaW5nQm9vbGVhbigiRGlk
TG9hZE5vbkFwcEluaXRpYXRlZFJlcXVlc3QiKTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpzZXRJ
c1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkdyYW50ZWQoYm9vbCBncmFudGVkKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRl
eCAxYmU2NjNkOGVkODFjMzkwYzFkOGI5YzZjYjYxMDBkYmE4NDUxNDI2Li4zYTM0YmEwNzNiYzE5
YjBhODE0ZmRmYjIyYTJjOGNmMGY0ODE0OGZhIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtNDk3LDEwICs0OTcsOSBAQCBw
dWJsaWM6CiAgICAgdm9pZCBjbGVhckFwcEJvdW5kU2Vzc2lvbigpOwogICAgIHZvaWQgc2V0QXBw
Qm91bmREb21haW5zKEpTVmFsdWVSZWYgb3JpZ2luQXJyYXksIEpTVmFsdWVSZWYgY2FsbGJhY2sp
OwogICAgIHZvaWQgZGlkU2V0QXBwQm91bmREb21haW5zQ2FsbGJhY2soKTsKLSAgICB2b2lkIGFw
cEJvdW5kUmVxdWVzdENvbnRleHREYXRhRm9yRG9tYWluKEpTU3RyaW5nUmVmLCBKU1ZhbHVlUmVm
KTsKLSAgICB2b2lkIGNhbGxEaWRSZWNlaXZlQXBwQm91bmRSZXF1ZXN0Q29udGV4dERhdGFGb3JE
b21haW5DYWxsYmFjayhTdHJpbmcmJik7Ci0gICAgYm9vbCBkaWRMb2FkQXBwQm91bmRSZXF1ZXN0
KCk7Ci0gICAgYm9vbCBkaWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0KCk7CisKKyAgICBib29sIGRp
ZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0KCk7CisgICAgYm9vbCBkaWRMb2FkTm9uQXBwSW5pdGlh
dGVkUmVxdWVzdCgpOwogCiAgICAgc2l6ZV90IHVzZXJTY3JpcHRJbmplY3RlZENvdW50KCkgY29u
c3Q7CiAgICAgdm9pZCBpbmplY3RVc2VyU2NyaXB0KEpTU3RyaW5nUmVmKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggY2ZjOWM0NDgzYzgyNWQ5MTNlZDI3
YTRkNTU4ODRmMjQyZDc2ZjAwMi4uOTgzYjg1YjBhM2EyODRmMDliNzg0MDBlMDhjYzA3MjBhY2Ez
NDAxOSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTEw
NzgsNyArMTA3OCw3IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3Rl
bnRWYWx1ZXMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMsIFJlCiAgICAgICAgIHVwZGF0ZUxp
dmVEb2N1bWVudHNBZnRlclRlc3QoKTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgY2xl
YXJBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJUZXN0aW5nT3ZlcnJpZGUoKTsKLSAgICAgICAg
Y2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhKCk7CisgICAgICAgIGNsZWFyQXBwUHJpdmFjeVJl
cG9ydFRlc3RpbmdEYXRhKCk7CiAjZW5kaWYKICAgICAgICAgY2xlYXJCdW5kbGVJZGVudGlmaWVy
SW5OZXR3b3JrUHJvY2VzcygpOwogICAgIH0KQEAgLTI3MjMsMjEgKzI3MjMsMTcgQEAgdm9pZCBU
ZXN0Q29udHJvbGxlcjo6cmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKCkKIHsKIH0KIAotdm9p
ZCBUZXN0Q29udHJvbGxlcjo6YXBwQm91bmRSZXF1ZXN0Q29udGV4dERhdGFGb3JEb21haW4oV0tT
dHJpbmdSZWYpCi17Ci19Ci0KLWJvb2wgVGVzdENvbnRyb2xsZXI6OmRpZExvYWRBcHBCb3VuZFJl
cXVlc3QoKQorYm9vbCBUZXN0Q29udHJvbGxlcjo6ZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3Qo
KQogewogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBUZXN0Q29udHJvbGxlcjo6ZGlkTG9h
ZE5vbkFwcEJvdW5kUmVxdWVzdCgpCitib29sIFRlc3RDb250cm9sbGVyOjpkaWRMb2FkTm9uQXBw
SW5pdGlhdGVkUmVxdWVzdCgpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFRlc3RD
b250cm9sbGVyOjpjbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGEoKQordm9pZCBUZXN0Q29udHJv
bGxlcjo6Y2xlYXJBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoKQogewogfQogCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXggYmMwZWM1MjY5MzQ3MzYxYzMxNWU2
ZTRkMDdkYjgxYWJiNmI0N2M2ZS4uNzI4NjQ4NDFjZTYwNDg5MGY3YjU2NzAyYzRiNmIwNGZmNmM4
N2JkYSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5o
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMjYyLDEw
ICsyNjIsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhckxvYWRlZFN1YnJlc291cmNlRG9tYWlu
cygpOwogICAgIHZvaWQgY2xlYXJBcHBCb3VuZFNlc3Npb24oKTsKICAgICB2b2lkIHJlaW5pdGlh
bGl6ZUFwcEJvdW5kRG9tYWlucygpOwotICAgIHZvaWQgYXBwQm91bmRSZXF1ZXN0Q29udGV4dERh
dGFGb3JEb21haW4oV0tTdHJpbmdSZWYpOwotICAgIHZvaWQgY2xlYXJBcHBCb3VuZE5hdmlnYXRp
b25EYXRhKCk7Ci0gICAgYm9vbCBkaWRMb2FkQXBwQm91bmRSZXF1ZXN0KCk7Ci0gICAgYm9vbCBk
aWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0KCk7CisgICAgdm9pZCBjbGVhckFwcFByaXZhY3lSZXBv
cnRUZXN0aW5nRGF0YSgpOworICAgIGJvb2wgZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3QoKTsK
KyAgICBib29sIGRpZExvYWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0KCk7CiAKICAgICB2b2lkIHVw
ZGF0ZUJ1bmRsZUlkZW50aWZpZXJJbk5ldHdvcmtQcm9jZXNzKGNvbnN0IHN0ZDo6c3RyaW5nJiBi
dW5kbGVJZGVudGlmaWVyKTsKICAgICB2b2lkIGNsZWFyQnVuZGxlSWRlbnRpZmllckluTmV0d29y
a1Byb2Nlc3MoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9j
YXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5k
ZXggNWQzMjcyMzkyYmVlMTBjN2JjZWVhZDRjM2Y5MjE0NmUxZWI5M2VhMC4uOGQ3NmU0YmEwZGFi
YWQ4YTk0YzZlYTRhYjlhNWIzY2RjMGQxZjc5ZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0SW52b2NhdGlvbi5jcHAKQEAgLTc5MiwxMiArNzkyLDYgQEAgdm9pZCBUZXN0SW52b2NhdGlv
bjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVzc2Fn
ZU5hbWUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChXS1N0cmluZ0lzRXF1YWxU
b1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQXBwQm91bmRSZXF1ZXN0Q29udGV4dERhdGFGb3JE
b21haW4iKSkgewotICAgICAgICBXS1N0cmluZ1JlZiBkb21haW4gPSBzdHJpbmdWYWx1ZShtZXNz
YWdlQm9keSk7Ci0gICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5hcHBCb3VuZFJl
cXVlc3RDb250ZXh0RGF0YUZvckRvbWFpbihkb21haW4pOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKQEAgLTEwNzEsMTEgKzEwNjUsMTEg
QEAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNo
cm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEIKICAgICAgICAgcmV0dXJuIGFkb3B0V0soV0tCb29s
ZWFuQ3JlYXRlKHN0YXRpc3RpY0luRGF0YWJhc2VPbmNlKSk7CiAgICAgfQogCi0gICAgaWYgKFdL
U3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJEaWRMb2FkQXBwQm91bmRS
ZXF1ZXN0IikpCi0gICAgICAgIHJldHVybiBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShUZXN0Q29u
dHJvbGxlcjo6c2luZ2xldG9uKCkuZGlkTG9hZEFwcEJvdW5kUmVxdWVzdCgpKSk7CisgICAgaWYg
KFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJEaWRMb2FkQXBwSW5p
dGlhdGVkUmVxdWVzdCIpKQorICAgICAgICByZXR1cm4gYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUo
VGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmRpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0KCkp
KTsKIAotICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAi
RGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdCIpKQotICAgICAgICByZXR1cm4gYWRvcHRXSyhXS0Jv
b2xlYW5DcmVhdGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmRpZExvYWROb25BcHBCb3Vu
ZFJlcXVlc3QoKSkpOworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3Nh
Z2VOYW1lLCAiRGlkTG9hZE5vbkFwcEluaXRpYXRlZFJlcXVlc3QiKSkKKyAgICAgICAgcmV0dXJu
IGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5kaWRM
b2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdCgpKSk7CiAKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFs
VG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldFN0YXRpc3RpY3NHcmFuZGZhdGhlcmVkIikp
IHsKICAgICAgICAgYXV0byBtZXNzYWdlQm9keURpY3Rpb25hcnkgPSBkaWN0aW9uYXJ5VmFsdWUo
bWVzc2FnZUJvZHkpOwpAQCAtMTU4MSwxMiArMTU3NSw2IEBAIHZvaWQgVGVzdEludm9jYXRpb246
OmRpZFJlY2VpdmVMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnMoVmVjdG9yPFN0cmluZz4mJiBkb21h
aW5zCiAgICAgcG9zdFBhZ2VNZXNzYWdlKCJDYWxsRGlkUmVjZWl2ZUxvYWRlZFN1YnJlc291cmNl
RG9tYWlucyIsIG1lc3NhZ2VCb2R5KTsKIH0KIAotdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVj
ZWl2ZUFwcEJvdW5kUmVxdWVzdENvbnRleHREYXRhRm9yRG9tYWluKFN0cmluZyYmIGRvbWFpbikK
LXsKLSAgICBhdXRvIG1lc3NhZ2VCb2R5ID0gV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
ZG9tYWluLnV0ZjgoKS5kYXRhKCkpOwotICAgIHBvc3RQYWdlTWVzc2FnZSgiQ2FsbERpZFJlY2Vp
dmVBcHBCb3VuZFJlcXVlc3RDb250ZXh0RGF0YUZvckRvbWFpbiIsIG1lc3NhZ2VCb2R5KTsKLX0K
LQogdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKCkK
IHsKICAgICBwb3N0UGFnZU1lc3NhZ2UoIkNhbGxEaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlh
bHNDYWxsYmFjayIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52
b2NhdGlvbi5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCmluZGV4
IGE4Yzg1NGUyNzY3ZDY5ODI2ZWQ5NzYzM2I3MWUzMjU4MWU4NmYyODYuLmYxMTI2YTNlZTU1MmNl
ZGQ0YjAxZWJiZGNmMTM1YTI1ZmRhMDIyNjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJ
bnZvY2F0aW9uLmgKQEAgLTk3LDcgKzk3LDYgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVtb3Zl
QWxsU2Vzc2lvbkNyZWRlbnRpYWxzKCk7CiAKICAgICB2b2lkIGRpZFNldEFwcEJvdW5kRG9tYWlu
cygpOwotICAgIHZvaWQgZGlkUmVjZWl2ZUFwcEJvdW5kUmVxdWVzdENvbnRleHREYXRhRm9yRG9t
YWluKFN0cmluZyYmKTsKIAogICAgIHZvaWQgZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsK
IApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxl
ckNvY29hLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNv
Y29hLm1tCmluZGV4IDZmMTRmY2Q3YjMxZjQzNjk1ZWVhYTE3MzYwMThmMjg1ODkwMTRjMDcuLjk4
Y2NiNGRiOWFiMDhiYWIyOTMzMGFiNGNiYTJlMjQ1ZTk5NDRmN2QgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KQEAgLTM4NCwy
MyArMzg0LDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Y2xlYXJMb2FkZWRTdWJyZXNvdXJjZURv
bWFpbnMoKQogICAgIFtbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24oKSB3ZWJzaXRlRGF0YVN0
b3JlXSBfY2xlYXJMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnNGb3I6cGFyZW50Vmlldy0+cGxhdGZv
cm1WaWV3KCldOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjphcHBCb3VuZFJlcXVlc3RDb250
ZXh0RGF0YUZvckRvbWFpbihXS1N0cmluZ1JlZiBkb21haW4pCi17Ci0gICAgYXV0byogcGFyZW50
VmlldyA9IG1haW5XZWJWaWV3KCk7Ci0gICAgaWYgKCFwYXJlbnRWaWV3KQotICAgICAgICByZXR1
cm47Ci0KLSAgICBbbV9tYWluV2ViVmlldy0+cGxhdGZvcm1WaWV3KCkgX2FwcEJvdW5kTmF2aWdh
dGlvbkRhdGFGb3JEb21haW46dG9XVEZTdHJpbmcoZG9tYWluKSBjb21wbGV0aW9uSGFuZGxlcjpe
KE5TU3RyaW5nICpjb250ZXh0KSB7Ci0gICAgICAgIGlmICghY29udGV4dCkgewotICAgICAgICAg
ICAgbV9jdXJyZW50SW52b2NhdGlvbi0+ZGlkUmVjZWl2ZUFwcEJvdW5kUmVxdWVzdENvbnRleHRE
YXRhRm9yRG9tYWluKHsgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAg
ICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRSZWNlaXZlQXBwQm91bmRSZXF1ZXN0Q29udGV4
dERhdGFGb3JEb21haW4oU3RyaW5nKGNvbnRleHQpKTsKLSAgICB9XTsKLX0KLQotYm9vbCBUZXN0
Q29udHJvbGxlcjo6ZGlkTG9hZEFwcEJvdW5kUmVxdWVzdCgpCitib29sIFRlc3RDb250cm9sbGVy
OjpkaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdCgpCiB7CiAgICAgYXV0byogcGFyZW50VmlldyA9
IG1haW5XZWJWaWV3KCk7CiAgICAgaWYgKCFwYXJlbnRWaWV3KQpAQCAtNDA4LDcgKzM5Miw3IEBA
IGJvb2wgVGVzdENvbnRyb2xsZXI6OmRpZExvYWRBcHBCb3VuZFJlcXVlc3QoKQogCiAgICAgX19i
bG9jayBib29sIGlzRG9uZSA9IGZhbHNlOwogICAgIF9fYmxvY2sgYm9vbCBkaWRMb2FkUmVzdWx0
ID0gZmFsc2U7Ci0gICAgW21fbWFpbldlYlZpZXctPnBsYXRmb3JtVmlldygpIF9kaWRMb2FkQXBw
Qm91bmRSZXF1ZXN0Ol4oQk9PTCByZXN1bHQpIHsKKyAgICBbbV9tYWluV2ViVmlldy0+cGxhdGZv
cm1WaWV3KCkgX2RpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0Ol4oQk9PTCByZXN1bHQpIHsKICAg
ICAgICAgZGlkTG9hZFJlc3VsdCA9IHJlc3VsdDsKICAgICAgICAgaXNEb25lID0gdHJ1ZTsKICAg
ICB9XTsKQEAgLTQxNiw3ICs0MDAsNyBAQCBib29sIFRlc3RDb250cm9sbGVyOjpkaWRMb2FkQXBw
Qm91bmRSZXF1ZXN0KCkKICAgICByZXR1cm4gZGlkTG9hZFJlc3VsdDsKIH0KIAotYm9vbCBUZXN0
Q29udHJvbGxlcjo6ZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdCgpCitib29sIFRlc3RDb250cm9s
bGVyOjpkaWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdCgpCiB7CiAgICAgYXV0byogcGFyZW50
VmlldyA9IG1haW5XZWJWaWV3KCk7CiAgICAgaWYgKCFwYXJlbnRWaWV3KQpAQCAtNDI0LDcgKzQw
OCw3IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OmRpZExvYWROb25BcHBCb3VuZFJlcXVlc3QoKQog
CiAgICAgX19ibG9jayBib29sIGlzRG9uZSA9IGZhbHNlOwogICAgIF9fYmxvY2sgYm9vbCBkaWRM
b2FkUmVzdWx0ID0gZmFsc2U7Ci0gICAgW21fbWFpbldlYlZpZXctPnBsYXRmb3JtVmlldygpIF9k
aWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0Ol4oQk9PTCByZXN1bHQpIHsKKyAgICBbbV9tYWluV2Vi
Vmlldy0+cGxhdGZvcm1WaWV3KCkgX2RpZExvYWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0Ol4oQk9P
TCByZXN1bHQpIHsKICAgICAgICAgZGlkTG9hZFJlc3VsdCA9IHJlc3VsdDsKICAgICAgICAgaXNE
b25lID0gdHJ1ZTsKICAgICB9XTsKQEAgLTQzMiwxNCArNDE2LDE0IEBAIGJvb2wgVGVzdENvbnRy
b2xsZXI6OmRpZExvYWROb25BcHBCb3VuZFJlcXVlc3QoKQogICAgIHJldHVybiBkaWRMb2FkUmVz
dWx0OwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpjbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRh
dGEoKQordm9pZCBUZXN0Q29udHJvbGxlcjo6Y2xlYXJBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0Rh
dGEoKQogewogICAgIGF1dG8qIHBhcmVudFZpZXcgPSBtYWluV2ViVmlldygpOwogICAgIGlmICgh
cGFyZW50VmlldykKICAgICAgICAgcmV0dXJuOwogCiAgICAgX19ibG9jayBib29sIGRvbmVDbGVh
cmluZyA9IGZhbHNlOwotICAgIFttX21haW5XZWJWaWV3LT5wbGF0Zm9ybVZpZXcoKSBfY2xlYXJB
cHBCb3VuZE5hdmlnYXRpb25EYXRhOl57CisgICAgW21fbWFpbldlYlZpZXctPnBsYXRmb3JtVmll
dygpIF9jbGVhckFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YTpeewogICAgICAgICBkb25lQ2xl
YXJpbmcgPSB0cnVlOwogICAgIH1dOwogICAgIHBsYXRmb3JtUnVuVW50aWwoZG9uZUNsZWFyaW5n
LCBub1RpbWVvdXQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9U
ZXN0UnVubmVyV0tXZWJWaWV3LmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RS
dW5uZXJXS1dlYlZpZXcuaAppbmRleCA0Y2Q2ZGExZmQ2ZjhlNzQ0ZjM5MDRlMDZhZWJjODI2OWYx
YWRlYTM5Li4wNzQ3NmI2ZTFhZTg5MTAwZTlmYmI5ZGNlZTIyNjM3Mzk4NzgxMjgyIDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5uZXJXS1dlYlZpZXcuaAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5uZXJXS1dlYlZpZXcuaApA
QCAtODIsOCArODIsNyBAQAogCiAtICh2b2lkKWRpc21pc3NBY3RpdmVNZW51OwogLSAodm9pZCly
ZXNldEludGVyYWN0aW9uQ2FsbGJhY2tzOwotLSAodm9pZClfYXBwQm91bmROYXZpZ2F0aW9uRGF0
YUZvckRvbWFpbjooTlNTdHJpbmcgKilkb21haW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KE5TU3RyaW5nICogY29udGV4dCkpY29tcGxldGlvbkhhbmRsZXI7Ci0tICh2b2lkKV9kaWRMb2Fk
QXBwQm91bmRSZXF1ZXN0Oih2b2lkICheKShCT09MIHJlc3VsdCkpY29tcGxldGlvbkhhbmRsZXI7
Ci0tICh2b2lkKV9kaWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0Oih2b2lkICheKShCT09MIHJlc3Vs
dCkpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKV9kaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVz
dDoodm9pZCAoXikoQk9PTCByZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClfZGlk
TG9hZE5vbkFwcEluaXRpYXRlZFJlcXVlc3Q6KHZvaWQgKF4pKEJPT0wgcmVzdWx0KSljb21wbGV0
aW9uSGFuZGxlcjsKIAogQGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9j
b2NvYS9UZXN0UnVubmVyV0tXZWJWaWV3Lm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2Nv
YS9UZXN0UnVubmVyV0tXZWJWaWV3Lm1tCmluZGV4IDBkODQxMTZhZDQ1MzUxYWYxZjE1NWJiNTJj
NWNhZWZiM2NmMmM3NTMuLjJlZDhmODAwNzllNzhlMDRkOWNkYjZlZWIzYzU0MmVjYWM5ODg3MGYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFJ1bm5lcldLV2Vi
Vmlldy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5uZXJXS1dl
YlZpZXcubW0KQEAgLTU5NiwxOSArNTk2LDE0IEBAIHN0YXRpYyBib29sIGlzUXVpY2tib2FyZFZp
ZXdDb250cm9sbGVyKFVJVmlld0NvbnRyb2xsZXIgKnZpZXdDb250cm9sbGVyKQogICAgICAgICBz
ZWxmLmRpZEhpZGVDb250YWN0UGlja2VyQ2FsbGJhY2soKTsKIH0KIAotLSAodm9pZClfYXBwQm91
bmROYXZpZ2F0aW9uRGF0YUZvckRvbWFpbjooTlNTdHJpbmcgKilkb21haW4gY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKE5TU3RyaW5nICogY29udGV4dCkpY29tcGxldGlvbkhhbmRsZXIKKy0g
KHZvaWQpX2RpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0Oih2b2lkICheKShCT09MIHJlc3VsdCkp
Y29tcGxldGlvbkhhbmRsZXIKIHsKLSAgICBbc3VwZXIgX2FwcEJvdW5kTmF2aWdhdGlvbkRhdGFG
b3JEb21haW46ZG9tYWluIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKKyAg
ICBbc3VwZXIgX2RpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0OmNvbXBsZXRpb25IYW5kbGVyXTsK
IH0KIAotLSAodm9pZClfZGlkTG9hZEFwcEJvdW5kUmVxdWVzdDoodm9pZCAoXikoQk9PTCByZXN1
bHQpKWNvbXBsZXRpb25IYW5kbGVyCistICh2b2lkKV9kaWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVx
dWVzdDoodm9pZCAoXikoQk9PTCByZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0gICAgW3N1
cGVyIF9kaWRMb2FkQXBwQm91bmRSZXF1ZXN0OmNvbXBsZXRpb25IYW5kbGVyXTsKLX0KLQotLSAo
dm9pZClfZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdDoodm9pZCAoXikoQk9PTCByZXN1bHQpKWNv
bXBsZXRpb25IYW5kbGVyCi17Ci0gICAgW3N1cGVyIF9kaWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0
OmNvbXBsZXRpb25IYW5kbGVyXTsKKyAgICBbc3VwZXIgX2RpZExvYWROb25BcHBJbml0aWF0ZWRS
ZXF1ZXN0OmNvbXBsZXRpb25IYW5kbGVyXTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDcwOGJlY2Y3OWY2
OTU1NGIzYzk1ODI3NWVmYThmMzhlNjNhZTE3ZWEuLjY3MDU4M2UxNjgyNjA0YjNmYzU4MjI2MjM1
YzBlNDg5ZWQ2ZWE3MmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAyMS0wNi0yMyAgS2F0ZSBD
aGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBDbGVhbiB1cCBB
cHAgUHJpdmFjeSBSZXBvcnQgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI3MzI2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83OTY5Njg0OT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIEFw
cCBQcml2YWN5IFJlcG9ydCB0ZXN0cyBpbnRvIHRoZWlyIG93biBkaXJlY3RvcnkuCisKKyAgICAg
ICAgKiBUZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwLXByaXZhY3kt
cmVwb3J0L2F0dHJpYnV0aW9uLWxvYWQtdXJsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tbG9hZC11cmwuaHRt
bDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJp
dmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tbG9hZC11cmwuaHRtbC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1waW5nLWxvYWQtZXhwZWN0ZWQu
dHh0OiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1w
cml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1waW5nLWxvYWQtZXhwZWN0ZWQudHh0LgorICAg
ICAgICAqIGh0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXBpbmctbG9h
ZC5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nl
ci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1waW5nLWxvYWQuaHRtbC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1wb3N0LXJlcXVlc3Qt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJl
cG9ydC9hdHRyaWJ1dGlvbi1wb3N0LXJlcXVlc3QuaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRp
b24tcG9zdC1yZXF1ZXN0Lmh0bWwuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1y
ZXBvcnQvYXR0cmlidXRpb24tcHJlZmxpZ2h0LWFzeW5jLWV4cGVjdGVkLnR4dDogUmVuYW1lZCBm
cm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91
bmQtYXR0cmlidXRpb24tcHJlZmxpZ2h0LWFzeW5jLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1wcmVmbGlnaHQtYXN5bmMu
aHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXIt
cHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tcHJlZmxpZ2h0LWFzeW5jLmh0bWwuCisgICAg
ICAgICogaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tcHJlZmxpZ2h0
LXN5bmMtZXhwZWN0ZWQudHh0OiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1wcmVmbGlnaHQtc3lu
Yy1leHBlY3RlZC50eHQuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQv
YXR0cmlidXRpb24tcHJlZmxpZ2h0LXN5bmMuaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24t
cHJlZmxpZ2h0LXN5bmMuaHRtbC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJl
cG9ydC9hdHRyaWJ1dGlvbi1zcGVjdWxhdGl2ZS1yZXZhbGlkYXRpb24tZXhwZWN0ZWQudHh0OiBS
ZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5
L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1zcGVjdWxhdGl2ZS1yZXZhbGlkYXRpb24tZXhwZWN0ZWQu
dHh0LgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9u
LXNwZWN1bGF0aXZlLXJldmFsaWRhdGlvbi5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1z
cGVjdWxhdGl2ZS1yZXZhbGlkYXRpb24uaHRtbC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcC1w
cml2YWN5LXJlcG9ydC9yZXNvdXJjZXMvZnJhbWUtd2l0aC1hdXRoZW50aWNhdGVkLXJlc291cmNl
LnB5OiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1w
cml2YWN5L3Jlc291cmNlcy9mcmFtZS13aXRoLWF1dGhlbnRpY2F0ZWQtcmVzb3VyY2UucHkuCisg
ICAgICAgICogaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvcmVzb3VyY2VzL3Bvc3QucHk6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L3Jlc291cmNl
cy9yZXNvdXJjZS13aXRoLWF1dGgucHk6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvcmVzb3VyY2VzL3Jlc291cmNlLXdpdGgtYXV0aC5w
eS4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5k
LWF0dHJpYnV0aW9uLWxvYWQtdXJsLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXBv
c3QtcmVxdWVzdC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9p
bi1hcHAtYnJvd3Nlci1wcml2YWN5L2NvbnRleHQtc3RyaW5nLWZvci1zdWJmcmFtZS1leHBlY3Rl
ZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2
YWN5L2NvbnRleHQtc3RyaW5nLWZvci1zdWJmcmFtZS5odG1sOiBSZW1vdmVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9jb250ZXh0LXN0cmluZy1wcmVjb25u
ZWN0LWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luLWFwcC1i
cm93c2VyLXByaXZhY3kvY29udGV4dC1zdHJpbmctcHJlY29ubmVjdC5odG1sOiBSZW1vdmVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9jb250ZXh0LXN0cmlu
Zy1wcmVmbGlnaHQtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
aW4tYXBwLWJyb3dzZXItcHJpdmFjeS9jb250ZXh0LXN0cmluZy1wcmVmbGlnaHQuaHRtbDogUmVt
b3ZlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvcmVzb3Vy
Y2VzL3Bvc3QucHk6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jl
c291cmNlcy9jaGVjay1waW5nLWFwcC1pbml0aWF0ZWQtZGF0YS5weTogUmVuYW1lZCBmcm9tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvY2hlY2stcGluZy1hcHAt
Ym91bmQtZGF0YS5weS4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlv
bnM6CisKIDIwMjEtMDYtMjMgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5j
b20+CiAKICAgICAgICAgW1dpbkNhaXJvXSBVbnJldmlld2VkIHRlc3QgZ2FyZGVuaW5nCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4
cGVjdGF0aW9ucwppbmRleCBkN2IzNTM2ZDhhYzAxYjkyZWY5N2E3YTU5MzFmZTQ5NTI2ODVhYTU4
Li43MDBhYmMyNjE0Y2JkMTM2MGZhMDdmNzQ0YjUzMGRjMGYyZTE4MzJmIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3Rh
dGlvbnMKQEAgLTE5NCw2ICsxOTQsOSBAQCBmYXN0L3NwZWVjaHJlY29nbml0aW9uL3N0YXJ0LXJl
Y29nbml0aW9uLXRoZW4tc3RvcC5odG1sIFsgU2tpcCBdCiBmYXN0L3NwZWVjaHJlY29nbml0aW9u
L3N0YXJ0LXNlY29uZC1yZWNvZ25pdGlvbi5odG1sIFsgU2tpcCBdCiBmYXN0L3NwZWVjaHJlY29n
bml0aW9uL2lvcy8gWyBTa2lwIF0KIAorIyBhcHAtcHJpdmFjeS1yZXBvcnQgdGVzdHMgcmVseSBv
biBXZWJLaXRBZGRpdGlvbnMKK2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0LyBbIFNraXAg
XQorCiAjIE9ubHkgcGFydGlhbCBzdXBwb3J0IG9uIENvY29hIHBsYXRmb3Jtcy4KIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc3BlZWNoLWFwaS8gWyBTa2lwIF0KIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24t
bG9hZC11cmwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFj
eS1yZXBvcnQvYXR0cmlidXRpb24tbG9hZC11cmwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEw
MDI0ODA0NTE1OTlmYjQwOGVkMDBmNDhiZmQ2NzI4ZjI2ZDZkZjYKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1s
b2FkLXVybC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitUZXN0IGxvYWRVUkwgcmVxdWVz
dHMgYXJlIHN1Y2Nlc2Z1bGx5IGF0dHJpYnV0ZWQgYXMgYXBwIGluaXRpYXRlZC4KK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5IGxvYWRlZCBvbmx5IGFwcCBpbml0aWF0ZWQgcmVxdWVzdHMKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24t
bG9hZC11cmwuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0
L2F0dHJpYnV0aW9uLWxvYWQtdXJsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDdhZDhlZTVjODdjYzJkMTg1
ZWQ3OTdmNWJlZjA3YWQ2OTRlOGMwNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLWxvYWQtdXJsLmh0bWwKQEAg
LTAsMCArMSw0OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxv
YWQ9InNldFRpbWVvdXQoJ3J1blRlc3QoKScsIDApIj4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj5U
ZXN0IGxvYWRVUkwgcmVxdWVzdHMgYXJlIHN1Y2Nlc2Z1bGx5IGF0dHJpYnV0ZWQgYXMgYXBwIGlu
aXRpYXRlZC48L2Rpdj4KKzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorPHNjcmlwdD4KKyAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIH0KKworICAgIGZ1bmN0
aW9uIGxvYWRVUkwoKSB7CisgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgPSBkZXN0aW5h
dGlvbk9yaWdpbiArICIvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLWxvYWQtdXJsLmh0
bWwiOworICAgIH0KKworICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUobWVzc2FnZSArICdcbicpKTsKKyAgICB9CisKKyAgICBjb25zdCBkZXN0aW5hdGlv
bk9yaWdpbiA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAiOworICAgIGNvbnN0IHN0YXJ0aW5nT3Jp
Z2luID0gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCI7CisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsK
KyAgICAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLm9yaWdpbiA9PT0gc3RhcnRpbmdPcmlnaW4p
IHsKKyAgICAgICAgICAgIGxvYWRVUkwoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IHZhciBkaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdCA9IHRlc3RSdW5uZXIuZGlkTG9hZEFwcElu
aXRpYXRlZFJlcXVlc3QoKTsKKyAgICAgICAgICAgIHZhciBkaWRMb2FkTm9uQXBwSW5pdGlhdGVk
UmVxdWVzdCA9IHRlc3RSdW5uZXIuZGlkTG9hZE5vbkFwcEluaXRpYXRlZFJlcXVlc3QoKTsKKwor
ICAgICAgICAgICAgaWYgKGRpZExvYWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0KSB7CisgICAgICAg
ICAgICAgICAgbG9nKCJGQUlMIGRpZCBsb2FkIG5vbiBhcHAgaW5pdGlhdGVkIHJlcXVlc3QiKTsK
KyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgaWYgKCFkaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdCkgeworICAgICAg
ICAgICAgICAgIGxvZygiRkFJTCBkaWQgbm90IGxvYWQgYXBwIGluaXRpYXRlZCByZXF1ZXN0Iik7
CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGxvZygiUEFTUyBzdWNjZXNzZnVsbHkgbG9hZGVkIG9ubHkgYXBwIGlu
aXRpYXRlZCByZXF1ZXN0cyIpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CisgICAgICAgIH0KKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9u
LXBpbmctbG9hZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2
YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1waW5nLWxvYWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjBkNjE3ZWU5MDBhNDkwMmI5N2E0YmVkNmEzOWU5NjU2NmNlNDU1OWYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlv
bi1waW5nLWxvYWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorQ09OU09MRSBNRVNTQUdF
OiBQQVNTIHN1Y2Nlc3NmdWxseSBsb2FkZWQgb25seSBhcHAgaW5pdGlhdGVkIHJlcXVlc3RzCitQ
aW5nIHNlbnQgc3VjY2Vzc2Z1bGx5CitDT05URU5UX1RZUEU6IHRleHQvcGluZworSFRUUF9IT1NU
OiAxMjcuMC4wLjE6ODAwMAorSFRUUF9QSU5HX0ZST006IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9h
cHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tcGluZy1sb2FkLmh0bWwKK0hUVFBfUElOR19U
TzogaHR0cDovLzEyNy4wLjAuMTo4MDAwL25hdmlnYXRpb24vcmVzb3VyY2VzL2NoZWNrLXBpbmct
YXBwLWluaXRpYXRlZC1kYXRhLnB5CitSRVFVRVNUX01FVEhPRDogUE9TVAorUkVRVUVTVF9VUkk6
IC9uYXZpZ2F0aW9uL3Jlc291cmNlcy9zYXZlLXBpbmcucHkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXBpbmctbG9hZC5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRp
b24tcGluZy1sb2FkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTEwMGNhZTJjNjJjZGFiZGFhNGUxMGVjMzlm
OWM5MGE4OWViZTk5NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
YXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXBpbmctbG9hZC5odG1sCkBAIC0wLDAgKzEs
MzAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9u
YXZpZ2F0aW9uL3BpbmctYXR0cmlidXRlL3Jlc291cmNlcy91dGlsaXRpZXMuanMiPjwvc2NyaXB0
PgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuaW50ZXJuYWxzKSB7
CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0
aWNzU2hvdWxkRG93bmdyYWRlUmVmZXJyZXIoZmFsc2UsIGZ1bmN0aW9uICgpIHsgfSk7CisgICAg
aW50ZXJuYWxzLnNldHRpbmdzLnNldEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZCh0cnVlKTsKKyAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7Cisg
ICAgY2xpY2tFbGVtZW50KGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImltZyIpKTsKK30KKword2lu
ZG93Lm9ubG9hZCA9IGZ1bmN0aW9uICgpCit7CisgICAgY2xlYXJMYXN0UGluZ1Jlc3VsdEFuZFJ1
blRlc3QodGVzdCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDxpbWcgc3Jj
PSJub24tZXhpc3RlbnQtaW1hZ2UuanBnIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCIgdXNlbWFw
PSIjaW1hZ2VtYXAiPgorICAgIDxtYXAgbmFtZT0iaW1hZ2VtYXAiPgorICAgICAgICA8YXJlYSBz
aGFwZT0icmVjdCIgY29vcmRzPSIwLDAsMTI4LDEyOCIgaHJlZj0iLi4vbmF2aWdhdGlvbi9yZXNv
dXJjZXMvY2hlY2stcGluZy1hcHAtaW5pdGlhdGVkLWRhdGEucHkiIHBpbmc9Ii4uL25hdmlnYXRp
b24vcmVzb3VyY2VzL3NhdmUtcGluZy5weSI+CisgICAgPC9tYXA+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9h
dHRyaWJ1dGlvbi1wb3N0LXJlcXVlc3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tcG9zdC1yZXF1ZXN0LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lMjQ1ZTM0MGYxN2RlOGU0ZjNlMzU5Y2MxYjlmNDE0NzY2ZGVjZjFj
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1y
ZXBvcnQvYXR0cmlidXRpb24tcG9zdC1yZXF1ZXN0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQg
QEAKK0NPTlNPTEUgTUVTU0FHRTogUEFTUyBzdWNjZXNzZnVsbHkgbG9hZGVkIG9ubHkgYXBwIGlu
aXRpYXRlZCByZXF1ZXN0cworVGVzdHMgYXBwIGluaXRpYXRlZCByZXF1ZXN0cyBnZXQgbWFya2Vk
IGZvciBQT1NUIHJlcXVlc3RzLgorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXBvc3QtcmVxdWVzdC5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tcG9zdC1y
ZXF1ZXN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWQ3OTU0Zjc4MDMzYjRkZTYwNWI5MDFhNjAzZjliZDMx
OWU1MTI4NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXBy
aXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXBvc3QtcmVxdWVzdC5odG1sCkBAIC0wLDAgKzEsMjIg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04
Ij4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UZXN0cyBhcHAgaW5pdGlhdGVkIHJlcXVlc3RzIGdl
dCBtYXJrZWQgZm9yIFBPU1QgcmVxdWVzdHMuPC9wPgorPGZvcm0gaWQ9InRlc3RGb3JtIiBhY3Rp
b249InJlc291cmNlcy9wb3N0LnB5IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub3JlZmVycmVyIiBt
ZXRob2Q9InBvc3QiPgorPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IlRlc3QiPjwvaW5wdXQ+
Cis8Zm9ybT4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLnNldENhbk9wZW5XaW5kb3dzKHRy
dWUpOworfQorCitkb2N1bWVudC5mb3Jtc1swXS5zdWJtaXQoKTsKKworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2
YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1wcmVmbGlnaHQtYXN5bmMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tcHJlZmxp
Z2h0LWFzeW5jLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YjVlZWE5NDIyYWQwY2FlZTc2Njdi
Y2Q0MDZkYjkzZTBhNWU5ZTJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tcHJlZmxpZ2h0LWFzeW5jLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDYgQEAKK0NPTlNPTEUgTUVTU0FHRTogUHJlZmxpZ2h0IHJlc3Bv
bnNlIGlzIG5vdCBzdWNjZXNzZnVsCitDT05TT0xFIE1FU1NBR0U6IFhNTEh0dHBSZXF1ZXN0IGNh
bm5vdCBsb2FkIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMv
c3RhdHVzLTQwNC13aXRob3V0LWJvZHkucHkgZHVlIHRvIGFjY2VzcyBjb250cm9sIGNoZWNrcy4K
K1Rlc3RzIGFwcCBpbml0aWF0ZWQgcmVxdWVzdHMgZ2V0IG1hcmtlZCBmb3IgYXN5bmMgcHJlZmxp
Z2h0cworCitQQVNTIHN1Y2Nlc3NmdWxseSBsb2FkZWQgb25seSBhcHAgaW5pdGlhdGVkIHJlcXVl
c3RzCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVw
b3J0L2F0dHJpYnV0aW9uLXByZWZsaWdodC1hc3luYy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tcHJlZmxpZ2h0LWFzeW5jLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzkzYjlmM2MyNGRiN2UzMGM5ZjUxZTlmNGQyMjcxNmQ2NjJlOGRiNgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0
L2F0dHJpYnV0aW9uLXByZWZsaWdodC1hc3luYy5odG1sCkBAIC0wLDAgKzEsNDYgQEAKKzxwPlRl
c3RzIGFwcCBpbml0aWF0ZWQgcmVxdWVzdHMgZ2V0IG1hcmtlZCBmb3IgYXN5bmMgcHJlZmxpZ2h0
czwvcD4KKworPHByZSBpZD0iY29uc29sZSI+PC9wcmU+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5l
ci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUobWVzc2FnZSArICdcbicpKTsKK30KKwordmFyIHByZWZsaWdodExpbmtEb21h
aW4gPSAibG9jYWxob3N0IjsKK3ZhciBjb250ZXh0SG9zdCA9ICIxMjcuMC4wLjEiOwordmFyIHVy
bCA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL3N0YXR1
cy00MDQtd2l0aG91dC1ib2R5LnB5IgorCitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICB2YXIg
cmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisgICAgcmVxLm9wZW4oIkdFVCIsIHVybCwgdHJ1
ZSk7CisgICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoIngtd2Via2l0IiwgImZvbyIpOworCisgICAg
cmVxLm9uZXJyb3IgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIGRpZExvYWRBcHBJbml0aWF0
ZWRSZXF1ZXN0ID0gdGVzdFJ1bm5lci5kaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdCgpOworICAg
ICAgICB2YXIgZGlkTG9hZE5vbkFwcEluaXRpYXRlZFJlcXVlc3QgPSB0ZXN0UnVubmVyLmRpZExv
YWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0KCk7CisKKyAgICAgICAgaWYgKGRpZExvYWROb25BcHBJ
bml0aWF0ZWRSZXF1ZXN0KSB7CisgICAgICAgICAgICBsb2coIkZBSUwgZGlkIGxvYWQgbm9uIGFw
cCBpbml0aWF0ZWQgcmVxdWVzdCIpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWRpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0
KSB7CisgICAgICAgICAgICBsb2coIkZBSUwgZGlkIG5vdCBsb2FkIGFwcCBpbml0aWF0ZWQgcmVx
dWVzdCIpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgIH0K
KworICAgICAgICBsb2coIlBBU1Mgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBvbmx5IGFwcCBpbml0aWF0
ZWQgcmVxdWVzdHMiKTsKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfQor
ICAgIHJlcS5zZW5kKG51bGwpOworfQorCitydW5UZXN0KCk7Cis8L3NjcmlwdD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9u
LXByZWZsaWdodC1zeW5jLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBw
LXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXByZWZsaWdodC1zeW5jLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40MDE2YzUzMWUwNjU5YWRjZGQ2MzU1NTIzZWExYjBhZDJkNWEyYjFjCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQv
YXR0cmlidXRpb24tcHJlZmxpZ2h0LXN5bmMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAor
Q09OU09MRSBNRVNTQUdFOiBQcmVmbGlnaHQgcmVzcG9uc2UgaXMgbm90IHN1Y2Nlc3NmdWwKK0NP
TlNPTEUgTUVTU0FHRTogWE1MSHR0cFJlcXVlc3QgY2Fubm90IGxvYWQgaHR0cDovL2xvY2FsaG9z
dDo4MDAwL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9zdGF0dXMtNDA0LXdpdGhvdXQtYm9keS5w
eSBkdWUgdG8gYWNjZXNzIGNvbnRyb2wgY2hlY2tzLgorVGVzdHMgYXBwIGluaXRpYXRlZCByZXF1
ZXN0cyBnZXQgbWFya2VkIGZvciBzeW5jIHByZWZsaWdodHMKKworUEFTUzogTmV0d29ya0Vycm9y
OiAgQSBuZXR3b3JrIGVycm9yIG9jY3VycmVkLgorUEFTUyBzdWNjZXNzZnVsbHkgbG9hZGVkIG9u
bHkgYXBwIGluaXRpYXRlZCByZXF1ZXN0cworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1wcmVmbGlnaHQtc3luYy5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24t
cHJlZmxpZ2h0LXN5bmMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYjU0MDk1YTFmZjdjMDQxZDFhYmU1NjAw
ZmE1YmNlNWNlZWU0M2E1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tcHJlZmxpZ2h0LXN5bmMuaHRtbApAQCAt
MCwwICsxLDQ5IEBACis8cD5UZXN0cyBhcHAgaW5pdGlhdGVkIHJlcXVlc3RzIGdldCBtYXJrZWQg
Zm9yIHN5bmMgcHJlZmxpZ2h0czwvcD4KKworPHByZSBpZD0iY29uc29sZSI+PC9wcmU+Cis8c2Ny
aXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGxvZyht
ZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSArICdcbicpKTsKK30KKwordmFy
IHByZWZsaWdodExpbmtEb21haW4gPSAibG9jYWxob3N0IjsKK3ZhciBjb250ZXh0SG9zdCA9ICIx
MjcuMC4wLjEiOwordmFyIHVybCA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAveG1saHR0cHJlcXVl
c3QvcmVzb3VyY2VzL3N0YXR1cy00MDQtd2l0aG91dC1ib2R5LnB5IgorCitmdW5jdGlvbiBydW5U
ZXN0KCkKK3sKKyAgICB2YXIgcmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisgICAgcmVxLm9w
ZW4oIkdFVCIsIHVybCwgZmFsc2UpOworICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKCJ4LXdlYmtp
dCIsICJmb28iKTsKKworICAgIHRyeSB7CisgICAgICAgIHJlcS5zZW5kKG51bGwpOworICAgICAg
ICBsb2coIlBBU1M6ICIgKyByZXEucmVzcG9uc2VUZXh0KTsKKyAgICB9IGNhdGNoIChleCkgewor
ICAgICAgICBsb2coIlBBU1M6ICIgKyBleCk7CisgICAgICAgIHZhciBkaWRMb2FkQXBwSW5pdGlh
dGVkUmVxdWVzdCA9IHRlc3RSdW5uZXIuZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3QoKTsKKyAg
ICAgICAgdmFyIGRpZExvYWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0ID0gdGVzdFJ1bm5lci5kaWRM
b2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdCgpOworCisgICAgICAgIGlmIChkaWRMb2FkTm9uQXBw
SW5pdGlhdGVkUmVxdWVzdCkgeworICAgICAgICAgICAgbG9nKCJGQUlMIGRpZCBsb2FkIG5vbiBh
cHAgaW5pdGlhdGVkIHJlcXVlc3QiKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFkaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVz
dCkgeworICAgICAgICAgICAgbG9nKCJGQUlMIGRpZCBub3QgbG9hZCBhcHAgaW5pdGlhdGVkIHJl
cXVlc3QiKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9
CisKKyAgICAgICAgbG9nKCJQQVNTIHN1Y2Nlc3NmdWxseSBsb2FkZWQgb25seSBhcHAgaW5pdGlh
dGVkIHJlcXVlc3RzIik7CisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgIH0K
K30KKworcnVuVGVzdCgpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1zcGVjdWxhdGl2ZS1yZXZhbGlk
YXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1y
ZXBvcnQvYXR0cmlidXRpb24tc3BlY3VsYXRpdmUtcmV2YWxpZGF0aW9uLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iMjFjMmQ1OTk0MTQ0ZTgxMGUxNTc3ZWZmYmNkMDljZTA2ZGYzZGRkCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQv
YXR0cmlidXRpb24tc3BlY3VsYXRpdmUtcmV2YWxpZGF0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDE0IEBACisxMjcuMC4wLjE6ODAwMCAtIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSAtIFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lSFRUUEJhc2ljIC0gUmVz
cG9uZGluZyB3aXRoIHRlc3RVc2VybmFtZTp0ZXN0UGFzc3dvcmQKKzEyNy4wLjAuMTo4MDAwIC0g
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIC0gUHJvdGVjdGlvblNwYWNlQXV0aGVu
dGljYXRpb25TY2hlbWVIVFRQQmFzaWMgLSBTaW11bGF0aW5nIGNhbmNlbGxlZCBhdXRoZW50aWNh
dGlvbiBzaGVldAorVGVzdHMgc3BlY3VsYXRpdmUgcmV2YWxpZGF0aW9uIG9mIGF1dGhlbnRpY2F0
ZWQgcmVzb3VyY2VzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyB4aHIu
c3RhdHVzIGlzIDQwMQorUEFTUyBTdWNjZXNzZnVseSBsb2FkZWQuCitQQVNTIHN1Y2Nlc3NmdWxs
eSBsb2FkZWQgb25seSBhcHAgaW5pdGlhdGVkIHJlcXVlc3RzCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tc3BlY3VsYXRpdmUtcmV2
YWxpZGF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9y
dC9hdHRyaWJ1dGlvbi1zcGVjdWxhdGl2ZS1yZXZhbGlkYXRpb24uaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
Yjc1ZDZmZjFiZTg5YTE3ZmJhZGVhZWZhYzk3NDAwMGRjOWU4NWQwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24t
c3BlY3VsYXRpdmUtcmV2YWxpZGF0aW9uLmh0bWwKQEAgLTAsMCArMSw3MiBAQAorPHNjcmlwdCBz
cmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
PgorZGVzY3JpcHRpb24oIlRlc3RzIHNwZWN1bGF0aXZlIHJldmFsaWRhdGlvbiBvZiBhdXRoZW50
aWNhdGVkIHJlc291cmNlcy4iKTsKK2pzVGVzdElzQXN5bmMgPSB0cnVlOworCit0ZXN0UnVubmVy
LnNldEhhbmRsZXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZXModHJ1ZSk7Cit0ZXN0UnVubmVyLnNl
dEF1dGhlbnRpY2F0aW9uVXNlcm5hbWUoInRlc3RVc2VybmFtZSIpOwordGVzdFJ1bm5lci5zZXRB
dXRoZW50aWNhdGlvblBhc3N3b3JkKCJ0ZXN0UGFzc3dvcmQiKTsKKworc3RhdGUgPSAid2FybXVw
IjsKKworZnVuY3Rpb24gY2xlYXJDcmVkZW50aWFsU3RvcmFnZSgpCit7CisgICAgeGhyID0gbmV3
IFhNTEh0dHBSZXF1ZXN0KCk7CisgICAgeGhyLm9wZW4oIkdFVCIsICJyZXNvdXJjZXMvcmVzb3Vy
Y2Utd2l0aC1hdXRoLnB5P290aGVyIiwgZmFsc2UsICJiYWRVc2VybmFtZSIsICJiYWRQYXNzd29y
ZCIpOworICAgIHhoci5zZW5kKCk7CisgICAgc2hvdWxkQmUoInhoci5zdGF0dXMiLCAiNDAxIik7
Cit9CisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdjb25zb2xlJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2Fn
ZSArICdcbicpKTsKK30KKworZnVuY3Rpb24gZnJhbWVMb2FkZWQoKQoreworICAgIGlmIChzdGF0
ZSA9PSAid2FybXVwIikgeworICAgICAgICAvLyBOYXZpZ2F0ZSBmcmFtZSB0byAnYWJvdXQ6Ymxh
bmsnIHRvIGZsdXNoIHRvIHN1YnJlc291cmNlIGxvYWRzIG1ldGFkYXRhIHRvIGRpc2suCisgICAg
ICAgIHN0YXRlID0gImZsdXNoaW5nTWV0YWRhdGEiOworICAgICAgICB0ZXN0UnVubmVyLnNldEhh
bmRsZXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZXMoZmFsc2UpOworICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidGVzdEZyYW1lIikuc3JjID0gImFib3V0OmJsYW5rIjsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBpZiAoc3RhdGUgPT0gImZsdXNoaW5nTWV0YWRhdGEiKSB7Cisg
ICAgICAgIGNsZWFyQ3JlZGVudGlhbFN0b3JhZ2UoKTsKKworICAgICAgICBpbnRlcm5hbHMuY2xl
YXJNZW1vcnlDYWNoZSgpOworICAgICAgICB0ZXN0UnVubmVyLnNldEhhbmRsZXNBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZXMoZmFsc2UpOworCisgICAgICAgIC8vIE5hdmlnYXRlIGZyYW1lIHRvIGl0
cyBvcmlnaW5hbCBsb2NhdGlvbiBhZ2Fpbi4gVGhpcyB0aW1lIGl0IHNob3VsZCBzcGVjdWxhdGl2
ZWx5CisgICAgICAgIC8vIHZhbGlkYXRlIHN1YnJlc291cmNlcyBhcyB3ZSBoYXZlIHN1YnJlc291
cmNlIGxvYWRzIG1ldGFkYXRhIGluIHRoZSBkaXNrIGNhY2hlLgorICAgICAgICBzdGF0ZSA9ICJz
cGVjdWxhdGl2ZVJldmFsaWRhdGlvbiI7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJ0ZXN0RnJhbWUiKS5zcmMgPSAicmVzb3VyY2VzL2ZyYW1lLXdpdGgtYXV0aGVudGljYXRlZC1y
ZXNvdXJjZS5weSI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKHN0YXRlID09ICJz
cGVjdWxhdGl2ZVJldmFsaWRhdGlvbiIpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiU3VjY2Vzc2Z1
bHkgbG9hZGVkLiIpOworICAgICAgICB2YXIgZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3QgPSB0
ZXN0UnVubmVyLmRpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0KCk7CisgICAgICAgIHZhciBkaWRM
b2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdCA9IHRlc3RSdW5uZXIuZGlkTG9hZE5vbkFwcEluaXRp
YXRlZFJlcXVlc3QoKTsKKworICAgICAgICBpZiAoZGlkTG9hZE5vbkFwcEluaXRpYXRlZFJlcXVl
c3QpIHsKKyAgICAgICAgICAgIGxvZygiRkFJTCBkaWQgbG9hZCBub24gYXBwIGluaXRpYXRlZCBy
ZXF1ZXN0Iik7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3Qp
IHsKKyAgICAgICAgICAgIGxvZygiRkFJTCBkaWQgbm90IGxvYWQgYXBwIGluaXRpYXRlZCByZXF1
ZXN0Iik7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIGxvZygiUEFTUyBzdWNjZXNzZnVsbHkgbG9hZGVkIG9ubHkg
YXBwIGluaXRpYXRlZCByZXF1ZXN0cyIpOworCisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
ICAgICByZXR1cm47CisgICAgfQorfQorCis8L3NjcmlwdD4KKzxpZnJhbWUgaWQ9InRlc3RGcmFt
ZSIgc3JjPSJyZXNvdXJjZXMvZnJhbWUtd2l0aC1hdXRoZW50aWNhdGVkLXJlc291cmNlLnB5IiBv
bmxvYWQ9ImZyYW1lTG9hZGVkKCkiPjwvaWZyYW1lPgorPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvcmVzb3VyY2VzL2ZyYW1lLXdpdGgtYXV0
aGVudGljYXRlZC1yZXNvdXJjZS5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZh
Y3ktcmVwb3J0L3Jlc291cmNlcy9mcmFtZS13aXRoLWF1dGhlbnRpY2F0ZWQtcmVzb3VyY2UucHkK
bmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uODQ4ZDBmZDFhNmQ2YzA5OWFhZDYxZTAwNDI0MmUyMzg5NTUzZTk0MQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0
L3Jlc291cmNlcy9mcmFtZS13aXRoLWF1dGhlbnRpY2F0ZWQtcmVzb3VyY2UucHkKQEAgLTAsMCAr
MSwxMyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworCitpbXBvcnQgc3lzCisKK3N5cy5zdGRv
dXQud3JpdGUoCisgICAgJ0NhY2hlLUNvbnRyb2w6IG1heC1hZ2U9MFxyXG4nCisgICAgJ0V0YWc6
IDEyMzQ1Njc4OVxyXG4nCisgICAgJ0NvbnRlbnQtVHlwZTogdGV4dC9odG1sXHJcblxyXG4nCisg
ICAgJzwhRE9DVFlQRSBodG1sPlxuJworICAgICc8Ym9keT5cbicKKyAgICAnPHNjcmlwdCBzcmM9
InJlc291cmNlLXdpdGgtYXV0aC5weSI+PC9zY3JpcHQ+XG4nCisgICAgJzwvYm9keT5cbicKKykK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L3Jl
c291cmNlcy9wb3N0LnB5IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBv
cnQvcmVzb3VyY2VzL3Bvc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDA2ZmVlZTIxMmM3MDFjZjYyZDlkODMw
ZGZmMmI1Yjg3NjFiOTM5ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvYXBwLXByaXZhY3ktcmVwb3J0L3Jlc291cmNlcy9wb3N0LnB5CkBAIC0wLDAgKzEsMjcgQEAK
KyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKworaW1wb3J0IG9zCitpbXBvcnQgc3lzCisKK3JlZmVy
ZXIgPSBvcy5lbnZpcm9uLmdldCgnSFRUUF9SRUZFUkVSJywgJycpCisKK3N5cy5zdGRvdXQud3Jp
dGUoCisgICAgJ0NvbnRlbnQtVHlwZTogdGV4dC9odG1sXHJcblxyXG4nCisgICAgJzxwPlJlZmVy
cmVyOiB7cmVmZXJlcn08L3A+XG4nCisgICAgJzxzY3JpcHQ+XG4nCisgICAgJ2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikge3tcbicKKyAgICAnICAgIHZhciBkaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVz
dCA9IHRlc3RSdW5uZXIuZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3QoKTtcbicKKyAgICAnICAg
IHZhciBkaWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdCA9IHRlc3RSdW5uZXIuZGlkTG9hZE5v
bkFwcEluaXRpYXRlZFJlcXVlc3QoKTtcbicKKyAgICAnICAgIGlmIChkaWRMb2FkTm9uQXBwSW5p
dGlhdGVkUmVxdWVzdCkge3tcbicKKyAgICAnICAgICAgICBjb25zb2xlLmxvZygiRkFJTCBkaWQg
bG9hZCBub24gYXBwIGluaXRpYXRlZCByZXF1ZXN0Iik7XG4nCisgICAgJyAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7XG4nCisgICAgJyAgICB9fVxuJworICAgICcgICAgaWYgKCFkaWRM
b2FkQXBwSW5pdGlhdGVkUmVxdWVzdCkge3tcbicKKyAgICAnICAgICAgICAgY29uc29sZS5sb2co
IkZBSUwgZGlkIG5vdCBsb2FkIGFwcCBpbml0aWF0ZWQgcmVxdWVzdCIpO1xuJworICAgICcgICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpO1xuJworICAgICcgICAgIH19XG4nCisgICAgJyAg
ICBjb25zb2xlLmxvZygiUEFTUyBzdWNjZXNzZnVsbHkgbG9hZGVkIG9ubHkgYXBwIGluaXRpYXRl
ZCByZXF1ZXN0cyIpO1xuJworICAgICcgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7XG4nCisg
ICAgJ319XG4nCisgICAgJzwvc2NyaXB0PlxuJy5mb3JtYXQocmVmZXJlcj1yZWZlcmVyKQorKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvcmVz
b3VyY2VzL3Jlc291cmNlLXdpdGgtYXV0aC5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBw
LXByaXZhY3ktcmVwb3J0L3Jlc291cmNlcy9yZXNvdXJjZS13aXRoLWF1dGgucHkKbmV3IGZpbGUg
bW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uN2FmYjc4ZDgxYzZmM2M5ZGE0NzlkMjhiZTI0NmFlMTViY2QwNGRkZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L3Jlc291cmNl
cy9yZXNvdXJjZS13aXRoLWF1dGgucHkKQEAgLTAsMCArMSwyOSBAQAorIyEvdXNyL2Jpbi9lbnYg
cHl0aG9uMworCitpbXBvcnQgYmFzZTY0CitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKKworY3JlZGVu
dGlhbHMgPSBiYXNlNjQuYjY0ZGVjb2RlKG9zLmVudmlyb24uZ2V0KCdIVFRQX0FVVEhPUklaQVRJ
T04nLCAnIE9nPT0nKS5zcGxpdCgnICcpWzFdKS5kZWNvZGUoKS5zcGxpdCgnOicpCit1c2VybmFt
ZSA9IGNyZWRlbnRpYWxzWzBdCitwYXNzd29yZCA9ICc6Jy5qb2luKGNyZWRlbnRpYWxzWzE6XSkK
KworZXhwZWN0ZWRVc2VybmFtZSA9ICd0ZXN0VXNlcm5hbWUnCitleHBlY3RlZFBhc3N3b3JkID0g
J3Rlc3RQYXNzd29yZCcKK3JlYWxtID0gb3MuZW52aXJvbi5nZXQoJ1JFUVVFU1RfVVJJJywgJycp
CisKK3N5cy5zdGRvdXQud3JpdGUoCisgICAgJ0NvbnRlbnQtVHlwZTogdGV4dC9qYXZhc2NyaXB0
XHJcbicKKyAgICAnQ2FjaGUtQ29udHJvbDogbWF4LWFnZT0wXHJcbicKKyAgICAnRXRhZzogMTIz
NDU2Nzg5XHJcbicKKykKKworaWYgdXNlcm5hbWUgIT0gZXhwZWN0ZWRVc2VybmFtZSBvciBwYXNz
d29yZCAhPSBleHBlY3RlZFBhc3N3b3JkOgorICAgIHN5cy5zdGRvdXQud3JpdGUoCisgICAgICAg
IGYnV1dXLUF1dGhlbnRpY2F0ZTogQmFzaWMgcmVhbG09IntyZWFsbX0iXHJcbicKKyAgICAgICAg
J3N0YXR1czogNDAxXHJcblxyXG4nCisgICAgICAgIGYnU2VudCB1c2VybmFtZTpwYXNzd29yZCBv
ZiAoe3VzZXJuYW1lfTp7cGFzc3dvcmR9KSB3aGljaCBpcyBub3Qgd2hhdCB3YXMgZXhwZWN0ZWRc
bicKKyAgICApCisgICAgc3lzLmV4aXQoMCkKKworc3lzLnN0ZG91dC53cml0ZSgnXHJcbmxvYWRl
ZCA9IHRydWU7XG4nKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAt
YnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1sb2FkLXVybC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJv
dW5kLWF0dHJpYnV0aW9uLWxvYWQtdXJsLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDc5ODFmMWUwODRiMGNlMjU3YWY2ZjNlNWE2MGQxZjVkMjUyZWYyZi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLWxv
YWQtdXJsLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotVGVzdCBs
b2FkVVJMIHJlcXVlc3RzIGFyZSBzdWNjZXNmdWxseSBhdHRyaWJ1dGVkIGFzIGFwcC1ib3VuZC4K
LVBBU1Mgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBvbmx5IGFwcC1ib3VuZCByZXF1ZXN0cwotCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBw
LWJvdW5kLWF0dHJpYnV0aW9uLWxvYWQtdXJsLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLWxvYWQtdXJsLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjY2JjZjNmMjAxMTJmMWUxNmQ0MGVm
Nzk3ZTQ4ZDk4Mjc3NWNhNDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2Fw
cC1ib3VuZC1hdHRyaWJ1dGlvbi1sb2FkLXVybC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDgg
KzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotICAgIDxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9InNl
dFRpbWVvdXQoJ3J1blRlc3QoKScsIDApIj4KLTxkaXYgaWQ9ImRlc2NyaXB0aW9uIj5UZXN0IGxv
YWRVUkwgcmVxdWVzdHMgYXJlIHN1Y2Nlc2Z1bGx5IGF0dHJpYnV0ZWQgYXMgYXBwLWJvdW5kLjwv
ZGl2PgotPHByZSBpZD0iY29uc29sZSI+PC9wcmU+Ci08c2NyaXB0PgotICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikgewotICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICAg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gbG9hZFVS
TCgpIHsKLSAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaHJlZiA9IGRlc3RpbmF0aW9uT3JpZ2lu
ICsgIi9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1sb2FkLXVy
bC5odG1sIjsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkgewotICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKG1lc3NhZ2UgKyAnXG4nKSk7Ci0gICAgfQotCi0gICAgY29uc3QgZGVzdGlu
YXRpb25PcmlnaW4gPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwIjsKLSAgICBjb25zdCBzdGFydGlu
Z09yaWdpbiA9ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiOwotICAgIGZ1bmN0aW9uIHJ1blRlc3Qo
KSB7Ci0gICAgICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5vcmlnaW4gPT09IHN0YXJ0aW5nT3Jp
Z2luKSB7Ci0gICAgICAgICAgICBsb2FkVVJMKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICB2YXIgZGlkTG9hZEFwcEJvdW5kUmVxdWVzdCA9IHRlc3RSdW5uZXIuZGlkTG9hZEFwcEJv
dW5kUmVxdWVzdCgpOwotICAgICAgICAgICAgdmFyIGRpZExvYWROb25BcHBCb3VuZFJlcXVlc3Qg
PSB0ZXN0UnVubmVyLmRpZExvYWROb25BcHBCb3VuZFJlcXVlc3QoKTsKLQotICAgICAgICAgICAg
aWYgKGRpZExvYWROb25BcHBCb3VuZFJlcXVlc3QpIHsKLSAgICAgICAgICAgICAgICBsb2coIkZB
SUwgZGlkIGxvYWQgbm9uIGFwcC1ib3VuZCByZXF1ZXN0Iik7Ci0gICAgICAgICAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICgh
ZGlkTG9hZEFwcEJvdW5kUmVxdWVzdCkgewotICAgICAgICAgICAgICAgIGxvZygiRkFJTCBkaWQg
bm90IGxvYWQgYXBwLWJvdW5kIHJlcXVlc3QiKTsKLSAgICAgICAgICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbG9nKCJQQVNTIHN1
Y2Nlc3NmdWxseSBsb2FkZWQgb25seSBhcHAtYm91bmQgcmVxdWVzdHMiKTsKLSAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgICAgICB9Ci0gICAgfQotPC9zY3JpcHQ+Ci08
L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFw
cC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXBpbmctbG9hZC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBw
LWJvdW5kLWF0dHJpYnV0aW9uLXBpbmctbG9hZC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDhkYjcxYWJmN2RkYzg5MDliZDQzYmQ0MjQ4ZWFhZmEzYzJlODI5YmQu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlv
bi1waW5nLWxvYWQtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1D
T05TT0xFIE1FU1NBR0U6IFBBU1Mgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBvbmx5IGFwcC1ib3VuZCBy
ZXF1ZXN0cwotUGluZyBzZW50IHN1Y2Nlc3NmdWxseQotQ09OVEVOVF9UWVBFOiB0ZXh0L3BpbmcK
LUhUVFBfSE9TVDogMTI3LjAuMC4xOjgwMDAKLUhUVFBfUElOR19GUk9NOiBodHRwOi8vMTI3LjAu
MC4xOjgwMDAvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tcGlu
Zy1sb2FkLmh0bWwKLUhUVFBfUElOR19UTzogaHR0cDovLzEyNy4wLjAuMTo4MDAwL25hdmlnYXRp
b24vcmVzb3VyY2VzL2NoZWNrLXBpbmctYXBwLWJvdW5kLWRhdGEucHkKLVJFUVVFU1RfTUVUSE9E
OiBQT1NUCi1SRVFVRVNUX1VSSTogL25hdmlnYXRpb24vcmVzb3VyY2VzL3NhdmUtcGluZy5weQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5
L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1waW5nLWxvYWQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tcGluZy1s
b2FkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwYmIxMDY3YzdkYThiMTUw
ZTliMDBjOTFiOGU1MjU4MDRkNTJkOWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2
YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1waW5nLWxvYWQuaHRtbAorKysgL2Rldi9udWxsCkBA
IC0xLDMwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQg
c3JjPSIuLi9uYXZpZ2F0aW9uL3BpbmctYXR0cmlidXRlL3Jlc291cmNlcy91dGlsaXRpZXMuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuaW50
ZXJuYWxzKSB7Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAgdGVzdFJ1bm5lci5z
ZXRTdGF0aXN0aWNzU2hvdWxkRG93bmdyYWRlUmVmZXJyZXIoZmFsc2UsIGZ1bmN0aW9uICgpIHsg
fSk7Ci0gICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZCh0
cnVlKTsKLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLX0KLQotZnVuY3Rpb24gdGVz
dCgpCi17Ci0gICAgY2xpY2tFbGVtZW50KGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImltZyIpKTsK
LX0KLQotd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uICgpCi17Ci0gICAgY2xlYXJMYXN0UGluZ1Jl
c3VsdEFuZFJ1blRlc3QodGVzdCk7Ci19Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotICAg
IDxpbWcgc3JjPSJub24tZXhpc3RlbnQtaW1hZ2UuanBnIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEy
OCIgdXNlbWFwPSIjaW1hZ2VtYXAiPgotICAgIDxtYXAgbmFtZT0iaW1hZ2VtYXAiPgotICAgICAg
ICA8YXJlYSBzaGFwZT0icmVjdCIgY29vcmRzPSIwLDAsMTI4LDEyOCIgaHJlZj0iLi4vbmF2aWdh
dGlvbi9yZXNvdXJjZXMvY2hlY2stcGluZy1hcHAtYm91bmQtZGF0YS5weSIgcGluZz0iLi4vbmF2
aWdhdGlvbi9yZXNvdXJjZXMvc2F2ZS1waW5nLnB5Ij4KLSAgICA8L21hcD4KLTwvYm9keT4KLTwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXIt
cHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tcG9zdC1yZXF1ZXN0LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQt
YXR0cmlidXRpb24tcG9zdC1yZXF1ZXN0LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNThiNWU3OTgxNWM0ZDU3ODkwOTU2MjVmZTA1M2YzYjgxYjZkZDFkMC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXBv
c3QtcmVxdWVzdC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLUNP
TlNPTEUgTUVTU0FHRTogUEFTUyBzdWNjZXNzZnVsbHkgbG9hZGVkIG9ubHkgYXBwLWJvdW5kIHJl
cXVlc3RzCi1UZXN0cyBhcHAgYm91bmQgcmVxdWVzdHMgZ2V0IG1hcmtlZCBmb3IgUE9TVCByZXF1
ZXN0cy4KLQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93
c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXBvc3QtcmVxdWVzdC5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRy
aWJ1dGlvbi1wb3N0LXJlcXVlc3QuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YTc3MjNmZDNmNGNiZTVjYTMzOTg5NzY1OTcwOGU4Y2NmMTRmYTMwMy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
LWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXBvc3QtcmVxdWVzdC5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRt
bD4KLTxoZWFkPgotPG1ldGEgY2hhcnNldD0idXRmLTgiPgotPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxw
PlRlc3RzIGFwcCBib3VuZCByZXF1ZXN0cyBnZXQgbWFya2VkIGZvciBQT1NUIHJlcXVlc3RzLjwv
cD4KLTxmb3JtIGlkPSJ0ZXN0Rm9ybSIgYWN0aW9uPSJyZXNvdXJjZXMvcG9zdC5weSIgdGFyZ2V0
PSJfYmxhbmsiIHJlbD0ibm9yZWZlcnJlciIgbWV0aG9kPSJwb3N0Ij4KLTxpbnB1dCB0eXBlPSJz
dWJtaXQiIHZhbHVlPSJUZXN0Ij48L2lucHV0PgotPGZvcm0+Ci08c2NyaXB0PgotaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0gICAgdGVz
dFJ1bm5lci5zZXRDYW5PcGVuV2luZG93cyh0cnVlKTsKLX0KLQotZG9jdW1lbnQuZm9ybXNbMF0u
c3VibWl0KCk7Ci0KLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRy
aWJ1dGlvbi1wcmVmbGlnaHQtYXN5bmMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1wcmVmbGln
aHQtYXN5bmMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNTgz
ZWYwNzVmMTc0MDJmNjIwMmJmNjM1OTA1NjlhMjNlZTg1YWM1Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBw
LWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tcHJlZmxpZ2h0LWFzeW5jLWV4
cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdF
OiBQcmVmbGlnaHQgcmVzcG9uc2UgaXMgbm90IHN1Y2Nlc3NmdWwKLUNPTlNPTEUgTUVTU0FHRTog
WE1MSHR0cFJlcXVlc3QgY2Fubm90IGxvYWQgaHR0cDovL2xvY2FsaG9zdDo4MDAwL3htbGh0dHBy
ZXF1ZXN0L3Jlc291cmNlcy9zdGF0dXMtNDA0LXdpdGhvdXQtYm9keS5weSBkdWUgdG8gYWNjZXNz
IGNvbnRyb2wgY2hlY2tzLgotVGVzdHMgYXBwIGJvdW5kIHJlcXVlc3RzIGdldCBtYXJrZWQgZm9y
IGFzeW5jIHByZWZsaWdodHMKLQotUEFTUyBzdWNjZXNzZnVsbHkgbG9hZGVkIG9ubHkgYXBwLWJv
dW5kIHJlcXVlc3RzCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBw
LWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tcHJlZmxpZ2h0LWFzeW5jLmh0
bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJv
dW5kLWF0dHJpYnV0aW9uLXByZWZsaWdodC1hc3luYy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBlZTQ4M2UzOGM0NDVjNmNlZDhiMTFmNWY2NWZmMTY1NjNhZjRjNTBjLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tcHJl
ZmxpZ2h0LWFzeW5jLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi08cD5UZXN0
cyBhcHAgYm91bmQgcmVxdWVzdHMgZ2V0IG1hcmtlZCBmb3IgYXN5bmMgcHJlZmxpZ2h0czwvcD4K
LQotPHByZSBpZD0iY29uc29sZSI+PC9wcmU+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIGxvZyhtZXNzYWdlKQotewotICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUobWVzc2FnZSArICdcbicpKTsKLX0KLQotdmFyIHByZWZsaWdodExpbmtEb21haW4gPSAi
bG9jYWxob3N0IjsKLXZhciBjb250ZXh0SG9zdCA9ICIxMjcuMC4wLjEiOwotdmFyIHVybCA9ICJo
dHRwOi8vbG9jYWxob3N0OjgwMDAveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL3N0YXR1cy00MDQt
d2l0aG91dC1ib2R5LnB5IgotCi1mdW5jdGlvbiBydW5UZXN0KCkKLXsKLSAgICB2YXIgcmVxID0g
bmV3IFhNTEh0dHBSZXF1ZXN0KCk7Ci0gICAgcmVxLm9wZW4oIkdFVCIsIHVybCwgdHJ1ZSk7Ci0g
ICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoIngtd2Via2l0IiwgImZvbyIpOwotCi0gICAgcmVxLm9u
ZXJyb3IgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIGRpZExvYWRBcHBCb3VuZFJlcXVlc3Qg
PSB0ZXN0UnVubmVyLmRpZExvYWRBcHBCb3VuZFJlcXVlc3QoKTsKLSAgICAgICAgdmFyIGRpZExv
YWROb25BcHBCb3VuZFJlcXVlc3QgPSB0ZXN0UnVubmVyLmRpZExvYWROb25BcHBCb3VuZFJlcXVl
c3QoKTsKLQotICAgICAgICBpZiAoZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdCkgewotICAgICAg
ICAgICAgbG9nKCJGQUlMIGRpZCBsb2FkIG5vbiBhcHAtYm91bmQgcmVxdWVzdCIpOwotICAgICAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAo
IWRpZExvYWRBcHBCb3VuZFJlcXVlc3QpIHsKLSAgICAgICAgICAgIGxvZygiRkFJTCBkaWQgbm90
IGxvYWQgYXBwLWJvdW5kIHJlcXVlc3QiKTsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgbG9nKCJQQVNTIHN1Y2Nlc3NmdWxseSBsb2Fk
ZWQgb25seSBhcHAtYm91bmQgcmVxdWVzdHMiKTsKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7Ci0gICAgfQotICAgIHJlcS5zZW5kKG51bGwpOwotfQotCi1ydW5UZXN0KCk7Ci08L3Nj
cmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXIt
cHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tcHJlZmxpZ2h0LXN5bmMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3Vu
ZC1hdHRyaWJ1dGlvbi1wcmVmbGlnaHQtc3luYy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGRlZTA0NTNiNzdlYzY1N2FhZTg0NDY4NGY0M2UyZDI4Y2Y2ZDI1YWYu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlv
bi1wcmVmbGlnaHQtc3luYy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAg
QEAKLUNPTlNPTEUgTUVTU0FHRTogUHJlZmxpZ2h0IHJlc3BvbnNlIGlzIG5vdCBzdWNjZXNzZnVs
Ci1DT05TT0xFIE1FU1NBR0U6IFhNTEh0dHBSZXF1ZXN0IGNhbm5vdCBsb2FkIGh0dHA6Ly9sb2Nh
bGhvc3Q6ODAwMC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvc3RhdHVzLTQwNC13aXRob3V0LWJv
ZHkucHkgZHVlIHRvIGFjY2VzcyBjb250cm9sIGNoZWNrcy4KLVRlc3RzIGFwcCBib3VuZCByZXF1
ZXN0cyBnZXQgbWFya2VkIGZvciBzeW5jIHByZWZsaWdodHMKLQotUEFTUzogTmV0d29ya0Vycm9y
OiAgQSBuZXR3b3JrIGVycm9yIG9jY3VycmVkLgotUEFTUyBzdWNjZXNzZnVsbHkgbG9hZGVkIG9u
bHkgYXBwLWJvdW5kIHJlcXVlc3RzCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tcHJlZmxpZ2h0
LXN5bmMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFj
eS9hcHAtYm91bmQtYXR0cmlidXRpb24tcHJlZmxpZ2h0LXN5bmMuaHRtbApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNmMwZjA4ZDUyZmY3OGZjNTk1MWIzM2VlMTA3MGMwM2QyMjc2NjE3
OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0
aW9uLXByZWZsaWdodC1zeW5jLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi08
cD5UZXN0cyBhcHAgYm91bmQgcmVxdWVzdHMgZ2V0IG1hcmtlZCBmb3Igc3luYyBwcmVmbGlnaHRz
PC9wPgotCi08cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKLSAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICB0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKLX0KLQotZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCi17Ci0gICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZShtZXNzYWdlICsgJ1xuJykpOwotfQotCi12YXIgcHJlZmxpZ2h0TGlua0RvbWFp
biA9ICJsb2NhbGhvc3QiOwotdmFyIGNvbnRleHRIb3N0ID0gIjEyNy4wLjAuMSI7Ci12YXIgdXJs
ID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvc3RhdHVz
LTQwNC13aXRob3V0LWJvZHkucHkiCi0KLWZ1bmN0aW9uIHJ1blRlc3QoKQotewotICAgIHZhciBy
ZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKLSAgICByZXEub3BlbigiR0VUIiwgdXJsLCBmYWxz
ZSk7Ci0gICAgcmVxLnNldFJlcXVlc3RIZWFkZXIoIngtd2Via2l0IiwgImZvbyIpOwotCi0gICAg
dHJ5IHsKLSAgICAgICAgcmVxLnNlbmQobnVsbCk7Ci0gICAgICAgIGxvZygiUEFTUzogIiArIHJl
cS5yZXNwb25zZVRleHQpOwotICAgIH0gY2F0Y2ggKGV4KSB7Ci0gICAgICAgIGxvZygiUEFTUzog
IiArIGV4KTsKLSAgICAgICAgdmFyIGRpZExvYWRBcHBCb3VuZFJlcXVlc3QgPSB0ZXN0UnVubmVy
LmRpZExvYWRBcHBCb3VuZFJlcXVlc3QoKTsKLSAgICAgICAgdmFyIGRpZExvYWROb25BcHBCb3Vu
ZFJlcXVlc3QgPSB0ZXN0UnVubmVyLmRpZExvYWROb25BcHBCb3VuZFJlcXVlc3QoKTsKLQotICAg
ICAgICBpZiAoZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdCkgewotICAgICAgICAgICAgbG9nKCJG
QUlMIGRpZCBsb2FkIG5vbiBhcHAtYm91bmQgcmVxdWVzdCIpOwotICAgICAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIWRpZExvYWRBcHBC
b3VuZFJlcXVlc3QpIHsKLSAgICAgICAgICAgIGxvZygiRkFJTCBkaWQgbm90IGxvYWQgYXBwLWJv
dW5kIHJlcXVlc3QiKTsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgbG9nKCJQQVNTIHN1Y2Nlc3NmdWxseSBsb2FkZWQgb25seSBhcHAt
Ym91bmQgcmVxdWVzdHMiKTsKLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAg
fQotfQotCi1ydW5UZXN0KCk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tc3Bl
Y3VsYXRpdmUtcmV2YWxpZGF0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tc3BlY3VsYXRp
dmUtcmV2YWxpZGF0aW9uLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNjJiNGQ0YTUxMmFiY2VjNWRiYjhlYTliNjk0NjgzZTgzYWYyYmQ2ZC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXNwZWN1bGF0aXZl
LXJldmFsaWRhdGlvbi1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBA
Ci0xMjcuMC4wLjE6ODAwMCAtIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAtIFBy
b3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lSFRUUEJhc2ljIC0gUmVzcG9uZGluZyB3
aXRoIHRlc3RVc2VybmFtZTp0ZXN0UGFzc3dvcmQKLTEyNy4wLjAuMTo4MDAwIC0gZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIC0gUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25T
Y2hlbWVIVFRQQmFzaWMgLSBTaW11bGF0aW5nIGNhbmNlbGxlZCBhdXRoZW50aWNhdGlvbiBzaGVl
dAotVGVzdHMgc3BlY3VsYXRpdmUgcmV2YWxpZGF0aW9uIG9mIGF1dGhlbnRpY2F0ZWQgcmVzb3Vy
Y2VzLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotUEFTUyB4aHIuc3RhdHVzIGlz
IDQwMQotUEFTUyBTdWNjZXNzZnVseSBsb2FkZWQuCi1QQVNTIHN1Y2Nlc3NmdWxseSBsb2FkZWQg
b25seSBhcHAtYm91bmQgcmVxdWVzdHMKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
LQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
LWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXNwZWN1bGF0aXZlLXJl
dmFsaWRhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1w
cml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1zcGVjdWxhdGl2ZS1yZXZhbGlkYXRpb24uaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGMwNzZiNWVlNmVjZjQ0NDBiY2JmNjA4
MTBiOWY0NzE3MThjMTZhYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBw
LWJvdW5kLWF0dHJpYnV0aW9uLXNwZWN1bGF0aXZlLXJldmFsaWRhdGlvbi5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsNzIgKzAsMCBAQAotPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0PgotZGVzY3JpcHRpb24oIlRlc3RzIHNw
ZWN1bGF0aXZlIHJldmFsaWRhdGlvbiBvZiBhdXRoZW50aWNhdGVkIHJlc291cmNlcy4iKTsKLWpz
VGVzdElzQXN5bmMgPSB0cnVlOwotCi10ZXN0UnVubmVyLnNldEhhbmRsZXNBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZXModHJ1ZSk7Ci10ZXN0UnVubmVyLnNldEF1dGhlbnRpY2F0aW9uVXNlcm5hbWUo
InRlc3RVc2VybmFtZSIpOwotdGVzdFJ1bm5lci5zZXRBdXRoZW50aWNhdGlvblBhc3N3b3JkKCJ0
ZXN0UGFzc3dvcmQiKTsKLQotc3RhdGUgPSAid2FybXVwIjsKLQotZnVuY3Rpb24gY2xlYXJDcmVk
ZW50aWFsU3RvcmFnZSgpCi17Ci0gICAgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Ci0gICAg
eGhyLm9wZW4oIkdFVCIsICJyZXNvdXJjZXMvcmVzb3VyY2Utd2l0aC1hdXRoLnB5P290aGVyIiwg
ZmFsc2UsICJiYWRVc2VybmFtZSIsICJiYWRQYXNzd29yZCIpOwotICAgIHhoci5zZW5kKCk7Ci0g
ICAgc2hvdWxkQmUoInhoci5zdGF0dXMiLCAiNDAxIik7Ci19Ci0KLWZ1bmN0aW9uIGxvZyhtZXNz
YWdlKQotewotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSArICdcbicpKTsKLX0KLQotZnVuY3Rp
b24gZnJhbWVMb2FkZWQoKQotewotICAgIGlmIChzdGF0ZSA9PSAid2FybXVwIikgewotICAgICAg
ICAvLyBOYXZpZ2F0ZSBmcmFtZSB0byAnYWJvdXQ6YmxhbmsnIHRvIGZsdXNoIHRvIHN1YnJlc291
cmNlIGxvYWRzIG1ldGFkYXRhIHRvIGRpc2suCi0gICAgICAgIHN0YXRlID0gImZsdXNoaW5nTWV0
YWRhdGEiOwotICAgICAgICB0ZXN0UnVubmVyLnNldEhhbmRsZXNBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZXMoZmFsc2UpOwotICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdEZyYW1l
Iikuc3JjID0gImFib3V0OmJsYW5rIjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAo
c3RhdGUgPT0gImZsdXNoaW5nTWV0YWRhdGEiKSB7Ci0gICAgICAgIGNsZWFyQ3JlZGVudGlhbFN0
b3JhZ2UoKTsKLQotICAgICAgICBpbnRlcm5hbHMuY2xlYXJNZW1vcnlDYWNoZSgpOwotICAgICAg
ICB0ZXN0UnVubmVyLnNldEhhbmRsZXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZXMoZmFsc2UpOwot
Ci0gICAgICAgIC8vIE5hdmlnYXRlIGZyYW1lIHRvIGl0cyBvcmlnaW5hbCBsb2NhdGlvbiBhZ2Fp
bi4gVGhpcyB0aW1lIGl0IHNob3VsZCBzcGVjdWxhdGl2ZWx5Ci0gICAgICAgIC8vIHZhbGlkYXRl
IHN1YnJlc291cmNlcyBhcyB3ZSBoYXZlIHN1YnJlc291cmNlIGxvYWRzIG1ldGFkYXRhIGluIHRo
ZSBkaXNrIGNhY2hlLgotICAgICAgICBzdGF0ZSA9ICJzcGVjdWxhdGl2ZVJldmFsaWRhdGlvbiI7
Ci0gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0RnJhbWUiKS5zcmMgPSAicmVz
b3VyY2VzL2ZyYW1lLXdpdGgtYXV0aGVudGljYXRlZC1yZXNvdXJjZS5weSI7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgaWYgKHN0YXRlID09ICJzcGVjdWxhdGl2ZVJldmFsaWRhdGlvbiIp
IHsKLSAgICAgICAgdGVzdFBhc3NlZCgiU3VjY2Vzc2Z1bHkgbG9hZGVkLiIpOwotICAgICAgICB2
YXIgZGlkTG9hZEFwcEJvdW5kUmVxdWVzdCA9IHRlc3RSdW5uZXIuZGlkTG9hZEFwcEJvdW5kUmVx
dWVzdCgpOwotICAgICAgICB2YXIgZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdCA9IHRlc3RSdW5u
ZXIuZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdCgpOwotCi0gICAgICAgIGlmIChkaWRMb2FkTm9u
QXBwQm91bmRSZXF1ZXN0KSB7Ci0gICAgICAgICAgICBsb2coIkZBSUwgZGlkIGxvYWQgbm9uIGFw
cC1ib3VuZCByZXF1ZXN0Iik7Ci0gICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghZGlkTG9hZEFwcEJvdW5kUmVx
dWVzdCkgewotICAgICAgICAgICAgbG9nKCJGQUlMIGRpZCBub3QgbG9hZCBhcHAtYm91bmQgcmVx
dWVzdCIpOwotICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLQotICAgICAgICBsb2coIlBBU1Mgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBvbmx5
IGFwcC1ib3VuZCByZXF1ZXN0cyIpOwotCi0gICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotfQotCi08L3NjcmlwdD4KLTxpZnJhbWUgaWQ9InRlc3RGcmFtZSIg
c3JjPSJyZXNvdXJjZXMvZnJhbWUtd2l0aC1hdXRoZW50aWNhdGVkLXJlc291cmNlLnB5IiBvbmxv
YWQ9ImZyYW1lTG9hZGVkKCkiPjwvaWZyYW1lPgotPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2NvbnRleHQtc3RyaW5nLWZvci1zdWJm
cmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2Vy
LXByaXZhY3kvY29udGV4dC1zdHJpbmctZm9yLXN1YmZyYW1lLWV4cGVjdGVkLnR4dApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWEzNjhmNjZiNTRlMTczOTkxNzJmYWMzNzM3NzY2Nzdi
Nzc0NmJlYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvY29udGV4dC1zdHJp
bmctZm9yLXN1YmZyYW1lLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAg
QEAKLVRlc3RzIHRoYXQgdGhlIGFwcC1ib3VuZC1yZXF1ZXN0IGNvbnRleHQgc3RyaW5nIGdldHMg
cHJvcGVybHkgc2V0IGZvciBhbiBpZnJhbWUKLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgot
Ci0KLVBBU1MgQ29udGV4dCBzdHJpbmcgZm9yIHN1YiBmcmFtZSBjb3JyZWN0bHkgY2FwdHVyZWQu
Ci1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2Nv
bnRleHQtc3RyaW5nLWZvci1zdWJmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bi1hcHAtYnJvd3Nlci1wcml2YWN5L2NvbnRleHQtc3RyaW5nLWZvci1zdWJmcmFtZS5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZTNlOWI2YjBiNTUyOTYyYWJkZmY2NGU3MjEw
MmJiMjIyODZlOGQwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9jb250ZXh0
LXN0cmluZy1mb3Itc3ViZnJhbWUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAK
LTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLSAgICA8c2NyaXB0IHNyYz0iL2pzLXRl
c3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci0g
ICAgZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgdGhlIGFwcC1ib3VuZC1yZXF1ZXN0IGNvbnRleHQg
c3RyaW5nIGdldHMgcHJvcGVybHkgc2V0IGZvciBhbiBpZnJhbWUiKTsKLSAgICBqc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKLQotICAgIGNvbnN0IHN1YkZyYW1lSG9zdCA9ICJsb2NhbGhvc3QiOwotICAg
IGNvbnN0IGNvbnRleHRIb3N0ID0gIjEyNy4wLjAuMSI7Ci0gICAgZnVuY3Rpb24gYXNrRm9yQ29u
dGV4dFN0cmluZ0ZvclN1YkZyYW1lKCkgewotICAgICAgICB0ZXN0UnVubmVyLmFwcEJvdW5kUmVx
dWVzdENvbnRleHREYXRhRm9yRG9tYWluKHN1YkZyYW1lSG9zdCwgZnVuY3Rpb24gKGNvbnRleHRE
YXRhKSB7Ci0gICAgICAgICAgICBpZiAoY29udGV4dERhdGEgPT0gbnVsbCkgewotICAgICAgICAg
ICAgICAgIGFza0ZvckNvbnRleHRTdHJpbmdGb3JTdWJGcmFtZSgpOwotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKGNvbnRleHREYXRhID09
IGNvbnRleHRIb3N0KQotICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIkNvbnRleHQgc3RyaW5n
IGZvciBzdWIgZnJhbWUgY29ycmVjdGx5IGNhcHR1cmVkLiIpOwotICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkNvbnRleHQgc3RyaW5nIGZvciBzdWIgZnJhbWUg
Tk9UIGNvcnJlY3RseSBjYXB0dXJlZC4iKTsKLQotICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7
Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIG9wZW5JZnJhbWUodXJsLCBvbkxv
YWRIYW5kbGVyKSB7Ci0gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJpZnJhbWUiKTsKLSAgICAgICAgZWxlbWVudC5zcmMgPSB1cmw7Ci0gICAgICAgIGlmIChv
bkxvYWRIYW5kbGVyKSB7Ci0gICAgICAgICAgICBlbGVtZW50Lm9ubG9hZCA9IG9uTG9hZEhhbmRs
ZXI7Ci0gICAgICAgIH0KLSAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50
KTsKLSAgICB9Ci0KLSAgICBvcGVuSWZyYW1lKCJodHRwOi8vbG9jYWxob3N0OjgwMDAvaW4tYXBw
LWJyb3dzZXItcHJpdmFjeS9yZXNvdXJjZXMvYmFzaWMtaWZyYW1lLmh0bWwmZHVtbXk9IiArIE1h
dGgucmFuZG9tKCksIGFza0ZvckNvbnRleHRTdHJpbmdGb3JTdWJGcmFtZSk7Ci08L3NjcmlwdD4K
LTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4t
YXBwLWJyb3dzZXItcHJpdmFjeS9jb250ZXh0LXN0cmluZy1wcmVjb25uZWN0LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9jb250ZXh0
LXN0cmluZy1wcmVjb25uZWN0LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNmI0YjU2ZmEwMWZmMDYwM2ZmNjk5MTdjMzgwZGMwNjliOTMwNmRjNi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvY29udGV4dC1zdHJpbmctcHJlY29ubmVjdC1leHBl
Y3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1DT05TT0xFIE1FU1NBR0U6
IFN1Y2Nlc3NmdWxseSBwcmVjb25uZWN0ZWQgdG8gaHR0cDovL2xvY2FsaG9zdDo4MDAwLwotVGVz
dHMgdGhhdCBwcmVjb25uZWN0IHRhc2tzIGdldCBtYXJrZWQgd2l0aCB0aGUgcHJvcGVyIGNvbnRl
eHQgc3RyaW5nLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotUEFTUyBDb250ZXh0
IHN0cmluZyBmb3IgcHJlY29ubmVjdCBjb3JyZWN0bHkgY2FwdHVyZWQuCi1QQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2NvbnRleHQtc3RyaW5nLXBy
ZWNvbm5lY3QuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJp
dmFjeS9jb250ZXh0LXN0cmluZy1wcmVjb25uZWN0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDcxYmJjMzJiZjFjODcyZTRjZmVmM2ZmYTU2NmY5NGMxODU3MjAyNmQuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2NvbnRleHQtc3RyaW5nLXByZWNvbm5lY3Qu
aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0
bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+
PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci1kZXNjcmlwdGlvbigiVGVzdHMg
dGhhdCBwcmVjb25uZWN0IHRhc2tzIGdldCBtYXJrZWQgd2l0aCB0aGUgcHJvcGVyIGNvbnRleHQg
c3RyaW5nLiIpOwotanNUZXN0SXNBc3luYyA9IHRydWU7Ci0KLXZhciBwcmVjb25uZWN0TGlua0Rv
bWFpbiA9ICJsb2NhbGhvc3QiOwotdmFyIGNvbnRleHRIb3N0ID0gIjEyNy4wLjAuMSI7Ci0KLWZ1
bmN0aW9uIGFza0ZvckNvbnRleHRTdHJpbmdGb3JQcmVjb25uZWN0KCkgewotICAgIHRlc3RSdW5u
ZXIuYXBwQm91bmRSZXF1ZXN0Q29udGV4dERhdGFGb3JEb21haW4ocHJlY29ubmVjdExpbmtEb21h
aW4sIGZ1bmN0aW9uIChjb250ZXh0RGF0YSkgewotICAgICAgICBpZiAoY29udGV4dERhdGEgPT0g
bnVsbCkgewotICAgICAgICAgICAgYXNrRm9yQ29udGV4dFN0cmluZ0ZvclByZWNvbm5lY3QoKTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChjb250ZXh0RGF0
YSA9PSBjb250ZXh0SG9zdCkKLSAgICAgICAgICAgIHRlc3RQYXNzZWQoIkNvbnRleHQgc3RyaW5n
IGZvciBwcmVjb25uZWN0IGNvcnJlY3RseSBjYXB0dXJlZC4iKTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiQ29udGV4dCBzdHJpbmcgZm9yIHByZWNvbm5lY3QgTk9UIGNv
cnJlY3RseSBjYXB0dXJlZC4iKTsKLQotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9KTsK
LX0KLQotaW50ZXJuYWxzLnNldENvbnNvbGVNZXNzYWdlTGlzdGVuZXIoZnVuY3Rpb24oKSB7Ci0g
ICAgYXNrRm9yQ29udGV4dFN0cmluZ0ZvclByZWNvbm5lY3QoKTsKLX0pOwotCi1jb25zdCB0ZXN0
TGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpbmsiKTsKLXRlc3RMaW5rLnJlbCA9ICJw
cmVjb25uZWN0IjsKLXRlc3RMaW5rLmhyZWYgPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwIjsKLWRv
Y3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQodGVzdExpbmspOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2Vy
LXByaXZhY3kvY29udGV4dC1zdHJpbmctcHJlZmxpZ2h0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9jb250ZXh0LXN0cmluZy1wcmVm
bGlnaHQtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMDc5NjE1
MGE5NmI4YjFkNzA3ZWZhN2U0MDMyZTQ1ZWQ3MDNjOTVmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJy
b3dzZXItcHJpdmFjeS9jb250ZXh0LXN0cmluZy1wcmVmbGlnaHQtZXhwZWN0ZWQudHh0CisrKyAv
ZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi1DT05TT0xFIE1FU1NBR0U6IFByZWZsaWdodCByZXNw
b25zZSBpcyBub3Qgc3VjY2Vzc2Z1bAotQ09OU09MRSBNRVNTQUdFOiBYTUxIdHRwUmVxdWVzdCBj
YW5ub3QgbG9hZCBodHRwOi8vbG9jYWxob3N0OjgwMDAveG1saHR0cHJlcXVlc3QvcmVzb3VyY2Vz
L3N0YXR1cy00MDQtd2l0aG91dC1ib2R5LnB5IGR1ZSB0byBhY2Nlc3MgY29udHJvbCBjaGVja3Mu
Ci1DT05TT0xFIE1FU1NBR0U6IFByZWZsaWdodCByZXNwb25zZSBpcyBub3Qgc3VjY2Vzc2Z1bAot
Q09OU09MRSBNRVNTQUdFOiBYTUxIdHRwUmVxdWVzdCBjYW5ub3QgbG9hZCBodHRwOi8vbG9jYWxo
b3N0OjgwMDAveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL3N0YXR1cy00MDQtd2l0aG91dC1ib2R5
LnB5IGR1ZSB0byBhY2Nlc3MgY29udHJvbCBjaGVja3MuCi1UZXN0cyB0aGF0IG5vdCBzdWNjZXNz
ZnVsIHByZWZsaWdodCByZXNwb25zZXMgbWFrZSBwcmVmbGlnaHQgZmFpbGluZwotCi1QQVNTOiBO
ZXR3b3JrRXJyb3I6ICBBIG5ldHdvcmsgZXJyb3Igb2NjdXJyZWQuCi1QQVNTIENvbnRleHQgc3Ry
aW5nIGZvciBDT1JTIHByZWZsaWdodCBjb3JyZWN0bHkgY2FwdHVyZWQuCi0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9jb250ZXh0LXN0
cmluZy1wcmVmbGlnaHQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dz
ZXItcHJpdmFjeS9jb250ZXh0LXN0cmluZy1wcmVmbGlnaHQuaHRtbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNTdhMDVkMTQ3NTljOTQxZjhkMzNmZjc1MDNiOGQ3MDBhOTA0ZjBjOS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvY29udGV4dC1zdHJpbmctcHJlZmxp
Z2h0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi08cD5UZXN0cyB0aGF0IG5v
dCBzdWNjZXNzZnVsIHByZWZsaWdodCByZXNwb25zZXMgbWFrZSBwcmVmbGlnaHQgZmFpbGluZzwv
cD4KLQotPHByZSBpZD0iY29uc29sZSI+PC9wcmU+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIGxvZyhtZXNzYWdlKQotewotICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUobWVzc2FnZSArICdcbicpKTsKLX0KLSAgICAKLXZhciBwcmVmbGlnaHRMaW5rRG9t
YWluID0gImxvY2FsaG9zdCI7Ci12YXIgY29udGV4dEhvc3QgPSAiMTI3LjAuMC4xIjsKLXZhciB1
cmwgPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9zdGF0
dXMtNDA0LXdpdGhvdXQtYm9keS5weSIKLQotZnVuY3Rpb24gYXNrRm9yQ29udGV4dFN0cmluZ0Zv
clByZWZsaWdodCgpIHsKLSAgICB0ZXN0UnVubmVyLmFwcEJvdW5kUmVxdWVzdENvbnRleHREYXRh
Rm9yRG9tYWluKHByZWZsaWdodExpbmtEb21haW4sIGZ1bmN0aW9uIChjb250ZXh0RGF0YSkgewot
ICAgICAgICBpZiAoY29udGV4dERhdGEgPT0gbnVsbCkgewotICAgICAgICAgICAgYXNrRm9yQ29u
dGV4dFN0cmluZ0ZvclByZWZsaWdodCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0KLSAgICAgICAgaWYgKGNvbnRleHREYXRhID09IGNvbnRleHRIb3N0KQotICAgICAgICAgICAg
bG9nKCJQQVNTIENvbnRleHQgc3RyaW5nIGZvciBDT1JTIHByZWZsaWdodCBjb3JyZWN0bHkgY2Fw
dHVyZWQuIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGxvZygiRkFJTCBDb250ZXh0IHN0
cmluZyBmb3IgQ09SUyBwcmVmbGlnaHQgTk9UIGNvcnJlY3RseSBjYXB0dXJlZC4iKTsKLQotICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICB9KTsKLX0KLQotZnVuY3Rpb24gcnVu
VGVzdCgpCi17Ci0gICAgdmFyIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwotICAgIHJlcS5v
cGVuKCJHRVQiLCB1cmwsIGZhbHNlKTsKLSAgICByZXEuc2V0UmVxdWVzdEhlYWRlcigieC13ZWJr
aXQiLCAiZm9vIik7Ci0KLSAgICB0cnkgewotICAgICAgICByZXEuc2VuZChudWxsKTsKLSAgICAg
ICAgbG9nKCJQQVNTOiAiICsgcmVxLnJlc3BvbnNlVGV4dCk7Ci0gICAgfSBjYXRjaCAoZXgpIHsK
LSAgICAgICAgbG9nKCJQQVNTOiAiICsgZXgpOwotICAgIH0KLQotICAgIHJlcSA9IG5ldyBYTUxI
dHRwUmVxdWVzdCgpOwotICAgIHJlcS5vcGVuKCJHRVQiLCB1cmwsIHRydWUpOwotICAgIHJlcS5z
ZXRSZXF1ZXN0SGVhZGVyKCJ4LXdlYmtpdCIsICJmb28iKTsKLQotICAgIHJlcS5vbmxvYWQgPSBm
dW5jdGlvbigpIHsKLSAgICAgICAgYXNrRm9yQ29udGV4dFN0cmluZ0ZvclByZWZsaWdodCgpOwot
ICAgIH0KLSAgICByZXEub25lcnJvciA9IGZ1bmN0aW9uKCkgewotICAgICAgICBhc2tGb3JDb250
ZXh0U3RyaW5nRm9yUHJlZmxpZ2h0KCk7Ci0gICAgfQotICAgIHJlcS5zZW5kKG51bGwpOwotfQot
Ci1ydW5UZXN0KCk7Ci08L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9yZXNvdXJjZXMvZnJhbWUtd2l0aC1hdXRoZW50aWNh
dGVkLXJlc291cmNlLnB5IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1w
cml2YWN5L3Jlc291cmNlcy9mcmFtZS13aXRoLWF1dGhlbnRpY2F0ZWQtcmVzb3VyY2UucHkKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDg0OGQwZmQxYTZkNmMwOTlhYWQ2MWUwMDQyNDJl
MjM4OTU1M2U5NDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L3Jlc291cmNl
cy9mcmFtZS13aXRoLWF1dGhlbnRpY2F0ZWQtcmVzb3VyY2UucHkKKysrIC9kZXYvbnVsbApAQCAt
MSwxMyArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24zCi0KLWltcG9ydCBzeXMKLQotc3lz
LnN0ZG91dC53cml0ZSgKLSAgICAnQ2FjaGUtQ29udHJvbDogbWF4LWFnZT0wXHJcbicKLSAgICAn
RXRhZzogMTIzNDU2Nzg5XHJcbicKLSAgICAnQ29udGVudC1UeXBlOiB0ZXh0L2h0bWxcclxuXHJc
bicKLSAgICAnPCFET0NUWVBFIGh0bWw+XG4nCi0gICAgJzxib2R5PlxuJwotICAgICc8c2NyaXB0
IHNyYz0icmVzb3VyY2Utd2l0aC1hdXRoLnB5Ij48L3NjcmlwdD5cbicKLSAgICAnPC9ib2R5Plxu
JwotKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1w
cml2YWN5L3Jlc291cmNlcy9wb3N0LnB5IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAt
YnJvd3Nlci1wcml2YWN5L3Jlc291cmNlcy9wb3N0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1
NQppbmRleCAxZmNiYzNhMmZiMzIzMTE3MmRiOWI1OWJlY2U2NWMwOGM3MmRkNWE2Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9yZXNvdXJjZXMvcG9zdC5weQorKysgL2Rldi9u
dWxsCkBAIC0xLDI3ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbjMKLQotaW1wb3J0IG9z
Ci1pbXBvcnQgc3lzCi0KLXJlZmVyZXIgPSBvcy5lbnZpcm9uLmdldCgnSFRUUF9SRUZFUkVSJywg
JycpCi0KLXN5cy5zdGRvdXQud3JpdGUoCi0gICAgJ0NvbnRlbnQtVHlwZTogdGV4dC9odG1sXHJc
blxyXG4nCi0gICAgJzxwPlJlZmVycmVyOiB7cmVmZXJlcn08L3A+XG4nCi0gICAgJzxzY3JpcHQ+
XG4nCi0gICAgJ2lmICh3aW5kb3cudGVzdFJ1bm5lcikge3tcbicKLSAgICAnICAgIHZhciBkaWRM
b2FkQXBwQm91bmRSZXF1ZXN0ID0gdGVzdFJ1bm5lci5kaWRMb2FkQXBwQm91bmRSZXF1ZXN0KCk7
XG4nCi0gICAgJyAgICB2YXIgZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdCA9IHRlc3RSdW5uZXIu
ZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdCgpO1xuJwotICAgICcgICAgaWYgKGRpZExvYWROb25B
cHBCb3VuZFJlcXVlc3QpIHt7XG4nCi0gICAgJyAgICAgICAgY29uc29sZS5sb2coIkZBSUwgZGlk
IGxvYWQgbm9uIGFwcC1ib3VuZCByZXF1ZXN0Iik7XG4nCi0gICAgJyAgICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7XG4nCi0gICAgJyAgICB9fVxuJwotICAgICcgICAgaWYgKCFkaWRMb2Fk
QXBwQm91bmRSZXF1ZXN0KSB7e1xuJwotICAgICcgICAgICAgICBjb25zb2xlLmxvZygiRkFJTCBk
aWQgbm90IGxvYWQgYXBwLWJvdW5kIHJlcXVlc3QiKTtcbicKLSAgICAnICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTtcbicKLSAgICAnICAgICB9fVxuJwotICAgICcgICAgY29uc29sZS5s
b2coIlBBU1Mgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBvbmx5IGFwcC1ib3VuZCByZXF1ZXN0cyIpO1xu
JwotICAgICcgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7XG4nCi0gICAgJ319XG4nCi0gICAg
Jzwvc2NyaXB0PlxuJy5mb3JtYXQocmVmZXJlcj1yZWZlcmVyKQotKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L3Jlc291cmNlcy9yZXNv
dXJjZS13aXRoLWF1dGgucHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2Vy
LXByaXZhY3kvcmVzb3VyY2VzL3Jlc291cmNlLXdpdGgtYXV0aC5weQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA3NTUKaW5kZXggN2FmYjc4ZDgxYzZmM2M5ZGE0NzlkMjhiZTI0NmFlMTViY2QwNGRkZS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvcmVzb3VyY2VzL3Jlc291cmNlLXdp
dGgtYXV0aC5weQorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52
IHB5dGhvbjMKLQotaW1wb3J0IGJhc2U2NAotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi0KLWNyZWRl
bnRpYWxzID0gYmFzZTY0LmI2NGRlY29kZShvcy5lbnZpcm9uLmdldCgnSFRUUF9BVVRIT1JJWkFU
SU9OJywgJyBPZz09Jykuc3BsaXQoJyAnKVsxXSkuZGVjb2RlKCkuc3BsaXQoJzonKQotdXNlcm5h
bWUgPSBjcmVkZW50aWFsc1swXQotcGFzc3dvcmQgPSAnOicuam9pbihjcmVkZW50aWFsc1sxOl0p
Ci0KLWV4cGVjdGVkVXNlcm5hbWUgPSAndGVzdFVzZXJuYW1lJwotZXhwZWN0ZWRQYXNzd29yZCA9
ICd0ZXN0UGFzc3dvcmQnCi1yZWFsbSA9IG9zLmVudmlyb24uZ2V0KCdSRVFVRVNUX1VSSScsICcn
KQotCi1zeXMuc3Rkb3V0LndyaXRlKAotICAgICdDb250ZW50LVR5cGU6IHRleHQvamF2YXNjcmlw
dFxyXG4nCi0gICAgJ0NhY2hlLUNvbnRyb2w6IG1heC1hZ2U9MFxyXG4nCi0gICAgJ0V0YWc6IDEy
MzQ1Njc4OVxyXG4nCi0pCi0KLWlmIHVzZXJuYW1lICE9IGV4cGVjdGVkVXNlcm5hbWUgb3IgcGFz
c3dvcmQgIT0gZXhwZWN0ZWRQYXNzd29yZDoKLSAgICBzeXMuc3Rkb3V0LndyaXRlKAotICAgICAg
ICBmJ1dXVy1BdXRoZW50aWNhdGU6IEJhc2ljIHJlYWxtPSJ7cmVhbG19IlxyXG4nCi0gICAgICAg
ICdzdGF0dXM6IDQwMVxyXG5cclxuJwotICAgICAgICBmJ1NlbnQgdXNlcm5hbWU6cGFzc3dvcmQg
b2YgKHt1c2VybmFtZX06e3Bhc3N3b3JkfSkgd2hpY2ggaXMgbm90IHdoYXQgd2FzIGV4cGVjdGVk
XG4nCi0gICAgKQotICAgIHN5cy5leGl0KDApCi0KLXN5cy5zdGRvdXQud3JpdGUoJ1xyXG5sb2Fk
ZWQgPSB0cnVlO1xuJykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdh
dGlvbi9yZXNvdXJjZXMvY2hlY2stcGluZy1hcHAtYm91bmQtZGF0YS5weSBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvY2hlY2stcGluZy1hcHAtYm91bmQtZGF0
YS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNmZmNWRlZjM0MDUzMmY5ZGY2YTgx
Zjg1NDEwNDA5OGU5MzNkM2VkOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2No
ZWNrLXBpbmctYXBwLWJvdW5kLWRhdGEucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBA
Ci0jIS91c3IvYmluL2VudiBweXRob24zCi0KLWltcG9ydCBvcwotaW1wb3J0IHN5cwotaW1wb3J0
IHRpbWUKLWZyb20gcGluZ19maWxlX3BhdGggaW1wb3J0IHBpbmdfZmlsZXBhdGgKLQotc3lzLnN0
ZG91dC53cml0ZSgnQ29udGVudC1UeXBlOiB0ZXh0L2h0bWxcclxuXHJcbicpCi0KLXdoaWxlIG5v
dCBvcy5wYXRoLmlzZmlsZShwaW5nX2ZpbGVwYXRoKToKLSAgICB0aW1lLnNsZWVwKDAuMDEpCi0K
LXN5cy5zdGRvdXQud3JpdGUoCi0gICAgJzxodG1sPjxib2R5PlxuJwotICAgICdQaW5nIHNlbnQg
c3VjY2Vzc2Z1bGx5JwotKQotCi1waW5nX2ZpbGUgPSBvcGVuKHBpbmdfZmlsZXBhdGgsICdyJykK
LWZvciBsaW5lIGluIHBpbmdfZmlsZS5yZWFkbGluZXMoKToKLSAgICBzeXMuc3Rkb3V0LndyaXRl
KCc8YnI+e30nLmZvcm1hdChsaW5lLnN0cmlwKCkpKQotCi1waW5nX2ZpbGUuY2xvc2UoKQotaWYg
b3MucGF0aC5pc2ZpbGUocGluZ19maWxlcGF0aCk6Ci0gICAgb3MucmVtb3ZlKHBpbmdfZmlsZXBh
dGgpCi0KLXN5cy5zdGRvdXQud3JpdGUoCi0gICAgJzxzY3JpcHQ+JwotICAgICdpZiAod2luZG93
LnRlc3RSdW5uZXIpIHt7XG4nCi0gICAgJyAgICB2YXIgZGlkTG9hZEFwcEJvdW5kUmVxdWVzdCA9
IHRlc3RSdW5uZXIuZGlkTG9hZEFwcEJvdW5kUmVxdWVzdCgpO1xuJwotICAgICcgICAgdmFyIGRp
ZExvYWROb25BcHBCb3VuZFJlcXVlc3QgPSB0ZXN0UnVubmVyLmRpZExvYWROb25BcHBCb3VuZFJl
cXVlc3QoKTtcbicKLSAgICAnICAgIGlmIChkaWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0KSB7e1xu
JwotICAgICcgICAgICAgIGNvbnNvbGUubG9nKCJGQUlMIGRpZCBsb2FkIG5vbiBhcHAtYm91bmQg
cmVxdWVzdCIpO1xuJwotICAgICcgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpO1xuJwot
ICAgICcgICAgfX1cbicKLSAgICAnICAgIGlmICghZGlkTG9hZEFwcEJvdW5kUmVxdWVzdCkge3tc
bicKLSAgICAnICAgICAgICAgY29uc29sZS5sb2coIkZBSUwgZGlkIG5vdCBsb2FkIGFwcC1ib3Vu
ZCByZXF1ZXN0Iik7XG4nCi0gICAgJyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7XG4n
Ci0gICAgJyAgICAgfX1cbicKLSAgICAnICAgIGNvbnNvbGUubG9nKCJQQVNTIHN1Y2Nlc3NmdWxs
eSBsb2FkZWQgb25seSBhcHAtYm91bmQgcmVxdWVzdHMiKTtcbicKLSAgICAnICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpO1xuJwotICAgICd9fVxuJwotICAgICc8L3NjcmlwdD4nCi0gICAgJzwv
Ym9keT48L2h0bWw+JwotKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZp
Z2F0aW9uL3Jlc291cmNlcy9jaGVjay1waW5nLWFwcC1pbml0aWF0ZWQtZGF0YS5weSBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvY2hlY2stcGluZy1hcHAtaW5p
dGlhdGVkLWRhdGEucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjBmM2QyZjE3MTkyODQ3N2U0YjE4ODgwMzIwM2Vi
MGVmN2ViNDU1MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2
aWdhdGlvbi9yZXNvdXJjZXMvY2hlY2stcGluZy1hcHAtaW5pdGlhdGVkLWRhdGEucHkKQEAgLTAs
MCArMSw0NCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworCitpbXBvcnQgb3MKK2ltcG9ydCBz
eXMKK2ltcG9ydCB0aW1lCitmcm9tIHBpbmdfZmlsZV9wYXRoIGltcG9ydCBwaW5nX2ZpbGVwYXRo
CisKK3N5cy5zdGRvdXQud3JpdGUoJ0NvbnRlbnQtVHlwZTogdGV4dC9odG1sXHJcblxyXG4nKQor
Cit3aGlsZSBub3Qgb3MucGF0aC5pc2ZpbGUocGluZ19maWxlcGF0aCk6CisgICAgdGltZS5zbGVl
cCgwLjAxKQorCitzeXMuc3Rkb3V0LndyaXRlKAorICAgICc8aHRtbD48Ym9keT5cbicKKyAgICAn
UGluZyBzZW50IHN1Y2Nlc3NmdWxseScKKykKKworcGluZ19maWxlID0gb3BlbihwaW5nX2ZpbGVw
YXRoLCAncicpCitmb3IgbGluZSBpbiBwaW5nX2ZpbGUucmVhZGxpbmVzKCk6CisgICAgc3lzLnN0
ZG91dC53cml0ZSgnPGJyPnt9Jy5mb3JtYXQobGluZS5zdHJpcCgpKSkKKworcGluZ19maWxlLmNs
b3NlKCkKK2lmIG9zLnBhdGguaXNmaWxlKHBpbmdfZmlsZXBhdGgpOgorICAgIG9zLnJlbW92ZShw
aW5nX2ZpbGVwYXRoKQorCitzeXMuc3Rkb3V0LndyaXRlKAorICAgICc8c2NyaXB0PicKKyAgICAn
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7e1xuJworICAgICcgICAgdmFyIGRpZExvYWRBcHBJbml0
aWF0ZWRSZXF1ZXN0ID0gdGVzdFJ1bm5lci5kaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdCgpO1xu
JworICAgICcgICAgdmFyIGRpZExvYWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0ID0gdGVzdFJ1bm5l
ci5kaWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdCgpO1xuJworICAgICcgICAgaWYgKGRpZExv
YWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0KSB7e1xuJworICAgICcgICAgICAgIGNvbnNvbGUubG9n
KCJGQUlMIGRpZCBsb2FkIG5vbiBhcHAgaW5pdGlhdGVkIHJlcXVlc3QiKTtcbicKKyAgICAnICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTtcbicKKyAgICAnICAgIH19XG4nCisgICAgJyAg
ICBpZiAoIWRpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0KSB7e1xuJworICAgICcgICAgICAgICBj
b25zb2xlLmxvZygiRkFJTCBkaWQgbm90IGxvYWQgYXBwIGluaXRpYXRlZCByZXF1ZXN0Iik7XG4n
CisgICAgJyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7XG4nCisgICAgJyAgICAgfX1c
bicKKyAgICAnICAgIGNvbnNvbGUubG9nKCJQQVNTIHN1Y2Nlc3NmdWxseSBsb2FkZWQgb25seSBh
cHAgaW5pdGlhdGVkIHJlcXVlc3RzIik7XG4nCisgICAgJyAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTtcbicKKyAgICAnfX1cbicKKyAgICAnPC9zY3JpcHQ+JworICAgICc8L2JvZHk+PC9odG1s
PicKKykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvVGVzdEV4cGVj
dGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvVGVzdEV4cGVjdGF0aW9ucwpp
bmRleCAyZGIzODgxMWYyNmUyYzcwYzVhYmE3YTU4MmY5M2M5Nzk1YzRhYWQ2Li4yZTg0NTI2NGVm
YzQ4NGQ1NDEwY2RiNGZkNDI3Zjc3ZTFjYzgzMmMyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC0xODE1LDE3ICsxODE1LDYgQEAgd2Via2l0
Lm9yZy9iLzIxNDU5OCBmYXN0L3Njcm9sbGluZy9pb3MvYXV0b3Njcm9sbC1pbnB1dC13aGVuLXZl
cnktem9vbWVkLmh0bWwgWwogCiBodHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvIFsg
UGFzcyBdCiAKLSMgU29tZSBJbi1BcHAgQnJvd3NlciBQcml2YWN5IHRlc3RzIHJlbHkgb24gZnVu
Y3Rpb25zIGluIFdlYktpdEFkZGl0aW9ucy4KLWh0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJp
dmFjeS9jb250ZXh0LXN0cmluZy1mb3Itc3ViZnJhbWUuaHRtbCBbIFNraXAgXQotaHR0cC90ZXN0
cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2NvbnRleHQtc3RyaW5nLXByZWNvbm5lY3QuaHRtbCBb
IFNraXAgXQotaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2NvbnRleHQtc3RyaW5n
LXByZWZsaWdodC5odG1sIFsgU2tpcCBdCi1odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZh
Y3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXByZWZsaWdodC1hc3luYy5odG1sIFsgU2tpcCBdCi1o
dHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXBy
ZWZsaWdodC1zeW5jLmh0bWwgWyBTa2lwIF0KLWh0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJp
dmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tc3BlY3VsYXRpdmUtcmV2YWxpZGF0aW9uLmh0bWwg
WyBTa2lwIF0KLWh0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0
cmlidXRpb24tbG9hZC11cmwuaHRtbCBbIFNraXAgXQotaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nl
ci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1waW5nLWxvYWQuaHRtbCBbIFNraXAgXQot
aHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1w
b3N0LXJlcXVlc3QuaHRtbCBbIFNraXAgXQotCiB3ZWJraXQub3JnL2IvMTc1MTkzIGZhc3QvaW1h
Z2VzL2FzeW5jLWltYWdlLWJvZHktYmFja2dyb3VuZC1pbWFnZS5odG1sIFsgUGFzcyBUaW1lb3V0
IF0KIAogd2Via2l0Lm9yZy9iLzIxNTExMCBbIFJlbGVhc2UgXSBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtYW5pbWF0aW9ucy93ZWJraXQtd3JpdGluZy1tb2RlLWNyYXNo
Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433101</attachid>
            <date>2021-07-07 17:48:47 -0700</date>
            <delta_ts>2021-07-08 13:54:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227326-20210707174846.patch</filename>
            <type>text/plain</type>
            <size>268854</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5Njc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODc0NzY5NjA4M2M0MjY2
NTA4ZTgxOTY5ZmRmZTcxMzcyZThlMDEwNy4uNGI2NTRmNjU3NDM2ZTgwYmRjOTg5YWQ1NWI4YmMz
YTMzMjM0YjQ1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDIxLTA3LTA3ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIENsZWFuIHVw
IEFwcCBQcml2YWN5IFJlcG9ydCBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjczMjYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc5Njk2ODQ5
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Rz
OiBodHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1sb2FkLXVybC5odG1s
CisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlv
bi1waW5nLWxvYWQuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1y
ZXBvcnQvYXR0cmlidXRpb24tcG9zdC1yZXF1ZXN0Lmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAv
dGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXByZWZsaWdodC1hc3luYy5odG1s
CisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlv
bi1wcmVmbGlnaHQtc3luYy5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL2FwcC1wcml2
YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1zcGVjdWxhdGl2ZS1yZXZhbGlkYXRpb24uaHRtbAorCisg
ICAgICAgIFJlbmFtZSBBcHAgUHJpdmFjeSBSZXBvcnQgY29kZSB0byBiZXR0ZXIgYWxpZ24gd2l0
aCB0aGUgY29kZSdzIHB1cnBvc2UKKyAgICAgICAgb2YgYXR0cmlidXRpbmcgbG9hZHMgdG8gdGhl
IGFwcCBvciBub3QuIFRoZSBkZWZhdWx0IHZhbHVlIHNob3VsZAorICAgICAgICBiZSBhcHAgaW5p
dGlhdGVkIGJhc2VkIG9uIHRoZSBkb2N1bWVudGF0aW9uLCBzbyB0aGlzIHBhdGNoIGFsc28gYWRq
dXN0cworICAgICAgICB0aGUgZGVmYXVsdCB2YWx1ZSBhcyBuZWVkZWQuCisKKyAgICAgICAgKiBs
b2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUFjY2Vzc0NvbnRyb2xQcmVmbGlnaHRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvRG9j
dW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpsYXN0TmF2
aWdhdGlvbldhc0FwcEluaXRpYXRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXI6Omxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnNldExhc3ROYXZpZ2F0
aW9uV2FzQXBwQm91bmQpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlcjo6dXBkYXRlUmVxdWVzdEFuZEFkZEV4dHJhRmllbGRzKToKKyAgICAg
ICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlUmVxdWVzdEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
QmFzZTo6c2V0QXNJc29sYXRlZENvcHkpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXF1ZXN0QmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0QmFz
ZTo6aXNBcHBJbml0aWF0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0QmFzZTo6c2V0SXNBcHBJbml0aWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0QmFzZTo6UmVzb3VyY2VSZXF1ZXN0QmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3RCYXNlOjplbmNvZGVCYXNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdEJhc2U6OmRlY29kZUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0QmFzZTo6aXNBcHBCb3VuZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRJc0FwcEJvdW5kKTogRGVsZXRlZC4KKyAgICAg
ICAgKiB0ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2VydmljZVdvcmtlckludGVybmFsczo6bGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckludGVybmFsczo6bGFzdE5hdmlnYXRp
b25XYXNBcHBCb3VuZCk6IERlbGV0ZWQuCisgICAgICAgICogdGVzdGluZy9TZXJ2aWNlV29ya2Vy
SW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlk
bDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE6Omlzb2xhdGVkQ29w
eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZnJv
bSk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmg6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjpkZWNvZGUpOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjppc29sYXRlZENvcHkg
Y29uc3QpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERh
dGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZGVj
b2RlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5
OjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdv
cmtlclRocmVhZFByb3h5OjpzZXRMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6Omxhc3ROYXZpZ2F0aW9uV2Fz
QXBwSW5pdGlhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eTo6c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6Omxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQp
OiBEZWxldGVkLgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eS5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0
cmF0aW9uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVnaXN0cmF0aW9uRGF0YWJh
c2U6OmltcG9ydFJlY29yZHMpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnN0YXJ0U2NyaXB0RmV0Y2gp
OgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnVwZGF0ZVdvcmtlcik6CisgICAgICAgIChX
ZWJDb3JlOjpTV1NlcnZlcjo6Y2xpZW50SXNBcHBJbml0aWF0ZWRGb3JSZWdpc3RyYWJsZURvbWFp
bik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6dXBkYXRlQXBwSW5pdGlhdGVkVmFsdWVG
b3JXb3JrZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpyZWdpc3RlclNlcnZpY2VX
b3JrZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnVucmVnaXN0ZXJTZXJ2
aWNlV29ya2VyQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpjbGllbnRJc0Fw
cEJvdW5kRm9yUmVnaXN0cmFibGVEb21haW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
U1dTZXJ2ZXI6OnVwZGF0ZUFwcEJvdW5kVmFsdWVGb3JXb3JrZXJzKTogRGVsZXRlZC4KKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmg6CisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTV1NlcnZlclJlZ2lzdHJhdGlvbjo6c2NoZWR1bGVTb2Z0VXBkYXRlKToKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmg6CisgICAgICAg
IChXZWJDb3JlOjpTV1NlcnZlclJlZ2lzdHJhdGlvbjo6aXNBcHBJbml0aWF0ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1dTZXJ2ZXJSZWdpc3RyYXRpb246OmlzQXBwQm91bmQpOiBEZWxldGVkLgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjptX2xhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpjb250ZXh0RGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6dXBkYXRlQXBwSW5pdGlhdGVkVmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6bV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjp1cGRhdGVBcHBCb3VuZFZhbHVl
KTogRGVsZXRlZC4KKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29y
a2VyLmg6CisKIDIwMjEtMDctMDcgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFtMRkNdW0lGQ10gVW5leHBlY3RlZCBjb250ZW50IHdyYXAgd2hlbiB0aGUgY29udGFp
bmluZyBibG9jayB3aWR0aCBpcyBmaXhlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA3MDY0ZGMyMWNjMDE5ZjFlYWQ5
NTM4NGE4Yjg0ODljODYwZDAyYThlLi44ZmE0N2M0OWMzMzFlZGRjNTcwZWUyODYwMmQyOWEwMTRm
N2YzYjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNiBAQAorMjAyMS0wNy0wNyAgS2F0ZSBDaGVu
ZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBDbGVhbiB1cCBBcHAg
UHJpdmFjeSBSZXBvcnQgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI3MzI2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83OTY5Njg0OT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWUgQXBw
IFByaXZhY3kgUmVwb3J0IGNvZGUgdG8gYmV0dGVyIGFsaWduIHdpdGggdGhlIGNvZGUncyBwdXJw
b3NlCisgICAgICAgIG9mIGF0dHJpYnV0aW5nIGxvYWRzIHRvIHRoZSBhcHAgb3Igbm90LiBUaGUg
ZGVmYXVsdCB2YWx1ZSBzaG91bGQKKyAgICAgICAgYmUgYXBwIGluaXRpYXRlZCBiYXNlZCBvbiB0
aGUgZG9jdW1lbnRhdGlvbiwgc28gdGhpcyBwYXRjaCBhbHNvIGFkanVzdHMKKyAgICAgICAgdGhl
IGRlZmF1bHQgdmFsdWUgYXMgbmVlZGVkLgorCisgICAgICAgIFRoaXMgYWxzbyBhZG9wdHMgdGhl
IG5ldyBOU1VSTFJlcXVlc3QgYXR0cmlidXRpb24gQVBJIGFuZCByZW1vdmVzCisgICAgICAgIHRo
ZSBkZXByZWNhdGVkIF9pc05vbkFwcEluaXRpYXRlZCBTUEkuCisKKyAgICAgICAgQ292ZXJlZCBi
eSBleGlzdGluZyBsYXlvdXQgYW5kIEFQSSB0ZXN0cy4KKworICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OnByZWNvbm5lY3RUbyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjphcHBQcml2
YWN5UmVwb3J0VGVzdGluZ0RhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6
Y2xlYXJBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6YXBwQm91bmROYXZpZ2F0aW9uRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGEpOiBEZWxl
dGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51ZVdpbGxTZW5kUmVkaXJlY3RlZFJlcXVl
c3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmlzQXBwQm91bmQp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmg6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjphcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6YXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0Rh
dGEpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlckZldGNoVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2s6OnNvZnRVcGRhdGVJZk5lZWRlZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpsb2FkRnJvbU5ldHdvcmsp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpjb250
cm9sQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpjcmVh
dGVGZXRjaFRhc2spOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp1cGRhdGVBcHBJbml0aWF0ZWRWYWx1ZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6dXBkYXRlQXBwQm91
bmRWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpjb25zdHJ1Y3RSZXZhbGlkYXRpb25SZXF1ZXN0KToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpy
ZWdpc3RlckxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZl
TG9hZE1hbmFnZXI6OnN0YXJ0U3BlY3VsYXRpdmVSZXZhbGlkYXRpb24pOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5Lmg6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3VicmVzb3VyY2VJbmZvOjppc0FwcEluaXRpYXRl
ZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3VicmVzb3VyY2VJbmZv
OjpzZXRJc0FwcEluaXRpYXRlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3Vi
cmVzb3VyY2VJbmZvOjppc0FwcEJvdW5kIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0NhY2hlOjpTdWJyZXNvdXJjZUluZm86OnNldElzQXBwQm91bmQpOiBEZWxldGVk
LgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1t
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNr
Q29jb2EpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAo
aGVhZGVyc19mb3JfdHlwZSk6CisgICAgICAgICogU2hhcmVkL0FwcFByaXZhY3lSZXBvcnQuaDoK
KyAgICAgICAgKFdlYktpdDo6QXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhOjpzZXREaWRQZXJm
b3JtU29mdFVwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkFwcFByaXZhY3lSZXBvcnRUZXN0aW5n
RGF0YTo6Y2xlYXJBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEpOgorICAgICAgICAoV2ViS2l0
OjpBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGE6OmRpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0
KToKKyAgICAgICAgKFdlYktpdDo6QXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhOjplbmNvZGUg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGE6OmRl
Y29kZSk6CisgICAgICAgICogU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29h
Lm1tOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dD46OmVuY29kZVBsYXRmb3JtRGF0YSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKiBT
aGFyZWQvTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaDoKKyAgICAgICAgKFdlYktpdDo6QXBw
Qm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGE6OnNldERpZFBlcmZvcm1Tb2Z0VXBkYXRlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6QXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGE6OmNs
ZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YVRlc3RpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
S2l0OjpBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YTo6dXBkYXRlQXBwQm91bmROYXZpZ2F0
aW9uVGVzdGluZ0RhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpBcHBCb3VuZE5hdmln
YXRpb25UZXN0aW5nRGF0YTo6ZW5jb2RlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6QXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGE6OmRlY29kZSk6IERlbGV0ZWQuCisgICAg
ICAgICgpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6
ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX2RpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0Ol0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX2RpZExvYWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0Ol0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX2FwcEJvdW5kTmF2aWdhdGlvbkRhdGFGb3JEb21haW46Y29tcGxldGlvbkhhbmRsZXI6
XSk6IERlbGV0ZWQuCisgICAgICAgIFJlbW92ZWQgbm93IHRoYXQgd2Ugbm8gbG9uZ2VyIG5lZWQg
dG8gdGVzdCBhdHRyaWJ1dGlvbiBjb250ZXh0LCB0aGF0CisgICAgICAgIGlzIGFsbCBpdCB3YXMg
dXNlZCBmb3IuCisKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kaWRMb2FkQXBwQm91bmRSZXF1ZXN0
Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1dlYlZpZXcgX2RpZExvYWROb25BcHBCb3VuZFJl
cXVlc3Q6XSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2
YXRlRm9yVGVzdGluZy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
VGVzdGluZy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9sYXN0TmF2aWdhdGlvbldhc0FwcElu
aXRpYXRlZDpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9hcHBQcml2YWN5UmVwb3J0VGVzdGlu
Z0RhdGE6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfY2xlYXJBcHBQcml2YWN5UmVwb3J0VGVz
dGluZ0RhdGE6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfbGFzdE5hdmlnYXRpb25XYXNBcHBC
b3VuZDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9hcHBCb3VuZE5hdmlnYXRp
b25EYXRhOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1dlYlZpZXcgX2NsZWFyQXBwQm91bmRO
YXZpZ2F0aW9uRGF0YTpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
UGFnZVByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0TGFz
dE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6Omxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpzZXRMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6cHJlY29ubmVjdFRvKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBy
ZWNvbm5lY3RUbyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJh
bWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphcHBQcml2YWN5UmVwb3J0
VGVzdGluZ0RhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNsZWFyQXBwUHJp
dmFjeVJlcG9ydFRlc3RpbmdEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojph
cHBCb3VuZE5hdmlnYXRpb25EYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpjbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGEpOiBEZWxldGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3Ry
YXRlZ3kuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJlc291
cmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnByZWNvbm5lY3RUbyk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246
OnVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb246OnN0YXJ0RmV0Y2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6dXBkYXRlQXBwQm91bmRWYWx1ZSk6IERlbGV0ZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bG9hZFJlcXVl
c3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjcmVhdGVEb2N1bWVudExvYWRlcik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk6IERl
bGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoK
KwogMjAyMS0wNy0wNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQgZm9sbG93LXVwIHRvIHIyNzk2MDEgdG8gYWRkcmVzcyBzb21lIGFzc2VydGlv
bnMgb24gdGhlIGJvdHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NP
cmlnaW5BY2Nlc3NDb250cm9sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdp
bkFjY2Vzc0NvbnRyb2wuY3BwCmluZGV4IDJhMWFlNTI1MzhiMDYwZGExMWZjOWRmYmQ0MGI4YTZk
NzhhZGViMTguLjM4OTkyOTc2YzZhMWRhZGM4Nzc5NGY3OGRiNzg0ZDRmZTRlMDUzZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3Bw
CkBAIC04OSw3ICs4OSw3IEBAIFJlc291cmNlUmVxdWVzdCBjcmVhdGVBY2Nlc3NDb250cm9sUHJl
ZmxpZ2h0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlCiAgICAgcHJlZmxpZ2h0
UmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkFjY2Vzc0NvbnRyb2xS
ZXF1ZXN0TWV0aG9kLCByZXF1ZXN0Lmh0dHBNZXRob2QoKSk7CiAgICAgcHJlZmxpZ2h0UmVxdWVz
dC5zZXRQcmlvcml0eShyZXF1ZXN0LnByaW9yaXR5KCkpOwogICAgIHByZWZsaWdodFJlcXVlc3Qu
c2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMocmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygpKTsK
LSAgICBwcmVmbGlnaHRSZXF1ZXN0LnNldElzQXBwQm91bmQocmVxdWVzdC5pc0FwcEJvdW5kKCkp
OworICAgIHByZWZsaWdodFJlcXVlc3Quc2V0SXNBcHBJbml0aWF0ZWQocmVxdWVzdC5pc0FwcElu
aXRpYXRlZCgpKTsKICAgICBpZiAoIXJlZmVycmVyLmlzTnVsbCgpKQogICAgICAgICBwcmVmbGln
aHRSZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihyZWZlcnJlcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmgKaW5kZXggZTY5MzUzMmViZDY0ZjVjMDQyYzdjMzdkODM5MTg5NTk3
ZDZlNjkwOS4uMzllYjA2Mjk5ZTU3MGM0NzU5YWVjZjBlZjA5NzE4MjRlYjUwNTYyNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKQEAgLTQxOSw4ICs0MTksOCBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzZXRDb250cm9sbGluZ1NlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb24oU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJik7CiAjZW5kaWYKIAot
ICAgIGJvb2wgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFz
dE5hdmlnYXRpb25XYXNBcHBCb3VuZDsgfQotICAgIHZvaWQgc2V0TGFzdE5hdmlnYXRpb25XYXNB
cHBCb3VuZChib29sIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpIHsgbV9sYXN0TmF2aWdhdGlv
bldhc0FwcEJvdW5kID0gbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDsgfQorICAgIGJvb2wgbGFz
dE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQoKSBjb25zdCB7IHJldHVybiBtX2xhc3ROYXZpZ2F0
aW9uV2FzQXBwSW5pdGlhdGVkOyB9CisgICAgdm9pZCBzZXRMYXN0TmF2aWdhdGlvbldhc0FwcElu
aXRpYXRlZChib29sIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKSB7IG1fbGFzdE5hdmln
YXRpb25XYXNBcHBJbml0aWF0ZWQgPSBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDsgfQog
CiBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKTsKQEAgLTY1OSw3ICs2NTksNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV9hbGxvd3NXZWJBcmNoaXZlRm9yTWFpbkZyYW1lIHsgZmFs
c2UgfTsKICAgICBib29sIG1fYWxsb3dzRGF0YVVSTHNGb3JNYWluRnJhbWUgeyBmYWxzZSB9Owog
Ci0gICAgYm9vbCBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgeyBmYWxzZSB9OworICAgIGJv
b2wgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCB7IHRydWUgfTsKIH07CiAKIGlubGlu
ZSB2b2lkIERvY3VtZW50TG9hZGVyOjpyZWNvcmRNZW1vcnlDYWNoZUxvYWRGb3JGdXR1cmVDbGll
bnROb3RpZmljYXRpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggY2YyMmU0ZjA4NmEyNzU3MjVhOTQzZTQwNjll
MDczZTI5MDY3ZjE2ZC4uODU0YzEzZWU0YWUwMWU2YzJiODNjNTExMWI0ODAzMTg5MTNhZTBjNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0xNDkzLDcgKzE0OTMsNyBA
QCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkKERvY3VtZW50TG9hZGVyJiBuZXdEb2N1bWVudExvYWRl
cikKICAgICBSZXNvdXJjZVJlcXVlc3QmIHIgPSBuZXdEb2N1bWVudExvYWRlci5yZXF1ZXN0KCk7
CiAgICAgLy8gRklYTUU6IFVzaW5nIG1fbG9hZFR5cGUgc2VlbXMgd3JvbmcgaGVyZS4KICAgICAv
LyBJZiB3ZSBhcmUgb25seSBwcmVwYXJpbmcgdG8gbG9hZCB0aGUgbWFpbiByZXNvdXJjZSwgdGhh
dCBpcyBwcmV2aW91cyBsb2FkJ3MgbG9hZCB0eXBlIQotICAgIHVwZGF0ZVJlcXVlc3RBbmRBZGRF
eHRyYUZpZWxkcyhyLCBJc01haW5SZXNvdXJjZTo6WWVzLCBtX2xvYWRUeXBlLCBTaG91bGRVcGRh
dGVBcHBCb3VuZFZhbHVlOjpObyk7CisgICAgdXBkYXRlUmVxdWVzdEFuZEFkZEV4dHJhRmllbGRz
KHIsIElzTWFpblJlc291cmNlOjpZZXMsIG1fbG9hZFR5cGUsIFNob3VsZFVwZGF0ZUFwcEluaXRp
YXRlZFZhbHVlOjpObyk7CiAgICAgRnJhbWVMb2FkVHlwZSB0eXBlOwogCiAgICAgaWYgKHNob3Vs
ZFRyZWF0VVJMQXNTYW1lQXNDdXJyZW50KG5ld0RvY3VtZW50TG9hZGVyLm9yaWdpbmFsUmVxdWVz
dCgpLnVybCgpKSkgewpAQCAtMjg4Miw3ICsyODgyLDcgQEAgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQ
b2xpY3kgRnJhbWVMb2FkZXI6OmRlZmF1bHRSZXF1ZXN0Q2FjaGluZ1BvbGljeShjb25zdCBSZXNv
dXIKICAgICByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlVzZVByb3RvY29sQ2Fj
aGVQb2xpY3k7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OnVwZGF0ZVJlcXVlc3RBbmRBZGRFeHRy
YUZpZWxkcyhSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIElzTWFpblJlc291cmNlIG1haW5SZXNv
dXJjZSwgRnJhbWVMb2FkVHlwZSBsb2FkVHlwZSwgU2hvdWxkVXBkYXRlQXBwQm91bmRWYWx1ZSBz
aG91bGRVcGRhdGUpCit2b2lkIEZyYW1lTG9hZGVyOjp1cGRhdGVSZXF1ZXN0QW5kQWRkRXh0cmFG
aWVsZHMoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBJc01haW5SZXNvdXJjZSBtYWluUmVzb3Vy
Y2UsIEZyYW1lTG9hZFR5cGUgbG9hZFR5cGUsIFNob3VsZFVwZGF0ZUFwcEluaXRpYXRlZFZhbHVl
IHNob3VsZFVwZGF0ZSkKIHsKICAgICAvLyBJZiB0aGUgcmVxdWVzdCBjYW1lIGZyb20gYSBwcmV2
aW91cyBwcm9jZXNzIGR1ZSB0byBwcm9jZXNzLXN3YXAtb24tbmF2aWdhdGlvbiB0aGVuIHdlIHNo
b3VsZCBub3QgbW9kaWZ5IHRoZSByZXF1ZXN0LgogICAgIGlmIChtX2N1cnJlbnRMb2FkQ29udGlu
dWluZ1N0YXRlID09IExvYWRDb250aW51aW5nU3RhdGU6OkNvbnRpbnVpbmdXaXRoUmVxdWVzdCkK
QEAgLTI5NTIsOCArMjk1Miw4IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnVwZGF0ZVJlcXVlc3RBbmRB
ZGRFeHRyYUZpZWxkcyhSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIElzTWFpCiAgICAgICAgIHJl
cXVlc3Quc2V0UmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXko
IlVURi04IiwgbV9mcmFtZS5kb2N1bWVudCgpLT5lbmNvZGluZygpLCBtX2ZyYW1lLnNldHRpbmdz
KCkuZGVmYXVsdFRleHRFbmNvZGluZ05hbWUoKSk7CiAgICAgfQogCi0gICAgaWYgKHNob3VsZFVw
ZGF0ZSA9PSBTaG91bGRVcGRhdGVBcHBCb3VuZFZhbHVlOjpZZXMgJiYgbV9mcmFtZS5tYWluRnJh
bWUoKS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKQotICAgICAgICByZXF1ZXN0LnNldElzQXBw
Qm91bmQobV9mcmFtZS5tYWluRnJhbWUoKS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5sYXN0
TmF2aWdhdGlvbldhc0FwcEJvdW5kKCkpOworICAgIGlmIChzaG91bGRVcGRhdGUgPT0gU2hvdWxk
VXBkYXRlQXBwSW5pdGlhdGVkVmFsdWU6OlllcyAmJiBtX2ZyYW1lLm1haW5GcmFtZSgpLmxvYWRl
cigpLmRvY3VtZW50TG9hZGVyKCkpCisgICAgICAgIHJlcXVlc3Quc2V0SXNBcHBJbml0aWF0ZWQo
bV9mcmFtZS5tYWluRnJhbWUoKS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5sYXN0TmF2aWdh
dGlvbldhc0FwcEluaXRpYXRlZCgpKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6c2NoZWR1bGVS
ZWZyZXNoSWZOZWVkZWQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGNvbnRlbnQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IGYxMjM5OWU1ZTU1Y2ZkNzMwNGQ2
NzRkMWI2OWE1ZDc5NjdjODI2MmIuLjI2Y2RiMjZkNTk2MDFhOWFiODczMDMwYjQ2MTUzNzUwNTI3
MzI1YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC04NSw3ICs4NSw3IEBA
IGVudW0gY2xhc3MgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uIDogdWludDhfdDsKIGVudW0gY2xh
c3MgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIDogYm9vbDsKIGVudW0gY2xhc3MgVXNlZExl
Z2FjeVRMUyA6IGJvb2w7CiBlbnVtIGNsYXNzIElzTWFpblJlc291cmNlIDogYm9vbCB7IE5vLCBZ
ZXMgfTsKLWVudW0gY2xhc3MgU2hvdWxkVXBkYXRlQXBwQm91bmRWYWx1ZSA6IGJvb2wgeyBObywg
WWVzIH07CitlbnVtIGNsYXNzIFNob3VsZFVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlIDogYm9vbCB7
IE5vLCBZZXMgfTsKIAogc3RydWN0IFdpbmRvd0ZlYXR1cmVzOwogCkBAIC0zMTcsNyArMzE3LDcg
QEAgcHVibGljOgogICAgIGJvb2wgYWx3YXlzQWxsb3dMb2NhbFdlYmFyY2hpdmUoKSBjb25zdCB7
IHJldHVybiBtX2Fsd2F5c0FsbG93TG9jYWxXZWJhcmNoaXZlOyB9CiAKICAgICAvLyBGb3Igc3Vi
cmVzb3VyY2UgcmVxdWVzdHMgdGhlIEZyYW1lTG9hZFR5cGUgcGFyYW1ldGVyIGhhcyBubyBlZmZl
Y3QgYW5kIGNhbiBiZSBza2lwcGVkLgotICAgIHZvaWQgdXBkYXRlUmVxdWVzdEFuZEFkZEV4dHJh
RmllbGRzKFJlc291cmNlUmVxdWVzdCYsIElzTWFpblJlc291cmNlLCBGcmFtZUxvYWRUeXBlID0g
RnJhbWVMb2FkVHlwZTo6U3RhbmRhcmQsIFNob3VsZFVwZGF0ZUFwcEJvdW5kVmFsdWUgPSBTaG91
bGRVcGRhdGVBcHBCb3VuZFZhbHVlOjpZZXMpOworICAgIHZvaWQgdXBkYXRlUmVxdWVzdEFuZEFk
ZEV4dHJhRmllbGRzKFJlc291cmNlUmVxdWVzdCYsIElzTWFpblJlc291cmNlLCBGcmFtZUxvYWRU
eXBlID0gRnJhbWVMb2FkVHlwZTo6U3RhbmRhcmQsIFNob3VsZFVwZGF0ZUFwcEluaXRpYXRlZFZh
bHVlID0gU2hvdWxkVXBkYXRlQXBwSW5pdGlhdGVkVmFsdWU6Olllcyk7CiAKICAgICB2b2lkIHNj
aGVkdWxlUmVmcmVzaElmTmVlZGVkKERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiBjb250ZW50KTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
cXVlc3RCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VS
ZXF1ZXN0QmFzZS5jcHAKaW5kZXggNDZlNzg1MjI5ZTYwZjYyYmM3YjNhY2U0ZGM4MzFhN2YyNzVh
ODFiMi4uNDRiNTkzMDcwZWNlZDQxZmZmNzAzZjdiYzg5NDdhZjE5NGRiMDJlMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJh
c2UuY3BwCkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6c2V0QXNJ
c29sYXRlZENvcHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBvdGhlcikKICAgICBpZiAob3RoZXIu
bV9odHRwQm9keSkKICAgICAgICAgc2V0SFRUUEJvZHkob3RoZXIubV9odHRwQm9keS0+aXNvbGF0
ZWRDb3B5KCkpOwogICAgIHNldEFsbG93Q29va2llcyhvdGhlci5tX2FsbG93Q29va2llcyk7Ci0g
ICAgc2V0SXNBcHBCb3VuZChvdGhlci5pc0FwcEJvdW5kKCkpOworICAgIHNldElzQXBwSW5pdGlh
dGVkKG90aGVyLmlzQXBwSW5pdGlhdGVkKCkpOwogfQogCiBib29sIFJlc291cmNlUmVxdWVzdEJh
c2U6OmlzRW1wdHkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAppbmRleCAyNzBmYWQwNGZkMWU1YjNlYTYyOTQx
Y2U4MDk1M2FlZmU1OWYzZGJhLi4yNDVlNTk5YTljZjc4YzYyZDQ1ZGZiOWFjZTMwNGExOWE5MmVk
ZGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
UmVxdWVzdEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVxdWVzdEJhc2UuaApAQCAtMTk1LDggKzE5NSw4IEBAIHB1YmxpYzoKIAogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYpOwogCi0gICAgYm9vbCBpc0FwcEJvdW5kKCkgY29uc3QgeyByZXR1
cm4gbV9pc0FwcEJvdW5kOyB9Ci0gICAgdm9pZCBzZXRJc0FwcEJvdW5kKGJvb2wgaXNBcHBCb3Vu
ZCkgeyBtX2lzQXBwQm91bmQgPSBpc0FwcEJvdW5kOyB9OworICAgIGJvb2wgaXNBcHBJbml0aWF0
ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQXBwSW5pdGlhdGVkOyB9CisgICAgdm9pZCBzZXRJc0Fw
cEluaXRpYXRlZChib29sIGlzQXBwSW5pdGlhdGVkKSB7IG1faXNBcHBJbml0aWF0ZWQgPSBpc0Fw
cEluaXRpYXRlZDsgfTsKIAogcHJvdGVjdGVkOgogICAgIC8vIFVzZWQgd2hlbiBSZXNvdXJjZVJl
cXVlc3QgaXMgaW5pdGlhbGl6ZWQgZnJvbSBhIHBsYXRmb3JtIHJlcHJlc2VudGF0aW9uIG9mIHRo
ZSByZXF1ZXN0CkBAIC0yMDgsNyArMjA4LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICAsIG1fcGxh
dGZvcm1SZXF1ZXN0Qm9keVVwZGF0ZWQodHJ1ZSkKICAgICAgICAgLCBtX2hpZGRlbkZyb21JbnNw
ZWN0b3IoZmFsc2UpCiAgICAgICAgICwgbV9pc1RvcFNpdGUoZmFsc2UpCi0gICAgICAgICwgbV9p
c0FwcEJvdW5kKGZhbHNlKQorICAgICAgICAsIG1faXNBcHBJbml0aWF0ZWQodHJ1ZSkKICAgICB7
CiAgICAgfQogCkBAIC0yMjQsNyArMjI0LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICAsIG1fcGxh
dGZvcm1SZXF1ZXN0Qm9keVVwZGF0ZWQoZmFsc2UpCiAgICAgICAgICwgbV9oaWRkZW5Gcm9tSW5z
cGVjdG9yKGZhbHNlKQogICAgICAgICAsIG1faXNUb3BTaXRlKGZhbHNlKQotICAgICAgICAsIG1f
aXNBcHBCb3VuZChmYWxzZSkKKyAgICAgICAgLCBtX2lzQXBwSW5pdGlhdGVkKHRydWUpCiAgICAg
ewogICAgIH0KIApAQCAtMjU4LDcgKzI1OCw3IEBAIHByb3RlY3RlZDoKICAgICBtdXRhYmxlIGJv
b2wgbV9wbGF0Zm9ybVJlcXVlc3RCb2R5VXBkYXRlZCA6IDE7CiAgICAgYm9vbCBtX2hpZGRlbkZy
b21JbnNwZWN0b3IgOiAxOwogICAgIGJvb2wgbV9pc1RvcFNpdGUgOiAxOwotICAgIGJvb2wgbV9p
c0FwcEJvdW5kIDogMTsKKyAgICBib29sIG1faXNBcHBJbml0aWF0ZWQgOiAxOwogI2lmIFVTRShT
WVNURU1fUFJFVklFVykKICAgICBzdGQ6Om9wdGlvbmFsPFN5c3RlbVByZXZpZXdJbmZvPiBtX3N5
c3RlbVByZXZpZXdJbmZvOwogI2VuZGlmCkBAIC0yOTQsNyArMjk0LDcgQEAgQUxXQVlTX0lOTElO
RSB2b2lkIFJlc291cmNlUmVxdWVzdEJhc2U6OmVuY29kZUJhc2UoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKICAgICBlbmNvZGVyIDw8IG1faXNUb3BTaXRlOwogICAgIGVuY29kZXIgPDwgbV9wcmlv
cml0eTsKICAgICBlbmNvZGVyIDw8IG1fcmVxdWVzdGVyOwotICAgIGVuY29kZXIgPDwgbV9pc0Fw
cEJvdW5kOworICAgIGVuY29kZXIgPDwgbV9pc0FwcEluaXRpYXRlZDsKIH0KIAogdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4KQEAgLTM3MiwxMSArMzcyLDExIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBS
ZXNvdXJjZVJlcXVlc3RCYXNlOjpkZWNvZGVCYXNlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBtX3JlcXVlc3RlciA9ICpyZXF1ZXN0ZXI7CiAKLSAgICBzdGQ6
Om9wdGlvbmFsPGJvb2w+IGlzQXBwQm91bmQ7Ci0gICAgZGVjb2RlciA+PiBpc0FwcEJvdW5kOwot
ICAgIGlmICghaXNBcHBCb3VuZCkKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGlzQXBwSW5pdGlh
dGVkOworICAgIGRlY29kZXIgPj4gaXNBcHBJbml0aWF0ZWQ7CisgICAgaWYgKCFpc0FwcEluaXRp
YXRlZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIG1faXNBcHBCb3VuZCA9ICppc0FwcEJv
dW5kOworICAgIG1faXNBcHBJbml0aWF0ZWQgPSAqaXNBcHBJbml0aWF0ZWQ7CiAKICAgICByZXR1
cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdv
cmtlckludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJ
bnRlcm5hbHMuY3BwCmluZGV4IGYwODBhOTM1ZTE5ZTVhNWFhMjVmM2I2OGU2M2M3YjRiYWU2ZjZh
NDIuLjM2ODI5OGY0Y2M0M2QwYzBhYzZmNDA1ZTVmODE2NDRkN2RiYzE1ZjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcApAQCAtMTE5
LDE4ICsxMTksMTggQEAgaW50IFNlcnZpY2VXb3JrZXJJbnRlcm5hbHM6OnByb2Nlc3NJZGVudGlm
aWVyKCkgY29uc3QKICAgICByZXR1cm4gZ2V0Q3VycmVudFByb2Nlc3NJRCgpOwogfQogCi12b2lk
IFNlcnZpY2VXb3JrZXJJbnRlcm5hbHM6Omxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoUmVmPERl
ZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQordm9pZCBTZXJ2aWNlV29ya2VySW50ZXJuYWxzOjps
YXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZChSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21p
c2UpCiB7Ci0gICAgQVNTRVJUKCFtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmRQcm9taXNlKTsK
LSAgICBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmRQcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KTsKKyAgICBBU1NFUlQoIW1fbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWRQcm9taXNlKTsK
KyAgICBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkUHJvbWlzZSA9IFdURk1vdmUocHJv
bWlzZSk7CiAgICAgY2FsbE9uTWFpblRocmVhZChbaWRlbnRpZmllciA9IG1faWRlbnRpZmllciwg
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGF1
dG8qIHByb3h5ID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkud29ya2VyQnlJRChpZGVu
dGlmaWVyKSkgewotICAgICAgICAgICAgcHJveHktPnRocmVhZCgpLnJ1bkxvb3AoKS5wb3N0VGFz
a0Zvck1vZGUoW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGFwcEJvdW5kID0gcHJveHkt
Pmxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoKV0oYXV0byYpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVGhpcy0+bV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kUHJv
bWlzZSkKKyAgICAgICAgICAgIHByb3h5LT50aHJlYWQoKS5ydW5Mb29wKCkucG9zdFRhc2tGb3JN
b2RlKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBhcHBJbml0aWF0ZWQgPSBwcm94eS0+
bGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQoKV0oYXV0byYpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVGhpcy0+bV9sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRp
YXRlZFByb21pc2UpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAg
ICAgIHdlYWtUaGlzLT5tX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmRQcm9taXNlLT5yZXNvbHZl
PElETEJvb2xlYW4+KGFwcEJvdW5kKTsKLSAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+bV9sYXN0
TmF2aWdhdGlvbldhc0FwcEJvdW5kUHJvbWlzZSA9IG51bGxwdHI7CisgICAgICAgICAgICAgICAg
d2Vha1RoaXMtPm1fbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWRQcm9taXNlLT5yZXNvbHZl
PElETEJvb2xlYW4+KGFwcEluaXRpYXRlZCk7CisgICAgICAgICAgICAgICAgd2Vha1RoaXMtPm1f
bGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWRQcm9taXNlID0gbnVsbHB0cjsKICAgICAgICAg
ICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwogICAgICAgICB9CiAgICAgfSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5h
bHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5oCmlu
ZGV4IGY2NjA1MDhlMmZjMTBlOGE1NjdmYjAxMWM0YjRiYWE4NDM1NjBiMWYuLjMzN2U2YTdkMzkz
ZTMwMGI2YmRmZjYwZjk2OWI4ZmY1ZDgxZDgzMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5oCkBAIC02MCwxMyArNjAsMTMgQEAgcHVibGlj
OgogCiAgICAgaW50IHByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3Q7CiAKLSAgICB2b2lkIGxhc3RO
YXZpZ2F0aW9uV2FzQXBwQm91bmQoUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CisgICAgdm9pZCBs
YXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZChSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKIAog
cHJpdmF0ZToKICAgICBleHBsaWNpdCBTZXJ2aWNlV29ya2VySW50ZXJuYWxzKFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyKTsKIAogICAgIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIG1faWRlbnRpZmll
cjsKLSAgICBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91
bmRQcm9taXNlOworICAgIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+IG1fbGFzdE5hdmlnYXRpb25X
YXNBcHBJbml0aWF0ZWRQcm9taXNlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5pZGwKaW5k
ZXggZTExMGI1MTFiMTA2NTZkYWNhMzlmNmQ1M2YzZGIxNzUwZWUzNmQwOS4uOTQ4NGI3NjIxZmNm
MWZhZWNmZDVjNTM5NDZhNmU1ODRlMjk1NzUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRsCkBAIC00Myw1ICs0Myw1IEBACiAKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBwcm9jZXNzSWRlbnRpZmllcjsKIAotICAgIFByb21p
c2U8Ym9vbGVhbj4gbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCgpOworICAgIFByb21pc2U8Ym9v
bGVhbj4gbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQoKTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRh
LmNwcAppbmRleCBiNjA3NGUxMGY1NzdhMDQyYTRhMTMzNzZiNmIxMWNhMWEyYWQ3ZDI3Li4yNWQ3
YzBhN2Y0ZWJlOTQ2NjdiZjE4MDU2ZGU2NzdlMjczMGI4NzIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5j
cHAKQEAgLTU4LDcgKzU4LDcgQEAgc3RhdGljIFNlcnZpY2VXb3JrZXJDbGllbnRGcmFtZVR5cGUg
dG9TZXJ2aWNlV29ya2VyQ2xpZW50RnJhbWVUeXBlKFNjcmlwdEV4ZWN1dGkKIAogU2VydmljZVdv
cmtlckNsaWVudERhdGEgU2VydmljZVdvcmtlckNsaWVudERhdGE6Omlzb2xhdGVkQ29weSgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIHsgaWRlbnRpZmllciwgdHlwZSwgZnJhbWVUeXBlLCB1cmwuaXNv
bGF0ZWRDb3B5KCksIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgfTsKKyAgICByZXR1cm4geyBp
ZGVudGlmaWVyLCB0eXBlLCBmcmFtZVR5cGUsIHVybC5pc29sYXRlZENvcHkoKSwgbGFzdE5hdmln
YXRpb25XYXNBcHBJbml0aWF0ZWQgfTsKIH0KIAogU2VydmljZVdvcmtlckNsaWVudERhdGEgU2Vy
dmljZVdvcmtlckNsaWVudERhdGE6OmZyb20oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgU1dDbGllbnRDb25uZWN0aW9uJiBjb25uZWN0aW9uKQpAQCAtNjcsMTMgKzY3LDEzIEBAIFNl
cnZpY2VXb3JrZXJDbGllbnREYXRhIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjpmcm9tKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvCiAgICAgUkVMRUFTRV9BU1NFUlQoaXNEb2N1bWVudCk7IC8v
IFdlIGRvIG5vdCBzdXBwb3J0IGRlZGljYXRlZCB3b3JrZXJzIGFzIGNsaWVudHMgeWV0LgogCiAg
ICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCk7Ci0gICAgYXV0
byBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kID0gZG9jdW1lbnQubG9hZGVyKCkgJiYgZG9jdW1l
bnQubG9hZGVyKCktPmxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoKSA/IExhc3ROYXZpZ2F0aW9u
V2FzQXBwQm91bmQ6OlllcyA6IExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6Ok5vOworICAgIGF1
dG8gbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgPSBkb2N1bWVudC5sb2FkZXIoKSAmJiBk
b2N1bWVudC5sb2FkZXIoKS0+bGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQoKSA/IExhc3RO
YXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpZZXMgOiBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRp
YXRlZDo6Tm87CiAKICAgICByZXR1cm4gewogICAgICAgICB7IGNvbm5lY3Rpb24uc2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIoKSwgZG9jdW1lbnQuaWRlbnRpZmllcigpIH0sCiAgICAgICAgIGlz
RG9jdW1lbnQgPyBTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZTo6V2luZG93IDogU2VydmljZVdvcmtl
ckNsaWVudFR5cGU6OldvcmtlciwKICAgICAgICAgdG9TZXJ2aWNlV29ya2VyQ2xpZW50RnJhbWVU
eXBlKGNvbnRleHQpLAotICAgICAgICBjb250ZXh0LnVybCgpLCBsYXN0TmF2aWdhdGlvbldhc0Fw
cEJvdW5kCisgICAgICAgIGNvbnRleHQudXJsKCksIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlh
dGVkCiAgICAgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaAppbmRleCAzM2Q5ODM4NDI0Y2I4ZjJjMWFl
MWRhZDVmOGFmYmUxNDkwMTkyM2U4Li41N2MyODhhMGFmMTZjMGYyYTg5Y2FhN2U1YTY5MjFkYmMx
OTg2NDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNsaWVudERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudERhdGEuaApAQCAtMzcsMTQgKzM3LDE0IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIFNXQ2xpZW50Q29ubmVjdGlvbjsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ7CiAKLWVudW0gY2xhc3MgTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCA6IGJvb2wg
eyBObywgWWVzIH07CitlbnVtIGNsYXNzIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIDog
Ym9vbCB7IE5vLCBZZXMgfTsKIAogc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIHsKICAg
ICBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBpZGVudGlmaWVyOwogICAgIFNlcnZpY2VX
b3JrZXJDbGllbnRUeXBlIHR5cGU7CiAgICAgU2VydmljZVdvcmtlckNsaWVudEZyYW1lVHlwZSBm
cmFtZVR5cGU7CiAgICAgVVJMIHVybDsKLSAgICBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIGxh
c3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7CisgICAgTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0
ZWQgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ7CiAKICAgICBTZXJ2aWNlV29ya2VyQ2xp
ZW50RGF0YSBpc29sYXRlZENvcHkoKSBjb25zdDsKIApAQCAtNTcsNyArNTcsNyBAQCBzdHJ1Y3Qg
U2VydmljZVdvcmtlckNsaWVudERhdGEgewogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQg
U2VydmljZVdvcmtlckNsaWVudERhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
ewotICAgIGVuY29kZXIgPDwgaWRlbnRpZmllciA8PCB0eXBlIDw8IGZyYW1lVHlwZSA8PCB1cmwg
PDwgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDsKKyAgICBlbmNvZGVyIDw8IGlkZW50aWZpZXIg
PDwgdHlwZSA8PCBmcmFtZVR5cGUgPDwgdXJsIDw8IGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlh
dGVkOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAtODMsMTIgKzgzLDEyIEBAIHN0
ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IFNlcnZpY2VXb3JrZXJDbGllbnRE
YXRhOjpkZWNvZGUoRGVjb2RlciYKICAgICBpZiAoIXVybCkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAotICAgIHN0ZDo6b3B0aW9uYWw8TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZD4g
bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDsKLSAgICBkZWNvZGVyID4+IGxhc3ROYXZpZ2F0aW9u
V2FzQXBwQm91bmQ7Ci0gICAgaWYgKCFsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKQorICAgIHN0
ZDo6b3B0aW9uYWw8TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ+IGxhc3ROYXZpZ2F0aW9u
V2FzQXBwSW5pdGlhdGVkOworICAgIGRlY29kZXIgPj4gbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0
aWF0ZWQ7CisgICAgaWYgKCFsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7IHsgV1RGTW92ZSgqaWRlbnRpZmll
ciksIFdURk1vdmUoKnR5cGUpLCBXVEZNb3ZlKCpmcmFtZVR5cGUpLCBXVEZNb3ZlKCp1cmwpLCBX
VEZNb3ZlKCpsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKSB9IH07CisgICAgcmV0dXJuIHsgeyBX
VEZNb3ZlKCppZGVudGlmaWVyKSwgV1RGTW92ZSgqdHlwZSksIFdURk1vdmUoKmZyYW1lVHlwZSks
IFdURk1vdmUoKnVybCksIFdURk1vdmUoKmxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKSB9
IH07CiB9CiAKIHVzaW5nIFNlcnZpY2VXb3JrZXJDbGllbnRzTWF0Y2hBbGxDYWxsYmFjayA9IFdU
Rjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U2VydmljZVdvcmtlckNsaWVudERhdGE+
JiYpPjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAKaW5kZXggYjVhZGRiMzFkYWJjYmE4MGI5NGQwMDM0
ZWFjZjM2Nzk0ZjEzYWI0Yi4uNTY0YmJlMGZiZmRkMzgwNTc1YTcxNWQzN2ZmYWRlMmM1NDI1MWY0
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YS5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6aXNvbGF0ZWRDb3B5KCkgY29u
c3QKICAgICAgICAgc2NyaXB0VVJMLmlzb2xhdGVkQ29weSgpLAogICAgICAgICB3b3JrZXJUeXBl
LAogICAgICAgICBsb2FkZWRGcm9tRGlzaywKLSAgICAgICAgbGFzdE5hdmlnYXRpb25XYXNBcHBC
b3VuZCwKKyAgICAgICAgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQsCiAgICAgICAgIGNy
b3NzVGhyZWFkQ29weShzY3JpcHRSZXNvdXJjZU1hcCkKICAgICB9OwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0
YS5oCmluZGV4IDNkN2NkMTdhOGJjMDlkYWVhYTZlMGViZjkwYTA1OWE3YzcwOWEzMzMuLmNlZmI2
MGY1ZTc1MGQ5Njc5NzJmZjNlN2JlOWI1NTM0NTZjYzE3ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgK
QEAgLTM5LDcgKzM5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIGNsYXNzIExh
c3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgOiBib29sOworZW51bSBjbGFzcyBMYXN0TmF2aWdhdGlv
bldhc0FwcEluaXRpYXRlZCA6IGJvb2w7CiAKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGEgewogICAgIHN0cnVjdCBJbXBvcnRlZFNjcmlwdCB7CkBAIC04OSw3ICs4OSw3IEBAIHN0cnVj
dCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgewogICAgIFVSTCBzY3JpcHRVUkw7CiAgICAgV29y
a2VyVHlwZSB3b3JrZXJUeXBlOwogICAgIGJvb2wgbG9hZGVkRnJvbURpc2s7Ci0gICAgc3RkOjpv
cHRpb25hbDxMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kPiBsYXN0TmF2aWdhdGlvbldhc0FwcEJv
dW5kOworICAgIHN0ZDo6b3B0aW9uYWw8TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ+IGxh
c3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOwogICAgIEhhc2hNYXA8VVJMLCBJbXBvcnRlZFNj
cmlwdD4gc2NyaXB0UmVzb3VyY2VNYXA7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CkBAIC0xMDIsNyArMTAyLDcgQEAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IGpvYkRhdGFJZGVudGlmaWVy
IDw8IHJlZ2lzdHJhdGlvbiA8PCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciA8PCBzY3JpcHQgPDwg
Y29udGVudFNlY3VyaXR5UG9saWN5IDw8IHJlZmVycmVyUG9saWN5Ci0gICAgICAgIDw8IHNjcmlw
dFVSTCA8PCB3b3JrZXJUeXBlIDw8IGxvYWRlZEZyb21EaXNrIDw8IGxhc3ROYXZpZ2F0aW9uV2Fz
QXBwQm91bmQgPDwgc2NyaXB0UmVzb3VyY2VNYXAgPDwgY2VydGlmaWNhdGVJbmZvOworICAgICAg
ICA8PCBzY3JpcHRVUkwgPDwgd29ya2VyVHlwZSA8PCBsb2FkZWRGcm9tRGlzayA8PCBsYXN0TmF2
aWdhdGlvbldhc0FwcEluaXRpYXRlZCA8PCBzY3JpcHRSZXNvdXJjZU1hcCA8PCBjZXJ0aWZpY2F0
ZUluZm87CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CkBAIC0xNDcsOCArMTQ3LDggQEAg
c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IFNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YTo6ZGVjb2RlKERlY29kZXIKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGxvYWRlZEZy
b21EaXNrKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHN0ZDo6b3B0aW9u
YWw8TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZD4gbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDsK
LSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpKQorICAg
IHN0ZDo6b3B0aW9uYWw8TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ+IGxhc3ROYXZpZ2F0
aW9uV2FzQXBwSW5pdGlhdGVkOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUobGFzdE5hdmlnYXRp
b25XYXNBcHBJbml0aWF0ZWQpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
SGFzaE1hcDxVUkwsIEltcG9ydGVkU2NyaXB0PiBzY3JpcHRSZXNvdXJjZU1hcDsKQEAgLTE3MSw3
ICsxNzEsNyBAQCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT4gU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhOjpkZWNvZGUoRGVjb2RlcgogICAgICAgICBXVEZNb3ZlKHNjcmlw
dFVSTCksCiAgICAgICAgIHdvcmtlclR5cGUsCiAgICAgICAgIGxvYWRlZEZyb21EaXNrLAotICAg
ICAgICBXVEZNb3ZlKGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpLAorICAgICAgICBXVEZNb3Zl
KGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKSwKICAgICAgICAgV1RGTW92ZShzY3JpcHRS
ZXNvdXJjZU1hcCkKICAgICB9fTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHku
Y3BwCmluZGV4IDcyMjg1ZmRjODM5OWZjMzRiNTRlOTM2MDQ5MTNmYTFhM2ZjNTQ5MzcuLjkwNjkz
ZGEyZDExYzAwMmI5NTE1NzRjNTc0NmU5MjQzYjMwOGNhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlclRocmVhZFByb3h5LmNwcApAQCAtMTE3LDggKzExNyw4IEBAIFNlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5KFBhZ2VDb25maWd1cmF0aW9uJiYgcGFn
ZUNvbmZpCiAgICAgbV9yZW1vdGVEZWJ1Z2dhYmxlLT5pbml0KCk7CiAjZW5kaWYKIAotICAgIGlm
IChkYXRhLmxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpCi0gICAgICAgIHNldExhc3ROYXZpZ2F0
aW9uV2FzQXBwQm91bmQoZGF0YS5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kID09IExhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQ6Olllcyk7CisgICAgaWYgKGRhdGEubGFzdE5hdmlnYXRpb25XYXNB
cHBJbml0aWF0ZWQpCisgICAgICAgIHNldExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKGRh
dGEubGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgPT0gTGFzdE5hdmlnYXRpb25XYXNBcHBJ
bml0aWF0ZWQ6Olllcyk7CiB9CiAKIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6flNlcnZpY2VX
b3JrZXJUaHJlYWRQcm94eSgpCkBAIC0xMjcsMTUgKzEyNywxNSBAQCBTZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHk6On5TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkoKQogICAgIGFsbFNlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94aWVzKCkucmVtb3ZlKHRoaXMpOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eTo6c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZChib29sIHdhc0FwcEJvdW5k
KQordm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnNldExhc3ROYXZpZ2F0aW9uV2FzQXBw
SW5pdGlhdGVkKGJvb2wgd2FzQXBwSW5pdGlhdGVkKQogewogICAgIGlmIChtX2RvY3VtZW50LT5s
b2FkZXIoKSkKLSAgICAgICAgbV9kb2N1bWVudC0+bG9hZGVyKCktPnNldExhc3ROYXZpZ2F0aW9u
V2FzQXBwQm91bmQod2FzQXBwQm91bmQpOworICAgICAgICBtX2RvY3VtZW50LT5sb2FkZXIoKS0+
c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQod2FzQXBwSW5pdGlhdGVkKTsKIH0KIAot
Ym9vbCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6Omxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQo
KQorYm9vbCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6Omxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5p
dGlhdGVkKCkKIHsKLSAgICByZXR1cm4gbV9kb2N1bWVudC0+bG9hZGVyKCkgPyBtX2RvY3VtZW50
LT5sb2FkZXIoKS0+bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCgpIDogZmFsc2U7CisgICAgcmV0
dXJuIG1fZG9jdW1lbnQtPmxvYWRlcigpID8gbV9kb2N1bWVudC0+bG9hZGVyKCktPmxhc3ROYXZp
Z2F0aW9uV2FzQXBwSW5pdGlhdGVkKCkgOiB0cnVlOwogfQogCiBib29sIFNlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eTo6cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlclRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaAppbmRleCBjOWYxZDdlZjcyYmIzZjM1YWFj
ZDFjMzA1MTU4YzM4ZTIwMGMxMGYwLi4yYzVhMjg5MjhmYWUwMGE0OGZlOGRhYjk2OGE4OTk3ZmMz
ZGFlY2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaApAQCAtODEsOCArODEs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVudCgpOwogICAgIHZvaWQgZGlk
U2F2ZVNjcmlwdHNUb0Rpc2soU2NyaXB0QnVmZmVyJiYsIEhhc2hNYXA8VVJMLCBTY3JpcHRCdWZm
ZXI+JiYgaW1wb3J0ZWRTY3JpcHRzKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TGFz
dE5hdmlnYXRpb25XYXNBcHBCb3VuZChib29sKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGxh
c3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldExh
c3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKGJvb2wpOworICAgIFdFQkNPUkVfRVhQT1JUIGJv
b2wgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQoKTsKIAogcHJpdmF0ZToKICAgICBXRUJD
T1JFX0VYUE9SVCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkoUGFnZUNvbmZpZ3VyYXRpb24mJiwg
U2VydmljZVdvcmtlckNvbnRleHREYXRhJiYsIFN0cmluZyYmIHVzZXJBZ2VudCwgQ2FjaGVTdG9y
YWdlUHJvdmlkZXImLCBTdG9yYWdlQmxvY2tpbmdQb2xpY3kpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFi
YXNlLmNwcAppbmRleCA0ODk1NTYxZGJhZmIxYzZlNTc2YjQxMzFkMTUwNDE5NDFlMGEyNTVlLi42
NDE0N2QxNGZmZDM3YThjMGVmODI3NGM0ZWFjM2M1MTAyZmE3OWZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlv
bkRhdGFiYXNlLmNwcApAQCAtNTY5LDcgKzU2OSw3IEBAIFN0cmluZyBSZWdpc3RyYXRpb25EYXRh
YmFzZTo6aW1wb3J0UmVjb3JkcygpCiAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uSWRlbnRpZmll
ciA9IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwogICAg
ICAgICBhdXRvIHNlcnZpY2VXb3JrZXJEYXRhID0gU2VydmljZVdvcmtlckRhdGEgeyB3b3JrZXJJ
ZGVudGlmaWVyLCBzY3JpcHRVUkwsIFNlcnZpY2VXb3JrZXJTdGF0ZTo6QWN0aXZhdGVkLCAqd29y
a2VyVHlwZSwgcmVnaXN0cmF0aW9uSWRlbnRpZmllciB9OwogICAgICAgICBhdXRvIHJlZ2lzdHJh
dGlvbiA9IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhIHsgV1RGTW92ZSgqa2V5KSwgcmVn
aXN0cmF0aW9uSWRlbnRpZmllciwgV1RGTW92ZShzY29wZVVSTCksICp1cGRhdGVWaWFDYWNoZSwg
bGFzdFVwZGF0ZUNoZWNrVGltZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFdURk1vdmUo
c2VydmljZVdvcmtlckRhdGEpIH07Ci0gICAgICAgIGF1dG8gY29udGV4dERhdGEgPSBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEgeyBzdGQ6Om51bGxvcHQsIFdURk1vdmUocmVnaXN0cmF0aW9uKSwg
d29ya2VySWRlbnRpZmllciwgV1RGTW92ZShzY3JpcHQpLCBXVEZNb3ZlKCpjZXJ0aWZpY2F0ZUlu
Zm8pLCBXVEZNb3ZlKCpjb250ZW50U2VjdXJpdHlQb2xpY3kpLCBXVEZNb3ZlKHJlZmVycmVyUG9s
aWN5KSwgV1RGTW92ZShzY3JpcHRVUkwpLCAqd29ya2VyVHlwZSwgdHJ1ZSwgTGFzdE5hdmlnYXRp
b25XYXNBcHBCb3VuZDo6Tm8sIFdURk1vdmUoc2NyaXB0UmVzb3VyY2VNYXApIH07CisgICAgICAg
IGF1dG8gY29udGV4dERhdGEgPSBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgeyBzdGQ6Om51bGxv
cHQsIFdURk1vdmUocmVnaXN0cmF0aW9uKSwgd29ya2VySWRlbnRpZmllciwgV1RGTW92ZShzY3Jp
cHQpLCBXVEZNb3ZlKCpjZXJ0aWZpY2F0ZUluZm8pLCBXVEZNb3ZlKCpjb250ZW50U2VjdXJpdHlQ
b2xpY3kpLCBXVEZNb3ZlKHJlZmVycmVyUG9saWN5KSwgV1RGTW92ZShzY3JpcHRVUkwpLCAqd29y
a2VyVHlwZSwgdHJ1ZSwgTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6OlllcywgV1RGTW92
ZShzY3JpcHRSZXNvdXJjZU1hcCkgfTsKIAogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbnRleHREYXRhID0gY29udGV4dERhdGEuaXNv
bGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5hZGRS
ZWdpc3RyYXRpb25Ub1N0b3JlKFdURk1vdmUoY29udGV4dERhdGEpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggMTdlZGY3
ZWMwZWUwMTYwOGNkODBmNTliZjY4ZDE1NjUxMDZmNjgzYi4uNzE4ZDE5NjA0ZjFjNjg0NjYxOGRi
MDFmMWYxZmU4ZDhiNmI2M2I0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTQ3NCw3ICs0NzQsNyBAQCB2b2lkIFNXU2Vy
dmVyOjpzdGFydFNjcmlwdEZldGNoKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2JEYXRh
LCBTV1NlcnZlclJlZwogICAgICAgICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihvcmlnaW5VUkwo
b3JpZ2luKS5zdHJpbmcoKSk7CiAgICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudChzZXJ2
aWNlV29ya2VyQ2xpZW50VXNlckFnZW50KENsaWVudE9yaWdpbiB7IGpvYkRhdGEudG9wT3JpZ2lu
LCBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGpvYkRhdGEuc2NyaXB0VVJMKS0+ZGF0YSgpIH0pKTsK
ICAgICAgICAgcmVxdWVzdC5zZXRQcmlvcml0eShSZXNvdXJjZUxvYWRQcmlvcml0eTo6TG93KTsK
LSAgICAgICAgcmVxdWVzdC5zZXRJc0FwcEJvdW5kKHJlZ2lzdHJhdGlvbi5pc0FwcEJvdW5kKCkp
OworICAgICAgICByZXF1ZXN0LnNldElzQXBwSW5pdGlhdGVkKHJlZ2lzdHJhdGlvbi5pc0FwcElu
aXRpYXRlZCgpKTsKIAogICAgICAgICBtX3NvZnRVcGRhdGVDYWxsYmFjayhTZXJ2aWNlV29ya2Vy
Sm9iRGF0YSB7IGpvYkRhdGEgfSwgc2hvdWxkUmVmcmVzaENhY2hlLCBXVEZNb3ZlKHJlcXVlc3Qp
LCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0oYXV0byYgcmVzdWx0KSB7CiAg
ICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQpAQCAtNjQ4LDI0ICs2NDgsMjQgQEAgdm9pZCBTV1Nl
cnZlcjo6cmVtb3ZlQ2xpZW50U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbihDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBTZXIKIAogdm9pZCBTV1NlcnZlcjo6dXBkYXRlV29ya2VyKGNvbnN0IFNlcnZp
Y2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllciYgam9iRGF0YUlkZW50aWZpZXIsIFNXU2VydmVyUmVn
aXN0cmF0aW9uJiByZWdpc3RyYXRpb24sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTY3JpcHRCdWZm
ZXImIHNjcmlwdCwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGNvbnN0
IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYgY29udGVudFNlY3VyaXR5UG9s
aWN5LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlIHR5cGUsIEhhc2hN
YXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmIHNjcmlw
dFJlc291cmNlTWFwKQogewotICAgIHRyeUluc3RhbGxDb250ZXh0RGF0YShTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEgeyBqb2JEYXRhSWRlbnRpZmllciwgcmVnaXN0cmF0aW9uLmRhdGEoKSwgU2Vy
dmljZVdvcmtlcklkZW50aWZpZXI6OmdlbmVyYXRlKCksIHNjcmlwdCwgY2VydGlmaWNhdGVJbmZv
LCBjb250ZW50U2VjdXJpdHlQb2xpY3ksIHJlZmVycmVyUG9saWN5LCB1cmwsIHR5cGUsIGZhbHNl
LCBjbGllbnRJc0FwcEJvdW5kRm9yUmVnaXN0cmFibGVEb21haW4oUmVnaXN0cmFibGVEb21haW4o
dXJsKSksIFdURk1vdmUoc2NyaXB0UmVzb3VyY2VNYXApIH0pOworICAgIHRyeUluc3RhbGxDb250
ZXh0RGF0YShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgeyBqb2JEYXRhSWRlbnRpZmllciwgcmVn
aXN0cmF0aW9uLmRhdGEoKSwgU2VydmljZVdvcmtlcklkZW50aWZpZXI6OmdlbmVyYXRlKCksIHNj
cmlwdCwgY2VydGlmaWNhdGVJbmZvLCBjb250ZW50U2VjdXJpdHlQb2xpY3ksIHJlZmVycmVyUG9s
aWN5LCB1cmwsIHR5cGUsIGZhbHNlLCBjbGllbnRJc0FwcEluaXRpYXRlZEZvclJlZ2lzdHJhYmxl
RG9tYWluKFJlZ2lzdHJhYmxlRG9tYWluKHVybCkpLCBXVEZNb3ZlKHNjcmlwdFJlc291cmNlTWFw
KSB9KTsKIH0KIAotTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCBTV1NlcnZlcjo6Y2xpZW50SXNB
cHBCb3VuZEZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21h
aW4pCitMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCBTV1NlcnZlcjo6Y2xpZW50SXNBcHBJ
bml0aWF0ZWRGb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9t
YWluKQogewogICAgIGF1dG8gY2xpZW50c0J5UmVnaXN0cmFibGVEb21haW5JdGVyYXRvciA9IG1f
Y2xpZW50c0J5UmVnaXN0cmFibGVEb21haW4uZmluZChkb21haW4pOwogICAgIGlmIChjbGllbnRz
QnlSZWdpc3RyYWJsZURvbWFpbkl0ZXJhdG9yID09IG1fY2xpZW50c0J5UmVnaXN0cmFibGVEb21h
aW4uZW5kKCkpCi0gICAgICAgIHJldHVybiBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOjpObzsK
KyAgICAgICAgcmV0dXJuIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpZZXM7CiAKICAg
ICBhdXRvJiBjbGllbnRzRm9yUmVnaXN0cmFibGVEb21haW4gPSBjbGllbnRzQnlSZWdpc3RyYWJs
ZURvbWFpbkl0ZXJhdG9yLT52YWx1ZTsKICAgICBmb3IgKGF1dG8mIGNsaWVudCA6IGNsaWVudHNG
b3JSZWdpc3RyYWJsZURvbWFpbikgewogICAgICAgICBhdXRvIGRhdGEgPSBtX2NsaWVudHNCeUlk
LmZpbmQoY2xpZW50KTsKICAgICAgICAgQVNTRVJUKGRhdGEgIT0gbV9jbGllbnRzQnlJZC5lbmQo
KSk7Ci0gICAgICAgIGlmIChkYXRhLT52YWx1ZS5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kID09
IExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6OlllcykKLSAgICAgICAgICAgIHJldHVybiBMYXN0
TmF2aWdhdGlvbldhc0FwcEJvdW5kOjpZZXM7CisgICAgICAgIGlmIChkYXRhLT52YWx1ZS5sYXN0
TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCA9PSBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRl
ZDo6WWVzKQorICAgICAgICAgICAgcmV0dXJuIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVk
OjpZZXM7CiAgICAgfQogCi0gICAgcmV0dXJuIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6Ok5v
OworICAgIHJldHVybiBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDo6Tm87CiB9CiAKIHZv
aWQgU1dTZXJ2ZXI6OnRyeUluc3RhbGxDb250ZXh0RGF0YShTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGEmJiBkYXRhKQpAQCAtODg2LDExICs4ODYsMTEgQEAgU1dTZXJ2ZXJSZWdpc3RyYXRpb24qIFNX
U2VydmVyOjpyZWdpc3RyYXRpb25Gcm9tU2VydmljZVdvcmtlcklkZW50aWZpZXIoU2VydmljZVcK
ICAgICByZXR1cm4gaXRlcmF0b3ItPnZhbHVlLT5yZWdpc3RyYXRpb24oKTsKIH0KIAotdm9pZCBT
V1NlcnZlcjo6dXBkYXRlQXBwQm91bmRWYWx1ZUZvcldvcmtlcnMoY29uc3QgQ2xpZW50T3JpZ2lu
JiBjbGllbnRPcmlnaW4sIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgbGFzdE5hdmlnYXRpb25X
YXNBcHBCb3VuZCkKK3ZvaWQgU1dTZXJ2ZXI6OnVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlRm9yV29y
a2Vycyhjb25zdCBDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgTGFzdE5hdmlnYXRpb25XYXNB
cHBJbml0aWF0ZWQgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpCiB7CiAgICAgZm9yIChh
dXRvJiB3b3JrZXIgOiBtX3J1bm5pbmdPclRlcm1pbmF0aW5nV29ya2Vycy52YWx1ZXMoKSkgewog
ICAgICAgICBpZiAod29ya2VyLT5vcmlnaW4oKS5jbGllbnRSZWdpc3RyYWJsZURvbWFpbigpID09
IGNsaWVudE9yaWdpbi5jbGllbnRSZWdpc3RyYWJsZURvbWFpbigpKQotICAgICAgICAgICAgd29y
a2VyLT51cGRhdGVBcHBCb3VuZFZhbHVlKGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOworICAg
ICAgICAgICAgd29ya2VyLT51cGRhdGVBcHBJbml0aWF0ZWRWYWx1ZShsYXN0TmF2aWdhdGlvbldh
c0FwcEluaXRpYXRlZCk7CiAgICAgfQogfQogCkBAIC04OTksOSArODk5LDkgQEAgdm9pZCBTV1Nl
cnZlcjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KENsaWVudE9yaWdpbiYmIGNsaWVudE9y
aWdpbiwgU2VydmljZVcKICAgICBhdXRvIGNsaWVudElkZW50aWZpZXIgPSBkYXRhLmlkZW50aWZp
ZXI7CiAKICAgICAvLyBVcGRhdGUgdGhlIGFwcC1ib3VuZCB2YWx1ZSBpZiB0aGUgbmV3IGNsaWVu
dCBpcyBhcHAtYm91bmQgYW5kIHRoZSBjdXJyZW50IGNsaWVudHMgZm9yIHRoZSBvcmlnaW4gYXJl
IG5vdCBtYXJrZWQgYXBwLWJvdW5kLgotICAgIGlmIChkYXRhLmxhc3ROYXZpZ2F0aW9uV2FzQXBw
Qm91bmQgPT0gTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDo6WWVzKSB7Ci0gICAgICAgIGlmIChj
bGllbnRJc0FwcEJvdW5kRm9yUmVnaXN0cmFibGVEb21haW4oY2xpZW50T3JpZ2luLmNsaWVudFJl
Z2lzdHJhYmxlRG9tYWluKCkpID09IExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6Ok5vKQotICAg
ICAgICAgICAgdXBkYXRlQXBwQm91bmRWYWx1ZUZvcldvcmtlcnMoY2xpZW50T3JpZ2luLCBkYXRh
Lmxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOworICAgIGlmIChkYXRhLmxhc3ROYXZpZ2F0aW9u
V2FzQXBwSW5pdGlhdGVkID09IExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpZZXMpIHsK
KyAgICAgICAgaWYgKGNsaWVudElzQXBwSW5pdGlhdGVkRm9yUmVnaXN0cmFibGVEb21haW4oY2xp
ZW50T3JpZ2luLmNsaWVudFJlZ2lzdHJhYmxlRG9tYWluKCkpID09IExhc3ROYXZpZ2F0aW9uV2Fz
QXBwSW5pdGlhdGVkOjpObykKKyAgICAgICAgICAgIHVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlRm9y
V29ya2VycyhjbGllbnRPcmlnaW4sIGRhdGEubGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQp
OwogICAgIH0KIAogICAgIEFTU0VSVCghbV9jbGllbnRzQnlJZC5jb250YWlucyhjbGllbnRJZGVu
dGlmaWVyKSk7CkBAIC05MzksNyArOTM5LDcgQEAgdm9pZCBTV1NlcnZlcjo6cmVnaXN0ZXJTZXJ2
aWNlV29ya2VyQ2xpZW50KENsaWVudE9yaWdpbiYmIGNsaWVudE9yaWdpbiwgU2VydmljZVcKIHZv
aWQgU1dTZXJ2ZXI6OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IENsaWVudE9y
aWdpbiYgY2xpZW50T3JpZ2luLCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBjbGllbnRJ
ZGVudGlmaWVyKQogewogICAgIGF1dG8gY2xpZW50UmVnaXN0cmFibGVEb21haW4gPSBjbGllbnRP
cmlnaW4uY2xpZW50UmVnaXN0cmFibGVEb21haW4oKTsKLSAgICBhdXRvIGFwcEJvdW5kVmFsdWVC
ZWZvcmUgPSBjbGllbnRJc0FwcEJvdW5kRm9yUmVnaXN0cmFibGVEb21haW4oY2xpZW50T3JpZ2lu
LmNsaWVudFJlZ2lzdHJhYmxlRG9tYWluKCkpOworICAgIGF1dG8gYXBwSW5pdGlhdGVkVmFsdWVC
ZWZvcmUgPSBjbGllbnRJc0FwcEluaXRpYXRlZEZvclJlZ2lzdHJhYmxlRG9tYWluKGNsaWVudE9y
aWdpbi5jbGllbnRSZWdpc3RyYWJsZURvbWFpbigpKTsKIAogICAgIGJvb2wgd2FzUmVtb3ZlZCA9
IG1fY2xpZW50c0J5SWQucmVtb3ZlKGNsaWVudElkZW50aWZpZXIpOwogICAgIEFTU0VSVF9VTlVT
RUQod2FzUmVtb3ZlZCwgd2FzUmVtb3ZlZCk7CkBAIC05ODQsOSArOTg0LDkgQEAgdm9pZCBTV1Nl
cnZlcjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgQ2xpZW50T3JpZ2luJiBj
bGllbnRPcmlnaW4sIFMKIAogICAgIC8vIElmIHRoZSBhcHAtYm91bmQgdmFsdWUgY2hhbmdlZCBh
ZnRlciB0aGlzIGNsaWVudCB3YXMgcmVtb3ZlZCwgd2Uga25vdyBpdCB3YXMgdGhlIG9ubHkgYXBw
LWJvdW5kCiAgICAgLy8gY2xpZW50IGZvciBpdHMgb3JpZ2luLCBhbmQgd2Ugc2hvdWxkIHVwZGF0
ZSBhbGwgd29ya2VycyB0byByZWZsZWN0IHRoaXMuCi0gICAgYXV0byBhcHBCb3VuZFZhbHVlQWZ0
ZXIgPSBjbGllbnRJc0FwcEJvdW5kRm9yUmVnaXN0cmFibGVEb21haW4oY2xpZW50T3JpZ2luLmNs
aWVudFJlZ2lzdHJhYmxlRG9tYWluKCkpOwotICAgIGlmIChhcHBCb3VuZFZhbHVlQmVmb3JlICE9
IGFwcEJvdW5kVmFsdWVBZnRlcikKLSAgICAgICAgdXBkYXRlQXBwQm91bmRWYWx1ZUZvcldvcmtl
cnMoY2xpZW50T3JpZ2luLCBhcHBCb3VuZFZhbHVlQWZ0ZXIpOworICAgIGF1dG8gYXBwSW5pdGlh
dGVkVmFsdWVBZnRlciA9IGNsaWVudElzQXBwSW5pdGlhdGVkRm9yUmVnaXN0cmFibGVEb21haW4o
Y2xpZW50T3JpZ2luLmNsaWVudFJlZ2lzdHJhYmxlRG9tYWluKCkpOworICAgIGlmIChhcHBJbml0
aWF0ZWRWYWx1ZUJlZm9yZSAhPSBhcHBJbml0aWF0ZWRWYWx1ZUFmdGVyKQorICAgICAgICB1cGRh
dGVBcHBJbml0aWF0ZWRWYWx1ZUZvcldvcmtlcnMoY2xpZW50T3JpZ2luLCBhcHBJbml0aWF0ZWRW
YWx1ZUFmdGVyKTsKIAogICAgIGF1dG8gcmVnaXN0cmF0aW9uSXRlcmF0b3IgPSBtX2NsaWVudFRv
Q29udHJvbGxpbmdSZWdpc3RyYXRpb24uZmluZChjbGllbnRJZGVudGlmaWVyKTsKICAgICBpZiAo
cmVnaXN0cmF0aW9uSXRlcmF0b3IgPT0gbV9jbGllbnRUb0NvbnRyb2xsaW5nUmVnaXN0cmF0aW9u
LmVuZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlci5oCmluZGV4IGNkNjIyNjYzN2EyNTE2YmYzZmM1MDFlYzYxYTI2MWQyOTM2ZmIyOTQuLjZi
ZDY4OTMzNDRlZWRmMmYwY2JkZGQyYTE2MTY2YTkyMWUzM2ZlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTIxNyw3ICsyMTcs
NyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3RleHByIFNlY29uZHMgZGVmYXVsdFRlcm1p
bmF0aW9uRGVsYXkgPSAxMF9zOwogCi0gICAgTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCBjbGll
bnRJc0FwcEJvdW5kRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4m
KTsKKyAgICBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCBjbGllbnRJc0FwcEluaXRpYXRl
ZEZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CiAKIHByaXZh
dGU6CiAgICAgdm9pZCB2YWxpZGF0ZVJlZ2lzdHJhdGlvbkRvbWFpbihXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CkBAIC0yNDQsNyAr
MjQ0LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29udGV4dENvbm5lY3Rpb25DcmVhdGVkKFNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYpOwogCi0gICAgdm9pZCB1cGRhdGVBcHBCb3VuZFZh
bHVlRm9yV29ya2Vycyhjb25zdCBDbGllbnRPcmlnaW4mLCBMYXN0TmF2aWdhdGlvbldhc0FwcEJv
dW5kKTsKKyAgICB2b2lkIHVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlRm9yV29ya2Vycyhjb25zdCBD
bGllbnRPcmlnaW4mLCBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk7CiAKICAgICBIYXNo
TWFwPFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0
aW9uPj4gbV9jb25uZWN0aW9uczsKICAgICBIYXNoTWFwPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXksIFdlYWtQdHI8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+PiBtX3Njb3BlVG9SZWdpc3RyYXRp
b25NYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyUmVnaXN0cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCmluZGV4IDEyYTk1ZGUwZGYwZmJkNjQ2
NjFlNzZmYzI5N2Q1MDRhNTM2Njc3MjQuLmQ4Y2E2NWY4ZWVmNmRjNDY4OWVkNmM4ZTA1ZWE4NjM0
YWE4OTU5MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCkBAIC0zNzAsMTQgKzM3MCwx
NCBAQCB2b2lkIFNXU2VydmVyUmVnaXN0cmF0aW9uOjpzb2Z0VXBkYXRlKCkKICAgICBtX3NlcnZl
ci5zb2Z0VXBkYXRlKCp0aGlzKTsKIH0KIAotdm9pZCBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6c2No
ZWR1bGVTb2Z0VXBkYXRlKElzQXBwQm91bmQgaXNBcHBCb3VuZCkKK3ZvaWQgU1dTZXJ2ZXJSZWdp
c3RyYXRpb246OnNjaGVkdWxlU29mdFVwZGF0ZShJc0FwcEluaXRpYXRlZCBpc0FwcEluaXRpYXRl
ZCkKIHsKICAgICAvLyBUbyBhdm9pZCBzY2hlZHVsaW5nIG1hbnkgdXBkYXRlcyBkdXJpbmcgYSBz
aW5nbGUgcGFnZSBsb2FkLCB3ZSBkbyBzb2Z0IHVwZGF0ZXMgb24gYSAxIHNlY29uZCBkZWxheSBh
bmQga2VlcCBkZWxheWluZwogICAgIC8vIGFzIGxvbmcgYXMgc29mdCB1cGRhdGUgcmVxdWVzdHMg
a2VlcCBjb21pbmcuIFRoaXMgc2VlbXMgdG8gbWF0Y2ggQ2hyb21lJ3MgYmVoYXZpb3IuCiAgICAg
aWYgKG1fc29mdFVwZGF0ZVRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1faXNBcHBCb3VuZCA9IGlzQXBwQm91bmQgPT0gSXNBcHBCb3VuZDo6WWVzOworICAgIG1faXNB
cHBJbml0aWF0ZWQgPSBpc0FwcEluaXRpYXRlZCA9PSBJc0FwcEluaXRpYXRlZDo6WWVzOwogCiAg
ICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIlNXU2VydmVyUmVnaXN0cmF0aW9uOjpzb2Z0
VXBkYXRlSWZOZWVkZWQiKTsKICAgICBtX3NvZnRVcGRhdGVUaW1lci5zdGFydE9uZVNob3Qoc29m
dFVwZGF0ZURlbGF5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaAppbmRleCA5ZjdmMDYwZjdjYzA0
YTJjODc1YmIwNDZjN2I4MTU4OGIxMjI4YjQ2Li5iNjM1ZWI3ZTg5NGYwNDkyYWFhY2E1YzRjOGM0
ZjFmMTdmMjYzMzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5oCkBAIC00Nyw3ICs0Nyw3IEBA
IHN0cnVjdCBFeGNlcHRpb25EYXRhOwogc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTsK
IHN0cnVjdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQ7CiAKLWVudW0gY2xhc3MgSXNBcHBCb3Vu
ZCA6IGJvb2wgeyBObywgWWVzIH07CitlbnVtIGNsYXNzIElzQXBwSW5pdGlhdGVkIDogYm9vbCB7
IE5vLCBZZXMgfTsKIAogY2xhc3MgU1dTZXJ2ZXJSZWdpc3RyYXRpb24gOiBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKQEAgLTEwMSwxMyArMTAxLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGZvckVhY2hDb25u
ZWN0aW9uKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChTV1NlcnZlcjo6Q29ubmVjdGlvbiYpPiYp
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRTb2Z0VXBkYXRlKGNvbnN0IEZldGNo
T3B0aW9ucyYpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2NoZWR1bGVTb2Z0VXBk
YXRlKElzQXBwQm91bmQpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2NoZWR1bGVTb2Z0VXBk
YXRlKElzQXBwSW5pdGlhdGVkKTsKICAgICBzdGF0aWMgY29uc3RleHByIFNlY29uZHMgc29mdFVw
ZGF0ZURlbGF5IHsgMV9zIH07CiAKICAgICBVUkwgc2NvcGVVUkxXaXRob3V0RnJhZ21lbnQoKSBj
b25zdCB7IHJldHVybiBtX3Njb3BlVVJMOyB9CiAgICAgVVJMIHNjcmlwdFVSTCgpIGNvbnN0IHsg
cmV0dXJuIG1fc2NyaXB0VVJMOyB9CiAKLSAgICBib29sIGlzQXBwQm91bmQoKSB7IHJldHVybiBt
X2lzQXBwQm91bmQ7IH0KKyAgICBib29sIGlzQXBwSW5pdGlhdGVkKCkgY29uc3QgeyByZXR1cm4g
bV9pc0FwcEluaXRpYXRlZDsgfQogCiBwcml2YXRlOgogICAgIHZvaWQgYWN0aXZhdGUoKTsKQEAg
LTEzNSw3ICsxMzUsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViQ29yZTo6VGltZXIgbV9zb2Z0VXBk
YXRlVGltZXI7CiAgICAgCi0gICAgYm9vbCBtX2lzQXBwQm91bmQgeyBmYWxzZSB9OworICAgIGJv
b2wgbV9pc0FwcEluaXRpYXRlZCB7IHRydWUgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCmluZGV4IDdkNWM4ZjE0OWI3
MzMxZDQwYTRhMmVhY2FkOWQ2NGI0MjAwMWM1NmQuLjFjN2YzOWRiN2M2ZGVjZWUzNGVlM2UwNTQ4
NjcxOWVmYmJiNzg4NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApA
QCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBNZXNzYWdlcyB0byB0aGUgU1cgaG9z
dCBwcm9jZXNzCiAgICAgdmlydHVhbCB2b2lkIGluc3RhbGxTZXJ2aWNlV29ya2VyQ29udGV4dChj
b25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBcHBCb3VuZFZhbHVlKFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBMYXN0
TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmaXJlSW5z
dGFsbEV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGZpcmVBY3RpdmF0ZUV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHRlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
cldvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyV29ya2VyLmNwcAppbmRleCA2NTkyZGI0MTNmNzk0NWQxM2EwOGUxNjI1MTRiZjRhZmUwYWZh
ZDAzLi5kN2NjYzYyMDc1YjEwZTUxMGRiMWMxZjA4MzZhYjY0NDEwZjYzYTY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29y
a2VyLmNwcApAQCAtNjIsNyArNjIsNyBAQCBTV1NlcnZlcldvcmtlcjo6U1dTZXJ2ZXJXb3JrZXIo
U1dTZXJ2ZXImIHNlcnZlciwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdAogICAgICwg
bV9yZWdpc3RyYWJsZURvbWFpbihtX2RhdGEuc2NyaXB0VVJMKQogICAgICwgbV9zY3JpcHRSZXNv
dXJjZU1hcChXVEZNb3ZlKHNjcmlwdFJlc291cmNlTWFwKSkKICAgICAsIG1fdGVybWluYXRpb25U
aW1lcigqdGhpcywgJlNXU2VydmVyV29ya2VyOjp0ZXJtaW5hdGlvblRpbWVyRmlyZWQpCi0gICAg
LCBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQobV9zZXJ2ZXItPmNsaWVudElzQXBwQm91bmRG
b3JSZWdpc3RyYWJsZURvbWFpbihtX3JlZ2lzdHJhYmxlRG9tYWluKSkKKyAgICAsIG1fbGFzdE5h
dmlnYXRpb25XYXNBcHBJbml0aWF0ZWQobV9zZXJ2ZXItPmNsaWVudElzQXBwSW5pdGlhdGVkRm9y
UmVnaXN0cmFibGVEb21haW4obV9yZWdpc3RyYWJsZURvbWFpbikpCiB7CiAgICAgbV9kYXRhLnNj
cmlwdFVSTC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKIApAQCAtODcsMTggKzg3LDE4IEBA
IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBTV1NlcnZlcldvcmtlcjo6Y29udGV4dERhdGEoKSBj
b25zdAogewogICAgIEFTU0VSVChtX3JlZ2lzdHJhdGlvbik7CiAKLSAgICByZXR1cm4geyBzdGQ6
Om51bGxvcHQsIG1fcmVnaXN0cmF0aW9uLT5kYXRhKCksIG1fZGF0YS5pZGVudGlmaWVyLCBtX3Nj
cmlwdCwgbV9jZXJ0aWZpY2F0ZUluZm8sIG1fY29udGVudFNlY3VyaXR5UG9saWN5LCBtX3JlZmVy
cmVyUG9saWN5LCBtX2RhdGEuc2NyaXB0VVJMLCBtX2RhdGEudHlwZSwgZmFsc2UsIG1fbGFzdE5h
dmlnYXRpb25XYXNBcHBCb3VuZCwgbV9zY3JpcHRSZXNvdXJjZU1hcCB9OworICAgIHJldHVybiB7
IHN0ZDo6bnVsbG9wdCwgbV9yZWdpc3RyYXRpb24tPmRhdGEoKSwgbV9kYXRhLmlkZW50aWZpZXIs
IG1fc2NyaXB0LCBtX2NlcnRpZmljYXRlSW5mbywgbV9jb250ZW50U2VjdXJpdHlQb2xpY3ksIG1f
cmVmZXJyZXJQb2xpY3ksIG1fZGF0YS5zY3JpcHRVUkwsIG1fZGF0YS50eXBlLCBmYWxzZSwgbV9s
YXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCwgbV9zY3JpcHRSZXNvdXJjZU1hcCB9OwogfQog
Ci12b2lkIFNXU2VydmVyV29ya2VyOjp1cGRhdGVBcHBCb3VuZFZhbHVlKExhc3ROYXZpZ2F0aW9u
V2FzQXBwQm91bmQgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCkKK3ZvaWQgU1dTZXJ2ZXJXb3Jr
ZXI6OnVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlKExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVk
IGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKQogewotICAgIG1fbGFzdE5hdmlnYXRpb25X
YXNBcHBCb3VuZCA9IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7CisgICAgbV9sYXN0TmF2aWdh
dGlvbldhc0FwcEluaXRpYXRlZCA9IGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOwogCiAg
ICAgaWYgKCFpc1J1bm5pbmcoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGF1dG8qIGNv
bm5lY3Rpb24gPSBjb250ZXh0Q29ubmVjdGlvbigpKQotICAgICAgICBjb25uZWN0aW9uLT51cGRh
dGVBcHBCb3VuZFZhbHVlKGlkZW50aWZpZXIoKSwgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCk7
CisgICAgICAgIGNvbm5lY3Rpb24tPnVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlKGlkZW50aWZpZXIo
KSwgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpOwogfQogCiB2b2lkIFNXU2VydmVyV29y
a2VyOjp0ZXJtaW5hdGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldv
cmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldv
cmtlci5oCmluZGV4IGJlNTVlZWIxYWEyZmU2MmI2MTcyMWU5MzMxMGIwY2E0ZGExMjlkZmUuLmFi
MDdjNzE3Njc2MTczNDAyZTAyYTJjZjUxMTc1OWZjN2I3ODQ0YTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKQEAg
LTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRIYXNUaW1lZE91dEFueUZldGNo
VGFza3MoKSB7IG1faGFzVGltZWRPdXRBbnlGZXRjaFRhc2tzID0gdHJ1ZTsgfQogICAgIGJvb2wg
aGFzVGltZWRPdXRBbnlGZXRjaFRhc2tzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNUaW1lZE91dEFu
eUZldGNoVGFza3M7IH0KICAgICB2b2lkIGRpZEZhaWxIZWFydEJlYXRDaGVjaygpOwotICAgIHZv
aWQgdXBkYXRlQXBwQm91bmRWYWx1ZShMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKTsKKyAgICB2
b2lkIHVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlKExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVk
KTsKIAogcHJpdmF0ZToKICAgICBTV1NlcnZlcldvcmtlcihTV1NlcnZlciYsIFNXU2VydmVyUmVn
aXN0cmF0aW9uJiwgY29uc3QgVVJMJiwgY29uc3QgU2NyaXB0QnVmZmVyJiwgY29uc3QgQ2VydGlm
aWNhdGVJbmZvJiwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwg
U3RyaW5nJiYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUsIFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlw
dD4mJik7CkBAIC0xNTgsNyArMTU4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzVGltZWRP
dXRBbnlGZXRjaFRhc2tzIHsgZmFsc2UgfTsKICAgICBWZWN0b3I8Q29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPj4gbV90ZXJtaW5hdGlvbkNhbGxiYWNrczsKICAgICBUaW1lciBtX3Rlcm1pbmF0aW9u
VGltZXI7Ci0gICAgTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCBtX2xhc3ROYXZpZ2F0aW9uV2Fz
QXBwQm91bmQ7CisgICAgTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgbV9sYXN0TmF2aWdh
dGlvbldhc0FwcEluaXRpYXRlZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggMDM3
NGY1YzQ3YTgxOWQ2YTY4Zjc2MjA3ZGIyZjAzYWQ4YzIxZjQ4ZC4uYWVhMmZhYTU4YTE1ODFmMDBi
ZjU2YmNlZWVkMTc3YjQ0YTQzNjA5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTEzNjMsNyArMTM2Myw3IEBAIGJvb2wgTmV0d29y
a1Byb2Nlc3M6OnByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdNb2RlRW5hYmxlZCgpIGNvbnN0
CiAgICAgcmV0dXJuIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z01vZGVFbmFibGVkOwog
fQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVz
ZXJBZ2VudCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4sIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgbGFzdE5h
dmlnYXRpb25XYXNBcHBCb3VuZCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZWNvbm5lY3RUbyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVBy
b3h5SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgY29uc3QgVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgTGFzdE5hdmlnYXRpb25X
YXNBcHBJbml0aWF0ZWQgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpCiB7CiAgICAgTE9H
KE5ldHdvcmssICIoTmV0d29ya1Byb2Nlc3MpIFByZWNvbm5lY3RpbmcgdG8gVVJMICVzIChzdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSAlaSkiLCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgKGlu
dClzdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CiAKQEAgLTEzNzksNyArMTM3OSw3IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdl
YlBhZ2VQcm94eUlkZW50aWZpCiAKICAgICBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVy
czsKICAgICBwYXJhbWV0ZXJzLnJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QgeyB1cmwgfTsKLSAg
ICBwYXJhbWV0ZXJzLnJlcXVlc3Quc2V0SXNBcHBCb3VuZChsYXN0TmF2aWdhdGlvbldhc0FwcEJv
dW5kID09IExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6Olllcyk7CisgICAgcGFyYW1ldGVycy5y
ZXF1ZXN0LnNldElzQXBwSW5pdGlhdGVkKGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkID09
IExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpZZXMpOwogICAgIHBhcmFtZXRlcnMucmVx
dWVzdC5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyh1cmwpOwogICAgIHBhcmFtZXRlcnMud2ViUGFn
ZVByb3h5SUQgPSB3ZWJQYWdlUHJveHlJRDsKICAgICBwYXJhbWV0ZXJzLndlYlBhZ2VJRCA9IHdl
YlBhZ2VJRDsKQEAgLTI3NjUsMTkgKzI3NjUsMTkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0
Q09SU0Rpc2FibGluZ1BhdHRlcm5zKFBhZ2VJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyLCBWZWMK
IH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQotdm9pZCBOZXR3b3JrUHJvY2Vzczo6YXBwQm91bmRO
YXZpZ2F0aW9uRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0
YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
QXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lv
bklEKSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuZXR3b3JrU2Vzc2lvbi0+YXBwQm91
bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEoKSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG5l
dHdvcmtTZXNzaW9uLT5hcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKIH0KIAotdm9pZCBOZXR3
b3JrUHJvY2Vzczo6Y2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkKLSAgICAgICAgbmV0d29ya1Nlc3Npb24tPmFwcEJvdW5k
TmF2aWdhdGlvblRlc3RpbmdEYXRhKCkuY2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhVGVzdGlu
ZygpOworICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+YXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRh
KCkuY2xlYXJBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoKTsKIAogICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmgKaW5kZXggMDhkYTU2ZjE5Nzc5YmM3NGQ4ZjRhMjhkNThhMTY3ZWM4OWEwMmU0ZS4uNzk0
ODA5N2FhM2RjMzg2YTJmZDQxZmFkNjIzYjNjZWNkZjhkN2U0YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMjUsNiArMjUsNyBAQAogCiAj
cHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkFwcFByaXZhY3lSZXBvcnQuaCIKICNpbmNsdWRlICJB
dXhpbGlhcnlQcm9jZXNzLmgiCiAjaW5jbHVkZSAiQ2FjaGVNb2RlbC5oIgogI2luY2x1ZGUgIkNh
bGxiYWNrSUQuaCIKQEAgLTI4OSw3ICsyOTAsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQ2FjaGVT
dG9yYWdlUm9vdFBhdGhDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYp
PjsKICAgICB2b2lkIGNhY2hlU3RvcmFnZVJvb3RQYXRoKFBBTDo6U2Vzc2lvbklELCBDYWNoZVN0
b3JhZ2VSb290UGF0aENhbGxiYWNrJiYpOwogCi0gICAgdm9pZCBwcmVjb25uZWN0VG8oUEFMOjpT
ZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1Bv
bGljeSwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIExhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQpOworICAgIHZvaWQgcHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklE
LCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3Qg
VVJMJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHN0
ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBMYXN0TmF2aWdhdGlvbldh
c0FwcEluaXRpYXRlZCk7CiAKICAgICB2b2lkIHNldFNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9t
YXRpb24oUEFMOjpTZXNzaW9uSUQsIGJvb2wpOwogICAgIGJvb2wgc2Vzc2lvbklzQ29udHJvbGxl
ZEJ5QXV0b21hdGlvbihQQUw6OlNlc3Npb25JRCkgY29uc3Q7CkBAIC0zNzgsOCArMzc5LDggQEAg
cHVibGljOgogICAgIHZvaWQgc2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5zKFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBWZWN0b3I8U3RyaW5nPiYmKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
IHZvaWQgYXBwQm91bmROYXZpZ2F0aW9uRGF0YShQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSYpPiYmKTsKLSAg
ICB2b2lkIGNsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YShQQUw6OlNlc3Npb25JRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGFwcFByaXZhY3lSZXBvcnRUZXN0aW5n
RGF0YShQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBBcHBQcml2
YWN5UmVwb3J0VGVzdGluZ0RhdGEmKT4mJik7CisgICAgdm9pZCBjbGVhckFwcFByaXZhY3lSZXBv
cnRUZXN0aW5nRGF0YShQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBhZTE1
ZmYwZTEyY2E1NDUxNzg5MDdkOTcyYTA5Y2U2ZDIzMjFhMmQ0Li5lMDVmMmUzMjA1ODQ3MzdiMzQ3
ZmFiMjFiZjZhMmU2OTc5YThjOGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTc3LDcgKzc3LDcgQEAg
bWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFByZXBhcmVU
b1N1c3BlbmQoYm9vbCBpc1N1c3BlbnNpb25JbW1pbmVudCkgLT4gKCkgQXN5bmMKICAgICBQcm9j
ZXNzRGlkUmVzdW1lKCkKIAotICAgIFByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBVUkwgdXJsLCBTdHJpbmcgdXNlckFnZW50LCBl
bnVtOnVpbnQ4X3QgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3ksIGVudW06Ym9vbCBzdGQ6Om9wdGlvbmFsPFdlYktpdDo6TmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIGVudW06Ym9vbCBX
ZWJLaXQ6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgbGFzdE5hdmlnYXRpb25XYXNBcHBCb3Vu
ZCk7CisgICAgUHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciB3ZWJQYWdlSUQsIFVSTCB1cmwsIFN0cmluZyB1c2VyQWdlbnQsIGVudW06dWludDhfdCBX
ZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwg
ZW51bTpib29sIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgZW51bTpib29sIFdlYktpdDo6TGFzdE5h
dmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpOwog
CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBDbGVhclByZXZhbGVu
dFJlc291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gcmVzb3VyY2VEb21haW4pIC0+ICgpIEFzeW5jCkBAIC0xOTMsOCArMTkzLDggQEAgbWVz
c2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIENsZWFyQnVuZGxl
SWRlbnRpZmllcigpIC0+ICgpIEFzeW5jCiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBBcHBC
b3VuZE5hdmlnYXRpb25EYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKHN0cnVjdCBX
ZWJLaXQ6OkFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhIGRhdGEpIEFzeW5jCi0gICAgQ2xl
YXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkg
QXN5bmMKKyAgICBBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklEKSAtPiAoc3RydWN0IFdlYktpdDo6QXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhIGRh
dGEpIEFzeW5jCisgICAgQ2xlYXJBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwogI2VuZGlmCiAKICAgICBBZGRXZWJQYWdlTmV0
d29ya1BhcmFtZXRlcnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OldlYlBhZ2VQ
cm94eUlkZW50aWZpZXIgcGFnZUlELCBXZWJLaXQ6OldlYlBhZ2VOZXR3b3JrUGFyYW1ldGVycyBw
YXJhbWV0ZXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDAxYWExYjgzNTczYTRjZGU1ZjZlYWNiMGNiM2My
ZDNiZWQ3YzE2MTMuLjZlOGU0NjcxNjdjNjczMTY3NGE5OWFiOTQyZDAwODc2NjFhYTJlNTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHAKQEAgLTg4Miw3ICs4ODIsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LAog
CiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVXaWxsU2VuZFJlZGlyZWN0ZWRS
ZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFJlc291cmNlUmVxdWVzdCYmIHJlZGly
ZWN0UmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIHN0ZDo6b3B0
aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGE+JiYg
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRhKQogewotICAgIHJl
ZGlyZWN0UmVxdWVzdC5zZXRJc0FwcEJvdW5kKHJlcXVlc3QuaXNBcHBCb3VuZCgpKTsKKyAgICBy
ZWRpcmVjdFJlcXVlc3Quc2V0SXNBcHBJbml0aWF0ZWQocmVxdWVzdC5pc0FwcEluaXRpYXRlZCgp
KTsKIAogICAgIExPQURFUl9SRUxFQVNFX0xPRygiY29udGludWVXaWxsU2VuZFJlZGlyZWN0ZWRS
ZXF1ZXN0OiAobV9pc0tlcHRBbGl2ZT0lZCwgaGFzQWRDbGlja0NvbnZlcnNpb249JWQpIiwgbV9p
c0tlcHRBbGl2ZSwgISFwcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHJpZ2dlckRh
dGEpOwogICAgIEFTU0VSVCghaXNTeW5jaHJvbm91cygpKTsKQEAgLTE1MDQsOSArMTUwNCw5IEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZXJ2aWNlV29ya2VyRGlkTm90SGFuZGxlKFNl
cnZpY2VXb3JrZXJGZXRjaFRhc2sqIGZlCiB9CiAjZW5kaWYKIAotYm9vbCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OmlzQXBwQm91bmQoKQorYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmlzQXBw
SW5pdGlhdGVkKCkKIHsKLSAgICByZXR1cm4gbV9wYXJhbWV0ZXJzLnJlcXVlc3QuaXNBcHBCb3Vu
ZCgpOworICAgIHJldHVybiBtX3BhcmFtZXRlcnMucmVxdWVzdC5pc0FwcEluaXRpYXRlZCgpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IDQ4ZjBlNWJhNzdjZGE0Yjkz
MmQxOWI5YzZmM2NlMzZkN2UxMjIyYmIuLmNmOGIzMTM0NzNiMjk4MmRmNzc0ZmQxNmJiNzYzMDk2
ZmFmODlmZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtMTQxLDcgKzE0MSw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNlcnZpY2VXb3JrZXJEaWROb3RIYW5kbGUoU2VydmljZVdvcmtlckZldGNoVGFzayopOwogI2Vu
ZGlmCiAKLSAgICBib29sIGlzQXBwQm91bmQoKTsKKyAgICBib29sIGlzQXBwSW5pdGlhdGVkKCk7
CiAKIHByaXZhdGU6CiAgICAgTmV0d29ya1Jlc291cmNlTG9hZGVyKE5ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzJiYsIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkRGVs
YXllZFJlcGx5JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vz
c2lvbi5oCmluZGV4IDJiZmYxODIyODBjNDI4ZTgxYjZjMzY4NGY1YWFmOTI4ZGI4OTc5MzIuLmMz
OGRlYzFhMTNjNTExMWFkNDU1MjQ1N2JjN2Y4MGUwOTAxYTI4ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAog
I3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJBcHBQcml2YWN5UmVwb3J0LmgiCiAjaW5jbHVkZSAi
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaCIKICNpbmNsdWRlICJQcmVmZXRjaENhY2hlLmgi
CiAjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyLmgiCkBAIC0x
NjIsNyArMTYzLDcgQEAgcHVibGljOgogICAgIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdl
ciYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKSB7IHJldHVybiAqbV9wcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDsgfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgQXBwQm91bmROYXZpZ2F0aW9u
VGVzdGluZ0RhdGEmIGFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhKCkgeyByZXR1cm4gbV9h
cHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YTsgfQorICAgIEFwcFByaXZhY3lSZXBvcnRUZXN0
aW5nRGF0YSYgYXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKCkgeyByZXR1cm4gbV9hcHBQcml2
YWN5UmVwb3J0VGVzdGluZ0RhdGE7IH0KICNlbmRpZgogCiAgICAgdm9pZCBhZGRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXIoc3RkOjp1bmlxdWVfcHRyPFByaXZhdGVDbGlja01l
YXN1cmVtZW50TmV0d29ya0xvYWRlcj4mJiBsb2FkZXIpIHsgbV9wcml2YXRlQ2xpY2tNZWFzdXJl
bWVudE5ldHdvcmtMb2FkZXJzLmFkZChXVEZNb3ZlKGxvYWRlcikpOyB9CkBAIC0yMjAsNyArMjIx
LDcgQEAgcHJvdGVjdGVkOgogI2VuZGlmCiAgICAgCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAg
QXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEgbV9hcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5n
RGF0YTsKKyAgICBBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEgbV9hcHBQcml2YWN5UmVwb3J0
VGVzdGluZ0RhdGE7CiAjZW5kaWYKIAogICAgIEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRyPFByaXZh
dGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlcj4+IG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnROZXR3b3JrTG9hZGVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNw
cAppbmRleCA3ZmRkOTU0YWU0YzkxZTE3YzUyNmNhMGU2ODc2YjM0ZGI2ZDJkYmIzLi5hMWNjM2U0
ZjRkZGRjNTBiZWVhOWJmZDNkODY5ZDAyNTBmZjE4ODNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJGZXRjaFRhc2suY3BwCkBAIC0yNTUsNyArMjU1LDcgQEAgdm9pZCBTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrOjpzb2Z0VXBkYXRlSWZOZWVkZWQoKQogICAgIGlmICghbV9zaG91bGRTb2Z0
VXBkYXRlKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKGF1dG8qIHJlZ2lzdHJhdGlvbiA9IG1f
bG9hZGVyLmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKS5zd0Nvbm5lY3Rpb24oKS5zZXJ2ZXIoKS5n
ZXRSZWdpc3RyYXRpb24obV9zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcikpCi0g
ICAgICAgIHJlZ2lzdHJhdGlvbi0+c2NoZWR1bGVTb2Z0VXBkYXRlKG1fbG9hZGVyLmlzQXBwQm91
bmQoKSA/IFdlYkNvcmU6OklzQXBwQm91bmQ6OlllcyA6IFdlYkNvcmU6OklzQXBwQm91bmQ6Ok5v
KTsKKyAgICAgICAgcmVnaXN0cmF0aW9uLT5zY2hlZHVsZVNvZnRVcGRhdGUobV9sb2FkZXIuaXNB
cHBJbml0aWF0ZWQoKSA/IFdlYkNvcmU6OklzQXBwSW5pdGlhdGVkOjpZZXMgOiBXZWJDb3JlOjpJ
c0FwcEluaXRpYXRlZDo6Tm8pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29y
a2VyU29mdFVwZGF0ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCmluZGV4IDRmZjFi
MWZkMjNmNjZhZjMxMjk5Y2M4YmI1Y2IyY2VjNWNlZjBhNWMuLjA0YWVkOTM4NTc5ZDczNWVlMDgz
M2Y5MGVkMzMzNGM3ZmU0NmNjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3Jr
ZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcApAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgU2VydmljZVdv
cmtlclNvZnRVcGRhdGVMb2FkZXI6OmxvYWRGcm9tTmV0d29yayhOZXR3b3JrU2Vzc2lvbiYgc2Vz
c2lvbiwgUmVzCiAgICAgbV9uZXR3b3JrTG9hZC0+c3RhcnQoKTsKIAogI2lmIFBMQVRGT1JNKENP
Q09BKQotICAgIHNlc3Npb24uYXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEoKS5zZXREaWRQ
ZXJmb3JtU29mdFVwZGF0ZSgpOworICAgIHNlc3Npb24uYXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdE
YXRhKCkuc2V0RGlkUGVyZm9ybVNvZnRVcGRhdGUoKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IGMzYTdiM2RmNzBjMzdlM2RiZTRmYTMx
ZWY2NjBiNjA3MDhmMzcyZTMuLjNjZjc2ZTU0OTJkY2VjNmFhYzU0ZjQ4NGQ3MjkxMWVjZjYxNTli
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0xNDcsNyAr
MTQ3LDcgQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmNvbnRyb2xDbGllbnQoU2Vydmlj
ZVdvcmtlckNsaWVudElkZW50aWZpZXIgY2xpZW50SWQKICAgICAgICAgdW5yZWdpc3RlclNlcnZp
Y2VXb3JrZXJDbGllbnQoY2xpZW50SWRlbnRpZmllcik7CiAgICAgfSk7CiAKLSAgICBTZXJ2aWNl
V29ya2VyQ2xpZW50RGF0YSBkYXRhIHsgY2xpZW50SWRlbnRpZmllciwgU2VydmljZVdvcmtlckNs
aWVudFR5cGU6OldpbmRvdywgU2VydmljZVdvcmtlckNsaWVudEZyYW1lVHlwZTo6Tm9uZSwgcmVx
dWVzdC51cmwoKSwgcmVxdWVzdC5pc0FwcEJvdW5kKCkgPyBXZWJDb3JlOjpMYXN0TmF2aWdhdGlv
bldhc0FwcEJvdW5kOjpZZXMgOiBXZWJDb3JlOjpMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOjpO
byB9OworICAgIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIGRhdGEgeyBjbGllbnRJZGVudGlmaWVy
LCBTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZTo6V2luZG93LCBTZXJ2aWNlV29ya2VyQ2xpZW50RnJh
bWVUeXBlOjpOb25lLCByZXF1ZXN0LnVybCgpLCByZXF1ZXN0LmlzQXBwSW5pdGlhdGVkKCkgPyBX
ZWJDb3JlOjpMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDo6WWVzIDogV2ViQ29yZTo6TGFz
dE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6Ok5vIH07CiAgICAgcmVnaXN0ZXJTZXJ2aWNlV29y
a2VyQ2xpZW50KFNlY3VyaXR5T3JpZ2luRGF0YSB7IHJlZ2lzdHJhdGlvbi5rZXkoKS50b3BPcmln
aW4oKSB9LCBXVEZNb3ZlKGRhdGEpLCByZWdpc3RyYXRpb24uaWRlbnRpZmllcigpLCByZXF1ZXN0
Lmh0dHBVc2VyQWdlbnQoKSk7CiB9CiAKQEAgLTE4OCw3ICsxODgsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8U2VydmljZVdvcmtlckZldGNoVGFzaz4gV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpjcmVhdGVG
ZXRjaFRhc2soTgogICAgIGJvb2wgc2hvdWxkU29mdFVwZGF0ZSA9IHJlZ2lzdHJhdGlvbiAmJiBy
ZWdpc3RyYXRpb24tPnNob3VsZFNvZnRVcGRhdGUobG9hZGVyLnBhcmFtZXRlcnMoKS5vcHRpb25z
KTsKICAgICBpZiAod29ya2VyLT5zaG91bGRTa2lwRmV0Y2hFdmVudCgpKSB7CiAgICAgICAgIGlm
IChzaG91bGRTb2Z0VXBkYXRlKQotICAgICAgICAgICAgcmVnaXN0cmF0aW9uLT5zY2hlZHVsZVNv
ZnRVcGRhdGUobG9hZGVyLmlzQXBwQm91bmQoKSA/IFdlYkNvcmU6OklzQXBwQm91bmQ6OlllcyA6
IFdlYkNvcmU6OklzQXBwQm91bmQ6Ok5vKTsKKyAgICAgICAgICAgIHJlZ2lzdHJhdGlvbi0+c2No
ZWR1bGVTb2Z0VXBkYXRlKGxvYWRlci5pc0FwcEluaXRpYXRlZCgpID8gV2ViQ29yZTo6SXNBcHBJ
bml0aWF0ZWQ6OlllcyA6IFdlYkNvcmU6OklzQXBwSW5pdGlhdGVkOjpObyk7CiAKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmNwcAppbmRleCAzZmEwZTk5NzBmMjU1NWNjODA0YjkyNzRiMGY3
ZWRkMTk1NzI1NTJhLi5lOTAyZWMwNzU4MDUwZTk5ZjYwMTdkYmY3MTBkYTgzNTU5YWRjMzZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNw
cApAQCAtOTIsOSArOTIsOSBAQCB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
aW5zdGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFNlcnZpY2VXbwogICAgIHNlbmQoTWVz
c2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpJbnN0YWxsU2VydmljZVdvcmtl
ciB7IGRhdGEsIHVzZXJBZ2VudCB9KTsKIH0KIAotdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb246OnVwZGF0ZUFwcEJvdW5kVmFsdWUoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQg
bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCkKK3ZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uOjp1cGRhdGVBcHBJbml0aWF0ZWRWYWx1ZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0
aWF0ZWQgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpCiB7Ci0gICAgc2VuZChNZXNzYWdl
czo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlVwZGF0ZUFwcEJvdW5kVmFsdWUoc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6VXBkYXRlQXBwSW5p
dGlhdGVkVmFsdWUoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGxhc3ROYXZpZ2F0aW9uV2FzQXBw
SW5pdGlhdGVkKSk7CiB9CiAKIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpm
aXJlSW5zdGFsbEV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5oCmluZGV4IGIwMTE0ZDJmOGQ3NjExN2JkOTYwODk2NTk2MDkzZDQ1ODdhYTAxZWMuLmFlM2Ex
YTU2ODZmYWE1YjdlZmY0NGRmODA1MzdlYWY3N2YxOGZlNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTg2LDcgKzg2LDcgQEAgcHJp
dmF0ZToKIAogICAgIC8vIE1lc3NhZ2VzIHRvIHRoZSBTVyBob3N0IFdlYlByb2Nlc3MKICAgICB2
b2lkIGluc3RhbGxTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGEmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkgZmluYWw7Ci0gICAgdm9p
ZCB1cGRhdGVBcHBCb3VuZFZhbHVlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBX
ZWJDb3JlOjpMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0
ZUFwcEluaXRpYXRlZFZhbHVlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJD
b3JlOjpMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCkgZmluYWw7CiAgICAgdm9pZCBmaXJl
SW5zdGFsbEV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKICAg
ICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KSBmaW5hbDsKICAgICB2b2lkIHRlcm1pbmF0ZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllcikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRN
YW5hZ2VyLmNwcAppbmRleCBlMWJkZjY5ZDY1NDc1MDBlMmUzYjcwMzg2OGVlMTNmZDEwNzQ0NDY4
Li5kMjgyMDQ2Y2JmYjYwNmQ5YWQxNGU0NzExOTkxZTY5ZThkMDgyNGM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZl
TG9hZE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAKQEAgLTkzLDcgKzkzLDcgQEAg
c3RhdGljIGlubGluZSBSZXNvdXJjZVJlcXVlc3QgY29uc3RydWN0UmV2YWxpZGF0aW9uUmVxdWVz
dChjb25zdCBLZXkmIGtleSwgY29uc3QKICAgICByZXZhbGlkYXRpb25SZXF1ZXN0LnNldEZpcnN0
UGFydHlGb3JDb29raWVzKHN1YlJlc291cmNlSW5mby5maXJzdFBhcnR5Rm9yQ29va2llcygpKTsK
ICAgICByZXZhbGlkYXRpb25SZXF1ZXN0LnNldElzU2FtZVNpdGUoc3ViUmVzb3VyY2VJbmZvLmlz
U2FtZVNpdGUoKSk7CiAgICAgcmV2YWxpZGF0aW9uUmVxdWVzdC5zZXRJc1RvcFNpdGUoc3ViUmVz
b3VyY2VJbmZvLmlzVG9wU2l0ZSgpKTsKLSAgICByZXZhbGlkYXRpb25SZXF1ZXN0LnNldElzQXBw
Qm91bmQoc3ViUmVzb3VyY2VJbmZvLmlzQXBwQm91bmQoKSk7CisgICAgcmV2YWxpZGF0aW9uUmVx
dWVzdC5zZXRJc0FwcEluaXRpYXRlZChzdWJSZXNvdXJjZUluZm8uaXNBcHBJbml0aWF0ZWQoKSk7
CiAKICAgICBpZiAoIWtleS5wYXJ0aXRpb24oKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldmFsaWRh
dGlvblJlcXVlc3Quc2V0Q2FjaGVQYXJ0aXRpb24oa2V5LnBhcnRpdGlvbigpKTsKQEAgLTM2OSwx
MiArMzY5LDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmVnaXN0ZXJMb2FkKGNv
bnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQsIGNvbnN0IFJlCiAgICAgICAgIG1fcGVuZGluZ0Zy
YW1lTG9hZHMuYWRkKGZyYW1lSUQsIHBlbmRpbmdGcmFtZUxvYWQuY29weVJlZigpKTsKIAogICAg
ICAgICAvLyBSZXRyaWV2ZSB0aGUgc3VicmVzb3VyY2VzIGVudHJ5IGlmIGl0IGV4aXN0cyB0byBz
dGFydCBzcGVjdWxhdGl2ZSByZXZhbGlkYXRpb24gYW5kIHRvIHVwZGF0ZSBpdC4KLSAgICAgICAg
cmV0cmlldmVTdWJyZXNvdXJjZXNFbnRyeShyZXNvdXJjZUtleSwgW3RoaXMsIHdlYWtUaGlzID0g
bWFrZVdlYWtQdHIoKnRoaXMpLCBmcmFtZUlELCBwZW5kaW5nRnJhbWVMb2FkID0gV1RGTW92ZShw
ZW5kaW5nRnJhbWVMb2FkKSwgcmVxdWVzdElzQXBwQm91bmQgPSByZXF1ZXN0LmlzQXBwQm91bmQo
KSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbl0oc3RkOjp1bmlxdWVfcHRyPFN1YnJlc291
cmNlc0VudHJ5PiBlbnRyeSkgeworICAgICAgICByZXRyaWV2ZVN1YnJlc291cmNlc0VudHJ5KHJl
c291cmNlS2V5LCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIGZyYW1lSUQs
IHBlbmRpbmdGcmFtZUxvYWQgPSBXVEZNb3ZlKHBlbmRpbmdGcmFtZUxvYWQpLCByZXF1ZXN0SXNB
cHBJbml0aWF0ZWQgPSByZXF1ZXN0LmlzQXBwSW5pdGlhdGVkKCksIGlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW5dKHN0ZDo6dW5pcXVlX3B0cjxTdWJyZXNvdXJjZXNFbnRyeT4gZW50cnkpIHsK
ICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAg
ICAgICAgICAgICBpZiAoZW50cnkpCi0gICAgICAgICAgICAgICAgc3RhcnRTcGVjdWxhdGl2ZVJl
dmFsaWRhdGlvbihmcmFtZUlELCAqZW50cnksIHJlcXVlc3RJc0FwcEJvdW5kLCBpc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluKTsKKyAgICAgICAgICAgICAgICBzdGFydFNwZWN1bGF0aXZlUmV2
YWxpZGF0aW9uKGZyYW1lSUQsICplbnRyeSwgcmVxdWVzdElzQXBwSW5pdGlhdGVkLCBpc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKIAogICAgICAgICAgICAgcGVuZGluZ0ZyYW1lTG9hZC0+
c2V0RXhpc3RpbmdTdWJyZXNvdXJjZXNFbnRyeShXVEZNb3ZlKGVudHJ5KSk7CiAgICAgICAgIH0p
OwpAQCAtNTkyLDExICs1OTIsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpwcmVs
b2FkRW50cnkoY29uc3QgS2V5JiBrZXksIGNvbnN0IFN1YnJlc291cmNlSW5mbyYKICAgICB9KTsK
IH0KIAotdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpzdGFydFNwZWN1bGF0aXZlUmV2YWxp
ZGF0aW9uKGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQsIFN1YnJlc291cmNlc0VudHJ5JiBl
bnRyeSwgYm9vbCByZXF1ZXN0SXNBcHBCb3VuZCwgc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKK3ZvaWQgU3BlY3Vs
YXRpdmVMb2FkTWFuYWdlcjo6c3RhcnRTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbihjb25zdCBHbG9i
YWxGcmFtZUlEJiBmcmFtZUlELCBTdWJyZXNvdXJjZXNFbnRyeSYgZW50cnksIGJvb2wgcmVxdWVz
dElzQXBwSW5pdGlhdGVkLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
PiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKQogewogICAgIGZvciAoYXV0byYgc3VicmVz
b3VyY2VJbmZvIDogZW50cnkuc3VicmVzb3VyY2VzKCkpIHsKICAgICAgICAgYXV0byYga2V5ID0g
c3VicmVzb3VyY2VJbmZvLmtleSgpOwotICAgICAgICBzdWJyZXNvdXJjZUluZm8uc2V0SXNBcHBC
b3VuZChyZXF1ZXN0SXNBcHBCb3VuZCk7CisgICAgICAgIHN1YnJlc291cmNlSW5mby5zZXRJc0Fw
cEluaXRpYXRlZChyZXF1ZXN0SXNBcHBJbml0aWF0ZWQpOwogICAgICAgICBpZiAoIXN1YnJlc291
cmNlSW5mby5pc1RyYW5zaWVudCgpKQogICAgICAgICAgICAgcHJlbG9hZEVudHJ5KGtleSwgc3Vi
cmVzb3VyY2VJbmZvLCBmcmFtZUlELCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKICAg
ICAgICAgZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN1YnJlc291cmNlc0VudHJ5LmgKaW5kZXggNjBh
NDA2M2IyMzQ1ZDkyNWUyYzc4Nzg0NTk5MjBlMTBmMjc4MjMwZS4uNDBjOWIyMDE3ODhmODE4YTU3
OGI4M2YxYWUzNGI3ZmNmNWU0MTNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdWJyZXNvdXJjZXNFbnRyeS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3VicmVzb3VyY2VzRW50
cnkuaApAQCAtNTksOCArNTksOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzRmlyc3RQYXJ0eSgp
IGNvbnN0OwogCi0gICAgYm9vbCBpc0FwcEJvdW5kKCkgY29uc3QgeyByZXR1cm4gbV9pc0FwcEJv
dW5kOyB9Ci0gICAgdm9pZCBzZXRJc0FwcEJvdW5kKGJvb2wgaXNBcHBCb3VuZCkgeyBtX2lzQXBw
Qm91bmQgPSBpc0FwcEJvdW5kOyB9CisgICAgYm9vbCBpc0FwcEluaXRpYXRlZCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNBcHBJbml0aWF0ZWQ7IH0KKyAgICB2b2lkIHNldElzQXBwSW5pdGlhdGVkKGJv
b2wgaXNBcHBJbml0aWF0ZWQpIHsgbV9pc0FwcEluaXRpYXRlZCA9IGlzQXBwSW5pdGlhdGVkOyB9
CiAKIHByaXZhdGU6CiAgICAgS2V5IG1fa2V5OwpAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgog
ICAgIFdhbGxUaW1lIG1fZmlyc3RTZWVuOwogICAgIGJvb2wgbV9pc1RyYW5zaWVudCB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX2lzU2FtZVNpdGUgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9pc0FwcEJv
dW5kIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNBcHBJbml0aWF0ZWQgeyB0cnVlIH07CiAgICAg
VVJMIG1fZmlyc3RQYXJ0eUZvckNvb2tpZXM7CiAgICAgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCBt
X3JlcXVlc3RIZWFkZXJzOwogICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZFByaW9yaXR5IG1fcHJp
b3JpdHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtEYXRhVGFza0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQppbmRleCBmNzRiMzEyOWZlNzJiYzlmY2U2MjM2MDYw
NmQzYjM5YjA3MTJjZjg5Li5kM2ZmOGViZWI2Nzg1NTI0N2Y0YzI1NjNjODIwOWJlY2M1OGQ4YmIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtE
YXRhVGFza0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya0RhdGFUYXNrQ29jb2EubW0KQEAgLTM0MSw5ICszNDEsNyBAQCBOZXR3b3JrRGF0YVRh
c2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5l
dHdvcmtEYXRhVAogICAgIFJldGFpblB0cjxOU011dGFibGVVUkxSZXF1ZXN0PiBtdXRhYmxlUmVx
dWVzdCA9IGFkb3B0TlMoW25zUmVxdWVzdC5nZXQoKSBtdXRhYmxlQ29weV0pOwogCiAjaWYgRU5B
QkxFKEFQUF9QUklWQUNZX1JFUE9SVCkKLSAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19CRUdJTgotICAgIG11dGFibGVSZXF1ZXN0LmdldCgpLl9pc05vbkFwcEluaXRpYXRlZCA9ICFy
ZXF1ZXN0LmlzQXBwQm91bmQoKTsKLSAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19F
TkQKKyAgICBtdXRhYmxlUmVxdWVzdC5nZXQoKS5hdHRyaWJ1dGlvbiA9IHJlcXVlc3QuaXNBcHBJ
bml0aWF0ZWQoKSA/IE5TVVJMUmVxdWVzdEF0dHJpYnV0aW9uRGV2ZWxvcGVyIDogTlNVUkxSZXF1
ZXN0QXR0cmlidXRpb25Vc2VyOwogI2VuZGlmCiAKICAgICBpZiAocGFyYW1ldGVycy5wY21EYXRh
Q2FycmllZCkKQEAgLTM1MSw3ICszNDksOSBAQCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29y
a0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVAogCiAg
ICAgbnNSZXF1ZXN0ID0gbXV0YWJsZVJlcXVlc3Q7CiAKLSAgICBtX3Nlc3Npb24tPmFwcEJvdW5k
TmF2aWdhdGlvblRlc3RpbmdEYXRhKCkudXBkYXRlQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0Rh
dGEocmVxdWVzdCwgcmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygpLmlzRW1wdHkoKSA/IFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluKHJlcXVlc3QudXJsKCkpIDogV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4ocmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygpKSk7CisjaWYgRU5BQkxF
KEFQUF9QUklWQUNZX1JFUE9SVCkKKyAgICBtX3Nlc3Npb24tPmFwcFByaXZhY3lSZXBvcnRUZXN0
aW5nRGF0YSgpLmRpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0KG5zUmVxdWVzdC5nZXQoKS5hdHRy
aWJ1dGlvbiA9PSBOU1VSTFJlcXVlc3RBdHRyaWJ1dGlvbkRldmVsb3Blcik7CisjZW5kaWYKIAog
ICAgIGFwcGx5U25pZmZpbmdQb2xpY2llc0FuZEJpbmRSZXF1ZXN0VG9JbmZlcmZhY2VJZk5lZWRl
ZChuc1JlcXVlc3QsIHBhcmFtZXRlcnMuY29udGVudFNuaWZmaW5nUG9saWN5ID09IFdlYkNvcmU6
OkNvbnRlbnRTbmlmZmluZ1BvbGljeTo6U25pZmZDb250ZW50ICYmICF1cmwuaXNMb2NhbEZpbGUo
KSwgcGFyYW1ldGVycy5jb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSA9PSBXZWJDb3JlOjpD
b250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeTo6U25pZmYpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCBkMzg2NTgzZTY1MzY4NmZhNTIxNTZmM2Q2NDE3
NDEwNzRhYmJkODg1Li5kOGZkOTZhMjllOTEwMjgwYzQ1MmU5MDk1NGMxNmRlYzJlNTk5MzIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBi
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTcwMyw3ICs3MDMs
NyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dlYkNvcmU6Okluc3Bl
Y3Rvck92ZXJsYXk6OkhpZ2hsaWdodCc6IFsnPFdlYkNvcmUvSW5zcGVjdG9yT3ZlcmxheS5oPidd
LAogICAgICAgICAnV2ViQ29yZTo6S2V5ZnJhbWVWYWx1ZUxpc3QnOiBbJzxXZWJDb3JlL0dyYXBo
aWNzTGF5ZXIuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OktleXByZXNzQ29tbWFuZCc6IFsnPFdl
YkNvcmUvS2V5Ym9hcmRFdmVudC5oPiddLAotICAgICAgICAnV2ViQ29yZTo6TGFzdE5hdmlnYXRp
b25XYXNBcHBCb3VuZCc6IFsnPFdlYkNvcmUvU2VydmljZVdvcmtlckNsaWVudERhdGEuaD4nXSwK
KyAgICAgICAgJ1dlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkJzogWyc8V2Vi
Q29yZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oPiddLAogICAgICAgICAnV2ViQ29yZTo6TGVn
YWN5Q0RNU2Vzc2lvbkNsaWVudDo6TWVkaWFLZXlFcnJvckNvZGUnOiBbJzxXZWJDb3JlL0xlZ2Fj
eUNETVNlc3Npb24uaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OkxvY2tCYWNrRm9yd2FyZExpc3Qn
OiBbJzxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6Ok1l
c3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eSc6IFsnPFdlYkNvcmUvTWVzc2Fn
ZVBvcnRDaGFubmVsUHJvdmlkZXIuaD4nXSwKQEAgLTc1OCw4ICs3NTgsOCBAQCBkZWYgaGVhZGVy
c19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dlYkNvcmU6OldpbGxDb250aW51ZUxvYWRpbmcn
OiBbJzxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OlNl
bGVjdGlvbkdlb21ldHJ5JzogWyciRWRpdG9yU3RhdGUuaCInXSwKICAgICAgICAgJ1dlYktpdDo6
QWN0aXZpdHlTdGF0ZUNoYW5nZUlEJzogWyciRHJhd2luZ0FyZWFJbmZvLmgiJ10sCi0gICAgICAg
ICdXZWJLaXQ6OkFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhJzogWyciTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4uaCInXSwKICAgICAgICAgJ1dlYktpdDo6QWxsb3dPdmVyd3JpdGUnOiBb
JyJEb3dubG9hZElELmgiJ10sCisgICAgICAgICdXZWJLaXQ6OkFwcFByaXZhY3lSZXBvcnRUZXN0
aW5nRGF0YSc6IFsnIkFwcFByaXZhY3lSZXBvcnQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6QmFj
a0ZvcndhcmRMaXN0SXRlbVN0YXRlJzogWyciU2Vzc2lvblN0YXRlLmgiJ10sCiAgICAgICAgICdX
ZWJLaXQ6OkNhbGxEb3dubG9hZERpZFN0YXJ0JzogWyciRG93bmxvYWRNYW5hZ2VyLmgiJ10sCiAg
ICAgICAgICdXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXInOiBbJyJDb250ZW50V29ybGRT
aGFyZWQuaCInXSwKQEAgLTc2Nyw3ICs3NjcsNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBl
KToKICAgICAgICAgJ1dlYktpdDo6RmluZE9wdGlvbnMnOiBbJyJXZWJGaW5kT3B0aW9ucy5oIidd
LAogICAgICAgICAnV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplclN0YXRlJzogWyciR2VzdHVyZVR5
cGVzLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6Okdlc3R1cmVUeXBlJzogWyciR2VzdHVyZVR5cGVz
LmgiJ10sCi0gICAgICAgICdXZWJLaXQ6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQnOiBbJyJO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oIiddLAorICAgICAgICAnV2ViS2l0OjpMYXN0TmF2
aWdhdGlvbldhc0FwcEluaXRpYXRlZCc6IFsnIkFwcFByaXZhY3lSZXBvcnQuaCInXSwKICAgICAg
ICAgJ1dlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dElEJzogWyciTGF5ZXJIb3N0aW5nQ29udGV4
dC5oIiddLAogICAgICAgICAnV2ViS2l0OjpMYXllckhvc3RpbmdNb2RlJzogWyciTGF5ZXJUcmVl
Q29udGV4dC5oIiddLAogICAgICAgICAnV2ViS2l0OjpQYWdlU3RhdGUnOiBbJyJTZXNzaW9uU3Rh
dGUuaCInXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcFByaXZhY3lSZXBv
cnQuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcFByaXZhY3lSZXBvcnQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xODA1ZjQxMjAxODJiNGU2YWE1MGVlNzJiMDc3MGQzZTdmZDIxODdkCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwUHJpdmFjeVJlcG9ydC5oCkBAIC0wLDAgKzEs
OTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFyZ3VtZW50Q29k
ZXIuaCIKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkRlY29kZXIuaCIK
KyNpbmNsdWRlICJFbmNvZGVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3Qu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gY2xhc3MgTGFzdE5hdmlnYXRpb25XYXNB
cHBJbml0aWF0ZWQgOiBib29sIHsgTm8sIFllcyB9OworCisjaWYgUExBVEZPUk0oQ09DT0EpCitz
dHJ1Y3QgQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhIHsKKworICAgIHZvaWQgc2V0RGlkUGVy
Zm9ybVNvZnRVcGRhdGUoKQorICAgIHsKKyAgICAgICAgZGlkUGVyZm9ybVNvZnRVcGRhdGUgPSB0
cnVlOworICAgIH0KKworICAgIHZvaWQgY2xlYXJBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEo
KQorICAgIHsKKyAgICAgICAgaGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcgPSBm
YWxzZTsKKyAgICAgICAgaGFzTG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcgPSBm
YWxzZTsKKyAgICAgICAgZGlkUGVyZm9ybVNvZnRVcGRhdGUgPSBmYWxzZTsKKyAgICB9CisKKyAg
ICB2b2lkIGRpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0KGJvb2wgaXNBcHBJbml0aWF0ZWQpCisg
ICAgeworICAgICAgICBpc0FwcEluaXRpYXRlZCA/IGhhc0xvYWRlZEFwcEluaXRpYXRlZFJlcXVl
c3RUZXN0aW5nID0gdHJ1ZSA6IGhhc0xvYWRlZE5vbkFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5n
ID0gdHJ1ZTsKKyAgICB9CisKKyAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIp
IGNvbnN0CisgICAgeworICAgICAgICBlbmNvZGVyIDw8IGhhc0xvYWRlZEFwcEluaXRpYXRlZFJl
cXVlc3RUZXN0aW5nOworICAgICAgICBlbmNvZGVyIDw8IGhhc0xvYWRlZE5vbkFwcEluaXRpYXRl
ZFJlcXVlc3RUZXN0aW5nOworICAgICAgICBlbmNvZGVyIDw8IGRpZFBlcmZvcm1Tb2Z0VXBkYXRl
OworICAgIH0KKworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEFwcFByaXZhY3lSZXBvcnRUZXN0
aW5nRGF0YT4gZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKKyAgICB7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8Ym9vbD4gaGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3Rpbmc7Cisg
ICAgICAgIGRlY29kZXIgPj4gaGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3Rpbmc7Cisg
ICAgICAgIGlmICghaGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcpCisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4g
aGFzTG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3Rpbmc7CisgICAgICAgIGRlY29kZXIg
Pj4gaGFzTG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3Rpbmc7CisgICAgICAgIGlmICgh
aGFzTG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcpCisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZGlkUGVyZm9y
bVNvZnRVcGRhdGU7CisgICAgICAgIGRlY29kZXIgPj4gZGlkUGVyZm9ybVNvZnRVcGRhdGU7Cisg
ICAgICAgIGlmICghZGlkUGVyZm9ybVNvZnRVcGRhdGUpCisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworCisgICAgICAgIHJldHVybiB7eyAqaGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVx
dWVzdFRlc3RpbmcsICpoYXNMb2FkZWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZywgKmRp
ZFBlcmZvcm1Tb2Z0VXBkYXRlIH19OworICAgIH0KKworICAgIGJvb2wgaGFzTG9hZGVkQXBwSW5p
dGlhdGVkUmVxdWVzdFRlc3RpbmcgeyBmYWxzZSB9OworICAgIGJvb2wgaGFzTG9hZGVkTm9uQXBw
SW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcgeyBmYWxzZSB9OworICAgIGJvb2wgZGlkUGVyZm9ybVNv
ZnRVcGRhdGUgeyBmYWxzZSB9OworfTsKKyNlbmRpZgorCit9CisKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YS5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzdk
OGJmYzU4YTM3MWZjMmRkOTQwMzc2MWJiZmQxZWVmNDExZmIwNQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YS5oCkBAIC0w
LDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFyZ3Vt
ZW50Q29kZXIuaCIKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorI2luY2x1ZGUgIkRlY29k
ZXIuaCIKKyNpbmNsdWRlICJFbmNvZGVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJs
ZURvbWFpbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitlbnVtIGNsYXNzIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVk
IDogYm9vbCB7IE5vLCBZZXMgfTsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorc3RydWN0IEFwcFBy
aXZhY3lSZXBvcnRUZXN0aW5nRGF0YSB7CisKKyAgICB2b2lkIHNldERpZFBlcmZvcm1Tb2Z0VXBk
YXRlKCkKKyAgICB7CisgICAgICAgIGRpZFBlcmZvcm1Tb2Z0VXBkYXRlID0gdHJ1ZTsKKyAgICB9
CisKKyAgICB2b2lkIGNsZWFyQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKCkKKyAgICB7Cisg
ICAgICAgIGhhc0xvYWRlZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nID0gZmFsc2U7CisgICAg
ICAgIGhhc0xvYWRlZE5vbkFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nID0gZmFsc2U7CisgICAg
ICAgIGRpZFBlcmZvcm1Tb2Z0VXBkYXRlID0gZmFsc2U7CisgICAgfQorCisgICAgdm9pZCBkaWRM
b2FkQXBwSW5pdGlhdGVkUmVxdWVzdChib29sIGlzQXBwSW5pdGlhdGVkKQorICAgIHsKKyAgICAg
ICAgaXNBcHBJbml0aWF0ZWQgPyBoYXNMb2FkZWRBcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZyA9
IHRydWUgOiBoYXNMb2FkZWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZyA9IHRydWU7Cisg
ICAgfQorCisgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAorICAg
IHsKKyAgICAgICAgZW5jb2RlciA8PCBoYXNMb2FkZWRBcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGlu
ZzsKKyAgICAgICAgZW5jb2RlciA8PCBoYXNMb2FkZWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0VGVz
dGluZzsKKyAgICAgICAgZW5jb2RlciA8PCBkaWRQZXJmb3JtU29mdFVwZGF0ZTsKKyAgICB9CisK
KyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGE+IGRl
Y29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCisgICAgeworICAgICAgICBzdGQ6Om9wdGlvbmFs
PGJvb2w+IGhhc0xvYWRlZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nOworICAgICAgICBkZWNv
ZGVyID4+IGhhc0xvYWRlZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nOworICAgICAgICBpZiAo
IWhhc0xvYWRlZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nKQorICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGhhc0xvYWRlZE5v
bkFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nOworICAgICAgICBkZWNvZGVyID4+IGhhc0xvYWRl
ZE5vbkFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nOworICAgICAgICBpZiAoIWhhc0xvYWRlZE5v
bkFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKworICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGRpZFBlcmZvcm1Tb2Z0VXBkYXRl
OworICAgICAgICBkZWNvZGVyID4+IGRpZFBlcmZvcm1Tb2Z0VXBkYXRlOworICAgICAgICBpZiAo
IWRpZFBlcmZvcm1Tb2Z0VXBkYXRlKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KworICAgICAgICByZXR1cm4ge3sgKmhhc0xvYWRlZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5n
LCAqaGFzTG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcsICpkaWRQZXJmb3JtU29m
dFVwZGF0ZSB9fTsKKyAgICB9CisKKyAgICBib29sIGhhc0xvYWRlZEFwcEluaXRpYXRlZFJlcXVl
c3RUZXN0aW5nIHsgZmFsc2UgfTsKKyAgICBib29sIGhhc0xvYWRlZE5vbkFwcEluaXRpYXRlZFJl
cXVlc3RUZXN0aW5nIHsgZmFsc2UgfTsKKyAgICBib29sIGRpZFBlcmZvcm1Tb2Z0VXBkYXRlIHsg
ZmFsc2UgfTsKK307CisjZW5kaWYKKworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCmluZGV4IDA4NmJjNGZk
ZjE4MzdhZGU4NGM0ZjFmYzUzY2UzMWQ5NmY0YThkNzcuLmE4MmZmODY2OGY2ZGVkN2FkMTcwNzE2
ZDk3MGFkOWM0ZjMwODg1YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCkBAIC02MTgsNyArNjE4LDcgQEAg
dm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD46OmVuY29kZVBsYXRm
b3JtRGF0YShFbmNvZGVyJiBlbmNvZGUKICAgICBJUEM6OmVuY29kZShlbmNvZGVyLCByZXF1ZXN0
VG9TZXJpYWxpemUuZ2V0KCkpOwogCiAgICAgZW5jb2RlciA8PCByZXNvdXJjZVJlcXVlc3QucmVx
dWVzdGVyKCk7Ci0gICAgZW5jb2RlciA8PCByZXNvdXJjZVJlcXVlc3QuaXNBcHBCb3VuZCgpOwor
ICAgIGVuY29kZXIgPDwgcmVzb3VyY2VSZXF1ZXN0LmlzQXBwSW5pdGlhdGVkKCk7CiB9CiAKIGJv
b2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+OjpkZWNvZGVQbGF0Zm9y
bURhdGEoRGVjb2RlciYgZGVjb2RlciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJj
ZVJlcXVlc3QpCkBAIC02NDAsMTMgKzY0MCwxMyBAQCBib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0Pjo6ZGVjb2RlUGxhdGZvcm1EYXRhKERlY29kZXImIGRlY29kZQog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVxdWVzdGVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgYm9vbCBpc0FwcEJvdW5kOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXNBcHBC
b3VuZCkpCisgICAgYm9vbCBpc0FwcEluaXRpYXRlZDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGlzQXBwSW5pdGlhdGVkKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmVzb3VyY2VS
ZXF1ZXN0ID0gV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QtPmdldCgpKTsKICAgICBy
ZXNvdXJjZVJlcXVlc3Quc2V0UmVxdWVzdGVyKHJlcXVlc3Rlcik7Ci0gICAgcmVzb3VyY2VSZXF1
ZXN0LnNldElzQXBwQm91bmQoaXNBcHBCb3VuZCk7CisgICAgcmVzb3VyY2VSZXF1ZXN0LnNldElz
QXBwSW5pdGlhdGVkKGlzQXBwSW5pdGlhdGVkKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4u
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmgKaW5k
ZXggZTM0YWM1ZTU3ZjQxMWU4YTZkMzAwMmE1NjlhMDMxODA3Y2NmNDQwMC4uNDIzMmUwY2UyM2I0
MjVhOWFjM2UyOWQyOTQ0MGFjMmNiNDg1MTY1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9OYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oCkBAIC0zNSw3MiArMzUsNiBAQAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIGVudW0gY2xhc3MgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4g
OiBib29sIHsgTm8sIFllcyB9OwotZW51bSBjbGFzcyBMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5k
IDogYm9vbCB7IE5vLCBZZXMgfTsKLQotdXNpbmcgQ29udGV4dERvbWFpbiA9IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluOwotdXNpbmcgUmVxdWVzdERvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluOwotCi0jaWYgUExBVEZPUk0oQ09DT0EpCi1zdHJ1Y3QgQXBwQm91bmROYXZpZ2F0
aW9uVGVzdGluZ0RhdGEgewotCi0gICAgdm9pZCBzZXREaWRQZXJmb3JtU29mdFVwZGF0ZSgpCi0g
ICAgewotICAgICAgICBkaWRQZXJmb3JtU29mdFVwZGF0ZSA9IHRydWU7Ci0gICAgfQotICAgIAot
ICAgIHZvaWQgY2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhVGVzdGluZygpCi0gICAgewotICAg
ICAgICBoYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nID0gZmFsc2U7Ci0gICAgICAgIGhh
c0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3RpbmcgPSBmYWxzZTsKLSAgICAgICAgZGlkUGVy
Zm9ybVNvZnRVcGRhdGUgPSBmYWxzZTsKLSAgICAgICAgY29udGV4dERhdGEuY2xlYXIoKTsKLSAg
ICB9Ci0KLSAgICB2b2lkIHVwZGF0ZUFwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mJiBjb250ZXh0RG9tYWluKQotICAgIHsKLSAgICAgICAgcmVxdWVzdC5pc0FwcEJvdW5k
KCkgPyBoYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nID0gdHJ1ZSA6IGhhc0xvYWRlZE5v
bkFwcEJvdW5kUmVxdWVzdFRlc3RpbmcgPSB0cnVlOwotICAgICAgICBjb250ZXh0RGF0YS5hZGQo
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4ocmVxdWVzdC51cmwoKSksIGNvbnRleHREb21haW4p
OwotICAgIH0KLQotICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QK
LSAgICB7Ci0gICAgICAgIGVuY29kZXIgPDwgaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGlu
ZzsKLSAgICAgICAgZW5jb2RlciA8PCBoYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5n
OwotICAgICAgICBlbmNvZGVyIDw8IGRpZFBlcmZvcm1Tb2Z0VXBkYXRlOwotICAgICAgICBlbmNv
ZGVyIDw8IGNvbnRleHREYXRhOwotICAgIH0KLQotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEFw
cEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhPiBkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVy
KQotICAgIHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBoYXNMb2FkZWRBcHBCb3VuZFJl
cXVlc3RUZXN0aW5nOwotICAgICAgICBkZWNvZGVyID4+IGhhc0xvYWRlZEFwcEJvdW5kUmVxdWVz
dFRlc3Rpbmc7Ci0gICAgICAgIGlmICghaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZykK
LSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgc3RkOjpvcHRpb25h
bDxib29sPiBoYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nOwotICAgICAgICBkZWNv
ZGVyID4+IGhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3Rpbmc7Ci0gICAgICAgIGlmICgh
aGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZykKLSAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0gICAgICAgIAotICAgICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGRpZFBl
cmZvcm1Tb2Z0VXBkYXRlOwotICAgICAgICBkZWNvZGVyID4+IGRpZFBlcmZvcm1Tb2Z0VXBkYXRl
OwotICAgICAgICBpZiAoIWRpZFBlcmZvcm1Tb2Z0VXBkYXRlKQotICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICBzdGQ6Om9wdGlvbmFsPEhhc2hNYXA8UmVxdWVzdERv
bWFpbiwgQ29udGV4dERvbWFpbj4+IGNvbnRleHREYXRhOwotICAgICAgICBkZWNvZGVyID4+IGNv
bnRleHREYXRhOwotICAgICAgICBpZiAoIWNvbnRleHREYXRhKQotICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICByZXR1cm4ge3sgKmhhc0xvYWRlZEFwcEJvdW5kUmVx
dWVzdFRlc3RpbmcsICpoYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nLCAqZGlkUGVy
Zm9ybVNvZnRVcGRhdGUsIFdURk1vdmUoKmNvbnRleHREYXRhKSB9fTsKLSAgICB9Ci0KLSAgICBi
b29sIGhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcgeyBmYWxzZSB9OwotICAgIGJvb2wg
aGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZyB7IGZhbHNlIH07Ci0gICAgYm9vbCBk
aWRQZXJmb3JtU29mdFVwZGF0ZSB7IGZhbHNlIH07Ci0gICAgSGFzaE1hcDxSZXF1ZXN0RG9tYWlu
LCBDb250ZXh0RG9tYWluPiBjb250ZXh0RGF0YTsKLX07Ci0jZW5kaWYKIAogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4
IDZhMjUyMzFmNmZjMjU4YzFlMzhhYTA1Y2UxMmFhNDQ0ZmQ3MDk2YzguLjJiYWVmMDZjYWNhYjNl
NTE1ZTcwNDZkNTE3YTUzNTZiZjAzYzNjMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC0xNzMsNyArMTczLDcgQEAgdm9p
ZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBlbmNvZGVyIDw8IGxp
bWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnM7CiAjZW5kaWYKLSAgICBlbmNvZGVyIDw8
IGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ7CisgICAgZW5jb2RlciA8PCBsYXN0TmF2aWdhdGlv
bldhc0FwcEluaXRpYXRlZDsKICAgICBlbmNvZGVyIDw8IHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nOwogICAgIGVuY29kZXIgPDwgY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2U7CiAK
QEAgLTU4MSw3ICs1ODEsNyBAQCBzdGQ6Om9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnM+IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OgogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocGFyYW1ldGVycy5saW1pdHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5z
KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbmRpZgotICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocGFyYW1ldGVycy5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKSkKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMubGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQp
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShwYXJhbWV0ZXJzLnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCBj
NThlNmMyMjBiMWEwMzc2NmFhZTU0ODQ3MmYxNmI3ODNlMDQwMmFjLi42NTE3ODkyMjEyYzIzOTll
MWFhYzM2ZWE2YjZmYzNiMTUyZmQ1ODlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0yNDIsNyArMjQyLDcgQEAgc3RydWN0IFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykK
ICAgICBib29sIGxpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMgeyBmYWxzZSB9Owog
I2VuZGlmCi0gICAgYm9vbCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIHsgZmFsc2UgfTsKKyAg
ICBib29sIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIHsgdHJ1ZSB9OwogICAgIGJvb2wg
Y2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UgeyB0cnVlIH07CiAKICAgICBXZWJDb3JlOjpTaG91bGRS
ZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVC
bG9ja2luZyB7IFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOjpO
byB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0K
aW5kZXggNTk0YmUxYzdmYTM0YzZkZTU4ZjU0NWM4NmZlZWUxN2JjMzgzMjFhMy4uNjJiYTAyYjI2
YmM2NWZmMDYzNjQzYzA3ZTY3NTY5ZWJmODNiYjk4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0yNDE2LDMyICsyNDE2LDE5IEBAIHN0
YXRpYyB2b2lkIGNvbnZlcnRBbmRBZGRIaWdobGlnaHQoVmVjdG9yPFJlZjxXZWJLaXQ6OlNoYXJl
ZE1lbW9yeT4+JiBidWZmZXJzLCBOCiAgICAgICAgIF9wYWdlLT5zd2l0Y2hGcm9tU3RhdGljRm9u
dFJlZ2lzdHJ5VG9Vc2VyRm9udFJlZ2lzdHJ5KCk7CiB9CiAKLS0gKHZvaWQpX2FwcEJvdW5kTmF2
aWdhdGlvbkRhdGFGb3JEb21haW46KE5TU3RyaW5nICopZG9tYWluIGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkICheKShOU1N0cmluZyAqIGNvbnRleHQpKWNvbXBsZXRpb25IYW5kbGVyCistICh2b2lk
KV9kaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdDoodm9pZCAoXikoQk9PTCByZXN1bHQpKWNvbXBs
ZXRpb25IYW5kbGVyCiB7CiAgICAgVEhST1dfSUZfU1VTUEVOREVEOwotICAgIF9wYWdlLT5hcHBC
b3VuZE5hdmlnYXRpb25EYXRhKFtyZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChkb21haW4pLCBjb21wbGV0aW9uSGFu
ZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChhdXRvJiYgYXBwQm91bmRE
YXRhKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCFhcHBCb3VuZERhdGEuY29udGV4dERhdGEuY29u
dGFpbnMocmVnaXN0cmFibGVEb21haW4pKSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihuaWwpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoYXBwQm91bmREYXRhLmNvbnRleHREYXRhLmdldChyZWdpc3RyYWJsZURvbWFp
bikuc3RyaW5nKCkpOwotICAgIH0pOwotfQotCi0tICh2b2lkKV9kaWRMb2FkQXBwQm91bmRSZXF1
ZXN0Oih2b2lkICheKShCT09MIHJlc3VsdCkpY29tcGxldGlvbkhhbmRsZXIKLXsKLSAgICBUSFJP
V19JRl9TVVNQRU5ERUQ7Ci0gICAgX3BhZ2UtPmFwcEJvdW5kTmF2aWdhdGlvbkRhdGEoW2NvbXBs
ZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8mJiBh
cHBCb3VuZERhdGEpIG11dGFibGUgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhcHBCb3Vu
ZERhdGEuaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZyk7CisgICAgX3BhZ2UtPmFwcFBy
aXZhY3lSZXBvcnRUZXN0aW5nRGF0YShbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIo
Y29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byYmIGFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSkg
bXV0YWJsZSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGFwcFByaXZhY3lSZXBvcnRUZXN0
aW5nRGF0YS5oYXNMb2FkZWRBcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZyk7CiAgICAgfSk7CiB9
CiAKLS0gKHZvaWQpX2RpZExvYWROb25BcHBCb3VuZFJlcXVlc3Q6KHZvaWQgKF4pKEJPT0wgcmVz
dWx0KSljb21wbGV0aW9uSGFuZGxlcgorLSAodm9pZClfZGlkTG9hZE5vbkFwcEluaXRpYXRlZFJl
cXVlc3Q6KHZvaWQgKF4pKEJPT0wgcmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcgogewogICAgIFRI
Uk9XX0lGX1NVU1BFTkRFRDsKLSAgICBfcGFnZS0+YXBwQm91bmROYXZpZ2F0aW9uRGF0YShbY29t
cGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byYm
IGFwcEJvdW5kRGF0YSkgbXV0YWJsZSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGFwcEJv
dW5kRGF0YS5oYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nKTsKKyAgICBfcGFnZS0+
YXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9j
a1B0cihjb21wbGV0aW9uSGFuZGxlcildIChhdXRvJiYgYXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdE
YXRhKSBtdXRhYmxlIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYXBwUHJpdmFjeVJlcG9y
dFRlc3RpbmdEYXRhLmhhc0xvYWRlZE5vbkFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nKTsKICAg
ICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdQcml2YXRlLmgKaW5kZXggMmUzZTk0NmZmNzA0NjBmMjY2M2E2ODE1Mjg1ZDY3OWE1
MWM2YjkzNS4uZTJlZWM2NmMyYWFmN2FkZDIzMDkyYmNiZTQ2NmQ1YzgxZTFhMWI5OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0
ZS5oCkBAIC00MDYsOSArNDA2LDggQEAgZm9yIHRoaXMgcHJvcGVydHkuCiAqLwogLSAodm9pZClf
c3dpdGNoRnJvbVN0YXRpY0ZvbnRSZWdpc3RyeVRvVXNlckZvbnRSZWdpc3RyeSBXS19BUElfQVZB
SUxBQkxFKG1hY29zKDEyLjApKTsKIAotLSAodm9pZClfYXBwQm91bmROYXZpZ2F0aW9uRGF0YUZv
ckRvbWFpbjooTlNTdHJpbmcgKilkb21haW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5T
U3RyaW5nICogY29udGV4dCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cygxMi4wKSwgaW9zKDE1LjApKTsKLS0gKHZvaWQpX2RpZExvYWRBcHBCb3VuZFJlcXVlc3Q6KHZv
aWQgKF4pKEJPT0wgcmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcjsKLS0gKHZvaWQpX2RpZExvYWRO
b25BcHBCb3VuZFJlcXVlc3Q6KHZvaWQgKF4pKEJPT0wgcmVzdWx0KSljb21wbGV0aW9uSGFuZGxl
cjsKKy0gKHZvaWQpX2RpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0Oih2b2lkICheKShCT09MIHJl
c3VsdCkpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKV9kaWRMb2FkTm9uQXBwSW5pdGlhdGVk
UmVxdWVzdDoodm9pZCAoXikoQk9PTCByZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyOwogCiAtICh2
b2lkKV9zdXNwZW5kUGFnZToodm9pZCAoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcygxMi4wKSwgaW9zKDE1LjApKTsKIC0gKHZvaWQpX3Jlc3VtZVBhZ2U6
KHZvaWQgKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
MTIuMCksIGlvcygxNS4wKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oCmluZGV4IGMzMDVm
YWY0M2Q0NTE3NDRkMjI3MTU3M2VmZTk5ODQ0MTU2NGViYTguLjQwODc0ODQ2NmVlYmM5ZDI2Mjk4
YzVlNDIyOGFmNGNkOGJlNjcyZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oCkBAIC0z
NCw5ICszNCw5IEBAIHR5cGVkZWYgZW51bSB7CiAgICAgV0tXZWJWaWV3QXVkaW9Sb3V0aW5nQXJi
aXRyYXRpb25TdGF0dXNBY3RpdmUsCiB9IFdLV2ViVmlld0F1ZGlvUm91dGluZ0FyYml0cmF0aW9u
U3RhdHVzOwogCi1zdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSB7Ci0gICAg
Qk9PTCBoYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nOwotICAgIEJPT0wgaGFzTG9hZGVk
Tm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZzsKK3N0cnVjdCBXS0FwcFByaXZhY3lSZXBvcnRUZXN0
aW5nRGF0YSB7CisgICAgQk9PTCBoYXNMb2FkZWRBcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZzsK
KyAgICBCT09MIGhhc0xvYWRlZE5vbkFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nOwogICAgIEJP
T0wgZGlkUGVyZm9ybVNvZnRVcGRhdGU7CiB9OwogCkBAIC0xMDIsOSArMTAyLDkgQEAgc3RydWN0
IFdLQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEgewogLSAodm9pZClfc2V0UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZzooTlNV
UkwgKil1cmwgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikodm9pZCkpY29tcGxldGlvbkhhbmRs
ZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMi4wKSwgaW9zKDE1LjApKTsKIC0gKHZvaWQpX3Nl
dFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25Ub2tlblNpZ25hdHVyZVVSTEZvclRl
c3Rpbmc6KE5TVVJMICopdXJsIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKHZvaWQpKWNvbXBs
ZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCksIGlvcygxNS4wKSk7CiAK
LS0gKHZvaWQpX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQ6KHZvaWQoXikoQk9PTCkpY29tcGxl
dGlvbkhhbmRsZXI7Ci0tICh2b2lkKV9hcHBCb3VuZE5hdmlnYXRpb25EYXRhOih2b2lkKF4pKHN0
cnVjdCBXS0FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhIGRhdGEpKWNvbXBsZXRpb25IYW5k
bGVyOwotLSAodm9pZClfY2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhOih2b2lkKF4pKHZvaWQp
KWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClfbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0
ZWQ6KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKV9hcHBQcml2YWN5
UmVwb3J0VGVzdGluZ0RhdGE6KHZvaWQoXikoc3RydWN0IFdLQXBwUHJpdmFjeVJlcG9ydFRlc3Rp
bmdEYXRhIGRhdGEpKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClfY2xlYXJBcHBQcml2YWN5
UmVwb3J0VGVzdGluZ0RhdGE6KHZvaWQoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXI7CiAKIC0g
KHZvaWQpX2NyZWF0ZU1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yRm9yVGVzdGluZzooaWQgPF9XS01l
ZGlhU2Vzc2lvbkNvb3JkaW5hdG9yPilwcml2YXRlQ29vcmRpbmF0b3IgY29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdUZXN0aW5nLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1Rlc3RpbmcubW0KaW5kZXggNjk0
YjU0OGYwYjdjM2UwZGM0NjY3MDRjZjJhN2IwODkxNzU2MmIzMS4uMDQ0ZTkyY2FjM2FjZDA4ZjY0
YjcxNjRiNTY3NDJmNDhhMzM1ODY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlld1Rlc3RpbmcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1Rlc3RpbmcubW0KQEAgLTM2NSwyMyArMzY1LDIzIEBA
CiAjZW5kaWYKIH0KIAotLSAodm9pZClfbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDoodm9pZChe
KShCT09MKSljb21wbGV0aW9uSGFuZGxlcgorLSAodm9pZClfbGFzdE5hdmlnYXRpb25XYXNBcHBJ
bml0aWF0ZWQ6KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIKIHsKLSAgICBfcGFnZS0+
bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZChbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQ
dHIoY29tcGxldGlvbkhhbmRsZXIpXSAoYm9vbCBpc0FwcEJvdW5kKSB7Ci0gICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGlzQXBwQm91bmQpOworICAgIF9wYWdlLT5sYXN0TmF2aWdhdGlvbldhc0Fw
cEluaXRpYXRlZChbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhh
bmRsZXIpXSAoYm9vbCBpc0FwcEluaXRpYXRlZCkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihpc0FwcEluaXRpYXRlZCk7CiAgICAgfSk7CiB9CiAKLS0gKHZvaWQpX2FwcEJvdW5kTmF2aWdh
dGlvbkRhdGE6KHZvaWQoXikoc3RydWN0IFdLQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEg
ZGF0YSkpY29tcGxldGlvbkhhbmRsZXIKKy0gKHZvaWQpX2FwcFByaXZhY3lSZXBvcnRUZXN0aW5n
RGF0YToodm9pZCheKShzdHJ1Y3QgV0tBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEgZGF0YSkp
Y29tcGxldGlvbkhhbmRsZXIKIHsKLSAgICBfcGFnZS0+YXBwQm91bmROYXZpZ2F0aW9uRGF0YShb
Y29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0
byYmIGFwcEJvdW5kRGF0YSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IGFwcEJvdW5k
RGF0YS5oYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nLCBhcHBCb3VuZERhdGEuaGFzTG9h
ZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVzdGluZywgYXBwQm91bmREYXRhLmRpZFBlcmZvcm1Tb2Z0
VXBkYXRlIH0pOworICAgIF9wYWdlLT5hcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoW2NvbXBs
ZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8mJiBh
cHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
eyBhcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEuaGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVz
dFRlc3RpbmcsIGFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YS5oYXNMb2FkZWROb25BcHBJbml0
aWF0ZWRSZXF1ZXN0VGVzdGluZywgYXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhLmRpZFBlcmZv
cm1Tb2Z0VXBkYXRlIH0pOwogICAgIH0pOwogfQogCi0tICh2b2lkKV9jbGVhckFwcEJvdW5kTmF2
aWdhdGlvbkRhdGE6KHZvaWQoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKKy0gKHZvaWQpX2Ns
ZWFyQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhOih2b2lkKF4pKHZvaWQpKWNvbXBsZXRpb25I
YW5kbGVyCiB7Ci0gICAgX3BhZ2UtPmNsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YShbY29tcGxl
dGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSB7CisgICAgX3Bh
Z2UtPmNsZWFyQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhKFtjb21wbGV0aW9uSGFuZGxlciA9
IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIHsKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUGFnZVByb3h5Q29jb2EubW0KaW5kZXggY2ZhNTY4NTNmZTk5MTE2ZmJmZWZkNWUzMzkz
M2M4MDk2NzcwM2RlMS4uOWIwMWY0MDIyNzE1MjEwMmU0N2U2Y2MyNWRiZGIyNjFkMTc3YmY5YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29j
b2EubW0KQEAgLTY1OSwyMCArNjU5LDE4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0QWN0
aXZlTm93UGxheWluZ1Nlc3Npb25JbmZvKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vCiAgICAg
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0QWN0aXZlTm93UGxh
eWluZ1Nlc3Npb25JbmZvKCksIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAotdm9pZCBXZWJQYWdl
UHJveHk6OnNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KQordm9pZCBXZWJQYWdlUHJveHk6OnNldExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVk
KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICNpZiBFTkFCTEUoQVBQX1BSSVZBQ1lfUkVQ
T1JUKQotICAgIGF1dG8gKm5zUmVxdWVzdCA9IHJlcXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6
OkhUVFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KTsKLSAgICBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgIHJlcXVlc3Quc2V0SXNBcHBCb3VuZCgh
bnNSZXF1ZXN0Ll9pc05vbkFwcEluaXRpYXRlZCk7Ci0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfRU5ECisgICAgYXV0byBpc0FwcEluaXRpYXRlZCA9IHJlcXVlc3QubnNVUkxSZXF1
ZXN0KFdlYkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KS5h
dHRyaWJ1dGlvbiA9PSBOU1VSTFJlcXVlc3RBdHRyaWJ1dGlvbkRldmVsb3BlcjsKKyAgICByZXF1
ZXN0LnNldElzQXBwSW5pdGlhdGVkKGlzQXBwSW5pdGlhdGVkKTsKKyAgICBtX2xhc3ROYXZpZ2F0
aW9uV2FzQXBwSW5pdGlhdGVkID0gaXNBcHBJbml0aWF0ZWQ7CiAjZW5kaWYKLSAgICBtX2xhc3RO
YXZpZ2F0aW9uV2FzQXBwQm91bmQgPSByZXF1ZXN0LmlzQXBwQm91bmQoKTsKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6Omxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGFnZVByb3h5OjpsYXN0
TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
V2ViUGFnZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCgpLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpMYXN0
TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpncmFudEFjY2Vzc1RvQXNzZXRTZXJ2aWNlcygpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcAppbmRleCAxNzBjYWY4MWQ0NTkzZWQ4ZTYwODNmMGExMjlmMzg0NzUyYzZhOTlk
Li41ZmY1YTUxODFkYTk5ZTFmNjRjZDAxYjYwY2NhMDY5YmNjNDRjZmU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKQEAgLTE0ODcsMTEgKzE0ODcsMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXRM
b2NhbFN0b3JhZ2VEZXRhaWxzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGwKICAgICBz
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpHZXRMb2NhbFN0b3Jh
Z2VPcmlnaW5EZXRhaWxzKHNlc3Npb25JRCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
IH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIHVzZXJBZ2VudCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+
IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQg
bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cHJl
Y29ubmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmll
ciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBjb25z
dCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFdlYkNvcmU6OlN0b3JlZENyZWRl
bnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBMYXN0
TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCkK
IHsKICAgICBpZiAoIXVybC5pc1ZhbGlkKCkgfHwgIXVybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5
KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6
UHJlY29ubmVjdFRvKHNlc3Npb25JRCwgd2ViUGFnZVByb3h5SUQsIHdlYlBhZ2VJRCwgdXJsLCB1
c2VyQWdlbnQsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluLCBsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKSwgMCk7CisgICAgc2VuZChNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3M6OlByZWNvbm5lY3RUbyhzZXNzaW9uSUQsIHdlYlBhZ2VQcm94eUlE
LCB3ZWJQYWdlSUQsIHVybCwgdXNlckFnZW50LCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgaXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQp
LCAwKTsKIH0KIAogc3RhdGljIGJvb2wgYW55UHJvY2Vzc1Bvb2xIYXNGb3JlZ3JvdW5kV2ViUHJv
Y2Vzc2VzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggZDVmMTg2NTkxOWU1Yjg5ZWJmM2Q1NGNjODg2ODY0ODg0
YjA2ZjlmMi4uYjYwOWYzNWY2YjU5YmMzZWZmMDQxNDIwNGI2MzM2ZDMwY2ExNDY1MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJBcHBQ
cml2YWN5UmVwb3J0LmgiCiAjaW5jbHVkZSAiQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgiCiAjaW5j
bHVkZSAiQ2FsbGJhY2tJRC5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdl
c1JlcGxpZXMuaCIKQEAgLTEyOCw3ICsxMjksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdldExv
Y2FsU3RvcmFnZURldGFpbHMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
VmVjdG9yPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlscz4mJik+JiYp
OwogCi0gICAgdm9pZCBwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlk
ZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBVUkwmLCBjb25zdCBTdHJp
bmcmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc3RkOjpvcHRpb25hbDxOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQpOworICAg
IHZvaWQgcHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVy
LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgV2Vi
Q29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4+LCBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk7CiAKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIHZvaWQgY2xlYXJQcmV2YWxlbnRS
ZXNvdXJjZShQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKaW5kZXggMGYwY2I2ZGEyMjQ4NGUwZGVjZmMyOTI5MzIxNWI1NTgzMzY2MzEwNC4uZTFl
NmFlOGM2N2EyMzIwZDE3ZjcwNTJkODVlNjQ3OGUzNzQ5MjBiNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMzM5LDcgKzEzMzksNyBAQCBSZWZQdHI8QVBJ
OjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIFNobwogICAgICAgICBuYXZpZ2F0aW9uLT5zZXRDbGllbnROYXZpZ2F0aW9uQWN0
aXZpdHkocHJvY2VzcygpLnRocm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eSgiQ2xpZW50IG5h
dmlnYXRpb24iX3MpKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHNldExhc3ROYXZpZ2F0
aW9uV2FzQXBwQm91bmQocmVxdWVzdCk7CisgICAgc2V0TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0
aWF0ZWQocmVxdWVzdCk7CiAjZW5kaWYKIAogICAgIGxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25T
aGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIG5hdmlnYXRpb24uZ2V0KCks
IFdURk1vdmUocmVxdWVzdCksIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHVzZXJEYXRh
LCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluKCkpOwpAQCAtMTUwMCw3ICsxNTAwLDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4g
V2ViUGFnZVByb3h5Ojpsb2FkU2ltdWxhdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXUK
ICAgICBXRUJQQUdFUFJPWFlfUkVMRUFTRV9MT0coTG9hZGluZywgImxvYWRTaW11bGF0ZWRSZXF1
ZXN0OiIpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgc2V0TGFzdE5hdmlnYXRpb25XYXNB
cHBCb3VuZChzaW11bGF0ZWRSZXF1ZXN0KTsKKyAgICBzZXRMYXN0TmF2aWdhdGlvbldhc0FwcElu
aXRpYXRlZChzaW11bGF0ZWRSZXF1ZXN0KTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUF9CT1VO
RF9ET01BSU5TKQpAQCAtNDUzOSw3ICs0NTM5LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnByZWNv
bm5lY3RUbyhjb25zdCBVUkwmIHVybCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBzdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSA9IG1fY2FuVXNlQ3JlZGVudGlhbFN0b3JhZ2UgPyBXZWJDb3Jl
OjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlIDogV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3k6OkRvTm90VXNlOwotICAgIHdlYnNpdGVEYXRhU3RvcmUoKS5uZXR3b3JrUHJvY2Vz
cygpLnByZWNvbm5lY3RUbyhzZXNzaW9uSUQoKSwgaWRlbnRpZmllcigpLCB3ZWJQYWdlSUQoKSwg
dXJsLCB1c2VyQWdlbnQoKSwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4oKSwgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kID8gTGFzdE5hdmln
YXRpb25XYXNBcHBCb3VuZDo6WWVzIDogTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDo6Tm8pOwor
CisgICAgd2Vic2l0ZURhdGFTdG9yZSgpLm5ldHdvcmtQcm9jZXNzKCkucHJlY29ubmVjdFRvKHNl
c3Npb25JRCgpLCBpZGVudGlmaWVyKCksIHdlYlBhZ2VJRCgpLCB1cmwsIHVzZXJBZ2VudCgpLCBz
dG9yZWRDcmVkZW50aWFsc1BvbGljeSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBt
X2xhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkID8gTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0
aWF0ZWQ6OlllcyA6IExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpObyk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXRDYW5Vc2VDcmVkZW50aWFsU3RvcmFnZShib29sIGNhblVzZUNy
ZWRlbnRpYWxTdG9yYWdlKQpAQCAtODIwMyw3ICs4MjA0LDcgQEAgV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyhXZWJQcm9jZXNzUHJveHkm
IHByb2MKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgcGFyYW1ldGVycy5saW1p
dHNOYXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zID0gbV9saW1pdHNOYXZpZ2F0aW9uc1RvQXBw
Qm91bmREb21haW5zOwogI2VuZGlmCi0gICAgcGFyYW1ldGVycy5sYXN0TmF2aWdhdGlvbldhc0Fw
cEJvdW5kID0gbV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOworICAgIHBhcmFtZXRlcnMubGFz
dE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgPSBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlh
dGVkOwogICAgIHBhcmFtZXRlcnMuc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tpbmcg
PSBtX2NvbmZpZ3VyYXRpb24tPnNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKCk7
CiAgICAgcGFyYW1ldGVycy5jYW5Vc2VDcmVkZW50aWFsU3RvcmFnZSA9IG1fY2FuVXNlQ3JlZGVu
dGlhbFN0b3JhZ2U7CiAKQEAgLTEwNzM1LDE0ICsxMDczNiwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6Y3JlYXRlTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3IoUmVmPE1lZGlhU2Vzc2lvbkNvb3JkaW5h
dG9yUHJveAogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NPQSkKLXZvaWQgV2ViUGFnZVByb3h5
OjphcHBCb3VuZE5hdmlnYXRpb25EYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgQXBw
Qm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
V2ViUGFnZVByb3h5OjphcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKLSAgICB3ZWJzaXRlRGF0YVN0b3JlKCkubmV0d29ya1Byb2Nlc3MoKS5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpBcHBCb3VuZE5hdmlnYXRp
b25EYXRhKG1fd2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCkpLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CisgICAgd2Vic2l0ZURhdGFTdG9yZSgpLm5ldHdvcmtQcm9jZXNzKCkuc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6QXBwUHJpdmFjeVJlcG9y
dFRlc3RpbmdEYXRhKG1fd2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCkpLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpjbGVhckFwcEJvdW5k
TmF2aWdhdGlvbkRhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBXZWJQYWdlUHJveHk6OmNsZWFyQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRh
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICB3
ZWJzaXRlRGF0YVN0b3JlKCkubmV0d29ya1Byb2Nlc3MoKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGEobV93ZWJz
aXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
KyAgICB3ZWJzaXRlRGF0YVN0b3JlKCkubmV0d29ya1Byb2Nlc3MoKS5zZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDbGVhckFwcFByaXZhY3lSZXBvcnRUZXN0aW5n
RGF0YShtX3dlYnNpdGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpKSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKaW5kZXggYTk2NGU2Mjc2M2ExZDk2NGVlZTZmNDY0YWEyZTNhMDZjMDYzNzY0MC4uN2I0MDA1
NmYxODVjYTgyMDBhOGQ1M2MzOTMxYTI5YWE0MjhhMDVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKQEAgLTM3Nyw3ICszNzcsNyBAQCBjbGFzcyBXZWJXaGVlbEV2ZW50
OwogY2xhc3MgV2ViV2hlZWxFdmVudENvYWxlc2NlcjsKIGNsYXNzIFdlYnNpdGVEYXRhU3RvcmU7
CiAKLXN0cnVjdCBBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YTsKK3N0cnVjdCBBcHBQcml2
YWN5UmVwb3J0VGVzdGluZ0RhdGE7CiBzdHJ1Y3QgRGF0YURldGVjdGlvblJlc3VsdDsKIHN0cnVj
dCBEb2N1bWVudEVkaXRpbmdDb250ZXh0Owogc3RydWN0IERvY3VtZW50RWRpdGluZ0NvbnRleHRS
ZXF1ZXN0OwpAQCAtMTk0MiwxMCArMTk0MiwxMCBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQotICAgIHZvaWQgc2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZChXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKLSAgICB2b2lkIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91
bmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBhcHBCb3VuZE5h
dmlnYXRpb25EYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgQXBwQm91bmROYXZpZ2F0
aW9uVGVzdGluZ0RhdGEmKT4mJik7Ci0gICAgdm9pZCBjbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRh
dGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldExhc3ROYXZpZ2F0
aW9uV2FzQXBwSW5pdGlhdGVkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworICAgIHZvaWQg
bGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJik7CisgICAgdm9pZCBhcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEmKT4mJik7CisgICAg
dm9pZCBjbGVhckFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogCiAgICAgTlNEaWN0aW9uYXJ5ICpjb250ZW50c09mVXNlckludGVyZmFjZUl0
ZW0oTlNTdHJpbmcgKnVzZXJJbnRlcmZhY2VJdGVtKTsKIApAQCAtMzA1Niw3ICszMDU2LDcgQEAg
cHJpdmF0ZToKIAogICAgIHNpemVfdCBtX3N1c3BlbmRNZWRpYVBsYXliYWNrQ291bnRlciB7IDAg
fTsKIAotICAgIGJvb2wgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kIHsgZmFsc2UgfTsKKyAg
ICBib29sIG1fbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgeyB0cnVlIH07CiAgICAgYm9v
bCBtX2lzUnVubmluZ01vZGFsSmF2YVNjcmlwdERpYWxvZyB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X2lzU3VzcGVuZGVkIHsgZmFsc2UgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzIzNTY0NzY2ZTIzMDFmNDE5NmZlMmJmMjAyOTY1
ZDAyNzBiOGYzMi4uZTdjMTkwOTY2NGYwOTM4MTkzMDYyYzg5ZDRiNmUzYzExYjE0OTUxOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05
ODgsNiArOTg4LDcgQEAKIAkJNDZERjA2M0MxRjM5MDVGODAwMTk4MEJCIC8qIE5ldHdvcmtDT1JT
UHJlZmxpZ2h0Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDZERjA2M0ExRjM5MDVFNTAwMTk4MEJCIC8qIE5ldHdvcmtDT1JTUHJlZmxpZ2h0
Q2hlY2tlci5oICovOyB9OwogCQk0NkYzOEU4QzI0MTZFNjczMDA1OTM3NUEgLyogUnVubmluZ0Jv
YXJkU2VydmljZXNTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2RjM4RThCMjQxNkU2NkQwMDU5Mzc1QSAvKiBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQ
SS5oICovOyB9OwogCQk0NkY5QjI2MzIzNTI2RUYzMDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRD
YWNoZUVudHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NkY5QjI2MjIzNTI2RUQwMDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5Lmgg
Ki87IH07CisJCTQ5MzEwMkJEMjY4M0YzRDAwMDJCQjg4NSAvKiBBcHBQcml2YWN5UmVwb3J0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTMxMDJCQzI2
ODNGM0E1MDAyQkI4ODUgLyogQXBwUHJpdmFjeVJlcG9ydC5oICovOyB9OwogCQk0OTczREY0ODI0
MjI5NDFGMDBFNEMyNkEgLyogTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5NzNERjQ3MjQyMjk0MUYwMEU0
QzI2QSAvKiBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oICovOyB9OwogCQk0OTkwMDAyMTI0
RDI0MjlDMDAwNDlDQjQgLyogV0tSZW5kZXJMYXllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDk5MDAwMUYyNEQyNDI5QzAwMDQ5Q0I0IC8qIFdLUmVu
ZGVyTGF5ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0OTkwMDAyNDI0RDI0QzI5MDAwNDlDQjQgLyogV0tSZW5kZXJPYmplY3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5OTAwMDIzMjREMjRDMUMw
MDA0OUNCNCAvKiBXS1JlbmRlck9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0zOTM0LDYgKzM5MzUsNyBAQAogCQk0NkRGMDYzQTFGMzkw
NUU1MDAxOTgwQkIgLyogTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkYzOEU4QjI0MTZFNjZEMDA1OTM3NUEgLyogUnVu
bmluZ0JvYXJkU2VydmljZXNTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UnVubmluZ0JvYXJkU2VydmljZXNTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDZGOUIyNjIyMzUyNkVEMDAwNkZFNUZBIC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDkzMTAyQkMyNjgzRjNBNTAwMkJCODg1
IC8qIEFwcFByaXZhY3lSZXBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXBwUHJpdmFjeVJlcG9ydC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTczREY0NzI0MjI5NDFGMDBFNEMyNkEg
LyogTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDk5MDAw
MUUyNEQyNDI5QzAwMDQ5Q0I0IC8qIFdLUmVuZGVyTGF5ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV0tSZW5kZXJMYXllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5OTAw
MDFGMjREMjQyOUMwMDA0OUNCNCAvKiBXS1JlbmRlckxheWVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdL
UmVuZGVyTGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY3MDksNiArNjcx
MSw3IEBACiAJCQkJQkMzMjlEOTkxNkFDQ0U5OTAwMzE2REUyIC8qIEFQSVdlYkFyY2hpdmUubW0g
Ki8sCiAJCQkJQkMzMjlEOUYxNkFDRDQ3ODAwMzE2REUyIC8qIEFQSVdlYkFyY2hpdmVSZXNvdXJj
ZS5oICovLAogCQkJCUJDMzI5RDlFMTZBQ0Q0NzgwMDMxNkRFMiAvKiBBUElXZWJBcmNoaXZlUmVz
b3VyY2UubW0gKi8sCisJCQkJNDkzMTAyQkMyNjgzRjNBNTAwMkJCODg1IC8qIEFwcFByaXZhY3lS
ZXBvcnQuaCAqLywKIAkJCQk1MTVFNzcyNTE4M0RENkY2MDAwNzIwM0YgLyogQXN5bmNSZXF1ZXN0
LmNwcCAqLywKIAkJCQk1MTVFNzcyNjE4M0RENkY2MDAwNzIwM0YgLyogQXN5bmNSZXF1ZXN0Lmgg
Ki8sCiAJCQkJMUEyRDk1NkUxMjg0ODU2NDAwMUVCOTYyIC8qIEF1eGlsaWFyeVByb2Nlc3MuY3Bw
ICovLApAQCAtMTE4OTMsNiArMTE4OTYsNyBAQAogCQkJCUY0OEQyQTg1MjE1ODNBN0UwMEM2NzUy
QiAvKiBBcHBLaXRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0RUM5NEUzMjM1NkNDNTcwMDBC
QjYxNCAvKiBBcHBsaWNhdGlvblNlcnZpY2VzU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUQ0
QzE5MzFCMzlGMzMyMDBBQkMyOEUgLyogQXBwbGljYXRpb25TdGF0ZVRyYWNrZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTQ5MzEwMkJEMjY4M0YzRDAwMDJCQjg4NSAvKiBBcHBQcml2YWN5UmVwb3J0
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUVGRDI3OTExRDE2QzgxMDA4MjE5RDMgLyogQXJndW1l
bnRDb2Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFRkQyRjcxMUQxODA3QjAwODIxOUQzIC8q
IEFyZ3VtZW50Q29kZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUFGMEM0QTEyQjE2MzM0MDA4
RTQ5RTIgLyogQXJndW1lbnRDb2RlcnNDRi5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKaW5k
ZXggYzQyZDJjMDBmNzk4MmVhM2ZlMTk0MDFjZDA3NmMyNGEwYjY0OWViZi4uNjBlNmEyYjQ4MGZj
YWQxMTBmM2RhZTg0YjA1NDk1NjUzNTc2ZjdlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApAQCAtMTA3LDcgKzEw
Nyw3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNvdXJjZShGcmFtZSYgZnJhbWUs
IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgUmVzCiAgICAgaWYgKHJlc291cmNlLnR5cGUoKSAh
PSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6TWFpblJlc291cmNlIHx8ICFmcmFtZS5pc01haW5GcmFt
ZSgpKSB7CiAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IGZyYW1lLm1haW5GcmFtZSgpLmRv
Y3VtZW50KCkpIHsKICAgICAgICAgICAgIGlmIChkb2N1bWVudCAmJiBkb2N1bWVudC0+bG9hZGVy
KCkpCi0gICAgICAgICAgICAgICAgcmVxdWVzdC5zZXRJc0FwcEJvdW5kKGRvY3VtZW50LT5sb2Fk
ZXIoKS0+bGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCgpKTsKKyAgICAgICAgICAgICAgICByZXF1
ZXN0LnNldElzQXBwSW5pdGlhdGVkKGRvY3VtZW50LT5sb2FkZXIoKS0+bGFzdE5hdmlnYXRpb25X
YXNBcHBJbml0aWF0ZWQoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTc2Nyw3ICs3NjcsNyBA
QCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpwcmVjb25uZWN0VG8oV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgV2ViUGFnZQogICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IHdlYlBh
Z2UubWFpbkZyYW1lKCktPmRvY3VtZW50KCkpIHsKICAgICAgICAgcmVxdWVzdC5zZXRGaXJzdFBh
cnR5Rm9yQ29va2llcyhkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSk7CiAgICAgICAg
IGlmIChhdXRvKiBsb2FkZXIgPSBkb2N1bWVudC0+bG9hZGVyKCkpCi0gICAgICAgICAgICByZXF1
ZXN0LnNldElzQXBwQm91bmQobG9hZGVyLT5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKCkpOwor
ICAgICAgICAgICAgcmVxdWVzdC5zZXRJc0FwcEluaXRpYXRlZChsb2FkZXItPmxhc3ROYXZpZ2F0
aW9uV2FzQXBwSW5pdGlhdGVkKCkpOwogICAgIH0KIAogICAgIHN0ZDo6b3B0aW9uYWw8dWludDY0
X3Q+IHByZWNvbm5lY3Rpb25JZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24uY3BwCmluZGV4IDYzODQxMTdjZDVlMTU1MTZkMDk4Y2VhYjA2ZDNjNTQ5YjdkMWM4ZGIuLmY5
OTNlZmMxZWEzYTcyOTUwZjI3YjNjMDljMTYyNWQxMWEyYjY0ZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5jcHAKQEAgLTEzNSwxMCArMTM1LDEwIEBAIHZvaWQgV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb246OnVwZGF0ZVByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJl
ZmVyZW5jZXNTCiAgICAgc2V0U2hvdWxkVXNlU2hvcnRUaW1lb3V0KHN0b3JlLmdldEJvb2xWYWx1
ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6c2hvdWxkVXNlU2VydmljZVdvcmtlclNob3J0VGlt
ZW91dEtleSgpKSk7CiB9CiAKLXZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnVw
ZGF0ZUFwcEJvdW5kVmFsdWUoU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIFdlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgbGFzdE5hdmlnYXRp
b25XYXNBcHBCb3VuZCkKK3ZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnVwZGF0
ZUFwcEluaXRpYXRlZFZhbHVlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCBsYXN0TmF2
aWdhdGlvbldhc0FwcEluaXRpYXRlZCkKIHsKICAgICBpZiAoYXV0byogc2VydmljZVdvcmtlclRo
cmVhZFByb3h5ID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlclRo
cmVhZFByb3h5KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSkKLSAgICAgICAgc2VydmljZVdvcmtl
clRocmVhZFByb3h5LT5zZXRMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKGxhc3ROYXZpZ2F0aW9u
V2FzQXBwQm91bmQgPT0gV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDo6WWVzKTsK
KyAgICAgICAgc2VydmljZVdvcmtlclRocmVhZFByb3h5LT5zZXRMYXN0TmF2aWdhdGlvbldhc0Fw
cEluaXRpYXRlZChsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCA9PSBXZWJDb3JlOjpMYXN0
TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDo6WWVzKTsKIH0KIAogdm9pZCBXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlckNvbnRl
eHREYXRhJiYgZGF0YSwgU3RyaW5nJiYgdXNlckFnZW50KQpAQCAtMjM0LDcgKzIzNCw3IEBAIHZv
aWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnN0YXJ0RmV0Y2goU1dTZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciBzZXJ2CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHktPnNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQocmVxdWVz
dC5pc0FwcEJvdW5kKCkpOworICAgIHNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS0+c2V0TGFzdE5h
dmlnYXRpb25XYXNBcHBJbml0aWF0ZWQocmVxdWVzdC5pc0FwcEluaXRpYXRlZCgpKTsKIAogICAg
IGlmICghaXNWYWxpZEZldGNoKHJlcXVlc3QsIG9wdGlvbnMsIHNlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eS0+c2NyaXB0VVJMKCksIHJlZmVycmVyKSkgewogICAgICAgICBtX2Nvbm5lY3Rpb25Ub05l
dHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRO
b3RIYW5kbGUgeyB9LCBmZXRjaElkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmgKaW5kZXggMzMxNDMzOWUwOTNiYzY1YzcyZGJhNTJjZWFkYWFjNzQ1MmYxY2RjOS4uZTAy
MDU3ZTgxMWMxZTg2ZDJmNWVlZDI3NGUzMjBhY2Q1YmZmNzMyYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5oCkBAIC04Niw3ICs4Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXJ2
aWNlV29ya2VyU3RhcnRlZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JE
YXRhSWRlbnRpZmllcj4sIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIGRv
ZXNIYW5kbGVGZXRjaCkgZmluYWw7CiAgICAgdm9pZCBzZXJ2aWNlV29ya2VyRmFpbGVkVG9TdGFy
dChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4s
IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGV4Y2VwdGlv
bk1lc3NhZ2UpIGZpbmFsOwogICAgIHZvaWQgaW5zdGFsbFNlcnZpY2VXb3JrZXIoV2ViQ29yZTo6
U2VydmljZVdvcmtlckNvbnRleHREYXRhJiYsIFN0cmluZyYmIHVzZXJBZ2VudCk7Ci0gICAgdm9p
ZCB1cGRhdGVBcHBCb3VuZFZhbHVlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBX
ZWJDb3JlOjpMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKTsKKyAgICB2b2lkIHVwZGF0ZUFwcElu
aXRpYXRlZFZhbHVlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpM
YXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCk7CiAgICAgdm9pZCBzdGFydEZldGNoKFdlYkNv
cmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYm
LCBTdHJpbmcmJiByZWZlcnJlcik7CiAgICAgdm9pZCBjYW5jZWxGZXRjaChXZWJDb3JlOjpTV1Nl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyKTsKICAgICB2b2lkIGNvbnRpbnVlRGlkUmVjZWl2
ZUZldGNoUmVzcG9uc2UoV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2Vi
Q29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4
IGY2NjRhNGU5MTIyYzE1MWUyYzU2NzU1MDkwNWVjOTUwMjU3N2JiMWEuLjNlMjBkZTM1NGJjNDNk
ODRhYjQ5MDQyMzQ1Yzk3ZWI5MmVlZjNmNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0yNCw3ICsyNCw3IEBACiAKIG1lc3NhZ2VzIC0+
IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIE5vdFJlZkNvdW50ZWQgewogICAgIEluc3Rh
bGxTZXJ2aWNlV29ya2VyKHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEg
Y29udGV4dERhdGEsIFN0cmluZyB1c2VyQWdlbnQpCi0gICAgVXBkYXRlQXBwQm91bmRWYWx1ZShX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
ZW51bTpib29sIFdlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgbGFzdE5hdmlnYXRp
b25XYXNBcHBCb3VuZCkKKyAgICBVcGRhdGVBcHBJbml0aWF0ZWRWYWx1ZShXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgZW51bTpib29sIFdl
YkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIGxhc3ROYXZpZ2F0aW9uV2FzQXBw
SW5pdGlhdGVkKQogICAgIFN0YXJ0RmV0Y2goV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRp
ZmllciBmZXRjaElkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBz
dHJ1Y3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zIG9wdGlvbnMsIElQQzo6Rm9ybURhdGFSZWZlcmVu
Y2UgcmVxdWVzdEJvZHksIFN0cmluZyByZWZlcnJlcikKICAgICBDYW5jZWxGZXRjaChXZWJDb3Jl
OjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllcikKICAgICBDb250aW51
ZURpZFJlY2VpdmVGZXRjaFJlc3BvbnNlKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50
aWZpZXIgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZp
ZXIgZmV0Y2hJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXgg
NmM5MDRjOTg2MmRjZTkzOTI3M2UyNTA2M2YxYWM4M2NlNjU1OGNkMC4uNDBiZTYxYzIwZmNiOGQz
YWY3MTAzZmFjYzM3M2EyMGM5MTY2MzMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCkBAIC0yNDMsMTEgKzI0MywxMSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaFdpbGxTZW5kUmVxdWVzdChEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbgogICAgIC8v
IFRoZSBBUEkgY2FuIHJldHVybiBhIGNvbXBsZXRlbHkgbmV3IHJlcXVlc3QuIFdlIHNob3VsZCBl
bnN1cmUgdGhhdCBhdCBsZWFzdCB0aGUgcmVxdWVzdGVyCiAgICAgLy8gaXMga2VwdCwgc28gdGhh
dCBpZiB0aGlzIGlzIGEgbWFpbiByZXNvdXJjZSBsb2FkIGl0J3Mgc3RpbGwgY29uc2lkZXJlZCBh
cyBzdWNoLgogICAgIGF1dG8gcmVxdWVzdGVyID0gcmVxdWVzdC5yZXF1ZXN0ZXIoKTsKLSAgICBh
dXRvIGFwcEJvdW5kVmFsdWUgPSByZXF1ZXN0LmlzQXBwQm91bmQoKTsKKyAgICBhdXRvIGFwcElu
aXRpYXRlZFZhbHVlID0gcmVxdWVzdC5pc0FwcEluaXRpYXRlZCgpOwogICAgIHdlYlBhZ2UtPmlu
amVjdGVkQnVuZGxlUmVzb3VyY2VMb2FkQ2xpZW50KCkud2lsbFNlbmRSZXF1ZXN0Rm9yRnJhbWUo
KndlYlBhZ2UsIG1fZnJhbWUsIGlkZW50aWZpZXIsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2Up
OwogICAgIGlmICghcmVxdWVzdC5pc051bGwoKSkgewogICAgICAgICByZXF1ZXN0LnNldFJlcXVl
c3RlcihyZXF1ZXN0ZXIpOwotICAgICAgICByZXF1ZXN0LnNldElzQXBwQm91bmQoYXBwQm91bmRW
YWx1ZSk7CisgICAgICAgIHJlcXVlc3Quc2V0SXNBcHBJbml0aWF0ZWQoYXBwSW5pdGlhdGVkVmFs
dWUpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAppbmRleCBhZjkwNTQwODExN2JiZDYyMzkyMTJkMWQ5ZTE0YWEyYTk3ZjQxMTI5Li4z
MjU4OTRhNzNlZjk4Y2Y1MDAxMGQwODU3YTY2MmMzYTVhYjY0ZWU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNTM4LDcgKzUzOCw3IEBAIFdl
YlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzJiYgcGFyYW1ldGVycykKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAg
LCBtX2xpbWl0c05hdmlnYXRpb25zVG9BcHBCb3VuZERvbWFpbnMocGFyYW1ldGVycy5saW1pdHNO
YXZpZ2F0aW9uc1RvQXBwQm91bmREb21haW5zKQogI2VuZGlmCi0gICAgLCBtX2xhc3ROYXZpZ2F0
aW9uV2FzQXBwQm91bmQocGFyYW1ldGVycy5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKQorICAg
ICwgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZChwYXJhbWV0ZXJzLmxhc3ROYXZpZ2F0
aW9uV2FzQXBwSW5pdGlhdGVkKQogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKICAgICAsIG1f
YXBwSGlnaGxpZ2h0c1Zpc2libGUocGFyYW1ldGVycy5hcHBIaWdobGlnaHRzVmlzaWJsZSkKICNl
bmRpZgpAQCAtMTY3MCw3ICsxNjcwLDcgQEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybURpZFJlY2Vp
dmVMb2FkUGFyYW1ldGVycyhjb25zdCBMb2FkUGFyYW1ldGVycyYgbG9hZFBhcmFtZXQKIAogdm9p
ZCBXZWJQYWdlOjpsb2FkUmVxdWVzdChMb2FkUGFyYW1ldGVycyYmIGxvYWRQYXJhbWV0ZXJzKQog
ewotICAgIHNldExhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQobG9hZFBhcmFtZXRlcnMucmVxdWVz
dC5pc0FwcEJvdW5kKCkpOworICAgIHNldExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKGxv
YWRQYXJhbWV0ZXJzLnJlcXVlc3QuaXNBcHBJbml0aWF0ZWQoKSk7CiAKICNpZiBFTkFCTEUoQVBQ
X0JPVU5EX0RPTUFJTlMpCiAgICAgc2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihsb2Fk
UGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCAmbV9tYWluRnJhbWUuZ2V0
KCkpOwpAQCAtMTc3NCw2ICsxNzc0LDcgQEAgdm9pZCBXZWJQYWdlOjpsb2FkQWx0ZXJuYXRlSFRN
TChMb2FkUGFyYW1ldGVycyYmIGxvYWRQYXJhbWV0ZXJzKQogCiB2b2lkIFdlYlBhZ2U6OmxvYWRT
aW11bGF0ZWRSZXF1ZXN0QW5kUmVzcG9uc2UoTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVy
cywgUmVzb3VyY2VSZXNwb25zZSYmIHNpbXVsYXRlZFJlc3BvbnNlKQogeworICAgIHNldExhc3RO
YXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKGxvYWRQYXJhbWV0ZXJzLnJlcXVlc3QuaXNBcHBJbml0
aWF0ZWQoKSk7CiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShs
b2FkUGFyYW1ldGVycy5kYXRhLmRhdGEoKSwgbG9hZFBhcmFtZXRlcnMuZGF0YS5zaXplKCkpOwog
ICAgIGxvYWREYXRhSW1wbChsb2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQsIGxvYWRQYXJhbWV0
ZXJzLnNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgV1RGTW92ZShsb2FkUGFyYW1ldGVycy53
ZWJzaXRlUG9saWNpZXMpLCBXVEZNb3ZlKHNoYXJlZEJ1ZmZlciksIFdURk1vdmUobG9hZFBhcmFt
ZXRlcnMucmVxdWVzdCksIFdURk1vdmUoc2ltdWxhdGVkUmVzcG9uc2UpLCBVUkwoKSwgbG9hZFBh
cmFtZXRlcnMudXNlckRhdGEsIGxvYWRQYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4sIFN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHk6OlZpc2libGUp
OwogfQpAQCAtNjU5NSw3ICs2NTk2LDcgQEAgUmVmPERvY3VtZW50TG9hZGVyPiBXZWJQYWdlOjpj
cmVhdGVEb2N1bWVudExvYWRlcihGcmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmUKIHsKICAg
ICBSZWY8V2ViRG9jdW1lbnRMb2FkZXI+IGRvY3VtZW50TG9hZGVyID0gV2ViRG9jdW1lbnRMb2Fk
ZXI6OmNyZWF0ZShyZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSk7CiAKLSAgICBkb2N1bWVudExvYWRl
ci0+c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZChtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91
bmQpOworICAgIGRvY3VtZW50TG9hZGVyLT5zZXRMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRl
ZChtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKTsKIAogICAgIGlmIChmcmFtZS5pc01h
aW5GcmFtZSgpKSB7CiAgICAgICAgIGlmIChtX3BlbmRpbmdOYXZpZ2F0aW9uSUQpIHsKQEAgLTc2
MzIsOSArNzYzMyw5IEBAIHZvaWQgV2ViUGFnZTo6Y29uc3VtZU5ldHdvcmtFeHRlbnNpb25TYW5k
Ym94RXh0ZW5zaW9ucyhjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpICiB9CiAjZW5kaWYKIAotdm9p
ZCBXZWJQYWdlOjpsYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2U6Omxhc3ROYXZpZ2F0
aW9uV2FzQXBwSW5pdGlhdGVkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIobWFpbkZyYW1lKCktPmRvY3Vt
ZW50KCktPmxvYWRlcigpLT5sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKCkpOworICAgIGNvbXBs
ZXRpb25IYW5kbGVyKG1haW5GcmFtZSgpLT5kb2N1bWVudCgpLT5sb2FkZXIoKS0+bGFzdE5hdmln
YXRpb25XYXNBcHBJbml0aWF0ZWQoKSk7CiB9CiAKICNpZiBIQVZFKFRSQU5TTEFUSU9OX1VJX1NF
UlZJQ0VTKSAmJiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBmZTUyZmUzNDdlYTUxZTdhYzZiODViNWVlYTdmMDRi
M2M2ZWIzYjZkLi4zMzc3YTlkM2MzYTc1Y2NjMzRjNWQyYmExODk4MTliNTg1NDMxZmJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xNDUzLDggKzE0
NTMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnZhbGlkYXRlTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3IoKTsKICNlbmRpZgogCi0gICAgdm9pZCBzZXRMYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kKGJv
b2wgd2FzQXBwQm91bmQpIHsgbV9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kID0gd2FzQXBwQm91
bmQ7IH0KLSAgICB2b2lkIGxhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBzZXRMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRp
YXRlZChib29sIHdhc0FwcEJvdW5kKSB7IG1fbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQg
PSB3YXNBcHBCb3VuZDsgfQorICAgIHZvaWQgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAKICAgICBib29sIGlzUGFyZW50UHJv
Y2Vzc0FXZWJCcm93c2VyKCkgY29uc3Q7CiAKQEAgLTIzMzUsNyArMjMzNSw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBtX25hdmlnYXRpb25IYXNPY2N1cmVkIHsgZmFsc2UgfTsKICNlbmRpZgogCi0g
ICAgYm9vbCBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwQm91bmQgeyBmYWxzZSB9OworICAgIGJvb2wg
bV9sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCB7IHRydWUgfTsKIAogICAgIGJvb2wgbV9j
YW5Vc2VDcmVkZW50aWFsU3RvcmFnZSB7IHRydWUgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggN2FmYjk4OTU5
ZTdlNGViODY1ZDA4NzEwNzA2YjE0ZTUwNDNjZDBkYS4uMWNlZGE3YTdiY2FiMmQ4MGFlNGMyNjli
MGZjMGU3ZWRiMzE1MWRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC02MzMsNyArNjMzLDcgQEAgR2VuZXJhdGVT
eW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0
aW5nQ29tbWFuZFR5cGUKIAogICAgIERpc3BhdGNoV2hlZWxFdmVudFdpdGhvdXRTY3JvbGxpbmco
V2ViS2l0OjpXZWJXaGVlbEV2ZW50IGV2ZW50KSAtPiAoYm9vbCBoYW5kbGVkKSBBc3luYwogCi0g
ICAgTGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZCgpIC0+IChib29sIHdhc0FwcEJvdW5kKSBBc3lu
YworICAgIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKCkgLT4gKGJvb2wgd2FzQXBwQm91
bmQpIEFzeW5jCiAKICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTl9DT09SRElOQVRPUikKICAgICBD
cmVhdGVNZWRpYVNlc3Npb25Db29yZGluYXRvcihTdHJpbmcgaWRlbnRpZmllcikgLT4gKGJvb2wg
c3VjY2VzcykgQXN5bmMKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCBhOTNjN2U4NGVjZDQ5NGRmNjA0YWRiZjcxNWE3ZDFiMmU4NTUwZmFmLi44NzUy
MDIxYjM3ZjgxOTVmOWRjYWM0OTZiMTJlYTkwMWM3N2I0ODExIDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMjEtMDct
MDcgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAg
Q2xlYW4gdXAgQXBwIFByaXZhY3kgUmVwb3J0IGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzMyNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
Nzk2OTY4NDk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgRGVsZXRlIHRlc3RpbmcgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gYXR0cmlidXRpb24gY29udGV4
dC4gTW92ZSBBcHAKKyAgICAgICAgUHJpdmFjeSBSZXBvcnQgdGVzdHMgaW50byB0aGVpciBvd24g
ZmlsZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvQXBwUHJpdmFjeVJlcG9ydC5tbTogQWRkZWQuCisgICAgICAgIChURVNUKToKKyAgICAgICAg
KGNhdGNoKToKKyAgICAgICAgKGZ1bmN0aW9uKToKKyAgICAgICAgKC1bU1dBcHBJbml0aWF0ZWRS
ZXF1ZXN0TWVzc2FnZUhhbmRsZXIgdXNlckNvbnRlbnRDb250cm9sbGVyOmRpZFJlY2VpdmVTY3Jp
cHRNZXNzYWdlOl0pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
QXBwUHJpdmFjeVJlcG9ydFBsdWdJbi5tbTogUmVuYW1lZCBmcm9tIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeVBsdWdJbi5tbS4KKyAgICAg
ICAgKC1bQXBwUHJpdmFjeVJlcG9ydFBsdWdJbiB3ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRl
eHRDb250cm9sbGVyOmZyYW1lOndpbGxTZW5kUmVxdWVzdEZvclJlc291cmNlOnJlcXVlc3Q6cmVk
aXJlY3RSZXNwb25zZTpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0luQXBwQnJvd3NlclByaXZhY3kubW06CisgICAgICAgICgtW1NXQXBwQm91bmRSZXF1ZXN0
TWVzc2FnZUhhbmRsZXIgdXNlckNvbnRlbnRDb250cm9sbGVyOmRpZFJlY2VpdmVTY3JpcHRNZXNz
YWdlOl0pOiBEZWxldGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvYXBwLXByaXZhY3ktcmVwb3J0LWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3Bw
OgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2Up
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5j
cHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OmRpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0
KToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6ZGlkTG9hZE5vbkFwcEluaXRpYXRlZFJlcXVl
c3QpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjphcHBCb3VuZFJlcXVlc3RDb250ZXh0RGF0
YUZvckRvbWFpbik6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OmNhbGxEaWRS
ZWNlaXZlQXBwQm91bmRSZXF1ZXN0Q29udGV4dERhdGFGb3JEb21haW5DYWxsYmFjayk6IERlbGV0
ZWQuCisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OmRpZExvYWRBcHBCb3VuZFJlcXVlc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpkaWRMb2FkTm9uQXBwQm91bmRSZXF1
ZXN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3Rl
bnRWYWx1ZXMpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZGlkTG9hZEFwcEluaXRp
YXRlZFJlcXVlc3QpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZGlkTG9hZE5vbkFw
cEluaXRpYXRlZFJlcXVlc3QpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y2xlYXJB
cHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxl
cjo6YXBwQm91bmRSZXF1ZXN0Q29udGV4dERhdGFGb3JEb21haW4pOiBEZWxldGVkLgorICAgICAg
ICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZGlkTG9hZEFwcEJvdW5kUmVxdWVzdCk6IERlbGV0ZWQu
CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkaWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNsZWFyQXBwQm91bmRO
YXZpZ2F0aW9uRGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24u
Y3BwOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9t
SW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2
ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAgIChXVFI6OlRl
c3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlQXBwQm91bmRSZXF1ZXN0Q29udGV4dERhdGFGb3JEb21h
aW4pOiBEZWxldGVkLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24u
aDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2Eu
bW06CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkaWRMb2FkQXBwSW5pdGlhdGVkUmVx
dWVzdCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkaWRMb2FkTm9uQXBwSW5pdGlh
dGVkUmVxdWVzdCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjbGVhckFwcFByaXZh
Y3lSZXBvcnRUZXN0aW5nRGF0YSk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjphcHBC
b3VuZFJlcXVlc3RDb250ZXh0RGF0YUZvckRvbWFpbik6IERlbGV0ZWQuCisgICAgICAgIChXVFI6
OlRlc3RDb250cm9sbGVyOjpkaWRMb2FkQXBwQm91bmRSZXF1ZXN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRpZExvYWROb25BcHBCb3VuZFJlcXVlc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y2xlYXJBcHBCb3VuZE5hdmlnYXRp
b25EYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RS
dW5uZXJXS1dlYlZpZXcuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RS
dW5uZXJXS1dlYlZpZXcubW06CisgICAgICAgICgtW1Rlc3RSdW5uZXJXS1dlYlZpZXcgX2RpZExv
YWRBcHBJbml0aWF0ZWRSZXF1ZXN0Ol0pOgorICAgICAgICAoLVtUZXN0UnVubmVyV0tXZWJWaWV3
IF9kaWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdDpdKToKKyAgICAgICAgKC1bVGVzdFJ1bm5l
cldLV2ViVmlldyBfYXBwQm91bmROYXZpZ2F0aW9uRGF0YUZvckRvbWFpbjpjb21wbGV0aW9uSGFu
ZGxlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bVGVzdFJ1bm5lcldLV2ViVmlldyBfZGlkTG9h
ZEFwcEJvdW5kUmVxdWVzdDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bVGVzdFJ1bm5lcldLV2Vi
VmlldyBfZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdDpdKTogRGVsZXRlZC4KKwogMjAyMS0wNy0w
NyAgTGluZyBIbyAgPGxpbmdob0BhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHByb3h5IHNl
cnZlciBzZXR0aW5nIGZyb20gQnVpbGRib3QgY29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCAzYzliZjg5NjUxZjk3YTM4N2I1MDExMDk3ZTRhMTk0YTBjMzJkYWM1Li5jZDg1
MWM3ZTBiNGJjZmE1NTEyYTkxMjUzZWQxOTVmMDFkZGQ3MjYxIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMjk1LDcgKzI5NSw3IEBACiAJCTQ2RkFDRjc0MjNFODg0MjMwMEE5RUJDNiAvKiBi
ZWZvcmV1bmxvYWQtc2xvdy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RkFDRjczMjNFODgzRUUwMEE5RUJDNiAvKiBiZWZvcmV1bmxv
YWQtc2xvdy5odG1sICovOyB9OwogCQk0OTA4QzcxMTI2MDk0RTQxMDAwQjFCMkYgLyogUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0OTA4QzcwRjI2MDk0RTE2MDAwQjFCMkYgLyogUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQubW0gKi87IH07CiAJCTQ5MDlFRTNBMkQwOTQ4MEM4ODk4MkQ1NiAvKiBNYXJrYWJsZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQzc5RjE2
OEJFNDU0RTU3OUU0MTdCMDUgLyogTWFya2FibGUuY3BwICovOyB9OwotCQk0OTFBRUVGODI2NTJF
MzM1MDBENTMwQTggLyogSW5BcHBCcm93c2VyUHJpdmFjeVBsdWdJbi5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5MUFFRUY0MjY1MkRERDAwMEQ1MzBB
OCAvKiBJbkFwcEJyb3dzZXJQcml2YWN5UGx1Z0luLm1tICovOyB9OworCQk0OTFBRUVGODI2NTJF
MzM1MDBENTMwQTggLyogQXBwUHJpdmFjeVJlcG9ydFBsdWdJbi5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5MUFFRUY0MjY1MkRERDAwMEQ1MzBBOCAv
KiBBcHBQcml2YWN5UmVwb3J0UGx1Z0luLm1tICovOyB9OwogCQk0OTFGM0Q1MjI2MDI3RTUzMDAw
RTMxRjcgLyogcGNtV2l0aG91dEZyYXVkUHJldmVudGlvbkRhdGFiYXNlLmRiIGluIENvcHkgUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5MUYzRDRGMjYwMjdD
RkUwMDBFMzFGNyAvKiBwY21XaXRob3V0RnJhdWRQcmV2ZW50aW9uRGF0YWJhc2UuZGIgKi87IH07
CiAJCTQ5MUYzRDUzMjYwMjdFNTMwMDBFMzFGNyAvKiBwY21XaXRob3V0RnJhdWRQcmV2ZW50aW9u
RGF0YWJhc2UuZGItc2htIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ5MUYzRDUwMjYwMjdDRkUwMDBFMzFGNyAvKiBwY21XaXRob3V0RnJhdWRQ
cmV2ZW50aW9uRGF0YWJhc2UuZGItc2htICovOyB9OwogCQk0OTFGM0Q1NDI2MDI3RTUzMDAwRTMx
RjcgLyogcGNtV2l0aG91dEZyYXVkUHJldmVudGlvbkRhdGFiYXNlLmRiLXdhbCBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTFGM0Q1MTI2MDI3
Q0ZFMDAwRTMxRjcgLyogcGNtV2l0aG91dEZyYXVkUHJldmVudGlvbkRhdGFiYXNlLmRiLXdhbCAq
LzsgfTsKQEAgLTMxMyw2ICszMTMsNyBAQAogCQk0OThEMDMwQTI2Mzc2QjM0MDA5Q0JGQUQgLyog
cmVzb3VyY2VMb2FkU3RhdGlzdGljc01pc3NpbmdVbmlxdWVJbmRleC5kYiBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OThEMDMwOTI2Mzc2QjJD
MDA5Q0JGQUQgLyogcmVzb3VyY2VMb2FkU3RhdGlzdGljc01pc3NpbmdVbmlxdWVJbmRleC5kYiAq
LzsgfTsKIAkJNDk5NUE2RjAyNUU4NzcyMDAwRTVGMEE5IC8qIGNzcC1kb2N1bWVudC11cmktcmVw
b3J0Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDk5NUE2RUYyNUU4NzZBMzAwRTVGMEE5IC8qIGNzcC1kb2N1bWVudC11cmktcmVwb3J0
Lmh0bWwgKi87IH07CiAJCTQ5QUVFRjZEMjQwNzM1OUQwMEM4N0U0QyAvKiBJbkFwcEJyb3dzZXJQ
cml2YWN5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDlBRUVGNkIyNDA3MzU4NjAwQzg3RTRDIC8qIEluQXBwQnJvd3NlclByaXZhY3kubW0gKi87IH07
CisJCTQ5RUY2QUQ1MjY3N0MwQkUwMDc5NjdEQyAvKiBBcHBQcml2YWN5UmVwb3J0Lm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlFRjZBRDQyNjc3QzBC
RTAwNzk2N0RDIC8qIEFwcFByaXZhY3lSZXBvcnQubW0gKi87IH07CiAJCTRCRkRGRkE3MTMxNDc3
NkMwMDYxRjI0QiAvKiBIaXRUZXN0UmVzdWx0Tm9kZUhhbmRsZV9CdW5kbGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEJGREZGQTYxMzE0Nzc2QzAw
NjFGMjRCIC8qIEhpdFRlc3RSZXN1bHROb2RlSGFuZGxlX0J1bmRsZS5jcHAgKi87IH07CiAJCTUx
MDQ3NzcyMUQyOThEREQwMDk3NDdFQiAvKiBJREJEZWxldGVSZWNvdmVyeS5zcWxpdGUzIGluIENv
cHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDQ3NzZG
MUQyOThEODUwMDk3NDdFQiAvKiBJREJEZWxldGVSZWNvdmVyeS5zcWxpdGUzICovOyB9OwogCQk1
MTA0Nzc3MzFEMjk4REREMDA5NzQ3RUIgLyogSURCRGVsZXRlUmVjb3Zlcnkuc3FsaXRlMy1zaG0g
aW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEw
NDc3NzAxRDI5OEQ4NTAwOTc0N0VCIC8qIElEQkRlbGV0ZVJlY292ZXJ5LnNxbGl0ZTMtc2htICov
OyB9OwpAQCAtMjExOCw3ICsyMTE5LDcgQEAKIAkJNDZGQTJGRUQyMzg0NkM5QTAwMENDQjBDIC8q
IEhUVFBIZWFkZXJNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SFRUUEhlYWRlck1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RkFDRjcz
MjNFODgzRUUwMEE5RUJDNiAvKiBiZWZvcmV1bmxvYWQtc2xvdy5odG1sICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5odG1sOyBwYXRoID0gImJlZm9yZXVubG9hZC1zbG93Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0OTA4QzcwRjI2MDk0RTE2MDAwQjFCMkYgLyogUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDkx
QUVFRjQyNjUyREREMDAwRDUzMEE4IC8qIEluQXBwQnJvd3NlclByaXZhY3lQbHVnSW4ubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBJbkFwcEJyb3dzZXJQcml2YWN5UGx1Z0luLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0OTFBRUVGNDI2NTJEREQwMDBENTMwQTggLyogQXBwUHJp
dmFjeVJlcG9ydFBsdWdJbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFwcFByaXZhY3lSZXBv
cnRQbHVnSW4ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5MUYzRDRGMjYwMjdD
RkUwMDBFMzFGNyAvKiBwY21XaXRob3V0RnJhdWRQcmV2ZW50aW9uRGF0YWJhc2UuZGIgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBwYXRoID0g
cGNtV2l0aG91dEZyYXVkUHJldmVudGlvbkRhdGFiYXNlLmRiOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0OTFGM0Q1MDI2MDI3Q0ZFMDAwRTMxRjcgLyogcGNtV2l0aG91dEZyYXVkUHJl
dmVudGlvbkRhdGFiYXNlLmRiLXNobSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IGZpbGU7IHBhdGggPSAicGNtV2l0aG91dEZyYXVkUHJldmVudGlvbkRh
dGFiYXNlLmRiLXNobSI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5MUYzRDUxMjYw
MjdDRkUwMDBFMzFGNyAvKiBwY21XaXRob3V0RnJhdWRQcmV2ZW50aW9uRGF0YWJhc2UuZGItd2Fs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9ICJwY21XaXRob3V0RnJhdWRQcmV2ZW50aW9uRGF0YWJh
c2UuZGItd2FsIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMzcsNiArMjEzOCw3
IEBACiAJCTQ5QUVFRjY4MjQwNzI3NkYwMEM4N0U0QyAvKiBJbmZvLnBsaXN0ICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5wbGlzdC54bWw7IHBhdGggPSBJbmZvLnBsaXN0OyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0OUFFRUY2QjI0MDczNTg2MDBDODdFNEMgLyogSW5BcHBCcm93c2VyUHJpdmFjeS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEluQXBwQnJvd3NlclBy
aXZhY3kubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5RDdGQkE3MjQxRkREREEw
MEFCNjdGQSAvKiBpbi1hcHAtYnJvd3Nlci1wcml2YWN5LWxvY2FsLWZpbGUuaHRtbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0
aCA9ICJpbi1hcHAtYnJvd3Nlci1wcml2YWN5LWxvY2FsLWZpbGUuaHRtbCI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQ5RUY2QUQ0MjY3N0MwQkUwMDc5NjdEQyAvKiBBcHBQcml2YWN5
UmVwb3J0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXBwUHJpdmFjeVJlcG9ydC5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE0MTBGNEIxOUFGN0JENjAwMkVCQUI1IC8qIFVz
ZXJNZWRpYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVc2VyTWVk
aWEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTQxMEY0RDE5QUY3QkVGMDAy
RUJBQjUgLyogZ2V0VXNlck1lZGlhLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBn
ZXRVc2VyTWVkaWEuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEE0MTBGNEQx
OUFGN0JFRjAwMkVCQUI2IC8qIG9uZGV2aWNlY2hhbmdlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0
bWw7IHBhdGggPSBvbmRldmljZWNoYW5nZS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMzM4Nyw2ICszMzg5LDggQEAKIAkJCQkyREU3MUFGRDFENDlDMEJEMDA5MDQwOTQgLyog
QW5pbWF0ZWRSZXNpemUubW0gKi8sCiAJCQkJQTE3OThCODEyMjQzMUQ2NTAwMDc2NEJEIC8qIEFw
cGxlUGF5Lm1tICovLAogCQkJCTYzRjY2ODIwMUY5N0MzQUEwMDMyRUU1MSAvKiBBcHBsaWNhdGlv
bk1hbmlmZXN0Lm1tICovLAorCQkJCTQ5RUY2QUQ0MjY3N0MwQkUwMDc5NjdEQyAvKiBBcHBQcml2
YWN5UmVwb3J0Lm1tICovLAorCQkJCTQ5MUFFRUY0MjY1MkRERDAwMEQ1MzBBOCAvKiBBcHBQcml2
YWN5UmVwb3J0UGx1Z0luLm1tICovLAogCQkJCTUxQjQwRDlEMjNBQzk2MEUwMEUwNTI0MSAvKiBB
c3luY0Z1bmN0aW9uLm1tICovLAogCQkJCTgzNDEzOEM2MjAzMjYxQjkwMEYyNjk2MCAvKiBBc3lu
Y1BvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZS5tbSAqLywKIAkJCQkzNzYwQzRGMDIxMTI0OUFG
MDAyMzNBQ0MgLyogQXR0clN0eWxlLm1tICovLApAQCAtMzQ3NSw3ICszNDc5LDYgQEAKIAkJCQk5
M0JDQkM4MDIzQ0M2RUU4MDBDQTIyMjEgLyogSURCT2JqZWN0U3RvcmVJbmZvVXBncmFkZVRvVjIu
bW0gKi8sCiAJCQkJRjQ0QTdEMUYyNjhENUM2OTAwQjQ5QkI4IC8qIEltYWdlQW5hbHlzaXNUZXN0
cy5tbSAqLywKIAkJCQk0OUFFRUY2QjI0MDczNTg2MDBDODdFNEMgLyogSW5BcHBCcm93c2VyUHJp
dmFjeS5tbSAqLywKLQkJCQk0OTFBRUVGNDI2NTJEREQwMDBENTMwQTggLyogSW5BcHBCcm93c2Vy
UHJpdmFjeVBsdWdJbi5tbSAqLywKIAkJCQk1MUE1ODc4NDFEMjcyRUYzMDA0QkE5QUYgLyogSW5k
ZXhlZERCRGF0YWJhc2VQcm9jZXNzS2lsbC5tbSAqLywKIAkJCQlDQUIwRkY1NDIyMzMyQzNBMDA2
Q0E1QjAgLyogSW5kZXhlZERCRmlsZU5hbWUubW0gKi8sCiAJCQkJOTM5OUJBMDEyMzcxMTBBRTAw
ODM5MkJGIC8qIEluZGV4ZWREQkluUGFnZUNhY2hlLm1tICovLApAQCAtNTM0Nyw2ICs1MzUwLDcg
QEAKIAkJCQlBMTc5OEI4MjIyNDMxRDY1MDAwNzY0QkQgLyogQXBwbGVQYXkubW0gaW4gU291cmNl
cyAqLywKIAkJCQk2M0Y2NjgyMjFGOTdGN0Y5MDAzMkVFNTEgLyogQXBwbGljYXRpb25NYW5pZmVz
dC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTYzNTRGNEQxMUY3QzNBQjUwMEQ4OURGMyAvKiBBcHBs
aWNhdGlvbk1hbmlmZXN0UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ5RUY2QUQ1MjY3
N0MwQkUwMDc5NjdEQyAvKiBBcHBQcml2YWN5UmVwb3J0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTFCNDBEOUUyM0FDOTYyNDAwRTA1MjQxIC8qIEFzeW5jRnVuY3Rpb24ubW0gaW4gU291cmNlcyAq
LywKIAkJCQk4MzQxMzhDNzIwMzI2MUNBMDBGMjY5NjAgLyogQXN5bmNQb2xpY3lGb3JOYXZpZ2F0
aW9uUmVzcG9uc2UubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VCNDFBNDExQTdFMDA0NDdD
NEMgLyogQXR0cmlidXRlZFN0cmluZy5tbSBpbiBTb3VyY2VzICovLApAQCAtNTUwOSw3ICs1NTEz
LDYgQEAKIAkJCQlDRENGNzhBODI0NEEzMkY3MDA0ODAzMTEgLyogRnVsbHNjcmVlbkFsZXJ0Lm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q3OEUxMUQxREI3RUE2NjAwMTRBMkRFIC8qIEZ1bGxzY3Jl
ZW5EZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQjIxM0JEMjRFRjUyMjgwMEZERTMw
MSAvKiBGdWxsc2NyZWVuRm9jdXMubW0gaW4gU291cmNlcyAqLywKLQkJCQlGNDRBN0QyMDI2OEQ1
QzY5MDBCNDlCQjggLyogSW1hZ2VBbmFseXNpc1Rlc3RzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Q0RFNzdEMjUyNUE2NTkxQzAwRDQxMTVFIC8qIEZ1bGxzY3JlZW5Qb2ludGVyTGVhdmUubW0gaW4g
U291cmNlcyAqLywKIAkJCQlDRERDN0M2OTI1RkZGNkQwMDAyMjQyNzggLyogRnVsbHNjcmVlblJl
bW92ZU5vZGVCZWZvcmVFbnRlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQkZDQzQ1MUE5RkY0
NTMwMEE3QjY5MSAvKiBGdWxsc2NyZWVuWm9vbUluaXRpYWxGcmFtZS5tbSBpbiBTb3VyY2VzICov
LApAQCAtNTU0Myw2ICs1NTQ2LDcgQEAKIAkJCQk1MTA0Nzc3ODFEMjk5MjNCMDA5NzQ3RUIgLyog
SURCRGVsZXRlUmVjb3ZlcnkubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTEwRkNGQTFFMDFDREI4
MDA2RjhEMEIgLyogSURCSW5kZXhVcGdyYWRlVG9WMi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkz
QkNCQzgzMjNDQzZGMkEwMENBMjIyMSAvKiBJREJPYmplY3RTdG9yZUluZm9VcGdyYWRlVG9WMi5t
bSBpbiBTb3VyY2VzICovLAorCQkJCUY0NEE3RDIwMjY4RDVDNjkwMEI0OUJCOCAvKiBJbWFnZUFu
YWx5c2lzVGVzdHMubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QjE4NDE3QzI2NzM4NjAyMDBFRDRG
OEQgLyogSW1hZ2VCdWZmZXJUZXN0cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNDRBOUFGNzI2
NDlCQkREMDBFN0NCMTYgLyogSW1tZWRpYXRlQWN0aW9uVGVzdHMubW0gaW4gU291cmNlcyAqLywK
IAkJCQk0OUFFRUY2RDI0MDczNTlEMDBDODdFNEMgLyogSW5BcHBCcm93c2VyUHJpdmFjeS5tbSBp
biBTb3VyY2VzICovLApAQCAtNTk3Myw2ICs1OTc3LDcgQEAKIAkJCWZpbGVzID0gKAogCQkJCTA3
N0E1QUYzMjMwNjM4QTYwMEE3MTA1QyAvKiBBY2Nlc3NpYmlsaXR5VGVzdFBsdWdpbi5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTM3RTdERDY3MUVBMDcxRjMwMDlCMzk2RCAvKiBBZGRpdGlvbmFsUmVh
ZEFjY2Vzc0FsbG93ZWRVUkxzUGx1Z2luLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNDkxQUVFRjgy
NjUyRTMzNTAwRDUzMEE4IC8qIEFwcFByaXZhY3lSZXBvcnRQbHVnSW4ubW0gaW4gU291cmNlcyAq
LywKIAkJCQk3NTRDRUM4MTFGNjcyMkYyMDBEMDAzOUEgLyogQXV0b0ZpbGxBdmFpbGFibGUubW0g
aW4gU291cmNlcyAqLywKIAkJCQk1QzQyNTk0NjIyNjZBNjhBMDAzOUFBN0EgLyogQmFzaWNQcm9w
b3NlZENyZWRlbnRpYWxQbHVnSW4ubW0gaW4gU291cmNlcyAqLywKIAkJCQkzNzRCN0E2MTFERjM3
MUNGMDBBQ0NCNkMgLyogQnVuZGxlRWRpdGluZ0RlbGVnYXRlUGx1Z0luLm1tIGluIFNvdXJjZXMg
Ki8sCkBAIC01OTg4LDcgKzU5OTMsNiBAQAogCQkJCUY0QjAxNjg0MjVBRTA4RjgwMEU0NDVDNCAv
KiBEaXNhYmxlU3BlbGxjaGVja1BsdWdJbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxOEVFNTE5
MjBBNzhDRTUwMEUwMjRGMyAvKiBEb3VibGVEZWZlcnNMb2FkaW5nUGx1Z2luLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNUNCNUIzQzIxRkZDNTVDRjAwQzI3QkIwIC8qIEZyYW1lSGFuZGxlU2VyaWFs
aXphdGlvbi5tbSBpbiBTb3VyY2VzICovLAotCQkJCTQ5MUFFRUY4MjY1MkUzMzUwMEQ1MzBBOCAv
KiBJbkFwcEJyb3dzZXJQcml2YWN5UGx1Z0luLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRjQ2MEY2
NUIyNjExMTk1ODAwNjRGMkI2IC8qIEluamVjdGVkQnVuZGxlSGl0VGVzdFBsdWdJbi5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTBFNDA0QThDMjE2NkRFMEEwMDgyNzFCQSAvKiBJbmplY3RlZEJ1bmRs
ZU5vZGVIYW5kbGVJc1NlbGVjdEVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk3OUM1RDQz
MTIwOUQ3NjgzMDBGMUU3Q0EgLyogSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlSXNUZXh0RmllbGQu
bW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMDlmMGEyMjVm
NDQ1OWRiYzNlODQ3ZTEwYzA0YTdkNjBkOGNlNTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tCkBAIC0w
LDAgKzEsNzM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpbXBvcnQg
IkhUVFBTZXJ2ZXIuaCIKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJT
ZXJ2aWNlV29ya2VyVENQU2VydmVyLmgiCisjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRl
LmgiCisjaW1wb3J0ICJUZXN0VUlEZWxlZ2F0ZS5oIgorI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5o
IgorI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4dHJhcy5oIgorI2ltcG9ydCA8Rm91
bmRhdGlvbi9OU1VSTFJlcXVlc3QuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUHJp
dmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmg+Cisj
aW1wb3J0IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oPgorI2ltcG9ydCA8cGFs
L3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KKyNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CisjaW1wb3J0
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworI2lmIEVOQUJMRShBUFBfUFJJVkFDWV9SRVBPUlQp
CitURVNUKEFwcFByaXZhY3lSZXBvcnQsIERlZmF1bHRSZXF1ZXN0SXNBcHBJbml0aWF0ZWQpCit7
CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdKTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uLmdldCgpXSk7CisgICAgTlNTdHJpbmcgKnVybCA9IEAiaHR0cHM6Ly93ZWJraXQu
b3JnIjsKKworICAgIF9fYmxvY2sgYm9vbCBpc0RvbmUgPSBmYWxzZTsKKyAgICAvLyBEb24ndCBz
ZXQgdGhlIGF0dHJpYnV0aW9uIEFQSSBvbiBOU1VSTFJlcXVlc3QgdG8gbWFrZSBzdXJlIHRoZSBk
ZWZhdWx0IGlzIGFwcCBpbml0aWF0ZWQuCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzp1cmxdXV07CisgICAg
W3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworCisgICAgW3dlYlZp
ZXcgX2xhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOl4oQk9PTCBpc0FwcEluaXRpYXRlZCkg
eworICAgICAgICBFWFBFQ1RfVFJVRShpc0FwcEluaXRpYXRlZCk7CisgICAgICAgIGlzRG9uZSA9
IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7
CisKKyAgICBpc0RvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfYXBwUHJpdmFjeVJlcG9ydFRl
c3RpbmdEYXRhOl4oc3RydWN0IFdLQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhIGRhdGEpIHsK
KyAgICAgICAgRVhQRUNUX1RSVUUoZGF0YS5oYXNMb2FkZWRBcHBJbml0aWF0ZWRSZXF1ZXN0VGVz
dGluZyk7CisgICAgICAgIEVYUEVDVF9GQUxTRShkYXRhLmhhc0xvYWRlZE5vbkFwcEluaXRpYXRl
ZFJlcXVlc3RUZXN0aW5nKTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKK30KKworVEVTVChBcHBQcml2YWN5
UmVwb3J0LCBBcHBJbml0aWF0ZWRSZXF1ZXN0KQoreworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9
IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisKKyAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIE5T
U3RyaW5nICp1cmwgPSBAImh0dHBzOi8vd2Via2l0Lm9yZyI7CisKKyAgICBfX2Jsb2NrIGJvb2wg
aXNEb25lID0gZmFsc2U7CisgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqYXBwSW5pdGlhdGVkUmVx
dWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRo
U3RyaW5nOnVybF1dOworICAgIGFwcEluaXRpYXRlZFJlcXVlc3QuYXR0cmlidXRpb24gPSBOU1VS
TFJlcXVlc3RBdHRyaWJ1dGlvbkRldmVsb3BlcjsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0
OmFwcEluaXRpYXRlZFJlcXVlc3RdOworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5p
c2hOYXZpZ2F0aW9uXTsKKworICAgIFt3ZWJWaWV3IF9sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRp
YXRlZDpeKEJPT0wgaXNBcHBJbml0aWF0ZWQpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoaXNBcHBJ
bml0aWF0ZWQpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworCisgICAgaXNEb25lID0gZmFsc2U7CisgICAg
W3dlYlZpZXcgX2FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YTpeKHN0cnVjdCBXS0FwcFByaXZh
Y3lSZXBvcnRUZXN0aW5nRGF0YSBkYXRhKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKGRhdGEuaGFz
TG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcpOworICAgICAgICBFWFBFQ1RfRkFMU0Uo
ZGF0YS5oYXNMb2FkZWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZyk7CisgICAgICAgIGlz
RG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlz
RG9uZSk7Cit9CisKK1RFU1QoQXBwUHJpdmFjeVJlcG9ydCwgTm9uQXBwSW5pdGlhdGVkUmVxdWVz
dCkKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0pOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rl
c3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9u
OmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBOU1N0cmluZyAqdXJsID0gQCJodHRwczovL3dl
YmtpdC5vcmciOworCisgICAgX19ibG9jayBib29sIGlzRG9uZSA9IGZhbHNlOworICAgIE5TTXV0
YWJsZVVSTFJlcXVlc3QgKm5vbkFwcEluaXRpYXRlZFJlcXVlc3QgPSBbTlNNdXRhYmxlVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzp1cmxdXTsKKyAgICBub25B
cHBJbml0aWF0ZWRSZXF1ZXN0LmF0dHJpYnV0aW9uID0gTlNVUkxSZXF1ZXN0QXR0cmlidXRpb25V
c2VyOworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6bm9uQXBwSW5pdGlhdGVkUmVxdWVzdF07
CisgICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworCisgICAg
W3dlYlZpZXcgX2xhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOl4oQk9PTCBpc0FwcEluaXRp
YXRlZCkgeworICAgICAgICBFWFBFQ1RfRkFMU0UoaXNBcHBJbml0aWF0ZWQpOworICAgICAgICBp
c0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZp
c0RvbmUpOworCisgICAgaXNEb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2FwcFByaXZhY3lS
ZXBvcnRUZXN0aW5nRGF0YTpeKHN0cnVjdCBXS0FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSBk
YXRhKSB7CisgICAgICAgIEVYUEVDVF9GQUxTRShkYXRhLmhhc0xvYWRlZEFwcEluaXRpYXRlZFJl
cXVlc3RUZXN0aW5nKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoZGF0YS5oYXNMb2FkZWROb25BcHBJ
bml0aWF0ZWRSZXF1ZXN0VGVzdGluZyk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07
CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Cit9CisKK1RFU1QoQXBw
UHJpdmFjeVJlcG9ydCwgQXBwSW5pdGlhdGVkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uKQoreworICAg
IGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSk7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJh
dGlvbi5nZXQoKV0pOworICAgIE5TU3RyaW5nICphcHBJbml0aWF0ZWRVUkwgPSBAImh0dHBzOi8v
d3d3LndlYmtpdC5vcmciOworICAgIE5TU3RyaW5nICpub25BcHBJbml0aWF0ZWRVUkwgPSBAImh0
dHBzOi8vd3d3LmFwcGxlLmNvbSI7CisKKyAgICBOU011dGFibGVVUkxSZXF1ZXN0ICphcHBJbml0
aWF0ZWRSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJM
IFVSTFdpdGhTdHJpbmc6YXBwSW5pdGlhdGVkVVJMXV07CisgICAgYXBwSW5pdGlhdGVkUmVxdWVz
dC5hdHRyaWJ1dGlvbiA9IE5TVVJMUmVxdWVzdEF0dHJpYnV0aW9uRGV2ZWxvcGVyOworCisgICAg
W3dlYlZpZXcgbG9hZFJlcXVlc3Q6YXBwSW5pdGlhdGVkUmVxdWVzdF07CisgICAgW3dlYlZpZXcg
X3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworCisgICAgX19ibG9jayBib29sIGlz
RG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRl
ZDpeKEJPT0wgaXNBcHBJbml0aWF0ZWQpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoaXNBcHBJbml0
aWF0ZWQpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworCisgICAgaXNEb25lID0gZmFsc2U7CisgICAgW3dl
YlZpZXcgX2FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YTpeKHN0cnVjdCBXS0FwcFByaXZhY3lS
ZXBvcnRUZXN0aW5nRGF0YSBkYXRhKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKGRhdGEuaGFzTG9h
ZGVkQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcpOworICAgICAgICBFWFBFQ1RfRkFMU0UoZGF0
YS5oYXNMb2FkZWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZyk7CisgICAgICAgIGlzRG9u
ZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9u
ZSk7CisKKyAgICBpc0RvbmUgPSBmYWxzZTsKKyAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpub25B
cHBJbml0aWF0ZWRSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6
W05TVVJMIFVSTFdpdGhTdHJpbmc6bm9uQXBwSW5pdGlhdGVkVVJMXV07CisgICAgbm9uQXBwSW5p
dGlhdGVkUmVxdWVzdC5hdHRyaWJ1dGlvbiA9IE5TVVJMUmVxdWVzdEF0dHJpYnV0aW9uVXNlcjsK
KworICAgIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9jbGVhckFwcFByaXZhY3lSZXBv
cnRUZXN0aW5nRGF0YTpeeworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworCisgICAgLy8gTG9hZCBhIG5vbiBh
cHAgaW5pdGF0ZWQgcmVxdWVzdCBhbmQgY29uZmlybSB0aGUgbG9hZHMgYXJlIG1hcmtlZCBjb3Jy
ZWN0bHkuCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6bm9uQXBwSW5pdGlhdGVkUmVxdWVzdF07
CisgICAgW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworCisgICAg
W3dlYlZpZXcgX2xhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOl4oQk9PTCBpc0FwcEluaXRp
YXRlZCkgeworICAgICAgICBFWFBFQ1RfRkFMU0UoaXNBcHBJbml0aWF0ZWQpOworICAgICAgICBp
c0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZp
c0RvbmUpOworCisgICAgaXNEb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2FwcFByaXZhY3lS
ZXBvcnRUZXN0aW5nRGF0YTpeKHN0cnVjdCBXS0FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YSBk
YXRhKSB7CisgICAgICAgIEVYUEVDVF9GQUxTRShkYXRhLmhhc0xvYWRlZEFwcEluaXRpYXRlZFJl
cXVlc3RUZXN0aW5nKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoZGF0YS5oYXNMb2FkZWROb25BcHBJ
bml0aWF0ZWRSZXF1ZXN0VGVzdGluZyk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07
CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Cit9CisKK1RFU1QoQXBw
UHJpdmFjeVJlcG9ydCwgQXBwSW5pdGlhdGVkUmVxdWVzdFdpdGhTdWJGcmFtZSkKK3sKKyAgICBh
dXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxv
Y10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIF9zZXRPdmVycmlkZUNvbnRlbnRTZWN1cml0
eVBvbGljeTpAInNjcmlwdC1zcmMgJ25vbmNlLWInIl07CisKKyAgICBfX2Jsb2NrIGJvb2wgaXNE
b25lID0gZmFsc2U7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJh
dGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqYXBw
SW5pdGlhdGVkUmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltb
TlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJwYWdlLXdpdGgtY3NwIiB3aXRo
RXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMi
XV07CisgICAgYXBwSW5pdGlhdGVkUmVxdWVzdC5hdHRyaWJ1dGlvbiA9IE5TVVJMUmVxdWVzdEF0
dHJpYnV0aW9uRGV2ZWxvcGVyOworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6YXBwSW5pdGlh
dGVkUmVxdWVzdF07CisKKyAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIk1haW5GcmFtZTog
QiJdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiU3ViZnJhbWU6IEIiXTsKKworICAg
IFt3ZWJWaWV3IF9hcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGE6IF4oc3RydWN0IFdLQXBwUHJp
dmFjeVJlcG9ydFRlc3RpbmdEYXRhIGRhdGEpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoZGF0YS5o
YXNMb2FkZWRBcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZyk7CisgICAgICAgIEVYUEVDVF9GQUxT
RShkYXRhLmhhc0xvYWRlZE5vbkFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nKTsKKyAgICAgICAg
aXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
aXNEb25lKTsKK30KKworVEVTVChBcHBQcml2YWN5UmVwb3J0LCBOb25BcHBJbml0aWF0ZWRSZXF1
ZXN0V2l0aFN1YkZyYW1lKQoreworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24g
X3NldE92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5OkAic2NyaXB0LXNyYyAnbm9uY2UtYici
XTsKKworICAgIF9fYmxvY2sgYm9vbCBpc0RvbmUgPSBmYWxzZTsKKyAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAg
ICBOU011dGFibGVVUkxSZXF1ZXN0ICpub25BcHBJbml0aWF0ZWRSZXF1ZXN0ID0gW05TTXV0YWJs
ZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JS
ZXNvdXJjZTpAInBhZ2Utd2l0aC1jc3AiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rv
cnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKKyAgICBub25BcHBJbml0aWF0ZWRSZXF1
ZXN0LmF0dHJpYnV0aW9uID0gTlNVUkxSZXF1ZXN0QXR0cmlidXRpb25Vc2VyOworCisgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6bm9uQXBwSW5pdGlhdGVkUmVxdWVzdF07CisKKyAgICBbd2ViVmll
dyB3YWl0Rm9yTWVzc2FnZTpAIk1haW5GcmFtZTogQiJdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JN
ZXNzYWdlOkAiU3ViZnJhbWU6IEIiXTsKKworICAgIFt3ZWJWaWV3IF9hcHBQcml2YWN5UmVwb3J0
VGVzdGluZ0RhdGE6IF4oc3RydWN0IFdLQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhIGRhdGEp
IHsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGRhdGEuaGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVz
dFRlc3RpbmcpOworICAgICAgICBFWFBFQ1RfVFJVRShkYXRhLmhhc0xvYWRlZE5vbkFwcEluaXRp
YXRlZFJlcXVlc3RUZXN0aW5nKTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKwor
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKK30KKworc3RhdGljIGNvbnN0
IGNoYXIqIG1haW5TV0J5dGVzID0gUiJTV1JFU09VUkNFKAorPHNjcmlwdD4KK3RyeSB7CisgICAg
bmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4oZnVuY3Rpb24o
cmVnKSB7CisgICAgICAgIGlmIChyZWcuYWN0aXZlKSB7CisgICAgICAgICAgICBhbGVydCgnd29y
a2VyIGFscmVhZHkgYWN0aXZlJyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgd29ya2VyID0gcmVnLmluc3RhbGxpbmc7CisgICAgICAgIHdvcmtlci5hZGRFdmVudExp
c3RlbmVyKCdzdGF0ZWNoYW5nZScsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgaWYgKHdvcmtl
ci5zdGF0ZSA9PSAnYWN0aXZhdGVkJykKKyAgICAgICAgICAgICAgICBhbGVydCgnc3VjY2Vzc2Z1
bGx5IHJlZ2lzdGVyZWQnKTsKKyAgICAgICAgfSk7CisgICAgfSkuY2F0Y2goZnVuY3Rpb24oZXJy
b3IpIHsKKyAgICAgICAgYWxlcnQoJ1JlZ2lzdHJhdGlvbiBmYWlsZWQgd2l0aDogJyArIGVycm9y
KTsKKyAgICB9KTsKK30gY2F0Y2goZSkgeworICAgIGFsZXJ0KCdFeGNlcHRpb246ICcgKyBlKTsK
K30KKzwvc2NyaXB0PgorKVNXUkVTT1VSQ0UiOworCitlbnVtIGNsYXNzIFJlc3BvbnNlVHlwZSB7
IFN5bnRoZXRpYywgRmV0Y2hlZCB9OworZW51bSBjbGFzcyBJc0FwcEluaXRpYXRlZCA6IGJvb2wg
eyBObywgWWVzIH07CitzdGF0aWMgdm9pZCBydW5UZXN0KFJlc3BvbnNlVHlwZSByZXNwb25zZVR5
cGUsIElzQXBwSW5pdGlhdGVkIGlzQXBwSW5pdGlhdGVkKQoreworICAgIHN0YXRpYyBib29sIGlz
RG9uZSA9IGZhbHNlOworICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVd
IHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBl
c10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpe
KCkgeworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmaXNEb25lKTsKKworICAgIGNvbnN0IGNoYXIqIGpzID0gbnVsbHB0cjsKKyAg
ICBjb25zdCBjaGFyKiBleHBlY3RlZEFsZXJ0ID0gbnVsbHB0cjsKKworICAgIHN3aXRjaCAocmVz
cG9uc2VUeXBlKSB7CisgICAgY2FzZSBSZXNwb25zZVR5cGU6OlN5bnRoZXRpYzoKKyAgICAgICAg
anMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5y
ZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhl
dGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIjsK
KyAgICAgICAgZXhwZWN0ZWRBbGVydCA9ICJzeW50aGV0aWMgcmVzcG9uc2UiOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFJlc3BvbnNlVHlwZTo6RmV0Y2hlZDoKKyAgICAgICAganMgPSAic2Vs
Zi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0
aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KTsiOworICAgICAgICBleHBlY3RlZEFsZXJ0ID0g
ImZldGNoZWQgZnJvbSBzZXJ2ZXIiOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBUZXN0
V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7CisgICAgICAgIHsgIi8iLCB7IG1haW5TV0J5
dGVzIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxp
Y2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCisgICAgICAgIHsgIi9mZXRjaGVkLmh0bWwi
LCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iIH0gfSwK
KyAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOworCisg
ICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOworCisgICAgYXV0byBk
ZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7CisgICAgW2Rl
bGVnYXRlIHNldERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpeKFdLV2ViVmlldyAq
LCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UsIHZvaWQgKF5jYWxsYmFj
aykoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwg
KikpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uu
YXV0aGVudGljYXRpb25NZXRob2QsIE5TVVJMQXV0aGVudGljYXRpb25NZXRob2RTZXJ2ZXJUcnVz
dCk7CisgICAgICAgIGNhbGxiYWNrKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50
aWFsLCBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVj
dGlvblNwYWNlLnNlcnZlclRydXN0XSk7CisgICAgfV07CisgICAgd2ViVmlldy5nZXQoKS5uYXZp
Z2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKworICAgIE5TTXV0YWJsZVVSTFJlcXVl
c3QgKnJlcXVlc3QgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwg
VVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAu
MC4xOiVkLyIsIHNlcnZlci5wb3J0KCldXV07CisgICAgYXV0byBhdHRyaWJ1dGlvblZhbHVlID0g
aXNBcHBJbml0aWF0ZWQgPT0gSXNBcHBJbml0aWF0ZWQ6OlllcyA/IE5TVVJMUmVxdWVzdEF0dHJp
YnV0aW9uRGV2ZWxvcGVyIDogTlNVUkxSZXF1ZXN0QXR0cmlidXRpb25Vc2VyOworICAgIHJlcXVl
c3QuYXR0cmlidXRpb24gPSBhdHRyaWJ1dGlvblZhbHVlOworCisgICAgW3dlYlZpZXcgbG9hZFJl
cXVlc3Q6cmVxdWVzdF07CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IF90ZXN0X3dhaXRG
b3JBbGVydF0sICJzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZCIpOworCisgICAgaWYgKHJlc3BvbnNl
VHlwZSAhPSBSZXNwb25zZVR5cGU6OkZldGNoZWQpCisgICAgICAgIHNlcnZlci5jYW5jZWwoKTsK
KworICAgIGJvb2wgZXhwZWN0aW5nQXBwSW5pdGlhdGVkUmVxdWVzdHMgPSBpc0FwcEluaXRpYXRl
ZCA9PSBJc0FwcEluaXRpYXRlZDo6WWVzOworICAgIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJW
aWV3IF9hcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGE6IF4oc3RydWN0IFdLQXBwUHJpdmFjeVJl
cG9ydFRlc3RpbmdEYXRhIGRhdGEpIHsKKyAgICAgICAgRVhQRUNUX0VRKGRhdGEuaGFzTG9hZGVk
QXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcsIGV4cGVjdGluZ0FwcEluaXRpYXRlZFJlcXVlc3Rz
KTsKKyAgICAgICAgRVhQRUNUX0VRKGRhdGEuaGFzTG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVz
dFRlc3RpbmcsICFleHBlY3RpbmdBcHBJbml0aWF0ZWRSZXF1ZXN0cyk7CisgICAgICAgIGlzRG9u
ZSA9IHRydWU7CisgICAgfV07CisKKyAgICBpc0RvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBf
Y2xlYXJBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGE6XnsKKyAgICAgICAgaXNEb25lID0gdHJ1
ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKwor
ICAgIFt3ZWJWaWV3IHJlbG9hZF07CisgICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3IF90ZXN0
X3dhaXRGb3JBbGVydF0sIGV4cGVjdGVkQWxlcnQpOworCisgICAgaXNEb25lID0gZmFsc2U7Cisg
ICAgW3dlYlZpZXcgX2FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YTogXihzdHJ1Y3QgV0tBcHBQ
cml2YWN5UmVwb3J0VGVzdGluZ0RhdGEgZGF0YSkgeworICAgICAgICBpZiAocmVzcG9uc2VUeXBl
ID09IFJlc3BvbnNlVHlwZTo6U3ludGhldGljKSB7CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0Uo
ZGF0YS5oYXNMb2FkZWRBcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZyk7CisgICAgICAgICAgICBF
WFBFQ1RfRkFMU0UoZGF0YS5oYXNMb2FkZWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZyk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBFWFBFQ1RfRVEoZGF0YS5oYXNMb2FkZWRB
cHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZywgZXhwZWN0aW5nQXBwSW5pdGlhdGVkUmVxdWVzdHMp
OworICAgICAgICAgICAgRVhQRUNUX0VRKGRhdGEuaGFzTG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVx
dWVzdFRlc3RpbmcsICFleHBlY3RpbmdBcHBJbml0aWF0ZWRSZXF1ZXN0cyk7CisgICAgICAgIH0K
KyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmaXNEb25lKTsKK30KKworVEVTVChBcHBQcml2YWN5UmVwb3J0LCBOb25BcHBJbml0
aWF0ZWRSZXF1ZXN0V2l0aFNlcnZpY2VXb3JrZXIpCit7CisgICAgcnVuVGVzdChSZXNwb25zZVR5
cGU6OlN5bnRoZXRpYywgSXNBcHBJbml0aWF0ZWQ6Ok5vKTsKKyAgICBydW5UZXN0KFJlc3BvbnNl
VHlwZTo6RmV0Y2hlZCwgSXNBcHBJbml0aWF0ZWQ6Ok5vKTsKK30KKworVEVTVChBcHBQcml2YWN5
UmVwb3J0LCBBcHBJbml0aWF0ZWRSZXF1ZXN0V2l0aFNlcnZpY2VXb3JrZXIpCit7CisgICAgcnVu
VGVzdChSZXNwb25zZVR5cGU6OlN5bnRoZXRpYywgSXNBcHBJbml0aWF0ZWQ6Olllcyk7CisgICAg
cnVuVGVzdChSZXNwb25zZVR5cGU6OkZldGNoZWQsIElzQXBwSW5pdGlhdGVkOjpZZXMpOworfQor
CitURVNUKEFwcFByaXZhY3lSZXBvcnQsIE11bHRpcGxlV2ViVmlld3NXaXRoU2hhcmVkU2Vydmlj
ZVdvcmtlcikKK3sKKyAgICBzdGF0aWMgYm9vbCBpc0RvbmUgPSBmYWxzZTsKKworICAgIFtbV0tX
ZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dl
YnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRl
IGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgeworICAgICAgICBpc0RvbmUgPSB0
cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKwor
ICAgIGNvbnN0IGNoYXIqIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZl
bnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgoZmV0Y2goJy9mZXRjaGVkLmh0bWwnKSkgfSkiOwor
ICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkQWxlcnQgPSAiZmV0Y2hlZCBmcm9tIHNlcnZlciI7CisK
KyAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7CisgICAgICAgIHsgIi8iLCB7
IG1haW5TV0J5dGVzIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBl
IiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCisgICAgICAgIHsgIi9mZXRj
aGVkLmh0bWwiLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3Njcmlw
dD4iIH0gfSwKKyAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0
cHMpOworCisgICAgYXV0byB3ZWJWaWV3MSA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKKyAg
ICBhdXRvIHdlYlZpZXcyID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOworCisgICAgYXV0byBk
ZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7CisgICAgW2Rl
bGVnYXRlIHNldERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpeKFdLV2ViVmlldyAq
LCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UsIHZvaWQgKF5jYWxsYmFj
aykoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwg
KikpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uu
YXV0aGVudGljYXRpb25NZXRob2QsIE5TVVJMQXV0aGVudGljYXRpb25NZXRob2RTZXJ2ZXJUcnVz
dCk7CisgICAgICAgIGNhbGxiYWNrKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50
aWFsLCBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVj
dGlvblNwYWNlLnNlcnZlclRydXN0XSk7CisgICAgfV07CisgICAgd2ViVmlldzEuZ2V0KCkubmF2
aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgd2ViVmlldzIuZ2V0KCkubmF2
aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisKKyAgICBOU011dGFibGVVUkxSZXF1
ZXN0ICphcHBJbml0aWF0ZWRSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdp
dGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJo
dHRwczovLzEyNy4wLjAuMTolZC8iLCBzZXJ2ZXIucG9ydCgpXV1dOworICAgIGFwcEluaXRpYXRl
ZFJlcXVlc3QuYXR0cmlidXRpb24gPSBOU1VSTFJlcXVlc3RBdHRyaWJ1dGlvbkRldmVsb3BlcjsK
KyAgICBbd2ViVmlldzEgbG9hZFJlcXVlc3Q6YXBwSW5pdGlhdGVkUmVxdWVzdF07CisgICAgRVhQ
RUNUX1dLX1NUUkVRKFt3ZWJWaWV3MSBfdGVzdF93YWl0Rm9yQWxlcnRdLCAic3VjY2Vzc2Z1bGx5
IHJlZ2lzdGVyZWQiKTsKKworICAgIFt3ZWJWaWV3MSByZWxvYWRdOworICAgIEVYUEVDVF9XS19T
VFJFUShbd2ViVmlldzEgX3Rlc3Rfd2FpdEZvckFsZXJ0XSwgZXhwZWN0ZWRBbGVydCk7CisKKyAg
ICBpc0RvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldzEgX2FwcFByaXZhY3lSZXBvcnRUZXN0aW5n
RGF0YTogXihzdHJ1Y3QgV0tBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEgZGF0YSkgeworICAg
ICAgICBFWFBFQ1RfVFJVRShkYXRhLmhhc0xvYWRlZEFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5n
KTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGRhdGEuaGFzTG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVx
dWVzdFRlc3RpbmcpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworCisgICAgaXNEb25lID0gZmFsc2U7Cisg
ICAgW3dlYlZpZXcxIF9jbGVhckFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YTpeeworICAgICAg
ICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZpc0RvbmUpOworCisgICAgaXNEb25lID0gZmFsc2U7CisgICAgTlNNdXRhYmxlVVJMUmVxdWVz
dCAqbm9uQXBwSW5pdGlhdGVkUmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RX
aXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAi
aHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyLnBvcnQoKV1dXTsKKyAgICBub25BcHBJbml0
aWF0ZWRSZXF1ZXN0LmF0dHJpYnV0aW9uID0gTlNVUkxSZXF1ZXN0QXR0cmlidXRpb25Vc2VyOwor
ICAgIFt3ZWJWaWV3MiBsb2FkUmVxdWVzdDpub25BcHBJbml0aWF0ZWRSZXF1ZXN0XTsKKyAgICBF
WFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcyIF90ZXN0X3dhaXRGb3JBbGVydF0sICJmZXRjaGVkIGZy
b20gc2VydmVyIik7CisKKyAgICBbd2ViVmlldzIgcmVsb2FkXTsKKyAgICBFWFBFQ1RfV0tfU1RS
RVEoW3dlYlZpZXcyIF90ZXN0X3dhaXRGb3JBbGVydF0sIGV4cGVjdGVkQWxlcnQpOworCisgICAg
W3dlYlZpZXcyIF9hcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGE6IF4oc3RydWN0IFdLQXBwUHJp
dmFjeVJlcG9ydFRlc3RpbmdEYXRhIGRhdGEpIHsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGRhdGEu
aGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcpOworICAgICAgICBFWFBFQ1RfVFJV
RShkYXRhLmhhc0xvYWRlZE5vbkFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nKTsKKyAgICAgICAg
aXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlz
RG9uZSk7Cit9CisKK3N0YXRpYyB2b2lkIHNvZnRVcGRhdGVUZXN0KElzQXBwSW5pdGlhdGVkIGlz
QXBwSW5pdGlhdGVkKQoreworICAgIHN0YXRpYyBib29sIGlzRG9uZSA9IGZhbHNlOworICAgIFtb
V0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltX
S1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNE
YXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgeworICAgICAgICBpc0RvbmUg
PSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsK
KworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5l
d10pOworICAgIFtkZWxlZ2F0ZSBzZXREaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6
XihXS1dlYlZpZXcgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLCB2
b2lkICheY2FsbGJhY2spKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNV
UkxDcmVkZW50aWFsICopKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShjaGFsbGVuZ2UucHJv
dGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kLCBOU1VSTEF1dGhlbnRpY2F0aW9uTWV0
aG9kU2VydmVyVHJ1c3QpOworICAgICAgICBjYWxsYmFjayhOU1VSTFNlc3Npb25BdXRoQ2hhbGxl
bmdlVXNlQ3JlZGVudGlhbCwgW05TVVJMQ3JlZGVudGlhbCBjcmVkZW50aWFsRm9yVHJ1c3Q6Y2hh
bGxlbmdlLnByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJUcnVzdF0pOworICAgIH1dOworCisgICAgYXV0
byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKKyAgICBhdXRvIHdlYlZpZXcxID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBhdXRvIHdlYlZpZXcyID0gYWRvcHROUyhbW1dLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAgIHdlYlZpZXcxLmdldCgpLm5h
dmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworICAgIHdlYlZpZXcyLmdldCgpLm5h
dmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworCisgICAgdWludDE2X3Qgc2VydmVy
UG9ydDsKKyAgICBzdGF0aWMgY29uc3QgY2hhcioganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVy
KCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3
IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10s
IHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIjsKKworICAgIHsKKyAgICAgICAgVGVzdFdlYktp
dEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIxKHsKKyAgICAgICAgICAgIHsgIi8iLCB7IG1haW5TV0J5
dGVzIH0gfSwKKyAgICAgICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJh
cHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9LAorICAgICAgICB9LCBUZXN0V2ViS2l0
QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIHRlc3RJZGVudGl0eSgp
KTsKKyAgICAgICAgc2VydmVyUG9ydCA9IHNlcnZlcjEucG9ydCgpOworCisgICAgICAgIE5TVVJM
UmVxdWVzdCAqcmVxdWVzdCA9IHNlcnZlcjEucmVxdWVzdCgpOworICAgICAgICBpZiAoaXNBcHBJ
bml0aWF0ZWQgPT0gSXNBcHBJbml0aWF0ZWQ6Ok5vKSB7CisgICAgICAgICAgICBOU011dGFibGVV
UkxSZXF1ZXN0ICpub25BcHBJbml0aWF0ZWRSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3Qg
cmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhG
b3JtYXQ6QCJodHRwczovLzEyNy4wLjAuMTolZC8iLCBzZXJ2ZXIxLnBvcnQoKV1dXTsKKyAgICAg
ICAgICAgIG5vbkFwcEluaXRpYXRlZFJlcXVlc3QuYXR0cmlidXRpb24gPSBOU1VSTFJlcXVlc3RB
dHRyaWJ1dGlvbkRldmVsb3BlcjsKKyAgICAgICAgICAgIHJlcXVlc3QgPSBub25BcHBJbml0aWF0
ZWRSZXF1ZXN0OworICAgICAgICB9CisKKyAgICAgICAgW3dlYlZpZXcxIGxvYWRSZXF1ZXN0OnJl
cXVlc3RdOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcxIF90ZXN0X3dhaXRGb3JB
bGVydF0sICJzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZCIpOworCisgICAgICAgIHNlcnZlcjEuY2Fu
Y2VsKCk7CisgICAgfQorCisgICAgeworICAgICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVy
IHNlcnZlcjIoeworICAgICAgICAgICAgeyAiLyIsIHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAg
ICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFz
Y3JpcHQiIH19LCBqcyB9IH0KKyAgICAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6
UHJvdG9jb2w6Okh0dHBzLCBudWxscHRyLCB0ZXN0SWRlbnRpdHkyKCksIHNlcnZlclBvcnQpOwor
CisgICAgICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKnJlcXVlc3QyID0gW05TTXV0YWJsZVVSTFJl
cXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmlu
Z1dpdGhGb3JtYXQ6QCJodHRwczovLzEyNy4wLjAuMTolZC8iLCBzZXJ2ZXIyLnBvcnQoKV1dXTsK
KyAgICAgICAgYXV0byBhdHRyaWJ1dGlvblZhbHVlID0gaXNBcHBJbml0aWF0ZWQgPT0gSXNBcHBJ
bml0aWF0ZWQ6OlllcyA/IE5TVVJMUmVxdWVzdEF0dHJpYnV0aW9uRGV2ZWxvcGVyIDogTlNVUkxS
ZXF1ZXN0QXR0cmlidXRpb25Vc2VyOworICAgICAgICByZXF1ZXN0Mi5hdHRyaWJ1dGlvbiA9IGF0
dHJpYnV0aW9uVmFsdWU7CisKKyAgICAgICAgaXNEb25lID0gZmFsc2U7CisgICAgICAgIFt3ZWJW
aWV3MSBfY2xlYXJBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGE6XnsKKyAgICAgICAgICAgIGlz
RG9uZSA9IHRydWU7CisgICAgICAgIH1dOworCisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmaXNEb25lKTsKKworICAgICAgICBbd2ViVmlldzIgbG9hZFJlcXVlc3Q6cmVxdWVzdDJd
OworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcyIF90ZXN0X3dhaXRGb3JBbGVydF0s
ICJzeW50aGV0aWMgcmVzcG9uc2UiKTsKKyAgICB9CisKKyAgICBpc0RvbmUgPSBmYWxzZTsKKyAg
ICBib29sIGV4cGVjdGluZ0FwcEluaXRpYXRlZFJlcXVlc3RzID0gaXNBcHBJbml0aWF0ZWQgPT0g
SXNBcHBJbml0aWF0ZWQ6OlllcyA/IHRydWUgOiBmYWxzZTsKKyAgICB3aGlsZSAoIWlzRG9uZSkg
eworICAgICAgICBbd2ViVmlldzIgX2FwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YTogXihzdHJ1
Y3QgV0tBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEgZGF0YSkgeworICAgICAgICAgICAgaWYg
KCFkYXRhLmRpZFBlcmZvcm1Tb2Z0VXBkYXRlKQorICAgICAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICAgICAgRVhQRUNUX0VRKGRhdGEuaGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVzdFRl
c3RpbmcsIGV4cGVjdGluZ0FwcEluaXRpYXRlZFJlcXVlc3RzKTsKKyAgICAgICAgICAgIEVYUEVD
VF9FUShkYXRhLmhhc0xvYWRlZE5vbkFwcEluaXRpYXRlZFJlcXVlc3RUZXN0aW5nLCAhZXhwZWN0
aW5nQXBwSW5pdGlhdGVkUmVxdWVzdHMpOworICAgICAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAg
ICAgICAgfV07CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29wKDEpOwor
ICAgIH0KK30KKworVEVTVChBcHBQcml2YWN5UmVwb3J0LCBBcHBJbml0aWF0ZWRSZXF1ZXN0V2l0
aFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlKQoreworICAgIHNvZnRVcGRhdGVUZXN0KElzQXBwSW5p
dGlhdGVkOjpZZXMpOworfQorCitURVNUKEFwcFByaXZhY3lSZXBvcnQsIE5vbkFwcEluaXRpYXRl
ZFJlcXVlc3RXaXRoU2VydmljZVdvcmtlclNvZnRVcGRhdGUpCit7CisgICAgc29mdFVwZGF0ZVRl
c3QoSXNBcHBJbml0aWF0ZWQ6Ok5vKTsKK30KKworc3RhdGljIHZvaWQgcnVuV2ViUHJvY2Vzc1Bs
dWdJblRlc3QoSXNBcHBJbml0aWF0ZWQgaXNBcHBJbml0aWF0ZWQpCit7CisgICAgV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90
ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIkFwcFByaXZhY3lSZXBv
cnRQbHVnSW4iXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb25dKTsKKworICAgIE5TU3RyaW5nICp1cmwgPSBAImh0dHBzOi8vd2Vi
a2l0Lm9yZyI7CisKKyAgICBfX2Jsb2NrIGJvb2wgaXNEb25lID0gZmFsc2U7CisgICAgTlNNdXRh
YmxlVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRo
VVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOnVybF1dOworICAgIGF1dG8gYXR0cmlidXRpb25WYWx1
ZSA9IGlzQXBwSW5pdGlhdGVkID09IElzQXBwSW5pdGlhdGVkOjpZZXMgPyBOU1VSTFJlcXVlc3RB
dHRyaWJ1dGlvbkRldmVsb3BlciA6IE5TVVJMUmVxdWVzdEF0dHJpYnV0aW9uVXNlcjsKKyAgICBy
ZXF1ZXN0LmF0dHJpYnV0aW9uID0gYXR0cmlidXRpb25WYWx1ZTsKKworICAgIFt3ZWJWaWV3IGxv
YWRSZXF1ZXN0OnJlcXVlc3RdOworICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hO
YXZpZ2F0aW9uXTsKKworICAgIGlzRG9uZSA9IGZhbHNlOworICAgIGJvb2wgZXhwZWN0aW5nQXBw
SW5pdGlhdGVkUmVxdWVzdHMgPSBpc0FwcEluaXRpYXRlZCA9PSBJc0FwcEluaXRpYXRlZDo6WWVz
ID8gdHJ1ZSA6IGZhbHNlOworICAgIFt3ZWJWaWV3IF9hcHBQcml2YWN5UmVwb3J0VGVzdGluZ0Rh
dGE6XihzdHJ1Y3QgV0tBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEgZGF0YSkgeworICAgICAg
ICBFWFBFQ1RfRVEoZGF0YS5oYXNMb2FkZWRBcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZywgZXhw
ZWN0aW5nQXBwSW5pdGlhdGVkUmVxdWVzdHMpOworICAgICAgICBFWFBFQ1RfRVEoZGF0YS5oYXNM
b2FkZWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0VGVzdGluZywgIWV4cGVjdGluZ0FwcEluaXRpYXRl
ZFJlcXVlc3RzKTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKK30KKworVEVTVChBcHBQcml2YWN5UmVwb3J0
LCBXZWJQcm9jZXNzUGx1Z2luVGVzdEFwcEluaXRpYXRlZCkKK3sKKyAgICBydW5XZWJQcm9jZXNz
UGx1Z0luVGVzdChJc0FwcEluaXRpYXRlZDo6WWVzKTsKK30KKworVEVTVChBcHBQcml2YWN5UmVw
b3J0LCBXZWJQcm9jZXNzUGx1Z2luVGVzdE5vbkFwcEluaXRpYXRlZCkKK3sKKyAgICBydW5XZWJQ
cm9jZXNzUGx1Z0luVGVzdChJc0FwcEluaXRpYXRlZDo6Tm8pOworfQorCisjaWYgV0tfSEFWRV9D
X1NQSQorCitzdGF0aWMgY29uc3QgY2hhciogbWFpblNXQnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNX
UkVTT1VSQ0UoCis8c2NyaXB0PgorCitmdW5jdGlvbiBsb2cobXNnKQoreworICAgIHdpbmRvdy53
ZWJraXQubWVzc2FnZUhhbmRsZXJzLnN3LnBvc3RNZXNzYWdlKG1zZyk7Cit9CisKK25hdmlnYXRv
ci5zZXJ2aWNlV29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBmdW5jdGlvbihldmVu
dCkgeworICAgIGxvZyhldmVudC5kYXRhKTsKK30pOworCit0cnkgeworICAgIG5hdmlnYXRvci5z
ZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKS50aGVuKGZ1bmN0aW9uKHJlZykgeworICAg
ICAgICBpZiAocmVnLmFjdGl2ZSkgeworICAgICAgICAgICAgd29ya2VyID0gcmVnLmFjdGl2ZTsK
KyAgICAgICAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSgiU0VDT05EIik7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgd29ya2VyID0gcmVnLmluc3RhbGxpbmc7CisgICAg
ICAgIHdvcmtlci5hZGRFdmVudExpc3RlbmVyKCdzdGF0ZWNoYW5nZScsIGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgaWYgKHdvcmtlci5zdGF0ZSA9PSAnYWN0aXZhdGVkJykKKyAgICAgICAgICAg
ICAgICB3b3JrZXIucG9zdE1lc3NhZ2UoIkZJUlNUIik7CisgICAgICAgIH0pOworICAgIH0pLmNh
dGNoKGZ1bmN0aW9uKGVycm9yKSB7CisgICAgICAgIGxvZygnUmVnaXN0cmF0aW9uIGZhaWxlZCB3
aXRoOiAnICsgZXJyb3IpOworICAgIH0pOworfSBjYXRjaChlKSB7CisgICAgbG9nKCdFeGNlcHRp
b246ICcgKyBlKTsKK30KKzwvc2NyaXB0PgorKVNXUkVTT1VSQ0UiOworCitzdGF0aWMgY29uc3Qg
Y2hhciogc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCitzZWxmLmFkZEV2
ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBhc3luYyAoZXZlbnQpID0+IHsKKyAgICBpZiAoIXNlbGYu
aW50ZXJuYWxzKSB7CisgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgnTm8gaW50ZXJu
YWxzJyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBxdWVyeUFwcFByaXZhY3lSZXBv
cnRWYWx1ZShldmVudCwgZmFsc2UpOworfSk7CisKK2FzeW5jIGZ1bmN0aW9uIHF1ZXJ5QXBwUHJp
dmFjeVJlcG9ydFZhbHVlKGV2ZW50LCBoYXZlU2VudEluaXRpYWxNZXNzYWdlKQoreworICAgIHZh
ciByZXN1bHQgPSBhd2FpdCBpbnRlcm5hbHMubGFzdE5hdmlnYXRpb25XYXNBcHBQcml2YWN5UmVw
b3J0KCk7CisgICAgaWYgKHJlc3VsdCkgeworICAgICAgICBpZiAoZXZlbnQuZGF0YSA9PSAiRklS
U1QiKSB7CisgICAgICAgICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoJ2FwcCBpbml0aWF0
ZWQnKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghaGF2
ZVNlbnRJbml0aWFsTWVzc2FnZSkKKyAgICAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2Fn
ZSgnc3RhcnRzIGFwcCBpbml0aWF0ZWQnKTsKKworICAgICAgICBxdWVyeUFwcFByaXZhY3lSZXBv
cnRWYWx1ZShldmVudCwgdHJ1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBldmVu
dC5zb3VyY2UucG9zdE1lc3NhZ2UoJ25vbiBhcHAgaW5pdGlhdGVkJyk7Cit9CisKKylTV1JFU09V
UkNFIjsKKworCitzdGF0aWMgU3RyaW5nIGV4cGVjdGVkTWVzc2FnZTsKK3N0YXRpYyBib29sIHJl
Y2VpdmVkTWVzc2FnZSA9IGZhbHNlOworCitAaW50ZXJmYWNlIFNXQXBwSW5pdGlhdGVkUmVxdWVz
dE1lc3NhZ2VIYW5kbGVyIDogTlNPYmplY3QgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+CitAZW5k
CisKK0BpbXBsZW1lbnRhdGlvbiBTV0FwcEluaXRpYXRlZFJlcXVlc3RNZXNzYWdlSGFuZGxlcgor
LSAodm9pZCl1c2VyQ29udGVudENvbnRyb2xsZXI6KFdLVXNlckNvbnRlbnRDb250cm9sbGVyICop
dXNlckNvbnRlbnRDb250cm9sbGVyIGRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOihXS1NjcmlwdE1l
c3NhZ2UgKiltZXNzYWdlCit7CisgICAgRVhQRUNUX1dLX1NUUkVRKG1lc3NhZ2UuYm9keSwgZXhw
ZWN0ZWRNZXNzYWdlKTsKKyAgICByZWNlaXZlZE1lc3NhZ2UgPSB0cnVlOworfQorQGVuZAorCitU
RVNUKEFwcFByaXZhY3lSZXBvcnQsIFJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFVwZGF0ZXNB
cHBJbml0aWF0ZWRWYWx1ZSkKK3sKKyAgICBzdGF0aWMgYm9vbCBpc0RvbmUgPSBmYWxzZTsKKwor
ICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5
cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5j
ZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgeworICAgICAgICBp
c0RvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNE
b25lKTsKKworICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFz
c05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVz
dGluZzpZRVNdOworICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0
V0soVGVzdFdlYktpdEFQSTo6VXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVz
dCgiSW50ZXJuYWxzSW5qZWN0ZWRCdW5kbGVUZXN0IikpOworICAgIGNvbmZpZ3VyYXRpb24ucHJv
Y2Vzc1Bvb2wgPSAoV0tQcm9jZXNzUG9vbCAqKWNvbnRleHQuZ2V0KCk7CisKKyAgICBSZXRhaW5Q
dHI8U1dBcHBJbml0aWF0ZWRSZXF1ZXN0TWVzc2FnZUhhbmRsZXI+IG1lc3NhZ2VIYW5kbGVyID0g
YWRvcHROUyhbW1NXQXBwSW5pdGlhdGVkUmVxdWVzdE1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0
XSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0
TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInN3Il07CisKKyAgICBh
dXRvIHdlYlZpZXcxID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsK
KyAgICBhdXRvIHdlYlZpZXcyID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRp
b25dKTsKKworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVn
YXRlIG5ld10pOworICAgIFtkZWxlZ2F0ZSBzZXREaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2U6XihXS1dlYlZpZXcgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxl
bmdlLCB2b2lkICheY2FsbGJhY2spKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlv
biwgTlNVUkxDcmVkZW50aWFsICopKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShjaGFsbGVu
Z2UucHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kLCBOU1VSTEF1dGhlbnRpY2F0
aW9uTWV0aG9kU2VydmVyVHJ1c3QpOworICAgICAgICBjYWxsYmFjayhOU1VSTFNlc3Npb25BdXRo
Q2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgW05TVVJMQ3JlZGVudGlhbCBjcmVkZW50aWFsRm9yVHJ1
c3Q6Y2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJUcnVzdF0pOworICAgIH1dOworCisg
ICAgd2ViVmlldzEuZ2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7Cisg
ICAgd2ViVmlldzIuZ2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisK
KyAgICBTZXJ2aWNlV29ya2VyVENQU2VydmVyIHNlcnZlcih7CisgICAgICAgIHsgInRleHQvaHRt
bCIsIG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlIH0sCisgICAgICAgIHsgImFwcGxpY2F0aW9uL2ph
dmFzY3JpcHQiLCBzY3JpcHRCeXRlc0RlZmF1bHRWYWx1ZSB9LAorICAgIH0sIHsKKyAgICAgICAg
eyAidGV4dC9odG1sIiwgbWFpblNXQnl0ZXNEZWZhdWx0VmFsdWUgfSwKKyAgICAgICAgeyAiYXBw
bGljYXRpb24vamF2YXNjcmlwdCIsIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlIH0sCisgICAgfSk7
CisKKyAgICAvLyBMb2FkIFdlYlZpZXcgd2l0aCBhbiBhcHAgaW5pdGlhdGVkIHJlcXVlc3QuIFdl
IGV4cGVjdCB0aGUgU2VydmljZVdvcmtlclRocmVhZFByb3h5IHRvIGJlIGFwcCBpbml0aWF0ZWQu
CisgICAgZXhwZWN0ZWRNZXNzYWdlID0gImFwcCBpbml0aWF0ZWQiOworICAgIFt3ZWJWaWV3MSBs
b2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJnJlY2VpdmVkTWVzc2FnZSk7CisKKyAgICAvLyBMb2FkIFdlYlZpZXcgd2l0aCBhIG5vbiBh
cHAgaW5pdGlhdGVkIHJlcXVlc3QuIFdlIGV4cGVjdCB0aGUgU2VydmljZVdvcmtlclRocmVhZFBy
b3h5IHRvIGJlIGFwcCBpbml0aWF0ZWQKKyAgICAvLyBhdCBmaXJzdCwgYnV0IHRoZW4gYmVjb21l
IG5vbiBhcHAgaW5pdGlhdGVkIG9uY2UgdGhlIHNlY29uZCB3ZWJWaWV3IGlzIGNsb3NlZCBhbmQg
aXRzIGNsaWVudCBpcyB1bnJlZ2lzdGVyZWQuCisgICAgZXhwZWN0ZWRNZXNzYWdlID0gInN0YXJ0
cyBhcHAgaW5pdGlhdGVkIjsKKyAgICByZWNlaXZlZE1lc3NhZ2UgPSBmYWxzZTsKKyAgICBOU011
dGFibGVVUkxSZXF1ZXN0ICpub25BcHBJbml0aWF0ZWRSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJl
cXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmlu
Z1dpdGhGb3JtYXQ6QCJodHRwOi8vMTI3LjAuMC4xOiVkL21haW4uaHRtbCIsIHNlcnZlci5wb3J0
KCldXV07CisgICAgbm9uQXBwSW5pdGlhdGVkUmVxdWVzdC5hdHRyaWJ1dGlvbiA9IE5TVVJMUmVx
dWVzdEF0dHJpYnV0aW9uVXNlcjsKKworICAgIFt3ZWJWaWV3MiBsb2FkUmVxdWVzdDpub25BcHBJ
bml0aWF0ZWRSZXF1ZXN0XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVk
TWVzc2FnZSk7CisKKyAgICAvLyBDbG9zZSB0aGUgYXBwIGluaXRpYXRlZCB2aWV3LiBXZSBleHBl
Y3QgdGhhdCB0aGUgZXhpc3Rpbmcgd29ya2VyIHdpbGwgYmVjb21lIG5vbiBhcHAgaW5pdGlhdGVk
CisgICAgLy8gbm93IHRoYXQgYWxsIGFwcCBpbml0aWF0ZWQgY2xpZW50cyBoYXZlIGJlZW4gcmVt
b3ZlZC4KKyAgICBleHBlY3RlZE1lc3NhZ2UgPSAibm9uIGFwcCBpbml0aWF0ZWQiOworICAgIHJl
Y2VpdmVkTWVzc2FnZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3MSBfY2xvc2VdOworICAgIHdlYlZp
ZXcxID0gbnVsbHB0cjsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRN
ZXNzYWdlKTsKK30KKworI2VuZGlmIC8vIFdLX0hBVkVfQ19TUEkKKworc3RhdGljIHZvaWQgbG9h
ZFNpbXVsYXRlZFJlcXVlc3RUZXN0KElzQXBwSW5pdGlhdGVkIGlzQXBwSW5pdGlhdGVkKQorewor
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKworICAgIGF1dG8gZGVsZWdhdGUgPSBh
ZG9wdE5TKFtbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJW
aWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBOU011dGFi
bGVVUkxSZXF1ZXN0ICpsb2FkUmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RX
aXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly93ZWJraXQub3JnIl1dOworICAg
IGxvYWRSZXF1ZXN0LmF0dHJpYnV0aW9uID0gaXNBcHBJbml0aWF0ZWQgPT0gSXNBcHBJbml0aWF0
ZWQ6OlllcyA/IE5TVVJMUmVxdWVzdEF0dHJpYnV0aW9uRGV2ZWxvcGVyIDogTlNVUkxSZXF1ZXN0
QXR0cmlidXRpb25Vc2VyOworCisgICAgTlNTdHJpbmcgKkhUTUwgPSBAIjxodG1sPjxoZWFkPjwv
aGVhZD48Ym9keT48aW1nIHNyYz0naHR0cHM6Ly9hcHBsZS5jb20vJz48L2ltZz48L2JvZHk+PC9o
dG1sPiI7CisgICAgW3dlYlZpZXcgbG9hZFNpbXVsYXRlZFJlcXVlc3Q6bG9hZFJlcXVlc3QgcmVz
cG9uc2VIVE1MU3RyaW5nOkhUTUxdOworICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmluaXNoTmF2
aWdhdGlvbl07CisKKyAgICBzdGF0aWMgYm9vbCBpc0RvbmUgPSBmYWxzZTsKKyAgICBib29sIGV4
cGVjdGluZ0FwcEluaXRpYXRlZFJlcXVlc3RzID0gaXNBcHBJbml0aWF0ZWQgPT0gSXNBcHBJbml0
aWF0ZWQ6OlllcyA/IHRydWUgOiBmYWxzZTsKKyAgICBbd2ViVmlldyBfYXBwUHJpdmFjeVJlcG9y
dFRlc3RpbmdEYXRhOl4oc3RydWN0IFdLQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdEYXRhIGRhdGEp
IHsKKyAgICAgICAgRVhQRUNUX0VRKGRhdGEuaGFzTG9hZGVkQXBwSW5pdGlhdGVkUmVxdWVzdFRl
c3RpbmcsIGV4cGVjdGluZ0FwcEluaXRpYXRlZFJlcXVlc3RzKTsKKyAgICAgICAgRVhQRUNUX0VR
KGRhdGEuaGFzTG9hZGVkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFRlc3RpbmcsICFleHBlY3RpbmdB
cHBJbml0aWF0ZWRSZXF1ZXN0cyk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07Cisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworfQorCitURVNUKEFwcFByaXZh
Y3lSZXBvcnQsIExvYWRTaW11bGF0ZWRSZXF1ZXN0SXNBcHBJbml0aWF0ZWQpCit7CisgICAgbG9h
ZFNpbXVsYXRlZFJlcXVlc3RUZXN0KElzQXBwSW5pdGlhdGVkOjpZZXMpOworfQorCitURVNUKEFw
cFByaXZhY3lSZXBvcnQsIExvYWRTaW11bGF0ZWRSZXF1ZXN0SXNOb25BcHBJbml0aWF0ZWQpCit7
CisgICAgbG9hZFNpbXVsYXRlZFJlcXVlc3RUZXN0KElzQXBwSW5pdGlhdGVkOjpObyk7Cit9CisK
KyNlbmRpZiAvLyBBUFBfUFJJVkFDWV9SRVBPUlQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydFBsdWdJbi5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydFBsdWdJbi5t
bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wYTEzN2RkMmUxMzM1NWU5Y2NkMDZhNWQwODJkZTYxMTFlMjlmNTdmCi0t
LSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9B
cHBQcml2YWN5UmVwb3J0UGx1Z0luLm1tCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0ICJjb25maWcuaCIKKworI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBv
cnQgPFdlYktpdC9XS1dlYlByb2Nlc3NQbHVnSW4uaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlBy
b2Nlc3NQbHVnSW5Mb2FkRGVsZWdhdGUuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKwor
QGludGVyZmFjZSBBcHBQcml2YWN5UmVwb3J0UGx1Z0luIDogTlNPYmplY3QgPFdLV2ViUHJvY2Vz
c1BsdWdJbiwgV0tXZWJQcm9jZXNzUGx1Z0luTG9hZERlbGVnYXRlPgorQGVuZAorCitAaW1wbGVt
ZW50YXRpb24gQXBwUHJpdmFjeVJlcG9ydFBsdWdJbiB7IH0KKworLSAoTlNVUkxSZXF1ZXN0ICop
d2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjooV0tXZWJQcm9jZXNzUGx1
Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyICopY29udHJvbGxlciBmcmFtZTooV0tXZWJQcm9j
ZXNzUGx1Z0luRnJhbWUgKilmcmFtZSB3aWxsU2VuZFJlcXVlc3RGb3JSZXNvdXJjZToodWludDY0
X3QpcmVzb3VyY2UgcmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCByZWRpcmVjdFJlc3Bv
bnNlOihOU1VSTFJlc3BvbnNlICopcmVkaXJlY3RSZXNwb25zZQoreworICAgIHJldHVybiBhZG9w
dE5TKFtbTlNVUkxSZXF1ZXN0IGFsbG9jXSBpbml0V2l0aFVSTDpyZXF1ZXN0LlVSTF0pLmF1dG9y
ZWxlYXNlKCk7Cit9CisKK0BlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQppbmRleCAzN2NkOTI1
Mjg0ZjMzZjU0MGJhMTE2OGQ4YTZkMjA4YmU3ZjljYmYwLi45YmQ1ZDE5MmZiYTAxOTAzMjBkM2Uz
YzA2NWMxZGI1NzRjNGNhNjA4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCkBAIC0yNSwxMSAr
MjUsOSBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKIAotI2ltcG9ydCAiSFRUUFNlcnZlci5oIgog
I2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlNlcnZpY2VXb3JrZXJUQ1BT
ZXJ2ZXIuaCIKICNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIKLSNpbXBvcnQgIlRl
c3RVSURlbGVnYXRlLmgiCiAjaW1wb3J0ICJUZXN0VVJMU2NoZW1lSGFuZGxlci5oIgogI2ltcG9y
dCAiVGVzdFdLV2ViVmlldy5oIgogI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4dHJh
cy5oIgpAQCAtNDQsNyArNDIsNiBAQAogI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9y
ZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tVc2VyQ29udGVudFdvcmxkLmg+CiAjaW1w
b3J0IDxXZWJLaXQvX1dLVXNlclN0eWxlU2hlZXQuaD4KLSNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZO
ZXR3b3JrU1BJLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgogI2ltcG9ydCA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKQEAgLTE0MTcsNjU5ICsxNDE0LDMgQEAgVEVTVChJbkFwcEJyb3dzZXJQ
cml2YWN5LCBBYm91dEJsYW5rU3ViRnJhbWVNYXRjaGVzVG9wRnJhbWVOb25BcHBCb3VuZCkKIH0K
IAogI2VuZGlmIC8vIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKLQotI2lmIEVOQUJMRShBUFBf
UFJJVkFDWV9SRVBPUlQpCi1URVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kUmVxdWVz
dCkKLXsKLSAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0pOwotCi0gICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rl
c3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9u
OmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBOU1N0cmluZyAqdXJsID0gQCJodHRwczovL3dl
YmtpdC5vcmciOwotCi0gICAgX19ibG9jayBib29sIGlzRG9uZSA9IGZhbHNlOwotICAgIE5TTXV0
YWJsZVVSTFJlcXVlc3QgKm5vbkFwcEJvdW5kUmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0
IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOnVybF1dOwotCi0gICAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICBub25BcHBCb3VuZFJlcXVlc3QuX2lz
Tm9uQXBwSW5pdGlhdGVkID0gWUVTOwotICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0VORAotCi0gICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6bm9uQXBwQm91bmRSZXF1ZXN0XTsKLSAg
ICBbd2ViVmlldyBfdGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07Ci0KLSAgICBbd2Vi
VmlldyBfbGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZDpeKEJPT0wgaXNBcHBCb3VuZCkgewotICAg
ICAgICBFWFBFQ1RfRkFMU0UoaXNBcHBCb3VuZCk7Ci0gICAgICAgIGlzRG9uZSA9IHRydWU7Ci0g
ICAgfV07Ci0KLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Ci0gICAgCi0g
ICAgaXNEb25lID0gZmFsc2U7Ci0gICAgW3dlYlZpZXcgX2FwcEJvdW5kTmF2aWdhdGlvbkRhdGE6
XihzdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBkYXRhKSB7Ci0gICAgICAg
IEVYUEVDVF9GQUxTRShkYXRhLmhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRlc3RpbmcpOwotICAg
ICAgICBFWFBFQ1RfVFJVRShkYXRhLmhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3Rpbmcp
OwotICAgICAgICBpc0RvbmUgPSB0cnVlOwotICAgIH1dOwotCi0gICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZpc0RvbmUpOwotfQotCi1URVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJv
dW5kUmVxdWVzdFdpdGhOYXZpZ2F0aW9uKQotewotICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0KLSAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpD
R1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAgIE5TU3Ry
aW5nICpzdGFydGluZ1VSTCA9IEAiaHR0cHM6Ly93d3cud2Via2l0Lm9yZyI7Ci0gICAgTlNTdHJp
bmcgKm5vbkFwcEJvdW5kVVJMID0gQCJodHRwczovL3d3dy5hcHBsZS5jb20iOwotCi0gICAgTlNN
dXRhYmxlVVJMUmVxdWVzdCAqc3RhcnRpbmdSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3Qg
cmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6c3RhcnRpbmdVUkxdXTsKLQotICAg
IFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnN0YXJ0aW5nUmVxdWVzdF07Ci0gICAgW3dlYlZpZXcgX3Rl
c3Rfd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwotCi0gICAgX19ibG9jayBib29sIGlzRG9u
ZSA9IGZhbHNlOwotICAgIFt3ZWJWaWV3IF9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOl4oQk9P
TCBpc0FwcEJvdW5kKSB7Ci0gICAgICAgIEVYUEVDVF9UUlVFKGlzQXBwQm91bmQpOwotICAgICAg
ICBpc0RvbmUgPSB0cnVlOwotICAgIH1dOwotCi0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZpc0RvbmUpOwotICAgIAotICAgIGlzRG9uZSA9IGZhbHNlOwotICAgIFt3ZWJWaWV3IF9hcHBC
b3VuZE5hdmlnYXRpb25EYXRhOl4oc3RydWN0IFdLQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0Rh
dGEgZGF0YSkgewotICAgICAgICBFWFBFQ1RfVFJVRShkYXRhLmhhc0xvYWRlZEFwcEJvdW5kUmVx
dWVzdFRlc3RpbmcpOwotICAgICAgICBFWFBFQ1RfRkFMU0UoZGF0YS5oYXNMb2FkZWROb25BcHBC
b3VuZFJlcXVlc3RUZXN0aW5nKTsKLSAgICAgICAgaXNEb25lID0gdHJ1ZTsKLSAgICB9XTsKLQot
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKLSAgICAKLSAgICBpc0RvbmUg
PSBmYWxzZTsKLSAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpub25BcHBCb3VuZFJlcXVlc3QgPSBb
TlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpu
b25BcHBCb3VuZFVSTF1dOwotICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lO
Ci0gICAgbm9uQXBwQm91bmRSZXF1ZXN0Ll9pc05vbkFwcEluaXRpYXRlZCA9IFlFUzsKLSAgICBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLSAgICAKLSAgICBpc0RvbmUgPSBmYWxz
ZTsKLSAgICBbd2ViVmlldyBfY2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhOl57Ci0gICAgICAg
IGlzRG9uZSA9IHRydWU7Ci0gICAgfV07Ci0KLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmlzRG9uZSk7Ci0KLSAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpub25BcHBCb3VuZFJlcXVlc3Rd
OwotICAgIFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKLQotICAg
IFt3ZWJWaWV3IF9sYXN0TmF2aWdhdGlvbldhc0FwcEJvdW5kOl4oQk9PTCBpc0FwcEJvdW5kKSB7
Ci0gICAgICAgIEVYUEVDVF9GQUxTRShpc0FwcEJvdW5kKTsKLSAgICAgICAgaXNEb25lID0gdHJ1
ZTsKLSAgICB9XTsKLQotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKLSAg
ICAKLSAgICBpc0RvbmUgPSBmYWxzZTsKLSAgICBbd2ViVmlldyBfYXBwQm91bmROYXZpZ2F0aW9u
RGF0YTpeKHN0cnVjdCBXS0FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhIGRhdGEpIHsKLSAg
ICAgICAgRVhQRUNUX0ZBTFNFKGRhdGEuaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZyk7
Ci0gICAgICAgIEVYUEVDVF9UUlVFKGRhdGEuaGFzTG9hZGVkTm9uQXBwQm91bmRSZXF1ZXN0VGVz
dGluZyk7Ci0gICAgICAgIGlzRG9uZSA9IHRydWU7Ci0gICAgfV07Ci0KLSAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Ci19Ci0KLVRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwg
QXBwQm91bmRSZXF1ZXN0V2l0aFN1YkZyYW1lKQotewotICAgIGF1dG8gY29uZmlndXJhdGlvbiA9
IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgW2Nv
bmZpZ3VyYXRpb24gX3NldE92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5OkAic2NyaXB0LXNy
YyAnbm9uY2UtYiciXTsKLQotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFn
ZU5hbWVkOkAicGFnZS13aXRoLWNzcCJdOwotCi0gICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6
QCJNYWluRnJhbWU6IEIiXTsKLSAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIlN1YmZyYW1l
OiBCIl07Ci0KLSAgICBfX2Jsb2NrIGJvb2wgaXNEb25lID0gZmFsc2U7Ci0gICAgW3dlYlZpZXcg
X2FwcEJvdW5kTmF2aWdhdGlvbkRhdGE6XihzdHJ1Y3QgV0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0
aW5nRGF0YSBkYXRhKSB7Ci0gICAgICAgIEVYUEVDVF9UUlVFKGRhdGEuaGFzTG9hZGVkQXBwQm91
bmRSZXF1ZXN0VGVzdGluZyk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShkYXRhLmhhc0xvYWRlZE5v
bkFwcEJvdW5kUmVxdWVzdFRlc3RpbmcpOwotICAgICAgICBpc0RvbmUgPSB0cnVlOwotICAgIH1d
OwotCi0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwotfTsKLQotVEVTVChJ
bkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZFJlcXVlc3RXaXRoU3ViRnJhbWUpCi17Ci0g
ICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKLSAgICBbY29uZmlndXJhdGlvbiBfc2V0T3ZlcnJpZGVDb250ZW50U2Vj
dXJpdHlQb2xpY3k6QCJzY3JpcHQtc3JjICdub25jZS1iJyJdOwotCi0gICAgX19ibG9jayBib29s
IGlzRG9uZSA9IGZhbHNlOwotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAgIE5TTXV0YWJsZVVSTFJlcXVlc3Qg
Km5vbkFwcEJvdW5kUmVxdWVzdCA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJwYWdlLXdpdGgtY3NwIiB3
aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJj
ZXMiXV07Ci0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICBub25B
cHBCb3VuZFJlcXVlc3QuX2lzTm9uQXBwSW5pdGlhdGVkID0gWUVTOwotICAgIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0VORAotCi0gICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6bm9uQXBw
Qm91bmRSZXF1ZXN0XTsKLQotICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiTWFpbkZyYW1l
OiBCIl07Ci0gICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJTdWJmcmFtZTogQiJdOwotCi0g
ICAgW3dlYlZpZXcgX2FwcEJvdW5kTmF2aWdhdGlvbkRhdGE6IF4oc3RydWN0IFdLQXBwQm91bmRO
YXZpZ2F0aW9uVGVzdGluZ0RhdGEgZGF0YSkgewotICAgICAgICBFWFBFQ1RfRkFMU0UoZGF0YS5o
YXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nKTsKLSAgICAgICAgRVhQRUNUX1RSVUUoZGF0
YS5oYXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nKTsKLSAgICAgICAgaXNEb25lID0g
dHJ1ZTsKLSAgICB9XTsKLQotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsK
LX07Ci0KLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluU1dCeXRlcyA9IFIiU1dSRVNPVVJDRSgKLTxz
Y3JpcHQ+Ci10cnkgewotICAgIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cu
anMnKS50aGVuKGZ1bmN0aW9uKHJlZykgewotICAgICAgICBpZiAocmVnLmFjdGl2ZSkgewotICAg
ICAgICAgICAgYWxlcnQoJ3dvcmtlciBhbHJlYWR5IGFjdGl2ZScpOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0gICAgICAgIHdvcmtlciA9IHJlZy5pbnN0YWxsaW5nOwotICAgICAg
ICB3b3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignc3RhdGVjaGFuZ2UnLCBmdW5jdGlvbigpIHsKLSAg
ICAgICAgICAgIGlmICh3b3JrZXIuc3RhdGUgPT0gJ2FjdGl2YXRlZCcpCi0gICAgICAgICAgICAg
ICAgYWxlcnQoJ3N1Y2Nlc3NmdWxseSByZWdpc3RlcmVkJyk7Ci0gICAgICAgIH0pOwotICAgIH0p
LmNhdGNoKGZ1bmN0aW9uKGVycm9yKSB7Ci0gICAgICAgIGFsZXJ0KCdSZWdpc3RyYXRpb24gZmFp
bGVkIHdpdGg6ICcgKyBlcnJvcik7Ci0gICAgfSk7Ci19IGNhdGNoKGUpIHsKLSAgICBhbGVydCgn
RXhjZXB0aW9uOiAnICsgZSk7Ci19Ci08L3NjcmlwdD4KLSlTV1JFU09VUkNFIjsKLQotZW51bSBj
bGFzcyBSZXNwb25zZVR5cGUgeyBTeW50aGV0aWMsIEZldGNoZWQgfTsKLWVudW0gY2xhc3MgSXNB
cHBCb3VuZCA6IGJvb2wgeyBObywgWWVzIH07Ci1zdGF0aWMgdm9pZCBydW5UZXN0KFJlc3BvbnNl
VHlwZSByZXNwb25zZVR5cGUsIElzQXBwQm91bmQgYXBwQm91bmQpCi17Ci0gICAgc3RhdGljIGJv
b2wgaXNEb25lID0gZmFsc2U7Ci0gICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFT
dG9yZV0gcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0
YVR5cGVzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5k
bGVyOl4oKSB7Ci0gICAgICAgIGlzRG9uZSA9IHRydWU7Ci0gICAgfV07Ci0gICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwotCi0gICAgY29uc3QgY2hhcioganMgPSBudWxscHRy
OwotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkQWxlcnQgPSBudWxscHRyOwotCi0gICAgc3dpdGNo
IChyZXNwb25zZVR5cGUpIHsKLSAgICBjYXNlIFJlc3BvbnNlVHlwZTo6U3ludGhldGljOgotICAg
ICAgICBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2
ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZShuZXcgQmxvYihbJzxzY3JpcHQ+YWxlcnQoXCJz
eW50aGV0aWMgcmVzcG9uc2VcIik8L3NjcmlwdD4nXSwge3R5cGU6ICd0ZXh0L2h0bWwnfSkpKTsg
fSkiOwotICAgICAgICBleHBlY3RlZEFsZXJ0ID0gInN5bnRoZXRpYyByZXNwb25zZSI7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgUmVzcG9uc2VUeXBlOjpGZXRjaGVkOgotICAgICAgICBqcyA9
ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3Bv
bmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pOyI7Ci0gICAgICAgIGV4cGVjdGVkQWxl
cnQgPSAiZmV0Y2hlZCBmcm9tIHNlcnZlciI7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAg
IFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiLyIsIHsgbWFp
blNXQnl0ZXMgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAi
YXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfSwKLSAgICAgICAgeyAiL2ZldGNoZWQu
aHRtbCIsIHsgIjxzY3JpcHQ+YWxlcnQoJ2ZldGNoZWQgZnJvbSBzZXJ2ZXInKTwvc2NyaXB0PiIg
fSB9LAotICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7
Ci0KLSAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7Ci0KLSAgICBh
dXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBuZXddKTsKLSAg
ICBbZGVsZWdhdGUgc2V0RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOl4oV0tXZWJW
aWV3ICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwgdm9pZCAoXmNh
bGxiYWNrKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVu
dGlhbCAqKSkgewotICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoY2hhbGxlbmdlLnByb3RlY3Rpb25T
cGFjZS5hdXRoZW50aWNhdGlvbk1ldGhvZCwgTlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZFNlcnZl
clRydXN0KTsKLSAgICAgICAgY2FsbGJhY2soTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNy
ZWRlbnRpYWwsIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbEZvclRydXN0OmNoYWxsZW5nZS5w
cm90ZWN0aW9uU3BhY2Uuc2VydmVyVHJ1c3RdKTsKLSAgICB9XTsKLSAgICB3ZWJWaWV3LmdldCgp
Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwotCi0gICAgTlNVUkxSZXF1ZXN0
ICpyZXF1ZXN0ID0gc2VydmVyLnJlcXVlc3QoKTsKLSAgICBpZiAoYXBwQm91bmQgPT0gSXNBcHBC
b3VuZDo6Tm8pIHsKLSAgICAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqbm9uQXBwQm91bmRSZXF1
ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhT
dHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwczovLzEyNy4wLjAuMTolZC8i
LCBzZXJ2ZXIucG9ydCgpXV1dOwotICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19CRUdJTgotICAgICAgICBub25BcHBCb3VuZFJlcXVlc3QuX2lzTm9uQXBwSW5pdGlhdGVkID0g
WUVTOwotICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLSAgICAgICAg
cmVxdWVzdCA9IG5vbkFwcEJvdW5kUmVxdWVzdDsKLSAgICB9Ci0KLSAgICBbd2ViVmlldyBsb2Fk
UmVxdWVzdDpyZXF1ZXN0XTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcgX3Rlc3Rfd2Fp
dEZvckFsZXJ0XSwgInN1Y2Nlc3NmdWxseSByZWdpc3RlcmVkIik7Ci0KLSAgICBpZiAocmVzcG9u
c2VUeXBlICE9IFJlc3BvbnNlVHlwZTo6RmV0Y2hlZCkKLSAgICAgICAgc2VydmVyLmNhbmNlbCgp
OwotCi0gICAgYm9vbCBleHBlY3RpbmdBcHBCb3VuZFJlcXVlc3RzID0gYXBwQm91bmQgPT0gSXNB
cHBCb3VuZDo6WWVzOwotICAgIGlzRG9uZSA9IGZhbHNlOwotICAgIFt3ZWJWaWV3IF9hcHBCb3Vu
ZE5hdmlnYXRpb25EYXRhOiBeKHN0cnVjdCBXS0FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRh
IGRhdGEpIHsKLSAgICAgICAgRVhQRUNUX0VRKGRhdGEuaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0
VGVzdGluZywgZXhwZWN0aW5nQXBwQm91bmRSZXF1ZXN0cyk7Ci0gICAgICAgIEVYUEVDVF9FUShk
YXRhLmhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3RpbmcsICFleHBlY3RpbmdBcHBCb3Vu
ZFJlcXVlc3RzKTsKLSAgICAgICAgaXNEb25lID0gdHJ1ZTsKLSAgICB9XTsKLQotICAgIGlzRG9u
ZSA9IGZhbHNlOwotICAgIFt3ZWJWaWV3IF9jbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGE6XnsK
LSAgICAgICAgaXNEb25lID0gdHJ1ZTsKLSAgICB9XTsKLQotICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmaXNEb25lKTsKLQotICAgIFt3ZWJWaWV3IHJlbG9hZF07Ci0gICAgRVhQRUNUX1dL
X1NUUkVRKFt3ZWJWaWV3IF90ZXN0X3dhaXRGb3JBbGVydF0sIGV4cGVjdGVkQWxlcnQpOwotCi0g
ICAgaXNEb25lID0gZmFsc2U7Ci0gICAgW3dlYlZpZXcgX2FwcEJvdW5kTmF2aWdhdGlvbkRhdGE6
IF4oc3RydWN0IFdLQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEgZGF0YSkgewotICAgICAg
ICBpZiAocmVzcG9uc2VUeXBlID09IFJlc3BvbnNlVHlwZTo6U3ludGhldGljKSB7Ci0gICAgICAg
ICAgICBFWFBFQ1RfRkFMU0UoZGF0YS5oYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nKTsK
LSAgICAgICAgICAgIEVYUEVDVF9GQUxTRShkYXRhLmhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVz
dFRlc3RpbmcpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgRVhQRUNUX0VRKGRhdGEu
aGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZywgZXhwZWN0aW5nQXBwQm91bmRSZXF1ZXN0
cyk7Ci0gICAgICAgICAgICBFWFBFQ1RfRVEoZGF0YS5oYXNMb2FkZWROb25BcHBCb3VuZFJlcXVl
c3RUZXN0aW5nLCAhZXhwZWN0aW5nQXBwQm91bmRSZXF1ZXN0cyk7Ci0gICAgICAgIH0KLSAgICAg
ICAgaXNEb25lID0gdHJ1ZTsKLSAgICB9XTsKLQotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmaXNEb25lKTsKLX0KLQotVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZFJl
cXVlc3RXaXRoU2VydmljZVdvcmtlcikKLXsKLSAgICBydW5UZXN0KFJlc3BvbnNlVHlwZTo6U3lu
dGhldGljLCBJc0FwcEJvdW5kOjpObyk7Ci0gICAgcnVuVGVzdChSZXNwb25zZVR5cGU6OkZldGNo
ZWQsIElzQXBwQm91bmQ6Ok5vKTsKLX0KLQotVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBC
b3VuZFJlcXVlc3RXaXRoU2VydmljZVdvcmtlcikKLXsKLSAgICBydW5UZXN0KFJlc3BvbnNlVHlw
ZTo6U3ludGhldGljLCBJc0FwcEJvdW5kOjpZZXMpOwotICAgIHJ1blRlc3QoUmVzcG9uc2VUeXBl
OjpGZXRjaGVkLCBJc0FwcEJvdW5kOjpZZXMpOwotfQotCi1URVNUKEluQXBwQnJvd3NlclByaXZh
Y3ksIE11bHRpcGxlV2ViVmlld3NXaXRoU2hhcmVkU2VydmljZVdvcmtlcikKLXsKLSAgICBzdGF0
aWMgYm9vbCBpc0RvbmUgPSBmYWxzZTsKLQotICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1
bHREYXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vi
c2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0
aW9uSGFuZGxlcjpeKCkgewotICAgICAgICBpc0RvbmUgPSB0cnVlOwotICAgIH1dOwotICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKLQotICAgIGNvbnN0IGNoYXIqIGpzID0g
InNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9u
ZFdpdGgoZmV0Y2goJy9mZXRjaGVkLmh0bWwnKSkgfSkiOwotICAgIGNvbnN0IGNoYXIqIGV4cGVj
dGVkQWxlcnQgPSAiZmV0Y2hlZCBmcm9tIHNlcnZlciI7Ci0KLSAgICBUZXN0V2ViS2l0QVBJOjpI
VFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAg
ICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFz
Y3JpcHQiIH19LCBqcyB9IH0sCi0gICAgICAgIHsgIi9mZXRjaGVkLmh0bWwiLCB7ICI8c2NyaXB0
PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iIH0gfSwKLSAgICB9LCBUZXN0
V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwotCi0gICAgYXV0byB3ZWJW
aWV3MSA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKLSAgICBhdXRvIHdlYlZpZXcyID0gYWRv
cHROUyhbV0tXZWJWaWV3IG5ld10pOwotCi0gICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rl
c3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7Ci0gICAgW2RlbGVnYXRlIHNldERpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZTpeKFdLV2ViVmlldyAqLCBOU1VSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlICpjaGFsbGVuZ2UsIHZvaWQgKF5jYWxsYmFjaykoTlNVUkxTZXNzaW9uQXV0aENo
YWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKikpIHsKLSAgICAgICAgRVhQRUNU
X1dLX1NUUkVRKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRob2Qs
IE5TVVJMQXV0aGVudGljYXRpb25NZXRob2RTZXJ2ZXJUcnVzdCk7Ci0gICAgICAgIGNhbGxiYWNr
KE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNVUkxDcmVkZW50aWFs
IGNyZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0
XSk7Ci0gICAgfV07Ci0gICAgd2ViVmlldzEuZ2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVs
ZWdhdGUuZ2V0KCk7Ci0gICAgd2ViVmlldzIuZ2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVs
ZWdhdGUuZ2V0KCk7Ci0KLSAgICBbd2ViVmlldzEgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3Qo
KV07Ci0gICAgRVhQRUNUX1dLX1NUUkVRKFt3ZWJWaWV3MSBfdGVzdF93YWl0Rm9yQWxlcnRdLCAi
c3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyZWQiKTsKLQotICAgIFt3ZWJWaWV3MSByZWxvYWRdOwotICAg
IEVYUEVDVF9XS19TVFJFUShbd2ViVmlldzEgX3Rlc3Rfd2FpdEZvckFsZXJ0XSwgZXhwZWN0ZWRB
bGVydCk7Ci0KLSAgICBpc0RvbmUgPSBmYWxzZTsKLSAgICBbd2ViVmlldzEgX2FwcEJvdW5kTmF2
aWdhdGlvbkRhdGE6IF4oc3RydWN0IFdLQXBwQm91bmROYXZpZ2F0aW9uVGVzdGluZ0RhdGEgZGF0
YSkgewotICAgICAgICBFWFBFQ1RfVFJVRShkYXRhLmhhc0xvYWRlZEFwcEJvdW5kUmVxdWVzdFRl
c3RpbmcpOwotICAgICAgICBFWFBFQ1RfRkFMU0UoZGF0YS5oYXNMb2FkZWROb25BcHBCb3VuZFJl
cXVlc3RUZXN0aW5nKTsKLSAgICAgICAgaXNEb25lID0gdHJ1ZTsKLSAgICB9XTsKLQotICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKLQotICAgIGlzRG9uZSA9IGZhbHNlOwot
ICAgIFt3ZWJWaWV3MSBfY2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhOl57Ci0gICAgICAgIGlz
RG9uZSA9IHRydWU7Ci0gICAgfV07Ci0KLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlz
RG9uZSk7Ci0KLSAgICBpc0RvbmUgPSBmYWxzZTsKLSAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpu
b25BcHBCb3VuZFJlcXVlc3QgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpb
TlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8v
MTI3LjAuMC4xOiVkL21haW4uaHRtbCIsIHNlcnZlci5wb3J0KCldXV07Ci0gICAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICBub25BcHBCb3VuZFJlcXVlc3QuX2lzTm9u
QXBwSW5pdGlhdGVkID0gWUVTOwotICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VO
RAotICAgIFt3ZWJWaWV3MiBsb2FkUmVxdWVzdDpub25BcHBCb3VuZFJlcXVlc3RdOwotICAgIEVY
UEVDVF9XS19TVFJFUShbd2ViVmlldzIgX3Rlc3Rfd2FpdEZvckFsZXJ0XSwgImZldGNoZWQgZnJv
bSBzZXJ2ZXIiKTsKLQotICAgIFt3ZWJWaWV3MiByZWxvYWRdOwotICAgIEVYUEVDVF9XS19TVFJF
UShbd2ViVmlldzIgX3Rlc3Rfd2FpdEZvckFsZXJ0XSwgZXhwZWN0ZWRBbGVydCk7Ci0KLSAgICBb
d2ViVmlldzIgX2FwcEJvdW5kTmF2aWdhdGlvbkRhdGE6IF4oc3RydWN0IFdLQXBwQm91bmROYXZp
Z2F0aW9uVGVzdGluZ0RhdGEgZGF0YSkgewotICAgICAgICBFWFBFQ1RfRkFMU0UoZGF0YS5oYXNM
b2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5nKTsKLSAgICAgICAgRVhQRUNUX1RSVUUoZGF0YS5o
YXNMb2FkZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nKTsKLSAgICAgICAgaXNEb25lID0gdHJ1
ZTsKLSAgICB9XTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7Ci0gICAg
aXNEb25lID0gZmFsc2U7Ci19Ci0KLXN0YXRpYyB2b2lkIHNvZnRVcGRhdGVUZXN0KElzQXBwQm91
bmQgaXNBcHBCb3VuZCkKLXsKLSAgICBfX2Jsb2NrIGJvb2wgaXNEb25lID0gZmFsc2U7Ci0gICAg
W1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gcmVtb3ZlRGF0YU9mVHlwZXM6
W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmllZFNpbmNlOltO
U0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7Ci0gICAgICAgIGlzRG9u
ZSA9IHRydWU7Ci0gICAgfV07Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUp
OwotCi0gICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUg
bmV3XSk7Ci0gICAgW2RlbGVnYXRlIHNldERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTpeKFdLV2ViVmlldyAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2Us
IHZvaWQgKF5jYWxsYmFjaykoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBO
U1VSTENyZWRlbnRpYWwgKikpIHsKLSAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGNoYWxsZW5nZS5w
cm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRob2QsIE5TVVJMQXV0aGVudGljYXRpb25N
ZXRob2RTZXJ2ZXJUcnVzdCk7Ci0gICAgICAgIGNhbGxiYWNrKE5TVVJMU2Vzc2lvbkF1dGhDaGFs
bGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxGb3JUcnVzdDpj
aGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0XSk7Ci0gICAgfV07Ci0KLSAgICBh
dXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxv
Y10gaW5pdF0pOwotICAgIGF1dG8gd2ViVmlldzEgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246
Y29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAgIGF1dG8gd2ViVmlldzIgPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwotCi0gICAgd2ViVmlldzEuZ2V0KCku
bmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7Ci0gICAgd2ViVmlldzIuZ2V0KCku
bmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7Ci0KLSAgICB1aW50MTZfdCBzZXJ2
ZXJQb3J0OwotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVu
ZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZShu
ZXcgQmxvYihbJzxzY3JpcHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9uc2VcIik8L3NjcmlwdD4n
XSwge3R5cGU6ICd0ZXh0L2h0bWwnfSkpKTsgfSkiOwotCi0gICAgewotICAgICAgICBUZXN0V2Vi
S2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcjEoewotICAgICAgICAgICAgeyAiLyIsIHsgbWFpblNX
Qnl0ZXMgfSB9LAotICAgICAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwg
ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCi0gICAgICAgIH0sIFRlc3RXZWJL
aXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywgbnVsbHB0ciwgdGVzdElkZW50aXR5
KCkpOwotICAgICAgICBzZXJ2ZXJQb3J0ID0gc2VydmVyMS5wb3J0KCk7Ci0KLSAgICAgICAgTlNV
UkxSZXF1ZXN0ICpyZXF1ZXN0ID0gc2VydmVyMS5yZXF1ZXN0KCk7Ci0gICAgICAgIGlmIChpc0Fw
cEJvdW5kID09IElzQXBwQm91bmQ6Ok5vKSB7Ci0gICAgICAgICAgICBOU011dGFibGVVUkxSZXF1
ZXN0ICpub25BcHBCb3VuZFJlcXVlc3QgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0
aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0
dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlcjEucG9ydCgpXV1dOwotICAgICAgICAgICAgQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICAgICAgICAgIG5vbkFwcEJvdW5k
UmVxdWVzdC5faXNOb25BcHBJbml0aWF0ZWQgPSBZRVM7Ci0gICAgICAgICAgICBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLSAgICAgICAgICAgIHJlcXVlc3QgPSBub25BcHBCb3Vu
ZFJlcXVlc3Q7Ci0gICAgICAgIH0KLQotICAgICAgICBbd2ViVmlldzEgbG9hZFJlcXVlc3Q6cmVx
dWVzdF07Ci0gICAgICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldzEgX3Rlc3Rfd2FpdEZvckFs
ZXJ0XSwgInN1Y2Nlc3NmdWxseSByZWdpc3RlcmVkIik7Ci0KLSAgICAgICAgc2VydmVyMS5jYW5j
ZWwoKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIg
c2VydmVyMih7Ci0gICAgICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAg
ICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNj
cmlwdCIgfX0sIGpzIH0gfQotICAgICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQ
cm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIHRlc3RJZGVudGl0eTIoKSwgc2VydmVyUG9ydCk7Ci0K
LSAgICAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0MiA9IHNlcnZlcjIucmVxdWVzdCgpOwotICAg
ICAgICBpZiAoaXNBcHBCb3VuZCA9PSBJc0FwcEJvdW5kOjpObykgewotICAgICAgICAgICAgTlNN
dXRhYmxlVVJMUmVxdWVzdCAqbm9uQXBwQm91bmRSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJlcXVl
c3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6QCJodHRwczovLzEyNy4wLjAuMTolZC8iLCBzZXJ2ZXIyLnBvcnQoKV1dXTsKLSAg
ICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgICAgICAg
ICBub25BcHBCb3VuZFJlcXVlc3QuX2lzTm9uQXBwSW5pdGlhdGVkID0gWUVTOwotICAgICAgICAg
ICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi0gICAgICAgICAgICByZXF1ZXN0
MiA9IG5vbkFwcEJvdW5kUmVxdWVzdDsKLSAgICAgICAgfQotCi0gICAgICAgIGlzRG9uZSA9IGZh
bHNlOwotICAgICAgICBbd2ViVmlldzEgX2NsZWFyQXBwQm91bmROYXZpZ2F0aW9uRGF0YTpeewot
ICAgICAgICAgICAgaXNEb25lID0gdHJ1ZTsKLSAgICAgICAgfV07Ci0KLSAgICAgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwotCi0gICAgICAgIFt3ZWJWaWV3MiBsb2FkUmVx
dWVzdDpyZXF1ZXN0Ml07Ci0gICAgICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldzIgX3Rlc3Rf
d2FpdEZvckFsZXJ0XSwgInN5bnRoZXRpYyByZXNwb25zZSIpOwotICAgIH0KLQotICAgIGlzRG9u
ZSA9IGZhbHNlOwotICAgIGJvb2wgZXhwZWN0aW5nQXBwQm91bmRSZXF1ZXN0cyA9IGlzQXBwQm91
bmQgPT0gSXNBcHBCb3VuZDo6WWVzID8gdHJ1ZSA6IGZhbHNlOwotICAgIHdoaWxlICghaXNEb25l
KSB7Ci0gICAgICAgIFt3ZWJWaWV3MiBfYXBwQm91bmROYXZpZ2F0aW9uRGF0YTogXihzdHJ1Y3Qg
V0tBcHBCb3VuZE5hdmlnYXRpb25UZXN0aW5nRGF0YSBkYXRhKSB7Ci0gICAgICAgICAgICBpZiAo
IWRhdGEuZGlkUGVyZm9ybVNvZnRVcGRhdGUpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgICAgICBFWFBFQ1RfRVEoZGF0YS5oYXNMb2FkZWRBcHBCb3VuZFJlcXVlc3RUZXN0aW5n
LCBleHBlY3RpbmdBcHBCb3VuZFJlcXVlc3RzKTsKLSAgICAgICAgICAgIEVYUEVDVF9FUShkYXRh
Lmhhc0xvYWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3RpbmcsICFleHBlY3RpbmdBcHBCb3VuZFJl
cXVlc3RzKTsKLSAgICAgICAgICAgIGlzRG9uZSA9IHRydWU7Ci0gICAgICAgIH1dOwotICAgICAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzcGluUnVuTG9vcCgxKTsKLSAgICB9Ci19Ci0KLVRFU1Qo
SW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmRSZXF1ZXN0V2l0aFNlcnZpY2VXb3JrZXJTb2Z0
VXBkYXRlKQotewotICAgIHNvZnRVcGRhdGVUZXN0KElzQXBwQm91bmQ6Olllcyk7Ci19Ci0KLVRF
U1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmRSZXF1ZXN0V2l0aFNlcnZpY2VXb3Jr
ZXJTb2Z0VXBkYXRlKQotewotICAgIHNvZnRVcGRhdGVUZXN0KElzQXBwQm91bmQ6Ok5vKTsKLX0K
LQotc3RhdGljIHZvaWQgcnVuV2ViUHJvY2Vzc1BsdWdJblRlc3QoSXNBcHBCb3VuZCBpc0FwcEJv
dW5kKQotewotICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFz
c05hbWU6QCJJbkFwcEJyb3dzZXJQcml2YWN5UGx1Z0luIl07Ci0gICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgw
LCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7Ci0KLSAgICBOU1N0
cmluZyAqdXJsID0gQCJodHRwczovL3dlYmtpdC5vcmciOwotCi0gICAgX19ibG9jayBib29sIGlz
RG9uZSA9IGZhbHNlOwotICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNNdXRh
YmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzp1cmxdXTsK
LSAgICBpZiAoaXNBcHBCb3VuZCA9PSBJc0FwcEJvdW5kOjpObykgewotICAgICAgICBOU011dGFi
bGVVUkxSZXF1ZXN0ICpub25BcHBCb3VuZFJlcXVlc3QgPSByZXF1ZXN0OwotICAgICAgICBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgICAgICBub25BcHBCb3VuZFJlcXVl
c3QuX2lzTm9uQXBwSW5pdGlhdGVkID0gWUVTOwotICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19FTkQKLSAgICAgICAgcmVxdWVzdCA9IG5vbkFwcEJvdW5kUmVxdWVzdDsKLSAg
ICB9Ci0KLSAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKLSAgICBbd2ViVmlldyBf
dGVzdF93YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07Ci0KLSAgICBpc0RvbmUgPSBmYWxzZTsK
LSAgICBib29sIGV4cGVjdGluZ0FwcEJvdW5kUmVxdWVzdHMgPSBpc0FwcEJvdW5kID09IElzQXBw
Qm91bmQ6OlllcyA/IHRydWUgOiBmYWxzZTsKLSAgICBbd2ViVmlldyBfYXBwQm91bmROYXZpZ2F0
aW9uRGF0YTpeKHN0cnVjdCBXS0FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRhIGRhdGEpIHsK
LSAgICAgICAgRVhQRUNUX0VRKGRhdGEuaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0VGVzdGluZywg
ZXhwZWN0aW5nQXBwQm91bmRSZXF1ZXN0cyk7Ci0gICAgICAgIEVYUEVDVF9FUShkYXRhLmhhc0xv
YWRlZE5vbkFwcEJvdW5kUmVxdWVzdFRlc3RpbmcsICFleHBlY3RpbmdBcHBCb3VuZFJlcXVlc3Rz
KTsKLSAgICAgICAgaXNEb25lID0gdHJ1ZTsKLSAgICB9XTsKLQotICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmaXNEb25lKTsKLX0KLQotVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBXZWJQ
cm9jZXNzUGx1Z2luVGVzdEFwcEJvdW5kKQotewotICAgIHJ1bldlYlByb2Nlc3NQbHVnSW5UZXN0
KElzQXBwQm91bmQ6Olllcyk7Ci19Ci0KLVRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgV2ViUHJv
Y2Vzc1BsdWdpblRlc3ROb25BcHBCb3VuZCkKLXsKLSAgICBydW5XZWJQcm9jZXNzUGx1Z0luVGVz
dChJc0FwcEJvdW5kOjpObyk7Ci19Ci0KLSNpZiBXS19IQVZFX0NfU1BJCi0KLXN0YXRpYyBjb25z
dCBjaGFyKiBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSA9IFIiU1dSRVNPVVJDRSgKLTxzY3JpcHQ+
Ci0KLWZ1bmN0aW9uIGxvZyhtc2cpCi17Ci0gICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxl
cnMuc3cucG9zdE1lc3NhZ2UobXNnKTsKLX0KLQotbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuYWRk
RXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgbG9nKGV2ZW50
LmRhdGEpOwotfSk7Ci0KLXRyeSB7Ci0gICAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0
ZXIoJy9zdy5qcycpLnRoZW4oZnVuY3Rpb24ocmVnKSB7Ci0gICAgICAgIGlmIChyZWcuYWN0aXZl
KSB7Ci0gICAgICAgICAgICB3b3JrZXIgPSByZWcuYWN0aXZlOwotICAgICAgICAgICAgd29ya2Vy
LnBvc3RNZXNzYWdlKCJTRUNPTkQiKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
ICAgICAgICB3b3JrZXIgPSByZWcuaW5zdGFsbGluZzsKLSAgICAgICAgd29ya2VyLmFkZEV2ZW50
TGlzdGVuZXIoJ3N0YXRlY2hhbmdlJywgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBpZiAod29y
a2VyLnN0YXRlID09ICdhY3RpdmF0ZWQnKQotICAgICAgICAgICAgICAgIHdvcmtlci5wb3N0TWVz
c2FnZSgiRklSU1QiKTsKLSAgICAgICAgfSk7Ci0gICAgfSkuY2F0Y2goZnVuY3Rpb24oZXJyb3Ip
IHsKLSAgICAgICAgbG9nKCdSZWdpc3RyYXRpb24gZmFpbGVkIHdpdGg6ICcgKyBlcnJvcik7Ci0g
ICAgfSk7Ci19IGNhdGNoKGUpIHsKLSAgICBsb2coJ0V4Y2VwdGlvbjogJyArIGUpOwotfQotPC9z
Y3JpcHQ+Ci0pU1dSRVNPVVJDRSI7Ci0KLXN0YXRpYyBjb25zdCBjaGFyKiBzY3JpcHRCeXRlc0Rl
ZmF1bHRWYWx1ZSA9IFIiU1dSRVNPVVJDRSgKLXNlbGYuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2Fn
ZScsIGFzeW5jIChldmVudCkgPT4gewotICAgIGlmICghc2VsZi5pbnRlcm5hbHMpIHsKLSAgICAg
ICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCdObyBpbnRlcm5hbHMnKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIHF1ZXJ5QXBwQm91bmRWYWx1ZShldmVudCwgZmFsc2UpOwotfSk7
Ci0KLWFzeW5jIGZ1bmN0aW9uIHF1ZXJ5QXBwQm91bmRWYWx1ZShldmVudCwgaGF2ZVNlbnRJbml0
aWFsTWVzc2FnZSkKLXsKLSAgICB2YXIgcmVzdWx0ID0gYXdhaXQgaW50ZXJuYWxzLmxhc3ROYXZp
Z2F0aW9uV2FzQXBwQm91bmQoKTsKLSAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgIGlmIChldmVu
dC5kYXRhID09ICJGSVJTVCIpIHsKLSAgICAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2Fn
ZSgnYXBwLWJvdW5kJyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAg
ICBpZiAoIWhhdmVTZW50SW5pdGlhbE1lc3NhZ2UpCi0gICAgICAgICAgICBldmVudC5zb3VyY2Uu
cG9zdE1lc3NhZ2UoJ3N0YXJ0cyBhcHAtYm91bmQnKTsKLQotICAgICAgICBxdWVyeUFwcEJvdW5k
VmFsdWUoZXZlbnQsIHRydWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZXZlbnQu
c291cmNlLnBvc3RNZXNzYWdlKCdub24gYXBwLWJvdW5kJyk7Ci19Ci0KLSlTV1JFU09VUkNFIjsK
LQotCi1zdGF0aWMgU3RyaW5nIGV4cGVjdGVkTWVzc2FnZTsKLXN0YXRpYyBib29sIHJlY2VpdmVk
TWVzc2FnZSA9IGZhbHNlOwotCi1AaW50ZXJmYWNlIFNXQXBwQm91bmRSZXF1ZXN0TWVzc2FnZUhh
bmRsZXIgOiBOU09iamVjdCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4KLUBlbmQKLQotQGltcGxl
bWVudGF0aW9uIFNXQXBwQm91bmRSZXF1ZXN0TWVzc2FnZUhhbmRsZXIKLS0gKHZvaWQpdXNlckNv
bnRlbnRDb250cm9sbGVyOihXS1VzZXJDb250ZW50Q29udHJvbGxlciAqKXVzZXJDb250ZW50Q29u
dHJvbGxlciBkaWRSZWNlaXZlU2NyaXB0TWVzc2FnZTooV0tTY3JpcHRNZXNzYWdlICopbWVzc2Fn
ZQotewotICAgIEVYUEVDVF9XS19TVFJFUShtZXNzYWdlLmJvZHksIGV4cGVjdGVkTWVzc2FnZSk7
Ci0gICAgcmVjZWl2ZWRNZXNzYWdlID0gdHJ1ZTsKLX0KLUBlbmQKLQotVEVTVChJbkFwcEJyb3dz
ZXJQcml2YWN5LCBSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRVcGRhdGVzQXBwQm91bmRWYWx1
ZSkKLXsKLSAgICBzdGF0aWMgYm9vbCBpc0RvbmUgPSBmYWxzZTsKLQotICAgIFtbV0tXZWJzaXRl
RGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVE
YXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3Rh
bnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgewotICAgICAgICBpc0RvbmUgPSB0cnVlOwot
ICAgIH1dOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKLQotICAgIFdL
V2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9j
ZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOwotICAg
IFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0V0soVGVzdFdlYktpdEFQ
STo6VXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdCgiSW50ZXJuYWxzSW5q
ZWN0ZWRCdW5kbGVUZXN0IikpOwotICAgIGNvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wgPSAoV0tQ
cm9jZXNzUG9vbCAqKWNvbnRleHQuZ2V0KCk7Ci0KLSAgICBSZXRhaW5QdHI8U1dBcHBCb3VuZFJl
cXVlc3RNZXNzYWdlSGFuZGxlcj4gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbU1dBcHBCb3Vu
ZFJlcXVlc3RNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwotICAgIFtbY29uZmlndXJhdGlv
biB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VI
YW5kbGVyLmdldCgpIG5hbWU6QCJzdyJdOwotCi0gICAgYXV0byB3ZWJWaWV3MSA9IGFkb3B0TlMo
W1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYw
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7Ci0gICAgYXV0byB3ZWJWaWV3MiA9IGFk
b3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4
MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7Ci0KLSAgICBhdXRvIGRlbGVn
YXRlID0gYWRvcHROUyhbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBuZXddKTsKLSAgICBbZGVsZWdh
dGUgc2V0RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOl4oV0tXZWJWaWV3ICosIE5T
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwgdm9pZCAoXmNhbGxiYWNrKShO
U1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqKSkg
ewotICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5hdXRo
ZW50aWNhdGlvbk1ldGhvZCwgTlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZFNlcnZlclRydXN0KTsK
LSAgICAgICAgY2FsbGJhY2soTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWws
IFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbEZvclRydXN0OmNoYWxsZW5nZS5wcm90ZWN0aW9u
U3BhY2Uuc2VydmVyVHJ1c3RdKTsKLSAgICB9XTsKLQotICAgIHdlYlZpZXcxLmdldCgpLm5hdmln
YXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwotICAgIHdlYlZpZXcyLmdldCgpLm5hdmln
YXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwotCi0gICAgU2VydmljZVdvcmtlclRDUFNl
cnZlciBzZXJ2ZXIoewotICAgICAgICB7ICJ0ZXh0L2h0bWwiLCBtYWluU1dCeXRlc0RlZmF1bHRW
YWx1ZSB9LAotICAgICAgICB7ICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Iiwgc2NyaXB0Qnl0ZXNE
ZWZhdWx0VmFsdWUgfSwKLSAgICB9LCB7Ci0gICAgICAgIHsgInRleHQvaHRtbCIsIG1haW5TV0J5
dGVzRGVmYXVsdFZhbHVlIH0sCi0gICAgICAgIHsgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiLCBz
Y3JpcHRCeXRlc0RlZmF1bHRWYWx1ZSB9LAotICAgIH0pOwotCi0gICAgLy8gTG9hZCBXZWJWaWV3
IHdpdGggYW4gYXBwLWJvdW5kIHJlcXVlc3QuIFdlIGV4cGVjdCB0aGUgU2VydmljZVdvcmtlclRo
cmVhZFByb3h5IHRvIGJlIGFwcC1ib3VuZC4KLSAgICBleHBlY3RlZE1lc3NhZ2UgPSAiYXBwLWJv
dW5kIjsKLSAgICBbd2ViVmlldzEgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07Ci0gICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZE1lc3NhZ2UpOwotCi0gICAgLy8gTG9h
ZCBXZWJWaWV3IHdpdGggYSBub24gYXBwLWJvdW5kIHJlcXVlc3QuIFdlIGV4cGVjdCB0aGUgU2Vy
dmljZVdvcmtlclRocmVhZFByb3h5IHRvIGJlIGFwcC1ib3VuZAotICAgIC8vIGF0IGZpcnN0LCBi
dXQgdGhlbiBiZWNvbWUgbm9uIGFwcC1ib3VuZCBvbmNlIHRoZSBzZWNvbmQgd2ViVmlldyBpcyBj
bG9zZWQgYW5kIGl0cyBjbGllbnQgaXMgdW5yZWdpc3RlcmVkLgotICAgIGV4cGVjdGVkTWVzc2Fn
ZSA9ICJzdGFydHMgYXBwLWJvdW5kIjsKLSAgICByZWNlaXZlZE1lc3NhZ2UgPSBmYWxzZTsKLSAg
ICBOU011dGFibGVVUkxSZXF1ZXN0ICpub25BcHBCb3VuZFJlcXVlc3QgPSBbTlNNdXRhYmxlVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3Ry
aW5nV2l0aEZvcm1hdDpAImh0dHA6Ly8xMjcuMC4wLjE6JWQvbWFpbi5odG1sIiwgc2VydmVyLnBv
cnQoKV1dXTsKLSAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgIG5v
bkFwcEJvdW5kUmVxdWVzdC5faXNOb25BcHBJbml0aWF0ZWQgPSBZRVM7Ci0gICAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi0KLSAgICBbd2ViVmlldzIgbG9hZFJlcXVlc3Q6bm9u
QXBwQm91bmRSZXF1ZXN0XTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVk
TWVzc2FnZSk7Ci0KLSAgICAvLyBDbG9zZSB0aGUgYXBwLWJvdW5kIHZpZXcuIFdlIGV4cGVjdCB0
aGF0IHRoZSBleGlzdGluZyB3b3JrZXIgd2lsbCBiZWNvbWUgbm9uIGFwcC1ib3VuZAotICAgIC8v
IG5vdyB0aGF0IGFsbCBhcHAtYm91bmQgY2xpZW50cyBoYXZlIGJlZW4gcmVtb3ZlZC4KLSAgICBl
eHBlY3RlZE1lc3NhZ2UgPSAibm9uIGFwcC1ib3VuZCI7Ci0gICAgcmVjZWl2ZWRNZXNzYWdlID0g
ZmFsc2U7Ci0gICAgW3dlYlZpZXcxIF9jbG9zZV07Ci0gICAgd2ViVmlldzEgPSBudWxscHRyOwot
Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZE1lc3NhZ2UpOwotfQotCi0j
ZW5kaWYKLQotc3RhdGljIHZvaWQgbG9hZFNpbXVsYXRlZFJlcXVlc3RUZXN0KGJvb2wgaXNBcHBJ
bml0aWF0ZWQpCi17Ci0gICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOwotCi0gICAgYXV0
byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0
XSk7Ci0gICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsK
LQotICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKmxvYWRSZXF1ZXN0ID0gW05TTXV0YWJsZVVSTFJl
cXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3dlYmtp
dC5vcmciXV07Ci0gICAgbG9hZFJlcXVlc3QuYXR0cmlidXRpb24gPSBpc0FwcEluaXRpYXRlZCA/
IE5TVVJMUmVxdWVzdEF0dHJpYnV0aW9uRGV2ZWxvcGVyIDogTlNVUkxSZXF1ZXN0QXR0cmlidXRp
b25Vc2VyOwotCi0gICAgTlNTdHJpbmcgKkhUTUwgPSBAIjxodG1sPjxoZWFkPjwvaGVhZD48Ym9k
eT48aW1nIHNyYz0naHR0cHM6Ly9hcHBsZS5jb20vJz48L2ltZz48L2JvZHk+PC9odG1sPiI7Ci0g
ICAgW3dlYlZpZXcgbG9hZFNpbXVsYXRlZFJlcXVlc3Q6bG9hZFJlcXVlc3QgcmVzcG9uc2VIVE1M
U3RyaW5nOkhUTUxdOwotICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07
Ci0KLSAgICBzdGF0aWMgYm9vbCBpc0RvbmUgPSBmYWxzZTsKLSAgICBbd2ViVmlldyBfYXBwQm91
bmROYXZpZ2F0aW9uRGF0YTpeKHN0cnVjdCBXS0FwcEJvdW5kTmF2aWdhdGlvblRlc3RpbmdEYXRh
IGRhdGEpIHsKLSAgICAgICAgRVhQRUNUX0VRKGRhdGEuaGFzTG9hZGVkQXBwQm91bmRSZXF1ZXN0
VGVzdGluZywgaXNBcHBJbml0aWF0ZWQpOwotICAgICAgICBFWFBFQ1RfRVEoZGF0YS5oYXNMb2Fk
ZWROb25BcHBCb3VuZFJlcXVlc3RUZXN0aW5nLCAhaXNBcHBJbml0aWF0ZWQpOwotICAgICAgICBp
c0RvbmUgPSB0cnVlOwotICAgIH1dOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNE
b25lKTsKLX0KLQotVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBMb2FkU2ltdWxhdGVkUmVxdWVz
dElzQXBwSW5pdGlhdGVkKQotewotICAgIGxvYWRTaW11bGF0ZWRSZXF1ZXN0VGVzdCh0cnVlKTsK
LX0KLQotVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBMb2FkU2ltdWxhdGVkUmVxdWVzdElzTm9u
QXBwSW5pdGlhdGVkKQotewotICAgIGxvYWRTaW11bGF0ZWRSZXF1ZXN0VGVzdChmYWxzZSk7Ci19
Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5UGx1Z0luLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5UGx1Z0luLm1tCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA4MTZjMTVmNDJjNGY3MTU4NWFkMzk2N2ViOTgyMmI4MzYwMjgz
ODE4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeVBsdWdJ
bi5tbQorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0
ICJjb25maWcuaCIKLQotI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKLSNpbXBvcnQgPFdl
YktpdC9XS1dlYlByb2Nlc3NQbHVnSW4uaD4KLSNpbXBvcnQgPFdlYktpdC9XS1dlYlByb2Nlc3NQ
bHVnSW5Mb2FkRGVsZWdhdGUuaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KLQotQGludGVy
ZmFjZSBJbkFwcEJyb3dzZXJQcml2YWN5UGx1Z0luIDogTlNPYmplY3QgPFdLV2ViUHJvY2Vzc1Bs
dWdJbiwgV0tXZWJQcm9jZXNzUGx1Z0luTG9hZERlbGVnYXRlPgotQGVuZAotCi1AaW1wbGVtZW50
YXRpb24gSW5BcHBCcm93c2VyUHJpdmFjeVBsdWdJbiB7IH0KLQotLSAoTlNVUkxSZXF1ZXN0ICop
d2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjooV0tXZWJQcm9jZXNzUGx1
Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyICopY29udHJvbGxlciBmcmFtZTooV0tXZWJQcm9j
ZXNzUGx1Z0luRnJhbWUgKilmcmFtZSB3aWxsU2VuZFJlcXVlc3RGb3JSZXNvdXJjZToodWludDY0
X3QpcmVzb3VyY2UgcmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCByZWRpcmVjdFJlc3Bv
bnNlOihOU1VSTFJlc3BvbnNlICopcmVkaXJlY3RSZXNwb25zZQotewotICAgIHJldHVybiBhZG9w
dE5TKFtbTlNVUkxSZXF1ZXN0IGFsbG9jXSBpbml0V2l0aFVSTDpyZXF1ZXN0LlVSTF0pLmF1dG9y
ZWxlYXNlKCk7Ci19Ci0KLUBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvYXBwLXByaXZhY3ktcmVwb3J0LWlmcmFtZS5odG1sIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9hcHAtcHJpdmFjeS1yZXBvcnQtaWZyYW1lLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZTY5ZGUyOWJiMmQxZDY0MzRiOGIyOWFlNzc1YWQ4YzJlNDhjNTM5MQpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5n
cy9UZXN0UnVubmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKaW5kZXggZWY1MjEyNjAzMDIwOTBhNzkzNTM2ZmZlMTdl
MzcyZTIwMTkyMmViOC4uNzVkMTZkMzFmMjUwOWVlNmJkMDljNjg3M2RhZjEzZGVkZWQ1OWJmMyAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5n
cy9UZXN0UnVubmVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCkBAIC0zODgsOSArMzg4LDggQEAgaW50ZXJmYWNl
IFRlc3RSdW5uZXIgewogICAgIGJvb2xlYW4gaGFzQXBwQm91bmRTZXNzaW9uKCk7CiAgICAgdW5k
ZWZpbmVkIGNsZWFyQXBwQm91bmRTZXNzaW9uKCk7CiAgICAgdW5kZWZpbmVkIHNldEFwcEJvdW5k
RG9tYWlucyhvYmplY3Qgb3JpZ2luc0FycmF5LCBvYmplY3QgY2FsbGJhY2spOwotICAgIHVuZGVm
aW5lZCBhcHBCb3VuZFJlcXVlc3RDb250ZXh0RGF0YUZvckRvbWFpbihET01TdHJpbmcgZG9tYWlu
LCBvYmplY3QgY2FsbGJhY2spOwotICAgIGJvb2xlYW4gZGlkTG9hZEFwcEJvdW5kUmVxdWVzdCgp
OwotICAgIGJvb2xlYW4gZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdCgpOworICAgIGJvb2xlYW4g
ZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3QoKTsKKyAgICBib29sZWFuIGRpZExvYWROb25BcHBJ
bml0aWF0ZWRSZXF1ZXN0KCk7CiAKICAgICB1bmRlZmluZWQgaW5qZWN0VXNlclNjcmlwdChET01T
dHJpbmcgc3RyaW5nKTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyB1c2Vy
U2NyaXB0SW5qZWN0ZWRDb3VudDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggYjlmNGJiMmNjNzk5OTAw
ZjI5NjY3ZjdiNTU0ZjBlMGM0NzE5ZDY5ZC4uNzM4M2YzM2ViM2Q3MmFjNDgxNjc2MDQ4ZjE4N2Fj
MzcyNmY4NTEzNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTQxNywxNCArNDE3LDYgQEAgdm9pZCBJ
bmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UoV0tCdW5kbGVQYWdlUmVmIHBh
Z2UsIFdLU3RyaW5nUmVmIG0KICAgICAgICAgbV90ZXN0UnVubmVyLT5jYWxsRGlkUmVjZWl2ZUxv
YWRlZFN1YnJlc291cmNlRG9tYWluc0NhbGxiYWNrKFdURk1vdmUoZG9tYWlucykpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIAotICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3Ry
aW5nKG1lc3NhZ2VOYW1lLCAiQ2FsbERpZFJlY2VpdmVBcHBCb3VuZFJlcXVlc3RDb250ZXh0RGF0
YUZvckRvbWFpbiIpKSB7Ci0gICAgICAgIEFTU0VSVChtZXNzYWdlQm9keSk7Ci0gICAgICAgIEFT
U0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tTdHJpbmdHZXRUeXBlSUQoKSk7Ci0K
LSAgICAgICAgYXV0byByZXN1bHRTdHJpbmcgPSB0b1dURlN0cmluZyhzdGF0aWNfY2FzdDxXS1N0
cmluZ1JlZj4obWVzc2FnZUJvZHkpKTsKLSAgICAgICAgbV90ZXN0UnVubmVyLT5jYWxsRGlkUmVj
ZWl2ZUFwcEJvdW5kUmVxdWVzdENvbnRleHREYXRhRm9yRG9tYWluQ2FsbGJhY2soV1RGTW92ZShy
ZXN1bHRTdHJpbmcpKTsKLSAgICB9CiAKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0
cmluZyhtZXNzYWdlTmFtZSwgIkNhbGxEaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHNDYWxs
YmFjayIpKSB7CiAgICAgICAgIG1fdGVzdFJ1bm5lci0+Y2FsbERpZFJlbW92ZUFsbFNlc3Npb25D
cmVkZW50aWFsc0NhbGxiYWNrKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCBhZjUxMTBhMDhjMmI5ZTM1YTdlN2Y3
NjhkZWY1ZDdjOWQzYzk5MTc5Li41MTYxYzRjOTAyY2JhYzViMjQzN2I4YzcwNTBkNTRiNjZmMTFi
MTUzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5jcHAKQEAgLTIxMTYsMjYgKzIxMTYsMTQgQEAgdm9pZCBUZXN0UnVubmVyOjpk
aWRTZXRBcHBCb3VuZERvbWFpbnNDYWxsYmFjaygpCiAgICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFj
ayhEaWRTZXRBcHBCb3VuZERvbWFpbnNDYWxsYmFja0lEKTsKIH0KIAotdm9pZCBUZXN0UnVubmVy
OjphcHBCb3VuZFJlcXVlc3RDb250ZXh0RGF0YUZvckRvbWFpbihKU1N0cmluZ1JlZiBkb21haW4s
IEpTVmFsdWVSZWYgY2FsbGJhY2spCitib29sIFRlc3RSdW5uZXI6OmRpZExvYWRBcHBJbml0aWF0
ZWRSZXF1ZXN0KCkKIHsKLSAgICBjYWNoZVRlc3RSdW5uZXJDYWxsYmFjayhBcHBCb3VuZFJlcXVl
c3RDb250ZXh0RGF0YUZvckRvbWFpbkNhbGxiYWNrSUQsIGNhbGxiYWNrKTsKLSAgICBwb3N0TWVz
c2FnZSgiQXBwQm91bmRSZXF1ZXN0Q29udGV4dERhdGFGb3JEb21haW4iLCBkb21haW4pOworICAg
IHJldHVybiBwb3N0U3luY2hyb25vdXNQYWdlTWVzc2FnZVJldHVybmluZ0Jvb2xlYW4oIkRpZExv
YWRBcHBJbml0aWF0ZWRSZXF1ZXN0Iik7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6Y2FsbERpZFJl
Y2VpdmVBcHBCb3VuZFJlcXVlc3RDb250ZXh0RGF0YUZvckRvbWFpbkNhbGxiYWNrKFN0cmluZyYm
IGNvbnRleHREb21haW4pCitib29sIFRlc3RSdW5uZXI6OmRpZExvYWROb25BcHBJbml0aWF0ZWRS
ZXF1ZXN0KCkKIHsKLSAgICBKU1ZhbHVlUmVmIHJlc3VsdFZhbHVlID0gSlNWYWx1ZU1ha2VTdHJp
bmcobWFpbkZyYW1lSlNDb250ZXh0KCksIGNyZWF0ZUpTU3RyaW5nKGNvbnRleHREb21haW4udXRm
OCgpLmRhdGEoKSkuZ2V0KCkpOwotICAgIGNhbGxUZXN0UnVubmVyQ2FsbGJhY2soQXBwQm91bmRS
ZXF1ZXN0Q29udGV4dERhdGFGb3JEb21haW5DYWxsYmFja0lELCAxLCAmcmVzdWx0VmFsdWUpOwot
fQotCi1ib29sIFRlc3RSdW5uZXI6OmRpZExvYWRBcHBCb3VuZFJlcXVlc3QoKQotewotICAgIHJl
dHVybiBwb3N0U3luY2hyb25vdXNQYWdlTWVzc2FnZVJldHVybmluZ0Jvb2xlYW4oIkRpZExvYWRB
cHBCb3VuZFJlcXVlc3QiKTsKLX0KLQotYm9vbCBUZXN0UnVubmVyOjpkaWRMb2FkTm9uQXBwQm91
bmRSZXF1ZXN0KCkKLXsKLSAgICByZXR1cm4gcG9zdFN5bmNocm9ub3VzUGFnZU1lc3NhZ2VSZXR1
cm5pbmdCb29sZWFuKCJEaWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0Iik7CisgICAgcmV0dXJuIHBv
c3RTeW5jaHJvbm91c1BhZ2VNZXNzYWdlUmV0dXJuaW5nQm9vbGVhbigiRGlkTG9hZE5vbkFwcElu
aXRpYXRlZFJlcXVlc3QiKTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjpzZXRJc1NwZWVjaFJlY29n
bml0aW9uUGVybWlzc2lvbkdyYW50ZWQoYm9vbCBncmFudGVkKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCBkM2E1OGM5ODAz
YzUzZDBiODg5Y2FhNjJjNThmYmEwZjQ5NmY2MzVhLi42OWMyZGEzZmRjMDA3ZWJiY2NiNmRhYjdj
MWMzODE2MDczMjg2OGJiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtNDk3LDEwICs0OTcsOSBAQCBwdWJsaWM6CiAgICAg
dm9pZCBjbGVhckFwcEJvdW5kU2Vzc2lvbigpOwogICAgIHZvaWQgc2V0QXBwQm91bmREb21haW5z
KEpTVmFsdWVSZWYgb3JpZ2luQXJyYXksIEpTVmFsdWVSZWYgY2FsbGJhY2spOwogICAgIHZvaWQg
ZGlkU2V0QXBwQm91bmREb21haW5zQ2FsbGJhY2soKTsKLSAgICB2b2lkIGFwcEJvdW5kUmVxdWVz
dENvbnRleHREYXRhRm9yRG9tYWluKEpTU3RyaW5nUmVmLCBKU1ZhbHVlUmVmKTsKLSAgICB2b2lk
IGNhbGxEaWRSZWNlaXZlQXBwQm91bmRSZXF1ZXN0Q29udGV4dERhdGFGb3JEb21haW5DYWxsYmFj
ayhTdHJpbmcmJik7Ci0gICAgYm9vbCBkaWRMb2FkQXBwQm91bmRSZXF1ZXN0KCk7Ci0gICAgYm9v
bCBkaWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0KCk7CisKKyAgICBib29sIGRpZExvYWRBcHBJbml0
aWF0ZWRSZXF1ZXN0KCk7CisgICAgYm9vbCBkaWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdCgp
OwogCiAgICAgc2l6ZV90IHVzZXJTY3JpcHRJbmplY3RlZENvdW50KCkgY29uc3Q7CiAgICAgdm9p
ZCBpbmplY3RVc2VyU2NyaXB0KEpTU3RyaW5nUmVmKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5jcHAKaW5kZXggOGI1ZDkzNTQ1YTYwNjc0OGY0OTJmNmI3M2NkYmQxMjE5
NTk2Y2MwZi4uNDA3MTcxZmFjYmE2YWFkNmNmMGI0YjRhNjQxNzQ4ODRjMzNmNTE4OSAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTEwODEsNyArMTA4MSw3
IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoY29u
c3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMsIFJlCiAgICAgICAgIHVwZGF0ZUxpdmVEb2N1bWVudHNB
ZnRlclRlc3QoKTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgY2xlYXJBcHBsaWNhdGlv
bkJ1bmRsZUlkZW50aWZpZXJUZXN0aW5nT3ZlcnJpZGUoKTsKLSAgICAgICAgY2xlYXJBcHBCb3Vu
ZE5hdmlnYXRpb25EYXRhKCk7CisgICAgICAgIGNsZWFyQXBwUHJpdmFjeVJlcG9ydFRlc3RpbmdE
YXRhKCk7CiAjZW5kaWYKICAgICAgICAgY2xlYXJCdW5kbGVJZGVudGlmaWVySW5OZXR3b3JrUHJv
Y2VzcygpOwogICAgIH0KQEAgLTI3MjYsMjEgKzI3MjYsMTcgQEAgdm9pZCBUZXN0Q29udHJvbGxl
cjo6cmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKCkKIHsKIH0KIAotdm9pZCBUZXN0Q29udHJv
bGxlcjo6YXBwQm91bmRSZXF1ZXN0Q29udGV4dERhdGFGb3JEb21haW4oV0tTdHJpbmdSZWYpCi17
Ci19Ci0KLWJvb2wgVGVzdENvbnRyb2xsZXI6OmRpZExvYWRBcHBCb3VuZFJlcXVlc3QoKQorYm9v
bCBUZXN0Q29udHJvbGxlcjo6ZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3QoKQogewogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotYm9vbCBUZXN0Q29udHJvbGxlcjo6ZGlkTG9hZE5vbkFwcEJvdW5k
UmVxdWVzdCgpCitib29sIFRlc3RDb250cm9sbGVyOjpkaWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVx
dWVzdCgpCiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpj
bGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGEoKQordm9pZCBUZXN0Q29udHJvbGxlcjo6Y2xlYXJB
cHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoKQogewogfQogCmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmgKaW5kZXggOTIwZTgyMjhhYjg2ZjM0MjUyMzIwZWIzNjZhNWM3OTZk
MmMwNTQyMi4uOTY3N2VhNGY1ZGUxN2I2NDEyM2NmZTVlZjQwNjVhNDIyOTY4N2Y2NyAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMjYyLDEwICsyNjIsOSBAQCBw
dWJsaWM6CiAgICAgdm9pZCBjbGVhckxvYWRlZFN1YnJlc291cmNlRG9tYWlucygpOwogICAgIHZv
aWQgY2xlYXJBcHBCb3VuZFNlc3Npb24oKTsKICAgICB2b2lkIHJlaW5pdGlhbGl6ZUFwcEJvdW5k
RG9tYWlucygpOwotICAgIHZvaWQgYXBwQm91bmRSZXF1ZXN0Q29udGV4dERhdGFGb3JEb21haW4o
V0tTdHJpbmdSZWYpOwotICAgIHZvaWQgY2xlYXJBcHBCb3VuZE5hdmlnYXRpb25EYXRhKCk7Ci0g
ICAgYm9vbCBkaWRMb2FkQXBwQm91bmRSZXF1ZXN0KCk7Ci0gICAgYm9vbCBkaWRMb2FkTm9uQXBw
Qm91bmRSZXF1ZXN0KCk7CisgICAgdm9pZCBjbGVhckFwcFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0
YSgpOworICAgIGJvb2wgZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3QoKTsKKyAgICBib29sIGRp
ZExvYWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0KCk7CiAKICAgICB2b2lkIHVwZGF0ZUJ1bmRsZUlk
ZW50aWZpZXJJbk5ldHdvcmtQcm9jZXNzKGNvbnN0IHN0ZDo6c3RyaW5nJiBidW5kbGVJZGVudGlm
aWVyKTsKICAgICB2b2lkIGNsZWFyQnVuZGxlSWRlbnRpZmllckluTmV0d29ya1Byb2Nlc3MoKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXggNTk4MTUzYWEz
NDI1NzU0YjExZDIxZWQ0ZGZiMDFhNWUzYjlkNmMyZC4uNDJhODY5NTk0ZWFkY2M2YjMyODZhMzYw
ZDgzNjI3NjAwMmFkYWU3NiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlv
bi5jcHAKQEAgLTc5MiwxMiArNzkyLDYgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2
ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5n
KG1lc3NhZ2VOYW1lLCAiQXBwQm91bmRSZXF1ZXN0Q29udGV4dERhdGFGb3JEb21haW4iKSkgewot
ICAgICAgICBXS1N0cmluZ1JlZiBkb21haW4gPSBzdHJpbmdWYWx1ZShtZXNzYWdlQm9keSk7Ci0g
ICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5hcHBCb3VuZFJlcXVlc3RDb250ZXh0
RGF0YUZvckRvbWFpbihkb21haW4pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKQEAgLTEwNzEsMTEgKzEwNjUsMTEgQEAgV0tSZXRhaW5Q
dHI8V0tUeXBlUmVmPiBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2Fn
ZUZyb21JbmplY3RlZEIKICAgICAgICAgcmV0dXJuIGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKHN0
YXRpc3RpY0luRGF0YWJhc2VPbmNlKSk7CiAgICAgfQogCi0gICAgaWYgKFdLU3RyaW5nSXNFcXVh
bFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJEaWRMb2FkQXBwQm91bmRSZXF1ZXN0IikpCi0g
ICAgICAgIHJldHVybiBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShUZXN0Q29udHJvbGxlcjo6c2lu
Z2xldG9uKCkuZGlkTG9hZEFwcEJvdW5kUmVxdWVzdCgpKSk7CisgICAgaWYgKFdLU3RyaW5nSXNF
cXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJEaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVz
dCIpKQorICAgICAgICByZXR1cm4gYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoVGVzdENvbnRyb2xs
ZXI6OnNpbmdsZXRvbigpLmRpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0KCkpKTsKIAotICAgIGlm
IChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiRGlkTG9hZE5vbkFw
cEJvdW5kUmVxdWVzdCIpKQotICAgICAgICByZXR1cm4gYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUo
VGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmRpZExvYWROb25BcHBCb3VuZFJlcXVlc3QoKSkp
OworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiRGlk
TG9hZE5vbkFwcEluaXRpYXRlZFJlcXVlc3QiKSkKKyAgICAgICAgcmV0dXJuIGFkb3B0V0soV0tC
b29sZWFuQ3JlYXRlKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5kaWRMb2FkTm9uQXBwSW5p
dGlhdGVkUmVxdWVzdCgpKSk7CiAKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmlu
ZyhtZXNzYWdlTmFtZSwgIlNldFN0YXRpc3RpY3NHcmFuZGZhdGhlcmVkIikpIHsKICAgICAgICAg
YXV0byBtZXNzYWdlQm9keURpY3Rpb25hcnkgPSBkaWN0aW9uYXJ5VmFsdWUobWVzc2FnZUJvZHkp
OwpAQCAtMTU4MiwxMiArMTU3Niw2IEBAIHZvaWQgVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVM
b2FkZWRTdWJyZXNvdXJjZURvbWFpbnMoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zCiAgICAgcG9z
dFBhZ2VNZXNzYWdlKCJDYWxsRGlkUmVjZWl2ZUxvYWRlZFN1YnJlc291cmNlRG9tYWlucyIsIG1l
c3NhZ2VCb2R5KTsKIH0KIAotdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZUFwcEJvdW5k
UmVxdWVzdENvbnRleHREYXRhRm9yRG9tYWluKFN0cmluZyYmIGRvbWFpbikKLXsKLSAgICBhdXRv
IG1lc3NhZ2VCb2R5ID0gV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoZG9tYWluLnV0Zjgo
KS5kYXRhKCkpOwotICAgIHBvc3RQYWdlTWVzc2FnZSgiQ2FsbERpZFJlY2VpdmVBcHBCb3VuZFJl
cXVlc3RDb250ZXh0RGF0YUZvckRvbWFpbiIsIG1lc3NhZ2VCb2R5KTsKLX0KLQogdm9pZCBUZXN0
SW52b2NhdGlvbjo6ZGlkUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKCkKIHsKICAgICBwb3N0
UGFnZU1lc3NhZ2UoIkNhbGxEaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHNDYWxsYmFjayIp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCmluZGV4IDA0ZjA5M2YwZTdm
Y2IzMTNkYjAyM2QwYTNhNDJjZjgyYzdmNjdiODguLjNjN2Y5ODA3ZWMwZDFjYWJmZGIxYzYyYWQ5
M2NmNWNmYTI5ODg2OGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdElu
dm9jYXRpb24uaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgK
QEAgLTk3LDcgKzk3LDYgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVtb3ZlQWxsU2Vzc2lvbkNy
ZWRlbnRpYWxzKCk7CiAKICAgICB2b2lkIGRpZFNldEFwcEJvdW5kRG9tYWlucygpOwotICAgIHZv
aWQgZGlkUmVjZWl2ZUFwcEJvdW5kUmVxdWVzdENvbnRleHREYXRhRm9yRG9tYWluKFN0cmluZyYm
KTsKIAogICAgIHZvaWQgZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoKTsKIApkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCmluZGV4
IDZmMTRmY2Q3YjMxZjQzNjk1ZWVhYTE3MzYwMThmMjg1ODkwMTRjMDcuLjk4Y2NiNGRiOWFiMDhi
YWIyOTMzMGFiNGNiYTJlMjQ1ZTk5NDRmN2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KQEAgLTM4NCwyMyArMzg0LDcgQEAg
dm9pZCBUZXN0Q29udHJvbGxlcjo6Y2xlYXJMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnMoKQogICAg
IFtbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24oKSB3ZWJzaXRlRGF0YVN0b3JlXSBfY2xlYXJM
b2FkZWRTdWJyZXNvdXJjZURvbWFpbnNGb3I6cGFyZW50Vmlldy0+cGxhdGZvcm1WaWV3KCldOwog
fQogCi12b2lkIFRlc3RDb250cm9sbGVyOjphcHBCb3VuZFJlcXVlc3RDb250ZXh0RGF0YUZvckRv
bWFpbihXS1N0cmluZ1JlZiBkb21haW4pCi17Ci0gICAgYXV0byogcGFyZW50VmlldyA9IG1haW5X
ZWJWaWV3KCk7Ci0gICAgaWYgKCFwYXJlbnRWaWV3KQotICAgICAgICByZXR1cm47Ci0KLSAgICBb
bV9tYWluV2ViVmlldy0+cGxhdGZvcm1WaWV3KCkgX2FwcEJvdW5kTmF2aWdhdGlvbkRhdGFGb3JE
b21haW46dG9XVEZTdHJpbmcoZG9tYWluKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TU3RyaW5nICpj
b250ZXh0KSB7Ci0gICAgICAgIGlmICghY29udGV4dCkgewotICAgICAgICAgICAgbV9jdXJyZW50
SW52b2NhdGlvbi0+ZGlkUmVjZWl2ZUFwcEJvdW5kUmVxdWVzdENvbnRleHREYXRhRm9yRG9tYWlu
KHsgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBtX2N1cnJl
bnRJbnZvY2F0aW9uLT5kaWRSZWNlaXZlQXBwQm91bmRSZXF1ZXN0Q29udGV4dERhdGFGb3JEb21h
aW4oU3RyaW5nKGNvbnRleHQpKTsKLSAgICB9XTsKLX0KLQotYm9vbCBUZXN0Q29udHJvbGxlcjo6
ZGlkTG9hZEFwcEJvdW5kUmVxdWVzdCgpCitib29sIFRlc3RDb250cm9sbGVyOjpkaWRMb2FkQXBw
SW5pdGlhdGVkUmVxdWVzdCgpCiB7CiAgICAgYXV0byogcGFyZW50VmlldyA9IG1haW5XZWJWaWV3
KCk7CiAgICAgaWYgKCFwYXJlbnRWaWV3KQpAQCAtNDA4LDcgKzM5Miw3IEBAIGJvb2wgVGVzdENv
bnRyb2xsZXI6OmRpZExvYWRBcHBCb3VuZFJlcXVlc3QoKQogCiAgICAgX19ibG9jayBib29sIGlz
RG9uZSA9IGZhbHNlOwogICAgIF9fYmxvY2sgYm9vbCBkaWRMb2FkUmVzdWx0ID0gZmFsc2U7Ci0g
ICAgW21fbWFpbldlYlZpZXctPnBsYXRmb3JtVmlldygpIF9kaWRMb2FkQXBwQm91bmRSZXF1ZXN0
Ol4oQk9PTCByZXN1bHQpIHsKKyAgICBbbV9tYWluV2ViVmlldy0+cGxhdGZvcm1WaWV3KCkgX2Rp
ZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0Ol4oQk9PTCByZXN1bHQpIHsKICAgICAgICAgZGlkTG9h
ZFJlc3VsdCA9IHJlc3VsdDsKICAgICAgICAgaXNEb25lID0gdHJ1ZTsKICAgICB9XTsKQEAgLTQx
Niw3ICs0MDAsNyBAQCBib29sIFRlc3RDb250cm9sbGVyOjpkaWRMb2FkQXBwQm91bmRSZXF1ZXN0
KCkKICAgICByZXR1cm4gZGlkTG9hZFJlc3VsdDsKIH0KIAotYm9vbCBUZXN0Q29udHJvbGxlcjo6
ZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdCgpCitib29sIFRlc3RDb250cm9sbGVyOjpkaWRMb2Fk
Tm9uQXBwSW5pdGlhdGVkUmVxdWVzdCgpCiB7CiAgICAgYXV0byogcGFyZW50VmlldyA9IG1haW5X
ZWJWaWV3KCk7CiAgICAgaWYgKCFwYXJlbnRWaWV3KQpAQCAtNDI0LDcgKzQwOCw3IEBAIGJvb2wg
VGVzdENvbnRyb2xsZXI6OmRpZExvYWROb25BcHBCb3VuZFJlcXVlc3QoKQogCiAgICAgX19ibG9j
ayBib29sIGlzRG9uZSA9IGZhbHNlOwogICAgIF9fYmxvY2sgYm9vbCBkaWRMb2FkUmVzdWx0ID0g
ZmFsc2U7Ci0gICAgW21fbWFpbldlYlZpZXctPnBsYXRmb3JtVmlldygpIF9kaWRMb2FkTm9uQXBw
Qm91bmRSZXF1ZXN0Ol4oQk9PTCByZXN1bHQpIHsKKyAgICBbbV9tYWluV2ViVmlldy0+cGxhdGZv
cm1WaWV3KCkgX2RpZExvYWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0Ol4oQk9PTCByZXN1bHQpIHsK
ICAgICAgICAgZGlkTG9hZFJlc3VsdCA9IHJlc3VsdDsKICAgICAgICAgaXNEb25lID0gdHJ1ZTsK
ICAgICB9XTsKQEAgLTQzMiwxNCArNDE2LDE0IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OmRpZExv
YWROb25BcHBCb3VuZFJlcXVlc3QoKQogICAgIHJldHVybiBkaWRMb2FkUmVzdWx0OwogfQogCi12
b2lkIFRlc3RDb250cm9sbGVyOjpjbGVhckFwcEJvdW5kTmF2aWdhdGlvbkRhdGEoKQordm9pZCBU
ZXN0Q29udHJvbGxlcjo6Y2xlYXJBcHBQcml2YWN5UmVwb3J0VGVzdGluZ0RhdGEoKQogewogICAg
IGF1dG8qIHBhcmVudFZpZXcgPSBtYWluV2ViVmlldygpOwogICAgIGlmICghcGFyZW50VmlldykK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgX19ibG9jayBib29sIGRvbmVDbGVhcmluZyA9IGZhbHNl
OwotICAgIFttX21haW5XZWJWaWV3LT5wbGF0Zm9ybVZpZXcoKSBfY2xlYXJBcHBCb3VuZE5hdmln
YXRpb25EYXRhOl57CisgICAgW21fbWFpbldlYlZpZXctPnBsYXRmb3JtVmlldygpIF9jbGVhckFw
cFByaXZhY3lSZXBvcnRUZXN0aW5nRGF0YTpeewogICAgICAgICBkb25lQ2xlYXJpbmcgPSB0cnVl
OwogICAgIH1dOwogICAgIHBsYXRmb3JtUnVuVW50aWwoZG9uZUNsZWFyaW5nLCBub1RpbWVvdXQp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVubmVyV0tX
ZWJWaWV3LmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5uZXJXS1dlYlZp
ZXcuaAppbmRleCAwN2ZlMTU3YmIxYTFlOGNiN2Q2Yzk4ZThmYmUwMWI0OWVjYWVkMThjLi41NjE2
YzJiMzhmMWI2MWFhOTMyOTg1ZTY5OTEzOWMwMDhhMGY2MzMyIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5uZXJXS1dlYlZpZXcuaAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5uZXJXS1dlYlZpZXcuaApAQCAtODMsOCArODMs
NyBAQAogCiAtICh2b2lkKWRpc21pc3NBY3RpdmVNZW51OwogLSAodm9pZClyZXNldEludGVyYWN0
aW9uQ2FsbGJhY2tzOwotLSAodm9pZClfYXBwQm91bmROYXZpZ2F0aW9uRGF0YUZvckRvbWFpbjoo
TlNTdHJpbmcgKilkb21haW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TU3RyaW5nICog
Y29udGV4dCkpY29tcGxldGlvbkhhbmRsZXI7Ci0tICh2b2lkKV9kaWRMb2FkQXBwQm91bmRSZXF1
ZXN0Oih2b2lkICheKShCT09MIHJlc3VsdCkpY29tcGxldGlvbkhhbmRsZXI7Ci0tICh2b2lkKV9k
aWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0Oih2b2lkICheKShCT09MIHJlc3VsdCkpY29tcGxldGlv
bkhhbmRsZXI7CistICh2b2lkKV9kaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdDoodm9pZCAoXiko
Qk9PTCByZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZClfZGlkTG9hZE5vbkFwcElu
aXRpYXRlZFJlcXVlc3Q6KHZvaWQgKF4pKEJPT0wgcmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcjsK
IAogQGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVu
bmVyV0tXZWJWaWV3Lm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVubmVy
V0tXZWJWaWV3Lm1tCmluZGV4IDNhOWJmMzkyZDFmNDlhNTk3ZjM4NTJmMzRkNjJjYmIzNzVmZjg5
MGQuLjU1ZjUzZTBmMWFmOTI5NjRmMzc0OTdlMTBlNTYyMDAwNTE0ZGJiNWMgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFJ1bm5lcldLV2ViVmlldy5tbQorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5uZXJXS1dlYlZpZXcubW0KQEAg
LTYwNywxOSArNjA3LDE0IEBAIHN0YXRpYyBib29sIGlzUXVpY2tib2FyZFZpZXdDb250cm9sbGVy
KFVJVmlld0NvbnRyb2xsZXIgKnZpZXdDb250cm9sbGVyKQogICAgICAgICBzZWxmLmRpZEhpZGVD
b250YWN0UGlja2VyQ2FsbGJhY2soKTsKIH0KIAotLSAodm9pZClfYXBwQm91bmROYXZpZ2F0aW9u
RGF0YUZvckRvbWFpbjooTlNTdHJpbmcgKilkb21haW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKE5TU3RyaW5nICogY29udGV4dCkpY29tcGxldGlvbkhhbmRsZXIKKy0gKHZvaWQpX2RpZExv
YWRBcHBJbml0aWF0ZWRSZXF1ZXN0Oih2b2lkICheKShCT09MIHJlc3VsdCkpY29tcGxldGlvbkhh
bmRsZXIKIHsKLSAgICBbc3VwZXIgX2FwcEJvdW5kTmF2aWdhdGlvbkRhdGFGb3JEb21haW46ZG9t
YWluIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKKyAgICBbc3VwZXIgX2Rp
ZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0OmNvbXBsZXRpb25IYW5kbGVyXTsKIH0KIAotLSAodm9p
ZClfZGlkTG9hZEFwcEJvdW5kUmVxdWVzdDoodm9pZCAoXikoQk9PTCByZXN1bHQpKWNvbXBsZXRp
b25IYW5kbGVyCistICh2b2lkKV9kaWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdDoodm9pZCAo
XikoQk9PTCByZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0gICAgW3N1cGVyIF9kaWRMb2Fk
QXBwQm91bmRSZXF1ZXN0OmNvbXBsZXRpb25IYW5kbGVyXTsKLX0KLQotLSAodm9pZClfZGlkTG9h
ZE5vbkFwcEJvdW5kUmVxdWVzdDoodm9pZCAoXikoQk9PTCByZXN1bHQpKWNvbXBsZXRpb25IYW5k
bGVyCi17Ci0gICAgW3N1cGVyIF9kaWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0OmNvbXBsZXRpb25I
YW5kbGVyXTsKKyAgICBbc3VwZXIgX2RpZExvYWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0OmNvbXBs
ZXRpb25IYW5kbGVyXTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDdiZjc2YmVhNTlhMTFkZTBjNmIzMmJi
NjRjZTY4NzVkZTA1MjE4NzQuLjU4Zjk0YTg2NDAxYWQyMmUyYjRiMTNiNjZlM2JkZDQxZDQ4Y2U2
MDQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAyMS0wNy0wNyAgS2F0ZSBDaGVuZXkgIDxrYXRo
ZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBDbGVhbiB1cCBBcHAgUHJpdmFjeSBS
ZXBvcnQgY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI3MzI2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83OTY5Njg0OT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIEFwcCBQcml2YWN5IFJl
cG9ydCB0ZXN0cyBpbnRvIHRoZWlyIG93biBkaXJlY3RvcnkuCisKKyAgICAgICAgKiBUZXN0RXhw
ZWN0YXRpb25zOgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJp
YnV0aW9uLWxvYWQtdXJsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tbG9hZC11cmwuaHRtbDogUmVuYW1lZCBm
cm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91
bmQtYXR0cmlidXRpb24tbG9hZC11cmwuaHRtbC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcC1w
cml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1waW5nLWxvYWQtZXhwZWN0ZWQudHh0OiBSZW5hbWVk
IGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1i
b3VuZC1hdHRyaWJ1dGlvbi1waW5nLWxvYWQtZXhwZWN0ZWQudHh0LgorICAgICAgICAqIGh0dHAv
dGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXBpbmctbG9hZC5odG1sOiBSZW5h
bWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2Fw
cC1ib3VuZC1hdHRyaWJ1dGlvbi1waW5nLWxvYWQuaHRtbC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1wb3N0LXJlcXVlc3QtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1
dGlvbi1wb3N0LXJlcXVlc3QuaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tcG9zdC1yZXF1
ZXN0Lmh0bWwuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmli
dXRpb24tcHJlZmxpZ2h0LWFzeW5jLWV4cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9tIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRp
b24tcHJlZmxpZ2h0LWFzeW5jLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2Fw
cC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1wcmVmbGlnaHQtYXN5bmMuaHRtbDogUmVuYW1l
ZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAt
Ym91bmQtYXR0cmlidXRpb24tcHJlZmxpZ2h0LWFzeW5jLmh0bWwuCisgICAgICAgICogaHR0cC90
ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tcHJlZmxpZ2h0LXN5bmMtZXhwZWN0
ZWQudHh0OiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nl
ci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1wcmVmbGlnaHQtc3luYy1leHBlY3RlZC50
eHQuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24t
cHJlZmxpZ2h0LXN5bmMuaHRtbDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tcHJlZmxpZ2h0LXN5
bmMuaHRtbC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1
dGlvbi1zcGVjdWxhdGl2ZS1yZXZhbGlkYXRpb24tZXhwZWN0ZWQudHh0OiBSZW5hbWVkIGZyb20g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1h
dHRyaWJ1dGlvbi1zcGVjdWxhdGl2ZS1yZXZhbGlkYXRpb24tZXhwZWN0ZWQudHh0LgorICAgICAg
ICAqIGh0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXNwZWN1bGF0aXZl
LXJldmFsaWRhdGlvbi5odG1sOiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1zcGVjdWxhdGl2ZS1y
ZXZhbGlkYXRpb24uaHRtbC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9y
dC9yZXNvdXJjZXMvZnJhbWUtd2l0aC1hdXRoZW50aWNhdGVkLXJlc291cmNlLnB5OiBSZW5hbWVk
IGZyb20gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L3Jlc291
cmNlcy9mcmFtZS13aXRoLWF1dGhlbnRpY2F0ZWQtcmVzb3VyY2UucHkuCisgICAgICAgICogaHR0
cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvcmVzb3VyY2VzL3Bvc3QucHk6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L3Jlc291cmNlcy9yZXNvdXJjZS13
aXRoLWF1dGgucHk6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1i
cm93c2VyLXByaXZhY3kvcmVzb3VyY2VzL3Jlc291cmNlLXdpdGgtYXV0aC5weS4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9u
LWxvYWQtdXJsLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2lu
LWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXBvc3QtcmVxdWVzdC1l
eHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nl
ci1wcml2YWN5L2NvbnRleHQtc3RyaW5nLWZvci1zdWJmcmFtZS1leHBlY3RlZC50eHQ6IFJlbW92
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2NvbnRleHQt
c3RyaW5nLWZvci1zdWJmcmFtZS5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
aW4tYXBwLWJyb3dzZXItcHJpdmFjeS9jb250ZXh0LXN0cmluZy1wcmVjb25uZWN0LWV4cGVjdGVk
LnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZh
Y3kvY29udGV4dC1zdHJpbmctcHJlY29ubmVjdC5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9jb250ZXh0LXN0cmluZy1wcmVmbGlnaHQt
ZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW4tYXBwLWJyb3dz
ZXItcHJpdmFjeS9jb250ZXh0LXN0cmluZy1wcmVmbGlnaHQuaHRtbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvcmVzb3VyY2VzL3Bvc3QucHk6
IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Jlc291cmNlcy9jaGVj
ay1waW5nLWFwcC1pbml0aWF0ZWQtZGF0YS5weTogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvY2hlY2stcGluZy1hcHAtYm91bmQtZGF0YS5w
eS4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjEt
MDctMDcgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lG
Q10gVW5leHBlY3RlZCBjb250ZW50IHdyYXAgd2hlbiB0aGUgY29udGFpbmluZyBibG9jayB3aWR0
aCBpcyByZWxhdGl2ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBi
L0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZWM4Y2FkNjFjNGQ2MDE3MTA1OTE0
ZGZiYzc1M2NiYWYzZDNmMjljMy4uNjQ1MWRkNTJkNTE4NTBiZGNhOGVkNDU1OWZiNjM2YjZhMjM5
OTYwMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlv
dXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCkBAIC0xOTQsNiArMTk0LDkgQEAgZmFzdC9zcGVlY2hy
ZWNvZ25pdGlvbi9zdGFydC1yZWNvZ25pdGlvbi10aGVuLXN0b3AuaHRtbCBbIFNraXAgXQogZmFz
dC9zcGVlY2hyZWNvZ25pdGlvbi9zdGFydC1zZWNvbmQtcmVjb2duaXRpb24uaHRtbCBbIFNraXAg
XQogZmFzdC9zcGVlY2hyZWNvZ25pdGlvbi9pb3MvIFsgU2tpcCBdCiAKKyMgYXBwLXByaXZhY3kt
cmVwb3J0IHRlc3RzIHJlbHkgb24gV2ViS2l0QWRkaXRpb25zCitodHRwL3Rlc3RzL2FwcC1wcml2
YWN5LXJlcG9ydC8gWyBTa2lwIF0KKwogIyBPbmx5IHBhcnRpYWwgc3VwcG9ydCBvbiBDb2NvYSBw
bGF0Zm9ybXMuCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NwZWVjaC1hcGkvIFsg
U2tpcCBdCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3kt
cmVwb3J0L2F0dHJpYnV0aW9uLWxvYWQtdXJsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLWxvYWQtdXJsLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hMDAyNDgwNDUxNTk5ZmI0MDhlZDAwZjQ4YmZkNjcyOGYyNmQ2ZGY2
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1y
ZXBvcnQvYXR0cmlidXRpb24tbG9hZC11cmwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAor
VGVzdCBsb2FkVVJMIHJlcXVlc3RzIGFyZSBzdWNjZXNmdWxseSBhdHRyaWJ1dGVkIGFzIGFwcCBp
bml0aWF0ZWQuCitQQVNTIHN1Y2Nlc3NmdWxseSBsb2FkZWQgb25seSBhcHAgaW5pdGlhdGVkIHJl
cXVlc3RzCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3kt
cmVwb3J0L2F0dHJpYnV0aW9uLWxvYWQtdXJsLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1sb2FkLXVybC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQ3YWQ4ZWU1Yzg3Y2MyZDE4NWVkNzk3ZjViZWYwN2FkNjk0ZThjMDQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlv
bi1sb2FkLXVybC5odG1sCkBAIC0wLDAgKzEsNDggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHkgb25sb2FkPSJzZXRUaW1lb3V0KCdydW5UZXN0KCknLCAwKSI+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+VGVzdCBsb2FkVVJMIHJlcXVlc3RzIGFyZSBzdWNjZXNmdWxseSBh
dHRyaWJ1dGVkIGFzIGFwcCBpbml0aWF0ZWQuPC9kaXY+Cis8cHJlIGlkPSJjb25zb2xlIj48L3By
ZT4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiBsb2FkVVJMKCkgeworICAgICAgICBkb2N1bWVudC5sb2Nh
dGlvbi5ocmVmID0gZGVzdGluYXRpb25PcmlnaW4gKyAiL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRy
aWJ1dGlvbi1sb2FkLXVybC5odG1sIjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBsb2cobWVzc2Fn
ZSkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UgKyAnXG4nKSk7CisgICAgfQorCisg
ICAgY29uc3QgZGVzdGluYXRpb25PcmlnaW4gPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwIjsKKyAg
ICBjb25zdCBzdGFydGluZ09yaWdpbiA9ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiOworICAgIGZ1
bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5vcmlnaW4g
PT09IHN0YXJ0aW5nT3JpZ2luKSB7CisgICAgICAgICAgICBsb2FkVVJMKCk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICB2YXIgZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3QgPSB0ZXN0
UnVubmVyLmRpZExvYWRBcHBJbml0aWF0ZWRSZXF1ZXN0KCk7CisgICAgICAgICAgICB2YXIgZGlk
TG9hZE5vbkFwcEluaXRpYXRlZFJlcXVlc3QgPSB0ZXN0UnVubmVyLmRpZExvYWROb25BcHBJbml0
aWF0ZWRSZXF1ZXN0KCk7CisKKyAgICAgICAgICAgIGlmIChkaWRMb2FkTm9uQXBwSW5pdGlhdGVk
UmVxdWVzdCkgeworICAgICAgICAgICAgICAgIGxvZygiRkFJTCBkaWQgbG9hZCBub24gYXBwIGlu
aXRpYXRlZCByZXF1ZXN0Iik7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghZGlkTG9hZEFwcEluaXRpYXRl
ZFJlcXVlc3QpIHsKKyAgICAgICAgICAgICAgICBsb2coIkZBSUwgZGlkIG5vdCBsb2FkIGFwcCBp
bml0aWF0ZWQgcmVxdWVzdCIpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBsb2coIlBBU1Mgc3VjY2Vzc2Z1bGx5
IGxvYWRlZCBvbmx5IGFwcCBpbml0aWF0ZWQgcmVxdWVzdHMiKTsKKyAgICAgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5
LXJlcG9ydC9hdHRyaWJ1dGlvbi1waW5nLWxvYWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tcGluZy1sb2FkLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wZDYxN2VlOTAwYTQ5MDJiOTdhNGJlZDZhMzllOTY1NjZjZTQ1
NTlmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFj
eS1yZXBvcnQvYXR0cmlidXRpb24tcGluZy1sb2FkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDgg
QEAKK0NPTlNPTEUgTUVTU0FHRTogUEFTUyBzdWNjZXNzZnVsbHkgbG9hZGVkIG9ubHkgYXBwIGlu
aXRpYXRlZCByZXF1ZXN0cworUGluZyBzZW50IHN1Y2Nlc3NmdWxseQorQ09OVEVOVF9UWVBFOiB0
ZXh0L3BpbmcKK0hUVFBfSE9TVDogMTI3LjAuMC4xOjgwMDAKK0hUVFBfUElOR19GUk9NOiBodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXBpbmctbG9h
ZC5odG1sCitIVFRQX1BJTkdfVE86IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9uYXZpZ2F0aW9uL3Jl
c291cmNlcy9jaGVjay1waW5nLWFwcC1pbml0aWF0ZWQtZGF0YS5weQorUkVRVUVTVF9NRVRIT0Q6
IFBPU1QKK1JFUVVFU1RfVVJJOiAvbmF2aWdhdGlvbi9yZXNvdXJjZXMvc2F2ZS1waW5nLnB5CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRy
aWJ1dGlvbi1waW5nLWxvYWQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZh
Y3ktcmVwb3J0L2F0dHJpYnV0aW9uLXBpbmctbG9hZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjExMDBjYWUy
YzYyY2RhYmRhYTRlMTBlYzM5ZjljOTBhODllYmU5OTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1waW5nLWxv
YWQuaHRtbApAQCAtMCwwICsxLDMwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vbmF2aWdhdGlvbi9waW5nLWF0dHJpYnV0ZS9yZXNvdXJjZXMvdXRp
bGl0aWVzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIgJiYg
d2luZG93LmludGVybmFscykgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRl
c3RSdW5uZXIuc2V0U3RhdGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVycmVyKGZhbHNlLCBmdW5j
dGlvbiAoKSB7IH0pOworICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRIeXBlcmxpbmtBdWRpdGlu
Z0VuYWJsZWQodHJ1ZSk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1
bmN0aW9uIHRlc3QoKQoreworICAgIGNsaWNrRWxlbWVudChkb2N1bWVudC5xdWVyeVNlbGVjdG9y
KCJpbWciKSk7Cit9CisKK3dpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbiAoKQoreworICAgIGNsZWFy
TGFzdFBpbmdSZXN1bHRBbmRSdW5UZXN0KHRlc3QpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKyAgICA8aW1nIHNyYz0ibm9uLWV4aXN0ZW50LWltYWdlLmpwZyIgd2lkdGg9IjEyOCIg
aGVpZ2h0PSIxMjgiIHVzZW1hcD0iI2ltYWdlbWFwIj4KKyAgICA8bWFwIG5hbWU9ImltYWdlbWFw
Ij4KKyAgICAgICAgPGFyZWEgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMCwwLDEyOCwxMjgiIGhyZWY9
Ii4uL25hdmlnYXRpb24vcmVzb3VyY2VzL2NoZWNrLXBpbmctYXBwLWluaXRpYXRlZC1kYXRhLnB5
IiBwaW5nPSIuLi9uYXZpZ2F0aW9uL3Jlc291cmNlcy9zYXZlLXBpbmcucHkiPgorICAgIDwvbWFw
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9h
cHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tcG9zdC1yZXF1ZXN0LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXBv
c3QtcmVxdWVzdC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTI0NWUzNDBmMTdkZThlNGYzZTM1
OWNjMWI5ZjQxNDc2NmRlY2YxYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXBvc3QtcmVxdWVzdC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw0IEBACitDT05TT0xFIE1FU1NBR0U6IFBBU1Mgc3VjY2Vzc2Z1bGx5
IGxvYWRlZCBvbmx5IGFwcCBpbml0aWF0ZWQgcmVxdWVzdHMKK1Rlc3RzIGFwcCBpbml0aWF0ZWQg
cmVxdWVzdHMgZ2V0IG1hcmtlZCBmb3IgUE9TVCByZXF1ZXN0cy4KKworCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1wb3N0
LXJlcXVlc3QuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0
L2F0dHJpYnV0aW9uLXBvc3QtcmVxdWVzdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkNzk1NGY3ODAzM2I0
ZGU2MDViOTAxYTYwM2Y5YmQzMTllNTEyODUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1wb3N0LXJlcXVlc3Qu
aHRtbApAQCAtMCwwICsxLDIyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGVzdHMgYXBwIGlu
aXRpYXRlZCByZXF1ZXN0cyBnZXQgbWFya2VkIGZvciBQT1NUIHJlcXVlc3RzLjwvcD4KKzxmb3Jt
IGlkPSJ0ZXN0Rm9ybSIgYWN0aW9uPSJyZXNvdXJjZXMvcG9zdC5weSIgdGFyZ2V0PSJfYmxhbmsi
IHJlbD0ibm9yZWZlcnJlciIgbWV0aG9kPSJwb3N0Ij4KKzxpbnB1dCB0eXBlPSJzdWJtaXQiIHZh
bHVlPSJUZXN0Ij48L2lucHV0PgorPGZvcm0+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5z
ZXRDYW5PcGVuV2luZG93cyh0cnVlKTsKK30KKworZG9jdW1lbnQuZm9ybXNbMF0uc3VibWl0KCk7
CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tcHJlZmxpZ2h0LWFzeW5j
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0
L2F0dHJpYnV0aW9uLXByZWZsaWdodC1hc3luYy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWI1
ZWVhOTQyMmFkMGNhZWU3NjY3YmNkNDA2ZGI5M2UwYTVlOWUyZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXBy
ZWZsaWdodC1hc3luYy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACitDT05TT0xFIE1FU1NB
R0U6IFByZWZsaWdodCByZXNwb25zZSBpcyBub3Qgc3VjY2Vzc2Z1bAorQ09OU09MRSBNRVNTQUdF
OiBYTUxIdHRwUmVxdWVzdCBjYW5ub3QgbG9hZCBodHRwOi8vbG9jYWxob3N0OjgwMDAveG1saHR0
cHJlcXVlc3QvcmVzb3VyY2VzL3N0YXR1cy00MDQtd2l0aG91dC1ib2R5LnB5IGR1ZSB0byBhY2Nl
c3MgY29udHJvbCBjaGVja3MuCitUZXN0cyBhcHAgaW5pdGlhdGVkIHJlcXVlc3RzIGdldCBtYXJr
ZWQgZm9yIGFzeW5jIHByZWZsaWdodHMKKworUEFTUyBzdWNjZXNzZnVsbHkgbG9hZGVkIG9ubHkg
YXBwIGluaXRpYXRlZCByZXF1ZXN0cworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1wcmVmbGlnaHQtYXN5bmMuaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXBy
ZWZsaWdodC1hc3luYy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5M2I5ZjNjMjRkYjdlMzBjOWY1MWU5ZjRk
MjI3MTZkNjYyZThkYjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1wcmVmbGlnaHQtYXN5bmMuaHRtbApAQCAt
MCwwICsxLDQ2IEBACis8cD5UZXN0cyBhcHAgaW5pdGlhdGVkIHJlcXVlc3RzIGdldCBtYXJrZWQg
Zm9yIGFzeW5jIHByZWZsaWdodHM8L3A+CisKKzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorPHNj
cmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBsb2co
bWVzc2FnZSkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UgKyAnXG4nKSk7Cit9CisKK3Zh
ciBwcmVmbGlnaHRMaW5rRG9tYWluID0gImxvY2FsaG9zdCI7Cit2YXIgY29udGV4dEhvc3QgPSAi
MTI3LjAuMC4xIjsKK3ZhciB1cmwgPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3htbGh0dHByZXF1
ZXN0L3Jlc291cmNlcy9zdGF0dXMtNDA0LXdpdGhvdXQtYm9keS5weSIKKworZnVuY3Rpb24gcnVu
VGVzdCgpCit7CisgICAgdmFyIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgIHJlcS5v
cGVuKCJHRVQiLCB1cmwsIHRydWUpOworICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKCJ4LXdlYmtp
dCIsICJmb28iKTsKKworICAgIHJlcS5vbmVycm9yID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHZh
ciBkaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdCA9IHRlc3RSdW5uZXIuZGlkTG9hZEFwcEluaXRp
YXRlZFJlcXVlc3QoKTsKKyAgICAgICAgdmFyIGRpZExvYWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0
ID0gdGVzdFJ1bm5lci5kaWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdCgpOworCisgICAgICAg
IGlmIChkaWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdCkgeworICAgICAgICAgICAgbG9nKCJG
QUlMIGRpZCBsb2FkIG5vbiBhcHAgaW5pdGlhdGVkIHJlcXVlc3QiKTsKKyAgICAgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFkaWRMb2Fk
QXBwSW5pdGlhdGVkUmVxdWVzdCkgeworICAgICAgICAgICAgbG9nKCJGQUlMIGRpZCBub3QgbG9h
ZCBhcHAgaW5pdGlhdGVkIHJlcXVlc3QiKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOworICAgICAgICB9CisKKyAgICAgICAgbG9nKCJQQVNTIHN1Y2Nlc3NmdWxseSBsb2Fk
ZWQgb25seSBhcHAgaW5pdGlhdGVkIHJlcXVlc3RzIik7CisgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOworICAgIH0KKyAgICByZXEuc2VuZChudWxsKTsKK30KKworcnVuVGVzdCgpOwor
PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5
LXJlcG9ydC9hdHRyaWJ1dGlvbi1wcmVmbGlnaHQtc3luYy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9hdHRyaWJ1dGlvbi1wcmVmbGlnaHQt
c3luYy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDAxNmM1MzFlMDY1OWFkY2RkNjM1NTUyM2Vh
MWIwYWQyZDVhMmIxYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
YXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXByZWZsaWdodC1zeW5jLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDcgQEAKK0NPTlNPTEUgTUVTU0FHRTogUHJlZmxpZ2h0IHJlc3BvbnNlIGlz
IG5vdCBzdWNjZXNzZnVsCitDT05TT0xFIE1FU1NBR0U6IFhNTEh0dHBSZXF1ZXN0IGNhbm5vdCBs
b2FkIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvc3RhdHVz
LTQwNC13aXRob3V0LWJvZHkucHkgZHVlIHRvIGFjY2VzcyBjb250cm9sIGNoZWNrcy4KK1Rlc3Rz
IGFwcCBpbml0aWF0ZWQgcmVxdWVzdHMgZ2V0IG1hcmtlZCBmb3Igc3luYyBwcmVmbGlnaHRzCisK
K1BBU1M6IE5ldHdvcmtFcnJvcjogIEEgbmV0d29yayBlcnJvciBvY2N1cnJlZC4KK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5IGxvYWRlZCBvbmx5IGFwcCBpbml0aWF0ZWQgcmVxdWVzdHMKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24t
cHJlZmxpZ2h0LXN5bmMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3kt
cmVwb3J0L2F0dHJpYnV0aW9uLXByZWZsaWdodC1zeW5jLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWI1NDA5
NWExZmY3YzA0MWQxYWJlNTYwMGZhNWJjZTVjZWVlNDNhNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXByZWZs
aWdodC1zeW5jLmh0bWwKQEAgLTAsMCArMSw0OSBAQAorPHA+VGVzdHMgYXBwIGluaXRpYXRlZCBy
ZXF1ZXN0cyBnZXQgbWFya2VkIGZvciBzeW5jIHByZWZsaWdodHM8L3A+CisKKzxwcmUgaWQ9ImNv
bnNvbGUiPjwvcHJlPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwor
fQorCitmdW5jdGlvbiBsb2cobWVzc2FnZSkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnY29uc29sZScpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2Ug
KyAnXG4nKSk7Cit9CisKK3ZhciBwcmVmbGlnaHRMaW5rRG9tYWluID0gImxvY2FsaG9zdCI7Cit2
YXIgY29udGV4dEhvc3QgPSAiMTI3LjAuMC4xIjsKK3ZhciB1cmwgPSAiaHR0cDovL2xvY2FsaG9z
dDo4MDAwL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9zdGF0dXMtNDA0LXdpdGhvdXQtYm9keS5w
eSIKKworZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgdmFyIHJlcSA9IG5ldyBYTUxIdHRwUmVx
dWVzdCgpOworICAgIHJlcS5vcGVuKCJHRVQiLCB1cmwsIGZhbHNlKTsKKyAgICByZXEuc2V0UmVx
dWVzdEhlYWRlcigieC13ZWJraXQiLCAiZm9vIik7CisKKyAgICB0cnkgeworICAgICAgICByZXEu
c2VuZChudWxsKTsKKyAgICAgICAgbG9nKCJQQVNTOiAiICsgcmVxLnJlc3BvbnNlVGV4dCk7Cisg
ICAgfSBjYXRjaCAoZXgpIHsKKyAgICAgICAgbG9nKCJQQVNTOiAiICsgZXgpOworICAgICAgICB2
YXIgZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3QgPSB0ZXN0UnVubmVyLmRpZExvYWRBcHBJbml0
aWF0ZWRSZXF1ZXN0KCk7CisgICAgICAgIHZhciBkaWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVz
dCA9IHRlc3RSdW5uZXIuZGlkTG9hZE5vbkFwcEluaXRpYXRlZFJlcXVlc3QoKTsKKworICAgICAg
ICBpZiAoZGlkTG9hZE5vbkFwcEluaXRpYXRlZFJlcXVlc3QpIHsKKyAgICAgICAgICAgIGxvZygi
RkFJTCBkaWQgbG9hZCBub24gYXBwIGluaXRpYXRlZCByZXF1ZXN0Iik7CisgICAgICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghZGlkTG9h
ZEFwcEluaXRpYXRlZFJlcXVlc3QpIHsKKyAgICAgICAgICAgIGxvZygiRkFJTCBkaWQgbm90IGxv
YWQgYXBwIGluaXRpYXRlZCByZXF1ZXN0Iik7CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIGxvZygiUEFTUyBzdWNjZXNzZnVsbHkgbG9h
ZGVkIG9ubHkgYXBwIGluaXRpYXRlZCByZXF1ZXN0cyIpOworICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKKyAgICB9Cit9CisKK3J1blRlc3QoKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24t
c3BlY3VsYXRpdmUtcmV2YWxpZGF0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXNwZWN1bGF0aXZlLXJldmFsaWRh
dGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjIxYzJkNTk5NDE0NGU4MTBlMTU3N2VmZmJj
ZDA5Y2UwNmRmM2RkZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
YXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0aW9uLXNwZWN1bGF0aXZlLXJldmFsaWRhdGlvbi1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorMTI3LjAuMC4xOjgwMDAgLSBkaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgLSBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNj
aGVtZUhUVFBCYXNpYyAtIFJlc3BvbmRpbmcgd2l0aCB0ZXN0VXNlcm5hbWU6dGVzdFBhc3N3b3Jk
CisxMjcuMC4wLjE6ODAwMCAtIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAtIFBy
b3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lSFRUUEJhc2ljIC0gU2ltdWxhdGluZyBj
YW5jZWxsZWQgYXV0aGVudGljYXRpb24gc2hlZXQKK1Rlc3RzIHNwZWN1bGF0aXZlIHJldmFsaWRh
dGlvbiBvZiBhdXRoZW50aWNhdGVkIHJlc291cmNlcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCisKK1BBU1MgeGhyLnN0YXR1cyBpcyA0MDEKK1BBU1MgU3VjY2Vzc2Z1bHkgbG9hZGVk
LgorUEFTUyBzdWNjZXNzZnVsbHkgbG9hZGVkIG9ubHkgYXBwIGluaXRpYXRlZCByZXF1ZXN0cwor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L2F0dHJpYnV0
aW9uLXNwZWN1bGF0aXZlLXJldmFsaWRhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9hcHAtcHJpdmFjeS1yZXBvcnQvYXR0cmlidXRpb24tc3BlY3VsYXRpdmUtcmV2YWxpZGF0aW9u
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYWI3NWQ2ZmYxYmU4OWExN2ZiYWRlYWVmYWM5NzQwMDBkYzllODVk
MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3kt
cmVwb3J0L2F0dHJpYnV0aW9uLXNwZWN1bGF0aXZlLXJldmFsaWRhdGlvbi5odG1sCkBAIC0wLDAg
KzEsNzIgQEAKKzxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyBzcGVjdWxhdGl2ZSByZXZh
bGlkYXRpb24gb2YgYXV0aGVudGljYXRlZCByZXNvdXJjZXMuIik7Citqc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKKwordGVzdFJ1bm5lci5zZXRIYW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzKHRy
dWUpOwordGVzdFJ1bm5lci5zZXRBdXRoZW50aWNhdGlvblVzZXJuYW1lKCJ0ZXN0VXNlcm5hbWUi
KTsKK3Rlc3RSdW5uZXIuc2V0QXV0aGVudGljYXRpb25QYXNzd29yZCgidGVzdFBhc3N3b3JkIik7
CisKK3N0YXRlID0gIndhcm11cCI7CisKK2Z1bmN0aW9uIGNsZWFyQ3JlZGVudGlhbFN0b3JhZ2Uo
KQoreworICAgIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgIHhoci5vcGVuKCJHRVQi
LCAicmVzb3VyY2VzL3Jlc291cmNlLXdpdGgtYXV0aC5weT9vdGhlciIsIGZhbHNlLCAiYmFkVXNl
cm5hbWUiLCAiYmFkUGFzc3dvcmQiKTsKKyAgICB4aHIuc2VuZCgpOworICAgIHNob3VsZEJlKCJ4
aHIuc3RhdHVzIiwgIjQwMSIpOworfQorCitmdW5jdGlvbiBsb2cobWVzc2FnZSkKK3sKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKG1lc3NhZ2UgKyAnXG4nKSk7Cit9CisKK2Z1bmN0aW9uIGZyYW1lTG9hZGVk
KCkKK3sKKyAgICBpZiAoc3RhdGUgPT0gIndhcm11cCIpIHsKKyAgICAgICAgLy8gTmF2aWdhdGUg
ZnJhbWUgdG8gJ2Fib3V0OmJsYW5rJyB0byBmbHVzaCB0byBzdWJyZXNvdXJjZSBsb2FkcyBtZXRh
ZGF0YSB0byBkaXNrLgorICAgICAgICBzdGF0ZSA9ICJmbHVzaGluZ01ldGFkYXRhIjsKKyAgICAg
ICAgdGVzdFJ1bm5lci5zZXRIYW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzKGZhbHNlKTsK
KyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RGcmFtZSIpLnNyYyA9ICJhYm91
dDpibGFuayI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKHN0YXRlID09ICJmbHVz
aGluZ01ldGFkYXRhIikgeworICAgICAgICBjbGVhckNyZWRlbnRpYWxTdG9yYWdlKCk7CisKKyAg
ICAgICAgaW50ZXJuYWxzLmNsZWFyTWVtb3J5Q2FjaGUoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5z
ZXRIYW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzKGZhbHNlKTsKKworICAgICAgICAvLyBO
YXZpZ2F0ZSBmcmFtZSB0byBpdHMgb3JpZ2luYWwgbG9jYXRpb24gYWdhaW4uIFRoaXMgdGltZSBp
dCBzaG91bGQgc3BlY3VsYXRpdmVseQorICAgICAgICAvLyB2YWxpZGF0ZSBzdWJyZXNvdXJjZXMg
YXMgd2UgaGF2ZSBzdWJyZXNvdXJjZSBsb2FkcyBtZXRhZGF0YSBpbiB0aGUgZGlzayBjYWNoZS4K
KyAgICAgICAgc3RhdGUgPSAic3BlY3VsYXRpdmVSZXZhbGlkYXRpb24iOworICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdEZyYW1lIikuc3JjID0gInJlc291cmNlcy9mcmFtZS13
aXRoLWF1dGhlbnRpY2F0ZWQtcmVzb3VyY2UucHkiOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIGlmIChzdGF0ZSA9PSAic3BlY3VsYXRpdmVSZXZhbGlkYXRpb24iKSB7CisgICAgICAgIHRl
c3RQYXNzZWQoIlN1Y2Nlc3NmdWx5IGxvYWRlZC4iKTsKKyAgICAgICAgdmFyIGRpZExvYWRBcHBJ
bml0aWF0ZWRSZXF1ZXN0ID0gdGVzdFJ1bm5lci5kaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdCgp
OworICAgICAgICB2YXIgZGlkTG9hZE5vbkFwcEluaXRpYXRlZFJlcXVlc3QgPSB0ZXN0UnVubmVy
LmRpZExvYWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0KCk7CisKKyAgICAgICAgaWYgKGRpZExvYWRO
b25BcHBJbml0aWF0ZWRSZXF1ZXN0KSB7CisgICAgICAgICAgICBsb2coIkZBSUwgZGlkIGxvYWQg
bm9uIGFwcCBpbml0aWF0ZWQgcmVxdWVzdCIpOworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWRpZExvYWRB
cHBJbml0aWF0ZWRSZXF1ZXN0KSB7CisgICAgICAgICAgICBsb2coIkZBSUwgZGlkIG5vdCBsb2Fk
IGFwcCBpbml0aWF0ZWQgcmVxdWVzdCIpOworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBsb2coIlBBU1Mgc3VjY2Vz
c2Z1bGx5IGxvYWRlZCBvbmx5IGFwcCBpbml0aWF0ZWQgcmVxdWVzdHMiKTsKKworICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKworPC9zY3JpcHQ+Cis8
aWZyYW1lIGlkPSJ0ZXN0RnJhbWUiIHNyYz0icmVzb3VyY2VzL2ZyYW1lLXdpdGgtYXV0aGVudGlj
YXRlZC1yZXNvdXJjZS5weSIgb25sb2FkPSJmcmFtZUxvYWRlZCgpIj48L2lmcmFtZT4KKzxzY3Jp
cHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwLXByaXZhY3ktcmVwb3J0L3Jlc291
cmNlcy9mcmFtZS13aXRoLWF1dGhlbnRpY2F0ZWQtcmVzb3VyY2UucHkgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9yZXNvdXJjZXMvZnJhbWUtd2l0aC1hdXRoZW50
aWNhdGVkLXJlc291cmNlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0OGQwZmQxYTZkNmMwOTlhYWQ2MWUwMDQy
NDJlMjM4OTU1M2U5NDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2FwcC1wcml2YWN5LXJlcG9ydC9yZXNvdXJjZXMvZnJhbWUtd2l0aC1hdXRoZW50aWNhdGVkLXJl
c291cmNlLnB5CkBAIC0wLDAgKzEsMTMgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKworaW1w
b3J0IHN5cworCitzeXMuc3Rkb3V0LndyaXRlKAorICAgICdDYWNoZS1Db250cm9sOiBtYXgtYWdl
PTBcclxuJworICAgICdFdGFnOiAxMjM0NTY3ODlcclxuJworICAgICdDb250ZW50LVR5cGU6IHRl
eHQvaHRtbFxyXG5cclxuJworICAgICc8IURPQ1RZUEUgaHRtbD5cbicKKyAgICAnPGJvZHk+XG4n
CisgICAgJzxzY3JpcHQgc3JjPSJyZXNvdXJjZS13aXRoLWF1dGgucHkiPjwvc2NyaXB0PlxuJwor
ICAgICc8L2JvZHk+XG4nCispCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Fw
cC1wcml2YWN5LXJlcG9ydC9yZXNvdXJjZXMvcG9zdC5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvYXBwLXByaXZhY3ktcmVwb3J0L3Jlc291cmNlcy9wb3N0LnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwNmZl
ZWUyMTJjNzAxY2Y2MmQ5ZDgzMGRmZjJiNWI4NzYxYjkzOWYKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9yZXNvdXJjZXMvcG9zdC5w
eQpAQCAtMCwwICsxLDI3IEBACisjIS91c3IvYmluL2VudiBweXRob24zCisKK2ltcG9ydCBvcwor
aW1wb3J0IHN5cworCityZWZlcmVyID0gb3MuZW52aXJvbi5nZXQoJ0hUVFBfUkVGRVJFUicsICcn
KQorCitzeXMuc3Rkb3V0LndyaXRlKAorICAgICdDb250ZW50LVR5cGU6IHRleHQvaHRtbFxyXG5c
clxuJworICAgICc8cD5SZWZlcnJlcjoge3JlZmVyZXJ9PC9wPlxuJworICAgICc8c2NyaXB0Plxu
JworICAgICdpZiAod2luZG93LnRlc3RSdW5uZXIpIHt7XG4nCisgICAgJyAgICB2YXIgZGlkTG9h
ZEFwcEluaXRpYXRlZFJlcXVlc3QgPSB0ZXN0UnVubmVyLmRpZExvYWRBcHBJbml0aWF0ZWRSZXF1
ZXN0KCk7XG4nCisgICAgJyAgICB2YXIgZGlkTG9hZE5vbkFwcEluaXRpYXRlZFJlcXVlc3QgPSB0
ZXN0UnVubmVyLmRpZExvYWROb25BcHBJbml0aWF0ZWRSZXF1ZXN0KCk7XG4nCisgICAgJyAgICBp
ZiAoZGlkTG9hZE5vbkFwcEluaXRpYXRlZFJlcXVlc3QpIHt7XG4nCisgICAgJyAgICAgICAgY29u
c29sZS5sb2coIkZBSUwgZGlkIGxvYWQgbm9uIGFwcCBpbml0aWF0ZWQgcmVxdWVzdCIpO1xuJwor
ICAgICcgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpO1xuJworICAgICcgICAgfX1cbicK
KyAgICAnICAgIGlmICghZGlkTG9hZEFwcEluaXRpYXRlZFJlcXVlc3QpIHt7XG4nCisgICAgJyAg
ICAgICAgIGNvbnNvbGUubG9nKCJGQUlMIGRpZCBub3QgbG9hZCBhcHAgaW5pdGlhdGVkIHJlcXVl
c3QiKTtcbicKKyAgICAnICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTtcbicKKyAgICAn
ICAgICB9fVxuJworICAgICcgICAgY29uc29sZS5sb2coIlBBU1Mgc3VjY2Vzc2Z1bGx5IGxvYWRl
ZCBvbmx5IGFwcCBpbml0aWF0ZWQgcmVxdWVzdHMiKTtcbicKKyAgICAnICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpO1xuJworICAgICd9fVxuJworICAgICc8L3NjcmlwdD5cbicuZm9ybWF0KHJl
ZmVyZXI9cmVmZXJlcikKKykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBw
LXByaXZhY3ktcmVwb3J0L3Jlc291cmNlcy9yZXNvdXJjZS13aXRoLWF1dGgucHkgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2YWN5LXJlcG9ydC9yZXNvdXJjZXMvcmVzb3VyY2Utd2l0
aC1hdXRoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdhZmI3OGQ4MWM2ZjNjOWRhNDc5ZDI4YmUyNDZhZTE1YmNk
MDRkZGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcC1wcml2
YWN5LXJlcG9ydC9yZXNvdXJjZXMvcmVzb3VyY2Utd2l0aC1hdXRoLnB5CkBAIC0wLDAgKzEsMjkg
QEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKworaW1wb3J0IGJhc2U2NAoraW1wb3J0IG9zCitp
bXBvcnQgc3lzCisKK2NyZWRlbnRpYWxzID0gYmFzZTY0LmI2NGRlY29kZShvcy5lbnZpcm9uLmdl
dCgnSFRUUF9BVVRIT1JJWkFUSU9OJywgJyBPZz09Jykuc3BsaXQoJyAnKVsxXSkuZGVjb2RlKCku
c3BsaXQoJzonKQordXNlcm5hbWUgPSBjcmVkZW50aWFsc1swXQorcGFzc3dvcmQgPSAnOicuam9p
bihjcmVkZW50aWFsc1sxOl0pCisKK2V4cGVjdGVkVXNlcm5hbWUgPSAndGVzdFVzZXJuYW1lJwor
ZXhwZWN0ZWRQYXNzd29yZCA9ICd0ZXN0UGFzc3dvcmQnCityZWFsbSA9IG9zLmVudmlyb24uZ2V0
KCdSRVFVRVNUX1VSSScsICcnKQorCitzeXMuc3Rkb3V0LndyaXRlKAorICAgICdDb250ZW50LVR5
cGU6IHRleHQvamF2YXNjcmlwdFxyXG4nCisgICAgJ0NhY2hlLUNvbnRyb2w6IG1heC1hZ2U9MFxy
XG4nCisgICAgJ0V0YWc6IDEyMzQ1Njc4OVxyXG4nCispCisKK2lmIHVzZXJuYW1lICE9IGV4cGVj
dGVkVXNlcm5hbWUgb3IgcGFzc3dvcmQgIT0gZXhwZWN0ZWRQYXNzd29yZDoKKyAgICBzeXMuc3Rk
b3V0LndyaXRlKAorICAgICAgICBmJ1dXVy1BdXRoZW50aWNhdGU6IEJhc2ljIHJlYWxtPSJ7cmVh
bG19IlxyXG4nCisgICAgICAgICdzdGF0dXM6IDQwMVxyXG5cclxuJworICAgICAgICBmJ1NlbnQg
dXNlcm5hbWU6cGFzc3dvcmQgb2YgKHt1c2VybmFtZX06e3Bhc3N3b3JkfSkgd2hpY2ggaXMgbm90
IHdoYXQgd2FzIGV4cGVjdGVkXG4nCisgICAgKQorICAgIHN5cy5leGl0KDApCisKK3N5cy5zdGRv
dXQud3JpdGUoJ1xyXG5sb2FkZWQgPSB0cnVlO1xuJykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24t
bG9hZC11cmwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJv
d3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1sb2FkLXVybC1leHBlY3RlZC50eHQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3OTgxZjFlMDg0YjBjZTI1N2FmNmYzZTVh
NjBkMWY1ZDI1MmVmMmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1i
b3VuZC1hdHRyaWJ1dGlvbi1sb2FkLXVybC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAt
MSwzICswLDAgQEAKLVRlc3QgbG9hZFVSTCByZXF1ZXN0cyBhcmUgc3VjY2VzZnVsbHkgYXR0cmli
dXRlZCBhcyBhcHAtYm91bmQuCi1QQVNTIHN1Y2Nlc3NmdWxseSBsb2FkZWQgb25seSBhcHAtYm91
bmQgcmVxdWVzdHMKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAt
YnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1sb2FkLXVybC5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRy
aWJ1dGlvbi1sb2FkLXVybC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjY2Ni
Y2YzZjIwMTEyZjFlMTZkNDBlZjc5N2U0OGQ5ODI3NzVjYTQwLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBw
LWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tbG9hZC11cmwuaHRtbAorKysg
L2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVh
ZD4KLSAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgotPC9oZWFk
PgotPGJvZHkgb25sb2FkPSJzZXRUaW1lb3V0KCdydW5UZXN0KCknLCAwKSI+Ci08ZGl2IGlkPSJk
ZXNjcmlwdGlvbiI+VGVzdCBsb2FkVVJMIHJlcXVlc3RzIGFyZSBzdWNjZXNmdWxseSBhdHRyaWJ1
dGVkIGFzIGFwcC1ib3VuZC48L2Rpdj4KLTxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgotPHNjcmlw
dD4KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7Ci0gICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgIH0KLQot
ICAgIGZ1bmN0aW9uIGxvYWRVUkwoKSB7Ci0gICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYg
PSBkZXN0aW5hdGlvbk9yaWdpbiArICIvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQt
YXR0cmlidXRpb24tbG9hZC11cmwuaHRtbCI7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gbG9nKG1l
c3NhZ2UpIHsKLSAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlICsgJ1xuJykpOwotICAgIH0K
LQotICAgIGNvbnN0IGRlc3RpbmF0aW9uT3JpZ2luID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCI7
Ci0gICAgY29uc3Qgc3RhcnRpbmdPcmlnaW4gPSAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIjsKLSAg
ICBmdW5jdGlvbiBydW5UZXN0KCkgewotICAgICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24ub3Jp
Z2luID09PSBzdGFydGluZ09yaWdpbikgewotICAgICAgICAgICAgbG9hZFVSTCgpOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgdmFyIGRpZExvYWRBcHBCb3VuZFJlcXVlc3QgPSB0ZXN0
UnVubmVyLmRpZExvYWRBcHBCb3VuZFJlcXVlc3QoKTsKLSAgICAgICAgICAgIHZhciBkaWRMb2Fk
Tm9uQXBwQm91bmRSZXF1ZXN0ID0gdGVzdFJ1bm5lci5kaWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0
KCk7Ci0KLSAgICAgICAgICAgIGlmIChkaWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0KSB7Ci0gICAg
ICAgICAgICAgICAgbG9nKCJGQUlMIGRpZCBsb2FkIG5vbiBhcHAtYm91bmQgcmVxdWVzdCIpOwot
ICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICBpZiAoIWRpZExvYWRBcHBCb3VuZFJlcXVlc3QpIHsKLSAgICAgICAgICAg
ICAgICBsb2coIkZBSUwgZGlkIG5vdCBsb2FkIGFwcC1ib3VuZCByZXF1ZXN0Iik7Ci0gICAgICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIGxvZygiUEFTUyBzdWNjZXNzZnVsbHkgbG9hZGVkIG9ubHkgYXBwLWJvdW5kIHJlcXVl
c3RzIik7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICAgICAgfQot
ICAgIH0KLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlv
bi1waW5nLWxvYWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAt
YnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1waW5nLWxvYWQtZXhwZWN0ZWQu
dHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZGI3MWFiZjdkZGM4OTA5YmQ0M2Jk
NDI0OGVhYWZhM2MyZTgyOWJkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9h
cHAtYm91bmQtYXR0cmlidXRpb24tcGluZy1sb2FkLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxs
CkBAIC0xLDggKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBQQVNTIHN1Y2Nlc3NmdWxseSBsb2Fk
ZWQgb25seSBhcHAtYm91bmQgcmVxdWVzdHMKLVBpbmcgc2VudCBzdWNjZXNzZnVsbHkKLUNPTlRF
TlRfVFlQRTogdGV4dC9waW5nCi1IVFRQX0hPU1Q6IDEyNy4wLjAuMTo4MDAwCi1IVFRQX1BJTkdf
RlJPTTogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJv
dW5kLWF0dHJpYnV0aW9uLXBpbmctbG9hZC5odG1sCi1IVFRQX1BJTkdfVE86IGh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9uYXZpZ2F0aW9uL3Jlc291cmNlcy9jaGVjay1waW5nLWFwcC1ib3VuZC1kYXRh
LnB5Ci1SRVFVRVNUX01FVEhPRDogUE9TVAotUkVRVUVTVF9VUkk6IC9uYXZpZ2F0aW9uL3Jlc291
cmNlcy9zYXZlLXBpbmcucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4t
YXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tcGluZy1sb2FkLmh0bWwg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5k
LWF0dHJpYnV0aW9uLXBpbmctbG9hZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBlMGJiMTA2N2M3ZGE4YjE1MGU5YjAwYzkxYjhlNTI1ODA0ZDUyZDliLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tcGluZy1sb2FkLmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1s
PgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vbmF2aWdhdGlvbi9waW5nLWF0dHJpYnV0ZS9yZXNv
dXJjZXMvdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LnRlc3RS
dW5uZXIgJiYgd2luZG93LmludGVybmFscykgewotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OwotICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVycmVyKGZh
bHNlLCBmdW5jdGlvbiAoKSB7IH0pOwotICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRIeXBlcmxp
bmtBdWRpdGluZ0VuYWJsZWQodHJ1ZSk7Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
Ci19Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIGNsaWNrRWxlbWVudChkb2N1bWVudC5xdWVy
eVNlbGVjdG9yKCJpbWciKSk7Ci19Ci0KLXdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbiAoKQotewot
ICAgIGNsZWFyTGFzdFBpbmdSZXN1bHRBbmRSdW5UZXN0KHRlc3QpOwotfQotPC9zY3JpcHQ+Ci08
L2hlYWQ+Ci08Ym9keT4KLSAgICA8aW1nIHNyYz0ibm9uLWV4aXN0ZW50LWltYWdlLmpwZyIgd2lk
dGg9IjEyOCIgaGVpZ2h0PSIxMjgiIHVzZW1hcD0iI2ltYWdlbWFwIj4KLSAgICA8bWFwIG5hbWU9
ImltYWdlbWFwIj4KLSAgICAgICAgPGFyZWEgc2hhcGU9InJlY3QiIGNvb3Jkcz0iMCwwLDEyOCwx
MjgiIGhyZWY9Ii4uL25hdmlnYXRpb24vcmVzb3VyY2VzL2NoZWNrLXBpbmctYXBwLWJvdW5kLWRh
dGEucHkiIHBpbmc9Ii4uL25hdmlnYXRpb24vcmVzb3VyY2VzL3NhdmUtcGluZy5weSI+Ci0gICAg
PC9tYXA+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXBvc3QtcmVx
dWVzdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2Vy
LXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXBvc3QtcmVxdWVzdC1leHBlY3RlZC50eHQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4YjVlNzk4MTVjNGQ1Nzg5MDk1NjI1ZmUw
NTNmM2I4MWI2ZGQxZDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1i
b3VuZC1hdHRyaWJ1dGlvbi1wb3N0LXJlcXVlc3QtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwK
QEAgLTEsNCArMCwwIEBACi1DT05TT0xFIE1FU1NBR0U6IFBBU1Mgc3VjY2Vzc2Z1bGx5IGxvYWRl
ZCBvbmx5IGFwcC1ib3VuZCByZXF1ZXN0cwotVGVzdHMgYXBwIGJvdW5kIHJlcXVlc3RzIGdldCBt
YXJrZWQgZm9yIFBPU1QgcmVxdWVzdHMuCi0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1wb3N0
LXJlcXVlc3QuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJp
dmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tcG9zdC1yZXF1ZXN0Lmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGE3NzIzZmQzZjRjYmU1Y2EzMzk4OTc2NTk3MDhlOGNjZjE0ZmEz
MDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1
dGlvbi1wb3N0LXJlcXVlc3QuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLTwh
RE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgot
PC9oZWFkPgotPGJvZHk+Ci08cD5UZXN0cyBhcHAgYm91bmQgcmVxdWVzdHMgZ2V0IG1hcmtlZCBm
b3IgUE9TVCByZXF1ZXN0cy48L3A+Ci08Zm9ybSBpZD0idGVzdEZvcm0iIGFjdGlvbj0icmVzb3Vy
Y2VzL3Bvc3QucHkiIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vcmVmZXJyZXIiIG1ldGhvZD0icG9z
dCI+Ci08aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iVGVzdCI+PC9pbnB1dD4KLTxmb3JtPgot
PHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOwotICAgIHRlc3RSdW5uZXIuc2V0Q2FuT3BlbldpbmRvd3ModHJ1ZSk7Ci19Ci0K
LWRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOwotCi08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJp
dmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tcHJlZmxpZ2h0LWFzeW5jLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQt
YXR0cmlidXRpb24tcHJlZmxpZ2h0LWFzeW5jLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDU4M2VmMDc1ZjE3NDAyZjYyMDJiZjYzNTkwNTY5YTIzZWU4NWFjNS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9u
LXByZWZsaWdodC1hc3luYy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAg
QEAKLUNPTlNPTEUgTUVTU0FHRTogUHJlZmxpZ2h0IHJlc3BvbnNlIGlzIG5vdCBzdWNjZXNzZnVs
Ci1DT05TT0xFIE1FU1NBR0U6IFhNTEh0dHBSZXF1ZXN0IGNhbm5vdCBsb2FkIGh0dHA6Ly9sb2Nh
bGhvc3Q6ODAwMC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvc3RhdHVzLTQwNC13aXRob3V0LWJv
ZHkucHkgZHVlIHRvIGFjY2VzcyBjb250cm9sIGNoZWNrcy4KLVRlc3RzIGFwcCBib3VuZCByZXF1
ZXN0cyBnZXQgbWFya2VkIGZvciBhc3luYyBwcmVmbGlnaHRzCi0KLVBBU1Mgc3VjY2Vzc2Z1bGx5
IGxvYWRlZCBvbmx5IGFwcC1ib3VuZCByZXF1ZXN0cwotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9u
LXByZWZsaWdodC1hc3luYy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJv
d3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1wcmVmbGlnaHQtYXN5bmMuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWU0ODNlMzhjNDQ1YzZjZWQ4YjExZjVmNjVm
ZjE2NTYzYWY0YzUwYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJv
dW5kLWF0dHJpYnV0aW9uLXByZWZsaWdodC1hc3luYy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
NDYgKzAsMCBAQAotPHA+VGVzdHMgYXBwIGJvdW5kIHJlcXVlc3RzIGdldCBtYXJrZWQgZm9yIGFz
eW5jIHByZWZsaWdodHM8L3A+Ci0KLTxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgotPHNjcmlwdD4K
LWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwot
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotfQotCi1mdW5jdGlvbiBsb2cobWVzc2Fn
ZSkKLXsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UgKyAnXG4nKSk7Ci19Ci0KLXZhciBwcmVm
bGlnaHRMaW5rRG9tYWluID0gImxvY2FsaG9zdCI7Ci12YXIgY29udGV4dEhvc3QgPSAiMTI3LjAu
MC4xIjsKLXZhciB1cmwgPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3htbGh0dHByZXF1ZXN0L3Jl
c291cmNlcy9zdGF0dXMtNDA0LXdpdGhvdXQtYm9keS5weSIKLQotZnVuY3Rpb24gcnVuVGVzdCgp
Ci17Ci0gICAgdmFyIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwotICAgIHJlcS5vcGVuKCJH
RVQiLCB1cmwsIHRydWUpOwotICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKCJ4LXdlYmtpdCIsICJm
b28iKTsKLQotICAgIHJlcS5vbmVycm9yID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciBkaWRM
b2FkQXBwQm91bmRSZXF1ZXN0ID0gdGVzdFJ1bm5lci5kaWRMb2FkQXBwQm91bmRSZXF1ZXN0KCk7
Ci0gICAgICAgIHZhciBkaWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0ID0gdGVzdFJ1bm5lci5kaWRM
b2FkTm9uQXBwQm91bmRSZXF1ZXN0KCk7Ci0KLSAgICAgICAgaWYgKGRpZExvYWROb25BcHBCb3Vu
ZFJlcXVlc3QpIHsKLSAgICAgICAgICAgIGxvZygiRkFJTCBkaWQgbG9hZCBub24gYXBwLWJvdW5k
IHJlcXVlc3QiKTsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgaWYgKCFkaWRMb2FkQXBwQm91bmRSZXF1ZXN0KSB7Ci0gICAgICAgICAg
ICBsb2coIkZBSUwgZGlkIG5vdCBsb2FkIGFwcC1ib3VuZCByZXF1ZXN0Iik7Ci0gICAgICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGxvZygiUEFT
UyBzdWNjZXNzZnVsbHkgbG9hZGVkIG9ubHkgYXBwLWJvdW5kIHJlcXVlc3RzIik7Ci0gICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgIH0KLSAgICByZXEuc2VuZChudWxsKTsKLX0K
LQotcnVuVGVzdCgpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXByZWZsaWdo
dC1zeW5jLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dz
ZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tcHJlZmxpZ2h0LXN5bmMtZXhwZWN0ZWQu
dHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZWUwNDUzYjc3ZWM2NTdhYWU4NDQ2
ODRmNDNlMmQyOGNmNmQyNWFmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9h
cHAtYm91bmQtYXR0cmlidXRpb24tcHJlZmxpZ2h0LXN5bmMtZXhwZWN0ZWQudHh0CisrKyAvZGV2
L251bGwKQEAgLTEsNyArMCwwIEBACi1DT05TT0xFIE1FU1NBR0U6IFByZWZsaWdodCByZXNwb25z
ZSBpcyBub3Qgc3VjY2Vzc2Z1bAotQ09OU09MRSBNRVNTQUdFOiBYTUxIdHRwUmVxdWVzdCBjYW5u
b3QgbG9hZCBodHRwOi8vbG9jYWxob3N0OjgwMDAveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL3N0
YXR1cy00MDQtd2l0aG91dC1ib2R5LnB5IGR1ZSB0byBhY2Nlc3MgY29udHJvbCBjaGVja3MuCi1U
ZXN0cyBhcHAgYm91bmQgcmVxdWVzdHMgZ2V0IG1hcmtlZCBmb3Igc3luYyBwcmVmbGlnaHRzCi0K
LVBBU1M6IE5ldHdvcmtFcnJvcjogIEEgbmV0d29yayBlcnJvciBvY2N1cnJlZC4KLVBBU1Mgc3Vj
Y2Vzc2Z1bGx5IGxvYWRlZCBvbmx5IGFwcC1ib3VuZCByZXF1ZXN0cwotCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0
dHJpYnV0aW9uLXByZWZsaWdodC1zeW5jLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
LWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXByZWZsaWdodC1zeW5j
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjMGYwOGQ1MmZmNzhmYzU5NTFi
MzNlZTEwNzBjMDNkMjI3NjYxNzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5
L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1wcmVmbGlnaHQtc3luYy5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsNDkgKzAsMCBAQAotPHA+VGVzdHMgYXBwIGJvdW5kIHJlcXVlc3RzIGdldCBtYXJrZWQg
Zm9yIHN5bmMgcHJlZmxpZ2h0czwvcD4KLQotPHByZSBpZD0iY29uc29sZSI+PC9wcmU+Ci08c2Ny
aXB0PgotaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7Ci0gICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLWZ1bmN0aW9uIGxvZyht
ZXNzYWdlKQotewotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSArICdcbicpKTsKLX0KLQotdmFy
IHByZWZsaWdodExpbmtEb21haW4gPSAibG9jYWxob3N0IjsKLXZhciBjb250ZXh0SG9zdCA9ICIx
MjcuMC4wLjEiOwotdmFyIHVybCA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAveG1saHR0cHJlcXVl
c3QvcmVzb3VyY2VzL3N0YXR1cy00MDQtd2l0aG91dC1ib2R5LnB5IgotCi1mdW5jdGlvbiBydW5U
ZXN0KCkKLXsKLSAgICB2YXIgcmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Ci0gICAgcmVxLm9w
ZW4oIkdFVCIsIHVybCwgZmFsc2UpOwotICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyKCJ4LXdlYmtp
dCIsICJmb28iKTsKLQotICAgIHRyeSB7Ci0gICAgICAgIHJlcS5zZW5kKG51bGwpOwotICAgICAg
ICBsb2coIlBBU1M6ICIgKyByZXEucmVzcG9uc2VUZXh0KTsKLSAgICB9IGNhdGNoIChleCkgewot
ICAgICAgICBsb2coIlBBU1M6ICIgKyBleCk7Ci0gICAgICAgIHZhciBkaWRMb2FkQXBwQm91bmRS
ZXF1ZXN0ID0gdGVzdFJ1bm5lci5kaWRMb2FkQXBwQm91bmRSZXF1ZXN0KCk7Ci0gICAgICAgIHZh
ciBkaWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0ID0gdGVzdFJ1bm5lci5kaWRMb2FkTm9uQXBwQm91
bmRSZXF1ZXN0KCk7Ci0KLSAgICAgICAgaWYgKGRpZExvYWROb25BcHBCb3VuZFJlcXVlc3QpIHsK
LSAgICAgICAgICAgIGxvZygiRkFJTCBkaWQgbG9hZCBub24gYXBwLWJvdW5kIHJlcXVlc3QiKTsK
LSAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKCFkaWRMb2FkQXBwQm91bmRSZXF1ZXN0KSB7Ci0gICAgICAgICAgICBsb2coIkZBSUwg
ZGlkIG5vdCBsb2FkIGFwcC1ib3VuZCByZXF1ZXN0Iik7Ci0gICAgICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGxvZygiUEFTUyBzdWNjZXNzZnVs
bHkgbG9hZGVkIG9ubHkgYXBwLWJvdW5kIHJlcXVlc3RzIik7Ci0gICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOwotICAgIH0KLX0KLQotcnVuVGVzdCgpOwotPC9zY3JpcHQ+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJv
dW5kLWF0dHJpYnV0aW9uLXNwZWN1bGF0aXZlLXJldmFsaWRhdGlvbi1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0
dHJpYnV0aW9uLXNwZWN1bGF0aXZlLXJldmFsaWRhdGlvbi1leHBlY3RlZC50eHQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyYjRkNGE1MTJhYmNlYzVkYmI4ZWE5YjY5NDY4M2U4M2Fm
MmJkNmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRy
aWJ1dGlvbi1zcGVjdWxhdGl2ZS1yZXZhbGlkYXRpb24tZXhwZWN0ZWQudHh0CisrKyAvZGV2L251
bGwKQEAgLTEsMTQgKzAsMCBAQAotMTI3LjAuMC4xOjgwMDAgLSBkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UgLSBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZUhUVFBC
YXNpYyAtIFJlc3BvbmRpbmcgd2l0aCB0ZXN0VXNlcm5hbWU6dGVzdFBhc3N3b3JkCi0xMjcuMC4w
LjE6ODAwMCAtIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAtIFByb3RlY3Rpb25T
cGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lSFRUUEJhc2ljIC0gU2ltdWxhdGluZyBjYW5jZWxsZWQg
YXV0aGVudGljYXRpb24gc2hlZXQKLVRlc3RzIHNwZWN1bGF0aXZlIHJldmFsaWRhdGlvbiBvZiBh
dXRoZW50aWNhdGVkIHJlc291cmNlcy4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0K
LVBBU1MgeGhyLnN0YXR1cyBpcyA0MDEKLVBBU1MgU3VjY2Vzc2Z1bHkgbG9hZGVkLgotUEFTUyBz
dWNjZXNzZnVsbHkgbG9hZGVkIG9ubHkgYXBwLWJvdW5kIHJlcXVlc3RzCi1QQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1
dGlvbi1zcGVjdWxhdGl2ZS1yZXZhbGlkYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tc3BlY3VsYXRp
dmUtcmV2YWxpZGF0aW9uLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjMDc2
YjVlZTZlY2Y0NDQwYmNiZjYwODEwYjlmNDcxNzE4YzE2YWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAt
YnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1zcGVjdWxhdGl2ZS1yZXZhbGlk
YXRpb24uaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLTxzY3JpcHQgc3JjPSIv
anMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPHNjcmlwdD4KLWRl
c2NyaXB0aW9uKCJUZXN0cyBzcGVjdWxhdGl2ZSByZXZhbGlkYXRpb24gb2YgYXV0aGVudGljYXRl
ZCByZXNvdXJjZXMuIik7Ci1qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLQotdGVzdFJ1bm5lci5zZXRI
YW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzKHRydWUpOwotdGVzdFJ1bm5lci5zZXRBdXRo
ZW50aWNhdGlvblVzZXJuYW1lKCJ0ZXN0VXNlcm5hbWUiKTsKLXRlc3RSdW5uZXIuc2V0QXV0aGVu
dGljYXRpb25QYXNzd29yZCgidGVzdFBhc3N3b3JkIik7Ci0KLXN0YXRlID0gIndhcm11cCI7Ci0K
LWZ1bmN0aW9uIGNsZWFyQ3JlZGVudGlhbFN0b3JhZ2UoKQotewotICAgIHhociA9IG5ldyBYTUxI
dHRwUmVxdWVzdCgpOwotICAgIHhoci5vcGVuKCJHRVQiLCAicmVzb3VyY2VzL3Jlc291cmNlLXdp
dGgtYXV0aC5weT9vdGhlciIsIGZhbHNlLCAiYmFkVXNlcm5hbWUiLCAiYmFkUGFzc3dvcmQiKTsK
LSAgICB4aHIuc2VuZCgpOwotICAgIHNob3VsZEJlKCJ4aHIuc3RhdHVzIiwgIjQwMSIpOwotfQot
Ci1mdW5jdGlvbiBsb2cobWVzc2FnZSkKLXsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
Y29uc29sZScpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UgKyAn
XG4nKSk7Ci19Ci0KLWZ1bmN0aW9uIGZyYW1lTG9hZGVkKCkKLXsKLSAgICBpZiAoc3RhdGUgPT0g
Indhcm11cCIpIHsKLSAgICAgICAgLy8gTmF2aWdhdGUgZnJhbWUgdG8gJ2Fib3V0OmJsYW5rJyB0
byBmbHVzaCB0byBzdWJyZXNvdXJjZSBsb2FkcyBtZXRhZGF0YSB0byBkaXNrLgotICAgICAgICBz
dGF0ZSA9ICJmbHVzaGluZ01ldGFkYXRhIjsKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRIYW5kbGVz
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VzKGZhbHNlKTsKLSAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInRlc3RGcmFtZSIpLnNyYyA9ICJhYm91dDpibGFuayI7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgaWYgKHN0YXRlID09ICJmbHVzaGluZ01ldGFkYXRhIikgewotICAgICAg
ICBjbGVhckNyZWRlbnRpYWxTdG9yYWdlKCk7Ci0KLSAgICAgICAgaW50ZXJuYWxzLmNsZWFyTWVt
b3J5Q2FjaGUoKTsKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRIYW5kbGVzQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VzKGZhbHNlKTsKLQotICAgICAgICAvLyBOYXZpZ2F0ZSBmcmFtZSB0byBpdHMgb3Jp
Z2luYWwgbG9jYXRpb24gYWdhaW4uIFRoaXMgdGltZSBpdCBzaG91bGQgc3BlY3VsYXRpdmVseQot
ICAgICAgICAvLyB2YWxpZGF0ZSBzdWJyZXNvdXJjZXMgYXMgd2UgaGF2ZSBzdWJyZXNvdXJjZSBs
b2FkcyBtZXRhZGF0YSBpbiB0aGUgZGlzayBjYWNoZS4KLSAgICAgICAgc3RhdGUgPSAic3BlY3Vs
YXRpdmVSZXZhbGlkYXRpb24iOwotICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVz
dEZyYW1lIikuc3JjID0gInJlc291cmNlcy9mcmFtZS13aXRoLWF1dGhlbnRpY2F0ZWQtcmVzb3Vy
Y2UucHkiOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChzdGF0ZSA9PSAic3BlY3Vs
YXRpdmVSZXZhbGlkYXRpb24iKSB7Ci0gICAgICAgIHRlc3RQYXNzZWQoIlN1Y2Nlc3NmdWx5IGxv
YWRlZC4iKTsKLSAgICAgICAgdmFyIGRpZExvYWRBcHBCb3VuZFJlcXVlc3QgPSB0ZXN0UnVubmVy
LmRpZExvYWRBcHBCb3VuZFJlcXVlc3QoKTsKLSAgICAgICAgdmFyIGRpZExvYWROb25BcHBCb3Vu
ZFJlcXVlc3QgPSB0ZXN0UnVubmVyLmRpZExvYWROb25BcHBCb3VuZFJlcXVlc3QoKTsKLQotICAg
ICAgICBpZiAoZGlkTG9hZE5vbkFwcEJvdW5kUmVxdWVzdCkgewotICAgICAgICAgICAgbG9nKCJG
QUlMIGRpZCBsb2FkIG5vbiBhcHAtYm91bmQgcmVxdWVzdCIpOwotICAgICAgICAgICAgZmluaXNo
SlNUZXN0KCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAo
IWRpZExvYWRBcHBCb3VuZFJlcXVlc3QpIHsKLSAgICAgICAgICAgIGxvZygiRkFJTCBkaWQgbm90
IGxvYWQgYXBwLWJvdW5kIHJlcXVlc3QiKTsKLSAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgbG9nKCJQQVNTIHN1Y2Nl
c3NmdWxseSBsb2FkZWQgb25seSBhcHAtYm91bmQgcmVxdWVzdHMiKTsKLQotICAgICAgICBmaW5p
c2hKU1Rlc3QoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQotPC9zY3JpcHQ+Ci08aWZy
YW1lIGlkPSJ0ZXN0RnJhbWUiIHNyYz0icmVzb3VyY2VzL2ZyYW1lLXdpdGgtYXV0aGVudGljYXRl
ZC1yZXNvdXJjZS5weSIgb25sb2FkPSJmcmFtZUxvYWRlZCgpIj48L2lmcmFtZT4KLTxzY3JpcHQg
c3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9jb250
ZXh0LXN0cmluZy1mb3Itc3ViZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2NvbnRleHQtc3RyaW5nLWZvci1zdWJmcmFtZS1l
eHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhMzY4ZjY2YjU0ZTE3
Mzk5MTcyZmFjMzczNzc2Njc3Yjc3NDZiZWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1w
cml2YWN5L2NvbnRleHQtc3RyaW5nLWZvci1zdWJmcmFtZS1leHBlY3RlZC50eHQKKysrIC9kZXYv
bnVsbApAQCAtMSwxMCArMCwwIEBACi1UZXN0cyB0aGF0IHRoZSBhcHAtYm91bmQtcmVxdWVzdCBj
b250ZXh0IHN0cmluZyBnZXRzIHByb3Blcmx5IHNldCBmb3IgYW4gaWZyYW1lCi0KLU9uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KLQotCi1QQVNTIENvbnRleHQgc3RyaW5nIGZvciBzdWIgZnJhbWUg
Y29ycmVjdGx5IGNhcHR1cmVkLgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1U
RVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBw
LWJyb3dzZXItcHJpdmFjeS9jb250ZXh0LXN0cmluZy1mb3Itc3ViZnJhbWUuaHRtbCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9jb250ZXh0LXN0cmluZy1m
b3Itc3ViZnJhbWUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWUzZTliNmIw
YjU1Mjk2MmFiZGZmNjRlNzIxMDJiYjIyMjg2ZThkMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93
c2VyLXByaXZhY3kvY29udGV4dC1zdHJpbmctZm9yLXN1YmZyYW1lLmh0bWwKKysrIC9kZXYvbnVs
bApAQCAtMSw0MiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci0gICAg
PHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KLSAg
ICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgotPC9oZWFkPgot
PGJvZHk+Ci08c2NyaXB0PgotICAgIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHRoZSBhcHAtYm91
bmQtcmVxdWVzdCBjb250ZXh0IHN0cmluZyBnZXRzIHByb3Blcmx5IHNldCBmb3IgYW4gaWZyYW1l
Iik7Ci0gICAganNUZXN0SXNBc3luYyA9IHRydWU7Ci0KLSAgICBjb25zdCBzdWJGcmFtZUhvc3Qg
PSAibG9jYWxob3N0IjsKLSAgICBjb25zdCBjb250ZXh0SG9zdCA9ICIxMjcuMC4wLjEiOwotICAg
IGZ1bmN0aW9uIGFza0ZvckNvbnRleHRTdHJpbmdGb3JTdWJGcmFtZSgpIHsKLSAgICAgICAgdGVz
dFJ1bm5lci5hcHBCb3VuZFJlcXVlc3RDb250ZXh0RGF0YUZvckRvbWFpbihzdWJGcmFtZUhvc3Qs
IGZ1bmN0aW9uIChjb250ZXh0RGF0YSkgewotICAgICAgICAgICAgaWYgKGNvbnRleHREYXRhID09
IG51bGwpIHsKLSAgICAgICAgICAgICAgICBhc2tGb3JDb250ZXh0U3RyaW5nRm9yU3ViRnJhbWUo
KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IGlmIChjb250ZXh0RGF0YSA9PSBjb250ZXh0SG9zdCkKLSAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJDb250ZXh0IHN0cmluZyBmb3Igc3ViIGZyYW1lIGNvcnJlY3RseSBjYXB0dXJlZC4iKTsK
LSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJDb250ZXh0IHN0
cmluZyBmb3Igc3ViIGZyYW1lIE5PVCBjb3JyZWN0bHkgY2FwdHVyZWQuIik7Ci0KLSAgICAgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBv
cGVuSWZyYW1lKHVybCwgb25Mb2FkSGFuZGxlcikgewotICAgICAgICBjb25zdCBlbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7Ci0gICAgICAgIGVsZW1lbnQuc3JjID0g
dXJsOwotICAgICAgICBpZiAob25Mb2FkSGFuZGxlcikgewotICAgICAgICAgICAgZWxlbWVudC5v
bmxvYWQgPSBvbkxvYWRIYW5kbGVyOwotICAgICAgICB9Ci0gICAgICAgIGRvY3VtZW50LmJvZHku
YXBwZW5kQ2hpbGQoZWxlbWVudCk7Ci0gICAgfQotCi0gICAgb3BlbklmcmFtZSgiaHR0cDovL2xv
Y2FsaG9zdDo4MDAwL2luLWFwcC1icm93c2VyLXByaXZhY3kvcmVzb3VyY2VzL2Jhc2ljLWlmcmFt
ZS5odG1sJmR1bW15PSIgKyBNYXRoLnJhbmRvbSgpLCBhc2tGb3JDb250ZXh0U3RyaW5nRm9yU3Vi
RnJhbWUpOwotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvY29udGV4dC1zdHJpbmctcHJl
Y29ubmVjdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93
c2VyLXByaXZhY3kvY29udGV4dC1zdHJpbmctcHJlY29ubmVjdC1leHBlY3RlZC50eHQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiNGI1NmZhMDFmZjA2MDNmZjY5OTE3YzM4MGRjMDY5
YjkzMDZkYzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2NvbnRleHQtc3Ry
aW5nLXByZWNvbm5lY3QtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBA
QAotQ09OU09MRSBNRVNTQUdFOiBTdWNjZXNzZnVsbHkgcHJlY29ubmVjdGVkIHRvIGh0dHA6Ly9s
b2NhbGhvc3Q6ODAwMC8KLVRlc3RzIHRoYXQgcHJlY29ubmVjdCB0YXNrcyBnZXQgbWFya2VkIHdp
dGggdGhlIHByb3BlciBjb250ZXh0IHN0cmluZy4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgotCi0KLVBBU1MgQ29udGV4dCBzdHJpbmcgZm9yIHByZWNvbm5lY3QgY29ycmVjdGx5IGNhcHR1
cmVkLgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFj
eS9jb250ZXh0LXN0cmluZy1wcmVjb25uZWN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luLWFwcC1icm93c2VyLXByaXZhY3kvY29udGV4dC1zdHJpbmctcHJlY29ubmVjdC5odG1sCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MWJiYzMyYmYxYzg3MmU0Y2ZlZjNmZmE1NjZm
OTRjMTg1NzIwMjZkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9jb250ZXh0
LXN0cmluZy1wcmVjb25uZWN0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVz
b3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0Pgot
ZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgcHJlY29ubmVjdCB0YXNrcyBnZXQgbWFya2VkIHdpdGgg
dGhlIHByb3BlciBjb250ZXh0IHN0cmluZy4iKTsKLWpzVGVzdElzQXN5bmMgPSB0cnVlOwotCi12
YXIgcHJlY29ubmVjdExpbmtEb21haW4gPSAibG9jYWxob3N0IjsKLXZhciBjb250ZXh0SG9zdCA9
ICIxMjcuMC4wLjEiOwotCi1mdW5jdGlvbiBhc2tGb3JDb250ZXh0U3RyaW5nRm9yUHJlY29ubmVj
dCgpIHsKLSAgICB0ZXN0UnVubmVyLmFwcEJvdW5kUmVxdWVzdENvbnRleHREYXRhRm9yRG9tYWlu
KHByZWNvbm5lY3RMaW5rRG9tYWluLCBmdW5jdGlvbiAoY29udGV4dERhdGEpIHsKLSAgICAgICAg
aWYgKGNvbnRleHREYXRhID09IG51bGwpIHsKLSAgICAgICAgICAgIGFza0ZvckNvbnRleHRTdHJp
bmdGb3JQcmVjb25uZWN0KCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAg
ICAgICBpZiAoY29udGV4dERhdGEgPT0gY29udGV4dEhvc3QpCi0gICAgICAgICAgICB0ZXN0UGFz
c2VkKCJDb250ZXh0IHN0cmluZyBmb3IgcHJlY29ubmVjdCBjb3JyZWN0bHkgY2FwdHVyZWQuIik7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRlc3RGYWlsZWQoIkNvbnRleHQgc3RyaW5nIGZv
ciBwcmVjb25uZWN0IE5PVCBjb3JyZWN0bHkgY2FwdHVyZWQuIik7Ci0KLSAgICAgICAgZmluaXNo
SlNUZXN0KCk7Ci0gICAgfSk7Ci19Ci0KLWludGVybmFscy5zZXRDb25zb2xlTWVzc2FnZUxpc3Rl
bmVyKGZ1bmN0aW9uKCkgewotICAgIGFza0ZvckNvbnRleHRTdHJpbmdGb3JQcmVjb25uZWN0KCk7
Ci19KTsKLQotY29uc3QgdGVzdExpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaW5rIik7
Ci10ZXN0TGluay5yZWwgPSAicHJlY29ubmVjdCI7Ci10ZXN0TGluay5ocmVmID0gImh0dHA6Ly9s
b2NhbGhvc3Q6ODAwMCI7Ci1kb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHRlc3RMaW5rKTsKLTwv
c2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2NvbnRleHQtc3RyaW5nLXByZWZsaWdodC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kv
Y29udGV4dC1zdHJpbmctcHJlZmxpZ2h0LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYTA3OTYxNTBhOTZiOGIxZDcwN2VmYTdlNDAzMmU0NWVkNzAzYzk1Zi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvY29udGV4dC1zdHJpbmctcHJlZmxpZ2h0
LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotQ09OU09MRSBNRVNT
QUdFOiBQcmVmbGlnaHQgcmVzcG9uc2UgaXMgbm90IHN1Y2Nlc3NmdWwKLUNPTlNPTEUgTUVTU0FH
RTogWE1MSHR0cFJlcXVlc3QgY2Fubm90IGxvYWQgaHR0cDovL2xvY2FsaG9zdDo4MDAwL3htbGh0
dHByZXF1ZXN0L3Jlc291cmNlcy9zdGF0dXMtNDA0LXdpdGhvdXQtYm9keS5weSBkdWUgdG8gYWNj
ZXNzIGNvbnRyb2wgY2hlY2tzLgotQ09OU09MRSBNRVNTQUdFOiBQcmVmbGlnaHQgcmVzcG9uc2Ug
aXMgbm90IHN1Y2Nlc3NmdWwKLUNPTlNPTEUgTUVTU0FHRTogWE1MSHR0cFJlcXVlc3QgY2Fubm90
IGxvYWQgaHR0cDovL2xvY2FsaG9zdDo4MDAwL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9zdGF0
dXMtNDA0LXdpdGhvdXQtYm9keS5weSBkdWUgdG8gYWNjZXNzIGNvbnRyb2wgY2hlY2tzLgotVGVz
dHMgdGhhdCBub3Qgc3VjY2Vzc2Z1bCBwcmVmbGlnaHQgcmVzcG9uc2VzIG1ha2UgcHJlZmxpZ2h0
IGZhaWxpbmcKLQotUEFTUzogTmV0d29ya0Vycm9yOiAgQSBuZXR3b3JrIGVycm9yIG9jY3VycmVk
LgotUEFTUyBDb250ZXh0IHN0cmluZyBmb3IgQ09SUyBwcmVmbGlnaHQgY29ycmVjdGx5IGNhcHR1
cmVkLgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2Vy
LXByaXZhY3kvY29udGV4dC1zdHJpbmctcHJlZmxpZ2h0Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvY29udGV4dC1zdHJpbmctcHJlZmxpZ2h0Lmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3YTA1ZDE0NzU5Yzk0MWY4ZDMzZmY3
NTAzYjhkNzAwYTkwNGYwYzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2Nv
bnRleHQtc3RyaW5nLXByZWZsaWdodC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBA
QAotPHA+VGVzdHMgdGhhdCBub3Qgc3VjY2Vzc2Z1bCBwcmVmbGlnaHQgcmVzcG9uc2VzIG1ha2Ug
cHJlZmxpZ2h0IGZhaWxpbmc8L3A+Ci0KLTxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgotPHNjcmlw
dD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OwotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotfQotCi1mdW5jdGlvbiBsb2cobWVz
c2FnZSkKLXsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UgKyAnXG4nKSk7Ci19Ci0gICAgCi12
YXIgcHJlZmxpZ2h0TGlua0RvbWFpbiA9ICJsb2NhbGhvc3QiOwotdmFyIGNvbnRleHRIb3N0ID0g
IjEyNy4wLjAuMSI7Ci12YXIgdXJsID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC94bWxodHRwcmVx
dWVzdC9yZXNvdXJjZXMvc3RhdHVzLTQwNC13aXRob3V0LWJvZHkucHkiCi0KLWZ1bmN0aW9uIGFz
a0ZvckNvbnRleHRTdHJpbmdGb3JQcmVmbGlnaHQoKSB7Ci0gICAgdGVzdFJ1bm5lci5hcHBCb3Vu
ZFJlcXVlc3RDb250ZXh0RGF0YUZvckRvbWFpbihwcmVmbGlnaHRMaW5rRG9tYWluLCBmdW5jdGlv
biAoY29udGV4dERhdGEpIHsKLSAgICAgICAgaWYgKGNvbnRleHREYXRhID09IG51bGwpIHsKLSAg
ICAgICAgICAgIGFza0ZvckNvbnRleHRTdHJpbmdGb3JQcmVmbGlnaHQoKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChjb250ZXh0RGF0YSA9PSBjb250ZXh0
SG9zdCkKLSAgICAgICAgICAgIGxvZygiUEFTUyBDb250ZXh0IHN0cmluZyBmb3IgQ09SUyBwcmVm
bGlnaHQgY29ycmVjdGx5IGNhcHR1cmVkLiIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBs
b2coIkZBSUwgQ29udGV4dCBzdHJpbmcgZm9yIENPUlMgcHJlZmxpZ2h0IE5PVCBjb3JyZWN0bHkg
Y2FwdHVyZWQuIik7Ci0KLSAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfSk7
Ci19Ci0KLWZ1bmN0aW9uIHJ1blRlc3QoKQotewotICAgIHZhciByZXEgPSBuZXcgWE1MSHR0cFJl
cXVlc3QoKTsKLSAgICByZXEub3BlbigiR0VUIiwgdXJsLCBmYWxzZSk7Ci0gICAgcmVxLnNldFJl
cXVlc3RIZWFkZXIoIngtd2Via2l0IiwgImZvbyIpOwotCi0gICAgdHJ5IHsKLSAgICAgICAgcmVx
LnNlbmQobnVsbCk7Ci0gICAgICAgIGxvZygiUEFTUzogIiArIHJlcS5yZXNwb25zZVRleHQpOwot
ICAgIH0gY2F0Y2ggKGV4KSB7Ci0gICAgICAgIGxvZygiUEFTUzogIiArIGV4KTsKLSAgICB9Ci0K
LSAgICByZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKLSAgICByZXEub3BlbigiR0VUIiwgdXJs
LCB0cnVlKTsKLSAgICByZXEuc2V0UmVxdWVzdEhlYWRlcigieC13ZWJraXQiLCAiZm9vIik7Ci0K
LSAgICByZXEub25sb2FkID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGFza0ZvckNvbnRleHRTdHJp
bmdGb3JQcmVmbGlnaHQoKTsKLSAgICB9Ci0gICAgcmVxLm9uZXJyb3IgPSBmdW5jdGlvbigpIHsK
LSAgICAgICAgYXNrRm9yQ29udGV4dFN0cmluZ0ZvclByZWZsaWdodCgpOwotICAgIH0KLSAgICBy
ZXEuc2VuZChudWxsKTsKLX0KLQotcnVuVGVzdCgpOwotPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvcmVzb3VyY2VzL2Zy
YW1lLXdpdGgtYXV0aGVudGljYXRlZC1yZXNvdXJjZS5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9yZXNvdXJjZXMvZnJhbWUtd2l0aC1hdXRoZW50aWNh
dGVkLXJlc291cmNlLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA4NDhkMGZkMWE2
ZDZjMDk5YWFkNjFlMDA0MjQyZTIzODk1NTNlOTQxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dz
ZXItcHJpdmFjeS9yZXNvdXJjZXMvZnJhbWUtd2l0aC1hdXRoZW50aWNhdGVkLXJlc291cmNlLnB5
CisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwot
Ci1pbXBvcnQgc3lzCi0KLXN5cy5zdGRvdXQud3JpdGUoCi0gICAgJ0NhY2hlLUNvbnRyb2w6IG1h
eC1hZ2U9MFxyXG4nCi0gICAgJ0V0YWc6IDEyMzQ1Njc4OVxyXG4nCi0gICAgJ0NvbnRlbnQtVHlw
ZTogdGV4dC9odG1sXHJcblxyXG4nCi0gICAgJzwhRE9DVFlQRSBodG1sPlxuJwotICAgICc8Ym9k
eT5cbicKLSAgICAnPHNjcmlwdCBzcmM9InJlc291cmNlLXdpdGgtYXV0aC5weSI+PC9zY3JpcHQ+
XG4nCi0gICAgJzwvYm9keT5cbicKLSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9yZXNvdXJjZXMvcG9zdC5weSBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9yZXNvdXJjZXMvcG9zdC5weQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMWZjYmMzYTJmYjMyMzExNzJkYjliNTliZWNlNjVj
MDhjNzJkZDVhNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvcmVzb3VyY2Vz
L3Bvc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi0jIS91c3IvYmluL2VudiBw
eXRob24zCi0KLWltcG9ydCBvcwotaW1wb3J0IHN5cwotCi1yZWZlcmVyID0gb3MuZW52aXJvbi5n
ZXQoJ0hUVFBfUkVGRVJFUicsICcnKQotCi1zeXMuc3Rkb3V0LndyaXRlKAotICAgICdDb250ZW50
LVR5cGU6IHRleHQvaHRtbFxyXG5cclxuJwotICAgICc8cD5SZWZlcnJlcjoge3JlZmVyZXJ9PC9w
PlxuJwotICAgICc8c2NyaXB0PlxuJwotICAgICdpZiAod2luZG93LnRlc3RSdW5uZXIpIHt7XG4n
Ci0gICAgJyAgICB2YXIgZGlkTG9hZEFwcEJvdW5kUmVxdWVzdCA9IHRlc3RSdW5uZXIuZGlkTG9h
ZEFwcEJvdW5kUmVxdWVzdCgpO1xuJwotICAgICcgICAgdmFyIGRpZExvYWROb25BcHBCb3VuZFJl
cXVlc3QgPSB0ZXN0UnVubmVyLmRpZExvYWROb25BcHBCb3VuZFJlcXVlc3QoKTtcbicKLSAgICAn
ICAgIGlmIChkaWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0KSB7e1xuJwotICAgICcgICAgICAgIGNv
bnNvbGUubG9nKCJGQUlMIGRpZCBsb2FkIG5vbiBhcHAtYm91bmQgcmVxdWVzdCIpO1xuJwotICAg
ICcgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpO1xuJwotICAgICcgICAgfX1cbicKLSAg
ICAnICAgIGlmICghZGlkTG9hZEFwcEJvdW5kUmVxdWVzdCkge3tcbicKLSAgICAnICAgICAgICAg
Y29uc29sZS5sb2coIkZBSUwgZGlkIG5vdCBsb2FkIGFwcC1ib3VuZCByZXF1ZXN0Iik7XG4nCi0g
ICAgJyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7XG4nCi0gICAgJyAgICAgfX1cbicK
LSAgICAnICAgIGNvbnNvbGUubG9nKCJQQVNTIHN1Y2Nlc3NmdWxseSBsb2FkZWQgb25seSBhcHAt
Ym91bmQgcmVxdWVzdHMiKTtcbicKLSAgICAnICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpO1xu
JwotICAgICd9fVxuJwotICAgICc8L3NjcmlwdD5cbicuZm9ybWF0KHJlZmVyZXI9cmVmZXJlcikK
LSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJp
dmFjeS9yZXNvdXJjZXMvcmVzb3VyY2Utd2l0aC1hdXRoLnB5IGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L3Jlc291cmNlcy9yZXNvdXJjZS13aXRoLWF1dGgu
cHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDdhZmI3OGQ4MWM2ZjNjOWRhNDc5ZDI4
YmUyNDZhZTE1YmNkMDRkZGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L3Jl
c291cmNlcy9yZXNvdXJjZS13aXRoLWF1dGgucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCww
IEBACi0jIS91c3IvYmluL2VudiBweXRob24zCi0KLWltcG9ydCBiYXNlNjQKLWltcG9ydCBvcwot
aW1wb3J0IHN5cwotCi1jcmVkZW50aWFscyA9IGJhc2U2NC5iNjRkZWNvZGUob3MuZW52aXJvbi5n
ZXQoJ0hUVFBfQVVUSE9SSVpBVElPTicsICcgT2c9PScpLnNwbGl0KCcgJylbMV0pLmRlY29kZSgp
LnNwbGl0KCc6JykKLXVzZXJuYW1lID0gY3JlZGVudGlhbHNbMF0KLXBhc3N3b3JkID0gJzonLmpv
aW4oY3JlZGVudGlhbHNbMTpdKQotCi1leHBlY3RlZFVzZXJuYW1lID0gJ3Rlc3RVc2VybmFtZScK
LWV4cGVjdGVkUGFzc3dvcmQgPSAndGVzdFBhc3N3b3JkJwotcmVhbG0gPSBvcy5lbnZpcm9uLmdl
dCgnUkVRVUVTVF9VUkknLCAnJykKLQotc3lzLnN0ZG91dC53cml0ZSgKLSAgICAnQ29udGVudC1U
eXBlOiB0ZXh0L2phdmFzY3JpcHRcclxuJwotICAgICdDYWNoZS1Db250cm9sOiBtYXgtYWdlPTBc
clxuJwotICAgICdFdGFnOiAxMjM0NTY3ODlcclxuJwotKQotCi1pZiB1c2VybmFtZSAhPSBleHBl
Y3RlZFVzZXJuYW1lIG9yIHBhc3N3b3JkICE9IGV4cGVjdGVkUGFzc3dvcmQ6Ci0gICAgc3lzLnN0
ZG91dC53cml0ZSgKLSAgICAgICAgZidXV1ctQXV0aGVudGljYXRlOiBCYXNpYyByZWFsbT0ie3Jl
YWxtfSJcclxuJwotICAgICAgICAnc3RhdHVzOiA0MDFcclxuXHJcbicKLSAgICAgICAgZidTZW50
IHVzZXJuYW1lOnBhc3N3b3JkIG9mICh7dXNlcm5hbWV9OntwYXNzd29yZH0pIHdoaWNoIGlzIG5v
dCB3aGF0IHdhcyBleHBlY3RlZFxuJwotICAgICkKLSAgICBzeXMuZXhpdCgwKQotCi1zeXMuc3Rk
b3V0LndyaXRlKCdcclxubG9hZGVkID0gdHJ1ZTtcbicpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2NoZWNrLXBpbmctYXBwLWJvdW5kLWRh
dGEucHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2NoZWNr
LXBpbmctYXBwLWJvdW5kLWRhdGEucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDZm
ZjVkZWYzNDA1MzJmOWRmNmE4MWY4NTQxMDQwOThlOTMzZDNlZDkuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZp
Z2F0aW9uL3Jlc291cmNlcy9jaGVjay1waW5nLWFwcC1ib3VuZC1kYXRhLnB5CisrKyAvZGV2L251
bGwKQEAgLTEsNDQgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwotCi1pbXBvcnQgb3MK
LWltcG9ydCBzeXMKLWltcG9ydCB0aW1lCi1mcm9tIHBpbmdfZmlsZV9wYXRoIGltcG9ydCBwaW5n
X2ZpbGVwYXRoCi0KLXN5cy5zdGRvdXQud3JpdGUoJ0NvbnRlbnQtVHlwZTogdGV4dC9odG1sXHJc
blxyXG4nKQotCi13aGlsZSBub3Qgb3MucGF0aC5pc2ZpbGUocGluZ19maWxlcGF0aCk6Ci0gICAg
dGltZS5zbGVlcCgwLjAxKQotCi1zeXMuc3Rkb3V0LndyaXRlKAotICAgICc8aHRtbD48Ym9keT5c
bicKLSAgICAnUGluZyBzZW50IHN1Y2Nlc3NmdWxseScKLSkKLQotcGluZ19maWxlID0gb3Blbihw
aW5nX2ZpbGVwYXRoLCAncicpCi1mb3IgbGluZSBpbiBwaW5nX2ZpbGUucmVhZGxpbmVzKCk6Ci0g
ICAgc3lzLnN0ZG91dC53cml0ZSgnPGJyPnt9Jy5mb3JtYXQobGluZS5zdHJpcCgpKSkKLQotcGlu
Z19maWxlLmNsb3NlKCkKLWlmIG9zLnBhdGguaXNmaWxlKHBpbmdfZmlsZXBhdGgpOgotICAgIG9z
LnJlbW92ZShwaW5nX2ZpbGVwYXRoKQotCi1zeXMuc3Rkb3V0LndyaXRlKAotICAgICc8c2NyaXB0
PicKLSAgICAnaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7e1xuJwotICAgICcgICAgdmFyIGRpZExv
YWRBcHBCb3VuZFJlcXVlc3QgPSB0ZXN0UnVubmVyLmRpZExvYWRBcHBCb3VuZFJlcXVlc3QoKTtc
bicKLSAgICAnICAgIHZhciBkaWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0ID0gdGVzdFJ1bm5lci5k
aWRMb2FkTm9uQXBwQm91bmRSZXF1ZXN0KCk7XG4nCi0gICAgJyAgICBpZiAoZGlkTG9hZE5vbkFw
cEJvdW5kUmVxdWVzdCkge3tcbicKLSAgICAnICAgICAgICBjb25zb2xlLmxvZygiRkFJTCBkaWQg
bG9hZCBub24gYXBwLWJvdW5kIHJlcXVlc3QiKTtcbicKLSAgICAnICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTtcbicKLSAgICAnICAgIH19XG4nCi0gICAgJyAgICBpZiAoIWRpZExvYWRB
cHBCb3VuZFJlcXVlc3QpIHt7XG4nCi0gICAgJyAgICAgICAgIGNvbnNvbGUubG9nKCJGQUlMIGRp
ZCBub3QgbG9hZCBhcHAtYm91bmQgcmVxdWVzdCIpO1xuJwotICAgICcgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpO1xuJwotICAgICcgICAgIH19XG4nCi0gICAgJyAgICBjb25zb2xlLmxv
ZygiUEFTUyBzdWNjZXNzZnVsbHkgbG9hZGVkIG9ubHkgYXBwLWJvdW5kIHJlcXVlc3RzIik7XG4n
Ci0gICAgJyAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTtcbicKLSAgICAnfX1cbicKLSAgICAn
PC9zY3JpcHQ+JwotICAgICc8L2JvZHk+PC9odG1sPicKLSkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9yZXNvdXJjZXMvY2hlY2stcGluZy1hcHAtaW5pdGlh
dGVkLWRhdGEucHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2Vz
L2NoZWNrLXBpbmctYXBwLWluaXRpYXRlZC1kYXRhLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwZjNkMmYxNzE5
Mjg0NzdlNGIxODg4MDMyMDNlYjBlZjdlYjQ1NTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcmVzb3VyY2VzL2NoZWNrLXBpbmctYXBwLWluaXRp
YXRlZC1kYXRhLnB5CkBAIC0wLDAgKzEsNDQgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKwor
aW1wb3J0IG9zCitpbXBvcnQgc3lzCitpbXBvcnQgdGltZQorZnJvbSBwaW5nX2ZpbGVfcGF0aCBp
bXBvcnQgcGluZ19maWxlcGF0aAorCitzeXMuc3Rkb3V0LndyaXRlKCdDb250ZW50LVR5cGU6IHRl
eHQvaHRtbFxyXG5cclxuJykKKword2hpbGUgbm90IG9zLnBhdGguaXNmaWxlKHBpbmdfZmlsZXBh
dGgpOgorICAgIHRpbWUuc2xlZXAoMC4wMSkKKworc3lzLnN0ZG91dC53cml0ZSgKKyAgICAnPGh0
bWw+PGJvZHk+XG4nCisgICAgJ1Bpbmcgc2VudCBzdWNjZXNzZnVsbHknCispCisKK3BpbmdfZmls
ZSA9IG9wZW4ocGluZ19maWxlcGF0aCwgJ3InKQorZm9yIGxpbmUgaW4gcGluZ19maWxlLnJlYWRs
aW5lcygpOgorICAgIHN5cy5zdGRvdXQud3JpdGUoJzxicj57fScuZm9ybWF0KGxpbmUuc3RyaXAo
KSkpCisKK3BpbmdfZmlsZS5jbG9zZSgpCitpZiBvcy5wYXRoLmlzZmlsZShwaW5nX2ZpbGVwYXRo
KToKKyAgICBvcy5yZW1vdmUocGluZ19maWxlcGF0aCkKKworc3lzLnN0ZG91dC53cml0ZSgKKyAg
ICAnPHNjcmlwdD4nCisgICAgJ2lmICh3aW5kb3cudGVzdFJ1bm5lcikge3tcbicKKyAgICAnICAg
IHZhciBkaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdCA9IHRlc3RSdW5uZXIuZGlkTG9hZEFwcElu
aXRpYXRlZFJlcXVlc3QoKTtcbicKKyAgICAnICAgIHZhciBkaWRMb2FkTm9uQXBwSW5pdGlhdGVk
UmVxdWVzdCA9IHRlc3RSdW5uZXIuZGlkTG9hZE5vbkFwcEluaXRpYXRlZFJlcXVlc3QoKTtcbicK
KyAgICAnICAgIGlmIChkaWRMb2FkTm9uQXBwSW5pdGlhdGVkUmVxdWVzdCkge3tcbicKKyAgICAn
ICAgICAgICBjb25zb2xlLmxvZygiRkFJTCBkaWQgbG9hZCBub24gYXBwIGluaXRpYXRlZCByZXF1
ZXN0Iik7XG4nCisgICAgJyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7XG4nCisgICAg
JyAgICB9fVxuJworICAgICcgICAgaWYgKCFkaWRMb2FkQXBwSW5pdGlhdGVkUmVxdWVzdCkge3tc
bicKKyAgICAnICAgICAgICAgY29uc29sZS5sb2coIkZBSUwgZGlkIG5vdCBsb2FkIGFwcCBpbml0
aWF0ZWQgcmVxdWVzdCIpO1xuJworICAgICcgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
O1xuJworICAgICcgICAgIH19XG4nCisgICAgJyAgICBjb25zb2xlLmxvZygiUEFTUyBzdWNjZXNz
ZnVsbHkgbG9hZGVkIG9ubHkgYXBwIGluaXRpYXRlZCByZXF1ZXN0cyIpO1xuJworICAgICcgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7XG4nCisgICAgJ319XG4nCisgICAgJzwvc2NyaXB0PicK
KyAgICAnPC9ib2R5PjwvaHRtbD4nCispCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2sy
L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYWIyYjUzZDlkOGIyYWRiMjcwOWFhNWEyMDlmZGM2NmY3
MDhkYTQ3MS4uOTA0MGEzMGRhZTZmMzRhM2JjMTI0ODY4ODM3MGNmMGQzMjJhYTk2ZiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTgxNSwx
NyArMTgxNSw2IEBAIHdlYmtpdC5vcmcvYi8yMTQ1OTggZmFzdC9zY3JvbGxpbmcvaW9zL2F1dG9z
Y3JvbGwtaW5wdXQtd2hlbi12ZXJ5LXpvb21lZC5odG1sIFsKIAogaHR0cC90ZXN0cy9pbi1hcHAt
YnJvd3Nlci1wcml2YWN5LyBbIFBhc3MgXQogCi0jIFNvbWUgSW4tQXBwIEJyb3dzZXIgUHJpdmFj
eSB0ZXN0cyByZWx5IG9uIGZ1bmN0aW9ucyBpbiBXZWJLaXRBZGRpdGlvbnMuCi1odHRwL3Rlc3Rz
L2luLWFwcC1icm93c2VyLXByaXZhY3kvY29udGV4dC1zdHJpbmctZm9yLXN1YmZyYW1lLmh0bWwg
WyBTa2lwIF0KLWh0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9jb250ZXh0LXN0cmlu
Zy1wcmVjb25uZWN0Lmh0bWwgWyBTa2lwIF0KLWh0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJp
dmFjeS9jb250ZXh0LXN0cmluZy1wcmVmbGlnaHQuaHRtbCBbIFNraXAgXQotaHR0cC90ZXN0cy9p
bi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1hdHRyaWJ1dGlvbi1wcmVmbGlnaHQtYXN5
bmMuaHRtbCBbIFNraXAgXQotaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1i
b3VuZC1hdHRyaWJ1dGlvbi1wcmVmbGlnaHQtc3luYy5odG1sIFsgU2tpcCBdCi1odHRwL3Rlc3Rz
L2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLXNwZWN1bGF0aXZl
LXJldmFsaWRhdGlvbi5odG1sIFsgU2tpcCBdCi1odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXBy
aXZhY3kvYXBwLWJvdW5kLWF0dHJpYnV0aW9uLWxvYWQtdXJsLmh0bWwgWyBTa2lwIF0KLWh0dHAv
dGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtYXR0cmlidXRpb24tcGluZy1s
b2FkLmh0bWwgWyBTa2lwIF0KLWh0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAt
Ym91bmQtYXR0cmlidXRpb24tcG9zdC1yZXF1ZXN0Lmh0bWwgWyBTa2lwIF0KLQogd2Via2l0Lm9y
Zy9iLzE3NTE5MyBmYXN0L2ltYWdlcy9hc3luYy1pbWFnZS1ib2R5LWJhY2tncm91bmQtaW1hZ2Uu
aHRtbCBbIFBhc3MgVGltZW91dCBdCiAKIHdlYmtpdC5vcmcvYi8yMTUxMTAgWyBSZWxlYXNlIF0g
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWFuaW1hdGlvbnMvd2Via2l0
LXdyaXRpbmctbW9kZS1jcmFzaC5odG1sIFsgUGFzcyBGYWlsdXJlIF0K
</data>

          </attachment>
      

    </bug>

</bugzilla>