<?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>203017</bug_id>
          
          <creation_ts>2019-10-15 17:31:52 -0700</creation_ts>
          <short_desc>Resource Load Statistics (experimental): Block all third-party cookies on websites without prior user interaction</short_desc>
          <delta_ts>2020-01-18 18:12:45 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=203266</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=201319</see_also>
          <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="John Wilander">wilander</reporter>
          <assigned_to name="John Wilander">wilander</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1580397</commentid>
    <comment_count>0</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-10-15 17:31:52 -0700</bug_when>
    <thetext>We should block all third-party cookies on websites without prior user interaction. This enhancement will start as off by default to allow for dedicated testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580399</commentid>
    <comment_count>1</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-10-15 17:32:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/56262708&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580410</commentid>
    <comment_count>2</comment_count>
      <attachid>381046</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-10-15 18:02:18 -0700</bug_when>
    <thetext>Created attachment 381046
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580646</commentid>
    <comment_count>3</comment_count>
      <attachid>381046</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-10-16 12:57:01 -0700</bug_when>
    <thetext>Comment on attachment 381046
Patch

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

Good for the most part.

&gt; Source/WebCore/platform/network/NetworkStorageSession.cpp:144
&gt; +    m_registrableDomainsWithUserInteractionAsFirstParty.clear();
&gt; +    m_registrableDomainsWithUserInteractionAsFirstParty.add(domains.begin(), domains.end());

Would it not be more efficient to only add the newly-interacted-with domains instead of clearing and re-adding all of the interacted-with domains?

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:1761
&gt; +    SQLiteStatement statement(m_database, &quot;SELECT registrableDomain FROM ObservedDomains WHERE hadUserInteraction = 1&quot;_s);
&gt; +    if (statement.prepare() != SQLITE_OK)

Probably for a different patch:
We probably don&apos;t want to prepare statements every time we call these functions.  We could cache prepared statements

