<?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>69359</bug_id>
          
          <creation_ts>2011-10-04 11:34:48 -0700</creation_ts>
          <short_desc>CSP connect-src directive should block redirects</short_desc>
          <delta_ts>2016-02-08 17:27:01 -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>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>BlinkMergeCandidate, InRadar, WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>153622</dependson>
          <blocked>85558</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>abarth</cc>
    
    <cc>aestes</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>felipe</cc>
    
    <cc>japhet</cc>
    
    <cc>mkwst</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>477794</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-10-04 11:34:48 -0700</bug_when>
    <thetext>As pointed out by Adam in bug 69353, we should be blocking redirect of XHR, EventSource and WebSockets if there is a connect-src directive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477859</commentid>
    <comment_count>1</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-10-04 13:05:20 -0700</bug_when>
    <thetext>Actually, I don&apos;t think WebSockets support redirects, but the other two do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477862</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-10-04 13:09:42 -0700</bug_when>
    <thetext>This is made slightly complicated by the fact that we don&apos;t get a chance to stop redirects in the same class that started the load.  I am told this is because we don&apos;t want to block an XHR on a worker from making progress, so all policy information has to be on the ThreadableLoader itself. 

One way we could do this is to make ThreadableLoader aware of either the whole ContentSecurityPolicy object (making access to it safe from multiple threads). Another is to just have a way to copy the relevant part of the policy into the loader, and have a mechanism for it provide reports.  There may be other ways, but I am currently leaning toward making the ContentSecurityPolicy thread safe.

Adam, your comments are appreciated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478013</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-04 15:35:44 -0700</bug_when>
    <thetext>I would just teach DocumentThreadableLoader about ContentSecurityPolicy.  It might be worth keeping the check you have in XMLHttpRequest.cpp so we can throw an exception in the non-redirect case.  In the redirect case, we can just treat it as a network error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615824</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-03 17:33:39 -0700</bug_when>
    <thetext>This isn&apos;t likely to be fixed for CSP 1.0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155943</commentid>
    <comment_count>5</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-01-15 14:38:56 -0800</bug_when>
    <thetext>*** Bug 116067 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155944</commentid>
    <comment_count>6</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-01-15 14:40:20 -0800</bug_when>
    <thetext>As mentioned by Ryosuke Niwa in bug 116067, comment 0, we should merge &lt;https://chromium.googlesource.com/chromium/blink/+/2853f594838e8bf24813482ad02f87853cae4366&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159583</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-01-27 20:12:59 -0800</bug_when>
    <thetext>&lt;rdar://problem/24383025&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1162473</commentid>
    <comment_count>8</comment_count>
      <attachid>270764</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-02-05 13:17:51 -0800</bug_when>
    <thetext>Created attachment 270764
Patch and Layout Tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1162787</commentid>
    <comment_count>9</comment_count>
      <attachid>270831</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-02-07 14:33:29 -0800</bug_when>
    <thetext>Created attachment 270831
Patch and Layout Tests

Rebased patch following &lt;https://bugs.webkit.org/show_bug.cgi?id=153622&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1162788</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-07 14:36:12 -0800</bug_when>
    <thetext>Attachment 270831 did not pass style-queue:


ERROR: Source/WebCore/loader/WorkerThreadableLoader.h:46:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 52 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1162903</commentid>
    <comment_count>11</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-02-08 10:05:19 -0800</bug_when>
    <thetext>Looks like an EFL build error:

Last 500 characters of output:
/loader/DocumentThreadableLoader.cpp.o -c ../../Source/WebCore/loader/DocumentThreadableLoader.cpp
../../Source/WebCore/loader/DocumentThreadableLoader.cpp: In member function &apos;bool WebCore::DocumentThreadableLoader::isAllowedByContentSecurityPolicy(const WebCore::URL&amp;)&apos;:
../../Source/WebCore/loader/DocumentThreadableLoader.cpp:451:1: error: control reaches end of non-void function [-Werror=return-type]
 }
 ^
cc1plus: all warnings being treated as errors
ninja: build stopped: subcommand failed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1162905</commentid>
    <comment_count>12</comment_count>
      <attachid>270831</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-02-08 10:18:43 -0800</bug_when>
    <thetext>Comment on attachment 270831
Patch and Layout Tests

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

r=me, thought you might ping an EFL person to see if they can help figure out why the build is failing.

Overall this looks good, but I had a couple of ideas/suggestions as I looked thing over, which you can choose to ignore if they don&apos;t seem useful.

&gt; Source/WebCore/loader/DocumentThreadableLoader.cpp:450
&gt; +    }

For some reason, EFL thinks these new enums do not exist!

&gt; Source/WebCore/loader/DocumentThreadableLoader.h:-42
&gt; -#include &lt;wtf/text/WTFString.h&gt;

Thank you for getting rid of these! :-)

&gt; Source/WebCore/loader/WorkerThreadableLoader.cpp:99
&gt; +    ASSERT(contentSecurityPolicy);

Should we change the API to make these references, if they are never supposed to be nullptr?

&gt; Source/WebCore/workers/AbstractWorker.cpp:46
&gt; +URL AbstractWorker::resolveURL(const String&amp; url, bool shouldBypassMainWorldContentSecurityPolicy, ExceptionCode&amp; ec)

Would it make sense to pass the ContentSecurityPolicyEnforcement enum instead of a boolean for these uses? Maybe we only care about block/dont-block, so we don&apos;t need to worry about script versus other blocking scenarios.

&gt; Source/WebCore/workers/Worker.cpp:97
&gt; +    // FIXME: Enforce Content Security Policy child-src directive when shouldBypassMainWorldContentSecurityPolicy is false. See &lt;https://bugs.webkit.org/show_bug.cgi?id=153562&gt;.

Don&apos;t we use FIXME(153562) for this kind of thing?

&gt; Source/WebCore/workers/WorkerGlobalScope.cpp:186
&gt; +        // FIXME: Convert this to check the isolated world&apos;s Content Security Policy once webkit.org/b/104520 is solved.

FIXME(104520)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1163079</commentid>
    <comment_count>13</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-02-08 17:23:09 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; Comment on attachment 270831 [details]
&gt; Patch and Layout Tests
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=270831&amp;action=review
&gt; 
&gt; r=me, thought you might ping an EFL person to see if they can help figure
&gt; out why the build is failing.
&gt; 
&gt; Overall this looks good, but I had a couple of ideas/suggestions as I looked
&gt; thing over, which you can choose to ignore if they don&apos;t seem useful.
&gt; 
&gt; &gt; Source/WebCore/loader/DocumentThreadableLoader.cpp:450
&gt; &gt; +    }
&gt; 
&gt; For some reason, EFL thinks these new enums do not exist!
&gt; 

[[
Last 500 characters of output:
/loader/DocumentThreadableLoader.cpp.o -c ../../Source/WebCore/loader/DocumentThreadableLoader.cpp
../../Source/WebCore/loader/DocumentThreadableLoader.cpp: In member function &apos;bool WebCore::DocumentThreadableLoader::isAllowedByContentSecurityPolicy(const WebCore::URL&amp;)&apos;:
../../Source/WebCore/loader/DocumentThreadableLoader.cpp:451:1: error: control reaches end of non-void function [-Werror=return-type]
 }
]]
&lt;https://webkit-queues.webkit.org/results/797253&gt;

EFL is using cc1plus and it does not seem to be able to reason that the switch statement handles all cases.

Will add the following code after the switch statement DocumentThreadableLoader::isAllowedByContentSecurityPolicy() a==.

ASSERT_NOT_REACHED();
return false;


&gt; [...]
&gt; &gt; Source/WebCore/loader/WorkerThreadableLoader.cpp:99
&gt; &gt; +    ASSERT(contentSecurityPolicy);
&gt; 
&gt; Should we change the API to make these references, if they are never
&gt; supposed to be nullptr?
&gt; 

We should look to pass this by references. Ideally, we should do this once we fix up SecurityContent to ensure it returns a reference. I suggest that we defer this task to separate bug/patch since we will need to change many places throughout WebCore.

&gt; &gt; Source/WebCore/workers/AbstractWorker.cpp:46
&gt; &gt; +URL AbstractWorker::resolveURL(const String&amp; url, bool shouldBypassMainWorldContentSecurityPolicy, ExceptionCode&amp; ec)
&gt; 
&gt; Would it make sense to pass the ContentSecurityPolicyEnforcement enum
&gt; instead of a boolean for these uses? Maybe we only care about
&gt; block/dont-block, so we don&apos;t need to worry about script versus other
&gt; blocking scenarios.
&gt; 

We only care about block/don&apos;t block. So, it is sufficient to use a boolean. The purpose of the enum class ContentSecurityPolicyEnforcement is to specify a particular CSP directive to enforce. It seems weird to make use of ContentSecurityPolicyEnforcement for this block/don&apos;t block decision.

&gt; &gt; Source/WebCore/workers/Worker.cpp:97
&gt; &gt; +    // FIXME: Enforce Content Security Policy child-src directive when shouldBypassMainWorldContentSecurityPolicy is false. See &lt;https://bugs.webkit.org/show_bug.cgi?id=153562&gt;.
&gt; 
&gt; Don&apos;t we use FIXME(153562) for this kind of thing?
&gt; 

As far as I know we prefer to only prefix with &quot;FIXME:&quot; from &lt;https://webkit.org/code-style-guidelines/#comments-fixme&gt;. On another note, Xcode only recognizes FIXME comments of this form when showing them in the list of functions in a file.

&gt; &gt; Source/WebCore/workers/WorkerGlobalScope.cpp:186
&gt; &gt; +        // FIXME: Convert this to check the isolated world&apos;s Content Security Policy once webkit.org/b/104520 is solved.
&gt; 
&gt; FIXME(104520)

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1163082</commentid>
    <comment_count>14</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-02-08 17:27:01 -0800</bug_when>
    <thetext>Committed r196283: &lt;http://trac.webkit.org/changeset/196283&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270764</attachid>
            <date>2016-02-05 13:17:51 -0800</date>
            <delta_ts>2016-02-07 14:33:24 -0800</delta_ts>
            <desc>Patch and Layout Tests</desc>
            <filename>bug-69359-20160205131728.patch</filename>
            <type>text/plain</type>
            <size>86829</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2MTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTVkMjk2MWU2ZWY0ZmEz
OTdlOTA1MmRjZTFmZDY5ZDJkMGM0MWNkZS4uNWY2M2U3N2RhZDQ1YjhlNTZmNTM3MTBlNmIwMWFi
ZTIxNDk3OTYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDkxIEBACiAyMDE2LTAyLTA1ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAorICAgICAgICBDU1AgY29ubmVjdC1zcmMg
ZGlyZWN0aXZlIHNob3VsZCBibG9jayByZWRpcmVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5MzU5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8y
NDM4MzAyNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbnNwaXJlZCBieSBCbGluayBwYXRjaDoKKyAgICAgICAgPGh0dHBzOi8vc3JjLmNocm9taXVt
Lm9yZy92aWV3dmMvYmxpbms/cmV2aXNpb249MTUwMjQ2JnZpZXc9cmV2aXNpb24+CisKKyAgICAg
ICAgQXBwbHkgdGhlIGNvbm5lY3Qtc3JjIGRpcmVjdGl2ZSBvZiB0aGUgQ29udGVudCBTZWN1cml0
eSBQb2xpY3kgZm9yIHRoZSBkb2N1bWVudCBvciB3b3JrZXIgdG8gdGhlIHJlZGlyZWN0IFVSTAor
ICAgICAgICBvZiBhbiBYTUxIdHRwUmVxdWVzdCBhbmQgRXZlbnRTb3VyY2UgbG9hZCBzbyBhcyB0
byBjb25mb3JtIHRvIHNlY3Rpb24gUGF0aHMgYW5kIFJlZGlyZWN0cyBvZiB0aGUgQ1NQIDIuMCBz
cGVjLiwKKyAgICAgICAgPGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJhcHBzZWMtY3NwLzIvI3Nv
dXJjZS1saXN0LXBhdGhzLWFuZC1yZWRpcmVjdHM+ICgyOSBBdWd1c3QgMjAxNSkuCisKKyAgICAg
ICAgQWRkaXRpb25hbGx5LCBjaGVjayB0aGF0IGVhY2ggcmVxdWVzdGVkIHNjcmlwdCBVUkwgcGFz
c2VkIHRvIFdvcmtlckdsb2JhbFNjb3BlLmltcG9ydFNjcmlwdHMoKSBpcyBhbGxvd2VkIGJ5Cisg
ICAgICAgIHRoZSBDU1Agb2YgdGhlIHdvcmtlciBiZWZvcmUgaW5pdGlhdGluZyBhIGxvYWQgZm9y
IGl0LiBJZiBzb21lIFVSTCBpIGlzIGJsb2NrZWQgYnkgdGhlIENTUCBwb2xpY3kKKyAgICAgICAg
dGhlbiB3ZSBkbyBub3QgdHJ5IHRvIGxvYWQgVVJMcyBqID49IGkuCisKKyAgICAgICAgVGVzdHM6
IGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3dvcmtlci1ibG9iLWlu
aGVyaXRzLWNzcC1pbXBvcnRTY3JpcHRzLWJsb2NrLWFib3J0cy1hbGwtc3Vic2VxdWVudC1pbXBv
cnRzLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3Vy
aXR5UG9saWN5L3dvcmtlci1ibG9iLWluaGVyaXRzLWNzcC1pbXBvcnRTY3JpcHRzLXJlZGlyZWN0
LWNyb3NzLW9yaWdpbi1ibG9ja2VkLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc2Vj
dXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3dvcmtlci1jc3AtYmxvY2tzLXhoci1yZWRpcmVj
dC1jcm9zcy1vcmlnaW4uaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9j
b250ZW50U2VjdXJpdHlQb2xpY3kvd29ya2VyLWNzcC1pbXBvcnRTY3JpcHRzLXJlZGlyZWN0LWNy
b3NzLW9yaWdpbi1hbGxvd2VkLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJp
dHkvY29udGVudFNlY3VyaXR5UG9saWN5L3dvcmtlci1jc3AtaW1wb3J0U2NyaXB0cy1yZWRpcmVj
dC1jcm9zcy1vcmlnaW4tYmxvY2tlZC5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS93b3JrZXItd2l0aG91dC1jc3AtaW1wb3J0U2Ny
aXB0cy1yZWRpcmVjdC1jcm9zcy1vcmlnaW4tYWxsb3dlZC5odG1sCisgICAgICAgICAgICAgICBo
dHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvYnlwYXNzLW1haW4td29ybGQtY3NwLWZv
ci14aHItcmVkaXJlY3QuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9p
c29sYXRlZFdvcmxkL2J5cGFzcy1tYWluLXdvcmxkLWNzcC13b3JrZXItYmxvYi1pbXBvcnRTY3Jp
cHQtcmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMv
c2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9ieXBhc3MtbWFpbi13b3JsZC1jc3Atd29ya2VyLWltcG9y
dFNjcmlwdHMtcmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAv
dGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9ieXBhc3Mtd29ya2VyLWNzcC1mb3IteGhyLXJl
ZGlyZWN0LWNyb3NzLW9yaWdpbi5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3NlY3Vy
aXR5L2lzb2xhdGVkV29ybGQvYnlwYXNzLXdvcmtlci1jc3AtZm9yLXhoci5odG1sCisKKyAgICAg
ICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rmls
ZVJlYWRlckxvYWRlcjo6c3RhcnQpOiBEbyBub3QgZW5mb3JjZSBhIENTUCBkaXJlY3RpdmUgYXMg
Q1NQIGlzIG5vdCBhcHBsaWNhYmxlIHRvIEZpbGUgQVBJLgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0
d29ya0FnZW50Ojpsb2FkUmVzb3VyY2UpOiBEbyBub3QgZW5mb3JjZSBhIENTUCBkaXJlY3RpdmUg
YXMgQ1NQIHNob3VsZCBub3QgaW50ZXJmZXJlCisgICAgICAgIHdpdGggdGhlIFdlYiBJbnNwZWN0
b3IuCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHkpOiBNb2RpZmllZCB0byB0YWtlIGFuIG9wdGlvbmFsIENvbnRlbnRTZWN1cml0eVBv
bGljeQorICAgICAgICBhbmQgcGFzcyBpdCB0aHJvdWdoIHRvIERvY3VtZW50VGhyZWFkYWJsZUxv
YWRlcjo6Y3JlYXRlKCkuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXI6OmNyZWF0ZSk6IE1vZGlmaWVkIHRvIHRha2UgYW4gb3B0aW9uYWwgQ29udGVudFNlY3VyaXR5
UG9saWN5IGFuZCBwYXNzIGl0IHRocm91Z2gKKyAgICAgICAgdG8gRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXIoKS4KKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyKTogTW9kaWZp
ZWQgdG8gdGFrZSBhbiBvcHRpb25hbCBDb250ZW50U2VjdXJpdHlQb2xpY3kuCisgICAgICAgIEFz
c2VydHMgdGhhdCB0aGUgQ1NQIGFsbG93cyB0aGUgbG9hZCBvZiB0aGUgcmVxdWVzdCBVUkwgc28g
YXMgdG8gY2F0Y2ggd2hlbiBhIGNhbGxlciBjcmVhdGVzIGEgbG9hZGVyIGZvciBhIHJlcXVlc3QK
KyAgICAgICAgdGhhdCBpcyBub3QgYWxsb3dlZCBieSB0aGUgQ1NQLiBUaGUgY2FsbGVyIHNob3Vs
ZCBub3QgY3JlYXRlIGEgbG9hZGVyIGZvciBzdWNoIGEgcmVxdWVzdC4KKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZCk6IENoZWNrIGlm
IHRoZSBDU1AgYWxsb3dzIHRoZSByZWRpcmVjdCBVUkwuIElmIGl0IGRvZXMgbm90CisgICAgICAg
IHRoZW4gbm90aWZ5IHRoZSBjbGllbnQgdGhhdCB0aGUgcmVkaXJlY3QgY2hlY2sgZmFpbGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdCk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjppc0Fs
bG93ZWRCeUNvbnRlbnRTZWN1cml0eVBvbGljeSk6IENoZWNrcyB0aGF0IHRoZSBzcGVjaWZpZWQg
VVJMIGlzIGFsbG93ZWQKKyAgICAgICAgYnkgdGhlIGVuZm9yY2VkIENTUCBkaXJlY3RpdmUuCisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNvbnRlbnRTZWN1cml0
eVBvbGljeSk6IFJldHVybnMgdGhlIENvbnRlbnRTZWN1cml0eVBvbGljeSBvYmplY3QgcGFzc2Vk
IHRvCisgICAgICAgIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciBvbiBpbnN0YW50aWF0aW9uIG9y
IHRoZSBDb250ZW50U2VjdXJpdHlQb2xpY3kgb2JqZWN0IG9mIHRoZSBhc3NvY2lhdGVkIGRvY3Vt
ZW50LgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaDogQWRkIG92
ZXJsb2FkZWQgdmFyaWFudHMgb2YgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjp7Y3JlYXRlLCBs
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5fSgpCisgICAgICAgIHRoYXQgdGFrZSBhIHN0ZDo6dW5p
cXVlX3B0cjxDb250ZW50U2VjdXJpdHlQb2xpY3k+JiYuIFJlbW92ZSBzb21lIHVubmVjZXNzYXJ5
IGhlYWRlcnMuCisgICAgICAgICogbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlck9wdGlvbnM6OlRocmVhZGFibGVMb2FkZXJPcHRp
b25zKTogVGFrZSB0aGUgQ1NQIGRpcmVjdGl2ZSB0byBlbmZvcmNlIGFuZCBzdG9yZSBpdC4KKyAg
ICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVMb2FkZXJPcHRpb25zOjppc29sYXRlZENvcHkpOiBD
b3B5IHRoZSBDU1AgZGlyZWN0aXZlIHRvIGVuZm9yY2UuCisgICAgICAgICogbG9hZGVyL1RocmVh
ZGFibGVMb2FkZXIuaDogQWRkZWQgbWVtYmVyIGZpZWxkIHRvIHN0b3JlIHRoZSBDU1AgZGlyZWN0
aXZlIHRvIGVuZm9yY2UgKGRlZmF1bHRzIHRvIGVuZm9yY2UgdGhlCisgICAgICAgIGRpcmVjdGl2
ZSBjb25uZWN0LXNyYyAtIHRoZSBtb3N0IGFwcHJvcHJpYXRlIGRpcmVjdGl2ZSBpbiBtb3N0IGNp
cmN1bXN0YW5jZXMpLiBBcyBvZiB0aGUgdGltZSBvZiB3cml0aW5nLAorICAgICAgICBvbmx5IFdv
cmtlckdsb2JhbFNjb3BlLmltcG9ydFNjcmlwdHMoKSBlbmZvcmNlcyBhIGRpZmZlcmVudCBkaXJl
Y3RpdmU6IHNjcmlwdC1zcmMuCisgICAgICAgICogbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6V29ya2Vy
VGhyZWFkYWJsZUxvYWRlcik6IFBhc3MgdGhlIFNlY3VyaXR5T3JpZ2luIGFuZCBDb250ZW50U2Vj
dXJpdHlQb2xpY3kgYXNzb2NpYXRlZAorICAgICAgICB3aXRoIHRoZSBXb3JrZXJHbG9iYWxTY29w
ZSB0byBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFk
QnJpZGdlKCkuCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWlu
VGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKTogUGFzcyBhIGNvcHkgb2YgdGhlIHdvcmtl
cidzIENvbnRlbnRTZWN1cml0eVBvbGljeQorICAgICAgICB0byB0aGUgRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyLgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmg6Cisg
ICAgICAgICogcGFnZS9FdmVudFNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFNv
dXJjZTo6Y29ubmVjdCk6IEVuZm9yY2UgdGhlIENTUCBkaXJlY3RpdmUgY29ubmVjdC1zcmMgb24g
cmVkaXJlY3RzIHVubGVzcyB3ZSBhcmUgcnVubmluZyBpbiBhbiBpc29sYXRlZCB3b3JsZC4KKyAg
ICAgICAgKiB3b3JrZXJzL0Fic3RyYWN0V29ya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFi
c3RyYWN0V29ya2VyOjpyZXNvbHZlVVJMKTogTW9kaWZpZWQgdG8gdGFrZSBhIGJvb2xlYW4gd2hl
dGhlciB0byBieXBhc3MgdGhlIG1haW4gd29ybGQgQ29udGVudCBTZWN1cml0eSBQb2xpY3kKKyAg
ICAgICAgaW5zdGVhZCBvZiBxdWVyeWluZyBmb3IgaXQgZGlyZWN0bHkuCisgICAgICAgICogd29y
a2Vycy9BYnN0cmFjdFdvcmtlci5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6Y3JlYXRlKTogQWRkZWQgRklYTUUgdG8gZW5mb3JjZSBj
aGlsZC1zcmMgZGlyZWN0aXZlIG9mIHRoZSBkb2N1bWVudCdzIENTUCB0byB0aGUgd29ya2VyJ3Mg
c2NyaXB0IFVSTAorICAgICAgICBvbiByZWRpcmVjdCBvbmNlIHdlIGZpeCA8aHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzU2Mj4uIEZvciBub3csIGRvIG5vdCBlbmZv
cmNlIGEgQ1NQIHBvbGljeSBvbiByZWRpcmVjdAorICAgICAgICBvZiB0aGUgd29ya2VyJ3Mgc2Ny
aXB0IFVSTC4KKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjppbXBvcnRTY3JpcHRzKTogQ2hlY2sgdGhh
dCB0aGUgcmVxdWVzdGVkIFVSTCBpcyBhbGxvd2VkIGJ5IHRoZSBDU1Agb2YgdGhlIHdvcmtlciAo
aWYgYXBwbGljYWJsZSkuCisgICAgICAgIEVuZm9yY2UgdGhlIENTUCBkaXJlY3RpdmUgc2NyaXB0
LXNyYyBvbiByZWRpcmVjdHMgdW5sZXNzIHdlIGFyZSBydW5uaW5nIGluIGFuIGlzb2xhdGVkIHdv
cmxkLgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlclNjcmlwdExvYWRlcjo6bG9hZFN5bmNocm9ub3VzbHkpOiBQYXNzIFNl
Y3VyaXR5T3JpZ2luIGFuZCBDb250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudCB0byBXb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVy
Ojpsb2FkQXN5bmNocm9ub3VzbHkpOiBEaXR0by4KKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclNj
cmlwdExvYWRlci5oOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVxdWVzdCk6IEVuZm9yY2UgdGhlIENT
UCBkaXJlY3RpdmUgY29ubmVjdC1zcmMgb24gcmVkaXJlY3RzIHVubGVzcyB3ZSBhcmUgcnVubmlu
ZyBpbgorICAgICAgICBhbiBpc29sYXRlZCB3b3JsZC4KKworMjAxNi0wMi0wNSAgRGFuaWVsIEJh
dGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKICAgICAgICAgQ1NQOiBBbGxvdyBXZWIgV29ya2Vy
cyBpbml0aWF0ZWQgZnJvbSBhbiBpc29sYXRlZCB3b3JsZCB0byBieXBhc3MgdGhlIG1haW4gd29y
bGQgQ29udGVudCBTZWN1cml0eSBQb2xpY3kKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1MzYyMgogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjQ0MDAw
MjM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcAppbmRleCA1
ZTY5Y2E5MzMxNWU5YzYzZWViMzQ3ZjEzNWQ2ZTE1NmJmMTUxYmU1Li5hODBhMmFiMTJlMDc0MTgx
YTBkYmQ1MGFmZDk2Y2Q2ZDhmYjkxMDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmls
ZVJlYWRlckxvYWRlci5jcHAKQEAgLTk3LDYgKzk3LDcgQEAgdm9pZCBGaWxlUmVhZGVyTG9hZGVy
OjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBC
bG8KICAgICBvcHRpb25zLnByZWZsaWdodFBvbGljeSA9IENvbnNpZGVyUHJlZmxpZ2h0OwogICAg
IG9wdGlvbnMuc2V0QWxsb3dDcmVkZW50aWFscyhBbGxvd1N0b3JlZENyZWRlbnRpYWxzKTsKICAg
ICBvcHRpb25zLmNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSA9IERlbnlDcm9zc09yaWdpblJlcXVl
c3RzOworICAgIG9wdGlvbnMuY29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQgPSBDb250
ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudDo6RG9Ob3RFbmZvcmNlOwogCiAgICAgaWYgKG1f
Y2xpZW50KQogICAgICAgICBtX2xvYWRlciA9IFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LCB0aGlzLCByZXF1ZXN0LCBvcHRpb25zKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggOTZk
NDgzY2MxYjllNjBmNWViNDNmNDMyZWI3NjYwZmY2ZmEzNDc0Zi4uMzVhNmM4ZDJjNTdkNjZiZmQy
YWZjNGY1YzhiZjRlMDI4ZDIwMGRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTY3OSw2ICs2NzksNyBAQCB2b2lkIElu
c3BlY3Rvck5ldHdvcmtBZ2VudDo6bG9hZFJlc291cmNlKEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgY29uc3QgU3RyaW5nJgogICAgIG9wdGlvbnMuc2V0QWxsb3dDcmVkZW50aWFscyhBbGxvd1N0
b3JlZENyZWRlbnRpYWxzKTsKICAgICBvcHRpb25zLnNldERlZmVyc0xvYWRpbmdQb2xpY3koRGVm
ZXJzTG9hZGluZ1BvbGljeTo6RGlzYWxsb3dEZWZlcnNMb2FkaW5nKTsgLy8gU28gdGhlIHJlcXVl
c3QgaXMgbmV2ZXIgZGVmZXJyZWQuCiAgICAgb3B0aW9ucy5jcm9zc09yaWdpblJlcXVlc3RQb2xp
Y3kgPSBBbGxvd0Nyb3NzT3JpZ2luUmVxdWVzdHM7CisgICAgb3B0aW9ucy5jb250ZW50U2VjdXJp
dHlQb2xpY3lFbmZvcmNlbWVudCA9IENvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50OjpE
b05vdEVuZm9yY2U7CiAKICAgICAvLyBJbnNwZWN0b3JUaHJlYWRhYmxlTG9hZGVyQ2xpZW50IGRl
bGV0ZXMgaXRzZWxmIHdoZW4gdGhlIGxvYWQgY29tcGxldGVzLgogICAgIEluc3BlY3RvclRocmVh
ZGFibGVMb2FkZXJDbGllbnQqIGluc3BlY3RvclRocmVhZGFibGVMb2FkZXJDbGllbnQgPSBuZXcg
SW5zcGVjdG9yVGhyZWFkYWJsZUxvYWRlckNsaWVudChjYWxsYmFjay5jb3B5UmVmKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcApp
bmRleCA0NDA0ZmQxNWI4ZGM3YTI0ZGNkMzA0M2M0Njc4YTU4MTM4OGRmMWM2Li44NGUwNTljNzY0
YmI1NjBjYWQ4MjhjMjJjODZiNzIxNTAyNDU5NDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMzUsNiArMzUsNyBAQAog
I2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5o
IgorI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIkNyb3NzT3Jp
Z2luQWNjZXNzQ29udHJvbC5oIgogI2luY2x1ZGUgIkNyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0
Q2FjaGUuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgpAQCAtNTMsMzIgKzU0LDQ1IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRS
ZXNvdXJjZVN5bmNocm9ub3VzbHkoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIFRocmVhZGFibGVMb2FkZXJDbGllbnQmIGNsaWVudCwgY29uc3QgVGhy
ZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCit2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxv
YWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYgY2xpZW50
LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucywgc3RkOjp1bmlxdWVfcHRy
PENvbnRlbnRTZWN1cml0eVBvbGljeT4mJiBjb250ZW50U2VjdXJpdHlQb2xpY3kpCiB7CiAgICAg
Ly8gVGhlIGxvYWRlciB3aWxsIGJlIGRlbGV0ZWQgYXMgc29vbiBhcyB0aGlzIGZ1bmN0aW9uIGV4
aXRzLgotICAgIFJlZlB0cjxEb2N1bWVudFRocmVhZGFibGVMb2FkZXI+IGxvYWRlciA9IGFkb3B0
UmVmKG5ldyBEb2N1bWVudFRocmVhZGFibGVMb2FkZXIoZG9jdW1lbnQsIGNsaWVudCwgTG9hZFN5
bmNocm9ub3VzbHksIHJlcXVlc3QsIG9wdGlvbnMpKTsKKyAgICBSZWZQdHI8RG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyPiBsb2FkZXIgPSBhZG9wdFJlZihuZXcgRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyKGRvY3VtZW50LCBjbGllbnQsIExvYWRTeW5jaHJvbm91c2x5LCByZXF1ZXN0LCBvcHRpb25z
LCBXVEZNb3ZlKGNvbnRlbnRTZWN1cml0eVBvbGljeSkpKTsKICAgICBBU1NFUlQobG9hZGVyLT5o
YXNPbmVSZWYoKSk7CiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyPiBE
b2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFRocmVh
ZGFibGVMb2FkZXJDbGllbnQmIGNsaWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KERvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBUaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50JiBjbGllbnQsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zKQorewor
ICAgIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoZG9jdW1lbnQsIHJlcXVlc3QsIGNsaWVudCwg
b3B0aW9ucywgbnVsbHB0cik7Cit9CisKK1Bhc3NSZWZQdHI8RG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyPiBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQs
IFRocmVhZGFibGVMb2FkZXJDbGllbnQmIGNsaWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucywgc3RkOjp1bmlx
dWVfcHRyPENvbnRlbnRTZWN1cml0eVBvbGljeT4mJiBjb250ZW50U2VjdXJpdHlQb2xpY3kpCiB7
Ci0gICAgUmVmUHRyPERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcj4gbG9hZGVyID0gYWRvcHRSZWYo
bmV3IERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcihkb2N1bWVudCwgY2xpZW50LCBMb2FkQXN5bmNo
cm9ub3VzbHksIHJlcXVlc3QsIG9wdGlvbnMpKTsKKyAgICBSZWZQdHI8RG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyPiBsb2FkZXIgPSBhZG9wdFJlZihuZXcgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
KGRvY3VtZW50LCBjbGllbnQsIExvYWRBc3luY2hyb25vdXNseSwgcmVxdWVzdCwgb3B0aW9ucywg
V1RGTW92ZShjb250ZW50U2VjdXJpdHlQb2xpY3kpKSk7CiAgICAgaWYgKCFsb2FkZXItPm1fcmVz
b3VyY2UpCiAgICAgICAgIGxvYWRlciA9IG51bGxwdHI7CiAgICAgcmV0dXJuIGxvYWRlci5yZWxl
YXNlKCk7CiB9CiAKLURvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6RG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyKERvY3VtZW50JiBkb2N1bWVudCwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYgY2xpZW50
LCBCbG9ja2luZ0JlaGF2aW9yIGJsb2NraW5nQmVoYXZpb3IsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCitQYXNz
UmVmUHRyPERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcj4gRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiBjbGll
bnQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVGhyZWFkYWJsZUxvYWRl
ck9wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgcmV0dXJuIERvY3VtZW50VGhyZWFkYWJsZUxvYWRl
cjo6Y3JlYXRlKGRvY3VtZW50LCBjbGllbnQsIHJlcXVlc3QsIG9wdGlvbnMsIG51bGxwdHIpOwor
fQorCitEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcihE
b2N1bWVudCYgZG9jdW1lbnQsIFRocmVhZGFibGVMb2FkZXJDbGllbnQmIGNsaWVudCwgQmxvY2tp
bmdCZWhhdmlvciBibG9ja2luZ0JlaGF2aW9yLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBzdGQ6OnVuaXF1ZV9w
dHI8Q29udGVudFNlY3VyaXR5UG9saWN5PiYmIGNvbnRlbnRTZWN1cml0eVBvbGljeSkKICAgICA6
IG1fY2xpZW50KCZjbGllbnQpCiAgICAgLCBtX2RvY3VtZW50KGRvY3VtZW50KQogICAgICwgbV9v
cHRpb25zKG9wdGlvbnMpCiAgICAgLCBtX3NhbWVPcmlnaW5SZXF1ZXN0KHNlY3VyaXR5T3JpZ2lu
KCktPmNhblJlcXVlc3QocmVxdWVzdC51cmwoKSkpCiAgICAgLCBtX3NpbXBsZVJlcXVlc3QodHJ1
ZSkKICAgICAsIG1fYXN5bmMoYmxvY2tpbmdCZWhhdmlvciA9PSBMb2FkQXN5bmNocm9ub3VzbHkp
CisgICAgLCBtX2NvbnRlbnRTZWN1cml0eVBvbGljeShXVEZNb3ZlKGNvbnRlbnRTZWN1cml0eVBv
bGljeSkpCiB7CiAgICAgLy8gU2V0dGluZyBhbiBvdXRnb2luZyByZWZlcmVyIGlzIG9ubHkgc3Vw
cG9ydGVkIGluIHRoZSBhc3luYyBjb2RlIHBhdGguCiAgICAgQVNTRVJUKG1fYXN5bmMgfHwgcmVx
dWVzdC5odHRwUmVmZXJyZXIoKS5pc0VtcHR5KCkpOwogCisgICAgQVNTRVJUX1dJVEhfU0VDVVJJ
VFlfSU1QTElDQVRJT04oaXNBbGxvd2VkQnlDb250ZW50U2VjdXJpdHlQb2xpY3kocmVxdWVzdC51
cmwoKSkpOworCiAgICAgaWYgKG1fc2FtZU9yaWdpblJlcXVlc3QgfHwgbV9vcHRpb25zLmNyb3Nz
T3JpZ2luUmVxdWVzdFBvbGljeSA9PSBBbGxvd0Nyb3NzT3JpZ2luUmVxdWVzdHMpIHsKICAgICAg
ICAgbG9hZFJlcXVlc3QocmVxdWVzdCwgRG9TZWN1cml0eUNoZWNrKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtMTc3LDYgKzE5MSwxMiBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6cmVk
aXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIFJlc291cgogICAgIEFTU0VS
VF9VTlVTRUQocmVzb3VyY2UsIHJlc291cmNlID09IG1fcmVzb3VyY2UpOwogCiAgICAgUmVmPERv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgaWYgKCFpc0FsbG93
ZWRCeUNvbnRlbnRTZWN1cml0eVBvbGljeShyZXF1ZXN0LnVybCgpKSkgeworICAgICAgICBtX2Ns
aWVudC0+ZGlkRmFpbFJlZGlyZWN0Q2hlY2soKTsKKyAgICAgICAgcmVxdWVzdCA9IFJlc291cmNl
UmVxdWVzdCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgLy8gQWxsb3cgc2FtZSBv
cmlnaW4gcmVxdWVzdHMgdG8gY29udGludWUgYWZ0ZXIgYWxsb3dpbmcgY2xpZW50cyB0byBhdWRp
dCB0aGUgcmVkaXJlY3QuCiAgICAgaWYgKGlzQWxsb3dlZFJlZGlyZWN0KHJlcXVlc3QudXJsKCkp
KQogICAgICAgICByZXR1cm47CkBAIC00MDYsNyArNDI2LDcgQEAgdm9pZCBEb2N1bWVudFRocmVh
ZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
U2VjdXIKICAgICAvLyBGSVhNRTogRnJhbWVMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KCkgZG9l
cyBub3QgdGVsbCB1cyB3aGV0aGVyIGEgcmVkaXJlY3QgaGFwcGVuZWQgb3Igbm90LCBzbyB3ZSBn
dWVzcyBieSBjb21wYXJpbmcgdGhlCiAgICAgLy8gcmVxdWVzdCBhbmQgcmVzcG9uc2UgVVJMcy4g
VGhpcyBpc24ndCBhIHBlcmZlY3QgdGVzdCB0aG91Z2gsIHNpbmNlIGEgc2VydmVyIGNhbiBzZXJ2
ZSBhIHJlZGlyZWN0IHRvIHRoZSBzYW1lIFVSTCB0aGF0IHdhcwogICAgIC8vIHJlcXVlc3RlZC4g
QWxzbyBjb21wYXJpbmcgdGhlIHJlcXVlc3QgYW5kIHJlc3BvbnNlIFVSTHMgYXMgc3RyaW5ncyB3
aWxsIGZhaWwgaWYgdGhlIHJlcXVlc3RVUkwgc3RpbGwgaGFzIGl0cyBjcmVkZW50aWFscy4KLSAg
ICBpZiAocmVxdWVzdFVSTCAhPSByZXNwb25zZS51cmwoKSAmJiAhaXNBbGxvd2VkUmVkaXJlY3Qo
cmVzcG9uc2UudXJsKCkpKSB7CisgICAgaWYgKHJlcXVlc3RVUkwgIT0gcmVzcG9uc2UudXJsKCkg
JiYgKCFpc0FsbG93ZWRCeUNvbnRlbnRTZWN1cml0eVBvbGljeShyZXNwb25zZS51cmwoKSkgfHwg
IWlzQWxsb3dlZFJlZGlyZWN0KHJlc3BvbnNlLnVybCgpKSkpIHsKICAgICAgICAgbV9jbGllbnQt
PmRpZEZhaWxSZWRpcmVjdENoZWNrKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00MTgs
NiArNDM4LDE4IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNlY3VyCiAgICAgZGlkRmluaXNoTG9hZGlu
ZyhpZGVudGlmaWVyLCAwLjApOwogfQogCitib29sIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6
aXNBbGxvd2VkQnlDb250ZW50U2VjdXJpdHlQb2xpY3koY29uc3QgVVJMJiB1cmwpCit7CisgICAg
c3dpdGNoIChtX29wdGlvbnMuY29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQpIHsKKyAg
ICBjYXNlIENvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50OjpEb05vdEVuZm9yY2U6Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgQ29udGVudFNlY3VyaXR5UG9saWN5RW5mb3Jj
ZW1lbnQ6OkVuZm9yY2VDb25uZWN0U3JjRGlyZWN0aXZlOgorICAgICAgICByZXR1cm4gY29udGVu
dFNlY3VyaXR5UG9saWN5KCkuYWxsb3dDb25uZWN0VG9Tb3VyY2UodXJsLCBmYWxzZSk7IC8vIERv
IG5vdCBvdmVycmlkZSBwb2xpY3kKKyAgICBjYXNlIENvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9y
Y2VtZW50OjpFbmZvcmNlU2NyaXB0U3JjRGlyZWN0aXZlOgorICAgICAgICByZXR1cm4gY29udGVu
dFNlY3VyaXR5UG9saWN5KCkuYWxsb3dTY3JpcHRGcm9tU291cmNlKHVybCwgZmFsc2UpOyAvLyBE
byBub3Qgb3ZlcnJpZGUgcG9saWN5CisgICAgfQorfQorCiBib29sIERvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlcjo6aXNBbGxvd2VkUmVkaXJlY3QoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKG1f
b3B0aW9ucy5jcm9zc09yaWdpblJlcXVlc3RQb2xpY3kgPT0gQWxsb3dDcm9zc09yaWdpblJlcXVl
c3RzKQpAQCAtNDM2LDQgKzQ2OCwxMiBAQCBTZWN1cml0eU9yaWdpbiogRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyOjpzZWN1cml0eU9yaWdpbigpIGNvbnN0CiAgICAgcmV0dXJuIG1fb3B0aW9ucy5z
ZWN1cml0eU9yaWdpbiA/IG1fb3B0aW9ucy5zZWN1cml0eU9yaWdpbi5nZXQoKSA6IG1fZG9jdW1l
bnQuc2VjdXJpdHlPcmlnaW4oKTsKIH0KIAorY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5JiBE
b2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNvbnRlbnRTZWN1cml0eVBvbGljeSgpIGNvbnN0Cit7
CisgICAgaWYgKG1fY29udGVudFNlY3VyaXR5UG9saWN5KQorICAgICAgICByZXR1cm4gKm1fY29u
dGVudFNlY3VyaXR5UG9saWN5LmdldCgpOworICAgIEFTU0VSVChtX2RvY3VtZW50LmNvbnRlbnRT
ZWN1cml0eVBvbGljeSgpKTsKKyAgICByZXR1cm4gKm1fZG9jdW1lbnQuY29udGVudFNlY3VyaXR5
UG9saWN5KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaAppbmRleCBmZjA4M2ZiOTBmMTcy
YWRiY2U1Mzc1NGUwZWM3ZGM1MGZiNGE3ZjY1Li42M2I1NjE1NzZlNmMzZDI3NmYzZTM3NmI5Mjdm
ZTIwMmRhMTBiMjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlci5oCkBAIC0zMywxNiArMzMsMTMgQEAKIAogI2luY2x1ZGUgIkNhY2hlZFJh
d1Jlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKLSNp
bmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlci5o
IgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IGNsYXNzIENhY2hlZFJhd1Jlc291cmNlOworICAgIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGlj
eTsKICAgICBjbGFzcyBEb2N1bWVudDsKICAgICBjbGFzcyBVUkw7CiAgICAgY2xhc3MgUmVzb3Vy
Y2VSZXF1ZXN0OwpAQCAtNTIsOCArNDksMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNs
YXNzIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPERvY3VtZW50
VGhyZWFkYWJsZUxvYWRlcj4sIHB1YmxpYyBUaHJlYWRhYmxlTG9hZGVyLCBwcml2YXRlIENhY2hl
ZFJhd1Jlc291cmNlQ2xpZW50ICB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNs
eShEb2N1bWVudCYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFRocmVhZGFibGVMb2FkZXJDbGll
bnQmLCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYsIHN0ZDo6dW5pcXVlX3B0cjxDb250
ZW50U2VjdXJpdHlQb2xpY3k+JiYpOwogICAgICAgICBzdGF0aWMgdm9pZCBsb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KERvY3VtZW50JiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgVGhyZWFkYWJs
ZUxvYWRlckNsaWVudCYsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJik7CisKKyAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyPiBjcmVhdGUoRG9j
dW1lbnQmLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmLCBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNl
Y3VyaXR5UG9saWN5PiYmKTsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyPiBjcmVhdGUoRG9jdW1lbnQmLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50Jiwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmKTsK
KwogICAgICAgICB2aXJ0dWFsIH5Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIoKTsKIAogICAgICAg
ICB2aXJ0dWFsIHZvaWQgY2FuY2VsKCkgb3ZlcnJpZGU7CkBAIC03Miw3ICs3Myw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIExvYWRBc3luY2hyb25vdXNseQogICAgICAgICB9
OwogCi0gICAgICAgIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcihEb2N1bWVudCYsIFRocmVhZGFi
bGVMb2FkZXJDbGllbnQmLCBCbG9ja2luZ0JlaGF2aW9yLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYpOworICAgICAgICBEb2N1bWVudFRocmVh
ZGFibGVMb2FkZXIoRG9jdW1lbnQmLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiwgQmxvY2tpbmdC
ZWhhdmlvciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9w
dGlvbnMmLCBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5UG9saWN5PiYmKTsKIAogICAg
ICAgICB2b2lkIGNsZWFyUmVzb3VyY2UoKTsKIApAQCAtOTUsMTAgKzk2LDEyIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIGxvYWRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIFNlY3VyaXR5Q2hlY2tQb2xpY3kpOwogICAgICAgICBib29sIGlzQWxsb3dlZFJlZGly
ZWN0KGNvbnN0IFVSTCYpOworICAgICAgICBib29sIGlzQWxsb3dlZEJ5Q29udGVudFNlY3VyaXR5
UG9saWN5KGNvbnN0IFVSTCYpOwogCiAgICAgICAgIGJvb2wgaXNYTUxIdHRwUmVxdWVzdCgpIGNv
bnN0IG92ZXJyaWRlIGZpbmFsOwogCiAgICAgICAgIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9y
aWdpbigpIGNvbnN0OworICAgICAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3kmIGNvbnRl
bnRTZWN1cml0eVBvbGljeSgpIGNvbnN0OwogCiAgICAgICAgIENhY2hlZFJlc291cmNlSGFuZGxl
PENhY2hlZFJhd1Jlc291cmNlPiBtX3Jlc291cmNlOwogICAgICAgICBUaHJlYWRhYmxlTG9hZGVy
Q2xpZW50KiBtX2NsaWVudDsKQEAgLTEwOCw2ICsxMTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIGJvb2wgbV9zaW1wbGVSZXF1ZXN0OwogICAgICAgICBib29sIG1fYXN5bmM7CiAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZXNvdXJjZVJlcXVlc3Q+IG1fYWN0dWFsUmVxdWVzdDsg
Ly8gbm9uLW51bGwgZHVyaW5nIEFjY2VzcyBDb250cm9sIHByZWZsaWdodCBjaGVja3MKKyAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0eVBvbGljeT4gbV9jb250ZW50U2VjdXJp
dHlQb2xpY3k7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDZkNGUxYjIwMDZmMjQ1MWFiMjIw
YWZiMDMwMTYxOGNkYzNlYjE5NTQuLmVmNDNkNzU2NWI1NTBmMmNkMmY4NGRkNGZiYjI1NjBlOGM3
NTA0ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAg
LTUxLDEwICs1MSwxMSBAQCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9uczo6flRocmVhZGFibGVMb2Fk
ZXJPcHRpb25zKCkKIHsKIH0KIAotVGhyZWFkYWJsZUxvYWRlck9wdGlvbnM6OlRocmVhZGFibGVM
b2FkZXJPcHRpb25zKGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgYmFzZU9wdGlvbnMsIFBy
ZWZsaWdodFBvbGljeSBwcmVmbGlnaHRQb2xpY3ksIENyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSBj
cm9zc09yaWdpblJlcXVlc3RQb2xpY3ksIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4mJiBzZWN1cml0
eU9yaWdpbiwgU3RyaW5nJiYgaW5pdGlhdG9yKQorVGhyZWFkYWJsZUxvYWRlck9wdGlvbnM6OlRo
cmVhZGFibGVMb2FkZXJPcHRpb25zKGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgYmFzZU9w
dGlvbnMsIFByZWZsaWdodFBvbGljeSBwcmVmbGlnaHRQb2xpY3ksIENyb3NzT3JpZ2luUmVxdWVz
dFBvbGljeSBjcm9zc09yaWdpblJlcXVlc3RQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeUVu
Zm9yY2VtZW50IGNvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50LCBSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+JiYgc2VjdXJpdHlPcmlnaW4sIFN0cmluZyYmIGluaXRpYXRvcikKICAgICA6IFJl
c291cmNlTG9hZGVyT3B0aW9ucyhiYXNlT3B0aW9ucykKICAgICAsIHByZWZsaWdodFBvbGljeShw
cmVmbGlnaHRQb2xpY3kpCiAgICAgLCBjcm9zc09yaWdpblJlcXVlc3RQb2xpY3koY3Jvc3NPcmln
aW5SZXF1ZXN0UG9saWN5KQorICAgICwgY29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQo
Y29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQpCiAgICAgLCBzZWN1cml0eU9yaWdpbihX
VEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSkKICAgICAsIGluaXRpYXRvcihXVEZNb3ZlKGluaXRpYXRv
cikpCiB7CkBAIC02NSw4ICs2Niw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxUaHJlYWRhYmxlTG9hZGVy
T3B0aW9ucz4gVGhyZWFkYWJsZUxvYWRlck9wdGlvbnM6Omlzb2xhdGVkQ29weSgpCiAgICAgUmVm
UHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbkNvcHk7CiAgICAgaWYgKHNlY3VyaXR5
T3JpZ2luKQogICAgICAgICBzZWN1cml0eU9yaWdpbkNvcHkgPSBzZWN1cml0eU9yaWdpbi0+aXNv
bGF0ZWRDb3B5KCk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGhyZWFkYWJsZUxvYWRl
ck9wdGlvbnM+KCp0aGlzLCBwcmVmbGlnaHRQb2xpY3ksIGNyb3NzT3JpZ2luUmVxdWVzdFBvbGlj
eSwKLSAgICAgICAgV1RGTW92ZShzZWN1cml0eU9yaWdpbkNvcHkpLCBpbml0aWF0b3IuaXNvbGF0
ZWRDb3B5KCkpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRocmVhZGFibGVMb2FkZXJP
cHRpb25zPigqdGhpcywgcHJlZmxpZ2h0UG9saWN5LCBjcm9zc09yaWdpblJlcXVlc3RQb2xpY3ks
IGNvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50LCBXVEZNb3ZlKHNlY3VyaXR5T3JpZ2lu
Q29weSksIGluaXRpYXRvci5pc29sYXRlZENvcHkoKSk7CiB9CiAKIFBhc3NSZWZQdHI8VGhyZWFk
YWJsZUxvYWRlcj4gVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIFRocmVhZGFibGVMb2FkZXJDbGllbnQqIGNsaWVudCwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9u
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5oCmluZGV4IDA4NmM1ODM3
NjBjMjAwMzFiNGQ0OGRjOTZkNzEzOTVjZDI4MTBkZGUuLjMxMzhmZjNhZjI2NjhiNDQwZWQxMDMx
ZGZjN2QzYjEzOTQ1ZmI0MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJl
YWRhYmxlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2Fk
ZXIuaApAQCAtNTksMTUgKzU5LDIyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUHJl
dmVudFByZWZsaWdodAogICAgIH07CiAKKyAgICBlbnVtIGNsYXNzIENvbnRlbnRTZWN1cml0eVBv
bGljeUVuZm9yY2VtZW50IHsKKyAgICAgICAgRG9Ob3RFbmZvcmNlLAorICAgICAgICBFbmZvcmNl
Q29ubmVjdFNyY0RpcmVjdGl2ZSwKKyAgICAgICAgRW5mb3JjZVNjcmlwdFNyY0RpcmVjdGl2ZSwK
KyAgICB9OworCiAgICAgc3RydWN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zIDogUmVzb3VyY2VM
b2FkZXJPcHRpb25zIHsKICAgICAgICAgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMoKTsKLSAgICAg
ICAgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMoY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiwg
UHJlZmxpZ2h0UG9saWN5LCBDcm9zc09yaWdpblJlcXVlc3RQb2xpY3ksIFJlZlB0cjxTZWN1cml0
eU9yaWdpbj4mJiwgU3RyaW5nJiYgaW5pdGlhdG9yKTsKKyAgICAgICAgVGhyZWFkYWJsZUxvYWRl
ck9wdGlvbnMoY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiwgUHJlZmxpZ2h0UG9saWN5LCBD
cm9zc09yaWdpblJlcXVlc3RQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50
LCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+JiYsIFN0cmluZyYmIGluaXRpYXRvcik7CiAgICAgICAg
IH5UaHJlYWRhYmxlTG9hZGVyT3B0aW9ucygpOwogCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxU
aHJlYWRhYmxlTG9hZGVyT3B0aW9ucz4gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKICAgICAgICAg
UHJlZmxpZ2h0UG9saWN5IHByZWZsaWdodFBvbGljeTsgLy8gSWYgQWNjZXNzQ29udHJvbCBpcyB1
c2VkLCBob3cgdG8gZGV0ZXJtaW5lIGlmIGEgcHJlZmxpZ2h0IGlzIG5lZWRlZC4KICAgICAgICAg
Q3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5IGNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeTsKKyAgICAg
ICAgQ29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQgY29udGVudFNlY3VyaXR5UG9saWN5
RW5mb3JjZW1lbnQgeyBDb250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudDo6RW5mb3JjZUNv
bm5lY3RTcmNEaXJlY3RpdmUgfTsKICAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1
cml0eU9yaWdpbjsKICAgICAgICAgU3RyaW5nIGluaXRpYXRvcjsgLy8gVGhpcyBjYW5ub3QgYmUg
YW4gQXRvbWljU3RyaW5nLCBhcyBpc29sYXRlZENvcHkoKSB3b3VsZG4ndCBjcmVhdGUgYW4gb2Jq
ZWN0IHRoYXQncyBzYWZlIGZvciBwYXNzaW5nIHRvIGFub3RoZXIgdGhyZWFkLgogICAgIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKaW5k
ZXggMWRiOGQ2NDg5MmZhMjMyNDk3YjAzODIxNDQwNmYzN2VmMTMyZWJjMy4uYmFjMjU0ZjM1NTI2
N2FlOWQ2YzJiY2YzMWUwY2Y0NzNjY2JlMmM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZGFibGVMb2FkZXIuaCIKIAorI2lu
Y2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAj
aW5jbHVkZSAiRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VF
cnJvci5oIgpAQCAtNTEsNyArNTIsNyBAQCBzdGF0aWMgY29uc3QgY2hhciBsb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5TW9kZVtdID0gImxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHlNbwogV29ya2Vy
VGhyZWFkYWJsZUxvYWRlcjo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcihXb3JrZXJHbG9iYWxTY29w
ZSogd29ya2VyR2xvYmFsU2NvcGUsIFRocmVhZGFibGVMb2FkZXJDbGllbnQqIGNsaWVudCwgY29u
c3QgU3RyaW5nJiB0YXNrTW9kZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKICAgICA6IG1fd29ya2VyR2xvYmFs
U2NvcGUod29ya2VyR2xvYmFsU2NvcGUpCiAgICAgLCBtX3dvcmtlckNsaWVudFdyYXBwZXIoVGhy
ZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI6OmNyZWF0ZShjbGllbnQpKQotICAgICwgbV9icmlk
Z2UoKihuZXcgTWFpblRocmVhZEJyaWRnZShtX3dvcmtlckNsaWVudFdyYXBwZXIsIG1fd29ya2Vy
R2xvYmFsU2NvcGUtPnRocmVhZCgpLndvcmtlckxvYWRlclByb3h5KCksIHRhc2tNb2RlLCByZXF1
ZXN0LCBvcHRpb25zLCB3b3JrZXJHbG9iYWxTY29wZS0+dXJsKCkuc3RyaXBwZWRGb3JVc2VBc1Jl
ZmVycmVyKCkpKSkKKyAgICAsIG1fYnJpZGdlKCoobmV3IE1haW5UaHJlYWRCcmlkZ2UobV93b3Jr
ZXJDbGllbnRXcmFwcGVyLCB3b3JrZXJHbG9iYWxTY29wZS0+dGhyZWFkKCkud29ya2VyTG9hZGVy
UHJveHkoKSwgdGFza01vZGUsIHJlcXVlc3QsIG9wdGlvbnMsIHdvcmtlckdsb2JhbFNjb3BlLT51
cmwoKS5zdHJpcHBlZEZvclVzZUFzUmVmZXJyZXIoKSwgd29ya2VyR2xvYmFsU2NvcGUtPnNlY3Vy
aXR5T3JpZ2luKCksIHdvcmtlckdsb2JhbFNjb3BlLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKSkp
KQogewogfQogCkBAIC04Myw3ICs4NCw4IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6
Y2FuY2VsKCkKIH0KIAogV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6
TWFpblRocmVhZEJyaWRnZShQYXNzUmVmUHRyPFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVy
PiB3b3JrZXJDbGllbnRXcmFwcGVyLCBXb3JrZXJMb2FkZXJQcm94eSYgbG9hZGVyUHJveHksIGNv
bnN0IFN0cmluZyYgdGFza01vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgb3V0
Z29pbmdSZWZlcnJlcikKKyAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBjb25zdCBTdHJpbmcmIG91dGdvaW5n
UmVmZXJyZXIsCisgICAgY29uc3QgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBjb25z
dCBDb250ZW50U2VjdXJpdHlQb2xpY3kqIGNvbnRlbnRTZWN1cml0eVBvbGljeSkKICAgICA6IG1f
d29ya2VyQ2xpZW50V3JhcHBlcih3b3JrZXJDbGllbnRXcmFwcGVyKQogICAgICwgbV9sb2FkZXJQ
cm94eShsb2FkZXJQcm94eSkKICAgICAsIG1fdGFza01vZGUodGFza01vZGUuaXNvbGF0ZWRDb3B5
KCkpCkBAIC05Miw4ICs5NCwxNCBAQCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFk
QnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKFBhc3NSZWZQdHI8VGhyZWFkYWJsZQogCiAgICAgYXV0
byogcmVxdWVzdERhdGEgPSByZXF1ZXN0LmNvcHlEYXRhKCkucmVsZWFzZSgpOwogICAgIGF1dG8q
IG9wdGlvbnNDb3B5ID0gb3B0aW9ucy5pc29sYXRlZENvcHkoKS5yZWxlYXNlKCk7CisKKyAgICBB
U1NFUlQoc2VjdXJpdHlPcmlnaW4pOworICAgIEFTU0VSVChjb250ZW50U2VjdXJpdHlQb2xpY3kp
OworICAgIGF1dG8qIGNvbnRlbnRTZWN1cml0eVBvbGljeUNvcHkgPSBzdGQ6Om1ha2VfdW5pcXVl
PENvbnRlbnRTZWN1cml0eVBvbGljeT4oKnNlY3VyaXR5T3JpZ2luKS5yZWxlYXNlKCk7CisgICAg
Y29udGVudFNlY3VyaXR5UG9saWN5Q29weS0+Y29weVN0YXRlRnJvbShjb250ZW50U2VjdXJpdHlQ
b2xpY3kpOworCiAgICAgU3RyaW5nQ2FwdHVyZSBjYXB0dXJlZE91dGdvaW5nUmVmZXJyZXIob3V0
Z29pbmdSZWZlcnJlcik7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKFt0aGlz
LCByZXF1ZXN0RGF0YSwgb3B0aW9uc0NvcHksIGNhcHR1cmVkT3V0Z29pbmdSZWZlcnJlcl0oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgIG1fbG9hZGVyUHJveHkucG9zdFRh
c2tUb0xvYWRlcihbdGhpcywgcmVxdWVzdERhdGEsIG9wdGlvbnNDb3B5LCBjb250ZW50U2VjdXJp
dHlQb2xpY3lDb3B5LCBjYXB0dXJlZE91dGdvaW5nUmVmZXJyZXJdKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAg
ICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpOwogCkBA
IC0xMDUsNyArMTEzLDcgQEAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRn
ZTo6TWFpblRocmVhZEJyaWRnZShQYXNzUmVmUHRyPFRocmVhZGFibGUKICAgICAgICAgLy8gRklY
TUU6IElmIHRoZSBhIHNpdGUgcmVxdWVzdHMgYSBsb2NhbCByZXNvdXJjZSwgdGhlbiB0aGlzIHdp
bGwgcmV0dXJuIGEgbm9uLXplcm8gdmFsdWUgYnV0IHRoZSBzeW5jIHBhdGgKICAgICAgICAgLy8g
d2lsbCByZXR1cm4gYSAwIHZhbHVlLiBFaXRoZXIgdGhpcyBzaG91bGQgcmV0dXJuIDAgb3IgdGhl
IG90aGVyIGNvZGUgcGF0aCBzaG91bGQgZG8gYSBjYWxsYmFjayB3aXRoCiAgICAgICAgIC8vIGEg
ZmFpbHVyZS4KLSAgICAgICAgbV9tYWluVGhyZWFkTG9hZGVyID0gRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyOjpjcmVhdGUoZG9jdW1lbnQsICp0aGlzLCAqcmVxdWVzdCwgKm9wdGlvbnMpOworICAg
ICAgICBtX21haW5UaHJlYWRMb2FkZXIgPSBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNyZWF0
ZShkb2N1bWVudCwgKnRoaXMsICpyZXF1ZXN0LCAqb3B0aW9ucywgc3RkOjp1bmlxdWVfcHRyPENv
bnRlbnRTZWN1cml0eVBvbGljeT4oY29udGVudFNlY3VyaXR5UG9saWN5Q29weSkpOwogICAgICAg
ICBBU1NFUlQobV9tYWluVGhyZWFkTG9hZGVyKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oCmluZGV4IDJhOTVlNzRhMzViM2I4
Mzk2ZGE4ZDg3Njk3ZTQzOTkxM2JmYWZjZmMuLjg3ODIwYzUzZTdhNjYxYmRjMGYyMjQzYjk4Yzlm
MmMxNzUyOGJlYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJl
YWRhYmxlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFi
bGVMb2FkZXIuaApAQCAtNDMsNiArNDMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyAg
ICBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3k7CiAgICAgY2xhc3MgUmVzb3VyY2VFcnJvcjsK
ICAgICBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiAgICAgY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7
CkBAIC05NCw3ICs5NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY2xhc3MgTWFp
blRocmVhZEJyaWRnZSA6IHB1YmxpYyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50IHsKICAgICAgICAg
cHVibGljOgogICAgICAgICAgICAgLy8gQWxsIGV4ZWN1dGVkIG9uIHRoZSB3b3JrZXIgY29udGV4
dCdzIHRocmVhZC4KLSAgICAgICAgICAgIE1haW5UaHJlYWRCcmlkZ2UoUGFzc1JlZlB0cjxUaHJl
YWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4sIFdvcmtlckxvYWRlclByb3h5JiwgY29uc3QgU3Ry
aW5nJiB0YXNrTW9kZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgVGhyZWFkYWJsZUxv
YWRlck9wdGlvbnMmLCBjb25zdCBTdHJpbmcmIG91dGdvaW5nUmVmZXJyZXIpOworICAgICAgICAg
ICAgTWFpblRocmVhZEJyaWRnZShQYXNzUmVmUHRyPFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFw
cGVyPiwgV29ya2VyTG9hZGVyUHJveHkmLCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYsIGNvbnN0IFN0
cmluZyYgb3V0Z29pbmdSZWZlcnJlciwgY29uc3QgU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBDb250
ZW50U2VjdXJpdHlQb2xpY3kqKTsKICAgICAgICAgICAgIHZvaWQgY2FuY2VsKCk7CiAgICAgICAg
ICAgICB2b2lkIGRlc3Ryb3koKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudFNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAppbmRl
eCA1ZjZjOGI1NDk3M2ZiZGVlYWQ5ZGFmNzIyNTU1YzRiNTU3MTM2M2Q1Li43Yjg1MWI1NjhlYzVl
OTIzYWVjYjc2YzAyZGVmMTczOTE2ODc4NmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNl
LmNwcApAQCAtMTMwLDYgKzEzMCw3IEBAIHZvaWQgRXZlbnRTb3VyY2U6OmNvbm5lY3QoKQogICAg
IG9wdGlvbnMuY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5ID0gVXNlQWNjZXNzQ29udHJvbDsKICAg
ICBvcHRpb25zLnNldERhdGFCdWZmZXJpbmdQb2xpY3koRG9Ob3RCdWZmZXJEYXRhKTsKICAgICBv
cHRpb25zLnNlY3VyaXR5T3JpZ2luID0gb3JpZ2luOworICAgIG9wdGlvbnMuY29udGVudFNlY3Vy
aXR5UG9saWN5RW5mb3JjZW1lbnQgPSBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnNob3VsZEJ5cGFz
c01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KSA/IENvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50OjpEb05vdEVuZm9yY2UgOiBDb250
ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudDo6RW5mb3JjZUNvbm5lY3RTcmNEaXJlY3RpdmU7
CiAKICAgICBtX2xvYWRlciA9IFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCksIHRoaXMsIHJlcXVlc3QsIG9wdGlvbnMpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvQWJzdHJhY3RXb3JrZXIuY3BwCmluZGV4IGRhMDA3YTJlZjc4NTVjNDUyOWY2NmE1YTFl
ZTNlNDNmMzQzZDAwODIuLmY1NTM5NmVmYjUwZTIzNjBhNThhN2QyOWJjYjYxOTZhNmU3MzI1YTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuY3BwCkBAIC00Myw3ICs0
Myw3IEBAIEFic3RyYWN0V29ya2VyOjp+QWJzdHJhY3RXb3JrZXIoKQogewogfQogCi1VUkwgQWJz
dHJhY3RXb3JrZXI6OnJlc29sdmVVUkwoY29uc3QgU3RyaW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUm
IGVjKQorVVJMIEFic3RyYWN0V29ya2VyOjpyZXNvbHZlVVJMKGNvbnN0IFN0cmluZyYgdXJsLCBi
b29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7CiAgICAgaWYgKHVybC5pc0VtcHR5KCkpIHsKICAgICAgICAgZWMgPSBTWU5U
QVhfRVJSOwpAQCAtNjQsNyArNjQsNiBAQCBVUkwgQWJzdHJhY3RXb3JrZXI6OnJlc29sdmVVUkwo
Y29uc3QgU3RyaW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUmIGVjKQogCiAgICAgLy8gRklYTUU6IEVu
Zm9yY2UgdGhlIGNoaWxkLXNyYyBkaXJlY3RpdmUgaW5zdGVhZCBvZiBzY3JpcHQtc3JjIHBlciA8
aHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmFwcHNlYy1jc3AvMi8jZGlyZWN0aXZlLWNoaWxkLXNy
Yy13b3JrZXJzPiAoMjkgQXVndXN0IDIwMTUpLgogICAgIC8vIFNlZSA8aHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzU2Mj4uCi0gICAgYm9vbCBzaG91bGRCeXBhc3NN
YWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3kgPSBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnNo
b3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSgqc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKTsKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5jb250ZW50
U2VjdXJpdHlQb2xpY3koKSk7CiAgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmNv
bnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd1NjcmlwdEZyb21Tb3VyY2Uoc2NyaXB0VVJMLCBz
aG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3kpKSB7CiAgICAgICAgIGVj
ID0gU0VDVVJJVFlfRVJSOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9BYnN0
cmFjdFdvcmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5oCmlu
ZGV4IDdiZjYxN2ZhNGFkMzQ4YTkzNjlmYjMyOGQzZDExZGNhMjdhZjAyZWUuLjQxZTU2MmQ0ODQ1
ZTc5MTI2N2EwNTk2YjM0ODAwZDE3ZWUzM2RmNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0Fi
c3RyYWN0V29ya2VyLmgKQEAgLTU0LDcgKzU0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBBYnN0cmFjdFdvcmtlcigpID0gZGVmYXVsdDsKIAogICAgICAgICAvLyBIZWxwZXIgZnVu
Y3Rpb24gdGhhdCBjb252ZXJ0cyBhIFVSTCB0byBhbiBhYnNvbHV0ZSBVUkwgYW5kIGNoZWNrcyB0
aGUgcmVzdWx0IGZvciB2YWxpZGl0eS4KLSAgICAgICAgVVJMIHJlc29sdmVVUkwoY29uc3QgU3Ry
aW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUmIGVjKTsKKyAgICAgICAgVVJMIHJlc29sdmVVUkwoY29u
c3QgU3RyaW5nJiB1cmwsIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5
UG9saWN5LCBFeGNlcHRpb25Db2RlJik7CiAgICAgICAgIGludHB0cl90IGFzSUQoKSBjb25zdCB7
IHJldHVybiByZWludGVycHJldF9jYXN0PGludHB0cl90Pih0aGlzKTsgfQogCiAgICAgcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcAppbmRleCBmYThkZDJiMzcwNjQ0NTA0YTU0OWU5
YTY4NzUzMTcxZTY5ZDk1YjAwLi5kNjQ0M2U4MjlhZDU5NTg1YjQ4MWU5ZjQwZmUyMzFiYzExM2U3
YzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCkBAIC04MywxOCArODMsMTkgQEAgUmVm
UHRyPFdvcmtlcj4gV29ya2VyOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgY29uc3QgU3RyaW5nJiB1cmwKIAogICAgIHdvcmtlci0+c3VzcGVuZElmTmVlZGVkKCk7CiAK
LSAgICBVUkwgc2NyaXB0VVJMID0gd29ya2VyLT5yZXNvbHZlVVJMKHVybCwgZWMpOworICAgIGJv
b2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5ID0gQ29udGVudFNl
Y3VyaXR5UG9saWN5OjpzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ko
Y29udGV4dCk7CisgICAgVVJMIHNjcmlwdFVSTCA9IHdvcmtlci0+cmVzb2x2ZVVSTCh1cmwsIHNo
b3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgZWMpOwogICAgIGlmIChz
Y3JpcHRVUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHdvcmtl
ci0+bV9zaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3kgPSBDb250ZW50
U2VjdXJpdHlQb2xpY3k6OnNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGlj
eShjb250ZXh0KTsKKyAgICB3b3JrZXItPm1fc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNl
Y3VyaXR5UG9saWN5ID0gc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5
OwogCiAgICAgLy8gVGhlIHdvcmtlciBjb250ZXh0IGRvZXMgbm90IGV4aXN0IHdoaWxlIGxvYWRp
bmcsIHNvIHdlIG11c3QgZW5zdXJlIHRoYXQgdGhlIHdvcmtlciBvYmplY3QgaXMgbm90IGNvbGxl
Y3RlZCwgbm9yIGFyZSBpdHMgZXZlbnQgbGlzdGVuZXJzLgogICAgIHdvcmtlci0+c2V0UGVuZGlu
Z0FjdGl2aXR5KHdvcmtlci5wdHIoKSk7CiAKICAgICB3b3JrZXItPm1fc2NyaXB0TG9hZGVyID0g
V29ya2VyU2NyaXB0TG9hZGVyOjpjcmVhdGUoKTsKLSAgICB3b3JrZXItPm1fc2NyaXB0TG9hZGVy
LT5sb2FkQXN5bmNocm9ub3VzbHkoJmNvbnRleHQsIHNjcmlwdFVSTCwgRGVueUNyb3NzT3JpZ2lu
UmVxdWVzdHMsIHdvcmtlci5wdHIoKSk7Ci0KKyAgICAvLyBGSVhNRTogRW5mb3JjZSBDb250ZW50
IFNlY3VyaXR5IFBvbGljeSBjaGlsZC1zcmMgZGlyZWN0aXZlIHdoZW4gc2hvdWxkQnlwYXNzTWFp
bldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5IGlzIGZhbHNlLiBTZWUgPGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTM1NjI+LgorICAgIHdvcmtlci0+bV9zY3JpcHRM
b2FkZXItPmxvYWRBc3luY2hyb25vdXNseSgmY29udGV4dCwgc2NyaXB0VVJMLCBEZW55Q3Jvc3NP
cmlnaW5SZXF1ZXN0cywgQ29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQ6OkRvTm90RW5m
b3JjZSwgd29ya2VyLnB0cigpKTsKICAgICByZXR1cm4gV1RGTW92ZSh3b3JrZXIpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDlmMGU1
MmEwYjQ3MDk1YjJhYjY1NzdiMTc0NmNkNGNjYjdiYzVmMzMuLmRjZDdkZmJjMzU2MzFiYmFiZDUy
MTA2NzU3NWQwNGVhOTRlZTYyM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
R2xvYmFsU2NvcGUuY3BwCkBAIC0xODIsOCArMTgyLDE1IEBAIHZvaWQgV29ya2VyR2xvYmFsU2Nv
cGU6OmltcG9ydFNjcmlwdHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHVybHMsIEV4Y2VwdGlvbkNv
ZGUmCiAgICAgfQogCiAgICAgZm9yIChhdXRvJiB1cmwgOiBjb21wbGV0ZWRVUkxzKSB7CisgICAg
ICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gY2hlY2sgdGhlIGlzb2xhdGVkIHdvcmxkJ3Mg
Q29udGVudCBTZWN1cml0eSBQb2xpY3kgb25jZSB3ZWJraXQub3JnL2IvMTA0NTIwIGlzIHNvbHZl
ZC4KKyAgICAgICAgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xp
Y3kgPSBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRT
ZWN1cml0eVBvbGljeSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICAgICAgaWYgKCFz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd1Nj
cmlwdEZyb21Tb3VyY2UodXJsLCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQ
b2xpY3kpKSB7CisgICAgICAgICAgICBlYyA9IE5FVFdPUktfRVJSOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKICAgICAgICAgUmVmPFdvcmtlclNjcmlwdExvYWRlcj4gc2NyaXB0
TG9hZGVyID0gV29ya2VyU2NyaXB0TG9hZGVyOjpjcmVhdGUoKTsKLSAgICAgICAgc2NyaXB0TG9h
ZGVyLT5sb2FkU3luY2hyb25vdXNseShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHVybCwgQWxs
b3dDcm9zc09yaWdpblJlcXVlc3RzKTsKKyAgICAgICAgc2NyaXB0TG9hZGVyLT5sb2FkU3luY2hy
b25vdXNseShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHVybCwgQWxsb3dDcm9zc09yaWdpblJl
cXVlc3RzLCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3kgPyBDb250
ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudDo6RG9Ob3RFbmZvcmNlIDogQ29udGVudFNlY3Vy
aXR5UG9saWN5RW5mb3JjZW1lbnQ6OkVuZm9yY2VTY3JpcHRTcmNEaXJlY3RpdmUpOwogCiAgICAg
ICAgIC8vIElmIHRoZSBmZXRjaGluZyBhdHRlbXB0IGZhaWxlZCwgdGhyb3cgYSBORVRXT1JLX0VS
UiBleGNlcHRpb24gYW5kIGFib3J0IGFsbCB0aGVzZSBzdGVwcy4KICAgICAgICAgaWYgKHNjcmlw
dExvYWRlci0+ZmFpbGVkKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyU2NyaXB0TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2Ny
aXB0TG9hZGVyLmNwcAppbmRleCAzNzE5NDY5ZWZlOTY5MDcyNjE2MzBlOTAwZmJiMWEwMmQxOTk0
ZGFlLi5mNzM5ZTAyMTgxODE0ZTA4OTc2NDcxMTgxNGJmMThhYjVhNGE0N2YzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCkBAIC0yOSw2ICsyOSw3
IEBACiAKICNpbmNsdWRlICJXb3JrZXJTY3JpcHRMb2FkZXIuaCIKIAorI2luY2x1ZGUgIkNvbnRl
bnRTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4u
aCIKQEAgLTUzLDcgKzU0LDcgQEAgV29ya2VyU2NyaXB0TG9hZGVyOjp+V29ya2VyU2NyaXB0TG9h
ZGVyKCkKIHsKIH0KIAotdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNvbnN0IFVS
TCYgdXJsLCBDcm9zc09yaWdpblJlcXVlc3RQb2xpY3kgY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5
KQordm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNvbnN0IFVSTCYgdXJsLCBDcm9z
c09yaWdpblJlcXVlc3RQb2xpY3kgY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5LCBDb250ZW50U2Vj
dXJpdHlQb2xpY3lFbmZvcmNlbWVudCBjb250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudCkK
IHsKICAgICBtX3VybCA9IHVybDsKIApAQCAtNjcsMTEgKzY4LDEzIEBAIHZvaWQgV29ya2VyU2Ny
aXB0TG9hZGVyOjpsb2FkU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpCiAgICAgb3B0aW9ucy5zZXRBbGxvd0NyZWRlbnRpYWxzKEFsbG93U3RvcmVkQ3Jl
ZGVudGlhbHMpOwogICAgIG9wdGlvbnMuY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5ID0gY3Jvc3NP
cmlnaW5SZXF1ZXN0UG9saWN5OwogICAgIG9wdGlvbnMuc2V0U2VuZExvYWRDYWxsYmFja3MoU2Vu
ZENhbGxiYWNrcyk7CisgICAgb3B0aW9ucy5zZWN1cml0eU9yaWdpbiA9IHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCk7CisgICAgb3B0aW9ucy5jb250ZW50U2VjdXJpdHlQ
b2xpY3lFbmZvcmNlbWVudCA9IGNvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50OwogCiAg
ICAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShkb3du
Y2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCksICpyZXF1ZXN0
LCAqdGhpcywgb3B0aW9ucyk7CiB9CiAgICAgCi12b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6bG9h
ZEFzeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIGNvbnN0IFVSTCYgdXJsLCBDcm9zc09yaWdpblJlcXVlc3RQb2xpY3kgY3Jvc3NPcmln
aW5SZXF1ZXN0UG9saWN5LCBXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQqIGNsaWVudCkKK3ZvaWQg
V29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgVVJMJiB1cmwsIENyb3NzT3JpZ2lu
UmVxdWVzdFBvbGljeSBjcm9zc09yaWdpblJlcXVlc3RQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBv
bGljeUVuZm9yY2VtZW50IGNvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50LCBXb3JrZXJT
Y3JpcHRMb2FkZXJDbGllbnQqIGNsaWVudCkKIHsKICAgICBBU1NFUlQoY2xpZW50KTsKICAgICBt
X2NsaWVudCA9IGNsaWVudDsKQEAgLTg1LDYgKzg4LDggQEAgdm9pZCBXb3JrZXJTY3JpcHRMb2Fk
ZXI6OmxvYWRBc3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXQKICAgICBvcHRpb25zLnNldEFsbG93Q3JlZGVudGlhbHMoQWxsb3dTdG9yZWRDcmVkZW50aWFs
cyk7CiAgICAgb3B0aW9ucy5jcm9zc09yaWdpblJlcXVlc3RQb2xpY3kgPSBjcm9zc09yaWdpblJl
cXVlc3RQb2xpY3k7CiAgICAgb3B0aW9ucy5zZXRTZW5kTG9hZENhbGxiYWNrcyhTZW5kQ2FsbGJh
Y2tzKTsKKyAgICBvcHRpb25zLnNlY3VyaXR5T3JpZ2luID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+c2VjdXJpdHlPcmlnaW4oKTsKKyAgICBvcHRpb25zLmNvbnRlbnRTZWN1cml0eVBvbGljeUVu
Zm9yY2VtZW50ID0gY29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQ7CiAKICAgICAvLyBE
dXJpbmcgY3JlYXRlLCBjYWxsYmFja3MgbWF5IGhhcHBlbiB3aGljaCByZW1vdmUgdGhlIGxhc3Qg
cmVmZXJlbmNlIHRvIHRoaXMgb2JqZWN0LgogICAgIFJlZjxXb3JrZXJTY3JpcHRMb2FkZXI+IHBy
b3RlY3QoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJT
Y3JpcHRMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVy
LmgKaW5kZXggOWU2OTE3Y2UyZThmMzM5Nzg5NjY4MjkwZTU5NDQyZTJlN2Y2ZDVmNy4uODVlYjNm
OTUxZjIxY2RmOWVmZjA5OTY1NDBmNzU5MWI5N2M0OGJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCkBAIC01NCw4ICs1NCw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdvcmtlclNjcmlwdExv
YWRlcik7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGxvYWRTeW5jaHJvbm91c2x5KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBVUkwmLCBDcm9zc09yaWdpblJlcXVlc3RQb2xpY3kp
OwotICAgICAgICB2b2lkIGxvYWRBc3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgY29uc3QgVVJMJiwgQ3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5LCBXb3JrZXJTY3JpcHRMb2Fk
ZXJDbGllbnQqKTsKKyAgICAgICAgdm9pZCBsb2FkU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgY29uc3QgVVJMJiwgQ3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5LCBDb250ZW50
U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudCk7CisgICAgICAgIHZvaWQgbG9hZEFzeW5jaHJvbm91
c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBVUkwmLCBDcm9zc09yaWdpblJlcXVl
c3RQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50LCBXb3JrZXJTY3JpcHRM
b2FkZXJDbGllbnQqKTsKIAogICAgICAgICB2b2lkIG5vdGlmeUVycm9yKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IGYwMzQwMDcxMWU0YjI5ZGNiZDI5NTk1YTI1
NWY5NmVhZDE2MGRlNmEuLjg4NGM2Y2NmZjg2OTFjMmIxNWVmMDFmYTYwMTNmZWI0Njk5MzNhZWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtNzU2LDYgKzc1Niw3IEBA
IHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlcXVlc3QoRXhjZXB0aW9uQ29kZSYgZWMpCiAg
ICAgb3B0aW9ucy5zZXRDcmVkZW50aWFsUmVxdWVzdChtX2luY2x1ZGVDcmVkZW50aWFscyA/IENs
aWVudFJlcXVlc3RlZENyZWRlbnRpYWxzIDogQ2xpZW50RGlkTm90UmVxdWVzdENyZWRlbnRpYWxz
KTsKICAgICBvcHRpb25zLmNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSA9IFVzZUFjY2Vzc0NvbnRy
b2w7CiAgICAgb3B0aW9ucy5zZWN1cml0eU9yaWdpbiA9IHNlY3VyaXR5T3JpZ2luKCk7CisgICAg
b3B0aW9ucy5jb250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudCA9IENvbnRlbnRTZWN1cml0
eVBvbGljeTo6c2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KCpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkpID8gQ29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQ6
OkRvTm90RW5mb3JjZSA6IENvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50OjpFbmZvcmNl
Q29ubmVjdFNyY0RpcmVjdGl2ZTsKICAgICBvcHRpb25zLmluaXRpYXRvciA9IGNhY2hlZFJlc291
cmNlUmVxdWVzdEluaXRpYXRvcnMoKS54bWxodHRwcmVxdWVzdDsKIAogICAgIGlmIChtX3RpbWVv
dXRNaWxsaXNlY29uZHMpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1YjY0MDVjZjAyMWY1ZmUxMThhYjVlNzliNTY4Yjdm
NTIwMGE3YTFmLi4yMWY0MmQ0ODI0N2NmZDA2NzhhZDJjNTE3NWFlN2Q0OTc1ZTBlNzY1IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDUgKzEsNTUgQEAKIDIwMTYtMDItMDUgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBw
bGUuY29tPgogCisgICAgICAgIENTUCBjb25uZWN0LXNyYyBkaXJlY3RpdmUgc2hvdWxkIGJsb2Nr
IHJlZGlyZWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NjkzNTkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI0MzgzMDI1PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBtb3JlIHRlc3RzLCB1cGRh
dGUgZXJyb25lb3VzIGV4cGVjdGVkIHJlc3VsdHMsIGFuZCByZW1vdmUgc29tZSBlbnRyaWVzIGZy
b20gVGVzdEV4cGVjdGF0aW9ucyBmb3IgdGVzdHMKKyAgICAgICAgdGhhdCBub3cgcGFzcy4KKwor
ICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6IFJlbW92ZSBlbnRyaWVzIGZvciB0ZXN0cyB0aGF0
IG5vdyBwYXNzLiBUaGUgZmFpbHVyZSBvZiB0ZXN0IGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVu
dFNlY3VyaXR5UG9saWN5L3dvcmtlci1pbXBvcnRzY3JpcHRzLWJsb2NrZWQuaHRtbAorICAgICAg
ICB3YXMgZXJyb25lb3VzbHkgYXR0cmlidXRlZCB0byA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1MzU2Mj4uCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9j
b250ZW50U2VjdXJpdHlQb2xpY3kvcmVzb3VyY2VzL2RldGVybWluZS1jb250ZW50LXNlY3VyaXR5
LXBvbGljeS1oZWFkZXIucGhwOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5
L2NvbnRlbnRTZWN1cml0eVBvbGljeS9yZXNvdXJjZXMvc2NyaXB0LXNldC12YWx1ZS5qczogVXNl
IGdsb2JhbCB2YXJpYWJsZSBzZWxmIGluc3RlYWQgb2Ygd2luZG93IHNvIGFzIHRvCisgICAgICAg
IG1ha2UgdGhpcyBzY3JpcHQgd29yayBib3RoIGZyb20gYSBEb2N1bWVudCBhbmQgYSBXZWIgV29y
a2VyLiBJbiBhIGRvY3VtZW50LCBzZWxmIHJlZmVycyB0byB0aGUgV2luZG93IG9iamVjdCBhbmQg
aW4gYSB3b3JrZXIKKyAgICAgICAgaXQgcmVmZXJzIHRvIHRoZSBXb3JrZXJHbG9iYWxTY29wZSBv
YmplY3QuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xp
Y3kvcmVzb3VyY2VzL3dvcmtlci1pbXBvcnRTY3JpcHQtcmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLWFs
bG93ZWQucGhwOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRT
ZWN1cml0eVBvbGljeS9yZXNvdXJjZXMvd29ya2VyLWltcG9ydFNjcmlwdC1yZWRpcmVjdC1jcm9z
cy1vcmlnaW4tYmxvY2tlZC5waHA6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJp
dHkvY29udGVudFNlY3VyaXR5UG9saWN5L3Jlc291cmNlcy93b3JrZXIteGhyLWFsbG93ZWQucGhw
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBv
bGljeS9yZXNvdXJjZXMvd29ya2VyLXhoci1yZWRpcmVjdC1jcm9zcy1vcmlnaW4tYWxsb3dlZC5w
aHA6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5
UG9saWN5L3Jlc291cmNlcy93b3JrZXIteGhyLXJlZGlyZWN0LWNyb3NzLW9yaWdpbi1ibG9ja2Vk
LnBocDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJp
dHlQb2xpY3kvd29ya2VyLWJsb2ItaW5oZXJpdHMtY3NwLWV4cGVjdGVkLnR4dDogUmVtb3ZlIEJs
aW5rLXNwZWNpZmljIG1lc3NhZ2VzIHNvIHRoYXQgdGhlIHRlc3QgcGFzc2VzLgorICAgICAgICAq
IGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3dvcmtlci1ibG9iLWlu
aGVyaXRzLWNzcC1pbXBvcnRTY3JpcHRzLWJsb2NrLWFib3J0cy1hbGwtc3Vic2VxdWVudC1pbXBv
cnRzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9j
b250ZW50U2VjdXJpdHlQb2xpY3kvd29ya2VyLWJsb2ItaW5oZXJpdHMtY3NwLWltcG9ydFNjcmlw
dHMtYmxvY2stYWJvcnRzLWFsbC1zdWJzZXF1ZW50LWltcG9ydHMuaHRtbDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvd29ya2VyLWJs
b2ItaW5oZXJpdHMtY3NwLWltcG9ydFNjcmlwdHMtcmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLWJsb2Nr
ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nv
bnRlbnRTZWN1cml0eVBvbGljeS93b3JrZXItYmxvYi1pbmhlcml0cy1jc3AtaW1wb3J0U2NyaXB0
cy1yZWRpcmVjdC1jcm9zcy1vcmlnaW4tYmxvY2tlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS93b3JrZXItY3NwLWJsb2Nr
cy14aHItcmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvd29ya2VyLWNzcC1i
bG9ja3MteGhyLXJlZGlyZWN0LWNyb3NzLW9yaWdpbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS93b3JrZXItY3NwLWltcG9y
dFNjcmlwdHMtcmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLWFsbG93ZWQtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS93
b3JrZXItY3NwLWltcG9ydFNjcmlwdHMtcmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLWFsbG93ZWQuaHRt
bDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQ
b2xpY3kvd29ya2VyLWNzcC1pbXBvcnRTY3JpcHRzLXJlZGlyZWN0LWNyb3NzLW9yaWdpbi1ibG9j
a2VkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9j
b250ZW50U2VjdXJpdHlQb2xpY3kvd29ya2VyLWNzcC1pbXBvcnRTY3JpcHRzLXJlZGlyZWN0LWNy
b3NzLW9yaWdpbi1ibG9ja2VkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2Vj
dXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3dvcmtlci1pbXBvcnRzY3JpcHRzLWJsb2NrZWQt
ZXhwZWN0ZWQudHh0OiBTdWJzdGl0dXRlIEJsaW5rLXNwZWNpZmljIGVycm9yIHRleHQgd2l0aCB0
aGUgYW5hbG9nb3VzIFdlYktpdCBlcnJvciB0ZXh0LgorICAgICAgICAqIGh0dHAvdGVzdHMvc2Vj
dXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3dvcmtlci1pbXBvcnRzY3JpcHRzLWJsb2NrZWQu
aHRtbDogRGl0dG8uCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJp
dHlQb2xpY3kvd29ya2VyLXdpdGhvdXQtY3NwLWltcG9ydFNjcmlwdHMtcmVkaXJlY3QtY3Jvc3Mt
b3JpZ2luLWFsbG93ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS93b3JrZXItd2l0aG91dC1jc3AtaW1wb3J0
U2NyaXB0cy1yZWRpcmVjdC1jcm9zcy1vcmlnaW4tYWxsb3dlZC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvYnlwYXNzLW1haW4td29ybGQt
Y3NwLWZvci14aHItcmVkaXJlY3QtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvYnlwYXNzLW1haW4td29ybGQtY3NwLWZvci14
aHItcmVkaXJlY3QuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9p
c29sYXRlZFdvcmxkL2J5cGFzcy1tYWluLXdvcmxkLWNzcC13b3JrZXItYmxvYi1pbXBvcnRTY3Jp
cHQtcmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2J5cGFzcy1tYWluLXdvcmxkLWNzcC13
b3JrZXItYmxvYi1pbXBvcnRTY3JpcHQtcmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9ieXBhc3MtbWFp
bi13b3JsZC1jc3Atd29ya2VyLWJsb2ItaW1wb3J0U2NyaXB0cy1yZWRpcmVjdC1jcm9zcy1vcmln
aW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2lz
b2xhdGVkV29ybGQvYnlwYXNzLW1haW4td29ybGQtY3NwLXdvcmtlci1pbXBvcnRTY3JpcHQtcmVk
aXJlY3QtY3Jvc3Mtb3JpZ2luLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2J5cGFzcy1tYWluLXdvcmxkLWNzcC13b3JrZXIt
aW1wb3J0U2NyaXB0cy1yZWRpcmVjdC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvYnlwYXNzLW1haW4t
d29ybGQtY3NwLXdvcmtlci1pbXBvcnRTY3JpcHRzLXJlZGlyZWN0LWNyb3NzLW9yaWdpbi5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvYnlw
YXNzLXdvcmtlci1jc3AtZm9yLXhoci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9ieXBhc3Mtd29ya2VyLWNzcC1mb3IteGhy
LXJlZGlyZWN0LWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9ieXBhc3Mtd29ya2VyLWNzcC1mb3IteGhy
LXJlZGlyZWN0LWNyb3NzLW9yaWdpbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvYnlwYXNzLXdvcmtlci1jc3AtZm9yLXhoci5odG1sOiBB
ZGRlZC4KKworMjAxNi0wMi0wNSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisK
ICAgICAgICAgQ1NQOiBBbGxvdyBXZWIgV29ya2VycyBpbml0aWF0ZWQgZnJvbSBhbiBpc29sYXRl
ZCB3b3JsZCB0byBieXBhc3MgdGhlIG1haW4gd29ybGQgQ29udGVudCBTZWN1cml0eSBQb2xpY3kK
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzYyMgog
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjQ0MDAwMjM+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAy
YWY4NWE3YzcwNDliYzRjMWExYmY3MGIzYTc1YzFmNjhiNDAyZGNmLi4xZWRmNWU0ZTExMDA2MjFk
MWFhYjY1OWZkOWE3YTg0ZWY0NWY3Y2I3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTc5OCw5ICs3
OTgsNiBAQCB3ZWJraXQub3JnL2IvMTUxOTQ5IHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0
aW9uL3BpcGUtdG8uaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzUyMTg1IGZhc3QvY3Nz
L3ZlcnRpY2FsLWFsaWduLWJhc2VsaW5lLXJvd3NwYW4tMDEwLmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KIAogIyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBmYWlsdXJlcwotd2Via2l0Lm9yZy9i
LzY5MzU5IGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2Nvbm5lY3Qt
c3JjLWV2ZW50c291cmNlLXJlZGlyZWN0LXRvLWJsb2NrZWQuaHRtbCBbIEZhaWx1cmUgXQotd2Vi
a2l0Lm9yZy9iLzY5MzU5IGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5
L2Nvbm5lY3Qtc3JjLXhtbGh0dHByZXF1ZXN0LXJlZGlyZWN0LXRvLWJsb2NrZWQuaHRtbCBbIEZh
aWx1cmUgXQotd2Via2l0Lm9yZy9iLzY5MzU5IGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNl
Y3VyaXR5UG9saWN5L3dvcmtlci1ibG9iLWluaGVyaXRzLWNzcC5odG1sIFsgRmFpbHVyZSBdCiB3
ZWJraXQub3JnL2IvMTExODY5IGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9s
aWN5L2V2YWwtYmxvY2tlZC1hbmQtc2VuZHMtcmVwb3J0Lmh0bWwKIHdlYmtpdC5vcmcvYi8xMTU3
MDAgaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvaW5saW5lLWV2ZW50
LWhhbmRsZXItYmxvY2tlZC1hZnRlci1pbmplY3RpbmctbWV0YS5odG1sIFsgRmFpbHVyZSBdCiB3
ZWJraXQub3JnL2IvMTE1NzAyIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9s
aWN5L3JlcG9ydC1jcm9zcy1vcmlnaW4tbm8tY29va2llcy5odG1sIFsgRmFpbHVyZSBdCkBAIC04
MzksNyArODM2LDYgQEAgd2Via2l0Lm9yZy9iLzE1MzE2NiB3ZWJraXQub3JnL2IvMTUzMjQyIGh0
dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWMKIHdlYmtpdC5vcmcvYi8xNTMx
NjcgaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvc2FuZGJveC1yZXBv
cnQtb25seS5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTUzMTY4IGh0dHAvdGVzdHMv
c2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3NvdXJjZS1saXN0LXBhcnNpbmctMDcuaHRt
bCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzE1MzE3MCBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nv
bnRlbnRTZWN1cml0eVBvbGljeS9zb3VyY2UtbGlzdC1wYXJzaW5nLXBhdGhzLTAzLmh0bWwgWyBG
YWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8xNTM1NjIgaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50
U2VjdXJpdHlQb2xpY3kvd29ya2VyLWltcG9ydHNjcmlwdHMtYmxvY2tlZC5odG1sIFsgRmFpbHVy
ZSBdCiB3ZWJraXQub3JnL2IvMTUzNTYyIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3Vy
aXR5UG9saWN5L3dvcmtlci1zY3JpcHQtc3JjLmh0bWwgWyBGYWlsdXJlIF0KIGh0dHAvdGVzdHMv
c2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3NjcmlwdC1zcmMtYmxvY2tlZC1lcnJvci1l
dmVudC5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNl
Y3VyaXR5UG9saWN5LzEuMS9mcmFtZS1hbmNlc3RvcnMvZnJhbWUtYW5jZXN0b3JzLW92ZXJyaWRl
cy14Zm8uaHRtbCAjIE5lZWRzIGV4cGVjdGVkIGZpbGUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9yZXNvdXJjZXMvZGV0
ZXJtaW5lLWNvbnRlbnQtc2VjdXJpdHktcG9saWN5LWhlYWRlci5waHAgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9yZXNvdXJjZXMvZGV0ZXJt
aW5lLWNvbnRlbnQtc2VjdXJpdHktcG9saWN5LWhlYWRlci5waHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTgwMTkz
YTFjZTFhMDNjZDk3ZWYzMzg3ZGU0OTllMzRkNGJmYzRhYwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3Jlc291
cmNlcy9kZXRlcm1pbmUtY29udGVudC1zZWN1cml0eS1wb2xpY3ktaGVhZGVyLnBocApAQCAtMCww
ICsxLDEzIEBACis8P3BocAorICAgIGhlYWRlcigiRXhwaXJlczogVGh1LCAwMSBEZWMgMjAwMyAx
NjowMDowMCBHTVQiKTsKKyAgICBoZWFkZXIoIkNhY2hlLUNvbnRyb2w6IG5vLWNhY2hlLCBtdXN0
LXJldmFsaWRhdGUiKTsKKyAgICBoZWFkZXIoIlByYWdtYTogbm8tY2FjaGUiKTsKKyAgICBpZiAo
JF9HRVRbImNzcCJdKSB7CisgICAgICAgICRjb250ZW50U2VjdXJpdHlQb2xpY3kgPSAkX0dFVFsi
Y3NwIl07CisgICAgICAgIC8vIElmIHRoZSBtYWdpYyBxdW90ZXMgb3B0aW9uIGlzIGVuYWJsZWQs
IHRoZSBDU1AgY291bGQgYmUgZXNjYXBlZCBhbmQKKyAgICAgICAgLy8gdGhlIHRlc3Qgd291bGQg
ZmFpbC4KKyAgICAgICAgaWYgKGdldF9tYWdpY19xdW90ZXNfZ3BjKCkpCisgICAgICAgICAgICAk
Y29udGVudFNlY3VyaXR5UG9saWN5ID0gc3RyaXBzbGFzaGVzKCRjb250ZW50U2VjdXJpdHlQb2xp
Y3kpOworICAgICAgICBoZWFkZXIoIkNvbnRlbnQtU2VjdXJpdHktUG9saWN5OiAiIC4gJGNvbnRl
bnRTZWN1cml0eVBvbGljeSk7CisgICAgfQorPz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3Jlc291cmNlcy9zY3JpcHQt
c2V0LXZhbHVlLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2Vj
dXJpdHlQb2xpY3kvcmVzb3VyY2VzL3NjcmlwdC1zZXQtdmFsdWUuanMKaW5kZXggNTI4ZDIyMGU4
ZDI3ODg2MTlmYzhhNmY2NWMzZDJlZjQzNDI0MGIxZS4uM2EyZmJhYmEyZDA2YWE5OTkxMmU4ZDIx
NmUzNDM4NDNmOTc5ZWNiYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcmVzb3VyY2VzL3NjcmlwdC1zZXQtdmFsdWUuanMK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xp
Y3kvcmVzb3VyY2VzL3NjcmlwdC1zZXQtdmFsdWUuanMKQEAgLTEgKzEgQEAKLXdpbmRvdy5yZXN1
bHQgPSB0cnVlOworc2VsZi5yZXN1bHQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcmVzb3VyY2VzL3dvcmtl
ci1pbXBvcnRTY3JpcHQtcmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLWFsbG93ZWQucGhwIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcmVzb3VyY2Vz
L3dvcmtlci1pbXBvcnRTY3JpcHQtcmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLWFsbG93ZWQucGhwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmYxNDY3ZGQ2ZTJkY2IzZmNkNTE3MWYxMDdmOGRjOWFlOTNhNDc5NTMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1
cml0eVBvbGljeS9yZXNvdXJjZXMvd29ya2VyLWltcG9ydFNjcmlwdC1yZWRpcmVjdC1jcm9zcy1v
cmlnaW4tYWxsb3dlZC5waHAKQEAgLTAsMCArMSwxOCBAQAorPD9waHAKKyAgICByZXF1aXJlICJk
ZXRlcm1pbmUtY29udGVudC1zZWN1cml0eS1wb2xpY3ktaGVhZGVyLnBocCI7Cis/Pgorc2VsZi5y
ZXN1bHQgPSBmYWxzZTsKK3ZhciBleGNlcHRpb247Cit0cnkgeworICAgIGltcG9ydFNjcmlwdHMo
Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcmVz
b3VyY2VzL3JlZGlyLnBocD91cmw9aHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L2NvbnRl
bnRTZWN1cml0eVBvbGljeS9yZXNvdXJjZXMvc2NyaXB0LXNldC12YWx1ZS5qcyIpOworfSBjYXRj
aCAoZSkgeworICAgIGV4Y2VwdGlvbiA9IGU7Cit9CitpZiAoZXhjZXB0aW9uKQorICAgIHNlbGYu
cG9zdE1lc3NhZ2UoIkZBSUwgc2hvdWxkIG5vdCBoYXZlIHRocm93biBhbiBleGNlcHRpb24uIFRo
cmV3IGV4Y2VwdGlvbiAiICsgZXhjZXB0aW9uICsgIi4iKTsKK2Vsc2UgeworICAgIGlmIChzZWxm
LnJlc3VsdCkKKyAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSgiUEFTUyBkaWQgaW1wb3J0IHNjcmlw
dCBmcm9tIGRpZmZlcmVudCBvcmlnaW4uIik7CisgICAgZWxzZQorICAgICAgICBzZWxmLnBvc3RN
ZXNzYWdlKCJGQUlMIGRpZCBub3QgaW1wb3J0IHNjcmlwdCBmcm9tIGRpZmZlcmVudCBvcmlnaW4u
Iik7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRl
bnRTZWN1cml0eVBvbGljeS9yZXNvdXJjZXMvd29ya2VyLWltcG9ydFNjcmlwdC1yZWRpcmVjdC1j
cm9zcy1vcmlnaW4tYmxvY2tlZC5waHAgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L2NvbnRlbnRTZWN1cml0eVBvbGljeS9yZXNvdXJjZXMvd29ya2VyLWltcG9ydFNjcmlwdC1yZWRp
cmVjdC1jcm9zcy1vcmlnaW4tYmxvY2tlZC5waHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGMzNDVmYTgyNTVhMzI5
YWJjMjQzZTUyMDI3YWZjOGIwYzg0NDEzMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3Jlc291cmNlcy93b3Jr
ZXItaW1wb3J0U2NyaXB0LXJlZGlyZWN0LWNyb3NzLW9yaWdpbi1ibG9ja2VkLnBocApAQCAtMCww
ICsxLDE4IEBACis8P3BocAorICAgIHJlcXVpcmUgImRldGVybWluZS1jb250ZW50LXNlY3VyaXR5
LXBvbGljeS1oZWFkZXIucGhwIjsKKz8+Cit2YXIgZXhjZXB0aW9uOwordHJ5IHsKKyAgICBpbXBv
cnRTY3JpcHRzKCJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5
UG9saWN5L3Jlc291cmNlcy9yZWRpci5waHA/dXJsPWh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1
cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcmVzb3VyY2VzL3NjcmlwdC1zZXQtdmFsdWUuanMi
KTsKK30gY2F0Y2ggKGUpIHsKKyAgICBleGNlcHRpb24gPSBlOworfQordmFyIGV4cGVjdGVkRXhj
ZXB0aW9uQ29kZSA9IDE5OyAvLyBET01FeGNlcHRpb24uTkVUV09SS19FUlIKK2lmICghZXhjZXB0
aW9uKQorICAgIHNlbGYucG9zdE1lc3NhZ2UoIkZBSUwgc2hvdWxkIHRocm93ICIgKyBleHBlY3Rl
ZEV4Y2VwdGlvbkNvZGUgKyAiLiBCdXQgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24uIik7Citl
bHNlIHsKKyAgICBpZiAoZXhjZXB0aW9uLmNvZGUgPT09IGV4cGVjdGVkRXhjZXB0aW9uQ29kZSkK
KyAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSgiUEFTUyB0aHJldyBleGNlcHRpb24gIiArIGV4Y2Vw
dGlvbiArICIuIik7CisgICAgZWxzZQorICAgICAgICBzZWxmLnBvc3RNZXNzYWdlKCJGQUlMIHNo
b3VsZCB0aHJvdyAiICsgZXhwZWN0ZWRFeGNlcHRpb25Db2RlICsgIi4gVGhyZXcgZXhjZXB0aW9u
ICIgKyBleGNlcHRpb24gKyAiLiIpOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcmVzb3VyY2VzL3dvcmtlci14aHIt
YWxsb3dlZC5waHAgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1
cml0eVBvbGljeS9yZXNvdXJjZXMvd29ya2VyLXhoci1hbGxvd2VkLnBocApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
MTZhNjZiOWY4NmI2NWIyY2ZjZDY2NmQ0ZTJiMWNmMzhlZDgxNmY4Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kv
cmVzb3VyY2VzL3dvcmtlci14aHItYWxsb3dlZC5waHAKQEAgLTAsMCArMSwxMiBAQAorPD9waHAK
KyAgICByZXF1aXJlICJkZXRlcm1pbmUtY29udGVudC1zZWN1cml0eS1wb2xpY3ktaGVhZGVyLnBo
cCI7Cis/PgordmFyIGlzQXN5bmNocm9ub3VzID0gZmFsc2U7Cit2YXIgeGhyID0gbmV3IFhNTEh0
dHBSZXF1ZXN0OwordHJ5IHsKKyAgICB4aHIub3BlbigiR0VUIiwgImh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvZ2V0LnR4dCIsIGlzQXN5bmNocm9ub3VzKTsK
KyAgICB4aHIuc2VuZCgpOworICAgIHNlbGYucG9zdE1lc3NhZ2UoeGhyLnJlc3BvbnNlKTsKK30g
Y2F0Y2ggKGV4Y2VwdGlvbikgeworICAgIHNlbGYucG9zdE1lc3NhZ2UoIkZBSUwgc2hvdWxkIG5v
dCBoYXZlIHRocm93biBhbiBleGNlcHRpb24uIFRocmV3IGV4Y2VwdGlvbiAiICsgZXhjZXB0aW9u
ICsgIi4iKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
Y29udGVudFNlY3VyaXR5UG9saWN5L3Jlc291cmNlcy93b3JrZXIteGhyLXJlZGlyZWN0LWNyb3Nz
LW9yaWdpbi1hbGxvd2VkLnBocCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29u
dGVudFNlY3VyaXR5UG9saWN5L3Jlc291cmNlcy93b3JrZXIteGhyLXJlZGlyZWN0LWNyb3NzLW9y
aWdpbi1hbGxvd2VkLnBocApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNDQzNWM4NDQ3NmE4MWZlZGJjYTQ3ZDRmOWU0
NDU3ZjdiMzE1MTdhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcmVzb3VyY2VzL3dvcmtlci14aHItcmVkaXJl
Y3QtY3Jvc3Mtb3JpZ2luLWFsbG93ZWQucGhwCkBAIC0wLDAgKzEsMTIgQEAKKzw/cGhwCisgICAg
cmVxdWlyZSAiZGV0ZXJtaW5lLWNvbnRlbnQtc2VjdXJpdHktcG9saWN5LWhlYWRlci5waHAiOwor
Pz4KK3ZhciBpc0FzeW5jaHJvbm91cyA9IGZhbHNlOwordmFyIHhociA9IG5ldyBYTUxIdHRwUmVx
dWVzdDsKK3RyeSB7CisgICAgeGhyLm9wZW4oIkdFVCIsICJodHRwOi8vMTI3LjAuMC4xOjgwMDAv
c2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3Jlc291cmNlcy9yZWRpci5waHA/dXJsPWh0
dHA6Ly9sb2NhbGhvc3Q6ODAwMC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRy
b2wtYmFzaWMtYWxsb3cuY2dpIiwgaXNBc3luY2hyb25vdXMpOworICAgIHhoci5zZW5kKCk7Cisg
ICAgc2VsZi5wb3N0TWVzc2FnZSh4aHIucmVzcG9uc2UpOworfSBjYXRjaCAoZXhjZXB0aW9uKSB7
CisgICAgc2VsZi5wb3N0TWVzc2FnZSgiRkFJTCBzaG91bGQgbm90IGhhdmUgdGhyb3duIGFuIGV4
Y2VwdGlvbi4gVGhyZXcgZXhjZXB0aW9uICIgKyBleGNlcHRpb24gKyAiLiIpOworfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xp
Y3kvcmVzb3VyY2VzL3dvcmtlci14aHItcmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLWJsb2NrZWQucGhw
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kv
cmVzb3VyY2VzL3dvcmtlci14aHItcmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLWJsb2NrZWQucGhwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmU4NTI5N2ZlY2M1NjFmODQ4YTgzZTExYTMzMTExODE0YmI5MjliOWEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1
cml0eVBvbGljeS9yZXNvdXJjZXMvd29ya2VyLXhoci1yZWRpcmVjdC1jcm9zcy1vcmlnaW4tYmxv
Y2tlZC5waHAKQEAgLTAsMCArMSwxNiBAQAorPD9waHAKKyAgICByZXF1aXJlICJkZXRlcm1pbmUt
Y29udGVudC1zZWN1cml0eS1wb2xpY3ktaGVhZGVyLnBocCI7Cis/PgordmFyIGV4cGVjdGVkRXhj
ZXB0aW9uQ29kZSA9IDE5OyAvLyBET01FeGNlcHRpb24uTkVUV09SS19FUlIKK3ZhciBpc0FzeW5j
aHJvbm91cyA9IGZhbHNlOwordmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdDsKK3RyeSB7Cisg
ICAgeGhyLm9wZW4oIkdFVCIsICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvY29udGVu
dFNlY3VyaXR5UG9saWN5L3Jlc291cmNlcy9yZWRpci5waHA/dXJsPWh0dHA6Ly9sb2NhbGhvc3Q6
ODAwMC94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvYWNjZXNzLWNvbnRyb2wtYmFzaWMtYWxsb3cu
Y2dpIiwgaXNBc3luY2hyb25vdXMpOworICAgIHhoci5zZW5kKCk7CisgICAgc2VsZi5wb3N0TWVz
c2FnZSgiRkFJTCBzaG91bGQgdGhyb3cgIiArIGV4cGVjdGVkRXhjZXB0aW9uQ29kZSArICIuIEJ1
dCBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbi4iKTsKK30gY2F0Y2ggKGV4Y2VwdGlvbikgewor
ICAgIGlmIChleGNlcHRpb24uY29kZSA9PT0gZXhwZWN0ZWRFeGNlcHRpb25Db2RlKQorICAgICAg
ICBzZWxmLnBvc3RNZXNzYWdlKCJQQVNTIHRocmV3IGV4Y2VwdGlvbiAiICsgZXhjZXB0aW9uICsg
Ii4iKTsKKyAgICBlbHNlCisgICAgICAgIHNlbGYucG9zdE1lc3NhZ2UoIkZBSUwgc2hvdWxkIHRo
cm93ICIgKyBleHBlY3RlZEV4Y2VwdGlvbkNvZGUgKyAiLiBUaHJldyBleGNlcHRpb24gIiArIGV4
Y2VwdGlvbiArICIuIik7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS93b3JrZXItYmxvYi1pbmhlcml0cy1jc3AtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJp
dHlQb2xpY3kvd29ya2VyLWJsb2ItaW5oZXJpdHMtY3NwLWV4cGVjdGVkLnR4dAppbmRleCA4MDk0
MmQ5OTM2OTdjOGFlNTVlZTJlZDkxZTA2MmZjODMxMzMwNmMzLi5jZjU4Nzg4ZTA3OTJkM2MxOTNh
NTJhODAyMWRhN2Y5N2RhYWRmYjdkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS93b3JrZXItYmxvYi1pbmhlcml0cy1jc3At
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVu
dFNlY3VyaXR5UG9saWN5L3dvcmtlci1ibG9iLWluaGVyaXRzLWNzcC1leHBlY3RlZC50eHQKQEAg
LTEsNiArMSw1IEBACiBDT05TT0xFIE1FU1NBR0U6IFJlZnVzZWQgdG8gbG9hZCB0aGUgc2NyaXB0
ICdodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3Jl
c291cmNlcy9wb3N0LW1lc3NhZ2UuanMnIGJlY2F1c2UgaXQgdmlvbGF0ZXMgdGhlIGZvbGxvd2lu
ZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6ICJzY3JpcHQtc3JjICd1bnNhZmUt
aW5saW5lJyBodHRwOi8vMTI3LjAuMC4xOjgwMDAiLgogCi1UaGlzIGlzIGEgdGVzdGhhcm5lc3Mu
anMtYmFzZWQgdGVzdC4KKwogUEFTUyBCbG9iIHdvcmtlciBpbmhlcml0cyBDU1AgCi1IYXJuZXNz
OiB0aGUgdGVzdCByYW4gdG8gY29tcGxldGlvbi4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvd29ya2VyLWJsb2ItaW5o
ZXJpdHMtY3NwLWltcG9ydFNjcmlwdHMtYmxvY2stYWJvcnRzLWFsbC1zdWJzZXF1ZW50LWltcG9y
dHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50
U2VjdXJpdHlQb2xpY3kvd29ya2VyLWJsb2ItaW5oZXJpdHMtY3NwLWltcG9ydFNjcmlwdHMtYmxv
Y2stYWJvcnRzLWFsbC1zdWJzZXF1ZW50LWltcG9ydHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjVkYTExMjk2OTBlNmY4NDBmOGQyYWVhZDE0ZDY4MDk0MDgwYWQyNjMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGlj
eS93b3JrZXItYmxvYi1pbmhlcml0cy1jc3AtaW1wb3J0U2NyaXB0cy1ibG9jay1hYm9ydHMtYWxs
LXN1YnNlcXVlbnQtaW1wb3J0cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitDT05TT0xF
IE1FU1NBR0U6IFJlZnVzZWQgdG8gbG9hZCB0aGUgc2NyaXB0ICdodHRwOi8vbG9jYWxob3N0Ojgw
MDAvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLWltcG9ydFNjcmlwdHMtc291cmNlMS5qcycgYmVj
YXVzZSBpdCB2aW9sYXRlcyB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRp
cmVjdGl2ZTogInNjcmlwdC1zcmMgJ3NlbGYnICd1bnNhZmUtaW5saW5lJyIuCisKK1RoaXMgdGVz
dHMgdGhhdCB3aGVuIGNhbGxpbmcgV29ya2VyR2xvYmFsU2NvcGUuaW1wb3J0U2NyaXB0cygpIHdp
bGwgdHdvIHNjcmlwdCBVUkxzIHRoYXQgdGhlIHNlY29uZCBzY3JpcHQgaXMgbm90IGxvYWRlZCBp
ZiB0aGUgZmlyc3Qgc2NyaXB0IFVSTCB3YXMgYmxvY2tlZCBieSB0aGUgQ29udGVudCBTZWN1cml0
eSBQb2xpY3kgb2YgdGhlIHdvcmtlciAoaW5oZXJpdGVkIGZyb20gdGhpcyBwYWdlKS4KKworUEFT
UyB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5ldHdvcmtFcnJvcjogRE9NIEV4Y2VwdGlvbiAxOS4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3Vy
aXR5UG9saWN5L3dvcmtlci1ibG9iLWluaGVyaXRzLWNzcC1pbXBvcnRTY3JpcHRzLWJsb2NrLWFi
b3J0cy1hbGwtc3Vic2VxdWVudC1pbXBvcnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS93b3JrZXItYmxvYi1pbmhlcml0cy1jc3At
aW1wb3J0U2NyaXB0cy1ibG9jay1hYm9ydHMtYWxsLXN1YnNlcXVlbnQtaW1wb3J0cy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjYzNGVmYTY1MTZjNWJhYjBiMjdmODllNWQwZmU4MzEwMzg2Nzg2YWEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1
cml0eVBvbGljeS93b3JrZXItYmxvYi1pbmhlcml0cy1jc3AtaW1wb3J0U2NyaXB0cy1ibG9jay1h
Ym9ydHMtYWxsLXN1YnNlcXVlbnQtaW1wb3J0cy5odG1sCkBAIC0wLDAgKzEsNTcgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzwhLS0gRklYTUU6IENoYW5nZSAnc2VsZicgdG8g
J2Jsb2I6JyBvbmNlIHdlIGZpeCA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MzE1OD4uIC0tPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1TZWN1cml0eS1Qb2xp
Y3kiIGNvbnRlbnQ9InNjcmlwdC1zcmMgJ3NlbGYnICd1bnNhZmUtaW5saW5lJyI+Cis8c2NyaXB0
PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPHA+VGhpcyB0ZXN0cyB0aGF0IHdoZW4gY2FsbGluZyBXb3JrZXJHbG9iYWxTY29w
ZS5pbXBvcnRTY3JpcHRzKCkgd2lsbCB0d28gc2NyaXB0IFVSTHMgdGhhdCB0aGUgc2Vjb25kIHNj
cmlwdCBpcyBub3QgbG9hZGVkIGlmIHRoZSBmaXJzdCBzY3JpcHQgVVJMIHdhcyBibG9ja2VkIGJ5
IHRoZSBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBvZiB0aGUgd29ya2VyIChpbmhlcml0ZWQgZnJv
bSB0aGlzIHBhZ2UpLjwvcD4KKzxwcmUgaWQ9InJlc3VsdCI+PC9wcmU+Cis8c2NyaXB0PgorZnVu
Y3Rpb24gcmVwb3J0UmVzdWx0QW5kTm90aWZ5RG9uZShtZXNzYWdlKQoreworICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS50ZXh0Q29udGVudCA9IG1lc3NhZ2U7CisgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30K
KwordmFyIHNjcmlwdCA9IFsKKyAgICAnc2VsZi5sb2FkZWRTb3VyY2UxID0gZmFsc2U7JywKKyAg
ICAnc2VsZi5sb2FkZWRTb3VyY2UyID0gZmFsc2U7JywKKyAgICAndmFyIGV4Y2VwdGlvbjsnLAor
ICAgICd0cnkgeycsCisgICAgJyAgICBpbXBvcnRTY3JpcHRzKCJodHRwOi8vbG9jYWxob3N0Ojgw
MDAvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLWltcG9ydFNjcmlwdHMtc291cmNlMS5qcyIsICJo
dHRwOi8vbG9jYWxob3N0OjgwMDAvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLWltcG9ydFNjcmlw
dHMtc291cmNlMi5qcyIpOycsCisgICAgJ30gY2F0Y2ggKGUpIHsnLAorICAgICcgICAgZXhjZXB0
aW9uID0gZTsnLAorICAgICd9JywKKyAgICAndmFyIGV4cGVjdGVkRXhjZXB0aW9uQ29kZSA9IDE5
OyAvLyBET01FeGNlcHRpb24uTkVUV09SS19FUlInLAorICAgICdpZiAoIWV4Y2VwdGlvbiknLAor
ICAgICcgICAgc2VsZi5wb3N0TWVzc2FnZSgiRkFJTCBzaG91bGQgdGhyb3cgIiArIGV4cGVjdGVk
RXhjZXB0aW9uQ29kZSArICIuIEJ1dCBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbi4iKTsnLAor
ICAgICdlbHNlIHsnLAorICAgICcgICAgaWYgKHNlbGYubG9hZGVkU291cmNlMSknLAorICAgICcg
ICAgICAgIHNlbGYucG9zdE1lc3NhZ2UoIkZBSUwgc2hvdWxkIG5vdCBoYXZlIGxvYWRlZCBhbmQg
ZXhlY3V0ZWQgdGhlIGZpcnN0IHNjcmlwdC4iKTsnLAorICAgICcgICAgZWxzZSBpZiAoc2VsZi5s
b2FkZWRTb3VyY2UyKScsCisgICAgJyAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSgiRkFJTCBzaG91
bGQgbm90IGhhdmUgbG9hZGVkIGFuZCBleGVjdXRlZCB0aGUgc2Vjb25kIHNjcmlwdC4iKTsnLAor
ICAgICcgICAgZWxzZSBpZiAoZXhjZXB0aW9uLmNvZGUgPT0gZXhwZWN0ZWRFeGNlcHRpb25Db2Rl
KScsCisgICAgJyAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSgiUEFTUyB0aHJldyBleGNlcHRpb24g
IiArIGV4Y2VwdGlvbiArICIuIik7JywKKyAgICAnICAgIGVsc2UnLAorICAgICcgICAgICAgIHNl
bGYucG9zdE1lc3NhZ2UoIkZBSUwgc2hvdWxkIHRocm93ICIgKyBleHBlY3RlZEV4Y2VwdGlvbkNv
ZGUgKyAiLiBUaHJldyBleGNlcHRpb24gIiArIGV4Y2VwdGlvbiArICIuIik7JywKKyAgICAnfScs
CitdLmpvaW4oIlxuIik7CisKK3ZhciB3b3JrZXI7Cit0cnkgeworICAgIHdvcmtlciA9IG5ldyBX
b3JrZXIod2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwobmV3IEJsb2IoW3NjcmlwdF0pKSk7Cisg
ICAgd29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChldmVudCkgeyByZXBvcnRSZXN1bHRBbmRO
b3RpZnlEb25lKGV2ZW50LmRhdGEpOyB9OworfSBjYXRjaCAoZXhjZXB0aW9uKSB7CisgICAgcmVw
b3J0UmVzdWx0QW5kTm90aWZ5RG9uZSgiRkFJTCBzaG91bGQgbm90IGhhdmUgdGhyb3duIGFuIGV4
Y2VwdGlvbiB3aGVuIGNyZWF0aW5nIHdvcmtlci4gVGhyZXcgZXhjZXB0aW9uICIgKyBleGNlcHRp
b24gKyAiLiIpOworfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS93b3Jr
ZXItYmxvYi1pbmhlcml0cy1jc3AtaW1wb3J0U2NyaXB0cy1yZWRpcmVjdC1jcm9zcy1vcmlnaW4t
YmxvY2tlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nv
bnRlbnRTZWN1cml0eVBvbGljeS93b3JrZXItYmxvYi1pbmhlcml0cy1jc3AtaW1wb3J0U2NyaXB0
cy1yZWRpcmVjdC1jcm9zcy1vcmlnaW4tYmxvY2tlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NWRjMWQyZjgxMTBiZGJiOTgwOWNhYmNkOGY5MWM5NDliMjdiNDc5NwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5
L3dvcmtlci1ibG9iLWluaGVyaXRzLWNzcC1pbXBvcnRTY3JpcHRzLXJlZGlyZWN0LWNyb3NzLW9y
aWdpbi1ibG9ja2VkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK1RoaXMgdGVzdHMgdGhh
dCB0aGUgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgb2YgdGhlIHBhcmVudCBvcmlnaW4gKHRoaXMg
cGFnZSkgYmxvY2tzIGEgV2ViIFdvcmtlciBmcm9tIGltcG9ydGluZyBhIHNjcmlwdCBmcm9tIGEg
ZGlmZmVyZW50IG9yaWdpbiwgbm90IGxpc3RlZCBpbiBzY3JpcHQtc3JjLCB0aHJvdWdoIGEgcmVk
aXJlY3QuCisKK1BBU1MgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOZXR3b3JrRXJyb3I6IERPTSBF
eGNlcHRpb24gMTkuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L2NvbnRlbnRTZWN1cml0eVBvbGljeS93b3JrZXItYmxvYi1pbmhlcml0cy1jc3AtaW1wb3J0U2Ny
aXB0cy1yZWRpcmVjdC1jcm9zcy1vcmlnaW4tYmxvY2tlZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvd29ya2VyLWJsb2ItaW5oZXJp
dHMtY3NwLWltcG9ydFNjcmlwdHMtcmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLWJsb2NrZWQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wODJmYjI1NTJiYWQ3OGYyZmM4MWZhZGYwYzczMTMzOTBhY2MwNzNjCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2Vj
dXJpdHlQb2xpY3kvd29ya2VyLWJsb2ItaW5oZXJpdHMtY3NwLWltcG9ydFNjcmlwdHMtcmVkaXJl
Y3QtY3Jvc3Mtb3JpZ2luLWJsb2NrZWQuaHRtbApAQCAtMCwwICsxLDUxIEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8IS0tIEZJWE1FOiBDaGFuZ2UgJ3NlbGYnIHRvICdibG9i
Oicgb25jZSB3ZSBmaXggPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTMxNTg+LiAtLT4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtU2VjdXJpdHktUG9saWN5IiBj
b250ZW50PSJzY3JpcHQtc3JjICdzZWxmJyBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkv
Y29udGVudFNlY3VyaXR5UG9saWN5L3Jlc291cmNlcy9yZWRpci5waHAgJ3Vuc2FmZS1pbmxpbmUn
Ij4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKK30KKzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgdGhlIENvbnRlbnQgU2VjdXJp
dHkgUG9saWN5IG9mIHRoZSBwYXJlbnQgb3JpZ2luICh0aGlzIHBhZ2UpIGJsb2NrcyBhIFdlYiBX
b3JrZXIgZnJvbSBpbXBvcnRpbmcgYSBzY3JpcHQgZnJvbSBhIGRpZmZlcmVudCBvcmlnaW4sIG5v
dCBsaXN0ZWQgaW4gc2NyaXB0LXNyYywgdGhyb3VnaCBhIHJlZGlyZWN0LjwvcD4KKzxwcmUgaWQ9
InJlc3VsdCI+PC9wcmU+Cis8c2NyaXB0PgorZnVuY3Rpb24gcmVwb3J0UmVzdWx0QW5kTm90aWZ5
RG9uZShtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS50
ZXh0Q29udGVudCA9IG1lc3NhZ2U7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKwordmFyIHNjcmlwdCA9IFsKKyAgICAndmFy
IGV4Y2VwdGlvbjsnLAorICAgICd0cnkgeycsCisgICAgJyAgICBpbXBvcnRTY3JpcHRzKCJodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3Jlc291cmNl
cy9yZWRpci5waHA/dXJsPWh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9jb250ZW50U2Vj
dXJpdHlQb2xpY3kvcmVzb3VyY2VzL3NjcmlwdC1zZXQtdmFsdWUuanMiKTsnLAorICAgICd9IGNh
dGNoIChlKSB7JywKKyAgICAnICAgIGV4Y2VwdGlvbiA9IGU7JywKKyAgICAnfScsCisgICAgJ3Zh
ciBleHBlY3RlZEV4Y2VwdGlvbkNvZGUgPSAxOTsgLy8gRE9NRXhjZXB0aW9uLk5FVFdPUktfRVJS
JywKKyAgICAnaWYgKCFleGNlcHRpb24pJywKKyAgICAnICAgIHNlbGYucG9zdE1lc3NhZ2UoIkZB
SUwgc2hvdWxkIHRocm93ICIgKyBleHBlY3RlZEV4Y2VwdGlvbkNvZGUgKyAiLiBCdXQgZGlkIG5v
dCB0aHJvdyBhbiBleGNlcHRpb24uIik7JywKKyAgICAnZWxzZSB7JywKKyAgICAnICAgIGlmIChl
eGNlcHRpb24uY29kZSA9PSBleHBlY3RlZEV4Y2VwdGlvbkNvZGUpJywKKyAgICAnICAgICAgICBz
ZWxmLnBvc3RNZXNzYWdlKCJQQVNTIHRocmV3IGV4Y2VwdGlvbiAiICsgZXhjZXB0aW9uICsgIi4i
KTsnLAorICAgICcgICAgZWxzZScsCisgICAgJyAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSgiRkFJ
TCBzaG91bGQgdGhyb3cgIiArIGV4cGVjdGVkRXhjZXB0aW9uQ29kZSArICIuIFRocmV3IGV4Y2Vw
dGlvbiAiICsgZXhjZXB0aW9uICsgIi4iKTsnLAorICAgICd9JywKK10uam9pbigiXG4iKTsKKwor
dmFyIHdvcmtlcjsKK3RyeSB7CisgICAgd29ya2VyID0gbmV3IFdvcmtlcih3aW5kb3cuVVJMLmNy
ZWF0ZU9iamVjdFVSTChuZXcgQmxvYihbc2NyaXB0XSkpKTsKKyAgICB3b3JrZXIub25tZXNzYWdl
ID0gZnVuY3Rpb24gKGV2ZW50KSB7IHJlcG9ydFJlc3VsdEFuZE5vdGlmeURvbmUoZXZlbnQuZGF0
YSk7IH07Cit9IGNhdGNoIChleGNlcHRpb24pIHsKKyAgICByZXBvcnRSZXN1bHRBbmROb3RpZnlE
b25lKCJGQUlMIHNob3VsZCBub3QgaGF2ZSB0aHJvd24gYW4gZXhjZXB0aW9uIHdoZW4gY3JlYXRp
bmcgd29ya2VyLiBUaHJldyBleGNlcHRpb24gIiArIGV4Y2VwdGlvbiArICIuIik7Cit9Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3dvcmtlci1jc3AtYmxvY2tzLXhoci1y
ZWRpcmVjdC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvd29ya2VyLWNzcC1ibG9ja3MteGhyLXJl
ZGlyZWN0LWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzA3NTM2ZjE4NTFi
NDQ2ZGUwMzJiYWFkYmY2OTI2YjI1NDQ5ZmQ5NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3dvcmtlci1jc3At
YmxvY2tzLXhoci1yZWRpcmVjdC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MyBAQAorVGhpcyB0ZXN0cyBhbiBYSFIgcmVxdWVzdCBtYWRlIGZyb20gYSB3b3JrZXIgaXMgYmxv
Y2tlZCBpZiBpdCByZWRpcmVjdHMgdG8gYSBjcm9zcy1vcmlnaW4gcmVzb3VyY2UgdGhhdCBpcyBu
b3QgbGlzdGVkIGFzIGEgY29ubmVjdC1zcmMgaW4gdGhlIENTUCBvZiB0aGUgd29ya2VyLgorCitQ
QVNTIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTmV0d29ya0Vycm9yOiBET00gRXhjZXB0aW9uIDE5
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2Vj
dXJpdHlQb2xpY3kvd29ya2VyLWNzcC1ibG9ja3MteGhyLXJlZGlyZWN0LWNyb3NzLW9yaWdpbi5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xp
Y3kvd29ya2VyLWNzcC1ibG9ja3MteGhyLXJlZGlyZWN0LWNyb3NzLW9yaWdpbi5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmUwMzczNTI2MDIzM2Y3ODNmYmMxM2NiNGY1NTA1NzI5YTA0MmQ5NmUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0
eVBvbGljeS93b3JrZXItY3NwLWJsb2Nrcy14aHItcmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLmh0bWwK
QEAgLTAsMCArMSwzMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgYW4gWEhSIHJlcXVlc3QgbWFkZSBmcm9tIGEgd29ya2Vy
IGlzIGJsb2NrZWQgaWYgaXQgcmVkaXJlY3RzIHRvIGEgY3Jvc3Mtb3JpZ2luIHJlc291cmNlIHRo
YXQgaXMgbm90IGxpc3RlZCBhcyBhIGNvbm5lY3Qtc3JjIGluIHRoZSBDU1Agb2YgdGhlIHdvcmtl
ci48L3A+Cis8cHJlIGlkPSJyZXN1bHQiPjwvcHJlPgorPHNjcmlwdD4KK3dpbmRvdy5vbm1lc3Nh
Z2UgPSBmdW5jdGlvbiAoZXZlbnQpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJl
c3VsdCIpLnRleHRDb250ZW50ID0gZXZlbnQuZGF0YTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorCit2YXIgd29ya2VyOwor
dHJ5IHsKKyAgICB3b3JrZXIgPSBuZXcgV29ya2VyKCJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2Vj
dXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3Jlc291cmNlcy93b3JrZXIteGhyLXJlZGlyZWN0
LWNyb3NzLW9yaWdpbi1ibG9ja2VkLnBocD9jc3A9IiArIGVuY29kZVVSSUNvbXBvbmVudCgiY29u
bmVjdC1zcmMgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBv
bGljeS9yZXNvdXJjZXMvcmVkaXIucGhwIikpOworICAgIHdvcmtlci5vbm1lc3NhZ2UgPSBmdW5j
dGlvbiAoZXZlbnQpIHsgd2luZG93LnBvc3RNZXNzYWdlKGV2ZW50LmRhdGEsICIqIikgfTsKK30g
Y2F0Y2ggKGV4Y2VwdGlvbikgeworICAgIHdpbmRvdy5wb3N0TWVzc2FnZSgiRkFJTCBzaG91bGQg
bm90IGhhdmUgdGhyb3duIGFuIGV4Y2VwdGlvbiB3aGVuIGNyZWF0aW5nIHdvcmtlci4gVGhyZXcg
ZXhjZXB0aW9uICIgKyBleGNlcHRpb24gKyAiLiIsICIqIik7Cit9Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
Y29udGVudFNlY3VyaXR5UG9saWN5L3dvcmtlci1jc3AtaW1wb3J0U2NyaXB0cy1yZWRpcmVjdC1j
cm9zcy1vcmlnaW4tYWxsb3dlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS93b3JrZXItY3NwLWltcG9ydFNjcmlwdHMt
cmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLWFsbG93ZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNk
NTkzODJhOWViNzBhZGI5MTc5MWMxNTIxM2VkNzBkNDI0ZTA5MjcKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS93
b3JrZXItY3NwLWltcG9ydFNjcmlwdHMtcmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLWFsbG93ZWQtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorVGhpcyB0ZXN0cyBhIFdlYiBXb3JrZXIgd2l0aG91
dCBhIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGlzIGFsbG93ZWQgdG8gaW1wb3J0IGEgc2NyaXB0
IGZyb20gYSBkaWZmZXJlbnQgb3JpZ2luIHRocm91Z2ggYSByZWRpcmVjdC4KKworUEFTUyBkaWQg
aW1wb3J0IHNjcmlwdCBmcm9tIGRpZmZlcmVudCBvcmlnaW4uCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS93b3JrZXItY3Nw
LWltcG9ydFNjcmlwdHMtcmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLWFsbG93ZWQuaHRtbCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3dvcmtlci1j
c3AtaW1wb3J0U2NyaXB0cy1yZWRpcmVjdC1jcm9zcy1vcmlnaW4tYWxsb3dlZC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjFiMDdmN2RiYTk0YzAwY2EwYzA2M2M5MWM3ZDcwMzllM2NhZDgyM2MKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0
eVBvbGljeS93b3JrZXItY3NwLWltcG9ydFNjcmlwdHMtcmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLWFs
bG93ZWQuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cit9Cis8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0cyBhIFdlYiBXb3JrZXIgd2l0aG91dCBh
IENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGlzIGFsbG93ZWQgdG8gaW1wb3J0IGEgc2NyaXB0IGZy
b20gYSBkaWZmZXJlbnQgb3JpZ2luIHRocm91Z2ggYSByZWRpcmVjdC48L3A+Cis8cHJlIGlkPSJy
ZXN1bHQiPjwvcHJlPgorPHNjcmlwdD4KK2Z1bmN0aW9uIHJlcG9ydFJlc3VsdEFuZE5vdGlmeURv
bmUobWVzc2FnZSkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikudGV4
dENvbnRlbnQgPSBtZXNzYWdlOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9CisKK3ZhciB3b3JrZXI7Cit0cnkgeworICAgIHdv
cmtlciA9IG5ldyBXb3JrZXIoInJlc291cmNlcy93b3JrZXItaW1wb3J0U2NyaXB0LXJlZGlyZWN0
LWNyb3NzLW9yaWdpbi1hbGxvd2VkLnBocD9jc3A9IiArIGVuY29kZVVSSUNvbXBvbmVudCgic2Ny
aXB0LXNyYyAnc2VsZicgaHR0cDovL2xvY2FsaG9zdDo4MDAwIikpOworICAgIHdvcmtlci5vbm1l
c3NhZ2UgPSBmdW5jdGlvbiAoZXZlbnQpIHsgcmVwb3J0UmVzdWx0QW5kTm90aWZ5RG9uZShldmVu
dC5kYXRhKTsgfTsKK30gY2F0Y2ggKGV4Y2VwdGlvbikgeworICAgIHJlcG9ydFJlc3VsdEFuZE5v
dGlmeURvbmUoIkZBSUwgc2hvdWxkIG5vdCBoYXZlIHRocm93biBhbiBleGNlcHRpb24gd2hlbiBj
cmVhdGluZyB3b3JrZXIuIFRocmV3IGV4Y2VwdGlvbiAiICsgZXhjZXB0aW9uICsgIi4iKTsKK30K
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvd29ya2VyLWNzcC1pbXBvcnRT
Y3JpcHRzLXJlZGlyZWN0LWNyb3NzLW9yaWdpbi1ibG9ja2VkLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3dvcmtlci1j
c3AtaW1wb3J0U2NyaXB0cy1yZWRpcmVjdC1jcm9zcy1vcmlnaW4tYmxvY2tlZC1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOWFmMmJkYmUyYzM4NzU1YTk1ZDU4YTRjYzk5MGVmZjBmN2YwNjIwNgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVu
dFNlY3VyaXR5UG9saWN5L3dvcmtlci1jc3AtaW1wb3J0U2NyaXB0cy1yZWRpcmVjdC1jcm9zcy1v
cmlnaW4tYmxvY2tlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitUaGlzIHRlc3RzIGEg
V2ViIFdvcmtlciB3aXRoIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5ICJzY3JpcHQtc3JjICdzZWxm
JyIgYmxvY2tzIHRoZSBpbXBvcnQgb2YgYSBzY3JpcHQgZnJvbSBhIGRpZmZlcmVudCBvcmlnaW4g
dGhyb3VnaCBhIHJlZGlyZWN0LgorCitQQVNTIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTmV0d29y
a0Vycm9yOiBET00gRXhjZXB0aW9uIDE5LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvd29ya2VyLWNzcC1pbXBvcnRTY3Jp
cHRzLXJlZGlyZWN0LWNyb3NzLW9yaWdpbi1ibG9ja2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS93b3JrZXItY3NwLWltcG9ydFNj
cmlwdHMtcmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLWJsb2NrZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNmEx
ZTU4NWIzYzliMzRiYzRiNmVhOThiNGQ3MTg3M2ExNjNkOGJmCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvd29y
a2VyLWNzcC1pbXBvcnRTY3JpcHRzLXJlZGlyZWN0LWNyb3NzLW9yaWdpbi1ibG9ja2VkLmh0bWwK
QEAgLTAsMCArMSwzMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgYSBXZWIgV29ya2VyIHdpdGggQ29udGVudCBTZWN1cml0
eSBQb2xpY3kgJnF1b3Q7c2NyaXB0LXNyYyAnc2VsZicmcXVvdDsgYmxvY2tzIHRoZSBpbXBvcnQg
b2YgYSBzY3JpcHQgZnJvbSBhIGRpZmZlcmVudCBvcmlnaW4gdGhyb3VnaCBhIHJlZGlyZWN0Ljwv
cD4KKzxwcmUgaWQ9InJlc3VsdCI+PC9wcmU+Cis8c2NyaXB0PgorZnVuY3Rpb24gcmVwb3J0UmVz
dWx0QW5kTm90aWZ5RG9uZShtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJyZXN1bHQiKS50ZXh0Q29udGVudCA9IG1lc3NhZ2U7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKwordmFyIHdvcmtlcjsK
K3RyeSB7CisgICAgd29ya2VyID0gbmV3IFdvcmtlcigicmVzb3VyY2VzL3dvcmtlci1pbXBvcnRT
Y3JpcHQtcmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLWJsb2NrZWQucGhwP2NzcD0iICsgZW5jb2RlVVJJ
Q29tcG9uZW50KCJzY3JpcHQtc3JjICdzZWxmJyIpKTsKKyAgICB3b3JrZXIub25tZXNzYWdlID0g
ZnVuY3Rpb24gKGV2ZW50KSB7IHJlcG9ydFJlc3VsdEFuZE5vdGlmeURvbmUoZXZlbnQuZGF0YSk7
IH07Cit9IGNhdGNoIChleGNlcHRpb24pIHsKKyAgICByZXBvcnRSZXN1bHRBbmROb3RpZnlEb25l
KCJGQUlMIHNob3VsZCBub3QgaGF2ZSB0aHJvd24gYW4gZXhjZXB0aW9uIHdoZW4gY3JlYXRpbmcg
d29ya2VyLiBUaHJldyBleGNlcHRpb24gIiArIGV4Y2VwdGlvbiArICIuIik7Cit9Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3dvcmtlci1pbXBvcnRzY3JpcHRzLWJsb2Nr
ZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50
U2VjdXJpdHlQb2xpY3kvd29ya2VyLWltcG9ydHNjcmlwdHMtYmxvY2tlZC1leHBlY3RlZC50eHQK
aW5kZXggYTk1ZTEzNGJkMmQ5ZTgxOWZmM2YyOGMwNjg5ZDA5MWRlYTA5MmEyNy4uMzI2YzgyMDYz
OGZjNmFiYzBkZDg5ZjIzMDk1NjMyMzFiYzY4NTFhMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvd29ya2VyLWltcG9ydHNj
cmlwdHMtYmxvY2tlZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvd29ya2VyLWltcG9ydHNjcmlwdHMtYmxvY2tl
ZC1leHBlY3RlZC50eHQKQEAgLTEsNiArMSw2IEBACiBDT05TT0xFIE1FU1NBR0U6IFJlZnVzZWQg
dG8gbG9hZCB0aGUgc2NyaXB0ICdodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvY29udGVu
dFNlY3VyaXR5UG9saWN5L3Jlc291cmNlcy9wb3N0LW1lc3NhZ2UuanMnIGJlY2F1c2UgaXQgdmlv
bGF0ZXMgdGhlIGZvbGxvd2luZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6ICJz
Y3JpcHQtc3JjICd1bnNhZmUtZXZhbCcgJ3Vuc2FmZS1pbmxpbmUnIDEyNy4wLjAuMTo4MDAwIi4K
IAotUEFTUyByZXN1bHQgaXMgImltcG9ydFNjcmlwdHMgYmxvY2tlZDogTmV0d29ya0Vycm9yOiBG
YWlsZWQgdG8gZXhlY3V0ZSAnaW1wb3J0U2NyaXB0cycgb24gJ1dvcmtlckdsb2JhbFNjb3BlJzog
VGhlIHNjcmlwdCBhdCAnaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L2NvbnRlbnRTZWN1
cml0eVBvbGljeS9yZXNvdXJjZXMvcG9zdC1tZXNzYWdlLmpzJyBmYWlsZWQgdG8gbG9hZC4iCitQ
QVNTIHJlc3VsdCBpcyAiaW1wb3J0U2NyaXB0cyBibG9ja2VkOiBFcnJvcjogTmV0d29ya0Vycm9y
OiBET00gRXhjZXB0aW9uIDE5IgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBU
RVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L2NvbnRlbnRTZWN1cml0eVBvbGljeS93b3JrZXItaW1wb3J0c2NyaXB0cy1ibG9ja2VkLmh0bWwg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS93
b3JrZXItaW1wb3J0c2NyaXB0cy1ibG9ja2VkLmh0bWwKaW5kZXggNDkzZDc5ZDhhNDgyYWI2NWVm
Y2M4ZGI5NmY2MzU4ODJmMjlmNjM3Ny4uMGVmMjI4ODRiOTE0MmZjOTAwNDAzNGY4MTA3ZDhkMWZi
MGJlMzM5NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250
ZW50U2VjdXJpdHlQb2xpY3kvd29ya2VyLWltcG9ydHNjcmlwdHMtYmxvY2tlZC5odG1sCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3dv
cmtlci1pbXBvcnRzY3JpcHRzLWJsb2NrZWQuaHRtbApAQCAtMTUsNyArMTUsNyBAQAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RlVVJJQ29tcG9uZW50KCJzY3JpcHQtc3Jj
ICd1bnNhZmUtZXZhbCcgJ3Vuc2FmZS1pbmxpbmUnIDEyNy4wLjAuMTo4MDAwIikpOwogICAgICAg
ICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgICAgICByZXN1
bHQgPSBldmVudC5kYXRhOwotICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdyZXN1
bHQnLCAnaW1wb3J0U2NyaXB0cyBibG9ja2VkOiBOZXR3b3JrRXJyb3I6IEZhaWxlZCB0byBleGVj
dXRlIFwnaW1wb3J0U2NyaXB0c1wnIG9uIFwnV29ya2VyR2xvYmFsU2NvcGVcJzogVGhlIHNjcmlw
dCBhdCBcJ2h0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xp
Y3kvcmVzb3VyY2VzL3Bvc3QtbWVzc2FnZS5qc1wnIGZhaWxlZCB0byBsb2FkLicpOworICAgICAg
ICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdyZXN1bHQnLCAnaW1wb3J0U2NyaXB0cyBibG9j
a2VkOiBFcnJvcjogTmV0d29ya0Vycm9yOiBET00gRXhjZXB0aW9uIDE5Jyk7CiAgICAgICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKICAgICAgICAgfTsKICAgICB9IGNhdGNoIChlKSB7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGlj
eS93b3JrZXItd2l0aG91dC1jc3AtaW1wb3J0U2NyaXB0cy1yZWRpcmVjdC1jcm9zcy1vcmlnaW4t
YWxsb3dlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nv
bnRlbnRTZWN1cml0eVBvbGljeS93b3JrZXItd2l0aG91dC1jc3AtaW1wb3J0U2NyaXB0cy1yZWRp
cmVjdC1jcm9zcy1vcmlnaW4tYWxsb3dlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Q1OTM4
MmE5ZWI3MGFkYjkxNzkxYzE1MjEzZWQ3MGQ0MjRlMDkyNwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3dvcmtl
ci13aXRob3V0LWNzcC1pbXBvcnRTY3JpcHRzLXJlZGlyZWN0LWNyb3NzLW9yaWdpbi1hbGxvd2Vk
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK1RoaXMgdGVzdHMgYSBXZWIgV29ya2VyIHdp
dGhvdXQgYSBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBpcyBhbGxvd2VkIHRvIGltcG9ydCBhIHNj
cmlwdCBmcm9tIGEgZGlmZmVyZW50IG9yaWdpbiB0aHJvdWdoIGEgcmVkaXJlY3QuCisKK1BBU1Mg
ZGlkIGltcG9ydCBzY3JpcHQgZnJvbSBkaWZmZXJlbnQgb3JpZ2luLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvd29ya2Vy
LXdpdGhvdXQtY3NwLWltcG9ydFNjcmlwdHMtcmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLWFsbG93ZWQu
aHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9s
aWN5L3dvcmtlci13aXRob3V0LWNzcC1pbXBvcnRTY3JpcHRzLXJlZGlyZWN0LWNyb3NzLW9yaWdp
bi1hbGxvd2VkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzZjOTdhZmEyYjI3MzFiYzYxYzVlOTA4NzlhZGZi
YTk2NDY0MzE2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3dvcmtlci13aXRob3V0LWNzcC1pbXBvcnRTY3Jp
cHRzLXJlZGlyZWN0LWNyb3NzLW9yaWdpbi1hbGxvd2VkLmh0bWwKQEAgLTAsMCArMSwzMiBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVu
dC1TZWN1cml0eS1Qb2xpY3kiIGNvbnRlbnQ9InNjcmlwdC1zcmMgJ3NlbGYnICd1bnNhZmUtaW5s
aW5lJyI+IDwhLS0gV29ya2VyIHNob3VsZCBub3QgaW5oZXJpdCB0aGlzIHBvbGljeS4gLS0+Cis8
c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cit9Cis8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0cyBhIFdlYiBXb3JrZXIgd2l0aG91dCBhIENvbnRl
bnQgU2VjdXJpdHkgUG9saWN5IGlzIGFsbG93ZWQgdG8gaW1wb3J0IGEgc2NyaXB0IGZyb20gYSBk
aWZmZXJlbnQgb3JpZ2luIHRocm91Z2ggYSByZWRpcmVjdC48L3A+Cis8cHJlIGlkPSJyZXN1bHQi
PjwvcHJlPgorPHNjcmlwdD4KK2Z1bmN0aW9uIHJlcG9ydFJlc3VsdEFuZE5vdGlmeURvbmUobWVz
c2FnZSkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikudGV4dENvbnRl
bnQgPSBtZXNzYWdlOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7Cit9CisKK3ZhciB3b3JrZXI7Cit0cnkgeworICAgIHdvcmtlciA9
IG5ldyBXb3JrZXIoInJlc291cmNlcy93b3JrZXItaW1wb3J0U2NyaXB0LXJlZGlyZWN0LWNyb3Nz
LW9yaWdpbi1hbGxvd2VkLnBocCIpOworICAgIHdvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAo
ZXZlbnQpIHsgcmVwb3J0UmVzdWx0QW5kTm90aWZ5RG9uZShldmVudC5kYXRhKTsgfTsKK30gY2F0
Y2ggKGV4Y2VwdGlvbikgeworICAgIHJlcG9ydFJlc3VsdEFuZE5vdGlmeURvbmUoIkZBSUwgc2hv
dWxkIG5vdCBoYXZlIHRocm93biBhbiBleGNlcHRpb24gd2hlbiBjcmVhdGluZyB3b3JrZXIuIFRo
cmV3IGV4Y2VwdGlvbiAiICsgZXhjZXB0aW9uICsgIi4iKTsKK30KKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9p
c29sYXRlZFdvcmxkL2J5cGFzcy1tYWluLXdvcmxkLWNzcC1mb3IteGhyLXJlZGlyZWN0LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9i
eXBhc3MtbWFpbi13b3JsZC1jc3AtZm9yLXhoci1yZWRpcmVjdC1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZGU5ZmM5ZDIwOGQxNzFhMWJjZTY3MmY3ZmFmYTQ2NzU3ZTBiM2ZmZgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9i
eXBhc3MtbWFpbi13b3JsZC1jc3AtZm9yLXhoci1yZWRpcmVjdC1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwzIEBACitUaGlzIHRlc3RzIHRoYXQgaW4gYW4gaXNvbGF0ZWQgd29ybGQgYW4gWEhSIHJl
cXVlc3QgaXMgYWxsb3dlZCB0byBsb2FkIGV2ZW4gaWYgaXQgcmVkaXJlY3RzIHRvIGEgY3Jvc3Mt
b3JpZ2luIHJlc291cmNlIHRoYXQgaXMgbm90IGxpc3RlZCBhcyBhIGNvbm5lY3Qtc3JjLgorCitQ
QVNTIGRpZCByZWNlaXZlIFhIUiByZXNwb25zZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9ieXBhc3MtbWFpbi13b3JsZC1jc3AtZm9y
LXhoci1yZWRpcmVjdC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9pc29s
YXRlZFdvcmxkL2J5cGFzcy1tYWluLXdvcmxkLWNzcC1mb3IteGhyLXJlZGlyZWN0Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZmQwNTZiNjMwZDQ2Mzk2NmUxZGIyOTI3Y2FmYTUzNjhiZTcyMzkzZgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3Js
ZC9ieXBhc3MtbWFpbi13b3JsZC1jc3AtZm9yLXhoci1yZWRpcmVjdC5odG1sCkBAIC0wLDAgKzEs
MzYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9
IkNvbnRlbnQtU2VjdXJpdHktUG9saWN5IiBjb250ZW50PSJjb25uZWN0LXNyYyBodHRwOi8vMTI3
LjAuMC4xOjgwMDAvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3Jlc291cmNlcy9yZWRp
ci5waHAiPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworfQorPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCBpbiBhbiBpc29sYXRl
ZCB3b3JsZCBhbiBYSFIgcmVxdWVzdCBpcyBhbGxvd2VkIHRvIGxvYWQgZXZlbiBpZiBpdCByZWRp
cmVjdHMgdG8gYSBjcm9zcy1vcmlnaW4gcmVzb3VyY2UgdGhhdCBpcyBub3QgbGlzdGVkIGFzIGEg
Y29ubmVjdC1zcmMuPC9wPgorPHByZSBpZD0icmVzdWx0Ij48L3ByZT4KKzxzY3JpcHQ+Cit3aW5k
b3cub25tZXNzYWdlID0gZnVuY3Rpb24gKGV2ZW50KQoreworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJyZXN1bHQiKS50ZXh0Q29udGVudCA9IGV2ZW50LmRhdGE7CisgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKworZnVu
Y3Rpb24gdGVzdExvYWRYSFJUaGF0UmVkaXJlY3RzKCkKK3sKKyAgICB2YXIgeGhyID0gbmV3IFhN
TEh0dHBSZXF1ZXN0OworICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7IHdpbmRvdy5wb3N0
TWVzc2FnZSgiUEFTUyBkaWQgcmVjZWl2ZSBYSFIgcmVzcG9uc2UuIiwgIioiKTsgfTsKKyAgICB4
aHIub25lcnJvciA9IGZ1bmN0aW9uICgpIHsgd2luZG93LnBvc3RNZXNzYWdlKCJGQUlMIGRpZCBu
b3QgcmVjZWl2ZSBYSFIgcmVzcG9uc2UuIiwgIioiKTsgfTsKKyAgICB4aHIub3BlbigiR0VUIiwg
Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcmVz
b3VyY2VzL3JlZGlyLnBocD91cmw9aHR0cDovL2xvY2FsaG9zdDo4MDAwL3htbGh0dHByZXF1ZXN0
L3Jlc291cmNlcy9hY2Nlc3MtY29udHJvbC1iYXNpYy1hbGxvdy5jZ2kiKTsKKyAgICB4aHIuc2Vu
ZCgpOworfQorCitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5ldmFsdWF0
ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZCgwLCB0ZXN0TG9hZFhIUlRoYXRSZWRpcmVjdHMudG9TdHJp
bmcoKSArICI7dGVzdExvYWRYSFJUaGF0UmVkaXJlY3RzKCk7Iik7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
aXNvbGF0ZWRXb3JsZC9ieXBhc3MtbWFpbi13b3JsZC1jc3Atd29ya2VyLWJsb2ItaW1wb3J0U2Ny
aXB0LXJlZGlyZWN0LWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvYnlwYXNzLW1haW4td29ybGQtY3NwLXdvcmtl
ci1ibG9iLWltcG9ydFNjcmlwdC1yZWRpcmVjdC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjNjNWRkNTg3ZDIyMmU3MjZiZmI4ODNmYmM3NThkM2I1MTIzNTIwNTUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29y
bGQvYnlwYXNzLW1haW4td29ybGQtY3NwLXdvcmtlci1ibG9iLWltcG9ydFNjcmlwdC1yZWRpcmVj
dC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorVGhpcyB0ZXN0cyB0
aGF0IGluIGFuIGlzb2xhdGVkIHdvcmxkIHRoZSBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBvZiB0
aGUgcGFyZW50IG9yaWdpbiAodGhpcyBwYWdlKSBpcyBieXBhc3NlZCBhbmQgYSBXZWIgV29ya2Vy
IGlzIGFsbG93ZWQgdG8gaW1wb3J0IGEgc2NyaXB0IGZyb20gYSBkaWZmZXJlbnQgb3JpZ2luLCBu
b3QgbGlzdGVkIGluIHNjcmlwdC1zcmMsIHRocm91Z2ggYSByZWRpcmVjdC4KKworUEFTUyBkaWQg
aW1wb3J0IHNjcmlwdCBmcm9tIGRpZmZlcmVudCBvcmlnaW4uCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvYnlwYXNzLW1haW4td29ybGQt
Y3NwLXdvcmtlci1ibG9iLWltcG9ydFNjcmlwdC1yZWRpcmVjdC1jcm9zcy1vcmlnaW4uaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9ieXBhc3MtbWFp
bi13b3JsZC1jc3Atd29ya2VyLWJsb2ItaW1wb3J0U2NyaXB0LXJlZGlyZWN0LWNyb3NzLW9yaWdp
bi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjNiNGJjYTFhNzc3YmIzOTFkMWM0ZDMxNWQ0ZjJhZWNjYjBlOWNk
ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2lz
b2xhdGVkV29ybGQvYnlwYXNzLW1haW4td29ybGQtY3NwLXdvcmtlci1ibG9iLWltcG9ydFNjcmlw
dC1yZWRpcmVjdC1jcm9zcy1vcmlnaW4uaHRtbApAQCAtMCwwICsxLDU3IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8IS0tIEZJWE1FOiBDaGFuZ2UgJ3NlbGYnIHRvICdibG9i
Oicgb25jZSB3ZSBmaXggPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTMxNTg+LiAtLT4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtU2VjdXJpdHktUG9saWN5IiBj
b250ZW50PSJzY3JpcHQtc3JjICdzZWxmJyBodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkv
Y29udGVudFNlY3VyaXR5UG9saWN5L3Jlc291cmNlcy9yZWRpci5waHAgJ3Vuc2FmZS1pbmxpbmUn
Ij4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKK30KKzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgaW4gYW4gaXNvbGF0ZWQgd29y
bGQgdGhlIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IG9mIHRoZSBwYXJlbnQgb3JpZ2luICh0aGlz
IHBhZ2UpIGlzIGJ5cGFzc2VkIGFuZCBhIFdlYiBXb3JrZXIgaXMgYWxsb3dlZCB0byBpbXBvcnQg
YSBzY3JpcHQgZnJvbSBhIGRpZmZlcmVudCBvcmlnaW4sIG5vdCBsaXN0ZWQgaW4gc2NyaXB0LXNy
YywgdGhyb3VnaCBhIHJlZGlyZWN0LjwvcD4KKzxwcmUgaWQ9InJlc3VsdCI+PC9wcmU+Cis8c2Ny
aXB0Pgord2luZG93Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChldmVudCkKK3sKKyAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikudGV4dENvbnRlbnQgPSBldmVudC5kYXRhOworICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIHZhciBzY3JpcHQgPSBbCisgICAgICAg
ICdzZWxmLnJlc3VsdCA9IGZhbHNlOycsCisgICAgICAgICd2YXIgZXhjZXB0aW9uOycsCisgICAg
ICAgICd0cnkgeycsCisgICAgICAgICcgICAgaW1wb3J0U2NyaXB0cygiaHR0cDovLzEyNy4wLjAu
MTo4MDAwL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9yZXNvdXJjZXMvcmVkaXIucGhw
P3VybD1odHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5
L3Jlc291cmNlcy9zY3JpcHQtc2V0LXZhbHVlLmpzIik7JywKKyAgICAgICAgJ30gY2F0Y2ggKGUp
IHsnLAorICAgICAgICAnICAgIGV4Y2VwdGlvbiA9IGU7JywKKyAgICAgICAgJ30nLAorICAgICAg
ICAnaWYgKGV4Y2VwdGlvbiknLAorICAgICAgICAnICAgIHNlbGYucG9zdE1lc3NhZ2UoIkZBSUwg
c2hvdWxkIG5vdCBoYXZlIHRocm93biBhbiBleGNlcHRpb24uIFRocmV3IGV4Y2VwdGlvbiAiICsg
ZXhjZXB0aW9uICsgIi4iKTsnLAorICAgICAgICAnZWxzZSB7JywKKyAgICAgICAgJyAgICBpZiAo
c2VsZi5yZXN1bHQpJywKKyAgICAgICAgJyAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSgiUEFTUyBk
aWQgaW1wb3J0IHNjcmlwdCBmcm9tIGRpZmZlcmVudCBvcmlnaW4uIik7JywKKyAgICAgICAgJyAg
ICBlbHNlJywKKyAgICAgICAgJyAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSgiRkFJTCBkaWQgbm90
IGltcG9ydCBzY3JpcHQgZnJvbSBkaWZmZXJlbnQgb3JpZ2luLiIpOycsCisgICAgICAgICd9JywK
KyAgICBdLmpvaW4oIlxuIik7CisKKyAgICB2YXIgd29ya2VyOworICAgIHRyeSB7CisgICAgICAg
IHdvcmtlciA9IG5ldyBXb3JrZXIod2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwobmV3IEJsb2Io
W3NjcmlwdF0pKSk7CisgICAgICAgIHdvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZXZlbnQp
IHsgd2luZG93LnBvc3RNZXNzYWdlKGV2ZW50LmRhdGEsICIqIik7IH0KKyAgICB9IGNhdGNoIChl
eGNlcHRpb24pIHsKKyAgICAgICAgd2luZG93LnBvc3RNZXNzYWdlKCJGQUlMIHNob3VsZCBub3Qg
aGF2ZSB0aHJvd24gYW4gZXhjZXB0aW9uIHdoZW4gY3JlYXRpbmcgd29ya2VyLiBUaHJldyBleGNl
cHRpb24gIiArIGV4Y2VwdGlvbiArICIuIiwgIioiKTsKKyAgICB9Cit9CisKK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxk
KDAsIHJ1blRlc3QudG9TdHJpbmcoKSArICI7cnVuVGVzdCgpOyIpOworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L2lzb2xhdGVkV29ybGQvYnlwYXNzLW1haW4td29ybGQtY3NwLXdvcmtlci1ibG9iLWltcG9ydFNj
cmlwdHMtcmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9ieXBhc3MtbWFpbi13b3JsZC1jc3Atd29y
a2VyLWJsb2ItaW1wb3J0U2NyaXB0cy1yZWRpcmVjdC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjNjNWRkNTg3ZDIyMmU3MjZiZmI4ODNmYmM3NThkM2I1MTIzNTIwNTUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVk
V29ybGQvYnlwYXNzLW1haW4td29ybGQtY3NwLXdvcmtlci1ibG9iLWltcG9ydFNjcmlwdHMtcmVk
aXJlY3QtY3Jvc3Mtb3JpZ2luLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK1RoaXMgdGVz
dHMgdGhhdCBpbiBhbiBpc29sYXRlZCB3b3JsZCB0aGUgQ29udGVudCBTZWN1cml0eSBQb2xpY3kg
b2YgdGhlIHBhcmVudCBvcmlnaW4gKHRoaXMgcGFnZSkgaXMgYnlwYXNzZWQgYW5kIGEgV2ViIFdv
cmtlciBpcyBhbGxvd2VkIHRvIGltcG9ydCBhIHNjcmlwdCBmcm9tIGEgZGlmZmVyZW50IG9yaWdp
biwgbm90IGxpc3RlZCBpbiBzY3JpcHQtc3JjLCB0aHJvdWdoIGEgcmVkaXJlY3QuCisKK1BBU1Mg
ZGlkIGltcG9ydCBzY3JpcHQgZnJvbSBkaWZmZXJlbnQgb3JpZ2luLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2J5cGFzcy1tYWluLXdv
cmxkLWNzcC13b3JrZXItaW1wb3J0U2NyaXB0LXJlZGlyZWN0LWNyb3NzLW9yaWdpbi1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvYnlw
YXNzLW1haW4td29ybGQtY3NwLXdvcmtlci1pbXBvcnRTY3JpcHQtcmVkaXJlY3QtY3Jvc3Mtb3Jp
Z2luLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNDcwY2EwMWU5NmU3MDQzNzhmMDgxNTU5NWNj
NWFjZDVjNGQ4NDdjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9pc29sYXRlZFdvcmxkL2J5cGFzcy1tYWluLXdvcmxkLWNzcC13b3JrZXItaW1wb3J0
U2NyaXB0LXJlZGlyZWN0LWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBA
CitUaGlzIHRlc3RzIHRoYXQgaW4gYW4gaXNvbGF0ZWQgd29ybGQgdGhlIENvbnRlbnQgU2VjdXJp
dHkgUG9saWN5IG9mIHRoZSBXZWIgV29ya2VyIGJ5cGFzc2VkIGFuZCB0aGUgd29ya2VyIGlzIGFs
bG93ZWQgdG8gaW1wb3J0IGEgc2NyaXB0IGZyb20gYSBkaWZmZXJlbnQgb3JpZ2luLCBub3QgbGlz
dGVkIGluIGl0cyBzY3JpcHQtc3JjLCB0aHJvdWdoIGEgcmVkaXJlY3QuCisKK1BBU1MgZGlkIGlt
cG9ydCBzY3JpcHQgZnJvbSBkaWZmZXJlbnQgb3JpZ2luLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2J5cGFzcy1tYWluLXdvcmxkLWNz
cC13b3JrZXItaW1wb3J0U2NyaXB0cy1yZWRpcmVjdC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2J5cGFzcy1t
YWluLXdvcmxkLWNzcC13b3JrZXItaW1wb3J0U2NyaXB0cy1yZWRpcmVjdC1jcm9zcy1vcmlnaW4t
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0NzBjYTAxZTk2ZTcwNDM3OGYwODE1NTk1Y2M1YWNk
NWM0ZDg0N2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L2lzb2xhdGVkV29ybGQvYnlwYXNzLW1haW4td29ybGQtY3NwLXdvcmtlci1pbXBvcnRTY3Jp
cHRzLXJlZGlyZWN0LWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitU
aGlzIHRlc3RzIHRoYXQgaW4gYW4gaXNvbGF0ZWQgd29ybGQgdGhlIENvbnRlbnQgU2VjdXJpdHkg
UG9saWN5IG9mIHRoZSBXZWIgV29ya2VyIGJ5cGFzc2VkIGFuZCB0aGUgd29ya2VyIGlzIGFsbG93
ZWQgdG8gaW1wb3J0IGEgc2NyaXB0IGZyb20gYSBkaWZmZXJlbnQgb3JpZ2luLCBub3QgbGlzdGVk
IGluIGl0cyBzY3JpcHQtc3JjLCB0aHJvdWdoIGEgcmVkaXJlY3QuCisKK1BBU1MgZGlkIGltcG9y
dCBzY3JpcHQgZnJvbSBkaWZmZXJlbnQgb3JpZ2luLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2J5cGFzcy1tYWluLXdvcmxkLWNzcC13
b3JrZXItaW1wb3J0U2NyaXB0cy1yZWRpcmVjdC1jcm9zcy1vcmlnaW4uaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9ieXBhc3MtbWFpbi13b3JsZC1j
c3Atd29ya2VyLWltcG9ydFNjcmlwdHMtcmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYjgzZDA5ZTY1MWMzYTIwZDQ1YjM4MzYzYTFiNTY1ZTE2YTgzZjU4NQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9i
eXBhc3MtbWFpbi13b3JsZC1jc3Atd29ya2VyLWltcG9ydFNjcmlwdHMtcmVkaXJlY3QtY3Jvc3Mt
b3JpZ2luLmh0bWwKQEAgLTAsMCArMSwzNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworfQorPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCBpbiBhbiBpc29sYXRlZCB3
b3JsZCB0aGUgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgb2YgdGhlIFdlYiBXb3JrZXIgYnlwYXNz
ZWQgYW5kIHRoZSB3b3JrZXIgaXMgYWxsb3dlZCB0byBpbXBvcnQgYSBzY3JpcHQgZnJvbSBhIGRp
ZmZlcmVudCBvcmlnaW4sIG5vdCBsaXN0ZWQgaW4gaXRzIHNjcmlwdC1zcmMsIHRocm91Z2ggYSBy
ZWRpcmVjdC48L3A+Cis8cHJlIGlkPSJyZXN1bHQiPjwvcHJlPgorPHNjcmlwdD4KK3dpbmRvdy5v
bm1lc3NhZ2UgPSBmdW5jdGlvbiAoZXZlbnQpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInJlc3VsdCIpLnRleHRDb250ZW50ID0gZXZlbnQuZGF0YTsKKyAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlv
biBydW5UZXN0KCkKK3sKKyAgICB2YXIgd29ya2VyOworICAgIHRyeSB7CisgICAgICAgIHdvcmtl
ciA9IG5ldyBXb3JrZXIoImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9jb250ZW50U2Vj
dXJpdHlQb2xpY3kvcmVzb3VyY2VzL3dvcmtlci1pbXBvcnRTY3JpcHQtcmVkaXJlY3QtY3Jvc3Mt
b3JpZ2luLWFsbG93ZWQucGhwP2NzcD0iICsgZW5jb2RlVVJJQ29tcG9uZW50KCJzY3JpcHQtc3Jj
IGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcmVz
b3VyY2VzL3JlZGlyLnBocCIpKTsKKyAgICAgICAgd29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9u
IChldmVudCkgeyB3aW5kb3cucG9zdE1lc3NhZ2UoZXZlbnQuZGF0YSwgIioiKTsgfQorICAgIH0g
Y2F0Y2ggKGV4Y2VwdGlvbikgeworICAgICAgICB3aW5kb3cucG9zdE1lc3NhZ2UoIkZBSUwgc2hv
dWxkIG5vdCBoYXZlIHRocm93biBhbiBleGNlcHRpb24gd2hlbiBjcmVhdGluZyB3b3JrZXIuIFRo
cmV3IGV4Y2VwdGlvbiAiICsgZXhjZXB0aW9uICsgIi4iLCAiKiIpOworICAgIH0KK30KKworaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZXZhbHVhdGVTY3JpcHRJbklzb2xh
dGVkV29ybGQoMCwgcnVuVGVzdC50b1N0cmluZygpICsgIjtydW5UZXN0KCk7Iik7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9ieXBhc3Mtd29ya2VyLWNzcC1mb3IteGhyLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9ieXBh
c3Mtd29ya2VyLWNzcC1mb3IteGhyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNGI5MzQ5NDBj
YmMwNmIwNzJjMmI4NjVkZmY3NWJkOTdkNjQwMzUxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2J5cGFzcy13b3JrZXItY3Nw
LWZvci14aHItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorVGhpcyB0ZXN0cyB0aGF0IGlu
IGFuIGlzb2xhdGVkIHdvcmxkIGFuIFhIUiByZXF1ZXN0IG1hZGUgZnJvbSBhIHdvcmtlciBpcyBh
bGxvd2VkIHRvIGxvYWQgZXZlbiBpZiB0aGUgcmVzb3VyY2UgaXMgbm90IGxpc3RlZCBhcyBhIGNv
bm5lY3Qtc3JjIGluIHRoZSBDU1Agb2YgdGhlIHdvcmtlci4KKworUEFTUwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2J5cGFzcy13b3Jr
ZXItY3NwLWZvci14aHItcmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9ieXBhc3Mtd29ya2VyLWNz
cC1mb3IteGhyLXJlZGlyZWN0LWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YWJkZDE3NzFlOTIyNmI0ZmMxN2UxYjEyOTc3MDc3MGYyYjQyYzE4MAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9ieXBhc3Mt
d29ya2VyLWNzcC1mb3IteGhyLXJlZGlyZWN0LWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw0IEBACitUaGlzIHRlc3RzIHRoYXQgaW4gYW4gaXNvbGF0ZWQgd29ybGQgYW4gWEhS
IHJlcXVlc3QgbWFkZSBmcm9tIGEgd29ya2VyIGlzIGFsbG93ZWQgdG8gbG9hZCBldmVuIGlmIGl0
IHJlZGlyZWN0cyB0byBhIGNyb3NzLW9yaWdpbiByZXNvdXJjZSB0aGF0IGlzIG5vdCBsaXN0ZWQg
YXMgYSBjb25uZWN0LXNyYyBpbiB0aGUgQ1NQIG9mIHRoZSB3b3JrZXIuCisKK1BBU1M6IENyb3Nz
LWRvbWFpbiBhY2Nlc3MgYWxsb3dlZC4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2J5cGFzcy13b3JrZXItY3NwLWZvci14aHItcmVk
aXJlY3QtY3Jvc3Mtb3JpZ2luLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L2lzb2xhdGVkV29ybGQvYnlwYXNzLXdvcmtlci1jc3AtZm9yLXhoci1yZWRpcmVjdC1jcm9zcy1v
cmlnaW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZjdiMDVhYTc5ZjRiMGY3Nzk0ZTViY2IxZmVjOWJhNDQ3
OWMyYzI5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9pc29sYXRlZFdvcmxkL2J5cGFzcy13b3JrZXItY3NwLWZvci14aHItcmVkaXJlY3QtY3Jvc3Mt
b3JpZ2luLmh0bWwKQEAgLTAsMCArMSwzNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworfQorPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCBpbiBhbiBpc29sYXRlZCB3
b3JsZCBhbiBYSFIgcmVxdWVzdCBtYWRlIGZyb20gYSB3b3JrZXIgaXMgYWxsb3dlZCB0byBsb2Fk
IGV2ZW4gaWYgaXQgcmVkaXJlY3RzIHRvIGEgY3Jvc3Mtb3JpZ2luIHJlc291cmNlIHRoYXQgaXMg
bm90IGxpc3RlZCBhcyBhIGNvbm5lY3Qtc3JjIGluIHRoZSBDU1Agb2YgdGhlIHdvcmtlci48L3A+
Cis8cHJlIGlkPSJyZXN1bHQiPjwvcHJlPgorPHNjcmlwdD4KK3dpbmRvdy5vbm1lc3NhZ2UgPSBm
dW5jdGlvbiAoZXZlbnQpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIp
LnRleHRDb250ZW50ID0gZXZlbnQuZGF0YTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkK
K3sKKyAgICB2YXIgd29ya2VyOworICAgIHRyeSB7CisgICAgICAgIHdvcmtlciA9IG5ldyBXb3Jr
ZXIoImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kv
cmVzb3VyY2VzL3dvcmtlci14aHItcmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLWFsbG93ZWQucGhwP2Nz
cD0iICsgZW5jb2RlVVJJQ29tcG9uZW50KCJjb25uZWN0LXNyYyBodHRwOi8vMTI3LjAuMC4xOjgw
MDAvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3Jlc291cmNlcy9yZWRpci5waHAiKSk7
CisgICAgICAgIHdvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZXZlbnQpIHsgd2luZG93LnBv
c3RNZXNzYWdlKGV2ZW50LmRhdGEsICIqIikgfTsKKyAgICB9IGNhdGNoIChleGNlcHRpb24pIHsK
KyAgICAgICAgd2luZG93LnBvc3RNZXNzYWdlKCJGQUlMIHNob3VsZCBub3QgaGF2ZSB0aHJvd24g
YW4gZXhjZXB0aW9uIHdoZW4gY3JlYXRpbmcgd29ya2VyLiBUaHJldyBleGNlcHRpb24gIiArIGV4
Y2VwdGlvbiArICIuIiwgIioiKTsKKyAgICB9Cit9CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICB0ZXN0UnVubmVyLmV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkKDAsIHJ1blRlc3Qu
dG9TdHJpbmcoKSArICI7cnVuVGVzdCgpOyIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29y
bGQvYnlwYXNzLXdvcmtlci1jc3AtZm9yLXhoci5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2J5cGFzcy13b3JrZXItY3NwLWZvci14aHIuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40YWEzOTAyNjU2MWUzYTAzNmMyYmZhMTJkZDhiNmU5MzIyMjA3OTEzCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdv
cmxkL2J5cGFzcy13b3JrZXItY3NwLWZvci14aHIuaHRtbApAQCAtMCwwICsxLDM3IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0
cyB0aGF0IGluIGFuIGlzb2xhdGVkIHdvcmxkIGFuIFhIUiByZXF1ZXN0IG1hZGUgZnJvbSBhIHdv
cmtlciBpcyBhbGxvd2VkIHRvIGxvYWQgZXZlbiBpZiB0aGUgcmVzb3VyY2UgaXMgbm90IGxpc3Rl
ZCBhcyBhIGNvbm5lY3Qtc3JjIGluIHRoZSBDU1Agb2YgdGhlIHdvcmtlci48L3A+Cis8cHJlIGlk
PSJyZXN1bHQiPjwvcHJlPgorPHNjcmlwdD4KK3dpbmRvdy5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAo
ZXZlbnQpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLnRleHRDb250
ZW50ID0gZXZlbnQuZGF0YTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICB2
YXIgd29ya2VyOworICAgIHRyeSB7CisgICAgICAgIHdvcmtlciA9IG5ldyBXb3JrZXIoImh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcmVzb3VyY2Vz
L3dvcmtlci14aHItYWxsb3dlZC5waHA/Y3NwPSIgKyBlbmNvZGVVUklDb21wb25lbnQoImNvbm5l
Y3Qtc3JjICdub25lJyIpKTsKKyAgICAgICAgd29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChl
dmVudCkgeyB3aW5kb3cucG9zdE1lc3NhZ2UoZXZlbnQuZGF0YSwgIioiKSB9OworICAgIH0gY2F0
Y2ggKGV4Y2VwdGlvbikgeworICAgICAgICB3aW5kb3cucG9zdE1lc3NhZ2UoIkZBSUwgc2hvdWxk
IG5vdCBoYXZlIHRocm93biBhbiBleGNlcHRpb24gd2hlbiBjcmVhdGluZyB3b3JrZXIuIFRocmV3
IGV4Y2VwdGlvbiAiICsgZXhjZXB0aW9uICsgIi4iLCAiKiIpOworICAgIH0KK30KKworaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVk
V29ybGQoMCwgcnVuVGVzdC50b1N0cmluZygpICsgIjtydW5UZXN0KCk7Iik7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270831</attachid>
            <date>2016-02-07 14:33:29 -0800</date>
            <delta_ts>2016-02-08 10:18:43 -0800</delta_ts>
            <desc>Patch and Layout Tests</desc>
            <filename>bug-69359-20160207143306.patch</filename>
            <type>text/plain</type>
            <size>86767</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2MjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODM2NDE0ZTMzOWVmYjc0
ZjIxNDc0NWZhZDQ1ODIxNGE5ZGJkN2QzYS4uMmRjZTBlZGNkNmZkYjQ4ZTllZDc3NGMwYjVlZDJi
Nzk3YjIwZWFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDkxIEBACiAyMDE2LTAyLTA3ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAorICAgICAgICBDU1AgY29ubmVjdC1zcmMg
ZGlyZWN0aXZlIHNob3VsZCBibG9jayByZWRpcmVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5MzU5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8y
NDM4MzAyNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbnNwaXJlZCBieSBCbGluayBwYXRjaDoKKyAgICAgICAgPGh0dHBzOi8vc3JjLmNocm9taXVt
Lm9yZy92aWV3dmMvYmxpbms/cmV2aXNpb249MTUwMjQ2JnZpZXc9cmV2aXNpb24+CisKKyAgICAg
ICAgQXBwbHkgdGhlIGNvbm5lY3Qtc3JjIGRpcmVjdGl2ZSBvZiB0aGUgQ29udGVudCBTZWN1cml0
eSBQb2xpY3kgZm9yIHRoZSBkb2N1bWVudCBvciB3b3JrZXIgdG8gdGhlIHJlZGlyZWN0IFVSTAor
ICAgICAgICBvZiBhbiBYTUxIdHRwUmVxdWVzdCBhbmQgRXZlbnRTb3VyY2UgbG9hZCBzbyBhcyB0
byBjb25mb3JtIHRvIHNlY3Rpb24gUGF0aHMgYW5kIFJlZGlyZWN0cyBvZiB0aGUgQ1NQIDIuMCBz
cGVjLiwKKyAgICAgICAgPGh0dHBzOi8vdzNjLmdpdGh1Yi5pby93ZWJhcHBzZWMtY3NwLzIvI3Nv
dXJjZS1saXN0LXBhdGhzLWFuZC1yZWRpcmVjdHM+ICgyOSBBdWd1c3QgMjAxNSkuCisKKyAgICAg
ICAgQWRkaXRpb25hbGx5LCBjaGVjayB0aGF0IGVhY2ggcmVxdWVzdGVkIHNjcmlwdCBVUkwgcGFz
c2VkIHRvIFdvcmtlckdsb2JhbFNjb3BlLmltcG9ydFNjcmlwdHMoKSBpcyBhbGxvd2VkIGJ5Cisg
ICAgICAgIHRoZSBDU1Agb2YgdGhlIHdvcmtlciBiZWZvcmUgaW5pdGlhdGluZyBhIGxvYWQgZm9y
IGl0LiBJZiBzb21lIFVSTCBpIGlzIGJsb2NrZWQgYnkgdGhlIENTUCBwb2xpY3kKKyAgICAgICAg
dGhlbiB3ZSBkbyBub3QgdHJ5IHRvIGxvYWQgVVJMcyBqID49IGkuCisKKyAgICAgICAgVGVzdHM6
IGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3dvcmtlci1ibG9iLWlu
aGVyaXRzLWNzcC1pbXBvcnRTY3JpcHRzLWJsb2NrLWFib3J0cy1hbGwtc3Vic2VxdWVudC1pbXBv
cnRzLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3Vy
aXR5UG9saWN5L3dvcmtlci1ibG9iLWluaGVyaXRzLWNzcC1pbXBvcnRTY3JpcHRzLXJlZGlyZWN0
LWNyb3NzLW9yaWdpbi1ibG9ja2VkLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc2Vj
dXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3dvcmtlci1jc3AtYmxvY2tzLXhoci1yZWRpcmVj
dC1jcm9zcy1vcmlnaW4uaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9j
b250ZW50U2VjdXJpdHlQb2xpY3kvd29ya2VyLWNzcC1pbXBvcnRTY3JpcHRzLXJlZGlyZWN0LWNy
b3NzLW9yaWdpbi1hbGxvd2VkLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJp
dHkvY29udGVudFNlY3VyaXR5UG9saWN5L3dvcmtlci1jc3AtaW1wb3J0U2NyaXB0cy1yZWRpcmVj
dC1jcm9zcy1vcmlnaW4tYmxvY2tlZC5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS93b3JrZXItd2l0aG91dC1jc3AtaW1wb3J0U2Ny
aXB0cy1yZWRpcmVjdC1jcm9zcy1vcmlnaW4tYWxsb3dlZC5odG1sCisgICAgICAgICAgICAgICBo
dHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvYnlwYXNzLW1haW4td29ybGQtY3NwLWZv
ci14aHItcmVkaXJlY3QuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9p
c29sYXRlZFdvcmxkL2J5cGFzcy1tYWluLXdvcmxkLWNzcC13b3JrZXItYmxvYi1pbXBvcnRTY3Jp
cHQtcmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMv
c2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9ieXBhc3MtbWFpbi13b3JsZC1jc3Atd29ya2VyLWltcG9y
dFNjcmlwdHMtcmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAv
dGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9ieXBhc3Mtd29ya2VyLWNzcC1mb3IteGhyLXJl
ZGlyZWN0LWNyb3NzLW9yaWdpbi5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3NlY3Vy
aXR5L2lzb2xhdGVkV29ybGQvYnlwYXNzLXdvcmtlci1jc3AtZm9yLXhoci5odG1sCisKKyAgICAg
ICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rmls
ZVJlYWRlckxvYWRlcjo6c3RhcnQpOiBEbyBub3QgZW5mb3JjZSBhIENTUCBkaXJlY3RpdmUgYXMg
Q1NQIGlzIG5vdCBhcHBsaWNhYmxlIHRvIEZpbGUgQVBJLgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0
d29ya0FnZW50Ojpsb2FkUmVzb3VyY2UpOiBEbyBub3QgZW5mb3JjZSBhIENTUCBkaXJlY3RpdmUg
YXMgQ1NQIHNob3VsZCBub3QgaW50ZXJmZXJlCisgICAgICAgIHdpdGggdGhlIFdlYiBJbnNwZWN0
b3IuCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHkpOiBNb2RpZmllZCB0byB0YWtlIGFuIG9wdGlvbmFsIENvbnRlbnRTZWN1cml0eVBv
bGljeQorICAgICAgICBhbmQgcGFzcyBpdCB0aHJvdWdoIHRvIERvY3VtZW50VGhyZWFkYWJsZUxv
YWRlcjo6Y3JlYXRlKCkuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXI6OmNyZWF0ZSk6IE1vZGlmaWVkIHRvIHRha2UgYW4gb3B0aW9uYWwgQ29udGVudFNlY3VyaXR5
UG9saWN5IGFuZCBwYXNzIGl0IHRocm91Z2gKKyAgICAgICAgdG8gRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXIoKS4KKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyKTogTW9kaWZp
ZWQgdG8gdGFrZSBhbiBvcHRpb25hbCBDb250ZW50U2VjdXJpdHlQb2xpY3kuCisgICAgICAgIEFz
c2VydHMgdGhhdCB0aGUgQ1NQIGFsbG93cyB0aGUgbG9hZCBvZiB0aGUgcmVxdWVzdCBVUkwgc28g
YXMgdG8gY2F0Y2ggd2hlbiBhIGNhbGxlciBjcmVhdGVzIGEgbG9hZGVyIGZvciBhIHJlcXVlc3QK
KyAgICAgICAgdGhhdCBpcyBub3QgYWxsb3dlZCBieSB0aGUgQ1NQLiBUaGUgY2FsbGVyIHNob3Vs
ZCBub3QgY3JlYXRlIGEgbG9hZGVyIGZvciBzdWNoIGEgcmVxdWVzdC4KKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZCk6IENoZWNrIGlm
IHRoZSBDU1AgYWxsb3dzIHRoZSByZWRpcmVjdCBVUkwuIElmIGl0IGRvZXMgbm90CisgICAgICAg
IHRoZW4gbm90aWZ5IHRoZSBjbGllbnQgdGhhdCB0aGUgcmVkaXJlY3QgY2hlY2sgZmFpbGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdCk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjppc0Fs
bG93ZWRCeUNvbnRlbnRTZWN1cml0eVBvbGljeSk6IENoZWNrcyB0aGF0IHRoZSBzcGVjaWZpZWQg
VVJMIGlzIGFsbG93ZWQKKyAgICAgICAgYnkgdGhlIGVuZm9yY2VkIENTUCBkaXJlY3RpdmUuCisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNvbnRlbnRTZWN1cml0
eVBvbGljeSk6IFJldHVybnMgdGhlIENvbnRlbnRTZWN1cml0eVBvbGljeSBvYmplY3QgcGFzc2Vk
IHRvCisgICAgICAgIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciBvbiBpbnN0YW50aWF0aW9uIG9y
IHRoZSBDb250ZW50U2VjdXJpdHlQb2xpY3kgb2JqZWN0IG9mIHRoZSBhc3NvY2lhdGVkIGRvY3Vt
ZW50LgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaDogQWRkIG92
ZXJsb2FkZWQgdmFyaWFudHMgb2YgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjp7Y3JlYXRlLCBs
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5fSgpCisgICAgICAgIHRoYXQgdGFrZSBhIHN0ZDo6dW5p
cXVlX3B0cjxDb250ZW50U2VjdXJpdHlQb2xpY3k+JiYuIFJlbW92ZSBzb21lIHVubmVjZXNzYXJ5
IGhlYWRlcnMuCisgICAgICAgICogbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlck9wdGlvbnM6OlRocmVhZGFibGVMb2FkZXJPcHRp
b25zKTogVGFrZSB0aGUgQ1NQIGRpcmVjdGl2ZSB0byBlbmZvcmNlIGFuZCBzdG9yZSBpdC4KKyAg
ICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVMb2FkZXJPcHRpb25zOjppc29sYXRlZENvcHkpOiBD
b3B5IHRoZSBDU1AgZGlyZWN0aXZlIHRvIGVuZm9yY2UuCisgICAgICAgICogbG9hZGVyL1RocmVh
ZGFibGVMb2FkZXIuaDogQWRkZWQgbWVtYmVyIGZpZWxkIHRvIHN0b3JlIHRoZSBDU1AgZGlyZWN0
aXZlIHRvIGVuZm9yY2UgKGRlZmF1bHRzIHRvIGVuZm9yY2UgdGhlCisgICAgICAgIGRpcmVjdGl2
ZSBjb25uZWN0LXNyYyAtIHRoZSBtb3N0IGFwcHJvcHJpYXRlIGRpcmVjdGl2ZSBpbiBtb3N0IGNp
cmN1bXN0YW5jZXMpLiBBcyBvZiB0aGUgdGltZSBvZiB3cml0aW5nLAorICAgICAgICBvbmx5IFdv
cmtlckdsb2JhbFNjb3BlLmltcG9ydFNjcmlwdHMoKSBlbmZvcmNlcyBhIGRpZmZlcmVudCBkaXJl
Y3RpdmU6IHNjcmlwdC1zcmMuCisgICAgICAgICogbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6V29ya2Vy
VGhyZWFkYWJsZUxvYWRlcik6IFBhc3MgdGhlIFNlY3VyaXR5T3JpZ2luIGFuZCBDb250ZW50U2Vj
dXJpdHlQb2xpY3kgYXNzb2NpYXRlZAorICAgICAgICB3aXRoIHRoZSBXb3JrZXJHbG9iYWxTY29w
ZSB0byBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFk
QnJpZGdlKCkuCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWlu
VGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKTogUGFzcyBhIGNvcHkgb2YgdGhlIHdvcmtl
cidzIENvbnRlbnRTZWN1cml0eVBvbGljeQorICAgICAgICB0byB0aGUgRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyLgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmg6Cisg
ICAgICAgICogcGFnZS9FdmVudFNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFNv
dXJjZTo6Y29ubmVjdCk6IEVuZm9yY2UgdGhlIENTUCBkaXJlY3RpdmUgY29ubmVjdC1zcmMgb24g
cmVkaXJlY3RzIHVubGVzcyB3ZSBhcmUgcnVubmluZyBpbiBhbiBpc29sYXRlZCB3b3JsZC4KKyAg
ICAgICAgKiB3b3JrZXJzL0Fic3RyYWN0V29ya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFi
c3RyYWN0V29ya2VyOjpyZXNvbHZlVVJMKTogTW9kaWZpZWQgdG8gdGFrZSBhIGJvb2xlYW4gd2hl
dGhlciB0byBieXBhc3MgdGhlIG1haW4gd29ybGQgQ29udGVudCBTZWN1cml0eSBQb2xpY3kKKyAg
ICAgICAgaW5zdGVhZCBvZiBxdWVyeWluZyBmb3IgaXQgZGlyZWN0bHkuCisgICAgICAgICogd29y
a2Vycy9BYnN0cmFjdFdvcmtlci5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6Y3JlYXRlKTogQWRkZWQgRklYTUUgdG8gZW5mb3JjZSBj
aGlsZC1zcmMgZGlyZWN0aXZlIG9mIHRoZSBkb2N1bWVudCdzIENTUCB0byB0aGUgd29ya2VyJ3Mg
c2NyaXB0IFVSTAorICAgICAgICBvbiByZWRpcmVjdCBvbmNlIHdlIGZpeCA8aHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzU2Mj4uIEZvciBub3csIGRvIG5vdCBlbmZv
cmNlIGEgQ1NQIHBvbGljeSBvbiByZWRpcmVjdAorICAgICAgICBvZiB0aGUgd29ya2VyJ3Mgc2Ny
aXB0IFVSTC4KKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjppbXBvcnRTY3JpcHRzKTogQ2hlY2sgdGhh
dCB0aGUgcmVxdWVzdGVkIFVSTCBpcyBhbGxvd2VkIGJ5IHRoZSBDU1Agb2YgdGhlIHdvcmtlciAo
aWYgYXBwbGljYWJsZSkuCisgICAgICAgIEVuZm9yY2UgdGhlIENTUCBkaXJlY3RpdmUgc2NyaXB0
LXNyYyBvbiByZWRpcmVjdHMgdW5sZXNzIHdlIGFyZSBydW5uaW5nIGluIGFuIGlzb2xhdGVkIHdv
cmxkLgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlclNjcmlwdExvYWRlcjo6bG9hZFN5bmNocm9ub3VzbHkpOiBQYXNzIFNl
Y3VyaXR5T3JpZ2luIGFuZCBDb250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudCB0byBXb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVy
Ojpsb2FkQXN5bmNocm9ub3VzbHkpOiBEaXR0by4KKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclNj
cmlwdExvYWRlci5oOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVxdWVzdCk6IEVuZm9yY2UgdGhlIENT
UCBkaXJlY3RpdmUgY29ubmVjdC1zcmMgb24gcmVkaXJlY3RzIHVubGVzcyB3ZSBhcmUgcnVubmlu
ZyBpbgorICAgICAgICBhbiBpc29sYXRlZCB3b3JsZC4KKworMjAxNi0wMi0wNyAgRGFuaWVsIEJh
dGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKICAgICAgICAgQ1NQOiBBbGxvdyBXZWIgV29ya2Vy
cyBpbml0aWF0ZWQgZnJvbSBhbiBpc29sYXRlZCB3b3JsZCB0byBieXBhc3MgdGhlIG1haW4gd29y
bGQgQ29udGVudCBTZWN1cml0eSBQb2xpY3kKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1MzYyMgogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjQ0MDAw
MjM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcAppbmRleCA1
ZTY5Y2E5MzMxNWU5YzYzZWViMzQ3ZjEzNWQ2ZTE1NmJmMTUxYmU1Li5hODBhMmFiMTJlMDc0MTgx
YTBkYmQ1MGFmZDk2Y2Q2ZDhmYjkxMDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmls
ZVJlYWRlckxvYWRlci5jcHAKQEAgLTk3LDYgKzk3LDcgQEAgdm9pZCBGaWxlUmVhZGVyTG9hZGVy
OjpzdGFydChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBC
bG8KICAgICBvcHRpb25zLnByZWZsaWdodFBvbGljeSA9IENvbnNpZGVyUHJlZmxpZ2h0OwogICAg
IG9wdGlvbnMuc2V0QWxsb3dDcmVkZW50aWFscyhBbGxvd1N0b3JlZENyZWRlbnRpYWxzKTsKICAg
ICBvcHRpb25zLmNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSA9IERlbnlDcm9zc09yaWdpblJlcXVl
c3RzOworICAgIG9wdGlvbnMuY29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQgPSBDb250
ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudDo6RG9Ob3RFbmZvcmNlOwogCiAgICAgaWYgKG1f
Y2xpZW50KQogICAgICAgICBtX2xvYWRlciA9IFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LCB0aGlzLCByZXF1ZXN0LCBvcHRpb25zKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggOTZk
NDgzY2MxYjllNjBmNWViNDNmNDMyZWI3NjYwZmY2ZmEzNDc0Zi4uMzVhNmM4ZDJjNTdkNjZiZmQy
YWZjNGY1YzhiZjRlMDI4ZDIwMGRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTY3OSw2ICs2NzksNyBAQCB2b2lkIElu
c3BlY3Rvck5ldHdvcmtBZ2VudDo6bG9hZFJlc291cmNlKEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgY29uc3QgU3RyaW5nJgogICAgIG9wdGlvbnMuc2V0QWxsb3dDcmVkZW50aWFscyhBbGxvd1N0
b3JlZENyZWRlbnRpYWxzKTsKICAgICBvcHRpb25zLnNldERlZmVyc0xvYWRpbmdQb2xpY3koRGVm
ZXJzTG9hZGluZ1BvbGljeTo6RGlzYWxsb3dEZWZlcnNMb2FkaW5nKTsgLy8gU28gdGhlIHJlcXVl
c3QgaXMgbmV2ZXIgZGVmZXJyZWQuCiAgICAgb3B0aW9ucy5jcm9zc09yaWdpblJlcXVlc3RQb2xp
Y3kgPSBBbGxvd0Nyb3NzT3JpZ2luUmVxdWVzdHM7CisgICAgb3B0aW9ucy5jb250ZW50U2VjdXJp
dHlQb2xpY3lFbmZvcmNlbWVudCA9IENvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50OjpE
b05vdEVuZm9yY2U7CiAKICAgICAvLyBJbnNwZWN0b3JUaHJlYWRhYmxlTG9hZGVyQ2xpZW50IGRl
bGV0ZXMgaXRzZWxmIHdoZW4gdGhlIGxvYWQgY29tcGxldGVzLgogICAgIEluc3BlY3RvclRocmVh
ZGFibGVMb2FkZXJDbGllbnQqIGluc3BlY3RvclRocmVhZGFibGVMb2FkZXJDbGllbnQgPSBuZXcg
SW5zcGVjdG9yVGhyZWFkYWJsZUxvYWRlckNsaWVudChjYWxsYmFjay5jb3B5UmVmKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcApp
bmRleCA0NDA0ZmQxNWI4ZGM3YTI0ZGNkMzA0M2M0Njc4YTU4MTM4OGRmMWM2Li44NGUwNTljNzY0
YmI1NjBjYWQ4MjhjMjJjODZiNzIxNTAyNDU5NDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMzUsNiArMzUsNyBAQAog
I2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5o
IgorI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIkNyb3NzT3Jp
Z2luQWNjZXNzQ29udHJvbC5oIgogI2luY2x1ZGUgIkNyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0
Q2FjaGUuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgpAQCAtNTMsMzIgKzU0LDQ1IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRS
ZXNvdXJjZVN5bmNocm9ub3VzbHkoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIFRocmVhZGFibGVMb2FkZXJDbGllbnQmIGNsaWVudCwgY29uc3QgVGhy
ZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCit2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxv
YWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYgY2xpZW50
LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucywgc3RkOjp1bmlxdWVfcHRy
PENvbnRlbnRTZWN1cml0eVBvbGljeT4mJiBjb250ZW50U2VjdXJpdHlQb2xpY3kpCiB7CiAgICAg
Ly8gVGhlIGxvYWRlciB3aWxsIGJlIGRlbGV0ZWQgYXMgc29vbiBhcyB0aGlzIGZ1bmN0aW9uIGV4
aXRzLgotICAgIFJlZlB0cjxEb2N1bWVudFRocmVhZGFibGVMb2FkZXI+IGxvYWRlciA9IGFkb3B0
UmVmKG5ldyBEb2N1bWVudFRocmVhZGFibGVMb2FkZXIoZG9jdW1lbnQsIGNsaWVudCwgTG9hZFN5
bmNocm9ub3VzbHksIHJlcXVlc3QsIG9wdGlvbnMpKTsKKyAgICBSZWZQdHI8RG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyPiBsb2FkZXIgPSBhZG9wdFJlZihuZXcgRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyKGRvY3VtZW50LCBjbGllbnQsIExvYWRTeW5jaHJvbm91c2x5LCByZXF1ZXN0LCBvcHRpb25z
LCBXVEZNb3ZlKGNvbnRlbnRTZWN1cml0eVBvbGljeSkpKTsKICAgICBBU1NFUlQobG9hZGVyLT5o
YXNPbmVSZWYoKSk7CiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyPiBE
b2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFRocmVh
ZGFibGVMb2FkZXJDbGllbnQmIGNsaWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KERvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBUaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50JiBjbGllbnQsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zKQorewor
ICAgIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoZG9jdW1lbnQsIHJlcXVlc3QsIGNsaWVudCwg
b3B0aW9ucywgbnVsbHB0cik7Cit9CisKK1Bhc3NSZWZQdHI8RG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyPiBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQs
IFRocmVhZGFibGVMb2FkZXJDbGllbnQmIGNsaWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucywgc3RkOjp1bmlx
dWVfcHRyPENvbnRlbnRTZWN1cml0eVBvbGljeT4mJiBjb250ZW50U2VjdXJpdHlQb2xpY3kpCiB7
Ci0gICAgUmVmUHRyPERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcj4gbG9hZGVyID0gYWRvcHRSZWYo
bmV3IERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcihkb2N1bWVudCwgY2xpZW50LCBMb2FkQXN5bmNo
cm9ub3VzbHksIHJlcXVlc3QsIG9wdGlvbnMpKTsKKyAgICBSZWZQdHI8RG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyPiBsb2FkZXIgPSBhZG9wdFJlZihuZXcgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
KGRvY3VtZW50LCBjbGllbnQsIExvYWRBc3luY2hyb25vdXNseSwgcmVxdWVzdCwgb3B0aW9ucywg
V1RGTW92ZShjb250ZW50U2VjdXJpdHlQb2xpY3kpKSk7CiAgICAgaWYgKCFsb2FkZXItPm1fcmVz
b3VyY2UpCiAgICAgICAgIGxvYWRlciA9IG51bGxwdHI7CiAgICAgcmV0dXJuIGxvYWRlci5yZWxl
YXNlKCk7CiB9CiAKLURvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6RG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyKERvY3VtZW50JiBkb2N1bWVudCwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYgY2xpZW50
LCBCbG9ja2luZ0JlaGF2aW9yIGJsb2NraW5nQmVoYXZpb3IsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCitQYXNz
UmVmUHRyPERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcj4gRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiBjbGll
bnQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVGhyZWFkYWJsZUxvYWRl
ck9wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgcmV0dXJuIERvY3VtZW50VGhyZWFkYWJsZUxvYWRl
cjo6Y3JlYXRlKGRvY3VtZW50LCBjbGllbnQsIHJlcXVlc3QsIG9wdGlvbnMsIG51bGxwdHIpOwor
fQorCitEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcihE
b2N1bWVudCYgZG9jdW1lbnQsIFRocmVhZGFibGVMb2FkZXJDbGllbnQmIGNsaWVudCwgQmxvY2tp
bmdCZWhhdmlvciBibG9ja2luZ0JlaGF2aW9yLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBzdGQ6OnVuaXF1ZV9w
dHI8Q29udGVudFNlY3VyaXR5UG9saWN5PiYmIGNvbnRlbnRTZWN1cml0eVBvbGljeSkKICAgICA6
IG1fY2xpZW50KCZjbGllbnQpCiAgICAgLCBtX2RvY3VtZW50KGRvY3VtZW50KQogICAgICwgbV9v
cHRpb25zKG9wdGlvbnMpCiAgICAgLCBtX3NhbWVPcmlnaW5SZXF1ZXN0KHNlY3VyaXR5T3JpZ2lu
KCktPmNhblJlcXVlc3QocmVxdWVzdC51cmwoKSkpCiAgICAgLCBtX3NpbXBsZVJlcXVlc3QodHJ1
ZSkKICAgICAsIG1fYXN5bmMoYmxvY2tpbmdCZWhhdmlvciA9PSBMb2FkQXN5bmNocm9ub3VzbHkp
CisgICAgLCBtX2NvbnRlbnRTZWN1cml0eVBvbGljeShXVEZNb3ZlKGNvbnRlbnRTZWN1cml0eVBv
bGljeSkpCiB7CiAgICAgLy8gU2V0dGluZyBhbiBvdXRnb2luZyByZWZlcmVyIGlzIG9ubHkgc3Vw
cG9ydGVkIGluIHRoZSBhc3luYyBjb2RlIHBhdGguCiAgICAgQVNTRVJUKG1fYXN5bmMgfHwgcmVx
dWVzdC5odHRwUmVmZXJyZXIoKS5pc0VtcHR5KCkpOwogCisgICAgQVNTRVJUX1dJVEhfU0VDVVJJ
VFlfSU1QTElDQVRJT04oaXNBbGxvd2VkQnlDb250ZW50U2VjdXJpdHlQb2xpY3kocmVxdWVzdC51
cmwoKSkpOworCiAgICAgaWYgKG1fc2FtZU9yaWdpblJlcXVlc3QgfHwgbV9vcHRpb25zLmNyb3Nz
T3JpZ2luUmVxdWVzdFBvbGljeSA9PSBBbGxvd0Nyb3NzT3JpZ2luUmVxdWVzdHMpIHsKICAgICAg
ICAgbG9hZFJlcXVlc3QocmVxdWVzdCwgRG9TZWN1cml0eUNoZWNrKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtMTc3LDYgKzE5MSwxMiBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6cmVk
aXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIFJlc291cgogICAgIEFTU0VS
VF9VTlVTRUQocmVzb3VyY2UsIHJlc291cmNlID09IG1fcmVzb3VyY2UpOwogCiAgICAgUmVmPERv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgaWYgKCFpc0FsbG93
ZWRCeUNvbnRlbnRTZWN1cml0eVBvbGljeShyZXF1ZXN0LnVybCgpKSkgeworICAgICAgICBtX2Ns
aWVudC0+ZGlkRmFpbFJlZGlyZWN0Q2hlY2soKTsKKyAgICAgICAgcmVxdWVzdCA9IFJlc291cmNl
UmVxdWVzdCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgLy8gQWxsb3cgc2FtZSBv
cmlnaW4gcmVxdWVzdHMgdG8gY29udGludWUgYWZ0ZXIgYWxsb3dpbmcgY2xpZW50cyB0byBhdWRp
dCB0aGUgcmVkaXJlY3QuCiAgICAgaWYgKGlzQWxsb3dlZFJlZGlyZWN0KHJlcXVlc3QudXJsKCkp
KQogICAgICAgICByZXR1cm47CkBAIC00MDYsNyArNDI2LDcgQEAgdm9pZCBEb2N1bWVudFRocmVh
ZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
U2VjdXIKICAgICAvLyBGSVhNRTogRnJhbWVMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KCkgZG9l
cyBub3QgdGVsbCB1cyB3aGV0aGVyIGEgcmVkaXJlY3QgaGFwcGVuZWQgb3Igbm90LCBzbyB3ZSBn
dWVzcyBieSBjb21wYXJpbmcgdGhlCiAgICAgLy8gcmVxdWVzdCBhbmQgcmVzcG9uc2UgVVJMcy4g
VGhpcyBpc24ndCBhIHBlcmZlY3QgdGVzdCB0aG91Z2gsIHNpbmNlIGEgc2VydmVyIGNhbiBzZXJ2
ZSBhIHJlZGlyZWN0IHRvIHRoZSBzYW1lIFVSTCB0aGF0IHdhcwogICAgIC8vIHJlcXVlc3RlZC4g
QWxzbyBjb21wYXJpbmcgdGhlIHJlcXVlc3QgYW5kIHJlc3BvbnNlIFVSTHMgYXMgc3RyaW5ncyB3
aWxsIGZhaWwgaWYgdGhlIHJlcXVlc3RVUkwgc3RpbGwgaGFzIGl0cyBjcmVkZW50aWFscy4KLSAg
ICBpZiAocmVxdWVzdFVSTCAhPSByZXNwb25zZS51cmwoKSAmJiAhaXNBbGxvd2VkUmVkaXJlY3Qo
cmVzcG9uc2UudXJsKCkpKSB7CisgICAgaWYgKHJlcXVlc3RVUkwgIT0gcmVzcG9uc2UudXJsKCkg
JiYgKCFpc0FsbG93ZWRCeUNvbnRlbnRTZWN1cml0eVBvbGljeShyZXNwb25zZS51cmwoKSkgfHwg
IWlzQWxsb3dlZFJlZGlyZWN0KHJlc3BvbnNlLnVybCgpKSkpIHsKICAgICAgICAgbV9jbGllbnQt
PmRpZEZhaWxSZWRpcmVjdENoZWNrKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00MTgs
NiArNDM4LDE4IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNlY3VyCiAgICAgZGlkRmluaXNoTG9hZGlu
ZyhpZGVudGlmaWVyLCAwLjApOwogfQogCitib29sIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6
aXNBbGxvd2VkQnlDb250ZW50U2VjdXJpdHlQb2xpY3koY29uc3QgVVJMJiB1cmwpCit7CisgICAg
c3dpdGNoIChtX29wdGlvbnMuY29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQpIHsKKyAg
ICBjYXNlIENvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50OjpEb05vdEVuZm9yY2U6Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgQ29udGVudFNlY3VyaXR5UG9saWN5RW5mb3Jj
ZW1lbnQ6OkVuZm9yY2VDb25uZWN0U3JjRGlyZWN0aXZlOgorICAgICAgICByZXR1cm4gY29udGVu
dFNlY3VyaXR5UG9saWN5KCkuYWxsb3dDb25uZWN0VG9Tb3VyY2UodXJsLCBmYWxzZSk7IC8vIERv
IG5vdCBvdmVycmlkZSBwb2xpY3kKKyAgICBjYXNlIENvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9y
Y2VtZW50OjpFbmZvcmNlU2NyaXB0U3JjRGlyZWN0aXZlOgorICAgICAgICByZXR1cm4gY29udGVu
dFNlY3VyaXR5UG9saWN5KCkuYWxsb3dTY3JpcHRGcm9tU291cmNlKHVybCwgZmFsc2UpOyAvLyBE
byBub3Qgb3ZlcnJpZGUgcG9saWN5CisgICAgfQorfQorCiBib29sIERvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlcjo6aXNBbGxvd2VkUmVkaXJlY3QoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKG1f
b3B0aW9ucy5jcm9zc09yaWdpblJlcXVlc3RQb2xpY3kgPT0gQWxsb3dDcm9zc09yaWdpblJlcXVl
c3RzKQpAQCAtNDM2LDQgKzQ2OCwxMiBAQCBTZWN1cml0eU9yaWdpbiogRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyOjpzZWN1cml0eU9yaWdpbigpIGNvbnN0CiAgICAgcmV0dXJuIG1fb3B0aW9ucy5z
ZWN1cml0eU9yaWdpbiA/IG1fb3B0aW9ucy5zZWN1cml0eU9yaWdpbi5nZXQoKSA6IG1fZG9jdW1l
bnQuc2VjdXJpdHlPcmlnaW4oKTsKIH0KIAorY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5JiBE
b2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNvbnRlbnRTZWN1cml0eVBvbGljeSgpIGNvbnN0Cit7
CisgICAgaWYgKG1fY29udGVudFNlY3VyaXR5UG9saWN5KQorICAgICAgICByZXR1cm4gKm1fY29u
dGVudFNlY3VyaXR5UG9saWN5LmdldCgpOworICAgIEFTU0VSVChtX2RvY3VtZW50LmNvbnRlbnRT
ZWN1cml0eVBvbGljeSgpKTsKKyAgICByZXR1cm4gKm1fZG9jdW1lbnQuY29udGVudFNlY3VyaXR5
UG9saWN5KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaAppbmRleCBmZjA4M2ZiOTBmMTcy
YWRiY2U1Mzc1NGUwZWM3ZGM1MGZiNGE3ZjY1Li42M2I1NjE1NzZlNmMzZDI3NmYzZTM3NmI5Mjdm
ZTIwMmRhMTBiMjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlci5oCkBAIC0zMywxNiArMzMsMTMgQEAKIAogI2luY2x1ZGUgIkNhY2hlZFJh
d1Jlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKLSNp
bmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlci5o
IgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IGNsYXNzIENhY2hlZFJhd1Jlc291cmNlOworICAgIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGlj
eTsKICAgICBjbGFzcyBEb2N1bWVudDsKICAgICBjbGFzcyBVUkw7CiAgICAgY2xhc3MgUmVzb3Vy
Y2VSZXF1ZXN0OwpAQCAtNTIsOCArNDksMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNs
YXNzIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPERvY3VtZW50
VGhyZWFkYWJsZUxvYWRlcj4sIHB1YmxpYyBUaHJlYWRhYmxlTG9hZGVyLCBwcml2YXRlIENhY2hl
ZFJhd1Jlc291cmNlQ2xpZW50ICB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNs
eShEb2N1bWVudCYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFRocmVhZGFibGVMb2FkZXJDbGll
bnQmLCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYsIHN0ZDo6dW5pcXVlX3B0cjxDb250
ZW50U2VjdXJpdHlQb2xpY3k+JiYpOwogICAgICAgICBzdGF0aWMgdm9pZCBsb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KERvY3VtZW50JiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgVGhyZWFkYWJs
ZUxvYWRlckNsaWVudCYsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJik7CisKKyAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyPiBjcmVhdGUoRG9j
dW1lbnQmLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmLCBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNl
Y3VyaXR5UG9saWN5PiYmKTsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyPiBjcmVhdGUoRG9jdW1lbnQmLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50Jiwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmKTsK
KwogICAgICAgICB2aXJ0dWFsIH5Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIoKTsKIAogICAgICAg
ICB2aXJ0dWFsIHZvaWQgY2FuY2VsKCkgb3ZlcnJpZGU7CkBAIC03Miw3ICs3Myw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIExvYWRBc3luY2hyb25vdXNseQogICAgICAgICB9
OwogCi0gICAgICAgIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcihEb2N1bWVudCYsIFRocmVhZGFi
bGVMb2FkZXJDbGllbnQmLCBCbG9ja2luZ0JlaGF2aW9yLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYpOworICAgICAgICBEb2N1bWVudFRocmVh
ZGFibGVMb2FkZXIoRG9jdW1lbnQmLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiwgQmxvY2tpbmdC
ZWhhdmlvciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9w
dGlvbnMmLCBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5UG9saWN5PiYmKTsKIAogICAg
ICAgICB2b2lkIGNsZWFyUmVzb3VyY2UoKTsKIApAQCAtOTUsMTAgKzk2LDEyIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIGxvYWRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIFNlY3VyaXR5Q2hlY2tQb2xpY3kpOwogICAgICAgICBib29sIGlzQWxsb3dlZFJlZGly
ZWN0KGNvbnN0IFVSTCYpOworICAgICAgICBib29sIGlzQWxsb3dlZEJ5Q29udGVudFNlY3VyaXR5
UG9saWN5KGNvbnN0IFVSTCYpOwogCiAgICAgICAgIGJvb2wgaXNYTUxIdHRwUmVxdWVzdCgpIGNv
bnN0IG92ZXJyaWRlIGZpbmFsOwogCiAgICAgICAgIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9y
aWdpbigpIGNvbnN0OworICAgICAgICBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3kmIGNvbnRl
bnRTZWN1cml0eVBvbGljeSgpIGNvbnN0OwogCiAgICAgICAgIENhY2hlZFJlc291cmNlSGFuZGxl
PENhY2hlZFJhd1Jlc291cmNlPiBtX3Jlc291cmNlOwogICAgICAgICBUaHJlYWRhYmxlTG9hZGVy
Q2xpZW50KiBtX2NsaWVudDsKQEAgLTEwOCw2ICsxMTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIGJvb2wgbV9zaW1wbGVSZXF1ZXN0OwogICAgICAgICBib29sIG1fYXN5bmM7CiAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZXNvdXJjZVJlcXVlc3Q+IG1fYWN0dWFsUmVxdWVzdDsg
Ly8gbm9uLW51bGwgZHVyaW5nIEFjY2VzcyBDb250cm9sIHByZWZsaWdodCBjaGVja3MKKyAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0eVBvbGljeT4gbV9jb250ZW50U2VjdXJp
dHlQb2xpY3k7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDZkNGUxYjIwMDZmMjQ1MWFiMjIw
YWZiMDMwMTYxOGNkYzNlYjE5NTQuLmVmNDNkNzU2NWI1NTBmMmNkMmY4NGRkNGZiYjI1NjBlOGM3
NTA0ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAg
LTUxLDEwICs1MSwxMSBAQCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9uczo6flRocmVhZGFibGVMb2Fk
ZXJPcHRpb25zKCkKIHsKIH0KIAotVGhyZWFkYWJsZUxvYWRlck9wdGlvbnM6OlRocmVhZGFibGVM
b2FkZXJPcHRpb25zKGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgYmFzZU9wdGlvbnMsIFBy
ZWZsaWdodFBvbGljeSBwcmVmbGlnaHRQb2xpY3ksIENyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSBj
cm9zc09yaWdpblJlcXVlc3RQb2xpY3ksIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4mJiBzZWN1cml0
eU9yaWdpbiwgU3RyaW5nJiYgaW5pdGlhdG9yKQorVGhyZWFkYWJsZUxvYWRlck9wdGlvbnM6OlRo
cmVhZGFibGVMb2FkZXJPcHRpb25zKGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgYmFzZU9w
dGlvbnMsIFByZWZsaWdodFBvbGljeSBwcmVmbGlnaHRQb2xpY3ksIENyb3NzT3JpZ2luUmVxdWVz
dFBvbGljeSBjcm9zc09yaWdpblJlcXVlc3RQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeUVu
Zm9yY2VtZW50IGNvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50LCBSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+JiYgc2VjdXJpdHlPcmlnaW4sIFN0cmluZyYmIGluaXRpYXRvcikKICAgICA6IFJl
c291cmNlTG9hZGVyT3B0aW9ucyhiYXNlT3B0aW9ucykKICAgICAsIHByZWZsaWdodFBvbGljeShw
cmVmbGlnaHRQb2xpY3kpCiAgICAgLCBjcm9zc09yaWdpblJlcXVlc3RQb2xpY3koY3Jvc3NPcmln
aW5SZXF1ZXN0UG9saWN5KQorICAgICwgY29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQo
Y29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQpCiAgICAgLCBzZWN1cml0eU9yaWdpbihX
VEZNb3ZlKHNlY3VyaXR5T3JpZ2luKSkKICAgICAsIGluaXRpYXRvcihXVEZNb3ZlKGluaXRpYXRv
cikpCiB7CkBAIC02NSw4ICs2Niw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxUaHJlYWRhYmxlTG9hZGVy
T3B0aW9ucz4gVGhyZWFkYWJsZUxvYWRlck9wdGlvbnM6Omlzb2xhdGVkQ29weSgpCiAgICAgUmVm
UHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbkNvcHk7CiAgICAgaWYgKHNlY3VyaXR5
T3JpZ2luKQogICAgICAgICBzZWN1cml0eU9yaWdpbkNvcHkgPSBzZWN1cml0eU9yaWdpbi0+aXNv
bGF0ZWRDb3B5KCk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGhyZWFkYWJsZUxvYWRl
ck9wdGlvbnM+KCp0aGlzLCBwcmVmbGlnaHRQb2xpY3ksIGNyb3NzT3JpZ2luUmVxdWVzdFBvbGlj
eSwKLSAgICAgICAgV1RGTW92ZShzZWN1cml0eU9yaWdpbkNvcHkpLCBpbml0aWF0b3IuaXNvbGF0
ZWRDb3B5KCkpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRocmVhZGFibGVMb2FkZXJP
cHRpb25zPigqdGhpcywgcHJlZmxpZ2h0UG9saWN5LCBjcm9zc09yaWdpblJlcXVlc3RQb2xpY3ks
IGNvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50LCBXVEZNb3ZlKHNlY3VyaXR5T3JpZ2lu
Q29weSksIGluaXRpYXRvci5pc29sYXRlZENvcHkoKSk7CiB9CiAKIFBhc3NSZWZQdHI8VGhyZWFk
YWJsZUxvYWRlcj4gVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIFRocmVhZGFibGVMb2FkZXJDbGllbnQqIGNsaWVudCwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9u
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5oCmluZGV4IDA4NmM1ODM3
NjBjMjAwMzFiNGQ0OGRjOTZkNzEzOTVjZDI4MTBkZGUuLjMxMzhmZjNhZjI2NjhiNDQwZWQxMDMx
ZGZjN2QzYjEzOTQ1ZmI0MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJl
YWRhYmxlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2Fk
ZXIuaApAQCAtNTksMTUgKzU5LDIyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUHJl
dmVudFByZWZsaWdodAogICAgIH07CiAKKyAgICBlbnVtIGNsYXNzIENvbnRlbnRTZWN1cml0eVBv
bGljeUVuZm9yY2VtZW50IHsKKyAgICAgICAgRG9Ob3RFbmZvcmNlLAorICAgICAgICBFbmZvcmNl
Q29ubmVjdFNyY0RpcmVjdGl2ZSwKKyAgICAgICAgRW5mb3JjZVNjcmlwdFNyY0RpcmVjdGl2ZSwK
KyAgICB9OworCiAgICAgc3RydWN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zIDogUmVzb3VyY2VM
b2FkZXJPcHRpb25zIHsKICAgICAgICAgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMoKTsKLSAgICAg
ICAgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMoY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiwg
UHJlZmxpZ2h0UG9saWN5LCBDcm9zc09yaWdpblJlcXVlc3RQb2xpY3ksIFJlZlB0cjxTZWN1cml0
eU9yaWdpbj4mJiwgU3RyaW5nJiYgaW5pdGlhdG9yKTsKKyAgICAgICAgVGhyZWFkYWJsZUxvYWRl
ck9wdGlvbnMoY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiwgUHJlZmxpZ2h0UG9saWN5LCBD
cm9zc09yaWdpblJlcXVlc3RQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50
LCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+JiYsIFN0cmluZyYmIGluaXRpYXRvcik7CiAgICAgICAg
IH5UaHJlYWRhYmxlTG9hZGVyT3B0aW9ucygpOwogCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxU
aHJlYWRhYmxlTG9hZGVyT3B0aW9ucz4gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKICAgICAgICAg
UHJlZmxpZ2h0UG9saWN5IHByZWZsaWdodFBvbGljeTsgLy8gSWYgQWNjZXNzQ29udHJvbCBpcyB1
c2VkLCBob3cgdG8gZGV0ZXJtaW5lIGlmIGEgcHJlZmxpZ2h0IGlzIG5lZWRlZC4KICAgICAgICAg
Q3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5IGNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeTsKKyAgICAg
ICAgQ29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQgY29udGVudFNlY3VyaXR5UG9saWN5
RW5mb3JjZW1lbnQgeyBDb250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudDo6RW5mb3JjZUNv
bm5lY3RTcmNEaXJlY3RpdmUgfTsKICAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1
cml0eU9yaWdpbjsKICAgICAgICAgU3RyaW5nIGluaXRpYXRvcjsgLy8gVGhpcyBjYW5ub3QgYmUg
YW4gQXRvbWljU3RyaW5nLCBhcyBpc29sYXRlZENvcHkoKSB3b3VsZG4ndCBjcmVhdGUgYW4gb2Jq
ZWN0IHRoYXQncyBzYWZlIGZvciBwYXNzaW5nIHRvIGFub3RoZXIgdGhyZWFkLgogICAgIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKaW5k
ZXggMWRiOGQ2NDg5MmZhMjMyNDk3YjAzODIxNDQwNmYzN2VmMTMyZWJjMy4uYmFjMjU0ZjM1NTI2
N2FlOWQ2YzJiY2YzMWUwY2Y0NzNjY2JlMmM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldvcmtlclRocmVhZGFibGVMb2FkZXIuaCIKIAorI2lu
Y2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAj
aW5jbHVkZSAiRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VF
cnJvci5oIgpAQCAtNTEsNyArNTIsNyBAQCBzdGF0aWMgY29uc3QgY2hhciBsb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5TW9kZVtdID0gImxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHlNbwogV29ya2Vy
VGhyZWFkYWJsZUxvYWRlcjo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcihXb3JrZXJHbG9iYWxTY29w
ZSogd29ya2VyR2xvYmFsU2NvcGUsIFRocmVhZGFibGVMb2FkZXJDbGllbnQqIGNsaWVudCwgY29u
c3QgU3RyaW5nJiB0YXNrTW9kZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKICAgICA6IG1fd29ya2VyR2xvYmFs
U2NvcGUod29ya2VyR2xvYmFsU2NvcGUpCiAgICAgLCBtX3dvcmtlckNsaWVudFdyYXBwZXIoVGhy
ZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI6OmNyZWF0ZShjbGllbnQpKQotICAgICwgbV9icmlk
Z2UoKihuZXcgTWFpblRocmVhZEJyaWRnZShtX3dvcmtlckNsaWVudFdyYXBwZXIsIG1fd29ya2Vy
R2xvYmFsU2NvcGUtPnRocmVhZCgpLndvcmtlckxvYWRlclByb3h5KCksIHRhc2tNb2RlLCByZXF1
ZXN0LCBvcHRpb25zLCB3b3JrZXJHbG9iYWxTY29wZS0+dXJsKCkuc3RyaXBwZWRGb3JVc2VBc1Jl
ZmVycmVyKCkpKSkKKyAgICAsIG1fYnJpZGdlKCoobmV3IE1haW5UaHJlYWRCcmlkZ2UobV93b3Jr
ZXJDbGllbnRXcmFwcGVyLCB3b3JrZXJHbG9iYWxTY29wZS0+dGhyZWFkKCkud29ya2VyTG9hZGVy
UHJveHkoKSwgdGFza01vZGUsIHJlcXVlc3QsIG9wdGlvbnMsIHdvcmtlckdsb2JhbFNjb3BlLT51
cmwoKS5zdHJpcHBlZEZvclVzZUFzUmVmZXJyZXIoKSwgd29ya2VyR2xvYmFsU2NvcGUtPnNlY3Vy
aXR5T3JpZ2luKCksIHdvcmtlckdsb2JhbFNjb3BlLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKSkp
KQogewogfQogCkBAIC04Myw3ICs4NCw4IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6
Y2FuY2VsKCkKIH0KIAogV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6
TWFpblRocmVhZEJyaWRnZShQYXNzUmVmUHRyPFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVy
PiB3b3JrZXJDbGllbnRXcmFwcGVyLCBXb3JrZXJMb2FkZXJQcm94eSYgbG9hZGVyUHJveHksIGNv
bnN0IFN0cmluZyYgdGFza01vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgb3V0
Z29pbmdSZWZlcnJlcikKKyAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBjb25zdCBTdHJpbmcmIG91dGdvaW5n
UmVmZXJyZXIsCisgICAgY29uc3QgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBjb25z
dCBDb250ZW50U2VjdXJpdHlQb2xpY3kqIGNvbnRlbnRTZWN1cml0eVBvbGljeSkKICAgICA6IG1f
d29ya2VyQ2xpZW50V3JhcHBlcih3b3JrZXJDbGllbnRXcmFwcGVyKQogICAgICwgbV9sb2FkZXJQ
cm94eShsb2FkZXJQcm94eSkKICAgICAsIG1fdGFza01vZGUodGFza01vZGUuaXNvbGF0ZWRDb3B5
KCkpCkBAIC05Miw4ICs5NCwxNCBAQCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFk
QnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKFBhc3NSZWZQdHI8VGhyZWFkYWJsZQogCiAgICAgYXV0
byogcmVxdWVzdERhdGEgPSByZXF1ZXN0LmNvcHlEYXRhKCkucmVsZWFzZSgpOwogICAgIGF1dG8q
IG9wdGlvbnNDb3B5ID0gb3B0aW9ucy5pc29sYXRlZENvcHkoKS5yZWxlYXNlKCk7CisKKyAgICBB
U1NFUlQoc2VjdXJpdHlPcmlnaW4pOworICAgIEFTU0VSVChjb250ZW50U2VjdXJpdHlQb2xpY3kp
OworICAgIGF1dG8qIGNvbnRlbnRTZWN1cml0eVBvbGljeUNvcHkgPSBzdGQ6Om1ha2VfdW5pcXVl
PENvbnRlbnRTZWN1cml0eVBvbGljeT4oKnNlY3VyaXR5T3JpZ2luKS5yZWxlYXNlKCk7CisgICAg
Y29udGVudFNlY3VyaXR5UG9saWN5Q29weS0+Y29weVN0YXRlRnJvbShjb250ZW50U2VjdXJpdHlQ
b2xpY3kpOworCiAgICAgU3RyaW5nQ2FwdHVyZSBjYXB0dXJlZE91dGdvaW5nUmVmZXJyZXIob3V0
Z29pbmdSZWZlcnJlcik7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKFt0aGlz
LCByZXF1ZXN0RGF0YSwgb3B0aW9uc0NvcHksIGNhcHR1cmVkT3V0Z29pbmdSZWZlcnJlcl0oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgIG1fbG9hZGVyUHJveHkucG9zdFRh
c2tUb0xvYWRlcihbdGhpcywgcmVxdWVzdERhdGEsIG9wdGlvbnNDb3B5LCBjb250ZW50U2VjdXJp
dHlQb2xpY3lDb3B5LCBjYXB0dXJlZE91dGdvaW5nUmVmZXJyZXJdKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAg
ICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpOwogCkBA
IC0xMDUsNyArMTEzLDcgQEAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRn
ZTo6TWFpblRocmVhZEJyaWRnZShQYXNzUmVmUHRyPFRocmVhZGFibGUKICAgICAgICAgLy8gRklY
TUU6IElmIHRoZSBhIHNpdGUgcmVxdWVzdHMgYSBsb2NhbCByZXNvdXJjZSwgdGhlbiB0aGlzIHdp
bGwgcmV0dXJuIGEgbm9uLXplcm8gdmFsdWUgYnV0IHRoZSBzeW5jIHBhdGgKICAgICAgICAgLy8g
d2lsbCByZXR1cm4gYSAwIHZhbHVlLiBFaXRoZXIgdGhpcyBzaG91bGQgcmV0dXJuIDAgb3IgdGhl
IG90aGVyIGNvZGUgcGF0aCBzaG91bGQgZG8gYSBjYWxsYmFjayB3aXRoCiAgICAgICAgIC8vIGEg
ZmFpbHVyZS4KLSAgICAgICAgbV9tYWluVGhyZWFkTG9hZGVyID0gRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyOjpjcmVhdGUoZG9jdW1lbnQsICp0aGlzLCAqcmVxdWVzdCwgKm9wdGlvbnMpOworICAg
ICAgICBtX21haW5UaHJlYWRMb2FkZXIgPSBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNyZWF0
ZShkb2N1bWVudCwgKnRoaXMsICpyZXF1ZXN0LCAqb3B0aW9ucywgc3RkOjp1bmlxdWVfcHRyPENv
bnRlbnRTZWN1cml0eVBvbGljeT4oY29udGVudFNlY3VyaXR5UG9saWN5Q29weSkpOwogICAgICAg
ICBBU1NFUlQobV9tYWluVGhyZWFkTG9hZGVyKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oCmluZGV4IDJhOTVlNzRhMzViM2I4
Mzk2ZGE4ZDg3Njk3ZTQzOTkxM2JmYWZjZmMuLjg3ODIwYzUzZTdhNjYxYmRjMGYyMjQzYjk4Yzlm
MmMxNzUyOGJlYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJl
YWRhYmxlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFi
bGVMb2FkZXIuaApAQCAtNDMsNiArNDMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyAg
ICBjbGFzcyBDb250ZW50U2VjdXJpdHlQb2xpY3k7CiAgICAgY2xhc3MgUmVzb3VyY2VFcnJvcjsK
ICAgICBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiAgICAgY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7
CkBAIC05NCw3ICs5NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY2xhc3MgTWFp
blRocmVhZEJyaWRnZSA6IHB1YmxpYyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50IHsKICAgICAgICAg
cHVibGljOgogICAgICAgICAgICAgLy8gQWxsIGV4ZWN1dGVkIG9uIHRoZSB3b3JrZXIgY29udGV4
dCdzIHRocmVhZC4KLSAgICAgICAgICAgIE1haW5UaHJlYWRCcmlkZ2UoUGFzc1JlZlB0cjxUaHJl
YWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4sIFdvcmtlckxvYWRlclByb3h5JiwgY29uc3QgU3Ry
aW5nJiB0YXNrTW9kZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgVGhyZWFkYWJsZUxv
YWRlck9wdGlvbnMmLCBjb25zdCBTdHJpbmcmIG91dGdvaW5nUmVmZXJyZXIpOworICAgICAgICAg
ICAgTWFpblRocmVhZEJyaWRnZShQYXNzUmVmUHRyPFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFw
cGVyPiwgV29ya2VyTG9hZGVyUHJveHkmLCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYsIGNvbnN0IFN0
cmluZyYgb3V0Z29pbmdSZWZlcnJlciwgY29uc3QgU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBDb250
ZW50U2VjdXJpdHlQb2xpY3kqKTsKICAgICAgICAgICAgIHZvaWQgY2FuY2VsKCk7CiAgICAgICAg
ICAgICB2b2lkIGRlc3Ryb3koKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudFNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAppbmRl
eCAyZTYxOWVhYzVkMTZjY2I4M2RmNjY1MTJjZWU3ZDg1NzM4MThkMTA0Li5iOGUyNDEwYmRlMjc0
MDcxMWJmMWM0MDRjYzdjZGViMWY1Njc1YTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNl
LmNwcApAQCAtMTI5LDYgKzEyOSw3IEBAIHZvaWQgRXZlbnRTb3VyY2U6OmNvbm5lY3QoKQogICAg
IG9wdGlvbnMuY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5ID0gVXNlQWNjZXNzQ29udHJvbDsKICAg
ICBvcHRpb25zLnNldERhdGFCdWZmZXJpbmdQb2xpY3koRG9Ob3RCdWZmZXJEYXRhKTsKICAgICBv
cHRpb25zLnNlY3VyaXR5T3JpZ2luID0gb3JpZ2luOworICAgIG9wdGlvbnMuY29udGVudFNlY3Vy
aXR5UG9saWN5RW5mb3JjZW1lbnQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNob3VsZEJ5
cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSgpID8gQ29udGVudFNlY3VyaXR5UG9s
aWN5RW5mb3JjZW1lbnQ6OkRvTm90RW5mb3JjZSA6IENvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9y
Y2VtZW50OjpFbmZvcmNlQ29ubmVjdFNyY0RpcmVjdGl2ZTsKIAogICAgIG1fbG9hZGVyID0gVGhy
ZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgdGhpcywgcmVx
dWVzdCwgb3B0aW9ucyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvQWJz
dHJhY3RXb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5j
cHAKaW5kZXggMzk4ZTc2NDcwM2U4NDliZTliZmVkMjc2ZGU2YWY1YzBmNDVlMzE0MS4uZjU1Mzk2
ZWZiNTBlMjM2MGE1OGE3ZDI5YmNiNjE5NmE2ZTczMjVhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9BYnN0cmFjdFdvcmtlci5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgQWJzdHJhY3RXb3JrZXI6
On5BYnN0cmFjdFdvcmtlcigpCiB7CiB9CiAKLVVSTCBBYnN0cmFjdFdvcmtlcjo6cmVzb2x2ZVVS
TChjb25zdCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYgZWMpCitVUkwgQWJzdHJhY3RXb3Jr
ZXI6OnJlc29sdmVVUkwoY29uc3QgU3RyaW5nJiB1cmwsIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldv
cmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAo
dXJsLmlzRW1wdHkoKSkgewogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CkBAIC02NSw3ICs2NSw3
IEBAIFVSTCBBYnN0cmFjdFdvcmtlcjo6cmVzb2x2ZVVSTChjb25zdCBTdHJpbmcmIHVybCwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiAgICAgLy8gRklYTUU6IEVuZm9yY2UgdGhlIGNoaWxkLXNyYyBkaXJl
Y3RpdmUgaW5zdGVhZCBvZiBzY3JpcHQtc3JjIHBlciA8aHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dl
YmFwcHNlYy1jc3AvMi8jZGlyZWN0aXZlLWNoaWxkLXNyYy13b3JrZXJzPiAoMjkgQXVndXN0IDIw
MTUpLgogICAgIC8vIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1MzU2Mj4uCiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Y29udGVudFNl
Y3VyaXR5UG9saWN5KCkpOwotICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5jb250
ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dTY3JpcHRGcm9tU291cmNlKHNjcmlwdFVSTCwgc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJp
dHlQb2xpY3koKSkpIHsKKyAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Y29udGVu
dFNlY3VyaXR5UG9saWN5KCktPmFsbG93U2NyaXB0RnJvbVNvdXJjZShzY3JpcHRVUkwsIHNob3Vs
ZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSkpIHsKICAgICAgICAgZWMgPSBT
RUNVUklUWV9FUlI7CiAgICAgICAgIHJldHVybiBVUkwoKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL0Fic3RyYWN0V29ya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL0Fic3RyYWN0V29ya2VyLmgKaW5kZXggN2JmNjE3ZmE0YWQzNDhhOTM2OWZiMzI4ZDNk
MTFkY2EyN2FmMDJlZS4uNDFlNTYyZDQ4NDVlNzkxMjY3YTA1OTZiMzQ4MDBkMTdlZTMzZGY3MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuaApAQCAtNTQsNyArNTQsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEFic3RyYWN0V29ya2VyKCkgPSBkZWZhdWx0
OwogCiAgICAgICAgIC8vIEhlbHBlciBmdW5jdGlvbiB0aGF0IGNvbnZlcnRzIGEgVVJMIHRvIGFu
IGFic29sdXRlIFVSTCBhbmQgY2hlY2tzIHRoZSByZXN1bHQgZm9yIHZhbGlkaXR5LgotICAgICAg
ICBVUkwgcmVzb2x2ZVVSTChjb25zdCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYgZWMpOwor
ICAgICAgICBVUkwgcmVzb2x2ZVVSTChjb25zdCBTdHJpbmcmIHVybCwgYm9vbCBzaG91bGRCeXBh
c3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAg
ICAgaW50cHRyX3QgYXNJRCgpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRy
X3Q+KHRoaXMpOyB9CiAKICAgICBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCmlu
ZGV4IGFjNGViNGE5YjY2YjQ2ZjNkMDk5OTA5ZDE2NGM4OWZmYTgwZDJkOTcuLjNjZjZkYzZkMTMw
OGU0NjE2NzkzNWI2MGQ5MTVjMWY2M2MzNTcyNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5j
cHAKQEAgLTgzLDE4ICs4MywxOSBAQCBSZWZQdHI8V29ya2VyPiBXb3JrZXI6OmNyZWF0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHVybAogCiAgICAgd29y
a2VyLT5zdXNwZW5kSWZOZWVkZWQoKTsKIAotICAgIFVSTCBzY3JpcHRVUkwgPSB3b3JrZXItPnJl
c29sdmVVUkwodXJsLCBlYyk7CisgICAgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50
U2VjdXJpdHlQb2xpY3kgPSBjb250ZXh0LnNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1
cml0eVBvbGljeSgpOworICAgIFVSTCBzY3JpcHRVUkwgPSB3b3JrZXItPnJlc29sdmVVUkwodXJs
LCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIGVjKTsKICAgICBp
ZiAoc2NyaXB0VVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICB3
b3JrZXItPm1fc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5ID0gY29u
dGV4dC5zaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koKTsKKyAgICB3
b3JrZXItPm1fc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5ID0gc2hv
dWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5OwogCiAgICAgLy8gVGhlIHdv
cmtlciBjb250ZXh0IGRvZXMgbm90IGV4aXN0IHdoaWxlIGxvYWRpbmcsIHNvIHdlIG11c3QgZW5z
dXJlIHRoYXQgdGhlIHdvcmtlciBvYmplY3QgaXMgbm90IGNvbGxlY3RlZCwgbm9yIGFyZSBpdHMg
ZXZlbnQgbGlzdGVuZXJzLgogICAgIHdvcmtlci0+c2V0UGVuZGluZ0FjdGl2aXR5KHdvcmtlci5w
dHIoKSk7CiAKICAgICB3b3JrZXItPm1fc2NyaXB0TG9hZGVyID0gV29ya2VyU2NyaXB0TG9hZGVy
OjpjcmVhdGUoKTsKLSAgICB3b3JrZXItPm1fc2NyaXB0TG9hZGVyLT5sb2FkQXN5bmNocm9ub3Vz
bHkoJmNvbnRleHQsIHNjcmlwdFVSTCwgRGVueUNyb3NzT3JpZ2luUmVxdWVzdHMsIHdvcmtlci5w
dHIoKSk7Ci0KKyAgICAvLyBGSVhNRTogRW5mb3JjZSBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBj
aGlsZC1zcmMgZGlyZWN0aXZlIHdoZW4gc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3Vy
aXR5UG9saWN5IGlzIGZhbHNlLiBTZWUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTM1NjI+LgorICAgIHdvcmtlci0+bV9zY3JpcHRMb2FkZXItPmxvYWRBc3luY2hy
b25vdXNseSgmY29udGV4dCwgc2NyaXB0VVJMLCBEZW55Q3Jvc3NPcmlnaW5SZXF1ZXN0cywgQ29u
dGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQ6OkRvTm90RW5mb3JjZSwgd29ya2VyLnB0cigp
KTsKICAgICByZXR1cm4gV1RGTW92ZSh3b3JrZXIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IGM0YTJjMGU0MzI4MDI2MjZiMzUzM2I4
YWM0Yzc1OGJmZGUxNjA1ZmUuLjlkNGIzODhjOTA3NDY3MzdhOWE4YWFkMjgzMzZjNzRjMzM1ZjQ5
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBA
IC0xODMsOCArMTgzLDE1IEBAIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OmltcG9ydFNjcmlwdHMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHVybHMsIEV4Y2VwdGlvbkNvZGUmCiAgICAgfQogCiAgICAg
Zm9yIChhdXRvJiB1cmwgOiBjb21wbGV0ZWRVUkxzKSB7CisgICAgICAgIC8vIEZJWE1FOiBDb252
ZXJ0IHRoaXMgdG8gY2hlY2sgdGhlIGlzb2xhdGVkIHdvcmxkJ3MgQ29udGVudCBTZWN1cml0eSBQ
b2xpY3kgb25jZSB3ZWJraXQub3JnL2IvMTA0NTIwIGlzIHNvbHZlZC4KKyAgICAgICAgYm9vbCBz
aG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3kgPSBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPnNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSgp
OworICAgICAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+Y29udGVudFNlY3VyaXR5
UG9saWN5KCktPmFsbG93U2NyaXB0RnJvbVNvdXJjZSh1cmwsIHNob3VsZEJ5cGFzc01haW5Xb3Js
ZENvbnRlbnRTZWN1cml0eVBvbGljeSkpIHsKKyAgICAgICAgICAgIGVjID0gTkVUV09SS19FUlI7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICBSZWY8V29ya2VyU2Ny
aXB0TG9hZGVyPiBzY3JpcHRMb2FkZXIgPSBXb3JrZXJTY3JpcHRMb2FkZXI6OmNyZWF0ZSgpOwot
ICAgICAgICBzY3JpcHRMb2FkZXItPmxvYWRTeW5jaHJvbm91c2x5KHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgdXJsLCBBbGxvd0Nyb3NzT3JpZ2luUmVxdWVzdHMpOworICAgICAgICBzY3JpcHRM
b2FkZXItPmxvYWRTeW5jaHJvbm91c2x5KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgdXJsLCBB
bGxvd0Nyb3NzT3JpZ2luUmVxdWVzdHMsIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1
cml0eVBvbGljeSA/IENvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50OjpEb05vdEVuZm9y
Y2UgOiBDb250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudDo6RW5mb3JjZVNjcmlwdFNyY0Rp
cmVjdGl2ZSk7CiAKICAgICAgICAgLy8gSWYgdGhlIGZldGNoaW5nIGF0dGVtcHQgZmFpbGVkLCB0
aHJvdyBhIE5FVFdPUktfRVJSIGV4Y2VwdGlvbiBhbmQgYWJvcnQgYWxsIHRoZXNlIHN0ZXBzLgog
ICAgICAgICBpZiAoc2NyaXB0TG9hZGVyLT5mYWlsZWQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCmluZGV4IDM3MTk0NjllZmU5NjkwNzI2MTYz
MGU5MDBmYmIxYTAyZDE5OTRkYWUuLmY3MzllMDIxODE4MTRlMDg5NzY0NzExODE0YmYxOGFiNWE0
YTQ3ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5j
cHAKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIldvcmtlclNjcmlwdExvYWRlci5oIgog
CisjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VS
ZXNwb25zZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRl
ICJTZWN1cml0eU9yaWdpbi5oIgpAQCAtNTMsNyArNTQsNyBAQCBXb3JrZXJTY3JpcHRMb2FkZXI6
On5Xb3JrZXJTY3JpcHRMb2FkZXIoKQogewogfQogCi12b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6
bG9hZFN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgY29uc3QgVVJMJiB1cmwsIENyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSBjcm9zc09y
aWdpblJlcXVlc3RQb2xpY3kpCit2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZFN5bmNocm9u
b3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29u
c3QgVVJMJiB1cmwsIENyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSBjcm9zc09yaWdpblJlcXVlc3RQ
b2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50IGNvbnRlbnRTZWN1cml0eVBv
bGljeUVuZm9yY2VtZW50KQogewogICAgIG1fdXJsID0gdXJsOwogCkBAIC02NywxMSArNjgsMTMg
QEAgdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGkKICAgICBvcHRpb25zLnNldEFsbG93Q3JlZGVudGlh
bHMoQWxsb3dTdG9yZWRDcmVkZW50aWFscyk7CiAgICAgb3B0aW9ucy5jcm9zc09yaWdpblJlcXVl
c3RQb2xpY3kgPSBjcm9zc09yaWdpblJlcXVlc3RQb2xpY3k7CiAgICAgb3B0aW9ucy5zZXRTZW5k
TG9hZENhbGxiYWNrcyhTZW5kQ2FsbGJhY2tzKTsKKyAgICBvcHRpb25zLnNlY3VyaXR5T3JpZ2lu
ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKTsKKyAgICBvcHRpb25z
LmNvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50ID0gY29udGVudFNlY3VyaXR5UG9saWN5
RW5mb3JjZW1lbnQ7CiAKICAgICBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihzY3JpcHRFeGVjdXRpb25D
b250ZXh0KSwgKnJlcXVlc3QsICp0aGlzLCBvcHRpb25zKTsKIH0KICAgICAKLXZvaWQgV29ya2Vy
U2NyaXB0TG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgVVJMJiB1cmwsIENyb3NzT3JpZ2luUmVxdWVz
dFBvbGljeSBjcm9zc09yaWdpblJlcXVlc3RQb2xpY3ksIFdvcmtlclNjcmlwdExvYWRlckNsaWVu
dCogY2xpZW50KQordm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRBc3luY2hyb25vdXNseShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBVUkwm
IHVybCwgQ3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5IGNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSwg
Q29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQgY29udGVudFNlY3VyaXR5UG9saWN5RW5m
b3JjZW1lbnQsIFdvcmtlclNjcmlwdExvYWRlckNsaWVudCogY2xpZW50KQogewogICAgIEFTU0VS
VChjbGllbnQpOwogICAgIG1fY2xpZW50ID0gY2xpZW50OwpAQCAtODUsNiArODgsOCBAQCB2b2lk
IFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZEFzeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dAogICAgIG9wdGlvbnMuc2V0QWxsb3dDcmVkZW50aWFscyhBbGxv
d1N0b3JlZENyZWRlbnRpYWxzKTsKICAgICBvcHRpb25zLmNyb3NzT3JpZ2luUmVxdWVzdFBvbGlj
eSA9IGNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeTsKICAgICBvcHRpb25zLnNldFNlbmRMb2FkQ2Fs
bGJhY2tzKFNlbmRDYWxsYmFja3MpOworICAgIG9wdGlvbnMuc2VjdXJpdHlPcmlnaW4gPSBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5zZWN1cml0eU9yaWdpbigpOworICAgIG9wdGlvbnMuY29udGVu
dFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQgPSBjb250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNl
bWVudDsKIAogICAgIC8vIER1cmluZyBjcmVhdGUsIGNhbGxiYWNrcyBtYXkgaGFwcGVuIHdoaWNo
IHJlbW92ZSB0aGUgbGFzdCByZWZlcmVuY2UgdG8gdGhpcyBvYmplY3QuCiAgICAgUmVmPFdvcmtl
clNjcmlwdExvYWRlcj4gcHJvdGVjdCgqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJTY3JpcHRMb2FkZXIuaAppbmRleCA5ZTY5MTdjZTJlOGYzMzk3ODk2NjgyOTBlNTk0NDJl
MmU3ZjZkNWY3Li44NWViM2Y5NTFmMjFjZGY5ZWZmMDk5NjU0MGY3NTkxYjk3YzQ4YmM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgKQEAgLTU0LDggKzU0
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgV29ya2VyU2NyaXB0TG9hZGVyKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgbG9hZFN5
bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFVSTCYsIENyb3NzT3Jp
Z2luUmVxdWVzdFBvbGljeSk7Ci0gICAgICAgIHZvaWQgbG9hZEFzeW5jaHJvbm91c2x5KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBVUkwmLCBDcm9zc09yaWdpblJlcXVlc3RQb2xpY3ks
IFdvcmtlclNjcmlwdExvYWRlckNsaWVudCopOworICAgICAgICB2b2lkIGxvYWRTeW5jaHJvbm91
c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBVUkwmLCBDcm9zc09yaWdpblJlcXVl
c3RQb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50KTsKKyAgICAgICAgdm9p
ZCBsb2FkQXN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFVSTCYs
IENyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1l
bnQsIFdvcmtlclNjcmlwdExvYWRlckNsaWVudCopOwogCiAgICAgICAgIHZvaWQgbm90aWZ5RXJy
b3IoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggMzRhYWU4MjQ1
YmVlYjU0N2VjMzA4ZGJmYzM3MDE4OGY2ZDBjNTAwNy4uNGExOGMwYjEwZjZjNGEwN2VkYTc1ZDJi
Y2Q0ZjUzOWFmZTY4ZDMzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBS
ZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBA
IC03NTUsNiArNzU1LDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVxdWVzdChFeGNl
cHRpb25Db2RlJiBlYykKICAgICBvcHRpb25zLnNldENyZWRlbnRpYWxSZXF1ZXN0KG1faW5jbHVk
ZUNyZWRlbnRpYWxzID8gQ2xpZW50UmVxdWVzdGVkQ3JlZGVudGlhbHMgOiBDbGllbnREaWROb3RS
ZXF1ZXN0Q3JlZGVudGlhbHMpOwogICAgIG9wdGlvbnMuY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5
ID0gVXNlQWNjZXNzQ29udHJvbDsKICAgICBvcHRpb25zLnNlY3VyaXR5T3JpZ2luID0gc2VjdXJp
dHlPcmlnaW4oKTsKKyAgICBvcHRpb25zLmNvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50
ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50
U2VjdXJpdHlQb2xpY3koKSA/IENvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50OjpEb05v
dEVuZm9yY2UgOiBDb250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudDo6RW5mb3JjZUNvbm5l
Y3RTcmNEaXJlY3RpdmU7CiAgICAgb3B0aW9ucy5pbml0aWF0b3IgPSBjYWNoZWRSZXNvdXJjZVJl
cXVlc3RJbml0aWF0b3JzKCkueG1saHR0cHJlcXVlc3Q7CiAKICAgICBpZiAobV90aW1lb3V0TWls
bGlzZWNvbmRzKSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggNmI2ZDlhODk3NTJjNjk2OTBkMDYwMDMxMjJmODU2ZmNhOGM3
MjI1MC4uNGNhOWE3YzRhYmFkZWJkNjA1NDA3OGFlYWQ5ZTEyMWFiOWJlMTY2ZCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSw1ICsxLDU1IEBACiAyMDE2LTAyLTA3ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNv
bT4KIAorICAgICAgICBDU1AgY29ubmVjdC1zcmMgZGlyZWN0aXZlIHNob3VsZCBibG9jayByZWRp
cmVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5
MzU5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNDM4MzAyNT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgbW9yZSB0ZXN0cywgdXBkYXRlIGVy
cm9uZW91cyBleHBlY3RlZCByZXN1bHRzLCBhbmQgcmVtb3ZlIHNvbWUgZW50cmllcyBmcm9tIFRl
c3RFeHBlY3RhdGlvbnMgZm9yIHRlc3RzCisgICAgICAgIHRoYXQgbm93IHBhc3MuCisKKyAgICAg
ICAgKiBUZXN0RXhwZWN0YXRpb25zOiBSZW1vdmUgZW50cmllcyBmb3IgdGVzdHMgdGhhdCBub3cg
cGFzcy4gVGhlIGZhaWx1cmUgb2YgdGVzdCBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1
cml0eVBvbGljeS93b3JrZXItaW1wb3J0c2NyaXB0cy1ibG9ja2VkLmh0bWwKKyAgICAgICAgd2Fz
IGVycm9uZW91c2x5IGF0dHJpYnV0ZWQgdG8gPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTM1NjI+LgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVu
dFNlY3VyaXR5UG9saWN5L3Jlc291cmNlcy9kZXRlcm1pbmUtY29udGVudC1zZWN1cml0eS1wb2xp
Y3ktaGVhZGVyLnBocDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jb250
ZW50U2VjdXJpdHlQb2xpY3kvcmVzb3VyY2VzL3NjcmlwdC1zZXQtdmFsdWUuanM6IFVzZSBnbG9i
YWwgdmFyaWFibGUgc2VsZiBpbnN0ZWFkIG9mIHdpbmRvdyBzbyBhcyB0bworICAgICAgICBtYWtl
IHRoaXMgc2NyaXB0IHdvcmsgYm90aCBmcm9tIGEgRG9jdW1lbnQgYW5kIGEgV2ViIFdvcmtlci4g
SW4gYSBkb2N1bWVudCwgc2VsZiByZWZlcnMgdG8gdGhlIFdpbmRvdyBvYmplY3QgYW5kIGluIGEg
d29ya2VyCisgICAgICAgIGl0IHJlZmVycyB0byB0aGUgV29ya2VyR2xvYmFsU2NvcGUgb2JqZWN0
LgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3Jl
c291cmNlcy93b3JrZXItaW1wb3J0U2NyaXB0LXJlZGlyZWN0LWNyb3NzLW9yaWdpbi1hbGxvd2Vk
LnBocDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJp
dHlQb2xpY3kvcmVzb3VyY2VzL3dvcmtlci1pbXBvcnRTY3JpcHQtcmVkaXJlY3QtY3Jvc3Mtb3Jp
Z2luLWJsb2NrZWQucGhwOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nv
bnRlbnRTZWN1cml0eVBvbGljeS9yZXNvdXJjZXMvd29ya2VyLXhoci1hbGxvd2VkLnBocDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kv
cmVzb3VyY2VzL3dvcmtlci14aHItcmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLWFsbG93ZWQucGhwOiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGlj
eS9yZXNvdXJjZXMvd29ya2VyLXhoci1yZWRpcmVjdC1jcm9zcy1vcmlnaW4tYmxvY2tlZC5waHA6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9s
aWN5L3dvcmtlci1ibG9iLWluaGVyaXRzLWNzcC1leHBlY3RlZC50eHQ6IFJlbW92ZSBCbGluay1z
cGVjaWZpYyBtZXNzYWdlcyBzbyB0aGF0IHRoZSB0ZXN0IHBhc3Nlcy4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS93b3JrZXItYmxvYi1pbmhlcml0
cy1jc3AtaW1wb3J0U2NyaXB0cy1ibG9jay1hYm9ydHMtYWxsLXN1YnNlcXVlbnQtaW1wb3J0cy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVu
dFNlY3VyaXR5UG9saWN5L3dvcmtlci1ibG9iLWluaGVyaXRzLWNzcC1pbXBvcnRTY3JpcHRzLWJs
b2NrLWFib3J0cy1hbGwtc3Vic2VxdWVudC1pbXBvcnRzLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3dvcmtlci1ibG9iLWlu
aGVyaXRzLWNzcC1pbXBvcnRTY3JpcHRzLXJlZGlyZWN0LWNyb3NzLW9yaWdpbi1ibG9ja2VkLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50
U2VjdXJpdHlQb2xpY3kvd29ya2VyLWJsb2ItaW5oZXJpdHMtY3NwLWltcG9ydFNjcmlwdHMtcmVk
aXJlY3QtY3Jvc3Mtb3JpZ2luLWJsb2NrZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvd29ya2VyLWNzcC1ibG9ja3MteGhy
LXJlZGlyZWN0LWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3dvcmtlci1jc3AtYmxvY2tz
LXhoci1yZWRpcmVjdC1jcm9zcy1vcmlnaW4uaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvd29ya2VyLWNzcC1pbXBvcnRTY3Jp
cHRzLXJlZGlyZWN0LWNyb3NzLW9yaWdpbi1hbGxvd2VkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvd29ya2Vy
LWNzcC1pbXBvcnRTY3JpcHRzLXJlZGlyZWN0LWNyb3NzLW9yaWdpbi1hbGxvd2VkLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5
L3dvcmtlci1jc3AtaW1wb3J0U2NyaXB0cy1yZWRpcmVjdC1jcm9zcy1vcmlnaW4tYmxvY2tlZC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVu
dFNlY3VyaXR5UG9saWN5L3dvcmtlci1jc3AtaW1wb3J0U2NyaXB0cy1yZWRpcmVjdC1jcm9zcy1v
cmlnaW4tYmxvY2tlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5
L2NvbnRlbnRTZWN1cml0eVBvbGljeS93b3JrZXItaW1wb3J0c2NyaXB0cy1ibG9ja2VkLWV4cGVj
dGVkLnR4dDogU3Vic3RpdHV0ZSBCbGluay1zcGVjaWZpYyBlcnJvciB0ZXh0IHdpdGggdGhlIGFu
YWxvZ291cyBXZWJLaXQgZXJyb3IgdGV4dC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5
L2NvbnRlbnRTZWN1cml0eVBvbGljeS93b3JrZXItaW1wb3J0c2NyaXB0cy1ibG9ja2VkLmh0bWw6
IERpdHRvLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9s
aWN5L3dvcmtlci13aXRob3V0LWNzcC1pbXBvcnRTY3JpcHRzLXJlZGlyZWN0LWNyb3NzLW9yaWdp
bi1hbGxvd2VkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1
cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvd29ya2VyLXdpdGhvdXQtY3NwLWltcG9ydFNjcmlw
dHMtcmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLWFsbG93ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2J5cGFzcy1tYWluLXdvcmxkLWNzcC1m
b3IteGhyLXJlZGlyZWN0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2J5cGFzcy1tYWluLXdvcmxkLWNzcC1mb3IteGhyLXJl
ZGlyZWN0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0
ZWRXb3JsZC9ieXBhc3MtbWFpbi13b3JsZC1jc3Atd29ya2VyLWJsb2ItaW1wb3J0U2NyaXB0LXJl
ZGlyZWN0LWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9ieXBhc3MtbWFpbi13b3JsZC1jc3Atd29ya2Vy
LWJsb2ItaW1wb3J0U2NyaXB0LXJlZGlyZWN0LWNyb3NzLW9yaWdpbi5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvYnlwYXNzLW1haW4td29y
bGQtY3NwLXdvcmtlci1ibG9iLWltcG9ydFNjcmlwdHMtcmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRl
ZFdvcmxkL2J5cGFzcy1tYWluLXdvcmxkLWNzcC13b3JrZXItaW1wb3J0U2NyaXB0LXJlZGlyZWN0
LWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
c2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9ieXBhc3MtbWFpbi13b3JsZC1jc3Atd29ya2VyLWltcG9y
dFNjcmlwdHMtcmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2J5cGFzcy1tYWluLXdvcmxk
LWNzcC13b3JrZXItaW1wb3J0U2NyaXB0cy1yZWRpcmVjdC1jcm9zcy1vcmlnaW4uaHRtbDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2J5cGFzcy13
b3JrZXItY3NwLWZvci14aHItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvYnlwYXNzLXdvcmtlci1jc3AtZm9yLXhoci1yZWRp
cmVjdC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvYnlwYXNzLXdvcmtlci1jc3AtZm9yLXhoci1yZWRp
cmVjdC1jcm9zcy1vcmlnaW4uaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1
cml0eS9pc29sYXRlZFdvcmxkL2J5cGFzcy13b3JrZXItY3NwLWZvci14aHIuaHRtbDogQWRkZWQu
CisKKzIwMTYtMDItMDcgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCiAgICAg
ICAgIENTUDogQWxsb3cgV2ViIFdvcmtlcnMgaW5pdGlhdGVkIGZyb20gYW4gaXNvbGF0ZWQgd29y
bGQgdG8gYnlwYXNzIHRoZSBtYWluIHdvcmxkIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5CiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTM2MjIKICAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzI0NDAwMDIzPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVz
dEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMzE5NjQ0
NTMzYjgyMjY0NjczMDkzMDg2ZWZhNDQ5YjZlNmVlY2M5NS4uMjkyNmZjN2Y2NjI5YmRmYjVmZTMz
NWY4NjJkNWE3MDY1Y2U3OTM0ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0
aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCkBAIC03OTgsOSArNzk4LDYg
QEAgd2Via2l0Lm9yZy9iLzE1MTk0OSBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9w
aXBlLXRvLmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi81MjE4NSBmYXN0L2Nzcy92ZXJ0
aWNhbC1hbGlnbi1iYXNlbGluZS1yb3dzcGFuLTAxMC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
CiAKICMgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZmFpbHVyZXMKLXdlYmtpdC5vcmcvYi82OTM1
OSBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9jb25uZWN0LXNyYy1l
dmVudHNvdXJjZS1yZWRpcmVjdC10by1ibG9ja2VkLmh0bWwgWyBGYWlsdXJlIF0KLXdlYmtpdC5v
cmcvYi82OTM1OSBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9jb25u
ZWN0LXNyYy14bWxodHRwcmVxdWVzdC1yZWRpcmVjdC10by1ibG9ja2VkLmh0bWwgWyBGYWlsdXJl
IF0KLXdlYmtpdC5vcmcvYi82OTM1OSBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0
eVBvbGljeS93b3JrZXItYmxvYi1pbmhlcml0cy1jc3AuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0
Lm9yZy9iLzExMTg2OSBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9l
dmFsLWJsb2NrZWQtYW5kLXNlbmRzLXJlcG9ydC5odG1sCiB3ZWJraXQub3JnL2IvMTE1NzAwIGh0
dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2lubGluZS1ldmVudC1oYW5k
bGVyLWJsb2NrZWQtYWZ0ZXItaW5qZWN0aW5nLW1ldGEuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0
Lm9yZy9iLzExNTcwMiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9y
ZXBvcnQtY3Jvc3Mtb3JpZ2luLW5vLWNvb2tpZXMuaHRtbCBbIEZhaWx1cmUgXQpAQCAtODM5LDcg
KzgzNiw2IEBAIHdlYmtpdC5vcmcvYi8xNTMxNjYgd2Via2l0Lm9yZy9iLzE1MzI0MiBodHRwL3Rl
c3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljCiB3ZWJraXQub3JnL2IvMTUzMTY3IGh0
dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3NhbmRib3gtcmVwb3J0LW9u
bHkuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzE1MzE2OCBodHRwL3Rlc3RzL3NlY3Vy
aXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9zb3VyY2UtbGlzdC1wYXJzaW5nLTA3Lmh0bWwgWyBG
YWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xNTMxNzAgaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50
U2VjdXJpdHlQb2xpY3kvc291cmNlLWxpc3QtcGFyc2luZy1wYXRocy0wMy5odG1sIFsgRmFpbHVy
ZSBdCi13ZWJraXQub3JnL2IvMTUzNTYyIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3Vy
aXR5UG9saWN5L3dvcmtlci1pbXBvcnRzY3JpcHRzLWJsb2NrZWQuaHRtbCBbIEZhaWx1cmUgXQog
d2Via2l0Lm9yZy9iLzE1MzU2MiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBv
bGljeS93b3JrZXItc2NyaXB0LXNyYy5odG1sIFsgRmFpbHVyZSBdCiBodHRwL3Rlc3RzL3NlY3Vy
aXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9zY3JpcHQtc3JjLWJsb2NrZWQtZXJyb3ItZXZlbnQu
aHRtbCBbIFBhc3MgRmFpbHVyZSBdCiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0
eVBvbGljeS8xLjEvZnJhbWUtYW5jZXN0b3JzL2ZyYW1lLWFuY2VzdG9ycy1vdmVycmlkZXMteGZv
Lmh0bWwgIyBOZWVkcyBleHBlY3RlZCBmaWxlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcmVzb3VyY2VzL2RldGVybWlu
ZS1jb250ZW50LXNlY3VyaXR5LXBvbGljeS1oZWFkZXIucGhwIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcmVzb3VyY2VzL2RldGVybWluZS1j
b250ZW50LXNlY3VyaXR5LXBvbGljeS1oZWFkZXIucGhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4MDE5M2ExY2Ux
YTAzY2Q5N2VmMzM4N2RlNDk5ZTM0ZDRiZmM0YWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9yZXNvdXJjZXMv
ZGV0ZXJtaW5lLWNvbnRlbnQtc2VjdXJpdHktcG9saWN5LWhlYWRlci5waHAKQEAgLTAsMCArMSwx
MyBAQAorPD9waHAKKyAgICBoZWFkZXIoIkV4cGlyZXM6IFRodSwgMDEgRGVjIDIwMDMgMTY6MDA6
MDAgR01UIik7CisgICAgaGVhZGVyKCJDYWNoZS1Db250cm9sOiBuby1jYWNoZSwgbXVzdC1yZXZh
bGlkYXRlIik7CisgICAgaGVhZGVyKCJQcmFnbWE6IG5vLWNhY2hlIik7CisgICAgaWYgKCRfR0VU
WyJjc3AiXSkgeworICAgICAgICAkY29udGVudFNlY3VyaXR5UG9saWN5ID0gJF9HRVRbImNzcCJd
OworICAgICAgICAvLyBJZiB0aGUgbWFnaWMgcXVvdGVzIG9wdGlvbiBpcyBlbmFibGVkLCB0aGUg
Q1NQIGNvdWxkIGJlIGVzY2FwZWQgYW5kCisgICAgICAgIC8vIHRoZSB0ZXN0IHdvdWxkIGZhaWwu
CisgICAgICAgIGlmIChnZXRfbWFnaWNfcXVvdGVzX2dwYygpKQorICAgICAgICAgICAgJGNvbnRl
bnRTZWN1cml0eVBvbGljeSA9IHN0cmlwc2xhc2hlcygkY29udGVudFNlY3VyaXR5UG9saWN5KTsK
KyAgICAgICAgaGVhZGVyKCJDb250ZW50LVNlY3VyaXR5LVBvbGljeTogIiAuICRjb250ZW50U2Vj
dXJpdHlQb2xpY3kpOworICAgIH0KKz8+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9yZXNvdXJjZXMvc2NyaXB0LXNldC12
YWx1ZS5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5
UG9saWN5L3Jlc291cmNlcy9zY3JpcHQtc2V0LXZhbHVlLmpzCmluZGV4IDUyOGQyMjBlOGQyNzg4
NjE5ZmM4YTZmNjVjM2QyZWY0MzQyNDBiMWUuLjNhMmZiYWJhMmQwNmFhOTk5MTJlOGQyMTZlMzQz
ODQzZjk3OWVjYmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
Y29udGVudFNlY3VyaXR5UG9saWN5L3Jlc291cmNlcy9zY3JpcHQtc2V0LXZhbHVlLmpzCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3Jl
c291cmNlcy9zY3JpcHQtc2V0LXZhbHVlLmpzCkBAIC0xICsxIEBACi13aW5kb3cucmVzdWx0ID0g
dHJ1ZTsKK3NlbGYucmVzdWx0ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3Jlc291cmNlcy93b3JrZXItaW1w
b3J0U2NyaXB0LXJlZGlyZWN0LWNyb3NzLW9yaWdpbi1hbGxvd2VkLnBocCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3Jlc291cmNlcy93b3Jr
ZXItaW1wb3J0U2NyaXB0LXJlZGlyZWN0LWNyb3NzLW9yaWdpbi1hbGxvd2VkLnBocApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mMTQ2N2RkNmUyZGNiM2ZjZDUxNzFmMTA3ZjhkYzlhZTkzYTQ3OTUzCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQ
b2xpY3kvcmVzb3VyY2VzL3dvcmtlci1pbXBvcnRTY3JpcHQtcmVkaXJlY3QtY3Jvc3Mtb3JpZ2lu
LWFsbG93ZWQucGhwCkBAIC0wLDAgKzEsMTggQEAKKzw/cGhwCisgICAgcmVxdWlyZSAiZGV0ZXJt
aW5lLWNvbnRlbnQtc2VjdXJpdHktcG9saWN5LWhlYWRlci5waHAiOworPz4KK3NlbGYucmVzdWx0
ID0gZmFsc2U7Cit2YXIgZXhjZXB0aW9uOwordHJ5IHsKKyAgICBpbXBvcnRTY3JpcHRzKCJodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3Jlc291cmNl
cy9yZWRpci5waHA/dXJsPWh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9jb250ZW50U2Vj
dXJpdHlQb2xpY3kvcmVzb3VyY2VzL3NjcmlwdC1zZXQtdmFsdWUuanMiKTsKK30gY2F0Y2ggKGUp
IHsKKyAgICBleGNlcHRpb24gPSBlOworfQoraWYgKGV4Y2VwdGlvbikKKyAgICBzZWxmLnBvc3RN
ZXNzYWdlKCJGQUlMIHNob3VsZCBub3QgaGF2ZSB0aHJvd24gYW4gZXhjZXB0aW9uLiBUaHJldyBl
eGNlcHRpb24gIiArIGV4Y2VwdGlvbiArICIuIik7CitlbHNlIHsKKyAgICBpZiAoc2VsZi5yZXN1
bHQpCisgICAgICAgIHNlbGYucG9zdE1lc3NhZ2UoIlBBU1MgZGlkIGltcG9ydCBzY3JpcHQgZnJv
bSBkaWZmZXJlbnQgb3JpZ2luLiIpOworICAgIGVsc2UKKyAgICAgICAgc2VsZi5wb3N0TWVzc2Fn
ZSgiRkFJTCBkaWQgbm90IGltcG9ydCBzY3JpcHQgZnJvbSBkaWZmZXJlbnQgb3JpZ2luLiIpOwor
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2Vj
dXJpdHlQb2xpY3kvcmVzb3VyY2VzL3dvcmtlci1pbXBvcnRTY3JpcHQtcmVkaXJlY3QtY3Jvc3Mt
b3JpZ2luLWJsb2NrZWQucGhwIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250
ZW50U2VjdXJpdHlQb2xpY3kvcmVzb3VyY2VzL3dvcmtlci1pbXBvcnRTY3JpcHQtcmVkaXJlY3Qt
Y3Jvc3Mtb3JpZ2luLWJsb2NrZWQucGhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjMzQ1ZmE4MjU1YTMyOWFiYzI0
M2U1MjAyN2FmYzhiMGM4NDQxMzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9yZXNvdXJjZXMvd29ya2VyLWlt
cG9ydFNjcmlwdC1yZWRpcmVjdC1jcm9zcy1vcmlnaW4tYmxvY2tlZC5waHAKQEAgLTAsMCArMSwx
OCBAQAorPD9waHAKKyAgICByZXF1aXJlICJkZXRlcm1pbmUtY29udGVudC1zZWN1cml0eS1wb2xp
Y3ktaGVhZGVyLnBocCI7Cis/PgordmFyIGV4Y2VwdGlvbjsKK3RyeSB7CisgICAgaW1wb3J0U2Ny
aXB0cygiaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGlj
eS9yZXNvdXJjZXMvcmVkaXIucGhwP3VybD1odHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkv
Y29udGVudFNlY3VyaXR5UG9saWN5L3Jlc291cmNlcy9zY3JpcHQtc2V0LXZhbHVlLmpzIik7Cit9
IGNhdGNoIChlKSB7CisgICAgZXhjZXB0aW9uID0gZTsKK30KK3ZhciBleHBlY3RlZEV4Y2VwdGlv
bkNvZGUgPSAxOTsgLy8gRE9NRXhjZXB0aW9uLk5FVFdPUktfRVJSCitpZiAoIWV4Y2VwdGlvbikK
KyAgICBzZWxmLnBvc3RNZXNzYWdlKCJGQUlMIHNob3VsZCB0aHJvdyAiICsgZXhwZWN0ZWRFeGNl
cHRpb25Db2RlICsgIi4gQnV0IGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uLiIpOworZWxzZSB7
CisgICAgaWYgKGV4Y2VwdGlvbi5jb2RlID09PSBleHBlY3RlZEV4Y2VwdGlvbkNvZGUpCisgICAg
ICAgIHNlbGYucG9zdE1lc3NhZ2UoIlBBU1MgdGhyZXcgZXhjZXB0aW9uICIgKyBleGNlcHRpb24g
KyAiLiIpOworICAgIGVsc2UKKyAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSgiRkFJTCBzaG91bGQg
dGhyb3cgIiArIGV4cGVjdGVkRXhjZXB0aW9uQ29kZSArICIuIFRocmV3IGV4Y2VwdGlvbiAiICsg
ZXhjZXB0aW9uICsgIi4iKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3Jlc291cmNlcy93b3JrZXIteGhyLWFsbG93
ZWQucGhwIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQ
b2xpY3kvcmVzb3VyY2VzL3dvcmtlci14aHItYWxsb3dlZC5waHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjE2YTY2
YjlmODZiNjViMmNmY2Q2NjZkNGUyYjFjZjM4ZWQ4MTZmOAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3Jlc291
cmNlcy93b3JrZXIteGhyLWFsbG93ZWQucGhwCkBAIC0wLDAgKzEsMTIgQEAKKzw/cGhwCisgICAg
cmVxdWlyZSAiZGV0ZXJtaW5lLWNvbnRlbnQtc2VjdXJpdHktcG9saWN5LWhlYWRlci5waHAiOwor
Pz4KK3ZhciBpc0FzeW5jaHJvbm91cyA9IGZhbHNlOwordmFyIHhociA9IG5ldyBYTUxIdHRwUmVx
dWVzdDsKK3RyeSB7CisgICAgeGhyLm9wZW4oIkdFVCIsICJodHRwOi8vMTI3LjAuMC4xOjgwMDAv
eG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2dldC50eHQiLCBpc0FzeW5jaHJvbm91cyk7CisgICAg
eGhyLnNlbmQoKTsKKyAgICBzZWxmLnBvc3RNZXNzYWdlKHhoci5yZXNwb25zZSk7Cit9IGNhdGNo
IChleGNlcHRpb24pIHsKKyAgICBzZWxmLnBvc3RNZXNzYWdlKCJGQUlMIHNob3VsZCBub3QgaGF2
ZSB0aHJvd24gYW4gZXhjZXB0aW9uLiBUaHJldyBleGNlcHRpb24gIiArIGV4Y2VwdGlvbiArICIu
Iik7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRl
bnRTZWN1cml0eVBvbGljeS9yZXNvdXJjZXMvd29ya2VyLXhoci1yZWRpcmVjdC1jcm9zcy1vcmln
aW4tYWxsb3dlZC5waHAgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRT
ZWN1cml0eVBvbGljeS9yZXNvdXJjZXMvd29ya2VyLXhoci1yZWRpcmVjdC1jcm9zcy1vcmlnaW4t
YWxsb3dlZC5waHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTQ0MzVjODQ0NzZhODFmZWRiY2E0N2Q0ZjllNDQ1N2Y3
YjMxNTE3YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvY29udGVudFNlY3VyaXR5UG9saWN5L3Jlc291cmNlcy93b3JrZXIteGhyLXJlZGlyZWN0LWNy
b3NzLW9yaWdpbi1hbGxvd2VkLnBocApAQCAtMCwwICsxLDEyIEBACis8P3BocAorICAgIHJlcXVp
cmUgImRldGVybWluZS1jb250ZW50LXNlY3VyaXR5LXBvbGljeS1oZWFkZXIucGhwIjsKKz8+Cit2
YXIgaXNBc3luY2hyb25vdXMgPSBmYWxzZTsKK3ZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3Q7
Cit0cnkgeworICAgIHhoci5vcGVuKCJHRVQiLCAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3Vy
aXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9yZXNvdXJjZXMvcmVkaXIucGhwP3VybD1odHRwOi8v
bG9jYWxob3N0OjgwMDAveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLWJh
c2ljLWFsbG93LmNnaSIsIGlzQXN5bmNocm9ub3VzKTsKKyAgICB4aHIuc2VuZCgpOworICAgIHNl
bGYucG9zdE1lc3NhZ2UoeGhyLnJlc3BvbnNlKTsKK30gY2F0Y2ggKGV4Y2VwdGlvbikgeworICAg
IHNlbGYucG9zdE1lc3NhZ2UoIkZBSUwgc2hvdWxkIG5vdCBoYXZlIHRocm93biBhbiBleGNlcHRp
b24uIFRocmV3IGV4Y2VwdGlvbiAiICsgZXhjZXB0aW9uICsgIi4iKTsKK30KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3Jl
c291cmNlcy93b3JrZXIteGhyLXJlZGlyZWN0LWNyb3NzLW9yaWdpbi1ibG9ja2VkLnBocCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3Jlc291
cmNlcy93b3JrZXIteGhyLXJlZGlyZWN0LWNyb3NzLW9yaWdpbi1ibG9ja2VkLnBocApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lODUyOTdmZWNjNTYxZjg0OGE4M2UxMWEzMzExMTgxNGJiOTI5YjlhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQ
b2xpY3kvcmVzb3VyY2VzL3dvcmtlci14aHItcmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLWJsb2NrZWQu
cGhwCkBAIC0wLDAgKzEsMTYgQEAKKzw/cGhwCisgICAgcmVxdWlyZSAiZGV0ZXJtaW5lLWNvbnRl
bnQtc2VjdXJpdHktcG9saWN5LWhlYWRlci5waHAiOworPz4KK3ZhciBleHBlY3RlZEV4Y2VwdGlv
bkNvZGUgPSAxOTsgLy8gRE9NRXhjZXB0aW9uLk5FVFdPUktfRVJSCit2YXIgaXNBc3luY2hyb25v
dXMgPSBmYWxzZTsKK3ZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3Q7Cit0cnkgeworICAgIHho
ci5vcGVuKCJHRVQiLCAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L2NvbnRlbnRTZWN1
cml0eVBvbGljeS9yZXNvdXJjZXMvcmVkaXIucGhwP3VybD1odHRwOi8vbG9jYWxob3N0OjgwMDAv
eG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2FjY2Vzcy1jb250cm9sLWJhc2ljLWFsbG93LmNnaSIs
IGlzQXN5bmNocm9ub3VzKTsKKyAgICB4aHIuc2VuZCgpOworICAgIHNlbGYucG9zdE1lc3NhZ2Uo
IkZBSUwgc2hvdWxkIHRocm93ICIgKyBleHBlY3RlZEV4Y2VwdGlvbkNvZGUgKyAiLiBCdXQgZGlk
IG5vdCB0aHJvdyBhbiBleGNlcHRpb24uIik7Cit9IGNhdGNoIChleGNlcHRpb24pIHsKKyAgICBp
ZiAoZXhjZXB0aW9uLmNvZGUgPT09IGV4cGVjdGVkRXhjZXB0aW9uQ29kZSkKKyAgICAgICAgc2Vs
Zi5wb3N0TWVzc2FnZSgiUEFTUyB0aHJldyBleGNlcHRpb24gIiArIGV4Y2VwdGlvbiArICIuIik7
CisgICAgZWxzZQorICAgICAgICBzZWxmLnBvc3RNZXNzYWdlKCJGQUlMIHNob3VsZCB0aHJvdyAi
ICsgZXhwZWN0ZWRFeGNlcHRpb25Db2RlICsgIi4gVGhyZXcgZXhjZXB0aW9uICIgKyBleGNlcHRp
b24gKyAiLiIpOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvd29ya2VyLWJsb2ItaW5oZXJpdHMtY3NwLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9s
aWN5L3dvcmtlci1ibG9iLWluaGVyaXRzLWNzcC1leHBlY3RlZC50eHQKaW5kZXggODA5NDJkOTkz
Njk3YzhhZTU1ZWUyZWQ5MWUwNjJmYzgzMTMzMDZjMy4uY2Y1ODc4OGUwNzkyZDNjMTkzYTUyYTgw
MjFkYTdmOTdkYWFkZmI3ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvd29ya2VyLWJsb2ItaW5oZXJpdHMtY3NwLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1
cml0eVBvbGljeS93b3JrZXItYmxvYi1pbmhlcml0cy1jc3AtZXhwZWN0ZWQudHh0CkBAIC0xLDYg
KzEsNSBAQAogQ09OU09MRSBNRVNTQUdFOiBSZWZ1c2VkIHRvIGxvYWQgdGhlIHNjcmlwdCAnaHR0
cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9yZXNvdXJj
ZXMvcG9zdC1tZXNzYWdlLmpzJyBiZWNhdXNlIGl0IHZpb2xhdGVzIHRoZSBmb2xsb3dpbmcgQ29u
dGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAic2NyaXB0LXNyYyAndW5zYWZlLWlubGlu
ZScgaHR0cDovLzEyNy4wLjAuMTo4MDAwIi4KIAotVGhpcyBpcyBhIHRlc3RoYXJuZXNzLmpzLWJh
c2VkIHRlc3QuCisKIFBBU1MgQmxvYiB3b3JrZXIgaW5oZXJpdHMgQ1NQIAotSGFybmVzczogdGhl
IHRlc3QgcmFuIHRvIGNvbXBsZXRpb24uCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3dvcmtlci1ibG9iLWluaGVyaXRz
LWNzcC1pbXBvcnRTY3JpcHRzLWJsb2NrLWFib3J0cy1hbGwtc3Vic2VxdWVudC1pbXBvcnRzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3Vy
aXR5UG9saWN5L3dvcmtlci1ibG9iLWluaGVyaXRzLWNzcC1pbXBvcnRTY3JpcHRzLWJsb2NrLWFi
b3J0cy1hbGwtc3Vic2VxdWVudC1pbXBvcnRzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZGEx
MTI5NjkwZTZmODQwZjhkMmFlYWQxNGQ2ODA5NDA4MGFkMjYzCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvd29y
a2VyLWJsb2ItaW5oZXJpdHMtY3NwLWltcG9ydFNjcmlwdHMtYmxvY2stYWJvcnRzLWFsbC1zdWJz
ZXF1ZW50LWltcG9ydHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorQ09OU09MRSBNRVNT
QUdFOiBSZWZ1c2VkIHRvIGxvYWQgdGhlIHNjcmlwdCAnaHR0cDovL2xvY2FsaG9zdDo4MDAwL3dv
cmtlcnMvcmVzb3VyY2VzL3dvcmtlci1pbXBvcnRTY3JpcHRzLXNvdXJjZTEuanMnIGJlY2F1c2Ug
aXQgdmlvbGF0ZXMgdGhlIGZvbGxvd2luZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3Rp
dmU6ICJzY3JpcHQtc3JjICdzZWxmJyAndW5zYWZlLWlubGluZSciLgorCitUaGlzIHRlc3RzIHRo
YXQgd2hlbiBjYWxsaW5nIFdvcmtlckdsb2JhbFNjb3BlLmltcG9ydFNjcmlwdHMoKSB3aWxsIHR3
byBzY3JpcHQgVVJMcyB0aGF0IHRoZSBzZWNvbmQgc2NyaXB0IGlzIG5vdCBsb2FkZWQgaWYgdGhl
IGZpcnN0IHNjcmlwdCBVUkwgd2FzIGJsb2NrZWQgYnkgdGhlIENvbnRlbnQgU2VjdXJpdHkgUG9s
aWN5IG9mIHRoZSB3b3JrZXIgKGluaGVyaXRlZCBmcm9tIHRoaXMgcGFnZSkuCisKK1BBU1MgdGhy
ZXcgZXhjZXB0aW9uIEVycm9yOiBOZXR3b3JrRXJyb3I6IERPTSBFeGNlcHRpb24gMTkuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBv
bGljeS93b3JrZXItYmxvYi1pbmhlcml0cy1jc3AtaW1wb3J0U2NyaXB0cy1ibG9jay1hYm9ydHMt
YWxsLXN1YnNlcXVlbnQtaW1wb3J0cy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvd29ya2VyLWJsb2ItaW5oZXJpdHMtY3NwLWltcG9y
dFNjcmlwdHMtYmxvY2stYWJvcnRzLWFsbC1zdWJzZXF1ZW50LWltcG9ydHMuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42MzRlZmE2NTE2YzViYWIwYjI3Zjg5ZTVkMGZlODMxMDM4Njc4NmFhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQ
b2xpY3kvd29ya2VyLWJsb2ItaW5oZXJpdHMtY3NwLWltcG9ydFNjcmlwdHMtYmxvY2stYWJvcnRz
LWFsbC1zdWJzZXF1ZW50LWltcG9ydHMuaHRtbApAQCAtMCwwICsxLDU3IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8IS0tIEZJWE1FOiBDaGFuZ2UgJ3NlbGYnIHRvICdibG9i
Oicgb25jZSB3ZSBmaXggPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTMxNTg+LiAtLT4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtU2VjdXJpdHktUG9saWN5IiBj
b250ZW50PSJzY3JpcHQtc3JjICdzZWxmJyAndW5zYWZlLWlubGluZSciPgorPHNjcmlwdD4KK2lm
ICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxwPlRoaXMgdGVzdHMgdGhhdCB3aGVuIGNhbGxpbmcgV29ya2VyR2xvYmFsU2NvcGUuaW1w
b3J0U2NyaXB0cygpIHdpbGwgdHdvIHNjcmlwdCBVUkxzIHRoYXQgdGhlIHNlY29uZCBzY3JpcHQg
aXMgbm90IGxvYWRlZCBpZiB0aGUgZmlyc3Qgc2NyaXB0IFVSTCB3YXMgYmxvY2tlZCBieSB0aGUg
Q29udGVudCBTZWN1cml0eSBQb2xpY3kgb2YgdGhlIHdvcmtlciAoaW5oZXJpdGVkIGZyb20gdGhp
cyBwYWdlKS48L3A+Cis8cHJlIGlkPSJyZXN1bHQiPjwvcHJlPgorPHNjcmlwdD4KK2Z1bmN0aW9u
IHJlcG9ydFJlc3VsdEFuZE5vdGlmeURvbmUobWVzc2FnZSkKK3sKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgicmVzdWx0IikudGV4dENvbnRlbnQgPSBtZXNzYWdlOworICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9CisKK3Zh
ciBzY3JpcHQgPSBbCisgICAgJ3NlbGYubG9hZGVkU291cmNlMSA9IGZhbHNlOycsCisgICAgJ3Nl
bGYubG9hZGVkU291cmNlMiA9IGZhbHNlOycsCisgICAgJ3ZhciBleGNlcHRpb247JywKKyAgICAn
dHJ5IHsnLAorICAgICcgICAgaW1wb3J0U2NyaXB0cygiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3dv
cmtlcnMvcmVzb3VyY2VzL3dvcmtlci1pbXBvcnRTY3JpcHRzLXNvdXJjZTEuanMiLCAiaHR0cDov
L2xvY2FsaG9zdDo4MDAwL3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1pbXBvcnRTY3JpcHRzLXNv
dXJjZTIuanMiKTsnLAorICAgICd9IGNhdGNoIChlKSB7JywKKyAgICAnICAgIGV4Y2VwdGlvbiA9
IGU7JywKKyAgICAnfScsCisgICAgJ3ZhciBleHBlY3RlZEV4Y2VwdGlvbkNvZGUgPSAxOTsgLy8g
RE9NRXhjZXB0aW9uLk5FVFdPUktfRVJSJywKKyAgICAnaWYgKCFleGNlcHRpb24pJywKKyAgICAn
ICAgIHNlbGYucG9zdE1lc3NhZ2UoIkZBSUwgc2hvdWxkIHRocm93ICIgKyBleHBlY3RlZEV4Y2Vw
dGlvbkNvZGUgKyAiLiBCdXQgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24uIik7JywKKyAgICAn
ZWxzZSB7JywKKyAgICAnICAgIGlmIChzZWxmLmxvYWRlZFNvdXJjZTEpJywKKyAgICAnICAgICAg
ICBzZWxmLnBvc3RNZXNzYWdlKCJGQUlMIHNob3VsZCBub3QgaGF2ZSBsb2FkZWQgYW5kIGV4ZWN1
dGVkIHRoZSBmaXJzdCBzY3JpcHQuIik7JywKKyAgICAnICAgIGVsc2UgaWYgKHNlbGYubG9hZGVk
U291cmNlMiknLAorICAgICcgICAgICAgIHNlbGYucG9zdE1lc3NhZ2UoIkZBSUwgc2hvdWxkIG5v
dCBoYXZlIGxvYWRlZCBhbmQgZXhlY3V0ZWQgdGhlIHNlY29uZCBzY3JpcHQuIik7JywKKyAgICAn
ICAgIGVsc2UgaWYgKGV4Y2VwdGlvbi5jb2RlID09IGV4cGVjdGVkRXhjZXB0aW9uQ29kZSknLAor
ICAgICcgICAgICAgIHNlbGYucG9zdE1lc3NhZ2UoIlBBU1MgdGhyZXcgZXhjZXB0aW9uICIgKyBl
eGNlcHRpb24gKyAiLiIpOycsCisgICAgJyAgICBlbHNlJywKKyAgICAnICAgICAgICBzZWxmLnBv
c3RNZXNzYWdlKCJGQUlMIHNob3VsZCB0aHJvdyAiICsgZXhwZWN0ZWRFeGNlcHRpb25Db2RlICsg
Ii4gVGhyZXcgZXhjZXB0aW9uICIgKyBleGNlcHRpb24gKyAiLiIpOycsCisgICAgJ30nLAorXS5q
b2luKCJcbiIpOworCit2YXIgd29ya2VyOwordHJ5IHsKKyAgICB3b3JrZXIgPSBuZXcgV29ya2Vy
KHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFtzY3JpcHRdKSkpOworICAgIHdv
cmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZXZlbnQpIHsgcmVwb3J0UmVzdWx0QW5kTm90aWZ5
RG9uZShldmVudC5kYXRhKTsgfTsKK30gY2F0Y2ggKGV4Y2VwdGlvbikgeworICAgIHJlcG9ydFJl
c3VsdEFuZE5vdGlmeURvbmUoIkZBSUwgc2hvdWxkIG5vdCBoYXZlIHRocm93biBhbiBleGNlcHRp
b24gd2hlbiBjcmVhdGluZyB3b3JrZXIuIFRocmV3IGV4Y2VwdGlvbiAiICsgZXhjZXB0aW9uICsg
Ii4iKTsKK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvd29ya2VyLWJs
b2ItaW5oZXJpdHMtY3NwLWltcG9ydFNjcmlwdHMtcmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLWJsb2Nr
ZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50
U2VjdXJpdHlQb2xpY3kvd29ya2VyLWJsb2ItaW5oZXJpdHMtY3NwLWltcG9ydFNjcmlwdHMtcmVk
aXJlY3QtY3Jvc3Mtb3JpZ2luLWJsb2NrZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVkYzFk
MmY4MTEwYmRiYjk4MDljYWJjZDhmOTFjOTQ5YjI3YjQ3OTcKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS93b3Jr
ZXItYmxvYi1pbmhlcml0cy1jc3AtaW1wb3J0U2NyaXB0cy1yZWRpcmVjdC1jcm9zcy1vcmlnaW4t
YmxvY2tlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitUaGlzIHRlc3RzIHRoYXQgdGhl
IENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IG9mIHRoZSBwYXJlbnQgb3JpZ2luICh0aGlzIHBhZ2Up
IGJsb2NrcyBhIFdlYiBXb3JrZXIgZnJvbSBpbXBvcnRpbmcgYSBzY3JpcHQgZnJvbSBhIGRpZmZl
cmVudCBvcmlnaW4sIG5vdCBsaXN0ZWQgaW4gc2NyaXB0LXNyYywgdGhyb3VnaCBhIHJlZGlyZWN0
LgorCitQQVNTIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTmV0d29ya0Vycm9yOiBET00gRXhjZXB0
aW9uIDE5LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250
ZW50U2VjdXJpdHlQb2xpY3kvd29ya2VyLWJsb2ItaW5oZXJpdHMtY3NwLWltcG9ydFNjcmlwdHMt
cmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLWJsb2NrZWQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3dvcmtlci1ibG9iLWluaGVyaXRzLWNz
cC1pbXBvcnRTY3JpcHRzLXJlZGlyZWN0LWNyb3NzLW9yaWdpbi1ibG9ja2VkLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDgyZmIyNTUyYmFkNzhmMmZjODFmYWRmMGM3MzEzMzkwYWNjMDczYwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5
UG9saWN5L3dvcmtlci1ibG9iLWluaGVyaXRzLWNzcC1pbXBvcnRTY3JpcHRzLXJlZGlyZWN0LWNy
b3NzLW9yaWdpbi1ibG9ja2VkLmh0bWwKQEAgLTAsMCArMSw1MSBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPCEtLSBGSVhNRTogQ2hhbmdlICdzZWxmJyB0byAnYmxvYjonIG9u
Y2Ugd2UgZml4IDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzMTU4
Pi4gLS0+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVNlY3VyaXR5LVBvbGljeSIgY29udGVu
dD0ic2NyaXB0LXNyYyAnc2VsZicgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L2NvbnRl
bnRTZWN1cml0eVBvbGljeS9yZXNvdXJjZXMvcmVkaXIucGhwICd1bnNhZmUtaW5saW5lJyI+Cis8
c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cit9Cis8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0cyB0aGF0IHRoZSBDb250ZW50IFNlY3VyaXR5IFBv
bGljeSBvZiB0aGUgcGFyZW50IG9yaWdpbiAodGhpcyBwYWdlKSBibG9ja3MgYSBXZWIgV29ya2Vy
IGZyb20gaW1wb3J0aW5nIGEgc2NyaXB0IGZyb20gYSBkaWZmZXJlbnQgb3JpZ2luLCBub3QgbGlz
dGVkIGluIHNjcmlwdC1zcmMsIHRocm91Z2ggYSByZWRpcmVjdC48L3A+Cis8cHJlIGlkPSJyZXN1
bHQiPjwvcHJlPgorPHNjcmlwdD4KK2Z1bmN0aW9uIHJlcG9ydFJlc3VsdEFuZE5vdGlmeURvbmUo
bWVzc2FnZSkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikudGV4dENv
bnRlbnQgPSBtZXNzYWdlOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9CisKK3ZhciBzY3JpcHQgPSBbCisgICAgJ3ZhciBleGNl
cHRpb247JywKKyAgICAndHJ5IHsnLAorICAgICcgICAgaW1wb3J0U2NyaXB0cygiaHR0cDovLzEy
Ny4wLjAuMTo4MDAwL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9yZXNvdXJjZXMvcmVk
aXIucGhwP3VybD1odHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5
UG9saWN5L3Jlc291cmNlcy9zY3JpcHQtc2V0LXZhbHVlLmpzIik7JywKKyAgICAnfSBjYXRjaCAo
ZSkgeycsCisgICAgJyAgICBleGNlcHRpb24gPSBlOycsCisgICAgJ30nLAorICAgICd2YXIgZXhw
ZWN0ZWRFeGNlcHRpb25Db2RlID0gMTk7IC8vIERPTUV4Y2VwdGlvbi5ORVRXT1JLX0VSUicsCisg
ICAgJ2lmICghZXhjZXB0aW9uKScsCisgICAgJyAgICBzZWxmLnBvc3RNZXNzYWdlKCJGQUlMIHNo
b3VsZCB0aHJvdyAiICsgZXhwZWN0ZWRFeGNlcHRpb25Db2RlICsgIi4gQnV0IGRpZCBub3QgdGhy
b3cgYW4gZXhjZXB0aW9uLiIpOycsCisgICAgJ2Vsc2UgeycsCisgICAgJyAgICBpZiAoZXhjZXB0
aW9uLmNvZGUgPT0gZXhwZWN0ZWRFeGNlcHRpb25Db2RlKScsCisgICAgJyAgICAgICAgc2VsZi5w
b3N0TWVzc2FnZSgiUEFTUyB0aHJldyBleGNlcHRpb24gIiArIGV4Y2VwdGlvbiArICIuIik7JywK
KyAgICAnICAgIGVsc2UnLAorICAgICcgICAgICAgIHNlbGYucG9zdE1lc3NhZ2UoIkZBSUwgc2hv
dWxkIHRocm93ICIgKyBleHBlY3RlZEV4Y2VwdGlvbkNvZGUgKyAiLiBUaHJldyBleGNlcHRpb24g
IiArIGV4Y2VwdGlvbiArICIuIik7JywKKyAgICAnfScsCitdLmpvaW4oIlxuIik7CisKK3ZhciB3
b3JrZXI7Cit0cnkgeworICAgIHdvcmtlciA9IG5ldyBXb3JrZXIod2luZG93LlVSTC5jcmVhdGVP
YmplY3RVUkwobmV3IEJsb2IoW3NjcmlwdF0pKSk7CisgICAgd29ya2VyLm9ubWVzc2FnZSA9IGZ1
bmN0aW9uIChldmVudCkgeyByZXBvcnRSZXN1bHRBbmROb3RpZnlEb25lKGV2ZW50LmRhdGEpOyB9
OworfSBjYXRjaCAoZXhjZXB0aW9uKSB7CisgICAgcmVwb3J0UmVzdWx0QW5kTm90aWZ5RG9uZSgi
RkFJTCBzaG91bGQgbm90IGhhdmUgdGhyb3duIGFuIGV4Y2VwdGlvbiB3aGVuIGNyZWF0aW5nIHdv
cmtlci4gVGhyZXcgZXhjZXB0aW9uICIgKyBleGNlcHRpb24gKyAiLiIpOworfQorPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS93b3JrZXItY3NwLWJsb2Nrcy14aHItcmVkaXJl
Y3QtY3Jvc3Mtb3JpZ2luLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3dvcmtlci1jc3AtYmxvY2tzLXhoci1yZWRpcmVj
dC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwNzUzNmYxODUxYjQ0NmRl
MDMyYmFhZGJmNjkyNmIyNTQ0OWZkOTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS93b3JrZXItY3NwLWJsb2Nr
cy14aHItcmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAK
K1RoaXMgdGVzdHMgYW4gWEhSIHJlcXVlc3QgbWFkZSBmcm9tIGEgd29ya2VyIGlzIGJsb2NrZWQg
aWYgaXQgcmVkaXJlY3RzIHRvIGEgY3Jvc3Mtb3JpZ2luIHJlc291cmNlIHRoYXQgaXMgbm90IGxp
c3RlZCBhcyBhIGNvbm5lY3Qtc3JjIGluIHRoZSBDU1Agb2YgdGhlIHdvcmtlci4KKworUEFTUyB0
aHJldyBleGNlcHRpb24gRXJyb3I6IE5ldHdvcmtFcnJvcjogRE9NIEV4Y2VwdGlvbiAxOS4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5
UG9saWN5L3dvcmtlci1jc3AtYmxvY2tzLXhoci1yZWRpcmVjdC1jcm9zcy1vcmlnaW4uaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3dv
cmtlci1jc3AtYmxvY2tzLXhoci1yZWRpcmVjdC1jcm9zcy1vcmlnaW4uaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lMDM3MzUyNjAyMzNmNzgzZmJjMTNjYjRmNTUwNTcyOWEwNDJkOTZlCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xp
Y3kvd29ya2VyLWNzcC1ibG9ja3MteGhyLXJlZGlyZWN0LWNyb3NzLW9yaWdpbi5odG1sCkBAIC0w
LDAgKzEsMzEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+Citp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8cD5UaGlzIHRlc3RzIGFuIFhIUiByZXF1ZXN0IG1hZGUgZnJvbSBhIHdvcmtlciBpcyBi
bG9ja2VkIGlmIGl0IHJlZGlyZWN0cyB0byBhIGNyb3NzLW9yaWdpbiByZXNvdXJjZSB0aGF0IGlz
IG5vdCBsaXN0ZWQgYXMgYSBjb25uZWN0LXNyYyBpbiB0aGUgQ1NQIG9mIHRoZSB3b3JrZXIuPC9w
PgorPHByZSBpZD0icmVzdWx0Ij48L3ByZT4KKzxzY3JpcHQ+Cit3aW5kb3cub25tZXNzYWdlID0g
ZnVuY3Rpb24gKGV2ZW50KQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQi
KS50ZXh0Q29udGVudCA9IGV2ZW50LmRhdGE7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKwordmFyIHdvcmtlcjsKK3RyeSB7
CisgICAgd29ya2VyID0gbmV3IFdvcmtlcigiaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5
L2NvbnRlbnRTZWN1cml0eVBvbGljeS9yZXNvdXJjZXMvd29ya2VyLXhoci1yZWRpcmVjdC1jcm9z
cy1vcmlnaW4tYmxvY2tlZC5waHA/Y3NwPSIgKyBlbmNvZGVVUklDb21wb25lbnQoImNvbm5lY3Qt
c3JjIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kv
cmVzb3VyY2VzL3JlZGlyLnBocCIpKTsKKyAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24g
KGV2ZW50KSB7IHdpbmRvdy5wb3N0TWVzc2FnZShldmVudC5kYXRhLCAiKiIpIH07Cit9IGNhdGNo
IChleGNlcHRpb24pIHsKKyAgICB3aW5kb3cucG9zdE1lc3NhZ2UoIkZBSUwgc2hvdWxkIG5vdCBo
YXZlIHRocm93biBhbiBleGNlcHRpb24gd2hlbiBjcmVhdGluZyB3b3JrZXIuIFRocmV3IGV4Y2Vw
dGlvbiAiICsgZXhjZXB0aW9uICsgIi4iLCAiKiIpOworfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRl
bnRTZWN1cml0eVBvbGljeS93b3JrZXItY3NwLWltcG9ydFNjcmlwdHMtcmVkaXJlY3QtY3Jvc3Mt
b3JpZ2luLWFsbG93ZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvd29ya2VyLWNzcC1pbXBvcnRTY3JpcHRzLXJlZGly
ZWN0LWNyb3NzLW9yaWdpbi1hbGxvd2VkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZDU5Mzgy
YTllYjcwYWRiOTE3OTFjMTUyMTNlZDcwZDQyNGUwOTI3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvd29ya2Vy
LWNzcC1pbXBvcnRTY3JpcHRzLXJlZGlyZWN0LWNyb3NzLW9yaWdpbi1hbGxvd2VkLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDMgQEAKK1RoaXMgdGVzdHMgYSBXZWIgV29ya2VyIHdpdGhvdXQgYSBD
b250ZW50IFNlY3VyaXR5IFBvbGljeSBpcyBhbGxvd2VkIHRvIGltcG9ydCBhIHNjcmlwdCBmcm9t
IGEgZGlmZmVyZW50IG9yaWdpbiB0aHJvdWdoIGEgcmVkaXJlY3QuCisKK1BBU1MgZGlkIGltcG9y
dCBzY3JpcHQgZnJvbSBkaWZmZXJlbnQgb3JpZ2luLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvd29ya2VyLWNzcC1pbXBv
cnRTY3JpcHRzLXJlZGlyZWN0LWNyb3NzLW9yaWdpbi1hbGxvd2VkLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS93b3JrZXItY3NwLWlt
cG9ydFNjcmlwdHMtcmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLWFsbG93ZWQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xYjA3ZjdkYmE5NGMwMGNhMGMwNjNjOTFjN2Q3MDM5ZTNjYWQ4MjNjCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xp
Y3kvd29ya2VyLWNzcC1pbXBvcnRTY3JpcHRzLXJlZGlyZWN0LWNyb3NzLW9yaWdpbi1hbGxvd2Vk
Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworfQorPC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgYSBXZWIgV29ya2VyIHdpdGhvdXQgYSBDb250
ZW50IFNlY3VyaXR5IFBvbGljeSBpcyBhbGxvd2VkIHRvIGltcG9ydCBhIHNjcmlwdCBmcm9tIGEg
ZGlmZmVyZW50IG9yaWdpbiB0aHJvdWdoIGEgcmVkaXJlY3QuPC9wPgorPHByZSBpZD0icmVzdWx0
Ij48L3ByZT4KKzxzY3JpcHQ+CitmdW5jdGlvbiByZXBvcnRSZXN1bHRBbmROb3RpZnlEb25lKG1l
c3NhZ2UpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLnRleHRDb250
ZW50ID0gbWVzc2FnZTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOworfQorCit2YXIgd29ya2VyOwordHJ5IHsKKyAgICB3b3JrZXIg
PSBuZXcgV29ya2VyKCJyZXNvdXJjZXMvd29ya2VyLWltcG9ydFNjcmlwdC1yZWRpcmVjdC1jcm9z
cy1vcmlnaW4tYWxsb3dlZC5waHA/Y3NwPSIgKyBlbmNvZGVVUklDb21wb25lbnQoInNjcmlwdC1z
cmMgJ3NlbGYnIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCIpKTsKKyAgICB3b3JrZXIub25tZXNzYWdl
ID0gZnVuY3Rpb24gKGV2ZW50KSB7IHJlcG9ydFJlc3VsdEFuZE5vdGlmeURvbmUoZXZlbnQuZGF0
YSk7IH07Cit9IGNhdGNoIChleGNlcHRpb24pIHsKKyAgICByZXBvcnRSZXN1bHRBbmROb3RpZnlE
b25lKCJGQUlMIHNob3VsZCBub3QgaGF2ZSB0aHJvd24gYW4gZXhjZXB0aW9uIHdoZW4gY3JlYXRp
bmcgd29ya2VyLiBUaHJldyBleGNlcHRpb24gIiArIGV4Y2VwdGlvbiArICIuIik7Cit9Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3dvcmtlci1jc3AtaW1wb3J0U2NyaXB0
cy1yZWRpcmVjdC1jcm9zcy1vcmlnaW4tYmxvY2tlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS93b3JrZXItY3NwLWlt
cG9ydFNjcmlwdHMtcmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLWJsb2NrZWQtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjlhZjJiZGJlMmMzODc1NWE5NWQ1OGE0Y2M5OTBlZmYwZjdmMDYyMDYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1
cml0eVBvbGljeS93b3JrZXItY3NwLWltcG9ydFNjcmlwdHMtcmVkaXJlY3QtY3Jvc3Mtb3JpZ2lu
LWJsb2NrZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorVGhpcyB0ZXN0cyBhIFdlYiBX
b3JrZXIgd2l0aCBDb250ZW50IFNlY3VyaXR5IFBvbGljeSAic2NyaXB0LXNyYyAnc2VsZiciIGJs
b2NrcyB0aGUgaW1wb3J0IG9mIGEgc2NyaXB0IGZyb20gYSBkaWZmZXJlbnQgb3JpZ2luIHRocm91
Z2ggYSByZWRpcmVjdC4KKworUEFTUyB0aHJldyBleGNlcHRpb24gRXJyb3I6IE5ldHdvcmtFcnJv
cjogRE9NIEV4Y2VwdGlvbiAxOS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3dvcmtlci1jc3AtaW1wb3J0U2NyaXB0cy1y
ZWRpcmVjdC1jcm9zcy1vcmlnaW4tYmxvY2tlZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvd29ya2VyLWNzcC1pbXBvcnRTY3JpcHRz
LXJlZGlyZWN0LWNyb3NzLW9yaWdpbi1ibG9ja2VkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjZhMWU1ODVi
M2M5YjM0YmM0YjZlYTk4YjRkNzE4NzNhMTYzZDhiZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3dvcmtlci1j
c3AtaW1wb3J0U2NyaXB0cy1yZWRpcmVjdC1jcm9zcy1vcmlnaW4tYmxvY2tlZC5odG1sCkBAIC0w
LDAgKzEsMzEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+Citp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8cD5UaGlzIHRlc3RzIGEgV2ViIFdvcmtlciB3aXRoIENvbnRlbnQgU2VjdXJpdHkgUG9s
aWN5ICZxdW90O3NjcmlwdC1zcmMgJ3NlbGYnJnF1b3Q7IGJsb2NrcyB0aGUgaW1wb3J0IG9mIGEg
c2NyaXB0IGZyb20gYSBkaWZmZXJlbnQgb3JpZ2luIHRocm91Z2ggYSByZWRpcmVjdC48L3A+Cis8
cHJlIGlkPSJyZXN1bHQiPjwvcHJlPgorPHNjcmlwdD4KK2Z1bmN0aW9uIHJlcG9ydFJlc3VsdEFu
ZE5vdGlmeURvbmUobWVzc2FnZSkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVz
dWx0IikudGV4dENvbnRlbnQgPSBtZXNzYWdlOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9CisKK3ZhciB3b3JrZXI7Cit0cnkg
eworICAgIHdvcmtlciA9IG5ldyBXb3JrZXIoInJlc291cmNlcy93b3JrZXItaW1wb3J0U2NyaXB0
LXJlZGlyZWN0LWNyb3NzLW9yaWdpbi1ibG9ja2VkLnBocD9jc3A9IiArIGVuY29kZVVSSUNvbXBv
bmVudCgic2NyaXB0LXNyYyAnc2VsZiciKSk7CisgICAgd29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0
aW9uIChldmVudCkgeyByZXBvcnRSZXN1bHRBbmROb3RpZnlEb25lKGV2ZW50LmRhdGEpOyB9Owor
fSBjYXRjaCAoZXhjZXB0aW9uKSB7CisgICAgcmVwb3J0UmVzdWx0QW5kTm90aWZ5RG9uZSgiRkFJ
TCBzaG91bGQgbm90IGhhdmUgdGhyb3duIGFuIGV4Y2VwdGlvbiB3aGVuIGNyZWF0aW5nIHdvcmtl
ci4gVGhyZXcgZXhjZXB0aW9uICIgKyBleGNlcHRpb24gKyAiLiIpOworfQorPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS93b3JrZXItaW1wb3J0c2NyaXB0cy1ibG9ja2VkLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3Vy
aXR5UG9saWN5L3dvcmtlci1pbXBvcnRzY3JpcHRzLWJsb2NrZWQtZXhwZWN0ZWQudHh0CmluZGV4
IGE5NWUxMzRiZDJkOWU4MTlmZjNmMjhjMDY4OWQwOTFkZWEwOTJhMjcuLjMyNmM4MjA2MzhmYzZh
YmMwZGQ4OWYyMzA5NTYzMjMxYmM2ODUxYTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3dvcmtlci1pbXBvcnRzY3JpcHRz
LWJsb2NrZWQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvY29udGVudFNlY3VyaXR5UG9saWN5L3dvcmtlci1pbXBvcnRzY3JpcHRzLWJsb2NrZWQtZXhw
ZWN0ZWQudHh0CkBAIC0xLDYgKzEsNiBAQAogQ09OU09MRSBNRVNTQUdFOiBSZWZ1c2VkIHRvIGxv
YWQgdGhlIHNjcmlwdCAnaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L2NvbnRlbnRTZWN1
cml0eVBvbGljeS9yZXNvdXJjZXMvcG9zdC1tZXNzYWdlLmpzJyBiZWNhdXNlIGl0IHZpb2xhdGVz
IHRoZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlOiAic2NyaXB0
LXNyYyAndW5zYWZlLWV2YWwnICd1bnNhZmUtaW5saW5lJyAxMjcuMC4wLjE6ODAwMCIuCiAKLVBB
U1MgcmVzdWx0IGlzICJpbXBvcnRTY3JpcHRzIGJsb2NrZWQ6IE5ldHdvcmtFcnJvcjogRmFpbGVk
IHRvIGV4ZWN1dGUgJ2ltcG9ydFNjcmlwdHMnIG9uICdXb3JrZXJHbG9iYWxTY29wZSc6IFRoZSBz
Y3JpcHQgYXQgJ2h0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQ
b2xpY3kvcmVzb3VyY2VzL3Bvc3QtbWVzc2FnZS5qcycgZmFpbGVkIHRvIGxvYWQuIgorUEFTUyBy
ZXN1bHQgaXMgImltcG9ydFNjcmlwdHMgYmxvY2tlZDogRXJyb3I6IE5ldHdvcmtFcnJvcjogRE9N
IEV4Y2VwdGlvbiAxOSIKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBD
T01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250
ZW50U2VjdXJpdHlQb2xpY3kvd29ya2VyLWltcG9ydHNjcmlwdHMtYmxvY2tlZC5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvd29ya2Vy
LWltcG9ydHNjcmlwdHMtYmxvY2tlZC5odG1sCmluZGV4IDQ5M2Q3OWQ4YTQ4MmFiNjVlZmNjOGRi
OTZmNjM1ODgyZjI5ZjYzNzcuLjBlZjIyODg0YjkxNDJmYzkwMDQwMzRmODEwN2Q4ZDFmYjBiZTMz
OTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNl
Y3VyaXR5UG9saWN5L3dvcmtlci1pbXBvcnRzY3JpcHRzLWJsb2NrZWQuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS93b3JrZXIt
aW1wb3J0c2NyaXB0cy1ibG9ja2VkLmh0bWwKQEAgLTE1LDcgKzE1LDcgQEAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVuY29kZVVSSUNvbXBvbmVudCgic2NyaXB0LXNyYyAndW5z
YWZlLWV2YWwnICd1bnNhZmUtaW5saW5lJyAxMjcuMC4wLjE6ODAwMCIpKTsKICAgICAgICAgd29y
a2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChldmVudCkgewogICAgICAgICAgICAgcmVzdWx0ID0g
ZXZlbnQuZGF0YTsKLSAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVzdWx0Jywg
J2ltcG9ydFNjcmlwdHMgYmxvY2tlZDogTmV0d29ya0Vycm9yOiBGYWlsZWQgdG8gZXhlY3V0ZSBc
J2ltcG9ydFNjcmlwdHNcJyBvbiBcJ1dvcmtlckdsb2JhbFNjb3BlXCc6IFRoZSBzY3JpcHQgYXQg
XCdodHRwOi8vbG9jYWxob3N0OjgwMDAvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3Jl
c291cmNlcy9wb3N0LW1lc3NhZ2UuanNcJyBmYWlsZWQgdG8gbG9hZC4nKTsKKyAgICAgICAgICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygncmVzdWx0JywgJ2ltcG9ydFNjcmlwdHMgYmxvY2tlZDog
RXJyb3I6IE5ldHdvcmtFcnJvcjogRE9NIEV4Y2VwdGlvbiAxOScpOwogICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CiAgICAgICAgIH07CiAgICAgfSBjYXRjaCAoZSkgewpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvd29y
a2VyLXdpdGhvdXQtY3NwLWltcG9ydFNjcmlwdHMtcmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLWFsbG93
ZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50
U2VjdXJpdHlQb2xpY3kvd29ya2VyLXdpdGhvdXQtY3NwLWltcG9ydFNjcmlwdHMtcmVkaXJlY3Qt
Y3Jvc3Mtb3JpZ2luLWFsbG93ZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkNTkzODJhOWVi
NzBhZGI5MTc5MWMxNTIxM2VkNzBkNDI0ZTA5MjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS93b3JrZXItd2l0
aG91dC1jc3AtaW1wb3J0U2NyaXB0cy1yZWRpcmVjdC1jcm9zcy1vcmlnaW4tYWxsb3dlZC1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitUaGlzIHRlc3RzIGEgV2ViIFdvcmtlciB3aXRob3V0
IGEgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgaXMgYWxsb3dlZCB0byBpbXBvcnQgYSBzY3JpcHQg
ZnJvbSBhIGRpZmZlcmVudCBvcmlnaW4gdGhyb3VnaCBhIHJlZGlyZWN0LgorCitQQVNTIGRpZCBp
bXBvcnQgc2NyaXB0IGZyb20gZGlmZmVyZW50IG9yaWdpbi4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3dvcmtlci13aXRo
b3V0LWNzcC1pbXBvcnRTY3JpcHRzLXJlZGlyZWN0LWNyb3NzLW9yaWdpbi1hbGxvd2VkLmh0bWwg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS93
b3JrZXItd2l0aG91dC1jc3AtaW1wb3J0U2NyaXB0cy1yZWRpcmVjdC1jcm9zcy1vcmlnaW4tYWxs
b3dlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM2Yzk3YWZhMmIyNzMxYmM2MWM1ZTkwODc5YWRmYmE5NjQ2
NDMxNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L2NvbnRlbnRTZWN1cml0eVBvbGljeS93b3JrZXItd2l0aG91dC1jc3AtaW1wb3J0U2NyaXB0cy1y
ZWRpcmVjdC1jcm9zcy1vcmlnaW4tYWxsb3dlZC5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtU2Vj
dXJpdHktUG9saWN5IiBjb250ZW50PSJzY3JpcHQtc3JjICdzZWxmJyAndW5zYWZlLWlubGluZSci
PiA8IS0tIFdvcmtlciBzaG91bGQgbm90IGluaGVyaXQgdGhpcyBwb2xpY3kuIC0tPgorPHNjcmlw
dD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgYSBXZWIgV29ya2VyIHdpdGhvdXQgYSBDb250ZW50IFNl
Y3VyaXR5IFBvbGljeSBpcyBhbGxvd2VkIHRvIGltcG9ydCBhIHNjcmlwdCBmcm9tIGEgZGlmZmVy
ZW50IG9yaWdpbiB0aHJvdWdoIGEgcmVkaXJlY3QuPC9wPgorPHByZSBpZD0icmVzdWx0Ij48L3By
ZT4KKzxzY3JpcHQ+CitmdW5jdGlvbiByZXBvcnRSZXN1bHRBbmROb3RpZnlEb25lKG1lc3NhZ2Up
Cit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLnRleHRDb250ZW50ID0g
bWVzc2FnZTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOworfQorCit2YXIgd29ya2VyOwordHJ5IHsKKyAgICB3b3JrZXIgPSBuZXcg
V29ya2VyKCJyZXNvdXJjZXMvd29ya2VyLWltcG9ydFNjcmlwdC1yZWRpcmVjdC1jcm9zcy1vcmln
aW4tYWxsb3dlZC5waHAiKTsKKyAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24gKGV2ZW50
KSB7IHJlcG9ydFJlc3VsdEFuZE5vdGlmeURvbmUoZXZlbnQuZGF0YSk7IH07Cit9IGNhdGNoIChl
eGNlcHRpb24pIHsKKyAgICByZXBvcnRSZXN1bHRBbmROb3RpZnlEb25lKCJGQUlMIHNob3VsZCBu
b3QgaGF2ZSB0aHJvd24gYW4gZXhjZXB0aW9uIHdoZW4gY3JlYXRpbmcgd29ya2VyLiBUaHJldyBl
eGNlcHRpb24gIiArIGV4Y2VwdGlvbiArICIuIik7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0
ZWRXb3JsZC9ieXBhc3MtbWFpbi13b3JsZC1jc3AtZm9yLXhoci1yZWRpcmVjdC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvYnlwYXNz
LW1haW4td29ybGQtY3NwLWZvci14aHItcmVkaXJlY3QtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmRlOWZjOWQyMDhkMTcxYTFiY2U2NzJmN2ZhZmE0Njc1N2UwYjNmZmYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvYnlwYXNz
LW1haW4td29ybGQtY3NwLWZvci14aHItcmVkaXJlY3QtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MyBAQAorVGhpcyB0ZXN0cyB0aGF0IGluIGFuIGlzb2xhdGVkIHdvcmxkIGFuIFhIUiByZXF1ZXN0
IGlzIGFsbG93ZWQgdG8gbG9hZCBldmVuIGlmIGl0IHJlZGlyZWN0cyB0byBhIGNyb3NzLW9yaWdp
biByZXNvdXJjZSB0aGF0IGlzIG5vdCBsaXN0ZWQgYXMgYSBjb25uZWN0LXNyYy4KKworUEFTUyBk
aWQgcmVjZWl2ZSBYSFIgcmVzcG9uc2UuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvYnlwYXNzLW1haW4td29ybGQtY3NwLWZvci14aHIt
cmVkaXJlY3QuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRX
b3JsZC9ieXBhc3MtbWFpbi13b3JsZC1jc3AtZm9yLXhoci1yZWRpcmVjdC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmZkMDU2YjYzMGQ0NjM5NjZlMWRiMjkyN2NhZmE1MzY4YmU3MjM5M2YKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvYnlw
YXNzLW1haW4td29ybGQtY3NwLWZvci14aHItcmVkaXJlY3QuaHRtbApAQCAtMCwwICsxLDM2IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250
ZW50LVNlY3VyaXR5LVBvbGljeSIgY29udGVudD0iY29ubmVjdC1zcmMgaHR0cDovLzEyNy4wLjAu
MTo4MDAwL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9yZXNvdXJjZXMvcmVkaXIucGhw
Ij4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKK30KKzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgaW4gYW4gaXNvbGF0ZWQgd29y
bGQgYW4gWEhSIHJlcXVlc3QgaXMgYWxsb3dlZCB0byBsb2FkIGV2ZW4gaWYgaXQgcmVkaXJlY3Rz
IHRvIGEgY3Jvc3Mtb3JpZ2luIHJlc291cmNlIHRoYXQgaXMgbm90IGxpc3RlZCBhcyBhIGNvbm5l
Y3Qtc3JjLjwvcD4KKzxwcmUgaWQ9InJlc3VsdCI+PC9wcmU+Cis8c2NyaXB0Pgord2luZG93Lm9u
bWVzc2FnZSA9IGZ1bmN0aW9uIChldmVudCkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgicmVzdWx0IikudGV4dENvbnRlbnQgPSBldmVudC5kYXRhOworICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9u
IHRlc3RMb2FkWEhSVGhhdFJlZGlyZWN0cygpCit7CisgICAgdmFyIHhociA9IG5ldyBYTUxIdHRw
UmVxdWVzdDsKKyAgICB4aHIub25sb2FkID0gZnVuY3Rpb24gKCkgeyB3aW5kb3cucG9zdE1lc3Nh
Z2UoIlBBU1MgZGlkIHJlY2VpdmUgWEhSIHJlc3BvbnNlLiIsICIqIik7IH07CisgICAgeGhyLm9u
ZXJyb3IgPSBmdW5jdGlvbiAoKSB7IHdpbmRvdy5wb3N0TWVzc2FnZSgiRkFJTCBkaWQgbm90IHJl
Y2VpdmUgWEhSIHJlc3BvbnNlLiIsICIqIik7IH07CisgICAgeGhyLm9wZW4oIkdFVCIsICJodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3Jlc291cmNl
cy9yZWRpci5waHA/dXJsPWh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC94bWxodHRwcmVxdWVzdC9yZXNv
dXJjZXMvYWNjZXNzLWNvbnRyb2wtYmFzaWMtYWxsb3cuY2dpIik7CisgICAgeGhyLnNlbmQoKTsK
K30KKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZXZhbHVhdGVTY3Jp
cHRJbklzb2xhdGVkV29ybGQoMCwgdGVzdExvYWRYSFJUaGF0UmVkaXJlY3RzLnRvU3RyaW5nKCkg
KyAiO3Rlc3RMb2FkWEhSVGhhdFJlZGlyZWN0cygpOyIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xh
dGVkV29ybGQvYnlwYXNzLW1haW4td29ybGQtY3NwLXdvcmtlci1ibG9iLWltcG9ydFNjcmlwdC1y
ZWRpcmVjdC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2J5cGFzcy1tYWluLXdvcmxkLWNzcC13b3JrZXItYmxv
Yi1pbXBvcnRTY3JpcHQtcmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zYzVkZDU4N2QyMjJlNzI2YmZiODgzZmJjNzU4ZDNiNTEyMzUyMDU1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2J5
cGFzcy1tYWluLXdvcmxkLWNzcC13b3JrZXItYmxvYi1pbXBvcnRTY3JpcHQtcmVkaXJlY3QtY3Jv
c3Mtb3JpZ2luLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK1RoaXMgdGVzdHMgdGhhdCBp
biBhbiBpc29sYXRlZCB3b3JsZCB0aGUgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgb2YgdGhlIHBh
cmVudCBvcmlnaW4gKHRoaXMgcGFnZSkgaXMgYnlwYXNzZWQgYW5kIGEgV2ViIFdvcmtlciBpcyBh
bGxvd2VkIHRvIGltcG9ydCBhIHNjcmlwdCBmcm9tIGEgZGlmZmVyZW50IG9yaWdpbiwgbm90IGxp
c3RlZCBpbiBzY3JpcHQtc3JjLCB0aHJvdWdoIGEgcmVkaXJlY3QuCisKK1BBU1MgZGlkIGltcG9y
dCBzY3JpcHQgZnJvbSBkaWZmZXJlbnQgb3JpZ2luLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2J5cGFzcy1tYWluLXdvcmxkLWNzcC13
b3JrZXItYmxvYi1pbXBvcnRTY3JpcHQtcmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvYnlwYXNzLW1haW4td29y
bGQtY3NwLXdvcmtlci1ibG9iLWltcG9ydFNjcmlwdC1yZWRpcmVjdC1jcm9zcy1vcmlnaW4uaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zYjRiY2ExYTc3N2JiMzkxZDFjNGQzMTVkNGYyYWVjY2IwZTljZGZjCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRl
ZFdvcmxkL2J5cGFzcy1tYWluLXdvcmxkLWNzcC13b3JrZXItYmxvYi1pbXBvcnRTY3JpcHQtcmVk
aXJlY3QtY3Jvc3Mtb3JpZ2luLmh0bWwKQEAgLTAsMCArMSw1NyBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPCEtLSBGSVhNRTogQ2hhbmdlICdzZWxmJyB0byAnYmxvYjonIG9u
Y2Ugd2UgZml4IDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzMTU4
Pi4gLS0+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVNlY3VyaXR5LVBvbGljeSIgY29udGVu
dD0ic2NyaXB0LXNyYyAnc2VsZicgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L2NvbnRl
bnRTZWN1cml0eVBvbGljeS9yZXNvdXJjZXMvcmVkaXIucGhwICd1bnNhZmUtaW5saW5lJyI+Cis8
c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cit9Cis8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0cyB0aGF0IGluIGFuIGlzb2xhdGVkIHdvcmxkIHRo
ZSBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBvZiB0aGUgcGFyZW50IG9yaWdpbiAodGhpcyBwYWdl
KSBpcyBieXBhc3NlZCBhbmQgYSBXZWIgV29ya2VyIGlzIGFsbG93ZWQgdG8gaW1wb3J0IGEgc2Ny
aXB0IGZyb20gYSBkaWZmZXJlbnQgb3JpZ2luLCBub3QgbGlzdGVkIGluIHNjcmlwdC1zcmMsIHRo
cm91Z2ggYSByZWRpcmVjdC48L3A+Cis8cHJlIGlkPSJyZXN1bHQiPjwvcHJlPgorPHNjcmlwdD4K
K3dpbmRvdy5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZXZlbnQpCit7CisgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInJlc3VsdCIpLnRleHRDb250ZW50ID0gZXZlbnQuZGF0YTsKKyAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQor
CitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICB2YXIgc2NyaXB0ID0gWworICAgICAgICAnc2Vs
Zi5yZXN1bHQgPSBmYWxzZTsnLAorICAgICAgICAndmFyIGV4Y2VwdGlvbjsnLAorICAgICAgICAn
dHJ5IHsnLAorICAgICAgICAnICAgIGltcG9ydFNjcmlwdHMoImh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvcmVzb3VyY2VzL3JlZGlyLnBocD91cmw9
aHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9yZXNv
dXJjZXMvc2NyaXB0LXNldC12YWx1ZS5qcyIpOycsCisgICAgICAgICd9IGNhdGNoIChlKSB7JywK
KyAgICAgICAgJyAgICBleGNlcHRpb24gPSBlOycsCisgICAgICAgICd9JywKKyAgICAgICAgJ2lm
IChleGNlcHRpb24pJywKKyAgICAgICAgJyAgICBzZWxmLnBvc3RNZXNzYWdlKCJGQUlMIHNob3Vs
ZCBub3QgaGF2ZSB0aHJvd24gYW4gZXhjZXB0aW9uLiBUaHJldyBleGNlcHRpb24gIiArIGV4Y2Vw
dGlvbiArICIuIik7JywKKyAgICAgICAgJ2Vsc2UgeycsCisgICAgICAgICcgICAgaWYgKHNlbGYu
cmVzdWx0KScsCisgICAgICAgICcgICAgICAgIHNlbGYucG9zdE1lc3NhZ2UoIlBBU1MgZGlkIGlt
cG9ydCBzY3JpcHQgZnJvbSBkaWZmZXJlbnQgb3JpZ2luLiIpOycsCisgICAgICAgICcgICAgZWxz
ZScsCisgICAgICAgICcgICAgICAgIHNlbGYucG9zdE1lc3NhZ2UoIkZBSUwgZGlkIG5vdCBpbXBv
cnQgc2NyaXB0IGZyb20gZGlmZmVyZW50IG9yaWdpbi4iKTsnLAorICAgICAgICAnfScsCisgICAg
XS5qb2luKCJcbiIpOworCisgICAgdmFyIHdvcmtlcjsKKyAgICB0cnkgeworICAgICAgICB3b3Jr
ZXIgPSBuZXcgV29ya2VyKHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFtzY3Jp
cHRdKSkpOworICAgICAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24gKGV2ZW50KSB7IHdp
bmRvdy5wb3N0TWVzc2FnZShldmVudC5kYXRhLCAiKiIpOyB9CisgICAgfSBjYXRjaCAoZXhjZXB0
aW9uKSB7CisgICAgICAgIHdpbmRvdy5wb3N0TWVzc2FnZSgiRkFJTCBzaG91bGQgbm90IGhhdmUg
dGhyb3duIGFuIGV4Y2VwdGlvbiB3aGVuIGNyZWF0aW5nIHdvcmtlci4gVGhyZXcgZXhjZXB0aW9u
ICIgKyBleGNlcHRpb24gKyAiLiIsICIqIik7CisgICAgfQorfQorCitpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgdGVzdFJ1bm5lci5ldmFsdWF0ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZCgwLCBy
dW5UZXN0LnRvU3RyaW5nKCkgKyAiO3J1blRlc3QoKTsiKTsKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9pc29s
YXRlZFdvcmxkL2J5cGFzcy1tYWluLXdvcmxkLWNzcC13b3JrZXItYmxvYi1pbXBvcnRTY3JpcHRz
LXJlZGlyZWN0LWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvYnlwYXNzLW1haW4td29ybGQtY3NwLXdvcmtlci1i
bG9iLWltcG9ydFNjcmlwdHMtcmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zYzVkZDU4N2QyMjJlNzI2YmZiODgzZmJjNzU4ZDNiNTEyMzUyMDU1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxk
L2J5cGFzcy1tYWluLXdvcmxkLWNzcC13b3JrZXItYmxvYi1pbXBvcnRTY3JpcHRzLXJlZGlyZWN0
LWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitUaGlzIHRlc3RzIHRo
YXQgaW4gYW4gaXNvbGF0ZWQgd29ybGQgdGhlIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IG9mIHRo
ZSBwYXJlbnQgb3JpZ2luICh0aGlzIHBhZ2UpIGlzIGJ5cGFzc2VkIGFuZCBhIFdlYiBXb3JrZXIg
aXMgYWxsb3dlZCB0byBpbXBvcnQgYSBzY3JpcHQgZnJvbSBhIGRpZmZlcmVudCBvcmlnaW4sIG5v
dCBsaXN0ZWQgaW4gc2NyaXB0LXNyYywgdGhyb3VnaCBhIHJlZGlyZWN0LgorCitQQVNTIGRpZCBp
bXBvcnQgc2NyaXB0IGZyb20gZGlmZmVyZW50IG9yaWdpbi4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9ieXBhc3MtbWFpbi13b3JsZC1j
c3Atd29ya2VyLWltcG9ydFNjcmlwdC1yZWRpcmVjdC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2J5cGFzcy1t
YWluLXdvcmxkLWNzcC13b3JrZXItaW1wb3J0U2NyaXB0LXJlZGlyZWN0LWNyb3NzLW9yaWdpbi1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjQ3MGNhMDFlOTZlNzA0Mzc4ZjA4MTU1OTVjYzVhY2Q1
YzRkODQ3YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvaXNvbGF0ZWRXb3JsZC9ieXBhc3MtbWFpbi13b3JsZC1jc3Atd29ya2VyLWltcG9ydFNjcmlw
dC1yZWRpcmVjdC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorVGhp
cyB0ZXN0cyB0aGF0IGluIGFuIGlzb2xhdGVkIHdvcmxkIHRoZSBDb250ZW50IFNlY3VyaXR5IFBv
bGljeSBvZiB0aGUgV2ViIFdvcmtlciBieXBhc3NlZCBhbmQgdGhlIHdvcmtlciBpcyBhbGxvd2Vk
IHRvIGltcG9ydCBhIHNjcmlwdCBmcm9tIGEgZGlmZmVyZW50IG9yaWdpbiwgbm90IGxpc3RlZCBp
biBpdHMgc2NyaXB0LXNyYywgdGhyb3VnaCBhIHJlZGlyZWN0LgorCitQQVNTIGRpZCBpbXBvcnQg
c2NyaXB0IGZyb20gZGlmZmVyZW50IG9yaWdpbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9ieXBhc3MtbWFpbi13b3JsZC1jc3Atd29y
a2VyLWltcG9ydFNjcmlwdHMtcmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9ieXBhc3MtbWFpbi13
b3JsZC1jc3Atd29ya2VyLWltcG9ydFNjcmlwdHMtcmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mNDcwY2EwMWU5NmU3MDQzNzhmMDgxNTU5NWNjNWFjZDVjNGQ4
NDdjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9p
c29sYXRlZFdvcmxkL2J5cGFzcy1tYWluLXdvcmxkLWNzcC13b3JrZXItaW1wb3J0U2NyaXB0cy1y
ZWRpcmVjdC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorVGhpcyB0
ZXN0cyB0aGF0IGluIGFuIGlzb2xhdGVkIHdvcmxkIHRoZSBDb250ZW50IFNlY3VyaXR5IFBvbGlj
eSBvZiB0aGUgV2ViIFdvcmtlciBieXBhc3NlZCBhbmQgdGhlIHdvcmtlciBpcyBhbGxvd2VkIHRv
IGltcG9ydCBhIHNjcmlwdCBmcm9tIGEgZGlmZmVyZW50IG9yaWdpbiwgbm90IGxpc3RlZCBpbiBp
dHMgc2NyaXB0LXNyYywgdGhyb3VnaCBhIHJlZGlyZWN0LgorCitQQVNTIGRpZCBpbXBvcnQgc2Ny
aXB0IGZyb20gZGlmZmVyZW50IG9yaWdpbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9ieXBhc3MtbWFpbi13b3JsZC1jc3Atd29ya2Vy
LWltcG9ydFNjcmlwdHMtcmVkaXJlY3QtY3Jvc3Mtb3JpZ2luLmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvYnlwYXNzLW1haW4td29ybGQtY3NwLXdv
cmtlci1pbXBvcnRTY3JpcHRzLXJlZGlyZWN0LWNyb3NzLW9yaWdpbi5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmI4M2QwOWU2NTFjM2EyMGQ0NWIzODM2M2ExYjU2NWUxNmE4M2Y1ODUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvYnlwYXNz
LW1haW4td29ybGQtY3NwLXdvcmtlci1pbXBvcnRTY3JpcHRzLXJlZGlyZWN0LWNyb3NzLW9yaWdp
bi5odG1sCkBAIC0wLDAgKzEsMzcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKK30KKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgaW4gYW4gaXNvbGF0ZWQgd29ybGQg
dGhlIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IG9mIHRoZSBXZWIgV29ya2VyIGJ5cGFzc2VkIGFu
ZCB0aGUgd29ya2VyIGlzIGFsbG93ZWQgdG8gaW1wb3J0IGEgc2NyaXB0IGZyb20gYSBkaWZmZXJl
bnQgb3JpZ2luLCBub3QgbGlzdGVkIGluIGl0cyBzY3JpcHQtc3JjLCB0aHJvdWdoIGEgcmVkaXJl
Y3QuPC9wPgorPHByZSBpZD0icmVzdWx0Ij48L3ByZT4KKzxzY3JpcHQ+Cit3aW5kb3cub25tZXNz
YWdlID0gZnVuY3Rpb24gKGV2ZW50KQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJy
ZXN1bHQiKS50ZXh0Q29udGVudCA9IGV2ZW50LmRhdGE7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24gcnVu
VGVzdCgpCit7CisgICAgdmFyIHdvcmtlcjsKKyAgICB0cnkgeworICAgICAgICB3b3JrZXIgPSBu
ZXcgV29ya2VyKCJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5
UG9saWN5L3Jlc291cmNlcy93b3JrZXItaW1wb3J0U2NyaXB0LXJlZGlyZWN0LWNyb3NzLW9yaWdp
bi1hbGxvd2VkLnBocD9jc3A9IiArIGVuY29kZVVSSUNvbXBvbmVudCgic2NyaXB0LXNyYyBodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3Jlc291cmNl
cy9yZWRpci5waHAiKSk7CisgICAgICAgIHdvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZXZl
bnQpIHsgd2luZG93LnBvc3RNZXNzYWdlKGV2ZW50LmRhdGEsICIqIik7IH0KKyAgICB9IGNhdGNo
IChleGNlcHRpb24pIHsKKyAgICAgICAgd2luZG93LnBvc3RNZXNzYWdlKCJGQUlMIHNob3VsZCBu
b3QgaGF2ZSB0aHJvd24gYW4gZXhjZXB0aW9uIHdoZW4gY3JlYXRpbmcgd29ya2VyLiBUaHJldyBl
eGNlcHRpb24gIiArIGV4Y2VwdGlvbiArICIuIiwgIioiKTsKKyAgICB9Cit9CisKK2lmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdv
cmxkKDAsIHJ1blRlc3QudG9TdHJpbmcoKSArICI7cnVuVGVzdCgpOyIpOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L2lzb2xhdGVkV29ybGQvYnlwYXNzLXdvcmtlci1jc3AtZm9yLXhoci1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvYnlwYXNzLXdv
cmtlci1jc3AtZm9yLXhoci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzRiOTM0OTQwY2JjMDZi
MDcyYzJiODY1ZGZmNzViZDk3ZDY0MDM1MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9ieXBhc3Mtd29ya2VyLWNzcC1mb3It
eGhyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK1RoaXMgdGVzdHMgdGhhdCBpbiBhbiBp
c29sYXRlZCB3b3JsZCBhbiBYSFIgcmVxdWVzdCBtYWRlIGZyb20gYSB3b3JrZXIgaXMgYWxsb3dl
ZCB0byBsb2FkIGV2ZW4gaWYgdGhlIHJlc291cmNlIGlzIG5vdCBsaXN0ZWQgYXMgYSBjb25uZWN0
LXNyYyBpbiB0aGUgQ1NQIG9mIHRoZSB3b3JrZXIuCisKK1BBU1MKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9ieXBhc3Mtd29ya2VyLWNz
cC1mb3IteGhyLXJlZGlyZWN0LWNyb3NzLW9yaWdpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvYnlwYXNzLXdvcmtlci1jc3AtZm9y
LXhoci1yZWRpcmVjdC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiZGQx
NzcxZTkyMjZiNGZjMTdlMWIxMjk3NzA3NzBmMmI0MmMxODAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvYnlwYXNzLXdvcmtl
ci1jc3AtZm9yLXhoci1yZWRpcmVjdC1jcm9zcy1vcmlnaW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsNCBAQAorVGhpcyB0ZXN0cyB0aGF0IGluIGFuIGlzb2xhdGVkIHdvcmxkIGFuIFhIUiByZXF1
ZXN0IG1hZGUgZnJvbSBhIHdvcmtlciBpcyBhbGxvd2VkIHRvIGxvYWQgZXZlbiBpZiBpdCByZWRp
cmVjdHMgdG8gYSBjcm9zcy1vcmlnaW4gcmVzb3VyY2UgdGhhdCBpcyBub3QgbGlzdGVkIGFzIGEg
Y29ubmVjdC1zcmMgaW4gdGhlIENTUCBvZiB0aGUgd29ya2VyLgorCitQQVNTOiBDcm9zcy1kb21h
aW4gYWNjZXNzIGFsbG93ZWQuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9ieXBhc3Mtd29ya2VyLWNzcC1mb3IteGhyLXJlZGlyZWN0
LWNyb3NzLW9yaWdpbi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9pc29s
YXRlZFdvcmxkL2J5cGFzcy13b3JrZXItY3NwLWZvci14aHItcmVkaXJlY3QtY3Jvc3Mtb3JpZ2lu
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMWY3YjA1YWE3OWY0YjBmNzc5NGU1YmNiMWZlYzliYTQ0NzljMmMy
OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvaXNv
bGF0ZWRXb3JsZC9ieXBhc3Mtd29ya2VyLWNzcC1mb3IteGhyLXJlZGlyZWN0LWNyb3NzLW9yaWdp
bi5odG1sCkBAIC0wLDAgKzEsMzcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKK30KKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgaW4gYW4gaXNvbGF0ZWQgd29ybGQg
YW4gWEhSIHJlcXVlc3QgbWFkZSBmcm9tIGEgd29ya2VyIGlzIGFsbG93ZWQgdG8gbG9hZCBldmVu
IGlmIGl0IHJlZGlyZWN0cyB0byBhIGNyb3NzLW9yaWdpbiByZXNvdXJjZSB0aGF0IGlzIG5vdCBs
aXN0ZWQgYXMgYSBjb25uZWN0LXNyYyBpbiB0aGUgQ1NQIG9mIHRoZSB3b3JrZXIuPC9wPgorPHBy
ZSBpZD0icmVzdWx0Ij48L3ByZT4KKzxzY3JpcHQ+Cit3aW5kb3cub25tZXNzYWdlID0gZnVuY3Rp
b24gKGV2ZW50KQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS50ZXh0
Q29udGVudCA9IGV2ZW50LmRhdGE7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpCit7Cisg
ICAgdmFyIHdvcmtlcjsKKyAgICB0cnkgeworICAgICAgICB3b3JrZXIgPSBuZXcgV29ya2VyKCJo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3Jlc291
cmNlcy93b3JrZXIteGhyLXJlZGlyZWN0LWNyb3NzLW9yaWdpbi1hbGxvd2VkLnBocD9jc3A9IiAr
IGVuY29kZVVSSUNvbXBvbmVudCgiY29ubmVjdC1zcmMgaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Nl
Y3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9yZXNvdXJjZXMvcmVkaXIucGhwIikpOworICAg
ICAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24gKGV2ZW50KSB7IHdpbmRvdy5wb3N0TWVz
c2FnZShldmVudC5kYXRhLCAiKiIpIH07CisgICAgfSBjYXRjaCAoZXhjZXB0aW9uKSB7CisgICAg
ICAgIHdpbmRvdy5wb3N0TWVzc2FnZSgiRkFJTCBzaG91bGQgbm90IGhhdmUgdGhyb3duIGFuIGV4
Y2VwdGlvbiB3aGVuIGNyZWF0aW5nIHdvcmtlci4gVGhyZXcgZXhjZXB0aW9uICIgKyBleGNlcHRp
b24gKyAiLiIsICIqIik7CisgICAgfQorfQorCitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
dGVzdFJ1bm5lci5ldmFsdWF0ZVNjcmlwdEluSXNvbGF0ZWRXb3JsZCgwLCBydW5UZXN0LnRvU3Ry
aW5nKCkgKyAiO3J1blRlc3QoKTsiKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2J5
cGFzcy13b3JrZXItY3NwLWZvci14aHIuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvaXNvbGF0ZWRXb3JsZC9ieXBhc3Mtd29ya2VyLWNzcC1mb3IteGhyLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGFhMzkwMjY1NjFlM2EwMzZjMmJmYTEyZGQ4YjZlOTMyMjIwNzkxMwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9i
eXBhc3Mtd29ya2VyLWNzcC1mb3IteGhyLmh0bWwKQEAgLTAsMCArMSwzNyBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikg
eworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhh
dCBpbiBhbiBpc29sYXRlZCB3b3JsZCBhbiBYSFIgcmVxdWVzdCBtYWRlIGZyb20gYSB3b3JrZXIg
aXMgYWxsb3dlZCB0byBsb2FkIGV2ZW4gaWYgdGhlIHJlc291cmNlIGlzIG5vdCBsaXN0ZWQgYXMg
YSBjb25uZWN0LXNyYyBpbiB0aGUgQ1NQIG9mIHRoZSB3b3JrZXIuPC9wPgorPHByZSBpZD0icmVz
dWx0Ij48L3ByZT4KKzxzY3JpcHQ+Cit3aW5kb3cub25tZXNzYWdlID0gZnVuY3Rpb24gKGV2ZW50
KQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS50ZXh0Q29udGVudCA9
IGV2ZW50LmRhdGE7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgdmFyIHdv
cmtlcjsKKyAgICB0cnkgeworICAgICAgICB3b3JrZXIgPSBuZXcgV29ya2VyKCJodHRwOi8vMTI3
LjAuMC4xOjgwMDAvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3Jlc291cmNlcy93b3Jr
ZXIteGhyLWFsbG93ZWQucGhwP2NzcD0iICsgZW5jb2RlVVJJQ29tcG9uZW50KCJjb25uZWN0LXNy
YyAnbm9uZSciKSk7CisgICAgICAgIHdvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZXZlbnQp
IHsgd2luZG93LnBvc3RNZXNzYWdlKGV2ZW50LmRhdGEsICIqIikgfTsKKyAgICB9IGNhdGNoIChl
eGNlcHRpb24pIHsKKyAgICAgICAgd2luZG93LnBvc3RNZXNzYWdlKCJGQUlMIHNob3VsZCBub3Qg
aGF2ZSB0aHJvd24gYW4gZXhjZXB0aW9uIHdoZW4gY3JlYXRpbmcgd29ya2VyLiBUaHJldyBleGNl
cHRpb24gIiArIGV4Y2VwdGlvbiArICIuIiwgIioiKTsKKyAgICB9Cit9CisKK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxk
KDAsIHJ1blRlc3QudG9TdHJpbmcoKSArICI7cnVuVGVzdCgpOyIpOworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="295666"
          type_id="1"
          status="+"
          setter="bfulgham"
    />
    <flag name="commit-queue"
          id="295700"
          type_id="3"
          status="-"
          setter="bfulgham"
    />
          </attachment>
      

    </bug>

</bugzilla>