&gt; Source/WebKit/NetworkProcess/NetworkSession.cpp:117
&gt; +    m_adClickAttribution-&gt;setIsDebugModeEnabledFunction([this, weakThis = makeWeakPtr(this)] () {

This isn&apos;t a good pattern to construct an object then call a bunch of setters for callbacks.  I think it would be cleaner to have an AdClickAttributionClient interface that the NetworkSession implements, then pass it in as a constructor parameter.

&gt; Source/WebKit/Shared/WebPreferences.yaml:1771
&gt; +  humanReadableName: &quot;Block 3p Cookies On Sites Without Interaction (ITP)&quot;

I don&apos;t think &quot;3p&quot; is human readable.

&gt; Tools/WebKitTestRunner/TestInvocation.cpp:1838
&gt; +    WKPagePostMessageToInjectedBundle(TestController::singleton().mainWebView()-&gt;page(), messageName.get(), 0);

nullptr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580648</commentid>
    <comment_count>4</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-10-16 13:06:57 -0700</bug_when>
    <thetext>Thanks, Alex!

(In reply to Alex Christensen from comment #3)
&gt; Comment on attachment 381046 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=381046&amp;action=review
&gt; 
&gt; Good for the most part.
&gt; 
&gt; &gt; Source/WebCore/platform/network/NetworkStorageSession.cpp:144
&gt; &gt; +    m_registrableDomainsWithUserInteractionAsFirstParty.clear();
&gt; &gt; +    m_registrableDomainsWithUserInteractionAsFirstParty.add(domains.begin(), domains.end());
&gt; 
&gt; Would it not be more efficient to only add the newly-interacted-with domains
&gt; instead of clearing and re-adding all of the interacted-with domains?

I assume you mean to move to a set rather than a vector. IIRC, this was optimized for lookup, not changes, since these lookups happen on every request but updates happen when ITP decides to classify or there is user interaction with a new first-party.

What would be the most performant data structure for lookups?

&gt; &gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:1761
&gt; &gt; +    SQLiteStatement statement(m_database, &quot;SELECT registrableDomain FROM ObservedDomains WHERE hadUserInteraction = 1&quot;_s);
&gt; &gt; +    if (statement.prepare() != SQLITE_OK)
&gt; 
&gt; Probably for a different patch:
&gt; We probably don&apos;t want to prepare statements every time we call these
&gt; functions.  We could cache prepared statements

Got it. This was just copied from the other convenience functions.

&gt; &gt; Source/WebKit/NetworkProcess/NetworkSession.cpp:117
&gt; &gt; +    m_adClickAttribution-&gt;setIsDebugModeEnabledFunction([this, weakThis = makeWeakPtr(this)] () {
&gt; 
&gt; This isn&apos;t a good pattern to construct an object then call a bunch of
&gt; setters for callbacks.  I think it would be cleaner to have an
&gt; AdClickAttributionClient interface that the NetworkSession implements, then
&gt; pass it in as a constructor parameter.

OK. I&apos;ll just drop this change for now then since it was a cleanup attempt and not part of what the patch is to achieve.

&gt; &gt; Source/WebKit/Shared/WebPreferences.yaml:1771
&gt; &gt; +  humanReadableName: &quot;Block 3p Cookies On Sites Without Interaction (ITP)&quot;
&gt; 
&gt; I don&apos;t think &quot;3p&quot; is human readable.

OK. This was just me trying to reduce the width of the menu item.

&gt; &gt; Tools/WebKitTestRunner/TestInvocation.cpp:1838
&gt; &gt; +    WKPagePostMessageToInjectedBundle(TestController::singleton().mainWebView()-&gt;page(), messageName.get(), 0);
&gt; 
&gt; nullptr

You want me to check for a nullptr? Or use nullptr instead of 0?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580659</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-10-16 13:36:53 -0700</bug_when>
    <thetext>(In reply to John Wilander from comment #4)
&gt; Thanks, Alex!
&gt; 
&gt; (In reply to Alex Christensen from comment #3)
&gt; &gt; Comment on attachment 381046 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=381046&amp;action=review
&gt; &gt; 
&gt; &gt; Good for the most part.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/network/NetworkStorageSession.cpp:144
&gt; &gt; &gt; +    m_registrableDomainsWithUserInteractionAsFirstParty.clear();
&gt; &gt; &gt; +    m_registrableDomainsWithUserInteractionAsFirstParty.add(domains.begin(), domains.end());
&gt; &gt; 
&gt; &gt; Would it not be more efficient to only add the newly-interacted-with domains
&gt; &gt; instead of clearing and re-adding all of the interacted-with domains?
&gt; 
&gt; I assume you mean to move to a set rather than a vector. IIRC, this was
&gt; optimized for lookup, not changes, since these lookups happen on every
&gt; request but updates happen when ITP decides to classify or there is user
&gt; interaction with a new first-party.
&gt; 
&gt; What would be the most performant data structure for lookups?

What I meant was this: instead of clearing then adding the whole collection, could we just add the new entries?

Relatedly: if we have third party interaction then restart the browser, we won&apos;t have a record that that third party had interaction, right?

&gt; You want me to check for a nullptr? Or use nullptr instead of 0?
nullptr instead of 0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580660</commentid>
    <comment_count>6</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-10-16 13:40:57 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #5)
&gt; (In reply to John Wilander from comment #4)
&gt; &gt; Thanks, Alex!
&gt; &gt; 
&gt; &gt; (In reply to Alex Christensen from comment #3)
&gt; &gt; &gt; Comment on attachment 381046 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=381046&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; Good for the most part.
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/platform/network/NetworkStorageSession.cpp:144
&gt; &gt; &gt; &gt; +    m_registrableDomainsWithUserInteractionAsFirstParty.clear();
&gt; &gt; &gt; &gt; +    m_registrableDomainsWithUserInteractionAsFirstParty.add(domains.begin(), domains.end());
&gt; &gt; &gt; 
&gt; &gt; &gt; Would it not be more efficient to only add the newly-interacted-with domains
&gt; &gt; &gt; instead of clearing and re-adding all of the interacted-with domains?
&gt; &gt; 
&gt; &gt; I assume you mean to move to a set rather than a vector. IIRC, this was
&gt; &gt; optimized for lookup, not changes, since these lookups happen on every
&gt; &gt; request but updates happen when ITP decides to classify or there is user
&gt; &gt; interaction with a new first-party.
&gt; &gt; 
&gt; &gt; What would be the most performant data structure for lookups?
&gt; 
&gt; What I meant was this: instead of clearing then adding the whole collection,
&gt; could we just add the new entries?

Oh, we had that functionality before but it requires bookkeeping of what has been transferred and not. Then later we decided that it&apos;s too fragile and we should just sync the whole thing when there&apos;s an update.

&gt; Relatedly: if we have third party interaction then restart the browser, we
&gt; won&apos;t have a record that that third party had interaction, right?

Third-parties can not get user interaction in the eyes of ITP, only first-parties can. But maybe you mean a third-party resource has previously received user interaction as first-party.

Everything ITP learns, including user interaction, is persisted and thus survives a browser relaunch.

&gt; &gt; You want me to check for a nullptr? Or use nullptr instead of 0?
&gt; nullptr instead of 0

Got it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580703</commentid>
    <comment_count>7</comment_count>
      <attachid>381113</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-10-16 14:51:48 -0700</bug_when>
    <thetext>Created attachment 381113
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580717</commentid>
    <comment_count>8</comment_count>
      <attachid>381113</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-10-16 15:10:54 -0700</bug_when>
    <thetext>Comment on attachment 381113
Patch

Thanks, Alex!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580733</commentid>
    <comment_count>9</comment_count>
      <attachid>381113</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-16 15:39:05 -0700</bug_when>
    <thetext>Comment on attachment 381113
Patch

Clearing flags on attachment: 381113

Committed r251213: &lt;https://trac.webkit.org/changeset/251213&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580734</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-16 15:39:08 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381046</attachid>
            <date>2019-10-15 18:02:18 -0700</date>
            <delta_ts>2019-10-16 14:51:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203017-20191015180217.patch</filename>
            <type>text/plain</type>
            <size>73120</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjllY2MwNWEwNzdlMDM5
YTg3MDc0YzZmZmY3YWI0M2EwNzBkMmE0NS4uZTJkOTFmZTNkNzc1YjRjMGJhYTcxYTRkODM4ZmRi
MGE0OGY5ODMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE5LTEwLTE1ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQg
U3RhdGlzdGljcyAoZXhwZXJpbWVudGFsKTogQmxvY2sgYWxsIHRoaXJkLXBhcnR5IGNvb2tpZXMg
b24gd2Vic2l0ZXMgd2l0aG91dCBwcmlvciB1c2VyIGludGVyYWN0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDMwMTcKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzU2MjYyNzA4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hvdWxkQmxvY2tDb29raWVzKCkg
bm93IGNoZWNrcyBpZiB0aGUgZmlyc3QtcGFydHkgd2Vic2l0ZSBoYXMKKyAgICAgICAgcmVjZWl2
ZWQgdXNlciBpbnRlcmFjdGlvbiBhbmQgaWYgbm90LCBibG9ja3MgYWxsIHRoaXJkLXBhcnR5IGNv
b2tpZXMsIHJlZ2FyZGxlc3Mgb2YgdGhlCisgICAgICAgIHN0YXR1cyBvZiB0aG9zZSB0aGlyZC1w
YXJ0eSBkb21haW5zIChwcmV2YWxlbnQgb3Igbm90KS4KKworICAgICAgICBBIGNsZWFudXAgdGFz
ayBpcyBidW5kbGVkOgorICAgICAgICAtIFJlbW92ZSB0aGUgdHdvIG1vbnRoIG9sZCBmZWF0dXJl
IGZsYWcgZm9yIE5TVVJMU2Vzc2lvbiBzd2l0Y2hpbmcuCisKKyAgICAgICAgVGVzdHM6IGh0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy90aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmct
b24tc2l0ZXMtd2l0aG91dC11c2VyLWludGVyYWN0aW9uLWRhdGFiYXNlLmh0bWwKKyAgICAgICAg
ICAgICAgIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy90aGlyZC1wYXJ0eS1jb29r
aWUtYmxvY2tpbmctb24tc2l0ZXMtd2l0aG91dC11c2VyLWludGVyYWN0aW9uLmh0bWwKKworICAg
ICAgICAqIHBhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oOgorICAgICAgICAoV2ViQ29yZTo6
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0SXNJVFBTZXNzaW9uU3dpdGNoaW5nRW5hYmxlZCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc0lU
UFNlc3Npb25Td2l0Y2hpbmdFbmFibGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdl
L1NldHRpbmdzLnlhbWw6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFn
ZVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpo
YXNIYWRVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFydHkgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXREb21haW5zV2l0aFVzZXJJ
bnRlcmFjdGlvbkFzRmlyc3RQYXJ0eSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3
b3JrU3RvcmFnZVNlc3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6c2V0SXNUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdPblNpdGVzV2l0aG91dFVzZXJJbnRl
cmFjdGlvbkVuYWJsZWQpOgorCiAyMDE5LTEwLTE1ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFtpT1NdIENyYXNoIGluIFdlYkNvcmU6OkRPTVdpbmRvdzo6aW5j
cmVtZW50U2Nyb2xsRXZlbnRMaXN0ZW5lcnNDb3VudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1YmVjMjcwZTY5YTcx
NjkxZWI3YTllMzYyOTllZGM2NTA5OGE4MjE3Li41NjIzZDIxNDJkZGNlMDJiZTMwZjFlOGY5NDFk
MzExNDQyNDY3M2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDE5LTEwLTE1ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQg
U3RhdGlzdGljcyAoZXhwZXJpbWVudGFsKTogQmxvY2sgYWxsIHRoaXJkLXBhcnR5IGNvb2tpZXMg
b24gd2Vic2l0ZXMgd2l0aG91dCBwcmlvciB1c2VyIGludGVyYWN0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDMwMTcKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzU2MjYyNzA4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgZW5oYW5jZW1lbnQgaXMgb2ZmIGJ5IGRlZmF1bHQgYW5kIGNvbnRy
b2xsZWQgYnkgYW4gaW50ZXJuYWwgZmVhdHVyZSBmbGFnLgorCisgICAgICAgIFRoZSBmdW5jdGlv
bmFsIGNoYW5nZSBpcyBpbiBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEJs
b2NrQ29va2llcygpIHdoaWNoIGlzCisgICAgICAgIGNhbGxlZCBmcm9tOgorICAgICAgICAtIE5l
dHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2NvYSgpCisgICAgICAgIC0gTmV0
d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uCisKKyAgICAgICAg
c2hvdWxkQmxvY2tDb29raWVzKCkgbm93IGNoZWNrcyBpZiB0aGUgZmlyc3QtcGFydHkgd2Vic2l0
ZSBoYXMgcmVjZWl2ZWQgdXNlciBpbnRlcmFjdGlvbgorICAgICAgICBhbmQgaWYgbm90LCBibG9j
a3MgYWxsIHRoaXJkLXBhcnR5IGNvb2tpZXMsIHJlZ2FyZGxlc3Mgb2YgdGhlIHN0YXR1cyBvZiB0
aG9zZSB0aGlyZC1wYXJ0eQorICAgICAgICBkb21haW5zIChwcmV2YWxlbnQgb3Igbm90KS4KKwor
ICAgICAgICBUaGUgY2hhbmdlcyB0byBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZSBhbmQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlCisgICAgICAgIGFyZSBhYm91
dCBjb21tdW5pY2F0aW5nIHdoaWNoIGRvbWFpbnMgaGF2ZSByZWNlaXZlZCB1c2VyIGludGVyYWN0
aW9uIChwcmV2YWxlbnQgb3Igbm90KQorICAgICAgICB0byB0aGUgbmV0d29yayBzdG9yYWdlIHNl
c3Npb24gc28gdGhhdCBpdCBjYW4gZW5mb3JjZSB0aGUgbmV3IHJlc3RyaWN0aW9uLgorCisgICAg
ICAgIFRoZSBDIEFQSSBjaGFuZ2UgYW5kIHBpcGluZyB0aHJvdWdoIHRoZSBXZWJzaXRlRGF0YVN0
b3JlIGlzIHRlc3QgaW5mcmFzdHJ1Y3R1cmUuCisKKyAgICAgICAgVHdvIGNsZWFudXAgdGFza3Mg
YXJlIGJ1bmRsZWQ6CisgICAgICAgIC0gU3RvcCB1c2luZyBSdW50aW1lRW5hYmxlZCBGZWF0dXJl
cyBpbiBXZWJLaXQgbmV0d29yayBwcm9jZXNzIGNvZGUuCisgICAgICAgIC0gUmVtb3ZlIHRoZSB0
d28gbW9udGggb2xkIGZlYXR1cmUgZmxhZyBmb3IgTlNVUkxTZXNzaW9uIHN3aXRjaGluZy4KKwor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0FkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpBZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyOjpkZWJ1Z01vZGVFbmFi
bGVkIGNvbnN0KToKKyAgICAgICAgICAgIFJlbW92ZWQgdGhlIHVzZSBvZiBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzIGFzIGEgY2xlYW51cCBtZWFzdXJlLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L0FkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKFdlYktpdDo6QWRDbGlja0F0
dHJpYnV0aW9uTWFuYWdlcjo6c2V0SXNEZWJ1Z01vZGVFbmFibGVkRnVuY3Rpb24pOgorICAgICAg
ICAgICAgUmVtb3ZlZCB0aGUgdXNlIG9mIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMgYXMgYSBjbGVh
bnVwIG1lYXN1cmUuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvbXBs
ZXRpb25IYW5kbGVyPHZvaWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Y2xl
YXIpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6
OnVwZGF0ZUNvb2tpZUJsb2NraW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2FsbFVwZGF0ZVByZXZhbGVudERvbWFp
bnNUb0Jsb2NrQ29va2llc0ZvckhhbmRsZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgIChXZWJL
aXQ6OlJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9yOjppc29sYXRlZENvcHkgY29u
c3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRTaG91bGRCbG9ja1RoaXJkUGFydHlD
b29raWVzRm9yVGVzdGluZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmlzQWRDbGlja0F0dHJpYnV0
aW9uRGVidWdNb2RlRW5hYmxlZCBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6TmV0d29ya1Nl
c3Npb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmg6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9n
VGVzdGluZ0V2ZW50KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OnNob3VsZElz
b2xhdGVTZXNzaW9uc0ZvclByZXZhbGVudFRvcEZyYW1lcyBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFt
ZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25D
cmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ29j
b2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lv
bkNvY29hOjpOZXR3b3JrU2Vzc2lvbkNvY29hKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVy
ZW5jZXMueWFtbDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmLmNwcDoKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyk6CisgICAgICAgIChX
S1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVz
Rm9yVGVzdGluZyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0
YVN0b3JlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBhcmFt
ZXRlcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6c2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorCiAyMDE5LTEw
LTE1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgV2Vidmlldydz
IGRyYXdpbmcgYXJlYSBtYXkgc3RheSBmcm96ZW4gb24gY3Jvc3Mtc2l0ZSBiYWNrL2ZvcndhcmQg
bmF2aWdhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMu
aAppbmRleCAzYmJiYjE0OTVlNmI0MzQ3MjAxMDY4MzQ5Zjk1Yjc3NjBkNWRhMmI5Li4zZDRjNTZi
ZjQzMjQ1YzMxOTQxZjA2NGVhZTU0NTU0NmVkNDY3MmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaApAQCAtMTQ3LDkgKzE0Nyw2IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldElzSVRQRGF0YWJhc2VFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNJ
VFBEYXRhYmFzZUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KICAgICBib29sIGlzSVRQRGF0YWJhc2VF
bmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0lUUERhdGFiYXNlRW5hYmxlZDsgfQogCi0gICAg
dm9pZCBzZXRJc0lUUFNlc3Npb25Td2l0Y2hpbmdFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1f
aXNJVFBTZXNzaW9uU3dpdGNoaW5nRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQotICAgIGJvb2wgaXNJ
VFBTZXNzaW9uU3dpdGNoaW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJVFBTZXNzaW9u
U3dpdGNoaW5nRW5hYmxlZDsgfQotCiAgICAgdm9pZCBzZXRSZXN0cmljdGVkSFRUUFJlc3BvbnNl
QWNjZXNzKGJvb2wgaXNFbmFibGVkKSB7IG1faXNSZXN0cmljdGVkSFRUUFJlc3BvbnNlQWNjZXNz
ID0gaXNFbmFibGVkOyB9CiAgICAgYm9vbCByZXN0cmljdGVkSFRUUFJlc3BvbnNlQWNjZXNzKCkg
Y29uc3QgeyByZXR1cm4gbV9pc1Jlc3RyaWN0ZWRIVFRQUmVzcG9uc2VBY2Nlc3M7IH0KIApAQCAt
NDIwLDcgKzQxNyw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2FjY2Vzc2liaWxpdHlPYmplY3RN
b2RlbEVuYWJsZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9hcmlhUmVmbGVjdGlvbkVuYWJsZWQg
eyB0cnVlIH07CiAgICAgYm9vbCBtX2l0cERlYnVnTW9kZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBt
X2lzSVRQU2Vzc2lvblN3aXRjaGluZ0VuYWJsZWQgeyB0cnVlIH07CiAgICAgYm9vbCBtX2lzUmVz
dHJpY3RlZEhUVFBSZXNwb25zZUFjY2VzcyB7IHRydWUgfTsKICAgICBib29sIG1fY3Jvc3NPcmln
aW5SZXNvdXJjZVBvbGljeUVuYWJsZWQgeyB0cnVlIH07CiAgICAgYm9vbCBtX2lzV2ViR0xDb21w
cmVzc2VkVGV4dHVyZUFTVENTdXBwb3J0RW5hYmxlZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
dHRpbmdzLnlhbWwKaW5kZXggMGFlNzc0MjRjODc5NjRmNGJhZTEyMzhjMTZmMjE5Mjc4MDAwMmNk
MC4uNzQ5MmI0MDg5MTdkMGMwODc2YmNmYjk3YmNhMTZhMjliMTI5MGZhZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2V0dGluZ3MueWFtbApAQCAtODY5LDggKzg2OSw4IEBAIHdlYlJUQ0VuY3J5cHRpb25FbmFi
bGVkOgogICBpbml0aWFsOiB0cnVlCiAgIGluc3BlY3Rvck92ZXJyaWRlOiB0cnVlCiAKLWlzSVRQ
U2Vzc2lvblN3aXRjaGluZ0VuYWJsZWQ6Ci0gIGluaXRpYWw6IHRydWUKK2lzVGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nT25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb25FbmFibGVkOgorICBpbml0
aWFsOiBmYWxzZQogCiBpc0xvZ2dlZEluQVBJRW5hYmxlZDoKICAgaW5pdGlhbDogZmFsc2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmNwcAppbmRleCAzMWQ1NzVmODVlZWNjZmZjYTc5M2JmMjY2ZmM1Mzc0MDIzNDdi
YTA3Li4yYzQ1NTZhZjU5ZDUzMDAyYzljNDM2MWMxZWI0ZTg2NTZiNTc4Y2NlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uY3BwCkBAIC03OCw2ICs3OCwxNCBAQCBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
c2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0J1dEtlZXBGaXJzdFBhcnR5Q29va2llcwogICAg
IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0Zvci5jb250
YWlucyhyZWdpc3RyYWJsZURvbWFpbik7CiB9CiAKK2Jvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpoYXNIYWRVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFydHkoY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHJlZ2lzdHJhYmxlRG9tYWluKSBjb25zdAoreworICAgIGlmIChyZWdpc3RyYWJsZURvbWFp
bi5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBtX3JlZ2lz
dHJhYmxlRG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFydHkuY29udGFpbnMocmVn
aXN0cmFibGVEb21haW4pOworfQorCiBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hvdWxk
QmxvY2tDb29raWVzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgT3B0aW9uYWw8RnJh
bWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSBj
b25zdAogewogICAgIHJldHVybiBzaG91bGRCbG9ja0Nvb2tpZXMocmVxdWVzdC5maXJzdFBhcnR5
Rm9yQ29va2llcygpLCByZXF1ZXN0LnVybCgpLCBmcmFtZUlELCBwYWdlSUQpOwpAQCAtOTksNiAr
MTA3LDkgQEAgYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEJsb2NrQ29va2llcyhj
b25zdCBVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzLAogICAgIGlmIChwYWdlSUQgJiYgaGFzU3Rv
cmFnZUFjY2VzcyhyZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJhbWVJRCwgcGFn
ZUlELnZhbHVlKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBpZiAobV9pc1RoaXJk
UGFydHlDb29raWVCbG9ja2luZ09uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uRW5hYmxlZCAm
JiAhaGFzSGFkVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5KGZpcnN0UGFydHlEb21haW4pKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKwogICAgIHJldHVybiBzaG91bGRCbG9ja1RoaXJkUGFydHlD
b29raWVzKHJlc291cmNlRG9tYWluKTsKIH0KIApAQCAtMTI3LDYgKzEzOCwxMiBAQCB2b2lkIE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0UHJldmFsZW50RG9tYWluc1RvQmxvY2tCdXRLZWVwQ29v
a2llc0Zvcihjb25zdCBWZQogICAgIG1fcmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0J1dEtlZXBD
b29raWVzRm9yLmFkZChkb21haW5zLmJlZ2luKCksIGRvbWFpbnMuZW5kKCkpOwogfQogCit2b2lk
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0RG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25Bc0Zp
cnN0UGFydHkoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWlucykKK3sKKyAg
ICBtX3JlZ2lzdHJhYmxlRG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFydHkuY2xl
YXIoKTsKKyAgICBtX3JlZ2lzdHJhYmxlRG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0
UGFydHkuYWRkKGRvbWFpbnMuYmVnaW4oKSwgZG9tYWlucy5lbmQoKSk7Cit9CisKIHZvaWQgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpyZW1vdmVQcmV2YWxlbnREb21haW5zKGNvbnN0IFZlY3RvcjxS
ZWdpc3RyYWJsZURvbWFpbj4mIGRvbWFpbnMpCiB7CiAgICAgZm9yIChhdXRvJiBkb21haW4gOiBk
b21haW5zKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9O
ZXR3b3JrU3RvcmFnZVNlc3Npb24uaAppbmRleCA1YmI4NDM3NzQ5NTYxODRkMzEzMzU0ODI0Y2Vl
NjllMmFlYjVhM2ZjLi4yMDM4Yjg4YzE5OWNkYThjNDI1YTRhMzE0MTRmZTgyNzg2NTFlZDk0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmgKQEAgLTE0Nyw4ICsxNDcsMTAgQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNv
b2tpZXMsIGNvbnN0IFVSTCYgcmVzb3VyY2UsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBz
aG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgY29u
c3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVz
QnV0S2VlcEZpcnN0UGFydHlDb29raWVzRm9yKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNIYWRVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0
UGFydHkoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFByZXZhbGVudERvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0Zvcihjb25z
dCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRQcmV2YWxlbnREb21haW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9yKGNvbnN0IFZlY3RvcjxS
ZWdpc3RyYWJsZURvbWFpbj4mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERvbWFpbnNX
aXRoVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5KGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURv
bWFpbj4mKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFnZUNhcEZvckNsaWVudFNpZGVD
b29raWVzKE9wdGlvbmFsPFNlY29uZHM+KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92
ZVByZXZhbGVudERvbWFpbnMoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWlu
cyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZp
cnN0UGFydHlEb21haW4sIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIFBhZ2VJZGVudGlmaWVy
KSBjb25zdDsKQEAgLTE2Miw2ICsxNjQsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
T3B0aW9uYWw8U2Vjb25kcz4gbWF4QWdlQ2FjaGVDYXAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFU
cmFuc2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9E
b21haW4sIFBhZ2VJZGVudGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc2V0Q3Jv
c3NTaXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKCk7CisgICAgdm9pZCBzZXRJ
c1RoaXJkUGFydHlDb29raWVCbG9ja2luZ09uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uRW5h
YmxlZChib29sIGVuYWJsZWQpIHsgbV9pc1RoaXJkUGFydHlDb29raWVCbG9ja2luZ09uU2l0ZXNX
aXRob3V0VXNlckludGVyYWN0aW9uRW5hYmxlZCA9IGVuYWJsZWQ7IH0KICNlbmRpZgogCiBwcml2
YXRlOgpAQCAtMTg4LDYgKzE5MSw3IEBAIHByaXZhdGU6CiAgICAgT3B0aW9uYWw8U2Vjb25kcz4g
Y2xpZW50U2lkZUNvb2tpZUNhcChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eSwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+KSBjb25zdDsKICAgICBIYXNoU2V0PFJlZ2lzdHJhYmxl
RG9tYWluPiBtX3JlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yOwog
ICAgIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+IG1fcmVnaXN0cmFibGVEb21haW5zVG9CbG9j
a0J1dEtlZXBDb29raWVzRm9yOworICAgIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+IG1fcmVn
aXN0cmFibGVEb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbkFzRmlyc3RQYXJ0eTsKICAgICBIYXNo
TWFwPFBhZ2VJZGVudGlmaWVyLCBIYXNoTWFwPEZyYW1lSWRlbnRpZmllciwgUmVnaXN0cmFibGVE
b21haW4+PiBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNzOwogICAgIEhhc2hNYXA8UGFnZUlk
ZW50aWZpZXIsIEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluPj4g
bV9wYWdlc0dyYW50ZWRTdG9yYWdlQWNjZXNzOwogICAgIE9wdGlvbmFsPFNlY29uZHM+IG1fY2Fj
aGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMgeyB9OwpAQCAtMTk1LDYgKzE5OSw3IEBA
IHByaXZhdGU6CiAgICAgT3B0aW9uYWw8U2Vjb25kcz4gbV9hZ2VDYXBGb3JDbGllbnRTaWRlQ29v
a2llc1Nob3J0IHsgfTsKICAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWdp
c3RyYWJsZURvbWFpbj4gbV9uYXZpZ2F0ZWRUb1dpdGhMaW5rRGVjb3JhdGlvbkJ5UHJldmFsZW50
UmVzb3VyY2U7CiAgICAgYm9vbCBtX25hdmlnYXRpb25XaXRoTGlua0RlY29yYXRpb25UZXN0TW9k
ZSA9IGZhbHNlOworICAgIGJvb2wgbV9pc1RoaXJkUGFydHlDb29raWVCbG9ja2luZ09uU2l0ZXNX
aXRob3V0VXNlckludGVyYWN0aW9uRW5hYmxlZCA9IGZhbHNlOwogI2VuZGlmCiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQWRD
bGlja0F0dHJpYnV0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0FkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXIuY3BwCmluZGV4IGYzZTJmMGUwMjc5NTVmN2VkYzEz
YzJhNjYxNGU1MGEzNjEzYWNiYzIuLmEzMmZhY2YyMmEwMGQ0ZjBhYTE2ODc4NGYyYmJiMDM0NGY1
ZmY1MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQWRDbGlja0F0
dHJpYnV0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9B
ZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyLmNwcApAQCAtMjk5LDcgKzI5OSw3IEBAIHZvaWQgQWRD
bGlja0F0dHJpYnV0aW9uTWFuYWdlcjo6bWFya0FsbFVuY29udmVydGVkQXNFeHBpcmVkRm9yVGVz
dGluZygpCiAKIGJvb2wgQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlcjo6ZGVidWdNb2RlRW5hYmxl
ZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZl
YXR1cmVzKCkuYWRDbGlja0F0dHJpYnV0aW9uRGVidWdNb2RlRW5hYmxlZCgpICYmICFtX3Nlc3Np
b25JRC5pc0VwaGVtZXJhbCgpOworICAgIHJldHVybiBtX2lzRGVidWdNb2RlRW5hYmxlZEZ1bmN0
aW9uICYmIG1faXNEZWJ1Z01vZGVFbmFibGVkRnVuY3Rpb24oKSAgJiYgIW1fc2Vzc2lvbklELmlz
RXBoZW1lcmFsKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9BZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0FkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXIuaApp
bmRleCA0Yjk0MDBiN2QzYTE3MDI5ZWIwODYyNTA2ZThhZjNhMjNiMGY3MWI4Li42NDAyZjdhOTg5
ZDA4MTRkMTc1MWFkODZmZDY3NTFlY2M5NTYyYmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0FkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0FkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXIuaApAQCAtNjUs
NiArNjUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhckZvclJlZ2lzdHJhYmxlRG9tYWluKGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CiAgICAgdm9pZCB0b1N0cmluZyhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0cmluZyk+JiYpIGNvbnN0OwogICAgIHZvaWQgc2V0UGluZ0xvYWRGdW5jdGlv
bihGdW5jdGlvbjx2b2lkKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmKT4mJik+JiYgcGluZ0xvYWRGdW5jdGlvbikgeyBtX3BpbmdM
b2FkRnVuY3Rpb24gPSBXVEZNb3ZlKHBpbmdMb2FkRnVuY3Rpb24pOyB9CisgICAgdm9pZCBzZXRJ
c0RlYnVnTW9kZUVuYWJsZWRGdW5jdGlvbihGdW5jdGlvbjxib29sKCk+JiYgZnVuY3Rpb24pIHsg
bV9pc0RlYnVnTW9kZUVuYWJsZWRGdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pOyB9OwogICAg
IHZvaWQgc2V0T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcoYm9vbCB2YWx1ZSkgeyBtX2lzUnVubmlu
Z1Rlc3QgPSB2YWx1ZTsgfQogICAgIHZvaWQgc2V0Q29udmVyc2lvblVSTEZvclRlc3RpbmcoVVJM
JiYpOwogICAgIHZvaWQgbWFya0FsbFVuY29udmVydGVkQXNFeHBpcmVkRm9yVGVzdGluZygpOwpA
QCAtODEsNiArODIsNyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8c3RkOjpwYWlyPFNvdXJjZSwg
RGVzdGluYXRpb24+LCBBZENsaWNrQXR0cmlidXRpb24+IG1fY29udmVydGVkQWRDbGlja0F0dHJp
YnV0aW9uTWFwOwogICAgIFdlYkNvcmU6OlRpbWVyIG1fZmlyZVBlbmRpbmdDb252ZXJzaW9uUmVx
dWVzdHNUaW1lcjsKICAgICBGdW5jdGlvbjx2b2lkKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKT4mJik+IG1fcGluZ0xvYWRGdW5j
dGlvbjsKKyAgICBGdW5jdGlvbjxib29sKCk+IG1faXNEZWJ1Z01vZGVFbmFibGVkRnVuY3Rpb247
CiAgICAgYm9vbCBtX2lzUnVubmluZ1Rlc3QgeyBmYWxzZSB9OwogICAgIE9wdGlvbmFsPFVSTD4g
bV9jb252ZXJzaW9uQmFzZVVSTEZvclRlc3Rpbmc7CiAgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNz
aW9uSUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlLmNwcAppbmRleCAxZGI1NDFlNDZhODdiMmIzZDQ1YWMzMjc1MzFjNDI4OWFkMjI0NmRi
Li5lYjk0YWJiZjc4ZGU1NmRhZWMwNWI1YWE4NGNjODIxOTA2ZWRjZDRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTE2
ODAsNyArMTY4MCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmNsZWFyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wCiAgICAgcmVtb3ZlQWxsU3Rv
cmFnZUFjY2VzcyhbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlS
ZWYoKV0geyB9KTsKIAogICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0FuZERlbGV0
ZUNvb2tpZXNGb3IgPSBlbnN1cmVQcmV2YWxlbnRSZXNvdXJjZXNGb3JEZWJ1Z01vZGUoKTsKLSAg
ICBSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0ZvciBkb21haW5zVG9CbG9jayB7IHJl
Z2lzdHJhYmxlRG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yLCB7IH0gfTsKKyAgICBS
ZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0ZvciBkb21haW5zVG9CbG9jayB7IHJlZ2lz
dHJhYmxlRG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yLCB7IH0sIHsgfSB9OwogICAg
IHVwZGF0ZUNvb2tpZUJsb2NraW5nRm9yRG9tYWlucyhkb21haW5zVG9CbG9jaywgW2NhbGxiYWNr
QWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiB9CiAKQEAg
LTE3NTIsMTkgKzE3NTIsMzUgQEAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWluc1RvQmxvY2tCdXQKICAgICByZXR1cm4g
cmVzdWx0czsKIH0KIAorVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFy
dHkoKSBjb25zdAoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgVmVj
dG9yPFJlZ2lzdHJhYmxlRG9tYWluPiByZXN1bHRzOworICAgIFNRTGl0ZVN0YXRlbWVudCBzdGF0
ZW1lbnQobV9kYXRhYmFzZSwgIlNFTEVDVCByZWdpc3RyYWJsZURvbWFpbiBGUk9NIE9ic2VydmVk
RG9tYWlucyBXSEVSRSBoYWRVc2VySW50ZXJhY3Rpb24gPSAxIl9zKTsKKyAgICBpZiAoc3RhdGVt
ZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0spCisgICAgICAgIHJldHVybiByZXN1bHRzOworICAg
IAorICAgIHdoaWxlIChzdGF0ZW1lbnQuc3RlcCgpID09IFNRTElURV9ST1cpCisgICAgICAgIHJl
c3VsdHMuYXBwZW5kKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0
cmFibGVEb21haW5TdHJpbmcoc3RhdGVtZW50LmdldENvbHVtblRleHQoMCkpKTsKKworICAgIHJl
dHVybiByZXN1bHRzOworfQorCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjp1cGRhdGVDb29raWVCbG9ja2luZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKICAg
ICBhdXRvIGRvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0ZvciA9IHRoaXMtPmRvbWFpbnNU
b0Jsb2NrQW5kRGVsZXRlQ29va2llc0ZvcigpOwogICAgIGF1dG8gZG9tYWluc1RvQmxvY2tCdXRL
ZWVwQ29va2llc0ZvciA9IHRoaXMtPmRvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3IoKTsK
KyAgICBhdXRvIGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5ID0gdGhpcy0+
ZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFydHkoKTsKIAotICAgIGlmIChkb21h
aW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IuaXNFbXB0eSgpICYmIGRvbWFpbnNUb0Jsb2Nr
QnV0S2VlcENvb2tpZXNGb3IuaXNFbXB0eSgpKSB7CisgICAgaWYgKGRvbWFpbnNUb0Jsb2NrQW5k
RGVsZXRlQ29va2llc0Zvci5pc0VtcHR5KCkgJiYgZG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2ll
c0Zvci5pc0VtcHR5KCkgJiYgZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFydHku
aXNFbXB0eSgpKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0ZvciBkb21h
aW5zVG9CbG9jayB7IGRvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0ZvciwgZG9tYWluc1Rv
QmxvY2tCdXRLZWVwQ29va2llc0ZvciB9OworICAgIFJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tD
b29raWVzRm9yIGRvbWFpbnNUb0Jsb2NrIHsgZG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVz
Rm9yLCBkb21haW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9yLCBkb21haW5zV2l0aFVzZXJJbnRl
cmFjdGlvbkFzRmlyc3RQYXJ0eSB9OwogCiAgICAgaWYgKGRlYnVnTG9nZ2luZ0VuYWJsZWQoKSAm
JiAhZG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yLmlzRW1wdHkoKSAmJiAhZG9tYWlu
c1RvQmxvY2tCdXRLZWVwQ29va2llc0Zvci5pc0VtcHR5KCkpCiAgICAgICAgIGRlYnVnTG9nRG9t
YWluc0luQmF0Y2hlcygiYmxvY2siLCBkb21haW5zVG9CbG9jayk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCmluZGV4IGJlZWQ4MzQyMTIz
MWVmOTAxNjljNjdmZDI3MmI4Y2FhODg5NTk5ZjguLjAyMjYzMjU3OTE0YmM5N2VjNGI4YjM4ZTE0
Y2E3MDNkNTNjOWQ3MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZS5oCkBAIC0xNTUsNiArMTU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHNldFVzZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGJvb2wgaGFkVXNl
ckludGVyYWN0aW9uLCBXYWxsVGltZSk7CiAgICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBk
b21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IoKSBjb25zdDsKICAgICBWZWN0b3I8UmVn
aXN0cmFibGVEb21haW4+IGRvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3IoKSBjb25zdDsK
KyAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9u
QXNGaXJzdFBhcnR5KCkgY29uc3Q7CiAKICAgICBzdHJ1Y3QgUHJldmFsZW50RG9tYWluRGF0YSB7
CiAgICAgICAgIHVuc2lnbmVkIGRvbWFpbklEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAppbmRleCA2NTg5ZjZiMWRlMmJkODU3MjFjNjMw
NzIxZDNjMzZmOTU0MWIxYzVjLi5mOTJmNGZkYTdhYjc0Mzk3ZDE5OTQzMGQ4YjA3ZDM5NjE4YWE2
Y2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0
b3JlLmNwcApAQCAtNjk3LDcgKzY5Nyw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlOjpjbGVhcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxlCiAgICAg
cmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dy
ZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKIAogICAgIGF1dG8gcmVnaXN0cmFibGVEb21haW5zVG9C
bG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IgPSBlbnN1cmVQcmV2YWxlbnRSZXNvdXJjZXNGb3JEZWJ1
Z01vZGUoKTsKLSAgICBSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0ZvciBkb21haW5z
VG9CbG9jayB7IHJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yLCB7
IH0gfTsKKyAgICBSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0ZvciBkb21haW5zVG9C
bG9jayB7IHJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yLCB7IH0s
IHsgfSB9OwogICAgIHVwZGF0ZUNvb2tpZUJsb2NraW5nRm9yRG9tYWlucyhkb21haW5zVG9CbG9j
aywgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsg
fSk7CiB9CiAKQEAgLTczNSwyMSArNzM1LDIyIEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01lbW9yeVN0b3JlOjp1cGRhdGVDb29raWVCbG9ja2luZyhDb21wbGV0aW9uSGFuZGxlcjx2CiAK
ICAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29v
a2llc0ZvcjsKICAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNUb0Jsb2NrQnV0
S2VlcENvb2tpZXNGb3I7CisgICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zV2l0
aFVzZXJJbnRlcmFjdGlvbkFzRmlyc3RQYXJ0eTsKICAgICBmb3IgKGF1dG8mIHJlc291cmNlU3Rh
dGlzdGljIDogbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAudmFsdWVzKCkpIHsKLSAgICAgICAgaWYg
KHJlc291cmNlU3RhdGlzdGljLmlzUHJldmFsZW50UmVzb3VyY2UpIHsKLSAgICAgICAgICAgIGlm
IChoYXNIYWRVbmV4cGlyZWRSZWNlbnRVc2VySW50ZXJhY3Rpb24ocmVzb3VyY2VTdGF0aXN0aWMs
IE9wZXJhdGluZ0RhdGVzV2luZG93OjpMb25nKSkKLSAgICAgICAgICAgICAgICBkb21haW5zVG9C
bG9ja0J1dEtlZXBDb29raWVzRm9yLmFwcGVuZChyZXNvdXJjZVN0YXRpc3RpYy5yZWdpc3RyYWJs
ZURvbWFpbik7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZG9tYWluc1RvQmxv
Y2tBbmREZWxldGVDb29raWVzRm9yLmFwcGVuZChyZXNvdXJjZVN0YXRpc3RpYy5yZWdpc3RyYWJs
ZURvbWFpbik7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGhhc0hhZFVuZXhwaXJlZFJlY2VudFVz
ZXJJbnRlcmFjdGlvbihyZXNvdXJjZVN0YXRpc3RpYywgT3BlcmF0aW5nRGF0ZXNXaW5kb3c6Okxv
bmcpKSB7CisgICAgICAgICAgICBpZiAocmVzb3VyY2VTdGF0aXN0aWMuaXNQcmV2YWxlbnRSZXNv
dXJjZSkKKyAgICAgICAgICAgICAgICBkb21haW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9yLmFw
cGVuZChyZXNvdXJjZVN0YXRpc3RpYy5yZWdpc3RyYWJsZURvbWFpbi5pc29sYXRlZENvcHkoKSk7
CisgICAgICAgICAgICBkb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbkFzRmlyc3RQYXJ0eS5hcHBl
bmQocmVzb3VyY2VTdGF0aXN0aWMucmVnaXN0cmFibGVEb21haW4pOworICAgICAgICB9IGVsc2Ug
aWYgKHJlc291cmNlU3RhdGlzdGljLmlzUHJldmFsZW50UmVzb3VyY2UpCisgICAgICAgICAgICBk
b21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IuYXBwZW5kKHJlc291cmNlU3RhdGlzdGlj
LnJlZ2lzdHJhYmxlRG9tYWluKTsKICAgICB9CiAKLSAgICBpZiAoZG9tYWluc1RvQmxvY2tBbmRE
ZWxldGVDb29raWVzRm9yLmlzRW1wdHkoKSAmJiBkb21haW5zVG9CbG9ja0J1dEtlZXBDb29raWVz
Rm9yLmlzRW1wdHkoKSAmJiAhZGVidWdNb2RlRW5hYmxlZCgpKSB7CisgICAgaWYgKGRvbWFpbnNU
b0Jsb2NrQW5kRGVsZXRlQ29va2llc0Zvci5pc0VtcHR5KCkgJiYgZG9tYWluc1RvQmxvY2tCdXRL
ZWVwQ29va2llc0Zvci5pc0VtcHR5KCkgJiYgZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25Bc0Zp
cnN0UGFydHkuaXNFbXB0eSgpICYmICFkZWJ1Z01vZGVFbmFibGVkKCkpIHsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZ2lzdHJh
YmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9yIGRvbWFpbnNUb0Jsb2NrIHsgZG9tYWluc1RvQmxv
Y2tBbmREZWxldGVDb29raWVzRm9yLCBkb21haW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9yIH07
CisgICAgUmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZXNGb3IgZG9tYWluc1RvQmxvY2sg
eyBkb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IsIGRvbWFpbnNUb0Jsb2NrQnV0S2Vl
cENvb2tpZXNGb3IsIGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5IH07CiAK
ICAgICBpZiAoZGVidWdMb2dnaW5nRW5hYmxlZCgpICYmICFkb21haW5zVG9CbG9ja0FuZERlbGV0
ZUNvb2tpZXNGb3IuaXNFbXB0eSgpICYmICFkb21haW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9y
LmlzRW1wdHkoKSkKICAgICAgICAgZGVidWdMb2dEb21haW5zSW5CYXRjaGVzKCJibG9jayIsIGRv
bWFpbnNUb0Jsb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5jcHAKaW5kZXggY2I3ZTg1OTcyZDhjMmViYWY5ZDJlOGVkZjk0NTViMDIxNmRmNTdhZC4u
NzQ4YjViMWYxMTJlYzJmOWRmNDhkNzc3YzA1MmIzNWI4NjVjOWMwZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTk2Myw2ICs5NjMsNyBA
QCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2FsbFVwZGF0ZVByZXZhbGVu
dERvbWFpbnNUb0Jsb2NrQ29va2llc0ZvcgogICAgICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Np
b24gPSBtX25ldHdvcmtTZXNzaW9uLT5uZXR3b3JrU3RvcmFnZVNlc3Npb24oKSkgewogICAgICAg
ICAgICAgc3RvcmFnZVNlc3Npb24tPnNldFByZXZhbGVudERvbWFpbnNUb0Jsb2NrQW5kRGVsZXRl
Q29va2llc0Zvcihkb21haW5zVG9CbG9jay5kb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNG
b3IpOwogICAgICAgICAgICAgc3RvcmFnZVNlc3Npb24tPnNldFByZXZhbGVudERvbWFpbnNUb0Js
b2NrQnV0S2VlcENvb2tpZXNGb3IoZG9tYWluc1RvQmxvY2suZG9tYWluc1RvQmxvY2tCdXRLZWVw
Q29va2llc0Zvcik7CisgICAgICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+c2V0RG9tYWluc1dpdGhV
c2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFydHkoZG9tYWluc1RvQmxvY2suZG9tYWluc1dpdGhVc2Vy
SW50ZXJhY3Rpb25Bc0ZpcnN0UGFydHkpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggNDE2NGFiNmFkOGNkZmUy
Mjc2MGE5NmVjZDlhOWNlMWUzMGI5MDdjZS4uMzhiN2MwZTA1NzA0NjQxNzI0Mzc5ZmJkNGZmZjFi
NzFhNDViN2RjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaApAQCAtNjUsNyArNjUsNiBAQCBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CiBlbnVtIGNsYXNz
IFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcyA6IGJvb2w7CiBlbnVtIGNsYXNzIFNob3VsZElu
Y2x1ZGVMb2NhbGhvc3QgOiBib29sIHsgTm8sIFllcyB9OwogZW51bSBjbGFzcyBFbmFibGVSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlIDogYm9vbCB7IE5vLCBZZXMgfTsKLWVudW0gY2xh
c3MgRW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc05TVVJMU2Vzc2lvblN3aXRjaGluZyA6IGJv
b2wgeyBObywgWWVzIH07CiBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhVG9SZW1vdmUgOiB1aW50OF90
IHsKICAgICBBbGwsCiAgICAgQWxsQnV0SHR0cE9ubHlDb29raWVzLApAQCAtNzQsNyArNzMsOCBA
QCBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhVG9SZW1vdmUgOiB1aW50OF90IHsKIHN0cnVjdCBSZWdp
c3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0ZvciB7CiAgICAgVmVjdG9yPFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluPiBkb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3I7CiAgICAg
VmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zVG9CbG9ja0J1dEtlZXBD
b29raWVzRm9yOwotICAgIFJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9yIGlzb2xh
dGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgZG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVz
Rm9yLmlzb2xhdGVkQ29weSgpLCBkb21haW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9yLmlzb2xh
dGVkQ29weSgpIH07IH0KKyAgICBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRv
bWFpbnNXaXRoVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5OworICAgIFJlZ2lzdHJhYmxlRG9t
YWluc1RvQmxvY2tDb29raWVzRm9yIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgZG9t
YWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yLmlzb2xhdGVkQ29weSgpLCBkb21haW5zVG9C
bG9ja0J1dEtlZXBDb29raWVzRm9yLmlzb2xhdGVkQ29weSgpLCBkb21haW5zV2l0aFVzZXJJbnRl
cmFjdGlvbkFzRmlyc3RQYXJ0eS5pc29sYXRlZENvcHkoKSB9OyB9CiB9OwogCiBjbGFzcyBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLCBXVEY6OkRlc3RydWN0aW9uVGhy
ZWFkOjpNYWluPiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCmluZGV4IDE0MjU5YjEyODNiMWEzYWQxYzM1ODY0ODc0ZDBkNzliMmUzNjc4NWIu
LmQ2ZjZjZjkwZWY3NTNhZTNlNGM0MzZlNGY5N2Y2M2E5MzliMDYzMDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0zMDksNyArMzA5
LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKE5ldHdv
cmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYKICAgICBtX2lzSVRQRGF0YWJhc2VFbmFibGVk
ID0gcGFyYW1ldGVycy5zaG91bGRFbmFibGVJVFBEYXRhYmFzZTsKICNlbmRpZgogCi0gICAgV2Vi
Q29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRBZENsaWNr
QXR0cmlidXRpb25EZWJ1Z01vZGVFbmFibGVkKHBhcmFtZXRlcnMuZW5hYmxlQWRDbGlja0F0dHJp
YnV0aW9uRGVidWdNb2RlKTsKKyAgICBtX2lzQWRDbGlja0F0dHJpYnV0aW9uRGVidWdNb2RlRW5h
YmxlZCA9IHBhcmFtZXRlcnMuZW5hYmxlQWRDbGlja0F0dHJpYnV0aW9uRGVidWdNb2RlOwogCiAg
ICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMuZGVmYXVs
dERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCkBAIC0xMjU1LDYgKzEyNTUs
MTUgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JU
ZXN0aW5nKGJvb2wgZW5hYmxlZCwgQ29tcGxldGkKICAgICB9KTsKICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOwogfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRTaG91bGRCbG9ja1RoaXJkUGFy
dHlDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgZW5hYmxl
ZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAg
IGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9u
SUQpKQorICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPnNldElzVGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nT25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb25FbmFibGVkKGVuYWJsZWQpOwor
ICAgIGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKK30KICNlbmRpZiAvLyBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQog
CiBib29sIE5ldHdvcmtQcm9jZXNzOjpzZXNzaW9uSXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCBjMTMwY2FjNmFlMjI0MDFlOGYxNDdhM2VkMzFk
NzExOWEwM2IzNzUyLi44MzZkOGEzZWQ4NjRlMTI2MzQxZjU0OGFiODBhM2JkZDg0MjEzMWZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0y
NjYsNiArMjY2LDcgQEAgcHVibGljOgogICAgIHZvaWQgaGFzSXNvbGF0ZWRTZXNzaW9uKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpIGNvbnN0OwogICAgIGJvb2wgaXNJVFBEYXRhYmFzZUVuYWJs
ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzSVRQRGF0YWJhc2VFbmFibGVkOyB9CiAgICAgdm9pZCBz
ZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmcoYm9vbCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNG
b3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogI2VuZGlmCiAKICAgICB1c2luZyBDYWNoZVN0b3JhZ2VSb290UGF0aENhbGxiYWNrID0g
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+OwpAQCAtMzMzLDYgKzMzNCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldEFkQ2xpY2tBdHRyaWJ1dGlvbk92ZXJyaWRlVGltZXJGb3JUZXN0
aW5nKFBBTDo6U2Vzc2lvbklELCBib29sIHZhbHVlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogICAgIHZvaWQgc2V0QWRDbGlja0F0dHJpYnV0aW9uQ29udmVyc2lvblVSTEZvclRlc3Rp
bmcoUEFMOjpTZXNzaW9uSUQsIFVSTCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
ICAgIHZvaWQgbWFya0FkQ2xpY2tBdHRyaWJ1dGlvbnNBc0V4cGlyZWRGb3JUZXN0aW5nKFBBTDo6
U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIGJvb2wgaXNBZENs
aWNrQXR0cmlidXRpb25EZWJ1Z01vZGVFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0FkQ2xp
Y2tBdHRyaWJ1dGlvbkRlYnVnTW9kZUVuYWJsZWQ7IH0KIAogICAgIFdlYkNvcmU6OlN0b3JhZ2VR
dW90YU1hbmFnZXImIHN0b3JhZ2VRdW90YU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdl
YkNvcmU6OkNsaWVudE9yaWdpbiYpOwogCkBAIC01NDMsNyArNTQ1LDggQEAgcHJpdmF0ZToKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGJvb2wgbV9pc0lUUERhdGFi
YXNlRW5hYmxlZCB7IGZhbHNlIH07CiAjZW5kaWYKLSAgICAKKyAgICBib29sIG1faXNBZENsaWNr
QXR0cmlidXRpb25EZWJ1Z01vZGVFbmFibGVkIHsgZmFsc2UgfTsKKwogICAgIGNsYXNzIFN0b3Jh
Z2VRdW90YU1hbmFnZXJzIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHVpbnQ2NF90IGRlZmF1bHRR
dW90YShjb25zdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4mIG9yaWdpbikgY29uc3QgeyByZXR1cm4g
b3JpZ2luLnRvcE9yaWdpbiA9PSBvcmlnaW4uY2xpZW50T3JpZ2luID8gbV9kZWZhdWx0UXVvdGEg
OiBtX2RlZmF1bHRUaGlyZFBhcnR5UXVvdGE7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGNlNWI2YmE0
MzY0ZDI4NmQ3ZGFjNTQ3ZDY4YWU2NDRjZmUzYmRlZmEuLjBiOGEyNWE5ZmMxZDYwYzcxNjE4NWQ1
N2JlNWFiNmQ0MDBkNDk0ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTM3LDYgKzEzNyw3IEBAIG1l
c3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBEZWxldGVDb29r
aWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIGRvbWFpbiwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVzKSAtPiAoKSBBc3lu
YwogICAgIEhhc0lzb2xhdGVkU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbikgLT4gKGJvb2wgaGFzSXNvbGF0ZWRTZXNzaW9u
KSBBc3luYwogICAgIFNldFNob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyhib29sIGVu
YWJsZWQpIC0+ICgpIEFzeW5jCisgICAgU2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0Zv
clRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIGVuYWJsZWQpIC0+ICgpIEFz
eW5jCiAjZW5kaWYKIAogICAgIFNldFNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIGNvbnRyb2xsZWQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAppbmRleCAxMTJjZDJiYjVlYTAw
NWM1OTM2YmM5YTYzNDQ0NTc1NWVmYjc3YjM0Li4zY2I3M2EwNDhmNTVmODk1NWUyMzQ3NTFkZTkw
M2Q5ZTNmYjI4MzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uLmNwcApAQCAtMTE0LDYgKzExNCwxMSBAQCBOZXR3b3JrU2Vzc2lvbjo6TmV0d29y
a1Nlc3Npb24oTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBjb25zdCBOZXR3b3JrU2Vz
cwogICAgICAgICAvLyBQaW5nTG9hZCBtYW5hZ2VzIGl0cyBvd24gbGlmZXRpbWUsIGRlbGV0aW5n
IGl0c2VsZiB3aGVuIGl0cyBwdXJwb3NlIGhhcyBiZWVuIGZ1bGZpbGxlZC4KICAgICAgICAgbmV3
IFBpbmdMb2FkKG1fbmV0d29ya1Byb2Nlc3MsIG1fc2Vzc2lvbklELCBXVEZNb3ZlKGxvYWRQYXJh
bWV0ZXJzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIH0pOworICAgIG1fYWRD
bGlja0F0dHJpYnV0aW9uLT5zZXRJc0RlYnVnTW9kZUVuYWJsZWRGdW5jdGlvbihbdGhpcywgd2Vh
a1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKCkgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gbV9uZXR3b3JrUHJvY2Vz
cy0+aXNBZENsaWNrQXR0cmlidXRpb25EZWJ1Z01vZGVFbmFibGVkKCk7CisgICAgfSk7CiB9CiAK
IE5ldHdvcmtTZXNzaW9uOjp+TmV0d29ya1Nlc3Npb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IDkxMDIyNzlmMjlkZTQ5YTBmZDFkZjdk
OGUwN2IwMjczOTg1OWJlODUuLmFhNDQwNTg3OGYwNDExMmVhNmE2YTA1ZDI5YWFkNzgwZWU0NzAy
M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgK
QEAgLTkzLDExICs5MywxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBub3RpZnlQYWdlU3RhdGlzdGlj
c1RlbGVtZXRyeUZpbmlzaGVkKHVuc2lnbmVkIG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzLCB1
bnNpZ25lZCBudW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24sIHVu
c2lnbmVkIG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiwg
dW5zaWduZWQgdG9wUHJldmFsZW50UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9uRGF5c1NpbmNl
VXNlckludGVyYWN0aW9uLCB1bnNpZ25lZCBtZWRpYW5EYXlzU2luY2VVc2VySW50ZXJhY3Rpb25Q
cmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIHRvcDNOdW1iZXJP
ZlByZXZhbGVudFJlc291cmNlc1dpdGhVSSwgdW5zaWduZWQgdG9wM01lZGlhblN1YkZyYW1lV2l0
aG91dFVJLCB1bnNpZ25lZCB0b3AzTWVkaWFuU3ViUmVzb3VyY2VXaXRob3V0VUksIHVuc2lnbmVk
IHRvcDNNZWRpYW5VbmlxdWVSZWRpcmVjdHNXaXRob3V0VUksIHVuc2lnbmVkIHRvcDNNZWRpYW5E
YXRhUmVjb3Jkc1JlbW92ZWRXaXRob3V0VUkpOwogICAgIGJvb2wgZW5hYmxlUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0xvZ1Rlc3RpbmdFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0xvZ1Rlc3RpbmdFdmVudDsgfQogICAgIHZvaWQgc2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0xvZ1Rlc3RpbmdFdmVudChib29sIGxvZykgeyBtX2VuYWJsZVJlc291cmNl
TG9hZFN0YXRpc3RpY3NMb2dUZXN0aW5nRXZlbnQgPSBsb2c7IH0KLSAgICBib29sIHNob3VsZElz
b2xhdGVTZXNzaW9uc0ZvclByZXZhbGVudFRvcEZyYW1lcygpIGNvbnN0IHsgcmV0dXJuIG1fZW5h
YmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc05TVVJMU2Vzc2lvblN3aXRjaGluZyA9PSBFbmFibGVS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTlNVUkxTZXNzaW9uU3dpdGNoaW5nOjpZZXM7IH0KICAgICB2
aXJ0dWFsIGJvb2wgaGFzSXNvbGF0ZWRTZXNzaW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBjbGVhcklz
b2xhdGVkU2Vzc2lvbnMoKSB7IH0KICAgICB2b2lkIHNldFNob3VsZERvd25ncmFkZVJlZmVycmVy
Rm9yVGVzdGluZyhib29sKTsKICAgICBib29sIHNob3VsZERvd25ncmFkZVJlZmVycmVyKCkgY29u
c3Q7CisgICAgdm9pZCBzZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhi
b29sKTsKICNlbmRpZgogICAgIHZvaWQgc3RvcmVBZENsaWNrQXR0cmlidXRpb24oV2ViQ29yZTo6
QWRDbGlja0F0dHJpYnV0aW9uJiYpOwogICAgIHZvaWQgaGFuZGxlQWRDbGlja0F0dHJpYnV0aW9u
Q29udmVyc2lvbihXZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb246OkNvbnZlcnNpb24mJiwgY29u
c3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGly
ZWN0UmVxdWVzdCk7CkBAIC0xNDAsNyArMTQwLDYgQEAgcHJvdGVjdGVkOgogICAgIFNob3VsZElu
Y2x1ZGVMb2NhbGhvc3QgbV9zaG91bGRJbmNsdWRlTG9jYWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzIHsgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdDo6WWVzIH07CiAgICAgRW5hYmxlUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSBtX2VuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NE
ZWJ1Z01vZGUgeyBFbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlOjpObyB9Owog
ICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc01h
bnVhbFByZXZhbGVudFJlc291cmNlOwotICAgIEVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NO
U1VSTFNlc3Npb25Td2l0Y2hpbmcgbV9lbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTlNVUkxT
ZXNzaW9uU3dpdGNoaW5nIHsgRW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc05TVVJMU2Vzc2lv
blN3aXRjaGluZzo6Tm8gfTsKICAgICBib29sIG1fZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0xvZ1Rlc3RpbmdFdmVudDsKICAgICBib29sIG1fZG93bmdyYWRlUmVmZXJyZXIgeyB0cnVlIH07
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggY2MxNDA5OWEz
ZGQ1NDcyMzg2ODY5YzU3ZGYyYmZkNzhiZjU2ZTU3NC4uZDg3MzRiNWRhZThiOTMyNGJhYTQwNjY2
ZGM4MTNlMDNlODIzY2ViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAg
LTY4LDcgKzY4LDcgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6ZW5j
b2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHNob3VsZElu
Y2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3M7CiAgICAgZW5jb2RlciA8PCBl
bmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlOwogICAgIGVuY29kZXIgPDwgcmVz
b3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlOwotICAgIGVuY29kZXIg
PDwgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc05TVVJMU2Vzc2lvblN3aXRjaGluZzsKKyAg
ICBlbmNvZGVyIDw8IGVuYWJsZVRoaXJkUGFydHlDb29raWVCbG9ja2luZ09uU2l0ZXNXaXRob3V0
VXNlckludGVyYWN0aW9uOwogCiAgICAgZW5jb2RlciA8PCBuZXR3b3JrQ2FjaGVEaXJlY3Rvcnkg
PDwgbmV0d29ya0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogCkBAIC0xOTksOSArMTk5
LDkgQEAgT3B0aW9uYWw8TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM+IE5ldHdvcmtT
ZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWMKICAgICBpZiAoIXJlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW51YWxQcmV2YWxlbnRSZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKIAotICAgIE9wdGlvbmFsPGJvb2w+IGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NOU1VS
TFNlc3Npb25Td2l0Y2hpbmc7Ci0gICAgZGVjb2RlciA+PiBlbmFibGVSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTlNVUkxTZXNzaW9uU3dpdGNoaW5nOwotICAgIGlmICghZW5hYmxlUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc05TVVJMU2Vzc2lvblN3aXRjaGluZykKKyAgICBPcHRpb25hbDxib29sPiBlbmFi
bGVUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbjsK
KyAgICBkZWNvZGVyID4+IGVuYWJsZVRoaXJkUGFydHlDb29raWVCbG9ja2luZ09uU2l0ZXNXaXRo
b3V0VXNlckludGVyYWN0aW9uOworICAgIGlmICghZW5hYmxlVGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nT25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24pCiAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CiAKICAgICBPcHRpb25hbDxTdHJpbmc+IG5ldHdvcmtDYWNoZURpcmVjdG9yeTsKQEAg
LTI4Miw3ICsyODIsNyBAQCBPcHRpb25hbDxOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVy
cz4gTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OmRlYwogICAgICAgICAsIFdURk1v
dmUoKmVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NMb2dUZXN0aW5nRXZlbnQpCiAgICAgICAg
ICwgV1RGTW92ZSgqc2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cykKICAgICAgICAgLCBXVEZNb3ZlKCplbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdN
b2RlKQotICAgICAgICAsIFdURk1vdmUoKmVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NOU1VS
TFNlc3Npb25Td2l0Y2hpbmcpCisgICAgICAgICwgV1RGTW92ZSgqZW5hYmxlVGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nT25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24pCiAgICAgICAgICwgV1RG
TW92ZSgqZGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0VuYWJsZWQpCiAgICAgICAgICwgV1RG
TW92ZSgqYWxsTG9hZHNCbG9ja2VkQnlEZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRm9yVGVz
dGluZykKICAgICAgICAgLCBXVEZNb3ZlKCpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJl
dmFsZW50UmVzb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggZTgwMTcx
MmEzM2RhZTRjZDNhOWY1OTYzYTBmNzVkMzA0YWI4NWQwMS4uNGNkZGIwZTUxNTQxNDU1MGQzNzRh
MmMwYmYxZmE4N2VhZjdkNjBmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaApAQCAt
ODUsNyArODUsNyBAQCBzdHJ1Y3QgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMgewog
ICAgIGJvb2wgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0xvZ1Rlc3RpbmdFdmVudCB7IGZh
bHNlIH07CiAgICAgYm9vbCBzaG91bGRJbmNsdWRlTG9jYWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzIHsgdHJ1ZSB9OwogICAgIGJvb2wgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rl
YnVnTW9kZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TlNVUkxTZXNzaW9uU3dpdGNoaW5nIHsgdHJ1ZSB9OworICAgIGJvb2wgZW5hYmxlVGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nT25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24geyBmYWxzZSB9Owog
ICAgIGJvb2wgZGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0VuYWJsZWQgeyBmYWxzZSB9Owog
ICAgIGJvb2wgYWxsTG9hZHNCbG9ja2VkQnlEZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRm9y
VGVzdGluZyB7IGZhbHNlIH07CiAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlIHsgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0Nv
Y29hLm1tCmluZGV4IDc3YTIyMGYwZTc4OGNjNjE3N2UwMjM1MmQzZmRjNmEzZTIzNzk3YTMuLjM5
ZGI4YjQzY2VkNWFkMTU3M2E4ZWZmY2JlMmY5MTliZjMxNWNlYjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2Nv
YS5tbQpAQCAtMjEzLDcgKzIxMyw3IEBAIE5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0
YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUCiAgICAgaWYg
KGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHNlc3Npb24ubmV0d29ya1N0b3JhZ2VTZXNz
aW9uKCkpIHsKICAgICAgICAgaWYgKCFzaG91bGRCbG9ja0Nvb2tpZXMpCiAgICAgICAgICAgICBz
aG91bGRCbG9ja0Nvb2tpZXMgPSBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPnNob3VsZEJsb2NrQ29v
a2llcyhyZXF1ZXN0LCBmcmFtZUlELCBwYWdlSUQpOwotICAgICAgICBuZWVkc0lzb2xhdGVkU2Vz
c2lvbiA9IHNlc3Npb24uc2hvdWxkSXNvbGF0ZVNlc3Npb25zRm9yUHJldmFsZW50VG9wRnJhbWVz
KCkgJiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5zaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVz
QnV0S2VlcEZpcnN0UGFydHlDb29raWVzRm9yKGZpcnN0UGFydHkpOworICAgICAgICBuZWVkc0lz
b2xhdGVkU2Vzc2lvbiA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+c2hvdWxkQmxvY2tUaGlyZFBh
cnR5Q29va2llc0J1dEtlZXBGaXJzdFBhcnR5Q29va2llc0ZvcihmaXJzdFBhcnR5KTsKICAgICB9
CiAjZW5kaWYKICAgICByZXN0cmljdFJlcXVlc3RSZWZlcnJlclRvT3JpZ2luSWZOZWVkZWQocmVx
dWVzdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtTZXNzaW9uQ29jb2EubW0KaW5kZXggMDBiZTJjMjA5YmNmZTYyYjAxNmMxOWI1YjY2
ZjQ4YWU1YzRiNDg4OC4uZmFiNmZjZWU5MzY3ZTE1NWZmNDdjYWExMTQzZDlkNWJjYzkwMTI3MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vz
c2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Nlc3Npb25Db2NvYS5tbQpAQCAtMTEwOSw3ICsxMTA5LDcgQEAgTmV0d29ya1Nlc3Npb25D
b2NvYTo6TmV0d29ya1Nlc3Npb25Db2NvYShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3Ms
IE5ldHdvcmsKICAgICBtX3Nob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRp
c3RpY3MgPSBwYXJhbWV0ZXJzLnNob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0
YXRpc3RpY3MgPyBTaG91bGRJbmNsdWRlTG9jYWxob3N0OjpZZXMgOiBTaG91bGRJbmNsdWRlTG9j
YWxob3N0OjpObzsKICAgICBtX2VuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUg
PSBwYXJhbWV0ZXJzLmVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUgPyBFbmFi
bGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlOjpZZXMgOiBFbmFibGVSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGVidWdNb2RlOjpObzsKICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NN
YW51YWxQcmV2YWxlbnRSZXNvdXJjZSA9IHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01hbnVhbFByZXZhbGVudFJlc291cmNlOwotICAgIG1fZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlz
dGljc05TVVJMU2Vzc2lvblN3aXRjaGluZyA9IHBhcmFtZXRlcnMuZW5hYmxlUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc05TVVJMU2Vzc2lvblN3aXRjaGluZyA/IEVuYWJsZVJlc291cmNlTG9hZFN0YXRp
c3RpY3NOU1VSTFNlc3Npb25Td2l0Y2hpbmc6OlllcyA6IEVuYWJsZVJlc291cmNlTG9hZFN0YXRp
c3RpY3NOU1VSTFNlc3Npb25Td2l0Y2hpbmc6Ok5vOworICAgIHN0b3JhZ2VTZXNzaW9uLT5zZXRJ
c1RoaXJkUGFydHlDb29raWVCbG9ja2luZ09uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uRW5h
YmxlZChwYXJhbWV0ZXJzLmVuYWJsZVRoaXJkUGFydHlDb29raWVCbG9ja2luZ09uU2l0ZXNXaXRo
b3V0VXNlckludGVyYWN0aW9uKTsKICAgICBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxl
ZChwYXJhbWV0ZXJzLmVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3MpOwogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCmluZGV4IDk3NDYxOGY2ZDI2NTQ5
MDYzYzgzODhmY2RhZTJlYjRkNTY3NjFhMDYuLjMxYzM2NjNjYTgxZDQ1NDJhNGIwMmU5YTYzMGM4
MzE2M2QxNTZlYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVu
Y2VzLnlhbWwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbApA
QCAtMTc2NSwxMiArMTc2NSwxMSBAQCBMYXp5SW1hZ2VMb2FkaW5nRW5hYmxlZDoKICAgd2ViY29y
ZUJpbmRpbmc6IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMKICAgY2F0ZWdvcnk6IGV4cGVyaW1lbnRh
bAogCi1Jc0lUUFNlc3Npb25Td2l0Y2hpbmdFbmFibGVkOgorSXNUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmdPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbkVuYWJsZWQ6CiAgIHR5cGU6IGJvb2wK
LSAgZGVmYXVsdFZhbHVlOiB0cnVlCi0gIGh1bWFuUmVhZGFibGVOYW1lOiAiSVRQIFNlc3Npb24g
U3dpdGNoaW5nIgotICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJFbmFibGUgc2Vzc2lvbiBz
d2l0Y2hpbmcgZm9yIGRvbWFpbnMgY2xhc3NpZmllZCBieSBJVFAiCi0gIHdlYmNvcmVCaW5kaW5n
OiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzCisgIGRlZmF1bHRWYWx1ZTogZmFsc2UKKyAgaHVtYW5S
ZWFkYWJsZU5hbWU6ICJCbG9jayAzcCBDb29raWVzIE9uIFNpdGVzIFdpdGhvdXQgSW50ZXJhY3Rp
b24gKElUUCkiCisgIGh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbjogIkJsb2NrIGFsbCB0aGlyZC1w
YXJ0eSBjb29raWVzIG9uIHdlYnNpdGVzIHdpdGhvdXQgdXNlciBpbnRlcmFjdGlvbiIKICAgY2F0
ZWdvcnk6IGludGVybmFsCiAKIElzTG9nZ2VkSW5BUElFbmFibGVkOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKaW5k
ZXggNzQ0ZmNiYTllZTJhMTk2MTc1YTEzYTUxMjc5NDZkZjE0M2UwNGU3Ny4uMjFmMDY2ODQxMzc3
NmZmYmZiNzFjMTc2YjE4NWQ3MTY3NDM3ZTA3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCkBAIC01MzQsNiAr
NTM0LDE3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1Nob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluCiAjZW5kaWYKIH0KIAordm9pZCBXS1dl
YnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBh
cnR5Q29va2llc0ZvclRlc3RpbmcoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwg
Ym9vbCBlbmFibGVkLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmdGdW5j
dGlvbiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQorICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhlbmFibGVk
LCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoY29udGV4dCk7CisgICAgfSk7CisjZWxzZQorICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRl
eHQpOworI2VuZGlmCit9CisKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0
VG9Db25zaXN0ZW50U3RhdGUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9p
ZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50
U3RhdGVGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTKQpAQCAtNTQ2LDYgKzU1Nyw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IGRhCiAgICAgc3RvcmUucmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhb
Y2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsK
ICAgICBzdG9yZS5yZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGlu
ZyhbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9
KTsKICAgICBzdG9yZS5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkRG93bmdyYWRlUmVm
ZXJyZXJGb3JUZXN0aW5nKHRydWUsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3Jl
Z2F0b3IuY29weVJlZigpXSB7IH0pOworICAgIHN0b3JlLnNldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhmYWxzZSwgW2NhbGxiYWNr
QWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiAgICAgc3Rv
cmUucmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBj
YWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogICAgIHN0b3JlLnNjaGVkdWxlQ2xl
YXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoV2ViS2l0OjpTaG91bGRHcmFuZGZhdGhlclN0YXRpc3Rp
Y3M6Ok5vLCBbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYo
KV0geyB9KTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCmluZGV4IGVmNDMzOTg2MDQ0YWExMTQ1MTU3ZjljN2Jk
YmZhZGI0YmRhZmRmM2YuLmM1ZDg1NzlkNmJhOGQwMDJlYWFiOGZkYTNjZTg2N2M0YWZkNmQ4MjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFT
dG9yZVJlZi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURh
dGFTdG9yZVJlZi5oCkBAIC0xMTYsNiArMTE2LDggQEAgdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRl
RGF0YVN0b3JlU3RhdGlzdGljc0hhc0lzb2xhdGVkU2Vzc2lvbkZ1bmN0aW9uKShib29sIGhhc0kK
IFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNJc29sYXRlZFNl
c3Npb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9z
dCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0lzb2xhdGVk
U2Vzc2lvbkZ1bmN0aW9uIGNhbGxiYWNrKTsKIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFT
dG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRl
c3RpbmdGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0KTsKIFdLX0VYUE9SVCB2b2lkIFdL
V2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGREb3duZ3JhZGVS
ZWZlcnJlckZvclRlc3RpbmcoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9v
bCBlbmFibGVkLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nRnVuY3Rpb24gY29t
cGxldGlvbkhhbmRsZXIpOwordHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5n
RnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CitXS19FWFBPUlQgdm9pZCBXS1dlYnNp
dGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5
Q29va2llc0ZvclRlc3RpbmcoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9v
bCBlbmFibGVkLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmdGdW5jdGlv
biBjb21wbGV0aW9uSGFuZGxlcik7CiB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVT
dGF0aXN0aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUZ1bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNv
bnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0
VG9Db25zaXN0ZW50U3RhdGUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9p
ZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50
U3RhdGVGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IGNh
MWY1YWIyNjE4YWRkNDYzNTUwNDRhZTBmZmZmZGI2YTM3NjNlNGQuLjYzZTBjMzE3YTU3YjM4OTM3
NWMyNDU4NjBlY2ExNzgwZTA1NDVjNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTA1Nyw2ICsxMDU3
LDE2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0U2hvdWxkRG93bmdyYWRlUmVmZXJy
ZXJGb3JUZXN0aW5nKGJvb2wgZW5hYmxlZCwgQ29tCiAgICAgCiAgICAgc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJG
b3JUZXN0aW5nKGVuYWJsZWQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CisKK3Zv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0Zv
clRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIGVuYWJsZWQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIWNhblNl
bmRNZXNzYWdlKCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICAKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdv
cmtQcm9jZXNzOjpTZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhzZXNz
aW9uSUQsIGVuYWJsZWQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CiAjZW5kaWYg
Ly8gRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIAogdm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpzZW5kUHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4
IGZiZjJjZTU5ZjhkMDVhZDdkYjg5OTNlMmZiY2QxNGI0NDRkNTE3MmIuLmI2MDJlNDQxNjE1MDc3
MjY4NzFjNDg5ZGMxOGEyYzI2ZmJlZWMxOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0xNTUsNiArMTU1LDcg
QEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFJblVJUHJvY2Vzc0ZvclJlZ2lz
dHJhYmxlRG9tYWlucyhQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4s
IE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgVmVjdG9yPFJlZ2lzdHJhYmxlRG9t
YWluPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluPiYmKT4mJik7CiAgICAgdm9pZCBoYXNJc29sYXRlZFNlc3Npb24oUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJik7CiAgICAgdm9pZCBzZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmcoYm9v
bCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldFNob3VsZEJsb2Nr
VGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBib29sLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2VuZGlmCiAKICAgICB2b2lkIHByb2Nlc3NSZWFkeVRv
U3VzcGVuZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCmluZGV4IGNkNGFi
OWNiMmQ5OWZkNDkwMzg5NDZhM2Q2ZDg4NTI0NDE1ZDk5ZDcuLjc4YzY2YTZmZTUwYTZkMzhhNjJl
MGYyM2M1OWZjMGFhMDRiMTIwZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2Eu
bW0KQEAgLTI5LDYgKzI5LDcgQEAKICNpbXBvcnQgIkNvb2tpZVN0b3JhZ2VVdGlsc0NGLmgiCiAj
aW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJTdG9yYWdlTWFuYWdlci5oIgor
I2ltcG9ydCAiV2ViUHJlZmVyZW5jZXNLZXlzLmgiCiAjaW1wb3J0ICJXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuaCIKICNpbXBvcnQgIldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgi
CiAjaW1wb3J0IDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CkBAIC02OCwxMSArNjksMTIg
QEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVy
cygpCiAgICAgTlNVc2VyRGVmYXVsdHMgKmRlZmF1bHRzID0gW05TVXNlckRlZmF1bHRzIHN0YW5k
YXJkVXNlckRlZmF1bHRzXTsKICAgICBib29sIHNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uID0g
ZmFsc2U7CiAgICAgYm9vbCBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlID0g
ZmFsc2U7Ci0gICAgYm9vbCBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTlNVUkxTZXNzaW9u
U3dpdGNoaW5nID0gV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVy
ZXMoKS5pc0lUUFNlc3Npb25Td2l0Y2hpbmdFbmFibGVkKCk7Ci0gICAgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4gcmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNl
IHsgfTsKKyAgICBib29sIGVuYWJsZVRoaXJkUGFydHlDb29raWVCbG9ja2luZ09uU2l0ZXNXaXRo
b3V0VXNlckludGVyYWN0aW9uID0gZmFsc2U7CiAgICAgYm9vbCBlbmFibGVMZWdhY3lUTFMgPSBb
ZGVmYXVsdHMgYm9vbEZvcktleTpAIldlYktpdEVuYWJsZUxlZ2FjeVRMUyJdOworICAgIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxl
bnRSZXNvdXJjZSB7IH07CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAg
ICBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlID0gW2RlZmF1bHRzIGJvb2xG
b3JLZXk6QCJJVFBEZWJ1Z01vZGUiXTsKKyAgICBlbmFibGVUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmdPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiA9IFtkZWZhdWx0cyBib29sRm9yS2V5OltO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiSW50ZXJuYWxEZWJ1ZyVAIiwgV2ViUHJlZmVyZW5j
ZXNLZXk6OmlzVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nT25TaXRlc1dpdGhvdXRVc2VySW50ZXJh
Y3Rpb25FbmFibGVkS2V5KCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKV1dOwogICAgIGF1dG8qIG1h
bnVhbFByZXZhbGVudFJlc291cmNlID0gW2RlZmF1bHRzIHN0cmluZ0ZvcktleTpAIklUUE1hbnVh
bFByZXZhbGVudFJlc291cmNlIl07CiAgICAgaWYgKG1hbnVhbFByZXZhbGVudFJlc291cmNlKSB7
CiAgICAgICAgIFVSTCB1cmwgeyBVUkwoKSwgbWFudWFsUHJldmFsZW50UmVzb3VyY2UgfTsKQEAg
LTEzNiw3ICsxMzgsNyBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0
b3JlOjpwYXJhbWV0ZXJzKCkKICAgICAgICAgaGFzU3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjaygp
LAogICAgICAgICBzaG91bGRJbmNsdWRlTG9jYWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
LAogICAgICAgICBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlLAotICAgICAg
ICBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTlNVUkxTZXNzaW9uU3dpdGNoaW5nLAorICAg
ICAgICBlbmFibGVUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdPblNpdGVzV2l0aG91dFVzZXJJbnRl
cmFjdGlvbiwKICAgICAgICAgbV9jb25maWd1cmF0aW9uLT5kZXZpY2VNYW5hZ2VtZW50UmVzdHJp
Y3Rpb25zRW5hYmxlZCgpLAogICAgICAgICBtX2NvbmZpZ3VyYXRpb24tPmFsbExvYWRzQmxvY2tl
ZEJ5RGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0ZvclRlc3RpbmcoKSwKICAgICAgICAgV1RG
TW92ZShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2UpLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmNwcAppbmRleCA4Mzc1MWU5MzQ1Y2ZhN2JmZjNhNWE3NDVlYTg4ZjIwMGY5ZmI5ODc2
Li42ZDcxYTFmY2MzMWMzOTIyYzA4MDgwMzY2ZDIyOGQ0MWNiMjVhZmEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmNwcApAQCAtMTc3OCw2ICsxNzc4LDIwIEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluCiAgICAg
fQogICAgIEFTU0VSVCghY29tcGxldGlvbkhhbmRsZXIpOwogfQorCit2b2lkIFdlYnNpdGVEYXRh
U3RvcmU6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29r
aWVzRm9yVGVzdGluZyhib29sIGVuYWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxi
YWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAK
KyAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKKyAgICAgICAg
aWYgKGF1dG8qIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkp
IHsKKyAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzLT5zZXRTaG91bGRCbG9ja1RoaXJkUGFydHlD
b29raWVzRm9yVGVzdGluZyhtX3Nlc3Npb25JRCwgZW5hYmxlZCwgW2NhbGxiYWNrQWdncmVnYXRv
ciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgICAgICAgICBBU1NF
UlQocHJvY2Vzc1Bvb2xzKCkuc2l6ZSgpID09IDEpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICB9CisgICAgQVNTRVJUKCFjb21wbGV0aW9uSGFuZGxlcik7Cit9CiAjZW5kaWYg
Ly8gRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIAogdm9pZCBXZWJzaXRlRGF0YVN0
b3JlOjpzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhTZWNvbmRzIHNlY29u
ZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuaAppbmRleCA5NGRlOWVlY2YzYzU4OTNmOWZhOTJkMmNmYzUzMzE5MDM0ZjI3YmQwLi4zODUz
NWI5ZjBjZjA2MzZhZjI1NjAyN2RjMTdiMzNmZTBlOTRjZmJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0x
OTIsNiArMTkyLDcgQEAgcHVibGljOgogICAgIHZvaWQgaGFzTG9jYWxTdG9yYWdlRm9yVGVzdGlu
Zyhjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBjb25zdDsKICAg
ICB2b2lkIGhhc0lzb2xhdGVkU2Vzc2lvbkZvclRlc3RpbmcoY29uc3QgVVJMJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJikgY29uc3Q7CiAgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKGJvb2wsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoYm9vbCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICNlbmRpZgogICAgIHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQ
cmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIHJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCA4OTMwYjMxMzk1MWI4OGUwYzQxYmZmZDhjMWM4OWY0NWViMWRi
NTRmLi43OWQwZjRkYWM2MmYyNmZkNzFjODQyNTEyZjQ3NjdlZDc2OWMxOTljIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAK
KzIwMTktMTAtMTUgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzIChleHBlcmltZW50YWwpOiBCbG9jayBhbGwgdGhp
cmQtcGFydHkgY29va2llcyBvbiB3ZWJzaXRlcyB3aXRob3V0IHByaW9yIHVzZXIgaW50ZXJhY3Rp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzAx
NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTYyNjI3MDg+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlc2UgY2hhbmdlcyBhcmUgdGVzdCBpbmZy
YXN0cnVjdHVyZSB0byBiZSBhYmxlIHRvIHRvZ2dsZSB0aGUgZnVuY3Rpb24KKyAgICAgICAgdGhy
b3VnaCB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVz
KCkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdz
L1Rlc3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6ZGlk
UmVjZWl2ZU1lc3NhZ2VUb1BhZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNldFN0
YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKToKKyAgICAgICAgKFdUUjo6VGVz
dFJ1bm5lcjo6c3RhdGlzdGljc0NhbGxEaWRTZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVz
Q2FsbGJhY2spOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVz
dFJ1bm5lci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1Nob3VsZEJsb2Nr
VGhpcmRQYXJ0eUNvb2tpZXMpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoK
KyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3Nh
Z2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlk
U2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9UZXN0SW52b2NhdGlvbi5oOgorCiAyMDE5LTEwLTE1ICBBYWthc2ggSmFpbiAgPGFha2Fz
aF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXByb3ZlIHN1bW1hcnkgZm9yIFdlYktpdFBl
cmwgVGVzdHMgYnVpbGQgc3RlcApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKaW5kZXggZTI2YjRm
YThhZTI0ZmVlY2YyZWNjOTExMDBlYjlmMTZiMThhMDQxNC4uZmFlZjBhMDNmYzRiMDU4OWU3NDNj
NjkzZTQ0MjczODQzNjcwNDY3MCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCkBAIC0zNDEs
NiArMzQxLDcgQEAgaW50ZXJmYWNlIFRlc3RSdW5uZXIgewogICAgIHZvaWQgc3RhdGlzdGljc1Jl
c2V0VG9Db25zaXN0ZW50U3RhdGUob2JqZWN0IGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICBib29s
ZWFuIGhhc1N0YXRpc3RpY3NJc29sYXRlZFNlc3Npb24oRE9NU3RyaW5nIGhvc3ROYW1lKTsKICAg
ICB2b2lkIHNldFN0YXRpc3RpY3NTaG91bGREb3duZ3JhZGVSZWZlcnJlcihib29sZWFuIHZhbHVl
LCBvYmplY3QgY2FsbGJhY2spOworICAgIHZvaWQgc2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhp
cmRQYXJ0eUNvb2tpZXMoYm9vbGVhbiB2YWx1ZSwgb2JqZWN0IGNhbGxiYWNrKTsKIAogICAgIC8v
IEluamVjdGVkIGJ1bmRsZSBmb3JtIGNsaWVudC4KICAgICB2b2lkIGluc3RhbGxUZXh0RGlkQ2hh
bmdlSW5UZXh0RmllbGRDYWxsYmFjayhvYmplY3QgY2FsbGJhY2spOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApp
bmRleCBlN2FkMDE1ZjM3ZWJhY2FmOWI0ZjJjOTNlNWJjZDRlZTJjYmU2YzIzLi5mNTJlZDFhYTU3
MzhiNDEyYzczYzM5MmY4YTUwYjM5YTAwZTBjZWRmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtMzMy
LDYgKzMzMiwxMSBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFn
ZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbQogICAgICAgICByZXR1cm47CiAg
ICAgfQogCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUs
ICJDYWxsRGlkU2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyIpKSB7CisgICAgICAgIG1f
dGVzdFJ1bm5lci0+c3RhdGlzdGljc0NhbGxEaWRTZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29r
aWVzQ2FsbGJhY2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmIChXS1N0cmlu
Z0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQ2FsbERpZFJlc2V0U3RhdGlzdGlj
c1RvQ29uc2lzdGVudFN0YXRlIikpIHsKICAgICAgICAgbV90ZXN0UnVubmVyLT5zdGF0aXN0aWNz
Q2FsbERpZFJlc2V0VG9Db25zaXN0ZW50U3RhdGVDYWxsYmFjaygpOwogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVu
bmVyLmNwcAppbmRleCBiYTU5OTNjN2EyMjJmYjMwYTdjMDc1NGNkYmE3NTk2YTJiODEzOWJiLi5i
NGYwYjRiNjNhNGVlZGMzZWMzYTJiZWZmNWQyMTZjZmNiOTE5NmY5IDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTc0
Myw2ICs3NDMsNyBAQCBlbnVtIHsKICAgICBTdGF0aXN0aWNzRGlkUmVzZXRUb0NvbnNpc3RlbnRT
dGF0ZUNhbGxiYWNrSUQsCiAgICAgU3RhdGlzdGljc0RpZFNldEJsb2NrQ29va2llc0Zvckhvc3RD
YWxsYmFja0lELAogICAgIFN0YXRpc3RpY3NEaWRTZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlckNh
bGxiYWNrSUQsCisgICAgU3RhdGlzdGljc0RpZFNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tp
ZXNDYWxsYmFja0lELAogICAgIEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJhY2tJRCwKICAg
ICBEaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHNDYWxsYmFja0lELAogICAgIEdldEFwcGxp
Y2F0aW9uTWFuaWZlc3RDYWxsYmFja0lELApAQCAtMjIwOCw2ICsyMjA5LDIzIEBAIHZvaWQgVGVz
dFJ1bm5lcjo6c3RhdGlzdGljc0NhbGxEaWRTZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlckNhbGxi
YWNrKCkKICAgICBjYWxsVGVzdFJ1bm5lckNhbGxiYWNrKFN0YXRpc3RpY3NEaWRTZXRTaG91bGRE
b3duZ3JhZGVSZWZlcnJlckNhbGxiYWNrSUQpOwogfQogCit2b2lkIFRlc3RSdW5uZXI6OnNldFN0
YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGJvb2wgdmFsdWUsIEpTVmFsdWVS
ZWYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKG1faGFzU2V0QmxvY2tUaGlyZFBhcnR5
Q29va2llc0NhbGxiYWNrKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgY2FjaGVUZXN0UnVu
bmVyQ2FsbGJhY2soU3RhdGlzdGljc0RpZFNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXND
YWxsYmFja0lELCBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
U2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMiKSk7CisgICAgV0tSZXRh
aW5QdHI8V0tCb29sZWFuUmVmPiBtZXNzYWdlQm9keSA9IGFkb3B0V0soV0tCb29sZWFuQ3JlYXRl
KHZhbHVlKSk7CisgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNNZXNzYWdlKEluamVjdGVkQnVu
ZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5
LmdldCgpLCBudWxscHRyKTsKKyAgICBtX2hhc1NldEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNDYWxs
YmFjayA9IHRydWU7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6c3RhdGlzdGljc0NhbGxEaWRTZXRT
aG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzQ2FsbGJhY2soKQoreworICAgIGNhbGxUZXN0UnVu
bmVyQ2FsbGJhY2soU3RhdGlzdGljc0RpZFNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXND
YWxsYmFja0lEKTsKK30KKwogdm9pZCBUZXN0UnVubmVyOjpzdGF0aXN0aWNzQ2FsbENsZWFyVGhy
b3VnaFdlYnNpdGVEYXRhUmVtb3ZhbENhbGxiYWNrKCkKIHsKICAgICBjYWxsVGVzdFJ1bm5lckNh
bGxiYWNrKFN0YXRpc3RpY3NEaWRDbGVhclRocm91Z2hXZWJzaXRlRGF0YVJlbW92YWxDYWxsYmFj
a0lEKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmgKaW5kZXggYzFmMTI0ZjNiMTNjYWU5MWE4OWI3Y2I4NjI1YmI0ODIyOTJkMGI4My4u
ZTAzOTRlNjU4OGUzOWZkMzVmODdiNWI3MzJjNTc2YWMxMmZmZDViZSAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKQEAgLTQ0MCw2
ICs0NDAsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNTdGF0aXN0aWNzSXNvbGF0ZWRTZXNzaW9u
KEpTU3RyaW5nUmVmIGhvc3ROYW1lKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NTaG91bGREb3du
Z3JhZGVSZWZlcnJlcihib29sLCBKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKICAgICB2b2lkIHN0YXRp
c3RpY3NDYWxsRGlkU2V0U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJDYWxsYmFjaygpOworICAgIHZv
aWQgc2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoYm9vbCwgSlNWYWx1
ZVJlZiBjYWxsYmFjayk7CisgICAgdm9pZCBzdGF0aXN0aWNzQ2FsbERpZFNldFNob3VsZEJsb2Nr
VGhpcmRQYXJ0eUNvb2tpZXNDYWxsYmFjaygpOwogICAgIHZvaWQgc3RhdGlzdGljc1Jlc2V0VG9D
b25zaXN0ZW50U3RhdGUoSlNWYWx1ZVJlZiBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCBz
dGF0aXN0aWNzQ2FsbERpZFJlc2V0VG9Db25zaXN0ZW50U3RhdGVDYWxsYmFjaygpOwogCkBAIC01
NzMsNiArNTc1LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fdXNlclN0eWxlU2hlZXRFbmFibGVk
IHsgZmFsc2UgfTsKICAgICBib29sIG1fZHVtcEFsbEhUVFBSZWRpcmVjdGVkUmVzcG9uc2VIZWFk
ZXJzIHsgZmFsc2UgfTsKICAgICBib29sIG1faGFzU2V0RG93bmdyYWRlUmVmZXJyZXJDYWxsYmFj
ayB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc1NldEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNDYWxs
YmFjayB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggZTlkNDI4ZTgzNGY2ZGNjZGU5NzNlMmVl
ZThiNTIyZjg5MzRmZDA2MS4uMjgyMWVkMTJkMGE5ZTU0ZWRiODVjZWQ0MThiNzA4NjQzODZiOGYx
ZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTM1NTMs
NiArMzU1MywxNCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzU2hvdWxkRG93
bmdyYWRlUmVmZXJyZXIoYm9vbCB2YWx1ZSkKICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRT
ZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlcigpOwogfQogCit2b2lkIFRlc3RDb250cm9sbGVyOjpz
ZXRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhib29sIHZhbHVlKQorewor
ICAgIFJlc291cmNlU3RhdGlzdGljc0NhbGxiYWNrQ29udGV4dCBjb250ZXh0KCp0aGlzKTsKKyAg
ICBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkQmxvY2tU
aGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoVGVzdENvbnRyb2xsZXI6OndlYnNpdGVEYXRhU3Rv
cmUoKSwgdmFsdWUsICZjb250ZXh0LCByZXNvdXJjZVN0YXRpc3RpY3NWb2lkUmVzdWx0Q2FsbGJh
Y2spOworICAgIHJ1blVudGlsKGNvbnRleHQuZG9uZSwgbm9UaW1lb3V0KTsKKyAgICBtX2N1cnJl
bnRJbnZvY2F0aW9uLT5kaWRTZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKCk7Cit9CisK
IHZvaWQgVGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NSZXNldFRvQ29uc2lzdGVudFN0YXRlKCkK
IHsKICAgICBSZXNvdXJjZVN0YXRpc3RpY3NDYWxsYmFja0NvbnRleHQgY29udGV4dCgqdGhpcyk7
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXggNGJmOTAyM2FiNzIy
YTA5MTAxZWQyNTBmYjgyOGNiN2YyYWI1YTQ2ZS4uNjgwZDJlMjQ2MTcxY2M2NmNjMzZiZmFiNGVl
ZDgzZDU3ZGJhYWU0OSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApA
QCAtMjUyLDYgKzI1Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFN0YXRpc3RpY3NDYWNoZU1h
eEFnZUNhcChkb3VibGUgc2Vjb25kcyk7CiAgICAgYm9vbCBoYXNTdGF0aXN0aWNzSXNvbGF0ZWRT
ZXNzaW9uKFdLU3RyaW5nUmVmIGhvc3ROYW1lKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NTaG91
bGREb3duZ3JhZGVSZWZlcnJlcihib29sIHZhbHVlKTsKKyAgICB2b2lkIHNldFN0YXRpc3RpY3NT
aG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGJvb2wgdmFsdWUpOwogICAgIHZvaWQgc3RhdGlz
dGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoKTsKIAogICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFj
Y2Vzc0VudHJpZXMoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdElu
dm9jYXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAK
aW5kZXggOGZlOTI3OWNmZWYxMGI0OWE0NjNlZDI2MjIyZDZjNjAwMjc0MjczYy4uODY1OGFlZWYy
NjViZGE1MjBiOThlYWNmYjVmZWVkYjdkYTU4NTRmYyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTE1NDIsNiArMTU0MiwxMyBAQCBXS1JldGFpblB0cjxX
S1R5cGVSZWY+IFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJv
bUluamVjdGVkQgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgCisgICAgaWYg
KFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRTdGF0aXN0aWNz
U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyIpKSB7CisgICAgICAgIEFTU0VSVChXS0dldFR5
cGVJRChtZXNzYWdlQm9keSkgPT0gV0tCb29sZWFuR2V0VHlwZUlEKCkpOworICAgICAgICBXS0Jv
b2xlYW5SZWYgdmFsdWUgPSBzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KG1lc3NhZ2VCb2R5KTsK
KyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNldFN0YXRpc3RpY3NTaG91bGRC
bG9ja1RoaXJkUGFydHlDb29raWVzKFdLQm9vbGVhbkdldFZhbHVlKHZhbHVlKSk7CisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIH0KKyAgICAKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9V
VEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscyIpKSB7
CiAgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5yZW1vdmVBbGxTZXNzaW9uQ3Jl
ZGVudGlhbHMoKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xODI1LDYgKzE4MzIsMTIg
QEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkU2V0U2hvdWxkRG93bmdyYWRlUmVmZXJyZXIoKQog
ICAgIFdLUGFnZVBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2lu
Z2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgMCk7CiB9
CiAKK3ZvaWQgVGVzdEludm9jYXRpb246OmRpZFNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tp
ZXMoKQoreworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0
V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkNhbGxEaWRTZXRTaG91bGRCbG9ja1Ro
aXJkUGFydHlDb29raWVzIikpOworICAgIFdLUGFnZVBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRs
ZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpLCBtZXNz
YWdlTmFtZS5nZXQoKSwgMCk7Cit9CisKIHZvaWQgVGVzdEludm9jYXRpb246OmRpZFJlc2V0U3Rh
dGlzdGljc1RvQ29uc2lzdGVudFN0YXRlKCkKIHsKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1Jl
Zj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJD
YWxsRGlkUmVzZXRTdGF0aXN0aWNzVG9Db25zaXN0ZW50U3RhdGUiKSk7CmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmggYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKaW5kZXggYTI2NWViOWIyNmU5NGQxZTRhOGZmZGNlZjVk
ZTI5NDM5NTFiYjQwNS4uNzgwNmZhMjk3ZGYyZTAxNmE2YjhiNGEwNjZjNTY2ZTNhNjhhZjJmMSAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaApAQCAtNzQsNiArNzQsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGRpZENsZWFyU3RhdGlzdGljc1Rocm91Z2hXZWJzaXRlRGF0
YVJlbW92YWwoKTsKICAgICB2b2lkIGRpZFNldFNob3VsZERvd25ncmFkZVJlZmVycmVyKCk7Cisg
ICAgdm9pZCBkaWRTZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKCk7CiAgICAgdm9pZCBk
aWRSZXNldFN0YXRpc3RpY3NUb0NvbnNpc3RlbnRTdGF0ZSgpOwogICAgIHZvaWQgZGlkU2V0Qmxv
Y2tDb29raWVzRm9ySG9zdCgpOwogICAgIHZvaWQgZGlkU2V0U3RhdGlzdGljc0RlYnVnTW9kZSgp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDYwYzYxNjBmYmI5OGIzNTcyM2VlNzgyNmVkMmU3YjY4ZDA0NjJhNjcuLmQxMWY0
NTdkMjIzODcyZWY1NjNiOTU3M2JhYzUwYTVkMjVlNWMyNTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBA
QAorMjAxOS0xMC0xNSAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3MgKGV4cGVyaW1lbnRhbCk6IEJsb2NrIGFsbCB0
aGlyZC1wYXJ0eSBjb29raWVzIG9uIHdlYnNpdGVzIHdpdGhvdXQgcHJpb3IgdXNlciBpbnRlcmFj
dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAz
MDE3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NjI2MjcwOD4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy90aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmctb24tc2l0ZXMtd2l0aG91dC11
c2VyLWludGVyYWN0aW9uLWRhdGFiYXNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3RoaXJkLXBhcnR5LWNvb2tpZS1ibG9j
a2luZy1vbi1zaXRlcy13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24tZGF0YWJhc2UuaHRtbDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3RoaXJkLXBh
cnR5LWNvb2tpZS1ibG9ja2luZy1vbi1zaXRlcy13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24tZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvdGhpcmQtcGFydHktY29va2llLWJsb2NraW5nLW9uLXNpdGVzLXdpdGhvdXQtdXNlci1p
bnRlcmFjdGlvbi5odG1sOiBBZGRlZC4KKwogMjAxOS0xMC0xNSAgQ2FybG9zIEFsYmVydG8gTG9w
ZXogUGVyZXogIDxjbG9wZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBJbXBvcnQgYXBuZyB0ZXN0
Y2FzZXMgZnJvbSBXUFQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvdGhpcmQtcGFydHktY29va2llLWJsb2NraW5nLW9uLXNpdGVzLXdp
dGhvdXQtdXNlci1pbnRlcmFjdGlvbi1kYXRhYmFzZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdGhpcmQtcGFydHktY29va2llLWJs
b2NraW5nLW9uLXNpdGVzLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi1kYXRhYmFzZS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYTdmZWQzYTVjZGIwMTE1ZTRhMDk0NDI5Yjk1YTgxODFjZmY5NGYy
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy90aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmctb24tc2l0ZXMtd2l0aG91dC11
c2VyLWludGVyYWN0aW9uLWRhdGFiYXNlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI1IEBACitU
ZXN0cyB0aGF0IGFsbCB0aGlyZC1wYXJ0eSBjb29raWVzIGFyZSBibG9ja2VkIHVuZGVyIHdlYnNp
dGVzIHRoYXQgaGF2ZSBub3QgcmVjZWl2ZWQgdXNlciBpbnRlcmFjdGlvbi4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorICAKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lMS0tPicKKy0t
LS0tLS0tCitCZWZvcmUgdXNlciBpbnRlcmFjdGlvbiwgc2hvdWxkIHJlY2VpdmUgbm8gY29va2ll
cy4KK0RpZCBub3QgcmVjZWl2ZSBjb29raWUgbmFtZWQgJ2ZpcnN0UGFydHlDb29raWUnLgorRGlk
IG5vdCByZWNlaXZlIGNvb2tpZSBuYW1lZCAncGFydGl0aW9uZWRDb29raWUnLgorQ2xpZW50LXNp
ZGUgZG9jdW1lbnQuY29va2llOgorCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWUyLS0+Jwor
LS0tLS0tLS0KK0FmdGVyIHVzZXIgaW50ZXJhY3Rpb24sIHNob3VsZCByZWNlaXZlIGZpcnN0LXBh
cnR5IGNvb2tpZS4KK1JlY2VpdmVkIGNvb2tpZSBuYW1lZCAnZmlyc3RQYXJ0eUNvb2tpZScuCitE
aWQgbm90IHJlY2VpdmUgY29va2llIG5hbWVkICdwYXJ0aXRpb25lZENvb2tpZScuCitDbGllbnQt
c2lkZSBkb2N1bWVudC5jb29raWU6IGZpcnN0UGFydHlDb29raWU9dmFsdWUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy90aGlyZC1wYXJ0
eS1jb29raWUtYmxvY2tpbmctb24tc2l0ZXMtd2l0aG91dC11c2VyLWludGVyYWN0aW9uLWRhdGFi
YXNlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
dGhpcmQtcGFydHktY29va2llLWJsb2NraW5nLW9uLXNpdGVzLXdpdGhvdXQtdXNlci1pbnRlcmFj
dGlvbi1kYXRhYmFzZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZjOTIzM2MwNGYxNmQ1NGRmNTc3YWMyYmNh
NDM5ZmRlYTUwYjc3NjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdGhpcmQtcGFydHktY29va2llLWJsb2NraW5nLW9uLXNp
dGVzLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi1kYXRhYmFzZS5odG1sCkBAIC0wLDAgKzEsNzgg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWwgbGFuZz0iZW4iPgorPGhlYWQ+CisgICAgPG1ldGEg
Y2hhcnNldD0iVVRGLTgiPgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMt
dGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy91dGlsLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGVz
dHMgdGhhdCBhbGwgdGhpcmQtcGFydHkgY29va2llcyBhcmUgYmxvY2tlZCB1bmRlciB3ZWJzaXRl
cyB0aGF0IGhhdmUgbm90IHJlY2VpdmVkIHVzZXIgaW50ZXJhY3Rpb24uIik7CisgICAganNUZXN0
SXNBc3luYyA9IHRydWU7CisKKyAgICBjb25zdCBwYXJ0aXRpb25Ib3N0ID0gIjEyNy4wLjAuMTo4
MDAwIjsKKyAgICBjb25zdCBwYXJ0aXRpb25PcmlnaW4gPSAiaHR0cDovLyIgKyBwYXJ0aXRpb25I
b3N0OworICAgIGNvbnN0IHRoaXJkUGFydHlPcmlnaW4gPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAw
IjsKKyAgICBjb25zdCByZXNvdXJjZVBhdGggPSAiL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVz
b3VyY2VzIjsKKyAgICBjb25zdCB0aGlyZFBhcnR5QmFzZVVybCA9IHRoaXJkUGFydHlPcmlnaW4g
KyByZXNvdXJjZVBhdGg7CisgICAgY29uc3QgZmlyc3RQYXJ0eUNvb2tpZU5hbWUgPSAiZmlyc3RQ
YXJ0eUNvb2tpZSI7CisgICAgY29uc3Qgc3ViUGF0aFRvU2V0Rmlyc3RQYXJ0eUNvb2tpZSA9ICIv
c2V0LWNvb2tpZS5waHA/bmFtZT0iICsgZmlyc3RQYXJ0eUNvb2tpZU5hbWUgKyAiJnZhbHVlPXZh
bHVlIjsKKyAgICBjb25zdCBwYXJ0aXRpb25lZENvb2tpZU5hbWUgPSAicGFydGl0aW9uZWRDb29r
aWUiOworICAgIGNvbnN0IHN1YlBhdGhUb1NldFBhcnRpdGlvbmVkQ29va2llID0gIi9zZXQtY29v
a2llLnBocD9uYW1lPSIgKyBwYXJ0aXRpb25lZENvb2tpZU5hbWUgKyAiJnZhbHVlPXZhbHVlIjsK
KyAgICBjb25zdCByZXR1cm5VcmwgPSBwYXJ0aXRpb25PcmlnaW4gKyAiL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvdGhpcmQtcGFydHktY29va2llLWJsb2NraW5nLW9uLXNpdGVzLXdpdGhvdXQtdXNl
ci1pbnRlcmFjdGlvbi5odG1sIjsKKyAgICBjb25zdCBzdWJQYXRoVG9HZXRDb29raWVzID0gIi9n
ZXQtY29va2llcy5waHA/bmFtZTE9IiArIGZpcnN0UGFydHlDb29raWVOYW1lICsgIiZuYW1lMj0i
ICsgcGFydGl0aW9uZWRDb29raWVOYW1lOworCisgICAgZnVuY3Rpb24gb3BlbklmcmFtZSh1cmws
IG9uTG9hZEhhbmRsZXIpIHsKKyAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImlmcmFtZSIpOworICAgICAgICBlbGVtZW50LnNyYyA9IHVybDsKKyAgICAgICAg
aWYgKG9uTG9hZEhhbmRsZXIpIHsKKyAgICAgICAgICAgIGVsZW1lbnQub25sb2FkID0gb25Mb2Fk
SGFuZGxlcjsKKyAgICAgICAgfQorICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVs
ZW1lbnQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIHN3aXRj
aCAoZG9jdW1lbnQubG9jYXRpb24uaGFzaCkgeworICAgICAgICAgICAgY2FzZSAiI3N0ZXAxIjoK
KyAgICAgICAgICAgICAgICAvLyBTZXQgZmlyc3QtcGFydHkgY29va2llIGZvciBsb2NhbGhvc3Qu
CisgICAgICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaHJlZiA9IHRoaXJkUGFydHlCYXNl
VXJsICsgc3ViUGF0aFRvU2V0Rmlyc3RQYXJ0eUNvb2tpZSArICIjIiArIHJldHVyblVybCArICIj
c3RlcDIiOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAiI3N0ZXAy
IjoKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0gInN0ZXAzIjsKKyAg
ICAgICAgICAgICAgICAvLyBDaGVjayB0aGF0IHRoZSBjb29raWUgaXMgYmxvY2tlZCBmb3IgbG9j
YWxob3N0IHVuZGVyIDEyNy4wLjAuMSBldmVuIHRob3VnaCBsb2NhbGhvc3QgaXMgbm90IHByZXZh
bGVudC4KKyAgICAgICAgICAgICAgICBvcGVuSWZyYW1lKHRoaXJkUGFydHlCYXNlVXJsICsgc3Vi
UGF0aFRvR2V0Q29va2llcyArICImbWVzc2FnZT1CZWZvcmUgdXNlciBpbnRlcmFjdGlvbiwgc2hv
dWxkIHJlY2VpdmUgbm8gY29va2llcy4iLCBydW5UZXN0KTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgIiNzdGVwMyI6CisgICAgICAgICAgICAgICAgZG9jdW1lbnQu
bG9jYXRpb24uaGFzaCA9ICJzdGVwNCI7CisgICAgICAgICAgICAgICAgLy8gUHJvZHVjZSB1c2Vy
IGludGVyYWN0aW9uIGZvciB0aGUgZmlyc3QtcGFydHkgdG8gYWxsb3cgdGhpcmQtcGFydHkgY29v
a2llIGFjY2Vzcy4KKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NIYXNI
YWRVc2VySW50ZXJhY3Rpb24ocGFydGl0aW9uT3JpZ2luLCB0cnVlLCBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzVXBkYXRlQ29va2llQmxvY2tp
bmcoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayB0aGF0IHRo
ZSBjb29raWUgaXMgbm8gbG9uZ2VyIGJsb2NrZWQgZm9yIGxvY2FsaG9zdCB1bmRlciAxMjcuMC4w
LjEuCisgICAgICAgICAgICAgICAgICAgICAgICBvcGVuSWZyYW1lKHRoaXJkUGFydHlCYXNlVXJs
ICsgc3ViUGF0aFRvR2V0Q29va2llcyArICAiJm1lc3NhZ2U9QWZ0ZXIgdXNlciBpbnRlcmFjdGlv
biwgc2hvdWxkIHJlY2VpdmUgZmlyc3QtcGFydHkgY29va2llLiIsIHJ1blRlc3QpOworICAgICAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgIiNzdGVwNCI6CisgICAgICAgICAgICAgICAgdGVzdFJ1
bm5lci5zZXRVc2VJVFBEYXRhYmFzZShmYWxzZSk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5l
ci5zZXRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhmYWxzZSwgZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlz
aEpTVGVzdCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9PT0gIiIp
IHsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRVc2VJVFBEYXRhYmFzZSh0cnVlKTsKKyAgICAgICAg
c2V0RW5hYmxlRmVhdHVyZSh0cnVlLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBpZiAodGVz
dFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZSh0aGlyZFBhcnR5T3JpZ2luKSkK
KyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJMb2NhbGhvc3Qgd2FzIGNsYXNzaWZpZWQgYXMg
cHJldmFsZW50IHJlc291cmNlIGJlZm9yZSB0aGUgdGVzdCBzdGFydHMuIik7CisgICAgICAgICAg
ICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworICAgICAgICAgICAgZG9jdW1l
bnQubG9jYXRpb24uaGFzaCA9ICJzdGVwMSI7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0
YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKHRydWUsIHJ1blRlc3QpOworICAg
ICAgICB9KTsKKyAgICB9IGVsc2UgeworICAgICAgICBydW5UZXN0KCk7CisgICAgfQorPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdGhpcmQtcGFydHktY29va2llLWJsb2NraW5nLW9uLXNp
dGVzLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdGhpcmQtcGFydHktY29va2llLWJsb2Nr
aW5nLW9uLXNpdGVzLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYTdmZWQzYTVjZGIwMTE1ZTRhMDk0NDI5Yjk1YTgxODFjZmY5NGYyYwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy90
aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmctb24tc2l0ZXMtd2l0aG91dC11c2VyLWludGVyYWN0
aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI1IEBACitUZXN0cyB0aGF0IGFsbCB0aGlyZC1w
YXJ0eSBjb29raWVzIGFyZSBibG9ja2VkIHVuZGVyIHdlYnNpdGVzIHRoYXQgaGF2ZSBub3QgcmVj
ZWl2ZWQgdXNlciBpbnRlcmFjdGlvbi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorICAKKwor
LS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lMS0tPicKKy0tLS0tLS0tCitCZWZvcmUgdXNlciBp
bnRlcmFjdGlvbiwgc2hvdWxkIHJlY2VpdmUgbm8gY29va2llcy4KK0RpZCBub3QgcmVjZWl2ZSBj
b29raWUgbmFtZWQgJ2ZpcnN0UGFydHlDb29raWUnLgorRGlkIG5vdCByZWNlaXZlIGNvb2tpZSBu
YW1lZCAncGFydGl0aW9uZWRDb29raWUnLgorQ2xpZW50LXNpZGUgZG9jdW1lbnQuY29va2llOgor
CistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWUyLS0+JworLS0tLS0tLS0KK0FmdGVyIHVzZXIg
aW50ZXJhY3Rpb24sIHNob3VsZCByZWNlaXZlIGZpcnN0LXBhcnR5IGNvb2tpZS4KK1JlY2VpdmVk
IGNvb2tpZSBuYW1lZCAnZmlyc3RQYXJ0eUNvb2tpZScuCitEaWQgbm90IHJlY2VpdmUgY29va2ll
IG5hbWVkICdwYXJ0aXRpb25lZENvb2tpZScuCitDbGllbnQtc2lkZSBkb2N1bWVudC5jb29raWU6
IGZpcnN0UGFydHlDb29raWU9dmFsdWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy90aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmctb24t
c2l0ZXMtd2l0aG91dC11c2VyLWludGVyYWN0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdGhpcmQtcGFydHktY29va2llLWJsb2NraW5nLW9u
LXNpdGVzLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkZjczMjM2
MTEzOWUwOGMwOWMzMzdhZjEyN2NjYjQ4YWMyZDg5ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdGhpcmQtcGFydHktY29v
a2llLWJsb2NraW5nLW9uLXNpdGVzLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi5odG1sCkBAIC0w
LDAgKzEsNzYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWwgbGFuZz0iZW4iPgorPGhlYWQ+Cisg
ICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNv
dXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy91
dGlsLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KKyAgICBkZXNjcmlw
dGlvbigiVGVzdHMgdGhhdCBhbGwgdGhpcmQtcGFydHkgY29va2llcyBhcmUgYmxvY2tlZCB1bmRl
ciB3ZWJzaXRlcyB0aGF0IGhhdmUgbm90IHJlY2VpdmVkIHVzZXIgaW50ZXJhY3Rpb24uIik7Cisg
ICAganNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICBjb25zdCBwYXJ0aXRpb25Ib3N0ID0gIjEy
Ny4wLjAuMTo4MDAwIjsKKyAgICBjb25zdCBwYXJ0aXRpb25PcmlnaW4gPSAiaHR0cDovLyIgKyBw
YXJ0aXRpb25Ib3N0OworICAgIGNvbnN0IHRoaXJkUGFydHlPcmlnaW4gPSAiaHR0cDovL2xvY2Fs
aG9zdDo4MDAwIjsKKyAgICBjb25zdCByZXNvdXJjZVBhdGggPSAiL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvcmVzb3VyY2VzIjsKKyAgICBjb25zdCB0aGlyZFBhcnR5QmFzZVVybCA9IHRoaXJkUGFy
dHlPcmlnaW4gKyByZXNvdXJjZVBhdGg7CisgICAgY29uc3QgZmlyc3RQYXJ0eUNvb2tpZU5hbWUg
PSAiZmlyc3RQYXJ0eUNvb2tpZSI7CisgICAgY29uc3Qgc3ViUGF0aFRvU2V0Rmlyc3RQYXJ0eUNv
b2tpZSA9ICIvc2V0LWNvb2tpZS5waHA/bmFtZT0iICsgZmlyc3RQYXJ0eUNvb2tpZU5hbWUgKyAi
JnZhbHVlPXZhbHVlIjsKKyAgICBjb25zdCBwYXJ0aXRpb25lZENvb2tpZU5hbWUgPSAicGFydGl0
aW9uZWRDb29raWUiOworICAgIGNvbnN0IHN1YlBhdGhUb1NldFBhcnRpdGlvbmVkQ29va2llID0g
Ii9zZXQtY29va2llLnBocD9uYW1lPSIgKyBwYXJ0aXRpb25lZENvb2tpZU5hbWUgKyAiJnZhbHVl
PXZhbHVlIjsKKyAgICBjb25zdCByZXR1cm5VcmwgPSBwYXJ0aXRpb25PcmlnaW4gKyAiL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvdGhpcmQtcGFydHktY29va2llLWJsb2NraW5nLW9uLXNpdGVzLXdp
dGhvdXQtdXNlci1pbnRlcmFjdGlvbi5odG1sIjsKKyAgICBjb25zdCBzdWJQYXRoVG9HZXRDb29r
aWVzID0gIi9nZXQtY29va2llcy5waHA/bmFtZTE9IiArIGZpcnN0UGFydHlDb29raWVOYW1lICsg
IiZuYW1lMj0iICsgcGFydGl0aW9uZWRDb29raWVOYW1lOworCisgICAgZnVuY3Rpb24gb3Blbklm
cmFtZSh1cmwsIG9uTG9hZEhhbmRsZXIpIHsKKyAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgICAgICBlbGVtZW50LnNyYyA9IHVybDsK
KyAgICAgICAgaWYgKG9uTG9hZEhhbmRsZXIpIHsKKyAgICAgICAgICAgIGVsZW1lbnQub25sb2Fk
ID0gb25Mb2FkSGFuZGxlcjsKKyAgICAgICAgfQorICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVu
ZENoaWxkKGVsZW1lbnQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAg
ICAgIHN3aXRjaCAoZG9jdW1lbnQubG9jYXRpb24uaGFzaCkgeworICAgICAgICAgICAgY2FzZSAi
I3N0ZXAxIjoKKyAgICAgICAgICAgICAgICAvLyBTZXQgZmlyc3QtcGFydHkgY29va2llIGZvciBs
b2NhbGhvc3QuCisgICAgICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaHJlZiA9IHRoaXJk
UGFydHlCYXNlVXJsICsgc3ViUGF0aFRvU2V0Rmlyc3RQYXJ0eUNvb2tpZSArICIjIiArIHJldHVy
blVybCArICIjc3RlcDIiOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSAiI3N0ZXAyIjoKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0gInN0
ZXAzIjsKKyAgICAgICAgICAgICAgICAvLyBDaGVjayB0aGF0IHRoZSBjb29raWUgaXMgYmxvY2tl
ZCBmb3IgbG9jYWxob3N0IHVuZGVyIDEyNy4wLjAuMSBldmVuIHRob3VnaCBsb2NhbGhvc3QgaXMg
bm90IHByZXZhbGVudC4KKyAgICAgICAgICAgICAgICBvcGVuSWZyYW1lKHRoaXJkUGFydHlCYXNl
VXJsICsgc3ViUGF0aFRvR2V0Q29va2llcyArICImbWVzc2FnZT1CZWZvcmUgdXNlciBpbnRlcmFj
dGlvbiwgc2hvdWxkIHJlY2VpdmUgbm8gY29va2llcy4iLCBydW5UZXN0KTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgIiNzdGVwMyI6CisgICAgICAgICAgICAgICAg
ZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9ICJzdGVwNCI7CisgICAgICAgICAgICAgICAgLy8gUHJv
ZHVjZSB1c2VyIGludGVyYWN0aW9uIGZvciB0aGUgZmlyc3QtcGFydHkgdG8gYWxsb3cgdGhpcmQt
cGFydHkgY29va2llIGFjY2Vzcy4KKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRp
c3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24ocGFydGl0aW9uT3JpZ2luLCB0cnVlLCBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzVXBkYXRlQ29v
a2llQmxvY2tpbmcoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBDaGVj
ayB0aGF0IHRoZSBjb29raWUgaXMgbm8gbG9uZ2VyIGJsb2NrZWQgZm9yIGxvY2FsaG9zdCB1bmRl
ciAxMjcuMC4wLjEuCisgICAgICAgICAgICAgICAgICAgICAgICBvcGVuSWZyYW1lKHRoaXJkUGFy
dHlCYXNlVXJsICsgc3ViUGF0aFRvR2V0Q29va2llcyArICAiJm1lc3NhZ2U9QWZ0ZXIgdXNlciBp
bnRlcmFjdGlvbiwgc2hvdWxkIHJlY2VpdmUgZmlyc3QtcGFydHkgY29va2llLiIsIHJ1blRlc3Qp
OworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgIiNzdGVwNCI6CisgICAgICAgICAgICAg
ICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhm
YWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUo
ZmFsc2UsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24u
aGFzaCA9PT0gIiIpIHsKKyAgICAgICAgc2V0RW5hYmxlRmVhdHVyZSh0cnVlLCBmdW5jdGlvbiAo
KSB7CisgICAgICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNv
dXJjZSh0aGlyZFBhcnR5T3JpZ2luKSkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJMb2Nh
bGhvc3Qgd2FzIGNsYXNzaWZpZWQgYXMgcHJldmFsZW50IHJlc291cmNlIGJlZm9yZSB0aGUgdGVz
dCBzdGFydHMuIik7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4
dCgpOworICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9ICJzdGVwMSI7CisgICAg
ICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29r
aWVzKHRydWUsIHJ1blRlc3QpOworICAgICAgICB9KTsKKyAgICB9IGVsc2UgeworICAgICAgICBy
dW5UZXN0KCk7CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381113</attachid>
            <date>2019-10-16 14:51:48 -0700</date>
            <delta_ts>2019-10-16 15:39:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203017-20191016145148.patch</filename>
            <type>text/plain</type>
            <size>67821</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzM5MThlOTM4NmIzMGEy
OTY0NjljM2ZjMTcxZWI0MzZjZjBiMWMzNi4uYTA1ZGIxMDQwYzc4YjRmNDE3ZWJlMzU4ZjcyYjUx
NjMxM2IwNmQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE5LTEwLTE2ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlIExvYWQg
U3RhdGlzdGljcyAoZXhwZXJpbWVudGFsKTogQmxvY2sgYWxsIHRoaXJkLXBhcnR5IGNvb2tpZXMg
b24gd2Vic2l0ZXMgd2l0aG91dCBwcmlvciB1c2VyIGludGVyYWN0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDMwMTcKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzU2MjYyNzA4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hvdWxkQmxvY2tDb29raWVzKCkg
bm93IGNoZWNrcyBpZiB0aGUgZmlyc3QtcGFydHkgd2Vic2l0ZSBoYXMKKyAgICAgICAgcmVjZWl2
ZWQgdXNlciBpbnRlcmFjdGlvbiBhbmQgaWYgbm90LCBibG9ja3MgYWxsIHRoaXJkLXBhcnR5IGNv
b2tpZXMsIHJlZ2FyZGxlc3Mgb2YgdGhlCisgICAgICAgIHN0YXR1cyBvZiB0aG9zZSB0aGlyZC1w
YXJ0eSBkb21haW5zIChwcmV2YWxlbnQgb3Igbm90KS4KKworICAgICAgICBCdW5kbGVkIGNsZWFu
dXAgdGFzazogUmVtb3ZlIHRoZSB0d28gbW9udGggb2xkIGZlYXR1cmUgZmxhZyBmb3IgTlNVUkxT
ZXNzaW9uIHN3aXRjaGluZy4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL3RoaXJkLXBhcnR5LWNvb2tpZS1ibG9ja2luZy1vbi1zaXRlcy13aXRob3V0
LXVzZXItaW50ZXJhY3Rpb24tZGF0YWJhc2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3RoaXJkLXBhcnR5LWNvb2tpZS1ibG9ja2luZy1vbi1z
aXRlcy13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24uaHRtbAorCisgICAgICAgICogcGFnZS9SdW50
aW1lRW5hYmxlZEZlYXR1cmVzLmg6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzZXRJc0lUUFNlc3Npb25Td2l0Y2hpbmdFbmFibGVkKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzSVRQU2Vzc2lvblN3aXRjaGlu
Z0VuYWJsZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MueWFtbDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246Omhhc0hhZFVzZXJJbnRlcmFj
dGlvbkFzRmlyc3RQYXJ0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnNob3VsZEJsb2NrQ29va2llcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldERvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uQXNGaXJz
dFBhcnR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bi5oOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRJc1RoaXJk
UGFydHlDb29raWVCbG9ja2luZ09uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uRW5hYmxlZCk6
CisKIDIwMTktMTAtMTYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBbV0syXSBIYW5kbGUgYmFjay9mb3J3YXJkIGNhY2hlIGVudHJ5IGV4cGlyYXRpb24gaW4gdGhl
IFVJUHJvY2VzcyBpbnN0ZWFkIG9mIHRoZSBXZWJQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRmZmNlYmJl
MjMyNzQzNzEyYzhjYjkzMmM5YjE3MDdmNWFhMjM2NGYuLjU2NGViM2NhNWY1ZjExOTg5NWY2YmVh
YjAxMDM3ZjI3NzI5YmNkYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzEgQEAKKzIwMTktMTAtMTYg
IEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzb3VyY2Ug
TG9hZCBTdGF0aXN0aWNzIChleHBlcmltZW50YWwpOiBCbG9jayBhbGwgdGhpcmQtcGFydHkgY29v
a2llcyBvbiB3ZWJzaXRlcyB3aXRob3V0IHByaW9yIHVzZXIgaW50ZXJhY3Rpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzAxNworICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNTYyNjI3MDg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBlbmhhbmNlbWVudCBpcyBvZmYgYnkgZGVmYXVsdCBhbmQg
Y29udHJvbGxlZCBieSBhbiBpbnRlcm5hbCBmZWF0dXJlIGZsYWcuCisKKyAgICAgICAgVGhlIGZ1
bmN0aW9uYWwgY2hhbmdlIGlzIGluIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hv
dWxkQmxvY2tDb29raWVzKCkgd2hpY2ggaXMKKyAgICAgICAgY2FsbGVkIGZyb206CisgICAgICAg
IC0gTmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKCkKKyAgICAgICAg
LSBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24KKworICAg
ICAgICBzaG91bGRCbG9ja0Nvb2tpZXMoKSBub3cgY2hlY2tzIGlmIHRoZSBmaXJzdC1wYXJ0eSB3
ZWJzaXRlIGhhcyByZWNlaXZlZCB1c2VyIGludGVyYWN0aW9uCisgICAgICAgIGFuZCBpZiBub3Qs
IGJsb2NrcyBhbGwgdGhpcmQtcGFydHkgY29va2llcywgcmVnYXJkbGVzcyBvZiB0aGUgc3RhdHVz
IG9mIHRob3NlIHRoaXJkLXBhcnR5CisgICAgICAgIGRvbWFpbnMgKHByZXZhbGVudCBvciBub3Qp
LgorCisgICAgICAgIFRoZSBjaGFuZ2VzIHRvIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlIGFuZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUKKyAgICAgICAgYXJl
IGFib3V0IGNvbW11bmljYXRpbmcgd2hpY2ggZG9tYWlucyBoYXZlIHJlY2VpdmVkIHVzZXIgaW50
ZXJhY3Rpb24gKHByZXZhbGVudCBvciBub3QpCisgICAgICAgIHRvIHRoZSBuZXR3b3JrIHN0b3Jh
Z2Ugc2Vzc2lvbiBzbyB0aGF0IGl0IGNhbiBlbmZvcmNlIHRoZSBuZXcgcmVzdHJpY3Rpb24uCisK
KyAgICAgICAgVGhlIEMgQVBJIGNoYW5nZSBhbmQgcGlwaW5nIHRocm91Z2ggdGhlIFdlYnNpdGVE
YXRhU3RvcmUgaXMgdGVzdCBpbmZyYXN0cnVjdHVyZS4KKworICAgICAgICBCdW5kbGVkIGNsZWFu
dXAgdGFzazogUmVtb3ZlIHRoZSB0d28gbW9udGggb2xkIGZlYXR1cmUgZmxhZyBmb3IgTlNVUkxT
ZXNzaW9uIHN3aXRjaGluZy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3Rv
cmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3Rv
cmU6OmNsZWFyKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9y
eVN0b3JlOjp1cGRhdGVDb29raWVCbG9ja2luZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNhbGxVcGRhdGVQcmV2YWxl
bnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3JIYW5kbGVyKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOgorICAgICAg
ICAoV2ViS2l0OjpSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0Zvcjo6aXNvbGF0ZWRD
b3B5IGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbml0aWFsaXplTmV0d29ya1Byb2Nl
c3MpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0U2hvdWxkQmxvY2tUaGly
ZFBhcnR5Q29va2llc0ZvclRlc3RpbmcpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246Ok5ldHdvcmtTZXNz
aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0xvZ1Rl
c3RpbmdFdmVudCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpzaG91bGRJc29s
YXRlU2Vzc2lvbnNGb3JQcmV2YWxlbnRUb3BGcmFtZXMgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OmVuY29k
ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3Jl
YXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a0RhdGFUYXNrQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29h
OjpOZXR3b3JrRGF0YVRhc2tDb2NvYSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25D
b2NvYTo6TmV0d29ya1Nlc3Npb25Db2NvYSk6CisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVu
Y2VzLnlhbWw6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJl
Zi5jcHA6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcpOgorICAgICAgICAoV0tX
ZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0Zv
clRlc3RpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFT
dG9yZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0
ZXJzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnNldFJlc291cmNlTG9hZFN0
YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaDoKKwogMjAxOS0xMC0x
NiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSzJdIEhhbmRs
ZSBiYWNrL2ZvcndhcmQgY2FjaGUgZW50cnkgZXhwaXJhdGlvbiBpbiB0aGUgVUlQcm9jZXNzIGlu
c3RlYWQgb2YgdGhlIFdlYlByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5h
YmxlZEZlYXR1cmVzLmgKaW5kZXggM2JiYmIxNDk1ZTZiNDM0NzIwMTA2ODM0OWY5NWI3NzYwZDVk
YTJiOS4uM2Q0YzU2YmY0MzI0NWMzMTk0MWYwNjRlYWU1NDU1NDZlZDQ2NzJhZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKQEAgLTE0Nyw5ICsxNDcs
NiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJc0lUUERhdGFiYXNlRW5hYmxlZChib29sIGlzRW5h
YmxlZCkgeyBtX2lzSVRQRGF0YWJhc2VFbmFibGVkID0gaXNFbmFibGVkOyB9CiAgICAgYm9vbCBp
c0lUUERhdGFiYXNlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJVFBEYXRhYmFzZUVuYWJs
ZWQ7IH0KIAotICAgIHZvaWQgc2V0SXNJVFBTZXNzaW9uU3dpdGNoaW5nRW5hYmxlZChib29sIGlz
RW5hYmxlZCkgeyBtX2lzSVRQU2Vzc2lvblN3aXRjaGluZ0VuYWJsZWQgPSBpc0VuYWJsZWQ7IH0K
LSAgICBib29sIGlzSVRQU2Vzc2lvblN3aXRjaGluZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBt
X2lzSVRQU2Vzc2lvblN3aXRjaGluZ0VuYWJsZWQ7IH0KLQogICAgIHZvaWQgc2V0UmVzdHJpY3Rl
ZEhUVFBSZXNwb25zZUFjY2Vzcyhib29sIGlzRW5hYmxlZCkgeyBtX2lzUmVzdHJpY3RlZEhUVFBS
ZXNwb25zZUFjY2VzcyA9IGlzRW5hYmxlZDsgfQogICAgIGJvb2wgcmVzdHJpY3RlZEhUVFBSZXNw
b25zZUFjY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1faXNSZXN0cmljdGVkSFRUUFJlc3BvbnNlQWNj
ZXNzOyB9CiAKQEAgLTQyMCw3ICs0MTcsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9hY2Nlc3Np
YmlsaXR5T2JqZWN0TW9kZWxFbmFibGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fYXJpYVJlZmxl
Y3Rpb25FbmFibGVkIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9pdHBEZWJ1Z01vZGUgeyBmYWxzZSB9
OwotICAgIGJvb2wgbV9pc0lUUFNlc3Npb25Td2l0Y2hpbmdFbmFibGVkIHsgdHJ1ZSB9OwogICAg
IGJvb2wgbV9pc1Jlc3RyaWN0ZWRIVFRQUmVzcG9uc2VBY2Nlc3MgeyB0cnVlIH07CiAgICAgYm9v
bCBtX2Nyb3NzT3JpZ2luUmVzb3VyY2VQb2xpY3lFbmFibGVkIHsgdHJ1ZSB9OwogICAgIGJvb2wg
bV9pc1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDU3VwcG9ydEVuYWJsZWQgeyBmYWxzZSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCmluZGV4IDQ3ZjBlZDZhOGVmMDg1NWZhNWE1NDI0NDhh
MTNiMjM2MzM5MjQ1MGMuLjg4YzM3ODljYjEzNWJkMmQ2MDA4MDcxZDU1Mjg2MmIzNWVkMTM3ODMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwKQEAgLTg2OSw4ICs4NjksOCBAQCB3ZWJSVENF
bmNyeXB0aW9uRW5hYmxlZDoKICAgaW5pdGlhbDogdHJ1ZQogICBpbnNwZWN0b3JPdmVycmlkZTog
dHJ1ZQogCi1pc0lUUFNlc3Npb25Td2l0Y2hpbmdFbmFibGVkOgotICBpbml0aWFsOiB0cnVlCitp
c1RoaXJkUGFydHlDb29raWVCbG9ja2luZ09uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uRW5h
YmxlZDoKKyAgaW5pdGlhbDogZmFsc2UKIAogaXNMb2dnZWRJbkFQSUVuYWJsZWQ6CiAgIGluaXRp
YWw6IGZhbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKaW5kZXggMzFkNTc1Zjg1ZWVjY2ZmY2E3OTNiZjI2
NmZjNTM3NDAyMzQ3YmEwNy4uMmM0NTU2YWY1OWQ1MzAwMmM5YzQzNjFjMWViNGU4NjU2YjU3OGNj
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3Rv
cmFnZVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmNwcApAQCAtNzgsNiArNzgsMTQgQEAgYm9vbCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OnNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNCdXRLZWVwRmlyc3RQYXJ0
eUNvb2tpZXMKICAgICByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQnV0S2VlcENv
b2tpZXNGb3IuY29udGFpbnMocmVnaXN0cmFibGVEb21haW4pOwogfQogCitib29sIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6aGFzSGFkVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5KGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikgY29uc3QKK3sKKyAgICBpZiAocmVn
aXN0cmFibGVEb21haW4uaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBy
ZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5
LmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKTsKK30KKwogYm9vbCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnNob3VsZEJsb2NrQ29va2llcyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCkgY29uc3QKIHsKICAgICByZXR1cm4gc2hvdWxkQmxvY2tDb29raWVzKHJlcXVl
c3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgcmVxdWVzdC51cmwoKSwgZnJhbWVJRCwgcGFnZUlE
KTsKQEAgLTk5LDYgKzEwNyw5IEBAIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRC
bG9ja0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywKICAgICBpZiAocGFn
ZUlEICYmIGhhc1N0b3JhZ2VBY2Nlc3MocmVzb3VyY2VEb21haW4sIGZpcnN0UGFydHlEb21haW4s
IGZyYW1lSUQsIHBhZ2VJRC52YWx1ZSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAg
aWYgKG1faXNUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFj
dGlvbkVuYWJsZWQgJiYgIWhhc0hhZFVzZXJJbnRlcmFjdGlvbkFzRmlyc3RQYXJ0eShmaXJzdFBh
cnR5RG9tYWluKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKICAgICByZXR1cm4gc2hvdWxkQmxv
Y2tUaGlyZFBhcnR5Q29va2llcyhyZXNvdXJjZURvbWFpbik7CiB9CiAKQEAgLTEyNyw2ICsxMzgs
MTIgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldFByZXZhbGVudERvbWFpbnNUb0Js
b2NrQnV0S2VlcENvb2tpZXNGb3IoY29uc3QgVmUKICAgICBtX3JlZ2lzdHJhYmxlRG9tYWluc1Rv
QmxvY2tCdXRLZWVwQ29va2llc0Zvci5hZGQoZG9tYWlucy5iZWdpbigpLCBkb21haW5zLmVuZCgp
KTsKIH0KIAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldERvbWFpbnNXaXRoVXNlcklu
dGVyYWN0aW9uQXNGaXJzdFBhcnR5KGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mIGRv
bWFpbnMpCit7CisgICAgbV9yZWdpc3RyYWJsZURvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uQXNG
aXJzdFBhcnR5LmNsZWFyKCk7CisgICAgbV9yZWdpc3RyYWJsZURvbWFpbnNXaXRoVXNlckludGVy
YWN0aW9uQXNGaXJzdFBhcnR5LmFkZChkb21haW5zLmJlZ2luKCksIGRvbWFpbnMuZW5kKCkpOwor
fQorCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVtb3ZlUHJldmFsZW50RG9tYWlucyhj
b25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zKQogewogICAgIGZvciAoYXV0
byYgZG9tYWluIDogZG9tYWlucykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKaW5kZXggNWJiODQzNzc0OTU2MTg0
ZDMxMzM1NDgyNGNlZTY5ZTJhZWI1YTNmYy4uMjAzOGI4OGMxOTljZGE4YzQyNWE0YTMxNDE0ZmU4
Mjc4NjUxZWQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9O
ZXR3b3JrU3RvcmFnZVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCkBAIC0xNDcsOCArMTQ3LDEwIEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZEJsb2NrQ29va2llcyhjb25zdCBVUkwmIGZp
cnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBVUkwmIHJlc291cmNlLCBPcHRpb25hbDxGcmFtZUlk
ZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OwogICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgc2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxkQmxvY2tUaGly
ZFBhcnR5Q29va2llc0J1dEtlZXBGaXJzdFBhcnR5Q29va2llc0Zvcihjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzSGFkVXNlckludGVy
YWN0aW9uQXNGaXJzdFBhcnR5KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQcmV2YWxlbnREb21haW5zVG9CbG9ja0FuZERlbGV0ZUNv
b2tpZXNGb3IoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0UHJldmFsZW50RG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0Zvcihj
b25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXREb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbkFzRmlyc3RQYXJ0eShjb25zdCBWZWN0b3I8
UmVnaXN0cmFibGVEb21haW4+Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBZ2VDYXBG
b3JDbGllbnRTaWRlQ29va2llcyhPcHRpb25hbDxTZWNvbmRzPik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCByZW1vdmVQcmV2YWxlbnREb21haW5zKGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURv
bWFpbj4mIGRvbWFpbnMpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzU3RvcmFnZUFjY2Vz
cyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBQ
YWdlSWRlbnRpZmllcikgY29uc3Q7CkBAIC0xNjIsNiArMTY0LDcgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIE9wdGlvbmFsPFNlY29uZHM+IG1heEFnZUNhY2hlQ2FwKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkQ29tbWl0Q3Jvc3NTaXRl
TG9hZFdpdGhEYXRhVHJhbnNmZXJGcm9tUHJldmFsZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHRvRG9tYWluLCBQYWdlSWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCByZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZygpOwor
ICAgIHZvaWQgc2V0SXNUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdPblNpdGVzV2l0aG91dFVzZXJJ
bnRlcmFjdGlvbkVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1faXNUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmdPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbkVuYWJsZWQgPSBlbmFibGVkOyB9CiAj
ZW5kaWYKIAogcHJpdmF0ZToKQEAgLTE4OCw2ICsxOTEsNyBAQCBwcml2YXRlOgogICAgIE9wdGlv
bmFsPFNlY29uZHM+IGNsaWVudFNpZGVDb29raWVDYXAoY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IGZpcnN0UGFydHksIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPikgY29uc3Q7CiAgICAgSGFzaFNl
dDxSZWdpc3RyYWJsZURvbWFpbj4gbV9yZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQW5kRGVsZXRl
Q29va2llc0ZvcjsKICAgICBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBtX3JlZ2lzdHJhYmxl
RG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0ZvcjsKKyAgICBIYXNoU2V0PFJlZ2lzdHJhYmxl
RG9tYWluPiBtX3JlZ2lzdHJhYmxlRG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFy
dHk7CiAgICAgSGFzaE1hcDxQYWdlSWRlbnRpZmllciwgSGFzaE1hcDxGcmFtZUlkZW50aWZpZXIs
IFJlZ2lzdHJhYmxlRG9tYWluPj4gbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2VzczsKICAgICBI
YXNoTWFwPFBhZ2VJZGVudGlmaWVyLCBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBSZWdpc3Ry
YWJsZURvbWFpbj4+IG1fcGFnZXNHcmFudGVkU3RvcmFnZUFjY2VzczsKICAgICBPcHRpb25hbDxT
ZWNvbmRzPiBtX2NhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzIHsgfTsKQEAgLTE5
NSw2ICsxOTksNyBAQCBwcml2YXRlOgogICAgIE9wdGlvbmFsPFNlY29uZHM+IG1fYWdlQ2FwRm9y
Q2xpZW50U2lkZUNvb2tpZXNTaG9ydCB7IH07CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgUmVnaXN0cmFibGVEb21haW4+IG1fbmF2aWdhdGVkVG9XaXRoTGlua0RlY29yYXRp
b25CeVByZXZhbGVudFJlc291cmNlOwogICAgIGJvb2wgbV9uYXZpZ2F0aW9uV2l0aExpbmtEZWNv
cmF0aW9uVGVzdE1vZGUgPSBmYWxzZTsKKyAgICBib29sIG1faXNUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmdPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbkVuYWJsZWQgPSBmYWxzZTsKICNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAppbmRleCAxZGI1NDFlNDZhODdiMmIzZDQ1YWMz
Mjc1MzFjNDI4OWFkMjI0NmRiLi5lYjk0YWJiZjc4ZGU1NmRhZWMwNWI1YWE4NGNjODIxOTA2ZWRj
ZDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZS5jcHAKQEAgLTE2ODAsNyArMTY4MCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OmNsZWFyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
CiAgICAgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhbY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJh
Y2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKIAogICAgIGF1dG8gcmVnaXN0cmFibGVEb21h
aW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IgPSBlbnN1cmVQcmV2YWxlbnRSZXNvdXJjZXNG
b3JEZWJ1Z01vZGUoKTsKLSAgICBSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0ZvciBk
b21haW5zVG9CbG9jayB7IHJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVz
Rm9yLCB7IH0gfTsKKyAgICBSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0ZvciBkb21h
aW5zVG9CbG9jayB7IHJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9y
LCB7IH0sIHsgfSB9OwogICAgIHVwZGF0ZUNvb2tpZUJsb2NraW5nRm9yRG9tYWlucyhkb21haW5z
VG9CbG9jaywgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVm
KCldIHsgfSk7CiB9CiAKQEAgLTE3NTIsMTkgKzE3NTIsMzUgQEAgVmVjdG9yPFJlZ2lzdHJhYmxl
RG9tYWluPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWluc1RvQmxv
Y2tCdXQKICAgICByZXR1cm4gcmVzdWx0czsKIH0KIAorVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWlu
PiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWluc1dpdGhVc2VySW50
ZXJhY3Rpb25Bc0ZpcnN0UGFydHkoKSBjb25zdAoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOworCisgICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiByZXN1bHRzOworICAgIFNR
TGl0ZVN0YXRlbWVudCBzdGF0ZW1lbnQobV9kYXRhYmFzZSwgIlNFTEVDVCByZWdpc3RyYWJsZURv
bWFpbiBGUk9NIE9ic2VydmVkRG9tYWlucyBXSEVSRSBoYWRVc2VySW50ZXJhY3Rpb24gPSAxIl9z
KTsKKyAgICBpZiAoc3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0spCisgICAgICAgIHJl
dHVybiByZXN1bHRzOworICAgIAorICAgIHdoaWxlIChzdGF0ZW1lbnQuc3RlcCgpID09IFNRTElU
RV9ST1cpCisgICAgICAgIHJlc3VsdHMuYXBwZW5kKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNr
ZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoc3RhdGVtZW50LmdldENvbHVtblRl
eHQoMCkpKTsKKworICAgIHJldHVybiByZXN1bHRzOworfQorCiB2b2lkIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVDb29raWVCbG9ja2luZyhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CiAKICAgICBhdXRvIGRvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0Zv
ciA9IHRoaXMtPmRvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0ZvcigpOwogICAgIGF1dG8g
ZG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0ZvciA9IHRoaXMtPmRvbWFpbnNUb0Jsb2NrQnV0
S2VlcENvb2tpZXNGb3IoKTsKKyAgICBhdXRvIGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uQXNG
aXJzdFBhcnR5ID0gdGhpcy0+ZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFydHko
KTsKIAotICAgIGlmIChkb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IuaXNFbXB0eSgp
ICYmIGRvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3IuaXNFbXB0eSgpKSB7CisgICAgaWYg
KGRvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0Zvci5pc0VtcHR5KCkgJiYgZG9tYWluc1Rv
QmxvY2tCdXRLZWVwQ29va2llc0Zvci5pc0VtcHR5KCkgJiYgZG9tYWluc1dpdGhVc2VySW50ZXJh
Y3Rpb25Bc0ZpcnN0UGFydHkuaXNFbXB0eSgpKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWdpc3RyYWJsZURvbWFpbnNUb0Js
b2NrQ29va2llc0ZvciBkb21haW5zVG9CbG9jayB7IGRvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29v
a2llc0ZvciwgZG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0ZvciB9OworICAgIFJlZ2lzdHJh
YmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9yIGRvbWFpbnNUb0Jsb2NrIHsgZG9tYWluc1RvQmxv
Y2tBbmREZWxldGVDb29raWVzRm9yLCBkb21haW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9yLCBk
b21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbkFzRmlyc3RQYXJ0eSB9OwogCiAgICAgaWYgKGRlYnVn
TG9nZ2luZ0VuYWJsZWQoKSAmJiAhZG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yLmlz
RW1wdHkoKSAmJiAhZG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0Zvci5pc0VtcHR5KCkpCiAg
ICAgICAgIGRlYnVnTG9nRG9tYWluc0luQmF0Y2hlcygiYmxvY2siLCBkb21haW5zVG9CbG9jayk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5o
CmluZGV4IGJlZWQ4MzQyMTIzMWVmOTAxNjljNjdmZDI3MmI4Y2FhODg5NTk5ZjguLjAyMjYzMjU3
OTE0YmM5N2VjNGI4YjM4ZTE0Y2E3MDNkNTNjOWQ3MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCkBAIC0xNTUsNiArMTU1LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHNldFVzZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYsIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBXYWxsVGltZSk7CiAgICAgVmVjdG9yPFJl
Z2lzdHJhYmxlRG9tYWluPiBkb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IoKSBjb25z
dDsKICAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNUb0Jsb2NrQnV0S2VlcENv
b2tpZXNGb3IoKSBjb25zdDsKKyAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNX
aXRoVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5KCkgY29uc3Q7CiAKICAgICBzdHJ1Y3QgUHJl
dmFsZW50RG9tYWluRGF0YSB7CiAgICAgICAgIHVuc2lnbmVkIGRvbWFpbklEOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAppbmRleCA2NTg5
ZjZiMWRlMmJkODU3MjFjNjMwNzIxZDNjMzZmOTU0MWIxYzVjLi5mOTJmNGZkYTdhYjc0Mzk3ZDE5
OTQzMGQ4YjA3ZDM5NjE4YWE2Y2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcApAQCAtNjk3LDcgKzY5Nyw3IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpjbGVhcihDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxlCiAgICAgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhbY2FsbGJhY2tBZ2dyZWdh
dG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKIAogICAgIGF1dG8gcmVn
aXN0cmFibGVEb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IgPSBlbnN1cmVQcmV2YWxl
bnRSZXNvdXJjZXNGb3JEZWJ1Z01vZGUoKTsKLSAgICBSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2Nr
Q29va2llc0ZvciBkb21haW5zVG9CbG9jayB7IHJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tBbmRE
ZWxldGVDb29raWVzRm9yLCB7IH0gfTsKKyAgICBSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29v
a2llc0ZvciBkb21haW5zVG9CbG9jayB7IHJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tBbmREZWxl
dGVDb29raWVzRm9yLCB7IH0sIHsgfSB9OwogICAgIHVwZGF0ZUNvb2tpZUJsb2NraW5nRm9yRG9t
YWlucyhkb21haW5zVG9CbG9jaywgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVn
YXRvci5jb3B5UmVmKCldIHsgfSk7CiB9CiAKQEAgLTczNSwyMSArNzM1LDIyIEBAIHZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjp1cGRhdGVDb29raWVCbG9ja2luZyhDb21w
bGV0aW9uSGFuZGxlcjx2CiAKICAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNU
b0Jsb2NrQW5kRGVsZXRlQ29va2llc0ZvcjsKICAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+
IGRvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3I7CisgICAgVmVjdG9yPFJlZ2lzdHJhYmxl
RG9tYWluPiBkb21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbkFzRmlyc3RQYXJ0eTsKICAgICBmb3Ig
KGF1dG8mIHJlc291cmNlU3RhdGlzdGljIDogbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAudmFsdWVz
KCkpIHsKLSAgICAgICAgaWYgKHJlc291cmNlU3RhdGlzdGljLmlzUHJldmFsZW50UmVzb3VyY2Up
IHsKLSAgICAgICAgICAgIGlmIChoYXNIYWRVbmV4cGlyZWRSZWNlbnRVc2VySW50ZXJhY3Rpb24o
cmVzb3VyY2VTdGF0aXN0aWMsIE9wZXJhdGluZ0RhdGVzV2luZG93OjpMb25nKSkKLSAgICAgICAg
ICAgICAgICBkb21haW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9yLmFwcGVuZChyZXNvdXJjZVN0
YXRpc3RpYy5yZWdpc3RyYWJsZURvbWFpbik7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgZG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yLmFwcGVuZChyZXNvdXJjZVN0
YXRpc3RpYy5yZWdpc3RyYWJsZURvbWFpbik7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGhhc0hh
ZFVuZXhwaXJlZFJlY2VudFVzZXJJbnRlcmFjdGlvbihyZXNvdXJjZVN0YXRpc3RpYywgT3BlcmF0
aW5nRGF0ZXNXaW5kb3c6OkxvbmcpKSB7CisgICAgICAgICAgICBpZiAocmVzb3VyY2VTdGF0aXN0
aWMuaXNQcmV2YWxlbnRSZXNvdXJjZSkKKyAgICAgICAgICAgICAgICBkb21haW5zVG9CbG9ja0J1
dEtlZXBDb29raWVzRm9yLmFwcGVuZChyZXNvdXJjZVN0YXRpc3RpYy5yZWdpc3RyYWJsZURvbWFp
bi5pc29sYXRlZENvcHkoKSk7CisgICAgICAgICAgICBkb21haW5zV2l0aFVzZXJJbnRlcmFjdGlv
bkFzRmlyc3RQYXJ0eS5hcHBlbmQocmVzb3VyY2VTdGF0aXN0aWMucmVnaXN0cmFibGVEb21haW4p
OworICAgICAgICB9IGVsc2UgaWYgKHJlc291cmNlU3RhdGlzdGljLmlzUHJldmFsZW50UmVzb3Vy
Y2UpCisgICAgICAgICAgICBkb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IuYXBwZW5k
KHJlc291cmNlU3RhdGlzdGljLnJlZ2lzdHJhYmxlRG9tYWluKTsKICAgICB9CiAKLSAgICBpZiAo
ZG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yLmlzRW1wdHkoKSAmJiBkb21haW5zVG9C
bG9ja0J1dEtlZXBDb29raWVzRm9yLmlzRW1wdHkoKSAmJiAhZGVidWdNb2RlRW5hYmxlZCgpKSB7
CisgICAgaWYgKGRvbWFpbnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0Zvci5pc0VtcHR5KCkgJiYg
ZG9tYWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0Zvci5pc0VtcHR5KCkgJiYgZG9tYWluc1dpdGhV
c2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFydHkuaXNFbXB0eSgpICYmICFkZWJ1Z01vZGVFbmFibGVk
KCkpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIFJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9yIGRvbWFpbnNUb0Js
b2NrIHsgZG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yLCBkb21haW5zVG9CbG9ja0J1
dEtlZXBDb29raWVzRm9yIH07CisgICAgUmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZXNG
b3IgZG9tYWluc1RvQmxvY2sgeyBkb21haW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IsIGRv
bWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3IsIGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9u
QXNGaXJzdFBhcnR5IH07CiAKICAgICBpZiAoZGVidWdMb2dnaW5nRW5hYmxlZCgpICYmICFkb21h
aW5zVG9CbG9ja0FuZERlbGV0ZUNvb2tpZXNGb3IuaXNFbXB0eSgpICYmICFkb21haW5zVG9CbG9j
a0J1dEtlZXBDb29raWVzRm9yLmlzRW1wdHkoKSkKICAgICAgICAgZGVidWdMb2dEb21haW5zSW5C
YXRjaGVzKCJibG9jayIsIGRvbWFpbnNUb0Jsb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggZTA4YWI1ZDYwYmVmMTFkMTI0Nzk2OThj
N2I4MTFkYjc4Y2QxNjliZC4uN2I4YWRlY2Y1YTQ2NzQxOTYzODAwZDhiMTk3NjY1Mzg0MjA3M2Rl
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAK
QEAgLTk2NSw2ICs5NjUsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
Y2FsbFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0ZvcgogICAgICAgICBpZiAo
YXV0byogc3RvcmFnZVNlc3Npb24gPSBtX25ldHdvcmtTZXNzaW9uLT5uZXR3b3JrU3RvcmFnZVNl
c3Npb24oKSkgewogICAgICAgICAgICAgc3RvcmFnZVNlc3Npb24tPnNldFByZXZhbGVudERvbWFp
bnNUb0Jsb2NrQW5kRGVsZXRlQ29va2llc0Zvcihkb21haW5zVG9CbG9jay5kb21haW5zVG9CbG9j
a0FuZERlbGV0ZUNvb2tpZXNGb3IpOwogICAgICAgICAgICAgc3RvcmFnZVNlc3Npb24tPnNldFBy
ZXZhbGVudERvbWFpbnNUb0Jsb2NrQnV0S2VlcENvb2tpZXNGb3IoZG9tYWluc1RvQmxvY2suZG9t
YWluc1RvQmxvY2tCdXRLZWVwQ29va2llc0Zvcik7CisgICAgICAgICAgICBzdG9yYWdlU2Vzc2lv
bi0+c2V0RG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFydHkoZG9tYWluc1RvQmxv
Y2suZG9tYWluc1dpdGhVc2VySW50ZXJhY3Rpb25Bc0ZpcnN0UGFydHkpOwogICAgICAgICB9CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5k
ZXggNDE2NGFiNmFkOGNkZmUyMjc2MGE5NmVjZDlhOWNlMWUzMGI5MDdjZS4uMzhiN2MwZTA1NzA0
NjQxNzI0Mzc5ZmJkNGZmZjFiNzFhNDViN2RjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtNjUsNyArNjUsNiBAQCBjbGFzcyBXZWJQcm9jZXNz
UHJveHk7CiBlbnVtIGNsYXNzIFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcyA6IGJvb2w7CiBl
bnVtIGNsYXNzIFNob3VsZEluY2x1ZGVMb2NhbGhvc3QgOiBib29sIHsgTm8sIFllcyB9OwogZW51
bSBjbGFzcyBFbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlIDogYm9vbCB7IE5v
LCBZZXMgfTsKLWVudW0gY2xhc3MgRW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc05TVVJMU2Vz
c2lvblN3aXRjaGluZyA6IGJvb2wgeyBObywgWWVzIH07CiBlbnVtIGNsYXNzIFdlYnNpdGVEYXRh
VG9SZW1vdmUgOiB1aW50OF90IHsKICAgICBBbGwsCiAgICAgQWxsQnV0SHR0cE9ubHlDb29raWVz
LApAQCAtNzQsNyArNzMsOCBAQCBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhVG9SZW1vdmUgOiB1aW50
OF90IHsKIHN0cnVjdCBSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llc0ZvciB7CiAgICAg
VmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zVG9CbG9ja0FuZERlbGV0
ZUNvb2tpZXNGb3I7CiAgICAgVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21h
aW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9yOwotICAgIFJlZ2lzdHJhYmxlRG9tYWluc1RvQmxv
Y2tDb29raWVzRm9yIGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgZG9tYWluc1RvQmxv
Y2tBbmREZWxldGVDb29raWVzRm9yLmlzb2xhdGVkQ29weSgpLCBkb21haW5zVG9CbG9ja0J1dEtl
ZXBDb29raWVzRm9yLmlzb2xhdGVkQ29weSgpIH07IH0KKyAgICBWZWN0b3I8V2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4+IGRvbWFpbnNXaXRoVXNlckludGVyYWN0aW9uQXNGaXJzdFBhcnR5Owor
ICAgIFJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9yIGlzb2xhdGVkQ29weSgpIGNv
bnN0IHsgcmV0dXJuIHsgZG9tYWluc1RvQmxvY2tBbmREZWxldGVDb29raWVzRm9yLmlzb2xhdGVk
Q29weSgpLCBkb21haW5zVG9CbG9ja0J1dEtlZXBDb29raWVzRm9yLmlzb2xhdGVkQ29weSgpLCBk
b21haW5zV2l0aFVzZXJJbnRlcmFjdGlvbkFzRmlyc3RQYXJ0eS5pc29sYXRlZENvcHkoKSB9OyB9
CiB9OwogCiBjbGFzcyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgZmluYWwgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLCBX
VEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDE0MjU5YjEyODNiMWEzYWQxYzM1ODY0
ODc0ZDBkNzliMmUzNjc4NWIuLjQ4ZDhmNjI3NmEyMTJmNWQyODdkZThmNTEzNDcxMDdmNDVlMmM0
NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCkBAIC0xMjU1LDYgKzEyNTUsMTUgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0U2hvdWxk
RG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKGJvb2wgZW5hYmxlZCwgQ29tcGxldGkKICAgICB9
KTsKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpz
ZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGJvb2wgZW5hYmxlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBz
dG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24t
PnNldElzVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nT25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rp
b25FbmFibGVkKGVuYWJsZWQpOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKK30KICNlbmRpZiAvLyBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQogCiBib29sIE5ldHdvcmtQcm9jZXNzOjpzZXNzaW9uSXNDb250
cm9sbGVkQnlBdXRvbWF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCBjMTMwY2Fj
NmFlMjI0MDFlOGYxNDdhM2VkMzFkNzExOWEwM2IzNzUyLi4yOTYyMzljMmMxMjY1MjExMGM0ZmIz
YmIxZWVkNjAyOTkzYTljZGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oCkBAIC0yNjYsNiArMjY2LDcgQEAgcHVibGljOgogICAgIHZvaWQgaGFz
SXNvbGF0ZWRTZXNzaW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGNvbnN0OwogICAgIGJv
b2wgaXNJVFBEYXRhYmFzZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzSVRQRGF0YWJhc2VF
bmFibGVkOyB9CiAgICAgdm9pZCBzZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3Rpbmco
Ym9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldFNob3VsZEJs
b2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBib29sLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2VuZGlmCiAKICAgICB1c2luZyBDYWNoZVN0b3Jh
Z2VSb290UGF0aENhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
bWVzc2FnZXMuaW4KaW5kZXggY2U1YjZiYTQzNjRkMjg2ZDdkYWM1NDdkNjhhZTY0NGNmZTNiZGVm
YS4uMGI4YTI1YTlmYzFkNjBjNzE2MTg1ZDU3YmU1YWI2ZDQwMGQ0OTRmMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2Vz
LmluCkBAIC0xMzcsNiArMTM3LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5
UmVjZWl2ZXIgewogICAgIERlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBib29sIGluY2x1ZGVI
dHRwT25seUNvb2tpZXMpIC0+ICgpIEFzeW5jCiAgICAgSGFzSXNvbGF0ZWRTZXNzaW9uKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluKSAt
PiAoYm9vbCBoYXNJc29sYXRlZFNlc3Npb24pIEFzeW5jCiAgICAgU2V0U2hvdWxkRG93bmdyYWRl
UmVmZXJyZXJGb3JUZXN0aW5nKGJvb2wgZW5hYmxlZCkgLT4gKCkgQXN5bmMKKyAgICBTZXRTaG91
bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGJvb2wgZW5hYmxlZCkgLT4gKCkgQXN5bmMKICNlbmRpZgogCiAgICAgU2V0U2Vzc2lvbklz
Q29udHJvbGxlZEJ5QXV0b21hdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgY29u
dHJvbGxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
LmgKaW5kZXggOTEwMjI3OWYyOWRlNDlhMGZkMWRmN2Q4ZTA3YjAyNzM5ODU5YmU4NS4uYWE0NDA1
ODc4ZjA0MTEyZWE2YTZhMDVkMjlhYWQ3ODBlZTQ3MDIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtOTMsMTEgKzkzLDExIEBAIHB1Ymxp
YzoKICAgICB2b2lkIG5vdGlmeVBhZ2VTdGF0aXN0aWNzVGVsZW1ldHJ5RmluaXNoZWQodW5zaWdu
ZWQgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXMsIHVuc2lnbmVkIG51bWJlck9mUHJldmFsZW50
UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQgbnVtYmVyT2ZQcmV2YWxlbnRS
ZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCB1bnNpZ25lZCB0b3BQcmV2YWxlbnRSZXNv
dXJjZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlzU2luY2VVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVk
IG1lZGlhbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvblByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJ
bnRlcmFjdGlvbiwgdW5zaWduZWQgdG9wM051bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVJ
LCB1bnNpZ25lZCB0b3AzTWVkaWFuU3ViRnJhbWVXaXRob3V0VUksIHVuc2lnbmVkIHRvcDNNZWRp
YW5TdWJSZXNvdXJjZVdpdGhvdXRVSSwgdW5zaWduZWQgdG9wM01lZGlhblVuaXF1ZVJlZGlyZWN0
c1dpdGhvdXRVSSwgdW5zaWduZWQgdG9wM01lZGlhbkRhdGFSZWNvcmRzUmVtb3ZlZFdpdGhvdXRV
SSk7CiAgICAgYm9vbCBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50
KCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGlu
Z0V2ZW50OyB9CiAgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2
ZW50KGJvb2wgbG9nKSB7IG1fZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0xvZ1Rlc3RpbmdF
dmVudCA9IGxvZzsgfQotICAgIGJvb2wgc2hvdWxkSXNvbGF0ZVNlc3Npb25zRm9yUHJldmFsZW50
VG9wRnJhbWVzKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TlNVUkxTZXNzaW9uU3dpdGNoaW5nID09IEVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NOU1VS
TFNlc3Npb25Td2l0Y2hpbmc6OlllczsgfQogICAgIHZpcnR1YWwgYm9vbCBoYXNJc29sYXRlZFNl
c3Npb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4pIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIGNsZWFySXNvbGF0ZWRTZXNzaW9ucygpIHsgfQogICAg
IHZvaWQgc2V0U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKGJvb2wpOwogICAgIGJv
b2wgc2hvdWxkRG93bmdyYWRlUmVmZXJyZXIoKSBjb25zdDsKKyAgICB2b2lkIHNldFNob3VsZEJs
b2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nKGJvb2wpOwogI2VuZGlmCiAgICAgdm9pZCBz
dG9yZUFkQ2xpY2tBdHRyaWJ1dGlvbihXZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb24mJik7CiAg
ICAgdm9pZCBoYW5kbGVBZENsaWNrQXR0cmlidXRpb25Db252ZXJzaW9uKFdlYkNvcmU6OkFkQ2xp
Y2tBdHRyaWJ1dGlvbjo6Q29udmVyc2lvbiYmLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0KTsKQEAgLTE0MCw3ICsx
NDAsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCBtX3Nob3VsZElu
Y2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3MgeyBTaG91bGRJbmNsdWRlTG9j
YWxob3N0OjpZZXMgfTsKICAgICBFbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2Rl
IG1fZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSB7IEVuYWJsZVJlc291cmNl
TG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU6Ok5vIH07CiAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2U7Ci0g
ICAgRW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc05TVVJMU2Vzc2lvblN3aXRjaGluZyBtX2Vu
YWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NOU1VSTFNlc3Npb25Td2l0Y2hpbmcgeyBFbmFibGVS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTlNVUkxTZXNzaW9uU3dpdGNoaW5nOjpObyB9OwogICAgIGJv
b2wgbV9lbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50OwogICAgIGJv
b2wgbV9kb3duZ3JhZGVSZWZlcnJlciB7IHRydWUgfTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVy
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcAppbmRleCBjYzE0MDk5YTNkZDU0NzIzODY4NjljNTdkZjJiZmQ3OGJm
NTZlNTc0Li5kODczNGI1ZGFlOGI5MzI0YmFhNDA2NjZkYzgxM2UwM2U4MjNjZWIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtNjgsNyArNjgsNyBAQCB2b2lkIE5ldHdv
cmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogICAgIGVuY29kZXIgPDwgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VM
b2FkU3RhdGlzdGljczsKICAgICBlbmNvZGVyIDw8IGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEZWJ1Z01vZGU7CiAgICAgZW5jb2RlciA8PCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFs
UHJldmFsZW50UmVzb3VyY2U7Ci0gICAgZW5jb2RlciA8PCBlbmFibGVSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTlNVUkxTZXNzaW9uU3dpdGNoaW5nOworICAgIGVuY29kZXIgPDwgZW5hYmxlVGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nT25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb247CiAKICAgICBl
bmNvZGVyIDw8IG5ldHdvcmtDYWNoZURpcmVjdG9yeSA8PCBuZXR3b3JrQ2FjaGVEaXJlY3RvcnlF
eHRlbnNpb25IYW5kbGU7CiAKQEAgLTE5OSw5ICsxOTksOSBAQCBPcHRpb25hbDxOZXR3b3JrU2Vz
c2lvbkNyZWF0aW9uUGFyYW1ldGVycz4gTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6
OmRlYwogICAgIGlmICghcmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291
cmNlKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Ym9vbD4g
ZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc05TVVJMU2Vzc2lvblN3aXRjaGluZzsKLSAgICBk
ZWNvZGVyID4+IGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NOU1VSTFNlc3Npb25Td2l0Y2hp
bmc7Ci0gICAgaWYgKCFlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTlNVUkxTZXNzaW9uU3dp
dGNoaW5nKQorICAgIE9wdGlvbmFsPGJvb2w+IGVuYWJsZVRoaXJkUGFydHlDb29raWVCbG9ja2lu
Z09uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9uOworICAgIGRlY29kZXIgPj4gZW5hYmxlVGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nT25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb247CisgICAg
aWYgKCFlbmFibGVUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdPblNpdGVzV2l0aG91dFVzZXJJbnRl
cmFjdGlvbikKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIE9wdGlvbmFsPFN0
cmluZz4gbmV0d29ya0NhY2hlRGlyZWN0b3J5OwpAQCAtMjgyLDcgKzI4Miw3IEBAIE9wdGlvbmFs
PE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzPiBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9u
UGFyYW1ldGVyczo6ZGVjCiAgICAgICAgICwgV1RGTW92ZSgqZW5hYmxlUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0xvZ1Rlc3RpbmdFdmVudCkKICAgICAgICAgLCBXVEZNb3ZlKCpzaG91bGRJbmNsdWRl
TG9jYWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzKQogICAgICAgICAsIFdURk1vdmUoKmVu
YWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUpCi0gICAgICAgICwgV1RGTW92ZSgq
ZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc05TVVJMU2Vzc2lvblN3aXRjaGluZykKKyAgICAg
ICAgLCBXVEZNb3ZlKCplbmFibGVUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdPblNpdGVzV2l0aG91
dFVzZXJJbnRlcmFjdGlvbikKICAgICAgICAgLCBXVEZNb3ZlKCpkZXZpY2VNYW5hZ2VtZW50UmVz
dHJpY3Rpb25zRW5hYmxlZCkKICAgICAgICAgLCBXVEZNb3ZlKCphbGxMb2Fkc0Jsb2NrZWRCeURl
dmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNGb3JUZXN0aW5nKQogICAgICAgICAsIFdURk1vdmUo
KnJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRSZXNvdXJjZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBh
cmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25D
cmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCBlODAxNzEyYTMzZGFlNGNkM2E5ZjU5NjNhMGY3NWQz
MDRhYjg1ZDAxLi40Y2RkYjBlNTE1NDE0NTUwZDM3NGEyYzBiZjFmYTg3ZWFmN2Q2MGYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRp
b25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC04NSw3ICs4NSw3IEBAIHN0cnVjdCBOZXR3
b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgYm9vbCBlbmFibGVSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50IHsgZmFsc2UgfTsKICAgICBib29sIHNob3VsZElu
Y2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3MgeyB0cnVlIH07CiAgICAgYm9v
bCBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlIHsgZmFsc2UgfTsKLSAgICBi
b29sIGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NOU1VSTFNlc3Npb25Td2l0Y2hpbmcgeyB0
cnVlIH07CisgICAgYm9vbCBlbmFibGVUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdPblNpdGVzV2l0
aG91dFVzZXJJbnRlcmFjdGlvbiB7IGZhbHNlIH07CiAgICAgYm9vbCBkZXZpY2VNYW5hZ2VtZW50
UmVzdHJpY3Rpb25zRW5hYmxlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBhbGxMb2Fkc0Jsb2NrZWRC
eURldmljZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNGb3JUZXN0aW5nIHsgZmFsc2UgfTsKICAgICBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJl
dmFsZW50UmVzb3VyY2UgeyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KaW5kZXggNzdhMjIwZjBlNzg4
Y2M2MTc3ZTAyMzUyZDNmZGM2YTNlMjM3OTdhMy4uMzlkYjhiNDNjZWQ1YWQxNTczYThlZmZjYmUy
ZjkxOWJmMzE1Y2ViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCkBAIC0yMTMsNyArMjEzLDcgQEAg
TmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9u
JiBzZXNzaW9uLCBOZXR3b3JrRGF0YVQKICAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNz
aW9uID0gc2Vzc2lvbi5uZXR3b3JrU3RvcmFnZVNlc3Npb24oKSkgewogICAgICAgICBpZiAoIXNo
b3VsZEJsb2NrQ29va2llcykKICAgICAgICAgICAgIHNob3VsZEJsb2NrQ29va2llcyA9IG5ldHdv
cmtTdG9yYWdlU2Vzc2lvbi0+c2hvdWxkQmxvY2tDb29raWVzKHJlcXVlc3QsIGZyYW1lSUQsIHBh
Z2VJRCk7Ci0gICAgICAgIG5lZWRzSXNvbGF0ZWRTZXNzaW9uID0gc2Vzc2lvbi5zaG91bGRJc29s
YXRlU2Vzc2lvbnNGb3JQcmV2YWxlbnRUb3BGcmFtZXMoKSAmJiBuZXR3b3JrU3RvcmFnZVNlc3Np
b24tPnNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNCdXRLZWVwRmlyc3RQYXJ0eUNvb2tpZXNG
b3IoZmlyc3RQYXJ0eSk7CisgICAgICAgIG5lZWRzSXNvbGF0ZWRTZXNzaW9uID0gbmV0d29ya1N0
b3JhZ2VTZXNzaW9uLT5zaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzQnV0S2VlcEZpcnN0UGFy
dHlDb29raWVzRm9yKGZpcnN0UGFydHkpOwogICAgIH0KICNlbmRpZgogICAgIHJlc3RyaWN0UmVx
dWVzdFJlZmVycmVyVG9PcmlnaW5JZk5lZWRlZChyZXF1ZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQpp
bmRleCAwMGJlMmMyMDliY2ZlNjJiMDE2YzE5YjViNjZmNDhhZTVjNGI0ODg4Li5mYWI2ZmNlZTkz
NjdlMTU1ZmY0N2NhYTExNDNkOWQ1YmNjOTAxMjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC0x
MTA5LDcgKzExMDksNyBAQCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3JrU2Vzc2lvbkNvY29h
KE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29yawogICAgIG1fc2hvdWxkSW5j
bHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IHBhcmFtZXRlcnMuc2hvdWxk
SW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljcyA/IFNob3VsZEluY2x1ZGVM
b2NhbGhvc3Q6OlllcyA6IFNob3VsZEluY2x1ZGVMb2NhbGhvc3Q6Ok5vOwogICAgIG1fZW5hYmxl
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSA9IHBhcmFtZXRlcnMuZW5hYmxlUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSA/IEVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NE
ZWJ1Z01vZGU6OlllcyA6IEVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGU6Ok5v
OwogICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlID0g
cGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2U7
Ci0gICAgbV9lbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTlNVUkxTZXNzaW9uU3dpdGNoaW5n
ID0gcGFyYW1ldGVycy5lbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTlNVUkxTZXNzaW9uU3dp
dGNoaW5nID8gRW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc05TVVJMU2Vzc2lvblN3aXRjaGlu
Zzo6WWVzIDogRW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc05TVVJMU2Vzc2lvblN3aXRjaGlu
Zzo6Tm87CisgICAgc3RvcmFnZVNlc3Npb24tPnNldElzVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
T25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb25FbmFibGVkKHBhcmFtZXRlcnMuZW5hYmxlVGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nT25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24pOwogICAg
IHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKHBhcmFtZXRlcnMuZW5hYmxlUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZl
cmVuY2VzLnlhbWwKaW5kZXggOTc0NjE4ZjZkMjY1NDkwNjNjODM4OGZjZGFlMmViNGQ1Njc2MWEw
Ni4uNjY1OTQ5MzA0N2I3ZmU5MmMyYzEyMjU0YTRmMzYwODFkNTE4NGJlMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCkBAIC0xNzY1LDEyICsxNzY1LDExIEBAIExh
enlJbWFnZUxvYWRpbmdFbmFibGVkOgogICB3ZWJjb3JlQmluZGluZzogUnVudGltZUVuYWJsZWRG
ZWF0dXJlcwogICBjYXRlZ29yeTogZXhwZXJpbWVudGFsCiAKLUlzSVRQU2Vzc2lvblN3aXRjaGlu
Z0VuYWJsZWQ6CitJc1RoaXJkUGFydHlDb29raWVCbG9ja2luZ09uU2l0ZXNXaXRob3V0VXNlcklu
dGVyYWN0aW9uRW5hYmxlZDoKICAgdHlwZTogYm9vbAotICBkZWZhdWx0VmFsdWU6IHRydWUKLSAg
aHVtYW5SZWFkYWJsZU5hbWU6ICJJVFAgU2Vzc2lvbiBTd2l0Y2hpbmciCi0gIGh1bWFuUmVhZGFi
bGVEZXNjcmlwdGlvbjogIkVuYWJsZSBzZXNzaW9uIHN3aXRjaGluZyBmb3IgZG9tYWlucyBjbGFz
c2lmaWVkIGJ5IElUUCIKLSAgd2ViY29yZUJpbmRpbmc6IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMK
KyAgZGVmYXVsdFZhbHVlOiBmYWxzZQorICBodW1hblJlYWRhYmxlTmFtZTogIkJsb2NrIDNyZC1Q
YXJ0eSBDb29raWVzIE9uIFNpdGVzIFdpdGhvdXQgSW50ZXJhY3Rpb24gKElUUCkiCisgIGh1bWFu
UmVhZGFibGVEZXNjcmlwdGlvbjogIkJsb2NrIGFsbCB0aGlyZC1wYXJ0eSBjb29raWVzIG9uIHdl
YnNpdGVzIHdpdGhvdXQgdXNlciBpbnRlcmFjdGlvbiIKICAgY2F0ZWdvcnk6IGludGVybmFsCiAK
IElzTG9nZ2VkSW5BUElFbmFibGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKaW5kZXggNzQ0ZmNiYTllZTJhMTk2
MTc1YTEzYTUxMjc5NDZkZjE0M2UwNGU3Ny4uMjFmMDY2ODQxMzc3NmZmYmZiNzFjMTc2YjE4NWQ3
MTY3NDM3ZTA3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCkBAIC01MzQsNiArNTM0LDE3IEBAIHZvaWQgV0tX
ZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nob3VsZERvd25ncmFkZVJl
ZmVycmVyRm9yVGVzdGluCiAjZW5kaWYKIH0KIAordm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3Rp
bmcoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCBlbmFibGVkLCB2b2lk
KiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hv
dWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmdGdW5jdGlvbiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIFdlYktp
dDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGRC
bG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhlbmFibGVkLCBbY29udGV4dCwgY29tcGxl
dGlvbkhhbmRsZXJdIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CisgICAg
fSk7CisjZWxzZQorICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOworI2VuZGlmCit9CisK
IHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUo
V0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJz
aXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGVGdW5jdGlvbiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQpA
QCAtNTQ2LDYgKzU1Nyw3IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0
VG9Db25zaXN0ZW50U3RhdGUoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhCiAgICAgc3RvcmUucmVz
ZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhbY2FsbGJhY2tBZ2dyZWdhdG9y
ID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKICAgICBzdG9yZS5yZXNldENy
b3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhbY2FsbGJhY2tBZ2dyZWdh
dG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKICAgICBzdG9yZS5zZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKHRy
dWUsIFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7
IH0pOworICAgIHN0b3JlLnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJk
UGFydHlDb29raWVzRm9yVGVzdGluZyhmYWxzZSwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxi
YWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiAgICAgc3RvcmUucmVzZXRQYXJhbWV0ZXJz
VG9EZWZhdWx0VmFsdWVzKFtjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3Iu
Y29weVJlZigpXSB7IH0pOwogICAgIHN0b3JlLnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNp
c3RlbnQoV2ViS2l0OjpTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3M6Ok5vLCBbY2FsbGJhY2tB
Z2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKICNlbHNlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3Rv
cmVSZWYuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9y
ZVJlZi5oCmluZGV4IGVmNDMzOTg2MDQ0YWExMTQ1MTU3ZjljN2JkYmZhZGI0YmRhZmRmM2YuLmM1
ZDg1NzlkNmJhOGQwMDJlYWFiOGZkYTNjZTg2N2M0YWZkNmQ4MjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCkBAIC0x
MTYsNiArMTE2LDggQEAgdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGlj
c0hhc0lzb2xhdGVkU2Vzc2lvbkZ1bmN0aW9uKShib29sIGhhc0kKIFdLX0VYUE9SVCB2b2lkIFdL
V2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNJc29sYXRlZFNlc3Npb24oV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgdm9pZCogY29udGV4dCwg
V0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0lzb2xhdGVkU2Vzc2lvbkZ1bmN0aW9uIGNh
bGxiYWNrKTsKIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmdGdW5jdGlvbikodm9p
ZCogZnVuY3Rpb25Db250ZXh0KTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3Rpbmco
V0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCBlbmFibGVkLCB2b2lkKiBj
b250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxk
RG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpOwor
dHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nRnVuY3Rpb24pKHZvaWQqIGZ1
bmN0aW9uQ29udGV4dCk7CitXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3Rpbmco
V0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCBlbmFibGVkLCB2b2lkKiBj
b250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxk
QmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmdGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxl
cik7CiB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzUmVzZXRUb0Nv
bnNpc3RlbnRTdGF0ZUZ1bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOwogV0tfRVhQT1JU
IHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUo
V0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJz
aXRlRGF0YVN0b3JlU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGVGdW5jdGlvbiBjb21w
bGV0aW9uSGFuZGxlcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IGNhMWY1YWIyNjE4YWRkNDYzNTUw
NDRhZTBmZmZmZGI2YTM3NjNlNGQuLjYzZTBjMzE3YTU3YjM4OTM3NWMyNDU4NjBlY2ExNzgwZTA1
NDVjNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTA1Nyw2ICsxMDU3LDE2IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3NQcm94eTo6c2V0U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKGJvb2wg
ZW5hYmxlZCwgQ29tCiAgICAgCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzczo6U2V0U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKGVuYWJsZWQp
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6c2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBib29sIGVuYWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAK
KyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRTaG91
bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhzZXNzaW9uSUQsIGVuYWJsZWQpLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CiAjZW5kaWYgLy8gRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZW5kUHJvY2Vz
c1dpbGxTdXNwZW5kSW1taW5lbnRseSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IGZiZjJjZTU5ZjhkMDVhZDdk
Yjg5OTNlMmZiY2QxNGI0NDRkNTE3MmIuLmI2MDJlNDQxNjE1MDc3MjY4NzFjNDg5ZGMxOGEyYzI2
ZmJlZWMxOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0xNTUsNiArMTU1LDcgQEAgcHVibGljOgogICAgIHZv
aWQgZGVsZXRlV2Vic2l0ZURhdGFJblVJUHJvY2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6
OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIE9wdGlvblNldDxXZWJzaXRl
RGF0YUZldGNoT3B0aW9uPiwgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKT4mJik7CiAg
ICAgdm9pZCBoYXNJc29sYXRlZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBz
ZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmcoYm9vbCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNG
b3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogI2VuZGlmCiAKICAgICB2b2lkIHByb2Nlc3NSZWFkeVRvU3VzcGVuZCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURh
dGFTdG9yZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29j
b2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCmluZGV4IGNkNGFiOWNiMmQ5OWZkNDkwMzg5NDZh
M2Q2ZDg4NTI0NDE1ZDk5ZDcuLjc4YzY2YTZmZTUwYTZkMzhhNjJlMGYyM2M1OWZjMGFhMDRiMTIw
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29h
L1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KQEAgLTI5LDYgKzI5LDcg
QEAKICNpbXBvcnQgIkNvb2tpZVN0b3JhZ2VVdGlsc0NGLmgiCiAjaW1wb3J0ICJTYW5kYm94VXRp
bGl0aWVzLmgiCiAjaW1wb3J0ICJTdG9yYWdlTWFuYWdlci5oIgorI2ltcG9ydCAiV2ViUHJlZmVy
ZW5jZXNLZXlzLmgiCiAjaW1wb3J0ICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIK
ICNpbXBvcnQgIldlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmgiCiAjaW1wb3J0IDxXZWJDb3Jl
L1JlZ2lzdHJhYmxlRG9tYWluLmg+CkBAIC02OCwxMSArNjksMTIgQEAgV2Vic2l0ZURhdGFTdG9y
ZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycygpCiAgICAgTlNVc2VyRGVm
YXVsdHMgKmRlZmF1bHRzID0gW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXTsK
ICAgICBib29sIHNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uID0gZmFsc2U7CiAgICAgYm9vbCBl
bmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlID0gZmFsc2U7Ci0gICAgYm9vbCBl
bmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTlNVUkxTZXNzaW9uU3dpdGNoaW5nID0gV2ViQ29y
ZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5pc0lUUFNlc3Npb25T
d2l0Y2hpbmdFbmFibGVkKCk7Ci0gICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291cmNlIHsgfTsKKyAgICBib29sIGVu
YWJsZVRoaXJkUGFydHlDb29raWVCbG9ja2luZ09uU2l0ZXNXaXRob3V0VXNlckludGVyYWN0aW9u
ID0gZmFsc2U7CiAgICAgYm9vbCBlbmFibGVMZWdhY3lUTFMgPSBbZGVmYXVsdHMgYm9vbEZvcktl
eTpAIldlYktpdEVuYWJsZUxlZ2FjeVRMUyJdOworICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluIHJlc291cmNlTG9hZFN0YXRpc3RpY3NNYW51YWxQcmV2YWxlbnRSZXNvdXJjZSB7IH07CiAj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBlbmFibGVSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGVidWdNb2RlID0gW2RlZmF1bHRzIGJvb2xGb3JLZXk6QCJJVFBEZWJ1Z01v
ZGUiXTsKKyAgICBlbmFibGVUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdPblNpdGVzV2l0aG91dFVz
ZXJJbnRlcmFjdGlvbiA9IFtkZWZhdWx0cyBib29sRm9yS2V5OltOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAiSW50ZXJuYWxEZWJ1ZyVAIiwgV2ViUHJlZmVyZW5jZXNLZXk6OmlzVGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nT25TaXRlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb25FbmFibGVkS2V5KCku
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKV1dOwogICAgIGF1dG8qIG1hbnVhbFByZXZhbGVudFJlc291
cmNlID0gW2RlZmF1bHRzIHN0cmluZ0ZvcktleTpAIklUUE1hbnVhbFByZXZhbGVudFJlc291cmNl
Il07CiAgICAgaWYgKG1hbnVhbFByZXZhbGVudFJlc291cmNlKSB7CiAgICAgICAgIFVSTCB1cmwg
eyBVUkwoKSwgbWFudWFsUHJldmFsZW50UmVzb3VyY2UgfTsKQEAgLTEzNiw3ICsxMzgsNyBAQCBX
ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkK
ICAgICAgICAgaGFzU3RhdGlzdGljc1Rlc3RpbmdDYWxsYmFjaygpLAogICAgICAgICBzaG91bGRJ
bmNsdWRlTG9jYWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLAogICAgICAgICBlbmFibGVS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlLAotICAgICAgICBlbmFibGVSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTlNVUkxTZXNzaW9uU3dpdGNoaW5nLAorICAgICAgICBlbmFibGVUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmdPblNpdGVzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiwKICAgICAgICAg
bV9jb25maWd1cmF0aW9uLT5kZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRW5hYmxlZCgpLAog
ICAgICAgICBtX2NvbmZpZ3VyYXRpb24tPmFsbExvYWRzQmxvY2tlZEJ5RGV2aWNlTWFuYWdlbWVu
dFJlc3RyaWN0aW9uc0ZvclRlc3RpbmcoKSwKICAgICAgICAgV1RGTW92ZShyZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2UpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCA4
Mzc1MWU5MzQ1Y2ZhN2JmZjNhNWE3NDVlYTg4ZjIwMGY5ZmI5ODc2Li42ZDcxYTFmY2MzMWMzOTIy
YzA4MDgwMzY2ZDIyOGQ0MWNiMjVhZmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMTc3OCw2ICsx
Nzc4LDIwIEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1Nob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluCiAgICAgfQogICAgIEFTU0VSVCghY29t
cGxldGlvbkhhbmRsZXIpOwogfQorCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldFJlc291cmNl
TG9hZFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhib29s
IGVuYWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3Jl
YXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAKKyAgICBmb3IgKGF1dG8mIHBy
b2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtQ
cm9jZXNzID0gcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpIHsKKyAgICAgICAgICAgIG5l
dHdvcmtQcm9jZXNzLT5zZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzRm9yVGVzdGluZyht
X3Nlc3Npb25JRCwgZW5hYmxlZCwgW2NhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVn
YXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgICAgICAgICBBU1NFUlQocHJvY2Vzc1Bvb2xzKCku
c2l6ZSgpID09IDEpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAg
QVNTRVJUKCFjb21wbGV0aW9uSGFuZGxlcik7Cit9CiAjZW5kaWYgLy8gRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKIAogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRDYWNoZU1heEFn
ZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhTZWNvbmRzIHNlY29uZHMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAppbmRleCA5NGRlOWVl
Y2YzYzU4OTNmOWZhOTJkMmNmYzUzMzE5MDM0ZjI3YmQwLi4zODUzNWI5ZjBjZjA2MzZhZjI1NjAy
N2RjMTdiMzNmZTBlOTRjZmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0xOTIsNiArMTkyLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgaGFzTG9jYWxTdG9yYWdlRm9yVGVzdGluZyhjb25zdCBVUkwmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBjb25zdDsKICAgICB2b2lkIGhhc0lzb2xhdGVk
U2Vzc2lvbkZvclRlc3RpbmcoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJikgY29uc3Q7CiAgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkRG93
bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CisgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBh
cnR5Q29va2llc0ZvclRlc3RpbmcoYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICNlbmRpZgogICAgIHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMo
U2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlc2V0Q2Fj
aGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCA5YzljNTAwYTEzMjY5MmVmZjhiYTk1YWVjMDdkZTQ2YWFjOTM5ZDRjLi4yY2ZkNjA1NDYyMDFj
NzhmMDI5OTIwZTMyNGIxZjNmYWZjOTdlOTg1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTktMTAtMTYgIEpvaG4g
V2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzb3VyY2UgTG9hZCBT
dGF0aXN0aWNzIChleHBlcmltZW50YWwpOiBCbG9jayBhbGwgdGhpcmQtcGFydHkgY29va2llcyBv
biB3ZWJzaXRlcyB3aXRob3V0IHByaW9yIHVzZXIgaW50ZXJhY3Rpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzAxNworICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNTYyNjI3MDg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhlc2UgY2hhbmdlcyBhcmUgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBiZSBh
YmxlIHRvIHRvZ2dsZSB0aGUgZnVuY3Rpb24KKyAgICAgICAgdGhyb3VnaCB0ZXN0UnVubmVyLnNl
dFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKCkuCisKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
Y3BwOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VUb1Bh
Z2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNldFN0YXRpc3RpY3NTaG91bGRCbG9j
a1RoaXJkUGFydHlDb29raWVzKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c3RhdGlzdGlj
c0NhbGxEaWRTZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzQ2FsbGJhY2spOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpU
ZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMp
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVz
dEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5k
bGUpOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkU2V0U2hvdWxkQmxvY2tUaGly
ZFBhcnR5Q29va2llcyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlv
bi5oOgorCiAyMDE5LTEwLTE2ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnku
Y29tPgogCiAgICAgICAgIER1bXBSZW5kZXJUcmVlIHNob3VsZCBjbGVhciBXVEZMb2dDaGFubmVs
U3RhdGU6Ok9uV2l0aEFjY3VtdWxhdGlvbiBzdGF0ZSBzZXQgYnkgdGVzdFJ1bm5lci5hY2N1bW11
bGF0ZUxvZ3NGb3JDaGFubmVsCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAppbmRleCBlMjZiNGZh
OGFlMjRmZWVjZjJlY2M5MTEwMGViOWYxNmIxOGEwNDE0Li5mYWVmMGEwM2ZjNGIwNTg5ZTc0M2M2
OTNlNDQyNzM4NDM2NzA0NjcwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAgLTM0MSw2
ICszNDEsNyBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdm9pZCBzdGF0aXN0aWNzUmVz
ZXRUb0NvbnNpc3RlbnRTdGF0ZShvYmplY3QgY29tcGxldGlvbkhhbmRsZXIpOwogICAgIGJvb2xl
YW4gaGFzU3RhdGlzdGljc0lzb2xhdGVkU2Vzc2lvbihET01TdHJpbmcgaG9zdE5hbWUpOwogICAg
IHZvaWQgc2V0U3RhdGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVycmVyKGJvb2xlYW4gdmFsdWUs
IG9iamVjdCBjYWxsYmFjayk7CisgICAgdm9pZCBzZXRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGly
ZFBhcnR5Q29va2llcyhib29sZWFuIHZhbHVlLCBvYmplY3QgY2FsbGJhY2spOwogCiAgICAgLy8g
SW5qZWN0ZWQgYnVuZGxlIGZvcm0gY2xpZW50LgogICAgIHZvaWQgaW5zdGFsbFRleHREaWRDaGFu
Z2VJblRleHRGaWVsZENhbGxiYWNrKG9iamVjdCBjYWxsYmFjayk7CmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmlu
ZGV4IGU3YWQwMTVmMzdlYmFjYWY5YjRmMmM5M2U1YmNkNGVlMmNiZTZjMjMuLmY1MmVkMWFhNTcz
OGI0MTJjNzNjMzkyZjhhNTBiMzlhMDBlMGNlZGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC0zMzIs
NiArMzMyLDExIEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdl
KFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBtCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwg
IkNhbGxEaWRTZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzIikpIHsKKyAgICAgICAgbV90
ZXN0UnVubmVyLT5zdGF0aXN0aWNzQ2FsbERpZFNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tp
ZXNDYWxsYmFjaygpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgaWYgKFdLU3RyaW5n
SXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJDYWxsRGlkUmVzZXRTdGF0aXN0aWNz
VG9Db25zaXN0ZW50U3RhdGUiKSkgewogICAgICAgICBtX3Rlc3RSdW5uZXItPnN0YXRpc3RpY3ND
YWxsRGlkUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUNhbGxiYWNrKCk7CiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuY3BwCmluZGV4IGJhNTk5M2M3YTIyMmZiMzBhN2MwNzU0Y2RiYTc1OTZhMmI4MTM5YmIuLmI0
ZjBiNGI2M2E0ZWVkYzNlYzNhMmJlZmY1ZDIxNmNmY2I5MTk2ZjkgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtNzQz
LDYgKzc0Myw3IEBAIGVudW0gewogICAgIFN0YXRpc3RpY3NEaWRSZXNldFRvQ29uc2lzdGVudFN0
YXRlQ2FsbGJhY2tJRCwKICAgICBTdGF0aXN0aWNzRGlkU2V0QmxvY2tDb29raWVzRm9ySG9zdENh
bGxiYWNrSUQsCiAgICAgU3RhdGlzdGljc0RpZFNldFNob3VsZERvd25ncmFkZVJlZmVycmVyQ2Fs
bGJhY2tJRCwKKyAgICBTdGF0aXN0aWNzRGlkU2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2ll
c0NhbGxiYWNrSUQsCiAgICAgQWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNDYWxsYmFja0lELAogICAg
IERpZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFsc0NhbGxiYWNrSUQsCiAgICAgR2V0QXBwbGlj
YXRpb25NYW5pZmVzdENhbGxiYWNrSUQsCkBAIC0yMjA4LDYgKzIyMDksMjMgQEAgdm9pZCBUZXN0
UnVubmVyOjpzdGF0aXN0aWNzQ2FsbERpZFNldFNob3VsZERvd25ncmFkZVJlZmVycmVyQ2FsbGJh
Y2soKQogICAgIGNhbGxUZXN0UnVubmVyQ2FsbGJhY2soU3RhdGlzdGljc0RpZFNldFNob3VsZERv
d25ncmFkZVJlZmVycmVyQ2FsbGJhY2tJRCk7CiB9CiAKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0U3Rh
dGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoYm9vbCB2YWx1ZSwgSlNWYWx1ZVJl
ZiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAobV9oYXNTZXRCbG9ja1RoaXJkUGFydHlD
b29raWVzQ2FsbGJhY2spCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBjYWNoZVRlc3RSdW5u
ZXJDYWxsYmFjayhTdGF0aXN0aWNzRGlkU2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0Nh
bGxiYWNrSUQsIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1Jl
Zj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJT
ZXRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyIpKTsKKyAgICBXS1JldGFp
blB0cjxXS0Jvb2xlYW5SZWY+IG1lc3NhZ2VCb2R5ID0gYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUo
dmFsdWUpKTsKKyAgICBXS0J1bmRsZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5k
bGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHku
Z2V0KCksIG51bGxwdHIpOworICAgIG1faGFzU2V0QmxvY2tUaGlyZFBhcnR5Q29va2llc0NhbGxi
YWNrID0gdHJ1ZTsKK30KKwordm9pZCBUZXN0UnVubmVyOjpzdGF0aXN0aWNzQ2FsbERpZFNldFNo
b3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNDYWxsYmFjaygpCit7CisgICAgY2FsbFRlc3RSdW5u
ZXJDYWxsYmFjayhTdGF0aXN0aWNzRGlkU2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0Nh
bGxiYWNrSUQpOworfQorCiB2b2lkIFRlc3RSdW5uZXI6OnN0YXRpc3RpY3NDYWxsQ2xlYXJUaHJv
dWdoV2Vic2l0ZURhdGFSZW1vdmFsQ2FsbGJhY2soKQogewogICAgIGNhbGxUZXN0UnVubmVyQ2Fs
bGJhY2soU3RhdGlzdGljc0RpZENsZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbENhbGxiYWNr
SUQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuaAppbmRleCBjMWYxMjRmM2IxM2NhZTkxYTg5YjdjYjg2MjViYjQ4MjI5MmQwYjgzLi5l
MDM5NGU2NTg4ZTM5ZmQzNWY4N2I1YjczMmM1NzZhYzEyZmZkNWJlIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtNDQwLDYg
KzQ0MCw4IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1N0YXRpc3RpY3NJc29sYXRlZFNlc3Npb24o
SlNTdHJpbmdSZWYgaG9zdE5hbWUpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1Nob3VsZERvd25n
cmFkZVJlZmVycmVyKGJvb2wsIEpTVmFsdWVSZWYgY2FsbGJhY2spOwogICAgIHZvaWQgc3RhdGlz
dGljc0NhbGxEaWRTZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlckNhbGxiYWNrKCk7CisgICAgdm9p
ZCBzZXRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhib29sLCBKU1ZhbHVl
UmVmIGNhbGxiYWNrKTsKKyAgICB2b2lkIHN0YXRpc3RpY3NDYWxsRGlkU2V0U2hvdWxkQmxvY2tU
aGlyZFBhcnR5Q29va2llc0NhbGxiYWNrKCk7CiAgICAgdm9pZCBzdGF0aXN0aWNzUmVzZXRUb0Nv
bnNpc3RlbnRTdGF0ZShKU1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHN0
YXRpc3RpY3NDYWxsRGlkUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUNhbGxiYWNrKCk7CiAKQEAgLTU3
Myw2ICs1NzUsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV91c2VyU3R5bGVTaGVldEVuYWJsZWQg
eyBmYWxzZSB9OwogICAgIGJvb2wgbV9kdW1wQWxsSFRUUFJlZGlyZWN0ZWRSZXNwb25zZUhlYWRl
cnMgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNTZXREb3duZ3JhZGVSZWZlcnJlckNhbGxiYWNr
IHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzU2V0QmxvY2tUaGlyZFBhcnR5Q29va2llc0NhbGxi
YWNrIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCBlOWQ0MjhlODM0ZjZkY2NkZTk3M2UyZWVl
OGI1MjJmODkzNGZkMDYxLi4yODIxZWQxMmQwYTllNTRlZGI4NWNlZDQxOGI3MDg2NDM4NmI4ZjFl
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtMzU1Myw2
ICszNTUzLDE0IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NTaG91bGREb3du
Z3JhZGVSZWZlcnJlcihib29sIHZhbHVlKQogICAgIG1fY3VycmVudEludm9jYXRpb24tPmRpZFNl
dFNob3VsZERvd25ncmFkZVJlZmVycmVyKCk7CiB9CiAKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNl
dFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGJvb2wgdmFsdWUpCit7Cisg
ICAgUmVzb3VyY2VTdGF0aXN0aWNzQ2FsbGJhY2tDb250ZXh0IGNvbnRleHQoKnRoaXMpOworICAg
IFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGRCbG9ja1Ro
aXJkUGFydHlDb29raWVzRm9yVGVzdGluZyhUZXN0Q29udHJvbGxlcjo6d2Vic2l0ZURhdGFTdG9y
ZSgpLCB2YWx1ZSwgJmNvbnRleHQsIHJlc291cmNlU3RhdGlzdGljc1ZvaWRSZXN1bHRDYWxsYmFj
ayk7CisgICAgcnVuVW50aWwoY29udGV4dC5kb25lLCBub1RpbWVvdXQpOworICAgIG1fY3VycmVu
dEludm9jYXRpb24tPmRpZFNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoKTsKK30KKwog
dm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50U3RhdGUoKQog
ewogICAgIFJlc291cmNlU3RhdGlzdGljc0NhbGxiYWNrQ29udGV4dCBjb250ZXh0KCp0aGlzKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCA0YmY5MDIzYWI3MjJh
MDkxMDFlZDI1MGZiODI4Y2I3ZjJhYjVhNDZlLi42ODBkMmUyNDYxNzFjYzY2Y2MzNmJmYWI0ZWVk
ODNkNTdkYmFhZTQ5IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBA
IC0yNTIsNiArMjUyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3RhdGlzdGljc0NhY2hlTWF4
QWdlQ2FwKGRvdWJsZSBzZWNvbmRzKTsKICAgICBib29sIGhhc1N0YXRpc3RpY3NJc29sYXRlZFNl
c3Npb24oV0tTdHJpbmdSZWYgaG9zdE5hbWUpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1Nob3Vs
ZERvd25ncmFkZVJlZmVycmVyKGJvb2wgdmFsdWUpOworICAgIHZvaWQgc2V0U3RhdGlzdGljc1No
b3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoYm9vbCB2YWx1ZSk7CiAgICAgdm9pZCBzdGF0aXN0
aWNzUmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpOwogCiAgICAgdm9pZCBnZXRBbGxTdG9yYWdlQWNj
ZXNzRW50cmllcygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52
b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApp
bmRleCA4ZmU5Mjc5Y2ZlZjEwYjQ5YTQ2M2VkMjYyMjJkNmM2MDAyNzQyNzNjLi4zYzYyNjljNDkw
NjRkYTNkODlmNzU5YWQzNmU4ZTFjNDUxZGIyNDUyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtMTU0Miw2ICsxNTQyLDEzIEBAIFdLUmV0YWluUHRyPFdL
VHlwZVJlZj4gVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9t
SW5qZWN0ZWRCCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICAKKyAgICBpZiAo
V0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldFN0YXRpc3RpY3NT
aG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzIikpIHsKKyAgICAgICAgQVNTRVJUKFdLR2V0VHlw
ZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS0Jvb2xlYW5HZXRUeXBlSUQoKSk7CisgICAgICAgIFdLQm9v
bGVhblJlZiB2YWx1ZSA9IHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4obWVzc2FnZUJvZHkpOwor
ICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0U3RhdGlzdGljc1Nob3VsZEJs
b2NrVGhpcmRQYXJ0eUNvb2tpZXMoV0tCb29sZWFuR2V0VmFsdWUodmFsdWUpKTsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIAogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VU
RjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzIikpIHsK
ICAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnJlbW92ZUFsbFNlc3Npb25DcmVk
ZW50aWFscygpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE4MjUsNiArMTgzMiwxMiBA
QCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRTZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlcigpCiAg
ICAgV0tQYWdlUG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKFRlc3RDb250cm9sbGVyOjpzaW5n
bGV0b24oKS5tYWluV2ViVmlldygpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCAwKTsKIH0K
IAordm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkU2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2ll
cygpCit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRX
SyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2FsbERpZFNldFNob3VsZEJsb2NrVGhp
cmRQYXJ0eUNvb2tpZXMiKSk7CisgICAgV0tQYWdlUG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxl
KFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wYWdlKCksIG1lc3Nh
Z2VOYW1lLmdldCgpLCBudWxscHRyKTsKK30KKwogdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVz
ZXRTdGF0aXN0aWNzVG9Db25zaXN0ZW50U3RhdGUoKQogewogICAgIFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoIkNhbGxEaWRSZXNldFN0YXRpc3RpY3NUb0NvbnNpc3RlbnRTdGF0ZSIpKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAppbmRleCBhMjY1ZWI5YjI2ZTk0ZDFlNGE4ZmZk
Y2VmNWRlMjk0Mzk1MWJiNDA1Li43ODA2ZmEyOTdkZjJlMDE2YTZiOGI0YTA2NmM1NjZlM2E2OGFm
MmYxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCkBAIC03NCw2ICs3
NCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlkQ2xlYXJTdGF0aXN0aWNzVGhyb3VnaFdlYnNp
dGVEYXRhUmVtb3ZhbCgpOwogICAgIHZvaWQgZGlkU2V0U2hvdWxkRG93bmdyYWRlUmVmZXJyZXIo
KTsKKyAgICB2b2lkIGRpZFNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoKTsKICAgICB2
b2lkIGRpZFJlc2V0U3RhdGlzdGljc1RvQ29uc2lzdGVudFN0YXRlKCk7CiAgICAgdm9pZCBkaWRT
ZXRCbG9ja0Nvb2tpZXNGb3JIb3N0KCk7CiAgICAgdm9pZCBkaWRTZXRTdGF0aXN0aWNzRGVidWdN
b2RlKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggY2Q5ZTFjOGNhNTI4Mjk0YjgyMjkzNjI3NGM4NzljODhkY2E0OTMwZS4u
ODExYjAyYWVlMDNhMDc0MTE3MDA5MDQ1YjdlOGZlNDY5YzA0MGY0YiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE2IEBACisyMDE5LTEwLTE2ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFJlc291cmNlIExvYWQgU3RhdGlzdGljcyAoZXhwZXJpbWVudGFsKTogQmxvY2sg
YWxsIHRoaXJkLXBhcnR5IGNvb2tpZXMgb24gd2Vic2l0ZXMgd2l0aG91dCBwcmlvciB1c2VyIGlu
dGVyYWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDMwMTcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU2MjYyNzA4PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL3RoaXJkLXBhcnR5LWNvb2tpZS1ibG9ja2luZy1vbi1zaXRlcy13aXRo
b3V0LXVzZXItaW50ZXJhY3Rpb24tZGF0YWJhc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdGhpcmQtcGFydHktY29va2ll
LWJsb2NraW5nLW9uLXNpdGVzLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlvbi1kYXRhYmFzZS5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdGhp
cmQtcGFydHktY29va2llLWJsb2NraW5nLW9uLXNpdGVzLXdpdGhvdXQtdXNlci1pbnRlcmFjdGlv
bi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy90aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmctb24tc2l0ZXMtd2l0aG91dC11
c2VyLWludGVyYWN0aW9uLmh0bWw6IEFkZGVkLgorCiAyMDE5LTEwLTE2ICBSdXNzZWxsIEVwc3Rl
aW4gIDxyZXBzdGVpbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ29ycmVjdCBUZXN0RXhwZWN0YXRp
b25zIGZyb20gcjI1MTExOS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy90aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmctb24tc2l0ZXMt
d2l0aG91dC11c2VyLWludGVyYWN0aW9uLWRhdGFiYXNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy90aGlyZC1wYXJ0eS1jb29raWUt
YmxvY2tpbmctb24tc2l0ZXMtd2l0aG91dC11c2VyLWludGVyYWN0aW9uLWRhdGFiYXNlLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hN2ZlZDNhNWNkYjAxMTVlNGEwOTQ0MjliOTVhODE4MWNmZjk0
ZjJjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL3RoaXJkLXBhcnR5LWNvb2tpZS1ibG9ja2luZy1vbi1zaXRlcy13aXRob3V0
LXVzZXItaW50ZXJhY3Rpb24tZGF0YWJhc2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjUgQEAK
K1Rlc3RzIHRoYXQgYWxsIHRoaXJkLXBhcnR5IGNvb2tpZXMgYXJlIGJsb2NrZWQgdW5kZXIgd2Vi
c2l0ZXMgdGhhdCBoYXZlIG5vdCByZWNlaXZlZCB1c2VyIGludGVyYWN0aW9uLgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisgIAorCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWUxLS0+Jwor
LS0tLS0tLS0KK0JlZm9yZSB1c2VyIGludGVyYWN0aW9uLCBzaG91bGQgcmVjZWl2ZSBubyBjb29r
aWVzLgorRGlkIG5vdCByZWNlaXZlIGNvb2tpZSBuYW1lZCAnZmlyc3RQYXJ0eUNvb2tpZScuCitE
aWQgbm90IHJlY2VpdmUgY29va2llIG5hbWVkICdwYXJ0aXRpb25lZENvb2tpZScuCitDbGllbnQt
c2lkZSBkb2N1bWVudC5jb29raWU6CisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZTItLT4n
CistLS0tLS0tLQorQWZ0ZXIgdXNlciBpbnRlcmFjdGlvbiwgc2hvdWxkIHJlY2VpdmUgZmlyc3Qt
cGFydHkgY29va2llLgorUmVjZWl2ZWQgY29va2llIG5hbWVkICdmaXJzdFBhcnR5Q29va2llJy4K
K0RpZCBub3QgcmVjZWl2ZSBjb29raWUgbmFtZWQgJ3BhcnRpdGlvbmVkQ29va2llJy4KK0NsaWVu
dC1zaWRlIGRvY3VtZW50LmNvb2tpZTogZmlyc3RQYXJ0eUNvb2tpZT12YWx1ZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3RoaXJkLXBh
cnR5LWNvb2tpZS1ibG9ja2luZy1vbi1zaXRlcy13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24tZGF0
YWJhc2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy90aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmctb24tc2l0ZXMtd2l0aG91dC11c2VyLWludGVy
YWN0aW9uLWRhdGFiYXNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmM5MjMzYzA0ZjE2ZDU0ZGY1NzdhYzJi
Y2E0MzlmZGVhNTBiNzc2NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy90aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmctb24t
c2l0ZXMtd2l0aG91dC11c2VyLWludGVyYWN0aW9uLWRhdGFiYXNlLmh0bWwKQEAgLTAsMCArMSw3
OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAgICA8bWV0
YSBjaGFyc2V0PSJVVEYtOCI+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9q
cy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJU
ZXN0cyB0aGF0IGFsbCB0aGlyZC1wYXJ0eSBjb29raWVzIGFyZSBibG9ja2VkIHVuZGVyIHdlYnNp
dGVzIHRoYXQgaGF2ZSBub3QgcmVjZWl2ZWQgdXNlciBpbnRlcmFjdGlvbi4iKTsKKyAgICBqc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIGNvbnN0IHBhcnRpdGlvbkhvc3QgPSAiMTI3LjAuMC4x
OjgwMDAiOworICAgIGNvbnN0IHBhcnRpdGlvbk9yaWdpbiA9ICJodHRwOi8vIiArIHBhcnRpdGlv
bkhvc3Q7CisgICAgY29uc3QgdGhpcmRQYXJ0eU9yaWdpbiA9ICJodHRwOi8vbG9jYWxob3N0Ojgw
MDAiOworICAgIGNvbnN0IHJlc291cmNlUGF0aCA9ICIvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9y
ZXNvdXJjZXMiOworICAgIGNvbnN0IHRoaXJkUGFydHlCYXNlVXJsID0gdGhpcmRQYXJ0eU9yaWdp
biArIHJlc291cmNlUGF0aDsKKyAgICBjb25zdCBmaXJzdFBhcnR5Q29va2llTmFtZSA9ICJmaXJz
dFBhcnR5Q29va2llIjsKKyAgICBjb25zdCBzdWJQYXRoVG9TZXRGaXJzdFBhcnR5Q29va2llID0g
Ii9zZXQtY29va2llLnBocD9uYW1lPSIgKyBmaXJzdFBhcnR5Q29va2llTmFtZSArICImdmFsdWU9
dmFsdWUiOworICAgIGNvbnN0IHBhcnRpdGlvbmVkQ29va2llTmFtZSA9ICJwYXJ0aXRpb25lZENv
b2tpZSI7CisgICAgY29uc3Qgc3ViUGF0aFRvU2V0UGFydGl0aW9uZWRDb29raWUgPSAiL3NldC1j
b29raWUucGhwP25hbWU9IiArIHBhcnRpdGlvbmVkQ29va2llTmFtZSArICImdmFsdWU9dmFsdWUi
OworICAgIGNvbnN0IHJldHVyblVybCA9IHBhcnRpdGlvbk9yaWdpbiArICIvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy90aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmctb24tc2l0ZXMtd2l0aG91dC11
c2VyLWludGVyYWN0aW9uLmh0bWwiOworICAgIGNvbnN0IHN1YlBhdGhUb0dldENvb2tpZXMgPSAi
L2dldC1jb29raWVzLnBocD9uYW1lMT0iICsgZmlyc3RQYXJ0eUNvb2tpZU5hbWUgKyAiJm5hbWUy
PSIgKyBwYXJ0aXRpb25lZENvb2tpZU5hbWU7CisKKyAgICBmdW5jdGlvbiBvcGVuSWZyYW1lKHVy
bCwgb25Mb2FkSGFuZGxlcikgeworICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgICAgIGVsZW1lbnQuc3JjID0gdXJsOworICAgICAg
ICBpZiAob25Mb2FkSGFuZGxlcikgeworICAgICAgICAgICAgZWxlbWVudC5vbmxvYWQgPSBvbkxv
YWRIYW5kbGVyOworICAgICAgICB9CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
ZWxlbWVudCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgc3dp
dGNoIChkb2N1bWVudC5sb2NhdGlvbi5oYXNoKSB7CisgICAgICAgICAgICBjYXNlICIjc3RlcDEi
OgorICAgICAgICAgICAgICAgIC8vIFNldCBmaXJzdC1wYXJ0eSBjb29raWUgZm9yIGxvY2FsaG9z
dC4KKyAgICAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5ocmVmID0gdGhpcmRQYXJ0eUJh
c2VVcmwgKyBzdWJQYXRoVG9TZXRGaXJzdFBhcnR5Q29va2llICsgIiMiICsgcmV0dXJuVXJsICsg
IiNzdGVwMiI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICIjc3Rl
cDIiOgorICAgICAgICAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPSAic3RlcDMiOwor
ICAgICAgICAgICAgICAgIC8vIENoZWNrIHRoYXQgdGhlIGNvb2tpZSBpcyBibG9ja2VkIGZvciBs
b2NhbGhvc3QgdW5kZXIgMTI3LjAuMC4xIGV2ZW4gdGhvdWdoIGxvY2FsaG9zdCBpcyBub3QgcHJl
dmFsZW50LgorICAgICAgICAgICAgICAgIG9wZW5JZnJhbWUodGhpcmRQYXJ0eUJhc2VVcmwgKyBz
dWJQYXRoVG9HZXRDb29raWVzICsgIiZtZXNzYWdlPUJlZm9yZSB1c2VyIGludGVyYWN0aW9uLCBz
aG91bGQgcmVjZWl2ZSBubyBjb29raWVzLiIsIHJ1blRlc3QpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSAiI3N0ZXAzIjoKKyAgICAgICAgICAgICAgICBkb2N1bWVu
dC5sb2NhdGlvbi5oYXNoID0gInN0ZXA0IjsKKyAgICAgICAgICAgICAgICAvLyBQcm9kdWNlIHVz
ZXIgaW50ZXJhY3Rpb24gZm9yIHRoZSBmaXJzdC1wYXJ0eSB0byBhbGxvdyB0aGlyZC1wYXJ0eSBj
b29raWUgYWNjZXNzLgorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc0hh
c0hhZFVzZXJJbnRlcmFjdGlvbihwYXJ0aXRpb25PcmlnaW4sIHRydWUsIGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NVcGRhdGVDb29raWVCbG9j
a2luZyhmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIHRoYXQg
dGhlIGNvb2tpZSBpcyBubyBsb25nZXIgYmxvY2tlZCBmb3IgbG9jYWxob3N0IHVuZGVyIDEyNy4w
LjAuMS4KKyAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5JZnJhbWUodGhpcmRQYXJ0eUJhc2VV
cmwgKyBzdWJQYXRoVG9HZXRDb29raWVzICsgICImbWVzc2FnZT1BZnRlciB1c2VyIGludGVyYWN0
aW9uLCBzaG91bGQgcmVjZWl2ZSBmaXJzdC1wYXJ0eSBjb29raWUuIiwgcnVuVGVzdCk7CisgICAg
ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSAiI3N0ZXA0IjoKKyAgICAgICAgICAgICAgICB0ZXN0
UnVubmVyLnNldFVzZUlUUERhdGFiYXNlKGZhbHNlKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVu
bmVyLnNldFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGZhbHNlLCBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmlu
aXNoSlNUZXN0KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5oYXNoID09PSAi
IikgeworICAgICAgICB0ZXN0UnVubmVyLnNldFVzZUlUUERhdGFiYXNlKHRydWUpOworICAgICAg
ICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGlmICh0
ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHRoaXJkUGFydHlPcmlnaW4p
KQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkxvY2FsaG9zdCB3YXMgY2xhc3NpZmllZCBh
cyBwcmV2YWxlbnQgcmVzb3VyY2UgYmVmb3JlIHRoZSB0ZXN0IHN0YXJ0cy4iKTsKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CisgICAgICAgICAgICBkb2N1
bWVudC5sb2NhdGlvbi5oYXNoID0gInN0ZXAxIjsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0
U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXModHJ1ZSwgcnVuVGVzdCk7Cisg
ICAgICAgIH0pOworICAgIH0gZWxzZSB7CisgICAgICAgIHJ1blRlc3QoKTsKKyAgICB9Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy90aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmctb24t
c2l0ZXMtd2l0aG91dC11c2VyLWludGVyYWN0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy90aGlyZC1wYXJ0eS1jb29raWUtYmxv
Y2tpbmctb24tc2l0ZXMtd2l0aG91dC11c2VyLWludGVyYWN0aW9uLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hN2ZlZDNhNWNkYjAxMTVlNGEwOTQ0MjliOTVhODE4MWNmZjk0ZjJjCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L3RoaXJkLXBhcnR5LWNvb2tpZS1ibG9ja2luZy1vbi1zaXRlcy13aXRob3V0LXVzZXItaW50ZXJh
Y3Rpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjUgQEAKK1Rlc3RzIHRoYXQgYWxsIHRoaXJk
LXBhcnR5IGNvb2tpZXMgYXJlIGJsb2NrZWQgdW5kZXIgd2Vic2l0ZXMgdGhhdCBoYXZlIG5vdCBy
ZWNlaXZlZCB1c2VyIGludGVyYWN0aW9uLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisgIAor
CistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWUxLS0+JworLS0tLS0tLS0KK0JlZm9yZSB1c2Vy
IGludGVyYWN0aW9uLCBzaG91bGQgcmVjZWl2ZSBubyBjb29raWVzLgorRGlkIG5vdCByZWNlaXZl
IGNvb2tpZSBuYW1lZCAnZmlyc3RQYXJ0eUNvb2tpZScuCitEaWQgbm90IHJlY2VpdmUgY29va2ll
IG5hbWVkICdwYXJ0aXRpb25lZENvb2tpZScuCitDbGllbnQtc2lkZSBkb2N1bWVudC5jb29raWU6
CisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZTItLT4nCistLS0tLS0tLQorQWZ0ZXIgdXNl
ciBpbnRlcmFjdGlvbiwgc2hvdWxkIHJlY2VpdmUgZmlyc3QtcGFydHkgY29va2llLgorUmVjZWl2
ZWQgY29va2llIG5hbWVkICdmaXJzdFBhcnR5Q29va2llJy4KK0RpZCBub3QgcmVjZWl2ZSBjb29r
aWUgbmFtZWQgJ3BhcnRpdGlvbmVkQ29va2llJy4KK0NsaWVudC1zaWRlIGRvY3VtZW50LmNvb2tp
ZTogZmlyc3RQYXJ0eUNvb2tpZT12YWx1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3RoaXJkLXBhcnR5LWNvb2tpZS1ibG9ja2luZy1v
bi1zaXRlcy13aXRob3V0LXVzZXItaW50ZXJhY3Rpb24uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy90aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmct
b24tc2l0ZXMtd2l0aG91dC11c2VyLWludGVyYWN0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2RmNzMy
MzYxMTM5ZTA4YzA5YzMzN2FmMTI3Y2NiNDhhYzJkODllOAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy90aGlyZC1wYXJ0eS1j
b29raWUtYmxvY2tpbmctb24tc2l0ZXMtd2l0aG91dC11c2VyLWludGVyYWN0aW9uLmh0bWwKQEAg
LTAsMCArMSw3NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4K
KyAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJl
c291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorICAgIGRlc2Ny
aXB0aW9uKCJUZXN0cyB0aGF0IGFsbCB0aGlyZC1wYXJ0eSBjb29raWVzIGFyZSBibG9ja2VkIHVu
ZGVyIHdlYnNpdGVzIHRoYXQgaGF2ZSBub3QgcmVjZWl2ZWQgdXNlciBpbnRlcmFjdGlvbi4iKTsK
KyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIGNvbnN0IHBhcnRpdGlvbkhvc3QgPSAi
MTI3LjAuMC4xOjgwMDAiOworICAgIGNvbnN0IHBhcnRpdGlvbk9yaWdpbiA9ICJodHRwOi8vIiAr
IHBhcnRpdGlvbkhvc3Q7CisgICAgY29uc3QgdGhpcmRQYXJ0eU9yaWdpbiA9ICJodHRwOi8vbG9j
YWxob3N0OjgwMDAiOworICAgIGNvbnN0IHJlc291cmNlUGF0aCA9ICIvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9yZXNvdXJjZXMiOworICAgIGNvbnN0IHRoaXJkUGFydHlCYXNlVXJsID0gdGhpcmRQ
YXJ0eU9yaWdpbiArIHJlc291cmNlUGF0aDsKKyAgICBjb25zdCBmaXJzdFBhcnR5Q29va2llTmFt
ZSA9ICJmaXJzdFBhcnR5Q29va2llIjsKKyAgICBjb25zdCBzdWJQYXRoVG9TZXRGaXJzdFBhcnR5
Q29va2llID0gIi9zZXQtY29va2llLnBocD9uYW1lPSIgKyBmaXJzdFBhcnR5Q29va2llTmFtZSAr
ICImdmFsdWU9dmFsdWUiOworICAgIGNvbnN0IHBhcnRpdGlvbmVkQ29va2llTmFtZSA9ICJwYXJ0
aXRpb25lZENvb2tpZSI7CisgICAgY29uc3Qgc3ViUGF0aFRvU2V0UGFydGl0aW9uZWRDb29raWUg
PSAiL3NldC1jb29raWUucGhwP25hbWU9IiArIHBhcnRpdGlvbmVkQ29va2llTmFtZSArICImdmFs
dWU9dmFsdWUiOworICAgIGNvbnN0IHJldHVyblVybCA9IHBhcnRpdGlvbk9yaWdpbiArICIvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy90aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmctb24tc2l0ZXMt
d2l0aG91dC11c2VyLWludGVyYWN0aW9uLmh0bWwiOworICAgIGNvbnN0IHN1YlBhdGhUb0dldENv
b2tpZXMgPSAiL2dldC1jb29raWVzLnBocD9uYW1lMT0iICsgZmlyc3RQYXJ0eUNvb2tpZU5hbWUg
KyAiJm5hbWUyPSIgKyBwYXJ0aXRpb25lZENvb2tpZU5hbWU7CisKKyAgICBmdW5jdGlvbiBvcGVu
SWZyYW1lKHVybCwgb25Mb2FkSGFuZGxlcikgeworICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgICAgIGVsZW1lbnQuc3JjID0gdXJs
OworICAgICAgICBpZiAob25Mb2FkSGFuZGxlcikgeworICAgICAgICAgICAgZWxlbWVudC5vbmxv
YWQgPSBvbkxvYWRIYW5kbGVyOworICAgICAgICB9CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBw
ZW5kQ2hpbGQoZWxlbWVudCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAg
ICAgICAgc3dpdGNoIChkb2N1bWVudC5sb2NhdGlvbi5oYXNoKSB7CisgICAgICAgICAgICBjYXNl
ICIjc3RlcDEiOgorICAgICAgICAgICAgICAgIC8vIFNldCBmaXJzdC1wYXJ0eSBjb29raWUgZm9y
IGxvY2FsaG9zdC4KKyAgICAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5ocmVmID0gdGhp
cmRQYXJ0eUJhc2VVcmwgKyBzdWJQYXRoVG9TZXRGaXJzdFBhcnR5Q29va2llICsgIiMiICsgcmV0
dXJuVXJsICsgIiNzdGVwMiI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBj
YXNlICIjc3RlcDIiOgorICAgICAgICAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggPSAi
c3RlcDMiOworICAgICAgICAgICAgICAgIC8vIENoZWNrIHRoYXQgdGhlIGNvb2tpZSBpcyBibG9j
a2VkIGZvciBsb2NhbGhvc3QgdW5kZXIgMTI3LjAuMC4xIGV2ZW4gdGhvdWdoIGxvY2FsaG9zdCBp
cyBub3QgcHJldmFsZW50LgorICAgICAgICAgICAgICAgIG9wZW5JZnJhbWUodGhpcmRQYXJ0eUJh
c2VVcmwgKyBzdWJQYXRoVG9HZXRDb29raWVzICsgIiZtZXNzYWdlPUJlZm9yZSB1c2VyIGludGVy
YWN0aW9uLCBzaG91bGQgcmVjZWl2ZSBubyBjb29raWVzLiIsIHJ1blRlc3QpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAiI3N0ZXAzIjoKKyAgICAgICAgICAgICAg
ICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0gInN0ZXA0IjsKKyAgICAgICAgICAgICAgICAvLyBQ
cm9kdWNlIHVzZXIgaW50ZXJhY3Rpb24gZm9yIHRoZSBmaXJzdC1wYXJ0eSB0byBhbGxvdyB0aGly
ZC1wYXJ0eSBjb29raWUgYWNjZXNzLgorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3Rh
dGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbihwYXJ0aXRpb25PcmlnaW4sIHRydWUsIGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NVcGRhdGVD
b29raWVCbG9ja2luZyhmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIENo
ZWNrIHRoYXQgdGhlIGNvb2tpZSBpcyBubyBsb25nZXIgYmxvY2tlZCBmb3IgbG9jYWxob3N0IHVu
ZGVyIDEyNy4wLjAuMS4KKyAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5JZnJhbWUodGhpcmRQ
YXJ0eUJhc2VVcmwgKyBzdWJQYXRoVG9HZXRDb29raWVzICsgICImbWVzc2FnZT1BZnRlciB1c2Vy
IGludGVyYWN0aW9uLCBzaG91bGQgcmVjZWl2ZSBmaXJzdC1wYXJ0eSBjb29raWUuIiwgcnVuVGVz
dCk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAiI3N0ZXA0IjoKKyAgICAgICAgICAg
ICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVz
KGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVy
ZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChkb2N1bWVudC5sb2NhdGlv
bi5oYXNoID09PSAiIikgeworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJl
c291cmNlKHRoaXJkUGFydHlPcmlnaW4pKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkxv
Y2FsaG9zdCB3YXMgY2xhc3NpZmllZCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UgYmVmb3JlIHRoZSB0
ZXN0IHN0YXJ0cy4iKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNU
ZXh0KCk7CisgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0gInN0ZXAxIjsKKyAg
ICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNv
b2tpZXModHJ1ZSwgcnVuVGVzdCk7CisgICAgICAgIH0pOworICAgIH0gZWxzZSB7CisgICAgICAg
IHJ1blRlc3QoKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>